diff --git a/build/lisp.tcl b/build/lisp.tcl index dd990d68..d1e9b15f 100644 --- a/build/lisp.tcl +++ b/build/lisp.tcl @@ -15,7 +15,7 @@ respond "*" ":job lisp\r" respond "*" ":load .temp.;*lisp bin\r" respond "*" "\033g" respond "*" "purify\033g" -respond "*" ":pdump sys;purqio 2154\r" +respond "*" ":pdump sys;purqio 2155\r" respond "*" ":kill\r" respond "*" ":link sys;ts lisp,sys:purqio >\r" diff --git a/src/decsys/decuuo.313 b/src/decsys/decuuo.314 similarity index 99% rename from src/decsys/decuuo.313 rename to src/decsys/decuuo.314 index fa5ef9f9..96b728ce 100755 --- a/src/decsys/decuuo.313 +++ b/src/decsys/decuuo.314 @@ -675,6 +675,11 @@ GO: TDZA D,D .SUSET [.RXJNAM,,A] MOVEM A,JNAME MOVEM A,JOBNAM + ;; get ITS table for SYSSTR + move a,[-,,strtab+1] + move b,[sixbit /ITSNMS/] + .getsys a, + .lose SYSCLV SSTATU,[MOVEM A ? MOVEM A ? MOVEM A ? MOVEM A ? MOVEM A ? MOVEM MNAME ? MOVEM ITSVER] .SUSET [.S40AD,,[UUO40]] .SUSET [.ROPTI,,A] @@ -5659,9 +5664,11 @@ xsysst: movsi b,-strcnt ; load number of strs move a,strtab+1(b) ; get next str in table jrst uputac ; and return -strtab: 0 ? sixbit/ai/ ? sixbit/mc/ ? sixbit/ml/ ? sixbit/dm/ -strcnt==.-strtab +STORAGE IMPURE +strcnt==:20 +strtab: block strcnt 0 ; end of table +STORAGE PURE ;GOBSTR AND JOBSTR UUOS. diff --git a/src/l/*lisp.154 b/src/l/*lisp.155 similarity index 99% rename from src/l/*lisp.154 rename to src/l/*lisp.155 index 3436dce2..ebf4f930 100644 --- a/src/l/*lisp.154 +++ b/src/l/*lisp.155 @@ -2212,6 +2212,12 @@ MAYBE LSJCLBUF==10 ;ENOUGH FOR 40. CHARS SJCLBUF: 0 ;FIRST WORD HOLD NUMBER OF CHARS BUFFERED BLOCK LSJCLBUF 0 ;INSURES THAT ILDBS WILL FINALLY SEE A ZERO + +ifn its,[ +;; Used in QIO +mchcnt==:20 ;max #ITS +mchtab: block mchcnt ;.SEE INIMCH +] SUBTTL INITIAL READTABLE, OBARRAY (IN LOW CORE) @@ -15488,11 +15494,7 @@ IFN ITS,[ .CALL LISP43 ;GETS NAME OF ITS (AI, MC, ML, MD, MX, ES) IN TT .VALUE SETZ A, ;CONVERT TO ATOMIC SYMBOL - HLRZS TT - IRP X,,[AI,ML,MC,MD,MX,DB,KA,KL,HX] - CAIN TT,(SIXBIT \X\) - MOVEI A,Q!X - TERMIN + pushj p,sixatm SKIPN A .VALUE ] ;END OF IFN ITS diff --git a/src/l/qio.759 b/src/l/qio.760 similarity index 99% rename from src/l/qio.759 rename to src/l/qio.760 index 2721747e..9b1a8dd6 100644 --- a/src/l/qio.759 +++ b/src/l/qio.760 @@ -589,11 +589,9 @@ IFN ITS,[ ;;; THE SUPER-HAIRY BINARY SORT HACK ABOVE. TABLE MUST BE AN EXACT POWER OF ;;; TWO IN LENGTH SO WE CAN USE SUPER-WINNING BINARY SEARCH METHOD. -IDNTB: ; There are currently 62. entries in this table. -IRP X,,[AI,AIAR,AIARC,AIDIR,AR,ARC,BOJ,CLA,CLI,CLO,CLU,COM,COR -DIR,DIRHNG,DK,DM,DMAR,DMARC,DMDIR,DNR,DNRF,DSK,ERR,JOB,LP,LPT,LR -MC,MCAR,MCARC,MCDIR,MD,MDAR,MDARC,MDDIR -ML,MLAR,MLARC,MLDIR,MX,MXAR,MXARC,MXDIR +IDNTB: ; There are currently 38. entries in this table. +IRP X,,[AR,ARC,BOJ,CLA,CLI,CLO,CLU,COM,COR +DIR,DIRHNG,DK,DNR,DNRF,DSK,ERR,JOB,LP,LPT,LR MT,NUL,OJB,P,PK,PTP,PTR,S,SPY,ST,STY,SYS,T,TPL,TTY,TY,USR,UT] SIXBIT \X\ TERMIN @@ -660,6 +658,56 @@ IDND3: ROT TT-1,-6 ] ;END OF REPEAT LOG2IDNTB EXCH TT,F ;RESTORE TT CAMN F,IDNTB(R) ;FALL THRU IF RECOGNIZED DEVICE + jrst idnds + ;; after that superefficient binary search of 38 entries, + ;; do a less efficient but generic search. + ;; check the ITSNMS table + skipn mchtab + pushj p,inimch ;may need to initialize it + push p,a + move a,tt ;is it an ITS name? + pushj p,mchok0 + jrst isarcp ;nope, check devices + pop p,a + jrst idnds ;found a host +isarcp: lsh a,12. ;skip host part (2 chars) + ;; check if it ends with AR, ARC or DIR + caie a,'AR + cain a,'ARC + skipa + cain a,'DIR + jrst [ ldb a,[.bp (777700),tt] ;then see if it is an ITS + call mchok0 + jrst isnarc + pop p,a + jrst idnds ] + ;; not a special device +isnarc: pop p,a + jrst idndx + +;; Look for an ITS name in A +mchok0: push p,tt + movsi tt,-mchcnt +mchok1: camn a,mchtab(tt) + jrst popj1t ;skip return + skipe mchtab(tt) ;no more to check? + aobjn tt,mchok1 + pop p,tt + popj p, ;non-skip return +popj1t: pop p,tt + aos (p) ;skip return + popj p, + +;; initialize ITS name table +inimch: push p,a + push p,b + move a,[-mchcnt,,mchtab] + move b,[sixbit /ITSNMS/] + .getsys a, + .value + pop p,b + pop p,a + popj p, ] ;END OF IFN ITS ;;; FALL THRU TO HERE IF IT IS A DEVICE IDNDS: AOS -1(P) ;AND IF DEVICE, THEN SKIP ONE ON RETURN diff --git a/src/sysen1/ddt.1547 b/src/sysen1/ddt.1548 similarity index 99% rename from src/sysen1/ddt.1547 rename to src/sysen1/ddt.1548 index 9744f760..0b762040 100755 --- a/src/sysen1/ddt.1547 +++ b/src/sysen1/ddt.1548 @@ -687,6 +687,8 @@ HCLOB: 0 ;-1 => HACTRN HAS BEEN DEPOSITED IN. HHACK: -1 ;location of last deposit, if hactrn has been deposited in ;other than legitimately +mchcnt==:40 ;# ITS's +mchtab: block mchcnt ;;; Switches for entry by PWORD program at starting address plus offset ;;; (offset <5) @@ -923,11 +925,6 @@ gtitsx: pop p,a move a,-2(p) ;use whatever ITS was specified! jrst notits ;Tell him the mail goes off of ITS -mchtab: irp machine,,[AI,ML,MC,MD,MX,DM] -sixbit /machine/ -termin -mchcnt==:.-mchtab ;# ITS's - ;;; Expects BP to net address in NETABP, prints same with message notits: 7type [asciz /A(This person's mail is forwarded to /] notit1: ildb d,netabp ;get a char @@ -959,6 +956,7 @@ mchok0: camn a,[sixbit /DSK/] ;is this the local machine? movsi b,-mchcnt ;for all the machines mchok1: camn a,mchtab(b) ;is it this one? jrst popj1 ; yes, it's OK + skipe mchtab(b) aobjn b,mchok1 ;no, try next ret @@ -1615,7 +1613,12 @@ RFLNSC: MOVEI A,4 ;TELL RFLSND TO STORE SNAME. RET cain b,' DN ;DNRF ret - MOVSI B,'DSK ;SET THE DEV. TO DSK. + ;; Check if it's another ITS + move a,b + lsh a,6 + pushj p,mchok0 + MOVSI B,'DSK ;SET THE DEV. TO DSK. + ret ;COLON, SET DEV. RFLNC: MOVEI A,3 @@ -9336,14 +9339,26 @@ CTLF0: MOVEM D,FFILE ;PRINT DIR OF DEV IN RH(D), SNAME IN LSNAM. nctlf8: camn d,nodflt(c);Is this something that doesn't set the :PRINT defaults jrst nctlf1 ; Yes, don't set them aobjn c,nctlf8 ;No, check next one - + ;; BV: check if it is xxTTY or xxDIR for some ITS name xx + move a,d + lsh a,12. + push p,b ;touched by mchok0, used below + caie a,'TTY + cain a,'DIR + jrst [ ldb a,[.bp (777700),d] + call mchok0 + jrst .+1 + pop p,b + jrst nctlf1 ] + pop p,b TLNN B,O.1ALT ;$^F DOESN'T SET DEFAULTS EITHER. CALL NCTLF4 ;OTHERWISE SET :PRINT DEFAULTS. NCTLF1: MOVEI C,FFILE ;C MUST BE SET UP FOR OPNER (IN TSCALL) TSOPEN FDRC,FFILE JRST OPRINT -nodflt: irp x,,[TTY,T,MCTTY,AITTY,MLTTY,MXTTY,MDTTY,KSTTY,KLTTY,D,DIR,MCDIR,AIDIR,MLDIR,MXDIR,MDDIR,KSDIR,KLDIR,DVR,DVS,GLP,LP7,LP8,LP9,LR7,7LP,7LR,TPL,CHAOS,CHA,COR,CLO,CLU,CLI,CLA] +;; BV: generic check above for MCTTY,AITTY,MLTTY,MXTTY,MDTTY,KSTTY,KLTTY,MCDIR,AIDIR,MLDIR,MXDIR,MDDIR,KSDIR,KLDIR +nodflt: irp x,,[TTY,T,D,DIR,DVR,DVS,GLP,LP7,LP8,LP9,LR7,7LP,7LR,TPL,CHAOS,CHA,COR,CLO,CLU,CLI,CLA] sixbit /x/ termin block 5 ;For patching @@ -17682,6 +17697,13 @@ TERMIN ]] SYSCLE USRVAR,[MOVEI %JSELF ? C] call ddtun1 ;read UNAME from system. Leaves it in C + + ;; get ITS table + move a,[-mchcnt,,mchtab] + move b,[sixbit /ITSNMS/] + .getsys a, + erloss + skipe pwordp ;If we were logged in by PWORD call ddtunp ; Gotta figure our XUNAME, too. skipn pwordp ;Otherwise diff --git a/src/sysen1/pword.2663 b/src/sysen1/pword.2664 similarity index 99% rename from src/sysen1/pword.2663 rename to src/sysen1/pword.2664 index 9bcc8cd7..f0d2963e 100644 --- a/src/sysen1/pword.2663 +++ b/src/sysen1/pword.2664 @@ -6245,10 +6245,10 @@ gtitsx: pop p,a jrst notits ;Tell him the mail goes off of ITS ret -mchcnt==:4 ;4 ITS's -mchtab: irp machine,,[AI,ML,MC,DM] -sixbit /machine/ -termin +.upure +mchcnt==:40 ;allow for 40 ITS's +mchtab: block mchcnt +.pure ;;; Expects BP to net address in NETABP, prints same with message notits: type dspc,/A(This person's mail is forwarded to / @@ -6280,6 +6280,7 @@ bret: aos -1(p) mchok0: movsi b,-mchcnt ;for all the machines mchok1: camn a,mchtab(b) ;is it this one? jrst popj1 ; yes, it's OK + skipe mchtab(b) aobjn b,mchok1 ;no, try next ret @@ -6401,7 +6402,8 @@ gomail: move d,[440700,,tmpbuf] ;; table of special devices NOT to set our default to -devtab: irp dev,,[TTY,T,MLTTY,MCTTY,DMTTY,AITTY,D,MCD,MLD,AID,DMD,XGP,TPL,GLP,DVR,COR,DIR,DIRML,DIRAI,DIRCOM,DIRSYS,DIRDSK,CLO,CLI,CLA,CLU] +;; MLTTY,MCTTY,DMTTY,AITTY,MCD,MLD,AID,DMD,DIRML,DIRAI checked generically instead +devtab: irp dev,,[TTY,T,D,XGP,TPL,GLP,DVR,COR,DIR,DIRCOM,DIRSYS,DIRDSK,CLO,CLI,CLA,CLU] sixbit /dev/ termin devlen==.-devtab ;# of devices @@ -6457,10 +6459,32 @@ kc.fop: call dirdev ;get the dir and dev kc.fdv: camn tt,devtab(t) ;is it a dir only device? pjrst printf ; yes, just print out and return aobjn t,kc.fdv ;try the next one + ;; check if it is xxTTY, xxD, DIRxx for some ITS name xx + ;; (why not xxDIR?) + push p,a + hlrz a,tt + cain a,'DIR + jrst [ hrlz a,tt + call mchok0 + jrst .+1 + ` jrst paprin ] + move a,tt + lsh a,12. ;skip xx part + caie a,'TTY + cain a,'D + jrst [ ldb a,[.bp (777700),tt] + call mchok0 + jrst .+1 + jrst paprin ] + movem tt,fi.dev ;it's not one of them, so make it the ;default pjrst printf +;; pop a and then printf +paprin: pop p,a + pjrst printf + ;; get the dir in T and dev in TT dirdev: skipn t,fd.snm ;was a sname given? @@ -9826,7 +9850,11 @@ bltspc: syscal sstatu,[val x ? val x ? val x ? val x ? val x blt x,spcend-1 ; all of them to the bitter end setom dm.flg ret ] - .lose ; Unknown machine! + ;; unknown machine, default to MD + move x,[mdspec,,tsspec] + blt x,spcend-1 + ret + ;; .lose ; Unknown machine! .upure @@ -9860,6 +9888,12 @@ ginit3: syscal open,[cnti .uai .suset [.runame,,RUNAME] ;get our UNAME + ;; get ITS table + move a,[-mchcnt,,mchtab] + move b,[sixbit /ITSNMS/] + .getsys a, + loss + syscal ttyget,[argi tyic ? val x ? val x ? val t] loss skipe sailp ; if terminal can handle it diff --git a/src/sysen1/sender.397 b/src/sysen1/sender.398 similarity index 98% rename from src/sysen1/sender.397 rename to src/sysen1/sender.398 index 93b2639d..76d74f1b 100644 Binary files a/src/sysen1/sender.397 and b/src/sysen1/sender.398 differ diff --git a/src/sysen2/cftp.475 b/src/sysen2/cftp.476 similarity index 99% rename from src/sysen2/cftp.475 rename to src/sysen2/cftp.476 index 3bdce726..0dbc6223 100755 --- a/src/sysen2/cftp.475 +++ b/src/sysen2/cftp.476 @@ -364,6 +364,10 @@ DirNBk: 0 DirPVm: 0 DirLst==.-1 +;; For the ITSNMS table +mchcnt==:20 +mchtab: block mchcnt + .kark.==-1 HlpCmd: CMD "*" @@ -550,6 +554,13 @@ Begin: Move P,PDList ;Book 1, Chapter 1, Verse I. .rUNAME,,Uname .rXUNAME,,XUNAME .rSNAME,,SNAME]] + + ;; get ITS table + move a,[-mchcnt,,mchtab] + move b,[sixbit /ITSNMS/] + .getsys a, + .lose %LsSys + Move A,DDir Movem A,DFN1 Move A,[350700,,IFH] ;File-Handle in form Ixxx and Oxxx, @@ -3109,9 +3120,9 @@ SavDev: Jumpe D,LP1 Movsi D,(Sixbit "DSK") Jrst .+1] Trne F,F%ITS - Jrst [Came D,[Sixbit "AI"] - Camn D,[Sixbit "MC"] - Movsi D,(Sixbit "DSK") + Jrst [call mkchok0 + jrst .+1 + Movsi D,(Sixbit "DSK") Jrst .+1] Movem D,0(B) Jrst LP0 @@ -3130,6 +3141,18 @@ LP3: Jumpe D,CPopj PutChr: .Iot TTYo,T Return + +;; Look for an ITS name in d +mchok0: push p,tt + movsi tt,-mchcnt +mchok1: camn d,mchtab(tt) + jrst popj1t ;skip return + skipe mchtab(tt) ;no more to check? + aobjn tt,mchok1 + pop p,tt + return ;non-skip return +popj1t: pop p,tt + jrst Popj1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; diff --git a/src/sysen2/dired.188 b/src/sysen2/dired.189 similarity index 99% rename from src/sysen2/dired.188 rename to src/sysen2/dired.189 index 09d1c343..deac4e9e 100644 --- a/src/sysen2/dired.188 +++ b/src/sysen2/dired.189 @@ -177,6 +177,10 @@ RNMLNK: BLOCK 6 ; block for normal rename or link 0 0 +;; For the ITSNMS table +mchcnt==:20 +mchtab: block mchcnt + TYPACC: 0 TYPBYT: 440700,,BUFFER TYPDFL: -5 @@ -273,6 +277,12 @@ START: MOVE P,[-100.,,PDL+1] MOVEM A,FONE+SNM MOVEM A,INDEV+SNM + ;; get ITS table + move a,[-mchcnt,,mchtab] + move b,[sixbit /ITSNMS/] + .getsys a, + FATAL CANT GET ITSNMS TABLE + ; print herald message and message file, if any ; ** Actually, no one ever put anything in that file, so I have placed ; ** its perpetual contents in a string here. - CSTACY, 9/12/84 @@ -646,15 +656,14 @@ ACT2: MOVE A,[FONE,,FTWO] ; default is the given indev MOVE A,INDEV CAMN A,MFDFRM ; got this mfd already? JRST ACTXIT - CAME A,[SIXBIT /DM/] - CAMN A,[SIXBIT /AI/] - JRST ACTMFD - CAME A,[SIXBIT /ML/] - CAMN A,[SIXBIT /MC/] - JRST ACTMFD + CAME A,[SIXBIT /DSK/] JRST ACTXIT + ;; is it an ITS? + pushj p,mchok0 + jrst actxit ;no + ; read in needed MFD ACTMFD: MOVEM A,MFDFRM PUSHJ P,RDMFD @@ -667,6 +676,19 @@ GETLOS: JUMPL B,ACTXIT MOVEI A,FONE PUSHJ P,OERRF JRST ACTXIT + +;; Look for an ITS name in A +mchok0: push p,d + movsi d,-mchcnt +mchok1: camn a,mchtab(d) + jrst popj1d ;skip return + skipe mchtab(d) ;no more to check? + aobjn d,mchok1 + pop p,d + popj p, ;non-skip return +popj1d: pop p,d + aos (p) + popj p, ;==================================================================== ; READ IN and PARSE directories diff --git a/src/sysen2/mldev.106 b/src/sysen2/mldev.107 similarity index 97% rename from src/sysen2/mldev.106 rename to src/sysen2/mldev.107 index 29e5cb5a..0a227c06 100644 --- a/src/sysen2/mldev.106 +++ b/src/sysen2/mldev.107 @@ -56,6 +56,8 @@ FILBSZ: 0 ;BYTE SIZE FILE WRITTEN IN. FILDTP: 0 ;-1 => WE KNOW THE CREATION DATE OF THIS FILE. FILDAT: 0 ;FILE CREATION DATE (IF KNOWN). +nitses==:40 +itses: block nitses PAT: PATCH: BLOCK 100 @@ -87,20 +89,49 @@ GO: MOVE P,[-LPDLL-1,,PDL-1] .VALUE MOVE A,JBCDEV ;GET "DEVICE" MOVEM A,RDEVN ;REMEMBER IT TO RETURN FOR .RCHST'S. -IRPS Y,,AI ML DM MC MX MD KL KS DB ES NO SJ UP - CAMN A,[SIXBIT /X!Y/] - MOVE A,[SIXBIT /Y/] ;ALLOW "XAI", ETC., FOR EXPERIMENTAL VERSIONS OF "AI", ETC. - CAMN A,[SIXBIT /DIR!Y/] - MOVE A,[SIXBIT /Y!DIR/] -TERMIN ;DEVICES SUCH AS "DIRML" ARE REALLY HANDLED AS "MLDIR". - ;THAT'S BECAUSE IT'S FASTER THAT WAY. DIR DEVICE MUST READ BOTH - ;IMAGE AND ASCII DIRECTORIES. - MOVEM A,JBCDEV - LDB A,[301400,,JBCDEV] ;MIGHT BE DMAR1, ETC. -IRP X,,[DM,AI,ML,MC,MX,MD,KL,KS,DB,ES,NO,SJ,UP] - CAIN A,(SIXBIT / X/) ;**** IF ANY NON 2-CHAR HOST NAME EVER EXISTS, - JRST GOTHST ;THIS BARFUCIOUS KLUDGE WILL HAVE TO BE FIXED UP. -TERMIN + ;; get ITS table + move b,[-nitses,,itses] + move c,[sixbit /ITSNMS/] + .getsys b, + .value + ;; is it DIRxx? See if xx is an ITS name, then make it xxDIR instead + hlrz c,a + cain c,'DIR + jrst [ hrlz b,a ;get xx part in b + pushj p,isitsp + jrst .+1 + ;; b is an ITS, make device xxDIR + lsh c,-12. + dpb b,[.bp (777700),c] + movem c,jbcdev + move a,b ; get host in A for gothst + jrst gothst ] + ;; is it Xxx? allow this as alias for "Xperimental" xx + ldb c,[.bp (770000),a] + cain c,'X + jrst [ move b,a + lsh b,6 ;get rid of X + pushj p,isitsp + jrst .+1 + movem b,jbcdev + move a,b ;get host in A for gothst + jrst gothst ] + ;; is it xxDIR? + move c,a + lsh c,12. + cain c,'DIR + jrst [ ldb b,[.bp (777700),a] ;get xx part in b + pushj p,isitsp + jrst .+1 + move a,b ; get host in A + jrst gothst ] + move b,a + ;; is b an ITS name? + pushj p,isitsp + jrst notits + jrst gothst + +notits: ;; nothing came of it, fall through MOVS A,JBCDEV CAIN A,'XGP ;XGP THROUGH THE NET TO AI FROM ML/MC/DM JRST [ MOVS A,[SIXBIT/AIXGP/] @@ -140,6 +171,15 @@ TERMIN NSD: MOVSI A,%ENSDV JRST NOGO2 +;; Check if B has the name of an ITS, if so, skip return +;; Messes up T +isitsp: movsi t,-nitses +isitz0: camn b,itses(t) + jrst popj1 ;match, skip return + skipe itses(t) + aobjn t,isitz0 + popj p, + ;A CONTAINS SIXBIT HOST, RIGHT-JUSTIFIED GOTHST: MOVE B,[440700,,BUF] ;Make ASCIZ host name GOTHS1: LDB T,[360600,,A] diff --git a/src/sysen3/whoj.26 b/src/sysen3/whoj.27 similarity index 84% rename from src/sysen3/whoj.26 rename to src/sysen3/whoj.27 index 53b503ef..fdcae73e 100644 --- a/src/sysen3/whoj.26 +++ b/src/sysen3/whoj.27 @@ -118,18 +118,16 @@ PDL: BLOCK PDLLEN ;The stack. TCMXH: 0 ;Horizontal screen size. NUSERS: 0 ;Unames printed this line in :USERS. JCL: BLOCK 20 ;(Just need two chars.) -DEVTAB: ASCIZ /MC/,[ASCIZ /MCTTY:.FILE. (DIR)/] - ASCIZ /AI/,[ASCIZ /AITTY:.FILE. (DIR)/] - ASCIZ /MX/,[ASCIZ /MXTTY:.FILE. (DIR)/] - ASCIZ /MD/,[ASCIZ /MDTTY:.FILE. (DIR)/] - ASCIZ /ML/,[ASCIZ /MLTTY:.FILE. (DIR)/] -; ASCIZ /DM/,[ASCIZ /DMTTY:.FILE. (DIR)/] -NDEVS==.-DEVTAB -LCLDEV: [ASCIZ /TTY:.FILE. (DIR)/] +;; to be patched with ITS machine names for zz +device: asciz /zzTTY:.FILE. (DIR)/ +itsnum==:20 +itstbl: block itsnum +LCLDEV: ASCIZ /TTY:.FILE. (DIR)/ SAVEBP: 0 -TOTRY: BLOCK 4 ;List of files to read. +TOTRY: BLOCK itsnum ;List of files to read. LOOPER: 0 MANY: 0 +macsix: 0 ;sixbit name of this machine MACNAM: 0 ;ASCII name of this machine. LINES: 0 ;Number of lines in buffer. BUFFER: BLOCK BUFLEN+1 ;The buffer. @@ -198,9 +196,15 @@ To talk to someone on the same machine, use "^_C USER"./ .SUSET [.S40ADDR,,[20,,FORTY]] .SUSET [.SOPTION,,A] .SUSET [.SMSK2,,[<1_TTYI>\<1_TTYO>]] + ;; get ITS table + move a,[-itsnum,,itstbl] + move b,[sixbit /ITSNMS/] + .getsys a, + .lose %lssys SYSCAL SSTATU,[ REPEAT 5, %CLOUT,, X ? %CLOUT,,A] .LOSE %LSFIL + movem a,macsix MOVE BP,[440700,,MACNAM] MOVE B,[440600,,A] ILDB CHAR,B @@ -211,11 +215,11 @@ To talk to someone on the same machine, use "^_C USER"./ IDPB CHAR,BP ;ITS name now stored in Ascii. GETJCL: .BREAK 12,[..RJCL,,JCL] ;Read JCL. SKIPN JCL ;If no JCL given - JRST [ MOVE A,LCLDEV ;Use the local machine. + JRST [ move a,macsix ;Use the local machine. MOVEM A,TOTRY JRST DOMAC ] PARSE: MOVE BP,[440700,,JCL] ;Crockishly parse the JCL. - MOVSI E,-NDEVS ;AOBJN loop for user tokens looked at. + MOVSI E,-itsnum ;AOBJN loop for user tokens looked at. PARSE1: PUSHJ P,PARSE2 ;Parse another TOTRY entry. JRST PARSE9 ; If no more JCL, quit parsing. AOBJN E,PARSE1 ;Parse up to 4 hosts. @@ -228,33 +232,40 @@ PARSE9: HRRZ E,E ;See how many entries parsed. ;;; Skip return unless end of JCL PARSE2: MOVEM BP,SAVEBP - MOVSI A,-NDEVS ;AOBJN loop for machines. + PARSE3: MOVE BP,SAVEBP ;Use the original BP. PUSHJ P,JCLHAK ;Get char from input. POPJ P, CAIN CHAR,"* ;A "*" MEANS show all four machines. - JRST [ MOVSI A,-NDEVS ; Try all machines... - HRRZ D,DEVTAB(A) - MOVEM D,TOTRY(A) - AOBJN A,.-2 ; Loop for all machines. - SETOM MANY - JRST DOMAC ] ; Dont look at other JCL. - HRLZI B,440700 ;Make Bp to a machine name. - HRR B,DEVTAB(A) - ILDB C,B ;Get char of machine name, - CAME C,CHAR ;Match? - JRST PARSE4 ; No - punt this machine. - PUSHJ P,JCLHAK ;Yes - get second char from input. - POPJ P, - ILDB C,B ;Get char of machine name, - CAMN C,CHAR ;Match? - JRST [ HRRZ D,DEVTAB(A) ; Yes - Have found a machine. - MOVEM D,TOTRY(E) ; Remember its TTY: directory string. - JRST POPJ1] ; And skip-return with modified BP. -PARSE4: AOBJN A,PARSE3 ;Try the next machine. - TYPE TTYO,/AUnknown ITS name specified./ + JRST allmac + subi char,40 + movem char,c + pushj p,jclhak + popj p, + subi char,40 + lsh c,6 + iorm char,c + lsh c,24. + camn c,macsix + jrst [ movem c,totry(e) + jrst popj1 ] + MOVSI A,-itsnum ;AOBJN loop for machines. +pars31: camn c,itstbl(a) + jrst [ movem c,totry(e) + jrst popj1 ] + skipe itstbl(a) + aobjn a,pars31 ;Try the next machine. +PARSE4: TYPE TTYO,/AUnknown ITS name specified./ JRST DEATH +allmac: MOVSI A,-itsnum ; Try all machines... +allm0: move d,itstbl(a) + MOVEM D,TOTRY(A) + skipe itstbl(a) + AOBJN A,allm0 ; Loop for all machines. + SETOM MANY + JRST DOMAC ; Dont look at other JCL. + ;;; Get next JCL char from BP. Skip-returns if wins. JCLHAK: ILDB CHAR,BP @@ -273,22 +284,32 @@ POPJ1: AOS (P) CPOPJ: POPJ P, -DOMAC: MOVSI A,-NDEVS ;AOBJN pointer to filename addresses. +DOMAC: MOVSI A,-itsnum ;AOBJN pointer to filename addresses. MLOPN: MOVEM A,LOOPER - HRRZ BP,TOTRY(A) - JUMPE BP,DEATH ;Empty address means end of table. - HRLI BP,440700 + move c,TOTRY(A) + JUMPE c,DEATH ;Empty address means end of table. + move BP,[440700,,device] + ;; get the machine name (sixbit) + ldb char,[.bp (770000),c] + addi char,40 + idpb char,bp + ldb char,[.bp (7700),c] + addi char,40 + idpb char,bp + move BP,[440700,,device] SKIPN MANY ;If only one machine JRST MLOPN1 ; dont bother labeling it. TYPE TTYO,/A -[MIT-/ +[/ ILDB CHAR,BP .IOT TTYO,CHAR ILDB CHAR,BP .IOT TTYO,CHAR TYPE TTYO,/]A/ HRLI BP,440700 -MLOPN1: PUSHJ P, HAKLCL ;Fix up local machine spec if needed. +MLOPN1: camn c,macsix + skipa bp,[440700,,lcldev] + PUSHJ P, HAKLCL ;Fix up local machine spec if needed. SETZM BUFFER MOVE T,[BUFFER,,BUFFER+1] BLT T,BUFFER+BUFLEN-1 ;Clear out the previous contents. diff --git a/src/syseng/dirdev.87 b/src/syseng/dirdev.88 similarity index 98% rename from src/syseng/dirdev.87 rename to src/syseng/dirdev.88 index 7f11c395..25805af0 100755 --- a/src/syseng/dirdev.87 +++ b/src/syseng/dirdev.88 @@ -155,6 +155,10 @@ OUTBUF: BLOCK <100.+*MAXCHS+4>/5 ;OUTPUT FOR LISTF. ;The 100. is for the header lines. ;The 2 is for the separator lines. +;; For the ITSNMS table +mchcnt==:20 +mchtab: block mchcnt + IFN IMAGE,[ IMGBUF==OUTBUF OUTPAD==-<.-OUTBUF> ;MORE WORDS NEEDED FOR IMAGE. @@ -222,6 +226,12 @@ START: JFCL ;LEAVE ROOM FOR .VALUE SETZM INITED SETOM HNGFLG ;SET NOT HUNG + ;; get ITS table + move a,[-mchcnt,,mchtab] + move b,[sixbit /ITSNMS/] + .getsys a, + jrst close + LOOP: SKIPN HNGFLG ;SEE IF HUNG .HANG ;YES - WAIT UNTIL NOT SETZM HNGFLG @@ -275,6 +285,17 @@ SUCLOS: MOVEI H,0 ;Skip sero times. JFCL JRST LOOP +;; Look for an ITS name in B +mchok0: push p,d + movsi d,-mchcnt +mchok1: camn b,mchtab(d) + jrst popj1d ;skip return + skipe mchtab(d) ;no more to check? + aobjn d,mchok1 + pop p,d + popj p, ;non-skip return +popj1d: pop p,d + jrst popj1 SUBTTL OPEN handler. @@ -534,17 +555,17 @@ OPEN10: .IOT IFILE,A SETZ AUTHFL, ;ASSUME DEVICE DOESN'T HAVE AUTHORS MOVE B,DEVICE ;SEE IF USING DSK OR AR* CAME B,[SIXBIT /DSK/] - CAMN B,[SIXBIT /DM/] - JRST OPEN11 - CAME B,[SIXBIT/AI/] ;THIS SUCKS TOTALLY --MOON - CAMN B,[SIXBIT/ML/] - JRST OPEN11 - CAME B,[SIXBIT/MC/] CAMN B,[SIXBIT/TPL/] JRST OPEN11 CAME B,[SIXBIT /SYS/] CAMN B,[SIXBIT /COM/] JRST OPEN11 + + ;; check if it's an ITS name + pushj p,mchok0 + skipa + jrst open11 + AND B,[777700,,0] CAME B,[SIXBIT /AR/] JRST OPEN12 diff --git a/src/syseng/magfrm.19 b/src/syseng/magfrm.20 similarity index 95% rename from src/syseng/magfrm.19 rename to src/syseng/magfrm.20 index fe64de98..a2975fb5 100644 --- a/src/syseng/magfrm.19 +++ b/src/syseng/magfrm.20 @@ -53,15 +53,6 @@ LOC 41 LOC PAT PATCH: BLOCK 100 -MCHNTB: OFFSET -. -AIMCHN::SIXBIT/AI/ -MLMCHN::SIXBIT/ML/ -DMMCHN::SIXBIT/DM/ -MCMCHN::SIXBIT/MC/ -KAMCHN::SIXBIT/KA/ -KLMCHN::SIXBIT/KL/ -HXMCHN::SIXBIT/HX/ -LMCHNTB:: OFFSET 0 GO: MOVE P,[-LPDL-1,,PDL-1] .OPEN TYIC,[%TICLC+.UAI,,'TTY] @@ -78,7 +69,7 @@ GO: MOVE P,[-LPDL-1,,PDL-1] TYP . .6TYP [.FNAM2] TYP CRLF -WHMCHN: TYP FOR WHICH MACHINE? + TYP FOR WHICH MACHINE? PUSHJ P,GETSYL JRST BDMCHN JUMPE B,[.CALL [SETZ ;THIS ONE @@ -87,22 +78,14 @@ WHMCHN: TYP FOR WHICH MACHINE? SETZM B] .VALUE JRST .+1 ] - MOVSI A,-LMCHNTB - CAME B,MCHNTB(A) - AOBJN A,.-1 - JUMPL A,WHMCH0 -BDMCHN: TYP [??? -] - JRST WHMCHN - -WHMCH0: HRRZ MCHN,A + MOVE MCHN,B PUSHJ P,REW TYP [TAPE REWOUND INITIALIZE] PUSHJ P,Y.OR.N CAIA PUSHJ P,MTINI ;INITIALIZE THE TAPE - CAIN MCHN,MCMCHN + CAMN MCHN,[sixbit /MC/] JRST DIRIN ;MC IS A KL10, WHICH DOESN'T HAVE READIN MODE MOVE A,[-20,,BUF] .IOT MTCH,A ;READ FIRST 20 WORDS @@ -477,7 +460,7 @@ REW: .OPEN MTCH,[26,,(SIXBIT /MT0/)] MTINI: .OPEN MTCH,[7,,(SIXBIT /MT0/)] ERR MAG TAPE NOT AVAILABLE - CAIN MCHN,MCMCHN + CAMN MCHN,[sixbit /MC/] JRST MTINI1 MOVE A,[-20,,MTHRI] .IOT MTCH,A ;WRITE HRI LOADER @@ -513,8 +496,9 @@ MTHRI: -17,,0 ;0 NOTE: TM10B USES I/O BUS IN HRI MODE MDBOPN: .SUSET [.RSNAM,,SNAME] .SUSET [.SSNAM,,[SIXBIT /./]] - MOVE A,MDBFN2(MCHN) - MOVEM A,MGDBIN+2 + MOVE B,MCHN + LSH B,-24. + DPB B,[.BP 7777,MDBFN2] .OPEN DKIC,MGDBIN CAIA JRST MDBOP1 @@ -639,11 +623,7 @@ TEM: 0 MGDBIN: 6,,(SIXBIT /DSK/) SIXBIT /MAGDMP/ - SIXBIT /BIN/ - -MDBFN2: IRPS X,,[AI ML DM MC KA KL HX] - SIXBIT/BIN.!X/ - TERMIN +MDBFN2: SIXBIT /BIN.ZZ/ LPDL==20 PDL: BLOCK LPDL diff --git a/src/sysnet/sends.24 b/src/sysnet/sends.25 similarity index 94% rename from src/sysnet/sends.24 rename to src/sysnet/sends.25 index eeec67d4..83511cee 100755 --- a/src/sysnet/sends.24 +++ b/src/sysnet/sends.25 @@ -40,6 +40,9 @@ hstcnt: 0 chapkt: block %cpmxw ;chaosnet packet goes here npdl==17 pdl: block npdl +;; For the ITSNMS table +mchcnt==:20 +mchtab: block mchcnt ;interrupt handler tsint: loc 42 @@ -68,6 +71,11 @@ go: .close 1, ;this can still be open from loading us tlo t,optint ;new style interrupts .suset [.soption,,t] .suset [.smask,,[%piioc]] ;catch ioc errors + ;; get ITS table + move a,[-mchcnt,,mchtab] + move b,[sixbit /ITSNMS/] + .getsys a, + jsr die .call [setz ? 'CHAOSO ? movei chaich ? movei chaoch ? setzi 5] jsr die move t,[.byte 8 ? %colsn ? 0 ? 0 ? 4] @@ -141,13 +149,22 @@ gotusr: jumpe h,gothst ;didnt specify a host jsr die camn h,t ;specified local host for some reason? jrst myhost ;yes, optimize - came h,[sixbit /AI/] ;places i think i can talk to - camn h,[sixbit /MC/] - jrst gothst - came h,[sixbit /ML/] - camn h,[sixbit /DM/] - jrst gothst - jrst badhst + push p,mchok0 + jrst badhst ;not an ITS + jrst gothst + +;; Look for an ITS name in h +mchok0: push p,d + movsi d,-mchcnt +mchok1: camn h,mchtab(d) + jrst popj1d ;skip return + skipe mchtab(d) ;no more to check? + aobjn d,mchok1 + pop p,d + popj p, ;non-skip return +popj1d: pop p,d + aos (p) + popj p, myhost: setz h, gothst: skipn t,h ;was there a foreign host? diff --git a/src/tj6/tj6.29 b/src/tj6/tj6.30 similarity index 99% rename from src/tj6/tj6.29 rename to src/tj6/tj6.30 index dd1d2ebf..2f26c0b2 100644 --- a/src/tj6/tj6.29 +++ b/src/tj6/tj6.30 @@ -4343,6 +4343,8 @@ BEG2: PUSHJ P,TTYION ;turn on tty input CAMN A,(B) JRST BDSKO ;Some flavor of DISK AOBJN B,.-2 + pushj p,mchok0 + jrst BDSKO ;an ITS CAIE A,'TPL CAIN A,'LPT JRST BLPTO @@ -4396,10 +4398,26 @@ BBLKO: SETOM NWAITF ;don't wait MOVEI B,BUFOUT JRST BOPN +;; For the ITSNMS table +mchcnt==:20 +mchtab: block mchcnt + +;; Look for an ITS name in RH(A) +mchok0: push p,d + hrlzs a ;swap a + movsi d,-mchcnt +mchok1: camn a,mchtab(d) + jrst popj1d ;skip return + skipe mchtab(d) ;no more to check? + aobjn d,mchok1 + pop p,d + hlrzs a ;swap back + popj p, ;non-skip return +popj1d: pop p,d + hlrzs a ;swap back + jrst popj1 + DKTAB: 'DSK ;these devices open in block ascii mode - (SIXBIT /AI/) - (SIXBIT /ML/) - (SIXBIT /DM/) 'NUL DKTBL==.-DKTAB