From fb618eb568404f7bf60c3d7cdd32d4c9d7640413 Mon Sep 17 00:00:00 2001 From: Eric Swenson Date: Sun, 18 Dec 2016 13:33:53 -0800 Subject: [PATCH] Added INSTAL. Resolves #97. --- README.md | 1 + build/build.tcl | 3 + doc/_info_/instal.order | 17 ++ src/sysen2/instal.24 | 374 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 395 insertions(+) create mode 100755 doc/_info_/instal.order create mode 100755 src/sysen2/instal.24 diff --git a/README.md b/README.md index 549891e7..953642e3 100644 --- a/README.md +++ b/README.md @@ -144,6 +144,7 @@ A list of [known ITS machines](doc/machines.md). - INLINE, reads line from TTY and adds to JCL (for DDT init files) - INQUIR, user account database. - INQUPD, processes INQUIR change requests. + - INSTAL, install executables on other ITS machines. - JOBS, list jobs by category. - LISP, lisp interpreter and runtime library (autoloads only). - LOADP, displays system load. diff --git a/build/build.tcl b/build/build.tcl index a25742f1..da2c7b5b 100644 --- a/build/build.tcl +++ b/build/build.tcl @@ -419,6 +419,9 @@ respond "*" ":midas sys1;ts dcrock_sysen1;dcrock\r" respond "System?" "ITS\r" expect ":KILL" +respond "*" ":midas sys1;ts instal_sysen2;instal\r" +expect ":KILL" + # LOSS device respond "*" ":midas device;jobdev loss_syseng;loss\r" expect ":KILL" diff --git a/doc/_info_/instal.order b/doc/_info_/instal.order new file mode 100755 index 00000000..fedfb285 --- /dev/null +++ b/doc/_info_/instal.order @@ -0,0 +1,17 @@ +The :INSTALL command can be used to get a file onto all +machines. Do :INSTALL dev:dir;fn1 fn2 . It will ask +you for confirmation then :PROCEED itself so as not to tie +up your terminal while it does it. It uses the same file +name defaults as :PRINT, :COPY, etc. in DDT. + +If the filename contains < or >, INSTALL will preserve the version +and will ask before clobbering an existing file of the same name. +If there is no < or >, it assumes that it is all right to clobber +an existing file of the same name. + +INSTALL preserves the creation date. + +If you don't want to install the file on every machine, you can +follow the filename spec with an altmode and the names of the machines +you do want to install on. + \ No newline at end of file diff --git a/src/sysen2/instal.24 b/src/sysen2/instal.24 new file mode 100755 index 00000000..a53dfc08 --- /dev/null +++ b/src/sysen2/instal.24 @@ -0,0 +1,374 @@ +;;;-*-Midas-*- + +TITLE INSTALL + +;SUGGESTIONS FOR FUTURE IMPROVEMENTS +; USE REMINDERS TO GET STUFF SENT WHEN A HOST IS DOWN +; OPERATE NET DIRECTLY INSTEAD OF THROUGH MLDEV + +A=1 +B=2 +C=3 +D=4 +E=5 +T=6 +TT=7 +H=10 +I=11 +J=12 +Q=13 +R=14 +P=17 + +TYIC==1 +TYOC==2 +INCH==3 +OUCH==4 +ERRC==5 + +PDL: -20,,. + BLOCK 20 + +JCLBUF: BLOCK 20 +JCLP: 440700,,JCLBUF +FILEP: 0 ;AOBJN POINTER TO INPUT FILE +FDATE: 0 ;FILE DATE + +IAOBJN: -NITSS,,0 + +ITSS: ;; Use these if .GETSYS doesn't support ITSNMS + IRPS ITS,,[AI,MC,MX] + SIXBIT /ITS/ + TERMIN +NITSS==:.-ITSS + BLOCK 9 +MXITSS==:.-ITSS + +WRITO: BLOCK MXITSS + +DEFDEV: 0 ;DEFAULT FILE FROM DDT +DEFSNM: 0 +DEFFN1: 0 +DEFFN2: 0 + +DEV: 0 ;ACTUAL FILE +SNM: 0 +FN1: 0 +FN2: 0 + +fbits: 0 ;status work from FILBLK call + +GRTRP: 0 ;-1 IF GREATER THAN OR LESS THAN USED + +GO: MOVE P,PDL + .OPEN TYIC,[.UAI,,'TTY] + .LOSE %LSFIL + .OPEN TYOC,[.UAO,,'TTY] + .LOSE %LSFIL + MOVE T,[-,,ITSS] ; Ask for 1 more than we actually + MOVE TT,[SIXBIT /ITSNMS/] ; have room for. + .GETSYS T, + JRST GETJCL + SKIPL T ; We hit the jackpot! More ITS machines that + .LOSE ; I ever dreamed possible! + MOVNI T,-ITSS(T) + HRLZM T,IAOBJN +GETJCL: .BREAK 12,[..RJCL,,JCLBUF] + .BREAK 12,[..RPFILE,,DEFDEV] +NEWWRD: SETZ A, + MOVE B,[440600,,A] +NEWCHR: ILDB TT,JCLP + CAIN TT,^Q + JRST QUOTCH + CAIN TT,": + JRST SETDEV + CAIN TT,"; + JRST SETSNM + CAIG TT,40 + JRST DELIM + CAIL TT,"a + CAILE TT,"z + SUBI TT,40 + TLNE B,770000 +DEPOT: IDPB TT,B + JRST NEWCHR + +QUOTCH: ILDB TT,JCLP + CAIL TT,"a + CAILE TT,"z + SUBI TT,40 + JRST DEPOT + +SETDEV: MOVEM A,DEV + JRST NEWWRD + +SETSNM: MOVEM A,SNM + JRST NEWWRD + +DELIM: JUMPE A,DELIM1 + SKIPE FN1 + MOVEM A,FN2 + SKIPN FN1 + MOVEM A,FN1 +DELIM1: CAIN TT,40 + JRST NEWWRD + CAIE TT,33 + JRST WRTALL +NEWHOS: SETZ A, + MOVE B,[440600,,A] +NEWCHH: ILDB TT,JCLP + CAIL TT,"A + CAILE TT,"z + JRST HOSDEL + CAIL TT,"a + SUBI TT,"a-"A + CAILE TT,"Z + JRST HOSDEL + SUBI TT,40 + TLNE B,770000 + IDPB TT,B + JRST NEWCHH + +HOSDEL: MOVE B,IAOBJN +HOSDL1: CAMN A,ITSS(B) + SETOM WRITO(B) + AOBJN B,HOSDL1 + CAIL TT,40 + JRST NEWHOS + JRST JCLOVR + +WRTALL: MOVE B,IAOBJN +WRTAL1: SETOM WRITO(B) + AOBJN B,WRTAL1 + +JCLOVR: MOVSI B,-4 +JCLOV1: MOVE A,DEFDEV(B) + SKIPN DEV(B) + MOVEM A,DEV(B) + AOBJN B,JCLOV1 + .CALL [ SETZ + SIXBIT/OPEN/ + [.BAI,,INCH] + DEV + FN1 + FN2 + SETZ SNM ] + JRST FNF + .CALL [ SETZ + 'RFNAME + MOVEI INCH + MOVEM A + MOVEM B + SETZM E ] + .LOSE %LSFIL + .CALL [ SETZ + 'FILBLK + MOVEI INCH + movem fbits ? movem fbits ;only want 3rd value + SETZM fbits ] + .LOSE %LSFIL + CAMN A,[SIXBIT/DSK/] + .CALL [SETZ + 'SSTATU + REPEAT 5,MOVEM B + SETZM A ] + JFCL + MOVE B,IAOBJN +JCLOV2: CAMN A,ITSS(B) + SETZM WRITO(B) ;DON'T WRITE TO SAME MACHINE AS READING FROM + AOBJN B,JCLOV2 + MOVE A,FN2 + CAME A,[SIXBIT//] + JRST GRTR + MOVE A,FN1 + CAME A,[SIXBIT//] + JRST GRTR + JRST ASK + +GRTR: SETOM GRTRP + MOVEM E,FN2 +ASK: MOVEI TT,[ASCIZ/Write /] + PUSHJ P,ASZW + PUSHJ P,FILW + MOVEI TT,[ASCIZ/to /] + SETO A, + MOVE B,IAOBJN +ASK1: SKIPN WRITO(B) + JRST ASK2 + PUSHJ P,ASZW + MOVE TT,ITSS(B) + PUSHJ P,SIXW + MOVEI TT,[ASCIZ/, /] + SETZ A, +ASK2: AOBJN B,ASK1 + JUMPE A,ASK3 + MOVEI TT,[ASCIZ/to noplace????? +/] + PUSHJ P,ASZW + .BREAK 16,160000 + +ASK3: .IOT TYOC,["?] + PUSHJ P,YORN + .BREAK 16,060000 + JRST READIN + +YORN: .IOT TYIC,TT + PUSHJ P,CRLF + CAIL TT,"a + SUBI TT,"a-"A + CAIN TT,"Y + JRST POPJ1 + CAIN TT,"N + JRST CPOPJ + MOVEI TT,[ASCIZ/Y or N please - /] + PUSHJ P,ASZW + JRST YORN + +POPJ1: AOS (P) +CPOPJ: POPJ P, + +FILW: IRPS NM,DEL,[DEV:SNM;FN1 FN2 ] + MOVE TT,NM + PUSHJ P,SIXW + .IOT TYOC,["DEL] + TERMIN + POPJ P, + +ASZW: HRLI TT,440700 +ASZW1: ILDB T,TT + JUMPE T,CPOPJ + .IOT TYOC,T + JRST ASZW1 + +CRLF: .IOT TYOC,[15] + .IOT TYOC,[12] + POPJ P, + +SIXW: SETZ T, + LSHC T,6 + ADDI T,40 + .IOT TYOC,T + JUMPN TT,SIXW + POPJ P, + +FNF: PUSHJ P,FILW + .OPEN ERRC,[.UAI,,'ERR ? 1 ? 0] + .LOSE %LSFIL +FNF1: .IOT ERRC,A + CAIGE A,40 + JRST FNF2 + .IOT TYOC,A + JRST FNF1 + +FNF2: PUSHJ P,CRLF + .BREAK 16,060000 + +READIN: .CALL [ SETZ + 'RFDATE + MOVEI INCH + SETZM FDATE ] + .LOSE %LSFIL + .CALL [ SETZ + 'FILLEN + MOVEI INCH + SETZM A ] + .LOSE %LSFIL + MOVEI B,BUFFER-1(A) ;LAST WD NEEDED + LSH B,-10. ;LAST PG NEEDED + .CORE 1(B) + JRST [ MOVEI TT,[ASCIZ/No Core available./] + PUSHJ P,ASZW + JRST FNF2 ] + .VALUE [ASCIZ/:PROCEED /] + HRLOI A,-1(A) + EQVI A,BUFFER + MOVEM A,FILEP + .IOT INCH,A ;GET FILE + .CLOSE INCH, + MOVE B,IAOBJN +WROUT: SKIPN WRITO(B) + JRST WROUT9 + SKIPN GRTRP + JRST WROUT1 + .CALL [ SETZ + SIXBIT/OPEN/ + JFFO A ;SIGH + [.BAI,,INCH] + ITSS(B) + FN1 + FN2 + SETZ SNM ] + JFCL + .CLOSE INCH, + CAIE A,%ENSFL + CAIN A,%EBDLK + JRST WROUT1 + PUSH P,DEV + MOVE C,ITSS(B) + MOVEM C,DEV + PUSHJ P,FILW + POP P,DEV + SKIPN A + MOVEI A,%EEXFL + .CALL [ SETZ + SIXBIT/OPEN/ + [.UAI,,ERRC] + ['ERR,,] + MOVEI 4 + SETZ A ] + .VALUE +WROUT2: .IOT ERRC,A + CAIGE A,40 + JRST WROUT3 + .IOT TYOC,A + JRST WROUT2 + +WROUT3: .CLOSE ERRC, + MOVEI TT,[ASCIZ/; write it anyway?/] + PUSHJ P,ASZW + PUSHJ P,YORN + JRST WROUT9 +WROUT1: .CALL [ SETZ + SIXBIT/OPEN/ + [.BAO,,OUCH] + ITSS(B) + [SIXBIT/_INSL_/] + [SIXBIT/OUTPUT/] + SETZ SNM ] + Jrst [Movei TT,[Asciz /îCan't write to /] + Pushj P,ASZW + Move TT,ITSS(B) + Pushj P,SIXW + Movei TT,[Asciz / -- Continue? /] + Pushj P,ASZW + Pushj P,YorN + Jrst Done + Jrst WROUT9] + MOVE A,FILEP + .IOT OUCH,A + .CALL [ SETZ + 'SFDATE + MOVEI OUCH + SETZ FDATE ] + .LOSE %LSFIL + .CALL [ SETZ + SIXBIT/RENMWO/ + MOVEI OUCH + FN1 + SETZ FN2 ] + .LOSE %LSFIL + ;;; make "$" flag on dest match same on source + ldb a,[230100,,fbits] + .call [setz ? 'sreapb ? 1000,,ouch ? setz a] + .lose %lsfil + .CLOSE OUCH, +WROUT9: AOBJN B,WROUT +Done: .BREAK 16,160000 + +VARIABLES +CONSTANTS +BUFFER: + +END GO