Initial commit
authorRichard Cornwell <rcornwell@github.com>
Thu, 24 Nov 2016 01:01:52 +0000 (20:01 -0500)
committerRichard Cornwell <rcornwell@github.com>
Thu, 24 Nov 2016 01:01:52 +0000 (20:01 -0500)
51 files changed:
src/cdrser.mac [new file with mode: 0644]
src/clkcss.mac [new file with mode: 0644]
src/clock.mac [new file with mode: 0644]
src/comcon.mac [new file with mode: 0644]
src/comcss.mac [new file with mode: 0644]
src/comini.mac [new file with mode: 0644]
src/conall.ccl [new file with mode: 0644]
src/conseq.ccl [new file with mode: 0644]
src/core.mac [new file with mode: 0644]
src/dtser2.mac [new file with mode: 0644]
src/eddt.mac [new file with mode: 0644]
src/editor.mac [new file with mode: 0644]
src/editor.opr [new file with mode: 0644]
src/errcon.mac [new file with mode: 0644]
src/fudge2.mac [new file with mode: 0644]
src/iocont.mac [new file with mode: 0644]
src/iocss.mac [new file with mode: 0644]
src/ioini.mac [new file with mode: 0644]
src/ioini1.mac [new file with mode: 0644]
src/ioini2.mac [new file with mode: 0644]
src/iomax.mac [new file with mode: 0644]
src/iomin.mac [new file with mode: 0644]
src/jobdat.mac [new file with mode: 0644]
src/loader.1 [new file with mode: 0644]
src/loader.52 [new file with mode: 0644]
src/loader.nih [new file with mode: 0644]
src/loader.v1 [new file with mode: 0644]
src/loader.v25 [new file with mode: 0644]
src/loader.v57 [new file with mode: 0644]
src/lptser.mac [new file with mode: 0644]
src/m140.lst [new file with mode: 0644]
src/m140n.lst [new file with mode: 0644]
src/macro.10 [new file with mode: 0644]
src/macro.25 [new file with mode: 0644]
src/macro.30 [new file with mode: 0644]
src/mtpser.mac [new file with mode: 0644]
src/once.mac [new file with mode: 0644]
src/pip.mac [new file with mode: 0644]
src/pip.opr [new file with mode: 0644]
src/ptpser.mac [new file with mode: 0644]
src/ptrser.mac [new file with mode: 0644]
src/rim10b.mac [new file with mode: 0644]
src/runcss.mac [new file with mode: 0644]
src/s.mac [new file with mode: 0644]
src/savget.mac [new file with mode: 0644]
src/scnser.mac [new file with mode: 0644]
src/syscon.mac [new file with mode: 0644]
src/syscss.mac [new file with mode: 0644]
src/sysini.mac [new file with mode: 0644]
src/sysmak.mac [new file with mode: 0644]
src/tendmp.mac [new file with mode: 0644]

diff --git a/src/cdrser.mac b/src/cdrser.mac
new file mode 100644 (file)
index 0000000..ddb0347
--- /dev/null
@@ -0,0 +1,245 @@
+TITLE CDRSER - CARD READER SERVICE\r
+SUBTTL 8-2-65\r
+\r
+\r
+EXTERNAL STODAT, ADVBFF, IOSET, SETIOD, SETBYT, STOSQD\r
+EXTERNAL CDRSAV, CDRCHN,  CDRRET,ILLOUT,PIOMOD\r
+INTERNAL CDRINT\r
+\r
+;DEVICE DATA BLOCK LINKAGE\r
+EXTERNAL CDRDB,CDRDAT,CRDIS\r
+ENTRY CDRDSP\r
+\f\r
\r
+,CDR PARAMETER ASSIGNMENTS\r
\r
+,   CDR CONTROL REGISTER\r
+         CRDONE=10;            DONE FLAG\r
+         CRBUSY=20;            BUSY FLAG\r
+         CRBIN=40;             BINARY\r
+         CRALL=100;            ALL FLAG\r
+         CRMISS=200;           DATA MISSED\r
+         CREOC=400;            END OF CARD\r
+         CREOFF=1000;          END OF FILE\r
+         CRERR=2000;           ERROR\r
+         CHCHN=2\r
+,   ACCUMULATORS\r
+         CRDAT1=TEM\r
+         CRAC=JDAT\r
\r
+,   SPECIAL IO STATUS WORD ASSIGNMENTS\r
+         CRMFST=40000;         FIRST CARD\r
+         CRMBIN=200000;        BINARY\r
+         CRMIMG=100000;        IMAGE\r
+,   SPECIAL CHARACTERS\r
+         S2EOF=32;             END OF FILE\r
\r
+REPEAT 0,<\r
+,CDR DATA BLOCK\r
+\r
+CDRDAT:          SIXBIT /CRD\r
+ 34\r
+ 0\r
+ EXP CDRDSP\r
+ XWD 1400+PROG,10403\r
+ 0\r
+ 0 \r
+ XWD PROG,0\r
+ 0\r
+ 0\r
+CRDIS:   JRST .\r
+>\r
+\r
+,CDR SERVICE DISPATCH TABLE\r
+\r
+CDRDSP:          CONO CR,0 ;RELEASE\r
+         POPJ PDP,;            CLOSE\r
+         JRST ILLOUT           ;OUTPUT\r
+         JRST CRINP;           INPUT\r
+\f\r
+\r
+CRINP:   TLZ IOS,IOBEG;        VIRGIN DEVICE?  IOBUF:=0\r
+\r
+CDRIN1:          TLO IOS,IOFST+CRMFST;         IOFST:=CRMFST:=1\r
+         LDB TAC,PIOMOD\r
+         CAIN TAC,B;           MODE=BINARY?\r
+         TLO IOS,CRMBIN;       YES.  CRMBIN:=1\r
+         CAIN TAC,I;           MODE=IMAGE?\r
+         TLO IOS,CRMIMG;       YES.  CRMIMG:=1\r
+         TRO IOS,IOACT;        IOACT:=1\r
+         MOVEM IOS,DEVIOS(DEVDAT)\r
+         PUSHJ PDP,SETBYT;     TAC0-5:=TAC12-13:=0; TAC6-11:=BYTE SIZE\r
+         MOVEM TAC,DEVPTR(DEVDAT)\r
+         MOVEI TAC, CDRCHN;    ASSIGN PI CHANNEL\r
+         CONO CR,CRBIN+CRALL+CRBUSY(TAC);              SELECT BINARY, ALL\r
+         POPJ PDP,;            RETURN\r
+\f\r
+\r
+CDRINT:          CONSO CR,CRDONE;      DONE FLAG?\r
+         JRST CDRINT\r
+         JSR CDRSAV;                   SAVE ACCUMULATORS AND ESTABLI\r
+         MOVEI DEVDAT,CDRDAT\r
+         MOVE IOS,DEVIOS(DEVDAT)\r
+         CONSZ CR,  CRMISS+CRERR;      DATA MISSED OR ERROR?\r
+         TRO IOS,IODERR;       IODERR:=1\r
+         DATAI CR, CRDAT1;     INPUT INFORMATION\r
+         PUSHJ PDP,IOSET;      PROG:=C(JBTADR18-35), ITEM:= C(DEVPTR)\r
+         TLZN IOS,CRMFST;      FIRST CARD?  CRMFST:=0\r
+         XCT CRDIS             ;NOT FIRST, GO TO SUBROUTINE\r
+\r
+CRFIRS:          TRC CRDAT1, 7400;     FIRST COL OF FIRST CARD\r
+         TRCN CRDAT1,7400;     Y, X, 0, OR 1 PUNCH?\r
+         JRST CREOFC;                  NO, END OF FILE CARD\r
+         CONSZ CR, CREOFF;     END OF FILE?\r
+         JRST CREOF;                   YES\r
+         TLNE IOS,CRMBIN;      CRMBIN=1?\r
+         JRST CRFSTB;          YES\r
+         TLNE IOS,CRMIMG;      CRMIMG=1?\r
+         JRST CRFSTI;          YES\r
+         JRST CRFSTL+1\r
+\r
+CREOFC:          MOVEI TAC,CDRCHN      ;WAIT FOR EOC\r
+         CONO CR,CRBUSY(TAC)\r
+CREOF:   TLO IOS, IOEND;       IUEND:=1\r
+         MOVEI DAT,S2EOF\r
+         PUSHJ PDP,STODAT;     STORE END OF FILE CHARACTER\r
+         SKIP\r
+         JRST CRLST2;          BLOCK FULL OR BLOCK COMPLETE\r
+         MOVEI TAC,.;          DATA STATED PROPERLY\r
+         HRRM TAC, CRDIS;      SET DISPATCH TO RETURN HERE.\r
+         CONSO CR, CREOC;      END OF CARD?\r
+         JRST CREXIT;          NO.\r
+         PUSHJ PDP,ADVBFF;     ADVANCE BUFFER\r
+         SKIP\r
+         TLO IOS,IOBEG;        IOBEG:=1\r
+         JRST CROFF\r
+\r
+CRFSTL:          PUSHJ PDP, CRITMS;    STORE ITEM\r
+         MOVEI TAC,CRCV;       TAC:=CRCV.   HOLLERITH READ\r
+\r
+CRREST:          CONI CR, TAC1\r
+         TRZ TAC1, CRBIN+CRALL+CRBUSY; SELECT HOLERITH, ALL:=0, BUS\r
+         CONO CR, (TAC1);      RESET CARD READER\r
+         JRST CREXT1;          CHANGE DISPATCH AND GO\r
+\f\r
+, HOLLERITH READ MODE\r
+\r
+CRCV:    MOVE CRAC, [POINT 6,CRDAT1,23];       COLUMNS 79 AND 80\r
+         CONSO CR,CREOC;       END OF CARD?\r
+         MOVE CRAC,CRC1;       NO.  LOOK AT ALL CHARACTERS\r
+         LDBI TAC,CRAC         ;CONVERT HOLLERITH\r
+         IDIVI TAC, 5;         TO ASCII\r
+         LDB DAT, CRCV1(TAC1)\r
+         PUSHJ PDP,STODAT;     STORE IN BU FER\r
+         JRST CREOF+1\r
+         JRST CRINS\r
+         TLNE CRAC, 760000;    WORD COMPLETE?\r
+         JRST CRCV+3;          NO\r
+         CONSZ CR,CREOC;       END OF CARD?\r
+         JRST CRINS;           YES\r
+         MOVEI TAC, CRCV;      NEXT DISPATCH TO CRCV.  HOLLERITH READ\r
+\r
+CREXT1:          HRRM TAC, CRDIS;      UPDATE DISPTACHER\r
+         JRST CREXIT\r
+CRCON:   OCT 6424\r
+\r
+CRINS:   MOVE CRAC,CRC2;       BLOCK FULL OR BLOCK COMPLETE  INSERT CR\r
+         LDBI DAT, CRAC\r
+         PUSHJ PDP,STODAT;     STORE CHAR\r
+         SKIP;                 EXIT1.\r
+         JRST CRLST2;          EXIT2.  BLOCK FULL OR BLOCK COMPLETE\r
+         TLNE CRAC,760000;     THATS ALL?\r
+         JRST CRINS+1;         NO\r
+         JRST CRLAST;          END OF CARD\r
+\f\r
+, BINARY READ MODE\r
+\r
+CRFSTB:          LDB TAC,[POINT 3,CRDAT1,35];  7-9 PUNCH?\r
+         CAIE TAC, 5\r
+         TRO IOS, IOIMPM;      YES.  IOIMPM:=1\r
+         CONI CR, TAC\r
+         TRZ TAC, CRBUSY+CRALL;        BUSY FLAG:=0, ALL FLAG;=0\r
+         CONO CR,(TAC);        RESET TO RE-READ COL 3\r
+         MOVEI TAC, CRCOL2;    DISPATCH TO CRCOL2 ON NEXT INTERRUPT\r
+         JRST CREXT1\r
+\r
+CRCOL2:          MOVEI TAC, CRCOL4;    DISPATCH TO CRCOL4 ON NEXT INTERRUPT\r
+         HRRM TAC,CRDIS\r
+\r
+CRCOL4:          MOVE DAT, CRDAT1\r
+         PUSHJ PDP, CRITMS+1;          STORE THE WORD FROM DAT\r
+         JRST CREXIT\r
+\r
+CRC1:    POINT 6,CRDAT1\r
+CRC2:    POINT 7,CRCON,20\r
+\f\r
+,IMAGE READ MODE\r
+\r
+CRFSTI:          MOVEI TAC,  .+3;      DISPATCH TO CRFSTI + 3 ON NEXT INTERRUP\r
+         DPB CRDAT1,[POINT 24,CRTEM,23];       SAVE COLUMN 1 AS MI\r
+         JRST CREXT1\r
+\r
+         PUSHJ PDP, CRITMS;    SET ITEM AND CHECK SIZE\r
+         IOR CRDAT1, CRTEM;    CRTEM12-35:=COL 1 AND 2\r
+         MOVEI TAC, .+2;       DISPATCH TO CRFSTI + 7 ON NEXT INTERRUP\r
+         JRST CRIM1+1\r
+\r
+         CONI CR, TAC1\r
+         TRZ TAC1, CRBUSY+CRALL;       BUSY FLAG:=ALL FLAG:=0\r
+         CONO CR, (TAC1);      RESET READER ON COL 3\r
+\r
+CRIM1:   MOVEI TAC,.;          DISPATCH TO CRIM1 ON NEXT INTERRUPT\r
+         CONSZ CR, CREOC;      END OF CARD?\r
+         JRST CRLAST;          YES\r
+         MOVEM @DEVPTR(DEVDAT)\r
+         AOS DEVPTR(DEVDAT);   INCREMENT ITEM POINTER\r
+         JRST CREXT1\r
+\r
+CRITMS:          TLO IOS, IOFST;       IOFST:=1\r
+         PUSHJ PDP, STODAT;    STORE WORD\r
+         JRST CREOF+1\r
+         JRST CREOF+1\r
+         POPJ PDP,;            RETURN\r
+\r
+CRCNV:   ASCII ._123456789.\r
+         ASCII .0=@^'\ /ST.\r
+         ASCII .UVWXYZ;,(".\r
+         ASCII .#%-JKLMNOP.\r
+         ASCII .QR:$*[>&+A.\r
+         ASCII :BCDEFGHI?.:\r
+         ASCII :)]<!?:\r
+\r
+CRCV1:   POINT 7,CRCNV(TAC),6\r
+         POINT 7,CRCNV(TAC),13\r
+         POINT 7,CRCNV(TAC),20\r
+         POINT 7,CRCNV(TAC),27\r
+         POINT 7,CRCNV(TAC),34\r
+\f\r
+CRLAST:          CAIL ITEM,^D82;       C(ITEM)<82?\r
+         JRST CRCONT;          NO\r
+CRLST0:          PUSHJ PDP,STOSQD;     STORE WORD COUNT\r
+         SKIP\r
+CRLST2:          PUSHJ PDP,ADVBFF;     ADVANCE BUFFER\r
+         JRST CROFF;           EXIT1.  NECT BUFFER FULL\r
+         MOVEI TAC, CDRCHN\r
+         CONO CR, CRBIN+CRALL+CRBUSY(TAC);     SELECT BINARY, ALL\r
+                               ,ASSIGN PI CHANNEL\r
+CRLST1:          TLO IOS,IOFST+CRMFST;         IOFST:=CRMFST:=1\r
+         TLZE IOS, IOW;        IN A WAIT?  IOW:=0\r
+         PUSHJ PDP, SETIOD;    IOWS:=1\r
+\r
+CREXIT:          MOVEM IOS,DEVIOS(DEVDAT);     C(CRIOS):=C(IOS)\r
+         MOVEM ITEM, DEVCTR(DEVDAT);   C(CRCTR):=C(ITEM)\r
+         JRST CDRRET;          RESTORE ACCUMULATORS AND DISMISS INTERR\r
+\r
+CROFF:   TRZ IOS,IOACT;        IOACT:=0\r
+         CONO CR,0;            CLEAR CDR CONTROL REGISTER\r
+         JRST CRLST1\r
+\r
+CRCONT:          MOVEI TAC, CDRCHN;    ASSIGN PI CHANNEL\r
+         CONO CR, CRBIN+CRALL+CRBUSY(TAC);     SELECT BINARY, ALL,\r
+         TLO IOS,CRMFST;       CRMFST:=1\r
+         JRST CREXIT\r
+\r
+CRTEM:   0\r
+END,\r
diff --git a/src/clkcss.mac b/src/clkcss.mac
new file mode 100644 (file)
index 0000000..1c00a7a
--- /dev/null
@@ -0,0 +1,110 @@
+TITLE CLKCSS - SCHEDULING ALOGRITHM\r
+SUBTTL      T. HASTING 6-29-65\r
+;SCHEDULING ALOGRITHM\r
+;CALL:\r
+;      PUSHJ PDP, NXTJOB\r
+;      EXIT                    ;RETURN HIGHEST PRIORITY USER IN AC ITEM\r
+\r
+;NEXJOB ASSUMES NO ACS SET EXCEPT PDP AND THAT IS MAY USE\r
+;ANY OF THE OTHER ACS\r
+;EXECUTION REQUIRES ROUGHLY 37 CYCLES FOR NORMAL CASE\r
+\r
+INTERNAL NXTJOB, QUANTS\r
+EXTERNAL IOCOMP,JOBN,JBTSTS,JOB\r
+EXTERNAL MTAVAL,DCAVAL,DTAVAL,SCNOFF,SCNON\r
+\r
+T=TAC1   ;TEMPORARY AC\r
+C=DEVDAT\r
+P=DAT\r
+\r
+NXTJOB:          MOVE T, IOCOMP        ;NO. OF COMPLETED IO JOBS\r
+         MOVEM T, IOAVAL       ;MAKE SLOW IO LOOK LIKE FAST IO\r
+\r
+;KEEP IO DEVICES BUSY\r
+         HRLZI P, -NUM         ;NO. OF IO DEVICES CATEGORIES TO CHECK\r
+NXT0:    SKIPN @AVALTB(P)      ;NON-ZERO IF IO JUST BECOME AVAILABLE\r
+NXT1:    AOBJN P, NXT0\r
+         JUMPG P, NXT4         ;FINISHED YET\r
+         SETZM @AVALTB(P)      ;IO DEVICE AVAIL. ACKNOWLEDGE FACT\r
+         MOVE T,WAITB(P)       ;GET APPROPRIATE JOB STATUS BIT\r
+         MOVE ITEM,JOBP(P)     ;SEARCH FOR WAITING JOB\r
+         AOS ITEM              ;LOOK AT EVERYONE ELSE FIRST\r
+NXT2:    CAIL ITEM,JOBN        ;MODULO JOBN\r
+         MOVEI ITEM,1          ;SKIP NULL JOB\r
+         TSNN T,JBTSTS(ITEM)   ;IS WAIT BIT SET FOR THIS JOB?\r
+         JRST NXT3 ;NO. KEEP LOOKING\r
+         CONO PI,SCNOFF        ;YES, TURN SCANNER CHAN. OFF(CONTROL C)\r
+         HLRZ TAC,JBTSTS(ITEM)           ;IS JOB RUNABLE?\r
+         CAIN TAC,RUNABLE(T)\r
+         JRST NXT7             ;YES, CLEAR BIT. SET RUN TIME. RETURN\r
+         CONO PI,SCNON         ;NO. TURN SCANNER CHAN. ON. KEEP LOOKIN\r
+NXT3:    CAME ITEM, JOBP(P)    ;HAVE ALL USERS BEEN LOOKED AT\r
+         AOJA ITEM, NXT2       ;NO. KEEP LOOKING\r
+         JRST NXT1             ;YES. SHOULD NOT HAPPEN\r
+\f\r
+;NO JOBS WAITING TO USE IO DEVICES\r
+;HAS CURENT JOB USED ITS QUANTUM\r
+\r
+NXT4:    MOVEI C,JOBN          ;GET READY FOR POSSIBLE LOOP\r
+         SKIPA ITEM, JOB       ;CURRENTLY RUNNING JOB\r
+\r
+NXT6:    AOS ITEM              ;LOOK AT NEXT JOB\r
+         CAIL ITEM, JOBN       ;MODULO JOBN\r
+         MOVEI ITEM, 1         ;SKIP NULL JOB\r
+\r
+NXT5:    HLRZ T, JBTSTS(ITEM)           ;IS THIS JOB RUNNABLE\r
+         CAIN T, RUNABLE\r
+         JRST NXT9             ;YES,RETURN WITH ITEM SET\r
+NXT5A:   SOJG C, NXT6          ;NO. LOOKED AT ALL JOBS YET?\r
+         SETZB ITEM,T          ;YES. INDICATE NULL JOB TO RUN\r
+         AOJA T,NXT8           ;SET TO RUN FOR ONE CLOCK TICK\r
+\r
+NXT7:    MOVEM ITEM, JOBP(P)   ;SAVE THIS JOB NO. FOR NEXT TIME\r
+         TRZ TAC,(T)           ;CLEAR WAIT BIT\r
+         HRLM TAC,JBTSTS(ITEM)           ;IN JOB STATUS WORD\r
+         TRNE T,IOWS           ;IS WAIT BIT IOWS?\r
+         SOS IOCOMP            ;YES, SUBTRACT REQUEST COUNT\r
+         CONO PI,SCNON         ;TURN SCANNER CHANNEL BACK ON\r
+         JRST NXT10            ;AND GO SET RUNNING TIME\r
+\r
+NXT9:    HRRZ T,JBTSTS(ITEM)   ;HAS TIME GONE TO ZERO FOR THIS JOB?\r
+         TRNE T,-1\r
+         POPJ PDP,             ;NO\r
+NXT10:   MOVE T, QUANTS(P)     ;SET QUANTUM RUNNING TIME FOR THIS QUEU\r
+NXT8:    HRRM T, JBTSTS(ITEM)\r
+         CAMN ITEM, JOB        ;IS THIS SAME AS OLD JOB?\r
+         JUMPN ITEM, NXT5A     ;AND NOT NULL JOB\r
+         POPJ PDP,\r
+\f\r
+;FLAGS SET NON-ZERO WHEN IO DEVICES BECOME AVAILABLE\r
+\r
+AVALTB:          EXP MTAVAL            ;MAG TAPE\r
+         EXP DCAVAL            ;DATA CONTROL\r
+         EXP DTAVAL            ;DECTAPE\r
+         EXP IOAVAL            ;ALL OTHER DEVICES\r
+NUM=.-AVALTB\r
+\r
+IOAVAL:          0                     ;FLAG = NO. OF IO COMPLETED JOBS\r
+\r
+;BIT IN STATUS WORD MEANING JOB WAITING TO USE DEVICE\r
+WAITB:   EXP MTW\r
+         EXP DCW\r
+         EXP DTW\r
+         EXP IOWS\r
+\r
+;LAST JOB SCHEDULED FOR DEVICE\r
+JOBP:    REPEAT NUM,\r
+<        EXP 1\r
+>\r
+\r
+;QUANTUM TIMES FOR EACH QUEUE\r
+\r
+QUANTS:          EXP 4                 ;MAGTAPE QUEUE\r
+         EXP 4                 ;DATA CONTROL QUEUE\r
+         EXP 4                 ;DECTAPE QUEUE\r
+         EXP 6                 ;IOWAIT SATISFIED QUEUE\r
+         EXP QUANT1            ;STRAIGHT COMPUTATION QUEUE\r
+\r
+XP  QUANT1,^D15;       STRAIGHT COMPUTATION QUEUE\r
+\r
+         END,\r
diff --git a/src/clock.mac b/src/clock.mac
new file mode 100644 (file)
index 0000000..4f20263
--- /dev/null
@@ -0,0 +1,142 @@
+TITLE CLOCK - CLOCK SERVICE ROUTINE\r
+SUBTTL      T. HASTINGS 6-2-65\r
+INTERNAL CLOCK, CLKINI,NULJOB,APRINT,RSCHED\r
+EXTERNAL APRSAV, APRRET, APRCHN,APRILM,APRCHL\r
+EXTERNAL COMCNT,COMMAND,JOB,JOBADR,APRSAC,JOBDAC,JOBPDP,JOBREL\r
+EXTERNAL USRPDP,JOBPFU,JOBPC,JBTADR,JOBADR,JOBDAT,USRPFU,CLDS,NXTJOB\r
+EXTERNAL STOPU,SCHEDF,TIME,JOBLEV,JOBUXT,UUO0,JOBDHI,CLKOFF,JBTSTS\r
+\r
+;CLOCK WILL TIME AN INTERVAL AND PUSHJ PDP, TO AN ADDRESS\r
+;AFTER THE INTERVAL HAS EXPIRED\r
+;TO MAKE A REQUEST:\r
+;      CONO PI,PIOFF\r
+;      DPBI AC,CLOCK\r
+;      CONO PI,PION\r
+;AC MUST CONTAIN- XWD ADDRESS,NUMBER OF CLOCK COUNTS+DATA*1000\r
+;THE HIGH ORDER SIX BITS OF THE RIGHT HALF(DATA) ARE PLACED IN AC\r
+;TAC RIGHT JUSTIFIED BEFORE THE PUSHJ PDP, ADDRES IS DONE\r
+\r
+;SYSTEM FLAGS:\r
+; STOPU IS SET NON-ZERO AT EITHER INTERRUPT SERVICE LEVEL OR\r
+;   UUO LEVEL AND A CLOCK INTERRUPT IS REQUESTED WHEN CURRENT\r
+;   JOB MUST BE STOPPED AND ANOTHER ONE RUN.\r
+; SCHEDF IS SET NON-ZERO BY CLOCK ROUTINE WHEN IF IS IN THE PROCESS\r
+;   OF RESCHEDULING.  IT IS CLEARED AFTER JOB HAS BEEN SET TO\r
+;   CURRENTLY RUNNING JOB.\r
+; TIME IS THE TIME SYSTEM HAS RUN IN 60THS OF A SECOND\r
+\r
+PION=200\r
+PIOFF=400\r
+\r
+STOR=DAT\r
+T=TAC\r
+JA=JDAT\r
+\r
+CLOCK:   POINT 36,CIPWT-1,35           ;BYTE POINTER TO CLOCK QUEUE\r
+CIPWT:   BLOCK 12                      ;THE QUEUE\r
+\r
+CLKINI:          MOVEI CIPWT-1                 ;SET UP BYTE POINTER\r
+         HRRM CLOCK\r
+         POPJ PDP,\r
+\f\r
+APRINT:          JRST .+2              ;HERE ON APR INTERRUPT\r
+         JRST .                ;TO OTHER DEVICES ON THIS CHANNEL\r
+         CONSO APR,230000              ;IS IT ANY OF THE OTHERS\r
+         JRST CIP0             ;NO. GO CHECK CLOCK\r
+         JSR APRSAV                    ;YES, SAVE ACS\r
+         JRST APRILM                   ;AND GO PROCESS ILLEGAL MEMOR\r
+CIP0:    CONSO APR, 2000       ;IS CLOCK ENABLED\r
+         JRST CIP1  ;NO. GO TO OTHER DEVICES\r
+         CONSZ APR, 1000       ;YES, DID CLOCK CAUSE INTERRUPT\r
+         JRST CIP2             ;YES\r
+CIP1:    SKIPN STOPU           ;NO, IS THIS A REQUEST INTERRUPT\r
+         JRST APRINT+1         ;NO. GO TO OTHER DEVICES\r
+CIP1B:   JSR APRSAV            ;YES, SAVE ACS\r
+         JRST CIP6             ;RESCHEDULE BUT DONT TIME\r
+\f\r
+CIP2:    JSR APRSAV                    ;SAVE ACS\r
+         AOS TIME              ;INCREMENT TIME\r
+         MOVE TAC,JOB          ;DECREMENT CURRENT JOBS RUNNING TIME\r
+         SOS JBTSTS(TAC)\r
+         CONO APR,CLKOFF       ;TURN CLOCK FLAG OFF\r
+\r
+;PROCESS TIMING REQUESTS STORED IN QUEUE\r
+         HRRZ STOR, CLOCK      ;GET END OF LIST\r
+CIP4:    CAIN STOR, CIPWT-1    ;END YET\r
+         JRST CIP5             ;YES\r
+         SOS TAC1, (STOR)      ;DECREMENT TIMING REQUEST\r
+         TRNE TAC1, 7777       ;TIME EXPIRED YET\r
+         SOJA STOR, CIP4       ;NO, CONTINUE SCAN\r
+         CONO PI, PIOFF        ;YES. MOVE LAST ITEM IN LIST TO THS\r
+         MOVE TAC, @CLOCK\r
+         SOS CLOCK\r
+         CONO PI, PION\r
+         MOVEM TAC, (STOR)\r
+         LDB TAC, [POINT 6, TAC1, 23]  ;GET 6 BIT DATA ITEM\r
+         MOVSS TAC1            ;SETUP DISPATCH ADDRESS\r
+         PUSH PDP, STOR        ;SAVE ONLY VALUABLE AC\r
+         PUSHJ PDP, (TAC1)     ;AND DISPATCH TO TIMING REQUEST ROUTINE\r
+         POP PDP, STOR\r
+         SOJA STOR, CIP4       ;GO BACK FOR MORE REQUESTS\r
+\r
+CIP5:    SKIPE COMCNT          ;ANY COMMANDS TO PROCESS\r
+         PUSHJ PDP, COMMAND    ;YES\r
+RSCHED:                                ;RESCHEDULE, HERE AFTER APRILM\r
+CIP6:    SETZM STOPU           ;CLEAR INTERRUPT REQUEST FLAG\r
+         SETOM SCHEDF          ;FLAG THAT SCHEDULING IS IN PROGRESS\r
+         PUSHJ PDP, NXTJOB     ;RETURN HIGHEST PRIORITY JOB IN AC ITEM\r
+         CAMN ITEM, JOB        ;IS IT SAME AS CURRENT JOB\r
+         JRST CIP8 ;YES, EXIT\r
+\f\r
+;DIFFERENT JOB, SAVE OLD JOB\r
+         SKIPN JOB             ;IS OLD JOB THE NULL JOB\r
+         JRST CIP7             ;YES, DONT BOTHER TO SAVE ANYTHING\r
+         MOVE JA, JOBADR       ;NO. MOVE CHANNEL ACS TO USER JOB AREA\r
+         MOVEI T,JOBDAC(JA)\r
+         HRLI T, APRSAC\r
+         BLT T, JOBDHI(JA)\r
+         MOVEI T, JOBPDP(JA)   ;MOVE JOB STATE VARIABLES TO JOB DATA A\r
+         HRLI T, USRPDP\r
+         BLT T, JOBPFU(JA)\r
+         MOVE T, 40                    ;SAVE LOC. 40\r
+         MOVEM T, JOBLEV(JA)\r
+         MOVE T, UUO0                  ;AND UUO PC\r
+         MOVEM T, JOBUXT(JA)\r
+         MOVE T, APRCHL        ;SET C(CHANNEL INTERRUPT LOC.) AS PC\r
+         MOVEM T, JOBPC(JA)\r
+\r
+\f\r
+;RESTOR NEW JOB\r
+CIP7:    MOVEM ITEM, JOB       ;STORE NEW CURRENT JOB NUMBER\r
+         SETZB 0,SCHEDF        ;INDICATE SCHEDULING FINISHED\r
+         JUMPE ITEM, NUL0      ;IS NEW JOB NULL JOB\r
+         MOVE JA, JBTADR(ITEM)         ;SETUP STATE VARIABLES FOR CU\r
+         HRRZM JA, JOBADR      ;IN SYSTEM AREA\r
+         HRRZM JA, JOBDAT\r
+         HLRZM JA, JOBREL(JA)          ;SET RELOCATION AND PROTECTION\r
+         DATAO JA\r
+         MOVEI T,USRPDP\r
+         HRLI T, JOBPDP(JA)    ;MOVE JOB STATE VARIABLES TO SYSTEM ARE\r
+         BLT T, USRPFU\r
+         MOVE T, JOBLEV(JA)    ;RESTORE LOC. 40\r
+         MOVEM T, 40\r
+         MOVE T, JOBUXT(JA)    ;AND UUO PC\r
+         MOVEM T, UUO0\r
+         MOVE T, JOBPC(JA)     ;SET C(CHANNEL LOC.) TO C(JOBPC)\r
+         MOVEM T, APRCHL\r
+         MOVSI 17, JOBDAC(JA)          ;RESTORE USER ACS\r
+         BLT 17,17\r
+         SKIPE STOPU           ;HAS STOPU BEEN SET SINCE CIP6\r
+         JRST CIP1B                    ;YES, GO RESCHEDULE\r
+         JEN @APRCHL           ;NO. DISMISS CHANNEL\r
+\r
+CIP8:    SETZM SCHEDF                  ;CLEAR SCHEDULING FLAG\r
+         JRST APRRET                   ;AND DISMISS INTERRUPT\r
+\r
+;THE NULL JOB\r
+NUL0:    JRST 10, NULJOB       ;RENABLE AND RUN IN EXEC. MODE\r
+\r
+NULJOB:          MOVE 1,.+1\r
+         AOJA 0,1  ;COUNT IN AC0 FOR VISUAL MONITORING\r
+                               ;ALSO PC = 1\r
+         END,\r
diff --git a/src/comcon.mac b/src/comcon.mac
new file mode 100644 (file)
index 0000000..cf4d2c4
--- /dev/null
@@ -0,0 +1,310 @@
+       TITLE COMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES\r
+       SUBTTL T.HASTINGS 8-2-65\r
+;CALLED FROM COMMAND DECODER WHICH IS CALLED FROM CLOCK ROUTINE\r
+;WITH FOLLOWING ACS SET:\r
+;TAC= BYTE POINTER TO COMMAND STRING(SPACE OR CR AFTER COMMAND NAME)\r
+;ITEM = JOB NUMBER\r
+;DAT = BYTE POINTER TO LAST OUTPUT CHARACTER\r
+;DEVDAT= ADDRESS OF DEVICE DATA BLOCK INITIATING COMMAND\r
+;JDAT = ADDRESS OF JOB DATA AREA, = 0 IF NO JOB AREA\r
+\r
+;UPON RETURN FROM COMMAND SETUP ROUTINE, A CR-LF IS ADDED IF\r
+;NEEDED AND TTY IS STARTED\r
+\r
+;SINCE THE COMMAND DECODER IS CALLED FROM THE CLOCK ROUTINE\r
+;COMMAND SETUP ROUTINES MUST RUN TO COMPLETION QUICKLY\r
+;IF A COMMAND FUNCTION CANNOT DO THIS, IT MUST JUST SET\r
+;THE JOB TO A RUNNABLE STATUS AND RETURN I MEDIATELY\r
+\r
+; "IJOB" - INITIALIZE JOB\r
+INTERNAL IJOB\r
+EXTERNAL RADX10,JOBINI,JOBKIL,CRLF,MONJOB\r
+\r
+IJOB:  JRST JOBINI\r
+\r
+;PRINT JOB NUMBER\r
+\r
+       INTERNAL PJOB\r
+PJOB:  MOVE TAC, ITEM\r
+       PUSHJ PDP,RADX10\r
+       JRST CRLF\r
+\r
+;KILL JOB(MUST HAVE CORE ASSIGNED)\r
+\r
+       INTERNAL KJOB\r
+KJOB:  JRST JOBKIL\r
+\f\r
+\r
+; "START L" OR "START" - START AT LOC. L OR STARTING ADDRESS\r
+INTERNAL START\r
+EXTERNAL OCTIN,JOBSA,START1,COMERA,STARTU,CPOPJ,CPOPJ1,STARTM\r
+\r
+START: PUSHJ PDP,STRT\r
+       JRST COMERA     ;ERROR\r
+       JRST STARTU     ;GO SET JOB TO START(CONSOLE IN USER MO\r
+\r
+; "STARTC L" OR  "STARTC" - START AT LOC. L(TTY IN COMMAND MODE)\r
+\r
+INTERNAL STARTC\r
+EXTERNAL STARTM\r
+\r
+STARTC:        PUSHJ PDP,STRT\r
+       JRST COMERA     ;ERROR\r
+       JRST STARTM     ;FO SET JOB TO START(TTY IN COM. MODE)\r
+\r
+;ROUTINE TO SCAN ARGUMENT\r
+\r
+STRT:  PUSHJ PDP,OCTIN ;CONVERT OCTAL NO,\r
+       JRST ST2        ;EITHER NO NUMBER OR ERROR\r
+       JRST ST3        ;START JOB C(TAC1)\r
+\r
+ST2:   JUMPN TAC1, CPOPJ       ;NOT A NUMBER IF NON-ZERO\r
+       HRRZ TAC1, JOBSA(JDAT)          ;NO, START AT STARTING ADDRES\r
+ST3:   HRLI TAC1, 1000         ;USER MODE FLAG\r
+       JRST CPOPJ1             ;OR RETURN\r
+\f\r
+\r
+; "CONT" - CONTINUE EXECUTION FROM WHERE LEFT OFF\r
+INTERNAL CONT\r
+EXTERNAL CONTU,CONMES,JBTSTS\r
+\r
+CONT:  MOVSI TAC1, JERR\r
+       TDNN TAC1, JBTSTS(ITEM)         ;IS JOB ERROR BIT SET?\r
+       JRST CONTU                      ;NO, GO SET JOB TO CONTINUE\r
+CONTA: JSP TAC,CONMES          ;YES, PRINT CANT CONTINUE\r
+\r
+       ASCIZ /CAN'T CONTINUE\r
+/\r
+\r
+; "CONTC" - CONTINUE EXECUTION(TTY REMAINS IN COMMAND MODE)\r
+\r
+INTERNAL CONTC\r
+EXTERNAL CONTM\r
+\r
+CONTC: MOVSI TAC1, JERR\r
+       TDNN TAC1, JBTSTS(ITEM)         ;IS JOB ERROR BIT SET?\r
+       JRST CONTM      ;NO\r
+       JRST CONTA      ;YES\r
+\r
+; "DDT" - START EXECUTION AT DDT IN USER AREA\r
+INTERNAL DDTGO\r
+EXTERNAL JOBDDT,STARTU\r
+\r
+DDTGO: HRRZ TAC1, JOBDDT(JDAT)         ;GET DDT STARTING ADDRESS\r
+       JUMPN TAC1,DDT1         ;GO START JOB IF NON-ZERO\r
+       JSP TAC,CONMES                  ;ZERO, PRINT"NO DDT"\r
+\r
+       ASCII /NO DDT\r
+/\r
+\r
+DDT1:  HRLI TAC1,USRMOD        ;USER MODE BIT\r
+       JRST STARTU             ;GO SET TO RUN JOB\r
+;DIGITAL MAYNARD\r
+\r
+INTERNAL DIGITAL\r
+\r
+DIGITAL:       JSP TAC,CONMES\r
+       ASCIZ /HELLO\r
+/\r
+\f\r
+\r
+\r
+\r
+; "CORE  #" - ASSIGNS #*1024 WORDS OF CORE TO JOB\r
+;   "CORE" WITH NO ARGUMENT IS EQUIVALENT TO "CORE 0"\r
+\r
+INTERNAL CORE\r
+EXTERNAL CORE1,DECIN,ANYRIN,CONMES,COMERA,NOTENF\r
+EXTERNAL JOBPFI,JBTADR,CPOPJ,JOBPRT,JOBPR1,JOBZER\r
+EXTERNAL RADX10\r
+\r
+CORE:  PUSHJ PDP, DECIN        ;GET NO. OF 1K BLOCKS\r
+       JRST COR3               ;ERROR\r
+       SKIPN TAC,TAC1          ;IS ZERO BEING ASKED FOR?\r
+       JUMPN JDAT,JOBZER       ;YES, RELEASE ALL DEVICES IF THERE WAS\r
+       PUSHJ PDP,CORE1\r
+       JRST COR2               ;CORE NOT AVAILABLE (AC TAC = BLO CKS L\r
+       HRRZ JDAT, JBTADR(ITEM)         ;CORE GRANTED, CLEAR PART OF\r
+       JUMPE JDAT, CPOPJ       ;UNLESS ALL CORE WAS RETURNED\r
+       SETZM JOBPRT(JDAT)              ;CLEAR PART PROTECTED FROM IO\r
+       HRLI TAC,JOBPRT(JDAT)\r
+       HRRI TAC, JOBPR1(JDAT)\r
+       BLT TAC, JOBPFI(JDAT)\r
+       POPJ PDP,\r
+\r
+COR2:  PUSHJ PDP,RADX10        ;PRINT NO. OF FREE 1K BLOCKS LEFT\r
+       JSP TAC,CONMES\r
+\r
+       ASCIZ / FREE 1K BLOCKS LEFT, NONE ASSIGNED\r
+/\r
+COR3:  JUMPN TAC1, COMERA      ;NOT A NO. IF NON-ZERO, APPEND "?"\r
+       JRST NOTENF             ;NOT ENOUGH ARGUMENT\r
+\f\r
+\r
+; "SAVE FILE-NAME" - SAVES JOB AREA ON RETRIEVABLE DEVICE\r
+;ONLY A SAVE OR A GET IN PROGRESS FOR EACH JOB\r
+;NO ATTEMPT IS MADE TO SAVE DEVICE ASSIGNMENTS, ACS, OR PC\r
+INTERNAL SAVE\r
+EXTERNAL SAVJOB,START1,SGSET\r
+\r
+SAVE:  MOVEI TAC1, SAVJOB      ;SETUP TO RUN SAVJOB\r
+       JRST SGSET\r
+\r
+; "GET DEVICE:FILE-NAME" - SETS UP JOB AREA FROM RETRIEVABLE DEVICE\r
+INTERNAL GET\r
+EXTERNAL GETJOB\r
+\r
+GET:   MOVEI TAC1, GETJOB      ;SETUP TO RUN GET JOB\r
+       JRST SGSET\r
+\f\r
+\r
+\r
+;"ASSIGN DEV:NAME" - ASSIGNS DEV TO JOB AND GIVES IT LOGICAL NAME NAM\r
+\r
+;TEMPORARY ACS\r
+       T1=BUFPNT\r
+       T=BUFWRD\r
+\r
+INTERNAL ASSIGN\r
+EXTERNAL CTEXT1, NOTENF, DEVLST, ASSASG, CONMES, PJOBN, ANYRDX, ERNAM\r
+EXTERNAL CRLF, DEVLG,SYSTAP\r
+\r
+ASSIGN:        PUSHJ PDP, CTEXT1       ;GET FIRST ARGUMENT\r
+       JUMPE TAC1, NOTENF      ;NO ARGUMENTS TYPED IF 0\r
+       MOVE T1, TAC1                   ;SAVE DEVICE NAME\r
+       PUSH PDP, ASSCON        ;SAVE INPUT BYTE POINTER\r
+       MOVEI TAC1, ASSCON      ;SETUP ASSIGNED BY CONSOLE BIT\r
+ASSN:  HLRZ DEVDAT, DEVLST\r
+ASSG0: CAME T1,DEVNAM(DEVDAT)          ;DOES PHYSICAL NAME MATCH?\r
+       JRST ASSG1              ;NO\r
+       PUSHJ PDP, ASSASG       ;YES, TRY TO ASSIGN DEVICE\r
+       JRST ASSER1             ;ALREADY ASSIGNED TO ANOTHER JOB\r
+       JRST ASSFIN             ;ASSIGNED\r
+\r
+ASSG1: MOVE TAC,DEVNAM(DEVDAT)         ;IS THIS THE SYSTEM TAPE?\r
+       CAMN TAC,SYSTAP\r
+       JRST ASSG2              ;YES\r
+       LDB T, PJOBN            ;SAVE OLD JOB NUMBER FOR THIS\r
+       TRZ TAC,-1              ;COMPARE LEFT HALF ONLY\r
+       CAMN TAC, T1\r
+       PUSHJ PDP, ASSASG       ;MATCH, TRY TO ASSIGN IT\r
+       JRST ASSG2              ;KEEP LOOKING\r
+       JUMPE T,ASSFIN          ;IF OLD JOB NUMBER 0, DEVICE PREVIOSLY\r
+\r
+ASSG2: HLRZ DEVDAT, DEVSER(DEVDAT)\r
+       JUMPN DEVDAT, ASSG0\r
+       POP PDP, TAC\r
+       JRST NOTDEV             ;PRINT NO SUCH DEVICE\r
+\f\r
+\r
+;ALREADY ASSIGNED TO ANOTHER JOB\r
+\r
+ASSER1:        POP PDP, TAC\r
+       MOVEI TAC, ASSMS2\r
+       PUSHJ PDP, CONMES\r
+       MOVEI TAC1, ^D10\r
+       LDB TAC, PJOBN\r
+       PUSHJ PDP,ANYRDX\r
+       JRST CRLF\r
+\r
+ASSMS2:        ASCIZ /ALREADY ASSIGNED TO JOB /\r
+\r
+;DEVICE ASSIGNED, GIVE IT A LOGICAL NAME\r
+\r
+ASSFIN:        POP PDP,TAC     ;RESTORE INPUT BYTE POINTER\r
+       PUSH PDP,DEVDAT ;SAVE DDB ADDRESS\r
+       PUSHJ PDP,CTEXT1        ;GET SECOND ARG, LOGICAL DEVICE NAME\r
+       SKIPE TAC,TAC1  ;IS THERE A LOGICAL NAME SPECIFIED?\r
+       PUSHJ PDP, DEVLG        ;YES, SEE IF IT IS ALREADY IN USE\r
+                               ;BY THIS USER\r
+       JRST ASSF1                      ;NO\r
+       MOVEI TAC,LOGERR        ;YES, PRINT ERROR\r
+       PUSHJ PDP,CONMES\r
+ASSF1: MOVE DEVDAT,(PDP)       ;RESTORE DDB ADDRESS\r
+       MOVEM TAC1,DEVLOG(DEVDAT)       ;STORE IN DEVICE DATA BLOCK\r
+       MOVSI TAC1,DVDIRIN      ;CLEAR DIRECTORY IN CORE BIT\r
+       ANDCAM TAC1,DEVMOD(DEVDAT)\r
+       PUSHJ PDP, ERNAM        ;PRINT PHYSICAL DEVICE NAME\r
+       POP PDP, DEVDAT\r
+       JSP TAC,CONMES\r
+\r
+       ASCIZ / ASSIGNED\r
+/\r
+\r
+LOGERR:        ASCIZ /LOGICAL NAME ALREADY IN USE, /\r
+\f\r
+\r
+;"DEASSIGN DEV" - DEASSIGNS DEVICE FROM CONSOLE\r
+\r
+INTERNAL DEASSIGN, NOTDEV\r
+EXTERNAL CTEXT1, DEVSRC, CONMES, ERNAM, DEASG, DEASTY\r
+\r
+DEASSIGN: PUSHJ PDP, CTEXT1    ;GET DEVICE NAME\r
+       JUMPE TAC1,DEASTY       ;NO ARG. IF 0, DEASSIGN ALL BUT TTY\r
+       MOVE TAC, TAC1          ;DEVICE NAME\r
+       PUSHJ PDP, DEVSRC       ;SEARCH FOR DEVICE\r
+       JRST DEAER1             ;NOT FOUND\r
+       PUSHJ PDP, DEASG        ;FOUND, DEASSIGN IT\r
+       JRST DEAER2             ;NOT PREVIOUSLY ASSIGNED\r
+       POPJ PDP,               ;DEVICE DEASSIGNED\r
+\r
+NOTDEV:\r
+DEAER1:        JSP TAC,CONMES          ;PRINT NO SUCH DEVICE\r
+\r
+       ASCIZ /NO SUCH DEVICE\r
+/\r
+\r
+DEAER2:        PUSH PDP, DEVDAT        ;PRINT PHYSICAL DEVICE NAME\r
+       PUSHJ PDP, ERNAM\r
+       POP PDP, DEVDAT\r
+       JSP TAC,CONMES\r
+\r
+       ASCIZ /WASN'T ASSIGNED\r
+/\r
+\f\r
+\r
+; "ATTACH N" - ATTACH CONSOLE TO JOB N\r
+;CHANGES ADDRESS OF TTY DEVICE DATA BLOCK STORED IN -1(PDP)\r
+;BY THE COMMAND DECODER\r
+\r
+INTERNAL ATTACH\r
+EXTERNAL DECIN,TTYATT,JOBN,ERNAM,CONMES,TTYFND\r
+\r
+ATTACH:        PUSHJ PDP,DECIN         ;GET JOB NO.\r
+       JRST ATT1               ;NOT A NUMBER OR NONE SPECIFIEED\r
+       SKIPE TAC1                      ;0 IS ILLEGAL\r
+       CAIL TAC1, JOBN         ;IS JOB NUMBER TOO BIG?\r
+       JRST ATT1               ;ILLEGAL JOB NUMBER\r
+       MOVSI TAC,JNA           ;HAS THIS JOB NO BEEN ASSIGNED?\r
+       TDNN TAC,JBTSTS(TAC1)\r
+       JRST ATT4               ;NO, PRINT ERROR\r
+       MOVE ITEM,TAC1          ;JOB NUMBER TO ITEM\r
+       PUSHJ PDP,TTYATT        ;NO, ATTACH TTY\r
+       JRST ATT2               ;ERROR CANT ATTACH\r
+       MOVEM DEVDAT,-1(PDP)            ;CHANGE DEV DATA BLOCK ADDRES\r
+       JRST TTYFND             ;ATTACHED. GO SET UP OUTP. BYTE PTR.\r
+\r
+ATT1:  JSP TAC,CONMES\r
+       ASCIZ /ILLEGAL JOB NUMBER\r
+/\r
+\r
+ATT2:  PUSH PDP,DEVDAT\r
+       PUSHJ PDP,ERNAM         ;PRINT TTY DEVICE NAME\r
+       POP PDP,TAC\r
+       JSP TAC,CONMES\r
+       ASCIZ / ALREADY ATTACHED\r
+/\r
+\r
+ATT4:  JSP TAC,CONMES\r
+       ASCIZ /JOB NEVER WAS INITIATED\r
+/\r
+\r
+; "DETACH" - DETACH CONSOLE FORM JOB\r
+\r
+INTERNAL DETACH\r
+EXTERNAL TTYDET\r
+\r
+DETACH:        AOS (PDP)       ;SUPRESS CR-LF SO NO TTY DDB SETUP\r
+       JRST TTYDET     ;GO DETACH TTY\r
+\r
+       END,\r
diff --git a/src/comcss.mac b/src/comcss.mac
new file mode 100644 (file)
index 0000000..bf2ab39
--- /dev/null
@@ -0,0 +1,302 @@
+TITLE COMCSS - COMMAND COMMON ROUTINES\r
+SUBTTL   T. HASTINGS       8-15-65\r
+;ROUTINE TO RETURN NEXT ALPHANUMERIC STRING\r
+; IN COMMAND LINE (SIXBIT)\r
+; CALL:   MOVE TAC, BYTE POINTER TO FIRST CHAR.-1\r
+;        PUSHJ PDP, CTEXT\r
+; SIXBIT STRING RETURN LEFT JUSTIFIED IN AC TAC1\r
+\r
+INTERNAL CTEXT, CTEXT1\r
+\r
+T=BUFPNT           ;TEMPORARY ACS\r
+T1=BUFWRD\r
+T2=UUO\r
+\r
+CTEXT1:          MOVEI TAC1, 0         ;CHECK PREVIOUS BREAK CHAR.\r
+         LDB T, TAC\r
+         CAIN T, 15            ;RETURN IF CR.\r
+         POPJ PDP,\r
+\r
+CTEXT:   PUSHJ PDP, SKIPS              ;SKIP LEADING SPACES, TABS\r
+         MOVE T,[POINT 6,TAC1]\r
+         MOVEI TAC1, 0\r
+         LDB T1, TAC\r
+         JRST CTEX1\r
+CTEX0:   ILDB T1,TAC\r
+CTEX1:   PUSHJ PDP, CTEX               ;IS IT ALPHANUMERIC\r
+         POPJ PDP,                     ;NO. EXIT\r
+         TRC T1,40                     ;CONVERT TO SIXBIT\r
+         IDPB T1,T                     ;YES, STORE AWAY\r
+         CAME T,[POINT 6,TAC1,35]      ;SIX CHARACTER YET\r
+         JRST CTEX0                    ;NO\r
+CTEX2:   ILDB T1, TAC                  ;YES\r
+         PUSHJ PDP, CTEX               ;IS IT ALPHANUMERIC\r
+         POPJ PDP,                     ;NO, EXIT\r
+         JRST CTEX2\r
+\r
+;SCAN FOR ALPHANUMERIC CHAR IN T1\r
+CTEX:    CAIL T1, "0"\r
+         CAILE T1, "Z"         ;LETTERS ARE LARGER THAN NOS.\r
+         POPJ PDP,           ;NEITHER\r
+         CAILE T1, "9"\r
+         CAIL T1, "A"\r
+         AOS (PDP)           ;LETTER OR NUMBER\r
+         POPJ PDP,\r
+\f\r
+;ROUTINE TO IGNORE LEADING SPACES AND TABS\r
+;CALL:   MOVE TAC, BYTE POINTER TO CHAR.\r
+;        PUSHJ PDP, SKIPS1\r
+\r
+INTERNAL SKIPS1\r
+\r
+SKIPS1:          LDB T, TAC\r
+         JRST SKIPSA\r
+\r
+;ROUTINE TO IGNORE LEDING SPACES AND TABS \r
+;CALL:   MOVE TAC, BYTE POINTER TO CHAR.-1\r
+;        PUSHJ PDP, SKIPS\r
+\r
+INTERNAL SKIPS\r
+\r
+SKIPS:   ILDB T, TAC\r
+SKIPSA:          CAIE T, " "\r
+         CAIN T, 11\r
+         JRST SKIPS\r
+         POPJ PDP,\r
+\f\r
+;ROUTINE TO APPEND A "?" TO INPUT STRING AND SET AS OUTPUT\r
+;CALL:   MOVE TAC, BYTE POINTER TO LAST CHAR. IN INPUT STRING\r
+;        PUSHJ PDP, COMERA\r
+\r
+INTERNAL COMERA\r
+\r
+COMERA:          IBP TAC\r
\r
+;ROUTINE TO REPLACE LAST CHARACTER IN INPUT STRING BY "?"\r
+;AND SET AS OUTPUT\r
+;CALL:   MOVE TAC, BYTE POINTER TO LAST CHAR. IN INPUT STRING\r
+;        PUSHJ PDP, COMERR\r
+\r
+INTERNAL COMERR\r
+\r
+EXTERNAL TTYBUF\r
+\r
+COMERR:          MOVE DAT,TAC\r
+         MOVEI T,TTYBUF(DEVDAT)        ;IS THERE MORE THAN 3 WORDS I\r
+         CAIGE T,-3(DAT)\r
+         HRRI DAT,3(T)         ;YES, TYPE ONLY 3\r
+         MOVEI T, "?"            ;APPEND "?"\r
+         DPB T, DAT\r
+         JSP TAC,CONMES\r
+\r
+         ASCIZ / MONITOR COMMAND ERROR\r
+/\r
+\f\r
+;ROUTINE TO PRINT CARRIAGE RETURN-LINE-FEED\r
+;CALL:   MOVE DAT,BYTE POINTER TO OUTPUT\r
+;        PUSHJ PDP,CRLF\r
+\r
+INTERNAL CRLF\r
+\r
+CRLF:    MOVEI TAC,[ASCII /\r
+/]\r
+\r
+;ROUTINE TO MOVE ASCII CHAR. STRING TO CONSOLE OUTPUT BUFFER\r
+; CALL:          MOVE DAT, BYTE POINTER TO LAST OUTPUT CHARACTER\r
+;        MOVEI TAC,  ADDRESS OF ASCII MESSAGE`\r
+;        PUSHJ PDP, CONMES\r
+; STRING TERMINATED BY NULL\r
+; CONMES DOES NOT START TTY\r
+\r
+INTERNAL CONMES\r
+\r
+CONMES:          PUSH PDP, TAC1\r
+         HRLI TAC, 440700      ;FORM BYTE POINTER\r
+CON0:    ILDB TAC1, TAC\r
+         JUMPE TAC1, CON1\r
+         IDPB TAC1, DAT\r
+         JRST CON0\r
+CON1:    POP PDP, TAC1\r
+         POPJ PDP,\r
+\r
+;ROUTINE TO PRINT "TO FEW ARGUMENTS"\r
+;CALL:   MOVE DAT,BYTE POINTER\r
+;        PUSHJ PDP,NOTENF\r
+\r
+INTERNAL NOTENF\r
+\r
+NOTENF:          JSP TAC,CONMES\r
+\r
+ASCIZ /TOO FEW ARGUMENTS\r
+/\r
+\f\r
+;ROUTINE TO INITIALIZE A JOB\r
+;CALL:   MOVE ITEM, JOB NUMBER\r
+;        PUSHJ PDP, JOBINI\r
+;        DEVDAT IS SETUP ON RETURN\r
+\r
+INTERNAL JOBINI,JOBZER\r
+EXTERNAL JBTSTS,PJOBN,CORE1,MONJOB,ESTOP,TTYATT\r
+\r
+JOBINI:          JUMPN ITEM,JOB0       ;HAS A JOB NUMBER BEED ASSIGNED?\r
+         PUSHJ PDP,ASSJOB      ;NO, THEN ASSIGN ONE.\r
+         JRST CONMESS          ;NONE LEFT\r
+JOB0:    PUSHJ PDP,TTYATT      ;ATTACH TTY\r
+         JFCL                  ;ALREADY ATTACHED\r
+         MOVSI TAC,JNA         ;CLEAR JOB NO. ASSIGNED BIT\r
+         ANDCAM TAC,JBTSTS(ITEM)         ;TO FORCE MESSAGE\r
+         MOVSI TAC,646471      ;SIXBIT /TTY/\r
+         MOVEM TAC, DEVLOG(DEVDAT)       ;SET LOGICAL NAME\r
+         MOVEI T, ASSCON       ;SET ASSIGNED BY CONSOLE BIT\r
+         IORM T, DEVMOD(DEVDAT)\r
+         PUSHJ PDP, DEASTY     ;DE-ASSIGNED ALL DEVICES EXCEPT TTY\r
+         JUMPE JDAT,CPOPJ      ;DOES JOB ALREDY HAVE CORE?\r
+\r
+;ROUTINE TO RELEASE ALL DEVICES AND FLUSH CORE\r
+;RUN AS MONITOR JOB\r
+;CALL:   SAME AS JOBIN\r
+\r
+EXTERNAL IOKILL\r
+\r
+JOBZER:          HRRI TAC1,JOB1        ;ADDRESS OF SUB. TO RELEASE DEV.\r
+JOBZR1:          HRLI TAC1, ESTOP      ;RETURN ADDRESS AFER IORELS\r
+         JRST MONJOB           ;GO SCHEDULE MONITOR JOB\r
+\r
+JOB1:    PUSHJ PDP,IOKILL      ;KILL ALL IO DEVICES\r
+         MOVEI TAC,0           ;FLUSH ALL CORE\r
+         SOS (PDP)             ;CORE1 WILL SKIP RETURN\r
+         JRST CORE1\r
+\f\r
+;ROUTINE TO KILL CURRENT JOB\r
+;CALL  PUSHJ PDP,JOBKIL\r
+\r
+INTERNAL JOBKIL\r
+EXTERNAL JBTSTS,TTYKIL\r
+\r
+JOBKIL:          AOS (PDP)             ;SUPRESS CR-LF AND JOB INIT. CHECK\r
+         MOVEI TAC,1\r
+         PUSHJ PDP,DEASAL      ;DEASSIGN ALL DEVICES\r
+         JUMPE JDAT,JOBKA      ;DOES JOB HAVE CORE?\r
+         HRRI TAC1,JOBK2       ;YES,RELEAS DEVICE AND CLEAR\r
+         JRST JOBZR1\r
+\r
+JOBK2:   PUSH PDP,DEVDAT       ;SAVE DEVDAT FOR TTYKIL\r
+         PUSHJ PDP,JOB1        ;FLUSH CORE AND RELEASE DEVICES\r
+         POP PDP,DEVDAT\r
+JOBKA:   MOVSI TAC,JERR        ;CLEAR ALL BUT JOB ERROR BIT\r
+         MOVEM TAC,JBTSTS(ITEM)          ;IN JOB STATUS WORD\r
+         JRST TTYKIL           ;RETURN TTY TO VIRGIN STATE\r
+\r
+;ROUTINE TO ASSIGN AN UNUSED JOB NUMBER\r
+;CALL    PUSHJ PDP,ASSJOB\r
+;        ERROR RETURN       TAC DESTROYED\r
+;        OK RETURN       ITEM SET, TAC AND TAC1 PRESERVED\r
+\r
+INTERNAL ASSJOB\r
+EXTERNAL MJOBN,JBTSTS,CPOPJ1\r
+\r
+ASSJOB:          MOVSI ITEM,MJOBN\r
+         AOBJN ITEM,.+1\r
+         MOVSI T1,JNA\r
+         TDNE T1,JBTSTS(ITEM)\r
+         AOBJN ITEM,.-1\r
+         JUMPGE ITEM,ASSJB1\r
+         ANDI ITEM,-1\r
+         JRST CPOPJ1\r
+\r
+ASSJB1:          JSP TAC,CONMES\r
+         ASCIZ /JOB CAPACITY EXCEEDED\r
+/\r
+\f\r
+;ROUTINE TO DEASSIGN A DEVICE \r
+;CALL:   MOVE DEVDAT, DEVICE DATA BLOCK\r
+;        MOVE ITEM, JOB NUMBER\r
+;        PUSHJ DPD, DEASG\r
+;        ERROR NOT PREVIOUSLY ASSIGNED\r
+;        OK RETURN WITH DEVICE DEASSIGNED\r
+\r
+INTERNAL DEASG\r
+EXTERNAL PJOBN, CPOPJ1\r
+\r
+DEASG:   LDB T, PJOBN          ;WAS DEVICE ASSIGNED TO THIS JOB?\r
+         CAME T, ITEM\r
+         POPJ PDP,             ;NO. RETURN\r
+         MOVSI T,DVDIRIN       ;CLEAR DIRECTORY IN CORE BIT\r
+         ANDCAM T,DEVMOD(DEVDAT)\r
+         MOVEI T, ASSCON       ;YES, IS ASSIGNED BY CONSOLE BIT ON?\r
+         TDNN T, DEVMOD(DEVDAT)\r
+         POPJ PDP,             ;NO\r
+         ANDCAB T,DEVMOD(DEVDAT)        ;YES, CLEAR BIT\r
+         SETZM DEVLOG(DEVDAT)           ;CLEAR LOGICAL NAME\r
+         TRNE T, ASSPRG        ;IS ASSIGNED BY PROGRAM BIT ON?\r
+         JRST CPOPJ1           ;YES\r
+         MOVEI T,0             ;NO, CLEAR JOB NUMBER\r
+         DPB T, PJOBN\r
+         JRST CPOPJ1\r
+\r
+;ROUTINE TO DEASSIGN ALL DEVICES EXCEPT LOGICAL TTY\r
+;CALL:   MOVE ITEM, JOB NUMBER \r
+;        PUSHJ PDP, DEASTY\r
+\r
+INTERNAL DEASTY\r
+\r
+DEASTY:          MOVSI TAC, 646471     ;SIXBIT /TTY/\r
+                               ;FALL INTO DEASAL\r
+\r
+;ROUTINE TO DEASSIGN ALL DEVICES EXECPT ONE\r
+;CALL:   MOVE ITEM, JOB NUMBER\r
+;        MOVE TAC, LOGICAL DEVICE NOT TO BE DEASSIGNED\r
+;        PUSHJ PDP, DEASAL\r
+\r
+INTERNAL DEASAL\r
+EXTERNAL DEVLST\r
+\r
+DEASAL:          PUSH PDP,DEVDAT\r
+         HLRZ DEVDAT,DEVLST    ;SEARCH ALL DDBS\r
+DEA1:    CAME TAC, DEVLOG(DEVDAT)        ;IS THIS THE LOGICAL NAME\r
+         PUSHJ PDP, DEASG      ;NO, TRY TO DEASSIGN IT\r
+         JFCL                  ;IGNORE IF CANT\r
+         HLRZ DEVDAT, DEVSER(DEVDAT)\r
+         JUMPN DEVDAT, DEA1\r
+         POP PDP,DEVDAT\r
+         POPJ PDP,\r
+\f\r
+;ROUTINE TO READ CONSOLE AND CONVERT ANY RADIX NUMBER\r
+; CALL:          MOVE TAC1,  DESIRED RADIX\r
+;        MOVE TAC,  BYTE POINTER TO FIRST CHRACTER\r
+;        PUSHJ PDP, ANYRIN\r
+;        ERROR EXIT            ;AC TAC1=0 IF NO NUMBER BEFORE FIRST NO\r
+;        NORMAL EXIT           ;AC TAC1 CONTAINS NUMEBR\r
+; SCAN STOPS ON FIRST ILLEGAL CHARACTER OR CR\r
+; IGNORES SPACES, TABS, RUBOUTS\r
+\r
+INTERNAL OCTIN,ANYRIN,DECIN,DECIN1\r
+EXTERNAL CPOPJ1, CPOPJ\r
+\r
+C=BUFPNT  ;CHARACTER AC\r
+R=BUFWRD  ;RADIX AC\r
+\r
+DECIN1:          IBP TAC       ;SKIP SEPARATION CHARACTER\r
+DECIN:   MOVEI TAC1,12         ;DECIMAL INPUT\r
+         JRST ANYRIN\r
+\r
+OCTIN:   MOVEI TAC1, 10\r
+ANYRIN:          MOVE R, TAC1\r
+         MOVEI TAC1, 0\r
+         PUSHJ PDP, SKIPS1     ;SKIP LEADING SPACES, TABS\r
+         LDB C, TAC\r
+         CAIN C, 15            ;CHECK FOR INITIAL CR\r
+         POPJ PDP,             ;EXIT WITH 0 IN TAC1\r
+OCT0:    CAIE C,"-"   ;DASH?\r
+         CAIN C,15  ;CR?\r
+         JRST CPOPJ1           ;YES, ONLY LEGAL TERMINATORS\r
+         SUBI C,60\r
+         JUMPL C, OCTE         ;ERROR IF NEGATIVE\r
+         CAML C, R             ;OR .GE. RADIX\r
+OCTE:    AOJA TAC1,CPOPJ       ;ERROR,INSURE TAC1 NON-ZERO\r
+         IMUL TAC1, R\r
+         ADD TAC1, C\r
+OCT1:    ILDB C, TAC\r
+         JRST OCT0\r
+\r
+         END,\r
diff --git a/src/comini.mac b/src/comini.mac
new file mode 100644 (file)
index 0000000..67ded48
--- /dev/null
@@ -0,0 +1,155 @@
+       TITLE COMINI - THE COMMAND DECODER\r
+       SUBTTL  T. HASTINGS 8-2-65\r
+;CALLED FROM CLOCK ROUTINE WHEN COMCNT IS GREATER THAN 0\r
+;AS SET BY TTY SERVICE ROUTINE\r
+;ALL ACS HAVE BEEN SAVED BY CLOCK CHANNEL\r
+;THE COMMAND DECODER CALLS TTYCOM WHICH SCANS FOR TTY WHICH TYPED\r
+;THE COMMAND AND THEN DISPATCHES(PUSHJ) TO APPROPRIATE\r
+;COMMAND SETUP ROTUINE OF THE SAME NAME WITH ACS SET AS:\r
+;ITEM = JOB NUMBER\r
+;TAC = BYTE POINTER TO COMMAND STRING(SSPACE OR CR AFTER COMMAND NAME)\r
+;DAT = BYTE POINTER TO LAST OUTPUT CHARACTER\r
+;DEVDAT = ADDRESS OF DEVICE DATA BLOCK TYPING COMMAND\r
+;JDAT = ADDRESS OF JOB AREA, = 0 IF NO JOB AREA\r
+;PROG = ADDRESS OF PROGRAM AREA\r
+;DEVDAT IS ALSO PUSHED ON END OF PD LIST SO IT MAY BE DESTROYED\r
+;UPON RETURN FROM COMMAND SETUP ROUTINE. A CR-LF IS ADDED TO\r
+;MASSAGE AND TTY IS STARTED ON TTY SPCIFIED BY -1(PDP)\r
+\r
+;SINCE THE COMMAND DECODER IS CALLED FROM CLOCK ROUTINE\r
+;COMMAND SETUP ROUTINE MUST RUN TO COMPLETION QUICKLY\r
+;IF A COMMAND FUNCTION CANNON DO THIS. IT MUST JUST SET\r
+;THE JOB TO RUNABLE STATUS AND RETURN IMMEDIATELY\r
+\r
+INTERNAL COMMAND\r
+EXTERNAL TTYCOM,TTYSTR,CTEXT,JBTADR,CONMES\r
+EXTERNAL COMERR,COMCNT\r
+EXTERNAL JOBINI,CRLF,CTEXT,RADX10,ASSJOB,JBTSTS\r
+\r
+T=BUFPNT  ;TEMPORARY ACS\r
+T1=BUFWRD\r
+\f\r
+COMMAND:  PUSHJ PDP, TTYCOM    ;SETUP DEVDAT,DAT,TAC, AND ITEM\r
+         JRST COM2             ;NONE FOUND\r
+         PUSH PDP,DEVDAT       ;SAVE TTY DDB ADDRESS\r
+         PUSHJ PDP, CTEXT      ;RETURN COMMAND NAME IN TAC1\r
+         JUMPE TAC1, COM2A     ;IGNORE BLANK LINE\r
+         MOVSI T, -DISPL       ;SEARCH FOR COMMAND NAME\r
+         CAME TAC1, COMTAB(T)  \r
+         AOBJN T, .-1\r
+         JUMPGE T,COM2B        ;WAS COMMAND FOUND?\r
+         MOVE TAC1,DISP(T)     ;YES, GET DISPATCH ADDRESS AND BITS\r
+         JUMPN ITEM, COM1      ;HAS A JOB NUMBER BEEN ASSIGNED\r
+         TLNE TAC1,NOJOBN      ;NO, IS A JOB NUMBER NEEDED FOR THIS CO\r
+         JRST COM1 ;NO\r
+         PUSHJ PDP,ASSJOB      ;TRY TO ASSIGN A FREE JOB NUMBER\r
+         JRST COM3A            ;NONE AVAILABLE, ERROR MESSAGE\r
+\f\r
+         PUSH PDP, TAC         ;SAVE INPUT BYTE POINTER\r
+         PUSH PDP,TAC1         ;SAVE ADDRESS OF COMMAND ROUTINE\r
+         SETZB PROG,JDAT       ;NO CORE, CLEAR REL. ADRESS\r
+         PUSHJ PDP,JOBINI      ;INITIALIZE JOB\r
+         POP PDP,TAC1          ;RESTORE ADR OF COMMAND ROUTINE\r
+         POP PDP, TAC          ;RESTORE INPUT BYTE POINTER\r
+         MOVEM DEVDAT,(PDP)    ;SET ADDRESS OF TTY DEV. DATA BLOCK\r
+COM1:    HRRZ JDAT, JBTADR(ITEM)       ;AND JOB DATA AREA\r
+         SKIPN PROG,JDAT       ;SET PROG. DOES JOB HAVE CORE?\r
+         TLNE TAC1,NOCORE      ;NO. IS CORE NEEDED FOR THIS COMMAND?\r
+         JRST COM1C            ;NO\r
+         MOVEI TAC,NOCOR       ;YES, PRINT "NO CORE ASSIGNED"\r
+COM1B:   PUSHJ PDP,CONMES\r
+         JRST COM1A\r
+\r
+COM1C:   PUSHJ PDP,(TAC1)      ;DISPATCH TO COMMAND SETUP ROUTINE\r
+COM1A:   JUMPN ITEM, COM3      ;ADD CR-LF AND CHECK FOR JOB INIT.\r
+COM1D:   POP PDP,DEVDAT        ;RESTORE TTY DDB ADDRESS\r
+         PUSHJ PDP, TTYSTR     ;START OUTPUT, IF ANY\r
+COM2:    SOS COMCNT            ;DECREMENT COMMAND COUNT\r
+         POPJ PDP,             ;EXIT\r
+\r
+COM2A:   LDB TAC1, TAC         ;NULL FIELD. WAS BREAK CHAR. A CR?\r
+         CAIE TAC1,15          ;A CR?\r
+         CAIN TAC1,";"           ;OR A SEMI COLON?\r
+         JRST COM1D            ;YES. IGNORE LINE\r
+COM2B:   PUSHJ PDP,COMERR      ;NO. PRINT MONITOR COMMAND ERROR\r
+         JRST COM1D\r
+\r
+NOCOR:   ASCIZ /NO CORE ASSIGNED\r
+/\r
+\r
+COM3:    MOVE TAC,JBTSTS(ITEM)         ;GET STATUS WORD\r
+         TLOE TAC,JNA                  ;IS JOB NO ASSIGNED BIT ON YET\r
+         JRST COM3A                    ;YES, JOB INIT. BEFORE\r
+         MOVEM TAC,JBTSTS(ITEM)\r
+         MOVEI TAC,[ASCIZ /JOB /]\r
+         PUSHJ PDP,CONMES      ;PRINT JOB N INITIALIZED\r
+         MOVE TAC,ITEM\r
+         PUSHJ PDP,RADX10      ;PRINT JOB NUMBER\r
+         MOVEI TAC,JOBM\r
+         PUSHJ PDP,CONMES\r
+COM3A:   PUSHJ PDP,CRLF\r
+         JRST COM1D\r
+\r
+JOBM:    ASCIZ / INITIALIZED\r
+/\r
+\f\r
+;TABLE OF CONSOLE COMMANDS.\r
+\r
+NOCORE=400000          ;NO CORE NEEDED FOR COMMAND\r
+NOJOBN=200000          ;NO JOB NUMBER NEEDED FOR COMMAND\r
+\r
+DEFINE NAMES\r
+<REPEAT 0,<\r
+ C G,COMERR,0\r
+>\r
+ C CORE,CORE,NOCORE\r
+ C GET,GET,0\r
+ C START,START,0\r
+ C IJOB,IJOB,NOCORE+NOJOBN\r
+ C PJOB,PJOB,NOCORE\r
+ C KJOB,KJOB,NOCORE\r
+ C SAVE,SAVE,0\r
+REPEAT 0,<\r
+ C RESAVE,COMERR,0\r
+>\r
+ C CONT,CONT,0\r
+ C DDT,DDTGO,0\r
+ C ASSIGN,ASSIGN,NOCORE\r
+ C DEASSI,DEASSIGN,NOCORE\r
+ C STARTC,STARTC,0\r
+ C CONTC,CONTC,0\r
+ C DETACH,DETACH,NOCORE+NOJOBN\r
+ C ATTACH,ATTACH,NOCORE+NOJOBN\r
+REPEAT 0,<\r
+ C MTAPE,COMERR,0\r
+ C DAYTIM,COMERR,NOCORE\r
+ C RUNTIM,COMERR,NOCORE\r
+ C TOTTIM,COMERR,NOCORE\r
+ C NULTIM,COMERR,NOCRE\r
+ C SYSDDT,COMERR,NOCORE\r
+ C SYSMAK,SYSMAK,0\r
+>\r
+ C DIGITAL,DIGITAL,NOCORE+NOJOBN\r
+>\r
+\f\r
+;GENERATE TABLE OF SIXBIT COMMAND NAMES\r
+\r
+DEFINE C(A,B,C)\r
+<        ZZ=.+1\r
+ SIXBIT /A/\r
+ IFN .-ZZ,<RELOC ZZ> ;ONLY FIRST 6 CHARACTERS\r
+>\r
+\r
+COMTAB:          NAMES\r
+DISPL=.-COMTAB         ;LENTH OF TABLE\r
+\f\r
+;GENERATE THE DISPATCH TABLE\r
+\r
+DEFINE C(A,B,C)\r
+<        XWD C,B\r
+EXTERNAL B\r
+>\r
+\r
+DISP:    NAMES\r
+\r
+         END,\r
diff --git a/src/conall.ccl b/src/conall.ccl
new file mode 100644 (file)
index 0000000..ca60a47
--- /dev/null
@@ -0,0 +1,28 @@
+CDRSER,CDRSER_S,CDRSER\r
+CLKCSS,CLKCSS_S,CLKCSS\r
+CLOCK,CLOCK_S,CLOCK\r
+COMCON,COMCON_S,COMCON\r
+COMCSS,COMCSS_S,COMCSS\r
+COMINI,COMINI_S,COMINI\r
+CORE,CORE_S,CORE\r
+DTSER2,DTSER2_S,DTSER2\r
+ERRCON,ERRCON_S,ERRCON\r
+IOCONT,IOCONT_S,IOCONT\r
+IOCSS,IOCSS_S,IOCSS\r
+IOINI1,IOINI1_S,IOINI,IOMIN,IOINI1\r
+IOINI2,IOINI2_S,IOINI,IOMIN,IOINI2\r
+IOINI3,IOINI3_S,IOINI,IOMAX,IOINI1\r
+IOINI4,IOINI4_S,IOINI,IOMAX,IOINI2\r
+JOBDAT,JOBDAT_JOBDAT\r
+LPTSER,LPTSER_S,LPTSER\r
+MTPSER,MTPSER_S,MTPSER\r
+ONCE,ONCE_S,ONCE\r
+PTRSER,PTRSER_S,PTRSER\r
+PTPSER,PTPSER_S,PTPSER\r
+RUNCSS,RUNCSS_S,RUNCSS\r
+SAVGET,SAVGET_S,SAVGET\r
+SCNSER,SCNSER_S,SCNSER\r
+SYSCON,SYSCON_S,SYSCON\r
+SYSCSS,SYSCSS_S,SYSCSS\r
+SYSINI,SYSINI_S,SYSINI\r
+SYSMAK,SYSMAK_S,SYSMAK\r
diff --git a/src/conseq.ccl b/src/conseq.ccl
new file mode 100644 (file)
index 0000000..1188fd1
--- /dev/null
@@ -0,0 +1,36 @@
+cdrser.max=cdrser.mac/s
+clkcss.max=clkcss.mac/s
+clock.max=clock.mac/s
+comcon.max=comcon.mac/s
+comcss.max=comcss.mac/s
+comini.max=comini.mac/s
+core.max=core.mac/s
+dtser2.max=dtser2.mac/s
+eddt.max=eddt.mac/s
+editor.max=editor.mac/s
+errcon.max=errcon.mac/s
+fudge2.max=fudge2.mac/s
+iocont.max=iocont.mac/s
+iocss.max=iocss.mac/s
+ioini1.max=ioini1.mac/s
+ioini2.max=ioini2.mac/s
+ioini.max=ioini.mac/s
+iomax.max=iomax.mac/s
+iomin.max=iomin.mac/s
+jobdat.max=jobdat.mac/s
+lptser.max=lptser.mac/s
+mtpser.max=mtpser.mac/s
+once.max=once.mac/s
+pip.max=pip.mac/s
+ptpser.max=ptpser.mac/s
+ptrser.max=ptrser.mac/s
+rim10b.max=rim10b.mac/s
+runcss.max=runcss.mac/s
+savget.max=savget.mac/s
+scnser.max=scnser.mac/s
+s.max=s.mac/s
+syscon.max=syscon.mac/s
+syscss.max=syscss.mac/s
+sysini.max=sysini.mac/s
+sysmak.max=sysmak.mac/s
+tendmp.max=tendmp.mac/s
diff --git a/src/core.mac b/src/core.mac
new file mode 100644 (file)
index 0000000..5e143e2
--- /dev/null
@@ -0,0 +1,102 @@
+TITLE CORE - CORE ALLOCATION ROUTINE\r
+       SUBTTL G. BELL 6-29-65\r
+;        PUSHJ PDP, CORE1      ;ITEM = JOB #. TAC = 1K CORE BLOCKS\r
+                               ;REQUESTED\r
+;        RET1                  ;OLD CORE RETURNED.\r
+;        RET2                  ;OLD CORE RETURNED.   JBTADR, JOBREL ARE\r
+                               ;SET UP\r
+; JBADR (ITEM) = POINTER TO JOB AREA. JOBREL (JBTADR) = HIGHEST LOCAT\r
+; C(RH) JBTADR IS SET OT 0 OR REQUESTED CORE. JOBREL IS SET IF CORE G\r
+; NOT A PURE PROCEDURE ...\r
+;CORTAL:  0                            ;COUNT OF FREE CORE\r
+;CORTAB:  BLOCK ^D3                    ;TABLE OF 72 BITS. 1 BIT FOR\r
+;1K OF CORE. 1 = USED. 0 = FREE\r
+;CORLST:  POINT 1, CORTAB, 32          ;POINTER FIRST OUT OF BOUNDS\r
+;\r
+;TEMPORARY USAGE\r
+CORUSZ:          0                             ;SIZE OF USERS CODE, OLD.-NEW\r
+CORLOC:          0                             ;POSITION OF 1ST FREE BLOCK\r
+;\r
+;AC ASSIGNMENTS\r
+COR1=BUFPNT\r
+COR2=BUFWRD\r
+COR3=UUO\r
+INTERNAL CORE1\r
+EXTERNAL JBTADR,JOBREL,CORLST,CORTAL,CORTAB\r
+\f\r
+CORE1:   LDB COR1, CORE1P      \r
+         MOVEM COR1, CORLOC\r
+         JUMPE COR1, CORGET            ;IF 0 NO CORE NOEW.\r
+         HLRZ COR1, JBTADR(ITEM)       ;CLEAR OLD CORE\r
+         AOS COR1                      ;HIGHEST ADDRESS AVAIL. FORM\r
+         ASH COR1, -^D10\r
+         MOVEM COR1, CORUSZ\r
+CORRET:          CLEARM COR3                   ;RETURN OLD CORE\r
+         PUSHJ PDP, CORSTG\r
+CORGET:   SETZM JBTADR(ITEM)   ;CLEAR JOB ADDRESS TO 0\r
+         JUMPE TAC, COROK              ;IF NO CORE TO GET, RETURN\r
+         MOVE COR3, CORE2P     ;SET UP FOR\r
+         SETOM CORLOC                  ;HOLE SEARCH\r
+CORG1:   PUSHJ PDP, CORHOL\r
+         JRST CORNG                    ;UNSUCCESSFUL SEARCH\r
+         CAMGE COR1, TAC               ;HOLE FOUND\r
+         JRST CORG1\r
+CORGVE:          MOVNS COR1                    ;BACKUP CORLOC\r
+         ADDM COR1, CORLOC\r
+         MOVEM TAC, CORUSZ             ;RESERVE HOLD FOR JOB\r
+         MOVEI COR3, 1                 ;SET CORTAB\r
+         PUSHJ PDP, CORSTG\r
+         MOVE COR1, CORLOC             ;C(RH)=RELOC, C(LH)=PROTECT\r
+         ASH COR1, ^D10\r
+         HRRM COR1, JBTADR(ITEM)\r
+         ASH TAC, ^D10\r
+         SUBI TAC, 1\r
+         HRRM TAC, JOBREL (COR1)\r
+         HRLM TAC,JBTADR(ITEM)\r
+COROK:   AOS (PDP)\r
+CORNG:   MOVE TAC, CORTAL\r
+         POPJ PDP,\r
+\r
+CORE1P:          POINT 8, JBTADRR(ITEM),25\r
+CORE2P:          POINT 1, CORTAB\r
+\f\r
+;        PUSHJ PDP, CORHOL     ;COR1-HOLES FREE, COR2=TEMP\r
+;        RETURN1               ;COR3=POINTER. RETURN1=END OF STRING RE\r
+;        RETURN2               ;HOLE FOUND.\r
+; CORLOC CONTAINS 0,1.. N, THE CORE BLK PTR. CORLST IS PTR TO\r
+; STOP STRING TEST\r
+CORHOL:          CLEARM COR1\r
+CORH01:          CAMN COR3, CORLST             ;TEST DONE\r
+         POPJ PDP,\r
+         ILDB COR2, COR3               ;TEST NEXT BLOCK\r
+         AOS CORLOC\r
+         SKIPN COR2\r
+         AOJA COR1, CORH01             ;COUNT FREE\r
+         JUMPE COR1, CORH01\r
+         AOS (PDP)\r
+         POPJ PDP,\r
+;;       PUSHJ PDP, CORSTG     ;CORUSZ=SIZE RESERVED. CORLOC=LOCATION\r
+; IF COR3=0, THEN FREE CORE\r
+; IF COR3=1, THEN RESERVE CORE.\r
+; USES COR1, COR2, COR3\r
+; CORTAL=COUNT OF FREE CORE. AND IS UPDATED\r
+CORSTG:          PUSH PDP, TAC                 ;SAVE NO. OF BLOCKS BEING REQ\r
+         MOVE COR2,CORUSZ              ;FIX CORTALLY\r
+         SKIPE COR3\r
+         MOVNS COR2\r
+         ADDM COR2, CORTAL\r
+         MOVE TAC, CORLOC              ;GET POINTER-1\r
+         IDIVI TAC, ^D36               ;TAC=WORD,TAC1=BIT\r
+         ADD TAC, CORLP1       ;FORM BYTE POINTER\r
+         MOVNS TAC1\r
+         ADDI TAC1, ^D36\r
+         DPB TAC1, [POINT 6, TAC, 5]\r
+         MOVE COR2, CORUSZ\r
+CORLOP:          DPBI COR3, TAC                ;SET OR CLEAR EACH BIT IN USE\r
+         SOJG COR2, CORLOP\r
+         POP PDP, TAC\r
+         POPJ PDP,\r
+\r
+CORLP1:          XWD 100, CORTAB\r
+\r
+         END,\r
diff --git a/src/dtser2.mac b/src/dtser2.mac
new file mode 100644 (file)
index 0000000..7264fb4
--- /dev/null
@@ -0,0 +1,891 @@
+TITLE DTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING\r
+SUBTTL         L. HANTMANN 8-2-65 MULTIPLE DIRECTORIES VERSION\r
+       DTSIZ=1\r
+\r
+;SUBROUTINE FOR DIRECTORY SEARCH\r
+;PROG CONTAINS ACTUAL START OF PROGRAM\r
+;DEVDAT CONTAINS ACTUAL START OF DVDB\r
+;UUO CONTAINS RELATIVE ADDRESS OF DIRECTORY ENTRY IN USER AREA\r
+;FORMAT          PUSHJ PDP, UDIRSH\r
+;        JRST X                ;RETURN IF EMPTY ENTRY FOUND\r
+;        NORMAL RETURN WHEN ENTRY IS FOUND\r
+INTERNAL ULOOK, UENTER\r
+EXTERNAL UXIT,PUUOAC,IOIERR,DIRERR,ADRCK,CPOPJ1,THSDAT\r
+         UDIRLN=4\r
+         UDIRIN=100            ;DIRECTORY IN\r
+         UDIREN=200            ;DIRECTORY ENTERED INTO\r
+         UNWFRE=400            ;FREE BLCOK POINTER CHANGED\r
+         ULINKF=1000           ;LAST OUTPUT BLOCK LINKED TO STORAGE\r
+         UX1=TAC\r
+         UX2=TAC1\r
+         UX3=DAT\r
+UDIRSH:          TRNE UUO,777760       ;IS BLOCK IN UUO ACS?\r
+         PUSHJ PDP,ADRCK       ;NO. CHECK ADDRESS\r
+         MOVEI  TAC,3(UUO)\r
+         TLNE IOS,IOBEG\r
+         PUSHJ PDP, UBEG\r
+         HRRZ UX1, PROG                ;COPY ADR OF START OF PROGRAM\r
+         ADDM UX1, UUO                 ;ACTUAL START OF DIR. IN USER\r
+         MOVEI UX1,@UDIR(DEVDAT)       ;ACTUAL POINTER TO DIRECTORY\r
+         HRRZ UX2, 0(UX1)              ;RELATIVE ADDR OF 1ST ENTRY I\r
+                                       ;DIRECTORY\r
+         HRLI UX1, -^D129+UDIRLN(UX2)  ;ENTRY COUNTER\r
+         ADDM UX2, UX1                 ;START OF 1ST ENTRY IN DIRECT\r
+         SKIPE UX2\r
+         CAILE UX2,174         ;IS THE REL ADR OF 1ST ENTRY INSIDE BUF\r
+         JRST DIRERR           ;NO\r
+UDIR2:   SKIPN UX2, 0 (UX1)            ;FIRST WORD OF ENTRY\r
+         POPJ PDP,                     ;SPACES FOUND\r
+         CAMN UX2, 0(UUO)              ;CHECK IF = TO USER AREA\r
+         JRST UDIR4                    ;CHECK 2ND WORD\r
+UDIR3:   ADD UX1, UDIRK1       \r
+         JUMPL UX1, UDIR2\r
+         POP PDP, UX1                  ;TAKE PREVIOUS EXIT FROM TABL\r
+         JRST UXIT                     ;TABLE FULL\r
+UDIR4:   HLRZ UX2, 1 (UUO)             ;2ND WORD IN USER ARE\r
+         JUMPE UX2, CPOPJ1\r
+         HLRZ UX3, 1 (UX1)             ;2ND WORD OF DIRECTORY AREA\r
+         CAIE UX3, 0 (UX2)\r
+         JRST UDIR3                    ;CHECK MORE ENTRIES\r
+         JRST CPOPJ1           ;MATCH, SKIP RETURN\r
+\r
+UDIRK1:   XWD UDIRLN, UDIRLN\r
+\f\r
+;SUBROUTINE FOR DIRECTORY LOOKUP\r
+\r
+;FORMAT          PUSHJ PDP, UDIRLU             ;VIA UUO\r
+;        JRST X                        ;ENTRY NOT IN TABLE\r
+\r
+ULOOK:   PUSHJ PDP, UDIRSH\r
+         JRST UXIT\r
+         HRR UX3, 1 (UX1)\r
+         HRLM UX3, DEVIAD (DEVDAT)\r
+ULOOK1:          HRLI UX2, 0 (UX1)             ;FROM DIRECTORY\r
+         HRRI UX2, 0 (UUO)             ;TO USER\r
+         BLT UX2, UDIRLN-1(UUO)\r
+         LDB UX2,[POINT 12,2(UX1),35]  ;GET DATE USER(ENTER)EXEC(LOO\r
+         JUMPN UX2,.+3         ;IS IT 0?\r
+         MOVE UX2,THSDAT       ;YES, USE CURRENT DATE\r
+         DPB UX2,[POINT 12,2(UUO),35]  ;SET EXEC\r
+         AOS (PDP)\r
+         JRST UTWDR\r
+\r
+;SUBROUTINE TO ENTER NEW OR CHANGE OLD DIRECTORY ENTRY\r
+;FORMAT   PUSHJ PDP, UDIRCH\r
+;        JRST X                        ;NO ROOM IN TABLE\r
+\r
+UENTER:          PUSHJ PDP, UDIRSH\r
+         JRST .+1\r
+         AOS UX3, UFREE (DEVDAT)\r
+         HRRM UX3,1(UUO)\r
+         HRLM UX3, DEVOAD (DEVDAT)\r
+         EXCH UX1, UUO\r
+         TLO IOS, UDIREN+UNWFRE+ULINKF\r
+         MOVEM IOS, DEVIOS(DEVDAT)\r
+         JRST ULOOK1\r
+\f\r
+;CREATE A CLEAN TAPE AND DIRECTORY\r
+\r
+INTERNAL UTPCLR\r
+EXTERNAL USRJDA\r
+\r
+UTPCLR:          LDB TAC,PUUOAC\r
+         MOVE DEVDAT,USRJDA(TAC)\r
+         JUMPE DEVDAT,IOIERR\r
+         HLRZ TAC,DEVNAM(DEVDAT)\r
+         CAIE TAC,446441\r
+         JRST UXIT             ;NOT DTA\r
+         MOVE IOS,DEVIOS(DEVDAT)\r
+         TLZ IOS,IOBEG\r
+         TLO IOS,UDIRIN+UDIREN+UNWFRE\r
+IFE DTSIZ,<       MOVEM DEVDAT,DIREC>\r
+;THIS FOR SINGLE DIRECTORY ONLY\r
+         MOVE TAC,UDIR(DEVDAT)\r
+         MOVE TAC1,[XWD 1,5]\r
+         MOVEM TAC1,(TAC)\r
+         HRLS TAC\r
+         AOBJN TAC,.+1\r
+         SETZM (TAC)\r
+         MOVE TAC1,TAC\r
+         AOS TAC\r
+         BLT TAC,176(TAC1)\r
+         MOVEI TAC, 1\r
+         MOVEM TAC, UFREE (DEVDAT)\r
+         MOVEM IOS, DEVIOS(DEVDAT)\r
+         PUSHJ PDP,UTPREL\r
+         JRST UXIT\r
+\r
+\r
+;END OF DTDR\r
+\f\r
+SUBTTL L. HANTMAN PART 1 7-13-65\r
+         UREV=10000            ;DT REVERSE BIT\r
+         DTSIZ=1               ;1 FOR ONE BUFFER PER TAPE UNIT\r
+\r
+         UBLK=1                ;NUMBER OF BLOCKS/BLOCK\r
+         UCHN=1                ;CHANNEL OF DATA CONTROL = 1, LOC 42\r
+         UCHA=42               ;DATA CONTROL INTERRUPT POSITION\r
+         EXTERNAL UXIT,ADVBFF,ADVBFE,IOSET,OUT,WAIT1,WSYNC\r
+         EXTERNAL PIOMOD,PUNIT,UFREE,UDIR,ADRERR,JOBPFI\r
+         ENTRY UTDSP\r
+\r
+DACI=4010                      ;DC INPUT DT\r
+DACO=3410                      ;DC OUTPUT DT\r
+SL=220000                      ;DT TURN ON. SELECT\r
+       DTR=3000                        ;DT TURN AROUND DELAY\r
+DT=2000                                ;DT START/STOP DELAY\r
+RD=300                         ;DT RD\r
+WD=700                         ;DT WR\r
+RB=200                         ;DT READ BLOCK NOS.\r
+VEOT=2                         ;EOT FLAG BIT\r
+GR=10000                       ;DT REVERSE BIT\r
+JDE=40000                      ;JOB DONE ENABLE\r
+EE=100000                      ;ENABLE END FLAG\r
+URDIR=2000                     ;READING DIRECTORY\r
+\r
+UTDSP:   JRST UTPREL           ;RELEASE\r
+         JRST UTPCLS           ;CLOSE\r
+         JRST UOUT             ;OUTPUT\r
+         JRST UIN              ;INPUT\r
+         JRST UENTER           ;ENTER IN DIRECTORY\r
+         JRST ULOOK            ;LOOKUP IN DIRECTORY\r
+         JRST UDMPO            ;DUMPOUT\r
+         JRST UDMPI            ;DUMPIN\r
+         JRST SETO             ;SET OUTPUT BLOCK NO.\r
+         JRST SETI             ;SET INPUT BLOCK NO.\r
+         JRST GETF             ;GET FREE BLOCK\r
+\f\r
+UOUT:    PUSHJ PDP, UINTER             ;CHECK INTERLOCK\r
+         TLO IOS, IO                   ;WRITING\r
+         HRRZ TAC,DEVOAD(DEVDAT)\r
+         ADD TAC, PROG                 ;ACTUAL BUFFER ADDRESS\r
+         HLRZ TAC1, DEVOAD(DEVDAT)     ;BLOCK TO WRITE\r
+         CAIN TAC1,1\r
+         JRST UOUT4                    ;COPY DIRECTORY\r
+         HLRZ TAC1, 1(TAC)             ;BLOCK TIE\r
+         TLZ IOS, ULINKF               ;NOT LINKED TO FREE STORAGE\r
+         JUMPN TAC1, UOUT1             ;USE BALOCK NUMBER INDICATED\r
+         TLZE IOS, IOBEG               ;GET FREE STORAGE BLOCK\r
+         PUSHJ PDP, UBEG3\r
+         TLO IOS,UNWFRE+ULINKF         ;LINKED TO FREE STORAGE\r
+         MOVEM IOS, DEVIOS (DEVDAT)\r
+         AOS TAC1,UFREE(DEVDAT)        ;NEXT FREE BLOCK\r
+UOUT1:   CAIN TAC1,1                   ;IF 1, THIS IS LAST BLOCK\r
+         SETZ TAC1,                    ;LAST BLOCK TIE = 0\r
+         HRLM TAC1,1(TAC)              ;BLOCK\r
+         HRRZM TAC,UBUF                ;ACTUAL LOCATION OF DATA\r
+         HLR TAC,DEVOAD(DEVDAT)\r
+         HRLM TAC1, DEVOAD(DEVDAT)     ;NEXT BLOCK\r
+         JRST USETW\r
+;RETURN FROM WRITING 1 BLOCK\r
+\r
+UOUT2:   MOVE TAC,DEVOAD(DEVDAT)\r
+         HRLI TAC,PROG                 ;PROG, BUFFER ADDRESS\r
+         HRLZI TAC1,IOUSE\r
+         ANDCAM TAC1,@TAC              ;SET USE BIT IN BUFFER\r
+         HLRZ TAC1,DEVOAD(DEVDAT)      ;BLOCK TIE\r
+         JUMPE TAC1,UOUT3              ;WAS BLOCK WRITTEN THE LAST 0\r
+         HRR TAC,@TAC                  ;PROG, NEXT BUFFER ADDRESS\r
+         HRRM TAC,DEVOAD(DEVDAT)       ;NEXT BUFFER\r
+         TRNE IOS, IOCON               ;CONTINUOUS?\r
+         JRST UOUT3                    ;STOP TAPE AND DISMISS\r
+         SKIPGE @TAC                   ;IS NEXT BUFFER EMPTY?\r
+         JRST UOUT+1                   ;PROCESS NEXT BLOCK\r
+UOUT3:   POP PDP, TAC                  ;REDUCE TABLE\r
+         JRST DTC1                     ;STOP TAPE AND DISMISS\r
+\f\r
+;COPY DIRECTORY WHEN WRITING BLOCK 1\r
+UOUT4:   HRLI TAC1,1(TAC)              ;BUFFER ADDRESS, FROM\r
+         HRR TAC1, UDIR(DEVDAT)        ;DIRECTORY ADDRESS, TO\r
+         HRRZ TAC, UDIR(DEVDAT)        ;DIRECTORY ADDRESS\r
+         BLT TAC1, 177(TAC)            ;MORE BUFFER AREA TO DIRECTORY\r
+         TLO IOS, UDIRIN+UDIREN        ;SET DIRECTORY BITS\r
+         MOVE TAC1, @UDIR(DEVDAT)      ;NEXT FREE BLOCK IN DIRECTORY\r
+         HLRZM TAC1,UFREE(DEVDAT)      ;PLACE IN DATA BLOCK\r
+         HRLZI TAC1, IOUSE\r
+         ANDCAB TAC1, 0(TAC)           ;CLEAR USE BIT\r
+         HRRM TAC1, DEVOAD(DEVDAT)     ;ADVANCE BUFFER POINTER\r
+         JRST UEND2\r
+,INPUT- NON DUMP\r
+\r
+UIN:     PUSHJ PDP, UINTER             ;CHECK INTERLOCK\r
+         TLZ IOS, IO                   ;READING\r
+         HRRZ TAC,DEVIAD(DEVDAT)       ;UBUF:=TAC:=DEVIAD+PROG\r
+         ADD TAC,PROG\r
+         HLRZ TAC1, DEVIAD(DEVDAT)     ;BLOCK TO READ\r
+         CAIN TAC1, 1                  ;TRYING TO READ DIRECTORY?\r
+         JRST UIN2                     ;COPY DIRECTORY\r
+         HRRZM TAC,UBUF\r
+         HLRZ TAC,DEVIAD(DEVDAT)       ;TAC:=C(DEVIAD LH)\r
+         JUMPE TAC,UEND                ;NEXT BLOCK=00, THEN END OF FI\r
+         JRST USETR\r
+;RETURN FROM READING ONE BLOCK\r
+\r
+UIN1:    HRRZ TAC,DEVIAD(DEVDAT)\r
+         ADD TAC,PROG\r
+         HLRZ TAC1,1(TAC)\r
+         HLRM TAC1,DEVIAD(DEVDAT)      ;NEXT BLOCK NUMBER TO READ\r
+         MOVE TAC,DEVIAD(DEVDAT)\r
+         HRLI TAC,PROG\r
+         HRLZI TAC1,IOUSE\r
+         IORM TAC1,@TAC                ;SET USE BIT\r
+         HRR TAC,@TAC\r
+         HRRM TAC,DEVIAD(DEVDAT)       ;NEXT BUFFER ADDRESS\r
+         TRNE IOS, IOCON               ;CONTINUOUS?\r
+         JRST UOUT3                    ;EXIT\r
+         SKIPL @TAC                    ;IS NEXT BUFFER FULL\r
+         JRST UIN+1                    ;PROCESS NEXT BLOCK\r
+         JRST UOUT3                    ;EXIT\r
+\r
+UEND:    TLO IOS, IOEND\r
+         MOVEM IOS, DEVIOS(DEVDAT)\r
+         CONSZ UTC, 20000              ;IS TAPE STOPPED?\r
+         JRST UOUT3                    ;STOP TAPE AND EXIT\r
+UEND2:   SOSL DCREQ            ;DECREMENT REQUEST COUNT, IS ANY ONE WA\r
+         SETOM DCAVAL                  ;YES,SET DATA CONTROL AVAILABLE\r
+         SOSL DTREQ            ;DECREMENT REQUEST COUNT, IS ANY ONE WA\r
+         SETOM DTAVAL                  ;YES,SET DECTAPE CONTROL AVAI\r
+         TRZ IOS, IOACT                ;CLEAR ACTIVE BIT\r
+         MOVEM IOS, DEVIOS(DEVDAT)     ;RESTORE STATUS BITS\r
+         POPJ PDP, 0                   ;EXIT\r
+\f\r
+;COPY DIRECTORY WHEN READING BLOCK 1\r
+UIN2:    TLZE IOS, IOBEG               ;IS DIRECTORY IN\r
+         JRST UIN4                     ;READ IN DIRECTORY\r
+         PUSHJ PDP, UEND2              ;CLR INDICATORS\r
+UIN3:    MOVE TAC1,UFREE(DEVDAT)       ;NEXT FREE BLOCK IN DATA BLOC\r
+         HRLM TAC1, @UDIR(DEVDAT)      ;PLACE IN DIRECTORY\r
+         HRRI TAC1, 1(TAC)             ;BUFFER ADDRESS, TO\r
+         HRL TAC1, UDIR(DEVDAT)        ;DIRECTORY ADDRESS, TO\r
+         BLT TAC1, 200 (TAC)           ;MOVE DIRECTORY TO BUFFER ARE\r
+         HRLZI TAC1, IOUSE\r
+         IORB TAC1, IOUSE              ;SET USE BIT\r
+         HRRM TAC1,DEVIAD(DEVDAT)      ;ADVANCE BUFFER\r
+         POPJ PDP, 0                   ;EXIT\r
+UIN4:    PUSHJ PDP, UBEG3\r
+         JRST UIN3\r
+SETI:    PUSHJ PDP,WAIT1\r
+         HRLM UUO,DEVIAD(DEVDAT)       ;SET INPUT BLOCK NO.\r
+         JRST UXIT\r
+\r
+SETO:    PUSHJ PDP,WAIT1       \r
+         PUSHJ PDP, UINTER             ;WAIT FOR USE TO STOP\r
+         PUSHJ PDP, UEND2              ;CLEAR INDICATORS\r
+         HRLM UUO,DEVOAD(DEVDAT)       ;SET OUTPUT BLOCK NO.\r
+         JRST UXIT\r
+\r
+GETF:    PUSHJ PDP,WAIT1\r
+         TLNE IOS,IOBEG\r
+         PUSHJ PDP,UBEG\r
+         TLO IOS,UNWFRE\r
+         MOVEM IOS,DEVIOS(DEVDAT)\r
+         AOS TAC, UFREE(DEVDAT)        ;GET FREE BLOCK\r
+         HRLM TAC, DEVOAD(DEVDAT)\r
+         HRLI UUO,PROG\r
+         HRRM TAC,@UUO\r
+         JRST UXIT\r
+\f\r
+INTERNAL UTPCLS,UTWDR,UBEG,UTPREL\r
+\r
+UTWDR:   IFE DTSIZ,<        PUSHJ PDP,UTPREL>\r
+\r
+         JRST UXIT\r
+\r
+UTPCLS:          TLNN IOS, ULINKF\r
+         JRST UTPREL\r
+         LDB TAC,PIOMOD        ;MODE\r
+         CAIL TAC,16\r
+         JRST UTPREL\r
+         HLR TAC,DEVBUF(DEVDAT)\r
+         HLRI TAC, PROG\r
+         HRR TAC, @TAC                 ;TAC:=BUFFER ADDRESS\r
+         ADDI TAC,1\r
+         MOVEI TAC1,1\r
+         HRLM TAC1,@TAC\r
+         JRST OUT\r
+\r
+UTPREL:          IFE DTSIZ,< TLNE  IOS,IOBEG   ;RELEASE\r
+ POPJ PDP,\r
+ TLZE IOS,UDIREN\r
+ JRST UTPRL1\r
+ TLNN IOS,UNWFRE\r
+ POPJ PDP,\r
+ TLNN IOS,UDIRIN\r
+ PUSHJ PDP,UBEG>\r
+\r
+         IFN DTSIZ,< TLZN IOS,UDIREN+UNWFRE\r
+ POPJ PDP,>\r
+UTPRL1:          PUSHJ PDP,UINTER      ;IS SYSTEM AVAILABLE?\r
+         HRR TAC,UFREE(DEVDAT)\r
+         HRLM TAC,@UDIR(DEVDAT)\r
+         MOVE TAC,UDIR(DEVDAT)\r
+         SUBI TAC,1\r
+         MOVEM TAC,UBUF\r
+         TLO IOS, URDIR\r
+         MOVEM IOS,DEVIOS(DEVDAT)\r
+         MOVEI TAC,1\r
+         PUSHJ PDP,USETW\r
+         JRST WAIT1\r
+\f\r
+,READ THE DIRECTORY FROM THIS DEC-TAPE\r
+\r
+UBEG:    SKIPGE DEVMOD(DEVDAT)         ;IS DIRECTORY IN CORE?\r
+         TLO IOS,UDIRIN\r
+         TLNE IOS,UDIRIN\r
+         POPJ PDP, 0\r
+         PUSHJ PDP, UINTER             ;CHECK INTERLOCK\r
+UBEG2:   PUSH PDP, TAC                 ;SAVE TAC\r
+         HRRZ TAC,UDIR(DEVDAT)\r
+         SUBI TAC, 1\r
+         MOVEM TAC,UBUF\r
+         TLO IOS,UDIRIN+URDIR\r
+         TLZ IOS, IOBEG\r
+         MOVEM IOS,DEVIOS(DEVDAT)\r
+         MOVSI TAC,DVDIRIN     ;SET DIRECTORY IN CORE BIT\r
+         IORM TAC,DEVMOD(DEVDAT)\r
+         MOVEI TAC,1\r
+         PUSHJ PDP,USETR\r
+         PUSHJ PDP,WSYNC\r
+         HLR TAC,@UDIR(DEVDAT)\r
+         HRRZM TAC,UFREE(DEVDAT)\r
+UBEGX:   POP PDP,TAC\r
+         POPJ PDP, 0\r
+\r
+UBEG3:   TLNE IOS, UDIRIN\r
+         POPJ PDP, 0\r
+         JRST UBEG2\r
+\r
+UTBERR:          PUSHJ PDP, DTC1       ;ILL. BLOCK NO.\r
+         JRST UTBKER\r
+\r
+USETW:   MOVEI TAC1, RIT\r
+         SKIPA\r
+USETR:   MOVEI TAC1,READ\r
+         HRRM TAC1,DDIG\r
+         HRRZM TAC,UBKN\r
+         JUMPLE TAC,UTBERR     ;ILL. BLOCK NO.?\r
+         CAIL TAC,1102\r
+         JRST UTBERR           ;ILL. BLOCK NO.\r
+         LDB TAC,PUNIT         ;UNIT\r
+         ROT TAC, 3\r
+         ADDI TAC, DTCCHN              ;DECTAPE CHANNEL\r
+         MOVEM TAC, UNIT               ;UNIT AND CHANNEL\r
+         MOVEI TAC, 137\r
+         HRRM TAC, DTCINT\r
+         SUBI TAC, 21\r
+         HRRM TAC, CONSZ1              ;FALL INTO FILL\r
+\f\r
+FILL:    CONO DC,0                     ;DESELECT DC\r
+         CONO PI,2100                  ;TURN ON CHANNEL 1\r
+         MOVEM DEVDAT, USVDB           ;SAVE DATA BLOCK ADDR\r
+         MOVEM DEVDAT,UDVDAT           ;UDVDAT:=DTJIOS POINTER\r
+         MOVEI TAC, DEVIOS\r
+         ADDM TAC,UDVDAT\r
+         MOVE TAC, [JSR DDIF]          ;DATA CONTROL INTERRUPT CHANN\r
+         MOVEM TAC,UCHA\r
+         MOVEM PROG,UPROG              ;UPROG:=PROG\r
+         MOVE TAC,UBUF                 ;BLI:=XWD-200,C(UBUF)\r
+         HRLI TAC,-200\r
+         MOVEM TAC,BLI\r
+         ADDI TAC,200-1\r
+         MOVEM TAC,BLO\r
+         CONSZ UTC, 20000              ;IS TAPE MOVING?\r
+         JRST FILLC                    ;YES\r
+         MOVE TAC, UNIT                ;RDDA:=RDRM:=WTDA:=WTRM:=C(UN\r
+         DPB TAC,F1\r
+         DPB TAC,F2\r
+         DPB TAC,F3\r
+         DPB TAC,F4\r
+         MOVE TAC,UNIT\r
+         ANDI TAC, 70                  ;TAC HAS UNIT ONLY\r
+               ADDI TAC, SL+DTR+RB+EE+UCHN\r
+         TLNN IOS, UREV                ;WAS REV, GO FWD\r
+         ADDI TAC,GR                   ;WAS FWD, GO REV\r
+         CONO UTC, @TAC\r
+FILL2:   CONO DC, DACI+UCHN            ;SET UP DC FOR INPUT\r
+         MOVEM IOS, DEVIOS (DEVDAT)\r
+         POPJ PDP,\r
+\f\r
+,TAPE IS ACTIVE - GIVE A COMMAND\r
+FILLC:   CONI UTC,TAC                  ;UTC COMMAND: UNIT, OLD DIRE\r
+         ANDI TAC,GR+70                ;DIRECTION PLUS UNIT\r
+         CONO UTC,SL+RB+EE+UCHN(TAC)   ;NO TIME DELAY\r
+         JRST FILL2\r
+\r
+F1:      POINT 6,RDDA,35\r
+F2:      POINT 6,RDRM,35\r
+F3:      POINT 6,WTDA,35\r
+F4:      POINT 6,WTRM,35\r
+,CHANGE DIRECTIONS - GIVE NEW COMMANDS\r
+RRV:     CONI UTC,TAC\r
+         XORI TAC,GR                   ;REVERSE BIT\r
+         ANDI TAC,550777\r
+         IORI TAC,DT\r
+         CONO UTC,SL(TAC)\r
+         CONO DC,DACI+UCHN\r
+         JRST DXIT\r
+,EXAMINE BLOCK NUMBERS - DISPATCHED FROM INTERRUPT - CHAN, DC.\r
+DDIF:    0                             ;GOING FORWARD\r
+         MOVEM TAC,SV1                 ;SV1:=TAC\r
+         CONSZ UTS, VEOT\r
+         JRST RRV\r
+         DATAI DC,TAC\r
+         CAMN TAC,UBKN                 ;BLK NOT =STR\r
+DDIG:    JRST .                        ;JRST READ, BIT, IFRIGHT UBK\r
+         CONSZ UTC,10000               ;GOING BACKWARDS\r
+         JRST .+4                      ;BACKWARDS\r
+         CAML TAC,UBKN                 ;BLK > STR > FORWARD\r
+         JRST RRV\r
+         JRST .+3\r
+         CAMG TAC,UBKN                 ;BACKWARDS\r
+         JRST RRV                      ;BACKWARDS\r
+DDIG2:   CONI UTC,TAC\r
+         ANDI TAC,550777\r
+         CONO UTC,SL(TAC)\r
+         SKIPA\r
+DXIT1:   HRRM TAC,UCHA\r
+DXIT:    MOVE TAC,SV1                  ;RESTORE TAC\r
+         JEN @DDIF                     ;RE-ENABLE, DISMISS.\r
+\f\r
+,DISPATCH FROM UCHA INITIALLY ON CORRECT BLOCK MARK\r
+,SETS OP TO READ, WRITE IN FWD, REVERSE\r
+\r
+;RD FORWARD\r
+RDDA:    CONO UTC,SL+RD+JDE+EE                 ;GETS UNIT NO. - RE\r
+         MOVEI TAC,RDFW\r
+         CONO DC,DACI+UCHN\r
+         JRST DXIT1\r
+\r
+WTDA:    CONO UTC,SL+WD+JDE+EE                 ;GETS UNIT NO. - RE\r
+         MOVEI TAC,WTFW\r
+         CONO DC,DACO+UCHN\r
+         JRST DXIT1\r
+\r
+READ:    CONSO UTC,10000               ;ENTRY TO SET UP READ\r
+         JRST, RDDA\r
+;READ REVERSE\r
+RDRM:    CONO UTC,SL+GR+RD+JDE+EE      ;GETS UNIT NO. - RESETS TO RD\r
+         MOVEI TAC,RDRV\r
+         CONO DC,DACI+UCHN\r
+         JRST DXIT1\r
+RIT:     CONSO UTC,10000               ;GOING REVERSE - ENTRY TO SET\r
+         JRST WTDA                     ;WRITE FORWARD\r
+;WRITE REVERSE\r
+WTRM:    CONO UTC,SL+WD+GR+JDE+EE      ;GETS UNIT NO. -RESETS. TO WT\r
+         MOVEI TAC,WTRV\r
+         CONO DC,DACO+UCHN\r
+         JRST DXIT1\r
+\r
+,DC INTERRUPT PROCESSSING TO READ/WRITE DATA IN EITHER\r
+,DIRECTION, AND RE-ENABLE INTERRUP.\r
+,EXIT BLOCK PROCESSING AT ENPT(WRITE), ENPTI(READ)\r
+\r
+RDRV:    0                             ;ENTRY VIA UCHA - READ REV\r
+         BLKI DC,BLO\r
+         JSR ENPTI\r
+         SOS BLO\r
+         SOS BLO\r
+         JEN @RDRV\r
+\r
+RDFW:    0                             ;ENTRY VIA UCHA - READ FWD\r
+         BLKI DC,BLI\r
+         JSR ENPTI\r
+         JEN @RDFW\r
+\r
+WTRV:    0                             ;ENTRY VIA UCHA - WRITE REV\r
+         BLKO DC,BLO\r
+         JSR ENPT\r
+         SOS BLO\r
+         SOS BLO\r
+         JEN @WTRV\r
+\r
+WTFW:    0                             ;ENTRY VIA UCHA - WRITE FWD\r
+         BLKO DC,BLI\r
+         JSR ENPT\r
+         JEN @WTFW\r
+\f\r
+;END OF OUTPUT BLOCK\r
+\r
+ENPT:    0\r
+         JSR, ENP\r
+ENPT2:   MOVEM TAC,SV1                 ;SV1:=TAC\r
+         HRLZI TAC,UREV\r
+         CONSZ UTC,10000\r
+         ANDCAM TAC,@UDVDAT\r
+         CONSO UTC,10000\r
+         IORM TAC,@UDVDAT\r
+         MOVEI TAC,UOFF\r
+         HRRM TAC,UCHA\r
+         MOVE TAC,SV1\r
+         JRSTF @ENPT\r
+\r
+,CHECK ERROR BITS DC MISSED, 0T PARITY, 1 LEG OP, TAPE END\r
+ENP:     0\r
+         CONSZ DC, 10000;      DATA MISSED\r
+         JSR ERROR2\r
+         JRSTF @ENP\r
+\r
+,SAVE STATE OF UTS, UTC, DC, TURN OFF DC, UTC, +1@ERRTAL,+1@UERR\r
+;ERROR LOOPS\r
+ERROR:   0\r
+         CONI UTS, C12\r
+         CONI UTC, C13\r
+         CONI DC, C11\r
+         SETOM ERRFLG\r
+         JRSTF @ERROR\r
+;INTERRUPT FROM DATA FLAG AFER BLKO HAS COUNTED OUT\r
+UOFF:    0\r
+         CONO PI, 1100         ;TURN DC CHANNEL OFF\r
+         JEN @UOFF             ;DISMISS EXTRA WRITE FLAG\r
+\r
+;END OF INPUT BLOCK\r
+ENPTI:   0\r
+         EXCH TAC, ENPTI\r
+         MOVEM TAC, ENPT\r
+         JSR ENP\r
+         CONO DC, 0\r
+         MOVE TAC, ENPTI\r
+         JRST ENPT2\r
+;DETECT FIRST ERROR ONLY\r
+ERROR2:          0\r
+         SKIPN ERRFLG          ;PREVIOUSLY DETECTED ERROR!\r
+         JSR ERROR             ;STORE ERROR CONDITIONS\r
+         JRSTF @ERROR2         ;CONTINUE LOOP\r
+\r
+;END OF PART 1 DTSER2\r
+\f\r
+         EXTERNAL SETIOD\r
+         INTERNAL UDMP0, UDMPI\r
+\r
+; DUMP OUT\r
+UDMPO:   TLO IOS, IO                   ;SET FOR OUTPUT\r
+         PUSHJ PDP, UINTER             ;CHECK INTERLOCK\r
+         TRNN UUO, 777777              ;COMMAND ADDRESS?\r
+         JRST UDMP2-1                  ;ERROR\r
+         MOVEI TAC, DDUMP              ;RETURN WHEN BLOCK FOUND\r
+UDMP0:   MOVE TAC1, [JSR DMPADV]       ;BLKI OR BLKO RETURN, COMMANDS\r
+\r
+;COMMON ROUTINE FOR ALL DUMP MODES,  START SEARCH\r
+UDMP1:   HRRM TAC,DDIG                 ;SEARCH RETURN\r
+         MOVEM TAC1, UCHA+1            ;INTERRUPT RETURN\r
+         MOVE TAC, [JSR DDIF]  \r
+         MOVEM TAC, UCHA               ;DATA CONTROL CHANNEL\r
+         HLRZ TAC, DEVOAD (DEVDAT)     ;BLOCK NUMBER\r
+         TLNN IOS, IO                  ;WRITING?\r
+         HLRZ TAC, DEVIAD(DEVDAT)      ;INPUT BLOCK NUMBER\r
+         MOVEM TAC, UBKN               ;BLOCK TO LOOK FOR\r
+         HRRZM DEVDAT, USVDB           ;DATA BLOCK ADDRESS\r
+         LDB TAC,PUNIT         ;UNIT\r
+         ROT TAC, 3\r
+         ADDI TAC, DTCCHN\r
+         MOVEM TAC, UNIT               ;UNIT AND DT CHANNEL\r
+         ANDI TAC, 70\r
+               CONO UTC, SL+DTR+RB+EE+UCHN(TAC)\r
+         SETOM UERRCN                  ;SET ERROR COUNTER\r
+         MOVEI TAC, 37                 ;DO NOT CHECK FOR INCOMPLETE\r
+         HRRM TAC, DTCINT\r
+         MOVEI TAC,16\r
+         HRRM TAC, DTCINT+4\r
+         CONO DC, DACI+UCHN            ;SET DATA CONTROL\r
+         CONO PI,2100          ;INSURE CHANNEL 1 ON\r
+         HRRZM PROG, UDMPA             ;SAVE PROGRAM\r
+         TRNN UUO, 777777              ;COMMAND ADDRESS\r
+         POPJ PDP, 0                   ;COMMAND LIST ON TAPE, INPUT\r
+         HRRZ TAC, UUO                 ;GET CMD PNTR\r
+         HRRZ TAC1, TAC                ;SAVE POINTER\r
+UDMP1A:          ADD TAC1, PROG                ;GET ACTUAL POINTER\r
+         HRRZM TAC1, UDMP              ;STORE WORKING POINTER\r
+\r
+;CHECK ENTIRE COMMAND LIST FOR VALIDITY\r
+UDMP1B:          SKIPN TAC1, @UDMP             ;GET COMMAND\r
+         JRST UDMP1C                   ;END OF COMMAND LIST\r
+         JUMPG TAC1, UDMP1A            ;CHANGE COMMAND SEQUENCE\r
+         HLREM TAC1, SVCNTR            ;SAVE -N\r
+         HRRZS TAC1                    ;GET ADDRESS\r
+         CAIGE TAC1, JOBPFI    ;IS IT ABOVE IO PROT. AREA\r
+         JRST ADRERR           ;NO. ADDRESS CHECK ERROR\r
+         SUB TAC1, SVCNTR              ;GET AREA END\r
+         CAMLE TAC1, USRREL            ;LESS THEN END?\r
+         JRST UDMP2-1                  ;OUT OF BOUNDS\r
+         AOS UDMP                      ;INDEX COMMAND LIST POINTER\r
+         JRST UDMP1B                   ;GET NEXT COMMAND\r
+\f\r
+;GET FIRST COMMAND\r
+UDMP1C:          ADD TAC, PROG                 ;GET ACTUAL ADDRESS\r
+         HRRZM TAC, UDMP               ;SAVE POINTER\r
+         SKIPN TAC, @UDMP              ;1ST COMMAND\r
+         JRST UDMP2                    ;NOTHING TO DO\r
+         ADD TAC, PROG                 ;ACTUAL POINTER\r
+         JUMPGE TAC, .-4               ;CHANGE COMMAND SEQUENCE\r
+         MOVEM TAC, BLO                ;SAVE I/O POINTER\r
+         POPJ PDP, 0\r
+;EXIT WITH ERROR\r
+         TRO IOS, IOBKTL\r
+UDMP2:   MOVEI TAC, -3\r
+         HRREM TAC, UERRCN\r
+         SETZM ERRFLG\r
+         JRST UEND2\r
+\r
+;SEARCH RETURN,OUTPUT,COMMAND LIST IN MEMORY\r
+DDUMP:   CONSZ UTC,GR\r
+         JRST DDIG2            ;KEEP GOING\r
+         MOVE TAC,[BLKO DC,BLO]\r
+         MOVEM TAC, UCHA\r
+         CONO DC,DACO+UCHN\r
+         MOVE TAC,UNIT\r
+\r
+         CONO UTC,SL+WD+JDE+EE(TAC)\r
+         JRST DXIT\r
+;BLKI OR BLKO RETURNS, COMMAND LIST IN MEMORY\r
+DMPADV:          0\r
+         MOVEM TAC,SV1\r
+         AOSA TAC,UDMP                 ;POINTER\r
+\f\r
+DMPA1:   HRRZM TAC, UDMP               ;STORE POINTER\r
+         SKIPN TAC, 0(TAC)             ;IS WORD ZERO\r
+         JRST DMPA2                    ;END\r
+         ADD TAC, UDMPA                ;ADD PROGRAM\r
+         JUMPGE TAC, DMPA1             ;CHANGE COMMAND\r
+         MOVEM TAC, BLO\r
+DMPXT:   MOVE TAC, SV1\r
+         JEN @DMPADV\r
+\r
+;END OF COMMAND LIST, INPUT OR OUTPUT\r
+DMPA2:   JSR ENP\r
+         CONO PI, 1100                 ;TURN DATA CONTROL CHANNEL OF\r
+         CONSO UTS, 40                 ;WRITING?\r
+         CONO DC, 0                    ;SHUT OFF DATA CONTROL\r
+         JRST DMPXT\r
+;SEARCH RETURN, INPUT COMMAND LIST ON TAPE\r
+DDMPI:   CONSZ UTC, GR                 ;GOING BACKWARDS?\r
+         JRST DDIG2                    ;KEEP GOING\r
+         MOVE TAC, [XWD -1,BLO-1]\r
+         MOVEM TAC, BLO\r
+\r
+;COMMON INSTRUCTIONS FOR COMMAND LIST IN MEMORY OR ON TAPE\r
+DDMPI2:          MOVE TAC, [BLKI DC,BLO]\r
+         MOVEM TAC, UCHA\r
+         CONO DC, DACI+UCHN\r
+         MOVE TAC, UNIT\r
+         CONO UTC, SL+RD+JDE+EE(TAC)\r
+         JRST DXIT\r
+\r
+;INPUT COMMAND LIST ON TAPE.  BLKI RETURN AFTER READING COMMAND\r
+DMPRD:   0\r
+         SKIPL BLO                     ;END OF COMMAND LIST?\r
+         JRST DMPRD1\r
+         MOVEM TAC, SV1                ;SAVE TAC\r
+         MOVE TAC, BLO                 ;PICK UP COMMAND\r
+         HLREM TAC, SVCNTR             ;-N\r
+         HRRZS TAC                     ;ADDRESS\r
+         SUB TAC, SVCNTR               ;END ADDRESS\r
+DMPRD0:          CAILE TAC, 0                  ;<END? MODIFIED\r
+         JRST DMPERR                   ;OUT OF BOUNDS, EXIT\r
+         MOVE TAC, UDMP                ;PROG\r
+         ADDM TAC, BLO                 ;TO GET ACTUAL I/O POINTER\r
+         MOVEI TAC,DMPRDA              ;NEW RETURN\r
+         HRRM TAC, UCHA+\r
+         SKIPA TAC, SV1                ;RESTORE TAC\r
+DMPRD1:          CONO DC, 0\r
+         JEN @DMPRD\r
+\f\r
+;INPUT COMMAND LIST ON TAPE.  BLKI RETURN AFTER READING DATA\r
+DMPRDA:          0\r
+         MOVEM TAC, SV1                ;SAVE TAC\r
+         MOVE TAC, [XWD -1,BLO-1]\r
+         MOVEM TAC, BLO                ;READ INTO BLO\r
+         MOVEI TAC, DMPRD              ;USE PREV. RETURN\r
+         HRRM TAC, UCHA+1\r
+         MOVE TAC, SV1                 ;SAVE TAC\r
+         JEN @DMPRDA\r
+;DUMP IN\r
+UDMPI:   TLZ IOS, IO\r
+         PUSHJ PDP, UINTER\r
+         TRNE UUO, 777777              ;COMMAND LIST ON TAPE\r
+         JRST UDMPI2                   ;COMMAND LIST IN CORE\r
+         MOVE TAC, USRREL              ;LENGTH OF USER AREA\r
+         HRRM TAC, DMPRD0\r
+         MOVEI TAC, DDMPI              ;SEARCH RETURN\r
+         MOVE TAC1, [JSR DMPRD]                ;BLOCK IN RETURN\r
+         JRST UDMP1\r
+UDMPI2:          MOVEI TAC, DDMPI3             ;COMMAND LIST IN CORE\r
+         JRST UDMP0\r
+;SEARCH RETURN, INPUT COMMAND LIST IN MEMORY\r
+DDMPI3:          CONSZ UTC, GR\r
+         JRST DDIG2                    ;KEEP GOING\r
+         JRST DDMPI2                   ;INPUT COMMAND LIST IN CORE\r
+;JOB DONE AFTER COMMAND LIST RUNS OUT\r
+DMPEND:          SKIPE ERRFLG\r
+         TRO IOS,IODERR\r
+         MOVEM IOS,DEVIOS(DEVDAT)\r
+         MOVE TAC,UNIT\r
+         ANDI TAC, 70\r
+         CONO PI,2100\r
+         CONO DC, DACI+UCHN\r
+         CONO UTC, SL+RB(TAC)          ;SWITCH TO SEARCH MODE\r
+         MOVE TAC, [JSR UDMPRB]\r
+         MOVEM TAC, UCHA\r
+         JRST DTCRET\r
+;SEARCH RETURN TO READ NEXT FREE BLOCK\r
+UDMPRB:          0\r
+         EXCH DEVDAT, USVDB            ;GET DVDB\r
+         MOVEM TAC,SVAC\r
+         MOVEM IOS,SVAC+1\r
+         MOVEM PDP,SVAC+2\r
+         MOVEM TAC1,SVAC+3\r
+         MOVE IOS,DEVIOS(DEVDAT)\r
+         TLNN IOS,IO                   ;INPUT OR OUTPUT?\r
+         JRST .+3                      ;INPUT\r
+         DATAI DC,UFREE(DEVDAT)        ;LAST FREEBLOCK TALLY\r
+         TLO IOS,UNWFRE                ;SET FREE BLOCK CHANGED BIT\r
+         CONO DC,0                     ;TURN OFF DATA CONTROL\r
+         MOVEI TAC,DTCCHN\r
+         CONO UTC,5000(TAC)            ;STOP TAPE\r
+         MOVE PDP,[XWD -5,SVAC+3]      ;USE REST OF SCAV BLOCK\r
+         JSR IODSET\r
+         PUSHJ PDP,DTC1B\r
+\f\r
+         MOVE TAC,SVAC\r
+         MOVE IOS,SVAC+1\r
+         MOVE PDP,SVAC+2\r
+         MOVE TAC1,SVAC+3\r
+         EXCH DEVDAT,USVDB\r
+         JEN @UDMPRB\r
+;ADDRESS CHECK FROM COMMAND.  COMMANDS ON TAPE\r
+DMPERR:          EXCH DEVDAT, USVDB            ;GET DVDB\r
+         MOVEI TAC, IOIMPM             ;ERROR BITS\r
+         ORM TAC, DEVIOS(DEVDAT)       ;SET STATUS\r
+         EXCH DEVDAT, USVDB            ;RESTORE DEVDAT\r
+         MOVE TAC, SV1                 ;RESTORE TAC\r
+         JRST DMPRD1\r
+\f\r
+C11:     0             ;TEMP CONI DC\r
+C12:     0             ;TEMP CONI UTS\r
+C13:     0             ;TEMP CONI UTC\r
+BLO:     0             ;XWD -200 C(UBUF)\r
+BLI:     0             ;XWD,-200,C(UBUF+200)\r
+SV1:     0             ;TEMPORARY FOR TAC DURING INTERRUPT\r
+UNIT:    0             ;IN BITS 30-32\r
+UBKN:    0             ;BLOCK BEING SEARCHED FOR\r
+UPROG:   0             ;HOLDS PROG\r
+UBUF:    0             ;ABS. LOC OF DATA\r
+UDVDAT:          0             ;PTR TO IOS\r
+ERRTAL:          0             ;TOTAL NO. OF ERRORS\r
+ERRFLG:          0             ;-1 IF ERROR OCCURED, 0 OTHERWISSE\r
+\r
+UDMP:    0             ;HOLDS DUMP UUO ADDRESS\r
+UDMPA:   0             ;HOLDS USER PROGRAM STARTING ADDRESS\r
+SV0:     0\r
+SVAC:    BLOCK 11\r
+SVCNTR:          0             ;HOLDS -N OF DUMP COMMAND WORD\r
+\r
+;CHECK FRO INTERLOCK ON DECTAPE AND DATA CONTROLS\r
+UINTER:          TRO IOS, IOACT\r
+         MOVEM IOS, DEVIOS(DEVDAT)\r
+         AOSE DTREQ                    ;IS DECTAPE CONTROL FREE?\r
+         PUSHJ PDP, DTWAIT             ;WAIT\r
+         AOSE DCREQ                    ;IS DATA CONTROL FREE?\r
+         PUSHJ PDP, DCWAIT             ;WAIT\r
+         POPJ PDP, 0                   ;EXIT\r
+\r
+USVDB:   0             ;SAVE DATA BLOCK ADDRESS\r
+USVIOS:          0             ;SAVE IOS\r
+UERRCN:          -3            ;ERROR COUNTER\r
+\r
+IODSET:          0\r
+         TLZE IOS,IOW\r
+         PUSHJ PDP,SETIOD\r
+         MOVEM IOS,DEVIOS(DEVDAT)\r
+         JRST @IODSET\r
+\f\r
+;INITIALZATION\r
+\r
+DTCINI:          MOVEI TAC, -3                 ;CLEAR ERROR COUNTER\r
+         HRREM TAC, UERRCN\r
+         SETZM ERRFLG\r
+         CONO UTC, 0\r
+         POPJ PDP, 0\r
+\r
+DTCINT:          CONSO UTS, 137                ;ALL ERRORS AND JOB DONE\r
+         JRST .                        ;MODIFIED BY INITIALIZATION\r
+         CONSZ UTS,20                  ;TIME FLAG\r
+         JRST UTIME                    ;SET DECTAPE CONTROL AVAILABL\r
+CONSZ1:          CONSZ UTS, 116                ;INC BLK, PARITY, ILL OP, END\r
+         JSR ERROR2                    ;ERROR\r
+\r
+;JOB DONE\r
+         CONO DC, 0                    ;TURN OFF DATA CONTROL\r
+         MOVEM 0, SV0                  ;SAVE ZERO\r
+         CONI UTC, 0\r
+         MOVEM 0, USVIOS\r
+         ANDI 0, 230070                ;SAVE DIRECTION AND UNIT\r
+         CONO UTC, @0                  ;SWITCH TO MOVE MODE\r
+         MOVE 0, SV0\r
+         JSR DTCSAV\r
+         PUSHJ PDP, DSETAC\r
+         SKIPE ERRFLG\r
+         JRST DTRED0\r
+         TLZE IOS,URDIR\r
+         JRST .+3\r
+         JSR IODSET\r
+         JRST DTC1\r
+         TRC IOS,17\r
+         TRCN IOS,17\r
+         JRST DMPEND\r
+         JSR IODSET\r
+         JRST DTCONT\r
+DTC1:    MOVE TAC, USVIOS\r
+         ANDI TAC, 10007               ;DIRECTION, CHANNEL\r
+         ORI TAC,5000                  ;TIME FLAG ENABLE\r
+         CONO UTC, @ TAC               ;STOP TAPE, AND DESELECT\r
+         TLZ IOS, UREV\r
+         TRNE TAC, 10000\r
+         TLO IOS,UREV\r
+\f\r
+DTC1A:\r
+DTC1B:   SOSL DCREQ            ;DECREMENT REQUEST COUNT, ANYONE LEFT W\r
+         SETOM DCAVAL                  ;YES.DATA CONTROL AVAILABLE\r
+         TRZ IOS, IOACT\r
+DTC2:    MOVEM IOS, DEVIOS(DEVDAT)\r
+         MOVEI TAC, -3\r
+         HRREM TAC, UERRCN\r
+         SETZM ERRFLG\r
+         POPJ PDP,\r
+\r
+DTCONT:          MOVEI TAC1, UOUT2\r
+         TLNN IOS, IO                  ;WRITING?\r
+         MOVEI TAC1, UIN1\r
+         PUSHJ PDP, 0(TAC1)\r
+         JRST DTC2\r
+\r
+;INTERRUPT FROM TIME FLAG AFTER STOP DELAY\r
+UTIME:   CONSO UTC,4000\r
+         JRST DTCINT+1\r
+         SOSL DTREQ            ;DECREMENT REQUEST COUNT, IS ANYONE STI\r
+         SETOM DTAVAL                  ;YES,DECTAPE CONTROL AVAILABL\r
+         CONO UTC, 0\r
+         JEN @DTCCHL\r
+\r
+;SET UP NECESSARY DECTAPE ACCUMULATORS\r
+DSETAC:          MOVE DEVDAT, USVDB\r
+         MOVE PROG, UPROG\r
+         MOVE IOS, DEVIOS(DEVDAT)\r
+         POPJ PDP,\r
+;RE-DO DECTAPE COMMAND IF AN ERROR OCCURED\r
+DTRED0:          TRC IOS,17\r
+         TRCN IOS,17\r
+         JRST DMPEND\r
+         AOS UERRCN                    ;NOT YET 3 ERRORS\r
+         JRST DTRD2                    ;THIRD ERROR\r
+         SETZM ERRFLG                  ;CLEAR FLAG\r
+         PUSHJ PDP, FILL               ;RE-EXECUTE THE COMMAND\r
+         JRST DTCRET                   ;EXIT\r
+DTRD2:   TRO IOS, IODERR               ;SET ERROR INDICATION\r
+         TLZE IOS, IOW\r
+         PUSHJ PDP, SETIOD             ;RELEASE WAIT\r
+         JRST DTC1                     ;STOP THE TAPE\r
+EXTERNAL DTREQ, DCREQ, DTWAIT, DCWAIT, DTCSAV,DTCRET\r
+EXTERNAL DTAVAL, DCAVAL, DTCCHL, UTBKER, DTCCHN, USRREL\r
+INTERNAL DTCINT, DTCINI, DTSIZ,UBUF\r
+\r
+         END,\r
diff --git a/src/eddt.mac b/src/eddt.mac
new file mode 100644 (file)
index 0000000..c139a50
--- /dev/null
@@ -0,0 +1,3014 @@
+
+
+
+
+
+EDDT=3         ;THIS CAUSES A RELOCATABLE VERSION OF EXEC DDT WITH THE
+               ; PAPER TAPE I/O OPTION TO BE ASSEMBLED (AS OPPOSED TO
+               ; RELOCATABLE AND/OR ABSOLUTE VERSIONS OF USER DDT
+               ; AND/OR NON-PAPER TAPE I/O EXEC DDT, ALL OF WHICH CAN
+               ; BE ASSEMBLED FROM THE SAME SOURCE CODE WITH A
+               ; DIFFERENT DEFINITION OF "EDDT").
+\f
+
+REPEAT 0,<
+
+       HOW TO ASSEMBLE DDT
+
+       THE SOURCE OF DDT WILL ASSEMBLE INTO SEVERAL DIFFERENT
+       VERSIONS; THE ASSEMBLE IS CONTROLED BY THE VALUES
+       ASSIGNED TO THE SYMBOL EDDT. THIS SYMBOL MUST BE
+       DEFINED AS A SEPARATE FILE PRECEDING THE DDT SOURCE FILE.
+       THE SYMBOL EDDT IS DECODED IN THE FOLLOWING MANNER:
+       BIT 35 A ZERO:  ASSEMBLE USER MODE DDT
+       BIT 35 A ONE:   ASSEMBLE AN EXECUTIVE MODE DDT
+       BIT 34 A ZERO:  DO NOT ASSEMBLE THE PAPER TAPE
+                       FEATURE INTO THE DDT
+       BIT 34 A ONE:   THIS IS IGNORED FOR USER DDT.
+                       FOR AN EXEC DDT, ASSEMBLE
+                       THE PAPER TAPE FEATURE
+       BITS 0-17:      IF THESE BITS ARE ALL ZERO THE
+                       ASSEMBLY WILL BE RELOCATABLE
+                       IF THEY ARE NON-ZERO, THE ASSEMBLY IS
+                       ABSOLUTE STARTING AT THE VALUE IN BITS
+                       0-17 (THE LEFT HALF)
+
+       EXAMPLE:
+       1.) IF EDDT IS NOT DEFINED BY A PARAMETER ASSIGNMENT,
+       DDT WILL ASSIGN EDDT=0 AND A USER MODE RELOCATABLE
+       DDT WILL RESULT.
+
+       2.) EDDT=1; A RELOCATABLE EXEC DDT WITHOUT PAPER
+       TAPE FEATURE WILL RESULT.
+
+       3.) EDDT=3; A RELOCATABLE EXEC DDT WITH PAPER
+       TAPE FEATURE WILL RESULT
+
+       4.) EDDT=<XWD 4000,1>; AN ABSOLUTE DDT (STARTING
+       ADRESS 4000) WITHOUT PAPER TAPE FEATURE WILL RESULT
+
+       5.) EDDT=<XWD 4000,3>; AN ABSOLUTE DDT
+       (STARTING ADDRESS 4000) WITH ALL THE PAPER TAPE
+       FEATURES WILL RESULT.
+>\r
+
+\f
+
+
+IFNDEF EDDT,<EDDT=0>
+
+
+
+
+DEFINE XP (X.,Y.),<
+IF2,<X.=Y.
+INTERN X.
+NSYMS=NSYMS+2>>
+NSYMS=0                ;INITIAL SYMBOL COUNTER
+
+LOC 74
+XWD DDTEND,DDT
+RELOC 0
+
+IFN EDDT&<XWD -1,0>,<LOC <EDDT>B53>
+
+IFN EDDT&1,<TITLE EDDT   V.005A  - EXEC MODE VERSION
+       JOBREL=37
+       JOBSYM=36
+       ZLOW=40
+       DDTX=DDT
+       ENTRY DDTX>
+
+IFE EDDT&1,<TITLE UDDT   V.005  - USER MODE DDT
+       EXTERN JOBREL,JOBSYM,JOBSA
+       NSYMS=NSYMS+6
+       ZLOW=140>
+F=0            ;FLAGS
+P=1            ;PUSH DOWN
+R=2            ;POINTERS TO TABLES, CORE, ETC.
+S=3
+W=4            ;CONTAINS DISPATCH ADDRESS IN WORD ASSEMBLER
+T=5            ;TRANSFER DATA
+W1=6
+W2=7
+SCH=10         ;MODE CONTROL SWITCH FOR OUTPUT
+AR=11          ;MODE CONTROL SWITCH FOR OUTPUT
+ODF=12         ;MODE CONTROL SWITCH FOR OUTPUT - CURRENT RADIX
+A=R
+B=S
+C=W
+
+PRS=4
+TTYY=120
+PTRR=104
+PTPP=100
+
+LPDL=50                ;MAX LENGTH PUSH DOWN LIST
+
+\fTIF=100000            ;TRUNCATE TO 18 BITS -  SET BY SPACE OR COMMA
+PTF=100                ; +, -, OR * HAS BEEN TYPED
+CTF=400
+SF=4           ;SYLLABLE FLAG
+QF=1           ;QUANTITY TYPED IN TO WORD ASSEMBLER
+
+CF=40          ;  TYPED
+CCF=10000              ;  TYPED
+MF=2           ;MINUS SIGN TYPED IN
+LTF=20         ;LETTER TYPED IN TO CURRENT SYLLABLE
+ROF=10         ;REGISTER OPEN FLAG
+STF=4000
+FAF=1000               ; < TYPED
+SAF=2000               ; > TYPED
+
+FPF=20000              ; . TYPED IN
+FEF=400000             ; E FLAG
+
+MLF=200                ;*FLAG
+DVF=40000              ;DIVIDE FLAG
+
+PID=0          ;=0 IF SYMBOL TABLE POINTER IS IN JOBSYM
+\f
+;RIGHT HALF FLAGS
+
+ITF=2  ;INSTRUCTION TYPED IF ITF=1
+OUTF=4 ;OUTPUT IF OUTF=1
+CF1=400                ;OUTPUT 1 REGISTER AS CONSTANT
+LF1=2000               ;OUTPUT 1 REGISTER AS FORCED SYMBOLIC OR CONSTANT
+Q2F=1          ;NUMBER TYPED AFTER ALT MODE 
+SBF=20
+NAF=200                ;NEGATIVE ADDRESSES PERMISSABLE
+POWF=4000              ;ARGUMENT FOR EXPONENT COMING
+SLL=10000              ;STOP LOOKING FOR LOCALS
+
+GLOBAL=040000          ;GLOBAL SYMBOL
+LOCAL=100000
+PNAME=740000           ;PROGRAM NAME
+DELI=200000            ;DELETE INPUT
+DELO=400000            ;DELETE OUTPUT
+
+DDT:
+ENTRY DDT
+NSYMS=NSYMS+2
+
+
+RADIX 10
+NBP=8  ;NUMBER OF BREAKPOINTS
+DEFINE DBPNT (Z.)<XP $'Z.'B,B1ADR+3*Z.-3>
+ZZ=0
+REPEAT NBP,<DBPNT \<ZZ=ZZ+1>>
+RADIX 8
+
+
+XP $M,MSK
+XP $I,SAVPI
+XP DDTEND,DDTEND
+\f
+
+IFN EDDT&1,<
+
+XP PI,4B11
+XP PTP,100B11
+XP PTR,104B11
+XP CDR,114B11
+XP TTY,120B11
+XP LPT,124B11
+XP DC,200B11
+XP DIS,130B11
+XP PLT,140B11
+XP CR,150B11
+XP DSK,170B11
+XP DTC,210B11
+XP DTS,214B11
+XP DCSA,300B11
+XP DCSB,304B11
+XP DF,270B11
+XP MTC,220B11
+XP MTS,224B11
+XP MTM,230B11
+XP DLS,240B11
+XP TDC,320B11
+XP TDS,324B11
+XP TMC,340B11
+XP TMS,344B11>
+
+XP JOV,2554B11
+XP JEN,2545B11
+XP HALT,2542B11
+
+
+LOW=DDT-NSYMS-1
+
+
+
+
+
+
+
+
+
+
+\f
+
+DDT:   JSR SAVE
+       PUSHJ P,REMOVB
+       HLRZ T,ESTU
+       SUB T,ESTU
+       ADD T,@SYMP
+       TRNE T,-1
+       JRST IFIX
+DD1:   TLZ F,ROF               ;CLOSE ANY OPEN REGISTER
+       PUSHJ P,CRF
+DD1.5: MOVE T,[XWD SCHM,SCH]
+       BLT T,ODF       ;LOAD ACS
+DD2:   CLEARM PRNC             ;PARENTHESES COUNT
+       MOVEI P,PS
+LIS:   MOVE T,ESTU
+       MOVEM T,ESTUT           ;INIT UNDEFINED SYM ASSEM
+       TDZ F,[XWD 777777-ROF-STF,LF1+CF1+SBF+2+Q2F]
+LIS0:  TDZ F,[XWD 777777-ROF-STF-FAF-SAF,NAF]
+       CLEARM,WRD
+LIS1:  CLEARM,FRASE
+LIS2:  MOVEI T,1
+       MOVEM T,FRASE1
+       TLZ F,MLF+DVF
+L1:    TLZ F,CF+CCF+SF+FPF             ;TURN OFF CONTROL, SYL, PERIOD FLAG
+       CLEARM,SYL
+L1RPR: CLEARM,SYM
+       MOVEI T,6
+       MOVEM T,TEM             ;INIT SYMBOL COUNTER
+       CLEARM,DEN
+       CLEARM,WRD2
+
+L2:    PUSHJ P,TIN             ;PICK UP CHARACTER
+       CAIL T,"A"+40           ;LOWER CASE A
+       CAILE T,"Z"+40          ;LOWER CASE Z
+       JRST .+2
+       TRC T,40                ;CHANGE LOWER CASE TO UPPER CASE
+       TLNE F,CF               ;CONTROL FLAG
+       JRST L21
+       CAIG T,"Z"              ;Z
+       CAIGE T,"A"             ;A
+       JRST .+2
+       JRST LET
+L21:   MOVE R,T
+       IDIVI R,3
+       LDB W,BDISP(R+1)
+       CAIGE W,MULT-DDT        ;FIRST EVAL ROUTINE
+       JRST DDT(W)
+\f
+L211:  MOVE T,SYL
+       TLZN F,LTF
+       JRST POWER
+       PUSHJ P,EVAL
+       JRST UND1
+L4:    TLZE F,MF
+       MOVN T,T
+       TLNN F,SF
+       CAIE W,LPRN-DDT
+       JRST .+2
+       JRST LPRN
+
+       EXCH T,FRASE1
+       TLNN F,DVF
+       IMULB T,FRASE1
+       TLZE F,DVF
+       IDIVB T,FRASE1
+       CAIGE W,ASSEM-DDT
+       JRST DDT(W)             ;MULTIPLY OR DIVIDE
+       ADDB T,FRASE
+       CAIGE W,SPACE-DDT
+       JRST DDT(W)             ; + - @ ,
+
+       ADD T,WRD
+       TLNE F,TIF              ;TRUNCATE INDICATOR FLAG
+       HLL T,WRD               ;TRUNCATE
+       MOVEM T,WRD
+       TLNN F,QF
+       MOVE T,LWT
+       CLEARM,R
+       MOVE W1,ESTUT
+       CAMN W1,ESTU
+       JRST L5
+       CAILE W,CARR-DDT
+       JRST ERR
+L5:    CAIG W,RPRN-DDT
+       JRST DDT(W)
+       PUSH P,KILRET
+       SKIPN PRNC
+       JRST DDT(W)
+
+ERR:   MOVEI W1,"?"
+       JRST WRONG1
+UNDEF: MOVEI W1,"U"
+       JRST WRONG1
+WRONG: MOVE W1,[ASCII /XXX/]
+WRONG1:        MOVEI P,PS
+       PUSHJ P,TEXT
+IFN EDDT&1,<PUSHJ P,LISTEN
+       JFCL>
+\fRET:  MOVEI P,PS
+       PUSHJ P,LCT             ;COMMON RETURN FOR TAB;,JRST LIS
+       JRST DD2
+
+UND1:  MOVE R,ESTUT            ;UNDEFINED SYM ASSEMBLER
+       HLRE S,ESTUT
+       ASH S,-1                ;SETUP EVAL END TEST
+       PUSHJ P,EVAL2
+       CAIN W,ASSEM-DDT
+       TLNN F,ROF
+       JRST OPEVAL
+       SKIPE PRNC
+       JRST OPEVAL
+       MOVEI T,"#"
+       CAIE W,ASSEM-DDT
+       PUSHJ P,TOUT
+
+       MOVN R,[XWD 2,2]
+       ADDB R,ESTUT
+       MOVE T,SYM
+       TLO T,GLOBAL
+       MOVEM T,(R)
+       HRRZ T,LLOCO
+       TLNE F,MF
+       TLO T,400000
+       MOVEM T,1(R)
+       MOVEI T,0
+       JRST L4
+
+QUESTN:        PUSHJ P,CRF             ;LIST UNDEFINED SYMBOLS
+       MOVE R,ESTU
+QUEST1:        JUMPGE R,DD1
+       MOVE T, (R)
+       SKIPA W1,ESTU
+
+QUEST2:        ADD W1,[XWD 2,2]
+       CAME T,(W1)
+       JRST QUEST2
+
+QUEST3:        CAME R,W1
+       JRST QUEST4
+       PUSHJ P,SPT
+       PUSHJ P,CRF
+QUEST4:        ADD R,[XWD 2,2]
+       JRST QUEST1
+\f
+NUM:   ANDI T,17               ;T HOLDS CHARACTER
+       TLNE F,CF+FPF
+       JRST NM1
+       MOVE W,SYL
+       LSH W,3
+       ADD W,T
+       MOVEM W,SYL
+       MOVE W,DEN
+       IMULI W,12              ;CONVERT TO DECIMAL
+       ADD W,T
+       MOVEM W,DEN
+LE1:   AOJA T,LE1A
+
+PERC:  MOVEI T,47+101-13       ;PERCENT SIGN
+LET:   TLC F,SF+FPF            ;EXPONENT IFF LTF'*FEF'*(T=105)*SF*FPF=1
+       TLZN F,LTF+FEF+SF+FPF
+       CAIE T,105              ; E
+       TLOA F,LTF
+       TLOA F,FEF
+       JRST LET1
+       TLZN F,MF
+       SKIPA W1,SYL
+       MOVN W1,SYL
+       MOVEM W1,FSV
+       CLEARM DEN
+LET1:  SUBI T,101-13           ;FORM RADIX 50 SYMBOL
+LE1A:  TLO F,SF+QF
+LE2:   MOVE W,SYM
+       IMULI W,50              ;CONVERT TO RADIX 50
+       ADD W,T
+       SOSL,TEM                ;IGNORE CHARACS AFTER 6
+       MOVEM W,SYM
+       JRST L2
+
+NUM1:  EXCH T,WRD2             ;FORM NUMBER AFTER $
+       IMULI T,12
+       ADDM T,WRD2
+       TRO F,Q2F
+       JRST L2
+
+NM1:   TLNE F,CF
+       JRST NUM1
+       MOVEI W1,6              ;FORM FLOATING POINT NUMBER
+       AOS NM1A
+NM1A:  MOVEI W2,0
+       MOVSI R,201400
+NM1A1: TRZE W2,1
+       FMPR R,FT(W1)
+       JUMPE W2,NM1B
+       LSH W2,-1
+       SOJG W1,NM1A1
+NM1B:  MOVSI W1,211000(T)
+       FMPR    R,W1            ;COMPUTE VALUE OF NEW DIGIT
+       FADRB   R,FH            ;ADD VALUE INTO FLOATING NO.
+       MOVEM R,SYL
+       AOJA T,LE1A
+\f
+POWER: TLNN F,FEF
+       JRST L4         ;NO EXPONENT
+       CAIE W,PLUS
+       CAIN W,MINUS
+       TROE F,POWF
+       TRZA F,POWF
+       JRST (W)                ; E+-
+
+       MOVE W2,DEN
+       CLEARM FRASE
+       MOVEI W1,FT-1
+       TLZE F,MF
+       MOVEI W1,FT01
+       SKIPA T,FSV
+POW2:  LSH W2,-1
+       TRZE W2,1
+       FMPR T,(W1)
+       JUMPE W2,L4
+       SOJA W1,POW2
+\f
+
+PERIOD:        MOVE T,LLOC
+       TLNE F,SF               ;SYLLABLE STARTED
+       MOVE T,DEN
+       MOVEM T,SYL
+       TLNE    F,FPF           ;HAS A PERIOD BEEN SEEN BEFORE?
+       TLO     F,LTF           ;YES, TWO PERIODS MAKES A SYMBOL
+       TLON F,FPF+SF+QF
+       MOVEI T,0
+       IDIVI T,400
+       SKIPE T
+       TLC T,243000
+       TLC W1,233000
+       FAD     T,[0]           ;NORMALIZE T AND W1
+       FAD     W1,[0]
+       FADR    T,W1
+       MOVEM T,FH
+       HLLZS NM1A
+       MOVEI T,45              ;RADIX 50 PERIOD
+       JRST LE2
+
+QUAN:  SKIPA T,LWT             ;LAST QUANTITY TYPED
+PILOC: MOVEI T, SAVPI
+QUAN1: MOVEM T,SYL
+QUAN2: TLO F,SF+QF             ;WRD,SYL STARTED
+       TLZ F,CF+CCF
+       JRST L2
+
+CONTRO:                                ;SOME KIND OF ALTMODE
+IFN EDDT&1,<   MOVEI T,"$"     ;$
+       PUSHJ P,TOUT            ;TYPE OUT $
+>
+DOLLAR:        TLOE F,CF
+       TLO F,CCF
+       JRST L2
+
+\f
+EVAL:  MOVE R,PRGM             ;LOOK UP SYMBOL
+EVAL0: HRLOI W1,37777+DELI
+       HLRE S,@SYMP
+       ASH S,-1        ;SETUP END TEST
+       JRST EVAL3
+
+EVAL1: ADD R,[XWD 2,2]
+EVAL2: SKIPL R
+       MOVE R,@SYMP
+       AOJG S,CPOPJ            ;TRNASFER IF NO SYMBOL FOUND
+EVAL3: MOVE T,(R)
+       XOR T,SYM
+       TLNN T,PNAME
+       TLOA W1,LOCAL
+       TDNE T,W1
+       JRST EVAL1
+       TLNN T,340000
+       JRST EVAL1
+       MOVE T,1(R)
+CPOPJ1:        AOS (P)         ;FOUND SYMBOL, SKIP
+CPOPJ: POPJ P,
+
+;BIT 40 - DELETE OUTPUT
+; 20 - DELETE INPUT
+; 10 - LOCAL
+; 04 -GLOBAL
+; NO BITS - PROGRAM NAME
+
+TEXI:  PUSHJ P,TEXIN           ;INPUT TEXT
+       MOVEM T,SYL
+       MOVEI W1,5
+       MOVEI T-1,0
+       PUSHJ P,TEXIN
+       CAIN T,33               ;NEW ALT MODE, ESCAPE
+       JRST QUAN2
+       TLNE F,CF
+       JRST SIXBIN
+       SKIPA
+TEXI2: PUSHJ P,TEXIN
+       CAMN T,SYL
+       SOJA W1,TEXI3
+       ROT T,-7
+       LSHC T-1,7
+       SOJA W1,TEXI2
+
+TEXI3: LSHC T-1,-43
+       JUMPL W1,QUAN1
+       LSH T,7
+       SOJA W1,.-2
+
+\fSIXBI1:       PUSHJ P,TEXIN    ; INPUT TEXT (SIXBIT)
+SIXBIN:        CAMN T,SYL
+       JRST SIXBI2
+       ANDI T,77
+       TRC T,40
+       ROT T,-6
+       LSHC T-1,6
+       SOJA W1,SIXBI1
+SIXBI2:        MOVE T,T-1
+       JUMPL W1,QUAN1
+       LSH T,6
+       SOJA W1,.-2
+
+KILL:  TLNN F,LTF              ;DELETE SYMBOLS
+       JRST KILLA
+       PUSHJ P,EVAL
+       JRST KILL1
+       MOVEI T,DELO/200000             ;DELETE OUTPUT
+       TLNE F,CCF
+       MOVEI T,DELI/200000             ;NO INPUT OR OUTPUT
+       DPB T,[POINT 2,(R),1]   ;LEFT 2 BITS IN SYMBOL
+KILRET:        JRST RET                ;USED AS A CONSTANT
+
+KILLA: TLNN F,QF
+       TLNN F,CCF
+       JRST ERR
+       MOVE R,KILC
+       MOVEM R,@SYMP           ;RESTORE INIT SYMS
+       HRRZM R,ESTU
+       MOVEM R,PRGM
+       HRLZI T,DELO+DELI
+       ANDCAM T,(R)            ;GET RID OF DELETE BITS IN INITIAL TABLE
+       AOBJN R,.+1
+       AOBJN R,.-2
+       JRST RET
+
+KILL1: MOVE R,ESTU             ;REMOVE UNDEFINED SYMS
+       JUMPGE R,UNDEF
+KILL2: PUSHJ P,EVAL0
+       JRST RET
+       PUSHJ P,REMUN
+       JRST KILL2
+
+REMUN: MOVE S,[XWD 2,2]        ;REMOVE ONE UNDEFINED SYMBOL
+       ADDB S,ESTU
+       MOVE W,-2(S)
+       MOVEM W,(R)
+       MOVE W,-1(S)
+       MOVEM W,1(R)
+       POPJ P,
+
+\f
+TAG:   TLNN F,LTF   ; NO LETTERS IS ERROR
+       JRST ERR   ; GO SAY ERROR
+       TLNE F,FAF   ; DEFINE SYMBOLS
+       JRST DEFIN              ;A<B:
+       TLNE F,CF               ;DEFINE SYMBOL AS OPEN REGISTER
+       JRST SETNAM
+       MOVE W,LLOCO
+       HRRZM W,DEFV
+
+DEFIN: PUSHJ P,EVAL
+       JRST DEF1
+       CAMGE R,KILC            ;INITIAL SYMBOL?
+       JRST DEF2               ;NO, REDEFINE
+       MOVEI T,DELI/200000     ;YES, DELETE AND DEFINE NEW ONE
+       DPB T,[POINT 2,(R),1]   ;LEFT 2 BITS OF SYMBOL\r
+DEF1:  MOVN R,[XWD 2,2]
+       ADDB R,@SYMP    ;MOVE UNDEFINED TABLE 2 REGISTERS
+       HRRZ T,ESTU
+       SUBI T,2
+       HRL T,ESTU
+       HRRM T,ESTU
+       SKIPGE ESTU
+       BLT T,-1(R)
+DEF2:  MOVE T,DEFV
+       MOVEM T,1(R)            ;PUT IN NEW VALUE
+       MOVSI T,GLOBAL
+       IORB T,SYM
+       MOVEM T,(R)             ;PUT IN NEW SYM AS GLOBAL
+       MOVE R,ESTU
+
+DEF3:  JUMPGE R,RET            ;PATCH IN VALUE FOR UNDEF SYM ENTRY
+       MOVE T,SYM
+       CAME T,(R)
+       JRST DEF4
+       MOVE S,DEFV
+       SKIPGE, 1(R)
+       MOVN S,S
+       PUSH P,R
+       MOVE R,1(R)
+       PUSHJ P,FETCH
+       JRST ERR
+       ADD S,T
+       HRRM S,T
+       PUSHJ P,DEP
+       POP P,R
+       PUSHJ P,REMUN
+DEF4:  ADD R,[XWD 2,2]         ;REMOVE THE NOW DEFINED SYMBOL
+       JRST DEF3
+\f
+SETNAM:        MOVE R,@SYMP            ;SET PROGRAM NAME - DOLLAR COLON
+SET1:  MOVE W,R
+SET2:  JUMPGE R,UNDEF
+       MOVE T,(R)
+       ADD R,[XWD 2,2]
+       TLNE T,PNAME
+       JRST SET2
+       CAME T,SYM
+       JRST SET1
+       MOVEM W,PRGM
+       JRST RET
+
+MULT:  TLOA F,PTF+MLF          ;*
+DIVD:  TLO F,DVF+PTF           ;SINGLE QUOTE
+       JRST L1
+
+ASSEM: JRST PLUS               ;#
+MINUS: TLO F,MF
+PLUS:  TLO F,PTF
+       JRST LIS2
+
+LPRN:  CAML P,[XWD LPDL-4,0]   ;LEFT PARENTHESIS
+       JRST ERR
+       PUSH P,F                ;RECURSE FOR OPEN PAREN
+       PUSH P,WRD
+       PUSH P,FRASE
+       PUSH P,FRASE1
+       AOS,PRNC
+       JRST LIS
+
+INDIRECT:      HRLZI W,20              ;@
+       IORB W,WRD
+       TLO F,QF
+       JRST LIS2
+
+ACCF:  MOVE R,T                ;COMMA
+       HLLZS T
+       LDB W1,[POINT 3,WRD,2]  ;CHECK FOR IO INSTRUCTION
+       IDIVI W1,7
+       LSH R,27(W1)
+       ADD T,R
+       ADDB T,WRD
+       JRST SPACE+1
+
+SPACE: TLNE F,QF
+       TLO F,TIF
+SPAC1: TLZ F,MF+PTF
+       JRST LIS1
+\f
+RPRN:  TLNN F,QF               ;)
+       MOVEI T,0
+       MOVS T,T
+       SOSGE,PRNC
+       JRST ERR
+       POP P,FRASE1
+       POP P,FRASE
+       POP P,WRD
+       POP P,F
+       TLNE F,PTF
+       TLNE F,SF
+       JRST RPRN1
+       MOVEM T,SYL
+       TLO F,QF+SF
+       JRST L1RPR
+RPRN1: ADDB T,WRD
+       TLO F,QF
+       JRST L1RPR-1
+\f
+;REGISTER EXAMINATION LOGIC
+
+LINEF: PUSHJ P,DEPRA   ;NEXT REGISTER
+IFE EDDT&1,<PUSHJ P,CRNRB
+       JRST .+2>
+LI0:   PUSHJ P,CRF
+       AOS T,LLOC
+LI1:   HRRZM T,LLOC
+       HRRZM T,LLOCO
+       PUSHJ P,PAD
+       MOVEI T,"/"
+       TLNE F,STF
+       MOVEI T,"!"
+       PUSHJ P,TOUT
+LI2:   TLZ F,ROF
+       PUSHJ P,LCT
+       MOVE R,LLOCO
+       PUSHJ P,FETCH
+       JRST ERR
+       TLO F,ROF
+       TLNE F,STF
+       JRST DD2
+       JRST CONSYM             ;RETURN IS A POPJ
+
+VARRW: PUSHJ P,DEPRA           ;^
+       PUSHJ P,CRF
+       SOS T,LLOC
+       JRST LI1
+
+CARR:  PUSHJ P,DEPRA           ;CLOSE REGISTER
+       IFN EDDT&1,<JRST DD1>
+       IFE EDDT&1,<    PUSHJ P,TIN
+       CAIN T,15
+       JRST .-2
+       JRST DD1.5>
+
+OCON:  TROA F,LF1+CF1          ;OPEN AS CONSTANT
+OSYM:  TRZ F,CF1               ;OPEN SYMBOLICALLY
+       TROA F,LF1
+SUPTYO:        TLOA F,STF              ;SUPPRESS TYPEOUT
+SLASH: TLZ F,STF               ;TYPE OUT REGISTER
+       TLNE F,QF
+       HRRZM T,LLOC            ;QUANTITY TYPED
+SLAS1: HRRZM T,LLOCO
+       JRST LI2
+
+ICON:  TLNN F,ROF      ;REGISTER OPENED OR ERR
+       JRST ERR
+       PUSHJ P,DEPRS
+       JRST SLAS1
+
+\f
+TAB:   PUSHJ P,DEPRS   ;OPEN REGISTER OF Q
+       MOVEI T,-1(T)
+       MOVEM T,LLOC
+       HRROI T,700000  ;3 RUBOUTS
+       PUSHJ P,TEXTT
+       JRST LI0
+
+DEPRA: TLNE F,ROF              ;IF REGISTER IS BEING CHANGED
+       TLNN F,QF               ;REMOVE ALL PREVIOUS UNDEFINED
+       JRST DEPRS              ;SYMBOL REFERENCES TO IT
+       MOVE R,ESTU
+       MOVEM W1,ESTU
+DEPRA2:        JUMPGE R,DEPRS
+       HRRZ W,1(R)
+       CAMN W,LLOCO
+       PUSHJ P,REMUN
+       ADD R,[XWD 2,2]
+       JRST DEPRA2
+
+EQUAL: TROA F,LF1+CF1          ;=
+PSYM:  TRZ F,CF1               ;@
+       TRO F,LF1
+       PUSHJ P,CONSYM
+       JRST RET
+
+R50PNT:        LSH T,-36       ;RADIX 50 SYMBOL PRINTER
+       TRZ T,3
+       PUSHJ P,TOC
+       PUSHJ P,TSPC
+       MOVEI W1,LWT    ;SETUP FOR SPT
+       JRST SPT
+
+SIXBP: MOVNI W2,6              ;SIXBIT PRINTER
+       MOVE W1,LWT
+SIXBP1:        MOVEI T,0
+       ROTC T,6
+       ADDI T,40
+       PUSHJ P,TOUT
+       AOJL W2,SIXBP1
+       POPJ P,
+\f
+;MODE CONTROL SWITCHES
+
+TEXO:  MOVEI R,TEXTT-HLFW      ;$T ASSUME 7 BIT ASCII
+       MOVE T,WRD2
+       CAIN T,6                ;CHECK FOR $6T
+       MOVEI R,SIXBP-HLFW      ;SET MODE SWITCH FOR SIXBIT
+       CAIN T,5                ;CHECK FOR $5T
+       MOVEI R,R50PNT-HLFW     ;SET MODE SWITCH FOR RADIX 50
+HWRDS: ADDI R,HLFW-TFLOT               ;H
+SFLOT: ADDI R,TFLOT-PIN                ;F
+SYMBOL:        ADDI R,PIN-FTOC         ;S
+CON:   ADDI R,FTOC             ;C
+       HRRZM R,SCH
+       JRST BASE1
+
+RELA:  TRZE F,Q2F              ;CHANGE ADDRESS MODE TO RELATIE
+       JRST BASECH
+       MOVEI R,PADSO-TOC
+ABSA:  ADDI R,TOC              ;A
+       HRRZM R,AR
+       JRST BASE1
+
+BASECH:        MOVE T,WRD2             ;$NR  CHANGE OUTPUT RADIX TO N, N>1
+       CAIGE T,2
+       JRST ERR
+       HRRZM T,ODF
+BASE1: MOVS S,[XWD SCHM,SCH]
+       TLNN F,CCF
+       JRST LIS1
+       BLT S,ODFM      ;WITH $$, MAKE MODES PERMANENT
+       JRST RET
+
+SEMIC: MOVEM T,LWT             ;SEMICOLON TYPES IN CURRENT MODE
+       JRST @SCH
+\f;GO AND EXECUTE LOGIC
+
+GO:    HRLI T,254000             ;G
+       TLOE F,QF
+       JRST XEC0
+       IFN EDDT&1,<    SKIPE T,STARTA> ;LOAD TAPE START ADDRESS
+       IFE EDDT&1,<    HRR T,JOBSA>    ;GET STARTING ADDRESS
+
+XEC:   TLNN F,QF               ;X
+       JRST ,ERR
+XEC0:  MOVEM T,TEM
+       PUSHJ P,CRF
+       PUSHJ P,TTYLEV
+       PUSHJ P,INSRTB
+       JSP T,RESTORE
+       XCT,TEM
+XEC1:  JRST DDT                ;USED  AT PROC0
+       JSR,SAVE
+       PUSHJ P,REMOVB
+       PUSHJ P,CRF
+       JRST DD1
+
+\f;BREAK POINT LOGIC
+BP1:   REPEAT NBP,<    0               ;JSR TO HERE FOR BREAKPOINT
+       JSA T, BCOM
+       0               ;HOLDS INSTRUCTION WHILE BREAKPOINT IS IN PLACE
+>
+
+B1INS=BP1+2
+BPN=.-3
+\f
+BCOM:  0
+       POP T,LEAV              ;MOVE INSTRUCTION TO LEAV
+       MOVEI T,B1SKP-B1INS+1(T)
+       HRRM T,BCOM3            ;CONDITIONAL BREAK SETUP
+       MOVEI T,B1CNT-B1SKP(T)
+       HRRM T,BCOM2            ;PROCEDE COUNTER SETUP
+       MOVE T,BP1-B1CNT(T)
+IFN EDDT&1,<   TLZ T,010000            ;TURN OFF USER MODE BIT>
+       HLLM T,LEAV1            ;SAVE FLAGS FOR RESTORING
+       EXCH T,BCOM
+
+BCOM3: SKIPE B1SKP             ;ADDR MOD TO LOOK AT COND. INST.
+       XCT @.-1
+BCOM2: SOSG B1CNT              ;ADDR MOD TO LOOK AT PROCEED COUNTER
+       JRST BREAK
+
+       MOVEM T,AC0+T
+       LDB T,[POINT 9,LEAV,8]  ;GET INSTRUCTION
+       CAIL T,264      ;JSR
+       CAILE T,266     ;JSA,JSP
+       TRNN T,700      ;UUO
+       JRST PROC1              ;MUST BE INTERPRETED
+       CAIE T,260      ;PUSHJ
+       CAIN T,256      ;XCT
+       JRST PROC1              ;MUST BE INTERPRETED
+       MOVE T,AC0+T
+       JRST 2,@LEAV1           ;RESTORE FLAGS, GO TO LEAV
+
+LEAV1: XWD 0,LEAV
+\fBREAK:        JSR SAVE                ;SAVE THE WORLD
+       PUSHJ P,REMOVB          ;REMOVE BREAKPOINTS
+       SOS T,BCOM3
+       HRRZS T                 ;GET ADDR OF BREAKPOINT JUST HIT
+       PUSHJ P,PADSO           ;PRINT ITS NAME- $NB
+       MOVSI W1,(ASCII />/)            ;TYPE > FOR COND BREAK
+       SKIPG @BCOM2            ;TEST PROCEED COUNTER
+       MOVSI W1,(ASCII />>/)   ;TYPE >> FOR PROCEED COUNTER BREAK
+       PUSHJ P,TEXT2
+       MOVE T,BCOM
+       HLLM T, SAVPI           ;SAVE PROCESSOR FLAGS
+       MOVEI T,-1(T)
+       PUSHJ P,PAD             ;TYPE PC AT BREAK
+       HRRZ T,@BCOM3
+       HRRM T,PROC0            ;SETUP ADDRESS OF BREAK
+       HLRZ T,@BCOM3
+       JUMPE T,BREAK1          ;TEST FOR REGISTER TO EXAMINE
+       PUSHJ P,LCT             ;PRINT TAB
+       HLRZ T,@BCOM3
+       PUSHJ P,LI1             ;EXAMINE REGISTER C($NB)LEFT
+BREAK1:        HRRZ R,BCOM3
+       SUBI R,B1ADR
+       IDIVI R,3               ;GET BREAKPOINT NUMBER-1 INTO R
+       MOVEI S,1
+       LSH S,(R)
+       PUSHJ P,LISTEN          ;DONT PROCEED IF TTY KEY HIT
+       TDNN S,AUTOPI           ;DONT PROCEED IF NOT AUTOMATIC
+       JRST RET                ;DONT PROCEED
+       JRST PROCD1
+
+PROCEDE: TLNN F,QF             ;N$P    ;PROCEED AT A BREAKPOINT
+       MOVEI T,1
+       MOVEM T,@BCOM2
+       HRRZ R,BCOM3
+       PUSHJ P,AUTOP
+PROCD1:        PUSHJ P,CRF
+       PUSHJ P,TTYLEV
+PROC0: HRRZI R,XEC1            ;MODIFIED TO ADDR OF BREAKPOINT
+       PUSHJ P,FETCH
+       JRST BPLUP1             ;ONLY GET HERE IF MEMORY SHRANK
+       MOVEM T,LEAV
+       PUSHJ P,INSRTB
+       JRST PROC2
+
+PROC1: MOVE T,AC0+T
+       JSR SAVE
+       JFCL
+PROC2: MOVEI W,100
+       MOVEM W,TEM1            ;SETUP MAX LOOP COUNT
+       JRST IXCT5
+\fIXCT4:        IFE EDDT&1,<    SUBI T,041
+       JUMPE T,BPLUP
+       AOJGE T,IXCT6>                          ;DONT PROCEDE FOR INIT
+                               ;DONT INTERPRET FOR SYSTEM UUOS
+       MOVEM R,40              ;INTERPRET FOR NON-SYSTEM UUOS
+       MOVEI R,41
+IXCT:  SOSL TEM1
+       PUSHJ P,FETCH
+       JRST BPLUP              ;BREAKPOINT LOOPING OR FETCH FAILED
+       MOVEM T,LEAV
+IXCT5: IFN EDDT&1,<
+       LDB T,[POINT 9,LEAV,8]  ;GET INSTRUCTION
+       CAIN T,254              ;DON'T DO ANYTHING TO JRST IN EXEC MODE
+       JRST IXCT6>
+       HRLZI 17,AC0
+       BLT 17,17
+       MOVEI T,@LEAV
+       DPB T,[POINT 23,LEAV,35]        ;STORE EFFECTIVE ADDRESS
+       LDB W1,[POINT 4,LEAV,12]        ;PICK UP AC FIELD
+       LDB T,[POINT 9,LEAV,8]          ;PICK UP INSTRUCTION FIELD
+       MOVEI P,PS
+       CAIN T,260
+       JRST  IPUSHJ            ;INTERPRET PUSHJ
+
+       CAIN T,264
+       JRST IJSR               ;INTERPRET JSR
+       CAIN T,265
+       JRST IJSP               ;INTERPRET JSP
+       CAIN T,266
+       JRST IJSA               ;INTERPRET JSA
+       MOVE R,LEAV
+       TRNN T,700
+       JRST IXCT4              ;INTERPRET UUO
+       CAIN T,256
+       JRST IXCT               ;INTERPRET XCT
+
+IXCT6: JSP T,RESTORE
+LEAV:  0                       ;INSTRUCTION MODIFIED
+       JRST @BCOM
+       AOS BCOM
+       JRST @BCOM
+
+BPLUP: PUSHJ P,REMOVB          ;BREAKPOINT PROCEED ERROR
+BPLUP1:        JSR SAVE
+       JFCL
+       JRST ERR
+\f
+IPUSHJ:        DPB W1,[POINT 4,CPUSHP,12]      ;STORE AC FIELD INTO A PUSH
+       CLEARM,TEM3
+       MOVE T,LEAV
+       JRST RESTR1
+
+IJSA:  MOVE T,BCOM             ;INTERPRET JSA
+       HRL T,LEAV
+       EXCH T,AC0(W1)
+       JRST IJSR2
+
+IJSR:  MOVE T,BCOM             ;INTERPRET JSR
+       HLL T,SAVPI
+IJSR2: MOVE R,LEAV
+       PUSHJ P,DEP
+       AOSA T,LEAV
+IJSR3: MOVE T,LEAV
+       JRST RESTORE
+
+IJSP:  MOVE W,BCOM             ;INTERPRET JSP
+       HLL T,SAVPI
+       MOVEM W,AC0(W1)
+       JRST IJSR3
+
+;INSERT BREAKPOINTS
+
+INSRTB:        MOVE S,[JSR BP1]
+INSRT1:        SKIPE R,B1ADR-BP1(S)
+       PUSHJ P,FETCH
+       JRST INSRT3
+       MOVEM T,B1INS-BP1(S)
+       MOVE T,S
+       PUSHJ P,DEP
+INSRT3:        ADDI S,3
+       CAMG S,[JSR BPN]
+       JRST INSRT1
+       POPJ P,
+
+;REMOVE BREAKPOINTS
+
+REMOVB:        MOVEI S,BNADR
+REMOV1:        MOVE T,B1INS-B1ADR(S)
+       SKIPE R,(S)
+       PUSHJ P,DEP
+REMOV3:        SUBI S,3
+       CAIL S,B1ADR
+       JRST REMOV1
+       IFN EDDT&1,<JRST TTYRET>
+       IFE EDDT&1,<POPJ P,>
+
+;IN EXEC MODE, SAVE UP TTY STATUS
+;IN USER MODE, DONE BY SAVE
+\f
+;ALL $B COMMANDS GET HERE IN FORM: <A>$<N>B
+
+
+BPS:   TLZE F,QF               ;HAS <A> BEEN TYPED?
+       JRST BPS1               ;YES
+       TRZE F,Q2F              ;NO, HAS <N> BEEN TYPED?
+       JRST BPS2               ;YES
+       MOVE T,[XWD B1ADR,B1ADR+1]      ;NO, COMMAND IS $B - CLEAR ALL BREAKPOINTS
+       CLEARM B1ADR
+       BLT T,AUTOPI            ;CLEAR OUT ALL BREAKPOINTS AND AUTO PROCEDE REGESTER
+       JRST RET
+
+BPS1:  TRZN F,Q2F              ;HAS <N> BEEN TYPED?
+       JRST BPS3               ;NO
+       MOVE R,T                ;YES, PROCESS THE COMMAND A$NB
+       TRO F,2
+BPS2:  MOVE T,WRD2
+       CAIL T,1
+       CAILE T,NBP
+       JRST ERR
+       IMULI T,3
+       ADDI T,B1ADR-3
+       TRZN F,2
+       JRST MASK2
+       EXCH R,T
+       JRST BPS5
+
+BPS3:  MOVEI R,B1ADR           ;PROCESS THE COMMAND A$B
+BPS4:  HRRZ W,(R)
+       CAIE W,(T)
+       SKIPN (R)
+       JRST BPS5
+       ADDI R,3
+       CAIG R,BNADR
+       JRST BPS4
+       JRST ERR
+BPS5:  MOVEM T,(R)
+       CLEARM,1(R)
+       CLEARM,2(R)
+
+AUTOP: SUBI R,B1ADR            ;AUTO PROCEDE SETUP SUBROUTINE
+       IDIVI R,3
+       MOVEI S,1
+       LSH S,(R)
+       ANDCAM S,AUTOPI
+       TLNE F,CCF
+       IORM S,AUTOPI
+       POPJ P,
+
+\f;FETCH AND DEPOSIT INTO MEMORY
+
+
+DEPRS: MOVEM T,LWT             ;DEPOSIT REGISTER AND SAVE AS LWT
+DEPR:  MOVE R,LLOCO    ;QUAN TYPED IN REGIS EXAM
+       TLZE F,ROF
+       TLNN F,QF
+       POPJ P,0
+DEP:   TRNN R,777760
+       JRST DEP1
+IFE EDDT&1,<   HRRZ W,JOBREL
+       CAIL W,(R)>
+
+       MOVEM T,0(R)
+       POPJ P,0
+DEP1:  MOVEM T,AC0(R)
+       POPJ P,0
+
+FETCH: IFE EDDT&1,<HRRZ T,JOBREL
+       CAIGE T,(R)
+       POPJ P,>
+       TRNN R,777760
+       SKIPA T,AC0(R)
+       MOVE T,(R)
+       JRST CPOPJ1
+\fFIRARG:       MOVEM T,DEFV
+       TLO F,FAF
+       JRST ULIM1
+ULIM:  TLO F,SAF
+       HRRZM T,ULIMIT
+ULIM1: TLNN F,QF
+       JRST ERR
+       JRST LIS0
+
+
+LOOK:  SKIPL R,PRGM    ;LOOK UP SYMBOL
+       MOVE R,@SYMP
+       HLRE S,@SYMP
+       ASH S,-1        ;SETUP COUNT FOR LENGTH OF SYM TABLE
+       TLZ F,400000
+       HRLZI W2,DELO+DELI
+       MOVEM T,TEM
+
+LOOK1: TDNE W2,(R)
+       JRST LOOK3
+       MOVE T,(R)
+       TLNN T,PNAME    ;NAME
+       TLOA W2,LOCAL
+       SKIPA T,TEM
+       JRST LOOK3
+       MOVE W,1(R)
+       XOR W,T
+       JUMPL W,LOOK3
+       SUB T,1(R)
+       JUMPL T,LOOK3
+       JUMPGE F,LOOK2
+       MOVE W,1(R)
+       SUB W,1(W1)
+       JUMPLE W,LOOK3
+LOOK2: HRR W1,R                ;POINTER BEST VALUE SO FAR
+       TLO F,400000
+       JUMPE T,SPT0
+LOOK3: ADD R,[XWD 2,2]
+       SKIPL R
+       MOVE R, @SYMP
+       AOJLE S,LOOK1   ;TERMINATING CONDITION
+       MOVE T,TEM
+       TLNE F,400000
+       SUB T,1(W1)
+       JRST CPOPJ1
+\f
+CONSYM:        MOVEM T,LWT
+CONSM: TRNN F,LF1
+CONS1: JRST @SCH               ;PIN OR FTOC
+       TRNE F,CF1
+       JRST  FTOC
+
+PIN:                           ;PRINT INSTRUCTION
+       TLC T,700000
+       TLCN T,700000
+       JRST INOUT              ;IN-OUT INSTRUCTION OR NEG NUM
+       AND T,[XWD 777000,0]
+       JUMPE T,PI3
+       PUSHJ P,OPTYPE
+       MOVSI   T,777000
+       AND     T,LWT
+       TRNN F,ITF              ;HAS INSTRUCTION BEEN TYPED?
+       PUSHJ P,LOOK            ;NO, LOOK IN SYMBOL TABLE
+       TROA F,NAF              ;INSTRUCTION TYPED, ALOOW NEG ADDRESSES
+       JRST HLFW               ;NOT FOUND, OUTPUT AS HALFWORDS
+       PUSHJ P,TSPC
+PI3:   LDB T,[XWD 270400,LWT]  ;GET AC FIELD
+       JUMPE T,PI4
+       PUSHJ P,PAD
+PI3A:  MOVEI W1,","
+PI3B:  PUSHJ P,TEXT
+PI4:   MOVE W1,LWT
+       MOVEI T,"@"
+       TLNE W1,20              ;CHECK FOR INDIRECT BIT
+       PUSHJ P,TOUT
+PI5:   HRRZ T,LWT
+       LDB W1,[XWD 331100,LWT] ;INSTRUCTION BITS
+       CAIL W1,240
+       CAILE W1,247
+       JRST PI8
+       PUSHJ P,PADS3A
+PI7:   TRZ F,NAF       
+       LDB R,[XWD 220400,LWT]  ;INDEX REGISTER CHECK
+       JUMPE R,PADS1           ;EXIT
+       MOVEI T,"("
+       PUSHJ P,TOUT
+       MOVE T,R
+PI7.1: PUSHJ P,PAD
+       MOVEI T,")"
+       JRST TOUT               ;EXIT
+
+PI8:   PUSHJ P,PAD
+       JRST PI7
+
+\f
+HLFW:  MOVEI T,"("             ;PRINT AS HALF WORDS
+       PUSHJ P,TOUT
+       HLRZ T,LWT
+       PUSHJ P,PI7.1
+       HRRZ T,LWT
+
+PAD:   ANDI T,777777           ;PRINT ADDRESS
+       JRST @AR                ;PADSO OR PAD1
+PADSO: JUMPE T,TOC2+1
+       PUSHJ P,LOOK
+PADS1: POPJ P,0
+       MOVE W2,1(W1)
+       CAIGE T,100
+       CAIGE W2,60
+       JRST PADS3
+       MOVEM T,TEM
+       JUMPGE F,PAD1
+       PUSHJ P,SPT0
+       MOVEI T,"+"
+PADS1A:        PUSHJ P,TOUT
+PADS2: HRRZ T,TEM
+PAD1:  JRST TOC                ;EXIT
+
+PADS3: MOVE T,TEM
+PADS3A:        TRNE F,NAF
+       CAIGE T,776000
+       JRST TOC
+PADS3B:        MOVNM T,TEM
+PADS4: MOVEI T,"-"
+       JRST PADS1A
+
+INOUT: TDC T,[XWD -1,400000]   ;IO INSTRUCTION OR NEG NUM
+       TDCN T,[XWD -1,400000]
+       JRST PADS3B             ;TYPE AS NEG NUM
+       LDB R,[POINT 3,T,12]
+       DPB R,[POINT 6,T,8]     ;MOVE IO BITS OVER FOR OP DECODER
+       PUSHJ P,OPTYPE
+       PUSHJ P,TSPC
+       MOVSI T,077400
+       AND T,LWT
+       JUMPE T,PI4
+       PUSHJ P,LOOK            ;LOOK FOR DEVICE NUMBER
+       JRST PI3A
+       MOVE T,TEM
+       LSH T,-30
+       PUSHJ P,TOC
+       JRST PI3A
+\f
+MASK:  TLNE F,QF
+       JRST MASK1
+       MOVEI T,MSK
+MASK2: MOVEI W,1
+       MOVEM W,FRASE1
+       JRST QUAN1
+MASK1: MOVEM T,MSK
+       JRST RET
+
+EFFEC: TLO F,LTF
+       HRRZ T,T
+WORD:  MOVEI R,322000-326000   ;JUMPE-JUMPN
+NWORD: ADDI R,326000+40*T      ;JUMPN T,
+       HRLM R,SEAR2
+
+SEARC: TLZN F,QF
+       JRST ERR
+       SETCAM T,WRD
+       MOVSI T,FRASE-DEN-1             ;PREVENT TYPE OUT OF DDT PARTS
+       SETCMM FRASE(T)
+       AOBJN T,.-1
+       MOVE T,ULIMIT
+       TLNE F,SAF
+       TLO F,1
+       PUSHJ P,SETUP1
+       PUSHJ P,CRF
+SEAR1: PUSHJ P,FETCH
+       JRST SEAR2A
+       TLNE F,LTF      ;CHECK FOR EFFECTIVE ADDRESS SEARCH
+       JRST EFFEC0
+       EQV T,WRD
+       AND T,MSK
+SEAR2: JUMPE T,SEAR3           ;OR JUMPN T
+SEAR2A:        PUSHJ P,LISTEN  ;QUIT ON TELETYPE
+       AOBJN R,SEAR1
+       SETCMM LWT
+       JRST DD1
+\fSEAR3:        PUSHJ P,FETCH
+       JRST ERR
+       MOVEM T,LWT
+       MOVEM R,TEM2
+       MOVEM R,T
+       HRRZM R,LLOC
+       HRRZM R,LLOCO
+       PUSHJ P,PAD
+       MOVEI T,"/"
+       PUSHJ P,TOUT
+       PUSHJ P,LCT
+       MOVE T,LWT
+       PUSHJ P,CONSYM
+       PUSHJ P,CRF
+       SETCMM LWT
+       SETCMM TEM
+SEAR4: MOVE R,TEM2
+       JRST  SEAR2A
+
+EFFEC0:        MOVEM R,TEM2
+       MOVEI W,100
+       MOVEM W,TEM
+EFFEC1:        MOVE W,T
+       LDB R,[POINT 4,T,17]    ;GET IR FIELD
+       JUMPE R,EFFEC2
+       HRRZ T,AC0(R)
+       ADD T,W
+EFFEC2:        HRR R,T
+       TLNN W,20               ;INDIRECT BIT CHECK
+       JRST EFFEC3
+       SOSE,TEM
+       PUSHJ P,FETCH
+       JRST SEAR4
+       JRST EFFEC1
+EFFEC3:        MOVE R,TEM2
+       EQV T,WRD
+       ANDI T,777777
+       JRST SEAR2
+
+\f
+SETUP: TLO F,20                ;ZERO
+SETUP1:        ADDI T,1                ;YANK,VERIFY,SEARCHES
+       TLNN F,QF
+SETUP2:        MOVE T,@SYMP
+       HRRZ T,T
+       MOVEM T,ULIMIT
+       HRRZ W,@SYMP
+       CAMGE W,T
+       TLNN F,20
+IFE EDDT&1,<   CAML T,JOBREL>
+IFN EDDT&1,<   JRST .+2>
+
+       JRST ERR
+       HRRZ R,DEFV
+       TLNN F,FAF
+       MOVEI R,0
+       CAML R,ULIMIT
+       JRST ERR
+       MOVEM R,DEFV
+       MOVE W,R
+       SUB W,ULIMIT
+       HRLM W,R
+       POPJ P,0
+
+ZERO:  TLNN F,CCF
+       JRST ERR
+       PUSHJ P,SETUP
+ZERO1: TRNE R,777760
+       JRST ZERO2
+       CLEARM,AC0(R)
+       AOBJN R,ZERO1
+       JRST DD1
+ZERO2: HRRZ R, R
+       CAIGE R,ZLOW
+       MOVEI R,ZLOW            ;DON'T ZERO 20-ZLOW
+       HRRZ S,T
+       CAIL S, DDT
+       MOVEI S, DDT 
+       CAMLE S,R
+       JSP W,ZEROR
+       HRRZ R,R
+       CAIG R, DDTEND  ; DON'T ZERO OUT
+       MOVEI R, DDTEND  ; DDT
+       HRRZ S,T
+       CAMLE S, R
+       JSP W,ZEROR
+       JRST DD1
+
+ZEROR: HRL R,R
+       CLEARM,(R)
+       ADDI  R, 1
+       BLT R, -1(S)
+       JRST (W)
+
+\f
+FTOC:          ;NUMERIC OUTPUT SUBROUTINE
+TOC:   HRRZ W1,ODF
+       CAIN W1,12
+       JRST  TOC4
+TOCA:  LSHC T,-43
+       LSH W1,-1               ;W1=T+1
+TOC1:  DIVI T,@ODF
+       HRLM W1,0(P)
+TOC3:  JUMPE T,TOC2
+       PUSHJ P,TOCA
+TOC2:  HLRZ T,0(P)
+       ADDI T,"0"
+CJTOUT:        JRST TOUT       ;DOES POPJ TO TOC2 OR EXIT
+
+TOC4:  MOVM W1,T
+       JUMPGE T,TOC5
+       MOVEI T,"-"
+       PUSHJ P,TOUT
+TOC5:  MOVEI T,0
+       PUSHJ P,TOC1
+TOC6:  MOVEI T,"."
+       JRST TOUT
+
+;SYMBOL OUTPUT SUBROUTINE
+
+SPT0:  HRRZM W1,SPSAV          ;SAVE POINTER TO TYPED SYM
+SPT:   MOVE T,CJTOUT           ;RADIX 50 SYMBOL PRINT
+SPT4:  MOVEM T,SPTX            ;SETUP OUTPUT DESTINATION
+       LDB T,[POINT 32,0(W1),35]       ;GET SYMBOL
+SPT1:  IDIVI T,50
+       HRLM W1,0(P)
+       JUMPE T,SPT2
+       PUSHJ P,SPT1
+SPT2:  HLRZ T,0(P)
+       JUMPE T,CPOPJ           ;FLUSH NULL CHARACTERS
+       ADDI T,260-1
+       CAILE T,271
+       ADDI T,301-272
+       CAILE T,332
+       SUBI T,334-244
+       CAIN T,243
+SPT3:  MOVEI T,256
+SPTX:  0               ;JRST TOUT, OR IDPB T,R FROM OPEVAL
+       POPJ P,
+
+SYMD:  MOVEI T,DELO/200000     ;$D ;DELETE LAST SYM & PRINT NEW
+       HRRZ R,SPSAV            ;PICK UP POINTER TO LAST SYM
+       JUMPE R,ERR
+       DPB T,[POINT 2,(R),1]   ;STORE SEMI-DELETE BITS IN SYMBOL
+       MOVE T,LWT
+       JRST CONSYM             ;PRINT OUT NEXT BEST SYMBOL
+\f
+;FLOATING POINT OUTPUT
+
+TFLOT: MOVE A,T
+       JUMPG A, TFLOT1
+       JUMPE A,FP1A
+       MOVNS A
+       MOVEI T,"-"
+       PUSHJ P,TOUT
+       TLZE A,400000
+       JRST FP1A
+TFLOT1:        MOVEI T,"#"  ; IF UNNORMALIZED FLOATING 
+       TLNN A, 400  ; POINT NUMBER, SO INDICATE 
+       PUSHJ P, TOUT ; WITH "#" BEFORE NUMBER
+
+FP1:   MOVEI B,0
+       CAMGE A,FT01
+       JRST FP4
+       CAML A,FT8
+       AOJA B,FP4
+FP1A:  MOVEI C,0
+
+FP3:   MULI A,400
+       ASHC B,-243(A)
+       MOVE A,B
+       CLEARM,TEM1
+       PUSHJ P,FP7
+       PUSHJ P,TOC6            ;PRINT DECIMAL POINT
+       MOVNI A,10
+       ADD A,TEM1
+       MOVE W1,C
+FP3A:  MOVE T,W1
+       MULI T,12
+       PUSHJ P,FP7B
+       SKIPE,W1
+       AOJL A,FP3A
+       POPJ P,
+
+FP4:   MOVNI C,6
+       MOVEI W2,0
+FP4A:  ASH W2,1
+       XCT,FCP(B)
+       JRST FP4B
+       FMPR A,@FCP+1(B)
+       IORI W2,1
+FP4B:  AOJN C,FP4A
+       PUSH P,FSGN(B)
+       PUSHJ P,FP3
+       POP P,W1
+       MOVE A,W2
+       PUSHJ P,TEXT
+
+\fFP7:  JUMPE A,FP7A1
+       IDIVI A,12
+       AOS,TEM1
+FP7A:  HRLM B,(P)
+       JUMPE A,FP7A1
+       PUSHJ P,FP7
+
+FP7A1: HLRZ T,(P)
+FP7B:  ADDI T,260
+       JRST TOUT
+
+       353473426555    ;1.0E32
+       266434157116    ;1.0E16
+FT8:   233575360400    ;1.0E8
+       216470400000    ;1.0E4
+       207620000000    ;1.0E2
+       204500000000    ;1.0E1
+FT:    201400000000    ;1.0E0
+       026637304365    ;1.0E-32
+       113715126246    ;1.0E-16
+       146527461671    ;1.0E-8
+       163643334273    ;1.0E-4
+       172507534122    ;1.0E-2
+FT01:  175631463146    ;1.0E-1
+FT0=FT01+1
+
+FCP:   CAMLE A, FT0(C)
+       CAMGE A, FT(C)
+       Z FT0(C)
+
+FSGN:  ASCII .E-.
+       ASCII .E+.
+
+TEXTT: MOVE W1,T
+TEXT:  TLNN W1,774000          ;LEFT JUSTIFIED UNLESS LEFT CHAR IS NULL
+       LSH W1,35
+TEXT2: MOVEI T,                ;7 BIT ASCII TEXT OUTPUT SUBROUTINE0
+       LSHC T,7
+       PUSHJ P,TOUT
+       JUMPN W1,TEXT2
+       POPJ P,
+
+
+\f
+KILC:  XWD -NSYMS,LOW
+
+WRD:   0
+WRD2:  0
+PRNC:  0
+
+FRASE: 0       ;DONT CHANGE ORDER, SEE  SEARC+3
+SYL:   0
+LWT:   0
+TEM2:  0
+FRASE1:
+TEM3:  0
+DEN:   0
+
+PRGM:  0
+ESTU:  0
+ESTUT: 0
+FSV:   0
+FRACT: 0
+FPWR:  0
+FTERM: 0
+FH:    0
+SYM:   0
+SPSAV: 0       ;POINTER TO LAST SYMBOL TYPED
+DEFV:  0
+ULIMIT:        0
+LLOC:  0
+LLOCO: 0
+SYMP:  XWD PID,JOBSYM
+\f
+SAVPI: 0
+       1177
+SAVTTY:        0
+IFN EDDT&1,<STARTA:    0>      ;START ADR FROM PTR
+MSK:   XWD -1,-1
+B1ADR: 0
+B1SKP: 0
+B1CNT: 0
+
+REPEAT NBP*3-3, <      0>
+
+BNADR=.-3
+AUTOPI:        0
+
+AC0:   BLOCK 17
+
+AC17:  0
+
+SCHM:  EXP PIN         ;DO NOT CHANGE ORDER
+ARM:   EXP PADSO
+ODFM:  EXP 10
+
+SARS:  0
+TEM:   0
+TEM1:  0
+
+\f
+IFN EDDT&1&<EDDT>B36,<
+
+
+PSR:   TLNN F,ROF
+       JRST ERR
+       MOVEM T,LWT
+       PUSHJ P,DEPRS
+       HRRZM R,DEFV            ;R CONTAINS LLOCO
+       MOVE T,R
+       JRST PUN2
+
+PUNCH: TLC F,FAF+QF
+       TLCE F,FAF+QF
+       JRST ERR                ;ONE ARGUMENT MISSING
+PUN2:  ADDI T,1
+       HRRZM T,TEM1
+       SUB T,DEFV
+       JUMPLE T,ERR
+
+PUN1:  MOVEI T,4               ;PUNCH 4 FEED HOLES
+       PUSHJ P,FEED
+       TLNE F,CF               ;PUNCH NON-ZERO BLOCKS?
+       JRST PUNZ               ;YES
+       HRRZ R,DEFV
+       IORI R,37
+       ADDI R,1
+       CAMLE R,TEM1
+       MOVE R,TEM1
+       EXCH R,DEFV
+       MOVE T,R
+       SUB T,DEFV
+       HRL R,T
+       JUMPGE R,RET            ;EXIT OR PUNCH
+
+PBLK:  MOVE T,R
+       SOS W,T         ;INIT CHECKSUM
+       PUSHJ P,PWRD
+PBLK1: PUSHJ P,FETCH
+       JRST ERR
+       ADD W,T
+       PUSHJ P,PWRD
+       AOBJN R,PBLK1
+       MOVE T,W
+       PUSHJ P,PWRD
+       JRST PUN1
+\f
+;PUNCH NON-ZERO BLOCKS
+
+PUNZ0: AOS DEFV                ;LOOK AT NEXT WORD
+PUNZ:  HRRZ W,DEFV             ;ENTER HERE - GET STARTING ADDRESS
+       MOVE R,W
+       SUB W,TEM1              ;CALCULATE NEGATIVE LENGTH
+       HRL R,W                 ;SET UP AOBJN POINTER
+       JUMPGE R,RET            ;FINISHED?
+       CAMG R,[XWD -40,0]      ;BLOCK LONGER THAN 40?
+       HRLI R,-40              ;YES, FIX IT UP
+       MOVSI W1,400000         ;W1 NEGATIVE MEANS FLUSH 0 WORDS
+PUNZ2: PUSHJ P,FETCH           ;GET WORD FROM MEMORY
+       JRST ERR
+       JUMPE T,[AOJA W1,PUNZ4] ;IF WORD IS 0, INDEX 0 WORD COUNTER
+       MOVEI W1,0              ;CLEAR 0 WORD COUNTER
+PUNZ4: JUMPL W1,PUNZ0          ;FLUSH 0 WORD, GET ANOTHER
+       CAIL W1,3               ; NOSKIP FOR 3RD 0 WORD AFTER NON 0 WORD
+       AOSA R                  ;ADVANCE R TO LAST ADR+1
+       AOBJN R,PUNZ2
+       ADD W1,DEFV             ;CALCULATE DEFV-R+W1=-WORD COUNT
+       SUB W1,R
+       HRLM W1,DEFV            ;PUT -WC IN LEFT HALF OF FA
+       EXCH R,DEFV             ;SAVE ADR FOR NEXT BLOCK, GET POINTER
+       JRST PBLK
+
+>
+\fIFN EDDT&1&<EDDT>B36,<
+
+
+LOADER:        TLNE F,QF
+       JRST ERR
+       MOVEI T,400
+       PUSHJ P,FEED
+       MOVE R,LOADE
+LOAD1: MOVE T,0(R)
+       PUSHJ P,PWRD
+       AOBJN R,LOAD1
+       MOVEI T,100
+LOAD2: PUSHJ P,FEED
+       JRST RET
+
+BLKEND:        TLNN F,QF               ;BLOCK END
+       MOVE T,[JRST 4,DDT]
+       TLO T,254000            ;JRST
+       PUSH P,T
+       MOVEI T,100
+       PUSHJ P,FEED
+       POP P,T
+       PUSHJ P,PWRD
+       PUSHJ P,PWRD    ;EXTRA WORD FOR READER TO STOP ON
+       MOVEI T,500
+       JRST LOAD2
+
+PWRD:  MOVEI W1,6
+PWRD2: ROT T,6
+       CONSZ PTPP,20
+       JRST .-1
+       CONO PTPP,50
+       DATAO PTPP,T
+       SOJG W1,PWRD2
+       POPJ P,0
+
+FEED:  CONSZ PTPP,20
+       JRST .-1
+       CONO PTPP,10
+       DATAO PTPP,FEED1
+       SOJN T,FEED
+FEED1: POPJ P,0        ;ADDRESS USED AS A CONSTANT
+
+>
+\fIFN EDDT&1&<EDDT>B36,<
+
+
+VERIFY:        TLO F,LTF
+CORE:  PUSHJ P,SETUP1          ;LOAD TAPES INTO CORE
+       CONO PTRR,60
+CORE1: CONSO PTRR,10
+       JRST .-1
+       DATAI PTRR,T
+       CAME T,LOADE-1          ;JRST 1
+       JRST CORE1
+       PUSHJ P,CRF
+       PUSHJ P,BLOCK
+
+CORE2: PUSHJ P,GETW
+       CAML R,DEFV
+       CAML R,ULIMIT
+       JRST VER3
+       TLNE F,LTF
+       JRST VER2
+       PUSHJ P,DEP
+       JRST VER3
+
+VER2:  MOVEM T,TEM2
+       PUSHJ P,FETCH
+       JRST ERR
+       MOVEM T,TEM3
+       XOR T,TEM2
+       AND T,MSK
+       JUMPE T,VER3
+       PUSH P,S
+       PUSH P,R
+       HRRZ T,R
+       PUSHJ P,PAD
+       MOVEI T,257             ;SLASH
+       PUSHJ P,TOUT
+       PUSHJ P,LCT
+       MOVE T,TEM3             ;CORE CONTENTS
+       PUSHJ P,CONSYM
+       PUSHJ P,LCT
+       MOVE T,TEM2             ;TAPE CONTENTS
+       PUSHJ P,CONSYM
+       PUSHJ P,CRF
+       POP P,R
+       POP P,S
+VER3:  PUSHJ P,LISTEN
+       AOJA R,CORE2
+RUNEND:        PUSHJ P,BLOCK
+       JRST .-1
+
+
+>
+\fIFN EDDT&1&<EDDT>B36,<
+
+
+
+GETW:  JUMPL S,GETW1
+       PUSHJ P,BLOCK
+GETW1: MOVE T,1(S)
+       AOBJP S,.+1
+       POPJ P,0
+
+BLOCKS:        CONO PTRR,60            ;READ DATA BLOCKS
+BLOCK: CONSO PTRR,10
+       JRST .-1
+       DATAI PTRR,W
+       JUMPL W,BLK1
+       MOVEM W,STARTA
+       CONO PTRR,0             ;TURN OFF READER
+       JRST DD1
+BLK1:  MOVEM W,W1              ;INIT CHECKSUM
+       TLC W,777740
+       TLCE W,777740
+       JRST ERR                ;BLOCK TOO BIG
+       ADDI W,1
+       HRRZM W,R
+       HRRI W,BUFF-1
+       MOVEM W,S
+BLK2:  CONSO PTRR,10
+       JRST .-1
+       BLKI PTRR,W
+       JRST BLK3
+       ADD W1,0(W)
+       JRST BLK2
+BLK3:  ADD W1,0(W)
+       CONSO PTRR,10
+       JRST .-1
+       DATAI PTRR,W
+       CAMN W,W1
+       POPJ P,0
+       CONO PTRR,0             ;CHECKSUM ERROR
+       JRST 4,BLOCKS
+
+;R CONTAINS RIGHT HALF OF FIRST LINE
+;S CONTAINS (-WC,BUFF-1)
+
+
+>
+\fIFN EDDT&1&<EDDT>B36,<
+
+
+LOADB:
+
+PHASE 0                        ;RIM10B CHECKSUM LOADER
+       XWD -16,0
+BEG:   CONO PTRR,60
+       HRRI AA,RD+1
+RD:    CONSO PTRR,10
+       JRST .-1
+       DATAI PTRR,@TBL1-RD+1(AA)
+       XCT     TBL1-RD+1(AA)
+       XCT     TBL2-RD+1(AA)
+AA:    SOJA AA,
+
+TBL1:  CAME CKSM,ADR
+       ADD CKSM,1(ADR)
+       SKIPL CKSM,ADR
+
+TBL2:  JRST 4,BEG
+       AOBJN ADR,RD
+ADR:   JRST BEG+1
+CKSM=ADR+1
+
+DEPHASE
+
+LOADE: XWD LOADB-.,LOADB
+>
+
+\f
+
+SAVE:  0               ;SAVE THE ACS AND PI SYSTEM
+       SKIPN SARS
+       JRST SAV1
+       AOS SAVE
+       JRST SAV5
+SAV1:  IFN EDDT&1,<
+       CONI PRS,SAVPI
+       CONO PRS, @SAVPI+1>
+       MOVEM 17,AC17
+       HRRZI 17,AC0
+       BLT 17,AC0+16
+       MOVE T, SAVE
+       HLLM T, SAVPI
+SAV5:  SETOM,SARS
+       MOVEI P,PS
+       IFE EDDT&1,<PUSHJ P,TTYRET>     ;IN USER MODE, GET INTO DDT MODE
+       MOVEI F,0
+       MOVE T,[XWD SCHM,SCH]
+       BLT T,ODF               ;LOAD THE ACS WITH MODE SWITCHES
+       JRST @SAVE
+
+RESTORE: SETOM TEM3    ;RESTORE ACS AND PI SYSTEM
+RESTR1:        HRRM T,SAVE
+       MOVE T,SAVPI
+       HLLM T, SAVE
+IFN EDDT&1,<
+       AND T, SAVPI+1
+       IORI T, 2000    ;TURN ON CHANNELS
+       MOVEM T, SAVPI>
+RES1:  HRLZI 17,AC0
+       BLT 17,17
+       SETZM SARS
+       SKIPL,TEM3
+CPUSHP:        PUSH BCOM       ;PROGRAM MODIFIED AT IPUSHJ
+IFN EDDT&1,<   CONO PRS,@SAVPI>
+       JRST 2,@SAVE
+
+\f
+CRN:   MOVEI T,15              ;CARRIAGE RETURN
+       JRST TOUT
+
+IFE EDDT&1,<
+CRNRB: PUSHJ P,CRN
+       MOVEI T,177
+       JRST TOUT>
+
+CRF:   PUSHJ P,CRN
+LF:    MOVEI T,12              ;LINE FEED
+       JRST TOUT
+
+LCT:   IFN EDDT&1,<PUSHJ P,TSPC
+       PUSHJ P,TSPC>
+       IFE EDDT&1,<MOVEI T,11
+       JRST TOUT>              ;TYPE A TAB
+
+TSPC:  MOVEI T,40              ;SPACE
+       JRST TOUT
+\fIFN EDDT&1,<  ;EXECUTIVE MODE TELETYPE I/O
+
+TIN:   PUSHJ P,LISTEN          ;TELETYPE CHARACTER INPUT
+        JRST .-1
+       CAIE T,175
+       CAIN T,176
+       MOVEI T,33      ;CHANGE ALL ALT MODES TO NEW
+       CAIN T,177      ;RUBOUT?
+       JRST WRONG      ;YES, TYPE XXX
+       TRNE T,140      ;DON'T ECHO CR,LF,ALT,TAB,BACK SPACE,ETC
+TOUT:  CAIG T,04       ;DON'T TYPE EOT OR LOWER CHARS
+       POPJ P,
+       HRLM T,(P)
+       IMULI T,200401          ;GENERATE PARITY
+       AND T,[11111111]
+       IMUL T,[11111111]
+       HLR T,(P)
+       TLNE T,10
+       TRC T,200               ;MAKE PARITY EVEN
+       CONSZ TTYY,20
+       JRST .-1
+       DATAO TTYY,T
+       ANDI T,177              ;FLUSH PARITY
+       POPJ P,0
+
+LISTEN:        CONSO TTYY,40   ;LISTEN FOR TTY
+       POPJ P,
+       DATAI TTYY,T
+       ANDI T,177
+       JRST CPOPJ1
+
+TTYRET:        MOVEI  T,3410
+TTY1:  MOVEI W2,40000
+       CONSZ TTYY,120
+       SOJG W2,.-1
+       CONI TTYY,SAVTTY
+       DATAI TTYY,W2
+       HRLM W2,SAVTTY
+       CONO TTYY,(T)
+       POPJ P,
+TTYLEV:        MOVE T,SAVTTY
+       TRZ T,160
+       TRO T,3600
+       TRNE T,10
+       TRZ T,200
+       JRST TTY1
+
+
+TEXIN: PUSHJ P,TIN     ;INPUT SUBROUTINE FOR TEXT MODES
+       TRNN T,140
+       JRST TOUT       ;ECHO CHARACTERS (0-37) NOT ECHOED
+       POPJ P,
+>
+\fIFE EDDT&1,<  ;USER MODE TELETYPE I/O
+
+
+TIN:   MOVE T,POUTBF           ;GET NEXT CHARACTER ROUTINE
+       CAME T,[POINT 7,INBFF]
+       PUSHJ P,FINOUT
+       ILDB T,PINBFF
+       CAIN T,175
+       MOVEI T,33      ;CHANGE TO NEW ALT MODE
+       CAIN    T,177   ;RUBOUT?
+       JRST    WRONG   ;YES PRINT XXX
+       JUMPN T,CPOPJ
+       MOVE T,[POINT 7,INBFF]
+       MOVEM T,PINBFF
+       CALL T,[SIXBIT /DDTIN/]
+       JRST TIN
+
+TOUT:  JUMPE   T,CPOPJ ;OUT PUT A CHARACTER FLUSH NULLS
+       IDPB T,POUTBF
+       CAIE T,12
+       POPJ P,
+FINOUT:        MOVEI T,0
+       IDPB T,POUTBF
+       MOVE T,[POINT 7,INBFF]
+       MOVEM T,PINBFF
+       MOVEM T,POUTBF
+       CALL T,[SIXBIT /DDTOUT/]
+       CLEARM INBFF
+       POPJ P,
+
+PINBFF:        POINT 7,INBFF
+POUTBF:        POINT 7,INBFF
+
+LISTEN=CPOPJ
+INBFF: BLOCK 21
+
+TTYRET:        CALL [SIXBIT /DDTGT/]
+       MOVE T,[POINT 7,INBFF]
+       MOVEM T,POUTBF
+       MOVEM T,PINBFF
+       CLEARM INBFF
+       POPJ P,
+
+TTYLEV:        PUSHJ P,FINOUT
+       CALL [SIXBIT /DDTRL/]
+       POPJ P,
+
+TEXIN=TIN      ;USE NORMAL INPUT FOR TEXT WHEN IN USER MODE
+>
+\f
+BDISP: POINT 12,DISP(R),11
+       POINT 12,DISP(R),23
+       POINT 12,DISP(R),35
+
+DISP:  
+DEFINE D (Z1,Z2,Z3)<XLIST
+       EXP <Z1-DDT>*1B11+<Z2-DDT>*1B23+Z3-DDT
+       LIST>
+
+IFE EDDT&1&<EDDT>B36,< PUNCH=ERR
+       BLKEND=ERR
+       LOADER=ERR
+       VERIFY=ERR
+       CORE=ERR>
+
+
+
+D ERR,ERR,ERR
+D ERR,ERR,ERR
+D ERR,ERR,VARRW
+D TAB,LINEF,ERR
+D ERR,CARR,ERR
+D ERR,ERR,ERR
+D PUNCH,ERR,ERR
+D ERR,ERR,ERR
+D ERR,ERR,ERR
+D CONTROL,ERR,ERR
+D ERR,ERR,SPACE
+D SUPTYO,TEXI,ASSEM
+D DOLLAR,PERC,ERR
+D DIVD,LPRN,RPRN
+D MULT,PLUS,ACCF
+D MINUS,PERIOD,SLASH
+D NUM,NUM,NUM
+D NUM,NUM,NUM
+D NUM,NUM,NUM
+D NUM,TAG,SEMIC
+D FIRARG,EQUAL,ULIM
+D QUESTN,INDIRECT,ABSA
+D BPS,CON,SYMD
+D EFFEC,SFLOT,GO
+D HWRDS,PILOC,BLKEND
+D KILL,LOADER,MASK
+D NWORD,BITO,PROCEDE
+D QUAN,RELA,SYMBOL
+D TEXO,ERR,VERIFY
+D WORD,XEC,CORE
+D ZERO,OCON,ICON
+D OSYM,VARRW,PSYM
+
+REPEAT 11,<D ERR,ERR,ERR>
+
+D ERR,ERR,ERR
+D ERR,WRONG,DDT
+\f
+IFIX:  MOVE R,@SYMP            ;DIDDLE SYMBOL TABLE POINTERS
+       HRRZM R,ESTU
+       HLRZ T,@SYMP
+       SUB T,@SYMP
+       ADDI T,NSYMS
+       MOVNS T
+       HRRM T, KILC
+       MOVE T, KILC
+       MOVEM T, PRGM
+       JRST DDT
+
+BITO:  MOVEI   R,BITT  ;BYTE OUTPUT SUBROUTINE
+       HRRZI   AR,TOC
+       TRZN    F,Q2F
+       JRST    ERR
+       MOVE    T,WRD2
+       MOVEM   T,SVBTS
+       MOVEI   T,^D36
+       IDIV    T,WRD2
+       SKIPE   T+1
+       ADDI    T,1
+       MOVEM   T,SVBTS2
+       HRRZ    SCH,R
+       JRST    BASE1
+BITT:  MOVE    T,SVBTS2
+       MOVEM   T,SVBT2
+       MOVE    T+1,LWT
+       MOVEM   T+1,SVBT3
+BITT2: MOVEI   T,0
+       MOVE    T+2,SVBTS
+       LSHC    T,(T+2)
+       MOVEM   T,LWT
+       MOVEM   T+1,SVBT3
+       CAIE    AR,PADSO
+       PUSHJ   P,FTOC
+       CAIE    AR,TOC
+       PUSHJ   P,PIN
+       SOSG    SVBT2
+       POPJ    P,
+       MOVEI   T,","
+       PUSHJ   P,TOUT
+       MOVE    T+1,SVBT3
+       JRST    BITT2
+SVBTS: 0
+SVBTS2:        0
+SVBT3: 0
+SVBT2: 0
+\f
+;DESCRIPTION OF OP DECODER FOR DDT:
+;
+;         THE ENTIRE INSTRUCTION SET FOR THE PDP-6 CAN BE COMPACTED INTO
+;A SPACE MUCH SMALLER THAN ONE REGISTER FOR EVERY SYMBOL.  THIS OCCURS
+;BECAUSE OF THE MACHINE ORGANIZATION AND INSTRUCTION MNEMONICS CHOSEN
+;FOR THE PDP-6.  FOR EXAMPLE, IF BITS (0-2) OF AN INSTRUCTION EQUAL
+;101(2) THE INSTRUCTION IS A HALF WORD INSTRUCTION AND AN "H" MAY
+;BE ASSUMED. "T" MAY BE ASSUMED FOR ALL TEST INSTRUCTIONS (WHICH
+;BEGIN WITH 110(2).
+;
+;      THE TABLE TBL IN DDT CONSISTS OF 9 BIT BYTES, 4 TO A WORD.
+;THE NUMBERS IN THE BYTES HAVE THE FOLLOWING SIGNIFICANCE:
+;0-37(8):      THIS IS A DISPATCH COMMAND FOR THE OP-DECODER INTERPRETER.
+;      LET THE RIGHT MOST TWO BITS EQUAL N; LET THE NEXT 3 BITS
+;      EQUAL P.
+;
+;      THE CONTENTS OF INST (INSTRUCTION) CONTAIN IN THE RIGHT
+;      MOST NINE BITS THE BINARY FOR THE MACHINE INSTRUCTION.
+;      P AND N REFER TO THE CONTENTS OF INST, AND THE OP DECODER
+;      WILL PRODUCE AN ANSWER D GIVEN P, N, AND THE CONTENTS
+;      OF INSTX N+1 GIVES THE NUMBER OF BITS IN INST; P GIVES THE
+;      POSITION (FROM THE RIGHT EDGE) OF THE N+1 BITS.
+;
+;      EXAMPLE: P = 6
+;               N = 2
+;
+;;     C(INST) = .010 101 100(2)
+;
+;      THE RESULT- D = 010(2) = 2(8)
+;
+;      D IS USED AS A DISPATCH ON THE NEXT BYTES IN THE TABLE.
+;      IF D = 5, 5 BYTES IN THE TABLE (DON'T COUNT THE BYTES WHICH
+;      PRINT TEXT, 41-72(8)) ARE SKIPPED OVER AND THE 6TH BYTE RESUMES
+;      THE INTERPRETATION.
+;
+;40(8) THIS IS A STOP CODE; WHEN THIS IS REACHED INTERPRETATION
+;      IS FINISHED.
+\f
+;41(8)-72(8)      THE ALPHABET IS ENCODED INTO THIS RANGE.
+;              41- A
+;              42- B
+;              72- Z
+;              WHEN A BYTE IN THIS RANGE IS REACHED, ITS CORRESPONDING
+;              LETTER IS TYPED.
+;
+;73(8)-777(8)     THIS IS A TRANSFER BYTE.  IF THE BYTE IN THIS RANGE IS
+;              CONSIDERED TO BE A, TRANSFER INTERPRETATION TO THE A-73(8)RD
+;              BYTE IN THE TABLE.
+;
+;MAROS ASSEMBLE THE TABLE TBL:
+; 1.   A NUMBER FOLLOWED BY ^ ASSEMBLES A DISPATCH BYTE.  THE FIRST
+;      DIGIT IS THE POSITION; THE SECOND DIGIT IS THE SIZE.
+; 2.   A POINT (.) ASSEMBLES A STOP CODE.
+; 3.   A NAME FOLLOWED BY A SLASH ASSEMBLES A TRANSFER TO THE
+;      SYMBOLICALLY NAMED BYTE.
+; 4.   A STRING OF LETTERS TERMINATED BY A SPACE, COMMA, OR POINT,
+;      ASSEMBLE INTO A STRING OF BYTES, EACH BYTE BEING ONE LETTER.
+;
+;EXAMPLE OF BINARY TO SYMBOLIC DECODING:
+;      THE MACHINE CODE FOR JRST IAS 254
+;          INST    0  1  0  1  0  1  1  0  0
+;      THE INTERPRETER STARTS WITH THE FIRST BYTE IN THE TABLE (63^).
+;      THE RESULT OF APPLYING THIS TO C(INST) GIVES 2.  SKIPPING OVER
+;      2 BYTES IN THE TABLE AND INTERPRETING THE THIRD RESULTS IN
+;      HAK/ BEING INTERPRETED.  AT HAK:, THERE IS A 33^.  APPLYING
+;      THIS TO C(INST) RESULTS IN 5 NON PRINTING BYTES BEING SKIPPED
+;      OVER:
+;          1.  MV/
+;               MOV      PRINTING TEXT
+;          2.  MO/
+;          3.  ML/
+;          4.  DV/
+;          5.  SH/
+;
+;H1/ IS THE NEXT BYTE INTERPRETER.  AT H1: 03^ IS FOUND SO
+;4 BYTES ARE SKIPPED OVER:
+;              EXC      PRINTING TEXT
+;          1.  S3/
+;              BL       PRINTING TEXT
+;              T        PRINTING TEXT
+;          2.  .
+;          3.  AO/
+;          4.  AOB/
+;          THE NEXT LETTERS JRS ARE TYPED OUT.  THEN T/ IS FOUND.  AT
+;T; A T IS TYPED OUT; THEN A "." IS FOUND AND EVERYTHING STOPS.
+;
+;          THE TABLE IS ALSO USED GOING FROM SYMBOLIC TO BINARY BUT A
+\f\f\f\f\f\fREPEAT 0,<
+
+DEFINE REDEF (XX)<
+DEFINE INFO (AA,BB)<
+AA XX'BB>>
+
+
+DEFINE BYT9 (L)<
+XLIST
+REDEF %
+ ZZ=0
+ ZZZ=0
+ ZZM=1
+
+ IRPC L,<
+       Z="L"
+       IFE Z-":",<INFO <>,<=CLOC>
+               IFNDEF FIR.,<FIR.=CLOC>
+               IFGE CLOC+73-1000-FIR.,<PRINTX OPTABLE TOO LONG>
+               Z=0>
+       IFE Z-"/",<IF1 <OUTP 1>
+               IF2,<INFO OUTP,+73-FIR.>
+               Z=0>
+ IFE Z-"^",<OUTP <ZZ&70/2+ZZ&7-1>
+       Z=0>
+ IFE <Z-",">*<Z-".">*<Z-40>,<IFN ZZZ,<
+                               REPEAT 5,<ZZ=ZZZ&77
+                                       IFN ZZ,<OUTP ZZ>
+                                       ZZZ=ZZZ/100>>
+                               IFE Z-".",<OUTP 40>
+                               Z=0>
+ IFN Z,<INFO REDEF,L
+       ZZ=ZZ*10+Z&7
+       ZZZ=ZZZ+<Z-40>*ZZM
+       ZZM=ZZM*100>
+ IFE Z,<REDEF %
+       ZZ=0
+       ZZZ=0
+       ZZM=1>>
+LIST>
+
+DEFINE OUTP (A)<
+       BINRY=BINRY*400+BINRY*400+A
+       BINC=BINC-1
+       IFE BINC,<EXP BINRY
+               BINRY=0
+               BINC=4>
+       CLOC=CLOC+1>
+
+
+\f
+TBL:           ;OPDECODER BYTE TABLE
+
+BINRY=0
+CLOC=0         ;SET BYTE LOCATION COUNTER TO 0
+BINC=4         ;INIT BYTES/WORD COUNTER
+
+BYT9 <63^UUO/FLO/HAK/ACCP/BOOLE/H HWT/T ACBM/>
+
+;IO INSTRUCTIONS
+BYT9 <21^BD/CON,11^OI/S,01^Z/O/>
+BYT9 <BD:01^BLK,IO/DATA,IO:11^I/O/OI:01^O/I/>
+
+;UUOS
+BYT9 <UUO:51^.,32^U40/U50/U60/21^U703/11^USET/01^>
+BYT9 <LOOKU,P/ENTE,R/USET:USET,01^I/O/>
+BYT9 <U40:03^U47/INI T/.....,U47:CALL,01^.,I/>
+BYT9 <U60:21^U603/01^IN,BPUT/OUT,BPUT:11^BU,F:F.,PU,T/>
+BYT9 <U603:01^U6062/STAT,11^O:O.,Z:Z.,U6062:11^S,U62/G,U62:ETST,S/>
+;BYTE AND FLOATING INSTRUCTIONS
+
+BYT9 <FLO:51^BYTE/F 32^ AD A/SB A/MP A/DV A:>
+BYT9 <21^LMB/R,IMB/LMB:02^.,L:L.,M:M.,B:B.,BYTE:32^...,03^UF,PA/DF,N/>
+BYT9 <FS C/IB P:P.,I LD/LD:LD B/I DP/DP:DP B/>
+
+;FWT,FIXED POINT ARITH,MISC.
+
+BYT9 <HAK:33^MV/MV:MOV MO/ML/DV/SH/H1/JP/>
+BYT9 <21^ADD IMB/SU BIMB:B IMB:02^.,I:I.,M/B/MO:22^>
+BYT9 <EIMS:E IMS/S IMS/N IMS/M IMS:02^.,I/M/S:S.,>
+BYT9 <ML:21^I ML1/ML1:MUL IMB/DV:21^I DV1/DV1:>
+BYT9 <DI DV2:V IMB/H1:03^EXC S3/BL T:T.,AO/AO:AOBJ,>
+BYT9 <AOB/JRS T/JFC L/XC T/CON S/AOB:01^P/N/>
+BYT9 <JP:03^PU/PU:PUSH PUS/PO/PO:POP POP/JS,R:R.,>
+BYT9 <JS P/JS PA:A.,JR PA/PUS:01^J:J..,POP:>
+BYT9 <01^.,J/SH:02^A S2/ROT S1/L S2:S S3:H S1/.,S1:21^.,C:C.,>
+
+;ARITH COMP,SKIP,JUMP
+
+BYT9 <ACCP:42^CA CA1/SJ/A JS/S JS:O 31^>
+BYT9 <J COMP/S COMP/CA1:31^I COMP/M COMP/>
+BYT9 <SJ:31^JUM PSJ/SKI PSJ:P COMP:>
+BYT9 <03^.,L/E:E.,L E/PA/G E/N:N.,G.,>
+
+
+;HALF WORDS
+
+BYT9 <HWT:51^HW1/21^R HW2/L HW2:R HW3/HW1:>
+BYT9 <21^L HW4/R HW4:L HW3:32^IMS/Z IMS/O IMS/EIMS/>
+
+;TEST INSTRUCTIONS
+
+BYT9 <ACBM:31^AC1/01^D AC2/S AC2/AC1:01^R AC2/L,>
+BYT9 <AC2:42^N EAN/Z EAN/C EAN/O EAN:12^.,E/PA/N/>
+
+\f
+;BOOLEAN
+
+BYT9 <BOOLE:24^ST/AN:AND B2/AN/ST/AN/ST/>
+BYT9 <X OR:OR B2/I OR/AN/EQ DV2/ST/OR/ST/OR/OR/>
+BYT9 <ST:SET B2:24^Z IMB/IMB/CA:C TA/TM:M IMB/>
+BYT9 <CM:C TM/TA:A IMB/IMB/IMB/CB:C BIMB/IMB/CA/>
+BYT9 <CA/CM/CM/CB/O IMB/>
+
+;MORE UUO'S
+BYT9 <U50:03^OPE,N/....,RENAM,E/I,N/OU,T/>
+BYT9 <U703:02^CLOS,E/RELEA,S/MTAP,E/UGET,F/>
+
+REPEAT BINC,<BINRY=BINRY*400+BINRY*400>
+IFN BINRY,<EXP BINRY>>
+
+
+
+\fSUBTTL        OP DECODER
+
+IF1,
+<
+
+DEFINE .COLON  (A) <
+%'A==  CLOC
+FIR.== CLOC
+DEFINE .COLON  (AA) <
+%'AA== CLOC
+IFGE   CLOC+73-1000-FIR., <PRINTX OPTABLE TOO LONG>>>
+
+DEFINE .SLASH  <
+CLOC=  CLOC+1 ;>
+
+SYN    .SLASH, .ARROW
+
+DEFINE .COMMA  (A) <
+IFNB   <A>,    <.REP5 A>>
+
+SYN    .COMMA, .SPACE
+
+DEFINE .POINT  (A) <
+IFNB   <A>,    <.REP5 A>
+CLOC=  CLOC+1>
+
+DEFINE .REP5   (A) <
+IRPC   A, <CLOC==CLOC+1>>
+
+>
+\fIF2, 
+<
+
+DEFINE .SLASH  (A) <
+OUTP   %'A+73-FIR.>
+
+DEFINE .ARROW  (A) <
+OUTP   A&70/2+A&7-1>
+
+DEFINE .COMMA  (A) <
+IFNB   <A>,    <.REP5 A>>
+
+SYN    .COMMA, .SPACE
+
+DEFINE .POINT  (A) <
+IFNB   <A>,    <.REP5 A>
+OUTP   40>
+
+DEFINE .REP5   (A) <
+IRPC   A, <OUTP "A"-40>>
+
+DEFINE OUTP (A)<
+BINRY==        BINRY+<A>_<BINC==BINC-9>
+IFE BINC, <
+               +BINRY
+BINRY==0
+BINC==^D36>
+CLOC==CLOC+1>
+
+>
+\fTBL:          ;OPDECODER BYTE TABLE
+
+BINRY==        0
+CLOC== 0       ;SET BYTE LOCATION COUNTER TO 0
+BINC== ^D36    ;INIT BYTES/WORD COUNTER
+
+.ARROW 63
+.SLASH UUO
+.SLASH FLO
+.SLASH HAK
+.SLASH ACCP
+.SLASH BOOLE
+.SPACE H
+.SLASH HWT
+.SPACE T
+.SLASH ACBM
+
+
+;IO INSTRUCTIONS
+
+.ARROW 21
+.SLASH BD
+.COMMA CON
+.ARROW 11
+.SLASH OI
+.COMMA S
+.ARROW 01
+.SLASH Z
+.SLASH O
+
+.COLON BD
+.ARROW 01
+.COMMA BLK
+.SLASH IO
+.COMMA DATA
+.COLON IO
+.ARROW 11
+.SLASH I
+.SLASH O
+.COLON OI
+.ARROW 01
+.SLASH O
+.SLASH I
+\f;UUOS
+
+.COLON UUO
+.ARROW 51
+.POINT 
+.COMMA 
+.ARROW 32
+.SLASH U40
+.SLASH U50
+.SLASH U60
+.ARROW 21
+.SLASH U703
+.ARROW 11
+.SLASH USET
+.ARROW 01
+
+.COMMA LOOKU
+.SLASH P
+.COMMA ENTE
+.SLASH R
+.COLON USET
+.COMMA USET
+.ARROW 01
+.SLASH I
+.SLASH O
+
+.COLON U40
+.ARROW 03
+.SLASH U47
+.SPACE INI
+.SLASH T
+.POINT 
+.POINT 
+.POINT 
+.POINT 
+.POINT 
+.COMMA 
+.COLON U47
+.COMMA CALL
+.ARROW 01
+.POINT 
+.COMMA 
+.SLASH I
+
+.COLON U60
+.ARROW 21
+.SLASH U603
+.ARROW 01
+.COMMA IN
+.SLASH BPUT
+.COMMA OUT
+.COLON BPUT
+.ARROW 11
+.COMMA BU
+.COLON F
+.POINT F
+.COMMA 
+.COMMA PU
+.SLASH T
+
+.COLON U603
+.ARROW 01
+.SLASH U6062
+.COMMA STAT
+.ARROW 11
+.COLON O
+.POINT O
+.COMMA 
+.COLON Z
+.POINT Z
+.COMMA 
+.COLON U6062
+.ARROW 11
+.COMMA S
+.SLASH U62
+.COMMA G
+.COLON U62
+.COMMA ETST
+.SLASH S
+\f;BYTE AND FLOATING INSTRUCTIONS
+
+.COLON FLO
+.ARROW 51
+.SLASH BYTE
+.SPACE F
+.ARROW 32
+.SPACE 
+.SPACE AD
+.SLASH A
+.SPACE SB
+.SLASH A
+.SPACE MP
+.SLASH A
+.SPACE DV
+.COLON A
+.ARROW 21
+.SLASH LMB
+.COMMA R
+.SLASH IMB
+.COLON LMB
+.ARROW 02
+.POINT 
+.COMMA 
+.COLON L
+.POINT L
+.COMMA 
+.COLON M
+.POINT M
+.COMMA 
+.COLON B
+.POINT B
+.COMMA 
+.COLON BYTE
+.ARROW 32
+.POINT 
+.POINT 
+.POINT 
+.COMMA 
+.ARROW 03
+.COMMA UF
+.SLASH PA
+.COMMA DF
+.SLASH N
+
+.SPACE FS
+.SLASH C
+.SPACE IB
+.COLON P
+.POINT P
+.COMMA 
+.SPACE I
+.SLASH LD
+.COLON LD
+.SPACE LD
+.SLASH B
+.SPACE I
+.SLASH DP
+.COLON DP
+.SPACE DP
+.SLASH B
+\f;FWT,FIXED POINT ARITH,MISC
+
+.COLON HAK
+.ARROW 33
+.SLASH MV
+.COLON MV
+.SPACE MOV
+.SLASH MO
+.SLASH ML
+.SLASH DV
+.SLASH SH
+.SLASH H1
+.SLASH JP
+
+.ARROW 21
+.SPACE ADD
+.SLASH IMB
+.SPACE SU
+.COLON BIMB
+.SPACE B
+.COLON IMB
+.ARROW 02
+.POINT 
+.COMMA 
+.COLON I
+.POINT I
+.COMMA 
+.SLASH M
+.SLASH B
+.COLON MO
+.ARROW 22
+
+.COLON EIMS
+.SPACE E
+.SLASH IMS
+.SPACE S
+.SLASH IMS
+.SPACE N
+.SLASH IMS
+.SPACE M
+.COLON IMS
+.ARROW 02
+.POINT 
+.COMMA 
+.SLASH I
+.SLASH M
+.COLON S
+.POINT S
+.COMMA 
+
+.COLON ML
+.ARROW 21
+.SPACE I
+.SLASH ML1
+.COLON ML1
+.SPACE MUL
+.SLASH IMB
+.COLON DV
+.ARROW 21
+.SPACE I
+.SLASH DV1
+.COLON DV1
+.SPACE DI
+.COLON DV2
+.SPACE V
+.SLASH IMB
+.COLON H1
+.ARROW 03
+.SPACE EXC
+.SLASH S3
+.SPACE BL
+.COLON T
+.POINT T
+.COMMA 
+.SLASH AO
+.COLON AO
+.COMMA AOBJ
+.SLASH AOB
+.SPACE JRS
+.SLASH T
+.SPACE JFC
+.SLASH L
+.SPACE XC
+.SLASH T
+.SPACE CON
+.SLASH S
+.COLON AOB
+.ARROW 01
+.SLASH P
+.SLASH N
+
+.COLON JP
+.ARROW 03
+.SLASH PU
+.COLON PU
+.SPACE PUSH
+.SLASH PUS
+.SLASH PO
+.COLON PO
+.SPACE POP
+.SLASH POP
+.COMMA JS
+.COLON R
+.POINT R
+.COMMA 
+
+.SPACE JS
+.SLASH P
+.SPACE JS
+.COLON PA
+.POINT A
+.COMMA 
+.SPACE JR
+.SLASH PA
+.COLON PUS
+.ARROW 01
+.COLON J
+.POINT J
+.POINT 
+.COMMA 
+.COLON POP
+.ARROW 01
+.POINT 
+.COMMA 
+.SLASH J
+.COLON SH
+.ARROW 02
+.SPACE A
+.SLASH S2
+.SPACE ROT
+.SLASH S1
+.SPACE L
+.COLON S2
+.SPACE S
+.COLON S3
+.SPACE H
+.SLASH S1
+.POINT 
+.COMMA 
+.COLON S1
+.ARROW 21
+.POINT 
+.COMMA 
+.COLON C
+.POINT C
+.COMMA 
+\f;ARITH COMP,SKIP,JUMP
+
+.COLON ACCP
+.ARROW 42
+.SPACE CA
+.SLASH CA1
+.SLASH SJ
+.SPACE A
+.SLASH JS
+.SPACE S
+.COLON JS
+.SPACE O
+.ARROW 31
+
+.SPACE J
+.SLASH COMP
+.SPACE S
+.SLASH COMP
+.COLON CA1
+.ARROW 31
+.SPACE I
+.SLASH COMP
+.SPACE M
+.SLASH COMP
+
+.COLON SJ
+.ARROW 31
+.SPACE JUM
+.SLASH PSJ
+.SPACE SKI
+.COLON PSJ
+.SPACE P
+.COLON COMP
+.ARROW 03
+.POINT 
+.COMMA 
+.SLASH L
+.COLON E
+.POINT E
+.COMMA 
+.SPACE L
+.SLASH E
+.SLASH PA
+.SPACE G
+.SLASH E
+.COLON N
+.POINT N
+.COMMA 
+.POINT G
+.COMMA 
+\f;HALF WORDS
+
+.COLON HWT
+.ARROW 51
+.SLASH HW1
+.ARROW 21
+.SPACE R
+.SLASH HW2
+.SPACE L
+.COLON HW2
+.SPACE R
+.SLASH HW3
+.COLON HW1
+.ARROW 21
+.SPACE L
+.SLASH HW4
+.SPACE R
+.COLON HW4
+.SPACE L
+.COLON HW3
+.ARROW 32
+.SLASH IMS
+.SPACE Z
+.SLASH IMS
+.SPACE O
+.SLASH IMS
+.SLASH EIMS
+\f;TEST INSTRUCTIONS
+
+.COLON ACBM
+.ARROW 31
+.SLASH AC1
+.ARROW 01
+.SPACE D
+.SLASH AC2
+.SPACE S
+.SLASH AC2
+.COLON AC1
+.ARROW 01
+.SPACE R
+.SLASH AC2
+.COMMA L
+.COLON AC2
+.ARROW 42
+.SPACE N
+.SLASH EAN
+.SPACE Z
+.SLASH EAN
+.SPACE C
+.SLASH EAN
+.SPACE O
+.COLON EAN
+.ARROW 12
+.POINT 
+.COMMA 
+.SLASH E
+.SLASH PA
+.SLASH N
+\f;BOOLEAN
+
+.COLON BOOLE
+.ARROW 24
+.SLASH ST
+.COLON AN
+.SPACE AND
+.SLASH B2
+.SLASH AN
+.SLASH ST
+.SLASH AN
+.SLASH ST
+
+.SPACE X
+.COLON OR
+.SPACE OR
+.SLASH B2
+.SPACE I
+.SLASH OR
+.SLASH AN
+.SPACE EQ
+.SLASH DV2
+.SLASH ST
+.SLASH OR
+.SLASH ST
+.SLASH OR
+.SLASH OR
+
+.COLON ST
+.SPACE SET
+.COLON B2
+.ARROW 24
+.SPACE Z
+.SLASH IMB
+.SLASH IMB
+.COLON CA
+.SPACE C
+.SLASH TA
+.COLON TM
+.SPACE M
+.SLASH IMB
+
+.COLON CM
+.SPACE C
+.SLASH TM
+.COLON TA
+.SPACE A
+.SLASH IMB
+.SLASH IMB
+.SLASH IMB
+.COLON CB
+.SPACE C
+.SLASH BIMB
+.SLASH IMB
+.SLASH CA
+
+.SLASH CA
+.SLASH CM
+.SLASH CM
+.SLASH CB
+.SPACE O
+.SLASH IMB
+\f;MORE UUO'S
+
+.COLON U50
+.ARROW 03
+.COMMA OPE
+.SLASH N
+.POINT 
+.POINT 
+.POINT 
+.POINT 
+.COMMA 
+.COMMA RENAM
+.SLASH E
+.COMMA I
+.SLASH N
+.COMMA OU
+.SLASH T
+
+.COLON U703
+.ARROW 02
+.COMMA CLOS
+.SLASH E
+.COMMA RELEA
+.SLASH S
+.COMMA MTAP
+.SLASH E
+.COMMA UGET
+.SLASH F
+\fIF1,
+<
+       BLOCK   <CLOC+3>/4
+>
+
+IF2,
+<
+IFN    BINC-^D36,
+<
+               +BINRY
+>
+>
+
+
+
+IFNDEF CLOC.,<CLOC.=CLOC>
+IFN CLOC.-CLOC,<PRINTX PHASE ERROR IN OPTABLE>
+\f
+PNTR:  EXP INST        ;POINTER TO BITS IN INST
+INST:  0               ;BINARY FOR INSTRUCTION
+CHP:   0               ;CHAR POINTER INTO TXT, TXT+1
+TXT:   BLOCK 2         ;STORE INPUT TEXT FOR OPEVAL
+SAVPDL:        0               ;SAVE PUSH DOWN LIST POINTER
+
+BTAB:  POINT 9,TBL     ;TABLE USED TO GET NEXT BYTE POINTER
+       POINT 9,TBL,8   ;FOR TRANSFER BYTE
+       POINT 9,TBL,17
+       POINT 9,TBL,26
+
+OPEVAL:        MOVE T,OPEV1            ;EVALUATE FOR AN OP CODE
+       MOVEI W1,SYM
+       MOVE R,[POINT 7,TXT]
+       PUSHJ P,SPT4
+       MOVEI T,0
+OPEV1: IDPB T,R
+       MOVEM P,SAVPDL
+       TRZA F,OUTF
+OPTYPE:        TRO F,OUTF              ;TYPE AN OPCODE SYMBOLICALLY
+       LSH T,-33
+       MOVEM T,INST            ;GET OPCODE INTO RIGHT 9 BITS
+       MOVE T,[XWD 440700,TXT]
+       MOVEM T,CHP             ;FOR OPEVAL,SETUP POINTER TO INPUT TEXT
+DEC:   TRZ F,ITF               ;CLEAR INSTRUCTION TYPED FLAG
+       CLEARB R,W1
+       MOVE W2,BTAB
+DC1:   ILDB T,W2               ;GET NEXT BYTE IN TBL
+       CAILE T,40
+       CAIL T,73
+       SOJGE R,DC1             ;SKIP OVER # BYTES = C(R)
+       JUMPG R,DC1             ;SKIP OVER ALPHA TEXT WITHOUT COUNTING
+       SUBI T,40
+       JUMPE T,DECX            ;TRANSFER ON ASTOP CODE
+       JUMPG T,DC2
+       DPB T,[XWD 340500,PNTR] ;SETUP R ON A DISPATCH BYTE
+       TRZ T,-4
+       AOS T
+       DPB T,[XWD 300600,PNTR]
+       TRNN F,OUTF
+       JRST DC6                ;FOR OPEVAL ONLY
+       LDB R,PNTR              ;GET # BYTES TO SKIP OVER
+       JRST DC1
+
+DC2:   HRREI T,-33(T)
+       JUMPL T,DECT            ;TYPE OUT A LETTER
+       MOVEI W1,FIR.(T)                ;BYTE IS A TRANSFER
+       IDIVI W1,4
+       MOVE W2,BTAB(W2)        ;CALCULATE POINTER TO NEXT BYTE
+       ADDI W2,(W1)
+       JRST DC1
+
+\f
+DECT:  TRNE F,OUTF
+       JRST DC8        ;TYPE OUT A LETTER
+       ILDB W1,CHP     ;GET NEXT INPUT LETTER
+       CAIE W1,133(T)  ;COMPARE WITH ASSUMED NEXT LETTER
+       JRST NOMAT      ;DOESNT MATCH
+       JRST DC1        ;MATCHES, TRY NEXT
+
+DECX:  TRNE F,OUTF     ;STOP (CODE 40) HAS BEEN SEEN
+       POPJ P,         ;IF FOR OUTPUT, RETURN
+       ILDB W1,CHP     ;GET NEXT INPUT CHAR IF ANY
+       JUMPE W1,DC7    ;DOES # OF CHARS MATCH
+NOMAT: POP P,R         ;NO, BACK UP AND TRY SOME MORE
+       POP P,W2
+       POP P,PNTR
+       POP P,CHP
+NOMAT1:        AOS R           ;ASSUME NEXT NUMBER FOR BIN VALUE
+       DPB R,PNTR      ;STUFF INTO ANSWER
+       LDB R,PNTR
+       JUMPN R,DC6AA   ;IF =0, BYTE WAS TOO BIG
+       CAME P,SAVPDL
+       JRST NOMAT      ;NOT AT TOP LEVEL
+       JRST UNDEF      ;UNDEFINED, FINALLY
+
+DC6:   MOVEI R,0       ;ASSUME 0 FOR INITIAL BINARY VALUE
+       DPB R,PNTR
+DC6AA: CAMN P,SAVPDL
+       JRST DC6BB
+       LDB T,-2(P)     ;OLD VALUE OF PNTR
+       CAME T,(P)
+       JRST NOMAT1
+DC6BB: PUSH P,CHP
+       PUSH P,PNTR
+       PUSH P,W2
+       PUSH P,R
+       JRST DC1
+
+DC7:   MOVE P,SAVPDL           ;RESTORE PUSH DOWN POINTER
+       MOVE T,INST
+       LSH T,33                ;PUSH BINARY INTO POSITION FOR OPEVAL
+       LDB R,[POINT 3,T,8]
+       TLC T,700000
+       TLCN T,700000
+       DPB R,[POINT 10,T,12]   ;ONLY DONE FOR IO INSTRUCTIONS
+       JRST L4
+
+DC8:   TRO F,ITF               ;SET INSTRUCTION TYPED FLAG
+       MOVEI T,133(T)
+       PUSHJ P,TOUT            ;OUTPUT A LETTER
+       CLEARM SPSAV            ;SO $D WONT TRY TO DELETE OP CODES
+       JRST DC1
+\fLIT
+
+
+IFN EDDT&1&<EDDT>B36,<BUFF:    BLOCK 40>
+
+PS:    BLOCK LPDL
+
+DDTEND=.
+
+END
+\f
diff --git a/src/editor.mac b/src/editor.mac
new file mode 100644 (file)
index 0000000..788d26b
--- /dev/null
@@ -0,0 +1,702 @@
+\f\fTITLE EDITOR   V.003 1 APRIL 1968\r
+SUBTTL DECEDIT PARAMETERS\r
+\r
+DEFINE ERR (A) <       JSR A,ERRORX>\r
+DEFINE TSTRIN (A) <    EXP "A"+"A"+1>\r
+\r
+S0=1\r
+S1=2\r
+S2=4\r
+S3=10\r
+S4=40\r
+S5=20\r
+S6=100\r
+S7=200\r
+S8=400\r
+PDP=3\r
+FL=4\r
+INDEX=11\r
+WC=12\r
+C=13\r
+COTP=14\r
+IPT=5\r
+TPT=6\r
+P=10\r
+SINDEX=15\r
+CINDEX=16\r
+LAST=17\r
+TYP=2\r
+DT=3\r
+OPDEF EXIT [POPJ PDP,]\r
+OPDEF CAL [PUSHJ PDP,]\r
+OPDEF SAVE [PUSH PDP,]\r
+OPDEF UNSAVE [POP PDP,]\r
+EXTERNAL JOBFF\r
+\fSUBTTL DECTAPE IO - AUGUST 25, 1965\r
+\r
+FOPEN=1000\r
+AC1=1\r
+AC2=2\r
+AC3=5\r
+AC4=6\r
+\r
+FILLB: TLNN FL,1;      IS BUFFER LOADED\r
+       JRST FILLB1;    NO, SO LOAD IT\r
+       MOVE C,WBC;     GET BUFFER COUNT\r
+       CAIG C,177;     IS IT GETTIN FULL\r
+ATSALL:        EXIT;   NO\r
+       TRZ FL,S8;      SET FIRST BLOCK FLAG TO FALSE\r
+       TRO FL,S3;      AND MODIFIED FLAG TO TRUE\r
+       MOVEI AC2,WB;   GET WORKING BUFFER ADDRESS\r
+       MOVEI AC3,1;    SEQUENCE NUMBER TEST\r
+       ADDI AC2,125;   DUMP ABOUT 2/3 OF BUFFER\r
+       TDNN AC3,0(AC2);        BUT NOT A FRACTIONAL LINE\r
+       SOJA AC2,.-1;   HUNT FOR BEGIN OF LINE\r
+       HRRZ P,THSBLK;  UPDATE PREVIOUS BLOCK NUMBER\r
+       UGETF DT,IAMTEM;        NEXT FREE BLOCK\r
+       USETO DT,0(P);  PREPARE TO DUMP THIS BLOCK\r
+       MOVE P,IAMTEM;  AND PREPARE NEXT BLOCK\r
+       MOVE AC3,DTOBUF;        SET UP BLT\r
+       HRLZM P,1(AC3); LINK TO NEXT DECTAPE BLOCK\r
+       HRLI AC3,WB;    SOURCE\r
+       ADDI AC3,2;     +2\r
+       MOVE AC1,AC2;   LAST\r
+       SUBI AC1,WB;    AND MAKE A COUNT OF IT\r
+       SUB C,AC1;      TOTAL REMAINING WORDS\r
+       MOVEM C,WBC;    SET NEW COUNT\r
+       ADDI AC1,-1(AC3);       SETUP FOR BLT\r
+       CAL DUMX;       TRANSFER AND DUMP BLOCK\r
+       MOVEI AC3,WB;   GET DEST FOR MOVE UP\r
+       HRL AC3,AC2;    AND SOURCE\r
+       MOVE AC1,AC3;   GENERATE LAST ADDRESS\r
+       ADDI AC1,(C);   FROM COUNT\r
+       BLT AC3,(AC1);  ON TOAST\r
+       EXCH P,THSBLK;  SET NEW BLOCK\r
+       JRST FILLB;     GO AGAIN\r
+\r
+FILLB1:        TLNN FL,FOPEN;  IS A FILE OPEN\r
+       ERR 7;          NO, SO *NFO*\r
+       TLO FL,1;       SET TO FILLED BUFFER\r
+       JRST GETF;      AND GET THE FIRST BLOCK\r
+\fGET:  TRNE FL,S0;     FORWARD OR REVERSE\r
+       JRST GETL;      REVERSE\r
+\r
+GETN:  TRNE FL,S5;     IS THERE ANY MORE\r
+       EXIT;           NO\r
+       HLRZ WBF;       GET LINK\r
+       CAL DUMPB;      OUTPUT BLOCK\r
+       MOVE P,THSBLK;  SAVE PREVIOUS FLOCK NUMBER\r
+       TRZ FL,S8;      SET FIRST BLOCK FLAG TO FALSE\r
+GET0:  HRRZM THSBLK;   SAVE CURRENT BLOCK NUMBER\r
+       USETO DT,@THSBLK;       SER OUTPUT FOR PRESENT BLOCK\r
+\r
+SLURP: INPUT DT,0;     INPUT A NEW BLOCK\r
+       HLRZ WBF;       GET LINK\r
+       SKIPN;          WE DONT LIKE ZERO LINKS\r
+       TRO FL,S5;      SO WE SET A FLAG TO REMIND US\r
+       HRRZ WBF;       GET COUNT\r
+       MOVEM WBC;      AND SAVE IT\r
+       TRNN FL,S5;     WAS IT END OF FILE\r
+       SKIPE;          EMPTY BLOCK\r
+       EXIT;           END OF FILE OR NON-EMPTY BLOCK\r
+       HLRZ WBF;       EMPTY BLOCK - GET LINK\r
+       TRNN FL,S0;     DIRECTION CHECK\r
+       JRST GET0;      FORWARD\r
+\r
+GETL:  CAL DUMPB;      REVERSE - GET LAST BLOCK-SAVE THIS ONE\r
+       JUMPN P,GETL1;  IS LAST BLOCK AVAILABLE\r
+GETF:  HRRZ P,FBNUM;   NO, SO GET FIRST ONE\r
+       TRZ FL,S0+S5;   SET FORWARD AND END\r
+       TROA FL,S8;     SET FIRST BLOCK AND SKIP\r
+GETL1: TRZ FL,S5+S8;   SET NON-END AND NON-FIRST\r
+       USETI DT,(P);   ESTABLISH INPUT BLOCK NUMBER\r
+       USETO DT,(P);   AND OUTPUT BLOCK NUMBER\r
+       MOVEM P,THSBLK; UPDATE CURRENT BLOCK NUMBER\r
+       SETZM P;        AND ZERO PREVIOUS BLOCK NUMBER\r
+       JRST SLURP;     AND INPUT THE BLOCK\r
+\fDUMPB:        CAL FILLB;      SPLIT BLOCKS IF THE OVER-RUN\r
+       TRZN FL,S3;     ANY MODS MADE\r
+       EXIT;           NO\r
+       MOVE AC2,DTOBUF;        POINTER TO BUFFERS\r
+       MOVEI AC3,2(AC2);       FIRST WORD ADDRESS\r
+       HRLI AC3,WB;    FIRST DATA WORD\r
+       HLRZ AC1,WBF;   BLOCK NUMBER\r
+       SKIPN AC1;      LAST BLOCK\r
+       SOS AC1;        YES, SO EXTEND\r
+       HRLM AC1,1(AC2);        INTO LINK\r
+       MOVEI AC1,1(AC2);       PREPARE BLT\r
+       ADD AC1,WBC;    SIZE OF BLT\r
+DUMX:  BLT AC3,(AC1);  BLOCK UP SUBROUTINE\r
+       HRRM AC1,DTOBF1;        LAST ADDRESS\r
+       OUTPUT DT,0;    DUMP IT\r
+       STATO DT,740000;        CHECK FOR DEVICE ERROR\r
+       EXIT;           ALL IS GOOD\r
+       SETOM FL     ; DDE ERROR\r
+       ERR 12;         *DDE*\r
+\r
+FINISH:        TLNE FL,FOPEN;  IF A FILE IS OPEN\r
+       CAL DUMPB;      DUMP IT\r
+FINIS2:        RELEAS DT,0;    RELEASE THE TAPE\r
+       JRST INITIX;    AND GO BACK TO SETUP\r
+\r
+THSBLK:        0;              PRESENT BLOCK NUMBER\r
+IAMTEM:        0;              TEMPORARY\r
+\f\f\fSUBTTL CONTROL - AUGUST 25, 1965\r
+                       ;MAIN LISTEN AND DISPATCH FOR EDITOR CONTROL MODE\r
+OUTTER:        CAL GETCHR;     GET ONE CHARACTER\r
+       CAIN C,15;      INITIAL CARRIAGE RETURNS\r
+       JRST OUTTER;    ARE IGNORED\r
+       CAIN C,"I"\r
+       JRST INSE\r
+       CAIN C,"D"\r
+       JRST DELETE\r
+       CAIN C,"P"\r
+       JRST PRINT\r
+       CAIN C,"E"\r
+       JRST FINISH\r
+       CAIE C,33;      ALTERNATE ALTMOD\r
+       CAIN C,175;     THE REGULAR ALTMOD\r
+       JRST PNEXT\r
+       CAIN C,"S"\r
+       JRST DECINI\r
+       ERR 1;          ILLEGAL COMMAND\r
+;OUTPUT A CARRIAGE RETURN\r
+CRT:   MOVEI INDEX,CRM;        PICK UP THE POINTER\r
+       JRST OTLINE;    OUTPUT CRT-LF-*\r
+\r
+;ERROR PRINT\r
+ERRORX:        0;              CALLED BY JSR X,ERRORX\r
+       HRRZ INDEX,ERRORX;      WHERE X IS THE ERROR NUMBER\r
+       LDB INDEX,EPT;  EXTRACT THE X\r
+       MOVEI INDEX,ERT-1(INDEX)\r
+ERROX1:        MOVEI PDP,PDSTAK;       INITIALIZE PUSHDOWN\r
+ERROX2:        CAL OTLINE;     OUTPUT ERROR MESSAGE\r
+\f      JRST COMLEV;    AND A CARRIAGE RETURN - EXIT\r
+;ERROR MESSAGES ET.AL.  THESE MUST NOT BE MOVED ABOUT\r
+;SINCE THE PRINT ROUTINE DEPENDS ON THE BIT 35 OF THE\r
+;NEXT MESSAGE TO TERMINATE THE PRESENT ONE\r
+\r
+CRM:   OCT 64245200000;        THE CARRIAGE RETURN-LINE FEED-*\r
+ERT:   TSTRIN <*ILC*>; ILLEGAL COMMAND\r
+       TSTRIN <*NLN*>; NON-EXISTENT LINE\r
+       TSTRIN <*ILS*>; ILLEGAL SEQUENCE\r
+       TSTRIN <*ILR*>; ILLEGAL REFERENCE\r
+       TSTRIN <*UNA*>; UNIT NOT AVAILABLE\r
+       TSTRIN <*DCE*>; DIRECTORY CAPACITY EXCEEDED\r
+       TSTRIN <*NFO*>; NO FILE OPEN\r
+       TSTRIN <*FAU*>; FILE NAME ALREADY IN USE\r
+       TSTRIN <*NCF*>; NOT A CURRENT FILE\r
+       TSTRIN <*DDE*>; DEVICE DATA ERROR\r
+EPT:   POINT 4,-1(INDEX),12;   THE ERROR PRINT DEPENDS\r
+                       ;ON THE 1 IN BIT 35 HERE\r
+;COMMUNICATIONS\r
+\f\fSUBTTL EDITOR - AUGUST 25, 1965\r
+\r
+;INSERT LINE(S)\r
+INSE:  CAL GETSEQ;     GET THE SEQUENCE NUMBER AND STEP\r
+       MOVEM CINDEX;   THIS INSTR SKIPED IF ONLY ONE ARG\r
+       JRST INSE3;     PROCESS IT\r
+INSE2: CAL FIND;       TOP OF THE LOOP - SEARCH FOR THE LINE\r
+       CAMN SINDEX,(INDEX);    EXACT MATCH?\r
+       ERR 4;          YES, *ILR*\r
+       CAL BACK1;      BACKUP TO LAST LINE\r
+       CAME LAST;      IS IT INDEED THE LAST ONE WE PUT IN\r
+       ERR 3;          NO, *ILS*\r
+INSE3: CAL FIND;       GET THE LINE\r
+       CAL OTSEQ;      OUTPUT THE SEQUENCE NUMBER\r
+       CAL GETLIN;     GET THE INPUT LINE\r
+       JRST OUTTER;    ALT MODE\r
+       CAL INSED;      INSERT AND DELETE\r
+       MOVEM SINDEX,LAST;      SAVE AWAY THIS LINE NUMBER\r
+       MOVEM SINDEX,FIRST\r
+       CAL ASCIA;      STEP SEQUENCE\r
+       JRST INSE2;     LOOP BACK FOR NEXT LINE\r
+\r
+INSED: HRRZ COTP;      GET THE SIZE OF THE LINE\r
+       MOVEI 1,0;      SETUP DIRECTION FLAG\r
+       CAML WC;        IF LINE SIZE IS GREATER-EQUAL THAN NEW\r
+       MOVEI 1,1;      SET FLAG TO 1\r
+       CAME WC;        IF OLD LINE IS NON-NULL\r
+       JRST INSEG;     DELETE IT\r
+INSE1: JUMPE WC,INSE16;        NULL SIZE TO INPUT\r
+       HLRZ INDEX,COTP;        GET LINE ADDRESS\r
+       ADD INDEX,WC;   AND SIZE\r
+       HLRS COTP;      AND COUNT\r
+       HRLI COTP,TTB;  SET SOURCE\r
+       MOVE 1,COTP;    READY FOR BLT\r
+       BLT COTP,-1(INDEX);     MOVE IN THE NEW LINE\r
+       MOVE COTP,1;    RESTORE COTP\r
+INSE16:        TRO FL,S3+S6;   SET MOD FLAGS - GENERAL EXIT\r
+CLEARE:        MOVEI 1,WB;     CLEAR LAST BUFFER WORD\r
+       ADD 1,WBC;      END OF BUFFER\r
+       SETZM (1);      SET TO ZERO\r
+       EXIT;           GO AWAY\r
+\r
+;BACK UP LINE POINTER\r
+BACK1: CAIE INDEX,WB;  IS THIS THE FIRST LINE IN THE BUFFER\r
+       JRST BACK;      NO, SO NORMAL PROCESS\r
+       TRO FL,S0;      WE MUST GET THE PREVIOUS BLOCK\r
+       CAL GET;        INPUT IT - THIS WILL ALWAYS WORK\r
+       ADD INDEX,WBC;  LAST LINE\r
+       JRST BACK;      NOW WE BACK IT UP\r
+       MOVE (INDEX);   TOP OF LOOP - PICK UP DATA WORD\r
+       TRNN 1;         BIT ONE MAKES IT A SEQUENCE N\r
+BACK:  SOJA INDEX,.-2; COUNT IT BACK\r
+       EXIT\r
+\fINSEG:        CAL CSIZE;      COMPUTE SIZE OF XFER\r
+       JUMPE INSEX;    ZERO SIZE XFER\r
+       JUMPN 1,INSER;  FORWARD BLT\r
+       HRLS 0;         REVERSE XFER\r
+       ADD INDEX,0;    SET UP POINTER WORD\r
+       HRRZS 0;        READY TO GO\r
+INSER: MOVEM INDEX,C;  PROTECT XFER WORD\r
+       BLT C,(INDEX);  XFER ONE WORD\r
+       XCT ITAB(1);    STEP UP OR DOWN\r
+       SOJGE INSER;    IF NOT DONE, LOOP BACK\r
+INSEX: HRRZ COTP;      SETUP SIZE\r
+       SUB WC;         OF NEW BLOCK\r
+       EXCH WBC;\r
+       SUBM WBC;       NOW NEW BLOCK SIZE IS IN WBC\r
+       JRST INSE1;     ALL DONE - GO BACK\r
+\r
+ITAB:  SUB INDEX,K5;   SHRINK\r
+       ADD INDEX,K5;   GROW\r
+\r
+;THE ASCII ADDER\r
+\r
+ASCIA: SAVE CINDEX;    PROTECT THE STEP\r
+       MOVE 7,SINDEX\r
+       AND CINDEX,K2;  MASK OUT 60S\r
+       LSH CINDEX,1;\r
+       IOR SINDEX,K4;\r
+       ADD SINDEX,K1;\r
+       ADD CINDEX,SINDEX;      EXCESS 166 ADDITION\r
+       AND CINDEX,K3;  MASK OUT CARRY BITS\r
+       MOVE SINDEX,K4;\r
+       AND SINDEX,CINDEX;\r
+       ASH SINDEX,-3;  GIVES 000 WHERE CARRY HAPPENED, 006\r
+       SUBM CINDEX,SINDEX;     CONVERT TO EXCESS 0 OR 60\r
+       IOR SINDEX,K4;  CONVERT TO EXCESS 60\r
+       UNSAVE CINDEX;  RESTORE THE STEP\r
+       CAML 7,SINDEX;  IF 99999, DON'T GO TO 00009\r
+       ERR 3\r
+       EXIT;           LEAVE\r
+\r
+K1:    OCT 432150643214;       106\r
+K2:    OCT 036170743617;       017\r
+K3:    OCT 375767737576;       077\r
+K4:    TSTRIN <00000>\r
+K5:    XWD 1,1;        +,- ONE TO BOTH HALVES\r
+\fFIND: CAL FILLB;      FILL THE BUFFER\r
+FIND1: TRZ FL,S0+S4;   FORWARD SEARCH AND INITIAL SEARCH\r
+FIND2: HRRZ WBC;       GET THE BUFFER SIZE\r
+       JUMPE FINDA;    EMPTY BLOCK\r
+       MOVEI INDEX,WB; GET THE DATA ADDRESS\r
+       MOVE WB;        GET THE FIRST DATA WORD\r
+       CAMLE SINDEX;   ARE WE PAST THE LINE\r
+       JRST FINDA;     YES, REVERSE\r
+       CAMN SINDEX;    EXACT MATCH\r
+       JRST FINDEQ;    YES, BE HAPPY\r
+       ADD INDEX,WBC;  FORM ADDRESS OF LAST DATA WORD\r
+       CAL BACK;       FIND ITS SEQUENCE NUMBER\r
+       CAMLE SINDEX;   IT THE LINE IN THIS BLOCK\r
+       JRST FIND3A;    YES, INVESTIGATE FURTHER\r
+       CAMN SINDEX;    EXACT MATCH\r
+       JRST FINDEQ;    YES\r
+FINDX: TRNE FL,S5;     IS THIS LAST BLOCK\r
+       JRST FINDC;     YES, SO EXIT WITH THIS ADDRESS\r
+       TRO FL,S4;      SCANNING HAS STARTED\r
+       TRZ FL,S0;      AND GO FORWARD\r
+       JRST FIND4;     AWAY WE GO\r
+\r
+FINDA: MOVEI INDEX,0;  SETUP FOR REVERSE\r
+       TRNN FL,S4;     HAVE WE BEEN HERE BEFORE\r
+       TRNE FL,S8;     OR IS IT THE FIRST BLOCK\r
+       JRST FINDR;     YES, SO USE THIS ADDRESS\r
+       TRO FL,S0;      OTHERWISE, GO BACK ONE BLOCK\r
+FIND4: CAL GET;        GET THE BLOCK\r
+       JRST FIND2;     SEARCH FOR IT\r
+\r
+FINDC: HRRZ INDEX,WBC; TAIL OF BLOCK IF ENTERED HERE\r
+FINDR: ADDI INDEX,WB;  HEAD OF BLOCK IF ENTERED HERE\r
+       JRST FIND3;     AND RETURN\r
+\r
+FIND3A:        MOVEI INDEX,WBC;        WE WISH TO SCAN THIS BLOCK FOR\r
+       CAL FINDES;     THIS LINE - COMPUTE LINE SIZE\r
+       CAMN SINDEX;    EXACT MATCH\r
+       JRST FINDEQ;    YES, WELL, GOOD\r
+       CAMG SINDEX;    HAVE WE PASSED IT\r
+       AOJA INDEX,FIND3A+1;    NO, SO CONTINUE\r
+FIND3: HRLZ COTP,INDEX;        RETURN THE ADDRESS OF THE LINE\r
+       JRST CLEARE;    EXIT\r
+\r
+FINDEQ:        HRLZ COTP,INDEX;        FOUND THE DESIRED LINE\r
+       CAL FINDES;     COMPUTE ITS SIZE\r
+       HLRZ INDEX,COTP;        SET UP INDEX\r
+       JRST CLEARE;    AND EXIT\r
+\fFINDES:       AOS COTP;       FIND SIZE OF LINE\r
+       MOVE 1(INDEX);  FIND NEXT SEQUENCE NUMBER\r
+       AOS INDEX;\r
+       TRNN 1;         SEQUENCE NUMBER?\r
+       JUMPN FINDES;   NO, BUT ZERO ALSO DENOTES END\r
+       EXIT;           DONE\r
+\r
+CSIZE: HRRZ COTP;      COMPUTE SIZE OF TRANSFER\r
+       HLRZ INDEX,COTP;        SIZE OF THIS LINE\r
+       ADD INDEX;      AND THIS LOCATION\r
+       ADD INDEX,WC;   PLUS THE NEW LINE SIZE\r
+       HRL INDEX,0;    IN LEFT HALF IS OLD SIZE\r
+       SUBI WB;        AND TURN IT INTO A COUNT\r
+       HRRZ C,WBC;     FOR A SUBTRACT\r
+       SUBM C,0;       AND NOW ZERO HAS THE XFER SIZE\r
+       EXIT;\r
+\r
+\r
+DELETE:        CAL GE2SEQ;     GET THE RANGE TO BE EXCISED\r
+DELOOP:        HRRZ INDEX,WBC; GET THE WORD COUNT\r
+       ADDI INDEX,WB;  FORM THE END ADDRESS\r
+       CAL BACK;       GET THE LAST SEQUENCE IN THE BLOCK\r
+       CAMN LAST;      IS THE LAST LINE THE END OF THE RANGE\r
+       JRST DEQ;       YES\r
+       CAML LAST;      DO WE WANT TO DELETE THIS ONE TOO\r
+       JRST DINB;      NO,DELETE TERMINATES IN THE BUFFER\r
+       CAL DREST;      ERASE THE REST OF THE BUFFER\r
+EMPT:  TRNE FL,S5;     LAST BLOCK\r
+       JRST COMLEV;    YES, DONE\r
+       TRZ FL,S0;      FORWARD\r
+       CAL GET;        INPUT NEXT BLOCK\r
+       MOVE SINDEX,WB; GET FIRST LINE\r
+       TRNN SINDEX,1;  IF NOT A ONE, BLOCK IS EMPTY\r
+       JRST EMPT;      SO GET THE NEXT ONE\r
+       CAL FIND;       NEW SINDEX IS THE FIRST LINE - THIS CAL\r
+       JRST DELOOP;    SETS UP THE COUNTS, ETC.\r
+\r
+DEQ:   CAL DREST;      DELETE THE REST OF THE BUFFER\r
+DEX:   JRST COMLEV;    EXIT\r
+\fDINB: MOVEI INDEX,WBF;        GET INITIAL ADDRESS\r
+       CAL FINDES;     SCAN THE LINE\r
+       JUMPE .+3;      END OF BUFFER\r
+       CAMG LAST;      LAST LINE DONE\r
+       AOJA INDEX,DINB+1;      NO, GO AGAIN\r
+       HLRZS COTP;     COMPUTE TOTAL SIZE\r
+       SUB INDEX,COTP; THIS MUCH SMALLER\r
+       HRLZS COTP;     RESET LEFT HALF\r
+       HRRM INDEX,COTP;        AND RIGHT HALF GET DELTA SIZE\r
+       CLEARM WC;      SET FOR ZERO LENGTH INSERT\r
+       CAL INSED;      INSERT THE NULL LINE\r
+       JRST COMLEV;    AND EXIT\r
+\r
+DREST: HLRZ INDEX,COTP;        DELETE THE REMAINING BUFFER\r
+       SUBI INDEX,WB;  JUST DECREMENT SIZE\r
+       HRRM INDEX,WBC; OF THE NEW BUFFER\r
+       JRST INSE16;    DONE\r
+\fPRINT:        CAL GE2SEQ;     GET THE RANGE\r
+PRLOOP:        MOVE (INDEX);   GET A LINE\r
+       JUMPE GETNEX;   ZERO IMPLIES END OF BUFFER - GET NEXT\r
+       CAMLE LAST;     ARE WE STILL IN THE BALLPARK\r
+       JRST COMLEV;    NO, ALL DONE\r
+       CAL STEP;       PREPARE FOR NEXT HUNT\r
+       CAL OTLINE;     PRINT THIS LINE\r
+       CAL FIND;       FIND THE NEXT LINE\r
+       JRST PRLOOP;    LOOK AT IT\r
+\r
+GE2SEQ:        CAL GETSEQ;     GET A 2 NUMBER RANGE\r
+       SKIPA;          THERE WERE TWO\r
+       JRST GEX;       ONLY ONE\r
+       LSH 1;          JUSTIFY IT\r
+       TROA 1;         AND FLAG IT AS A SEQUENCE NUMBER\r
+GEX:   MOVE SINDEX;    DUPLICATE THE INPUT NUMBER IF JUST ONE\r
+       MOVEM LAST;     STORE THE END OF THE RANGE\r
+       CAL FIND;       SEARCH FOR THE FIRST LINE\r
+       CAMN LAST,FIRST;        BOTH THE SAME\r
+       CAMN SINDEX,(INDEX);    BUT NO MATCH FOUNT\r
+       EXIT;           WILL SKIP THIS ONE\r
+       ERR 2;          AND *NLN*\r
+\r
+STEP:  SAVE CINDEX     ;PROTECT THE STEP\r
+       MOVEI CINDEX,1; PREPARE TO ADD ONE TO SINDEX\r
+       MOVEM SINDEX;   WHICH WE LOAD FROM ZERO\r
+\f\f\f\f\f\f\f        JRST ASCIA+1;   AWAY\r
+\r
+PNEXT: MOVE SINDEX,FIRST;      PRINT NEXT LINE\r
+       MOVE SINDEX;    UPDATE THE LINE POINTER\r
+       CAL STEP;       NEXT LINE\r
+       CAL FIND;       WHERE IS IT\r
+       SKIPN SINDEX,(INDEX);   ZERO IS END, ALSO LOAD SINDEX\r
+       ERR 2;          *NLN*\r
+       MOVEM SINDEX,FIRST;     STEP FIRST POINTER\r
+       CAL OTLINE;     PRINT THE LINE\r
+       JRST OUTTER;    BACK TO CONTROL\r
+\r
+GETNEX:        TRNE FL,S5;     END OF FILE\r
+       JRST COMLEV;    YES, EXIT\r
+       TRZ FL,S0;      FORWARD\r
+       CAL GET;        INPUT IT\r
+       MOVEI INDEX,WB; FIRST ADDRESS\r
+       JRST PRLOOP;    RETURN TO PRINT SCAN\r
+\f\fSUBTTL TELETYPE IO - AUGUST 25, 1965\r
+\r
+;OUTPUT SEQUENCE NUMBER\r
+OTSEQ: AOS TYOBF1;     STEP THE WORD POINTER\r\r\r
+       MOVEM SINDEX,@TYOBF1;   PUT THE SEQUENCE NO.\r
+       MOVEI 1,211;    AND A TAB\r
+       IDPB 1,TYOBF1;  INTO THE OUTPUT BUFFER\r
+OTSEQ4:        OUTPUT TYP,0;   OUTPUT THE TELETYPE BUFFER\r
+       EXIT\r
+\r
+;INPUT ONE LINE FROM TELETYPE AND CONVERT TO SEQUENCED\r
+\r
+GETLIN:        INPUT TYP,0;    READ THE LINE\r
+       MOVEI 1,TTB1;   PREEPARE TO BLOCK IT UP\r
+       HRLI 1,TTB;     DESTINATION\r
+       CLEARM TTB\r
+       BLT 1,TTB16;    BLOCK IT UP\r
+       MOVE TPT,KKK1;  PREPARE THE CONVERSION POINTER\r
+       MOVE IPT,TYIBF1;        AND READ POINTER\r
+       MOVE 2,TYIBF2;  AND THE COUNT\r
+       MOVEM SINDEX,(TPT);     PUT IN THE SEQUENCE\r
+       MOVEI 1,211;    TAB\r
+       AOJA TPT,EOMLOP+2;      START CONVERSION\r
+\r
+EOMLOP:        SOJL 2,EOMOUT;  IF ALL OUT OF CHARACTERS\r
+       ILDB 1,IPT;     READ ONE\r
+       IDPB 1,TPT;     WRITE ONE\r
+       CAIE 1,33;      ALTERNATE ALTMOD\r
+       CAIN 1,175;     REGULAR ALTMOD\r
+       JRST CRT;               MAKE EXIT\r
+       JRST EOMLOP;    GET MORE\r
+\r
+EOMOUT:        MOVE WC,TPT;    FORM WORD COUNT\r
+       SUB WC,KKK1;    INITIAL VALUE\r
+       HRRZS WC;               CLEAR LEFT\r
+       CAIN 1,12;      LINE FEED\r
+       ADDI WC,1;      MEANS STEP COUNT\r
+STEPEX:        AOS (PDP);      SKIP EXIT\r
+       EXIT\r
+KKK1:  POINT 7,TTB;    INITIAL POINTER\r
+\r
+;OUTPUT ONE LINE OF TEXT\r
+\r
+OTLINE:        MOVE (INDEX);   FIRST WORD\r
+       JRST OTL1\r
+       MOVE (INDEX);   SUBSEQUENT WORDS\r
+       JUMPE OTSEQ4;   ZERO IMPLIES THE END OF THE WORLD\r
+       TRNE 1;         ONE IMPLIES THE END OF THE LINE\r
+       JRST OTSEQ4\r
+OTL1:  AOS TYOBF1;     PUT IT IN THE OUTPUT BUFFER\r
+       MOVEM @TYOBF1\r
+       AOJA INDEX,OTLINE+2;    GO FOR MORE\r
+\f;GET ONE CHARACTER\r
+\r
+GETCHR:        INPUT TYP,0;    GET A LINE\r
+       MOVE IPT,TYIBF1;        PREPARE INPUT POINTER\r
+       ILDB C,IPT;     LOAD THE FIRST CHARACTER\r
+       EXIT\r
+\r
+;GET A SEQUENCE PAIR\r
+\r
+GETSEQ:        CLEARB 0,SINDEX;        MAKE BOTH ZERO\r
+       ILDB C,IPT;     GET A CHARACTER\r
+       CAIL C,60;      IT MUST BE A NUMBER\r
+       CAILE C,71\r
+       JRST ETEST;     OR A DELIMITER\r
+       LSH SINDEX,7;   NUMBER\r
+       ADD SINDEX,C;   NEW ONE\r
+       JRST GETSEQ+1\r
+\r
+ETEST: CAIN C,56;      POINT?\r
+       JRST PER\r
+       CAIN C,54;      COMMA?\r
+       JRST CMMA\r
+       SKIPE SINDEX;   IF NOTHING INPUT YET\r
+       CAIE C,15;      OR NOT A CARRET\r
+COMERR:        ERR 1;          ILLEGAL COMMAND\r
+       IOR SINDEX,KK4; MAKE IT AN ASCII THING\r
+       SKIPE 0;                IF TWO ARGS\r
+       EXCH SINDEX,0;  SWAP EM BACK\r
+       LSH SINDEX,1;   LEFT JUSTIFY\r
+       TRO SINDEX,1;   AND FLAG IT\r
+       MOVEM SINDEX,FIRST;     SAVE IT FOR .\r
+       JUMPE STEPEX;   ONLY ONE ARG\r
+       EXIT;           TWO ARGS\r
+\r
+CMMA:  JUMPE SINDEX,COMERR;    THREE ARGS?\r
+       JUMPN COMERR;   ONE ARG\r
+       IOR SINDEX,KK4; ASCII-IZE IT\r
+       EXCH SINDEX,0;  SWAP EM\r
+       JRST GETSEQ+1\r
+\r
+PER:   JUMPN SINDEX,COMERR;    CANT BE THIRD ARG\r
+       MOVE SINDEX,FIRST;      RETREIVE POINT\r
+       LSH SINDEX,-1;  RIGHT JUSTIFY\r
+       JRST GETSEQ+1\r
+\r
+KK4:   OCT 140603014060;       00000\r
+\fSUBTTL DECSET - AUGUST 25, 1965\r
+\r
+FOPEN=1000\r
+\r
+;SET FILE OPEN (*SN,NAME)\r
+\r
+DECINI:        TLNE FL,FOPEN;  IF A FILE IS NOT ALREADY OPEN\r
+                       ;       THEN GOTO NORMAL PROCESS\r
+       ERR 1 ; IF FILE OPEN ,MUST CLOSE W. E\r
+DECIN1:        SETZB FL,WBC;   ZERO FLAGS AND WORD COUNT\r
+       CLEARM DTNAME;  FILE NAME\r
+       CLEARM DTNAME+1;        AND EXTENSION\r
+       CLEARM DTNAME+2;        AND DATE\r
+       CAL GTCHAR;     GET UNIT NUMBER\r
+       CAIL 60;                IT MUST BE A NUMBER\r
+       CAILE 70;\r
+       JRST .-3;               IGNORE ANYTHING ELSE\r
+       DPB [POINT 5,PLUNK,23]; DUMP INTO INIT COMMAND\r
+       CAL GTCHAR;     NEXT CHARACTER\r
+       CAIE 54;                COMMA?\r
+       JRST .-2;               IGNORE ALL ELSE\r
+LOOP0: MOVE 1,[POINT 6,DTNAME];        INITIALIZE NAME POINTER\r
+       MOVEI C,6;      MAX NAME LENGTH\r
+LOOP:  CAL GTCHAR;     GET A CHARACTER\r
+       CAIL "0";               NUMBERS AND LETTERS ONLY COME HERE\r
+       CAILE "9";      SO HERE FILTER NUMBERS\r
+       JRST LOOP1;     IT IS A LETTER\r
+LOOP2: TRC 40; NUMBER - MAKE IT SIXBIT\r
+       IDPB 1;         STORE INTO NAME (OR EXTENSION)\r
+       SOJG C,LOOP;    COUNT DOWN FOR SIZE\r
+       CAL GTCHAR;     NEXT CHARACTER\r
+       JRST .-1;\r
+\r
+\fGTCHAR:       ILDB IPT;               LOAD ONE CHARACTER\r
+       CAIN 15;                CRT\r
+       JRST GET1;      SNEAK EXIT\r
+       CAIN ".";       AN EXTENSION IS COMMING\r
+       JRST GET2;      FIX IT UP\r
+       CAIE 33;                THE FUNNY ALTMODE\r
+       CAIN 175;               AND THE REAL ONE\r
+       JRST    GET11   ;CAUSE EXIT TO OCCUR\r
+       CAIN    0,12    ;LF CHAR?\r
+       JRST GET1       ; YES TREAT AS CR\r
+       CAIE 1;         CONTROL A\r
+       EXIT;           NOTA SO EXIT HAPPY\r
+       TLO FL,100;     SET CONTROL A FLAG\r
+       JRST GTCHAR;    GET ANOTHER CHARACTER\r
+GET11: TLO     FL,2    ;NEW FILE FLAG\r
+\r
+GET1:  UNSAVE; POP OFF EXIT\r
+GO:    MOVEI DTOBUF;   THESE TWO INSTRUCTIONS REQUIRED\r
+       HRLM PLUNK+1;   REQUIRED TO LINK LEFT HALF\r
+       MOVE SJOBFF;    RESET JOB AREA\r
+       MOVEM JOBFF;    TO PREVENT STORAGE EAT-UP\r
+       INIT DT,0;      INITIALIZE DECTAPE\r
+PLUNK: SIXBIT /DTA/;   RIGHT HALF SET ABOVE\r
+       XWD 0,DTIBUF;   LEFT HALF SET ABOVE\r
+       ERR 5;          UNIT NOT AVAILABLE\r
+       MOVSI 400000;   USE BIT\r
+       ANDCAM DTB;     CLEAR IT\r
+       HRRI DTB;               HEAD OF BUFFER\r
+       MOVEM DTIBUF;   SETUP IN HEADER\r
+       OUTBUF DT,1;    SET UP SINGLE BUFFER\r
+       TLZE FL,100;    NEW DIRECTORY?\r
+       CALLI DT,13;    YES, ZONK IT (UTPCLR)\r
+       SKIPN DTNAME;   NO NAME MEANS JUST CLEAR, PROB\r
+       JRST FINIS2;    SO EXIT AND CLOSE FILE\r
+       LOOKUP DT,DTNAME;       IS THE NAME ALRRADY THERE\r
+       JRST NEWFIL;    NO, SO WE ENTER IT\r
+       TLNE FL,2;      ARE WE ASKING FOR A NEW FILE\r
+       ERR 10;         YES, FAU\r
+\r
+DOIT:  MOVE 2,DTNAME+1;        GET LINK\r
+       USETI DT,(2);   SET IT UP\r
+       OUTPUT DT,;     MAKE SYSTEM HAPPY\r
+       USETO DT,(2);   SET UP OUTPUT ALSO\r
+       TLZN FL,10;     NEW FILE?\r
+       JRST DOIT1;     NO, ALMOST DONE\r
+       SETZM WBF;      WE MUST FORCE AN EMPTY BLOCK\r
+       TLO FL,1;               SET BUFFER FULL FLAG\r
+       SETZM WBC;      ZERO LENGTH\r
+       TRO FL,S3+S5+S6+S8;     INITIAL STATE, FIRST BLOCK MODIFIED\r
+DOIT1: MOVEM 2,THSBLK; SETUP CURRENT BLOCK NUMBER\r
+       TLO FL,FOPEN;   SET FILE STATUS TO OPEN\r
+       JRST COMLEV;    ALL DONE\r
+\fNEWFIL:       TLNN FL,2;      WAS ALTMOD STRUCK\r
+       ERR 11;         NO, NCF\r
+       ENTER DT,DTNAME;        PUT IN DI\r
+       ERR 6;          DCE\r
+       TLO FL,10;      SET NEW FILE FLAG\r
+       JRST DOIT;\r
+\r
+LOOP1: CAIL "A";       LETTER CHECK\r
+       CAILE "Z";      IT MUST VERILY BE A LETTER\r
+       JRST LOOP;      WE IGNORE IT\r
+       JRST LOOP2;     WE PROCESS IT\r
+\r
+GET2:  SKIPE DTEXTN;   EXTENSION?\r
+       ERR 1;          ALREADY GOT ONE, CANT HAVE TWO\r
+       TLZ 1,770000;   MAGIC TO BYTE POINTER TO POINT TO NEXT\r
+       MOVEI C,3;      ONLY 3 LETTERS IN EXTENSION\r
+       UNSAVE;         POP OF SOME GARBAGE\r
+       JRST LOOP;      RETURN TO LISTEN\r
+\r
+DTNAME:        0;      FILE NAME\r
+DTEXTN:        0;      FILE EXTENSION\r
+DTDATE:        0;      DATE\r
+       0;              DUMMY\r
+\r
+FBNUM=DTEXTN\r
+\r
+\fSUBTTL INITIA - AUGUST 25, 1965\r
+AL=1\r
+INITIA:        CALLI 0,0;      RESET SYSTEM\r
+       INIT TYP,AL;    RESET CONCOLE\r
+       SIXBIT /TTY/\r
+       XWD TYOBUF,TYIBUF\r
+       HALT\r
+       INBUF TYP,1;    SET UP ONE INPUT BUFFER\r
+       OUTBUF TYP,2;   AND TWO OUTPUT BUFFERS\r
+       MOVE JOBFF;     SAVE FIRST FREE\r
+       MOVEM SJOBFF;   FOR LATER RESTART\r
+       OUTPUT TYP,0;   MAKE SYSTEM HAPPY\r
+INITIX:        MOVE CINDEX,KK1;        INITIALIZE STEP TO 10\r
+       MOVEI PDP,PDSTAK-1;     INITIALIZE PUSHDOWN POINTER\r
+       CLEARB SINDEX,FL;       FLAGS AND SEQUENCE INDEX\r
+       MOVNI P,1;      AND FIRST BLOCK POINTER\r
+       CLEARM WBC;     WORD COUNT\r
+COMLEV:        CAL CRT;        A COMMON RETURN\r
+       CAIL FL,0 ; DDE ERROR\r
+       JRST OUTTER    ; NO, SO OFF TO LISTEN CONTROL\r
+       JRST INITIA   ; YES GO RESET WORLD\r
+\r
+;BUFFERS, ET. AL.\r
+KK1:   OCT 140603014260;       00010\r
+TYOBUF:        BLOCK 3\r
+TYIBUF:        BLOCK 3\r
+\r
+DTOBUF:        BLOCK 3\r
+DTIBUF:        0\r
+       XWD 700,0;      SELF ASSIGNED BUFFERS, ETC.\r
+       0\r
+\r
+FIRST: 0\r
+SJOBFF:        0\r
+\r
+WBC:   0;              WORKING BUFFER COUNT\r
+       0\r
+DTB:   XWD 200,DTB;    DECTAPE HEADER\r
+WBF:   0\r
+WB:    BLOCK 217;      THE WORKING BUFFER\r
+RESTT: SIXBIT .RESET.\r
+\r
+PDSTAK:        BLOCK 7;        PUSHDOWN STAK\r
+TTB:   BLOCK 23;       TELETYPE BUFFER-BUFFER\r
+TTB16: 0\r
+\r
+TTB1=TTB+1\r
+TYIBF1=TYIBUF+1\r
+TYIBF2=TYIBUF+2\r
+TYOBF1=TYOBUF+1\r
+DTOBF1=DTOBUF+1\r
+\r
+EXTERNAL JOBFF\r
+EDEND:\r
+\r
+END INITIA\r
+\f\r
diff --git a/src/editor.opr b/src/editor.opr
new file mode 100644 (file)
index 0000000..a70276e
--- /dev/null
@@ -0,0 +1,10 @@
+\r
+EDITOR ASSEMBLY AND LOADING INSTRUCTIONS\r
+$=ALTMODE\r
+\r
+       .R MACRO\r
+       *DSK:EDITOR,_DSK:EDITOR\r
+       *^C\r
+       .R LOADER\r
+       *DSK:EDITOR$\r
+       .SAVE DSK EDITOR\r
diff --git a/src/errcon.mac b/src/errcon.mac
new file mode 100644 (file)
index 0000000..2cd40d1
--- /dev/null
@@ -0,0 +1,393 @@
+TITLE ERRCON - ERROR HANDLING ROUTINE FOR MONITOR DECTECTED ERRORS\r
+SUBTTL 8-9-65\r
+EXTERNAL APRCHL,APRRET,HOLD,HOLDI,APRCHN\r
+EXTERNAL JOB,JOBADR,JOBREL,TTYFND,TTYCTR,TTYSTR\r
+EXTERNAL JBTADR, UXIT,JOBPDP,JOBTRP,USRPDP,UBUF,PJOBN\r
+EXTERNAL CPOPJ,HOLDI1,WAIT1,USRPOV,JOBPFI\r
+EXTERNAL CRLF,MJOBPD,JOBPDL,CPOPJ1\r
+\f\r
+;CALL:   PUSHJ PDP,ADRCK\r
+;                  HRRZ TAC,LOC\r
+;                  OK RETURN\r
+\r
+         INTERNAL ADRCK\r
+\r
+ADRCK:   PUSH PDP, TAC\r
+         XCT @-1(PDP)\r
+         AOS -1(PDP)\r
+         PUSH PDP,TAC1\r
+         LDB TAC1,PJOBN\r
+         HLRZ TAC1,JBTADR(TAC1)\r
+         CAILE TAC,JOBPFI      ;IN IO PROTECTED PART OF DATA AREA?\r
+         CAMLE TAC,TAC1        ;NO,IS IT GREATER THAN PROTECTION?\r
+         PUSHJ PDP,ADRERR      ;YES\r
+         POP PDP,TAC1          ;NO\r
+         POP PDP, TAC\r
+         POPJ PDP,\r
+\f\r
+         INTERNAL ADRERR\r
+\r
+ADRERR:          HRRZ TAC1,PDP\r
+         CAMG TAC1,JOBADR      ;IS THIS ERROR AT UUO OR INTERRUPT SERV\r
+         JRST ADRERI           ;INTERRUPT SERVICE LEVEL\r
+         JSP TAC,ERRPTU\r
+         POINT 7,AERM1\r
+         PUSHJ PDP,ERNAM\r
+         JRST ERSYC1\r
+\r
+AERM1:   ASCIZ /ADDRESS CHECK FOR /\r
+\r
+ADRERI:          LDB ITEM, PJOBN\r
+         JSP TAC,ERRPNT\r
+         POINT 7,AERM1\r
+         PUSHJ PDP,ERNAM\r
+         MOVEI TAC1,AERM3\r
+         PUSHJ PDP,MESPNT\r
+ADRER2:          EXCH DEVDAT, (PDP)    ;GET ADDRESS OF D.D. BLOCK DECTECTING ER\r
+         LDB TAC, [POINT 3, DEVCHR(DEVDAT), 11]  ;GET PI CHANNEL NO.\r
+         PUSH PDP, TAC                 ;AND SAVE\r
+         MOVE TAC,DEVSER(DEVDAT)\r
+         PUSHJ PDP,DRL(TAC)    ;RELEASE DEVICE\r
+         POP PDP, TAC          ;RESTORE PI CHANNEL NO.\r
+         EXCH DEVDAT,(PDP)\r
+         JRST HOLDI                    ;AND GO DISMISS CHANNEL\r
+\r
+AERM3:   ASCIZ / DURING INTERRUPT/\r
+\f\r
+         INTERNAL APRILM\r
+         EXTERNAL USRREL\r
+\r
+         POVF=200000\r
+         POVC=400000\r
+         NXM=10000\r
+         ILM=20000\r
+\r
+APRILM:          MOVEI TAC,APRCHN\r
+         CONSO APR,ILM\r
+         JRST APRNXM\r
+         CONO APR,ILM(TAC)\r
+         HRRZ TAC,APRCHL\r
+         CAMLE TAC, USRREL\r
+         JRST APRJRS\r
+         JSP TAC,ERRPTU\r
+         POINT 7,APM1\r
+APRIL1:          PUSHJ PDP,EPTADR\r
+         JRST APRDMS           ;GO DISMISS APR CHANNEL\r
+\r
+APRJRS:          JSP TAC,ERRPTU\r
+         POINT 7,APM2\r
+         PUSHJ PDP,EPTADR\r
+         JRST APRDMS\r
+\r
+APM1:    ASCIZ /ILL MEM REF/\r
+\r
+APM2:    ASCIZ /PC EXCEEDS MEM BOUND/\r
+\r
+\r
+\r
+\r
+APRNXM:          CONSO APR,NXM\r
+         JRST APRPDL\r
+         CONO APR,NXM(TAC)\r
+         JSP TAC,ERRPTU\r
+         POINT 7,APM3\r
+         JRST APRIL1\r
+\r
+APM3:    ASCIZ /NON EX MEM/\r
+\r
+\f\r
+APRPDL:          CONSO APR,POVF\r
+         JSP DAT, ERROR        ;NOT APR, MUST BE HARDWARE PROB.\r
+         CONO APR,POVC(TAC)\r
+         MOVE TAC,APRCHL\r
+         SKIPE TAC1,USRPOV\r
+         TLNN TAC,10000        ;WAS OVF IN USER MODE?\r
+         JRST PDLOV                    ;NO, GO PRINT MESSAGE\r
+         HRRM TAC1,APRCHL      ;RESET RETURN\r
+         JRST APRRET                   ;DISMISS CLOCK\r
+PDLOV:   JSP TAC,ERRPTU\r
+         POINT 7,APM4\r
+         PUSHJ PDP,EPTADR\r
+         MOVE TAC,APRCHL\r
+         TLNE TAC,10000\r
+         JRST APRDMS           ;GO DISMISS APR CHANNEL\r
+         MOVEI TAC1,ERMS1\r
+         PUSHJ PDP,MESPC\r
+APRDMS:          MOVEI TAC, 0          ;SET TO DISMISS APR CHANNEL\r
+         JRST HOLDI1\r
+\r
+APM4:    ASCIZ .PDL OV.\r
+\r
+APMSYS:          ASCIZ / AT EXEC LOC /\r
+\r
+\r
+APMUSR:          ASCIZ / AT USER LOC /\r
+\r
+\r
+EPTADR:          MOVE TAC,APRCHL\r
+EPTAD1:          PUSH PDP,TAC          ;PPRINT "AT EXEC LOC " OR "AT USER LOC"\r
+         MOVEI TAC1,APMSYS\r
+         TLNE TAC,10000\r
+         MOVEI TAC1,APMUSR\r
+         PUSHJ PDP,MESPNT\r
+         POP PDP,TAC\r
+         ANDI TAC,-1\r
+         JRST OCTPNT\r
+\f\r
+         INTERNAL ERNAM\r
+\r
+\r
+ERNAM:   MOVEI TAC1,ERRDEV\r
+         PUSHJ PDP,MESPNT\r
+         MOVE TAC1,[POINT 6,@-(PDP)]\r
+         MOVEI 0,6\r
+ERNAM1:          ILDB TAC,TAC1\r
+         JUMPE TAC,.+4\r
+         ADDI TAC,240\r
+         IDPB TAC,DAT\r
+         SOJG 0,ERNAM1\r
+         POPJ PDP,\r
+\r
+ERRDEV:          ASCIZ /DEVICE /\r
+\r
+INTERNAL DIRERR\r
+\r
+DIRERR:          POP PDP,0 ;FLUSH RETURN ADDRESS\r
+         JSP TAC,ERRPTU\r
+         POINT 7,DIRER1\r
+         PUSHJ PDP,ERNAM\r
+         JRST ERSYC1\r
+\r
+DIRER1:          ASCIZ /BAD DIRECTORY FOR /\r
+\f\r
+;        INTERNAL ERRDIS\r
+\r
+;ERRDIS:  LDB TAC,[POINT 4,DEVCHR(DEVDAT),17]\r
+;        ADDI TAC,ERRC2\r
+;        SKIPL TAC1,@TAC\r
+;        JRST 4,.\r
+;        TLZ TAC1,400000\r
+;        MOVEM TAC1,@TAC\r
+;        MOVE PDP,JOBPDP(PROG)\r
+;        MOVE TAC,@TAC\r
+;        HRLI TAC,PROG\r
+;        MOVE TAC,@TAC\r
+;        HLL TAC,1(PDP)\r
+;        PUSH PDP,TAC\r
+;        JRST UXIT\r
+\r
+;ERRC2:          XWD PROG,JOBTRP\r
+\f\r
+;UNEXPLAINED ERROR ENTRY\r
+;CALL:   JSP DAT, ERROR\r
+\r
+INTERNAL ERROR\r
+EXTERNAL JOBPD1\r
+\r
+ERROR:   MOVEI ITEM,1          ;PRINT ON OPERATORS CONSOLE(JOB 1)\r
+         JSP TAC,ERRPNT\r
+         POINT 7,ERR1\r
+         HRRZ TAC,-2(PDP)      ;GET LOC OF CALL TO ERROR\r
+EPOCT:   PUSHJ PDP,PCPNT\r
+ERSYC1:          MOVEI TAC1,ERMS1\r
+\r
+ERSYCL:          PUSHJ PDP,MESPC\r
+         JRST HOLD\r
+\r
+EPCAD0:          PUSHJ PDP,MESPNT      ;PRINT MESS\r
+EPCAD1:          PUSHJ PDP,EPCAD       ;PRINT LAST USER CALL TO MONITOR\r
+         JRST HOLD\r
+\r
+EPCADR:          PUSHJ PDP,MESPNT\r
+EPCAD:   MOVE TAC, JOBPD1(JDAT)        ;GET LAST USER UUO CALL\r
+         SOJA TAC,EPTAD1\r
+\r
+ERR1:    ASCIZ /ERROR IN MONITOR AT /\r
+ERMS1:   ASCIZ /; EXEC CALLED FROM /\r
+\f\r
+;ERROR SETUP ROUTINE\r
+;CALL:   MOVE ITEM, JOBNUMBER\r
+;        MOVE DEVDAT, DEVICE DATA BLOCK IF DEVICE ERROR\r
+;        JSP TAC, ERRPNT\r
+;        POINT 7, ERROR MESSAGE\r
+;        RETURN\r
+\r
+\r
+         INTERNAL ERRPNT,ERRPTU\r
+\r
+ERRPTU:          MOVE ITEM,JOB\r
+ERRPNT:          MOVE PROG,JBTADR(ITEM)\r
+         MOVE JDAT,JBTADR(ITEM)        ;GET ADDRESS OF JOB DATA AREA\r
+         JUMPE JDAT, ERRPD     ;SET UP PDP IN USER AREA IF HE HAS CORE\r
+         MOVSI PDP, MJOBPD\r
+         HRRI PDP, JOBPDL(JDAT)\r
+\r
+         AOBJN PDP, .+1                ;LEAVE ROOM FOR UUO RETURN\r
+ERRPD:   PUSH PDP, DAT         ;SAVE CLALL TO ERROR SUB\r
+         PUSH PDP, DEVDAT\r
+         PUSH PDP, TAC                 ;SAVE RETURN\r
+         PUSHJ PDP, TTYFND\r
+         MOVEI TAC1,SYSERR\r
+         PUSHJ PDP,MESPNT\r
+         MOVE TAC, ITEM\r
+         PUSHJ PDP,RADX10\r
+         PUSHJ PDP, CRLF               ;PRINT CRLF\r
+         MOVE TAC1, @(PDP)\r
+         PUSHJ PDP, MESPNT\r
+         JRST CPOPJ1\r
+\r
+SYSERR:          ASCIZ /\r
+ERROR IN JOB /\r
+\f\r
+,ERROR TRAP HANDLING\r
+\r
+;ERRTRP:  LDB TAC,[POINT 4,DEVCHR(DEVDAT),17]\r
+;        ADDI TAC,ERRC2\r
+;        SKIPG TAC1,@TAC\r
+;        TLO TAC1,400000\r
+;        MOVEM TAC1,@TAC\r
+;        AOS       TAC\r
+;        MOVE PDP,JOBPDP(PROG)\r
+;        AOS       TAC\r
+;        MOVE TAC1,1(PDP)\r
+;        PUSH PDP,TAC\r
+;        HLL TAC1,0(PDP)\r
+;        HRLI TAC1,PROG\r
+;        MOVEM TAC,@TAC1\r
+;        JRST UXIT\r
+\f\r
+         INTERNAL ILLINP\r
+\r
+ILLINP:          JSP TAC,ERRPTU\r
+         POINT 7,ILLOT\r
+         PUSHJ PDP,ERNAM\r
+         JSP TAC1, EPCAD0\r
+ASCIZ / CANNOT DO INPUT/\r
+\r
+ILLOT:   ASCIZ /OUTPUT /\r
+\r
+\r
+         INTERNAL ILLINS\r
+\r
+ILLINS:          JSP TAC,ERRPTU\r
+         POINT 7,ERRIL\r
+         JRST EPCAD1\r
+\r
+ERRIL:   ASCIZ /ILL INST/\r
+\f\r
+       INTERNAL ILLMOD\r
+\r
+ILLMOD:        JSP TAC,ERRPTU\r
+       POINT 7,ILLMO1\r
+       PUSHJ PDP,ERNAM\r
+       JRST EPCAD1\r
+\r
+ILLMO1:        ASCIZ /ILL DEVICE DATA MODE FOR /\r
+\r
+       INTERNAL ILLOUT\r
+\r
+ILLOUT:        JSP TAC,ERRPTU\r
+       POINT 7,ILLIN\r
+       PUSHJ PDP,ERNAM\r
+       JSP TAC1,EPCAD0\r
+\r
+ILM3:          ASCIZ / CANNOT DO OUTPUT/\r
+\r
+ILLIN: ASCIZ /INPUT /\r
+INTERNAL IOIERR\r
+\r
+IOIERR:        JSP TAC,ERRPTU\r
+       POINT 7,IOIER1\r
+       JRST EPCAD1\r
+\r
+IOIER1:        ASCIZ /IO TO UNASSIGNED CHANNEL/\r
+\r
+,CALL WITH DEST. POINTER IN DAT\r
+,SOURCE POINTER IN TAC1\r
+,MOVES UNTIL A ZERO CHAR. IS FOUND\r
+\r
+       INTERNAL MESPNT\r
+MESPNT:        HRLI TAC1,440700\r
+MES1:  ILDB TAC, TAC1\r
+       JUMPE TAC,CPOPJ\r
+       IDPB TAC, DAT\r
+       JRST MES1\r
+\r
+,ANY RADIX PRINT\r
+,  TAC1 = RADIX\r
+,  DAT = BYTE POINTER\r
+,  TAC = NUMBER\r
+\r
+       INTERNAL OCTPNT, ANYRDX, PCPNT\r
+       EXTERNAL UUO0,JOBPD1\r
+\r
+MESPC: PUSHJ PDP, MESPNT       ;PRINT LAST USER UUO CALL\r
+       HRRZ TAC,JOBPD1(JDAT)\r
+PCPNT: SUBI TAC,1\r
+       AND TAC,-1\r
+OCTPNT:        MOVEI TAC1,10\r
+ANYRDX:        PUSH PDP,ITEM\r
+       HRRZM TAC1, ITEM\r
+       PUSHJ PDP,OCTP1\r
+       POP PDP,ITEM\r
+       POPJ PDP,\r
+\r
+OCTP1: IDIV TAC,ITEM\r
+       HRLM TAC1, (PDP)\r
+       JUMPE TAC, .+2\r
+       PUSHJ PDP, OCTP1\r
+       HLRZ TAC, (PDP)\r
+       ADDI TAC, "0"\r
+       IDPB TAC, DAT\r
+       POPJ PDP,\r
+\r
+INTERNAL RADX10\r
+\r
+RADX10:        PUSH PDP,TAC1   ;OUTPUT DECIMAL\r
+       MOVEI TAC1,12\r
+       PUSHJ PDP,ANYRDX\r
+       POP PDP,TAC1\r
+       POPJ PDP,\r
+\r
+REPEAT 0,<\r
+PCPNT: SUBI TAC,1\r
+OCTPNT:        HRLZ TAC1,TAC\r
+  MOVSI TAC,-1\r
+ LSHC TAC,3\r
+  TRNN TAC,7\r
+   JUMPN TAC1,.-2\r
+OCTPN1:        ADDI TAC,"0"\r
+  IDPB TAC,DAT\r
+  JUMPGE TAC,CPOPJ\r
+  HLLZS TAC\r
+  LSHC TAC,3\r
+  JRST OCTPN1\r
+>\r
+\r
+       INTERNAL UTBKER\r
+UTBKER:        LDB ITEM,PJOBN  ;JOB NUMBER\r
+       JSP TAC,ERRPNT\r
+       POINT 7,UTERM\r
+       MOVE TAC,UBUF\r
+       SUBI TAC,(PROG)\r
+       PUSHJ PDP,OCTPNT\r
+       MOVEI TAC1, [ASCII / /]\r
+       PUSHJ PDP, MESPNT\r
+       PUSHJ PDP,ERNAM\r
+       JRST ADRER2\r
+\r
+UTERM: ASCIZ /ILL DT BLOCK NO. , BUFFER AT /\r
+\r
+       INTERNAL UUOERR\r
+       EXTERNAL UUO0\r
+\r
+UUOERR:        JSP TAC,ERRPTU\r
+       POINT 7,UUOER1\r
+       MOVE TAC, UUO0  ;UUO PC\r
+       TLNE TAC, 10000 ;WAS IT FROM USER?\r
+       JRST EPCAD1     ;YES, JUST PRINT LOC OF CALL\r
+       PUSHJ PDP,EPTAD1        ;NO, PRINT BOTH EXEC CALL\r
+       JRST ERSYC1     ;AND USER CALL\r
+\r
+UUOER1:        ASCIZ /ILL PROG. OP. USED/\r
+       END,\r
diff --git a/src/fudge2.mac b/src/fudge2.mac
new file mode 100644 (file)
index 0000000..0460ef9
--- /dev/null
@@ -0,0 +1,2012 @@
+TITLE  FUDGE2  V.011\r
+SUBTTL 2-OCT-70        ED YOURDON/VJC/DMN\r
+;FILE UPDATE GENERATOR\r
+;"COPYRIGHT 1968,1969,DIGITAL EQUIPMENT CORP. MAYNARD,MASS. U.S.A."\r
+\r
+       VFUDGE==11              ;VERSION NUMBER\r
+       VPATCH==0               ;DEC PATCH LEVEL\r
+       VCUSTOM==0              ;NON-DEC PATCH LEVEL\r
+\r
+       JOBVER==137\r
+       LOC     JOBVER\r
+       XWD VCUSTOM,VFUDGE+VPATCH*1000\r
+       RELOC\r
+       MLON\r
+\r
+;FUDGE ACCUMULATOR DEFINITIONS\r
+\r
+       A=      1               ;GENERAL COMMUNICATION AC\r
+       B=      2               ;SCRATCH ACCUMULATOR\r
+       T=      3               ;USED IN /C AND /X ONLY\r
+       C=      4               ;SCRATCH ACCUMULATOR\r
+       D=      5               ;IO DEVICE NUMBER ACCUMULATOR\r
+       E=      6               ;SCRATCH ACCUMULATOR\r
+       F=      7               ;FLAG ACCUMULATOR\r
+       G=      10              ;DEVICE CHARACTERISTICS AC\r
+       H=      11              ;USED IN GETCHR AND GETCMN\r
+       P=      12              ;PUSHDOWN POINTER AC\r
+       R=      13              ;PROGRAM NAME-USED IN READ,WRITE\r
+       S=      14              ;SIXBIT SYMBOL ACCUMULATOR\r
+       DIS=    15              ;DISPATCH ACCUMULATOR\r
+       EXT=    16              ;FILE NAME EXTENSION ACCUMULATOR\r
+       SW=     17              ;SWITCH UUO AC\r
+\r
+\f;FUDGE FLAG DEFINITIONS (RIGHT HALF OF ACCUMULATOR F)\r
+\r
+       DESTB== 1               ;1-DESTINATION DEVICE SEEN\r
+       SAVEB== 2               ;1-SWITCH SEEN,BUT NOT EXECUTED\r
+       SWTB==  4               ;1-SWITCH MODE ENTERED IN GETCHR\r
+       SLSHB== 10              ;1-SWITCH MODE ENTERED WITH </>\r
+       TTYOB== 20              ;1-NON-TTY OUTPUT;USED BY IO\r
+       TTYCB== 40              ;1-NON-TTY OUTPUT;USED BY COMMAND\r
+       PROGB== 100             ;1-PROGRAM NAME SEEN IN SPECIFICATION\r
+       NOLOCB==200             ;1-DELETE LOCAL SYMBOLS ***VJC\r
+       DEVB==  400             ;1-DEVICE NAME SEEN IN SPEC.\r
+       EXTB==  1000            ;1-EXPLICIT FILE NAME EXTENSION\r
+       ERRB==  2000            ;1-ERROR IN ENTRY BLOCK CHECK\r
+       INFOB== 4000            ;1-VALID INFORMATION IN COMMAND\r
+       CONB==  10000           ;1-CONTEXT OF <.> IS PROGRAM NAME\r
+                               ;0-CONTEXT OF <.> IS FILE NAME\r
+       F4IB==  20000           ;1-IGNORE F4 OUTPUT\r
+       CRLFTY==40000           ;1-CR,LF TYPED (FOR ERROR MSG)\r
+       POPBAK==100000          ;1-XCT POPJ P,  ;TO RETURN TO CALLING SEQ.\r
+       XFLG==  200000          ;1-INDEX THIS FILE\r
+       DTAFLG==400000          ;1-OUTPUT DEVICE IS DTA (SPECIAL INDEX)\r
+\f\r
+\r
+\r
+;HANDY BITS FOR CALLS TO DEVCHR FOR DEVICE CHARACTERISTICS\r
+       OUTBIT==1               ;1-DEVICE CAN DO OUTPUT\r
+       INBIT== 2               ;1-DEVICE CAN DO INPUT\r
+       DRCTRB==4               ;1-DEVICE HAS A DIRECTORY\r
+       TTYBIT==10              ;1-DEVICE IS A TTY\r
+       DTABIT==100             ;1-DEVICE IS A DTA\r
+       LPTBIT==40000           ;1-DEVICE IS LPT\r
+       DSKBIT==200000          ;1-DEVICE IS DSK\r
+\r
+;OTHER USEFUL PARAMETER ASSIGNMENTS\r
+       N==     200             ;SIZE OF MASTER AND TRAN BUFFERS\r
+       XP==    20              ;SIZE OF PUSHDOWN LIST\r
+       SIZE==  500             ;SIZE OF PURE ENTRY BLOCK\r
+       X==     SIZE+5          ;SIZE OF ENTRY AND SAVE BLOCKS\r
+       IOEOF== 20000           ;1-END-OF-FILE HAS BEEN SEEN\r
+       IOBKTL==40000           ;1-BLOCK-TOO-LARGE ERROR\r
+       IODATA==100000          ;1-DATA ERROR\r
+       IODEV== 200000          ;1-DEVICE ERROR\r
+       IOBOT== 4000            ;1-MAG TAPE IS AT BEGINNING OF TAPE\r
+\r
+       RIBALC==11              ;NUMBER OF BLOCKS ALLOCATED\r
+\r
+;EXTERNAL SYMBOLS\r
+       EXTERN  JOBFF, JOBREL, JOBSYM, JOBSA\r
+\r
+OPDEF  JSR     [PUSHJ  P,]     ;PURE FOR RE-ENTRANT FUDGE\r
+\r
+\fSUBTTL INITIALIZE AND SETUP OF FUDGE2\r
+;THIS SECTION OF CODING DOES THE FOLLOWING THINGS\r
+;      1.RESETS ALL IO DEVICES BY CALLING [SIXBIT /RESET/]\r
+;      2.INITIALIZES THE TELETYPE IN ASCII-LINE MODE\r
+;      3.TYPES A * TO SIGNIFY READINESS FOR INPUT FROM USER\r
+;      4.SETS UP A PUSHDOWN LIST\r
+;      5.INITIALIZES VARIOUS ACCUMULATORS, CLEARS THE FLAGS,\r
+;        AND INITIALIZES THE MSTBUF AND TRNBUF COUNTERS\r
+\r
+FUDGE2:        JFCL                    ;INCASE OF CCL ENTRY\r
+       RESET                   ;RESET I/O DEVICES   \r
+       MOVE    [XWD LOW,LOW+1]\r
+       SETZM   LOW             ;CLEAR DATA AREA\r
+       BLT     LOWTOP-1\r
+       MOVE    [XWD 17,11]     ;TEST FOR LEVEL D\r
+       SETZ                    ;FAILED, NOT LEVEL D\r
+       TLNN    (7B9)           ;IS IT LEVEL D OR LATER?\r
+       TDZA                    ;NO\r
+       HRROI   -2              ;THIS IS LEVEL D\r
+       MOVEM   LEVEL           ;STORE STATE\r
+       SETZ                    ;CLEAR ACC'S\r
+       MOVEI   17,1            ;WITH A BLT OF ZERO\r
+       BLT     17,17           ;FROM 0-17\r
+       INIT    0,1             ;INITIALIZE TTY, CHANNEL 0\r
+       SIXBIT  /TTY/           ;TTY\r
+       XWD     OBUF, IBUF      ;ADDRESSES FOR BUFFER HEADERS\r
+       HALT    .               ;ILLEGAL INSTRUCTION IF NO TTY\r
+       OUTPUT  0,              ;DUMMY OUTPUT ON TTY\r
+       MOVEI   A, "*"          ;PICK UP A <*>\r
+       IDPB    A, OBUF+1       ;TYPE IT OUT\r
+       OUTPUT  0,              ;EMPTY THE BUFFER\r
+       MOVE    P, XPDLST       ;SET UP A PUSHDOWN POINTER\r
+       HRROI   D,1             ;INITIALIZE DEVICE BUFFER\r
+       MOVEM   D, DEVBUF       ;...\r
+       MOVSI   A, -N           ;GET COUNT OF MSTBUF AND TRNBUF\r
+       HRRI    A, FILBUF+1     ;INITIALIZE POINTER IN FILBUF\r
+       MOVEM   A, FILBUF       ;SET UP COUNT IN FILE BUFFER\r
+       HRRI    A, PRGBUF+1     ;INITIALIZE POINTER IN PRGBUF\r
+       MOVEM   A, PRGBUF       ;...\r
+       HRRI    A,PPNBUF        ;INITIAL POINTER IN PPNBUF\r
+       MOVEM   A,PPNBUF\r
+\fSUBTTL FUDGE2 COMMAND STRING DISPATCHING\r
+;THIS ROUTINE PICKS UP CHARACTERS FROM THE TELETYPE BUFFER AND\r
+;DISPATCHES TO THE PROPER ROUTINE DEPENDING ON THE TYPE OF\r
+;CHARACTER.A TABLE OF BYTES AND BYTE POINTERS ALLOWS EACH\r
+;CHARACTER IN THE ASCII SET TO BE TREATED INDIVIDUALLY. THE\r
+;ROUTINE MAY BE ENTERED AT GETCHR IF IT IS DESIRED TO ACCUMULATE\r
+;A 6-LETTER SIXBIT SYMBOL IN AC S. SYMBOLS OF DIFFERENT LENGTHS\r
+;MAY BE ACCUMULATED IN DIFFERENT REGISTERS BY SETTING THE CONTENTS\r
+;OF AC B TO THE DESIRED LENGTH, AND PUTTING A BYTE POINTER IN E\r
+;AND ENTERING THE ROUTINE AT GETCHR+4.\r
+\r
+GETCHR:        TRZE    F,POPBAK        ;IMMEDIATE RETURN?\r
+       POPJ    P,              ;YES\r
+       MOVEI   B, 6            ;SET COUNT OF SYMBOL TO 6\r
+       MOVE    E, SYMPTR       ;SET UP A BYTE POINTER FOR AC S\r
+       MOVEI   S, 0            ;INITIALIZE SYMBOL ACCUMULATOR\r
+GETCMN:        SOSG    IBUF+2          ;IS TTY BUFFER EMPTY?\r
+       INPUT   0,              ;YES, FILL IT UP\r
+       ILDB    A, IBUF+1       ;GET A CHARACTER\r
+       MOVE    G, A            ;GET A COPY OF IT IN AC G\r
+       MOVE    0, CURCHR       ;SAVE PREVIOUS CHAR\r
+       MOVEM   0, LSTCHR       ;AS LAST CHAR\r
+       MOVEM   A, CURCHR       ;SAVE CURRENT CHAR\r
+       IDIVI   G, 11           ;TRANSLATE TO 4-BIT CODE\r
+       LDB     G, TABLE(H)     ;USE PROPER BYTE POINTER\r
+       CAIGE   G, 4            ;MODIFY CODE IF .GE. 4\r
+       TRNN    F, SWTB         ;MODIFY CODE IF IN SWITCH MODE\r
+       ADDI    G, 4            ;CHANGE DISPATCH BY ADDING 4\r
+       HRRZ    H, DSPTCH(G)    ;GET PROPER DISPATCH ADDRESS\r
+       CAIL    G, 10           ;BUT CHANGE IF NOT CORRECT\r
+       HLRZ    H, DSPTCH-10(G) ;TO A LEFT HALF DISPATCH\r
+       JRST    (H)             ;EXIT TO APPROPRIATE ROUTINE\r
+\r
+\fSUBTTL COMMAND DISPATCH TABLE AND BYTE POINTERS\r
+DSPTCH:        XWD     GETCMN,ERR16    ;IGNORED CHAR, BAD CHAR(SWITCH)\r
+       XWD     SWTCH, SWTCHA   ;<(>, LETTER(SWITCH MODE)\r
+       XWD     COLON, ERR16    ;<:>, NUMBER(SWITCH MODE)\r
+       XWD     PERIOD,SWTCHE   ;<.>, <)>ESCAPE SWITCH MODE\r
+       XWD     LFTARW,ERR17    ;<?>OR<=>, BAD CHAR (NORMAL MODE)\r
+       XWD     COMMA, STORE    ;<,>, ALPHABETIC CHARACTER(NORMAL)\r
+       XWD     ALTMOD,STORE    ;<$>,NUMERIC CHARACTER(NORMAL)\r
+       XWD     SLASH, ERR17    ;</>, <)> ILLEGAL ESCAPE\r
+       XWD     LBRACK, 0       ;LEFT ANGLE BRACKET, OR "["\r
+       XWD     RBRACK, 0       ;RIGHT ANGLE BRACKET\r
+\r
+TABLE: POINT   4, BITE(G), 3\r
+       POINT   4, BITE(G), 7\r
+       POINT   4, BITE(G), 11\r
+       POINT   4, BITE(G), 15\r
+       POINT   4, BITE(G), 19\r
+       POINT   4, BITE(G), 23\r
+       POINT   4, BITE(G), 27\r
+       POINT   4, BITE(G), 31\r
+       POINT   4, BITE(G), 35\r
+\f SUBTTL BYTE TABLE FOR DISPATCHING\r
+;CLASSIFICATION BYTE CODES\r
+;      BYTE    DISP    CLASSIFICATION\r
+\r
+;      00      00      ILLEGAL CHARACTER, SWITCH MODE\r
+;      01      01      ALPHABETIC CHARACTER, SWITCH MODE\r
+;      02      02      NUMERIC CHARACTER, SWITCH MODE\r
+;      03      03      SWITCH MODE ESCAPE, SWITCH MODE\r
+\r
+;      00      04      ILLEGAL CHARACTER, NORMAL MODE\r
+;      01      05      ALPHABETIC CHARACTER, NORMAL MODE\r
+;      02      06      NUMERIC CHARACTER, NORMAL MODE\r
+;      03      07      SWITCH MODE ESCAPE, SWITCH MODE\r
+\r
+;      04      10      IGNORED CHARACTER\r
+;      05      11      ENTER SWITCH MODE WITH A <(>\r
+;      06      12      DEVICE DELIMITER, <:>\r
+;      07      13      FILE EXTENSION DELIMITER, <.>\r
+;                      (CAN ALSO BE PART OF A PROGRAM NAME)\r
+;      10      14      OUTPUT SPECIFICATION, <LFT ARW> OR <=>\r
+;      11      15      FILE DELIMITER, <,>\r
+;      12      16      COMMAND TERMINATOR, <ALT MODE>=33,175,176\r
+;      13      17      ENTER SWITCH MODE WITH A </>\r
+;      14      20      CHANGE CONTEXT OF PERIOD TO PROG NAME, <<> ,OR "["\r
+;      15      21      CHANGE CONTEXT OF PERIOD TO FILE NAME, <>>\r
+\r
+;BYTE TABLE CORRESPONDING TO 128 ASCII CHARS\r
+\r
+BITE:  BYTE    (4)     4,0,0,0,0,0,0,0,0       ;NUL\r
+       BYTE    (4)     4,4,4,4,4,0,0,0,0\r
+       BYTE    (4)     0,0,0,0,0,0,0,0,12      ;?Z=$\r
+       BYTE    (4)     12,0,0,0,0,11,0,4,0     ;$\r
+       BYTE    (4)     0,0,0,0,5,3,1,0,11      ;***DMN\r
+       BYTE    (4)     0,7,13,2,2,2,2,2,2      ;-,.,/,0,1,2,3,4,5\r
+       BYTE    (4)     2,2,2,2,6,0,14,10,15    ;6,7,8,9,:,;,<,=,>\r
+       BYTE    (4)     0,0,1,1,1,1,1,1,1       ; , , ,B,C,D,E,F,G\r
+       BYTE    (4)     1,1,1,1,1,1,1,1,1       ;H,I,J,K,L,M,N,O,P\r
+       BYTE    (4)     1,1,1,1,1,1,1,1,1       ;Q,R,S,T,U,V,W,X,Y\r
+       BYTE    (4)     1,14,0,0,0,10,0,1,1     ;Z,[, ,], ,?, ,A,B\r
+       BYTE    (4)     1,1,1,1,1,1,1,1,1       ;C,D,E,F,G,H,I,J,K\r
+       BYTE    (4)     1,1,1,1,1,1,1,1,1       ;L,M,N,O,P,Q,R,S,T\r
+       BYTE    (4)     1,1,1,1,1,1,0,0,12      ;U,V,W,X,Y,Z, , ,$\r
+       BYTE    (4)     12,4                    ;$,DEL\r
+\r
+\fSUBTTL ROUTINES TO HANDLE 0-9,A-Z,. CHARACTERS\r
+;IN THE COMMAND STRING. IN NORMAL MODE, THE CHARACTER IS\r
+;DEPOSITED TO FORM A SIXBIT SYMBOL. NOTE THAT "." IS LEGAL IN A PROGRAM NAME.\r
+;E.G. <EXP.1,ALLIO.>, IF ENCLOSED IN< >. IN SWITCH MODE, THE PROPER\r
+;INSTRUCTION IS EXECUTED WITH THE AID OF A DISPATCH TABLE.\r
+;THEN, IF SWITCH MODE WAS ENTERED WITH A SLASH, FUDGE2 EXITS\r
+;FROM SWITCH MODE.\r
+\r
+STORE: TRO     F,INFOB         ; INDICATE VALID INFO SEEN\r
+       SOJL    B, GETCMN       ; JUMP IF NO ROOM FOR CHARACTER\r
+       CAIGE   A,141           ;WORRY ABOUT LOWER CASE LETTERS\r
+       SUBI    A, 40           ;CONVERT FROM ASCII TO SIXBIT\r
+       IDPB    A, E            ;STORE CHARACTER ACCORDING TO BYTE\r
+       JRST    GETCMN          ;RETURN FOR NEXT CHARACTER\r
+\r
+SWTCHA:        MOVSI   SW, 072000      ;GET AN MTAPE OPCODE\r
+       CAIL    A,141           ;ACCEPT LOWER CASE SWITCHES\r
+       SUBI    A,40\r
+       XCT     SLIST-101(A)    ;EXECUTE PROPER SWITCH INSTRUCTION\r
+       TRZE    F, SLSHB        ;SWITCH MODE ENTERED WITH A </>?\r
+       TRZ     F, SWTB         ;YES, EXIT FROM SWITCH MODE\r
+       JRST    GETCMN          ;RETURN FOR MORE CHARACTERS\r
+\r
+\r
+;THE FOLLOWING THREE ROUTINES HANDLE THE CONTROL CHARACTERS IN\r
+;THE COMMAND STRING WHICH CAUSE FUDGE2 TO ENTER INTO AND EXIT\r
+;FROM SWITCH MODE. THERE ARE TWO TYPES OF SWITCH MODE, DEPENDING\r
+;ON WHETHER THE IT IS ENTERED WITH A </> OR A <(>.\r
+\r
+SLASH: TRO     F, SLSHB        ;ENTER SWITCH MODE WITH A </>\r
+SWTCH: TROA    F, SWTB         ;ENTER SWITCH MODE WITH A <(>\r
+SWTCHE:        TRZ     F, SWTB         ;EXIT FROM SWITCH MODE WITH A <)>\r
+       JRST    GETCMN          ;RETURN FOR MORE CHARACTERS\r
+\r
+\fSUBTTL LEFT ARROW PROCESSOR\r
+;THE LEFT ARROW PROCESSOR IS ENTERED BY A DISPATCH FROM THE\r
+;COMMAND STRING. IT SIGNALS THE END OF THE DESTINGATION DEVICE\r
+;SPECIFICATION. IF THE SIXBIT SYMBOL ACCUMULATOR S IS NON-\r
+;ZERO, IT ASSUMES THAT THE USER HAS OMITTED THE FILE NAME DE-\r
+;LIMITER, AND CALLS THE FILE NAME ROUTINE. A PROGRAM NAME \r
+;SPECIFICATION IN THE OUTPUT DEVICE IS ILLEGAL.\r
+;FLAG SETTINGS: THE DESTINATION FLAG (DESTB) IS SET TO ONE,\r
+;THE DEVICE FLAG IS SET TO ZERO, AND THE PROGR?M NAME FLAG (PROGB)\r
+;IS SET TO ONE SO THAT THE FIRST DEVICE AFTER THE LEFT ARROW\r
+;WILL NOT RESULT IN A CALL TO PUTDEV.\r
+;IF NO OUTPUT DEVICE IS SEEN DSK IS ASSUMED.\r
+;POPBAK IS SET SO CONTROL RETURNS FRON COLON VIA GETCHR\r
+\r
+NODEV: PUSH    P,S             ;SAVE FILE NAME\r
+       MOVSI   S,(SIXBIT /DSK/);DSK IS DEFAULT DEVICE\r
+       TRO     F,POPBAK        ;RETURN FROM GETCHR\r
+       PUSHJ   P,COLON         ;FAKE A DEVICE SEEN\r
+       POP     P,S             ;RESTORE FILE NAME\r
+       POPJ    P,              ;RETURN\r
+\r
+\r
+LFTARW:        PUSHJ   P, SEMICP       ;DO A LOOKUP IF NECESSARY\r
+       TRZ     F, DEVB         ;SET THE DEVICE FLAG TO ZERO\r
+       TRO     F, PROGB+DESTB  ;SET PROGRAM AND DESTINATION FLAGS\r
+       JRST    GETCHR          ;RETURN FOR NEXT SYMBOL\r
+\r
+\r
+\fSUBTTL        THIS CODE PROCESSES PROJECT-PROGRAMMER NUMBERS\r
+\r
+LSQB:  SETZ    T,              ;START WITH ZERO\r
+       PUSH    P,T             ;AND STORE IT\r
+LSQB1: PUSHJ   P,TTYIN         ;GET NEXT CHAR.\r
+       CAIN    A,"]"           ;MATCHING SQB.?\r
+       JRST    RSQB            ;YES\r
+       CAIN    A,","           ;COMMA?\r
+       JRST    SQBCMA          ;YES,SORT OUT XWD\r
+       CAIL    A,"0"           ;IS IT AN OCTAL NUMBER?\r
+       CAILE   A,"9"           ;...\r
+       JRST    ERRISQ          ;NO,ERROR\r
+       LSH     T,3             ;MAKE SPACE FOR NEXT CHAR.\r
+       ADDI    T,-60(A)        ;ADDI IN NEW DIGIT\r
+\r
+\r
+       JRST    LSQB1           ;BACK FOR MORE\r
+\r
+SQBCMA:        HRLZM   T,(P)           ;STORE LEFT HALF ON STACK\r
+       SETZ    T,              ;START AFRESH\r
+       JRST    LSQB1           ;AND GET RIGHT HALF\r
+\r
+RSQB:  HRRM    T,(P)           ;PUT RIGHT HALF ON STACK\r
+       POP     P,T             ;AND POP XWD OFF\r
+       MOVEM   T,PRJPRG        ;SAVE DEFAULT PROJ-PROG\r
+       JUMPN   S,GETCMN        ;AFTER A FILE NAME IS ONLY TEMP.\r
+       MOVEM   T,DEFPPN        ;PERMANENT DEFAULT PPN\r
+       JRST    GETCMN          ;GET NEXT CHAR.\r
+\r
+TTYIN: SOSG    IBUF+2          ;BUFFER EMPTY\r
+       INPUT   0,              ;YES, FILL IT UP\r
+       ILDB    A,IBUF+1        ;GET A CHARACTER\r
+       POPJ    P,              ;AND RETURN\r
+\r
+ERRISQ:        MOVEI   B,[ASCIZ /?Illegal project-programmer number/]\r
+       JRST    ERROR\r
+\fSUBTTL DISPATCH TABLE FOR SWITCHES\r
+\r
+SLIST: MOVEI   DIS, APPEND     ;A - APPEND INSTRUCTION\r
+       PUSHJ   P, BSWTCH       ;B - BACKSPACE ONE FILE\r
+       MOVEI   DIS, DELCPY     ;C - COPY AND DELETE LOCAL SYMBOLS ***VJC\r
+       MOVEI   DIS, DELETE     ;D - DELETE INSTRUCTION\r
+       MOVEI   DIS, EXTRCT     ;E - EXTRACT INSTRUCTION\r
+       JRST    ERR16           ;F - ERROR\r
+       JRST    ERR16           ;G - ERROR\r
+       JRST    ERR16           ;H - ERROR\r
+       MOVEI   DIS, INSERT     ;I - INSERT INSTRUCTION\r
+       JRST    ERR16           ;J - ERROR\r
+       PUSHJ   P, KSWTCH       ;K - SKIPFILE\r
+       MOVEI   DIS, LIST       ;L - LIST COMMAND\r
+       JRST    ERR16           ;M - ERROR\r
+       JRST    ERR16           ;N - ERROR\r
+       JRST    ERR16           ;O - ERROR\r
+       JRST    ERR16           ;P - ERROR\r
+       JRST    ERR16           ;Q - ERROR\r
+       MOVEI   DIS, REPLCE     ;R - REPLACE INSTRUCTION\r
+       JRST    ERR16           ;S - ERROR\r
+       PUSHJ   P, TSWTCH       ;T - SKIP TO LOGICAL END OF TAPE\r
+       JRST    ERR16           ;U - ERROR\r
+       JRST    ERR16           ;V - ERROR\r
+       PUSHJ   P, WSWTCH       ;W - REWIND MAG TAPE\r
+       MOVEI   DIS,INDEX       ;X - INDEX THIS LIBRARY\r
+       JRST    ERR16           ;Y - ERROR\r
+       PUSHJ   P, ZSWTCH       ;Z - CLEAR DIRECTORY ON DECTAPE\r
+\r
+\r
+;MAGTAPE AND DECTAPE DEVICE SWITCH HANDLERS\r
+;THE FOLLOWING ROUTINES HANDLE THE B,K,T,W, AND Z SWITCHES\r
+;BY ASSEMBLING THE PROPER CALL OR UUO INSTRUCTION. IF A \r
+;DEVICE HAS ALREADY BEEN SEEN, THE CHANNEL NUMBER IS LOADED\r
+;INTO THE COMMAND, AND THE INSTRUCTION IS EXECUTED. OTHER-\r
+;WISE, EXECUTION IS DEFERRED BY SETTING A FLAG AND STORING\r
+;THE PARTIALLY ASSEMBLED INSTRUCTION. THE INSTRUCTION IS\r
+;EXECUTED LATER, AFTER THE DEVICE HAS BEEN SEEN.\r
+\r
+BSWTCH:        ADDI    SW, 1           ;CODE FOR BACKSPACE IS 17\r
+KSWTCH:        ADDI    SW, 6           ;CODE FOR SKIPFILE IS 16\r
+TSWTCH:        ADDI    SW, 7           ;CODE FOR SKIP TO L.E.O.T. IS 10\r
+WSWTCH:        AOJA    SW,.+2          ;CODE FOR REWIND IS 1\r
+ZSWTCH:        MOVE    SW, DTCLR       ;DIFFERENT UUO FOR /Z\r
+       TRO     F, SAVEB        ;TURN ON THE SWITCH BIT\r
+       POPJ    P,              ;EXIT\r
+\fSUBTTL PERIOD PROCESSOR\r
+;THE PERIOD PROCESSOR IS CALLED BY A DISPATCH FROM GETCHR. IT \r
+;PRECEDES A FILE NAME EXTENSION, UNLESS THE CONTEXT BIT CONB IS\r
+;A ONE (CONB=1), IN WHICH CASE, THE PERIOD WAS FOUND INSIDE AN\r
+;ANGLE BRACKET, INDICATING THAT IT IS PART OF A PROGRAM NAME.\r
+;THE EXTENSION NAME IS GOTTEN BY ENTERING THE GETCHR ROUTINE\r
+;WITH THE LENGTH SET TO THREE CHARACTERS, AND A BYTE POINTER\r
+;SET TO STORE THE SYMOL IN ACCUMULATOR EXT. THE EXTENSION\r
+;FLAG IS SET BY THIS ROUTINE.\r
+\r
+PERIOD:        TRNE    F, CONB         ;IS PERIOD PART OF A PROGRAM NAME?\r
+       JRST    STORE           ;YES, STORE IT IN SYMBOL\r
+       TRO     F, EXTB         ;NO, SET EXTENSION FLAG\r
+       MOVE    E, EXTPTR       ;GET ANOTHER BYTE POINTER\r
+       MOVEI   B, 3            ;ASSEMBLE A 3-CHARACTER WORD\r
+       JRST    GETCMN          ;BUT DONT DESTROY S\r
+\r
+\fSUBTTL ROUTINES TO PROCESS ANGLE BRACKETS\r
+;THE FOLLOWING ROUTINES PROCESS THE LEFT ANGLE BRACKET "<"\r
+;AND RIGHT ANGLE BRACKET ">" CHARACTERS. THEY ARE ENTERED BY\r
+;A DISPATCH FROM THE GETCHR ROUTINE. THE ANGLE BRACKETS\r
+;CAN ACT AS FILE NAME OR PROGRAM NAME DELIMITERS, SO A CHECK\r
+;IS MADE TO SEE IF THE SYMBOL ACCUMULATOR IS NON-ZERO. THE\r
+;MAIN FUNCTION OF THE ROUTINES IS TO SET OR CLEAR THE CONTEXT\r
+;BIT CONB, WHOSE INTERPRETATION IS AS FOLLOWS:\r
+;SETTING OF BIT        MEANING\r
+;      0               COMMAS DELIMIT FILE NAMES, AND PERIODS\r
+;                      DELIMIT FILE NAME EXTENSIONS\r
+;      1               COMMAS DELIMIT PROGRAM NAMES, AND PERIODS\r
+;                      ARE PART OF A PROGRAM NAME\r
+\r
+LBRACK:        TRNN    F, DESTB        ;IS THIS THE OUTPUT DEVICE?\r
+       JRST    ERROR1          ;YES, SYNTAX ERROR\r
+       CAIN    A,"["           ;PROJECT-PROGRAMMER PAIR?\r
+       JRST    LSQB            ;YES, HANDLE IT\r
+       MOVE    0,SDEVCHR       ;GET SAVED DEV CHRSTCS\r
+       TLNN    0,DTABIT+DSKBIT ;LAST DEVICE DSK OR DTA?\r
+       JRST    LBRACA          ;NO\r
+       MOVE    0,LSTCHR        ;GET LAST CHAR\r
+       CAIN    0,72            ;WAS IT COLON?\r
+       JRST    ERROR1          ;YES,:< ILLEGAL\r
+LBRACA:                                ;NO CONTINUE\r
+       PUSHJ   P, SEMICP       ;PROCESS THE FILE NAME\r
+       TRO     F, CONB         ;SET CONTEXT TO PROGRAM NAMES\r
+       AOS     MATCH           ;ADD ONE FOR EACH LEFT < ***VJC\r
+       JRST    GETCHR          ;RETURN FOR MORE CHARACTERS\r
+\r
+RBRACK:        JUMPE   S,.+2           ;IS THERE A SYMBOL TO HANDLE?\r
+       PUSHJ   P,COMMAP        ;YES,PROCESS THE FILE NAME\r
+       TRZ     F,CONB          ;SET CONTEXT TO FILE NAMES\r
+       SOS     MATCH           ;SUBTRACT ONE FOR EACH RIGHT > ***VJC\r
+       JRST    GETCHR          ;RETURN FOR MORE CHARACTERS\r
+\r
+\fSUBTTL COMMA PROCESSOR\r
+;THE COMMA ROUTINE IS ENTERED BY A DISPATCH FROM GETCHR.\r
+;IT DETERMINES WHETHER THE COMMA DELIMITS A FILE NAME OR A\r
+;PROGRAM NAME, AND TRANSFERS CONTROL EITHER TO SEMICP OR TO\r
+;COMMAP.\r
+\r
+COMMA: TRNN    F, CONB         ;FILE NAME OR PRGRAM NAME?\r
+       JRST    COMMAX          ;FILE NAME\r
+       PUSHJ   P, COMMAP       ;PROGRAM NAME\r
+       JRST    GETCHR          ;RETURN FOR MORE CHARACTERS\r
+\r
+COMMAX:        PUSHJ   P, SEMICP       ;FILE NAME, DO A LOOKUP\r
+       SETZM   PRJPRG          ;CLEAR TEMP. PPN\r
+       JRST    GETCHR          ;RETURN FOR MORE CHARACTERS\r
+\r
+\fSUBTTL COLON PROCESSOR\r
+;THIS ROUTINE IS ENTERED BY A DISPATCH FROM THE GETCHR\r
+;ITS PURPOSE IS TO INITIALIZE DEVICES USED BY FUDGE2 AND\r
+;ASSIGN THEM A CHANNEL NUMBER. IF THE DEVICE IS THE TTY, THE\r
+;ROUTINE EXITS IMMEDIATELY, SINCE THE TTY HAS ALREADY BEEN\r
+;INITIALIZED. IF A PROGRAM WAS NOT SEEN IN THE PREVIOUS DEVICE\r
+;SPECIFICATION, THEN THE PRECEDING FILE HAD NO PROGRAMS\r
+;FOLLOWING IT, AND A ZERO IS PLACED IN THE LIST STRUCTURE IN\r
+;THE 3-WORD FILE BLOCK, SO THAT THE GETDEV ROUTINE WILL\r
+;KNOW THAT THE ENTIRE FILE IS DESIRED. IF THE COLON ROUTINE\r
+;IS CALLED WITH 0 IN ACCUMULATOR S, THE ROUTINE ASSUMES\r
+;THAT SOMETHING LIKE "DTA3:FOO?DTA4:BAR<X,Y,Z>,MTA0:::/R"\r
+;WAS TYPED, AND IT PUTS A PHONY FILE NAME IN FILBUF TO KEEP\r
+;THE BOOK-KEEPING STRAIGHT.\r
+\r
+COLON: TRO     F, DEVB         ;DEVICE WAS SEEN IN THIS SPEC.\r
+       TRNE    F,POPBAK        ;DEFAULT "DSK" BEING SET\r
+       JRST    .+3             ;SO DON'T CLEAR PROJ-PROG\r
+       SETZM   DEFPPN          ;CLEAR PERMANENT PPN\r
+       SETZM   PRJPRG          ;AND TEMP. ALSO\r
+       JUMPE   S, COLONC       ;NULL S IMPLIES FILES ON MTA,PTR\r
+       MOVEM   S, COLON2       ;SAVE DEVICE FOR INIT\r
+       MOVE    G, S            ;GET A COPY OF THE DEVICE NAME\r
+       DEVCHR  G,              ;GET ITS CHARACTERISTICS\r
+       MOVEM   G,SDEVCHR       ;SAVE DEV CHRSTCS ***VJC\r
+       TLNE    G,TTYBIT!LPTBIT ;IF EITHER TTY OR LPT\r
+       SETZM   LEVEL           ;DON'T DO EXTENDED LOOKUPS EVER\r
+       TLNE    G, TTYBIT       ;IS THE DEVICE A TTY?\r
+       JRST    GETCHR          ;YES, RETURN IMMEDIATELY\r
+       TRNN    F, DESTB        ;IS THIS THE OUTPUT DEVICE?\r
+       JRST    COLON4          ;YES, GO CHECK SEPARATE THINGS\r
+       MOVE    D, DEVBUF       ;GET POINTER TO DEVICE NAME TABLE\r
+COLON6:        AOBJP   D, COLON7       ;MORE DEVICES TO CHECK?\r
+       CAMN    S, DEVBUF(D)    ;HAS DEVICE ALREADY BEEN INITTED?\r
+       JRST    GETCHR          ;YES, DON'T RE-INIT IT\r
+       JRST    COLON6          ;CHECK SOME MORE\r
+\f\r
+COLON7:        MOVEM   S, DEVBUF(D)    ;STORE THE NEW DEVICE NAME\r
+       MOVSI   A, -1           ;FIX UP THE COUNT IN THE BUFFER\r
+       ADDM    A, DEVBUF       ;...\r
+       TLNN    G, INBIT        ;CAN DEVICE DO INPUT?\r
+       JRST    ERROR4          ;NO, ERROR\r
+       MOVEI   S, 0            ;CLEAR OUT THE SYMBOL WORD\r
+       TRON    F, PROGB        ;WAS A PROGRAM NAME SEEN?\r
+       PUSHJ   P, STNULL       ;NO, STORE A NULL IN FILE BLOCK\r
+       MOVE    A, D            ;CALCULATE BUFFER HEADER POSITION\r
+       IMULI   A, 3            ;3 WORDS PER BUFFER HEADER\r
+       ADDI    A, IBUF         ;ALL BUFFER HEADERS IN IBUF BLOCK\r
+COLON8:        AOS     NUMDEV          ;ONE MORE DEVICE SEEN\r
+       MOVEM   A, COLON3       ;SAVE WORD FOR INIT\r
+       MOVEI   A, 14           ;SET MODE TO BINARY\r
+       TLNE    G,LPTBIT        ;IS DEVICE THE LPT?\r
+       MOVEI   A, 0            ;YES, RESTORE MODE TO ASCII\r
+       HRRM    A, COLON0       ;SAVE MODE FOR INIT\r
+       DPB     D, [POINT 4,COLON1,12]\r
+       XCT     COLON1          ;DO OPEN ON DEVICE\r
+       JRST    ERROR9          ;DEVICE NOT AVAILABLE\r
+       TRNN    F, DESTB        ;IS THIS THE OUTPUT DEVICE?\r
+       JRST    GETCHR          ;YES, NO MORE CHECKING - EXIT\r
+       TLNN    G, DRCTRB       ;DOES DEVICE HAVE A DIRECTORY?\r
+COLONC:        PUSHJ   P, COLONB       ;NO, GIVE IT A PHONY FILE NAME\r
+       JRST    GETCHR          ;RETURN FOR MORE CHARACTERS\r
+\r
+;OUTPUT DEVICE ONLY\r
+\r
+COLON4:        MOVEM   S, DEVBUF+1     ;SAVE THE DEVICE NAME\r
+       MOVEI   D, 1            ;SET DEVICE NUMBER TO 1\r
+       TLNN    G, OUTBIT       ;CAN DEVICE DO OUTPUT?\r
+       JRST    ERROR4          ;NO, ERROR\r
+       TLNE    G,DTABIT        ;IS DEVICE DTA?\r
+       TRO     F,DTAFLG        ;YES, SET IN CASE INDEXING\r
+       MOVSI   A, OBUF+3       ;CALCULATE BUFFER HEADER ADDRESS\r
+       TRO     F, TTYCB        ;INDICATE NON-TTY IO\r
+       JRST    COLON8          ;ENTER MAIN PROCESSING LOOP\r
+\r
+COLONB:        MOVEI   S, 465757       ;FILE NAME OF "FOO"\r
+                               ;FALLS THROUGH TO SEMICP ROUTINE\r
+\fSUBTTL FILE NAME PROCESSOR\r
+;THIS ROUTINE IS CALLED BY THE COMMA ROUTINE WHEN IT HAS\r
+;BEEN DETERMINED THAT THE CONTEXT OF THE COMMA IS THAT OF A\r
+;FILE NAME. NULL FILES ARE IGNORED BY THE ROUTINE, AND CAUSE\r
+;AN IMMEDIATE RETURN TO GETCHR. FOR OUTPUT DEVICES, AN ENTER\r
+;IS PERFORMED, WHILE FOR INPUT DEVICES, THE FLOW OF CONTROL IS\r
+;AS FOLLOWS:\r
+;      1. IF THE PREVIOUS FILE HAD NO PROGRAMS, A ZERO IS\r
+;         STORED IN THE 3RD WORD OF THE FILE BLOCK OF THAT\r
+;         FILE - THE WORD THAT ORDINARILY POINTS TO THE \r
+;         PROGRAM SUBLIST.\r
+;      2. THE PROGRAM LIST FOR THE PREVIOUS FILE IS TERMINATED\r
+;         BY PUTTING A ZERO IN THE PROGRAM BUFFER, AND PUTTING\r
+;         A POINTER TO THE ZERO IN THE 3RD WORD OF THIS FILE\r
+;         BLOCK (NOT THE PREVIOUS BLOCK)\r
+;      3. THE FILE NAME AND FILE NAME EXTENSION AND THE DEVICE\r
+;         CHANNEL NUMBER OF THE CURRENT FILE ARE STORED.\r
+\r
+SEMICP:        TRNN    F,DEVB          ;HAS A DEVICE BEEN SEEN?\r
+       PUSHJ   P,NODEV         ;NO, SO ASSUME "DSK"\r
+       CAME    SW,DTCLR        ;Z SWITCH? YES, OPERATE ON OUTPUT ONLY\r
+       DPB     D, [POINT 4,SW,12]\r
+       TRZE    F, SAVEB        ;IS THERE A SWITCH TO PROCESS?\r
+       XCT     SW              ;YES, EXECUTE IT\r
+       JUMPE   S, SEMIC3       ;IGNORE NULL FILES\r
+\r
+SEMICA:        TRZN    F, EXTB         ;EXPLICIT EXTENSION SEEN?\r
+       HRLI    EXT, 624554     ;NO, REPLACE WITH REL"\r
+       TRNN    F, DESTB        ;OUTPUT DEVICE?\r
+       JRST    SEMIC2          ;YES, PROCESS SEPARATELY\r
+       PUSH    P, S            ;SAVE FILE NAME\r
+       MOVEI   S, 0            ;PUT IN A ZERO\r
+       TRZN    F, PROGB        ;WAS A PROGRAM SEEN IN PREVIOUS?\r
+       PUSHJ   P, STNULL       ;NO, CLOSE OUT PREVIOUS FILE\r
+       PUSHJ   P, PUTPRG       ;YES, CLOSE OUT PREVIOUS PRGLST\r
+SEMIC4:        POP     P, S            ;RESTORE FILE NAME\r
+       CAMN    S,[12B5]        ;IS IT * ?***DMN\r
+       JRST    ASTRSK          ;YES ***DMN\r
+       PUSHJ   P, PUTFIL       ;NO, STORE FILENAME\r
+       MOVE    S,DEFPPN        ;GET GLOBAL PPN\r
+       PUSHJ   P,PUTPPN        ;SAVE IT\r
+       MOVE    S, EXT          ;GET FILE NAME EXTENSION\r
+       PUSHJ   P, PUTFIL       ;STORE IT\r
+       HRRM    D, (A)          ;STORE CHANNEL NUMBER, ALSO\r
+       MOVE    S,PRJPRG        ;GET TEMP. PPN\r
+       PUSHJ   P,PUTPPN        ;SAVE IT ALSO\r
+       HRRZ    S, PRGBUF       ;GET A POINTER TO PROGRAM LIST\r
+       JRST    PUTFIL          ;STORE IT AND EXIT\r
+\r
+STNULL:        HRRZ    A, FILBUF       ;GET ADDRESS OF CURRENT BLOCK\r
+       SETZM   (A)             ;CLOSE OUT THE FILE\r
+       POPJ    P,              ;EXIT\r
+\r
+\fSUBTTL ENTER ON OUTPUT DEVICE DIRECTORY\r
+\r
+SEMIC2:        MOVEM   S, EBLOCK       ;SAVE FILE NAME FOR ENTER\r
+       MOVEM   EXT, EBLOCK+1   ;SAVE FILE NAME EXTENSION\r
+       DPB     D, [POINT 4,SEMIC1,12]\r
+       SETZM   EBLOCK+2        ;CLEAR DATA AND PROTECTION\r
+       MOVE    T,SDEVCHR       ;GET CHARACTERISTICS\r
+       TLNN    T,DSKBIT        ;IF NOT A DSK\r
+       SETZM   LEVEL           ;CLEAR LEVEL D FLAG\r
+       SKIPE   T,LEVEL         ;EITHER -2 OR 0\r
+       JRST    DEFENT          ;SAVE ENTRY BLOCK\r
+       XCT     SEMIC1          ;DO AN ENTER ON THE OUTPUT DEVICE\r
+       JRST    ERR14           ;DIRECTORY FULL\r
+SEMIC3:        POPJ    P,              ;EXIT\r
+\r
+DEFENT:        MOVE    T,[XWD EBLOCK,SVENTR]\r
+       BLT     T,SVENTR+1      ;SAVE EBLOCK\r
+       MOVEI   T,RIBALC        ;SET FOR 11 WORD LOOKUP\r
+       MOVEM   T,EBLOCK-2      ;IN EXTENDED LOOKUP\r
+       JRST    SEMIC3          ;DEFER ENTRY TIL AFTER LOOKUP\r
+\fSUBTTL THE PROGRAM NAME PROCESSOR\r
+;THE COMMAP ROUTINE IS ENTERED BY A CALL FROM THE COMMA\r
+;ROUTINE WHEN THE CONTEXT OF A COMMA IS THAT OF A PROGRAM NAME\r
+;DELIMITER. ITS PURPOSE IS TO SAVE UP THE PROGRAM NAMES IT SEES\r
+;IN THE PROGRAM BUFFER PRGBUF. THE PROGRAM NAMES ARE CONVERTED\r
+;TO RADIX 50 REPRESENTATION, AND A CALL TO PUTPRG STORES THE\r
+;PROGRAM NAME FOR LATER REFERENCE BY THE VARIOUS FUDGE SUBROUTINES\r
+;------------------------------------------------------------------\r
+;RADIX50 - SIXBIT CODE CONVERSION TABLE\r
+\r
+;CHARACTER     SIXBIT          RADIX50\r
+\r
+;0-9           20-31           01-12\r
+;A-Z           41-72           13-44\r
+;BLANK         00              00\r
+;PERIOD                16              45\r
+;$             04              46\r
+;-------------------------------------------------------------------\r
+;THE SYMBOL IS ASSUMED TO LEFT-JUSTIFIED UPON ENTERING, AND\r
+;IS RIGHT-JUSTIFIED BEFORE CONVERSION TO RADIX 50.\r
+\r
+;FLAG SETTINGS: THE PROGRAM BIT PROGB IS SET TO 1, AND THE FILE\r
+;BIT FILEB IS SET TO 0.\r
+COMMAP:        TRO     F, PROGB        ;SET PROGRAM BIT\r
+       TRNN    F, DESTB        ;IS THIS THE OUTPUT DEVICE?\r
+       JRST    ERROR1          ;YES, SYNTAX ERROR\r
+       MOVE    E, SYMPTR       ;SET UP A BYTE POINTER TO S\r
+       MOVEI   B, 6            ;SET COUNTER TO SIX\r
+       MOVEI   C, 0\r
+       JUMPE   S, COMMA1       ;NULL SYMBOL?\r
+COMMA3:        TRNE    S, 77           ;IS SYMBOL RIGHT-JUSTIFIED YET?\r
+       JRST    COMMA1          ;YES, GO CONVERT TO RADIX 50\r
+       ROT     S, -6           ;NO, SHIFT IT ONE PLACE RIGHT\r
+       JRST    COMMA3          ;CHECK AGAIN\r
+COMMA1:        IMULI   C, 50           ;CONVERT TO RADIX50\r
+       ILDB    A, E            ;PICK UP NEXT CHARACTER IN S\r
+       JUMPE   A, COMMA4       ;A BLANK IS A BLANK IS A BLANK!\r
+       CAIN    A, 4            ;IS IT A <$>?\r
+       ADDI    A, 70           ;YES, COMPENSATE FOR SUBTRACTION\r
+       CAIN    A, 16           ;IS IT A <.>?\r
+       ADDI    A, 55           ;YES, COMPENSATE FOR SUBTRACTION\r
+       CAILE   A, 31           ;TRANSLATE TO RADIX 50 CODE\r
+       SUBI    A, 7            ;LETTER - SUBTRACT 26\r
+       SUBI    A, 17           ;NUMBER - SUBTRACT 17\r
+       ADD     C, A            ;COMBINE WITH PARTIAL WORD\r
+COMMA4:        SOJG    B, COMMA1       ;LOOP FOR SIX CHARACTERS\r
+       MOVE    S, C            ;PUT SYMBOL BACK IN S\r
+       JRST    PUTPRG          ;STORE IT AND EXIT\r
+\r
+\fSUBTTL THE ALTMODE PROCESSOR\r
+;THE ALTMODE SUBROUTINE IS CALLED BY A DISPATCH FROM THE\r
+;GETCHR ROUTINE WHEN A $ IS SEEN IN THE COMMAND STRING. IT SIGNALS\r
+;THE END OF THE COMMAND STRING. A CHECK IS MADE ON THE SYNTAX\r
+;OF THE COMMAND STRING, TO SEE IF AN OUTPUT DEVICE WAS SPEC-\r
+;IFIED, AND TO SEE IF A COMMAND WAS GIVEN. THE LIST\r
+;STRUCTURE FOR THE FILE NAMES AND PROGRAM NAMES IS TERMINATED\r
+;BY TWO CALLS TO SEMICP, THE LAST OF WHICH HAS A FILE NAME OF 0.\r
+;THE POINTERS AT THE TOP OF THE FILBUF,PRGBUF AND DEVBUF BUFFERS\r
+;ARE RESET FOR LATER USER BY THE VARIOUS SUBROUTINES.\r
+\r
+ALTMOD:        TRNN    F,INFOB         ; IS THERE A COMMAND?\r
+       JRST    FUDGE2          ; NO, RESTART\r
+       PUSHJ   P,CRLF          ; ACKNOWLEDGE WITH A CR LF\r
+       TRO     F,CRLFTY        ;INDICATE CR,LF TYPED\r
+       PUSHJ   P, SEMICP       ;STORE THIS FILE NAME\r
+       MOVEI   S, 0            ;MAKE A NULL FILE NAME\r
+       PUSHJ   P, SEMICA       ;TERMINATE THE LIST STRUCTURE\r
+       MOVE    A, FILXWD       ;SET UP A BLT POINTER TO FIX\r
+       BLT     A, FILBUF+3     ;THE MASTER FILE PART,1ST WORD OF\r
+       SETZM   FILBUF+4        ;FILBUF WAS JUNK,NOW 4TH WORD=0\r
+       MOVEI   A, FILBUF+5     ;RESET POINTER TO TRANS. FILES\r
+       MOVEM   A, FILBUF       ;...\r
+       MOVEI   A,PPNBUF+1      ;RESET PPNBUF\r
+       MOVEM   A,PPNBUF        ;AS IT WAS AT START\r
+       JUMPE   DIS, ERROR1     ;NO COMMAND SEEN?\r
+       TRNN    F, DESTB        ;NO OUTPUT FILE MENTIONED?\r
+       JRST    ERROR1          ;SYNTAX ERROR\r
+       SKIPE   MATCH           ;LEFT < EQU RIGHT > ?***VJC\r
+       JRST    ERROR1          ;SYNTAX ERROR ***VJC\r
+       TRNE    F, TTYCB        ;CHANGE OUTPUT IF ON TTY\r
+       TRO     F, TTYOB        ;...\r
+                               ;AND FALL INTO INBUF0\r
+\r
+\f\r
+;SEE HOW MANY 204(8) WORD BLOCKS FIT IN JOBREL-JOBFF.\r
+;DIVIDE THIS NUMBER BY THE NUMBER OF DEVICES\r
+;IN DEVBUF TABLE. THIS GIVES THE NO. OF BLOCKS\r
+;THAT CAN BE ASSIGNED TO EACH DEVICE, IF ZERO,\r
+;NEED MORE CORE. THE REMAINDER OF THE DIVISION\r
+;INDICATES EXTRA BLOCKS THAT MAY BE\r
+;ALLOCATED TO OUTPUT OR INPUT DEVICES\r
+\r
+INBUF0:        HRRZ    A, JOBREL       ;GET TOP OF JOB AREA\r
+       SUB     A,JOBFF         ;BUFFER AREA AVAILABLE\r
+       IDIVI   A, 204          ;NUMBER OF DECTAPE BLOCKS\r
+       IDIV    A,NUMDEV        ;DIVIDED BY NUMBER OF DEVICES\r
+       JUMPE   A,INBUFG        ;NOT ENOUGH CORE\r
+       MOVEI   E,2             ;START INBUFS ON DEVICE #2\r
+       TRNE    F, TTYCB        ;IS OUTPUT ON TTY?\r
+       JRST    INBUF1          ;NO, DO AN OUTBUF\r
+INBUF2:        MOVE    C, A            ;PICK UP NUMBER OF BLOCKS\r
+       SOJL    A+1,.+2         ;ANY EXTRA BLOCKS? (REMAINDER)\r
+       AOJ     C,              ;YES, USE THEM\r
+       DPB     E, [POINT 4, INBUF3,12]\r
+       XCT     INBUF3          ;PERFORM THE INBUF\r
+       CAMGE   E, D            ;MORE DEVICES TO TAKE CARE OF?\r
+       AOJA    E, INBUF2       ;YES, PROCESS THEM\r
+       JRST    (DIS)           ;NO, GO TO APPROPRIATE SUBROUTINE\r
+\r
+\r
+INBUF1:        MOVE    C, A            ;PICK UP NUMBER OF BLOCKS\r
+       SOJL    A+1,.+2         ;ANY EXTRA BLOCKS?\r
+       AOJ     C,              ;YES, GIVE ONE TO OUTPUT\r
+INBUF4:        OUTBUF  1,(C)           ;OUTBUF ON DEVICE #1\r
+       JRST    INBUF2          ;GO DO SOME INBUFS\r
+;ASK FOR MORE CORE\r
+\r
+INBUFG:        HRRZ    A,JOBREL        ;GET ANOTHER K OF CORE\r
+       ADDI    A,2000\r
+       CORE    A,\r
+       JRST    ERR22           ;NOT AVAILABLE\r
+       JRST    INBUF0          ;TRY TO SET UP BUFFERS\r
+\fSUBTTL        FUDGE2 COMMAND PROCESSORS\r
+\r
+;LIST PROCESSOR\r
+;THIS ROUTINE PROCESSES THE L COMMAND IN FUDGE2. BINARY\r
+;PROGRAMS ARE READ, AND THEIR NAMES OUTPUT, UNTIL AN END\r
+;OF FILE IS REACHED.\r
+\r
+LIST:  TRNN    F,TTYOB         ;OUTPUT TO TTY?\r
+       JRST    LIST1           ;MODE MUST BE ASCII\r
+       GETSTS  1,T             ;GET STATUS\r
+       TRZN    T,14            ;BINARY MODE SET?\r
+       JRST    LIST1           ;NO, MUST BE ASCII\r
+       SETSTS  1,(T)           ;CHANGE MODE TO ASCII\r
+       MOVSI   T,700           ;SET UP NEW BYTE POINTER\r
+       MOVEM   T,OBUF+4        ;SO WORD COUNT WILL BE CORRECT\r
+LIST1: PUSHJ   P, MSTGET       ;GET THE MASTER DEVICE\r
+       JRST    ERROR6          ;NOT ENOUGH ARGUMENTS\r
+       SETOM   NOWARN          ;DON'T GIVE WARNING MESSAGE IF INDEX SEEN\r
+LIST2: PUSHJ   P, READ         ;READ A PROGRAM NAME\r
+       JRST    EXIT            ;ALL DONE\r
+       MOVE    B, A            ;GET THE PROGRAM NAME IN B\r
+       PUSHJ   P, PTYPO        ;TYPE IT OUT\r
+       PUSHJ   P, CRLF         ;TYPE A CRLF\r
+       JRST    LIST2           ;RETURN FOR MORE PROGRAM NAMES\r
+\r
+\r
+;REPLACE PROCESSOR\r
+;THIS ROUTINE PROCESSES THE R COMMAND IN FUDGE2. THE TOTAL\r
+;COMMAND STRING IS BROKEN INTO A LIST OF PROGRAMS FOR THE MASTER\r
+;DEVICE, AND A LIST OF PROGRAMS FOR THE TRANSACTION DEVICES.\r
+;THE ROUTINE READS THE MASTER FILE UNTIL ONE OF THE DESIRED\r
+;REPLACEMENT PROGRAMS IS REACHED, THEN SWITCHES TO THE \r
+;TRANSACTION DEVICE TO FIND THE PROGRAM WHICH IS TO REPLACE THE\r
+;PROGRAM IN THE MASTER FILE. AFTER THE REPLACEMENT HAS BEEN\r
+;EFFECTED, RESET IS CALLED TO RESTORE THE MASTER DEVICE TO ITS\r
+;OLD POSITION.\r
+\r
+REPLCE:        PUSHJ   P, MSTGET       ;GET A PROGRAM FROM MASTER DEVICE\r
+       JRST    IPROC7          ;NO MORE, COPY REST OF MASTER\r
+       PUSHJ   P, COPYTO       ;COPY UP TO THE PROGRAM NAME\r
+       PUSHJ   P, TRNGET       ;GET A PROGRAM FROM TRANSACTION\r
+       JRST    ERROR5          ;USER DID NOT SUPPLY ENOUGH\r
+       PUSHJ   P, FINDCP       ;FIND THE PROGRAM AND COPY IT\r
+       CAIN    D, 2            ;HAS THE MASTER DEVICE BEEN MOVED?\r
+       PUSHJ   P, RESET        ;YES, RESET IT\r
+       JRST    REPLCE          ;LOOK FOR MORE REPLACEMENTS\r
+\fSUBTTL INSERT PROCESSOR\r
+;THIS SUBROUTINE PROCESSES THE I COMMAND IN FUDGE. IT READS AND\r
+;WRITES PROGRAMS FROM THE MASTER FILE UNTIL IT FINDS THE\r
+;PROGRAM NAME CURRENTLY POINTED TO, AT WHICH TIME IT STARTS READING\r
+;FROM THE TRANSACTION DEVICE, MAKING AN INSERTION AT THE\r
+;PROPER PLACE.\r
+\r
+INSERT:        PUSHJ   P, MSTGET       ;GET A PROGRAM FROM MASTER FILE\r
+       JRST    IPROC7          ;NO MORE, COPY REST OF MASTER\r
+       PUSHJ   P, COPYTO       ;COPY UP TO A PROGRAM NAME\r
+       MOVEM   C, SAVEAC       ;SAVE SPECIAL ACCUMULATOR\r
+       MOVE    D, [XWD ENTBLK,SVEBLK]\r
+       BLT     D, X+1(C)       ;MOVE ENTRY BLOCK INTO SAFE PLACE\r
+       PUSHJ   P, TRNGET       ;GET NEXT TRANSACTION FILE\r
+       JRST    ERROR5          ;NOT ENOUGH TRANSACTION FILES\r
+       PUSHJ   P, FINDCP       ;FIND TRANSACTION FILE AND COPY\r
+       CAIE    D, 2            ;HAS MASTER FILE BEEN JIGGLED?\r
+       JRST    FIXUP           ;NO, RESTORE THE ENTRY BLOCK\r
+       PUSHJ   P, RESET        ;YES, RESET IT\r
+       JRST    INSER1          ;WRITE OUTGO BACK FOR MORE INSERTIONS\r
+\r
+FIXUP: MOVE    C, SAVEAC       ;RESTORE SPECIAL AC\r
+       MOVS    D, [XWD ENTBLK,SVEBLK]\r
+       BLT     D, (C)          ;RESTORE ENTRY BLOCK\r
+       MOVEI   D, 2            ;SET UP CHANNEL AC\r
+       MOVEI   DIS, 6          ;SET UP BUFFER HEADER INDEX\r
+INSER1:        PUSHJ   P, WRITE        ;WRITE OUT THE CURRENT FILE\r
+       JRST    INSERT          ;GO BACK FOR MORE INSERTIONS\r
+\r
+IPROC7:        PUSHJ   P, COPY         ;COPY REST OF MASTER FILE\r
+       JRST    EXIT            ;EXIT\r
+\f SUBTTL EXTRACT PROCESSOR\r
+;THIS ROUTINE PROCESSES THE E COMMAND IN FUDGE. RATHER THAN\r
+;ONE MASTER AND SEVERAL TRANSACTION FILES, ALL FILES ARE\r
+;TREATED THE SAME. AFTER A CALL TO EITHER MSTGET OR TRNGET\r
+;PROGRAMS ARE SEARCHED FOR AND WRITTEN ON THE OUTPUT DEVICE.\r
+\r
+EXTRCT:        SETOM   NOWARN          ;NO WARNING MESSAGE\r
+       PUSHJ   P, MSTGET       ;GET A PROGRAM FROM MASTER DEVICE\r
+       JRST    EPROC1          ;ALL DONE WITH MASTER DEVICE\r
+       JUMPN   R,.+3           ;ANY PROGRAMS THIS FILE? **VJC\r
+       PUSHJ   P,COPY          ;NO, COPY ENTIRE FILE ***VJC\r
+       JRST    EPROC1          ; ***VJC\r
+       PUSHJ   P, FINDCP       ;FIND THE PROGRAM AND COPY IT\r
+       JRST    EXTRCT          ;RETURN FOR MORE MASTER PROGRAMS\r
+EPROC1:        MOVEI   A, FILBUF+5     ;GET PROGRAM FROM TRANS BUFFER\r
+       MOVEM   A, FILBUF       ;INITIALIZE POINTER FIRST\r
+EPROC2:        PUSHJ   P, GETDEV       ;...\r
+       JRST    EXIT            ;ALL DONE\r
+       JUMPN   R,.+3           ;ANY PROGRAMS THIS FILE?  ***VJC\r
+       PUSHJ   P,COPY          ;NO, COPY ENTIRE FILE ***VJC\r
+       JRST    EPROC2          ; ***VJC\r
+       PUSHJ   P, FINDCP       ;FIND THE PROGRAM AND COPY IT\r
+       JRST    EPROC2          ;RETURN FOR MORE TRANS FILES\r
+\fSUBTTL DELETE PROCESSOR\r
+;THIS ROUTINE PROCESSES THE D COMMAND IN FUDGE2.  ONLY ONE\r
+;INPUT FILE WILL BE READ, AND THE PROGRAM NAMES ASSOCIATED\r
+;WITH ITS LIST WILL BE DELETED.\r
+\r
+DELETE:        PUSHJ   P, MSTGET       ;GET A PROGRAM TO BE DELETED\r
+       JRST    IPROC7          ;FINISH OFF THE MASTER FILE\r
+DPROC1:        PUSHJ   P, READ         ;READ A PROGRAM\r
+       JRST    ERROR7          ;EOF - CANT FIND IT\r
+       CAMN    R, A            ;CORRECT PROGRAM?\r
+       JRST    DELETE          ;YES, GET THE NEXT ONE\r
+       PUSHJ   P, WRITE        ;NO, WRITE THIS ONE OUT\r
+       JRST    DPROC1          ;TRY AGAIN\r
+\r
+;APPEND PROCESSOR\r
+;THIS ROUTINE HANDLES THE A COMMAND IN FUDGE2. IT WILL COPY\r
+;THE ENTIRE MASTER FILE, THEN START OBTAINING TRANSACTION\r
+;DEVICES WITH CALLS TO TRNGET, APPENDING ONE OR MORE\r
+;PROGRAMS FROM EACH FILE.\r
+\r
+APPEND:        PUSHJ   P, MSTGET       ;GET A PROGRAM FROM MASTER FILE\r
+       JRST    ERROR6          ;NOT ENOUGH ARGUMENTS\r
+       PUSHJ   P, COPY         ;COPY ENTIRE FILE\r
+       MOVEI   A, FILBUF+5     ;INITIALIZE POINTER FOR TRANS\r
+       MOVEM   A, FILBUF       ;...\r
+APROC3:        PUSHJ   P, GETDEV       ;GET A PROGRAM NAME\r
+       JRST    EXIT            ;ALL DONE\r
+       PUSHJ   P, FINDCP       ;FIND THE PROGRAM AND COPY IT\r
+       JRST    APROC3          ;GET NEXT APPENDATION\r
+\f\r
+;THIS ROUTINE PROCESSES THE X COMMAND (INDEX LIBRARY)\r
+;AND FALLS INTO DELETE LOCAL SYMBOLS CODE.\r
+;IF NOT DESIRED SKIP TO DELCPY+1\r
+\r
+INDEX: MOVE    A,DEVBUF+1      ;GET OUTPUT DEVICE\r
+       DEVCHR  A,              ;GET ITS CHARACTERISTICS\r
+       TLNN    A,DSKBIT!DTABIT ;ONLY ALLOW DSK AND DTA AS LIBRARY DEVICES\r
+       JRST    ERR23           ;GIVE ERROR MESSAGE\r
+       SETOM   NOWARN          ;NO WARNING MESSAGE IF /X\r
+       TRO     F,XFLG          ;SET INDEX FLAG\r
+;      TROA    F,XFLG          ;SET /X BUT NOT /C\r
+\r
+;DELETE LOCAL SYMBOLS AND COPY PROCESSOR\r
+;THIS ROUTINE PROCESSES THE C COMMAND\r
+;ONLY THE MASTER FILE IS HANDLED\r
+\r
+DELCPY:        TRO     F, NOLOCB       ;SET FLAG TO DELETE LOCAL SYMBOLS\r
+       PUSHJ   P, MSTGET       ;GET A PROGRAM FROM MASTER FILE\r
+       JRST    ERROR6          ;NOT ENOUGH ARGUMENTS\r
+       PUSHJ   P, COPY         ;COPY ENTIRE FILE\r
+       TRNN    F,XFLG          ;INDEX FLAG ON?\r
+       JRST    EXIT            ;ALL DONE\r
+       JRST    INDEX3          ;YES DO PASS 2\r
+\fSUBTTL        FUDGE2 IO SUBROUTINES\r
+\r
+;ROUTINES TO COPY FILES, COPY UP TO A GIVEN PROGRAM IN A FILE\r
+;AND TO FIND A GIVEN PROGRAM IN A FILE AND COPY IT.\r
+\r
+;THE COPY ROUTINE WILL COPY BINARY PROGRAMS FROM WHEREVER THE\r
+;INPUT DEVICE HAPPENS TO BE WHEN IT IS CALLED, UP TO THE\r
+;END OF FILE. SINCE COPY IS CALLED WITH A PUSHJ, THE END-OF-\r
+;FILE EXIT IN INGET WILL EXIT TO THE PLACE THAT CALLED COPY.\r
+\r
+COPY:  PUSHJ   P, READ         ;READ A PROGRAM\r
+       POPJ    P,              ;EXIT WHEN ALL THROUGH FILE\r
+       PUSHJ   P, WRITE        ;WRITE OUT THE PROGRAM\r
+       JRST    COPY            ;RETURN FOR MORE PROGRAMS\r
+\r
+;THE COPYTO ROUTINE WILL READ AND WRITE PROGRAMS FROM THE\r
+;INPUT DEVICE UNTIL THE PROGRAM WHOSE NAME IS IN ACCUMULATOR\r
+;R IS FOUND, AT WHICH TIME IT EXITS\r
+\r
+COPYTO:        PUSHJ   P, READ         ;READ A PROGRAM\r
+       JRST    ERROR7          ;EOF - CANT FIND IT\r
+       CAMN    R, A            ;IS IT THE CORRECT PROGRAM?\r
+       POPJ    P,              ;YES, EXIT\r
+       PUSHJ   P, WRITE        ;NO, WRITE IT OUT\r
+       JRST    COPYTO          ;READ SOME MORE PROGRAMS\r
+\f\r
+;THE FINDCP ROUTINE WILL SEARCH THE INPUT FILE FOR A PROGRAM\r
+;WHOSE NAME IS IN ACCUMULATOR R, AND HAVING FOUND IT, WILL\r
+;WRITE IT OUT. IF THE CONTENTS OF AC R ARE ZERO, THE ENTIRE\r
+;FILE IS COPIED.\r
+\r
+FINDCP:        JUMPE   R, COPY         ;COPY ENTIRE FILE?\r
+FIND1: PUSHJ   P, READ         ;READ A PROGRAM FROM INPUT FILE\r
+       JRST    FIND2           ;EOF, TRY REWINDING AND TRYING AGAIN\r
+       CAME    R, A            ;IS THIS THE RIGHT ONE?\r
+       JRST    FIND1           ;NO, TRY AGAIN\r
+       JRST    WRITE           ;YES, WRITE IT OUT AND EXIT\r
+\r
+FIND2: JUMPE   A,ERROR7        ;V3 IF EOF OUTPUT ERROR MESSAGE\r
+       PUSHJ   P, BACKSP       ;BACKSPACE THE MAG TAPE\r
+       HRRZ    A, FILBUF       ;PICK UP THE FILE POINTER\r
+       HLLM    A, 3(A)         ;CLEAR THE LOOKUP FLAG FOR DECTAPE\r
+       PUSHJ   P, GETDEV       ;SET UP THE PROGRAM AGAIN\r
+       JRST    ERROR3          ;IMPOSSIBLE ERROR RETURN\r
+FIND3: PUSHJ   P, READ         ;READ A PROGRAM FROM INPUT FILE\r
+       JRST    ERROR7          ;EOF - REALLY CANT FIND IT\r
+       CAME    R, A            ;IS THIS THE RIGHT ONE?\r
+       JRST    FIND3           ;NO, TRY AGAIN\r
+       JRST    WRITE           ;YES, WRITE IT OUT AND EXIT\r
+\f;ROUTINE MSTGET RETRIEVES A PROGRAM NAME FROM THE MASTER\r
+;DEVICE SPECIFICATIONS. IT SAVES THE POINTER IN FILBUF, \r
+;CHANGES IT TO POINT TO ITS OWN BLOCK, THEN CALLS GETDEV\r
+\r
+MSTGET:        MOVE    A, FILBUF       ;GET THE POINTER TO CURRENT FILE\r
+       MOVEM   A, FILSAV       ;SAVE THE CURRENT POINTER\r
+       MOVEI   A, FILBUF+1     ;CHANGE IT TO POINT TO MASTER\r
+       MOVEM   A, FILBUF       ;...\r
+       JRST    GETDEV          ;CALL COMMON ROUTINE\r
+\r
+\r
+;ROUTINE TRNGET RETRIEVES A PROGRAM NAME FROM THE TRANSACTION\r
+;FILES. IT RESETS THE POINTER THAT MSTGET WIPED OUT, AND CALLS\r
+;THE COMMON PROGRAM RETRIEVAL PROGRAM GETDEV.\r
+\r
+TRNGET:        MOVE    A, FILSAV       ;GET SAVED POINTER\r
+       MOVEM   A, FILBUF       ;RESTORE IT TO ITS PLACE\r
+       JRST    GETDEV          ;CALL COMMON ROUTINE\r
+\r
+;ROUTINE RESET RESTORES THE STATE OF THE MASTER DEVICE TO\r
+;WHAT IT WAS JUST AFTER THE LAST TIME MSTGET WAS CALLED. IT\r
+;SETS THE POINTER OF THE MASTER FILE BACK TO THE PREVIOUS\r
+;PROGRAM, CALLS MSTGET, AND FINDS THE PROGRAM AGAIN\r
+\r
+RESET: MOVEI   A,FILBUF+5      ;START OF TRANSACTION LIST  ***DMN\r
+       HLLM    A, FILBUF+3     ;NOW CLEAR LOOKUP FLAG ON MASTER\r
+       SOS     FILBUF+3        ;MOVE POINTER BACK ONE PROGRAM\r
+RESET2:        SKIPN   (A)             ;ANY TRANSACTION FILES ?    ***DMN\r
+       JRST    RESET3          ;NO-ALL DONE                ***DMN\r
+       HLLM    A,2(A)          ;CLEAR LOOKUP FLAG ON IT    ***DMN\r
+       ADDI    A,3             ;NEXT FILE                  ***DMN\r
+       JRST    RESET2          ;GO BACK FOR MORE           ***DMN\r
+RESET3:        PUSHJ   P, MSTGET       ;SET UP THE MASTER DEVICE\r
+       JRST    ERROR3          ;FUDGE ERROR-NO MASTER!\r
+       PUSHJ   P, BACKSP       ;BACKSPACE IN CASE ITS A MAG TAPE\r
+       MOVE    A, FILSAV       ;DIDDLE THE POINTERS, BECAUSE MSTGET\r
+       MOVEM   A, FILBUF       ;WILL BE CALLED AGAIN IMMEDIATELY\r
+RESET1:        PUSHJ   P, READ         ;READ A PROGRAM FROM MASTER FILE\r
+       JRST    ERROR3          ;FUDGE ERROR-CANT FIND PROGRAM\r
+       CAME    R, A            ;IS IT THE RIGHT PROGRAM NAME?\r
+       JRST    RESET1          ;NO, LOOK AGAIN\r
+       POPJ    P,              ;YES, EXIT\r
+BACKSP:        DPB     D, [POINT 4, BACK0,12]\r
+       DPB     D, [POINT 4, BACK1, 12]\r
+       DPB     D, [POINT 4, BACK2,12]\r
+       DPB     D, [POINT 4,BACK3,12]\r
+       JRST    BACK0           ;GO TO POSITION MAGTAPE\r
+\fSUBTTL COMMON PROGRAM RETRIEVAL PROGRAM GETDEV.\r
+;THIS PROGRAM USES VARIOUS POINTERS AND BITS OF INFORMATION\r
+;IN FILBUF AND PRG BUF TO RETURN TO THE USER A RADIX 50\r
+;PROGRAM NAME AS SEEN IN THE COMMAND STRING. THE STRUCTURE\r
+;OF INFORMATION IN THESE TWO BUFFERS IS AS FOLLOWS:\r
+\r
+;FILBUF IS A LIST OF 3-WORD BLOCKS OF DATA ABOUT EACH FILE.\r
+;THE FIRST WORD IN FILBUF IS A POINTER WHICH POINTS TO THE\r
+;FIRST WORD OF THE BLOCK CURRENTLY BEING WORKED ON BY\r
+;THE VARIOUS SUBROUTINES OF FUDGE. WHEN THE COMMAND STRING\r
+;IS BEING PROCESSED AND INFORMATION IS BEING STORED IN FILBUF,\r
+;THIS POINTER IS IN THE FORM OF AN AOBJN WORD SO THAT A CHECK\r
+;CAN BE MADE FOR BUFFER OVERFLOW. THE CONTENTS OF THE 3-WORD\r
+;FILE BLOCK IS AS FOLLOWS:\r
+;      1ST WORD - SIXBIT FILE NAME, OR ZERO IF THIS IS THE\r
+;                 END OF THE LIST .\r
+;      2ND WORD - LEFT HALF CONTAINS A SIXBIT FILE NAME EXTENSION\r
+;                 RIGHT HALF CONTAINS THE CHANNEL NUMBER FOR\r
+;                 THIS FILE.\r
+;      3RD WORD - LEFT HALF IS ZERO IS A LOOKUP HAS NOT BEEN\r
+;                 DONE ON THIS FILE NAME, AND -1 IF IT HAS. A\r
+;                 LOOKUP CAN THUS BE FORECED BY ZEROING OUT THE\r
+;                 LEFT HALF OF THE WORD.\r
+;                 RIGHT HALF CONTAINS A POINTER TO THE LAST\r
+;                 PROGRAM NAME IN PRGBUF THAT WAS REFERENCED. THE\r
+;                 RIGHT HALF IS ZERO IF THERE ARE NO PROGRAM\r
+;                 NAMES ASSOCIATED WITH THE FILE.\r
+\r
+;PRGBUF IS A LIST OF PROGRAM NAMES USED BY THE FILES IN FILBUF.\r
+;THE FIRST WORD OF PRGBUF IS A POINTER WORD WHOSE USE IS THE\r
+;SAME AS THE FIRST WORD OF FILBUF.THE ENTRIES IN PRGBUF CONSIST\r
+;OF A LIST OF RADIX50 SYMBOLS, ONE TO A WORD, TERMINATED BY\r
+;A ZERO WORD.\r
+\r
+;FUDGE2 WORKS WITH FILBUF AND PRGBUF IN TWO DISTINCTLY \r
+;DIFFERENT WAYS: ONCE WHEN IT IS PROCESSING THE COMMAND STRING\r
+;AND STORING THE VARIOUS FILE NAMES AND PROGRAM NAMES, AND\r
+;ONCE WHEN IT IS USING THE INFORMATION IN THE FILES TO PROCESS\r
+;A FUDGE COMMAND. WHEN A FILE NAME IS SEEN IN THE COMMAND STRING,\r
+;THE STATUS OF THE PREVIOUS FILE IS CHECKED. IF THE PREVIOUS\r
+;FILE HAD NO PROGRAM NAMES, THEN ITS POINTER WORD (3RD WORD) IS\r
+;ZEROED OUT TO INDICATE THE ABSCENCE OF ANY PROGRAMS IN PRGBUF.\r
+;OTHERWISE, PROCESSING BEGINS ON THE CURRENT FILE: THE FILE\r
+;NAME, FILE NAME EXTENSION, AND CHANNEL NUMBER ARE STORED. THE\r
+;CONTENTS OF THE POINTER WORD IN PRGBUF ARE STORED IN THE\r
+;POINTER WORD OF THE FILE BLOCK\r
+;ROOM IS LEFT IN FILBUF SO THAT WHEN THE CARRIAGE RETURN IS\r
+;SEEN, FUDGE2 CAN SHUFFLE THE FIRST FILE BLOCK UP ONE WORD AND\r
+;INSERT ANOTHER NULL. THE EFFECT OF THIS KLUDGE IS THAT WE NOW\r
+;HAVE TWO SEPARATE LISTS IN FILBUF, A MASTER LIST, AND A \r
+;TRANSACTION LIST.\r
+\fGETDEV:       MOVE    B, FILBUF       ;GET POINTER TO FILE BLOCK\r
+       SKIPN   (B)             ;END OF LIST? (ZERO TERMINATES)\r
+       POPJ    P,              ;YES, EXIT\r
+       MOVE    A,PPNBUF        ;GET POINTER TO PPN'S\r
+       MOVE    D,(A)           ;GET GLOBAL PPN\r
+       MOVEM   D,DEFPPN        ;SAVE AS DEFAULT PPN\r
+       MOVE    D,1(A)          ;GET TEMP. PPN\r
+       MOVEM   D,PRJPRG        ;SAVE AS TEMP. PPN\r
+       ADDI    A,2             ;INCREMENT POINTER\r
+       MOVEM   A,PPNBUF        ;SAVE NEW POINTER\r
+       HRRZ    D, 1(B)         ;GET DEVICE NUMBER FOR THIS DEVICE\r
+       SKIPL   2(B)            ;HAS A LOOKUUP BEEN DONE?\r
+       JRST    GET3            ;NO, GO DO LOOKUP\r
+GET0:  MOVEI   DIS, 3          ;SET UP AC DIS\r
+       IMUL    DIS, D          ;C(DIS) = 3*C(D)\r
+       HRRZ    A, 2(B)         ;GET  POINTER TO  PROGRAM NAMES\r
+       JUMPE   A, GET1         ;NULL PROGRAM LIST (NO POINTER)?\r
+       AOS     A, 2(B)         ;NO, INCREMENT POINTER BY ONE\r
+       MOVE    R, (A)          ;GET A PROGRAM NAME\r
+       JUMPN   R, CPOPJ1       ;END OF PROGRAM LIST?\r
+       ADDI    B, 3            ;YES, INCREMENT FILBUF POINTER\r
+       MOVEM   B, FILBUF       ;SAVE NEW POINTER\r
+       JRST    GETDEV          ;TRY NEXT FILE BLOCK\r
+\r
+GET1:  MOVEI   R, 0            ;NO PROGRAMS, RETURN ZERO\r
+       ADDI    B, 3            ;MOVE FILBUF POINTER TO NEXT BLOCK\r
+       MOVEM   B, FILBUF       ;SAVE THE POINTER\r
+CPOPJ1:        AOSA    (P)             ;GOOD RETURN\r
+POPOUT:        POP     P,(P)           ;POP UP ONE LEVEL\r
+CPOPJ: POPJ    P,              ;EXIT\r
+\f\r
+GET3:  DPB     D, [POINT 4,GET3A,12]\r
+       XCT     GET3A           ;CLOSE CURRENT FILE BEFORE DOING...\r
+       MOVE    A, (B)          ;GET FILE NAME OF NEXT FILE\r
+       MOVEM   A, EBLOCK       ;SET UP FOR LOOKUP\r
+       HLLZ    A, 1(B)         ;GET FILE NAME EXTENSION\r
+       MOVEM   A, EBLOCK+1     ;SAVE IT FOR LOOKUP\r
+       HRROS   A, 2(B)         ;SET FLAG IN LEFT HALF OF 3RD WORD\r
+       DPB     D, [POINT 4,GET4A,12]\r
+       SKIPN   A,PRJPRG        ;GET TEMP. PPN\r
+       MOVE    A,DEFPPN        ;USE PERMANENT IF NO TEMP.\r
+       MOVEM   A,EBLOCK+3      ;SAVE IT\r
+       MOVEM   A,EBLOCK-1      ;FOR LEVEL D ALSO\r
+       MOVE    A,DEVBUF(D)     ;GET DEVICE\r
+       DEVCHR  A,              ;GET ITS CHARACTERISTICS\r
+       TLNN    A,DSKBIT        ;IF NOT A DSK\r
+       TDZA    T,T             ;NO EXTENDED LOOKUP\r
+       MOVE    T,LEVEL         ;GET LEVEL\r
+GET4:  XCT     GET4A           ;DO A LOOKUP ON NEW FILE\r
+       JRST    .+3             ;NOT FOUND, TRY WITH BLANKS EXT.\r
+       SETZM   EBLOCK+3        ;CLEAR PROJ-PROG\r
+       JRST    DOENTR          ;SUCCESSFUL RETURN FROM LOOKUP\r
+       HLRZ    A, 1(B)         ;GET THE FILE NAME EXTENSION\r
+       CAIE    A, 624554       ;IS IT "REL" ?\r
+       JRST    ERROR8          ;NO,  DON'T GIVE HIM ANOTHER CHANCE\r
+       HLLM    A, 1(B)         ;YES, TRY LOOKUP WITH 0 EXTENSION\r
+       SETZM   EBLOCK+1        ;CLEAR EXTENSION IN LOOKUP BLOCK\r
+       JRST    GET4            ;TRY AGAIN\r
+\r
+DOENTR:        SKIPN   LEVEL           ;IF NOT LEVEL D\r
+       JRST    DOXSWT          ;ENTER DONE ALREADY\r
+       MOVS    T,[XWD EBLOCK,SVENTR]\r
+       BLT     T,EBLOCK+1      ;RESTORE EBLOCK\r
+       MOVSI   T,777000        ;MASK FOR PROTECTION\r
+       ANDM    T,EBLOCK+2      ;CLEAR DATE AND TIME\r
+       SETZM   EBLOCK-1        ;CLEAR PPN\r
+       MOVE    T,LEVEL\r
+       XCT     SEMIC1          ;DO ENTER\r
+       JRST    [HRRZ T,EBLOCK+1 ;GET ERROR CODE\r
+               CAIN    T,17    ;PARTIAL ALLOCATION ONLY?\r
+               JRST    .+1     ;YES, JUST CONTINUE\r
+               JRST    ERR14]  ;ERROR\r
+       SETZM   LEVEL           ;NEVER AGAIN\r
+DOXSWT:        TRNE    F,XFLG          ;INDEX FLAG ON?\r
+       PUSHJ   P,INDEX0        ;YES, SET UP POINTERS AND CORE\r
+       JRST    GET0            ;AND CONTINUE\r
+\f\r
+;SHORT ROUTINES TO STORE WORDS IN THE FILE BUFFER AND PROGRAM\r
+;BUFFER\r
+;ROUTINE PUTFIL STORES THE CONTENTS OF ACCUMULATOR S IN THE\r
+;NEXT FREE LOCATION IN FILBUF. IT CHECKS FOR OVERFLOW.\r
+\r
+PUTFIL:        MOVE    A, FILBUF       ;GET POINTER WORD FOR FILBUF\r
+       AOBJP   A, ERROR2       ;INCREMENT, CHECK FOR OVERFLOW\r
+       MOVEM   A, FILBUF       ;SAVE NEW POINTER\r
+       MOVEM   S, (A)          ;SAVE FILE NAME ENTRY\r
+       POPJ    P,              ;EXIT\r
+\r
+\r
+;ROUTINE PUTPRG STORES THE CONENTS OF ACCUMULATOR S IN THE\r
+;NEXT FREE LOCATION IN PRGBUF. IT CHECKS FOR OVERFLOW.\r
+\r
+PUTPRG:        MOVE    A, PRGBUF       ;GET POINTER WORD FOR BUFFER\r
+       AOBJP   A, ERROR2       ;INCREMENT, CHECK FOR OVERFLOW\r
+       MOVEM   A, PRGBUF       ;SAVE NEW POINTER WORD\r
+       MOVEM   S, (A)          ;SAVE PROGRAM NAME\r
+       POPJ    P,              ;EXIT\r
+\r
+;ROUTINE PUTPPN STORE THE TWO PPPN NUMBER IN PPNBUF\r
+\r
+PUTPPN:        MOVE    A,PPNBUF        ;GET POINTER WORD FOR BUFFER\r
+       AOBJP   A,ERROR2\r
+       MOVEM   A,PPNBUF        ;SAVE NEW POINTER WORD\r
+       MOVEM   S,(A)           ;SAVE PPN\r
+       POPJ    P,              ;EXIT\r
+\fSUBTTL ROUTINE TO INPUT ONE PROGRAM AT A TIME\r
+;THE FIRST WORD THAT THE PROGRAM READS WILL BE A BLOCK HEADER.\r
+;BLOCKS ARE READ UNTIL AN ENTRY BLOCK IS FOUND, AND THE ENTIRE\r
+;ENTRY BLOCK IS STORED IN AN INTERNAL BUFFER,SIZE PERMITTING.\r
+;FOLLOWING THAT, THE NAME BLOCK IS READ, AND THE NAME OF THE \r
+;PROGRAM IS RETURNED IN ACCUMULATOR A. PROVISION IS MADE FOR\r
+;BLOCKS OF WORD COUNT ZERO. THE SECTION OF CODING AROUND READ2\r
+;DELIBERATELY OMITS THIS CHECK IN ORDER TO READ IN THE NEXT\r
+;BLOCK HEADER WITH A MINIMUM OF INSTRUCTIONS. ORDINARILY, EACH\r
+;PROGRAM WILL BEGIN WITH AN ENTRY BLOCK, BUT THE ROUTINE WILL\r
+;ALSO ALLOW THE PROGRAM TO BEGIN WITH A NAME BLOCK IF NO\r
+;ENTRY BLOCK IS SEEN.\r
+\r
+READ:  MOVEI   C, ENTBLK       ;SET UP POINTER TO BUFFER\r
+READ6: JSR     GETIN           ;GET A BLOCK HEADER\r
+       HLRZ    B, A            ;GET THE BLOCK CODE\r
+       CAIN    B,14            ;IS IT AN INDEX BLOCK?\r
+       JRST    READX           ;YES, GET RID OF IT\r
+       CAIN    B, 4            ;IS IT AN ENTRY BLOCK?\r
+       JRST    READ1           ;YES, PROCESS IT\r
+       CAIN    B, 6            ;IS IT A NAME BLOCK?\r
+       JRST    READ7           ;YES, PROCESS IT\r
+       CAIN    B,400           ;F4 SIGNAL WORD?\r
+       JRST    F4I             ;YES, PROCESS F4 BLOCKS\r
+       PUSHJ   P, COUNT        ;CALCULATE SIZE OF BLOCK\r
+       JUMPE   B, READ6        ;WORD COUNT OF ZERO?\r
+READ6A:        CAML    B, IBUF+2(DIS)  ;DOES BLOCK OVERLAP IO BUFFERS?\r
+       JRST    READ6B          ;ADJUST B AND GET ANOTHER BUFFER\r
+       MOVE    A, IBUF+2(DIS)  ;NO, DIDDLE BUFFER HEADER COUNT\r
+       SUB     A, B            ;ELIMINATE BLOCK OF LENGTH C(B)\r
+       MOVEM   A, IBUF+2(DIS)  ;PUT NEW WORD COUNT BACK\r
+       ADDM    B, IBUF+1(DIS)  ;MOVE BYTE POINTER PAST BLOCK\r
+       JRST    READ6           ;GET NEXT BLOCK\r
+READ6B:        SUB     B, IBUF+2(DIS)  ;ACCOUNT FOR REST OF THIS BUFFER\r
+       SETZM   IBUF+2(DIS)     ;FORCE ANOTHER INBUF\r
+       JSR     GETIN           ;GET ANOTHER BUFFER OF INPUT\r
+       JRST    READ6A          ;CHECK AGAIN\r
+\r
+\r
+; THIS CODE MODIFIED 3-21-71 BY DCS (STANFORD) TO HANDLE\r
+;  MORE THAN ONE ENTRY BLOCK (FAIL AND SAIL BOTH ISSUE\r
+;  MULTIPLE ENTRY BLOCKS).\r
+\r
+SIZZ==SIZE-<<SIZE+21>/22>-4    ;ACCOUNT FOR HDR BLKS, RELOC WRDS, PROGNAME\r
+READ1: SETZM   ENTBLK          ;SAME AS (C) AT PRESENT\r
+       HRLI    C,-1            ;AOBJN WILL OVERFLOW FIRST TIME\r
+\r
+; BACK HERE FOR EACH NEW ENTRY BLOCK\r
+\r
+READ2: MOVNI   B,400000(A)     ;-1 IN LH, 377777-CT IN RH\r
+       HRRZS   A\r
+       ADD     A,ENTBLK        ;NEW COUNT IF IT FITS\r
+       CAILE   A,SIZZ          ;TOO MUCH NOW?\r
+        TROA    F,ERRB         ; YES, MARK ENTRY BLOCK TOO BIG\r
+       MOVEM   A,ENTBLK        ;NO, UPDATE USED COUNT\r
+; HERE FOR EACH NEW WORD\r
+READ23:        TRNN    B,377777        ;END THIS LOADER BLOCK?\r
+        JRST    READ55         ; YES, CHECK NEXT\r
+       AOBJN   B,NXTWRD        ;TIME FOR SOME RELOC BITS?\r
+       JSR     GETIN           ;YES, GET THEM AND TOSS THEM\r
+       HRLI    B,-22           ;AND RESET COUNT\r
+NXTWRD:        JSR     GETIN           ;GET A DATA WORD\r
+; (ROUTINE COURTESY OF DEC LOADER)\r
+\r
+       AOBJN   C,READ22        ;NEED TO INSERT RELOC WORD?\r
+       TRNN    F,ERRB          ;YES, UNLESS NOT INSERTING\r
+        SETZM   (C)            ; ALL ENTRY RELOCS ARE 0\r
+       ADD     C,[XWD -22,1]   ;LH 0 BEFORE ADD, SET UP NEXT\r
+READ22:        TRNN    F,ERRB          ;ARE WE INSERTING?\r
+        MOVEM   A,(C)          ; YES, PUT IT AWAY\r
+       JRST    READ23          ;LOOP\r
+\r
+\r
+READ55:        JSR     GETIN           ;GET NEXT HEADER WORD\r
+       HLRZ    B,A             ;TYPE\r
+       CAIN    B,4             ;ANOTHER ENTRY?\r
+        JRST    READ2          ; YES, STORE IT\r
+\r
+; PROGRAM NAME -- FINISH ENTRY BLOCK OUT\r
+       MOVEI   B,4             ;ENTRY BLOCK TYPE\r
+       HRLM    B,ENTBLK        ;NOW CORRECT TYPE,,COUNT\r
+       HRLI    C,0             ;CLEAR LH COUNT\r
+       AOJA    C,READ7         ;STORE NAME BLOCK HEADER AND CONTINUE\r
+; END OF DCS PATCH 3-21-71\r
+\fREAD5:        PUSHJ   P, COUNT        ;CALCULATE SIZE OF BLOCK\r
+       JUMPE   B, READ9        ;WORD COUNT OF ZERO?\r
+READ3: JSR     GETIN           ;GET A WORD\r
+       MOVEM   A, (C)          ;STORE IT\r
+       AOJ     C,              ;INCREMENT BUFFER POINTER\r
+       SOJG    B, READ3        ;DONE READING YET?\r
+       CAIN    G+1, 2          ;IS THERE A COMMON WORD?\r
+       MOVE    A, -2(C)        ;GET PROGRAM NAME IN A\r
+       JUMPE   A, READ9        ;IGNORE WORD OF ZERO\r
+       MOVE    B, A            ;GET RID OF EXTRA BLANKS\r
+READ8: IDIVI   B, 50           ;TRY DIVIDING IT BY 50\r
+       JUMPN   B+1, READ9      ;FILTERED OUT ALL THE BLANKS?\r
+       MOVE    A, B            ;NO, STORE SYMBOL AGAIN\r
+       JRST    READ8           ;TRY ANOTHER DIVISION\r
+\r
+READ9: TRNE    F, ERRB         ;ERROR CONDITION?\r
+       JRST    ERR10           ;YES\r
+       TRNN    F,XFLG          ;INDEX FLAG ON?\r
+       JRST    CPOPJ1          ;NO, SKIP EXIT\r
+       JRST    INDEX1          ;YES SAVE ENTRIES\r
+\r
+READ7: MOVEM   A, (C)          ;STORE NAME BLOCK HEADER\r
+       AOJA    C, READ5        ;GO READ NAME BLOCK\r
+\r
+F4I:   TRO     F,F4IB          ;DONT OUTPUT DURING F4 SEARCH\r
+       PUSH    P,C             ;SAVE ENTRY BLOCK\r
+       PUSHJ   P,F4            ;PASS F4 BLOCKS\r
+       POP     P,C             ;RESTORE ENTRY BLOCK\r
+       TRZ     F,F4IB          ;TURN OFF IGNORE BIT\r
+       JRST    READ6           ;GO PROCESS NEXT PROGRAM\r
+\r
+READX: SKIPN   NOWARN          ;DO WE WANT A MESSAGE?\r
+       TTCALL  3,[ASCIZ /WARNING NO INDEX ON OUTPUT FILE - CONTINUING\r
+/]\r
+       SETOM   NOWARN          ;ONCE IS ENOUGH\r
+       SETZM   IBUF+2(DIS)     ;FORCE ANOTHER INBUF\r
+       JSR     GETIN           ;INPUT THE NEXT BLOCK\r
+       SOS     IBUF+2(DIS)     ;WORD COUNT OUT BY ONE\r
+       JRST    READ6+1         ;AND RETURN TO CODE\r
+\fSUBTTL ROUTINE TO OUTPUT ONE PROGRAM AT A TIME\r
+;THE WRITE SUBROUTINE WILL OUTPUT AN ENTIRE BINARY RE-\r
+;LOCATABLE PROGRAM AS WRITTEN BY MACRO6. IT ASSUMES THAT THE\r
+;ENTRY BLOCK AND NAME BLOCK FOR THE PROGRAM ARE IN THE\r
+;INTERNAL BUFFER ENTBLK, AND OUTPUTS THESE BEFORE PICKING UP\r
+;MORE BLOCKS FROM THE CURRENT INPUT DEVICE. BLOCKS ARE READ\r
+;AND WRITTEN UNTIL THE END BLOCK HAS BEEN PROCESSED. PROVISION I\r
+;IS MADE FOR BLOCKS WITH A WORD COUNT OF ZERO.\r
+\r
+WRITE: SUBI    C, ENTBLK       ;GET COUNT OF ENTRY BLOCK\r
+       JUMPE   C, WRITE3       ;NOTHING TO OUTPUT?\r
+       MOVEI   B, ENTBLK       ;GET A POINTER IN B\r
+WRITE2:        MOVE    A, (B)          ;GET A BINARY WORD\r
+       PUSHJ   P, OUT          ;OUTPUT IT\r
+       AOJ     B,              ;INCREMENT POINTER\r
+       SOJG    C, WRITE2       ;KEEP GOING UNTIL BUFFER EMPTY\r
+WRITE3:        JSR     GETIN           ;GET A BLOCK HEADER\r
+       HLRZ    B,A             ;GET THE BLOCK TYPE CODE ***VJC\r
+       TRNN    F,NOLOCB        ;DELETE LOCAL SYMBOLS? ***VJC\r
+       JRST    .+3             ;NO\r
+       CAIN    B,2             ;IS IT A SYMBOL BLOCK? ***VJC\r
+       JRST    DELLOC          ;GO DELETE LOCAL SYMBOL ***VJC\r
+                               ;COME BACK TO WRITE3 ***VJC\r
+                               ;UNLESS EXIT ON END-OF-FILE ***VJC\r
+\r
+       PUSHJ   P, OUT          ;OUTPUT IT\r
+       CAIN    B, 400          ;IS THIS A FORTRAN IV SIGNAL WORD?\r
+       JRST    F4              ;YES, PROCESS F4 OUTPUT\r
+       MOVEM   B, SAVEBT       ;SAVE THE BLOCK TYPE\r
+       PUSHJ   P, COUNT        ;NO, GET SIZE OF BLOCK\r
+       JUMPE   B, WRITE3       ;WORD COUNT OF ZERO?\r
+WRITE4:        JSR     GETIN           ;OUTPUT THE BLOCK\r
+       PUSHJ   P, OUT          ;...\r
+       SOJG    B, WRITE4       ;LOOP BACK UNTIL DONE\r
+       MOVE    A, SAVEBT       ;RETRIEVE THE BLOCK TYPE\r
+       CAIE    A, 5            ;WAS IT AN END BLOCK?\r
+       JRST    WRITE3          ;NO, RETURN FOR MORE BLOCKS\r
+       POPJ    P,              ;YES, EXIT\r
+\f\r
+;THE COUNT SUBROUTINE CALCULATES THE LENGTH OF THE VARIOUS \r
+;BLOCKS READ BY THE WRITE AND READ SUBROUTINES. THE POSITIVE\r
+;WORD COUNT IS FOUND IN THE RIGHT HALF OF THE ENTRY BLOCK \r
+;HEADER, WHICH IS ASSUMED TO BE IN AC A UPON ENTERING. THE\r
+;LENGTH WILL BE RETURNED IN AC B, AND INCLUDES THE DATA WORDS\r
+;(SYMBOLS, ENTRY WORDS, ETC.) AND THE SUBHEADERS, OF WHICH\r
+;THERE IS ONE FOR EVERY 18 (DECIMIAL) DATA WORDS. THE BLOCK\r
+;HEADER IS DESTROYED, AND IS NOT INCLUDED IN THE LENGTH.\r
+\r
+COUNT: HRRZ    G, A            ;GET NUMBER OF WORDS\r
+       IDIVI   G, 22           ;1SUBHEADER/18 DATA WORDS\r
+       ADDI    G,(A)           ;ADD INTO WORD COUNT\r
+       JUMPE   G+1,.+2         ;1 EXTRA SUBHEADER FOR\r
+       AOJ     G,              ;STRAY ONES\r
+       MOVE    B, G            ;RESULTS IN AC B\r
+       POPJ    P,              ;EXIT\r
+\fSUBTTL ROUTINE TO HANDLE FORTRAN OUTPUT\r
+\r
+;SUBSECTION OF THE WRITE ROUTINE TO HANDLE OUTPUT FROM THE\r
+;FORTRAN IV COMPILER. THE MAIN OBJECT OF THE ROUTINE IS TO\r
+;LOOK FOR THE END BLOCK. OTHER BLOCKS ARE MERELY COPIED OUT.\r
+;THE BLOCK TYPES ARE GIVEN BY THE FOLLOWING TABLE\r
+;----------------------------------------------------------------\r
+       ;BITS 0-17      BITS18-23       BITS 24-35              TYPE\r
+\r
+;777777                70              N                  DATA STATEMENT\r
+;777777                50              N           ABSOLUTE MACHINE CODE\r
+;777777                0               -           PROGRAMMER LABELS\r
+;777777                31              -           MADE LABELS\r
+;777777                60              -           ENTRY LABELS\r
+;777777                        777776              END BLOCK\r
+;-----------------------------------------------------------------\r
+F4:    JSR     GETIN           ;GET A FORTRAN IV BLOCK HEADER\r
+       PUSHJ   P, OUT4         ;OUTPUT IT\r
+       TLC     A, -1           ;TURN ONES TO ZEROES IN LEFT HALF\r
+       TLNE    A, -1           ;NO, WAS LEFT HALF ALL ONES?\r
+       JRST    F4              ;NO, IT WAS CALCULATED MACHINE CODE\r
+       CAIN    A, -2           ;YES, IS RIGHT HALF = 777776?\r
+       JRST    ENDST           ;YES, PROCESS F4 END BLOCK\r
+       LDB     B, [POINT 6,A,23];GET CODE BITS FROM BITS 18-23\r
+       TRZ     A, 770000       ;THEN WIPE THEM OUT\r
+       CAIE    B, 70           ;IS IT A DATA STATEMENT?\r
+       CAIN    B, 50           ;IS IT ABSOLUTE MACHINE CODE?\r
+       JRST    MACHCD          ;YES, TREAT IT LIKE DATA STATEMENTS\r
+       JSR     GETIN           ;NO, ITS A LABEL OF SOME SORT\r
+       PUSHJ   P, OUT4         ;WHICH CONSISTS OF ONE WORD\r
+       JRST    F4              ;LOOK FOR NEXT BLOCK HEADER\r
+\r
+MACHCD:        HRRZ    B, A            ;GET THE WORD COUNT IN AC B\r
+       JSR     GETIN           ;INPUT A WORD\r
+       PUSHJ   P, OUT4         ;OUTPUT IT\r
+       SOJG    B, MACHCD       ;LOOP BACK FOR REST OF THE BLOCK\r
+       JRST    F4              ;GO LOOK FOR NEXT BLOCK\r
+\r
+ENDST: MOVEI   B,1             ;TWO WORDS, FIVE TABLES, ONE WORD, ONE TABLE\r
+       MOVEI   C,6             ;TO GO\r
+F4LUP1:        JSR     GETIN           ;GET TABLE MEMBER\r
+F4LUP3:        PUSHJ   P,OUT4          ;OUTPUT WORD\r
+       SOJGE   B,F4LUP1        ;LOOP WITHIN A TABLE\r
+       JUMPL   C,CPOPJ         ;LAST TABLE - RETURN\r
+       SOJG    C,F4LUP2        ;FIRST TWO WORDS AND FIVE TABLES\r
+       JUMPE   C,F4LUP1        ;COMMON LENGTH WORD\r
+F4LUP2:        JSR     GETIN           ;READ HEADER WORD\r
+       MOVE    B,A             ;COUNT TO COUNTER\r
+       JRST    F4LUP3          ;STASH\r
+\r
+OUT4:  TRNN    F,F4IB          ;DONT DO OUTPUT?\r
+       PUSHJ   P,OUT           ;YES, DO OUTPUT\r
+       POPJ    P,              ;RETURN\r
+\fSUBTTL ROUTINE TO DELETE LOCAL SYMBOLS FROM SYMBOL BLOCK\r
+\r
+;ALL LOCAL AND SUPPRESSED LOCAL SYMBOLS ARE DELETED\r
+;EXTERNALS,INTERNAL AND SUPPRESSED INTERNALS ARE NOT DELETED.\r
+\r
+DELLOC:        HRRZM   A,BSZ           ;SIZE OF SYMBOL BBLE\r
+       PUSHJ   P,DELINI        ;CLEAR NEW HEADER & RELOC WORDS\r
+                               ;SET PB = SYMBLK+2\r
+DELGTR:        JSR     GETIN           ;GET RELOCATION WORD\r
+       MOVEM   A,RELOCS        ;SAVE IT\r
+       MOVE    A,PTGR          ;INIT POINTER TO GET\r
+       MOVEM   A,PTGRS         ;RELOCATION WORD\r
+\r
+DELGT1:        JSR     GETIN           ;GET FIRST WORD OF PAIR\r
+       ILDB    0,PTGRS         ;GET RELOCATION BITS & HOLD\r
+       TLNE    A,(1B2)         ;IS SYMBOL  LOCAL?\r
+       JRST    DELDEC          ;YES, DON'T COPY\r
+       MOVEM   A,0(T)          ;STORE FIRST WORD\r
+       JSR     GETIN           ;GET SECOND WORD INTO A\r
+       MOVEM   A,1(T)          ;STORE SECOND WORD\r
+       IDPB    0,PTSRS         ;STORE RELOCATION BITS\r
+       MOVEI   A,2             ;COUNT WORDS STORED\r
+       ADDM    A,SYMBLK        ;I.E. UPDATE WORD COUNT\r
+       ADDI    T,2             ;UPDATE NEXT LOCATION TO STORE\r
+       MOVE    A,PTSRS         ;HAVE WE STORED 9\r
+       TLNN    A,770000        ;SYMBOL PAIRS?\r
+       PUSHJ   P,DELWRT        ;YES, WRITE IT OUT\r
+       JRST    DELDEC+1        ;ALREADY HAVE 2ND WORD\r
+\r
+DELDEC:        JSR     GETIN           ;GET SECOND WORD INTO A\r
+       SOS     BSZ             ;HAVE WE EXHAUSTED\r
+       SOSG    BSZ             ;ALL WORDS IN BLOCK?\r
+       JRST    DELFIN          ;YES, NONE LEFT\r
+       MOVE    A,PTGRS         ;HAVE WE GOT 9\r
+       TLNE    A,770000        ;SYMBOL PAIRS YET?\r
+       JRST    DELGT1          ;NO, GET NEXT PAIR\r
+       JRST    DELGTR          ;YES, GET RELOCATION\r
+\r
+DELFIN:        PUSHJ   P,DELWRT        ;ORIGINAL BLOCK EMPTY NOW\r
+       JRST    WRITE3          ;GET NEXT BLOCK\r
+\r
+\r
+\fSUBTTL ROUTINE TO WRITE OUT NEW SYMBOL BBLE\r
+\r
+DELWRT:        SKIPN   A,SYMBLK        ;ANYTHING TO WRITE\r
+       JRST    DELINI          ;NO, CAN LEAVE\r
+       HRRZ    0,A             ;GET WORD COUNT\r
+       HRLI    A,2             ;PUT IN BLOCK TYPE\r
+       PUSHJ   P,OUT           ;WRITE BLOCK HEADER\r
+       MOVEI   B,SYMBLK        ;LOC OF FIRST WORD\r
+DELWRU:        ADDI    B,1             ;LOC OF RELOC WORD\r
+       MOVE    A,0(B)          ;GET WORD\r
+       PUSHJ   P,OUT           ;OUTPUT\r
+       SOJGE   0,DELWRU        ;ALL THROUGH?\r
+\r
+;ROUTINE TO INITIALIZE NEW SYMBOL BBLE\r
+DELINI:        SETZM   SYMBLK          ;YES, CLEAR COUNT\r
+       SETZM   SYMBLK+1        ;CLEAR RELOCATION\r
+       MOVE    A,PTSR          ;INIT POINTER\r
+       MOVEM   A,PTSRS         ;FOR STORING NEW RELOC\r
+       MOVEI   T,SYMBLK+2      ;SET TO STORE FIRST GLOBAL\r
+       POPJ    P,\r
+\fSUBTTL ROUTINES TO INDEX THE LIBRARY\r
+\r
+COMMENT        *       THE INDEXING OF LIBRARY FILES IS DONE IN TWO PASSES.\r
+       ON PASS 1 THE LIBRARY FILE IS COPIED AND ALL ENTRIES STORED\r
+       IN CORE ALLONG WITH A POINTER TO THE BEGINING OF THE BLOCK.\r
+       A DUMMY INDEX BLOCK (TYPE 14) IS OUTPUT AT THE BEGINING OF THE\r
+       NEW LIBRARY AND ONE IS OUTPUT WHENEVER THE CURRENT INDEX BLOCK\r
+       FILLS A BUFFER.\r
+       ON PASS 2 THE DUMMY INDEX BLOCKS ARE REPLACED BY REAL ONES.\r
+       FUDGE2 USED USETO'S AND DUMP MODE.\r
+       IF THE OUTPUT DEVICE IS DTA FUDGE2 USES UGETF UUO'S TO FIND\r
+       THE NEXT BLOCK AND NON-STANDARD DUMP MODE TO WRITE THE INDICES.\r
+       DESIGN AND CODING BY D.M.NIXON JULY 1970\r
+*\r
+\r
+INDEX0:        MOVE    A,INDEXH        ;BLOCK HEADER\r
+       AOS     BLKCNT          ;START ON BLOCK #1\r
+       PUSHJ   P,OUT1          ;OUTPUT IT\r
+       OUTPUT  1,              ;FORCE OUTPUT\r
+       MOVE    T,OBUF+5        ;BUFFER SIZE\r
+       MOVEM   T,XCOUNT\r
+       MOVEM   T,BUFSIZ        ;SAVE IT AWAY\r
+       AOS     T,JOBREL        ;TO GET 1K MORE\r
+       MOVEM   T,XPNTR\r
+       MOVEM   T,XBEG          ;START OF INDEX BUFFERS\r
+       CORE    T,\r
+       JRST    ERR22           ;NOT ENUF CORE\r
+       MOVEI   A,1             ;START ON BLOCK #1 (IF DSK)\r
+       MOVEM   A,@XPNTR        ;STORE FIRST BLOCK #\r
+       AOS     XPNTR\r
+       MOVE    A,INDEXH\r
+       MOVEM   A,@XPNTR\r
+       AOS     XPNTR\r
+       SOS     XCOUNT\r
+       SOS     XCOUNT          ;RESERVE SPACE FOR NEXT LINK WORD\r
+       POPJ    P,              ;RETURN\r
+\f;HERE ON PASS 1 TO STORE ENTRIES AND POINTERS.\r
+\r
+INDEX1:        AOS     (P)             ;SET SKIP RETURN\r
+       HRRZ    T,ENTBLK        ;GET SIZE OF BLOCK\r
+       MOVN    A,T\r
+       ADDI    T,1             ;WORD OF INFO\r
+       CAML    T,XCOUNT        ;ENUF ROOM IN BLOCK?\r
+       JRST    NOROOM          ;NO\r
+       MOVE    T,ENTBLK        ;GET HEADER WORD\r
+       MOVEM   T,@XPNTR\r
+       AOS     XPNTR\r
+       SOS     XCOUNT\r
+       HRLS    A\r
+       HRRI    A,ENTBLK+1\r
+INDEXA:        SKIPN   T,(A)\r
+       AOJA    A,.-1\r
+       MOVEM   T,@XPNTR\r
+       SOS     XCOUNT\r
+       AOS     XPNTR\r
+       AOBJN   A,INDEXA\r
+INDEX2:        MOVE    T,BUFSIZ\r
+       SUB     T,OBUF+5\r
+       MOVSS   T\r
+       HRR     T,BLKCNT\r
+       MOVEM   T,@XPNTR\r
+       SOS     XCOUNT\r
+       AOS     XPNTR\r
+       POPJ    P,\r
+\r
+;HERE WHEN CURRENT INDEX BLOCK IS FULL.\r
+\r
+NOROOM:        MOVE    A,INDEXH        ;HEADER BLOCK OF INDEX FOR LOADER\r
+       PUSHJ   P,OUTGO\r
+       OUTPUT  1,\r
+       MOVE    T,BLKCNT        ;GET INDEX BLOCK #\r
+       HRROM   T,@XPNTR        ;STORE IT WITH -1 IN LEFT HALF\r
+       MOVE    A,XCOUNT\r
+       ADDM    A,XPNTR\r
+       MOVE    A,BUFSIZ\r
+       MOVEM   A,XCOUNT\r
+                               ;MARK IT AS AN INDEX INCASE BLOCK FULL\r
+       HRROM   T,@XPNTR        ;SAVE BLOCK # FOR PASS 2\r
+       AOS     XPNTR\r
+       TRNN    F,DTAFLG        ;NOT IF DTA\r
+       AOS     BLKCNT          ;ONE FOR OUTPUT\r
+       MOVE    A,INDEXH\r
+       MOVEM   A,@XPNTR\r
+       AOS     XPNTR\r
+       SOS     XCOUNT\r
+       SOS     XCOUNT          ;SPACE FOR LINK WORD TO NEXT INDEX\r
+       JRST    INDEX1+1\r
+\r
+\f;HERE FOR PASS 2. WRITE OUT THE INDEX BLOCKS\r
+\r
+INDEX3:        SETOM   @XPNTR          ;TERMINATE WITH END OF INDEX MARKER\r
+       OUTPUT  1,              ;SO LAST BLOCK IS WRITTEN\r
+       TRNE    F,DTAFLG        ;IS IT DTA?\r
+       JRST    INDEX5          ;YES, TREAT DIFFERENTLY\r
+       SETSTS  1,16\r
+       MOVNI   A,200\r
+       HRLM    A,XBEG\r
+INDEX4:        SETZM   XBEG+1\r
+       MOVE    A,@XBEG\r
+       USETO   1,(A)\r
+       OUTPUT  1,XBEG\r
+       STATZ   1,760000\r
+       JRST    ERR15\r
+       MOVEI   A,200\r
+       ADDB    A,XBEG\r
+       HRRZS   A\r
+       CAMG    A,XPNTR\r
+       JRST    INDEX4\r
+       JRST    EXIT\r
+\r
+INDEX5:        CLOSE   1,              ;AND A SEPARATE EOF BLOCK\r
+       SETSTS  1,116           ;NONE STANDARD MODE\r
+       MOVNI   A,200           ;IOWD COUNT\r
+       HRLM    A,XBEG          ;SET IT UP FOR OUTPUT\r
+       USETI   1,@BLKCNT       ;SET ON LAST BLOCK\r
+       INPUT   1,DIRIOW        ;READ IT IN\r
+       LDB     A,[POINT 10,DIRBLK,27]  ;GET FIRST BLOCK #\r
+       HRRM    A,@XBEG         ;STORE IT FOR COMMON LOOP\r
+       SETZM   XBEG+1          ;MAKE SURE IT'S ZERO\r
+INDEX6:        MOVE    A,@XBEG         ;GET BLOCK NUMBER\r
+       USETI   1,(A)           ;SET FOR INPUT\r
+       INPUT   1,DIRIOW        ;INPUT BLOCK\r
+       MOVE    T,DIRBLK        ;TO FIND LINK WORD\r
+       EXCH    T,@XBEG         ;PUT IT IN OUTPUT BLOCK\r
+       SOS     XBEG            ;BACK UP POINTER\r
+       USETO   1,(A)           ;NOW FOR OUTPUT\r
+       OUTPUT  1,XBEG          ;OUT IT GOES\r
+       STATZ   1,760000        ;UNLESS IN ERROR\r
+       JRST    ERR15           ;DEVICE ERROR\r
+       MOVEI   A,200           ;GET TO NEXT DUMP BLOCK\r
+       ADDB    A,XBEG          ;ADVANCE POINTER\r
+       HRRZS   A               ;JUST WORD LOCATION\r
+       CAMG    A,XPNTR         ;ALL DONE?\r
+       JRST    INDEX6          ;NO, LOOP\r
+       SETSTS  1,16            ;BACK TO STANDARD MODE TO UPDATE DIR.\r
+       JRST    EXIT            ;YES, FINISH UP\r
+\r
+INDEXH:        XWD     14,177          ;USED TO SIGNAL INDEX BLOCK TO LOADER\r
+\r
+\fSUBTTL INPUT SERVICE ROUTINE\r
+;THE INPUT ROUTINE GETS CHARACTERS FROM THE DEVICE WHOSE\r
+;CHANNEL NUMBER IS IN ACCUMULATOR D. IT CALCULATES THE POSITION\r
+;OF THE BUFFER HEADER OF THE DEVICE, THEN EITHER LOADS AC A\r
+;FROM THE BYTE POINTER, OR DOES AN INPUT. IF AN END OF FILE\r
+;IS FOUND, THE ROUTINE EXITS WITH A POPJ, SINCE THE READ ROUTINE\r
+;IS CALLED WITH A PUSHJ, FOLLOWED BY AN EOF RETURN. THE NORMAL\r
+;EXIT FROM GETIN IS BY A JRST @GETIN.\r
+\r
+GETIN: SOSG    IBUF+2(DIS)     ;IS APPROPRIATE BUFFER EMPTY?\r
+       JRST    INGET           ;YES, GET ANOTHER BUFFER\r
+GETIN1:        ILDB    A, IBUF+1(DIS)  ;LOAD AC A WITH A CHARACTER\r
+       POPJ    P,\r
+\r
+INGET: DPB     D,[POINT 4,INGET2,12]\r
+       DPB     D,[POINT 4,INGET3,12]\r
+       JRST    INGET2          ;INPUT A BUFFER OF DATA\r
+\r
+\r
+;OUTPUT SERVICE ROUTINE\r
+;THE OUT ROUTINE CHECKS THE TTYOB FLAG TO SEE IF THE OUTPUT\r
+;SHOULD BE ON THE TTY. IF SO, IT TRANSFERS CONTROL IMMEDIATELY.\r
+;OTHERWISE, IT ASSUMES OUTPUT IS ON DEVICE #1.\r
+\r
+OUT:   TRNN    F, TTYOB        ;SHOULD OUTPUT BE ON TTY?\r
+       JRST    TYPO            ;YES\r
+OUT1:  SOSG    OBUF+5          ;IS OUTPUT BUFFER EMPTY?\r
+       JRST    OUTGO           ;YES, OUTPUT A BUFFER\r
+OUT2:  IDPB    A, OBUF+4       ;DEPOSIT CHARACTER\r
+       POPJ    P,              ;EXIT\r
+\r
+OUTGO: TRNN    F,XFLG          ;IF NOT INDEXING\r
+       JRST    OUTG            ;DON'T WASTE TIME\r
+       TRNN    F,DTAFLG        ;IF DTA SKIP\r
+       AOSA    BLKCNT          ;INCR. COUNT IF DSK\r
+       UGETF   1,BLKCNT        ;GET NEXT BLOCK IF DTA\r
+OUTG:  OUT     1,              ;OUTPUT A BUFFER\r
+       JRST    OUT2            ;NO ERRORS\r
+       MOVEI   D, 1            ;YES, SET CHANNEL TO OUTPUT\r
+       JRST    ERR15           ;GO TO ERROR ROUTINE\r
+\r
+\fSUBTTL ROUTINE TO HANDLE ASTERISK FILE NAME *.EXT\r
+;THE DIRECTORY IS SEARCHED FOR FILE NAMES WITH GIVEN EXTENSION OR\r
+;EXTENSION REL IF NONE SPECIFIED. THESE ARE STORED IN FILBUF\r
+;ENTERED BY JRST FROM SEMICP\r
+;EXIT BY POPJ\r
+;DMN 23 MAY 1969\r
+\r
+\r
+ASTRSK:        MOVE    B,COLON2        ;GET DEVICE LAST SEEN\r
+       MOVEM   B,DSKINI+1      ;SAVE IT IN CASE DSK\r
+       DEVCHR  B,              ;GET ITS CHARACTERISTICS\r
+       TLNE    B,DTABIT        ;IS IT A DTA\r
+       JRST    DTAAST          ;YES\r
+       TLNN    B,DSKBIT        ;IS IT THE DSK?\r
+       JRST    ERR18           ;MUST BE ONE OR THE OTHER\r
+                               ;FALL INTO DSKAST IF OK\r
+\r
+DSKAST:        PUSH    P,JOBFF         ;SAVE OLD JOBFF\r
+       MOVEI   B,DSKHDR        ;WHERE BUFFER WILL GO\r
+       MOVEM   B,JOBFF         ;SET IT UP\r
+\r
+       OPEN    11,DSKINI       ;11 IS SAFE CH.NO.\r
+       JRST    ERR19           ;CONNOT INIT DSK\r
+       INBUF   11,1            ;FORCE SINGLE BUFFERING\r
+       MOVE    B,COLON2        ;GET DEVICE\r
+       DEVPPN  B,              ;GET PROJ-PROG INCASE SYS: ETC.\r
+       GETPPN  B,              ;FAILED, GET USER PROJ,PROG PAIR\r
+       MOVEM   B,EBLOCK        ;SAVE IT FOR LOOKUP OF UFD\r
+       MOVSI   B,(SIXBIT/UFD/) ;EXTENSION\r
+       MOVEM   B,EBLOCK+1\r
+       MOVE    B,[XWD 1,1]     ;TO GET UFD ***VJC\r
+       MOVEM   B,EBLOCK+3      ;ENTRY BLOCK SET UP\r
+       LOOKUP  11,EBLOCK       ;DO LOOKUP\r
+       JRST    ERR20           ;CANNOT DO IT\r
+\r
+DSKLUP:        PUSHJ   P,DSKINP        ;INPUT A WORD\r
+       MOVEM   S,SAVNAM        ;SAVE NAME FOR LATER\r
+       PUSHJ   P,DSKINP        ;GET EXT AS WELL\r
+       HLLZM   S,SAVEXT        ;SAVE EXT, CLEAR RH ***VJC\r
+       SKIPN   SAVNAM          ;IS THERE A NAME\r
+       JRST    DSKLUP          ;NO GET NEXT PAIR\r
+       CAME    EXT,SAVEXT      ;EXTENSIONS MATCH\r
+       JRST    DSKLUP          ;NO GET NEXT PAIR\r
+       PUSHJ   P,STNULL        ;CLOSE OUT OLD FILE\r
+       MOVE    S,SAVNAM        ;RECALL NAME\r
+       PUSHJ   P,PUTFIL        ;STORE IT IN FILBUF\r
+       MOVE    S,SAVEXT        ;RECALL EXTENSION\r
+       PUSHJ   P,PUTFIL\r
+       HRRM    D,(A)           ;GET CHANNEL\r
+       HRRZ    S,PRGBUF        ;POINTER TO PRGBUF\r
+       PUSHJ   P,PUTFIL        ;SAVE IT AS 3RD WORD\r
+       JRST    DSKLUP          ;GO LOOP ROUND ALL\r
+\r
+\f;ROUTINE TO GET NEXT WORD FROM UFD\r
+\r
+DSKINP:        SOSGE   DIRBUF+2        ;USUAL INPUT ROUTINE\r
+       JRST    DSKIN1          ;GET ANOTHER BUFFER\r
+       ILDB    S,DIRBUF+1      ;GET A WORD \r
+       POPJ    P,              ;RETURN\r
+\r
+DSKIN1:        IN      11,0            ;DO INPUT\r
+       JRST    DSKINP          ;NO ERRORS\r
+       STATO   11,20000        ;END OF FILE?\r
+       JRST    ERR21           ;NO, READ ERROR\r
+\r
+FIN:   POP     P,JOBFF         ;POP UP ONE LEVEL\r
+       POP     P,JOBFF         ;RESTORE JOBFF\r
+       POPJ    P,              ;RETURN TO COMMAND SCAN\r
+\r
+\r
+DTAAST:        LDB     B,[POINT 4,COLON1,12]   ;GET CHANNEL\r
+       DPB     B,[POINT 4,DP+0,12]     ;DEPOSIT IT\r
+       DPB     B,[POINT 4,DP+1,12]\r
+       DPB     B,[POINT 4,DP+2,12]\r
+       DPB     B,[POINT 4,DP+3,12]\r
+       DPB     B,[POINT 4,DP+5,12]\r
+       SETZ    B,              ;INITIAL CONDITION\r
+       JRST    DP              ;INPUT DIRECTORY\r
+\r
+DTALUP:        CAIL    B,26            ;END OF DIRECTORY\r
+       POPJ    P,              ;YES- FINISHED\r
+       HLLZ    S,DIREXT(B)     ;GET EXTENSION\r
+       SKIPE   DIRNAM(B)       ;IF NAME ZERO DON'T BOTHER\r
+       CAME    S,EXT           ;IS EXTENSION SAME\r
+       AOJA    B,DTALUP        ;NO GET NEXT ENTRY\r
+       PUSHJ   P,STNULL        ;TERMINATE LAST ENTRY\r
+       MOVE    S,DIRNAM(B)     ;GET NAME\r
+       PUSHJ   P,PUTFIL        ;STORE IT IN FILBUF\r
+       HLLZ    S,DIREXT(B)     ;AND EXTENSION\r
+       PUSHJ   P,PUTFIL        ;STORE IT\r
+       HRRM    D,(A)           ;SAVECH.\r
+       HRRZ    S,PRGBUF        ;SAVE PRGBUF POINTER\r
+       PUSHJ   P,PUTFIL        ;STORE IT\r
+       AOJA    B,DTALUP        ;GET NEXT ENTRY\r
+\r
+\fSUBTTL ERROR ROUTINES\r
+\r
+ERROR1:        MOVEI   B, EMES1        ;FUDGE COMMAND ERROR\r
+       JRST    ERROR           ;TYPE IT AND EXIT\r
+\r
+ERROR2:        MOVEI   B, EMES2        ;TOO MANY PROGRAM NAMES\r
+       JRST    ERROR           ;TYPE IT AND EXIT\r
+\r
+ERROR3:        MOVEI   B, EMES3        ;FUDGE SYSTEM ERROR\r
+       JRST    ERROR           ;TYPE A MESSAGE AND EXIT\r
+\r
+ERROR4:        PUSHJ   P, DTYPOQ       ;TYPE DEVICE NAME\r
+       MOVEI   B, EMES4        ;"CANNOT DO IO AS REQUESTED"\r
+       JUMPN   G,ERROR         ;TYPE IT\r
+       MOVEI   B,EMES24        ;NO SUCH DEVICE IF G=0\r
+       JRST    ERROR           ;TYPE IT AND EXIT\r
+\r
+ERROR5:        MOVEI   B, EMES5        ;UNEQUAL NUMBER OF MASTER AND TR.\r
+       JRST    ERROR           ;TYPE IT AND EXIT\r
+\r
+ERROR6:        MOVEI   B, EMES6        ;NOT ENOUGH ARGUMENTS\r
+       JRST    ERROR           ;TYPE IT AND EXIT\r
+\r
+ERROR7:        PUSHJ   P, DTYPOQ       ;TYPE OUT THE DEVICE NAME\r
+       MOVEI   A, 72           ;ASCII COLON\r
+       PUSHJ   P, TYPO         ;TYPE IT OUT\r
+       PUSHJ   P, FTYPO        ;TYPE  OUT THE FILE NAME\r
+       MOVEI   A, 74           ;ASCII LEFT ANGLE BRACKET\r
+       PUSHJ   P, TYPO         ;TYPE IT  OUT\r
+       MOVE    B, R            ;GET PROGRAM NAME\r
+       TRZ     F, TTYOB        ;SET IO BACK TO TTY\r
+       PUSHJ   P, PTYPO        ;TYPE  OUT THE PROGRAM NAME\r
+       MOVEI   A, 76           ;ASCII RIGHT ANGLE BRACKET\r
+       PUSHJ   P, TYPO         ;TYPE IT OUT\r
+       MOVEI   B, EMES7        ;GET AN ERROR MESSAGE\r
+       JRST    ERROR           ;TYPE IT OUT AND EXIT\r
+\r
+ERROR8:        PUSHJ   P, DTYPOQ       ;TYPE OUT THE DEVICE NAME\r
+       MOVEI   A, 72           ;ASCII COLON\r
+       PUSHJ   P, TYPO         ;TYPE IT OUT\r
+       PUSHJ   P, FTYPO        ;TYPE  OUT FILE NAME\r
+       MOVEI   A, 56           ;ASCII PERIOD\r
+       PUSHJ   P, TYPO         ;TYPE IT OUT\r
+       HRRZ    A, FILBUF       ;GET THE POINTER TO CURRENT FILE\r
+       HLRZ    S, 1(A)         ;GET FILE NAME EXTENSION\r
+       PUSHJ   P, DTYPO1       ;TYPE IT OUT\r
+       MOVE    T,SDEVCHR       ;GET CHARACTERISTICS\r
+       TLNE    T,DSKBIT        ;IS IT A DSK?\r
+       JRST    ERR8A           ;YES\r
+       MOVEI   B, EMES7        ;GET ERROR MESSAGE "NOT FOUND"\r
+       JRST    ERROR           ;TYPE IT OUT AND EXIT\r
+\fERROR9:       PUSHJ   P, DTYPOQ       ;TYPE DEVICE NAME\r
+       MOVEI   B, EMES9B       ;GET REMAINDER OF MESSAGE\r
+       JRST    ERROR           ;TYPE IT AND EXIT\r
+\r
+ERR10: MOVE    C, A            ;SAVE PROGRAM NAME IN C\r
+       MOVEI   B, EMES10       ;"ENTRY BLOCK TOO LARGE, PROGRAM"\r
+       PUSHJ   P, ETYPO        ;TYPE BEGINNING OF MESSAGE\r
+       MOVE    B, C            ;GET PROGRAM NAME IN B\r
+       PUSHJ   P, PTYPO        ;TYPE IT OUT\r
+       JRST    EXIT1           ;EXIT\r
+\r
+ERR11: MOVEI   B, EMES11       ;TRANSMISSION ERROR ON INPUT\r
+       PUSHJ   P, ETYPO        ;TYPE THE MESSAGE\r
+       PUSHJ   P, DTYPO        ;TYPE NAME OF OFFENDIN DEVICE\r
+       JRST    EXIT1           ;EXIT\r
+\r
+ERR14: MOVE    T,SDEVCHR       ;GET DEVICE CHARACTERISTICS\r
+       TLNE    T,DSKBIT        ;IS IT A DSK\r
+       JRST    ERROR8          ;YES\r
+       MOVEI   B, EMES14       ;DIRECTORY FULL ON OUTPUT\r
+       JRST    ERROR           ;TYPE IT AND EXIT\r
+\r
+ERR8A: HRRZ    T,EBLOCK+1      ;GET ERROR CODE\r
+       CAIL    T,TABLND-ETABLE ;LEGAL ERROR?\r
+       SKIPA   B,TABLND        ;NO, USE CATCH ALL MESSAGE\r
+       MOVE    B,ETABLE(T)     ;PICK UP MESSAGE\r
+       JRST    ERROR\r
+\r
+\fETABLE:       [ASCIZ /(0) file was not found/]\r
+       [ASCIZ /(1) no such project-programmer number/]\r
+       [ASCIZ /(2) protection failure/]\r
+       [ASCIZ /(3) file was being modified/]\r
+       [ASCIZ /(4) rename file name already exists/]\r
+       [ASCIZ /(5) illegal sequence of UUOs/]\r
+       [ASCIZ /(6) bad UFD or bad RIB/]\r
+       [ASCIZ /(7) not a SAV file/]\r
+       [ASCIZ /(10) not enough core/]\r
+       [ASCIZ /(11) device not available/]\r
+       [ASCIZ /(12) no such device/]\r
+       [ASCIZ /(13) not two reloc reg. capability/]\r
+       [ASCIZ /(14) no room or quota exceeded/]\r
+       [ASCIZ /(15) write lock error/]\r
+       [ASCIZ /(16) not enough monitor table space/]\r
+       [ASCIZ /(17) partial allocation only/]\r
+       [ASCIZ /(20) block not free on allocation/]\r
+\r
+TABLND:        [ASCIZ /(?) lookup,enter,or rename error/]\r
+\fERR15:        MOVEI   B, EMES15       ;DEVICE ERROR ON OUTPUT\r
+       PUSHJ   P, ETYPO        ;TYPE THE MESSAGE\r
+       PUSHJ   P, DTYPO        ;TYPE NAME OF OFFENDING DEVICE\r
+       JRST    EXIT1           ;GO AWAY\r
+\r
+ERR16: MOVE    B,A             ;SAVE OFFENDING LETTER\r
+       PUSHJ   P,CRLF\r
+       MOVEI   A,77            ;TYPE OUT "?"\r
+       PUSHJ   P, OUT\r
+       MOVE    A, B            ;GET BACK OFFENDING LETTER\r
+       PUSHJ   P, OUT          ;TYPE OFFENDING LETTER\r
+       MOVEI   B, EMES16       ;"X" IS AN ILLEGAL SWITCH\r
+       TRO     F,CRLFTY\r
+       JRST    ERROR           ;TYPE IT AND EXIT\r
+\r
+ERR17: MOVE    B, A\r
+       PUSHJ   P,CRLF\r
+       MOVEI   A, 77\r
+       PUSHJ   P, OUT\r
+       MOVE    A, B\r
+       PUSHJ   P, OUT          ;TYPE OFFENDING LETTER\r
+       MOVEI   B, EMES17       ;"X" IS AN ILLEGAL CHARACTER\r
+       TRO     F,CRLFTY\r
+       JRST    ERROR           ;TYPE IT AND EXIT\r
+\r
+ERR18: MOVEI   B,EMES18\r
+       JRST    ERROR\r
+\r
+ERR19: MOVEI   B,EMES19\r
+       JRST    ERROR\r
+\r
+ERR20: MOVEI   B,EMES20\r
+       JRST    ERROR\r
+\r
+ERR21: MOVEI   B,EMES21\r
+       JRST    ERROR\r
+\r
+ERR22: MOVEI   B,EMES22\r
+       JRST    ERROR\r
+\r
+ERR23: MOVEI   B,EMES23\r
+       JRST    ERROR\r
+\fSUBTTL VARIOUS ERROR ROUTINES AND SMALL TYPE-OUT ROUTINES\r
+\r
+ETYPO: HRLI    B, 440700       ;MAKE A BYTE POINTER\r
+ETYPO2:        ILDB    A, B            ;GET A CHARACTER\r
+       JUMPE   A,CPOPJ         ;EXIT IF NULL\r
+       PUSHJ   P, TYPO         ;NO, TYPE IT\r
+       JRST    ETYPO2          ;RETURN FOR MORE CHARACTERS\r
+\r
+DTYPOQ:        TRON    F,CRLFTY        ;IS CR,LF TYPED OUT?\r
+       PUSHJ   P,CRLF          ;YES\r
+       MOVEI   A,77            ;TYPE OUT ? FOR BATCH\r
+       PUSHJ   P,TYPO\r
+\r
+\r
+DTYPO: MOVE    S, DEVBUF(D)    ;GET DEVICE NAME FROM BUFFER\r
+DTYPO1:        MOVE    C, SYMPTR       ;BYTE POINTER TO SYMBOL NAME\r
+       MOVEI   B, 6            ;LOOP COUNTER FOR 6 CHARACTERS\r
+DTYPO2:        ILDB    A, C            ;GET A CHARACTER\r
+       JUMPE   A, DTYPO3       ;IGNORE BLANKS\r
+       ADDI    A, 40           ;CONVERT TO 7-BIT ASCII\r
+       PUSHJ   P, TYPO         ;TYPE IT\r
+DTYPO3:        SOJG    B, DTYPO2       ;ALL DONE?\r
+       POPJ    P,              ;EXIT\r
+\r
+FTYPO: MOVE    S, @FILBUF      ;PICK UP THE FILE NAME\r
+       JRST    DTYPO1          ;JUMP INTO DTYPO ROUTINE\r
+\r
+PTYPO: MOVEI   A, 6            ;SIX CHARACTERS TO GET\r
+PTYPO2:        IDIVI   B, 50           ;CONVERT TO SIXBIT CODE\r
+       HRLM    B+1, (P)        ;STORE CHARACTER ON PD LIST\r
+       SOJLE   A,.+2           ;ALL DONE?\r
+       PUSHJ   P, PTYPO2       ;NO, DIVIDE SOME MORE\r
+       HLRZ    A, (P)          ;POP CHARACTERS OFF STACK\r
+       JUMPE   A, CPOPJ        ;IGNORE BLANKS\r
+       CAILE   A, 12           ;LETTER OR NUMBER?\r
+       ADDI    A, 7            ;LETTER - ADD 66\r
+       ADDI    A, 57           ;NUMBER - ADD 57\r
+       CAIN    A, 134          ;DOLLAR SIGN?\r
+       SUBI    A, 70           ;YES, SPECIAL CASE\r
+       CAIN    A, 133          ;PERIOD?\r
+       SUBI    A, 55           ;YES, SPECIAL CASE\r
+       JRST    OUT             ;RECURSIVE EXIT FOR MORE CHARS\r
+\r
+TYPO:  IDPB    A, OBUF+1       ;STORE CHARACTER IN BUFFER\r
+       CAIN    A, 12           ;LINE FEED?\r
+       OUTPUT  0,              ;YES, EMPTY BUFFER\r
+       POPJ    P,              ;EXIT\r
+\fCRLF: MOVEI   A, 15           ;CARRIAGE RETURN\r
+       PUSHJ   P, OUT          ;OUTPUT IT\r
+       MOVEI   A, 12           ;LINE FEED\r
+       JRST    OUT             ;OUTPUT IT AND EXIT\r
+\r
+ERROR: TRZ     F,TTYOB         ;JUST IN CASE , SET OUTPUT TO TTY\r
+       TRON    F,CRLFTY\r
+       PUSHJ   P,CRLF\r
+       PUSHJ   P, ETYPO        ;TYPE LAST MESSAGE OF ERROR\r
+EXIT1: TRZ     F,TTYOB         ;ENSURE TTY OUTPUT OF CR-LF\r
+       PUSHJ   P,CRLF          ;FINISH WITH CR-LF\r
+       CLOSE   0,              ;FORCE OUTPUT OF LAST LINE\r
+       JRST    FUDGE2          ;START AGAIN\r
+\r
+EXIT:  CLOSE   1,              ;CLOSE OUT THE OUTPUT CHANNEL\r
+       JRST    FUDGE2          ;RESTART\r
+\r
+\fSUBTTL ERROR MESSAGES\r
+EMES1: ASCIZ   "?FUDGE2 SYNTAX ERROR"\r
+EMES2: ASCIZ   "?TOO MANY FILE NAMES OR PROGRAM NAMES"\r
+EMES3: ASCIZ   "?PROGRAM ERROR WHILE RESETTING MASTER DEVICE"\r
+EMES4: ASCIZ   " CANNOT DO IO AS REQUESTED"\r
+EMES5: ASCIZ   "?UNEQUAL NUMBER OF MASTER AND TRANSACTION PROGRAMS"\r
+EMES6: ASCIZ   "?NOT ENOUGH ARGUMENTS"\r
+EMES7: ASCIZ   " NOT FOUND"\r
+EMES9B:        ASCIZ   " NOT AVAILABLE"\r
+EMES10:        ASCIZ   "?ENTRY BLOCK TOO LARGE, PROGRAM "\r
+EMES11:        ASCIZ   "?TRANSMISSION ERROR ON INPUT DEVICE "\r
+EMES14:        ASCIZ   "?DIRECTORY FULL ON OUTPUT DEVICE "\r
+EMES15:        ASCIZ   "?DEVICE ERROR ON OUTPUT DEVICE "\r
+EMES16:        ASCIZ   " IS AN ILLEGAL SWITCH"\r
+EMES17:        ASCIZ   " IS AN ILLEGAL CHARACTER"\r
+EMES18:        ASCIZ "?DEVICE FOR * COMMAND MUST BE DSK OR DTA"\r
+EMES19:        ASCIZ "?CANNOT INIT DSK"\r
+EMES20:        ASCIZ "?LOOKUP FAILURE ON DSK"\r
+EMES21:        ASCIZ "?ERROR WHILE READING UFD"\r
+EMES22: ASCIZ "?NOT ENOUGH CORE AVAILABLE "\r
+EMES23:        ASCIZ   "?OUTPUT DEVICE MUST BE DSK OR DTA"\r
+EMES24:        ASCIZ   " DOES NOT EXIST"\r
+\fSUBTTL IMPURE CODE\r
+\r
+\r
+COLON1:        OPEN    ,COLON0         ;INITIALIZATION SEQUENCE\r
+SEMIC1:        ENTER   , EBLOCK(T)\r
+INBUF3:        INBUF   ,(C)\r
+\r
+BACK0: MTAPE   , 17            ;BACKSPACE MAG TAPE ONE FILE\r
+BACK3: MTAPE   ,0              ;WAIT FOR BACKSPACE TO FIN.\r
+BACK1: STATO   , IOBOT         ;ARE WE AT BEGINNING OF TAPE\r
+BACK2: MTAPE   , 16            ;NO, SKIP FILE\r
+       POPJ    P,              ;EXIT\r
+\r
+GET3A: CLOSE   ,\r
+GET4A: LOOKUP  , EBLOCK(T)\r
+\r
+INGET2:        IN      0,              ;INPUT A BUFFER OF DATA\r
+       JRST    GETIN1          ;NO ERRORS\r
+INGET3:        STATZ   , IOEOF         ;END OF FILE?\r
+       JRST    POPOUT          ;YES, HIGH LEVEL EXIT\r
+       JRST    ERR11           ;ERROR\r
+\r
+DP:    SETSTS  ,117            ;DUMP MODE NON-STANDARD\r
+       USETI   ,144            ;DIRECTORY BLOCK\r
+       INPUT   ,DIRIOW         ;ONE BLOCK ONLY\r
+       STATZ   ,760000         ;CHECK ERRORS\r
+       JRST    DP              ;TRY AGAIN\r
+       SETSTS  ,14             ;BACK TO BINARY\r
+       JRST    DTALUP\r
+\r
+DSKINI:        EXP     14\r
+       SIXBIT  /DSK/           ;MAY GET MODIFIED\r
+       EXP     DIRBUF\r
+\r
+DIRIOW:        IOWD    200,DIRBLK      ;IOWD FOR DIRECTORY INPUT\r
+       0                       ;MUST BE IN LOW SEGMENT\r
+\r
+\fSUBTTL STORAGE AND BUFFERS\r
+\r
+LOW:\r
+\r
+FILSAV:        BLOCK   1\r
+BLKCNT:        BLOCK   1               ;NUMBER OF BUFFERS OUTPUT\r
+SAVEAC:        BLOCK   1\r
+SAVEBT:        BLOCK   1\r
+COLON0:        BLOCK   1               ;MODE\r
+COLON2:        BLOCK   1               ;DEVICE NAME\r
+COLON3:        BLOCK   1               ;BUFFER HEADER\r
+FILBUF:        BLOCK   N\r
+PRGBUF:        BLOCK   N\r
+PPNBUF:        BLOCK   N\r
+DEVBUF:        BLOCK   10\r
+ENTBLK:        BLOCK   X+1\r
+SVEBLK:        BLOCK   X+1\r
+PDLIST:        BLOCK   XP\r
+       BLOCK   2               ;FOR EXTENDED LOOKUP AND ENTERS\r
+EBLOCK:        BLOCK   4\r
+       BLOCK   <RIBALC-6+1>    ;MORE EXTENDED STUFF\r
+OBUF:  BLOCK   6               ;TTY:, OUTPUT DEV:\r
+IBUF:  BLOCK   30              ;INPUT DEVICES (10)\r
+\r
+SAVNAM:        BLOCK   1       ;SAVED FILE NAME FROM UFD\r
+SAVEXT:        BLOCK   1       ;SAVED EXT NAME FROM UFD\r
+DIRBUF:        BLOCK 3         ;DIRECTORY BUFFER HEADER\r
+DSKHDR:        BLOCK N+2       ;TWO WORDS OF OVERHEAD [P,P]+EXT\r
+DIRBLK=DSKHDR+2\r
+DIRNAM=DIRBLK+123      ;FILENAMES IN DTA DIRECTORY START HERE\r
+DIREXT=DIRNAM+26       ;EXTENSIONS IN DTA DIRECTORY START HERE\r
+\r
+BSZ:   BLOCK   1               ;SIZE OF OLD SYMBOL BLOCK\r
+PTGRS: BLOCK   1               ;PTGR SAVED\r
+PTSRS: BLOCK   1               ;PTSR SAVED\r
+RELOCS:        BLOCK   1               ;ORIGINAL RELOC\r
+SYMBLK:        BLOCK   ^D20            ;NEW SYMBOL BLOCK\r
+\r
+MATCH: BLOCK   1               ;COUNT OF <'S - >'S ***VJC\r
+\r
+CURCHR:        BLOCK   1               ;SAVED CURRENT CHAR OF CS\r
+LSTCHR:        BLOCK   1               ;SAVED LAST CHAR OF CS\r
+SDEVCH:        BLOCK   1       ;SAVED DEVICE CHARACTERS\r
+NUMDEV:        BLOCK   1       ;NUMBER OF DEVICES\r
+XCOUNT:        BLOCK   1\r
+XPNTR: BLOCK   1\r
+BUFSIZ:        BLOCK   1\r
+XBEG:  BLOCK   2\r
+LEVEL: BLOCK   1       ;-2 IF LEVEL D\r
+DEFPPN:        BLOCK   1       ;DEFAULT PROJ-PROG\r
+PRJPRG:        BLOCK   1       ;TEMP. PROJ-PROG\r
+SVENTR:        BLOCK   2       ;PLACE TO SAVE EBLOCK,+1\r
+NOWARN:        BLOCK   1       ;SIGNAL TO PRINT MESSAGE ABOUT INDEX\r
+       VAR             ;JUST IN CASE\r
+\r
+LOWTOP:\r
+\fSUBTTL CONSTANTS,POINTERS AND LITERALS\r
+\r
+SYMPTR:        POINT   6, S\r
+EXTPTR:        POINT   6, EXT\r
+PTSR:  POINT   4,SYMBLK+1      ;TO STORE RELOCATION\r
+PTGR:  POINT   4,RELOCS        ;TO GET RELOCATION\r
+DTCLR: UTPCLR  1,\r
+FILXWD:        XWD     FILBUF+2, FILBUF+1\r
+XPDLST:        XWD     -XP,PDLIST-1\r
+\r
+       END     FUDGE2\r
+\f\r
+\r
diff --git a/src/iocont.mac b/src/iocont.mac
new file mode 100644 (file)
index 0000000..c6fbe16
--- /dev/null
@@ -0,0 +1,706 @@
+       TITLE IOCONT - CONTROL FOR IO PROGRAMMED OPERATORS\r
+       SUBTTL 8-9-95\r
+        EXTERNAL BUFCLC,ERROR,IOSETC,IOIERR,BUFCLR\r
+       EXTERNAL SETBYT,UINTQ,WAIT1,WSYNC,ADRCK\r
+       EXTERNAL UXIT,USRJDA,JOBJDA,ILLMOD,PUUOAC,PIOMOD\r
+       EXTERNAL JOB,ASSIN,PJOBN,ADRERR,USRREL,CUXIT1,CUXIT2\r
+       EXTERNAL SETIOS\r
+\r
+;FOR PURPOSES OF COMMENTING THIS SUBROUTINE THE\r
+;TERM BUFFER HEADER SHALL REFER TO THE 3 WORD HEADER\r
+;WHICH IS USED BY THE USER PROGRAM AND THIS EXEC FOR\r
+;REFERING TO THE RING BUFFERS.\r
+\r
+;THE CONTENTS OF THE 3 WORD HEADER (AS SET BY THE MONITOR FOR THE USE\r
+;                 FROM USERS PROGRAM BY AN INPUT OR AN OUTPUT UUO\r
+;       WORD 2:   BYTE POINTER TO CURRENT ITEM.\r
+;       WORD 3:   POSITIVE ITEM COUNT (NO. OF ITEMS LEFT ON\r
+;                 INPUT, NO. OF FREE ITEMS TO GO ON OUTPUT).\r
+\r
+;EACH BUFFER IN THE RING HAS FOLLOWING FORMAT (AS THE USER SEES IT)\r
+\r
+;       WORD 1:   RESERVED FOR BLOCK NUMBER FOR FIXED ADDRESS DEVIC\r
+;       WORD 2:   BIT 0=USE BIT FOR THIS BUFFER\r
+;                 BIT 1-17=NO. OF WORDS WHICH FOLLOW (LENGTH OF BUF\r
+;                 BIT 18-35=ADDRESS OF SECOND WORD OF NEXT BUFFER I\r
+;       WORD 3:   LH=LINK TO NEXT BLOCK (SET BY MONITOR FOR DECTAB\r
+;                 RH=NO. OF WORDS OF DATA WHICH FOLLOW (USUALLY\r
+;                 SET BY EXEC EXCEPT TO COMPUTE WORD COUNT\r
+;                 THAT HE WANTS TO COMPUTE WORD COUNT\r
+;                 HIMSELF INSTEAD OF HAVING THE MONITOR DO IT\r
+;                 USING THE BYTE POINTER IN THE 3 WORD HEADER).\r
+\r
+\f\r
+,H. R. MORSE     2/21/65\r
+,CALLING SEQUENCE\r
+,        CLOSE D,\r
+,        EXIT                ALWAYS RETURNS HERE\r
+, THIS ROUTINE PROCESSES THE CLOSE UUO AND DETERMINES WHETHER THE\r
+,OUTPUT ROUTINE SHOULD BE CALLED IF OUTPUT WERE ACTIVE, CLEARS\r
+,THE INPUT BUFFER AREA IF INPUT WERE ACTIVE, AND CLEARS THE\r
+,ITEM COUNTS OF BOTH INPUT AND OUTPUT HEADERS SERVING TO BOTH\r
+,TERMINATE THE USE OF THE DEVICE AND SET THE I/O ROUTINES TO\r
+,ACCEPT ANOTHER INPUT OR OUTPUT COMMAND IN A CLEAR STATE.\r
+,IN THE CASE OF OUTPUT DEVICES. THE CLOSE ROUTINE OF THE DEVICE HANDL\r
+,ING ROUTINE IS CALLED IN CASE ANY SPECIAL HANDLING IS REQUIRED.\r
+,MONITOR INTERFACE\r
+,        STORAGE: 30\r
+,        ROUTINES CALLED:   DCL, WAIT1, UXIT\r
+,        SYMBOLS SET/USED:\r
+,            ACCUMULATORS:       DAT    S/U    PROG U\r
+,                                DEVDAT U      TAC  S/U\r
+,                                IOS    S/U    TAC1 S/U\r
+,                                 PDP   U\r
+,            DEVICE DATA BLOCK:   DEVBUF  U\r
+,                                 DEVIOS  S/U\r
+,                                 DEVSER  U\r
+,            IO STATUS WORD:      IOACT   S    IODTER S\r
+,                                 IOBEG   S    IOEND  S\r
+,                                 IOBKTL  2    IOFST  S\r
+,                                 IODEND  S    IOIMPM S\r
+,                                 IODERR  S    IOSTRT S\r
+,                                 IODISC  S    IOW    S\r
+,            JOB BUFFER AREA:     IOUSE   S    \r
+,                                 JBFCTR  S\r
+\f\r
+\r
+INTERNAL CLOSE1\r
+\r
+CLOSE1:          TLOE DEVDAT,CLOSB     ;HAS A CLOSE ALREADY BEEN DONE?\r
+         JRST UXIT             ;YES, FOR THIS CHANNEL\r
+         LDB TAC,PUUOAC        ;USER DEVICE CHANNEL NO.\r
+         HLLM DEVDAT,USRJDA(TAC)\r
+         PUSH PDP,DAT\r
+         LDB TAC,PIOMOD\r
+         CAIGE TAC,DR\r
+         JRST UCLS4\r
+         MOVE TAC,DEVSER(DEVDAT)\r
+         PUSHJ PDP,DCL(TAC)\r
+         JRST UCLS3\r
+UCLS4:   PUSHJ PDP,WAIT1;      WAIT UNTIL DEVICE IS INACTIVE.\r
+         TRNN UUO,CLSIN        ;SUPPRESS INPUT?\r
+         TLNN DEVDAT,IBUFB     ;NO, WAS INPUT BUFFER SPECIFIED?\r
+         JRST UCLS2                                ;NO\r
+         HRRZ TAC1,DEVBUF(DEVDAT)\r
+         HRLI TAC1,PROG\r
+         HRRZ DAT,@TAC1        ;FIRST WORD OF 3 WORD BUFFER HEADER\r
+         HRR TAC1,@TAC1        ;REMEMBER CURRENT BUFFER IN TAC1\r
+         HRLZI TAC,IOUSE       ;USER BOTH FOR HEADER AND EACH BUFFER\r
+         JUMPE DAT,UCLS1       ;HAS A RING BEEN SETUP?(NO IF 0)\r
+         HRLI DAT,PROG         ;YES\r
+UCLS0:   HRR DAT,@DAT;         ADVANCE CURRENT INPUT BUFFER ADDRESS\r
+         ADRCHK DAT  ;IS ADDRESS OF?\r
+         ANDCAM TAC,@DAT       ;YES, CLEAR USE BIT.\r
+         CAME TAC1,DAT;        DONE?\r
+         JRST UCLS0\r
+UCLS1:   HRLI DAT,PROG\r
+         HRR DAT,DEVBUF(DEVDAT)\r
+         IORM TAC,@DAT         ;FLAG AS VIRGIN BUFFER IN 3 WORD HEADER\r
+         ADDI DAT,2;           JBFCTR:=0\r
+         SETZM @DAT            ;CLEAR INPUT ITEM COUNT.\r
+UCLS2:   TRNN UUO,CLSOUT       ;SUPPRESS OUTPUT?\r
+         TLNN DEVDAT,OBUFB     ;NO.WAS OUPUT BUFFER SPECIFIED?\r
+         JRST UCLS3                    ;NO\r
+         HLR DAT, DEVBUF(DEVDAT)       ;VIRGIN OUBPUT BUFFER?\r
+         HRLI DAT, PROG\r
+         SKIPG @DAT\r
+         JRST UCLS3            ;YES\r
+         MOVE TAC,DEVSER(DEVDAT)\r
+         PUSHJ PDP,DCL(TAC); CLOSE OUTPUT BUFFER\r
+         HLR DAT,DEVBUF(DEVDAT)\r
+         HRLI DAT,PROG\r
+         HRLZI TAC,IOUSE\r
+         IORM TAC,@DAT\r
+         ADDI DAT,2\r
+         SETZM @DAT;           JBFCTR:=0\r
+UCLS3:   PUSHJ PDP,WAIT1\r
+         POP PDP,DAT\r
+         TDZ IOS,[XWD IOEND,IODEND]\r
+         TLO IOS,IOBEG\r
+         MOVEM IOS,DEVIOS(DEVDAT);     IODISC:=0\r
+         JRST UXIT;            EXIT THIS UUO\r
+\f\r
+\r
+,DEC 06 00 EX UUO L PT PRE 02 INBUF,OUTBUF\r
+,H. R. MORSE        64-12-26\r
+,CALLING SEQUENCE\r
+,        INBUF D,N\r
+,        EXIT                RETURNS HERE IF MEMORY NOT EXCEEDED\r
+,CALLING SEQUENCE\r
+,        OUTBUF D,N\r
+,        EXIT                RETURNS HERE IF MEMORY NOT EXCEEDED\r
+, SETS UP AN N BUFFER RING FOLLOWING THE USERS PROGRAM FOR DEVICE\r
+, D AND INITIALIZES THE JOB BUFFER AREA HEADER:\r
+,        JBFADR0:=1,         JBFADR 1-17:=0\r
+,        JBFADR 18-35:=ADDRESS OF FIRST BUFFER IN RING\r
+,INPUT SETS DEVIAD:=ADDRESS OF FIRST BUFFER IN RING\r
+,OUTPUT SET DEVOAD:=ADDRESS OF FIRST BUFFER IN RING\r
+,BUFPNT IS RESTORED.\r
+,MONITOR INTERFACE\r
+,        STORAGE:13\r
+,        ROUTINES CALLED: BUFCLC,  UXIT\r
+,        SYMBOLS SET/USED:\r
+,            ACCUMULATORS:   BUFPNT  S/U               PROG U\r
+,                            DEVDAT  U                 TAC  S/U\r
+,                            PDP     U                 TAC1 S/U\r
+,            DEVICE DATA BLOCK:        DEVBUF  U\r
+,                            DEVIAD  S\r
+,                            DEVOAD  S\r
+,            JOB BUFFER AREA:          JBFADR  S\r
+\f\r
+\r
+       INTERN UINBF, UOUTBF\r
+\r
+UOUTBF:          PUSH PDP,BUFPNT;      SAVE BUFPNT ON STACK\r
+         PUSHJ PDP,BUFCLC;     SET UP BUFFER RIGH\r
+         HLR TAC,DEVBUF(DEVDAT);TAC:=OUTPUT BUFFER AREA HEADER ADDRE\r
+         HRRM BUFPNT,DEVOAD(DEVDAT);DEVOAD:=ADDRESS OF FIRST BUFFER\r
+,                                      IN RING\r
+UOBF1:   HRLI TAC,PROG;        RELOCATE BUFFER AREA HEADER ADDRESS\r
+         MOVEM BUFPNT,@TAC;    JBFADR:=IOUSE,ADDRESS OF FIRST BUFFER\r
+,                                      IN RING\r
+         POP PDP,BUFPNT;       RESTORE BUFPNT FROM STACK\r
+         JRST UXIT;            EXIT THIS UUO\r
+UINBF:   PUSH PDP,BUFPNT;      SAVE BUFPNT ON STACK\r
+         PUSHJ PDP,BUFCLC;     SET UP BUFFER RING\r
+         HRRM BUFPNT,DEVIAD(DEVDAT); DEVIAD:=ADDRESS OF FIRST BUFFER\r
+,                                      IN RING\r
+         HRR TAC,DEVBUF(DEVDAT); TAC:=INPUT BUFFER AREA HEADER ADDRE\r
+         JRST UOBF1\r
+\f\r
+\r
+,DEC 06 00 EX UUO L PT PRE 03 INIT\r
+,H. R. MORSE AND D. A. WITCRAFT          2/21/65\r
+,CALLING SEQUENCE\r
+,        INIT D,MODUS          D=JOB DEVICE CHANNEL\r
+,                              MODUS=IORDEL,IOCON,IOWC,MODE.\r
+,        SIXBIT/NAME/          DEVICE NAME\r
+,        XWD OBUF,IBUF         BUFFER AREA HEADER ADDRESS\r
+,        EXIT1                 DEVICE NOT AVAILABLE\r
+,        EXIT2                 DEVICE PROPERLY AVAILABLE\r
+,THE LEFT HALF OF NAME CONTAINS THE THREE LETTER DEVICE MNEMONIC,\r
+,   THE RIGHT HALF IS EITHER ZOER (SYSTEM WILL ASSIGN AN ARBITRARY\r
+,   UNIT) OR NON-ZERO TO REQUEST A SPECIFIC UNIT (LEFT JUSTIFIED).\r
+,IF THE SELECTED DEVICE IS NOT AVAILABLE. CONTROL RETURNS TO EXIT1.\r
+,OTHERWISE, THE DEVICE IS ASSIGNED TO THE USER AND ATTACHED TO HIS\r
+,CHANNEL D.  THE DEVICE IS INITIALIZED IN THE FOLLOWING MANNER AFTER\r
+,IOACT IS ZERO:\r
+,        IOBEG:=1\r
+,        DATA MODE:=BITS 32-35 OF AC UUO\r
+,        IOCON:=BIT 31 OF AC UUO\r
+,        IOWC:=BIT 40 OF AC UUO\r
+,        IORDEL:=BIT 29 OF AC UUO\r
+,        IOACT:=IODEND:=IOBKTL:=IODTER:=IODERR:=IOIMPM:=0\r
+,        JBFADR:=JBFCTR:=0 FOR THE SPECIFIED BUFFERS.\r
+,        DEVBUF:=OBUF,IBUF\r
+,MONITOR INTERFACE\r
+,        STORAGE:  20\r
+,        ROUTINES CALLED:      UINTQ, ASSIGN(UASG1),USEL,UINITZ,UXIT\r
+,        SYMBOLS SET/USED:\r
+,            ACCUMULATORS:     DEVDAT U\r
+,                              PDP    U        TAC  U\r
+,                              PROG   U        TAC1 S/U\r
+,            DEVICE DATA BLOCK:         DEVBUF S\r
+\f\r
+\r
+         INTERN UINIT,UINIT1\r
+UINIT:   LDB TAC,PUUOAC        ;USER DEVICE CHANNEL NO.\r
+         SKIPE DEVDAT,USRJDA(TAC)        ;IS A DEVICE ALREADY HERE?\r
+         PUSHJ PDP,RELEA0      ;YES, RELEASE IT\r
+         MOVE UUO,40           ;RESTORE AC UUO FROM LOC 40\r
+         PUSHJ PDP,UINTQ       ;GET SIXBIT DEVICE NAME FROM USER\r
+         AOS (PDP)\r
+UINIT1:          MOVE ITEM,JOB         ;CALLED BY SAVGET\r
+         PUSHJ PDP,ASSIN;      TRY TO ASSIGN DEVICE\r
+         JRST CUXIT1;          NOT AVAILABLE\r
+         LDB TAC,PUUOAC\r
+         HRRZM DEVDAT,USRJDA(TAC)      ;STORE DDB ADR IN DEVICE TABL\r
+         HRLZI TAC,IOBEG\r
+         MOVEM TAC,DEVIOS(DEVDAT)\r
+         PUSHJ PDP,SETIOS      ;SET DDB IOS STATUS WORD\r
+                               ;FROM RT. HALF OF UUO\r
+         PUSHJ PDP,UINTQ\r
+         HRLI DEVDAT, INITB    ;SET INIT UUO BIT\r
+         TLNN TAC,-1   \r
+         JRST UINIT4           ;OUTPUT NOT SPECIFIED\r
+         HLLM TAC,DEVBUF(DEVDAT)\r
+         TLO DEVDAT,OBUFB      ;SET OUTPUT BUFFER SPECIFIED BIT\r
+UINIT4:          TRNN TAC,-1;          IS IBUF SPECIFIED?\r
+         JRST UINIT5           ;INPUT BUF NOT SPECIFIED\r
+         HRRM TAC,DEVBUF(DEVDAT);      DEVBUF 18-35:=IBUF\r
+         TLO DEVDAT,IBUFB      ;SET INPUT BUFFER SPECIFIED BIT\r
+UINIT5:          HRRZ TAC1,TAC;        TAC1:=PROG,IBUF\r
+         PUSHJ PDP,UINITZ;     JBFADR:=JBFCTR:=0 FOR IBUF\r
+         HLR TAC1,TAC;         TAC1:=PROG,OBUF\r
+         PUSHJ PDP,UINITZ;     JBFADR:=JBFCTR:=0 FOR OBUF\r
+         LDB TAC,PUUOAC        ;STORE UUO BITS FOR THIS CHANNEL\r
+         HLLM DEVDAT,USRJDA(TAC)\r
+         JRST CUXIT2\r
+\f\r
+\r
+,DEC 06 00 EX COM L PT PRE 03 UINITZ\r
+,H. R. MORSE        64-12-26\r
+,CALLING SEQUENCE\r
+,        PUSHJ PDP,UINITZ\r
+,        EXIT                  RETURNS HERE IF MEMORY NOT EXCEEDED.\r
+,SETS JBFADR:=JBFCTR:=0 FOR THE BUFFER AREA HEADER WHOSE ADDRESS\r
+,IS IN AC TAC1.  ALSO,JBFPTR 0-5:=JBFPTR 12-17:=0,JBFPTR 6-11:=BYTE S\r
+,MONITOR INTERFACE\r
+,        STORAGE:15\r
+,        ROUTINES CALLED:      ADRCK, SETBYT\r
+,        SYMBOLS SET/USED:\r
+,            ACCUMULATORS:     PDP   U                 TAC    S/U\r
+,                      TAC1  S/U\r
+,           JOB BUFFER AREA:  JBFADR S\r
+,                                      JBFCTR S\r
+,                                      JBFPTR S\r
+         INTERN UINITZ\r
+\r
+UINITZ:          TRNN TAC1,-1;         IS BUFFER SPECIFIED?\r
+         POPJ PDP,;RETURN\r
+         HRLI TAC1,PROG\r
+         PUSHJ PDP,ADRCK       ;CHECK 3 WORD BUFFER HEADER\r
+         HRRZI TAC,2(TAC1)\r
+         SETZM @TAC1;          JBFADR:=0\r
+         AOS TAC1\r
+         PUSH PDP,TAC\r
+         PUSH PDP,TAC1\r
+         AOS TAC1\r
+         SETZM @TAC1;          JBFCTR:=0\r
+         PUSHJ PDP,SETBYT;     JBFPTR 6-11:=BYTE SIZE\r
+         TLZ TAC,770077\r
+         POP PDP,TAC1\r
+         HLLM TAC,@TAC1\r
+         POP PDP,TAC\r
+         POPJ PDP,;            RETURN\r
+\f\r
+\r
+INTERNAL IN\r
+IN:      TLNE IOS,IO           ;IS THIS DEVICE ALREADY DOING OUTPUT!\r
+         PUSHJ PDP,WAIT1       ;YES,WAIT TILL IT IS FINISHED\r
+         LDB TAC,PUUOAC        ;SET BIT THAT SAYS AN INPUT UUO HAS OCC\r
+         TLO DEVDAT,INPB       ;FOR THIS DEVICE\r
+         HLLM DEVDAT,USRJDA(TAC)         ;IN LH OF CURRENT JOB DEVICE\r
+         LDB TAC,PIOMOD        ;IO MODE\r
+         CAIL TAC,DR           ;IS THE IO MODE DUMP MODE?\r
+         JRST INDMP            ;YES\r
+IN1:     HRR JBUF,DEVBUF(DEVDAT)         ;NO, GET ADDRESS OF R WORD BU\r
+         HRLZI TAC,IOUSE       ;BUFFER INUSE BIT\r
+         HRLI JBUF,PROG        ;SET INDEX FIELD FOR RELOCATION USING A\r
+         PUSHJ PDP,ADRCK       ;CHECK BUFFER HEADER\r
+         HRRZI TAC,2(JBUF)     ;END ADDRESS OF 3 WORD HEADER\r
+         MOVE TAC1,@JBUF       ;GET WORD 1 OF 3 WORD BUFFER HEADER (PO\r
+         HRLI TAC1,PROG        ;SET INDEX FIELD COR RELOCATION USING A\r
+         SKIPG @JBUF           ;HAS A BUFFER RING BEEN SET UP (RH NON-\r
+                               ;WHICH HAS BEEN REFERENCED BY PREVIOUS\r
+         JRST INPUTF           ;NO, GO SET UP BUFFER IF NECESSARY AND\r
+         ADRCHK TAC1           ;YES, CHECK ADDRESS TO SEE IF IN BOUNDS\r
+         ANDCAB TAC,@TAC1      ;FLAG THIS BUFFER AS BEING FILLED (USE\r
+                               ;AND GET POINTER TO NEXT BUFFER\r
+         HRRM TAC,@JBUF        ;SET WORD 1 IN 3 WORD HEADER TO NEXT BU\r
+         ADRCHK TAC ;AND CHECK ITS ADDRESS TO SEE IF IN BOUNDS\r
+INPUT0:          MOVE IOS,DEVIOS(DEVDAT)       ;GET IO STATUS WORD\r
+         TRNN IOS,IOACT        ;IS THE DEVICE ALREADY ACTIVE (FILLING\r
+         JRST INPT0B           ;NO.\r
+         TRNN IOS,IOCON        ;DOES THE USER WANT TO STOP AFTER EVERY\r
+         JRST INPT0C           ;NO. HE WANTS NORMAL CONTINUOUS OVERLAP\r
+         PUSHJ PDP,WSYNC       ;YES, WAIT TILL DEVICE FINISHES WITH ON\r
+INPT0B:          HRLI TAC,PROG         ;SET FOR RELOCATION\r
+         HRR TAC,@TAC          ;GET POINTER 1 BLOCK AHEAD OF NEXT BBUF\r
+         SKIPL @TAC\r
+         PUSHJ PDP,CALIN\r
+INPT0C:          HRR TAC1,@TAC1\r
+INPT0A:          SKIPGE @TAC1\r
+         JRST INPUT2\r
+INPUT1:          PUSHJ PDP,WSYNC\r
+         SKIPGE @TAC1\r
+         JRST INPUT2\r
+         TDNE IOS,[XWD IOEND,IODERR]\r
+         JRST INEOF\r
+         MOVE IOS,DEVIOS(DEVDAT)\r
+         JRST INPUT1\r
+\r
+INPUT2:          ADDI TAC1,1\r
+         HRRZ ITEM,@TAC1\r
+         SUBI TAC1,1\r
+         PUSH PDP,ITEM         ;SAVE WORD COUNT AS STORED BY IO SERVIC\r
+         PUSHJ PDP,IOSETC\r
+         POP PDP,ITEM\r
+         LDB TAC,PIOMOD        ;GET DEVICE DATA MODE\r
+         CAIN TAC, I           ;IMAGE MODE?\r
+         MOVEM ITEM,@JBUF      ;YES, STORE WORD COUNT NOT ITEM COUNT\r
+         JRST UXIT\r
+\f\r
+\r
+INEOF:   HRRZI IOS,IODEND\r
+         IORM IOS,DEVIOS(DEVDAT)\r
+         JRST UXIT\r
+\r
+INPUTA:          HRR TAC1,UUO\r
+         ANDCAM TAC,@TAC1\r
+         JRST INPUT0\r
+\r
+;HERE ON FIRST INPUT AFTER INIT, INIT & LOOKUP, OR INIT & LOOKUP & IN\r
+INPUTF:          ANDCAM TAC,@JBUF      ;MARK THAT BUFFERS HAVE BEEN REFERENCED\r
+         HRR TAC,@JBUF         ;PICKUP ADDRESS OF FIRST BUFFERE IN RING\r
+         HRRM TAC,DEVIAD(DEVDAT)               ;SET CURRENT RING BUFFER ADDR\r
+                                               ;IN DEVICE DATA BLOCK\r
+         SKIPN @JBUF           ;HAS A RING BEEN SET UP YET?\r
+         JRST INPUT3           ;NO, GO SET UP A 2 BUFFER RING\r
+         PUSHJ PDP,CALIN       ;YES, GO START TO SERVICE ROUTINE\r
+                                       ;FILLING BUFFER\r
+         JRST INPT0A\r
+INPUT3:          HRRI UUO,2            ;BUFFERS NOT SETUP YET.\r
+                                       ;SET UP 2\r
+         PUSHJ PDP, UINBF\r
+         HLLZS UUO             ;CLEAR RIGHT HALF\r
+         JRST IN1\r
+\r
+INDMP:   PUSHJ PDP,WSYNC\r
+         MOVE TAC,DEVSER(DEVDAT)\r
+         PUSHJ PDP,DDI(TAC)\r
+         PUSHJ PDP,WAIT1\r
+         JRST UXIT\r
+\f\r
+\r
+\r
+\r
+CALIN:   TLNE IOS,IOEND\r
+         POPJ PDP,\r
+         PUSHJ PDP,WSYNC\r
+         PUSH PDP,TAC1\r
+         MOVE TAC,DEVSER(DEVDAT)\r
+         PUSHJ PDP,DIN(TAC)\r
+         POP PDP,TAC1\r
+         POPJ PDP,\r
+\r
+\r
+\f\r
+\r
+,DEC 06 00 EX COM  L PT PRE 03 OUTPUT\r
+,H.R. MORSE    2/21/65\r
+,CALLING SEQUENCE\r
+,      OUTPUT D,\r
+,      EXIT\r
+,OR\r
+,      OUTPUT D, ADR\r
+,      EXIT\r
+\r
+,IF INPUT IS ACTIVE, WAIT FOR IT TO COMPLETE.\r
+,IF DUMP MODE WAS SELECTED BY THE LAST INIT UUO., THEN A CHECK IS MADE\r
+,   TO SEE IF DUMP FILES ARE LEGAL FOR THIS DEVICE.  IF DUMP FILES AR\r
+,   NOT LEGAL. (IORET=0) AN ERROR MESSAGE IS PRINTED ON THE TTY AND\r
+,   CONTROL IS TRANSFERRED T THE COMMAND INPUT ROUTINE.\r
+,   OTHERWISE,THE PROGRAM WAITS UNTIL THE DEVICE IS INACTIVE AND THEN\r
+,   WRITES THE DUMPFILE AND RETURNS CONTROL TO THE USERS PROGRAM\r
+,IF THE MODE IS NOT DUMP, THEN\r
+,1) IF ADR IS NOT ZERO, WAIT FOR DEVICE TO BECOME INACTIVE THEN SET T\r
+,   CURRENT BUFFER ADDRESS EQUAL TO ADR AND AN INDICATOR (JBFADR0)\r
+,   SPECIFYING THAT THIS BUFFER RING HAS NEVER BEEN REFERENCED FROM T\r
+,   USERS PROGRAM BY AN INPUT OR AN OUTPUT UUO.  OTHERWISE, GO TO\r
+,   2) DIRECTLY.\r
+\r
+,2) IF THE BUFFER RING HAS NEVER BEEN REFERENCED (JBFADR0=1), THE\r
+,   BUFFER IS CLEARED. IOUSE SET TO ZERO AND\r
+,      IF THE CURRENT BUFFER ADDRESS IS ZERO, A TWO BUFFER RING IS SE\r
+,      THE GO TO 8\r
+,\r
+,3) IF THE BUFFER RING HAS BEEN REFERENCED (JBFADR0=0   ,THEN A C\r
+,   MADE TO DETERMINE IF THE WORD COUNT IS TO BE COMPUTED.\r
+,      IF THE WORD COUNT IS TO BE COMPUTED (IOWC=0), IT IS SET EQUAL\r
+,      TO THE ADDRESS FOR THE LAST DATA WORD MINUS THE ADDRESS OF THE\r
+,      BUFFER MINUS ONE,\r
+\r
+,4) IOUSE IS SET TO ONE. INDICATING THAT THE BUFFER IS FULL OR BEING\r
+,   EMPTIED, AND THE CURRENT BUFFER ADDRESS IS ADVANCED.\r
+\r
+,5) IF THE DEVICE IS NOT ACTIVE (IOACT=0), OUTPUT IS STARTED.\r
+,6) IF THE CURRENT BUFFER IS FULL OR BEING EMPTIED (IOUSE=1),\r
+,   THE PROGRAM WAITS UNTIL THE DEVICE IS INACTIVE\r
+,7) THE CURRENT BUFFER IS CLEARED.\r
+,8) THE ITEM POINTER IS INITIATED TO THE CURRENT BUFFER ADDRESS+1\r
+,   AND THE ITEM COUNT IS SET TO THE PRODUCT OF THE BUFFER SIZE\r
+,   MINUS ONE AND THE INTEGER PART OF 36/BYTE SIZE.\r
+,9) RETURN TO THE USERS PROGRAM\r
+\f\r
+\r
+,MONITOR INTERFACE\r
+,     STORAGE:  54\r
+,     ROUTINE CALLED:  ADRCK, BUFCLR, CALOUT, INOUT, IOSETC, OUTA,\r
+,                      OUTBUF, UXIT, WSYNC,\r
+,     SYMBOLS SET/USED:\r
+,       ACCUMULATORS:  DEVDAT U        PROG U\r
+,                      IOS U           TAC S/U\r
+,                      ITEM S/U        TAC1 S/U\r
+,                      JBUF S/U        UUO S\r
+,                      PDP U\r
+,      DEVICE DATA BLOCK: DEVBUF U     DEVOAD S\r
+,      IO STATUS WORD: IOACT U\r
+,                      IOWC U\r
+,      JOB BUFFER AREA:        JBADR S/U\r
+,                       JBFCTR S\r
+,                       JBPPTR S/U\r
+,                       BUFFER SIZE U\r
+,                       IOUSE S/U\r
+,                       WORD COUNT S\r
+\f\r
+\r
+\r
+         INTERN OUT\r
+\r
+OUT:     TLNN IOS,IO   ;IS THIS DEVICE ALREADY DOING INPUT?\r
+         PUSHJ PDP,WAIT1       ;YES, WAIT TILL IT BECOMES INACTIVE\r
+         LDB TAC,PUUOAC\r
+         TLO DEVDAT,OUTPB\r
+         HLLM DEVDAT,USRJDA(TAC)\r
+         LDB TAC,PIOMOD\r
+         CAIL TAC,DR\r
+         JRST OUTDMP\r
+         PUSHJ PDP,OUTA\r
+OUT1:    HLR JBUF,DEVBUF(DEVDAT)\r
+         PUSHJ PDP,ADRCK       ;CHECK END OF 3 WORD HEADER\r
+         HRRZI TAC,2(JBUF)\r
+         HRLI JBUF,PROG\r
+         HRLZI TAC, IOUSE\r
+         SKIPG TAC1, @JBUF             ;HAS THIS BUFFER EVER BEEN\r
+                                       ;;REFERENCED?(JBFADR0=0?)\r
+         JRST OUTF\r
+         AOS JBUF\r
+         HRRZ TAC, @JBUF\r
+         ADDI TAC1, 1\r
+         SUB TAC, TAC1\r
+         HRLI TAC1,PROG\r
+         TRNE IOS, IOWC                ;COMPUTE WORD COUNT?(IOWC=0?)\r
+         JRST OUT2\r
+         ADRCHK TAC1           ;PROCEED IF ADDRESS OF WORD COUNT\r
+                                       ;<PROTECTION ADDRESS\r
+         HRRM TAC, @TAC1               ;WORD COUNT:=C(JBFPTR18-35)\r
+                                       ;            -C(JBFPTR18-35)-\r
+OUT2:    SUBI JBUF,1\r
+         SUBI TAC1,1\r
+         HRLZI TAC, IOUSE\r
+         IORB TAC, @TAC1               ;IOUSE:=1\r
+         ADRCHK TAC1\r
+         HRRM TAC,@JBUF                ;ADVANCE CURRENT BUFFER ADDRE\r
+         MOVE IOS,DEVIOS (DEVDAT)\r
+         TRNN IOS,IOACT\r
+         PUSHJ PDP, CALOUT             ;START OUTPUT\r
+         HLR JBUF,DEVBUF(DEVDAT)\r
+         HRLI JBUF,PROG\r
+         MOVE TAC1,@JBUF\r
+         HRLI TAC1,PROG\r
+         SKIPG @TAC1                   ;IOUSE=1?\r
+         PUSHJ PDP, WSYNC              ;WAIT FOR DEVICE TO BECOME IN\r
+         JRST OUTS\r
+\f\r
+\r
+OUTF:    SKIPE TAC1,@JBUF\r
+         JRST OUTF1\r
+         HRRI UUO,2\r
+         PUSHJ PDP,UOUTBF\r
+         HLR JBUF,DEVBUF(DEVDAT)\r
+         HRLI JBUF,PROG\r
+OUTF1:   HRLZI TAC, IOUSE\r
+         ANDCAB TAC, @JBUF             ;IOUSE:=0\r
+         HRRM TAC,DEVOAD(DEVDAT)\r
+OUTS:    HRRZ TAC,@JBUF\r
+         PUSHJ PDP,BUFCLR\r
+         HRR TAC1,@JBUF\r
+         HRLI TAC1,PROG\r
+         LDB ITEM,[POINT 17,@TAC1,17]\r
+         SUBI ITEM,1\r
+         PUSHJ PDP,IOSETC      ;JBFPTR18-35:=CURRENT BUFFER\r
+                               ;ADDRESS+1\r
+                               ;JBFCTR:=(BUFFER SIZE-1)*[36/BYTE\r
+                               ;SIZE]\r
+         JRST UXIT             ;RETURN TO USERS PROGRAM\r
+\r
+OUTDMP:          PUSHJ PDP,WSYNC\r
+         MOVE TAC,DEVSER(DEVDAT)\r
+         PUSHJ PDP,DDO(TAC)\r
+         PUSHJ PDP,WAIT1\r
+         JRST UXIT\r
+\f\r
+\r
+\r
+,DEC 06 00 EX COM L PT PRE 01 OUTA\r
+,H.R. MORSE     64-12-26\r
+\r
+,CALLING SEQUENCE:\r
+,        PUSHJ PDP,OUTA\r
+,        EXIT                  ALWAYS RETURN HERE\r
+,IF THE ADDRESS FIELD OF AC UUO IS ZERO,EXIT. OTHERWISE,CHECK IOACT.\r
+,IF IOACT=1, WIAT FOR IOACT=0.\r
+,SET JBFADR18-35:=ADDRESS FIELD OF AC UUO. JBFADR0:=1 AND EXIT.\r
+\r
+,MONITOR INTERFACE\r
+,        STORAGE:13\r
+,        ROUTINES CALLED:      WSYNC\r
+,        SYMBOLS SET/USED:\r
+,            ACCUMULATORS:     DEVDAT U\r
+,                              IOS U           PROG U\r
+,                              JBUF S/U        TAC S/U\r
+,        DEVICE DATA BLOCK:    DEVIOS U        DEVBUF U\r
+,        IO STATUS WORD:       IOACT U\r
+,        JOB BUFFER AREA:      IOUSE U\r
+,                              JBFADR S\r
+\r
+         INTERN OUTA\r
+OUTA:    TRNN UUO, 777777      ;IS BUFFER ADDRESS SPECIFIED?\r
+         POPJ PDP,             ;NO\r
+         PUSHJ PDP,WAIT1\r
+         HLR JBUF,DEVBUF(DEVDAT)\r
+         HLRI JBUF,PROG\r
+         HRRM UUO,@JBUF\r
+         HRRM UUO,DEVOAD(DEVDAT)\r
+         HRLZI TAC,IOUSE\r
+         ANDCAM TAC,@JBUF\r
+         POPJ PDP,             ;RETURN\r
+\f\r
+\r
+\r
+,DEC 06 00 EX COM L PT PRE 03 CALOUT\r
+,H.R. MORSE     2/21/65\r
+\r
+,CALLING SEQUENCE\r
+,        PUSHJ PDP,CALOUT\r
+,        EXIT\r
+\r
+,DISPATCH TO DEVICE SERVICE ROUTINE DOU TO INITIATE OUTPUT.\r
+\r
+,MONITOR INTERFACE\r
+,        STORAGE:2\r
+,        SYMBOLS SET/USED:\r
+,            ACCUMULATORS:     DEVDAT U\r
+,                              TAC U\r
+,        DEVICE DATA BLOCK:    DEVSER U\r
+\r
+         INTERN CALOUT\r
+CALOUT:          TRNN IOS,IOACT\r
+         JRST CALOU1\r
+         TRNN IOS,IOCON\r
+         POPJ PDP,\r
+         PUSHJ PDP,WSYNC\r
+CALOU1:          MOVE TAC,DEVSER(DEVDAT)\r
+         JRST DOU(TAC)\r
+\f\r
+\r
+\r
+,RELEASE A DEVICE\r
+\r
+INTERNAL RELEA1,RELEA2,RELEA3,RELEA5\r
+\r
+RELEA0:          MOVE IOS,DEVIOS(DEVDAT)       ;CALLED FROM INIT\r
+RELEA2:RELEA3:\r
+RELEA1:          TRZ UUO,-1            ;CLOSE BOTH INPUT AND OUTPUT\r
+         PUSHJ PDP,CLOSE1\r
+         PUSHJ PDP,WAIT1       ;WAIT FOR DEVICE TO BECOME INACTIVE\r
+RELEA5:          MOVE TAC, DEVSER(DEVDAT)      ;RELEASE WITHOUT WAITING\r
+         PUSHJ PDP, DRL (TAC)\r
+         LDB TAC,PUUOAC\r
+         SETZM USRJDA(TAC)\r
+         MOVEI TAC,17          ;IS THE DEVICE ON AONTHER USER CHANNEL?\r
+RELEA4:          HRRZ TAC1,USRJDA(TAC)\r
+         CAIE TAC1,(DEVDAT)\r
+         SOJGE TAC,RELEA4\r
+         JUMPGE TAC,UXIT       ;EXIT IF ON ANOTHER CHANNEL\r
+         MOVEI TAC1,ASSPRG     ;OTHERWISE CLEAR ASSIGNED BY PROG. BIT\r
+         ANDCAB TAC1,DEVMOD(DEVDAT)\r
+         TDNN TAC1,[XWD TTYUSE,ASSCON] ; ASSIGNED BY CONSOLE OR TTY I\r
+         DPB UUO,PJOBN         ;NO. CLEAR JOB NUMBER\r
+         JRST UXIT\r
+\r
+\f\r
+\r
+\r
+,DEC 06 00 EX UUO L PT PRE 01 STATO\r
+,H.R. MORSE    64-12-26\r
+\r
+,CALLING SEQUENCE\r
+,        STATO D,MASK\r
+,        EXIT1                 ALL SELECTED BITS ARE 0\r
+,        EXIT2                 SOME SELECTED BITS ARE 1\r
+,TESTS BITS OF I/O STATUS WORD OF DEVICE ON USERS CHANNEL D WHICH\r
+,ARE SELECTED BY MASK.\r
+\r
+,MONITOR INTERFACE:\r
+,        STORAGE:              3\r
+,        ROUTINES CALLED:      UXIT\r
+,        SYMBOLS SET/USED:\r
+,            ACCUMULATORS:     IOS U\r
+,                              PDP U\r
+,                              UUO U\r
+\r
+         INTERN USTATO\r
+\r
+USTATO:          TRNE IOS,(UUO)        ;SKIP IF ANY INDICATED BITS ARE ONE\r
+         AOS (PDP)\r
+         JRST UXIT\r
+\f\r
+\r
+,DEC 06 00 EX UUO L PT PRE 01 STATUS\r
+,H.R. MORSE   64-12-26\r
+\r
+,CALLING SEQUENCE\r
+,        STATUS D,ADR\r
+,        EXIT                  ALWAYS RETURNS HERE\r
+,STORES I/O STATUS WORD OF DEVICE ON CHANNEL D IN LOCATION ADR.\r
+\r
+,MONITOR INTERFACE\r
+,        STORAGE:              3\r
+,        ROUTINES CALLED:      UXIT\r
+,        SYMBOLS SET/USED:     \r
+,            ACCUMULATORS:     IOS U\r
+,                              PROG U\r
+,                              UUO U\r
+\r
+INTERN USTATS\r
+EXTERNAL ADRERR,USRREL\r
+\r
+USTATS:          MOVE TAC,USRREL               ;CHECK TO SEE IF IN BOUNDS\r
+         CAIG TAC,(UUO)\r
+         PUSHJ PDP,ADRERR\r
+         HRLI UUO,PROG         ;LOAD STATUS INTO INDICATED ADDRESS.\r
+         HRRZM IOS,@UUO\r
+         JRST UXIT\r
+\f\r
+\r
+,CALLING SEQUENCE\r
+,        SETSTS D,BITS\r
+,        EXIT                  ALWAYS RETURN HERE\r
+\r
+INTERNAL USETST\r
+EXTERNAL WAIT1,SETIOS\r
+\r
+USETST:          PUSHJ PDP,WAIT1       ;WAIT TILL DEVICE INACTIVE\r
+         MOVSI IOS, IOBEG\r
+         IORM IOS,DEVIOS(DEVDAT)\r
+         HRRM UUO,DEVIOS(DEVDAT)\r
+         JRST UXIT\r
+\r
+,DEC 06 00 EX UUO L PT PRE 01 STATZ\r
+,H.R. MORSE    64-12-26\r
+\r
+,CALLING SEQUENCE\r
+,        STATZ D,MASK\r
+,        EXIT1                 SOME SELECTED BITS ARE 1\r
+,        EXIT2                 ALL SELECTED BITS ARE 0\r
+\r
+,TESTS BITS OF I/O STATUS WORD OF DEVICE ON USERS\r
+,CHANNEL D WHICH ARE SELECTED BY MASK,\r
+\r
+,MONITOR INTERFACE\r
+,        STORAGE:              3\r
+,        ROUTINES CALLED:      UXIT\r
+,        SYMBOLS SET/USED:\r
+,            ACCUMULATORS:     IOS U\r
+,                              PDP U\r
+,                              UUO U\r
+\r
+         INTERN USTATZ\r
+\r
+USTATZ:          TRNN IOS,(UUO)        ;SKIP IF ALL INDICATED BITS ARE ZERO\r
+         AOS (PDP)\r
+         JRST UXIT\r
+\r
+         END,\r
diff --git a/src/iocss.mac b/src/iocss.mac
new file mode 100644 (file)
index 0000000..d2402cc
--- /dev/null
@@ -0,0 +1,695 @@
+          TITLE IOCSS - IO COMMON SYSTEM SUBROUTINES\r
+          SUBTTL 8-15-65\r
+          EXTERNAL CLOSE1,DEVLST,ERROR,JBTADR\r
+          EXTERNAL JOB,JOBFF,RELEA1,USRJDA,WAIT1,CLDS,CLEN\r
+          EXTERNAL PJOBN,CPOPJ1,PIOMOD,CPOPJ,CPOPJ2\r
+          EXTERNAL SCNOFF,SCNON\r
+\f\r
+\r
+,DEC 06 00 EX COM L PT PRE 01 ADVBFE\r
+,H.R. MORSE        64-12-26\r
+,CALLING SEQUENCE\r
+,        PUSHJ PDP,ADVBFE\r
+,        EXIT1               RETURN IF NEXT BUFFER IS EMPTY\r
+,        EXIT2               RETURN IF NEXT BUFFER IS FULL\r
+,CLEARS THE USE BIT (IOUSE:=0) OF THE BUFFER POINTED TO BY THE\r
+,OUTPUT BUFFER ADDRESS (DEVOAD) OF THE CURRENT DEVICE DATA BLOCK\r
+,AND ADVANCES THE BUFFER ADDRESS TO THE NEXT BUFFER IN THE RING\r
+,UPON RETURN, SKIPS IF THE NEXT BUFFER IS FULL.\r
+,MONITOR INTERFACE\r
+,        STORAGE:  6\r
+,        SYMBOLS SET/USED:\r
+,            ACCUMULATORS:     DEVDAT U\r
+,                              PDP    S/U\r
+,                              TAC    S/U\r
+,            DEVICE DATA BLOCK:         DEVOAD S/U\r
+,            JOB BUFFER HEADER:         IOUSE  S/U\r
+         INTERN ADVBFE\r
+ADVBFE:          ADRCHK DEVOAD(DEVDAT)\r
+         HRLZI TAC,IOUSE;      IOUSE:=0\r
+         ANDCAB TAC,@DEVOAD(DEVDAT)\r
+         HRRM TAC,DEVOAD(DEVDAT); DEVOAD 18-35:=NEXT BUFFER ADDRESS\r
+         SKIPGE @DEVOAD(DEVDAT);       IS IOUSE=0?\r
+         AOS (PDP);                    EXIT2. BUFFER IS FULL\r
+         POPJ PDP,;            EXIT1. BUFFER IS EMPTY\r
+\f\r
+\r
+,DEC 06 00 EX COM L PT PRE 01 ADVBFF\r
+,H.R. MORSE         64-12-26\r
+,CALLING SEQUENCE\r
+,        PUSHJ PDP,ADVBFF\r
+,        EXIT1                 RETURN IF NEXT BUFFER IS FULL\r
+,        EXIT2                 RETURN IF NEXT BUFFER IS EMPTY\r
+,SETS THE USE BIT (IOUSE:=1) OF THE BUFFER POINTED TO BY THE\r
+,INPUT BUFFER ADDRESS (DEVIAD) OF THE CURRENT DEVICE DATA BLOCK\r
+,AND ADVANCES THE BUFFER ADDRESS TO THE NEXT BUFFER IN THE RING.\r
+,UPON RETURN. SKIPS IF THE NEXT BUFFER IS EMPTY,\r
+,MONITOR INTERFACE\r
+,        STORAGE:   6\r
+,        SYMBOLS SET/USED:\r
+,            ACCUMULATORS:             DEVDAT U\r
+,                                      PDP    S/U\r
+,                                      TAC    S/U\r
+,            DEVICE DATA BLOCK:        DEVIAD S/U\r
+,            JOB BUFFER HEADER:        IOUSE  S/U\r
+         INTERN ADVBFF\r
+ADVBFF:          ADRCHK DEVIAD(DEVDAT)\r
+         HRLZI TAC,IOUSE;      IOUSE:=1\r
+         IORB TAC,@DEVIAD(DEVDAT)\r
+         HRRM TAC,DEVIAD(DEVDAT); DEVIAD:=NEXT BUFFER ADDRESS\r
+         SKIPL @DEVIAD(DEVDAT);        IOUSE=1?\r
+         AOS (PDP);            EXIT2. NEXT BUFFER IS EMPTY\r
+         POPJ PDP,;            EXIT1. NEXT BUFFER IS FULL\r
+\f\r
+\r
+\r
+,DEC 06 00 EX COM L PT PRE 01 ASCIA\r
+,C. FRAZIER AND W. SEGAL      64-12-26\r
+,CALLING SEQUENCE\r
+,        PUSHJ PDP,ASCIA\r
+,        EXIT                ALWAYS RETURNS HERE\r
+,ADDS THE ASCII INCREMENT (RIGHT JUSTIFIED) IN AC TAC1 TO THE FIVE\r
+,DIGIT ASCII NUMBER (LEFT JUSTIFIED) IN AC TAC AND LEAVES THE \r
+,RESULT (LEFT JUSTIFIED) IN AC TAC. TAC1 IS RESTORED.\r
+,MONITOR INTERFACE\r
+,        STORAGE:  21\r
+,        SYMBOLS SET/USED:\r
+,            ACCUMULATORS:     PDP  U\r
+,                              TAC  S/U\r
+,                              TAC1 S/U\r
+\f\r
+\r
+;        INTERN ASCIA\r
+;ASCIA:          PUSH PDP,TAC1;        SAVE TAC1 = ASCII INCREMENT (RIGHT JUST\r
+;        AND TAC1,K2;          CLEAR MOST SIGNIFICANT 3 BITS OF\r
+;,                             EACH CHARACTER\r
+;        LSH TAC,-1;           TAC=FIVE DIGIT ASCII NO.(RIGHT JUST.)\r
+;        IOR TAC,K4;           SET SECOND AND THIRD MOST SIGNIFICANT\r
+;,                             BITS OF EACH CHARACTER TO ONES.\r
+;        TLZN TAC,400000\r
+;        ADD TAC,K1\r
+;        ADD TAC1,TAC\r
+;        AND TAC1,K3\r
+;        MOVE TAC,K4\r
+;        AND TAC,TAC1\r
+;        ASH TAC,-3\r
+;        SUBM TAC1,TAC\r
+;        IOR TAC,K4\r
+;        LSH TAC,1\r
+;        TRO TAC,1\r
+;        POP PDP,TAC1;         RESTORE TAC1\r
+;        POPJ PDP,;            RETURN\r
+;K1:     OCT 215064321506;     CHARACTER MASK: 1000110\r
+;K2:     OCT 036170743617;     CHARACTER MASK: 0001111\r
+;K3:     OCT 176773757677;     CHARACTER MASK: 0111111\r
+;K4:     OCT 140603014060;     CHARACTER MASK: 0110000\r
+\f\r
+\r
+         INTERNAL ASSIN,ASSASG\r
+\r
+ASSIN:   PUSHJ PDP,DEVSRC      ;SEARCH FOR DEVICE\r
+         POPJ PDP,             ;DEVICE NOT FOUND\r
+         MOVEI TAC1, ASSPRG    ;DEVICE FOUND, FLAG AS ASSIGNED BY PROG\r
+\r
+;ASSIGN DEVICE IF UNASSIGNED\r
+;CALL:   MOVE ITEM, JOB NUMBER\r
+;        MOVE DEVDAT, ADDR. OF DDB\r
+;        MOVEI TAC1, EITHER ASSPRG OR ASSCON\r
+;        PUSHJ PDP, ASSASG\r
+;        CANT ASSIGN RETURN\r
+;        ASSIGNED RETURN\r
+\r
+ASSASG:          CONO APR,CLDS         ;DISABLE CLOCK\r
+         LDB TAC,PJOBN         ;GET JOB NUMBER IN DEV DATA BLOCK\r
+         CAMN TAC,ITEM         ;IS IT ALREADY ASSIGNED TO THIS JOB\r
+         JRST ASSAS1           ;YES\r
+         MOVEI TAC, ASSPRG+ASSCON      ;NO, IS IT ASSIGNED TO ANOTHE\r
+         CONO PI, SCNOFF       ;TURN SCANNER OFF\r
+         TDNE TAC, DEVMOD(DEVDAT)      ;ARE EITHER ASSIGNED BITS SET\r
+         JRST ASSAS2           ;YES\r
+         IORM TAC1, DEVMOD(DEVDAT)     ;NO, SET ONE OF THEM\r
+         DPB ITEM,PJOBN        ;AND STORE JOB NUMBER\r
+ASSAS1:          AOS (PDP)\r
+ASSAS2:          CONO PI, SCNON        ;TURN SCANNER BACK ON\r
+         CONO APR,CLEN         ;RENABLE CLOCK\r
+         POPJ PDP,\r
+\f\r
+\r
+;ROUTINE TO SEARCH FOR A DEVICE\r
+;CALL:           HRR ITEM,JOB NUMBER\r
+;        MOVE TAC,[SIXBIT .DEVICE NAME.]\r
+;        PUSHJ PDP, DEVSRC\r
+;        NOT FOUND\r
+;        FOUND\r
+\r
+         INTERNAL DEVLG,DEVSRC,DEVPHY\r
+         EXTERNAL SYSTAP,DEVOPR\r
+\r
+DEVSRC:          PUSHJ PDP, DEVLG      ;SEARCH LOGICAL NAMES FIRST\r
+         JRST DEVPHY           ;NOT FOUND, SEARCH PHYSICAL NAMES\r
+         JRST CPOPJ1           ;FOUND\r
+\r
+;SEARCH LOGICAL NAMES\r
+\r
+DEVLG:   HLRZ DEVDAT,DEVLST    ;BEGINNING OF DDB CHAIN\r
+         JUMPE TAC,CPOPJ       ;0 CANNOT BE A LOGICAL NAME\r
+DEVLP0:          CAME TAC,DEVLOG(DEVDAT)       ;COMPARE WITH LOGICAL NAME\r
+         JRST DEV0             ;NO MATCH\r
+         LDB TAC1,PJOBN        ;DOES THE LOGICAL NAME BELONG TO THIS J\r
+         CAMN TAC1,ITEM\r
+         JRST CPOPJ1                   ;YES\r
+DEV0:    HLRZ DEVDAT,DEVSER(DEVDAT)    ;NO, KEEP LOOKING\r
+         JUMPN DEVDAT,DEVLP0\r
+         POPJ PDP,             ;FINISH AND NOT FOUND\r
+\r
+;SEARCH PHYSICAL NAMES\r
+\r
+DEVPHY:          JUMPE TAC,CPOPJ       ;ZERO CANNOT BE A LOGICAL NAME\r
+         CAMN TAC,[SIXBIT  /OPR/] ;IS IT "OPR"?\r
+         MOVE TAC,DEVOPR       ;YES, CHANGE TO OPERATORS TTY\r
+         CAMN TAC,[SIXBIT  /SYS/] ;IS IT "SYS"?\r
+         MOVE TAC,SYSTAP       ;YES, CHANGE TO SYSTEM TAPE NAME\r
+         HLRZ DEVDAT,DEVLST    ;SEARCH DEVICE DATA BLOCKS\r
+DEVLP1:          CAMN TAC,DEVNAM(DEVDAT)\r
+         JRST CPOPJ1           ;FOUND\r
+         HLRZ DEVDAT,DEVSER(DEVDAT)\r
+         JUMPN DEVDAT,DEVLP1\r
+         POPJ PDP, ;NOT FOUND\r
+\f\r
+\r
+,DEC 06 00 EX COM L PT PRE 01 BUFCLC\r
+,H. R. MORSE       64-12-26\r
+,CALLING SEQUENCE\r
+,        PUSHJ PDP,BUFCLC\r
+,        EXIT                  RETURNS HERE IF MEMORY NOT EXCEEDED\r
+, SETS UP AN N BUFFER RING FOLLOWING THE USERS PROGRAM, WHERE N\r
+, IS IN THE ADDRESS FIELD OF AC UUO.\r
+, THE BUFFER RING FORMAT IS AS FOLLOWS:\r
+,        LOCATION  LH   CONTENTS   RH\r
+, C(JOBFF) + 1                     BUFFER              C(JOBFF) +1\r
+,    + 0(BUFFER SIZE+2)             SIZE                    + 1(BUFFER SIZ+2)\r
+, C(JOBFF) +1              BUFFER              C(JOBFF) +1\r
+,    +1(BUFFER SIZE+2)      SIZE                    +  2(BUFFER SIZE+2)\r
+,       .                    .                             .\r
+,       .                    .                             .\r
+,       .                    .                             .\r
+, C(JOBFF) + 1             BUFFER              C(JOBFF) + 1\r
+,    + (N-2)(BUFFER SIZE+2)  SIZE                   +(N-1)(BUFFER SIZE+2)\r
+, C(JOBFF) + 1             BUFFER              C(JOBFF) + 1\r
+,    + (N-1)(BUFFER SIZE+2)  SIZE      \r
+,THEN SET          BUFPNT:=IOUS,C(JOBFF) + 1\r
+, AND              JOBFF:=C(JOBFF) + 1 + N(BUFFER SIZE + 2)\r
+, BUFWRD IS RESTORED.\r
+,MONITOR INTERFACE\r
+,        STORAGE:  20\r
+,        ROUTINES CALLED:   ADRCK\r
+,        SYMBOLS SET/USED:\r
+,            ACCUMULATORS:  BUFPNT S/U         PROG   U\r
+,                           BUFWRD S/U         TAC   S/U\r
+,                           DEVDAT U           TAC1  S/U\r
+,                           PDP    S/U         UUO   U\r
+,        DEVICE DATA BLOCK: DEVCHR U\r
+,        JOB AREA:          JOBFF  S/U\r
+,        JOB BUFFER HEADER: IOUSE  U\r
+\f\r
+\r
+         INTERN BUFCLC\r
+BUFCLC:          PUSH PDP,BUFWRD;      SAVE BUFWRD ON STACK\r
+         LDB TAC,[POINT 12,DEVCHR(DEVDAT),35];TAC:=BUFFER SIZE\r
+         HRRZ BUFPNT,JOBFF(PROG);BUFPNT:=FIRST FREE LOCATION + 1\r
+         ADDI BUFPNT,1\r
+         HRRZ BUFWRD,BUFPNT\r
+         HRLI BUFPNT,PROG\r
+         HRL BUFWRD,TAC;       BUFWRD:=BUFFER SIZE,FIRST FREE LOC + 1\r
+         ADDI TAC,2;           TAC:=BUFFER SIZE + 2\r
+         HRRZ TAC1,UUO;        TAC1:=N=ADDRESS FIELD OF AC UUO\r
+BUFC1:   ADD BUFWRD,TAC;       BUFWRD:=C(BUFWRD) + C(TAC)\r
+         ADRCHK BUFPNT;        CHECK BUFFER FOR MEMORY BOUND\r
+         MOVEM BUFWRD,@BUFPNT; BUFFER HEADER+1:=C(BUFWRD)\r
+         HRR BUFPNT,BUFWRD;    BUFPNT 18-35:=C(BUFWRD 18-35)\r
+         SOJG TAC1,BUFC1;      N:=N-1.  IS N>0?\r
+         HRR BUFWRD,JOBFF(PROG)\r
+         ADDI BUFWRD,1\r
+         PUSHJ PDP,ADRCK       ;CHECK LAST ADR. OF HEADER\r
+         HRRZI TAC,-2(BUFPNT)\r
+         SUB BUFPNT,TAC\r
+         MOVEM BUFWRD,@BUFPNT;LINK LAST BUFFER TO FIRST BUFFER\r
+         ADD BUFPNT,TAC\r
+         HRRM BUFPNT,JOBFF(PROG);JOBFF:=C(JOBFF)+1+N(BUFFER SIZE+2)\r
+         HRR BUFPNT,BUFWRD;    BUFPNT:=IOUSE,ADDRESS OF FIRST BUFFER\r
+,                                       IN RING.\r
+         HRLI BUFPNT,IOUSE\r
+         POP PDP,BUFWRD;       RESTORE BUFWRD FROM STACK.\r
+         POPJ PDP,;            RETURN\r
+\f\r
+\r
+,DEC 06 00 EX COM L PT PRE 01 BUFCLR\r
+,H. R. MORSE       64-12-26\r
+,CALLING SEQUENCE\r
+,        PUSHJ PDP,BUFCLR\r
+,        EXIT                  RETURNS HERE IF MEMORY NOT EXCEEDED\r
+, CLEAR THE WORD COUNT AND DATA AREA OF THE BUFFER WHOSE ADDRESS\r
+, IS IN TAC 18-35.\r
+,MONITOR INTERFACE:\r
+,        STORAGE:  13\r
+,        ROUTINE CALLED:    ADRCK\r
+,        SYMBOLS SET/USED:\r
+,            ACCUMULATORS:  PDP  U             TAC   S/U\r
+,                           PROG U             TAC1  S/U\r
+         INTERN BUFCLR\r
+BUFCLR:          HRLI TAC,PROG\r
+         ADRCHK TAC;           PROCEED IF CURRENT BUFFER ADDRESS\r
+,                                  < PROTECTION ADDRESS.\r
+         HLRZ TAC1,@TAC;       TAC1 18-35=SIZE\r
+         TRZ TAC1,400000\r
+         ADD TAC1,TAC;         TAC1:=CURRENT BUFFER ADDRESS + SIZE\r
+         ADRCHK TAC1;          PROCEED IF CURRENT BUFFER ADDRESS\r
+,                                   + SIZE < PROTECTION ADDRESS.\r
+         MOVEI TAC,@TAC;       TAC:=CURRENT BUFFER ADDRESS+1,\r
+,                                   CURRENT BUFFER ADDRESS+1\r
+         HRL TAC,TAC\r
+         AOBJN TAC,.+1\r
+         CLEARM 0(TAC);        WORD COUNT:=0\r
+         AOS TAC;              TAC:=CURRENT BUFFER ADDRESS+1,\r
+,                                   CURRENT BUFFER ADDRESS+2\r
+         BLT TAC,@TAC1;        CLEAR BUFFER\r
+         POPJ PDP,;            RETURN\r
+\f\r
+         SUBTTL 5-17-65 PART 2\r
+\f\r
+\r
+,CALLING SEQUENCE\r
+,        PUSHJ PDP,CKS12\r
+,        EXIT                  ALWAYS RETURNS HERE\r
+,CALCULATES FOLDED 12 BIT CHECKSUMS OF THE DATA WORDS IN THE\r
+,BUFFER WHOSE ADDRESS IS IN AC TAC1.  TWO ALGORITHMS ARE USED.\r
+,ON RETURN, THE LEFT HALF OF AC TAC CONTAINS A CHECKSUM OBTAINED\r
+,BY ACCUMULATING, IN ONES COMPLEMENT, THE DATA WORDS AND FOLDING IT.\r
+,THE LEFT HALF OF AC DAT CONTAINS A CHECKSUM OBTAINED BY ACCUMULATING\r
+,IN TWOS COMPLEMENT, THE DATA WORDS AND FOLDING IT.  AC TAC1\r
+,CONTAINS A 1.\r
+,MONITOR INTERFACE\r
+,        STORAGE:  20\r
+,        ROUTINES CALLED:   FOLD\r
+,        SYMBOLS SET/USED:\r
+,            ACCUMULATORS:  DAT   S/U          SUB    S\r
+,                           PDP   U            TAC    S/U\r
+,                           PROG  U            TAC1   S/U\r
+\f\r
+\r
+         INTERN CKS12\r
+CKS12:   ADD TAC1,PROG;        TAC1:=-WORD COUNTER,ADDRESS OF FIRST DATA\r
+         AOS TAC1\r
+         HRRZ TAC,0(TAC1)\r
+         MOVNS TAC\r
+         AOS TAC1\r
+         HRL TAC1,TAC\r
+         CLEARM TAC;           INITIALIZE TWOS COMPLEMENT SUM\r
+CKS12A:          ADD TAC,0(TAC1);      TWOS COMPLEMENT ADD\r
+         AOBJN TAC1,CKS12A;    DONE?\r
+FOLD:    LSHC TAC,-30\r
+         LSH TAC1,-14\r
+         ADD TAC,TAC1\r
+         LSHC TAC,-14\r
+         LSH TAC1,-30\r
+         ADD TAC,TAC1\r
+         TRZE TAC,770000\r
+         AOS TAC\r
+         HRLZS TAC\r
+         MOVEI TAC1,1          ;TAC1:=1\r
+         POPJ PDP,\r
+\f\r
+\r
+,DEC 06 00 EX COM L PT PRE 01 CLRBYT\r
+,H. R. MORSE       64-12-26\r
+,CALLING SEQUENCE \r
+,        PUSHJ PDP,CLRBYT\r
+,        EXIT                  ALWAYS RETURN HERE\r
+,CALLED WITH A BYTE POINTER IN AC TAC, IT CLEARS THE REST OF THE\r
+,WORD POINTED TO BY THE BYTE POINTER.\r
+,MONITOR INTERFACE\r
+,        STORAGE:   7\r
+,        SYMBOLS SET/USED:\r
+,            ACCUMULATORS:   PDP    U\r
+,                            TAC    U\r
+,                            TAC1   S/U\r
+         INTERN CLRBYT\r
+CLRBYT:          LDB TAC1,[POINT 6,TAC,5];     TAC1:=P\r
+         DPB TAC1,[POINT 12,TAC,11];   TAC 0-5:=0, TAC 6-12:=P\r
+         SETZM TAC1\r
+         DPB TAC1,TAC;         CLEAR BITS 36-P THROUGH 35\r
+         POPJ PDP,;            RETURN\r
+\f\r
+\r
+;ROUTINE TO RELEASE ALL DEVICES ASSIGNED TO JOB\r
+\r
+INTERNAL IORELS\r
+EXTERNAL PUUOAC,RELEA3\r
+\r
+\r
+IORELS:          MOVEI TAC,RELEA3      ;RELEASE ALL IO DEVICES(DONT CLOSE)\r
+\r
+;ROUTINE TO DO IO FOR ALL DEVICES ASSIGNED TOI JOB\r
+;CALL    MOVEI TAC,ADR. OR IO SUB.\r
+;        PUSHJ PDP,IOALL\r
+\r
+INTERNAL IOALL\r
+\r
+IOALL:   PUSH PDP,TAC          ;SAVE ADR. FO SUB.\r
+         HRLZI DAT, -20\r
+IOALL1:          MOVE DEVDAT, USRJDA(DAT)\r
+         MOVE IOS,DEVIOS(DEVDAT)\r
+         MOVEI UUO,0\r
+         DPB DAT,PUUOAC\r
+         SKIPE DEVDAT\r
+         PUSHJ PDP,@(PDP)      ;CALL THE SUB.\r
+         AOBJN DAT, IOALL1\r
+         POP PDP,TAC\r
+         POPJ PDP,\r
+\r
+;KILL ALL DEVICES(RELEASE WITHOUT WAITING FOR DEVICE INACTIVE)\r
+\r
+INTERNAL IOKILL\r
+EXTERNAL RELEA5\r
+\r
+IOKILL:          MOVEI TAC,RELEA5\r
+         JRST IOALL\r
+\f\r
+\r
+,DEC 06 00 EX COM L PT PRE 01 IOSET\r
+,H. R. MORSE       64-12-26\r
+,CALLING SEQUENCE\r
+,        PUSHJ PDP,IOSET\r
+,        EXIT      ALWAYS RETURNS HERE\r
+,THIS PROGRAM IS CALLED FROM AN INTERRUPT SERVICE ROUTINE.\r
+,IT PUTS THE ADDRESS OF THE DATA AREA OF THE JOB (C(JBTADR18-35))\r
+,CONNECTED TO THE DEVICE SPECIFIED BY AC DEVDAT IN AC PROG AND\r
+,PUTS THE ITEM POINTER (C(DEVCTR)) IN AC ITEM.\r
+,MONITOR INTERFACE\r
+,        STORAGE:   5\r
+,        SYMBOLS SET/USED:\r
+,            ACCUMULATORS:             DEVDAT U   PDP  U\r
+,                                      ITEM   S   PROG S/U\r
+,            DEVICE DATA BLOCK:        DEVCHR U\r
+,                                      DEVCTR U\r
+,            SYSTEM ADDRESSES:         JBTADR U\r
+         INTERN IOSET\r
+\r
+IOSET:   LDB PROG,PJOBN\r
+         MOVE ITEM,DEVCTR(DEVDAT); ITEM:=ITEM POINTER=C(DEVCTR)\r
+         HRRZ PROG,JBTADR(PROG);       PROG:=C(JBTADR 18-35)\r
+         POPJ PDP,;                    RETURN\r
+\f\r
+\r
+,6-CSS-DEC-IOSETC-PL-PRE1\r
+,H.R. MORSE   17-11-64\r
+\r
+,CALLING SEQUENCE\r
+,        PUSHJ PDP,IOSETC\r
+,        EXIT                  ALWAYS RETURN HERE\r
+\r
+,SETS JBFPTR18-35:=C(TAC1 18-35)\r
+,        JBFCTR:=C(ITEM)*[WORD LENGTH/BYTE SIZE]\r
+,WHERE   WORD LENGTH:=36 DECIMAL\r
+,        BYTE SIZE:=C(JBFPTR6-11)\r
+,        [X]:= INTEGER PART OF X\r
+\r
+,MONITOR INTERFACE\r
+,        STORAGE:   11\r
+,        ROUTINES CALLED:      ITMCT1\r
+,        SYMBOLS SET/USED:\r
+,            ACCUMULATORS:     JBUF S/U        TAC S/U\r
+,                              ITEM S/U        TAC1 S/U\r
+,                              PDP U\r
+\r
+         INTERN IOSETC\r
+\r
+IOSETC:          ADDI JBUF,1                   ;JBFPTR12-18:=0\r
+         HRLZI TAC,7777        ;JBFPTR18-35:=C(TAC1 18-35)+1\r
+         ANDM TAC,@JBUF\r
+         HRRM TAC1,@JBUF\r
+         AOS @JBUF\r
+         LDB TAC1,[POINT 6,@JBUF,11]   ;TAC1:=BYTE SIZE\r
+         PUSHJ PDP,ITMCT1      ;JBFCTR:=C(ITEM)*[36/BYTE SIZE]\r
+         ADDI JBUF+1\r
+         MOVEM ITEM,@JBUF\r
+         POPJ PDP,             ;EXIT\r
+\f\r
+\r
+,DEC 06 00 EX COM L PT PRE 01 ITMSET, ITMCNT, ITMCT1\r
+,H.R. MORSE   64-12-26\r
+\r
+,CALLING SEQUENCE\r
+,        PUSHJ PDP,ITMSET\r
+,        EXIT                  ALWAYS RETURNS HERE\r
+,SETS AC ITEM:=(BUFFER SIZE-1)*[WORD LENGTH/BYTE SIZE]\r
+,WHERE BUFFER SIZE:=BITS 1-17 OF THE BUFFER HEADER WORD POINTED TO\r
+,                  BY C(DEVADR)\r
+,       WORD LENGTH:=36 DECIMAL\r
+,       BYTE SIZE:=INTEGER PART OF X.\r
+\r
+,CALLING SEQUENCE\r
+,        PUSHJ PDP,ITMCNT\r
+,        EXIT                  ALWAYS RETURNS HERE\r
+,SETS AC ITEM=C(ITEM)*[WORD LENGTH/BYTE SIZE]\r
+\r
+,CALLING SEQUENCE\r
+,        PUSHJ PDP,ITMCT1\r
+,        EXIT                  ALWAYS RETURNS HERE\r
+,SETS AC ITEM:=C(ITEM)*[WORD LENGTH/C(TAC1)]\r
+\r
+,MONITOR INTERFACE\r
+,        STOAGE:   7\r
+,        SYMBOLS SET/USED:\r
+,            ACCUMULATORS:     DEVDAT U   TAC S/U\r
+,                              ITEM S/U   TAC1 S/U\r
+,                              PDP U\r
+,        DEVICE DATA BLOCK:    DEVADR U\r
+,                              DEVPTR U\r
+\f\r
+\r
+         INTERN ITMSET,ITMCNT,ITMCT1\r
+ITMSET:          LDB ITEM,[POINT 17,@DEVADR(DEVDAT),17];ITEM:=BUFFER SIZE-1\r
+         SUBI ITEM,1\r
+ITMCNT:          LDB TAC1,[POINT 6,DEVPTR(DEVDAT),11];TAC1:=BYTE SIZE\r
+ITMCT1:          MOVEI TAC,44          ;ITEM:=C(ITEM)*[WORD LENGTH/C(TAC1)]\r
+         IDIV TAC,TAC1\r
+         IMUL ITEM,TAC\r
+         POPJ PDP,\r
+\f\r
+\r
+;ROUTINE TO SET DEVICE STATUS WORD FROM UUO\r
+\r
+INTERNAL SETIOS\r
+EXTERNAL ILLMOD\r
+\r
+SETIOS:          LDB TAC,[POINT 4,UUO,35]      ;GET DEVICE DATA MODE\r
+         MOVEI TAC,1           ;AND CHECK FOR LEGALITY\r
+         LSH TAC,(TAC1)\r
+         TDNN TAC,DEVMOD(DEVDAT)\r
+         JRST ILLMOD           ;ILLEGAL MODE\r
+         TRZ UUO,IOACT         ;LET USER SET ALL BITS EXCEPT IOACT\r
+         HRRM UUO,DEVIOS(DEVDAT)\r
+         POPJ PDP,\r
+\f\r
+\r
+,DEC 06 00 EX COM L PT PRE 01 NEWBUF, BPNSET\r
+,H. R. MORSE       64-12-26\r
+,CALLING SEQUENCE\r
+,        PUSHJ PDP,NEWBUF\r
+,        EXIT                  ALWAYS RETURNS HERE\r
+,CLEARS THE BUFFERE CURRENTLY POINTED TO BY THE INPUT BUFFER\r
+,ADDRESS (DEVDR) OF THE CURRENT DEVICE. SETS UP THE BYTE\r
+,POINTER (DEVPTR), AND THE ITEM COUNT (DEVCTR) AND RETURNS.\r
+,CALLING SEQUENCE\r
+,        PUSHJ PDP,BPNSET\r
+,        EXIT                  ALWAYS RETURNS HERE\r
+,SETS UP THE BYTE POINTER (DEVPTR) AND THE ITEM COUNT (DEVCTR)\r
+,OF THE CURRENT DEVICE AND RETURNS.\r
+,MONITOR INTERFACE\r
+,        STORAGE:  10\r
+,        ROUTINES CALLED:      BUFCLR, ITMSET\r
+,        SYMBOLS SET/USED:     \r
+,            ACCUMULATORS:     DEVDAT U        PDP U\r
+,                              ITEM   U        TAC S/U\r
+,            DEVICE DATA BLOCKS:       DEVADR U\r
+,                              DEVCTR S\r
+,                              DEVPTR S/U\r
+\f\r
+         INTERN BPNSET,NEWBUF\r
+\r
+NEWBUF:          HRRZ TAC,DEVADR(DEVDAT); TAC:=INPUT BUFFER HEADER ADDRESS\r
+         PUSHJ PDP,BUFCLR;     CLEAR INPUT BUFFER.\r
+BPNSET:          HRR TAC,DEVADR(DEVDAT)\r
+         HRLZI TAC,7737\r
+         AND TAC,DEVPTR(DEVDAT); DEVPTR 0-5:=0, DEVPTR 12:=0\r
+         HRR TAC,DEVADR(DEVDAT); DEVPTR 10-35:=C(DEVADR 18-35) + 1\r
+         AOS TAC\r
+         MOVEM TAC,DEVPTR(DEVDAT)\r
+         PUSHJ PDP,ITMSET;     ITEM:=(BUFFER SIZE-1)[36/BYTE SIZE]\r
+         MOVEM ITEM,DEVCTR(DEVDAT); DEVCTR:=ITEM COUNT\r
+         POPJ PDP,;            RETURN\r
+\f\r
+\r
+,DEC 06 00 EX COM L PT PRE 02 SETBYT\r
+,H. R. MORSE       64-12-26\r
+,CALLING SEQUENCE\r
+,        PUSHJ PDP,SETBYT\r
+,        EXIT                  ALWAYS RETURN HERE\r
+,SETS    TAC 0-5:=0\r
+,        TAC 6-11:=S\r
+,        TAC 12-13:=0\r
+,        TAC 14-17:=PROG\r
+,WHERE S=35 IF DATA MODE (IOS 32-25) IS BINARY (B)\r
+,      S=8  IF DATA MODE IS IMAGE (I)\r
+,      S=7  IF DATA MODE IS   ASCII PACKED (A)\r
+,                            ASCII LINE (AL)\r
+,                            ASCII SEQUENCED (AS)\r
+,                            ASCII SEQUENCED (ASL)\r
+,                  OR        ALTERNATE MODE BREAK (AM)\r
+,MONITOR INTERFACE\r
+,        STORAGE:   12\r
+,        SYMBOLS SET/USED:\r
+,            ACCUMULATORS:     PROG  U                 TAC   S\r
+,                              PDP   U                 TAC1  S/U\r
+,            DEVICE DATA BLOCK:          DEVIOS U\r
+         INTERN SETBYT\r
+SETBYT:          MOVE TAC1,DEVIOS(DEVDAT);     FETCH DATA MODE, BITS 32-35 0\r
+         ANDI TAC1, 17\r
+         CAIE TAC1,IB          ;DATA MODE IMAGE BINARY?\r
+         CAIN TAC1,B;          IS DATA MODE=BINARY?\r
+         HRLI TAC,4400+PROG;   SET BYTE SIZE TO 36.\r
+         CAIN TAC1,I;          IS DATA MODE=IMAGE?\r
+         JRST SETBY1\r
+         TRNE TAC1,14;         IS DATA MODE=ASCII PACKED,ASCII LINE,\r
+         JRST .+2;             ASCII SEQUENCED,OR ASCII SEQUENCED LINE\r
+         HRLI TAC,700+PROG;    SET BYTE SIZE TO 7.\r
+         POPJ PDP,;            RETURN\r
+\r
+SETBY1:          HLLZ TAC,DEVMOD(DEVDAT)\r
+         TLZ TAC,770077\r
+         TLO TAC,PROG\r
+         POPJ PDP,\r
+\f\r
+\r
+,DEC 06 00 EX COM L PT PRE 01 STORE ITEM\r
+,H.R. MORSE        64-12-26\r
+,CALLING SEQUENCE\r
+,        PUSHJ PDP,STODAT\r
+,        EXIT1                 CHECKSUM ERROR\r
+,        EXIT2                 BLOCK FULL OR BLOCK COMPLETE\r
+,        EXIT3                 DATA STORED CORRECTLY\r
+,CALLED FROM AN INPUT SERVICE ROUTINE WITH A DATA ITEM IN AC DAT.\r
+,STORES THE DATA ITEM IN THE BUFFER, CHECKING TO SEE IF IT WERE\r
+,THE FIRST ITEM ON THE BUFFER AND SETTING UP THE POINTER AND\r
+,WORD COUNT APPROPRIATELY CHECKING THE MODE TO SEE IF ANY SPECIAL\r
+,PROCESSING NEED BE DONE.  FOR EXAMPLE, GENERATION OF SEQUENCE\r
+,NUMBERS PRECEDING EACH LINE IN SEQUENCE MODE, OR THE TERMINATION\r
+,OF A BUFFER ON CERTAIN CHARACTERS IN OTHER MODES, OR IF THE BUFFER\r
+,RETURN OCCURS ON AN ERROR CONDITION. THE SECOND RETURN OCCURS\r
+,ON A BLOCK FULL CONDITION OR BLOCK COMPLETE CONDITION, THE THIRD\r
+,RETURN OCCURS ON THE DATA STORED CORRECTLY CONDITION.  THIS\r
+,ROUTINE ALSO DOES SOME CHECKING ON INPUT OF BINARY RECORD,\r
+,PAPER TAPE OR CARDS.\r
+,CALLING SEQUENCE\r
+,        PUSHJ PDP,STOSQD\r
+,        XXXX                  ALWAYS SKIPS\r
+,        EXIT                  ALWAYS RETURNS HERE\r
+,STORES THE WORD COUNT:=C(DEVPTR 18-35) -C(DEVIAD 18-35) - 1\r
+,IN THE BUFFER.\r
+,MONITOR INTERFACE\r
+,        STORAGE:  69\r
+,        ROUTINES CALLED: ASCIA, CKS12, ITMSET, NEWBUF\r
+,        SYMBOLS SET/USED:\r
+,            ACCUMULATORS:             DAT    U  PDP  U\r
+,                                      DEVDAT U  TAC S/U\r
+,                                      IOS    S/U         TAC1 S/U\r
+,                                      ITEM   S/U\r
+,            DEVICE DATA BLOCK:        DEVCTR U  DEVPTR S/\r
+,                                      DEVIAD U  DEVSEQ S/\r
+,            IO STATUS WORD: A     U             I      U\r
+,                                      AS   U             IOBKTL S\r
+,                                      ASL  U             IODTER S\r
+,                                      B    U             IOFST  S/\r
+,            JOB BUFFER AREA:          WORD COUNT S\r
+\f\r
+         INTERN STODAT, STOSQD\r
+\r
+STODAT:          TLNE IOS,IOFST;       WILL THE NEXT ITEM BE THE FIRST ITEM\r
+,                                 OF A BUFFER?\r
+         PUSHJ PDP,NEWBUF;     SET UP A NEW BUFFER. ITEM:=(BUFFER\r
+,                                 SIZE - 1)*[36/BYTE SIZE]\r
+         LDB TAC1,PIOMOD;      TAC1:=DATA MODE\r
+         CAIN TAC1,B;          MODE=BINARY?\r
+         JRST STOBIN\r
+         TLZ IOS,IOFST\r
+STO1:    DPBI DAT,DEVPTR(DEVDAT); STORE DATA IN BUFFER.\r
+         CAIE TAC1,A;          MODE=ASCII,  IMAGE, OR BINARY?\r
+         CAIN TAC1,I\r
+         JRST STOAIB\r
+         CAIN TAC1,B\r
+         JRST STOAIB\r
+         CAIG DAT,214          ;LINE FEED,FORM FEED, OR VERTICAL TAB?\r
+         CAIGE DAT,212\r
+         JRST .+2  ;NO\r
+         JRST STOSQD           ;YES\r
+         SOJGE ITEM,CPOPJ2;    ITEM:=C(ITEM)-1. IS C(ITEM)>OR=0?\r
+STOE1:   TRO IOS,IOBKTL                ;IOBKTL:=1\r
+         JRST CPOPJ\r
+STOAIB:          SOJG ITEM,CPOPJ2;     ITEM:=C(ITEM)-1. IS C(ITEM)>0?\r
+         CAIN TAC1,A;          MODE=ASCII?\r
+         JRST STOSQD\r
+         CAIN TAC1,B;          MODE=BINARY?\r
+         JRST STOBND\r
+STOI:    PUSHJ PDP,ITMSET;     ITEM:=(BUFFER SIZE-1)*[36/BYTE SIZE]\r
+,                                     - C(DEVCTR)\r
+         SUB ITEM,DEVCTR(DEVDAT)\r
+         HRRZ TAC1,DEVIAD(DEVDAT)      ;STORE ITEM COUNT INSTEAD OF\r
+         ADDI ITEM,1           ;IN FIRST WORD OF BUFFER\r
+         AOJA TAC1,STOSQE\r
+\f\r
+STOSQD:          MOVE TAC1,DEVIAD(DEVDAT); TAC1:=ADDRESS OF WORD COUNT\r
+         AOS TAC1\r
+         HRRZ ITEM,DEVPTR(DEVDAT); ITEM:=C(DEVPTR 18-25) -\r
+,                                    C(DEVIAD 18-35) -1\r
+         SUB ITEM,TAC1\r
+STOSQE:          HRRM ITEM,@TAC1       ;WORD COUNT TO FIRST WORD IN BUFFER\r
+         JRST CPOPJ1;          EXIT2. BLOCK COMPLETE\r
+STOBIN:          TLZN IOS,IOFST;       WILL THE NEXT ITEM BE THE FIRST ITEM\r
+         JRST STO1;               OF A BUFFER?  IOSFST:=0\r
+         HRRZ TAC,DAT\r
+         CAMLE TAC,ITEM;       IS WORD COUNT <OR= (BUFFER SIZE-1)*\r
+         JRST STOE1;              [36/BYTE SIZE]?\r
+         MOVE ITEM,TAC;        ITEM:=WORD COUNT\r
+         MOVEM DAT,@DEVPTR(DEVDAT); STORE WORD COUNT IN BUFFER\r
+         JRST CPOPJ2;          EXIT3.  DATA STORED CORRECTLY.\r
+STOBND:          HRRZ TAC1,DEVIAD(DEVDAT)\r
+         PUSHJ PDP,CKS12;      COMPUTE CHECKSUM\r
+         ADD TAC1, DEVIAD(DEVDAT)\r
+         HLLZ TAC1,@TAC1;      DATA CHECKSUM=COMPUTED CHECKSUM?\r
+         CAMN TAC,TAC1\r
+         JRST CPOPJ1;          EXIT2. BLOCK COMPLETE\r
+         TRO IOS,IODTER;       IODTER:=1\r
+         JRST CPOPJ;           EXIT1. CHECKSUM ERROR\r
+\f\r
+\r
+,DEC 06 00 EX COM L PT PRE 01 UINTQ\r
+,H.R. MORSE  64-12-26\r
+,CALLING SEQUENCE\r
+,        PUSHJ PDP, UINT1\r
+,        EXIT                  ALWAYS RETURNS HERE\r
+,TAC:=CONTENTYS OF WORD FOLLOWING UUO CALL\r
+,FROM USERS AREA.\r
+,MONITOR INTERFACE\r
+,        STORAGE: 4\r
+,        SYMBOLS SET/USED:\r
+,           ACCUMULATORS:   PDP U      TAC S/U\r
+,                           PROG U     \r
+             INTERN UINTQ\r
+UINTQ:       MOVE TAC, -1(PDP)                 ;TAC:=ADDRESS FOLLOWING UUO C\r
+             HRLI TAC, PROG                    ;RELOCATE ADDRESS\r
+             MOVE TAC, @TAC                    ;TAC:=CONTENTS OF WORD FOLLOW\r
+                                               ;UUO CALL FROM USERS AREA\r
+             POPJ PDP,                         ;RETURN\r
+\r
+             END,\r
diff --git a/src/ioini.mac b/src/ioini.mac
new file mode 100644 (file)
index 0000000..dc25546
--- /dev/null
@@ -0,0 +1,36 @@
+;SOME MACROS FOR DEFINING CONFIGURATION\r
+\r
+DEFINE NAME (A)\r
+<DEFINE NAME1\r
+<CONFIG:  ASCIZ /A/\r
+INTERNAL CONFIG\r
+>\r
+XP A,0\r
+SUBTTL A CONFIGURATION\r
+>\r
+\r
+DEFINE DATE (A)\r
+<DEFINE DATE1\r
+<SYSDAT:  ASCIZ /A/\r
+INTERNAL SYSDAT\r
+>>\r
+\r
+DEFINE VERSION (A,B)\r
+<DEFINE VERS1\r
+<SYSNUM:  XWD ^D'A,^D'B\r
+XP SYSMOD,^D'A\r
+XP SYSVER,^D'B\r
+INTERNAL SYSNUM\r
+>>\r
+\r
+DEFINE CUSPTAPE (A)\r
+<DEFINE CUSP1\r
+<SYSTAP:  SIXBIT /A/\r
+INTERNAL SYSTAP\r
+>>\r
+\r
+DEFINE ACPDL (J,CHJN,CHJPDN)\r
+<        CH'J'N=CHJN\r
+ CH'J'PDN=CHJPDN\r
+>\r
+\f\r
diff --git a/src/ioini1.mac b/src/ioini1.mac
new file mode 100644 (file)
index 0000000..bf94a13
--- /dev/null
@@ -0,0 +1,242 @@
+         TITLE IOINI1 - IO INITIALIZATION PART 1\r
+         NAME1\r
+         DATE1\r
+         VERS1\r
+         CUSP1\r
+\r
+;CONFIGURATION INDEPENDANT PART OF IOINIT FOLLOWS:\r
+\r
+EXTERNAL ERROR\r
+\r
+;SETUP CHANNEL SAVE AND RESTORE ROUTINES\r
+\r
+CHANU1=0\r
+CHANU2=0\r
+CHANU3=0\r
+CHANU4=0\r
+CHANU5=0\r
+CHANU6=0\r
+CHANU7=0\r
+DEFINE ASSOC(A,NO,D)\r
+<IFE CHANU'NO,<\r
+CHANU'NO=1\r
+INTERNAL CH'NO'SAV,CH'NO',CH'NO'XIT,CH'NO'SAC\r
+\r
+CH'NO'SAV: 0\r
+  MOVEM CH'NO'N, CH'NO'SAC+CH'NO'N\r
+  MOVEI CH'NO'N, CH'NO'SAC\r
+  BLT CH'NO'N,CH'NO'SAC+CH'NO'N-1      ;DO ONLY ONCE FOR EACH CHANNEL\r
+  MOVE PDP, CH'NO'CJ\r
+  JRST @CH'NO'SAV\r
+\r
+CH'NO'SAC: REPEAT CH'NO'N+1,<EXP 0>    ;SPACE TO SAVE SOME AC'S\r
+         EXP CH'NO'XIT         ;FIRST ENTRY IN PD LIST(CHAN. EXIT)\r
+         REPEAT CH'NO'PDN-1,<EXP 0>    ;REST OF PD LIST\r
+\r
+CH'NO'XIT: MOVSI CH'NO'N, CH'NO'SAC\r
+ BLT CH'NO'N, CH'NO'N\r
+ JEN @CH'NO\r
+\r
+CH'NO'CJ: XWD -CH'NO'PDN+1,CH'NO'SAC+CH'NO'N+1 ;INIT. SETTING OF P\r
+\r
+CH'NO':          0             ;PC STORED HERE BY JSR\r
+ JRST .+1 ;INSTR. AT END OF SERVICE CHAIN\r
+ AOS CH'NO'ERR         ;SPURIOUS INTERRUPT, ADD TO COUNT\r
+ JEN @CH'NO            ;AND DISMISS\r
+>\r
+>\r
+;GENERATE THE SAVE AND RESTORE ROUTINES\r
+\r
+         SYSTEM\r
+\r
+;SET UP NULL CHANNEL ROUTINES FOR UNUSED CHANNELS\r
+\r
+DEFINE NULCHN(J)\r
+<\r
+INTERNAL CH'J,CH'J'XIT\r
+CH'J:    0\r
+CH'J'XIT: AOS CH'J'ERR\r
+ JEN @CH'J\r
+>\r
+\r
+         IFE CHANU1,<NULCHN(1)>\r
+         IFE CHANU2,<NULCHN(2)>\r
+         IFE CHANU3,<NULCHN(3)>\r
+         IFE CHANU4,<NULCHN(4)>\r
+         IFE CHANU5,<NULCHN(5)>\r
+         IFE CHANU6,<NULCHN(6)>\r
+         IFE CHANU7,<NULCHN(7)>\r
+\f\r
+\r
+;ASSIGN DEVICE TO CHANNELS AND SETUP CORESPONDENCE TABLE\r
+;OF CHANNELS TO SERVICE ROUTINES\r
+\r
+DEFINE ASSOC (A,N,D)\r
+<        A'RET=CH'N'XIT\r
+ A'SAV=CH'N'SAV\r
+ A'SAC=CH'N'SAC\r
+ A'CHL=CH'N\r
+ A'CHN=N\r
+ A'BIT=1\r
+ REPEAT 7-N,<A'BIT=A'BIT*2>\r
+ A'OFF=1000+A'BIT      ;CONO PI, A'OFF WIL TURN CHANNEL OFF\r
+ A'ON=2000+A'BIT       ;TURN BACK ON\r
+ A'ACT=4000+A'BIT      ;FORCE INTERRUPT ON CHAN.\r
+INTERN A'RET, A'SAV, A'CHL, A'CHN, A'SAC\r
+INTERNAL A'OFF,A'ON,A'ACT,A'BIT\r
+ XWD A'CHL,A'INT\r
+ EXTERNAL A'INT\r
+>\r
+\r
+INTERNAL DEVINT\r
+DEVINT:          SYSTEM\r
+NDEV=.-DEVINT          ;NO. OF DEVICE INTERUPT SERVICE ROUTINES\r
+NDEVM1=NDEV-1          ;(USED BY ONCE)\r
+INTERNAL NDEVM1\r
+\f\r
+\r
+;INITIALIZE SOME IO DEVICES\r
+;IOINI CALLED BY A PUSHJ PDP, FROM SYSINI AT SYSTEM INITIALIZATION\r
+\r
+DEFINE IOINIT (A)\r
+<IRP A\r
+<        EXTERNAL A'INI\r
+ PUSHJ PDP,A'INI\r
+>>\r
+\r
+DEFINE ASSOC (A,B,C)\r
+<        IFIDN <A><MTC>,< IOINIT MTC>\r
+ IFIDN <A><DTC>,< IOINIT DTC>\r
+ IFIDN <A><LPT>,< IOINIT LPT>\r
+ IFIDN <A><SCN>,< IOINIT SCN>\r
+ IFIDN <A><PTP>,<IOINIT PTP>\r
+ IFIDN <A><PTR>,<IOINIT PTR>\r
+>\r
+\r
+INTERNAL IOINI\r
+\r
+IOINI: SYSTEM\r
+       JRST CLKINI             ;ALWAYS INIT. CLOCK\r
+\r
+EXTERNAL CLKINI\r
+\f\r
+\r
+;CLOCK CONTROL PARAMETERS\r
+\r
+         CLDS=4000+APRCHN      ;CLOCK DISABLE\r
+         CLEN=200+APRCHN       ;CLOCK ENABLE\r
+\r
+         INTERNAL CLDS,CLEN\r
+\r
+;BYTE POINTERS\r
+\r
+PUUOAC:          POINT 4,UUO,12        ;UUO AC FIELD\r
+PIOMOD:          POINT 4,IOS,35        ;MODE BITS\r
+PJOBN:   POINT 9,DEVCHR(DEVDAT),8      ;DEVICE JOB ASSIGNMENT\r
+PJDCHN:          POINT 4,DEVCHR(DEVDAT),17     ;JOB DEVICE CHANNEL NO.\r
+PUNIT:   POINT 6,DEVCHR(DEVDAT),23     ;DEVICE UNIT NO.\r
+\r
+INTERNAL PUUOAC,PIOMOD,PJOBN,PJDCHN,PUNIT\r
+\r
+;COMMON SUBROUTINE RETURNS\r
+\r
+CPOPJ2:          AOS (PDP)\r
+CPOPJ1:          AOS (PDP)\r
+CPOPJ:   POPJ PDP,\r
+\r
+INTERNAL CPOPJ,CPOPJ1,CPOPJ2\r
+\f\r
+,SYSTEM DATA STORAGE\r
+\r
+\r
+INTERNAL JOB,JOBADR,JBTADR,JBTSTS,USRREL,USRINF,USRJDA\r
+INTERNAL USRPDP,JOBDAT,USRDDT,USRSAV,USRUXT,USRLO,USRHI\r
+INTERNAL COMCNT,IOCOMP,USRPOV,STOPU,SCHEDF,TIME,JBTAD1\r
+INTERNAL MTAVAL,DCAVAL,DTAVAL,MTREQ,DCREQ,DTREQ,TTYTAB,CORTAB\r
+INTERNAL CH1ERR,CH2ERR,CH3ERR,CH4ERR,CH5ERR,CH6ERR,CH7ERR\r
+INTERNAL CORLST,CORTAB,CORTAL,SYSEND,SYSBEG,DEVOPR\r
+\r
+JOBN=0 ;DEFINE NO. OF JOBS (0 THRU JOBN-1)\r
+;THERE MUST BE MORE TTY DEVICE DATA BLCKS THAN JOBS.\r
+\r
+DEFINE ASSOC (A,N,D)\r
+<IRP D,<IFIDN <A><SCN>,<JOBN=JOBN+1>>>\r
+         SYSTEM\r
+MJOBN=-JOBN\r
+INTERNAL JOBN,MJOBN\r
+\r
+SYSBEG:          ;FIRST LOC IN SYSTEM DATA AREA\r
+XP SYSBG1,SYSBEG+1     ;FIRST LOC+1\r
+JOB:     0             ;CURRENT JOB NUMBER EXCEPT WEN SCHEDF IS NON-ZERO\r
+JOBADR:          0             ;CONTAINS ADDRESS OF JOB CURRENTLY RUNNING\r
+JOBDAT:          0             ;CONTAINS ADDRESS OF JOB DATA AREA\r
+\r
+JBTADR:          BLOCK JOBN            ;C(LH)=PROTECT, C(RH)=RELOCATION\r
+XP JBTAD1,JBTADR+1   ;ADDRESS OF JOB 1(USED BY SYSMAK)\r
+JBTSTS:          BLOCK JOBN            ;CONTAINS STATUS INFORMATION FOR EACH J\r
+\r
+USRPDP:   0        ;USER PUSH DOWN POINTER\r
+USRREL:          0         ;LH=0, RH CONTAINS CONTENTS OF PROTECTION REGISTER\r
+USRLO:   ;FIRST LOC CLEARD BY SETUSR SUBROUTINE\r
+USRUXT:          0         ;UNUSED,  JOBUXT USED TO SAVE UUO PC(UUO0)\r
+USRLEV:          0         ;UNUSED,  JOBLEV USED TO SAVE LOC. 40\r
+USRSAV:          0         ;TEMPORARY STORAGE FOR UUO HANDLER\r
+USRPOV:          0         ;PUSH DOWN OVERFLOW TRAP\r
+         BLOCK 2\r
+USRINF:          0         ;UN LAYED OUT USER INFORMATION\r
+USRJDA:          BLOCK 20  ;RH=JOB DEVICE ASSIGNMENTS FOR THIS USER,LH=UUOS\r
+XP USRHI,.-1       ;LAST LOC CLEARED BY SETUSR ROUTINE\r
+XP USRPFI,.-1      ;LAST LOC PROTECTED FROM IO SERVICE\r
+XP USRPFU,.        ;LAST LOC PROTECTED FROM USER PROGRAM\r
+USRDDT:          0         ;STARTING ADDR OF USER DDT\r
+\r
+;DEVICE JUSTR BECOME AVAILABLE FLAGS\r
+MTAVAL:          0          ;MAGNETIC TAPE\r
+DCAVAL:          0          ;DATA CONTROL\r
+DTAVAL:          0          ;DECTAPE\r
+\r
+;NUMBER OF JOBS WAITING FOR DEVICES(-1=NONE, 0=1 USING, 1=1 USING)\r
+MTREQ:   -1        ;MAGNETIC TAPE\r
+DCREQ:   -1        ;DATA CONTROL\r
+DTREQ:   -1        ;DECTAPE\r
+IOCOMP:          0         ;NUMBER OF USERS IN IO WAIT STATE\r
+COMCNT:          0         ;NUMBER OF COMMANDS TYPED-IN BUT NOT DECODED\r
+STOPU:   0         ;NON-ZERO WHEN CLOCK INTERRUPT FORCED TO STOP USER\r
+SCHEDF:          0         ;NON-ZERO WHEN CLOCK ROUTINE IS SCHEDULING\r
+\r
+CH1ERR:          0         ;SPURIOUS INTERRUPT COUNTS FOR EACH CHANNEL\r
+CH2ERR:          0\r
+CH3ERR:          0\r
+CH4ERR:          0\r
+CH5ERR:          0\r
+CH6ERR:          0\r
+CH7ERR:          0\r
+\r
+          USRLO1=USRLO+1\r
+          INTERNAL USRLO1\r
+\f\r
+TIME:    0             ;TIME SYSTEM HAS RUN IN 60THS OF A SECOND\r
+\r
+\r
+XP TTYLEN,SCNLIN+1   ;LENGTH OF TTY TRANSLATOR TABLES(INCLUDING CTY)\r
+TTYTAB:          BLOCK TTYLEN          ;TTY TRANSLATOR TABLE\r
+                               ;SIGN BIT = 1 IF COMMAND JUST TYPED\r
+                               ;BITS 1 -9, JOB CONSOLE IS ATTACHED TO\r
+                               ;BITS 18-35, THE DEVICE DATA BLOCK FOR\r
+DEVOPR:          0             ;SIXBIT PHYSICAL NAME OF OPERATORS\r
+                       ;CONSOLE SET BY SCNSER TO FIRST ACTIVE TTY.\r
+;LOCATIONS FOR CORE ALLOCATION\r
+XP CORBLK,^D256                 ;NO. OF 1K BLOCKS POSSIBLE\r
+CORTAB:          BLOCK <CORBLK>/^D36+1         ;1K BLOCK USE BIT TABLE\r
+                               ;A 1 MEANS BLOCK IS IN USE\r
+CORLST:          0             ;1 BIT BYTE POINTER TO LAST FREE BLOCK POSSIBLE\r
+CORTAL:          0             ;TOTAL NO. OF FREE CORE BLOCKS LEFT\r
+;CORLST AND CORTAL ARE SET UP AT SYSTEM INITIALIZATION\r
+\r
+SYSEND=.-1             ;LAST LOC. CLEARED BY SYSINI\r
+\r
+INTERNAL SYSSIZ\r
+EXTERNAL SYSFIN\r
+SYSSIZ:          EXP SYSFIN            ;SIZE OF MONITOR(LAST LOC. USED)\r
+\f\r
+         END,\r
diff --git a/src/ioini2.mac b/src/ioini2.mac
new file mode 100644 (file)
index 0000000..6fb218f
--- /dev/null
@@ -0,0 +1,255 @@
+       TITLE IOINI2 - IO INITIALIZATION PART 2\r
+\r
+;DEFINITIONS OF DEVCHN AND DEVBIT\r
+;THESE ALSO OCCUR IN IOINT1\r
+\r
+DEFINE ASSOC (A,N,D)\r
+<\r
+  A'CHN=N\r
+>\r
+\r
+         SYSTEM\r
+\r
+\f\r
+\r
+;APR PIP BITS\r
+\r
+APRBIT=1\r
+REPEAT 7-APRCHN,<APRBIT=APRBIT*2>\r
+XP PION,200            ;CONO PI,PION TURNS PI SYSTEM ON\r
+XP PIOFF,400           ;TURN IT OFF\r
+XP PICLK,PION+1B24+APRBIT      ;TURN PI ON, AND FORCE CLOCK INT.\r
+XP CLKOFF,1000+APRCHN          ;CONO APR,CLKOFF TURNS CLOCK FLAG OFF\r
+\f\r
+\r
+;ASSEMBLE ALL DEVICE DATA BLOCKS AND LINK THEM TOGETHER\r
+\r
+DEFINE SCNDDB (A,B,C)\r
+<        INTERNAL C'DB\r
+C'DB:    ZZ=.\r
+ SIXBIT /C/\r
+ XWD A'CHN*PICHN,STTYBF+1      ;LONG ENOUGH FOR PRINTING\r
+               ;SEQUENCE CARD IMAGE.\r
+               ;USER BUFFERS ARE 2 WORDS\r
+               ;LONGER THEN THE MONITORY TTY BUFFERS.\r
+ 0\r
+EXTERNAL  TTYDSP\r
+ XWD C,TTYDSP\r
+ XWD DVTTY+DVIN+DVOUT,3\r
+ 0\r
+ 0\r
+ XWD PROG,0\r
+ XWD PROG,0\r
+ XP TTYPTR,.-ZZ\r
+ 0\r
+ XP TTYCTR,.-ZZ\r
+ 0\r
+ XP TTYSAV,.-ZZ\r
+ 0\r
+ XP TTYBUF,.-ZZ\r
+ XP TTYBM1,TTYBUF-1\r
+XP STTYBF,20\r
+XP STTYB1,STTYBF+1     ;LENGTH+1\r
+ BLOCK STTYBF\r
+XP TTYBFE,.-ZZ-1\r
+\r
+;LINE NO. PARAMETERS\r
+XP TTYLEN,SCNLIN+1  ;LENGTH OF TTY TRANSLATOR TABLE(INCLUDE TTY)\r
+XP TSCNLN,SCNLIN-1  ;HIGHEST TTY LINE NO.(NOT COUNTING CTY)\r
+XP TCONLN,TSCNLN+1  ;CTY LINE NUMBER\r
+XP MTTYLN,-TTYLEN   ;NEGATIVEL LENGTH OF TRANSLATOR TABLE\r
+XP FSNCHN,SCNCHN*101 ;CHANNEL ASSIGNED, FOR FULL DUPLEX SCN.\r
+ XP TTYLST,TTY0DB    ;FIRST TTY DEVICE DATA BLOCK\r
+ >\r
+\r
+;NEG. NO. OF TELTYPE DEVICE DATA BLOCKS\r
+\r
+MLTTYL=0\r
+DEFINE ASSOC (A,N,D)\r
+<IRP D,<IFIDN <A>,<SCN>,<MLTTYL=MLTTYL-1>>>\r
+\r
+         SYSTEM\r
+\r
+INTERNAL MLTTYL\r
+\f\r
+\r
+;MAG TAPE DEVICE DATA BLOCK\r
+\r
+MTCNUM=0\r
+\r
+DEFINE MTCDDB (A,B,C)\r
+<        INTERNAL C'DB\r
+C'DB:    SIXBIT /C/\r
+MTCNUM=MTCNUM+1\r
+ XWD IORET+A'CHN*PICHN,<MTCNUM-1>*10000+201\r
+\r
+ 0\r
+ XWD C,MTDISP\r
+EXTERNAL MTDISP\r
+ XWD 4400+DVMTA+DVIN+DVOUT,154403\r
+ 0\r
+ 0\r
+ XWD PROG,0\r
+ XWD PROG,0\r
+>\r
+\f\r
+;DECTAPE DEVICE DATA BLOCK\r
+\r
+DTCNUM=0\r
+\r
+DEFINE DTCDDB (A,B,C)\r
+<        INTERNAL C'DB\r
+C'DB:    ZZ=.\r
+ SIXBIT /C/\r
+DTCNUM=DTCNUM+1\r
+ XWD IORET+A'CHN*PICHN,<DTCNUM-1>*10000+201\r
+ 0\r
+ XWD C,UTDSP\r
+EXTERNAL UTDSP\r
+ XWD 4400+DVDIR+DVIN+DVOUT,154403\r
+ 0\r
+ 0\r
+ 0\r
+ 0\r
+XP UFREE,.-ZZ  ;NEXT FREE BLOCK NO.\r
+ 0\r
+ XP UDIR,.-ZZ  ;LINK TO DIRECTORY IN DATA BLOCK\r
+ IFE DTSIZ,<   EXP DIRBUF\r
+>\r
+IFN DTSIZ,<    EXP DTDIR+200*<DTCNUM-1>\r
+>\r
+>\r
+\r
+\f\r
+\r
+;LINE PRINTER DEVICE DTA BLOCK\r
+\r
+DEFINE LPTDDB (A,B,C)\r
+<INTERNAL LPTDB,LPTDAT,LPTCHR,LPTIOS,LPTSER,LPTMOD\r
+INTERNAL LPTBUF,LPTPTR,LPTADR,LPTSV1\r
+EXTERNAL LPTDSP\r
+\r
+LPTDB:\r
+LPTDAT:          SIXBIT /LPT/\r
+LPTCHR:          XWD A'CHN*PICHN,32\r
+LPTIOS:          0\r
+LPTSER:          XWD C,LPTDSP\r
+LPTMOD:          XWD 0+DVOUT,3\r
+ 0\r
+LPTBUF:          0\r
+LPTPTR:          0\r
+LPTADR:          XWD PROG,0\r
+LPTSV1:          0\r
+\r
+XP LPTCLB,LPTCHN+200  ;PI CHANNEL AND BUSY FLAG\r
+XP LPTCHB,11*LPTCHN ;LINE PRINTER ERROR AND DATA CHANNELS\r
+>\r
+\f\r
+\r
+;CARD READER DEVICE DATA BLOCK\r
+\r
+DEFINE CDRDDB (A,B,C)\r
+<INTERNAL CDRDB,CDRDAT,CRDIS\r
+EXTERNAL CDRDSP\r
+\r
+CDRDB:\r
+CDRDAT:          SIXBIT /CDR/\r
+ XWD A'CHN*PICHN,34 ;LONG ENOUGHT FOR BINARY CARDS\r
+ 0\r
+ XWD C,CDRDSP\r
+ XWD DVCDR+1400+DVIN,14403\r
+ 0\r
+ 0\r
+ XWD PROG,0\r
+ 0\r
+ 0\r
+CRDIS:   JRST .\r
+>\r
+\f\r
+\r
+;PAPER TAPE READER DEVICE DATA BLOCK\r
+\r
+DEFINE PTRDDB (A,B,C)\r
+<INTERNAL PTRDB,PTRDAT,PTRCHR,PTRIOS,PTRSER\r
+INTERNAL PTRMOD,PTRBUF,PTRADR,PTRPTR,PTRCTR,PTRSVC,PTRSV1\r
+EXTERNAL PTRDSP\r
+\r
+PTRDB:\r
+PTRDAT:          SIXBIT /PTR/\r
+PTRCHR:          XWD A'CHN*PICHN,41\r
+PTRIOS:          0\r
+PTRSER:          XWD C,PTRDSP\r
+PTRMOD:          XWD 1000+DVIN,14403\r
+ 0\r
+PTRBUF:          0\r
+PTRADR:          XWD PROG,0\r
+PTRPTR:          0\r
+PTRCTR:          0\r
+PTRSVC:          0\r
+PTRSV1:          0\r
+>\r
+\f\r
+\r
+;PAPER TAPE PUNCH DEVICE DATA BLOCK\r
+\r
+DEFINE PTPDDB (A,B,C)\r
+<INTERNAL PTPDB,PTPDAT,PTPCHR,PTPIOS,PTPSER,PTPMOD,PTPBUF\r
+INTERNAL PTPPTR,PTPADR,PTPCTR,PTPCNT,PTPCHA,PTPSIO\r
+EXTERNAL PTPDSP\r
+\r
+PTPDB:\r
+PTPDAT:          SIXBIT /PTP/\r
+PTPCHR:          XWD A'CHN*PICHN,41\r
+PTPIOS:          0\r
+PTPSER:          XWD C,PTPDSP\r
+PTPMOD:          XWD 1000+DVOUT,14403\r
+ 0\r
+PTPBUF:          0\r
+PTPPTR:          0\r
+PTPADR:          XWD PROG,0\r
+PTPCTR:          0\r
+PTPCNT:          0\r
+PTPCHA:          0\r
+PTPSIO:          0\r
+>\r
+\f\r
+\r
+;GENERATE DEVICE DATA BLOCKS NEEDED FOR THIS CONFIGURATION\r
+\r
+DEFINE ASSOC (A,B,C)\r
+<\r
+IRP C,<\r
+         ;DEFINE FORWARD LINL SYMBOL\r
+ LINK\r
+;\r
+;\r
+;\r
+ A'DDB A,B,C\r
+\r
+C=0      ;SET LINK TO 0(IN CASE THIS IS LAST DDB)\r
+DEFINE LINK\r
+<C=.>\r
+>\r
+>\r
+\r
+INTERNAL DEVLST\r
+\r
+DEVLST:          XWD FIRDB,0           ;BEGINNING OF DEVICE DATA BLOCK CHAIN\r
+\r
+DEFINE LINK\r
+<FIRDB=.>\r
+\r
+         SYSTEM\r
+\f\r
+\r
+         LIT\r
+\r
+         IFE DTSIZ,<           DIRBUF: BLOCK 200\r
+ INTERNAL DIRBUF\r
+>\r
+\r
+IFN DTSIZ,<DTDIR:      BLOCK DTCNUM*200\r
+INTERNAL DTDIR\r
+>\r
+\r
+         END,\r
diff --git a/src/iomax.mac b/src/iomax.mac
new file mode 100644 (file)
index 0000000..0f11d00
--- /dev/null
@@ -0,0 +1,43 @@
+NAME <MAXIMAL>
+\f
+       DATE <8-16-65>
+       VERSION 1,4
+       CUSPTAPE DTA0
+
+;DEFINE THE IO PART OF THE SYSTEM
+;THAT IS:
+;        DEFINE INTERRUPT SERVICE ROTUINE TO BE USED
+;      ASSIGN DEVICES TO PI CHANNELS
+
+DEFINE SYSTEM
+ <
+ ASSOC APR,6,<>
+ ASSOC CTY,3,<>
+ ASSOC SCN,3,<TTY0,TTY1>
+ ASSOC DTC,4,<DTA0>
+ ASSOC DTC,4,<DTA1>
+ ASSOC DTC,4,<DTA2>
+ ASSOC DTC,4,<DTA3>
+ ASSOC MTC,2,<MTA0>
+ ASSOC MTC,2,<MTA1>
+ ASSOC MTC,2,<MTA2>
+ ASSOC MTC,2,<MTA3>
+ ASSOC LPT,5,<LPT>
+ ASSOC PTP,5,<PTP>
+ ASSOC PTR,5,<PTR>
+ ASSOC CDR,5,<CDR>
+>
+
+DTSIZ=1          ;MULTIPLE DECTAPE DIRECTORIES
+
+SCNLIN=1
+
+;DEFINE HIGHEST AC TO SAVE AND LENGTH OF PD LIST FOR EACH PI CHANNEL
+
+ACPDL (1,0,0)
+ACPDL (2,11,20)
+ACPDL (3,11,20)
+ACPDL (4,11,20)
+ACPDL (5,11,20)
+ACPDL (6,17,20
+ACPDL (7,0,0)
diff --git a/src/iomin.mac b/src/iomin.mac
new file mode 100644 (file)
index 0000000..a2a46aa
--- /dev/null
@@ -0,0 +1,32 @@
+NAME <MINIMAL>\r
+\f\r
+       DATE <8-16-65>\r
+       VERSION 1,4\r
+       CUSPTAPE DTA0\r
+\r
+;DEFINE THE IO PART OF THE SYSTEM\r
+;THAT IS:\r
+;        DEFINE INTERRUPT SERVICE ROTUINE TO BE USED\r
+;      ASSIGN DEVICES TO PI CHANNELS\r
+\r
+DEFINE SYSTEM\r
+ <\r
+ ASSOC APR,6,<>\r
+ ASSOC CTY,3,<>\r
+ ASSOC SCN,3,<TTY0,TTY1>\r
+ ASSOC DTC,4,<DTA0>\r
+>\r
+\r
+DTSIZ=1          ;MULTIPLE DECTAPE DIRECTORIES\r
+\r
+SCNLIN=1\r
+\r
+;DEFINE HIGHEST AC TO SAVE AND LENGTH OF PD LIST FOR EACH PI CHANNEL\r
+\r
+ACPDL (1,0,0)\r
+ACPDL (2,0,0)\r
+ACPDL (3,11,20)\r
+ACPDL (4,11,20)\r
+ACPDL (5,0,0)\r
+ACPDL (6,17,20\r
+ACPDL (7,0,0)\r
diff --git a/src/jobdat.mac b/src/jobdat.mac
new file mode 100644 (file)
index 0000000..ff60b6d
--- /dev/null
@@ -0,0 +1,50 @@
+TITLE JOBDAT - JOB DATA AREA ASSIGNMENTS\r
+\r
+         DEFINE BLK (A,B)\r
+<JOBPRO=B\r
+A=0\r
+ENTRY A\r
+DEFINE BLK (C,D)\r
+<C=JOBPRO\r
+JOBPRO=JOBPRO+D\r
+ENTRY C>>\r
+\r
+         BLK JOBAC,20          ;SYSTEM USE AC STORAGE\r
+         BLK JOBDAC,20         ;USER'S AC STORAGE WHILE JOB IS INACTIV\r
+JOBDHI=JOBDAT+17    ;HIGHEST AC SAVED WHILE INACTIVE\r
+         BLK JOBUUO,1          ;UUO SAVE AND TRAP LOCATIONS\r
+         BLK JOB41,1           ;UUO JSR LOCATION\r
+         BLK JOBPC,1           ;BITS 0-5=APR FLAGS, C(RH)=PC\r
+         BLK JOBPDP,1          ;PUSH DOWN POINTER FOR SYSTEM USE\r
+JOBPRT=JOBPDP                  ;FIRST LOC PROTECTED FROM ITNERRUPT SER\r
+JOBPR1=JOBPRT+1                        ;FIRST LOC+1\r
+         BLK JOBREL,1          ;C(LH)=0, C(RH)=RELOCATION ADDRESS\r
+         BLK JOBUXT,1          ;EXIT FROM UUO AT BREAK\r
+         BLK JOBLEV,1          ;C(40) WHEN INACTIVE\r
+         BLK JOBSAV,1          ;TEMPOARY STORAGE FOR UOO HANDLER\r
+         BLK JOBPOV,1          ;PUSH DOWN OVERFLOW TRAP\r
+         BLK JOBTEM,1          ;(UNUSED)TEMPORARY SYSTEM STORAGE\r
+         BLK JOBTM1,1          ;"\r
+         BLK JOBINF,1          ;UNUSED\r
+         BLK JOBJDA,20         ;JOB IO DEVICE CHANNEL ASSIGNMENTS\r
+         BLK JOBDDT,1          ;ADDRESS OF USER'S DDT\r
+JOBPFI=JOBDDT-1                        ;LAST LOC PROTECTED FROM IO SERVICE\r
+JOBPFU=JOBDDT                  ;LAST LOC PROTECTED FROM USER\r
+         BLK JOBCDP,1          ;(UNUSED)POINTER TO COMMAND STRING\r
+         BLK JOBTRP,20         ;(UNUSED)TRAP LOCATIONS\r
+         BLK JOBSYM,1          ;SYMBOL TABLE POINTER\r
+         BLK JOBUSY,1          ;(UNUSED)POINTER TO UNDEFINED SYMBOL TA\r
+         BLK JOBSA,1           ;C(RH)=STARTING ADDRESS\r
+                               ;C(LH)=HIGHEST LOCATION USED\r
+         BLK JOBFF,1           ;FIRST FREE LOCATION\r
+JOBDAT=140         ;LENGTH OF JOB DATA AREA\r
+JOBHGH=JOBDAT-1                        ;HIGHEST LOC IN JOB DATA AREA\r
+JOBPDL=JOBPRO-1                        ;FIRST LOC. -1 OF PD LIST\r
+JOBPD1=JOBPDL+1                        ;FIRST LOC. IN PD LIST\r
+MJOBPD=JOBPDL-JOBHGH           ;- LENGTH OF PD LIST\r
+JOBS41=JOBPRO                  ;PLACE WHERE SAVE-GET SAVES USER LOC 4\r
+JOBDA=JOBDAT\r
+ENTRY JOBPFI,JOBPFU,JOBPDL,JOBPRO,MJOBPD,JOBHGH\r
+ENTRY JOBDHI,JOBPRT,JOBPR1,JOBDA,JOBS41,JOBPD1\r
+\r
+         END,\r
diff --git a/src/loader.1 b/src/loader.1
new file mode 100644 (file)
index 0000000..f123276
--- /dev/null
@@ -0,0 +1,2385 @@
+       SUBTTL  DICK GRUEN: V25 3 AUG 68\r
+\r
+\r
+;K=1                   ;K=1  MEANS 1KLOADER\r
+IFNDEF K,<K=0>         ;K=0  MEANS F4 LOADER\r
+\r
+;RPGSW=1               ;MEANS RPG FEATURE\r
+IFNDEF RPGSW,<RPGSW=0>\r
+;LDAC=1                        ;MEANS LOAD CODE INTO ACS\r
+IFNDEF LDAC,<LDAC=0>\r
+\r
+;BLTSYM=1              ;MOVE SYMBOL TABLE DOWN TO END OF PROG\r
+IFNDEF BLTSYM,<BLTSYM=0>\r
+\r
+;EXPAND=1              ;FOR AUTOMATIC CORE EXPANSION\r
+IFNDEF EXPAND,<        IFN K,<EXPAND=0>\r
+               IFE K,<EXPAND=1>>\r
+\r
+;PP=1                  ;ALLOW PROJ-PROG #\r
+IFNDEF PP,<PP=0>\r
+\r
+;CHN5=0                        ;IF CHAIN WHICH DOESN'T SAVES JOB41\r
+IFNDEF CHN5,<CHN5=1>\r
+\r
+IFE K,<        TITLE   LOADER - LOADS MACROX AND SIXTRAN FOUR>\r
+IFN K,<        TITLE   1KLOAD - LOADS MACROX>\r
+\f;ACCUMULATOR ASSIGNMENTS\r
+       F=0             ;FLAGS IN LH, SA IN RH\r
+       N=1             ;PROGRAM NAME POINTER\r
+       X=2             ;LOADER OFFSET\r
+       H=3             ;HIGHEST LOC LOADED\r
+       S=4             ;UNDEFINED POINTER\r
+       R=5             ;RELOCATION CONSTANT\r
+       B=6             ;SYMBOL TABLE POINTER\r
+       D=7\r
+       T=10\r
+       V=T+1\r
+       W=12            ;VALUE\r
+       C=W+1           ;SYMBOL\r
+       E=C+1           ;DATA WORD COUNTER\r
+       Q=15            ;RELOCATION BITS\r
+       A=Q+1           ;SYMBOL SEARCH POINTER\r
+       P=17            ;PUSHDOWN POINTER\r
+;FLAGS F(0 - 17)\r
+       CSW==1                  ;ON - COLON SEEN\r
+       ESW==2                  ;ON - EXPLICIT EXTENSION IDENT.\r
+       SKIPSW==4               ;ON - DO NOT LOAD THIS PROGRAM\r
+       FSW==10                 ;ON - SCAN FORCED TO COMPLETION\r
+       FCONSW==20              ;ON - FORCE CONSOLE OUTPUT\r
+       ASW==100                ;ON - LEFT ARROW ILLEGAL\r
+       FULLSW==200             ;ON - STORAGE EXCEEDED\r
+       SLIBSW==400             ;ON - LIB SEARCH IN THIS PROG\r
+       DSYMSW==1000            ;ON - LOAD WITH SYMBOLS FOR DDT\r
+       REWSW==2000             ;ON - REWIND AFTER INIT\r
+       LIBSW==4000             ;ON - LIBRARY SEARCH MODE\r
+       F4LIB==10000            ;ON - F4 LIBRARY SEARCH LOOKUP\r
+       ISW==20000              ;ON - DO NOT PERFORM INIT\r
+       SYMSW==40000            ;ON - LOAD LOCAL SYMBOLS\r
+       DSW==100000             ;ON - CHAR IN IDENTIFIER\r
+       NSW==200000             ;ON - SUPPRESS LIBRARY SEARCH\r
+       SSW==400000             ;ON - SWITCH MODE\r
+;FLAGS N(0 - 17)\r
+       ALLFLG==1               ;ON - LIST ALL GLOBALS\r
+       ISAFLG==2               ;ON - IGNORE STARTING ADDRESSES\r
+       COMFLG==4               ;ON - SIZE OF COMMON SET\r
+IFE K,<        F4SW==10                ;F4 IN PROGRESS\r
+       RCF==20                 ;READ DATA COUNT\r
+       SYDAT==40               ;SYMBOL IN DATA>\r
+       SLASH==100              ;SLASH SEEN\r
+IFE K,<        BLKD1==200              ;ON- FIRST BLOCK DATA SEEN\r
+       PGM1==400               ;ON FIRST F4 PROG SEEN\r
+       DZER==1000              ;ON - ZERO SECOND DATA WORD>\r
+       EXEQSW==2000            ;IMMEDIATE EXECUTION\r
+       DDSW==4000              ;GO TO DDT\r
+IFN RPGSW,<RPGF==10000         ;IN RPG MODE>\r
+       AUXSWI==20000           ;ON - AUX. DEVICE INITIALIZED\r
+       AUXSWE==40000           ;ON - AUX. DEVICE ENTERED\r
+IFN PP,<PPSW==100000           ;ON - READING PROJ-PROG #\r
+       PPCSW==200000           ;ON - READING PROJ #>\r
+\fLOC   137\r
+OCT 25         ;VERSION #\r
+RELOC\r
+       MLON\r
+       SALL\r
+\r
+\r
+\r
+;MONITOR LOCATIONS IN THE USER AREA\r
+\r
+       JOBPRO==140             ;PROGRAM ORIGIN\r
+       JOBBLT==134             ;BLT ORIGIN\r
+       JOBCHN==131             ;RH = PROG BREAK OF FIRST BLOCK DATA\r
+                               ;LH = PROG BREAK OF FIRST F4 PROG\r
+\r
+;CALLI DEFINITIONS\r
+\r
+CDDTOUT==3     ;CALLI DDTOUT\r
+CEXIT==12      ;CALLI EXIT\r
+CDDTGT==5      ;CALLI DDTGT\r
+CSETDDT==2     ;CALLI SETDDT\r
+\r
+;LENGTH OF PUSHDOWN LIST FOR POLISH FIXUPS\r
+\r
+PPDL==60\r
+\fIFN RPGSW,<\r
+RPGSET:        CALLI 0\r
+       INIT 17,1       ;SET UP DSK\r
+       SIXBIT /DSK/\r
+       XWD 0,CTLIN\r
+       JRST NUTS\r
+       MOVE [SIXBIT /QQLOAD/]  ;NAME OF COMMAND FILE\r
+       MOVEM CTLNAM\r
+       MOVSI (SIXBIT /RPG/)    ;AND EXT\r
+       MOVEM CTLNAM+1\r
+       SETZM CTLNAM+3\r
+       LOOKUP 17,CTLNAM        ;THERE?\r
+       JRST NUTS       ;NO\r
+       INIT 16,16      ;GET SET TO DELETE QQLOAD.RPG\r
+       SIXBIT /DSK/\r
+       0\r
+       JRST LD         ;GIVE UP COMPLETELY\r
+       SETZM CTLNAM+3\r
+       HLLZS CTLNAM+1  ;CLEAR OUT EXTRA JUNK\r
+       LOOKUP 16,CTLNAM\r
+       JRST LD\r
+       RENAME 16,ZEROS ;DELETE IT\r
+       JFCL            ;IGNORE IF IT WILL NOT GO\r
+       RELEASE 16,0    ;GET RID OF THIS DEVICE\r
+       SETZM NONLOD    ;THIS IS NOT A CONTINUATION\r
+RPGS3: MOVEI CTLBUF\r
+       MOVEM JOBFF     ;SET UP BUFFER\r
+       INBUF 17,1\r
+       MOVEI [ASCIZ /\r
+LOADING\r
+/]             ;PRINT MESSAGE THAT WE ARE STARTING\r
+       CALLI CDDTOUT\r
+       SKIPE NONLOD    ;CONTINUATION?\r
+       JRST RPGS2      ;YES, SPECIAL SETUP\r
+       MOVSI R,F.I     ;NOW SO WE CAN SET FLAG\r
+       BLT R,R\r
+       TLO N,RPGF\r
+       JRST CTLSET     ;SET UP TTY\r
+RPGS1: PUSHJ P,[TLNE F,ESW     ;HERE FROM FOO* COMMAND, STORE NAME\r
+               JRST LDDT3      ;SAVE EXTENSION\r
+               TLZE F,CSW!DSW   ;OR AS NAME\r
+               MOVEM W,DTIN\r
+               POPJ P,]\r
+       MOVEM 0,SVRPG#  ;SAVE 0 JUST IN CASE\r
+       SETZM NONLOD#   ;DETERMINE IF CONTINUATION\r
+       MOVEI 0,2(B)    ;BY SEEING IF ANY SYMBOLS LOADED\r
+       CAME 0,JOBREL\r
+       SETOM NONLOD    ;SET TO -1 AND SKIP CALLI\r
+       MOVE 0,ILD1\r
+       MOVEM 0,RPG1\r
+       INIT 17,1\r
+RPG1:  0\r
+       XWD 0,CTLIN\r
+       JSP A,ILD5\r
+       LOOKUP 17,DTIN  ;THE FILE NAME\r
+       JRST ILD9\r
+       JRST RPGS3\r
+\r
+RPGS2: MOVSI 0,RPGF    ;SET FLAG\r
+       IORM 0,F.C+N\r
+       TLO N,RPGF\r
+       MOVE 0,SVRPG\r
+       JRST LD2Q       ;BACK TO INPUT SCANNING\r
+>\r
+\f\r
+;MONITOR LOADER CONTROL\r
+\r
+BEG:\r
+LD:    IFN RPGSW,<SKIPA        ;NORMAL INITIALIZE\r
+       JRST RPGSET     ;SPECIAL INIT>\r
+       HLLZS 42        ;GET RID OF ERROR COUNT IF NOT IN RPG MODE\r
+       CALLI   0               ;INITIALIZE THIS JOB\r
+NUTS:  MOVSI     R,F.I         ;SET UP INITIAL ACCUMULATORS\r
+       BLT     R,R             \r
+CTLSET:        INIT    3,1             ;INITIALIZE CONSOLE\r
+       SIXBIT    /TTY/\r
+       XWD     BUFO,BUFI\r
+CALLEX:        CALLI   CEXIT           ;DEVICE ERROR, FATAL TO JOB\r
+       MOVEI     E,TTY1\r
+       MOVEM     E,JOBFF\r
+       INBUF     3,1\r
+       OUTBUF    3,1           ;INITIALIZE OUTPUT BUFFERS\r
+       OUTPUT    3,                    ;DO INITIAL REDUNDANT OUTPUT\r
+       HRRZ    B,JOBREL        ;PICK UP CORE BOUND\r
+       SKIPE   JOBDDT          ;DOES DDT EXIST?\r
+       HRRZ    B,JOBSYM        ;USED BOTTOM OF SYMBOL TABLE INSTEAD\r
+       SUB     B,SE3           ;INITIALIZE SYMBOL TABLE POINTER\r
+       CAILE     H,1(B)                ;TEST CORE ALLOCATION\r
+       CALLI   CEXIT           ;INSUFFICIENT CORE, FATAL TO JOB\r
+       MOVS    E,X             ;SET UP BLT POINTER\r
+       HRRI    E,1(X)\r
+       SETZM     -1(E)                 ;ZERO FIRST WORD\r
+       BLT     E,(B)           ;ZERO CORE UP TO THE SYMBOL AREA\r
+       HRRZ    S,B             ;INITIALIZE UNDEF. POINTER\r
+       HRR     N,B             ;INITIALIZE PROGRAM NAME POINTER\r
+       HRRI    R,JOBPRO        ;INITIALIZE THE LOAD ORIGIN\r
+       MOVE    E,COMM          ;SET .COMM. AS THE FIRST PROGRAM\r
+       MOVEM     E,1(B)                ;STORE IN SYMBOL TABLE\r
+       HRRZM     R,2(B)                ;STORE COMMON ORIGIN\r
+       MOVEI     E,F.C         ;INITIALIZE STATE OF THE LOADER\r
+       BLT     E,B.C\r
+       SETZM   MDG             ;MULTIPLY DEFINED GLOBAL COUNT\r
+       MOVSI   W,254200        ;STORE HALT IN JOB41\r
+       MOVEM   W,JOB41(X)      ;...\r
+IFN LDAC!BLTSYM,<MOVEI W,20    ;SET UP SPACE TO SAVE FOR ACS AND\r
+       MOVEM W,KORSP#  ;USER DEFINITIONS WITH DDT>\r
+\r
+\f\r
+IFN RPGSW,<JRST LD2Q>\r
+LD2:   IFN RPGSW,<MOVSI B,RPGF ;HERE ON ERRORS, TURN OFF RPG\r
+       ANDCAM B,F.C+N  ;IN CORE>\r
+;LOADER SCAN FOR FILE NAMES\r
+\r
+LD2Q:  MOVSI     B,F.C         ;RESTORE ACCUMULATORS\r
+       BLT     B,B\r
+       MOVE    P,PDLPT         ;INITIALIZE PUSHDOWN LIST\r
+       SETZM     BUFI2         ;CLEAR INPUT BUFFER POINTER\r
+IFE PP,<       SETZM     ILD1          ;CLEAR INPUT DEVICE NAME>\r
+IFN PP,<       MOVSI T,(SIXBIT /DSK/)  ;ASSUME DSK\r
+       MOVEM T,ILD1\r
+       SETZM OLDDEV#   ;TO MAKE IT GO BACK AFTER /D FOR LIBSR>\r
+       SETZM     DTIN          ;CLEAR INPUT FILE NAME\r
+IFN PP,<SETZM  PPN#            ;CLEAR INPUT PROJ-PROG #>\r
+\r
+LD2B:  RELEAS    1,                    ;RELEASE BINARY INPUT DEVICE\r
+IFN RPGSW,<    TLNE N,RPGF     ;NOT IF DOING RPG\r
+       JRST LD2BA>\r
+       MOVEI     T,"*"\r
+       IDPB    T,BUFO1         ;OUTPUT ASTERISK TO START INPUT\r
+       OUTPUT    3,\r
+LD2BA: TLZ     F,FULLSW+ASW+ISW+CSW+ESW+SKIPSW+SLIBSW+REWSW\r
+       TLNE    F,LIBSW         ;WAS LIBRARY MODE ON?\r
+       TLO     F,SKIPSW        ;YES, NORMAL MODE IS SKIPPING\r
+\r
+LD2D:  IFN PP,<SETZM PPN       ;DO NOT REMEMBER PPNS FOR NOW\r
+LD2DB: SKIPE W,OLDDEV  ;RESET DEVICE IF NEEDED\r
+       CAMN W,ILD1     ;IS IT SAME?\r
+       JRST LD2DA      ;YES, FORGET IT\r
+       TLZ F,ISW+DSW+FSW+REWSW\r
+       MOVEM W,ILD1>\r
+LD2DA:\r
+IFN RPGSW,<    SETZM DTIN1     ;CLEAR EXTENSION>\r
+       MOVEI     W,0           ;INITIALIZE IDENTIFIER SCAN\r
+       MOVEI     E,6           ;INITIALIZE CHARACTER COUNTER\r
+       MOVE    V,LSTPT         ;INITIALIZE BYTE POINTER TO W\r
+       TLZ     F,SSW+DSW+FSW   ;LEAVE SWITCH MODE\r
+LD3:   IFN RPGSW,<TLNE N,RPGF  ;CHECK RPG FEATURE\r
+       JRST RPGRD>\r
+       SOSG BUFI2      ;DECREMENT CHARACTER COUNT\r
+       INPUT     3,                    ;FILL TTY BUFFER\r
+       ILDB    T,BUFI1         ;LOAD T WITH NEXT CHARACTER\r
+LD3AA: MOVE    Q,T\r
+       IDIVI     Q,11          ;TRANSLATE TO 4 BIT CODE\r
+       LDB     Q,LD8(A)                ;LOAD CLASSIFICATION CODE\r
+       CAIGE     Q,4           ;MODIFY CODE IF .GE. 4\r
+       TLNN    F,SSW           ;MODIFY CODE IF SWITCH MODE OFF\r
+       ADDI    Q,4             ;MODIFY CLASS. CODE FOR DISPATCH\r
+       HRRZ    A,LD3A(Q)               ;LOAD RH DISPATCH ENTRY\r
+       CAIL    Q,10            ;SKIP IF CORRECT DISPATCH ENTRY\r
+       HLRZ    A,LD3A-10(Q)    ;LOAD LH DISPATCH ENTRY\r
+       JRST    @A                      ;JUMP TO INDICATED LOCATION\r
+\r
+;COMMAND DISPATCH TABLE\r
+\r
+LD3A:  XWD     LD3,LD7B                ;IGNORED CHAR, BAD CHAR (SWITCH)\r
+       XWD     LD6A,LD6                ;</> OR <(>, LETTER (SWITCH)\r
+       XWD     LD5,LD6C                ;<:>, DIGIT (SWITCH ARG.)\r
+       XWD     LD5A,LD6D               ;<.>, ESCAPE SWITCH MODE <)>\r
+       XWD     LD5C,LD7                ;<=> OR <L. ARROW>, BAD CHAR.\r
+       XWD     LD5B,LD4                ;<,>, ALPHABETIC CHAR.\r
+       XWD     LD5D,LD4                ;<CR.>, NUMERIC CHAR.\r
+       XWD     LD5E1,LD7               ;<ALT MODE>, BAD CHAR. <)>\r
+\r
+IFN RPGSW,<RPGRD:      SOSG CTLIN+2    ;CHECK CHARACTER COUNT\r
+       JRST    [IN 17,0\r
+               JRST .+1        ;OK\r
+               STATO 17,740000\r
+               JRST LD2\r
+               JSP A,ERRPT\r
+               SIXBIT /ERROR WHILE READING COMMAND FILE%/\r
+               JRST LD2]\r
+       IBP CTLIN+1     ;ADVANCE POINTER\r
+       MOVE T,@CTLIN+1 ;AND CHECK FOR LINE #\r
+       TRNE T,1\r
+       JRST    [MOVNI T,5\r
+               ADDM T,CTLIN+2\r
+               AOS CTLIN+1\r
+               JRST RPGRD      ];GO READ AGAIN\r
+       LDB T,CTLIN+1   ;GET CHR\r
+       JRST LD3AA      ;PASS IT ON>\r
+\f;ALPHANUMERIC CHARACTER, NORMAL MODE\r
+LD4:   SOJL    E,LD3           ;JUMP IF NO SPACE FOR CHAR IN W\r
+       SUBI    T,40            ;CONVERT FROM ASCII TO SIXBIT\r
+       IDPB    T,V             ;DEPOSIT CHAR OF IDENTIFIER IN W\r
+       TLO     F,DSW           ;SET IDENTIFIER FLAG\r
+       JRST    LD3             ;RETURN FOR NEXT CHARACTER\r
+\r
+;DEVICE IDENTIFIER DELIMITER <:>\r
+\r
+LD5:   PUSH    P,W             ;SAVE W\r
+       TLOE    F,CSW           ;TEST AND SET COLON FLAG\r
+       PUSHJ     P,LDF         ;FORCE LOADING\r
+       POP     P,W             ;RESTORE W\r
+       TLNE    F,ESW           ;TEST SYNTAX\r
+       JRST    LD7A            ;ERROR, MISSING COMMA ASSUMED\r
+       JUMPE     W,LD2D                ;JUMP IF NULL DEVICE IDENTIFIER\r
+       MOVEM     W,ILD1                ;STORE DEVICE IDENTIFIER\r
+IFN PP,<MOVEM W,OLDDEV ;WE HAVE A NEW ONE SO IGNORE OLD>\r
+       TLZ     F,ISW+DSW+FSW+REWSW     ;CLEAR OLD DEVICE FLAGS\r
+IFN PP,<SETZM  PPN             ;CLEAR OLD PP #>\r
+       JRST    LD2D            ;RETURN FOR NEXT IDENTIFIER\r
+\r
+;FILE NAME EXTENSION IDENTIFIER DELIMITER <.>\r
+\r
+LD5A:  TLOE    F,ESW           ;TEST AND SET EXTENSION FLAG\r
+       JRST    LD7A            ;ERROR, TOO MANY PERIODS\r
+       TLZE    F,CSW+DSW       ;SKIP IF NULL IDENT AND NO COLON\r
+       MOVEM     W,DTIN        ;STORE FILE IDENTIFIER\r
+       JRST    LD2D            ;RETURN FOR NEXT IDENTIFIER\r
+\r
+;INPUT SPECIFICATION DELIMITER <,>\r
+\r
+LD5B:\r
+IFN PP,<TLZE   N,PPCSW                 ;READING PP #?\r
+       JRST    [\r
+               HRLM    D,PPN   ;STORE PROJ #\r
+               JRST    LD6A1]  ;GET PROG #\r
+       PUSHJ   P,RBRA          ;CHECK FOR MISSING RBRA>\r
+       TLZN    F,FSW           ;SKIP IF PREV. FORCED LOADING\r
+       PUSHJ     P,FSCN2               ;LOAD (FSW NOT SET)\r
+       JRST    LD2D            ;RETURN FOR NEXT IDENTIFIER\r
+\r
+LD5B1: TLNE    F,ESW           ;TEST EXTENSION FLAG\r
+       JRST    LDDT3           ;EXPLICIT EXTENSION IDENTIFIER\r
+       TLZN    F,CSW+DSW               ;SKIP IF IDENT. OR COLON\r
+       POPJ    P,\r
+       MOVEM     W,DTIN                ;STORE FILE IDENTIFIER\r
+       JRST    LDDT2           ;ASSUME <.REL> IN DEFAULT CASE\r
+\f;OUTPUT SPECIFICATION DELIMITER <=> OR <LEFT ARROW>\r
+;OR PROJ-PROG # BRACKETS <[> AND <]>\r
+LD5C:\r
+IFN RPGSW,<CAIN T,"@"  ;CHECK  FOR * COMMAND\r
+       JRST RPGS1>\r
+IFN PP,<CAIN   T,"["                   ;PROJ-PROG #?\r
+       JRST    [TLO    N,PPSW+PPCSW    ;SET FLAGS\r
+               MOVEM   W,PPNW#         ;SAVE W\r
+               MOVEM   E,PPNE#         ;SAVE E\r
+               MOVEM   V,PPNV#         ;SAVE V\r
+               JRST LD6A1-1]   ;READ NUMBERS AS SWITCHES \r
+       CAIN    T,"]"                   ;END OF PP #?\r
+       JRST    [PUSHJ  P,RBRA          ;PROCESS RIGHT BRACKET\r
+               JRST    LD3             ];READ NEXT IDENT>\r
+       TLOE    F,ASW                   ;TEST AND SET LEFT ARROW FLAG\r
+       JRST    LD7A                    ;ERROR, MISPLACED LEFT ARROW\r
+       PUSHJ     P,LD5B1               ;STORE IDENTIFIER\r
+       TLZN    F,ESW                   ;TEST EXTENSION FLAG\r
+       MOVSI     W,554160              ;ASSUME <.MAP> IN DEFAULT CASE\r
+       MOVEM     W,DTOUT1              ;STORE FILE EXTENSION IDENTIFIER\r
+       MOVE    W,DTIN                  ;LOAD INPUT FILE IDENTIFIER\r
+       MOVEM     W,DTOUT               ;USE AS OUTPUT FILE IDENTIFIER\r
+IFN PP,<MOVE   W,PPN           ;PROJ-PROG #\r
+       MOVEM   W,DTOUT+3               ;...>\r
+       MOVE    W,ILD1                  ;LOAD INPUT DEVICE IDENTIFIER\r
+       MOVEM   W,LD5C1                 ;USE AS OUTPUT DEVICE IDENTIFIER\r
+IFN PP,<       SKIPE W,OLDDEV  ;RESTORE OLD\r
+       MOVEM W,ILD1>\r
+;INITIALIZE AUXILIARY OUTPUT DEVICE\r
+       TLZE    N,AUXSWI+AUXSWE         ;FLUSH CURRENT DEVICE\r
+       RELEASE 2,                      ;...\r
+       CALL    W,[SIXBIT ?DEVCHR?]     ;IS DEVICE A TTY?\r
+       TLNE    W,10                    ;...\r
+JRST   LD2D            ;YES, SKIP INIT\r
+       INIT    2,1                     ;INIT THE AUXILIARY DEVICE\r
+LD5C1: 0               ;AUXILIARY OUTPUT DEVICE NAME\r
+       XWD     ABUF,0                  ;BUFFER HEADER\r
+       JSP     A,ILD5                  ;ERROR RETURN\r
+       TLNE    F,REWSW                 ;REWIND REQUESTED?\r
+       CALL    2,[SIXBIT /UTPCLR/]             ;DECTAPE REWIND\r
+       TLZE    F,REWSW                 ;SKIP IF NO REWIND REQUESTED\r
+       MTAPE   2,1                     ;REWIND THE AUX DEV\r
+       MOVEI   E,AUX                   ;SET BUFFER ORIGIN\r
+       MOVEM     E,JOBFF\r
+       OUTBUF  2,1                     ;INITIALIZE SINGLE BUFFER\r
+       TLO     N,AUXSWI                        ;SET INITIALIZED FLAG\r
+       JRST    LD2D                    ;RETURN TO CONTINUE SCAN\r
+\r
+\f\r
+;RIGHT SQUARE BRACKET (PROJ-PROG NUMBERS)\r
+IFN PP,<\r
+RBRA:  TLZN    N,PPSW          ;READING PP #?\r
+       POPJ    P,              ;NOPE, RETURN\r
+       TLZE    N,PPCSW         ;COMMA SEEN?\r
+       JRST    LD7A            ;NOPE, INDICATE ERROR\r
+       HRRM    D,PPN           ;STASH PROG NUMBER\r
+       MOVE    W,PPNW#         ;PICKUP OLD IDENT\r
+       MOVE    E,PPNE#         ;RESTORE CHAR COUNT\r
+       MOVE    V,PPNV#         ;RESTORE BYTE PNTR\r
+       POPJ    P,              ;TRA 1,4\r
+\r
+;RIGHT JUSTIFY W\r
+\r
+RJUST: JUMPE   W,LD7A          ;NOTHING TO RIGHT JUSTIFY\r
+       TRNE    W,77            ;IS W RJUSTED YET?\r
+       POPJ    P,              ;YES, TRA 1,4\r
+       LSH     W,-6            ;NOPE, TRY AGAIN\r
+       JRST    .-3             ;...>\r
+\f\r
+;LINE TERMINATION <CARRIAGE RETURN>\r
+\r
+LD5D:\r
+IFN PP,<PUSHJ  P,RBRA          ;CHECK FOR UNTERMINATED PP #>\r
+       PUSHJ     P,FSCN                ;FORCE SCAN TO COMPLETION\r
+       JRST    LD2B            ;RETURN FOR NEXT LINE\r
+\r
+;TERMINATE LOADING <ALT MODE>\r
+\r
+LD5E:  SKIPE     D                     ;ENTER FROM G COMMAND\r
+       HRR     F,D             ;USE NUMERIC STARTING ADDRESS\r
+LD5E1:\r
+       PUSHJ     P,CRLF                ;START A NEW LINE\r
+       PUSHJ   P,SASYM         ;SETUP JOBSA,JOBFF,JOBSYM,JOBUSY\r
+IFN LDAC!BLTSYM,<HRRZ A,R              ;SET UP BLT OF ACS\r
+       ADDI A,(X)              ;END\r
+       ADD A,KORSP             ;ADD IN SPACE RESERVED\r
+       CAIL A,(S)\r
+IFN EXPAND,<JRST       [PUSHJ P,XPAND>\r
+                       PUSHJ   P,[\r
+IFE EXPAND,<                   JSP     A,ERRPT\r
+                               SIXBIT  /MORE CORE NEEDED#/>\r
+                               CALLI   CEXIT]\r
+IFN EXPAND,<           JRST .-1]>\r
+       HRRM R,BOTACS#          ;SAVE FOR LATER\r
+       HRRZ A,R                ;SET BLT\r
+       ADD A,X\r
+       HRL A,X\r
+       MOVE Q,A\r
+       BLT A,17(Q)>\r
+IFN BLTSYM,<HRRZ A,R   ;PLACE TO BLT TO\r
+       ADD A,KORSP\r
+       MOVE W,A        ;SAVE DEST\r
+       ADDI A,(X)      ;AFTER ADJUSTMENT\r
+       MOVE Q,S        ;UDEF PNTR\r
+       ADD Q,B         ;TOTAL UNDEFS AND DEFS IN LEFT\r
+       HLROS Q         ;NOW NEG IN RIGHT\r
+       MOVNS Q ;POSITIVE\r
+       ADDI Q,-1(A)    ;END OF BLT\r
+       HRLI A,1(S)     ;AND GET PLACE TO BLT FROM\r
+       SUBI W,1(S)     ;PREST LOC OF SYMBOL TABLE\r
+       ADDM W,JOBSYM(X)\r
+       ADDM W,JOBUSY(X)        ;ADJUST POINTERS\r
+       BLT A,(Q)       ;MOVE IT\r
+       SKIPN JOBDDT(X) ;IS DDT THERE?\r
+       JRST NODDT\r
+       SUBI Q,-1(X)\r
+       HRRM Q,JOBFF(X) ;RESTET JOBFF IF DDT IS IN\r
+       HRLM Q,JOBSA(X)\r
+NODDT:>\r
+       MOVE    W,[SIXBIT ?LOADER?]     ;FINAL MESSAGE\r
+       PUSHJ P,BLTSET          ;SETUP FOR FINAL BLT\r
+       RELEASE 2,              ;RELEASE AUX. DEV.\r
+IFN RPGSW,<RELEASE 17,0        ;RELEASE COMMAND DEVICE>\r
+LD5E5: MOVE    W,[BLT Q,(A)]   ;BLT OF ALL CODE\r
+       MOVEM   W,JOBBLT        ;STASH IN JOB DATA AREA\r
+       MOVEM   W,JOBBLT(X)     ;STASH IN RELOCATED JOBDATA AREA\r
+LD5E2: MOVE    W,CALLEX        ;EXIT AFTER BLT\r
+       TLZN    N,EXEQSW        ;IMMEDIATE EXECUTION REQUESTED?\r
+       JRST    LD5E3           ;NOPE, LET USER TYPE START HIMSELF\r
+       HRRZ    W,JOBSA(X)      ;PICKUP USUAL STARTING ADDRESS\r
+       TLNE    N,DDSW          ;DDT EXECUTION?\r
+       HRRZ    W,JOBDDT(X)     ;USE DDT SA INSTEAD\r
+       JUMPE   W,LD5E2         ;IF SA=0, DON'T EXECUTE\r
+       HRLI    W,(JRST)        ;INSTRUCTION TO EXECUTE\r
+LD5E3:\r
+IFE LDAC,<MOVEM        W,JOBBLT+1(X)   ;STASH FOR EXECUTION>\r
+IFN LDAC,<MOVEM        W,JOBBLT+2(X)   ;STASH FOR EXECUTION\r
+       HRLZ    17,JOBFF(X)     ;BUT FIRST BLT ACS\r
+       MOVE    W,[BLT 17,17]   ;...\r
+       MOVEM   W,JOBBLT+1(X)   ;...>\r
+       JRST    JOBBLT          ;IF IT WERE DONE, 'TWERE BEST DONE QUICKLY\r
+\r
+\r
+\f\r
+;SEARCH LIBRARY, PRINT UNDEFS, SETUP JOBSA,JOBFF,JOBSYM,JOBUSY\r
+\r
+SASYM: TLNN    F,NSW           ;SKIP IF NO SEARCH FLAG ON\r
+       PUSHJ   P,LIBF          ;SEARCH LIBRARY FILE\r
+       PUSHJ   P,FSCN          ;FORCE SCAN TO COMPLETION\r
+       PUSHJ   P,PMS           ;PRINT UNDEFINEDS\r
+       HRRZM   F,JOBSA(X)      ;RH OF JOBSA :=STARTING ADDRESS\r
+SAS1:  HRRZ    A,H             ;COMPUTE PROG BREAK\r
+       SUBI    A,(X)           ;...\r
+       CAIGE   A,(R)           ;BUT NO HIGHER THAN RELOC\r
+       HRRZ    A,R             ;...\r
+       HRLM    A,JOBSA(X)      ;LH OR JOBSA IS PROG BREAK\r
+       HRRZM   A,JOBFF(X)      ;RH OF JOBFF CONTAINS PROG BREAK\r
+       MOVE    A,B             ;SET JOBSYM W/ SYMBOL TABLE POINTER\r
+       AOS     A               ;...\r
+       MOVEM   A,JOBSYM(X)     ;...\r
+       MOVE    A,S             ;SET JOBUSY W/ UNDEFINED SYMBOL POINTER\r
+       AOS     A               ;...\r
+       MOVEM   A,JOBUSY(X)     ;...\r
+       POPJ    P,              ;RETURN\r
+;PRINT FINAL MESSAGE, SET UP BLT AC'S, SETDDT, RELEAS\r
+\r
+BLTSET:        PUSHJ   P,FCRLF         ;START FINAL MESSAGE\r
+       PUSHJ   P,PWORD         ;PRINT W\r
+       PUSHJ   P,SPACE\r
+       HRRZ    Q,JOBREL        ;PUBLISH HOW MUCH CORE USED\r
+       LSH     Q,-12           ;...\r
+       ADDI    Q,1             ;...\r
+       PUSHJ   P,RCNUM         ;PUBLISH THE NUMBER\r
+       MOVE    W,[SIXBIT /K CORE/]     ;PUBLISH THE UNITS\r
+       PUSHJ   P,PWORD         ;...\r
+       PUSHJ   P,CRLF          ;...\r
+       MOVSI   Q,20(X)         ;HOW MUCH CODE TO BLT\r
+       HRRI    Q,20            ;...\r
+       HRRZ A,42               ;CHECK ON ERRORS\r
+       JUMPE A,NOEX            ;NONE, GO AHEAD\r
+       TLZN N,EXEQSW           ;DID HE WANT TO START EXECUTION?\r
+       JRST NOEX               ;NO\r
+       JSP A ,ERRPT            ;PRINT AN ERROR MESSAGE\r
+       SIXBIT /EXECUTION DELETED@/\r
+NOEX:  HRRZ    A,JOBREL        ;WHEN TO STOP BLT\r
+       HRRZM   A,JOBREL(X)     ;SETUP FOR POSSIBLE IMMED. XEQ\r
+       SUBI    A,(X)           ;...\r
+IFE BLTSYM,<CAIL       A,(S)           ;DON'T BLT OVER SYMBOL TABLE\r
+       MOVEI   A,(S)           ;OR UNDEFINED TABLE>\r
+       RELEAS  1,              ;RELEASE DEVICES\r
+       RELEAS  3,              ;...\r
+       MOVE    R,JOBDDT(X)     ;SET NEW DDT\r
+       CALLI   R,CSETDDT       ;...\r
+       POPJ    P,              ;RETURN\r
+\r
+\f\r
+;WRITE CHAIN FILES\r
+\r
+CHNC:  SKIPA   A,JOBCHN(X)     ;CHAIN FROM BREAK OF FIRST BLOCK DATA\r
+CHNR:  HLR     A,JOBCHN(X)     ;CHAIN FROM BREAK OF FIRST F4 PROG\r
+       HRRZS   A               ;ONLY RIGHT HALF IS SIGNIFICANT\r
+       JUMPE   A,LD7C          ;DON'T CHAIN IF ZERO\r
+       TLNN    N,AUXSWI        ;IS THERE AN AUX DEV?\r
+       JRST    LD7D            ;NO, DON'T CHAIN\r
+       PUSH    P,A             ;SAVE WHEREFROM TO CHAIN\r
+       SKIPE   D               ;STARTING ADDR SPECIFIED?\r
+       HRR     F,D             ;USE IT\r
+       PUSHJ   P,SASYM         ;DO LIB SEARCH, SETUP JOBSA, ETC.\r
+       POP     P,A             ;GET WHEREFROM\r
+       MOVN    W,JOBREL        ;CALCULATE IOWD FOR DUMP\r
+       ADDI    W,-1-3-CHN5(A)  ;...\r
+       HRLI    W,-4-CHN5(A)    ;...\r
+       MOVSM   W,IOWDPP        ;...\r
+       ADDI    A,-4-CHN5(X)    ;ADD IN OFFSET\r
+IFN CHN5,<PUSH A,JOBSYM(X)     ;SETUP FOUR WORD TABLE\r
+       PUSH    A,JOB41(X)      ;...>\r
+       PUSH    A,JOBDDT(X)     ;JOBDDT IN ALL CASES\r
+IFE CHN5,<PUSH A,JOBSYM(X)     ;JOBDDT, JOBSYM, JOBSA>\r
+       PUSH    A,JOBSA(X)      ;JOBRYM ALWAYS LAST\r
+       CLOSE   2,              ;INSURE END OF MAP FILE\r
+       SETSTS  2,17            ;SET AUX DEV TO DUMP MODE\r
+       MOVSI   W,435056        ;USE .CHN AS EXTENSION\r
+       MOVEM   W,DTOUT1        ;...\r
+       PUSHJ   P,IAD2          ;DO THE ENTER\r
+       TLZ     N,AUXSWI+AUXSWE ;INSURE NO PRINTED OUTPUT\r
+       MOVE    W,[SIXBIT ?CHAIN?]      ;FINAL MESSAGE\r
+       PUSHJ   P,BLTSET                ;SETUP BLT PNTR, SETDDT, RELEAS\r
+       CALLI   CDDTGT          ;START DDT MODE OUTPUT\r
+       MOVSI   CHNBLT,CHAIN3   ;BLT CHAIN3 INTO ACS\r
+       BLT     CHNBLT,CHNBLT   ;...\r
+       MOVEI   P,CHNERR        ;POINTER TO ERR MESS\r
+       JRST    0               ;GO DO CHAIN\r
+\r
+\f\r
+;THE AC SECTION OF CHAIN\r
+\r
+CHAIN3:\r
+       PHASE   0\r
+       BLT     Q,(A)           ;USUAL LDRBLT\r
+       OUTPUT  2,IOWDP         ;WRITE THE CHAIN FILE\r
+       STATZ   2,IOBAD!IODEND  ;CHECK FOR ERROR OR EOF\r
+       JRST    LOSEBIG         ;FOUND SAME, GO GRIPE\r
+       CLOSE   2,              ;FINISH OUTPUT\r
+       STATZ   2,IOBAD!IODEND  ;CHECK FOR FINAL ERROR\r
+LOSEBI:        CALLI   CDDTOUT         ;GRIPE ABOUT ERROR\r
+       CALLI   CEXIT           ;EXIT\r
+CHNERR:        ASCIZ   ?DEVICE ERROR?  ;ERROR MESSAGE\r
+IOWDP: Z                       ;STORE IOWD FOR DUMP HERE\r
+CHNBLT:                                ;LAST WORD OF AC CHAIN (ZERO OF I/O POINTER)\r
+       DEPHASE\r
+IOWDPP=.-1                     ;MEMORY LOC OF AC IOWDP\r
+       Z                       ;TERMINATOR OF DUMP MODE LIST\r
+\r
+\f;EXPAND CORE\r
+\r
+IFN EXPAND,<\r
+XPAND: PUSH P,H        ;GET SOME REGISTERS TO USE\r
+       PUSH P,X\r
+       PUSH P,N\r
+       HRRZ X,JOBREL   ;WHAT WE WANT\r
+       ADDI X,2000\r
+       CALLI X,11       ;CORE ALLOCATOR CALLS THIS\r
+       JRST XPAND6\r
+IFE K,<                HRRZ H,MLTP     ;GET LOWEST LOCATION\r
+       TLNN N,F4SW     ;IS FORTRAN LOADING>\r
+       HRRZ H,S        ;NO, USE S\r
+       HRRZ X,JOBREL   ;NOW MOVE\r
+       SUBI X,2000\r
+XPAND2:        MOVE N,(X)\r
+       MOVEM N,2000(X)\r
+       CAMLE X,H       ;TEST FOR END\r
+       SOJA X,XPAND2;          HAND EYE SYSTEM MOVES TABLE\r
+       HRLI H,-2000\r
+       SETZM (H)       ;ZERO NEW CORE\r
+       AOBJN H,.-1\r
+       MOVEI H,2000\r
+       ADDM H,S\r
+       ADDM H,B\r
+       ADDM H,JOBSYM\r
+       POP P,N\r
+       ADDI N,2000\r
+IFE K,<        TLNN N,F4SW     ;F4?\r
+       JRST    XPAND3\r
+       ADDM H,PLTP\r
+       ADDM H,BITP\r
+       ADDM H,SDSTP\r
+       ADDM H,MLTP\r
+       TLNE N,SYDAT\r
+       ADDM H,V>\r
+XPAND3:\r
+       POP P,X\r
+       POP P,H\r
+       AOS (P)\r
+       POPJ P,\r
+XPAND6:        JUMPE X,XPAND4\r
+       JSP A,ERRPT\r
+       SIXBIT /CORE AVAILABLE, BUT NOT TO YOU#/\r
+XPAND4:        JSP A,ERRPT\r
+       SIXBIT /MORE CORE NEEDED#/\r
+XPAND5:        POP P,N\r
+       POP P,X\r
+       POP P,H\r
+       POPJ P,\r
+\r
+XPAND7:        PUSHJ   P,XPAND\r
+       JRST    SFULLC\r
+       JRST    POPJM2\r
+\r
+POPJM3:        SOS     (P)             ;POPJ TO CALL-2\r
+POPJM2:        SOS     (P)             ;POPJ TO CALL-1\r
+       SOS     (P)             ;SAME AS POPJ TO\r
+       POPJ    P,              ;NORMAL POPJ MINUS TWO\r
+       >\r
+\f\r
+\r
+;ENTER SWITCH MODE\r
+\r
+LD6A:  CAIN    T,57            ;WAS CHAR A SLASH?\r
+       TLO     N,SLASH         ;REMEBER THAT\r
+       TLO     F,SSW           ;ENTER SWITCH MODE\r
+LD6A1: MOVEI   D,0             ;ZERO THE NUBER REGISTER\r
+       JRST    LD3             ;EAT A SWITCH\r
+\r
+;ALPHABETIC CHARACTER, SWITCH MODE\r
+\r
+LD6:   XCT     LD6B-101(T)     ;EXECUTE SWITCH FUNCTION\r
+       TLZE    N,SLASH ;SWITCH MODE ENTERED W/ SLASH?\r
+       JRST    LD6D            ;LEAVE SWITCH MODE\r
+       JRST    LD6A1           ;STAY IN SWITCH MODE\r
+\r
+;DISPATCH TABLE FOR SWITCHES\r
+\r
+;      THE INSTRUCTION AT THE CHARACTER LOCATION IS EXECUTED\r
+\r
+LD6B:  TLO     N,ALLFLG        ;A - LIST ALL GLOBALS\r
+       JRST    LD7B            ;B - ERROR\r
+       PUSHJ   P,CHNC          ;C - CHAIN, START W/ COMMON\r
+       PUSHJ     P,LDDT        ;D - DEBUG OPTION, LOAD DDT\r
+       TLO     N,EXEQSW        ;E - LOAD AND GO\r
+       PUSHJ     P,LIBF        ;F - LIBRARY SEARCH\r
+       PUSHJ     P,LD5E        ;G - GO INTO EXECUTION\r
+       PUSHJ P,LRAIDX          ;H - LOAD AN START RAID\r
+       TLO     N,ISAFLG        ;I - IGNORE STARTING ADDRESSES\r
+       TLZ     N,ISAFLG        ;J - USE STARTING ADDRESSES\r
+IFE BLTSYM,<JRST       LD7B            ;K - ERROR>\r
+IFN BLTSYM,<PUSHJ P,KORADJ     ;K - RESERVE SPACE FOR SYM DEFS>\r
+       TLO     F,LIBSW+SKIPSW  ;L - ENTER LIBRARY SEARCH\r
+       PUSHJ     P,PRMAP       ;M - PRINT STORAGE MAP\r
+       TLZ     F,LIBSW+SKIPSW  ;N - LEAVE LIBRARY SEARCH\r
+       HRR     R,D             ;O - NEW PROGRAM ORIGIN\r
+       TLO     F,NSW           ;P - PREVENT AUTO. LIB. SEARCH\r
+       TLZ     F,NSW           ;Q - ALLOW AUTO. LIB. SEARCH\r
+       PUSHJ   P,CHNR          ;R - CHAIN, START W/ RESIDENT\r
+       TLO     F,SYMSW         ;S - LOAD WITH SYMBOLS\r
+       PUSHJ   P,LDDTX         ;T - LOAD AND GO TO DDT\r
+       PUSHJ     P,PMS         ;U - PRINT UNDEFINED LIST\r
+       PUSHJ P,LRAID           ;V - LOAD RAID\r
+       TLZ     F,SYMSW+DSYMSW  ;W - LOAD WITHOUT SYMBOLS\r
+       TLZ     N,ALLFLG        ;X - DO NOT LIST ALL GLOBALS\r
+       TLO     F,REWSW         ;Y - REWIND BEFORE USE\r
+       JRST    LD              ;Z - RESTART LOADER\r
+\r
+\f\r
+;SWITCH MODE NUMERIC ARGUMENT\r
+\r
+LD6C:  LSH     D,3             ;BUILD OCTAL NUMERIC ARGUMENT\r
+       ADDI    D,-60(T)\r
+       JRST    LD3\r
+\r
+;EXIT FROM SWITCH MODE\r
+\r
+LD6D:  TLZ     F,SSW           ;CLEAR SWITCH MODE FLAG\r
+       TLNE    F,FSW           ;TEST FORCED SCAN FLAG\r
+       JRST    LD2D            ;SCAN FORCED, START NEW IDENT.\r
+       JRST    LD3             ;SCAN NOT FORCED, USE PREV IDENT\r
+;ILLEGAL CHARACTER, NORMAL MODE\r
+\r
+LD7:   JSP     A,ERRPT8\r
+       SIXBIT    /CHAR.%/\r
+       JRST    LD2\r
+\r
+;SYNTAX ERROR, NORMAL MODE\r
+\r
+LD7A:  JSP     A,ERRPT8\r
+       SIXBIT    /SYNTAX%/\r
+       JRST    LD2\r
+\r
+;ILLEGAL CHARACTER, SWITCH MODE\r
+\r
+LD7B:  JSP     A,ERRPT8\r
+       SIXBIT    /SWITCH%/\r
+       JRST    LD2\r
+\r
+;ATTEMPT TO CHAIN WITH SPECIFIED HALF OF JOBCHN = 0\r
+\r
+LD7C:  JSP     A,ERRPT         ;GRIPE\r
+       SIXBIT  ?UNCHAINABLE AS LOADED@?\r
+       JRST    LD2\r
+\r
+;ATTEMP TO CHAIN WITHOUT SPECIFYING DEVICE\r
+\r
+LD7D:  JSP     A,ERRPT         ;GRIPE\r
+       SIXBIT  ?NO CHAIN DEVICE@?\r
+       JRST    LD2\r
+\r
+IFN BLTSYM,<KORADJ:    CAMLE D,KORSP   ;IF SMALLER IGNORE\r
+       MOVEM D,KORSP\r
+       POPJ P,>\r
+\f\r
+;CHARACTER CLASSIFICATION TABLE DESCRIPTION:\r
+\r
+;      EACH CHARACTER HAS ASSOCIATED WITH IT A FOUR BIT BYTE\r
+;      PACKED IN THE CHARACTER CLASSIFICATION TABLE.  THE CHARACTER\r
+;      CLASSIFICATION CODES ARE ORDERED IN SUCH A WAY AS TO GIVE\r
+;      DELIMITERS OF HIGHER PRECEDENCE LOWER CLASSIFICATION NUMBERS.\r
+;      CERTAIN CHARACTERS HAVE NO EFFECT ON THE COMMAND STRING, AND\r
+;      THEREFORE DO NOT EFFECT ORDERING OF DELIMITERS.  FOUR CODES\r
+;      ARE RESERVED FOR ALTERNATE DISPATCHES WHILE THE SWITCH MODE IS\r
+;      IN EFFECT.\r
+\r
+\r
+;CLASSIFICATION BYTE CODES:\r
+\r
+;      BYTE DISP CLASSIFICATION\r
+\r
+;      00 - 00  ILLEGAL CHARACTER, SWITCH MODE\r
+;      01 - 01  ALPHABETIC CHARACTER, SWITCH MODE\r
+;      02 - 02  NUMERIC CHARACTER, SWITCH MODE\r
+;      03 - 03  SWITCH MODE ESCAPE, SWITCH MODE\r
+\r
+;      00 - 04  ILLEGAL CHARACTER, NORMAL MODE\r
+;      01 - 05  ALPHABETIC CHARACTER, NORMAL MODE\r
+;      02 - 06  NUMERIC CHARACTER, NORMAL MODE\r
+;      03 - 07  SWITCH MODE ESCAPE, NORMAL MODE\r
+\r
+;      04 - 10  IGNORED CHARACTER\r
+;      05 - 11  ENTER SWITCH MODE CHARACTER\r
+;      06 - 12  DEVICE IDENTIFIER DELIMITER\r
+;      07 - 13  FILE EXTENSION DELIMITER\r
+;      10 - 14  OUTPUT SPECIFICATION DELIMITER\r
+;      11 - 15  INPUT SPECIFICATION DELIMITER\r
+;      12 - 16  LINE TERMINATION\r
+;      13 - 17  JOB TERMINATION\r
+\r
+\f\r
+;BYTE POINTERS TO CHARACTER CLASSIFICATION TABLE\r
+\r
+LD8:   POINT     4,LD9(Q),3\r
+       POINT     4,LD9(Q),7\r
+       POINT     4,LD9(Q),11\r
+       POINT     4,LD9(Q),15\r
+       POINT     4,LD9(Q),19\r
+       POINT     4,LD9(Q),23\r
+       POINT     4,LD9(Q),27\r
+       POINT     4,LD9(Q),31\r
+       POINT     4,LD9(Q),35\r
+\r
+;CHARACTER CLASSIFIACTION TABLE\r
+\r
+LD9:   BYTE    (4)4,0,0,0,0,0,0,0,0\r
+       BYTE    (4)4,4,4,4,12,0,0,0,0\r
+       BYTE    (4)0,0,0,0,0,0,0,0,0\r
+       BYTE    (4)13,0,0,0,0,4,0,4,0\r
+       BYTE    (4)0,0,0,0,5,3,0,0,11\r
+       BYTE    (4)0,7,5,2,2,2,2,2,2\r
+       BYTE    (4)2,2,2,2,6,0,0,10,0\r
+IFE RPGSW,<    BYTE    (4)0,0,1,1,1,1,1,1,1>\r
+IFN RPGSW,<    BYTE (4) 0,10,1,1,1,1,1,1,1>\r
+       BYTE    (4)1,1,1,1,1,1,1,1,1\r
+       BYTE    (4)1,1,1,1,1,1,1,1,1\r
+IFE PP,<BYTE   (4)1,0,0,0,0,10,0,0,0>\r
+IFN PP,<BYTE   (4)1,10,0,10,0,10,0,0,0>\r
+       BYTE    (4)0,0,0,0,0,0,0,0,0\r
+       BYTE    (4)0,0,0,0,0,0,0,0,0\r
+       BYTE    (4)0,0,0,0,0,0,0,0,13\r
+       BYTE    (4)13,4\r
+\r
+\f\r
+;INITIALIZE LOADING OF A FILE\r
+\r
+ILD:   MOVEI     W,BUF1                ;LOAD BUFFER ORIGIN\r
+       MOVEM     W,JOBFF\r
+       TLOE    F,ISW           ;SKIP IF INIT REQUIRED\r
+       JRST    ILD6            ;DONT DO INIT\r
+       INIT    1,14\r
+ILD1:  0                               ;LOADER INPUT DEVICE\r
+       XWD     0,BUFR\r
+       JSP     A,ILD5          ;ERROR RETURN\r
+ILD6:  TLZE    F,REWSW         ;SKIP IF NO REWIND\r
+       MTAPE   1,1             ;REWIND\r
+ILD2:  LOOKUP    1,DTIN                ;LOOK UP FILE FROM DIRECTORY\r
+       JRST    ILD3            ;FILE NOT IN DIRECTORY\r
+IFE K,<        INBUF     1,2           ;SET UP BUFFERS>\r
+IFN K,<        INBUF   1,1             ;SET UP BUFFER>\r
+       TLO     F,ASW           ;SET LEFT ARROW ILLEGAL FLAG\r
+       TLZ     F,ESW+F4LIB     ;CLEAR EXTENSION FLAG\r
+       POPJ    P,\r
+\r
+;      LOOKUP FAILURE\r
+\r
+ILD3:  TLOE    F,ESW           ;SKIP IF .REL WAS ASSUMED\r
+       JRST    ILD4            ;FATAL LOOKUP FAILURE\r
+       SETZM     DTIN1         ;ZERO FILE EXTENSION\r
+       JRST    ILD2            ;TRY AGAIN WITH NULL EXTENSION\r
+\r
+ILD4:  TLZE    F,F4LIB         ;WAS THIS A TRY FOR F40 LIBRARY?\r
+       JRST    [MOVE   W,[SIXBIT /LIB4/]; YES, TRY LIB4\r
+               MOVEM   W,DTIN          ;...\r
+               PUSHJ   P,LDDT2         ;USE .REL EXTENSION\r
+               TLZ     F,ESW           ;...\r
+               JRST    ILD2            ];GO TRY AGAIN\r
+ILD9:  JSP     A,ERRPT\r
+       SIXBIT    /CANNOT FIND#/\r
+       JRST    LD2\r
+\r
+;      DEVICE SELECTION ERROR\r
+\r
+ILD5:  MOVE    W,-3(A)         ;LOAD DEVICE NAME FROM INIT\r
+       TLO     F,FCONSW        ;INSURE TTY OUTPUT\r
+       PUSHJ   P,PRQ           ;START W/ ?\r
+       PUSHJ     P,PWORD               ;PRINT DEVICE NAME\r
+       JSP     A,ERRPT7\r
+       SIXBIT    /UNAVAILABLE@/\r
+       JRST    LD2\r
+\f\r
+;LIBRARY SEARCH CONTROL AND LOADER CONTROL\r
+\r
+;LIBF ENABLES A LIBRARY SEARCH OF <SYS:LIB4.REL>\r
+\r
+LIBF:  PUSHJ     P,FSCN1               ;FORCE SCAN TO COMPLETION\r
+       PUSHJ   P,LIBF1                 ;LOAD SYS:JOBDAT.REL\r
+       TLO     F,F4LIB                 ;INDICATE FORTRAN LIBRARY SEARCH\r
+       MOVE    W,[SIXBIT /LIB40/]      ;FIRST TRY AT NAME\r
+       PUSHJ   P,LIBF2                 ;LOAD SYS:LIB40.REL\r
+LIBF1: MOVE    W,[SIXBIT /JOBDAT/]     ;LOAD SYS:JOBDAT.REL\r
+LIBF2: PUSHJ     P,LDDT1\r
+       JUMPGE    S,EOF2                ;JUMP IF NO UNDEFINED GLOBALS\r
+       TLO     F,SLIBSW+SKIPSW ;ENABLE LIBRARY SEARCH\r
+       TLZ     F,SYMSW+DSYMSW  ;DISABLE LOADING WITH SYMBOLS\r
+       JRST    LDF             ;INITIALIZE LOADING LIB4\r
+\r
+;      LIB CONTROLS THE LIBRARY SEARCH OF ONE FILE\r
+\r
+LIB:   JUMPGE    S,EOF1                ;JUMP IF NO UNDEFINED GLOBALS\r
+       TLO     F,SKIPSW                ;SET SKIPSW TO IGNORE MODE\r
+       JRST    LOAD            ;CONTINUE LIB. SEARCH\r
+\r
+LIB1:  CAIE    A,4             ;TEST FOR ENTRY BLOCK\r
+       JRST    LIB3            ;NOT AN ENTRY BLOCK, IGNORE IT\r
+LIB2:  PUSHJ     P,RWORD               ;READ ONE DATA WORD\r
+       MOVE    C,W\r
+       TLO     C,040000                ;SET CODE BITS FOR SEARCH\r
+       PUSHJ     P,SREQ\r
+       TLZA    F,SKIPSW                ;REQUEST MATCHES ENTRY, LOAD\r
+       JRST    LIB2            ;NOT FOUND\r
+LIB3:  PUSHJ     P,RWORD               ;READ AND IGNORE ONE DATA WORD\r
+       JRST    LIB3            ;LOOP TO IGNORE INPUT\r
+\r
+;LDDT LOADS <SYS:DDT.REL> AND SETS DSYMSW\r
+\r
+LRAIDX:        TLO N,DDSW!EXEQSW       ;H - LOAD AND START RAID\r
+LRAID: PUSHJ P,FSCN1           ;FORCE END OF SCAN\r
+       MOVE W,[SIXBIT /RAID/]\r
+       JRST LDDT0\r
+LDDTX: TLO     N,DDSW+EXEQSW   ;T - LOAD AND GO TO DDT\r
+LDDT:  PUSHJ     P,FSCN1               ;FORCE SCAN TO COMPLETION\r
+       MOVSI     W,444464              ;FILE IDENTIFIER <DDT>\r
+LDDT0: PUSHJ     P,LDDT1\r
+       PUSHJ     P,LDF         ;LOAD <SYS:DDT.REL>\r
+       TLO     F,DSYMSW                ;ENABLE LOADING WITH SYMBOLS\r
+       POPJ    P,\r
+\r
+LDDT1: MOVEM     W,DTIN                ;STORE FILE IDENTIFIER\r
+IFN PP,<MOVE W,ILD1    ;SAVE OLD DEV\r
+       MOVEM W,OLDDEV>\r
+       MOVSI     W,637163              ;DEVICE IDENTIFIER <SYS>\r
+       MOVEM     W,ILD1                ;STORE DEVICE IDENTIFIER\r
+       TLZ     F,ISW+LIBSW+SKIPSW+REWSW        ;CLEAR OLD FLAGS\r
+LDDT2: MOVSI     W,624554              ;EXTENSION IDENTIFIER <.REL>\r
+LDDT3: MOVEM     W,DTIN1               ;STORE EXTENSION IDENTIFIER\r
+IFN PP,<MOVE W,PPN     ;GET PROJ-PROG #\r
+       MOVEM W,DTIN+3>\r
+       POPJ    P,\r
+\f;EOF TERMINATES LOADING OF A FILE\r
+\r
+EOF:   MOVE    P,PDSAV         ;RESTORE PUSHDOWN POINTER\r
+EOF1:  TLZ     F,SLIBSW+SKIPSW ;CLEAR ONE FILE LIB. SEARCH FLAG\r
+EOF2:  POPJ    P,\r
+\r
+;      FORCE SCAN TO COMPLETION, LOAD IF NECESSARY\r
+\r
+FSCN:  PUSHJ     P,FSCN1               ;FORCED LOAD BEFORE TEST\r
+       TLNN    F,FULLSW                ;TEST FOR OVERLAP\r
+       POPJ    P,                      ;NO OVERLAP, RETURN\r
+       MOVE    W,H             ;FETCH CORE SIZE REQUIRED\r
+       SUBI W,1(S) ; COMPUT DEFICIENCY\r
+       JUMPL     W,EOF2                ;JUMP IF NO OVERLAP\r
+       TLO     F,FCONSW                ;INSURE TTY OUTPUT\r
+       PUSHJ   P,PRQ                   ;START WITH ?\r
+       PUSHJ     P,PRNUM0              ;INFORM USER\r
+       JSP     A,ERRPT7\r
+       SIXBIT    /WORDS OF OVERLAP#/\r
+       JRST    LD2             ;ERROR RETURN\r
+\r
+FSCN1: TLON    F,FSW           ;SKIP IF NOT FIRST CALL TO FSCN\r
+       TLNN    F,CSW+DSW+ESW   ;TEST SCAN FOR COMPLETION\r
+       POPJ    P,\r
+FSCN2: PUSHJ     P,LD5B1               ;STORE FILE OR EXTENSION IDENT.\r
+\r
+;      LOADER CONTROL, NORMAL MODE\r
+\r
+LDF:   PUSHJ     P,ILD         ;INITIALIZE LOADING\r
+\r
+\f;LOAD SUBROUTINE\r
+\r
+LOAD:  MOVEM     P,PDSAV               ;SAVE PUSHDOWN POINTER\r
+LOAD1: MOVE    P,PDSAV         ;RESTORE PUSHDOWN POINTER\r
+LOAD1A:   PUSHJ     P,WORD             ;INPUT BLOCK HEADER WORD\r
+       MOVNI     E,400000(W)   ;WORD COUNT - FROM RH OF HEADER\r
+       HLRZ    A,W             ;BLOCK TYPE - FROM LH OF HEADER\r
+       CAILE     A,DISPL*2+1           ;TEST BLOCK TYPE NUMBER\r
+       JRST    LOAD4           ;ERROR, ILLEGAL BLOCK TYPE\r
+       TLNE    F,SKIPSW                ;BLOCK OK - TEST LOAD STATUS\r
+       JRST    LIB1            ;RETURN TO LIB. SEARCH CONTROL\r
+       HRRZ    T,LOAD2(A)              ;LOAD RH DISPATCH ENTRY\r
+       CAILE     A,DISPL               ;SKIP IF CORRECT\r
+       HLRZ    T,LOAD2-DISPL-1(A)      ;LOAD LH DISPATCH ENTRY\r
+       TLNE    F,FULLSW                ;TEST CORE OVERLAP INDICATOR\r
+       SOJG    A,HIGH0         ;IGNORE BLOCK IF NOT TYPE 1\r
+       JRST    @T                      ;DISPATCH TO BLOCK SUBROUTINE\r
+\r
+;DISPATCH TABLE - BLOCK TYPES\r
+\r
+LOAD2: XWD NAME,LOAD1A\r
+       XWD START,PROG\r
+       XWD LOCD,SYM\r
+       XWD LOAD4A,LOAD4A\r
+       XWD LOAD4A,LIB3\r
+LOAD3: XWD LOAD4A,HIGH\r
+\r
+       DISPL=LOAD3-LOAD2\r
+\r
+;ERROR EXIT FOR BAD HEADER WORDS\r
+\r
+LOAD4: IFE K,<\r
+       CAIN    A,400           ;FORTRAN FOUR BLOCK\r
+       JRST    F4LD>\r
+LOAD4A:   JSP  A,ERRPT         ;INCORRECT HEADER WORD\r
+       SIXBIT    /ILL. FORMAT#/\r
+       JRST    LD2\r
+\r
+\f;LOAD PROGRAMS AND DATA (BLOCK TYPE 1)\r
+\r
+PROG:  HRRZ    V,W             ;LOAD BLOCK LENGTH\r
+       PUSHJ     P,RWORD               ;READ BLOCK ORIGIN\r
+       ADD     V,W             ;COMPUTE NEW PROG. BREAK\r
+       CAIG    H,@X            ;COMPARE WITH PREV. PROG. BREAK\r
+       MOVEI     H,@X          ;UPDATE PROGRAM BREAK\r
+               TLNE F,FULLSW\r
+               JRST FULLC      ;NO ERROR MESSAGE\r
+       CAILE H,1(S)  ; SKIP IF SUFFICIENT CORE AVAILABLE\r
+IFN EXPAND,<   JRST    [PUSHJ P,XPAND>\r
+                       JRST FULLC\r
+IFN EXPAND,<           JRST .-1]>\r
+       MOVE    V,W\r
+PROG1: PUSHJ     P,RWORD               ;READ DATA WORD\r
+       MOVEM     W,@X          ;STORE DATA WORD IN PROG. AT LLC\r
+       AOJA    V,PROG1         ;ADD ONE TO LOADER LOC. COUNTER\r
+\r
+;LOAD SYMBOLS (BLOCK TYPE 2)\r
+\r
+SYM:   PUSHJ     P,PRWORD              ;READ TWO DATA WORDS\r
+       PUSHJ   P,SYMPT;                PUT INTO TABLE\r
+       JRST    SYM\r
+\r
+; WFW SYMPT:   JUMPL   C,SYM3;         JUMP IF GLOBAL REQUEST\r
+SYMPT: TLNE C,200000   ;GLOBAL REQUEST? WFW\r
+       JUMPL C,SYM3    ;CHECK FOR 60 NOT JUST HIGH BIT WFW\r
+       TLNE    C,100000\r
+       JRST    SYM1A           ;LOCAL SYMBOL\r
+       PUSHJ     P,SREQ                ;GLOBAL DEF., SEARCH FOR REQUEST\r
+       JRST    SYM2            ;REQUEST MATCHES\r
+       PUSHJ     P,SDEF                ;SEARCH FOR MULTIPLE DEFINITIONS\r
+       JRST    SYM1            ;MULTIPLY DEFINED GLOBAL\r
+       JRST    SYM1B\r
+\r
+;      PROCESS MULTIPLY DEFINED GLOBAL\r
+\r
+SYM1:  CAMN    W,2(A)          ;COMPARE NEW AND OLD VALUE\r
+       POPJ    P,;\r
+       AOS     MDG             ;COUNT MULTIPLY DEFINED GLOBALS\r
+       PUSHJ   P,PRQ           ;START W/ ?\r
+       PUSHJ     P,PRNAM               ;PRINT SYMBOL AND VALUE\r
+       MOVE    W,2(A)          ;LOAD OLD VALUE\r
+       PUSHJ     P,PRNUM               ;PRINT OLD VALUE\r
+       JSP     A,ERRPT7                ;PRINT MESSAGE\r
+       SIXBIT    /MUL. DEF. GLOBAL#/\r
+       POPJ    P,;     IGNORE MUL. DEF. GLOBAL SYM\r
+\r
+\f;     LOCAL SYMBOL\r
+\r
+SYM1A: TLNN    F,SYMSW+DSYMSW  ;SKIP IF LOAD LOCALS SWITCH ON\r
+       POPJ    P,;             IGNORE LOCAL SYMBOLS\r
+SYM1B: CAIL    H,(S)           ;STORE DEFINED SYMBOL\r
+IFN EXPAND,<   PUSHJ P,XPAND7>\r
+IFE EXPAND,<   JRST SFULLC>\r
+SYM1C: IFE K,<\r
+       TLNE    N,F4SW;         FORTRAN FOUR REQUIRES A BLT\r
+       PUSHJ   P,MVDWN;        OF THE TABLES>\r
+       MOVEI A,-2(S)   ;LOAD A TO SAVE INST. AT SYM2\r
+SYM1D: SUBI    S,2;            UPDATE UNDEFINED POINTER\r
+       POP     B,2(A)          ;MOVE UNDEFINED VALUE POINTER\r
+       POP     B,1(A)          ;MOVE UNDEFINED SYMBOL\r
+       MOVEM     W,2(B)                ;STORE VALUE\r
+       MOVEM     C,1(B)                ;STORE SYMBOL\r
+       POPJ    P,;\r
+\r
+\f;     GLOBAL DEFINITION MATCHES REQUEST\r
+\r
+SYM2:  PUSH P,SYM2C    ;NEXT MUST BE A SUBROUTINE FOR LATER. SET RETURN\r
+SYM2B: MOVE    V,2(A)          ;LOAD REQUEST POINTER\r
+       PUSHJ P,REMSYM\r
+       JUMPL V,SYM2W   ;ADDITIVE REQUEST? WFW\r
+       PUSHJ     P,SYM4A               ;REPLACE CHAIN WITH DEFINITION\r
+;WFW PATCH TO LOOK FOR MORE THAN ONE REQUEST\r
+SYM2W1:        PUSHJ P,SREQ    ;LOOK FOR MORE REQUESTS FOR THIS SYMBOL\r
+       JRST SYM2B      ;FOUND MORE\r
+       MOVE A,SVA      ;RESTORE A\r
+;END OF PATCH WFW\r
+SYM2C: POPJ P,SYM1D    ;RETURN, SEE SYM2 FOR USE OF ADDRESS\r
+SVA:   0       ;A TEMP CELL WFW\r
+\r
+;      REQUEST MATCHES GLOBAL DEFINITION\r
+\r
+SYM2A: MOVE    V,W             ;LOAD POINTER TO CHAIN\r
+       MOVE    W,2(A)          ;LOAD VALUE\r
+       JUMPL V,FIXWP   ;HANDLE ATTITIVE REQUEST WFW\r
+       JRST    SYM4A;          REPLACE CHAIN WITH DEFINITION\r
+\r
+;      PROCESS GLOBAL REQUEST\r
+\r
+SYM3:  TLNE    C,040000;               COMMON NAME\r
+       JRST    SYM1B\r
+       TLC     C,640000;               PERMUTE BITS FROM 60 TO 04\r
+       PUSHJ     P,SDEF                ;SEARCH FOR GLOBAL DEFINITION\r
+       JRST    SYM2A           ;MATCHING GLOBAL DEFINITION\r
+       JUMPL W,SYM3X1  ;ADDITIVE FIXUP WFW\r
+       PUSHJ     P,SREQ                ;SEARCH FOR EXISTING REQUEST WFW\r
+       JRST    SYM3A           ;EXISTING REQUEST FOUND WFW\r
+SYM3X1:        TLNN W,100000   ;CHECK SYMBOL TABLE FIXUP\r
+       JRST SYM3X2     ;NO\r
+       MOVE V,1(B)     ;MUST BE LAST SYMBOL DEFINED. GET SYMBOL\r
+       XOR V,W         ;CHECK FOR IDENTITY\r
+       TDNE V,[XWD 77777,-1]   ;BUT IGNORE HIGH 3 BITS\r
+       POPJ P,         ;NOT SAME, ASSUME NOT LOADED LOCAL\r
+       HRRI W,2(B)     ;GET LOCATION IN RIGHT HALF\r
+       TLO W,1\r
+       SUB W,JOBREL    ;AND MAKE RELATIVE\r
+SYM3X2:        CAIL    H,(S)           ;STORE REQUEST IN UNDEF. TABLE WFW\r
+IFN EXPAND,<   PUSHJ P,XPAND7>\r
+IFE EXPAND,<   JRST SFULLC>\r
+SYM3X: IFE K,<\r
+       TLNE    N,F4SW;         FORTRAN FOUR\r
+       PUSHJ   P,MVDWN;                ADJUST TABLES IF F4>\r
+       SUB     S,SE3           ;ADVANCE UNDEFINED POINTER\r
+       MOVEM     W,2(S)                ;STORE UNDEFINED VALUE POINTER\r
+       MOVEM     C,1(S)                ;STORE UNDEFINED SYMBOL\r
+       POPJ    P,;\r
+\r
+\f\r
+;      COMBINE TWO REQUEST CHAINS\r
+\r
+SYM3A: SKIPL 2(A)      ;IS IT ADDITIVE WFW\r
+       JRST SYM3A1     ;NO, PROCESS WFW\r
+       PUSHJ P,SDEF2   ;YES, CONTINUE WFW\r
+       JRST SYM3A      ;FOUND ANOTHER WFW\r
+       JRST SYM3X2     ;REALLY NO CHAIN THERE WFW\r
+SYM3A1:        SUBI A,-2(X)  ;A=A-(-2+X(18-35)); A RELATIVE TO X WFW\r
+SYM3B: HRRZ V,A       ; SAVE CHAIN ADDRESS FOR HRRM W,@X\r
+       HRRZ A,@X ; LOAD NEXT ADDRESS IN CHAIN\r
+       JUMPN A,SYM3B  ; JUMP IF NOT THE LAST ADDR. IN CHAIN\r
+       HRRM    W,@X            ;COMBINE CHAINS\r
+       POPJ    P,;\r
+\r
+;WFW PATCH FOR ADDITIVE GLOBAL REQUESTS\r
+\r
+FIXWP: TLNN V,100000   ;CHECK FOR SYMBOL TABLE FIXUP\r
+       JRST FIXW\r
+       MOVE T,1(B)     ;SYMBOL FIXUP, MUST BE LAST SYMBOL DEFINED\r
+       XOR T,V         ;CHECK FOR SAME\r
+       TDNE T,[XWD 77777,-1]   ;EXCEPT FOR HEGH CODE BITS\r
+       POPJ P,         ;ASSUME NON-LOADED LOCAL\r
+       HRRI V,2(B)     ;GET LOCATION\r
+       SUBI V,(X)      ;SO WE CAN USE @X\r
+FIXW:  TLNE V,200000   ;IS IT LEFT HALF\r
+       JRST FIXWL\r
+       MOVE T,@X       ;GET WORD\r
+       ADD T,W         ;VALUE OF GLOBAL\r
+       HRRM T,@X       ;FIX WITHOUT CARRY\r
+       MOVSI D,200000  ;SET UP TO REMOVE DEFERED INTERNAL IF THERE\r
+       JRST SYMFIX\r
+FIXWL: HRLZ    T,W             ;UPDATE VALUE OF LEFT HALF\r
+       ADDM    T,@X            ;BY VALUE OF GLOBAL\r
+       MOVSI D,400000  ;LEFT DEFERED INTERNAL\r
+SYMFIX:        TLNN V,100000   ;CHECK FOR SYMBOL TABLE FIXUP\r
+       POPJ P,         ;NO, RETURN\r
+       ADDI V,(X)      ;GET THE LOCATION\r
+       MOVE T,-1(V)    ;GET THE SYMBOL NAME\r
+       TLNN T,40000    ;CHECK TO SEE IF INTERNAL\r
+       POPJ P,         ;NO, LEAVE\r
+       ANDCAB D,-1(V)  ;REMOVE PROPER BIT\r
+       TLNE D,600000   ;IS IT STILL DEFERED?\r
+       POPJ P,         ;YES, ALL DONE\r
+       EXCH C,D        ;NO, CHECK FOR A REQUEST FOR IT\r
+       PUSHJ P,SREQ\r
+       JRST CHNSYM     ;YES, WILL HAVE TO CALL THE FIXUP ROUTINE\r
+       MOVE C,D        ;GET C BACK\r
+       POPJ P,\r
+CHNSYM:        PUSH P,D        ;HAS THE OLD C IN IT\r
+       PUSH P,W        ;WE MAY NEED IT LATER\r
+       MOVE W,(V)      ;GET VALUE\r
+       PUSHJ P,SYM2B   ;CALL THE FOUND GLOBAL TO MATCH REQUEST ROUTINE\r
+       POP P,W\r
+       POP P,C         ;RESTORE FOR CALLER\r
+       POPJ P,         ;AND GO AWAY\r
+\r
+SYM2W: TLNN V,100000   ;SYMBOL TABLE?\r
+       JRST SYM2WA\r
+       ADD V,JOBREL    ;MAKE ABSOLUTE\r
+       SUBI V,(X)      ;GET READY TO ADD X\r
+       SYM2WA: PUSHJ P,FIXW    ;DO FIXUP\r
+       JRST SYM2W1     ;AND LOOK FOR MORE REQUESTS\r
+\r
+;END WFW PATCH\r
+\r
+\f;PATCH VALUES INTO CHAINED REQUEST\r
+SYM4:\r
+       HRRZ    T,@X            ;LOAD NEXT ADDRESS IN CHAIN\r
+       HRRM    W,@X            ;INSERT VALUE INTO PROGRAM\r
+       MOVE    V,T\r
+SYM4A: JUMPN     V,SYM4                ;JUMP IF NOT LAST ADDR. IN CHAIN\r
+       POPJ    P,\r
+\r
+IFE    K,<\r
+MVDWN: HRRZ T,MLTP\r
+IFN EXPAND,<   SUBI T,2>\r
+       CAIG    T,@X;           ANY ROOM LEFT?\r
+IFN EXPAND,<   JRST    [PUSHJ P,XPAND>\r
+                       TLOA F,FULLSW\r
+IFN EXPAND,<           JRST MVDWN\r
+                       JRST .+2]>\r
+       TLNE    F,SKIPSW+FULLSW\r
+       JRST    MVABRT; ABORT BLT\r
+       HRREI   T,-2\r
+       ADDM    T,PLTP;         ADJUST PROGRAMMER LABEL POINTER\r
+       ADDM    T,BITP;         AND BIT TABLE POINTER\r
+       ADDM    T,SDSTP;        FIRST DATA STATEMENT\r
+       ADDM    T,LTC\r
+       ADDM    T,ITC\r
+       TLNE    N,SYDAT\r
+       ADDM    T,V\r
+       ADDB    T,MLTP;         AND FINALLY TO MADE LABEL TABLE\r
+       HRLS    T;              SET UP BLT POINTER\r
+       ADD     T,[XWD 2,0]\r
+       BLT     T,(S)\r
+MVABRT:        POPJ    P,;\r
+>\r
+;HIGHEST RELOCATABLE POINT (BLOCK TYPE 4)\r
+SFULLC:        TLOE    F,FULLSW        ;PREVIOUS OVERFLOW?\r
+       JRST    FULLC           ;YES, DON'T PRINT MESSAGE\r
+       JSP     A,ERRPT         ;NO, COMPLAIN ABT OVERFLO\r
+       SIXBIT  ?SYMBOL TABLE OVERLAP#?\r
+FULLC: TLO     F,FULLSW        ;CORE OVERLAP ERROR RETURN\r
+IFE K,<        TLNE    N,F4SW\r
+       POPJ    P,>\r
+       JRST    LIB3            ;LOOK FOR MORE\r
+\r
+HIGH0: CAIE A,4  ; TEST FOR END BLOCK (OVERLAP)\r
+       JRST    LIB3\r
+HIGH:  PUSHJ     P,PRWORD              ;READ TWO DATA WORDS\r
+       HRR     R,C             ;SET NEW PROGRAM BREAK\r
+       ADDI    C,X;    BE SURE TO RELOCATE\r
+       CAILE   C,1(S)          ;TEST PROGRAM BREAK\r
+IFN EXPAND,<PUSHJ P,[  PUSHJ P,XPAND\r
+                       TLOA F,FULLSW\r
+                       JRST POPJM2\r
+                       POPJ    P,]>\r
+IFE EXPAND,<TLO        F,FULLSW>\r
+HIGH3: MOVEI   A,F.C           ;SAVE CURRENT STATE OF LOADER\r
+       BLT     A,B.C\r
+       TLNE    F,SLIBSW+LIBSW  ;NORMAL MODE EXIT THROUGH LOAD1\r
+       JRST    LIB             ;LIBRARY SEARCH EXIT\r
+       JRST LOAD1\r
+\r
+\f;STARTING ADDRESS (BLOCK TYPE 7)\r
+\r
+START: PUSHJ     P,PRWORD              ;READ TWO DATA WORDS\r
+       TLNN    N,ISAFLG                ;SKIP IF IGNORE SA FLAG ON\r
+       HRR     F,C             ;SET STARTING ADDRESS\r
+\r
+;PROGRAM NAME (BLOCK TYPE 6)\r
+\r
+NAME:  PUSHJ     P,PRWORD              ;READ TWO DATA WORDS\r
+       TLOE    N,COMFLG                ;SKIP IF COMMON NOT PREV. SET\r
+       JRST    NAME1           ;SIZE OF COMMON PREV. SET\r
+       MOVEM     W,COMSAV              ;STORE LENGTH OF COMMON\r
+       JUMPE     W,NAME2               ;JUMP IF NO COMMON IN THIS JOB\r
+       HRRI    R,@R            ;FIRST PROGRAM SET LOAD ORIGIN\r
+NAME1: CAILE H,-1(S)           ;TEST FOR AVAIL. SYMBOL SPACE\r
+IFN EXPAND,<   PUSHJ P,XPAND7>\r
+IFE EXPAND,<   JRST SFULLC>\r
+       SUBI    S,2             ;UPDATE UNDEF. TABLE POINTER\r
+       POP     B,2(S)\r
+       POP     B,1(S)\r
+       HRRZ    V,N             ;POINTER TO PREVIOUS NAME\r
+       SUBM    B,V             ;COMPUTE RELATIVE POSITIONS\r
+       HRLM    V,2(N)          ;STORE FORWARD POINTER\r
+       HRR     N,B             ;UPDATE NAME POINTER\r
+NAME2: MOVEM     C,1(B)                ;STORE PROGRAM NAME\r
+       HRRZM   R,2(B)          ;STORE PROGRAM ORIGIN\r
+       CAMG    W,COMSAV                ;CHECK COMMON SIZE\r
+       JRST    LIB3            ;COMMON OK\r
+ILC:   JSP     A,ERRPT\r
+       SIXBIT    /ILL. COMMON#/\r
+       JRST    LD2\r
+\f\r
+;ONE PASS LOCAL DEFINITION (BLOCK TYPE 10)\r
+\r
+                       ;PMP PATCH FOR LEFT HALF FIXUPS\r
+                       ;END PMP PATCH\r
+LOCD:  PUSHJ     P,RWORD               ;READ ONE DATA WORD\r
+       HLRZ    V,W             ;STORAGE POINTER IN LEFT HALF\r
+       PUSHJ     P,SYM4A               ;LINK BACK REFERENCES\r
+       JRST    LOCD\r
+\f \r
+REMSYM:        MOVE T,1(S)\r
+       MOVEM T,1(A)\r
+       MOVE T,2(S)\r
+       MOVEM T,2(A)\r
+       ADD S,SE3\r
+       MOVEM A,SVA\r
+       POPJ P,\r
+\r
+\f;SYMBOL TABLE SEARCH SUBROUTINES\r
+\r
+;      ENTERED WITH SYMBOL IN C\r
+;      RETURN IS WITH POINTER IN A IF MATCHING SYMBOL FOUND\r
+;      OTHERWISE, A SKIP ON RETURN OCCURS\r
+\r
+SREQ:  JUMPGE    S,CPOPJ1              ;JUMP IF NO UNDEF. SYMBOLS\r
+       SKIPA     A,S           ;LOAD REQUEST SEARCH POINTER\r
+SDEF:  MOVE    A,B             ;LOAD DEF. SYMBOL SEARCH POINTER\r
+SDEF1: CAMN    C,1(A)\r
+       POPJ    P,                      ;SYMBOLS MATCH, RETURN\r
+SDEF2: ADD     A,SE3\r
+       JUMPL     A,SDEF1\r
+IFE K,<        JRST    CPOPJ1          ;SYMBOL NOT FOUND SKIPS ON RETURN>\r
+IFN K,<\r
+CPOPJ1:        AOS     (P)             ;TRA 2,4\r
+       POPJ    P,              ;...>\r
+\r
+;RELOCATION AND BLOCK INPUT\r
+\r
+PRWORD:   PUSHJ     P,RWORD            ;READ A WORD PAIR\r
+       MOVE    C,W             ;LOAD C WITH FIRST DATA WORD\r
+       TRNE    E,377777                ;TEST FOR END OF BLOCK\r
+       JRST    RWORD1          ;INPUT SECOND WORD OF PAIR\r
+       MOVEI     W,0           ;NO SECOND WORD, ASSUME ZERO\r
+       POPJ    P,\r
+\r
+RWORD: TRNN    E,377777                ;TEST FOR END OF BLOCK\r
+       JRST    LOAD1           ;RETURN TO LOAD THE NEXT BLOCK\r
+RWORD1:   AOBJN     E,RWORD2           ;JUMP IF DATA WORD NEXT\r
+       PUSHJ     P,WORD                ;READ CONTROL WORD\r
+       MOVE    Q,W             ;DON'T COUNT RELOCATION WORDS\r
+       HRLI    E,-22           ;SET RELOCATION WORD BYTE COUNT\r
+RWORD2:   PUSHJ     P,WORD             ;READ INPUT WORD\r
+       JUMPGE    Q,RWORD3              ;TEST LH RELOCATION BIT\r
+       HRLZ    T,R\r
+       ADD     W,T             ;LH RELOCATION\r
+RWORD3:   TLNE Q,200000                ;TEST RH RELOCATION BIT\r
+       HRRI    W,@R            ;RH RELOCATION\r
+       LSH     Q,2\r
+       POPJ    P,\r
+\r
+\f;PRINT STORAGE MAP SUBROUTINE\r
+\r
+PRMAP: PUSHJ   P,FSCN1 ;LOAD OTHER FILES FIRST\r
+       PUSHJ   P,CRLFLF        ;START NEW PAGE\r
+       HRRZ    W,R\r
+       PUSHJ     P,PRNUM0\r
+       JSP     A,ERRPT7\r
+       SIXBIT  ?IS THE PROGRAM BREAK@?\r
+       PUSHJ   P,CRLF          ;START STORAGE MAP\r
+       JSP     A,ERRPT0        ;PRINT HEADER\r
+       SIXBIT  ?STORAGE MAP@?\r
+       HLRE    A,B\r
+       MOVNS     A\r
+       ADDI    A,(B)\r
+PRMAP1:   SUBI A,2\r
+       SKIPL     C,1(A)                ;LOAD SYMBOL, SKIP IF DELETED\r
+       TLNE    C,300000                ;TEST FOR LOCAL SYMBOL\r
+       JRST    PRMAP4          ;IGNORE LOCAL SYMBOLS\r
+       TLNN    C,040000\r
+       PUSHJ     P,CRLF                ;PROGRAM NAME\r
+       PUSHJ     P,PRNAM1              ;PRINT SYMBOL AND VALUE\r
+       TLNE    C,040000\r
+       JRST    PRMAP3          ;GLOBAL SYMBOL\r
+       HLRE    C,W             ;POINTER TO NEXT PROG. NAME\r
+       JUMPGE    C,PRMAP2              ;JUMP IF LAST PROGRAM NAME\r
+       ADDI    C,2(A)          ;COMPUTE LOC. OF FOLLOWING NAME\r
+       SKIPA     T,@C          ;LOAD ORIGIN OF FOLLOWING PROG.\r
+PRMAP2:   HRRZ T,R             ;LOAD PROGRAM BREAK\r
+       SUBM    T,W             ;SUBTRACT ORIGIN TO GET LENGTH\r
+       PUSHJ     P,PRNUM               ;PRINT PROGRAM LENGTH\r
+       PUSHJ     P,CRLF\r
+       TLNN    N,ALLFLG                ;SKIP IF LIST ALL MODE IS ON\r
+       TRNE    W,777777                ;SKIP IF ZERO LENGTH PROGRAM\r
+       JRST    PRMAP3\r
+       JUMPE     C,PRMAP5              ;JUMP IF LAST PROGRAM\r
+       SKIPA     A,C           ;SKIP GLOBALS, ZERO LENGTH PROG.\r
+PRMAP3:   PUSHJ     P,CRLF\r
+PRMAP4:   CAILE     A,(B)              ;TEST FOR END OF SYMBOL TABLE\r
+       JRST    PRMAP1\r
+PRMAP5:\r
+\r
+\f;LIST UNDEFINED GLOBALS\r
+\r
+PMS:   PUSHJ   P,FSCN1 ;LOAD FILES FIRST\r
+       JUMPGE  S,PMS3          ;JUMP IF NO UNDEFINED GLOBALS\r
+       HLLOS 42                ;SET SOME ERROR TO ABORT EXECUTION\r
+       PUSHJ   P,FCRLF         ;START THE MESSAGE\r
+       PUSHJ   P,PRQ           ;PRINT ?\r
+       HLRE    W,S             ;COMPUTE NO. OF UNDEF. GLOBALS\r
+       MOVMS     W\r
+       LSH     W,-1            ;<LENGTH OF LIST>/2\r
+       PUSHJ     P,PRNUM0\r
+       JSP     A,ERRPT7\r
+       SIXBIT    /UNDEFINED GLOBALS@/\r
+       MOVE    A,S             ;LOAD UNDEF. POINTER\r
+PMS2:  PUSHJ     P,CRLF\r
+       PUSHJ   P,PRQ           ;PRINT ?\r
+       PUSHJ     P,PRNAM0              ;PRINT SYMBOL AND POINTER\r
+       ADD     A,SE3\r
+       JUMPL     A,PMS2\r
+       PUSHJ   P,CRLF          ;SPACE AFTER LISTING\r
+\r
+;LIST NUMBER OF MULTIPLY DEFINED GLOBALS\r
+\r
+PMS3:  SKIPN   W,MDG           ;ANY MULTIPLY DEFINED GLOBALS\r
+       JRST    PMS4            ;NO, EXCELSIOR\r
+       HLLOS 42                ;ANOTHER WAY TO LOSE\r
+       PUSHJ   P,FCRLF         ;ROOM AT THE TOP\r
+       PUSHJ   P,PRQ           ;PRINT ?\r
+       PUSHJ   P,PRNUM0        ;NUMBER OF MULTIPLES\r
+       JSP     A,ERRPT7        ;REST OF MESSAGE\r
+       SIXBIT  ?MULTIPLY DEFINED GLOBALS@?\r
+PMS4:  TLNE    N,AUXSWE        ;AUXILIARY OUTPUT DEVICE?\r
+       OUTPUT  2,              ;INSURE A COMPLETE BUFFER\r
+       POPJ    P,              ;RETURN\r
+\r
+\f;ENTER FILE ON AUXILIARY OUTPUT DEVICE\r
+\r
+IAD2:  ENTER   2,DTOUT         ;WRITE FILE NAME IN DIRECTORY\r
+       JRST    IMD3            ;NO MORE DIRECTORY SPACE\r
+       POPJ    P,\r
+\r
+IMD3:  JSP     A,ERRPT         ;DIRECTORY FULL ERROR\r
+       SIXBIT    /DIR. FULL@/\r
+       JRST    LD2\r
+\r
+;PRINT THE 6 DIGIT OCTAL ADDRESS IN W\r
+\r
+;      ACCUMULATORS USED: D,T,V\r
+\r
+PRNAM0:   MOVE C,1(A)          ;LOAD SYMBOL\r
+PRNAM1:   MOVE W,2(A)          ;LOAD VALUE\r
+PRNAM: PUSHJ     P,PRNAME\r
+PRNUM: PUSHJ     P,SPACES\r
+PRNUM0:   MOVE V,PRNUM2                ;LOAD BYTE POINTER TO RH. OF W\r
+       MOVNI     D,6           ;LOAD CHAR. COUNT\r
+PRNUM1:   ILDB T,V             ;LOAD DIGIT TO BE OUTPUT\r
+       ADDI    T,60            ;CONVERT FROM BINARY TO ASCII\r
+       PUSHJ     P,TYPE2\r
+       AOJL    D,PRNUM1                ;JUMP IF MORE DIGITS REMAIN\r
+       POPJ    P,\r
+\r
+PRNUM2:   XWD  220300,W\r
+\r
+;YE OLDE RECURSIVE NUMBER PRINTER\r
+;PRINTS Q, WITH LEADING ZEROES SUPPRESSED; USES A AND T\r
+\r
+RCNUM: IDIVI Q,12              ;RADIX DECIMAL\r
+       ADDI A,"0"\r
+       HRLM A,(P)\r
+       SKIPE Q\r
+       PUSHJ P,RCNUM\r
+       HLRZ T,(P)\r
+       JRST TYPE2\r
+\r
+\f;PRINT FOUR SPACES\r
+\r
+SPACES:   PUSHJ     P,SP1\r
+SP1:   PUSHJ     P,SPACE\r
+SPACE: MOVEI     T,40\r
+       JRST    TYPE2\r
+\r
+;SYMBOL PRINT - RADIX 50\r
+\r
+;      ACCUMULATORS USED: D,T\r
+\r
+PRNAME:   MOVE T,C             ;LOAD SYMBOL\r
+       TLZ     T,740000                ;ZERO CODE BITS\r
+       MOVNI     D,6           ;LOAD CHAR. COUNT\r
+SPT:   IDIVI     T,50          ;THE REMAINDER IS THE NEXT CHAR.\r
+       HRLM    V,(P)           ;STORE IN LH. OF PUSHDOWN LIST\r
+       AOSGE     D                     ;SKIP IF NO CHARS. REMAIN\r
+       PUSHJ     P,SPT         ;RECURSIVE CALL FOR NEXT CHAR.\r
+       HLRZ    T,(P)           ;LOAD FROM LH. OF PUSHDOWN LIST\r
+       JUMPE     T,TYPE                ;BLANK\r
+       ADDI    T,60-1\r
+       CAILE     T,71\r
+       ADDI    T,101-72\r
+       CAILE     T,132\r
+       SUBI    T,134-44\r
+       CAIN    T,43\r
+       MOVEI     T,56\r
+       JRST    TYPE2\r
+;PRINT A WORD OF SIXBIT CHARACTERS IN AC W\r
+\r
+;      ACCUMULATORS USED: Q,T,D\r
+\r
+PWORD: MOVNI     Q,6           ;SET CHARACTER COUNT TO SIX\r
+PWORD1:   MOVE D,LSTPT         ;ENTER HERE WITH Q PRESET\r
+PWORD2:   ILDB T,D             ;LOAD NEXT CHAR. TO BE OUTPUT\r
+       PUSHJ     P,TYPE                ;OUTPUT CHARACTER\r
+       AOJL    Q,PWORD2\r
+       POPJ    P,\r
+\r
+\f;ERROR MESSAGE PRINT SUBROUTINE\r
+\r
+;      FORM OF CALL:\r
+\r
+;      JSP     A,ERRPT\r
+;      SIXBIT    /<MESSAGE>/\r
+\r
+;      ACCUMULATORS USED: T,V,C,W\r
+\r
+ERRPT: TLO     F,FCONSW        ;INSURE TTY OUTPUT\r
+       PUSHJ   P,CRLF          ;ROOM AT THE TOP\r
+       PUSHJ   P,PRQ           ;START OFF WITH ?\r
+ERRPT0:   PUSH P,Q             ;SAVE Q\r
+       SKIPA     V,ERRPT5\r
+ERRPT1:   PUSHJ     P,TYPE\r
+       ILDB    T,V\r
+       CAIN    T,40\r
+       JRST    ERRPT4\r
+       CAIN    T,5\r
+       JRST    ERRPT9\r
+       CAIE    T,3\r
+       JRST    ERRPT1\r
+       SKIPN     C,DTIN\r
+       JRST    ERRPT4\r
+       MOVNI     Q,14\r
+       MOVEI     W,77\r
+ERRPT2:   TDNE C,W\r
+       JRST    ERRPT3\r
+       LSH     W,6\r
+       AOJL    Q,ERRPT2\r
+ERRPT3:   MOVE W,ERRPT6\r
+       PUSHJ     P,PWORD1\r
+       SKIPN     W,DTIN1\r
+       JRST    ERRPT4\r
+       LSH     W,-6\r
+       TLO     W,160000\r
+       MOVNI     Q,4\r
+       PUSHJ     P,PWORD1\r
+ERRPT4:   PUSHJ     P,CRLF\r
+ERRP41:        POP     P,Q\r
+       TLZ     F,FCONSW        ;ONE ERROR PER CONSOLE\r
+       AOS     V               ;PROGRAM BUMMERS BEWARE:\r
+       JRST    @V              ;V HAS AN INDEX OF A\r
+\r
+ERRPT5:   POINT     6,0(A)\r
+ERRPT6:   SIXBIT    / FILE /\r
+\r
+\fERRPT8:       TLO     F,FCONSW        ;INSURE TTY OUTPUT\r
+       PUSHJ   P,PRQ           ;START WITH ?\r
+       CAIGE   T,140           ;IS IT A NON-PRINTING CHAR?\r
+       CAIL    T,40\r
+       JRST    ERRP8\r
+       PUSH    P,T\r
+       MOVEI     T,136         ;UP ARROW\r
+       PUSHJ     P,TYPE2\r
+       POP     P,T\r
+       ADDI    T,100           ;CONVERT TO PRINTING CHAR.\r
+ERRP8: PUSHJ     P,TYPE2\r
+ERRPT7:   PUSHJ     P,SPACE\r
+       JRST    ERRPT0\r
+\r
+ERRPT9:   MOVEI     V,@V\r
+       PUSH    P,V\r
+       JSP     A,ERRPT7\r
+       SIXBIT  ?ILLEGAL -LOADER@?\r
+       POP     P,V\r
+       JRST    ERRP41\r
+\r
+;PRINT QUESTION MARK\r
+\r
+PRQ:   PUSH    P,T             ;SAVE\r
+       MOVEI   T,"?"           ;PRINT ?\r
+       PUSHJ   P,TYPE2         ;...\r
+       POP     P,T             ;RESTORE\r
+       POPJ    P,              ;RETURN\r
+\r
+\f;INPUT - OUTPUT INTERFACE\r
+\r
+;BINARY INPUT SUBROUTINE - RETURNS A WORD IN W\r
+IFE K,<\r
+WORDPR:        PUSHJ   P,WORD          ;GET FIRST WORD OF PAIR\r
+       MOVE    C,W             ;KEEP IT HANDY>\r
+WORD:  SOSG    BUFR2           ;SKIP IF BUFFER NOT EMPTY\r
+       JRST    WORD2\r
+WORD1: ILDB    W,BUFR1         ;PICK UP 36 BIT WORD\r
+       POPJ    P,\r
+\r
+WORD2: INPUT     1,                    ;GET NEXT BUFFER LOAD\r
+       STATUS    1,W           ;GET DEVICE STATUS FROM MONITOR\r
+       TRNE    W,IODEND                ;TEST FOR EOF\r
+       JRST    EOF             ;END OF FILE EXIT\r
+       TRNN    W,IOBAD         ;TEST FOR DATA ERROR\r
+       JRST    WORD1           ;DATA OK - CONTINUE LOADING\r
+       JSP     A,ERRPT         ;DATA ERROR - PRINT MESSAGE\r
+       SIXBIT    /INPUT ERROR#/\r
+       JRST    LD2             ;GO TO ERROR RETURN\r
+;TYPEOUT SUBROUTINE - THE CHARACTER SUPPLIED IN T IS CONVERTED TO ASCII\r
+;AND IS OUTPUT ON THE CONSOLE AND/OR THE SPECIFIED LOADER MAP OUTPUT\r
+;DEVICE\r
+\r
+CRLFLF:   PUSHJ     P,CRLF\r
+FCRLF: TLO     F,FCONSW        ;INSURE TTY OUTPUT\r
+CRLF:  MOVEI     T,15          ;CARRIAGE RETURN LINE FEED\r
+       PUSHJ     P,TYPE2\r
+       MOVEI     T,12-40               ;LINE FEED IN PSEUDO SIXBIT\r
+TYPE:  MOVEI     T,40(T)               ;CONVERT SIXBIT TO ASCII\r
+TYPE2: TLNN    N,AUXSWI        ;IS THER AN AUXILIARY DEVICE?\r
+       JRST    TYPE3           ;NO, DONT OUTPUT TO IT\r
+       TLON    N,AUXSWE        ;IS AUX. DEV. ENTERED?\r
+       PUSHJ   P,IAD2          ;NOPE, DO SO!\r
+       SOSG    ABUF2           ;SPACE LEFT IN BUFFER?\r
+       OUTPUT  2,              ;CREATE A NEW BUFFER\r
+       IDPB    T,ABUF1         ;DEPOSIT CHARACTER\r
+       TLNN    F,FCONSW        ;FORCE OUTPUT TO CONSOLE TOO?\r
+       POPJ    P,              ;NOPE\r
+TYPE3: SKIPN   BUFO2           ;END OF BUFFER\r
+       OUTPUT  3,              ;FORCE OUTPUT NOW\r
+       IDPB    T,BUFO1         ;DEPOSIT CHARACTER\r
+       CAIN    T,12            ;END OF LINE\r
+       OUTPUT  3,              ;FORCE AN OUTPUT\r
+       POPJ    P,\r
+\r
+\fSE3:  XWD     2,2             ;SYMBOL POINTER INCREMENT\r
+LSTPT: POINT     6,W           ;CHARACTER POINTER TO W\r
+PDLPT: XWD     -41,PDLST-1;    INITIAL PUSHDOWN POINTER\r
+COMM:  SQUOZE    0,.COMM.\r
+PDSAV: 0                               ;SAVED PUSHDOWN POINTER\r
+COMSAV:   0                            ;LENGTH OF COMMON\r
+MDG:   0                       ;COUNTER FOR MUL DEF GLOBALS\r
+PDLST: BLOCK   40\r
+\r
+F.C:   0\r
+       0       ;STORE N HERE\r
+       0       ;STORE X HERE\r
+       0       ;STORE H HERE\r
+       0       ;STORE S HERE\r
+       0       ;STORE R HERE\r
+B.C:   0\r
+F.I:   0                       ;INITIAL F - FLAGS\r
+       0                       ;INITIAL N\r
+       XWD     V,LDEND         ;INITIAL X - LOAD PROGRAM AFTER LOADER\r
+       EXP     LDEND+JOBPRO    ;INITIAL H - INITIAL PROG BREAK\r
+       0                       ;INITIAL S\r
+       XWD     W,JOBPRO        ;INITIAL R - INITIAL RELOC\r
+       0                       ;INITIAL B\r
+\f;BUFFER HEADERS AND HEADER HEADERS\r
+\r
+BUFO:  0                               ;CONSOLE INPUT HEADER HEADER\r
+BUFO1: 0\r
+BUFO2: 0\r
+\r
+BUFI:  0                               ;CONSOLE OUTPUT HEADER HEADER\r
+BUFI1: 0\r
+BUFI2: 0\r
+\r
+ABUF:  0                       ;AUXILIARY OUTPUT HEADER HEADER\r
+ABUF1: 0\r
+ABUF2: 0\r
+\r
+BUFR:  0                               ;BINARY INPUT HEADER HEADER\r
+BUFR1: 0\r
+BUFR2: 0\r
+\r
+DTIN:  0                               ;DECTAPE INPUT BLOCK\r
+DTIN1: 0\r
+       0\r
+DTIN2: 0\r
+\r
+DTOUT: 0                               ;DECTAPE OUTPUT BLOCK\r
+DTOUT1:   0\r
+       0\r
+       0\r
+\r
+       TTYL=52                 ;TWO TTY BUFFERS\r
+IFE K,<        BUFL=406                ;TWO DTA BUFFERS FOR LOAD>\r
+IFN K,<        BUFL=203                ;ONE DTA BUFFER FOR LOAD>\r
+       ABUFL=203               ;ONE DTA BUFFER FOR AUX DEV\r
+TTY1:  BLOCK     TTYL          ;TTY BUFFER AREA\r
+BUF1:  BLOCK   BUFL            ;LOAD BUFFER AREA\r
+AUX:   BLOCK   ABUFL           ;AUX BUFFER AREA\r
+ZEROS: REPEAT 4,<0>\r
+\r
+IFN RPGSW,<CTLIN:      BLOCK 3\r
+CTLNAM:        BLOCK 3\r
+CTLBUF:        BLOCK 203+1\r
+>\r
+\fIOBKTL=40000\r
+IOIMPM=400000\r
+       IODERR=200000\r
+       IODTER=100000\r
+       IODEND=20000\r
+\r
+IOBAD=IODERR+IODTER+IOBKTL+IOIMPM\r
+\r
+       INTERN    PWORD,DTIN,DTOUT,LDEND\r
+       INTERN    WORD,LD,BEG,PDLST,LOAD\r
+       INTERN    CRLF,TYPE,PMS,PRMAP\r
+       INTERN    F,P,X,H,S,R,B,N,T,V,W,C,E,Q,A,D\r
+\r
+       EXTERN  JOBDDT,JOBFF,JOBSA,JOBREL,JOBSYM,JOBUSY,JOB41\r
+\r
+;END HERE IF 1K LOADER REQUESTED.\r
+IFN K, <LITS:  LIT\r
+       VAR\r
+LDEND: END     LD\r
+>\r
+\r
+\f;HERE BEGINS FORTRAN FOUR LOADER\r
+\r
+F4LD:\r
+       HRRZ    V,R;            SET PROG BREAK INTO V\r
+       MOVEM   V,LLC;          SAVE FIRST WORD ADDRESS\r
+       MOVEI   W,-2(S);        GENERATE TABLES\r
+       TLO     N,F4SW\r
+       HRRZM   W,MLTP;         MADE LABELS\r
+       HRRZM   W,PLTP;         PROGRAMMER LABELS\r
+       ADD     W,[POINT 1,1];  GENERATE BIT-BYTE POINTER\r
+       MOVEM   W,BITP\r
+       MOVEM   W,SDSTP;        FIRST DATA STATEMENT\r
+       AOS     SDSTP;\r
+       MOVE    W,[JRST ALLOVE] ;LAST DATA STATEMENT\r
+       MOVEM   W,(S)\r
+       HRREI   W,-^D36;        BITS PER WORDUM\r
+       MOVEM   W,BITC;         BIT COUNT\r
+       PUSHJ P,BITWX+1         ;MAKE SURE OF ENOUGH SPACE\r
+\r
+TEXTR: PUSHJ   P,WORD;         TEXT BY DEFAULT\r
+       HLRZ    C,W\r
+       CAIN    C,-1\r
+       JRST    HEADER;         HEADER\r
+       MOVEI   C,1;            RELOCATABLE\r
+       PUSHJ   P,BITW;         SHOVE AND STORE\r
+       JRST    TEXTR;          LOOP FOR NEXT WORD\r
+\r
+ABS:   SOSG    BLKSIZ; MORE TO GET\r
+       JRST    TEXTR;          NOPE\r
+ABSI:  PUSHJ   P,WORD;\r
+       MOVEI   C,0;            NON-RELOCATABLE\r
+       PUSHJ   P,BITW;         TYPE 0\r
+       JRST    ABS\r
+\r
+\f;PROCESS TABLE ENTRIES\r
+\r
+MDLB:  TLNE    F,FULLSW+SKIPSW;        MADE LABEL PROC\r
+       JRST    GLOBDF;         NO ROOM AT THE IN\r
+       HLRZ    C,MLTP;         GET PRESENT SIZE\r
+       CAMGE   C,BLKSIZ;       IF NEW SIZE BIGGER, STR-R-RETCH\r
+       PUSHJ   P,SMLT\r
+       HRRZ    C,MLTP;         GET BASE\r
+MLPLC: ADD     C,BLKSIZ;       MAKE INDEX\r
+       TLNN    F,FULLSW+SKIPSW;        DONT LOAD\r
+       HRRZM   V,(C);          PUT AWAY DEFINITION\r
+GLOBDF:        PUSHJ   P,WORD\r
+       TLNE    F,FULLSW+SKIPSW ;SKIPPING THIS PROG?\r
+       JRST    TEXTR           ;YES, DON'T DEFINE\r
+       MOVEI   C,(V);          AND LOC\r
+       EXCH    W,C\r
+       PUSHJ   P,SYMXX;        PUT IN DDT-SYMBOL TABLE\r
+       PUSHJ   P,BITWX+1\r
+       JRST    TEXTR\r
+\r
+PLB:   TLNE    F,FULLSW+SKIPSW\r
+       JRST    GLOBDF\r
+       HLRZ    C,PLTP;         PRESENT SIZE\r
+       CAMGE   C,BLKSIZ\r
+       PUSHJ   P,SPLT\r
+       HRRZ    C,PLTP\r
+       JRST    MLPLC\r
+\r
+\f;STORE WORD AND SET BIT TABLE\r
+\r
+BITW:  TLNE    F,FULLSW+SKIPSW;        WE DONT LOAD THIS\r
+       POPJ    P,;\r
+       MOVEM   W,@X;           STORE AWAY OFFSET\r
+       IDPB    C,BITP;         STORE BIT\r
+       AOSGE   BITC;           STEP BIT COUNT\r
+       JRST    BITWX;          SOME MORE ROOM LEFT\r
+       HRREI   C,-^D36;        RESET COUNT\r
+       MOVEM   C,BITC\r
+       SOS     PLTP\r
+       SOS     BITP;           ALL UPDATED\r
+IFE EXPAND,<HRL C,MLTP\r
+       SOS MLTP\r
+       HRR     C,MLTP>\r
+IFN EXPAND,<HRRZ       C,MLTP;         TO ADDRESS\r
+               SUBI C,1\r
+               CAIG C,@X\r
+               PUSHJ P,[PUSHJ P,XPAND\r
+                       POPJ P,\r
+                       ADDI C,2000\r
+                       JRST POPJM2]\r
+               SOS MLTP\r
+               HRLI C,1(C)>\r
+       HRRZ    T,SDSTP;        GET DATA POINTER\r
+       BLT     C,-1(T);        MOVE DOWN LISTS\r
+BITWX: AOS     V;              STEP LOADER LOCATION\r
+       HRRZ    T,MLTP\r
+       CAIG    T,@X;           OVERFLOW CHECK\r
+IFE EXPAND,<TLO        F,FULLSW>\r
+IFN EXPAND,<PUSHJ P,   [PUSHJ P,XPAND\r
+                       TLOA F,FULLSW\r
+                       JRST POPJM3\r
+                       POPJ P,]>\r
+       POPJ    P,;\r
+\r
+SMLT:  SUB     C,BLKSIZ;       STRETCH\r
+       MOVS    W,MLTP          ;LEFT HALF HAS OLD BASE\r
+       ADD     C,MLTP          ;RIGHT HALF HAS NEW BASE\r
+IFN EXPAND,<   HRRZS C ;GET RID OF COUNT\r
+               CAIG C,@X\r
+               PUSHJ P,[PUSHJ P,XPAND\r
+                       POPJ P,\r
+                       ADD W,[XWD 2000,0]\r
+                       ADDI C,2000\r
+                       JRST POPJM2]>\r
+       HRRM C,MLTP             ;PUT IN NEW MLTP\r
+       HLL     C,W             ;FORM BLT POINTER\r
+       ADDI    W,(C)           ;LAST ENTRY OF MLTP\r
+       HRL     W,BLKSIZ        ;NEW SIZE OF MLTP\r
+       HLLM    W,MLTP          ;...\r
+SLTC:  BLT     C,0(W);         MOVE DOWN (UP?)\r
+       POPJ    P,;\r
+\r
+SPLT:  SUB     C,BLKSIZ\r
+       MOVS    W,MLTP;\r
+       ADDM    C,PLTP\r
+       ADD     C,MLTP\r
+IFN EXPAND,<   HRRZS C\r
+               CAIG C,@X\r
+               PUSHJ P,[PUSHJ P,XPAND\r
+                       POPJ P,\r
+                       ADD W,[XWD 2000,0]\r
+                       ADDI C,2000\r
+                       JRST POPJM2]>\r
+       HRRM C,MLTP             ;PUT IN NEW MLTP\r
+       HLL     C,W\r
+       HLRZ    W,PLTP          ;OLD SIZE OF PL TABLE\r
+       ADD     W,PLTP          ;NEW BASE OF PL TABLE\r
+       HRL     W,BLKSIZ        ;NEW SIZE OF PL TABLE\r
+       HLLM    W,PLTP          ;INTO POINTER\r
+       JRST    SLTC\r
+\r
+PT1:   0\r
+\r
+\r
+\f;PROCESS END CODE WORD\r
+\r
+ENDS:  PUSHJ   P,WORD;         GET STARTING ADDRESS\r
+       TLNE F,SKIPSW\r
+       JRST ENDS1      ;FOOBAZ!!!!!!!!\r
+       JUMPE   W,ENDS1;        NOT MAIN\r
+       ADDI    W,(R);          RELOCATION OFFSET\r
+       TLNN    N,ISAFLG;       IGNORE STARTING ADDRESS\r
+       HRR     F,W;            SET SA\r
+ENDS1: PUSHJ   P,WORDPR        ;DATA STORE SIZE\r
+       HRRZM   C,PTEMP         ;NUMBER OF PERMANENT TEMPS\r
+       MOVEM   V,CCON;         START OF CONSTANTS AREA\r
+       JUMPE   W,E1;           NULL\r
+       MOVEM   W,BLKSIZ        ;SAVE COUNT\r
+       MOVEI   W,0(V)          ;DEFINE CONST.\r
+       MOVE    C,CNR50         ;...\r
+       TLNN F,SKIPSW!FULLSW\r
+       PUSHJ   P,SYMPT         ;...\r
+       PUSHJ   P,GSWD          ;STORE CONSTANT TABLE\r
+E1:    MOVEI   W,0(V);         GET LOADER LOC\r
+       EXCH    W,PTEMP;        STORE INTO PERM TEMP POINTER\r
+       ADD     W,PTEMP;        FORM TEMP TEMP ADDRESS\r
+       MOVEM   W,TTEMP;        POINTER\r
+       MOVEM   V,GSTAB;        STORE LOADER LOC IN GLOBSUB\r
+       MOVE    C,TTR50         ;DEFINE %TEMP.\r
+       TLNE F,SKIPSW!FULLSW\r
+       JRST E1A\r
+       PUSHJ   P,SYMPT         ;...\r
+       MOVE    C,PTR50         ;DEFINE (IF EXTANT) TEMP.\r
+       MOVEI   W,0(V)          ;...\r
+       CAME    W,TTEMP         ;ANY PERM TEMPS?\r
+       PUSHJ   P,SYMPT         ;YES, DEFINE\r
+E1A:   PUSHJ   P,WORD;         NUMBER OF GLOBSUBS\r
+       JUMPE   W,E11\r
+       MOVEM   W,BLKSIZ        ;SIZE OF GLOBSUB\r
+       PUSHJ   P,GSWD          ;STORE GLOBSUB TABLE\r
+E11:   MOVEM   V,STAB;         SCALARS\r
+       PUSHJ   P,WORD;         HOW MANY?\r
+       JUMPE   W,E21;          NONE\r
+       PUSHJ   P,GSWDPR        ;STORE SCALAR TABLE\r
+E21:   MOVEM   V,ATAB;         ARRAY POINTER\r
+       PUSHJ   P,WORD;         COMMENTS FOR SCALARS APPLY\r
+       JUMPE   W,E31\r
+       PUSHJ   P,GSWDPR        ;STORE ARRAY TABLE\r
+E31:   MOVEM   V,AOTAB;        ARRAYS OFFSET\r
+       PUSHJ   P,WORD;         SAME COMMENTS AS ABOVE\r
+       JUMPE   W,E41\r
+       PUSHJ   P,GSWDPR        ;STORE ARRAY OFFSET TABLE\r
+E41:   PUSHJ   P,WORD;         TEMP, SCALAR, ARRAY SIZE\r
+       TLNE    F,FULLSW!SKIPSW ;SKIPPING THIS PROG?\r
+       MOVEI   W,0             ;DON'T ACCEPT GLOB SUBPROG REQUESTS\r
+       MOVEM   V,CTAB;         SETUP COMMON TABLE POINTER\r
+       ADD     W,GSTAB;        GLOBAL SUBPROG BASE\r
+       MOVEM   W,COMBAS;       START OF COMMON\r
+       PUSHJ   P,WORD;         COMMON BLOCK SIZE\r
+       HRRZM   W,BLKSIZ\r
+       JUMPE   W,PASS2;        NO COMMON\r
+COMTOP:        PUSHJ   P,WORDPR        ;GET A COMMON PAIR\r
+       PUSHJ   P,SDEF;         SEARCH\r
+       JRST    COMYES;         ALREADY THERE\r
+       HRLS    W\r
+       HRR     W,COMBAS;       PICK UP THIS COMMON LOC\r
+       TLNN F,SKIPSW!FULLSW\r
+       PUSHJ   P,SYMXX;        DEFINE IT\r
+       MOVS    W,W;            SWAP HALFS\r
+       ADD     W,COMBAS;       UPDATE COMMON LOC\r
+       HRRM    W,COMBAS;       OLD BASE PLUS NEW SIZE\r
+       HLRZS   W;              RETURN ADDRESS\r
+       TLZ     C,400000\r
+       TLNN F,SKIPSW!FULLSW\r
+       PUSHJ   P,SYMXX\r
+COMCOM:        PUSHJ   P,CWSTWX        ;STORE A WORD PAIR\r
+       SOS     BLKSIZ\r
+       SOSLE   BLKSIZ\r
+       JRST    COMTOP\r
+       JRST    PASS2\r
+\r
+COMYES:        TLNE F,SKIPSW\r
+       JRST COMCOM     ;NO ERRORS IF SKIPPING\r
+       HLRZ    C,2(A);         PICK UP DEFINITION\r
+       CAMLE   W,C;            CHECK SIZE\r
+       JRST    ILC;            ILLEGAL COMMON\r
+       MOVE    C,1(A);         NAME\r
+       HRRZ    W,2(A); BASE\r
+       JRST    COMCOM\r
+\r
+\f\r
+PRSTWX:        PUSHJ   P,WORDPR        ;GET A WORD PAIR\r
+CWSTWX:        EXCH    C,W             ;SPACE TO STORE FIRST WORD OF PAIR?\r
+       PUSHJ   P,WSTWX         ;...\r
+       EXCH    C,W             ;THERE WAS; IT'S STORED\r
+WSTWX: TLNE    F,FULLSW!SKIPSW ;SPACE FOR ANOTHER WORD?\r
+       POPJ    P,              ;NOPE, RETURN\r
+       MOVEM   W,@X            ;YES, STORE IT.\r
+       JRST    BITWX           ;TELL THE TABLES ABOUT IT; THEN RETURN\r
+\r
+\r
+GSWD:  PUSHJ   P,WORD          ;GET WORD FROM TABLE\r
+       PUSHJ   P,WSTWX         ;STASH IT\r
+       SOSE    BLKSIZ          ;FINISHED?\r
+       JRST    GSWD            ;NOPE, LOOP\r
+       POPJ    P,              ;TRA 1,4\r
+\r
+GSWDPR:        MOVEM   W,BLKSIZ        ;KEEP COUNT\r
+GSWDP1:        PUSHJ   P,PRSTWX        ;GET AND STASH A PAIR\r
+       SOS     BLKSIZ          ;FINISHED?\r
+       SOSLE   BLKSIZ          ;...\r
+       JRST    GSWDP1          ;NOPE, LOOP\r
+       POPJ    P,              ;TRA 1,4\r
+\r
+\f;BEGIN HERE PASS2 TEXT PROCESSING\r
+\r
+PASS2: ADDI V,(X)\r
+       MOVEM V,TOPTAB  ;SAVE FOR OVERLAP CHECKING\r
+       TLNE    F,FULLSW+SKIPSW;        ABORT?\r
+       JRST    ALLOVE;         YES\r
+       MOVE    V,LLC           ;PICK UP PROGRAM ORIGIN\r
+       CAML    V,CCON          ;IS THIS A PROGRAM?\r
+       JRST    FBLKD           ;NO, GO LOOK FOR FIRST BLK DATA\r
+       TLOE    N,PGM1          ;YES, IS THIS FIRST F4 PROG?\r
+       JRST    NOPRG           ;NO\r
+       HRR     W,COMBAS        ;YES, PLACE PROG BREAK IN LH\r
+       HRLM    W,JOBCHN(X)     ;FOR CHAIN\r
+NOPRG: HRRZ    W,PLTP;         GET PROG TABLE BASE\r
+       HLRZ    C,PLTP;         AND SIZE\r
+       ADD     W,C;            COMPUTE END OF PROG TABLE\r
+       ADD     W,[POINT 1,1];  AND BEGINNING OF BIT TABLE\r
+       EXCH    W,BITP;         SWAP POINTERS\r
+PASS2B:        ILDB    C,BITP;         GET A BIT\r
+       JUMPE   C,PASS2C;       NO PASS2 PROCESSING\r
+       PUSHJ   P,PROC;         PROCESS A TAG\r
+       JRST    PASS2B;         MORE TO COME\r
+       JRST    ENDTP;\r
+\r
+PROC:  LDB     C,[POINT 6,@X,23];      TAG\r
+       SETZM   MODIF;          ZERO TO ADDRESS MODIFIER\r
+       TRZE    C,40;\r
+       AOS     MODIF\r
+       HRLM    C,ENDTAB;       ERROR SETUP\r
+       MOVEI   W,TABDIS;       HEAD OF TABLE\r
+       HLRZ    T,(W);          GET ENTRY\r
+       CAME    T,C;            CHECK\r
+       AOJA    W,.-2\r
+       HRRZ    W,(W);          GET DISPATCH\r
+       LDB     C,[POINT 12,@X,35]\r
+       JRST    (W);            DISPATCH\r
+\r
+TABDIS:        XWD 11,PCONS;           CONSTANTS\r
+       XWD 06,PGS;             GLOBAL SUBPROGRAMS\r
+       XWD 20,PST;             SCALARS\r
+       XWD 22,PAT;             ARRAYS\r
+       XWD 01,PATO;            ARRAYS OFFSET\r
+       XWD 00,PPLT;            PROGRAMMER LABELS\r
+       XWD 31,PMLT;            MADE LABESL\r
+       XWD 26,PPT;             PERMANENT TEMPORARYS\r
+       XWD 27,PTT;             TEMPORARY TEMPORARYS\r
+ENDTAB:        XWD 00,LOAD4A;          ERRORS\r
+\r
+PASS2C:        PUSHJ   P,PASS2A\r
+       JRST    PASS2B\r
+       JRST    ENDTP\r
+\r
+\f;DISPATCH ON A HEADER\r
+\r
+HEADER:        CAMN    W,[EXP -2];     END OF PASS ONE\r
+       JRST    ENDS\r
+       LDB     C,[POINT 12,W,35];      GET SIZE\r
+       MOVEM   C,BLKSIZ\r
+       ANDI    W,770000\r
+       JUMPE   W,PLB;  PROGRAMMER LABEL\r
+       CAIN    W,500000;       ABSOLUTE BLOCK\r
+       JRST    ABSI;\r
+       CAIN    W,310000;       MADE LABEL\r
+       JRST    MDLB;           MADE LABEL\r
+       CAIN    W,600000\r
+       JRST    GLOBDF\r
+       CAIN    W,700000;       DATA STATEMENT\r
+       JRST    DATAS\r
+       JRST    LOAD4A;         DATA STATEMENTS WILL GO HERE\r
+\r
+TOPTAB:        0       ;TOP OF TABLES\r
+CTAB:  0;      COMMON\r
+ATAB:  0;      ARRAYS\r
+STAB:  0;      SCALARS\r
+GSTAB: 0;      GLOBAL SUBPROGS\r
+AOTAB: 0;      OFFSET ARRAYS\r
+CCON:  0;      CONSTANTS\r
+PTEMP: 0;      PERMANENT TEMPS\r
+TTEMP: 0;      TEMPORARY TEMPS\r
+COMBAS:        0;      BASE OF COMMON\r
+LLC:   0;      PROGRAM ORIGIN\r
+BITP:  0;      BIT POINTER\r
+BITC:  0;      BIT COUNT\r
+PLTP:  0;      PROGRAMMER LABEL TABLE\r
+MLTP:  0;      MADE LABEL TABLE\r
+SDS:   0       ;START OF DATA STATEMENTS\r
+SDSTP: 0       ;START OF DATA STATEMENTS POINTER\r
+BLKSIZ:        0;      BLOCK SIZE\r
+MODIF: 0;      ADDRESS MODIFICATION +1\r
+TTR50: XWD     136253,114765   ;RADIX 50 %TEMP.\r
+PTR50: XWD     100450,614765   ;RADIX 50 TEMP.\r
+CNR50: XWD     112320,235025   ;RADIX 50 CONST.\r
+\r
+\f;ROUTINES TO PROCESS POINTERS\r
+\r
+PCONS: ADD     C,CCON;         GENERATE CONSTANT ADDRESS\r
+       SOJA    C,PCOMX         ;ADJUST FOR 1 AS FIRST ENTRY\r
+\r
+PSTA:  PUSHJ   P,SWAPSY        ;NON-COMMON SCALARS AND ARRAYS\r
+       ADDI    C,(R);          RELOCATE\r
+PCOM1: PUSHJ   P,SYDEF         ;...\r
+PCOMX: ADD     C,MODIF         ;ADDR RELOC FOR DP\r
+       HRRM    C,@X;           REPLACE ADDRESS\r
+PASS2A:        AOS     V;              STEP READOUT POINTER\r
+       CAML    V,CCON          ;END OF PROCESSABLES?\r
+CPOPJ1:        AOS     (P);            SKIP\r
+       POPJ    P,;\r
+\r
+PAT:   SKIPA   W,ATAB          ;ARRAY TABLE BASE\r
+PST:   MOVE    W,STAB          ;SCALAR TABLE  BASE\r
+       ROT     C,1             ;SCALE BY 2\r
+       ADD     C,W             ;ADD IN TABLE BASE\r
+       ADDI    C,-2(X);        TABLE ENTRY\r
+       HLRZ    W,(C);          CHECK FOR COMMON\r
+       JUMPE   W,PSTA;         NO COMMON\r
+       PUSHJ   P,COMDID        ;PROCESS COMMON\r
+       JRST    PCOM1\r
+\r
+COMDID:        LSH     W,1             ;PROCESS COMMON TABLE ENTRIES\r
+       ADD     W,CTAB;         COMMON TAG\r
+       ADDI    W,-2(X);        OFFSET\r
+       PUSHJ   P,SWAPSY;       GET SYMBOL AND SET TO DEFINED\r
+       ADD     C,1(W);         BASE OF COMMON\r
+       POPJ    P,              ;RETURN\r
+\r
+PATO:  ROT     C,1\r
+       ADD     C,AOTAB;        ARRAY OFFSET\r
+       ADDI    C,-2(X);        LOADER OFFSET\r
+       MOVEM   C,CT1;          SAVE CURRENT POINTER\r
+       HRRZ    C,1(C);         PICK UP REFERENCE POINTER\r
+       ANDI    C,7777; MASK TO ADDRESS\r
+       ROT     C,1;            ALWAYS A ARRAY\r
+       ADDI    C,-2(X)\r
+       ADD     C,ATAB\r
+       HLRZ    W,(C);          COMMON CHECK\r
+       JUMPE   W,NCO\r
+       PUSHJ   P,COMDID        ;PROCESS COMMON\r
+       PUSHJ   P,SYDEF\r
+       MOVE    C,CT1\r
+       HRRE    C,(C)\r
+       ADD     C,1(W)\r
+       JRST    PCOMX\r
+\r
+\fNCO:  PUSHJ   P,SWAPSY;\r
+       ADDI    C,(R)           ;DEFINE SYMBOL IN TRUE LOC\r
+       PUSHJ   P,SYDEF         ;...\r
+       MOVE    C,CT1\r
+       HRRZ    C,(C)           ;OFFSET ADDRESS PICKUP\r
+       ADDI    C,(R)           ;WHERE IT WILL BE\r
+       JRST    PCOMX           ;STASH ADDR AWAY\r
+\r
+PTT:   ADD     C,TTEMP;        TEMPORARY TEMPS\r
+       SOJA    C,PCOMX         ;ADJUST FOR 1 AS FIRST ENTRY\r
+\r
+PPT:   ADD     C,PTEMP;        PERMANENT TEMPS\r
+       SOJA    C,PCOMX         ;ADJUST FOR 1 AS FIRST ENTRY\r
+\r
+PGS:   ADD     C,GSTAB;        GLOBSUBS\r
+       ADDI    C,-1(X);        OFFSET\r
+       MOVE    C,(C)\r
+       TLC     C,640000;       MAKE A REQUEST\r
+       PUSHJ P,TBLCHK          ;CHECK FOR OVERLAP\r
+       MOVEI   W,(V);          THIS LOC\r
+       HLRM    W,@X;           ZERO RIGHT HALF\r
+       PUSHJ   P,SYMXX\r
+       JRST    PASS2A\r
+\r
+SYDEF: TLNE    N,SYDAT         ;SYMBOL WANTS DEFININITION?\r
+       POPJ    P,              ;NO, GO AWAY\r
+       PUSH    P,C             ;SAVE THE WORLD\r
+       PUSH    P,W\r
+       PUSHJ P,TBLCHK  ;CHECK FOR OVERLAP\r
+       MOVE    W,C\r
+       SKIPE   C,T     ;PICKUP VALUE\r
+       PUSHJ   P,SYMXX\r
+       POP     P,W\r
+       POP     P,C\r
+       POPJ    P,;\r
+\r
+PMLT:  ADD     C,MLTP\r
+       SKIPA\r
+PPLT:  ADD     C,PLTP\r
+       HRRZ    C,(C)\r
+       JRST    PCOMX\r
+\r
+SYMXX: PUSH    P,V\r
+       PUSHJ   P,SYMPT\r
+       POP     P,V\r
+       POPJ    P,;\r
+\r
+SWAPSY:        MOVEI   T,0;            SET TO EXCHANGE DEFS\r
+       EXCH    T,1(C);         GET NAME\r
+       HRRZ    C,(C)           ;GET VALUE\r
+       POPJ    P,\r
+TBLCHK:        HRRZ W,MLTP     ;GETT TOP OV TABLES\r
+       SUBI W,2\r
+       CAMG W,TOPTAB   ;WILL IT OVERLAP\r
+IFE EXPAND,<TLO F,FULLSW>\r
+IFN EXPAND,<   JRST    [PUSHJ P,XPAND\r
+                       TLOA F,FULLSW\r
+                       JRST TBLCHK\r
+                       JRST .+1]>\r
+       POPJ P,\r
+\r
+\f;END OF PASS2\r
+\r
+ALLOVE:        TLZ     N,F4SW          ;END OF F4 PROG\r
+       TLNE F,FULLSW!SKIPSW\r
+       JRST HIGH3\r
+       HRR     R,COMBAS        ;TOP OF THE DATA\r
+       HRR     V,R             ;IS THIS THE HIGHEST LOC YET?\r
+       CAIG    H,@X            ;...\r
+       MOVEI   H,@X            ;YES, TELL THE WORLD\r
+       CAMG    H,SDS           ;HIGHEST LOC GREATER THAN DATA STATEMENTS?\r
+       JRST    HIGH3           ;NO, RETURN\r
+       ADDI    H,1(S)          ;YES, SET UP MEANINGFUL ERROR COMMENT\r
+       SUB     H,SDS           ;...\r
+       TLO     F,FULLSW        ;INDICATE OVERFLO\r
+       JRST    HIGH3           ;RETURN\r
+\r
+DATAS: TLNE    F,FULLSW+SKIPSW\r
+       JRST    DAX\r
+       MOVEI   C,(S)           ;ADDR OF WORD UNDER SYMBOL TABLE\r
+       MOVN    W,BLKSIZ        ;HOW FAR DOWN TO BLT\r
+       ADDM    W,PLTP          ;UPDATE TABLE POINTERS\r
+       ADDM    W,BITP          ;...\r
+       ADDM    W,SDSTP         ;...\r
+       ADD     C,W             ;RH(C):= WHEN TO STOP BLT\r
+       HRL     C,MLTP          ;SOURCE OF BLTED DATA\r
+       ADD     W,MLTP          ;UPDATE, GET DESTINATION OF BLT DATA\r
+IFN EXPAND,<   HRRZS W ;GET RID OF LEFT HALF\r
+               CAIG W,@X\r
+               PUSHJ P,[PUSHJ P,XPAND\r
+                       POPJ P,\r
+                       ADDI W,2000\r
+                       ADD C,[XWD 2000,2000]\r
+                       JRST POPJM2]>\r
+       HRRM W,MLTP             ;NO SET THIS SO EXTRA CORE NOT ZEROED\r
+       HLL     W,C             ;FORM BLT POINTER\r
+       BLT     W,-1(C)         ;MOVE TABLES DOWN (BUT NOT JRST ALLOVE)\r
+       PUSHJ   P,BITWX+1\r
+DAX:   PUSHJ   P,WORD;         READ ONE WORD\r
+       TLNN    F,FULLSW+SKIPSW\r
+       MOVEM   W,(C)\r
+       SOSLE   BLKSIZ          ;COUNT OF DATA SEQUENCE SIZE\r
+       AOJA    C,DAX           ;INCREMENT DATA SEQUENCE DEPOSIT LOC\r
+       JRST    TEXTR;          DONE\r
+\r
+\fFBLKD:        TLOE    N,BLKD1         ;IS THIS FIRST BLOCK DATA?\r
+       JRST    ENDTP           ;NO\r
+       HRR     V,COMBAS        ;PLACE PROG BREAK IN RH FOR\r
+       HRRM    V,JOBCHN(X)     ;CHAIN\r
+ENDTP: TLNE    F,FULLSW+SKIPSW\r
+       JRST    ALLOVE\r
+       HRR     V,GSTAB\r
+ENDTP0:        CAML    V,STAB;         ANY MORE GLOBSUBS\r
+       JRST    ENDTP2;         NO\r
+       MOVE    C,@X;           GET SUBPROG NAME\r
+       PUSHJ   P,SREQ;         IS IT ALLREADY REQUESTED\r
+       AOJA    V,ENDTP0;       YES\r
+       PUSHJ   P,SDEF;         OR DEFINED\r
+       AOJA    V,ENDTP0;       YES\r
+       PUSHJ P,TBLCHK\r
+       MOVEI W,0               ;PREPARE DUMMY LINK\r
+       TLNN    F,FULLSW+SKIPSW;        ABORT\r
+       PUSHJ   P,SYM3X;        PUT IN DUMMY REQUEST\r
+       PUSHJ   P,BITWX+1;      OVERLAP CHECK\r
+       AOJA    V,ENDTP0\r
+ENDTP2:        SETZM   PT1\r
+       HRR V,SDSTP\r
+IFN EXPAND,<   SUBI V,(X)\r
+               CAMG V,COMBAS\r
+               JRST    [PUSHJ P,XPAND\r
+                       TLOA F,FULLSW\r
+                       JRST .-3\r
+                       JRST .+1]\r
+               HRR V,SDSTP>\r
+       HRRZM   V,SDS           ;DATA STATEMENT LOC\r
+ENDTP1:        SUBI    V,(X);          COMPENSATE FOR OFFSET\r
+       MOVE    W,@X;   GET WORD\r
+       TLNE    W,-1;           NO LEFT HALF IMPLIES COUNT\r
+       JRST    DODON;          DATA DONE\r
+       ADD     W,[MOVEI W,3]\r
+       ADDI    W,@X\r
+       EXCH    W,@X\r
+       AOS     V\r
+       ADD     W,@X;           ITEMS COUNT\r
+       MOVEM   W,ITC\r
+       MOVE    W,[MOVEM W,LTC]\r
+       MOVEM   W,@X;           SETUP FOR DATA EXECUTION\r
+       AOS     V\r
+       MOVE    W,[MOVEI W,0]\r
+       EXCH    W,@X\r
+       MOVEM   W,ENC;          END COUNT\r
+       AOS     V\r
+       MOVEI   W,@X\r
+       ADDM    W,ITC\r
+LOOP:  MOVE    W,@X\r
+       HLRZ    T,W;            LEFT HALF INST.\r
+       ANDI    T,777000\r
+       CAIN    T,254000        ;JRST?\r
+       JRST    WRAP            ;END OF DATA\r
+       CAIN    T,260000        ;PUSHJ?\r
+       JRST    PJTABL(W)       ;DISPATCH VIA TABLE\r
+       CAIN    T,200000;       MOVE?\r
+       AOJA    V,INNER\r
+       CAIN    T,270000;       ADD?\r
+       JRST    ADDOP\r
+       CAIN    T,221000;       IMULI?\r
+       AOJA    V,LOOP\r
+       CAIE    T,220000;       IMUL?\r
+       JRST    LOAD4A;         NOTA\r
+INNER: HRRZ    T,@X;           GET ADDRESS\r
+       TRZE    T,770000;       ZERO TAG?\r
+       SOJA    T,CONPOL;       NO, CONSTANT POOL\r
+       SUB     T,PT1;          SUBTRACT INDUCTION NUMBER\r
+       ASH     T,1\r
+       SOS     T;              FORM INDUCTION POINTER\r
+       HRRM    T,@X\r
+       HLRZ    T,@X\r
+       ADDI    T,P\r
+       HRLM    T,@X\r
+       AOJA    V,LOOP\r
+\r
+\fCONPOL:       ADD     T,ITC;  CONSTANT BASE\r
+       HRRM    T,@X\r
+       AOJA    V,LOOP\r
+\r
+ADDOP: HRRZ    T,@X\r
+       TRZE    T,770000\r
+       SOJA    T,CONPOL\r
+SKIPIN:        AOJA    V,LOOP\r
+\r
+PJTABL:        JRST    DWFS            ;PUSHJ 17,0\r
+       AOSA    PT1             ;INCREMENT DO COUNT\r
+       SOSA    PT1;            DECREMENT DO COUNT\r
+       SKIPA   W,[EXP DOINT.]\r
+       MOVEI   W,DOEND.\r
+       HRRM    W,@X\r
+       AOJA    V,SKIPIN        ;SKIP A WORD\r
+\r
+DWFS:  MOVEI   W,DWFS.\r
+       HRRM    W,@X\r
+       AOS     V\r
+       TLO     N,SYDAT\r
+       PUSHJ   P,PROC;         PROCESS THE TAG\r
+       JRST    LOAD4A          ;DATA STATEMENT BELOW CODE TOP\r
+       JRST    LOOP            ;PROPER RETURN\r
+\r
+DOINT.:        POP     P,V;            GET ADDRESS OF INITIAL VALUE\r
+       PUSH    P,(V);          STORE INDUCTION VARIABLE\r
+       AOS     V\r
+       PUSH    P,V;            INITIAL ADDRESS\r
+       JRST    (V)\r
+\r
+DOEND.:        HLRZ    T,@(P)\r
+       ADDM    T,-2(P);        INCREMENT\r
+       HRRZ    T,@(P);         GET FINAL VALUE\r
+       CAMGE   T,-2(P);        END CHECK\r
+       JRST    DODONE;         WRAP IT UP\r
+       POP     P,(P);          BACK UP POINTER\r
+       JRST    @(P)\r
+\r
+\fDODONE:       POP     P,-1(P);        BACK UP ADDRESS\r
+       POP     P,-1(P)\r
+       JRST    CPOPJ1          ;RETURN\r
+\r
+WRAP:  MOVE    W,ENC;          NUMBER OF CONSTANTS\r
+       ADD     W,ITC;          CONSTANT BASE\r
+       MOVEI   C,(W);          CHAIN\r
+       HRRM    C,@X\r
+       MOVEI   V,(W);          READY TO GO\r
+       JRST    ENDTP1\r
+\r
+DODON: TLZ     N,RCF!SYDAT!DZER        ;DATA STATEMENT FLAGS\r
+       MOVE    W,PTEMP         ;TOP OF PROG\r
+       ADDI    W,(X)           ;+OFFSET\r
+       MOVE    C,COMBAS        ;TOP OF DATA\r
+       ADDI    C,(X)           ;+OFFSET\r
+SECZER:        CAML    W,C             ;ANY DATA TO ZERO?\r
+       JRST    @SDS            ;NO, DO DATA STATEMENTS\r
+       CAML    W,SDS           ;IS DATA BELOW DATA STATEMENTS?\r
+       TLO     F,FULLSW        ;NO, INDICATE OVERFLO\r
+       TLNN    F,FULLSW+SKIPSW ;SHOULD WE ZERO?\r
+       SETZM   (W)             ;YES, DO SO\r
+       TLON    N,DZER          ;GO BACK FOR MORE?\r
+       AOJA    W,SECZER        ;YES, PLEASE\r
+       CAMLE   C,SDS           ;ALL DATA BELOW DATA STATEMENTS?\r
+       MOVE    C,SDS           ;ALL ZEROED DATA MUST BE\r
+       HRLI    W,-1(W)         ;SET UP BLT POINTER TO ZERO DATA\r
+       TLNN    F,FULLSW+SKIPSW ;SHOULD WE ZERO?\r
+       BLT     W,-1(C)         ;YES, DO SO\r
+       JRST    @SDS            ;GO DO DATA STATEMENTS\r
+\r
+\fDREAD:        TLNE    N,RCF;          NEW REPEAT COUNT NEEDED\r
+       JRST    FETCH;          NO\r
+       MOVE    W,LTC\r
+       MOVEM   W,LTCTEM\r
+       MOVE    W,@LTC;         GET A WORD\r
+       HLRZM   W,RCNT;         SET REPEAT COUNT\r
+       HRRZM   W,WCNT;         SET WORD COUNT\r
+       POP     W,(W);          SUBTRACT ONE FROM BOTH HALFS\r
+       HLLM    W,@LTC;         DECREMENT REPEAT COUNT\r
+       AOS     W,LTC;          STEP READOUT\r
+       TLO     N,RCF\r
+FETCH: MOVE    W,@LTC\r
+       AOS     LTC\r
+       SOSE    WCNT\r
+       POPJ    P,;\r
+       SOSN    RCNT\r
+       JRST    DOFF.\r
+       MOVE    V,LTCTEM;       RESTORE READOUT\r
+       MOVEM   V,LTC\r
+DOFF.: TLZ     N,RCF;          RESET DATA REPEAT FLAG\r
+       POPJ    P,;\r
+\r
+DWFS.: MOVE    T,(P)\r
+       AOS     (P)\r
+       MOVE    T,(T);          GET ADDRESS\r
+       HLRZM   T,DWCT;         DATA WORD COUNT\r
+       HRRES   T\r
+       ADD     T,W;            OFFSET\r
+       ADDI    T,(X);          LOADER OFFSET\r
+DWFS.1:        PUSHJ   P,DREAD         ;GET A DATA WORD\r
+       CAML    T,SDS           ;BELOW BEGINNING OF DATA STATEMENTS\r
+       TLO     F,FULLSW        ;YES, INDICATE OVERFLO\r
+       TLNN    F,FULLSW+SKIPSW ;LOAD THE NEXT DATA ITEM?\r
+       MOVEM   W,(T)           ;YES, STORE IT\r
+       AOS     T\r
+       SOSE    W,DWCT;         STEP DOWN AND TEST\r
+       JRST    DWFS.1          ;ONE MORE TIME, MOZART BABY!\r
+       POPJ    P,;\r
+\r
+\r
+\f;LITERAL TABLE\r
+\r
+LITS:  LIT\r
+       VAR\r
+CT1:   0               ;TEMP FOR C\r
+LTC:   0\r
+ITC:   0\r
+ENC:   0\r
+WCNT:  0               ;DATA WORD COUNT\r
+RCNT:  0               ;DATA REPEAT COUNT\r
+\r
+LTCTEM:        0               ;TEMP FOR LTC\r
+DWCT:  0               ;DATA WORD COUNT\r
+LDEND: END     LD\r
+\r
diff --git a/src/loader.52 b/src/loader.52
new file mode 100644 (file)
index 0000000..2f8528d
--- /dev/null
@@ -0,0 +1,5251 @@
+       SUBTTL  RP GRUEN/NGP/WFW/DMN  V.052     7-SEP-70
+; RFS 11-30-70
+;      TURNED ON FAILSW,SAILSW FOR NIH USAGE.
+; DCS 1-24-71
+;      ADDITIONS FOR SAIL (SHARED EXECS, UPDATED STANSW)
+
+; REG 7-17-71
+;      TURN ON REENT FEATURES
+
+       VLOADER==52
+       VPATCH==0               ;DEC PATCH LEVEL
+       VCUSTOM==<SIXBIT /   SG1/>              ;NON-DEC PATCH LEVEL
+                               ;SAISEG VERSION 1
+
+       LOC <JOBVER==137>
+       XWD VCUSTOM,VLOADER+1000*VPATCH
+       RELOC
+
+COMMENT        *       ASSEMBLY FEATURE SWITCHES (ACTION WHEN NON-ZERO)
+
+       SWITCHES ON (NON-ZERO) IN DEC VERSION
+SEG2SW         GIVES TWO SEGMENT CODE (IF MACRO ALLOWS IT)
+PURESW         GIVES PURE CODE (VARIABLES IN LOW SEG)
+REENT          GIVES REENTRANT CAPABILITY PDP-10
+       (REENT=0 FOR PDP-10/30 OR PDP-6 OR EARLY PDP-10)
+RPGSW          INCLUDE CCL FEATURE
+TEMP           INCLUDE TMPCOR FEATURE
+DMNSW           SYMBOL TABLE WILL BE MOVED DOWN FROM TOP OF CORE
+KUTSW           GIVES CORE CUTBACK ON /K
+EXPAND          FOR AUTOMATIC CORE EXPANSION
+PP             ALLOW PROJ-PROG #
+DIDAL          GIVES DIRECT ACCESS LIBRARY SEARCH MODE
+ALGSW          WILL LOAD ALGOL OWN BLOCK (TYPE 15)
+
+       SWITCHES OFF (ZERO) IN DEC VERSION
+K              GIVES 1KLOADER - NO F4
+L               FOR LISP LOADER
+SPMON          GIVES SPMON LOADER (MONITOR LOADER)
+TEN30          FOR 10/30 LOADER
+STANSW          GIVES STANFORD FEATURES
+LNSSW          GIVES LNS VERSION
+FAILSW         INCLUDE PROVISIONS FOR SPECIAL FAIL FIXUPS.
+LDAC            MEANS LOAD CODE INTO ACS
+       (LDAC DOES NOT WORK WITH KUTSW=1.CORE UUO CLEARS JOBBLT)
+WFWSW          GIVES BLOCK TYPE 13 (VARIABLS INTO LOW SEG)
+SYMARG         ACCEPT SYMBOLIC (GLOBAL) ARGUMENTS FOR SWITCHES
+SPCHN          WILL DO SPECIAL OVERLAYING
+SAILSW         GIVES BLOCK TYPE 15 (FORCE LOAD OF REL FILES)
+               AND 16 (FORCE SEARCH OF LIBRARIES) FOR SAIL
+*
+
+COMMENT/
+AT STANFORD WE USE
+       STANSW, SAILSW, FAILSW, AND REENT ALL ON
+       ALGSW, PURESW AND SEG2SW ALL OFF
+/
+       STANSW==0
+       SAILSW==0
+       FAILSW==0
+       REENT==1
+       ALGSW==0
+       PURESW==0
+       SEG2SW==0
+     
+
+\fSUBTTL        DEFAULT ASSEMBLY SWITCH SETTINGS
+
+IFNDEF SPMON,<SPMON=0>
+IFN SPMON,<    TEN30==1
+               K==1>
+
+IFNDEF L,<L=0>
+
+IFNDEF TEN30,<TEN30=0>
+
+IFN TEN30!L,<  RPGSW=0
+               PP=0
+IFNDEF DMNSW,< DMNSW=0>
+DIDAL==1
+IFNDEF DIDAL,< DIDAL=0>
+               ALGSW=0
+               PURESW=0
+               REENT=0
+               LDAC=0
+               KUTSW=0
+               SEG2SW=0
+               NAMESW=0>
+IFN TEN30,<    EXPAND=0>
+
+IFNDEF K,<K=0>
+
+STANSW==0
+IFNDEF STANSW,<STANSW=0>
+IFN STANSW,<
+               FAILSW=1
+               TEMP==0
+               REENT==1>
+
+IFNDEF LNSSW,<LNSSW=0>
+IFN LNSSW,<LDAC=1
+       PP=0>
+
+FAILSW==1
+IFNDEF FAILSW,<FAILSW=0>
+
+IFNDEF RPGSW,<RPGSW==1>
+IFN RPGSW,<PP==1>      ;REQUIRE DISK FOR CCL
+IFE RPGSW,<TEMP=0>
+
+IFNDEF PP,<PP==1>
+IFN L,<PP==1>
+
+IFNDEF TEMP,<TEMP==1>
+
+IFNDEF NAMESW,<NAMESW==1>
+
+IFNDEF LDAC,<LDAC=0>
+IFN LDAC,<KUTSW=0>
+
+IFNDEF KUTSW,<KUTSW==1>
+
+IFNDEF EXPAND,<        IFN K,<EXPAND==0>
+               IFE K,<EXPAND==1>>
+
+IFNDEF DMNSW,<DMNSW==1>
+IFN DMNSW!LDAC,<IFNDEF SYMPAT,<SYMPAT==20>
+       IFN LDAC,<IFG 20-SYMPAT,<SYMPAT==20>>>
+
+IFNDEF REENT,<REENT==1>
+IFE REENT,<PURESW=0
+       SEG2SW=0>
+IFG STANSW,<SEG2SW==0
+       PURESW==0>
+
+IFDEF TWOSEG,<IFNDEF SEG2SW,<SEG2SW==1>>
+IFNDEF SEG2SW,<SEG2SW==0>
+IFN SEG2SW,<PURESW==1>
+
+IFNDEF PURESW,<PURESW==1>
+
+IFNDEF WFWSW,<WFWSW==0>
+
+IFN K,<SYMARG=0
+       SPCHN=0>
+
+IFNDEF SYMARG,<SYMARG==0>
+
+IFNDEF SPCHN,<SPCHN==0>
+
+IFNDEF DIDAL,<DIDAL==1>
+
+IFNDEF ALGSW,<ALGSW==0>
+
+SAILSW==1
+IFNDEF SAILSW,<SAILSW==0>
+     
+
+\fSUBTTL        ACCUMULATOR ASSIGNMENTS
+       F=0             ;FLAGS IN BOTH HALVES OF F
+       N=1             ;FLAGS IN LH, PROGRAM NAME POINTER IN RH
+       X=2             ;LOADER OFFSET
+       H=3             ;HIGHEST LOC LOADED
+       S=4             ;UNDEFINED POINTER
+       R=5             ;RELOCATION CONSTANT
+       B=6             ;SYMBOL TABLE POINTER
+       D=7
+       T=10
+       V=T+1
+       W=12            ;VALUE
+       C=W+1           ;SYMBOL
+       E=C+1           ;DATA WORD COUNTER
+       Q=15            ;RELOCATION BITS
+       A=Q+1           ;SYMBOL SEARCH POINTER
+       P=17            ;PUSHDOWN POINTER
+
+
+;MONITOR LOCATIONS IN THE USER AREA
+
+JOBDA==140
+JOBHDA==10
+
+EXTERN JOBDDT,JOBFF,JOBSA,JOBREL,JOBSYM,JOBUSY,JOB41
+IFN REENT,<    EXTERN  JOBHRL,JOBCOR>
+IFE K,<EXTERN  JOBCHN          ;RH = PROG BREAK OF FIRST BLOCK DATA
+                               ;LH = PROG BREAK OF FIRST F4 PROG>
+IFN RPGSW,<    EXTERN  JOBERR>
+IFN LDAC,<     EXTERN  JOBBLT>
+IFN FAILSW,<   EXTERN  JOBAPR>
+
+NEGOFF==400            ;NEGATIVE OFFSET OF HIGH SEGMENT
+
+
+IFN FAILSW,<;LENGTH OF PUSHDOWN LIST FOR POLISH FIXUPS
+PPDL==60>
+     
+
+\f;FLAGS        F(0 - 17)
+       CSW==1                  ;ON - COLON SEEN
+       ESW==2                  ;ON - EXPLICIT EXTENSION IDENT.
+       SKIPSW==4               ;ON - DO NOT LOAD THIS PROGRAM
+       FSW==10                 ;ON - SCAN FORCED TO COMPLETION
+       FCONSW==20              ;ON - FORCE CONSOLE OUTPUT
+IFN REENT,<HIPROG==40  ;LOADING HI PROGRAM, SET BY HISEG. CLEARED BY EOF>
+       ASW==100                ;ON - LEFT ARROW ILLEGAL
+       FULLSW==200             ;ON - STORAGE EXCEEDED
+       SLIBSW==400             ;ON - LIB SEARCH IN THIS PROG
+       RMSMSW==1000            ;REMEMBER IF LOADING WITH SYMBOLS DURING LIB SEARCH
+       REWSW==2000             ;ON - REWIND AFTER INIT
+       LIBSW==4000             ;ON - LIBRARY SEARCH MODE
+       NAMSSW==10000           ;NAME BLOCK HAS BEEN SEEN FOR THIS PROG
+       ISW==20000              ;ON - DO NOT PERFORM INIT
+       SYMSW==40000            ;ON - LOAD LOCAL SYMBOLS
+       DSW==100000             ;ON - CHAR IN IDENTIFIER
+       NSW==200000             ;ON - SUPPRESS LIBRARY SEARCH
+       SSW==400000             ;ON - SWITCH MODE
+
+
+;FLAGS N(0 - 17)
+       ALLFLG==1               ;ON - LIST ALL GLOBALS
+       ISAFLG==2               ;ON - IGNORE STARTING ADDRESSES
+       COMFLG==4               ;ON - SIZE OF COMMON SET
+IFE K,<        F4SW==10                ;F4 IN PROGRESS
+       RCF==20                 ;READ DATA COUNT
+       SYDAT==40;              SYMBOL IN DATA>
+       SLASH==100              ;SLASH SEEN
+IFE K,<        BLKD1==200              ;ON- FIRST BLOCK DATA SEEN
+       PGM1==400               ;ON FIRST F4 PROG SEEN
+       DZER==1000              ;ON - ZERO SECOND DATA WORD>
+       EXEQSW==2000            ;IMMEDIATE EXECUTION
+       DDSW==4000              ;GO TO DDT
+IFN RPGSW,<RPGF==10000         ;IN RPG MODE>
+       AUXSWI==20000           ;ON - AUX. DEVICE INITIALIZED
+       AUXSWE==40000           ;ON - AUX. DEVICE ENTERED
+IFN PP,<PPSW==100000           ;ON - READING PROJ-PROG #>
+IFN PP!SPCHN,<PPCSW==200000    ;ON - READING PROJ #>
+IFN FAILSW,<HSW==400000                ;USED IN BLOCK 11 POLISH FIXUPS>
+     
+
+\f
+;MORE FLAGS IN F (18-35)
+IFN REENT,<
+SEENHI==1              ;HAVE SEEN HI STUFF
+NOHI==2                        ;LOAD AS NON-REENTRANT>
+IFN RPGSW,<NOTTTY==4   ;DEV "TTY" IS NOT A TTY>
+NOHI6==10              ;PDP-6 TYPE SYSTEM
+IFN DMNSW,<HISYM==20   ;BLT SYMBOLS INTO HIGH SEGMENT>
+SEGFL==40              ;LOAD INTO HI-SEG>
+IFN DIDAL,<XFLG==100           ;INDEX IN CORE (BLOCK TYPE 14)
+LSTLOD==200            ;LAST PROG WAS LOADED
+DTAFLG==400            ;LIBRARY DEVICE IS A DTA (NEEDED FOR INDEXING)>
+IFN DMNSW,<DMNFLG==1000>       ;SYMBOL TABLE TO BE MOVED DOWN
+IFN REENT,<VFLG==2000  ;DO LIB SEARCH OF IMP40.REL BEFORE LIB40>
+IFN SYMARG,<ARGFL==4000        ;TREAT $%. AS RADIX-50 CHAR.>
+TWOFL==10000           ;TWO SEGMENTS IN THIS BINARY FILE
+LOCAFL==20000          ;PRINT LOCAL SYMBOLS IN MAP
+TTYFL==40000                   ;AUX. DEV. IS TTY
+
+
+IFE K,<F4FL==400000            ;FORTRAN SEEN>
+COBFL==200000                  ;COBOL SEEN
+IFN ALGSW,<ALGFL==100000       ;ALGOL SEEN>
+
+DEFINE ERROR (X,Y)<
+JSP A,ERRPT'X
+SIXBIT Y>
+
+     
+
+\fIFE K,<       TITLE   LOADER - LOADS MACRO AND FORTRAN FOUR>
+IFN K,<        TITLE   1KLOAD - LOADS MACRO>
+
+IFN PURESW,<
+IFE SEG2SW,<HISEG>
+IFN SEG2SW,<TWOSEGMENTS
+       RELOC   400000>>
+
+
+
+IFN SPCHN,<
+DSKBLK==200    ;LENGTH OF DISK BLOCKS
+VECLEN==↑D25 ;LENGTH OF VECTOR TABLE FOR OVERLAYS>
+
+IFN SAILSW,<
+RELLEN==↑D20 ;#NUMBER OF REL FILES OR LIBRARIES (MUST BE SAME)>
+
+;CALLI DEFINITIONS
+
+OPDEF  RESET   [CALLI   0]
+OPDEF  SETDDT  [CALLI   2]
+OPDEF  DDTOUT  [CALLI   3]
+OPDEF  DEVCHR  [CALLI   4]
+OPDEF  CORE    [CALLI  11]
+OPDEF  EXIT    [CALLI  12]
+OPDEF  UTPCLR  [CALLI  13]
+OPDEF  DATE    [CALLI  14]
+OPDEF  MSTIME  [CALLI  23]
+OPDEF  PJOB    [CALLI  30]
+OPDEF  SETUWP  [CALLI  36]
+OPDEF  REMAP   [CALLI  37]
+OPDEF  GETSEG  [CALLI  40]
+IFE STANSW,<
+OPDEF  SETNAM  [CALLI  43]
+>
+IFN STANSW,<
+OPDEF  SETNAM  [CALLI  400002]
+>
+OPDEF  TMPCOR  [CALLI  44]
+
+
+       MLON
+IFDEF SALL,<   SALL>
+     
+
+\fSUBTTL        CCL INITIALIZATION
+IFN RPGSW,<
+BEG:   JRST    LD      ;NORMAL INITIALIZATION
+RPGSET:        RESET           ;RESET UUO.
+IFN TEMP,<MOVEI F,CTLBUF-1     ;USE CCL BUFFER FOR COMMANDS
+       HRRM F,CTLIN+1          ;DUMMY UP BYTE POINTER
+       HRLI F,-200     ;MAKE IT AN IOWD
+       MOVEM F,TMPFIL+1
+       MOVSI F,(SIXBIT /LOA/)
+       MOVEM F,TMPFIL
+       MOVE N,[XWD 2,TMPFIL]   ;POINTER FOR TMPCOR READ
+       TMPCOR  N,              ;READ AND DELETE LOA FILE
+       JRST RPGTMP             ;NO SUCH FILE IN CORE, TRY DISK
+       IMULI N,5               ;GET CHAR COUNT
+       ADDI N,1
+       MOVEM N,CTLIN+2         ;STORE IN BUFFER HEADER
+       MOVEI N,700             ;BYTE POINTER FOR LOA FILE
+       HRLM N,CTLIN+1          ;BYTE POINTER NOW COMPLETE
+       SETOM TMPFLG            ;MARK THAT A TMPCOR READ WAS DONE
+       SETZM NONLOD            ;NOT YET STARTED SCAN
+       JRST RPGS3C             ;GET BACK IN MAIN STREAM
+RPGTMP:        SETZM TMPFLG    ;MARK AS NOT TMP>
+       INIT    17,1    ;SET UP DSK FOR COMMAND FILE INPUT.
+       SIXBIT /DSK/
+       XWD 0,CTLIN
+       JRST    NUTS    ;CAN'T INIT, GET INPUT FROM TTY.
+       MOVEI   F,3
+IFE STANSW,<
+       PJOB    N,      ;GET JOB NUMBER
+LUP:   IDIVI   N,12    ;STRIP OFF LAST DIGIT
+       ADDI    N+1,"0"-40      ;CONVERT TO SIXBIT
+       LSHC    N+1,-6  ;SAVE
+       SOJG    F,LUP   ;3 DIGITS YET?
+       HLLZ    N+2     ;YES.
+       HRRI    (SIXBIT /LOA/)  ;LOADER NAME PART OF FILE NAME.
+       MOVEM   CTLNAM
+       MOVSI   (SIXBIT /TMP/)  ;AND EXTENSION.
+       MOVEM   CTLNAM+1
+>
+IFN STANSW,<
+       MOVE    N,[SIXBIT /QQLOAD/]
+       MOVEM   N,CTLNAM
+       MOVSI   N,(SIXBIT /RPG/)
+       MOVEM   N,CTLNAM+1
+>
+       SETZM   CTLNAM+3
+       LOOKUP  17,CTLNAM       ;FILE THERE?
+       JRST    NUTS            ;NO.
+       INIT 16,1       ;GET SET TO DELETE FILE
+       SIXBIT /DSK/
+       0
+       JRST RPGS3A     ;GIVE UP
+       SETZM CTLNAM+3  ;PUT STUFF BACK AS IT WAS
+       LOOKUP 16,CTLNAM
+       JRST RPGS3B
+       SETZM CTLNAM    ;SET FOR RENAME
+IFN STANSW,<
+       SETZM   CTLNAM+3        ;RENAME SHOULD REQUIRE THIS ANYWAY?
+>
+       RENAME 16,CTLNAM
+       JFCL            ;IGNORE FAILURE
+RPGS3B:        RELEASE 16,     ;GET RID OF DEVICE
+RPGS3A:        SETZM   NONLOD          ;TO INDICATE WE HAVE NOT YET STARTED TO SCAN
+                               ;COMMAND IN FILE.
+     
+
+\fRPGS3:        MOVEI   CTLBUF  
+       MOVEM   JOBFF
+       INBUF   17,1            ;SET UP BUFFER.
+RPGS3C:        TTCALL  3,[ASCIZ /LOADING/]     ;PRINT MESSAGE THAT WE ARE STARTING.
+       SKIPE   NONLOD          ;CONTIUATION OF COMMAND?
+       JRST    RPGS2           ;YES, SPECIAL SETUP.
+CCLCHN:        MOVSI   N,RPGF          ;@ CHAIN FILES CYCLE FROM HERE
+       JRST    CTLSET          ;SET UP TTY
+
+RPGS1: PUSHJ   P,[TLNE F,ESW   ;HERE FROM FOO@ COMMAND, STORE NAME.
+                  JRST LDDT3   ;SAVE EXTENSION.
+                  TLZE F,CSW!DSW  ;AS NAME
+                  MOVEM W,DTIN ;STORE AS NAME
+                  SETZM W,DTIN1        ;TRY BLANK EXTENSION FIRST.
+                  JRST LDDT4]
+       MOVEM   0,SVRPG         ;SAVE 0 JUST IN CASE
+       SETZM   NONLOD          ;DETERMINE IF CONTINUATION.
+       MOVEI   0,2(B)          ;BY SEEING IF ANY SYMBOLS LOADED.
+       CAME    0,JOBREL
+       SETOM   NONLOD          ;SET TO -1 AND SKIP CALLI
+IFN TEMP,<SETZM TMPFLG>
+       MOVE    0,ILD1
+       MOVEM   0,RPG1
+       OPEN    17,OPEN1                ;KEEP IT PURE
+       JRST    [MOVE   W,RPG1
+               JRST    ILD5]
+       LOOKUP  17,DTIN         ;THE FILE NAME.
+       JRST    [MOVE   0,SVRPG ;RESTORE AC0=F
+               TLOE    F,ESW   ;WAS EXT EXPLICIT?
+               JRST    ILD9    ;YES, DON'T TRY AGAIN.
+               MOVEM   0,SVRPG ;SAVE AC0 AGAIN
+               MOVSI   0,(SIXBIT /TMP/)        ;TRY TMP INSTEAD
+               MOVEM   0,DTIN1
+               PUSHJ P,LDDT4   ;SET UP PPN
+               JRST    .-1]    ;TRY AGAIN
+       JRST    RPGS3
+
+RPGS2: MOVSI   0,RPGF  ;SET FLAG
+       IORM    0,F.C+N
+       TLO     N,RPGF
+       MOVE    0,SVRPG
+       JRST    LD2Q            ;BACK TO INPUT SCANNING.
+
+>
+
+     
+
+\fSUBTTL NORMAL INITIALIZATION
+
+LD:    IFE RPGSW,<BEG:>
+IFN L,< HRRZM 0,LSPXIT
+       MOVEI 0,0
+       HRRZM R,RINITL
+       RESET>
+IFE L,<IFN RPGSW,<
+       HLLZS   JOBERR          ;MAKE SURE ITS CLEAR.>
+       RESET                   ;INITIALIZE THIS JOB
+NUTS:  SETZ    N,              ;CLEAR N
+CTLSET:        SETZB   F,S             ;CLEAR THESE AS WELL
+       HLRZ    X,JOBSA         ;TOP OF LOADER
+       HRLI    X,V             ;PUT IN INDEX
+       HRRZI   H,JOBDA(X)      ;PROGRAM BREAK
+       MOVE    R,[XWD W,JOBDA] ;INITIAL RELOCATION>
+       MOVSI   E,(SIXBIT /TTY/)
+       DEVCHR  E,
+       TLNN    E,10            ;IS IT A REAL TTY?
+IFN RPGSW,<JRST        [TLNN   F,RPGF  ;IN CCL MODE?>
+               EXIT            ;NO, EXIT IF NOT TTY
+IFN RPGSW,<    TRO F,NOTTTY    ;SET FLAG
+               JRST    LD1]    ;SKIP INIT>
+       INIT    3,1             ;INITIALIZE CONSOLE
+       SIXBIT    /TTY/
+       XWD     BUFO,BUFI
+CALLEX:        EXIT                    ;DEVICE ERROR, FATAL TO JOB
+       MOVEI     E,TTY1
+       MOVEM     E,JOBFF
+       INBUF     3,1
+       OUTBUF    3,1           ;INITIALIZE OUTPUT BUFFERS
+       OUTPUT    3,                    ;DO INITIAL REDUNDANT OUTPUT
+LD1:
+IFE L,<        HRRZ    B,JOBREL        ;MUST BE JOBREL FOR LOADING REENTRANT>
+IFN L,<        MOVE    B,JOBSYM        ;USED INSTEAD OF JOBREL FOR SYMBOL TABLE FIXUPS>
+       HRRZM   B,HISTRT
+       SUB     B,SE3           ;INITIALIZE SYMBOL TABLE POINTER
+       CAILE     H,1(B)        ;TEST CORE ALLOCATION>
+       JRST    [HRRZ   B,JOBREL;TOP OF CORE
+               ADDI    B,2000  ;1K MORE
+               CORE    B,      ;TRY TO GET IT
+               EXIT            ;INSUFFICIENT CORE, FATAL TO JOB
+               JRST    LD1]    ;TRY AGAIN
+IFN EXPAND,< IFE STANSW ,<SETZ S,
+       CORE    S,              ;GET PERMITTED CORE
+       JFCL
+       LSH     S,12
+       SUBI    S,1             ;CONVERT TO NUMBER OF WORDS
+       MOVEM   S,ALWCOR        ;SAVE IT FOR XPAND TEST>>
+IFN STANSW,<
+       MOVEI   S,-1            ;THERE IS ALWAYS CORE AT STANFORD!!
+       MOVEM   S,ALWCOR         >
+
+IFN PURESW,<MOVE S,[XWD HICODE,LOWCOD]
+       BLT S,LOWCOD+CODLN-1>
+IFE L,<        MOVS    E,X             ;SET UP BLT POINTER
+       HRRI    E,1(X)>
+IFN L,<MOVS E,H
+       HRRI E,1(H)>
+       SETZM     -1(E)                 ;ZERO FIRST WORD
+       BLT     E,(B)           ;ZERO CORE UP TO THE SYMBOL AREA
+       HRRZ    S,B             ;INITIALIZE UNDEF. POINTER
+       HRR     N,B             ;INITIALIZE PROGRAM NAME POINTER
+IFE L,<        HRRI    R,JOBDA         ;INITIALIZE THE LOAD ORIGIN
+       MOVE    E,COMM          ;SET .COMM. AS THE FIRST PROGRAM
+       MOVEM     E,1(B)                ;STORE IN SYMBOL TABLE
+       HRRZM     R,2(B)                ;STORE COMMON ORIGIN>
+       MOVEI     E,F.C         ;INITIALIZE STATE OF THE LOADER
+       BLT     E,B.C
+       SETZM   MDG             ;MULTIPLY DEFINED GLOBAL COUNT
+       SETZM   STADDR          ;CLEAR STARTING ADDRESS
+IFN REENT,<MOVSI W,1
+       MOVEM W,HVAL1
+       MOVEM W,HVAL
+       MOVEM X,LOWX
+       SETZM HILOW
+       MOVEM R,LOWR
+       HRRZI   W,1     
+IFE STANSW,<   SETUWP  W,              ;SETUWP UUO.
+       TRO     F,NOHI6         ;PDP-6 COMES HERE.>
+       MOVEM   F,F.C           ;PDP-10 COMES HERE.>
+IFE L,< IFN STANSW,< TRO F,DMNFLG      ;ASSUME /B IS SAID...
+       MOVEM   F,F.C           ;AND SAVE>>
+IFN SAILSW,<MOVE W,[XWD -RELLEN-1,LIBFLS-1]    ;SET UP POINTERS
+       MOVEM W,LIBPNT# ;IN THE FORM OF AOBJN WORDS
+       MOVE W,[XWD -RELLEN-1,PRGFLS-1]
+       MOVEM W,PRGPNT#>
+IFE L,<        MOVSI   W,254200        ;STORE HALT IN JOB41
+       MOVEM   W,JOB41(X)      ;...>
+IFN L,<        MOVE W,JOBREL
+       HRRZM W,OLDJR>
+IFN SPCHN,<SETZM CHNACB        ;USED AS DEV INITED FLAG TOO>
+IFN NAMESW,<SETZM      CURNAM>
+IFN FAILSW,<MOVEI W,440000     ;SET UP THE SPECIAL BITS OF HEADNUM(ADD+POLISH)
+       MOVEM   W,HEADNM
+       SETZM   POLSW   ;SWITCH SAYS WE ARE DOING POLISH
+       MOVEI   W,PDLOV ;ENABLE FOR PDL OV
+       MOVEM   W,JOBAPR
+       MOVEI   W,200000
+       CALLI   W,16
+       SETZM LINKTB    ;ZERO OUT TABLE OF LINKS
+     
+
+\f      MOVE W,[XWD LINKTB,LINKTB+1]
+       BLT W,LINKTB+20>
+IFN DMNSW,<MOVEI W,SYMPAT
+       MOVEM W,KORSP>
+IFN KUTSW,< IFE STANSW,<SETOM CORSZ>>
+IFN KUTSW,< IFN STANSW,<SETZM CORSZ>> ;ASSUME  /K FOR KIDS...
+     
+
+\fIFN RPGSW,<JRST LD2Q>
+LD2:   IFN RPGSW,<MOVSI B,RPGF ;HERE ON ERRORS, TURN OFF RPG
+       ANDCAM B,F.C+N  ;IN CORE>
+;LOADER SCAN FOR FILE NAMES
+
+LD2Q:  MOVSI     B,F.C         ;RESTORE ACCUMULATORS
+       BLT     B,B
+       MOVE    P,PDLPT         ;INITIALIZE PUSHDOWN LIST
+       SETZM     BUFI2         ;CLEAR INPUT BUFFER POINTER
+IFE PP,<       SETZM     ILD1          ;CLEAR INPUT DEVICE NAME>
+IFN PP,<       MOVSI   T,(SIXBIT /DSK/)        ;ASSUME DSK.
+       MOVEM   T,ILD1
+       SETZM   OLDDEV  ;TO MAKE IT GO BACK AFTER /D FOR LIBSR>
+       SETZM     DTIN          ;CLEAR INPUT FILE NAME
+
+LD2B:  RELEAS    1,                    ;RELEASE BINARY INPUT DEVICE
+IFN RPGSW,<    TLNE    N,RPGF          ;NOT IF DOING CCL STUFF
+       JRST    LD2BA>
+       MOVEI     T,"*"
+       IDPB    T,BUFO1         ;OUTPUT ASTERISK TO START INPUT
+       OUTPUT    3,
+LD2BA: TLZ     F,FULLSW+ASW+ISW+CSW+ESW+SKIPSW+SLIBSW+REWSW
+LD2BP: TLNE    F,LIBSW         ;WAS LIBRARY MODE ON?
+       TLO     F,SKIPSW        ;YES, NORMAL MODE IS SKIPPING
+
+LD2D:  IFN PP,<SETZM   PPN             ;DON'T REMEMBER PPN FROM ONE FILE TO NEXT.
+LD2DB: SKIPE   W,OLDDEV                ;RESET DEVICE IF NEEDED.
+       CAMN    W,ILD1          ;IS IT SAME?
+       JRST    LD2DA           ;YES, FORGET IT.
+       TLZ     F,ISW+DSW+FSW+REWSW
+       MOVEM   W,ILD1>
+LD2DA: MOVEI     W,0           ;INITIALIZE IDENTIFIER SCAN
+       MOVEI     E,6           ;INITIALIZE CHARACTER COUNTER
+       MOVE    V,LSTPT         ;INITIALIZE BYTE POINTER TO W
+       TLZ     F,SSW+DSW+FSW   ;LEAVE SWITCH MODE
+LD3:   IFN RPGSW,<TLNE N,RPGF  ;CHECK RPG FEATURE
+       JRST    RPGRD>
+       SOSG    BUFI2           ;DECREMENT CHARACTER COUNTER
+       INPUT     3,                    ;FILL TTY BUFFER
+       ILDB    T,BUFI1         ;LOAD T WITH NEXT CHARACTER
+LD3AA: CAIN    T,175   ;OLD ALTMOD
+       MOVEI   T,33    ;NEW ONE
+       CAIL    T,140   ;LOWER CASE?
+       TRZ     T,40    ;CONVERT TO UPPER CASE
+       MOVE    Q,T
+       HRLM    Q,LIMBO         ;SAVE THIS CHAR.
+       MOVSS   LIMBO           ;AND LAST ONE
+       IDIVI     Q,11          ;TRANSLATE TO 4 BIT CODE
+       LDB     Q,LD8(A)                ;LOAD CLASSIFICATION CODE
+       CAIGE     Q,4           ;MODIFY CODE IF .GE. 4
+       TLNN    F,SSW           ;MODIFY CODE IF SWITCH MODE OFF
+       ADDI    Q,4             ;MODIFY CLASS. CODE FOR DISPATCH
+IFN SYMARG,<CAIL Q,20                  ;SKIP UNLESS SECOND FORM OF DISPATCH
+       JRST    LD3AB                   ;DIFFERENT DISPATCH>
+       HRRZ    A,LD3A(Q)               ;LOAD RH DISPATCH ENTRY
+       CAIL    Q,10            ;SKIP IF CORRECT DISPATCH ENTRY
+       HLRZ    A,LD3A-10(Q)    ;LOAD LH DISPATCH ENTRY
+       JRST    @A                      ;JUMP TO INDICATED LOCATION
+
+;COMMAND DISPATCH TABLE
+
+LD3A:  XWD     LD3,LD7B                ;IGNORED CHAR, BAD CHAR (SWITCH)
+       XWD     LD6A,LD6                ;</> OR <(>, LETTER (SWITCH)
+       XWD     LD5,LD6C                ;<:>, DIGIT (SWITCH ARG.)
+       XWD     LD5A,LD6D               ;<.>, ESCAPE SWITCH MODE <)>
+       XWD     LD5C,LD7                ;<=> OR <L. ARROW>, BAD CHAR.
+       XWD     LD5B,LD4                ;<,>, ALPHABETIC CHAR.
+       XWD     LD5D,LD4                ;<CR.>, NUMERIC CHAR.
+       XWD     LD5E1,LD7               ;<ALT MODE>, BAD CHAR. <)>
+IFN SYMARG,<XWD LD7,LD10               ;BAD CHAR,&>
+
+IFN RPGSW,<
+RPGRD1:        MOVNI T,5
+       ADDM T,CTLIN+2
+       AOS     CTLIN+1
+RPGRD: SOSG    CTLIN+2 ;CHECK CHARACTER COUNT.
+       JRST    [IFN TEMP,<SKIPE TMPFLG ;TMPCOR UUO READ DONE?
+               JRST LD2        ;YES, JUST LEAVE>
+               IN 17,0
+               JRST .+1
+               STATO 17,740000
+               JRST LD2
+               JSP A,ERRPT
+               SIXBIT /ERROR WHILE READING COMMAND FILE%/
+               JRST LD2]
+       IBP     CTLIN+1 ;ADVANCE POINTER
+     
+
+\f      MOVE    T,@CTLIN+1      ;AND CHECK FOR LINE #
+     
+
+\f      TRNE    T,1
+       JRST    RPGRD1
+       LDB     T,CTLIN+1       ;GET CHR
+       JRST    LD3AA           ;PASS IT ON>
+IFN SYMARG,<
+LD3AB: ROT     Q,-1                    ;CUT Q IN HALF
+       HRRZ    A,LD3A(Q)               ;PULL OFF RIGHT HALF OF TABLE ENTRY
+       JUMPGE  Q,@A                    ;WHICH IS CORRECT FOR EVEN ENTRIES
+       HLRZ    A,LD3A(Q)               ;BUT USE LEFT HALF FOR ODD ENTRIES
+       JRST    @A>
+     
+
+\fSUBTTL        CHARACTER HANDLING
+
+;ALPHANUMERIC CHARACTER, NORMAL MODE
+LD4:   SOJL    E,LD3           ;JUMP IF NO SPACE FOR CHAR IN W
+       CAIGE   T,141           ;WORRY ABOUT LOWER CASE LETTERS
+       SUBI    T,40            ;CONVERT FROM ASCII TO SIXBIT
+       IDPB    T,V             ;DEPOSIT CHAR OF IDENTIFIER IN W
+       TLO     F,DSW           ;SET IDENTIFIER FLAG
+       JRST    LD3             ;RETURN FOR NEXT CHARACTER
+
+;DEVICE IDENTIFIER DELIMITER <:>
+
+LD5:   PUSH    P,W             ;SAVE W
+       TLOE    F,CSW           ;TEST AND SET COLON FLAG
+       PUSHJ     P,LDF         ;FORCE LOADING
+       POP     P,W             ;RESTORE W
+       TLNE    F,ESW           ;TEST SYNTAX
+       JRST    LD7A            ;ERROR, MISSING COMMA ASSUMED
+       JUMPE     W,LD2D                ;JUMP IF NULL DEVICE IDENTIFIER
+       MOVEM     W,ILD1                ;STORE DEVICE IDENTIFIER
+IFN PP,<MOVEM  W,OLDDEV        ;WE HAVE A NEW ONE, DO IGNORE OLD.>
+       TLZ     F,ISW+DSW+FSW+REWSW     ;CLEAR OLD DEVICE FLAGS
+       JRST    LD2D            ;RETURN FOR NEXT IDENTIFIER
+
+;FILE NAME EXTENSION IDENTIFIER DELIMITER <.>
+LD5A:  IFN SYMARG,<
+       TRNE    F,ARGFL         ;IS "." SPECIAL
+       JRST    LD4             ;YES,RADIX-50>
+       TLOE    F,ESW           ;TEST AND SET EXTENSION FLAG
+       JRST    LD7A            ;ERROR, TOO MANY PERIODS
+       TLZE    F,CSW+DSW       ;SKIP IF NULL IDENT AND NO COLON
+       MOVEM     W,DTIN        ;STORE FILE IDENTIFIER
+       JRST    LD2D            ;RETURN FOR NEXT IDENTIFIER
+
+;INPUT SPECIFICATION DELIMITER <,>
+LD5B:
+IFN PP,<TLZE   N,PPCSW                 ;READING PP #?
+       JRST    [
+IFE STANSW,<   HRLM    D,PPN           ;STORE PROJ #
+               JRST    LD6A1           ];GET PROG #>
+IFN STANSW,<   PUSHJ   P,RJUST         ;RIGHT JUSTIFY W
+               HRLM    W,PPN           ;STORE PROJ NAME
+               JRST    LD2DB           ];GET PROG NAME>
+       PUSHJ   P,RBRA          ;CHECK FOR MISSING RBRA>
+       SETOM   LIMBO           ;USED TO INDICATE COMMA SEEN
+       TLZN    F,FSW           ;SKIP IF PREV. FORCED LOADING
+       PUSHJ     P,FSCN2               ;LOAD (FSW NOT SET)
+       JRST    LD2BP           ;RETURN FOR NEXT IDENTIFIER
+
+LD5B1: TLNE    F,ESW           ;TEST EXTENSION FLAG
+       JRST    LDDT3           ;EXPLICIT EXTENSION IDENTIFIER
+       TLZN    F,CSW+DSW               ;SKIP IF IDENT. OR COLON
+       POPJ    P,
+       MOVEM     W,DTIN                ;STORE FILE IDENTIFIER
+       JRST    LDDT2           ;ASSUME <.REL> IN DEFAULT CASE
+     
+
+\f;OUTPUT SPECIFICATION DELIMITER <=> OR <LEFT ARROW>
+;OR PROJ-PROG # BRACKETS <[> AND <]>
+
+LD5C:
+IFN SPCHN,<CAIN T,"="  ;DO A /= AS SWITCH
+       TLNN F,SSW
+       SKIPA
+       JRST LD6>
+IFN RPGSW,<CAIN T,"@"  ;CHECK FOR * COMMAND.
+       JRST    RPGS1>
+IFN PP,<CAIN   T,"["                   ;PROJ-PROG #?
+       JRST    [TLO    N,PPSW+PPCSW    ;SET FLAGS
+               MOVEM   W,PPNW          ;SAVE W
+               MOVEM   E,PPNE          ;SAVE E
+               MOVEM   V,PPNV          ;SAVE V
+IFE STANSW,<   JRST    LD6A2]>         ;READ NUMBERS AS SWITCHES
+IFN STANSW,<   JRST    LD2DB]>
+       CAIN    T,"]"                   ;END OF PP #?
+       JRST    [PUSHJ  P,RBRA          ;PROCESS RIGHT BRACKET
+               JRST    LD3]            ;READ NEXT IDENT>
+       TLOE    F,ASW                   ;TEST AND SET LEFT ARROW FLAG
+       JRST    LD7A                    ;ERROR, MISPLACED LEFT ARROW
+       PUSHJ     P,LD5B1               ;STORE IDENTIFIER
+       TLZN    F,ESW                   ;TEST EXTENSION FLAG
+       MOVSI     W,554160              ;ASSUME <.MAP> IN DEFAULT CASE
+       MOVEM     W,DTOUT1              ;STORE FILE EXTENSION IDENTIFIER
+       MOVE    W,DTIN                  ;LOAD INPUT FILE IDENTIFIER
+       MOVEM     W,DTOUT               ;USE AS OUTPUT FILE IDENTIFIER
+IFN SPCHN,<MOVEM W,CHNENT      ;AND FOR SPECAIL CHAINING>
+IFN PP,<MOVE   W,PPN                   ;PROJ-PROG #
+       MOVEM   W,DTOUT+3               ;...>
+       MOVE    W,ILD1                  ;LOAD INPUT DEVICE IDENTIFIER
+       MOVEM   W,LD5C1                 ;USE AS OUTPUT DEVICE IDENTIFIER
+IFN PP,<SKIPE  W,OLDDEV                ;RESTORE OLD
+       MOVEM   W,ILD1>
+;INITIALIZE AUXILIARY OUTPUT DEVICE
+       TRZ     F,TTYFL
+       TLZE    N,AUXSWI+AUXSWE         ;FLUSH CURRENT DEVICE
+       RELEASE 2,                      ;...
+       DEVCHR  W,                      ;IS DEVICE A TTY?
+       TLNE    W,10                    ;...
+       JRST    [TRO    F,TTYFL         ;TTY IS AUX. DEV.
+               JRST    LD2D]           ;YES, SKIP INIT
+       OPEN    2,OPEN2                 ;KEEP IT PURE
+       JRST    ILD5A
+       TLNE    F,REWSW                 ;REWIND REQUESTED?
+       UTPCLR  2,                      ;DECTAPE REWIND
+       TLZE    F,REWSW                 ;SKIP IF NO REWIND REQUESTED
+       MTAPE   2,1                     ;REWIND THE AUX DEV
+       MOVEI   E,AUX                   ;SET BUFFER ORIGIN
+       MOVEM     E,JOBFF
+       OUTBUF  2,1                     ;INITIALIZE SINGLE BUFFER
+       TLO     N,AUXSWI                        ;SET INITIALIZED FLAG
+IFN LNSSW,<EXCH        E,JOBFF
+       SUBI    E,AUX
+       IDIV    C,E
+       OUTBUF  2,(C)>
+       JRST    LD2D                    ;RETURN TO CONTINUE SCAN
+
+     
+
+\f;RIGHT SQUARE BRACKET (PROJ-PROG NUMBERS)
+IFN PP,<
+RBRA:  TLZN    N,PPSW          ;READING PP #?
+       POPJ    P,              ;NOPE, RETURN
+       TLZE    N,PPCSW         ;COMMA SEEN?
+       JRST    LD7A            ;NOPE, INDICATE ERROR
+IFE STANSW,<HRRM       D,PPN           ;STASH PROG NUMBER
+               TLZ     F,SSW   ;AND TURN OFF SWITCH MODE>
+IFN STANSW,<PUSHJ      P,RJUST         ;RIGHT JUSTIFY W
+       HRRM    W,PPN           ;STASH PROG NAME>
+       MOVE    W,PPNW          ;PICKUP OLD IDENT
+       MOVE    E,PPNE          ;RESTORE CHAR COUNT
+       MOVE    V,PPNV          ;RESTORE BYTE PNTR
+       POPJ    P,              ;TRA 1,4
+
+;RIGHT JUSTIFY W
+
+IFN STANSW,<
+RJUST: JUMPE   W,LD7A          ;NOTHING TO RIGHT JUSTIFY
+       TRNE    W,77            ;IS W RJUSTED YET?
+       POPJ    P,              ;YES, TRA 1,4
+       LSH     W,-6            ;NOPE, TRY AGAIN
+       JRST    .-3             ;...>>
+
+IFN SYMARG,<
+;& SELECTS A SYMBOL RATHER THAN ANUMBER FOR A SWITCH ARGUMENT
+;& MUST ALSO FOLLOW THW SYMBOL; THE FORM IS /&SYMBOL&SWITHCH
+LD10:  TRC     F,ARGFL         ;SET OR CLEAR SPECIAL CHARS.
+       TLCE    F,SSW           ;IF IN SWITCH MODE, EXIT TO GET IDENTIFIER
+       JRST    LD10B
+       PUSHJ   P,ASCR50        ;IF NOT, REENTER IT, CONVERT IDENTIFIER TO R50
+       PUSHJ   P,SDEF          ;AND SEE IF IT EXISTS
+       JRST    LD10A           ;YES IT DOES
+       PUSHJ   P,PRQ           ;NO, COMPLAIN. OUTPUT ?
+       PUSHJ   P,SPACE         ;FOLLOWED BY A SPACE
+       PUSHJ   P,PRNAME        ;FOLLOWED BY THIS SYMBOL
+       ERROR   0,</ DOESN'T EXIST@/>
+       JRST    LD2
+LD10A: MOVE    D,2(A)          ;SET D=VALUE OF SYMBOL AS NUMERIC ARG
+       TLZ     F,DSW!FSW
+       MOVEI   E,6             ;INITIALIZE NEW IDENTIFIER SCAN
+       MOVE    V,LSTPT         ;(W IS ALREADY 0)
+       JRST    LD3             ;NOW EAT SWITCH AND CONTINUE PROCESSING COMMAND
+LD10B: PUSHJ   P,FSCN1         ;FORCE SCAN TO COMPLETION TO MAKE SURE FILE IS LOADED
+       JRST    LD2DA>
+     
+
+\f
+       IFN SYMARG,<
+;CONVERT SYMBOL IN W TO RADIX-50 IN C
+;ALSO USES A
+ASCR50:        MOVEI   A,0
+R50A:  MOVEI   C,0
+       ROTC    W,6             ;C IS NEXT SIXBIT CHAR
+       CAIGE   C,20
+       JRST    R50B            ;UNDER 20, MAY BE ., $, OR %
+       CAILE   C,31
+       JRST    R50C            ;OVER 31
+       SUBI    C,20-1          ;IS NUMBER
+R50D:  IMULI   A,50
+       ADD     A,C
+       JUMPN   W,R50A          ;LOOP FOR ALL CHARS
+       MOVE    C,A             ;WIND UP WITH CHAR IN C
+       TLO     C,040000        ;MAKE IT GLOBAL DEFINITION
+       POPJ    P,
+R50B:  JUMPE   C,R50D          ;OK IF SPACE
+       CAIE    C,16            ;TEST IF .
+       JRST    .+3             ;NO
+       MOVEI   C,45            ;YES
+       JRST    R50D
+       CAIE    C,4             ;SKIP IF $
+R50E:  MOVEI   C,5             ;ASSUME % IF NOTHING ELSE
+       ADDI    C,42
+       JRST    R50D
+R50C:  CAIGE   C,41
+       JRST    R50E            ;BETWEEN 31 AND 41
+       CAILE   C,72
+       JRST    R50E            ;OVER 72
+       SUBI    C,41-13         ;IS LETTER
+       JRST    R50D>
+
+;DEFINE PUTS A SYMBOL IN THE UNDEFINED SYMBOL TABLE
+;SO LOADER CAN SCAN LIBRARY AND LOAD PROGRAMS BEFORE THEY ARE REQUESTED
+;THE FORM IS /&SYMBOL# WHERE SYMBOL IS CONVERTED TO RADIX-50
+IFN SYMARG,<
+DEFINE:        PUSHJ   P,ASCR50        ;CONVRT TO R-50
+       MOVEI   W,-2(S)         ;WHERE SYMBOL WILL GO
+       CAIG    W,(H)           ;ENOUGH ROOM
+IFN EXPAND,<PUSHJ P,[PUSHJ P,XPAND
+               TLOA    F,FULLSW
+               JRST    POPJM3
+               POPJ    P,]>
+IFE EXPAND,<TLO        F,FULLSW>
+       SUB     S,SE3           ;ADJUST POINTER
+       MOVEM   C,1(S)          ;R-50 SYMBOL
+       SETZM   2(S)            ;VALUE
+       TLZ     F,DSW!SSW       ;TURN OFF SWITCHES
+       JRST    LD2D            ;CONTINUE TO SCAN
+>
+     
+
+\fSUBTTL        TERMINATION
+;LINE TERMINATION <CARRIAGE RETURN>
+
+LD5D:
+IFN PP,<PUSHJ  P,RBRA          ;CHECK FOR UNTERMINATED PP #>
+       SKIPGE  LIMBO           ;WAS LAST CHAR. BEFORE CR A COMMA?
+       TLO     F,DSW           ;YES ,SO LOAD ONE MORE FILE
+       PUSHJ   P,FSCN          ;FORCE SCAN TO COMPLETION
+       JRST    LD2B            ;RETURN FOR NEXT LINE
+
+;TERMINATE LOADING <ALT MODE>
+
+LD5E:  JUMPE   D,LD5E1         ;ENTER FROM G COMMAND
+       TLO     N,ISAFLG        ;AND IGNORE ANY STARTING ADDRESS TO COME
+       HRRZM   D,STADDR        ;USE NUMERIC STARTING ADDRESS
+LD5E1: PUSHJ   P,CRLF          ;START A NEW LINE
+IFN RPGSW,<RELEASE 17,0                ;RELEASE COMMAND DEVICE>
+       PUSHJ   P,SASYM         ;SETUP JOBSA,JOBFF,JOBSYM,JOBUSY
+       MOVE    W,[SIXBIT ?LOADER?]     ;FINAL MESSAGE
+       PUSHJ P,BLTSET          ;SETUP FOR FINAL BLT
+       RELEASE 2,              ;RELEASE AUX. DEV.
+       RELEASE 1,0     ;INPUT DEVICE
+       RELEASE 3,0     ;TTY
+IFN SPCHN,<RELEASE 4,0 ;SPECIAL CHAINING CHANEL>
+IFN NAMESW,<HRRZ       W,HISTRT        ;IN CASE NO NAME SET, USE FIRST LOADED
+       MOVE    W,-1(W)
+       SKIPN   CURNAM
+       PUSHJ   P,LDNAM
+       SKIPE   W,CURNAM
+       CAMN    W,[SIXBIT /MAIN/]       ;FORTRAN MAIN PROG, OR MACRO NO TITLE
+       SKIPE   W,PRGNAM        ;USE BINARY FILE NAME IN EITHER CASE
+       SETNAM  W,                      ;SETNAME>
+IFN L,<JRST @LSPXIT>
+     
+
+\fIFE L,<               ;NONE OF THIS NEEDED FOR LISP
+IFN PURESW,<
+       MOVE    V,[XWD HHIGO,HIGO]
+       BLT     V,HIGONE        ;MOVE DOWN CODE TO EXIT>
+       TLNN N,EXEQSW   ;DO WE WANT TO START
+       JRST LD5E3
+IFN RPGSW,<TLNN N,RPGF ;IF IN RPG MODE
+       JRST LD5E2
+       HRRZ C,JOBERR   ;CHECK FOR ERRORS
+       JUMPE C,LD5E2   ;NONE
+EXDLTD:        TTCALL 3,[ASCIZ /?EXECUTION DELETED
+/]
+       JRST LD5E3>
+LD5E2: HRRZ W,JOBSA(X)
+       TLNE N,DDSW     ;SHOULD WE START DDT??
+       HRRZ W,JOBDDT(X)
+IFN RPGSW,<    TLNE    N,RPGF  ;IF IN RPG MODE
+       JUMPE   W,[TTCALL 3,[ASCIZ /?NO STARTING ADDRESS
+/]
+               JRST    EXDLTD]>
+       JUMPE   W,LD5E3 ;ANYTHING THERE?
+       TLOA W,(JRST)   ;SET UP A JRST
+LD5E3: SKIPA W,CALLEX  ;NO OR NO EXECUTE, SET CALLI 12
+       TTCALL 3,[ASCIZ /EXECUTION
+/]
+IFN LDAC,<     HRLZ P,BOTACS   ;SET UP FOR ACBLT
+       MOVEM W,JOBBLT+1(X)     ;SET JOBBLT
+       MOVE W,[BLT P,P]
+       MOVEM W,JOBBLT(X)>
+       MOVSI LSTAC,LODACS      ;SET UP TO BLT BLT CODE INTO ACS
+       BLT LSTAC,LSTAC
+IFN KUTSW,<SKIPGE E,CORSZ      ;DO WE WANT CORE ADJUST
+       MOVE CORAC,JFCLAC       ;NO, CLEAR COREUUO>
+IFE LDAC,<MOVE LSTAC,W         ;SET END CONDITION>
+IFN REENT,<
+       MOVSI   V,LD            ;DOES IT HAVE HISEG
+       JUMPG   V,HINOGO        ;NO,DON'T DO CORE UUO
+       MOVSI   V,1             ;SET HISEG CORE NONE ZERO
+       JRST    HIGO            ;AND GO>
+IFE REENT,<JRST 0>
+
+LODACS:        PHASE 0
+       BLT Q,(A)       ;BLT CODE DOWN
+IFN KUTSW,<CORAC:      CORE E, ;CUT BACK CORE
+JFCLAC:        JFCL    ;SHOULD NEVER HAVE AN ERROR SINCE REDUCING CORE>
+LSTAC: IFN LDAC,<JRST JOBBLT>
+IFE LDAC,<EXIT>
+DEPHASE
+> ;;;;END OF IFE L AT BEGINNING OF THIS PAGE
+     
+
+\fSUBTTL        PRINT FINAL MESSAGE
+; SET UP BLT AC'S, SETDDT, RELEAS
+
+BLTSET:        IFN RPGSW,<IFE K,<
+       JUMPE   W,.+4   ;NO MESSAGE FROM CHAIN IN CCL@>>
+       PUSHJ P,FCRLF   ;A RETURN
+       PUSHJ P,PWORD   ;AND CHAIN OR LOADER
+       PUSHJ P,SPACE
+IFN FAILSW,<MOVSI Q,-20        ;FINISH UP LINK STUFF
+FREND: HLRZ V,LINKTB+1(Q)
+       JUMPE V,NOEND
+       HRRZ A,LINKTB+1(Q)
+IFN REENT,<CAMGE V,HVAL1
+       SKIPA X,LOWX
+       MOVE X,HIGHX>
+IFN L,<CAML V,RINITL>
+       HRRM A,@X       ;PUT END OF LINK CHAIN IN PROPER PLACE
+NOEND: AOBJN Q,FREND
+IFN REENT,<MOVE X,LOWX ;RESET THINGS>>
+IFN KUTSW,<SKIPGE C,CORSZ      ;NEG MEANS DO NOT KUT BACK CORE
+       JRST NOCUT
+       JUMPE C,MINCUT  ;0 IS KUT TO MIN. POSSIBLE
+       LSH C,12        ;GET AS A NUMBER OF WORDS
+       SUBI C,1
+       CAMG C,JOBREL   ;DO WE NEED MORE THAN WE HAVE??
+       JRST TRYSML     ;NO, SEE IF NUMBER REQUESTED IS TOO SMALL
+       MOVEI Q,0
+       CORE Q,
+       JFCL            ;WE JUST WANT TO KNOW HOW MUCH
+       HRRZS Q
+       CAMGE Q,CORSZ
+       JRST CORERR
+       JRST NOCUT1     ;SET FOR DO NOT CHANGE SIZE
+TRYSML:        CAIG C,(R)      ;IS DESIRED AMOUNT BIGGER THAN NEEDED
+MINCUT:        HRRZ C,R        ;GET MIN AMOUNT
+       IORI C,1777     ;CONVERT TO A 1K MULTIPLE
+IFN DMNSW,<    TRNN F,DMNFLG   ;DID WE MOVE SYMBOLS??
+       SKIPN JOBDDT(X) ;IF NOT IS DDT THERE??
+       JRST    .+2>
+IFE DMNSW,<SKIPE JOBDDT(X)     ;IF NO SYMBOL MOVING JUST CHECK DDT>
+       JRST NOCUT      ;DO NOT CUT IF SYMBOLS AT TOP AND DDT
+NOCUT1:        MOVEM C,JOBREL(X)       ;SAVE FOR CORE UUO
+       MOVEM C,CORSZ   ;SAVE AWAY FOR LATER
+       JRST    .+2
+NOCUT: SETOM CORSZ     ;SET FOR NO CUT  BACK>
+IFN RPGSW,<IFE K,<
+       JUMPE   W,NOMAX ;NO MESSAGE IF CHAIN IN CCL@>>
+IFN L,<HRRZ Q,JOBREL
+       SUB Q,OLDJR     ;PROPER SIZE>
+IFE L,<HRRZ Q,JOBREL(X)>
+       LSH Q,-12       ;GET CORE SIZE TO PRINT
+       ADDI Q,1
+       PUSHJ P,RCNUM
+IFN REENT,<MOVE Q,HVAL
+       SUB Q,HVAL1
+       HRRZS Q
+       JUMPE   Q,NOHY          ;NO HIGH SEGMENT
+       MOVEI   T,"+"-40        ;THERE IS A HISEG
+       PUSHJ   P,TYPE
+       LSH     Q,-12
+       ADDI    Q,1
+       PUSHJ   P,RCNUM
+NOHY:>
+       MOVE W,[SIXBIT /K CORE/]
+       PUSHJ P,PWORD
+       PUSHJ P,CRLF
+IFE L,<
+IFN RPGSW,<TLNE N,RPGF 
+       JRST NOMAX      ;DO NOT PRINT EXTRA JUNK IN RPG MODE>
+       MOVE Q,JOBREL
+       LSH Q,-12
+       ADDI Q,1
+       PUSHJ P,RCNUM   ;PRINT MAX LOW CORE SIZE
+IFN REENT,<    SKIPE Q,JOBHRL  ;GET SIZE OF HIGH SEGMENT
+       PUSHJ P,[MOVEI Q,400001(Q) ;CLEAR HIGH ORDER BIT
+               MOVEI T,"+"-40  ;PRINT A HIGH CORE PART
+               PUSHJ P,TYPE
+               LSH Q,-12
+               JRST RCNUM]>
+       MOVE W,[SIXBIT /K MAX/]
+       PUSHJ P,PWORD
+IFN DMNSW,<TRNN F,DMNFLG>
+       SKIPN JOBDDT(X)
+       SKIPA Q,JOBREL(X)
+       MOVEI Q,1(S)    ;FIND THE AMOUNT OF SPACE LEFT OVER
+       SUB Q,JOBFF(X)
+       PUSHJ P,RCNUM
+       MOVE W,[SIXBIT / WORDS/]
+       PUSHJ P,PWORD
+       MOVE W,[SIXBIT / FREE/]
+       PUSHJ P,PWORD
+       PUSHJ P,CRLF    >
+NOMAX: MOVE W,JOBDDT(X)
+       SETDDT W,
+IFE TEN30,<HRLI Q,20(X)        ;SET UP BLT FOR CODE
+       HRRI Q,20>
+IFN TEN30,<HRLI Q,JOBDDT(X)
+       HRRI Q,JOBDDT>
+       HRRZ A,R
+       POPJ P,         ;WE HAVE SET R UP BY CLEVER CODE IN SASYM
+IFN KUTSW,<CORERR:     TTCALL 3,[ASCIZ /?NOT ENOUGH CORE
+/]
+       EXIT>
+     
+
+\fSUBTTL        SET UP JOBDAT
+SASYM: TLNN F,NSW
+       PUSHJ P,LIBF    ;SEARCH LIBRARY IF REQUIRED
+       PUSHJ P,FSCN    ;FORCE END OF SCAN
+IFN ALGSW,<MOVE C,[RADIX50 44,%OWN]
+       MOVE    W,%OWN          ;GET VALUE
+       TRNE    F,ALGFL         ;IF ALGOL PROG LOADED
+       PUSHJ   P,SYMPT         ;DEFINE %OWN>
+IFN RPGSW,<HLRE A,S
+       MOVNS A
+       LSH A,-1
+       ADD A,JOBERR
+       HRRM A,JOBERR>
+       PUSHJ P,PMS1    ;PRINT UNDEFS
+       HRRZ A,H        ;DO NOT CLOBBER H IF STILL INSERTING SYMBOLS
+       SUBI A,(X)      ;HIGHEST LOC LOADED INCLUDES LOC STMTS
+       CAILE A,(R)     ;CHECK AGAINST R
+       HRR R,A         ;AND USE LARGER
+IFE L,<        HRRZ    A,STADDR        ;GET STARTING ADDRESS
+       HRRM    A,JOBSA(X)      ;STORE STARTING ADDRESS
+       HRRZM R,JOBFF(X)        ;AND CURRENT END OF PROG
+       HRLM R,JOBSA(X)>
+IFN DMNSW,<MOVE C,[RADIX50 44,PAT..]   ;MARK PATCH SPACE FOR RPG
+       MOVEI W,(R)
+       SKIPE   JOBDDT(X)               ;BUT ONLY IF DDT LOADED
+       PUSHJ P,SYMPT
+IFN REENT,<TRNE        F,HISYM         ;SHOULD SYMBOLS GO IN HISEG?
+       JRST    BLTSYM          ;YES>>
+IFN DMNSW!LDAC,<               ;ONLY ASSEMBLE IF EITHER SET
+IFE LDAC,<     TRNN F,DMNFLG   ;GET EXTRA  SPACE IF SYMBOLS
+       JRST    NODDT   ;MOVED OR IF LOADING ACS>
+IFE DMNSW,<    MOVEI A,20      ;FOR LOADING ACS>
+IFN DMNSW,<    MOVE A,KORSP
+IFN LDAC,<     TRNN F,DMNFLG   ;ONLY 20 IF SYMBOLS NOT MOVED
+       MOVEI A,20>>
+       ADDI A,(R)      ;GET ACTUAL PLACE TO PUT END OF SPACE
+       ADDI A,(X)
+       CAIL A,(S)      ;DO NOT OVERWRITE SYMBOLS
+IFN EXPAND,<JRST [PUSHJ P,XPAND>
+               PUSHJ P,MORCOR
+IFN EXPAND,<   JRST .-1]>
+IFN LDAC,<HRRM R,BOTACS        ;SAVE BOTTOM OF WHERE WE PUT ACS
+       HRRZ A,R
+       ADDI A,(X)
+       HRL A,X ;SET UP BLT FROM (X) TO R(X)
+       MOVEI Q,17(A)
+       BLT A,(Q)>>
+IFN DMNSW,<TRNN F,DMNFLG       ;NOW THE CODE TO MOVE SYMBOLS
+       JRST NODDT
+       HRRZ A,R
+       ADD A,KORSP
+       MOVE W,A        ;SAVE POINTER TO FINAL LOC OF UNDEFS
+       ADDI A,(X)
+       HLLZ Q,S        ;COMPUTE LENGTH OF SYMBOL TABLE
+       ADD Q,B
+       HLROS Q
+       MOVNS Q
+       ADDI Q,-1(A)    ;GET PLACE TO STOP BLT
+       HRLI A,1(S)     ;WHERE TO BLT FROM
+       SUBI W,1(S)     ;GET AMOUNT TO CHANGE S AND B BY
+       BLT A,(Q)       ;MOVE SYMBOL TABLE
+       ADD S,W
+       ADD B,W ;CORRECT S AND B FOR MOVE
+       HRRI R,1(Q)     ;SET R TO POINT TO END OF SYMBOLS
+       SUBI R,(X)
+       SKIPN JOBDDT(X) ;IS DDT LOADED
+       JRST NODDT      ;ON THE CONTRARY, DO LEAVE SYMBOLS!!!!!
+       HRRM R,JOBFF(X)
+       HRLM R,JOBSA(X) ;AND SAVE AWAY NEW JOBFF
+IFN LDAC,<SKIPA>       ;SKIP THE ADD TO R
+NODDT:>
+IFN LDAC,<ADDI R,20>   ;MAKE SURE R IS CORRECT FOR BLT
+       MOVE A,B
+       ADDI A,1        ;SET UP JOBSYM, JOBUSY
+IFE L,<MOVEM A,JOBSYM(X)>
+IFN L,<MOVEM A,JOBSYM>
+       MOVE A,S
+       ADDI A,1
+IFE L,<MOVEM A,JOBUSY(X)
+       MOVE A,HISTRT   ;TAKE POSSIBLE REMAP INTO ACCOUNT
+       MOVEM A,JOBREL(X)       ;SET UP FOR IMEDIATE EXECUTION>
+IFN L,<MOVEM A,JOBUSY>
+IFN REENT,<
+       SKIPE A,HILOW   ;SET UP TOP LOC OF LOW CORE EXCLUDING BLOCKS
+       SUBI A,1(X)     ;IF NON-ZERO THEN IT NEEDS RELOCATION
+       HRLM A,JOBCOR(X)
+       TRNN F,SEENHI
+       POPJ P,
+       HRRZ A,HVAL
+       HRRM A,JOBHRL(X)
+       SUB A,HVAL1
+       HRLM A,JOBHRL(X)>
+       POPJ P,
+
+     
+
+\fSUBTTL        BLT SYMBOL TABLE INTO HIGH SEGMENT
+IFN DMNSW&REENT,<
+BLTSYM:        MOVE    Q,HVAL  ;GET ORIGIN OF HISEG
+       CAMN    Q,HVAL1 ;HAS IT CHANGED?
+       JRST    NOBLT   ;NO
+       HLLZ    Q,S     ;COMPUTE LENGTH OF SYMBOL TABLE
+       HLRS    S       ;PUT NEG COUNT IN BOTH HALVES
+       JUMPE   S,.+2   ;SKIP IF S IS ZERO
+       HRLI    S,-1(S) ;SUB 1 FROM LEFT TO FIX CARRY PROBLEM
+       ADD     Q,B
+       HLROS   Q
+       MOVNS   Q
+       ADD     Q,HVAL  ;ADD LENGTH OF HISEG
+       SUB     Q,HVAL1 ;BUT REMOVE ORIGIN
+       ADD     Q,HISTRT        ;START OF HISEG IN CORE
+       HRRZS   Q       ;CLEAR INDEX FROM Q
+       ADD     Q,KORSP ;SAVE SPACE FOR SYMBOL PATCHES
+       CORE    Q,      ;EXPAND IF NEEDED
+       PUSHJ   P,MORCOR
+       PUSH    P,B     ;SAVE B
+       SOJ     B,      ;REMOVE CARRY FROM ADD TO FOLLOW
+       MOVSS   B       ;SWAP SYMBOL POINTER
+       ADD     B,JOBREL
+       HRRM    B,(P)   ;SAVE NEW B
+       MOVE    Q,JOBREL
+       ADD     B,S     ;INCASE ANY UNDEFS.
+       BLT     B,(Q)   ;MOVE SYMBOLS
+       POP     P,B     ;GET NEW B
+       SUB     B,HISTRT
+       ADD     B,HVAL1
+       SOJ     B,      ;REMOVE CARRY
+       ADDI    S,(B)   ;SET UP JOBUSY
+BLTSY1:        MOVE    Q,JOBREL
+       SUB     Q,HISTRT
+       ADD     Q,HVAL1
+       SUBI    Q,1     ;ONE TOO HIGH
+       MOVEM   Q,HVAL
+       JRST    NODDT
+
+     
+
+\fNOBLT:        HRRZ    Q,HILOW ;GET HIGHEST LOC LOADED
+       HRRZ    A,S     ;GET BOTTOM OF UNDF SYMBOLS
+       SUB     A,KORSP ;DON'T FORGET PATCH SPACE
+       IORI    A,1777  ;MAKE INTO A K BOUND
+       IORI    Q,1777
+       CAIN    A,(Q)   ;ARE THEY IN SAME K
+IFN EXPAND,<JRST       [PUSHJ  P,XPAND>
+               PUSHJ   P,MORCOR
+IFN EXPAND,<   JRST    NOBLT]>
+       MOVEM   Q,HISTRT        ;SAVE AS START OF HIGH
+       MOVEI   A,400000        ;HISEG ORIGIN
+       MOVEM   A,HVAL1         ;SAVE AS ORIGIN
+       SUB     S,HISTRT        ;GET POSITION OF UNDF POINTER
+       ADDI    S,377777        ;RELATIVE TO ORG
+       SUB     B,HISTRT        ;SAME FOR SYM POINTER
+       ADDI    B,377777
+       TRO     F,SEENHI        ;SO JOBHRL WILL BE SET UP
+       JRST    BLTSY1          ;AND USE COMMON CODE
+>
+
+IFN DMNSW!LDAC,<
+MORCOR:        ERROR ,</MORE CORE NEEDED#/>
+       EXIT>
+     
+
+\fSUBTTL        WRITE CHAIN FILES
+
+IFE K,<                        ;DONT INCLUDE IN 1KLOAD
+CHNC:  SKIPA   A,JOBCHN(X)     ;CHAIN FROM BREAK OF FIRST BLOCK DATA
+CHNR:  HLR     A,JOBCHN(X)     ;CHAIN FROM BREAK OF FIRST F4 PROG
+IFN ALGSW,<TRNE        F,ALGFL         ;IF ALGOL LOADING
+       POPJ    P,              ;JUST RETURN>
+       HRRZS   A               ;ONLY RIGHT HALF IS SIGNIFICANT
+       JUMPE   A,LD7C          ;DON'T CHAIN IF ZERO
+       TLNN    N,AUXSWI        ;IS THERE AN AUX DEV?
+       JRST    LD7D            ;NO, DON'T CHAIN
+       PUSH    P,A             ;SAVE WHEREFROM TO CHAIN
+       JUMPE   D,.+2           ;STARTING ADDR SPECIFIED?
+       HRRZM   D,STADDR        ;USE IT
+       CLOSE   2,              ;INSURE END OF MAP FILE
+       TLZ     N,AUXSWI+AUXSWE ;INSURE NO PRINTED OUTPUT
+       PUSHJ   P,SASYM         ;DO LIB SEARCH, SETUP JOBSA, ETC.
+IFN RPGSW,<TLNE        N,RPGF          ;IF IN CCL MODE
+       TDZA    W,W             ;NO MESSAGES>
+       MOVE    W,[SIXBIT ?CHAIN?]      ;FINAL MESSAGE
+       PUSHJ   P,BLTSET        ;SETUP BLT PNTR, SETDDT, RELEAS
+       POP     P,A             ;GET WHEREFROM
+       HRRZ    W,R             ;CALCULATE MIN IOWD NECESSARY
+       SKIPE   JOBDDT(X)       ;IF JOBDDT KEEP SYMBOLS
+       CAILE   W,1(S)
+       JRST    CHNLW1
+       HRRZ    W,JOBREL        ;NEED SYMBOLS AND THEY HAVE NOT MOVED DOWN
+       SUBI    W,(X)           ;BECAUSE WE WILL NOT HAVE BLITTED
+       SUBI    B,-1(X)         ;SYMBOL TABLE WILL COME OUT IN A
+       MOVEM   B,JOBSYM(X)     ;DIFFERENT PLACE
+CHNLW1:        MOVNS   W
+       ADDI    W,-7(A)
+       ADDI    A,-7(X)
+       PUSH    A,W     ;SAVE LENGTH
+       HRLI    W,-1(A)
+       MOVSM   W,IOWDPP        ;...
+       SETZM   IOWDPP+1        ;JUST IN CASE
+       PUSH    A,JOBCHN(X)
+       PUSH    A,JOBSA(X)      ;SETUP SIX WORD TABLE
+       PUSH    A,JOBSYM(X)     ;...
+       PUSH    A,JOB41(X)
+       PUSH    A,JOBDDT(X)
+       SETSTS  2,17            ;SET AUX DEV TO DUMP MODE
+       MOVSI   W,435056        ;USE .CHN AS EXTENSION
+       MOVEM   W,DTOUT1        ;...
+       PUSHJ   P,IAD2          ;DO THE ENTER
+       OUTPUT  2,IOWDPP        ;WRITE THE CHAIN FILE
+       STATZ   2,IOBAD!IODEND
+       JRST    LOSEBIG
+       CLOSE   2,
+       STATZ   2,IOBAD!IODEND
+IFN RPGSW,<JRST        LOSEBIG
+       TLNE    N,RPGF          ;IF IN CCL MODE
+       JRST    CCLCHN          ;LOAD NEXT LINK
+       EXIT>
+LOSEBI:        TTCALL  3,[ASCIZ /?DEVICE ERROR/]
+       EXIT>
+     
+
+\fSUBTTL        SPECIAL CHAINB
+IFE SPCHN,<    XLIST   >
+IFN SPCHN,<
+CHNBG:
+       PUSHJ   P,FSCN1A                ;FORCE SCAN TO COMPLETION FOR CURRENT FILE
+       TLNN N,AUXSWI   ;IS THERE AN AUX DEV??
+       JRST LD7D
+       HRLZI   W,-1(R)         ;CHNTAB-L = ADDRESS OF VECTOR TABLE
+       HRRI    W,1             ;CHNTAB-R = NEXT DISK BLOCK TO RITE INTO
+       MOVEM   W,CHNTAB
+       MOVE    C,[RADIX50 4,OVTAB]     ;DEFINE GLOBAL SYMBOL OVTAB
+       MOVEI   W,(R)           ;TO HAVE VALUE THE BEGINNING OF THE VECTOR TABLE
+       PUSHJ   P,SYMPT
+       ADDI    R,VECLEN        ;RESERVE SPACE FOR VECTOR TABLE
+       MOVE    C,[RADIX50 4,OVBEG]     ;OVBEG IS BEGINNING OF OVERLAY AREA
+       MOVEI   W,(R)
+       PUSHJ   P,SYMPT
+       HRRZM   R,BEGOV         ;AND SAVE IN OVBEG
+       OPEN    4,CHNOUT        ;OPEN FILE FOR CHAIN
+       JRST    ILD5            ;CANT OPEN CHAIN FILE
+       ENTER   4,CHNENT        ;ENTER CHAIN FILE
+       JRST    IMD3            ;NO CAN DO
+       HRRZ    W,N
+       SUB     W,HISTRT        ;KEEP N RIGHT HALF AS RELATIVE TO HISTRT
+       HRRZM W,CHNACN  ;SAVE FOR RESTORING
+       MOVEM B,CHNACB  ;ALSO B R IS SAVED IN BEGOV
+       POPJ    P,
+
+CHNENS:        TLOA N,PPCSW    ;THIS FLAG UNUSED AT THIS POINT
+CHNEN: TLZ N,PPCSW     ;ON TO NOT DELETE NEW SYMBOLS
+       SKIPN CHNACB    ;WILL BE NON-ZERO IF WE SAW A /<  (> TO KEEP  MACRO HAPPY)
+       JRST LD7D       ;ERROR MESSAGE
+       PUSHJ P,FSCN1A          ;LOAD LIB (IF DESIRED) AND FORCE SCAN
+       SKIPL Q,S       ;CHECK SYMBOL TABLE FOR MISSED UNDEFS
+       JRST NOER       ;NONE THERE
+       MOVEI E,0       ;COUNT OF ERRORS
+ONCK:
+       IFN FAILSW,<SKIPL V,1(Q)        ;IF HIGH ORDER BIT IS ON
+       TLNN V,740000   ;OR IF ALL CODE BITS 0
+       JRST NXTCK      ;THEN NOT TO BE CHECKED>
+       MOVE V,2(Q)     ;GET FIXUP WORD
+       TLNE V,100000   ;BIT INDICATES SYMBOL TABLE FIXUP
+       JRST SMTBFX
+IFN FAILSW,<TLNE V,40000       ;BIT INDICATES POLISH FIXUP
+       JRST POLCK>
+       TLZE V,740000   ;THESE BITS WOULD MEAN ADDITIVE
+       JRST    [JSP A,CORCKL
+               JRST NXTCK]     ;ONLY TRY FIRST LOCATION
+CORCK: JSP A,CORCKL
+       HRRZ V,@X       ;THE WAY TO LINK
+CORCKL:        IFN REENT,<CAMGE V,HVAL1>
+       CAMGE V,BEGOV
+       SKIPA   ;NOT IN BAD RANGE
+       JRST ERCK       ;BAD, GIVE ERROR
+       JUMPE V,NXTCK   ;CHAIN HAS RUN OUT
+IFN REENT,<CAMGE V,HVAL1       ;GET CORRECT LINK
+       SKIPA X,LOWX
+       MOVE X,HIGHX>
+       XCT (A)         ;TELLS US WHAT TO DO
+       JRST CORCKL     ;GO ON WITH NEXT LINK
+     
+
+\fSMTBFX:       TLNE N,PPCSW    ;IF NOT CUTTING BACK SYMBOL TABLE
+       JRST NXTCK      ;THE ALL OK
+       ADD V,HISTRT    ;GET PLACE TO POINT TO
+       HRRZS V
+       HLRE D,CHNACB   ;OLD LENGTH OF TABLE (NEGATIVE)
+       HLRE T,B        ;NEW LENGTH
+       SUB D,T         ;-OLD LEN+NEW LEN
+       ADDI D,(B)      ;OLD BOTTOM=NEW BOTTOM+NEW LEN-OLD LEN
+       CAIG V,(D)      ;IS IT IN THE PART WE ARE KEEPING
+       JRST ERCK
+       JRST NXTCK      ;YES
+IFN FAILSW,<POLCK:     HLRZ C,V        ;FIND HEADER
+       PUSHJ P,SREQ
+       SKIPA
+       JRST LOAD4A     ;SHOULD BE THERE
+       HRL C,2(A)      ;NOW FIRST OPERATOR (STORE)
+       MOVSS C
+       PUSHJ P,SREQ
+       SKIPA
+       JRST LOAD4A
+       ANDI C,37       ;GET OPERATION
+       HRRZ V,2(A)     ;DESTINATION
+       JRST @CKSMTB-15(C)      ;DISPATCH
+CKSMTB:        EXP SMTBFX,SMTBFX,SMTBFX,CORCK,LCORCK,CORCK,NXTCK
+LCORCK:        JSP A,CORCKL
+       HLRZ V,@X>
+ERCK:  MOVE C,1(Q)     ;GET SYMBOL NAME
+       PUSHJ P,FCRLF   ;FORCE CRLF AND OUTPUT ON TTY
+       PUSHJ P,PRNAME  ;PRINT IT
+       ADDI E,1        ;MARK ERROR
+NXTCK: ADD Q,SE3       ;TRY ANOTHER
+       JUMPL Q,ONCK
+IFN REENT,<PUSHJ P,RESTRX      ;GET PROPER X BACK>
+       JUMPE E,NOER    ;DID ANYTHING GO WRONG??
+       ERROR   ,</UNDEFINED GLOBAL(S) IN LINK@/>
+       JRST LD2        ;GIVE UP
+NOER:  MOVE A,BEGOV    ;GET START OF OVERLAY
+       ADDI A,(X)      ;GET ACTUAL CURRENT LOCATION
+IFN REENT,<HRRZ W,HILOW        ;AND END OF OVERLAY+1
+       HRRZM A,HILOW   ;RESET>
+IFE REENT,<HRRZ W,R
+       ADDI R,(X)      ;A GOOD GUESS>
+       SUBM A,W        ;W=-LENGTH
+       SUBI A,1        ;SET TO BASE-1 (FOR IOWD)
+       HRL A,W         ;GET COUNT
+       MOVEM A,IOWDPP
+       HRR A,CHNTAB    ;BLOCK WE ARE WRITING ON
+       HLRZ V,CHNTAB   ;POINTER TO SEGMENT TABLE
+       ADDI V,1        ;NEXT LOCATION
+       HRLM V,CHNTAB   ;REMEMBER IT
+       CAML V,BEGOV    ;CHECK FOR OVERRUN
+       JRST    [ERROR </?TOO MANY LINKS@/>
+               JRST LD2];GIVE UP
+       MOVEM A,@X      ;PUT INTO TABLE
+       MOVN W,W        ;GET POSITIVE LENGTH
+       ADDI W,DSKBLK-1
+       IDIVI W,DSKBLK  ;GET NUMBER OF BLOCKS
+       ADDM W,CHNTAB   ;AND UPDATE
+       TLZE N,PPCSW
+       JRST NOMVB      ;DO NOT ADJUST SYMBOLS
+       HLRE W,CHNACB   ;GET OLD LENGTH OF DEF SYMBOLS
+       HLRE C,B        ;AND NEW LENGTH
+       SUB W,C         ;-OLD LEN+NEW LEN
+       HRRZ C,B        ;SAVE POINTER TO CURRENT S
+       ADD S,W
+       HRL W,W
+       ADD B,W         ;UPDATE B (COUNT AND LOC)
+       JUMPGE S,UNLNKD ;JUST IN CASE NOTHING TO MOVE
+       HRRZ A,B        ;PLACE TO PUT UNDEFS
+UNLNK: MOVE W,(C)
+       MOVEM W,(A)     ;TRANSFER
+       SUBI A,1
+       CAIE A,(S)      ;HAVE WE MOVED LAST WORD??
+       SOJA C,UNLNK    ;NO, CONTINUE
+UNLNKD:        HRRZ W,CHNACN   ;GET SAVED N
+       ADD W,HISTRT
+       HRR N,W ;AND RESET IT
+NOMVB: HRR R,BEGOV     ;PICK UP BASE OF AREA
+       OUTPUT 4,IOWDPP ;DUMP IT
+       STATZ 4,IOBAD!IODEND    ;AND ERROR CHECK
+       JRST LOSEBI
+       HRRZ V,R        ;GET AREA TO ZERO
+       MOVEI W,@X
+       CAIL W,1(S)     ;MUST MAKE SURE SOME THERE
+       POPJ P, ;DONE
+       SETZM (W)
+       CAIL W,(S)
+       POPJ P,
+       HRLS W
+       ADDI W,1
+       BLT W,(S)       ;ZERO WORLD
+       POPJ P,
+>
+       LIST
+     
+
+\fSUBTTL        EXPAND CORE
+
+IFN EXPAND,<
+XPAND: TLNE    F,FULLSW        ;IF CORE  EXCEEDED
+       POPJ    P,              ;DON'T WASTE TIME  ON  CORE UUO
+       PUSH    P,Q
+       HRRZ    Q,JOBREL
+       ADDI    Q,2000
+XPAND1:        PUSH P,H        ;GET SOME REGISTERS TO USE
+       PUSH P,X
+       PUSH P,N
+       PUSH    P,JOBREL        ;SAVE PREVIOUS SIZE
+       CAMG    Q,ALWCOR        ;CHECK TO SEE IF RUNNING OVER
+       CORE Q,
+       JRST XPAND6
+IFE K,<        HRRZ H,MLTP     ;GET LOWEST LOCATION
+       TLNN N,F4SW     ;IS FORTRAN LOADING>
+       MOVEI H,1(S)    ;NO, USE S
+       POP     P,X     ;LAST JOBREL
+       HRRZ    Q,JOBREL;NEW JOBREL
+       SUBI    Q,(X)   ;GET DIFFERENCE
+       HRLI    Q,X     ;PUT X IN INDEX FIELD
+XPAND2:        MOVE N,(X)
+       MOVEM N,@Q
+       CAMLE X,H       ;TEST FOR END
+       SOJA X,XPAND2
+       HRLI    H,-1(Q)
+       TLC     H,-1    ;MAKE IT NEGATIVE
+       SETZM (H)       ;ZERO NEW CORE
+       AOBJN H,.-1
+       MOVEI H,(Q)
+XPAND8:        ADD     S,H
+       ADD     B,H
+       ADDM H,HISTRT   ;UPDATE START OF HISEG
+IFN REENT,<ADDM H,HIGHX        ;AND STORE LOCATION
+       TLNE F,HIPROG
+       ADDM H,-1(P)    ;X IS CURRENTLY IN THE STACK>
+       POP P,N
+       ADD N,H
+IFE K,<        TLNN N,F4SW     ;F4?
+       JRST    XPAND3
+       ADDM H,PLTP
+       ADDM H,BITP
+       ADDM H,SDSTP
+       ADDM H,MLTP
+       TLNE N,SYDAT
+       ADDM H,V>
+XPAND3:        AOSA -3(P)
+XPAND5:        POP P,N
+       POP P,X
+       POP P,H
+       POP     P,Q
+       POPJ P,
+     
+
+\f
+XPAND6:        POP     P,A     ;CLEAR JOBREL OUT OF STACK
+       ERROR   ,</MORE CORE NEEDED#/>
+       JRST XPAND5
+
+XPAND7:        PUSHJ   P,XPAND
+       JRST    SFULLC
+       JRST    POPJM2
+
+XPAND9:        PUSH    P,Q             ;SAVE Q
+       HRRZ    Q,JOBREL        ;GET CORE SIZE
+       ADDI    Q,(V)           ;ADD XTRA NEEDED
+       JRST    XPAND1          ;AND JOIN COMMON CODE
+
+POPJM3:        SOS     (P)             ;POPJ TO CALL-2
+POPJM2:        SOS     (P)             ;POPJ TO CALL-1
+       SOS     (P)             ;SAME AS POPJ TO
+       POPJ    P,              ;NORMAL POPJ MINUS TWO
+>
+
+     
+
+\fSUBTTL        SWITCH HANDLING
+
+;ENTER SWITCH MODE
+
+LD6A:  CAIN    T,57            ;WAS CHAR A SLASH?
+       TLO     N,SLASH         ;REMEBER THAT
+LD6A2: TLO     F,SSW           ;ENTER SWITCH MODE
+LD6A1: SETZB   D,C     ;ZERO TWO REGS FOR DECIMAL AND OCTAL
+       JRST    LD3             ;EAT A SWITCH
+
+;ALPHABETIC CHARACTER, SWITCH MODE
+
+LD6:
+       CAIL    T,141           ;ACCEPT LOWER CASE SWITCHES
+       SUBI    T,40
+IFN SPCHN,<XCT LD6B-74(T)      ;EXECUTE SWITCH FUNCTION>
+IFE SPCHN,<XCT LD6B-101(T)     ;EXECUTE SWITCH FUNCTION>
+       TLZE    N,SLASH ;SWITCH MODE ENTERED W/ SLASH?
+       JRST    LD6D            ;LEAVE SWITCH MODE
+       JRST    LD6A1           ;STAY IN SWITCH MODE
+
+     
+
+\f;DISPATCH TABLE FOR SWITCHES
+
+;      THE INSTRUCTION AT THE CHARACTER LOCATION IS EXECUTED
+
+LD6B:
+IFN SPCHN,<PUSHJ P,CHNBG       ;LESS THAN - BEGINNING OF OVERLAY
+       PUSHJ   P,CHNENS        ;= - PUT OUT CHAIN RETAINING SYMBOLS
+       PUSHJ   P,CHNEN         ;GREATER THAN - END OF OVERLAY
+IFE STANSW,<JRST       LD7B            ;? - ERROR
+       JRST    LD7B            ;@ - ERROR>
+IFG STANSW,<PUSHJ      P,VSWTCH        ;? HERE = VSWITCH
+       PUSHJ   P,HSET                  ;@ HERE = H SWITCH>>
+COMMENT/
+AT STANFORD MAP SWITCHES ? TO V
+AND @ TO H
+WHAT A CROCK:  REG/
+       PUSHJ   P,ASWTCH        ;A - LIST ALL GLOBALS
+IFN DMNSW,<PUSHJ P,DMN2                ;B - BLOCKS DOWN SYMBOL TABLE >
+IFE DMNSW,<JRST        LD7B            ;B - ERROR>
+IFE K,<        PUSHJ   P,CHNC          ;C - CHAIN, START W/ COMMON>
+IFN K,<        JRST    LD7B            ;C - ILLEGAL IN 1KLOAD>
+       PUSHJ   P,LDDT          ;D - DEBUG OPTION, LOAD DDT
+       TLO     N,EXEQSW        ;E - LOAD AND GO
+       PUSHJ    P,LIBF         ;F - LIBRARY SEARCH
+       PUSHJ    P,LD5E         ;G - GO INTO EXECUTION
+IFE STANSW,<IFN REENT,< PUSHJ P,HSET           ;H - REENTRANT. PROGRAM>
+       IFE REENT,<JFCL                         ;NOT REENT AND NOT STANFORD>>
+IFN STANSW,<PUSHJ P,LDDTQX                     ;H - LOAD AND START RAID>
+       PUSHJ   P,ISWTCH        ;I - IGNORE STARTING ADDRESSES
+       TLZ     N,ISAFLG        ;J - USE STARTING ADDRESSES
+IFE KUTSW,<JRST        LD7B            ;K - ERROR>
+IFN KUTSW,<MOVEM C,CORSZ       ;K - SET DESIRED CORE SIZE>
+       PUSHJ   P,LSWTCH        ;L - ENTER LIBRARY SEARCH
+       PUSHJ   P,PRMAP         ;M - PRINT STORAGE MAP
+       TLZ     F,LIBSW+SKIPSW  ;N - LEAVE LIBRARY SEARCH
+       HRR     R,D             ;O - NEW PROGRAM ORIGIN
+       PUSHJ   P,PSWTCH        ;P - PREVENT AUTO. LIB. SEARCH
+       TLZ     F,NSW           ;Q - ALLOW AUTO. LIB. SEARCH
+IFE K,<        PUSHJ   P,CHNR          ;R - CHAIN, START W/ RESIDENT>
+IFN K,<        JRST    LD7B            ;R - ILLEGAL IN 1KLOAD>
+       PUSHJ   P,SSWTCH        ;S - LOAD WITH SYMBOLS
+       PUSHJ   P,LDDTX         ;T - LOAD AND GO TO DDT
+       PUSHJ   P,PMS           ;U - PRINT UNDEFINED LIST
+IFE STANSW,<IFN REENT,<PUSHJ P,VSWTCH  ;V - LOAD REENTRANT LIB40>
+       IFE REENT,<JRST LD7B    ;V -NO REENT, NO STANFORD: ERROR>>
+IFN STANSW,<PUSHJ P,LDDTQ      ;V - LOAD RAID>
+       TLZ     F,SYMSW+RMSMSW  ;W - LOAD WITHOUT SYMBOLS
+       TLZ     N,ALLFLG        ;X - DO NOT LIST ALL GLOBALS
+IFE SAILSW,<
+       TLO     F,REWSW         ;Y - REWIND BEFORE USE
+>
+IFN SAILSW,<
+       PUSHJ   P,SEGLOD        ;Y - LOAD SYS:SAILOW FOR 2-SGMT SAIL
+>
+       JRST    LDRSTR          ;Z - RESTART LOADER
+
+     
+
+\f; PAIRED SWITCHES ( +,-)
+
+ASWTCH:        JUMPL   D,.+2           ;SKIP IF /-A
+       TLOA    N,ALLFLG        ;LIST ALL GLOBALS
+       TLZ     N,ALLFLG        ;DON'T
+       POPJ    P,
+
+ISWTCH:        JUMPL   D,.+2           ;SKIP IF /-I
+       TLOA    N,ISAFLG        ;IGNORE STARTING ADDRESSES
+       TLZ     N,ISAFLG        ;DON'T
+       POPJ    P,
+
+LSWTCH:        JUMPL   D,.+2           ;SKIP IF /-L
+       TLOA    F,LIBSW!SKIPSW  ;ENTER LIBRARY SEARCH
+       TLZ     F,LIBSW!SKIPSW  ;DON'T
+       POPJ    P,
+
+PSWTCH:        JUMPL   D,.+2           ;SKIP IF /-P
+       TLOA    F,NSW           ;PREVENT AUTO. LIB SEARCH
+       TLZ     F,NSW           ;ALLOW
+       POPJ    P,
+
+SSWTCH:        JUMPL   D,.+2           ;SKIP IF /-S
+       TLOA    F,SYMSW!RMSMSW  ;LOAD WITH SYMBOLS
+       TLZ     F,SYMSW!RMSMSW  ;DON'T
+       POPJ    P,
+
+IFN REENT,<
+VSWTCH:        JUMPL   D,.+2           ;SKIP IF /-V
+       TROA    F,VFLG          ;SEARCH RE-ENTRANT LIBRARY
+       TRZ     F,VFLG          ;DON'T
+       POPJ    P,>
+
+IFN SAILSW,<
+SEGLOD:        PUSHJ   P,FSCN1         ;FORCE SCAN TO COMPLETION
+       HRRZ    W,R             ;CHECK LEGAL
+       CAILE   W,140           ; (MUST BE NOTHING LOADED EARLIER)
+       JRST    [ERROR ,<./Y MUST APPEAR BEFORE ANY FILES ARE LOADED`.>
+                JRST  LD2]     ;TRY AGAIN
+       MOVE    W,[SIXBIT /SAILOW/] ;WILL LOAD SAILOW NOW
+       ADD     W,D             ;SAILOW, SAILOX, SAILOY, DEPENDING
+       ;ON ARG -- W FOR SAIL, X FOR OSAIL, Y FOR NSAIL
+       TLZ     F,SYMSW!RMSMSW  ;SET SWITCHES (SEE LDDT)
+       PUSHJ   P,LDDT1         ;SET SYS AS DEVICE, PREPARE
+       PUSHJ   P,LDF           ;LOAD SAILOW
+       POPJ    P,              ;AFRAID OF `JRST LDF'
+>; END OF SEGMENT LOADING OPTION
+     
+
+\fIFN REENT,<
+; H SWITCH --- EITHER /H OR /NH
+HSET:  JUMPE   D,SETNUM        ;/H ALWAYS LEGAL
+       CAIGE   D,2             ;WANT TO CHANGE SEGMENTS
+       JRST    SETSEG          ;YES,GO DO IT
+       TRNN    F,SEENHI        ;STARTED TO LOAD YET?
+       JRST    HCONT           ;NO, CONTINUE.
+       ERROR   ,<?/H ILLEGAL AFTER FIRST HISEG FILE IS LOADED@?>>
+
+LDRSTR:        ERROR   0,</LOADER RESTARTED@/>
+       JRST    LD              ;START AGAIN
+IFN REENT,<
+REMPFL:        ERROR   ,</?LOADER REMAP FAILURE@/>
+       JRST LDRSTR
+HCONT: HRRZ C,D
+       ANDCMI C,1777
+       CAIL C,400000
+       CAIG C,(H)
+       JRST COROVL     ;BEING SET LOWER THEN 400000 OR MORE THAN TO OF LOW SEG
+       HRRZM C,HVAL1   ;WE HAVE REMOVED THE ODD BITS TO MAKE A 1K MULT
+       ADDI C,JOBHDA
+       CAILE C,(D)     ;MAKE SURE OF ENOUGH ROOM
+       MOVE D,C
+       HRLI D,W        ;SET UP W IN LEFT HALF
+       MOVEM D,HVAL
+       POPJ    P,      ;RETURN.
+
+COROVL:        ERROR   ,</HISEG STARTING ADDRESS TOO LOW@/>
+       JRST LDRSTR
+SETNUM:        TRO     F,NOHI  ;SET NO-HIGH-SEG SWITCH.
+       POPJ    P,>
+     
+
+\f;SWITCH MODE NUMERIC ARGUMENT
+
+LD6C:  LSH     D,3             ;BUILD OCTAL NUMERIC ARGUMENT
+       ADDI    D,-60(T)
+       IMULI C,↑D10
+       ADDI C,-"0"(T)  ;ACCUMULATE DEC AND OCTAL
+       JRST    LD3
+
+;EXIT FROM SWITCH MODE
+
+LD6D:  TLZ     F,SSW           ;CLEAR SWITCH MODE FLAG
+       TLNE    F,FSW           ;TEST FORCED SCAN FLAG
+       JRST    LD2D            ;SCAN FORCED, START NEW IDENT.
+       JRST    LD3             ;SCAN NOT FORCED, USE PREV IDENT
+;ILLEGAL CHARACTER, NORMAL MODE
+
+LD7:   IFN SYMARG,<
+       CAIN    T,"#"           ;DEFINING THIS SYMBOL
+       JRST    DEFINE          ;YES 
+       TRNN    F,ARGFL         ;TREAT AS SPECIAL
+       JRST    .+4             ;NO
+       CAIE    T,"$"
+       CAIN    T,"%"
+       JRST    LD4             ;YES>
+       CAIN    T,"Z"-100       ;TEST FOR â†‘Z
+       JRST    LD5E1           ;TREAT AS ALTMODE FOR BATCH
+       ERROR   8,</CHAR.%/>
+       JRST    LD2     ;TRY TO CONTINUE
+
+;SYNTAX ERROR, NORMAL MODE
+
+LD7A:  ERROR   8,</SYNTAX%/>
+       JRST    LD2
+
+;ILLEGAL CHARACTER, SWITCH MODE
+
+LD7B:  CAIN T,"-"      ;SPECIAL CHECK FOR -
+       JRST    [SETOB C,D
+               JRST LD3]
+       CAIN    T,"Z"-100       ;CHECK FOR /↑Z
+       JRST    LD5E1           ;SAME AS â†‘Z
+       ERROR   8,</SWITCH%/>
+       JRST    LD2
+     
+
+\f;ATTEMPT TO CHAIN WITH SPECIFIED HALF OF JOBCHN = 0
+
+IFE K,<
+LD7C:  ERROR   ,<?UNCHAINABLE AS LOADED@?>
+       JRST    LD2
+
+;ATTEMP TO CHAIN WITHOUT SPECIFYING DEVICE
+
+LD7D:  ERROR   ,<?NO CHAIN DEVICE@?>
+       JRST    LD2>
+
+IFN DMNSW,<
+DMN2:
+IFN ALGSW,<TRNE        F,ALGFL         ;IF LOADING ALGOL
+       POPJ    P,              ;JUST RETURN>
+       CAIN    D,1             ;SPECIAL CASE
+       TROA    F,HISYM         ;YES ,BLT SYMBOLS INTO HISEG
+       JUMPL   D,.+2
+       TROA    F,DMNFLG        ;TURN ON /B
+IFN KUTSW,<TRZA        F,DMNFLG        ;TURN OFF IF /-B
+       SETZM   CORSZ           ;SET TO CUT BACK CORE>
+IFE KUTSW,<TRZ F,DMNFLG        ;TURN OFF IF /-B>
+       CAMLE D,KORSP
+       MOVEM D,KORSP
+       POPJ    P,               ;RETURN>
+
+     
+
+\fSUBTTL        CHARACTER CLASSIFICATION TABLE DESCRIPTION:
+
+;      EACH CHARACTER HAS ASSOCIATED WITH IT A FOUR BIT BYTE
+;      PACKED IN THE CHARACTER CLASSIFICATION TABLE.  THE CHARACTER
+;      CLASSIFICATION CODES ARE ORDERED IN SUCH A WAY AS TO GIVE
+;      DELIMITERS OF HIGHER PRECEDENCE LOWER CLASSIFICATION NUMBERS.
+;      CERTAIN CHARACTERS HAVE NO EFFECT ON THE COMMAND STRING, AND
+;      THEREFORE DO NOT EFFECT ORDERING OF DELIMITERS.  FOUR CODES
+;      ARE RESERVED FOR ALTERNATE DISPATCHES WHILE THE SWITCH MODE IS
+;      IN EFFECT.
+
+
+;CLASSIFICATION BYTE CODES:
+
+;      BYTE DISP CLASSIFICATION
+
+;      00 - 00  ILLEGAL CHARACTER, SWITCH MODE
+;      01 - 01  ALPHABETIC CHARACTER, SWITCH MODE
+;      02 - 02  NUMERIC CHARACTER, SWITCH MODE
+;      03 - 03  SWITCH MODE ESCAPE, SWITCH MODE
+
+;      00 - 04  ILLEGAL CHARACTER, NORMAL MODE
+;      01 - 05  ALPHABETIC CHARACTER, NORMAL MODE
+;      02 - 06  NUMERIC CHARACTER, NORMAL MODE
+;      03 - 07  SWITCH MODE ESCAPE, NORMAL MODE
+
+;      04 - 10  IGNORED CHARACTER
+;      05 - 11  ENTER SWITCH MODE CHARACTER
+;      06 - 12  DEVICE IDENTIFIER DELIMITER
+;      07 - 13  FILE EXTENSION DELIMITER
+;      10 - 14  OUTPUT SPECIFICATION DELIMITER
+;      11 - 15  INPUT SPECIFICATION DELIMITER
+;      12 - 16  LINE TERMINATION
+;      13 - 17  JOB TERMINATION
+     
+
+\f;BYTE POINTERS TO CHARACTER CLASSIFICATION TABLE
+
+LD8:   POINT     4,LD9(Q),3
+       POINT     4,LD9(Q),7
+       POINT     4,LD9(Q),11
+       POINT     4,LD9(Q),15
+       POINT     4,LD9(Q),19
+       POINT     4,LD9(Q),23
+       POINT     4,LD9(Q),27
+       POINT     4,LD9(Q),31
+       POINT     4,LD9(Q),35
+
+;CHARACTER CLASSIFICATION TABLE
+
+LD9:   BYTE    (4)4,0,0,0,0,0,0,0,0
+       BYTE    (4)4,4,4,4,12,0,0,0,0
+       BYTE    (4)0,0,0,0,0,0,0,0,0
+       BYTE    (4)13,0,0,0,0,4,0,4,0
+IFE SYMARG,<   BYTE    (4)0,0,0,0,5,3,0,0,11>
+IFN SYMARG,<   BYTE    (4)0,0,14,0,5,3,0,0,11>
+               BYTE    (4)0,7,5,2,2,2,2,2,2
+IFE SPCHN,<    BYTE    (4)2,2,2,2,6,0,0,10,0>
+IFN SPCHN,<    BYTE    (4)2,2,2,2,6,0,1,10,1>
+IFE RPGSW,<    BYTE    (4)0,0,1,1,1,1,1,1,1>
+IFN RPGSW,<    BYTE (4) 0,10,1,1,1,1,1,1,1>
+       BYTE    (4)1,1,1,1,1,1,1,1,1
+       BYTE    (4)1,1,1,1,1,1,1,1,1
+IFE PP,<BYTE   (4)1,0,0,0,0,10,0,1,1>
+IFN PP,<BYTE   (4)1,10,0,10,0,10,0,1,1>
+       BYTE    (4)1,1,1,1,1,1,1,1,1
+       BYTE    (4)1,1,1,1,1,1,1,1,1
+       BYTE    (4)1,1,1,1,1,1,0,0,13
+       BYTE    (4)13,4
+     
+
+\fSUBTTL        INITIALIZE LOADING OF A FILE
+
+ILD:   MOVEI     W,BUF1                ;LOAD BUFFER ORIGIN
+       MOVEM     W,JOBFF
+       TLOE    F,ISW           ;SKIP IF INIT REQUIRED
+       JRST    ILD6            ;DONT DO INIT
+ILD7:  OPEN    1,OPEN3                 ;KEEP IT PURE
+       JRST    ILD5B
+ILD6:  TLZE    F,REWSW         ;SKIP IF NO REWIND
+       MTAPE   1,1             ;REWIND
+ILD2:  LOOKUP    1,DTIN                ;LOOK UP FILE FROM DIRECTORY
+       JRST    ILD3            ;FILE NOT IN DIRECTORY
+IFE LNSSW,<
+IFE K,<        INBUF     1,2           ;SET UP BUFFERS>
+IFN K,<        INBUF   1,1             ;SET UP BUFFER>>
+IFN LNSSW,<INBUF       1,1
+       MOVEI   W,BUF1
+       EXCH    W,JOBFF
+       SUBI    W,BUF1
+IFE K,<MOVEI   C,4*203+1>
+IFN K,<MOVEI   C,203+1>
+       IDIV    C,W
+       INBUF   1,(C)>
+       TLO     F,ASW           ;SET LEFT ARROW ILLEGAL FLAG
+       TLZ     F,ESW           ;CLEAR EXTENSION FLAG
+       POPJ    P,
+
+;      LOOKUP FAILURE
+
+ILD3:  TLOE    F,ESW           ;SKIP IF .REL WAS ASSUMED
+       JRST    ILD4            ;FATAL LOOKUP FAILURE
+       SETZM     DTIN1         ;ZERO FILE EXTENSION
+       JRST    ILD2            ;TRY AGAIN WITH NULL EXTENSION
+
+ILD4:  IFE REENT,<IFE TEN30,<  ;PDP-6 ONLY
+       MOVE    W,[SIXBIT /LIB40/]
+       CAME    W,DTIN          ;WAS THIS A TRY FOR LIB40?
+       JRST    ILD4A           ;NO
+       TRZ     W,(SIXBIT / 0/) ;YES
+       MOVEM   W,DTIN          ;TRY LIB4
+       PUSHJ   P,LDDT2         ;USE .REL EXTENSION
+       TLZ     F,ESW           ;...
+       JRST    ILD2            ;GO TRY AGAIN
+ILD4A:>>
+IFN PP,<MOVSI  W,(SIXBIT /DSK/)
+       CAMN    W,ILD1          ;TRIED DSK ONCE?
+       JRST    ILD9            ;YES, FILE DOES NOT EXIST
+       MOVEM   W,ILD1          ;SET IT UP
+       SETZM   PPN             ;CLEAR OLD VALUE
+       PUSHJ   P,LDDT2         ;SET UP .REL
+       TLZ     F,ESW           ;SO WE CAN TRY BLANK EXT
+       JRST    ILD7            ;OPEN DSK,TRY AGAIN>
+
+ILD9:  ERROR   ,</CANNOT FIND#/>
+       JRST    LD2
+
+;      DEVICE SELECTION ERROR
+
+ILD5A: SKIPA   W,LD5C1
+ILD5B: MOVE    W,ILD1
+ILD5:  TLO     F,FCONSW        ;INSURE TTY OUTPUT
+       PUSHJ   P,PRQ           ;START W/ ?
+       PUSHJ   P,PWORD         ;PRINT DEVICE NAME
+       ERROR   7,</UNAVAILABLE@/>
+       JRST    LD2
+     
+
+\fSUBTTL        LIBRARY SEARCH CONTROL AND LOADER CONTROL
+
+;LIBF ENABLES A LIBRARY SEARCH OF <SYS:LIB4.REL>
+
+LIBF:  PUSHJ     P,FSCN1               ;FORCE SCAN TO COMPLETION
+       PUSH P,ILD1     ;SAVE DEVICE NAME
+       PUSHJ   P,LIBF1                 ;LOAD SYS:JOBDAT.REL
+IFN SAILSW,<LIBAGN:    PUSHJ P,SALOAD  ;LOAD RELS AND SEARCH LIBS>
+IFN REENT,<TRNN        F,SEENHI        ;IF ANY HISEG LOADED NO RE-ENT OP SYSTEM
+       TRNN F,VFLG
+       JRST LIBF3
+IFN ALGSW,<TRNE        F,ALGFL ;SPECIAL ACTION IF LOADING ALGOL
+       JRST    [MOVE C,[RADIX50 44,%ALGDR]
+               MOVEI W,400010  ;JOBHDA
+               PUSHJ P,SYMPT   ;DEFINE IT
+               JRST    LIBF3]  ;DON'T LOAD IMP40>
+       MOVE W,[SIXBIT /IMP40/]
+       PUSHJ P,LIBF2
+LIBF3:>
+       TRNN    F,COBFL                 ;COBOL SEEN?
+       SKIPA   W,[SIXBIT /LIB40/]      ;FIRST TRY AT NAME
+       MOVE    W,[SIXBIT /LIBOL/]      ;YES, SEARCH COBOL'S LIBRARY ONLY
+       PUSHJ   P,LIBF2                 ;LOAD SYS:LIB40.REL
+IFN SAILSW,<MOVE W,LIBPNT      ;SEE IF ANY MORE TO DO
+       CAME W,[XWD -RELLEN-1,LIBFLS-1]
+       JRST LIBAGN
+       MOVE W,PRGPNT   ;IT COULD BE DANGEROUS TO LOAD PROGRAMS HERE
+       CAME W,[XWD -RELLEN-1,PRGFLS-1]
+       JRST LIBAGN     ;MORE TO DO, TRY AGAIN>
+       POP P,ILD1      ;CALL TO LDDT1 WILL PUT IT IN OLDDEV
+LIBF1: MOVE    W,[SIXBIT /JOBDAT/]     ;LOAD SYS:JOBDAT.REL
+LIBF2: PUSHJ     P,LDDT1
+LIBGO: JUMPGE    S,EOF2                ;JUMP IF NO UNDEFINED GLOBALS
+       TLO     F,SLIBSW+SKIPSW ;ENABLE LIBRARY SEARCH
+       TLZ     F,SYMSW ;DISABLE LOADING WITH SYMBOLS
+       JRST    LDF             ;INITIALIZE LOADING LIB4
+     
+
+\f;     LIB CONTROLS THE LIBRARY SEARCH OF ONE FILE
+
+LIB:   JUMPGE  S,EOF1          ;JUMP IF NO UNDEFINED GLOBALS
+       TLO     F,SKIPSW        ;SET SKIPSW TO IGNORE MODE
+IFN DIDAL,<TRNE        F,XFLG          ;INDEX IN CORE?
+       JRST    INDEX1          ;YES>
+       JRST    LOAD            ;CONTINUE LIB. SEARCH
+
+LIB1:  CAIE    A,4             ;TEST FOR ENTRY BLOCK
+       JRST    LIB29           ;NOT AN ENTRY BLOCK, IGNORE IT
+LIB2:  PUSHJ   P,RWORD         ;READ ONE DATA WORD
+       MOVE    C,W
+       TLO     C,040000                ;SET CODE BITS FOR SEARCH
+       PUSHJ     P,SREQ
+       TLZA    F,SKIPSW                ;REQUEST MATCHES ENTRY, LOAD
+       JRST    LIB2            ;NOT FOUND
+LIB3:  PUSHJ     P,RWORD               ;READ AND IGNORE ONE DATA WORD
+       JRST    LIB3            ;LOOP TO IGNORE INPUT
+
+LIB29:
+IFN DIDAL,<CAIN        A,14            ;INDEX BLOCK?
+       JRST    INDEX0          ;YES>
+LIB30: HRRZ    C,W             ;GET WORD COUNT
+       JUMPE   C,LOAD1         ;IF NUL BLOCK RETURN
+       CAILE   C,↑D18                ;ONLY ONE SUB-BLOCK
+       JRST    LIB3            ;NO,SO USE OLD SLOW METHOD
+       AOJA    C,LIB31         ;ONE FOR RELOCATION WORD
+
+BLOCK0:        HRRZ    C,W             ;GET WORD COUNT
+       JUMPE   C,LOAD1         ;NOISE WORD
+LIB31: CAML    C,BUFR2         ;DOES BLOCK OVERLAP BUFFERS?
+       SOJA    C,LIB32         ;YES,ALLOW FOR INITIAL ILDB
+       ADDM    C,BUFR1         ;ADD TO BYTE POINTER
+       MOVNS   C               ;NEGATE
+       ADDM    C,BUFR2         ;TO SUBTRACT C FROM WORD COUNT
+       JRST    LOAD1           ;GET NEXT BLOCK
+
+LIB32: SUB     C,BUFR2         ;ACCOUNT FOR REST OF THIS BUFFER
+       PUSHJ   P,WORD+1        ;GET ANOTHER BUFFERFUL
+       JRST    LIB31           ;TRY AGAIN
+     
+
+\fIFN SAILSW,<
+
+COMMENT * BLOCK TYPE 15 AND 16 USED TO SPECIFY PROGRAMS AND
+LIBRARIES WHICH MUST BE LOADED (SEARCHED) IF THE PROGRAM
+IN WHICH THE BLOCK APPEARS IS LOADED. IT IS NOW TIME TO
+LOAD AND SEARCH THESE FILES. IF ANY MAKE REQUESTS, THEY ARE ADDED
+TO THE END. WE WILL COME BACK AND LOOK AGAIN IN CASE A
+LIBRARY PROGRAM LOAD A REL PROGRAM. ORIGINAL CODE BY DCS*
+
+SALOAD:        MOVE T,[XWD -RELLEN-1,PRGFLS-1] ;TO RESET WITH AT END
+       MOVEI D,PRGPNT  ;OINTER TO UPPER LIMIT
+       PUSHJ P,PRGPRG  ;LOAD THEM IF ANY
+
+;NOW FOR LIBRARY SEARCH
+
+       MOVE T,[XWD -RELLEN-1,LIBFLS-1]
+       MOVEI D,LIBPNT
+
+PRGPRG:        MOVEM D,LODLIM# ;SAVE POINTER TO LIMIT
+       MOVEM T,LODSTP# ;START FOR RESETTING
+PRGBAK:        MOVEM T,LODPNT# ;AND START
+       CAMN T,@LODLIM  ;GOTTEN TO END YET?
+       JRST PRGDON     ;YES, DUMP IT
+       SKIPN W,PRGDEV(T)       ;IS DEVICE SPECIFIED?
+       MOVSI W,(SIXBIT /DSK/)  ;NO, DSK
+       MOVEM W,ILD1    ;WHERE WE INIT FROM
+       MOVSI W,(SIXBIT /REL/)  ;EXTENSION
+       MOVEM W,DTIN1
+       MOVE W,PRGFIL(T)
+       MOVEM W,DTIN    ;FILE NAME
+       MOVE W,PRGPPN(T)        ;THE PROJECT PROG
+       MOVEM W,DTIN+3
+       PUSH P,JRPRG    ;A RETURN ADDRESS
+       TLZ F,ISW       ;FORCE NEW INIT
+       HRRZ T,LODLIM
+       CAIN T,LIBPNT   ;WHICH ONE
+       JRST LIBGO
+       JRST LDF
+PRGRET:        MOVE T,LODPNT   ;RETURNS HERE, GET NEXT ONE
+       AOBJN T,PRGBAK
+
+PRGDON:        MOVE T,LODSTP   ;RESTE POINTER IN CASE MORE ON OTHER LIBS
+       MOVEM T,@LODLIM
+JRPRG: POPJ P,PRGRET   ;PUSHED TO GET A RETURN ADDRESS
+
+PRGFIL==1      ;REL INDEX FOR FILE NAMES
+PRGPPN==RELLEN+1       ;AND FOR PPNS
+PRGDEV==2*RELLEN+1     ;AND FOR DEVICES
+>      ;END OF IFN SAILSW
+     
+
+\fSUBTTL        LDDT LOADS <SYS:DDT.REL> AND SETS SYMSW
+
+
+IFN STANSW,<
+LDDTQX:        TLO     N,DDSW+EXEQSW           ;WILL START RAID AFTER LOADING
+LDDTQ: PUSH    P,D                     ;SAVE ARG
+       PUSHJ   P,FSCN1                 ;SEE BELOW
+       MOVE    W,['RAID  ']            ;LOAD RAID STATT DDT
+IFN DMNSW,<SETZM (P);ELSE>POP P,D      ;/0D FOR DMN2 (BELOW) !?!
+       JRST    LDDT11                  ;JOIN FORCES
+>;IFN STANSW
+
+LDDTX:
+IFN ALGSW,<TRNE        F,ALGSW
+       POPJ    P,>
+       TLO     N,DDSW+EXEQSW           ;T - LOAD AND GO TO DDT
+LDDT:
+IFN ALGSW,<TRNE        F,ALGFL
+       POPJ    P,>
+IFN DMNSW,<    PUSH    P,D             ;SAVE INCASE /NNND >
+       PUSHJ     P,FSCN1               ;FORCE SCAN TO COMPLETION
+       MOVSI     W,444464              ;FILE IDENTIFIER <DDT>
+LDDT11:        TLZ     F,SYMSW!RMSMSW  ;DON'T LOAD DDT WITH LOCAL SYMBOLS
+       PUSHJ     P,LDDT1
+       PUSHJ     P,LDF         ;LOAD <SYS:DDT.REL>
+       TLO     F,SYMSW!RMSMSW          ;ENABLE LOADING WITH SYMBOLS
+IFN DMNSW,<    POP     P,D     ;RESTORE D
+       JRST    DMN2            ;MOVE SYMBOL TABLE >
+IFE DMNSW,<    POPJ    P,>
+
+LDDT1: MOVEM     W,DTIN                ;STORE FILE IDENTIFIER
+IFN PP,<MOVE   W,ILD1          ;SAVE OLD DEV
+       MOVEM   W,OLDDEV>
+       MOVSI     W,637163              ;DEVICE IDENTIFIER <SYS>
+       MOVEM     W,ILD1                ;STORE DEVICE IDENTIFIER
+       TLZ     F,ISW+LIBSW+SKIPSW+REWSW        ;CLEAR OLD FLAGS
+LDDT2: MOVSI     W,624554              ;EXTENSION IDENTIFIER <.REL>
+LDDT3: MOVEM     W,DTIN1               ;STORE EXTENSION IDENTIFIER
+LDDT4:IFN PP,<EXCH W,PPN       ;GET PROJ-PROG #
+       MOVEM W,DTIN+3
+       EXCH    W,PPN   ;W MUST BE SAVED SINCE IT MAY BE USED LATER>
+       POPJ    P,
+     
+
+\fSUBTTL        EOF TERMINATES LOADING OF A FILE
+
+EOF:   MOVE    P,PDSAV         ;RESTORE PUSHDOWN POINTER
+EOF1:  TLZ F,SLIBSW!SKIPSW     ;CLEAR ONE FILE LIB. SEARCH FLAG
+IFN DIDAL,<TRZ F,XFLG!LSTLOD   ;CLEAR DIDAL FLAGS>
+EOF2:  TLNE F,RMSMSW   ;IF REMEMBER LOADING WITH SYMBOLS IS ON
+       TLO F,SYMSW     ;THEN RESTORE SYMBOL LOADING STATE
+       POPJ    P,
+
+;      FORCE SCAN TO COMPLETION, LOAD IF NECESSARY
+
+FSCN:  PUSHJ     P,FSCN1               ;FORCED LOAD BEFORE TEST
+       TLNN    F,FULLSW                ;TEST FOR OVERLAP
+       POPJ    P,                      ;NO OVERLAP, RETURN
+       MOVE    W,H             ;FETCH CORE SIZE REQUIRED
+       SUBI W,1(S) ; COMPUT DEFICIENCY
+       JUMPL     W,EOF2                ;JUMP IF NO OVERLAP
+       TLO     F,FCONSW                ;INSURE TTY OUTPUT
+       PUSHJ   P,PRQ                   ;START WITH ?
+       PUSHJ     P,PRNUM0              ;INFORM USER
+       ERROR   7,</WORDS OF OVERLAP#/>
+       JRST    LD2             ;ERROR RETURN
+
+IFN SPCHN,<FSCN1A:     TLNN F,NSW
+       PUSHJ P,LIBF>
+FSCN1: TLON    F,FSW           ;SKIP IF NOT FIRST CALL TO FSCN
+       TLNN    F,CSW+DSW+ESW   ;TEST SCAN FOR COMPLETION
+       POPJ    P,
+FSCN2: PUSHJ     P,LD5B1               ;STORE FILE OR EXTENSION IDENT.
+
+;      LOADER CONTROL, NORMAL MODE
+
+LDF:   PUSHJ     P,ILD         ;INITIALIZE LOADING
+     
+
+\fSUBTTL        LOAD SUBROUTINE
+
+LOAD:  MOVEM   P,PDSAV         ;SAVE PUSHDOWN POINTER
+IFN WFWSW,<SETZM VARLNG                ;LENGTH OF VARIABLE AREA-ADDED TO RELOC>
+IFN ALGSW,<SETZM OWNLNG                ;LENGTH OF OWN AREA-ADDED TO RELOC>
+IFN FAILSW,<SETZM LFTHSW       ;RESET LOAD LEFT HALF FIXUP SW>
+LOAD1: MOVE    P,PDSAV         ;RESTORE PUSHDOWN POINTER
+LOAD1A:        PUSHJ   P,WORD          ;INPUT BLOCK HEADER WORD
+       MOVNI   E,400000(W)     ;WORD COUNT - FROM RH OF HEADER
+       HLRZ    A,W             ;BLOCK TYPE - FROM LH OF HEADER
+IFN FAILSW,<SKIPN POLSW                ;ERROR IF STILL DOING POLISH>
+       CAIL    A,DISPL*2       ;TEST BLOCK TYPE NUMBER
+       JRST    LOAD4           ;ERROR, ILLEGAL BLOCK TYPE
+       TLNE    F,SKIPSW        ;BLOCK OK - TEST LOAD STATUS
+       JRST    LIB1            ;RETURN TO LIB. SEARCH CONTROL
+       HRRZ    T,LOAD2(A)      ;LOAD RH DISPATCH ENTRY
+       CAIL    A,DISPL         ;SKIP IF CORRECT
+       HLRZ    T,LOAD2-DISPL(A);LOAD LH DISPATCH ENTRY
+       TLNE    F,FULLSW        ;TEST CORE OVERLAP INDICATOR
+       SOJG    A,HIGH0         ;IGNORE BLOCK IF NOT TYPE 1
+       JRST    @T              ;DISPATCH TO BLOCK SUBROUTINE
+
+;DISPATCH TABLE - BLOCK TYPES
+IFE FAILSW,<POLFIX==LOAD4A
+       LINK==LOAD4A>
+IFE WFWSW,<LVARB==LOAD4A>
+IFE DIDAL,<INDEX==LOAD4A>
+IFE ALGSW!SAILSW,<ALGBLK==LOAD4A>
+IFE SAILSW,<LDLIB==LOAD4A>
+
+LOAD2: XWD     LOCD,   BLOCK0  ;10,,0
+       XWD     POLFIX, PROG    ;11,,1
+       XWD     LINK,   SYM     ;12,,2
+       XWD     LVARB,  HISEG   ;13,,3
+       XWD     INDEX,  LIB30   ;14,,4
+       XWD     ALGBLK, HIGH    ;15,,5
+       XWD     LDLIB,  NAME    ;16,,6
+       XWD     LOAD4A, START   ;17,,7
+
+       DISPL==.-LOAD2
+
+;ERROR EXIT FOR BAD HEADER WORDS
+
+LOAD4: IFE K,<
+       CAIN    A,400           ;FORTRAN FOUR BLOCK
+       JRST    F4LD>
+LOAD4A:        MOVE    W,A             ;GET BLOCK TYPE
+       ERROR   ,</ILL. FORMAT BLOCK TYPE !/>
+       PUSHJ   P,PRNUM         ;PRINT BLOCK TYPE
+       JRST    ILC1            ;PRINT SUBROUTINE NAME
+     
+
+\fSUBTTL        LOAD PROGRAMS AND DATA (BLOCK TYPE 1)
+
+PROG:  MOVEI   V,-1(W)                 ;LOAD BLOCK LENGTH
+       PUSHJ     P,RWORD               ;READ BLOCK ORIGIN
+       ADD     V,W             ;COMPUTE NEW PROG. BREAK
+IFN REENT,<TLNN F,HIPROG
+       JRST    PROGLW  ;NOT HIGH SEGMENT
+PROG3: CAMGE W,HVAL1   ;CHECK TO SEE IF IN TOP SEG
+       JRST LOWCOR
+       MOVE T,JOBREL   ;CHECK FOR OVERFLOW ON HIGH
+       CAIL T,@X
+       JRST PROG2
+       PUSHJ P,HIEXP
+       JRST FULLC
+       JRST PROG3>
+
+PROGLW:        MOVEI T,@X
+       CAMG    H,T             ;COMPARE WITH PREV. PROG. BREAK
+       MOVE H,T
+       TLNE F,FULLSW
+       JRST FULLC      ;NO ERROR MESSAGE
+IFN REENT,<CAML H,HVAL1
+       JRST COROVL     ;WE HAVE OVERFLOWED THE LOW SEGMENT
+       CAMLE T,HILOW
+       MOVEM T,HILOW   ;HIGHEST LOW CODE LOADED INTO>
+       CAILE H,1(S)  ; SKIP IF SUFFICIENT CORE AVAILABLE
+IFN EXPAND,<JRST [PUSHJ P,XPAND>
+               JRST FULLC
+IFN REENT,<    TLNE F,HIPROG
+               SUBI W,2000     ;HISEG LOADING LOW SEG>
+IFN EXPAND,<   JRST .-1]>
+PROG2: MOVE    V,W
+PROG1: PUSHJ     P,RWORD               ;READ DATA WORD
+IFN TEN30,<CAIN V,41   ;CHANGE FOR 10/30 JOBDAT
+       MOVEI V,JOB41   ;JOB41 IS DIFFERENT
+       CAIN V,74       ;SO IS JOBDAT
+       MOVEI V,JOBDDT>
+IFN L,<CAML V,RINITL   ;CHECK FOR BAD STORE>
+       MOVEM     W,@X          ;STORE DATA WORD IN PROG. AT LLC
+       AOJA    V,PROG1         ;ADD ONE TO LOADER LOC. COUNTER
+
+IFN REENT,<
+LOWCOR:        SUB V,HIGHX     ;RELOC FOR PROPER
+       ADD V,LOWX      ;LOADING OF LOW SEQMENT
+       SUB W,HIGHX
+       ADD W,LOWX
+       JRST PROGLW>
+     
+
+\fSUBTTL        LOAD SYMBOLS (BLOCK TYPE 2)
+
+SYM:   PUSHJ   P,PRWORD        ;READ TWO DATA WORDS
+       PUSHJ   P,SYMPT;                PUT INTO TABLE
+IFN REENT,<PUSHJ P,RESTRX>
+       JRST    SYM
+
+SYMPT: TLNE C,200000   ;GLOBAL REQUEST? WFW
+       JUMPL C,SYM3    ;CHECK FOR 60 NOT JUST HIGH BIT WFW
+       TLNN    C,40000
+       JRST    SYM1A           ;LOCAL SYMBOL
+       TLNE C,100000
+       JRST SYM1B
+       PUSHJ     P,SREQ                ;GLOBAL DEF., SEARCH FOR REQUEST
+       JRST    SYM2            ;REQUEST MATCHES
+       PUSHJ     P,SDEF                ;SEARCH FOR MULTIPLE DEFINITIONS
+       JRST    SYM1            ;MULTIPLY DEFINED GLOBAL
+       JRST    SYM1B
+
+;      PROCESS MULTIPLY DEFINED GLOBAL
+
+SYM1:  CAMN    W,2(A)          ;COMPARE NEW AND OLD VALUE
+       POPJ    P,;
+       AOS     MDG             ;COUNT MULTIPLY DEFINED GLOBALS
+       PUSHJ   P,PRQ           ;START W/ ?
+       PUSHJ     P,PRNAM               ;PRINT SYMBOL AND VALUE
+IFN RPGSW,<MOVE W,JOBERR       ;RECORD THIS AS AN ERROR
+       ADDI W,1
+       HRRM W,JOBERR>
+       MOVE    W,2(A)          ;LOAD OLD VALUE
+       PUSHJ     P,PRNUM               ;PRINT OLD VALUE
+       ERROR   7,</MUL. DEF. GLOBAL IN PROG.  !/>
+       MOVE    C,SBRNAM        ;GET PROGRAM NAME
+       PUSHJ   P,PRNAME        ;PRINT R-50 NAME
+       ERROR   0,</#/>
+       POPJ    P,              ;IGNORE MUL. DEF. GLOBAL SYM
+     
+
+\f;     LOCAL SYMBOL
+
+SYM1A: TLNN    F,SYMSW         ;SKIP IF LOAD LOCALS SWITCH ON
+       POPJ    P,;             IGNORE LOCAL SYMBOLS
+SYM1B: CAIL    H,(S)           ;STORE DEFINED SYMBOL
+IFN EXPAND,<   PUSHJ P,XPAND7>
+IFE EXPAND,<   JRST SFULLC>
+SYM1C: IFE K,<
+       TLNE    N,F4SW;         FORTRAN FOUR REQUIRES A BLT
+       PUSHJ   P,MVDWN;        OF THE TABLES>
+       MOVEI   A,-2(S)         ;LOAD A TO SAVE INST. AT SYM2
+SYM1D: SUBI    S,2;            UPDATE UNDEFINED POINTER
+       POP     B,2(A)          ;MOVE UNDEFINED VALUE POINTER
+       POP     B,1(A)          ;MOVE UNDEFINED SYMBOL
+       MOVEM   W,2(B)          ;STORE VALUE
+       MOVEM  C,1(B)           ;STORE SYMBOL
+       POPJ    P,
+     
+
+\f;     GLOBAL DEFINITION MATCHES REQUEST
+
+SYM2:  PUSH    P,SYM2C ;NEXT MUST BE A SUBROUTINE FOR LATER, SET RETURN
+SYM2B: MOVE    V,2(A)          ;LOAD REQUEST POINTER
+       PUSHJ   P,REMSYM
+       JUMPL V,SYM2W   ;ADDITIVE REQUEST? WFW
+       PUSHJ     P,SYM4A               ;REPLACE CHAIN WITH DEFINITION
+SYM2W1:        PUSHJ P,SREQ    ;LOOK FOR MORE REQUESTS FOR THIS SYMBOL
+       JRST SYM2B      ;FOUND MORE
+       MOVE A,SVA      ;RESTORE A
+SYM2C: POPJ    P,SYM1D ;RETURN, SEE SYM2 FOR USE OF ADDRESS
+
+;      REQUEST MATCHES GLOBAL DEFINITION
+
+SYM2A: MOVE    V,W             ;LOAD POINTER TO CHAIN
+       MOVE    W,2(A)          ;LOAD VALUE
+       JUMPL V,FIXWP   ;HANDLE ATTITIVE REQUEST WFW
+       JRST SYM4A
+
+;      PROCESS GLOBAL REQUEST
+
+SYM3:  TLNE    C,040000;               COMMON NAME
+       JRST    SYM1B
+       TLC     C,640000;               PERMUTE BITS FROM 60 TO 04
+       PUSHJ     P,SDEF                ;SEARCH FOR GLOBAL DEFINITION
+       JRST    SYM2A           ;MATCHING GLOBAL DEFINITION
+       JUMPL W,SYM3X1  ;ADDITIVE FIXUP WFW
+       PUSHJ     P,SREQ                ;SEARCH FOR EXISTING REQUEST WFW
+       JRST    SYM3A           ;EXISTING REQUEST FOUND WFW
+SYM3X1:        TLNN W,100000   ;CHECK SYMBOL TABLE FIXUP
+       JRST     SYM3X2 ;NO
+       MOVE     V,1(B) ;MUST BE LAST SYMBOL DEFINED. GET SYMBOL
+       XOR      V,W            ;CHECK FOR IDENTITY
+       TDNE     V,[XWD 77777,-1]       ;BUT IGNORE HIGH 3 BITS
+       POPJ     P,             ;NOT SAME, ASSUME NOT LOADED LOCAL
+       HRRI     W,2(B)         ;GET LOCATION IN RIGHT HALF
+       TLO      W,1
+       SUB      W,HISTRT               ;AND MAKE RELATIVE
+IFN FAILSW,<TLZ        W,040000>
+SYM3X2:        CAIL    H,(S)           ;STORE REQUEST IN UNDEF. TABLE WFW
+IFN EXPAND,<   PUSHJ P,XPAND7>
+IFE EXPAND,<   JRST SFULLC>
+SYM3X: IFE K,<
+       TLNE    N,F4SW;         FORTRAN FOUR
+       PUSHJ   P,MVDWN;                ADJUST TABLES IF F4>
+       SUB     S,SE3           ;ADVANCE UNDEFINED POINTER
+       MOVEM     W,2(S)                ;STORE UNDEFINED VALUE POINTER
+       MOVEM     C,1(S)                ;STORE UNDEFINED SYMBOL
+       POPJ    P,;
+     
+
+\f
+;      COMBINE TWO REQUEST CHAINS
+
+SYM3A: SKIPL 2(A)      ;IS IT ADDITIVE WFW
+       JRST SYM3A1     ;NO, PROCESS WFW
+SYM3A4:        PUSHJ P,SDEF2   ;YES, CONTINUE WFW
+       JRST SYM3A      ;FOUND ANOTHER WFW
+       JRST SYM3X2     ;REALLY NO CHAIN THERE WFW
+SYM3A1:        SKIPE   V,2(A)  ;IF ADDRESS OF CHAIN IS 0, THROW IT AWAY
+       JRST    SYM3A2  ;AND USE THE NEW ONE, ELSE ADD THE CHAINS
+       MOVEM   W,2(A)  ;W IS ADDRESS OF NEW CHAIN,STORE ON TOP OF OLD 0
+       POPJ    P,
+SYM3A2:        
+SYM3A3:        MOVE A,2(A)
+SYM3B: HRRZ V,A
+IFN L,<CAMGE V,RINITL
+       HALT>
+IFN REENT,<CAMGE V,HVAL1
+       SKIPA X,LOWX
+       MOVE X,HIGHX>
+       HRRZ A,@X ; LOAD NEXT ADDRESS IN CHAIN
+       JUMPN A,SYM3B  ; JUMP IF NOT THE LAST ADDR. IN CHAIN
+       HRRM    W,@X            ;COMBINE CHAINS
+       POPJ    P,;
+
+;WFW PATCH FOR ADDITIVE GLOBAL REQUESTS
+
+FIXWP: TLNN     V,100000       ;CHECK FOR SYMBOL TABLE FIXUP
+       JRST     FIXW
+       MOVE     T,1(B) ;SYMBOL FIXUP, MUST BE LAST SYMBOL DEFINED
+       XOR      T,V            ;CHECK FO SAME
+       TDNE     T,[XWD 77777,-1]       ;EXCEPT FOR HIGH CODE BITS
+       POPJ     P,             ;ASSUME NON-LOADED LOCAL
+       HRRI     V,2(B)         ;GET LOCATION
+       SUBI     V,(X)          ;SO WE CAN USE @X
+       JRST FIXW1
+FIXW:  IFN REENT,<HRRZ T,V
+       CAMGE T,HVAL1
+       SKIPA X,LOWX
+       MOVE X,HIGHX>
+IFN L,<        HRRZ T,V
+       CAMGE R,RINITL
+       POPJ P,>
+FIXW1: TLNE    V,200000        ;IS IT LEFT HALF
+       JRST FIXWL
+       MOVE T,@X       ;GET WORD
+       ADD T,W         ;VALUE OF GLOBAL
+       HRRM T,@X       ;FIX WITHOUT CARRY
+       MOVSI   D,200000        ;SET UP TO REMOVE DEFERED INTERNAL IF THERE
+       JRST    SYMFIX
+     
+
+\fFIXWL:        HRLZ    T,W             ;UPDATE VALUE OF LEFT HALF
+       ADDM    T,@X            ;BY VALUE OF GLOBAL
+       MOVSI   D,400000        ;LEFT DEFERED INTERNAL
+SYMFIX:        TLNN V,100000   ;CHECK FOR SYMBOL TABLE FIXUP
+       POPJ P,         ;NO, RETURN
+       ADDI V,(X)      ;GET THE LOCATION
+SYMFX1:        MOVE T,-1(V)    ;GET THE SYMBOL NAME
+       TLNN T,40000    ;CHECK TO SEE IF INTERNAL
+       POPJ P,         ;NO, LEAVE
+       ANDCAB D,-1(V)  ;REMOVE PROPER BIT
+       TLNE D,600000   ;IS IT STILL DEFERED?
+       POPJ P,         ;YES, ALL DONE
+       EXCH C,D        ;NO, CHECK FOR A REQUEST FOR IT
+       PUSHJ P,SREQ
+       JRST CHNSYM     ;YES, WILL HAVE TO CALL THE FIXUP ROUTINE
+       MOVE C,D        ;GET C BACK
+       POPJ P,
+CHNSYM:        PUSH P,D        ;HAS THE OLD C IN IT
+       PUSH P,W        ;WE MAY NEED IT LATER
+       MOVE W,(V)      ;GET VALUE
+       PUSHJ P,SYM2B   ;CALL THE FOUND GLOBAL TO MATCH REQUEST ROUTINE
+       POP P,W
+       POP P,C         ;RESTORE FOR CALLER
+       POPJ P,         ;AND GO AWAY
+
+SYM2W: IFN FAILSW,<
+       TLNE V,40000    ;CHECK FOR POLISH
+       JRST POLSAT>
+       TLNN V,100000   ;SYMBOL TABLE?
+       JRST SYM2WA
+       ADD V,HISTRT    ;MAKE ABSOLUTE
+       SUBI V,(X)      ;GET READY TO ADD X
+       PUSHJ P,FIXW1
+       JRST SYM2W1
+SYM2WA:        PUSHJ P,FIXW    ;DO FIXUP
+       JRST SYM2W1     ;AND LOOK FOR MORE REQUESTS
+
+;END WFW PATCH
+     
+
+\f;PATCH VALUES INTO CHAINED REQUEST
+
+SYM4:  IFN L,<CAMGE V,RINITL
+       POPJ P,>
+IFN REENT,<CAMGE V,HVAL1
+       SKIPA X,LOWX
+       MOVE X,HIGHX>
+       HRRZ    T,@X    ;LOAD NEXT ADDRESS IN CHAIN
+       HRRM    W,@X            ;INSERT VALUE INTO PROGRAM
+       MOVE    V,T
+SYM4A: JUMPN     V,SYM4                ;JUMP IF NOT LAST ADDR. IN CHAIN
+       POPJ    P,
+
+IFE    K,<
+MVDWN: HRRZ T,MLTP
+IFN EXPAND,<   SUBI T,2>
+       CAIG    T,(H);          ANY ROOM LEFT?
+IFN EXPAND,<   JRST    [PUSHJ P,XPAND>
+                       TLOA F,FULLSW
+IFN EXPAND,<           JRST MVDWN
+                       POPJ P,]>
+       TLNE    F,SKIPSW+FULLSW
+       POPJ    P,      ;       ABORT BLT
+       HRREI   T,-2
+       ADDM    T,PLTP;         ADJUST PROGRAMMER LABEL POINTER
+       ADDM    T,BITP;         AND BIT TABLE POINTER
+       ADDM    T,SDSTP;        FIRST DATA STATEMENT
+       ADDM    T,LTC
+       ADDM    T,ITC
+       TLNE    N,SYDAT
+       ADDM    T,V
+       ADDB    T,MLTP;         AND FINALLY TO MADE LABEL TABLE
+       HRLS    T;              SET UP BLT POINTER
+       ADD     T,[XWD 2,0]
+       BLT     T,(S)
+       POPJ    P,
+>
+     
+
+\fSUBTTL        HIGH-SEGMENT (BLOCK TYPE 3)
+;THIS PROGRAM IS INTENDED FOR HI SEGMENT IF RUNNING ON A PDP-10.
+; THIS BLOCK TYPE OCCURS AFTER ENTRY AND NAME BLOCKS.
+
+HISEG: PUSHJ   P,WORD          ;GOBBLE UP A WORD.
+       JUMPE   W,HISEG2        ;MACRO V36
+       PUSHJ   P,WORD          ;GET THE OFSET
+IFE REENT,<HISEG2==LOAD1A
+       JUMPGE  W,LOAD1A        ;NOT TWO SEG PROG.>
+IFN REENT,<JUMPE W,HISEG2      ;IGNORE ZERO
+       JUMPG   W,HISEG3        ;NEG. IF TWOSEG PSEUDO-OP>
+       TRO     F,TWOFL         ;SET FLAG
+IFN REENT,<
+       TRNE    F,NOHI!NOHI6    ;TWO SEGMENTS LEGAL?
+       JRST    ONESEG          ;LOAD AS ONE SEGMENT
+HISEG3:        HRRZ    D,W             ;GET START OF HISEG 
+       JUMPE   D,.+2           ;NOT SPECIFIED
+       PUSHJ   P,HCONT         ;AS IF /H
+HISEG2:        PUSHJ   P,HISEG1
+       JRST    LOAD1           ;GET NEXT BLOCK
+FAKEHI:                                ;AS IF BLOCK TYPE 3
+HISEG1:        TRNE    F,NOHI!NOHI6    ;LOAD REENT?
+       POPJ    P,
+       TLOE    F,HIPROG        ;LOADING HI PROG
+       POPJ    P,              ;IGNORE 2'ND HISEG
+       TRON    F,SEENHI        ;HAVE WE LOADED ANY OTHER HI STUFF?
+       PUSHJ   P,SETUPH        ;NO,SET UP HI SEG.
+       MOVEM R,LOWR
+       MOVE R,HIGHR
+       HRRM    R,2(N)          ;CALL THIS THE START OF THE PROGRAM
+       MOVE X,HIGHX
+       POPJ    P,
+SETUPH:        MOVE X,HVAL1
+       CAIGE X,-1      ;SEE IF IT HAS BEEN CHANGED FROM ORIG
+       JRST SEENHS     ;YES, MUST HAVE SEEN /H
+       MOVEI X,400000
+       MOVEM X,HVAL1
+       CAIG X,(H)      ;HAVE WE RUN OVER WITH THE LOW SEG
+       JRST COROVL
+       ADDI X,JOBHDA
+       HRLI X,W
+       MOVEM X,HVAL
+SEENHS:        MOVE X,HVAL
+       MOVEM X,HIGHR
+       HRRZ X,JOBREL
+       SUB X,HVAL1
+       ADDI X,1
+       HRLI X,V
+       MOVEM X,HIGHX
+       POPJ P,
+
+     
+
+\fSETSEG:       TRZ     F,NOHI!SEGFL    ;ALLOW HI-SEG
+       JUMPL   D,.+2           ;/-H TURNS OFF NOHI ONLY
+       TRO     F,SEGFL         ;/1H FORCES  HI
+       POPJ    P,
+>
+
+ONESEG:        HLRZ    D,W             ;GET LENGTH OF HISEG
+       SUBI    D,(W)           ;REMOVE OFSET
+       JUMPLE  D,TWOERR        ;LENGTH NOT AVAILABLE
+       MOVEM   R,LOWR          ;SAVE LOW SEGMENT RELOCATION
+       ADDM    D,LOWR          ;ADD TO LOW SEG RELOCATION
+       HRRZM   W,HVAL1         ;SO RELOC WILL WORK
+       JRST    LOAD1           ;GET NEXT BLOCK
+
+TWOERR:        ERROR   7,</TWO SEGMENTS ILLEGAL#/>
+       JRST    LDRSTR
+     
+
+\fSUBTTL        HIGHEST RELOCATABLE POINT (BLOCK TYPE 5)
+SFULLC:        TLOE    F,FULLSW        ;PREVIOUS OVERFLOW?
+       JRST    FULLC           ;YES, DON'T PRINT MESSAGE
+       ERROR   ,<?SYMBOL TABLE OVERLAP#?>
+FULLC: TLO     F,FULLSW        ;CORE OVERLAP ERROR RETURN
+IFE K,<        TLNE    N,F4SW
+       POPJ    P,>
+       JRST    LIB3            ;LOOK FOR MORE
+HIGH2: PUSHJ   P,RWORD         ;GET HISEG BREAK
+       TRZ     F,TWOFL         ;CLEAR FLAG NOW
+IFE REENT,<    MOVE    R,LOWR
+       JRST    HIGH2A>
+IFN REENT,<    TRNE    F,NOHI!NOHI6    ;SINGLE SEGMENT LOAD?
+       JRST    [MOVE   R,LOWR  ;YES,GET LARGER RELOC
+               MOVE    W,HVAL  ;ORIGINAL VALUE
+               MOVEM   W,HVAL1 ;RESET
+               JRST    HIGH2A] ;CONTINUE AS IF LOW ONLY
+       HRR     R,W             ;PUT BREAK IN R
+       CAMLE   R,HVAL
+       MOVEM   R,HVAL
+       MOVEM   R,HIGHR
+       MOVE    R,LOWR          ;NEXT WORD IS LOW SEG BREAK
+       TLZ     F,HIPROG        ;CLEAR HIPROG
+       PUSHJ   P,PRWORD        ;GET WORD PAIR
+       HRR     R,C             ;GET LOW SEG BREAK
+       MOVEM   R,LOWR          ;SAVE IT
+       MOVE    R,HIGHR         ;GET HIGH BREAK
+       JRST    HIGHN3          ;AND JOIN COMMON CODE>
+
+HIGH0: CAIE    A,4             ; TEST FOR END BLOCK (OVERLAP)
+       JRST    LIB30
+
+HIGH:  TRNE    F,TWOFL         ;IS THIS A TWO SEGMENT PROGRAM?
+       JRST    HIGH2           ;YES
+HIGH2A:        PUSHJ   P,PRWORD        ;READ TWO DATA WORDS.
+IFN REENT,<    TLZE F,HIPROG
+       JRST HIGHNP>
+IFN WFWSW,<ADD C,VARLNG                ;IF LOW SEG THEN VARIABLES GO AT END>
+IFN ALGSW,<ADD C,OWNLNG        ;ADD IN LENGTH OF OWN BLOCK>
+       HRR R,C         ;SET NEW PROGRAM BREAK
+       CAMGE C,W       ;CHECK 2ND WORD (LOC PROG BRK IF PRESENT)
+       MOVE C,W
+HIGH31:        ADDI C,(X)
+       CAIG H,(C)
+       MOVEI H,(C)     ;SET UP H
+       CAILE   H,1(S)  ;TEST PROGRAM BREAK
+IFN EXPAND,<PUSHJ P,[  PUSHJ P,XPAND
+                       TLOA F,FULLSW
+                       JRST POPJM2
+                       POPJ    P,]>
+IFE EXPAND,<TLO        F,FULLSW>
+HIGH3: MOVEI A,F.C
+       BLT A,B.C
+IFN REENT,<TRNE        F,NOHI!NOHI6    ;ONE SEGMENT PROGRAM?
+       JRST    HIGHN4          ;YES
+       HRLZ    W,HIGHR         ;GET HIGH PROG BREAK
+       JUMPE   W,[HRRZ W,R     ;NO HIGH SEGMENT YET
+               JRST    .+2]    ;SO USE LOW RELOCATION ONLY
+       HRR     W,LOWR          ;GET LOW BREAK
+       SETZ    C,              ;ZERO SYMBOL NAME
+       PUSHJ   P,SYM1B         ;PUT IN SYMBOL TABLE
+       MOVEM   S,F.C+S         ;SAVE NEW S AND B
+       MOVEM   B,F.C+B         ;INCASE OF ERROR
+HIGHN4:>
+       TLZ     F,NAMSSW        ;RELAX, RELOCATION BLOCK FOUND
+       TLNE    F,SLIBSW+LIBSW  ;NORMAL MODE EXIT THROUGH LOAD1
+       JRST    LIB             ;LIBRARY SEARCH EXIT
+       JRST LOAD1
+IFN REENT,<
+HIGHNP:        HRR R,C
+HIGHN1:        CAMLE R,HVAL
+       MOVEM R,HVAL
+       MOVEM R,HIGHR
+HIGHN3:        PUSH    P,W     ;SAVE W,CONTAIN HIGHEST ABSOLUTE ADDRESS
+       ADD W,LOWX      ;LOC PROG BRK
+       CAIGE H,(W)     ;CHECK FOR TOP OF LOW CORE
+       MOVEI H,(W)
+       POP     P,W     ;RESTORE
+       CAML H,HVAL1
+       JRST COROVL     ;OVERFLOW OF LOW SEGMENT
+HIGHN2:        HRRZ R,HVAL
+       SUB R,HVAL1
+       ADD R,HISTRT
+       CAMLE R,JOBREL
+       JRST    [PUSHJ P,HIEXP
+               JRST FULLC
+               JRST HIGHN2]
+       MOVE R,LOWR
+       MOVE X,LOWX
+IFN WFWSW,<ADD R,VARLNG        ;VARIABLES IN LOW SEG>
+IFN ALGSW,<ADD R,OWNLNG        ;OWN BLOCK IN LOW SEGMENT>
+       HRRZ C,R
+       CAIGE   C,(W)   ;IS ABSOLUTE LOCATION GREATER
+       HRR     R,W     ;YES USE IT
+     
+
+\f      HRRZ    C,R     ;SET UP C AGAIN
+       JRST HIGH31     ;GO CHECK PROGRAM BREAK
+     
+
+\fSUBTTL        EXPAND HIGH SEGMENT
+
+HIEXP: TLNE    F,FULLSW
+       POPJ    P,
+IFN EXPAND,<PUSH P,Q>
+       PUSH P,H
+       PUSH P,X
+       PUSH P,N
+IFE K,<HRRZ X,MLTP
+       TLNN N,F4SW>
+       MOVEI X,1(S)
+       HRRZ N,X
+       SUB N,H
+       CAILE N,1777
+       JRST MOVHI
+IFE EXPAND,<POPJ P,>
+IFN EXPAND,<HRRZ N,JOBREL
+       ADDI N,2000
+       CAMG    N,ALWCOR
+       CORE N,
+       JRST XPAND6
+       PUSHJ P,ZTOP
+       POP P,N
+       JRST XPAND3>
+
+MOVHI: MOVEI N,-2000(X)
+       HRL N,X
+       HRRZ X,JOBREL
+       BLT N,-2000(X)
+       PUSHJ P,ZTOP
+       MOVNI H,2000
+IFN EXPAND,<JRST XPAND8>
+IFE EXPAND,<ADDM H,HISTRT
+       ADDM H,S
+       ADDM H,B
+       ADDM H,HIGHX
+       TLNE F,HIPROG
+       ADDM H,-1(P)
+       POP P,N
+       SUBI N,2000     ;ADJUST POINTER TO NAME
+IFE K,<        TLNN F4SW
+       JRST HIXP1
+       ADDM H,PLTP
+       ADDM H,BITP
+       ADDM H,SDSTP
+       ADDM H,MLTP
+       TLNE N,SYDAT
+       ADDM H,V
+HIXP1:>
+       POP P,X
+       POP P,H
+       AOS (P)
+       POPJ P,>
+
+ZTOP:  HRRZ N,JOBREL
+       MOVEI X,-1776(N)
+       HRLI X,-1777(N)
+       SETZM -1(X)
+       BLT X,(N)
+       POPJ P,>
+     
+
+\fSUBTTL        PROGRAM NAME (BLOCK TYPE 6)
+
+NAME:  TLOE    F,NAMSSW        ;HAVE WE SEEN TWO IN A ROW?
+       JRST    NAMERR          ;YES, NO END BLOCK SEEN
+       PUSHJ   P,PRWORD        ;READ TWO DATA WORDS
+       MOVEM   C,SBRNAM        ;SAVE SUBROUTINE NAME
+NCONT: HLRE    V,W             ;GET COMPILER TYPE
+       HRRZS   W               ;CLEAR TYPE
+       JUMPL   V,.+3
+       CAIGE   V,CMPLEN-CMPLER ;ONLY IF LEGAL TYPE
+       XCT     CMPLER(V)       ;DO SPECIAL FUNCTION
+       TLOE    N,COMFLG        ;SKIP IF COMMON NOT PREV. SET
+       JRST    NAME1           ;SIZE OF COMMON PREV. SET
+       MOVEM   W,COMSAV        ;STORE LENGTH OF COMMON
+       JUMPE   W,NAME2         ;JUMP IF NO COMMON IN THIS JOB
+       HRRI    R,@R            ;FIRST PROGRAM SET LOAD ORIGIN
+NAME1: CAILE   H,-1(S)         ;TEST FOR AVAIL. SYMBOL SPACE
+IFN EXPAND,<   PUSHJ P,XPAND7>
+IFE EXPAND,<   JRST SFULLC>
+       SUBI    S,2             ;UPDATE UNDEF. TABLE POINTER
+       POP     B,2(S)
+       POP     B,1(S)
+       HRRZ    V,N             ;POINTER TO PREVIOUS NAME
+       SUBM    B,V             ;COMPUTE RELATIVE POSITIONS
+       HRLM    V,2(N)          ;STORE FORWARD POINTER
+       HRR     N,B             ;UPDATE NAME POINTER
+NAME2: MOVEM   C,1(B)          ;STORE PROGRAM NAME
+       HRRZM   R,2(B)          ;STORE PROGRAM ORIGIN
+       CAMG    W,COMSAV        ;CHECK COMMON SIZE
+IFE REENT,<JRST        LIB3            ;COMMON OK>
+IFN REENT,<JRST [TRNE F,SEGFL  ;LOAD LOW IN HI-SEG
+               PUSHJ P,FAKEHI  ;YES
+               JRST    LIB3]>
+       SKIPA   C,COMM
+ILC:   MOVE    C,1(A)          ;NAME
+       PUSH    P,C             ;SAVE COMMON NAME
+       ERROR   ,</ILL. COMMON !/>
+       POP     P,C
+       PUSHJ   P,PRNAME
+ILC1:  SKIPN   SBRNAM
+       JRST    ILC2
+       ERROR   0,</ PROG. !/>
+       MOVE    C,SBRNAM        ;RECOVER SUBROUTINE NAME
+       PUSHJ   P,PRNAME
+ILC2:  ERROR   0,</ #/>
+       JRST    LD2
+
+NAMERR:        SETZM   DTIN            ;CLEAR WRONG FILE NAME FOR MESSAGE
+       ERROR   ,</NO END BLOCK !/>
+       JRST    ILC1
+
+     
+
+\f;COMPILER TYPE - DO SPECIAL FUNCTION FOR IT
+
+DEFINE CTYPE (CONDITION,TRUE,FALSE)
+<IFN CONDITION,<TRUE>
+IFE CONDITION,<FALSE>>
+
+CMPLER:        CTYPE 1,JFCL,JFCL               ;0 MACRO
+       CTYPE K-1,<TRO F,F4FL>,JFCL     ;1 FORTRAN
+       CTYPE 1,<TRO F,COBFL>,JFCL      ;2 COBOL
+       CTYPE ALGSW,<PUSHJ P,ALGNAM>,JFCL       ;3 ALGOL
+                                       ;4 NELIAC
+                                       ;5 PL/1
+CMPLEN:
+
+     
+
+\fSUBTTL        STARTING ADDRESS (BLOCK TYPE 7)
+
+
+START: PUSHJ   P,PRWORD        ;READ TWO DATA WORDS
+       TLNN    N,ISAFLG        ;SKIP IF IGNORE SA FLAG ON
+       HRRZM   C,STADDR        ;SET STARTING ADDRESS
+IFN NAMESW,<
+       MOVE    W,DTIN          ;PICK UP BINARY FILE NAME
+       TLNN N,ISAFLG
+       MOVEM   W,PRGNAM        ;SAVE IT
+       MOVE    W,1(N)          ;SET UP NAME OF THIS PROGRAM
+       TLNN    N,ISAFLG        ;DONT SET NAME IF IGNORING SA'S
+       PUSHJ   P,LDNAM>
+       PUSHJ   P,PRWORD        ;**OBSCURE RETURN TO LOAD1**
+
+IFN REENT,<
+RESTRX:        TLNE F,HIPROG
+       SKIPA X,HIGHX
+       MOVE X,LOWX
+       POPJ P,>
+     
+
+\fSUBTTL        ONE PASS LOCAL DEFINITION (BLOCK TYPE 10)
+
+                               ;PMP PATCH FOR LEFT HALF FIXUPS
+IFN FAILSW!WFWSW,<
+LOCDLH:        IFN L,<CAMGE V,RINITL
+       POPJ P,>
+IFN REENT,<CAMGE V,HVAL1
+       SKIPA X,LOWX
+       MOVE X,HIGHX>
+       HLRZ T,@X       ;LOAD NEXT ADDRESS IN CHAIN
+       HRLM W,@X       ;INSERT VALUE INTO PROGRAM
+       MOVE V,T
+LOCDLF:        JUMPN V,LOCDLH  ;JUMP IF NOT LAST ADDR. IN CHAIN
+       POPJ    P,>
+IFN FAILSW,<
+LOCDLI:        PUSHJ   P,LOCDLF
+IFN REENT,<PUSHJ P,RESTRX>
+       AOSA LFTHSW     ;TURN OFF LEFT HALF FIX SW (WAS -1) AND SKIP
+LOCDLG:        SETOM LFTHSW    ;TURN ON LEFT HALF FIX SW>
+                       ;END PMP PATCH
+LOCD:  PUSHJ     P,RWORD               ;READ ONE DATA WORD
+       HLRZ    V,W             ;STORAGE POINTER IN LEFT HALF
+IFN FAILSW,<
+       SKIPE LFTHSW    ;LEFT HALF CHAINED? PMP
+       JRST LOCDLI     ;YES PMP
+       CAMN W,[-1]     ;LEFT HALF NEXT? PMP
+       JRST LOCDLG     ;YES, SET SWITCH PMP>
+       PUSHJ     P,SYM4A               ;LINK BACK REFERENCES
+IFN REENT,<PUSHJ P,RESTRX>
+       JRST    LOCD
+     
+
+\fSUBTTL        LVAR FIX-UP (BLOCK TYPE 13)
+IFN WFWSW,<
+LVARB: PUSHJ P,PRWORD  ;THE FIRST TWO WORDS IN THE BLOCK
+       MOVEM W,VARLNG  ;AR SPECIAL. SECOND IS LENGTH OF VARIABLES
+IFN REENT,<    TLNE F,HIPROG
+               MOVE C,LOWR     ;USE LOW RELOC IF LOADING HI SEG>
+               ;ELSE C HAS RELOC FOR THIS PROGRAM, USE IT
+       HRRZM C,VARREL  ;THIS IS LOCATION 0 OF VARIABLE AREA
+LVLP:  PUSHJ P,PRWORD  ;THINGS COME IN PAIRS
+       TLNE C,200000   ;BIT ON IF SYMBOL TABLE FIXUP
+       JRST LVSYM
+       HLRZ V,W        ;NO GET LOC FROM LEFTH HALF OF SECOND
+       ADD W,VARREL    ;AND RELOCATE VARIABLE
+       TLNE C,400000   ;ON FOR LEFT HALF
+       JRST    [PUSHJ P,LOCDLF ;TAKE CARE OF IT
+IFN REENT,<    JRST LVLCOM]    ;RESET X>
+IFE REENT,<    JRST LVLP]      ;MUST BE LOW SEG X OK>
+       PUSHJ P,SYM4A   ;RIGHT HALF CHAIN
+IFN REENT,<LVLCOM:     PUSHJ P,RESTRX>
+       JRST LVLP
+LVSYM: MOVE V,B        ;GET SYMBOL TABLE POINTER
+       ADD C,VARREL    ;VALUE IS IN FIRST WORD FOR THESE
+       TLZ W,740000    ;MAKE SURE NO BITS ON
+       ADDI V,2        ;CORRECT POINTER TO SYMBOL TABLE
+SRSYM: MOVE A,-1(V)    ;GET A NAME
+       TLZN A,740000   ;CHECK FOR PROGRAM NAME
+       JRST LVLP       ;LEAVE (PROBABLY A NON-LOADED LOCAL)
+       CAMN A,W        ;IS IT THE RIGHT ONE??
+       JRST LVSYMD     ;YES
+       ADD V,SE3       ;CHECK NEXT ONE
+       JUMPL V,SRSYM   ;BUT ONLY IF SOME ARE THERE
+       JRST LVLP       ;GIVE UP
+LVSYMD:        TLNE C,400000   ;WHICH HALF??
+       JRST LVSYML     ;LEFT
+       ADD C,(V)       ;ADDITIVE FIXUP
+       HRRM C,(V)
+       MOVSI D,200000  ;DEFERED BITS
+LVSM1: PUSHJ P,COMSFX  ;GO TAKE CARE OF IT
+       JRST LVLP       ;NEXT PLEASE
+LVSYML:        HRLZS C
+       ADDM C,(V)      ;WE DON'T HAVE TO WORRY ABOUT OVERFLOW HERE
+       MOVSI D,400000  ;LEFT DEFERED BITS
+       JRST LVSM1      ;GO WORRY ABOUT DEFERED INTERNALS>
+     
+
+\fSUBTTL        FAIL LOADER
+;ONLY LIST IF FAILSW=1
+       XLIST
+IFN FAILSW,<LIST>
+REPEAT 0,<IF POLISH FIXUPS CONTAIN GLOBAL REQUESTS WHICH
+CAN NOT BE SATISFIED WHEN THEY ARE SEEN, THEY MUST BE
+SAVED UNTIL THESE GLOBAL SYMBOLS BECOME DEFINED.
+THE POLISH FIXUP IS SAVED IN THE UNDEFINED TABLE (POINTED
+TO BY S). THE FIXUP IS SAVED IN TWO WORD BLOCKS THE FIRST
+WORD OF WHICH (THE ONE WHICH WOULD NORMALL CONTAIN THE SYMBOL)
+HAS SPECIAL BITS ON SO IT WILL NOT BE FOUND BY A SEARCH FOR
+A GLOBAL REQUEST. SINCE THE UNDEFINED TABLE MAY BE
+SHUFFELED INTO A RANDOM ORDER, IT IS NOT POSSIBLE TO KEEP
+ALL OF A POLISH FIXUP TOGETHER OR TO HAVE POINTERS IN
+THE USUAL SENCE FROM ONE TWO WORD BLOCK TO ANOTHER.
+SUFFICIENT INFORMATION IS THEREFORE GIVEN TO DETERMINE
+WHAT THE FIRST WORD OF THE NEXT DESIRED BLOCK IS AND THIS
+BLOCK IS FOUND BY SEARCHING THE UNDEFINED TABLE FOR A MATCH.
+EACH POLISH FIXUP WHICH IS ENTERED INTO THE UNDEFINED
+TABLE IS GIVEN A UNIQUE NUMBER CALLED THE "HEAD NUMBER".
+EACH ELEMENT OF THE FIXUP (EITHER OPERAND OR OPERATOR)
+IS ASSIGNED A NUMBER CALLED THE "OP NUMBER". THUS
+THE OP NUMBER AND HEAD NUMBER TOGETHER DETERMINE
+A SPECIFIC ELEMENT OF A SPECIFIC FIXUP. EACH ELEMENT
+(TWO WORD BLOCK) IS ARRANGED AS FOLLOWS:
+WORD 1:
+       BITS 0-4  THESE ARE THE USUAL CODE BITS OF A RADIX50
+               SYMBOL AND CONTAIN 44 TO DISTINGUISH
+               AN ELEMENT OF A POLISH FIXUP FROM OTHER
+               SYMBOLS IN THE UNDEFINED TABLE
+       BITS 5-17 THE HEAD NUMBER OF THIS FIXUP
+       BITS 18-30 THE OP NUMBER OF THIS ELEMENT
+       BITS 31-35 THE OPERAND FOR THIS ELEMENT 
+               OPERAND 2 INDICATES A WORD OF DATA
+WORD 2:
+       IF THE OPERAND IS 2 THIS WORD CONTAINS THE DATA
+
+       IF THIS IS NOT A DATA OPERATOR THEN THE LEFT AND
+       RIGHT HALVES OF THIS WORD POINT TO THE TWO OPERANDS
+       THE CONTENTS OF THE HALF WORD IS THE RIGHT HALF
+       OF THE FIRST WORD OF THE BLOCK POINTED
+       TO. THUS THE LEFT HALF OF THE FIRST WORD COMBINED
+       WITH ONE OF THESE HALF WORDS IS THE FIRST WORD
+       OF THE BLOCK POINTED TO AND CAN BE FOUND BY SEARCHING
+
+EACH FIXUP ALSO HAS A HEADER BLOCK. THIS BLOCK CONTAINS THE
+FOLLOWING INFORMATION:
+WORD 1:
+       BITS 0-17 0
+       BITS 18-21  44 
+       BITS 22-35 THE HEAD NUMBER OF THIS FIXUP
+
+WORD 2:
+       BITS 0-17 A COUNT OF THE NUMBER OF UNDEFINED
+               GLOBALS REMAINING IN THIS FIXUP
+       BITS 18-35 A HALF WORD POINTER OF THE
+               SAME TYPE FOUND IN OTHER ELEMENTS POINTING
+               TO THE FIRST ELEMENT OF POLISH
+               WHICH WILL BE THE STORE OPERATOR
+
+THE REQUESTS FOR THE GLOBAL SYMBOLS NEEDED BY THE FIXUP ARE
+ENTERED AS FOLLOWS:
+
+WORD 1:
+       BITS 0-4  04
+       BITS 5-35  RADIX 50 FOR THE NAME OF THE SYMBOL
+     
+
+\f(NOTE THIS IS JUST A STANDARD GLOBAL REQUEST)
+
+WORD 2:
+       BITS 0-4 44 (THIS IDENTIFIES IT AS "ADITIVE TYPE"
+               AND BIT 4 INDICATES POLISH)
+       BITS 5-17 THE HEAD NUMBER OF THE FIXUP
+               (THIS GIVES ENOUGH INFORMATION TO FIND THE HEADER
+               BLOCK AND UPDATE THE COUNT WHEN THE REQUEST IS
+     
+
+\f              SATISFIED)
+       BITS 18-35  A HALF WORD POINTER TO THE ELEMENT OF THE
+               FIXUP INTO WHICH THE VALUE OF
+     
+
+\f              THE SYMBOL SHOULD BE STORED
+>
+     
+
+\fIFN FAILSW,<
+;POLISH FIXUPS <BLOCK TYPE 11>
+
+PDLOV: SKIPE POLSW     ;PDL OV ARE WE DOING POLISH?
+       JRST COMPOL     ;YES
+       ERROR ,</PUSHDOWN OVERFLOW#/>
+       JRST LD2
+COMPOL:        ERROR ,</POLISH TOO COMPLEX#/>
+       JRST LD2
+
+
+;READ A HALF WORD AT A TIME
+
+RDHLF: TLON N,HSW      ;WHICH HALF
+       JRST NORD
+       PUSHJ P,RWORD   ;GET A NEW ONE
+       TLZ N,HSW       ;SET TO READ OTEHR HALF
+       MOVEM W,SVHWD   ;SAVE IT
+       HLRZS W         ;GET LEFT HALF
+       POPJ P,         ;AND RETURN
+NORD:  HRRZ W,SVHWD    ;GET RIGHT HALF
+       POPJ P,         ;AND RETURN
+
+
+POLFIX:        MOVE D,[IOWD PPDL,PPDB] ;SET UP THE POLISH PUSHDOWN LIST
+       MOVEI V,100     ;IN CASE OF ON OPERATORS
+       MOVEM V,SVSAT
+       SETOM POLSW     ;WE ARE DOING POLISH
+       TLO N,HSW       ;FIX TO READ A WORD THE FIRST TIME
+       SETOM GLBCNT    ;NUMBER OF GLOBALS IN THIS FIXUP
+       SETOM OPNUM     ;NUMBER OF OPERANDS AND OPERATORS THIS FIXUP
+       PUSH D,[15]     ;FAKE OPERATOR SO STORE WILL NOT HACK
+
+RPOL:  PUSHJ P,RDHLF   ;GET A HLAF WORD
+       TRNE W,400000   ;IS IT A STORE OP?
+       JRST STOROP     ;YES, DO IT
+IFN WFWSW,<CAIN W,15
+       JRST    [PUSHJ P,RDHLF  ;THIS TRICK FOR VARIABLES
+               ADD W,VARREL    ;HOPE SOMEONE HAS DONE
+               HRRZ C,W        ;A BLOCK TYPE 13
+               JRST HLFOP]>
+       CAIGE W,3       ;0,1,2 ARE OPERANDS
+       JRST OPND
+       CAILE W,14      ;14 IS HIGHEST OPERATOR
+       JRST LOAD4A     ;ILL FORMAT
+       PUSH D,W        ;SAVE OPERATOR IN STACK
+       MOVE V,DESTB-3(W)       ;GET NUMBER OF OPERANDS NEEDED
+       MOVEM V,SVSAT   ;ALSO SAVE IT
+       JRST RPOL       ;BACK FOR MORE
+
+     
+
+\f;HANDLE OPERANDS. THIS GETS COMPLICATED BECAUSE OF THE PRESENCE OF
+;GLOBAL REQUESTS
+
+OPND:  MOVE A,W        ;GET THE OPERAND TYPE HERE
+       PUSHJ P,RDHLF   ;THIS IS AT LEAST PART OF THE OPERAND
+       MOVE C,W        ;GET IT INTO C
+       JUMPE A,HLFOP   ;0 IS HALF-WORD OPERAND
+       PUSHJ P,RDHLF   ;NEED FULL WORD, GET SECOND HALF
+       HRL C,W ;GET HALF IN RIGHT PLACE
+       MOVSS C         ;WELL ALMOST RIGHT
+       SOJE A,HLFOP    ;1 IS FULL WORD, 2 IS GLOBAL REQUEST
+       PUSHJ P,SDEF    ;SEE IF IT IS ALREADY DEFINED
+       JRST    [MOVE C,2(A)    ;YES, WE WIN
+               JRST HLFOP]
+       AOSN GLBCNT     ;NO, INCREMENT NUMBER OF GLOBALS THIS FIXUP
+       AOS HEADNM      ;INCREMENT FIXUP NUMBER IF FIRST GLOBAL
+       AOS W,OPNUM     ;GET AN OPERAND NUMBER
+       LSH W,5         ;SPACE FOR TYPE
+       IORI W,2        ;TYPE 2 IS GLOBAL 
+       HRL W,HEADNM    ;GET FIXUP NUMBER
+       PUSHJ P,SYM3X2  ;AND PUT INTO UDEFINED AREA ALONG WITH NAME
+       MOVE C,W        ;ALSO PUT THAT PART OF THE FIXUP IN
+       PUSHJ P,SYM3X2
+       SKIPA A,[400000]        ;SET UP GLOBAL FLAG
+HLFOP: MOVEI A,0       ;VALUE OPERAND FLAG
+HLFOP1:        SOJL V,CSAT     ;ENOUGH OPERANDS SEEN?
+       PUSH D,C        ;NO, SAVE VALUE(OR GLOBAL NAME)
+       HRLI A,400000   ;PUT IN A VALUE MARKER
+       PUSH D,A        ;TO THE STACK
+       JRST RPOL       ;GET MORE POLISH
+
+     
+
+\f;HAVE ENOUGH OPERANDS FOR THE CURRENT OPERATOR
+
+CSAT:  HRRZS A         ;KEEP ONLY THE GLOBAL-VALUE HALF
+       SKIPN SVSAT     ;IS IT UNARY
+       JRST UNOP       ;YES, NO NEED TO GET 2ND OPERAND
+       HRL A,(D)       ;GET GLOBAL VALUE MARKER FOR 2ND OP
+       POP D,W
+       POP D,W         ;VALUE OR GLOBAL NAME
+UNOP:  POP D,V         ;OPERATOR
+       JUMPN A,GLOB    ;IF EITHER IS A GLOBAL HANDLE SPECIALLY
+       XCT OPTAB-3(V)  ;IF BOTH VALUES JUST XCT
+       MOVE C,W        ;GET THE CURRENT VALUE
+SETSAT:        SKIPG V,(D)     ;IS THERE A VALUE IN THE STACK
+       MOVE V,-2(D)    ;YES, THIS MUST BE THE OPERATOR
+       MOVE V,DESTB-3(V)       ;GET NUMBER OF OPERANDS NEEDED
+       MOVEM V,SVSAT   ;SAVE IT HERE
+       SKIPG (D)       ;WAS THERE AN OPERAND
+       SUBI V,1        ;HAVE 1 OPERAND ALREADY
+       JRST HLFOP1     ;GO SEE WHAT WE SHOULD DO NOW
+
+;HANDLE GLOBALS
+GLOB:  TRNE A,-1       ;IS IT IN RIGHT HALF
+       JRST TLHG       ;NO, NEED TO PUT THIS VALUE INTO THE FIXUP LIST
+       PUSH P,W        ;SAVE FOR A WHILE
+       MOVE W,C        ;THE VALUE
+       AOS C,OPNUM     ;GET AN OPERAND NUMBER
+       LSH C,5         ;AND PUT IN TYPE
+       IORI C,2        ;VALUE TYPE
+       HRL C,HEADNM    ;THE FIXUP NUMBER
+       PUSHJ P,SYM3X2
+       POP P,W         ;RETRIEVE THE OTHER VALUE
+TLHG:  SKIPE SVSAT     ;WAS THIS A UNARY OPERATOR
+       TLNE A,-1       ;WAS THERE A GLOBAL IN LEFT HALF
+       JRST GLSET
+       PUSH P,C        ;SAVE THE FIRST OPERAND
+       AOS C,OPNUM     ;SEE ABOVE
+       LSH C,5
+       IORI C,2
+       HRL C,HEADNM
+       PUSHJ P,SYM3X2
+       MOVE W,C
+       POP P,C
+
+GLSET: EXCH C,W        ;GET THEM IN THE OTHER ORDER
+       HRL W,C         ;SET UP THE OPERATOR LINK
+       AOS C,OPNUM
+       LSH C,5 ;SPACE FOR THYPE
+       IOR C,V         ;THE OPERATOR
+       HRL C,HEADNM
+       PUSHJ P,SYM3X2  ;INTO THE UNDEF LIST
+               MOVEI A,400000  ;SET UP AS A GLOBAL VALUE
+       JRST SETSAT     ;AND SET UP FOR NEXT OPERATOR
+     
+
+\f;FINALLY WE GET TO STORE THIS MESS
+
+STOROP:        MOVE T,-2(D)    ;THIS SHOULD BE THE FAKE OPERATOR
+       CAIE T,15       ;IS IT
+       JRST LOAD4A     ;NO, ILL FORMAT
+       HRRZ T,(D)      ;GET THE VALUE TYPE
+       JUMPN T,GLSTR   ;AND TREAT GLOBALS SPECIAL
+       MOVE A,W        ;THE TYPE OF STORE OPERATOR
+       CAIGE A,-3
+       PUSHJ P,FSYMT
+       PUSHJ P,RDHLF   ;GET THE ADDRESS
+       MOVE V,W        ;SET UP FOR FIXUPS
+       POP D,W         ;GET THE VALUE
+       POP D,W         ;AFTER IGNORING THE FLAG
+       PUSHJ P,@STRTAB+6(A)    ;CALL THE CORRECT FIXUP ROUTINE
+COMSTR:        SETZM POLSW     ;ALL DONE WITH POLISH
+IFN REENT,<PUSHJ P,RESTRX>
+       MOVE T,OPNUM    ;CHECK ON SIZES
+       MOVE V,HEADNM
+       CAIG V,477777
+       CAILE T,17777
+       JRST COMPOL     ;TOO BIG, GIVE ERROR
+       PUSHJ P,RWORD   ;THIS SHOULD GET US OUT (I.E RUN OUT COUNT)
+       JRST LOAD4A     ;IF NOT, SOMETHING IS WRONG
+
+STRTAB:        EXP ALSYM,LFSYM,RHSYM,ALSTR,LOCDLF,SYM4A,FAKESY
+
+GLSTR: MOVE A,W
+       CAIGE A,-3
+       PUSHJ P,FSYMT
+       PUSHJ P,RDHLF   ;GET THE STORE LOCATION
+       MOVEI A,23(A)
+       POP D,V         ;GET VALUE
+       POP D,V
+       HRLM V,W        ;SET UP STORAGE ELEMENT
+       AOS C,OPNUM
+       LSH C,5
+       IOR C,A
+       HRL C,HEADNM
+       PUSHJ P,SYM3X2
+       MOVE W,C        ;NOW SET UP THE HEADER
+       AOS V,GLBCNT    ;WHICH HAS NUMBER OF GLOBALS
+       HRLM V,W
+       HRRZ C,HEADNM
+       PUSHJ P,SYM3X2
+       JRST COMSTR     ;AND FINISH
+
+     
+
+\fALSTR1:       IFN L,<CAMGE V,RINITL
+       POPJ P,>
+IFN REENT,<CAMGE V,HVAL1
+               SKIPA X,LOWX
+       MOVE X,HIGHX>
+       HRRZ T,@X
+       MOVEM W,@X      ;FULL WORD FIXUPS
+       MOVE V,T
+ALSTR: JUMPN V,ALSTR1
+       POPJ P,
+DESTB: EXP 1,1,1,1,1,1,1,1,0,0,100
+
+OPTAB: ADD W,C
+       SUB W,C
+       IMUL W,C
+       IDIV W,C
+       AND W,C
+       IOR W,C
+       LSH W,(C)
+       XOR W,C
+       SETCM W,C
+       MOVN W,C
+       REPEAT 7,<JRST STRSAT>
+
+
+FSYMT: PUSHJ P,RDHLF   ;FIRST HALF OF SYMBOL
+       HRL V,W
+       PUSHJ P,RDHLF
+       HRR V,W
+       PUSH D,A        ;SAVE STORE TYPE
+       PUSHJ P,RDHLF   ;GET BLOCK NAME
+       HRL C,W
+       PUSHJ P,RDHLF
+       HRR C,W
+       TLO C,140000    ;MAKE BLOCK NAME
+       PUSHJ P,SDEF    ;FIND IT
+       CAMN A,B
+       JRST FNOLOC     ;MUST NOT BE LOADING LOCALS
+FSLP:  LDB C,[POINT 32,-1(A),35]       ;GET NAME
+       CAMN C,V
+       JRST FNDSYM
+       SUB A,SE3
+       CAME A,B        ;ALL DONE?
+       JRST FSLP       ;NO
+FNOLOC:        POP D,A
+       MOVEI A,0       ;SET FOR A FAKE FIXUP
+       AOS (P)
+       POPJ P,
+FNDSYM:        MOVEI W,(A)     ;LOC OF SYMBOL
+       SUB W,HISTRT
+       POP D,A
+       AOS (P)
+       POPJ P,
+
+LFSYM: ADD V,HISTRT
+       HRLM W,(V)
+       MOVSI D,400000  ;LEFT HALF
+       JRST COMSFX
+RHSYM: ADD V,HISTRT
+       HRRM W,(V)
+       MOVSI D,200000
+       JRST COMSFX
+FAKESY:        POPJ P,         ;IGNORE
+     
+
+\fPOLSAT:       PUSH P,C        ;SAVE SYMBOL
+       MOVE C,V        ;POINTER
+       PUSHJ P,SREQ    ;GO FIND IT
+       SKIPA
+       JRST LOAD4A     ;SOMETHING IS ROTTEN IN DENMARK
+       MOVEM W,2(A)    ;STORE VALUE
+       HLRZS C         ;NOW FIND HEADER
+       PUSHJ P,SREQ
+       SKIPA
+       JRST LOAD4A
+       HRLZI V,-1      ;AND DECREMENT COUNT
+       ADDB V,2(A)
+       TLNN V,-1       ;IS IT NOW 0
+       JRST PALSAT     ;YES, GO DO POLISH
+       POP P,C         ;RESTORE SYMBOL
+       JRST SYM2W1     ;AND RETURN
+
+PALSAT:        PUSH P,W        ;SAVE VALUE
+       MOVEM C,HDSAV   ;SAVE THE HEADER NUMBER
+       MOVE D,[IOWD PPDL,PPDB] ;SET UP A PDL
+       MOVE C,V        ;GET THE POINTER
+               HRL C,HDSAV     ;AND THE FIXUP NUMBER
+       PUSHJ P,REMSYM  ;REMOVE THE HEADER FORM EXISTANCE
+       PUSHJ P,SREQ    ;GO FINE THE NEXT LINK
+       SKIPA
+       JRST LOAD4A     ;LOSE
+       ANDI C,37       ;GET OPERATOR TYPE
+       HRRZ V,2(A)     ;PLACE TO STORE
+       PUSH D,V
+       PUSH D,[XWD 400000,0]
+       PUSH D,C        ;THIS HAD BETTER BE A STORE OR WE ARE IN TROUBLE
+       HLRZ C,2(A)     ;GET POINTER TO POLISH CHAIN
+PSAT1: PUSHJ P,REMSYM  ;REMOVE SYMBOL
+
+     
+
+\fPSAT2:        HRL C,HDSAV     ;GET FIXUP NUMBER
+       PUSHJ P,SREQ    ;LOOK FOR IT
+       SKIPA
+       JRST LOAD4A
+       ANDI C,37       ;THE OPERATOR NUMBER
+       CAIN C,2        ;IS IT AN OPERAND?
+       JRST PSOPD      ;YES, GO PROCESS
+       PUSH D,C        ;YES STORE IT
+       SKIPN DESTB-3(C)        ;IS IT UNARY
+       JRST PSUNOP     ;YES
+       HLRZ C,2(A)     ;GET FIRST OPERAND
+       HRLI C,600000   ;AND MARK AS VALUE
+       PUSH D,C
+PSUNOP:        HRRZ C,2(A)     ;OTHER OPERAND
+       JRST PSAT1      ;AND AWAY WE GO
+
+PSOPD: MOVE C,2(A)     ;THIS IS A VALUE
+       PUSHJ P,REMSYM  ;GET RID OF THAT PART OF THE CHAIN
+PSOPD1:        SKIPG V,(D)     ;IS THERE A VALUE IN THE STACK
+       JRST PSOPD2     ;YES, TAKE GOOD CARE OF IT
+COMOP: POP D,V         ;NO, GET THAT OPERATOR OUT OF THERE
+       XCT OPTAB-3(V)  ;AND DO IT
+       MOVE C,W        ;GET RESULT IN RIGHT PLACE
+       JRST PSOPD1     ;AND TRY FOR MORE
+PSOPD2:        TLNE V,200000   ;IS IT A POINTER
+       JRST DBLOP      ;YES, NEEDS MORE WORK
+       MOVE W,C        ;NO, ONE WE HAVE IS FIRST OPND, GET IT INTO W
+       POP D,C         ;VALUE POINTER
+       POP D,C         ;2ND OPERAND INTO C
+       JRST COMOP      ;GO PROCESS OPERATOR
+
+DBLOP: EXCH C,(D)      ;PUT VALUE IN STACK AND RETRIEV POINTER
+       PUSH D,[XWD 400000,0]   ;MARK AS VALUE
+       JRST PSAT2      ;AND GO LOOK FOR MORE TROUBLE
+
+LINK:  PUSHJ P,PRWORD  ;GET TWO WORDS
+       JUMPLE C,ENDLNK ;THIS IS AN END OF LINK WORD
+       CAILE C,20      ;IS IT IN RANGE?
+       JRST LOAD4A
+       HRRZ V,W        ;GET THE ADDRESS
+IFN REENT,<
+       CAMGE   V,HVAL1         ;CHECK HISEG ADDRESS
+       SKIPA   X,LOWX          ;LOW SEGMENT
+       MOVE    X,HIGHX         ;HIGH SEGMENT BASE
+>;IF REENT
+       HRRZ W,LINKTB(C)        ;GET CURRENT LINK
+IFN L,<        CAML V,RINITL   ;LOSE>
+       HRRM W,@X       ;PUT INTO CORE
+       HRRM V,LINKTB(C)        ;SAVE LINK FOR NEXT ONE
+IFN REENT,<
+       PUSHJ   P,RESTRX        ;RESTORE X
+>;IF REENT
+       JRST LINK       ;GO BACK FOR MORE
+ENDLNK:        MOVNS C         ;GET ENTRY NUMBER
+       JUMPE C,LOAD4A  ;0 IS A LOSER
+       CAILE C,20      ;CHECK RANGE
+       JRST LOAD4A
+               HRLM W,LINKTB(C)        ;SAVE END OF LINK INFO
+       JRST LINK       ;MORE
+     
+
+\fSTRSAT:       MOVE W,C        ;GET VALUE TO STORE IN W
+       MOVE C,V        ;GET OPERATOR HERE
+       POP D,V
+       POP D,V         ;GET ADDRESS TO STORE
+       PUSHJ P,@STRTAB-15(C)
+IFN REENT,<PUSHJ P,RESTRX>
+       POP P,W ;RESTORE THINGS
+       POP P,C
+       JRST SYM2W1
+
+ALSYM: ADD V,HISTRT
+       MOVEM W,(V)
+       MOVSI D,600000
+>
+       LIST            ;END OF FAILSW CODE
+IFN FAILSW!WFWSW,<
+COMSFX:        IFN REENT,<PUSHJ P,SYMFX1       ;WAS IFE, I THINK THAT'S WRONG -- DCS
+       JRST RESTRX>
+IFE REENT,<JRST SYMFX1>>               ;WAS IFN, I THINK THAT'S WRONG -- DCS
+
+REMSYM:        MOVE T,1(S)
+       MOVEM T,1(A)
+       MOVE T,2(S)
+       MOVEM T,2(A)
+       ADD S,SE3
+       MOVEM A,SVA
+       POPJ P,
+
+     
+
+\fSUBTTL LIBRARY INDEX (BLOCK TYPE 14)
+
+       COMMENT *       DIRECT ACCESS LIBRARY SEARCH MODE
+       INDEX WRITTEN BY FUDGE2.SEE DIDAL DOC (100-540-001-00)
+       DESIGN AND CODING BY D.M.NIXON  JUL-AUG 1970
+       *
+
+IFN DIDAL,<
+
+INDEX8:        POP     P,LSTBLK        ;SET UP LSTBLK FOR NEXT PROG
+       PUSHJ   P,WORD          ;READ FIRST WORD
+       HLRZ    A,W             ;BLOCK TYPE ONLY
+       CAIE    A,14            ;IS IT AN INDEX?
+       JRST    INDEXE          ;NO, ERROR
+       JRST    INDEX9          ;DON'T SET FLAG AGAIN
+
+INDEX0:        TRO     F,XFLG          ;SIGNAL INDEX IN CORE
+       MOVEI   A,1             ;START ON BLOCK 1 (DSK)
+       HRROM   A,LSTBLK        ;BUT INDICATE AN INDEX
+       MOVE    A,ILD1          ;INPUT DEVICE
+       DEVCHR  A,
+       TLNE    A,100           ;IS IT A DTA?
+       TRO     F,DTAFLG        ;YES
+INDEX9:        MOVEI   A,AUX+2         ;AUX BUFFER
+       HRLI    A,4400          ;MAKE BYTE POINTER
+       MOVEM   A,ABUF1         ;AND SAVE IT
+       HRL     A,BUFR1         ;INPUT BUFFER
+       BLT     A,AUX+201       ;STORE BLOCK
+       TRO     F,LSTLOD        ;AND FAKE LAST PROG READ
+INDEX1:        ILDB    T,ABUF1
+       HLRE    A,T             ;GET WORD COUNT
+       JUMPL   A,INDEX3        ;END OF BLOCK IF NEGATIVE
+       CAIE    A,4             ;IS IT ENTRY
+       JRST    INDEX
+       HRRZS   T               ;WORD COUNT ONLY
+INDEX2:        ILDB    C,ABUF1         ;GET NEXT SYMBOL
+       TLO     C,040000        ;
+       PUSHJ   P,SREQ          ;SEARCH FOR IT
+       SOJA    T,INDEX4        ;REQUEST MATCHES
+       SOJG    T,INDEX2        ;KEEP TRYING
+       ILDB    T,ABUF1         ;GET POINTER WORD
+       TRZN    F,LSTLOD        ;WAS LAST PROG LOADED?
+       JRST    INDEX1          ;NO
+       TRNN    F,DTAFLG        ;ALWAYS SAVE IF DTA???
+       SKIPL   LSTBLK          ;SKIP IF LAST BLOCK WAS AN INDEX
+       MOVEM   T,LSTBLK        ;SAVE POINTER FOR CALCULATIONS
+       JRST    INDEX1          ;GET NEXT PROG
+     
+
+\fINDEX4:       ADDM    T,ABUF1
+       ILDB    A,ABUF1
+       PUSH    P,A             ;SAVE THIS BLOCK
+       TROE    F,LSTLOD        ;DID WE LOAD LAST  PROG?
+       JRST    [SKIPGE LSTBLK  ;WAS LAST BLOCK AN INDEX?
+               JRST    NXTBLK  ;YES, SO GET NEXT ONE
+               MOVEM   A,LSTBLK
+               JRST    LOAD1]  ;NEXT PROG IS ADJACENT
+       HRRZ    T,LSTBLK        ;GET LAST BLOCK NUMBER
+       CAIN    T,(A)           ;IN THIS BLOCK?
+       JRST    THSBLK          ;YES
+NXTNDX:        TRNE    F,DTAFLG        ;DIFFERENT TEST FOR DTA
+       JRST    NXTDTA          ;CHECK IF NEXT BUFFER IN CORE
+       CAIN    T,-1(A)         ;NEXT BLOCK?
+       JRST    NXTBLK          ;YES,JUST DO INPUT
+INDEX5:        USETI   1,(A)           ;SET ON BLOCK
+       WAIT    1,              ;LET I/O FINISH
+       MOVSI   C,(1B0)         ;CLEAR RING USE BIT IF ON
+; ***** THE EQUIV. OF THE NEXT INSTR. MAY WELL BE IN LATER VERSIONS.
+; ***** IT WAS MISSING, AND FOULED UP THE INDEX STUFF. (DCS 7-7-71)
+       HLLM    C,BUFR          ;INDICATE VIRGIN BUFFER
+       HRRZ    T,BUFR
+       SKIPL   (T)
+       JRST    NXTBLK          ;ALL DONE NOW
+       ANDCAM  C,(T)           ;CLEAR USE BIT
+       HRRZ    T,(T)           ;GET NEXT BUFFER
+       JRST    .-4             ;LOOP
+
+NXTDTA:        WAIT    1,              ;LET I/O RUN TO COMPLETION
+       HRRZ    T,BUFR          ;GET POINTER TO CURRENT BUFFER
+       HLRZ    T,1(T)          ;FIRST DATA WORD IS LINK
+       CAIE    T,(A)           ;IS IT BLOCK WE WANT?
+       JRST    INDEX5          ;NO
+NXTBLK:        IN      1,
+       JRST    NEWBLK          ;IT IS NOW
+       JRST    WORD3           ;EOF OR ERROR
+
+NEWBLK:        MOVE    A,(P)           ;GET CURRENT BLOCK
+       JUMPL   A,INDEX8        ;JUST READ AN INDEX
+       HLRZS   A               ;GET WORD COUNT
+COMMENT *  DCS -- 3/15/71
+       This code required modification to work with DEC's FUDGE2
+  (with /X) at Stanford.  I don't know the formats, so I don't know
+  if the bugs are unique to Stanford.
+       In particular, the special 0 test seems to cause all the
+  trouble -- removing it fixed it.  However, my fix may well foul
+  up with Dectapes (see the SPR for "details?").
+*
+
+; 0 TEST REMOVED HERE -- DCS
+       SKIPL   LSTBLK          ;WAS LAST BLOCK AN INDEX?
+       AOJA    A,INDEX6        ;NO, ALWAYS ONE WORD OUT THEN
+       HRRZ    T,AUX+3         ;GET FIRST ENTRY BLOCK TYPE COUNT
+       HRRZ    T,AUX+4(T)      ;GET FIRST POINTER WORD
+       MOVEM   T,LSTBLK        ;SOME WHERE TO STORE IT
+       HRRZ    T,(P)           ;GET CURRENT BLOCK NUMBER
+       CAME    T,LSTBLK                ;SAME BLOCK
+       AOJA    A,INDEX6        ;NO
+       TRNN    F,DTAFLG        ;BUFR2 OK IF DTA
+       SOS     BUFR2           ;ONE WORD TOO MANY THOUGH
+       JRST    INDEX6          ;YES, WORD COUNT WILL BE CORRECT
+; IF A IS 0, INDEX6≡INDEX7 -- DCS
+     
+
+\fTHSBLK:       SUB     A,LSTBLK        ;GET WORD DIFFERENCE
+       MOVSS   A               ;INTO RIGHT HALF
+INDEX6:        ADDM    A,BUFR1
+       MOVNS   A
+       ADDM    A,BUFR2
+INDEX7:        POP     P,LSTBLK        ;STORE THIS AS LAST BLOCK READ
+       JRST    LOAD1
+
+INDEX3:        HRRE    A,T             ;GET BLOCK # OF NEXT INDEX
+       JUMPL   A,EOF           ;FINISHED IF -1
+       PUSH    P,T             ;STACK THIS BLOCK
+       HRRZ    T,LSTBLK        ;GET LAST BLOCK
+       JRST    NXTNDX          ;CHECK IF NEXT BUFFER IN CORE
+
+INDEX: IN      1,              ;GET NEXT BUFFER
+       SOSA    BUFR2           ;O.K. RETURN, BUT 1 WORD TOO MANY
+       JRST    WORD3           ;ERROR OR EOF
+       PUSHJ   P,WORD          ;READ FIRST WORD
+INDEXE:        TRZE    F,XFLG          ;INDEX IN CORE?
+       TTCALL  3,[ASCIZ /LIBRARY INDEX INCONSISTENT - CONTINUING
+/]                             ;WARNING MESSAGE
+       JRST    LOAD1A+1        ;AND CONTINUE
+>
+
+     
+
+\fSUBTTL        ALGOL OWN BLOCK (TYPE 15)
+
+IFN ALGSW,<
+ALGBLK:
+IFN SAILSW,<TRNN F,ALGFL       ;IF NOT ALGOL
+       JRST    LDPRG           ;MUST BE SAIL BLOCK TYPE 15>
+       PUSHJ P,RWORD           ;READ 3RD WORD
+       HLRZ    V,W             ;GET START OF OWN BLOCK
+       MOVEI   C,(W)           ;GET LENGTH OF OWN BLOCK
+       MOVEM   C,OWNLNG        ;SAVE IT TO FIX RELOC AT END
+       PUSHJ   P,ALGB2         ;FIX AND CHECK PROG BREAK
+       ADDI    V,(R)           ;RELOCATE
+       MOVEI   W,(V)           ;GET CURRENT OWN ADDRESS
+       EXCH    W,%OWN          ;SAVE FOR NEXT TIME
+       MOVEM   W,@X            ;STORE LAST OWN ADDRESS IN LEFT HALF
+ALGB1: PUSHJ   P,RWORD         ;GET DATA WORD
+       HLRZ    V,W             ;GET ADDRESS TO FIX UP
+       HRRZS   W               ;RIGHT HALF ONLY
+       ADD     W,%OWN          ;ADD IN ADDRESS OF OWN BLOCK
+       ADDM    W,@X            ;FIX UP RIGHT HALF
+       JRST    ALGB1           ;LOOP TIL DONE
+
+ALGNAM:        JUMPE   W,CPOPJ         ;NOT ALGOL MAIN PROG
+       TROE    F,ALGFL         ;SET ALGOL SEEN FLAG
+       JRST    ALGER1          ;ONLY ONE ALGOL MAIN PROG ALLOWED
+IFN REENT,<TRNN F,SEENHI       ;ANYTHING IN HIGH SEGMENT?>
+       CAME    R,[XWD W,JOBDA] ;ANYTHING LOADED IN LOW SEGMENT?
+       JRST    ALGER2          ;YES, ERROR ALSO
+       SETZM   %OWN            ;INITIALISE OWN AREA POINTER
+IFN REENT,<TRO F,VFLG          ;DEFAULT RE-ENTRANT OP-SYSTEM>
+ALGB2: ADDI    H,(W)           ;FIX PROG BREAK
+IFN REENT,<CAML        H,HILOW
+       MOVEM   H,HILOW         ;HIGHEST LOW CODE LOADED>
+       CAILE   H,1(S)          ;SKIP IF SUFFICIENT CORE AVAILABLE
+IFN EXPAND,<JRST [PUSHJ P,XPAND>
+               JRST    FULLC
+IFN EXPAND,<   JRST    .+1]>
+       POPJ    P,
+
+ALGER1:        ERROR   ,</ONLY ONE ALGOL MAIN PROGRAM ALLOWED#/>
+       JRST    LD2
+
+ALGER2:        ERROR   ,</ALGOL MAIN PROGRAM MUST BE LOADED FIRST#/>
+       JRST    LD2
+
+>
+     
+
+\fSUBTTL        SAIL BLOCK TYPE 15
+
+COMMENT * BLOCK TYPE 15 AND 16. SIXBIT FOR  FIL,PPN,DEV
+IN THE BLOCK. SEARCH TABLE FOR ALREADY REQUESTED. IF NOT
+ENTER REQUEST. ORIGINAL CODE BY DCS REWRITTEN BY WFW*
+
+IFN SAILSW,<
+IFE ALGSW<ALGBLK:>
+LDPRG: MOVEI D,PRGFLS-1        ;SET UP SOMETHING WE CAN SEARCH WITH
+       MOVE W,PRGPNT   ;AND CURRENT POINTER
+       PUSHJ P,LDSAV   ;GO ENTER (WILL NOT RETURN IF RUNS OUT)
+       MOVEM D,PRGPNT
+       JRST LDPRG      ;BACK FOR MORE
+LDLIB: MOVEI D,LIBFLS-1
+       MOVE W,LIBPNT
+       PUSHJ P,LDSAV
+       MOVEM D,LIBPNT
+       JRST LDLIB      ;LOOKS JUST LIKE THE LAST ONE, DOESN'T IT
+
+LDSAV: HRLI D,-RELLEN-1        ;GET AOBJN SET UP
+       MOVEM W,LODPN2# ;SAV IT
+       PUSHJ P,PRWORD  ;GET FILE,PPN
+       MOVE A,W        ;SAVE ONE
+       PUSHJ P,RWORD   ;AND DEVICE
+FILSR: CAMN D,LODPN2
+       JRST FENT       ;HAVE GOTTEN THERE, ENTER FILE
+       CAME C,PRGFIL(D)        ;CHECK FOR MATCH
+       JRST NOMT       ;NOT FILE
+       CAME A,PRGPPN(D)
+       JRST NOMT       ;NO PPN
+       CAME W,PRGDEV(D)
+NOMT:  AOBJN D,FILSR   ;AND NOT DEVICE SHOULD ALWAYS JUMP
+       MOVE D,LODPN2
+       POPJ P,         ;JUST RETURN CURRENT POINTER
+FENT:  MOVE D,LODPN2   ;ENTER IT
+       AOBJP D,WRONG   ;THAT IS IF NOT TOO MANY
+       MOVEM C,PRGFIL-1(D)     ;HAVE ALREADY INDEXED
+       MOVEM A,PRGPPN-1(D)     ;HENCE THE -1
+       MOVEM W,PRGDEV-1(D)
+       POPJ P,
+WRONG: ERROR ,</TOO MANY DEMANDED FILES#/>
+       JRST LD2
+>
+     
+
+\fSUBTTL        SYMBOL TABLE SEARCH SUBROUTINES
+
+;      ENTERED WITH SYMBOL IN C
+;      RETURN IS WITH POINTER IN A IF MATCHING SYMBOL FOUND
+;      OTHERWISE, A SKIP ON RETURN OCCURS
+
+SREQ:  JUMPGE  S,CPOPJ1        ;JUMP IF NO UNDEF. SYMBOLS
+       SKIPA   A,S             ;LOAD REQUEST SEARCH POINTER
+SDEF:  MOVE    A,B             ;LOAD DEF. SYMBOL SEARCH POINTER
+SDEF1: CAMN    C,1(A)
+       POPJ    P,              ;SYMBOLS MATCH, RETURN
+IFE K,<        TLNE    N,F4SW          ;ARE WE IN FORTRAN?
+       JRST    SDEF2           ;YES,JUST TRY NEXT SYMBOL>
+       TLC     C,400000        ;MIGHT BE SUPPRESSED  INTERNAL
+       CAMN    C,1(A)          ;WAS IT?
+       JRST    [TLO C,400000   ;YES, SO ENSURE IT'S SUPPRESSED
+               MOVEM C,1(A)    ;STORE SUPPRESSED DEFINITION
+               POPJ    P,]     ;YES
+       TLC     C,400000        ;NO,TRY NEXT SYMBOL
+SDEF2: ADD     A,SE3
+       JUMPL   A,SDEF1
+IFE K,<        JRST    CPOPJ1          ;SYMBOL NOT FOUND SKIPS ON RETURN>
+IFN K,<
+CPOPJ1:        AOS     (P)
+       POPJ    P,>
+     
+
+\fSUBTTL        RELOCATION AND BLOCK INPUT
+
+PRWORD: PUSHJ   P,RWORD                ;READ A WORD PAIR
+       MOVE    C,W             ;LOAD C WITH FIRST DATA WORD
+       TRNE    E,377777                ;TEST FOR END OF BLOCK
+       JRST    RWORD1          ;INPUT SECOND WORD OF PAIR
+       MOVEI   W,0             ;NO SECOND WORD, ASSUME ZERO
+       POPJ    P,
+
+RWORD: TRNN    E,377777        ;TEST FOR END OF BLOCK
+       JRST    LOAD1           ;RETURN TO LOAD THE NEXT BLOCK
+RWORD1: AOBJN   E,RWORD2       ;JUMP IF DATA WORD NEXT
+       PUSHJ   P,WORD          ;READ CONTROL WORD
+       MOVE    Q,W             ;DON'T COUNT RELOCATION WORDS
+       HRLI    E,-22           ;SET RELOCATION WORD BYTE COUNT
+RWORD2:        PUSHJ   P,WORD          ;READ INPUT WORD
+       JUMPGE  Q,RWORD3        ;TEST LH RELOCATION BIT
+       TRNN    F,TWOFL         ;POSSIBLE TWO SEGMENTS?
+       JRST    RWORD5          ;NO
+       MOVSS   W
+       PUSHJ   P,CHECK         ;USE CORRECT RELOCATION
+       HRRI    W,@R
+       MOVSS   W
+       JRST    RWORD3          ;AND TEST RIGHT HALF
+RWORD5:        HRLZ    T,R
+       ADD     W,T             ;LH RELOCATION
+RWORD3:        TLNN    Q,200000        ;TEST RH RELOCATION BIT
+       JRST    RWORD4          ;NOT RELOCATABLE
+       TRNE    F,TWOFL         ;POSSIBLE TWO SEGMENTS?
+       PUSHJ   P,CHECK         ;USE CORRECT RELOCATION
+       HRRI    W,@R            ;RH RELOCATION
+RWORD4:        LSH     Q,2
+       POPJ    P,
+
+CHECK: MOVE    T,HVAL1         ;START OF HISEGMENT
+       CAIG    T,NEGOFF(W)     ;IN HISEG?
+       JRST    [SUBI   W,(T)   ;YES REMOVE OFSET
+               POPJ    P,]
+       HRRI    W,@LOWR         ;USE LOW SEG RELOC
+       JRST    CPOPJ1          ;SKIP RETURN
+     
+
+\fSUBTTL        PRINT STORAGE MAP SUBROUTINE
+
+PRMAP: CAIN    D,1             ;IF /1M PRINT LOCAL SYMBOLS
+       TROA    F,LOCAFL        ;YES,TURN ON FLAG
+       TRZ     F,LOCAFL        ;CLEAR JUST IN CASE
+       PUSHJ   P,FSCN1         ;LOAD OTHER FILES FIRST
+       PUSHJ   P,CRLFLF        ;START NEW PAGE
+       HRRZ    W,R
+IFN REENT,<CAIG        W,JOBDA ;LOADED INTO LOW SEGMENT
+       JRST    NOLOW           ;DON'T PRINT IF NOTHING THERE>
+       PUSHJ     P,PRNUM0
+IFE REENT,<ERROR 7,<?IS THE PROGRAM BREAK@?>>
+IFN REENT,<ERROR 7,<?IS THE LOW  SEGMENT BREAK@?>
+       PUSHJ   P,CRLF          ;CR-LF ON ALL BUT TTY   
+NOLOW: MOVE    W,HVAL          ;HISEG BREAK
+       CAMG    W,HVAL1         ;HAS IT CHANGED
+       JRST    NOHIGH          ;NO HI-SEGMENT
+       TLO     F,FCONSW        ;FORCE OUT HI-SEG BREAK ALSO
+       PUSHJ   P,PRNUM0
+       ERROR   7,<?IS THE HIGH SEGMENT BREAK@?>
+       PUSHJ   P,CRLF
+NOHIGH:>
+IFE NAMESW,<   MOVE    W,DTOUT ;OUTPUT NAME >
+IFN NAMESW,<   SKIPN   W,DTOUT
+       MOVE    W,CURNAM        ;USE PROGRAM NAME>
+       JUMPE   W,.+3           ;DON'T PRINT IF NOT THERE
+       PUSHJ   P,PWORD
+       PUSHJ   P,SPACES        ;SOME SPACES
+       ERROR   0,<?STORAGE MAP!?>
+       PUSHJ   P,SPACES                ;SOME SPACES
+       PUSH    P,N
+       PUSH    P,E
+       MOVE    N,[POINT 6,DBUF] ;INITIALIZE DATE POINTER
+       MSTIME  Q,              ;GET THE TIME
+       IDIVI   Q,↑D60*↑D1000
+       IDIVI   Q,↑D60
+       PUSH    P,A             ;SAVE MINUTES
+       PUSHJ   P,OTOD1         ;STORE HOURS
+       POP     P,Q             ;GET MINUTES
+       PUSHJ   P,OTOD          ;STORE MINUTES
+       DATE    E,              ;GET DATE
+       IDIVI   E,↑D31                ;GET DAY
+       ADDI    Q,1
+       PUSHJ   P,OTOD          ;STORE DAY
+       IDIVI   E,↑D12                ;GET MONTH
+       ROT     Q,-1            ;DIV BY 2
+       HRR     A,DTAB(Q)       ;GET MNEMONIC
+       TLNN    Q,400000
+       HLR     A,DTAB(Q)       ;OTHER SIDE
+       HRRM    A,DBUF+1        ;STORE IT
+       MOVEI   Q,↑D64(E)     ;GET YEAR
+       MOVE    N,[POINT 6,DBUF+2]
+       PUSHJ   P,OTOD          ;STORE IT
+       POP     P,E
+       POP     P,N
+       PUSHJ   P,DBUF1
+       PUSHJ   P,CRLF
+       SKIPN   STADDR          ;PRINT STARTING ADDRESS
+       JRST    NOADDR          ;NO ADDRESS SEEN
+       ERROR   0,</STARTING ADDRESS !/>
+       PUSHJ   P,SP1
+       MOVE    W,STADDR                ;GET ST. ADDR.
+       PUSHJ   P,PRNUM0                ;PRINT IT
+IFN NAMESW,<
+       PUSHJ   P,SP1
+       MOVE    W,[SIXBIT / PROG /]
+       PUSHJ   P,PWORD
+       MOVE    W,CURNAM                ;PROG NAME
+       PUSHJ   P,PWORD
+       PUSHJ   P,SP1
+       MOVE    W,ERRPT6                ;SIXBIT / FILE /
+       PUSHJ   P,PWORD
+       MOVE    W,PRGNAM                ;FILE NAME
+       PUSHJ   P,PWORD>
+NOADDR:        IFN REENT,<
+       HRRZ    A,HVAL1         ;GET INITIAL HIGH START
+       ADDI    A,JOBHDA        ;ADD IN OFFSET
+       HRLI    A,JOBDA         ;LOW START
+       MOVSM   A,SVBRKS        ;INITIAL BREAKS>
+       HLRE    A,B
+       MOVNS     A
+       ADDI    A,(B)
+PRMAP1: SUBI   A,2
+IFN REENT,<SKIPN C,1(A)                ;LOAD SYMBOL SKIP IF REAL SYMBOL
+       JRST    PRMAP4          ;IGNORE ZERO NAME(TWOSEG BREAKS)>
+IFE REENT,<MOVE        C,1(A)          ;LOAD SYMBOL>
+       TLNN    C,300000        ;TEST FOR LOCAL SYMBOL
+       JRST    .+4             ;GLOBAL  (NOT LOCAL ANYWAY)
+       TRNN    F,LOCAFL        ;PRINT LOCAL SYMBOLS?
+       JRST    PRMAP4          ;IGNORE LOCAL SYMBOLS
+       TLC     C,140000        ;MAKE IT LOOK LIKE INTERN
+       TLNE    C,040000
+       JRST    PRMP1A
+       PUSHJ   P,CRLF
+       PUSHJ   P,CRLF
+       SETZM   TABCNT
+       JRST    PRMP1B
+     
+
+\fPRMP1A:       PUSHJ   P,TAB
+PRMP1B:        PUSHJ   P,PRNAM1        ;PRINT SYMBOL AND VALUE
+       TLNE    C,040000
+       JRST    PRMAP4          ;GLOBAL SYMBOL
+       HLRE    C,W             ;POINTER TO NEXT PROG. NAME
+       HRRZS W         ;SO WE ONLY HAVE THE HALF WE WANT
+PRMAP7:        JUMPL C,PRMP7A
+IFN REENT,<SKIPN 1(B)          ;IS IT A ZERO SYMBOL
+       JRST    [MOVE   C,B     ;SET UP C
+               JRST    PRMAP2] ;AND GO
+       HRRZ    T,HVAL  ;GET TO OF HI PART
+       CAML    W,HVAL1 ;IS PROGRAM START UP THERE??
+       JRST    PRMAP6  ;YES
+       HRRZ    T,HILOW ;GET HIGHEST LOCATION LOADED IN LOW
+       SUBI    T,(X)   ;REMOVE OFFSET
+       CAIE    T,(W)   ;EQUAL IF ZERO LENGTH PROG>
+       HRRZ T,R        ;GET LOW, HERE ON LAST PROG
+       JRST PRMAP6     ;GO
+
+PRMP7A:        ADDI C,2(A)     ;POINTER TO NEXT PROGRAM NAME
+PRMAP2:        IFN REENT,<
+       SKIPE   1(C)    ;THIS IS A TWO SEG  FILE
+       JRST    PRMP2A  ;NO
+       MOVE    T,2(C)  ;GET PROG BREAKS
+       TLNN    T,-1            ;IF NO HIGH STUFF YET
+       HLL     T,SVBRKS        ;FAKE IT
+       SUB     T,SVBRKS        ;SUBTRACT LAST  BREAKS
+       HRRZ    W,T     ;LOW BREAK
+       PUSH    P,W     ;SAVE IT
+       JUMPGE  T,.+2   ;IF NEGATIVE
+       TDZA    W,W     ;MAKE ZERO (FIRST TIME THRU)
+       HLRZ    W,T     ;GET HIGH BREAK
+       PUSHJ   P,PRNUM ;PRINT IT
+       PUSHJ   P,TAB   ;AND TAB
+       POP     P,W     ;LOW BREAK
+       PUSHJ   P,PRNUM
+       MOVE    T,2(C)
+       CAMN    C,B             ;EQUAL IF LAST PROG
+       SETZ    C,              ;SIGNAL END
+       TLNN    T,-1
+       HLL     T,SVBRKS
+       CAMN    T,SVBRKS        ;ZERO LENGTT IF EQUAL
+       JRST    PRMP6A          ;SEE IF LIST ALL ON
+       MOVEM   T,SVBRKS        ;SAVE FOR NEXT TIME
+       JRST    PRMAP3  ;AND CONTINUE
+PRMP2A:>
+       HRRZ T,(C)      ;GET ITS STARTING ADRESS
+IFN REENT,<CAMGE W,HVAL1       ;MAKE SURE BOTH IN SAME SEGMENT
+       CAMGE T,HVAL1
+       CAMGE T,W
+       JRST    [HLRE T,(C)     ;NO TRY NEXT ONE DOWN
+               JUMPE T,@PRMAP7 ;END GO USE PROG BREAK
+               ADDI C,(T)
+               JRST PRMAP2]    ;CHECK THIS ONE>
+PRMAP6:        SUBM    T,W             ;SUBTRACT ORIGIN TO GET LENGTH
+       PUSHJ     P,PRNUM               ;PRINT PROGRAM LENGTH
+       PUSHJ     P,CRLF
+PRMP6A:        TLNN    N,ALLFLG                ;SKIP IF LIST ALL MODE IS ON
+       TRNE    W,777777                ;SKIP IF ZERO LENGTH PROGRAM
+       JRST    PRMAP3
+       HLRE    C,2(A)          ;GET BACK CORRECT LOCATION IF 0 LENGTH
+       JUMPE   C,PRMAP5        ;JUMP IF LAST PROGRAM
+       ADDI    C,2(A)          ;IN CASE WE SKIPPED SOME PROGRAMS
+       SKIPA   A,C             ;SKIP GLOBALS, ZERO LENGTH PROG.
+PRMAP3:   PUSHJ     P,CRLF
+PRMAP4:   CAILE     A,(B)              ;TEST FOR END OF SYMBOL TABLE
+       JRST    PRMAP1
+PRMAP5:        PUSHJ   P,CRLF  ;GIVE AN XTRA CR-LF
+
+     
+
+\fSUBTTL        LIST UNDEFINED AND MULTIPLY DEFINED GLOBALS
+
+       PUSHJ   P,PMS1          ;PRINT UNDEFINED SYMBOLS
+
+;LIST NUMBER OF MULTIPLY DEFINED GLOBALS
+
+PMS3:  SKIPN   W,MDG           ;ANY MULTIPLY DEFINED GLOBALS
+       JRST    PMS4            ;NO, EXCELSIOR
+       PUSHJ   P,FCRLF         ;ROOM AT THE TOP
+       PUSHJ   P,PRQ           ;PRINT ?
+       PUSHJ   P,PRNUM0        ;NUMBER OF MULTIPLES
+       ERROR   7,<?MULTIPLY DEFINED GLOBALS@?>
+PMS4:  TLNE    N,AUXSWE        ;AUXILIARY OUTPUT DEVICE?
+       OUTPUT  2,              ;INSURE A COMPLETE BUFFER
+       POPJ    P,              ;RETURN
+
+;LIST UNDEFINED GLOBALS
+
+PMS1:  PUSHJ   P,FSCN1         ;LOAD FILES FIRST
+       JUMPGE  S,CPOPJ         ;JUMP IF NO UNDEFINED GLOBALS
+       PUSHJ   P,FCRLF         ;START THE MESSAGE
+       HLRE    W,S             ;COMPUTE NO. OF UNDEF. GLOBALS
+       MOVMS     W
+       LSH     W,-1            ;<LENGTH OF LIST>/2
+       PUSHJ     P,PRNUM0
+       ERROR   7,</UNDEFINED GLOBALS@/>
+       MOVE    A,S             ;LOAD UNDEF. POINTER
+PMS2:  SKIPL W,1(A)
+       TLNN W,40000
+       JRST PMS2A
+       PUSHJ     P,FCRLF
+       PUSHJ     P,PRNAM0              ;PRINT SYMBOL AND POINTER
+PMS2A: ADD     A,SE3
+       JUMPL   A,PMS2
+CPOPJ: POPJ    P,
+
+PMS:   PUSHJ   P,PMS1  ;PRINT UNDEFINED SYMBOLS
+       JUMPGE  S,CPOPJ         ;NO UNDEFINED SYMBOLS
+       PUSHJ   P,CRLF          ;NEW LINE,MAKE ? VISIBLE
+       PUSHJ   P,PRQ           ;FIX FOR BATCH TO PRINT ALL SYMBOLS
+       JRST    CRLF            ;SPACE AFTER LISTING
+     
+
+\fSUBTTL        ENTER FILE ON AUXILIARY OUTPUT DEVICE
+
+IAD2:  PUSH    P,A             ;SAVE A FOR RETURN
+       MOVE    A,LD5C1         ;GET AUX. DEV.
+       DEVCHR  A,              ;GET DEVCHR
+       TLNN    A,4             ;DOES IT HAVE A DIRECTORY
+       JRST    IAD2A           ;NO SO JUST RETURN
+       MOVE    A,DTOUT         ;GET OUTPUT NAME
+       CAME    A,[SIXBIT /JOBDAT/] ;DON'T USE JOBDAT
+       JUMPN   A,IAD2A         ;USE ANYTHING NON-ZERO
+       MOVSI   A,(SIXBIT /DSK/) ;DEFAULT DEVICE
+       CAMN    A,LD5C1         ;IS IT AUX. DEV.
+       JRST    .+5             ;YES LEAVE WELL ALONE
+       CLOSE   2,              ;CLOSE OLD AUX. DEV.
+       MOVEM   A,LD5C1         ;SET IT TO DSK
+       OPEN    2,OPEN2         ;OPEN IT FOR DSK
+       JRST    IMD4            ;FAILED
+IFN NAMESW,<   SKIPN   A,CURNAM        ;USE PROG NAME>
+       MOVSI   A,(SIXBIT /MAP/)        ;AN UNLIKELY NAME
+       MOVEM   A,DTOUT         ;SO ENTER WILL NOT FAIL
+IAD2A: POP     P,A             ;RECOVER A
+       SETZM   DTOUT+2         ;CLEAR PROTECTION (LEVEL D)
+       ENTER   2,DTOUT         ;WRITE FILE NAME IN DIRECTORY
+       JRST    IMD3            ;NO MORE DIRECTORY SPACE
+       POPJ    P,
+
+IMD3:  ERROR   ,</DIR. FULL@/>
+       JRST    LD2
+
+IMD4:  MOVE    P,[XWD -40,PDLST]       ;RESTORE STACK
+       TLZ     N,AUXSWE!AUXSWI ;NO AUX.DEV.NOW
+       ERROR   ,</NO MAP DEVICE@/>
+       JRST    PRMAP5          ;CONTINUE TO LOAD
+
+     
+
+\fSUBTTL        PRINT SUBROUTINES
+
+;PRINT THE 6 DIGIT OCTAL ADDRESS IN W
+
+;      ACCUMULATORS USED: D,T,V
+
+PRNAM0:   MOVE C,1(A)          ;LOAD SYMBOL
+PRNAM1:   MOVE W,2(A)          ;LOAD VALUE
+PRNAM: PUSHJ     P,PRNAME
+PRNUM:
+       TRNN    F,TTYFL
+       PUSHJ   P,SP1
+       PUSHJ   P,SP1 
+PRNUM0:   MOVE V,PRNUM2                ;LOAD BYTE POINTER TO RH. OF W
+       MOVNI     D,6           ;LOAD CHAR. COUNT
+PRNUM1:   ILDB T,V             ;LOAD DIGIT TO BE OUTPUT
+       ADDI    T,60            ;CONVERT FROM BINARY TO ASCII
+       PUSHJ     P,TYPE2
+       AOJL    D,PRNUM1                ;JUMP IF MORE DIGITS REMAIN
+       POPJ    P,
+
+PRNUM2:   XWD  220300,W
+
+     
+
+\f
+IFN NAMESW,<
+LDNAM: MOVE T,[POINT 6,CURNAM] ;POINTER
+       MOVNI D,6       ;SET COUNT
+       TLZ W,740000    ;REMOVE CODE BITS
+SETNAM:        IDIVI W,50      ;CONVERT FROM RAD 50
+       HRLM C,(P)
+       AOJGE D,.+2
+       PUSHJ P,SETNAM
+       HLRZ C,(P)
+       JUMPE C,INAM
+       ADDI C,17
+       CAILE C,31
+       ADDI C,7
+       CAIG C,72       ;REMOVE SPECIAL  CHARS. (. $ %)
+       IDPB C,T
+INAM:  POPJ P, >
+
+
+;YE OLDE RECURSIVE NUMBER PRINTER
+;PRINTS Q, WITH LEADING ZEROES SUPPRESSED; USES A AND T
+
+RCNUM: IDIVI Q,12              ;RADIX DECIMAL
+       ADDI A,"0"
+       HRLM A,(P)
+       JUMPE Q,.+2
+       PUSHJ P,RCNUM
+       HLRZ T,(P)
+       JRST TYPE2
+
+
+SPACES:        PUSHJ   P,SP1
+SP1:   PUSHJ   P,SPACE
+SPACE: MOVEI   T,40
+       JRST    TYPE2
+     
+
+\f;     ACCUMULATORS USED: Q,T,D
+
+PWORD: MOVNI   Q,6             ;SET CHARACTER COUNT TO SIX
+PWORD1: MOVE   D,LSTPT         ;ENTER HERE WITH Q PRESET
+PWORD2: ILDB   T,D             ;LOAD NEXT CHAR. TO BE OUTPUT
+       PUSHJ     P,TYPE                ;OUTPUT CHARACTER
+       AOJL    Q,PWORD2
+       POPJ    P,
+
+
+;TYPEOUT SUBROUTINE - THE CHARACTER SUPPLIED IN T IS CONVERTED TO ASCII
+;AND IS OUTPUT ON THE CONSOLE AND/OR THE SPECIFIED LOADER MAP OUTPUT
+;DEVICE
+
+CRLFLF:        PUSHJ   P,CRLF
+FCRLF: TLO     F,FCONSW        ;INSURE TTY OUTPUT
+CRLF:  MOVEI   T,15            ;CARRIAGE RETURN LINE FEED
+       PUSHJ   P,TYPE2
+       TRCA    T,7             ;CR.XOR.7=LF
+TYPE:  MOVEI   T,40(T)         ;CONVERT SIXBIT TO ASCII
+TYPE2: TLNN    N,AUXSWI        ;IS THER AN AUXILIARY DEVICE?
+       JRST    TYPE3           ;NO, DONT OUTPUT TO IT
+       TLON    N,AUXSWE        ;IS AUX. DEV. ENTERED?
+       PUSHJ   P,IAD2          ;NOPE, DO SO!
+       SOSG    ABUF2           ;SPACE LEFT IN BUFFER?
+       OUTPUT  2,              ;CREATE A NEW BUFFER
+       IDPB    T,ABUF1         ;DEPOSIT CHARACTER
+       TLNN    F,FCONSW        ;FORCE OUTPUT TO CONSOLE TOO?
+       POPJ    P,              ;NOPE
+TYPE3: IFN RPGSW,<
+       TRNE    F,NOTTTY        ;IF TTY IS ANOTHER DEVICE
+       POPJ    P,              ;DON'T OUTPUT TO IT>
+       SKIPN   BUFO2           ;END OF BUFFER
+       OUTPUT  3,              ;FORCE OUTPUT NOW
+       IDPB    T,BUFO1         ;DEPOSIT CHARACTER
+       CAIN    T,12            ;END OF LINE
+       OUTPUT  3,              ;FORCE AN OUTPUT
+       POPJ    P,
+     
+
+\fSUBTTL        SYMBOL PRINT - RADIX 50
+
+;      ACCUMULATORS USED: D,T
+
+PRNAME: MOVE   T,C             ;LOAD SYMBOL
+       TLZ     T,740000        ;ZERO CODE BITS
+       PUSH    P,T
+       PUSH    P,C
+       MOVEI   C,6
+       MOVEI   D,1
+       IDIVI   T,50
+       JUMPN   V,.+2
+       IMULI   D,50
+       SOJN    C,.-3
+       POP     P,C
+       POP     P,T
+       IMUL    T,D
+       MOVNI   D,6             ;LOAD CHAR. COUNT
+SPT:   IDIVI   T,50            ;THE REMAINDER IS THE NEXT CHAR.
+       HRLM    V,(P)           ;STORE IN LH. OF PUSHDOWN LIST
+       AOJGE   D,.+2           ;SKIP IF NO CHARS. REMAIN
+       PUSHJ   P,SPT           ;RECURSIVE CALL FOR NEXT CHAR.
+       HLRZ    T,(P)           ;LOAD FROM LH. OF PUSHDOWN LIST
+       JUMPE   T,TYPE          ;BLANK
+       ADDI    T,60-1
+       CAILE   T,71
+       ADDI    T,101-72
+       CAILE   T,132
+       SUBI    T,134-44
+       CAIN    T,43
+       MOVEI   T,56
+       JRST    TYPE2
+
+TAB1:  SETZM   TABCNT
+       PUSHJ   P,CRLF
+TAB:   AOS     T,TABCNT
+       CAIN    T,5
+       JRST    TAB1
+       TRNE    F,TTYFL
+       JRST    SP1
+       MOVEI   T,11
+       JRST    TYPE2
+
+     
+
+\f
+OTOD:  IBP     N
+OTOD1: IDIVI   Q,↑D10
+       ADDI    Q,20            ;FORM SIXBIT
+       IDPB    Q,N
+       ADDI    A,20
+       IDPB    A,N
+       POPJ    P,
+
+DTAB:  SIXBIT  /JANFEB/
+       SIXBIT  /MARAPR/
+       SIXBIT  /MAYJUN/
+       SIXBIT  /JULAUG/
+       SIXBIT  /SEPOCT/
+       SIXBIT  /NOVDEC/
+
+     
+
+\fSUBTTL        ERROR MESSAGE PRINT SUBROUTINE
+
+;      FORM OF CALL:
+
+;      JSP     A,ERRPT
+;      SIXBIT    /<MESSAGE>/
+
+;      ACCUMULATORS USED: T,V,C,W
+
+ERRPT: TLO     F,FCONSW        ;INSURE TTY OUTPUT
+       PUSHJ   P,CRLF          ;ROOM AT THE TOP
+       PUSHJ   P,PRQ           ;START OFF WITH ?
+ERRPT0: PUSH   P,Q             ;SAVE Q
+       SKIPA   V,ERRPT5
+ERRPT1: PUSHJ   P,TYPE
+       ILDB    T,V
+       CAIN    T,"@"-40
+       JRST    ERRPT4
+       CAIN    T,"%"-40
+       JRST    ERRPT9
+       CAIN    T,"!"-40
+       JRST    ERRP42          ;JUST RETURN,LEAVE FCONSW ON
+       CAIE    T,"#"-40
+       JRST    ERRPT1
+       SKIPN   C,DTIN
+       JRST    ERRPT4
+       MOVNI   Q,14
+       MOVEI   W,77
+ERRPT2: TDNE   C,W
+       JRST    ERRPT3
+       LSH     W,6
+       AOJL    Q,ERRPT2
+ERRPT3: MOVE   W,ERRPT6
+       PUSHJ   P,PWORD1
+       SKIPN   W,DTIN1
+       JRST    ERRPT4
+       LSH     W,-6
+       TLO     W,160000
+       MOVNI   Q,4
+       PUSHJ   P,PWORD1
+ERRPT4: PUSHJ   P,CRLF
+ERRP41:        TLZ     F,FCONSW        ;ONE ERROR PER CONSOLE
+ERRP42:        POP     P,Q             ;***DMN*** FIX FOR ILC MESSAGE
+       AOJ     V,              ;PROGRAM BUMMERS BEWARE:
+       JRST    @V              ;V HAS AN INDEX OF A
+
+ERRPT5: POINT     6,0(A)
+ERRPT6: SIXBIT    / FILE /
+     
+
+\fERRPT8:       TLO     F,FCONSW        ;INSURE TTY OUTPUT
+       PUSHJ   P,PRQ           ;START WITH ?
+       CAIGE   T,140           ;IS IT A NON-PRINTING CHAR?
+       CAIL    T,40
+       JRST    ERRP8
+       PUSH    P,T
+       MOVEI     T,136         ;UP ARROW
+       PUSHJ     P,TYPE2
+       POP     P,T
+       TRC     T,100           ;CONVERT TO PRINTING CHAR.
+ERRP8: PUSHJ     P,TYPE2
+ERRPT7:   PUSHJ     P,SPACE
+       JRST    ERRPT0
+
+ERRPT9: MOVEI   V,@V
+       PUSH    P,V
+       ERROR   7,<?ILLEGAL -LOADER@?>
+       POP     P,V
+       JRST    ERRP41
+
+;PRINT QUESTION MARK
+
+PRQ:   PUSH    P,T             ;SAVE
+       MOVEI   T,"?"           ;PRINT ?
+       PUSHJ   P,TYPE2         ;...
+       POP     P,T             ;RESTORE
+       POPJ    P,              ;RETURN
+     
+
+\fSUBTTL        INPUT - OUTPUT INTERFACE
+
+;BINARY INPUT SUBROUTINE - RETURNS A WORD IN W
+IFE K,<
+WORDPR:        PUSHJ   P,WORD          ;GET FIRST WORD OF PAIR
+       MOVE    C,W             ;KEEP IT HANDY>
+WORD:  SOSGE   BUFR2           ;SKIP IF BUFFER NOT EMPTY
+       JRST    WORD2
+WORD1: ILDB    W,BUFR1         ;PICK UP 36 BIT WORD
+       POPJ    P,
+
+WORD2: IN      1,              ;GET NEXT BUFFER LOAD
+       JRST    WORD            ;DATA OK - CONTINUE LOADING
+WORD3: STATZ   1,IODEND        ;TEST FOR EOF
+       JRST    EOF             ;END OF FILE EXIT
+       ERROR   ,< /INPUT ERROR#/>
+       JRST    LD2             ;GO TO ERROR RETURN
+
+
+SE3:   XWD     2,2             ;SYMBOL POINTER INCREMENT
+PDLPT: XWD     -41,PDLST-1;    INITIAL PUSHDOWN POINTER
+COMM:  SQUOZE    0,.COMM.
+LSTPT: POINT   6,W             ;CHARACTER POINTER TO W
+
+IOBKTL==40000
+IOIMPM==400000
+IODERR==200000
+IODTER==100000
+IODEND==20000
+
+IOBAD==IODERR!IODTER!IOBKTL!IOIMPM
+
+     
+
+\fSUBTTL        IMPURE CODE
+IFN SEG2SW,<   RELOC
+LOWCOD:        RELOC>
+IFN PURESW,<HICODE:
+IFN SEG2SW,<   PHASE LOWCOD>
+IFE SEG2SW,<   PHASE   140>>
+
+
+DBUF1: JSP     A,ERRPT7
+DBUF:  SIXBIT  /TI:ME DY-MON-YR @/
+       POPJ    P,
+
+;DATA FOR PURE OPEN UUO'S
+
+IFN SPCHN,<
+CHNENT:        0
+       SIXBIT .CHN.
+       0
+       0
+CHNOUT:        17
+       SIXBIT /DSK/
+       0
+>
+IFN RPGSW,<
+OPEN1: EXP     1
+RPG1:  Z
+       XWD     0,CTLIN
+>
+
+OPEN2: EXP     1
+LD5C1: Z
+       XWD     ABUF,0
+
+OPEN3: EXP     14
+ILD1:  Z
+       XWD     0,BUFR
+
+IFN PURESW,<DEPHASE
+CODLN=.-HICODE>
+     
+
+\fSUBTTL        DATA STORAGE
+
+IFN PURESW,<
+IFE SEG2SW,<LOC 140>
+IFN SEG2SW,<RELOC>
+LOWCOD:        BLOCK CODLN>
+
+PDSAV: BLOCK 1                 ;SAVED PUSHDOWN POINTER
+COMSAV: BLOCK 1                        ;LENGTH OF COMMON
+MDG:   BLOCK 1                 ;COUNTER FOR MUL DEF GLOBALS
+PDLST: BLOCK   40
+
+F.C:   BLOCK 1
+       BLOCK 1 ;STORE N HERE
+       BLOCK 1 ;STORE X HERE
+       BLOCK 1 ;STORE H HERE
+       BLOCK 1 ;STORE S HERE
+       BLOCK 1 ;STORE R HERE
+B.C:   BLOCK 1
+
+STADDR:        BLOCK 1 ;HOLDS STARTING ADDRESS
+
+IFN NAMESW,<
+PRGNAM:        BLOCK 1 ;STORE BINARY FILE NAME-USED TO MAKE SYSTAT MORE MEANINGFUL
+>
+IFN REENT,<
+HIGHX: BLOCK 1
+HIGHR: BLOCK 1 ;HOLD X AND R WHILE LOADING LOW SEG PIECES
+LOWX:  BLOCK 1
+HILOW: BLOCK 1 ;HIGHEST NON-BLOCK STMT IN LOW SEG
+HVAL:  BLOCK 1 ;ORG OF HIGH SEG>
+HVAL1: BLOCK 1 ;ACTUAL ORG OF HIGH SEG
+LOWR:  BLOCK 1 ;HOLD X AND R WHILE LOADING HISEG PIECES
+IFN KUTSW,<CORSZ:      BLOCK 1>
+IFN DMNSW,<KORSP:      BLOCK 1>
+IFN LDAC,<BOTACS:      BLOCK 1>
+IFN WFWSW,<VARLNG:     BLOCK 1
+VARREL:        BLOCK 1>
+IFN SAILSW,<LIBFLS:    BLOCK   RELLEN*3
+PRGFLS:        BLOCK   RELLEN*3>
+     
+
+\fPT1:  BLOCK 1
+SVA:   BLOCK 1
+IFN RPGSW,<
+NONLOD:        BLOCK 1
+SVRPG: BLOCK 1
+IFN TEMP,<
+TMPFIL:        BLOCK 2
+TMPFLG:        BLOCK 1>
+>
+IFN  NAMESW,<
+CURNAM:        BLOCK 1
+>
+IFN PP,<
+OLDDEV:        BLOCK 1
+PPN:   BLOCK 1
+PPNE:  BLOCK 1
+PPNV:  BLOCK 1
+PPNW:  BLOCK 1
+       >
+IFN FAILSW,<
+GLBCNT:        BLOCK 1
+HDSAV: BLOCK 1
+HEADNM:        BLOCK 1
+LFTHSW:        BLOCK 1
+OPNUM: BLOCK 1
+POLSW: BLOCK 1
+SVHWD: BLOCK 1
+SVSAT: BLOCK 1
+PPDB:  BLOCK PPDL+1
+LINKTB:        BLOCK 21
+>
+HISTRT:        BLOCK 1 ;JOBREL AT START OF LOADING
+IFN L,<
+LSPXIT:        BLOCK 1
+RINITL:        BLOCK 1
+OLDJR: BLOCK 1>
+IFN SPCHN,<
+CHNTAB:        BLOCK 1
+BEGOV: BLOCK 1
+CHNACN:        BLOCK 1
+CHNACB:        BLOCK 1>
+TABCNT:        BLOCK 1
+LIMBO: BLOCK   1       ;WHERE OLD CHARS. ARE STORED
+IFN DIDAL,<LSTBLK:     BLOCK   1       ;POINTER TO LAST PROG LOADED>
+IFN EXPAND,<ALWCOR:    BLOCK   1       ;CORE AVAILABLE TO USER>
+IFN ALGSW,<%OWN: BLOCK 1       ;ADDRESS OF ALGOL OWN AREA
+       OWNLNG: BLOCK   1       ;LENGTH OF OWN BLOCK>
+IFN REENT,<SVBRKS:     BLOCK   1       ;XWD HIGH,LOW (PROG BREAKS)>
+     
+
+\fSUBTTL        BUFFER HEADERS AND HEADER HEADERS
+
+BUFO:  BLOCK 1                 ;CONSOLE INPUT HEADER HEADER
+BUFO1: BLOCK 1
+BUFO2: BLOCK 1
+
+BUFI:  BLOCK 1                 ;CONSOLE OUTPUT HEADER HEADER
+BUFI1: BLOCK 1
+BUFI2: BLOCK 1
+
+ABUF:  BLOCK 1                 ;AUXILIARY OUTPUT HEADER HEADER
+ABUF1: BLOCK 1
+ABUF2: BLOCK 1
+
+BUFR:  BLOCK 1                 ;BINARY INPUT HEADER HEADER
+BUFR1: BLOCK 1
+BUFR2: BLOCK 1
+
+DTIN:  BLOCK 1                 ;DECTAPE INPUT BLOCK
+DTIN1: BLOCK 3
+
+DTOUT: BLOCK 1                 ;DECTAPE OUTPUT BLOCK
+DTOUT1: BLOCK 3
+
+       TTYL==52                        ;TWO TTY BUFFERS
+IFN STANSW,< TTYL==70   ;;;STANFORD, JUST TO BE DIFFERENT, HAS BIG TTY BFRS>
+
+IFE LNSSW,<
+IFE K,<        BUFL==406               ;TWO DTA BUFFERS FOR LOAD>
+IFN K,<        BUFL==203               ;ONE DTA BUFFER FOR LOAD>
+       ABUFL==203              ;ONE DTA BUFFER FOR AUX DEV>
+IFN LNSSW,<
+IFE K,<BUFL==4*203+1>
+IFN K,<BUFL==203+1>
+ABUFL==2*203+1>
+
+TTY1:  BLOCK   TTYL            ;TTY BUFFER AREA
+BUF1:  BLOCK   BUFL            ;LOAD BUFFER AREA
+AUX:   BLOCK   ABUFL           ;AUX BUFFER AREA
+
+
+IFN RPGSW,<
+CTLIN: BLOCK 3
+CTLNAM:        BLOCK 3
+CTLBUF:        BLOCK 203+1
+>
+     
+
+\fSUBTTL        FORTRAN DATA STORAGE
+
+IFN STANSW,<PATCH:     BLOCK   20              ;STANFORD HAS SEMI-INFINITE CORE>
+
+IFE K,<
+TOPTAB:        BLOCK 1 ;TOP OF TABLES
+CTAB:  BLOCK 1;        COMMON
+ATAB:  BLOCK 1;        ARRAYS
+STAB:  BLOCK 1;        SCALARS
+GSTAB: BLOCK 1;        GLOBAL SUBPROGS
+AOTAB: BLOCK 1;        OFFSET ARRAYS
+CCON:  BLOCK 1;        CONSTANTS
+PTEMP: BLOCK 1;        PERMANENT TEMPS
+TTEMP: BLOCK 1;        TEMPORARY TEMPS
+COMBAS:        BLOCK 1;        BASE OF COMMON
+LLC:   BLOCK 1;        PROGRAM ORIGIN
+BITP:  BLOCK 1;        BIT POINTER
+BITC:  BLOCK 1;        BIT COUNT
+PLTP:  BLOCK 1;        PROGRAMMER LABEL TABLE
+MLTP:  BLOCK 1;        MADE LABEL TABLE
+SDS:   BLOCK 1 ;START OF DATA STATEMENTS
+SDSTP: BLOCK 1 ;START OF DATA STATEMENTS POINTER
+BLKSIZ:        BLOCK 1;        BLOCK SIZE
+MODIF: BLOCK 1;        ADDRESS MODIFICATION +1
+SVFORH:        BLOCK 1 ;SAVE H WHILE LOADING F4 PROGRAMS
+
+IOWDPP:        BLOCK 2>
+SBRNAM:        BLOCK 1
+
+IFE K,<
+CT1:   BLOCK 1         ;TEMP FOR C
+LTC:   BLOCK 1
+ITC:   BLOCK 1
+ENC:   BLOCK 1
+WCNT:  BLOCK 1         ;DATA WORD COUNT
+RCNT:  BLOCK 1         ;DATA REPEAT COUNT
+
+LTCTEM:        BLOCK 1         ;TEMP FOR LTC
+DWCT:  BLOCK 1         ;DATA WORD COUNT>
+
+       VAR     ;DUMP VARIABLES
+IFN PURESW,<RELOC>
+
+     
+
+\fSUBTTL        REMAP UUO
+IFN REENT,<
+IFN PURESW,<HHIGO:     PHASE   BUF1    ;DON'T NEED BUF1 NOW>
+
+HIGO:  CORE    V,              ;CORE UUO
+       JFCL                    ;NEVER FAILS
+HINOGO:        MOVE    D,HVAL
+       CAMG    D,HVAL1         ;ANYTHING IN HI-SEG
+       JRST    0               ;NO
+       MOVE    V,HISTRT        ;NOW REMAP THE HISEG.
+       REMAP   V,              ;REMAP UUO.
+       JRST    HIGET           ;FATAL ERROR.
+HIRET: JRST    0               ;EXECUTE CODE IN ACC'S
+
+HIGET: HRRZI   V,SEGBLK        ;DATA FOR
+       GETSEG  V,              ;GETSEG UUO
+       SKIPA                   ;CANNOT CONTINUE NO HISEG
+       JRST    REMPFL          ;REGAINED LOADER HISEG
+                               ;GO PRINT MESSAGE
+       TTCALL  3,SEGMES        ;PRINT SEGMES
+       EXIT                    ;AND DIE
+
+SEGBLK:        SIXBIT  /SYS/
+       SIXBIT  /LOADER/
+       EXP     0,0,0,0
+
+
+SEGMES:        ASCIZ   /?CANNOT FIND LOADER.SHR
+/
+
+IFN PURESW,<HIGONE:    DEPHASE>>
+     
+
+\fSUBTTL        LISP LOADER
+
+;END HERE IF 1K LOADER REQUESTED.
+IFN K,<IFE L,<END BEG>
+IFE L,<        XLIST   >
+
+IFN L,<    LIT
+               VAR
+       LODMAK: MOVEI A,LODMAK
+       MOVEM A,137
+       INIT 17
+       SIXBIT /DSK/
+       0
+       HALT
+       ENTER LMFILE
+       HALT
+       OUTPUT [IOWD 1,LMLST    ;OUTPUT LENGTH OF FILE
+               0]
+       OUTPUT LMLST
+       STATZ 740000
+       HALT
+       RELEASE
+       CALL [SIXBIT /EXIT/]
+
+LMFILE:        SIXBIT /LISP/
+       SIXBIT /LOD/
+       0
+       0
+
+LMLST: IOWD LODMAK+1-LD,137
+       0
+
+       END LODMAK>>
+
+
+       LIST
+     
+
+\fSUBTTL         FORTRAN FOUR LOADER
+
+F4LD:  TLNE    F,SKIPSW!FULLSW ;ARE WE IN SKIP MODE
+       JRST    REJECT          ;YES,DON'T LOAD ANY OF THIS
+       MOVEI   W,-2(S);        GENERATE TABLES
+       CAIG    W,(H)           ;NEED TO EXPAND?
+IFN EXPAND,<PUSHJ P,[PUSHJ P,XPAND
+               TLOA    F,FULLSW
+               JRST    POPJM3
+               POPJ    P,]>
+IFE EXPAND,<   TLO     F,FULLSW>
+;IFN REENT,<TRO        F,F4FL!VFLG     ;RE-ENTRANT LIB40>
+       TLO     N,F4SW;         SET FORTRAN FOUR FLAG
+       HRRZ    V,R;            SET PROG BREAK INTO V
+       MOVEM   V,LLC;          SAVE FIRST WORD ADDRESS
+       HRRZM   W,MLTP;         MADE LABELS
+       HRRZM   W,PLTP;         PROGRAMMER LABELS
+       ADD     W,[POINT 1,1];  GENERATE BIT-BYTE POINTER
+       MOVEM   W,BITP
+       MOVEM   W,SDSTP;        FIRST DATA STATEMENT
+       AOS     SDSTP;
+       HRREI   W,-↑D36;      BITS PER WORDUM
+       MOVEM   W,BITC;         BIT COUNT
+       PUSHJ   P,BITWX         ;MAKE SURE OF ENOUGH SPACE
+       MOVE    W,[JRST ALLOVE] ;LAST DATA STATEMENT
+       MOVEM   W,(S)
+
+TEXTR: PUSHJ   P,WORD;         TEXT BY DEFAULT
+       HLRZ    C,W
+       CAIN    C,-1
+       JRST    HEADER;         HEADER
+       MOVEI   C,1;            RELOCATABLE
+       TLNN    F,FULLSW!SKIPSW ;DON'T LOAD IF EITHER SET
+       PUSHJ   P,BITW;         SHOVE AND STORE
+       JRST    TEXTR;          LOOP FOR NEXT WORD
+
+ABS:   SOSG    BLKSIZ; MORE TO GET
+       JRST    TEXTR;          NOPE
+ABSI:  PUSHJ   P,WORD;
+       MOVEI   C,0;            NON-RELOCATABLE
+       TLNN    F,FULLSW!SKIPSW ;DON'T LOAD IF EITHER SET
+       PUSHJ   P,BITW;         TYPE 0
+       JRST    ABS
+     
+
+\fSUBTTL        PROCESS TABLE ENTRIES
+
+MDLB:  TLNE    F,FULLSW+SKIPSW;        MADE LABEL PROC
+       JRST    GLOBDF;         NO ROOM AT THE IN
+       HLRZ    C,MLTP;         GET PRESENT SIZE
+       CAMGE   C,BLKSIZ;       IF NEW SIZE BIGGER, STR-R-RETCH
+       PUSHJ   P,SMLT
+       HRRZ    C,MLTP;         GET BASE
+MLPLC: ADD     C,BLKSIZ;       MAKE INDEX
+       TLNN    F,FULLSW+SKIPSW;        DONT LOAD
+       HRRZM   V,(C);          PUT AWAY DEFINITION
+GLOBDF:        PUSHJ   P,WORD
+       TLNE    F,FULLSW+SKIPSW ;SKIPPING THIS PROG?
+       JRST    TEXTR           ;YES, DON'T DEFINE
+       MOVEI   C,(V);          AND LOC
+       EXCH    W,C
+       PUSHJ   P,SYMXX;        PUT IN DDT-SYMBOL TABLE
+       PUSHJ   P,BITWX
+       JRST    TEXTR
+
+PLB:   TLNE    F,FULLSW+SKIPSW
+       JRST    GLOBDF
+       HLRZ    C,PLTP;         PRESENT SIZE
+       CAMGE   C,BLKSIZ
+       PUSHJ   P,SPLT
+       HRRZ    C,PLTP
+       JRST    MLPLC
+     
+
+\fSUBTTL        STORE WORD AND SET BIT TABLE
+
+BITW:  MOVEM   W,@X;           STORE AWAY OFFSET
+       IDPB    C,BITP;         STORE BIT
+       AOSGE   BITC;           STEP BIT COUNT
+       AOJA    V,BITWX;        SOME MORE ROOM LEFT
+       HRREI   C,-↑D36;      RESET COUNT
+       MOVEM   C,BITC
+       SOS     PLTP
+       SOS     BITP;           ALL UPDATED
+IFE EXPAND,<HRL        C,MLTP
+       SOS     MLTP
+       HRR     C,MLTP>
+IFN EXPAND,<HRRZ       C,MLTP;         TO ADDRESS
+       SUBI    C,1
+       CAIG C,(H)
+       PUSHJ P,[PUSHJ P,XPAND
+               POPJ P,
+               ADDI C,2000
+               JRST POPJM2]
+       SOS     MLTP
+       HRLI C,1(C)>
+       HRRZ    T,SDSTP;        GET DATA POINTER
+       BLT     C,-1(T);        MOVE DOWN LISTS
+       AOJ     V,;             STEP LOADER LOCATION
+BITWX: IFN REENT,<
+       TLNE    F,HIPROG
+       JRST    FORTHI>
+       CAIGE H,@X
+       MOVEI H,@X      ;KEEP H SET RIGHT FOR HISEG STUFF
+BITWX2:        HRRZ    T,MLTP
+       CAIG    T,(H);          OVERFLOW CHECK
+IFE EXPAND,<TLO        F,FULLSW>
+IFN EXPAND,<PUSHJ P,   [PUSHJ P,XPAND
+                       TLOA F,FULLSW
+                       JRST POPJM3
+                       POPJ P,]>
+       POPJ    P,;
+
+SMLT:  SUB     C,BLKSIZ;       STRETCH
+       MOVS    W,MLTP          ;LEFT HALF HAS OLD BASE
+       ADD     C,MLTP          ;RIGHT HALF HAS NEW BASE
+IFN EXPAND,<   HRRZS C ;GET RID OF COUNT
+               CAIG C,(H)
+               PUSHJ P,[PUSHJ P,XPAND
+                       POPJ P,
+                       ADD W,[XWD 2000,0]
+                       ADDI C,2000
+                       JRST POPJM2]>
+       HRRM C,MLTP             ;PUT IN NEW MLTP
+       HLL     C,W             ;FORM BLT POINTER
+       ADDI    W,(C)           ;LAST ENTRY OF MLTP
+       HRL     W,BLKSIZ        ;NEW SIZE OF MLTP
+       HLLM    W,MLTP          ;...
+SLTC:  BLT     C,0(W);         MOVE DOWN (UP?)
+       POPJ    P,;
+
+SPLT:  SUB     C,BLKSIZ
+       MOVS    W,MLTP;
+       ADDM    C,PLTP
+       ADD     C,MLTP
+IFN EXPAND,<   HRRZS C
+               CAIG C,(H)
+               PUSHJ P,[PUSHJ P,XPAND
+                       POPJ P,
+                       ADD W,[XWD 2000,0]
+                       ADDI C,2000
+                       JRST POPJM2]>
+       HRRM C,MLTP             ;PUT IN NEW MLTP
+       HLL     C,W
+       HLRZ    W,PLTP          ;OLD SIZE OF PL TABLE
+       ADD     W,PLTP          ;NEW BASE OF PL TABLE
+       HRL     W,BLKSIZ        ;NEW SIZE OF PL TABLE
+       HLLM    W,PLTP          ;INTO POINTER
+       JRST    SLTC
+
+
+IFN REENT,<
+FORTHI:        HRRZ T,JOBREL   ;CHECK FOR CORE OVERFLOW
+       CAIGE T,@X
+       PUSHJ   P,[PUSHJ P,HIEXP
+               TLOA F,FULLSW
+               JRST POPJM3     ;CHECK AGAIN
+               POPJ P,]
+       JRST BITWX2>
+     
+
+\fSUBTTL        PROCESS END CODE WORD
+
+ENDS:  PUSHJ   P,WORD;         GET STARTING ADDRESS
+       JUMPE   W,ENDS1;        NOT MAIN
+       ADDI    W,(R);          RELOCATION OFFSET
+       TLNE    N,ISAFLG;       IGNORE STARTING ADDRESS
+       JRST ENDS1
+       HRRZM   W,STADDR        ;STORE STARTING ADDRESS
+IFN NAMESW,<MOVE W,1(N)        ;SET UP NAME
+       PUSHJ   P,LDNAM
+       MOVE W,DTIN
+       MOVEM W,PRGNAM>
+ENDS1: PUSHJ   P,WORDPR        ;DATA STORE SIZE
+       HRRZM   C,PTEMP         ;NUMBER OF PERMANENT TEMPS
+       MOVEM   V,CCON;         START OF CONSTANTS AREA
+       JUMPE   W,E1;           NULL
+       MOVEM   W,BLKSIZ        ;SAVE COUNT
+       MOVEI   W,0(V)          ;DEFINE CONST.
+       MOVE    C,CNR50         ;...
+       TLNN    F,SKIPSW!FULLSW
+       PUSHJ   P,SYMPT         ;...
+       PUSHJ   P,GSWD          ;STORE CONSTANT TABLE
+E1:    MOVEI   W,0(V);         GET LOADER LOC
+       EXCH    W,PTEMP;        STORE INTO PERM TEMP POINTER
+       ADD     W,PTEMP;        FORM TEMP TEMP ADDRESS
+       MOVEM   W,TTEMP;        POINTER
+       MOVEM   V,GSTAB;        STORE LOADER LOC IN GLOBSUB
+       MOVEM H,SVFORH
+       MOVE    C,TTR50         ;DEFINE %TEMP.
+       TLNE    F,SKIPSW!FULLSW
+       JRST    E1A
+       PUSHJ   P,SYMPT         ;...
+       MOVE    C,PTR50         ;DEFINE (IF EXTANT) TEMP.
+       MOVEI   W,0(V)          ;...
+       CAME    W,TTEMP         ;ANY PERM TEMPS?
+       PUSHJ   P,SYMPT         ;YES, DEFINE
+E1A:   PUSHJ   P,WORD;         NUMBER OF GLOBSUBS
+       JUMPE   W,E11
+       MOVEM   W,BLKSIZ        ;SIZE OF GLOBSUB
+       PUSHJ   P,GSWD          ;STORE GLOBSUB TABLE
+E11:   MOVEM   V,STAB;         SCALARS
+       PUSHJ   P,WORD;         HOW MANY?
+       JUMPE   W,E21;          NONE
+       PUSHJ   P,GSWDPR        ;STORE SCALAR TABLE
+E21:   MOVEM   V,ATAB;         ARRAY POINTER
+       PUSHJ   P,WORD;         COMMENTS FOR SCALARS APPLY
+       JUMPE   W,E31
+       PUSHJ   P,GSWDPR        ;STORE ARRAY TABLE
+E31:   MOVEM   V,AOTAB;        ARRAYS OFFSET
+       PUSHJ   P,WORD;         SAME COMMENTS AS ABOVE
+       JUMPE   W,E41
+       PUSHJ   P,GSWDPR        ;STORE ARRAY OFFSET TABLE
+E41:   PUSHJ   P,WORD;         TEMP, SCALAR, ARRAY SIZE
+       TLNE    F,FULLSW!SKIPSW ;SKIPPING THIS PROG?
+       MOVEI   W,0             ;DON'T ACCEPT GLOB SUBPROG REQUESTS
+       MOVEM   V,CTAB;         SETUP COMMON TABLE POINTER
+       ADD     W,GSTAB;        GLOBAL SUBPROG BASE
+       MOVEM   W,COMBAS;       START OF COMMON
+       PUSHJ   P,WORD;         COMMON BLOCK SIZE
+       HRRZM   W,BLKSIZ
+       JUMPE   W,PASS2;        NO COMMON
+COMTOP:        PUSHJ   P,WORDPR        ;GET A COMMON PAIR
+       TLNE    F,SKIPSW!FULLSW ;IF SKIPPING
+       JRST    COMCO1          ;DON'T USE
+       PUSHJ   P,SDEF;         SEARCH
+       JRST    COMYES;         ALREADY THERE
+       HRLS    W
+       HRR     W,COMBAS;       PICK UP THIS COMMON LOC
+       TLNN    F,SKIPSW!FULLSW
+       PUSHJ   P,SYMXX;        DEFINE IT
+       MOVS    W,W;            SWAP HALFS
+       ADD     W,COMBAS;       UPDATE COMMON LOC
+       HRRM    W,COMBAS;       OLD BASE PLUS NEW SIZE
+       HLRZS   W;              RETURN ADDRESS
+       TLZ     C,400000
+       TLNN F,SKIPSW!FULLSW
+       PUSHJ   P,SYMXX
+COMCOM:        PUSHJ   P,CWSTWX        ;STORE A WORD PAIR
+COMCO1:        SOS     BLKSIZ
+       SOSLE   BLKSIZ
+       JRST    COMTOP
+       JRST    PASS2
+
+COMYES:        HLRZ    C,2(A);         PICK UP DEFINITION
+       CAMLE   W,C;            CHECK SIZE
+       JRST    ILC;            ILLEGAL COMMON
+       MOVE    C,1(A);         NAME
+       HRRZ    W,2(A); BASE
+       JRST    COMCOM
+     
+
+\f
+PRSTWX:        PUSHJ   P,WORDPR        ;GET A WORD PAIR
+CWSTWX:        EXCH    C,W             ;SPACE TO STORE FIRST WORD OF PAIR?
+       PUSHJ   P,WSTWX         ;...
+       EXCH    C,W             ;THERE WAS; IT'S STORED
+WSTWX: TLNE    F,FULLSW!SKIPSW ;SPACE FOR ANOTHER WORD?
+       POPJ    P,              ;NOPE, RETURN
+       MOVEM   W,@X            ;YES, STORE IT.
+       AOJA    V,BITWX         ;TELL THE TABLES ABOUT IT; THEN RETURN
+
+
+GSWD:  PUSHJ   P,WORD          ;GET WORD FROM TABLE
+       PUSHJ   P,WSTWX         ;STASH IT
+       SOSE    BLKSIZ          ;FINISHED?
+       JRST    GSWD            ;NOPE, LOOP
+       POPJ    P,              ;TRA 1,4
+
+GSWDPR:        MOVEM   W,BLKSIZ        ;KEEP COUNT
+GSWDP1:        PUSHJ   P,PRSTWX        ;GET AND STASH A PAIR
+       SOS     BLKSIZ          ;FINISHED?
+       SOSLE   BLKSIZ          ;...
+       JRST    GSWDP1          ;NOPE, LOOP
+       POPJ    P,              ;TRA 1,4
+     
+
+\fSUBTTL        BEGIN HERE PASS2 TEXT PROCESSING
+
+PASS2: ADDI V,(X)
+IFN REENT,<TLNE F,HIPROG
+       HRRZ V,H>
+       MOVEM V,TOPTAB  ;SAVE FOR OVERLAP CHECKING
+       TLNE    F,FULLSW+SKIPSW;        ABORT?
+       JRST    ALLOVE;         YES
+       MOVE    V,LLC           ;PICK UP PROGRAM ORIGIN
+       CAML    V,CCON          ;IS THIS A PROGRAM?
+       JRST    FBLKD           ;NO, GO LOOK FOR FIRST BLK DATA
+       TLOE    N,PGM1          ;YES, IS THIS FIRST F4 PROG?
+       JRST    NOPRG           ;NO
+       HRR     W,COMBAS        ;YES, PLACE PROG BREAK IN LH
+IFE L,<IFN REENT,<TLNN F,HIPROG        ;DON'T BOTHER IF IN HISEG, CHAIN NOT SMART ENOUGH>
+       HRLM    W,JOBCHN(X)     ;FOR CHAIN>
+NOPRG: HRRZ    W,PLTP;         GET PROG TABLE BASE
+       HLRZ    C,PLTP;         AND SIZE
+       ADD     W,C;            COMPUTE END OF PROG TABLE
+       ADD     W,[POINT 1,1];  AND BEGINNING OF BIT TABLE
+       EXCH    W,BITP;         SWAP POINTERS
+PASS2B:        ILDB    C,BITP;         GET A BIT
+       JUMPE   C,PASS2C;       NO PASS2 PROCESSING
+       PUSHJ   P,PROC;         PROCESS A TAG
+       JRST    PASS2B;         MORE TO COME
+       JRST    ENDTP;
+
+PROC:  LDB     C,[POINT 6,@X,23];      TAG
+       SETZM   MODIF;          ZERO TO ADDRESS MODIFIER
+       TRZE    C,40
+       AOS     MODIF
+       MOVEI   W,TABDIS;       HEAD OF TABLE
+       HRLI W,-TABLNG  ;SET UP FOR AOBJN
+       HLRZ    T,(W);          GET ENTRY
+       CAME    T,C;            CHECK
+       AOBJN W,.-2
+       JUMPGE W,LOAD4A ;RAN OUT OF ENTRIES
+       HRRZ    W,(W);          GET DISPATCH
+       LDB     C,[POINT 12,@X,35]
+       JRST    (W);            DISPATCH
+
+
+PASS2C:        PUSHJ   P,PASS2A
+       JRST    PASS2B
+       JRST    ENDTP
+     
+
+\f
+TABDIS:        XWD 11,PCONS;           CONSTANTS
+       XWD 06,PGS;             GLOBAL SUBPROGRAMS
+       XWD 20,PST;             SCALARS
+       XWD 22,PAT;             ARRAYS
+       XWD 01,PATO;            ARRAYS OFFSET
+       XWD 00,PPLT;            PROGRAMMER LABELS
+       XWD 31,PMLT;            MADE LABESL
+       XWD 26,PPT;             PERMANENT TEMPORARYS
+       XWD 27,PTT;             TEMPORARY TEMPORARYS
+TABLNG==.-TABDIS
+;DISPATCH ON A HEADER
+
+HEADER:        CAMN    W,[EXP -2];     END OF PASS ONE
+       JRST    ENDS
+       LDB     C,[POINT 12,W,35];      GET SIZE
+       MOVEM   C,BLKSIZ
+       ANDI    W,770000
+       JUMPE   W,PLB;  PROGRAMMER LABEL
+       CAIN    W,500000;       ABSOLUTE BLOCK
+       JRST    ABSI;
+       CAIN    W,310000;       MADE LABEL
+       JRST    MDLB;           MADE LABEL
+       CAIN    W,600000
+       JRST    GLOBDF
+       CAIN    W,700000;       DATA STATEMENT
+       JRST    DATAS
+       JRST    LOAD4A;         DATA STATEMENTS WILL GO HERE
+
+TTR50: RADIX50 10,%TEMP.
+PTR50: RADIX50 10,TEMP.
+CNR50: RADIX50 10,CONST.
+     
+
+\fSUBTTL        ROUTINES TO PROCESS POINTERS
+
+PCONS: ADD     C,CCON;         GENERATE CONSTANT ADDRESS
+       SOJA    C,PCOMX         ;ADJUST FOR 1 AS FIRST ENTRY
+
+PSTA:  PUSHJ   P,SWAPSY        ;NON-COMMON SCALARS AND ARRAYS
+       ADDI    C,(R);          RELOCATE
+PCOM1: PUSHJ   P,SYDEF         ;...
+PCOMX: ADD     C,MODIF         ;ADDR RELOC FOR DP
+       HRRM    C,@X;           REPLACE ADDRESS
+PASS2A:        AOJ     V,;             STEP READOUT POINTER
+       CAML    V,CCON          ;END OF PROCESSABLES?
+CPOPJ1:        AOS     (P);            SKIP
+       POPJ    P,;
+
+PAT:   SKIPA   W,ATAB          ;ARRAY TABLE BASE
+PST:   MOVE    W,STAB          ;SCALAR TABLE  BASE
+       ROT     C,1             ;SCALE BY 2
+       ADD     C,W             ;ADD IN TABLE BASE
+       ADDI    C,-2(X);        TABLE ENTRY
+       HLRZ    W,(C);          CHECK FOR COMMON
+       JUMPE   W,PSTA;         NO COMMON
+       PUSHJ   P,COMDID        ;PROCESS COMMON
+       JRST    PCOM1
+
+COMDID:        LSH     W,1             ;PROCESS COMMON TABLE ENTRIES
+       ADD     W,CTAB;         COMMON TAG
+       ADDI    W,-2(X);        OFFSET
+       PUSHJ   P,SWAPSY;       GET SYMBOL AND SET TO DEFINED
+       ADD     C,1(W);         BASE OF COMMON
+       POPJ    P,              ;RETURN
+
+PATO:  ROT     C,1
+       ADD     C,AOTAB;        ARRAY OFFSET
+       ADDI    C,-2(X);        LOADER OFFSET
+       MOVEM   C,CT1;          SAVE CURRENT POINTER
+       HRRZ    C,1(C);         PICK UP REFERENCE POINTER
+       ANDI    C,7777; MASK TO ADDRESS
+       ROT     C,1;            ALWAYS A ARRAY
+       ADDI    C,-2(X)
+       ADD     C,ATAB
+       HLRZ    W,(C);          COMMON CHECK
+       JUMPE   W,NCO
+       PUSHJ   P,COMDID        ;PROCESS COMMON
+       PUSHJ   P,SYDEF
+       MOVE    C,CT1
+       HRRE    C,(C)
+       ADD     C,1(W)
+       JRST    PCOMX
+     
+
+\fNCO:  PUSHJ   P,SWAPSY;
+       ADDI    C,(R)           ;DEFINE SYMBOL IN TRUE LOC
+       PUSHJ   P,SYDEF         ;...
+       MOVE    C,CT1
+       HRRZ    C,(C)           ;OFFSET ADDRESS PICKUP
+       ADDI    C,(R)           ;WHERE IT WILL BE
+       JRST    PCOMX           ;STASH ADDR AWAY
+
+PTT:   ADD     C,TTEMP;        TEMPORARY TEMPS
+       SOJA    C,PCOMX         ;ADJUST FOR 1 AS FIRST ENTRY
+
+PPT:   ADD     C,PTEMP;        PERMANENT TEMPS
+       SOJA    C,PCOMX         ;ADJUST FOR 1 AS FIRST ENTRY
+
+PGS:   ADD     C,GSTAB;        GLOBSUBS
+       ADDI    C,-1(X);        OFFSET
+       MOVE    C,(C)
+       TLC     C,640000;       MAKE A REQUEST
+       PUSHJ P,TBLCHK          ;CHECK FOR OVERLAP
+       MOVEI   W,(V);          THIS LOC
+       HLRM    W,@X;           ZERO RIGHT HALF
+       PUSHJ   P,SYMXX
+       JRST    PASS2A
+
+SYDEF: TLNE    N,SYDAT         ;SYMBOL WANTS DEFININITION?
+       POPJ    P,              ;NO, GO AWAY
+       PUSH    P,C             ;SAVE THE WORLD
+       PUSH    P,W
+       PUSHJ P,TBLCHK  ;CHECK FOR OVERLAP
+       MOVE    W,C
+       SKIPE   C,T     ;PICKUP VALUE
+       PUSHJ   P,SYMXX
+       POP     P,W
+       POP     P,C
+       POPJ    P,;
+
+PMLT:  ADD     C,MLTP
+       JRST    .+2
+PPLT:  ADD     C,PLTP
+       HRRZ    C,(C)
+       JRST    PCOMX
+
+SYMXX: PUSH    P,V
+       PUSHJ   P,SYMPT
+       POP     P,V
+IFE REENT,<POPJ        P,>
+IFN REENT,<JRST RESTRX>
+     
+
+\f
+SWAPSY:        MOVEI   T,0;            SET TO EXCHANGE DEFS
+       EXCH    T,1(C);         GET NAME
+       HRRZ    C,(C)           ;GET VALUE
+       POPJ    P,
+TBLCHK:        HRRZ W,MLTP     ;GETT TOP OV TABLES
+       SUBI W,2
+       CAMG W,TOPTAB   ;WILL IT OVERLAP
+IFE EXPAND,<TLO F,FULLSW>
+IFN EXPAND,<JRST [PUSHJ P,XPAND
+               TLOA F,FULLSW
+               JRST TBLCHK
+               POPJ P,]>
+       POPJ P,
+     
+
+\fSUBTTL        END OF PASS2
+
+ALLOVE:        TLZ     N,F4SW          ;END OF F4 PROG
+       HRRZ V,SDSTP    ;GET READY TO ZERO OUT DATA STMTS
+       SETZM (V)       ;AT LEAST ONE THERE
+       CAIL V,(S)      ;IS THERE MORE THAN ONE??
+       JRST NOMODS     ;NO
+       HRLS V
+       ADDI V,1        ;SET UP BLT
+       BLT V,(S)       ;ZERO OUT ALL OF IT
+NOMODS:        MOVE H,SVFORH
+       TLNE    F,FULLSW!SKIPSW
+       JRST    HIGH3A
+       HRR     R,COMBAS        ;TOP OF THE DATA
+       CAMG    H,SDS           ;HIGHEST LOC GREATER THAN DATA STATEMENTS?
+       JRST    HIGH3A          ;NO, RETURN
+       ADDI    H,1(S)          ;YES, SET UP MEANINGFUL ERROR COMMENT
+       SUB     H,SDS           ;...
+       TLO     F,FULLSW        ;INDICATE OVERFLO
+HIGH3A:        IFN REENT,<SETZ W,      ;CAUSES TROUBLE OTHERWISE
+       TLZE F,HIPROG
+       JRST HIGHN1
+       HRRZ V,GSTAB
+       MOVEI V,@X
+       CAMLE V,HILOW
+       MOVEM V,HILOW>
+       HRRZ C,R
+       JRST    HIGH31          ;RETURN
+
+DATAS: TLNE    F,FULLSW+SKIPSW
+       JRST    DAX
+       MOVEI   C,(S)           ;ADDR OF WORD UNDER SYMBOL TABLE
+       MOVN    W,BLKSIZ        ;HOW FAR DOWN TO BLT
+       ADDM    W,PLTP          ;UPDATE TABLE POINTERS
+       ADDM    W,BITP          ;...
+       ADDM    W,SDSTP         ;...
+       ADD     C,W             ;RH(C):= WHEN TO STOP BLT
+       HRL     C,MLTP          ;SOURCE OF BLTED DATA
+       ADD     W,MLTP          ;UPDATE, GET DESTINATION OF BLT DATA
+IFN EXPAND,<   HRRZS W ;GET RID OF LEFT HALF
+               CAIG W,(H)
+               PUSHJ P,[PUSHJ P,XPAND
+                       POPJ P,
+                       ADDI W,2000
+                       ADD C,[XWD 2000,2000]
+                       JRST POPJM2]>
+       HRRM    W,MLTP  ;NO SET THIS SO EXTRA CORE NOT ZEROED
+       HLL     W,C             ;FORM BLT POINTER
+       BLT     W,-1(C)         ;MOVE TABLES DOWN (BUT NOT JRST ALLOVE)
+       PUSHJ   P,BITWX
+DAX:   PUSHJ   P,WORD;         READ ONE WORD
+       TLNN    F,FULLSW+SKIPSW
+       MOVEM   W,(C)
+       SOSLE   BLKSIZ          ;COUNT OF DATA SEQUENCE SIZE
+       AOJA    C,DAX           ;INCREMENT DATA SEQUENCE DEPOSIT LOC
+       JRST    TEXTR;          DONE
+     
+
+\fFBLKD:        TLOE    N,BLKD1         ;IS THIS FIRST BLOCK DATA?
+       JRST    ENDTP           ;NO
+       HRR     V,COMBAS        ;PLACE PROG BREAK IN RH FOR
+IFE L,<IFN REENT,<     TLNN F,HIPROG>
+       HRRM    V,JOBCHN(X)     ;CHAIN>
+ENDTP: TLNE    F,FULLSW+SKIPSW
+       JRST    ALLOVE
+       HRR     V,GSTAB
+ENDTP0:        CAML    V,STAB;         ANY MORE GLOBSUBS
+       JRST    ENDTP2;         NO
+       MOVE    C,@X;           GET SUBPROG NAME
+       PUSHJ   P,SREQ;         IS IT ALLREADY REQUESTED
+       AOJA    V,ENDTP0;       YES
+       PUSHJ   P,SDEF;         OR DEFINED
+       AOJA    V,ENDTP0;       YES
+       PUSHJ   P,TBLCHK
+       MOVEI   W,0             ;PREPARE DUMMY LINK
+       TLNN    F,FULLSW+SKIPSW ;ABORT
+       PUSHJ   P,SYM3X;        PUT IN DUMMY REQUEST
+       PUSHJ   P,BITWX;        OVERLAP CHECK
+       AOJA    V,ENDTP0
+ENDTP2:        SETZM   PT1
+ENDTPW:        HRRZ    V,SDSTP
+IFN EXPAND,<IFN REENT,<TLNE F,HIPROG
+               JRST ENDTPI>
+               SUBI V,(X)
+               CAMG V,COMBAS
+               JRST    [SUB V,COMBAS
+                       MOVNS   V
+                       PUSHJ P,XPAND9
+                       TLO F,FULLSW
+                       JRST .+1]
+ENDTPH:                HRR V,SDSTP>
+       HRRZM   V,SDS           ;DATA STATEMENT LOC
+ENDTP1:        SUBI    V,(X);          COMPENSATE FOR OFFSET
+       MOVE    W,@X;   GET WORD
+       TLNE    W,-1;           NO LEFT HALF IMPLIES COUNT
+       JRST    DODON;          DATA DONE
+       ADD     W,[MOVEI W,3]
+       ADDI    W,@X
+       EXCH    W,@X
+       AOJ     V,
+       ADD     W,@X;           ITEMS COUNT
+       MOVEM   W,ITC
+       MOVE    W,[MOVEM W,LTC]
+       MOVEM   W,@X;           SETUP FOR DATA EXECUTION
+       AOJ     V,
+       MOVSI   W,(MOVEI W,0)
+       EXCH    W,@X
+       MOVEM   W,ENC;          END COUNT
+       AOJ     V,
+       MOVEI   W,@X
+       ADDM    W,ITC
+LOOP:  MOVE    W,@X
+       HLRZ    T,W;            LEFT HALF INST.
+       ANDI    T,777000
+       CAIN    T,254000        ;JRST?
+       JRST    WRAP            ;END OF DATA
+       CAIN    T,260000        ;PUSHJ?
+       JRST    PJTABL(W)       ;DISPATCH VIA TABLE
+       CAIN    T,200000;       MOVE?
+       AOJA    V,INNER
+       CAIN    T,270000;       ADD?
+       JRST    ADDOP
+       CAIN    T,221000;       IMULI?
+       AOJA    V,LOOP
+       CAIE    T,220000;       IMUL?
+       JRST    LOAD4A;         NOTA
+INNER: HRRZ    T,@X;           GET ADDRESS
+       TRZE    T,770000;       ZERO TAG?
+       SOJA    T,CONPOL;       NO, CONSTANT POOL
+       JUMPE T,FORCNF
+       SUB     T,PT1;          SUBTRACT INDUCTION NUMBER
+       ASH     T,1
+       SUBI T,1
+       HRRM    T,@X
+       HLRZ    T,@X
+       ADDI    T,P
+       HRLM    T,@X
+       AOJA    V,LOOP
+IFN EXPAND,<IFN REENT,<ENDTPI: HRRZ V,COMBAS
+       MOVEI V,@X
+       CAMLE V,JOBREL
+       JRST    [PUSHJ P,HIEXP
+               TLOA F,FULLSW
+               JRST ENDTPI
+               JRST ENDTPH]
+       JRST ENDTPH>>
+FORCNF:        ERROR   ,</FORTRAN CONFUSED ABOUT DATA STATEMENTS#/>
+       JRST LD2
+     
+
+\fCONPOL:       ADD     T,ITC;  CONSTANT BASE
+       HRRM    T,@X
+       AOJA    V,LOOP
+
+ADDOP: HRRZ    T,@X
+       TRZE    T,770000
+       SOJA    T,CONPOL
+SKIPIN:        AOJA    V,LOOP
+
+PJTABL:        JRST    DWFS            ;PUSHJ 17,0
+       AOSA    PT1             ;INCREMENT DO COUNT
+       SOSA    PT1;            DECREMENT DO COUNT
+       SKIPA   W,[EXP DOINT.]
+       MOVEI   W,DOEND.
+       HRRM    W,@X
+       AOJA    V,SKIPIN        ;SKIP A WORD
+
+DWFS:  MOVEI   W,DWFS.
+       HRRM    W,@X
+       AOJ     V,
+       TLO     N,SYDAT
+       PUSHJ   P,PROC;         PROCESS THE TAG
+       JRST    LOAD4A          ;DATA STATEMENT BELOW CODE TOP
+       JRST    LOOP            ;PROPER RETURN
+
+DOINT.:        POP     P,V;            GET ADDRESS OF INITIAL VALUE
+       PUSH    P,(V);          STORE INDUCTION VARIABLE
+       AOJ     V,
+       PUSH    P,V;            INITIAL ADDRESS
+       JRST    (V)
+
+DOEND.:        HLRE    T,@(P)          ;RETAIN SIGN OF INCREMENT
+       ADDM    T,-2(P);        INCREMENT
+       HRRZ    T,@(P);         GET FINAL VALUE
+       SUB     T,-2(P)         ;FINAL - CURRENT
+       IMUL    T,@(P)          ;INCLUDE SIGN OF INCREMENT
+       JUMPL   T,DODONE        ;SIGN IS ONLY IMPORTANT THING
+       POP     P,(P);          BACK UP POINTER
+       JRST    @(P)
+     
+
+\fDODONE:       POP     P,-1(P);        BACK UP ADDRESS
+       POP     P,-1(P)
+       JRST    CPOPJ1          ;RETURN
+
+WRAP:  MOVE    W,ENC;          NUMBER OF CONSTANTS
+       ADD     W,ITC;          CONSTANT BASE
+       MOVEI   C,(W);          CHAIN
+       HRRM    C,@X
+       MOVEI   V,(W);          READY TO GO
+       JRST    ENDTP1
+
+DODON: TLZ     N,RCF!SYDAT!DZER        ;DATA STATEMENT FLAGS
+       MOVE    W,PTEMP         ;TOP OF PROG
+       ADDI    W,(X)           ;+OFFSET
+       HRRZ C,SDS
+IFE EXPAND,<SUBI C,(X) ;CHECK FOR ROOM
+       CAMGE C,COMBAS  ;IS IT THERE
+       TLO F,FULLSW    ;NO (DONE EARLIER IF EXPAND)
+       HRRZ C,SDS>
+       SUBI C,1        ;GET ONE LESS (TOP LOCATION TO ZERO)
+IFN REENT,<TLNE F,HIPROG
+       MOVE C,JOBREL>
+SECZER:        CAMLE   W,C             ;ANY DATA TO ZERO?
+       JRST    @SDS            ;NO, DO DATA STATEMENTS
+                               ;FULLSW IS ON IF COMBAS GT. SDS
+       TLNN    F,FULLSW+SKIPSW ;SHOULD WE ZERO?
+       SETZM   (W)             ;YES, DO SO
+       TLON    N,DZER          ;GO BACK FOR MORE?
+       AOJA    W,SECZER        ;YES, PLEASE
+       HRLI    W,-1(W)         ;SET UP BLT POINTER TO ZERO DATA
+       TLNN    F,FULLSW+SKIPSW ;SHOULD WE ZERO?
+       BLT     W,(C)           ;YES, DO SO
+       JRST    @SDS            ;GO DO DATA STATEMENTS
+
+DATAOV:        ERROR   0,</DATA STATEMENT OVERFLOW#/>
+       JRST    LD2
+     
+
+\fDREAD:        TLNE    N,RCF;          NEW REPEAT COUNT NEEDED
+       JRST    FETCH;          NO
+       MOVE    W,LTC
+       MOVEM   W,LTCTEM
+       MOVE    W,@LTC;         GET A WORD
+       HLRZM   W,RCNT;         SET REPEAT COUNT
+       HRRZM   W,WCNT;         SET WORD COUNT
+       POP     W,(W);          SUBTRACT ONE FROM BOTH HALFS
+       HLLM    W,@LTC;         DECREMENT REPEAT COUNT
+       AOS     W,LTC;          STEP READOUT
+       TLO     N,RCF
+FETCH: MOVE    W,@LTC
+       AOS     LTC
+       SOSE    WCNT
+       POPJ    P,;
+       SOSN    RCNT
+       JRST    DOFF.
+       MOVE    V,LTCTEM;       RESTORE READOUT
+       MOVEM   V,LTC
+DOFF.: TLZ     N,RCF;          RESET DATA REPEAT FLAG
+       POPJ    P,;
+
+DWFS.: MOVE    T,(P)
+       AOS     (P)
+       MOVE    T,(T);          GET ADDRESS
+       HLRZM   T,DWCT;         DATA WORD COUNT
+       HRRZS   T
+       ADDI    T,(W);          OFFSET
+IFN REENT,<HRRZS T             ;CLEAR LEFT HALF INCASE OF CARRY
+       CAML T,HVAL1
+       JRST    [ADD T,HIGHX
+               HRRZS T ;MUST GET RID OF LEFT HALF
+               CAMLE T,JOBREL
+               JRST DATAOV     ;IN CASE FORTRAN GOOFS ON LIMITS
+               JRST DWFS.1]
+       ADD T,LOWX
+       HRRZS T>
+IFE REENT,<ADDI T,(X)>
+       CAML T,SDS
+       JRST DATAOV
+DWFS.1:        PUSHJ   P,DREAD         ;GET A DATA WORD
+       HRRZS T
+IFN REENT,<CAMG T,JOBREL       ;JUST TO MAKE SURE>
+       CAMN T,SDS
+       JRST DATAOV
+       TLNN    F,FULLSW+SKIPSW ;LOAD THE NEXT DATA ITEM?
+       MOVEM   W,(T)           ;YES, STORE IT
+       SOSE    W,DWCT;         STEP DOWN AND TEST
+       AOJA T,DWFS.1           ;ONE MORE TIME, MOZART BABY!
+       POPJ    P,
+     
+
+\fSUBTTL        ROUTINE TO SKIP FORTRAN OUTPUT
+
+;SUBSECTION OF THE ROUTINE TO HANDLE OUTPUT FROM THE
+;FORTRAN IV COMPILER. THE MAIN OBJECT OF THE ROUTINE IS TO
+;LOOK FOR THE END BLOCK. CODE TAKEN FROM FUDGE2.
+
+MACHCD:        HRRZ    C,W             ;GET THE WORD COUNT
+       PUSHJ   P,WORD          ;INPUT A WORD
+       SOJG    C,MACHCD        ;LOOP BACK FOR REST OF THE BLOCK
+                               ;GO LOOK FOR NEXT BLOCK
+
+REJECT:        PUSHJ   P,WORD          ;READ A FORTRAN BLOCK HEADER
+       TLC     W,-1            ;TURN ONES TO ZEROES IN LEFT HALF
+       TLNE    W,-1            ;WAS LEFT HALF ALL ONES?
+       JRST    REJECT          ;NO, IT WAS CALCULATED MACHINE CODE
+       CAIN    W,-2            ;YES, IS RIGHT HALF = 777776?
+       JRST    ENDST           ;YES, PROCESS F4 END BLOCK
+       LDB     C,[POINT 6,W,23];GET CODE BITS FROM BITS 18-23
+       TRZ     W,770000        ;THEN WIPE THEM OUT
+       CAIE    C,70            ;IS IT A DATA STATEMENT?
+       CAIN    C,50            ;IS IT ABSOLUTE MACHINE CODE?
+       JRST    MACHCD          ;YES, TREAT IT LIKE DATA STATEMENTS
+       PUSHJ   P,WORD          ;NO, ITS A LABEL OF SOME SORT
+       JRST    REJECT          ;WHICH CONSISTS OF ONE WORD
+                               ;LOOK FOR NEXT BLOCK HEADER
+
+ENDST: MOVEI   C,1             ;TWO WORDS, FIVE TABLES, ONE WORD, ONE TABLE
+       MOVEI   T,6             ;TO GO
+F4LUP1:        PUSHJ   P,WORD          ;GET TABLE MEMBER
+F4LUP3:        SOJGE   C,F4LUP1        ;LOOP WITHIN A TABLE
+       JUMPL   T,LOAD1         ;LAST TABLE - RETURN
+       SOJG    T,F4LUP2        ;FIRST TWO WORDS AND FIVE TABLES
+       JUMPE   T,F4LUP1        ;COMMON LENGTH WORD
+F4LUP2:        PUSHJ   P,WORD          ;READ HEADER WORD
+       MOVE    C,W             ;COUNT TO COUNTER
+       JRST    F4LUP3          ;STASH
+     
+
+\fSUBTTL        LISP LOADER
+
+IFE L,<        END     BEG>
+IFN L,<
+       LIT
+       VAR
+LODMAK:        MOVEI A,LODMAK
+       MOVEM A,137
+       INIT 17
+       SIXBIT /DSK/
+       0
+       HALT
+       ENTER LMFILE
+       HALT
+       OUTPUT [IOWD 1,LMLST    ;OUTPUT LENGTH OF FILE
+               0]
+       OUTPUT LMLST
+       STATZ 740000
+       HALT
+       RELEASE
+       CALL [SIXBIT /EXIT/]
+
+LMFILE:        SIXBIT /LISP/
+       SIXBIT /LOD/
+       0
+       0
+
+LMLST: IOWD LODMAK+1-LD,137
+       0
+
+       END LODMAK>
+
+     
+
+\f
diff --git a/src/loader.nih b/src/loader.nih
new file mode 100644 (file)
index 0000000..4f0d81d
--- /dev/null
@@ -0,0 +1,5136 @@
+       SUBTTL  RP GRUEN/NGP/WFW/DMN  V.052     7-SEP-70
+; RFS 11-30-70
+;      TURNED ON FAILSW,SAILSW FOR NIH USAGE.
+
+
+       VLOADER==52
+       VPATCH==0               ;DEC PATCH LEVEL
+       VCUSTOM==0              ;NON-DEC PATCH LEVEL
+
+       LOC <JOBVER==137>
+       XWD VCUSTOM,VLOADER+1000*VPATCH
+       RELOC
+
+COMMENT        *       ASSEMBLY FEATURE SWITCHES (ACTION WHEN NON-ZERO)
+
+       SWITCHES ON (NON-ZERO) IN DEC VERSION
+SEG2SW         GIVES TWO SEGMENT CODE (IF MACRO ALLOWS IT)
+PURESW         GIVES PURE CODE (VARIABLES IN LOW SEG)
+REENT          GIVES REENTRANT CAPABILITY PDP-10
+       (REENT=0 FOR PDP-10/30 OR PDP-6 OR EARLY PDP-10)
+RPGSW          INCLUDE CCL FEATURE
+TEMP           INCLUDE TMPCOR FEATURE
+DMNSW           SYMBOL TABLE WILL BE MOVED DOWN FROM TOP OF CORE
+KUTSW           GIVES CORE CUTBACK ON /K
+EXPAND          FOR AUTOMATIC CORE EXPANSION
+PP             ALLOW PROJ-PROG #
+DIDAL          GIVES DIRECT ACCESS LIBRARY SEARCH MODE
+ALGSW          WILL LOAD ALGOL OWN BLOCK (TYPE 15)
+
+       SWITCHES OFF (ZERO) IN DEC VERSION
+K              GIVES 1KLOADER - NO F4
+L               FOR LISP LOADER
+SPMON          GIVES SPMON LOADER (MONITOR LOADER)
+TEN30          FOR 10/30 LOADER
+STANSW          GIVES STANFORD FEATURES
+LNSSW          GIVES LNS VERSION
+FAILSW         INCLUDE PROVISIONS FOR SPECIAL FAIL FIXUPS.
+LDAC            MEANS LOAD CODE INTO ACS
+       (LDAC DOES NOT WORK WITH KUTSW=1.CORE UUO CLEARS JOBBLT)
+WFWSW          GIVES BLOCK TYPE 13 (VARIABLS INTO LOW SEG)
+SYMARG         ACCEPT SYMBOLIC (GLOBAL) ARGUMENTS FOR SWITCHES
+SPCHN          WILL DO SPECIAL OVERLAYING
+SAILSW         GIVES BLOCK TYPE 15 (FORCE LOAD OF REL FILES)
+               AND 16 (FORCE SEARCH OF LIBRARIES) FOR SAIL
+*
+     
+
+SUBTTL DEFAULT ASSEMBLY SWITCH SETTINGS
+
+IFNDEF SPMON,<SPMON=0>
+IFN SPMON,<    TEN30==1
+               K==1>
+
+IFNDEF L,<L=0>
+
+IFNDEF TEN30,<TEN30=0>
+
+IFN TEN30!L,<  RPGSW=0
+               PP=0
+IFNDEF DMNSW,< DMNSW=0>
+IFNDEF DIDAL,< DIDAL=0>
+               ALGSW=0
+               PURESW=0
+               REENT=0
+               LDAC=0
+               KUTSW=0
+               SEG2SW=0
+               NAMESW=0>
+IFN TEN30,<    EXPAND=0>
+
+IFNDEF K,<K=0>
+
+IFNDEF STANSW,<STANSW=0>
+IFN STANSW,<   LDAC=1
+               FAILSW=1>
+
+IFNDEF LNSSW,<LNSSW=0>
+IFN LNSSW,<LDAC=1
+       PP=0>
+
+FAILSW==1
+IFNDEF FAILSW,<FAILSW=0>
+
+IFNDEF RPGSW,<RPGSW==1>
+IFN RPGSW,<PP==1>      ;REQUIRE DISK FOR CCL
+IFE RPGSW,<TEMP=0>
+
+IFNDEF PP,<PP==1>
+
+IFNDEF TEMP,<TEMP==1>
+
+IFNDEF NAMESW,<NAMESW==1>
+
+IFNDEF LDAC,<LDAC=0>
+IFN LDAC,<KUTSW=0>
+
+IFNDEF KUTSW,<KUTSW==1>
+
+IFNDEF EXPAND,<        IFN K,<EXPAND==0>
+               IFE K,<EXPAND==1>>
+
+IFNDEF DMNSW,<DMNSW==1>
+IFN DMNSW!LDAC,<IFNDEF SYMPAT,<SYMPAT==20>
+       IFN LDAC,<IFG 20-SYMPAT,<SYMPAT==20>>>
+
+IFNDEF REENT,<REENT==1>
+IFE REENT,<PURESW=0
+       SEG2SW=0>
+
+IFDEF TWOSEG,<IFNDEF SEG2SW,<SEG2SW==1>>
+IFNDEF SEG2SW,<SEG2SW==0>
+IFN SEG2SW,<PURESW==1>
+
+IFNDEF PURESW,<PURESW==1>
+
+IFNDEF WFWSW,<WFWSW==0>
+
+IFN K,<SYMARG=0
+       SPCHN=0>
+
+IFNDEF SYMARG,<SYMARG==0>
+
+IFNDEF SPCHN,<SPCHN==0>
+
+IFNDEF DIDAL,<DIDAL==1>
+
+IFNDEF ALGSW,<ALGSW==0>
+
+SAILSW==1
+IFNDEF SAILSW,<SAILSW==0>
+     
+
+SUBTTL ACCUMULATOR ASSIGNMENTS
+       F=0             ;FLAGS IN BOTH HALVES OF F
+       N=1             ;FLAGS IN LH, PROGRAM NAME POINTER IN RH
+       X=2             ;LOADER OFFSET
+       H=3             ;HIGHEST LOC LOADED
+       S=4             ;UNDEFINED POINTER
+       R=5             ;RELOCATION CONSTANT
+       B=6             ;SYMBOL TABLE POINTER
+       D=7
+       T=10
+       V=T+1
+       W=12            ;VALUE
+       C=W+1           ;SYMBOL
+       E=C+1           ;DATA WORD COUNTER
+       Q=15            ;RELOCATION BITS
+       A=Q+1           ;SYMBOL SEARCH POINTER
+       P=17            ;PUSHDOWN POINTER
+
+
+;MONITOR LOCATIONS IN THE USER AREA
+
+JOBDA==140
+JOBHDA==10
+
+EXTERN JOBDDT,JOBFF,JOBSA,JOBREL,JOBSYM,JOBUSY,JOB41
+IFN REENT,<    EXTERN  JOBHRL,JOBCOR>
+IFE K,<EXTERN  JOBCHN          ;RH = PROG BREAK OF FIRST BLOCK DATA
+                               ;LH = PROG BREAK OF FIRST F4 PROG>
+IFN RPGSW,<    EXTERN  JOBERR>
+IFN LDAC,<     EXTERN  JOBBLT>
+IFN FAILSW,<   EXTERN  JOBAPR>
+
+NEGOFF==400            ;NEGATIVE OFFSET OF HIGH SEGMENT
+
+
+IFN FAILSW,<;LENGTH OF PUSHDOWN LIST FOR POLISH FIXUPS
+PPDL==60>
+     
+
+;FLAGS F(0 - 17)
+       CSW==1                  ;ON - COLON SEEN
+       ESW==2                  ;ON - EXPLICIT EXTENSION IDENT.
+       SKIPSW==4               ;ON - DO NOT LOAD THIS PROGRAM
+       FSW==10                 ;ON - SCAN FORCED TO COMPLETION
+       FCONSW==20              ;ON - FORCE CONSOLE OUTPUT
+IFN REENT,<HIPROG==40  ;LOADING HI PROGRAM, SET BY HISEG. CLEARED BY EOF>
+       ASW==100                ;ON - LEFT ARROW ILLEGAL
+       FULLSW==200             ;ON - STORAGE EXCEEDED
+       SLIBSW==400             ;ON - LIB SEARCH IN THIS PROG
+       RMSMSW==1000            ;REMEMBER IF LOADING WITH SYMBOLS DURING LIB SEARCH
+       REWSW==2000             ;ON - REWIND AFTER INIT
+       LIBSW==4000             ;ON - LIBRARY SEARCH MODE
+       NAMSSW==10000           ;NAME BLOCK HAS BEEN SEEN FOR THIS PROG
+       ISW==20000              ;ON - DO NOT PERFORM INIT
+       SYMSW==40000            ;ON - LOAD LOCAL SYMBOLS
+       DSW==100000             ;ON - CHAR IN IDENTIFIER
+       NSW==200000             ;ON - SUPPRESS LIBRARY SEARCH
+       SSW==400000             ;ON - SWITCH MODE
+
+
+;FLAGS N(0 - 17)
+       ALLFLG==1               ;ON - LIST ALL GLOBALS
+       ISAFLG==2               ;ON - IGNORE STARTING ADDRESSES
+       COMFLG==4               ;ON - SIZE OF COMMON SET
+IFE K,<        F4SW==10                ;F4 IN PROGRESS
+       RCF==20                 ;READ DATA COUNT
+       SYDAT==40;              SYMBOL IN DATA>
+       SLASH==100              ;SLASH SEEN
+IFE K,<        BLKD1==200              ;ON- FIRST BLOCK DATA SEEN
+       PGM1==400               ;ON FIRST F4 PROG SEEN
+       DZER==1000              ;ON - ZERO SECOND DATA WORD>
+       EXEQSW==2000            ;IMMEDIATE EXECUTION
+       DDSW==4000              ;GO TO DDT
+IFN RPGSW,<RPGF==10000         ;IN RPG MODE>
+       AUXSWI==20000           ;ON - AUX. DEVICE INITIALIZED
+       AUXSWE==40000           ;ON - AUX. DEVICE ENTERED
+IFN PP,<PPSW==100000           ;ON - READING PROJ-PROG #>
+IFN PP!SPCHN,<PPCSW==200000    ;ON - READING PROJ #>
+IFN FAILSW,<HSW==400000                ;USED IN BLOCK 11 POLISH FIXUPS>
+     
+
+
+;MORE FLAGS IN F (18-35)
+IFN REENT,<
+SEENHI==1              ;HAVE SEEN HI STUFF
+NOHI==2                        ;LOAD AS NON-REENTRANT>
+IFN RPGSW,<NOTTTY==4   ;DEV "TTY" IS NOT A TTY>
+NOHI6==10              ;PDP-6 TYPE SYSTEM
+IFN DMNSW,<HISYM==20   ;BLT SYMBOLS INTO HIGH SEGMENT>
+SEGFL==40              ;LOAD INTO HI-SEG>
+IFN DIDAL,<XFLG==100           ;INDEX IN CORE (BLOCK TYPE 14)
+LSTLOD==200            ;LAST PROG WAS LOADED
+DTAFLG==400            ;LIBRARY DEVICE IS A DTA (NEEDED FOR INDEXING)>
+IFN DMNSW,<DMNFLG==1000>       ;SYMBOL TABLE TO BE MOVED DOWN
+IFN REENT,<VFLG==2000  ;DO LIB SEARCH OF IMP40.REL BEFORE LIB40>
+IFN SYMARG,<ARGFL==4000        ;TREAT $%. AS RADIX-50 CHAR.>
+TWOFL==10000           ;TWO SEGMENTS IN THIS BINARY FILE
+LOCAFL==20000          ;PRINT LOCAL SYMBOLS IN MAP
+TTYFL==40000                   ;AUX. DEV. IS TTY
+
+
+IFE K,<F4FL==400000            ;FORTRAN SEEN>
+COBFL==200000                  ;COBOL SEEN
+IFN ALGSW,<ALGFL==100000       ;ALGOL SEEN>
+
+DEFINE ERROR (X,Y)<
+JSP A,ERRPT'X
+SIXBIT Y>
+
+     
+
+IFE K,<        TITLE   LOADER - LOADS MACRO AND FORTRAN FOUR>
+IFN K,<        TITLE   1KLOAD - LOADS MACRO>
+
+IFN PURESW,<
+IFE SEG2SW,<HISEG>
+IFN SEG2SW,<TWOSEGMENTS
+       RELOC   400000>>
+
+
+
+IFN SPCHN,<
+DSKBLK==200    ;LENGTH OF DISK BLOCKS
+VECLEN==↑D25 ;LENGTH OF VECTOR TABLE FOR OVERLAYS>
+
+IFN SAILSW,<
+RELLEN==↑D5  ;#NUMBER OF REL FILES OR LIBRARIES (MUST BE SAME)>
+
+;CALLI DEFINITIONS
+
+OPDEF  RESET   [CALLI   0]
+OPDEF  SETDDT  [CALLI   2]
+OPDEF  DDTOUT  [CALLI   3]
+OPDEF  DEVCHR  [CALLI   4]
+OPDEF  CORE    [CALLI  11]
+OPDEF  EXIT    [CALLI  12]
+OPDEF  UTPCLR  [CALLI  13]
+OPDEF  DATE    [CALLI  14]
+OPDEF  MSTIME  [CALLI  23]
+OPDEF  PJOB    [CALLI  30]
+OPDEF  SETUWP  [CALLI  36]
+OPDEF  REMAP   [CALLI  37]
+OPDEF  GETSEG  [CALLI  40]
+OPDEF  SETNAM  [CALLI  43]
+OPDEF  TMPCOR  [CALLI  44]
+
+
+       MLON
+IFDEF SALL,<   SALL>
+     
+
+SUBTTL CCL INITIALIZATION
+IFN RPGSW,<
+BEG:   JRST    LD      ;NORMAL INITIALIZATION
+RPGSET:        RESET           ;RESET UUO.
+IFN TEMP,<MOVEI F,CTLBUF-1     ;USE CCL BUFFER FOR COMMANDS
+       HRRM F,CTLIN+1          ;DUMMY UP BYTE POINTER
+       HRLI F,-200     ;MAKE IT AN IOWD
+       MOVEM F,TMPFIL+1
+       MOVSI F,(SIXBIT /LOA/)
+       MOVEM F,TMPFIL
+       MOVE N,[XWD 2,TMPFIL]   ;POINTER FOR TMPCOR READ
+       TMPCOR  N,              ;READ AND DELETE LOA FILE
+       JRST RPGTMP             ;NO SUCH FILE IN CORE, TRY DISK
+       IMULI N,5               ;GET CHAR COUNT
+       ADDI N,1
+       MOVEM N,CTLIN+2         ;STORE IN BUFFER HEADER
+       MOVEI N,700             ;BYTE POINTER FOR LOA FILE
+       HRLM N,CTLIN+1          ;BYTE POINTER NOW COMPLETE
+       SETOM TMPFLG            ;MARK THAT A TMPCOR READ WAS DONE
+       SETZM NONLOD            ;NOT YET STARTED SCAN
+       JRST RPGS3C             ;GET BACK IN MAIN STREAM
+RPGTMP:        SETZM TMPFLG    ;MARK AS NOT TMP>
+       INIT    17,1    ;SET UP DSK FOR COMMAND FILE INPUT.
+       SIXBIT /DSK/
+       XWD 0,CTLIN
+       JRST    NUTS    ;CAN'T INIT, GET INPUT FROM TTY.
+       MOVEI   F,3
+       PJOB    N,      ;GET JOB NUMBER
+LUP:   IDIVI   N,12    ;STRIP OFF LAST DIGIT
+       ADDI    N+1,"0"-40      ;CONVERT TO SIXBIT
+       LSHC    N+1,-6  ;SAVE
+       SOJG    F,LUP   ;3 DIGITS YET?
+       HLLZ    N+2     ;YES.
+       HRRI    (SIXBIT /LOA/)  ;LOADER NAME PART OF FILE NAME.
+       MOVEM   CTLNAM
+       MOVSI   (SIXBIT /TMP/)  ;AND EXTENSION.
+       MOVEM   CTLNAM+1
+       SETZM   CTLNAM+3
+       LOOKUP  17,CTLNAM       ;FILE THERE?
+       JRST    NUTS            ;NO.
+       INIT 16,1       ;GET SET TO DELETE FILE
+       SIXBIT /DSK/
+       0
+       JRST RPGS3A     ;GIVE UP
+       SETZM CTLNAM+3  ;PUT STUFF BACK AS IT WAS
+       LOOKUP 16,CTLNAM
+       JRST RPGS3B
+       SETZM CTLNAM    ;SET FOR RENAME
+       RENAME 16,CTLNAM
+       JFCL            ;IGNORE FAILURE
+RPGS3B:        RELEASE 16,     ;GET RID OF DEVICE
+RPGS3A:        SETZM   NONLOD          ;TO INDICATE WE HAVE NOT YET STARTED TO SCAN
+                               ;COMMAND IN FILE.
+     
+
+RPGS3: MOVEI   CTLBUF  
+       MOVEM   JOBFF
+       INBUF   17,1            ;SET UP BUFFER.
+RPGS3C:        TTCALL  3,[ASCIZ /LOADING/]     ;PRINT MESSAGE THAT WE ARE STARTING.
+       SKIPE   NONLOD          ;CONTIUATION OF COMMAND?
+       JRST    RPGS2           ;YES, SPECIAL SETUP.
+CCLCHN:        MOVSI   N,RPGF          ;@ CHAIN FILES CYCLE FROM HERE
+       JRST    CTLSET          ;SET UP TTY
+
+RPGS1: PUSHJ   P,[TLNE F,ESW   ;HERE FROM FOO@ COMMAND, STORE NAME.
+                  JRST LDDT3   ;SAVE EXTENSION.
+                  TLZE F,CSW!DSW  ;AS NAME
+                  MOVEM W,DTIN ;STORE AS NAME
+                  SETZM W,DTIN1        ;TRY BLANK EXTENSION FIRST.
+                  JRST LDDT4]
+       MOVEM   0,SVRPG         ;SAVE 0 JUST IN CASE
+       SETZM   NONLOD          ;DETERMINE IF CONTINUATION.
+       MOVEI   0,2(B)          ;BY SEEING IF ANY SYMBOLS LOADED.
+       CAME    0,JOBREL
+       SETOM   NONLOD          ;SET TO -1 AND SKIP CALLI
+IFN TEMP,<SETZM TMPFLG>
+       MOVE    0,ILD1
+       MOVEM   0,RPG1
+       OPEN    17,OPEN1                ;KEEP IT PURE
+       JRST    [MOVE   W,RPG1
+               JRST    ILD5]
+       LOOKUP  17,DTIN         ;THE FILE NAME.
+       JRST    [MOVE   0,SVRPG ;RESTORE AC0=F
+               TLOE    F,ESW   ;WAS EXT EXPLICIT?
+               JRST    ILD9    ;YES, DON'T TRY AGAIN.
+               MOVEM   0,SVRPG ;SAVE AC0 AGAIN
+               MOVSI   0,(SIXBIT /TMP/)        ;TRY TMP INSTEAD
+               MOVEM   0,DTIN1
+               PUSHJ P,LDDT4   ;SET UP PPN
+               JRST    .-1]    ;TRY AGAIN
+       JRST    RPGS3
+
+RPGS2: MOVSI   0,RPGF  ;SET FLAG
+       IORM    0,F.C+N
+       TLO     N,RPGF
+       MOVE    0,SVRPG
+       JRST    LD2Q            ;BACK TO INPUT SCANNING.
+
+>
+
+     
+
+SUBTTL NORMAL INITIALIZATION
+
+LD:    IFE RPGSW,<BEG:>
+IFN L,< HRRZM 0,LSPXIT
+       MOVEI 0,0
+       HRRZM R,RINITL
+       RESET>
+IFE L,<IFN RPGSW,<
+       HLLZS   JOBERR          ;MAKE SURE ITS CLEAR.>
+       RESET                   ;INITIALIZE THIS JOB
+NUTS:  SETZ    N,              ;CLEAR N
+CTLSET:        SETZB   F,S             ;CLEAR THESE AS WELL
+       HLRZ    X,JOBSA         ;TOP OF LOADER
+       HRLI    X,V             ;PUT IN INDEX
+       HRRZI   H,JOBDA(X)      ;PROGRAM BREAK
+       MOVE    R,[XWD W,JOBDA] ;INITIAL RELOCATION
+       MOVSI   E,(SIXBIT /TTY/)
+       DEVCHR  E,
+       TLNN    E,10            ;IS IT A REAL TTY?
+IFN RPGSW,<JRST        [TLNN   F,RPGF  ;IN CCL MODE?>
+               EXIT            ;NO, EXIT IF NOT TTY
+IFN RPGSW,<    TRO F,NOTTTY    ;SET FLAG
+               JRST    LD1]    ;SKIP INIT>
+       INIT    3,1             ;INITIALIZE CONSOLE
+       SIXBIT    /TTY/
+       XWD     BUFO,BUFI
+CALLEX:        EXIT                    ;DEVICE ERROR, FATAL TO JOB
+       MOVEI     E,TTY1
+       MOVEM     E,JOBFF
+       INBUF     3,1
+       OUTBUF    3,1           ;INITIALIZE OUTPUT BUFFERS
+       OUTPUT    3,                    ;DO INITIAL REDUNDANT OUTPUT
+LD1:
+IFE L,<        HRRZ    B,JOBREL        ;MUST BE JOBREL FOR LOADING REENTRANT>
+IFN L,<        MOVE    B,JOBSYM        ;USED INSTEAD OF JOBREL FOR SYMBOL TABLE FIXUPS>
+       HRRZM   B,HISTRT
+       SUB     B,SE3           ;INITIALIZE SYMBOL TABLE POINTER
+       CAILE     H,1(B)        ;TEST CORE ALLOCATION>
+       JRST    [HRRZ   B,JOBREL;TOP OF CORE
+               ADDI    B,2000  ;1K MORE
+               CORE    B,      ;TRY TO GET IT
+               EXIT            ;INSUFFICIENT CORE, FATAL TO JOB
+               JRST    LD1]    ;TRY AGAIN
+IFN EXPAND,<SETZ S,
+       CORE    S,              ;GET PERMITTED CORE
+       JFCL
+       LSH     S,12
+       SUBI    S,1             ;CONVERT TO NUMBER OF WORDS
+       MOVEM   S,ALWCOR        ;SAVE IT FOR XPAND TEST>
+IFN PURESW,<MOVE S,[XWD HICODE,LOWCOD]
+       BLT S,LOWCOD+CODLN-1>
+IFE L,<        MOVS    E,X             ;SET UP BLT POINTER
+       HRRI    E,1(X)>
+IFN L,<MOVS E,H
+       HRRI E,1(H)>
+       SETZM     -1(E)                 ;ZERO FIRST WORD
+       BLT     E,(B)           ;ZERO CORE UP TO THE SYMBOL AREA
+       HRRZ    S,B             ;INITIALIZE UNDEF. POINTER
+       HRR     N,B             ;INITIALIZE PROGRAM NAME POINTER
+IFE L,<        HRRI    R,JOBDA         ;INITIALIZE THE LOAD ORIGIN
+       MOVE    E,COMM          ;SET .COMM. AS THE FIRST PROGRAM
+       MOVEM     E,1(B)                ;STORE IN SYMBOL TABLE
+       HRRZM     R,2(B)                ;STORE COMMON ORIGIN>
+       MOVEI     E,F.C         ;INITIALIZE STATE OF THE LOADER
+       BLT     E,B.C
+       SETZM   MDG             ;MULTIPLY DEFINED GLOBAL COUNT
+       SETZM   STADDR          ;CLEAR STARTING ADDRESS
+IFN REENT,<MOVSI W,1
+       MOVEM W,HVAL1
+       MOVEM W,HVAL
+       MOVEM X,LOWX
+       SETZM HILOW
+       MOVEM R,LOWR
+       HRRZI   W,1     
+       SETUWP  W,              ;SETUWP UUO.
+       TRO     F,NOHI6         ;PDP-6 COMES HERE.
+       MOVEM   F,F.C           ;PDP-10 COMES HERE.>
+IFN SAILSW,<MOVE W,[XWD -RELLEN-1,LIBFLS-1]    ;SET UP POINTERS
+       MOVEM W,LIBPNT# ;IN THE FORM OF AOBJN WORDS
+       MOVE W,[XWD -RELLEN-1,PRGFLS-1]
+       MOVEM W,PRGPNT#>
+IFE L,<        MOVSI   W,254200        ;STORE HALT IN JOB41
+       MOVEM   W,JOB41(X)      ;...>
+IFN L,<        MOVE W,JOBREL
+       HRRZM W,OLDJR>
+IFN SPCHN,<SETZM CHNACB        ;USED AS DEV INITED FLAG TOO>
+IFN NAMESW,<SETZM      CURNAM>
+IFN FAILSW,<MOVEI W,440000     ;SET UP THE SPECIAL BITS OF HEADNUM(ADD+POLISH)
+       MOVEM   W,HEADNM
+       SETZM   POLSW   ;SWITCH SAYS WE ARE DOING POLISH
+       MOVEI   W,PDLOV ;ENABLE FOR PDL OV
+       MOVEM   W,JOBAPR
+       MOVEI   W,200000
+       CALLI   W,16
+       SETZM LINKTB    ;ZERO OUT TABLE OF LINKS
+     
+
+       MOVE W,[XWD LINKTB,LINKTB+1]
+       BLT W,LINKTB+20>
+IFN DMNSW,<MOVEI W,SYMPAT
+       MOVEM W,KORSP>
+IFN KUTSW,<SETOM CORSZ>
+     
+
+IFN RPGSW,<JRST LD2Q>
+LD2:   IFN RPGSW,<MOVSI B,RPGF ;HERE ON ERRORS, TURN OFF RPG
+       ANDCAM B,F.C+N  ;IN CORE>
+;LOADER SCAN FOR FILE NAMES
+
+LD2Q:  MOVSI     B,F.C         ;RESTORE ACCUMULATORS
+       BLT     B,B
+       MOVE    P,PDLPT         ;INITIALIZE PUSHDOWN LIST
+       SETZM     BUFI2         ;CLEAR INPUT BUFFER POINTER
+IFE PP,<       SETZM     ILD1          ;CLEAR INPUT DEVICE NAME>
+IFN PP,<       MOVSI   T,(SIXBIT /DSK/)        ;ASSUME DSK.
+       MOVEM   T,ILD1
+       SETZM   OLDDEV  ;TO MAKE IT GO BACK AFTER /D FOR LIBSR>
+       SETZM     DTIN          ;CLEAR INPUT FILE NAME
+
+LD2B:  RELEAS    1,                    ;RELEASE BINARY INPUT DEVICE
+IFN RPGSW,<    TLNE    N,RPGF          ;NOT IF DOING CCL STUFF
+       JRST    LD2BA>
+       MOVEI     T,"*"
+       IDPB    T,BUFO1         ;OUTPUT ASTERISK TO START INPUT
+       OUTPUT    3,
+LD2BA: TLZ     F,FULLSW+ASW+ISW+CSW+ESW+SKIPSW+SLIBSW+REWSW
+LD2BP: TLNE    F,LIBSW         ;WAS LIBRARY MODE ON?
+       TLO     F,SKIPSW        ;YES, NORMAL MODE IS SKIPPING
+
+LD2D:  IFN PP,<SETZM   PPN             ;DON'T REMEMBER PPN FROM ONE FILE TO NEXT.
+LD2DB: SKIPE   W,OLDDEV                ;RESET DEVICE IF NEEDED.
+       CAMN    W,ILD1          ;IS IT SAME?
+       JRST    LD2DA           ;YES, FORGET IT.
+       TLZ     F,ISW+DSW+FSW+REWSW
+       MOVEM   W,ILD1>
+LD2DA: MOVEI     W,0           ;INITIALIZE IDENTIFIER SCAN
+       MOVEI     E,6           ;INITIALIZE CHARACTER COUNTER
+       MOVE    V,LSTPT         ;INITIALIZE BYTE POINTER TO W
+       TLZ     F,SSW+DSW+FSW   ;LEAVE SWITCH MODE
+LD3:   IFN RPGSW,<TLNE N,RPGF  ;CHECK RPG FEATURE
+       JRST    RPGRD>
+       SOSG    BUFI2           ;DECREMENT CHARACTER COUNTER
+       INPUT     3,                    ;FILL TTY BUFFER
+       ILDB    T,BUFI1         ;LOAD T WITH NEXT CHARACTER
+LD3AA: CAIN    T,175   ;OLD ALTMOD
+       MOVEI   T,33    ;NEW ONE
+       CAIL    T,140   ;LOWER CASE?
+       TRZ     T,40    ;CONVERT TO UPPER CASE
+       MOVE    Q,T
+       HRLM    Q,LIMBO         ;SAVE THIS CHAR.
+       MOVSS   LIMBO           ;AND LAST ONE
+       IDIVI     Q,11          ;TRANSLATE TO 4 BIT CODE
+       LDB     Q,LD8(A)                ;LOAD CLASSIFICATION CODE
+       CAIGE     Q,4           ;MODIFY CODE IF .GE. 4
+       TLNN    F,SSW           ;MODIFY CODE IF SWITCH MODE OFF
+       ADDI    Q,4             ;MODIFY CLASS. CODE FOR DISPATCH
+IFN SYMARG,<CAIL Q,20                  ;SKIP UNLESS SECOND FORM OF DISPATCH
+       JRST    LD3AB                   ;DIFFERENT DISPATCH>
+       HRRZ    A,LD3A(Q)               ;LOAD RH DISPATCH ENTRY
+       CAIL    Q,10            ;SKIP IF CORRECT DISPATCH ENTRY
+       HLRZ    A,LD3A-10(Q)    ;LOAD LH DISPATCH ENTRY
+       JRST    @A                      ;JUMP TO INDICATED LOCATION
+
+;COMMAND DISPATCH TABLE
+
+LD3A:  XWD     LD3,LD7B                ;IGNORED CHAR, BAD CHAR (SWITCH)
+       XWD     LD6A,LD6                ;</> OR <(>, LETTER (SWITCH)
+       XWD     LD5,LD6C                ;<:>, DIGIT (SWITCH ARG.)
+       XWD     LD5A,LD6D               ;<.>, ESCAPE SWITCH MODE <)>
+       XWD     LD5C,LD7                ;<=> OR <L. ARROW>, BAD CHAR.
+       XWD     LD5B,LD4                ;<,>, ALPHABETIC CHAR.
+       XWD     LD5D,LD4                ;<CR.>, NUMERIC CHAR.
+       XWD     LD5E1,LD7               ;<ALT MODE>, BAD CHAR. <)>
+IFN SYMARG,<XWD LD7,LD10               ;BAD CHAR,&>
+
+IFN RPGSW,<
+RPGRD1:        MOVNI T,5
+       ADDM T,CTLIN+2
+       AOS     CTLIN+1
+RPGRD: SOSG    CTLIN+2 ;CHECK CHARACTER COUNT.
+       JRST    [IFN TEMP,<SKIPE TMPFLG ;TMPCOR UUO READ DONE?
+               JRST LD2        ;YES, JUST LEAVE>
+               IN 17,0
+               JRST .+1
+               STATO 17,740000
+               JRST LD2
+               JSP A,ERRPT
+               SIXBIT /ERROR WHILE READING COMMAND FILE%/
+               JRST LD2]
+       IBP     CTLIN+1 ;ADVANCE POINTER
+     
+
+       MOVE    T,@CTLIN+1      ;AND CHECK FOR LINE #
+     
+
+       TRNE    T,1
+       JRST    RPGRD1
+       LDB     T,CTLIN+1       ;GET CHR
+       JRST    LD3AA           ;PASS IT ON>
+IFN SYMARG,<
+LD3AB: ROT     Q,-1                    ;CUT Q IN HALF
+       HRRZ    A,LD3A(Q)               ;PULL OFF RIGHT HALF OF TABLE ENTRY
+       JUMPGE  Q,@A                    ;WHICH IS CORRECT FOR EVEN ENTRIES
+       HLRZ    A,LD3A(Q)               ;BUT USE LEFT HALF FOR ODD ENTRIES
+       JRST    @A>
+     
+
+SUBTTL CHARACTER HANDLING
+
+;ALPHANUMERIC CHARACTER, NORMAL MODE
+LD4:   SOJL    E,LD3           ;JUMP IF NO SPACE FOR CHAR IN W
+       CAIGE   T,141           ;WORRY ABOUT LOWER CASE LETTERS
+       SUBI    T,40            ;CONVERT FROM ASCII TO SIXBIT
+       IDPB    T,V             ;DEPOSIT CHAR OF IDENTIFIER IN W
+       TLO     F,DSW           ;SET IDENTIFIER FLAG
+       JRST    LD3             ;RETURN FOR NEXT CHARACTER
+
+;DEVICE IDENTIFIER DELIMITER <:>
+
+LD5:   PUSH    P,W             ;SAVE W
+       TLOE    F,CSW           ;TEST AND SET COLON FLAG
+       PUSHJ     P,LDF         ;FORCE LOADING
+       POP     P,W             ;RESTORE W
+       TLNE    F,ESW           ;TEST SYNTAX
+       JRST    LD7A            ;ERROR, MISSING COMMA ASSUMED
+       JUMPE     W,LD2D                ;JUMP IF NULL DEVICE IDENTIFIER
+       MOVEM     W,ILD1                ;STORE DEVICE IDENTIFIER
+IFN PP,<MOVEM  W,OLDDEV        ;WE HAVE A NEW ONE, DO IGNORE OLD.>
+       TLZ     F,ISW+DSW+FSW+REWSW     ;CLEAR OLD DEVICE FLAGS
+       JRST    LD2D            ;RETURN FOR NEXT IDENTIFIER
+
+;FILE NAME EXTENSION IDENTIFIER DELIMITER <.>
+LD5A:  IFN SYMARG,<
+       TRNE    F,ARGFL         ;IS "." SPECIAL
+       JRST    LD4             ;YES,RADIX-50>
+       TLOE    F,ESW           ;TEST AND SET EXTENSION FLAG
+       JRST    LD7A            ;ERROR, TOO MANY PERIODS
+       TLZE    F,CSW+DSW       ;SKIP IF NULL IDENT AND NO COLON
+       MOVEM     W,DTIN        ;STORE FILE IDENTIFIER
+       JRST    LD2D            ;RETURN FOR NEXT IDENTIFIER
+
+;INPUT SPECIFICATION DELIMITER <,>
+LD5B:
+IFN PP,<TLZE   N,PPCSW                 ;READING PP #?
+       JRST    [
+IFE STANSW,<   HRLM    D,PPN           ;STORE PROJ #
+               JRST    LD6A1           ];GET PROG #>
+IFN STANSW,<   PUSHJ   P,RJUST         ;RIGHT JUSTIFY W
+               HRLM    W,PPN           ;STORE PROJ NAME
+               JRST    LD2DB           ];GET PROG NAME>
+       PUSHJ   P,RBRA          ;CHECK FOR MISSING RBRA>
+       SETOM   LIMBO           ;USED TO INDICATE COMMA SEEN
+       TLZN    F,FSW           ;SKIP IF PREV. FORCED LOADING
+       PUSHJ     P,FSCN2               ;LOAD (FSW NOT SET)
+       JRST    LD2BP           ;RETURN FOR NEXT IDENTIFIER
+
+LD5B1: TLNE    F,ESW           ;TEST EXTENSION FLAG
+       JRST    LDDT3           ;EXPLICIT EXTENSION IDENTIFIER
+       TLZN    F,CSW+DSW               ;SKIP IF IDENT. OR COLON
+       POPJ    P,
+       MOVEM     W,DTIN                ;STORE FILE IDENTIFIER
+       JRST    LDDT2           ;ASSUME <.REL> IN DEFAULT CASE
+     
+
+;OUTPUT SPECIFICATION DELIMITER <=> OR <LEFT ARROW>
+;OR PROJ-PROG # BRACKETS <[> AND <]>
+
+LD5C:
+IFN SPCHN,<CAIN T,"="  ;DO A /= AS SWITCH
+       TLNN F,SSW
+       SKIPA
+       JRST LD6>
+IFN RPGSW,<CAIN T,"@"  ;CHECK FOR * COMMAND.
+       JRST    RPGS1>
+IFN PP,<CAIN   T,"["                   ;PROJ-PROG #?
+       JRST    [TLO    N,PPSW+PPCSW    ;SET FLAGS
+               MOVEM   W,PPNW          ;SAVE W
+               MOVEM   E,PPNE          ;SAVE E
+               MOVEM   V,PPNV          ;SAVE V
+IFE STANSW,<   JRST    LD6A2]>         ;READ NUMBERS AS SWITCHES
+IFN STANSW,<   JRST    LD2DB]>
+       CAIN    T,"]"                   ;END OF PP #?
+       JRST    [PUSHJ  P,RBRA          ;PROCESS RIGHT BRACKET
+               JRST    LD3]            ;READ NEXT IDENT>
+       TLOE    F,ASW                   ;TEST AND SET LEFT ARROW FLAG
+       JRST    LD7A                    ;ERROR, MISPLACED LEFT ARROW
+       PUSHJ     P,LD5B1               ;STORE IDENTIFIER
+       TLZN    F,ESW                   ;TEST EXTENSION FLAG
+       MOVSI     W,554160              ;ASSUME <.MAP> IN DEFAULT CASE
+       MOVEM     W,DTOUT1              ;STORE FILE EXTENSION IDENTIFIER
+       MOVE    W,DTIN                  ;LOAD INPUT FILE IDENTIFIER
+       MOVEM     W,DTOUT               ;USE AS OUTPUT FILE IDENTIFIER
+IFN SPCHN,<MOVEM W,CHNENT      ;AND FOR SPECAIL CHAINING>
+IFN PP,<MOVE   W,PPN                   ;PROJ-PROG #
+       MOVEM   W,DTOUT+3               ;...>
+       MOVE    W,ILD1                  ;LOAD INPUT DEVICE IDENTIFIER
+       MOVEM   W,LD5C1                 ;USE AS OUTPUT DEVICE IDENTIFIER
+IFN PP,<SKIPE  W,OLDDEV                ;RESTORE OLD
+       MOVEM   W,ILD1>
+;INITIALIZE AUXILIARY OUTPUT DEVICE
+       TRZ     F,TTYFL
+       TLZE    N,AUXSWI+AUXSWE         ;FLUSH CURRENT DEVICE
+       RELEASE 2,                      ;...
+       DEVCHR  W,                      ;IS DEVICE A TTY?
+       TLNE    W,10                    ;...
+       JRST    [TRO    F,TTYFL         ;TTY IS AUX. DEV.
+               JRST    LD2D]           ;YES, SKIP INIT
+       OPEN    2,OPEN2                 ;KEEP IT PURE
+       JRST    ILD5A
+       TLNE    F,REWSW                 ;REWIND REQUESTED?
+       UTPCLR  2,                      ;DECTAPE REWIND
+       TLZE    F,REWSW                 ;SKIP IF NO REWIND REQUESTED
+       MTAPE   2,1                     ;REWIND THE AUX DEV
+       MOVEI   E,AUX                   ;SET BUFFER ORIGIN
+       MOVEM     E,JOBFF
+       OUTBUF  2,1                     ;INITIALIZE SINGLE BUFFER
+       TLO     N,AUXSWI                        ;SET INITIALIZED FLAG
+IFN LNSSW,<EXCH        E,JOBFF
+       SUBI    E,AUX
+       IDIV    C,E
+       OUTBUF  2,(C)>
+       JRST    LD2D                    ;RETURN TO CONTINUE SCAN
+
+     
+
+;RIGHT SQUARE BRACKET (PROJ-PROG NUMBERS)
+IFN PP,<
+RBRA:  TLZN    N,PPSW          ;READING PP #?
+       POPJ    P,              ;NOPE, RETURN
+       TLZE    N,PPCSW         ;COMMA SEEN?
+       JRST    LD7A            ;NOPE, INDICATE ERROR
+IFE STANSW,<HRRM       D,PPN           ;STASH PROG NUMBER
+               TLZ     F,SSW   ;AND TURN OFF SWITCH MODE>
+IFN STANSW,<PUSHJ      P,RJUST         ;RIGHT JUSTIFY W
+       HRRM    W,PPN           ;STASH PROG NAME>
+       MOVE    W,PPNW          ;PICKUP OLD IDENT
+       MOVE    E,PPNE          ;RESTORE CHAR COUNT
+       MOVE    V,PPNV          ;RESTORE BYTE PNTR
+       POPJ    P,              ;TRA 1,4
+
+;RIGHT JUSTIFY W
+
+IFN STANSW,<
+RJUST: JUMPE   W,LD7A          ;NOTHING TO RIGHT JUSTIFY
+       TRNE    W,77            ;IS W RJUSTED YET?
+       POPJ    P,              ;YES, TRA 1,4
+       LSH     W,-6            ;NOPE, TRY AGAIN
+       JRST    .-3             ;...>>
+
+IFN SYMARG,<
+;& SELECTS A SYMBOL RATHER THAN ANUMBER FOR A SWITCH ARGUMENT
+;& MUST ALSO FOLLOW THW SYMBOL; THE FORM IS /&SYMBOL&SWITHCH
+LD10:  TRC     F,ARGFL         ;SET OR CLEAR SPECIAL CHARS.
+       TLCE    F,SSW           ;IF IN SWITCH MODE, EXIT TO GET IDENTIFIER
+       JRST    LD10B
+       PUSHJ   P,ASCR50        ;IF NOT, REENTER IT, CONVERT IDENTIFIER TO R50
+       PUSHJ   P,SDEF          ;AND SEE IF IT EXISTS
+       JRST    LD10A           ;YES IT DOES
+       PUSHJ   P,PRQ           ;NO, COMPLAIN. OUTPUT ?
+       PUSHJ   P,SPACE         ;FOLLOWED BY A SPACE
+       PUSHJ   P,PRNAME        ;FOLLOWED BY THIS SYMBOL
+       ERROR   0,</ DOESN'T EXIST@/>
+       JRST    LD2
+LD10A: MOVE    D,2(A)          ;SET D=VALUE OF SYMBOL AS NUMERIC ARG
+       TLZ     F,DSW!FSW
+       MOVEI   E,6             ;INITIALIZE NEW IDENTIFIER SCAN
+       MOVE    V,LSTPT         ;(W IS ALREADY 0)
+       JRST    LD3             ;NOW EAT SWITCH AND CONTINUE PROCESSING COMMAND
+LD10B: PUSHJ   P,FSCN1         ;FORCE SCAN TO COMPLETION TO MAKE SURE FILE IS LOADED
+       JRST    LD2DA>
+     
+
+
+       IFN SYMARG,<
+;CONVERT SYMBOL IN W TO RADIX-50 IN C
+;ALSO USES A
+ASCR50:        MOVEI   A,0
+R50A:  MOVEI   C,0
+       ROTC    W,6             ;C IS NEXT SIXBIT CHAR
+       CAIGE   C,20
+       JRST    R50B            ;UNDER 20, MAY BE ., $, OR %
+       CAILE   C,31
+       JRST    R50C            ;OVER 31
+       SUBI    C,20-1          ;IS NUMBER
+R50D:  IMULI   A,50
+       ADD     A,C
+       JUMPN   W,R50A          ;LOOP FOR ALL CHARS
+       MOVE    C,A             ;WIND UP WITH CHAR IN C
+       TLO     C,040000        ;MAKE IT GLOBAL DEFINITION
+       POPJ    P,
+R50B:  JUMPE   C,R50D          ;OK IF SPACE
+       CAIE    C,16            ;TEST IF .
+       JRST    .+3             ;NO
+       MOVEI   C,45            ;YES
+       JRST    R50D
+       CAIE    C,4             ;SKIP IF $
+R50E:  MOVEI   C,5             ;ASSUME % IF NOTHING ELSE
+       ADDI    C,42
+       JRST    R50D
+R50C:  CAIGE   C,41
+       JRST    R50E            ;BETWEEN 31 AND 41
+       CAILE   C,72
+       JRST    R50E            ;OVER 72
+       SUBI    C,41-13         ;IS LETTER
+       JRST    R50D>
+
+;DEFINE PUTS A SYMBOL IN THE UNDEFINED SYMBOL TABLE
+;SO LOADER CAN SCAN LIBRARY AND LOAD PROGRAMS BEFORE THEY ARE REQUESTED
+;THE FORM IS /&SYMBOL# WHERE SYMBOL IS CONVERTED TO RADIX-50
+IFN SYMARG,<
+DEFINE:        PUSHJ   P,ASCR50        ;CONVRT TO R-50
+       MOVEI   W,-2(S)         ;WHERE SYMBOL WILL GO
+       CAIG    W,(H)           ;ENOUGH ROOM
+IFN EXPAND,<PUSHJ P,[PUSHJ P,XPAND
+               TLOA    F,FULLSW
+               JRST    POPJM3
+               POPJ    P,]>
+IFE EXPAND,<TLO        F,FULLSW>
+       SUB     S,SE3           ;ADJUST POINTER
+       MOVEM   C,1(S)          ;R-50 SYMBOL
+       SETZM   2(S)            ;VALUE
+       TLZ     F,DSW!SSW       ;TURN OFF SWITCHES
+       JRST    LD2D            ;CONTINUE TO SCAN
+>
+     
+
+SUBTTL TERMINATION
+;LINE TERMINATION <CARRIAGE RETURN>
+
+LD5D:
+IFN PP,<PUSHJ  P,RBRA          ;CHECK FOR UNTERMINATED PP #>
+       SKIPGE  LIMBO           ;WAS LAST CHAR. BEFORE CR A COMMA?
+       TLO     F,DSW           ;YES ,SO LOAD ONE MORE FILE
+       PUSHJ   P,FSCN          ;FORCE SCAN TO COMPLETION
+       JRST    LD2B            ;RETURN FOR NEXT LINE
+
+;TERMINATE LOADING <ALT MODE>
+
+LD5E:  JUMPE   D,LD5E1         ;ENTER FROM G COMMAND
+       TLO     N,ISAFLG        ;AND IGNORE ANY STARTING ADDRESS TO COME
+       HRRZM   D,STADDR        ;USE NUMERIC STARTING ADDRESS
+LD5E1: PUSHJ   P,CRLF          ;START A NEW LINE
+IFN RPGSW,<RELEASE 17,0                ;RELEASE COMMAND DEVICE>
+       PUSHJ   P,SASYM         ;SETUP JOBSA,JOBFF,JOBSYM,JOBUSY
+       MOVE    W,[SIXBIT ?LOADER?]     ;FINAL MESSAGE
+       PUSHJ P,BLTSET          ;SETUP FOR FINAL BLT
+       RELEASE 2,              ;RELEASE AUX. DEV.
+       RELEASE 1,0     ;INPUT DEVICE
+       RELEASE 3,0     ;TTY
+IFN SPCHN,<RELEASE 4,0 ;SPECIAL CHAINING CHANEL>
+IFN NAMESW,<HRRZ       W,HISTRT        ;IN CASE NO NAME SET, USE FIRST LOADED
+       MOVE    W,-1(W)
+       SKIPN   CURNAM
+       PUSHJ   P,LDNAM
+       SKIPE   W,CURNAM
+       CAMN    W,[SIXBIT /MAIN/]       ;FORTRAN MAIN PROG, OR MACRO NO TITLE
+       SKIPE   W,PRGNAM        ;USE BINARY FILE NAME IN EITHER CASE
+       SETNAM  W,                      ;SETNAME>
+IFN L,<JRST @LSPXIT>
+     
+
+IFN PURESW,<
+       MOVE    V,[XWD HHIGO,HIGO]
+       BLT     V,HIGONE        ;MOVE DOWN CODE TO EXIT>
+       TLNN N,EXEQSW   ;DO WE WANT TO START
+       JRST LD5E3
+IFN RPGSW,<TLNN N,RPGF ;IF IN RPG MODE
+       JRST LD5E2
+       HRRZ C,JOBERR   ;CHECK FOR ERRORS
+       JUMPE C,LD5E2   ;NONE
+EXDLTD:        TTCALL 3,[ASCIZ /?EXECUTION DELETED
+/]
+       JRST LD5E3>
+LD5E2: HRRZ W,JOBSA(X)
+       TLNE N,DDSW     ;SHOULD WE START DDT??
+       HRRZ W,JOBDDT(X)
+IFN RPGSW,<    TLNE    N,RPGF  ;IF IN RPG MODE
+       JUMPE   W,[TTCALL 3,[ASCIZ /?NO STARTING ADDRESS
+/]
+               JRST    EXDLTD]>
+       JUMPE   W,LD5E3 ;ANYTHING THERE?
+       TLOA W,(JRST)   ;SET UP A JRST
+LD5E3: SKIPA W,CALLEX  ;NO OR NO EXECUTE, SET CALLI 12
+       TTCALL 3,[ASCIZ /EXECUTION
+/]
+IFN LDAC,<     HRLZ P,BOTACS   ;SET UP FOR ACBLT
+       MOVEM W,JOBBLT+1(X)     ;SET JOBBLT
+       MOVE W,[BLT P,P]
+       MOVEM W,JOBBLT(X)>
+       MOVSI LSTAC,LODACS      ;SET UP TO BLT BLT CODE INTO ACS
+       BLT LSTAC,LSTAC
+IFN KUTSW,<SKIPGE E,CORSZ      ;DO WE WANT CORE ADJUST
+       MOVE CORAC,JFCLAC       ;NO, CLEAR COREUUO>
+IFE LDAC,<MOVE LSTAC,W         ;SET END CONDITION>
+IFN REENT,<
+       MOVSI   V,LD            ;DOES IT HAVE HISEG
+       JUMPG   V,HINOGO        ;NO,DON'T DO CORE UUO
+       MOVSI   V,1             ;SET HISEG CORE NONE ZERO
+       JRST    HIGO            ;AND GO>
+IFE REENT,<JRST 0>
+
+LODACS:        PHASE 0
+       BLT Q,(A)       ;BLT CODE DOWN
+IFN KUTSW,<CORAC:      CORE E, ;CUT BACK CORE
+JFCLAC:        JFCL    ;SHOULD NEVER HAVE AN ERROR SINCE REDUCING CORE>
+LSTAC: IFN LDAC,<JRST JOBBLT>
+IFE LDAC,<EXIT>
+DEPHASE
+     
+
+SUBTTL PRINT FINAL MESSAGE
+; SET UP BLT AC'S, SETDDT, RELEAS
+
+BLTSET:        IFN RPGSW,<IFE K,<
+       JUMPE   W,.+4   ;NO MESSAGE FROM CHAIN IN CCL@>>
+       PUSHJ P,FCRLF   ;A RETURN
+       PUSHJ P,PWORD   ;AND CHAIN OR LOADER
+       PUSHJ P,SPACE
+IFN FAILSW,<MOVSI Q,-20        ;FINISH UP LINK STUFF
+FREND: HLRZ V,LINKTB+1(Q)
+       JUMPE V,NOEND
+       HRRZ A,LINKTB+1(Q)
+IFN REENT,<CAMGE V,HVAL1
+       SKIPA X,LOWX
+       MOVE X,HIGHX>
+IFN L,<CAML V,RINITL>
+       HRRM A,@X       ;PUT END OF LINK CHAIN IN PROPER PLACE
+NOEND: AOBJN Q,FREND
+IFN REENT,<MOVE X,LOWX ;RESET THINGS>>
+IFN KUTSW,<SKIPGE C,CORSZ      ;NEG MEANS DO NOT KUT BACK CORE
+       JRST NOCUT
+       JUMPE C,MINCUT  ;0 IS KUT TO MIN. POSSIBLE
+       LSH C,12        ;GET AS A NUMBER OF WORDS
+       SUBI C,1
+       CAMG C,JOBREL   ;DO WE NEED MORE THAN WE HAVE??
+       JRST TRYSML     ;NO, SEE IF NUMBER REQUESTED IS TOO SMALL
+       MOVEI Q,0
+       CORE Q,
+       JFCL            ;WE JUST WANT TO KNOW HOW MUCH
+       HRRZS Q
+       CAMGE Q,CORSZ
+       JRST CORERR
+       JRST NOCUT1     ;SET FOR DO NOT CHANGE SIZE
+TRYSML:        CAIG C,(R)      ;IS DESIRED AMOUNT BIGGER THAN NEEDED
+MINCUT:        HRRZ C,R        ;GET MIN AMOUNT
+       IORI C,1777     ;CONVERT TO A 1K MULTIPLE
+IFN DMNSW,<    TRNN F,DMNFLG   ;DID WE MOVE SYMBOLS??
+       SKIPN JOBDDT(X) ;IF NOT IS DDT THERE??
+       JRST    .+2>
+IFE DMNSW,<SKIPE JOBDDT(X)     ;IF NO SYMBOL MOVING JUST CHECK DDT>
+       JRST NOCUT      ;DO NOT CUT IF SYMBOLS AT TOP AND DDT
+NOCUT1:        MOVEM C,JOBREL(X)       ;SAVE FOR CORE UUO
+       MOVEM C,CORSZ   ;SAVE AWAY FOR LATER
+       JRST    .+2
+NOCUT: SETOM CORSZ     ;SET FOR NO CUT  BACK>
+IFN RPGSW,<IFE K,<
+       JUMPE   W,NOMAX ;NO MESSAGE IF CHAIN IN CCL@>>
+IFN L,<HRRZ Q,JOBREL
+       SUB Q,OLDJR     ;PROPER SIZE>
+IFE L,<HRRZ Q,JOBREL(X)
+       LSH Q,-12       ;GET CORE SIZE TO PRINT
+       ADDI Q,1
+       PUSHJ P,RCNUM
+IFN REENT,<MOVE Q,HVAL
+       SUB Q,HVAL1
+       HRRZS Q
+       JUMPE   Q,NOHY          ;NO HIGH SEGMENT
+       MOVEI   T,"+"-40        ;THERE IS A HISEG
+       PUSHJ   P,TYPE
+       LSH     Q,-12
+       ADDI    Q,1
+       PUSHJ   P,RCNUM
+NOHY:>>
+       MOVE W,[SIXBIT /K CORE/]
+       PUSHJ P,PWORD
+       PUSHJ P,CRLF
+IFE L,<
+IFN RPGSW,<TLNE N,RPGF 
+       JRST NOMAX      ;DO NOT PRINT EXTRA JUNK IN RPG MODE>
+       MOVE Q,JOBREL
+       LSH Q,-12
+       ADDI Q,1
+       PUSHJ P,RCNUM   ;PRINT MAX LOW CORE SIZE
+IFN REENT,<    SKIPE Q,JOBHRL  ;GET SIZE OF HIGH SEGMENT
+       PUSHJ P,[MOVEI Q,400001(Q) ;CLEAR HIGH ORDER BIT
+               MOVEI T,"+"-40  ;PRINT A HIGH CORE PART
+               PUSHJ P,TYPE
+               LSH Q,-12
+               JRST RCNUM]>
+       MOVE W,[SIXBIT /K MAX/]
+       PUSHJ P,PWORD
+IFN DMNSW,<TRNN F,DMNFLG>
+       SKIPN JOBDDT(X)
+       SKIPA Q,JOBREL(X)>
+       MOVEI Q,1(S)    ;FIND THE AMOUNT OF SPACE LEFT OVER
+       SUB Q,JOBFF(X)
+       PUSHJ P,RCNUM
+       MOVE W,[SIXBIT / WORDS/]
+       PUSHJ P,PWORD
+       MOVE W,[SIXBIT / FREE/]
+       PUSHJ P,PWORD
+       PUSHJ P,CRLF
+NOMAX: MOVE W,JOBDDT(X)
+       SETDDT W,
+IFE TEN30,<HRLI Q,20(X)        ;SET UP BLT FOR CODE
+       HRRI Q,20>
+IFN TEN30,<HRLI Q,JOBDDT(X)
+       HRRI Q,JOBDDT>
+       HRRZ A,R
+       POPJ P,         ;WE HAVE SET R UP BY CLEVER CODE IN SASYM
+IFN KUTSW,<CORERR:     TTCALL 3,[ASCIZ /?NOT ENOUGH CORE
+/]
+       EXIT>
+     
+
+SUBTTL SET UP JOBDAT
+SASYM: TLNN F,NSW
+       PUSHJ P,LIBF    ;SEARCH LIBRARY IF REQUIRED
+       PUSHJ P,FSCN    ;FORCE END OF SCAN
+IFN ALGSW,<MOVE C,[RADIX50 44,%OWN]
+       MOVE    W,%OWN          ;GET VALUE
+       TRNE    F,ALGFL         ;IF ALGOL PROG LOADED
+       PUSHJ   P,SYMPT         ;DEFINE %OWN>
+IFN RPGSW,<HLRE A,S
+       MOVNS A
+       LSH A,-1
+       ADD A,JOBERR
+       HRRM A,JOBERR>
+       PUSHJ P,PMS1    ;PRINT UNDEFS
+       HRRZ A,H        ;DO NOT CLOBBER H IF STILL INSERTING SYMBOLS
+       SUBI A,(X)      ;HIGHEST LOC LOADED INCLUDES LOC STMTS
+       CAILE A,(R)     ;CHECK AGAINST R
+       HRR R,A         ;AND USE LARGER
+IFE L,<        HRRZ    A,STADDR        ;GET STARTING ADDRESS
+       HRRM    A,JOBSA(X)      ;STORE STARTING ADDRESS
+       HRRZM R,JOBFF(X)        ;AND CURRENT END OF PROG
+       HRLM R,JOBSA(X)>
+IFN DMNSW,<MOVE C,[RADIX50 44,PAT..]   ;MARK PATCH SPACE FOR RPG
+       MOVEI W,(R)
+       SKIPE   JOBDDT(X)               ;BUT ONLY IF DDT LOADED
+       PUSHJ P,SYMPT
+IFN REENT,<TRNE        F,HISYM         ;SHOULD SYMBOLS GO IN HISEG?
+       JRST    BLTSYM          ;YES>>
+IFN DMNSW!LDAC,<               ;ONLY ASSEMBLE IF EITHER SET
+IFE LDAC,<     TRNN F,DMNFLG   ;GET EXTRA  SPACE IF SYMBOLS
+       JRST    NODDT   ;MOVED OR IF LOADING ACS>
+IFE DMNSW,<    MOVEI A,20      ;FOR LOADING ACS>
+IFN DMNSW,<    MOVE A,KORSP
+IFN LDAC,<     TRNN F,DMNFLG   ;ONLY 20 IF SYMBOLS NOT MOVED
+       MOVEI A,20>>
+       ADDI A,(R)      ;GET ACTUAL PLACE TO PUT END OF SPACE
+       ADDI A,(X)
+       CAIL A,(S)      ;DO NOT OVERWRITE SYMBOLS
+IFN EXPAND,<JRST [PUSHJ P,XPAND>
+               PUSHJ P,MORCOR
+IFN EXPAND,<   JRST .-1]>
+IFN LDAC,<HRRM R,BOTACS        ;SAVE BOTTOM OF WHERE WE PUT ACS
+       HRRZ A,R
+       ADDI A,(X)
+       HRL A,X ;SET UP BLT FROM (X) TO R(X)
+       MOVEI Q,17(A)
+       BLT A,(Q)>>
+IFN DMNSW,<TRNN F,DMNFLG       ;NOW THE CODE TO MOVE SYMBOLS
+       JRST NODDT
+       HRRZ A,R
+       ADD A,KORSP
+       MOVE W,A        ;SAVE POINTER TO FINAL LOC OF UNDEFS
+       ADDI A,(X)
+       HLLZ Q,S        ;COMPUTE LENGTH OF SYMBOL TABLE
+       ADD Q,B
+       HLROS Q
+       MOVNS Q
+       ADDI Q,-1(A)    ;GET PLACE TO STOP BLT
+       HRLI A,1(S)     ;WHERE TO BLT FROM
+       SUBI W,1(S)     ;GET AMOUNT TO CHANGE S AND B BY
+       BLT A,(Q)       ;MOVE SYMBOL TABLE
+       ADD S,W
+       ADD B,W ;CORRECT S AND B FOR MOVE
+       SKIPN JOBDDT(X) ;IS DDT LOADED
+       JRST NODDT      ;NO DO NOT RESET R
+       HRRI R,1(Q)     ;SET R TO POINT TO END OF SYMBOLS
+       SUBI R,(X)
+       HRRM R,JOBFF(X)
+       HRLM R,JOBSA(X) ;AND SAVE AWAY NEW JOBFF
+IFN LDAC,<SKIPA>       ;SKIP THE ADD TO R
+NODDT:>
+IFN LDAC,<ADDI R,20>   ;MAKE SURE R IS CORRECT FOR BLT
+       MOVE A,B
+       ADDI A,1        ;SET UP JOBSYM, JOBUSY
+IFE L,<MOVEM A,JOBSYM(X)>
+IFN L,<MOVEM A,JOBSYM>
+       MOVE A,S
+       ADDI A,1
+IFE L,<MOVEM A,JOBUSY(X)
+       MOVE A,HISTRT   ;TAKE POSSIBLE REMAP INTO ACCOUNT
+       MOVEM A,JOBREL(X)       ;SET UP FOR IMEDIATE EXECUTION>
+IFN L,<MOVEM A,JOBUSY>
+IFN REENT,<
+       SKIPE A,HILOW   ;SET UP TOP LOC OF LOW CORE EXCLUDING BLOCKS
+       SUBI A,1(X)     ;IF NON-ZERO THEN IT NEEDS RELOCATION
+       HRLM A,JOBCOR(X)
+       TRNN F,SEENHI
+       POPJ P,
+       HRRZ A,HVAL
+       HRRM A,JOBHRL(X)
+       SUB A,HVAL1
+       HRLM A,JOBHRL(X)>
+       POPJ P,
+
+     
+
+SUBTTL BLT SYMBOL TABLE INTO HIGH SEGMENT
+IFN DMNSW&REENT,<
+BLTSYM:        MOVE    Q,HVAL  ;GET ORIGIN OF HISEG
+       CAMN    Q,HVAL1 ;HAS IT CHANGED?
+       JRST    NOBLT   ;NO
+       HLLZ    Q,S     ;COMPUTE LENGTH OF SYMBOL TABLE
+       HLRS    S       ;PUT NEG COUNT IN BOTH HALVES
+       JUMPE   S,.+2   ;SKIP IF S IS ZERO
+       HRLI    S,-1(S) ;SUB 1 FROM LEFT TO FIX CARRY PROBLEM
+       ADD     Q,B
+       HLROS   Q
+       MOVNS   Q
+       ADD     Q,HVAL  ;ADD LENGTH OF HISEG
+       SUB     Q,HVAL1 ;BUT REMOVE ORIGIN
+       ADD     Q,HISTRT        ;START OF HISEG IN CORE
+       HRRZS   Q       ;CLEAR INDEX FROM Q
+       ADD     Q,KORSP ;SAVE SPACE FOR SYMBOL PATCHES
+       CORE    Q,      ;EXPAND IF NEEDED
+       PUSHJ   P,MORCOR
+       PUSH    P,B     ;SAVE B
+       SOJ     B,      ;REMOVE CARRY FROM ADD TO FOLLOW
+       MOVSS   B       ;SWAP SYMBOL POINTER
+       ADD     B,JOBREL
+       HRRM    B,(P)   ;SAVE NEW B
+       MOVE    Q,JOBREL
+       ADD     B,S     ;INCASE ANY UNDEFS.
+       BLT     B,(Q)   ;MOVE SYMBOLS
+       POP     P,B     ;GET NEW B
+       SUB     B,HISTRT
+       ADD     B,HVAL1
+       SOJ     B,      ;REMOVE CARRY
+       ADDI    S,(B)   ;SET UP JOBUSY
+BLTSY1:        MOVE    Q,JOBREL
+       SUB     Q,HISTRT
+       ADD     Q,HVAL1
+       SUBI    Q,1     ;ONE TOO HIGH
+       MOVEM   Q,HVAL
+       JRST    NODDT
+
+     
+
+NOBLT: HRRZ    Q,HILOW ;GET HIGHEST LOC LOADED
+       HRRZ    A,S     ;GET BOTTOM OF UNDF SYMBOLS
+       SUB     A,KORSP ;DON'T FORGET PATCH SPACE
+       IORI    A,1777  ;MAKE INTO A K BOUND
+       IORI    Q,1777
+       CAIN    A,(Q)   ;ARE THEY IN SAME K
+IFN EXPAND,<JRST       [PUSHJ  P,XPAND>
+               PUSHJ   P,MORCOR
+IFN EXPAND,<   JRST    NOBLT]>
+       MOVEM   Q,HISTRT        ;SAVE AS START OF HIGH
+       MOVEI   A,400000        ;HISEG ORIGIN
+       MOVEM   A,HVAL1         ;SAVE AS ORIGIN
+       SUB     S,HISTRT        ;GET POSITION OF UNDF POINTER
+       ADDI    S,377777        ;RELATIVE TO ORG
+       SUB     B,HISTRT        ;SAME FOR SYM POINTER
+       ADDI    B,377777
+       TRO     F,SEENHI        ;SO JOBHRL WILL BE SET UP
+       JRST    BLTSY1          ;AND USE COMMON CODE
+>
+
+IFN DMNSW!LDAC,<
+MORCOR:        ERROR ,</MORE CORE NEEDED#/>
+       EXIT>
+     
+
+SUBTTL WRITE CHAIN FILES
+
+IFE K,<                        ;DONT INCLUDE IN 1KLOAD
+CHNC:  SKIPA   A,JOBCHN(X)     ;CHAIN FROM BREAK OF FIRST BLOCK DATA
+CHNR:  HLR     A,JOBCHN(X)     ;CHAIN FROM BREAK OF FIRST F4 PROG
+IFN ALGSW,<TRNE        F,ALGFL         ;IF ALGOL LOADING
+       POPJ    P,              ;JUST RETURN>
+       HRRZS   A               ;ONLY RIGHT HALF IS SIGNIFICANT
+       JUMPE   A,LD7C          ;DON'T CHAIN IF ZERO
+       TLNN    N,AUXSWI        ;IS THERE AN AUX DEV?
+       JRST    LD7D            ;NO, DON'T CHAIN
+       PUSH    P,A             ;SAVE WHEREFROM TO CHAIN
+       JUMPE   D,.+2           ;STARTING ADDR SPECIFIED?
+       HRRZM   D,STADDR        ;USE IT
+       CLOSE   2,              ;INSURE END OF MAP FILE
+       TLZ     N,AUXSWI+AUXSWE ;INSURE NO PRINTED OUTPUT
+       PUSHJ   P,SASYM         ;DO LIB SEARCH, SETUP JOBSA, ETC.
+IFN RPGSW,<TLNE        N,RPGF          ;IF IN CCL MODE
+       TDZA    W,W             ;NO MESSAGES>
+       MOVE    W,[SIXBIT ?CHAIN?]      ;FINAL MESSAGE
+       PUSHJ   P,BLTSET        ;SETUP BLT PNTR, SETDDT, RELEAS
+       POP     P,A             ;GET WHEREFROM
+       HRRZ    W,R             ;CALCULATE MIN IOWD NECESSARY
+       SKIPE   JOBDDT(X)       ;IF JOBDDT KEEP SYMBOLS
+       CAILE   W,1(S)
+       JRST    CHNLW1
+       HRRZ    W,JOBREL        ;NEED SYMBOLS AND THEY HAVE NOT MOVED DOWN
+       SUBI    W,(X)           ;BECAUSE WE WILL NOT HAVE BLITTED
+       SUBI    B,-1(X)         ;SYMBOL TABLE WILL COME OUT IN A
+       MOVEM   B,JOBSYM(X)     ;DIFFERENT PLACE
+CHNLW1:        MOVNS   W
+       ADDI    W,-7(A)
+       ADDI    A,-7(X)
+       PUSH    A,W     ;SAVE LENGTH
+       HRLI    W,-1(A)
+       MOVSM   W,IOWDPP        ;...
+       SETZM   IOWDPP+1        ;JUST IN CASE
+       PUSH    A,JOBCHN(X)
+       PUSH    A,JOBSA(X)      ;SETUP SIX WORD TABLE
+       PUSH    A,JOBSYM(X)     ;...
+       PUSH    A,JOB41(X)
+       PUSH    A,JOBDDT(X)
+       SETSTS  2,17            ;SET AUX DEV TO DUMP MODE
+       MOVSI   W,435056        ;USE .CHN AS EXTENSION
+       MOVEM   W,DTOUT1        ;...
+       PUSHJ   P,IAD2          ;DO THE ENTER
+       OUTPUT  2,IOWDPP        ;WRITE THE CHAIN FILE
+       STATZ   2,IOBAD!IODEND
+       JRST    LOSEBIG
+       CLOSE   2,
+       STATZ   2,IOBAD!IODEND
+IFN RPGSW,<JRST        LOSEBIG
+       TLNE    N,RPGF          ;IF IN CCL MODE
+       JRST    CCLCHN          ;LOAD NEXT LINK
+       EXIT>
+LOSEBI:        TTCALL  3,[ASCIZ /?DEVICE ERROR/]
+       EXIT>
+     
+
+SUBTTL SPECIAL CHAINB
+IFE SPCHN,<    XLIST   >
+IFN SPCHN,<
+CHNBG:
+       PUSHJ   P,FSCN1A                ;FORCE SCAN TO COMPLETION FOR CURRENT FILE
+       TLNN N,AUXSWI   ;IS THERE AN AUX DEV??
+       JRST LD7D
+       HRLZI   W,-1(R)         ;CHNTAB-L = ADDRESS OF VECTOR TABLE
+       HRRI    W,1             ;CHNTAB-R = NEXT DISK BLOCK TO RITE INTO
+       MOVEM   W,CHNTAB
+       MOVE    C,[RADIX50 4,OVTAB]     ;DEFINE GLOBAL SYMBOL OVTAB
+       MOVEI   W,(R)           ;TO HAVE VALUE THE BEGINNING OF THE VECTOR TABLE
+       PUSHJ   P,SYMPT
+       ADDI    R,VECLEN        ;RESERVE SPACE FOR VECTOR TABLE
+       MOVE    C,[RADIX50 4,OVBEG]     ;OVBEG IS BEGINNING OF OVERLAY AREA
+       MOVEI   W,(R)
+       PUSHJ   P,SYMPT
+       HRRZM   R,BEGOV         ;AND SAVE IN OVBEG
+       OPEN    4,CHNOUT        ;OPEN FILE FOR CHAIN
+       JRST    ILD5            ;CANT OPEN CHAIN FILE
+       ENTER   4,CHNENT        ;ENTER CHAIN FILE
+       JRST    IMD3            ;NO CAN DO
+       HRRZ    W,N
+       SUB     W,HISTRT        ;KEEP N RIGHT HALF AS RELATIVE TO HISTRT
+       HRRZM W,CHNACN  ;SAVE FOR RESTORING
+       MOVEM B,CHNACB  ;ALSO B R IS SAVED IN BEGOV
+       POPJ    P,
+
+CHNENS:        TLOA N,PPCSW    ;THIS FLAG UNUSED AT THIS POINT
+CHNEN: TLZ N,PPCSW     ;ON TO NOT DELETE NEW SYMBOLS
+       SKIPN CHNACB    ;WILL BE NON-ZERO IF WE SAW A /<  (> TO KEEP  MACRO HAPPY)
+       JRST LD7D       ;ERROR MESSAGE
+       PUSHJ P,FSCN1A          ;LOAD LIB (IF DESIRED) AND FORCE SCAN
+       SKIPL Q,S       ;CHECK SYMBOL TABLE FOR MISSED UNDEFS
+       JRST NOER       ;NONE THERE
+       MOVEI E,0       ;COUNT OF ERRORS
+ONCK:
+       IFN FAILSW,<SKIPL V,1(Q)        ;IF HIGH ORDER BIT IS ON
+       TLNN V,740000   ;OR IF ALL CODE BITS 0
+       JRST NXTCK      ;THEN NOT TO BE CHECKED>
+       MOVE V,2(Q)     ;GET FIXUP WORD
+       TLNE V,100000   ;BIT INDICATES SYMBOL TABLE FIXUP
+       JRST SMTBFX
+IFN FAILSW,<TLNE V,40000       ;BIT INDICATES POLISH FIXUP
+       JRST POLCK>
+       TLZE V,740000   ;THESE BITS WOULD MEAN ADDITIVE
+       JRST    [JSP A,CORCKL
+               JRST NXTCK]     ;ONLY TRY FIRST LOCATION
+CORCK: JSP A,CORCKL
+       HRRZ V,@X       ;THE WAY TO LINK
+CORCKL:        IFN REENT,<CAMGE V,HVAL1>
+       CAMGE V,BEGOV
+       SKIPA   ;NOT IN BAD RANGE
+       JRST ERCK       ;BAD, GIVE ERROR
+       JUMPE V,NXTCK   ;CHAIN HAS RUN OUT
+IFN REENT,<CAMGE V,HVAL1       ;GET CORRECT LINK
+       SKIPA X,LOWX
+       MOVE X,HIGHX>
+       XCT (A)         ;TELLS US WHAT TO DO
+       JRST CORCKL     ;GO ON WITH NEXT LINK
+     
+
+SMTBFX:        TLNE N,PPCSW    ;IF NOT CUTTING BACK SYMBOL TABLE
+       JRST NXTCK      ;THE ALL OK
+       ADD V,HISTRT    ;GET PLACE TO POINT TO
+       HRRZS V
+       HLRE D,CHNACB   ;OLD LENGTH OF TABLE (NEGATIVE)
+       HLRE T,B        ;NEW LENGTH
+       SUB D,T         ;-OLD LEN+NEW LEN
+       ADDI D,(B)      ;OLD BOTTOM=NEW BOTTOM+NEW LEN-OLD LEN
+       CAIG V,(D)      ;IS IT IN THE PART WE ARE KEEPING
+       JRST ERCK
+       JRST NXTCK      ;YES
+IFN FAILSW,<POLCK:     HLRZ C,V        ;FIND HEADER
+       PUSHJ P,SREQ
+       SKIPA
+       JRST LOAD4A     ;SHOULD BE THERE
+       HRL C,2(A)      ;NOW FIRST OPERATOR (STORE)
+       MOVSS C
+       PUSHJ P,SREQ
+       SKIPA
+       JRST LOAD4A
+       ANDI C,37       ;GET OPERATION
+       HRRZ V,2(A)     ;DESTINATION
+       JRST @CKSMTB-15(C)      ;DISPATCH
+CKSMTB:        EXP SMTBFX,SMTBFX,SMTBFX,CORCK,LCORCK,CORCK,NXTCK
+LCORCK:        JSP A,CORCKL
+       HLRZ V,@X>
+ERCK:  MOVE C,1(Q)     ;GET SYMBOL NAME
+       PUSHJ P,FCRLF   ;FORCE CRLF AND OUTPUT ON TTY
+       PUSHJ P,PRNAME  ;PRINT IT
+       ADDI E,1        ;MARK ERROR
+NXTCK: ADD Q,SE3       ;TRY ANOTHER
+       JUMPL Q,ONCK
+IFN REENT,<PUSHJ P,RESTRX      ;GET PROPER X BACK>
+       JUMPE E,NOER    ;DID ANYTHING GO WRONG??
+       ERROR   ,</UNDEFINED GLOBAL(S) IN LINK@/>
+       JRST LD2        ;GIVE UP
+NOER:  MOVE A,BEGOV    ;GET START OF OVERLAY
+       ADDI A,(X)      ;GET ACTUAL CURRENT LOCATION
+IFN REENT,<HRRZ W,HILOW        ;AND END OF OVERLAY+1
+       HRRZM A,HILOW   ;RESET>
+IFE REENT,<HRRZ W,R
+       ADDI R,(X)      ;A GOOD GUESS>
+       SUBM A,W        ;W=-LENGTH
+       SUBI A,1        ;SET TO BASE-1 (FOR IOWD)
+       HRL A,W         ;GET COUNT
+       MOVEM A,IOWDPP
+       HRR A,CHNTAB    ;BLOCK WE ARE WRITING ON
+       HLRZ V,CHNTAB   ;POINTER TO SEGMENT TABLE
+       ADDI V,1        ;NEXT LOCATION
+       HRLM V,CHNTAB   ;REMEMBER IT
+       CAML V,BEGOV    ;CHECK FOR OVERRUN
+       JRST    [ERROR </?TOO MANY LINKS@/>
+               JRST LD2];GIVE UP
+       MOVEM A,@X      ;PUT INTO TABLE
+       MOVN W,W        ;GET POSITIVE LENGTH
+       ADDI W,DSKBLK-1
+       IDIVI W,DSKBLK  ;GET NUMBER OF BLOCKS
+       ADDM W,CHNTAB   ;AND UPDATE
+       TLZE N,PPCSW
+       JRST NOMVB      ;DO NOT ADJUST SYMBOLS
+       HLRE W,CHNACB   ;GET OLD LENGTH OF DEF SYMBOLS
+       HLRE C,B        ;AND NEW LENGTH
+       SUB W,C         ;-OLD LEN+NEW LEN
+       HRRZ C,B        ;SAVE POINTER TO CURRENT S
+       ADD S,W
+       HRL W,W
+       ADD B,W         ;UPDATE B (COUNT AND LOC)
+       JUMPGE S,UNLNKD ;JUST IN CASE NOTHING TO MOVE
+       HRRZ A,B        ;PLACE TO PUT UNDEFS
+UNLNK: MOVE W,(C)
+       MOVEM W,(A)     ;TRANSFER
+       SUBI A,1
+       CAIE A,(S)      ;HAVE WE MOVED LAST WORD??
+       SOJA C,UNLNK    ;NO, CONTINUE
+UNLNKD:        HRRZ W,CHNACN   ;GET SAVED N
+       ADD W,HISTRT
+       HRR N,W ;AND RESET IT
+NOMVB: HRR R,BEGOV     ;PICK UP BASE OF AREA
+       OUTPUT 4,IOWDPP ;DUMP IT
+       STATZ 4,IOBAD!IODEND    ;AND ERROR CHECK
+       JRST LOSEBI
+       HRRZ V,R        ;GET AREA TO ZERO
+       MOVEI W,@X
+       CAIL W,1(S)     ;MUST MAKE SURE SOME THERE
+       POPJ P, ;DONE
+       SETZM (W)
+       CAIL W,(S)
+       POPJ P,
+       HRLS W
+       ADDI W,1
+       BLT W,(S)       ;ZERO WORLD
+       POPJ P,
+>
+       LIST
+     
+
+SUBTTL EXPAND CORE
+
+IFN EXPAND,<
+XPAND: TLNE    F,FULLSW        ;IF CORE  EXCEEDED
+       POPJ    P,              ;DON'T WASTE TIME  ON  CORE UUO
+       PUSH    P,Q
+       HRRZ    Q,JOBREL
+       ADDI    Q,2000
+XPAND1:        PUSH P,H        ;GET SOME REGISTERS TO USE
+       PUSH P,X
+       PUSH P,N
+       PUSH    P,JOBREL        ;SAVE PREVIOUS SIZE
+       CAMG    Q,ALWCOR        ;CHECK TO SEE IF RUNNING OVER
+       CORE Q,
+       JRST XPAND6
+IFE K,<        HRRZ H,MLTP     ;GET LOWEST LOCATION
+       TLNN N,F4SW     ;IS FORTRAN LOADING>
+       MOVEI H,1(S)    ;NO, USE S
+       POP     P,X     ;LAST JOBREL
+       HRRZ    Q,JOBREL;NEW JOBREL
+       SUBI    Q,(X)   ;GET DIFFERENCE
+       HRLI    Q,X     ;PUT X IN INDEX FIELD
+XPAND2:        MOVE N,(X)
+       MOVEM N,@Q
+       CAMLE X,H       ;TEST FOR END
+       SOJA X,XPAND2
+       HRLI    H,-1(Q)
+       TLC     H,-1    ;MAKE IT NEGATIVE
+       SETZM (H)       ;ZERO NEW CORE
+       AOBJN H,.-1
+       MOVEI H,(Q)
+XPAND8:        ADD     S,H
+       ADD     B,H
+       ADDM H,HISTRT   ;UPDATE START OF HISEG
+IFN REENT,<ADDM H,HIGHX        ;AND STORE LOCATION
+       TLNE F,HIPROG
+       ADDM H,-1(P)    ;X IS CURRENTLY IN THE STACK>
+       POP P,N
+       ADD N,H
+IFE K,<        TLNN N,F4SW     ;F4?
+       JRST    XPAND3
+       ADDM H,PLTP
+       ADDM H,BITP
+       ADDM H,SDSTP
+       ADDM H,MLTP
+       TLNE N,SYDAT
+       ADDM H,V>
+XPAND3:        AOSA -3(P)
+XPAND5:        POP P,N
+       POP P,X
+       POP P,H
+       POP     P,Q
+       POPJ P,
+     
+
+
+XPAND6:        POP     P,A     ;CLEAR JOBREL OUT OF STACK
+       ERROR   ,</MORE CORE NEEDED#/>
+       JRST XPAND5
+
+XPAND7:        PUSHJ   P,XPAND
+       JRST    SFULLC
+       JRST    POPJM2
+
+XPAND9:        PUSH    P,Q             ;SAVE Q
+       HRRZ    Q,JOBREL        ;GET CORE SIZE
+       ADDI    Q,(V)           ;ADD XTRA NEEDED
+       JRST    XPAND1          ;AND JOIN COMMON CODE
+
+POPJM3:        SOS     (P)             ;POPJ TO CALL-2
+POPJM2:        SOS     (P)             ;POPJ TO CALL-1
+       SOS     (P)             ;SAME AS POPJ TO
+       POPJ    P,              ;NORMAL POPJ MINUS TWO
+>
+
+     
+
+SUBTTL SWITCH HANDLING
+
+;ENTER SWITCH MODE
+
+LD6A:  CAIN    T,57            ;WAS CHAR A SLASH?
+       TLO     N,SLASH         ;REMEBER THAT
+LD6A2: TLO     F,SSW           ;ENTER SWITCH MODE
+LD6A1: SETZB   D,C     ;ZERO TWO REGS FOR DECIMAL AND OCTAL
+       JRST    LD3             ;EAT A SWITCH
+
+;ALPHABETIC CHARACTER, SWITCH MODE
+
+LD6:
+       CAIL    T,141           ;ACCEPT LOWER CASE SWITCHES
+       SUBI    T,40
+IFN SPCHN,<XCT LD6B-74(T)      ;EXECUTE SWITCH FUNCTION>
+IFE SPCHN,<XCT LD6B-101(T)     ;EXECUTE SWITCH FUNCTION>
+       TLZE    N,SLASH ;SWITCH MODE ENTERED W/ SLASH?
+       JRST    LD6D            ;LEAVE SWITCH MODE
+       JRST    LD6A1           ;STAY IN SWITCH MODE
+
+     
+
+;DISPATCH TABLE FOR SWITCHES
+
+;      THE INSTRUCTION AT THE CHARACTER LOCATION IS EXECUTED
+
+LD6B:
+IFN SPCHN,<PUSHJ P,CHNBG       ;LESS THAN - BEGINNING OF OVERLAY
+       PUSHJ   P,CHNENS        ;= - PUT OUT CHAIN RETAINING SYMBOLS
+       PUSHJ   P,CHNEN         ;GREATER THAN - END OF OVERLAY
+       JRST    LD7B            ;? - ERROR
+       JRST    LD7B            ;@ - ERROR>
+       PUSHJ   P,ASWTCH        ;A - LIST ALL GLOBALS
+IFN DMNSW,<PUSHJ P,DMN2                ;B - BLOCKS DOWN SYMBOL TABLE >
+IFE DMNSW,<JRST        LD7B            ;B - ERROR>
+IFE K,<        PUSHJ   P,CHNC          ;C - CHAIN, START W/ COMMON>
+IFN K,<        JRST    LD7B            ;C - ILLEGAL IN 1KLOAD>
+       PUSHJ   P,LDDT          ;D - DEBUG OPTION, LOAD DDT
+       TLO     N,EXEQSW        ;E - LOAD AND GO
+       PUSHJ    P,LIBF         ;F - LIBRARY SEARCH
+       PUSHJ    P,LD5E         ;G - GO INTO EXECUTION
+IFN REENT,<PUSHJ P,HSET                ;H - REENTRANT. PROGRAM>
+IFE REENT,<JFCL                        ;JUST IGNORE /H>
+       PUSHJ   P,ISWTCH        ;I - IGNORE STARTING ADDRESSES
+       TLZ     N,ISAFLG        ;J - USE STARTING ADDRESSES
+IFE KUTSW,<JRST        LD7B            ;K - ERROR>
+IFN KUTSW,<MOVEM C,CORSZ       ;K - SET DESIRED CORE SIZE>
+       PUSHJ   P,LSWTCH        ;L - ENTER LIBRARY SEARCH
+       PUSHJ   P,PRMAP         ;M - PRINT STORAGE MAP
+       TLZ     F,LIBSW+SKIPSW  ;N - LEAVE LIBRARY SEARCH
+       HRR     R,D             ;O - NEW PROGRAM ORIGIN
+       PUSHJ   P,PSWTCH        ;P - PREVENT AUTO. LIB. SEARCH
+       TLZ     F,NSW           ;Q - ALLOW AUTO. LIB. SEARCH
+IFE K,<        PUSHJ   P,CHNR          ;R - CHAIN, START W/ RESIDENT>
+IFN K,<        JRST    LD7B            ;R - ILLEGAL IN 1KLOAD>
+       PUSHJ   P,SSWTCH        ;S - LOAD WITH SYMBOLS
+       PUSHJ   P,LDDTX         ;T - LOAD AND GO TO DDT
+       PUSHJ   P,PMS           ;U - PRINT UNDEFINED LIST
+IFN REENT,<PUSHJ P,VSWTCH      ;V - LOAD REENTRANT LIB40>
+IFE REENT,<JRST        LD7B            ;V - ERROR>
+       TLZ     F,SYMSW+RMSMSW  ;W - LOAD WITHOUT SYMBOLS
+       TLZ     N,ALLFLG        ;X - DO NOT LIST ALL GLOBALS
+       TLO     F,REWSW         ;Y - REWIND BEFORE USE
+       JRST    LDRSTR          ;Z - RESTART LOADER
+
+     
+
+; PAIRED SWITCHES ( +,-)
+
+ASWTCH:        JUMPL   D,.+2           ;SKIP IF /-A
+       TLOA    N,ALLFLG        ;LIST ALL GLOBALS
+       TLZ     N,ALLFLG        ;DON'T
+       POPJ    P,
+
+ISWTCH:        JUMPL   D,.+2           ;SKIP IF /-I
+       TLOA    N,ISAFLG        ;IGNORE STARTING ADDRESSES
+       TLZ     N,ISAFLG        ;DON'T
+       POPJ    P,
+
+LSWTCH:        JUMPL   D,.+2           ;SKIP IF /-L
+       TLOA    F,LIBSW!SKIPSW  ;ENTER LIBRARY SEARCH
+       TLZ     F,LIBSW!SKIPSW  ;DON'T
+       POPJ    P,
+
+PSWTCH:        JUMPL   D,.+2           ;SKIP IF /-P
+       TLOA    F,NSW           ;PREVENT AUTO. LIB SEARCH
+       TLZ     F,NSW           ;ALLOW
+       POPJ    P,
+
+SSWTCH:        JUMPL   D,.+2           ;SKIP IF /-S
+       TLOA    F,SYMSW!RMSMSW  ;LOAD WITH SYMBOLS
+       TLZ     F,SYMSW!RMSMSW  ;DON'T
+       POPJ    P,
+
+IFN REENT,<
+VSWTCH:        JUMPL   D,.+2           ;SKIP IF /-V
+       TROA    F,VFLG          ;SEARCH RE-ENTRANT LIBRARY
+       TRZ     F,VFLG          ;DON'T
+       POPJ    P,>
+     
+
+IFN REENT,<
+; H SWITCH --- EITHER /H OR /NH
+HSET:  JUMPE   D,SETNUM        ;/H ALWAYS LEGAL
+       CAIGE   D,2             ;WANT TO CHANGE SEGMENTS
+       JRST    SETSEG          ;YES,GO DO IT
+       TRNN    F,SEENHI        ;STARTED TO LOAD YET?
+       JRST    HCONT           ;NO, CONTINUE.
+       ERROR   ,<?/H ILLEGAL AFTER FIRST HISEG FILE IS LOADED@?>>
+
+LDRSTR:        ERROR   0,</LOADER RESTARTED@/>
+       JRST    LD              ;START AGAIN
+IFN REENT,<
+REMPFL:        ERROR   ,</?LOADER REMAP FAILURE@/>
+       JRST LDRSTR
+HCONT: HRRZ C,D
+       ANDCMI C,1777
+       CAIL C,400000
+       CAIG C,(H)
+       JRST COROVL     ;BEING SET LOWER THEN 400000 OR MORE THAN TO OF LOW SEG
+       HRRZM C,HVAL1   ;WE HAVE REMOVED THE ODD BITS TO MAKE A 1K MULT
+       ADDI C,JOBHDA
+       CAILE C,(D)     ;MAKE SURE OF ENOUGH ROOM
+       MOVE D,C
+       HRLI D,W        ;SET UP W IN LEFT HALF
+       MOVEM D,HVAL
+       POPJ    P,      ;RETURN.
+
+COROVL:        ERROR   ,</HISEG STARTING ADDRESS TOO LOW@/>
+       JRST LDRSTR
+SETNUM:        TRO     F,NOHI  ;SET NO-HIGH-SEG SWITCH.
+       POPJ    P,>
+     
+
+;SWITCH MODE NUMERIC ARGUMENT
+
+LD6C:  LSH     D,3             ;BUILD OCTAL NUMERIC ARGUMENT
+       ADDI    D,-60(T)
+       IMULI C,↑D10
+       ADDI C,-"0"(T)  ;ACCUMULATE DEC AND OCTAL
+       JRST    LD3
+
+;EXIT FROM SWITCH MODE
+
+LD6D:  TLZ     F,SSW           ;CLEAR SWITCH MODE FLAG
+       TLNE    F,FSW           ;TEST FORCED SCAN FLAG
+       JRST    LD2D            ;SCAN FORCED, START NEW IDENT.
+       JRST    LD3             ;SCAN NOT FORCED, USE PREV IDENT
+;ILLEGAL CHARACTER, NORMAL MODE
+
+LD7:   IFN SYMARG,<
+       CAIN    T,"#"           ;DEFINING THIS SYMBOL
+       JRST    DEFINE          ;YES 
+       TRNN    F,ARGFL         ;TREAT AS SPECIAL
+       JRST    .+4             ;NO
+       CAIE    T,"$"
+       CAIN    T,"%"
+       JRST    LD4             ;YES>
+       CAIN    T,"Z"-100       ;TEST FOR â†‘Z
+       JRST    LD5E1           ;TREAT AS ALTMODE FOR BATCH
+       ERROR   8,</CHAR.%/>
+       JRST    LD2     ;TRY TO CONTINUE
+
+;SYNTAX ERROR, NORMAL MODE
+
+LD7A:  ERROR   8,</SYNTAX%/>
+       JRST    LD2
+
+;ILLEGAL CHARACTER, SWITCH MODE
+
+LD7B:  CAIN T,"-"      ;SPECIAL CHECK FOR -
+       JRST    [SETOB C,D
+               JRST LD3]
+       CAIN    T,"Z"-100       ;CHECK FOR /↑Z
+       JRST    LD5E1           ;SAME AS â†‘Z
+       ERROR   8,</SWITCH%/>
+       JRST    LD2
+     
+
+;ATTEMPT TO CHAIN WITH SPECIFIED HALF OF JOBCHN = 0
+
+IFE K,<
+LD7C:  ERROR   ,<?UNCHAINABLE AS LOADED@?>
+       JRST    LD2
+
+;ATTEMP TO CHAIN WITHOUT SPECIFYING DEVICE
+
+LD7D:  ERROR   ,<?NO CHAIN DEVICE@?>
+       JRST    LD2>
+
+IFN DMNSW,<
+DMN2:
+IFN ALGSW,<TRNE        F,ALGFL         ;IF LOADING ALGOL
+       POPJ    P,              ;JUST RETURN>
+       CAIN    D,1             ;SPECIAL CASE
+       TROA    F,HISYM         ;YES ,BLT SYMBOLS INTO HISEG
+       JUMPL   D,.+2
+       TROA    F,DMNFLG        ;TURN ON /B
+IFN KUTSW,<TRZA        F,DMNFLG        ;TURN OFF IF /-B
+       SETZM   CORSZ           ;SET TO CUT BACK CORE>
+IFE KUTSW,<TRZ F,DMNFLG        ;TURN OFF IF /-B>
+       CAMLE D,KORSP
+       MOVEM D,KORSP
+       POPJ    P,               ;RETURN>
+
+     
+
+SUBTTL CHARACTER CLASSIFICATION TABLE DESCRIPTION:
+
+;      EACH CHARACTER HAS ASSOCIATED WITH IT A FOUR BIT BYTE
+;      PACKED IN THE CHARACTER CLASSIFICATION TABLE.  THE CHARACTER
+;      CLASSIFICATION CODES ARE ORDERED IN SUCH A WAY AS TO GIVE
+;      DELIMITERS OF HIGHER PRECEDENCE LOWER CLASSIFICATION NUMBERS.
+;      CERTAIN CHARACTERS HAVE NO EFFECT ON THE COMMAND STRING, AND
+;      THEREFORE DO NOT EFFECT ORDERING OF DELIMITERS.  FOUR CODES
+;      ARE RESERVED FOR ALTERNATE DISPATCHES WHILE THE SWITCH MODE IS
+;      IN EFFECT.
+
+
+;CLASSIFICATION BYTE CODES:
+
+;      BYTE DISP CLASSIFICATION
+
+;      00 - 00  ILLEGAL CHARACTER, SWITCH MODE
+;      01 - 01  ALPHABETIC CHARACTER, SWITCH MODE
+;      02 - 02  NUMERIC CHARACTER, SWITCH MODE
+;      03 - 03  SWITCH MODE ESCAPE, SWITCH MODE
+
+;      00 - 04  ILLEGAL CHARACTER, NORMAL MODE
+;      01 - 05  ALPHABETIC CHARACTER, NORMAL MODE
+;      02 - 06  NUMERIC CHARACTER, NORMAL MODE
+;      03 - 07  SWITCH MODE ESCAPE, NORMAL MODE
+
+;      04 - 10  IGNORED CHARACTER
+;      05 - 11  ENTER SWITCH MODE CHARACTER
+;      06 - 12  DEVICE IDENTIFIER DELIMITER
+;      07 - 13  FILE EXTENSION DELIMITER
+;      10 - 14  OUTPUT SPECIFICATION DELIMITER
+;      11 - 15  INPUT SPECIFICATION DELIMITER
+;      12 - 16  LINE TERMINATION
+;      13 - 17  JOB TERMINATION
+     
+
+;BYTE POINTERS TO CHARACTER CLASSIFICATION TABLE
+
+LD8:   POINT     4,LD9(Q),3
+       POINT     4,LD9(Q),7
+       POINT     4,LD9(Q),11
+       POINT     4,LD9(Q),15
+       POINT     4,LD9(Q),19
+       POINT     4,LD9(Q),23
+       POINT     4,LD9(Q),27
+       POINT     4,LD9(Q),31
+       POINT     4,LD9(Q),35
+
+;CHARACTER CLASSIFIACTION TABLE
+
+LD9:   BYTE    (4)4,0,0,0,0,0,0,0,0
+       BYTE    (4)4,4,4,4,12,0,0,0,0
+       BYTE    (4)0,0,0,0,0,0,0,0,0
+       BYTE    (4)13,0,0,0,0,4,0,4,0
+IFE SYMARG,<   BYTE    (4)0,0,0,0,5,3,0,0,11>
+IFN SYMARG,<   BYTE    (4)0,0,14,0,5,3,0,0,11>
+               BYTE    (4)0,7,5,2,2,2,2,2,2
+IFE SPCHN,<    BYTE    (4)2,2,2,2,6,0,0,10,0>
+IFN SPCHN,<    BYTE    (4)2,2,2,2,6,0,1,10,1>
+IFE RPGSW,<    BYTE    (4)0,0,1,1,1,1,1,1,1>
+IFN RPGSW,<    BYTE (4) 0,10,1,1,1,1,1,1,1>
+       BYTE    (4)1,1,1,1,1,1,1,1,1
+       BYTE    (4)1,1,1,1,1,1,1,1,1
+IFE PP,<BYTE   (4)1,0,0,0,0,10,0,1,1>
+IFN PP,<BYTE   (4)1,10,0,10,0,10,0,1,1>
+       BYTE    (4)1,1,1,1,1,1,1,1,1
+       BYTE    (4)1,1,1,1,1,1,1,1,1
+       BYTE    (4)1,1,1,1,1,1,0,0,13
+       BYTE    (4)13,4
+     
+
+SUBTTL INITIALIZE LOADING OF A FILE
+
+ILD:   MOVEI     W,BUF1                ;LOAD BUFFER ORIGIN
+       MOVEM     W,JOBFF
+       TLOE    F,ISW           ;SKIP IF INIT REQUIRED
+       JRST    ILD6            ;DONT DO INIT
+ILD7:  OPEN    1,OPEN3                 ;KEEP IT PURE
+       JRST    ILD5B
+ILD6:  TLZE    F,REWSW         ;SKIP IF NO REWIND
+       MTAPE   1,1             ;REWIND
+ILD2:  LOOKUP    1,DTIN                ;LOOK UP FILE FROM DIRECTORY
+       JRST    ILD3            ;FILE NOT IN DIRECTORY
+IFE LNSSW,<
+IFE K,<        INBUF     1,2           ;SET UP BUFFERS>
+IFN K,<        INBUF   1,1             ;SET UP BUFFER>>
+IFN LNSSW,<INBUF       1,1
+       MOVEI   W,BUF1
+       EXCH    W,JOBFF
+       SUBI    W,BUF1
+IFE K,<MOVEI   C,4*203+1>
+IFN K,<MOVEI   C,203+1>
+       IDIV    C,W
+       INBUF   1,(C)>
+       TLO     F,ASW           ;SET LEFT ARROW ILLEGAL FLAG
+       TLZ     F,ESW           ;CLEAR EXTENSION FLAG
+       POPJ    P,
+
+;      LOOKUP FAILURE
+
+ILD3:  TLOE    F,ESW           ;SKIP IF .REL WAS ASSUMED
+       JRST    ILD4            ;FATAL LOOKUP FAILURE
+       SETZM     DTIN1         ;ZERO FILE EXTENSION
+       JRST    ILD2            ;TRY AGAIN WITH NULL EXTENSION
+
+ILD4:  IFE REENT,<IFE TEN30,<  ;PDP-6 ONLY
+       MOVE    W,[SIXBIT /LIB40/]
+       CAME    W,DTIN          ;WAS THIS A TRY FOR LIB40?
+       JRST    ILD4A           ;NO
+       TRZ     W,(SIXBIT / 0/) ;YES
+       MOVEM   W,DTIN          ;TRY LIB4
+       PUSHJ   P,LDDT2         ;USE .REL EXTENSION
+       TLZ     F,ESW           ;...
+       JRST    ILD2            ;GO TRY AGAIN
+ILD4A:>>
+IFN PP,<MOVSI  W,(SIXBIT /DSK/)
+       CAMN    W,ILD1          ;TRIED DSK ONCE?
+       JRST    ILD9            ;YES, FILE DOES NOT EXIST
+       MOVEM   W,ILD1          ;SET IT UP
+       SETZM   PPN             ;CLEAR OLD VALUE
+       PUSHJ   P,LDDT2         ;SET UP .REL
+       TLZ     F,ESW           ;SO WE CAN TRY BLANK EXT
+       JRST    ILD7            ;OPEN DSK,TRY AGAIN>
+
+ILD9:  ERROR   ,</CANNOT FIND#/>
+       JRST    LD2
+
+;      DEVICE SELECTION ERROR
+
+ILD5A: SKIPA   W,LD5C1
+ILD5B: MOVE    W,ILD1
+ILD5:  TLO     F,FCONSW        ;INSURE TTY OUTPUT
+       PUSHJ   P,PRQ           ;START W/ ?
+       PUSHJ   P,PWORD         ;PRINT DEVICE NAME
+       ERROR   7,</UNAVAILABLE@/>
+       JRST    LD2
+     
+
+SUBTTL LIBRARY SEARCH CONTROL AND LOADER CONTROL
+
+;LIBF ENABLES A LIBRARY SEARCH OF <SYS:LIB4.REL>
+
+LIBF:  PUSHJ     P,FSCN1               ;FORCE SCAN TO COMPLETION
+       PUSH P,ILD1     ;SAVE DEVICE NAME
+       PUSHJ   P,LIBF1                 ;LOAD SYS:JOBDAT.REL
+IFN SAILSW,<LIBAGN:    PUSHJ P,SALOAD  ;LOAD RELS AND SEARCH LIBS>
+IFN REENT,<TRNN        F,SEENHI        ;IF ANY HISEG LOADED NO RE-ENT OP SYSTEM
+       TRNN F,VFLG
+       JRST LIBF3
+IFN ALGSW,<TRNE        F,ALGFL ;SPECIAL ACTION IF LOADING ALGOL
+       JRST    [MOVE C,[RADIX50 44,%ALGDR]
+               MOVEI W,400010  ;JOBHDA
+               PUSHJ P,SYMPT   ;DEFINE IT
+               JRST    LIBF3]  ;DON'T LOAD IMP40>
+       MOVE W,[SIXBIT /IMP40/]
+       PUSHJ P,LIBF2
+LIBF3:>
+       TRNN    F,COBFL                 ;COBOL SEEN?
+       SKIPA   W,[SIXBIT /LIB40/]      ;FIRST TRY AT NAME
+       MOVE    W,[SIXBIT /LIBOL/]      ;YES, SEARCH COBOL'S LIBRARY ONLY
+       PUSHJ   P,LIBF2                 ;LOAD SYS:LIB40.REL
+IFN SAILSW,<MOVE W,LIBPNT      ;SEE IF ANY MORE TO DO
+       CAME W,[XWD -RELLEN-1,LIBFLS-1]
+       JRST LIBAGN
+       MOVE W,PRGPNT   ;IT COULD BE DANGEROUS TO LOAD PROGRAMS HERE
+       CAME W,[XWD -RELLEN-1,PRGFLS-1]
+       JRST LIBAGN     ;MORE TO DO, TRY AGAIN>
+       POP P,ILD1      ;CALL TO LDDT1 WILL PUT IT IN OLDDEV
+LIBF1: MOVE    W,[SIXBIT /JOBDAT/]     ;LOAD SYS:JOBDAT.REL
+LIBF2: PUSHJ     P,LDDT1
+LIBGO: JUMPGE    S,EOF2                ;JUMP IF NO UNDEFINED GLOBALS
+       TLO     F,SLIBSW+SKIPSW ;ENABLE LIBRARY SEARCH
+       TLZ     F,SYMSW ;DISABLE LOADING WITH SYMBOLS
+       JRST    LDF             ;INITIALIZE LOADING LIB4
+     
+
+;      LIB CONTROLS THE LIBRARY SEARCH OF ONE FILE
+
+LIB:   JUMPGE  S,EOF1          ;JUMP IF NO UNDEFINED GLOBALS
+       TLO     F,SKIPSW        ;SET SKIPSW TO IGNORE MODE
+IFN DIDAL,<TRNE        F,XFLG          ;INDEX IN CORE?
+       JRST    INDEX1          ;YES>
+       JRST    LOAD            ;CONTINUE LIB. SEARCH
+
+LIB1:  CAIE    A,4             ;TEST FOR ENTRY BLOCK
+       JRST    LIB29           ;NOT AN ENTRY BLOCK, IGNORE IT
+LIB2:  PUSHJ   P,RWORD         ;READ ONE DATA WORD
+       MOVE    C,W
+       TLO     C,040000                ;SET CODE BITS FOR SEARCH
+       PUSHJ     P,SREQ
+       TLZA    F,SKIPSW                ;REQUEST MATCHES ENTRY, LOAD
+       JRST    LIB2            ;NOT FOUND
+LIB3:  PUSHJ     P,RWORD               ;READ AND IGNORE ONE DATA WORD
+       JRST    LIB3            ;LOOP TO IGNORE INPUT
+
+LIB29:
+IFN DIDAL,<CAIN        A,14            ;INDEX BLOCK?
+       JRST    INDEX0          ;YES>
+LIB30: HRRZ    C,W             ;GET WORD COUNT
+       JUMPE   C,LOAD1         ;IF NUL BLOCK RETURN
+       CAILE   C,↑D18                ;ONLY ONE SUB-BLOCK
+       JRST    LIB3            ;NO,SO USE OLD SLOW METHOD
+       AOJA    C,LIB31         ;ONE FOR RELOCATION WORD
+
+BLOCK0:        HRRZ    C,W             ;GET WORD COUNT
+       JUMPE   C,LOAD1         ;NOISE WORD
+LIB31: CAML    C,BUFR2         ;DOES BLOCK OVERLAP BUFFERS?
+       SOJA    C,LIB32         ;YES,ALLOW FOR INITIAL ILDB
+       ADDM    C,BUFR1         ;ADD TO BYTE POINTER
+       MOVNS   C               ;NEGATE
+       ADDM    C,BUFR2         ;TO SUBTRACT C FROM WORD COUNT
+       JRST    LOAD1           ;GET NEXT BLOCK
+
+LIB32: SUB     C,BUFR2         ;ACCOUNT FOR REST OF THIS BUFFER
+       PUSHJ   P,WORD+1        ;GET ANOTHER BUFFERFUL
+       JRST    LIB31           ;TRY AGAIN
+     
+
+IFN SAILSW,<
+
+COMMENT * BLOCK TYPE 15 AND 16 USED TO SPECIFY PROGRAMS AND
+LIBRARIES WHICH MUST BE LOADED (SEARCHED) IF THE PROGRAM
+IN WHICH THE BLOCK APPEARS IS LOADED. IT IS NOW TIME TO
+LOAD AND SEARCH THESE FILES. IF ANY MAKE REQUESTS, THEY ARE ADDED
+TO THE END. WE WILL COME BACK AND LOOK AGAIN IN CASE A
+LIBRARY PROGRAM LOAD A REL PROGRAM. ORIGINAL CODE BY DCS*
+
+SALOAD:        MOVE T,[XWD -RELLEN-1,PRGFLS-1] ;TO RESET WITH AT END
+       MOVEI D,PRGPNT  ;OINTER TO UPPER LIMIT
+       PUSHJ P,PRGPRG  ;LOAD THEM IF ANY
+
+;NOW FOR LIBRARY SEARCH
+
+       MOVE T,[XWD -RELLEN-1,LIBFLS-1]
+       MOVEI D,LIBPNT
+
+PRGPRG:        MOVEM D,LODLIM# ;SAVE POINTER TO LIMIT
+       MOVEM T,LODSTP# ;START FOR RESETTING
+PRGBAK:        MOVEM T,LODPNT# ;AND START
+       CAMN T,@LODLIM  ;GOTTEN TO END YET?
+       JRST PRGDON     ;YES, DUMP IT
+       SKIPN W,PRGDEV(T)       ;IS DEVICE SPECIFIED?
+       MOVSI W,(SIXBIT /DSK/)  ;NO, DSK
+       MOVEM W,ILD1    ;WHERE WE INIT FROM
+       MOVSI W,(SIXBIT /REL/)  ;EXTENSION
+       MOVEM W,DTIN1
+       MOVE W,PRGFIL(T)
+       MOVEM W,DTIN    ;FILE NAME
+       MOVE W,PRGPPN(T)        ;THE PROJECT PROG
+       MOVEM W,DTIN+3
+       PUSH P,JRPRG    ;A RETURN ADDRESS
+       TLZ F,ISW       ;FORCE NEW INIT
+       HRRZ T,LODLIM
+       CAIN T,LIBPNT   ;WHICH ONE
+       JRST LIBGO
+       JRST LDF
+PRGRET:        MOVE T,LODPNT   ;RETURNS HERE, GET NEXT ONE
+       AOBJN T,PRGBAK
+
+PRGDON:        MOVE T,LODSTP   ;RESTE POINTER IN CASE MORE ON OTHER LIBS
+       MOVEM T,@LODLIM
+JRPRG: POPJ P,PRGRET   ;PUSHED TO GET A RETURN ADDRESS
+
+PRGFIL==1      ;REL INDEX FOR FILE NAMES
+PRGPPN==RELLEN+1       ;AND FOR PPNS
+PRGDEV==2*RELLEN+1     ;AND FOR DEVICES
+>      ;END OF IFN SAILSW
+     
+
+SUBTTL LDDT LOADS <SYS:DDT.REL> AND SETS SYMSW
+
+LDDTX:
+IFN ALGSW,<TRNE        F,ALGSW
+       POPJ    P,>
+       TLO     N,DDSW+EXEQSW           ;T - LOAD AND GO TO DDT
+LDDT:
+IFN ALGSW,<TRNE        F,ALGFL
+       POPJ    P,>
+IFN DMNSW,<    PUSH    P,D             ;SAVE INCASE /NNND >
+       PUSHJ     P,FSCN1               ;FORCE SCAN TO COMPLETION
+       MOVSI     W,444464              ;FILE IDENTIFIER <DDT>
+       TLZ     F,SYMSW!RMSMSW  ;DON'T LOAD DDT WITH LOCAL SYMBOLS
+       PUSHJ     P,LDDT1
+       PUSHJ     P,LDF         ;LOAD <SYS:DDT.REL>
+       TLO     F,SYMSW!RMSMSW          ;ENABLE LOADING WITH SYMBOLS
+IFN DMNSW,<    POP     P,D     ;RESTORE D
+       JRST    DMN2            ;MOVE SYMBOL TABLE >
+IFE DMNSW,<    POPJ    P,>
+
+LDDT1: MOVEM     W,DTIN                ;STORE FILE IDENTIFIER
+IFN PP,<MOVE   W,ILD1          ;SAVE OLD DEV
+       MOVEM   W,OLDDEV>
+       MOVSI     W,637163              ;DEVICE IDENTIFIER <SYS>
+       MOVEM     W,ILD1                ;STORE DEVICE IDENTIFIER
+       TLZ     F,ISW+LIBSW+SKIPSW+REWSW        ;CLEAR OLD FLAGS
+LDDT2: MOVSI     W,624554              ;EXTENSION IDENTIFIER <.REL>
+LDDT3: MOVEM     W,DTIN1               ;STORE EXTENSION IDENTIFIER
+LDDT4:IFN PP,<EXCH W,PPN       ;GET PROJ-PROG #
+       MOVEM W,DTIN+3
+       EXCH    W,PPN   ;W MUST BE SAVED SINCE IT MAY BE USED LATER>
+       POPJ    P,
+     
+
+SUBTTL EOF TERMINATES LOADING OF A FILE
+
+EOF:   MOVE    P,PDSAV         ;RESTORE PUSHDOWN POINTER
+EOF1:  TLZ F,SLIBSW!SKIPSW     ;CLEAR ONE FILE LIB. SEARCH FLAG
+IFN DIDAL,<TRZ F,XFLG!LSTLOD   ;CLEAR DIDAL FLAGS>
+EOF2:  TLNE F,RMSMSW   ;IF REMEMBER LOADING WITH SYMBOLS IS ON
+       TLO F,SYMSW     ;THEN RESTORE SYMBOL LOADING STATE
+       POPJ    P,
+
+;      FORCE SCAN TO COMPLETION, LOAD IF NECESSARY
+
+FSCN:  PUSHJ     P,FSCN1               ;FORCED LOAD BEFORE TEST
+       TLNN    F,FULLSW                ;TEST FOR OVERLAP
+       POPJ    P,                      ;NO OVERLAP, RETURN
+       MOVE    W,H             ;FETCH CORE SIZE REQUIRED
+       SUBI W,1(S) ; COMPUT DEFICIENCY
+       JUMPL     W,EOF2                ;JUMP IF NO OVERLAP
+       TLO     F,FCONSW                ;INSURE TTY OUTPUT
+       PUSHJ   P,PRQ                   ;START WITH ?
+       PUSHJ     P,PRNUM0              ;INFORM USER
+       ERROR   7,</WORDS OF OVERLAP#/>
+       JRST    LD2             ;ERROR RETURN
+
+IFN SPCHN,<FSCN1A:     TLNN F,NSW
+       PUSHJ P,LIBF>
+FSCN1: TLON    F,FSW           ;SKIP IF NOT FIRST CALL TO FSCN
+       TLNN    F,CSW+DSW+ESW   ;TEST SCAN FOR COMPLETION
+       POPJ    P,
+FSCN2: PUSHJ     P,LD5B1               ;STORE FILE OR EXTENSION IDENT.
+
+;      LOADER CONTROL, NORMAL MODE
+
+LDF:   PUSHJ     P,ILD         ;INITIALIZE LOADING
+     
+
+SUBTTL LOAD SUBROUTINE
+
+LOAD:  MOVEM   P,PDSAV         ;SAVE PUSHDOWN POINTER
+IFN WFWSW,<SETZM VARLNG                ;LENGTH OF VARIABLE AREA-ADDED TO RELOC>
+IFN ALGSW,<SETZM OWNLNG                ;LENGTH OF OWN AREA-ADDED TO RELOC>
+IFN FAILSW,<SETZM LFTHSW       ;RESET LOAD LEFT HALF FIXUP SW>
+LOAD1: MOVE    P,PDSAV         ;RESTORE PUSHDOWN POINTER
+LOAD1A:        PUSHJ   P,WORD          ;INPUT BLOCK HEADER WORD
+       MOVNI   E,400000(W)     ;WORD COUNT - FROM RH OF HEADER
+       HLRZ    A,W             ;BLOCK TYPE - FROM LH OF HEADER
+IFN FAILSW,<SKIPN POLSW                ;ERROR IF STILL DOING POLISH>
+       CAIL    A,DISPL*2       ;TEST BLOCK TYPE NUMBER
+       JRST    LOAD4           ;ERROR, ILLEGAL BLOCK TYPE
+       TLNE    F,SKIPSW        ;BLOCK OK - TEST LOAD STATUS
+       JRST    LIB1            ;RETURN TO LIB. SEARCH CONTROL
+       HRRZ    T,LOAD2(A)      ;LOAD RH DISPATCH ENTRY
+       CAIL    A,DISPL         ;SKIP IF CORRECT
+       HLRZ    T,LOAD2-DISPL(A);LOAD LH DISPATCH ENTRY
+       TLNE    F,FULLSW        ;TEST CORE OVERLAP INDICATOR
+       SOJG    A,HIGH0         ;IGNORE BLOCK IF NOT TYPE 1
+       JRST    @T              ;DISPATCH TO BLOCK SUBROUTINE
+
+;DISPATCH TABLE - BLOCK TYPES
+IFE FAILSW,<POLFIX==LOAD4A
+       LINK==LOAD4A>
+IFE WFWSW,<LVARB==LOAD4A>
+IFE DIDAL,<INDEX==LOAD4A>
+IFE ALGSW!SAILSW,<ALGBLK==LOAD4A>
+IFE SAILSW,<LDLIB==LOAD4A>
+
+LOAD2: XWD     LOCD,   BLOCK0  ;10,,0
+       XWD     POLFIX, PROG    ;11,,1
+       XWD     LINK,   SYM     ;12,,2
+       XWD     LVARB,  HISEG   ;13,,3
+       XWD     INDEX,  LIB30   ;14,,4
+       XWD     ALGBLK, HIGH    ;15,,5
+       XWD     LDLIB,  NAME    ;16,,6
+       XWD     LOAD4A, START   ;17,,7
+
+       DISPL==.-LOAD2
+
+;ERROR EXIT FOR BAD HEADER WORDS
+
+LOAD4: IFE K,<
+       CAIN    A,400           ;FORTRAN FOUR BLOCK
+       JRST    F4LD>
+LOAD4A:        MOVE    W,A             ;GET BLOCK TYPE
+       ERROR   ,</ILL. FORMAT BLOCK TYPE !/>
+       PUSHJ   P,PRNUM         ;PRINT BLOCK TYPE
+       JRST    ILC1            ;PRINT SUBROUTINE NAME
+     
+
+SUBTTL LOAD PROGRAMS AND DATA (BLOCK TYPE 1)
+
+PROG:  MOVEI   V,-1(W)                 ;LOAD BLOCK LENGTH
+       PUSHJ     P,RWORD               ;READ BLOCK ORIGIN
+       ADD     V,W             ;COMPUTE NEW PROG. BREAK
+IFN REENT,<TLNN F,HIPROG
+       JRST    PROGLW  ;NOT HIGH SEGMENT
+PROG3: CAMGE W,HVAL1   ;CHECK TO SEE IF IN TOP SEG
+       JRST LOWCOR
+       MOVE T,JOBREL   ;CHECK FOR OVERFLOW ON HIGH
+       CAIL T,@X
+       JRST PROG2
+       PUSHJ P,HIEXP
+       JRST FULLC
+       JRST PROG3>
+
+PROGLW:        MOVEI T,@X
+       CAMG    H,T             ;COMPARE WITH PREV. PROG. BREAK
+       MOVE H,T
+       TLNE F,FULLSW
+       JRST FULLC      ;NO ERROR MESSAGE
+IFN REENT,<CAML H,HVAL1
+       JRST COROVL     ;WE HAVE OVERFLOWED THE LOW SEGMENT
+       CAMLE T,HILOW
+       MOVEM T,HILOW   ;HIGHEST LOW CODE LOADED INTO>
+       CAILE H,1(S)  ; SKIP IF SUFFICIENT CORE AVAILABLE
+IFN EXPAND,<JRST [PUSHJ P,XPAND>
+               JRST FULLC
+IFN REENT,<    TLNE F,HIPROG
+               SUBI W,2000     ;HISEG LOADING LOW SEG>
+IFN EXPAND,<   JRST .-1]>
+PROG2: MOVE    V,W
+PROG1: PUSHJ     P,RWORD               ;READ DATA WORD
+IFN TEN30,<CAIN V,41   ;CHANGE FOR 10/30 JOBDAT
+       MOVEI V,JOB41   ;JOB41 IS DIFFERENT
+       CAIN V,74       ;SO IS JOBDAT
+       MOVEI V,JOBDDT>
+IFN L,<CAML V,RINITL   ;CHECK FOR BAD STORE>
+       MOVEM     W,@X          ;STORE DATA WORD IN PROG. AT LLC
+       AOJA    V,PROG1         ;ADD ONE TO LOADER LOC. COUNTER
+
+IFN REENT,<
+LOWCOR:        SUB V,HIGHX     ;RELOC FOR PROPER
+       ADD V,LOWX      ;LOADING OF LOW SEQMENT
+       SUB W,HIGHX
+       ADD W,LOWX
+       JRST PROGLW>
+     
+
+SUBTTL LOAD SYMBOLS (BLOCK TYPE 2)
+
+SYM:   PUSHJ   P,PRWORD        ;READ TWO DATA WORDS
+       PUSHJ   P,SYMPT;                PUT INTO TABLE
+IFN REENT,<PUSHJ P,RESTRX>
+       JRST    SYM
+
+SYMPT: TLNE C,200000   ;GLOBAL REQUEST? WFW
+       JUMPL C,SYM3    ;CHECK FOR 60 NOT JUST HIGH BIT WFW
+       TLNN    C,40000
+       JRST    SYM1A           ;LOCAL SYMBOL
+       TLNE C,100000
+       JRST SYM1B
+       PUSHJ     P,SREQ                ;GLOBAL DEF., SEARCH FOR REQUEST
+       JRST    SYM2            ;REQUEST MATCHES
+       PUSHJ     P,SDEF                ;SEARCH FOR MULTIPLE DEFINITIONS
+       JRST    SYM1            ;MULTIPLY DEFINED GLOBAL
+       JRST    SYM1B
+
+;      PROCESS MULTIPLY DEFINED GLOBAL
+
+SYM1:  CAMN    W,2(A)          ;COMPARE NEW AND OLD VALUE
+       POPJ    P,;
+       AOS     MDG             ;COUNT MULTIPLY DEFINED GLOBALS
+       PUSHJ   P,PRQ           ;START W/ ?
+       PUSHJ     P,PRNAM               ;PRINT SYMBOL AND VALUE
+IFN RPGSW,<MOVE W,JOBERR       ;RECORD THIS AS AN ERROR
+       ADDI W,1
+       HRRM W,JOBERR>
+       MOVE    W,2(A)          ;LOAD OLD VALUE
+       PUSHJ     P,PRNUM               ;PRINT OLD VALUE
+       ERROR   7,</MUL. DEF. GLOBAL IN PROG.  !/>
+       MOVE    C,SBRNAM        ;GET PROGRAM NAME
+       PUSHJ   P,PRNAME        ;PRINT R-50 NAME
+       ERROR   0,</#/>
+       POPJ    P,              ;IGNORE MUL. DEF. GLOBAL SYM
+     
+
+;      LOCAL SYMBOL
+
+SYM1A: TLNN    F,SYMSW         ;SKIP IF LOAD LOCALS SWITCH ON
+       POPJ    P,;             IGNORE LOCAL SYMBOLS
+SYM1B: CAIL    H,(S)           ;STORE DEFINED SYMBOL
+IFN EXPAND,<   PUSHJ P,XPAND7>
+IFE EXPAND,<   JRST SFULLC>
+SYM1C: IFE K,<
+       TLNE    N,F4SW;         FORTRAN FOUR REQUIRES A BLT
+       PUSHJ   P,MVDWN;        OF THE TABLES>
+       MOVEI   A,-2(S)         ;LOAD A TO SAVE INST. AT SYM2
+SYM1D: SUBI    S,2;            UPDATE UNDEFINED POINTER
+       POP     B,2(A)          ;MOVE UNDEFINED VALUE POINTER
+       POP     B,1(A)          ;MOVE UNDEFINED SYMBOL
+       MOVEM   W,2(B)          ;STORE VALUE
+       MOVEM  C,1(B)           ;STORE SYMBOL
+       POPJ    P,
+     
+
+;      GLOBAL DEFINITION MATCHES REQUEST
+
+SYM2:  PUSH    P,SYM2C ;NEXT MUST BE A SUBROUTINE FOR LATER, SET RETURN
+SYM2B: MOVE    V,2(A)          ;LOAD REQUEST POINTER
+       PUSHJ   P,REMSYM
+       JUMPL V,SYM2W   ;ADDITIVE REQUEST? WFW
+       PUSHJ     P,SYM4A               ;REPLACE CHAIN WITH DEFINITION
+SYM2W1:        PUSHJ P,SREQ    ;LOOK FOR MORE REQUESTS FOR THIS SYMBOL
+       JRST SYM2B      ;FOUND MORE
+       MOVE A,SVA      ;RESTORE A
+SYM2C: POPJ    P,SYM1D ;RETURN, SEE SYM2 FOR USE OF ADDRESS
+
+;      REQUEST MATCHES GLOBAL DEFINITION
+
+SYM2A: MOVE    V,W             ;LOAD POINTER TO CHAIN
+       MOVE    W,2(A)          ;LOAD VALUE
+       JUMPL V,FIXWP   ;HANDLE ATTITIVE REQUEST WFW
+       JRST SYM4A
+
+;      PROCESS GLOBAL REQUEST
+
+SYM3:  TLNE    C,040000;               COMMON NAME
+       JRST    SYM1B
+       TLC     C,640000;               PERMUTE BITS FROM 60 TO 04
+       PUSHJ     P,SDEF                ;SEARCH FOR GLOBAL DEFINITION
+       JRST    SYM2A           ;MATCHING GLOBAL DEFINITION
+       JUMPL W,SYM3X1  ;ADDITIVE FIXUP WFW
+       PUSHJ     P,SREQ                ;SEARCH FOR EXISTING REQUEST WFW
+       JRST    SYM3A           ;EXISTING REQUEST FOUND WFW
+SYM3X1:        TLNN W,100000   ;CHECK SYMBOL TABLE FIXUP
+       JRST     SYM3X2 ;NO
+       MOVE     V,1(B) ;MUST BE LAST SYMBOL DEFINED. GET SYMBOL
+       XOR      V,W            ;CHECK FOR IDENTITY
+       TDNE     V,[XWD 77777,-1]       ;BUT IGNORE HIGH 3 BITS
+       POPJ     P,             ;NOT SAME, ASSUME NOT LOADED LOCAL
+       HRRI     W,2(B)         ;GET LOCATION IN RIGHT HALF
+       TLO      W,1
+       SUB      W,HISTRT               ;AND MAKE RELATIVE
+IFN FAILSW,<TLZ        W,040000>
+SYM3X2:        CAIL    H,(S)           ;STORE REQUEST IN UNDEF. TABLE WFW
+IFN EXPAND,<   PUSHJ P,XPAND7>
+IFE EXPAND,<   JRST SFULLC>
+SYM3X: IFE K,<
+       TLNE    N,F4SW;         FORTRAN FOUR
+       PUSHJ   P,MVDWN;                ADJUST TABLES IF F4>
+       SUB     S,SE3           ;ADVANCE UNDEFINED POINTER
+       MOVEM     W,2(S)                ;STORE UNDEFINED VALUE POINTER
+       MOVEM     C,1(S)                ;STORE UNDEFINED SYMBOL
+       POPJ    P,;
+     
+
+
+;      COMBINE TWO REQUEST CHAINS
+
+SYM3A: SKIPL 2(A)      ;IS IT ADDITIVE WFW
+       JRST SYM3A1     ;NO, PROCESS WFW
+SYM3A4:        PUSHJ P,SDEF2   ;YES, CONTINUE WFW
+       JRST SYM3A      ;FOUND ANOTHER WFW
+       JRST SYM3X2     ;REALLY NO CHAIN THERE WFW
+SYM3A1:        SKIPE   V,2(A)  ;IF ADDRESS OF CHAIN IS 0, THROW IT AWAY
+       JRST    SYM3A2  ;AND USE THE NEW ONE, ELSE ADD THE CHAINS
+       MOVEM   W,2(A)  ;W IS ADDRESS OF NEW CHAIN,STORE ON TOP OF OLD 0
+       POPJ    P,
+SYM3A2:        
+SYM3A3:        MOVE A,2(A)
+SYM3B: HRRZ V,A
+IFN L,<CAMGE V,RINITL
+       HALT>
+IFN REENT,<CAMGE V,HVAL1
+       SKIPA X,LOWX
+       MOVE X,HIGHX>
+       HRRZ A,@X ; LOAD NEXT ADDRESS IN CHAIN
+       JUMPN A,SYM3B  ; JUMP IF NOT THE LAST ADDR. IN CHAIN
+       HRRM    W,@X            ;COMBINE CHAINS
+       POPJ    P,;
+
+;WFW PATCH FOR ADDITIVE GLOBAL REQUESTS
+
+FIXWP: TLNN     V,100000       ;CHECK FOR SYMBOL TABLE FIXUP
+       JRST     FIXW
+       MOVE     T,1(B) ;SYMBOL FIXUP, MUST BE LAST SYMBOL DEFINED
+       XOR      T,V            ;CHECK FO SAME
+       TDNE     T,[XWD 77777,-1]       ;EXCEPT FOR HIGH CODE BITS
+       POPJ     P,             ;ASSUME NON-LOADED LOCAL
+       HRRI     V,2(B)         ;GET LOCATION
+       SUBI     V,(X)          ;SO WE CAN USE @X
+       JRST FIXW1
+FIXW:  IFN REENT,<HRRZ T,V
+       CAMGE T,HVAL1
+       SKIPA X,LOWX
+       MOVE X,HIGHX>
+IFN L,<        HRRZ T,V
+       CAMGE R,RINITL
+       POPJ P,>
+FIXW1: TLNE    V,200000        ;IS IT LEFT HALF
+       JRST FIXWL
+       MOVE T,@X       ;GET WORD
+       ADD T,W         ;VALUE OF GLOBAL
+       HRRM T,@X       ;FIX WITHOUT CARRY
+       MOVSI   D,200000        ;SET UP TO REMOVE DEFERED INTERNAL IF THERE
+       JRST    SYMFIX
+     
+
+FIXWL: HRLZ    T,W             ;UPDATE VALUE OF LEFT HALF
+       ADDM    T,@X            ;BY VALUE OF GLOBAL
+       MOVSI   D,400000        ;LEFT DEFERED INTERNAL
+SYMFIX:        TLNN V,100000   ;CHECK FOR SYMBOL TABLE FIXUP
+       POPJ P,         ;NO, RETURN
+       ADDI V,(X)      ;GET THE LOCATION
+SYMFX1:        MOVE T,-1(V)    ;GET THE SYMBOL NAME
+       TLNN T,40000    ;CHECK TO SEE IF INTERNAL
+       POPJ P,         ;NO, LEAVE
+       ANDCAB D,-1(V)  ;REMOVE PROPER BIT
+       TLNE D,600000   ;IS IT STILL DEFERED?
+       POPJ P,         ;YES, ALL DONE
+       EXCH C,D        ;NO, CHECK FOR A REQUEST FOR IT
+       PUSHJ P,SREQ
+       JRST CHNSYM     ;YES, WILL HAVE TO CALL THE FIXUP ROUTINE
+       MOVE C,D        ;GET C BACK
+       POPJ P,
+CHNSYM:        PUSH P,D        ;HAS THE OLD C IN IT
+       PUSH P,W        ;WE MAY NEED IT LATER
+       MOVE W,(V)      ;GET VALUE
+       PUSHJ P,SYM2B   ;CALL THE FOUND GLOBAL TO MATCH REQUEST ROUTINE
+       POP P,W
+       POP P,C         ;RESTORE FOR CALLER
+       POPJ P,         ;AND GO AWAY
+
+SYM2W: IFN FAILSW,<
+       TLNE V,40000    ;CHECK FOR POLISH
+       JRST POLSAT>
+       TLNN V,100000   ;SYMBOL TABLE?
+       JRST SYM2WA
+       ADD V,HISTRT    ;MAKE ABSOLUTE
+       SUBI V,(X)      ;GET READY TO ADD X
+       PUSHJ P,FIXW1
+       JRST SYM2W1
+SYM2WA:        PUSHJ P,FIXW    ;DO FIXUP
+       JRST SYM2W1     ;AND LOOK FOR MORE REQUESTS
+
+;END WFW PATCH
+     
+
+;PATCH VALUES INTO CHAINED REQUEST
+
+SYM4:  IFN L,<CAMGE V,RINITL
+       POPJ P,>
+IFN REENT,<CAMGE V,HVAL1
+       SKIPA X,LOWX
+       MOVE X,HIGHX>
+       HRRZ    T,@X    ;LOAD NEXT ADDRESS IN CHAIN
+       HRRM    W,@X            ;INSERT VALUE INTO PROGRAM
+       MOVE    V,T
+SYM4A: JUMPN     V,SYM4                ;JUMP IF NOT LAST ADDR. IN CHAIN
+       POPJ    P,
+
+IFE    K,<
+MVDWN: HRRZ T,MLTP
+IFN EXPAND,<   SUBI T,2>
+       CAIG    T,(H);          ANY ROOM LEFT?
+IFN EXPAND,<   JRST    [PUSHJ P,XPAND>
+                       TLOA F,FULLSW
+IFN EXPAND,<           JRST MVDWN
+                       POPJ P,]>
+       TLNE    F,SKIPSW+FULLSW
+       POPJ    P,      ;       ABORT BLT
+       HRREI   T,-2
+       ADDM    T,PLTP;         ADJUST PROGRAMMER LABEL POINTER
+       ADDM    T,BITP;         AND BIT TABLE POINTER
+       ADDM    T,SDSTP;        FIRST DATA STATEMENT
+       ADDM    T,LTC
+       ADDM    T,ITC
+       TLNE    N,SYDAT
+       ADDM    T,V
+       ADDB    T,MLTP;         AND FINALLY TO MADE LABEL TABLE
+       HRLS    T;              SET UP BLT POINTER
+       ADD     T,[XWD 2,0]
+       BLT     T,(S)
+       POPJ    P,
+>
+     
+
+SUBTTL HIGH-SEGMENT (BLOCK TYPE 3)
+;THIS PROGRAM IS INTENDED FOR HI SEGMENT IF RUNNING ON A PDP-10.
+; THIS BLOCK TYPE OCCURS AFTER ENTRY AND NAME BLOCKS.
+
+HISEG: PUSHJ   P,WORD          ;GOBBLE UP A WORD.
+       JUMPE   W,HISEG2        ;MACRO V36
+       PUSHJ   P,WORD          ;GET THE OFSET
+IFE REENT,<HISEG2==LOAD1A
+       JUMPGE  W,LOAD1A        ;NOT TWO SEG PROG.>
+IFN REENT,<JUMPE W,HISEG2      ;IGNORE ZERO
+       JUMPG   W,HISEG3        ;NEG. IF TWOSEG PSEUDO-OP>
+       TRO     F,TWOFL         ;SET FLAG
+IFN REENT,<
+       TRNE    F,NOHI!NOHI6    ;TWO SEGMENTS LEGAL?
+       JRST    ONESEG          ;LOAD AS ONE SEGMENT
+HISEG3:        HRRZ    D,W             ;GET START OF HISEG 
+       JUMPE   D,.+2           ;NOT SPECIFIED
+       PUSHJ   P,HCONT         ;AS IF /H
+HISEG2:        PUSHJ   P,HISEG1
+       JRST    LOAD1           ;GET NEXT BLOCK
+FAKEHI:                                ;AS IF BLOCK TYPE 3
+HISEG1:        TRNE    F,NOHI!NOHI6    ;LOAD REENT?
+       POPJ    P,
+       TLOE    F,HIPROG        ;LOADING HI PROG
+       POPJ    P,              ;IGNORE 2'ND HISEG
+       TRON    F,SEENHI        ;HAVE WE LOADED ANY OTHER HI STUFF?
+       PUSHJ   P,SETUPH        ;NO,SET UP HI SEG.
+       MOVEM R,LOWR
+       MOVE R,HIGHR
+       HRRM    R,2(N)          ;CALL THIS THE START OF THE PROGRAM
+       MOVE X,HIGHX
+       POPJ    P,
+SETUPH:        MOVE X,HVAL1
+       CAIGE X,-1      ;SEE IF IT HAS BEEN CHANGED FROM ORIG
+       JRST SEENHS     ;YES, MUST HAVE SEEN /H
+       MOVEI X,400000
+       MOVEM X,HVAL1
+       CAIG X,(H)      ;HAVE WE RUN OVER WITH THE LOW SEG
+       JRST COROVL
+       ADDI X,JOBHDA
+       HRLI X,W
+       MOVEM X,HVAL
+SEENHS:        MOVE X,HVAL
+       MOVEM X,HIGHR
+       HRRZ X,JOBREL
+       SUB X,HVAL1
+       ADDI X,1
+       HRLI X,V
+       MOVEM X,HIGHX
+       POPJ P,
+
+     
+
+SETSEG:        TRZ     F,NOHI!SEGFL    ;ALLOW HI-SEG
+       JUMPL   D,.+2           ;/-H TURNS OFF NOHI ONLY
+       TRO     F,SEGFL         ;/1H FORCES  HI
+       POPJ    P,
+>
+
+ONESEG:        HLRZ    D,W             ;GET LENGTH OF HISEG
+       SUBI    D,(W)           ;REMOVE OFSET
+       JUMPLE  D,TWOERR        ;LENGTH NOT AVAILABLE
+       MOVEM   R,LOWR          ;SAVE LOW SEGMENT RELOCATION
+       ADDM    D,LOWR          ;ADD TO LOW SEG RELOCATION
+       HRRZM   W,HVAL1         ;SO RELOC WILL WORK
+       JRST    LOAD1           ;GET NEXT BLOCK
+
+TWOERR:        ERROR   7,</TWO SEGMENTS ILLEGAL#/>
+       JRST    LDRSTR
+     
+
+SUBTTL HIGHEST RELOCATABLE POINT (BLOCK TYPE 5)
+SFULLC:        TLOE    F,FULLSW        ;PREVIOUS OVERFLOW?
+       JRST    FULLC           ;YES, DON'T PRINT MESSAGE
+       ERROR   ,<?SYMBOL TABLE OVERLAP#?>
+FULLC: TLO     F,FULLSW        ;CORE OVERLAP ERROR RETURN
+IFE K,<        TLNE    N,F4SW
+       POPJ    P,>
+       JRST    LIB3            ;LOOK FOR MORE
+HIGH2: PUSHJ   P,RWORD         ;GET HISEG BREAK
+       TRZ     F,TWOFL         ;CLEAR FLAG NOW
+IFE REENT,<    MOVE    R,LOWR
+       JRST    HIGH2A>
+IFN REENT,<    TRNE    F,NOHI!NOHI6    ;SINGLE SEGMENT LOAD?
+       JRST    [MOVE   R,LOWR  ;YES,GET LARGER RELOC
+               MOVE    W,HVAL  ;ORIGINAL VALUE
+               MOVEM   W,HVAL1 ;RESET
+               JRST    HIGH2A] ;CONTINUE AS IF LOW ONLY
+       HRR     R,W             ;PUT BREAK IN R
+       CAMLE   R,HVAL
+       MOVEM   R,HVAL
+       MOVEM   R,HIGHR
+       MOVE    R,LOWR          ;NEXT WORD IS LOW SEG BREAK
+       TLZ     F,HIPROG        ;CLEAR HIPROG
+       PUSHJ   P,PRWORD        ;GET WORD PAIR
+       HRR     R,C             ;GET LOW SEG BREAK
+       MOVEM   R,LOWR          ;SAVE IT
+       MOVE    R,HIGHR         ;GET HIGH BREAK
+       JRST    HIGHN3          ;AND JOIN COMMON CODE>
+
+HIGH0: CAIE    A,4             ; TEST FOR END BLOCK (OVERLAP)
+       JRST    LIB30
+
+HIGH:  TRNE    F,TWOFL         ;IS THIS A TWO SEGMENT PROGRAM?
+       JRST    HIGH2           ;YES
+HIGH2A:        PUSHJ   P,PRWORD        ;READ TWO DATA WORDS.
+IFN REENT,<    TLZE F,HIPROG
+       JRST HIGHNP>
+IFN WFWSW,<ADD C,VARLNG                ;IF LOW SEG THEN VARIABLES GO AT END>
+IFN ALGSW,<ADD C,OWNLNG        ;ADD IN LENGTH OF OWN BLOCK>
+       HRR R,C         ;SET NEW PROGRAM BREAK
+       CAMGE C,W       ;CHECK 2ND WORD (LOC PROG BRK IF PRESENT)
+       MOVE C,W
+HIGH31:        ADDI C,(X)
+       CAIG H,(C)
+       MOVEI H,(C)     ;SET UP H
+       CAILE   H,1(S)  ;TEST PROGRAM BREAK
+IFN EXPAND,<PUSHJ P,[  PUSHJ P,XPAND
+                       TLOA F,FULLSW
+                       JRST POPJM2
+                       POPJ    P,]>
+IFE EXPAND,<TLO        F,FULLSW>
+HIGH3: MOVEI A,F.C
+       BLT A,B.C
+IFN REENT,<TRNE        F,NOHI!NOHI6    ;ONE SEGMENT PROGRAM?
+       JRST    HIGHN4          ;YES
+       HRLZ    W,HIGHR         ;GET HIGH PROG BREAK
+       JUMPE   W,[HRRZ W,R     ;NO HIGH SEGMENT YET
+               JRST    .+2]    ;SO USE LOW RELOCATION ONLY
+       HRR     W,LOWR          ;GET LOW BREAK
+       SETZ    C,              ;ZERO SYMBOL NAME
+       PUSHJ   P,SYM1B         ;PUT IN SYMBOL TABLE
+       MOVEM   S,F.C+S         ;SAVE NEW S AND B
+       MOVEM   B,F.C+B         ;INCASE OF ERROR
+HIGHN4:>
+       TLZ     F,NAMSSW        ;RELAX, RELOCATION BLOCK FOUND
+       TLNE    F,SLIBSW+LIBSW  ;NORMAL MODE EXIT THROUGH LOAD1
+       JRST    LIB             ;LIBRARY SEARCH EXIT
+       JRST LOAD1
+IFN REENT,<
+HIGHNP:        HRR R,C
+HIGHN1:        CAMLE R,HVAL
+       MOVEM R,HVAL
+       MOVEM R,HIGHR
+HIGHN3:        PUSH    P,W     ;SAVE W,CONTAIN HIGHEST ABSOLUTE ADDRESS
+       ADD W,LOWX      ;LOC PROG BRK
+       CAIGE H,(W)     ;CHECK FOR TOP OF LOW CORE
+       MOVEI H,(W)
+       POP     P,W     ;RESTORE
+       CAML H,HVAL1
+       JRST COROVL     ;OVERFLOW OF LOW SEGMENT
+HIGHN2:        HRRZ R,HVAL
+       SUB R,HVAL1
+       ADD R,HISTRT
+       CAMLE R,JOBREL
+       JRST    [PUSHJ P,HIEXP
+               JRST FULLC
+               JRST HIGHN2]
+       MOVE R,LOWR
+       MOVE X,LOWX
+IFN WFWSW,<ADD R,VARLNG        ;VARIABLES IN LOW SEG>
+IFN ALGSW,<ADD R,OWNLNG        ;OWN BLOCK IN LOW SEGMENT>
+       HRRZ C,R
+       CAIGE   C,(W)   ;IS ABSOLUTE LOCATION GREATER
+       HRR     R,W     ;YES USE IT
+     
+
+       HRRZ    C,R     ;SET UP C AGAIN
+       JRST HIGH31     ;GO CHECK PROGRAM BREAK
+     
+
+SUBTTL EXPAND HIGH SEGMENT
+
+HIEXP: TLNE    F,FULLSW
+       POPJ    P,
+IFN EXPAND,<PUSH P,Q>
+       PUSH P,H
+       PUSH P,X
+       PUSH P,N
+IFE K,<HRRZ X,MLTP
+       TLNN N,F4SW>
+       MOVEI X,1(S)
+       HRRZ N,X
+       SUB N,H
+       CAILE N,1777
+       JRST MOVHI
+IFE EXPAND,<POPJ P,>
+IFN EXPAND,<HRRZ N,JOBREL
+       ADDI N,2000
+       CAMG    N,ALWCOR
+       CORE N,
+       JRST XPAND6
+       PUSHJ P,ZTOP
+       POP P,N
+       JRST XPAND3>
+
+MOVHI: MOVEI N,-2000(X)
+       HRL N,X
+       HRRZ X,JOBREL
+       BLT N,-2000(X)
+       PUSHJ P,ZTOP
+       MOVNI H,2000
+IFN EXPAND,<JRST XPAND8>
+IFE EXPAND,<ADDM H,HISTRT
+       ADDM H,S
+       ADDM H,B
+       ADDM H,HIGHX
+       TLNE F,HIPROG
+       ADDM H,-1(P)
+       POP P,N
+       SUBI N,2000     ;ADJUST POINTER TO NAME
+IFE K,<        TLNN F4SW
+       JRST HIXP1
+       ADDM H,PLTP
+       ADDM H,BITP
+       ADDM H,SDSTP
+       ADDM H,MLTP
+       TLNE N,SYDAT
+       ADDM H,V
+HIXP1:>
+       POP P,X
+       POP P,H
+       AOS (P)
+       POPJ P,>
+
+ZTOP:  HRRZ N,JOBREL
+       MOVEI X,-1776(N)
+       HRLI X,-1777(N)
+       SETZM -1(X)
+       BLT X,(N)
+       POPJ P,>
+     
+
+SUBTTL PROGRAM NAME (BLOCK TYPE 6)
+
+NAME:  TLOE    F,NAMSSW        ;HAVE WE SEEN TWO IN A ROW?
+       JRST    NAMERR          ;YES, NO END BLOCK SEEN
+       PUSHJ   P,PRWORD        ;READ TWO DATA WORDS
+       MOVEM   C,SBRNAM        ;SAVE SUBROUTINE NAME
+NCONT: HLRE    V,W             ;GET COMPILER TYPE
+       HRRZS   W               ;CLEAR TYPE
+       JUMPL   V,.+3
+       CAIGE   V,CMPLEN-CMPLER ;ONLY IF LEGAL TYPE
+       XCT     CMPLER(V)       ;DO SPECIAL FUNCTION
+       TLOE    N,COMFLG        ;SKIP IF COMMON NOT PREV. SET
+       JRST    NAME1           ;SIZE OF COMMON PREV. SET
+       MOVEM   W,COMSAV        ;STORE LENGTH OF COMMON
+       JUMPE   W,NAME2         ;JUMP IF NO COMMON IN THIS JOB
+       HRRI    R,@R            ;FIRST PROGRAM SET LOAD ORIGIN
+NAME1: CAILE   H,-1(S)         ;TEST FOR AVAIL. SYMBOL SPACE
+IFN EXPAND,<   PUSHJ P,XPAND7>
+IFE EXPAND,<   JRST SFULLC>
+       SUBI    S,2             ;UPDATE UNDEF. TABLE POINTER
+       POP     B,2(S)
+       POP     B,1(S)
+       HRRZ    V,N             ;POINTER TO PREVIOUS NAME
+       SUBM    B,V             ;COMPUTE RELATIVE POSITIONS
+       HRLM    V,2(N)          ;STORE FORWARD POINTER
+       HRR     N,B             ;UPDATE NAME POINTER
+NAME2: MOVEM   C,1(B)          ;STORE PROGRAM NAME
+       HRRZM   R,2(B)          ;STORE PROGRAM ORIGIN
+       CAMG    W,COMSAV        ;CHECK COMMON SIZE
+IFE REENT,<JRST        LIB3            ;COMMON OK>
+IFN REENT,<JRST [TRNE F,SEGFL  ;LOAD LOW IN HI-SEG
+               PUSHJ P,FAKEHI  ;YES
+               JRST    LIB3]>
+       SKIPA   C,COMM
+ILC:   MOVE    C,1(A)          ;NAME
+       PUSH    P,C             ;SAVE COMMON NAME
+       ERROR   ,</ILL. COMMON !/>
+       POP     P,C
+       PUSHJ   P,PRNAME
+ILC1:  SKIPN   SBRNAM
+       JRST    ILC2
+       ERROR   0,</ PROG. !/>
+       MOVE    C,SBRNAM        ;RECOVER SUBROUTINE NAME
+       PUSHJ   P,PRNAME
+ILC2:  ERROR   0,</ #/>
+       JRST    LD2
+
+NAMERR:        SETZM   DTIN            ;CLEAR WRONG FILE NAME FOR MESSAGE
+       ERROR   ,</NO END BLOCK !/>
+       JRST    ILC1
+
+     
+
+;COMPILER TYPE - DO SPECIAL FUNCTION FOR IT
+
+DEFINE CTYPE (CONDITION,TRUE,FALSE)
+<IFN CONDITION,<TRUE>
+IFE CONDITION,<FALSE>>
+
+CMPLER:        CTYPE 1,JFCL,JFCL               ;0 MACRO
+       CTYPE K-1,<TRO F,F4FL>,JFCL     ;1 FORTRAN
+       CTYPE 1,<TRO F,COBFL>,JFCL      ;2 COBOL
+       CTYPE ALGSW,<PUSHJ P,ALGNAM>,JFCL       ;3 ALGOL
+                                       ;4 NELIAC
+                                       ;5 PL/1
+CMPLEN:
+
+     
+
+SUBTTL STARTING ADDRESS (BLOCK TYPE 7)
+
+
+START: PUSHJ   P,PRWORD        ;READ TWO DATA WORDS
+       TLNN    N,ISAFLG        ;SKIP IF IGNORE SA FLAG ON
+       HRRZM   C,STADDR        ;SET STARTING ADDRESS
+IFN NAMESW,<
+       MOVE    W,DTIN          ;PICK UP BINARY FILE NAME
+       TLNN N,ISAFLG
+       MOVEM   W,PRGNAM        ;SAVE IT
+       MOVE    W,1(N)          ;SET UP NAME OF THIS PROGRAM
+       TLNN    N,ISAFLG        ;DONT SET NAME IF IGNORING SA'S
+       PUSHJ   P,LDNAM>
+       PUSHJ   P,PRWORD        ;**OBSCURE RETURN TO LOAD1**
+
+IFN REENT,<
+RESTRX:        TLNE F,HIPROG
+       SKIPA X,HIGHX
+       MOVE X,LOWX
+       POPJ P,>
+     
+
+SUBTTL ONE PASS LOCAL DEFINITION (BLOCK TYPE 10)
+
+                               ;PMP PATCH FOR LEFT HALF FIXUPS
+IFN FAILSW!WFWSW,<
+LOCDLH:        IFN L,<CAMGE V,RINITL
+       POPJ P,>
+IFN REENT,<CAMGE V,HVAL1
+       SKIPA X,LOWX
+       MOVE X,HIGHX>
+       HLRZ T,@X       ;LOAD NEXT ADDRESS IN CHAIN
+       HRLM W,@X       ;INSERT VALUE INTO PROGRAM
+       MOVE V,T
+LOCDLF:        JUMPN V,LOCDLH  ;JUMP IF NOT LAST ADDR. IN CHAIN
+       POPJ    P,>
+IFN FAILSW,<
+LOCDLI:        PUSHJ   P,LOCDLF
+IFN REENT,<PUSHJ P,RESTRX>
+       AOSA LFTHSW     ;TURN OFF LEFT HALF FIX SW (WAS -1) AND SKIP
+LOCDLG:        SETOM LFTHSW    ;TURN ON LEFT HALF FIX SW>
+                       ;END PMP PATCH
+LOCD:  PUSHJ     P,RWORD               ;READ ONE DATA WORD
+       HLRZ    V,W             ;STORAGE POINTER IN LEFT HALF
+IFN FAILSW,<
+       SKIPE LFTHSW    ;LEFT HALF CHAINED? PMP
+       JRST LOCDLI     ;YES PMP
+       CAMN W,[-1]     ;LEFT HALF NEXT? PMP
+       JRST LOCDLG     ;YES, SET SWITCH PMP>
+       PUSHJ     P,SYM4A               ;LINK BACK REFERENCES
+IFN REENT,<PUSHJ P,RESTRX>
+       JRST    LOCD
+     
+
+SUBTTL LVAR FIX-UP (BLOCK TYPE 13)
+IFN WFWSW,<
+LVARB: PUSHJ P,PRWORD  ;THE FIRST TWO WORDS IN THE BLOCK
+       MOVEM W,VARLNG  ;AR SPECIAL. SECOND IS LENGTH OF VARIABLES
+IFN REENT,<    TLNE F,HIPROG
+               MOVE C,LOWR     ;USE LOW RELOC IF LOADING HI SEG>
+               ;ELSE C HAS RELOC FOR THIS PROGRAM, USE IT
+       HRRZM C,VARREL  ;THIS IS LOCATION 0 OF VARIABLE AREA
+LVLP:  PUSHJ P,PRWORD  ;THINGS COME IN PAIRS
+       TLNE C,200000   ;BIT ON IF SYMBOL TABLE FIXUP
+       JRST LVSYM
+       HLRZ V,W        ;NO GET LOC FROM LEFTH HALF OF SECOND
+       ADD W,VARREL    ;AND RELOCATE VARIABLE
+       TLNE C,400000   ;ON FOR LEFT HALF
+       JRST    [PUSHJ P,LOCDLF ;TAKE CARE OF IT
+IFN REENT,<    JRST LVLCOM]    ;RESET X>
+IFN REENT,<    JRST LVLP]      ;MUST BE LOW SEG X OK>
+       PUSHJ P,SYM4A   ;RIGHT HALF CHAIN
+IFN REENT,<LVLCOM:     PUSHJ P,RESTRX>
+       JRST LVLP
+LVSYM: MOVE V,B        ;GET SYMBOL TABLE POINTER
+       ADD C,VARREL    ;VALUE IS IN FIRST WORD FOR THESE
+       TLZ W,740000    ;MAKE SURE NO BITS ON
+       ADDI V,2        ;CORRECT POINTER TO SYMBOL TABLE
+SRSYM: MOVE A,-1(V)    ;GET A NAME
+       TLZN A,740000   ;CHECK FOR PROGRAM NAME
+       JRST LVLP       ;LEAVE (PROBABLY A NON-LOADED LOCAL)
+       CAMN A,W        ;IS IT THE RIGHT ONE??
+       JRST LVSYMD     ;YES
+       ADD V,SE3       ;CHECK NEXT ONE
+       JUMPL V,SRSYM   ;BUT ONLY IF SOME ARE THERE
+       JRST LVLP       ;GIVE UP
+LVSYMD:        TLNE C,400000   ;WHICH HALF??
+       JRST LVSYML     ;LEFT
+       ADD C,(V)       ;ADDITIVE FIXUP
+       HRRM C,(V)
+       MOVSI D,200000  ;DEFERED BITS
+LVSM1: PUSHJ P,COMSFX  ;GO TAKE CARE OF IT
+       JRST LVLP       ;NEXT PLEASE
+LVSYML:        HRLZS C
+       ADDM C,(V)      ;WE DON'T HAVE TO WORRY ABOUT OVERFLOW HERE
+       MOVSI D,400000  ;LEFT DEFERED BITS
+       JRST LVSM1      ;GO WORRY ABOUT DEFERED INTERNALS>
+     
+
+SUBTTL FAIL LOADER
+;ONLY LIST IF FAILSW=1
+       XLIST
+IFN FAILSW,<LIST>
+REPEAT 0,<IF POLISH FIXUPS CONTAIN GLOBAL REQUESTS WHICH
+CAN NOT BE SATISFIED WHEN THEY ARE SEEN, THEY MUST BE
+SAVED UNTIL THESE GLOBAL SYMBOLS BECOME DEFINED.
+THE POLISH FIXUP IS SAVED IN THE UNDEFINED TABLE (POINTED
+TO BY S). THE FIXUP IS SAVED IN TWO WORD BLOCKS THE FIRST
+WORD OF WHICH (THE ONE WHICH WOULD NORMALL CONTAIN THE SYMBOL)
+HAS SPECIAL BITS ON SO IT WILL NOT BE FOUND BY A SEARCH FOR
+A GLOBAL REQUEST. SINCE THE UNDEFINED TABLE MAY BE
+SHUFFELED INTO A RANDOM ORDER, IT IS NOT POSSIBLE TO KEEP
+ALL OF A POLISH FIXUP TOGETHER OR TO HAVE POINTERS IN
+THE USUAL SENCE FROM ONE TWO WORD BLOCK TO ANOTHER.
+SUFFICIENT INFORMATION IS THEREFORE GIVEN TO DETERMINE
+WHAT THE FIRST WORD OF THE NEXT DESIRED BLOCK IS AND THIS
+BLOCK IS FOUND BY SEARCHING THE UNDEFINED TABLE FOR A MATCH.
+EACH POLISH FIXUP WHICH IS ENTERED INTO THE UNDEFINED
+TABLE IS GIVEN A UNIQUE NUMBER CALLED THE "HEAD NUMBER".
+EACH ELEMENT OF THE FIXUP (EITHER OPERAND OR OPERATOR)
+IS ASSIGNED A NUMBER CALLED THE "OP NUMBER". THUS
+THE OP NUMBER AND HEAD NUMBER TOGETHER DETERMINE
+A SPECIFIC ELEMENT OF A SPECIFIC FIXUP. EACH ELEMENT
+(TWO WORD BLOCK) IS ARRANGED AS FOLLOWS:
+WORD 1:
+       BITS 0-4  THESE ARE THE USUAL CODE BITS OF A RADIX50
+               SYMBOL AND CONTAIN 44 TO DISTINGUISH
+               AN ELEMENT OF A POLISH FIXUP FROM OTHER
+               SYMBOLS IN THE UNDEFINED TABLE
+       BITS 5-17 THE HEAD NUMBER OF THIS FIXUP
+       BITS 18-30 THE OP NUMBER OF THIS ELEMENT
+       BITS 31-35 THE OPERAND FOR THIS ELEMENT 
+               OPERAND 2 INDICATES A WORD OF DATA
+WORD 2:
+       IF THE OPERAND IS 2 THIS WORD CONTAINS THE DATA
+
+       IF THIS IS NOT A DATA OPERATOR THEN THE LEFT AND
+       RIGHT HALVES OF THIS WORD POINT TO THE TWO OPERANDS
+       THE CONTENTS OF THE HALF WORD IS THE RIGHT HALF
+       OF THE FIRST WORD OF THE BLOCK POINTED
+       TO. THUS THE LEFT HALF OF THE FIRST WORD COMBINED
+       WITH ONE OF THESE HALF WORDS IS THE FIRST WORD
+       OF THE BLOCK POINTED TO AND CAN BE FOUND BY SEARCHING
+
+EACH FIXUP ALSO HAS A HEADER BLOCK. THIS BLOCK CONTAINS THE
+FOLLOWING INFORMATION:
+WORD 1:
+       BITS 0-17 0
+       BITS 18-21  44 
+       BITS 22-35 THE HEAD NUMBER OF THIS FIXUP
+
+WORD 2:
+       BITS 0-17 A COUNT OF THE NUMBER OF UNDEFINED
+               GLOBALS REMAINING IN THIS FIXUP
+       BITS 18-35 A HALF WORD POINTER OF THE
+               SAME TYPE FOUND IN OTHER ELEMENTS POINTING
+               TO THE FIRST ELEMENT OF POLISH
+               WHICH WILL BE THE STORE OPERATOR
+
+THE REQUESTS FOR THE GLOBAL SYMBOLS NEEDED BY THE FIXUP ARE
+ENTERED AS FOLLOWS:
+
+WORD 1:
+       BITS 0-4  04
+       BITS 5-35  RADIX 50 FOR THE NAME OF THE SYMBOL
+     
+
+(NOTE THIS IS JUST A STANDARD GLOBAL REQUEST)
+
+WORD 2:
+       BITS 0-4 44 (THIS IDENTIFIES IT AS "ADITIVE TYPE"
+               AND BIT 4 INDICATES POLISH)
+       BITS 5-17 THE HEAD NUMBER OF THE FIXUP
+               (THIS GIVES ENOUGH INFORMATION TO FIND THE HEADER
+               BLOCK AND UPDATE THE COUNT WHEN THE REQUEST IS
+     
+
+               SATISFIED)
+       BITS 18-35  A HALF WORD POINTER TO THE ELEMENT OF THE
+               FIXUP INTO WHICH THE VALUE OF
+     
+
+               THE SYMBOL SHOULD BE STORED
+>
+     
+
+IFN FAILSW,<
+;POLISH FIXUPS <BLOCK TYPE 11>
+
+PDLOV: SKIPE POLSW     ;PDL OV ARE WE DOING POLISH?
+       JRST COMPOL     ;YES
+       ERROR ,</PUSHDOWN OVERFLOW#/>
+       JRST LD2
+COMPOL:        ERROR ,</POLISH TOO COMPLEX#/>
+       JRST LD2
+
+
+;READ A HALF WORD AT A TIME
+
+RDHLF: TLON N,HSW      ;WHICH HALF
+       JRST NORD
+       PUSHJ P,RWORD   ;GET A NEW ONE
+       TLZ N,HSW       ;SET TO READ OTEHR HALF
+       MOVEM W,SVHWD   ;SAVE IT
+       HLRZS W         ;GET LEFT HALF
+       POPJ P,         ;AND RETURN
+NORD:  HRRZ W,SVHWD    ;GET RIGHT HALF
+       POPJ P,         ;AND RETURN
+
+
+POLFIX:        MOVE D,[IOWD PPDL,PPDB] ;SET UP THE POLISH PUSHDOWN LIST
+       MOVEI V,100     ;IN CASE OF ON OPERATORS
+       MOVEM V,SVSAT
+       SETOM POLSW     ;WE ARE DOING POLISH
+       TLO N,HSW       ;FIX TO READ A WORD THE FIRST TIME
+       SETOM GLBCNT    ;NUMBER OF GLOBALS IN THIS FIXUP
+       SETOM OPNUM     ;NUMBER OF OPERANDS AND OPERATORS THIS FIXUP
+       PUSH D,[15]     ;FAKE OPERATOR SO STORE WILL NOT HACK
+
+RPOL:  PUSHJ P,RDHLF   ;GET A HLAF WORD
+       TRNE W,400000   ;IS IT A STORE OP?
+       JRST STOROP     ;YES, DO IT
+IFN WFWSW,<CAIN W,15
+       JRST    [PUSHJ P,RDHLF  ;THIS TRICK FOR VARIABLES
+               ADD W,VARREL    ;HOPE SOMEONE HAS DONE
+               HRRZ C,W        ;A BLOCK TYPE 13
+               JRST HLFOP]>
+       CAIGE W,3       ;0,1,2 ARE OPERANDS
+       JRST OPND
+       CAILE W,14      ;14 IS HIGHEST OPERATOR
+       JRST LOAD4A     ;ILL FORMAT
+       PUSH D,W        ;SAVE OPERATOR IN STACK
+       MOVE V,DESTB-3(W)       ;GET NUMBER OF OPERANDS NEEDED
+       MNVEM V,SVSAT   ;ALSO SAVE IT
+       JRST RPOL       ;BACK FOR MORE
+
+     
+
+;HANDLE OPERANDS. THIS GETS COMPLICATED BECAUSE OF THE PRESENCE OF
+;GLOBAL REQUESTS
+
+OPND:  MOVE A,W        ;GET THE OPERAND TYPE HERE
+       PUSHJ P,RDHLF   ;THIS IS AT LEAST PART OF THE OPERAND
+       MOVE C,W        ;GET IT INTO C
+       JUMPE A,HLFOP   ;0 IS HALF-WORD OPERAND
+       PUSHJ P,RDHLF   ;NEED FULL WORD, GET SECOND HALF
+       HRL C,W ;GET HALF IN RIGHT PLACE
+       MOVSS C         ;WELL ALMOST RIGHT
+       SOJE A,HLFOP    ;1 IS FULL WORD, 2 IS GLOBAL REQUEST
+       PUSHJ P,SDEF    ;SEE IF IT IS ALREADY DEFINED
+       JRST    [MOVE C,2(A)    ;YES, WE WIN
+               JRST HLFOP]
+       AOSN GLBCNT     ;NO, INCREMENT NUMBER OF GLOBALS THIS FIXUP
+       AOS HEADNM      ;INCREMENT FIXUP NUMBER IF FIRST GLOBAL
+       AOS W,OPNUM     ;GET AN OPERAND NUMBER
+       LSH W,5         ;SPACE FOR TYPE
+       IORI W,2        ;TYPE 2 IS GLOBAL 
+       HRL W,HEADNM    ;GET FIXUP NUMBER
+       PUSHJ P,SYM3X2  ;AND PUT INTO UDEFINED AREA ALONG WITH NAME
+       MOVE C,W        ;ALSO PUT THAT PART OF THE FIXUP IN
+       PUSHJ P,SYM3X2
+       SKIPA A,[400000]        ;SET UP GLOBAL FLAG
+HLFOP: MOVEI A,0       ;VALUE OPERAND FLAG
+HLFOP1:        SOJL V,CSAT     ;ENOUGH OPERANDS SEEN?
+       PUSH D,C        ;NO, SAVE VALUE(OR GLOBAL NAME)
+       HRLI A,400000   ;PUT IN A VALUE MARKER
+       PUSH D,A        ;TO THE STACK
+       JRST RPOL       ;GET MORE POLISH
+
+     
+
+;HAVE ENOUGH OPERANDS FOR THE CURRENT OPERATOR
+
+CSAT:  HRRZS A         ;KEEP ONLY THE GLOBAL-VALUE HALF
+       SKIPN SVSAT     ;IS IT UNARY
+       JRST UNOP       ;YES, NO NEED TO GET 2ND OPERAND
+       HRL A,(D)       ;GET GLOBAL VALUE MARKER FOR 2ND OP
+       POP D,W
+       POP D,W         ;VALUE OR GLOBAL NAME
+UNOP:  POP D,V         ;OPERATOR
+       JUMPN A,GLOB    ;IF EITHER IS A GLOBAL HANDLE SPECIALLY
+       XCT OPTAB-3(V)  ;IF BOTH VALUES JUST XCT
+       MOVE C,W        ;GET THE CURRENT VALUE
+SETSAT:        SKIPG V,(D)     ;IS THERE A VALUE IN THE STACK
+       MOVE V,-2(D)    ;YES, THIS MUST BE THE OPERATOR
+       MOVE V,DESTB-3(V)       ;GET NUMBER OF OPERANDS NEEDED
+       MOVEM V,SVSAT   ;SAVE IT HERE
+       SKIPG (D)       ;WAS THERE AN OPERAND
+       SUBI V,1        ;HAVE 1 OPERAND ALREADY
+       JRST HLFOP1     ;GO SEE WHAT WE SHOULD DO NOW
+
+;HANDLE GLOBALS
+GLOB:  TRNE A,-1       ;IS IT IN RIGHT HALF
+       JRST TLHG       ;NO, NEED TO PUT THIS VALUE INTO THE FIXUP LIST
+       PUSH P,W        ;SAVE FOR A WHILE
+       MOVE W,C        ;THE VALUE
+       AOS C,OPNUM     ;GET AN OPERAND NUMBER
+       LSH C,5         ;AND PUT IN TYPE
+       IORI C,2        ;VALUE TYPE
+       HRL C,HEADNM    ;THE FIXUP NUMBER
+       PUSHJ P,SYM3X2
+       POP P,W         ;RETRIEVE THE OTHER VALUE
+TLHG:  SKIPE SVSAT     ;WAS THIS A UNARY OPERATOR
+       TLNE A,-1       ;WAS THERE A GLOBAL IN LEFT HALF
+       JRST GLSET
+       PUSH P,C        ;SAVE THE FIRST OPERAND
+       AOS C,OPNUM     ;SEE ABOVE
+       LSH C,5
+       IORI C,2
+       HRL C,HEADNM
+       PUSHJ P,SYM3X2
+       MOVE W,C
+       POP P,C
+
+GLSET: EXCH C,W        ;GET THEM IN THE OTHER ORDER
+       HRL W,C         ;SET UP THE OPERATOR LINK
+       AOS C,OPNUM
+       LSH C,5 ;SPACE FOR THYPE
+       IOR C,V         ;THE OPERATOR
+       HRL C,HEADNM
+       PUSHJ P,SYM3X2  ;INTO THE UNDEF LIST
+               MOVEI A,400000  ;SET UP AS A GLOBAL VALUE
+       JRST SETSAT     ;AND SET UP FOR NEXT OPERATOR
+     
+
+;FINALLY WE GET TO STORE THIS MESS
+
+STOROP:        MOVE T,-2(D)    ;THIS SHOULD BE THE FAKE OPERATOR
+       CAIE T,15       ;IS IT
+       JRST LOAD4A     ;NO, ILL FORMAT
+       HRRZ T,(D)      ;GET THE VALUE TYPE
+       JUMPN T,GLSTR   ;AND TREAT GLOBALS SPECIAL
+       MOVE A,W        ;THE TYPE OF STORE OPERATOR
+       CAIGE A,-3
+       PUSHJ P,FSYMT
+       PUSHJ P,RDHLF   ;GET THE ADDRESS
+       MOVE V,W        ;SET UP FOR FIXUPS
+       POP D,W         ;GET THE VALUE
+       POP D,W         ;AFTER IGNORING THE FLAG
+       PUSHJ P,@STRTAB+6(A)    ;CALL THE CORRECT FIXUP ROUTINE
+COMSTR:        SETZM POLSW     ;ALL DONE WITH POLISH
+IFN REENT,<PUSHJ P,RESTRX>
+       MOVE T,OPNUM    ;CHECK ON SIZES
+       MOVE V,HEADNM
+       CAIG V,477777
+       CAILE T,17777
+       JRST COMPOL     ;TOO BIG, GIVE ERROR
+       PUSHJ P,RWORD   ;THIS SHOULD GET US OUT (I.E RUN OUT COUNT)
+       JRST LOAD4A     ;IF NOT, SOMETHING IS WRONG
+
+STRTAB:        EXP ALSYM,LFSYM,RHSYM,ALSTR,LOCDLF,SYM4A,FAKESY
+
+GLSTR: MOVE A,W
+       CAIGE A,-3
+       PUSHJ P,FSYMT
+       PUSHJ P,RDHLF   ;GET THE STORE LOCATION
+       MOVEI A,23(A)
+       POP D,V         ;GET VALUE
+       POP D,V
+       HRLM V,W        ;SET UP STORAGE ELEMENT
+       AOS C,OPNUM
+       LSH C,5
+       IOR C,A
+       HRL C,HEADNM
+       PUSHJ P,SYM3X2
+       MOVE W,C        ;NOW SET UP THE HEADER
+       AOS V,GLBCNT    ;WHICH HAS NUMBER OF GLOBALS
+       HRLM V,W
+       HRRZ C,HEADNM
+       PUSHJ P,SYM3X2
+       JRST COMSTR     ;AND FINISH
+
+     
+
+ALSTR1:        IFN L,<CAMGE V,RINITL
+       POPJ P,>
+IFN REENT,<CAMGE V,HVAL1
+               SKIPA X,LOWX
+       MOVE X,HIGHX>
+       HRRZ T,@X
+       MOVEM W,@X      ;FULL WORD FIXUPS
+       MOVE V,T
+ALSTR: JUMPN V,ALSTR1
+       POPJ P,
+DESTB: EXP 1,1,1,1,1,1,1,1,0,0,100
+
+OPTAB: ADD W,C
+       SUB W,C
+       IMUL W,C
+       IDIV W,C
+       AND W,C
+       IOR W,C
+       LSH W,(C)
+       XOR W,C
+       SETCM W,C
+       MOVN W,C
+       REPEAT 7,<JRST STRSAT>
+
+
+FSYMT: PUSHJ P,RDHLF   ;FIRST HALF OF SYMBOL
+       HRL V,W
+       PUSHJ P,RDHLF
+       HRR V,W
+       PUSH D,A        ;SAVE STORE TYPE
+       PUSHJ P,RDHLF   ;GET BLOCK NAME
+       HRL C,W
+       PUSHJ P,RDHLF
+       HRR C,W
+       TLO C,140000    ;MAKE BLOCK NAME
+       PUSHJ P,SDEF    ;FIND IT
+       CAMN A,B
+       JRST FNOLOC     ;MUST NOT BE LOADING LOCALS
+FSLP:  LDB C,[POINT 32,-1(A),35]       ;GET NAME
+       CAMN C,V
+       JRST FNDSYM
+       SUB A,SE3
+       CAME A,B        ;ALL DONE?
+       JRST FSLP       ;NO
+FNOLOC:        POP D,A
+       MOVEI A,0       ;SET FOR A FAKE FIXUP
+       AOS (P)
+       POPJ P,
+FNDSYM:        MOVEI W,(A)     ;LOC OF SYMBOL
+       SUB W,HISTRT
+       POP D,A
+       AOS (P)
+       POPJ P,
+
+LFSYM: ADD V,HISTRT
+       HRLM W,(V)
+       MOVSI D,400000  ;LEFT HALF
+       JRST COMSFX
+RHSYM: ADD V,HISTRT
+       HRRM W,(V)
+       MOVSI D,200000
+       JRST COMSFX
+FAKESY:        POPJ P,         ;IGNORE
+     
+
+POLSAT:        PUSH P,C        ;SAVE SYMBOL
+       MOVE C,V        ;POINTER
+       PUSHJ P,SREQ    ;GO FIND IT
+       SKIPA
+       JRST LOAD4A     ;SOMETHING IS ROTTEN IN DENMARK
+       MOVEM W,2(A)    ;STORE VALUE
+       HLRZS C         ;NOW FIND HEADER
+       PUSHJ P,SREQ
+       SKIPA
+       JRST LOAD4A
+       HRLZI V,-1      ;AND DECREMENT COUNT
+       ADDB V,2(A)
+       TLNN V,-1       ;IS IT NOW 0
+       JRST PALSAT     ;YES, GO DO POLISH
+       POP P,C         ;RESTORE SYMBOL
+       JRST SYM2W1     ;AND RETURN
+
+PALSAT:        PUSH P,W        ;SAVE VALUE
+       MOVEM C,HDSAV   ;SAVE THE HEADER NUMBER
+       MOVE D,[IOWD PPDL,PPDB] ;SET UP A PDL
+       MOVE C,V        ;GET THE POINTER
+               HRL C,HDSAV     ;AND THE FIXUP NUMBER
+       PUSHJ P,REMSYM  ;REMOVE THE HEADER FORM EXISTANCE
+       PUSHJ P,SREQ    ;GO FINE THE NEXT LINK
+       SKIPA
+       JRST LOAD4A     ;LOSE
+       ANDI C,37       ;GET OPERATOR TYPE
+       HRRZ V,2(A)     ;PLACE TO STORE
+       PUSH D,V
+       PUSH D,[XWD 400000,0]
+       PUSH D,C        ;THIS HAD BETTER BE A STORE OR WE ARE IN TROUBLE
+       HLRZ C,2(A)     ;GET POINTER TO POLISH CHAIN
+PSAT1: PUSHJ P,REMSYM  ;REMOVE SYMBOL
+
+     
+
+PSAT2: HRL C,HDSAV     ;GET FIXUP NUMBER
+       PUSHJ P,SREQ    ;LOOK FOR IT
+       SKIPA
+       JRST LOAD4A
+       ANDI C,37       ;THE OPERATOR NUMBER
+       CAIN C,2        ;IS IT AN OPERAND?
+       JRST PSOPD      ;YES, GO PROCESS
+       PUSH D,C        ;YES STORE IT
+       SKIPN DESTB-3(C)        ;IS IT UNARY
+       JRST PSUNOP     ;YES
+       HLRZ C,2(A)     ;GET FIRST OPERAND
+       HRLI C,600000   ;AND MARK AS VALUE
+       PUSH D,C
+PSUNOP:        HRRZ C,2(A)     ;OTHER OPERAND
+       JRST PSAT1      ;AND AWAY WE GO
+
+PSOPD: MOVE C,2(A)     ;THIS IS A VALUE
+       PUSHJ P,REMSYM  ;GET RID OF THAT PART OF THE CHAIN
+PSOPD1:        SKIPG V,(D)     ;IS THERE A VALUE IN THE STACK
+       JRST PSOPD2     ;YES, TAKE GOOD CARE OF IT
+COMOP: POP D,V         ;NO, GET THAT OPERATOR OUT OF THERE
+       XCT OPTAB-3(V)  ;AND DO IT
+       MOVE C,W        ;GET RESULT IN RIGHT PLACE
+       JRST PSOPD1     ;AND TRY FOR MORE
+PSOPD2:        TLNE V,200000   ;IS IT A POINTER
+       JRST DBLOP      ;YES, NEEDS MORE WORK
+       MOVE W,C        ;NO, ONE WE HAVE IS FIRST OPND, GET IT INTO W
+       POP D,C         ;VALUE POINTER
+       POP D,C         ;2ND OPERAND INTO C
+       JRST COMOP      ;GO PROCESS OPERATOR
+
+DBLOP: EXCH C,(D)      ;PUT VALUE IN STACK AND RETRIEV POINTER
+       PUSH D,[XWD 400000,0]   ;MARK AS VALUE
+       JRST PSAT2      ;AND GO LOOK FOR MORE TROUBLE
+
+LINK:  PUSHJ P,PRWORD  ;GET TWO WORDS
+       JUMPLE C,ENDLNK ;THIS IS AN END OF LINK WORD
+       CAILE C,20      ;IS IT IN RANGE?
+       JRST LOAD4A
+       HRRZ V,W        ;GET THE ADDRESS
+       HRRZ W,LINKTB(C)        ;GET CURRENT LINK
+IFN L,<        CAML V,RINITL   ;LOSE>
+       HRRM W,@X       ;PUT INTO CORE
+       HRRM V,LINKTB(C)        ;SAVE LINK FOR NEXT ONE
+       JRST LINK       ;GO BACK FOR MORE
+ENDLNK:        MOVNS C         ;GET ENTRY NUMBER
+       JUMPE C,LOAD4A  ;0 IS A LOSER
+       CAILE C,20      ;CHECK RANGE
+       JRST LOAD4A
+               HRLM W,LINKTB(C)        ;SAVE END OF LINK INFO
+       JRST LINK       ;MORE
+     
+
+STRSAT:        MOVE W,C        ;GET VALUE TO STORE IN W
+       MOVE C,V        ;GET OPERATOR HERE
+       POP D,V
+       POP D,V         ;GET ADDRESS TO STORE
+       PUSHJ P,@STRTAB-15(C)
+IFN REENT,<PUSHJ P,RESTRX>
+       POP P,W ;RESTORE THINGS
+       POP P,C
+       JRST SYM2W1
+
+ALSYM: ADD V,HISTRT
+       MOVEM W,(V)
+       MOVSI D,600000
+>
+       LIST            ;END OF FAILSW CODE
+IFN FAILSW!WFWSW,<
+COMSFX:        IFE REENT,<PUSHJ P,SYMFX1
+       JRST RESTRX>
+IFN REENT,<JRST SYMFX1>>
+
+REMSYM:        MOVE T,1(S)
+       MOVEM T,1(A)
+       MOVE T,2(S)
+       MOVEM T,2(A)
+       ADD S,SE3
+       MOVEM A,SVA
+       POPJ P,
+
+     
+
+SUBTTL LIBRARY INDEX (BLOCK TYPE 14)
+
+       COMMENT *       DIRECT ACCESS LIBRARY SEARCH MODE
+       INDEX WRITTEN BY FUDGE2.SEE DIDAL DOC (100-540-001-00)
+       DESIGN AND CODING BY D.M.NIXON  JUL-AUG 1970
+       *
+
+IFN DIDAL,<
+
+INDEX8:        POP     P,LSTBLK        ;SET UP LSTBLK FOR NEXT PROG
+       PUSHJ   P,WORD          ;READ FIRST WORD
+       HLRZ    A,W             ;BLOCK TYPE ONLY
+       CAIE    A,14            ;IS IT AN INDEX?
+       JRST    INDEXE          ;NO, ERROR
+       JRST    INDEX9          ;DON'T SET FLAG AGAIN
+
+INDEX0:        TRO     F,XFLG          ;SIGNAL INDEX IN CORE
+       MOVEI   A,1             ;START ON BLOCK 1 (DSK)
+       HRROM   A,LSTBLK        ;BUT INDICATE AN INDEX
+       MOVE    A,ILD1          ;INPUT DEVICE
+       DEVCHR  A,
+       TLNE    A,100           ;IS IT A DTA?
+       TRO     F,DTAFLG        ;YES
+INDEX9:        MOVEI   A,AUX+2         ;AUX BUFFER
+       HRLI    A,4400          ;MAKE BYTE POINTER
+       MOVEM   A,ABUF1         ;AND SAVE IT
+       HRL     A,BUFR1         ;INPUT BUFFER
+       BLT     A,AUX+201       ;STORE BLOCK
+       TRO     F,LSTLOD        ;AND FAKE LAST PROG READ
+INDEX1:        ILDB    T,ABUF1
+       HLRE    A,T             ;GET WORD COUNT
+       JUMPL   A,INDEX3        ;END OF BLOCK IF NEGATIVE
+       CAIE    A,4             ;IS IT ENTRY
+       JRST    INDEX
+       HRRZS   T               ;WORD COUNT ONLY
+INDEX2:        ILDB    C,ABUF1         ;GET NEXT SYMBOL
+       TLO     C,040000        ;
+       PUSHJ   P,SREQ          ;SEARCH FOR IT
+       SOJA    T,INDEX4        ;REQUEST MATCHES
+       SOJG    T,INDEX2        ;KEEP TRYING
+       ILDB    T,ABUF1         ;GET POINTER WORD
+       TRZN    F,LSTLOD        ;WAS LAST PROG LOADED?
+       JRST    INDEX1          ;NO
+       TRNN    F,DTAFLG        ;ALWAYS SAVE IF DTA???
+       SKIPL   LSTBLK          ;SKIP IF LAST BLOCK WAS AN INDEX
+       MOVEM   T,LSTBLK        ;SAVE POINTER FOR CALCULATIONS
+       JRST    INDEX1          ;GET NEXT PROG
+     
+
+INDEX4:        ADDM    T,ABUF1
+       ILDB    A,ABUF1
+       PUSH    P,A             ;SAVE THIS BLOCK
+       TROE    F,LSTLOD        ;DID WE LOAD LAST  PROG?
+       JRST    [SKIPGE LSTBLK  ;WAS LAST BLOCK AN INDEX?
+               JRST    NXTBLK  ;YES, SO GET NEXT ONE
+               MOVEM   A,LSTBLK
+               JRST    LOAD1]  ;NEXT PROG IS ADJACENT
+       HRRZ    T,LSTBLK        ;GET LAST BLOCK NUMBER
+       CAIN    T,(A)           ;IN THIS BLOCK?
+       JRST    THSBLK          ;YES
+NXTNDX:        TRNE    F,DTAFLG        ;DIFFERENT TEST FOR DTA
+       JRST    NXTDTA          ;CHECK IF NEXT BUFFER IN CORE
+       CAIN    T,-1(A)         ;NEXT BLOCK?
+       JRST    NXTBLK          ;YES,JUST DO INPUT
+INDEX5:        USETI   1,(A)           ;SET ON BLOCK
+       WAIT    1,              ;LET I/O FINISH
+       MOVSI   C,(1B0)         ;CLEAR RING USE BIT IF ON
+ ; ****** THE DEC BASTARDS DON'T READ THEIR OWN MANUALS *****
+       HLLM    C,BUFR          ;INDICATE VIRGIN BUFFER
+; ****** END OF THE CURRENT DEC IDIOCY **********:
+       HRRZ    T,BUFR
+       SKIPL   (T)
+       JRST    NXTBLK          ;ALL DONE NOW
+       ANDCAM  C,(T)           ;CLEAR USE BIT
+       HRRZ    T,(T)           ;GET NEXT BUFFER
+       JRST    .-4             ;LOOP
+
+NXTDTA:        WAIT    1,              ;LET I/O RUN TO COMPLETION
+       HRRZ    T,BUFR          ;GET POINTER TO CURRENT BUFFER
+       HLRZ    T,1(T)          ;FIRST DATA WORD IS LINK
+       CAIE    T,(A)           ;IS IT BLOCK WE WANT?
+       JRST    INDEX5          ;NO
+NXTBLK:        IN      1,
+       JRST    NEWBLK          ;IT IS NOW
+       JRST    WORD3           ;EOF OR ERROR
+
+NEWBLK:        MOVE    A,(P)           ;GET CURRENT BLOCK
+       JUMPL   A,INDEX8        ;JUST READ AN INDEX
+       HLRZS   A               ;GET WORD COUNT
+       JUMPE   A,[TRNN F,DTAFLG        ;WORD COUNT OK IF ON DTA
+               SOS     BUFR2
+               JRST    INDEX7]
+       SKIPL   LSTBLK          ;WAS LAST BLOCK AN INDEX?
+       AOJA    A,INDEX6        ;NO, ALWAYS ONE WORD OUT THEN
+       HRRZ    T,AUX+3         ;GET FIRST ENTRY BLOCK TYPE COUNT
+       HRRZ    T,AUX+4(T)      ;GET FIRST POINTER WORD
+       MOVEM   T,LSTBLK        ;SOME WHERE TO STORE IT
+       HRRZ    T,(P)           ;GET CURRENT BLOCK NUMBER
+       CAME    T,LSTBLK        ;SAME BLOCK?
+       AOJA    A,INDEX6        ;NO
+       TRNN    F,DTAFLG        ;BUFR2 OK IF DTA???
+       SOS     BUFR2           ;ONE WORD TO MANY THOUGH
+       JRST    INDEX6          ;YES, WORD COUNT WILL BE CORRECT
+
+     
+
+THSBLK:        SUB     A,LSTBLK        ;GET WORD DIFFERENCE
+       MOVSS   A               ;INTO RIGHT HALF
+INDEX6:        ADDM    A,BUFR1
+       MOVNS   A
+       ADDM    A,BUFR2
+INDEX7:        POP     P,LSTBLK        ;STORE THIS AS LAST BLOCK READ
+       JRST    LOAD1
+
+INDEX3:        HRRE    A,T             ;GET BLOCK # OF NEXT INDEX
+       JUMPL   A,EOF           ;FINISHED IF -1
+       PUSH    P,T             ;STACK THIS BLOCK
+       HRRZ    T,LSTBLK        ;GET LAST BLOCK
+       JRST    NXTNDX          ;CHECK IF NEXT BUFFER IN CORE
+
+INDEX: IN      1,              ;GET NEXT BUFFER
+       SOSA    BUFR2           ;O.K. RETURN, BUT 1 WORD TOO MANY
+       JRST    WORD3           ;ERROR OR EOF
+       PUSHJ   P,WORD          ;READ FIRST WORD
+INDEXE:        TRZE    F,XFLG          ;INDEX IN CORE?
+       TTCALL  3,[ASCIZ /LIBRARY INDEX INCONSISTENT - CONTINUING
+/]                             ;WARNING MESSAGE
+       JRST    LOAD1A+1        ;AND CONTINUE
+>
+
+     
+
+SUBTTL ALGOL OWN BLOCK (TYPE 15)
+
+IFN ALGSW,<
+ALGBLK:
+IFN SAILSW,<TRNN F,ALGFL       ;IF NOT ALGOL
+       JRST    LDPRG           ;MUST BE SAIL BLOCK TYPE 15>
+       PUSHJ P,RWORD           ;READ 3RD WORD
+       HLRZ    V,W             ;GET START OF OWN BLOCK
+       MOVEI   C,(W)           ;GET LENGTH OF OWN BLOCK
+       MOVEM   C,OWNLNG        ;SAVE IT TO FIX RELOC AT END
+       PUSHJ   P,ALGB2         ;FIX AND CHECK PROG BREAK
+       ADDI    V,(R)           ;RELOCATE
+       MOVEI   W,(V)           ;GET CURRENT OWN ADDRESS
+       EXCH    W,%OWN          ;SAVE FOR NEXT TIME
+       MOVEM   W,@X            ;STORE LAST OWN ADDRESS IN LEFT HALF
+ALGB1: PUSHJ   P,RWORD         ;GET DATA WORD
+       HLRZ    V,W             ;GET ADDRESS TO FIX UP
+       HRRZS   W               ;RIGHT HALF ONLY
+       ADD     W,%OWN          ;ADD IN ADDRESS OF OWN BLOCK
+       ADDM    W,@X            ;FIX UP RIGHT HALF
+       JRST    ALGB1           ;LOOP TIL DONE
+
+ALGNAM:        JUMPE   W,CPOPJ         ;NOT ALGOL MAIN PROG
+       TROE    F,ALGFL         ;SET ALGOL SEEN FLAG
+       JRST    ALGER1          ;ONLY ONE ALGOL MAIN PROG ALLOWED
+IFN REENT,<TRNN F,SEENHI       ;ANYTHING IN HIGH SEGMENT?>
+       CAME    R,[XWD W,JOBDA] ;ANYTHING LOADED IN LOW SEGMENT?
+       JRST    ALGER2          ;YES, ERROR ALSO
+       SETZM   %OWN            ;INITIALISE OWN AREA POINTER
+IFN REENT,<TRO F,VFLG          ;DEFAULT RE-ENTRANT OP-SYSTEM>
+ALGB2: ADDI    H,(W)           ;FIX PROG BREAK
+IFN REENT,<CAML        H,HILOW
+       MOVEM   H,HILOW         ;HIGHEST LOW CODE LOADED>
+       CAILE   H,1(S)          ;SKIP IF SUFFICIENT CORE AVAILABLE
+IFN EXPAND,<JRST [PUSHJ P,XPAND>
+               JRST    FULLC
+IFN EXPAND,<   JRST    .+1]>
+       POPJ    P,
+
+ALGER1:        ERROR   ,</ONLY ONE ALGOL MAIN PROGRAM ALLOWED#/>
+       JRST    LD2
+
+ALGER2:        ERROR   ,</ALGOL MAIN PROGRAM MUST BE LOADED FIRST#/>
+       JRST    LD2
+
+>
+     
+
+SUBTTL SAIL BLOCK TYPE 15
+
+COMMENT * BLOCK TYPE 15 AND 16. SIXBIT FOR  FIL,PPN,DEV
+IN THE BLOCK. SEARCH TABLE FOR ALREADY REQUESTED. IF NOT
+ENTER REQUEST. ORIGINAL CODE BY DCS REWRITTEN BY WFW*
+
+IFN SAILSW,<
+IFE ALGSW<ALGBLK:>
+LDPRG: MOVEI D,PRGFLS-1        ;SET UP SOMETHING WE CAN SEARCH WITH
+       MOVE W,PRGPNT   ;AND CURRENT POINTER
+       PUSHJ P,LDSAV   ;GO ENTER (WILL NOT RETURN IF RUNS OUT)
+       MOVEM D,PRGPNT
+       JRST LDPRG      ;BACK FOR MORE
+LDLIB: MOVEI D,LIBFLS-1
+       MOVE W,LIBPNT
+       PUSHJ P,LDSAV
+       MOVEM D,LIBPNT
+       JRST LDLIB      ;LOOKS JUST LIKE THE LAST ONE, DOESN'T IT
+
+LDSAV: HRLI D,-RELLEN-1        ;GET AOBJN SET UP
+       MOVEM W,LODPN2# ;SAV IT
+       PUSHJ P,PRWORD  ;GET FILE,PPN
+       MOVE A,W        ;SAVE ONE
+       PUSHJ P,RWORD   ;AND DEVICE
+FILSR: CAMN D,LODPN2
+       JRST FENT       ;HAVE GOTTEN THERE, ENTER FILE
+       CAME C,PRGFIL(D)        ;CHECK FOR MATCH
+       JRST NOMT       ;NOT FILE
+       CAME A,PRGPPN(D)
+       JRST NOMT       ;NO PPN
+       CAME W,PRGDEV(D)
+NOMT:  AOBJN D,FILSR   ;AND NOT DEVICE SHOULD ALWAYS JUMP
+       MOVE D,LODPN2
+       POPJ P,         ;JUST RETURN CURRENT POINTER
+FENT:  MOVE D,LODPN2   ;ENTER IT
+       AOBJP D,WRONG   ;THAT IS IF NOT TOO MANY
+       MOVEM C,PRGFIL-1(D)     ;HAVE ALREADY INDEXED
+       MOVEM A,PRGPPN-1(D)     ;HENCE THE -1
+       MOVEM W,PRGDEV-1(D)
+       POPJ P,
+WRONG: ERROR ,</TOO MANY DEMANDED FILES#/>
+       JRST LD2
+>
+     
+
+SUBTTL SYMBOL TABLE SEARCH SUBROUTINES
+
+;      ENTERED WITH SYMBOL IN C
+;      RETURN IS WITH POINTER IN A IF MATCHING SYMBOL FOUND
+;      OTHERWISE, A SKIP ON RETURN OCCURS
+
+SREQ:  JUMPGE  S,CPOPJ1        ;JUMP IF NO UNDEF. SYMBOLS
+       SKIPA   A,S             ;LOAD REQUEST SEARCH POINTER
+SDEF:  MOVE    A,B             ;LOAD DEF. SYMBOL SEARCH POINTER
+SDEF1: CAMN    C,1(A)
+       POPJ    P,              ;SYMBOLS MATCH, RETURN
+IFE K,<        TLNE    N,F4SW          ;ARE WE IN FORTRAN?
+       JRST    SDEF2           ;YES,JUST TRY NEXT SYMBOL>
+       TLC     C,400000        ;MIGHT BE SUPPRESSED  INTERNAL
+       CAMN    C,1(A)          ;WAS IT?
+       JRST    [TLO C,400000   ;YES, SO ENSURE IT'S SUPPRESSED
+               MOVEM C,1(A)    ;STORE SUPPRESSED DEFINITION
+               POPJ    P,]     ;YES
+       TLC     C,400000        ;NO,TRY NEXT SYMBOL
+SDEF2: ADD     A,SE3
+       JUMPL   A,SDEF1
+IFE K,<        JRST    CPOPJ1          ;SYMBOL NOT FOUND SKIPS ON RETURN>
+IFN K,<
+CPOPJ1:        AOS     (P)
+       POPJ    P,>
+     
+
+SUBTTL RELOCATION AND BLOCK INPUT
+
+PRWORD: PUSHJ   P,RWORD                ;READ A WORD PAIR
+       MOVE    C,W             ;LOAD C WITH FIRST DATA WORD
+       TRNE    E,377777                ;TEST FOR END OF BLOCK
+       JRST    RWORD1          ;INPUT SECOND WORD OF PAIR
+       MOVEI   W,0             ;NO SECOND WORD, ASSUME ZERO
+       POPJ    P,
+
+RWORD: TRNN    E,377777        ;TEST FOR END OF BLOCK
+       JRST    LOAD1           ;RETURN TO LOAD THE NEXT BLOCK
+RWORD1: AOBJN   E,RWORD2       ;JUMP IF DATA WORD NEXT
+       PUSHJ   P,WORD          ;READ CONTROL WORD
+       MOVE    Q,W             ;DON'T COUNT RELOCATION WORDS
+       HRLI    E,-22           ;SET RELOCATION WORD BYTE COUNT
+RWORD2:        PUSHJ   P,WORD          ;READ INPUT WORD
+       JUMPGE  Q,RWORD3        ;TEST LH RELOCATION BIT
+       TRNN    F,TWOFL         ;POSSIBLE TWO SEGMENTS?
+       JRST    RWORD5          ;NO
+       MOVSS   W
+       PUSHJ   P,CHECK         ;USE CORRECT RELOCATION
+       HRRI    W,@R
+       MOVSS   W
+       JRST    RWORD3          ;AND TEST RIGHT HALF
+RWORD5:        HRLZ    T,R
+       ADD     W,T             ;LH RELOCATION
+RWORD3:        TLNN    Q,200000        ;TEST RH RELOCATION BIT
+       JRST    RWORD4          ;NOT RELOCATABLE
+       TRNE    F,TWOFL         ;POSSIBLE TWO SEGMENTS?
+       PUSHJ   P,CHECK         ;USE CORRECT RELOCATION
+       HRRI    W,@R            ;RH RELOCATION
+RWORD4:        LSH     Q,2
+       POPJ    P,
+
+CHECK: MOVE    T,HVAL1         ;START OF HISEGMENT
+       CAIG    T,NEGOFF(W)     ;IN HISEG?
+       JRST    [SUBI   W,(T)   ;YES REMOVE OFSET
+               POPJ    P,]
+       HRRI    W,@LOWR         ;USE LOW SEG RELOC
+       JRST    CPOPJ1          ;SKIP RETURN
+     
+
+SUBTTL PRINT STORAGE MAP SUBROUTINE
+
+PRMAP: CAIN    D,1             ;IF /1M PRINT LOCAL SYMBOLS
+       TROA    F,LOCAFL        ;YES,TURN ON FLAG
+       TRZ     F,LOCAFL        ;CLEAR JUST IN CASE
+       PUSHJ   P,FSCN1         ;LOAD OTHER FILES FIRST
+       PUSHJ   P,CRLFLF        ;START NEW PAGE
+       HRRZ    W,R
+IFN REENT,<CAIG        W,JOBDA ;LOADED INTO LOW SEGMENT
+       JRST    NOLOW           ;DON'T PRINT IF NOTHING THERE>
+       PUSHJ     P,PRNUM0
+IFE REENT,<ERROR 7,<?IS THE PROGRAM BREAK@?>>
+IFN REENT,<ERROR 7,<?IS THE LOW  SEGMENT BREAK@?>
+       PUSHJ   P,CRLF          ;CR-LF ON ALL BUT TTY   
+NOLOW: MOVE    W,HVAL          ;HISEG BREAK
+       CAMG    W,HVAL1         ;HAS IT CHANGED
+       JRST    NOHIGH          ;NO HI-SEGMENT
+       TLO     F,FCONSW        ;FORCE OUT HI-SEG BREAK ALSO
+       PUSHJ   P,PRNUM0
+       ERROR   7,<?IS THE HIGH SEGMENT BREAK@?>
+       PUSHJ   P,CRLF
+NOHIGH:>
+IFE NAMESW,<   MOVE    W,DTOUT ;OUTPUT NAME >
+IFN NAMESW,<   SKIPN   W,DTOUT
+       MOVE    W,CURNAM        ;USE PROGRAM NAME>
+       JUMPE   W,.+3           ;DON'T PRINT IF NOT THERE
+       PUSHJ   P,PWORD
+       PUSHJ   P,SPACES        ;SOME SPACES
+       ERROR   0,<?STORAGE MAP!?>
+       PUSHJ   P,SPACES                ;SOME SPACES
+       PUSH    P,N
+       PUSH    P,E
+       MOVE    N,[POINT 6,DBUF] ;INITIALIZE DATE POINTER
+       MSTIME  Q,              ;GET THE TIME
+       IDIVI   Q,↑D60*↑D1000
+       IDIVI   Q,↑D60
+       PUSH    P,A             ;SAVE MINUTES
+       PUSHJ   P,OTOD1         ;STORE HOURS
+       POP     P,Q             ;GET MINUTES
+       PUSHJ   P,OTOD          ;STORE MINUTES
+       DATE    E,              ;GET DATE
+       IDIVI   E,↑D31                ;GET DAY
+       ADDI    Q,1
+       PUSHJ   P,OTOD          ;STORE DAY
+       IDIVI   E,↑D12                ;GET MONTH
+       ROT     Q,-1            ;DIV BY 2
+       HRR     A,DTAB(Q)       ;GET MNEMONIC
+       TLNN    Q,400000
+       HLR     A,DTAB(Q)       ;OTHER SIDE
+       HRRM    A,DBUF+1        ;STORE IT
+       MOVEI   Q,↑D64(E)     ;GET YEAR
+       MOVE    N,[POINT 6,DBUF+2]
+       PUSHJ   P,OTOD          ;STORE IT
+       POP     P,E
+       POP     P,N
+       PUSHJ   P,DBUF1
+       PUSHJ   P,CRLF
+       SKIPN   STADDR          ;PRINT STARTING ADDRESS
+       JRST    NOADDR          ;NO ADDRESS SEEN
+       ERROR   0,</STARTING ADDRESS !/>
+       PUSHJ   P,SP1
+       MOVE    W,STADDR                ;GET ST. ADDR.
+       PUSHJ   P,PRNUM0                ;PRINT IT
+IFN NAMESW,<
+       PUSHJ   P,SP1
+       MOVE    W,[SIXBIT / PROG /]
+       PUSHJ   P,PWORD
+       MOVE    W,CURNAM                ;PROG NAME
+       PUSHJ   P,PWORD
+       PUSHJ   P,SP1
+       MOVE    W,ERRPT6                ;SIXBIT / FILE /
+       PUSHJ   P,PWORD
+       MOVE    W,PRGNAM                ;FILE NAME
+       PUSHJ   P,PWORD>
+NOADDR:        IFN REENT,<
+       HRRZ    A,HVAL1         ;GET INITIAL HIGH START
+       ADDI    A,JOBHDA        ;ADD IN OFFSET
+       HRLI    A,JOBDA         ;LOW START
+       MOVSM   A,SVBRKS        ;INITIAL BREAKS>
+       HLRE    A,B
+       MOVNS     A
+       ADDI    A,(B)
+PRMAP1: SUBI   A,2
+IFN REENT,<SKIPN C,1(A)                ;LOAD SYMBOL SKIP IF REAL SYMBOL
+       JRST    PRMAP4          ;IGNORE ZERO NAME(TWOSEG BREAKS)>
+IFE REENT,<MOVE        C,1(A)          ;LOAD SYMBOL>
+       TLNN    C,300000        ;TEST FOR LOCAL SYMBOL
+       JRST    .+4             ;GLOBAL  (NOT LOCAL ANYWAY)
+       TRNN    F,LOCAFL        ;PRINT LOCAL SYMBOLS?
+       JRST    PRMAP4          ;IGNORE LOCAL SYMBOLS
+       TLC     C,140000        ;MAKE IT LOOK LIKE INTERN
+       TLNE    C,040000
+       JRST    PRMP1A
+       PUSHJ   P,CRLF
+       PUSHJ   P,CRLF
+       SETZM   TABCNT
+       JRST    PRMP1B
+     
+
+PRMP1A:        PUSHJ   P,TAB
+PRMP1B:        PUSHJ   P,PRNAM1        ;PRINT SYMBOL AND VALUE
+       TLNE    C,040000
+       JRST    PRMAP4          ;GLOBAL SYMBOL
+       HLRE    C,W             ;POINTER TO NEXT PROG. NAME
+       HRRZS W         ;SO WE ONLY HAVE THE HALF WE WANT
+PRMAP7:        JUMPL C,PRMP7A
+IFN REENT,<SKIPN 1(B)          ;IS IT A ZERO SYMBOL
+       JRST    [MOVE   C,B     ;SET UP C
+               JRST    PRMAP2] ;AND GO
+       HRRZ    T,HVAL  ;GET TO OF HI PART
+       CAML    W,HVAL1 ;IS PROGRAM START UP THERE??
+       JRST    PRMAP6  ;YES
+       HRRZ    T,HILOW ;GET HIGHEST LOCATION LOADED IN LOW
+       SUBI    T,(X)   ;REMOVE OFFSET
+       CAIE    T,(W)   ;EQUAL IF ZERO LENGTH PROG>
+       HRRZ T,R        ;GET LOW, HERE ON LAST PROG
+       JRST PRMAP6     ;GO
+
+PRMP7A:        ADDI C,2(A)     ;POINTER TO NEXT PROGRAM NAME
+PRMAP2:        IFN REENT,<
+       SKIPE   1(C)    ;THIS IS A TWO SEG  FILE
+       JRST    PRMP2A  ;NO
+       MOVE    T,2(C)  ;GET PROG BREAKS
+       TLNN    T,-1            ;IF NO HIGH STUFF YET
+       HLL     T,SVBRKS        ;FAKE IT
+       SUB     T,SVBRKS        ;SUBTRACT LAST  BREAKS
+       HRRZ    W,T     ;LOW BREAK
+       PUSH    P,W     ;SAVE IT
+       JUMPGE  T,.+2   ;IF NEGATIVE
+       TDZA    W,W     ;MAKE ZERO (FIRST TIME THRU)
+       HLRZ    W,T     ;GET HIGH BREAK
+       PUSHJ   P,PRNUM ;PRINT IT
+       PUSHJ   P,TAB   ;AND TAB
+       POP     P,W     ;LOW BREAK
+       PUSHJ   P,PRNUM
+       MOVE    T,2(C)
+       CAMN    C,B             ;EQUAL IF LAST PROG
+       SETZ    C,              ;SIGNAL END
+       TLNN    T,-1
+       HLL     T,SVBRKS
+       CAMN    T,SVBRKS        ;ZERO LENGTT IF EQUAL
+       JRST    PRMP6A          ;SEE IF LIST ALL ON
+       MOVEM   T,SVBRKS        ;SAVE FOR NEXT TIME
+       JRST    PRMAP3  ;AND CONTINUE
+PRMP2A:>
+       HRRZ T,(C)      ;GET ITS STARTING ADRESS
+IFN REENT,<CAMGE W,HVAL1       ;MAKE SURE BOTH IN SAME SEGMENT
+       CAMGE T,HVAL1
+       CAMGE T,W
+       JRST    [HLRE T,(C)     ;NO TRY NEXT ONE DOWN
+               JUMPE T,@PRMAP7 ;END GO USE PROG BREAK
+               ADDI C,(T)
+               JRST PRMAP2]    ;CHECK THIS ONE>
+PRMAP6:        SUBM    T,W             ;SUBTRACT ORIGIN TO GET LENGTH
+       PUSHJ     P,PRNUM               ;PRINT PROGRAM LENGTH
+       PUSHJ     P,CRLF
+PRMP6A:        TLNN    N,ALLFLG                ;SKIP IF LIST ALL MODE IS ON
+       TRNE    W,777777                ;SKIP IF ZERO LENGTH PROGRAM
+       JRST    PRMAP3
+       HLRE    C,2(A)          ;GET BACK CORRECT LOCATION IF 0 LENGTH
+       JUMPE   C,PRMAP5        ;JUMP IF LAST PROGRAM
+       ADDI    C,2(A)          ;IN CASE WE SKIPPED SOME PROGRAMS
+       SKIPA   A,C             ;SKIP GLOBALS, ZERO LENGTH PROG.
+PRMAP3:   PUSHJ     P,CRLF
+PRMAP4:   CAILE     A,(B)              ;TEST FOR END OF SYMBOL TABLE
+       JRST    PRMAP1
+PRMAP5:        PUSHJ   P,CRLF  ;GIVE AN XTRA CR-LF
+
+     
+
+SUBTTL LIST UNDEFINED AND MULTIPLY DEFINED GLOBALS
+
+       PUSHJ   P,PMS1          ;PRINT UNDEFINED SYMBOLS
+
+;LIST NUMBER OF MULTIPLY DEFINED GLOBALS
+
+PMS3:  SKIPN   W,MDG           ;ANY MULTIPLY DEFINED GLOBALS
+       JRST    PMS4            ;NO, EXCELSIOR
+       PUSHJ   P,FCRLF         ;ROOM AT THE TOP
+       PUSHJ   P,PRQ           ;PRINT ?
+       PUSHJ   P,PRNUM0        ;NUMBER OF MULTIPLES
+       ERROR   7,<?MULTIPLY DEFINED GLOBALS@?>
+PMS4:  TLNE    N,AUXSWE        ;AUXILIARY OUTPUT DEVICE?
+       OUTPUT  2,              ;INSURE A COMPLETE BUFFER
+       POPJ    P,              ;RETURN
+
+;LIST UNDEFINED GLOBALS
+
+PMS1:  PUSHJ   P,FSCN1         ;LOAD FILES FIRST
+       JUMPGE  S,CPOPJ         ;JUMP IF NO UNDEFINED GLOBALS
+       PUSHJ   P,FCRLF         ;START THE MESSAGE
+       HLRE    W,S             ;COMPUTE NO. OF UNDEF. GLOBALS
+       MOVMS     W
+       LSH     W,-1            ;<LENGTH OF LIST>/2
+       PUSHJ     P,PRNUM0
+       ERROR   7,</UNDEFINED GLOBALS@/>
+       MOVE    A,S             ;LOAD UNDEF. POINTER
+PMS2:  SKIPL W,1(A)
+       TLNN W,40000
+       JRST PMS2A
+       PUSHJ     P,FCRLF
+       PUSHJ     P,PRNAM0              ;PRINT SYMBOL AND POINTER
+PMS2A: ADD     A,SE3
+       JUMPL   A,PMS2
+CPOPJ: POPJ    P,
+
+PMS:   PUSHJ   P,PMS1  ;PRINT UNDEFINED SYMBOLS
+       JUMPGE  S,CPOPJ         ;NO UNDEFINED SYMBOLS
+       PUSHJ   P,CRLF          ;NEW LINE,MAKE ? VISIBLE
+       PUSHJ   P,PRQ           ;FIX FOR BATCH TO PRINT ALL SYMBOLS
+       JRST    CRLF            ;SPACE AFTER LISTING
+     
+
+SUBTTL ENTER FILE ON AUXILIARY OUTPUT DEVICE
+
+IAD2:  PUSH    P,A             ;SAVE A FOR RETURN
+       MOVE    A,LD5C1         ;GET AUX. DEV.
+       DEVCHR  A,              ;GET DEVCHR
+       TLNN    A,4             ;DOES IT HAVE A DIRECTORY
+       JRST    IAD2A           ;NO SO JUST RETURN
+       MOVE    A,DTOUT         ;GET OUTPUT NAME
+       CAME    A,[SIXBIT /JOBDAT/] ;DON'T USE JOBDAT
+       JUMPN   A,IAD2A         ;USE ANYTHING NON-ZERO
+       MOVSI   A,(SIXBIT /DSK/) ;DEFAULT DEVICE
+       CAMN    A,LD5C1         ;IS IT AUX. DEV.
+       JRST    .+5             ;YES LEAVE WELL ALONE
+       CLOSE   2,              ;CLOSE OLD AUX. DEV.
+       MOVEM   A,LD5C1         ;SET IT TO DSK
+       OPEN    2,OPEN2         ;OPEN IT FOR DSK
+       JRST    IMD4            ;FAILED
+IFN NAMESW,<   SKIPN   A,CURNAM        ;USE PROG NAME>
+       MOVSI   A,(SIXBIT /MAP/)        ;AN UNLIKELY NAME
+       MOVEM   A,DTOUT         ;SO ENTER WILL NOT FAIL
+IAD2A: POP     P,A             ;RECOVER A
+       SETZM   DTOUT+2         ;CLEAR PROTECTION (LEVEL D)
+       ENTER   2,DTOUT         ;WRITE FILE NAME IN DIRECTORY
+       JRST    IMD3            ;NO MORE DIRECTORY SPACE
+       POPJ    P,
+
+IMD3:  ERROR   ,</DIR. FULL@/>
+       JRST    LD2
+
+IMD4:  MOVE    P,[XWD -40,PDLST]       ;RESTORE STACK
+       TLZ     N,AUXSWE!AUXSWI ;NO AUX.DEV.NOW
+       ERROR   ,</NO MAP DEVICE@/>
+       JRST    PRMAP5          ;CONTINUE TO LOAD
+
+     
+
+SUBTTL PRINT SUBROUTINES
+
+;PRINT THE 6 DIGIT OCTAL ADDRESS IN W
+
+;      ACCUMULATORS USED: D,T,V
+
+PRNAM0:   MOVE C,1(A)          ;LOAD SYMBOL
+PRNAM1:   MOVE W,2(A)          ;LOAD VALUE
+PRNAM: PUSHJ     P,PRNAME
+PRNUM:
+       TRNN    F,TTYFL
+       PUSHJ   P,SP1
+       PUSHJ   P,SP1 
+PRNUM0:   MOVE V,PRNUM2                ;LOAD BYTE POINTER TO RH. OF W
+       MOVNI     D,6           ;LOAD CHAR. COUNT
+PRNUM1:   ILDB T,V             ;LOAD DIGIT TO BE OUTPUT
+       ADDI    T,60            ;CONVERT FROM BINARY TO ASCII
+       PUSHJ     P,TYPE2
+       AOJL    D,PRNUM1                ;JUMP IF MORE DIGITS REMAIN
+       POPJ    P,
+
+PRNUM2:   XWD  220300,W
+
+     
+
+
+IFN NAMESW,<
+LDNAM: MOVE T,[POINT 6,CURNAM] ;POINTER
+       MOVNI D,6       ;SET COUNT
+       TLZ W,740000    ;REMOVE CODE BITS
+SETNAM:        IDIVI W,50      ;CONVERT FROM RAD 50
+       HRLM C,(P)
+       AOJGE D,.+2
+       PUSHJ P,SETNAM
+       HLRZ C,(P)
+       JUMPE C,INAM
+       ADDI C,17
+       CAILE C,31
+       ADDI C,7
+       CAIG C,72       ;REMOVE SPECIAL  CHARS. (. $ %)
+       IDPB C,T
+INAM:  POPJ P, >
+
+
+;YE OLDE RECURSIVE NUMBER PRINTER
+;PRINTS Q, WITH LEADING ZEROES SUPPRESSED; USES A AND T
+
+RCNUM: IDIVI Q,12              ;RADIX DECIMAL
+       ADDI A,"0"
+       HRLM A,(P)
+       JUMPE Q,.+2
+       PUSHJ P,RCNUM
+       HLRZ T,(P)
+       JRST TYPE2
+
+
+SPACES:        PUSHJ   P,SP1
+SP1:   PUSHJ   P,SPACE
+SPACE: MOVEI   T,40
+       JRST    TYPE2
+     
+
+;      ACCUMULATORS USED: Q,T,D
+
+PWORD: MOVNI   Q,6             ;SET CHARACTER COUNT TO SIX
+PWORD1: MOVE   D,LSTPT         ;ENTER HERE WITH Q PRESET
+PWORD2: ILDB   T,D             ;LOAD NEXT CHAR. TO BE OUTPUT
+       PUSHJ     P,TYPE                ;OUTPUT CHARACTER
+       AOJL    Q,PWORD2
+       POPJ    P,
+
+
+;TYPEOUT SUBROUTINE - THE CHARACTER SUPPLIED IN T IS CONVERTED TO ASCII
+;AND IS OUTPUT ON THE CONSOLE AND/OR THE SPECIFIED LOADER MAP OUTPUT
+;DEVICE
+
+CRLFLF:        PUSHJ   P,CRLF
+FCRLF: TLO     F,FCONSW        ;INSURE TTY OUTPUT
+CRLF:  MOVEI   T,15            ;CARRIAGE RETURN LINE FEED
+       PUSHJ   P,TYPE2
+       TRCA    T,7             ;CR.XOR.7=LF
+TYPE:  MOVEI   T,40(T)         ;CONVERT SIXBIT TO ASCII
+TYPE2: TLNN    N,AUXSWI        ;IS THER AN AUXILIARY DEVICE?
+       JRST    TYPE3           ;NO, DONT OUTPUT TO IT
+       TLON    N,AUXSWE        ;IS AUX. DEV. ENTERED?
+       PUSHJ   P,IAD2          ;NOPE, DO SO!
+       SOSG    ABUF2           ;SPACE LEFT IN BUFFER?
+       OUTPUT  2,              ;CREATE A NEW BUFFER
+       IDPB    T,ABUF1         ;DEPOSIT CHARACTER
+       TLNN    F,FCONSW        ;FORCE OUTPUT TO CONSOLE TOO?
+       POPJ    P,              ;NOPE
+TYPE3: IFN RPGSW,<
+       TRNE    F,NOTTTY        ;IF TTY IS ANOTHER DEVICE
+       POPJ    P,              ;DON'T OUTPUT TO IT>
+       SKIPN   BUFO2           ;END OF BUFFER
+       OUTPUT  3,              ;FORCE OUTPUT NOW
+       IDPB    T,BUFO1         ;DEPOSIT CHARACTER
+       CAIN    T,12            ;END OF LINE
+       OUTPUT  3,              ;FORCE AN OUTPUT
+       POPJ    P,
+     
+
+SUBTTL SYMBOL PRINT - RADIX 50
+
+;      ACCUMULATORS USED: D,T
+
+PRNAME: MOVE   T,C             ;LOAD SYMBOL
+       TLZ     T,740000        ;ZERO CODE BITS
+       PUSH    P,T
+       PUSH    P,C
+       MOVEI   C,6
+       MOVEI   D,1
+       IDIVI   T,50
+       JUMPN   V,.+2
+       IMULI   D,50
+       SOJN    C,.-3
+       POP     P,C
+       POP     P,T
+       IMUL    T,D
+       MOVNI   D,6             ;LOAD CHAR. COUNT
+SPT:   IDIVI   T,50            ;THE REMAINDER IS THE NEXT CHAR.
+       HRLM    V,(P)           ;STORE IN LH. OF PUSHDOWN LIST
+       AOJGE   D,.+2           ;SKIP IF NO CHARS. REMAIN
+       PUSHJ   P,SPT           ;RECURSIVE CALL FOR NEXT CHAR.
+       HLRZ    T,(P)           ;LOAD FROM LH. OF PUSHDOWN LIST
+       JUMPE   T,TYPE          ;BLANK
+       ADDI    T,60-1
+       CAILE   T,71
+       ADDI    T,101-72
+       CAILE   T,132
+       SUBI    T,134-44
+       CAIN    T,43
+       MOVEI   T,56
+       JRST    TYPE2
+
+TAB1:  SETZM   TABCNT
+       PUSHJ   P,CRLF
+TAB:   AOS     T,TABCNT
+       CAIN    T,5
+       JRST    TAB1
+       TRNE    F,TTYFL
+       JRST    SP1
+       MOVEI   T,11
+       JRST    TYPE2
+
+     
+
+
+OTOD:  IBP     N
+OTOD1: IDIVI   Q,↑D10
+       ADDI    Q,20            ;FORM SIXBIT
+       IDPB    Q,N
+       ADDI    A,20
+       IDPB    A,N
+       POPJ    P,
+
+DTAB:  SIXBIT  /JANFEB/
+       SIXBIT  /MARAPR/
+       SIXBIT  /MAYJUN/
+       SIXBIT  /JULAUG/
+       SIXBIT  /SEPOCT/
+       SIXBIT  /NOVDEC/
+
+     
+
+SUBTTL ERROR MESSAGE PRINT SUBROUTINE
+
+;      FORM OF CALL:
+
+;      JSP     A,ERRPT
+;      SIXBIT    /<MESSAGE>/
+
+;      ACCUMULATORS USED: T,V,C,W
+
+ERRPT: TLO     F,FCONSW        ;INSURE TTY OUTPUT
+       PUSHJ   P,CRLF          ;ROOM AT THE TOP
+       PUSHJ   P,PRQ           ;START OFF WITH ?
+ERRPT0: PUSH   P,Q             ;SAVE Q
+       SKIPA   V,ERRPT5
+ERRPT1: PUSHJ   P,TYPE
+       ILDB    T,V
+       CAIN    T,"@"-40
+       JRST    ERRPT4
+       CAIN    T,"%"-40
+       JRST    ERRPT9
+       CAIN    T,"!"-40
+       JRST    ERRP42          ;JUST RETURN,LEAVE FCONSW ON
+       CAIE    T,"#"-40
+       JRST    ERRPT1
+       SKIPN   C,DTIN
+       JRST    ERRPT4
+       MOVNI   Q,14
+       MOVEI   W,77
+ERRPT2: TDNE   C,W
+       JRST    ERRPT3
+       LSH     W,6
+       AOJL    Q,ERRPT2
+ERRPT3: MOVE   W,ERRPT6
+       PUSHJ   P,PWORD1
+       SKIPN   W,DTIN1
+       JRST    ERRPT4
+       LSH     W,-6
+       TLO     W,160000
+       MOVNI   Q,4
+       PUSHJ   P,PWORD1
+ERRPT4: PUSHJ   P,CRLF
+ERRP41:        TLZ     F,FCONSW        ;ONE ERROR PER CONSOLE
+ERRP42:        POP     P,Q             ;***DMN*** FIX FOR ILC MESSAGE
+       AOJ     V,              ;PROGRAM BUMMERS BEWARE:
+       JRST    @V              ;V HAS AN INDEX OF A
+
+ERRPT5: POINT     6,0(A)
+ERRPT6: SIXBIT    / FILE /
+     
+
+ERRPT8:        TLO     F,FCONSW        ;INSURE TTY OUTPUT
+       PUSHJ   P,PRQ           ;START WITH ?
+       CAIGE   T,140           ;IS IT A NON-PRINTING CHAR?
+       CAIL    T,40
+       JRST    ERRP8
+       PUSH    P,T
+       MOVEI     T,136         ;UP ARROW
+       PUSHJ     P,TYPE2
+       POP     P,T
+       TRC     T,100           ;CONVERT TO PRINTING CHAR.
+ERRP8: PUSHJ     P,TYPE2
+ERRPT7:   PUSHJ     P,SPACE
+       JRST    ERRPT0
+
+ERRPT9: MOVEI   V,@V
+       PUSH    P,V
+       ERROR   7,<?ILLEGAL -LOADER@?>
+       POP     P,V
+       JRST    ERRP41
+
+;PRINT QUESTION MARK
+
+PRQ:   PUSH    P,T             ;SAVE
+       MOVEI   T,"?"           ;PRINT ?
+       PUSHJ   P,TYPE2         ;...
+       POP     P,T             ;RESTORE
+       POPJ    P,              ;RETURN
+     
+
+SUBTTL INPUT - OUTPUT INTERFACE
+
+;BINARY INPUT SUBROUTINE - RETURNS A WORD IN W
+IFE K,<
+WORDPR:        PUSHJ   P,WORD          ;GET FIRST WORD OF PAIR
+       MOVE    C,W             ;KEEP IT HANDY>
+WORD:  SOSGE   BUFR2           ;SKIP IF BUFFER NOT EMPTY
+       JRST    WORD2
+WORD1: ILDB    W,BUFR1         ;PICK UP 36 BIT WORD
+       POPJ    P,
+
+WORD2: IN      1,              ;GET NEXT BUFFER LOAD
+       JRST    WORD            ;DATA OK - CONTINUE LOADING
+WORD3: STATZ   1,IODEND        ;TEST FOR EOF
+       JRST    EOF             ;END OF FILE EXIT
+       ERROR   ,< /INPUT ERROR#/>
+       JRST    LD2             ;GO TO ERROR RETURN
+
+
+SE3:   XWD     2,2             ;SYMBOL POINTER INCREMENT
+PDLPT: XWD     -41,PDLST-1;    INITIAL PUSHDOWN POINTER
+COMM:  SQUOZE    0,.COMM.
+LSTPT: POINT   6,W             ;CHARACTER POINTER TO W
+
+IOBKTL==40000
+IOIMPM==400000
+IODERR==200000
+IODTER==100000
+IODEND==20000
+
+IOBAD==IODERR!IODTER!IOBKTL!IOIMPM
+
+     
+
+SUBTTL IMPURE CODE
+IFN SEG2SW,<   RELOC
+LOWCOD:        RELOC>
+IFN PURESW,<HICODE:
+IFN SEG2SW,<   PHASE LOWCOD>
+IFE SEG2SW,<   PHASE   140>>
+
+
+DBUF1: JSP     A,ERRPT7
+DBUF:  SIXBIT  /TI:ME DY-MON-YR @/
+       POPJ    P,
+
+;DATA FOR PURE OPEN UUO'S
+
+IFN SPCHN,<
+CHNENT:        0
+       SIXBIT .CHN.
+       0
+       0
+CHNOUT:        17
+       SIXBIT /DSK/
+       0
+>
+IFN RPGSW,<
+OPEN1: EXP     1
+RPG1:  Z
+       XWD     0,CTLIN
+>
+
+OPEN2: EXP     1
+LD5C1: Z
+       XWD     ABUF,0
+
+OPEN3: EXP     14
+ILD1:  Z
+       XWD     0,BUFR
+
+IFN PURESW,<DEPHASE
+CODLN=.-HICODE>
+     
+
+SUBTTL DATA STORAGE
+
+IFN PURESW,<
+IFE SEG2SW,<LOC 140>
+IFN SEG2SW,<RELOC>
+LOWCOD:        BLOCK CODLN>
+
+PDSAV: BLOCK 1                 ;SAVED PUSHDOWN POINTER
+COMSAV: BLOCK 1                        ;LENGTH OF COMMON
+MDG:   BLOCK 1                 ;COUNTER FOR MUL DEF GLOBALS
+PDLST: BLOCK   40
+
+F.C:   BLOCK 1
+       BLOCK 1 ;STORE N HERE
+       BLOCK 1 ;STORE X HERE
+       BLOCK 1 ;STORE H HERE
+       BLOCK 1 ;STORE S HERE
+       BLOCK 1 ;STORE R HERE
+B.C:   BLOCK 1
+
+STADDR:        BLOCK 1 ;HOLDS STARTING ADDRESS
+
+IFN NAMESW,<
+PRGNAM:        BLOCK 1 ;STORE BINARY FILE NAME-USED TO MAKE SYSTAT MORE MEANINGFUL
+>
+IFN REENT,<
+HIGHX: BLOCK 1
+HIGHR: BLOCK 1 ;HOLD X AND R WHILE LOADING LOW SEG PIECES
+LOWX:  BLOCK 1
+HILOW: BLOCK 1 ;HIGHEST NON-BLOCK STMT IN LOW SEG
+HVAL:  BLOCK 1 ;ORG OF HIGH SEG>
+HVAL1: BLOCK 1 ;ACTUAL ORG OF HIGH SEG
+LOWR:  BLOCK 1 ;HOLD X AND R WHILE LOADING HISEG PIECES
+IFN KUTSW,<CORSZ:      BLOCK 1>
+IFN DMNSW,<KORSP:      BLOCK 1>
+IFN LDAC,<BOTACS:      BLOCK 1>
+IFN WFWSW,<VARLNG:     BLOCK 1
+VARREL:        BLOCK 1>
+IFN SAILSW,<LIBFLS:    BLOCK   RELLEN*3
+PRGFLS:        BLOCK   RELLEN*3>
+     
+
+PT1:   BLOCK 1
+SVA:   BLOCK 1
+IFN RPGSW,<
+NONLOD:        BLOCK 1
+SVRPG: BLOCK 1
+IFN TEMP,<
+TMPFIL:        BLOCK 2
+TMPFLG:        BLOCK 1>
+>
+IFN  NAMESW,<
+CURNAM:        BLOCK 1
+>
+IFN PP,<
+OLDDEV:        BLOCK 1
+PPN:   BLOCK 1
+PPNE:  BLOCK 1
+PPNV:  BLOCK 1
+PPNW:  BLOCK 1
+       >
+IFN FAILSW,<
+GLBCNT:        BLOCK 1
+HDSAV: BLOCK 1
+HEADNM:        BLOCK 1
+LFTHSW:        BLOCK 1
+OPNUM: BLOCK 1
+POLSW: BLOCK 1
+SVHWD: BLOCK 1
+SVSAT: BLOCK 1
+PPDB:  BLOCK PPDL+1
+LINKTB:        BLOCK 21
+>
+HISTRT:        BLOCK 1 ;JOBREL AT START OF LOADING
+IFN L,<
+LSPXIT:        BLOCK 1
+RINITL:        BLOCK 1
+OLDJR: BLOCK 1>
+IFN SPCHN,<
+CHNTAB:        BLOCK 1
+BEGOV: BLOCK 1
+CHNACN:        BLOCK 1
+CHNACB:        BLOCK 1>
+TABCNT:        BLOCK 1
+LIMBO: BLOCK   1       ;WHERE OLD CHARS. ARE STORED
+IFN DIDAL,<LSTBLK:     BLOCK   1       ;POINTER TO LAST PROG LOADED>
+IFN EXPAND,<ALWCOR:    BLOCK   1       ;CORE AVAILABLE TO USER>
+IFN ALGSW,<%OWN: BLOCK 1       ;ADDRESS OF ALGOL OWN AREA
+       OWNLNG: BLOCK   1       ;LENGTH OF OWN BLOCK>
+IFN REENT,<SVBRKS:     BLOCK   1       ;XWD HIGH,LOW (PROG BREAKS)>
+     
+
+SUBTTL BUFFER HEADERS AND HEADER HEADERS
+
+BUFO:  BLOCK 1                 ;CONSOLE INPUT HEADER HEADER
+BUFO1: BLOCK 1
+BUFO2: BLOCK 1
+
+BUFI:  BLOCK 1                 ;CONSOLE OUTPUT HEADER HEADER
+BUFI1: BLOCK 1
+BUFI2: BLOCK 1
+
+ABUF:  BLOCK 1                 ;AUXILIARY OUTPUT HEADER HEADER
+ABUF1: BLOCK 1
+ABUF2: BLOCK 1
+
+BUFR:  BLOCK 1                 ;BINARY INPUT HEADER HEADER
+BUFR1: BLOCK 1
+BUFR2: BLOCK 1
+
+DTIN:  BLOCK 1                 ;DECTAPE INPUT BLOCK
+DTIN1: BLOCK 3
+
+DTOUT: BLOCK 1                 ;DECTAPE OUTPUT BLOCK
+DTOUT1: BLOCK 3
+
+       TTYL==52                        ;TWO TTY BUFFERS
+IFE LNSSW,<
+IFE K,<        BUFL==406               ;TWO DTA BUFFERS FOR LOAD>
+IFN K,<        BUFL==203               ;ONE DTA BUFFER FOR LOAD>
+       ABUFL==203              ;ONE DTA BUFFER FOR AUX DEV>
+IFN LNSSW,<
+IFE K,<BUFL==4*203+1>
+IFN K,<BUFL==203+1>
+ABUFL==2*203+1>
+
+TTY1:  BLOCK   TTYL            ;TTY BUFFER AREA
+BUF1:  BLOCK   BUFL            ;LOAD BUFFER AREA
+AUX:   BLOCK   ABUFL           ;AUX BUFFER AREA
+
+
+IFN RPGSW,<
+CTLIN: BLOCK 3
+CTLNAM:        BLOCK 3
+CTLBUF:        BLOCK 203+1
+>
+     
+
+SUBTTL FORTRAN DATA STORAGE
+
+IFN STANSW,<PATCH:     BLOCK   20              ;STANFORD HAS SEMI-INFINITE CORE>
+
+IFE K,<
+TOPTAB:        BLOCK 1 ;TOP OF TABLES
+CTAB:  BLOCK 1;        COMMON
+ATAB:  BLOCK 1;        ARRAYS
+STAB:  BLOCK 1;        SCALARS
+GSTAB: BLOCK 1;        GLOBAL SUBPROGS
+AOTAB: BLOCK 1;        OFFSET ARRAYS
+CCON:  BLOCK 1;        CONSTANTS
+PTEMP: BLOCK 1;        PERMANENT TEMPS
+TTEMP: BLOCK 1;        TEMPORARY TEMPS
+COMBAS:        BLOCK 1;        BASE OF COMMON
+LLC:   BLOCK 1;        PROGRAM ORIGIN
+BITP:  BLOCK 1;        BIT POINTER
+BITC:  BLOCK 1;        BIT COUNT
+PLTP:  BLOCK 1;        PROGRAMMER LABEL TABLE
+MLTP:  BLOCK 1;        MADE LABEL TABLE
+SDS:   BLOCK 1 ;START OF DATA STATEMENTS
+SDSTP: BLOCK 1 ;START OF DATA STATEMENTS POINTER
+BLKSIZ:        BLOCK 1;        BLOCK SIZE
+MODIF: BLOCK 1;        ADDRESS MODIFICATION +1
+SVFORH:        BLOCK 1 ;SAVE H WHILE LOADING F4 PROGRAMS
+
+IOWDPP:        BLOCK 2>
+SBRNAM:        BLOCK 1
+
+IFE K,<
+CT1:   BLOCK 1         ;TEMP FOR C
+LTC:   BLOCK 1
+ITC:   BLOCK 1
+ENC:   BLOCK 1
+WCNT:  BLOCK 1         ;DATA WORD COUNT
+RCNT:  BLOCK 1         ;DATA REPEAT COUNT
+
+LTCTEM:        BLOCK 1         ;TEMP FOR LTC
+DWCT:  BLOCK 1         ;DATA WORD COUNT>
+
+       VAR     ;DUMP VARIABLES
+IFN PURESW,<RELOC>
+
+     
+
+SUBTTL REMAP UUO
+IFN REENT,<
+IFN PURESW,<HHIGO:     PHASE   BUF1    ;DON'T NEED BUF1 NOW>
+
+HIGO:  CORE    V,              ;CORE UUO
+       JFCL                    ;NEVER FAILS
+HINOGO:        MOVE    D,HVAL
+       CAMG    D,HVAL1         ;ANYTHING IN HI-SEG
+       JRST    0               ;NO
+       MOVE    V,HISTRT        ;NOW REMAP THE HISEG.
+       REMAP   V,              ;REMAP UUO.
+       JRST    HIGET           ;FATAL ERROR.
+HIRET: JRST    0               ;EXECUTE CODE IN ACC'S
+
+HIGET: HRRZI   V,SEGBLK        ;DATA FOR
+       GETSEG  V,              ;GETSEG UUO
+       SKIPA                   ;CANNOT CONTINUE NO HISEG
+       JRST    REMPFL          ;REGAINED LOADER HISEG
+                               ;GO PRINT MESSAGE
+       TTCALL  3,SEGMES        ;PRINT SEGMES
+       EXIT                    ;AND DIE
+
+SEGBLK:        SIXBIT  /SYS/
+       SIXBIT  /LOADER/
+       EXP     0,0,0,0
+
+
+SEGMES:        ASCIZ   /?CANNOT FIND LOADER.SHR
+/
+
+IFN PURESW,<HIGONE:    DEPHASE>>
+     
+
+SUBTTL LISP LOADER
+
+;END HERE IF 1K LOADER REQUESTED.
+IFN K,<IFE L,<END BEG>
+IFE L,<        XLIST   >
+
+IFN L,<LODMAK: MOVEI A,LODMAK
+       MOVEM A,137     ;SET UP TO SAVE THE LISP LOADER
+       INIT 17
+       SIXBIT /DSK/
+       0
+       HALT
+       ENTER LMFILE
+       HALT
+       MOVNI A,LD
+       HRLZS A
+       ADDM A,LMLST    ;BECAUSE MACRO WON'T TAKE POLISH FIXUPS
+       OUTPUT LMLST
+       STATZ 740000
+       HALT
+       RELEASE
+       EXIT
+LMFILE:        SIXBIT /LISP/
+       SIXBIT /LOD/
+       0
+       0
+LMLST: IOWD LODMAK+1,137
+       0
+       END LODMAK>>
+
+       LIST
+     
+
+SUBTTL  FORTRAN FOUR LOADER
+
+F4LD:  TLNE    F,SKIPSW!FULLSW ;ARE WE IN SKIP MODE
+       JRST    REJECT          ;YES,DON'T LOAD ANY OF THIS
+       MOVEI   W,-2(S);        GENERATE TABLES
+       CAIG    W,(H)           ;NEED TO EXPAND?
+IFN EXPAND,<PUSHJ P,[PUSHJ P,XPAND
+               TLOA    F,FULLSW
+               JRST    POPJM3
+               POPJ    P,]>
+IFE EXPAND,<   TLO     F,FULLSW>
+;IFN REENT,<TRO        F,F4FL!VFLG     ;RE-ENTRANT LIB40>
+       TLO     N,F4SW;         SET FORTRAN FOUR FLAG
+       HRRZ    V,R;            SET PROG BREAK INTO V
+       MOVEM   V,LLC;          SAVE FIRST WORD ADDRESS
+       HRRZM   W,MLTP;         MADE LABELS
+       HRRZM   W,PLTP;         PROGRAMMER LABELS
+       ADD     W,[POINT 1,1];  GENERATE BIT-BYTE POINTER
+       MOVEM   W,BITP
+       MOVEM   W,SDSTP;        FIRST DATA STATEMENT
+       AOS     SDSTP;
+       HRREI   W,-↑D36;      BITS PER WORDUM
+       MOVEM   W,BITC;         BIT COUNT
+       PUSHJ   P,BITWX         ;MAKE SURE OF ENOUGH SPACE
+       MOVE    W,[JRST ALLOVE] ;LAST DATA STATEMENT
+       MOVEM   W,(S)
+
+TEXTR: PUSHJ   P,WORD;         TEXT BY DEFAULT
+       HLRZ    C,W
+       CAIN    C,-1
+       JRST    HEADER;         HEADER
+       MOVEI   C,1;            RELOCATABLE
+       TLNN    F,FULLSW!SKIPSW ;DON'T LOAD IF EITHER SET
+       PUSHJ   P,BITW;         SHOVE AND STORE
+       JRST    TEXTR;          LOOP FOR NEXT WORD
+
+ABS:   SOSG    BLKSIZ; MORE TO GET
+       JRST    TEXTR;          NOPE
+ABSI:  PUSHJ   P,WORD;
+       MOVEI   C,0;            NON-RELOCATABLE
+       TLNN    F,FULLSW!SKIPSW ;DON'T LOAD IF EITHER SET
+       PUSHJ   P,BITW;         TYPE 0
+       JRST    ABS
+     
+
+SUBTTL PROCESS TABLE ENTRIES
+
+MDLB:  TLNE    F,FULLSW+SKIPSW;        MADE LABEL PROC
+       JRST    GLOBDF;         NO ROOM AT THE IN
+       HLRZ    C,MLTP;         GET PRESENT SIZE
+       CAMGE   C,BLKSIZ;       IF NEW SIZE BIGGER, STR-R-RETCH
+       PUSHJ   P,SMLT
+       HRRZ    C,MLTP;         GET BASE
+MLPLC: ADD     C,BLKSIZ;       MAKE INDEX
+       TLNN    F,FULLSW+SKIPSW;        DONT LOAD
+       HRRZM   V,(C);          PUT AWAY DEFINITION
+GLOBDF:        PUSHJ   P,WORD
+       TLNE    F,FULLSW+SKIPSW ;SKIPPING THIS PROG?
+       JRST    TEXTR           ;YES, DON'T DEFINE
+       MOVEI   C,(V);          AND LOC
+       EXCH    W,C
+       PUSHJ   P,SYMXX;        PUT IN DDT-SYMBOL TABLE
+       PUSHJ   P,BITWX
+       JRST    TEXTR
+
+PLB:   TLNE    F,FULLSW+SKIPSW
+       JRST    GLOBDF
+       HLRZ    C,PLTP;         PRESENT SIZE
+       CAMGE   C,BLKSIZ
+       PUSHJ   P,SPLT
+       HRRZ    C,PLTP
+       JRST    MLPLC
+     
+
+SUBTTL STORE WORD AND SET BIT TABLE
+
+BITW:  MOVEM   W,@X;           STORE AWAY OFFSET
+       IDPB    C,BITP;         STORE BIT
+       AOSGE   BITC;           STEP BIT COUNT
+       AOJA    V,BITWX;        SOME MORE ROOM LEFT
+       HRREI   C,-↑D36;      RESET COUNT
+       MOVEM   C,BITC
+       SOS     PLTP
+       SOS     BITP;           ALL UPDATED
+IFE EXPAND,<HRL        C,MLTP
+       SOS     MLTP
+       HRR     C,MLTP>
+IFN EXPAND,<HRRZ       C,MLTP;         TO ADDRESS
+       SUBI    C,1
+       CAIG C,(H)
+       PUSHJ P,[PUSHJ P,XPAND
+               POPJ P,
+               ADDI C,2000
+               JRST POPJM2]
+       SOS     MLTP
+       HRLI C,1(C)>
+       HRRZ    T,SDSTP;        GET DATA POINTER
+       BLT     C,-1(T);        MOVE DOWN LISTS
+       AOJ     V,;             STEP LOADER LOCATION
+BITWX: IFN REENT,<
+       TLNE    F,HIPROG
+       JRST    FORTHI>
+       CAIGE H,@X
+       MOVEI H,@X      ;KEEP H SET RIGHT FOR HISEG STUFF
+BITWX2:        HRRZ    T,MLTP
+       CAIG    T,(H);          OVERFLOW CHECK
+IFE EXPAND,<TLO        F,FULLSW>
+IFN EXPAND,<PUSHJ P,   [PUSHJ P,XPAND
+                       TLOA F,FULLSW
+                       JRST POPJM3
+                       POPJ P,]>
+       POPJ    P,;
+
+SMLT:  SUB     C,BLKSIZ;       STRETCH
+       MOVS    W,MLTP          ;LEFT HALF HAS OLD BASE
+       ADD     C,MLTP          ;RIGHT HALF HAS NEW BASE
+IFN EXPAND,<   HRRZS C ;GET RID OF COUNT
+               CAIG C,(H)
+               PUSHJ P,[PUSHJ P,XPAND
+                       POPJ P,
+                       ADD W,[XWD 2000,0]
+                       ADDI C,2000
+                       JRST POPJM2]>
+       HRRM C,MLTP             ;PUT IN NEW MLTP
+       HLL     C,W             ;FORM BLT POINTER
+       ADDI    W,(C)           ;LAST ENTRY OF MLTP
+       HRL     W,BLKSIZ        ;NEW SIZE OF MLTP
+       HLLM    W,MLTP          ;...
+SLTC:  BLT     C,0(W);         MOVE DOWN (UP?)
+       POPJ    P,;
+
+SPLT:  SUB     C,BLKSIZ
+       MOVS    W,MLTP;
+       ADDM    C,PLTP
+       ADD     C,MLTP
+IFN EXPAND,<   HRRZS C
+               CAIG C,(H)
+               PUSHJ P,[PUSHJ P,XPAND
+                       POPJ P,
+                       ADD W,[XWD 2000,0]
+                       ADDI C,2000
+                       JRST POPJM2]>
+       HRRM C,MLTP             ;PUT IN NEW MLTP
+       HLL     C,W
+       HLRZ    W,PLTP          ;OLD SIZE OF PL TABLE
+       ADD     W,PLTP          ;NEW BASE OF PL TABLE
+       HRL     W,BLKSIZ        ;NEW SIZE OF PL TABLE
+       HLLM    W,PLTP          ;INTO POINTER
+       JRST    SLTC
+
+
+IFN REENT,<
+FORTHI:        HRRZ T,JOBREL   ;CHECK FOR CORE OVERFLOW
+       CAIGE T,@X
+       PUSHJ   P,[PUSHJ P,HIEXP
+               TLOA F,FULLSW
+               JRST POPJM3     ;CHECK AGAIN
+               POPJ P,]
+       JRST BITWX2>
+     
+
+SUBTTL PROCESS END CODE WORD
+
+ENDS:  PUSHJ   P,WORD;         GET STARTING ADDRESS
+       JUMPE   W,ENDS1;        NOT MAIN
+       ADDI    W,(R);          RELOCATION OFFSET
+       TLNE    N,ISAFLG;       IGNORE STARTING ADDRESS
+       JRST ENDS1
+       HRRZM   W,STADDR        ;STORE STARTING ADDRESS
+IFN NAMESW,<MOVE W,1(N)        ;SET UP NAME
+       PUSHJ   P,LDNAM
+       MOVE W,DTIN
+       MOVEM W,PRGNAM>
+ENDS1: PUSHJ   P,WORDPR        ;DATA STORE SIZE
+       HRRZM   C,PTEMP         ;NUMBER OF PERMANENT TEMPS
+       MOVEM   V,CCON;         START OF CONSTANTS AREA
+       JUMPE   W,E1;           NULL
+       MOVEM   W,BLKSIZ        ;SAVE COUNT
+       MOVEI   W,0(V)          ;DEFINE CONST.
+       MOVE    C,CNR50         ;...
+       TLNN    F,SKIPSW!FULLSW
+       PUSHJ   P,SYMPT         ;...
+       PUSHJ   P,GSWD          ;STORE CONSTANT TABLE
+E1:    MOVEI   W,0(V);         GET LOADER LOC
+       EXCH    W,PTEMP;        STORE INTO PERM TEMP POINTER
+       ADD     W,PTEMP;        FORM TEMP TEMP ADDRESS
+       MOVEM   W,TTEMP;        POINTER
+       MOVEM   V,GSTAB;        STORE LOADER LOC IN GLOBSUB
+       MOVEM H,SVFORH
+       MOVE    C,TTR50         ;DEFINE %TEMP.
+       TLNE    F,SKIPSW!FULLSW
+       JRST    E1A
+       PUSHJ   P,SYMPT         ;...
+       MOVE    C,PTR50         ;DEFINE (IF EXTANT) TEMP.
+       MOVEI   W,0(V)          ;...
+       CAME    W,TTEMP         ;ANY PERM TEMPS?
+       PUSHJ   P,SYMPT         ;YES, DEFINE
+E1A:   PUSHJ   P,WORD;         NUMBER OF GLOBSUBS
+       JUMPE   W,E11
+       MOVEM   W,BLKSIZ        ;SIZE OF GLOBSUB
+       PUSHJ   P,GSWD          ;STORE GLOBSUB TABLE
+E11:   MOVEM   V,STAB;         SCALARS
+       PUSHJ   P,WORD;         HOW MANY?
+       JUMPE   W,E21;          NONE
+       PUSHJ   P,GSWDPR        ;STORE SCALAR TABLE
+E21:   MOVEM   V,ATAB;         ARRAY POINTER
+       PUSHJ   P,WORD;         COMMENTS FOR SCALARS APPLY
+       JUMPE   W,E31
+       PUSHJ   P,GSWDPR        ;STORE ARRAY TABLE
+E31:   MOVEM   V,AOTAB;        ARRAYS OFFSET
+       PUSHJ   P,WORD;         SAME COMMENTS AS ABOVE
+       JUMPE   W,E41
+       PUSHJ   P,GSWDPR        ;STORE ARRAY OFFSET TABLE
+E41:   PUSHJ   P,WORD;         TEMP, SCALAR, ARRAY SIZE
+       TLNE    F,FULLSW!SKIPSW ;SKIPPING THIS PROG?
+       MOVEI   W,0             ;DON'T ACCEPT GLOB SUBPROG REQUESTS
+       MOVEM   V,CTAB;         SETUP COMMON TABLE POINTER
+       ADD     W,GSTAB;        GLOBAL SUBPROG BASE
+       MOVEM   W,COMBAS;       START OF COMMON
+       PUSHJ   P,WORD;         COMMON BLOCK SIZE
+       HRRZM   W,BLKSIZ
+       JUMPE   W,PASS2;        NO COMMON
+COMTOP:        PUSHJ   P,WORDPR        ;GET A COMMON PAIR
+       TLNE    F,SKIPSW!FULLSW ;IF SKIPPING
+       JRST    COMCO1          ;DON'T USE
+       PUSHJ   P,SDEF;         SEARCH
+       JRST    COMYES;         ALREADY THERE
+       HRLS    W
+       HRR     W,COMBAS;       PICK UP THIS COMMON LOC
+       TLNN    F,SKIPSW!FULLSW
+       PUSHJ   P,SYMXX;        DEFINE IT
+       MOVS    W,W;            SWAP HALFS
+       ADD     W,COMBAS;       UPDATE COMMON LOC
+       HRRM    W,COMBAS;       OLD BASE PLUS NEW SIZE
+       HLRZS   W;              RETURN ADDRESS
+       TLZ     C,400000
+       TLNN F,SKIPSW!FULLSW
+       PUSHJ   P,SYMXX
+COMCOM:        PUSHJ   P,CWSTWX        ;STORE A WORD PAIR
+COMCO1:        SOS     BLKSIZ
+       SOSLE   BLKSIZ
+       JRST    COMTOP
+       JRST    PASS2
+
+COMYES:        HLRZ    C,2(A);         PICK UP DEFINITION
+       CAMLE   W,C;            CHECK SIZE
+       JRST    ILC;            ILLEGAL COMMON
+       MOVE    C,1(A);         NAME
+       HRRZ    W,2(A); BASE
+       JRST    COMCOM
+     
+
+
+PRSTWX:        PUSHJ   P,WORDPR        ;GET A WORD PAIR
+CWSTWX:        EXCH    C,W             ;SPACE TO STORE FIRST WORD OF PAIR?
+       PUSHJ   P,WSTWX         ;...
+       EXCH    C,W             ;THERE WAS; IT'S STORED
+WSTWX: TLNE    F,FULLSW!SKIPSW ;SPACE FOR ANOTHER WORD?
+       POPJ    P,              ;NOPE, RETURN
+       MOVEM   W,@X            ;YES, STORE IT.
+       AOJA    V,BITWX         ;TELL THE TABLES ABOUT IT; THEN RETURN
+
+
+GSWD:  PUSHJ   P,WORD          ;GET WORD FROM TABLE
+       PUSHJ   P,WSTWX         ;STASH IT
+       SOSE    BLKSIZ          ;FINISHED?
+       JRST    GSWD            ;NOPE, LOOP
+       POPJ    P,              ;TRA 1,4
+
+GSWDPR:        MOVEM   W,BLKSIZ        ;KEEP COUNT
+GSWDP1:        PUSHJ   P,PRSTWX        ;GET AND STASH A PAIR
+       SOS     BLKSIZ          ;FINISHED?
+       SOSLE   BLKSIZ          ;...
+       JRST    GSWDP1          ;NOPE, LOOP
+       POPJ    P,              ;TRA 1,4
+     
+
+SUBTTL BEGIN HERE PASS2 TEXT PROCESSING
+
+PASS2: ADDI V,(X)
+IFN REENT,<TLNE F,HIPROG
+       HRRZ V,H>
+       MOVEM V,TOPTAB  ;SAVE FOR OVERLAP CHECKING
+       TLNE    F,FULLSW+SKIPSW;        ABORT?
+       JRST    ALLOVE;         YES
+       MOVE    V,LLC           ;PICK UP PROGRAM ORIGIN
+       CAML    V,CCON          ;IS THIS A PROGRAM?
+       JRST    FBLKD           ;NO, GO LOOK FOR FIRST BLK DATA
+       TLOE    N,PGM1          ;YES, IS THIS FIRST F4 PROG?
+       JRST    NOPRG           ;NO
+       HRR     W,COMBAS        ;YES, PLACE PROG BREAK IN LH
+IFE L,<IFN REENT,<TLNN F,HIPROG        ;DON'T BOTHER IF IN HISEG, CHAIN NOT SMART ENOUGH>
+       HRLM    W,JOBCHN(X)     ;FOR CHAIN>
+NOPRG: HRRZ    W,PLTP;         GET PROG TABLE BASE
+       HLRZ    C,PLTP;         AND SIZE
+       ADD     W,C;            COMPUTE END OF PROG TABLE
+       ADD     W,[POINT 1,1];  AND BEGINNING OF BIT TABLE
+       EXCH    W,BITP;         SWAP POINTERS
+PASS2B:        ILDB    C,BITP;         GET A BIT
+       JUMPE   C,PASS2C;       NO PASS2 PROCESSING
+       PUSHJ   P,PROC;         PROCESS A TAG
+       JRST    PASS2B;         MORE TO COME
+       JRST    ENDTP;
+
+PROC:  LDB     C,[POINT 6,@X,23];      TAG
+       SETZM   MODIF;          ZERO TO ADDRESS MODIFIER
+       TRZE    C,40
+       AOS     MODIF
+       MOVEI   W,TABDIS;       HEAD OF TABLE
+       HRLI W,-TABLNG  ;SET UP FOR AOBJN
+       HLRZ    T,(W);          GET ENTRY
+       CAME    T,C;            CHECK
+       AOBJN W,.-2
+       JUMPGE W,LOAD4A ;RAN OUT OF ENTRIES
+       HRRZ    W,(W);          GET DISPATCH
+       LDB     C,[POINT 12,@X,35]
+       JRST    (W);            DISPATCH
+
+
+PASS2C:        PUSHJ   P,PASS2A
+       JRST    PASS2B
+       JRST    ENDTP
+     
+
+
+TABDIS:        XWD 11,PCONS;           CONSTANTS
+       XWD 06,PGS;             GLOBAL SUBPROGRAMS
+       XWD 20,PST;             SCALARS
+       XWD 22,PAT;             ARRAYS
+       XWD 01,PATO;            ARRAYS OFFSET
+       XWD 00,PPLT;            PROGRAMMER LABELS
+       XWD 31,PMLT;            MADE LABESL
+       XWD 26,PPT;             PERMANENT TEMPORARYS
+       XWD 27,PTT;             TEMPORARY TEMPORARYS
+TABLNG==.-TABDIS
+;DISPATCH ON A HEADER
+
+HEADER:        CAMN    W,[EXP -2];     END OF PASS ONE
+       JRST    ENDS
+       LDB     C,[POINT 12,W,35];      GET SIZE
+       MOVEM   C,BLKSIZ
+       ANDI    W,770000
+       JUMPE   W,PLB;  PROGRAMMER LABEL
+       CAIN    W,500000;       ABSOLUTE BLOCK
+       JRST    ABSI;
+       CAIN    W,310000;       MADE LABEL
+       JRST    MDLB;           MADE LABEL
+       CAIN    W,600000
+       JRST    GLOBDF
+       CAIN    W,700000;       DATA STATEMENT
+       JRST    DATAS
+       JRST    LOAD4A;         DATA STATEMENTS WILL GO HERE
+
+TTR50: RADIX50 10,%TEMP.
+PTR50: RADIX50 10,TEMP.
+CNR50: RADIX50 10,CONST.
+     
+
+SUBTTL ROUTINES TO PROCESS POINTERS
+
+PCONS: ADD     C,CCON;         GENERATE CONSTANT ADDRESS
+       SOJA    C,PCOMX         ;ADJUST FOR 1 AS FIRST ENTRY
+
+PSTA:  PUSHJ   P,SWAPSY        ;NON-COMMON SCALARS AND ARRAYS
+       ADDI    C,(R);          RELOCATE
+PCOM1: PUSHJ   P,SYDEF         ;...
+PCOMX: ADD     C,MODIF         ;ADDR RELOC FOR DP
+       HRRM    C,@X;           REPLACE ADDRESS
+PASS2A:        AOJ     V,;             STEP READOUT POINTER
+       CAML    V,CCON          ;END OF PROCESSABLES?
+CPOPJ1:        AOS     (P);            SKIP
+       POPJ    P,;
+
+PAT:   SKIPA   W,ATAB          ;ARRAY TABLE BASE
+PST:   MOVE    W,STAB          ;SCALAR TABLE  BASE
+       ROT     C,1             ;SCALE BY 2
+       ADD     C,W             ;ADD IN TABLE BASE
+       ADDI    C,-2(X);        TABLE ENTRY
+       HLRZ    W,(C);          CHECK FOR COMMON
+       JUMPE   W,PSTA;         NO COMMON
+       PUSHJ   P,COMDID        ;PROCESS COMMON
+       JRST    PCOM1
+
+COMDID:        LSH     W,1             ;PROCESS COMMON TABLE ENTRIES
+       ADD     W,CTAB;         COMMON TAG
+       ADDI    W,-2(X);        OFFSET
+       PUSHJ   P,SWAPSY;       GET SYMBOL AND SET TO DEFINED
+       ADD     C,1(W);         BASE OF COMMON
+       POPJ    P,              ;RETURN
+
+PATO:  ROT     C,1
+       ADD     C,AOTAB;        ARRAY OFFSET
+       ADDI    C,-2(X);        LOADER OFFSET
+       MOVEM   C,CT1;          SAVE CURRENT POINTER
+       HRRZ    C,1(C);         PICK UP REFERENCE POINTER
+       ANDI    C,7777; MASK TO ADDRESS
+       ROT     C,1;            ALWAYS A ARRAY
+       ADDI    C,-2(X)
+       ADD     C,ATAB
+       HLRZ    W,(C);          COMMON CHECK
+       JUMPE   W,NCO
+       PUSHJ   P,COMDID        ;PROCESS COMMON
+       PUSHJ   P,SYDEF
+       MOVE    C,CT1
+       HRRE    C,(C)
+       ADD     C,1(W)
+       JRST    PCOMX
+     
+
+NCO:   PUSHJ   P,SWAPSY;
+       ADDI    C,(R)           ;DEFINE SYMBOL IN TRUE LOC
+       PUSHJ   P,SYDEF         ;...
+       MOVE    C,CT1
+       HRRZ    C,(C)           ;OFFSET ADDRESS PICKUP
+       ADDI    C,(R)           ;WHERE IT WILL BE
+       JRST    PCOMX           ;STASH ADDR AWAY
+
+PTT:   ADD     C,TTEMP;        TEMPORARY TEMPS
+       SOJA    C,PCOMX         ;ADJUST FOR 1 AS FIRST ENTRY
+
+PPT:   ADD     C,PTEMP;        PERMANENT TEMPS
+       SOJA    C,PCOMX         ;ADJUST FOR 1 AS FIRST ENTRY
+
+PGS:   ADD     C,GSTAB;        GLOBSUBS
+       ADDI    C,-1(X);        OFFSET
+       MOVE    C,(C)
+       TLC     C,640000;       MAKE A REQUEST
+       PUSHJ P,TBLCHK          ;CHECK FOR OVERLAP
+       MOVEI   W,(V);          THIS LOC
+       HLRM    W,@X;           ZERO RIGHT HALF
+       PUSHJ   P,SYMXX
+       JRST    PASS2A
+
+SYDEF: TLNE    N,SYDAT         ;SYMBOL WANTS DEFININITION?
+       POPJ    P,              ;NO, GO AWAY
+       PUSH    P,C             ;SAVE THE WORLD
+       PUSH    P,W
+       PUSHJ P,TBLCHK  ;CHECK FOR OVERLAP
+       MOVE    W,C
+       SKIPE   C,T     ;PICKUP VALUE
+       PUSHJ   P,SYMXX
+       POP     P,W
+       POP     P,C
+       POPJ    P,;
+
+PMLT:  ADD     C,MLTP
+       JRST    .+2
+PPLT:  ADD     C,PLTP
+       HRRZ    C,(C)
+       JRST    PCOMX
+
+SYMXX: PUSH    P,V
+       PUSHJ   P,SYMPT
+       POP     P,V
+IFE REENT,<POPJ        P,>
+IFN REENT,<JRST RESTRX>
+     
+
+
+SWAPSY:        MOVEI   T,0;            SET TO EXCHANGE DEFS
+       EXCH    T,1(C);         GET NAME
+       HRRZ    C,(C)           ;GET VALUE
+       POPJ    P,
+TBLCHK:        HRRZ W,MLTP     ;GETT TOP OV TABLES
+       SUBI W,2
+       CAMG W,TOPTAB   ;WILL IT OVERLAP
+IFE EXPAND,<TLO F,FULLSW>
+IFN EXPAND,<JRST [PUSHJ P,XPAND
+               TLOA F,FULLSW
+               JRST TBLCHK
+               POPJ P,]>
+       POPJ P,
+     
+
+SUBTTL END OF PASS2
+
+ALLOVE:        TLZ     N,F4SW          ;END OF F4 PROG
+       HRRZ V,SDSTP    ;GET READY TO ZERO OUT DATA STMTS
+       SETZM (V)       ;AT LEAST ONE THERE
+       CAIL V,(S)      ;IS THERE MORE THAN ONE??
+       JRST NOMODS     ;NO
+       HRLS V
+       ADDI V,1        ;SET UP BLT
+       BLT V,(S)       ;ZERO OUT ALL OF IT
+NOMODS:        MOVE H,SVFORH
+       TLNE    F,FULLSW!SKIPSW
+       JRST    HIGH3A
+       HRR     R,COMBAS        ;TOP OF THE DATA
+       CAMG    H,SDS           ;HIGHEST LOC GREATER THAN DATA STATEMENTS?
+       JRST    HIGH3A          ;NO, RETURN
+       ADDI    H,1(S)          ;YES, SET UP MEANINGFUL ERROR COMMENT
+       SUB     H,SDS           ;...
+       TLO     F,FULLSW        ;INDICATE OVERFLO
+HIGH3A:        IFN REENT,<SETZ W,      ;CAUSES TROUBLE OTHERWISE
+       TLZE F,HIPROG
+       JRST HIGHN1
+       HRRZ V,GSTAB
+       MOVEI V,@X
+       CAMLE V,HILOW
+       MOVEM V,HILOW>
+       HRRZ C,R
+       JRST    HIGH31          ;RETURN
+
+DATAS: TLNE    F,FULLSW+SKIPSW
+       JRST    DAX
+       MOVEI   C,(S)           ;ADDR OF WORD UNDER SYMBOL TABLE
+       MOVN    W,BLKSIZ        ;HOW FAR DOWN TO BLT
+       ADDM    W,PLTP          ;UPDATE TABLE POINTERS
+       ADDM    W,BITP          ;...
+       ADDM    W,SDSTP         ;...
+       ADD     C,W             ;RH(C):= WHEN TO STOP BLT
+       HRL     C,MLTP          ;SOURCE OF BLTED DATA
+       ADD     W,MLTP          ;UPDATE, GET DESTINATION OF BLT DATA
+IFN EXPAND,<   HRRZS W ;GET RID OF LEFT HALF
+               CAIG W,(H)
+               PUSHJ P,[PUSHJ P,XPAND
+                       POPJ P,
+                       ADDI W,2000
+                       ADD C,[XWD 2000,2000]
+                       JRST POPJM2]>
+       HRRM    W,MLTP  ;NO SET THIS SO EXTRA CORE NOT ZEROED
+       HLL     W,C             ;FORM BLT POINTER
+       BLT     W,-1(C)         ;MOVE TABLES DOWN (BUT NOT JRST ALLOVE)
+       PUSHJ   P,BITWX
+DAX:   PUSHJ   P,WORD;         READ ONE WORD
+       TLNN    F,FULLSW+SKIPSW
+       MOVEM   W,(C)
+       SOSLE   BLKSIZ          ;COUNT OF DATA SEQUENCE SIZE
+       AOJA    C,DAX           ;INCREMENT DATA SEQUENCE DEPOSIT LOC
+       JRST    TEXTR;          DONE
+     
+
+FBLKD: TLOE    N,BLKD1         ;IS THIS FIRST BLOCK DATA?
+       JRST    ENDTP           ;NO
+       HRR     V,COMBAS        ;PLACE PROG BREAK IN RH FOR
+IFE L,<IFN REENT,<     TLNN F,HIPROG>
+       HRRM    V,JOBCHN(X)     ;CHAIN>
+ENDTP: TLNE    F,FULLSW+SKIPSW
+       JRST    ALLOVE
+       HRR     V,GSTAB
+ENDTP0:        CAML    V,STAB;         ANY MORE GLOBSUBS
+       JRST    ENDTP2;         NO
+       MOVE    C,@X;           GET SUBPROG NAME
+       PUSHJ   P,SREQ;         IS IT ALLREADY REQUESTED
+       AOJA    V,ENDTP0;       YES
+       PUSHJ   P,SDEF;         OR DEFINED
+       AOJA    V,ENDTP0;       YES
+       PUSHJ   P,TBLCHK
+       MOVEI   W,0             ;PREPARE DUMMY LINK
+       TLNN    F,FULLSW+SKIPSW ;ABORT
+       PUSHJ   P,SYM3X;        PUT IN DUMMY REQUEST
+       PUSHJ   P,BITWX;        OVERLAP CHECK
+       AOJA    V,ENDTP0
+ENDTP2:        SETZM   PT1
+ENDTPW:        HRRZ    V,SDSTP
+IFN EXPAND,<IFN REENT,<TLNE F,HIPROG
+               JRST ENDTPI>
+               SUBI V,(X)
+               CAMG V,COMBAS
+               JRST    [SUB V,COMBAS
+                       MOVNS   V
+                       PUSHJ P,XPAND9
+                       TLO F,FULLSW
+                       JRST .+1]
+ENDTPH:                HRR V,SDSTP>
+       HRRZM   V,SDS           ;DATA STATEMENT LOC
+ENDTP1:        SUBI    V,(X);          COMPENSATE FOR OFFSET
+       MOVE    W,@X;   GET WORD
+       TLNE    W,-1;           NO LEFT HALF IMPLIES COUNT
+       JRST    DODON;          DATA DONE
+       ADD     W,[MOVEI W,3]
+       ADDI    W,@X
+       EXCH    W,@X
+       AOJ     V,
+       ADD     W,@X;           ITEMS COUNT
+       MOVEM   W,ITC
+       MOVE    W,[MOVEM W,LTC]
+       MOVEM   W,@X;           SETUP FOR DATA EXECUTION
+       AOJ     V,
+       MOVSI   W,(MOVEI W,0)
+       EXCH    W,@X
+       MOVEM   W,ENC;          END COUNT
+       AOJ     V,
+       MOVEI   W,@X
+       ADDM    W,ITC
+LOOP:  MOVE    W,@X
+       HLRZ    T,W;            LEFT HALF INST.
+       ANDI    T,777000
+       CAIN    T,254000        ;JRST?
+       JRST    WRAP            ;END OF DATA
+       CAIN    T,260000        ;PUSHJ?
+       JRST    PJTABL(W)       ;DISPATCH VIA TABLE
+       CAIN    T,200000;       MOVE?
+       AOJA    V,INNER
+       CAIN    T,270000;       ADD?
+       JRST    ADDOP
+       CAIN    T,221000;       IMULI?
+       AOJA    V,LOOP
+       CAIE    T,220000;       IMUL?
+       JRST    LOAD4A;         NOTA
+INNER: HRRZ    T,@X;           GET ADDRESS
+       TRZE    T,770000;       ZERO TAG?
+       SOJA    T,CONPOL;       NO, CONSTANT POOL
+       JUMPE T,FORCNF
+       SUB     T,PT1;          SUBTRACT INDUCTION NUMBER
+       ASH     T,1
+       SUBI T,1
+       HRRM    T,@X
+       HLRZ    T,@X
+       ADDI    T,P
+       HRLM    T,@X
+       AOJA    V,LOOP
+IFN EXPAND,<IFN REENT,<ENDTPI: HRRZ V,COMBAS
+       MOVEI V,@X
+       CAMLE V,JOBREL
+       JRST    [PUSHJ P,HIEXP
+               TLOA F,FULLSW
+               JRST ENDTPI
+               JRST ENDTPH]
+       JRST ENDTPH>>
+FORCNF:        ERROR   ,</FORTRAN CONFUSED ABOUT DATA STATEMENTS#/>
+       JRST LD2
+     
+
+CONPOL:        ADD     T,ITC;  CONSTANT BASE
+       HRRM    T,@X
+       AOJA    V,LOOP
+
+ADDOP: HRRZ    T,@X
+       TRZE    T,770000
+       SOJA    T,CONPOL
+SKIPIN:        AOJA    V,LOOP
+
+PJTABL:        JRST    DWFS            ;PUSHJ 17,0
+       AOSA    PT1             ;INCREMENT DO COUNT
+       SOSA    PT1;            DECREMENT DO COUNT
+       SKIPA   W,[EXP DOINT.]
+       MOVEI   W,DOEND.
+       HRRM    W,@X
+       AOJA    V,SKIPIN        ;SKIP A WORD
+
+DWFS:  MOVEI   W,DWFS.
+       HRRM    W,@X
+       AOJ     V,
+       TLO     N,SYDAT
+       PUSHJ   P,PROC;         PROCESS THE TAG
+       JRST    LOAD4A          ;DATA STATEMENT BELOW CODE TOP
+       JRST    LOOP            ;PROPER RETURN
+
+DOINT.:        POP     P,V;            GET ADDRESS OF INITIAL VALUE
+       PUSH    P,(V);          STORE INDUCTION VARIABLE
+       AOJ     V,
+       PUSH    P,V;            INITIAL ADDRESS
+       JRST    (V)
+
+DOEND.:        HLRE    T,@(P)          ;RETAIN SIGN OF INCREMENT
+       ADDM    T,-2(P);        INCREMENT
+       HRRZ    T,@(P);         GET FINAL VALUE
+       SUB     T,-2(P)         ;FINAL - CURRENT
+       IMUL    T,@(P)          ;INCLUDE SIGN OF INCREMENT
+       JUMPL   T,DODONE        ;SIGN IS ONLY IMPORTANT THING
+       POP     P,(P);          BACK UP POINTER
+       JRST    @(P)
+     
+
+DODONE:        POP     P,-1(P);        BACK UP ADDRESS
+       POP     P,-1(P)
+       JRST    CPOPJ1          ;RETURN
+
+WRAP:  MOVE    W,ENC;          NUMBER OF CONSTANTS
+       ADD     W,ITC;          CONSTANT BASE
+       MOVEI   C,(W);          CHAIN
+       HRRM    C,@X
+       MOVEI   V,(W);          READY TO GO
+       JRST    ENDTP1
+
+DODON: TLZ     N,RCF!SYDAT!DZER        ;DATA STATEMENT FLAGS
+       MOVE    W,PTEMP         ;TOP OF PROG
+       ADDI    W,(X)           ;+OFFSET
+       HRRZ C,SDS
+IFE EXPAND,<SUBI C,(X) ;CHECK FOR ROOM
+       CAMGE C,COMBAS  ;IS IT THERE
+       TLO F,FULLSW    ;NO (DONE EARLIER IF EXPAND)
+       HRRZ C,SDS>
+       SUBI C,1        ;GET ONE LESS (TOP LOCATION TO ZERO)
+IFN REENT,<TLNE F,HIPROG
+       MOVE C,JOBREL>
+SECZER:        CAMLE   W,C             ;ANY DATA TO ZERO?
+       JRST    @SDS            ;NO, DO DATA STATEMENTS
+                               ;FULLSW IS ON IF COMBAS GT. SDS
+       TLNN    F,FULLSW+SKIPSW ;SHOULD WE ZERO?
+       SETZM   (W)             ;YES, DO SO
+       TLON    N,DZER          ;GO BACK FOR MORE?
+       AOJA    W,SECZER        ;YES, PLEASE
+       HRLI    W,-1(W)         ;SET UP BLT POINTER TO ZERO DATA
+       TLNN    F,FULLSW+SKIPSW ;SHOULD WE ZERO?
+       BLT     W,(C)           ;YES, DO SO
+       JRST    @SDS            ;GO DO DATA STATEMENTS
+
+DATAOV:        ERROR   0,</DATA STATEMENT OVERFLOW#/>
+       JRST    LD2
+     
+
+DREAD: TLNE    N,RCF;          NEW REPEAT COUNT NEEDED
+       JRST    FETCH;          NO
+       MOVE    W,LTC
+       MOVEM   W,LTCTEM
+       MOVE    W,@LTC;         GET A WORD
+       HLRZM   W,RCNT;         SET REPEAT COUNT
+       HRRZM   W,WCNT;         SET WORD COUNT
+       POP     W,(W);          SUBTRACT ONE FROM BOTH HALFS
+       HLLM    W,@LTC;         DECREMENT REPEAT COUNT
+       AOS     W,LTC;          STEP READOUT
+       TLO     N,RCF
+FETCH: MOVE    W,@LTC
+       AOS     LTC
+       SOSE    WCNT
+       POPJ    P,;
+       SOSN    RCNT
+       JRST    DOFF.
+       MOVE    V,LTCTEM;       RESTORE READOUT
+       MOVEM   V,LTC
+DOFF.: TLZ     N,RCF;          RESET DATA REPEAT FLAG
+       POPJ    P,;
+
+DWFS.: MOVE    T,(P)
+       AOS     (P)
+       MOVE    T,(T);          GET ADDRESS
+       HLRZM   T,DWCT;         DATA WORD COUNT
+       HRRZS   T
+       ADDI    T,(W);          OFFSET
+IFN REENT,<HRRZS T             ;CLEAR LEFT HALF INCASE OF CARRY
+       CAML T,HVAL1
+       JRST    [ADD T,HIGHX
+               HRRZS T ;MUST GET RID OF LEFT HALF
+               CAMLE T,JOBREL
+               JRST DATAOV     ;IN CASE FORTRAN GOOFS ON LIMITS
+               JRST DWFS.1]
+       ADD T,LOWX
+       HRRZS T>
+IFE REENT,<ADDI T,(X)>
+       CAML T,SDS
+       JRST DATAOV
+DWFS.1:        PUSHJ   P,DREAD         ;GET A DATA WORD
+       HRRZS T
+IFN REENT,<CAMG T,JOBREL       ;JUST TO MAKE SURE>
+       CAMN T,SDS
+       JRST DATAOV
+       TLNN    F,FULLSW+SKIPSW ;LOAD THE NEXT DATA ITEM?
+       MOVEM   W,(T)           ;YES, STORE IT
+       SOSE    W,DWCT;         STEP DOWN AND TEST
+       AOJA T,DWFS.1           ;ONE MORE TIME, MOZART BABY!
+       POPJ    P,
+     
+
+SUBTTL ROUTINE TO SKIP FORTRAN OUTPUT
+
+;SUBSECTION OF THE ROUTINE TO HANDLE OUTPUT FROM THE
+;FORTRAN IV COMPILER. THE MAIN OBJECT OF THE ROUTINE IS TO
+;LOOK FOR THE END BLOCK. CODE TAKEN FROM FUDGE2.
+
+MACHCD:        HRRZ    C,W             ;GET THE WORD COUNT
+       PUSHJ   P,WORD          ;INPUT A WORD
+       SOJG    C,MACHCD        ;LOOP BACK FOR REST OF THE BLOCK
+                               ;GO LOOK FOR NEXT BLOCK
+
+REJECT:        PUSHJ   P,WORD          ;READ A FORTRAN BLOCK HEADER
+       TLC     W,-1            ;TURN ONES TO ZEROES IN LEFT HALF
+       TLNE    W,-1            ;WAS LEFT HALF ALL ONES?
+       JRST    REJECT          ;NO, IT WAS CALCULATED MACHINE CODE
+       CAIN    W,-2            ;YES, IS RIGHT HALF = 777776?
+       JRST    ENDST           ;YES, PROCESS F4 END BLOCK
+       LDB     C,[POINT 6,W,23];GET CODE BITS FROM BITS 18-23
+       TRZ     W,770000        ;THEN WIPE THEM OUT
+       CAIE    C,70            ;IS IT A DATA STATEMENT?
+       CAIN    C,50            ;IS IT ABSOLUTE MACHINE CODE?
+       JRST    MACHCD          ;YES, TREAT IT LIKE DATA STATEMENTS
+       PUSHJ   P,WORD          ;NO, ITS A LABEL OF SOME SORT
+       JRST    REJECT          ;WHICH CONSISTS OF ONE WORD
+                               ;LOOK FOR NEXT BLOCK HEADER
+
+ENDST: MOVEI   C,1             ;TWO WORDS, FIVE TABLES, ONE WORD, ONE TABLE
+       MOVEI   T,6             ;TO GO
+F4LUP1:        PUSHJ   P,WORD          ;GET TABLE MEMBER
+F4LUP3:        SOJGE   C,F4LUP1        ;LOOP WITHIN A TABLE
+       JUMPL   T,LOAD1         ;LAST TABLE - RETURN
+       SOJG    T,F4LUP2        ;FIRST TWO WORDS AND FIVE TABLES
+       JUMPE   T,F4LUP1        ;COMMON LENGTH WORD
+F4LUP2:        PUSHJ   P,WORD          ;READ HEADER WORD
+       MOVE    C,W             ;COUNT TO COUNTER
+       JRST    F4LUP3          ;STASH
+     
+
+SUBTTL LISP LOADER
+
+IFE L,<        END     BEG>
+
+IFN L,<LODMAK: MOVEI A,LODMAK
+       MOVEM A,137     ;SET UP TO SAVE THE LISP LOADER
+       INIT 17
+       SIXBIT /DSK/
+       0
+       HALT
+       ENTER LMFILE
+       HALT
+       MOVNI A,LD
+       HRLZS A
+       ADDM A,LMLST    ;BECAUSE MACRO WON'T TAKE POLISH FIXUPS
+       OUTPUT LMLST
+       STATZ 740000
+       HALT
+       RELEASE
+       EXIT
+LMFILE:        SIXBIT /LISP/
+       SIXBIT /LOD/
+       0
+       0
+LMLST: IOWD LODMAK+1,137
+       0
+       END LODMAK>
+     
+
+\f
diff --git a/src/loader.v1 b/src/loader.v1
new file mode 100644 (file)
index 0000000..f01d580
--- /dev/null
@@ -0,0 +1,2348 @@
+       SUBTTL  DICK GRUEN: V25 3 AUG 68\r
+\r
+\r
+L==0                   ;L=1 MEANS THE LISP LOADER\r
+IFNDEF L,<L=0>\r
+\r
+;K=1                   ;K=1  MEANS 1KLOADER\r
+IFNDEF K,<K=0>         ;K=0  MEANS F4 LOADER\r
+\r
+IFN L,<        BLTSYM=0\r
+       LDAC=0>\r
+\r
+;BLTSYM=1              ;MOVE SYMBOL TABLE DOWN TO END OF PROG\r
+IFNDEF BLTSYM,<BLTSYM=0>\r
+\r
+;EXPAND=1              ;FOR AUTOMATIC CORE EXPANSION\r
+IFNDEF EXPAND,<        IFN K,<EXPAND=0>\r
+               IFE K,<EXPAND=1>>\r
+\r
+;PP=1                  ;ALLOW PROJ-PROG #\r
+IFNDEF PP,<PP=0>\r
+\r
+;CHN5=0                        ;IF CHAIN WHICH DOESN'T SAVES JOB41\r
+IFNDEF CHN5,<CHN5=1>\r
+\r
+IFE K,<        TITLE   LOADER - LOADS MACROX AND SIXTRAN FOUR>\r
+IFN K,<        TITLE   1KLOAD - LOADS MACROX>\r
+\f;ACCUMULATOR ASSIGNMENTS\r
+       F=0             ;FLAGS IN LH, SA IN RH\r
+       N=1             ;PROGRAM NAME POINTER\r
+       X=2             ;LOADER OFFSET\r
+       H=3             ;HIGHEST LOC LOADED\r
+       S=4             ;UNDEFINED POINTER\r
+       R=5             ;RELOCATION CONSTANT\r
+       B=6             ;SYMBOL TABLE POINTER\r
+       D=7\r
+       T=10\r
+       V=T+1\r
+       W=12            ;VALUE\r
+       C=W+1           ;SYMBOL\r
+       E=C+1           ;DATA WORD COUNTER\r
+       Q=15            ;RELOCATION BITS\r
+       A=Q+1           ;SYMBOL SEARCH POINTER\r
+       P=17            ;PUSHDOWN POINTER\r
+;FLAGS F(0 - 17)\r
+       CSW==1                  ;ON - COLON SEEN\r
+       ESW==2                  ;ON - EXPLICIT EXTENSION IDENT.\r
+       SKIPSW==4               ;ON - DO NOT LOAD THIS PROGRAM\r
+       FSW==10                 ;ON - SCAN FORCED TO COMPLETION\r
+       FCONSW==20              ;ON - FORCE CONSOLE OUTPUT\r
+       ASW==100                ;ON - LEFT ARROW ILLEGAL\r
+       FULLSW==200             ;ON - STORAGE EXCEEDED\r
+       SLIBSW==400             ;ON - LIB SEARCH IN THIS PROG\r
+       DSYMSW==1000            ;ON - LOAD WITH SYMBOLS FOR DDT\r
+       REWSW==2000             ;ON - REWIND AFTER INIT\r
+       LIBSW==4000             ;ON - LIBRARY SEARCH MODE\r
+       F4LIB==10000            ;ON - F4 LIBRARY SEARCH LOOKUP\r
+       ISW==20000              ;ON - DO NOT PERFORM INIT\r
+       SYMSW==40000            ;ON - LOAD LOCAL SYMBOLS\r
+       DSW==100000             ;ON - CHAR IN IDENTIFIER\r
+       NSW==200000             ;ON - SUPPRESS LIBRARY SEARCH\r
+       SSW==400000             ;ON - SWITCH MODE\r
+;FLAGS N(0 - 17)\r
+       ALLFLG==1               ;ON - LIST ALL GLOBALS\r
+       ISAFLG==2               ;ON - IGNORE STARTING ADDRESSES\r
+       COMFLG==4               ;ON - SIZE OF COMMON SET\r
+IFE K,<        F4SW==10                ;F4 IN PROGRESS\r
+       RCF==20                 ;READ DATA COUNT\r
+       SYDAT==40               ;SYMBOL IN DATA>\r
+       SLASH==100              ;SLASH SEEN\r
+IFE K,<        BLKD1==200              ;ON- FIRST BLOCK DATA SEEN\r
+       PGM1==400               ;ON FIRST F4 PROG SEEN\r
+       DZER==1000              ;ON - ZERO SECOND DATA WORD>\r
+       EXEQSW==2000            ;IMMEDIATE EXECUTION\r
+       DDSW==4000              ;GO TO DDT\r
+       AUXSWI==20000           ;ON - AUX. DEVICE INITIALIZED\r
+       AUXSWE==40000           ;ON - AUX. DEVICE ENTERED\r
+IFN PP,<PPSW==100000           ;ON - READING PROJ-PROG #\r
+       PPCSW==200000           ;ON - READING PROJ #>\r
+\fLOC   137\r
+OCT 25         ;VERSION #\r
+RELOC\r
+       MLON\r
+       SALL\r
+\r
+\r
+\r
+;MONITOR LOCATIONS IN THE USER AREA\r
+\r
+       JOBPRO==140             ;PROGRAM ORIGIN\r
+       JOBBLT==134             ;BLT ORIGIN\r
+       JOBCHN==131             ;RH = PROG BREAK OF FIRST BLOCK DATA\r
+                               ;LH = PROG BREAK OF FIRST F4 PROG\r
+\r
+;CALLI DEFINITIONS\r
+\r
+CDDTOUT==3     ;CALLI DDTOUT\r
+CEXIT==12      ;CALLI EXIT\r
+CDDTGT==5      ;CALLI DDTGT\r
+CSETDDT==2     ;CALLI SETDDT\r
+\r
+;LENGTH OF PUSHDOWN LIST FOR POLISH FIXUPS\r
+\r
+PPDL==60\r
+\f\r
+;MONITOR LOADER CONTROL\r
+\r
+BEG:\r
+IFE L,<\r
+LD:    HLLZS 42        ;GET RID OF ERROR COUNT IF NOT IN RPG MODE\r
+       CALLI   0               ;INITIALIZE THIS JOB\r
+NUTS:  MOVSI     R,F.I         ;SET UP INITIAL ACCUMULATORS\r
+       BLT     R,R             \r
+>\r
+IFN L,<\r
+LD:    HRRZM 0,LSPXIT#         ;RETURN ADDRESS FOR LISP\r
+       MOVEI 0,0\r
+       HRRZM R,RINITL#\r
+       CALLI 0\r
+>\r
+CTLSET:        INIT    3,1             ;INITIALIZE CONSOLE\r
+       SIXBIT    /TTY/\r
+       XWD     BUFO,BUFI\r
+CALLEX:        CALLI   CEXIT           ;DEVICE ERROR, FATAL TO JOB\r
+       MOVEI     E,TTY1\r
+       MOVEM     E,JOBFF\r
+       INBUF     3,1\r
+       OUTBUF    3,1           ;INITIALIZE OUTPUT BUFFERS\r
+       OUTPUT    3,                    ;DO INITIAL REDUNDANT OUTPUT\r
+IFE L,<        HRRZ    B,JOBREL        ;PICK UP CORE BOUND\r
+       SKIPE   JOBDDT          ;DOES DDT EXIST?\r
+       HRRZ    B,JOBSYM        ;USED BOTTOM OF SYMBOL TABLE INSTEAD\r
+>\r
+IFN L,<        MOVE B,JOBSYM>\r
+       SUB     B,SE3           ;INITIALIZE SYMBOL TABLE POINTER\r
+       CAILE     H,1(B)                ;TEST CORE ALLOCATION\r
+       CALLI   CEXIT           ;INSUFFICIENT CORE, FATAL TO JOB\r
+IFE L,<        MOVS    E,X             ;SET UP BLT POINTER\r
+       HRRI    E,1(X)>\r
+IFN L,<        MOVS E,H\r
+       HRRI E,1(H)>\r
+       SETZM     -1(E)                 ;ZERO FIRST WORD\r
+       BLT     E,(B)           ;ZERO CORE UP TO THE SYMBOL AREA\r
+       HRRZ    S,B             ;INITIALIZE UNDEF. POINTER\r
+       HRR     N,B             ;INITIALIZE PROGRAM NAME POINTER\r
+IFE L,<HRRI    R,JOBPRO        ;INITIALIZE THE LOAD ORIGIN>\r
+       MOVE    E,COMM          ;SET .COMM. AS THE FIRST PROGRAM\r
+       MOVEM     E,1(B)                ;STORE IN SYMBOL TABLE\r
+       HRRZM     R,2(B)                ;STORE COMMON ORIGIN\r
+       >\r
+       MOVEI     E,F.C         ;INITIALIZE STATE OF THE LOADER\r
+       BLT     E,B.C\r
+       SETZM   MDG             ;MULTIPLY DEFINED GLOBAL COUNT\r
+IFE L,<        MOVSI   W,254200        ;STORE HALT IN JOB41\r
+       MOVEM   W,JOB41(X)>     ;...\r
+IFN L,<        MOVE W,JOBREL\r
+       HRRZM W,OLDJR#>\r
+IFN LDAC!BLTSYM,<MOVEI W,20    ;SET UP SPACE TO SAVE FOR ACS AND\r
+       MOVEM W,KORSP#  ;USER DEFINITIONS WITH DDT>\r
+\r
+\f\r
+LD2:   \r
+;LOADER SCAN FOR FILE NAMES\r
+\r
+LD2Q:  MOVSI     B,F.C         ;RESTORE ACCUMULATORS\r
+       BLT     B,B\r
+       MOVE    P,PDLPT         ;INITIALIZE PUSHDOWN LIST\r
+       SETZM     BUFI2         ;CLEAR INPUT BUFFER POINTER\r
+IFE PP,<       SETZM     ILD1          ;CLEAR INPUT DEVICE NAME>\r
+IFN PP,<       MOVSI T,(SIXBIT /DSK/)  ;ASSUME DSK\r
+       MOVEM T,ILD1\r
+       SETZM OLDDEV#   ;TO MAKE IT GO BACK AFTER /D FOR LIBSR>\r
+       SETZM     DTIN          ;CLEAR INPUT FILE NAME\r
+IFN PP,<SETZM  PPN#            ;CLEAR INPUT PROJ-PROG #>\r
+\r
+LD2B:  RELEAS    1,                    ;RELEASE BINARY INPUT DEVICE\r
+       MOVEI     T,"*"\r
+       IDPB    T,BUFO1         ;OUTPUT ASTERISK TO START INPUT\r
+       OUTPUT    3,\r
+LD2BA: TLZ     F,FULLSW+ASW+ISW+CSW+ESW+SKIPSW+SLIBSW+REWSW\r
+       TLNE    F,LIBSW         ;WAS LIBRARY MODE ON?\r
+       TLO     F,SKIPSW        ;YES, NORMAL MODE IS SKIPPING\r
+\r
+LD2D:  IFN PP,<SETZM PPN       ;DO NOT REMEMBER PPNS FOR NOW\r
+LD2DB: SKIPE W,OLDDEV  ;RESET DEVICE IF NEEDED\r
+       CAMN W,ILD1     ;IS IT SAME?\r
+       JRST LD2DA      ;YES, FORGET IT\r
+       TLZ F,ISW+DSW+FSW+REWSW\r
+       MOVEM W,ILD1>\r
+LD2DA:\r
+       MOVEI     W,0           ;INITIALIZE IDENTIFIER SCAN\r
+       MOVEI     E,6           ;INITIALIZE CHARACTER COUNTER\r
+       MOVE    V,LSTPT         ;INITIALIZE BYTE POINTER TO W\r
+       TLZ     F,SSW+DSW+FSW   ;LEAVE SWITCH MODE\r
+LD3:   SOSG BUFI2      ;DECREMENT CHARACTER COUNT\r
+       INPUT     3,                    ;FILL TTY BUFFER\r
+       ILDB    T,BUFI1         ;LOAD T WITH NEXT CHARACTER\r
+LD3AA: MOVE    Q,T\r
+       IDIVI     Q,11          ;TRANSLATE TO 4 BIT CODE\r
+       LDB     Q,LD8(A)                ;LOAD CLASSIFICATION CODE\r
+       CAIGE     Q,4           ;MODIFY CODE IF .GE. 4\r
+       TLNN    F,SSW           ;MODIFY CODE IF SWITCH MODE OFF\r
+       ADDI    Q,4             ;MODIFY CLASS. CODE FOR DISPATCH\r
+       HRRZ    A,LD3A(Q)               ;LOAD RH DISPATCH ENTRY\r
+       CAIL    Q,10            ;SKIP IF CORRECT DISPATCH ENTRY\r
+       HLRZ    A,LD3A-10(Q)    ;LOAD LH DISPATCH ENTRY\r
+       JRST    @A                      ;JUMP TO INDICATED LOCATION\r
+\r
+;COMMAND DISPATCH TABLE\r
+\r
+LD3A:  XWD     LD3,LD7B                ;IGNORED CHAR, BAD CHAR (SWITCH)\r
+       XWD     LD6A,LD6                ;</> OR <(>, LETTER (SWITCH)\r
+       XWD     LD5,LD6C                ;<:>, DIGIT (SWITCH ARG.)\r
+       XWD     LD5A,LD6D               ;<.>, ESCAPE SWITCH MODE <)>\r
+       XWD     LD5C,LD7                ;<=> OR <L. ARROW>, BAD CHAR.\r
+       XWD     LD5B,LD4                ;<,>, ALPHABETIC CHAR.\r
+       XWD     LD5D,LD4                ;<CR.>, NUMERIC CHAR.\r
+       XWD     LD5E1,LD7               ;<ALT MODE>, BAD CHAR. <)>\r
+\r
+\f;ALPHANUMERIC CHARACTER, NORMAL MODE\r
+LD4:   SOJL    E,LD3           ;JUMP IF NO SPACE FOR CHAR IN W\r
+       SUBI    T,40            ;CONVERT FROM ASCII TO SIXBIT\r
+       IDPB    T,V             ;DEPOSIT CHAR OF IDENTIFIER IN W\r
+       TLO     F,DSW           ;SET IDENTIFIER FLAG\r
+       JRST    LD3             ;RETURN FOR NEXT CHARACTER\r
+\r
+;DEVICE IDENTIFIER DELIMITER <:>\r
+\r
+LD5:   PUSH    P,W             ;SAVE W\r
+       TLOE    F,CSW           ;TEST AND SET COLON FLAG\r
+       PUSHJ     P,LDF         ;FORCE LOADING\r
+       POP     P,W             ;RESTORE W\r
+       TLNE    F,ESW           ;TEST SYNTAX\r
+       JRST    LD7A            ;ERROR, MISSING COMMA ASSUMED\r
+       JUMPE     W,LD2D                ;JUMP IF NULL DEVICE IDENTIFIER\r
+       MOVEM     W,ILD1                ;STORE DEVICE IDENTIFIER\r
+IFN PP,<MOVEM W,OLDDEV ;WE HAVE A NEW ONE SO IGNORE OLD>\r
+       TLZ     F,ISW+DSW+FSW+REWSW     ;CLEAR OLD DEVICE FLAGS\r
+IFN PP,<SETZM  PPN             ;CLEAR OLD PP #>\r
+       JRST    LD2D            ;RETURN FOR NEXT IDENTIFIER\r
+\r
+;FILE NAME EXTENSION IDENTIFIER DELIMITER <.>\r
+\r
+LD5A:  TLOE    F,ESW           ;TEST AND SET EXTENSION FLAG\r
+       JRST    LD7A            ;ERROR, TOO MANY PERIODS\r
+       TLZE    F,CSW+DSW       ;SKIP IF NULL IDENT AND NO COLON\r
+       MOVEM     W,DTIN        ;STORE FILE IDENTIFIER\r
+       JRST    LD2D            ;RETURN FOR NEXT IDENTIFIER\r
+\r
+;INPUT SPECIFICATION DELIMITER <,>\r
+\r
+LD5B:\r
+IFN PP,<TLZE   N,PPCSW                 ;READING PP #?\r
+       JRST    [\r
+       HRLM    D,PPN   ;STORE PROJ #\r
+       JRST    LD6A1]  ;GET PROG #\r
+       PUSHJ   P,RBRA          ;CHECK FOR MISSING RBRA>\r
+       TLZN    F,FSW           ;SKIP IF PREV. FORCED LOADING\r
+       PUSHJ     P,FSCN2               ;LOAD (FSW NOT SET)\r
+       JRST    LD2D            ;RETURN FOR NEXT IDENTIFIER\r
+\r
+LD5B1: TLNE    F,ESW           ;TEST EXTENSION FLAG\r
+       JRST    LDDT3           ;EXPLICIT EXTENSION IDENTIFIER\r
+       TLZN    F,CSW+DSW               ;SKIP IF IDENT. OR COLON\r
+       POPJ    P,\r
+       MOVEM     W,DTIN                ;STORE FILE IDENTIFIER\r
+       JRST    LDDT2           ;ASSUME <.REL> IN DEFAULT CASE\r
+\f;OUTPUT SPECIFICATION DELIMITER <=> OR <LEFT ARROW>\r
+;OR PROJ-PROG # BRACKETS <[> AND <]>\r
+LD5C:\r
+IFN PP,<CAIN   T,"["                   ;PROJ-PROG #?\r
+       JRST    [TLO    N,PPSW+PPCSW    ;SET FLAGS\r
+               MOVEM   W,PPNW#         ;SAVE W\r
+               MOVEM   E,PPNE#         ;SAVE E\r
+               MOVEM   V,PPNV#         ;SAVE V\r
+               JRST LD6A1-1]   ;READ NUMBERS AS SWITCHES \r
+       CAIN    T,"]"                   ;END OF PP #?\r
+       JRST    [PUSHJ  P,RBRA          ;PROCESS RIGHT BRACKET\r
+               JRST    LD3             ];READ NEXT IDENT>\r
+       TLOE    F,ASW                   ;TEST AND SET LEFT ARROW FLAG\r
+       JRST    LD7A                    ;ERROR, MISPLACED LEFT ARROW\r
+       PUSHJ     P,LD5B1               ;STORE IDENTIFIER\r
+       TLZN    F,ESW                   ;TEST EXTENSION FLAG\r
+       MOVSI     W,554160              ;ASSUME <.MAP> IN DEFAULT CASE\r
+       MOVEM     W,DTOUT1              ;STORE FILE EXTENSION IDENTIFIER\r
+       MOVE    W,DTIN                  ;LOAD INPUT FILE IDENTIFIER\r
+       MOVEM     W,DTOUT               ;USE AS OUTPUT FILE IDENTIFIER\r
+IFN PP,<MOVE   W,PPN           ;PROJ-PROG #\r
+       MOVEM   W,DTOUT+3               ;...>\r
+       MOVE    W,ILD1                  ;LOAD INPUT DEVICE IDENTIFIER\r
+       MOVEM   W,LD5C1                 ;USE AS OUTPUT DEVICE IDENTIFIER\r
+IFN PP,<       SKIPE W,OLDDEV  ;RESTORE OLD\r
+       MOVEM W,ILD1>\r
+;INITIALIZE AUXILIARY OUTPUT DEVICE\r
+       TLZE    N,AUXSWI+AUXSWE         ;FLUSH CURRENT DEVICE\r
+       RELEASE 2,                      ;...\r
+       CALL    W,[SIXBIT ?DEVCHR?]     ;IS DEVICE A TTY?\r
+       TLNE    W,10                    ;...\r
+JRST   LD2D            ;YES, SKIP INIT\r
+       INIT    2,1                     ;INIT THE AUXILIARY DEVICE\r
+LD5C1: 0               ;AUXILIARY OUTPUT DEVICE NAME\r
+       XWD     ABUF,0                  ;BUFFER HEADER\r
+       JSP     A,ILD5                  ;ERROR RETURN\r
+       TLNE    F,REWSW                 ;REWIND REQUESTED?\r
+       CALL    2,[SIXBIT /UTPCLR/]             ;DECTAPE REWIND\r
+       TLZE    F,REWSW                 ;SKIP IF NO REWIND REQUESTED\r
+       MTAPE   2,1                     ;REWIND THE AUX DEV\r
+       MOVEI   E,AUX                   ;SET BUFFER ORIGIN\r
+       MOVEM     E,JOBFF\r
+       OUTBUF  2,1                     ;INITIALIZE SINGLE BUFFER\r
+       TLO     N,AUXSWI                        ;SET INITIALIZED FLAG\r
+       JRST    LD2D                    ;RETURN TO CONTINUE SCAN\r
+\r
+\f\r
+;RIGHT SQUARE BRACKET (PROJ-PROG NUMBERS)\r
+IFN PP,<\r
+RBRA:  TLZN    N,PPSW          ;READING PP #?\r
+       POPJ    P,              ;NOPE, RETURN\r
+       TLZE    N,PPCSW         ;COMMA SEEN?\r
+       JRST    LD7A            ;NOPE, INDICATE ERROR\r
+       HRRM    D,PPN           ;STASH PROG NUMBER\r
+       MOVE    W,PPNW#         ;PICKUP OLD IDENT\r
+       MOVE    E,PPNE#         ;RESTORE CHAR COUNT\r
+       MOVE    V,PPNV#         ;RESTORE BYTE PNTR\r
+       POPJ    P,              ;TRA 1,4\r
+\r
+;RIGHT JUSTIFY W\r
+\r
+RJUST: JUMPE   W,LD7A          ;NOTHING TO RIGHT JUSTIFY\r
+       TRNE    W,77            ;IS W RJUSTED YET?\r
+       POPJ    P,              ;YES, TRA 1,4\r
+       LSH     W,-6            ;NOPE, TRY AGAIN\r
+       JRST    .-3             ;...>\r
+\f\r
+;LINE TERMINATION <CARRIAGE RETURN>\r
+\r
+LD5D:\r
+IFN PP,<PUSHJ  P,RBRA          ;CHECK FOR UNTERMINATED PP #>\r
+       PUSHJ     P,FSCN                ;FORCE SCAN TO COMPLETION\r
+       JRST    LD2B            ;RETURN FOR NEXT LINE\r
+\r
+;TERMINATE LOADING <ALT MODE>\r
+\r
+LD5E:  SKIPE     D                     ;ENTER FROM G COMMAND\r
+       HRR     F,D             ;USE NUMERIC STARTING ADDRESS\r
+LD5E1:\r
+       PUSHJ     P,CRLF                ;START A NEW LINE\r
+       PUSHJ   P,SASYM         ;SETUP JOBSA,JOBFF,JOBSYM,JOBUSY\r
+IFN LDAC!BLTSYM,<HRRZ A,R              ;SET UP BLT OF ACS\r
+       ADDI A,(X)              ;END\r
+       ADD A,KORSP             ;ADD IN SPACE RESERVED\r
+       CAIL A,(S)\r
+IFN EXPAND,<JRST       [PUSHJ P,XPAND>\r
+                       PUSHJ   P,[\r
+IFE EXPAND,<                   JSP     A,ERRPT\r
+                               SIXBIT  /MORE CORE NEEDED#/>\r
+                               CALLI   CEXIT]\r
+IFN EXPAND,<           JRST .-1]>\r
+       HRRM R,BOTACS#          ;SAVE FOR LATER\r
+       HRRZ A,R                ;SET BLT\r
+       ADD A,X\r
+       HRL A,X\r
+       MOVE Q,A\r
+       BLT A,17(Q)>\r
+IFN BLTSYM,<HRRZ A,R   ;PLACE TO BLT TO\r
+       ADD A,KORSP\r
+       MOVE W,A        ;SAVE DEST\r
+       ADDI A,(X)      ;AFTER ADJUSTMENT\r
+       MOVE Q,S        ;UDEF PNTR\r
+       ADD Q,B         ;TOTAL UNDEFS AND DEFS IN LEFT\r
+       HLROS Q         ;NOW NEG IN RIGHT\r
+       MOVNS Q ;POSITIVE\r
+       ADDI Q,-1(A)    ;END OF BLT\r
+       HRLI A,1(S)     ;AND GET PLACE TO BLT FROM\r
+       SUBI W,1(S)     ;PREST LOC OF SYMBOL TABLE\r
+       ADDM W,JOBSYM(X)\r
+       ADDM W,JOBUSY(X)        ;ADJUST POINTERS\r
+       BLT A,(Q)       ;MOVE IT\r
+       SKIPN JOBDDT(X) ;IS DDT THERE?\r
+       JRST NODDT\r
+       SUBI Q,-1(X)\r
+       HRRM Q,JOBFF(X) ;RESTET JOBFF IF DDT IS IN\r
+       HRLM Q,JOBSA(X)\r
+NODDT:>\r
+       MOVE    W,[SIXBIT ?LOADER?]     ;FINAL MESSAGE\r
+       PUSHJ P,BLTSET          ;SETUP FOR FINAL BLT\r
+       RELEASE 2,              ;RELEASE AUX. DEV.\r
+IFN L,<        JRST @LSPXIT>\r
+LD5E5: MOVE    W,[BLT Q,(A)]   ;BLT OF ALL CODE\r
+       MOVEM   W,JOBBLT        ;STASH IN JOB DATA AREA\r
+       MOVEM   W,JOBBLT(X)     ;STASH IN RELOCATED JOBDATA AREA\r
+LD5E2: MOVE    W,CALLEX        ;EXIT AFTER BLT\r
+       TLZN    N,EXEQSW        ;IMMEDIATE EXECUTION REQUESTED?\r
+       JRST    LD5E3           ;NOPE, LET USER TYPE START HIMSELF\r
+       HRRZ    W,JOBSA(X)      ;PICKUP USUAL STARTING ADDRESS\r
+       TLNE    N,DDSW          ;DDT EXECUTION?\r
+       HRRZ    W,JOBDDT(X)     ;USE DDT SA INSTEAD\r
+       JUMPE   W,LD5E2         ;IF SA=0, DON'T EXECUTE\r
+       HRLI    W,(JRST)        ;INSTRUCTION TO EXECUTE\r
+LD5E3:\r
+IFE LDAC,<MOVEM        W,JOBBLT+1(X)   ;STASH FOR EXECUTION>\r
+IFN LDAC,<MOVEM        W,JOBBLT+2(X)   ;STASH FOR EXECUTION\r
+       HRLZ    17,JOBFF(X)     ;BUT FIRST BLT ACS\r
+       MOVE    W,[BLT 17,17]   ;...\r
+       MOVEM   W,JOBBLT+1(X)   ;...>\r
+       JRST    JOBBLT          ;IF IT WERE DONE, 'TWERE BEST DONE QUICKLY\r
+\r
+\f\r
+;SEARCH LIBRARY, PRINT UNDEFS, SETUP JOBSA,JOBFF,JOBSYM,JOBUSY\r
+\r
+SASYM: TLNN    F,NSW           ;SKIP IF NO SEARCH FLAG ON\r
+       PUSHJ   P,LIBF          ;SEARCH LIBRARY FILE\r
+       PUSHJ   P,FSCN          ;FORCE SCAN TO COMPLETION\r
+       PUSHJ   P,PMS           ;PRINT UNDEFINEDS\r
+IFE L,<        HRRZM   F,JOBSA(X)      ;RH OF JOBSA :=STARTING ADDRESS>\r
+SAS1:  HRRZ    A,H             ;COMPUTE PROG BREAK\r
+       SUBI    A,(X)           ;...\r
+       CAIGE   A,(R)           ;BUT NO HIGHER THAN RELOC\r
+       HRRZ    A,R             ;...\r
+IFE L,<        HRLM    A,JOBSA(X)      ;LH OR JOBSA IS PROG BREAK\r
+       HRRZM   A,JOBFF(X)      ;RH OF JOBFF CONTAINS PROG BREAK>\r
+       MOVE    A,B             ;SET JOBSYM W/ SYMBOL TABLE POINTER\r
+       AOS     A               ;...\r
+IFE L,<        MOVEM   A,JOBSYM(X)     ;...>\r
+IFN L,<        MOVEM   A,JOBSYM>\r
+       MOVE    A,S             ;SET JOBUSY W/ UNDEFINED SYMBOL POINTER\r
+       AOS     A               ;...\r
+IFE L,<        MOVEM   A,JOBUSY(X)     ;...>\r
+IFN L,<        MOVEM   A,JOBUSY>\r
+       POPJ    P,              ;RETURN\r
+;PRINT FINAL MESSAGE, SET UP BLT AC'S, SETDDT, RELEAS\r
+\r
+BLTSET:        PUSHJ   P,FCRLF         ;START FINAL MESSAGE\r
+       PUSHJ   P,PWORD         ;PRINT W\r
+       PUSHJ   P,SPACE\r
+       HRRZ    Q,JOBREL        ;PUBLISH HOW MUCH CORE USED\r
+IFN L,<        SUB     Q,OLDJR         ;OLD JOBREL>\r
+       LSH     Q,-12           ;...\r
+       ADDI    Q,1             ;...\r
+       PUSHJ   P,RCNUM         ;PUBLISH THE NUMBER\r
+       MOVE    W,[SIXBIT /K CORE/]     ;PUBLISH THE UNITS\r
+       PUSHJ   P,PWORD         ;...\r
+       PUSHJ   P,CRLF          ;...\r
+IFE L,<        MOVSI   Q,20(X)         ;HOW MUCH CODE TO BLT\r
+       HRRI    Q,20            ;...\r
+       HRRZ A,42               ;CHECK ON ERRORS\r
+       JUMPE A,NOEX            ;NONE, GO AHEAD\r
+       TLZN N,EXEQSW           ;DID HE WANT TO START EXECUTION?\r
+       JRST NOEX               ;NO\r
+       JSP A ,ERRPT            ;PRINT AN ERROR MESSAGE\r
+       SIXBIT /EXECUTION DELETED@/\r
+NOEX:  HRRZ    A,JOBREL        ;WHEN TO STOP BLT\r
+       HRRZM   A,JOBREL(X)     ;SETUP FOR POSSIBLE IMMED. XEQ\r
+       SUBI    A,(X)           ;...\r
+IFE BLTSYM,<CAIL       A,(S)           ;DON'T BLT OVER SYMBOL TABLE\r
+       MOVEI   A,(S)           ;OR UNDEFINED TABLE>\r
+       RELEAS  1,              ;RELEASE DEVICES\r
+       RELEAS  3,              ;...\r
+IFE L,<        MOVE    R,JOBDDT(X)     ;SET NEW DDT\r
+       CALLI   R,CSETDDT       ;...>\r
+       POPJ    P,              ;RETURN\r
+       >\r
+\r
+\f\r
+;WRITE CHAIN FILES\r
+\r
+CHNC:  SKIPA   A,JOBCHN(X)     ;CHAIN FROM BREAK OF FIRST BLOCK DATA\r
+CHNR:  HLR     A,JOBCHN(X)     ;CHAIN FROM BREAK OF FIRST F4 PROG\r
+       HRRZS   A               ;ONLY RIGHT HALF IS SIGNIFICANT\r
+       JUMPE   A,LD7C          ;DON'T CHAIN IF ZERO\r
+       TLNN    N,AUXSWI        ;IS THERE AN AUX DEV?\r
+       JRST    LD7D            ;NO, DON'T CHAIN\r
+       PUSH    P,A             ;SAVE WHEREFROM TO CHAIN\r
+       SKIPE   D               ;STARTING ADDR SPECIFIED?\r
+       HRR     F,D             ;USE IT\r
+       PUSHJ   P,SASYM         ;DO LIB SEARCH, SETUP JOBSA, ETC.\r
+       POP     P,A             ;GET WHEREFROM\r
+       MOVN    W,JOBREL        ;CALCULATE IOWD FOR DUMP\r
+       ADDI    W,-1-3-CHN5(A)  ;...\r
+       HRLI    W,-4-CHN5(A)    ;...\r
+       MOVSM   W,IOWDPP        ;...\r
+       ADDI    A,-4-CHN5(X)    ;ADD IN OFFSET\r
+IFN CHN5,<PUSH A,JOBSYM(X)     ;SETUP FOUR WORD TABLE\r
+       PUSH    A,JOB41(X)      ;...>\r
+       PUSH    A,JOBDDT(X)     ;JOBDDT IN ALL CASES\r
+IFE CHN5,<PUSH A,JOBSYM(X)     ;JOBDDT, JOBSYM, JOBSA>\r
+       PUSH    A,JOBSA(X)      ;JOBRYM ALWAYS LAST\r
+       CLOSE   2,              ;INSURE END OF MAP FILE\r
+       SETSTS  2,17            ;SET AUX DEV TO DUMP MODE\r
+       MOVSI   W,435056        ;USE .CHN AS EXTENSION\r
+       MOVEM   W,DTOUT1        ;...\r
+       PUSHJ   P,IAD2          ;DO THE ENTER\r
+       TLZ     N,AUXSWI+AUXSWE ;INSURE NO PRINTED OUTPUT\r
+       MOVE    W,[SIXBIT ?CHAIN?]      ;FINAL MESSAGE\r
+       PUSHJ   P,BLTSET                ;SETUP BLT PNTR, SETDDT, RELEAS\r
+       CALLI   CDDTGT          ;START DDT MODE OUTPUT\r
+       MOVSI   CHNBLT,CHAIN3   ;BLT CHAIN3 INTO ACS\r
+       BLT     CHNBLT,CHNBLT   ;...\r
+       MOVEI   P,CHNERR        ;POINTER TO ERR MESS\r
+       JRST    0               ;GO DO CHAIN\r
+\r
+\f\r
+;THE AC SECTION OF CHAIN\r
+\r
+CHAIN3:\r
+       PHASE   0\r
+       BLT     Q,(A)           ;USUAL LDRBLT\r
+       OUTPUT  2,IOWDP         ;WRITE THE CHAIN FILE\r
+       STATZ   2,IOBAD!IODEND  ;CHECK FOR ERROR OR EOF\r
+       JRST    LOSEBIG         ;FOUND SAME, GO GRIPE\r
+       CLOSE   2,              ;FINISH OUTPUT\r
+       STATZ   2,IOBAD!IODEND  ;CHECK FOR FINAL ERROR\r
+LOSEBI:        CALLI   CDDTOUT         ;GRIPE ABOUT ERROR\r
+       CALLI   CEXIT           ;EXIT\r
+CHNERR:        ASCIZ   ?DEVICE ERROR?  ;ERROR MESSAGE\r
+IOWDP: Z                       ;STORE IOWD FOR DUMP HERE\r
+CHNBLT:                                ;LAST WORD OF AC CHAIN (ZERO OF I/O POINTER)\r
+       DEPHASE\r
+IOWDPP=.-1                     ;MEMORY LOC OF AC IOWDP\r
+       Z                       ;TERMINATOR OF DUMP MODE LIST\r
+\r
+\f;EXPAND CORE\r
+\r
+IFN EXPAND,<\r
+XPAND: PUSH P,H        ;GET SOME REGISTERS TO USE\r
+       PUSH P,X\r
+       PUSH P,N\r
+       HRRZ X,JOBREL   ;WHAT WE WANT\r
+       ADDI X,2000\r
+       CALLI X,11\r
+       JRST XPAND6\r
+IFE K,<                HRRZ H,MLTP     ;GET LOWEST LOCATION\r
+       TLNN N,F4SW     ;IS FORTRAN LOADING>\r
+       HRRZ H,S        ;NO, USE S\r
+       HRRZ X,JOBREL   ;NOW MOVE\r
+       SUBI X,2000\r
+XPAND2:        MOVE N,(X)\r
+       MOVEM N,2000(X)\r
+       CAMLE X,H       ;TEST FOR END\r
+       SOJA X,XPAND2;          HAND EYE SYSTEM MOVES TABLE\r
+       HRLI H,-2000\r
+       SETZM (H)       ;ZERO NEW CORE\r
+       AOBJN H,.-1\r
+       MOVEI H,2000\r
+       ADDM H,S\r
+       ADDM H,B\r
+       ADDM H,JOBSYM\r
+       POP P,N\r
+       ADDI N,2000\r
+IFE K,<        TLNN N,F4SW     ;F4?\r
+       JRST    XPAND3\r
+       ADDM H,PLTP\r
+       ADDM H,BITP\r
+       ADDM H,SDSTP\r
+       ADDM H,MLTP\r
+       TLNE N,SYDAT\r
+       ADDM H,V>\r
+XPAND3:\r
+       POP P,X\r
+       POP P,H\r
+       AOS (P)\r
+       POPJ P,\r
+XPAND6:        JUMPE X,XPAND4\r
+       JSP A,ERRPT\r
+       SIXBIT /CORE AVAILABLE, BUT NOT TO YOU#/\r
+XPAND4:        JSP A,ERRPT\r
+       SIXBIT /MORE CORE NEEDED#/\r
+XPAND5:        POP P,N\r
+       POP P,X\r
+       POP P,H\r
+       POPJ P,\r
+\r
+XPAND7:        PUSHJ   P,XPAND\r
+       JRST    SFULLC\r
+       JRST    POPJM2\r
+\r
+POPJM3:        SOS     (P)             ;POPJ TO CALL-2\r
+POPJM2:        SOS     (P)             ;POPJ TO CALL-1\r
+       SOS     (P)             ;SAME AS POPJ TO\r
+       POPJ    P,              ;NORMAL POPJ MINUS TWO\r
+\f\r
+\r
+;ENTER SWITCH MODE\r
+\r
+LD6A:  CAIN    T,57            ;WAS CHAR A SLASH?\r
+       TLO     N,SLASH         ;REMEBER THAT\r
+       TLO     F,SSW           ;ENTER SWITCH MODE\r
+LD6A1: MOVEI   D,0             ;ZERO THE NUBER REGISTER\r
+       JRST    LD3             ;EAT A SWITCH\r
+\r
+;ALPHABETIC CHARACTER, SWITCH MODE\r
+\r
+LD6:   XCT     LD6B-101(T)     ;EXECUTE SWITCH FUNCTION\r
+       TLZE    N,SLASH ;SWITCH MODE ENTERED W/ SLASH?\r
+       JRST    LD6D            ;LEAVE SWITCH MODE\r
+       JRST    LD6A1           ;STAY IN SWITCH MODE\r
+\r
+;DISPATCH TABLE FOR SWITCHES\r
+\r
+;      THE INSTRUCTION AT THE CHARACTER LOCATION IS EXECUTED\r
+\r
+LD6B:  TLO     N,ALLFLG        ;A - LIST ALL GLOBALS\r
+       JRST    LD7B            ;B - ERROR\r
+       PUSHJ   P,CHNC          ;C - CHAIN, START W/ COMMON\r
+       PUSHJ     P,LDDT        ;D - DEBUG OPTION, LOAD DDT\r
+       TLO     N,EXEQSW        ;E - LOAD AND GO\r
+       PUSHJ     P,LIBF        ;F - LIBRARY SEARCH\r
+       PUSHJ     P,LD5E        ;G - GO INTO EXECUTION\r
+       PUSHJ P,LRAIDX          ;H - LOAD AN START RAID\r
+       TLO     N,ISAFLG        ;I - IGNORE STARTING ADDRESSES\r
+       TLZ     N,ISAFLG        ;J - USE STARTING ADDRESSES\r
+IFE BLTSYM,<JRST       LD7B            ;K - ERROR>\r
+IFN BLTSYM,<PUSHJ P,KORADJ     ;K - RESERVE SPACE FOR SYM DEFS>\r
+       TLO     F,LIBSW+SKIPSW  ;L - ENTER LIBRARY SEARCH\r
+       PUSHJ     P,PRMAP       ;M - PRINT STORAGE MAP\r
+       TLZ     F,LIBSW+SKIPSW  ;N - LEAVE LIBRARY SEARCH\r
+       HRR     R,D             ;O - NEW PROGRAM ORIGIN\r
+       TLO     F,NSW           ;P - PREVENT AUTO. LIB. SEARCH\r
+       TLZ     F,NSW           ;Q - ALLOW AUTO. LIB. SEARCH\r
+       PUSHJ   P,CHNR          ;R - CHAIN, START W/ RESIDENT\r
+       TLO     F,SYMSW         ;S - LOAD WITH SYMBOLS\r
+       PUSHJ   P,LDDTX         ;T - LOAD AND GO TO DDT\r
+       PUSHJ     P,PMS         ;U - PRINT UNDEFINED LIST\r
+       PUSHJ P,LRAID           ;V - LOAD RAID\r
+       TLZ     F,SYMSW+DSYMSW  ;W - LOAD WITHOUT SYMBOLS\r
+       TLZ     N,ALLFLG        ;X - DO NOT LIST ALL GLOBALS\r
+       TLO     F,REWSW         ;Y - REWIND BEFORE USE\r
+       JRST    LD              ;Z - RESTART LOADER\r
+\r
+\f\r
+;SWITCH MODE NUMERIC ARGUMENT\r
+\r
+LD6C:  LSH     D,3             ;BUILD OCTAL NUMERIC ARGUMENT\r
+       ADDI    D,-60(T)\r
+       JRST    LD3\r
+\r
+;EXIT FROM SWITCH MODE\r
+\r
+LD6D:  TLZ     F,SSW           ;CLEAR SWITCH MODE FLAG\r
+       TLNE    F,FSW           ;TEST FORCED SCAN FLAG\r
+       JRST    LD2D            ;SCAN FORCED, START NEW IDENT.\r
+       JRST    LD3             ;SCAN NOT FORCED, USE PREV IDENT\r
+;ILLEGAL CHARACTER, NORMAL MODE\r
+\r
+LD7:   JSP     A,ERRPT8\r
+       SIXBIT    /CHAR.%/\r
+       JRST    LD2\r
+\r
+;SYNTAX ERROR, NORMAL MODE\r
+\r
+LD7A:  JSP     A,ERRPT8\r
+       SIXBIT    /SYNTAX%/\r
+       JRST    LD2\r
+\r
+;ILLEGAL CHARACTER, SWITCH MODE\r
+\r
+LD7B:  JSP     A,ERRPT8\r
+       SIXBIT    /SWITCH%/\r
+       JRST    LD2\r
+\r
+;ATTEMPT TO CHAIN WITH SPECIFIED HALF OF JOBCHN = 0\r
+\r
+LD7C:  JSP     A,ERRPT         ;GRIPE\r
+       SIXBIT  ?UNCHAINABLE AS LOADED@?\r
+       JRST    LD2\r
+\r
+;ATTEMP TO CHAIN WITHOUT SPECIFYING DEVICE\r
+\r
+LD7D:  JSP     A,ERRPT         ;GRIPE\r
+       SIXBIT  ?NO CHAIN DEVICE@?\r
+       JRST    LD2\r
+\r
+IFN BLTSYM,<KORADJ:    CAMLE D,KORSP   ;IF SMALLER IGNORE\r
+       MOVEM D,KORSP\r
+       POPJ P,>\r
+\f\r
+;CHARACTER CLASSIFICATION TABLE DESCRIPTION:\r
+\r
+;      EACH CHARACTER HAS ASSOCIATED WITH IT A FOUR BIT BYTE\r
+;      PACKED IN THE CHARACTER CLASSIFICATION TABLE.  THE CHARACTER\r
+;      CLASSIFICATION CODES ARE ORDERED IN SUCH A WAY AS TO GIVE\r
+;      DELIMITERS OF HIGHER PRECEDENCE LOWER CLASSIFICATION NUMBERS.\r
+;      CERTAIN CHARACTERS HAVE NO EFFECT ON THE COMMAND STRING, AND\r
+;      THEREFORE DO NOT EFFECT ORDERING OF DELIMITERS.  FOUR CODES\r
+;      ARE RESERVED FOR ALTERNATE DISPATCHES WHILE THE SWITCH MODE IS\r
+;      IN EFFECT.\r
+\r
+\r
+;CLASSIFICATION BYTE CODES:\r
+\r
+;      BYTE DISP CLASSIFICATION\r
+\r
+;      00 - 00  ILLEGAL CHARACTER, SWITCH MODE\r
+;      01 - 01  ALPHABETIC CHARACTER, SWITCH MODE\r
+;      02 - 02  NUMERIC CHARACTER, SWITCH MODE\r
+;      03 - 03  SWITCH MODE ESCAPE, SWITCH MODE\r
+\r
+;      00 - 04  ILLEGAL CHARACTER, NORMAL MODE\r
+;      01 - 05  ALPHABETIC CHARACTER, NORMAL MODE\r
+;      02 - 06  NUMERIC CHARACTER, NORMAL MODE\r
+;      03 - 07  SWITCH MODE ESCAPE, NORMAL MODE\r
+\r
+;      04 - 10  IGNORED CHARACTER\r
+;      05 - 11  ENTER SWITCH MODE CHARACTER\r
+;      06 - 12  DEVICE IDENTIFIER DELIMITER\r
+;      07 - 13  FILE EXTENSION DELIMITER\r
+;      10 - 14  OUTPUT SPECIFICATION DELIMITER\r
+;      11 - 15  INPUT SPECIFICATION DELIMITER\r
+;      12 - 16  LINE TERMINATION\r
+;      13 - 17  JOB TERMINATION\r
+\r
+\f\r
+;BYTE POINTERS TO CHARACTER CLASSIFICATION TABLE\r
+\r
+LD8:   POINT     4,LD9(Q),3\r
+       POINT     4,LD9(Q),7\r
+       POINT     4,LD9(Q),11\r
+       POINT     4,LD9(Q),15\r
+       POINT     4,LD9(Q),19\r
+       POINT     4,LD9(Q),23\r
+       POINT     4,LD9(Q),27\r
+       POINT     4,LD9(Q),31\r
+       POINT     4,LD9(Q),35\r
+\r
+;CHARACTER CLASSIFIACTION TABLE\r
+\r
+LD9:   BYTE    (4)4,0,0,0,0,0,0,0,0\r
+       BYTE    (4)4,4,4,4,12,0,0,0,0\r
+       BYTE    (4)0,0,0,0,0,0,0,0,0\r
+       BYTE    (4)13,0,0,0,0,4,0,4,0\r
+       BYTE    (4)0,0,0,0,5,3,0,0,11\r
+       BYTE    (4)0,7,5,2,2,2,2,2,2\r
+       BYTE    (4)2,2,2,2,6,0,0,10,0\r
+       BYTE    (4)0,0,1,1,1,1,1,1,1\r
+       BYTE    (4)1,1,1,1,1,1,1,1,1\r
+       BYTE    (4)1,1,1,1,1,1,1,1,1\r
+IFE PP,<BYTE   (4)1,0,0,0,0,10,0,0,0>\r
+IFN PP,<BYTE   (4)1,10,0,10,0,10,0,0,0>\r
+       BYTE    (4)0,0,0,0,0,0,0,0,0\r
+       BYTE    (4)0,0,0,0,0,0,0,0,0\r
+       BYTE    (4)0,0,0,0,0,0,0,0,13\r
+       BYTE    (4)13,4\r
+\r
+\f\r
+;INITIALIZE LOADING OF A FILE\r
+\r
+ILD:   MOVEI     W,BUF1                ;LOAD BUFFER ORIGIN\r
+       MOVEM     W,JOBFF\r
+       TLOE    F,ISW           ;SKIP IF INIT REQUIRED\r
+       JRST    ILD6            ;DONT DO INIT\r
+       INIT    1,14\r
+ILD1:  0                               ;LOADER INPUT DEVICE\r
+       XWD     0,BUFR\r
+       JSP     A,ILD5          ;ERROR RETURN\r
+ILD6:  TLZE    F,REWSW         ;SKIP IF NO REWIND\r
+       MTAPE   1,1             ;REWIND\r
+ILD2:  LOOKUP    1,DTIN                ;LOOK UP FILE FROM DIRECTORY\r
+       JRST    ILD3            ;FILE NOT IN DIRECTORY\r
+IFE K,<        INBUF     1,2           ;SET UP BUFFERS>\r
+IFN K,<        INBUF   1,1             ;SET UP BUFFER>\r
+       TLO     F,ASW           ;SET LEFT ARROW ILLEGAL FLAG\r
+       TLZ     F,ESW+F4LIB     ;CLEAR EXTENSION FLAG\r
+       POPJ    P,\r
+\r
+;      LOOKUP FAILURE\r
+\r
+ILD3:  TLOE    F,ESW           ;SKIP IF .REL WAS ASSUMED\r
+       JRST    ILD4            ;FATAL LOOKUP FAILURE\r
+       SETZM     DTIN1         ;ZERO FILE EXTENSION\r
+       JRST    ILD2            ;TRY AGAIN WITH NULL EXTENSION\r
+\r
+ILD4:  TLZE    F,F4LIB         ;WAS THIS A TRY FOR F40 LIBRARY?\r
+       JRST    [MOVE   W,[SIXBIT /LIB4/]; YES, TRY LIB4\r
+               MOVEM   W,DTIN          ;...\r
+               PUSHJ   P,LDDT2         ;USE .REL EXTENSION\r
+               TLZ     F,ESW           ;...\r
+               JRST    ILD2            ];GO TRY AGAIN\r
+ILD9:  JSP     A,ERRPT\r
+       SIXBIT    /CANNOT FIND#/\r
+       JRST    LD2\r
+\r
+;      DEVICE SELECTION ERROR\r
+\r
+ILD5:  MOVE    W,-3(A)         ;LOAD DEVICE NAME FROM INIT\r
+       TLO     F,FCONSW        ;INSURE TTY OUTPUT\r
+       PUSHJ   P,PRQ           ;START W/ ?\r
+       PUSHJ     P,PWORD               ;PRINT DEVICE NAME\r
+       JSP     A,ERRPT7\r
+       SIXBIT    /UNAVAILABLE@/\r
+       JRST    LD2\r
+\f\r
+;LIBRARY SEARCH CONTROL AND LOADER CONTROL\r
+\r
+;LIBF ENABLES A LIBRARY SEARCH OF <SYS:LIB4.REL>\r
+\r
+LIBF:  PUSHJ     P,FSCN1               ;FORCE SCAN TO COMPLETION\r
+       PUSHJ   P,LIBF1                 ;LOAD SYS:JOBDAT.REL\r
+       TLO     F,F4LIB                 ;INDICATE FORTRAN LIBRARY SEARCH\r
+       MOVE    W,[SIXBIT /LIB40/]      ;FIRST TRY AT NAME\r
+       PUSHJ   P,LIBF2                 ;LOAD SYS:LIB40.REL\r
+LIBF1: MOVE    W,[SIXBIT /JOBDAT/]     ;LOAD SYS:JOBDAT.REL\r
+LIBF2: PUSHJ     P,LDDT1\r
+       JUMPGE    S,EOF2                ;JUMP IF NO UNDEFINED GLOBALS\r
+       TLO     F,SLIBSW+SKIPSW ;ENABLE LIBRARY SEARCH\r
+       TLZ     F,SYMSW+DSYMSW  ;DISABLE LOADING WITH SYMBOLS\r
+       JRST    LDF             ;INITIALIZE LOADING LIB4\r
+\r
+;      LIB CONTROLS THE LIBRARY SEARCH OF ONE FILE\r
+\r
+LIB:   JUMPGE    S,EOF1                ;JUMP IF NO UNDEFINED GLOBALS\r
+       TLO     F,SKIPSW                ;SET SKIPSW TO IGNORE MODE\r
+       JRST    LOAD            ;CONTINUE LIB. SEARCH\r
+\r
+LIB1:  CAIE    A,4             ;TEST FOR ENTRY BLOCK\r
+       JRST    LIB3            ;NOT AN ENTRY BLOCK, IGNORE IT\r
+LIB2:  PUSHJ     P,RWORD               ;READ ONE DATA WORD\r
+       MOVE    C,W\r
+       TLO     C,040000                ;SET CODE BITS FOR SEARCH\r
+       PUSHJ     P,SREQ\r
+       TLZA    F,SKIPSW                ;REQUEST MATCHES ENTRY, LOAD\r
+       JRST    LIB2            ;NOT FOUND\r
+LIB3:  PUSHJ     P,RWORD               ;READ AND IGNORE ONE DATA WORD\r
+       JRST    LIB3            ;LOOP TO IGNORE INPUT\r
+\r
+;LDDT LOADS <SYS:DDT.REL> AND SETS DSYMSW\r
+\r
+LRAIDX:        TLO N,DDSW!EXEQSW       ;H - LOAD AND START RAID\r
+LRAID: PUSHJ P,FSCN1           ;FORCE END OF SCAN\r
+       MOVE W,[SIXBIT /RAID/]\r
+       JRST LDDT0\r
+LDDTX: TLO     N,DDSW+EXEQSW   ;T - LOAD AND GO TO DDT\r
+LDDT:  PUSHJ     P,FSCN1               ;FORCE SCAN TO COMPLETION\r
+       MOVSI     W,444464              ;FILE IDENTIFIER <DDT>\r
+LDDT0: PUSHJ     P,LDDT1\r
+       PUSHJ     P,LDF         ;LOAD <SYS:DDT.REL>\r
+       TLO     F,DSYMSW                ;ENABLE LOADING WITH SYMBOLS\r
+       POPJ    P,\r
+\r
+LDDT1: MOVEM     W,DTIN                ;STORE FILE IDENTIFIER\r
+IFN PP,<MOVE W,ILD1    ;SAVE OLD DEV\r
+       MOVEM W,OLDDEV>\r
+       MOVSI     W,637163              ;DEVICE IDENTIFIER <SYS>\r
+       MOVEM     W,ILD1                ;STORE DEVICE IDENTIFIER\r
+       TLZ     F,ISW+LIBSW+SKIPSW+REWSW        ;CLEAR OLD FLAGS\r
+LDDT2: MOVSI     W,624554              ;EXTENSION IDENTIFIER <.REL>\r
+LDDT3: MOVEM     W,DTIN1               ;STORE EXTENSION IDENTIFIER\r
+IFN PP,<MOVE W,PPN     ;GET PROJ-PROG #\r
+       MOVEM W,DTIN+3>\r
+       POPJ    P,\r
+\f;EOF TERMINATES LOADING OF A FILE\r
+\r
+EOF:   MOVE    P,PDSAV         ;RESTORE PUSHDOWN POINTER\r
+EOF1:  TLZ     F,SLIBSW+SKIPSW ;CLEAR ONE FILE LIB. SEARCH FLAG\r
+EOF2:  POPJ    P,\r
+\r
+;      FORCE SCAN TO COMPLETION, LOAD IF NECESSARY\r
+\r
+FSCN:  PUSHJ     P,FSCN1               ;FORCED LOAD BEFORE TEST\r
+       TLNN    F,FULLSW                ;TEST FOR OVERLAP\r
+       POPJ    P,                      ;NO OVERLAP, RETURN\r
+       MOVE    W,H             ;FETCH CORE SIZE REQUIRED\r
+       SUBI W,1(S) ; COMPUT DEFICIENCY\r
+       JUMPL     W,EOF2                ;JUMP IF NO OVERLAP\r
+       TLO     F,FCONSW                ;INSURE TTY OUTPUT\r
+       PUSHJ   P,PRQ                   ;START WITH ?\r
+       PUSHJ     P,PRNUM0              ;INFORM USER\r
+       JSP     A,ERRPT7\r
+       SIXBIT    /WORDS OF OVERLAP#/\r
+       JRST    LD2             ;ERROR RETURN\r
+\r
+FSCN1: TLON    F,FSW           ;SKIP IF NOT FIRST CALL TO FSCN\r
+       TLNN    F,CSW+DSW+ESW   ;TEST SCAN FOR COMPLETION\r
+       ;               HAND EYE DOES NOT WANT FORCED SCAN\r
+       POPJ    P,\r
+FSCN2: PUSHJ     P,LD5B1               ;STORE FILE OR EXTENSION IDENT.\r
+\r
+;      LOADER CONTROL, NORMAL MODE\r
+\r
+LDF:   PUSHJ     P,ILD         ;INITIALIZE LOADING\r
+\r
+\f;LOAD SUBROUTINE\r
+\r
+LOAD:  MOVEM     P,PDSAV               ;SAVE PUSHDOWN POINTER\r
+LOAD1: MOVE    P,PDSAV         ;RESTORE PUSHDOWN POINTER\r
+LOAD1A:   PUSHJ     P,WORD             ;INPUT BLOCK HEADER WORD\r
+       MOVNI     E,400000(W)   ;WORD COUNT - FROM RH OF HEADER\r
+       HLRZ    A,W             ;BLOCK TYPE - FROM LH OF HEADER\r
+       CAILE     A,DISPL*2+1           ;TEST BLOCK TYPE NUMBER\r
+       JRST    LOAD4           ;ERROR, ILLEGAL BLOCK TYPE\r
+       TLNE    F,SKIPSW                ;BLOCK OK - TEST LOAD STATUS\r
+       JRST    LIB1            ;RETURN TO LIB. SEARCH CONTROL\r
+       HRRZ    T,LOAD2(A)              ;LOAD RH DISPATCH ENTRY\r
+       CAILE     A,DISPL               ;SKIP IF CORRECT\r
+       HLRZ    T,LOAD2-DISPL-1(A)      ;LOAD LH DISPATCH ENTRY\r
+       TLNE    F,FULLSW                ;TEST CORE OVERLAP INDICATOR\r
+       SOJG    A,HIGH0         ;IGNORE BLOCK IF NOT TYPE 1\r
+       JRST    @T                      ;DISPATCH TO BLOCK SUBROUTINE\r
+\r
+;DISPATCH TABLE - BLOCK TYPES\r
+\r
+LOAD2: XWD NAME,LOAD1A\r
+       XWD START,PROG\r
+       XWD LOCD,SYM\r
+       XWD LOAD4A,LOAD4A\r
+       XWD LOAD4A,LIB3\r
+LOAD3: XWD LOAD4A,HIGH\r
+\r
+       DISPL=LOAD3-LOAD2\r
+\r
+;ERROR EXIT FOR BAD HEADER WORDS\r
+\r
+LOAD4: IFE K,<\r
+       CAIN    A,400           ;FORTRAN FOUR BLOCK\r
+       JRST    F4LD>\r
+LOAD4A:   JSP  A,ERRPT         ;INCORRECT HEADER WORD\r
+       SIXBIT    /ILL. FORMAT#/\r
+       JRST    LD2\r
+\r
+\f;LOAD PROGRAMS AND DATA (BLOCK TYPE 1)\r
+\r
+PROG:  HRRZ    V,W             ;LOAD BLOCK LENGTH\r
+       PUSHJ     P,RWORD               ;READ BLOCK ORIGIN\r
+       ADD     V,W             ;COMPUTE NEW PROG. BREAK\r
+       CAIG    H,@X            ;COMPARE WITH PREV. PROG. BREAK\r
+       MOVEI     H,@X          ;UPDATE PROGRAM BREAK\r
+               TLNE F,FULLSW\r
+               JRST FULLC      ;NO ERROR MESSAGE\r
+       CAILE H,1(S)  ; SKIP IF SUFFICIENT CORE AVAILABLE\r
+IFN EXPAND,<   JRST    [PUSHJ P,XPAND>\r
+                       JRST FULLC\r
+IFN EXPAND,<           JRST .-1]>\r
+       MOVE    V,W\r
+PROG1: PUSHJ     P,RWORD               ;READ DATA WORD\r
+IFN L,<        CAML V,RINITL   ;ABSOLUTE >\r
+       MOVEM     W,@X          ;STORE DATA WORD IN PROG. AT LLC\r
+       AOJA    V,PROG1         ;ADD ONE TO LOADER LOC. COUNTER\r
+\r
+;LOAD SYMBOLS (BLOCK TYPE 2)\r
+\r
+SYM:   PUSHJ     P,PRWORD              ;READ TWO DATA WORDS\r
+       PUSHJ   P,SYMPT;                PUT INTO TABLE\r
+       JRST    SYM\r
+\r
+; WFW SYMPT:   JUMPL   C,SYM3;         JUMP IF GLOBAL REQUEST\r
+SYMPT: TLNE C,200000   ;GLOBAL REQUEST? WFW\r
+       JUMPL C,SYM3    ;CHECK FOR 60 NOT JUST HIGH BIT WFW\r
+       TLNE    C,100000\r
+       JRST    SYM1A           ;LOCAL SYMBOL\r
+       PUSHJ     P,SREQ                ;GLOBAL DEF., SEARCH FOR REQUEST\r
+       JRST    SYM2            ;REQUEST MATCHES\r
+       PUSHJ     P,SDEF                ;SEARCH FOR MULTIPLE DEFINITIONS\r
+       JRST    SYM1            ;MULTIPLY DEFINED GLOBAL\r
+       JRST    SYM1B\r
+\r
+;      PROCESS MULTIPLY DEFINED GLOBAL\r
+\r
+SYM1:  CAMN    W,2(A)          ;COMPARE NEW AND OLD VALUE\r
+       POPJ    P,;\r
+       AOS     MDG             ;COUNT MULTIPLY DEFINED GLOBALS\r
+       PUSHJ   P,PRQ           ;START W/ ?\r
+       PUSHJ     P,PRNAM               ;PRINT SYMBOL AND VALUE\r
+       MOVE    W,2(A)          ;LOAD OLD VALUE\r
+       PUSHJ     P,PRNUM               ;PRINT OLD VALUE\r
+       JSP     A,ERRPT7                ;PRINT MESSAGE\r
+       SIXBIT    /MUL. DEF. GLOBAL#/\r
+       POPJ    P,;     IGNORE MUL. DEF. GLOBAL SYM\r
+\r
+\f;     LOCAL SYMBOL\r
+\r
+SYM1A: TLNN    F,SYMSW+DSYMSW  ;SKIP IF LOAD LOCALS SWITCH ON\r
+       POPJ    P,;             IGNORE LOCAL SYMBOLS\r
+SYM1B: CAIL    H,(S)           ;STORE DEFINED SYMBOL\r
+IFN EXPAND,<   PUSHJ P,XPAND7>\r
+IFE EXPAND,<   JRST SFULLC>\r
+SYM1C: IFE K,<\r
+       TLNE    N,F4SW;         FORTRAN FOUR REQUIRES A BLT\r
+       PUSHJ   P,MVDWN;        OF THE TABLES>\r
+       MOVEI A,-2(S)   ;LOAD A TO SAVE INST. AT SYM2\r
+SYM1D: SUBI    S,2;            UPDATE UNDEFINED POINTER\r
+       POP     B,2(A)          ;MOVE UNDEFINED VALUE POINTER\r
+       POP     B,1(A)          ;MOVE UNDEFINED SYMBOL\r
+       MOVEM     W,2(B)                ;STORE VALUE\r
+       MOVEM     C,1(B)                ;STORE SYMBOL\r
+       POPJ    P,;\r
+\r
+\f;     GLOBAL DEFINITION MATCHES REQUEST\r
+\r
+SYM2:  PUSH P,SYM2C    ;NEXT MUST BE A SUBROUTINE FOR LATER. SET RETURN\r
+SYM2B: MOVE    V,2(A)          ;LOAD REQUEST POINTER\r
+       PUSHJ P,REMSYM\r
+       JUMPL V,SYM2W   ;ADDITIVE REQUEST? WFW\r
+       PUSHJ     P,SYM4A               ;REPLACE CHAIN WITH DEFINITION\r
+;WFW PATCH TO LOOK FOR MORE THAN ONE REQUEST\r
+SYM2W1:        PUSHJ P,SREQ    ;LOOK FOR MORE REQUESTS FOR THIS SYMBOL\r
+       JRST SYM2B      ;FOUND MORE\r
+       MOVE A,SVA      ;RESTORE A\r
+;END OF PATCH WFW\r
+SYM2C: POPJ P,SYM1D    ;RETURN, SEE SYM2 FOR USE OF ADDRESS\r
+SVA:   0       ;A TEMP CELL WFW\r
+\r
+;      REQUEST MATCHES GLOBAL DEFINITION\r
+\r
+SYM2A: MOVE    V,W             ;LOAD POINTER TO CHAIN\r
+       MOVE    W,2(A)          ;LOAD VALUE\r
+       JUMPL V,FIXWP   ;HANDLE ATTITIVE REQUEST WFW\r
+       JRST    SYM4A;          REPLACE CHAIN WITH DEFINITION\r
+\r
+;      PROCESS GLOBAL REQUEST\r
+\r
+SYM3:  TLNE    C,040000;               COMMON NAME\r
+       JRST    SYM1B\r
+       TLC     C,640000;               PERMUTE BITS FROM 60 TO 04\r
+       PUSHJ     P,SDEF                ;SEARCH FOR GLOBAL DEFINITION\r
+       JRST    SYM2A           ;MATCHING GLOBAL DEFINITION\r
+       JUMPL W,SYM3X1  ;ADDITIVE FIXUP WFW\r
+       PUSHJ     P,SREQ                ;SEARCH FOR EXISTING REQUEST WFW\r
+       JRST    SYM3A           ;EXISTING REQUEST FOUND WFW\r
+SYM3X1:        TLNN W,100000   ;CHECK SYMBOL TABLE FIXUP\r
+       JRST SYM3X2     ;NO\r
+       MOVE V,1(B)     ;MUST BE LAST SYMBOL DEFINED. GET SYMBOL\r
+       XOR V,W         ;CHECK FOR IDENTITY\r
+       TDNE V,[XWD 77777,-1]   ;BUT IGNORE HIGH 3 BITS\r
+       POPJ P,         ;NOT SAME, ASSUME NOT LOADED LOCAL\r
+       HRRI W,2(B)     ;GET LOCATION IN RIGHT HALF\r
+       TLO W,1\r
+       SUB W,JOBREL    ;AND MAKE RELATIVE\r
+SYM3X2:        CAIL    H,(S)           ;STORE REQUEST IN UNDEF. TABLE WFW\r
+IFN EXPAND,<   PUSHJ P,XPAND7>\r
+IFE EXPAND,<   JRST SFULLC>\r
+SYM3X: IFE K,<\r
+       TLNE    N,F4SW;         FORTRAN FOUR\r
+       PUSHJ   P,MVDWN;                ADJUST TABLES IF F4>\r
+       SUB     S,SE3           ;ADVANCE UNDEFINED POINTER\r
+       MOVEM     W,2(S)                ;STORE UNDEFINED VALUE POINTER\r
+       MOVEM     C,1(S)                ;STORE UNDEFINED SYMBOL\r
+       POPJ    P,;\r
+\r
+\f\r
+;      COMBINE TWO REQUEST CHAINS\r
+\r
+SYM3A: SKIPL 2(A)      ;IS IT ADDITIVE WFW\r
+       JRST SYM3A1     ;NO, PROCESS WFW\r
+       PUSHJ P,SDEF2   ;YES, CONTINUE WFW\r
+       JRST SYM3A      ;FOUND ANOTHER WFW\r
+       JRST SYM3X2     ;REALLY NO CHAIN THERE WFW\r
+SYM3A1:        SUBI A,-2(X)  ;A=A-(-2+X(18-35)); A RELATIVE TO X WFW\r
+SYM3B: HRRZ V,A       ; SAVE CHAIN ADDRESS FOR HRRM W,@X\r
+IFN L,<        CAMGE V,RINITL\r
+       HALT    ;LOSE LOSE LOSE>\r
+       HRRZ A,@X ; LOAD NEXT ADDRESS IN CHAIN\r
+       JUMPN A,SYM3B  ; JUMP IF NOT THE LAST ADDR. IN CHAIN\r
+       HRRM    W,@X            ;COMBINE CHAINS\r
+       POPJ    P,;\r
+;LHQ PATCH FOR LISP ABSOLUTE FIXUP PREVENTION\r
+IFN L,<\r
+VTST:  0\r
+       MOVEM V,VSVV#\r
+       HRRZS V\r
+       CAMGE V,RINITL\r
+       POPJ P,\r
+       MOVE V,VSVV\r
+       JRST @VTST>\r
+\r
+;WFW PATCH FOR ADDITIVE GLOBAL REQUESTS\r
+\r
+FIXWP: TLNN V,100000   ;CHECK FOR SYMBOL TABLE FIXUP\r
+       JRST FIXW\r
+       MOVE T,1(B)     ;SYMBOL FIXUP, MUST BE LAST SYMBOL DEFINED\r
+       XOR T,V         ;CHECK FOR SAME\r
+       TDNE T,[XWD 77777,-1]   ;EXCEPT FOR HEGH CODE BITS\r
+       POPJ P,         ;ASSUME NON-LOADED LOCAL\r
+       HRRI V,2(B)     ;GET LOCATION\r
+       SUBI V,(X)      ;SO WE CAN USE @X\r
+FIXW:  TLNE V,200000   ;IS IT LEFT HALF\r
+       JRST FIXWL\r
+IFN L,<        JSR VTST>\r
+       MOVE T,@X       ;GET WORD\r
+       ADD T,W         ;VALUE OF GLOBAL\r
+       HRRM T,@X       ;FIX WITHOUT CARRY\r
+       MOVSI D,200000  ;SET UP TO REMOVE DEFERED INTERNAL IF THERE\r
+       JRST SYMFIX\r
+FIXWL: HRLZ    T,W             ;UPDATE VALUE OF LEFT HALF\r
+IFN L,<        JSR VTST>\r
+       ADDM    T,@X            ;BY VALUE OF GLOBAL\r
+       MOVSI D,400000  ;LEFT DEFERED INTERNAL\r
+SYMFIX:        TLNN V,100000   ;CHECK FOR SYMBOL TABLE FIXUP\r
+       POPJ P,         ;NO, RETURN\r
+       ADDI V,(X)      ;GET THE LOCATION\r
+       MOVE T,-1(V)    ;GET THE SYMBOL NAME\r
+       TLNN T,40000    ;CHECK TO SEE IF INTERNAL\r
+       POPJ P,         ;NO, LEAVE\r
+       ANDCAB D,-1(V)  ;REMOVE PROPER BIT\r
+       TLNE D,600000   ;IS IT STILL DEFERED?\r
+       POPJ P,         ;YES, ALL DONE\r
+       EXCH C,D        ;NO, CHECK FOR A REQUEST FOR IT\r
+       PUSHJ P,SREQ\r
+       JRST CHNSYM     ;YES, WILL HAVE TO CALL THE FIXUP ROUTINE\r
+       MOVE C,D        ;GET C BACK\r
+       POPJ P,\r
+CHNSYM:        PUSH P,D        ;HAS THE OLD C IN IT\r
+       PUSH P,W        ;WE MAY NEED IT LATER\r
+       MOVE W,(V)      ;GET VALUE\r
+       PUSHJ P,SYM2B   ;CALL THE FOUND GLOBAL TO MATCH REQUEST ROUTINE\r
+       POP P,W\r
+       POP P,C         ;RESTORE FOR CALLER\r
+       POPJ P,         ;AND GO AWAY\r
+\r
+SYM2W: TLNN V,100000   ;SYMBOL TABLE?\r
+       JRST SYM2WA\r
+       ADD V,JOBREL    ;MAKE ABSOLUTE\r
+       SUBI V,(X)      ;GET READY TO ADD X\r
+       SYM2WA: PUSHJ P,FIXW    ;DO FIXUP\r
+       JRST SYM2W1     ;AND LOOK FOR MORE REQUESTS\r
+\r
+;END WFW PATCH\r
+\r
+\f;PATCH VALUES INTO CHAINED REQUEST\r
+SYM4:\r
+IFN L,<        CAMGE V,RINITL\r
+       POPJ P,>\r
+       HRRZ    T,@X            ;LOAD NEXT ADDRESS IN CHAIN\r
+       HRRM    W,@X            ;INSERT VALUE INTO PROGRAM\r
+       MOVE    V,T\r
+SYM4A: JUMPN     V,SYM4                ;JUMP IF NOT LAST ADDR. IN CHAIN\r
+       POPJ    P,\r
+\r
+IFE    K,<\r
+MVDWN: HRRZ T,MLTP\r
+IFN EXPAND,<   SUBI T,2>\r
+       CAIG    T,@X;           ANY ROOM LEFT?\r
+IFN EXPAND,<   JRST    [PUSHJ P,XPAND>\r
+                       TLOA F,FULLSW\r
+IFN EXPAND,<           JRST MVDWN\r
+                       JRST .+2]>\r
+       TLNE    F,SKIPSW+FULLSW\r
+       JRST    MVABRT; ABORT BLT\r
+       HRREI   T,-2\r
+       ADDM    T,PLTP;         ADJUST PROGRAMMER LABEL POINTER\r
+       ADDM    T,BITP;         AND BIT TABLE POINTER\r
+       ADDM    T,SDSTP;        FIRST DATA STATEMENT\r
+       ADDM    T,LTC\r
+       ADDM    T,ITC\r
+       TLNE    N,SYDAT\r
+       ADDM    T,V\r
+       ADDB    T,MLTP;         AND FINALLY TO MADE LABEL TABLE\r
+       HRLS    T;              SET UP BLT POINTER\r
+       ADD     T,[XWD 2,0]\r
+       BLT     T,(S)\r
+MVABRT:        POPJ    P,;\r
+>\r
+;HIGHEST RELOCATABLE POINT (BLOCK TYPE 4)\r
+SFULLC:        TLOE    F,FULLSW        ;PREVIOUS OVERFLOW?\r
+       JRST    FULLC           ;YES, DON'T PRINT MESSAGE\r
+       JSP     A,ERRPT         ;NO, COMPLAIN ABT OVERFLO\r
+       SIXBIT  ?SYMBOL TABLE OVERLAP#?\r
+FULLC: TLO     F,FULLSW        ;CORE OVERLAP ERROR RETURN\r
+IFE K,<        TLNE    N,F4SW\r
+       POPJ    P,>\r
+       JRST    LIB3            ;LOOK FOR MORE\r
+\r
+HIGH0: CAIE A,4  ; TEST FOR END BLOCK (OVERLAP)\r
+       JRST    LIB3\r
+HIGH:  PUSHJ     P,PRWORD              ;READ TWO DATA WORDS\r
+       HRR     R,C             ;SET NEW PROGRAM BREAK\r
+       ADDI    C,X;    BE SURE TO RELOCATE\r
+       CAILE   C,1(S)          ;TEST PROGRAM BREAK\r
+IFN EXPAND,<PUSHJ P,[  PUSHJ P,XPAND\r
+                       TLOA F,FULLSW\r
+                       JRST POPJM2\r
+                       POPJ    P,]>\r
+IFE EXPAND,<TLO        F,FULLSW>\r
+HIGH3: MOVEI   A,F.C           ;SAVE CURRENT STATE OF LOADER\r
+       BLT     A,B.C\r
+       TLNE    F,SLIBSW+LIBSW  ;NORMAL MODE EXIT THROUGH LOAD1\r
+       JRST    LIB             ;LIBRARY SEARCH EXIT\r
+       JRST LOAD1\r
+\r
+\f;STARTING ADDRESS (BLOCK TYPE 7)\r
+\r
+START: PUSHJ     P,PRWORD              ;READ TWO DATA WORDS\r
+       TLNN    N,ISAFLG                ;SKIP IF IGNORE SA FLAG ON\r
+       HRR     F,C             ;SET STARTING ADDRESS\r
+\r
+;PROGRAM NAME (BLOCK TYPE 6)\r
+\r
+NAME:  PUSHJ     P,PRWORD              ;READ TWO DATA WORDS\r
+       TLOE    N,COMFLG                ;SKIP IF COMMON NOT PREV. SET\r
+       JRST    NAME1           ;SIZE OF COMMON PREV. SET\r
+       MOVEM     W,COMSAV              ;STORE LENGTH OF COMMON\r
+       JUMPE     W,NAME2               ;JUMP IF NO COMMON IN THIS JOB\r
+       HRRI    R,@R            ;FIRST PROGRAM SET LOAD ORIGIN\r
+NAME1: CAILE H,-1(S)           ;TEST FOR AVAIL. SYMBOL SPACE\r
+IFN EXPAND,<   PUSHJ P,XPAND7>\r
+IFE EXPAND,<   JRST SFULLC>\r
+       SUBI    S,2             ;UPDATE UNDEF. TABLE POINTER\r
+       POP     B,2(S)\r
+       POP     B,1(S)\r
+       HRRZ    V,N             ;POINTER TO PREVIOUS NAME\r
+       SUBM    B,V             ;COMPUTE RELATIVE POSITIONS\r
+       HRLM    V,2(N)          ;STORE FORWARD POINTER\r
+       HRR     N,B             ;UPDATE NAME POINTER\r
+NAME2: MOVEM     C,1(B)                ;STORE PROGRAM NAME\r
+       HRRZM   R,2(B)          ;STORE PROGRAM ORIGIN\r
+       CAMG    W,COMSAV                ;CHECK COMMON SIZE\r
+       JRST    LIB3            ;COMMON OK\r
+ILC:   JSP     A,ERRPT\r
+       SIXBIT    /ILL. COMMON#/\r
+       JRST    LD2\r
+\f\r
+;ONE PASS LOCAL DEFINITION (BLOCK TYPE 10)\r
+\r
+                       ;PMP PATCH FOR LEFT HALF FIXUPS\r
+                       ;END PMP PATCH\r
+LOCD:  PUSHJ     P,RWORD               ;READ ONE DATA WORD\r
+       HLRZ    V,W             ;STORAGE POINTER IN LEFT HALF\r
+       PUSHJ     P,SYM4A               ;LINK BACK REFERENCES\r
+       JRST    LOCD\r
+\r
+REMSYM:        MOVE T,1(S)\r
+       MOVEM T,1(A)\r
+       MOVE T,2(S)\r
+       MOVEM T,2(A)\r
+       ADD S,SE3\r
+       MOVEM A,SVA\r
+       POPJ P,\r
+\r
+\f;SYMBOL TABLE SEARCH SUBROUTINES\r
+\r
+;      ENTERED WITH SYMBOL IN C\r
+;      RETURN IS WITH POINTER IN A IF MATCHING SYMBOL FOUND\r
+;      OTHERWISE, A SKIP ON RETURN OCCURS\r
+\r
+SREQ:  JUMPGE    S,CPOPJ1              ;JUMP IF NO UNDEF. SYMBOLS\r
+       SKIPA     A,S           ;LOAD REQUEST SEARCH POINTER\r
+SDEF:  MOVE    A,B             ;LOAD DEF. SYMBOL SEARCH POINTER\r
+SDEF1: CAMN    C,1(A)\r
+       POPJ    P,                      ;SYMBOLS MATCH, RETURN\r
+SDEF2: ADD     A,SE3\r
+       JUMPL     A,SDEF1\r
+IFE K,<        JRST    CPOPJ1          ;SYMBOL NOT FOUND SKIPS ON RETURN>\r
+IFN K,<\r
+CPOPJ1:        AOS     (P)             ;TRA 2,4\r
+       POPJ    P,              ;...>\r
+\r
+;RELOCATION AND BLOCK INPUT\r
+\r
+PRWORD:   PUSHJ     P,RWORD            ;READ A WORD PAIR\r
+       MOVE    C,W             ;LOAD C WITH FIRST DATA WORD\r
+       TRNE    E,377777                ;TEST FOR END OF BLOCK\r
+       JRST    RWORD1          ;INPUT SECOND WORD OF PAIR\r
+       MOVEI     W,0           ;NO SECOND WORD, ASSUME ZERO\r
+       POPJ    P,\r
+\r
+RWORD: TRNN    E,377777                ;TEST FOR END OF BLOCK\r
+       JRST    LOAD1           ;RETURN TO LOAD THE NEXT BLOCK\r
+RWORD1:   AOBJN     E,RWORD2           ;JUMP IF DATA WORD NEXT\r
+       PUSHJ     P,WORD                ;READ CONTROL WORD\r
+       MOVE    Q,W             ;DON'T COUNT RELOCATION WORDS\r
+       HRLI    E,-22           ;SET RELOCATION WORD BYTE COUNT\r
+RWORD2:   PUSHJ     P,WORD             ;READ INPUT WORD\r
+       JUMPGE    Q,RWORD3              ;TEST LH RELOCATION BIT\r
+       HRLZ    T,R\r
+       ADD     W,T             ;LH RELOCATION\r
+RWORD3:   TLNE Q,200000                ;TEST RH RELOCATION BIT\r
+       HRRI    W,@R            ;RH RELOCATION\r
+       LSH     Q,2\r
+       POPJ    P,\r
+\r
+\f;PRINT STORAGE MAP SUBROUTINE\r
+\r
+PRMAP: PUSHJ   P,FSCN1 ;LOAD OTHER FILES FIRST\r
+       PUSHJ   P,CRLFLF        ;START NEW PAGE\r
+       HRRZ    W,R\r
+       PUSHJ     P,PRNUM0\r
+       JSP     A,ERRPT7\r
+       SIXBIT  ?IS THE PROGRAM BREAK@?\r
+       PUSHJ   P,CRLF          ;START STORAGE MAP\r
+       JSP     A,ERRPT0        ;PRINT HEADER\r
+       SIXBIT  ?STORAGE MAP@?\r
+       HLRE    A,B\r
+       MOVNS     A\r
+       ADDI    A,(B)\r
+PRMAP1:   SUBI A,2\r
+       SKIPL     C,1(A)                ;LOAD SYMBOL, SKIP IF DELETED\r
+       TLNE    C,300000                ;TEST FOR LOCAL SYMBOL\r
+       JRST    PRMAP4          ;IGNORE LOCAL SYMBOLS\r
+       TLNN    C,040000\r
+       PUSHJ     P,CRLF                ;PROGRAM NAME\r
+       PUSHJ     P,PRNAM1              ;PRINT SYMBOL AND VALUE\r
+       TLNE    C,040000\r
+       JRST    PRMAP3          ;GLOBAL SYMBOL\r
+       HLRE    C,W             ;POINTER TO NEXT PROG. NAME\r
+       JUMPGE    C,PRMAP2              ;JUMP IF LAST PROGRAM NAME\r
+       ADDI    C,2(A)          ;COMPUTE LOC. OF FOLLOWING NAME\r
+       SKIPA     T,@C          ;LOAD ORIGIN OF FOLLOWING PROG.\r
+PRMAP2:   HRRZ T,R             ;LOAD PROGRAM BREAK\r
+       SUBM    T,W             ;SUBTRACT ORIGIN TO GET LENGTH\r
+       PUSHJ     P,PRNUM               ;PRINT PROGRAM LENGTH\r
+       PUSHJ     P,CRLF\r
+       TLNN    N,ALLFLG                ;SKIP IF LIST ALL MODE IS ON\r
+       TRNE    W,777777                ;SKIP IF ZERO LENGTH PROGRAM\r
+       JRST    PRMAP3\r
+       JUMPE     C,PRMAP5              ;JUMP IF LAST PROGRAM\r
+       SKIPA     A,C           ;SKIP GLOBALS, ZERO LENGTH PROG.\r
+PRMAP3:   PUSHJ     P,CRLF\r
+PRMAP4:   CAILE     A,(B)              ;TEST FOR END OF SYMBOL TABLE\r
+       JRST    PRMAP1\r
+PRMAP5:\r
+\r
+\f;LIST UNDEFINED GLOBALS\r
+\r
+PMS:   PUSHJ   P,FSCN1 ;LOAD FILES FIRST\r
+       JUMPGE  S,PMS3          ;JUMP IF NO UNDEFINED GLOBALS\r
+       HLLOS 42                ;SET SOME ERROR TO ABORT EXECUTION\r
+       PUSHJ   P,FCRLF         ;START THE MESSAGE\r
+       PUSHJ   P,PRQ           ;PRINT ?\r
+       HLRE    W,S             ;COMPUTE NO. OF UNDEF. GLOBALS\r
+       MOVMS     W\r
+       LSH     W,-1            ;<LENGTH OF LIST>/2\r
+       PUSHJ     P,PRNUM0\r
+       JSP     A,ERRPT7\r
+       SIXBIT    /UNDEFINED GLOBALS@/\r
+       MOVE    A,S             ;LOAD UNDEF. POINTER\r
+PMS2:  PUSHJ     P,CRLF\r
+       PUSHJ   P,PRQ           ;PRINT ?\r
+       PUSHJ     P,PRNAM0              ;PRINT SYMBOL AND POINTER\r
+       ADD     A,SE3\r
+       JUMPL     A,PMS2\r
+       PUSHJ   P,CRLF          ;SPACE AFTER LISTING\r
+\r
+;LIST NUMBER OF MULTIPLY DEFINED GLOBALS\r
+\r
+PMS3:  SKIPN   W,MDG           ;ANY MULTIPLY DEFINED GLOBALS\r
+       JRST    PMS4            ;NO, EXCELSIOR\r
+       HLLOS 42                ;ANOTHER WAY TO LOSE\r
+       PUSHJ   P,FCRLF         ;ROOM AT THE TOP\r
+       PUSHJ   P,PRQ           ;PRINT ?\r
+       PUSHJ   P,PRNUM0        ;NUMBER OF MULTIPLES\r
+       JSP     A,ERRPT7        ;REST OF MESSAGE\r
+       SIXBIT  ?MULTIPLY DEFINED GLOBALS@?\r
+PMS4:  TLNE    N,AUXSWE        ;AUXILIARY OUTPUT DEVICE?\r
+       OUTPUT  2,              ;INSURE A COMPLETE BUFFER\r
+       POPJ    P,              ;RETURN\r
+\r
+\f;ENTER FILE ON AUXILIARY OUTPUT DEVICE\r
+\r
+IAD2:  ENTER   2,DTOUT         ;WRITE FILE NAME IN DIRECTORY\r
+       JRST    IMD3            ;NO MORE DIRECTORY SPACE\r
+       POPJ    P,\r
+\r
+IMD3:  JSP     A,ERRPT         ;DIRECTORY FULL ERROR\r
+       SIXBIT    /DIR. FULL@/\r
+       JRST    LD2\r
+\r
+;PRINT THE 6 DIGIT OCTAL ADDRESS IN W\r
+\r
+;      ACCUMULATORS USED: D,T,V\r
+\r
+PRNAM0:   MOVE C,1(A)          ;LOAD SYMBOL\r
+PRNAM1:   MOVE W,2(A)          ;LOAD VALUE\r
+PRNAM: PUSHJ     P,PRNAME\r
+PRNUM: PUSHJ     P,SPACES\r
+PRNUM0:   MOVE V,PRNUM2                ;LOAD BYTE POINTER TO RH. OF W\r
+       MOVNI     D,6           ;LOAD CHAR. COUNT\r
+PRNUM1:   ILDB T,V             ;LOAD DIGIT TO BE OUTPUT\r
+       ADDI    T,60            ;CONVERT FROM BINARY TO ASCII\r
+       PUSHJ     P,TYPE2\r
+       AOJL    D,PRNUM1                ;JUMP IF MORE DIGITS REMAIN\r
+       POPJ    P,\r
+\r
+PRNUM2:   XWD  220300,W\r
+\r
+;YE OLDE RECURSIVE NUMBER PRINTER\r
+;PRINTS Q, WITH LEADING ZEROES SUPPRESSED; USES A AND T\r
+\r
+RCNUM: IDIVI Q,12              ;RADIX DECIMAL\r
+       ADDI A,"0"\r
+       HRLM A,(P)\r
+       SKIPE Q\r
+       PUSHJ P,RCNUM\r
+       HLRZ T,(P)\r
+       JRST TYPE2\r
+\r
+\f;PRINT FOUR SPACES\r
+\r
+SPACES:   PUSHJ     P,SP1\r
+SP1:   PUSHJ     P,SPACE\r
+SPACE: MOVEI     T,40\r
+       JRST    TYPE2\r
+\r
+;SYMBOL PRINT - RADIX 50\r
+\r
+;      ACCUMULATORS USED: D,T\r
+\r
+PRNAME:   MOVE T,C             ;LOAD SYMBOL\r
+       TLZ     T,740000                ;ZERO CODE BITS\r
+       MOVNI     D,6           ;LOAD CHAR. COUNT\r
+SPT:   IDIVI     T,50          ;THE REMAINDER IS THE NEXT CHAR.\r
+       HRLM    V,(P)           ;STORE IN LH. OF PUSHDOWN LIST\r
+       AOSGE     D                     ;SKIP IF NO CHARS. REMAIN\r
+       PUSHJ     P,SPT         ;RECURSIVE CALL FOR NEXT CHAR.\r
+       HLRZ    T,(P)           ;LOAD FROM LH. OF PUSHDOWN LIST\r
+       JUMPE     T,TYPE                ;BLANK\r
+       ADDI    T,60-1\r
+       CAILE     T,71\r
+       ADDI    T,101-72\r
+       CAILE     T,132\r
+       SUBI    T,134-44\r
+       CAIN    T,43\r
+       MOVEI     T,56\r
+       JRST    TYPE2\r
+;PRINT A WORD OF SIXBIT CHARACTERS IN AC W\r
+\r
+;      ACCUMULATORS USED: Q,T,D\r
+\r
+PWORD: MOVNI     Q,6           ;SET CHARACTER COUNT TO SIX\r
+PWORD1:   MOVE D,LSTPT         ;ENTER HERE WITH Q PRESET\r
+PWORD2:   ILDB T,D             ;LOAD NEXT CHAR. TO BE OUTPUT\r
+       PUSHJ     P,TYPE                ;OUTPUT CHARACTER\r
+       AOJL    Q,PWORD2\r
+       POPJ    P,\r
+\r
+\f;ERROR MESSAGE PRINT SUBROUTINE\r
+\r
+;      FORM OF CALL:\r
+\r
+;      JSP     A,ERRPT\r
+;      SIXBIT    /<MESSAGE>/\r
+\r
+;      ACCUMULATORS USED: T,V,C,W\r
+\r
+ERRPT: TLO     F,FCONSW        ;INSURE TTY OUTPUT\r
+       PUSHJ   P,CRLF          ;ROOM AT THE TOP\r
+       PUSHJ   P,PRQ           ;START OFF WITH ?\r
+ERRPT0:   PUSH P,Q             ;SAVE Q\r
+       SKIPA     V,ERRPT5\r
+ERRPT1:   PUSHJ     P,TYPE\r
+       ILDB    T,V\r
+       CAIN    T,40\r
+       JRST    ERRPT4\r
+       CAIN    T,5\r
+       JRST    ERRPT9\r
+       CAIE    T,3\r
+       JRST    ERRPT1\r
+       SKIPN     C,DTIN\r
+       JRST    ERRPT4\r
+       MOVNI     Q,14\r
+       MOVEI     W,77\r
+ERRPT2:   TDNE C,W\r
+       JRST    ERRPT3\r
+       LSH     W,6\r
+       AOJL    Q,ERRPT2\r
+ERRPT3:   MOVE W,ERRPT6\r
+       PUSHJ     P,PWORD1\r
+       SKIPN     W,DTIN1\r
+       JRST    ERRPT4\r
+       LSH     W,-6\r
+       TLO     W,160000\r
+       MOVNI     Q,4\r
+       PUSHJ     P,PWORD1\r
+ERRPT4:   PUSHJ     P,CRLF\r
+ERRP41:        POP     P,Q\r
+       TLZ     F,FCONSW        ;ONE ERROR PER CONSOLE\r
+       AOS     V               ;PROGRAM BUMMERS BEWARE:\r
+       JRST    @V              ;V HAS AN INDEX OF A\r
+\r
+ERRPT5:   POINT     6,0(A)\r
+ERRPT6:   SIXBIT    / FILE /\r
+\r
+\fERRPT8:       TLO     F,FCONSW        ;INSURE TTY OUTPUT\r
+       PUSHJ   P,PRQ           ;START WITH ?\r
+       CAIGE   T,140           ;IS IT A NON-PRINTING CHAR?\r
+       CAIL    T,40\r
+       JRST    ERRP8\r
+       PUSH    P,T\r
+       MOVEI     T,136         ;UP ARROW\r
+       PUSHJ     P,TYPE2\r
+       POP     P,T\r
+       ADDI    T,100           ;CONVERT TO PRINTING CHAR.\r
+ERRP8: PUSHJ     P,TYPE2\r
+ERRPT7:   PUSHJ     P,SPACE\r
+       JRST    ERRPT0\r
+\r
+ERRPT9:   MOVEI     V,@V\r
+       PUSH    P,V\r
+       JSP     A,ERRPT7\r
+       SIXBIT  ?ILLEGAL -LOADER@?\r
+       POP     P,V\r
+       JRST    ERRP41\r
+\r
+;PRINT QUESTION MARK\r
+\r
+PRQ:   PUSH    P,T             ;SAVE\r
+       MOVEI   T,"?"           ;PRINT ?\r
+       PUSHJ   P,TYPE2         ;...\r
+       POP     P,T             ;RESTORE\r
+       POPJ    P,              ;RETURN\r
+\r
+\f;INPUT - OUTPUT INTERFACE\r
+\r
+;BINARY INPUT SUBROUTINE - RETURNS A WORD IN W\r
+IFE K,<\r
+WORDPR:        PUSHJ   P,WORD          ;GET FIRST WORD OF PAIR\r
+       MOVE    C,W             ;KEEP IT HANDY>\r
+WORD:  SOSG    BUFR2           ;SKIP IF BUFFER NOT EMPTY\r
+       JRST    WORD2\r
+WORD1: ILDB    W,BUFR1         ;PICK UP 36 BIT WORD\r
+       POPJ    P,\r
+\r
+WORD2: INPUT     1,                    ;GET NEXT BUFFER LOAD\r
+       STATUS    1,W           ;GET DEVICE STATUS FROM MONITOR\r
+       TRNE    W,IODEND                ;TEST FOR EOF\r
+       JRST    EOF             ;END OF FILE EXIT\r
+       TRNN    W,IOBAD         ;TEST FOR DATA ERROR\r
+       JRST    WORD1           ;DATA OK - CONTINUE LOADING\r
+       JSP     A,ERRPT         ;DATA ERROR - PRINT MESSAGE\r
+       SIXBIT    /INPUT ERROR#/\r
+       JRST    LD2             ;GO TO ERROR RETURN\r
+;TYPEOUT SUBROUTINE - THE CHARACTER SUPPLIED IN T IS CONVERTED TO ASCII\r
+;AND IS OUTPUT ON THE CONSOLE AND/OR THE SPECIFIED LOADER MAP OUTPUT\r
+;DEVICE\r
+\r
+CRLFLF:   PUSHJ     P,CRLF\r
+FCRLF: TLO     F,FCONSW        ;INSURE TTY OUTPUT\r
+CRLF:  MOVEI     T,15          ;CARRIAGE RETURN LINE FEED\r
+       PUSHJ     P,TYPE2\r
+       MOVEI     T,12-40               ;LINE FEED IN PSEUDO SIXBIT\r
+TYPE:  MOVEI     T,40(T)               ;CONVERT SIXBIT TO ASCII\r
+TYPE2: TLNN    N,AUXSWI        ;IS THER AN AUXILIARY DEVICE?\r
+       JRST    TYPE3           ;NO, DONT OUTPUT TO IT\r
+       TLON    N,AUXSWE        ;IS AUX. DEV. ENTERED?\r
+       PUSHJ   P,IAD2          ;NOPE, DO SO!\r
+       SOSG    ABUF2           ;SPACE LEFT IN BUFFER?\r
+       OUTPUT  2,              ;CREATE A NEW BUFFER\r
+       IDPB    T,ABUF1         ;DEPOSIT CHARACTER\r
+       TLNN    F,FCONSW        ;FORCE OUTPUT TO CONSOLE TOO?\r
+       POPJ    P,              ;NOPE\r
+TYPE3: SKIPN   BUFO2           ;END OF BUFFER\r
+       OUTPUT  3,              ;FORCE OUTPUT NOW\r
+       IDPB    T,BUFO1         ;DEPOSIT CHARACTER\r
+       CAIN    T,12            ;END OF LINE\r
+       OUTPUT  3,              ;FORCE AN OUTPUT\r
+       POPJ    P,\r
+\r
+\fSE3:  XWD     2,2             ;SYMBOL POINTER INCREMENT\r
+LSTPT: POINT     6,W           ;CHARACTER POINTER TO W\r
+PDLPT: XWD     -41,PDLST-1;    INITIAL PUSHDOWN POINTER\r
+COMM:  SQUOZE    0,.COMM.\r
+PDSAV: 0                               ;SAVED PUSHDOWN POINTER\r
+COMSAV:   0                            ;LENGTH OF COMMON\r
+MDG:   0                       ;COUNTER FOR MUL DEF GLOBALS\r
+PDLST: BLOCK   40\r
+\r
+F.C:   0\r
+       0       ;STORE N HERE\r
+       0       ;STORE X HERE\r
+       0       ;STORE H HERE\r
+       0       ;STORE S HERE\r
+       0       ;STORE R HERE\r
+B.C:   0\r
+F.I:   0                       ;INITIAL F - FLAGS\r
+       0                       ;INITIAL N\r
+       XWD     V,LDEND         ;INITIAL X - LOAD PROGRAM AFTER LOADER\r
+       EXP     LDEND+JOBPRO    ;INITIAL H - INITIAL PROG BREAK\r
+       0                       ;INITIAL S\r
+       XWD     W,JOBPRO        ;INITIAL R - INITIAL RELOC\r
+       0                       ;INITIAL B\r
+\f;BUFFER HEADERS AND HEADER HEADERS\r
+\r
+BUFO:  0                               ;CONSOLE INPUT HEADER HEADER\r
+BUFO1: 0\r
+BUFO2: 0\r
+\r
+BUFI:  0                               ;CONSOLE OUTPUT HEADER HEADER\r
+BUFI1: 0\r
+BUFI2: 0\r
+ABUF:  0                       ;AUXILIARY OUTPUT HEADER HEADER\r
+ABUF1: 0\r
+ABUF2: 0\r
+\r
+BUFR:  0                               ;BINARY INPUT HEADER HEADER\r
+BUFR1: 0\r
+BUFR2: 0\r
+\r
+DTIN:  0                               ;DECTAPE INPUT BLOCK\r
+DTIN1: 0\r
+       0\r
+DTIN2: 0\r
+\r
+DTOUT: 0                               ;DECTAPE OUTPUT BLOCK\r
+DTOUT1:   0\r
+       0\r
+       0\r
+\r
+       TTYL=52                 ;TWO TTY BUFFERS\r
+IFE K,<        BUFL=406                ;TWO DTA BUFFERS FOR LOAD>\r
+IFN K,<        BUFL=203                ;ONE DTA BUFFER FOR LOAD>\r
+       ABUFL=203               ;ONE DTA BUFFER FOR AUX DEV\r
+TTY1:  BLOCK     TTYL          ;TTY BUFFER AREA\r
+BUF1:  BLOCK   BUFL            ;LOAD BUFFER AREA\r
+AUX:   BLOCK   ABUFL           ;AUX BUFFER AREA\r
+ZEROS: REPEAT 4,<0>\r
+\r
+\fIOBKTL=40000\r
+IOIMPM=400000\r
+       IODERR=200000\r
+       IODTER=100000\r
+       IODEND=20000\r
+\r
+IOBAD=IODERR+IODTER+IOBKTL+IOIMPM\r
+\r
+       INTERN    PWORD,DTIN,DTOUT,LDEND\r
+       INTERN    WORD,LD,BEG,PDLST,LOAD\r
+       INTERN    CRLF,TYPE,PMS,PRMAP\r
+       INTERN    F,P,X,H,S,R,B,N,T,V,W,C,E,Q,A,D\r
+\r
+       EXTERN  JOBDDT,JOBFF,JOBSA,JOBREL,JOBSYM,JOBUSY,JOB41\r
+\r
+;END HERE IF 1K LOADER REQUESTED.\r
+IFN K, <LITS:  LIT\r
+       VAR\r
+>\r
+\r
+\f;HERE BEGINS FORTRAN FOUR LOADER\r
+\r
+F4LD:\r
+       HRRZ    V,R;            SET PROG BREAK INTO V\r
+       MOVEM   V,LLC;          SAVE FIRST WORD ADDRESS\r
+       MOVEI   W,-2(S);        GENERATE TABLES\r
+       TLO     N,F4SW\r
+       HRRZM   W,MLTP;         MADE LABELS\r
+       HRRZM   W,PLTP;         PROGRAMMER LABELS\r
+       ADD     W,[POINT 1,1];  GENERATE BIT-BYTE POINTER\r
+       MOVEM   W,BITP\r
+       MOVEM   W,SDSTP;        FIRST DATA STATEMENT\r
+       AOS     SDSTP;\r
+       MOVE    W,[JRST ALLOVE] ;LAST DATA STATEMENT\r
+       MOVEM   W,(S)\r
+       HRREI   W,-^D36;        BITS PER WORDUM\r
+       MOVEM   W,BITC;         BIT COUNT\r
+       PUSHJ P,BITWX+1         ;MAKE SURE OF ENOUGH SPACE\r
+\r
+TEXTR: PUSHJ   P,WORD;         TEXT BY DEFAULT\r
+       HLRZ    C,W\r
+       CAIN    C,-1\r
+       JRST    HEADER;         HEADER\r
+       MOVEI   C,1;            RELOCATABLE\r
+       PUSHJ   P,BITW;         SHOVE AND STORE\r
+       JRST    TEXTR;          LOOP FOR NEXT WORD\r
+\r
+ABS:   SOSG    BLKSIZ; MORE TO GET\r
+       JRST    TEXTR;          NOPE\r
+ABSI:  PUSHJ   P,WORD;\r
+       MOVEI   C,0;            NON-RELOCATABLE\r
+       PUSHJ   P,BITW;         TYPE 0\r
+       JRST    ABS\r
+\r
+\f;PROCESS TABLE ENTRIES\r
+\r
+MDLB:  TLNE    F,FULLSW+SKIPSW;        MADE LABEL PROC\r
+       JRST    GLOBDF;         NO ROOM AT THE IN\r
+       HLRZ    C,MLTP;         GET PRESENT SIZE\r
+       CAMGE   C,BLKSIZ;       IF NEW SIZE BIGGER, STR-R-RETCH\r
+       PUSHJ   P,SMLT\r
+       HRRZ    C,MLTP;         GET BASE\r
+MLPLC: ADD     C,BLKSIZ;       MAKE INDEX\r
+       TLNN    F,FULLSW+SKIPSW;        DONT LOAD\r
+       HRRZM   V,(C);          PUT AWAY DEFINITION\r
+GLOBDF:        PUSHJ   P,WORD\r
+       TLNE    F,FULLSW+SKIPSW ;SKIPPING THIS PROG?\r
+       JRST    TEXTR           ;YES, DON'T DEFINE\r
+       MOVEI   C,(V);          AND LOC\r
+       EXCH    W,C\r
+       PUSHJ   P,SYMXX;        PUT IN DDT-SYMBOL TABLE\r
+       PUSHJ   P,BITWX+1\r
+       JRST    TEXTR\r
+\r
+PLB:   TLNE    F,FULLSW+SKIPSW\r
+       JRST    GLOBDF\r
+       HLRZ    C,PLTP;         PRESENT SIZE\r
+       CAMGE   C,BLKSIZ\r
+       PUSHJ   P,SPLT\r
+       HRRZ    C,PLTP\r
+       JRST    MLPLC\r
+\r
+\f;STORE WORD AND SET BIT TABLE\r
+\r
+BITW:  TLNE    F,FULLSW+SKIPSW;        WE DONT LOAD THIS\r
+       POPJ    P,;\r
+       MOVEM   W,@X;           STORE AWAY OFFSET\r
+       IDPB    C,BITP;         STORE BIT\r
+       AOSGE   BITC;           STEP BIT COUNT\r
+       JRST    BITWX;          SOME MORE ROOM LEFT\r
+       HRREI   C,-^D36;        RESET COUNT\r
+       MOVEM   C,BITC\r
+       SOS     PLTP\r
+       SOS     BITP;           ALL UPDATED\r
+IFE EXPAND,<HRL C,MLTP\r
+       SOS MLTP\r
+       HRR     C,MLTP>\r
+IFN EXPAND,<HRRZ       C,MLTP;         TO ADDRESS\r
+               SUBI C,1\r
+               CAIG C,@X\r
+               PUSHJ P,[PUSHJ P,XPAND\r
+                       POPJ P,\r
+                       ADDI C,2000\r
+                       JRST POPJM2]\r
+               SOS MLTP\r
+               HRLI C,1(C)>\r
+       HRRZ    T,SDSTP;        GET DATA POINTER\r
+       BLT     C,-1(T);        MOVE DOWN LISTS\r
+BITWX: AOS     V;              STEP LOADER LOCATION\r
+       HRRZ    T,MLTP\r
+       CAIG    T,@X;           OVERFLOW CHECK\r
+IFE EXPAND,<TLO        F,FULLSW>\r
+IFN EXPAND,<PUSHJ P,   [PUSHJ P,XPAND\r
+                       TLOA F,FULLSW\r
+                       JRST POPJM3\r
+                       POPJ P,]>\r
+       POPJ    P,;\r
+\r
+SMLT:  SUB     C,BLKSIZ;       STRETCH\r
+       MOVS    W,MLTP          ;LEFT HALF HAS OLD BASE\r
+       ADD     C,MLTP          ;RIGHT HALF HAS NEW BASE\r
+IFN EXPAND,<   HRRZS C ;GET RID OF COUNT\r
+               CAIG C,@X\r
+               PUSHJ P,[PUSHJ P,XPAND\r
+                       POPJ P,\r
+                       ADD W,[XWD 2000,0]\r
+                       ADDI C,2000\r
+                       JRST POPJM2]>\r
+       HRRM C,MLTP             ;PUT IN NEW MLTP\r
+       HLL     C,W             ;FORM BLT POINTER\r
+       ADDI    W,(C)           ;LAST ENTRY OF MLTP\r
+       HRL     W,BLKSIZ        ;NEW SIZE OF MLTP\r
+       HLLM    W,MLTP          ;...\r
+SLTC:  BLT     C,0(W);         MOVE DOWN (UP?)\r
+       POPJ    P,;\r
+\r
+SPLT:  SUB     C,BLKSIZ\r
+       MOVS    W,MLTP;\r
+       ADDM    C,PLTP\r
+       ADD     C,MLTP\r
+IFN EXPAND,<   HRRZS C\r
+               CAIG C,@X\r
+               PUSHJ P,[PUSHJ P,XPAND\r
+                       POPJ P,\r
+                       ADD W,[XWD 2000,0]\r
+                       ADDI C,2000\r
+                       JRST POPJM2]>\r
+       HRRM C,MLTP             ;PUT IN NEW MLTP\r
+       HLL     C,W\r
+       HLRZ    W,PLTP          ;OLD SIZE OF PL TABLE\r
+       ADD     W,PLTP          ;NEW BASE OF PL TABLE\r
+       HRL     W,BLKSIZ        ;NEW SIZE OF PL TABLE\r
+       HLLM    W,PLTP          ;INTO POINTER\r
+       JRST    SLTC\r
+\r
+PT1:   0\r
+\r
+\r
+\f;PROCESS END CODE WORD\r
+\r
+ENDS:  PUSHJ   P,WORD;         GET STARTING ADDRESS\r
+       TLNE F,SKIPSW\r
+       JRST ENDS1      ;FOOBAZ!!!!!!!!\r
+       JUMPE   W,ENDS1;        NOT MAIN\r
+       ADDI    W,(R);          RELOCATION OFFSET\r
+       TLNN    N,ISAFLG;       IGNORE STARTING ADDRESS\r
+       HRR     F,W;            SET SA\r
+ENDS1: PUSHJ   P,WORDPR        ;DATA STORE SIZE\r
+       HRRZM   C,PTEMP         ;NUMBER OF PERMANENT TEMPS\r
+       MOVEM   V,CCON;         START OF CONSTANTS AREA\r
+       JUMPE   W,E1;           NULL\r
+       MOVEM   W,BLKSIZ        ;SAVE COUNT\r
+       MOVEI   W,0(V)          ;DEFINE CONST.\r
+       MOVE    C,CNR50         ;...\r
+       TLNN F,SKIPSW!FULLSW\r
+       PUSHJ   P,SYMPT         ;...\r
+       PUSHJ   P,GSWD          ;STORE CONSTANT TABLE\r
+E1:    MOVEI   W,0(V);         GET LOADER LOC\r
+       EXCH    W,PTEMP;        STORE INTO PERM TEMP POINTER\r
+       ADD     W,PTEMP;        FORM TEMP TEMP ADDRESS\r
+       MOVEM   W,TTEMP;        POINTER\r
+       MOVEM   V,GSTAB;        STORE LOADER LOC IN GLOBSUB\r
+       MOVE    C,TTR50         ;DEFINE %TEMP.\r
+       TLNE F,SKIPSW!FULLSW\r
+       JRST E1A\r
+       PUSHJ   P,SYMPT         ;...\r
+       MOVE    C,PTR50         ;DEFINE (IF EXTANT) TEMP.\r
+       MOVEI   W,0(V)          ;...\r
+       CAME    W,TTEMP         ;ANY PERM TEMPS?\r
+       PUSHJ   P,SYMPT         ;YES, DEFINE\r
+E1A:   PUSHJ   P,WORD;         NUMBER OF GLOBSUBS\r
+       JUMPE   W,E11\r
+       MOVEM   W,BLKSIZ        ;SIZE OF GLOBSUB\r
+       PUSHJ   P,GSWD          ;STORE GLOBSUB TABLE\r
+E11:   MOVEM   V,STAB;         SCALARS\r
+       PUSHJ   P,WORD;         HOW MANY?\r
+       JUMPE   W,E21;          NONE\r
+       PUSHJ   P,GSWDPR        ;STORE SCALAR TABLE\r
+E21:   MOVEM   V,ATAB;         ARRAY POINTER\r
+       PUSHJ   P,WORD;         COMMENTS FOR SCALARS APPLY\r
+       JUMPE   W,E31\r
+       PUSHJ   P,GSWDPR        ;STORE ARRAY TABLE\r
+E31:   MOVEM   V,AOTAB;        ARRAYS OFFSET\r
+       PUSHJ   P,WORD;         SAME COMMENTS AS ABOVE\r
+       JUMPE   W,E41\r
+       PUSHJ   P,GSWDPR        ;STORE ARRAY OFFSET TABLE\r
+E41:   PUSHJ   P,WORD;         TEMP, SCALAR, ARRAY SIZE\r
+       TLNE    F,FULLSW!SKIPSW ;SKIPPING THIS PROG?\r
+       MOVEI   W,0             ;DON'T ACCEPT GLOB SUBPROG REQUESTS\r
+       MOVEM   V,CTAB;         SETUP COMMON TABLE POINTER\r
+       ADD     W,GSTAB;        GLOBAL SUBPROG BASE\r
+       MOVEM   W,COMBAS;       START OF COMMON\r
+       PUSHJ   P,WORD;         COMMON BLOCK SIZE\r
+       HRRZM   W,BLKSIZ\r
+       JUMPE   W,PASS2;        NO COMMON\r
+COMTOP:        PUSHJ   P,WORDPR        ;GET A COMMON PAIR\r
+       PUSHJ   P,SDEF;         SEARCH\r
+       JRST    COMYES;         ALREADY THERE\r
+       HRLS    W\r
+       HRR     W,COMBAS;       PICK UP THIS COMMON LOC\r
+       TLNN F,SKIPSW!FULLSW\r
+       PUSHJ   P,SYMXX;        DEFINE IT\r
+       MOVS    W,W;            SWAP HALFS\r
+       ADD     W,COMBAS;       UPDATE COMMON LOC\r
+       HRRM    W,COMBAS;       OLD BASE PLUS NEW SIZE\r
+       HLRZS   W;              RETURN ADDRESS\r
+       TLZ     C,400000\r
+       TLNN F,SKIPSW!FULLSW\r
+       PUSHJ   P,SYMXX\r
+COMCOM:        PUSHJ   P,CWSTWX        ;STORE A WORD PAIR\r
+       SOS     BLKSIZ\r
+       SOSLE   BLKSIZ\r
+       JRST    COMTOP\r
+       JRST    PASS2\r
+\r
+COMYES:        TLNE F,SKIPSW\r
+       JRST COMCOM     ;NO ERRORS IF SKIPPING\r
+       HLRZ    C,2(A);         PICK UP DEFINITION\r
+       CAMLE   W,C;            CHECK SIZE\r
+       JRST    ILC;            ILLEGAL COMMON\r
+       MOVE    C,1(A);         NAME\r
+       HRRZ    W,2(A); BASE\r
+       JRST    COMCOM\r
+\r
+\f\r
+PRSTWX:        PUSHJ   P,WORDPR        ;GET A WORD PAIR\r
+CWSTWX:        EXCH    C,W             ;SPACE TO STORE FIRST WORD OF PAIR?\r
+       PUSHJ   P,WSTWX         ;...\r
+       EXCH    C,W             ;THERE WAS; IT'S STORED\r
+WSTWX: TLNE    F,FULLSW!SKIPSW ;SPACE FOR ANOTHER WORD?\r
+       POPJ    P,              ;NOPE, RETURN\r
+       MOVEM   W,@X            ;YES, STORE IT.\r
+       JRST    BITWX           ;TELL THE TABLES ABOUT IT; THEN RETURN\r
+\r
+\r
+GSWD:  PUSHJ   P,WORD          ;GET WORD FROM TABLE\r
+       PUSHJ   P,WSTWX         ;STASH IT\r
+       SOSE    BLKSIZ          ;FINISHED?\r
+       JRST    GSWD            ;NOPE, LOOP\r
+       POPJ    P,              ;TRA 1,4\r
+\r
+GSWDPR:        MOVEM   W,BLKSIZ        ;KEEP COUNT\r
+GSWDP1:        PUSHJ   P,PRSTWX        ;GET AND STASH A PAIR\r
+       SOS     BLKSIZ          ;FINISHED?\r
+       SOSLE   BLKSIZ          ;...\r
+       JRST    GSWDP1          ;NOPE, LOOP\r
+       POPJ    P,              ;TRA 1,4\r
+\r
+\f;BEGIN HERE PASS2 TEXT PROCESSING\r
+\r
+PASS2: ADDI V,(X)\r
+       MOVEM V,TOPTAB  ;SAVE FOR OVERLAP CHECKING\r
+       TLNE    F,FULLSW+SKIPSW;        ABORT?\r
+       JRST    ALLOVE;         YES\r
+       MOVE    V,LLC           ;PICK UP PROGRAM ORIGIN\r
+       CAML    V,CCON          ;IS THIS A PROGRAM?\r
+       JRST    FBLKD           ;NO, GO LOOK FOR FIRST BLK DATA\r
+       TLOE    N,PGM1          ;YES, IS THIS FIRST F4 PROG?\r
+       JRST    NOPRG           ;NO\r
+       HRR     W,COMBAS        ;YES, PLACE PROG BREAK IN LH\r
+IFE L,<        HRLM    W,JOBCHN(X)     ;FOR CHAIN>\r
+NOPRG: HRRZ    W,PLTP;         GET PROG TABLE BASE\r
+       HLRZ    C,PLTP;         AND SIZE\r
+       ADD     W,C;            COMPUTE END OF PROG TABLE\r
+       ADD     W,[POINT 1,1];  AND BEGINNING OF BIT TABLE\r
+       EXCH    W,BITP;         SWAP POINTERS\r
+PASS2B:        ILDB    C,BITP;         GET A BIT\r
+       JUMPE   C,PASS2C;       NO PASS2 PROCESSING\r
+       PUSHJ   P,PROC;         PROCESS A TAG\r
+       JRST    PASS2B;         MORE TO COME\r
+       JRST    ENDTP;\r
+\r
+PROC:  LDB     C,[POINT 6,@X,23];      TAG\r
+       SETZM   MODIF;          ZERO TO ADDRESS MODIFIER\r
+       TRZE    C,40;\r
+       AOS     MODIF\r
+       HRLM    C,ENDTAB;       ERROR SETUP\r
+       MOVEI   W,TABDIS;       HEAD OF TABLE\r
+       HLRZ    T,(W);          GET ENTRY\r
+       CAME    T,C;            CHECK\r
+       AOJA    W,.-2\r
+       HRRZ    W,(W);          GET DISPATCH\r
+       LDB     C,[POINT 12,@X,35]\r
+       JRST    (W);            DISPATCH\r
+\r
+TABDIS:        XWD 11,PCONS;           CONSTANTS\r
+       XWD 06,PGS;             GLOBAL SUBPROGRAMS\r
+       XWD 20,PST;             SCALARS\r
+       XWD 22,PAT;             ARRAYS\r
+       XWD 01,PATO;            ARRAYS OFFSET\r
+       XWD 00,PPLT;            PROGRAMMER LABELS\r
+       XWD 31,PMLT;            MADE LABESL\r
+       XWD 26,PPT;             PERMANENT TEMPORARYS\r
+       XWD 27,PTT;             TEMPORARY TEMPORARYS\r
+ENDTAB:        XWD 00,LOAD4A;          ERRORS\r
+\r
+PASS2C:        PUSHJ   P,PASS2A\r
+       JRST    PASS2B\r
+       JRST    ENDTP\r
+\r
+\f;DISPATCH ON A HEADER\r
+\r
+HEADER:        CAMN    W,[EXP -2];     END OF PASS ONE\r
+       JRST    ENDS\r
+       LDB     C,[POINT 12,W,35];      GET SIZE\r
+       MOVEM   C,BLKSIZ\r
+       ANDI    W,770000\r
+       JUMPE   W,PLB;  PROGRAMMER LABEL\r
+       CAIN    W,500000;       ABSOLUTE BLOCK\r
+       JRST    ABSI;\r
+       CAIN    W,310000;       MADE LABEL\r
+       JRST    MDLB;           MADE LABEL\r
+       CAIN    W,600000\r
+       JRST    GLOBDF\r
+       CAIN    W,700000;       DATA STATEMENT\r
+       JRST    DATAS\r
+       JRST    LOAD4A;         DATA STATEMENTS WILL GO HERE\r
+\r
+TOPTAB:        0       ;TOP OF TABLES\r
+CTAB:  0;      COMMON\r
+ATAB:  0;      ARRAYS\r
+STAB:  0;      SCALARS\r
+GSTAB: 0;      GLOBAL SUBPROGS\r
+AOTAB: 0;      OFFSET ARRAYS\r
+CCON:  0;      CONSTANTS\r
+PTEMP: 0;      PERMANENT TEMPS\r
+TTEMP: 0;      TEMPORARY TEMPS\r
+COMBAS:        0;      BASE OF COMMON\r
+LLC:   0;      PROGRAM ORIGIN\r
+BITP:  0;      BIT POINTER\r
+BITC:  0;      BIT COUNT\r
+PLTP:  0;      PROGRAMMER LABEL TABLE\r
+MLTP:  0;      MADE LABEL TABLE\r
+SDS:   0       ;START OF DATA STATEMENTS\r
+SDSTP: 0       ;START OF DATA STATEMENTS POINTER\r
+BLKSIZ:        0;      BLOCK SIZE\r
+MODIF: 0;      ADDRESS MODIFICATION +1\r
+TTR50: XWD     136253,114765   ;RADIX 50 %TEMP.\r
+PTR50: XWD     100450,614765   ;RADIX 50 TEMP.\r
+CNR50: XWD     112320,235025   ;RADIX 50 CONST.\r
+\r
+\f;ROUTINES TO PROCESS POINTERS\r
+\r
+PCONS: ADD     C,CCON;         GENERATE CONSTANT ADDRESS\r
+       SOJA    C,PCOMX         ;ADJUST FOR 1 AS FIRST ENTRY\r
+\r
+PSTA:  PUSHJ   P,SWAPSY        ;NON-COMMON SCALARS AND ARRAYS\r
+       ADDI    C,(R);          RELOCATE\r
+PCOM1: PUSHJ   P,SYDEF         ;...\r
+PCOMX: ADD     C,MODIF         ;ADDR RELOC FOR DP\r
+       HRRM    C,@X;           REPLACE ADDRESS\r
+PASS2A:        AOS     V;              STEP READOUT POINTER\r
+       CAML    V,CCON          ;END OF PROCESSABLES?\r
+CPOPJ1:        AOS     (P);            SKIP\r
+       POPJ    P,;\r
+\r
+PAT:   SKIPA   W,ATAB          ;ARRAY TABLE BASE\r
+PST:   MOVE    W,STAB          ;SCALAR TABLE  BASE\r
+       ROT     C,1             ;SCALE BY 2\r
+       ADD     C,W             ;ADD IN TABLE BASE\r
+       ADDI    C,-2(X);        TABLE ENTRY\r
+       HLRZ    W,(C);          CHECK FOR COMMON\r
+       JUMPE   W,PSTA;         NO COMMON\r
+       PUSHJ   P,COMDID        ;PROCESS COMMON\r
+       JRST    PCOM1\r
+\r
+COMDID:        LSH     W,1             ;PROCESS COMMON TABLE ENTRIES\r
+       ADD     W,CTAB;         COMMON TAG\r
+       ADDI    W,-2(X);        OFFSET\r
+       PUSHJ   P,SWAPSY;       GET SYMBOL AND SET TO DEFINED\r
+       ADD     C,1(W);         BASE OF COMMON\r
+       POPJ    P,              ;RETURN\r
+\r
+PATO:  ROT     C,1\r
+       ADD     C,AOTAB;        ARRAY OFFSET\r
+       ADDI    C,-2(X);        LOADER OFFSET\r
+       MOVEM   C,CT1;          SAVE CURRENT POINTER\r
+       HRRZ    C,1(C);         PICK UP REFERENCE POINTER\r
+       ANDI    C,7777; MASK TO ADDRESS\r
+       ROT     C,1;            ALWAYS A ARRAY\r
+       ADDI    C,-2(X)\r
+       ADD     C,ATAB\r
+       HLRZ    W,(C);          COMMON CHECK\r
+       JUMPE   W,NCO\r
+       PUSHJ   P,COMDID        ;PROCESS COMMON\r
+       PUSHJ   P,SYDEF\r
+       MOVE    C,CT1\r
+       HRRE    C,(C)\r
+       ADD     C,1(W)\r
+       JRST    PCOMX\r
+\r
+\fNCO:  PUSHJ   P,SWAPSY;\r
+       ADDI    C,(R)           ;DEFINE SYMBOL IN TRUE LOC\r
+       PUSHJ   P,SYDEF         ;...\r
+       MOVE    C,CT1\r
+       HRRZ    C,(C)           ;OFFSET ADDRESS PICKUP\r
+       ADDI    C,(R)           ;WHERE IT WILL BE\r
+       JRST    PCOMX           ;STASH ADDR AWAY\r
+\r
+PTT:   ADD     C,TTEMP;        TEMPORARY TEMPS\r
+       SOJA    C,PCOMX         ;ADJUST FOR 1 AS FIRST ENTRY\r
+\r
+PPT:   ADD     C,PTEMP;        PERMANENT TEMPS\r
+       SOJA    C,PCOMX         ;ADJUST FOR 1 AS FIRST ENTRY\r
+\r
+PGS:   ADD     C,GSTAB;        GLOBSUBS\r
+       ADDI    C,-1(X);        OFFSET\r
+       MOVE    C,(C)\r
+       TLC     C,640000;       MAKE A REQUEST\r
+       PUSHJ P,TBLCHK          ;CHECK FOR OVERLAP\r
+       MOVEI   W,(V);          THIS LOC\r
+       HLRM    W,@X;           ZERO RIGHT HALF\r
+       PUSHJ   P,SYMXX\r
+       JRST    PASS2A\r
+\r
+SYDEF: TLNE    N,SYDAT         ;SYMBOL WANTS DEFININITION?\r
+       POPJ    P,              ;NO, GO AWAY\r
+       PUSH    P,C             ;SAVE THE WORLD\r
+       PUSH    P,W\r
+       PUSHJ P,TBLCHK  ;CHECK FOR OVERLAP\r
+       MOVE    W,C\r
+       SKIPE   C,T     ;PICKUP VALUE\r
+       PUSHJ   P,SYMXX\r
+       POP     P,W\r
+       POP     P,C\r
+       POPJ    P,;\r
+\r
+PMLT:  ADD     C,MLTP\r
+       SKIPA\r
+PPLT:  ADD     C,PLTP\r
+       HRRZ    C,(C)\r
+       JRST    PCOMX\r
+\r
+SYMXX: PUSH    P,V\r
+       PUSHJ   P,SYMPT\r
+       POP     P,V\r
+       POPJ    P,;\r
+\r
+SWAPSY:        MOVEI   T,0;            SET TO EXCHANGE DEFS\r
+       EXCH    T,1(C);         GET NAME\r
+       HRRZ    C,(C)           ;GET VALUE\r
+       POPJ    P,\r
+TBLCHK:        HRRZ W,MLTP     ;GETT TOP OV TABLES\r
+       SUBI W,2\r
+       CAMG W,TOPTAB   ;WILL IT OVERLAP\r
+IFE EXPAND,<TLO F,FULLSW>\r
+IFN EXPAND,<   JRST    [PUSHJ P,XPAND\r
+                       TLOA F,FULLSW\r
+                       JRST TBLCHK\r
+                       JRST .+1]>\r
+       POPJ P,\r
+\r
+\f;END OF PASS2\r
+\r
+ALLOVE:        TLZ     N,F4SW          ;END OF F4 PROG\r
+       TLNE F,FULLSW!SKIPSW\r
+       JRST HIGH3\r
+       HRR     R,COMBAS        ;TOP OF THE DATA\r
+       HRR     V,R             ;IS THIS THE HIGHEST LOC YET?\r
+       CAIG    H,@X            ;...\r
+       MOVEI   H,@X            ;YES, TELL THE WORLD\r
+       CAMG    H,SDS           ;HIGHEST LOC GREATER THAN DATA STATEMENTS?\r
+       JRST    HIGH3           ;NO, RETURN\r
+       ADDI    H,1(S)          ;YES, SET UP MEANINGFUL ERROR COMMENT\r
+       SUB     H,SDS           ;...\r
+       TLO     F,FULLSW        ;INDICATE OVERFLO\r
+       JRST    HIGH3           ;RETURN\r
+\r
+DATAS: TLNE    F,FULLSW+SKIPSW\r
+       JRST    DAX\r
+       MOVEI   C,(S)           ;ADDR OF WORD UNDER SYMBOL TABLE\r
+       MOVN    W,BLKSIZ        ;HOW FAR DOWN TO BLT\r
+       ADDM    W,PLTP          ;UPDATE TABLE POINTERS\r
+       ADDM    W,BITP          ;...\r
+       ADDM    W,SDSTP         ;...\r
+       ADD     C,W             ;RH(C):= WHEN TO STOP BLT\r
+       HRL     C,MLTP          ;SOURCE OF BLTED DATA\r
+       ADD     W,MLTP          ;UPDATE, GET DESTINATION OF BLT DATA\r
+IFN EXPAND,<   HRRZS W ;GET RID OF LEFT HALF\r
+               CAIG W,@X\r
+               PUSHJ P,[PUSHJ P,XPAND\r
+                       POPJ P,\r
+                       ADDI W,2000\r
+                       ADD C,[XWD 2000,2000]\r
+                       JRST POPJM2]>\r
+       HRRM W,MLTP             ;NO SET THIS SO EXTRA CORE NOT ZEROED\r
+       HLL     W,C             ;FORM BLT POINTER\r
+       BLT     W,-1(C)         ;MOVE TABLES DOWN (BUT NOT JRST ALLOVE)\r
+       PUSHJ   P,BITWX+1\r
+DAX:   PUSHJ   P,WORD;         READ ONE WORD\r
+       TLNN    F,FULLSW+SKIPSW\r
+       MOVEM   W,(C)\r
+       SOSLE   BLKSIZ          ;COUNT OF DATA SEQUENCE SIZE\r
+       AOJA    C,DAX           ;INCREMENT DATA SEQUENCE DEPOSIT LOC\r
+       JRST    TEXTR;          DONE\r
+\r
+\fFBLKD:        TLOE    N,BLKD1         ;IS THIS FIRST BLOCK DATA?\r
+       JRST    ENDTP           ;NO\r
+       HRR     V,COMBAS        ;PLACE PROG BREAK IN RH FOR\r
+IFE L,<        HRRM    V,JOBCHN(X)     ;CHAIN>\r
+ENDTP: TLNE    F,FULLSW+SKIPSW\r
+       JRST    ALLOVE\r
+       HRR     V,GSTAB\r
+ENDTP0:        CAML    V,STAB;         ANY MORE GLOBSUBS\r
+       JRST    ENDTP2;         NO\r
+       MOVE    C,@X;           GET SUBPROG NAME\r
+       PUSHJ   P,SREQ;         IS IT ALLREADY REQUESTED\r
+       AOJA    V,ENDTP0;       YES\r
+       PUSHJ   P,SDEF;         OR DEFINED\r
+       AOJA    V,ENDTP0;       YES\r
+       PUSHJ P,TBLCHK\r
+       MOVEI W,0               ;PREPARE DUMMY LINK\r
+       TLNN    F,FULLSW+SKIPSW;        ABORT\r
+       PUSHJ   P,SYM3X;        PUT IN DUMMY REQUEST\r
+       PUSHJ   P,BITWX+1;      OVERLAP CHECK\r
+       AOJA    V,ENDTP0\r
+ENDTP2:        SETZM   PT1\r
+       HRR V,SDSTP\r
+IFN EXPAND,<   SUBI V,(X)\r
+               CAMG V,COMBAS\r
+               JRST    [PUSHJ P,XPAND\r
+                       TLOA F,FULLSW\r
+                       JRST .-3\r
+                       JRST .+1]\r
+               HRR V,SDSTP>\r
+       HRRZM   V,SDS           ;DATA STATEMENT LOC\r
+ENDTP1:        SUBI    V,(X);          COMPENSATE FOR OFFSET\r
+       MOVE    W,@X;   GET WORD\r
+       TLNE    W,-1;           NO LEFT HALF IMPLIES COUNT\r
+       JRST    DODON;          DATA DONE\r
+       ADD     W,[MOVEI W,3]\r
+       ADDI    W,@X\r
+       EXCH    W,@X\r
+       AOS     V\r
+       ADD     W,@X;           ITEMS COUNT\r
+       MOVEM   W,ITC\r
+       MOVE    W,[MOVEM W,LTC]\r
+       MOVEM   W,@X;           SETUP FOR DATA EXECUTION\r
+       AOS     V\r
+       MOVE    W,[MOVEI W,0]\r
+       EXCH    W,@X\r
+       MOVEM   W,ENC;          END COUNT\r
+       AOS     V\r
+       MOVEI   W,@X\r
+       ADDM    W,ITC\r
+LOOP:  MOVE    W,@X\r
+       HLRZ    T,W;            LEFT HALF INST.\r
+       ANDI    T,777000\r
+       CAIN    T,254000        ;JRST?\r
+       JRST    WRAP            ;END OF DATA\r
+       CAIN    T,260000        ;PUSHJ?\r
+       JRST    PJTABL(W)       ;DISPATCH VIA TABLE\r
+       CAIN    T,200000;       MOVE?\r
+       AOJA    V,INNER\r
+       CAIN    T,270000;       ADD?\r
+       JRST    ADDOP\r
+       CAIN    T,221000;       IMULI?\r
+       AOJA    V,LOOP\r
+       CAIE    T,220000;       IMUL?\r
+       JRST    LOAD4A;         NOTA\r
+INNER: HRRZ    T,@X;           GET ADDRESS\r
+       TRZE    T,770000;       ZERO TAG?\r
+       SOJA    T,CONPOL;       NO, CONSTANT POOL\r
+       SUB     T,PT1;          SUBTRACT INDUCTION NUMBER\r
+       ASH     T,1\r
+       SOS     T;              FORM INDUCTION POINTER\r
+       HRRM    T,@X\r
+       HLRZ    T,@X\r
+       ADDI    T,P\r
+       HRLM    T,@X\r
+       AOJA    V,LOOP\r
+\r
+\fCONPOL:       ADD     T,ITC;  CONSTANT BASE\r
+       HRRM    T,@X\r
+       AOJA    V,LOOP\r
+\r
+ADDOP: HRRZ    T,@X\r
+       TRZE    T,770000\r
+       SOJA    T,CONPOL\r
+SKIPIN:        AOJA    V,LOOP\r
+\r
+PJTABL:        JRST    DWFS            ;PUSHJ 17,0\r
+       AOSA    PT1             ;INCREMENT DO COUNT\r
+       SOSA    PT1;            DECREMENT DO COUNT\r
+       SKIPA   W,[EXP DOINT.]\r
+       MOVEI   W,DOEND.\r
+       HRRM    W,@X\r
+       AOJA    V,SKIPIN        ;SKIP A WORD\r
+\r
+DWFS:  MOVEI   W,DWFS.\r
+       HRRM    W,@X\r
+       AOS     V\r
+       TLO     N,SYDAT\r
+       PUSHJ   P,PROC;         PROCESS THE TAG\r
+       JRST    LOAD4A          ;DATA STATEMENT BELOW CODE TOP\r
+       JRST    LOOP            ;PROPER RETURN\r
+\r
+DOINT.:        POP     P,V;            GET ADDRESS OF INITIAL VALUE\r
+       PUSH    P,(V);          STORE INDUCTION VARIABLE\r
+       AOS     V\r
+       PUSH    P,V;            INITIAL ADDRESS\r
+       JRST    (V)\r
+\r
+DOEND.:        HLRZ    T,@(P)\r
+       ADDM    T,-2(P);        INCREMENT\r
+       HRRZ    T,@(P);         GET FINAL VALUE\r
+       CAMGE   T,-2(P);        END CHECK\r
+       JRST    DODONE;         WRAP IT UP\r
+       POP     P,(P);          BACK UP POINTER\r
+       JRST    @(P)\r
+\r
+\fDODONE:       POP     P,-1(P);        BACK UP ADDRESS\r
+       POP     P,-1(P)\r
+       JRST    CPOPJ1          ;RETURN\r
+\r
+WRAP:  MOVE    W,ENC;          NUMBER OF CONSTANTS\r
+       ADD     W,ITC;          CONSTANT BASE\r
+       MOVEI   C,(W);          CHAIN\r
+       HRRM    C,@X\r
+       MOVEI   V,(W);          READY TO GO\r
+       JRST    ENDTP1\r
+\r
+DODON: TLZ     N,RCF!SYDAT!DZER        ;DATA STATEMENT FLAGS\r
+       MOVE    W,PTEMP         ;TOP OF PROG\r
+       ADDI    W,(X)           ;+OFFSET\r
+       MOVE    C,COMBAS        ;TOP OF DATA\r
+       ADDI    C,(X)           ;+OFFSET\r
+SECZER:        CAML    W,C             ;ANY DATA TO ZERO?\r
+       JRST    @SDS            ;NO, DO DATA STATEMENTS\r
+       CAML    W,SDS           ;IS DATA BELOW DATA STATEMENTS?\r
+       TLO     F,FULLSW        ;NO, INDICATE OVERFLO\r
+       TLNN    F,FULLSW+SKIPSW ;SHOULD WE ZERO?\r
+       SETZM   (W)             ;YES, DO SO\r
+       TLON    N,DZER          ;GO BACK FOR MORE?\r
+       AOJA    W,SECZER        ;YES, PLEASE\r
+       CAMLE   C,SDS           ;ALL DATA BELOW DATA STATEMENTS?\r
+       MOVE    C,SDS           ;ALL ZEROED DATA MUST BE\r
+       HRLI    W,-1(W)         ;SET UP BLT POINTER TO ZERO DATA\r
+       TLNN    F,FULLSW+SKIPSW ;SHOULD WE ZERO?\r
+       BLT     W,-1(C)         ;YES, DO SO\r
+       JRST    @SDS            ;GO DO DATA STATEMENTS\r
+\r
+\fDREAD:        TLNE    N,RCF;          NEW REPEAT COUNT NEEDED\r
+       JRST    FETCH;          NO\r
+       MOVE    W,LTC\r
+       MOVEM   W,LTCTEM\r
+       MOVE    W,@LTC;         GET A WORD\r
+       HLRZM   W,RCNT;         SET REPEAT COUNT\r
+       HRRZM   W,WCNT;         SET WORD COUNT\r
+       POP     W,(W);          SUBTRACT ONE FROM BOTH HALFS\r
+       HLLM    W,@LTC;         DECREMENT REPEAT COUNT\r
+       AOS     W,LTC;          STEP READOUT\r
+       TLO     N,RCF\r
+FETCH: MOVE    W,@LTC\r
+       AOS     LTC\r
+       SOSE    WCNT\r
+       POPJ    P,;\r
+       SOSN    RCNT\r
+       JRST    DOFF.\r
+       MOVE    V,LTCTEM;       RESTORE READOUT\r
+       MOVEM   V,LTC\r
+DOFF.: TLZ     N,RCF;          RESET DATA REPEAT FLAG\r
+       POPJ    P,;\r
+\r
+DWFS.: MOVE    T,(P)\r
+       AOS     (P)\r
+       MOVE    T,(T);          GET ADDRESS\r
+       HLRZM   T,DWCT;         DATA WORD COUNT\r
+       HRRES   T\r
+       ADD     T,W;            OFFSET\r
+       ADDI    T,(X);          LOADER OFFSET\r
+DWFS.1:        PUSHJ   P,DREAD         ;GET A DATA WORD\r
+       CAML    T,SDS           ;BELOW BEGINNING OF DATA STATEMENTS\r
+       TLO     F,FULLSW        ;YES, INDICATE OVERFLO\r
+       TLNN    F,FULLSW+SKIPSW ;LOAD THE NEXT DATA ITEM?\r
+       MOVEM   W,(T)           ;YES, STORE IT\r
+       AOS     T\r
+       SOSE    W,DWCT;         STEP DOWN AND TEST\r
+       JRST    DWFS.1          ;ONE MORE TIME, MOZART BABY!\r
+       POPJ    P,;\r
+\r
+\r
+\f;LITERAL TABLE\r
+\r
+LITS:  LIT\r
+       VAR\r
+CT1:   0               ;TEMP FOR C\r
+LTC:   0\r
+ITC:   0\r
+ENC:   0\r
+WCNT:  0               ;DATA WORD COUNT\r
+RCNT:  0               ;DATA REPEAT COUNT\r
+\r
+LTCTEM:        0               ;TEMP FOR LTC\r
+DWCT:  0               ;DATA WORD COUNT\r
+IFE L,<\r
+LDEND: END     LD\r
+       >\r
+IFN L,<\r
+LDEND:\r
+LODMAK:        MOVEI A,LODMAK\r
+       MOVEM A,137\r
+       INIT 17\r
+       SIXBIT /DSK/\r
+       0\r
+       HALT\r
+       ENTER LMFILE\r
+       HALT\r
+       OUTPUT [IOWD 1,LMLST    ;OUTPUT LENGTH OF FILE\r
+               0]\r
+       OUTPUT LMLST\r
+       STATZ 740000\r
+       HALT\r
+       RELEASE\r
+       CALL [SIXBIT /EXIT/]\r
+\r
+LMFILE:        SIXBIT /LISP/\r
+       SIXBIT /LOD/\r
+       0\r
+       0\r
+\r
+LMLST: IOWD LODMAK+1-LD,137\r
+       0\r
+\r
+       END LODMAK>\r
diff --git a/src/loader.v25 b/src/loader.v25
new file mode 100644 (file)
index 0000000..40bec91
--- /dev/null
@@ -0,0 +1,3168 @@
+       SUBTTL  DICK GRUEN: V25 3 AUG 68\r
+\r
+\r
+L==1                   ;L=1 MEANS THE LISP LOADER\r
+IFNDEF L,<L=0>\r
+\r
+IFNDEF HE,<HE=0>\r
+IFE HE-1,<K=1>         ;HE=1 IS HAND EYE 1K LOADER\r
+IFE HE-2,<K=0>         ;HE=2 IS HAND-EYE FORTRAN LOADER\r
+;K=1                   ;K=1  MEANS 1KLOADER\r
+IFNDEF K,<K=0>         ;K=0  MEANS F4 LOADER\r
+\r
+STANSW=1               ;GIVES STANFORD FEATURES\r
+IFNDEF STANSW,<STANSW=0>\r
+IFN STANSW,<   LDAC=1\r
+               EXPAND=1\r
+               BLTSYM=1\r
+               PP=1\r
+               RPGSW=1\r
+               FAILSW=1>\r
+IFN L,<        RPGSW=0\r
+       BLTSYM=0\r
+       LDAC=0>\r
+\r
+UTAHSW=1               ;NUMERIC PPN'S, BUT OTHERWISE = STANSW=1.\r
+IFNDEF UTAHSW,<UTAHSW=0>\r
+\r
+;FAILSW=1              ;MEANS INCLUDE PROVISIONS FOR SPECIAL FAIL FIXUPS\r
+IFNDEF FAILSW,<FAILSW=0>\r
+\r
+;RPGSW=1               ;MEANS RPG FEATURE\r
+IFNDEF RPGSW,<RPGSW=0>\r
+;LDAC=1                        ;MEANS LOAD CODE INTO ACS\r
+IFNDEF LDAC,<LDAC=0>\r
+\r
+;BLTSYM=1              ;MOVE SYMBOL TABLE DOWN TO END OF PROG\r
+IFNDEF BLTSYM,<BLTSYM=0>\r
+\r
+;EXPAND=1              ;FOR AUTOMATIC CORE EXPANSION\r
+IFNDEF EXPAND,<        IFN K,<EXPAND=0>\r
+               IFE K,<EXPAND=1>>\r
+\r
+;PP=1                  ;ALLOW PROJ-PROG #\r
+IFNDEF PP,<PP=0>\r
+IFN HE,<RPGSW=0\r
+       PP=0\r
+       LDAC=0\r
+       EXPAND=1\r
+       >\r
+\r
+;CHN5=0                        ;IF CHAIN WHICH DOESN'T SAVES JOB41\r
+IFNDEF CHN5,<CHN5=1>\r
+\r
+IFE K,<        TITLE   LOADER - LOADS MACROX AND SIXTRAN FOUR>\r
+IFN K,<        TITLE   1KLOAD - LOADS MACROX>\r
+\f;ACCUMULATOR ASSIGNMENTS\r
+       F=0             ;FLAGS IN LH, SA IN RH\r
+       N=1             ;PROGRAM NAME POINTER\r
+       X=2             ;LOADER OFFSET\r
+       H=3             ;HIGHEST LOC LOADED\r
+       S=4             ;UNDEFINED POINTER\r
+       R=5             ;RELOCATION CONSTANT\r
+       B=6             ;SYMBOL TABLE POINTER\r
+       D=7\r
+       T=10\r
+       V=T+1\r
+       W=12            ;VALUE\r
+       C=W+1           ;SYMBOL\r
+       E=C+1           ;DATA WORD COUNTER\r
+       Q=15            ;RELOCATION BITS\r
+       A=Q+1           ;SYMBOL SEARCH POINTER\r
+       P=17            ;PUSHDOWN POINTER\r
+;FLAGS F(0 - 17)\r
+       CSW==1                  ;ON - COLON SEEN\r
+       ESW==2                  ;ON - EXPLICIT EXTENSION IDENT.\r
+       SKIPSW==4               ;ON - DO NOT LOAD THIS PROGRAM\r
+       FSW==10                 ;ON - SCAN FORCED TO COMPLETION\r
+       FCONSW==20              ;ON - FORCE CONSOLE OUTPUT\r
+       ASW==100                ;ON - LEFT ARROW ILLEGAL\r
+       FULLSW==200             ;ON - STORAGE EXCEEDED\r
+       SLIBSW==400             ;ON - LIB SEARCH IN THIS PROG\r
+       DSYMSW==1000            ;ON - LOAD WITH SYMBOLS FOR DDT\r
+       REWSW==2000             ;ON - REWIND AFTER INIT\r
+       LIBSW==4000             ;ON - LIBRARY SEARCH MODE\r
+       F4LIB==10000            ;ON - F4 LIBRARY SEARCH LOOKUP\r
+       ISW==20000              ;ON - DO NOT PERFORM INIT\r
+       SYMSW==40000            ;ON - LOAD LOCAL SYMBOLS\r
+       DSW==100000             ;ON - CHAR IN IDENTIFIER\r
+       NSW==200000             ;ON - SUPPRESS LIBRARY SEARCH\r
+       SSW==400000             ;ON - SWITCH MODE\r
+;FLAGS N(0 - 17)\r
+       ALLFLG==1               ;ON - LIST ALL GLOBALS\r
+       ISAFLG==2               ;ON - IGNORE STARTING ADDRESSES\r
+       COMFLG==4               ;ON - SIZE OF COMMON SET\r
+IFE K,<        F4SW==10                ;F4 IN PROGRESS\r
+       RCF==20                 ;READ DATA COUNT\r
+       SYDAT==40               ;SYMBOL IN DATA>\r
+       SLASH==100              ;SLASH SEEN\r
+IFE K,<        BLKD1==200              ;ON- FIRST BLOCK DATA SEEN\r
+       PGM1==400               ;ON FIRST F4 PROG SEEN\r
+       DZER==1000              ;ON - ZERO SECOND DATA WORD>\r
+       EXEQSW==2000            ;IMMEDIATE EXECUTION\r
+       DDSW==4000              ;GO TO DDT\r
+IFN RPGSW,<RPGF==10000         ;IN RPG MODE>\r
+       AUXSWI==20000           ;ON - AUX. DEVICE INITIALIZED\r
+       AUXSWE==40000           ;ON - AUX. DEVICE ENTERED\r
+IFN PP,<PPSW==100000           ;ON - READING PROJ-PROG #\r
+       PPCSW==200000           ;ON - READING PROJ #>\r
+IFN FAILSW,<HSW==400000                ;USED IN BLOCK 11 POLISH FIXUPS>\r
+\fLOC   137\r
+OCT 25         ;VERSION #\r
+RELOC\r
+       MLON\r
+       SALL\r
+\r
+\r
+\r
+;MONITOR LOCATIONS IN THE USER AREA\r
+\r
+       JOBPRO==140             ;PROGRAM ORIGIN\r
+       JOBBLT==134             ;BLT ORIGIN\r
+       JOBCHN==131             ;RH = PROG BREAK OF FIRST BLOCK DATA\r
+                               ;LH = PROG BREAK OF FIRST F4 PROG\r
+\r
+;CALLI DEFINITIONS\r
+\r
+CDDTOUT==3     ;CALLI DDTOUT\r
+CEXIT==12      ;CALLI EXIT\r
+CDDTGT==5      ;CALLI DDTGT\r
+CSETDDT==2     ;CALLI SETDDT\r
+\r
+;LENGTH OF PUSHDOWN LIST FOR POLISH FIXUPS\r
+\r
+PPDL==60\r
+\fIFN RPGSW,<\r
+RPGSET:        CALLI 0\r
+       INIT 17,1       ;SET UP DSK\r
+       SIXBIT /DSK/\r
+       XWD 0,CTLIN\r
+       JRST NUTS\r
+       MOVE [SIXBIT /QQLOAD/]  ;NAME OF COMMAND FILE\r
+       MOVEM CTLNAM\r
+       MOVSI (SIXBIT /RPG/)    ;AND EXT\r
+       MOVEM CTLNAM+1\r
+       SETZM CTLNAM+3\r
+       LOOKUP 17,CTLNAM        ;THERE?\r
+       JRST NUTS       ;NO\r
+       INIT 16,16      ;GET SET TO DELETE QQLOAD.RPG\r
+       SIXBIT /DSK/\r
+       0\r
+       JRST LD         ;GIVE UP COMPLETELY\r
+       SETZM CTLNAM+3\r
+       HLLZS CTLNAM+1  ;CLEAR OUT EXTRA JUNK\r
+       LOOKUP 16,CTLNAM\r
+       JRST LD\r
+       RENAME 16,ZEROS ;DELETE IT\r
+       JFCL            ;IGNORE IF IT WILL NOT GO\r
+       RELEASE 16,0    ;GET RID OF THIS DEVICE\r
+       SETZM NONLOD    ;THIS IS NOT A CONTINUATION\r
+RPGS3: MOVEI CTLBUF\r
+       MOVEM JOBFF     ;SET UP BUFFER\r
+       INBUF 17,1\r
+       MOVEI [ASCIZ /\r
+LOADING\r
+/]             ;PRINT MESSAGE THAT WE ARE STARTING\r
+       CALLI CDDTOUT\r
+       SKIPE NONLOD    ;CONTINUATION?\r
+       JRST RPGS2      ;YES, SPECIAL SETUP\r
+       MOVSI R,F.I     ;NOW SO WE CAN SET FLAG\r
+       BLT R,R\r
+       TLO N,RPGF\r
+       JRST CTLSET     ;SET UP TTY\r
+RPGS1: PUSHJ P,[TLNE F,ESW     ;HERE FROM FOO* COMMAND, STORE NAME\r
+               JRST LDDT3      ;SAVE EXTENSION\r
+               TLZE F,CSW!DSW   ;OR AS NAME\r
+               MOVEM W,DTIN\r
+               POPJ P,]\r
+       MOVEM 0,SVRPG#  ;SAVE 0 JUST IN CASE\r
+       SETZM NONLOD#   ;DETERMINE IF CONTINUATION\r
+       MOVEI 0,2(B)    ;BY SEEING IF ANY SYMBOLS LOADED\r
+       CAME 0,JOBREL\r
+       SETOM NONLOD    ;SET TO -1 AND SKIP CALLI\r
+       MOVE 0,ILD1\r
+       MOVEM 0,RPG1\r
+       INIT 17,1\r
+RPG1:  0\r
+       XWD 0,CTLIN\r
+       JSP A,ILD5\r
+       LOOKUP 17,DTIN  ;THE FILE NAME\r
+       JRST ILD9\r
+       JRST RPGS3\r
+\r
+RPGS2: MOVSI 0,RPGF    ;SET FLAG\r
+       IORM 0,F.C+N\r
+       TLO N,RPGF\r
+       MOVE 0,SVRPG\r
+       JRST LD2Q       ;BACK TO INPUT SCANNING\r
+>\r
+\fIFN HE, <\r
+.LOAD: SETZM ERRFLG;           HAND-EYE LOADER INITIALIZATION\r
+       SETZM RESET\r
+       MOVSI R,F.I+1;          INITIALIZE ACS\r
+       AOS R\r
+       BLT R,R\r
+       OR F,F.I\r
+       MOVE B,JOBSYM;          SET UP SYMBOL TABLE POINTER\r
+       HLRZ H,JOBSA\r
+       HLR R,JOBSA;            LOAD STARTING AT PROGRAM BREAK\r
+       MOVS E,R;               CLEAR CORE\r
+       HRRI E,1(R)\r
+       SETZM (R)\r
+       BLT E,(B)\r
+       PUSHJ P,FIXNAM\r
+       MOVE S,JOBUSY\r
+       SKIPN S\r
+       HRRZ S,B\r
+       SOS S\r
+       SOS B\r
+       MOVEM P,SAVP#;          SAVE SUBR POINTER\r
+       JRST BEG;               FINISH INIT\r
+\r
+F.I:   XWD SYMSW,0;            INITIAL F\r
+       XWD ALLFLG+ISAFLG+COMFLG,0;     INITIAL N\r
+       XWD V,0;                INITIAL X - LOAD IN PLACE\r
+       Z\r
+       Z\r
+       XWD W,0;                INITIAL R\r
+       Z\r
+.AC:   BLOCK 17\r
+LNKSAV:        BLOCK 21\r
+\r
+LD5B1: HALT\r
+       >\r
+\fIFN HE,<\r
+.PRMAP:        MOVEM 16,.AC+16;        PRINT STORAGE MAP\r
+       HRRZI 16,.AC;           SAVE ACS\r
+       BLT 16,.AC+15\r
+       MOVE F,F.I+F;           SET UP ACS AS NEEDED\r
+       MOVE N,F.I+N\r
+       HLRZ R,JOBSA\r
+       MOVE S,JOBUSY\r
+       SOS S\r
+       MOVE B,JOBSYM\r
+       SOS B\r
+       INIT 2,1;               INITIALIZE LPT\r
+       SIXBIT /LPT/\r
+       XWD ABUF,0\r
+       JSP A,ILD5\r
+       MOVEI E,AUX\r
+       MOVEM E,JOBFF\r
+       OUTBUF 2,1\r
+       TLO N,AUXSWI\r
+       PUSHJ P,PRMAP;  PRINT MAP\r
+       RELEASE 2,\r
+       HRLZI 16,.AC\r
+       BLT 16,16\r
+       POPJ P,\r
+       >\r
+\fIFN HE,<\r
+ILD:   MOVEI W,BUF1;           INITIALIZE FILE LOADING\r
+       MOVEM W,JOBFF\r
+       TLOE F,ISW\r
+       JRST ILD6\r
+       INIT 1,14\r
+       SIXBIT /DSK/\r
+       Z BUFR\r
+       JSP A,ILD5;             ERROR RETURN\r
+ILD6:  LOOKUP 1,DTIN;          LOOKUP FILE\r
+       JRST ILD3\r
+       INBUF 1,2\r
+       MOVE 15,..NAME\r
+       MOVEI 12,-2(S)\r
+       SUBI S,2\r
+       POP B,2(12)\r
+       POP B,1(12)\r
+       MOVE 12,.NAME;          RIGHT HALF VALUE IS LINK\r
+       HRL 12,R;               LEFT HALF IS RELOCATION\r
+       MOVEM 12,2(B)\r
+       MOVEM 15,1(B)\r
+       HRRZM B,.NAME\r
+       POPJ P,\r
+\r
+ILD3:  PUSHJ P,ILDX;           LOOKUP FAILURE\r
+       JRST ILD9;              NO HOPE\r
+       JRST ILD6;              TRY AGAIN\r
+\r
+ILDX:  MOVE W,DTIN2\r
+       CAMN W,[SIXBIT /  H HE/]\r
+       POPJ P,;                IF H,HE THERE IS NO HOPE\r
+       CAMN W,[SIXBIT /  1  3/]\r
+       JRST [  MOVE W,DTIN;    CHECK IF HELIB[1,3]\r
+               CAME W,[SIXBIT /HELIB/]\r
+               POPJ P,;                YES - TRY BACKUP FILE\r
+               JRST IX]\r
+IX:    MOVE W,[SIXBIT /  H HE/]\r
+       MOVEM W,DTIN2;          NOT H,HE - TRY LIBRARY AREA\r
+       AOS (P);                TRY AGAIN\r
+       POPJ P,\r
+       >\r
+\fIFN HE,<\r
+FIXNAM:        HLRE T,B;               GET END OF PROGRAM NAME LIST\r
+       MOVMS T\r
+       ADDI T,(B)\r
+       SUBI T,3\r
+       HLRZ D,2(T)\r
+       JUMPE D,.+3\r
+       ADD T,D\r
+       JRST .-3\r
+       HRRI N,2(T)\r
+       POPJ P,\r
+\r
+LD2:   SKIPN RESET\r
+       JRST LD2Q-2\r
+       CAMN B,F.C+B\r
+       CAME S,F.C+S\r
+       CAIA\r
+       JRST .+4\r
+       MOVEI T,[ASCIZ /\r
+CANNOT RECOVER/]\r
+       CALLI T,CDDTOUT\r
+       CALLI CEXIT\r
+       MOVE T,.NAME;           REMOVE NAME\r
+       HRRZ T,2(T)\r
+       MOVEM T,.NAME\r
+       MOVEI T,1(S)\r
+       ADDI S,2\r
+       PUSH B,1(T)\r
+       PUSH B,2(T)\r
+       AOSA ERRFLG#\r
+       PUSHJ P,LDF\r
+LD2Q:  MOVSI T,F.C\r
+       BLT T,B\r
+>\r
+\fIFN HE,<\r
+GETF:  MOVE P,SAVP;            RESTORE SUBR POINTER\r
+       SKIPN RESET\r
+       JRST GETF4\r
+       SETZM RESET;            RECOVERABLE ERROR\r
+       PUSHJ P,ILDX;           CHECK FOR ANOTHER COPY\r
+       JRST GETF4;             NO\r
+       MOVEI T,[ASCIZ /_\r
+/]\r
+       CALLI T,CDDTOUT\r
+       JRST LD2Q-1\r
+\r
+GETF4: TLNE F,LIBSW\r
+       JRST GETFY+1;           LIBRARY MODE - CONTINUE\r
+       PUSHJ P,.GETF;          GET NEXT FILE\r
+       SETZM 13\r
+       LSHC 13,6\r
+       CAIE 13,"/"\r
+       JRST GETF1\r
+       ROT 14,6;               FIRST CHAR SLASH - DECODE SWITCH\r
+       CAIN 14,"D"\r
+       JRST .DDT\r
+       CAIN 14,"S"\r
+       JRST [  TLO F,SYMSW\r
+               JRST GETF4+2]\r
+       CAIN 14,"W"\r
+       JRST [  TLZ F,SYMSW+DSYMSW\r
+               JRST GETF4+2]\r
+       CAIN 14,'C'\r
+       JRST GETF4+2;           SAVE /C DECODING FOR LATER\r
+       JSP A,ERRPT8;           UNKNOWN SWITCH - ERROR\r
+       SIXBIT /SYNTAX%/\r
+       JRST LD2\r
+\r
+.DDT:  MOVSI W,444464; LOAD DDT\r
+       MOVEM W,DTIN\r
+       MOVE W,[SIXBIT /  1  3/]\r
+       MOVEM W,DTIN2\r
+       JRST LD2Q-1\r
+       >\r
+\fIFN HE,<\r
+GETF1: LSHC 13,-6\r
+       JUMPE 14,GETF2;         FILE NAME ZERO - FINISHED\r
+       OR 15,[XWD 600000,0]\r
+       SKIPN 13,.NAME#\r
+       JRST GETF3;             NO FILES LOADED\r
+       CAMN 15,2(13);          SEARCH FOR FILE NAME\r
+       JRST GETF4+1;           FOUND - DO NOT LOAD\r
+       HRRZ 13,1(13)\r
+       JUMPN 13,.-3\r
+GETF3: MOVEM 15,..NAME#\r
+       MOVEM 14,DTIN;          SET UP ENTER BLOCK\r
+       MOVEM 16,DTIN2\r
+       JRST LD2Q-1\r
+\r
+GETF2: MOVEI W,3;              END OF FILES - SEARCH LIBRARIES\r
+       MOVEM W,CNT#\r
+       SKIPA\r
+GETFY: TLZ F,SYMSW+DSYMSW;     TURN OFF LOCAL SYMBOLS AFTER HELIB\r
+       JUMPGE S,GETF11\r
+       TLO F,LIBSW+SKIPSW\r
+       MOVE W,[SIXBIT /  1  3/]\r
+       MOVEM W,DTIN2\r
+       SOSGE W,CNT\r
+       JRST GETF11\r
+       MOVE W,.TAB(W)\r
+       MOVEM W,DTIN\r
+       JRST LD2Q-1\r
+\r
+.TAB:  SIXBIT /JOBDAT/\r
+       SIXBIT /LIB40/\r
+       SIXBIT /HELIB/\r
+\r
+GETF11:        PUSHJ P,SAS1;           TERMINATE LOADING\r
+       RELEASE 1,\r
+       PUSHJ P,BLTSET\r
+IFN FAILSW,<\r
+       MOVE R,[XWD LINKTB,LNKSAV]\r
+       BLT R,LNKSAV+20>;       SAVE LINK TABLE\r
+       MOVE R,JOBDDT\r
+       CALLI R,CSETDDT\r
+       HLRE 16,S\r
+       MOVMS 16\r
+       LSH 16,-1;              RIGHT HALF AC16 IS # UNDEF SYMBS\r
+       HRL 16,ERRFLG\r
+       POPJ P,\r
+>\r
+\fIFE HE,<\r
+;MONITOR LOADER CONTROL\r
+\r
+BEG:\r
+IFE L,<\r
+LD:    IFN RPGSW,<SKIPA        ;NORMAL INITIALIZE\r
+       JRST RPGSET     ;SPECIAL INIT>\r
+       HLLZS 42        ;GET RID OF ERROR COUNT IF NOT IN RPG MODE\r
+       CALLI   0               ;INITIALIZE THIS JOB\r
+NUTS:  MOVSI     R,F.I         ;SET UP INITIAL ACCUMULATORS\r
+       BLT     R,R             \r
+>\r
+IFN L,<\r
+LD:    HRRZM 0,LSPXIT#         ;RETURN ADDRESS FOR LISP\r
+       MOVEI 0,0\r
+       HRRZM R,RINITL#\r
+       CALLI 0\r
+>\r
+CTLSET:        INIT    3,1             ;INITIALIZE CONSOLE\r
+       SIXBIT    /TTY/\r
+       XWD     BUFO,BUFI\r
+CALLEX:        CALLI   CEXIT           ;DEVICE ERROR, FATAL TO JOB\r
+       MOVEI     E,TTY1\r
+       MOVEM     E,JOBFF\r
+       INBUF     3,1\r
+       OUTBUF    3,1           ;INITIALIZE OUTPUT BUFFERS\r
+       OUTPUT    3,                    ;DO INITIAL REDUNDANT OUTPUT\r
+IFE L,<        HRRZ    B,JOBREL        ;PICK UP CORE BOUND\r
+       SKIPE   JOBDDT          ;DOES DDT EXIST?\r
+       HRRZ    B,JOBSYM        ;USED BOTTOM OF SYMBOL TABLE INSTEAD\r
+>\r
+IFN L,<        MOVE B,JOBSYM>\r
+       SUB     B,SE3           ;INITIALIZE SYMBOL TABLE POINTER\r
+       CAILE     H,1(B)                ;TEST CORE ALLOCATION\r
+       CALLI   CEXIT           ;INSUFFICIENT CORE, FATAL TO JOB\r
+IFE L,<        MOVS    E,X             ;SET UP BLT POINTER\r
+       HRRI    E,1(X)>\r
+IFN L,<        MOVS E,H\r
+       HRRI E,1(H)>\r
+       SETZM     -1(E)                 ;ZERO FIRST WORD\r
+       BLT     E,(B)           ;ZERO CORE UP TO THE SYMBOL AREA\r
+       HRRZ    S,B             ;INITIALIZE UNDEF. POINTER\r
+       HRR     N,B             ;INITIALIZE PROGRAM NAME POINTER\r
+IFE L,<HRRI    R,JOBPRO        ;INITIALIZE THE LOAD ORIGIN>\r
+       MOVE    E,COMM          ;SET .COMM. AS THE FIRST PROGRAM\r
+       MOVEM     E,1(B)                ;STORE IN SYMBOL TABLE\r
+       HRRZM     R,2(B)                ;STORE COMMON ORIGIN\r
+       >\r
+IFN HE,<BEG:>\r
+       MOVEI     E,F.C         ;INITIALIZE STATE OF THE LOADER\r
+       BLT     E,B.C\r
+       SETZM   MDG             ;MULTIPLY DEFINED GLOBAL COUNT\r
+IFE HE,<\r
+IFN FAILSW,<   SETZM LINKTB    ;ZERO OUT TE LINK TABLE\r
+       MOVE W,[XWD LINKTB,LINKTB+1]\r
+       BLT W,LINKTB+20 ;BEFORE STARTING>\r
+IFE L,<        MOVSI   W,254200        ;STORE HALT IN JOB41\r
+       MOVEM   W,JOB41(X)>     ;...\r
+IFN L,<        MOVE W,JOBREL\r
+       HRRZM W,OLDJR#>>\r
+IFN HE,<IFN FAILSW,<\r
+       MOVE W,[XWD LNKSAV,LINKTB]\r
+       BLT W,LINKTB+20\r
+       >>\r
+IFN STANSW,<SETZM CURNAM#>\r
+IFN FAILSW,<   MOVEI W,440000  ;SET UP THE SPECIAL BITS OF HEADNUM (ADD+POLISH)\r
+       MOVEM W,HEADNM#\r
+       SETZM POLSW#    ;SWITCH SAYS WE ARE DOING POLISH\r
+       MOVEI W,PDLOV   ;ENABLE FOR PDL OV\r
+       MOVEM W,JOBAPR\r
+       MOVEI W,200000\r
+       CALLI W,16\r
+\r
+EXTERNAL JOBAPR        >\r
+IFN LDAC!BLTSYM,<MOVEI W,20    ;SET UP SPACE TO SAVE FOR ACS AND\r
+       MOVEM W,KORSP#  ;USER DEFINITIONS WITH DDT>\r
+\r
+IFN HE,<JRST LD2Q>\r
+\fIFE HE,<\r
+IFN RPGSW,<JRST LD2Q>\r
+LD2:   IFN RPGSW,<MOVSI B,RPGF ;HERE ON ERRORS, TURN OFF RPG\r
+       ANDCAM B,F.C+N  ;IN CORE>\r
+;LOADER SCAN FOR FILE NAMES\r
+\r
+LD2Q:  MOVSI     B,F.C         ;RESTORE ACCUMULATORS\r
+       BLT     B,B\r
+       MOVE    P,PDLPT         ;INITIALIZE PUSHDOWN LIST\r
+       SETZM     BUFI2         ;CLEAR INPUT BUFFER POINTER\r
+IFE PP,<       SETZM     ILD1          ;CLEAR INPUT DEVICE NAME>\r
+IFN PP,<       MOVSI T,(SIXBIT /DSK/)  ;ASSUME DSK\r
+       MOVEM T,ILD1\r
+       SETZM OLDDEV#   ;TO MAKE IT GO BACK AFTER /D FOR LIBSR>\r
+       SETZM     DTIN          ;CLEAR INPUT FILE NAME\r
+IFN PP,<SETZM  PPN#            ;CLEAR INPUT PROJ-PROG #>\r
+\r
+LD2B:  RELEAS    1,                    ;RELEASE BINARY INPUT DEVICE\r
+IFN RPGSW,<    TLNE N,RPGF     ;NOT IF DOING RPG\r
+       JRST LD2BA>\r
+       MOVEI     T,"*"\r
+       IDPB    T,BUFO1         ;OUTPUT ASTERISK TO START INPUT\r
+       OUTPUT    3,\r
+LD2BA: TLZ     F,FULLSW+ASW+ISW+CSW+ESW+SKIPSW+SLIBSW+REWSW\r
+       TLNE    F,LIBSW         ;WAS LIBRARY MODE ON?\r
+       TLO     F,SKIPSW        ;YES, NORMAL MODE IS SKIPPING\r
+\r
+LD2D:  IFN PP,<SETZM PPN       ;DO NOT REMEMBER PPNS FOR NOW\r
+LD2DB: SKIPE W,OLDDEV  ;RESET DEVICE IF NEEDED\r
+       CAMN W,ILD1     ;IS IT SAME?\r
+       JRST LD2DA      ;YES, FORGET IT\r
+       TLZ F,ISW+DSW+FSW+REWSW\r
+       MOVEM W,ILD1>\r
+LD2DA:\r
+IFN RPGSW,<    SETZM DTIN1     ;CLEAR EXTENSION>\r
+       MOVEI     W,0           ;INITIALIZE IDENTIFIER SCAN\r
+       MOVEI     E,6           ;INITIALIZE CHARACTER COUNTER\r
+       MOVE    V,LSTPT         ;INITIALIZE BYTE POINTER TO W\r
+       TLZ     F,SSW+DSW+FSW   ;LEAVE SWITCH MODE\r
+LD3:   IFN RPGSW,<TLNE N,RPGF  ;CHECK RPG FEATURE\r
+       JRST RPGRD>\r
+       SOSG BUFI2      ;DECREMENT CHARACTER COUNT\r
+       INPUT     3,                    ;FILL TTY BUFFER\r
+       ILDB    T,BUFI1         ;LOAD T WITH NEXT CHARACTER\r
+LD3AA: MOVE    Q,T\r
+       IDIVI     Q,11          ;TRANSLATE TO 4 BIT CODE\r
+       LDB     Q,LD8(A)                ;LOAD CLASSIFICATION CODE\r
+       CAIGE     Q,4           ;MODIFY CODE IF .GE. 4\r
+       TLNN    F,SSW           ;MODIFY CODE IF SWITCH MODE OFF\r
+       ADDI    Q,4             ;MODIFY CLASS. CODE FOR DISPATCH\r
+       HRRZ    A,LD3A(Q)               ;LOAD RH DISPATCH ENTRY\r
+       CAIL    Q,10            ;SKIP IF CORRECT DISPATCH ENTRY\r
+       HLRZ    A,LD3A-10(Q)    ;LOAD LH DISPATCH ENTRY\r
+       JRST    @A                      ;JUMP TO INDICATED LOCATION\r
+\r
+;COMMAND DISPATCH TABLE\r
+\r
+LD3A:  XWD     LD3,LD7B                ;IGNORED CHAR, BAD CHAR (SWITCH)\r
+       XWD     LD6A,LD6                ;</> OR <(>, LETTER (SWITCH)\r
+       XWD     LD5,LD6C                ;<:>, DIGIT (SWITCH ARG.)\r
+       XWD     LD5A,LD6D               ;<.>, ESCAPE SWITCH MODE <)>\r
+       XWD     LD5C,LD7                ;<=> OR <L. ARROW>, BAD CHAR.\r
+       XWD     LD5B,LD4                ;<,>, ALPHABETIC CHAR.\r
+       XWD     LD5D,LD4                ;<CR.>, NUMERIC CHAR.\r
+       XWD     LD5E1,LD7               ;<ALT MODE>, BAD CHAR. <)>\r
+\r
+IFN RPGSW,<RPGRD:      SOSG CTLIN+2    ;CHECK CHARACTER COUNT\r
+       JRST    [IN 17,0\r
+               JRST .+1        ;OK\r
+               STATO 17,740000\r
+               JRST LD2\r
+               JSP A,ERRPT\r
+               SIXBIT /ERROR WHILE READING COMMAND FILE%/\r
+               JRST LD2]\r
+       IBP CTLIN+1     ;ADVANCE POINTER\r
+       MOVE T,@CTLIN+1 ;AND CHECK FOR LINE #\r
+       TRNE T,1\r
+       JRST    [MOVNI T,5\r
+               ADDM T,CTLIN+2\r
+               AOS CTLIN+1\r
+               JRST RPGRD      ];GO READ AGAIN\r
+       LDB T,CTLIN+1   ;GET CHR\r
+       JRST LD3AA      ;PASS IT ON>\r
+       >\r
+\f;ALPHANUMERIC CHARACTER, NORMAL MODE\r
+IFE HE,<\r
+LD4:   SOJL    E,LD3           ;JUMP IF NO SPACE FOR CHAR IN W\r
+       SUBI    T,40            ;CONVERT FROM ASCII TO SIXBIT\r
+       IDPB    T,V             ;DEPOSIT CHAR OF IDENTIFIER IN W\r
+       TLO     F,DSW           ;SET IDENTIFIER FLAG\r
+       JRST    LD3             ;RETURN FOR NEXT CHARACTER\r
+\r
+;DEVICE IDENTIFIER DELIMITER <:>\r
+\r
+LD5:   PUSH    P,W             ;SAVE W\r
+       TLOE    F,CSW           ;TEST AND SET COLON FLAG\r
+       PUSHJ     P,LDF         ;FORCE LOADING\r
+       POP     P,W             ;RESTORE W\r
+       TLNE    F,ESW           ;TEST SYNTAX\r
+       JRST    LD7A            ;ERROR, MISSING COMMA ASSUMED\r
+       JUMPE     W,LD2D                ;JUMP IF NULL DEVICE IDENTIFIER\r
+       MOVEM     W,ILD1                ;STORE DEVICE IDENTIFIER\r
+IFN PP,<MOVEM W,OLDDEV ;WE HAVE A NEW ONE SO IGNORE OLD>\r
+       TLZ     F,ISW+DSW+FSW+REWSW     ;CLEAR OLD DEVICE FLAGS\r
+IFN PP,<SETZM  PPN             ;CLEAR OLD PP #>\r
+       JRST    LD2D            ;RETURN FOR NEXT IDENTIFIER\r
+\r
+;FILE NAME EXTENSION IDENTIFIER DELIMITER <.>\r
+\r
+LD5A:  TLOE    F,ESW           ;TEST AND SET EXTENSION FLAG\r
+       JRST    LD7A            ;ERROR, TOO MANY PERIODS\r
+       TLZE    F,CSW+DSW       ;SKIP IF NULL IDENT AND NO COLON\r
+       MOVEM     W,DTIN        ;STORE FILE IDENTIFIER\r
+       JRST    LD2D            ;RETURN FOR NEXT IDENTIFIER\r
+\r
+;INPUT SPECIFICATION DELIMITER <,>\r
+\r
+LD5B:\r
+IFN PP,<TLZE   N,PPCSW                 ;READING PP #?\r
+       JRST    [\r
+IFLE STANSW-UTAHSW,<   HRLM    D,PPN   ;STORE PROJ #\r
+               JRST    LD6A1]  ;GET PROG #>\r
+IFG STANSW-UTAHSW,<    PUSHJ   P,RJUST         ;RIGHT JUSTIFY W\r
+               HRLM    W,PPN   ;STORE PROJ NAME\r
+               JRST    LD2DB           ];GET PROG NAME>\r
+       PUSHJ   P,RBRA          ;CHECK FOR MISSING RBRA>\r
+       TLZN    F,FSW           ;SKIP IF PREV. FORCED LOADING\r
+       PUSHJ     P,FSCN2               ;LOAD (FSW NOT SET)\r
+       JRST    LD2D            ;RETURN FOR NEXT IDENTIFIER\r
+\r
+LD5B1: TLNE    F,ESW           ;TEST EXTENSION FLAG\r
+       JRST    LDDT3           ;EXPLICIT EXTENSION IDENTIFIER\r
+       TLZN    F,CSW+DSW               ;SKIP IF IDENT. OR COLON\r
+       POPJ    P,\r
+       MOVEM     W,DTIN                ;STORE FILE IDENTIFIER\r
+       JRST    LDDT2           ;ASSUME <.REL> IN DEFAULT CASE\r
+       >\r
+\f;OUTPUT SPECIFICATION DELIMITER <=> OR <LEFT ARROW>\r
+;OR PROJ-PROG # BRACKETS <[> AND <]>\r
+IFE HE,<\r
+LD5C:\r
+IFN RPGSW,<CAIN T,"@"  ;CHECK  FOR * COMMAND\r
+       JRST RPGS1>\r
+IFN PP,<CAIN   T,"["                   ;PROJ-PROG #?\r
+       JRST    [TLO    N,PPSW+PPCSW    ;SET FLAGS\r
+               MOVEM   W,PPNW#         ;SAVE W\r
+               MOVEM   E,PPNE#         ;SAVE E\r
+               MOVEM   V,PPNV#         ;SAVE V\r
+IFLE STANSW-UTAHSW,<JRST LD6A1-1]      ;READ NUMBERS AS SWITCHES >\r
+IFG STANSW-UTAHSW,<    JRST    LD2DB]>\r
+       CAIN    T,"]"                   ;END OF PP #?\r
+       JRST    [PUSHJ  P,RBRA          ;PROCESS RIGHT BRACKET\r
+               JRST    LD3             ];READ NEXT IDENT>\r
+       TLOE    F,ASW                   ;TEST AND SET LEFT ARROW FLAG\r
+       JRST    LD7A                    ;ERROR, MISPLACED LEFT ARROW\r
+       PUSHJ     P,LD5B1               ;STORE IDENTIFIER\r
+       TLZN    F,ESW                   ;TEST EXTENSION FLAG\r
+       MOVSI     W,554160              ;ASSUME <.MAP> IN DEFAULT CASE\r
+       MOVEM     W,DTOUT1              ;STORE FILE EXTENSION IDENTIFIER\r
+       MOVE    W,DTIN                  ;LOAD INPUT FILE IDENTIFIER\r
+       MOVEM     W,DTOUT               ;USE AS OUTPUT FILE IDENTIFIER\r
+IFN PP,<MOVE   W,PPN           ;PROJ-PROG #\r
+       MOVEM   W,DTOUT+3               ;...>\r
+       MOVE    W,ILD1                  ;LOAD INPUT DEVICE IDENTIFIER\r
+       MOVEM   W,LD5C1                 ;USE AS OUTPUT DEVICE IDENTIFIER\r
+IFN PP,<       SKIPE W,OLDDEV  ;RESTORE OLD\r
+       MOVEM W,ILD1>\r
+;INITIALIZE AUXILIARY OUTPUT DEVICE\r
+       TLZE    N,AUXSWI+AUXSWE         ;FLUSH CURRENT DEVICE\r
+       RELEASE 2,                      ;...\r
+       CALL    W,[SIXBIT ?DEVCHR?]     ;IS DEVICE A TTY?\r
+       TLNE    W,10                    ;...\r
+JRST   LD2D            ;YES, SKIP INIT\r
+       INIT    2,1                     ;INIT THE AUXILIARY DEVICE\r
+LD5C1: 0               ;AUXILIARY OUTPUT DEVICE NAME\r
+       XWD     ABUF,0                  ;BUFFER HEADER\r
+       JSP     A,ILD5                  ;ERROR RETURN\r
+       TLNE    F,REWSW                 ;REWIND REQUESTED?\r
+       CALL    2,[SIXBIT /UTPCLR/]             ;DECTAPE REWIND\r
+       TLZE    F,REWSW                 ;SKIP IF NO REWIND REQUESTED\r
+       MTAPE   2,1                     ;REWIND THE AUX DEV\r
+       MOVEI   E,AUX                   ;SET BUFFER ORIGIN\r
+       MOVEM     E,JOBFF\r
+       OUTBUF  2,1                     ;INITIALIZE SINGLE BUFFER\r
+       TLO     N,AUXSWI                        ;SET INITIALIZED FLAG\r
+       JRST    LD2D                    ;RETURN TO CONTINUE SCAN\r
+\r
+       >\r
+\fIFE HE,<\r
+;RIGHT SQUARE BRACKET (PROJ-PROG NUMBERS)\r
+IFN PP,<\r
+RBRA:  TLZN    N,PPSW          ;READING PP #?\r
+       POPJ    P,              ;NOPE, RETURN\r
+       TLZE    N,PPCSW         ;COMMA SEEN?\r
+       JRST    LD7A            ;NOPE, INDICATE ERROR\r
+IFLE STANSW-UTAHSW,<HRRM       D,PPN           ;STASH PROG NUMBER>\r
+IFG STANSW-UTAHSW,<PUSHJ       P,RJUST         ;RIGHT JUSTIFY W\r
+       HRRM    W,PPN   ;STASH PROG NAME>\r
+       MOVE    W,PPNW#         ;PICKUP OLD IDENT\r
+       MOVE    E,PPNE#         ;RESTORE CHAR COUNT\r
+       MOVE    V,PPNV#         ;RESTORE BYTE PNTR\r
+       POPJ    P,              ;TRA 1,4\r
+\r
+;RIGHT JUSTIFY W\r
+\r
+RJUST: JUMPE   W,LD7A          ;NOTHING TO RIGHT JUSTIFY\r
+       TRNE    W,77            ;IS W RJUSTED YET?\r
+       POPJ    P,              ;YES, TRA 1,4\r
+       LSH     W,-6            ;NOPE, TRY AGAIN\r
+       JRST    .-3             ;...>\r
+       >\r
+\fIFE HE,<\r
+;LINE TERMINATION <CARRIAGE RETURN>\r
+\r
+LD5D:\r
+IFN PP,<PUSHJ  P,RBRA          ;CHECK FOR UNTERMINATED PP #>\r
+       PUSHJ     P,FSCN                ;FORCE SCAN TO COMPLETION\r
+       JRST    LD2B            ;RETURN FOR NEXT LINE\r
+\r
+;TERMINATE LOADING <ALT MODE>\r
+\r
+LD5E:  SKIPE     D                     ;ENTER FROM G COMMAND\r
+       HRR     F,D             ;USE NUMERIC STARTING ADDRESS\r
+LD5E1:\r
+       PUSHJ     P,CRLF                ;START A NEW LINE\r
+       PUSHJ   P,SASYM         ;SETUP JOBSA,JOBFF,JOBSYM,JOBUSY\r
+IFN LDAC!BLTSYM,<HRRZ A,R              ;SET UP BLT OF ACS\r
+       ADDI A,(X)              ;END\r
+       ADD A,KORSP             ;ADD IN SPACE RESERVED\r
+       CAIL A,(S)\r
+IFN EXPAND,<JRST       [PUSHJ P,XPAND>\r
+                       PUSHJ   P,[\r
+IFE EXPAND,<                   JSP     A,ERRPT\r
+                               SIXBIT  /MORE CORE NEEDED#/>\r
+                               CALLI   CEXIT]\r
+IFN EXPAND,<           JRST .-1]>\r
+       HRRM R,BOTACS#          ;SAVE FOR LATER\r
+       HRRZ A,R                ;SET BLT\r
+       ADD A,X\r
+       HRL A,X\r
+       MOVE Q,A\r
+       BLT A,17(Q)>\r
+IFN BLTSYM,<HRRZ A,R   ;PLACE TO BLT TO\r
+       ADD A,KORSP\r
+       MOVE W,A        ;SAVE DEST\r
+       ADDI A,(X)      ;AFTER ADJUSTMENT\r
+       MOVE Q,S        ;UDEF PNTR\r
+       ADD Q,B         ;TOTAL UNDEFS AND DEFS IN LEFT\r
+       HLROS Q         ;NOW NEG IN RIGHT\r
+       MOVNS Q ;POSITIVE\r
+       ADDI Q,-1(A)    ;END OF BLT\r
+       HRLI A,1(S)     ;AND GET PLACE TO BLT FROM\r
+       SUBI W,1(S)     ;PREST LOC OF SYMBOL TABLE\r
+       ADDM W,JOBSYM(X)\r
+       ADDM W,JOBUSY(X)        ;ADJUST POINTERS\r
+       BLT A,(Q)       ;MOVE IT\r
+       SKIPN JOBDDT(X) ;IS DDT THERE?\r
+       JRST NODDT\r
+       SUBI Q,-1(X)\r
+       HRRM Q,JOBFF(X) ;RESTET JOBFF IF DDT IS IN\r
+       HRLM Q,JOBSA(X)\r
+NODDT:>\r
+       MOVE    W,[SIXBIT ?LOADER?]     ;FINAL MESSAGE\r
+       PUSHJ P,BLTSET          ;SETUP FOR FINAL BLT\r
+       RELEASE 2,              ;RELEASE AUX. DEV.\r
+IFN RPGSW,<RELEASE 17,0        ;RELEASE COMMAND DEVICE>\r
+IFE L,<\r
+IFN STANSW,<MOVE W,JOBREL      ;IN CASE NO NAME SET\r
+       MOVE W,-1(W)    ;USE FIRRST LOADED\r
+       SKIPN CURNAM\r
+       PUSHJ P,LDNAM\r
+       MOVE W,CURNAM\r
+       JRST LD5E4>>\r
+IFN L,<        JRST @LSPXIT>\r
+LD5E5: MOVE    W,[BLT Q,(A)]   ;BLT OF ALL CODE\r
+       MOVEM   W,JOBBLT        ;STASH IN JOB DATA AREA\r
+       MOVEM   W,JOBBLT(X)     ;STASH IN RELOCATED JOBDATA AREA\r
+LD5E2: MOVE    W,CALLEX        ;EXIT AFTER BLT\r
+       TLZN    N,EXEQSW        ;IMMEDIATE EXECUTION REQUESTED?\r
+       JRST    LD5E3           ;NOPE, LET USER TYPE START HIMSELF\r
+       HRRZ    W,JOBSA(X)      ;PICKUP USUAL STARTING ADDRESS\r
+       TLNE    N,DDSW          ;DDT EXECUTION?\r
+       HRRZ    W,JOBDDT(X)     ;USE DDT SA INSTEAD\r
+       JUMPE   W,LD5E2         ;IF SA=0, DON'T EXECUTE\r
+       HRLI    W,(JRST)        ;INSTRUCTION TO EXECUTE\r
+LD5E3:\r
+IFE LDAC,<MOVEM        W,JOBBLT+1(X)   ;STASH FOR EXECUTION>\r
+IFN LDAC,<MOVEM        W,JOBBLT+2(X)   ;STASH FOR EXECUTION\r
+       HRLZ    17,JOBFF(X)     ;BUT FIRST BLT ACS\r
+       MOVE    W,[BLT 17,17]   ;...\r
+       MOVEM   W,JOBBLT+1(X)   ;...>\r
+       JRST    JOBBLT          ;IF IT WERE DONE, 'TWERE BEST DONE QUICKLY\r
+\r
+IFE L,<\r
+IFN STANSW,<LSH W,6    ;LEFT JUSTIFY\r
+LD5E4: TLNN W,770000   ;IS IT LEFT JUSTIFIED?\r
+       JRST .-2\r
+       CALL W,[SIXBIT /SETNAM/]\r
+       JRST LD5E5>>\r
+\r
+       >\r
+\fIFE HE, <\r
+;SEARCH LIBRARY, PRINT UNDEFS, SETUP JOBSA,JOBFF,JOBSYM,JOBUSY\r
+\r
+SASYM: TLNN    F,NSW           ;SKIP IF NO SEARCH FLAG ON\r
+       PUSHJ   P,LIBF          ;SEARCH LIBRARY FILE\r
+       PUSHJ   P,FSCN          ;FORCE SCAN TO COMPLETION\r
+       PUSHJ   P,PMS           ;PRINT UNDEFINEDS\r
+IFE L,<        HRRZM   F,JOBSA(X)      ;RH OF JOBSA :=STARTING ADDRESS>\r
+       >\r
+SAS1:  HRRZ    A,H             ;COMPUTE PROG BREAK\r
+       SUBI    A,(X)           ;...\r
+       CAIGE   A,(R)           ;BUT NO HIGHER THAN RELOC\r
+       HRRZ    A,R             ;...\r
+IFE L,<        HRLM    A,JOBSA(X)      ;LH OR JOBSA IS PROG BREAK\r
+       HRRZM   A,JOBFF(X)      ;RH OF JOBFF CONTAINS PROG BREAK>\r
+       MOVE    A,B             ;SET JOBSYM W/ SYMBOL TABLE POINTER\r
+       AOS     A               ;...\r
+IFE L,<        MOVEM   A,JOBSYM(X)     ;...>\r
+IFN L,<        MOVEM   A,JOBSYM>\r
+       MOVE    A,S             ;SET JOBUSY W/ UNDEFINED SYMBOL POINTER\r
+       AOS     A               ;...\r
+IFE L,<        MOVEM   A,JOBUSY(X)     ;...>\r
+IFN L,<        MOVEM   A,JOBUSY>\r
+       POPJ    P,              ;RETURN\r
+IFE HE,<\r
+;PRINT FINAL MESSAGE, SET UP BLT AC'S, SETDDT, RELEAS\r
+\r
+BLTSET:        PUSHJ   P,FCRLF         ;START FINAL MESSAGE\r
+       PUSHJ   P,PWORD         ;PRINT W\r
+       PUSHJ   P,SPACE\r
+       >\r
+IFN HE,<\r
+BLTSET:>\r
+IFN FAILSW<    MOVSI Q,-20     ;SET TO FIX UP LINKS\r
+FXEND: HLRZ V,LINKTB+1(Q)      ;GET END LINK INFO\r
+       JUMPE V,NOEND   ;DO NOT LINK THIS ONE\r
+       HRRZ A,LINKTB+1(Q)      ;GET THE THING TO PUT THERE\r
+IFN L,<        CAML V,RINITL>\r
+       HRRM A,@X       ;PUT IT IN\r
+NOEND: AOBJN Q,FXEND   ;FINISH UP>\r
+IFN HE,<POPJ P,>\r
+IFE HE,<\r
+       HRRZ    Q,JOBREL        ;PUBLISH HOW MUCH CORE USED\r
+IFN L,<        SUB     Q,OLDJR         ;OLD JOBREL>\r
+       LSH     Q,-12           ;...\r
+       ADDI    Q,1             ;...\r
+       PUSHJ   P,RCNUM         ;PUBLISH THE NUMBER\r
+       MOVE    W,[SIXBIT /K CORE/]     ;PUBLISH THE UNITS\r
+       PUSHJ   P,PWORD         ;...\r
+       PUSHJ   P,CRLF          ;...\r
+IFE L,<        MOVSI   Q,20(X)         ;HOW MUCH CODE TO BLT\r
+       HRRI    Q,20            ;...\r
+       HRRZ A,42               ;CHECK ON ERRORS\r
+       JUMPE A,NOEX            ;NONE, GO AHEAD\r
+       TLZN N,EXEQSW           ;DID HE WANT TO START EXECUTION?\r
+       JRST NOEX               ;NO\r
+       JSP A ,ERRPT            ;PRINT AN ERROR MESSAGE\r
+       SIXBIT /EXECUTION DELETED@/\r
+NOEX:  HRRZ    A,JOBREL        ;WHEN TO STOP BLT\r
+       HRRZM   A,JOBREL(X)     ;SETUP FOR POSSIBLE IMMED. XEQ\r
+       SUBI    A,(X)           ;...\r
+IFE BLTSYM,<CAIL       A,(S)           ;DON'T BLT OVER SYMBOL TABLE\r
+       MOVEI   A,(S)           ;OR UNDEFINED TABLE>\r
+>\r
+       RELEAS  1,              ;RELEASE DEVICES\r
+       RELEAS  3,              ;...\r
+IFE L,<        MOVE    R,JOBDDT(X)     ;SET NEW DDT\r
+       CALLI   R,CSETDDT       ;...>\r
+       POPJ    P,              ;RETURN\r
+       >\r
+\r
+\fIFE HE,<\r
+;WRITE CHAIN FILES\r
+\r
+CHNC:  SKIPA   A,JOBCHN(X)     ;CHAIN FROM BREAK OF FIRST BLOCK DATA\r
+CHNR:  HLR     A,JOBCHN(X)     ;CHAIN FROM BREAK OF FIRST F4 PROG\r
+       HRRZS   A               ;ONLY RIGHT HALF IS SIGNIFICANT\r
+       JUMPE   A,LD7C          ;DON'T CHAIN IF ZERO\r
+       TLNN    N,AUXSWI        ;IS THERE AN AUX DEV?\r
+       JRST    LD7D            ;NO, DON'T CHAIN\r
+       PUSH    P,A             ;SAVE WHEREFROM TO CHAIN\r
+       SKIPE   D               ;STARTING ADDR SPECIFIED?\r
+       HRR     F,D             ;USE IT\r
+       PUSHJ   P,SASYM         ;DO LIB SEARCH, SETUP JOBSA, ETC.\r
+       POP     P,A             ;GET WHEREFROM\r
+       MOVN    W,JOBREL        ;CALCULATE IOWD FOR DUMP\r
+       ADDI    W,-1-3-CHN5(A)  ;...\r
+       HRLI    W,-4-CHN5(A)    ;...\r
+       MOVSM   W,IOWDPP        ;...\r
+       ADDI    A,-4-CHN5(X)    ;ADD IN OFFSET\r
+IFN CHN5,<PUSH A,JOBSYM(X)     ;SETUP FOUR WORD TABLE\r
+       PUSH    A,JOB41(X)      ;...>\r
+       PUSH    A,JOBDDT(X)     ;JOBDDT IN ALL CASES\r
+IFE CHN5,<PUSH A,JOBSYM(X)     ;JOBDDT, JOBSYM, JOBSA>\r
+       PUSH    A,JOBSA(X)      ;JOBRYM ALWAYS LAST\r
+       CLOSE   2,              ;INSURE END OF MAP FILE\r
+       SETSTS  2,17            ;SET AUX DEV TO DUMP MODE\r
+       MOVSI   W,435056        ;USE .CHN AS EXTENSION\r
+       MOVEM   W,DTOUT1        ;...\r
+       PUSHJ   P,IAD2          ;DO THE ENTER\r
+       TLZ     N,AUXSWI+AUXSWE ;INSURE NO PRINTED OUTPUT\r
+       MOVE    W,[SIXBIT ?CHAIN?]      ;FINAL MESSAGE\r
+       PUSHJ   P,BLTSET                ;SETUP BLT PNTR, SETDDT, RELEAS\r
+IFE STANSW,<CALLI      CDDTGT          ;START DDT MODE OUTPUT>\r
+       MOVSI   CHNBLT,CHAIN3   ;BLT CHAIN3 INTO ACS\r
+       BLT     CHNBLT,CHNBLT   ;...\r
+       MOVEI   P,CHNERR        ;POINTER TO ERR MESS\r
+       JRST    0               ;GO DO CHAIN\r
+\r
+       >\r
+\fIFE HE, <\r
+;THE AC SECTION OF CHAIN\r
+\r
+CHAIN3:\r
+       PHASE   0\r
+       BLT     Q,(A)           ;USUAL LDRBLT\r
+       OUTPUT  2,IOWDP         ;WRITE THE CHAIN FILE\r
+       STATZ   2,IOBAD!IODEND  ;CHECK FOR ERROR OR EOF\r
+       JRST    LOSEBIG         ;FOUND SAME, GO GRIPE\r
+       CLOSE   2,              ;FINISH OUTPUT\r
+       STATZ   2,IOBAD!IODEND  ;CHECK FOR FINAL ERROR\r
+LOSEBI:        CALLI   CDDTOUT         ;GRIPE ABOUT ERROR\r
+       CALLI   CEXIT           ;EXIT\r
+CHNERR:        ASCIZ   ?DEVICE ERROR?  ;ERROR MESSAGE\r
+IOWDP: Z                       ;STORE IOWD FOR DUMP HERE\r
+CHNBLT:                                ;LAST WORD OF AC CHAIN (ZERO OF I/O POINTER)\r
+       DEPHASE\r
+IOWDPP=.-1                     ;MEMORY LOC OF AC IOWDP\r
+       Z                       ;TERMINATOR OF DUMP MODE LIST\r
+\r
+>\r
+\f;EXPAND CORE\r
+\r
+IFN EXPAND,<\r
+XPAND: PUSH P,H        ;GET SOME REGISTERS TO USE\r
+       PUSH P,X\r
+       PUSH P,N\r
+IFE HE,<HRRZ X,JOBREL  ;WHAT WE WANT\r
+       ADDI X,2000\r
+       CALLI X,11>\r
+IFN HE,<JRST XPAND4;           HAND - EYE CORE FIXUP LATER\r
+       JRST XPAND3\r
+XPAND2:                >;              CORE ALLOCATOR CALLS THIS\r
+       JRST XPAND6\r
+IFE K,<                HRRZ H,MLTP     ;GET LOWEST LOCATION\r
+       TLNN N,F4SW     ;IS FORTRAN LOADING>\r
+       HRRZ H,S        ;NO, USE S\r
+IFE HE,<\r
+       HRRZ X,JOBREL   ;NOW MOVE\r
+       SUBI X,2000\r
+XPAND2:        MOVE N,(X)\r
+       MOVEM N,2000(X)\r
+       CAMLE X,H       ;TEST FOR END\r
+       SOJA X,XPAND2>;         HAND EYE SYSTEM MOVES TABLE\r
+       HRLI H,-2000\r
+       SETZM (H)       ;ZERO NEW CORE\r
+       AOBJN H,.-1\r
+       MOVEI H,2000\r
+       ADDM H,S\r
+       ADDM H,B\r
+       ADDM H,JOBSYM\r
+       POP P,N\r
+       ADDI N,2000\r
+IFE K,<        TLNN N,F4SW     ;F4?\r
+       JRST    XPAND3\r
+       ADDM H,PLTP\r
+       ADDM H,BITP\r
+       ADDM H,SDSTP\r
+       ADDM H,MLTP\r
+       TLNE N,SYDAT\r
+       ADDM H,V>\r
+IFN HE,<POPJ P,>\r
+XPAND3:\r
+       POP P,X\r
+       POP P,H\r
+       AOS (P)\r
+       POPJ P,\r
+XPAND6:        JUMPE X,XPAND4\r
+       JSP A,ERRPT\r
+IFE STANSW,<SIXBIT /CORE AVAILABLE, BUT NOT TO YOU#/>\r
+IFN STANSW,<SIXBIT /YOU HAVE BEEN FUCKED BY THE SHIT-EATING SYSTEM#/\r
+       JRST    XPAND5>\r
+XPAND4:        JSP A,ERRPT\r
+       SIXBIT /MORE CORE NEEDED#/\r
+XPAND5:        POP P,N\r
+       POP P,X\r
+       POP P,H\r
+       POPJ P,\r
+\r
+XPAND7:        PUSHJ   P,XPAND\r
+       JRST    SFULLC\r
+       JRST    POPJM2\r
+\r
+POPJM3:        SOS     (P)             ;POPJ TO CALL-2\r
+POPJM2:        SOS     (P)             ;POPJ TO CALL-1\r
+       SOS     (P)             ;SAME AS POPJ TO\r
+       POPJ    P,              ;NORMAL POPJ MINUS TWO\r
+       >\r
+\fIFE HE,<\r
+\r
+;ENTER SWITCH MODE\r
+\r
+LD6A:  CAIN    T,57            ;WAS CHAR A SLASH?\r
+       TLO     N,SLASH         ;REMEBER THAT\r
+       TLO     F,SSW           ;ENTER SWITCH MODE\r
+LD6A1: MOVEI   D,0             ;ZERO THE NUBER REGISTER\r
+       JRST    LD3             ;EAT A SWITCH\r
+\r
+;ALPHABETIC CHARACTER, SWITCH MODE\r
+\r
+LD6:   XCT     LD6B-101(T)     ;EXECUTE SWITCH FUNCTION\r
+       TLZE    N,SLASH ;SWITCH MODE ENTERED W/ SLASH?\r
+       JRST    LD6D            ;LEAVE SWITCH MODE\r
+       JRST    LD6A1           ;STAY IN SWITCH MODE\r
+\r
+;DISPATCH TABLE FOR SWITCHES\r
+\r
+;      THE INSTRUCTION AT THE CHARACTER LOCATION IS EXECUTED\r
+\r
+LD6B:  TLO     N,ALLFLG        ;A - LIST ALL GLOBALS\r
+       JRST    LD7B            ;B - ERROR\r
+       PUSHJ   P,CHNC          ;C - CHAIN, START W/ COMMON\r
+       PUSHJ     P,LDDT        ;D - DEBUG OPTION, LOAD DDT\r
+       TLO     N,EXEQSW        ;E - LOAD AND GO\r
+       PUSHJ     P,LIBF        ;F - LIBRARY SEARCH\r
+       PUSHJ     P,LD5E        ;G - GO INTO EXECUTION\r
+       PUSHJ P,LRAIDX          ;H - LOAD AN START RAID\r
+       TLO     N,ISAFLG        ;I - IGNORE STARTING ADDRESSES\r
+       TLZ     N,ISAFLG        ;J - USE STARTING ADDRESSES\r
+IFE BLTSYM,<JRST       LD7B            ;K - ERROR>\r
+IFN BLTSYM,<PUSHJ P,KORADJ     ;K - RESERVE SPACE FOR SYM DEFS>\r
+       TLO     F,LIBSW+SKIPSW  ;L - ENTER LIBRARY SEARCH\r
+       PUSHJ     P,PRMAP       ;M - PRINT STORAGE MAP\r
+       TLZ     F,LIBSW+SKIPSW  ;N - LEAVE LIBRARY SEARCH\r
+       HRR     R,D             ;O - NEW PROGRAM ORIGIN\r
+       TLO     F,NSW           ;P - PREVENT AUTO. LIB. SEARCH\r
+       TLZ     F,NSW           ;Q - ALLOW AUTO. LIB. SEARCH\r
+       PUSHJ   P,CHNR          ;R - CHAIN, START W/ RESIDENT\r
+       TLO     F,SYMSW         ;S - LOAD WITH SYMBOLS\r
+       PUSHJ   P,LDDTX         ;T - LOAD AND GO TO DDT\r
+       PUSHJ     P,PMS         ;U - PRINT UNDEFINED LIST\r
+       PUSHJ P,LRAID           ;V - LOAD RAID\r
+       TLZ     F,SYMSW+DSYMSW  ;W - LOAD WITHOUT SYMBOLS\r
+       TLZ     N,ALLFLG        ;X - DO NOT LIST ALL GLOBALS\r
+       TLO     F,REWSW         ;Y - REWIND BEFORE USE\r
+       JRST    LD              ;Z - RESTART LOADER\r
+\r
+>\r
+\fIFE HE, <\r
+;SWITCH MODE NUMERIC ARGUMENT\r
+\r
+LD6C:  LSH     D,3             ;BUILD OCTAL NUMERIC ARGUMENT\r
+       ADDI    D,-60(T)\r
+       JRST    LD3\r
+\r
+;EXIT FROM SWITCH MODE\r
+\r
+LD6D:  TLZ     F,SSW           ;CLEAR SWITCH MODE FLAG\r
+       TLNE    F,FSW           ;TEST FORCED SCAN FLAG\r
+       JRST    LD2D            ;SCAN FORCED, START NEW IDENT.\r
+       JRST    LD3             ;SCAN NOT FORCED, USE PREV IDENT\r
+;ILLEGAL CHARACTER, NORMAL MODE\r
+\r
+LD7:   JSP     A,ERRPT8\r
+       SIXBIT    /CHAR.%/\r
+       JRST    LD2\r
+\r
+;SYNTAX ERROR, NORMAL MODE\r
+\r
+LD7A:  JSP     A,ERRPT8\r
+       SIXBIT    /SYNTAX%/\r
+       JRST    LD2\r
+\r
+;ILLEGAL CHARACTER, SWITCH MODE\r
+\r
+LD7B:  JSP     A,ERRPT8\r
+       SIXBIT    /SWITCH%/\r
+       JRST    LD2\r
+\r
+;ATTEMPT TO CHAIN WITH SPECIFIED HALF OF JOBCHN = 0\r
+\r
+LD7C:  JSP     A,ERRPT         ;GRIPE\r
+       SIXBIT  ?UNCHAINABLE AS LOADED@?\r
+       JRST    LD2\r
+\r
+;ATTEMP TO CHAIN WITHOUT SPECIFYING DEVICE\r
+\r
+LD7D:  JSP     A,ERRPT         ;GRIPE\r
+       SIXBIT  ?NO CHAIN DEVICE@?\r
+       JRST    LD2\r
+\r
+>\r
+IFN BLTSYM,<KORADJ:    CAMLE D,KORSP   ;IF SMALLER IGNORE\r
+       MOVEM D,KORSP\r
+       POPJ P,>\r
+\fIFE HE, <\r
+;CHARACTER CLASSIFICATION TABLE DESCRIPTION:\r
+\r
+;      EACH CHARACTER HAS ASSOCIATED WITH IT A FOUR BIT BYTE\r
+;      PACKED IN THE CHARACTER CLASSIFICATION TABLE.  THE CHARACTER\r
+;      CLASSIFICATION CODES ARE ORDERED IN SUCH A WAY AS TO GIVE\r
+;      DELIMITERS OF HIGHER PRECEDENCE LOWER CLASSIFICATION NUMBERS.\r
+;      CERTAIN CHARACTERS HAVE NO EFFECT ON THE COMMAND STRING, AND\r
+;      THEREFORE DO NOT EFFECT ORDERING OF DELIMITERS.  FOUR CODES\r
+;      ARE RESERVED FOR ALTERNATE DISPATCHES WHILE THE SWITCH MODE IS\r
+;      IN EFFECT.\r
+\r
+\r
+;CLASSIFICATION BYTE CODES:\r
+\r
+;      BYTE DISP CLASSIFICATION\r
+\r
+;      00 - 00  ILLEGAL CHARACTER, SWITCH MODE\r
+;      01 - 01  ALPHABETIC CHARACTER, SWITCH MODE\r
+;      02 - 02  NUMERIC CHARACTER, SWITCH MODE\r
+;      03 - 03  SWITCH MODE ESCAPE, SWITCH MODE\r
+\r
+;      00 - 04  ILLEGAL CHARACTER, NORMAL MODE\r
+;      01 - 05  ALPHABETIC CHARACTER, NORMAL MODE\r
+;      02 - 06  NUMERIC CHARACTER, NORMAL MODE\r
+;      03 - 07  SWITCH MODE ESCAPE, NORMAL MODE\r
+\r
+;      04 - 10  IGNORED CHARACTER\r
+;      05 - 11  ENTER SWITCH MODE CHARACTER\r
+;      06 - 12  DEVICE IDENTIFIER DELIMITER\r
+;      07 - 13  FILE EXTENSION DELIMITER\r
+;      10 - 14  OUTPUT SPECIFICATION DELIMITER\r
+;      11 - 15  INPUT SPECIFICATION DELIMITER\r
+;      12 - 16  LINE TERMINATION\r
+;      13 - 17  JOB TERMINATION\r
+\r
+>\r
+\fIFE HE, <\r
+;BYTE POINTERS TO CHARACTER CLASSIFICATION TABLE\r
+\r
+LD8:   POINT     4,LD9(Q),3\r
+       POINT     4,LD9(Q),7\r
+       POINT     4,LD9(Q),11\r
+       POINT     4,LD9(Q),15\r
+       POINT     4,LD9(Q),19\r
+       POINT     4,LD9(Q),23\r
+       POINT     4,LD9(Q),27\r
+       POINT     4,LD9(Q),31\r
+       POINT     4,LD9(Q),35\r
+\r
+;CHARACTER CLASSIFIACTION TABLE\r
+\r
+LD9:   BYTE    (4)4,0,0,0,0,0,0,0,0\r
+       BYTE    (4)4,4,4,4,12,0,0,0,0\r
+       BYTE    (4)0,0,0,0,0,0,0,0,0\r
+       BYTE    (4)13,0,0,0,0,4,0,4,0\r
+       BYTE    (4)0,0,0,0,5,3,0,0,11\r
+       BYTE    (4)0,7,5,2,2,2,2,2,2\r
+       BYTE    (4)2,2,2,2,6,0,0,10,0\r
+IFE RPGSW,<    BYTE    (4)0,0,1,1,1,1,1,1,1>\r
+IFN RPGSW,<    BYTE (4) 0,10,1,1,1,1,1,1,1>\r
+       BYTE    (4)1,1,1,1,1,1,1,1,1\r
+       BYTE    (4)1,1,1,1,1,1,1,1,1\r
+IFE PP,<BYTE   (4)1,0,0,0,0,10,0,0,0>\r
+IFN PP,<BYTE   (4)1,10,0,10,0,10,0,0,0>\r
+       BYTE    (4)0,0,0,0,0,0,0,0,0\r
+       BYTE    (4)0,0,0,0,0,0,0,0,0\r
+       BYTE    (4)0,0,0,0,0,0,0,0,13\r
+       BYTE    (4)13,4\r
+\r
+>\r
+\fIFE HE, <\r
+;INITIALIZE LOADING OF A FILE\r
+\r
+ILD:   MOVEI     W,BUF1                ;LOAD BUFFER ORIGIN\r
+       MOVEM     W,JOBFF\r
+       TLOE    F,ISW           ;SKIP IF INIT REQUIRED\r
+       JRST    ILD6            ;DONT DO INIT\r
+       INIT    1,14\r
+ILD1:  0                               ;LOADER INPUT DEVICE\r
+       XWD     0,BUFR\r
+       JSP     A,ILD5          ;ERROR RETURN\r
+ILD6:  TLZE    F,REWSW         ;SKIP IF NO REWIND\r
+       MTAPE   1,1             ;REWIND\r
+ILD2:  LOOKUP    1,DTIN                ;LOOK UP FILE FROM DIRECTORY\r
+       JRST    ILD3            ;FILE NOT IN DIRECTORY\r
+IFE K,<        INBUF     1,2           ;SET UP BUFFERS>\r
+IFN K,<        INBUF   1,1             ;SET UP BUFFER>\r
+       TLO     F,ASW           ;SET LEFT ARROW ILLEGAL FLAG\r
+       TLZ     F,ESW+F4LIB     ;CLEAR EXTENSION FLAG\r
+       POPJ    P,\r
+\r
+;      LOOKUP FAILURE\r
+\r
+ILD3:  TLOE    F,ESW           ;SKIP IF .REL WAS ASSUMED\r
+       JRST    ILD4            ;FATAL LOOKUP FAILURE\r
+       SETZM     DTIN1         ;ZERO FILE EXTENSION\r
+       JRST    ILD2            ;TRY AGAIN WITH NULL EXTENSION\r
+\r
+ILD4:  TLZE    F,F4LIB         ;WAS THIS A TRY FOR F40 LIBRARY?\r
+       JRST    [MOVE   W,[SIXBIT /LIB4/]; YES, TRY LIB4\r
+               MOVEM   W,DTIN          ;...\r
+               PUSHJ   P,LDDT2         ;USE .REL EXTENSION\r
+               TLZ     F,ESW           ;...\r
+               JRST    ILD2            ];GO TRY AGAIN\r
+       >\r
+ILD9:  JSP     A,ERRPT\r
+       SIXBIT    /CANNOT FIND#/\r
+       JRST    LD2\r
+\r
+;      DEVICE SELECTION ERROR\r
+\r
+ILD5:  MOVE    W,-3(A)         ;LOAD DEVICE NAME FROM INIT\r
+       TLO     F,FCONSW        ;INSURE TTY OUTPUT\r
+       PUSHJ   P,PRQ           ;START W/ ?\r
+       PUSHJ     P,PWORD               ;PRINT DEVICE NAME\r
+       JSP     A,ERRPT7\r
+       SIXBIT    /UNAVAILABLE@/\r
+       JRST    LD2\r
+\fIFE HE, <\r
+;LIBRARY SEARCH CONTROL AND LOADER CONTROL\r
+\r
+;LIBF ENABLES A LIBRARY SEARCH OF <SYS:LIB4.REL>\r
+\r
+LIBF:  PUSHJ     P,FSCN1               ;FORCE SCAN TO COMPLETION\r
+       PUSHJ   P,LIBF1                 ;LOAD SYS:JOBDAT.REL\r
+       TLO     F,F4LIB                 ;INDICATE FORTRAN LIBRARY SEARCH\r
+       MOVE    W,[SIXBIT /LIB40/]      ;FIRST TRY AT NAME\r
+       PUSHJ   P,LIBF2                 ;LOAD SYS:LIB40.REL\r
+LIBF1: MOVE    W,[SIXBIT /JOBDAT/]     ;LOAD SYS:JOBDAT.REL\r
+LIBF2: PUSHJ     P,LDDT1\r
+       JUMPGE    S,EOF2                ;JUMP IF NO UNDEFINED GLOBALS\r
+       TLO     F,SLIBSW+SKIPSW ;ENABLE LIBRARY SEARCH\r
+       TLZ     F,SYMSW+DSYMSW  ;DISABLE LOADING WITH SYMBOLS\r
+       JRST    LDF             ;INITIALIZE LOADING LIB4\r
+>;             HAND - EYE DOES OWN LIB SETUP\r
+\r
+;      LIB CONTROLS THE LIBRARY SEARCH OF ONE FILE\r
+\r
+LIB:   JUMPGE    S,EOF1                ;JUMP IF NO UNDEFINED GLOBALS\r
+       TLO     F,SKIPSW                ;SET SKIPSW TO IGNORE MODE\r
+       JRST    LOAD            ;CONTINUE LIB. SEARCH\r
+\r
+LIB1:  CAIE    A,4             ;TEST FOR ENTRY BLOCK\r
+       JRST    LIB3            ;NOT AN ENTRY BLOCK, IGNORE IT\r
+LIB2:  PUSHJ     P,RWORD               ;READ ONE DATA WORD\r
+       MOVE    C,W\r
+       TLO     C,040000                ;SET CODE BITS FOR SEARCH\r
+       PUSHJ     P,SREQ\r
+       TLZA    F,SKIPSW                ;REQUEST MATCHES ENTRY, LOAD\r
+       JRST    LIB2            ;NOT FOUND\r
+LIB3:  PUSHJ     P,RWORD               ;READ AND IGNORE ONE DATA WORD\r
+       JRST    LIB3            ;LOOP TO IGNORE INPUT\r
+\r
+IFE HE,<\r
+;LDDT LOADS <SYS:DDT.REL> AND SETS DSYMSW\r
+\r
+LRAIDX:        TLO N,DDSW!EXEQSW       ;H - LOAD AND START RAID\r
+LRAID: PUSHJ P,FSCN1           ;FORCE END OF SCAN\r
+       MOVE W,[SIXBIT /RAID/]\r
+       JRST LDDT0\r
+LDDTX: TLO     N,DDSW+EXEQSW   ;T - LOAD AND GO TO DDT\r
+LDDT:  PUSHJ     P,FSCN1               ;FORCE SCAN TO COMPLETION\r
+       MOVSI     W,444464              ;FILE IDENTIFIER <DDT>\r
+LDDT0: PUSHJ     P,LDDT1\r
+       PUSHJ     P,LDF         ;LOAD <SYS:DDT.REL>\r
+       TLO     F,DSYMSW                ;ENABLE LOADING WITH SYMBOLS\r
+       POPJ    P,\r
+\r
+LDDT1: MOVEM     W,DTIN                ;STORE FILE IDENTIFIER\r
+IFN PP,<MOVE W,ILD1    ;SAVE OLD DEV\r
+       MOVEM W,OLDDEV>\r
+       MOVSI     W,637163              ;DEVICE IDENTIFIER <SYS>\r
+       MOVEM     W,ILD1                ;STORE DEVICE IDENTIFIER\r
+       TLZ     F,ISW+LIBSW+SKIPSW+REWSW        ;CLEAR OLD FLAGS\r
+LDDT2: MOVSI     W,624554              ;EXTENSION IDENTIFIER <.REL>\r
+LDDT3: MOVEM     W,DTIN1               ;STORE EXTENSION IDENTIFIER\r
+IFN PP,<MOVE W,PPN     ;GET PROJ-PROG #\r
+       MOVEM W,DTIN+3>\r
+       POPJ    P,\r
+>;             HAND - EYE DOES OWN DDT LOAD\r
+\f;EOF TERMINATES LOADING OF A FILE\r
+\r
+EOF:   MOVE    P,PDSAV         ;RESTORE PUSHDOWN POINTER\r
+EOF1:  TLZ     F,SLIBSW+SKIPSW ;CLEAR ONE FILE LIB. SEARCH FLAG\r
+EOF2:  POPJ    P,\r
+\r
+;      FORCE SCAN TO COMPLETION, LOAD IF NECESSARY\r
+\r
+FSCN:  PUSHJ     P,FSCN1               ;FORCED LOAD BEFORE TEST\r
+       TLNN    F,FULLSW                ;TEST FOR OVERLAP\r
+       POPJ    P,                      ;NO OVERLAP, RETURN\r
+       MOVE    W,H             ;FETCH CORE SIZE REQUIRED\r
+       SUBI W,1(S) ; COMPUT DEFICIENCY\r
+       JUMPL     W,EOF2                ;JUMP IF NO OVERLAP\r
+       TLO     F,FCONSW                ;INSURE TTY OUTPUT\r
+       PUSHJ   P,PRQ                   ;START WITH ?\r
+       PUSHJ     P,PRNUM0              ;INFORM USER\r
+       JSP     A,ERRPT7\r
+       SIXBIT    /WORDS OF OVERLAP#/\r
+       JRST    LD2             ;ERROR RETURN\r
+\r
+FSCN1: IFE HE,<TLON    F,FSW           ;SKIP IF NOT FIRST CALL TO FSCN\r
+       TLNN    F,CSW+DSW+ESW   ;TEST SCAN FOR COMPLETION\r
+       >;              HAND EYE DOES NOT WANT FORCED SCAN\r
+       POPJ    P,\r
+FSCN2: PUSHJ     P,LD5B1               ;STORE FILE OR EXTENSION IDENT.\r
+\r
+;      LOADER CONTROL, NORMAL MODE\r
+\r
+LDF:   PUSHJ     P,ILD         ;INITIALIZE LOADING\r
+\r
+\f;LOAD SUBROUTINE\r
+\r
+LOAD:  MOVEM     P,PDSAV               ;SAVE PUSHDOWN POINTER\r
+IFN FAILSW,<   SETZM LFTHSW    ;RESET LOAD LEFT HALF FIXUP SW>\r
+LOAD1: MOVE    P,PDSAV         ;RESTORE PUSHDOWN POINTER\r
+LOAD1A:   PUSHJ     P,WORD             ;INPUT BLOCK HEADER WORD\r
+       MOVNI     E,400000(W)   ;WORD COUNT - FROM RH OF HEADER\r
+       HLRZ    A,W             ;BLOCK TYPE - FROM LH OF HEADER\r
+IFN FAILSW,<   SKIPN POLSW     ;ERROR IF STILL DOING POLISH>\r
+       CAILE     A,DISPL*2+1           ;TEST BLOCK TYPE NUMBER\r
+       JRST    LOAD4           ;ERROR, ILLEGAL BLOCK TYPE\r
+       TLNE    F,SKIPSW                ;BLOCK OK - TEST LOAD STATUS\r
+       JRST    LIB1            ;RETURN TO LIB. SEARCH CONTROL\r
+       HRRZ    T,LOAD2(A)              ;LOAD RH DISPATCH ENTRY\r
+       CAILE     A,DISPL               ;SKIP IF CORRECT\r
+       HLRZ    T,LOAD2-DISPL-1(A)      ;LOAD LH DISPATCH ENTRY\r
+       TLNE    F,FULLSW                ;TEST CORE OVERLAP INDICATOR\r
+       SOJG    A,HIGH0         ;IGNORE BLOCK IF NOT TYPE 1\r
+       JRST    @T                      ;DISPATCH TO BLOCK SUBROUTINE\r
+\r
+;DISPATCH TABLE - BLOCK TYPES\r
+\r
+LOAD2: XWD NAME,LOAD1A\r
+       XWD START,PROG\r
+       XWD LOCD,SYM\r
+IFE FAILSW,<   XWD LOAD4A,LOAD4A\r
+       XWD LOAD4A,LIB3>\r
+IFN FAILSW,<   XWD POLFIX,LOAD4A\r
+       XWD LINK,LIB3>\r
+LOAD3: XWD LOAD4A,HIGH\r
+\r
+       DISPL=LOAD3-LOAD2\r
+\r
+;ERROR EXIT FOR BAD HEADER WORDS\r
+\r
+LOAD4: IFE K,<\r
+       CAIN    A,400           ;FORTRAN FOUR BLOCK\r
+       JRST    F4LD>\r
+IFN HE,<CAIE A,400\r
+       JRST LOAD4A\r
+       JSP 1,ERRPT\r
+       SIXBIT /FORTRAN#/\r
+       SETOM RESET\r
+       JRST LD2>\r
+LOAD4A:   JSP  A,ERRPT         ;INCORRECT HEADER WORD\r
+       SIXBIT    /ILL. FORMAT#/\r
+IFN HE,<SETOM RESET#>\r
+       JRST    LD2\r
+\r
+\f;LOAD PROGRAMS AND DATA (BLOCK TYPE 1)\r
+\r
+PROG:  HRRZ    V,W             ;LOAD BLOCK LENGTH\r
+       PUSHJ     P,RWORD               ;READ BLOCK ORIGIN\r
+IFN HE,<SETZM SFLAG\r
+       CAIG W,140\r
+       CAIN W,JOBDDT\r
+       JRST PROG2\r
+       SETOM SFLAG\r
+       JSP A,ERRPT\r
+       SIXBIT /ADDRESS CONFLICT#/\r
+PROG2:\r
+       >;      HAND-EYE CANNOT HANDLE CODE BELOW 140 \r
+       ADD     V,W             ;COMPUTE NEW PROG. BREAK\r
+       CAIG    H,@X            ;COMPARE WITH PREV. PROG. BREAK\r
+       MOVEI     H,@X          ;UPDATE PROGRAM BREAK\r
+               TLNE F,FULLSW\r
+               JRST FULLC      ;NO ERROR MESSAGE\r
+       CAILE H,1(S)  ; SKIP IF SUFFICIENT CORE AVAILABLE\r
+IFN EXPAND,<   JRST    [PUSHJ P,XPAND>\r
+                       JRST FULLC\r
+IFN EXPAND,<           JRST .-1]>\r
+       MOVE    V,W\r
+PROG1: PUSHJ     P,RWORD               ;READ DATA WORD\r
+IFN HE,<SKIPN SFLAG#>\r
+IFN L,<        CAML V,RINITL   ;ABSOLUTE >\r
+       MOVEM     W,@X          ;STORE DATA WORD IN PROG. AT LLC\r
+       AOJA    V,PROG1         ;ADD ONE TO LOADER LOC. COUNTER\r
+\r
+;LOAD SYMBOLS (BLOCK TYPE 2)\r
+\r
+SYM:   PUSHJ     P,PRWORD              ;READ TWO DATA WORDS\r
+       PUSHJ   P,SYMPT;                PUT INTO TABLE\r
+       JRST    SYM\r
+\r
+; WFW SYMPT:   JUMPL   C,SYM3;         JUMP IF GLOBAL REQUEST\r
+SYMPT: TLNE C,200000   ;GLOBAL REQUEST? WFW\r
+       JUMPL C,SYM3    ;CHECK FOR 60 NOT JUST HIGH BIT WFW\r
+       TLNE    C,100000\r
+       JRST    SYM1A           ;LOCAL SYMBOL\r
+       PUSHJ     P,SREQ                ;GLOBAL DEF., SEARCH FOR REQUEST\r
+       JRST    SYM2            ;REQUEST MATCHES\r
+       PUSHJ     P,SDEF                ;SEARCH FOR MULTIPLE DEFINITIONS\r
+       JRST    SYM1            ;MULTIPLY DEFINED GLOBAL\r
+       JRST    SYM1B\r
+\r
+;      PROCESS MULTIPLY DEFINED GLOBAL\r
+\r
+SYM1:  CAMN    W,2(A)          ;COMPARE NEW AND OLD VALUE\r
+       POPJ    P,;\r
+       AOS     MDG             ;COUNT MULTIPLY DEFINED GLOBALS\r
+       PUSHJ   P,PRQ           ;START W/ ?\r
+       PUSHJ     P,PRNAM               ;PRINT SYMBOL AND VALUE\r
+       MOVE    W,2(A)          ;LOAD OLD VALUE\r
+       PUSHJ     P,PRNUM               ;PRINT OLD VALUE\r
+       JSP     A,ERRPT7                ;PRINT MESSAGE\r
+       SIXBIT    /MUL. DEF. GLOBAL#/\r
+       POPJ    P,;     IGNORE MUL. DEF. GLOBAL SYM\r
+\r
+\f;     LOCAL SYMBOL\r
+\r
+SYM1A: TLNN    F,SYMSW+DSYMSW  ;SKIP IF LOAD LOCALS SWITCH ON\r
+       POPJ    P,;             IGNORE LOCAL SYMBOLS\r
+SYM1B: CAIL    H,(S)           ;STORE DEFINED SYMBOL\r
+IFN EXPAND,<   PUSHJ P,XPAND7>\r
+IFE EXPAND,<   JRST SFULLC>\r
+SYM1C: IFE K,<\r
+       TLNE    N,F4SW;         FORTRAN FOUR REQUIRES A BLT\r
+       PUSHJ   P,MVDWN;        OF THE TABLES>\r
+       MOVEI A,-2(S)   ;LOAD A TO SAVE INST. AT SYM2\r
+SYM1D: SUBI    S,2;            UPDATE UNDEFINED POINTER\r
+       POP     B,2(A)          ;MOVE UNDEFINED VALUE POINTER\r
+       POP     B,1(A)          ;MOVE UNDEFINED SYMBOL\r
+       MOVEM     W,2(B)                ;STORE VALUE\r
+       MOVEM     C,1(B)                ;STORE SYMBOL\r
+       POPJ    P,;\r
+\r
+\f;     GLOBAL DEFINITION MATCHES REQUEST\r
+\r
+SYM2:  PUSH P,SYM2C    ;NEXT MUST BE A SUBROUTINE FOR LATER. SET RETURN\r
+SYM2B: MOVE    V,2(A)          ;LOAD REQUEST POINTER\r
+       PUSHJ P,REMSYM\r
+       JUMPL V,SYM2W   ;ADDITIVE REQUEST? WFW\r
+       PUSHJ     P,SYM4A               ;REPLACE CHAIN WITH DEFINITION\r
+;WFW PATCH TO LOOK FOR MORE THAN ONE REQUEST\r
+SYM2W1:        PUSHJ P,SREQ    ;LOOK FOR MORE REQUESTS FOR THIS SYMBOL\r
+       JRST SYM2B      ;FOUND MORE\r
+       MOVE A,SVA      ;RESTORE A\r
+;END OF PATCH WFW\r
+SYM2C: POPJ P,SYM1D    ;RETURN, SEE SYM2 FOR USE OF ADDRESS\r
+SVA:   0       ;A TEMP CELL WFW\r
+\r
+;      REQUEST MATCHES GLOBAL DEFINITION\r
+\r
+SYM2A: MOVE    V,W             ;LOAD POINTER TO CHAIN\r
+       MOVE    W,2(A)          ;LOAD VALUE\r
+       JUMPL V,FIXWP   ;HANDLE ATTITIVE REQUEST WFW\r
+       JRST    SYM4A;          REPLACE CHAIN WITH DEFINITION\r
+\r
+;      PROCESS GLOBAL REQUEST\r
+\r
+SYM3:  TLNE    C,040000;               COMMON NAME\r
+       JRST    SYM1B\r
+       TLC     C,640000;               PERMUTE BITS FROM 60 TO 04\r
+       PUSHJ     P,SDEF                ;SEARCH FOR GLOBAL DEFINITION\r
+       JRST    SYM2A           ;MATCHING GLOBAL DEFINITION\r
+       JUMPL W,SYM3X1  ;ADDITIVE FIXUP WFW\r
+       PUSHJ     P,SREQ                ;SEARCH FOR EXISTING REQUEST WFW\r
+       JRST    SYM3A           ;EXISTING REQUEST FOUND WFW\r
+SYM3X1:        TLNN W,100000   ;CHECK SYMBOL TABLE FIXUP\r
+       JRST SYM3X2     ;NO\r
+       MOVE V,1(B)     ;MUST BE LAST SYMBOL DEFINED. GET SYMBOL\r
+       XOR V,W         ;CHECK FOR IDENTITY\r
+       TDNE V,[XWD 77777,-1]   ;BUT IGNORE HIGH 3 BITS\r
+       POPJ P,         ;NOT SAME, ASSUME NOT LOADED LOCAL\r
+       HRRI W,2(B)     ;GET LOCATION IN RIGHT HALF\r
+       TLO W,1\r
+       SUB W,JOBREL    ;AND MAKE RELATIVE\r
+IFN FAILSW,<   TLZ W,40000>\r
+SYM3X2:        CAIL    H,(S)           ;STORE REQUEST IN UNDEF. TABLE WFW\r
+IFN EXPAND,<   PUSHJ P,XPAND7>\r
+IFE EXPAND,<   JRST SFULLC>\r
+SYM3X: IFE K,<\r
+       TLNE    N,F4SW;         FORTRAN FOUR\r
+       PUSHJ   P,MVDWN;                ADJUST TABLES IF F4>\r
+       SUB     S,SE3           ;ADVANCE UNDEFINED POINTER\r
+       MOVEM     W,2(S)                ;STORE UNDEFINED VALUE POINTER\r
+       MOVEM     C,1(S)                ;STORE UNDEFINED SYMBOL\r
+       POPJ    P,;\r
+\r
+\f\r
+;      COMBINE TWO REQUEST CHAINS\r
+\r
+SYM3A: SKIPL 2(A)      ;IS IT ADDITIVE WFW\r
+       JRST SYM3A1     ;NO, PROCESS WFW\r
+       PUSHJ P,SDEF2   ;YES, CONTINUE WFW\r
+       JRST SYM3A      ;FOUND ANOTHER WFW\r
+       JRST SYM3X2     ;REALLY NO CHAIN THERE WFW\r
+SYM3A1:        SUBI A,-2(X)  ;A=A-(-2+X(18-35)); A RELATIVE TO X WFW\r
+SYM3B: HRRZ V,A       ; SAVE CHAIN ADDRESS FOR HRRM W,@X\r
+IFN L,<        CAMGE V,RINITL\r
+       HALT    ;LOSE LOSE LOSE>\r
+       HRRZ A,@X ; LOAD NEXT ADDRESS IN CHAIN\r
+       JUMPN A,SYM3B  ; JUMP IF NOT THE LAST ADDR. IN CHAIN\r
+       HRRM    W,@X            ;COMBINE CHAINS\r
+       POPJ    P,;\r
+;LHQ PATCH FOR LISP ABSOLUTE FIXUP PREVENTION\r
+IFN L,<\r
+VTST:  0\r
+       MOVEM V,VSVV#\r
+       HRRZS V\r
+       CAMGE V,RINITL\r
+       POPJ P,\r
+       MOVE V,VSVV\r
+       JRST @VTST>\r
+\r
+;WFW PATCH FOR ADDITIVE GLOBAL REQUESTS\r
+\r
+FIXWP: TLNN V,100000   ;CHECK FOR SYMBOL TABLE FIXUP\r
+       JRST FIXW\r
+       MOVE T,1(B)     ;SYMBOL FIXUP, MUST BE LAST SYMBOL DEFINED\r
+       XOR T,V         ;CHECK FOR SAME\r
+       TDNE T,[XWD 77777,-1]   ;EXCEPT FOR HEGH CODE BITS\r
+       POPJ P,         ;ASSUME NON-LOADED LOCAL\r
+       HRRI V,2(B)     ;GET LOCATION\r
+       SUBI V,(X)      ;SO WE CAN USE @X\r
+FIXW:  TLNE V,200000   ;IS IT LEFT HALF\r
+       JRST FIXWL\r
+IFN L,<        JSR VTST>\r
+       MOVE T,@X       ;GET WORD\r
+       ADD T,W         ;VALUE OF GLOBAL\r
+       HRRM T,@X       ;FIX WITHOUT CARRY\r
+       MOVSI D,200000  ;SET UP TO REMOVE DEFERED INTERNAL IF THERE\r
+       JRST SYMFIX\r
+FIXWL: HRLZ    T,W             ;UPDATE VALUE OF LEFT HALF\r
+IFN L,<        JSR VTST>\r
+       ADDM    T,@X            ;BY VALUE OF GLOBAL\r
+       MOVSI D,400000  ;LEFT DEFERED INTERNAL\r
+SYMFIX:        TLNN V,100000   ;CHECK FOR SYMBOL TABLE FIXUP\r
+       POPJ P,         ;NO, RETURN\r
+       ADDI V,(X)      ;GET THE LOCATION\r
+       MOVE T,-1(V)    ;GET THE SYMBOL NAME\r
+       TLNN T,40000    ;CHECK TO SEE IF INTERNAL\r
+       POPJ P,         ;NO, LEAVE\r
+       ANDCAB D,-1(V)  ;REMOVE PROPER BIT\r
+       TLNE D,600000   ;IS IT STILL DEFERED?\r
+       POPJ P,         ;YES, ALL DONE\r
+       EXCH C,D        ;NO, CHECK FOR A REQUEST FOR IT\r
+       PUSHJ P,SREQ\r
+       JRST CHNSYM     ;YES, WILL HAVE TO CALL THE FIXUP ROUTINE\r
+       MOVE C,D        ;GET C BACK\r
+       POPJ P,\r
+CHNSYM:        PUSH P,D        ;HAS THE OLD C IN IT\r
+       PUSH P,W        ;WE MAY NEED IT LATER\r
+       MOVE W,(V)      ;GET VALUE\r
+       PUSHJ P,SYM2B   ;CALL THE FOUND GLOBAL TO MATCH REQUEST ROUTINE\r
+       POP P,W\r
+       POP P,C         ;RESTORE FOR CALLER\r
+       POPJ P,         ;AND GO AWAY\r
+\r
+SYM2W: IFN FAILSW,<    TLNE V,40000    ;CHECK FOR POLISH\r
+       JRST POLSAT>\r
+       TLNN V,100000   ;SYMBOL TABLE?\r
+       JRST SYM2WA\r
+       ADD V,JOBREL    ;MAKE ABSOLUTE\r
+       SUBI V,(X)      ;GET READY TO ADD X\r
+       SYM2WA: PUSHJ P,FIXW    ;DO FIXUP\r
+       JRST SYM2W1     ;AND LOOK FOR MORE REQUESTS\r
+\r
+;END WFW PATCH\r
+\r
+\f;PATCH VALUES INTO CHAINED REQUEST\r
+SYM4:\r
+IFN L,<        CAMGE V,RINITL\r
+       POPJ P,>\r
+       HRRZ    T,@X            ;LOAD NEXT ADDRESS IN CHAIN\r
+       HRRM    W,@X            ;INSERT VALUE INTO PROGRAM\r
+       MOVE    V,T\r
+SYM4A: JUMPN     V,SYM4                ;JUMP IF NOT LAST ADDR. IN CHAIN\r
+       POPJ    P,\r
+\r
+IFE    K,<\r
+MVDWN: HRRZ T,MLTP\r
+IFN EXPAND,<   SUBI T,2>\r
+       CAIG    T,@X;           ANY ROOM LEFT?\r
+IFN EXPAND,<   JRST    [PUSHJ P,XPAND>\r
+                       TLOA F,FULLSW\r
+IFN EXPAND,<           JRST MVDWN\r
+                       JRST .+2]>\r
+       TLNE    F,SKIPSW+FULLSW\r
+       JRST    MVABRT; ABORT BLT\r
+       HRREI   T,-2\r
+       ADDM    T,PLTP;         ADJUST PROGRAMMER LABEL POINTER\r
+       ADDM    T,BITP;         AND BIT TABLE POINTER\r
+       ADDM    T,SDSTP;        FIRST DATA STATEMENT\r
+       ADDM    T,LTC\r
+       ADDM    T,ITC\r
+       TLNE    N,SYDAT\r
+       ADDM    T,V\r
+       ADDB    T,MLTP;         AND FINALLY TO MADE LABEL TABLE\r
+       HRLS    T;              SET UP BLT POINTER\r
+       ADD     T,[XWD 2,0]\r
+       BLT     T,(S)\r
+MVABRT:        POPJ    P,;\r
+>\r
+;HIGHEST RELOCATABLE POINT (BLOCK TYPE 4)\r
+SFULLC:        TLOE    F,FULLSW        ;PREVIOUS OVERFLOW?\r
+       JRST    FULLC           ;YES, DON'T PRINT MESSAGE\r
+       JSP     A,ERRPT         ;NO, COMPLAIN ABT OVERFLO\r
+       SIXBIT  ?SYMBOL TABLE OVERLAP#?\r
+FULLC: TLO     F,FULLSW        ;CORE OVERLAP ERROR RETURN\r
+IFE K,<        TLNE    N,F4SW\r
+       POPJ    P,>\r
+       JRST    LIB3            ;LOOK FOR MORE\r
+\r
+HIGH0: CAIE A,4  ; TEST FOR END BLOCK (OVERLAP)\r
+       JRST    LIB3\r
+HIGH:  PUSHJ     P,PRWORD              ;READ TWO DATA WORDS\r
+       HRR     R,C             ;SET NEW PROGRAM BREAK\r
+       ADDI    C,X;    BE SURE TO RELOCATE\r
+       CAILE   C,1(S)          ;TEST PROGRAM BREAK\r
+IFN EXPAND,<PUSHJ P,[  PUSHJ P,XPAND\r
+                       TLOA F,FULLSW\r
+                       JRST POPJM2\r
+                       POPJ    P,]>\r
+IFE EXPAND,<TLO        F,FULLSW>\r
+HIGH3: MOVEI   A,F.C           ;SAVE CURRENT STATE OF LOADER\r
+       BLT     A,B.C\r
+       TLNE    F,SLIBSW+LIBSW  ;NORMAL MODE EXIT THROUGH LOAD1\r
+       JRST    LIB             ;LIBRARY SEARCH EXIT\r
+       JRST LOAD1\r
+\r
+\f;STARTING ADDRESS (BLOCK TYPE 7)\r
+\r
+START: PUSHJ     P,PRWORD              ;READ TWO DATA WORDS\r
+       TLNN    N,ISAFLG                ;SKIP IF IGNORE SA FLAG ON\r
+       HRR     F,C             ;SET STARTING ADDRESS\r
+IFN STANSW,<MOVE W,1(N)        ;SET UP NAME OF THIS PROGRAM\r
+       PUSHJ P,LDNAM>\r
+\r
+;PROGRAM NAME (BLOCK TYPE 6)\r
+\r
+NAME:  PUSHJ     P,PRWORD              ;READ TWO DATA WORDS\r
+       TLOE    N,COMFLG                ;SKIP IF COMMON NOT PREV. SET\r
+       JRST    NAME1           ;SIZE OF COMMON PREV. SET\r
+       MOVEM     W,COMSAV              ;STORE LENGTH OF COMMON\r
+       JUMPE     W,NAME2               ;JUMP IF NO COMMON IN THIS JOB\r
+       HRRI    R,@R            ;FIRST PROGRAM SET LOAD ORIGIN\r
+NAME1: CAILE H,-1(S)           ;TEST FOR AVAIL. SYMBOL SPACE\r
+IFN EXPAND,<   PUSHJ P,XPAND7>\r
+IFE EXPAND,<   JRST SFULLC>\r
+       SUBI    S,2             ;UPDATE UNDEF. TABLE POINTER\r
+       POP     B,2(S)\r
+       POP     B,1(S)\r
+       HRRZ    V,N             ;POINTER TO PREVIOUS NAME\r
+       SUBM    B,V             ;COMPUTE RELATIVE POSITIONS\r
+       HRLM    V,2(N)          ;STORE FORWARD POINTER\r
+       HRR     N,B             ;UPDATE NAME POINTER\r
+NAME2: MOVEM     C,1(B)                ;STORE PROGRAM NAME\r
+       HRRZM   R,2(B)          ;STORE PROGRAM ORIGIN\r
+       CAMG    W,COMSAV                ;CHECK COMMON SIZE\r
+       JRST    LIB3            ;COMMON OK\r
+ILC:   JSP     A,ERRPT\r
+       SIXBIT    /ILL. COMMON#/\r
+IFN HE,<SETOM RESET>\r
+       JRST    LD2\r
+IFN FAILSW,<\r
+LINK:  PUSHJ P,PRWORD  ;GET TWO WORDS\r
+       JUMPLE C,ENDLNK ;THIS IS AN END OF LINK WORD\r
+       CAILE C,20      ;IS IT IN RANGE?\r
+       JRST LOAD4A\r
+       HRRZ V,W        ;GET THE ADDRESS\r
+       HRRZ W,LINKTB(C)        ;GET CURRENT LINK\r
+IFN L,<        CAML V,RINITL   ;LOSE>\r
+       HRRM W,@X       ;PUT INTO CORE\r
+       HRRM V,LINKTB(C)        ;SAVE LINK FOR NEXT ONE\r
+       JRST LINK       ;GO BACK FOR MORE\r
+ENDLNK:        MOVNS C         ;GET ENTRY NUMBER\r
+       JUMPE C,LOAD4A  ;0 IS A LOSER\r
+       CAILE C,20      ;CHECK RANGE\r
+       JRST LOAD4A\r
+       HRLM W,LINKTB(C)        ;SAVE END OF LINK INFO\r
+       JRST LINK       ;MORE>\r
+\f\r
+;ONE PASS LOCAL DEFINITION (BLOCK TYPE 10)\r
+\r
+                       ;PMP PATCH FOR LEFT HALF FIXUPS\r
+IFN FAILSW,<\r
+LOCDLH:\r
+IFN L,<        CAMGE V,RINITL\r
+       JRST .+3>\r
+       HLRZ T,@X       ;LOAD NEXT ADDRESS IN CHAIN\r
+       HRLM W,@X       ;INSERT VALUE INTO PROGRAM\r
+       MOVE V,T\r
+LOCDLF:        JUMPN V,LOCDLH  ;JUMP IF NOT LAST ADDR. IN CHAIN\r
+       POPJ P,\r
+LOCDLI:        PUSHJ P,LOCDLF\r
+       AOSA LFTHSW     ;TURN OFF LEFT HALF FIX SW (WAS -1) AND SKIP\r
+LOCDLG:        SETOM LFTHSW    ;TURN ON LEFT HALF FIX SW>\r
+                       ;END PMP PATCH\r
+LOCD:  PUSHJ     P,RWORD               ;READ ONE DATA WORD\r
+       HLRZ    V,W             ;STORAGE POINTER IN LEFT HALF\r
+IFN FAILSW,<   SKIPE LFTHSW#   ;LEFT HALF CHAINED? PMP\r
+               JRST LOCDLI     ;YES PMP\r
+               CAMN W,[-1]     ;LEFT HALF NEXT? PMP\r
+               JRST LOCDLG     ;YES, SET SWITCH PMP>\r
+       PUSHJ     P,SYM4A               ;LINK BACK REFERENCES\r
+       JRST    LOCD\r
+IFN STANSW,<\r
+LDNAM: MOVE T,[POINT 6,CURNAM] ;POINTER\r
+       MOVNI D,6       ;SET COUNT\r
+       TLZ W,740000    ;REMOVE CODE BITS\r
+SETNAM:        IDIVI W,50      ;CONVERT FROM RAD 50\r
+       HRLM C,(P)\r
+       AOSGE D\r
+       PUSHJ P,SETNAM\r
+       HLRZ C,(P)\r
+       JUMPE C,INAM\r
+       ADDI C,17\r
+       CAILE C,31\r
+       ADDI C,7\r
+       CAILE C,72\r
+       SUBI C,70\r
+       CAIN C,3\r
+       MOVEI C,16\r
+INAM:  IDPB C,T\r
+       POPJ P, >\r
+\fIFN FAILSW,<\r
+;POLISH FIXUPS <BLOCK TYPE 11>\r
+\r
+PDLOV: SKIPE POLSW     ;PDL OV ARE WE DOING POLISH?\r
+       JRST COMPOL     ;YES\r
+       JSP A,ERRPT\r
+       SIXBIT /PUSHDOWN OVERFLOW#/\r
+IFN HE,<SETOM RESET>\r
+       JRST LD2\r
+COMPOL:        JSP A,ERRPT\r
+       SIXBIT /POLISH TOO COMPLEX#/\r
+IFN HE,<SETOM RESET>\r
+       JRST LD2\r
+\r
+\r
+;READ A HALF WORD AT A TIME\r
+\r
+RDHLF: TLON N,HSW      ;WHICH HALF\r
+       JRST NORD\r
+       PUSHJ P,RWORD   ;GET A NEW ONE\r
+       TLZ N,HSW       ;SET TO READ OTEHR HALF\r
+       MOVEM W,SVHWD#  ;SAVE IT\r
+       HLRZS W         ;GET LEFT HALF\r
+       POPJ P,         ;AND RETURN\r
+NORD:  HRRZ W,SVHWD    ;GET RIGHT HALF\r
+       POPJ P,         ;AND RETURN\r
+\r
+\r
+POLFIX:        MOVE D,[IOWD PPDL,PPDB] ;SET UP THE POLISH PUSHDOWN LIST\r
+       MOVEI V,100     ;IN CASE OF ON OPERATORS\r
+       MOVEM V,SVSAT\r
+       SETOM POLSW     ;WE ARE DOING POLISH\r
+       TLO N,HSW       ;FIX TO READ A WORD THE FIRST TIME\r
+       SETOM GLBCNT#   ;NUMBER OF GLOBALS IN THIS FIXUP\r
+       SETOM OPNUM#    ;NUMBER OF OPERANDS AND OPERATORS THIS FIXUP\r
+       PUSH D,[15]     ;FAKE OPERATOR SO STORE WILL NOT HACK\r
+\r
+RPOL:  PUSHJ P,RDHLF   ;GET A HLAF WORD\r
+       TRNE W,400000   ;IS IT A STORE OP?\r
+       JRST STOROP     ;YES, DO IT\r
+       CAIGE W,3       ;0,1,2 ARE OPERANDS\r
+       JRST OPND\r
+       CAILE W,14      ;14 IS HIGHEST OPERATOR\r
+       JRST LOAD4A     ;ILL FORMAT\r
+       PUSH D,W        ;SAVE OPERATOR IN STACK\r
+       MOVE V,DESTB-3(W)       ;GET NUMBER OF OPERANDS NEEDED\r
+       MOVEM V,SVSAT#  ;ALSO SAVE IT\r
+       JRST RPOL       ;BACK FOR MORE\r
+\r
+\f;HANDLE OPERANDS. THIS GETS COMPLICATED BECAUSE OF THE PRESENCE OF\r
+;GLOBAL REQUESTS\r
+\r
+OPND:  MOVE A,W        ;GET THE OPERAND TYPE HERE\r
+       PUSHJ P,RDHLF   ;THIS IS AT LEAST PART OF THE OPERAND\r
+       MOVE C,W        ;GET IT INTO C\r
+       JUMPE A,HLFOP   ;0 IS HALF-WORD OPERAND\r
+       PUSHJ P,RDHLF   ;NEED FULL WORD, GET SECOND HALF\r
+       HRL C,W ;GET HALF IN RIGHT PLACE\r
+       MOVSS C         ;WELL ALMOST RIGHT\r
+       SOJE A,HLFOP    ;1 IS FULL WORD, 2 IS GLOBAL REQUEST\r
+       PUSHJ P,SDEF    ;SEE IF IT IS ALREADY DEFINED\r
+       JRST    [MOVE C,2(A)    ;YES, WE WIN\r
+               JRST HLFOP]\r
+       AOSN GLBCNT     ;NO, INCREMENT NUMBER OF GLOBALS THIS FIXUP\r
+       AOS HEADNM      ;INCREMENT FIXUP NUMBER IF FIRST GLOBAL\r
+       AOS W,OPNUM     ;GET AN OPERAND NUMBER\r
+       LSH W,4         ;SPACE FOR TYPE\r
+       IORI W,2        ;TYPE 2 IS GLOBAL \r
+       HRL W,HEADNM    ;GET FIXUP NUMBER\r
+       PUSHJ P,SYM3X2  ;AND PUT INTO UDEFINED AREA ALONG WITH NAME\r
+       MOVE C,W        ;ALSO PUT THAT PART OF THE FIXUP IN\r
+       PUSHJ P,SYM3X2\r
+       SKIPA A,[400000]        ;SET UP GLOBAL FLAG\r
+HLFOP: MOVEI A,0       ;VALUE OPERAND FLAG\r
+HLFOP1:        SOJL V,CSAT     ;ENOUGH OPERANDS SEEN?\r
+       PUSH D,C        ;NO, SAVE VALUE(OR GLOBAL NAME)\r
+       HRLI A,400000   ;PUT IN A VALUE MARKER\r
+       PUSH D,A        ;TO THE STACK\r
+       JRST RPOL       ;GET MORE POLISH\r
+\r
+\f;HAVE ENOUGH OPERANDS FOR THE CURRENT OPERATOR\r
+\r
+CSAT:  HRRZS A         ;KEEP ONLY THE GLOBAL-VALUE HALF\r
+       SKIPN SVSAT     ;IS IT UNARY\r
+       JRST UNOP       ;YES, NO NEED TO GET 2ND OPERAND\r
+       HRL A,(D)       ;GET GLOBAL VALUE MARKER FOR 2ND OP\r
+       POP D,W\r
+       POP D,W         ;VALUE OR GLOBAL NAME\r
+UNOP:  POP D,V         ;OPERATOR\r
+       JUMPN A,GLOB    ;IF EITHER IS A GLOBAL HANDLE SPECIALLY\r
+       XCT OPTAB-3(V)  ;IF BOTH VALUES JUST XCT\r
+       MOVE C,W        ;GET THE CURRENT VALUE\r
+SETSAT:        SKIPG V,(D)     ;IS THERE A VALUE IN THE STACK\r
+       MOVE V,-2(D)    ;YES, THIS MUST BE THE OPERATOR\r
+       MOVE V,DESTB-3(V)       ;GET NUMBER OF OPERANDS NEEDED\r
+       MOVEM V,SVSAT   ;SAVE IT HERE\r
+       SKIPG (D)       ;WAS THERE AN OPERAND\r
+       SUBI V,1        ;HAVE 1 OPERAND ALREADY\r
+       JRST HLFOP1     ;GO SEE WHAT WE SHOULD DO NOW\r
+\r
+;HANDLE GLOBALS\r
+\r
+GLOB:  TRNE A,-1       ;IS IT IN RIGHT HALF\r
+       JRST TLHG       ;NO, NEED TO PUT THIS VALUE INTO THE FIXUP LIST\r
+       PUSH P,W        ;SAVE FOR A WHILE\r
+       MOVE W,C        ;THE VALUE\r
+       AOS C,OPNUM     ;GET AN OPERAND NUMBER\r
+       LSH C,4         ;AND PUT IN TYPE\r
+       IORI C,2        ;VALUE TYPE\r
+       HRL C,HEADNM    ;THE FIXUP NUMBER\r
+       PUSHJ P,SYM3X2\r
+       POP P,W         ;RETRIEVE THE OTHER VALUE\r
+TLHG:  SKIPE SVSAT     ;WAS THIS A UNARY OPERATOR\r
+       TLNE A,-1       ;WAS THERE A GLOBAL IN LEFT HALF\r
+       JRST GLSET\r
+       PUSH P,C        ;SAVE THE FIRST OPERAND\r
+       AOS C,OPNUM     ;SEE ABOVE\r
+       LSH C,4\r
+       IORI C,2\r
+       HRL C,HEADNM\r
+       PUSHJ P,SYM3X2\r
+       MOVE W,C\r
+       POP P,C\r
+\r
+GLSET: EXCH C,W        ;GET THEM IN THE OTHER ORDER\r
+       HRL W,C         ;SET UP THE OPERATOR LINK\r
+       AOS C,OPNUM\r
+       LSH C,4 ;SPACE FOR THYPE\r
+       IOR C,V         ;THE OPERATOR\r
+       HRL C,HEADNM\r
+       PUSHJ P,SYM3X2  ;INTO THE UNDEF LIST\r
+       MOVEI A,400000  ;SET UP AS A GLOBAL VALUE\r
+       JRST SETSAT     ;AND SET UP FOR NEXT OPERATOR\r
+\r
+\f;FINALLY WE GET TO STORE THIS MESS\r
+\r
+STOROP:        MOVE T,-2(D)    ;THIS SHOULD BE THE FAKE OPERATOR\r
+       CAIE T,15       ;IS IT\r
+       JRST LOAD4A     ;NO, ILL FORMAT\r
+       HRRZ T,(D)      ;GET THE VALUE TYPE\r
+       JUMPN T,GLSTR   ;AND TREAT GLOBALS SPECIAL\r
+       MOVE A,W        ;THE TYPE OF STORE OPERATOR\r
+       PUSHJ P,RDHLF   ;GET THE ADDRESS\r
+       MOVE V,W        ;SET UP FOR FIXUPS\r
+       POP D,W         ;GET THE VALUE\r
+       POP D,W         ;AFTER IGNORING THE FLAG\r
+       PUSHJ P,@STRTAB+3(A)    ;CALL THE CORRECT FIXUP ROUTINE\r
+COMSTR:        SETZM POLSW     ;ALL DONE WITH POLISH\r
+       MOVE T,OPNUM    ;CHECK ON SIZES\r
+       MOVE V,HEADNM\r
+       CAIG V,477777\r
+       CAILE T,37777\r
+       JRST COMPOL     ;TOO BIG, GIVE ERROR\r
+       PUSHJ P,RWORD   ;THIS SHOULD GET US OUT (I.E RUN OUT COUNT)\r
+       JRST LOAD4A     ;IF NOT, SOMETHING IS WRONG\r
+\r
+STRTAB:        EXP ALSTR,LOCDLF,SYM4A\r
+\r
+GLSTR: MOVEI A,20(W)   ;CONVERT TO OPERATOR 15-17\r
+       PUSHJ P,RDHLF   ;GET THE STORE LOCATION\r
+       POP D,V         ;GET VALUE\r
+       POP D,V\r
+       HRLM V,W        ;SET UP STORAGE ELEMENT\r
+       AOS C,OPNUM\r
+       LSH C,4\r
+       IOR C,A\r
+       HRL C,HEADNM\r
+       PUSHJ P,SYM3X2\r
+       MOVE W,C        ;NOW SET UP THE HEADER\r
+       AOS V,GLBCNT    ;WHICH HAS NUMBER OF GLOBALS\r
+       HRLM V,W\r
+       HRRZ C,HEADNM\r
+       PUSHJ P,SYM3X2\r
+       JRST COMSTR     ;AND FINISH\r
+\r
+\fALSTR1:\r
+IFN L,<        CAMGE V,RINITL\r
+       POPJ P,>\r
+       HRRZ T,@X\r
+       MOVEM W,@X      ;FULL WORD FIXUPS\r
+       MOVE V,T\r
+ALSTR: JUMPN V,ALSTR1\r
+       POPJ P,\r
+DESTB: EXP 1,1,1,1,1,1,1,1,0,0,100\r
+\r
+OPTAB: ADD W,C\r
+       SUB W,C\r
+       IMUL W,C\r
+       IDIV W,C\r
+       AND W,C\r
+       IOR W,C\r
+       LSH W,(C)\r
+       XOR W,C\r
+       SETCM W,C\r
+       MOVN W,C\r
+       REPEAT 3,<JRST STRSAT>\r
+\r
+\r
+\fPOLSAT:       PUSH P,C        ;SAVE SYMBOL\r
+       MOVE C,V        ;POINTER\r
+       PUSHJ P,SREQ    ;GO FIND IT\r
+       SKIPA\r
+       JRST LOAD4A     ;SOMETHING IS ROTTEN IN DENMARK\r
+       MOVEM W,2(A)    ;STORE VALUE\r
+       HLRZS C         ;NOW FIND HEADER\r
+       PUSHJ P,SREQ\r
+       SKIPA\r
+       JRST LOAD4A\r
+       HRLZI V,-1      ;AND DECREMENT COUNT\r
+       ADDB V,2(A)\r
+       TLNN V,-1       ;IS IT NOW 0\r
+       JRST PALSAT     ;YES, GO DO POLISH\r
+       POP P,C         ;RESTORE SYMBOL\r
+       JRST SYM2W1     ;AND RETURN\r
+\r
+PALSAT:        PUSH P,W        ;SAVE VALUE\r
+       MOVEM C,HDSAV#  ;SAVE THE HEADER NUMBER\r
+       MOVE D,[IOWD PPDL,PPDB] ;SET UP A PDL\r
+       MOVE C,V        ;GET THE POINTER\r
+       HRL C,HDSAV     ;AND THE FIXUP NUMBER\r
+       PUSHJ P,REMSYM  ;REMOVE THE HEADER FORM EXISTANCE\r
+       PUSHJ P,SREQ    ;GO FINE THE NEXT LINK\r
+       SKIPA\r
+       JRST LOAD4A     ;LOSE\r
+       ANDI C,17       ;GET OPERATOR TYPE\r
+       HRRZ V,2(A)     ;PLACE TO STORE\r
+       PUSH D,V\r
+       PUSH D,[XWD 400000,0]\r
+       PUSH D,C        ;THIS HAD BETTER BE A STORE OR WE ARE IN TROUBLE\r
+       HLRZ C,2(A)     ;GET POINTER TO POLISH CHAIN\r
+PSAT1: PUSHJ P,REMSYM  ;REMOVE SYMBOL\r
+\r
+\fPSAT2:        HRL C,HDSAV     ;GET FIXUP NUMBER\r
+       PUSHJ P,SREQ    ;LOOK FOR IT\r
+       SKIPA\r
+       JRST LOAD4A\r
+       ANDI C,17       ;THE OPERATOR NUMBER\r
+       CAIN C,2        ;IS IT AN OPERAND?\r
+       JRST PSOPD      ;YES, GO PROCESS\r
+       PUSH D,C        ;YES STORE IT\r
+       SKIPN DESTB-3(C)        ;IS IT UNARY\r
+       JRST PSUNOP     ;YES\r
+       HLRZ C,2(A)     ;GET FIRST OPERAND\r
+       HRLI C,600000   ;AND MARK AS VALUE\r
+       PUSH D,C\r
+PSUNOP:        HRRZ C,2(A)     ;OTHER OPERAND\r
+       JRST PSAT1      ;AND AWAY WE GO\r
+\r
+PSOPD: MOVE C,2(A)     ;THIS IS A VALUE\r
+       PUSHJ P,REMSYM  ;GET RID OF THAT PART OF THE CHAIN\r
+PSOPD1:        SKIPG V,(D)     ;IS THERE A VALUE IN THE STACK\r
+       JRST PSOPD2     ;YES, TAKE GOOD CARE OF IT\r
+COMOP: POP D,V         ;NO, GET THAT OPERATOR OUT OF THERE\r
+       XCT OPTAB-3(V)  ;AND DO IT\r
+       MOVE C,W        ;GET RESULT IN RIGHT PLACE\r
+       JRST PSOPD1     ;AND TRY FOR MORE\r
+PSOPD2:        TLNE V,200000   ;IS IT A POINTER\r
+       JRST DBLOP      ;YES, NEEDS MORE WORK\r
+       MOVE W,C        ;NO, ONE WE HAVE IS FIRST OPND, GET IT INTO W\r
+       POP D,C         ;VALUE POINTER\r
+       POP D,C         ;2ND OPERAND INTO C\r
+       JRST COMOP      ;GO PROCESS OPERATOR\r
+\r
+DBLOP: EXCH C,(D)      ;PUT VALUE IN STACK AND RETRIEV POINTER\r
+       PUSH D,[XWD 400000,0]   ;MARK AS VALUE\r
+       JRST PSAT2      ;AND GO LOOK FOR MORE TROUBLE\r
+\r
+\fSTRSAT:       MOVE W,C        ;GET VALUE TO STORE IN W\r
+       MOVE C,V        ;GET OPERATOR HERE\r
+       POP D,V\r
+       POP D,V         ;GET ADDRESS TO STORE\r
+       PUSHJ P,@STRTAB-15(C)\r
+       POP P,W ;RESTORE THINGS\r
+       POP P,C\r
+       JRST SYM2W1\r
+\r
+PPDB:  BLOCK PPDL+1>\r
+\r
+REMSYM:        MOVE T,1(S)\r
+       MOVEM T,1(A)\r
+       MOVE T,2(S)\r
+       MOVEM T,2(A)\r
+       ADD S,SE3\r
+       MOVEM A,SVA\r
+       POPJ P,\r
+\r
+\f;SYMBOL TABLE SEARCH SUBROUTINES\r
+\r
+;      ENTERED WITH SYMBOL IN C\r
+;      RETURN IS WITH POINTER IN A IF MATCHING SYMBOL FOUND\r
+;      OTHERWISE, A SKIP ON RETURN OCCURS\r
+\r
+SREQ:  JUMPGE    S,CPOPJ1              ;JUMP IF NO UNDEF. SYMBOLS\r
+       SKIPA     A,S           ;LOAD REQUEST SEARCH POINTER\r
+SDEF:  MOVE    A,B             ;LOAD DEF. SYMBOL SEARCH POINTER\r
+SDEF1: CAMN    C,1(A)\r
+       POPJ    P,                      ;SYMBOLS MATCH, RETURN\r
+SDEF2: ADD     A,SE3\r
+       JUMPL     A,SDEF1\r
+IFE K,<        JRST    CPOPJ1          ;SYMBOL NOT FOUND SKIPS ON RETURN>\r
+IFN K,<\r
+CPOPJ1:        AOS     (P)             ;TRA 2,4\r
+       POPJ    P,              ;...>\r
+\r
+;RELOCATION AND BLOCK INPUT\r
+\r
+PRWORD:   PUSHJ     P,RWORD            ;READ A WORD PAIR\r
+       MOVE    C,W             ;LOAD C WITH FIRST DATA WORD\r
+       TRNE    E,377777                ;TEST FOR END OF BLOCK\r
+       JRST    RWORD1          ;INPUT SECOND WORD OF PAIR\r
+       MOVEI     W,0           ;NO SECOND WORD, ASSUME ZERO\r
+       POPJ    P,\r
+\r
+RWORD: TRNN    E,377777                ;TEST FOR END OF BLOCK\r
+       JRST    LOAD1           ;RETURN TO LOAD THE NEXT BLOCK\r
+RWORD1:   AOBJN     E,RWORD2           ;JUMP IF DATA WORD NEXT\r
+       PUSHJ     P,WORD                ;READ CONTROL WORD\r
+       MOVE    Q,W             ;DON'T COUNT RELOCATION WORDS\r
+       HRLI    E,-22           ;SET RELOCATION WORD BYTE COUNT\r
+RWORD2:   PUSHJ     P,WORD             ;READ INPUT WORD\r
+       JUMPGE    Q,RWORD3              ;TEST LH RELOCATION BIT\r
+       HRLZ    T,R\r
+       ADD     W,T             ;LH RELOCATION\r
+RWORD3:   TLNE Q,200000                ;TEST RH RELOCATION BIT\r
+       HRRI    W,@R            ;RH RELOCATION\r
+       LSH     Q,2\r
+       POPJ    P,\r
+\r
+\f;PRINT STORAGE MAP SUBROUTINE\r
+\r
+PRMAP: PUSHJ   P,FSCN1 ;LOAD OTHER FILES FIRST\r
+       PUSHJ   P,CRLFLF        ;START NEW PAGE\r
+       HRRZ    W,R\r
+       PUSHJ     P,PRNUM0\r
+       JSP     A,ERRPT7\r
+       SIXBIT  ?IS THE PROGRAM BREAK@?\r
+       PUSHJ   P,CRLF          ;START STORAGE MAP\r
+       JSP     A,ERRPT0        ;PRINT HEADER\r
+       SIXBIT  ?STORAGE MAP@?\r
+       HLRE    A,B\r
+       MOVNS     A\r
+       ADDI    A,(B)\r
+PRMAP1:   SUBI A,2\r
+       SKIPL     C,1(A)                ;LOAD SYMBOL, SKIP IF DELETED\r
+       TLNE    C,300000                ;TEST FOR LOCAL SYMBOL\r
+       JRST    PRMAP4          ;IGNORE LOCAL SYMBOLS\r
+       TLNN    C,040000\r
+       PUSHJ     P,CRLF                ;PROGRAM NAME\r
+       PUSHJ     P,PRNAM1              ;PRINT SYMBOL AND VALUE\r
+       TLNE    C,040000\r
+       JRST    PRMAP3          ;GLOBAL SYMBOL\r
+       HLRE    C,W             ;POINTER TO NEXT PROG. NAME\r
+       JUMPGE    C,PRMAP2              ;JUMP IF LAST PROGRAM NAME\r
+       ADDI    C,2(A)          ;COMPUTE LOC. OF FOLLOWING NAME\r
+       SKIPA     T,@C          ;LOAD ORIGIN OF FOLLOWING PROG.\r
+PRMAP2:   HRRZ T,R             ;LOAD PROGRAM BREAK\r
+       SUBM    T,W             ;SUBTRACT ORIGIN TO GET LENGTH\r
+       PUSHJ     P,PRNUM               ;PRINT PROGRAM LENGTH\r
+       PUSHJ     P,CRLF\r
+       TLNN    N,ALLFLG                ;SKIP IF LIST ALL MODE IS ON\r
+       TRNE    W,777777                ;SKIP IF ZERO LENGTH PROGRAM\r
+       JRST    PRMAP3\r
+       JUMPE     C,PRMAP5              ;JUMP IF LAST PROGRAM\r
+       SKIPA     A,C           ;SKIP GLOBALS, ZERO LENGTH PROG.\r
+PRMAP3:   PUSHJ     P,CRLF\r
+PRMAP4:   CAILE     A,(B)              ;TEST FOR END OF SYMBOL TABLE\r
+       JRST    PRMAP1\r
+PRMAP5:\r
+\r
+\f;LIST UNDEFINED GLOBALS\r
+\r
+PMS:   PUSHJ   P,FSCN1 ;LOAD FILES FIRST\r
+       JUMPGE  S,PMS3          ;JUMP IF NO UNDEFINED GLOBALS\r
+       HLLOS 42                ;SET SOME ERROR TO ABORT EXECUTION\r
+       PUSHJ   P,FCRLF         ;START THE MESSAGE\r
+       PUSHJ   P,PRQ           ;PRINT ?\r
+       HLRE    W,S             ;COMPUTE NO. OF UNDEF. GLOBALS\r
+       MOVMS     W\r
+       LSH     W,-1            ;<LENGTH OF LIST>/2\r
+       PUSHJ     P,PRNUM0\r
+       JSP     A,ERRPT7\r
+       SIXBIT    /UNDEFINED GLOBALS@/\r
+       MOVE    A,S             ;LOAD UNDEF. POINTER\r
+PMS2:  PUSHJ     P,CRLF\r
+       PUSHJ   P,PRQ           ;PRINT ?\r
+       PUSHJ     P,PRNAM0              ;PRINT SYMBOL AND POINTER\r
+       ADD     A,SE3\r
+       JUMPL     A,PMS2\r
+       PUSHJ   P,CRLF          ;SPACE AFTER LISTING\r
+\r
+;LIST NUMBER OF MULTIPLY DEFINED GLOBALS\r
+\r
+PMS3:  SKIPN   W,MDG           ;ANY MULTIPLY DEFINED GLOBALS\r
+       JRST    PMS4            ;NO, EXCELSIOR\r
+       HLLOS 42                ;ANOTHER WAY TO LOSE\r
+       PUSHJ   P,FCRLF         ;ROOM AT THE TOP\r
+       PUSHJ   P,PRQ           ;PRINT ?\r
+       PUSHJ   P,PRNUM0        ;NUMBER OF MULTIPLES\r
+       JSP     A,ERRPT7        ;REST OF MESSAGE\r
+       SIXBIT  ?MULTIPLY DEFINED GLOBALS@?\r
+PMS4:  TLNE    N,AUXSWE        ;AUXILIARY OUTPUT DEVICE?\r
+       OUTPUT  2,              ;INSURE A COMPLETE BUFFER\r
+       POPJ    P,              ;RETURN\r
+\r
+\f;ENTER FILE ON AUXILIARY OUTPUT DEVICE\r
+\r
+IAD2:  ENTER   2,DTOUT         ;WRITE FILE NAME IN DIRECTORY\r
+       JRST    IMD3            ;NO MORE DIRECTORY SPACE\r
+       POPJ    P,\r
+\r
+IMD3:  JSP     A,ERRPT         ;DIRECTORY FULL ERROR\r
+       SIXBIT    /DIR. FULL@/\r
+       JRST    LD2\r
+\r
+;PRINT THE 6 DIGIT OCTAL ADDRESS IN W\r
+\r
+;      ACCUMULATORS USED: D,T,V\r
+\r
+PRNAM0:   MOVE C,1(A)          ;LOAD SYMBOL\r
+PRNAM1:   MOVE W,2(A)          ;LOAD VALUE\r
+PRNAM: PUSHJ     P,PRNAME\r
+PRNUM: PUSHJ     P,SPACES\r
+PRNUM0:   MOVE V,PRNUM2                ;LOAD BYTE POINTER TO RH. OF W\r
+       MOVNI     D,6           ;LOAD CHAR. COUNT\r
+PRNUM1:   ILDB T,V             ;LOAD DIGIT TO BE OUTPUT\r
+       ADDI    T,60            ;CONVERT FROM BINARY TO ASCII\r
+       PUSHJ     P,TYPE2\r
+       AOJL    D,PRNUM1                ;JUMP IF MORE DIGITS REMAIN\r
+       POPJ    P,\r
+\r
+PRNUM2:   XWD  220300,W\r
+\r
+;YE OLDE RECURSIVE NUMBER PRINTER\r
+;PRINTS Q, WITH LEADING ZEROES SUPPRESSED; USES A AND T\r
+\r
+RCNUM: IDIVI Q,12              ;RADIX DECIMAL\r
+       ADDI A,"0"\r
+       HRLM A,(P)\r
+       SKIPE Q\r
+       PUSHJ P,RCNUM\r
+       HLRZ T,(P)\r
+       JRST TYPE2\r
+\r
+\f;PRINT FOUR SPACES\r
+\r
+SPACES:   PUSHJ     P,SP1\r
+SP1:   PUSHJ     P,SPACE\r
+SPACE: MOVEI     T,40\r
+       JRST    TYPE2\r
+\r
+;SYMBOL PRINT - RADIX 50\r
+\r
+;      ACCUMULATORS USED: D,T\r
+\r
+PRNAME:   MOVE T,C             ;LOAD SYMBOL\r
+       TLZ     T,740000                ;ZERO CODE BITS\r
+       MOVNI     D,6           ;LOAD CHAR. COUNT\r
+SPT:   IDIVI     T,50          ;THE REMAINDER IS THE NEXT CHAR.\r
+       HRLM    V,(P)           ;STORE IN LH. OF PUSHDOWN LIST\r
+       AOSGE     D                     ;SKIP IF NO CHARS. REMAIN\r
+       PUSHJ     P,SPT         ;RECURSIVE CALL FOR NEXT CHAR.\r
+       HLRZ    T,(P)           ;LOAD FROM LH. OF PUSHDOWN LIST\r
+       JUMPE     T,TYPE                ;BLANK\r
+       ADDI    T,60-1\r
+       CAILE     T,71\r
+       ADDI    T,101-72\r
+       CAILE     T,132\r
+       SUBI    T,134-44\r
+       CAIN    T,43\r
+       MOVEI     T,56\r
+       JRST    TYPE2\r
+;PRINT A WORD OF SIXBIT CHARACTERS IN AC W\r
+\r
+;      ACCUMULATORS USED: Q,T,D\r
+\r
+PWORD: MOVNI     Q,6           ;SET CHARACTER COUNT TO SIX\r
+PWORD1:   MOVE D,LSTPT         ;ENTER HERE WITH Q PRESET\r
+PWORD2:   ILDB T,D             ;LOAD NEXT CHAR. TO BE OUTPUT\r
+       PUSHJ     P,TYPE                ;OUTPUT CHARACTER\r
+       AOJL    Q,PWORD2\r
+       POPJ    P,\r
+\r
+\f;ERROR MESSAGE PRINT SUBROUTINE\r
+\r
+;      FORM OF CALL:\r
+\r
+;      JSP     A,ERRPT\r
+;      SIXBIT    /<MESSAGE>/\r
+\r
+;      ACCUMULATORS USED: T,V,C,W\r
+\r
+ERRPT: TLO     F,FCONSW        ;INSURE TTY OUTPUT\r
+       PUSHJ   P,CRLF          ;ROOM AT THE TOP\r
+       PUSHJ   P,PRQ           ;START OFF WITH ?\r
+ERRPT0:   PUSH P,Q             ;SAVE Q\r
+       SKIPA     V,ERRPT5\r
+ERRPT1:   PUSHJ     P,TYPE\r
+       ILDB    T,V\r
+       CAIN    T,40\r
+       JRST    ERRPT4\r
+       CAIN    T,5\r
+       JRST    ERRPT9\r
+       CAIE    T,3\r
+       JRST    ERRPT1\r
+       SKIPN     C,DTIN\r
+       JRST    ERRPT4\r
+       MOVNI     Q,14\r
+       MOVEI     W,77\r
+ERRPT2:   TDNE C,W\r
+       JRST    ERRPT3\r
+       LSH     W,6\r
+       AOJL    Q,ERRPT2\r
+ERRPT3:   MOVE W,ERRPT6\r
+       PUSHJ     P,PWORD1\r
+       SKIPN     W,DTIN1\r
+       JRST    ERRPT4\r
+       LSH     W,-6\r
+       TLO     W,160000\r
+       MOVNI     Q,4\r
+       PUSHJ     P,PWORD1\r
+ERRPT4:   PUSHJ     P,CRLF\r
+ERRP41:        POP     P,Q\r
+       TLZ     F,FCONSW        ;ONE ERROR PER CONSOLE\r
+       AOS     V               ;PROGRAM BUMMERS BEWARE:\r
+       JRST    @V              ;V HAS AN INDEX OF A\r
+\r
+ERRPT5:   POINT     6,0(A)\r
+ERRPT6:   SIXBIT    / FILE /\r
+\r
+\fERRPT8:       TLO     F,FCONSW        ;INSURE TTY OUTPUT\r
+       PUSHJ   P,PRQ           ;START WITH ?\r
+       CAIGE   T,140           ;IS IT A NON-PRINTING CHAR?\r
+       CAIL    T,40\r
+       JRST    ERRP8\r
+       PUSH    P,T\r
+       MOVEI     T,136         ;UP ARROW\r
+       PUSHJ     P,TYPE2\r
+       POP     P,T\r
+       ADDI    T,100           ;CONVERT TO PRINTING CHAR.\r
+ERRP8: PUSHJ     P,TYPE2\r
+ERRPT7:   PUSHJ     P,SPACE\r
+       JRST    ERRPT0\r
+\r
+ERRPT9:   MOVEI     V,@V\r
+       PUSH    P,V\r
+       JSP     A,ERRPT7\r
+       SIXBIT  ?ILLEGAL -LOADER@?\r
+       POP     P,V\r
+       JRST    ERRP41\r
+\r
+;PRINT QUESTION MARK\r
+\r
+PRQ:   PUSH    P,T             ;SAVE\r
+       MOVEI   T,"?"           ;PRINT ?\r
+       PUSHJ   P,TYPE2         ;...\r
+       POP     P,T             ;RESTORE\r
+       POPJ    P,              ;RETURN\r
+\r
+\f;INPUT - OUTPUT INTERFACE\r
+\r
+;BINARY INPUT SUBROUTINE - RETURNS A WORD IN W\r
+IFE K,<\r
+WORDPR:        PUSHJ   P,WORD          ;GET FIRST WORD OF PAIR\r
+       MOVE    C,W             ;KEEP IT HANDY>\r
+WORD:  SOSG    BUFR2           ;SKIP IF BUFFER NOT EMPTY\r
+       JRST    WORD2\r
+WORD1: ILDB    W,BUFR1         ;PICK UP 36 BIT WORD\r
+       POPJ    P,\r
+\r
+WORD2: INPUT     1,                    ;GET NEXT BUFFER LOAD\r
+       STATUS    1,W           ;GET DEVICE STATUS FROM MONITOR\r
+       TRNE    W,IODEND                ;TEST FOR EOF\r
+       JRST    EOF             ;END OF FILE EXIT\r
+       TRNN    W,IOBAD         ;TEST FOR DATA ERROR\r
+       JRST    WORD1           ;DATA OK - CONTINUE LOADING\r
+       JSP     A,ERRPT         ;DATA ERROR - PRINT MESSAGE\r
+       SIXBIT    /INPUT ERROR#/\r
+IFN HE,<SETOM RESET>\r
+       JRST    LD2             ;GO TO ERROR RETURN\r
+;TYPEOUT SUBROUTINE - THE CHARACTER SUPPLIED IN T IS CONVERTED TO ASCII\r
+;AND IS OUTPUT ON THE CONSOLE AND/OR THE SPECIFIED LOADER MAP OUTPUT\r
+;DEVICE\r
+\r
+CRLFLF:   PUSHJ     P,CRLF\r
+FCRLF: TLO     F,FCONSW        ;INSURE TTY OUTPUT\r
+CRLF:  MOVEI     T,15          ;CARRIAGE RETURN LINE FEED\r
+       PUSHJ     P,TYPE2\r
+       MOVEI     T,12-40               ;LINE FEED IN PSEUDO SIXBIT\r
+TYPE:  MOVEI     T,40(T)               ;CONVERT SIXBIT TO ASCII\r
+TYPE2: TLNN    N,AUXSWI        ;IS THER AN AUXILIARY DEVICE?\r
+       JRST    TYPE3           ;NO, DONT OUTPUT TO IT\r
+       TLON    N,AUXSWE        ;IS AUX. DEV. ENTERED?\r
+       PUSHJ   P,IAD2          ;NOPE, DO SO!\r
+       SOSG    ABUF2           ;SPACE LEFT IN BUFFER?\r
+       OUTPUT  2,              ;CREATE A NEW BUFFER\r
+       IDPB    T,ABUF1         ;DEPOSIT CHARACTER\r
+       TLNN    F,FCONSW        ;FORCE OUTPUT TO CONSOLE TOO?\r
+       POPJ    P,              ;NOPE\r
+IFE HE,<\r
+TYPE3: SKIPN   BUFO2           ;END OF BUFFER\r
+       OUTPUT  3,              ;FORCE OUTPUT NOW\r
+       IDPB    T,BUFO1         ;DEPOSIT CHARACTER\r
+       CAIN    T,12            ;END OF LINE\r
+       OUTPUT  3,              ;FORCE AN OUTPUT\r
+       >\r
+IFN HE, <\r
+TYPE3: ROT T,-7\r
+       MOVEM T,FOO1#\r
+       MOVEI T,FOO1\r
+       CALLI T,CDDTOUT>\r
+       POPJ    P,\r
+\r
+\fSE3:  XWD     2,2             ;SYMBOL POINTER INCREMENT\r
+LSTPT: POINT     6,W           ;CHARACTER POINTER TO W\r
+PDLPT: XWD     -41,PDLST-1;    INITIAL PUSHDOWN POINTER\r
+COMM:  SQUOZE    0,.COMM.\r
+PDSAV: 0                               ;SAVED PUSHDOWN POINTER\r
+COMSAV:   0                            ;LENGTH OF COMMON\r
+MDG:   0                       ;COUNTER FOR MUL DEF GLOBALS\r
+PDLST: IFE HE,<BLOCK   40>\r
+IFN FAILSW,<LINKTB:    BLOCK 21>\r
+\r
+F.C:   0\r
+       0       ;STORE N HERE\r
+       0       ;STORE X HERE\r
+       0       ;STORE H HERE\r
+       0       ;STORE S HERE\r
+       0       ;STORE R HERE\r
+B.C:   0\r
+IFE HE,<\r
+F.I:   0                       ;INITIAL F - FLAGS\r
+       0                       ;INITIAL N\r
+       XWD     V,LDEND         ;INITIAL X - LOAD PROGRAM AFTER LOADER\r
+       EXP     LDEND+JOBPRO    ;INITIAL H - INITIAL PROG BREAK\r
+       0                       ;INITIAL S\r
+       XWD     W,JOBPRO        ;INITIAL R - INITIAL RELOC\r
+       0                       ;INITIAL B\r
+       >\r
+\f;BUFFER HEADERS AND HEADER HEADERS\r
+\r
+IFE HE,<\r
+BUFO:  0                               ;CONSOLE INPUT HEADER HEADER\r
+BUFO1: 0\r
+BUFO2: 0\r
+\r
+BUFI:  0                               ;CONSOLE OUTPUT HEADER HEADER\r
+BUFI1: 0\r
+BUFI2: 0\r
+       >\r
+ABUF:  0                       ;AUXILIARY OUTPUT HEADER HEADER\r
+ABUF1: 0\r
+ABUF2: 0\r
+\r
+BUFR:  0                               ;BINARY INPUT HEADER HEADER\r
+BUFR1: 0\r
+BUFR2: 0\r
+\r
+DTIN:  0                               ;DECTAPE INPUT BLOCK\r
+IFE HE,<DTIN1: 0>\r
+IFN HE,<DTIN1: SIXBIT /REL   />\r
+       0\r
+DTIN2: 0\r
+\r
+DTOUT: 0                               ;DECTAPE OUTPUT BLOCK\r
+DTOUT1:   0\r
+       0\r
+       0\r
+\r
+       TTYL=52                 ;TWO TTY BUFFERS\r
+IFE K,<        BUFL=406                ;TWO DTA BUFFERS FOR LOAD>\r
+IFN K,<        BUFL=203                ;ONE DTA BUFFER FOR LOAD>\r
+       ABUFL=203               ;ONE DTA BUFFER FOR AUX DEV\r
+IFN HE,<BUFL=406>\r
+IFE HE,<\r
+TTY1:  BLOCK     TTYL          ;TTY BUFFER AREA\r
+       >\r
+BUF1:  BLOCK   BUFL            ;LOAD BUFFER AREA\r
+AUX:   BLOCK   ABUFL           ;AUX BUFFER AREA\r
+ZEROS: REPEAT 4,<0>\r
+\r
+IFN RPGSW,<CTLIN:      BLOCK 3\r
+CTLNAM:        BLOCK 3\r
+CTLBUF:        BLOCK 203+1\r
+>\r
+\fIOBKTL=40000\r
+IOIMPM=400000\r
+       IODERR=200000\r
+       IODTER=100000\r
+       IODEND=20000\r
+\r
+IOBAD=IODERR+IODTER+IOBKTL+IOIMPM\r
+\r
+IFE HE,<\r
+       INTERN    PWORD,DTIN,DTOUT,LDEND\r
+       INTERN    WORD,LD,BEG,PDLST,LOAD\r
+       INTERN    CRLF,TYPE,PMS,PRMAP\r
+       INTERN    F,P,X,H,S,R,B,N,T,V,W,C,E,Q,A,D\r
+       >\r
+IFN HE,<\r
+INTERNAL .LOAD, .PRMAP, PMS, .NAME, ERRPT8\r
+EXTERNAL .GETF\r
+       >\r
+\r
+       EXTERN  JOBDDT,JOBFF,JOBSA,JOBREL,JOBSYM,JOBUSY,JOB41\r
+IFE HE,<\r
+IFN STANSW,<PATCH:     BLOCK   20              ;STANFORD HAS SEMI-INFINITE CORE>\r
+>\r
+\r
+;END HERE IF 1K LOADER REQUESTED.\r
+IFN K, <LITS:  LIT\r
+       VAR\r
+IFE HE, <\r
+LDEND: END     LD>\r
+IFN HE, <\r
+LDEND: END >>\r
+\r
+\f;HERE BEGINS FORTRAN FOUR LOADER\r
+\r
+F4LD:\r
+       HRRZ    V,R;            SET PROG BREAK INTO V\r
+       MOVEM   V,LLC;          SAVE FIRST WORD ADDRESS\r
+       MOVEI   W,-2(S);        GENERATE TABLES\r
+       TLO     N,F4SW\r
+       HRRZM   W,MLTP;         MADE LABELS\r
+       HRRZM   W,PLTP;         PROGRAMMER LABELS\r
+       ADD     W,[POINT 1,1];  GENERATE BIT-BYTE POINTER\r
+       MOVEM   W,BITP\r
+       MOVEM   W,SDSTP;        FIRST DATA STATEMENT\r
+       AOS     SDSTP;\r
+       MOVE    W,[JRST ALLOVE] ;LAST DATA STATEMENT\r
+       MOVEM   W,(S)\r
+       HRREI   W,-^D36;        BITS PER WORDUM\r
+       MOVEM   W,BITC;         BIT COUNT\r
+       PUSHJ P,BITWX+1         ;MAKE SURE OF ENOUGH SPACE\r
+\r
+TEXTR: PUSHJ   P,WORD;         TEXT BY DEFAULT\r
+       HLRZ    C,W\r
+       CAIN    C,-1\r
+       JRST    HEADER;         HEADER\r
+       MOVEI   C,1;            RELOCATABLE\r
+       PUSHJ   P,BITW;         SHOVE AND STORE\r
+       JRST    TEXTR;          LOOP FOR NEXT WORD\r
+\r
+ABS:   SOSG    BLKSIZ; MORE TO GET\r
+       JRST    TEXTR;          NOPE\r
+ABSI:  PUSHJ   P,WORD;\r
+       MOVEI   C,0;            NON-RELOCATABLE\r
+       PUSHJ   P,BITW;         TYPE 0\r
+       JRST    ABS\r
+\r
+\f;PROCESS TABLE ENTRIES\r
+\r
+MDLB:  TLNE    F,FULLSW+SKIPSW;        MADE LABEL PROC\r
+       JRST    GLOBDF;         NO ROOM AT THE IN\r
+       HLRZ    C,MLTP;         GET PRESENT SIZE\r
+       CAMGE   C,BLKSIZ;       IF NEW SIZE BIGGER, STR-R-RETCH\r
+       PUSHJ   P,SMLT\r
+       HRRZ    C,MLTP;         GET BASE\r
+MLPLC: ADD     C,BLKSIZ;       MAKE INDEX\r
+       TLNN    F,FULLSW+SKIPSW;        DONT LOAD\r
+       HRRZM   V,(C);          PUT AWAY DEFINITION\r
+GLOBDF:        PUSHJ   P,WORD\r
+       TLNE    F,FULLSW+SKIPSW ;SKIPPING THIS PROG?\r
+       JRST    TEXTR           ;YES, DON'T DEFINE\r
+       MOVEI   C,(V);          AND LOC\r
+       EXCH    W,C\r
+       PUSHJ   P,SYMXX;        PUT IN DDT-SYMBOL TABLE\r
+       PUSHJ   P,BITWX+1\r
+       JRST    TEXTR\r
+\r
+PLB:   TLNE    F,FULLSW+SKIPSW\r
+       JRST    GLOBDF\r
+       HLRZ    C,PLTP;         PRESENT SIZE\r
+       CAMGE   C,BLKSIZ\r
+       PUSHJ   P,SPLT\r
+       HRRZ    C,PLTP\r
+       JRST    MLPLC\r
+\r
+\f;STORE WORD AND SET BIT TABLE\r
+\r
+BITW:  TLNE    F,FULLSW+SKIPSW;        WE DONT LOAD THIS\r
+       POPJ    P,;\r
+       MOVEM   W,@X;           STORE AWAY OFFSET\r
+       IDPB    C,BITP;         STORE BIT\r
+       AOSGE   BITC;           STEP BIT COUNT\r
+       JRST    BITWX;          SOME MORE ROOM LEFT\r
+       HRREI   C,-^D36;        RESET COUNT\r
+       MOVEM   C,BITC\r
+       SOS     PLTP\r
+       SOS     BITP;           ALL UPDATED\r
+IFE EXPAND,<HRL C,MLTP\r
+       SOS MLTP\r
+       HRR     C,MLTP>\r
+IFN EXPAND,<HRRZ       C,MLTP;         TO ADDRESS\r
+               SUBI C,1\r
+               CAIG C,@X\r
+               PUSHJ P,[PUSHJ P,XPAND\r
+                       POPJ P,\r
+                       ADDI C,2000\r
+                       JRST POPJM2]\r
+               SOS MLTP\r
+               HRLI C,1(C)>\r
+       HRRZ    T,SDSTP;        GET DATA POINTER\r
+       BLT     C,-1(T);        MOVE DOWN LISTS\r
+BITWX: AOS     V;              STEP LOADER LOCATION\r
+       HRRZ    T,MLTP\r
+       CAIG    T,@X;           OVERFLOW CHECK\r
+IFE EXPAND,<TLO        F,FULLSW>\r
+IFN EXPAND,<PUSHJ P,   [PUSHJ P,XPAND\r
+                       TLOA F,FULLSW\r
+                       JRST POPJM3\r
+                       POPJ P,]>\r
+       POPJ    P,;\r
+\r
+SMLT:  SUB     C,BLKSIZ;       STRETCH\r
+       MOVS    W,MLTP          ;LEFT HALF HAS OLD BASE\r
+       ADD     C,MLTP          ;RIGHT HALF HAS NEW BASE\r
+IFN EXPAND,<   HRRZS C ;GET RID OF COUNT\r
+               CAIG C,@X\r
+               PUSHJ P,[PUSHJ P,XPAND\r
+                       POPJ P,\r
+                       ADD W,[XWD 2000,0]\r
+                       ADDI C,2000\r
+                       JRST POPJM2]>\r
+       HRRM C,MLTP             ;PUT IN NEW MLTP\r
+       HLL     C,W             ;FORM BLT POINTER\r
+       ADDI    W,(C)           ;LAST ENTRY OF MLTP\r
+       HRL     W,BLKSIZ        ;NEW SIZE OF MLTP\r
+       HLLM    W,MLTP          ;...\r
+SLTC:  BLT     C,0(W);         MOVE DOWN (UP?)\r
+       POPJ    P,;\r
+\r
+SPLT:  SUB     C,BLKSIZ\r
+       MOVS    W,MLTP;\r
+       ADDM    C,PLTP\r
+       ADD     C,MLTP\r
+IFN EXPAND,<   HRRZS C\r
+               CAIG C,@X\r
+               PUSHJ P,[PUSHJ P,XPAND\r
+                       POPJ P,\r
+                       ADD W,[XWD 2000,0]\r
+                       ADDI C,2000\r
+                       JRST POPJM2]>\r
+       HRRM C,MLTP             ;PUT IN NEW MLTP\r
+       HLL     C,W\r
+       HLRZ    W,PLTP          ;OLD SIZE OF PL TABLE\r
+       ADD     W,PLTP          ;NEW BASE OF PL TABLE\r
+       HRL     W,BLKSIZ        ;NEW SIZE OF PL TABLE\r
+       HLLM    W,PLTP          ;INTO POINTER\r
+       JRST    SLTC\r
+\r
+PT1:   0\r
+\r
+\r
+\f;PROCESS END CODE WORD\r
+\r
+ENDS:  PUSHJ   P,WORD;         GET STARTING ADDRESS\r
+       TLNE F,SKIPSW\r
+       JRST ENDS1      ;FOOBAZ!!!!!!!!\r
+       JUMPE   W,ENDS1;        NOT MAIN\r
+       ADDI    W,(R);          RELOCATION OFFSET\r
+       TLNN    N,ISAFLG;       IGNORE STARTING ADDRESS\r
+       HRR     F,W;            SET SA\r
+IFN STANSW,<MOVE W,1(N)        ;SET UP NAME\r
+       PUSHJ P,LDNAM>\r
+ENDS1: PUSHJ   P,WORDPR        ;DATA STORE SIZE\r
+       HRRZM   C,PTEMP         ;NUMBER OF PERMANENT TEMPS\r
+       MOVEM   V,CCON;         START OF CONSTANTS AREA\r
+       JUMPE   W,E1;           NULL\r
+       MOVEM   W,BLKSIZ        ;SAVE COUNT\r
+       MOVEI   W,0(V)          ;DEFINE CONST.\r
+       MOVE    C,CNR50         ;...\r
+       TLNN F,SKIPSW!FULLSW\r
+       PUSHJ   P,SYMPT         ;...\r
+       PUSHJ   P,GSWD          ;STORE CONSTANT TABLE\r
+E1:    MOVEI   W,0(V);         GET LOADER LOC\r
+       EXCH    W,PTEMP;        STORE INTO PERM TEMP POINTER\r
+       ADD     W,PTEMP;        FORM TEMP TEMP ADDRESS\r
+       MOVEM   W,TTEMP;        POINTER\r
+       MOVEM   V,GSTAB;        STORE LOADER LOC IN GLOBSUB\r
+       MOVE    C,TTR50         ;DEFINE %TEMP.\r
+       TLNE F,SKIPSW!FULLSW\r
+       JRST E1A\r
+       PUSHJ   P,SYMPT         ;...\r
+       MOVE    C,PTR50         ;DEFINE (IF EXTANT) TEMP.\r
+       MOVEI   W,0(V)          ;...\r
+       CAME    W,TTEMP         ;ANY PERM TEMPS?\r
+       PUSHJ   P,SYMPT         ;YES, DEFINE\r
+E1A:   PUSHJ   P,WORD;         NUMBER OF GLOBSUBS\r
+       JUMPE   W,E11\r
+       MOVEM   W,BLKSIZ        ;SIZE OF GLOBSUB\r
+       PUSHJ   P,GSWD          ;STORE GLOBSUB TABLE\r
+E11:   MOVEM   V,STAB;         SCALARS\r
+       PUSHJ   P,WORD;         HOW MANY?\r
+       JUMPE   W,E21;          NONE\r
+       PUSHJ   P,GSWDPR        ;STORE SCALAR TABLE\r
+E21:   MOVEM   V,ATAB;         ARRAY POINTER\r
+       PUSHJ   P,WORD;         COMMENTS FOR SCALARS APPLY\r
+       JUMPE   W,E31\r
+       PUSHJ   P,GSWDPR        ;STORE ARRAY TABLE\r
+E31:   MOVEM   V,AOTAB;        ARRAYS OFFSET\r
+       PUSHJ   P,WORD;         SAME COMMENTS AS ABOVE\r
+       JUMPE   W,E41\r
+       PUSHJ   P,GSWDPR        ;STORE ARRAY OFFSET TABLE\r
+E41:   PUSHJ   P,WORD;         TEMP, SCALAR, ARRAY SIZE\r
+       TLNE    F,FULLSW!SKIPSW ;SKIPPING THIS PROG?\r
+       MOVEI   W,0             ;DON'T ACCEPT GLOB SUBPROG REQUESTS\r
+       MOVEM   V,CTAB;         SETUP COMMON TABLE POINTER\r
+       ADD     W,GSTAB;        GLOBAL SUBPROG BASE\r
+       MOVEM   W,COMBAS;       START OF COMMON\r
+       PUSHJ   P,WORD;         COMMON BLOCK SIZE\r
+       HRRZM   W,BLKSIZ\r
+       JUMPE   W,PASS2;        NO COMMON\r
+COMTOP:        PUSHJ   P,WORDPR        ;GET A COMMON PAIR\r
+       PUSHJ   P,SDEF;         SEARCH\r
+       JRST    COMYES;         ALREADY THERE\r
+       HRLS    W\r
+       HRR     W,COMBAS;       PICK UP THIS COMMON LOC\r
+       TLNN F,SKIPSW!FULLSW\r
+       PUSHJ   P,SYMXX;        DEFINE IT\r
+       MOVS    W,W;            SWAP HALFS\r
+       ADD     W,COMBAS;       UPDATE COMMON LOC\r
+       HRRM    W,COMBAS;       OLD BASE PLUS NEW SIZE\r
+       HLRZS   W;              RETURN ADDRESS\r
+       TLZ     C,400000\r
+       TLNN F,SKIPSW!FULLSW\r
+       PUSHJ   P,SYMXX\r
+COMCOM:        PUSHJ   P,CWSTWX        ;STORE A WORD PAIR\r
+       SOS     BLKSIZ\r
+       SOSLE   BLKSIZ\r
+       JRST    COMTOP\r
+       JRST    PASS2\r
+\r
+COMYES:        TLNE F,SKIPSW\r
+       JRST COMCOM     ;NO ERRORS IF SKIPPING\r
+       HLRZ    C,2(A);         PICK UP DEFINITION\r
+       CAMLE   W,C;            CHECK SIZE\r
+       JRST    ILC;            ILLEGAL COMMON\r
+       MOVE    C,1(A);         NAME\r
+       HRRZ    W,2(A); BASE\r
+       JRST    COMCOM\r
+\r
+\f\r
+PRSTWX:        PUSHJ   P,WORDPR        ;GET A WORD PAIR\r
+CWSTWX:        EXCH    C,W             ;SPACE TO STORE FIRST WORD OF PAIR?\r
+       PUSHJ   P,WSTWX         ;...\r
+       EXCH    C,W             ;THERE WAS; IT'S STORED\r
+WSTWX: TLNE    F,FULLSW!SKIPSW ;SPACE FOR ANOTHER WORD?\r
+       POPJ    P,              ;NOPE, RETURN\r
+       MOVEM   W,@X            ;YES, STORE IT.\r
+       JRST    BITWX           ;TELL THE TABLES ABOUT IT; THEN RETURN\r
+\r
+\r
+GSWD:  PUSHJ   P,WORD          ;GET WORD FROM TABLE\r
+       PUSHJ   P,WSTWX         ;STASH IT\r
+       SOSE    BLKSIZ          ;FINISHED?\r
+       JRST    GSWD            ;NOPE, LOOP\r
+       POPJ    P,              ;TRA 1,4\r
+\r
+GSWDPR:        MOVEM   W,BLKSIZ        ;KEEP COUNT\r
+GSWDP1:        PUSHJ   P,PRSTWX        ;GET AND STASH A PAIR\r
+       SOS     BLKSIZ          ;FINISHED?\r
+       SOSLE   BLKSIZ          ;...\r
+       JRST    GSWDP1          ;NOPE, LOOP\r
+       POPJ    P,              ;TRA 1,4\r
+\r
+\f;BEGIN HERE PASS2 TEXT PROCESSING\r
+\r
+PASS2: ADDI V,(X)\r
+       MOVEM V,TOPTAB  ;SAVE FOR OVERLAP CHECKING\r
+       TLNE    F,FULLSW+SKIPSW;        ABORT?\r
+       JRST    ALLOVE;         YES\r
+       MOVE    V,LLC           ;PICK UP PROGRAM ORIGIN\r
+       CAML    V,CCON          ;IS THIS A PROGRAM?\r
+       JRST    FBLKD           ;NO, GO LOOK FOR FIRST BLK DATA\r
+       TLOE    N,PGM1          ;YES, IS THIS FIRST F4 PROG?\r
+       JRST    NOPRG           ;NO\r
+       HRR     W,COMBAS        ;YES, PLACE PROG BREAK IN LH\r
+IFE L,<        HRLM    W,JOBCHN(X)     ;FOR CHAIN>\r
+NOPRG: HRRZ    W,PLTP;         GET PROG TABLE BASE\r
+       HLRZ    C,PLTP;         AND SIZE\r
+       ADD     W,C;            COMPUTE END OF PROG TABLE\r
+       ADD     W,[POINT 1,1];  AND BEGINNING OF BIT TABLE\r
+       EXCH    W,BITP;         SWAP POINTERS\r
+PASS2B:        ILDB    C,BITP;         GET A BIT\r
+       JUMPE   C,PASS2C;       NO PASS2 PROCESSING\r
+       PUSHJ   P,PROC;         PROCESS A TAG\r
+       JRST    PASS2B;         MORE TO COME\r
+       JRST    ENDTP;\r
+\r
+PROC:  LDB     C,[POINT 6,@X,23];      TAG\r
+       SETZM   MODIF;          ZERO TO ADDRESS MODIFIER\r
+       TRZE    C,40;\r
+       AOS     MODIF\r
+       HRLM    C,ENDTAB;       ERROR SETUP\r
+       MOVEI   W,TABDIS;       HEAD OF TABLE\r
+       HLRZ    T,(W);          GET ENTRY\r
+       CAME    T,C;            CHECK\r
+       AOJA    W,.-2\r
+       HRRZ    W,(W);          GET DISPATCH\r
+       LDB     C,[POINT 12,@X,35]\r
+       JRST    (W);            DISPATCH\r
+\r
+TABDIS:        XWD 11,PCONS;           CONSTANTS\r
+       XWD 06,PGS;             GLOBAL SUBPROGRAMS\r
+       XWD 20,PST;             SCALARS\r
+       XWD 22,PAT;             ARRAYS\r
+       XWD 01,PATO;            ARRAYS OFFSET\r
+       XWD 00,PPLT;            PROGRAMMER LABELS\r
+       XWD 31,PMLT;            MADE LABESL\r
+       XWD 26,PPT;             PERMANENT TEMPORARYS\r
+       XWD 27,PTT;             TEMPORARY TEMPORARYS\r
+ENDTAB:        XWD 00,LOAD4A;          ERRORS\r
+\r
+PASS2C:        PUSHJ   P,PASS2A\r
+       JRST    PASS2B\r
+       JRST    ENDTP\r
+\r
+\f;DISPATCH ON A HEADER\r
+\r
+HEADER:        CAMN    W,[EXP -2];     END OF PASS ONE\r
+       JRST    ENDS\r
+       LDB     C,[POINT 12,W,35];      GET SIZE\r
+       MOVEM   C,BLKSIZ\r
+       ANDI    W,770000\r
+       JUMPE   W,PLB;  PROGRAMMER LABEL\r
+       CAIN    W,500000;       ABSOLUTE BLOCK\r
+       JRST    ABSI;\r
+       CAIN    W,310000;       MADE LABEL\r
+       JRST    MDLB;           MADE LABEL\r
+       CAIN    W,600000\r
+       JRST    GLOBDF\r
+       CAIN    W,700000;       DATA STATEMENT\r
+       JRST    DATAS\r
+       JRST    LOAD4A;         DATA STATEMENTS WILL GO HERE\r
+\r
+TOPTAB:        0       ;TOP OF TABLES\r
+CTAB:  0;      COMMON\r
+ATAB:  0;      ARRAYS\r
+STAB:  0;      SCALARS\r
+GSTAB: 0;      GLOBAL SUBPROGS\r
+AOTAB: 0;      OFFSET ARRAYS\r
+CCON:  0;      CONSTANTS\r
+PTEMP: 0;      PERMANENT TEMPS\r
+TTEMP: 0;      TEMPORARY TEMPS\r
+COMBAS:        0;      BASE OF COMMON\r
+LLC:   0;      PROGRAM ORIGIN\r
+BITP:  0;      BIT POINTER\r
+BITC:  0;      BIT COUNT\r
+PLTP:  0;      PROGRAMMER LABEL TABLE\r
+MLTP:  0;      MADE LABEL TABLE\r
+SDS:   0       ;START OF DATA STATEMENTS\r
+SDSTP: 0       ;START OF DATA STATEMENTS POINTER\r
+BLKSIZ:        0;      BLOCK SIZE\r
+MODIF: 0;      ADDRESS MODIFICATION +1\r
+TTR50: XWD     136253,114765   ;RADIX 50 %TEMP.\r
+PTR50: XWD     100450,614765   ;RADIX 50 TEMP.\r
+CNR50: XWD     112320,235025   ;RADIX 50 CONST.\r
+\r
+\f;ROUTINES TO PROCESS POINTERS\r
+\r
+PCONS: ADD     C,CCON;         GENERATE CONSTANT ADDRESS\r
+       SOJA    C,PCOMX         ;ADJUST FOR 1 AS FIRST ENTRY\r
+\r
+PSTA:  PUSHJ   P,SWAPSY        ;NON-COMMON SCALARS AND ARRAYS\r
+       ADDI    C,(R);          RELOCATE\r
+PCOM1: PUSHJ   P,SYDEF         ;...\r
+PCOMX: ADD     C,MODIF         ;ADDR RELOC FOR DP\r
+       HRRM    C,@X;           REPLACE ADDRESS\r
+PASS2A:        AOS     V;              STEP READOUT POINTER\r
+       CAML    V,CCON          ;END OF PROCESSABLES?\r
+CPOPJ1:        AOS     (P);            SKIP\r
+       POPJ    P,;\r
+\r
+PAT:   SKIPA   W,ATAB          ;ARRAY TABLE BASE\r
+PST:   MOVE    W,STAB          ;SCALAR TABLE  BASE\r
+       ROT     C,1             ;SCALE BY 2\r
+       ADD     C,W             ;ADD IN TABLE BASE\r
+       ADDI    C,-2(X);        TABLE ENTRY\r
+       HLRZ    W,(C);          CHECK FOR COMMON\r
+       JUMPE   W,PSTA;         NO COMMON\r
+       PUSHJ   P,COMDID        ;PROCESS COMMON\r
+       JRST    PCOM1\r
+\r
+COMDID:        LSH     W,1             ;PROCESS COMMON TABLE ENTRIES\r
+       ADD     W,CTAB;         COMMON TAG\r
+       ADDI    W,-2(X);        OFFSET\r
+       PUSHJ   P,SWAPSY;       GET SYMBOL AND SET TO DEFINED\r
+       ADD     C,1(W);         BASE OF COMMON\r
+       POPJ    P,              ;RETURN\r
+\r
+PATO:  ROT     C,1\r
+       ADD     C,AOTAB;        ARRAY OFFSET\r
+       ADDI    C,-2(X);        LOADER OFFSET\r
+       MOVEM   C,CT1;          SAVE CURRENT POINTER\r
+       HRRZ    C,1(C);         PICK UP REFERENCE POINTER\r
+       ANDI    C,7777; MASK TO ADDRESS\r
+       ROT     C,1;            ALWAYS A ARRAY\r
+       ADDI    C,-2(X)\r
+       ADD     C,ATAB\r
+       HLRZ    W,(C);          COMMON CHECK\r
+       JUMPE   W,NCO\r
+       PUSHJ   P,COMDID        ;PROCESS COMMON\r
+       PUSHJ   P,SYDEF\r
+       MOVE    C,CT1\r
+       HRRE    C,(C)\r
+       ADD     C,1(W)\r
+       JRST    PCOMX\r
+\r
+\fNCO:  PUSHJ   P,SWAPSY;\r
+       ADDI    C,(R)           ;DEFINE SYMBOL IN TRUE LOC\r
+       PUSHJ   P,SYDEF         ;...\r
+       MOVE    C,CT1\r
+       HRRZ    C,(C)           ;OFFSET ADDRESS PICKUP\r
+       ADDI    C,(R)           ;WHERE IT WILL BE\r
+       JRST    PCOMX           ;STASH ADDR AWAY\r
+\r
+PTT:   ADD     C,TTEMP;        TEMPORARY TEMPS\r
+       SOJA    C,PCOMX         ;ADJUST FOR 1 AS FIRST ENTRY\r
+\r
+PPT:   ADD     C,PTEMP;        PERMANENT TEMPS\r
+       SOJA    C,PCOMX         ;ADJUST FOR 1 AS FIRST ENTRY\r
+\r
+PGS:   ADD     C,GSTAB;        GLOBSUBS\r
+       ADDI    C,-1(X);        OFFSET\r
+       MOVE    C,(C)\r
+       TLC     C,640000;       MAKE A REQUEST\r
+       PUSHJ P,TBLCHK          ;CHECK FOR OVERLAP\r
+       MOVEI   W,(V);          THIS LOC\r
+       HLRM    W,@X;           ZERO RIGHT HALF\r
+       PUSHJ   P,SYMXX\r
+       JRST    PASS2A\r
+\r
+SYDEF: TLNE    N,SYDAT         ;SYMBOL WANTS DEFININITION?\r
+       POPJ    P,              ;NO, GO AWAY\r
+       PUSH    P,C             ;SAVE THE WORLD\r
+       PUSH    P,W\r
+       PUSHJ P,TBLCHK  ;CHECK FOR OVERLAP\r
+       MOVE    W,C\r
+       SKIPE   C,T     ;PICKUP VALUE\r
+       PUSHJ   P,SYMXX\r
+       POP     P,W\r
+       POP     P,C\r
+       POPJ    P,;\r
+\r
+PMLT:  ADD     C,MLTP\r
+       SKIPA\r
+PPLT:  ADD     C,PLTP\r
+       HRRZ    C,(C)\r
+       JRST    PCOMX\r
+\r
+SYMXX: PUSH    P,V\r
+       PUSHJ   P,SYMPT\r
+       POP     P,V\r
+       POPJ    P,;\r
+\r
+SWAPSY:        MOVEI   T,0;            SET TO EXCHANGE DEFS\r
+       EXCH    T,1(C);         GET NAME\r
+       HRRZ    C,(C)           ;GET VALUE\r
+       POPJ    P,\r
+TBLCHK:        HRRZ W,MLTP     ;GETT TOP OV TABLES\r
+       SUBI W,2\r
+       CAMG W,TOPTAB   ;WILL IT OVERLAP\r
+IFE EXPAND,<TLO F,FULLSW>\r
+IFN EXPAND,<   JRST    [PUSHJ P,XPAND\r
+                       TLOA F,FULLSW\r
+                       JRST TBLCHK\r
+                       JRST .+1]>\r
+       POPJ P,\r
+\r
+\f;END OF PASS2\r
+\r
+ALLOVE:        TLZ     N,F4SW          ;END OF F4 PROG\r
+       TLNE F,FULLSW!SKIPSW\r
+       JRST HIGH3\r
+       HRR     R,COMBAS        ;TOP OF THE DATA\r
+       HRR     V,R             ;IS THIS THE HIGHEST LOC YET?\r
+       CAIG    H,@X            ;...\r
+       MOVEI   H,@X            ;YES, TELL THE WORLD\r
+       CAMG    H,SDS           ;HIGHEST LOC GREATER THAN DATA STATEMENTS?\r
+       JRST    HIGH3           ;NO, RETURN\r
+       ADDI    H,1(S)          ;YES, SET UP MEANINGFUL ERROR COMMENT\r
+       SUB     H,SDS           ;...\r
+       TLO     F,FULLSW        ;INDICATE OVERFLO\r
+       JRST    HIGH3           ;RETURN\r
+\r
+DATAS: TLNE    F,FULLSW+SKIPSW\r
+       JRST    DAX\r
+       MOVEI   C,(S)           ;ADDR OF WORD UNDER SYMBOL TABLE\r
+       MOVN    W,BLKSIZ        ;HOW FAR DOWN TO BLT\r
+       ADDM    W,PLTP          ;UPDATE TABLE POINTERS\r
+       ADDM    W,BITP          ;...\r
+       ADDM    W,SDSTP         ;...\r
+       ADD     C,W             ;RH(C):= WHEN TO STOP BLT\r
+       HRL     C,MLTP          ;SOURCE OF BLTED DATA\r
+       ADD     W,MLTP          ;UPDATE, GET DESTINATION OF BLT DATA\r
+IFN EXPAND,<   HRRZS W ;GET RID OF LEFT HALF\r
+               CAIG W,@X\r
+               PUSHJ P,[PUSHJ P,XPAND\r
+                       POPJ P,\r
+                       ADDI W,2000\r
+                       ADD C,[XWD 2000,2000]\r
+                       JRST POPJM2]>\r
+       HRRM W,MLTP             ;NO SET THIS SO EXTRA CORE NOT ZEROED\r
+       HLL     W,C             ;FORM BLT POINTER\r
+       BLT     W,-1(C)         ;MOVE TABLES DOWN (BUT NOT JRST ALLOVE)\r
+       PUSHJ   P,BITWX+1\r
+DAX:   PUSHJ   P,WORD;         READ ONE WORD\r
+       TLNN    F,FULLSW+SKIPSW\r
+       MOVEM   W,(C)\r
+       SOSLE   BLKSIZ          ;COUNT OF DATA SEQUENCE SIZE\r
+       AOJA    C,DAX           ;INCREMENT DATA SEQUENCE DEPOSIT LOC\r
+       JRST    TEXTR;          DONE\r
+\r
+\fFBLKD:        TLOE    N,BLKD1         ;IS THIS FIRST BLOCK DATA?\r
+       JRST    ENDTP           ;NO\r
+       HRR     V,COMBAS        ;PLACE PROG BREAK IN RH FOR\r
+IFE L,<        HRRM    V,JOBCHN(X)     ;CHAIN>\r
+ENDTP: TLNE    F,FULLSW+SKIPSW\r
+       JRST    ALLOVE\r
+       HRR     V,GSTAB\r
+ENDTP0:        CAML    V,STAB;         ANY MORE GLOBSUBS\r
+       JRST    ENDTP2;         NO\r
+       MOVE    C,@X;           GET SUBPROG NAME\r
+       PUSHJ   P,SREQ;         IS IT ALLREADY REQUESTED\r
+       AOJA    V,ENDTP0;       YES\r
+       PUSHJ   P,SDEF;         OR DEFINED\r
+       AOJA    V,ENDTP0;       YES\r
+       PUSHJ P,TBLCHK\r
+       MOVEI W,0               ;PREPARE DUMMY LINK\r
+       TLNN    F,FULLSW+SKIPSW;        ABORT\r
+       PUSHJ   P,SYM3X;        PUT IN DUMMY REQUEST\r
+       PUSHJ   P,BITWX+1;      OVERLAP CHECK\r
+       AOJA    V,ENDTP0\r
+ENDTP2:        SETZM   PT1\r
+       HRR V,SDSTP\r
+IFN EXPAND,<   SUBI V,(X)\r
+               CAMG V,COMBAS\r
+               JRST    [PUSHJ P,XPAND\r
+                       TLOA F,FULLSW\r
+                       JRST .-3\r
+                       JRST .+1]\r
+               HRR V,SDSTP>\r
+       HRRZM   V,SDS           ;DATA STATEMENT LOC\r
+ENDTP1:        SUBI    V,(X);          COMPENSATE FOR OFFSET\r
+       MOVE    W,@X;   GET WORD\r
+       TLNE    W,-1;           NO LEFT HALF IMPLIES COUNT\r
+       JRST    DODON;          DATA DONE\r
+       ADD     W,[MOVEI W,3]\r
+       ADDI    W,@X\r
+       EXCH    W,@X\r
+       AOS     V\r
+       ADD     W,@X;           ITEMS COUNT\r
+       MOVEM   W,ITC\r
+       MOVE    W,[MOVEM W,LTC]\r
+       MOVEM   W,@X;           SETUP FOR DATA EXECUTION\r
+       AOS     V\r
+       MOVE    W,[MOVEI W,0]\r
+       EXCH    W,@X\r
+       MOVEM   W,ENC;          END COUNT\r
+       AOS     V\r
+       MOVEI   W,@X\r
+       ADDM    W,ITC\r
+LOOP:  MOVE    W,@X\r
+       HLRZ    T,W;            LEFT HALF INST.\r
+       ANDI    T,777000\r
+       CAIN    T,254000        ;JRST?\r
+       JRST    WRAP            ;END OF DATA\r
+       CAIN    T,260000        ;PUSHJ?\r
+       JRST    PJTABL(W)       ;DISPATCH VIA TABLE\r
+       CAIN    T,200000;       MOVE?\r
+       AOJA    V,INNER\r
+       CAIN    T,270000;       ADD?\r
+       JRST    ADDOP\r
+       CAIN    T,221000;       IMULI?\r
+       AOJA    V,LOOP\r
+       CAIE    T,220000;       IMUL?\r
+       JRST    LOAD4A;         NOTA\r
+INNER: HRRZ    T,@X;           GET ADDRESS\r
+       TRZE    T,770000;       ZERO TAG?\r
+       SOJA    T,CONPOL;       NO, CONSTANT POOL\r
+       SUB     T,PT1;          SUBTRACT INDUCTION NUMBER\r
+       ASH     T,1\r
+       SOS     T;              FORM INDUCTION POINTER\r
+       HRRM    T,@X\r
+       HLRZ    T,@X\r
+       ADDI    T,P\r
+       HRLM    T,@X\r
+       AOJA    V,LOOP\r
+\r
+\fCONPOL:       ADD     T,ITC;  CONSTANT BASE\r
+       HRRM    T,@X\r
+       AOJA    V,LOOP\r
+\r
+ADDOP: HRRZ    T,@X\r
+       TRZE    T,770000\r
+       SOJA    T,CONPOL\r
+SKIPIN:        AOJA    V,LOOP\r
+\r
+PJTABL:        JRST    DWFS            ;PUSHJ 17,0\r
+       AOSA    PT1             ;INCREMENT DO COUNT\r
+       SOSA    PT1;            DECREMENT DO COUNT\r
+       SKIPA   W,[EXP DOINT.]\r
+       MOVEI   W,DOEND.\r
+       HRRM    W,@X\r
+       AOJA    V,SKIPIN        ;SKIP A WORD\r
+\r
+DWFS:  MOVEI   W,DWFS.\r
+       HRRM    W,@X\r
+       AOS     V\r
+       TLO     N,SYDAT\r
+       PUSHJ   P,PROC;         PROCESS THE TAG\r
+       JRST    LOAD4A          ;DATA STATEMENT BELOW CODE TOP\r
+       JRST    LOOP            ;PROPER RETURN\r
+\r
+DOINT.:        POP     P,V;            GET ADDRESS OF INITIAL VALUE\r
+       PUSH    P,(V);          STORE INDUCTION VARIABLE\r
+       AOS     V\r
+       PUSH    P,V;            INITIAL ADDRESS\r
+       JRST    (V)\r
+\r
+DOEND.:        HLRZ    T,@(P)\r
+       ADDM    T,-2(P);        INCREMENT\r
+       HRRZ    T,@(P);         GET FINAL VALUE\r
+       CAMGE   T,-2(P);        END CHECK\r
+       JRST    DODONE;         WRAP IT UP\r
+       POP     P,(P);          BACK UP POINTER\r
+       JRST    @(P)\r
+\r
+\fDODONE:       POP     P,-1(P);        BACK UP ADDRESS\r
+       POP     P,-1(P)\r
+       JRST    CPOPJ1          ;RETURN\r
+\r
+WRAP:  MOVE    W,ENC;          NUMBER OF CONSTANTS\r
+       ADD     W,ITC;          CONSTANT BASE\r
+       MOVEI   C,(W);          CHAIN\r
+       HRRM    C,@X\r
+       MOVEI   V,(W);          READY TO GO\r
+       JRST    ENDTP1\r
+\r
+DODON: TLZ     N,RCF!SYDAT!DZER        ;DATA STATEMENT FLAGS\r
+       MOVE    W,PTEMP         ;TOP OF PROG\r
+       ADDI    W,(X)           ;+OFFSET\r
+       MOVE    C,COMBAS        ;TOP OF DATA\r
+       ADDI    C,(X)           ;+OFFSET\r
+SECZER:        CAML    W,C             ;ANY DATA TO ZERO?\r
+       JRST    @SDS            ;NO, DO DATA STATEMENTS\r
+       CAML    W,SDS           ;IS DATA BELOW DATA STATEMENTS?\r
+       TLO     F,FULLSW        ;NO, INDICATE OVERFLO\r
+       TLNN    F,FULLSW+SKIPSW ;SHOULD WE ZERO?\r
+       SETZM   (W)             ;YES, DO SO\r
+       TLON    N,DZER          ;GO BACK FOR MORE?\r
+       AOJA    W,SECZER        ;YES, PLEASE\r
+       CAMLE   C,SDS           ;ALL DATA BELOW DATA STATEMENTS?\r
+       MOVE    C,SDS           ;ALL ZEROED DATA MUST BE\r
+       HRLI    W,-1(W)         ;SET UP BLT POINTER TO ZERO DATA\r
+       TLNN    F,FULLSW+SKIPSW ;SHOULD WE ZERO?\r
+       BLT     W,-1(C)         ;YES, DO SO\r
+       JRST    @SDS            ;GO DO DATA STATEMENTS\r
+\r
+\fDREAD:        TLNE    N,RCF;          NEW REPEAT COUNT NEEDED\r
+       JRST    FETCH;          NO\r
+       MOVE    W,LTC\r
+       MOVEM   W,LTCTEM\r
+       MOVE    W,@LTC;         GET A WORD\r
+       HLRZM   W,RCNT;         SET REPEAT COUNT\r
+       HRRZM   W,WCNT;         SET WORD COUNT\r
+       POP     W,(W);          SUBTRACT ONE FROM BOTH HALFS\r
+       HLLM    W,@LTC;         DECREMENT REPEAT COUNT\r
+       AOS     W,LTC;          STEP READOUT\r
+       TLO     N,RCF\r
+FETCH: MOVE    W,@LTC\r
+       AOS     LTC\r
+       SOSE    WCNT\r
+       POPJ    P,;\r
+       SOSN    RCNT\r
+       JRST    DOFF.\r
+       MOVE    V,LTCTEM;       RESTORE READOUT\r
+       MOVEM   V,LTC\r
+DOFF.: TLZ     N,RCF;          RESET DATA REPEAT FLAG\r
+       POPJ    P,;\r
+\r
+DWFS.: MOVE    T,(P)\r
+       AOS     (P)\r
+       MOVE    T,(T);          GET ADDRESS\r
+       HLRZM   T,DWCT;         DATA WORD COUNT\r
+       HRRES   T\r
+       ADD     T,W;            OFFSET\r
+       ADDI    T,(X);          LOADER OFFSET\r
+DWFS.1:        PUSHJ   P,DREAD         ;GET A DATA WORD\r
+       CAML    T,SDS           ;BELOW BEGINNING OF DATA STATEMENTS\r
+       TLO     F,FULLSW        ;YES, INDICATE OVERFLO\r
+       TLNN    F,FULLSW+SKIPSW ;LOAD THE NEXT DATA ITEM?\r
+       MOVEM   W,(T)           ;YES, STORE IT\r
+       AOS     T\r
+       SOSE    W,DWCT;         STEP DOWN AND TEST\r
+       JRST    DWFS.1          ;ONE MORE TIME, MOZART BABY!\r
+       POPJ    P,;\r
+\r
+\r
+\f;LITERAL TABLE\r
+\r
+LITS:  LIT\r
+       VAR\r
+CT1:   0               ;TEMP FOR C\r
+LTC:   0\r
+ITC:   0\r
+ENC:   0\r
+WCNT:  0               ;DATA WORD COUNT\r
+RCNT:  0               ;DATA REPEAT COUNT\r
+\r
+LTCTEM:        0               ;TEMP FOR LTC\r
+DWCT:  0               ;DATA WORD COUNT\r
+IFE L,<\r
+IFE HE,<\r
+LDEND: END     LD\r
+       >>\r
+IFN HE,<\r
+LDEND: END>\r
+IFN L,<\r
+LDEND:\r
+LODMAK:        MOVEI A,LODMAK\r
+       MOVEM A,137\r
+       INIT 17\r
+       SIXBIT /DSK/\r
+       0\r
+       HALT\r
+       ENTER LMFILE\r
+       HALT\r
+       OUTPUT [IOWD 1,LMLST    ;OUTPUT LENGTH OF FILE\r
+               0]\r
+       OUTPUT LMLST\r
+       STATZ 740000\r
+       HALT\r
+       RELEASE\r
+       CALL [SIXBIT /EXIT/]\r
+\r
+LMFILE:        SIXBIT /LISP/\r
+       SIXBIT /LOD/\r
+       0\r
+       0\r
+\r
+LMLST: IOWD LODMAK+1-LD,137\r
+       0\r
+\r
+       END LODMAK>\r
diff --git a/src/loader.v57 b/src/loader.v57
new file mode 100644 (file)
index 0000000..f4b4d7e
--- /dev/null
@@ -0,0 +1,6309 @@
+       L==1    ;LISP SWITCH ON FOR LISP SYSTEM VERSION\r
+       TITLE   LOADER V.057\r
+       SUBTTL  RP GRUEN/NGP/WFW/DMN/WJE        25-MAR-75\r
+;COPYRIGHT 1968,1969,1970,1971,1972,1973 DIGITAL EQUIPMENT CORP., MAYNARD, MASS.\r
+\r
+       VLOADER==57\r
+       VUPDATE==0              ;DEC UPDATE LEVEL\r
+       VEDIT==151              ;EDIT LEVEL\r
+       VCUSTOM==1              ;NON-DEC UPDATE LEVEL\r
+                               ;(UCI LISP MODIFICATIONS)\r
+\r
+       LOC <.JBVER==137>\r
+       <VCUSTOM>B2+<VLOADER>B11+<VUPDATE>B17+VEDIT\r
+       RELOC\r
+\r
+COMMENT        *       ASSEMBLY FEATURE SWITCHES (ACTION WHEN NON-ZERO)\r
+\r
+       SWITCHES ON (NON-ZERO) IN DEC VERSION\r
+PURESW         GIVES PURE CODE (VARIABLES IN LOW SEG)\r
+REENT          GIVES REENTRANT CAPABILITY PDP-10\r
+       (REENT=0 FOR PDP-10/30 OR PDP-6 OR EARLY PDP-10)\r
+RPGSW          INCLUDE CCL FEATURE\r
+TEMP           INCLUDE TMPCOR FEATURE\r
+DMNSW           SYMBOL TABLE WILL BE MOVED DOWN FROM TOP OF CORE\r
+KUTSW           GIVES CORE CUTBACK ON /K\r
+EXPAND          FOR AUTOMATIC CORE EXPANSION\r
+PP             ALLOW PROJ-PROG #\r
+NAMESW         USE SETNAM UUO TO CHANGE PROGRAM NAME\r
+DIDAL          GIVES DIRECT ACCESS LIBRARY SEARCH MODE\r
+ALGSW          WILL LOAD ALGOL OWN BLOCK (TYPE 15)\r
+COBSW          WILL LOAD COBAL LOCAL SYMBOLS (BLOCK TYPE 37)\r
+SFDSW          NUMBER OF SFDS ALLOWED IF NON-ZERO\r
+CPUSW          LOADER WILL TEST FOR KI/KA-10 AND LOAD CORRECT LIB40\r
+FORSW          DEFAULT VALUE OF FORSE/FOROTS FORTRAN OTS\r
+B11SW          INCLUDE POLISH FIXUP BLOCK (TYPE 11)\r
+\r
+       SWITCHES OFF (ZERO) IN DEC VERSION\r
+K              GIVES SMALLER LOADER - NO F4\r
+L               FOR LISP LOADER\r
+SPMON          GIVES SPMON LOADER (MONITOR LOADER)\r
+MONLOD         GIVES MONITOR LOADER WHICH USES DISK AS CORE IMAGE\r
+TEN30          FOR 10/30 LOADER\r
+STANSW          GIVES STANFORD FEATURES\r
+LNSSW          GIVES LNS VERSION\r
+FAILSW         INCLUDE PROVISIONS FOR SPECIAL FAIL FIXUPS.\r
+LDAC            MEANS LOAD CODE INTO ACS\r
+       (LDAC DOES NOT WORK WITH KUTSW=1.CORE UUO CLEARS JOBBLT)\r
+WFWSW          GIVES BLOCK TYPE 13 (VARIABLS INTO LOW SEG)\r
+SYMARG         ACCEPT SYMBOLIC (GLOBAL) ARGUMENTS FOR SWITCHES\r
+SPCHN          WILL DO SPECIAL OVERLAYING\r
+NELSW          FOR NELIAC COMPILER\r
+SAILSW         GIVES BLOCK TYPE 16 (FORCE LOAD OF REL FILES)\r
+               AND 17 (FORCE SEARCH OF LIBRARIES) FOR SAIL\r
+MANTIS         WILL LOAD BLOCK 401 FOR F4 MANTIS DEBUGGER\r
+SYMDSW         LOADER WILL STORE SYMBOLS ON DSK\r
+TENEX          SPECIAL CODE IF RUNING UNDER TENEX\r
+*\r
+SUBTTL DEFAULT ASSEMBLY SWITCH SETTINGS\r
+\r
+IFNDEF SPMON,<SPMON=0>\r
+IFN SPMON,<    TEN30==1\r
+               K==1>\r
+\r
+IFNDEF L,<L=0>\r
+\r
+IFNDEF TEN30,<TEN30=0>\r
+\r
+IFN TEN30!L,<  RPGSW=0\r
+               PP=0\r
+IFNDEF DMNSW,< DMNSW=0>\r
+               ALGSW=0\r
+               COBSW=0\r
+               PURESW=0\r
+               REENT=0\r
+               LDAC=0\r
+               KUTSW=0\r
+               NAMESW=0>\r
+IFN TEN30,<    EXPAND=0\r
+IFNDEF DIDAL,< DIDAL=0>\r
+>\r
+\r
+IFN L,<        CPUSW==0\r
+       PP==1>\r
+\r
+IFNDEF MONLOD,<MONLOD=0>\r
+IFN    MONLOD,<K==1\r
+               ALGSW=0\r
+               COBSW=0\r
+               DIDAL=0\r
+               REENT=0\r
+               B11SW==0\r
+               SYMDSW==0\r
+               EXPAND==1>\r
+\r
+IFNDEF K,<K=0>\r
+\r
+IFNDEF STANSW,<STANSW=0>\r
+IFN STANSW,<   TEMP==0\r
+               REENT==0\r
+               FAILSW=1>\r
+\r
+IFNDEF LNSSW,<LNSSW=0>\r
+IFN LNSSW,<LDAC=1\r
+       PP=0>\r
+\r
+IFNDEF FAILSW,<FAILSW==0>\r
+IFN FAILSW,<B11SW==1>\r
+\r
+IFNDEF B11SW,<B11SW==1>\r
+\r
+IFNDEF RPGSW,<RPGSW==1>\r
+IFN RPGSW,<PP==1>      ;REQUIRE DISK FOR CCL\r
+IFE RPGSW,<TEMP=0>\r
+\r
+IFNDEF PP,<PP==1>\r
+\r
+IFNDEF TEMP,<TEMP==1>\r
+\r
+IFNDEF NAMESW,<NAMESW==1>\r
+\r
+IFNDEF LDAC,<LDAC=0>\r
+IFN LDAC,<KUTSW=0>\r
+\r
+IFNDEF KUTSW,<KUTSW==1>\r
+\r
+IFNDEF EXPAND,<        IFN K,<EXPAND==0>\r
+               IFE K,<EXPAND==1>>\r
+\r
+IFNDEF DMNSW,<DMNSW==1>\r
+IFN DMNSW!LDAC,<IFNDEF SYMPAT,<SYMPAT==100>\r
+       IFN LDAC,<IFG 20-SYMPAT,<SYMPAT==20>>>\r
+\r
+IFNDEF REENT,<REENT==1>\r
+\r
+IFNDEF PURESW,<PURESW==1>\r
+\r
+IFNDEF WFWSW,<WFWSW==0>\r
+\r
+IFN K,<SYMARG=0\r
+       SPCHN=0>\r
+\r
+IFNDEF SYMARG,<SYMARG==0>\r
+\r
+IFNDEF SPCHN,<SPCHN==0>\r
+\r
+IFNDEF DIDAL,<DIDAL==1>\r
+\r
+IFNDEF ALGSW,<ALGSW==1>\r
+\r
+IFNDEF COBSW,<COBSW==1>\r
+\r
+IFNDEF SAILSW,<SAILSW==0>\r
+\r
+IFNDEF NELSW,<NELSW==0>\r
+\r
+IFN K,<MANTIS==0>\r
+IFNDEF MANTIS,<MANTIS==0>\r
+\r
+IFE PP,<SFDSW==0>\r
+IFNDEF SFDSW,<SFDSW==5>\r
+IFNDEF CPUSW,<CPUSW==1>\r
+\r
+IFNDEF FORSW,<FORSW==2>        ;1=FORSE, 2=FOROTS\r
+\r
+IFNDEF SYMDSW,<SYMDSW==0>\r
+IFN SYMDSW,<DIDAL==0>  ;BOTH USE AUX BUFFER\r
+IFNDEF TENEX,<TENEX==0>\r
+SUBTTL ACCUMULATOR ASSIGNMENTS\r
+       F=0             ;FLAGS IN BOTH HALVES OF F\r
+       N=1             ;FLAGS IN BOTH HALVES OF N\r
+       X=2             ;LOADER OFFSET\r
+       H=3             ;HIGHEST LOC LOADED\r
+       S=4             ;UNDEFINED POINTER\r
+       R=5             ;RELOCATION CONSTANT\r
+       B=6             ;SYMBOL TABLE POINTER\r
+       D=7             ;COMMAND ARGUMENT (OCTAL) AND WORKSPACE\r
+       T=10\r
+       V=T+1\r
+       W=12            ;VALUE\r
+       C=W+1           ;SYMBOL, DECIMAL COMMAND ARGUMENT\r
+       E=C+1           ;DATA WORD COUNTER\r
+       Q=15            ;RELOCATION BITS\r
+       A=Q+1           ;SYMBOL SEARCH POINTER\r
+       P=17            ;PUSHDOWN POINTER\r
+\r
+\r
+;MONITOR LOCATIONS IN THE USER AREA\r
+\r
+.JBHDA==10\r
+.JBSDD==114            ;SAVE POINTER TO JOBDDT\r
+.JBS41==122            ;SAVE POINTER TO JOB41\r
+\r
+INTERN .JBVER,.JBHDA,.JBSDD,.JBS41\r
+EXTERN .JBDDT,.JBFF,.JBSA,.JBREL,.JBSYM,.JBUSY,.JB41,.JBHRL,.JBCOR\r
+EXTERN .JBCHN,.JBERR,.JBBLT,.JBAPR,.JBDA,.JBHSM\r
+\r
+NEGOFF==400            ;NEGATIVE OFFSET OF HIGH SEGMENT\r
+\r
+\r
+PDLSIZ==40             ;LENGTH OF PUSHDOWN STACK\r
+PPDL==60       ;LENGTH OF PUSHDOWN LIST FOR POLISH FIXUPS\r
+;FLAGS F(0 - 17)\r
+       CSW==1                  ;ON - COLON SEEN\r
+       ESW==2                  ;ON - EXPLICIT EXTENSION IDENT.\r
+       SKIPSW==4               ;ON - DO NOT LOAD THIS PROGRAM\r
+       FSW==10                 ;ON - SCAN FORCED TO COMPLETION\r
+       FCONSW==20              ;ON - FORCE CONSOLE OUTPUT\r
+       HIPROG==40      ;LOADING HI PROGRAM, SET BY HISEG. CLEARED BY EOF\r
+       ASW==100                ;ON - LEFT ARROW ILLEGAL\r
+       FULLSW==200             ;ON - STORAGE EXCEEDED\r
+       SLIBSW==400             ;ON - LIB SEARCH IN THIS PROG\r
+       RMSMSW==1000            ;REMEMBER IF LOADING WITH SYMBOLS DURING LIB SEARCH\r
+       REWSW==2000             ;ON - REWIND AFTER INIT\r
+       LIBSW==4000             ;ON - LIBRARY SEARCH MODE\r
+\r
+       ISW==20000              ;ON - DO NOT PERFORM INIT\r
+       SYMSW==40000            ;ON - LOAD LOCAL SYMBOLS\r
+       DSW==100000             ;ON - CHAR IN IDENTIFIER\r
+       NSW==200000             ;ON - SUPPRESS LIBRARY SEARCH\r
+       SSW==400000             ;ON - SWITCH MODE\r
+\r
+\r
+
+;MORE FLAGS IN F (18-35)\r
+\r
+SEENHI==1              ;HAVE SEEN HI STUFF\r
+NOHI==2                        ;LOAD AS NON-REENTRANT\r
+NOTTTY==4              ;DEV "TTY" IS NOT A TTY\r
+NOHI6==10              ;PDP-6 TYPE SYSTEM\r
+HISYM==20              ;BLT SYMBOLS INTO HIGH SEGMENT\r
+SEGFL==40              ;LOAD INTO HI-SEG\r
+XFLG==100              ;INDEX IN CORE (BLOCK TYPE 14)\r
+LSTLOD==200            ;LAST PROG WAS LOADED\r
+DTAFLG==400            ;LIBRARY DEVICE IS A DTA (NEEDED FOR INDEXING)\r
+DMNFLG==1000           ;SYMBOL TABLE TO BE MOVED DOWN\r
+SFULSW==2000           ;PRINTED SYMBOL OVERLAP ONCE ALREADY\r
+ARGFL==4000            ;TREAT $%. AS RADIX-50 CHAR.\r
+TWOFL==10000           ;TWO SEGMENTS IN THIS BINARY FILE\r
+LOCAFL==20000          ;PRINT LOCAL SYMBOLS IN MAP\r
+TTYFL==40000           ;AUX. DEV. IS TTY\r
+TRMFL==100000          ;END OF LOADING SEEN ($ OR /G)\r
+KICPFL==200000         ;HOST CPU IS A KI-10\r
+LSYMFL==400000         ;STORE LOCAL SYMBOLS ON DSK\r
+;FLAGS N(0 - 17)\r
+       ALLFLG==1               ;ON - LIST ALL GLOBALS\r
+       ISAFLG==2               ;ON - IGNORE STARTING ADDRESSES\r
+       COMFLG==4               ;ON - SIZE OF COMMON SET\r
+IFE K,<        F4SW==10                ;F4 IN PROGRESS\r
+       RCF==20                 ;READ DATA COUNT\r
+       SYDAT==40;              SYMBOL IN DATA>\r
+IFN MONLOD,<DISW==10   ;DISK IMAGE LOAD IN PROGRESS\r
+           WOSW==20    ;WRITE OUT SWITCH, DATA IN WINDOW HAS CHANGED>\r
+       SLASH==100              ;SLASH SEEN\r
+IFE K,<        BLKD1==200              ;ON- FIRST BLOCK DATA SEEN\r
+       PGM1==400               ;ON FIRST F4 PROG SEEN\r
+       DZER==1000              ;ON - ZERO SECOND DATA WORD>\r
+       EXEQSW==2000            ;IMMEDIATE EXECUTION\r
+       DDSW==4000              ;GO TO DDT\r
+       RPGF==10000             ;IN RPG MODE\r
+       AUXSWI==20000           ;ON - AUX. DEVICE INITIALIZED\r
+       AUXSWE==40000           ;ON - AUX. DEVICE ENTERED\r
+       PPSW==100000            ;ON - READING PROJ-PROG #\r
+       PPCSW==200000           ;ON - READING PROJ #\r
+       HSW==400000             ;USED IN BLOCK 11 POLISH FIXUPS\r
+\r
+;MORE FLAGS IN N (18-35)\r
+F4FL==400000           ;FORTRAN (F40) SEEN\r
+COBFL==200000          ;COBOL SEEN\r
+ALGFL==100000          ;ALGOL SEEN\r
+NELFL==40000           ;NELIAC SEEN\r
+PL1FL==20000           ;PL/1 SEEN\r
+BLIFL==10000           ;BLISS-10\r
+SAIFL==4000            ;SAIL\r
+FORFL==2000            ;FORTRAN-10\r
+F10TFL==1000           ;FORTRAN-10 CODE FOR THIS FILE SET NOHI (TEMP)\r
+KI10FL==400            ;KI-10 ONLY CODE\r
+KA10FL==200            ;KA-10 ONLY CODE\r
+MANTFL==100            ;MANTIS SEEN, LOAD SPECIAL DATA\r
+SYMFOR==40             ;SYMSW FORCED SET\r
+MAPSUP==20             ;SUPRESS SYBOL TABLE OUTPUT\r
+CHNMAP==10             ;MAP FOR SPCHN ROOT SEGMENT PRINTED\r
+ATSIGN==4              ;AT SIGN - INDIRECT COMMAND\r
+ENDMAP==2              ;DELAY MAP TO END\r
+VFLG==1                        ;DEFAULT LOAD REENTRANT OPERATION SYSTEM\r
+\r
+COMFLS==F4FL!COBFL!ALGFL!NELFL!PL1FL!BLIFL!SAIFL!FORFL\r
+\r
+DEFINE ERROR (X,Y)<\r
+JSP A,ERRPT'X\r
+XLIST\r
+SIXBIT Y\r
+LIST>\r
+\r
+IFN TENEX,<\r
+       OPDEF JSYS [104B8]\r
+       OPDEF SEVEC [JSYS 204]\r
+       OPDEF GEVEC [JSYS 205]\r
+       OPDEF GET [JSYS 200]\r
+       OPDEF GTJFN [JSYS 20]\r
+       OPDEF CIS [JSYS 141]\r
+       OPDEF DIR [JSYS 130]\r
+>\r
+\rIFN PURESW,<TWOSEGMENTS\r
+       RELOC   400000>\r
+\r
+DSKBIT==200000 ;FOR USE WITH DEVCHR\r
+DTABIT==100    ;DITTO\r
+\r
+       DISIZE=2000     ;CORE WINDOW SIZE\r
+       .RBEST==10      ;ESTIMATED SIZE OF BLOCK (SYMBOL)\r
+       .RBALC==11      ;ALLOCATED SIZE OF BLOCK (SYMBOL)\r
+       DALLOC==^D500   ;PREALLOCATE SOME SPACE\r
+\r
+\r
+DSKBLK==200    ;LENGTH OF DISK BLOCKS\r
+DTABLK==177    ;LENGTH OF DECTAPE BLOCKS (EXCLUDING LINK WORD)\r
+VECLEN==^D25   ;LENGTH OF VECTOR TABLE FOR OVERLAYS\r
+\r
+RELLEN==^D5    ;#NUMBER OF REL FILES OR LIBRARIES (MUST BE SAME)\r
+\r
+;BUFFER SIZES\r
+TTYL==52               ;TWO TTY BUFFERS\r
+IFNDEF BUFN,<BUFN==2   ;TWO DATA BUFFERS FOR LOAD>\r
+IFE LNSSW,<\r
+BUFL==BUFN*203         ;'BUFN' DTA BUFFERS FOR LOAD\r
+ABUFL==203             ;ONE DTA BUFFER FOR AUX DEV>\r
+IFN LNSSW,<\r
+IFE K,<BUFL==4*203+1>\r
+IFN K,<BUFL==203+1>\r
+ABUFL==2*203+1>\r
+\r
+;CALLI DEFINITIONS\r
+\r
+OPDEF  RESET   [CALLI   0]\r
+OPDEF  SETDDT  [CALLI   2]\r
+OPDEF  DDTOUT  [CALLI   3]\r
+OPDEF  DEVCHR  [CALLI   4]\r
+OPDEF  CORE    [CALLI  11]\r
+OPDEF  EXIT    [CALLI  12]\r
+OPDEF  UTPCLR  [CALLI  13]\r
+OPDEF  DATE    [CALLI  14]\r
+OPDEF  MSTIME  [CALLI  23]\r
+OPDEF  PJOB    [CALLI  30]\r
+OPDEF  SETUWP  [CALLI  36]\r
+OPDEF  REMAP   [CALLI  37]\r
+OPDEF  GETSEG  [CALLI  40]\r
+OPDEF  SETNAM  [CALLI  43]\r
+OPDEF  TMPCOR  [CALLI  44]\r
+\r
+\r
+       ASUPPRESS\r
+       MLON\r
+       SALL\r
+SUBTTL INITIALIZATION\r
+BEG:   IFE L,< IFN RPGSW,<\r
+       TDZA    F,F             ;NORMAL START\r
+       SETO    F,              ;CCL START>\r
+       SETZM   DATBEG          ;ZERO FIRST WORD OF DATA STORAGE\r
+       MOVE    N,[DATBEG,,DATBEG+1]\r
+       BLT     N,DATEND-1      ;ZERO ENTIRE DATA AREA\r
+IFN RPGSW,<                    ;IF NO CCL FALL THROUGH TO LD:\r
+       JUMPE   F,LD            ;CCL: IF NORMAL START GO TO LD\r
+       RESET                   ;RESET UUO.\r
+IFN TEMP,<MOVEI F,CTLBUF-1     ;USE CCL BUFFER FOR COMMANDS\r
+       HRRM F,CTLIN+1          ;DUMMY UP BYTE POINTER\r
+       HRLI F,-200     ;MAKE IT AN IOWD\r
+       MOVEM F,TMPFIL+1\r
+       MOVSI F,'LOA'\r
+       MOVEM F,TMPFIL\r
+       MOVE N,[XWD 2,TMPFIL]   ;POINTER FOR TMPCOR READ\r
+       TMPCOR  N,              ;READ AND DELETE LOA FILE\r
+       JRST RPGTMP             ;NO SUCH FILE IN CORE, TRY DISK\r
+       IMULI N,5               ;GET CHAR COUNT\r
+       ADDI N,1\r
+       MOVEM N,CTLIN+2         ;STORE IN BUFFER HEADER\r
+       MOVEI N,700             ;BYTE POINTER FOR LOA FILE\r
+       HRLM N,CTLIN+1          ;BYTE POINTER NOW COMPLETE\r
+       SETOM TMPFLG            ;MARK THAT A TMPCOR READ WAS DONE\r
+       JRST RPGS3C             ;GET BACK IN MAIN STREAM\r
+RPGTMP:                                ; NOT TMP>\r
+       INIT    17,1    ;SET UP DSK FOR COMMAND FILE INPUT.\r
+       SIXBIT /DSK/\r
+       XWD 0,CTLIN\r
+       JRST    NUTS    ;CAN'T INIT, GET INPUT FROM TTY.\r
+       MOVEI   F,3\r
+       PJOB    N,      ;GET JOB NUMBER\r
+LUP:   IDIVI   N,12    ;STRIP OFF LAST DIGIT\r
+       ADDI    N+1,"0"-40      ;CONVERT TO SIXBIT\r
+       LSHC    N+1,-6  ;SAVE\r
+       SOJG    F,LUP   ;3 DIGITS YET?\r
+       HRRI    N+2,'LOA'       ;LOADER NAME PART OF FILE NAME.\r
+       MOVEM   N+2,CTLNAM\r
+       MOVSI   'TMP'           ;AND EXTENSION.\r
+       MOVEM   CTLNAM+1\r
+       LOOKUP  17,CTLNAM       ;FILE THERE?\r
+       JRST    NUTS            ;NO.\r
+       INIT 16,1       ;GET SET TO DELETE FILE\r
+       SIXBIT /DSK/\r
+       0\r
+       JRST RPGS3A     ;GIVE UP\r
+       SETZM CTLNAM+3  ;PUT STUFF BACK AS IT WAS\r
+       LOOKUP 16,CTLNAM\r
+       JRST RPGS3B\r
+       SETZM CTLNAM    ;SET FOR RENAME\r
+       RENAME 16,CTLNAM\r
+       JFCL            ;IGNORE FAILURE\r
+RPGS3B:        RELEASE 16,     ;GET RID OF DEVICE\r
+RPGS3A:                        ;WE HAVE NOT YET STARTED TO SCAN\r
+                       ;COMMAND IN FILE.\r
+RPGS3: MOVEI   CTLBUF  \r
+       MOVEM   .JBFF\r
+       INBUF   17,1            ;SET UP BUFFER.\r
+RPGS3C:        TTCALL  3,[ASCIZ /LOADING/]     ;PRINT MESSAGE THAT WE ARE STARTING.\r
+       SKIPE   NONLOD          ;CONTIUATION OF COMMAND?\r
+       JRST    RPGS2           ;YES, SPECIAL SETUP.\r
+CCLCHN:        MOVSI   N,RPGF          ;@ CHAIN FILES CYCLE FROM HERE\r
+       JRST    CTLSET          ;SET UP TTY\r
+\r
+RPGS1: PUSHJ   P,[TLNE F,ESW   ;HERE FROM FOO@ COMMAND, STORE NAME.\r
+                  JRST LDDT3   ;SAVE EXTENSION.\r
+                  TLZE F,CSW!DSW  ;AS NAME\r
+                  MOVEM W,DTIN ;STORE AS NAME\r
+                  SETZM W,DTIN1        ;TRY BLANK EXTENSION FIRST.\r
+                  JRST LDDT4]\r
+       MOVEM   0,SVRPG         ;SAVE 0 JUST IN CASE\r
+       SETZM   NONLOD          ;DETERMINE IF CONTINUATION.\r
+       MOVEI   0,2(B)          ;BY SEEING IF ANY SYMBOLS LOADED.\r
+       CAME    0,.JBREL\r
+       SETOM   NONLOD          ;SET TO -1 AND SKIP CALLI\r
+IFN TEMP,<SETZM TMPFLG>\r
+       MOVE    0,ILD1\r
+       MOVEM   0,RPG1\r
+       OPEN    17,OPEN1                ;KEEP IT PURE\r
+       JRST    [MOVE   W,RPG1\r
+               JRST    ILD5]\r
+       LOOKUP  17,DTIN         ;THE FILE NAME.\r
+       JRST    [MOVE   0,SVRPG ;RESTORE AC0=F\r
+               TLOE    F,ESW   ;WAS EXT EXPLICIT?\r
+               JRST    ILD9    ;YES, DON'T TRY AGAIN.\r
+               MOVEM   0,SVRPG ;SAVE AC0 AGAIN\r
+               MOVSI   0,(SIXBIT /TMP/)        ;TRY TMP INSTEAD\r
+               MOVEM   0,DTIN1\r
+               PUSHJ P,LDDT4   ;SET UP PPN\r
+               JRST    .-1]    ;TRY AGAIN\r
+       JRST    RPGS3\r
+\r
+RPGS2: MOVSI   0,RPGF  ;SET FLAG\r
+       IORM    0,F.C+N\r
+       TLO     N,RPGF\r
+       MOVE    0,SVRPG\r
+       JRST    LD2Q            ;BACK TO INPUT SCANNING.\r
+\r
+NUTS:  TTCALL  3,[ASCIZ /?LOADER command file not found/]\r
+       EXIT\r
+>;END OF IFN RPGSW\r
+>;END OF IFE L\r
+\r
+LD:                    ;HERE AFTER INITIALIZATION IF NO CCL\r
+IFN L,< HRRZM 0,LSPXIT\r
+       HRRZM W,LSPREL# ;SAVE LISP'S RELOCATION\r
+       MOVEI 0,0\r
+       HRRZM R,RINITL\r
+       RESET>\r
+IFE L,<IFN RPGSW,<\r
+       HLLZS   .JBERR          ;MAKE SURE ITS CLEAR.>\r
+       RESET                   ;INITIALIZE THIS JOB\r
+       SETZ    N,              ;CLEAR N\r
+CTLSET:        SETZB   F,S             ;CLEAR THESE AS WELL\r
+IFN TENEX,<TLO F,SYMSW!RMSMSW  ;ASSUME /S\r
+       TRO F,DMNFLG            ;ASSUME /B\r
+       SETZM NLSTGL            ;PERMIT LST OF UNDEF. GLOBALS>\r
+       HLRZ    X,.JBSA         ;TOP OF LOADER\r
+       HRLI    X,V             ;PUT IN INDEX\r
+       HRRZI   H,.JBDA(X)      ;PROGRAM BREAK\r
+       MOVE    R,[XWD W,.JBDA] ;INITIAL RELOCATION>\r
+       MOVSI   E,'TTY'\r
+       DEVCHR  E,\r
+       TLNN    E,10            ;IS IT A REAL TTY?\r
+IFN RPGSW,<JRST        [TLNN   N,RPGF  ;IN CCL MODE?>\r
+               EXIT            ;NO, EXIT IF NOT TTY\r
+IFN RPGSW,<    TRO F,NOTTTY    ;SET FLAG\r
+               JRST    LD1]    ;SKIP INIT>\r
+       INIT    3,1             ;INITIALIZE CONSOLE\r
+       SIXBIT    /TTY/\r
+       XWD     BUFO,BUFI\r
+CALLEX:        EXIT                    ;DEVICE ERROR, FATAL TO JOB\r
+       MOVEI     E,TTY1\r
+       MOVEM     E,.JBFF\r
+       INBUF     3,1\r
+       OUTBUF    3,1           ;INITIALIZE OUTPUT BUFFERS\r
+       OUTPUT    3,                    ;DO INITIAL REDUNDANT OUTPUT\r
+LD1:\r
+IFE L,<        HRRZ    B,.JBREL        ;MUST BE JOBREL FOR LOADING REENTRANT>\r
+IFN L,<        MOVE    B,.JBSYM        ;USED INSTEAD OF JOBREL FOR SYMBOL TABLE FIXUPS>\r
+       HRRZM   B,HISTRT\r
+       SUB     B,SE3           ;INITIALIZE SYMBOL TABLE POINTER\r
+       CAILE     H,1(B)        ;TEST CORE ALLOCATION\r
+IFE L,<        JRST    [HRRZ   B,.JBREL;TOP OF CORE\r
+               ADDI    B,2000  ;1K MORE\r
+               CORE    B,      ;TRY TO GET IT>\r
+               EXIT            ;INSUFFICIENT CORE, FATAL TO JOB\r
+IFE L,<                JRST    LD1]    ;TRY AGAIN>\r
+IFN EXPAND,<MOVE S,[10,,12]    ;CORMAX IN NSWTBL\r
+       GETTAB  S,              ;GET MAX CORE ALLOWED TO A JOB\r
+       MOVSI   S,1             ;SET TO VERY LARGE\r
+IFN REENT,<HLRZ        E,.JBHRL        ;BUT DON'T INCLUDE HIGH SEGMENT\r
+       SUBI    S,1(E)          ;IN LOW SEGMENT MAX>\r
+IFE REENT,<SUBI        S,1             ;ONE LESS FOR K BOUND>\r
+       MOVEM   S,ALWCOR        ;SAVE IT FOR XPAND TEST>\r
+IFN PURESW,<MOVE S,[XWD HICODE,LOWCOD]\r
+       BLT S,LOWCOD+CODLN-1>\r
+IFE L,<        MOVS    E,X             ;SET UP BLT POINTER\r
+       HRRI    E,1(X)>\r
+IFN L,<MOVS E,H\r
+       HRRI E,1(H)>\r
+       SETZM   -1(E)           ;ZERO FIRST WORD\r
+       BLT     E,(B)           ;ZERO CORE UP TO THE SYMBOL AREA\r
+       HRRZ    S,B             ;INITIALIZE UNDEF. POINTER\r
+       MOVEM   S,NAMPTR                ;INITIALIZE PROGRAM NAME POINTER\r
+IFE L,<        HRRI    R,.JBDA         ;INITIALIZE THE LOAD ORIGIN\r
+       MOVE    E,COMM          ;SET .COMM. AS THE FIRST PROGRAM\r
+       MOVEM   E,1(B)          ;STORE IN SYMBOL TABLE\r
+       HRRZM     R,2(B)                ;STORE COMMON ORIGIN>\r
+       MOVEI     E,F.C         ;INITIALIZE STATE OF THE LOADER\r
+       BLT     E,B.C\r
+       MOVE    W,[ZBEG,,ZBEG+1]\r
+       SETZM   ZBEG            ;CLEAR START OF INITIALIZED DATA\r
+       BLT     W,ZEND          ;AND THE REST\r
+IFN CPUSW,<\r
+       MOVNI   W,1             ;-1\r
+       AOBJN   W,.+1           ;STANDARD TEST\r
+       JUMPN   W,.+2           ;KA-10 (OR PDP-6)\r
+       TRO     F,KICPFL        ;KI-10>\r
+IFN REENT,<MOVSI W,1\r
+       MOVEM W,HVAL1\r
+       MOVEM W,HVAL\r
+       MOVEM X,LOWX\r
+       MOVEM R,LOWR\r
+       HRRZI   W,1     \r
+       SETUWP  W,              ;SETUWP UUO.\r
+       TRO     F,NOHI6         ;PDP-6 COMES HERE.>\r
+IFN REENT!CPUSW,<\r
+       MOVEM   F,F.C           ;PDP-10 COMES HERE.>\r
+IFN SAILSW,<MOVE W,[XWD -RELLEN-1,LIBFLS-1]    ;SET UP POINTERS\r
+       MOVEM W,LIBPNT# ;IN THE FORM OF AOBJN WORDS\r
+       MOVE W,[XWD -RELLEN-1,PRGFLS-1]\r
+       MOVEM W,PRGPNT#>\r
+IFE L,<        MOVSI   W,254200        ;STORE HALT IN .JB41\r
+       MOVEM   W,.JB41(X)      ;...>\r
+IFN L,<        MOVE W,.JBREL\r
+       HRRZM W,OLDJR>\r
+IFN B11SW,<MOVEI W,440000      ;SET UP THE SPECIAL BITS OF HEADNUM(ADD+POLISH)\r
+       MOVEM   W,HEADNM\r
+       MOVEI   W,PDLOV ;ENABLE FOR PDL OV\r
+       MOVEM   W,.JBAPR\r
+       MOVEI   W,200000\r
+       CALLI   W,16\r
+>\r
+IFN DMNSW,<MOVEI W,SYMPAT\r
+       MOVEM W,KORSP>\r
+IFN MONLOD,<IFN PURESW,<\r
+       MOVEI   W,.RBALC        ;NUMBER OF WORDS FOR ENTER\r
+       MOVEM   W,DIOUT\r
+       MOVEI   W,DALLOC        ;NUMBER OF BLOCKS TO ALLOCATE\r
+       MOVEM   W,DIOUT+.RBEST>>\r
+IFN SFDSW,<GETPPN      W,      ;GET USER'S PPN\r
+       MOVEM   W,MYPPN         ;SAVE IT FOR [,,] ETC>\r
+IFN FORSW,<MOVEI W,FORSW-1     ;GET DEFAULT\r
+       MOVEM   W,FORLIB        ;INCASE USER DOESN'T SET IT>\r
+;LOADER SCAN FOR FILE NAMES\r
+\r
+LD2Q:  XOR     N,F.C+N         ;HERE WE STORE THE TWO BITS FOR\r
+       AND     N,[AUXSWI!AUXSWE,,ENDMAP]       ;THE AUX FILE INTO THE\r
+       XORM    N,F.C+N         ;SAVED REGISTER 'N'\r
+       MOVSI   B,F.C           ;RESTORE ACCUMULATORS\r
+       BLT     B,B\r
+       MOVE    P,PDLPT         ;INITIALIZE PUSHDOWN LIST\r
+       SETZM     BUFI2         ;CLEAR INPUT BUFFER POINTER\r
+IFE PP,<SETZM     ILD1         ;CLEAR INPUT DEVICE NAME>\r
+IFN PP,<MOVSI  T,'DSK'         ;ASSUME DSK.\r
+       MOVEM   T,ILD1>\r
+       SETZM   OLDDEV  ;TO MAKE IT GO BACK AFTER /D FOR LIBSR\r
+\r
+LD2B:  RELEAS    1,                    ;RELEASE BINARY INPUT DEVICE\r
+IFN PP,<SETZM  PPPN            ;CLEAR PERMANENT PPN ON EACH NEW LINE>\r
+IFN RPGSW,<    TLNE    N,RPGF          ;NOT IF DOING CCL STUFF\r
+       JRST    LD2BA>\r
+       MOVEI     T,"*"\r
+       IDPB    T,BUFO1         ;OUTPUT ASTERISK TO START INPUT\r
+       OUTPUT    3,\r
+LD2BA: TLZ     F,FULLSW+ASW+ISW+CSW+ESW+SKIPSW+SLIBSW+REWSW\r
+LD2BP: TLNE    F,LIBSW         ;WAS LIBRARY MODE ON?\r
+       TLO     F,SKIPSW        ;YES, NORMAL MODE IS SKIPPING\r
+LD2DD: SETZM   DTIN            ;CLEAR FILE NAME AFTER , CR-LF, ETC\r
+\r
+LD2D:  SKIPE   W,OLDDEV        ;RESET DEVICE IF NEEDED.\r
+       CAMN    W,ILD1          ;IS IT SAME?\r
+       JRST    LD2DC           ;YES, FORGET IT.\r
+       MOVEM   W,ILD1\r
+LD2DB: TLZ     F,ISW+DSW+FSW+REWSW\r
+LD2DC: IFN PP,<SETZM   PPN     ;DON'T REMEMBER PPN FROM ONE FILE TO NEXT.>\r
+LD2DA: SETZB   W,OLDDEV                ;INITIALIZE IDENTIFIER SCAN\r
+       MOVEI   E,6             ;INITIALIZE CHARACTER COUNTER\r
+       MOVE    V,LSTPT         ;INITIALIZE BYTE POINTER TO W\r
+       TLZ     F,SSW+DSW+FSW   ;LEAVE SWITCH MODE\r
+LD3:   IFN RPGSW,<TLNE N,RPGF  ;CHECK RPG FEATURE\r
+       JRST    RPGRD>\r
+       SOSGE   BUFI2           ;DECREMENT CHARACTER COUNTER\r
+       JRST    [INPUT  3,      ;FILL TTY BUFFER\r
+               JRST    .-1]    ;MAKE SURE NOT A NULL BUFFER\r
+       ILDB    T,BUFI1         ;LOAD T WITH NEXT CHARACTER\r
+LD3AA: CAIE    T,175   ;OLD ALTMOD\r
+       CAIN    T,176   ;EVEN OLDER ONE\r
+       MOVEI   T,33    ;NEW ONE\r
+       CAIL    T,140   ;LOWER CASE?\r
+       TRZ     T,40    ;CONVERT TO UPPER CASE\r
+       MOVE    Q,T\r
+       HRLM    Q,LIMBO         ;SAVE THIS CHAR.\r
+       MOVSS   LIMBO           ;AND LAST ONE\r
+       IDIVI     Q,11          ;TRANSLATE TO 4 BIT CODE\r
+       LDB     Q,LD8(A)                ;LOAD CLASSIFICATION CODE\r
+       CAIGE     Q,4           ;MODIFY CODE IF .GE. 4\r
+       TLNN    F,SSW           ;MODIFY CODE IF SWITCH MODE OFF\r
+       ADDI    Q,4             ;MODIFY CLASS. CODE FOR DISPATCH\r
+IFN SYMARG,<CAIL Q,20                  ;SKIP UNLESS SECOND FORM OF DISPATCH\r
+       JRST    LD3AB                   ;DIFFERENT DISPATCH>\r
+       HRRZ    A,LD3A(Q)               ;LOAD RH DISPATCH ENTRY\r
+       CAIL    Q,10            ;SKIP IF CORRECT DISPATCH ENTRY\r
+       HLRZ    A,LD3A-10(Q)    ;LOAD LH DISPATCH ENTRY\r
+       JRST    @A                      ;JUMP TO INDICATED LOCATION\r
+\r
+;HERE ON ERRORS\r
+\r
+LD2C:  POP     P,(P)           ;BACKUP ONE LEVEL\r
+LD2:   SETZM   SBRNAM          ;CLEAR BLOCK TYPE 6 SEEN\r
+IFN RPGSW,<TLNE        N,RPGF          ;IN CCL MODE\r
+       TRNN    F,TRMFL         ;YES, /G SEEN?>\r
+       JRST    LD2Q            ;NO, START A NEW LINE\r
+IFN RPGSW,<POPJ        P,              ;AND RETURN>\r
+\r
+;COMMAND DISPATCH TABLE\r
+\r
+LD3A:  XWD     LD3,LD7B                ;IGNORED CHAR, BAD CHAR (SWITCH)\r
+       XWD     LD6A,LD6                ;</> OR <(>, LETTER (SWITCH)\r
+       XWD     LD5,LD6C                ;<:>, DIGIT (SWITCH ARG.)\r
+       XWD     LD5A,LD6D               ;<.>, ESCAPE SWITCH MODE <)>\r
+       XWD     LD5C,LD7                ;<=> OR <L. ARROW>, BAD CHAR.\r
+       XWD     LD5B,LD4                ;<,>, ALPHABETIC CHAR.\r
+       XWD     LD5D,LD4                ;<CR.>, NUMERIC CHAR.\r
+       XWD     LD5E1,LD7               ;<ALT MODE>, BAD CHAR. <)>\r
+IFN SYMARG,<XWD LD7,LD10               ;BAD CHAR,&>\r
+\r
+IFN SYMARG,<\r
+LD3AB: ROT     Q,-1                    ;CUT Q IN HALF\r
+       HRRZ    A,LD3A(Q)               ;PULL OFF RIGHT HALF OF TABLE ENTRY\r
+       JUMPGE  Q,@A                    ;WHICH IS CORRECT FOR EVEN ENTRIES\r
+       HLRZ    A,LD3A(Q)               ;BUT USE LEFT HALF FOR ODD ENTRIES\r
+       JRST    @A>\r
+\r
+IFN RPGSW,<\r
+RPGRD1:        MOVNI T,5\r
+       ADDM T,CTLIN+2\r
+       AOS     CTLIN+1\r
+RPGRD: SOSG    CTLIN+2 ;CHECK CHARACTER COUNT.\r
+       JRST    RPGRD2\r
+       IBP     CTLIN+1 ;ADVANCE POINTER\r
+       MOVE    T,@CTLIN+1      ;AND CHECK FOR LINE #\r
+       TRNE    T,1\r
+       JRST    RPGRD1\r
+       LDB     T,CTLIN+1       ;GET CHR\r
+       JRST    LD3AA           ;PASS IT ON\r
+\r
+RPGRD2:\r
+IFN TEMP,<SKIPE        TMPFLG  ;TMPCOR UUO READ DONE?\r
+       JRST    RPGRD3  ;YES, SO SHOULD NEVER GET HERE>\r
+       IN      17,0\r
+       JRST    RPGRD+2\r
+       STATO   17,740000\r
+       JRST    RPGRD3  ;END OF FILE\r
+       ERROR   ,</ERROR WHILE READING COMMAND FILE!/>\r
+       EXIT            ;AND GIVE UP\r
+\r
+RPGRD3:        ERROR   ,</END-OF-FILE ON COMMAND FILE!/>\r
+       EXIT\r
+>\r
+\rSUBTTL        CHARACTER HANDLING\r
+\r
+;ALPHANUMERIC CHARACTER, NORMAL MODE\r
+LD4:   SOJL    E,LD3           ;JUMP IF NO SPACE FOR CHAR IN W\r
+       CAIGE   T,141           ;WORRY ABOUT LOWER CASE LETTERS\r
+       SUBI    T,40            ;CONVERT FROM ASCII TO SIXBIT\r
+       IDPB    T,V             ;DEPOSIT CHAR OF IDENTIFIER IN W\r
+       TLO     F,DSW           ;SET IDENTIFIER FLAG\r
+       JRST    LD3             ;RETURN FOR NEXT CHARACTER\r
+\r
+;DEVICE IDENTIFIER DELIMITER <:>\r
+\r
+LD5:   PUSH    P,W             ;SAVE W\r
+       TLOE    F,CSW           ;TEST AND SET COLON FLAG\r
+       PUSHJ     P,LDF         ;FORCE LOADING\r
+       POP     P,W             ;RESTORE W\r
+       TLNE    F,ESW           ;TEST SYNTAX\r
+       JRST    LD7A            ;ERROR, MISSING COMMA ASSUMED\r
+       JUMPE   W,LD2DC         ;JUMP IF NULL DEVICE IDENTIFIER\r
+       EXCH   W,ILD1           ;STORE DEVICE IDENTIFIER\r
+       MOVEM   W,LSTDEV        ;SAVE LAST DEVICE SO WE CAN RESTORE IT\r
+       JRST    LD2DB           ;RETURN FOR NEXT IDENTIFIER\r
+\r
+;FILE NAME EXTENSION IDENTIFIER DELIMITER <.>\r
+LD5A:  IFN SYMARG,<\r
+       TRNE    F,ARGFL         ;IS "." SPECIAL\r
+       JRST    LD4             ;YES,RADIX-50>\r
+       TLOE    F,ESW           ;TEST AND SET EXTENSION FLAG\r
+       JRST    LD7A            ;ERROR, TOO MANY PERIODS\r
+       TLZE    F,CSW+DSW       ;SKIP IF NULL IDENT AND NO COLON\r
+       MOVEM     W,DTIN        ;STORE FILE IDENTIFIER\r
+       JRST    LD2DC           ;RETURN FOR NEXT IDENTIFIER\r
+\r
+;INPUT SPECIFICATION DELIMITER <,>\r
+LD5B:\r
+IFN PP,<TLZE   N,PPCSW                 ;READING PP #?\r
+       JRST    [\r
+IFN SFDSW,<    SKIPN   D               ;JUST A COMMA SEEN?\r
+               HLRZ    D,MYPPN         ;YES, USE OWN PROJ #>\r
+IFE STANSW,<   HRLM    D,PPN           ;STORE PROJ #\r
+               JRST    LD6A1           ];GET PROG #>\r
+IFN STANSW,<   PUSHJ   P,RJUST         ;RIGHT JUSTIFY W\r
+               HRLM    W,PPN           ;STORE PROJ NAME\r
+               JRST    LD2D            ];GET PROG NAME>\r
+       PUSHJ   P,SFDCK         ;CHECK FOR SFD DIRECTORY>\r
+       SETOM   LIMBO           ;USED TO INDICATE COMMA SEEN\r
+       TLZN    F,FSW           ;SKIP IF PREV. FORCED LOADING\r
+       PUSHJ     P,FSCN2               ;LOAD (FSW NOT SET)\r
+       JRST    LD2BP           ;RETURN FOR NEXT IDENTIFIER\r
+\r
+LD5B1: TLNE    F,ESW           ;TEST EXTENSION FLAG\r
+       JRST    LDDT3           ;EXPLICIT EXTENSION IDENTIFIER\r
+       TLZN    F,CSW+DSW               ;SKIP IF IDENT. OR COLON\r
+       POPJ    P,\r
+       MOVEM     W,DTIN                ;STORE FILE IDENTIFIER\r
+       JRST    LDDT2           ;ASSUME <.REL> IN DEFAULT CASE\r
+\r;OUTPUT SPECIFICATION DELIMITER <=> OR <LEFT ARROW>\r
+;OR PROJ-PROG # BRACKETS <[> AND <]>\r
+\r
+LD5C:\r
+IFN SPCHN,<CAIN T,"="  ;DO A /= AS SWITCH\r
+       TLNN F,SSW\r
+       SKIPA\r
+       JRST LD6>\r
+IFN RPGSW,<CAIN T,"@"  ;CHECK FOR * COMMAND.\r
+       JRST    RPGS1>\r
+IFN PP,<CAIN   T,"["                   ;PROJ-PROG #?\r
+       JRST    [TLO    N,PPSW+PPCSW    ;SET FLAGS\r
+               MOVEM   W,PPNW          ;SAVE W\r
+               MOVEM   E,PPNE          ;SAVE E\r
+               MOVEM   V,PPNV          ;SAVE V\r
+IFN SFDSW,<    SETZM   SFD             ;USED AS A FLAG>\r
+IFE STANSW,<   JRST    LD6A2]>         ;READ NUMBERS AS SWITCHES\r
+IFN STANSW,<   JRST    LD2D]>\r
+       CAIN    T,"]"                   ;END OF PP #?\r
+       JRST    [PUSHJ  P,RBRA          ;PROCESS RIGHT BRACKET\r
+               JRST    LD3]            ;READ NEXT IDENT>\r
+       TLOE    F,ASW                   ;TEST AND SET LEFT ARROW FLAG\r
+       JRST    LD7A                    ;ERROR, MISPLACED LEFT ARROW\r
+       PUSHJ     P,LD5B1               ;STORE IDENTIFIER\r
+       TLZN    F,ESW                   ;TEST EXTENSION FLAG\r
+       MOVSI     W,'MAP'               ;ASSUME <.MAP> IN DEFAULT CASE\r
+       HRRI    W,0             ;CLEAR RIGHT HALF OF EXTENSION\r
+       CAMN    W,['CHN   ']    ;TEST FOR <.CHN> EXTENSION\r
+       MOVSI   W,'MAP'         ;AND TURN IT BACK TO MAP\r
+IFN MONLOD,<CAMN W,['XPN   ']  ;IS EXTENSION 'XPN'?\r
+       JRST    DIOPEN          ;YES, OPEN DISK IMAGE FILE>\r
+IFN SYMDSW,<CAMN W,['SYM   ']  ;IF EXT IS SYM\r
+       JRST    SYOPEN          ;OPEN AUX FOR SYMBOL FILE>\r
+       MOVEM     W,DTOUT1              ;STORE FILE EXTENSION IDENTIFIER\r
+       MOVE    W,DTIN                  ;LOAD INPUT FILE IDENTIFIER\r
+       MOVEM     W,DTOUT               ;USE AS OUTPUT FILE IDENTIFIER\r
+IFN SPCHN,<MOVEM W,CHNENT      ;AND FOR SPECAIL CHAINING>\r
+IFN PP,<SKIPN  W,PPN                   ;PROJ-PROG #\r
+       MOVE    W,PPPN                  ;TRY PERMANENT ONE\r
+       MOVEM   W,DTOUT+3               ;...>\r
+       MOVE    W,ILD1                  ;LOAD INPUT DEVICE IDENTIFIER\r
+       MOVEM   W,LD5C1                 ;USE AS OUTPUT DEVICE IDENTIFIER\r
+IFN SPCHN,<SKIPN CHNACB                        ;ARE WE DOING A SPECIAL CHAIN?\r
+       MOVEM   W,CHNOUT+1              ;ALLOW HIM TO CHOOSE SP CHAIN DEV>\r
+       SKIPN   W,LSTDEV                ;RESTORE LAST\r
+IFN PP,<MOVSI W,'DSK'                  ;RESET DEVICE TO DSK>\r
+       SETZM   LSTDEV                  ;BUT ONLY ONCE\r
+       MOVEM   W,ILD1\r
+;INITIALIZE AUXILIARY OUTPUT DEVICE\r
+\r
+IFN SYMDSW,<\r
+       TLNN    F,LSYMFL        ;IGNORE IF ALREADY IN USE\r
+       PUSHJ   P,AUXINI\r
+       JRST    LD2DD\r
+AUXINI:>\r
+       TRZ     F,TTYFL\r
+IFE SYMDSW,<TLZE N,AUXSWI+AUXSWE               ;FLUSH CURRENT DEVICE\r
+       RELEASE 2,                      ;...>\r
+       MOVE    W,LD5C1                 ;GET AUX DEVICE\r
+       DEVCHR  W,                      ;IS DEVICE A TTY?\r
+       TLNE    W,10                    ;...\r
+       TRO     F,TTYFL                 ;YES SET FLAG\r
+       TLNE    W,(1B4)                 ;IS IT CONTROLING TTY?\r
+IFE SYMDSW,<JRST LD2DD                 ;YES, SKIP INIT>\r
+IFN SYMDSW,<POPJ P,>\r
+       OPEN    2,OPEN2                 ;KEEP IT PURE\r
+       JRST    ILD5A\r
+       TLNE    F,REWSW                 ;REWIND REQUESTED?\r
+       UTPCLR  2,                      ;DECTAPE REWIND\r
+       TLZE    F,REWSW                 ;SKIP IF NO REWIND REQUESTED\r
+       MTAPE   2,1                     ;REWIND THE AUX DEV\r
+       MOVEI   E,AUX                   ;SET BUFFER ORIGIN\r
+       MOVEM   E,.JBFF\r
+       OUTBUF  2,1                     ;INITIALIZE SINGLE BUFFER\r
+       TLO     N,AUXSWI                ;SET INITIALIZED FLAG\r
+IFN LNSSW,<EXCH        E,.JBFF\r
+       SUBI    E,AUX\r
+       IDIV    C,E\r
+       OUTBUF  2,(C)>\r
+IFE SYMDSW,<JRST LD2DD                 ;RETURN TO CONTINUE SCAN>\r
+IFN SYMDSW,<POPJ P,>\r
+;RIGHT SQUARE BRACKET (PROJ-PROG NUMBERS)\r
+IFN PP,<\r
+SFDCK: IFN SFDSW,<\r
+       TLNN    N,PPSW          ;READING PP #?\r
+       POPJ    P,              ;NO\r
+       SKIPE   SFD             ;READING SFD YET?\r
+       JRST    SFDCK1          ;YES\r
+       SKIPN   D               ;NUMBER SEEN?\r
+       HRRZ    D,MYPPN         ;NO, USE MINE\r
+       HRRM    D,PPN           ;STORE IT\r
+       MOVEM   X,SFD           ;NEED AN AC, SETS SFD NON-ZERO\r
+       MOVE    X,[-SFDSW,,SFD] ;INITIALIZE POINTER\r
+       JRST    LD2DA           ;GET FIRST SFD\r
+\r
+SFDCK1:        AOBJP   X,SFDER         ;ERROR IF TOO MANY SFDS\r
+       MOVEM   W,(X)           ;STORE IN SLOT\r
+       JRST    LD2DA           ;GET NEXT SFD\r
+\r
+SFDER: MOVE    X,SFD           ;RESTORE X\r
+       ERROR   ,</?TOO MANY SFDS SPECIFIED@/>\r
+       JRST    LD2\r
+       \r
+>\r
+RBRA:  TLZN    N,PPSW          ;READING PP #?\r
+       POPJ    P,              ;NOPE, RETURN\r
+       TLZE    N,PPCSW         ;COMMA SEEN?\r
+       JRST    LD7A            ;NOPE, INDICATE ERROR\r
+IFN SFDSW,<SKIPN       SFD             ;A FULL PATH SPECIFIED?\r
+       JRST    RBRA1           ;NO\r
+       AOBJP   X,SFDER         ;MUST STORE LAST SFD\r
+       MOVEM   W,(X)\r
+       SETZM   1(X)            ;END WITH A ZERO\r
+       MOVE    X,SFD           ;RESTORE X\r
+       MOVEI   W,SFDADD        ;POINT TO SFD PATH\r
+       EXCH    W,PPN\r
+       MOVEM   W,SFD           ;STORE IN BLOCK\r
+       JRST    RBRA2           ;CONTINUE\r
+RBRA1:>\r
+IFE STANSW,<HRRM       D,PPN           ;STASH PROG NUMBER\r
+               TLZ     F,SSW   ;AND TURN OFF SWITCH MODE>\r
+IFN STANSW,<PUSHJ      P,RJUST         ;RIGHT JUSTIFY W\r
+       HRRM    W,PPN           ;STASH PROG NAME>\r
+       MOVE    W,PPN           ;GET PPN\r
+RBRA2: SKIPN   DTIN            ;FILE NAME SEEN IN THIS SPEC?\r
+       SKIPE   PPNW            ;OR SOMETHING WAITING IN W?\r
+       JRST    RBRA3           ;YES, SO WE'VE GOT A FILE NAME SOMEWHERE\r
+       MOVEM   W,PPPN          ;NO , SO MAKE PERMANENT PPN\r
+IFN SFDSW,<MOVE        W,[SFD,,PSFD]\r
+       BLT     W,PSFD+SFDSW    ;MOVE FULL PATH\r
+       MOVEI   W,PSFDAD        ;POINT TO IT\r
+       SKIPE   SFD             ;BUT NOT IF IT'S ZERO\r
+       MOVEM   W,PPPN          ;AND STORE>\r
+RBRA3: MOVE    W,PPNW          ;PICKUP OLD IDENT\r
+       MOVE    E,PPNE          ;RESTORE CHAR COUNT\r
+       MOVE    V,PPNV          ;RESTORE BYTE PNTR\r
+       POPJ    P,              ;TRA 1,4\r
+\r
+;RIGHT JUSTIFY W\r
+\r
+IFN STANSW,<\r
+RJUST: JUMPE   W,LD7A          ;NOTHING TO RIGHT JUSTIFY\r
+       TRNE    W,77            ;IS W RJUSTED YET?\r
+       POPJ    P,              ;YES, TRA 1,4\r
+       LSH     W,-6            ;NOPE, TRY AGAIN\r
+       JRST    .-3             ;...>>\r
+\r
+IFN SYMARG,<\r
+;& SELECTS A SYMBOL RATHER THAN ANUMBER FOR A SWITCH ARGUMENT\r
+;& MUST ALSO FOLLOW THW SYMBOL; THE FORM IS /&SYMBOL&SWITHCH\r
+LD10:  TRC     F,ARGFL         ;SET OR CLEAR SPECIAL CHARS.\r
+       TLCE    F,SSW           ;IF IN SWITCH MODE, EXIT TO GET IDENTIFIER\r
+       JRST    LD10B\r
+       PUSHJ   P,ASCR50        ;IF NOT, REENTER IT, CONVERT IDENTIFIER TO R50\r
+       PUSHJ   P,SDEF          ;AND SEE IF IT EXISTS\r
+       JRST    LD10A           ;YES IT DOES\r
+       PUSHJ   P,PRQ           ;NO, COMPLAIN. OUTPUT ?\r
+       PUSHJ   P,SPACE         ;FOLLOWED BY A SPACE\r
+       PUSHJ   P,PRNAME        ;FOLLOWED BY THIS SYMBOL\r
+       ERROR   0,</ DOESN'T EXIST@/>\r
+       JRST    LD2\r
+LD10A: MOVE    D,2(A)          ;SET D=VALUE OF SYMBOL AS NUMERIC ARG\r
+       TLZ     F,DSW!FSW\r
+       MOVEI   E,6             ;INITIALIZE NEW IDENTIFIER SCAN\r
+       MOVE    V,LSTPT         ;(W IS ALREADY 0)\r
+       JRST    LD3             ;NOW EAT SWITCH AND CONTINUE PROCESSING COMMAND\r
+LD10B: PUSHJ   P,FSCN1         ;FORCE SCAN TO COMPLETION TO MAKE SURE FILE IS LOADED\r
+       JRST    LD2DA>\r
+SUBTTL CONVERT SYMBOL IN W TO RADIX-50 IN C\r
+\r
+IFN SYMARG,<\r
+;ALSO USES A\r
+ASCR50:        MOVEI   A,0\r
+R50A:  MOVEI   C,0\r
+       ROTC    W,6             ;C IS NEXT SIXBIT CHAR\r
+       CAIGE   C,20\r
+       JRST    R50B            ;UNDER 20, MAY BE ., $, OR %\r
+       CAILE   C,31\r
+       JRST    R50C            ;OVER 31\r
+       SUBI    C,20-1          ;IS NUMBER\r
+R50D:  IMULI   A,50\r
+       ADD     A,C\r
+       JUMPN   W,R50A          ;LOOP FOR ALL CHARS\r
+       MOVE    C,A             ;WIND UP WITH CHAR IN C\r
+       TLO     C,040000        ;MAKE IT GLOBAL DEFINITION\r
+       POPJ    P,\r
+R50B:  JUMPE   C,R50D          ;OK IF SPACE\r
+       CAIE    C,16            ;TEST IF .\r
+       JRST    .+3             ;NO\r
+       MOVEI   C,45            ;YES\r
+       JRST    R50D\r
+       CAIE    C,4             ;SKIP IF $\r
+R50E:  MOVEI   C,5             ;ASSUME % IF NOTHING ELSE\r
+       ADDI    C,42\r
+       JRST    R50D\r
+R50C:  CAIGE   C,41\r
+       JRST    R50E            ;BETWEEN 31 AND 41\r
+       CAILE   C,72\r
+       JRST    R50E            ;OVER 72\r
+       SUBI    C,41-13         ;IS LETTER\r
+       JRST    R50D>\r
+\r
+;DEFINE PUTS A SYMBOL IN THE UNDEFINED SYMBOL TABLE\r
+;SO LOADER CAN SCAN LIBRARY AND LOAD PROGRAMS BEFORE THEY ARE REQUESTED\r
+;THE FORM IS /&SYMBOL# WHERE SYMBOL IS CONVERTED TO RADIX-50\r
+IFN SYMARG,<\r
+DEFINE:        PUSHJ   P,ASCR50        ;CONVRT TO R-50\r
+       MOVEI   W,-2(S)         ;WHERE SYMBOL WILL GO\r
+       CAIG    W,(H)           ;ENOUGH ROOM\r
+IFN EXPAND,<PUSHJ P,[PUSHJ P,XPAND\r
+               TLOA    F,FULLSW\r
+               JRST    POPJM3\r
+               POPJ    P,]>\r
+IFE EXPAND,<TLO        F,FULLSW>\r
+       SUB     S,SE3           ;ADJUST POINTER\r
+       MOVEM   C,1(S)          ;R-50 SYMBOL\r
+       SETZM   2(S)            ;VALUE\r
+       TLZ     F,DSW!SSW       ;TURN OFF SWITCHES\r
+       TRZ     F,ARGFL         ; DITTO\r
+       TLZN    N,SLASH         ;IF NOT /&NAME#\r
+       JRST    LD6A2           ;MUST BE (&NAME#), GET )\r
+       JRST    LD2D            ;CONTINUE TO SCAN\r
+>\r
+\rSUBTTL        TERMINATION\r
+;LINE TERMINATION <CARRIAGE RETURN>\r
+\r
+LD5D:\r
+IFN PP,<PUSHJ  P,RBRA          ;CHECK FOR UNTERMINATED PP #>\r
+       SKIPGE  LIMBO           ;WAS LAST CHAR. BEFORE CR A COMMA?\r
+       TLO     F,DSW           ;YES ,SO LOAD ONE MORE FILE\r
+       PUSHJ   P,FSCN          ;FORCE SCAN TO COMPLETION\r
+       JRST    LD2B            ;RETURN FOR NEXT LINE\r
+\r
+;TERMINATE LOADING <ALT MODE>\r
+\r
+LD5E:  JUMPE   D,LD5E1         ;ENTER FROM G COMMAND\r
+       TLO     N,ISAFLG        ;AND IGNORE ANY STARTING ADDRESS TO COME\r
+       HRRZM   D,STADDR        ;USE NUMERIC STARTING ADDRESS\r
+LD5E1: PUSHJ   P,CRLF          ;START A NEW LINE\r
+IFN RPGSW,<TRO F,TRMFL         ;INDICATE TERMINATION STAGE\r
+       RELEASE 17,0            ;RELEASE COMMAND DEVICE>\r
+IFN MANTIS,<TRNN N,MANTFL      ;LOADING MANTIS?\r
+       JRST    LD5E2           ;NO\r
+IFN KUTSW,<SETOM CORSZ         ;DON'T KUT BACK CORE>\r
+IFN DMNSW,<TRZ F,DMNFLG        ;OR MOVE SYMBOLS>\r
+LD5E2: >\r
+       PUSHJ   P,SASYM         ;SETUP JOBSA,JOBFF,JOBSYM,JOBUSY\r
+IFE NAMESW,<MOVE W,['LOADER']  ;FINAL MESSAGE>\r
+       JUMPL   S,.+2           ;UNDEFINED SYMBOLS\r
+       SKIPE   MDG             ;OR MULTIPLY DEFINED\r
+       PUSHJ   P,PRQ           ;PRINT "?" FOR BATCH\r
+IFN NAMESW,<HRRZ W,HISTRT      ;IN CASE NO NAME SET, USE FIRST LOADED\r
+       MOVE    W,-1(W)\r
+       SKIPN   CURNAM\r
+       PUSHJ   P,LDNAM\r
+       MOVE    W,CURNAM\r
+       CAME    W,[SIXBIT /MAIN/]       ;FORTRAN MAIN PROG, OR MACRO NO TITLE\r
+       JUMPN   W,.+3           ;A USEFUL NAME SEEN\r
+       SKIPE   PRGNAM          ;NO, SO TRY BINARY FILE NAME\r
+       MOVE    W,PRGNAM        ;USE BINARY FILE NAME IN EITHER CASE\r
+IFE L,<MOVEM   W,CURNAM        ;SAVE NAME FOR LATER>\r
+IFN L,<SETNAM W,               ;SETNAM>>\r
+IFN MONLOD,<TLNN N,DISW                ;SKIP IF LOADING TO DISK?>\r
+       PUSHJ P,BLTSET          ;SETUP FOR FINAL BLT\r
+       RELEASE 2,              ;RELEASE AUX. DEV.\r
+       RELEASE 1,0     ;INPUT DEVICE\r
+       RELEASE 3,0     ;TTY\r
+IFN SPCHN,<RELEASE 4,0 ;SPECIAL CHAINING CHANEL>\r
+\rIFN L,<       MOVE    W,LSPREL        ;RESTORE LISP'S RELOCATION\r
+       JRST @LSPXIT>\r
+IFE L,<                        ;NONE OF THIS NEEDED FOR LISP\r
+IFN PURESW,<\r
+       MOVE    V,[XWD HHIGO,HIGO]\r
+       BLT     V,HIGONE        ;MOVE DOWN CODE TO EXIT>\r
+       TLNN N,EXEQSW   ;DO WE WANT TO START\r
+       JRST LD5E3\r
+IFN RPGSW,<HRRZ        C,.JBERR        ;CHECK FOR ERRORS\r
+IFE MANTIS,<TLNN N,DDSW                ;ALLOW EXECUTION IF TO DDT>\r
+IFN MANTIS,<TDNN N,[DDSW,,MANTFL]      ;OR MANTIS>\r
+       JUMPN   C,EXDLTD        ;ERRORS AND NOT TO DDT>\r
+IFN MONLOD,<TLNE N,DISW                ;DISK IMAGE LOAD IN PROGRESS?\r
+       MOVE X,XRES             ;YES, GET RESIDENT X>\r
+       HRRZ W,.JBSA(X)\r
+IFN MANTIS,<TRNN N,MANTFL      ;NO MESSAGE IF STARTING SPECIAL DEBUGGER>\r
+       TLNN N,DDSW     ;SHOULD WE START DDT??\r
+IFE TENEX,<JRST        LD5E2   ;NO>\r
+IFN TENEX,<JRST        LD5E2   ;NO\r
+        PUSH P,1\r
+        MOVEI 1,400000 ;THIS FORK\r
+        DIR\r
+        CIS\r
+       JSYS 147        ;TENEX RESET, NOT CALLI 0.  FLUSH PA1050\r
+        MOVE 1,.JBSYM(X)\r
+        MOVEM 1,@770001        ;GIVE SYMS TO DDT\r
+        MOVE 1,.JBUSY(X)\r
+        MOVEM 1,@770002        ;AND UNDEF SYMS\r
+        POP P,1>\r
+       HRRZ W,.JBDDT(X)\r
+       TTCALL  3,[ASCIZ /DDT /]\r
+LD5E2: IFN MANTIS,<\r
+       SKIPE   V,MNTSYM        ;SHOULD WE START SPECIAL DEBUGGER?\r
+       TRNN    N,MANTFL\r
+       JRST    .+3             ;NO\r
+       HRRZ    W,.JBREN##(X)   ;YES\r
+       MOVEM   V,.JBCN6##(X)   ;SETUP AUXILARY SYMBOL POINTER>\r
+IFN RPGSW,<    TLNE    N,RPGF  ;IF IN RPG MODE\r
+       JUMPE   W,NOSTAD        ;ERROR IF NO STARTING ADDRESS>\r
+       JUMPE   W,LD5E3 ;ANYTHING THERE?\r
+       TLOA W,(JRST)   ;SET UP A JRST\r
+LD5E3: SKIPA W,CALLEX  ;NO OR NO EXECUTE, SET CALLI 12\r
+IFN MANTIS,<TRNE N,MANTFL      ;NO MESSAGE IF STARTING SPECIAL DEBUGGER\r
+       CAIA>\r
+       TTCALL 3,[ASCIZ /EXECUTION\r
+/]\r
+IFN TENEX,<MOVEM X,V           ;SAVE AWAY RELOCATION\r
+       MOVE X,.JBSA(X)         ;NEW START ADDRESS\r
+       HRLI X,<JRST>B53        ;JRST IN LH\r
+       MOVEI N,400000          ;THIS FORK\r
+       SEVEC                   ;SET ENTRY VECTOR\r
+       MOVE X,V                ;UNSAVE RELOCATION>\r
+IFN LDAC,<     HRLZ P,BOTACS   ;SET UP FOR ACBLT\r
+       MOVEM W,.JBBLT+1(X)     ;SET JOBBLT\r
+       MOVE W,[BLT P,P]\r
+       MOVEM W,.JBBLT(X)>\r
+       MOVE    V,.JBVER(X)     ;GET VERSION NUMBER\r
+       MOVEM   V,.JBVER        ;SET IT UP BEFORE SETNAM UUO\r
+IFN MONLOD,<TLNE N,DISW                ;LOADING TO DISK?\r
+       JRST DIOVER             ;YES, CLEAN UP THE XPN FILE>\r
+       TLNE    F,FULLSW        ;DID WE RUN OUT OF CORE?\r
+       HRRZ    A,Q             ;YES, NULIFY BLT\r
+       MOVSI LSTAC,LODACS      ;SET UP TO BLT BLT CODE INTO ACS\r
+       BLT LSTAC,LSTAC\r
+IFN KUTSW,<SKIPGE E,CORSZ      ;DO WE WANT CORE ADJUST\r
+       MOVE CORAC,JFCLAC       ;NO, CLEAR COREUUO>\r
+IFE LDAC,<MOVE LSTAC,W         ;SET END CONDITION>\r
+IFN PURESW,<\r
+       MOVSI   V,LD            ;DOES IT HAVE HISEG\r
+       JUMPG   V,HINOGO        ;NO,DON'T DO CORE UUO\r
+       MOVSI   V,1             ;SET HISEG CORE NONE ZERO\r
+       JRST    HIGO            ;AND GO>\r
+IFE PURESW,<\r
+IFN NAMESW,<MOVE       W,CURNAM        ;GET PROGRAM NAME\r
+       SETNAM  W,              ;SET IT FOR VERSION WATCHING>\r
+JRST 0>\r
+\r
+LODACS:        PHASE 0\r
+       BLT Q,(A)       ;BLT CODE DOWN\r
+IFN KUTSW,<CORAC:!     CORE E, ;CUT BACK CORE\r
+JFCLAC:!       JFCL    ;SHOULD NEVER HAVE AN ERROR SINCE REDUCING CORE>\r
+       SETZB   0,7             ;CLEAR ACCS OTHERWISE USER\r
+       SETZB   11,17           ;MIGHT BELIEVE GARBAGE THERE\r
+LSTAC:! IFN LDAC,<JRST .JBBLT>\r
+       IFE LDAC,<EXIT>\r
+DEPHASE\r
+\r
+IFN RPGSW,<\r
+NOSTAD:        TTCALL 3,[ASCIZ /NO STARTING ADDRESS\r
+/]\r
+EXDLTD:        TTCALL 3,[ASCIZ /?EXECUTION DELETED\r
+/]\r
+       JRST LD5E3>\r
+>      ;END OF IFE L AT BEGINNING OF THIS PAGE\r
+\r\fSUBTTL       PRINT FINAL MESSAGE\r
+; SET UP BLT AC'S, SETDDT, RELEAS\r
+\r
+BLTSET:        IFN RPGSW,<IFE K,<\r
+       JUMPE   W,BLTST3        ;NO MESSAGE FROM CHAIN IN CCL@>>\r
+IFN MANTIS,<TRNE N,MANTFL      ;NO MESSAGES IF SPECIAL DEBUGGER\r
+       JRST    NOMAX>\r
+       PUSHJ   P,FCRLF         ;A RETURN\r
+       MOVNI   Q,6             ;SET CHARACTER COUNT TO 6\r
+       MOVEI   D,77            ;CHARACTER MASK\r
+BLTST1:        TDNE    W,D             ;TEST FOR SIXBIT BLANK\r
+       JRST    BLTST2          ;NO, SO PRINT  THE NAME\r
+       LSH     D,6             ;SHIFT MASK LEFT ONE CHAR\r
+       AOJL    Q,BLTST1        ;INCR COUNTER & REPEAT\r
+BLTST2:        PUSHJ   P,PWORD1        ;OUTPUT PROGRAM NAME\r
+       PUSHJ P,SPACE\r
+BLTST3:\r
+IFN FAILSW,<MOVSI Q,-20        ;FINISH UP LINK STUFF\r
+FREND: HLRZ V,LINKTB+1(Q)\r
+       JUMPE V,NOEND\r
+       HRRZ A,LINKTB+1(Q)\r
+IFN REENT,<CAMGE V,HVAL1\r
+       SKIPA X,LOWX\r
+       MOVE X,HIGHX>\r
+IFN L,<CAML V,RINITL>\r
+       HRRM A,@X       ;PUT END OF LINK CHAIN IN PROPER PLACE\r
+NOEND: AOBJN Q,FREND\r
+IFN REENT,<MOVE X,LOWX ;RESET THINGS>>\r
+IFN KUTSW,<\r
+       SKIPGE C,CORSZ  ;NEG MEANS DO NOT KUT BACK CORE\r
+       JRST NOCUT\r
+       JUMPE C,MINCUT  ;0 IS KUT TO MIN. POSSIBLE\r
+       LSH C,12        ;GET AS A NUMBER OF WORDS\r
+       SUBI C,1\r
+       CAMG C,.JBREL   ;DO WE NEED MORE THAN WE HAVE??\r
+       JRST TRYSML     ;NO, SEE IF NUMBER REQUESTED IS TOO SMALL\r
+       MOVEI Q,0\r
+       CORE Q,\r
+       JFCL            ;WE JUST WANT TO KNOW HOW MUCH\r
+       HRRZS Q\r
+       CAMGE Q,CORSZ\r
+       JRST CORERR\r
+       JRST NOCUT1     ;SET FOR DO NOT CHANGE SIZE\r
+TRYSML:        CAIG C,-1(R)    ;IS DESIRED AMOUNT BIGGER THAN NEEDED\r
+IFE TENEX,<MINCUT:>\r
+       MOVEI C,-1(R)   ;GET MIN AMOUNT\r
+       IORI C,1777     ;CONVERT TO A 1K MULTIPLE\r
+IFN DMNSW,<    TRNN F,DMNFLG   ;DID WE MOVE SYMBOLS??\r
+       SKIPN .JBDDT(X) ;IF NOT IS DDT THERE??\r
+       JRST    .+2>\r
+IFE DMNSW,<SKIPE .JBDDT(X)     ;IF NO SYMBOL MOVING JUST CHECK DDT>\r
+       JRST NOCUT      ;DO NOT CUT IF SYMBOLS AT TOP AND DDT\r
+NOCUT1:        MOVEM C,.JBREL(X)       ;SAVE FOR CORE UUO\r
+       MOVEM C,CORSZ   ;SAVE AWAY FOR LATER\r
+       JRST    .+2\r
+NOCUT: SETOM CORSZ     ;SET FOR NO CUT  BACK>\r
+IFN RPGSW,<IFE K,<\r
+       JUMPE   W,NOMAX ;NO MESSAGE IF CHAIN IN CCL@>>\r
+IFN L,<HRRZ Q,.JBREL\r
+       SUB Q,OLDJR     ;PROPER SIZE>\r
+IFE L,<HRRZ Q,.JBREL(X)>\r
+       LSH Q,-12       ;GET CORE SIZE TO PRINT\r
+       ADDI Q,1\r
+       PUSHJ P,RCNUM\r
+IFN REENT,<MOVE Q,HVAL\r
+       SUB Q,HVAL1\r
+       HRREI   Q,-1(Q) ;SIZE IS ONE TOO BIG\r
+       CAIG    Q,.JBHDA        ;IS THERE ANY CODE LOADED THERE?\r
+       SETZB   Q,HVAL          ;NO , CLEAR ALL INDICATIONS OF IT\r
+       JUMPE   Q,NOHY          ;NO HIGH SEGMENT\r
+       MOVEI   T,"+"-40        ;THERE IS A HISEG\r
+       PUSHJ   P,TYPE\r
+       LSH     Q,-12\r
+       ADDI    Q,1\r
+       PUSHJ   P,RCNUM\r
+NOHY:>\r
+       MOVE W,[SIXBIT /K CORE/]\r
+       PUSHJ P,PWORD\r
+IFE L,<\r
+IFN RPGSW,<TLNN N,RPGF \r
+       JRST    .+4             ;NOT IN CCL MODE SO GIVE ALL INFO\r
+       TLZ     F,FCONSW        ;ONLY PUT ON MAP IF IN CCL MODE\r
+       TLNN    N,AUXSWI        ;IS THERE AN AUX DEV?\r
+       JRST    NOMESS          ;NO, SO SKIP REST OF THIS STUFF>\r
+       MOVSI   W,',  '         ;SET DELIMITER CHARACTERS\r
+       MOVNI   Q,2             ;SET COUNT TO 2\r
+       PUSHJ   P,PWORD1        ;OUTPUT THEM\r
+IFN DMNSW,<TRNN F,DMNFLG>\r
+       SKIPN .JBDDT(X)\r
+       SKIPA Q,.JBREL(X)\r
+       MOVEI Q,1(S)    ;FIND THE AMOUNT OF SPACE LEFT OVER\r
+       SUB Q,.JBFF(X)\r
+       ADDI    Q,1     ;ONE TWO SMALL\r
+       PUSHJ P,RCNUM\r
+IFN REENT,<\r
+       SKIPN   HVAL            ;CREATING A HIGH SEGMENT?\r
+       JRST    NOHIFR          ;NO\r
+       MOVEI   T,'+'           ;YES, TYPE +\r
+       PUSHJ   P,TYPE\r
+       HLRZ    Q,.JBHRL(X)     ;GET HISEG BREAK\r
+       SUBI    Q,1             ;1 TOO HIGH (R=NEXT TO LOAD INTO)\r
+       ANDI    Q,1777          ;CUT TO WORDS FREE\r
+       XORI    Q,1777\r
+       PUSHJ   P,RCNUM         ;TYPE\r
+NOHIFR:>\r
+       MOVE W,[SIXBIT / WORDS/]\r
+       PUSHJ P,PWORD\r
+       MOVE W,[SIXBIT / FREE/]\r
+       PUSHJ P,PWORD\r
+       PUSHJ P,CRLF\r
+       ERROR   0,</LOADER USED !/>     ;GIVE EXPLANATION\r
+       MOVE Q,.JBREL\r
+       LSH Q,-12\r
+       ADDI Q,1\r
+       PUSHJ P,RCNUM   ;PRINT MAX LOW CORE SIZE\r
+IFN REENT,<    SKIPE Q,.JBHRL  ;GET SIZE OF HIGH SEGMENT\r
+       PUSHJ P,[MOVEI Q,400001(Q) ;CLEAR HIGH ORDER BIT\r
+               MOVEI T,"+"-40  ;PRINT A HIGH CORE PART\r
+               PUSHJ P,TYPE\r
+               LSH Q,-12\r
+               JRST RCNUM]>\r
+       MOVE W,[SIXBIT /K CORE/]\r
+       PUSHJ P,PWORD\r
+NOMESS:        TLO     F,FCONSW        ;FORCE PRINTING OF CRLF>\r
+       PUSHJ   P,CRLF\r
+IFE L,<\r
+IFN REENT,<HLRZ        A,.JBCOR(X)     ;GET HIGHEST ACTUAL DATA\r
+       CAIL    A,.JBDA         ;SEE IF GREATER THAN JOBDAT\r
+       JRST    NOMAX           ;YES, SKIP MESSAGE\r
+       ERROR   0,</[NULL LOW SEGMENT]!/>\r
+       PUSHJ   P,CRLF>\r
+NOMAX:\r
+IFE TENEX,<MOVE W,.JBDDT(X)\r
+       SETDDT W,\r
+       JUMPN   W,DDTSET        ;DON'T BOTHER IF DDT SET\r
+       HLRE    Q,.JBSYM(X)     ;GET LENGTH OF SYMBOL TABLE\r
+       MOVNS   Q               ;AS POSITIVE NUMBER\r
+       HRRZ    W,.JBSYM(X)     ;GET START\r
+       ADD     W,Q             ;ADDRESS OF HIGHEST LOCATION\r
+       HLRZ    Q,.JBSA(X)      ;HIGHEST LOCATION SAVED BY MONITOR\r
+IFN MANTIS,<TRNN N,MANTFL      ;DONT CHECK ADR IF SPECIAL DEBUGGER>\r
+       CAIG    W,(Q)           ;IN BOUNDS?\r
+       JRST    DDTSET          ;YES, ALL OK\r
+IFN REENT,<TRNE        F,SEENHI        ;ANY HIGH SEGMENT STUFF?\r
+       CAMGE   W,HVAL1         ;YES, IN HI-SEG THEN?\r
+       JRST    .+2             ;NO\r
+       JRST    DDTSET          ;YES, ALL IS WELL>\r
+       SETZM   .JBSYM(X)       ;JOBSYM IS OUT OF BOUNDS\r
+       CAIA                    ;JOBUSY ALSO, SO CLEAR THEM>\r
+DDTSET:        SKIPLE  .JBUSY(X)       ;IF ITS NOT A POINTER\r
+       SETZM   .JBUSY(X)       ;DON'T KEEP ADDRESS \r
+\r
+IFE TEN30,<HRLI Q,20(X)        ;SET UP BLT FOR CODE\r
+       HRRI Q,20>\r
+IFN TEN30,<HRLI Q,.JBDDT(X)\r
+       HRRI Q,.JBDDT>\r
+>;END OF IFE L\r
+       HRRZ A,R\r
+       POPJ P,         ;WE HAVE SET R UP BY CLEVER CODE IN SASYM\r
+IFN KUTSW,<CORERR:     TTCALL 3,[ASCIZ /?NOT ENOUGH CORE\r
+/]\r
+       EXIT>\r
+\r
+IFN TENEX,<\r
+;SETUP TO CUT BACK CORE TO MINIMUM\r
+;THIS IS MIN OF R AND TOP OF SYMTAB\r
+MINCUT:        HLRE C,.JBSYM(X)\r
+       MOVNS C\r
+       ADD C,.JBSYM(X)\r
+       HRRZS C\r
+       JRST TRYSML             ;GO COMPARE WITH R\r
+>\r
+\fSUBTTL        SET UP JOBDAT\r
+SASYM: TLNN F,NSW\r
+       PUSHJ P,LIBF    ;SEARCH LIBRARY IF REQUIRED\r
+       PUSHJ P,FSCN    ;FORCE END OF SCAN\r
+IFN ALGSW,<MOVE C,[RADIX50 44,%OWN]\r
+       MOVE    W,%OWN          ;GET VALUE\r
+       TRNE    N,ALGFL         ;IF ALGOL PROG LOADED\r
+       PUSHJ   P,SYMPT         ;DEFINE %OWN\r
+IFN REENT,<MOVE        X,LOWX          ;MAKE SURE X IS CORRECT>>\r
+IFN RPGSW,<HLRE A,S\r
+       MOVNS A\r
+       LSH A,-1\r
+       ADD A,.JBERR\r
+       HRRM A,.JBERR>\r
+IFN SYMDSW,<PUSHJ P,READSYM    ;READ BACK LOCAL SYMBOLS>\r
+IFN SPCHN,<\r
+       SKIPE   CHNACB          ;TEST FOR SPECIAL CHAINING\r
+       TRNN    N,CHNMAP        ;TEST FOR ROOT SEGMENT PRINTED\r
+       JRST    NOCHMP          ;JUMP IF NO TO EITHER CONDITION\r
+       SETZM   LINKNR          ;CLEAR OVERLAY LINK NUMBER\r
+       MOVE    A,BEGOV         ;GET START OF OVERLAY POINT\r
+IFN REENT,<ADDI A,(X)          ;PLUS LOADER CORE BASE\r
+       HRRZS   A               ;CLEAR LEFT HALF OF REGISTER\r
+       HRRZ    W,HILOW         ;GET CURRENT SPOT IN LOW SEGMENT>\r
+IFE REENT,<HRRZ W,R            ;GET CURRENT SPOT IN LOW SEGMENT>\r
+       CAMN    W,R             ;TEST FOR ADDED MODULES\r
+       TRZ     N,ENDMAP        ;NO, THEN SUPRESS MAP AT END \r
+NOCHMP:        >                       ;END OF IFN SPCHN\r
+       TRNE    N,ENDMAP        ;WANT MAP AT END?\r
+       PUSHJ   P,PRTMAP        ;YES\r
+       TLNN    N,AUXSWE        ;TEST FOR MAP PRINTED YET\r
+       TLZ     N,AUXSWI        ; NO, THEN DON'T START NOW\r
+       TRNN    N,ENDMAP        ;DON'T PRINT UNDEFS TWICE\r
+       PUSHJ P,PMS     ;PRINT UNDEFS\r
+       HRRZ A,H        ;DO NOT CLOBBER H IF STILL INSERTING SYMBOLS\r
+IFN MONLOD,<TLNN N,DISW        ;SKIP IF LOADING TO DISK>\r
+       SUBI A,(X)      ;HIGHEST LOC LOADED INCLUDES LOC STMTS\r
+       CAILE A,(R)     ;CHECK AGAINST R\r
+       HRR R,A         ;AND USE LARGER\r
+IFN MONLOD,<TLNE N,DISW        ;LOADING TO DISK?\r
+       MOVE X,XRES             ;YES, GET RESIDENT OFFSET>\r
+IFE L,<        HRRZ    A,STADDR        ;GET STARTING ADDRESS\r
+       HRRM    A,.JBSA(X)      ;STORE STARTING ADDRESS\r
+       HRRZM R,.JBFF(X)        ;AND CURRENT END OF PROG\r
+       HRLM R,.JBSA(X)>\r
+IFN DMNSW,<MOVE C,[RADIX50 44,PAT..]   ;MARK PATCH SPACE FOR RPG\r
+       MOVEI W,(R)\r
+       PUSHJ P,SYMPT\r
+IFN REENT,<TRNE        F,HISYM         ;SHOULD SYMBOLS GO IN HISEG?\r
+       JRST    BLTSYM          ;YES>>\r
+IFN DMNSW!LDAC,<               ;ONLY ASSEMBLE IF EITHER SET\r
+IFN MONLOD,<TLNE N,DISW                ;LOADING TO DISK?\r
+       JRST SASYM1             ;YES, NO NEED TO EXPAND CORE>\r
+IFE LDAC,<     TRNN F,DMNFLG   ;GET EXTRA  SPACE IF SYMBOLS\r
+       JRST    NODDT   ;MOVED OR IF LOADING ACS>\r
+IFE DMNSW,<    MOVEI A,20      ;FOR LOADING ACS>\r
+IFN DMNSW,<    MOVE A,KORSP\r
+IFN LDAC,<     TRNN F,DMNFLG   ;ONLY 20 IF SYMBOLS NOT MOVED\r
+       MOVEI A,20>>\r
+       ADDI A,(R)      ;GET ACTUAL PLACE TO PUT END OF SPACE\r
+       ADDI A,(X)\r
+       CAIL A,(S)      ;DO NOT OVERWRITE SYMBOLS\r
+IFN EXPAND,<JRST [PUSHJ P,XPAND>\r
+               PUSHJ P,MORCOR\r
+IFN EXPAND,<   JRST .-1]>\r
+IFN LDAC,<HRRM R,BOTACS        ;SAVE BOTTOM OF WHERE WE PUT ACS\r
+       HRRZ A,R\r
+       ADDI A,(X)\r
+       HRL A,X ;SET UP BLT FROM (X) TO R(X)\r
+       MOVEI Q,17(A)\r
+       BLT A,(Q)>>\r
+IFN DMNSW,<TRNN F,DMNFLG       ;NOW THE CODE TO MOVE SYMBOLS\r
+       JRST NODDT\r
+IFN MONLOD,<SASYM1:>\r
+       HRRZ A,R\r
+       ADD A,KORSP\r
+       MOVE W,A        ;SAVE POINTER TO FINAL LOC OF UNDEFS\r
+IFN MONLOD,<TLNE N,DISW                ;LOADING TO DISK?\r
+       PUSHJ P,DISYM           ;YES, GET BREAK ADDRESS INTO CORE>\r
+       ADDI A,(X)\r
+       HLLZ Q,S        ;COMPUTE LENGTH OF SYMBOL TABLE\r
+\f      ADD Q,B\r
+       HLROS Q\r
+       MOVNS Q\r
+       ADDI Q,-1(A)    ;GET PLACE TO STOP BLT\r
+       HRLI A,1(S)     ;WHERE TO BLT FROM\r
+       SUBI W,1(S)     ;GET AMOUNT TO CHANGE S AND B BY\r
+       BLT A,(Q)       ;MOVE SYMBOL TABLE\r
+       ADD S,W\r
+       ADD B,W ;CORRECT S AND B FOR MOVE\r
+       HRRI R,1(Q)     ;SET R TO POINT TO END OF SYMBOLS\r
+IFN REENT,<HRRM        R,HILOW         ;SAVE THIS AS HIGHEST LOC IN LOW SEG TO SAVE>\r
+IFN MONLOD,<TLNE N,DISW                ;LOADING TO DISK?\r
+       MOVE X,XCUR     ;GET CURRENT BUFFER OFFSET>\r
+       SUBI R,(X)\r
+IFN MONLOD,<TLNE N,DISW                ;LOADING TO DISK?\r
+       MOVE X,XRES             ;SET UP OFFSET FOR RESIDENT PORTION>\r
+       HRRM R,.JBFF(X)\r
+       HRLM R,.JBSA(X) ;AND SAVE AWAY NEW JOBFF\r
+IFE REENT,<HRRM        R,.JBCOR(X)     ;DON'T LOSE LOW SEGMENT DATA>\r
+IFN LDAC,<SKIPA>       ;SKIP THE ADD TO R\r
+NODDT:>\r
+IFN LDAC,<ADDI R,20>   ;MAKE SURE R IS CORRECT FOR BLT\r
+       MOVE A,B\r
+       ADDI A,1        ;SET UP JOBSYM, JOBUSY\r
+IFE L,<MOVEM A,.JBSYM(X)\r
+IFN REENT,<TRNN        A,(1B0)         ;SYMBOL TABLE IN HIGH SEGMENT?\r
+       JRST    NOHYSM          ;NO\r
+       EXCH    X,HIGHX         ;RELOCATE TO HIGH SEG.\r
+       ADD     X,HVAL1         ;ADD IN BASE OF HIGH SEGMENT\r
+       MOVEM   A,.JBHSM(X)     ;SINCE MAY NOT START AT 400000\r
+       SUB     X,HVAL1         ;BACK AS IT WAS\r
+       EXCH    X,HIGHX\r
+NOHYSM:        >>\r
+IFN L,<MOVEM A,.JBSYM>\r
+       MOVE A,S\r
+       ADDI A,1\r
+IFE L,<MOVEM A,.JBUSY(X)\r
+       MOVE A,HISTRT   ;TAKE POSSIBLE REMAP INTO ACCOUNT\r
+IFN MANTIS,<TRNE N,MANTFL      ;SPECIAL DEBUGGER?\r
+       MOVE    A,.JBREL        ;YES, USE OUR SEGTOP>\r
+       MOVEM A,.JBREL(X)       ;SET UP FOR IMEDIATE EXECUTION>\r
+IFN L,<MOVEM A,.JBUSY>\r
+IFN MONLOD,<TLNN N,DISW                ;LOADING TO DSK?\r
+       JRST    NOTDSK          ;NO\r
+       MOVE    A,.JBDDT(X)     ;GET DDT STARTING ADDRESS\r
+       MOVEM   A,.JBSDD(X)     ;SO GET WILL RESTORE IT\r
+       MOVE    A,.JB41(X)      ;MAY AS WELL SET UP JOB41\r
+       MOVEM   A,.JBS41(X)     ;ALSO\r
+NOTDSK:>\r
+IFN REENT,<\r
+       SKIPE A,HILOW   ;SET UP TOP LOC OF LOW CORE EXCLUDING BLOCKS\r
+       SUBI A,1(X)     ;IF NON-ZERO THEN IT NEEDS RELOCATION\r
+       HRLM A,.JBCOR(X)\r
+       TRNN F,SEENHI\r
+       POPJ P,\r
+       HRRZ A,HVAL\r
+       HRRM A,.JBHRL(X)\r
+       SUB A,HVAL1\r
+IFN DMNSW,<TRNE        F,HISYM         ;SYMBOLS IN HISEG?\r
+       ADDI    A,1             ;YES, AT TOP OF CORE ALREADY\r
+                               ;BUT HVAL ONE TOO SMALL>\r
+       HRLM A,.JBHRL(X)>\r
+       POPJ P,\r
+\r
+\fSUBTTL        BLT SYMBOL TABLE INTO HIGH SEGMENT\r
+IFN DMNSW&REENT,<\r
+BLTSYM:        MOVE    Q,HVAL  ;GET ORIGIN OF HISEG\r
+       CAMN    Q,HVAL1 ;HAS IT CHANGED?\r
+       JRST    NOBLT   ;NO\r
+       HLLZ    Q,S     ;COMPUTE LENGTH OF SYMBOL TABLE\r
+       HLRS    S       ;PUT NEG COUNT IN BOTH HALVES\r
+       JUMPE   S,.+2   ;SKIP IF S IS ZERO\r
+       HRLI    S,-1(S) ;SUB 1 FROM LEFT TO FIX CARRY PROBLEM\r
+       ADD     Q,B\r
+       HLROS   Q\r
+       MOVNS   Q\r
+       ADD     Q,HVAL  ;ADD LENGTH OF HISEG\r
+       SUB     Q,HVAL1 ;BUT REMOVE ORIGIN\r
+       ADD     Q,HISTRT        ;START OF HISEG IN CORE\r
+       HRRZS   Q       ;CLEAR INDEX FROM Q\r
+       ADD     Q,KORSP ;SAVE SPACE FOR SYMBOL PATCHES\r
+       CORE    Q,      ;EXPAND IF NEEDED\r
+       PUSHJ   P,MORCOR\r
+       PUSH    P,B     ;SAVE B\r
+       SOJ     B,      ;REMOVE CARRY FROM ADD TO FOLLOW\r
+       MOVSS   B       ;SWAP SYMBOL POINTER\r
+       ADD     B,.JBREL\r
+       HRRM    B,(P)   ;SAVE NEW B\r
+       MOVE    Q,.JBREL\r
+       ADD     B,S     ;INCASE ANY UNDEFS.\r
+       BLT     B,(Q)   ;MOVE SYMBOLS\r
+       POP     P,B     ;GET NEW B\r
+       SUB     B,HISTRT\r
+       ADD     B,HVAL1\r
+       SOJ     B,      ;REMOVE CARRY\r
+       ADDI    S,(B)   ;SET UP .JBUSY\r
+BLTSY1:        MOVE    Q,.JBREL\r
+       SUB     Q,HISTRT\r
+       ADD     Q,HVAL1\r
+       SUBI    Q,1     ;ONE TOO HIGH\r
+       MOVEM   Q,HVAL\r
+       JRST    NODDT\r
+\r
+\fNOBLT:        HRRZ    Q,H     ;GET HIGHEST LOC LOADED\r
+       IORI    Q,1777  ;MAKE INTO A K BOUND\r
+       MOVEI   A,-.JBHDA(S)    ;GET BOTTOM OF UNDF SYMBOLS\r
+       SUB     A,KORSP ;DON'T FORGET PATCH SPACE\r
+       CAIG    A,(Q)   ;ARE THEY IN SAME K\r
+IFN EXPAND,<JRST       [PUSHJ  P,XPAND>\r
+               PUSHJ   P,MORCOR\r
+IFN EXPAND,<   JRST    NOBLT]>\r
+       MOVEM   Q,HISTRT        ;SAVE AS START OF HIGH\r
+       MOVEI   A,400000        ;HISEG ORIGIN\r
+       MOVEM   A,HVAL1         ;SAVE AS ORIGIN\r
+       SUB     S,HISTRT        ;GET POSITION OF UNDF POINTER\r
+       ADDI    S,377777        ;RELATIVE TO ORG\r
+       SUB     B,HISTRT        ;SAME FOR SYM POINTER\r
+       ADDI    B,377777\r
+       SUBI    Q,377777\r
+       MOVEM   Q,HIGHX         ;SO WE CAN SET HIGH JOB DATA AREA\r
+       TRO     F,SEENHI        ;SO JOBHRL WILL BE SET UP\r
+       JRST    BLTSY1          ;AND USE COMMON CODE\r
+>\r
+\r
+IFN DMNSW!LDAC!MANTIS!SYMDSW,<\r
+MORCOR:        ERROR ,</MORE CORE NEEDED#/>\r
+       EXIT>\r
+\fSUBTTL        READ BACK LOCAL SYMBOLS\r
+IFN SYMDSW,<\r
+READSYM:\r
+       TRZN    F,LSYMFL        ;DID WE WRITE A SYMBOL FILE?\r
+       POPJ    P,              ;NO\r
+       RELEASE 2,              ;CLOSE IT OUT\r
+       MOVE    W,SYMNAM        ;GET NAME\r
+       MOVEM   W,DTIN\r
+       TRNE    N,ENDMAP        ;MAP STILL REQUIRED?\r
+       PUSHJ   P,AUXINI        ;YES, RE-INIT AUX DEV\r
+       MOVE    W,SYMEXT        ;SEE IF EXTENSION SPECIFIED\r
+       HRLZM   W,DTIN1\r
+       TLZ     F,ISW\r
+       TLO     F,ESW\r
+       MOVSI   W,'DSK'\r
+       MOVEM   W,ILD1\r
+       PUSHJ   P,ILD\r
+       PUSH    P,S             ;SAVE NUMBER OF UNDEFINED SYMBOLS FOR LATER\r
+       HLRE    V,S             ;GET COUNT\r
+       MOVMS   V               ;AND CONVERT TO POSITIVE \r
+       HRLI    B,V             ;PUT V IN INDEX FIELD\r
+       HRRZ    S,HISTRT        ;TOP OF CORE\r
+       SUB     S,V             ;MINUS SIZE\r
+       HRLI    S,V             ;V IN INDEX FIELD\r
+                               ;MOW MOVE FROM  S TO B\r
+       MOVE    W,@B\r
+       MOVEM   W,@S\r
+       SOJG    V,.-2           ;FOR ALL ITEMS \r
+       HRRM    S,(P)           ;S IS NOW BOTTOM OF UNDEFINED\r
+       POP     P,S             ;SO PUT COUNT BACK INTO S\r
+       HRRZ    B,HISTRT        ;POINT B TO TOP OF CORE FOR EXPAND\r
+       MOVE    V,SYMCNT#       ;GET  NUMBER OF SYMBOLS\r
+       LSH     V,1             ;2 WORDS PER SYMBOL\r
+       SUBI    V,(S)           ;BOTTOM OF SYMBOL TABLE\r
+       ADDI    V,(H)           ;-TOP OF CODE\r
+       JUMPL   V,.+3\r
+       PUSHJ   P,XPAND9\r
+         JRST  MORCOR\r
+       MOVE    V,SYMCNT        ;GET COUNT AGAIN\r
+       LSH     V,1\r
+       MOVNS   V               ;NEGATE\r
+       HRRZ    C,S\r
+       ADD     C,V             ;TO\r
+       HRL     C,S             ;FROM\r
+       HLRE    W,S             ;LENGTH\r
+       MOVMS   W               ;POSITIVE\r
+       ADDI    W,(C)           ;END OF BLT\r
+       BLT     C,(W)           ;MOVE UNDEFS AGAIN\r
+       ADD     S,V             ;FIXUP POINTER\r
+       SETZM   NAMPTR          ;HAVE NOT SEEN A PROG YET\r
+       MOVE    T,SYMCNT        ;NUMBER OF SYMBOL PAIRS TO READ\r
+READS1:        PUSHJ   P,WORDPR\r
+       MOVEM   W,(B)\r
+       MOVEM   C,-1(B)\r
+       SUB     B,SE3\r
+       TLNN    C,740000        ;NAME HAS NO  CODE BITS SET\r
+       JRST    READS2          ;YES, HANDLE IT\r
+       SOJG    T,READS1        ;READ NEXT SYMBOL\r
+       JRST    READS4          ;ALL DONE\r
+\r
+READS2:        MOVE    W,NAMPTR        ;POINT TO PREVIOUS NAME\r
+       HRRZM   B,NAMPTR        ;POINT TO THIS ONE\r
+       JUMPE   W,READS3        ;FIRST TIME?\r
+       MOVE    C,W             ;GET COPY\r
+       SUBM    B,W             ;COMPUTE RELATIVE POSITION\r
+       HRLM    W,2(C)          ;STORE BACK\r
+READS3:        SOJG    T,READS1\r
+\r
+READS4:        MOVEI   T,'SYM'\r
+       CAMN    T,SYMEXT        ;IF EXT IS SYM\r
+       JRST    READS5          ;DON'T DELETE FILE\r
+       SETZM   DTIN\r
+       SETZM   DTIN+3\r
+       RENAME  1,DTIN\r
+         JFCL\r
+READS5:        SETOM   SYMEXT          ;SIGNAL NOT TO INIT SYMBOL FILE AGAIN\r
+       POPJ    P,\r
+>\r
+\fSUBTTL        WRITE CHAIN FILES\r
+IFE K,<                        ;DONT INCLUDE IN 1KLOAD\r
+CHNC:  SKIPA   A,.JBCHN(X)     ;CHAIN FROM BREAK OF FIRST BLOCK DATA\r
+CHNR:  HLR     A,.JBCHN(X)     ;CHAIN FROM BREAK OF FIRST F4 PROG\r
+       HRRZS   A               ;ONLY RIGHT HALF IS SIGNIFICANT\r
+       JUMPE   A,LD7C          ;DON'T CHAIN IF ZERO\r
+       TLZN    N,AUXSWI!AUXSWE ;IS THERE AN AUX DEV?\r
+       JRST    LD7D            ;NO, DON'T CHAIN\r
+       PUSH    P,A             ;SAVE WHEREFROM TO CHAIN\r
+       JUMPE   D,.+2           ;STARTING ADDR SPECIFIED?\r
+       HRRZM   D,STADDR        ;USE IT\r
+       CLOSE   2,              ;INSURE END OF MAP FILE\r
+       PUSHJ   P,SASYM         ;DO LIB SEARCH, SETUP JOBSA, ETC.\r
+IFN RPGSW,<TLNE        N,RPGF          ;IF IN CCL MODE\r
+       TDZA    W,W             ;NO MESSAGES>\r
+       MOVE    W,[SIXBIT ?CHAIN?]      ;FINAL MESSAGE\r
+       PUSHJ   P,BLTSET        ;SETUP BLT PNTR, SETDDT, RELEAS\r
+       POP     P,A             ;GET WHEREFROM\r
+       HRRZ    W,R             ;CALCULATE MIN IOWD NECESSARY\r
+       SKIPE   .JBDDT(X)       ;IF JOBDDT KEEP SYMBOLS\r
+       CAILE   W,1(S)\r
+       JRST    CHNLW1\r
+       HRRZ    W,.JBREL        ;NEED SYMBOLS AND THEY HAVE NOT MOVED DOWN\r
+       SUBI    W,(X)           ;BECAUSE WE WILL NOT HAVE BLITTED\r
+       SUBI    B,-1(X)         ;SYMBOL TABLE WILL COME OUT IN A\r
+       MOVEM   B,.JBSYM(X)     ;DIFFERENT PLACE\r
+CHNLW1:        MOVNS   W\r
+       ADDI    W,-7(A)\r
+       ADDI    A,-7(X)\r
+       PUSH    A,W     ;SAVE LENGTH\r
+       HRLI    W,-1(A)\r
+       MOVSM   W,IOWDPP        ;...\r
+       SETZM   IOWDPP+1        ;JUST IN CASE\r
+       PUSH    A,.JBCHN(X)\r
+       PUSH    A,.JBSA(X)      ;SETUP SIX WORD TABLE\r
+       PUSH    A,.JBSYM(X)     ;...\r
+       PUSH    A,.JB41(X)\r
+       PUSH    A,.JBDDT(X)\r
+       SETSTS  2,17            ;SET AUX DEV TO DUMP MODE\r
+       MOVSI   W,'CHN'         ;USE .CHN AS EXTENSION\r
+       MOVEM   W,DTOUT1        ;...\r
+       PUSHJ   P,IAD2          ;DO THE ENTER\r
+         JRST  LD2             ;ENTER FAILURE\r
+       OUTPUT  2,IOWDPP        ;WRITE THE CHAIN FILE\r
+       STATZ   2,IOBAD!IODEND\r
+       JRST    LOSEBIG\r
+       CLOSE   2,\r
+       STATZ   2,IOBAD!IODEND\r
+IFN RPGSW,<JRST        LOSEBIG\r
+       TLNE    N,RPGF          ;IF IN CCL MODE\r
+       JRST    CCLCHN          ;LOAD NEXT LINK\r
+       EXIT>\r
+LOSEBI:        TTCALL  3,[ASCIZ /?DEVICE ERROR/]\r
+       EXIT>\r
+\fSUBTTL        SPECIAL CHAINB\r
+IFN SPCHN,<\r
+CHNBG: PUSHJ   P,FSCN1A        ;FORCE SCAN TO COMPLETION FOR CURRENT FILE\r
+       TLNN    N,AUXSWI        ;IS THERE AN AUX DEV??\r
+       JRST    CHNBG1          ;NO, SKIP THIS CODE\r
+       PUSH    P,W             ;PRESERVE W\r
+       MOVE    W,CHNOUT+1      ;GET AUX DEV\r
+       DEVCHR  W,              ;GET ITS CHARACTERISTICS\r
+       TLNN    W,DSKBIT        ;IS IT A REAL DSK?\r
+       TLZA    N,AUXSWI!AUXSWE ;NO, RELEASE MAP DEVICE\r
+       TLNN    N,AUXSWE!AUXSWI ;SHOULD AUX DEVICE BE RELEASED?\r
+       RELEAS  2,              ;YES, RELEAS IT SO ENTER WILL NOT FAIL\r
+       POP     P,W             ;RESTORE W\r
+CHNBG1:                        ;LABEL TO SKIP AUX DEV. CHECKING\r
+IFN REENT,<TRO N,VFLG          ;GIVE HIM REENTRANT FORSE UNLESS /-V SEEN>\r
+       HRLZI   W,-1(R)         ;CHNTAB-L = ADDRESS OF VECTOR TABLE\r
+       HRRI    W,1             ;CHNTAB-R = NEXT DISK BLOCK TO RITE INTO\r
+       MOVEM   W,CHNTAB\r
+       MOVE    C,[RADIX50 4,OVTAB]     ;DEFINE GLOBAL SYMBOL OVTAB\r
+       MOVEI   W,(R)           ;TO HAVE VALUE THE BEGINNING OF THE VECTOR TABLE\r
+       PUSHJ   P,SYMPT\r
+       ADDI    R,VECLEN        ;RESERVE SPACE FOR VECTOR TABLE\r
+       MOVE    C,[RADIX50 4,OVBEG]     ;OVBEG IS BEGINNING OF OVERLAY AREA\r
+       MOVEI   W,(R)\r
+       PUSHJ   P,SYMPT\r
+       HRRZM   R,BEGOV         ;AND SAVE IN OVBEG\r
+       SETZM   LINKNR          ;SET CURRENT LINK # TO ZERO\r
+       TRZ     N,CHNMAP        ;SHOW ROOT NOT PRINTED\r
+       OPEN    4,CHNOUT        ;OPEN FILE FOR CHAIN\r
+         JRST  ILD5            ;CANT OPEN CHAIN FILE\r
+       SKIPE   CHNENT          ;TEST FOR DEFINED CHAIN-FILE NAME\r
+       JRST    CHNBG2          ;YES, SKIP\r
+       PUSH    P,W             ;SAVE W\r
+IFN NAMESW,<\r
+       SKIPN   W,CURNAM        ;GET CURRENT NAME & TEST FOR DEFINED >\r
+       MOVE    W,['CHAIN ']    ;SET NAME = 'CHAIN'\r
+       MOVEM   W,CHNENT        ;AND STORE AS FILE NAME\r
+       POP     P,W             ;RESTORE W\r
+CHNBG2:        ENTER   4,CHNENT        ;ENTER CHAIN FILE\r
+         JRST  CHNBG3          ;ERROR \r
+       HRRZ    W,NAMPTR\r
+       SUB     W,HISTRT        ;KEEP N RIGHT HALF AS RELATIVE TO HISTRT\r
+       HRRZM W,CHNACN  ;SAVE FOR RESTORING\r
+       MOVEM B,CHNACB  ;ALSO B R IS SAVED IN BEGOV\r
+       TRNE    N,ENDMAP        ;TEST FOR DEFERED MAP REQUEST\r
+       PUSHJ   P,PRTMAP        ;YES, PRINT IT NOW\r
+       AOS     LINKNR          ;SET LINE NUMBER TO 1\r
+       POPJ    P,\r
+\r
+CHNBG3:        ERROR   ,</ERROR WRITING CHAIN@/>\r
+       POPJ    P,\r
+\f\r
+CHNENS:        TLOA N,PPCSW    ;THIS FLAG UNUSED AT THIS POINT\r
+CHNEN: TLZ N,PPCSW     ;ON TO NOT DELETE NEW SYMBOLS\r
+       SKIPN CHNACB    ;WILL BE NON-ZERO IF WE SAW A /<  (> TO KEEP  MACRO HAPPY)\r
+       JRST LD7D       ;ERROR MESSAGE\r
+       PUSHJ P,FSCN1A          ;LOAD LIB (IF DESIRED) AND FORCE SCAN\r
+       TRNE    N,ENDMAP        ;TEST FOR DEFERED MAP REQUEST\r
+       PUSHJ   P,PRTMAP        ;YES, PRINT IT\r
+       AOS     LINKNR          ;INCR TO NEXT LINK NUMBER\r
+       SKIPL Q,S       ;CHECK SYMBOL TABLE FOR MISSED UNDEFS\r
+       JRST NOER       ;NONE THERE\r
+       MOVEI E,0       ;COUNT OF ERRORS\r
+ONCK:\r
+       IFN FAILSW,<SKIPL V,1(Q)        ;IF HIGH ORDER BIT IS ON\r
+       TLNN V,740000   ;OR IF ALL CODE BITS 0\r
+       JRST NXTCK      ;THEN NOT TO BE CHECKED>\r
+       MOVE V,2(Q)     ;GET FIXUP WORD\r
+       TLNE V,100000   ;BIT INDICATES SYMBOL TABLE FIXUP\r
+       JRST SMTBFX\r
+IFN FAILSW,<TLNE V,40000       ;BIT INDICATES POLISH FIXUP\r
+       JRST POLCK>\r
+       TLZE V,740000   ;THESE BITS WOULD MEAN ADDITIVE\r
+       JRST    [JSP A,CORCKL\r
+               JRST NXTCK]     ;ONLY TRY FIRST LOCATION\r
+CORCK: JSP A,CORCKL\r
+       HRRZ V,@X       ;THE WAY TO LINK\r
+CORCKL:        IFN REENT,<CAMGE V,HVAL1>\r
+       CAMGE V,BEGOV\r
+       SKIPA   ;NOT IN BAD RANGE\r
+       JRST ERCK       ;BAD, GIVE ERROR\r
+       JUMPE V,NXTCK   ;CHAIN HAS RUN OUT\r
+IFN REENT,<CAMGE V,HVAL1       ;GET CORRECT LINK\r
+       SKIPA X,LOWX\r
+       MOVE X,HIGHX>\r
+       XCT (A)         ;TELLS US WHAT TO DO\r
+       JRST CORCKL     ;GO ON WITH NEXT LINK\r
+\r\fSMTBFX:      TLNE N,PPCSW    ;IF NOT CUTTING BACK SYMBOL TABLE\r
+       JRST NXTCK      ;THE ALL OK\r
+       ADD V,HISTRT    ;GET PLACE TO POINT TO\r
+       HRRZS V\r
+       HLRE D,CHNACB   ;OLD LENGTH OF TABLE (NEGATIVE)\r
+       HLRE T,B        ;NEW LENGTH\r
+       SUB D,T         ;-OLD LEN+NEW LEN\r
+       ADDI D,(B)      ;OLD BOTTOM=NEW BOTTOM+NEW LEN-OLD LEN\r
+       CAIG V,(D)      ;IS IT IN THE PART WE ARE KEEPING\r
+       JRST ERCK\r
+       JRST NXTCK      ;YES\r
+IFN FAILSW,<POLCK:     HLRZ C,V        ;FIND HEADER\r
+       PUSHJ P,SREQ\r
+       SKIPA\r
+       JRST LOAD4A     ;SHOULD BE THERE\r
+       HRL C,2(A)      ;NOW FIRST OPERATOR (STORE)\r
+       MOVSS C\r
+       PUSHJ P,SREQ\r
+       SKIPA\r
+       JRST LOAD4A\r
+       ANDI C,37       ;GET OPERATION\r
+       HRRZ V,2(A)     ;DESTINATION\r
+       JRST @CKSMTB-15(C)      ;DISPATCH\r
+CKSMTB:        EXP SMTBFX,SMTBFX,SMTBFX,CORCK,LCORCK,CORCK,NXTCK\r
+LCORCK:        JSP A,CORCKL\r
+       HLRZ V,@X>\r
+ERCK:  MOVE C,1(Q)     ;GET SYMBOL NAME\r
+       PUSHJ P,FCRLF   ;FORCE CRLF AND OUTPUT ON TTY\r
+       PUSHJ P,PRNAME  ;PRINT IT\r
+       ADDI E,1        ;MARK ERROR\r
+NXTCK: ADD Q,SE3       ;TRY ANOTHER\r
+       JUMPL Q,ONCK\r
+IFN REENT,<PUSHJ P,RESTRX      ;GET PROPER X BACK>\r
+       JUMPE E,NOER    ;DID ANYTHING GO WRONG??\r
+       ERROR   ,</UNDEFINED GLOBAL(S) IN LINK@/>\r
+       TRZE    N,ENDMAP        ;DELAYED MAP IN PIPELINE\r
+       PUSHJ   P,PRTMAP        ;YES, GO DO IT\r
+       JRST LD2        ;GIVE UP\r
+\r
+NOER:  TRZE    N,ENDMAP        ;DELAYED MAP IN PIPELINE\r
+       PUSHJ   P,PRTMAP        ;YES, GO DO IT\r
+       MOVE A,BEGOV    ;GET START OF OVERLAY\r
+       ADDI A,(X)      ;GET ACTUAL CURRENT LOCATION\r
+IFN REENT,<HRRZ        W,HILOW ;AND END OF OVERLAY+1\r
+       HRRZM A,HILOW   ;RESET>\r
+IFE REENT,<HRRZ W,R\r
+       ADDI    W,(X)   ;A BETTER GUESS>\r
+       SUBM A,W        ;W=-LENGTH\r
+       SUBI A,1        ;SET TO BASE-1 (FOR IOWD)\r
+       HRL A,W         ;GET COUNT\r
+       MOVEM A,IOWDPP\r
+       SETZM   IOWDPP+1\r
+       HRR A,CHNTAB    ;BLOCK WE ARE WRITING ON\r
+       HLRZ V,CHNTAB   ;POINTER TO SEGMENT TABLE\r
+       ADDI V,1        ;NEXT LOCATION\r
+       HRLM V,CHNTAB   ;REMEMBER IT\r
+       CAML V,BEGOV    ;CHECK FOR OVERRUN\r
+       JRST    [ERROR ,</?TOO MANY LINKS@/>\r
+               JRST LD2];GIVE UP\r
+       MOVEM A,@X      ;PUT INTO TABLE\r
+       MOVN W,W        ;GET POSITIVE LENGTH\r
+       MOVE    C,CHNOUT+1      ;GET CHAIN DEV.\r
+       DEVCHR  C,              ;WHAT IS IT?\r
+       MOVEI   A,DSKBLK        ;ASSUME DSK\r
+       TRNE    C,DTABIT        ;BUT IF DTA\r
+       MOVEI   A,DTABLK        ;BLOCK IS 177\r
+       ADDI    W,-1(A)\r
+       IDIV    W,A             ;GET NUMBER OF BLOCKS\r
+       ADDM W,CHNTAB   ;AND UPDATE\r
+       TLZE N,PPCSW\r
+       JRST NOMVB      ;DO NOT ADJUST SYMBOLS\r
+       HLRE W,CHNACB   ;GET OLD LENGTH OF DEF SYMBOLS\r
+       HLRE C,B        ;AND NEW LENGTH\r
+       SUB W,C         ;-OLD LEN+NEW LEN\r
+\f      HRRZ C,B        ;SAVE POINTER TO CURRENT S\r
+       ADD S,W\r
+       HRL W,W\r
+       ADD B,W         ;UPDATE B (COUNT AND LOC)\r
+       JUMPGE S,UNLNKD ;JUST IN CASE NOTHING TO MOVE\r
+       HRRZ A,B        ;PLACE TO PUT UNDEFS\r
+UNLNK: MOVE W,(C)\r
+       MOVEM W,(A)     ;TRANSFER\r
+       SUBI A,1\r
+       CAIE A,(S)      ;HAVE WE MOVED LAST WORD??\r
+       SOJA C,UNLNK    ;NO, CONTINUE\r
+UNLNKD:        HRRZ W,CHNACN   ;GET SAVED N\r
+       ADD W,HISTRT\r
+       HRRZM   W,NAMPTR        ;AND RESET IT\r
+NOMVB: HRR R,BEGOV     ;PICK UP BASE OF AREA\r
+       SETSTS  4,16    ;SET DUMP MODE IN CASE OF INTERACTION WITH OTHER CHANNELS\r
+       OUTPUT 4,IOWDPP ;DUMP IT\r
+       STATZ 4,IOBAD!IODEND    ;AND ERROR CHECK\r
+       JRST LOSEBI\r
+       HRRZ V,R        ;GET AREA TO ZERO\r
+       MOVEI W,@X\r
+       CAIL W,1(S)     ;MUST MAKE SURE SOME THERE\r
+       POPJ P, ;DONE\r
+       SETZM (W)\r
+       CAIL W,(S)\r
+       POPJ P,\r
+       HRLS W\r
+       ADDI W,1\r
+       BLT W,(S)       ;ZERO WORLD\r
+       POPJ P,\r
+>\r
+\r\fSUBTTL       EXPAND CORE\r
+\r
+IFN EXPAND,<\r
+XPAND: TLNE    F,FULLSW        ;IF CORE  EXCEEDED\r
+       POPJ    P,              ;DON'T WASTE TIME  ON  CORE UUO\r
+       PUSH    P,Q\r
+       HRRZ    Q,.JBREL\r
+       ADDI    Q,2000\r
+XPAND1:        PUSH P,H        ;GET SOME REGISTERS TO USE\r
+       PUSH P,X\r
+       PUSH P,N\r
+       PUSH    P,.JBREL        ;SAVE PREVIOUS SIZE\r
+       CAMG    Q,ALWCOR        ;CHECK TO SEE IF RUNNING OVER\r
+       CORE Q,\r
+       JRST XPANDE\r
+IFE K,<        HRRZ H,MLTP     ;GET LOWEST LOCATION\r
+       TLNN N,F4SW     ;IS FORTRAN LOADING>\r
+       MOVEI H,1(S)    ;NO, USE S\r
+       POP     P,X     ;LAST .JBREL\r
+       HRRZ    Q,.JBREL;NEW JOBREL\r
+       SUBI    Q,(X)   ;GET DIFFERENCE\r
+       HRLI    Q,X     ;PUT X IN INDEX FIELD\r
+XPAND2:        MOVE N,(X)\r
+       MOVEM N,@Q\r
+       CAMLE X,H       ;TEST FOR END\r
+       SOJA X,XPAND2\r
+       HRLI    H,-1(Q)\r
+       TLC     H,-1    ;MAKE IT NEGATIVE\r
+       SETZM (H)       ;ZERO NEW CORE\r
+       AOBJN H,.-1\r
+       MOVEI H,(Q)\r
+XPAND8:        ADD     S,H\r
+       ADD     B,H\r
+       ADDM H,HISTRT   ;UPDATE START OF HISEG\r
+IFN REENT,<ADDM H,HIGHX        ;AND STORE LOCATION\r
+       TLNE F,HIPROG\r
+       ADDM H,-1(P)    ;X IS CURRENTLY IN THE STACK>\r
+       POP P,N\r
+       ADDM    H,NAMPTR\r
+IFE K,<\r
+IFN MANTIS,<SKIPE MNTSYM       ;DEBUGGER DATA PRESENT?\r
+       ADDM H,MNTSYM>\r
+       TLNN N,F4SW     ;F4?\r
+       JRST    XPAND3\r
+       ADDM H,PLTP\r
+       ADDM H,BITP\r
+       ADDM H,SDSTP\r
+       ADDM H,MLTP\r
+       TLNE N,SYDAT\r
+       ADDM H,V>\r
+XPAND3:        AOSA -3(P)\r
+XPAND5:        POP P,N\r
+       POP P,X\r
+       POP P,H\r
+       POP     P,Q\r
+       POPJ P,\r
+\f\r
+XPANDE:        POP     P,A             ;CLEAR JOBREL OUT OF STACK\r
+XPAND6:        ERROR   ,</MORE CORE NEEDED#/>\r
+       TLO     F,FULLSW        ;ONLY ONCE\r
+       JRST XPAND5\r
+\r
+XPAND7:        PUSHJ   P,XPAND\r
+       JRST    SFULLC\r
+IFN MONLOD,<TLNE N,DISW                ;LOADING TO DISK?\r
+       JRST    POPJM3          ;YES, RETURN TO CALL-2>\r
+       JRST    POPJM2\r
+\r
+XPAND9:        PUSH    P,Q             ;SAVE Q\r
+       HRRZ    Q,.JBREL        ;GET CORE SIZE\r
+       ADDI    Q,(V)           ;ADD XTRA NEEDED\r
+       JRST    XPAND1          ;AND JOIN COMMON CODE\r
+\r
+POPJM3:        SOS     (P)             ;POPJ TO CALL-2\r
+POPJM2:        SOS     (P)             ;POPJ TO CALL-1\r
+       SOS     (P)             ;SAME AS POPJ TO\r
+       POPJ    P,              ;NORMAL POPJ MINUS TWO\r
+>\r
+\r\r
+\fSUBTTL        SWITCH HANDLING\r
+\r
+;ENTER SWITCH MODE\r
+\r
+LD6A:  CAIN    T,57            ;WAS CHAR A SLASH?\r
+       TLO     N,SLASH         ;REMEBER THAT\r
+LD6A2: TLO     F,SSW           ;ENTER SWITCH MODE\r
+LD6A1: SETZB   D,C     ;ZERO TWO REGS FOR DECIMAL AND OCTAL\r
+IFN SYMARG,<TRZ        F,ARGFL ;CLEAR SPECIAL SYMBOL SWITCH >\r
+       JRST    LD3             ;EAT A SWITCH\r
+\r
+;ALPHABETIC CHARACTER, SWITCH MODE\r
+\r
+LD6:\r
+       CAIL    T,141           ;ACCEPT LOWER CASE SWITCHES\r
+       SUBI    T,40\r
+IFN SPCHN,<XCT LD6B-74(T)      ;EXECUTE SWITCH FUNCTION>\r
+IFE SPCHN,<XCT LD6B-101(T)     ;EXECUTE SWITCH FUNCTION>\r
+       TLZE    N,SLASH ;SWITCH MODE ENTERED W/ SLASH?\r
+       JRST    LD6D            ;LEAVE SWITCH MODE\r
+       JRST    LD6A1           ;STAY IN SWITCH MODE\r
+\r
+\f;DISPATCH TABLE FOR SWITCHES\r
+\r
+;      THE INSTRUCTION AT THE CHARACTER LOCATION IS EXECUTED\r
+\r
+LD6B:\r
+IFN SPCHN,<PUSHJ P,CHNBG       ;LESS THAN - BEGINNING OF OVERLAY\r
+       PUSHJ   P,CHNENS        ;= - PUT OUT CHAIN RETAINING SYMBOLS\r
+       PUSHJ   P,CHNEN         ;GREATER THAN - END OF OVERLAY\r
+       JRST    LD7B            ;? - ERROR\r
+       JRST    LD7B            ;@ - ERROR>\r
+       PUSHJ   P,ASWTCH        ;A - LIST ALL GLOBALS\r
+IFN DMNSW,<PUSHJ P,DMN2                ;B - BLOCKS DOWN SYMBOL TABLE >\r
+IFE DMNSW,<JRST        LD7B            ;B - ERROR>\r
+IFE K,<        PUSHJ   P,CHNC          ;C - CHAIN, START W/ COMMON>\r
+IFN K,<        JRST    LD7B            ;C - ILLEGAL IN 1KLOAD>\r
+       PUSHJ   P,LDDT          ;D - DEBUG OPTION, LOAD DDT\r
+       TLO     N,EXEQSW        ;E - LOAD AND GO\r
+       PUSHJ    P,LIBF0        ;F - LIBRARY SEARCH\r
+       PUSHJ    P,LD5E         ;G - GO INTO EXECUTION\r
+IFN REENT,<PUSHJ P,HSET                ;H - REENTRANT. PROGRAM>\r
+IFE REENT,<JFCL                        ;JUST IGNORE /H>\r
+       PUSHJ   P,ISWTCH        ;I - IGNORE STARTING ADDRESSES\r
+       TLZ     N,ISAFLG        ;J - USE STARTING ADDRESSES\r
+IFE KUTSW,<JRST        LD7B            ;K - ERROR>\r
+IFN KUTSW,<MOVEM C,CORSZ       ;K - SET DESIRED CORE SIZE>\r
+       PUSHJ   P,LSWTCH        ;L - ENTER LIBRARY SEARCH\r
+       PUSHJ   P,PRMAP         ;M - PRINT STORAGE MAP\r
+       TLZ     F,LIBSW+SKIPSW  ;N - LEAVE LIBRARY SEARCH\r
+       HRR     R,D             ;O - NEW PROGRAM ORIGIN\r
+       PUSHJ   P,PSWTCH        ;P - PREVENT AUTO. LIB. SEARCH\r
+       TLZ     F,NSW           ;Q - ALLOW AUTO. LIB. SEARCH\r
+IFE K,<        PUSHJ   P,CHNR          ;R - CHAIN, START W/ RESIDENT>\r
+IFN K,<        JRST    LD7B            ;R - ILLEGAL IN 1KLOAD>\r
+       PUSHJ   P,SSWTCH        ;S - LOAD WITH SYMBOLS\r
+       PUSHJ   P,LDDTX         ;T - LOAD AND GO TO DDT\r
+       PUSHJ   P,PMSQ          ;U - PRINT UNDEFINED LIST\r
+IFN REENT,<PUSHJ P,VSWTCH      ;V - LOAD REENTRANT LIB40>\r
+IFE REENT,<JRST        LD7B            ;V - ERROR>\r
+       TLZ     F,SYMSW+RMSMSW  ;W - LOAD WITHOUT SYMBOLS\r
+       TLZ     N,ALLFLG        ;X - DO NOT LIST ALL GLOBALS\r
+IFE TENEX,<TLO F,REWSW         ;Y - REWIND BEFORE USE>\r
+IFN TENEX,<PUSHJ P,NEWPAG              ;Y - ORIGIN TO NEXT PAGE BOUNDARY>\r
+IFE L,<        JRST    LDRSTR          ;Z - RESTART LOADER>\r
+IFN L,<        JRST    LD7B            ;Z -- ILLEGAL IN LISP LOADER>\r
+\r\r
+\f; PAIRED SWITCHES ( +,-)\r
+\r
+ASWTCH:        JUMPL   D,.+2           ;SKIP IF /-A\r
+       TLOA    N,ALLFLG        ;LIST ALL GLOBALS\r
+       TLZ     N,ALLFLG        ;DON'T\r
+       POPJ    P,\r
+\r
+ISWTCH:        JUMPL   D,.+2           ;SKIP IF /-I\r
+       TLOA    N,ISAFLG        ;IGNORE STARTING ADDRESSES\r
+       TLZ     N,ISAFLG        ;DON'T\r
+       POPJ    P,\r
+\r
+LSWTCH:        JUMPL   D,.+2           ;SKIP IF /-L\r
+       TLOA    F,LIBSW!SKIPSW  ;ENTER LIBRARY SEARCH\r
+       TLZ     F,LIBSW!SKIPSW  ;DON'T\r
+       POPJ    P,\r
+\r
+PSWTCH:        JUMPL   D,.+2           ;SKIP IF /-P\r
+       TLOA    F,NSW           ;PREVENT AUTO. LIB SEARCH\r
+       TLZ     F,NSW           ;ALLOW\r
+       POPJ    P,\r
+\r
+SSWTCH:        JUMPL   D,.+2           ;SKIP IF /-S\r
+       TLOA    F,SYMSW!RMSMSW  ;LOAD WITH SYMBOLS\r
+IFE MANTIS,<TLZ        F,SYMSW!RMSMSW  ;DON'T>\r
+IFN MANTIS,<TLZA F,SYMSW!RMSMSW        ;DON'T\r
+       TRZ     N,SYMFOR        ;SYMBOLS LOAD EXPLICITLY SPECIFIED>\r
+       POPJ    P,\r
+\r
+IFN REENT,<\r
+VSWTCH:        JUMPL   D,.+2           ;SKIP IF /-V\r
+       MOVEI   D,1             ;SET VSW        = +1 FOR /V\r
+       MOVEM   D,VSW           ;               = -1 FOR /-V\r
+       POPJ    P,>\r
+\r
+IFN TENEX,<\r
+;Y SWITCH - START LOADING AT NEXT PAGE BOUNDARY\r
+NEWPAG:        JUMPL C,NEWLPG          ;/-Y BUMPS LOWSEG LOC\r
+       ADDI R,777              ;/Y BUMPS HISEG LOC\r
+       ANDCMI R,777\r
+       POPJ P,0\r
+\r
+NEWLPG:        MOVE D,LOWR\r
+       ADDI D,777\r
+       ANDCMI D,777\r
+       MOVEM D,LOWR\r
+       POPJ P,0\r
+\r
+>\r
+\fIFN REENT,<\r
+; H SWITCH --- EITHER /H OR /NH\r
+HSET:  JUMPE   D,SETNUM        ;/H ALWAYS LEGAL\r
+       CAIGE   D,2             ;WANT TO CHANGE SEGMENTS\r
+       JRST    SETSEG          ;YES,GO DO IT\r
+       TRNN    F,SEENHI        ;STARTED TO LOAD YET?\r
+       JRST    HCONT           ;NO, CONTINUE.\r
+IFE TENEX,<ERROR ,<?/H ILLEGAL AFTER FIRST HISEG FILE IS LOADED@?>>\r
+IFN TENEX,<HRRZ C,HVAL\r
+       CAIGE D,0(C)\r
+       JRST HSET69\r
+       HRRM D,HIGHR            ;MOVE UP HIGH BREAK\r
+       POPJ P,0\r
+\r
+HSET69:        ERROR   ,<?/H ILLEGAL: ATTEMPT TO LOWER HISEG BREAK@?>\r
+       POPJ P,0>\r
+>\r
+\r
+IFE L,<\r
+LDRSTR:        ERROR   0,</LOADER RESTARTED@/>\r
+       JRST    BEG             ;START AGAIN (NO CCL)>\r
+IFN REENT,<\r
+HCONT: HRRZ C,D\r
+IFE TENEX,<ANDCMI C,1777\r
+       CAIL C,400000>\r
+       CAIG C,(H)\r
+       JRST COROVL     ;BEING SET LOWER THAN 400000 OR MORE THAN TOP OF LOW SEG\r
+       HRRZM C,HVAL1   ;WE HAVE REMOVED THE ODD BITS TO MAKE A 1K MULT\r
+       ADDI C,.JBHDA\r
+       CAILE C,(D)     ;MAKE SURE OF ENOUGH ROOM\r
+       MOVE D,C\r
+       HRLI D,W        ;SET UP W IN LEFT HALF\r
+       MOVEM D,HVAL\r
+       POPJ    P,      ;RETURN.\r
+\r
+COROVL:        ERROR   ,</HISEG STARTING ADDRESS TOO LOW@/>\r
+       JRST LDRSTR\r
+SETNUM:        TRO     F,NOHI  ;SET NO-HIGH-SEG SWITCH.\r
+       POPJ    P,>\r
+\f;SWITCH MODE NUMERIC ARGUMENT\r
+\r
+LD6C:  LSH     D,3             ;BUILD OCTAL NUMERIC ARGUMENT\r
+       ADDI    D,-60(T)\r
+       IMULI C,^D10\r
+       ADDI C,-"0"(T)  ;ACCUMULATE DEC AND OCTAL\r
+       JRST    LD3\r
+\r
+;EXIT FROM SWITCH MODE\r
+\r
+LD6D:  TLZ     F,SSW           ;CLEAR SWITCH MODE FLAG\r
+       TLNE    F,FSW           ;TEST FORCED SCAN FLAG\r
+       JRST    LD2D            ;SCAN FORCED, START NEW IDENT.\r
+       JRST    LD3             ;SCAN NOT FORCED, USE PREV IDENT\r
+;ILLEGAL CHARACTER, NORMAL MODE\r
+\r
+LD7:   IFN SYMARG,<\r
+       CAIN    T,"#"           ;DEFINING THIS SYMBOL\r
+       JRST    DEFINE          ;YES \r
+       TRNN    F,ARGFL         ;TREAT AS SPECIAL\r
+       JRST    .+4             ;NO\r
+       CAIE    T,"$"\r
+       CAIN    T,"%"\r
+       JRST    LD4             ;YES>\r
+       CAIN    T,"Z"-100       ;TEST FOR ^Z\r
+       JRST    LD5E1           ;TREAT AS ALTMODE FOR BATCH\r
+       ERROR   8,</CHAR.%/>\r
+       JRST    LD2     ;TRY TO CONTINUE\r
+\r
+;SYNTAX ERROR, NORMAL MODE\r
+\r
+LD7A:  ERROR   8,</SYNTAX%/>\r
+       JRST    LD2\r
+\r
+;ILLEGAL CHARACTER, SWITCH MODE\r
+\r
+LD7B:  CAIN T,"-"      ;SPECIAL CHECK FOR -\r
+       JRST    [SETOB C,D\r
+               JRST LD3]\r
+       CAIN    T,"Z"-100       ;CHECK FOR /^Z\r
+       JRST    LD5E1           ;SAME AS ^Z\r
+       ERROR   8,</SWITCH%/>\r
+       JRST    LD2\r
+\f;ATTEMPT TO CHAIN WITH SPECIFIED HALF OF JOBCHN = 0\r
+\r
+IFE K,<\r
+LD7C:  ERROR   ,<?UNCHAINABLE AS LOADED@?>\r
+       JRST    LD2\r
+\r
+;ATTEMP TO CHAIN WITHOUT SPECIFYING DEVICE\r
+\r
+LD7D:  ERROR   ,<?NO CHAIN DEVICE@?>\r
+       JRST    LD2>\r
+\r
+IFN DMNSW,<\r
+DMN2:\r
+IFN REENT,<CAIN        D,1             ;SPECIAL CASE\r
+       TROA    F,HISYM         ;YES ,BLT SYMBOLS INTO HISEG>\r
+       JUMPL   D,.+2\r
+       TROA    F,DMNFLG        ;TURN ON /B\r
+       TRZ     F,DMNFLG        ;TURN OFF IF /-B\r
+       CAMLE D,KORSP\r
+       MOVEM D,KORSP\r
+       POPJ    P,               ;RETURN>\r
+\r
+\r\fSUBTTL       CHARACTER CLASSIFICATION TABLE DESCRIPTION:\r
+\r
+;      EACH CHARACTER HAS ASSOCIATED WITH IT A FOUR BIT BYTE\r
+;      PACKED IN THE CHARACTER CLASSIFICATION TABLE.  THE CHARACTER\r
+;      CLASSIFICATION CODES ARE ORDERED IN SUCH A WAY AS TO GIVE\r
+;      DELIMITERS OF HIGHER PRECEDENCE LOWER CLASSIFICATION NUMBERS.\r
+;      CERTAIN CHARACTERS HAVE NO EFFECT ON THE COMMAND STRING, AND\r
+;      THEREFORE DO NOT EFFECT ORDERING OF DELIMITERS.  FOUR CODES\r
+;      ARE RESERVED FOR ALTERNATE DISPATCHES WHILE THE SWITCH MODE IS\r
+;      IN EFFECT.\r
+\r
+\r
+;CLASSIFICATION BYTE CODES:\r
+\r
+;      BYTE DISP CLASSIFICATION\r
+\r
+;      00 - 00  ILLEGAL CHARACTER, SWITCH MODE\r
+;      01 - 01  ALPHABETIC CHARACTER, SWITCH MODE\r
+;      02 - 02  NUMERIC CHARACTER, SWITCH MODE\r
+;      03 - 03  SWITCH MODE ESCAPE, SWITCH MODE\r
+\r
+;      00 - 04  ILLEGAL CHARACTER, NORMAL MODE\r
+;      01 - 05  ALPHABETIC CHARACTER, NORMAL MODE\r
+;      02 - 06  NUMERIC CHARACTER, NORMAL MODE\r
+;      03 - 07  SWITCH MODE ESCAPE, NORMAL MODE\r
+\r
+;      04 - 10  IGNORED CHARACTER\r
+;      05 - 11  ENTER SWITCH MODE CHARACTER\r
+;      06 - 12  DEVICE IDENTIFIER DELIMITER\r
+;      07 - 13  FILE EXTENSION DELIMITER\r
+;      10 - 14  OUTPUT SPECIFICATION DELIMITER\r
+;      11 - 15  INPUT SPECIFICATION DELIMITER\r
+;      12 - 16  LINE TERMINATION\r
+;      13 - 17  JOB TERMINATION\r
+\r\f;BYTE POINTERS TO CHARACTER CLASSIFICATION TABLE\r
+\r
+LD8:   POINT     4,LD9(Q),3\r
+       POINT     4,LD9(Q),7\r
+       POINT     4,LD9(Q),11\r
+       POINT     4,LD9(Q),15\r
+       POINT     4,LD9(Q),19\r
+       POINT     4,LD9(Q),23\r
+       POINT     4,LD9(Q),27\r
+       POINT     4,LD9(Q),31\r
+       POINT     4,LD9(Q),35\r
+\r
+;CHARACTER CLASSIFICATION TABLE\r
+\r
+LD9:   BYTE    (4)4,0,0,0,0,0,0,0,0\r
+       BYTE    (4)4,4,4,4,12,0,0,0,0\r
+       BYTE    (4)0,0,0,0,0,0,0,0,0\r
+       BYTE    (4)13,0,0,0,0,4,0,4,0\r
+IFE SYMARG,<   BYTE    (4)0,0,0,0,5,3,0,0,11>\r
+IFN SYMARG,<   BYTE    (4)0,0,14,0,5,3,0,0,11>\r
+               BYTE    (4)0,7,5,2,2,2,2,2,2\r
+IFE SPCHN,<    BYTE    (4)2,2,2,2,6,0,0,10,0>\r
+IFN SPCHN,<    BYTE    (4)2,2,2,2,6,0,1,10,1>\r
+IFE RPGSW,<    BYTE    (4)0,0,1,1,1,1,1,1,1>\r
+IFN RPGSW,<    BYTE (4) 0,10,1,1,1,1,1,1,1>\r
+       BYTE    (4)1,1,1,1,1,1,1,1,1\r
+       BYTE    (4)1,1,1,1,1,1,1,1,1\r
+IFE PP,<BYTE   (4)1,0,0,0,0,10,0,1,1>\r
+IFN PP,<BYTE   (4)1,10,0,10,0,10,0,1,1>\r
+       BYTE    (4)1,1,1,1,1,1,1,1,1\r
+       BYTE    (4)1,1,1,1,1,1,1,1,1\r
+       BYTE    (4)1,1,1,1,1,1,0,0,13\r
+       BYTE    (4)13,4\r
+\r\fSUBTTL       INITIALIZE LOADING OF A FILE\r
+\r
+ILD:   MOVEI     W,BUF1                ;LOAD BUFFER ORIGIN\r
+       MOVEM     W,.JBFF\r
+       TLOE    F,ISW           ;SKIP IF INIT REQUIRED\r
+       JRST    ILD6            ;DONT DO INIT\r
+ILD7:  OPEN    1,OPEN3                 ;KEEP IT PURE\r
+         JRST  ILD5B\r
+ILD6:  TLZE    F,REWSW         ;SKIP IF NO REWIND\r
+       MTAPE   1,1             ;REWIND\r
+ILD2:  LOOKUP  1,DTIN          ;LOOK UP FILE FROM DIRECTORY\r
+         JRST  ILD3            ;FILE NOT IN DIRECTORY\r
+IFE LNSSW,<\r
+       INBUF   1,BUFN          ;SET UP BUFFERS>\r
+IFN LNSSW,<INBUF 1,1\r
+       MOVEI   W,BUF1\r
+       EXCH    W,.JBFF\r
+       SUBI    W,BUF1\r
+IFE K,<MOVEI   C,4*203+1>\r
+IFN K,<MOVEI   C,203+1>\r
+       IDIV    C,W\r
+       INBUF   1,(C)>\r
+       TLO     F,ASW           ;SET LEFT ARROW ILLEGAL FLAG\r
+       TLZ     F,ESW           ;CLEAR EXTENSION FLAG\r
+       POPJ    P,\r
+\r
+;      LOOKUP FAILURE\r
+\r
+ILD3:  TLOE    F,ESW           ;SKIP IF .REL WAS ASSUMED\r
+       JRST    ILD4            ;FATAL LOOKUP FAILURE\r
+       SETZM     DTIN1         ;ZERO FILE EXTENSION\r
+       JRST    ILD2            ;TRY AGAIN WITH NULL EXTENSION\r
+\r
+ILD4:\r
+IFN CPUSW,<                    ;ALLOW LIB40I OR LIB40A TO FIND LIB40\r
+       MOVE    W,DTIN          ;GET NAME WE TRIED FOR\r
+       TRZN    W,77            ;DELETE 6TH CHARACTER\r
+       JRST    ILD4B           ;TRIED ALL CASES IF NULL\r
+IFN REENT,<CAME        W,['IMP40 ']    ;IMP40? REQUESTED?>\r
+       CAMN    W,['LIB40 ']    ;WAS IT SOME FLAVOUR OF LIB40?\r
+       JRST    [MOVEM  W,DTIN  ;YES, SALT NEW NAME\r
+               PUSHJ   P,LDDT2 ;SET .REL AGAIN\r
+               TLZ     F,ESW\r
+               JRST    ILD2]\r
+ILD4B:>\r
+       IFE REENT,<IFE TEN30,<  ;PDP-6 ONLY\r
+       MOVE    W,[SIXBIT /LIB40/]\r
+       CAME    W,DTIN          ;WAS THIS A TRY FOR LIB40?\r
+       JRST    ILD4A           ;NO\r
+       TRZ     W,(SIXBIT / 0/) ;YES\r
+       MOVEM   W,DTIN          ;TRY LIB4\r
+       PUSHJ   P,LDDT2         ;USE .REL EXTENSION\r
+       TLZ     F,ESW           ;...\r
+       JRST    ILD2            ;GO TRY AGAIN\r
+ILD4A:>>\r
+\r
+ILD9:  ERROR   ,</CANNOT FIND#/>\r
+       JRST    LD2C\r
+\r
+;      DEVICE SELECTION ERROR\r
+\r
+ILD5A: SKIPA   W,LD5C1\r
+ILD5B: MOVE    W,ILD1\r
+ILD5:  PUSHJ   P,PRQ           ;START W/ ?\r
+       PUSHJ   P,PWORD         ;PRINT DEVICE NAME\r
+       ERROR   7,</UNAVAILABLE@/>\r
+       JRST    LD2\r
+\r\fSUBTTL       LIBRARY SEARCH CONTROL AND LOADER CONTROL\r
+\r
+LIBF0: IFN FORSW,<\r
+       JUMPE   D,LIBF          ;MAKE /F WORK SAME WAY\r
+       SOSGE   D               ;USER SUPPLIED VALUE?\r
+       MOVEI   D,FORSW-1       ;NO, SUPPLY DEFAULT\r
+       MOVEM   D,FORLIB        ;STORE VALUE\r
+       POPJ    P,              ;RETURN HAVING SETUP FOR /0F>\r
+\r
+LIBF:  PUSHJ   P,FSCN1         ;FORCE SCAN TO COMPLETION\r
+       PUSH    P,ILD1          ;SAVE DEVICE NAME\r
+IFN PP,<SETZM  PPN             ;CLEAR LOCAL PPN\r
+       SETZM   PPPN            ;AND GLOBAL PPN>\r
+       PUSHJ   P,LIBF1         ;LOAD SYS:JOBDAT.REL\r
+IFN SAILSW,<LIBAGN: PUSHJ P,SALOAD     ;LOAD RELS AND SEARCH LIBS>\r
+IFN REENT,<SKIPGE W,VSW                ;WAS /-V SEEN\r
+       TRZ     N,VFLG          ;YES, DOES NOT WANT REENTRANT SYSTEM\r
+       CAILE   W,0             ;SKIP IF HE DOESN'T KNOW OR CARE\r
+       TRO     N,VFLG          ;DEFINITELY WANTS REENTRANT SYSTEM\r
+       TRNE    F,SEENHI!HISYM  ;IF ANY HISEG LOADED NO RE-ENT OP SYSTEM\r
+       TRZ     N,VFLG!MANTFL   ;YES, SO FORCE /-V SWITCH\r
+       TRNN    N,VFLG\r
+       JRST    LIBF3\r
+IFN ALGSW,<TRNE        N,ALGFL         ;SPECIAL ACTION IF LOADING ALGOL\r
+       PUSHJ   P,SHARE>\r
+IFN FORSW,<TRNN        N,FORFL         ;FORTRAN-10 ALWAYS WANTS FOROTS\r
+       TRNE    N,F4FL          ;IF F40\r
+       SKIPG   FORLIB          ;AND WANTING FORLIB\r
+       JRST    LIBF3           ;NOT BOTH TRUE\r
+       MOVE    C,[RADIX50 04,FOROT%]   ;SYMBOL\r
+       MOVEI   W,400000+.JBHDA ;VALUE\r
+       PUSHJ   P,SYMPT         ;YES, DEFINE SYMBOL>\r
+LIBF3:>\r
+IFN NELSW,<TRNN        N,NELFL         ;LOADING NELIAC\r
+       JRST    .+4             ;NO\r
+       PUSHJ   P,NELGO         ;UNDEFINED SYMBOL NELGO\r
+       MOVE    W,[SIXBIT /LIBNEL/]\r
+       PUSHJ   P,LIBF2         ;LOAD NELIAC LIBRARY>\r
+IFN ALGSW,<MOVE        W,[SIXBIT /ALGLIB/]\r
+IFE NAMESW,<TRNE N,ALGFL       ;LOADING ALGOL?>\r
+IFN NAMESW,<TRNN N,ALGFL       ;ALGOL?\r
+       JRST    LIBF5+1         ;NO\r
+       SKIPE   CURNAM          ;SEE MAIN PROG YET?\r
+       JRST    LIBF5           ;YES\r
+       ERROR   ,</ALGOL MAIN PROGRAM NOT LOADED!/>\r
+       EXIT\r
+LIBF5:>\r
+       PUSHJ   P,LIBF2         ;YES, LOAD LIBRARY>\r
+IFN COBSW,<MOVE        W,[SIXBIT /LIBOL/]\r
+       TRNE    N,COBFL         ;LOADING COBOL?\r
+       PUSHJ   P,LIBF2         ;YES, SCAN LIBOL>\r
+IFN REENT,<\r
+IFE CPUSW,<MOVE        W,[SIXBIT /IMP40/]>\r
+IFN CPUSW,<MOVE        W,['IMP40A']    ;ASSUME KA-10\r
+       TRNE    F,KICPFL        ;BUT IS IT?\r
+       HRRI    W,'40I'         ;NO, CHANGE TO IMP40A>\r
+IFN FORSW,<SKIPG FORLIB                ;IF LOADING FORLIB WE DON'T WANT IMP40>\r
+       TRNE    N,COMFLS-F4FL   ;ANY OTHER COMPILER ?\r
+       JRST    LIBF4           ;YES, THEN WE DON'T WANT IMP40\r
+       TRNE    N,VFLG          ;WANT REENTRANT OP SYSTEM?\r
+       PUSHJ   P,LIBF2         ;YES, TRY REENTRANT FORSE>\r
+LIBF4:\r
+IFE CPUSW,<MOVE        W,[SIXBIT /LIB40/]>\r
+IFN CPUSW,<MOVE        W,['LIB40A']\r
+       TRNE    F,KICPFL\r
+       HRRI    W,'40I'>\r
+IFN FORSW,<SKIPLE FORLIB       ;FORSE OR FOROTS\r
+       MOVE    W,['FORLIB']    ;YOU GET WHAT YOU ASK FOR>\r
+IFN ALGSW,<TRNN        N,ALGFL         ;DON'T NEED LIB40 FOR ALGOL>\r
+       PUSHJ   P,LIBF2         ;LOAD LIBRARY\r
+IFN SAILSW,<MOVE W,LIBPNT      ;SEE IF ANY MORE TO DO\r
+       CAME W,[XWD -RELLEN-1,LIBFLS-1]\r
+       JRST LIBAGN\r
+       MOVE W,PRGPNT   ;IT COULD BE DANGEROUS TO LOAD PROGRAMS HERE\r
+       CAME W,[XWD -RELLEN-1,PRGFLS-1]\r
+       JRST LIBAGN     ;MORE TO DO, TRY AGAIN>\r
+       POP P,ILD1      ;CALL TO LDDT1 WILL PUT IT IN OLDDEV\r
+LIBF1: MOVE    W,[SIXBIT /JOBDAT/]     ;LOAD SYS:JOBDAT.REL\r
+LIBF2: PUSHJ     P,LDDT1\r
+LIBGO: JUMPGE    S,EOF2                ;JUMP IF NO UNDEFINED GLOBALS\r
+       TLO     F,SLIBSW+SKIPSW ;ENABLE LIBRARY SEARCH\r
+       TLZ     F,SYMSW ;DISABLE LOADING WITH SYMBOLS\r
+       JRST    LDF             ;INITIALIZE LOADING LIB4\r
+IFN ALGSW!NELSW,<\r
+IFN NELSW,<\r
+NELGO: SKIPA   C,[RADIX50 60,%NELGO]>\r
+SHARE: MOVE    C,[RADIX50 60,%SHARE]\r
+       MOVEI    W,0\r
+       JRST    SYMPT   ;DEFINE IT >\r
+\f;     LIB CONTROLS THE LIBRARY SEARCH OF ONE FILE\r
+\r
+LIB:   JUMPGE  S,EOF1          ;JUMP IF NO UNDEFINED GLOBALS\r
+       TLO     F,SKIPSW        ;SET SKIPSW TO IGNORE MODE\r
+IFN DIDAL,<TRNE        F,XFLG          ;INDEX IN CORE?\r
+       JRST    INDEX1          ;YES>\r
+       JRST    LOAD            ;CONTINUE LIB. SEARCH\r
+\r
+LIB1:  CAIE    A,4             ;TEST FOR ENTRY BLOCK\r
+       JRST    LIB29           ;NOT AN ENTRY BLOCK, IGNORE IT\r
+LIB2:  PUSHJ   P,RWORD         ;READ ONE DATA WORD\r
+       MOVE    C,W\r
+       TLO     C,040000                ;SET CODE BITS FOR SEARCH\r
+       PUSHJ     P,SREQ\r
+       TLZA    F,SKIPSW                ;REQUEST MATCHES ENTRY, LOAD\r
+       JRST    LIB2            ;NOT FOUND\r
+LIB3:  PUSHJ     P,RWORD               ;READ AND IGNORE ONE DATA WORD\r
+       JRST    LIB3            ;LOOP TO IGNORE INPUT\r
+\r
+LIB29: CAIN    A,14            ;INDEX BLOCK?\r
+       JRST    INDEX0          ;YES\r
+LIB30: HRRZ    C,W             ;GET WORD COUNT\r
+       JUMPE   C,LOAD1         ;IF NUL BLOCK RETURN\r
+       CAILE   C,^D18          ;ONLY ONE SUB-BLOCK\r
+       JRST    LIB3            ;NO,SO USE OLD SLOW METHOD\r
+       ADDI    C,1             ;ONE FOR RELOCATION WORD\r
+\r
+LIB31: CAML    C,BUFR2         ;DOES BLOCK OVERLAP BUFFERS?\r
+       SOJA    C,LIB32         ;YES,ALLOW FOR INITIAL ILDB\r
+       ADDM    C,BUFR1         ;ADD TO BYTE POINTER\r
+       MOVNS   C               ;NEGATE\r
+       ADDM    C,BUFR2         ;TO SUBTRACT C FROM WORD COUNT\r
+       JRST    LOAD1           ;GET NEXT BLOCK\r
+\r
+LIB32: SUB     C,BUFR2         ;ACCOUNT FOR REST OF THIS BUFFER\r
+       PUSHJ   P,WORD+1        ;GET ANOTHER BUFFERFUL\r
+       JRST    LIB31           ;TRY AGAIN\r
+\r\fIFN SAILSW,<\r
+\r
+COMMENT * BLOCK TYPE 16 AND 17 USED TO SPECIFY PROGRAMS AND\r
+LIBRARIES WHICH MUST BE LOADED (SEARCHED) IF THE PROGRAM\r
+IN WHICH THE BLOCK APPEARS IS LOADED. IT IS NOW TIME TO\r
+LOAD AND SEARCH THESE FILES. IF ANY MAKE REQUESTS, THEY ARE ADDED\r
+TO THE END. WE WILL COME BACK AND LOOK AGAIN IN CASE A\r
+LIBRARY PROGRAM LOAD A REL PROGRAM. ORIGINAL CODE BY DCS*\r
+\r
+SALOAD:        MOVE T,[XWD -RELLEN-1,PRGFLS-1] ;TO RESET WITH AT END\r
+       MOVEI D,PRGPNT  ;OINTER TO UPPER LIMIT\r
+       PUSHJ P,PRGPRG  ;LOAD THEM IF ANY\r
+\r
+;NOW FOR LIBRARY SEARCH\r
+\r
+       MOVE T,[XWD -RELLEN-1,LIBFLS-1]\r
+       MOVEI D,LIBPNT\r
+\r
+PRGPRG:        MOVEM D,LODLIM# ;SAVE POINTER TO LIMIT\r
+       MOVEM T,LODSTP# ;START FOR RESETTING\r
+PRGBAK:        MOVEM T,LODPNT# ;AND START\r
+       CAMN T,@LODLIM  ;GOTTEN TO END YET?\r
+       JRST PRGDON     ;YES, DUMP IT\r
+       SKIPN W,PRGDEV(T)       ;IS DEVICE SPECIFIED?\r
+       MOVSI W,(SIXBIT /DSK/)  ;NO, DSK\r
+       MOVEM W,ILD1    ;WHERE WE INIT FROM\r
+       MOVSI W,(SIXBIT /REL/)  ;EXTENSION\r
+       MOVEM W,DTIN1\r
+       MOVE W,PRGFIL(T)\r
+       MOVEM W,DTIN    ;FILE NAME\r
+       MOVE W,PRGPPN(T)        ;THE PROJECT PROG\r
+       MOVEM W,DTIN+3\r
+       PUSH P,JRPRG    ;A RETURN ADDRESS\r
+       TLZ F,ISW       ;FORCE NEW INIT\r
+       HRRZ T,LODLIM\r
+       CAIN T,LIBPNT   ;WHICH ONE\r
+       JRST LIBGO\r
+       JRST LDF\r
+PRGRET:        MOVE T,LODPNT   ;RETURNS HERE, GET NEXT ONE\r
+       AOBJN T,PRGBAK\r
+\r
+PRGDON:        MOVE T,LODSTP   ;RESTE POINTER IN CASE MORE ON OTHER LIBS\r
+       MOVEM T,@LODLIM\r
+JRPRG: POPJ P,PRGRET   ;PUSHED TO GET A RETURN ADDRESS\r
+\r
+PRGFIL==1      ;REL INDEX FOR FILE NAMES\r
+PRGPPN==RELLEN+1       ;AND FOR PPNS\r
+PRGDEV==2*RELLEN+1     ;AND FOR DEVICES\r
+>      ;END OF IFN SAILSW\r
+\fSUBTTL        LDDT LOADS <SYS:DDT.REL> AND SETS SYMSW\r
+\r
+LDDTX: TLO     N,DDSW+EXEQSW           ;T - LOAD AND GO TO DDT\r
+LDDT:                                  ;/D - LOAD DDT\r
+IFN TENEX,<PUSH P,1\r
+       PUSH P,3\r
+       MOVEM 2,3       ; X = 2\r
+       MOVSI 1,100001\r
+       HRROI 2,[ASCIZ /<SUBSYS>UDDT.SAV/]\r
+       GTJFN\r
+        JRST LDDTQ\r
+       PUSH P,1                ;DDT JFN\r
+       MOVEI 1,400000\r
+       GEVEC                   ;LOADER'S EV\r
+       POP P,1\r
+       PUSH P,2\r
+       HRLI 1,400000                   ;THIS FORK\r
+       GET\r
+       MOVEI 1,400000\r
+       GEVEC                   ;DDT'S EV\r
+       MOVEM 2,.JBDDT(3)       ;3 HAS X IN IT\r
+       POP P,2\r
+       SEVEC                   ;RESTORE LOADER'S EVEC\r
+       TLO F,SYMSW!RMSMSW      ;DO /S  PROBABLY ON BY DEFAULT\r
+       MOVE 2,3\r
+       POP P,3\r
+       POP P,1\r
+       JRST DMN2\r
+\r
+LDDTQ: TTCALL 3,[ASCIZ /\r
+DDT10X NOT AVAILABLE. USING DEC DDT./]\r
+       MOVE 2,3\r
+       POP P,3\r
+       POP P,1>\r
+IFN DMNSW,<    PUSH    P,D             ;SAVE INCASE /NNND >\r
+       PUSHJ     P,FSCN1               ;FORCE SCAN TO COMPLETION\r
+       MOVSI   W,'DDT'         ;FILE IDENTIFIER <DDT>\r
+       TLZ     F,SYMSW!RMSMSW  ;DON'T LOAD DDT WITH LOCAL SYMBOLS\r
+       PUSHJ     P,LDDT1\r
+       PUSHJ     P,LDF         ;LOAD <SYS:DDT.REL>\r
+       TLO     F,SYMSW!RMSMSW          ;ENABLE LOADING WITH SYMBOLS\r
+IFN DMNSW,<    POP     P,D     ;RESTORE D\r
+       JRST    DMN2            ;MOVE SYMBOL TABLE >\r
+IFE DMNSW,<    POPJ    P,>\r
+\r
+LDDT1: MOVEM     W,DTIN                ;STORE FILE IDENTIFIER\r
+       MOVE    W,ILD1          ;SAVE OLD DEV\r
+       MOVEM   W,OLDDEV\r
+IFN PP,<SETZM  PPPN            ;CLEAR PERM PPN>\r
+       MOVSI   W,'SYS'         ;DEVICE IDENTIFIER <SYS>\r
+       MOVEM     W,ILD1                ;STORE DEVICE IDENTIFIER\r
+       TLZ     F,ISW+LIBSW+SKIPSW+REWSW        ;CLEAR OLD FLAGS\r
+LDDT2: MOVSI   W,'REL'         ;EXTENSION IDENTIFIER <.REL>\r
+LDDT3: MOVEM     W,DTIN1               ;STORE EXTENSION IDENTIFIER\r
+LDDT4: IFN PP,<\r
+       PUSH    P,W             ;SAVE W\r
+       SKIPN   W,PPN           ;GET TEMP PPN\r
+       MOVE    W,PPPN          ;TRY PERM\r
+       MOVEM   W,DTIN+3        ;SET PPN\r
+       POP     P,W             ;RESTORE W>\r
+       POPJ    P,\r
+\r\fSUBTTL       EOF TERMINATES LOADING OF A FILE\r
+\r
+EOF:   MOVE    P,PDSAV         ;RESTORE PUSHDOWN POINTER\r
+EOF1:  TLZ F,SLIBSW!SKIPSW     ;CLEAR ONE FILE LIB. SEARCH FLAG\r
+IFN DIDAL,<TRZ F,XFLG!LSTLOD   ;CLEAR DIDAL FLAGS\r
+IFN SYMDSW,<TRNE F,LSYMFL      ;USING AUX BUF FOR  LOCAL SYMBOLS?\r
+       JRST    EOF2            ;YES>\r
+       MOVSI   W,(1B0)         ;FOOL MONITOR THAT WE HAVE NOT USED THIS BUFFER\r
+       HLLM    W,ABUF          ;THEN NEXT OUTPUT WILL BE A "DUMMY OUTPUT"\r
+       MOVSI   W,700           ;RESET BYTE POINTER TO ASCII\r
+       MOVEM   W,ABUF1         ;AND HOPE DUMMY OUTPUT WILL CLEAR DIDAL STUFF\r
+       SETZM   ABUF2           ;ZERO BYTE COUNT TO FORCE DUMMY OUTPUT>\r
+EOF2:  TLNE F,RMSMSW   ;IF REMEMBER LOADING WITH SYMBOLS IS ON\r
+       TLO F,SYMSW     ;THEN RESTORE SYMBOL LOADING STATE\r
+       POPJ    P,\r
+\r
+;      FORCE SCAN TO COMPLETION, LOAD IF NECESSARY\r
+\r
+FSCN:  PUSHJ     P,FSCN1               ;FORCED LOAD BEFORE TEST\r
+       TLNN    F,FULLSW                ;TEST FOR OVERLAP\r
+       POPJ    P,                      ;NO OVERLAP, RETURN\r
+       MOVE    W,H             ;FETCH CORE SIZE REQUIRED\r
+IFN MONLOD,<TLNE N,DISW        ;LOADING TO DISK?\r
+       MOVE W,DIEND            ;YES, GET END OF BUFFER+1>\r
+       SUBI W,1(S) ; COMPUT DEFICIENCY\r
+       JUMPL     W,EOF2                ;JUMP IF NO OVERLAP\r
+       PUSHJ   P,PRQ                   ;START WITH ?\r
+       PUSHJ     P,PRNUM0              ;INFORM USER\r
+       ERROR   7,</WORDS OF OVERLAP#/>\r
+       JRST    LD2             ;ERROR RETURN\r
+\r
+IFN SPCHN,<FSCN1A:     TLNN F,NSW\r
+       PUSHJ P,LIBF>\r
+FSCN1: TLON    F,FSW           ;SKIP IF NOT FIRST CALL TO FSCN\r
+FSCN2: TLNN    F,CSW+DSW+ESW   ;TEST SCAN FOR COMPLETION\r
+       POPJ    P,\r
+       PUSHJ   P,LD5B1         ;STORE FILE OR EXTENSION IDENT.\r
+\r
+;      LOADER CONTROL, NORMAL MODE\r
+\r
+LDF:   PUSHJ   P,ILD           ;INITIALIZE LOADING\r
+       TLNE    F,LIBSW         ;IN LIBRARY SEARCH MODE?\r
+       JRST    LIB             ;CHECK IF NO UNDFS.\r
+\r\fSUBTTL       LOAD SUBROUTINE\r
+\r
+LOAD:  MOVEM   P,PDSAV         ;SAVE PUSHDOWN POINTER\r
+IFN WFWSW,<SETZM VARLNG                ;LENGTH OF VARIABLE AREA-ADDED TO RELOC>\r
+IFN ALGSW,<SETZM OWNLNG                ;LENGTH OF OWN AREA-ADDED TO RELOC>\r
+IFN FAILSW,<SETZM LFTHSW       ;RESET LOAD LEFT HALF FIXUP SW>\r
+IFN COBSW,<SETZM LOD37.                ;CLEAR FLAG>\r
+IFN MANTIS,<TRZE N,SYMFOR      ;ZERO LOAD SYMBOLS IF IT WAS FORCED\r
+       TLZ     F,SYMSW>\r
+IFN TENEX,<SETZM NLSTGL                ;ALLOW UNDEF. GLOBALS TO LIST>\r
+LOAD1: MOVE    P,PDSAV         ;RESTORE PUSHDOWN POINTER\r
+LOAD1A:        PUSHJ   P,WORD          ;INPUT BLOCK HEADER WORD\r
+       MOVNI   E,400000(W)     ;WORD COUNT - FROM RH OF HEADER\r
+       HLRZ    A,W             ;BLOCK TYPE - FROM LH OF HEADER\r
+IFN B11SW,<SKIPN POLSW         ;ERROR IF STILL DOING POLISH>\r
+       CAIL    A,DISPL*2       ;TEST BLOCK TYPE NUMBER\r
+       JRST    LOAD4           ;ERROR, ILLEGAL BLOCK TYPE\r
+       TLNE    F,SKIPSW        ;BLOCK OK - TEST LOAD STATUS\r
+       JRST    LIB1            ;RETURN TO LIB. SEARCH CONTROL\r
+       HRRZ    T,LOAD2(A)      ;LOAD RH DISPATCH ENTRY\r
+       CAIL    A,DISPL         ;SKIP IF CORRECT\r
+       HLRZ    T,LOAD2-DISPL(A);LOAD LH DISPATCH ENTRY\r
+       TLNE    F,FULLSW        ;TEST CORE OVERLAP INDICATOR\r
+       SOJG    A,HIGH0         ;IGNORE BLOCK IF NOT TYPE 1\r
+       JRST    @T              ;DISPATCH TO BLOCK SUBROUTINE\r
+\r
+;DISPATCH TABLE - BLOCK TYPES\r
+IFE B11SW,<POLFIX==LOAD4A>\r
+IFE FAILSW,<LINK==LOAD4A>\r
+IFE WFWSW,<LVARB==LOAD4A>\r
+IFE ALGSW,<ALGBLK==LOAD4A>\r
+IFE SAILSW,<LDPRG==LOAD4A\r
+       LDLIB==LOAD4A>\r
+IFE COBSW,<COBSYM==LOAD4A>\r
+\r
+LOAD2: COMML,,LIB30            ;20,,0\r
+       SPDATA,,PROG            ;21,,1\r
+       LOAD4A,,SYM             ;22,,2\r
+       LOAD4A,,HISEG           ;23,,3\r
+       LOAD4A,,LIB30           ;24,,4\r
+       LOAD4A,,HIGH            ;25,,5\r
+       LOAD4A,,NAME            ;26,,6\r
+       LOAD4A,,START           ;27,,7\r
+       LOAD4A,,LOCD            ;30,,10\r
+       LOAD4A,,POLFIX          ;31,,11\r
+       LOAD4A,,LINK            ;32,,12\r
+       LOAD4A,,LVARB           ;33,,13\r
+       LOAD4A,,INDEX           ;34,,14\r
+       LOAD4A,,ALGBLK          ;35,,15\r
+       LOAD4A,,LDPRG           ;36,,16\r
+       COBSYM,,LDLIB           ;37,,17\r
+\r
+       DISPL==.-LOAD2\r
+\r
+;ERROR EXIT FOR BAD HEADER WORDS\r
+\r
+LOAD4:\r
+IFN TENEX,<CAIN A,100          ;ASSIGN BLOCK?\r
+       JRST ASGSYM             ;YES>\r
+IFE K,<CAIN    A,400           ;FORTRAN FOUR BLOCK\r
+IFN MANTIS,<   JRST    F4LD\r
+       CAIE    A,401   ;MANTIS DEBUGGER DATA PRESENT IN FORTRAN FILE\r
+       JRST    LOAD4A          ;NO\r
+       TLON    F,SYMSW         ;YES, FORCE SYMSW SET\r
+       TRO     N,SYMFOR>\r
+       JRST    F4LD>\r
+\r
+LOAD4A:        MOVE    W,A             ;GET BLOCK TYPE\r
+       ERROR   ,</ILL. FORMAT BLOCK TYPE !/>\r
+       PUSHJ   P,PRNUM         ;PRINT BLOCK TYPE\r
+       JRST    ILC1            ;PRINT SUBROUTINE NAME\r
+\r\fSUBTTL       LOAD PROGRAMS AND DATA (BLOCK TYPE 1)\r
+;(BLOCK TYPE 37) TREAT AS BLOCK TYPE 1, BUT ONLY LOAD\r
+;IF IN LOCAL SYMBOLS MODE\r
+IFN COBSW,<\r
+COBSYM:        TLNN    F,SYMSW         ;LOCAL SYMBOLS?\r
+       JRST    LIB30           ;NO, SKIP OVER THIS BLOCK\r
+       MOVEI   V,-1(W)         ;GET BLOCK LENGTH\r
+       ADDM    V,LOD37.        ;COUNT EXTRA CODE>\r
+\r
+PROG:  MOVEI   V,-1(W)         ;LOAD BLOCK LENGTH\r
+       PUSHJ   P,RWORD         ;READ BLOCK ORIGIN\r
+       SKIPGE  W\r
+       PUSHJ   P,PROGS         ;SYMBOLIC IF 36 BITS\r
+       ADD     V,W             ;COMPUTE NEW PROG. BREAK\r
+IFN REENT,<TLNN F,HIPROG\r
+       JRST    PROGLW  ;NOT HIGH SEGMENT\r
+PROG3:\r
+IFN TENEX,<MOVE X,HIGHX>\r
+       CAMGE W,HVAL1   ;CHECK TO SEE IF IN TOP SEG\r
+       JRST LOWCOR\r
+       MOVE T,.JBREL   ;CHECK FOR OVERFLOW ON HIGH\r
+       CAIL T,@X\r
+       JRST PROG2\r
+       PUSHJ P,HIEXP\r
+       JRST FULLC\r
+       JRST PROG3>\r
+\r
+IFN MONLOD,<TLNN N,DISW        ;LOADING TO DISK?\r
+       JRST PROGLW             ;NO, GO CHECK NEW BREAK\r
+       CAMG H,V                ;NEW BREAK?\r
+       MOVE H,V                ;YES, UPDATE\r
+       JRST PROG2              ;NO NEED TO CHECK FOR ROOM>\r
+IFN REENT,<\r
+LOWCOR:        SUB V,HIGHX     ;RELOC FOR PROPER\r
+       ADD V,LOWX      ;LOADING OF LOW SEQMENT\r
+       SUB W,HIGHX\r
+       ADD W,LOWX>\r
+PROGLW:        MOVEI T,@X\r
+       CAMG    H,T             ;COMPARE WITH PREV. PROG. BREAK\r
+       MOVE H,T\r
+       TLNE F,FULLSW\r
+       JRST FULLC      ;NO ERROR MESSAGE\r
+IFN REENT,<CAML H,HVAL1\r
+       JRST COROVL     ;WE HAVE OVERFLOWED THE LOW SEGMENT\r
+       CAMLE T,HILOW\r
+       MOVEM T,HILOW   ;HIGHEST LOW CODE LOADED INTO>\r
+       CAILE H,1(S)  ; SKIP IF SUFFICIENT CORE AVAILABLE\r
+IFN EXPAND,<JRST [PUSHJ P,XPAND>\r
+               JRST FULLC\r
+IFN REENT,<    TLNE F,HIPROG\r
+               SUBI W,2000     ;HISEG LOADING LOW SEG>\r
+IFN EXPAND,<   JRST .-1]>\r
+\fPROG2:        MOVE    V,W\r
+PROG1: PUSHJ     P,RWORD               ;READ DATA WORD\r
+IFN TEN30,<CAIN V,41   ;CHANGE FOR 10/30 JOBDAT\r
+       MOVEI V,.JB41   ;JOB41 IS DIFFERENT\r
+       CAIN V,74       ;SO IS JOBDAT\r
+       MOVEI V,.JBDDT>\r
+IFN L,<CAML V,RINITL   ;CHECK FOR BAD STORE>\r
+IFN MONLOD,<PUSHJ P,DICHK      ;MAKE SURE ADDRESS IS IN CORE>\r
+       MOVEM     W,@X          ;STORE DATA WORD IN PROG. AT LLC\r
+IFN MONLOD,<TLO N,WOSW ;SET SWITCH TO WRITE OUT BUFFER>\r
+       AOJA    V,PROG1         ;ADD ONE TO LOADER LOC. COUNTER\r
+\r
+;HERE TO FIND SYMBOLIC ORIGIN\r
+;W CONTAINS RADIX50 60,ORIGIN\r
+;NEXT WORD CONTAINS OFFSET\r
+;NOTE SYMBOL MUST BE GLOBAL AND DEFINED\r
+\r
+PROGS: MOVE    C,W             ;PUT SYMBOL IN CORRECT SEARCH AC\r
+       TLC     C,640000        ;PERMUTE FROM 60 TO 04\r
+       PUSHJ   P,SDEF          ;SEE IF DEFINED\r
+         SKIPA C,2(A)          ;YES, GET VALUE\r
+       JRST    PROGER          ;NO, GIVE WARNING\r
+       HRRZ    C,C             ;CLEAR LEFT HALF IN CASE COMMON\r
+       PUSHJ   P,RWORD         ;GET NEXT WORD\r
+       ADD     W,C             ;FORM ORIGIN\r
+       SOJA    V,CPOPJ         ;BUT NOT SO MANY DATA WORDS\r
+\r
+PROGER:        MOVEM   C,(P)           ;REMOVE RETURN, SAVE C\r
+       ERROR   ,</VALUE NOT DEFINED FOR SYMBOLIC RELOCATION COUNTER !/>\r
+       POP     P,C\r
+       PUSHJ   P,PRNAME\r
+       JRST    LIB3            ;IGNORE THIS BLOCK\r
+\r
+\fSUBTTL        LOAD SYMBOLS (BLOCK TYPE 2)\r
+\r
+SYM:   PUSHJ   P,PRWORD        ;READ TWO DATA WORDS\r
+       PUSHJ   P,SYMPT;                PUT INTO TABLE\r
+IFN REENT,<PUSHJ P,RESTRX>\r
+       JRST    SYM\r
+\r
+SYMPT: TLNE C,200000   ;GLOBAL REQUEST? WFW\r
+       JUMPL C,SYM3    ;CHECK FOR 60 NOT JUST HIGH BIT WFW\r
+       TLNN    C,40000\r
+       JRST    SYM1A           ;LOCAL SYMBOL\r
+       TLNE C,100000\r
+       JRST SYM1B\r
+SYMPTQ:        PUSHJ   P,SREQ          ;GLOBAL DEF., SEARCH FOR REQUEST\r
+       JRST    SYM2            ;REQUEST MATCHES\r
+       PUSHJ     P,SDEF                ;SEARCH FOR MULTIPLE DEFINITIONS\r
+       JRST    SYM1            ;MULTIPLY DEFINED GLOBAL\r
+       JRST    SYM1B\r
+\r
+;      PROCESS MULTIPLY DEFINED GLOBAL\r
+\r
+SYM1:  CAMN    W,2(A)          ;COMPARE NEW AND OLD VALUE\r
+       POPJ    P,;\r
+       AOS     MDG             ;COUNT MULTIPLY DEFINED GLOBALS\r
+       PUSHJ   P,PRQ           ;START W/ ?\r
+       PUSHJ     P,PRNAM               ;PRINT SYMBOL AND VALUE\r
+IFN RPGSW,<MOVE W,.JBERR       ;RECORD THIS AS AN ERROR\r
+       ADDI W,1\r
+       HRRM W,.JBERR>\r
+       MOVE    W,2(A)          ;LOAD OLD VALUE\r
+       PUSHJ     P,PRNUM               ;PRINT OLD VALUE\r
+       ERROR   7,</MUL. DEF. GLOBAL IN PROG.  !/>\r
+       MOVE    C,SBRNAM        ;GET PROGRAM NAME\r
+       PUSHJ   P,PRNAME        ;PRINT R-50 NAME\r
+       ERROR   0,</#/>\r
+       POPJ    P,              ;IGNORE MUL. DEF. GLOBAL SYM\r
+\r\f;    LOCAL SYMBOL\r
+\r
+SYM1A: TLNN    F,SYMSW         ;SKIP IF LOAD LOCALS SWITCH ON\r
+       POPJ    P,;             IGNORE LOCAL SYMBOLS\r
+IFN SYMDSW,<\r
+IFE MONLOD,<TRNE F,LSYMFL      ;ONLY PUT SYMBOLS ON DSK  IF EXT SYM>\r
+IFN MONLOD,<TLNN N,DISW                ;BUT NOT IF LOADING TO DISK>\r
+       JRST    SYM1X           ;STORE SYMBOL ON DSK>\r
+\r
+SYM1B: IFN MONLOD,<TLNE N,DISW ;LOADING TO DISK?\r
+       PUSHJ P,SIZCHK          ;YES, CHECK FOR OVERLAP>\r
+       CAIL    H,(S)           ;STORE DEFINED SYMBOL\r
+IFN EXPAND,<   PUSHJ P,XPAND7>\r
+IFE EXPAND,<   JRST SFULLC>\r
+SYM1C: IFE K,<\r
+       TLNE    N,F4SW;         FORTRAN FOUR REQUIRES A BLT\r
+       PUSHJ   P,MVDWN;        OF THE TABLES>\r
+SYM1D: MOVEI   A,-2(S)         ;LOAD A TO SAVE INST. AT SYM2\r
+       SUBI    S,2             ;UPDATE UNDEFINED POINTER\r
+       POP     B,2(A)          ;MOVE UNDEFINED VALUE POINTER\r
+       POP     B,1(A)          ;MOVE UNDEFINED SYMBOL\r
+       MOVEM   W,2(B)          ;STORE VALUE\r
+       MOVEM  C,1(B)           ;STORE SYMBOL\r
+IFE SYMDSW,<POPJ       P,>\r
+IFN SYMDSW,<\r
+SYM1X:\r
+IFN MONLOD,<SKIPL SYMEXT       ;BEEN SETUP ONCE?\r
+       TLNE N,DISW             ;OR, IF OUTPUTTING TO DSK\r
+       POPJ    P,              ;DON'T BOTHER>\r
+IFE MONLOD,<SKIPL SYMEXT       ;BEEN SETUP ONCE?>\r
+       TRNN    F,LSYMFL        ;OUTPUT FILE SET UP?\r
+IFN MONLOD,<PUSHJ P,INITSYM    ;NO, DO IT>\r
+IFE MONLOD,<POPJ P,            ;NO, DON'T OUTPUT SYMBOLS>\r
+       SOSG    ABUF2\r
+       OUTPUT  2,\r
+       IDPB    C,ABUF1\r
+       SOSG    ABUF2\r
+       OUTPUT  2,\r
+       IDPB    W,ABUF1\r
+       AOS     SYMCNT#\r
+       POPJ    P,>\r
+\r\r
+\fIFN SYMDSW,<\r
+SYOPEN:        HLRZM   W,SYMEXT#\r
+       MOVE    W,DTIN          ;GET FILE NAME\r
+       MOVEM   W,SYMNAM        ;SAVE IT\r
+       PUSHJ   P,INITSYM       ;OPEN FILE\r
+       JRST    LD2DD           ;AND RETURN TO SCAN\r
+\r
+INITSYM:       \r
+       TLZ     N,AUXSWI!AUXSWE\r
+       INIT    2,14\r
+       SIXBIT  /DSK/\r
+       ABUF,,0\r
+         HALT\r
+       PUSH    P,0\r
+       PUSH    P,1\r
+       PUSH    P,2\r
+       PUSH    P,3\r
+       MOVEI   0,AUX\r
+       MOVEM   0,.JBFF\r
+       OUTBUF  2,1\r
+       PJOB    0,\r
+       MOVEI   3,3\r
+       IDIVI   0,^D10\r
+       ADDI    1,"0"-40\r
+       LSHC    1,-6\r
+       SOJG    3,.-3\r
+       HRRI    2,'SYM'\r
+       MOVE    0,SYMNAM#       ;GET NAME\r
+       JUMPN   0,.+3           ;WAS IT SET\r
+       MOVS    0,2             ;NO\r
+       MOVEM   0,SYMNAM        ;STORE IT\r
+       SKIPN   1,SYMEXT        ;ALREADY SET\r
+       MOVEI   1,'TMP'\r
+       HRRZM   1,SYMEXT        ;STORE FILE EXTENSION\r
+       HRLZS   1\r
+       SETZB   2,3\r
+       ENTER   2,0\r
+         HALT\r
+       POP     P,3\r
+       POP     P,2\r
+       POP     P,1\r
+       POP     P,0\r
+       IORI    F,LSYMFL        ;SYMBOL FILE SETUP NOW\r
+       POPJ    P,\r
+>\r
+\f;     GLOBAL DEFINITION MATCHES REQUEST\r
+\r
+SYM2:  PUSH    P,SYM2C ;NEXT MUST BE A SUBROUTINE FOR LATER, SET RETURN\r
+SYM2B: MOVE    V,2(A)          ;LOAD REQUEST POINTER\r
+       PUSHJ   P,REMSYM\r
+       JUMPL V,SYM2W   ;ADDITIVE REQUEST? WFW\r
+       PUSHJ     P,SYM4A               ;REPLACE CHAIN WITH DEFINITION\r
+SYM2W1:        PUSHJ P,SREQ    ;LOOK FOR MORE REQUESTS FOR THIS SYMBOL\r
+       JRST SYM2B      ;FOUND MORE\r
+SYM2C: POPJ    P,SYM1D ;RETURN, SEE SYM2 FOR USE OF ADDRESS\r
+\r
+;      REQUEST MATCHES GLOBAL DEFINITION\r
+\r
+SYM2A: MOVE    V,W             ;LOAD POINTER TO CHAIN\r
+       MOVE    W,2(A)          ;LOAD VALUE\r
+       JUMPL V,FIXWP   ;HANDLE ATTITIVE REQUEST WFW\r
+       JRST SYM4A\r
+\r
+;      PROCESS GLOBAL REQUEST\r
+\r
+SYM3:  TLNE    C,040000;               COMMON NAME\r
+       JRST    SYM1B\r
+       TLC     C,640000;               PERMUTE BITS FROM 60 TO 04\r
+       PUSHJ     P,SDEF                ;SEARCH FOR GLOBAL DEFINITION\r
+       JRST    SYM2A           ;MATCHING GLOBAL DEFINITION\r
+       JUMPL W,SYM3X1  ;ADDITIVE FIXUP WFW\r
+       PUSHJ     P,SREQ                ;SEARCH FOR EXISTING REQUEST WFW\r
+       JRST    SYM3A           ;EXISTING REQUEST FOUND WFW\r
+SYM3X1:        TLNN W,100000   ;CHECK SYMBOL TABLE FIXUP\r
+       JRST     SYM3X2 ;NO\r
+       MOVE     V,1(B) ;MUST BE LAST SYMBOL DEFINED. GET SYMBOL\r
+       XOR      V,W            ;CHECK FOR IDENTITY\r
+       TDNE     V,[XWD 77777,-1]       ;BUT IGNORE HIGH 3 BITS\r
+       POPJ     P,             ;NOT SAME, ASSUME NOT LOADED LOCAL\r
+       HRRI     W,2(B)         ;GET LOCATION IN RIGHT HALF\r
+       TLO      W,1\r
+       SUB      W,HISTRT               ;AND MAKE RELATIVE\r
+IFN B11SW,<TLZ W,040000>\r
+SYM3X2:        IFN MONLOD,<TLNE N,DISW ;LOADING TO DISK?\r
+       PUSHJ P,SIZCHK          ;YES, CHECK FOR OVERLAP>\r
+       CAIL    H,(S)           ;STORE REQUEST IN UNDEF. TABLE WFW\r
+IFN EXPAND,<   PUSHJ P,XPAND7>\r
+IFE EXPAND,<   JRST SFULLC>\r
+SYM3X: IFE K,<\r
+       TLNE    N,F4SW;         FORTRAN FOUR\r
+       PUSHJ   P,MVDWN;                ADJUST TABLES IF F4>\r
+       SUB     S,SE3           ;ADVANCE UNDEFINED POINTER\r
+       MOVEM     W,2(S)                ;STORE UNDEFINED VALUE POINTER\r
+       MOVEM     C,1(S)                ;STORE UNDEFINED SYMBOL\r
+       POPJ    P,;\r
+\r\f\r
+;      COMBINE TWO REQUEST CHAINS\r
+\r
+SYM3A: SKIPL 2(A)      ;IS IT ADDITIVE WFW\r
+       JRST SYM3A1     ;NO, PROCESS WFW\r
+SYM3A4:        PUSHJ P,SDEF2   ;YES, CONTINUE WFW\r
+       JRST SYM3A      ;FOUND ANOTHER WFW\r
+       JRST SYM3X2     ;REALLY NO CHAIN THERE WFW\r
+SYM3A1:        SKIPE   V,2(A)  ;IF ADDRESS OF CHAIN IS 0, THROW IT AWAY\r
+       JRST    SYM3A2  ;AND USE THE NEW ONE, ELSE ADD THE CHAINS\r
+       MOVEM   W,2(A)  ;W IS ADDRESS OF NEW CHAIN,STORE ON TOP OF OLD 0\r
+       POPJ    P,\r
+SYM3A2:        \r
+SYM3A3:        MOVE A,2(A)\r
+SYM3B: HRRZ V,A\r
+IFN L,<CAMGE V,RINITL\r
+       HALT>\r
+IFN REENT,<CAMGE V,HVAL1\r
+       SKIPA X,LOWX\r
+       MOVE X,HIGHX>\r
+IFN MONLOD,<PUSHJ P,DICHK      ; MAKE SURE ADDRESS IN V IS IN CORE>\r
+       HRRZ A,@X ; LOAD NEXT ADDRESS IN CHAIN\r
+       JUMPN A,SYM3B  ; JUMP IF NOT THE LAST ADDR. IN CHAIN\r
+       HRRM    W,@X            ;COMBINE CHAINS\r
+IFN MONLOD,<TLO N,WOSW ;SET FLAG TO WRITE OUT BUFFER>\r
+       POPJ    P,;\r
+\r
+;WFW PATCH FOR ADDITIVE GLOBAL REQUESTS\r
+\r
+FIXWP: TLNN     V,100000       ;CHECK FOR SYMBOL TABLE FIXUP\r
+       JRST     FIXW\r
+       MOVE     T,1(B) ;SYMBOL FIXUP, MUST BE LAST SYMBOL DEFINED\r
+       XOR      T,V            ;CHECK FO SAME\r
+       TDNE     T,[XWD 77777,-1]       ;EXCEPT FOR HIGH CODE BITS\r
+       POPJ     P,             ;ASSUME NON-LOADED LOCAL\r
+       HRRI     V,2(B)         ;GET LOCATION\r
+       SUBI     V,(X)          ;SO WE CAN USE @X\r
+       JRST FIXW1\r
+FIXW:  IFN REENT,<HRRZ T,V\r
+       CAMGE T,HVAL1\r
+       SKIPA X,LOWX\r
+       MOVE X,HIGHX>\r
+IFN L,<        HRRZ T,V\r
+       CAMGE R,RINITL\r
+       POPJ P,>\r
+FIXW1: TLNE    V,200000        ;IS IT LEFT HALF\r
+       JRST FIXWL\r
+IFN MONLOD,<TLNN V,100000      ;SKIP IF USING @X TO FIX SYMBOL TABLE\r
+       PUSHJ   P,DICHK         ;MAKE SURE ADDRESS IN V IS IN CORE>\r
+       MOVE T,@X       ;GET WORD\r
+       ADD T,W         ;VALUE OF GLOBAL\r
+       HRRM T,@X       ;FIX WITHOUT CARRY\r
+IFN MONLOD,<TLNN V,100000      ;SKIP IF JUST FIXED SYMBOL TABLE\r
+       TLO     N,WOSW          ;SET FLAG TO WRITE OUT BUFFER>\r
+       MOVSI   D,200000        ;SET UP TO REMOVE DEFERED INTERNAL IF THERE\r
+       JRST    SYMFIX\r
+\fFIXWL:        HRLZ    T,W             ;UPDATE VALUE OF LEFT HALF\r
+IFN MONLOD,<TLNN V,100000      ;SKIP IF USING @X TO FIX SYMBOL TABLE\r
+       PUSHJ   P,DICHK         ;MAKE SURE ADDRESS IN V IS IN CORE>\r
+       ADDM    T,@X            ;BY VALUE OF GLOBAL\r
+IFN MONLOD,<TLNN V,100000      ;SKIP IF JUST FIXED SYMBOL TABLE\r
+       TLO     N,WOSW          ;SET FLAG TO WRITE OUT BUFFER>\r
+       MOVSI   D,400000        ;LEFT DEFERED INTERNAL\r
+SYMFIX:        TLNN V,100000   ;CHECK FOR SYMBOL TABLE FIXUP\r
+       POPJ P,         ;NO, RETURN\r
+       ADDI V,(X)      ;GET THE LOCATION\r
+SYMFX1:        MOVE T,-1(V)    ;GET THE SYMBOL NAME\r
+       TLNN T,40000    ;CHECK TO SEE IF INTERNAL\r
+       POPJ P,         ;NO, LEAVE\r
+       ANDCAB D,-1(V)  ;REMOVE PROPER BIT\r
+       TLNE D,600000   ;IS IT STILL DEFERED?\r
+       POPJ P,         ;YES, ALL DONE\r
+       EXCH C,D        ;NO, CHECK FOR A REQUEST FOR IT\r
+       PUSHJ P,SREQ\r
+       JRST CHNSYM     ;YES, WILL HAVE TO CALL THE FIXUP ROUTINE\r
+       MOVE C,D        ;GET C BACK\r
+       POPJ P,\r
+CHNSYM:        PUSH P,D        ;HAS THE OLD C IN IT\r
+       PUSH P,W        ;WE MAY NEED IT LATER\r
+       MOVE W,(V)      ;GET VALUE\r
+       PUSHJ P,SYM2B   ;CALL THE FOUND GLOBAL TO MATCH REQUEST ROUTINE\r
+       POP P,W\r
+       POP P,C         ;RESTORE FOR CALLER\r
+       POPJ P,         ;AND GO AWAY\r
+\r
+SYM2W: IFN B11SW,<\r
+       TLNE V,40000    ;CHECK FOR POLISH\r
+       JRST POLSAT>\r
+       TLNN V,100000   ;SYMBOL TABLE?\r
+       JRST SYM2WA\r
+       ADD V,HISTRT    ;MAKE ABSOLUTE\r
+       SUBI V,(X)      ;GET READY TO ADD X\r
+       PUSHJ P,FIXW1\r
+       JRST SYM2W1\r
+SYM2WA:        PUSHJ P,FIXW    ;DO FIXUP\r
+       JRST SYM2W1     ;AND LOOK FOR MORE REQUESTS\r
+\r
+;END WFW PATCH\r
+\r\f;PATCH VALUES INTO CHAINED REQUEST\r
+\r
+SYM4:  IFN L,<CAMGE V,RINITL\r
+       POPJ P,>\r
+IFN REENT,<CAMGE V,HVAL1\r
+       SKIPA X,LOWX\r
+       MOVE X,HIGHX>\r
+IFN MONLOD,<PUSHJ P,DICHK      ;MAKE SURE ADDRESS IN V IS IN CORE>\r
+       HRRZ    T,@X    ;LOAD NEXT ADDRESS IN CHAIN\r
+       HRRM    W,@X            ;INSERT VALUE INTO PROGRAM\r
+IFN MONLOD,<TLO N,WOSW ;SET FLAG TO WRITE OUT BUFFER>\r
+       MOVE    V,T\r
+SYM4A: JUMPN     V,SYM4                ;JUMP IF NOT LAST ADDR. IN CHAIN\r
+       POPJ    P,\r
+\r
+IFE    K,<\r
+MVDWN: HRRZ T,MLTP\r
+IFN EXPAND,<   SUBI T,2>\r
+       CAIG    T,(H);          ANY ROOM LEFT?\r
+IFN EXPAND,<   JRST    [PUSHJ P,XPAND>\r
+                       TLOA F,FULLSW\r
+IFN EXPAND,<           JRST MVDWN\r
+                       POPJ P,]>\r
+       TLNE    F,SKIPSW+FULLSW\r
+       POPJ    P,      ;       ABORT BLT\r
+       HRREI   T,-2\r
+       ADDM    T,PLTP;         ADJUST PROGRAMMER LABEL POINTER\r
+       ADDM    T,BITP;         AND BIT TABLE POINTER\r
+       ADDM    T,SDSTP;        FIRST DATA STATEMENT\r
+       ADDM    T,LTC\r
+       ADDM    T,ITC\r
+       TLNE    N,SYDAT\r
+       ADDM    T,V\r
+       ADDB    T,MLTP;         AND FINALLY TO MADE LABEL TABLE\r
+       HRLS    T;              SET UP BLT POINTER\r
+       ADD     T,[XWD 2,0]\r
+       BLT     T,(S)\r
+       POPJ    P,\r
+>\r
+REMSYM:        MOVE T,1(S)\r
+       MOVEM T,1(A)\r
+       MOVE T,2(S)\r
+       MOVEM T,2(A)\r
+       CAIN    S,A             ;MOVING TO SELF?\r
+       JRST    REMSY1          ;YES, DON'T CLEAR\r
+       SETZM   1(S)            ;CLEAR NAME\r
+       SETZM   2(S)            ;CLEAR POINTER\r
+REMSY1:        ADD S,SE3\r
+       POPJ P,\r
+\r
+\fSUBTTL        HIGH-SEGMENT (BLOCK TYPE 3)\r
+;THIS PROGRAM IS INTENDED FOR HI SEGMENT IF RUNNING ON A PDP-10.\r
+; THIS BLOCK TYPE OCCURS AFTER ENTRY AND NAME BLOCKS.\r
+\r
+HISEG: HRRZ    C,W             ;GET WORD COUNT\r
+       PUSHJ   P,WORD          ;GOBBLE UP BYTE WORD.\r
+       PUSHJ   P,WORD          ;GET THE HIGH SEG OFSET\r
+       SOJE    C,.+4           ;FINISHED IF NOT FORTRAN-10\r
+       MOVE    C,W             ;SAVE HIGH INFO\r
+       PUSHJ   P,WORD          ;GET LOW BREAK\r
+       EXCH    W,C             ;SWAP BACK\r
+IFE REENT,<HISEG2==LOAD1A\r
+       JUMPGE  W,LOAD1A        ;NOT TWO SEG PROG.>\r
+IFN REENT,<JUMPE W,HISEG2      ;IGNORE ZERO\r
+IFE TENEX,<JUMPG W,HISEG3      ;NEG. IF TWOSEG PSEUDO-OP>\r
+IFN TENEX,<TLNN W,-1\r
+       JRST HISEG3>\r
+>;END OF IFN REENT\r
+       TRO     F,TWOFL         ;SET FLAG\r
+IFN REENT,<\r
+       TRNE    F,NOHI!NOHI6    ;TWO SEGMENTS LEGAL?\r
+       JRST    ONESEG          ;LOAD AS ONE SEGMENT\r
+HISEG3:        HRRZ    D,W             ;GET START OF HISEG \r
+       JUMPE   D,.+2           ;NOT SPECIFIED\r
+       PUSHJ   P,HCONT         ;AS IF /H\r
+HISEG2:        PUSHJ   P,HISEG1\r
+       JRST    LOAD1           ;GET NEXT BLOCK\r
+FAKEHI:                                ;AS IF BLOCK TYPE 3\r
+HISEG1:        TRNE    F,NOHI!NOHI6    ;LOAD REENT?\r
+       POPJ    P,\r
+       TLOE    F,HIPROG        ;LOADING HI PROG\r
+       POPJ    P,              ;IGNORE 2'ND HISEG\r
+       TRON    F,SEENHI        ;HAVE WE LOADED ANY OTHER HI STUFF?\r
+       PUSHJ   P,SETUPH        ;NO,SET UP HI SEG.\r
+       MOVEM R,LOWR\r
+       MOVE R,HIGHR\r
+       MOVE    X,NAMPTR        ;GET THE POINTER TO PROGRAM NAME\r
+       HRRM    R,2(X)          ;CALL THIS THE START OF THE PROGRAM\r
+       MOVE X,HIGHX\r
+       POPJ    P,\r
+\r
+SETUPH:        MOVE X,HVAL1\r
+       CAIGE X,-1      ;SEE IF IT HAS BEEN CHANGED FROM ORIG\r
+       JRST SEENHS     ;YES, MUST HAVE SEEN /H\r
+       MOVEI X,400000\r
+       MOVEM X,HVAL1\r
+       CAIG X,(H)      ;HAVE WE RUN OVER WITH THE LOW SEG\r
+       JRST COROVL\r
+       ADDI X,.JBHDA\r
+       HRLI X,W\r
+       MOVEM X,HVAL\r
+SEENHS:        MOVE X,HVAL\r
+       MOVEM X,HIGHR\r
+       HRRZ X,.JBREL\r
+       SUB X,HVAL1\r
+       ADDI X,1\r
+       HRLI X,V\r
+       MOVEM X,HIGHX\r
+       POPJ P,\r
+\r
+\fSETSEG:       TRZ     F,NOHI!SEGFL    ;ALLOW HI-SEG\r
+       JUMPL   D,.+2           ;/-H TURNS OFF NOHI ONLY\r
+       TRO     F,SEGFL         ;/1H FORCES  HI\r
+       POPJ    P,\r
+>\r
+\r
+ONESEG:        HLRZ    D,W             ;GET LENGTH OF HISEG\r
+       SUBI    D,(W)           ;REMOVE OFSET\r
+       JUMPLE  D,ONELOW        ;LENGTH NOT AVAILABLE\r
+       MOVEM   R,LOWR          ;SAVE LOW SEGMENT RELOCATION\r
+       ADDM    D,LOWR          ;ADD TO LOW SEG RELOCATION\r
+       HRRZM   W,HVAL1         ;SO RELOC WILL WORK\r
+       JRST    LOAD1           ;GET NEXT BLOCK\r
+\r
+ONELOW:        HLRZ    D,C             ;TRY LOW SEG BREAK\r
+       SUBI    D,(C)\r
+       JUMPLE  D,TWOERR        ;NOT AVAILABLE\r
+       MOVEM   R,LOWR          ;SAVE CURRENT BREAK\r
+       ADD     R,D             ;ADD LOW LENGTH\r
+       HRRZM   W,HVAL1         ;SO RELOC WILL WORK\r
+       JRST    LOAD1\r
+\r
+TWOERR:        ERROR   7,</TWO SEGMENTS ILLEGAL#/>\r
+IFE L,<        JRST    LDRSTR>\r
+IFN L,<        JRST    LOAD1>\r
+\fSUBTTL        HIGHEST RELOCATABLE POINT (BLOCK TYPE 5)\r
+\r
+HIGH0: CAIE    A,4             ; TEST FOR END BLOCK (OVERLAP)\r
+       JRST    LIB30\r
+\r
+HIGH:  TRNN    F,TWOFL         ;IS THIS A TWO SEGMENT PROGRAM?\r
+       JRST    HIGH2A          ;NO\r
+HIGH2: PUSHJ   P,RWORD         ;GET HISEG BREAK\r
+       TRZ     F,TWOFL         ;CLEAR FLAG NOW\r
+IFE REENT,<MOVE        R,LOWR\r
+       JRST    HIGH2A>\r
+IFN REENT,<TRNE        F,NOHI!NOHI6    ;SINGLE SEGMENT LOAD?\r
+       JRST    [MOVE   R,LOWR  ;YES,GET LARGER RELOC\r
+               CAILE   W,(R)   ;IF FORTRAN-10\r
+               SKIPA   C,W     ;HISEG CODE IS ON TOP\r
+               SETZ    C,      ;OTHERWISE ZERO ABS VALUE\r
+               MOVE    W,HVAL  ;ORIGINAL VALUE\r
+               MOVEM   W,HVAL1 ;RESET\r
+               PUSHJ   P,RWORD ;GET LOW SEG BREAK IN W\r
+               CAMGE   C,W     ;PUT LARGER VALUE\r
+               MOVE    C,W     ;IN C\r
+               JRST    HIGH2B] ;CONTINUE AS IF LOW ONLY\r
+       HRR     R,W             ;PUT BREAK IN R\r
+       CAMLE   R,HVAL\r
+       MOVEM   R,HVAL\r
+       MOVEM   R,HIGHR\r
+       MOVE    R,LOWR          ;NEXT WORD IS LOW SEG BREAK\r
+       TLZ     F,HIPROG        ;CLEAR HIPROG\r
+       PUSHJ   P,PRWORD        ;GET WORD PAIR\r
+       HRR     R,C             ;GET LOW SEG BREAK\r
+       MOVEM   R,LOWR          ;SAVE IT\r
+       MOVE    R,HIGHR         ;GET HIGH BREAK\r
+       JRST    HIGHN3          ;AND JOIN COMMON CODE>\r
+\r
+\fHIGH2A:       PUSHJ   P,PRWORD        ;READ TWO DATA WORDS.\r
+HIGH2B:        IFN REENT,<\r
+       TLZE F,HIPROG\r
+       JRST HIGHNP>\r
+IFN WFWSW,<ADD C,VARLNG                ;IF LOW SEG THEN VARIABLES GO AT END>\r
+IFN ALGSW,<ADD C,OWNLNG        ;ADD IN LENGTH OF OWN BLOCK>\r
+IFN COBSW,<ADD C,LOD37.        ;ADD IN LOCAL SYMBOLS\r
+       SKIPE   LOD37.          ;BUT WERE THERE ANY?\r
+       SUBI    C,3             ;YES SO REMOVE THE 3 WORDS OVERWRITTEN>\r
+IFE TENEX,<CAMGE C,W   ;CHECK 2ND WORD (LOC PROG BRK IF PRESENT)\r
+       MOVE C,W>\r
+       HRR R,C         ;SET NEW PROGRAM BREAK\r
+HIGH31:        MOVEM   R,LOWR  ;SAVE NEW VALUE OF R\r
+IFN MONLOD,<TLNN N,DISW        ;SKIP IF LOADING TO DISK>\r
+       ADDI C,(X)\r
+       CAIG H,(C)\r
+       MOVEI H,(C)     ;SET UP H\r
+IFN MONLOD,<TLNE N,DISW        ;LOADING TO DISK?\r
+       JRST HIGH3              ;YES, DON'T WORRY ABOUT EXCEEDING CORE>\r
+       CAILE   H,1(S)  ;TEST PROGRAM BREAK\r
+IFN EXPAND,<PUSHJ P,[  PUSHJ P,XPAND\r
+                       POPJ    P,\r
+                       JRST POPJM2]>\r
+IFE EXPAND,<TLO        F,FULLSW>\r
+HIGH3: MOVEI A,F.C\r
+       BLT A,B.C\r
+IFN REENT,<TRNE        F,NOHI!NOHI6    ;ONE SEGMENT PROGRAM?\r
+       JRST    HIGHN4          ;YES\r
+       HRRZ    W,LOWR          ;GET LOW  PROG BREAK\r
+       HRL     W,HIGHR         ;GET HIGH PROG BREAK\r
+       SETZ    C,              ;ZERO SYMBOL NAME\r
+       PUSHJ   P,SYM1B         ;PUT IN SYMBOL TABLE\r
+       MOVEM   S,F.C+S         ;SAVE NEW S AND B\r
+       MOVEM   B,F.C+B         ;INCASE OF ERROR\r
+HIGHN4:>\r
+       TRZE    N,F10TFL        ;FORTRAN-10 SET NOHI?\r
+       TRZ     F,NOHI          ;YES, CLEAR IT\r
+       SETZM   SBRNAM          ;RELAX, RELOCATION BLOCK FOUND\r
+       TLNE    F,SLIBSW+LIBSW  ;NORMAL MODE EXIT THROUGH LOAD1\r
+       JRST    LIB             ;LIBRARY SEARCH EXIT\r
+       JRST LOAD1\r
+\fIFN REENT,<\r
+HIGHNP:        HRR R,C\r
+       CAMG    W,HVAL1 ;ABS. ADDRESS IN HIGH SEGMENT?\r
+       JRST    HIGHN1  ;NO\r
+       CAIG    C,(W)   ;YES, GREATER THAN CURRENT HISEG RELOC?\r
+       HRR     R,W     ;YES, USE IT\r
+       SETZ    W,      ;DON'T USE IT AGAIN\r
+HIGHN1:        CAMLE R,HVAL\r
+       MOVEM R,HVAL\r
+       MOVEM R,HIGHR\r
+HIGHN3:        PUSH    P,W     ;SAVE W,CONTAIN HIGHEST ABSOLUTE ADDRESS\r
+       ADD W,LOWX      ;LOC PROG BRK\r
+       CAIGE H,(W)     ;CHECK FOR TOP OF LOW CORE\r
+       MOVEI H,(W)\r
+       POP     P,W     ;RESTORE\r
+       CAML H,HVAL1\r
+       JRST COROVL     ;OVERFLOW OF LOW SEGMENT\r
+HIGHN2:        HRRZ R,HVAL\r
+       SUB R,HVAL1\r
+       ADD R,HISTRT\r
+       CAMLE R,.JBREL\r
+       JRST    [PUSHJ P,HIEXP\r
+               JRST FULLC\r
+               JRST HIGHN2]\r
+       MOVE R,LOWR\r
+       MOVE X,LOWX\r
+IFN WFWSW,<ADD R,VARLNG        ;VARIABLES IN LOW SEG>\r
+IFN ALGSW,<ADD R,OWNLNG        ;OWN BLOCK IN LOW SEGMENT>\r
+IFN COBSW,<ADD R,LOD37.        ;ADD IN LOCAL SYMBOLS\r
+       SKIPE   LOD37.          ;BUT WERE THERE ANY?\r
+       SUBI    R,3             ;YES SO REMOVE THE 3 WORDS OVERWRITTEN>\r
+       HRRZ C,R\r
+       CAIGE   C,(W)   ;IS ABSOLUTE LOCATION GREATER\r
+       HRR     R,W     ;YES USE IT\r
+       HRRZ    C,R     ;SET UP C AGAIN\r
+       JRST HIGH31     ;GO CHECK PROGRAM BREAK\r
+>\r
+SFULLC:        TROE    F,SFULSW        ;PREVIOUS OVERFLOW?\r
+       JRST    FULLC           ;YES, DON'T PRINT MESSAGE\r
+       ERROR   ,<?SYMBOL TABLE OVERLAP#?>\r
+FULLC:\r
+IFE K,<        TLNE    N,F4SW\r
+       POPJ    P,>\r
+       JRST    LIB3            ;LOOK FOR MORE\r
+\fSUBTTL        EXPAND HIGH SEGMENT\r
+\r
+IFN REENT,<\r
+HIEXP: TLNE    F,FULLSW\r
+       POPJ    P,\r
+IFN EXPAND,<PUSH P,Q>\r
+       PUSH P,H\r
+       PUSH P,X\r
+       PUSH P,N\r
+IFE K,<HRRZ X,MLTP\r
+       TLNN N,F4SW>\r
+       MOVEI X,1(S)\r
+       HRRZ N,X\r
+       SUB N,H\r
+       CAILE N,1777\r
+       JRST MOVHI\r
+IFE EXPAND,<POPJ P,>\r
+IFN EXPAND,<HRRZ N,.JBREL\r
+       ADDI N,2000\r
+       CAMG    N,ALWCOR\r
+       CORE N,\r
+       JRST XPAND6\r
+       POP P,N\r
+       JRST XPAND3>\r
+\r
+MOVHI: MOVEI N,-2000(X)\r
+       HRL N,X\r
+       HRRZ X,.JBREL\r
+       BLT N,-2000(X)\r
+       MOVNI H,2000\r
+IFN EXPAND,<JRST XPAND8>\r
+IFE EXPAND,<ADDM H,HISTRT\r
+       ADDM H,S\r
+       ADDM H,B\r
+       ADDM H,HIGHX\r
+       TLNE F,HIPROG\r
+       ADDM H,-1(P)\r
+       POP P,N\r
+       ADDM H,NAMPTR   ;ADJUST POINTER TO NAME\r
+IFE K,<        TLNN F4SW\r
+       JRST HIXP1\r
+       ADDM H,PLTP\r
+       ADDM H,BITP\r
+       ADDM H,SDSTP\r
+       ADDM H,MLTP\r
+       TLNE N,SYDAT\r
+       ADDM H,V\r
+HIXP1:>\r
+       POP P,X\r
+       POP P,H\r
+       AOS (P)\r
+       POPJ P,>\r
+>\r
+\r\fSUBTTL       PROGRAM NAME (BLOCK TYPE 6)\r
+\r
+NAME:  SKIPE   SBRNAM          ;HAVE WE SEEN TWO IN A ROW?\r
+       JRST    NAMERR          ;YES, NO END BLOCK SEEN\r
+NAME0: PUSHJ   P,PRWORD        ;READ TWO DATA WORDS\r
+       MOVEM   C,SBRNAM        ;SAVE SUBROUTINE NAME\r
+IFN MANTIS,<CAMN C,[RADIX50 0,MANTIS]\r
+       CAME    R,[W,,.JBDA]    ;YES, BUT IS IT TO LOAD AT 140?\r
+       CAIA                    ;NO, NOT A DEBUG /MANTIS COMMAND\r
+       TRO     N,MANTFL        ;HAVE SEEN MANTIS NOW>\r
+NCONT: HLRZ    V,W             ;GET COMPILER TYPE\r
+       ANDI    V,7777          ;BITS 6-17\r
+       CAILE   V,CMPLEN        ;ONLY IF LEGAL TYPE\r
+       SETZ    V,              ;MAKE DEFAULT\r
+       HLL     V,W             ;GET CPU TYPE ALSO\r
+       TLZ     V,7777          ;BITS 0-5\r
+       HRRZS   W               ;CLEAR TYPE\r
+       XCT     CMPLER(V)       ;DO SPECIAL FUNCTION\r
+       TLOE    N,COMFLG        ;SKIP IF COMMON NOT PREV. SET\r
+       JRST    NAME1           ;SIZE OF COMMON PREV. SET\r
+       MOVEM   W,COMSAV        ;STORE LENGTH OF COMMON\r
+       JUMPE   W,NAME2         ;JUMP IF NO COMMON IN THIS JOB\r
+       HRRI    R,@R            ;FIRST PROGRAM SET LOAD ORIGIN\r
+NAME1: IFN MONLOD,<TLNE N,DISW ;LOADING TO DISK?\r
+       PUSHJ P,SIZCHK          ;YES, CHECK FOR OVERLAP>\r
+       CAILE   H,-1(S)         ;TEST FOR AVAIL. SYMBOL SPACE\r
+IFN EXPAND,<   PUSHJ P,XPAND7>\r
+IFE EXPAND,<   JRST SFULLC>\r
+       SUBI    S,2             ;UPDATE UNDEF. TABLE POINTER\r
+       POP     B,2(S)\r
+       POP     B,1(S)\r
+       EXCH    N,NAMPTR        ;GET NAME POINTER, SAVE N\r
+       HRRZ    V,N             ;POINTER TO PREVIOUS NAME\r
+       SUBM    B,V             ;COMPUTE RELATIVE POSITIONS\r
+       HRLM    V,2(N)          ;STORE FORWARD POINTER\r
+       HRRZ    N,B             ;UPDATE NAME POINTER\r
+       EXCH    N,NAMPTR        ;SWAP BACK\r
+NAME2: MOVEM   C,1(B)          ;STORE PROGRAM NAME\r
+       HRRZM   R,2(B)          ;STORE PROGRAM ORIGIN\r
+IFN SYMDSW,<PUSH       P,W             ;SAVE W\r
+       HRRZ    W,R             ;ORIGIN\r
+       PUSHJ   P,SYM1X         ;PUT IN DSK FILE ALSO\r
+       POP     P,W>\r
+       CAMG    W,COMSAV        ;CHECK COMMON SIZE\r
+IFE REENT,<JRST        LIB3            ;COMMON OK>\r
+IFN REENT,<JRST [TRNE F,SEGFL  ;LOAD LOW IN HI-SEG\r
+               PUSHJ P,FAKEHI  ;YES\r
+               JRST    LIB3]>\r
+       SKIPA   C,COMM\r
+ILC:   MOVE    C,1(A)          ;NAME\r
+       PUSH    P,C             ;SAVE COMMON NAME\r
+       ERROR   ,</ILL. COMMON !/>\r
+       POP     P,C\r
+       PUSHJ   P,PRNAME\r
+ILC1:  SKIPN   SBRNAM\r
+       JRST    ILC2\r
+       ERROR   0,</ PROG. !/>\r
+       MOVE    C,SBRNAM        ;RECOVER SUBROUTINE NAME\r
+       PUSHJ   P,PRNAME\r
+ILC2:  ERROR   0,</ #/>\r
+       JRST    LD2\r
+\r
+NAMERR:        TLNE    F,FULLSW        ;IF NOT ENUF CORE\r
+       JRST    NAME0           ;END BLOCK IS NEVER SEEN\r
+       SETZM   DTIN            ;CLEAR WRONG FILE NAME FOR MESSAGE\r
+       ERROR   ,</NO END BLOCK !/>\r
+       JRST    ILC1\r
+\r
+\f;COMPILER TYPE - DO SPECIAL FUNCTION FOR IT\r
+\r
+CMPLER:\r
+       JFCL                    ; 0 UNKNOWN\r
+       PUSHJ   P,F40NAM        ; 1 FORTRAN (F40)\r
+       TRO     N,COBFL!VFLG    ; 2 COBOL\r
+       PUSHJ   P,ALGNAM        ; 3 ALGOL-60\r
+       TRO     N,NELFL         ; 4 NELIAC\r
+       TRO     N,PL1FL         ; 5 PL/1\r
+       TRO     N,BLIFL         ; 6 BLISS-10\r
+       TRO     N,SAIFL         ; 7 SAIL\r
+       PUSHJ   P,FORNAM        ;10 FORTRAN-10\r
+                               ;11 MACRO\r
+                               ;12 FAIL\r
+CMPLEN==.-CMPLER\r
+\r
+\r
+\r
+F40NAM:        TRNE    N,FORFL         ;CANNOT MIX OLD & NEW\r
+       JRST    F40ERR\r
+       TRO     N,F4FL!VFLG     ;SET FLAGS\r
+IFE ALGSW,<ALGNAM:;PUT LABEL ON A POPJ>\r
+       POPJ    P,\r
+\r
+FORNAM:        TRNE    N,F4FL          ;CANNOT MIX OLD & NEW\r
+       JRST    F40ERR\r
+       TRO     N,FORFL!VFLG\r
+IFN FORSW,<SKIPG FORLIB                ;IF NOT SET FOR FOROTS\r
+       AOS     FORLIB          ;DO SO>\r
+       HLLZ    V,V             ;SEE IF ANY CPU BITS\r
+       ROT     V,6             ;PUT IN BITS 30-35\r
+       CAILE   V,2             ;ONLY 0, 1, 2 VALID\r
+       SETZ    V,              ;DEFAULT\r
+       PUSHJ   P,@[EXP CPOPJ,FORNMA,FORNMI](V)\r
+IFN REENT,<SKIPL       VSW             ;USER DOES N'T WANT REENT OTS?\r
+       TRNE    F,NOHI!SEGFL!SEENHI     ;USER SET SEGMENT OR HI CODE SEEN?\r
+       POPJ    P,>             ;YES\r
+       TRO     F,NOHI          ;DEFAULT IS ONE SEG\r
+       TRO     N,F10TFL        ;BUT ONLY FOR THIS FILE\r
+IFN FORSW,<HRRZM F,FORLIB>     ;SET FOROTS BY DEFAULT (FORLIB .GT. 0)\r
+       POPJ    P,\r
+\r
+FORNMI:        TRNE    N,KA10FL        ;CANNOT MIX KA & KI\r
+       JRST    FORERR\r
+       TRO     N,KI10FL        ;SET FLAGS\r
+       POPJ    P,\r
+\r
+FORNMA:        TRNE    N,KA10FL        ;CANNOT MIX KA & KI\r
+       JRST    FORERR\r
+       TLO     N,KA10FL\r
+       POPJ    P,\r
+\r
+F40ERR:        ERROR   ,</CANNOT MIX F40 AND FORTRAN-10 COMPILED CODE@/>\r
+FORERR:        ERROR   ,</CANNOT MIX KA10 AND KI10 FORTRAN-10 COMPILED CODE@/>\r
+\r
+IFN ALGSW,<\r
+ALGNAM:        TRO     N,ALGFL!VFLG    ;SET ALGOL SEEN, AND DEFAULT REENT OPSYS\r
+       JUMPE   W,CPOPJ         ;NOT ALGOL MAIN PROGRAM\r
+IFN NAMESW,<\r
+       PUSH    P,C             ;SAVE NAME\r
+       MOVE    W,C             ;EXPECTS NAME IN W\r
+       PUSHJ   P,LDNAM         ;USE THIS A PROGRAM NAME\r
+       POP     P,C             ;RESTORE C>\r
+       SETZ    W,              ;CLEAR COMMON SIZE, ONLY A MARKER\r
+       POPJ    P,              ;RETURN\r
+>\r
+\fSUBTTL        STARTING ADDRESS (BLOCK TYPE 7)\r
+\r
+\r
+START: PUSHJ   P,PRWORD        ;READ TWO DATA WORDS\r
+       TLNN    N,ISAFLG        ;SKIP IF IGNORE SA FLAG ON\r
+       HRRZM   C,STADDR        ;SET STARTING ADDRESS\r
+IFN NAMESW,<\r
+       MOVE    W,DTIN          ;PICK UP BINARY FILE NAME\r
+       TLNN N,ISAFLG\r
+       MOVEM   W,PRGNAM        ;SAVE IT\r
+       MOVE    W,NAMPTR        ;GET NAME POINTER\r
+       MOVE    W,1(W)          ;SET UP NAME OF THIS PROGRAM\r
+IFE ALGSW,<TLNN        N,ISAFLG        ;DONT SET NAME IF IGNORING SA'S>\r
+IFN ALGSW,<TDNN        N,[ISAFLG,,ALGFL]       ;OR ALGOL LOADING>\r
+       PUSHJ   P,LDNAM>\r
+       PUSHJ   P,PRWORD        ;**OBSCURE RETURN TO LOAD1**\r
+\r
+IFN REENT,<\r
+RESTRX:        TLNE F,HIPROG\r
+       SKIPA X,HIGHX\r
+       MOVE X,LOWX\r
+       POPJ P,>\r
+\r\fSUBTTL       ONE PASS LOCAL DEFINITION (BLOCK TYPE 10)\r
+\r
+                               ;PMP PATCH FOR LEFT HALF FIXUPS\r
+IFN FAILSW!B11SW!WFWSW,<\r
+LOCDLH:        IFN L,<CAMGE V,RINITL\r
+       POPJ P,>\r
+IFN REENT,<CAMGE V,HVAL1\r
+       SKIPA X,LOWX\r
+       MOVE X,HIGHX>\r
+IFN MONLOD,<PUSHJ P,DICHK>\r
+       HLRZ T,@X       ;LOAD NEXT ADDRESS IN CHAIN\r
+       HRLM W,@X       ;INSERT VALUE INTO PROGRAM\r
+       MOVE V,T\r
+LOCDLF:        JUMPN V,LOCDLH  ;JUMP IF NOT LAST ADDR. IN CHAIN\r
+       POPJ    P,>\r
+IFN FAILSW,<\r
+LOCDLI:        PUSHJ   P,LOCDLF\r
+IFN REENT,<PUSHJ P,RESTRX>\r
+       AOSA LFTHSW     ;TURN OFF LEFT HALF FIX SW (WAS -1) AND SKIP\r
+LOCDLG:        SETOM LFTHSW    ;TURN ON LEFT HALF FIX SW>\r
+                       ;END PMP PATCH\r
+LOCD:  PUSHJ     P,RWORD               ;READ ONE DATA WORD\r
+       HLRZ    V,W             ;STORAGE POINTER IN LEFT HALF\r
+IFN FAILSW,<\r
+       SKIPE LFTHSW    ;LEFT HALF CHAINED? PMP\r
+       JRST LOCDLI     ;YES PMP\r
+       CAMN W,[-1]     ;LEFT HALF NEXT? PMP\r
+       JRST LOCDLG     ;YES, SET SWITCH PMP>\r
+       PUSHJ     P,SYM4A               ;LINK BACK REFERENCES\r
+IFN REENT,<PUSHJ P,RESTRX>\r
+       JRST    LOCD\r
+\r\fSUBTTL       LVAR FIX-UP (BLOCK TYPE 13)\r
+IFN WFWSW,<\r
+LVARB: PUSHJ P,PRWORD  ;THE FIRST TWO WORDS IN THE BLOCK\r
+       MOVEM W,VARLNG  ;AR SPECIAL. SECOND IS LENGTH OF VARIABLES\r
+IFN REENT,<    TLNE F,HIPROG\r
+               MOVE C,LOWR     ;USE LOW RELOC IF LOADING HI SEG>\r
+               ;ELSE C HAS RELOC FOR THIS PROGRAM, USE IT\r
+       HRRZM C,VARREL  ;THIS IS LOCATION 0 OF VARIABLE AREA\r
+LVLP:  PUSHJ P,PRWORD  ;THINGS COME IN PAIRS\r
+       TLNE C,200000   ;BIT ON IF SYMBOL TABLE FIXUP\r
+       JRST LVSYM\r
+       HLRZ V,W        ;NO GET LOC FROM LEFTH HALF OF SECOND\r
+       ADD W,VARREL    ;AND RELOCATE VARIABLE\r
+       TLNE C,400000   ;ON FOR LEFT HALF\r
+       JRST    [PUSHJ P,LOCDLF ;TAKE CARE OF IT\r
+IFN REENT,<    JRST LVLCOM]    ;RESET X>\r
+IFE REENT,<    JRST LVLP]      ;MUST BE LOW SEG X OK>\r
+       PUSHJ P,SYM4A   ;RIGHT HALF CHAIN\r
+IFN REENT,<LVLCOM:     PUSHJ P,RESTRX>\r
+       JRST LVLP\r
+LVSYM: MOVE V,B        ;GET SYMBOL TABLE POINTER\r
+       ADD C,VARREL    ;VALUE IS IN FIRST WORD FOR THESE\r
+       TLZ W,740000    ;MAKE SURE NO BITS ON\r
+       ADDI V,2        ;CORRECT POINTER TO SYMBOL TABLE\r
+SRSYM: MOVE A,-1(V)    ;GET A NAME\r
+       TLZN A,740000   ;CHECK FOR PROGRAM NAME\r
+       JRST LVLP       ;LEAVE (PROBABLY A NON-LOADED LOCAL)\r
+       CAMN A,W        ;IS IT THE RIGHT ONE??\r
+       JRST LVSYMD     ;YES\r
+       ADD V,SE3       ;CHECK NEXT ONE\r
+       JUMPL V,SRSYM   ;BUT ONLY IF SOME ARE THERE\r
+       JRST LVLP       ;GIVE UP\r
+LVSYMD:        TLNE C,400000   ;WHICH HALF??\r
+       JRST LVSYML     ;LEFT\r
+       ADD C,(V)       ;ADDITIVE FIXUP\r
+       HRRM C,(V)\r
+       MOVSI D,200000  ;DEFERED BITS\r
+LVSM1: PUSHJ P,COMSFX  ;GO TAKE CARE OF IT\r
+       JRST LVLP       ;NEXT PLEASE\r
+LVSYML:        HRLZS C\r
+       ADDM C,(V)      ;WE DON'T HAVE TO WORRY ABOUT OVERFLOW HERE\r
+       MOVSI D,400000  ;LEFT DEFERED BITS\r
+       JRST LVSM1      ;GO WORRY ABOUT DEFERED INTERNALS>\r
+\r\fSUBTTL       FAIL LOADER\r
+;ONLY LIST IF POLISH FIXUPS REQUIRED\r
+       XLIST\r
+IFN FAILSW!B11SW,<LIST>\r
+REPEAT 0,<IF POLISH FIXUPS CONTAIN GLOBAL REQUESTS WHICH\r
+CAN NOT BE SATISFIED WHEN THEY ARE SEEN, THEY MUST BE\r
+SAVED UNTIL THESE GLOBAL SYMBOLS BECOME DEFINED.\r
+THE POLISH FIXUP IS SAVED IN THE UNDEFINED TABLE (POINTED\r
+TO BY S). THE FIXUP IS SAVED IN TWO WORD BLOCKS THE FIRST\r
+WORD OF WHICH (THE ONE WHICH WOULD NORMALL CONTAIN THE SYMBOL)\r
+HAS SPECIAL BITS ON SO IT WILL NOT BE FOUND BY A SEARCH FOR\r
+A GLOBAL REQUEST. SINCE THE UNDEFINED TABLE MAY BE\r
+SHUFFELED INTO A RANDOM ORDER, IT IS NOT POSSIBLE TO KEEP\r
+ALL OF A POLISH FIXUP TOGETHER OR TO HAVE POINTERS IN\r
+THE USUAL SENCE FROM ONE TWO WORD BLOCK TO ANOTHER.\r
+SUFFICIENT INFORMATION IS THEREFORE GIVEN TO DETERMINE\r
+WHAT THE FIRST WORD OF THE NEXT DESIRED BLOCK IS AND THIS\r
+BLOCK IS FOUND BY SEARCHING THE UNDEFINED TABLE FOR A MATCH.\r
+EACH POLISH FIXUP WHICH IS ENTERED INTO THE UNDEFINED\r
+TABLE IS GIVEN A UNIQUE NUMBER CALLED THE "HEAD NUMBER".\r
+EACH ELEMENT OF THE FIXUP (EITHER OPERAND OR OPERATOR)\r
+IS ASSIGNED A NUMBER CALLED THE "OP NUMBER". THUS\r
+THE OP NUMBER AND HEAD NUMBER TOGETHER DETERMINE\r
+A SPECIFIC ELEMENT OF A SPECIFIC FIXUP. EACH ELEMENT\r
+(TWO WORD BLOCK) IS ARRANGED AS FOLLOWS:\r
+WORD 1:\r
+       BITS 0-4  THESE ARE THE USUAL CODE BITS OF A RADIX50\r
+               SYMBOL AND CONTAIN 44 TO DISTINGUISH\r
+               AN ELEMENT OF A POLISH FIXUP FROM OTHER\r
+               SYMBOLS IN THE UNDEFINED TABLE\r
+       BITS 5-17 THE HEAD NUMBER OF THIS FIXUP\r
+       BITS 18-30 THE OP NUMBER OF THIS ELEMENT\r
+       BITS 31-35 THE OPERAND FOR THIS ELEMENT \r
+               OPERAND 2 INDICATES A WORD OF DATA\r
+WORD 2:\r
+       IF THE OPERAND IS 2 THIS WORD CONTAINS THE DATA\r
+\r
+       IF THIS IS NOT A DATA OPERATOR THEN THE LEFT AND\r
+       RIGHT HALVES OF THIS WORD POINT TO THE TWO OPERANDS\r
+       THE CONTENTS OF THE HALF WORD IS THE RIGHT HALF\r
+       OF THE FIRST WORD OF THE BLOCK POINTED\r
+       TO. THUS THE LEFT HALF OF THE FIRST WORD COMBINED\r
+       WITH ONE OF THESE HALF WORDS IS THE FIRST WORD\r
+       OF THE BLOCK POINTED TO AND CAN BE FOUND BY SEARCHING\r
+\r
+\fEACH FIXUP ALSO HAS A HEADER BLOCK. THIS BLOCK CONTAINS THE\r
+FOLLOWING INFORMATION:\r
+WORD 1:\r
+       BITS 0-17 0\r
+       BITS 18-21  44 \r
+       BITS 22-35 THE HEAD NUMBER OF THIS FIXUP\r
+\r
+WORD 2:\r
+       BITS 0-17 A COUNT OF THE NUMBER OF UNDEFINED\r
+               GLOBALS REMAINING IN THIS FIXUP\r
+       BITS 18-35 A HALF WORD POINTER OF THE\r
+               SAME TYPE FOUND IN OTHER ELEMENTS POINTING\r
+               TO THE FIRST ELEMENT OF POLISH\r
+               WHICH WILL BE THE STORE OPERATOR\r
+\r
+THE REQUESTS FOR THE GLOBAL SYMBOLS NEEDED BY THE FIXUP ARE\r
+ENTERED AS FOLLOWS:\r
+\r
+WORD 1:\r
+       BITS 0-4  04\r
+       BITS 5-35  RADIX 50 FOR THE NAME OF THE SYMBOL\r
+(NOTE THIS IS JUST A STANDARD GLOBAL REQUEST)\r
+\r
+WORD 2:\r
+       BITS 0-4 44 (THIS IDENTIFIES IT AS "ADITIVE TYPE"\r
+               AND BIT 4 INDICATES POLISH)\r
+       BITS 5-17 THE HEAD NUMBER OF THE FIXUP\r
+               (THIS GIVES ENOUGH INFORMATION TO FIND THE HEADER\r
+               BLOCK AND UPDATE THE COUNT WHEN THE REQUEST IS\r
+               SATISFIED)\r
+       BITS 18-35  A HALF WORD POINTER TO THE ELEMENT OF THE\r
+               FIXUP INTO WHICH THE VALUE OF\r
+               THE SYMBOL SHOULD BE STORED\r
+>\r
+\r\fIFN FAILSW!B11SW,<\r
+;POLISH FIXUPS <BLOCK TYPE 11>\r
+\r
+PDLOV: SKIPE POLSW     ;PDL OV ARE WE DOING POLISH?\r
+       JRST COMPOL     ;YES\r
+       ERROR ,</PUSHDOWN OVERFLOW#/>\r
+       JRST LD2\r
+COMPOL:        ERROR ,</POLISH TOO COMPLEX#/>\r
+       JRST LD2\r
+\r
+\r
+;READ A HALF WORD AT A TIME\r
+\r
+RDHLF: TLON N,HSW      ;WHICH HALF\r
+       JRST NORD\r
+       PUSHJ P,RWORD   ;GET A NEW ONE\r
+       TLZ N,HSW       ;SET TO READ OTEHR HALF\r
+       MOVEM W,SVHWD   ;SAVE IT\r
+       HLRZS W         ;GET LEFT HALF\r
+       POPJ P,         ;AND RETURN\r
+NORD:  HRRZ W,SVHWD    ;GET RIGHT HALF\r
+       POPJ P,         ;AND RETURN\r
+\r
+\r
+POLFIX:        MOVE D,[IOWD PPDL,PPDB] ;SET UP THE POLISH PUSHDOWN LIST\r
+       MOVEI V,100     ;IN CASE OF ON OPERATORS\r
+       MOVEM V,SVSAT\r
+       SETOM POLSW     ;WE ARE DOING POLISH\r
+       TLO N,HSW       ;FIX TO READ A WORD THE FIRST TIME\r
+       SETOM GLBCNT    ;NUMBER OF GLOBALS IN THIS FIXUP\r
+       SETOM OPNUM     ;NUMBER OF OPERANDS AND OPERATORS THIS FIXUP\r
+       PUSH D,[15]     ;FAKE OPERATOR SO STORE WILL NOT HACK\r
+\r
+RPOL:  PUSHJ P,RDHLF   ;GET A HLAF WORD\r
+       TRNE W,400000   ;IS IT A STORE OP?\r
+       JRST STOROP     ;YES, DO IT\r
+IFN WFWSW,<CAIN W,15\r
+       JRST    [PUSHJ P,RDHLF  ;THIS TRICK FOR VARIABLES\r
+               ADD W,VARREL    ;HOPE SOMEONE HAS DONE\r
+               HRRZ C,W        ;A BLOCK TYPE 13\r
+               JRST HLFOP]>\r
+       CAIGE W,3       ;0,1,2 ARE OPERANDS\r
+       JRST OPND\r
+       CAILE W,14      ;14 IS HIGHEST OPERATOR\r
+       JRST LOAD4A     ;ILL FORMAT\r
+       PUSH D,W        ;SAVE OPERATOR IN STACK\r
+       MOVE V,DESTB-3(W)       ;GET NUMBER OF OPERANDS NEEDED\r
+       MOVEM V,SVSAT   ;ALSO SAVE IT\r
+       JRST RPOL       ;BACK FOR MORE\r
+\r
+\r\f;HANDLE OPERANDS. THIS GETS COMPLICATED BECAUSE OF THE PRESENCE OF\r
+;GLOBAL REQUESTS\r
+\r
+OPND:  MOVE A,W        ;GET THE OPERAND TYPE HERE\r
+       PUSHJ P,RDHLF   ;THIS IS AT LEAST PART OF THE OPERAND\r
+       MOVE C,W        ;GET IT INTO C\r
+       JUMPE A,HLFOP   ;0 IS HALF-WORD OPERAND\r
+       PUSHJ P,RDHLF   ;NEED FULL WORD, GET SECOND HALF\r
+       HRL C,W ;GET HALF IN RIGHT PLACE\r
+       MOVSS C         ;WELL ALMOST RIGHT\r
+       SOJE A,HLFOP    ;1 IS FULL WORD, 2 IS GLOBAL REQUEST\r
+       PUSHJ P,SDEF    ;SEE IF IT IS ALREADY DEFINED\r
+       JRST    [MOVE C,2(A)    ;YES, WE WIN\r
+               JRST HLFOP]\r
+       AOSN GLBCNT     ;NO, INCREMENT NUMBER OF GLOBALS THIS FIXUP\r
+       AOS HEADNM      ;INCREMENT FIXUP NUMBER IF FIRST GLOBAL\r
+       AOS W,OPNUM     ;GET AN OPERAND NUMBER\r
+       LSH W,5         ;SPACE FOR TYPE\r
+       IORI W,2        ;TYPE 2 IS GLOBAL \r
+       HRL W,HEADNM    ;GET FIXUP NUMBER\r
+       PUSHJ P,SYM3X2  ;AND PUT INTO UDEFINED AREA ALONG WITH NAME\r
+       MOVE C,W        ;ALSO PUT THAT PART OF THE FIXUP IN\r
+       PUSHJ P,SYM3X2\r
+       SKIPA A,[400000]        ;SET UP GLOBAL FLAG\r
+HLFOP: MOVEI A,0       ;VALUE OPERAND FLAG\r
+HLFOP1:        SOJL V,CSAT     ;ENOUGH OPERANDS SEEN?\r
+       PUSH D,C        ;NO, SAVE VALUE(OR GLOBAL NAME)\r
+       HRLI A,400000   ;PUT IN A VALUE MARKER\r
+       PUSH D,A        ;TO THE STACK\r
+       JRST RPOL       ;GET MORE POLISH\r
+\r
+\r\f;HAVE ENOUGH OPERANDS FOR THE CURRENT OPERATOR\r
+\r
+CSAT:  HRRZS A         ;KEEP ONLY THE GLOBAL-VALUE HALF\r
+       SKIPN SVSAT     ;IS IT UNARY\r
+       JRST UNOP       ;YES, NO NEED TO GET 2ND OPERAND\r
+       HRL A,(D)       ;GET GLOBAL VALUE MARKER FOR 2ND OP\r
+       POP D,W\r
+       POP D,W         ;VALUE OR GLOBAL NAME\r
+UNOP:  POP D,V         ;OPERATOR\r
+       JUMPN A,GLOB    ;IF EITHER IS A GLOBAL HANDLE SPECIALLY\r
+       XCT OPTAB-3(V)  ;IF BOTH VALUES JUST XCT\r
+       MOVE C,W        ;GET THE CURRENT VALUE\r
+SETSAT:        SKIPG V,(D)     ;IS THERE A VALUE IN THE STACK\r
+       MOVE V,-2(D)    ;YES, THIS MUST BE THE OPERATOR\r
+       MOVE V,DESTB-3(V)       ;GET NUMBER OF OPERANDS NEEDED\r
+       MOVEM V,SVSAT   ;SAVE IT HERE\r
+       SKIPG (D)       ;WAS THERE AN OPERAND\r
+       SUBI V,1        ;HAVE 1 OPERAND ALREADY\r
+       JRST HLFOP1     ;GO SEE WHAT WE SHOULD DO NOW\r
+\r
+;HANDLE GLOBALS\r
+GLOB:  TRNE A,-1       ;IS IT IN RIGHT HALF\r
+       JRST TLHG       ;NO, NEED TO PUT THIS VALUE INTO THE FIXUP LIST\r
+       PUSH P,W        ;SAVE FOR A WHILE\r
+       MOVE W,C        ;THE VALUE\r
+       AOS C,OPNUM     ;GET AN OPERAND NUMBER\r
+       LSH C,5         ;AND PUT IN TYPE\r
+       IORI C,2        ;VALUE TYPE\r
+       HRL C,HEADNM    ;THE FIXUP NUMBER\r
+       PUSHJ P,SYM3X2\r
+       POP P,W         ;RETRIEVE THE OTHER VALUE\r
+TLHG:  SKIPE SVSAT     ;WAS THIS A UNARY OPERATOR\r
+       TLNE A,-1       ;WAS THERE A GLOBAL IN LEFT HALF\r
+       JRST GLSET\r
+       PUSH P,C        ;SAVE THE FIRST OPERAND\r
+       AOS C,OPNUM     ;SEE ABOVE\r
+       LSH C,5\r
+       IORI C,2\r
+       HRL C,HEADNM\r
+       PUSHJ P,SYM3X2\r
+       MOVE W,C\r
+       POP P,C\r
+\r
+GLSET: EXCH C,W        ;GET THEM IN THE OTHER ORDER\r
+       HRL W,C         ;SET UP THE OPERATOR LINK\r
+       AOS C,OPNUM\r
+       LSH C,5 ;SPACE FOR THYPE\r
+       IOR C,V         ;THE OPERATOR\r
+       HRL C,HEADNM\r
+       PUSHJ P,SYM3X2  ;INTO THE UNDEF LIST\r
+               MOVEI A,400000  ;SET UP AS A GLOBAL VALUE\r
+       JRST SETSAT     ;AND SET UP FOR NEXT OPERATOR\r
+\r\f;FINALLY WE GET TO STORE THIS MESS\r
+\r
+STOROP:        MOVE T,-2(D)    ;THIS SHOULD BE THE FAKE OPERATOR\r
+       CAIE T,15       ;IS IT\r
+       JRST LOAD4A     ;NO, ILL FORMAT\r
+       HRRZ T,(D)      ;GET THE VALUE TYPE\r
+       JUMPN T,GLSTR   ;AND TREAT GLOBALS SPECIAL\r
+       MOVE A,W        ;THE TYPE OF STORE OPERATOR\r
+       CAIGE A,-3\r
+       PUSHJ P,FSYMT\r
+       PUSHJ P,RDHLF   ;GET THE ADDRESS\r
+       MOVE V,W        ;SET UP FOR FIXUPS\r
+       POP D,W         ;GET THE VALUE\r
+       POP D,W         ;AFTER IGNORING THE FLAG\r
+       PUSHJ P,@STRTAB+6(A)    ;CALL THE CORRECT FIXUP ROUTINE\r
+COMSTR:        SETZM POLSW     ;ALL DONE WITH POLISH\r
+IFN REENT,<PUSHJ P,RESTRX>\r
+       MOVE T,OPNUM    ;CHECK ON SIZES\r
+       MOVE V,HEADNM\r
+       CAIG V,477777\r
+       CAILE T,17777\r
+       JRST COMPOL     ;TOO BIG, GIVE ERROR\r
+       PUSHJ P,RWORD   ;THIS SHOULD GET US OUT (I.E RUN OUT COUNT)\r
+       JRST LOAD4A     ;IF NOT, SOMETHING IS WRONG\r
+\r
+STRTAB:        EXP ALSYM,LFSYM,RHSYM,ALSTR,LOCDLF,SYM4A,FAKESY\r
+\r
+GLSTR: MOVE A,W\r
+       CAIGE A,-3\r
+       PUSHJ P,FSYMT\r
+       PUSHJ P,RDHLF   ;GET THE STORE LOCATION\r
+       MOVEI A,23(A)\r
+       POP D,V         ;GET VALUE\r
+       POP D,V\r
+       HRLM V,W        ;SET UP STORAGE ELEMENT\r
+       AOS C,OPNUM\r
+       LSH C,5\r
+       IOR C,A\r
+       HRL C,HEADNM\r
+       PUSHJ P,SYM3X2\r
+       MOVE W,C        ;NOW SET UP THE HEADER\r
+       AOS V,GLBCNT    ;WHICH HAS NUMBER OF GLOBALS\r
+       HRLM V,W\r
+       HRRZ C,HEADNM\r
+       PUSHJ P,SYM3X2\r
+       JRST COMSTR     ;AND FINISH\r
+\r
+\r\fALSTR1:      IFN L,<CAMGE V,RINITL\r
+       POPJ P,>\r
+IFN REENT,<CAMGE V,HVAL1\r
+               SKIPA X,LOWX\r
+       MOVE X,HIGHX>\r
+IFN MONLOD,<PUSHJ P,DICHK>\r
+       HRRZ T,@X\r
+       MOVEM W,@X      ;FULL WORD FIXUPS\r
+       MOVE V,T\r
+ALSTR: JUMPN V,ALSTR1\r
+       POPJ P,\r
+DESTB: EXP 1,1,1,1,1,1,1,1,0,0,100\r
+\r
+OPTAB: ADD W,C\r
+       SUB W,C\r
+       IMUL W,C\r
+       IDIV W,C\r
+       AND W,C\r
+       IOR W,C\r
+       LSH W,(C)\r
+       XOR W,C\r
+       SETCM W,C\r
+       MOVN W,C\r
+       REPEAT 7,<JRST STRSAT>\r
+\r
+\r
+FSYMT: PUSHJ P,RDHLF   ;FIRST HALF OF SYMBOL\r
+       HRL V,W\r
+       PUSHJ P,RDHLF\r
+       HRR V,W\r
+       PUSH D,A        ;SAVE STORE TYPE\r
+       PUSHJ P,RDHLF   ;GET BLOCK NAME\r
+       HRL C,W\r
+       PUSHJ P,RDHLF\r
+       HRR C,W\r
+       TLO C,140000    ;MAKE BLOCK NAME\r
+       PUSHJ P,SDEF    ;FIND IT\r
+       CAMN A,B\r
+       JRST FNOLOC     ;MUST NOT BE LOADING LOCALS\r
+FSLP:  LDB C,[POINT 32,-1(A),35]       ;GET NAME\r
+       CAMN C,V\r
+       JRST FNDSYM\r
+       SUB A,SE3\r
+       CAME A,B        ;ALL DONE?\r
+       JRST FSLP       ;NO\r
+FNOLOC:        POP D,A\r
+       MOVEI A,0       ;SET FOR A FAKE FIXUP\r
+       AOS (P)\r
+       POPJ P,\r
+FNDSYM:        MOVEI W,(A)     ;LOC OF SYMBOL\r
+       SUB W,HISTRT\r
+       POP D,A\r
+       AOS (P)\r
+       POPJ P,\r
+\r
+LFSYM: ADD V,HISTRT\r
+       HRLM W,(V)\r
+       MOVSI D,400000  ;LEFT HALF\r
+       JRST COMSFX\r
+RHSYM: ADD V,HISTRT\r
+       HRRM W,(V)\r
+       MOVSI D,200000\r
+       JRST COMSFX\r
+FAKESY:        POPJ P,         ;IGNORE\r
+\r\fPOLSAT:      PUSH P,C        ;SAVE SYMBOL\r
+       MOVE C,V        ;POINTER\r
+       PUSHJ P,SREQ    ;GO FIND IT\r
+       SKIPA\r
+       JRST LOAD4A     ;SOMETHING IS ROTTEN IN DENMARK\r
+       MOVEM W,2(A)    ;STORE VALUE\r
+       HLRZS C         ;NOW FIND HEADER\r
+       PUSHJ P,SREQ\r
+       SKIPA\r
+       JRST LOAD4A\r
+       HRLZI V,-1      ;AND DECREMENT COUNT\r
+       ADDB V,2(A)\r
+       TLNN V,-1       ;IS IT NOW 0\r
+       JRST PALSAT     ;YES, GO DO POLISH\r
+       POP P,C         ;RESTORE SYMBOL\r
+       JRST SYM2W1     ;AND RETURN\r
+\r
+PALSAT:        PUSH P,W        ;SAVE VALUE\r
+       MOVEM C,HDSAV   ;SAVE THE HEADER NUMBER\r
+       MOVE D,[IOWD PPDL,PPDB] ;SET UP A PDL\r
+       MOVE C,V        ;GET THE POINTER\r
+               HRL C,HDSAV     ;AND THE FIXUP NUMBER\r
+       PUSHJ P,REMSYM  ;REMOVE THE HEADER FORM EXISTANCE\r
+       PUSHJ P,SREQ    ;GO FINE THE NEXT LINK\r
+       SKIPA\r
+       JRST LOAD4A     ;LOSE\r
+       ANDI C,37       ;GET OPERATOR TYPE\r
+       HRRZ V,2(A)     ;PLACE TO STORE\r
+       PUSH D,V\r
+       PUSH D,[XWD 400000,0]\r
+       PUSH D,C        ;THIS HAD BETTER BE A STORE OR WE ARE IN TROUBLE\r
+       HLRZ C,2(A)     ;GET POINTER TO POLISH CHAIN\r
+PSAT1: PUSHJ P,REMSYM  ;REMOVE SYMBOL\r
+\r
+\r\fPSAT2:       HRL C,HDSAV     ;GET FIXUP NUMBER\r
+       PUSHJ P,SREQ    ;LOOK FOR IT\r
+       SKIPA\r
+       JRST LOAD4A\r
+       ANDI C,37       ;THE OPERATOR NUMBER\r
+       CAIN C,2        ;IS IT AN OPERAND?\r
+       JRST PSOPD      ;YES, GO PROCESS\r
+       PUSH D,C        ;YES STORE IT\r
+       SKIPN DESTB-3(C)        ;IS IT UNARY\r
+       JRST PSUNOP     ;YES\r
+       HLRZ C,2(A)     ;GET FIRST OPERAND\r
+       HRLI C,600000   ;AND MARK AS VALUE\r
+       PUSH D,C\r
+PSUNOP:        HRRZ C,2(A)     ;OTHER OPERAND\r
+       JRST PSAT1      ;AND AWAY WE GO\r
+\r
+PSOPD: MOVE C,2(A)     ;THIS IS A VALUE\r
+       PUSHJ P,REMSYM  ;GET RID OF THAT PART OF THE CHAIN\r
+PSOPD1:        SKIPG V,(D)     ;IS THERE A VALUE IN THE STACK\r
+       JRST PSOPD2     ;YES, TAKE GOOD CARE OF IT\r
+COMOP: POP D,V         ;NO, GET THAT OPERATOR OUT OF THERE\r
+       XCT OPTAB-3(V)  ;AND DO IT\r
+       MOVE C,W        ;GET RESULT IN RIGHT PLACE\r
+       JRST PSOPD1     ;AND TRY FOR MORE\r
+PSOPD2:        TLNE V,200000   ;IS IT A POINTER\r
+       JRST DBLOP      ;YES, NEEDS MORE WORK\r
+       MOVE W,C        ;NO, ONE WE HAVE IS FIRST OPND, GET IT INTO W\r
+       POP D,C         ;VALUE POINTER\r
+       POP D,C         ;2ND OPERAND INTO C\r
+       JRST COMOP      ;GO PROCESS OPERATOR\r
+\r
+DBLOP: EXCH C,(D)      ;PUT VALUE IN STACK AND RETRIEV POINTER\r
+       PUSH D,[XWD 400000,0]   ;MARK AS VALUE\r
+       JRST PSAT2      ;AND GO LOOK FOR MORE TROUBLE\r
+\r
+\fIFN FAILSW,<\r
+;BLOCK TYPE 12 LINK\r
+LINK:  PUSHJ P,PRWORD  ;GET TWO WORDS\r
+       JUMPLE C,ENDLNK ;THIS IS AN END OF LINK WORD\r
+       CAILE C,20      ;IS IT IN RANGE?\r
+       JRST LOAD4A\r
+       HRRZ V,W        ;GET THE ADDRESS\r
+IFN REENT,<\r
+       CAMGE   V,HVAL1         ;CHECK HISEG ADDRESS\r
+       SKIPA   X,LOWX          ;LOW SEGMENT\r
+       MOVE    X,HIGHX         ;HIGH SEGMENT BASE\r
+>;IF REENT\r
+IFN MONLOD,<PUSHJ P,DICHK>\r
+       HRRZ W,LINKTB(C)        ;GET CURRENT LINK\r
+IFN L,<        CAML V,RINITL   ;LOSE>\r
+       HRRM W,@X       ;PUT INTO CORE\r
+       HRRM V,LINKTB(C)        ;SAVE LINK FOR NEXT ONE\r
+IFN REENT,<\r
+       PUSHJ   P,RESTRX        ;RESTORE X\r
+>;IF REENT\r
+       JRST LINK       ;GO BACK FOR MORE\r
+ENDLNK:        MOVNS C         ;GET ENTRY NUMBER\r
+       JUMPE C,LOAD4A  ;0 IS A LOSER\r
+       CAILE C,20      ;CHECK RANGE\r
+       JRST LOAD4A\r
+       HRLM W,LINKTB(C)        ;SAVE END OF LINK INFO\r
+       JRST LINK       ;MORE\r
+\r
+>      ;END OF IFN FAILSW\r
+\r\fSTRSAT:      MOVE W,C        ;GET VALUE TO STORE IN W\r
+       MOVE C,V        ;GET OPERATOR HERE\r
+       POP D,V\r
+       POP D,V         ;GET ADDRESS TO STORE\r
+       PUSHJ P,@STRTAB-15(C)\r
+IFN REENT,<PUSHJ P,RESTRX>\r
+       POP P,W ;RESTORE THINGS\r
+       POP P,C\r
+       JRST SYM2W1\r
+\r
+ALSYM: ADD V,HISTRT\r
+       MOVEM W,(V)\r
+       MOVSI D,600000\r
+>\r
+       LIST            ;END OF FAILSW CODE\r
+IFN FAILSW!B11SW!WFWSW,<\r
+COMSFX:        IFN REENT,<PUSHJ P,SYMFX1\r
+       JRST RESTRX>\r
+IFE REENT,<JRST SYMFX1>>\r
+\r
+\fSUBTTL LIBRARY INDEX (BLOCK TYPE 14)\r
+\r
+       COMMENT *       DIRECT ACCESS LIBRARY SEARCH MODE\r
+       INDEX WRITTEN BY FUDGE2.SEE DIDAL DOC (100-540-001-00)\r
+       DESIGN AND CODING BY D.M.NIXON  JUL-AUG 1970\r
+       *\r
+\r
+IFN DIDAL,<\r
+\r
+INDEX8:        POP     P,LSTBLK        ;SET UP LSTBLK FOR NEXT PROG\r
+       PUSHJ   P,WORD          ;READ FIRST WORD\r
+       HLRZ    A,W             ;BLOCK TYPE ONLY\r
+       CAIE    A,14            ;IS IT AN INDEX?\r
+       JRST    INDEXE          ;NO, ERROR\r
+       JRST    INDEX9          ;DON'T SET FLAG AGAIN\r
+\r
+INDEX0:        TRO     F,XFLG          ;SIGNAL INDEX IN CORE\r
+       MOVEI   A,1             ;START ON BLOCK 1 (DSK)\r
+       HRROM   A,LSTBLK        ;BUT INDICATE AN INDEX\r
+       MOVE    A,ILD1          ;INPUT DEVICE\r
+       DEVCHR  A,\r
+       TLNE    A,DTABIT        ;IS IT A DTA?\r
+       TRO     F,DTAFLG        ;YES\r
+INDEX9:        MOVEI   A,AUX+2         ;AUX BUFFER\r
+       HRLI    A,4400          ;MAKE BYTE POINTER\r
+       MOVEM   A,ABUF1         ;AND SAVE IT\r
+       HRL     A,BUFR1         ;INPUT BUFFER\r
+       BLT     A,AUX+201       ;STORE BLOCK\r
+       TRO     F,LSTLOD        ;AND FAKE LAST PROG READ\r
+INDEX1:        ILDB    T,ABUF1\r
+       JUMPL   T,INDEX3        ;END OF BLOCK IF NEGATIVE\r
+       HRRZS   T               ;WORD COUNT ONLY\r
+INDEX2:        ILDB    C,ABUF1         ;GET NEXT SYMBOL\r
+       TLO     C,040000        ;\r
+       PUSHJ   P,SREQ          ;SEARCH FOR IT\r
+       SOJA    T,INDEX4        ;REQUEST MATCHES\r
+       SOJG    T,INDEX2        ;KEEP TRYING\r
+       ILDB    T,ABUF1         ;GET POINTER WORD\r
+       TRZN    F,LSTLOD        ;WAS LAST PROG LOADED?\r
+       JRST    INDEX1          ;NO\r
+       TRNN    F,DTAFLG        ;ALWAYS SAVE IF DTA???\r
+       SKIPL   LSTBLK          ;SKIP IF LAST BLOCK WAS AN INDEX\r
+       MOVEM   T,LSTBLK        ;SAVE POINTER FOR CALCULATIONS\r
+       JRST    INDEX1          ;GET NEXT PROG\r
+\fINDEX4:       ADDM    T,ABUF1\r
+       ILDB    A,ABUF1\r
+       PUSH    P,A             ;SAVE THIS BLOCK\r
+       TROE    F,LSTLOD        ;DID WE LOAD LAST  PROG?\r
+       JRST    [SKIPGE LSTBLK  ;WAS LAST BLOCK AN INDEX?\r
+               JRST    NXTBLK  ;YES, SO GET NEXT ONE\r
+               MOVEM   A,LSTBLK\r
+               JRST    LOAD1]  ;NEXT PROG IS ADJACENT\r
+       HRRZ    T,LSTBLK        ;GET LAST BLOCK NUMBER\r
+       CAIN    T,(A)           ;IN THIS BLOCK?\r
+       JRST    THSBLK          ;YES\r
+NXTNDX:        TRNE    F,DTAFLG        ;DIFFERENT TEST FOR DTA\r
+       JRST    NXTDTA          ;CHECK IF NEXT BUFFER IN CORE\r
+       CAIN    T,-1(A)         ;NEXT BLOCK?\r
+       JRST    NXTBLK          ;YES,JUST DO INPUT\r
+INDEX5:        USETI   1,(A)           ;SET ON BLOCK\r
+       WAIT    1,              ;LET I/O FINISH\r
+       MOVSI   C,(1B0)         ;CLEAR RING USE BIT IF ON\r
+       HRRZ    T,BUFR\r
+       IORM    C,BUFR          ;SET UNUSED RING BIT (HELP OUT MONITOR)\r
+       SKIPL   (T)\r
+       JRST    NXTBLK          ;ALL DONE NOW\r
+       ANDCAM  C,(T)           ;CLEAR USE BIT\r
+       HRRZ    T,(T)           ;GET NEXT BUFFER\r
+       JRST    .-4             ;LOOP\r
+\r
+NXTDTA:        WAIT    1,              ;LET I/O RUN TO COMPLETION\r
+       HRRZ    T,BUFR          ;GET POINTER TO CURRENT BUFFER\r
+       HLRZ    T,1(T)          ;FIRST DATA WORD IS LINK\r
+       CAIE    T,(A)           ;IS IT BLOCK WE WANT?\r
+       JRST    INDEX5          ;NO\r
+NXTBLK:        IN      1,\r
+       JRST    NEWBLK          ;IT IS NOW\r
+       JRST    WORD3           ;EOF OR ERROR\r
+\r
+NEWBLK:        MOVE    A,(P)           ;GET CURRENT BLOCK\r
+       JUMPL   A,INDEX8        ;JUST READ AN INDEX\r
+       HLRZS   A               ;GET WORD COUNT\r
+       JRST    INDEX6          ;WORD COUNT WILL BE CORRECT\r
+\r
+\fTHSBLK:       SUB     A,LSTBLK        ;GET WORD DIFFERENCE\r
+       MOVSS   A               ;INTO RIGHT HALF\r
+INDEX6:        ADDM    A,BUFR1\r
+       MOVNS   A\r
+       ADDM    A,BUFR2\r
+INDEX7:        POP     P,LSTBLK        ;STORE THIS AS LAST BLOCK READ\r
+       JRST    LOAD1\r
+\r
+INDEX3:        HRRE    A,T             ;GET BLOCK # OF NEXT INDEX\r
+       JUMPL   A,EOF           ;FINISHED IF -1\r
+       PUSH    P,T             ;STACK THIS BLOCK\r
+       HRRZ    T,LSTBLK        ;GET LAST BLOCK\r
+       JRST    NXTNDX          ;CHECK IF NEXT BUFFER IN CORE\r
+\r
+INDEX: PUSHJ   P,WORD2         ;READ FIRST WORD OF NEXT BUFFER\r
+INDEXE:        TRZE    F,XFLG          ;INDEX IN CORE?\r
+       TTCALL  3,[ASCIZ /LIBRARY INDEX INCONSISTENT - CONTINUING\r
+/]                             ;WARNING MESSAGE\r
+       JRST    LOAD1A+1        ;AND CONTINUE\r
+>\r
+\r
+IFE DIDAL,<INDEX0:\r
+INDEX: PUSHJ   P,WORD2         ;READ FIRST WORD OF NEXT BUFFER\r
+       JRST    LOAD1A+1>\r
+\r
+\fSUBTTL        ALGOL OWN BLOCK (TYPE 15)\r
+\r
+IFN ALGSW,<\r
+ALGBLK:        SKIPE   OWNLNG          ;FIRST TIME THIS PROG?\r
+       JRST    ALGB1           ;NO, JUST CHAINED SYMBOL INFO\r
+       PUSHJ P,RWORD           ;READ 3RD WORD\r
+IFN REENT,<TLNE        F,HIPROG        ;LOADING INTO HIGH SEGMENT?\r
+       EXCH    X,LOWX  ;YES, BUT OWN AREAS ARE IN LOW SEG>\r
+       HLRZ    V,W             ;GET START OF OWN BLOCK\r
+IFN REENT,<TLNE        F,HIPROG        ;LOADING INTO HIGH SEGMENT?\r
+       HRRZ    V,LOWR          ;YES, BUT PUT OWN AREAS IN LOW SEG>\r
+       MOVEI   C,(W)           ;GET LENGTH OF OWN BLOCK\r
+       MOVEM   C,OWNLNG        ;SAVE IT TO FIX RELOC AT END\r
+       PUSHJ   P,ALGB2         ;FIX AND CHECK PROG BREAK\r
+       MOVEI   W,(V)           ;GET CURRENT OWN ADDRESS\r
+       EXCH    W,%OWN          ;SAVE FOR NEXT TIME\r
+       MOVEM   W,@X            ;STORE LAST OWN ADDRESS IN LEFT HALF\r
+       HRLM    C,@X            ;LENGTH IN LEFT HALF\r
+IFN REENT,<TLNE        F,HIPROG        ;HI-SEG?\r
+       EXCH    X,LOWX          ;YES, RESTORE X TO POINT TO HIGH SEG>\r
+ALGB1: PUSHJ   P,RWORD         ;GET DATA WORD\r
+       HLRZ    V,W             ;GET ADDRESS TO FIX UP\r
+       ADD     W,%OWN          ;ADD IN ADDRESS OF OWN BLOCK\r
+       PUSHJ   P,SYM4A         ;FIX UP CHAINED REQUEST\r
+       JRST    ALGB1           ;LOOP TIL DONE\r
+\r
+ALGB2: ADDI    H,(W)           ;FIX PROG BREAK\r
+IFN REENT,<CAML        H,HILOW\r
+       MOVEM   H,HILOW         ;HIGHEST LOW CODE LOADED>\r
+       CAILE   H,1(S)          ;SKIP IF SUFFICIENT CORE AVAILABLE\r
+IFN EXPAND,<JRST [PUSHJ P,XPAND>\r
+               JRST    FULLC\r
+IFN EXPAND,<   JRST    .+1]>\r
+       POPJ    P,\r
+\r
+\r
+>\r
+\fSUBTTL        SAIL BLOCK TYPES 16 AND 17\r
+\r
+COMMENT * BLOCK TYPE 16 AND 17. SIXBIT FOR  FIL,PPN,DEV\r
+IN THE BLOCK. SEARCH TABLE FOR ALREADY REQUESTED. IF NOT\r
+ENTER REQUEST. ORIGINAL CODE BY DCS REWRITTEN BY WFW*\r
+\r
+IFN SAILSW,<\r
+LDPRG: MOVEI D,PRGFLS-1        ;SET UP SOMETHING WE CAN SEARCH WITH\r
+       MOVE W,PRGPNT   ;AND CURRENT POINTER\r
+       PUSHJ P,LDSAV   ;GO ENTER (WILL NOT RETURN IF RUNS OUT)\r
+       MOVEM D,PRGPNT\r
+       JRST LDPRG      ;BACK FOR MORE\r
+LDLIB: MOVEI D,LIBFLS-1\r
+       MOVE W,LIBPNT\r
+       PUSHJ P,LDSAV\r
+       MOVEM D,LIBPNT\r
+       JRST LDLIB      ;LOOKS JUST LIKE THE LAST ONE, DOESN'T IT\r
+\r
+LDSAV: HRLI D,-RELLEN-1        ;GET AOBJN SET UP\r
+       MOVEM W,LODPN2# ;SAV IT\r
+       PUSHJ P,PRWORD  ;GET FILE,PPN\r
+       MOVE A,W        ;SAVE ONE\r
+       PUSHJ P,RWORD   ;AND DEVICE\r
+FILSR: CAMN D,LODPN2\r
+       JRST FENT       ;HAVE GOTTEN THERE, ENTER FILE\r
+       CAME C,PRGFIL(D)        ;CHECK FOR MATCH\r
+       JRST NOMT       ;NOT FILE\r
+       CAME A,PRGPPN(D)\r
+       JRST NOMT       ;NO PPN\r
+       CAME W,PRGDEV(D)\r
+NOMT:  AOBJN D,FILSR   ;AND NOT DEVICE SHOULD ALWAYS JUMP\r
+       MOVE D,LODPN2\r
+       POPJ P,         ;JUST RETURN CURRENT POINTER\r
+FENT:  MOVE D,LODPN2   ;ENTER IT\r
+       AOBJP D,WRONG   ;THAT IS IF NOT TOO MANY\r
+       MOVEM C,PRGFIL-1(D)     ;HAVE ALREADY INDEXED\r
+       MOVEM A,PRGPPN-1(D)     ;HENCE THE -1\r
+       MOVEM W,PRGDEV-1(D)\r
+       POPJ P,\r
+WRONG: ERROR ,</TOO MANY DEMANDED FILES#/>\r
+       JRST LD2\r
+>\r
+\fSUBTTL        COMMON ALLOCATION (BLOCK TYPE 20)\r
+\r
+COMMENT        * THIS BLOCK CONSISTS OF WORD PAIRS (SAME AS TYPE 2)\r
+       FIRST WORD IS RADIX50 04,SYMBOL\r
+       SECOND WORD IS 0,,COMMON LENGTH\r
+       COMMON NAME MUST BE GLOBAL AND UNIQUE\r
+       IF NOT ALREADY DEFINED LOADER DEFINES SYMBOL AND ALLOCATES\r
+       SPACE. IF DEFINED LOADER CHECK FOR TRYING TO INCREASE COMMON\r
+       SIZE, AND GIVES ERROR IF SO\r
+       NOTE... COMMON BLOCKS MUST COME DEFORE ANY DATA BLOCKS\r
+       IE. AFTER BLOCKS 4,6,3 BUT BEFORE 1,2,37,..5\r
+*\r
+\r
+IFN K,<COMML==LOAD4A>\r
+IFE K,<\r
+COMML: PUSHJ   P,PRWORD        ;GET WORD PAIR\r
+       TLO     C,400000        ;TURN IT INTO 44,SYMBOL (FOR FORTRAN)\r
+       TLO     N,F4SW          ;INHIBITS MATCH WITH 04,SYMBOL\r
+       PUSHJ   P,SDEF          ;SEE IF ALREADY DEFINED\r
+         JRST  COMMLD          ;YES, JUST CHECK SIZE\r
+       TLZ     N,F4SW          ;CLEAR AGAIN\r
+IFN REENT,<TLNN F,HIPROG       ;LOADING INTO HIGH SEGMENT?\r
+       JRST    .+3             ;NO\r
+       EXCH    R,LOWR          ;YES, BUT COMMON ALWAYS GOES TO LOW SEG\r
+       EXCH    X,LOWX>\r
+       HRL     W,R             ;CURRENT RELOCATION\r
+       ADDI    R,(W)           ;BUMP RELOCATION\r
+       MOVS    W,W             ;LENGTH,,START\r
+       PUSH    P,W             ;STORE COMMON VALUE\r
+       HRRZS   W               ;NORMAL SYMBOL ADDRESS\r
+       TLZ     C,400000        ;BACK TO 04,SYMBOL\r
+       PUSHJ   P,SYM1B         ;DEFINE IT\r
+       POP     P,W             ;RESTORE VALUE\r
+       TLO     C,400000        ;AND COMMON SYMBOL\r
+       PUSHJ   P,SYM1B         ;AND STORE IT ALSO\r
+IFN REENT,<TLNN F,HIPROG       ;LOADING INTO HIGH SEGMENT?\r
+       JRST    COMML           ;NO\r
+       EXCH    R,LOWR          ;YES, RESTORE RELOCATION TO HIGH\r
+       EXCH    X,LOWX>\r
+       JRST    COMML           ;GET NEXT SYMBOL\r
+\r
+COMMLD:        TLZ     N,F4SW          ;CLEAR AGAIN\r
+       HLRZ    C,2(A)          ;PICK UP DEFINITION\r
+       CAMLE   W,C             ;CHECK SIZE\r
+       JRST    ILC             ;ILLEGAL\r
+       JRST    COMML           ;TRY NEXT\r
+>\r
+\fSUBTTL        SPARSE DATA (BLOCK TYPE 21)\r
+\r
+COMMENT *\r
+       THIS BLOCK IS SIMILAR TO TYPE 1 DATA\r
+       THE DATA WORDS ARE\r
+       COUNT,,LOCATION\r
+       DATA WORDS (COUNT NUMBER OF TIMES)\r
+       COUNT,,LOCATION\r
+       DATA WORDS\r
+       ETC.\r
+\r
+*\r
+\r
+SPDATA:        PUSHJ   P,RWORD         ;READ BLOCK ORIGIN\r
+       SKIPGE  W\r
+       PUSHJ   P,PROGS         ;SYMBOLIC IF 36 BITS\r
+       HLRZ    C,W             ;GET SUB BLOCK COUNT IN C\r
+       HRRZS   W               ;CLEAR IT\r
+       HRRZ    V,C             ;AND IN V (LENGTH WE NEED)\r
+SPDTO: ADD     V,W             ;COMPUTE NEW PROG. BREAK\r
+IFN REENT,<TLNN F,HIPROG\r
+       JRST    SPDTLW  ;NOT HIGH SEGMENT\r
+SPDT3: CAMGE W,HVAL1   ;CHECK TO SEE IF IN TOP SEG\r
+       JRST LOWSPD\r
+       MOVE T,.JBREL   ;CHECK FOR OVERFLOW ON HIGH\r
+       CAIL T,@X\r
+       JRST SPDT2\r
+       PUSHJ P,HIEXP\r
+       JRST FULLC\r
+       JRST SPDT3>\r
+\r
+IFN MONLOD,<TLNN N,DISW        ;LOADING TO DISK?\r
+       JRST SPDTLW             ;NO, GO CHECK NEW BREAK\r
+       CAMG H,V                ;NEW BREAK?\r
+       MOVE H,V                ;YES, UPDATE\r
+       JRST SPDT2              ;NO NEED TO CHECK FOR ROOM>\r
+IFN REENT,<\r
+LOWSPD:        SUB V,HIGHX     ;RELOC FOR PROPER\r
+       ADD V,LOWX      ;LOADING OF LOW SEQMENT\r
+       SUB W,HIGHX\r
+       ADD W,LOWX\r
+>\r
+SPDTLW:        MOVEI T,@X\r
+       CAMG    H,T             ;COMPARE WITH PREV. PROG. BREAK\r
+       MOVE H,T\r
+       TLNE F,FULLSW\r
+       JRST FULLC      ;NO ERROR MESSAGE\r
+IFN REENT,<CAML H,HVAL1\r
+       JRST COROVL     ;WE HAVE OVERFLOWED THE LOW SEGMENT\r
+       CAMLE T,HILOW\r
+       MOVEM T,HILOW   ;HIGHEST LOW CODE LOADED INTO>\r
+       CAILE H,1(S)  ; SKIP IF SUFFICIENT CORE AVAILABLE\r
+IFN EXPAND,<JRST [PUSHJ P,XPAND>\r
+               JRST FULLC\r
+IFN REENT,<    TLNE F,HIPROG\r
+               SUBI W,2000     ;HISEG LOADING LOW SEG>\r
+IFN EXPAND,<   JRST .-1]>\r
+SPDT2: MOVE    V,W\r
+SPDT1: PUSHJ     P,RWORD               ;READ DATA WORD\r
+IFN L,<CAML V,RINITL   ;CHECK FOR BAD STORE>\r
+IFN MONLOD,<PUSHJ P,DICHK      ;MAKE SURE ADDRESS IS IN CORE>\r
+       MOVEM     W,@X          ;STORE DATA WORD IN PROG. AT LLC\r
+IFN MONLOD,<TLO N,WOSW ;SET SWITCH TO WRITE OUT BUFFER>\r
+       SOJLE   C,SPDATA        ;SUB-BLOCK RUN OUT, REFILL IT\r
+       AOJA    V,SPDT1         ;ADD ONE TO LOADER LOC. COUNTER\r
+\r
+\fSUBTTL        TENEX ASSIGNMENT (BLOCK TYPE 100)\r
+\r
+IFN TENEX,<\r
+;IMPLEMENT THE SPECIAL BLOCK 100 REQUEST FOR ASSIGNING\r
+; AND INCREMENTING OF EXTERNALS\r
+\r
+ASGSYM:        PUSHJ P,RWORD           ;GET FIRST WORD\r
+       MOVE V,W                ;SAVE SYM2\r
+       PUSHJ P,PRWORD          ;GET SECOND AND THIRD WORDS\r
+       TLO C,040000            ;MAKE INTO GLOBAL\r
+       PUSHJ P,SDEF            ;SEE IF DEFINED\r
+       JRST ASGSY1             ;OK. IT IS\r
+       PUSH P,PRQ              ;IT'S NOT, GENERATE ERROR COMMENT\r
+       PUSHJ P,PRNAME\r
+       JSP A,ERRPT7\r
+       SIXBIT /UNDEFINED ASSIGN IN #/\r
+\r
+ASGSY0:        PUSHJ P,RWORD           ;SHOULD RETURN TO LOAD1\r
+       JRST ASGSY0             ;LOOP UNTIL IT DOES\r
+\r
+ASGSY1:        ADD W,2(A)              ;INCREMENT VALUE\r
+       EXCH W,2(A)             ;SAVE NEW, GET OLD\r
+       MOVE C,V                ;GET SYM2\r
+       TLO C,040000            ;MAKE INTO GLOBAL\r
+       PUSHJ P,SYMPTQ          ;AND CONTINUE AS FOR GLOBAL DEF\r
+       JRST ASGSY0             ;AND RETURN\r
+\r>\r
+\fSUBTTL        SYMBOL TABLE SEARCH SUBROUTINES\r
+\r
+;      ENTERED WITH SYMBOL IN C\r
+;      RETURN IS WITH POINTER IN A IF MATCHING SYMBOL FOUND\r
+;      OTHERWISE, A SKIP ON RETURN OCCURS\r
+\r
+SREQ:  JUMPGE  S,CPOPJ1        ;JUMP IF NO UNDEF. SYMBOLS\r
+       SKIPA   A,S             ;LOAD REQUEST SEARCH POINTER\r
+SDEF:  MOVE    A,B             ;LOAD DEF. SYMBOL SEARCH POINTER\r
+SDEF1: CAMN    C,1(A)\r
+       POPJ    P,              ;SYMBOLS MATCH, RETURN\r
+IFE K,<        TLNE    N,F4SW          ;ARE WE IN FORTRAN?\r
+       JRST    SDEF2           ;YES,JUST TRY NEXT SYMBOL>\r
+       TLC     C,400000        ;MIGHT BE SUPPRESSED INTERNAL\r
+       CAMN    C,1(A)          ;WAS IT?\r
+       JRST    [TLC C,400000   ;BACK AS IT WAS\r
+               IORM C,1(A)     ;YES, SO ENSURE IT'S SUPPRESSED\r
+               POPJ P,]        ;EXIT WITH SYMBOL FOUND\r
+       TLC     C,400000        ;NO, TRY NEXT SYMBOL\r
+SDEF2: ADD     A,SE3\r
+       JUMPL   A,SDEF1\r
+IFE K,<        JRST    CPOPJ1          ;SYMBOL NOT FOUND SKIPS ON RETURN>\r
+IFN K,<\r
+CPOPJ1:        AOS     (P)\r
+       POPJ    P,>\r
+\r
+\fSUBTTL        RELOCATION AND BLOCK INPUT\r
+\r
+PRWORD: PUSHJ   P,RWORD                ;READ A WORD PAIR\r
+       MOVE    C,W             ;LOAD C WITH FIRST DATA WORD\r
+       TRNE    E,377777                ;TEST FOR END OF BLOCK\r
+       JRST    RWORD1          ;INPUT SECOND WORD OF PAIR\r
+       MOVEI   W,0             ;NO SECOND WORD, ASSUME ZERO\r
+       POPJ    P,\r
+\r
+RWORD: TRNN    E,377777        ;TEST FOR END OF BLOCK\r
+       JRST    LOAD1           ;RETURN TO LOAD THE NEXT BLOCK\r
+RWORD1: AOBJN   E,RWORD2       ;JUMP IF DATA WORD NEXT\r
+       PUSHJ   P,WORD          ;READ CONTROL WORD\r
+       MOVE    Q,W             ;DON'T COUNT RELOCATION WORDS\r
+       HRLI    E,-22           ;SET RELOCATION WORD BYTE COUNT\r
+RWORD2:        PUSHJ   P,WORD          ;READ INPUT WORD\r
+       JUMPGE  Q,RWORD3        ;TEST LH RELOCATION BIT\r
+       TRNN    F,TWOFL         ;POSSIBLE TWO SEGMENTS?\r
+       JRST    RWORD5          ;NO\r
+       MOVSS   W\r
+       PUSHJ   P,CHECK         ;USE CORRECT RELOCATION\r
+       HRRI    W,@R\r
+       MOVSS   W\r
+       JRST    RWORD3          ;AND TEST RIGHT HALF\r
+RWORD5:        HRLZ    T,R\r
+       ADD     W,T             ;LH RELOCATION\r
+RWORD3:        TLNN    Q,200000        ;TEST RH RELOCATION BIT\r
+       JRST    RWORD4          ;NOT RELOCATABLE\r
+       TRNE    F,TWOFL         ;POSSIBLE TWO SEGMENTS?\r
+       PUSHJ   P,CHECK         ;USE CORRECT RELOCATION\r
+       HRRI    W,@R            ;RH RELOCATION\r
+RWORD4:        LSH     Q,2\r
+       POPJ    P,\r
+\r
+CHECK: MOVE    T,HVAL1         ;START OF HISEGMENT\r
+       CAIG    T,NEGOFF(W)     ;IN HISEG?\r
+       JRST    [CAILE  W,(W)   ;IS ADDRESS BELOW HISEG START?\r
+               JRST    [MOVNS  T       ;YES\r
+                       ADDI    T,(W)   ;THEREFORE WORRY ABOUT CARRY\r
+                       HRR     W,T     ;INTO LEFT HALF\r
+                       POPJ    P,]     \r
+               SUBI    W,(T)   ;IN HISEG,  REMOVE OFSET\r
+               POPJ    P,]\r
+       HRRI    W,@LOWR         ;USE LOW SEG RELOC\r
+       JRST    CPOPJ1          ;SKIP RETURN\r
+\r\fSUBTTL       PRINT STORAGE MAP SUBROUTINE\r
+\r
+PRMAP: TRZ     F,LOCAFL        ;ASSUME LOCAL SYMBOLS SUPPRESSED\r
+       CAIE    D,1             ;IF /1M PRINT LOCAL SYMBOLS\r
+       CAMN    D,[-7]          ;TEST FOR /-1M ALSO\r
+       TRO     F,LOCAFL        ;YES,TURN ON FLAG\r
+       JUMPL   D,PRTMAP-1      ;JUMP IF /-M OR /-1M\r
+       TRO     N,ENDMAP        ;ELSE SET DEFERRED MAP FLAG\r
+       POPJ    P,\r
+\r
+       TRZ     N,ENDMAP        ;CLEAR DELAYED MAP FLAG\r
+PRTMAP:        PUSHJ   P,FSCN1         ;LOAD OTHER FILES FIRST\r
+IFN SPCHN,<TRZ N,MAPSUP        ;SET MAP NOT SUPPRESSED\r
+       SKIPE   CHNACB          ;TEST FOR SPECIAL CHAINING\r
+       TRNN    N,CHNMAP        ;TEST FOR ROOT MAP ALREADY PRINTED\r
+       JRST    PRMP0A          ; SKIP IF NO TO EITHER QUESTION\r
+       PUSHJ   P,CRLFLF        ;SPACE TWO LINE AND FORCE TTY OUTPUT\r
+       TLZ     F,FCONSW        ;SUPPRESS TTY OUTPUT\r
+       ERROR   0,</********************   !/>  ;PRINT SEPARATOR\r
+       TLO     F,FCONSW        ;FORCE TTY OUTPUT AGAIN\r
+       ERROR   0,</LINK  !/>   ;PRINT LINK NUMBER\r
+       MOVE    W,LINKNR        ;GET CURRENT LINK NUMBER\r
+       PUSHJ   P,RCNUMW        ;PRINT IT IN DECIMAL\r
+       TLZ     F,FCONSW        ;SUPPRESS TTY OUTPUT\r
+       ERROR   0,</   ********************!/>  ;PRINT SEPARATOR\r
+       PUSHJ   P,CRLF          ;PUT BLANK LINE ON MAP FILE ONLY\r
+       PUSHJ   P,CRLF          ; DITTO\r
+       TLO     F,FCONSW        ;FORCE TTY OUTPUT AGAIN\r
+       PUSHJ   P,CRLF\r
+       JRST    .+2             ;SKIP NEXT CRLF CALL\r
+PRMP0A: >\r
+       PUSHJ   P,CRLFLF        ;START NEW PAGE\r
+       HRRZ    W,R\r
+IFN REENT,<CAIG        W,.JBDA ;LOADED INTO LOW SEGMENT\r
+       JRST    NOLOW           ;DON'T PRINT IF NOTHING THERE>\r
+       PUSHJ     P,PRNUM0\r
+IFE REENT,<ERROR 7,<?IS THE PROGRAM BREAK@?>>\r
+IFN REENT,<ERROR 7,<?IS THE LOW  SEGMENT BREAK@?>\r
+       PUSHJ   P,CRLF          ;CR-LF ON ALL BUT TTY   \r
+NOLOW: MOVE    W,HVAL          ;HISEG BREAK\r
+       CAMG    W,HVAL1         ;HAS IT CHANGED\r
+       JRST    NOHIGH          ;NO HI-SEGMENT\r
+       TLO     F,FCONSW        ;FORCE OUT HI-SEG BREAK ALSO\r
+       PUSHJ   P,PRNUM0\r
+       ERROR   7,<?IS THE HIGH SEGMENT BREAK@?>\r
+       PUSHJ   P,CRLF\r
+NOHIGH:>\r
+IFN SPCHN,<SKIPE       CHNACB  ;TEST FOR SPECIAL CHAINING\r
+       TRNN    N,CHNMAP        ;TEST FOR ROOT MAP ALREADY PRINTED\r
+       JRST    .+2             ; NO TO EITHER QUESTION, FALL THRU\r
+       JRST    NOADDR          ; ELSE SKIP HEADING OUTPUT>\r
+IFE NAMESW,<   MOVE    W,DTOUT ;OUTPUT NAME >\r
+IFN NAMESW,<   SKIPN   W,DTOUT\r
+       MOVE    W,CURNAM        ;USE PROGRAM NAME>\r
+       JUMPE   W,.+3           ;DON'T PRINT IF NOT THERE\r
+       PUSHJ   P,PWORD\r
+       PUSHJ   P,SPACES        ;SOME SPACES\r
+\r
+\f;HERE TO DECODE AND PRINT VERSION NUMBER IN .JBVER\r
+;USES T,V,D,Q\r
+IFN MONLOD,<TLNE N,DISW        ;LOADING TO DISK?\r
+       MOVE    X,XRES          ;YES, SETUP X >\r
+IFE L,<\r
+       SKIPN   V,.JBVER(X)     ;GET VERSION NUMBER\r
+       JRST    NOVER           ;WASN'T ONE\r
+       ROT     V,3             ;PUT USER BITS LAST\r
+       MOVEI   T,"%"           ;TO INDICATE VERSION\r
+       PUSHJ   P,TYPE2         ;OUTPUT CHARACTER\r
+       MOVEI   Q,3             ;3 BYTES IN MAJOR FIELD\r
+       PUSHJ   P,SHFTL         ;SHIFT LEFT, SKIP 0 BYTES\r
+         JRST  .+3             ;NO MAJOR FIELD\r
+       MOVEI   D,"0"           ;CONVERT TO ASCII 0-8\r
+       PUSHJ   P,OUTVER        ;OUTPUT IT\r
+       MOVEI   Q,2             ;2 DIGITS IN MINOR FIELD\r
+       PUSHJ   P,SHFTL\r
+         JRST  .+3             ;NO MINOR FIELD\r
+       MOVEI   D,"@"           ;ALPHABETICAL\r
+       PUSHJ   P,OUTVER\r
+       MOVEI   T,"("           ;EDIT NUMBER IN PARENS\r
+       TLNN    V,-1            ;SEE IF GIVEN\r
+       JRST    NOEDIT          ;NO\r
+       PUSHJ   P,TYPE2         ;YES\r
+       MOVEI   Q,6\r
+       PUSHJ   P,SHFTL         ;LEFT JUSTIFY\r
+         JRST  .+3             ;NEVER GETS HERE\r
+       MOVEI   D,"0"           ;0-7 AGAIN\r
+       PUSHJ   P,OUTVER\r
+       MOVEI   T,")"           ;CLOSE VERSION\r
+       PUSHJ   P,TYPE2\r
+NOEDIT:        MOVEI   T,"-"           ;USER FIELD?\r
+       JUMPE   V,.+4           ;NO\r
+       PUSHJ   P,TYPE2         ;YES\r
+       MOVEI   Q,1             ;ONLY ONE DIGIT\r
+       PUSHJ   P,OUTVER        ;OUTPUT IT\r
+       PUSHJ   P,SPACES        ;SOME SPACES\r
+NOVER:>;END OF IFE L\r
+\f      ERROR   0,<?STORAGE MAP!?>\r
+       PUSHJ   P,SPACES                ;SOME SPACES\r
+       PUSH    P,N\r
+       PUSH    P,E\r
+       MOVE    N,[POINT 6,DBUF] ;INITIALIZE DATE POINTER\r
+       MSTIME  Q,              ;GET THE TIME\r
+       IDIVI   Q,^D60*^D1000\r
+       IDIVI   Q,^D60\r
+       PUSH    P,A             ;SAVE MINUTES\r
+       PUSHJ   P,OTOD1         ;STORE HOURS\r
+       POP     P,Q             ;GET MINUTES\r
+       PUSHJ   P,OTOD          ;STORE MINUTES\r
+       DATE    E,              ;GET DATE\r
+       IDIVI   E,^D31          ;GET DAY\r
+       ADDI    Q,1\r
+       PUSHJ   P,OTOD          ;STORE DAY\r
+       IDIVI   E,^D12          ;GET MONTH\r
+       ROT     Q,-1            ;DIV BY 2\r
+       HRR     A,DTAB(Q)       ;GET MNEMONIC\r
+       TLNN    Q,400000\r
+       HLR     A,DTAB(Q)       ;OTHER SIDE\r
+       HRRM    A,DBUF+1        ;STORE IT\r
+       MOVEI   Q,^D64(E)       ;GET YEAR\r
+       MOVE    N,[POINT 6,DBUF+2]\r
+       PUSHJ   P,OTOD          ;STORE IT\r
+       POP     P,E\r
+       POP     P,N\r
+       PUSHJ   P,DBUF1\r
+       PUSHJ   P,CRLF\r
+       SKIPN   STADDR          ;PRINT STARTING ADDRESS\r
+       JRST    NOADDR          ;NO ADDRESS SEEN\r
+       ERROR   0,</STARTING ADDRESS !/>\r
+       PUSHJ   P,SP1\r
+       MOVE    W,STADDR                ;GET ST. ADDR.\r
+       PUSHJ   P,PRNUM0                ;PRINT IT\r
+IFN NAMESW,<\r
+       PUSHJ   P,SP1\r
+       MOVE    W,[SIXBIT / PROG /]\r
+       PUSHJ   P,PWORD\r
+       MOVE    W,CURNAM                ;PROG NAME\r
+       PUSHJ   P,PWORD\r
+       PUSHJ   P,SP1\r
+       MOVE    W,ERRPT6                ;SIXBIT / FILE /\r
+       PUSHJ   P,PWORD\r
+       MOVE    W,PRGNAM                ;FILE NAME\r
+       PUSHJ   P,PWORD>\r
+NOADDR:        IFN REENT,<\r
+       HRRZ    A,HVAL1         ;GET INITIAL HIGH START\r
+       ADDI    A,.JBHDA        ;ADD IN OFFSET\r
+IFN SPCHN,<HRL A,BEGOV ;ASSUME NON-ROOT OVERLAY\r
+       SKIPE   CHNACB          ;TEST FOR SPECIAL CHAINING\r
+       TRNN    N,CHNMAP        ;TEST FOR ROOT-MAP PRINTED\r
+                               ;ASSUMPTION CORRECT IF YES TO BOTH\r
+                               ; SKIP NEXT INSTRUCTION IF SO >\r
+       HRLI    A,.JBDA         ;LOW START\r
+       MOVSM   A,SVBRKS        ;INITIAL BREAKS>\r
+       HLRE    A,B\r
+       MOVNS     A\r
+       ADDI    A,(B)\r
+PRMAP1: SUBI   A,2\r
+IFN REENT!L,<SKIPN C,1(A)      ;LOAD SYMBOL SKIP IF REAL SYMBOL\r
+       JRST    PRMAP4          ;IGNORE ZERO NAME(TWOSEG BREAKS)>\r
+IFE REENT!L,<MOVE C,1(A)       ;LOAD SYMBOL>\r
+       TLNN    C,300000        ;TEST FOR LOCAL SYMBOL\r
+       JRST    .+4             ;GLOBAL  (NOT LOCAL ANYWAY)\r
+       TRNN    F,LOCAFL        ;PRINT LOCAL SYMBOLS?\r
+       JRST    PRMAP4          ;IGNORE LOCAL SYMBOLS\r
+       TLC     C,040000        ;MAKE IT LOOK LIKE INTERN\r
+       TLNE    C,040000\r
+       JRST    PRMP1A\r
+IFN SPCHN,<TRZ N,MAPSUP        ;SET MAP NOT SUPPRESSED\r
+       SKIPE   CHNACB          ;TEST FOR SPECIAL CHAINING\r
+       TRNN    N,CHNMAP        ;TEST FOR ROOT MAP PRINTED\r
+       JRST    PRMP0C          ; NO TO EITHER TEST, SKIP AROUND\r
+       HRRZ    T,2(A)          ;GET STARTING ADDRESS\r
+       CAML    T,BEGOV         ;TEST FOR BELOW OVERLAY\r
+       JRST    PRMP0C          ;NO,JUMP\r
+       TRO     N,MAPSUP        ;SUPPRESS IF RE-PRINTING ROOT\r
+       JRST    PRMAP4          ; & SKIP TO NEXT SYMBOL\r
+\r
+PRMP0C:>\r
+       PUSHJ   P,CRLF\r
+       PUSHJ   P,CRLF\r
+       JRST    PRMP1B\r
+\fPRMP1A:\r
+IFN SPCHN,<TRNE        N,MAPSUP        ;TEST FOR SUPPRESSED MAP\r
+       JRST    PRMAP4          ; YES, SKIP THIS SYMBOL>\r
+       PUSHJ   P,TAB\r
+       MOVEI   T,40            ;SPACE FOR OPEN GLOBAL\r
+       TLNE    C,100000        ;LOCAL?\r
+       MOVEI   T,47            ;YES, TYPE '\r
+       TLNE    C,400000        ;HALF KILLED TO DDT?\r
+       ADDI    T,3             ;YES, TYPE # FOR GLOBAL, * FOR LOCAL\r
+       PUSHJ   P,TYPE2         ;PRINT CHARACTER\r
+PRMP1B:        PUSHJ   P,PRNAM1        ;PRINT SYMBOL AND VALUE\r
+       TLNE    C,040000\r
+       JRST    PRMAP4          ;GLOBAL SYMBOL\r
+       HLRE    C,W             ;POINTER TO NEXT PROG. NAME\r
+       HRRZS W         ;SO WE ONLY HAVE THE HALF WE WANT\r
+PRMAP7:        JUMPL C,PRMP7A\r
+IFN REENT,<SKIPN 1(B)          ;IS IT A ZERO SYMBOL\r
+       JRST    [MOVE   C,B     ;SET UP C\r
+               JRST    PRMAP2] ;AND GO\r
+       HRRZ    T,HVAL  ;GET TO OF HI PART\r
+       CAML    W,HVAL1 ;IS PROGRAM START UP THERE??\r
+       JRST    PRMAP6  ;YES\r
+       HRRZ    T,HILOW ;GET HIGHEST LOCATION LOADED IN LOW\r
+       SUBI    T,(X)   ;REMOVE OFFSET\r
+       CAIE    T,(W)   ;EQUAL IF ZERO LENGTH PROG>\r
+       HRRZ T,R        ;GET LOW, HERE ON LAST PROG\r
+       JRST PRMAP6     ;GO\r
+\r
+PRMP7A:        ADDI C,2(A)     ;POINTER TO NEXT PROGRAM NAME\r
+PRMAP2:        IFN REENT,<\r
+       SKIPE   1(C)    ;THIS IS A TWO SEG  FILE\r
+       JRST    PRMP2A  ;NO\r
+       MOVE    T,2(C)  ;GET PROG BREAKS\r
+       TLNN    T,-1            ;IF NO HIGH STUFF YET\r
+       HLL     T,SVBRKS        ;FAKE IT\r
+       SUB     T,SVBRKS        ;SUBTRACT LAST  BREAKS\r
+       HRRZ    W,T     ;LOW BREAK\r
+       PUSH    P,T     ;SAVE T\r
+       PUSHJ   P,PRNUM ;PRINT IT\r
+       POP     P,T     ;RESTORE\r
+       HLRZ    W,T     ;GET HIGH BREAK\r
+       JUMPE   W,.+3   ;SKIP IF NO HIGH CODE\r
+       PUSHJ   P,TAB   ;AND TAB\r
+       PUSHJ   P,PRNUM\r
+       MOVE    T,2(C)\r
+       CAMN    C,B             ;EQUAL IF LAST PROG\r
+       SETZ    C,              ;SIGNAL END\r
+       TLNN    T,-1\r
+       HLL     T,SVBRKS\r
+IFE TENEX,<CAMN        T,SVBRKS        ;ZERO LENGTH IF EQUAL\r
+       JRST    PRMP6A          ;SEE IF LIST ALL ON>\r
+       MOVEM   T,SVBRKS        ;SAVE FOR NEXT TIME\r
+       JRST    PRMAP3  ;AND CONTINUE\r
+PRMP2A:>\r
+       HRRZ T,(C)      ;GET ITS STARTING ADRESS\r
+PRMAP6:        SUBM    T,W             ;SUBTRACT ORIGIN TO GET LENGTH\r
+       PUSHJ     P,PRNUM               ;PRINT PROGRAM LENGTH\r
+       PUSHJ     P,CRLF\r
+PRMP6A:\r
+IFE TENEX,<TLNN        N,ALLFLG                ;SKIP IF LIST ALL MODE IS ON\r
+       TRNE    W,777777                ;SKIP IF ZERO LENGTH PROGRAM>\r
+IFN TENEX,<TLNE        N,ALLFLG                ;SKIP IF LIST ALL MODE IS ON>\r
+       JRST    PRMAP3\r
+       HLRE    C,2(A)          ;GET BACK CORRECT LOCATION IF 0 LENGTH\r
+       JUMPE   C,PRMAP5        ;JUMP IF LAST PROGRAM\r
+       ADDI    C,2(A)          ;IN CASE WE SKIPPED SOME PROGRAMS\r
+       SKIPA   A,C             ;SKIP GLOBALS, ZERO LENGTH PROG.\r
+PRMAP3:   PUSHJ     P,CRLF\r
+PRMAP4:   CAILE     A,(B)              ;TEST FOR END OF SYMBOL TABLE\r
+       JRST    PRMAP1\r
+PRMAP5:        PUSHJ   P,CRLF  ;GIVE AN XTRA CR-LF\r
+IFN SPCHN,<SKIPN CHNACB                ;TEST FOR SPECIAL CHAINING\r
+       JRST    PMS             ;NO, SKIP\r
+       TRO     N,CHNMAP        ;YES, SHOW ROOT-PHASE PRINTED\r
+       JRST    PMS4            ; & EXIT>\r
+IFN TENEX,<JRST PMS            ;GO PRINT UNDEFINED GLOBALS>\r
+\r
+\r\fSUBTTL       LIST UNDEFINED AND MULTIPLY DEFINED GLOBALS\r
+\r
+;LIST UNDEFINED GLOBALS\r
+\r
+PMSQ:\r
+IFN TENEX,<SETZM NLSTGL                ;ALLOW UNDEFINED GLOBALS TO LIST>\r
+PMS:   PUSHJ   P,FSCN1         ;LOAD FILES FIRST\r
+       JUMPGE  S,PMS4          ;JUMP IF NO UNDEFINED GLOBALS\r
+IFN TENEX,<SKIPE NLSTGL                ;HAVE UNDEF GLOBALS BEEN LISTED?\r
+       POPJ P,0                ;YES\r
+       SETOM NLSTGL    ;PREVENT IT FROM HAPPENING AGAIN>\r
+       PUSHJ   P,FCRLF         ;START THE MESSAGE\r
+       HLRE    W,S             ;COMPUTE NO. OF UNDEF. GLOBALS\r
+       MOVMS     W\r
+       LSH     W,-1            ;<LENGTH OF LIST>/2\r
+       PUSHJ   P,RCNUMW        ;PRINT AS DECIMAL NUMBER\r
+       ERROR   7,</UNDEFINED GLOBAL(S)@/>\r
+       MOVE    A,S             ;LOAD UNDEF. POINTER\r
+PMS2:  SKIPL W,1(A)\r
+       TLNN W,40000\r
+       JRST PMS2A\r
+       PUSHJ     P,FCRLF\r
+       PUSHJ     P,PRNAM0              ;PRINT SYMBOL AND POINTER\r
+PMS2A: ADD     A,SE3\r
+       JUMPL   A,PMS2\r
+       PUSHJ   P,CRLF          ;NEW LINE\r
+\r
+;LIST NUMBER OF MULTIPLY DEFINED GLOBALS\r
+\r
+PMS3:  SKIPN   W,MDG           ;ANY MULTIPLY DEFINED GLOBALS\r
+       JRST    PMS4            ;NO, EXCELSIOR\r
+       PUSHJ   P,FCRLF         ;ROOM AT THE TOP\r
+       PUSHJ   P,RCNUMW        ;NUMBER OF MULTIPLES IN DECIMAL\r
+       ERROR   7,<?MULTIPLY DEFINED GLOBAL(S)@?>\r
+PMS4:  TLNE    N,AUXSWE        ;AUXILIARY OUTPUT DEVICE?\r
+       OUTPUT  2,              ;INSURE A COMPLETE BUFFER\r
+CPOPJ: POPJ    P,              ;RETURN\r
+\r
+\fSUBTTL        ENTER FILE ON AUXILIARY OUTPUT DEVICE\r
+\r
+IAD2:\r
+IFN SYMDSW,<TRNE F,LSYMFL      ;ALREADY USING AUX DEV FOR LOCAL SYMBOLS?\r
+       POPJ    P,              ;YES, GIVE ERROR RETURN>\r
+       PUSH    P,A             ;SAVE A FOR RETURN\r
+       MOVE    A,LD5C1         ;GET AUX. DEV.\r
+       DEVCHR  A,              ;GET DEVCHR\r
+       TLNN    A,4             ;DOES IT HAVE A DIRECTORY\r
+       JRST    [SKIPN  A,DTOUT ;USE OUTPUT NAME IF GIVEN\r
+               JRST    IAD2C   ;FIND A DEFAULT\r
+               JRST    IAD2A]  ;JUST DO ENTER\r
+       MOVE    A,DTOUT         ;GET OUTPUT NAME\r
+       CAME    A,[SIXBIT /JOBDAT/] ;DON'T USE JOBDAT\r
+       JUMPN   A,IAD2A         ;USE ANYTHING NON-ZERO\r
+       MOVSI   A,(SIXBIT /DSK/) ;DEFAULT DEVICE\r
+       CAMN    A,LD5C1         ;IS IT AUX. DEV.\r
+       JRST    IAD2C           ;YES LEAVE WELL ALONE\r
+       CLOSE   2,              ;CLOSE OLD AUX. DEV.\r
+       MOVEM   A,LD5C1         ;SET IT TO DSK\r
+       OPEN    2,OPEN2         ;OPEN IT FOR DSK\r
+       JRST    IMD4            ;FAILED\r
+IAD2C: IFN NAMESW,<\r
+       SKIPN   A,CURNAM        ;USE PROG NAME>\r
+       MOVSI   A,(SIXBIT /MAP/)        ;AN UNLIKELY NAME\r
+       MOVEM   A,DTOUT         ;SO ENTER WILL NOT FAIL\r
+IAD2A:\r
+IFN SPCHN,<MOVE A,CHNOUT+1     ;GET SP CHAIN DEV.\r
+       CAMN    A,LD5C1         ;IS IT SAME AS AUX. DEV.\r
+       SKIPN   CHNACB          ;YES, ARE WE DOING SP CHAIN?\r
+       JRST    IAD2B           ;NO, PHEW!\r
+       DEVCHR  A,              ;IS IT REALLY A DSK?\r
+       TLNE    A,DSKBIT\r
+       JRST    IAD2B           ;YES, LEAVE ALONE\r
+       RELEAS  2,              ;NO, CLEAR OUT ANY RESIDUAL FILE\r
+       JRST    IMD4            ;AWAY BEFORE SOMETHING TERRIBLE HAPPENS\r
+IAD2B:>\r
+       POP     P,A             ;RECOVER A\r
+       SETZM   DTOUT+2         ;CLEAR PROTECTION (LEVEL D)\r
+       ENTER   2,DTOUT         ;WRITE FILE NAME IN DIRECTORY\r
+       JRST    IMD3            ;NO MORE DIRECTORY SPACE\r
+       AOS     (P)             ;SKIP RETURN IF SUCCESSFUL\r
+       POPJ    P,\r
+\r
+IMD3:  ERROR   ,</ERROR WRITING FILE@/>\r
+       TLZ     N,AUXSWE!AUXSWI ;CLEAR AUX DEVICE SWITCHES\r
+       JRST    LD2\r
+\r
+IMD4:  MOVE    P,PDLPT         ;RESTORE STACK\r
+       AOBJN   P,.+1           ;BUT SAVE RETURN ADDRESS\r
+       TLZ     N,AUXSWE!AUXSWI ;NO AUX.DEV.NOW\r
+       ERROR   ,</NO MAP DEVICE@/>\r
+       JRST    PRMAP5          ;CONTINUE TO LOAD\r
+\r
+\fSUBTTL MONLOD - DISK IMAGE MONITOR LOADER CODE\r
+\r
+IFN MONLOD,<\r
+\r
+DIOPEN:        PUSH    P,A             ;SAVE AC A\r
+       PUSH    P,H             ;SAVE AC H\r
+       PUSH    P,N             ;SAVE 3 ACC'S\r
+       PUSH    P,X             ;IN A BLOCK\r
+       MOVE    A,ILD1          ;GET DEVICE\r
+       MOVE    N,A             ;SPARE COPY\r
+       DEVCHR  A,              ;SEE WHAT IT IS\r
+       TLNN    A,DSKBIT        ;IS IT SOME SORT OF DSK?\r
+       SKIPA   N,DIN1          ;NO, GET THE DEFAULT DEVICE (DSK)\r
+       MOVEM   N,DIN1          ;YES, OBEY USER AND USE IT\r
+       MOVE    A,[3,,N]        ;SET UP BLOCK\r
+       DSKCHR  A,              ;WAS DSK, BUT SEE IF GENERIC "DSK"\r
+         JRST  USEDSK          ;NO POINT GOING THROUGH WITH THIS\r
+       TLNE    A,(7B17)        ;IS IT GENERIC DSK?\r
+       JRST    USEDSK          ;NO USE WHATS IN DIN1\r
+       SETOB   N,H             ;REQUEST FIRST F/S\r
+       MOVE    A,[3,,N]        ;SET UP A AGAIN\r
+       JOBSTR  A,              ;GET FIRST F/S IN SEARCH LIST\r
+         JRST  USEDSK          ;LEVEL C\r
+       JUMPL   H,USEDSK        ;SWP BIT SET\r
+       TLNN    H,200000        ;IS NO CREATE BIT SET?\r
+       JRST    USEDSK          ;NO, GENERIC 'DSK' WILL USE THIS F/S\r
+       DSKCHR  A,              ;GET FIRST 3 ARGS\r
+         JRST  USEDSK          ;SHOULD NEVER HAPPEN BUT !!\r
+       TLNN    A,740200        ;RHB!OFL!HWP!SWP!NNA SET?\r
+       CAIGE   X,DALLOC        ;ENOUGH SPACE?\r
+       JRST    USEDSK          ;CANNOT USE FASTEST F/S\r
+       MOVEM   N,DIN1          ;USE F/S RATHER THAN 'DSK'\r
+       MOVEM   N,GENERI        ;SAVE F/S INCASE ENTER FAILS\r
+USEDSK:        POP     P,X             ;RESTORE ACC'S\r
+       POP     P,N\r
+       MOVE    H,(P)           ;RESET H\r
+USDSK2:        OPEN    4,OPEN4         ;OPEN DEVICE 'DSK', MODE 16\r
+       HALT    .-1             ;ERROR, NON-INTELIGENT INDICATION\r
+       MOVEM   W,DIOUT1+1      ;STORE EXTENSION 'XPN'\r
+       MOVE    A,DTIN          ;GET FILE NAME\r
+       MOVEM   A,DIOUT1        ;STORE IN 'LOOKUP-ENTER' BLOCK\r
+       SETZM   DIOUT1+2        ;CLEAR PARAMETERS TO BE SUPPLIED BY MONITOR\r
+       SETZM   DIOUT1+3        ;ALWAYS USE THIS JOB'S PROJ-PROG NUMBER\r
+       SETZM   DIOUT+1         ;SAME AGAIN\r
+       MOVE    A,[17,,11]      ;STATES WORD\r
+       GETTAB  A,              ;GET IT\r
+         JRST  .+3             ;FAILED, NOT LEVEL D FOR SURE\r
+       TLNE    A,(7B9)         ;TEST FOR LEVEL D\r
+       TDZA    A,A             ;YES, THIS IS LEVEL D\r
+       MOVEI   A,2             ;NOT LEVEL D\r
+       ENTER   4,DIOUT(A)      ;CREATE OR SUPERCEDE SAVE FILE\r
+         JRST  ENTFAI          ;ERROR, TRY DSK\r
+       JUMPE   A,LEVELD        ;JUMP IF LEVEL D\r
+       HRRZ    A,.JBREL        ;GET CURRENT SIZE\r
+       CAIL    A,2000          ;NEED AT LEAST 2K\r
+       CAILE   H,-2000(S)      ;CHECK FOR 1K FREE\r
+IFN EXPAND,<JRST [PUSHJ        P,XPAND ;GET 1K OF ZEROS, WILL SAVE TIME LATER IN ANYCASE>\r
+               JRST    FULLC   ;NO MORE CORE\r
+IFN EXPAND,<   JRST    .-1]>   ;OK, TRY AGAIN\r
+       MOVSI   A,-2000         ;FORM IOWD\r
+       HRRI    A,(H)           ;TO 1K OF BLANK\r
+       MOVEM   A,LOLIST        ;STORE IOWD\r
+       SETZM   LOLIST+1        ;TERMINATE LIST\r
+       MOVEI   A,DALLOC/10     ;PREALLOCATE THE HARD WAY\r
+       OUTPUT  4,LOLIST        ;BY DOING OUTPUTS\r
+       SOJG    A,.-1\r
+       MOVEI   A,2             ;STILL NOT LEVEL D\r
+LEVELD:        CLOSE   4,4             ;WIPE OUT THE OLD FILE IF ONE EXISTS\r
+       LOOKUP  4,DIOUT(A)      ;LOOKUP FOLLOWED BY ENTER ENABLES UPDATING\r
+         HALT  .-1             ;ERROR\r
+       JUMPN   A,ALLOK         ;NOT LEVEL D\r
+       MOVE    A,DIOUT+.RBALC  ;SEE WHAT WE GOT\r
+       SKIPE   GENERI          ;IF NOT GENERIC DSK FIRST F/S\r
+       CAIL    A,DALLOC        ;WAS IT ENOUGH\r
+       TDZA    A,A             ;YES, BUT STILL LEVEL D\r
+       JRST    TRYAGN          ;NO JUST USE DSK\r
+ALLOK: ENTER   4,DIOUT(A)      ;FILE CAN BE BOTH READ AND WRITTEN\r
+       HALT    .-1             ;ERROR\r
+       MOVE    A,H             ;GET HIGHEST ADDRESS LOADED SO FAR\r
+       SUBI    A,-177(X)       ;SIZE OF LOW BUFFER MUST BE AN\r
+       ANDI    A,777600        ;INTEGRAL MULTIPLE OF BLOCK SIZE\r
+       MOVEM   A,HIRES         ;SET UP POINTER FOR LOCATION CHECKING\r
+       ADDI    A,(X)           ;GET ADDRESS OF START OF IMAGE BUFFER\r
+       HRRM    A,HILIST        ;HILIST IS IOWD FOR FILE WINDOW BUFFER\r
+       SUBI    A,(X)           ;A=SIZE OF LOW IMAGE BUFFER (RESIDENT)\r
+       MOVN    A,A             ;GET MINUS BUFFER SIZE\r
+       HRLM    A,LOLIST        ;SET UP WORD COUNT IN LOW IOWD\r
+       HRRM    X,LOLIST        ;ADDRESS FIELD OF IOWD\r
+       MOVEM   X,XRES          ;SAVE OFFSET OF RESIDENT PORTION\r
+       MOVE    H,HILIST        ;GET HIGH BUFFER ADDRESS\r
+       MOVNI   A,DISIZE        ;NEGATIVE SIZE OF FILE WINDOW\r
+       HRLM    A,HILIST        ;SET UP WORD COUNT OF HIGH IOWD\r
+       MOVE    A,HIRES         ;GET HIGHEST ADDRESS IN RESIDENT PORTION+1\r
+       LSH     A,-7            ;CONVERT TO BLOCK NUMBER\r
+       MOVEM   A,RESBLK        ;STORE NUMBER OF BLOCKS IN RESIDENT PORTION\r
+       ADDI    H,DISIZE        ;H=TOP OF DISK WINDOW BUFFER\r
+       MOVEM   H,DIEND         ;LAST LOCATION IN WINDOW BUFFER+1\r
+       CAILE   H,1(S)          ;SKIP IF SUFFICIENT CORE AVAILABLE\r
+IFN EXPAND,<JRST [PUSHJ P,XPAND>\r
+                  JRST FULLC\r
+IFN EXPAND,<      JRST .-1]>\r
+       SOS     HILIST          ;IOWD POINTS TO BUFFER-1\r
+       SOS     LOLIST          ; "\r
+       SETZM   HILIST+1        ;TERMINATOR SHOULD BE ZERO\r
+       SETZM   LOLIST+1        ;     "\r
+       TLO     N,DISW          ;SET DISK IMAGE IN USE FLAG\r
+       PUSH    P,V             ;SAVE CURRENT LOADER LOCATION COUNTER\r
+       MOVE    V,HIRES         ;GET FIRST ADDRESS NOT IN RESIDENT BUFFER\r
+       PUSHJ   P,DICHK2        ;CALL TO INITIALIZE THE BUFFER HANDLER\r
+       POP     P,V             ;RESTORE V\r
+       POP     P,H             ;RESTORE H\r
+       SUBI    H,(X)           ;CONVERT TO ABSOLUTE FOR DISK IMAGE LOAD\r
+       POP     P,A             ;RESTORE AC A\r
+       JRST    LD2D            ;RETURN TO CONTINUE SCAN\r
+DICHK: TLNN    N,DISW          ;ARE WE DOING A DISK IMAGE LOAD?\r
+       POPJ    P,              ;NO, ALL IS OK\r
+       HRRZ    X,V             ;LEFT HALF OF AC 'V' MAY CONTAIN FLAGS\r
+       CAMGE   X,HIRES         ;SKIP IF ADDRESS NOT IN RESIDENT PORTION\r
+       JRST    DICHK1          ;ADDRESS IN AC X IS IN RESIDENT PORTION\r
+       CAMGE   X,DILADD        ;SKIP IF ADDRESS ABOVE CORRENT LOWEST WINDOW ADDRESS\r
+       JRST    DICHK2          ;ADDRESS IS NOT RESIDENT\r
+       CAML    X,DIHADD        ;SKIP IF ADDRESS IS RESIDENT\r
+       JRST    DICHK2          ;NOT RESIDENT\r
+       SKIPA   X,XCUR          ;GET OFFSET OF CURRENT WINDOW\r
+DICHK1:        MOVE    X,XRES          ;GET OFFSET OF RESIDENT LOW PORTION\r
+       POPJ    P,\r
+\r
+DICHK2:        PUSH    P,A             ;GET ADDRESS IN AC 'V' INTO CORE\r
+       PUSH    P,Q             ;GET SOME AC'S TO WORK WITH\r
+       TLZE    N,WOSW          ;CURRENT BUFFER TO BE WRITTEN OUT?\r
+       PUSHJ   P,DICHK3        ;YES, GO DO SO\r
+       MOVE    A,HILIST        ;GET ADDRESS-1 OF DISK IMAGE BUFFER\r
+       ADDI    A,1             ;A NOW POINTS TO START OF BUFFER\r
+       SETZM   (A)             ;CLEAR THE FIRST WORD OF THE BUFFER\r
+       MOVS    Q,A             ;MOVE ADDRESS TO SOURCE FOR BLT\r
+       HRRI    Q,1(A)          ;SOURCE+1 TO DESTINATION\r
+       ADDI    A,DISIZE        ;SET A TO TOP OF BUFFER+1\r
+       BLT     Q,-1(A)         ;CLEAR THE BUFFER\r
+       HRRZ    Q,V             ;GET THE ADDRESS WE'RE LOOKING FOR\r
+       SUB     Q,HIRES         ;ACCOUNT FOR RESIDENT PART\r
+       IDIVI   Q,DISIZE        ;A=Q+1\r
+       IMULI   Q,DISIZE        ;FIRST ADDRESS IN WINDOW\r
+       IDIVI   Q,^D128         ;GET BLOCK NUMBER (-NUMBER IN RESIDENT PORTION)\r
+       ADD     Q,RESBLK        ;NUMBER OF RESIDENT BLOCKS\r
+       USETI   4,1(Q)          ;BLOCK 0 DOES NOT EXIST\r
+       STATZ   4,20000         ;END OF FILE?\r
+       JRST    DICHK4          ;YES, NO SENSE READING\r
+       INPUT   4,HILIST        ;TRY TO FILL THE DISK IMAGE BUFFER\r
+       STATZ   4,740000        ;CHECK FOR ERRORS, DON'T CARE ABOUT EOF\r
+       HALT    .-3             ;TRY AGAIN ON CONTINUE\r
+DICHK4:        MOVEM   Q,CURSET        ;LEAVE BLOCK NUMBER AROUND FOR LATER USETO\r
+       IMULI   Q,^D128         ;GET ADDRESS OF FIRST WORD IN CURRENT BUFFER\r
+       MOVEM   Q,DILADD        ;STORE FOR FUTURE COMPARES\r
+       ADDI    Q,DISIZE        ;ADD SIZE OF DISK IMAGE BUFFER\r
+       MOVEM   Q,DIHADD        ;STORE HIGH CURRENT ADDRESS+1\r
+       HRRZ    Q,HILIST        ;GET WINDOW ADDRESS-1\r
+       ADDI    Q,1             ;NOW EQUAL TO ADDRESS\r
+       SUB     Q,DILADD        ;COMPUTE LOADER CURRENT WINDOW OFFSET\r
+       HRLI    Q,V             ;SET UP INDEX REGISTER FOR STORED X\r
+       MOVEM   Q,XCUR          ;STORE CURRENT OFFSET\r
+       POP     P,Q             ;RESTORE\r
+       POP     P,A             ;RESTORE\r
+       MOVE    X,XCUR          ;SET UP LOADER OFFSET REGISTER\r
+       POPJ    P,              ;RETURN, ADDRESS IN 'V' NOW RESIDENT\r
+\r
+\fDICHK3:       MOVE    Q,CURSET        ;GET BLOCK NUMBER FOR USETO\r
+       USETO   4,1(Q)          ;THERE IS NO BLOCK 0\r
+       OUTPUT  4,HILIST        ;WRITE OUT HE IMAGE\r
+       STATZ   4,740000        ;ERROR?\r
+       HALT    .-3             ;YES, TRY AGAIN ON CONTINUE\r
+       POPJ    P,              ;RETURN\r
+\r
+SIZCHK:        EXCH    A,DIEND         ;SAVE A, GET END OF BUFFER ADDRESS\r
+       AOS     (P)             ;DEFAULT IS SKIP RETURN\r
+       CAIGE   A,(S)           ;IS SYMBOL TABLE ENCROACHING ON BUFFER?\r
+       AOS     (P)             ;NO,DON'T EXPAND CORE\r
+       EXCH    A,DIEND         ;RESTORE BOTH A AND DIEND\r
+       POPJ    P,              ;RETURN\r
+\r
+DISYM: PUSH    P,V             ;SAVE CURRENT ADDRESS\r
+       MOVE    V,A             ;GET ADDRESS WERE LOOGING FOR\r
+       PUSHJ   P,DICHK         ;MAKE SURE IT IS IN CORE\r
+       POP     P,V             ;RESTORE V\r
+       POPJ    P,              ;RETURN\r
+\r
+DIOVER:        MOVE    X,XRES          ;CLEAN UP XPN FILE AND EXIT\r
+       MOVE    A,.JBFF(X)      ;GET LAST ADDRESS LOADER\r
+       SUB     A,DILADD        ;SUBTRACT CURRENT LOW ADDRESS\r
+       ADDI    A,^D128         ;ROUND OFF TO NEAREST BLOCK SIZE\r
+       ANDI    A,777600        ;FOR IOWD\r
+       MOVNS   A               ;NEGATE\r
+       HRLM    A,HILIST        ;PUT IN WINDOW IOWD\r
+       PUSHJ   P,DICHK3        ;OUTPUT THE SYMBOL TABLE\r
+       USETO   4,1             ;SET UP TO OUTPUT RESIDENT PART\r
+       OUTPUT  4,LOLIST        ;AND DO SO\r
+       STATZ   4,740000        ;ERROR CHECK\r
+       HALT    .-3             ;IF ERROR TRY AGAIN\r
+       CLOSE   4,\r
+       EXIT\r
+\r
+TRYAGN:        PUSH    P,DIOUT1        ;SAVE NAME\r
+       SETZM   DIOUT1\r
+       RENAME  4,DIOUT(A)      ;GET RID OF FILE\r
+       POP     P,DIOUT1        ;RESTORE NAME\r
+ENTFAI:        SKIPN   GENERI          ;GENERIC DSK?\r
+       HALT    .               ;NO, JUST GIVE UP\r
+       MOVSI   A,'DSK'         ;TRY WITH JUST DSK\r
+       MOVEM   A,DIN1\r
+       SETZM   GENERI\r
+       SETZM   DIOUT+.RBALC\r
+       JRST    USDSK2          ;TRY AGAIN\r
+\r
+\r
+>\r
+\fSUBTTL        PRINT SUBROUTINES\r
+\r
+;PRINT THE 6 DIGIT OCTAL ADDRESS IN W\r
+\r
+;      ACCUMULATORS USED: D,T,V\r
+\r
+PRNAM0:   MOVE C,1(A)          ;LOAD SYMBOL\r
+PRNAM1:   MOVE W,2(A)          ;LOAD VALUE\r
+PRNAM: PUSHJ     P,PRNAME\r
+PRNUM:\r
+       TRNN    F,TTYFL\r
+       PUSHJ   P,SP1\r
+       PUSHJ   P,SP1 \r
+PRNUM0:   MOVE V,PRNUM2                ;LOAD BYTE POINTER TO RH. OF W\r
+       MOVNI     D,6           ;LOAD CHAR. COUNT\r
+PRNUM1:   ILDB T,V             ;LOAD DIGIT TO BE OUTPUT\r
+       ADDI    T,60            ;CONVERT FROM BINARY TO ASCII\r
+       PUSHJ     P,TYPE2\r
+       AOJL    D,PRNUM1                ;JUMP IF MORE DIGITS REMAIN\r
+       POPJ    P,\r
+\r
+PRNUM2:        POINT   3,W,17  ;BYTE POINTER FOR OCTAL CONVERSION OF W\r
+\r
+;HERE TO LEFT JUSTIFY V, COUNT IN IN Q\r
+       LSH     V,3             ;STEP LEFT ONE\r
+SHFTL: TLNN    V,700000        ;LEFT JUSTIFIED?\r
+       SOJGE   Q,.-2           ;NO SHIFT IF STILL IN FIELD\r
+       JUMPLE  Q,CPOPJ         ;NOTHING IN THIS FIELD\r
+       JRST    CPOPJ1          ;SKIP RTETURN, AT LEAST ONE CHAR\r
+\r
+;HERE TO OUTPUT CHARACTERS LEFT AFTER SHIFTING LEFT\r
+OUTVER:        SETZ    T,              ;CLEAR T TO REMOVE JUNK\r
+       LSHC    T,3             ;SHIFT IN FROM T\r
+       ADDI    T,(D)           ;EITHER "0" OR "A"\r
+       PUSHJ   P,TYPE2         ;PRINT\r
+       SOJG    Q,OUTVER        ;MORE?\r
+       POPJ    P,              ;NO\r
+\r\f\r
+IFN NAMESW,<\r
+LDNAM: MOVE T,[POINT 6,CURNAM] ;POINTER\r
+       SETZM   CURNAM  ;CLEAR OLD NAME INCASE FEWER CHARS. IN NEW\r
+       MOVNI D,6       ;SET COUNT\r
+       TLZ W,740000    ;REMOVE CODE BITS\r
+SETNAM:        IDIVI W,50      ;CONVERT FROM RAD 50\r
+       HRLM C,(P)\r
+       AOJGE D,.+2\r
+       PUSHJ P,SETNAM\r
+       HLRZ C,(P)\r
+       JUMPE C,INAM\r
+       ADDI C,17\r
+       CAILE C,31\r
+       ADDI C,7\r
+       CAIG C,72       ;REMOVE SPECIAL  CHARS. (. $ %)\r
+       IDPB C,T\r
+INAM:  POPJ P, >\r
+\r
+\r
+;SPECIAL ENTRY POINT WITH NUMBER IN REGISTER W, FALLS THRU TO RCNUM\r
+RCNUMW:        MOVE    Q,W             ;COPY NUMBER INTO PROPER REGISTER\r
+\r
+;YE OLDE RECURSIVE NUMBER PRINTER\r
+;PRINTS Q, WITH LEADING ZEROES SUPPRESSED; USES A AND T\r
+\r
+RCNUM: IDIVI Q,12              ;RADIX DECIMAL\r
+       ADDI A,"0"\r
+       HRLM A,(P)\r
+       JUMPE Q,.+2\r
+       PUSHJ P,RCNUM\r
+       HLRZ T,(P)\r
+       JRST TYPE2\r
+\r
+\r
+SPACES:        PUSHJ   P,SP1\r
+SP1:   PUSHJ   P,SPACE\r
+SPACE: MOVEI   T,40\r
+       JRST    TYPE2\r
+\r\f;    ACCUMULATORS USED: Q,T,D\r
+\r
+PWORD: MOVNI   Q,6             ;SET CHARACTER COUNT TO SIX\r
+PWORD1: MOVE   D,LSTPT         ;ENTER HERE WITH Q PRESET\r
+PWORD2: ILDB   T,D             ;LOAD NEXT CHAR. TO BE OUTPUT\r
+       PUSHJ     P,TYPE                ;OUTPUT CHARACTER\r
+       AOJL    Q,PWORD2\r
+       POPJ    P,\r
+\r
+\r
+;TYPEOUT SUBROUTINE - THE CHARACTER SUPPLIED IN T IS CONVERTED TO ASCII\r
+;AND IS OUTPUT ON THE CONSOLE AND/OR THE SPECIFIED LOADER MAP OUTPUT\r
+;DEVICE\r
+\r
+CRLFLF:        PUSHJ   P,CRLF\r
+FCRLF: TLO     F,FCONSW        ;INSURE TTY OUTPUT\r
+CRLF:  SETZM   TABCNT          ;RESET TAB COUNT ON NEW LINE\r
+       MOVEI   T,15            ;CARRIAGE RETURN LINE FEED\r
+       PUSHJ   P,TYPE2\r
+       TRCA    T,7             ;CR.XOR.7=LF\r
+TYPE:  MOVEI   T,40(T)         ;CONVERT SIXBIT TO ASCII\r
+TYPE2: TLNN    N,AUXSWI        ;IS THER AN AUXILIARY DEVICE?\r
+       JRST    TYPE3           ;NO, DONT OUTPUT TO IT\r
+       TLOE    N,AUXSWE        ;IS AUX. DEV. ENTERED?\r
+       JRST    TYPE2A          ; YES, SKIP\r
+       PUSHJ   P,IAD2          ;NOPE, DO SO!\r
+         JRST  TYPE3           ;ERROR RETURN\r
+TYPE2A:        SOSG    ABUF2           ;SPACE LEFT IN BUFFER?\r
+       OUTPUT  2,              ;CREATE A NEW BUFFER\r
+       IDPB    T,ABUF1         ;DEPOSIT CHARACTER\r
+       IFN RPGSW,<\r
+       TRNN    F,NOTTTY        ;IF TTY IS ANOTHER DEVICE\r
+                               ;DON'T OUTPUT TO IT>\r
+       TLNN    F,FCONSW        ;FORCE OUTPUT TO CONSOLE TOO?\r
+       POPJ    P,              ;NOPE\r
+TYPE3: SKIPN   BUFO2           ;END OF BUFFER\r
+       OUTPUT  3,              ;FORCE OUTPUT NOW\r
+       IDPB    T,BUFO1         ;DEPOSIT CHARACTER\r
+       CAIN    T,12            ;END OF LINE\r
+       OUTPUT  3,              ;FORCE AN OUTPUT\r
+       POPJ    P,\r
+\r\fSUBTTL       SYMBOL PRINT - RADIX 50\r
+\r
+;      ACCUMULATORS USED: D,T\r
+\r
+PRNAME: MOVE   T,C             ;LOAD SYMBOL\r
+       TLZ     T,740000        ;ZERO CODE BITS\r
+       CAML    T,[50*50*50*50*50]      ;SYMBOL LEFT JUSTIFIED\r
+       JRST    SPT0            ;YES\r
+       PUSH    P,T\r
+       PUSH    P,C\r
+       MOVEI   C,6\r
+       MOVEI   D,1\r
+       IDIVI   T,50\r
+       JUMPN   V,.+2\r
+       IMULI   D,50\r
+       SOJN    C,.-3\r
+       POP     P,C\r
+       POP     P,T\r
+       IMUL    T,D\r
+SPT0:  MOVNI   D,6             ;LOAD CHAR. COUNT\r
+SPT:   IDIVI   T,50            ;THE REMAINDER IS THE NEXT CHAR.\r
+       HRLM    V,(P)           ;STORE IN LH. OF PUSHDOWN LIST\r
+       AOJGE   D,.+2           ;SKIP IF NO CHARS. REMAIN\r
+       PUSHJ   P,SPT           ;RECURSIVE CALL FOR NEXT CHAR.\r
+       HLRZ    T,(P)           ;LOAD FROM LH. OF PUSHDOWN LIST\r
+       JUMPE   T,TYPE          ;BLANK\r
+       ADDI    T,60-1\r
+       CAILE   T,71\r
+       ADDI    T,101-72\r
+       CAILE   T,132\r
+       SUBI    T,134-44\r
+       CAIN    T,43\r
+       MOVEI   T,56\r
+       JRST    TYPE2\r
+\r
+TAB1:  PUSHJ   P,CRLF\r
+TAB:   AOS     T,TABCNT\r
+       CAIN    T,5\r
+       JRST    TAB1\r
+       TLNE    N,AUXSWI        ;TTY BY DEFAULT?\r
+       TRNE    F,TTYFL\r
+       JRST    SP1\r
+       MOVEI   T,11\r
+       JRST    TYPE2\r
+\r\r
+\f\r
+OTOD:  IBP     N\r
+OTOD1: IDIVI   Q,^D10\r
+       ADDI    Q,20            ;FORM SIXBIT\r
+       IDPB    Q,N\r
+       ADDI    A,20\r
+       IDPB    A,N\r
+       POPJ    P,\r
+\r
+DTAB:  SIXBIT  /JANFEB/\r
+       SIXBIT  /MARAPR/\r
+       SIXBIT  /MAYJUN/\r
+       SIXBIT  /JULAUG/\r
+       SIXBIT  /SEPOCT/\r
+       SIXBIT  /NOVDEC/\r
+\r
+\fSUBTTL        ERROR MESSAGE PRINT SUBROUTINE\r
+\r
+;      FORM OF CALL:\r
+\r
+;      JSP     A,ERRPT\r
+;      SIXBIT    /<MESSAGE>/\r
+\r
+;      ACCUMULATORS USED: T,V,C,W\r
+\r
+ERRPT: PUSHJ   P,FCRLF         ;ROOM AT THE TOP\r
+       PUSHJ   P,PRQ           ;START OFF WITH ?\r
+ERRPT0: PUSH   P,Q             ;SAVE Q\r
+       SKIPA   V,ERRPT5\r
+ERRPT1: PUSHJ   P,TYPE\r
+       ILDB    T,V\r
+       CAIN    T,'@'\r
+       JRST    ERRPT4\r
+       CAIN    T,'%'\r
+       JRST    ERRPT9\r
+       CAIN    T,'!'\r
+       JRST    ERRP42          ;JUST RETURN,LEAVE FCONSW ON\r
+       CAIE    T,'#'\r
+       JRST    ERRPT1\r
+       SKIPN   C,DTIN\r
+       JRST    ERRPT4\r
+       MOVNI   Q,14\r
+       MOVEI   W,77\r
+ERRPT2: TDNE   C,W\r
+       JRST    ERRPT3\r
+       LSH     W,6\r
+       AOJL    Q,ERRPT2\r
+ERRPT3: MOVE   W,ERRPT6\r
+       PUSHJ   P,PWORD1\r
+       SKIPN   W,DTIN1\r
+       JRST    ERRPT4\r
+       LSH     W,-6\r
+       TLO     W,160000\r
+       MOVNI   Q,4\r
+       PUSHJ   P,PWORD1\r
+ERRPT4: PUSHJ   P,CRLF\r
+ERRP41:        TLZ     F,FCONSW        ;ONE ERROR PER CONSOLE\r
+ERRP42:        POP     P,Q             ;***DMN*** FIX FOR ILC MESSAGE\r
+       AOJ     V,              ;PROGRAM BUMMERS BEWARE:\r
+       JRST    @V              ;V HAS AN INDEX OF A\r
+\r
+ERRPT5: POINT     6,0(A)\r
+ERRPT6: SIXBIT    / FILE /\r
+\r\fERRPT8:      PUSHJ   P,PRQ           ;START WITH ?\r
+       CAIGE   T,140           ;IS IT A NON-PRINTING CHAR?\r
+       CAIL    T,40\r
+       JRST    ERRP8\r
+       PUSH    P,T\r
+       MOVEI     T,136         ;UP ARROW\r
+       PUSHJ     P,TYPE2\r
+       POP     P,T\r
+       TRC     T,100           ;CONVERT TO PRINTING CHAR.\r
+ERRP8: PUSHJ     P,TYPE2\r
+ERRPT7:   PUSHJ     P,SPACE\r
+       JRST    ERRPT0\r
+\r
+ERRPT9: MOVEI   V,@V\r
+       PUSH    P,V\r
+       ERROR   7,<?ILLEGAL -LOADER@?>\r
+       POP     P,V\r
+       JRST    ERRP41\r
+\r
+;PRINT QUESTION MARK\r
+\r
+PRQ:   PUSH    P,T             ;SAVE\r
+       TLO     F,FCONSW        ;FORCE TTY OUTPUT ON ANY ERROR\r
+       MOVEI   T,"?"           ;PRINT ?\r
+       PUSHJ   P,TYPE2         ;...\r
+       POP     P,T             ;RESTORE\r
+       POPJ    P,              ;RETURN\r
+\r\fSUBTTL       INPUT - OUTPUT INTERFACE\r
+\r
+;BINARY INPUT SUBROUTINE - RETURNS A WORD IN W\r
+WORDPR:        PUSHJ   P,WORD          ;GET FIRST WORD OF PAIR\r
+       MOVE    C,W             ;KEEP IT HANDY\r
+WORD:  SOSGE   BUFR2           ;SKIP IF BUFFER NOT EMPTY\r
+       JRST    WORD2\r
+WORD1: ILDB    W,BUFR1         ;PICK UP 36 BIT WORD\r
+       POPJ    P,\r
+\r
+WORD2: IN      1,              ;GET NEXT BUFFER LOAD\r
+       JRST    WORD            ;DATA OK - CONTINUE LOADING\r
+WORD3: STATZ   1,IODEND        ;TEST FOR EOF\r
+       JRST    EOF             ;END OF FILE EXIT\r
+       ERROR   ,< /INPUT ERROR#/>\r
+       JRST    LD2             ;GO TO ERROR RETURN\r
+\r
+\r
+SE3:   XWD     2,2             ;SYMBOL POINTER INCREMENT\r
+PDLPT: IOWD    PDLSIZ,PDLST    ;INITIAL PUSHDOWN STACK\r
+COMM:  SQUOZE    0,.COMM.\r
+LSTPT: POINT   6,W             ;CHARACTER POINTER TO W\r
+\r
+IOBKTL==40000\r
+IOIMPM==400000\r
+IODERR==200000\r
+IODTER==100000\r
+IODEND==20000\r
+\r
+IOBAD==IODERR!IODTER!IOBKTL!IOIMPM\r
+\r
+\fSUBTTL        IMPURE CODE\r
+IFN PURESW,<   RELOC\r
+LOWCOD:        RELOC\r
+HICODE:\r
+       PHASE LOWCOD>\r
+\r
+\r
+DBUF1: JSP     A,ERRPT7\r
+DBUF:  SIXBIT  /TI:ME DY-MON-YR @/\r
+       POPJ    P,\r
+\r
+;DATA FOR PURE OPEN UUO'S\r
+\r
+IFN SPCHN,<\r
+CHNENT:        0\r
+       SIXBIT .CHN.\r
+       0\r
+       0\r
+CHNOUT:        EXP     16\r
+       SIXBIT /DSK/\r
+       0\r
+>\r
+IFN RPGSW,<\r
+OPEN1: EXP     1\r
+RPG1:  Z\r
+       XWD     0,CTLIN\r
+>\r
+\r
+OPEN2: EXP     1\r
+LD5C1: Z\r
+       XWD     ABUF,0\r
+\r
+OPEN3: EXP     14\r
+ILD1:  Z\r
+       XWD     0,BUFR\r
+\r
+IFN MONLOD,<\r
+OPEN4: EXP     16\r
+DIN1:  SIXBIT  /DSK/\r
+       Z\r
+>\r
+\r
+IFN PURESW,<DEPHASE\r
+CODLN==.-HICODE>\r
+\r\fSUBTTL       DATA STORAGE\r
+\r
+IFN PURESW,<   RELOC\r
+LOWCOD:        BLOCK CODLN>\r
+DATBEG:!               ;STORAGE AREA CLEARED FROM HERE ON INITIALIZATION\r
+ZBEG:!         ;CLEARED FROM HERE TO ZEND ON REINITIALIZATION\r
+MDG:   BLOCK 1                 ;COUNTER FOR MUL DEF GLOBALS\r
+IFN REENT,<HILOW:      BLOCK   1       ;HIGHEST NON-BLOCK STMT IN LOW SEG>\r
+STADDR:        BLOCK 1         ;HOLDS STARTING ADDRESS\r
+IFN KUTSW,<CORSZ:      BLOCK 1>\r
+IFN REENT,<VSW:        BLOCK   1>\r
+IFN  NAMESW,<CURNAM:   BLOCK 1>\r
+IFN B11SW,<POLSW:      BLOCK 1>\r
+IFN FAILSW,<LINKTB:    BLOCK 21>\r
+IFN SPCHN,<CHNACB:     BLOCK 1>\r
+ZEND==.-1\r
+PDSAV: BLOCK 1                 ;SAVED PUSHDOWN POINTER\r
+COMSAV: BLOCK 1                        ;LENGTH OF COMMON\r
+PDLST: BLOCK   PDLSIZ\r
+\r
+F.C:   BLOCK 1\r
+       BLOCK 1 ;STORE N HERE\r
+       BLOCK 1 ;STORE X HERE\r
+       BLOCK 1 ;STORE H HERE\r
+       BLOCK 1 ;STORE S HERE\r
+       BLOCK 1 ;STORE R HERE\r
+B.C:   BLOCK 1\r
+\r
+NAMPTR:        BLOCK   1       ;POINTER TO PROGRAM NAME\r
+IFN NAMESW,<\r
+PRGNAM:        BLOCK 1 ;STORE BINARY FILE NAME-USED TO MAKE SYSTAT MORE MEANINGFUL\r
+>\r
+IFN REENT,<\r
+HIGHX: BLOCK 1\r
+HIGHR: BLOCK 1 ;HOLD X AND R WHILE LOADING LOW SEG PIECES\r
+LOWX:  BLOCK 1\r
+HVAL:  BLOCK 1 ;ORG OF HIGH SEG>\r
+HVAL1: BLOCK 1 ;ACTUAL ORG OF HIGH SEG\r
+LOWR:  BLOCK 1 ;HOLD X AND R WHILE LOADING HISEG PIECES\r
+IFN COBSW,<LOD37.:     BLOCK 1>\r
+IFN DMNSW,<KORSP:      BLOCK 1>\r
+IFN LDAC,<BOTACS:      BLOCK 1>\r
+IFN WFWSW,<VARLNG:     BLOCK 1\r
+VARREL:        BLOCK 1>\r
+IFN SAILSW,<LIBFLS:    BLOCK   RELLEN*3\r
+PRGFLS:        BLOCK   RELLEN*3>\r
+IFN MONLOD,<\r
+HIRES: BLOCK 1 ;HIGHEST RESIDENT LOADED ADDRESS+1\r
+XRES:  BLOCK 1 ;DISPLACEMENT OF RESIDENT PORTION OF LOADED IMAGE\r
+XCUR:  BLOCK 1 ;DISPLACEMENT OF CURRENT PORTION OF LOADED IMAGE (WINDOW)\r
+DILADD:        BLOCK 1 ;LOWEST ADDRESS IN CURRENT WINDOW\r
+DIHADD:        BLOCK 1 ;HIGHEST ADDRESS IN CURRENT WINDOW+1\r
+DIEND: BLOCK 1 ;ADDRESS+1 OF TOP OF WINDOW BUFFER\r
+CURSET:        BLOCK 1 ;CURRENT USETI/USETO NUMBER\r
+RESBLK:        BLOCK 1 ;NUMBER OF BLOCKS IN RESIDENT PORTION\r
+GENERI:        BLOCK   1       ;NAME OF CURRENT F/S\r
+>\r
+IFN TENEX,<\r
+NLSTGL:        BLOCK 1 ;FLAG INHIBITS MULT. LIST OF UNDEF. GLOBALS>\r
+PT1:   BLOCK 1\r
+IFN RPGSW,<\r
+NONLOD:        BLOCK 1\r
+SVRPG: BLOCK 1\r
+IFN TEMP,<\r
+TMPFIL:        BLOCK 2\r
+TMPFLG:        BLOCK 1>\r
+>\r
+OLDDEV:        BLOCK 1         ;OLD DEVICE ON LIBRARY SEARCH\r
+LSTDEV:        BLOCK 1         ;LAST DEVICE BEFORE THIS ONE\r
+IFN PP,<\r
+PPPN:  BLOCK   1               ;PERM PPN\r
+PPN:   BLOCK   1               ;TEMP PPN\r
+PPNE:  BLOCK 1\r
+PPNV:  BLOCK 1\r
+PPNW:  BLOCK 1\r
+IFN SFDSW,<MYPPN:      BLOCK   1       ;HOLD USER'S PPN\r
+SFDADD:        BLOCK   2       ;DEVICE AND SCAN SWITCH\r
+SFD:   BLOCK   SFDSW+2         ;TEMP SFD BLOCK\r
+PSFDAD:        BLOCK   2               ;DEV AND SCAN SWITCH\r
+PSFD:  BLOCK   SFDSW+2         ;PERM SFD BLOCK>\r
+       >\r
+IFN B11SW,<\r
+GLBCNT:        BLOCK 1\r
+HDSAV: BLOCK 1\r
+HEADNM:        BLOCK 1\r
+LFTHSW:        BLOCK 1\r
+OPNUM: BLOCK 1\r
+SVHWD: BLOCK 1\r
+SVSAT: BLOCK 1\r
+PPDB:  BLOCK PPDL+1\r
+>\r
+HISTRT:        BLOCK 1 ;JOBREL AT START OF LOADING\r
+IFN L,<\r
+LSPXIT:        BLOCK 1\r
+RINITL:        BLOCK 1\r
+OLDJR: BLOCK 1>\r
+IFN SPCHN,<\r
+LINKNR:        BLOCK   1               ;CURRENT OVERLAY LINK NUMBER\r
+CHNTAB:        BLOCK 1                 ;CHAIN VECTOR TABLE,, NEXT BLOCK\r
+BEGOV: BLOCK 1                 ;RELATIVE ADDRESS OF BEGINNING OF OVERLAY\r
+CHNACN:        BLOCK 1                 ;RELATIVE POINTER FOR SAVED NAMPTR\r
+>\r
+TABCNT:        BLOCK 1\r
+LIMBO: BLOCK   1       ;WHERE OLD CHARS. ARE STORED\r
+IFN DIDAL,<LSTBLK:     BLOCK   1       ;POINTER TO LAST PROG LOADED>\r
+IFN EXPAND,<ALWCOR:    BLOCK   1       ;CORE AVAILABLE TO USER>\r
+IFN ALGSW,<%OWN: BLOCK 1       ;ADDRESS OF ALGOL OWN AREA\r
+       OWNLNG: BLOCK   1       ;LENGTH OF OWN BLOCK>\r
+IFN REENT,<SVBRKS:     BLOCK   1       ;XWD HIGH,LOW (PROG BREAKS)>\r
+IFN FORSW,<FORLIB:     BLOCK   1       ;0=LIB40,1=FOROTS>\r
+\r\fSUBTTL       BUFFER HEADERS AND HEADER HEADERS\r
+\r
+BUFO:  BLOCK 1                 ;CONSOLE INPUT HEADER HEADER\r
+BUFO1: BLOCK 1\r
+BUFO2: BLOCK 1\r
+\r
+BUFI:  BLOCK 1                 ;CONSOLE OUTPUT HEADER HEADER\r
+BUFI1: BLOCK 1\r
+BUFI2: BLOCK 1\r
+\r
+ABUF:  BLOCK 1                 ;AUXILIARY OUTPUT HEADER HEADER\r
+ABUF1: BLOCK 1\r
+ABUF2: BLOCK 1\r
+\r
+BUFR:  BLOCK 1                 ;BINARY INPUT HEADER HEADER\r
+BUFR1: BLOCK 1\r
+BUFR2: BLOCK 1\r
+\r
+DTIN:  BLOCK 1                 ;DECTAPE INPUT BLOCK\r
+DTIN1: BLOCK 3\r
+\r
+DTOUT: BLOCK 1                 ;DECTAPE OUTPUT BLOCK\r
+DTOUT1: BLOCK 3\r
+\r
+IFN MONLOD,<\r
+DIOUT:\r
+IFE PURESW,<EXP        .RBALC          ;DISK IMAGE INPUT/OUTPUT BLOCK>\r
+IFN PURESW,<BLOCK      1>\r
+       BLOCK 1\r
+DIOUT1:        BLOCK .RBEST-2          ;BIG WASTE OF SPACE IN ORDER TO PRE ALLOCATE SOME DISK\r
+IFE PURESW,<EXP        DALLOC          ;PRE ALLOCATE SOME BLOCKS>\r
+IFN PURESW,<BLOCK      1>      ;.RBEST\r
+       BLOCK   1               ;.RBALC\r
+>\r
+\r
+TTY1:  BLOCK   TTYL            ;TTY BUFFER AREA\r
+BUF1:  BLOCK   BUFL            ;LOAD BUFFER AREA\r
+AUX:   BLOCK   ABUFL           ;AUX BUFFER AREA\r
+\r
+IFN MONLOD,<\r
+LOLIST:        BLOCK 2                 ;IOLIST FOR LOW PART OF IMAGE\r
+HILIST:        BLOCK 2                 ;IOLIST FOR HIGH (VIRTUAL) PART OF LOADED IMAGE\r
+>\r
+\r
+IFN RPGSW,<\r
+CTLIN: BLOCK 3\r
+CTLNAM:        BLOCK 3\r
+CTLBUF:        BLOCK 203+1\r
+>\r
+\r\fSUBTTL       FORTRAN DATA STORAGE\r
+\r
+IFN STANSW,<PATCH:     BLOCK   20              ;STANFORD HAS SEMI-INFINITE CORE>\r
+SBRNAM:        BLOCK 1\r
+\r
+\rIFE K,<\r
+TOPTAB:        BLOCK 1 ;TOP OF TABLES\r
+CTAB:  BLOCK 1;        COMMON\r
+ATAB:  BLOCK 1;        ARRAYS\r
+STAB:  BLOCK 1;        SCALARS\r
+GSTAB: BLOCK 1;        GLOBAL SUBPROGS\r
+AOTAB: BLOCK 1;        OFFSET ARRAYS\r
+CCON:  BLOCK 1;        CONSTANTS\r
+PTEMP: BLOCK 1;        PERMANENT TEMPS\r
+TTEMP: BLOCK 1;        TEMPORARY TEMPS\r
+IFN SPCHN,<\r
+SAVBAS:        BLOCK   1               ;HIGHEST RELATIVE ADDRESS IN PROGRAM>\r
+COMBAS:        BLOCK 1;        BASE OF COMMON\r
+LLC:   BLOCK 1;        PROGRAM ORIGIN\r
+BITP:  BLOCK 1;        BIT POINTER\r
+BITC:  BLOCK 1;        BIT COUNT\r
+PLTP:  BLOCK 1;        PROGRAMMER LABEL TABLE\r
+MLTP:  BLOCK 1;        MADE LABEL TABLE\r
+SDS:   BLOCK 1 ;START OF DATA STATEMENTS\r
+SDSTP: BLOCK 1 ;START OF DATA STATEMENTS POINTER\r
+BLKSIZ:        BLOCK 1;        BLOCK SIZE\r
+MODIF: BLOCK 1;        ADDRESS MODIFICATION +1\r
+SVFORH:        BLOCK 1 ;SAVE H WHILE LOADING F4 PROGRAMS\r
+\r\r
+IOWDPP:        BLOCK 2\r
+CT1:   BLOCK 1         ;TEMP FOR C\r
+LTC:   BLOCK 1\r
+ITC:   BLOCK 1\r
+ENC:   BLOCK 1\r
+WCNT:  BLOCK 1         ;DATA WORD COUNT\r
+RCNT:  BLOCK 1         ;DATA REPEAT COUNT\r
+\r
+LTCTEM:        BLOCK 1         ;TEMP FOR LTC\r
+DWCT:  BLOCK 1         ;DATA WORD COUNT\r
+IFN MANTIS,<MNTSYM:    BLOCK   1       ;HOLDS MANTIS AUX SYMBOL POINTER>\r
+>\r
+\r
+\r
+       VAR     ;DUMP VARIABLES\r
+DATEND:!               ;END OF AREA CLEARED ON INITIALIZATION\r
+IFN PURESW,<RELOC>\r
+\r
+\r\fSUBTTL       REMAP UUO\r
+\r
+IFN PURESW,<HHIGO:     PHASE   BUF1    ;DON'T NEED BUF1 NOW>\r
+\r
+HIGO:  CORE    V,              ;CORE UUO\r
+         JFCL                  ;NEVER FAILS\r
+HINOGO:\r
+IFN REENT,<MOVE        D,HVAL          ;GET CURRENT HIGH SEG TOP\r
+       CAMG    D,HVAL1         ;ANYTHING LOADED IN HI-SEG\r
+       JRST    HIRET           ;NO\r
+       SUB     D,HVAL1         ;SEE HOW MUCH\r
+       TRNE    D,1777          ;JUST CROSSED A K BOUND?\r
+       JRST    HIOK            ;NO\r
+       HRRZ    V,D             ;LENGTH ONLY\r
+       ADD     V,HISTRT        ;PLUS BASE\r
+       CAMGE   V,.JBREL        ;WE MIGHT HAVE GOT 1K EXTRA\r
+       CORE    V,\r
+         JFCL\r
+HIOK:  MOVE    V,HISTRT        ;NOW REMAP THE HISEG.\r
+       REMAP   V,              ;REMAP UUO.\r
+         JRST  REMPFL          ;FATAL ERROR.>\r
+HIRET: IFN NAMESW,<\r
+IFE TENEX,<MOVE W,CURNAM       ;GET PROGRAM NAME>\r
+IFN TENEX,<SKIPA W,.+1\r
+       '(PRIV)'>\r
+       SETNAM  W,              ;SET IT FOR VERSION WATCHING>\r
+       JRST    0               ;EXECUTE CODE IN ACC'S\r
+\r
+IFN REENT,<\r
+REMPFL:        TTCALL  3,SEGMES        ;PRINT SEGMES\r
+       EXIT                    ;AND DIE\r
+SEGMES:        ASCIZ   /?REMAP FAILURE/\r
+\r
+\r
+>\r
+IFN PURESW,<HIGONE:    DEPHASE>\r
+\fSUBTTL        LISP LOADER\r
+\r
+;END HERE IF 1K LOADER REQUESTED.\r
+IFN K,<IFE L,<END BEG>\r
+\r
+IFN L,<        XLIST                   ;THE LITERALS\r
+       LIT                     ;MUST DUMP NOW SO THEY GET OUTPUT\r
+       LIST\r
+\r
+LODMAK:        MOVEI A,LODMAK\r
+       MOVEM A,137     ;SET UP TO SAVE THE LISP LOADER\r
+       INIT 17\r
+       SIXBIT /DSK/\r
+       0\r
+       HALT\r
+       ENTER LMFILE\r
+       HALT\r
+       OUTPUT LMLST\r
+       STATZ 740000\r
+       HALT\r
+       RELEASE\r
+       EXIT\r
+LMFILE:        SIXBIT /LISP/\r
+       SIXBIT /LOD/\r
+       0\r
+       0\r
+LMLST: IOWD 1,.+1              ;IOWD\r
+       IOWD LODMAK-LD+1,137    ;AND CORE IMAGE\r
+       0\r
+       END LODMAK>>\r
+\r
+\r\fSUBTTL        FORTRAN FOUR LOADER\r
+\r
+F4LD:  TLNE    F,SKIPSW!FULLSW ;ARE WE IN SKIP MODE\r
+       JRST    REJECT          ;YES,DON'T LOAD ANY OF THIS\r
+       MOVEI   W,-2(S);        GENERATE TABLES\r
+       CAIG    W,(H)           ;NEED TO EXPAND?\r
+IFN EXPAND,<PUSHJ P,[PUSHJ P,XPAND\r
+               POPJ    P,\r
+               JRST    POPJM3]>\r
+IFE EXPAND,<   TLO     F,FULLSW>\r
+       TLO     N,F4SW;         SET FORTRAN FOUR FLAG\r
+       HRRZ    V,R;            SET PROG BREAK INTO V\r
+       MOVEM   V,LLC;          SAVE FIRST WORD ADDRESS\r
+       HRRZM   W,MLTP;         MADE LABELS\r
+       HRRZM   W,PLTP;         PROGRAMMER LABELS\r
+       ADD     W,[POINT 1,1];  GENERATE BIT-BYTE POINTER\r
+       MOVEM   W,BITP\r
+       MOVEM   W,SDSTP;        FIRST DATA STATEMENT\r
+       AOS     SDSTP;\r
+       HRREI   W,-^D36;        BITS PER WORDUM\r
+       MOVEM   W,BITC;         BIT COUNT\r
+       PUSHJ   P,BITWX         ;MAKE SURE OF ENOUGH SPACE\r
+       MOVE    W,[JRST ALLOVE] ;LAST DATA STATEMENT\r
+       MOVEM   W,(S)\r
+\r
+TEXTR: PUSHJ   P,WORD;         TEXT BY DEFAULT\r
+       HLRZ    C,W\r
+       CAIN    C,-1\r
+       JRST    HEADER;         HEADER\r
+       MOVEI   C,1;            RELOCATABLE\r
+       TLNN    F,FULLSW!SKIPSW ;DON'T LOAD IF EITHER SET\r
+       PUSHJ   P,BITW;         SHOVE AND STORE\r
+       JRST    TEXTR;          LOOP FOR NEXT WORD\r
+\r
+ABS:   SOSG    BLKSIZ; MORE TO GET\r
+       JRST    TEXTR;          NOPE\r
+ABSI:  PUSHJ   P,WORD;\r
+       MOVEI   C,0;            NON-RELOCATABLE\r
+       TLNN    F,FULLSW!SKIPSW ;DON'T LOAD IF EITHER SET\r
+       PUSHJ   P,BITW;         TYPE 0\r
+       JRST    ABS\r
+\r\fSUBTTL       PROCESS TABLE ENTRIES\r
+\r
+MDLB:  TLNE    F,FULLSW+SKIPSW;        MADE LABEL PROC\r
+       JRST    GLOBDF;         NO ROOM AT THE IN\r
+       HLRZ    C,MLTP;         GET PRESENT SIZE\r
+       CAMGE   C,BLKSIZ;       IF NEW SIZE BIGGER, STR-R-RETCH\r
+       PUSHJ   P,SMLT\r
+       HRRZ    C,MLTP;         GET BASE\r
+MLPLC: ADD     C,BLKSIZ;       MAKE INDEX\r
+       TLNN    F,FULLSW+SKIPSW;        DONT LOAD\r
+       HRRZM   V,(C);          PUT AWAY DEFINITION\r
+GLOBDF:        PUSHJ   P,WORD\r
+       TLNE    F,FULLSW+SKIPSW ;SKIPPING THIS PROG?\r
+       JRST    TEXTR           ;YES, DON'T DEFINE\r
+       MOVEI   C,(V);          AND LOC\r
+       EXCH    W,C\r
+       PUSHJ   P,SYMXX;        PUT IN DDT-SYMBOL TABLE\r
+       PUSHJ   P,BITWX\r
+       JRST    TEXTR\r
+\r
+PLB:   TLNE    F,FULLSW+SKIPSW\r
+       JRST    GLOBDF\r
+       HLRZ    C,PLTP;         PRESENT SIZE\r
+       CAMGE   C,BLKSIZ\r
+       PUSHJ   P,SPLT\r
+       HRRZ    C,PLTP\r
+       JRST    MLPLC\r
+\r\fSUBTTL       STORE WORD AND SET BIT TABLE\r
+\r
+BITW:  MOVEM   W,@X;           STORE AWAY OFFSET\r
+       IDPB    C,BITP;         STORE BIT\r
+       AOSGE   BITC;           STEP BIT COUNT\r
+       AOJA    V,BITWX;        SOME MORE ROOM LEFT\r
+       HRREI   C,-^D36;        RESET COUNT\r
+       MOVEM   C,BITC\r
+       SOS     PLTP\r
+       SOS     BITP;           ALL UPDATED\r
+IFE EXPAND,<HRL        C,MLTP\r
+       SOS     MLTP\r
+       HRR     C,MLTP>\r
+IFN EXPAND,<HRRZ       C,MLTP;         TO ADDRESS\r
+       SUBI    C,1\r
+       CAIG C,(H)\r
+       PUSHJ P,[PUSHJ P,XPAND\r
+               POPJ P,\r
+               ADDI C,2000\r
+               JRST POPJM2]\r
+       SOS     MLTP\r
+       HRLI C,1(C)>\r
+       HRRZ    T,SDSTP;        GET DATA POINTER\r
+       BLT     C,-1(T);        MOVE DOWN LISTS\r
+       AOJ     V,;             STEP LOADER LOCATION\r
+BITWX: IFN REENT,<\r
+       TLNE    F,HIPROG\r
+       JRST    FORTHI>\r
+       CAIGE H,@X\r
+       MOVEI H,@X      ;KEEP H SET RIGHT FOR HISEG STUFF\r
+BITWX2:        HRRZ    T,MLTP\r
+       CAIG    T,(H);          OVERFLOW CHECK\r
+IFE EXPAND,<TLO        F,FULLSW>\r
+IFN EXPAND,<PUSHJ P,   [PUSHJ P,XPAND\r
+                       POPJ    P,\r
+                       JRST POPJM3]>\r
+       POPJ    P,;\r
+\r
+SMLT:  SUB     C,BLKSIZ;       STRETCH\r
+       MOVS    W,MLTP          ;LEFT HALF HAS OLD BASE\r
+       ADD     C,MLTP          ;RIGHT HALF HAS NEW BASE\r
+IFN EXPAND,<   HRRZS C ;GET RID OF COUNT\r
+               CAIG C,(H)\r
+               PUSHJ P,[PUSHJ P,XPAND\r
+                       POPJ P,\r
+                       ADD W,[XWD 2000,0]\r
+                       ADDI C,2000\r
+                       JRST POPJM2]>\r
+       HRRM C,MLTP             ;PUT IN NEW MLTP\r
+       HLL     C,W             ;FORM BLT POINTER\r
+       ADDI    W,(C)           ;LAST ENTRY OF MLTP\r
+       HRL     W,BLKSIZ        ;NEW SIZE OF MLTP\r
+       HLLM    W,MLTP          ;...\r
+SLTC:  BLT     C,0(W);         MOVE DOWN (UP?)\r
+       POPJ    P,;\r
+\r
+SPLT:  SUB     C,BLKSIZ\r
+       MOVS    W,MLTP;\r
+       ADDM    C,PLTP\r
+       ADD     C,MLTP\r
+IFN EXPAND,<   HRRZS C\r
+               CAIG C,(H)\r
+               PUSHJ P,[PUSHJ P,XPAND\r
+                       POPJ P,\r
+                       ADD W,[XWD 2000,0]\r
+                       ADDI C,2000\r
+                       JRST POPJM2]>\r
+       HRRM C,MLTP             ;PUT IN NEW MLTP\r
+       HLL     C,W\r
+       HLRZ    W,PLTP          ;OLD SIZE OF PL TABLE\r
+       ADD     W,PLTP          ;NEW BASE OF PL TABLE\r
+       HRL     W,BLKSIZ        ;NEW SIZE OF PL TABLE\r
+       HLLM    W,PLTP          ;INTO POINTER\r
+       JRST    SLTC\r
+\r
+\r
+IFN REENT,<\r
+FORTHI:        HRRZ T,.JBREL   ;CHECK FOR CORE OVERFLOW\r
+       CAIGE T,@X\r
+       PUSHJ   P,[PUSHJ P,HIEXP\r
+               POPJ    P,\r
+               JRST POPJM3]    ;CHECK AGAIN\r
+       JRST BITWX2>\r
+\r\fSUBTTL       PROCESS END CODE WORD\r
+\r
+ENDS:  PUSHJ   P,WORD;         GET STARTING ADDRESS\r
+       JUMPE   W,ENDS1;        NOT MAIN\r
+       ADDI    W,(R);          RELOCATION OFFSET\r
+       TLNE    N,ISAFLG;       IGNORE STARTING ADDRESS\r
+       JRST ENDS1\r
+       HRRZM   W,STADDR        ;STORE STARTING ADDRESS\r
+IFN NAMESW,<MOVE W,NAMPTR      ;GET POINTER\r
+       MOVE    W,1(W)          ;SET UP NAME\r
+       PUSHJ   P,LDNAM\r
+       MOVE W,DTIN\r
+       MOVEM W,PRGNAM>\r
+ENDS1: PUSHJ   P,WORDPR        ;DATA STORE SIZE\r
+       HRRZM   C,PTEMP         ;NUMBER OF PERMANENT TEMPS\r
+       MOVEM   V,CCON;         START OF CONSTANTS AREA\r
+       JUMPE   W,E1;           NULL\r
+       MOVEM   W,BLKSIZ        ;SAVE COUNT\r
+       MOVEI   W,0(V)          ;DEFINE CONST.\r
+       MOVE    C,CNR50         ;...\r
+       TLNN    F,SKIPSW!FULLSW\r
+       PUSHJ   P,SYMPT         ;...\r
+       PUSHJ   P,GSWD          ;STORE CONSTANT TABLE\r
+E1:    MOVEI   W,0(V);         GET LOADER LOC\r
+       EXCH    W,PTEMP;        STORE INTO PERM TEMP POINTER\r
+       ADD     W,PTEMP;        FORM TEMP TEMP ADDRESS\r
+       MOVEM   W,TTEMP;        POINTER\r
+       MOVEM   V,GSTAB;        STORE LOADER LOC IN GLOBSUB\r
+       MOVEM H,SVFORH\r
+       MOVE    C,TTR50         ;DEFINE %TEMP.\r
+       TLNE    F,SKIPSW!FULLSW\r
+       JRST    E1A\r
+       PUSHJ   P,SYMPT         ;...\r
+       MOVE    C,PTR50         ;DEFINE (IF EXTANT) TEMP.\r
+       MOVEI   W,0(V)          ;...\r
+       CAME    W,TTEMP         ;ANY PERM TEMPS?\r
+       PUSHJ   P,SYMPT         ;YES, DEFINE\r
+E1A:   PUSHJ   P,WORD;         NUMBER OF GLOBSUBS\r
+       JUMPE   W,E11\r
+       MOVEM   W,BLKSIZ        ;SIZE OF GLOBSUB\r
+       PUSHJ   P,GSWD          ;STORE GLOBSUB TABLE\r
+E11:   MOVEM   V,STAB;         SCALARS\r
+       PUSHJ   P,WORD;         HOW MANY?\r
+       JUMPE   W,E21;          NONE\r
+       PUSHJ   P,GSWDPR        ;STORE SCALAR TABLE\r
+E21:   MOVEM   V,ATAB;         ARRAY POINTER\r
+       PUSHJ   P,WORD;         COMMENTS FOR SCALARS APPLY\r
+       JUMPE   W,E31\r
+       PUSHJ   P,GSWDPR        ;STORE ARRAY TABLE\r
+E31:   MOVEM   V,AOTAB;        ARRAYS OFFSET\r
+       PUSHJ   P,WORD;         SAME COMMENTS AS ABOVE\r
+       JUMPE   W,E41\r
+       PUSHJ   P,GSWDPR        ;STORE ARRAY OFFSET TABLE\r
+E41:   PUSHJ   P,WORD;         TEMP, SCALAR, ARRAY SIZE\r
+       TLNE    F,FULLSW!SKIPSW ;SKIPPING THIS PROG?\r
+       MOVEI   W,0             ;DON'T ACCEPT GLOB SUBPROG REQUESTS\r
+       MOVEM   V,CTAB;         SETUP COMMON TABLE POINTER\r
+       ADD     W,GSTAB;        GLOBAL SUBPROG BASE\r
+       MOVEM   W,COMBAS;       START OF COMMON\r
+IFN SPCHN,<MOVEM W,SAVBAS      ;SAVE AS HIGHEST ADDRESS IN PROGRAM>\r
+       PUSHJ   P,WORD;         COMMON BLOCK SIZE\r
+       HRRZM   W,BLKSIZ\r
+       JUMPE   W,PASS2;        NO COMMON\r
+COMTOP:        PUSHJ   P,WORDPR        ;GET A COMMON PAIR\r
+       TLNE    F,SKIPSW!FULLSW ;IF SKIPPING\r
+       JRST    COMCO1          ;DON'T USE\r
+       PUSHJ   P,SDEF;         SEARCH\r
+       JRST    COMYES;         ALREADY THERE\r
+       HRLS    W\r
+       HRR     W,COMBAS;       PICK UP THIS COMMON LOC\r
+       TLNN    F,SKIPSW!FULLSW\r
+       PUSHJ   P,SYMXX;        DEFINE IT\r
+       MOVS    W,W;            SWAP HALFS\r
+       ADD     W,COMBAS;       UPDATE COMMON LOC\r
+       HRRM    W,COMBAS;       OLD BASE PLUS NEW SIZE\r
+       HLRZS   W;              RETURN ADDRESS\r
+       TLZ     C,400000\r
+       TLNN F,SKIPSW!FULLSW\r
+       PUSHJ   P,SYMXX\r
+COMCOM:        PUSHJ   P,CWSTWX        ;STORE A WORD PAIR\r
+COMCO1:        SOS     BLKSIZ\r
+       SOSLE   BLKSIZ\r
+       JRST    COMTOP\r
+       JRST    PASS2\r
+\r
+COMYES:        HLRZ    C,2(A);         PICK UP DEFINITION\r
+       CAMLE   W,C;            CHECK SIZE\r
+       JRST    ILC;            ILLEGAL COMMON\r
+       MOVE    C,1(A);         NAME\r
+       HRRZ    W,2(A); BASE\r
+       JRST    COMCOM\r
+\r\f\r
+PRSTWX:        PUSHJ   P,WORDPR        ;GET A WORD PAIR\r
+CWSTWX:        EXCH    C,W             ;SPACE TO STORE FIRST WORD OF PAIR?\r
+       PUSHJ   P,WSTWX         ;...\r
+       EXCH    C,W             ;THERE WAS; IT'S STORED\r
+WSTWX: TLNE    F,FULLSW!SKIPSW ;SPACE FOR ANOTHER WORD?\r
+       POPJ    P,              ;NOPE, RETURN\r
+       MOVEM   W,@X            ;YES, STORE IT.\r
+       AOJA    V,BITWX         ;TELL THE TABLES ABOUT IT; THEN RETURN\r
+\r
+\r
+GSWD:  PUSHJ   P,WORD          ;GET WORD FROM TABLE\r
+       PUSHJ   P,WSTWX         ;STASH IT\r
+       SOSE    BLKSIZ          ;FINISHED?\r
+       JRST    GSWD            ;NOPE, LOOP\r
+       POPJ    P,              ;TRA 1,4\r
+\r
+GSWDPR:        MOVEM   W,BLKSIZ        ;KEEP COUNT\r
+GSWDP1:        PUSHJ   P,PRSTWX        ;GET AND STASH A PAIR\r
+       SOS     BLKSIZ          ;FINISHED?\r
+       SOSLE   BLKSIZ          ;...\r
+       JRST    GSWDP1          ;NOPE, LOOP\r
+       POPJ    P,              ;TRA 1,4\r
+\r\fSUBTTL       BEGIN HERE PASS2 TEXT PROCESSING\r
+\r
+PASS2: ADDI V,(X)\r
+IFN REENT,<TLNE F,HIPROG\r
+       HRRZ V,H>\r
+       MOVEM V,TOPTAB  ;SAVE FOR OVERLAP CHECKING\r
+       TLNE    F,FULLSW+SKIPSW;        ABORT?\r
+       JRST    ALLOVE;         YES\r
+       MOVE    V,LLC           ;PICK UP PROGRAM ORIGIN\r
+       CAML    V,CCON          ;IS THIS A PROGRAM?\r
+       JRST    FBLKD           ;NO, GO LOOK FOR FIRST BLK DATA\r
+IFE L,<IFN REENT,<TLNN F,HIPROG        ;DON'T BOTHER IF IN HISEG, CHAIN NOT SMART ENOUGH>\r
+       TLOE    N,PGM1          ;YES, IS THIS FIRST F4 PROG?\r
+       JRST    NOPRG           ;NO\r
+       HRR     W,COMBAS        ;YES, PLACE PROG BREAK IN LH\r
+       HRLM    W,.JBCHN(X)     ;FOR CHAIN>\r
+NOPRG: HRRZ    W,PLTP;         GET PROG TABLE BASE\r
+       HLRZ    C,PLTP;         AND SIZE\r
+       ADD     W,C;            COMPUTE END OF PROG TABLE\r
+       ADD     W,[POINT 1,1];  AND BEGINNING OF BIT TABLE\r
+       EXCH    W,BITP;         SWAP POINTERS\r
+PASS2B:        ILDB    C,BITP;         GET A BIT\r
+       JUMPE   C,PASS2C;       NO PASS2 PROCESSING\r
+       PUSHJ   P,PROC;         PROCESS A TAG\r
+       JRST    PASS2B;         MORE TO COME\r
+       JRST    ENDTP;\r
+\r
+PROC:  LDB     C,[POINT 6,@X,23];      TAG\r
+       SETZM   MODIF;          ZERO TO ADDRESS MODIFIER\r
+       TRZE    C,40\r
+       AOS     MODIF\r
+       MOVEI   W,TABDIS;       HEAD OF TABLE\r
+       HRLI W,-TABLNG  ;SET UP FOR AOBJN\r
+       HLRZ    T,(W);          GET ENTRY\r
+       CAME    T,C;            CHECK\r
+       AOBJN W,.-2\r
+       JUMPGE W,LOAD4A ;RAN OUT OF ENTRIES\r
+       HRRZ    W,(W);          GET DISPATCH\r
+       LDB     C,[POINT 12,@X,35]\r
+       JRST    (W);            DISPATCH\r
+\r
+\r
+PASS2C:        PUSHJ   P,PASS2A\r
+       JRST    PASS2B\r
+       JRST    ENDTP\r
+\f\r
+TABDIS:        XWD 11,PCONS;           CONSTANTS\r
+       XWD 06,PGS;             GLOBAL SUBPROGRAMS\r
+       XWD 20,PST;             SCALARS\r
+       XWD 22,PAT;             ARRAYS\r
+       XWD 01,PATO;            ARRAYS OFFSET\r
+       XWD 00,PPLT;            PROGRAMMER LABELS\r
+       XWD 31,PMLT;            MADE LABESL\r
+       XWD 26,PPT;             PERMANENT TEMPORARYS\r
+       XWD 27,PTT;             TEMPORARY TEMPORARYS\r
+TABLNG==.-TABDIS\r
+\r;DISPATCH ON A HEADER\r
+\r
+HEADER:        CAMN    W,[EXP -2];     END OF PASS ONE\r
+       JRST    ENDS\r
+       LDB     C,[POINT 12,W,35];      GET SIZE\r
+       MOVEM   C,BLKSIZ\r
+       ANDI    W,770000\r
+       JUMPE   W,PLB;  PROGRAMMER LABEL\r
+       CAIN    W,500000;       ABSOLUTE BLOCK\r
+       JRST    ABSI;\r
+       CAIN    W,310000;       MADE LABEL\r
+       JRST    MDLB;           MADE LABEL\r
+       CAIN    W,600000\r
+       JRST    GLOBDF\r
+       CAIN    W,700000;       DATA STATEMENT\r
+       JRST    DATAS\r
+IFN MANTIS,<CAIN W,770000;     SPECIAL DEBUGGER DATA\r
+       JRST    SPECBUG>\r
+       JRST    LOAD4A;         DATA STATEMENTS WILL GO HERE\r
+\r
+TTR50: RADIX50 10,%TEMP.\r
+PTR50: RADIX50 10,TEMP.\r
+CNR50: RADIX50 10,CONST.\r
+\r\r
+IFN MANTIS,<\r
+SPECB: CAML    W,.JBREL        ;ROOM?\r
+       AOJA    W,[CORE W,      ;NO, GET IT\r
+               JRST    MORCOR\r
+                JRST .+1]      ;GOT IT\r
+       PUSHJ   P,WORD          ;GET SPECIAL DATA\r
+       MOVEM   W,@MNTSYM       ;DEPOSIT IT\r
+       SOSG    BLKSIZ          ;MORE?\r
+       JRST    TEXTR           ;NO\r
+SPECBUG:TRNN   N,MANTFL        ;ARE WE LOADING MANTIS DATA?\r
+       JRST    [PUSHJ  P,WORD          ;NO, READ A WORD\r
+               SOSG    BLKSIZ          ;AND IGNORE IT\r
+               JRST    TEXTR           ;BLOCK EXHAUSTED?\r
+               JRST    @.]             ;NO, LOOP\r
+       AOS     W,MNTSYM        ;STEP SPECIAL POINTER\r
+       SOJG    W,SPECB         ;LOOP IF SETUP ALREADY\r
+       HRRZ    W,.JBREL        ;SET IT UP NOW\r
+       MOVEM   W,MNTSYM\r
+       JRST    SPECBUG         ;AND STEP IT>\r
+\fSUBTTL        ROUTINES TO PROCESS POINTERS\r
+\r
+PCONS: ADD     C,CCON;         GENERATE CONSTANT ADDRESS\r
+       SOJA    C,PCOMX         ;ADJUST FOR 1 AS FIRST ENTRY\r
+\r
+PSTA:  PUSHJ   P,SWAPSY        ;NON-COMMON SCALARS AND ARRAYS\r
+       ADDI    C,(R);          RELOCATE\r
+PCOM1: PUSHJ   P,SYDEF         ;...\r
+PCOMX: ADD     C,MODIF         ;ADDR RELOC FOR DP\r
+       HRRM    C,@X;           REPLACE ADDRESS\r
+PASS2A:        AOJ     V,;             STEP READOUT POINTER\r
+       CAML    V,CCON          ;END OF PROCESSABLES?\r
+CPOPJ1:        AOS     (P);            SKIP\r
+       POPJ    P,;\r
+\r
+PAT:   SKIPA   W,ATAB          ;ARRAY TABLE BASE\r
+PST:   MOVE    W,STAB          ;SCALAR TABLE  BASE\r
+       ROT     C,1             ;SCALE BY 2\r
+       ADD     C,W             ;ADD IN TABLE BASE\r
+       ADDI    C,-2(X);        TABLE ENTRY\r
+       HLRZ    W,(C);          CHECK FOR COMMON\r
+       TRNN    W,7777  ;IGNORE SIX BITS        ;U/O-LKS\r
+       JRST    PSTA            ;NO COMMON      ;U/O-LKS\r
+       PUSHJ   P,COMDID        ;PROCESS COMMON\r
+       JRST    PCOM1\r
+\r
+COMDID:        ANDI    W,7777  ;IGNORE SIX BITS        ;U/O-LKS\r
+       LSH     W,1             ;PROCESS COMMON TABLE ENTRIES\r
+       ADD     W,CTAB;         COMMON TAG\r
+       ADDI    W,-2(X);        OFFSET\r
+       PUSHJ   P,SWAPSY;       GET SYMBOL AND SET TO DEFINED\r
+       ADD     C,1(W);         BASE OF COMMON\r
+       POPJ    P,              ;RETURN\r
+\r
+PATO:  ROT     C,1\r
+       ADD     C,AOTAB;        ARRAY OFFSET\r
+       ADDI    C,-2(X);        LOADER OFFSET\r
+       MOVEM   C,CT1;          SAVE CURRENT POINTER\r
+       HRRZ    C,1(C);         PICK UP REFERENCE POINTER\r
+       ANDI    C,7777; MASK TO ADDRESS\r
+       ROT     C,1;            ALWAYS A ARRAY\r
+       ADDI    C,-2(X)\r
+       ADD     C,ATAB\r
+       HLRZ    W,(C);          COMMON CHECK\r
+       TRNN    W,7777  ;IGNORE SIX BITS        ;U/O-LKS\r
+       JRST    NCO                             ;U/O-LKS\r
+       PUSHJ   P,COMDID        ;PROCESS COMMON\r
+       PUSHJ   P,SYDEF\r
+       MOVE    C,CT1\r
+       HRRE    C,(C)\r
+       ADD     C,1(W)\r
+       JRST    PCOMX\r
+\r\fNCO: PUSHJ   P,SWAPSY;\r
+       ADDI    C,(R)           ;DEFINE SYMBOL IN TRUE LOC\r
+       PUSHJ   P,SYDEF         ;...\r
+       MOVE    C,CT1\r
+       HRRZ    C,(C)           ;OFFSET ADDRESS PICKUP\r
+       ADDI    C,(R)           ;WHERE IT WILL BE\r
+       JRST    PCOMX           ;STASH ADDR AWAY\r
+\r
+PTT:   ADD     C,TTEMP;        TEMPORARY TEMPS\r
+       SOJA    C,PCOMX         ;ADJUST FOR 1 AS FIRST ENTRY\r
+\r
+PPT:   ADD     C,PTEMP;        PERMANENT TEMPS\r
+       SOJA    C,PCOMX         ;ADJUST FOR 1 AS FIRST ENTRY\r
+\r
+PGS:   ADD     C,GSTAB;        GLOBSUBS\r
+       ADDI    C,-1(X);        OFFSET\r
+       MOVE    C,(C)\r
+       TLC     C,640000;       MAKE A REQUEST\r
+       PUSHJ P,TBLCHK          ;CHECK FOR OVERLAP\r
+       MOVEI   W,(V);          THIS LOC\r
+       HLRM    W,@X;           ZERO RIGHT HALF\r
+       PUSHJ   P,SYMXX\r
+       JRST    PASS2A\r
+\r
+SYDEF: TLNE    N,SYDAT         ;SYMBOL WANTS DEFININITION?\r
+       POPJ    P,              ;NO, GO AWAY\r
+       PUSH    P,C             ;SAVE THE WORLD\r
+       PUSH    P,W\r
+       PUSHJ P,TBLCHK  ;CHECK FOR OVERLAP\r
+       MOVE    W,C\r
+       SKIPE   C,T     ;PICKUP VALUE\r
+       PUSHJ   P,SYMXX\r
+       POP     P,W\r
+       POP     P,C\r
+       POPJ    P,;\r
+\r
+PMLT:  ADD     C,MLTP\r
+       JRST    .+2\r
+PPLT:  ADD     C,PLTP\r
+       HRRZ    C,(C)\r
+       JRST    PCOMX\r
+\r
+SYMXX: PUSH    P,V\r
+       PUSHJ   P,SYMPT\r
+       POP     P,V\r
+IFE REENT,<POPJ        P,>\r
+IFN REENT,<JRST RESTRX>\r
+\f\r
+SWAPSY:        MOVEI   T,0;            SET TO EXCHANGE DEFS\r
+       EXCH    T,1(C);         GET NAME\r
+IFN MANTIS,<TRNE N,MANTFL      ;LOADING MANTIS DATA?\r
+       SKIPA   C,(C)           ;YES, GET FULLWORD VALUE>\r
+       HRRZ    C,(C)           ;GET HALFWORD VALUE\r
+       POPJ    P,\r
+TBLCHK:        HRRZ W,MLTP     ;GETT TOP OV TABLES\r
+       SUBI W,2\r
+       CAMG W,TOPTAB   ;WILL IT OVERLAP\r
+IFE EXPAND,<TLO F,FULLSW>\r
+IFN EXPAND,<JRST [PUSHJ P,XPAND\r
+               POPJ    P,\r
+               JRST TBLCHK]>\r
+       POPJ P,\r
+\r\fSUBTTL       END OF PASS2\r
+\r
+ALLOVE:        TLZ     N,F4SW          ;END OF F4 PROG\r
+       HRRZ V,SDSTP    ;GET READY TO ZERO OUT DATA STMTS\r
+       SETZM (V)       ;AT LEAST ONE THERE\r
+       CAIL V,(S)      ;IS THERE MORE THAN ONE??\r
+       JRST NOMODS     ;NO\r
+       HRLS V\r
+       ADDI V,1        ;SET UP BLT\r
+       BLT V,(S)       ;ZERO OUT ALL OF IT\r
+NOMODS:        MOVE H,SVFORH\r
+       TLNE    F,FULLSW!SKIPSW\r
+       JRST    HIGH3A\r
+       HRR     R,COMBAS        ;TOP OF THE DATA\r
+       CAMG    H,SDS           ;HIGHEST LOC GREATER THAN DATA STATEMENTS?\r
+       JRST    HIGH3A          ;NO, RETURN\r
+       ADDI    H,1(S)          ;YES, SET UP MEANINGFUL ERROR COMMENT\r
+       SUB     H,SDS           ;...\r
+       TLO     F,FULLSW        ;INDICATE OVERFLO\r
+HIGH3A:        IFN REENT,<SETZ W,      ;CAUSES TROUBLE OTHERWISE\r
+       TLZE F,HIPROG\r
+       JRST HIGHN1\r
+IFE SPCHN,<HRRZ V,GSTAB>\r
+IFN SPCHN,<HRRZ        V,SAVBAS        ;GET END OF PROGRAM RELATIVE  ADDRESS\r
+                               ;THIS MEANS THAT WITH SPECIAL CHAINING THE\r
+                               ;ENTIRE LAST PROGRAM OF A LINK WILL BE SAVED\r
+                               ;BUT COMMON DECLARED FOR THE FIRST TIME\r
+                               ;IN THAT  PROGRAM WON'T BE. THIS SHOULD NOT\r
+                               ;CAUSE PROBLEMS BECAUSE IF COMMON APPEARS HERE\r
+                               ;NOBODY ELSE CAN REFERENCE IT ANYWAY. >\r
+       MOVEI V,@X\r
+       CAMLE V,HILOW\r
+       MOVEM V,HILOW>\r
+       HRRZ C,R\r
+       JRST    HIGH31          ;RETURN\r
+\r
+DATAS: TLNE    F,FULLSW+SKIPSW\r
+       JRST    DAX\r
+       MOVEI   C,(S)           ;ADDR OF WORD UNDER SYMBOL TABLE\r
+       MOVN    W,BLKSIZ        ;HOW FAR DOWN TO BLT\r
+       ADDM    W,PLTP          ;UPDATE TABLE POINTERS\r
+       ADDM    W,BITP          ;...\r
+       ADDM    W,SDSTP         ;...\r
+       ADD     C,W             ;RH(C):= WHEN TO STOP BLT\r
+       HRL     C,MLTP          ;SOURCE OF BLTED DATA\r
+       ADD     W,MLTP          ;UPDATE, GET DESTINATION OF BLT DATA\r
+IFN EXPAND,<   HRRZS W ;GET RID OF LEFT HALF\r
+               CAIG W,(H)\r
+               PUSHJ P,[PUSHJ P,XPAND\r
+                       POPJ P,\r
+                       ADDI W,2000\r
+                       ADD C,[XWD 2000,2000]\r
+                       JRST POPJM2]>\r
+       HRRM    W,MLTP  ;NO SET THIS SO EXTRA CORE NOT ZEROED\r
+       HLL     W,C             ;FORM BLT POINTER\r
+       BLT     W,-1(C)         ;MOVE TABLES DOWN (BUT NOT JRST ALLOVE)\r
+       PUSHJ   P,BITWX\r
+DAX:   PUSHJ   P,WORD;         READ ONE WORD\r
+       TLNN    F,FULLSW+SKIPSW\r
+       MOVEM   W,(C)\r
+       SOSLE   BLKSIZ          ;COUNT OF DATA SEQUENCE SIZE\r
+       AOJA    C,DAX           ;INCREMENT DATA SEQUENCE DEPOSIT LOC\r
+       JRST    TEXTR;          DONE\r
+\r\fFBLKD:       IFE L,<IFN REENT,<\r
+       TLNN F,HIPROG>\r
+       TLOE    N,BLKD1         ;IS THIS FIRST BLOCK DATA?\r
+       JRST    ENDTP           ;NO\r
+       HRR     V,COMBAS        ;PLACE PROG BREAK IN RH FOR\r
+       HRRM    V,.JBCHN(X)     ;CHAIN>\r
+ENDTP: TLNE    F,FULLSW+SKIPSW\r
+       JRST    ALLOVE\r
+       HRR     V,GSTAB\r
+ENDTP0:        CAML    V,STAB;         ANY MORE GLOBSUBS\r
+       JRST    ENDTP2;         NO\r
+       MOVE    C,@X;           GET SUBPROG NAME\r
+       PUSHJ   P,SREQ;         IS IT ALLREADY REQUESTED\r
+       AOJA    V,ENDTP0;       YES\r
+       PUSHJ   P,SDEF;         OR DEFINED\r
+       AOJA    V,ENDTP0;       YES\r
+       PUSHJ   P,TBLCHK\r
+       MOVEI   W,0             ;PREPARE DUMMY LINK\r
+       TLNN    F,FULLSW+SKIPSW ;ABORT\r
+       PUSHJ   P,SYM3X;        PUT IN DUMMY REQUEST\r
+       PUSHJ   P,BITWX;        OVERLAP CHECK\r
+       AOJA    V,ENDTP0\r
+ENDTP2:        SETZM   PT1\r
+ENDTPW:        HRRZ    V,SDSTP\r
+IFN EXPAND,<IFN REENT,<TLNE F,HIPROG\r
+               JRST ENDTPI>\r
+               SUBI V,(X)\r
+               CAMG V,COMBAS\r
+               PUSHJ   P,[SUB V,COMBAS\r
+                       MOVNS   V\r
+                       JRST    XPAND9]\r
+               JFCL            ;FOR ERROR RETURN FROM XPAND\r
+ENDTPH:                HRR V,SDSTP>\r
+       HRRZM   V,SDS           ;DATA STATEMENT LOC\r
+ENDTP1:        SUBI    V,(X);          COMPENSATE FOR OFFSET\r
+       MOVE    W,@X;   GET WORD\r
+       TLNE    W,-1;           NO LEFT HALF IMPLIES COUNT\r
+       JRST    DODON;          DATA DONE\r
+       ADD     W,[MOVEI W,3]\r
+       ADDI    W,@X\r
+       EXCH    W,@X\r
+       AOJ     V,\r
+       ADD     W,@X;           ITEMS COUNT\r
+       MOVEM   W,ITC\r
+       MOVE    W,[MOVEM W,LTC]\r
+       MOVEM   W,@X;           SETUP FOR DATA EXECUTION\r
+       AOJ     V,\r
+       MOVSI   W,(MOVEI W,0)\r
+       EXCH    W,@X\r
+       MOVEM   W,ENC;          END COUNT\r
+       AOJ     V,\r
+       MOVEI   W,@X\r
+       ADDM    W,ITC\r
+LOOP:  MOVE    W,@X\r
+       HLRZ    T,W;            LEFT HALF INST.\r
+       ANDI    T,777000\r
+       CAIN    T,254000        ;JRST?\r
+       JRST    WRAP            ;END OF DATA\r
+       CAIN    T,260000        ;PUSHJ?\r
+       JRST    PJTABL(W)       ;DISPATCH VIA TABLE\r
+       CAIN    T,200000;       MOVE?\r
+       AOJA    V,INNER\r
+       CAIN    T,270000;       ADD?\r
+       JRST    ADDOP\r
+       CAIN    T,221000;       IMULI?\r
+       AOJA    V,LOOP\r
+       CAIE    T,220000;       IMUL?\r
+       JRST    LOAD4A;         NOTA\r
+INNER: HRRZ    T,@X;           GET ADDRESS\r
+       TRZE    T,770000;       ZERO TAG?\r
+       SOJA    T,CONPOL;       NO, CONSTANT POOL\r
+       JUMPE T,FORCNF\r
+       SUB     T,PT1;          SUBTRACT INDUCTION NUMBER\r
+       ASH     T,1\r
+       SUBI T,1\r
+       HRRM    T,@X\r
+       HLRZ    T,@X\r
+       ADDI    T,P\r
+       HRLM    T,@X\r
+       AOJA    V,LOOP\r
+IFN EXPAND,<IFN REENT,<\r
+ENDTPI:        HRRZ V,COMBAS\r
+       MOVEI V,@X\r
+       CAMLE V,.JBREL\r
+       JRST    [PUSHJ  P,HIEXP\r
+               JRST    ENDTPH\r
+               JRST    ENDTPI]\r
+       JRST ENDTPH>>\r
+FORCNF:        ERROR   ,</FORTRAN CONFUSED ABOUT DATA STATEMENTS!/>\r
+       JRST    ILC1\r
+\r\fCONPOL:      ADD     T,ITC;  CONSTANT BASE\r
+       HRRM    T,@X\r
+       AOJA    V,LOOP\r
+\r
+ADDOP: HRRZ    T,@X\r
+       TRZE    T,770000\r
+       SOJA    T,CONPOL\r
+SKIPIN:        AOJA    V,LOOP\r
+\r
+PJTABL:        JRST    DWFS            ;PUSHJ 17,0\r
+       AOSA    PT1             ;INCREMENT DO COUNT\r
+       SOSA    PT1;            DECREMENT DO COUNT\r
+       SKIPA   W,[EXP DOINT.]\r
+       MOVEI   W,DOEND.\r
+       HRRM    W,@X\r
+       AOJA    V,SKIPIN        ;SKIP A WORD\r
+\r
+DWFS:  MOVEI   W,DWFS.\r
+       HRRM    W,@X\r
+       AOJ     V,\r
+       TLO     N,SYDAT\r
+       PUSHJ   P,PROC;         PROCESS THE TAG\r
+       JUMPGE  V,DATAOV        ;DATA STATEMENT BELOW CODE TOP\r
+       JRST    LOOP            ;PROPER RETURN\r
+\r
+DOINT.:        POP     P,V;            GET ADDRESS OF INITIAL VALUE\r
+       PUSH    P,(V);          STORE INDUCTION VARIABLE\r
+       AOJ     V,\r
+       PUSH    P,V;            INITIAL ADDRESS\r
+       JRST    (V)\r
+\r
+DOEND.:        HLRE    T,@(P)          ;RETAIN SIGN OF INCREMENT\r
+       ADDM    T,-2(P);        INCREMENT\r
+       HRRE    T,@(P);         GET FINAL VALUE\r
+       SUB     T,-2(P)         ;FINAL - CURRENT\r
+       IMUL    T,@(P)          ;INCLUDE SIGN OF INCREMENT\r
+       JUMPL   T,DODONE        ;SIGN IS ONLY IMPORTANT THING\r
+       POP     P,(P);          BACK UP POINTER\r
+       JRST    @(P)\r
+\r\fDODONE:      POP     P,-1(P);        BACK UP ADDRESS\r
+       POP     P,-1(P)\r
+       JRST    CPOPJ1          ;RETURN\r
+\r
+WRAP:  MOVE    W,ENC;          NUMBER OF CONSTANTS\r
+       ADD     W,ITC;          CONSTANT BASE\r
+       MOVEI   C,(W);          CHAIN\r
+       HRRM    C,@X\r
+       MOVEI   V,(W);          READY TO GO\r
+       JRST    ENDTP1\r
+\r
+DODON: TLZ     N,RCF!SYDAT!DZER        ;DATA STATEMENT FLAGS\r
+       MOVE    W,PTEMP         ;TOP OF PROG\r
+       ADDI    W,(X)           ;+OFFSET\r
+       HRRZ C,SDS\r
+IFE EXPAND,<SUBI C,(X) ;CHECK FOR ROOM\r
+       CAMGE C,COMBAS  ;IS IT THERE\r
+       TLO F,FULLSW    ;NO (DONE EARLIER IF EXPAND)\r
+       HRRZ C,SDS>\r
+       SUBI C,1        ;GET ONE LESS (TOP LOCATION TO ZERO)\r
+IFN REENT,<TLNE F,HIPROG\r
+       MOVE C,.JBREL>\r
+SECZER:        CAMLE   W,C             ;ANY DATA TO ZERO?\r
+       JRST    @SDS            ;NO, DO DATA STATEMENTS\r
+                               ;FULLSW IS ON IF COMBAS GT. SDS\r
+       TLNN    F,FULLSW+SKIPSW ;SHOULD WE ZERO?\r
+       SETZM   (W)             ;YES, DO SO\r
+       TLON    N,DZER          ;GO BACK FOR MORE?\r
+       AOJA    W,SECZER        ;YES, PLEASE\r
+       HRLI    W,-1(W)         ;SET UP BLT POINTER TO ZERO DATA\r
+       TLNN    F,FULLSW+SKIPSW ;SHOULD WE ZERO?\r
+       BLT     W,(C)           ;YES, DO SO\r
+       JRST    @SDS            ;GO DO DATA STATEMENTS\r
+\r
+DATAOV:        ERROR   0,</DATA STATEMENT OVERFLOW!/>\r
+       JRST    ILC1\r
+\r\fDREAD:       TLNE    N,RCF;          NEW REPEAT COUNT NEEDED\r
+       JRST    FETCH;          NO\r
+       MOVE    W,LTC\r
+       MOVEM   W,LTCTEM\r
+       MOVE    W,@LTC;         GET A WORD\r
+       HLRZM   W,RCNT;         SET REPEAT COUNT\r
+       HRRZM   W,WCNT;         SET WORD COUNT\r
+       POP     W,(W);          SUBTRACT ONE FROM BOTH HALFS\r
+       HLLM    W,@LTC;         DECREMENT REPEAT COUNT\r
+       AOS     W,LTC;          STEP READOUT\r
+       TLO     N,RCF\r
+FETCH: MOVE    W,@LTC\r
+       AOS     LTC\r
+       SOSE    WCNT\r
+       POPJ    P,;\r
+       SOSN    RCNT\r
+       JRST    DOFF.\r
+       MOVE    V,LTCTEM;       RESTORE READOUT\r
+       MOVEM   V,LTC\r
+DOFF.: TLZ     N,RCF;          RESET DATA REPEAT FLAG\r
+       POPJ    P,;\r
+\r
+DWFS.: MOVE    T,(P)\r
+       AOS     (P)\r
+       MOVE    T,(T);          GET ADDRESS\r
+       HLRZM   T,DWCT;         DATA WORD COUNT\r
+       HRRZS   T\r
+       ADDI    T,(W);          OFFSET\r
+IFN REENT,<HRRZS T             ;CLEAR LEFT HALF INCASE OF CARRY\r
+       CAML T,HVAL1\r
+       JRST    [ADD T,HIGHX\r
+               HRRZS T ;MUST GET RID OF LEFT HALF\r
+               CAMLE T,.JBREL\r
+               JRST DATAOV     ;IN CASE FORTRAN GOOFS ON LIMITS\r
+               JRST DWFS.1]\r
+       ADD T,LOWX>\r
+       HRRZS T\r
+IFE REENT,<ADDI T,(X)>\r
+       CAML T,SDS\r
+       JRST DATAOV\r
+DWFS.1:        PUSHJ   P,DREAD         ;GET A DATA WORD\r
+       HRRZS T\r
+IFN REENT,<CAMG T,.JBREL       ;JUST TO MAKE SURE>\r
+       CAMN T,SDS\r
+       JRST DATAOV\r
+       TLNN    F,FULLSW+SKIPSW ;LOAD THE NEXT DATA ITEM?\r
+       MOVEM   W,(T)           ;YES, STORE IT\r
+       SOSE    W,DWCT;         STEP DOWN AND TEST\r
+       AOJA T,DWFS.1           ;ONE MORE TIME, MOZART BABY!\r
+       POPJ    P,\r
+\fSUBTTL        ROUTINE TO SKIP FORTRAN OUTPUT\r
+\r
+;SUBSECTION OF THE ROUTINE TO HANDLE OUTPUT FROM THE\r
+;FORTRAN IV COMPILER. THE MAIN OBJECT OF THE ROUTINE IS TO\r
+;LOOK FOR THE END BLOCK. CODE TAKEN FROM FUDGE2.\r
+\r
+MACHCD:        HRRZ    C,W             ;GET THE WORD COUNT\r
+       PUSHJ   P,WORD          ;INPUT A WORD\r
+       SOJG    C,.-1           ;LOOP BACK FOR REST OF THE BLOCK\r
+                               ;GO LOOK FOR NEXT BLOCK\r
+\r
+REJECT:        PUSHJ   P,WORD          ;READ A FORTRAN BLOCK HEADER\r
+       TLC     W,-1            ;TURN ONES TO ZEROES IN LEFT HALF\r
+       TLNE    W,-1            ;WAS LEFT HALF ALL ONES?\r
+       JRST    REJECT          ;NO, IT WAS CALCULATED MACHINE CODE\r
+       CAIN    W,-2            ;YES, IS RIGHT HALF = 777776?\r
+       JRST    ENDST           ;YES, PROCESS F4 END BLOCK\r
+       LDB     C,[POINT 6,W,23];GET CODE BITS FROM BITS 18-23\r
+       TRZ     W,770000        ;THEN WIPE THEM OUT\r
+       CAIN    C,77            ;IS IT SPECIAL DEBUGGER DATA?\r
+       JRST    MACHCD          ;YES, TREAT IT LIKE DATA\r
+       CAIE    C,70            ;IS IT A DATA STATEMENT?\r
+       CAIN    C,50            ;IS IT ABSOLUTE MACHINE CODE?\r
+       JRST    MACHCD          ;YES, TREAT IT LIKE DATA STATEMENTS\r
+       PUSHJ   P,WORD          ;NO, ITS A LABEL OF SOME SORT\r
+       JRST    REJECT          ;WHICH CONSISTS OF ONE WORD\r
+                               ;LOOK FOR NEXT BLOCK HEADER\r
+\r
+ENDST: MOVEI   C,1             ;TWO WORDS, FIVE TABLES, ONE WORD, ONE TABLE\r
+       MOVEI   T,6             ;TO GO\r
+F4LUP1:        PUSHJ   P,WORD          ;GET TABLE MEMBER\r
+F4LUP3:        SOJGE   C,F4LUP1        ;LOOP WITHIN A TABLE\r
+       JUMPL   T,LOAD1         ;LAST TABLE - RETURN\r
+       SOJG    T,F4LUP2        ;FIRST TWO WORDS AND FIVE TABLES\r
+       JUMPE   T,F4LUP1        ;COMMON LENGTH WORD\r
+F4LUP2:        PUSHJ   P,WORD          ;READ HEADER WORD\r
+       MOVE    C,W             ;COUNT TO COUNTER\r
+       JRST    F4LUP3          ;STASH\r
+\fSUBTTL        LISP LOADER\r
+\r
+IFE L,<        END     BEG>\r
+IFN L,<        XLIST\r
+       LIT\r
+       LIST\r
+\r
+LODMAK:        MOVEI A,LODMAK\r
+       MOVEM A,137     ;SET UP TO SAVE THE LISP LOADER\r
+       INIT 17\r
+       SIXBIT /DSK/\r
+       0\r
+       HALT\r
+       ENTER LMFILE\r
+       HALT\r
+       OUTPUT LMLST\r
+       STATZ 740000\r
+       HALT\r
+       RELEASE\r
+       EXIT\r
+LMFILE:        SIXBIT /LISP/\r
+       SIXBIT /LOD/\r
+       0\r
+       0\r
+LMLST: IOWD 1,.+1              ;IOWD\r
+       IOWD LODMAK-LD+1,137    ;AND CORE IMAGE\r
+       0\r
+       END LODMAK>\r
+\f
\ No newline at end of file
diff --git a/src/lptser.mac b/src/lptser.mac
new file mode 100644 (file)
index 0000000..8d4ea0b
--- /dev/null
@@ -0,0 +1,163 @@
+TITLE LPTSER - LINE PRINTER SERVICE ROUTINE\r
+SUBTTL 8-4-65\r
+INTERNAL LPTINT,LPTINI\r
+EXTERNAL LPTCHN, LPTCHL, LPTRET,  OUT, WAIT1, LPTSAV, IOSET\r
+EXTERNAL ADVBFE,  SETIOD,ILLINP,LPTCHB,LPTCLB\r
+\r
+;DEVICE DATA BLOCK LINKAGE\r
+EXTERNAL LPTDAT,LPTCHR,LPTIOS,LPTSER,LPTMOD,LPTBUF,LPTPTR\r
+EXTERNAL LPTADR,LPTSV1\r
+ENTRY LPTDSP\r
+\f\r
+\r
+,LPT PARAMETER ASSIGNMENTS\r
+\r
+,   LPT CONTROL REGISTER\r
+         LPTCLR=2000           ;CLEAR BUFFER\r
+         LPTDON=100            ;DONE FLAG\r
+         LPTERR=400            ;ERROR FLAG\r
+         LPTLOV=1000           ;LINE OVERFLOW\r
+\r
+,   SPECIAL IO STATUS WORD ASSIGNMENTS\r
+         LPTADV=100000\r
+\r
+REPEAT 0,<\r
+,   LPT DATABLOCK\r
+\r
+LPTDAT:          SIXBIT .LPT.\r
+LPTCHR:          32\r
+LPTIOS:          0\r
+LPTSER:   EXP LPTDSP\r
+LPTMOD:          XWD 0,3\r
+ 0\r
+LPTBUF:          0\r
+LPTPTR:          0\r
+LPTADR:          XWD PROG,0\r
+LPTSV1:          0\r
+>\r
+\r
+,  LPT SERVICE DISPATCH TABLE\r
+\r
+LPTDSP:          JRST LPTINI           ;RELEASE\r
+         JRST LPTCLS           ;CLOSE\r
+         JRST LPTOUT           ;OUTPUT\r
+         JRST ILLINP                           ;INPUT\r
+\r
+LPTINI:          CONO LPT,LPTCLR       ;LPT INITIALIZE\r
+         HLLZS LPTINT\r
+         POPJ PDP,\r
+\f\r
+\r
+LPTCLS:          PUSHJ PDP,OUT         ;PRINT REMAINING BUFFERS\r
+         PUSHJ PDP, WAIT1      ;WAIT FOR IOACT=0\r
+         DATAO LPT,LPTTOP      ;PRINT CARRAGE RETURN, FORM FEED\r
+         POPJ PDP,             ;CLOSE RETURN\r
+\r
+LPTOUT:          TRO IOS,IOACT         ;IOACT=1\r
+         TLZ IOS,IODISC        ;IODISC:=0\r
+         TLO IOS,IO            ;IO:=1\r
+         TLNE IOS,IOBEG        ;VIRGIN DEVICE? IOBEG:=0\r
+         JRST LPTBEG           ;YES\r
+         PUSHJ PDP,LPTSET\r
+         MOVEM IOS,LPTIOS      ;C(LPTIOS):=C(IOS)\r
+         MOVEI TAC,LPTDON\r
+         JRST LPTBG1\r
+\r
+LPTBEG:          TLO IOS,IODISC\r
+         MOVEM IOS,LPTIOS      ;C(LPTIOS):=C(IOS)\r
+         PUSHJ PDP,LPTSET\r
+         MOVEI TAC,LPTCLR\r
+LPTBG1:          MOVEI TAC1,LPTLOV+LPTERR+LPTDON\r
+         HRRM TAC1,LPTINT\r
+         CONO LPT, LPTCHB(TAC)         ;CLEAR BUFFER AND ASSIGN PI C\r
+         POPJ PDP,             ;RETURN\r
+\f\r
+\r
+\r
+, LINE PRINTER INTERRUPT SERVICE\r
+\r
+LPTINT:          CONSO LPT,LPTLOV+LPTERR+LPTDON;LINE OVERFLOW, ERROR OR DONE\r
+         JRST LPTINT           ;IF LPT IS IN FLAG LIST, GO TO ERROR, E\r
+         CONSZ LPT,70\r
+         CONSO LPT,LPTDON\r
+         JRST LPTERI                   ;YES\r
+LPTIN1:          SKIPGE LPTIOS         ;IODISC=1?\r
+         JRST LPTDSC                   ;YES\r
+         BLKO LPT,LPTPTR       ;PRINT\r
+         SKIPA                 ;BUFFER EMPTY\r
+         JEN @LPTCHL                   ;DISMISS INTERRUPT AND RETURN\r
+         MOVEM TAC,LPTSV1      ;SAVE TAC\r
+         HRLZI TAC,IODISC      ;IODISC:=1\r
+         IORM TAC,LPTIOS\r
+LPTERX:          MOVE TAC,LPTSV1       ;RESTORE TAC\r
+         JEN @LPTCHL                   ;DISMISS INTERRUPT AND RETURN\r
+\r
+LPTDSC:          JSR LPTSAV                    ;SAVE ACCUMULATORS AND ESTABL\r
+         MOVEI DEVDAT,LPTDAT  ;DEVDAT:=LPTDAT\r
+         PUSHJ PDP,IOSET       ;PROG:=C(JBTADR18-35),ITEM:=C(DEVPTR)\r
+         MOVE IOS,LPTIOS\r
+         TLZE IOS,IOBEG\r
+         JRST LPTBG                    ;PUT OUT CR-LF\r
+         PUSHJ PDP,ADVBFE      ;ADVANCE BUFFER\r
+         JRST      LPTOFF      ;NEXT BUFFER EMPTY\r
+         TRNE IOS,IOCON        ;CONTINUOUS? (IOCON=0?)\r
+         JRST LPTOFF           ;NO\r
+         TLZ IOS,IODISC\r
+         PUSHJ PDP,LPTSET      ;SET LPTPTR\r
+\r
+LPTINX:          TLZE IOS,IOW          ;IN A WAIT? IOW:=0\r
+         PUSHJ PDP,SETIOD      ;YES.  IOWS:=1\r
+LPTXIT:          MOVEM IOS,LPTIOS      ;C(LPTIOS):=C(IOS)\r
+         JRST LPTRET                     ;RESTORE ACCUMULATORS AND DIS\r
+\r
+LPTOFF:          TRZ IOS,IOACT\r
+         CONO LPT,0\r
+         HLLZS LPTINT          ;TURN LPT OFF\r
+         JRST LPTINX\r
+\r
+LPTBG:   DATAO LPT,LPTTOP      ;SEND OUT CR-FF\r
+         TLZ IOS,IODISC        ;WHEN IODISC=1\r
+         JRST LPTXIT\r
+\f\r
+\r
+;HERE ON EITHER OVERFLOW OR ERROR(OFFLINE) OR ERROR CHANNEL\r
+;NOT ASSIGNED.\r
+\r
+LPTERI:          MOVEM TAC,LPTSV1      ;SAVE TAC\r
+         CONSO LPT,LPTLOV      ;LINE OVERFLOW?\r
+         JRST LPTER1                   ;NO\r
+         MOVN TAC,[EXP 100001]         ;YES, DECREMENT POINTER\r
+         ADDM TAC,LPTPTR\r
+         DATAO LPT,[EXP 15B6+12B13]    ;PRINT CARRIAGE RETURN, LINE\r
+         JRST LPTERX\r
+\r
+LPTER1:          CONSO LPT,70          ;ERROR INTERRUPT ASSIGNED?\r
+         JRST LPTER2           ;NO\r
+         CONO LPT,LPTCLB       ;YES, DEASSIGN IT,SET BUSY,CLEAR REST\r
+         MOVEI TAC,LPTDON      ;ENABLE FOR DONE FLAG ONLY\r
+LPTERA:          HRRM TAC,LPTINT\r
+         JRST LPTERX\r
+\r
+LPTER2:          CONI LPT,TAC\r
+         ANDI TAC,300\r
+         CONO LPT,LPTCHB(TAC)\r
+         MOVEI TAC,LPTDON+LPTERR+LPTLOV\r
+         HRRM TAC,LPTINT\r
+         MOVE TAC,LPTSV1\r
+         JRST LPTIN1\r
+LPTTOP:          EXP 15B6+14B13        ;CARRIAGE RETURN, FORM FEED\r
+\f\r
+\r
+,SET UP PRINTER COUNTER AND POINTER\r
+\r
+LPTSET:          MOVEI TAC,@LPTADR     ;LPTPTR:=-(WORD COUNT+1), BUFFER ADDRES\r
+         MOVN TAC1,1(TAC)\r
+         HRL TAC,TAC1\r
+         AOJLE TAC,.+2         ;C(LPTPTR0-17)<0?\r
+         HRROI TAC,LPTNUL-1\r
+         MOVEM TAC,LPTPTR\r
+         POPJ PDP,             ;RETURN\r
+\r
+LPTNUL:          0\r
+\r
+         END,\r
diff --git a/src/m140.lst b/src/m140.lst
new file mode 100644 (file)
index 0000000..3084f0e
--- /dev/null
@@ -0,0 +1,37005 @@
+LPTSPL Version 3(105)  Running on LPT000\r
+ **START** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 **START** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 **START** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 **START** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 **START** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 **START** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 **START** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 **START** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 **START** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 **START** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 **START** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 **START** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 **START** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 **START** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 **START** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 **START** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 **START** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 **START** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 **START** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 **START** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 **START** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 **START** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 **START** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 **START** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 **START** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 **START** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 **START** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 **START** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 **START** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 **START** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13\f   CCCCCCCCCCCC      DDDDDDDDDDDD         RRRRRRRRRRRR            SSSSSSSSSSSS      EEEEEEEEEEEEEEE      RRRRRRRRRRRR   \r
+   CCCCCCCCCCCC      DDDDDDDDDDDD         RRRRRRRRRRRR            SSSSSSSSSSSS      EEEEEEEEEEEEEEE      RRRRRRRRRRRR   \r
+   CCCCCCCCCCCC      DDDDDDDDDDDD         RRRRRRRRRRRR            SSSSSSSSSSSS      EEEEEEEEEEEEEEE      RRRRRRRRRRRR   \r
+CCC                  DDD         DDD      RRR         RRR      SSS                  EEE                  RRR         RRR\r
+CCC                  DDD         DDD      RRR         RRR      SSS                  EEE                  RRR         RRR\r
+CCC                  DDD         DDD      RRR         RRR      SSS                  EEE                  RRR         RRR\r
+CCC                  DDD         DDD      RRR         RRR      SSS                  EEE                  RRR         RRR\r
+CCC                  DDD         DDD      RRR         RRR      SSS                  EEE                  RRR         RRR\r
+CCC                  DDD         DDD      RRR         RRR      SSS                  EEE                  RRR         RRR\r
+CCC                  DDD         DDD      RRRRRRRRRRRR            SSSSSSSSS         EEEEEEEEEEEE         RRRRRRRRRRRR   \r
+CCC                  DDD         DDD      RRRRRRRRRRRR            SSSSSSSSS         EEEEEEEEEEEE         RRRRRRRRRRRR   \r
+CCC                  DDD         DDD      RRRRRRRRRRRR            SSSSSSSSS         EEEEEEEEEEEE         RRRRRRRRRRRR   \r
+CCC                  DDD         DDD      RRR   RRR                        SSS      EEE                  RRR   RRR      \r
+CCC                  DDD         DDD      RRR   RRR                        SSS      EEE                  RRR   RRR      \r
+CCC                  DDD         DDD      RRR   RRR                        SSS      EEE                  RRR   RRR      \r
+CCC                  DDD         DDD      RRR      RRR                     SSS      EEE                  RRR      RRR   \r
+CCC                  DDD         DDD      RRR      RRR                     SSS      EEE                  RRR      RRR   \r
+CCC                  DDD         DDD      RRR      RRR                     SSS      EEE                  RRR      RRR   \r
+   CCCCCCCCCCCC      DDDDDDDDDDDD         RRR         RRR      SSSSSSSSSSSS         EEEEEEEEEEEEEEE      RRR         RRR\r
+   CCCCCCCCCCCC      DDDDDDDDDDDD         RRR         RRR      SSSSSSSSSSSS         EEEEEEEEEEEEEEE      RRR         RRR\r
+   CCCCCCCCCCCC      DDDDDDDDDDDD         RRR         RRR      SSSSSSSSSSSS         EEEEEEEEEEEEEEE      RRR         RRR\r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  05:53:58\r
+File: DSKB0 :CDRSER.LST   [8,296] Created: 20-April-1967 05:51:00 Printed: 24-April-1978 05:53:31\r
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:1992 \r
+File will be deleted after printing\r
+\f\r
+CDRSER - CARD READER SERVICE   MACRO 10 05:51 24-APR-78 PAGE 1\r
+S      MAC     24-APR-78 21:40         8-2-65\r
+\r
+                                       XLIST\r
+                                      LIST\r
+                               TITLE CDRSER - CARD READER SERVICE\r
+                               SUBTTL  8-2-65\r
+                               EXTERNAL STODAT, ADVBFF, IOSET, SETIOD, SETBYT, STOSQD\r
+                               EXTERNAL CDRSAV, CDRCHN,  CDRRET,ILLOUT,PIOMOD\r
+                               INTERNAL CDRINT\r
+\r
+                               ;DEVICE DATA BLOCK LINKAGE\r
+                               EXTERNAL CDRDB,CDRDAT,CRDIS\r
+                               ENTRY CDRDSP\r
+\r
+\fCDRSER - CARD READER SERVICE  MACRO 10 05:51 24-APR-78 PAGE 2\r
+CDRSER MAC     24-APR-78 21:33         8-2-65\r
+\r
+\r
+\r
+\r
+                               ,CDR PARAMETER ASSIGNMENTS\r
+\r
+                               ,   CDR CONTROL REGISTER\r
+                       000010            CRDONE=10;            DONE FLAG\r
+                       000020            CRBUSY=20;            BUSY FLAG\r
+                       000040            CRBIN=40;             BINARY\r
+                       000100            CRALL=100;            ALL FLAG\r
+                       000200            CRMISS=200;           DATA MISSED\r
+                       000400            CREOC=400;            END OF CARD\r
+                       001000            CREOFF=1000;          END OF FILE\r
+                       002000            CRERR=2000;           ERROR\r
+                       000002            CHCHN=2\r
+                               ,   ACCUMULATORS\r
+                       000010            CRDAT1=TEM\r
+                       000011            CRAC=JDAT\r
+\r
+                               ,   SPECIAL IO STATUS WORD ASSIGNMENTS\r
+                       004000            CRMFST=40000;         FIRST CARD\r
+                       020000            CRMBIN=200000;                BINARY\r
+                       010000            CRMIMG=100000;                IMAGE\r
+                               ,   SPECIAL CHARACTERS\r
+                       000032            S2EOF=32;             END OF FILE\r
+\r
+                               REPEAT 0,<\r
+                               ,CDR DATA BLOCK\r
+                               \r
+                               CDRDAT:   SIXBIT /CRD\r
+                                34\r
+                                0\r
+                                EXP CDRDSP\r
+                                XWD 1400+PROG,10403\r
+                                0\r
+                                0 \r
+                                XWD PROG,0\r
+                                0\r
+                                0\r
+                               CRDIS:    JRST .\r
+                               >\r
+\r
+                               ,CDR SERVICE DISPATCH TABLE\r
+\r
+       000000' 715200  000000  CDRDSP:   CONO CR,0 ;RELEASE\r
+       000001' 263140  000000            POPJ PDP,;            CLOSE\r
+       000002' 254000  000000*           JRST ILLOUT           ;OUTPUT\r
+       000003' 254000  000004'           JRST CRINP;           INPUT\r
+--- Page break\r
+- 2 blank\r
+       000004' 621000  000002  CRINP:    TLZ IOS,IOBEG;        VIRGIN DEVICE?  IOBUF:=0\r
+\r
+       000005' 661000  004004  CDRIN1:   TLO IOS,IOFST+CRMFST;         IOFST:=CRMFST:=1\r
+       000006' 135040  000000*           LDB TAC,PIOMOD\r
+\r
+\fCDRSER - CARD READER SERVICE  MACRO 10 05:51 24-APR-78 PAGE 2-1\r
+CDRSER MAC     24-APR-78 21:33         8-2-65\r
+\r
+       000007' 306040  000014            CAIN TAC,B;           MODE=BINARY?\r
+       000010' 661000  020000            TLO IOS,CRMBIN;       YES.  CRMBIN:=1\r
+       000011' 306040  000010            CAIN TAC,I;           MODE=IMAGE?\r
+       000012' 661000  100000            TLO IOS,CRMIMG;       YES.  CRMIMG:=1\r
+       000013' 660000  010000            TRO IOS,IOACT;        IOACT:=1\r
+       000014' 202006  000002            MOVEM IOS,DEVIOS(DEVDAT)\r
+       000015' 260140  000000*           PUSHJ PDP,SETBYT;     TAC0-5:=TAC12-13:=0; TAC6-11:=BYTE SIZE\r
+       000016' 202046  000010            MOVEM TAC,DEVPTR(DEVDAT)\r
+       000017' 201040  000000*           MOVEI TAC, CDRCHN;    ASSIGN PI CHANNEL\r
+       000020' 715201  000160            CONO CR,CRBIN+CRALL+CRBUSY(TAC);              SELECT BINARY, ALL\r
+       000021' 263140  000000            POPJ PDP,;            RETURN\r
+\r
+\fCDRSER - CARD READER SERVICE  MACRO 10 05:51 24-APR-78 PAGE 3\r
+CDRSER MAC     24-APR-78 21:33         8-2-65\r
+\r
+--- two blank\r
+       000022' 715340  000010  CDRINT:   CONSO CR,CRDONE;      DONE FLAG?\r
+       000023' 254000  000022'           JRST CDRINT\r
+       000024' 265000  000000*           JSR CDRSAV;                   SAVE ACCUMULATORS AND ESTABLI\r
+       000025' 201300  000000*           MOVEI DEVDAT,CDRDAT\r
+       000026' 200006  000002            MOVE IOS,DEVIOS(DEVDAT)\r
+       000027' 715300  002200            CONSZ CR,  CRMISS+CRERR;      DATA MISSED OR ERROR?\r
+       000030' 660000  200000            TRO IOS,IODERR;       IODERR:=1\r
+       000031' 715040  000010            DATAI CR, CRDAT1;     INPUT INFORMATION\r
+       000032' 260140  000000*           PUSHJ PDP,IOSET;      PROG:=C(JBTADR18-35), ITEM:= C(DEVPTR)\r
+       000033' 627000  004000            TLZN IOS,CRMFST;      FIRST CARD?  CRMFST:=0\r
+       000034' 256000  000000*           XCT CRDIS             ;NOT FIRST, GO TO SUBROUTINE\r
+\r
+       000035' 640400  007400  CRFIRS:   TRC CRDAT1, 7400;     FIRST COL OF FIRST CARD\r
+       000036' 646400  007400            TRCN CRDAT1,7400;     Y, X, 0, OR 1 PUNCH?\r
+       000037' 254000  000047'           JRST CREOFC;                  NO, END OF FILE CARD\r
+       000040' 715300  001000            CONSZ CR, CREOFF;     END OF FILE?\r
+       000041' 254000  000051'           JRST CREOF;                   YES\r
+       000042' 603000  200000            TLNE IOS,CRMBIN;      CRMBIN=1?\r
+       000043' 254000  000125'           JRST CRFSTB;          YES\r
+       000044' 603000  100000            TLNE IOS,CRMIMG;      CRMIMG=1?\r
+       000045' 254000  000144'           JRST CRFSTI;          YES\r
+       000046' 254000  000067'           JRST CRFSTL+1\r
+\r
+       000047' 201040  000017* CREOFC:   MOVEI TAC,CDRCHN      ;WAIT FOR EOC\r
+       000050' 715201  000020            CONO CR,CRBUSY(TAC)\r
+       000051' 661000  000040  CREOF:    TLO IOS, IOEND;       IUEND:=1\r
+       000052' 201240  000032            MOVEI DAT,S2EOF\r
+       000053' 260140  000000*           PUSHJ PDP,STODAT;     STORE END OF FILE CHARACTER\r
+       000054' 330000  000000            SKIP\r
+       000055' 254000  000217'           JRST CRLST2;          BLOCK FULL OR BLOCK COMPLETE\r
+       000056' 201040  000056'           MOVEI TAC,.;          DATA STATED PROPERLY\r
+       000057' 542040  000034*           HRRM TAC, CRDIS;      SET DISPATCH TO RETURN HERE.\r
+       000060' 715340  000400            CONSO CR, CREOC;      END OF CARD?\r
+       000061' 254000  000226'           JRST CREXIT;          NO.\r
+       000062' 260140  000000*           PUSHJ PDP,ADVBFF;     ADVANCE BUFFER\r
+       000063' 330000  000000            SKIP\r
+       000064  661000  000002            TLO IOS,IOBEG;        IOBEG:=1\r
+       000065' 254000  000231'           JRST CROFF\r
+\r
+       000066' 260140  000164' CRFSTL:   PUSHJ PDP, CRITMS;    STORE ITEM\r
+       000067' 201040  000074'           MOVEI TAC,CRCV;       TAC:=CRCV.   HOLLERITH READ\r
+\r
+       000070' 715240  000002  CRREST:   CONI CR, TAC1\r
+       000071' 620100  000160            TRZ TAC1, CRBIN+CRALL+CRBUSY; SELECT HOLERITH, ALL:=0, BUS\r
+       000072' 715202  000000            CONO CR, (TAC1);      RESET CARD READER\r
+       000073' 254000  000112'           JRST CREXT1;          CHANGE DISPATCH AND GO\r
+\r
+blank line\fCDRSER - CARD READER SERVICE        MACRO 10 05:51 24-APR-78 PAGE 4\r
+CDRSER MAC     24-APR-78 21:33         8-2-65\r
+2 blank lines\r
+\r
+                               , HOLLERITH READ MODE\r
+\r
+       000074' 200440  000241' CRCV:     MOVE CRAC, [POINT 6,CRDAT1,23];       COLUMNS 79 AND 80\r
+       000075' 715340  000400            CONSO CR,CREOC;       END OF CARD?\r
+       000076' 200440  000142'           MOVE CRAC,CRC1;       NO.  LOOK AT ALL CHARACTERS\r
+       000077' 134040  000011            LDBI TAC,CRAC         ;CONVERT HOLLERITH\r
+       000100' 231040  000005            IDIVI TAC, 5;         TO ASCII\r
+       000101' 135242  000206'           LDB DAT, CRCV1(TAC1)\r
+       000102' 260140  000053*           PUSHJ PDP,STODAT;     STORE IN BU FER\r
+       000103' 254000  000052'           JRST CREOF+1\r
+       000104' 254000  000115'           JRST CRINS\r
+       000105' 603440  760000            TLNE CRAC, 760000;    WORD COMPLETE?\r
+       000106' 254000  000077'           JRST CRCV+3;          NO\r
+       000107' 715300  000400            CONSZ CR,CREOC;       END OF CARD?\r
+       000110' 254000  000115'           JRST CRINS;           YES\r
+       000111' 201040  000074'           MOVEI TAC, CRCV;      NEXT DISPATCH TO CRCV.  HOLLERITH READ\r
+\r
+       000112' 542040  000057* CREXT1:   HRRM TAC, CRDIS;      UPDATE DISPTACHER\r
+       000113' 254000  000226'           JRST CREXIT\r
+       000114' 000000  006424  CRCON:    OCT 6424\r
+\r
+       000115' 200440  000143' CRINS:    MOVE CRAC,CRC2;       BLOCK FULL OR BLOCK COMPLETE  INSERT CR\r
+       000116' 134240  000011            LDBI DAT, CRAC\r
+       000117' 260140  000102*           PUSHJ PDP,STODAT;     STORE CHAR\r
+       000120' 330000  000000            SKIP;                 EXIT1.\r
+       000121' 254000  000217'           JRST CRLST2;          EXIT2.  BLOCK FULL OR BLOCK COMPLETE\r
+       000122' 603440  760000            TLNE CRAC,760000;     THATS ALL?\r
+       000123' 254000  000116'           JRST CRINS+1;         NO\r
+       000124' 254000  000213'           JRST CRLAST;          END OF CARD\r
+\r
+\fCDRSER - CARD READER SERVICE  MACRO 10 05:51 24-APR-78 PAGE 5\r
+CDRSER MAC     24-APR-78 21:33         8-2-65\r
+\r
+\r
+                               , BINARY READ MODE\r
+\r
+       000125' 135040  000242' CRFSTB:   LDB TAC,[POINT 3,CRDAT1,35];  7-9 PUNCH?\r
+       000126' 302040  000005            CAIE TAC, 5\r
+       000127' 660000  400000            TRO IOS, IOIMPM;      YES.  IOIMPM:=1\r
+       000130' 715240  000001            CONI CR, TAC\r
+       000131' 620040  000120            TRZ TAC, CRBUSY+CRALL;        BUSY FLAG:=0, ALL FLAG;=0\r
+       000132' 715201  000000            CONO CR,(TAC);        RESET TO RE-READ COL 3\r
+       000133' 201040  000135'           MOVEI TAC, CRCOL2;    DISPATCH TO CRCOL2 ON NEXT INTERRUPT\r
+       000134' 254000  000112'           JRST CREXT1\r
+\r
+       000135' 201040  000137' CRCOL2:   MOVEI TAC, CRCOL4;    DISPATCH TO CRCOL4 ON NEXT INTERRUPT\r
+       000136' 542040  000112*           HRRM TAC,CRDIS\r
+\r
+       000137' 200240  000010  CRCOL4:   MOVE DAT, CRDAT1\r
+       000140' 260140  000165'           PUSHJ PDP, CRITMS+1;          STORE THE WORD FROM DAT\r
+       000141' 254000  000226'           JRST CREXIT\r
+\r
+       000142' 440600  000010  CRC1:     POINT 6,CRDAT1\r
+       000143' 170700  000114' CRC2:     POINT 7,CRCON,20\r
+\r
+\fCDRSER - CARD READER SERVICE  MACRO 10 05:51 24-APR-78 PAGE 6\r
+CDRSER MAC     24-APR-78 21:33         8-2-65\r
+\r
+\r
+                               ,IMAGE READ MODE\r
+\r
+       000144' 201040  000147' CRFSTI:   MOVEI TAC,  .+3;      DISPATCH TO CRFSTI + 3 ON NEXT INTERRUP\r
+       000145' 137400  000243'           DPB CRDAT1,[POINT 24,CRTEM,23];       SAVE COLUMN 1 AS MI\r
+       000146' 254000  000112'           JRST CREXT1\r
+\r
+       000147' 260140  000164'           PUSHJ PDP, CRITMS;    SET ITEM AND CHECK SIZE\r
+       000150' 434400  000240'           IOR CRDAT1, CRTEM;    CRTEM12-35:=COL 1 AND 2\r
+       000151' 201040  000153'           MOVEI TAC, .+2;       DISPATCH TO CRFSTI + 7 ON NEXT INTERRUP\r
+       000152' 254000  000157'           JRST CRIM1+1\r
+\r
+       000153' 715240  000002            CONI CR, TAC1\r
+       000154' 620100  000120            TRZ TAC1, CRBUSY+CRALL;       BUSY FLAG:=ALL FLAG:=0\r
+       000155' 715202  000000            CONO CR, (TAC1);      RESET READER ON COL 3\r
+\r
+       000156' 201040  000156' CRIM1:    MOVEI TAC,.;          DISPATCH TO CRIM1 ON NEXT INTERRUPT\r
+       000157' 715300  000400            CONSZ CR, CREOC;      END OF CARD?\r
+       000160' 254000  000213'           JRST CRLAST;          YES\r
+       000161' 202026  000010            MOVEM @DEVPTR(DEVDAT)\r
+       000162' 350006  000010            AOS DEVPTR(DEVDAT);   INCREMENT ITEM POINTER\r
+       000163' 254000  000112'           JRST CREXT1\r
+\r
+       000164' 661000  000004  CRITMS:   TLO IOS, IOFST;       IOFST:=1\r
+       000165' 260140  000117*           PUSHJ PDP, STODAT;    STORE WORD\r
+       000166' 254000  000052'           JRST CREOF+1\r
+       000167' 254000  000052'           JRST CREOF+1\r
+       000170' 263140  000000            POPJ PDP,;            RETURN\r
+\r
+       000171' 265426  231550  CRCNV:    ASCII ._123456789.\r
+       000172' 325546  734162\r
+       000173' 301730  057116            ASCII .0=@^'\ /ST.\r
+       000174' 561005  751650\r
+       000175' 526552  754262            ASCII .UVWXYZ;,(".\r
+       000176' 551665  424104\r
+       000177' 215125  545226            ASCII .#%-JKLMNOP.\r
+       000200' 462331  647640\r
+       000201' 506447  222124            ASCII .QR:$*[>&+A.\r
+       000202' 555744  625602\r
+       000203' 412070  442614            ASCII :BCDEFGHI?.:\r
+       000204' 436211  137534\r
+       000205' 246727  420576            ASCII :)]<!?:\r
+\r
+       000206' 350701  000171' CRCV1:    POINT 7,CRCNV(TAC),6\r
+       000207' 260701  000171'           POINT 7,CRCNV(TAC),13\r
+       000210' 170701  000171'           POINT 7,CRCNV(TAC),20\r
+       000211' 100701  000171'           POINT 7,CRCNV(TAC),27\r
+       000212' 010701  000171'           POINT 7,CRCNV(TAC),34\r
+\r
+\fCDRSER - CARD READER SERVICE  MACRO 10 05:51 24-APR-78 PAGE 7\r
+CDRSER MAC     24-APR-78 21:33         8-2-65\r
+\r
+\r
+       000213' 301200  000122  CRLAST:   CAIL ITEM,^D82;       C(ITEM)<82?\r
+       000214' 254000  000234'           JRST CRCONT;          NO\r
+       000215' 260140  000000* CRLST0:   PUSHJ PDP,STOSQD;     STORE WORD COUNT\r
+       000216' 330000  000000            SKIP\r
+       000217' 260140  000062* CRLST2:   PUSHJ PDP,ADVBFF;     ADVANCE BUFFER\r
+       000220' 254000  000231'           JRST CROFF;           EXIT1.  NECT BUFFER FULL\r
+       000221' 201040  000047*           MOVEI TAC, CDRCHN\r
+       000222' 715201  000160            CONO CR, CRBIN+CRALL+CRBUSY(TAC);     SELECT BINARY, ALL\r
+                                                               ,ASSIGN PI CHANNEL\r
+       000223' 661000  004004  CRLST1:   TLO IOS,IOFST+CRMFST;         IOFST:=CRMFST:=1\r
+       000224' 623000  000001            TLZE IOS, IOW;        IN A WAIT?  IOW:=0\r
+       000225' 260140  000000*           PUSHJ PDP, SETIOD;    IOWS:=1\r
+\r
+       000226' 202006  000002  CREXIT:   MOVEM IOS,DEVIOS(DEVDAT);     C(CRIOS):=C(IOS)\r
+       000227' 202206  000011            MOVEM ITEM, DEVCTR(DEVDAT);   C(CRCTR):=C(ITEM)\r
+       000230' 254000  000000*           JRST CDRRET;          RESTORE ACCUMULATORS AND DISMISS INTERR\r
+\r
+       000231' 620000  010000  CROFF:    TRZ IOS,IOACT;        IOACT:=0\r
+       000232' 715200  000000            CONO CR,0;            CLEAR CDR CONTROL REGISTER\r
+       000233' 254000  000223'           JRST CRLST1\r
+\r
+       000234' 201040  000221* CRCONT:   MOVEI TAC, CDRCHN;    ASSIGN PI CHANNEL\r
+       000235' 715201  000160            CONO CR, CRBIN+CRALL+CRBUSY(TAC);     SELECT BINARY, ALL,\r
+       000236' 661000  040000            TLO IOS,CRMFST;       CRMFST:=1\r
+       000237' 254000  000226'           JRST CREXIT\r
+\r
+       000240' 000000  000000  CRTEM:    0\r
+                               END,\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 000244\r
+\r
+9K CORE USED\r
+\r
+\fCDRSER - CARD READER SERVICE  MACRO 10 05:51 24-APR-78 PAGE 8\r
+CDRSER MAC     24-APR-78 21:33         SYMBOL TABLE\r
+\r
+A              000000  INT\r
+AC1            000015  INT\r
+AC2            000016  INT\r
+AC3            000017  INT\r
+ADVBFF         000217' EXT\r
+AL             000001  INT\r
+ASSCON         400000  INT\r
+ASSPRG         200000  INT\r
+B              000014  INT\r
+BUFPNT         000012  INT\r
+BUFWRD         000013  INT\r
+CDRCHN         000234' EXT\r
+CDRDAT         000025' EXT\r
+CDRDB          000000  EXT\r
+CDRDSP         000000' ENT\r
+CDRIN1         000005' \r
+CDRINT         000022' INT\r
+CDRRET         000230' EXT\r
+CDRSAV         000024' EXT\r
+CHCHN          000002  \r
+CLOSB          002000  INT\r
+CLSIN          000002  INT\r
+CLSOUT         000001  INT\r
+CR             000150  SPD\r
+CRAC           000011  \r
+CRALL          000100  \r
+CRBIN          000040  \r
+CRBUSY         000020  \r
+CRC1           000142' \r
+CRC2           000143' \r
+CRCNV          000171' \r
+CRCOL2         000135' \r
+CRCOL4         000137' \r
+CRCON          000114' \r
+CRCONT         000234' \r
+CRCV           000074' \r
+CRCV1          000206' \r
+CRDAT1         000010  \r
+CRDIS          000136' EXT\r
+CRDONE         000010  \r
+CREOC          000400  \r
+CREOF          000051' \r
+CREOFC         000047' \r
+CREOFF         001000  \r
+CRERR          002000  \r
+CREXIT         000226' \r
+CREXT1         000112' \r
+CRFIRS         000035' \r
+CRFSTB         000125' \r
+CRFSTI         000144' \r
+CRFSTL         000066' \r
+CRIM1          000156' \r
+\r
+\r
+\fCDRSER - CARD READER SERVICE  MACRO 10 05:51 24-APR-78 PAGE 8-1\r
+CDRSER MAC     24-APR-78 21:33         SYMBOL TABLE\r
+\r
+CRINP          000004' \r
+CRINS          000115' \r
+CRITMS         000164' \r
+CRLAST         000213' \r
+CRLST0         000215' \r
+CRLST1         000223' \r
+CRLST2         000217' \r
+CRMBIN         020000  \r
+CRMFST         004000  \r
+CRMIMG         010000  \r
+CRMISS         000200  \r
+CROFF          000231' \r
+CRREST         000070' \r
+CRTEM          000240' \r
+D              000017  INT\r
+DAT            000005  INT\r
+DCL            000001  INT\r
+DCW            020000  INT\r
+DDI            000007  INT\r
+DDO            000006  INT\r
+DDTMEM         000037  INT\r
+DDTSYM         000036  INT\r
+DEN            000004  INT\r
+DEVADR         000007  INT\r
+DEVBUF         000006  INT\r
+DEVCHR         000001  INT\r
+DEVCTR         000011  INT\r
+DEVDAT         000006  INT\r
+DEVIAD         000007  INT\r
+DEVIOS         000002  INT\r
+DEVLOG         000005  INT\r
+DEVMOD         000004  INT\r
+DEVNAM         000000  INT\r
+DEVOAD         000010  INT\r
+DEVPTR         000010  INT\r
+DEVSER         000003  INT\r
+DGF            000012  INT\r
+DIN            000003  INT\r
+DLK            000005  INT\r
+DOU            000002  INT\r
+DR             000016  INT\r
+DRL            000000  INT\r
+DSI            000011  INT\r
+DSO            000010  INT\r
+DTW            040000  INT\r
+DVAVAL         000040  INT\r
+DVCDR          100000  INT\r
+DVDIR          000004  INT\r
+DVDIRI         400000  INT\r
+DVIN           000002  INT\r
+DVLPT          040000  INT\r
+DVMTA          000020  INT\r
+DVOUT          000001  INT\r
+\r
+\fCDRSER - CARD READER SERVICE  MACRO 10 05:51 24-APR-78 PAGE 8-2\r
+CDRSER MAC     24-APR-78 21:33         SYMBOL TABLE\r
+\r
+DVTTY          000010  INT\r
+ENTRB          020000  INT\r
+I              000010  INT\r
+IB             000013  INT\r
+IBUFB          200000  INT\r
+ILLOUT         000002' EXT\r
+INITB          400000  INT\r
+INPB           010000  INT\r
+IO             000020  INT\r
+IOACT          010000  INT\r
+IOBEG          000002  INT\r
+IOBKTL         040000  INT\r
+IOCON          000040  INT\r
+IODEND         020000  INT\r
+IODERR         200000  INT\r
+IODISC         400000  INT\r
+IODONE         400000  INT\r
+IODTER         100000  INT\r
+IOEND          000040  INT\r
+IOFST          000004  INT\r
+IOIMPM         400000  INT\r
+IONRCK         000100  INT\r
+IORDEL         000100  INT\r
+IORET          000020  INT\r
+IOS            000000  INT\r
+IOSET          000032' EXT\r
+IOSTRT         000010  INT\r
+IOUSE          400000  INT\r
+IOW            000001  INT\r
+IOWC           000020  INT\r
+IOWS           400000  INT\r
+ITEM           000004  INT\r
+JBFADR         000000  INT\r
+JBFCTR         000002  INT\r
+JBFPTR         000001  INT\r
+JBUF           000005  INT\r
+JDAT           000011  INT\r
+JERR           002000  INT\r
+JIOW           100000  INT\r
+JNA            004000  INT\r
+LOOKB          040000  INT\r
+MTW            010000  INT\r
+OBUFB          100000  INT\r
+OUTPB          004000  INT\r
+PDP            000003  INT\r
+PICHN          000100  INT\r
+PIOMOD         000006' EXT\r
+PROG           000007  INT\r
+RUN            200000  INT\r
+RUNABL         204000  INT\r
+S2EOF          000032  \r
+SETBYT         000015' EXT\r
+SETIOD         000225' EXT\r
+\r
+\fCDRSER - CARD READER SERVICE  MACRO 10 05:51 24-APR-78 PAGE 8-3\r
+CDRSER MAC     24-APR-78 21:33         SYMBOL TABLE\r
+\r
+STODAT         000165' EXT\r
+STOSQD         000215' EXT\r
+TAC            000001  INT\r
+TAC1           000002  INT\r
+TEM            000010  INT\r
+TTYATC         020000  INT\r
+TTYUSE         010000  INT\r
+USRMOD         010000  INT\r
+UUO            000014  INT\r
+\f   CCCCCCCCCCCC      LLL                  KKK         KKK         CCCCCCCCCCCC         SSSSSSSSSSSS         SSSSSSSSSSSS\r
+   CCCCCCCCCCCC      LLL                  KKK         KKK         CCCCCCCCCCCC         SSSSSSSSSSSS         SSSSSSSSSSSS\r
+   CCCCCCCCCCCC      LLL                  KKK         KKK         CCCCCCCCCCCC         SSSSSSSSSSSS         SSSSSSSSSSSS\r
+CCC                  LLL                  KKK         KKK      CCC                  SSS                  SSS            \r
+CCC                  LLL                  KKK         KKK      CCC                  SSS                  SSS            \r
+CCC                  LLL                  KKK         KKK      CCC                  SSS                  SSS            \r
+CCC                  LLL                  KKK      KKK         CCC                  SSS                  SSS            \r
+CCC                  LLL                  KKK      KKK         CCC                  SSS                  SSS            \r
+CCC                  LLL                  KKK      KKK         CCC                  SSS                  SSS            \r
+CCC                  LLL                  KKKKKKKKK            CCC                     SSSSSSSSS            SSSSSSSSS   \r
+CCC                  LLL                  KKKKKKKKK            CCC                     SSSSSSSSS            SSSSSSSSS   \r
+CCC                  LLL                  KKKKKKKKK            CCC                     SSSSSSSSS            SSSSSSSSS   \r
+CCC                  LLL                  KKK      KKK         CCC                              SSS                  SSS\r
+CCC                  LLL                  KKK      KKK         CCC                              SSS                  SSS\r
+CCC                  LLL                  KKK      KKK         CCC                              SSS                  SSS\r
+CCC                  LLL                  KKK         KKK      CCC                              SSS                  SSS\r
+CCC                  LLL                  KKK         KKK      CCC                              SSS                  SSS\r
+CCC                  LLL                  KKK         KKK      CCC                              SSS                  SSS\r
+   CCCCCCCCCCCC      LLLLLLLLLLLLLLL      KKK         KKK         CCCCCCCCCCCC      SSSSSSSSSSSS         SSSSSSSSSSSS   \r
+   CCCCCCCCCCCC      LLLLLLLLLLLLLLL      KKK         KKK         CCCCCCCCCCCC      SSSSSSSSSSSS         SSSSSSSSSSSS   \r
+   CCCCCCCCCCCC      LLLLLLLLLLLLLLL      KKK         KKK         CCCCCCCCCCCC      SSSSSSSSSSSS         SSSSSSSSSSSS   \r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  05:53:58\r
+File: DSKB0 :CLKCSS.LST   [8,296] Created: 20-April-1967 05:51:00 Printed: 24-April-1978 05:53:32\r
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:1980 \r
+File will be deleted after printing\r
+\f\r
+CLKCSS - SCHEDULING ALOGRITHM  MACRO 10 05:51 24-APR-78 PAGE 1\r
+S      MAC     24-APR-78 21:40         T. HASTING 6-29-65\r
+\r
+                                       XLIST\r
+                                      LIST\r
+                               TITLE CLKCSS - SCHEDULING ALOGRITHM\r
+                               SUBTTL      T. HASTING 6-29-65\r
+                               ;SCHEDULING ALOGRITHM\r
+                               ;CALL:\r
+                               ;       PUSHJ PDP, NXTJOB\r
+                               ;       EXIT                    ;RETURN HIGHEST PRIORITY USER IN AC ITEM\r
+\r
+                               ;NEXJOB ASSUMES NO ACS SET EXCEPT PDP AND THAT IS MAY USE\r
+                               ;ANY OF THE OTHER ACS\r
+                               ;EXECUTION REQUIRES ROUGHLY 37 CYCLES FOR NORMAL CASE\r
+\r
+                               INTERNAL NXTJOB, QUANTS\r
+                               EXTERNAL IOCOMP,JOBN,JBTSTS,JOB\r
+                               EXTERNAL MTAVAL,DCAVAL,DTAVAL,SCNOFF,SCNON\r
+blank line+\r
+\r
+                       000002  T=TAC1    ;TEMPORARY AC\r
+                       000006  C=DEVDAT\r
+                       000005  P=DAT\r
+\r
+       000000' 200100  000000* NXTJOB:   MOVE T, IOCOMP        ;NO. OF COMPLETED IO JOBS\r
+       000001' 202100  000064'           MOVEM T, IOAVAL       ;MAKE SLOW IO LOOK LIKE FAST IO\r
+\r
+                               ;KEEP IO DEVICES BUSY\r
+       000002' 515240  777774            HRLZI P, -NUM         ;NO. OF IO DEVICES CATEGORIES TO CHECK\r
+       000003' 336025  000060' NXT0:     SKIPN @AVALTB(P)      ;NON-ZERO IF IO JUST BECOME AVAILABLE\r
+       000004' 253240  000003' NXT1:     AOBJN P, NXT0\r
+       000005' 327240  000026'           JUMPG P, NXT4         ;FINISHED YET\r
+       000006' 402025  000060'           SETZM @AVALTB(P)      ;IO DEVICE AVAIL. ACKNOWLEDGE FACT\r
+       000007' 200105  000065'           MOVE T,WAITB(P)       ;GET APPROPRIATE JOB STATUS BIT\r
+       000010' 200205  000071'           MOVE ITEM,JOBP(P)     ;SEARCH FOR WAITING JOB\r
+       000011' 350000  000004            AOS ITEM              ;LOOK AT EVERYONE ELSE FIRST\r
+       000012' 301200  000000* NXT2:     CAIL ITEM,JOBN        ;MODULO JOBN\r
+       000013' 201200  000001            MOVEI ITEM,1          ;SKIP NULL JOB\r
+       000014' 617104  000000*           TSNN T,JBTSTS(ITEM)   ;IS WAIT BIT SET FOR THIS JOB?\r
+       000015' 254000  000023'           JRST NXT3 ;NO. KEEP LOOKING\r
+       000016' 700600  000000*           CONO PI,SCNOFF        ;YES, TURN SCANNER CHAN. OFF(CONTROL C)\r
+       000017' 554044  000014*           HLRZ TAC,JBTSTS(ITEM)           ;IS JOB RUNABLE?\r
+       000020' 306042  204000            CAIN TAC,RUNABLE(T)\r
+       000021' 254000  000041'           JRST NXT7             ;YES, CLEAR BIT. SET RUN TIME. RETURN\r
+       000022' 700600  000000*           CONO PI,SCNON         ;NO. TURN SCANNER CHAN. ON. KEEP LOOKIN\r
+       000023' 312205  000071' NXT3:     CAME ITEM, JOBP(P)    ;HAVE ALL USERS BEEN LOOKED AT\r
+       000024' 344200  000012'           AOJA ITEM, NXT2       ;NO. KEEP LOOKING\r
+       000025' 254000  000004'           JRST NXT1             ;YES. SHOULD NOT HAPPEN\r
+\r
+\fCLKCSS - SCHEDULING ALOGRITHM MACRO 10 05:51 24-APR-78 PAGE 2\r
+CLKCSS MAC     24-APR-78 03:01         T. HASTING 6-29-65\r
+\r
+\r
+                               ;NO JOBS WAITING TO USE IO DEVICES\r
+                               ;HAS CURENT JOB USED ITS QUANTUM\r
+\r
+       000026' 201300  000012* NXT4:     MOVEI C,JOBN          ;GET READY FOR POSSIBLE LOOP\r
+       000027' 334200  000000*           SKIPA ITEM, JOB       ;CURRENTLY RUNNING JOB\r
+\r
+       000030' 350000  000004  NXT6:     AOS ITEM              ;LOOK AT NEXT JOB\r
+       000031' 301200  000026*           CAIL ITEM, JOBN       ;MODULO JOBN\r
+       000032' 201200  000001            MOVEI ITEM, 1         ;SKIP NULL JOB\r
+\r
+       000033' 554104  000017* NXT5:     HLRZ T, JBTSTS(ITEM)           ;IS THIS JOB RUNNABLE\r
+       000034' 306100  204000            CAIN T, RUNABLE\r
+       000035' 254000  000050'           JRST NXT9             ;YES,RETURN WITH ITEM SET\r
+       000036' 367300  000030' NXT5A:    SOJG C, NXT6          ;NO. LOOKED AT ALL JOBS YET?\r
+       000037' 403200  000002            SETZB ITEM,T          ;YES. INDICATE NULL JOB TO RUN\r
+       000040' 344100  000054'           AOJA T,NXT8           ;SET TO RUN FOR ONE CLOCK TICK\r
+\r
+       000041' 202205  000071' NXT7:     MOVEM ITEM, JOBP(P)   ;SAVE THIS JOB NO. FOR NEXT TIME\r
+       000042' 620042  000000            TRZ TAC,(T)           ;CLEAR WAIT BIT\r
+       000043' 506044  000033*           HRLM TAC,JBTSTS(ITEM)           ;IN JOB STATUS WORD\r
+       000044' 602100  400000            TRNE T,IOWS           ;IS WAIT BIT IOWS?\r
+       000045' 370000  000000*           SOS IOCOMP            ;YES, SUBTRACT REQUEST COUNT\r
+       000046' 700600  000022*           CONO PI,SCNON         ;TURN SCANNER CHANNEL BACK ON\r
+       000047' 254000  000053'           JRST NXT10            ;AND GO SET RUNNING TIME\r
+\r
+       000050' 550104  000043* NXT9:     HRRZ T,JBTSTS(ITEM)   ;HAS TIME GONE TO ZERO FOR THIS JOB?\r
+       000051' 602100  777777            TRNE T,-1\r
+       000052' 263140  000000            POPJ PDP,             ;NO\r
+       000053' 200105  000075' NXT10:    MOVE T, QUANTS(P)     ;SET QUANTUM RUNNING TIME FOR THIS QUEU\r
+       000054' 542104  000050* NXT8:     HRRM T, JBTSTS(ITEM)\r
+       000055' 316200  000027*           CAMN ITEM, JOB        ;IS THIS SAME AS OLD JOB?\r
+       000056' 326200  000036'           JUMPN ITEM, NXT5A     ;AND NOT NULL JOB\r
+       000057' 263140  000000            POPJ PDP,\r
+\r
+\fCLKCSS - SCHEDULING ALOGRITHM MACRO 10 05:51 24-APR-78 PAGE 3\r
+CLKCSS MAC     24-APR-78 03:01         T. HASTING 6-29-65\r
+\r
+\r
+                               ;FLAGS SET NON-ZERO WHEN IO DEVICES BECOME AVAILABLE\r
+\r
+       000060' 000000  000000* AVALTB:   EXP MTAVAL            ;MAG TAPE\r
+       000061' 000000  000000*           EXP DCAVAL            ;DATA CONTROL\r
+       000062' 000000  000000*           EXP DTAVAL            ;DECTAPE\r
+       000063' 000000  000064'           EXP IOAVAL            ;ALL OTHER DEVICES\r
+                       000004  NUM=.-AVALTB\r
+\r
+       000064' 000000  000000  IOAVAL:   0                     ;FLAG = NO. OF IO COMPLETED JOBS\r
+\r
+                               ;BIT IN STATUS WORD MEANING JOB WAITING TO USE DEVICE\r
+       000065' 000000  010000  WAITB:    EXP MTW\r
+       000066' 000000  020000            EXP DCW\r
+       000067' 000000  040000            EXP DTW\r
+       000070' 000000  400000            EXP IOWS\r
+\r
+                               ;LAST JOB SCHEDULED FOR DEVICE\r
+                               JOBP:     REPEAT NUM,\r
+                               <         EXP 1\r
+                               >\r
+       000071' 000000  000001            EXP 1\r
+\r
+       000072' 000000  000001            EXP 1\r
+\r
+       000073' 000000  000001            EXP 1\r
+\r
+       000074' 000000  000001            EXP 1\r
+\r
+\r
+                               ;QUANTUM TIMES FOR EACH QUEUE\r
+\r
+       000075' 000000  000004  QUANTS:   EXP 4                 ;MAGTAPE QUEUE\r
+       000076' 000000  000004            EXP 4                 ;DATA CONTROL QUEUE\r
+       000077' 000000  000004            EXP 4                 ;DECTAPE QUEUE\r
+       000100' 000000  000006            EXP 6                 ;IOWAIT SATISFIED QUEUE\r
+       000101' 000000  000017            EXP QUANT1            ;STRAIGHT COMPUTATION QUEUE\r
+\r
+                               XP  QUANT1,^D15;        STRAIGHT COMPUTATION QUEUE\r
+\r
+                                         END,\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 000102\r
+\r
+9K CORE USED\r
+\r
+\fCLKCSS - SCHEDULING ALOGRITHM MACRO 10 05:51 24-APR-78 PAGE 4\r
+CLKCSS MAC     24-APR-78 03:01         SYMBOL TABLE\r
+\r
+A              000000  INT\r
+AC1            000015  INT\r
+AC2            000016  INT\r
+AC3            000017  INT\r
+AL             000001  INT\r
+ASSCON         400000  INT\r
+ASSPRG         200000  INT\r
+AVALTB         000060' \r
+B              000014  INT\r
+BUFPNT         000012  INT\r
+BUFWRD         000013  INT\r
+C              000006  \r
+CLOSB          002000  INT\r
+CLSIN          000002  INT\r
+CLSOUT         000001  INT\r
+D              000017  INT\r
+DAT            000005  INT\r
+DCAVAL         000061' EXT\r
+DCL            000001  INT\r
+DCW            020000  INT\r
+DDI            000007  INT\r
+DDO            000006  INT\r
+DDTMEM         000037  INT\r
+DDTSYM         000036  INT\r
+DEN            000004  INT\r
+DEVADR         000007  INT\r
+DEVBUF         000006  INT\r
+DEVCHR         000001  INT\r
+DEVCTR         000011  INT\r
+DEVDAT         000006  INT\r
+DEVIAD         000007  INT\r
+DEVIOS         000002  INT\r
+DEVLOG         000005  INT\r
+DEVMOD         000004  INT\r
+DEVNAM         000000  INT\r
+DEVOAD         000010  INT\r
+DEVPTR         000010  INT\r
+DEVSER         000003  INT\r
+DGF            000012  INT\r
+DIN            000003  INT\r
+DLK            000005  INT\r
+DOU            000002  INT\r
+DR             000016  INT\r
+DRL            000000  INT\r
+DSI            000011  INT\r
+DSO            000010  INT\r
+DTAVAL         000062' EXT\r
+DTW            040000  INT\r
+DVAVAL         000040  INT\r
+DVCDR          100000  INT\r
+DVDIR          000004  INT\r
+DVDIRI         400000  INT\r
+\r
+\r
+\fCLKCSS - SCHEDULING ALOGRITHM MACRO 10 05:51 24-APR-78 PAGE 4-1\r
+CLKCSS MAC     24-APR-78 03:01         SYMBOL TABLE\r
+\r
+DVIN           000002  INT\r
+DVLPT          040000  INT\r
+DVMTA          000020  INT\r
+----\r
+DVOUT          000001  INT\r
+DVTTY          000010  INT\r
+ENTRB          020000  INT\r
+I              000010  INT\r
+IB             000013  INT\r
+IBUFB          200000  INT\r
+INITB          400000  INT\r
+INPB           010000  INT\r
+IO             000020  INT\r
+IOACT          010000  INT\r
+IOAVAL         000064' \r
+IOBEG          000002  INT\r
+IOBKTL         040000  INT\r
+IOCOMP         000045' EXT\r
+IOCON          000040  INT\r
+IODEND         020000  INT\r
+IODERR         200000  INT\r
+IODISC         400000  INT\r
+IODONE         400000  INT\r
+IODTER         100000  INT\r
+IOEND          000040  INT\r
+IOFST          000004  INT\r
+IOIMPM         400000  INT\r
+IONRCK         000100  INT\r
+IORDEL         000100  INT\r
+IORET          000020  INT\r
+IOS            000000  INT\r
+IOSTRT         000010  INT\r
+IOUSE          400000  INT\r
+IOW            000001  INT\r
+IOWC           000020  INT\r
+IOWS           400000  INT\r
+ITEM           000004  INT\r
+JBFADR         000000  INT\r
+JBFCTR         000002  INT\r
+JBFPTR         000001  INT\r
+JBTSTS         000054' EXT\r
+JBUF           000005  INT\r
+JDAT           000011  INT\r
+JERR           002000  INT\r
+JIOW           100000  INT\r
+JNA            004000  INT\r
+JOB            000055' EXT\r
+JOBN           000031' EXT\r
+JOBP           000071' \r
+LOOKB          040000  INT\r
+MTAVAL         000060' EXT\r
+MTW            010000  INT\r
+NUM            000004  \r
+NXT0           000003' \r
+\r
+\fCLKCSS - SCHEDULING ALOGRITHM MACRO 10 05:51 24-APR-78 PAGE 4-2\r
+CLKCSS MAC     24-APR-78 03:01         SYMBOL TABLE\r
+\r
+NXT1           000004' \r
+NXT10          000053' \r
+NXT2           000012' \r
+NXT3           000023' \r
+NXT4           000026' \r
+NXT5           000033' \r
+NXT5A          000036' \r
+NXT6           000030' \r
+NXT7           000041' \r
+NXT8           000054' \r
+NXT9           000050' \r
+NXTJOB         000000' INT\r
+OBUFB          100000  INT\r
+OUTPB          004000  INT\r
+P              000005  \r
+PDP            000003  INT\r
+PI             000004  SPD\r
+PICHN          000100  INT\r
+PROG           000007  INT\r
+QUANT1         000017  INT\r
+QUANTS         000075' INT\r
+RUN            200000  INT\r
+RUNABL         204000  INT\r
+SCNOFF         000016' EXT\r
+SCNON          000046' EXT\r
+T              000002  \r
+TAC            000001  INT\r
+TAC1           000002  INT\r
+TEM            000010  INT\r
+TTYATC         020000  INT\r
+TTYUSE         010000  INT\r
+USRMOD         010000  INT\r
+UUO            000014  INT\r
+WAITB          000065' \r
+\f   CCCCCCCCCCCC      LLL                     OOOOOOOOO            CCCCCCCCCCCC      KKK         KKK                     \r
+   CCCCCCCCCCCC      LLL                     OOOOOOOOO            CCCCCCCCCCCC      KKK         KKK                     \r
+   CCCCCCCCCCCC      LLL                     OOOOOOOOO            CCCCCCCCCCCC      KKK         KKK                     \r
+CCC                  LLL                  OOO         OOO      CCC                  KKK         KKK                     \r
+CCC                  LLL                  OOO         OOO      CCC                  KKK         KKK                     \r
+CCC                  LLL                  OOO         OOO      CCC                  KKK         KKK                     \r
+CCC                  LLL                  OOO         OOO      CCC                  KKK      KKK                        \r
+CCC                  LLL                  OOO         OOO      CCC                  KKK      KKK                        \r
+CCC                  LLL                  OOO         OOO      CCC                  KKK      KKK                        \r
+CCC                  LLL                  OOO         OOO      CCC                  KKKKKKKKK                           \r
+CCC                  LLL                  OOO         OOO      CCC                  KKKKKKKKK                           \r
+CCC                  LLL                  OOO         OOO      CCC                  KKKKKKKKK                           \r
+CCC                  LLL                  OOO         OOO      CCC                  KKK      KKK                        \r
+CCC                  LLL                  OOO         OOO      CCC                  KKK      KKK                        \r
+CCC                  LLL                  OOO         OOO      CCC                  KKK      KKK                        \r
+CCC                  LLL                  OOO         OOO      CCC                  KKK         KKK                     \r
+CCC                  LLL                  OOO         OOO      CCC                  KKK         KKK                     \r
+CCC                  LLL                  OOO         OOO      CCC                  KKK         KKK                     \r
+   CCCCCCCCCCCC      LLLLLLLLLLLLLLL         OOOOOOOOO            CCCCCCCCCCCC      KKK         KKK                     \r
+   CCCCCCCCCCCC      LLLLLLLLLLLLLLL         OOOOOOOOO            CCCCCCCCCCCC      KKK         KKK                     \r
+   CCCCCCCCCCCC      LLLLLLLLLLLLLLL         OOOOOOOOO            CCCCCCCCCCCC      KKK         KKK                     \r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  05:53:58\r
+File: DSKB0 :CLOCK .LST   [8,296] Created: 20-April-1967 05:51:00 Printed: 24-April-1978 05:53:32\r
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:1974 \r
+File will be deleted after printing\r
+\f\r
+CLOCK - CLOCK SERVICE ROUTINE  MACRO 10 05:51 24-APR-78 PAGE 1\r
+S      MAC     24-APR-78 21:40         T. HASTINGS 6-2-65\r
+\r
+                                       XLIST\r
+                                      LIST\r
+                               TITLE CLOCK - CLOCK SERVICE ROUTINE\r
+                               SUBTTL      T. HASTINGS 6-2-65\r
+                               INTERNAL CLOCK, CLKINI,NULJOB,APRINT,RSCHED\r
+                               EXTERNAL APRSAV, APRRET, APRCHN,APRILM,APRCHL\r
+                               EXTERNAL COMCNT,COMMAND,JOB,JOBADR,APRSAC,JOBDAC,JOBPDP,JOBREL\r
+                               EXTERNAL USRPDP,JOBPFU,JOBPC,JBTADR,JOBADR,JOBDAT,USRPFU,CLDS,NXTJOB\r
+                               EXTERNAL STOPU,SCHEDF,TIME,JOBLEV,JOBUXT,UUO0,JOBDHI,CLKOFF,JBTSTS\r
+\r
+                               ;CLOCK WILL TIME AN INTERVAL AND PUSHJ PDP, TO AN ADDRESS\r
+                               ;AFTER THE INTERVAL HAS EXPIRED\r
+                               ;TO MAKE A REQUEST:\r
+                               ;       CONO PI,PIOFF\r
+                               ;       DPBI AC,CLOCK\r
+                               ;       CONO PI,PION\r
+                               ;AC MUST CONTAIN- XWD ADDRESS,NUMBER OF CLOCK COUNTS+DATA*1000\r
+                               ;THE HIGH ORDER SIX BITS OF THE RIGHT HALF(DATA) ARE PLACED IN AC\r
+                               ;TAC RIGHT JUSTIFIED BEFORE THE PUSHJ PDP, ADDRES IS DONE\r
+\r
+                               ;SYSTEM FLAGS:\r
+                               ; STOPU IS SET NON-ZERO AT EITHER INTERRUPT SERVICE LEVEL OR\r
+                               ;   UUO LEVEL AND A CLOCK INTERRUPT IS REQUESTED WHEN CURRENT\r
+                               ;   JOB MUST BE STOPPED AND ANOTHER ONE RUN.\r
+                               ; SCHEDF IS SET NON-ZERO BY CLOCK ROUTINE WHEN IF IS IN THE PROCESS\r
+                               ;   OF RESCHEDULING.  IT IS CLEARED AFTER JOB HAS BEEN SET TO\r
+                               ;   CURRENTLY RUNNING JOB.\r
+                               ; TIME IS THE TIME SYSTEM HAS RUN IN 60THS OF A SECOND\r
+\r
+                       000200  PION=200\r
+                       000400  PIOFF=400\r
+\r
+                       000005  STOR=DAT\r
+                       000001  T=TAC\r
+                       000011  JA=JDAT\r
+\r
+       000000' 004400  000000' CLOCK:    POINT 36,CIPWT-1,35           ;BYTE POINTER TO CLOCK QUEUE\r
+       000001'                 CIPWT:    BLOCK 12                      ;THE QUEUE\r
+\r
+       000013' 201000  000000' CLKINI:   MOVEI CIPWT-1                 ;SET UP BYTE POINTER\r
+       000014' 542000  000000'           HRRM CLOCK\r
+       000015' 263140  000000            POPJ PDP,\r
+\r
+\fCLOCK - CLOCK SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 2\r
+CLOCK  MAC     24-APR-78 03:29         T. HASTINGS 6-2-65\r
+\r
+\r
+       000016' 254000  000020' APRINT:   JRST .+2              ;HERE ON APR INTERRUPT\r
+       000017' 254000  000017'           JRST .                ;TO OTHER DEVICES ON THIS CHANNEL\r
+       000020' 700340  230000            CONSO APR,230000              ;IS IT ANY OF THE OTHERS\r
+       000021' 254000  000024'           JRST CIP0             ;NO. GO CHECK CLOCK\r
+       000022' 264000  000000*           JSR APRSAV                    ;YES, SAVE ACS\r
+       000023' 254000  000000*           JRST APRILM                   ;AND GO PROCESS ILLEGAL MEMOR\r
+       000024' 700340  002000  CIP0:     CONSO APR, 2000       ;IS CLOCK ENABLED\r
+       000025' 254000  000030'           JRST CIP1  ;NO. GO TO OTHER DEVICES\r
+       000026' 700300  001000            CONSZ APR, 1000       ;YES, DID CLOCK CAUSE INTERRUPT\r
+       000027' 254000  000034'           JRST CIP2             ;YES\r
+       000030' 336000  000000* CIP1:     SKIPN STOPU           ;NO, IS THIS A REQUEST INTERRUPT\r
+       000031' 254000  000017'           JRST APRINT+1         ;NO. GO TO OTHER DEVICES\r
+       000032' 264000  000022* CIP1B:    JSR APRSAV            ;YES, SAVE ACS\r
+       000033' 254000  000064'           JRST CIP6             ;RESCHEDULE BUT DONT TIME\r
+\r
+\fCLOCK - CLOCK SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 3\r
+CLOCK  MAC     24-APR-78 03:29         T. HASTINGS 6-2-65\r
+\r
+\r
+       000034' 264000  000032* CIP2:     JSR APRSAV                    ;SAVE ACS\r
+       000035' 350000  000000*           AOS TIME              ;INCREMENT TIME\r
+       000036' 200040  000000*           MOVE TAC,JOB          ;DECREMENT CURRENT JOBS RUNNING TIME\r
+       000037' 370001  000000*           SOS JBTSTS(TAC)\r
+       000040' 700200  000000*           CONO APR,CLKOFF       ;TURN CLOCK FLAG OFF\r
+\r
+                               ;PROCESS TIMING REQUESTS STORED IN QUEUE\r
+       000041' 550240  000000'           HRRZ STOR, CLOCK      ;GET END OF LIST\r
+       000042' 306240  000000' CIP4:     CAIN STOR, CIPWT-1    ;END YET\r
+       000043' 254000  000062'           JRST CIP5             ;YES\r
+       000044' 370105  000000            SOS TAC1, (STOR)      ;DECREMENT TIMING REQUEST\r
+       000045' 602100  007777            TRNE TAC1, 7777       ;TIME EXPIRED YET\r
+       000046' 364240  000042'           SOJA STOR, CIP4       ;NO, CONTINUE SCAN\r
+       000047' 700600  000400            CONO PI, PIOFF        ;YES. MOVE LAST ITEM IN LIST TO THS\r
+       000050' 200060  000000'           MOVE TAC, @CLOCK\r
+       000051' 370000  000000'           SOS CLOCK\r
+       000052' 700600  000200            CONO PI, PION\r
+       000053' 202045  000000            MOVEM TAC, (STOR)\r
+       000054' 135040  000143'           LDB TAC, [POINT 6, TAC1, 23]  ;GET 6 BIT DATA ITEM\r
+       000055' 207000  000002            MOVSS TAC1            ;SETUP DISPATCH ADDRESS\r
+       000056' 261140  000005            PUSH PDP, STOR        ;SAVE ONLY VALUABLE AC\r
+       000057' 260142  000000            PUSHJ PDP, (TAC1)     ;AND DISPATCH TO TIMING REQUEST ROUTINE\r
+       000060' 262140  000005            POP PDP, STOR\r
+       000061' 364240  000042'           SOJA STOR, CIP4       ;GO BACK FOR MORE REQUESTS\r
+\r
+       000062' 332000  000000* CIP5:     SKIPE COMCNT          ;ANY COMMANDS TO PROCESS\r
+       000063' 260140  000000*           PUSHJ PDP, COMMAND    ;YES\r
+       000064'                 RSCHED:                         ;RESCHEDULE, HERE AFTER APRILM\r
+       000064' 402000  000030* CIP6:     SETZM STOPU           ;CLEAR INTERRUPT REQUEST FLAG\r
+       000065' 476000  000000*           SETOM SCHEDF          ;FLAG THAT SCHEDULING IS IN PROGRESS\r
+       000066' 260140  000000*           PUSHJ PDP, NXTJOB     ;RETURN HIGHEST PRIORITY JOB IN AC ITEM\r
+       000067' 316200  000036*           CAMN ITEM, JOB        ;IS IT SAME AS CURRENT JOB\r
+       000070' 254000  000136'           JRST CIP8 ;YES, EXIT\r
+\r
+\fCLOCK - CLOCK SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 4\r
+CLOCK  MAC     24-APR-78 03:29         T. HASTINGS 6-2-65\r
+\r
+\r
+                               ;DIFFERENT JOB, SAVE OLD JOB\r
+       000071' 336000  000067*           SKIPN JOB             ;IS OLD JOB THE NULL JOB\r
+       000072' 254000  000110'           JRST CIP7             ;YES, DONT BOTHER TO SAVE ANYTHING\r
+       000073' 200440  000000*           MOVE JA, JOBADR       ;NO. MOVE CHANNEL ACS TO USER JOB AREA\r
+       000074' 201051  000000*           MOVEI T,JOBDAC(JA)\r
+       000075' 505040  000000*           HRLI T, APRSAC\r
+       000076' 251051  000000*           BLT T, JOBDHI(JA)\r
+       000077' 201051  000000*           MOVEI T, JOBPDP(JA)   ;MOVE JOB STATE VARIABLES TO JOB DATA A\r
+       000100' 505040  000000*           HRLI T, USRPDP\r
+       000101' 251051  000000*           BLT T, JOBPFU(JA)\r
+       000102' 200040  000040            MOVE T, 40                    ;SAVE LOC. 40\r
+       000103' 202051  000000*           MOVEM T, JOBLEV(JA)\r
+       000104' 200040  000000*           MOVE T, UUO0                  ;AND UUO PC\r
+       000105' 202051  000000*           MOVEM T, JOBUXT(JA)\r
+       000106' 200040  000000*           MOVE T, APRCHL        ;SET C(CHANNEL INTERRUPT LOC.) AS PC\r
+       000107' 202051  000000*           MOVEM T, JOBPC(JA)\r
+\r
+\r
+\fCLOCK - CLOCK SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 5\r
+CLOCK  MAC     24-APR-78 03:29         T. HASTINGS 6-2-65\r
+\r
+\r
+                               ;RESTOR NEW JOB\r
+       000110' 202200  000071* CIP7:     MOVEM ITEM, JOB       ;STORE NEW CURRENT JOB NUMBER\r
+       000111' 403000  000065*           SETZB 0,SCHEDF        ;INDICATE SCHEDULING FINISHED\r
+       000112' 322200  000140'           JUMPE ITEM, NUL0      ;IS NEW JOB NULL JOB\r
+       000113' 200444  000000*           MOVE JA, JBTADR(ITEM)         ;SETUP STATE VARIABLES FOR CU\r
+       000114' 552440  000073*           HRRZM JA, JOBADR      ;IN SYSTEM AREA\r
+       000115' 552440  000000*           HRRZM JA, JOBDAT\r
+       000116' 556451  000000*           HLRZM JA, JOBREL(JA)          ;SET RELOCATION AND PROTECTION\r
+       000117' 700140  000011            DATAO JA\r
+       000120' 201040  000100*           MOVEI T,USRPDP\r
+       000121' 505051  000077*           HRLI T, JOBPDP(JA)    ;MOVE JOB STATE VARIABLES TO SYSTEM ARE\r
+       000122' 251040  000000*           BLT T, USRPFU\r
+       000123' 200051  000103*           MOVE T, JOBLEV(JA)    ;RESTORE LOC. 40\r
+       000124' 202040  000040            MOVEM T, 40\r
+       000125' 200051  000105*           MOVE T, JOBUXT(JA)    ;AND UUO PC\r
+       000126' 202040  000104*           MOVEM T, UUO0\r
+       000127' 200051  000107*           MOVE T, JOBPC(JA)     ;SET C(CHANNEL LOC.) TO C(JOBPC)\r
+       000130' 202040  000106*           MOVEM T, APRCHL\r
+       000131' 205751  000074*           MOVSI 17, JOBDAC(JA)          ;RESTORE USER ACS\r
+       000132' 251740  000017            BLT 17,17\r
+       000133' 332000  000064*           SKIPE STOPU           ;HAS STOPU BEEN SET SINCE CIP6\r
+       000134' 254000  000032'           JRST CIP1B                    ;YES, GO RESCHEDULE\r
+       000135' 254520  000130*           JEN @APRCHL           ;NO. DISMISS CHANNEL\r
+\r
+       000136' 402000  000111* CIP8:     SETZM SCHEDF                  ;CLEAR SCHEDULING FLAG\r
+       000137' 254000  000000*           JRST APRRET                   ;AND DISMISS INTERRUPT\r
+\r
+                               ;THE NULL JOB\r
+       000140' 254400  000141' NUL0:     JRST 10, NULJOB       ;RENABLE AND RUN IN EXEC. MODE\r
+\r
+       000141' 200040  000142' NULJOB:   MOVE 1,.+1\r
+       000142' 344000  000001            AOJA 0,1  ;COUNT IN AC0 FOR VISUAL MONITORING\r
+                                                               ;ALSO PC = 1\r
+                                         END,\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 000144\r
+\r
+9K CORE USED\r
+\r
+\fCLOCK - CLOCK SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 6\r
+CLOCK  MAC     24-APR-78 03:29         SYMBOL TABLE\r
+\r
+A              000000  INT\r
+AC1            000015  INT\r
+AC2            000016  INT\r
+AC3            000017  INT\r
+AL             000001  INT\r
+APR            000000  SPD\r
+APRCHL         000135' EXT\r
+APRCHN         000000  EXT\r
+APRILM         000023' EXT\r
+APRINT         000016' INT\r
+APRRET         000137' EXT\r
+APRSAC         000075' EXT\r
+APRSAV         000034' EXT\r
+ASSCON         400000  INT\r
+ASSPRG         200000  INT\r
+B              000014  INT\r
+BUFPNT         000012  INT\r
+BUFWRD         000013  INT\r
+CIP0           000024' \r
+CIP1           000030' \r
+CIP1B          000032' \r
+CIP2           000034' \r
+CIP4           000042' \r
+CIP5           000062' \r
+CIP6           000064' \r
+CIP7           000110' \r
+CIP8           000136' \r
+CIPWT          000001' \r
+CLDS           000000  EXT\r
+CLKINI         000013' INT\r
+CLKOFF         000040' EXT\r
+CLOCK          000000' INT\r
+CLOSB          002000  INT\r
+CLSIN          000002  INT\r
+CLSOUT         000001  INT\r
+COMCNT         000062' EXT\r
+COMMAN         000063' EXT\r
+D              000017  INT\r
+DAT            000005  INT\r
+DCL            000001  INT\r
+DCW            020000  INT\r
+DDI            000007  INT\r
+DDO            000006  INT\r
+DDTMEM         000037  INT\r
+DDTSYM         000036  INT\r
+DEN            000004  INT\r
+DEVADR         000007  INT\r
+DEVBUF         000006  INT\r
+DEVCHR         000001  INT\r
+DEVCTR         000011  INT\r
+DEVDAT         000006  INT\r
+DEVIAD         000007  INT\r
+\r
+\r
+\fCLOCK - CLOCK SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 6-1\r
+CLOCK  MAC     24-APR-78 03:29         SYMBOL TABLE\r
+\r
+DEVIOS         000002  INT\r
+DEVLOG         000005  INT\r
+DEVMOD         000004  INT\r
+DEVNAM         000000  INT\r
+DEVOAD         000010  INT\r
+DEVPTR         000010  INT\r
+DEVSER         000003  INT\r
+DGF            000012  INT\r
+DIN            000003  INT\r
+DLK            000005  INT\r
+DOU            000002  INT\r
+DR             000016  INT\r
+DRL            000000  INT\r
+DSI            000011  INT\r
+DSO            000010  INT\r
+DTW            040000  INT\r
+DVAVAL         000040  INT\r
+DVCDR          100000  INT\r
+DVDIR          000004  INT\r
+DVDIRI         400000  INT\r
+DVIN           000002  INT\r
+DVLPT          040000  INT\r
+DVMTA          000020  INT\r
+DVOUT          000001  INT\r
+DVTTY          000010  INT\r
+ENTRB          020000  INT\r
+I              000010  INT\r
+IB             000013  INT\r
+IBUFB          200000  INT\r
+INITB          400000  INT\r
+INPB           010000  INT\r
+IO             000020  INT\r
+IOACT          010000  INT\r
+IOBEG          000002  INT\r
+IOBKTL         040000  INT\r
+IOCON          000040  INT\r
+IODEND         020000  INT\r
+IODERR         200000  INT\r
+IODISC         400000  INT\r
+IODONE         400000  INT\r
+IODTER         100000  INT\r
+IOEND          000040  INT\r
+IOFST          000004  INT\r
+IOIMPM         400000  INT\r
+IONRCK         000100  INT\r
+IORDEL         000100  INT\r
+IORET          000020  INT\r
+IOS            000000  INT\r
+IOSTRT         000010  INT\r
+IOUSE          400000  INT\r
+IOW            000001  INT\r
+IOWC           000020  INT\r
+IOWS           400000  INT\r
+\r
+\fCLOCK - CLOCK SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 6-2\r
+CLOCK  MAC     24-APR-78 03:29         SYMBOL TABLE\r
+\r
+ITEM           000004  INT\r
+JA             000011  \r
+JBFADR         000000  INT\r
+JBFCTR         000002  INT\r
+JBFPTR         000001  INT\r
+JBTADR         000113' EXT\r
+JBTSTS         000037' EXT\r
+JBUF           000005  INT\r
+JDAT           000011  INT\r
+JERR           002000  INT\r
+JIOW           100000  INT\r
+JNA            004000  INT\r
+JOB            000110' EXT\r
+JOBADR         000114' EXT\r
+JOBDAC         000131' EXT\r
+JOBDAT         000115' EXT\r
+JOBDHI         000076' EXT\r
+JOBLEV         000123' EXT\r
+JOBPC          000127' EXT\r
+JOBPDP         000121' EXT\r
+JOBPFU         000101' EXT\r
+JOBREL         000116' EXT\r
+JOBUXT         000125' EXT\r
+LOOKB          040000  INT\r
+MTW            010000  INT\r
+NUL0           000140' \r
+NULJOB         000141' INT\r
+NXTJOB         000066' EXT\r
+OBUFB          100000  INT\r
+OUTPB          004000  INT\r
+PDP            000003  INT\r
+PI             000004  SPD\r
+PICHN          000100  INT\r
+PIOFF          000400  \r
+PION           000200  \r
+PROG           000007  INT\r
+RSCHED         000064' INT\r
+RUN            200000  INT\r
+RUNABL         204000  INT\r
+SCHEDF         000136' EXT\r
+STOPU          000133' EXT\r
+STOR           000005  \r
+T              000001  \r
+TAC            000001  INT\r
+TAC1           000002  INT\r
+TEM            000010  INT\r
+TIME           000035' EXT\r
+TTYATC         020000  INT\r
+TTYUSE         010000  INT\r
+USRMOD         010000  INT\r
+USRPDP         000120' EXT\r
+USRPFU         000122' EXT\r
+UUO            000014  INT\r
+\r
+\fCLOCK - CLOCK SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 6-3\r
+CLOCK  MAC     24-APR-78 03:29         SYMBOL TABLE\r
+\r
+UUO0           000126' EXT\r
+\f   CCCCCCCCCCCC         OOOOOOOOO         MMM         MMM         CCCCCCCCCCCC         OOOOOOOOO         NNN         NNN\r
+   CCCCCCCCCCCC         OOOOOOOOO         MMM         MMM         CCCCCCCCCCCC         OOOOOOOOO         NNN         NNN\r
+   CCCCCCCCCCCC         OOOOOOOOO         MMM         MMM         CCCCCCCCCCCC         OOOOOOOOO         NNN         NNN\r
+CCC                  OOO         OOO      MMMMMM   MMMMMM      CCC                  OOO         OOO      NNN         NNN\r
+CCC                  OOO         OOO      MMMMMM   MMMMMM      CCC                  OOO         OOO      NNN         NNN\r
+CCC                  OOO         OOO      MMMMMM   MMMMMM      CCC                  OOO         OOO      NNN         NNN\r
+CCC                  OOO         OOO      MMM   MMM   MMM      CCC                  OOO         OOO      NNNNNN      NNN\r
+CCC                  OOO         OOO      MMM   MMM   MMM      CCC                  OOO         OOO      NNNNNN      NNN\r
+CCC                  OOO         OOO      MMM   MMM   MMM      CCC                  OOO         OOO      NNNNNN      NNN\r
+CCC                  OOO         OOO      MMM         MMM      CCC                  OOO         OOO      NNN   NNN   NNN\r
+CCC                  OOO         OOO      MMM         MMM      CCC                  OOO         OOO      NNN   NNN   NNN\r
+CCC                  OOO         OOO      MMM         MMM      CCC                  OOO         OOO      NNN   NNN   NNN\r
+CCC                  OOO         OOO      MMM         MMM      CCC                  OOO         OOO      NNN      NNNNNN\r
+CCC                  OOO         OOO      MMM         MMM      CCC                  OOO         OOO      NNN      NNNNNN\r
+CCC                  OOO         OOO      MMM         MMM      CCC                  OOO         OOO      NNN      NNNNNN\r
+CCC                  OOO         OOO      MMM         MMM      CCC                  OOO         OOO      NNN         NNN\r
+CCC                  OOO         OOO      MMM         MMM      CCC                  OOO         OOO      NNN         NNN\r
+CCC                  OOO         OOO      MMM         MMM      CCC                  OOO         OOO      NNN         NNN\r
+   CCCCCCCCCCCC         OOOOOOOOO         MMM         MMM         CCCCCCCCCCCC         OOOOOOOOO         NNN         NNN\r
+   CCCCCCCCCCCC         OOOOOOOOO         MMM         MMM         CCCCCCCCCCCC         OOOOOOOOO         NNN         NNN\r
+   CCCCCCCCCCCC         OOOOOOOOO         MMM         MMM         CCCCCCCCCCCC         OOOOOOOOO         NNN         NNN\r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  05:53:58\r
+File: DSKB0 :COMCON.LST   [8,296] Created: 20-April-1967 05:51:00 Printed: 24-April-1978 05:53:32\r
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:1965 \r
+File will be deleted after printing\r
+\f\r
+COMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES   MACRO 10 05:51 24-APR-78 PAGE 1\r
+S      MAC     24-APR-78 21:40         T.HASTINGS 8-2-65\r
+\r
+                                       XLIST\r
+                                      LIST\r
+                                       TITLE COMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES\r
+                                       SUBTTL T.HASTINGS 8-2-65\r
+                               ;CALLED FROM COMMAND DECODER WHICH IS CALLED FROM CLOCK ROUTINE\r
+                               ;WITH FOLLOWING ACS SET:\r
+                               ;TAC= BYTE POINTER TO COMMAND STRING(SPACE OR CR AFTER COMMAND NAME)\r
+                               ;ITEM = JOB NUMBER\r
+                               ;DAT = BYTE POINTER TO LAST OUTPUT CHARACTER\r
+                               ;DEVDAT= ADDRESS OF DEVICE DATA BLOCK INITIATING COMMAND\r
+                               ;JDAT = ADDRESS OF JOB DATA AREA, = 0 IF NO JOB AREA\r
+\r
+                               ;UPON RETURN FROM COMMAND SETUP ROUTINE, A CR-LF IS ADDED IF\r
+                               ;NEEDED AND TTY IS STARTED\r
+\r
+                               ;SINCE THE COMMAND DECODER IS CALLED FROM THE CLOCK ROUTINE\r
+                               ;COMMAND SETUP ROUTINES MUST RUN TO COMPLETION QUICKLY\r
+                               ;IF A COMMAND FUNCTION CANNOT DO THIS, IT MUST JUST SET\r
+                               ;THE JOB TO A RUNNABLE STATUS AND RETURN I MEDIATELY\r
+\r
+                               ; "IJOB" - INITIALIZE JOB\r
+                               INTERNAL IJOB\r
+                               EXTERNAL RADX10,JOBINI,JOBKIL,CRLF,MONJOB\r
+\r
+       000000' 254000  000000* IJOB:   JRST JOBINI\r
+\r
+                               ;PRINT JOB NUMBER\r
+\r
+                                       INTERNAL PJOB\r
+       000001' 200040  000004  PJOB:   MOVE TAC, ITEM\r
+       000002' 260140  000000*         PUSHJ PDP,RADX10\r
+       000003' 254000  000000*         JRST CRLF\r
+\r
+                               ;KILL JOB(MUST HAVE CORE ASSIGNED)\r
+\r
+                                       INTERNAL KJOB\r
+       000004' 254000  000000* KJOB:   JRST JOBKIL\r
+\r
+\fCOMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES  MACRO 10 05:51 24-APR-78 PAGE 2\r
+COMCON MAC     24-APR-78 01:00         T.HASTINGS 8-2-65\r
+\r
+\r
+\r
+                               ; "START L" OR "START" - START AT LOC. L OR STARTING ADDRESS\r
+                               INTERNAL START\r
+                               EXTERNAL OCTIN,JOBSA,START1,COMERA,STARTU,CPOPJ,CPOPJ1,STARTM\r
+\r
+       000005' 260140  000013' START:  PUSHJ PDP,STRT\r
+       000006' 254000  000000*         JRST COMERA     ;ERROR\r
+       000007' 254000  000000*         JRST STARTU     ;GO SET JOB TO START(CONSOLE IN USER MO\r
+\r
+                               ; "STARTC L" OR  "STARTC" - START AT LOC. L(TTY IN COMMAND MODE)\r
+\r
+                               INTERNAL STARTC\r
+                               EXTERNAL STARTM\r
+\r
+       000010' 260140  000013' STARTC: PUSHJ PDP,STRT\r
+       000011' 254000  000006*         JRST COMERA     ;ERROR\r
+       000012' 254000  000000*         JRST STARTM     ;FO SET JOB TO START(TTY IN COM. MODE)\r
+\r
+                               ;ROUTINE TO SCAN ARGUMENT\r
+\r
+       000013' 260140  000000* STRT:   PUSHJ PDP,OCTIN ;CONVERT OCTAL NO,\r
+       000014' 254000  000016'         JRST ST2        ;EITHER NO NUMBER OR ERROR\r
+       000015' 254000  000020'         JRST ST3        ;START JOB C(TAC1)\r
+\r
+       000016' 326100  000000* ST2:    JUMPN TAC1, CPOPJ       ;NOT A NUMBER IF NON-ZERO\r
+       000017' 550111  000000*         HRRZ TAC1, JOBSA(JDAT)          ;NO, START AT STARTING ADDRES\r
+       000020' 505100  001000  ST3:    HRLI TAC1, 1000         ;USER MODE FLAG\r
+       000021' 254000  000000*         JRST CPOPJ1             ;OR RETURN\r
+\r
+\fCOMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES  MACRO 10 05:51 24-APR-78 PAGE 3\r
+COMCON MAC     24-APR-78 01:00         T.HASTINGS 8-2-65\r
+\r
+\r
+\r
+                               ; "CONT" - CONTINUE EXECUTION FROM WHERE LEFT OFF\r
+                               INTERNAL CONT\r
+                               EXTERNAL CONTU,CONMES,JBTSTS\r
+\r
+       000022' 205100  002000  CONT:   MOVSI TAC1, JERR\r
+       000023' 616104  000000*         TDNN TAC1, JBTSTS(ITEM)         ;IS JOB ERROR BIT SET?\r
+       000024' 254000  000000*         JRST CONTU                      ;NO, GO SET JOB TO CONTINUE\r
+       000025' 265040  000000* CONTA:  JSP TAC,CONMES          ;YES, PRINT CANT CONTINUE\r
+\r
+       000026' 416031  623650          ASCIZ /CAN'T CONTINUE\r
+       000027' 202071  747250\r
+       000030' 446352  542432\r
+       000031' 050000  000000  /\r
+\r
+                               ; "CONTC" - CONTINUE EXECUTION(TTY REMAINS IN COMMAND MODE)\r
+\r
+                               INTERNAL CONTC\r
+                               EXTERNAL CONTM\r
+\r
+       000032' 205100  002000  CONTC:  MOVSI TAC1, JERR\r
+       000033' 616104  000023*         TDNN TAC1, JBTSTS(ITEM)         ;IS JOB ERROR BIT SET?\r
+       000034' 254000  000000*         JRST CONTM      ;NO\r
+       000035' 254000  000025'         JRST CONTA      ;YES\r
+\r
+                               ; "DDT" - START EXECUTION AT DDT IN USER AREA\r
+                               INTERNAL DDTGO\r
+                               EXTERNAL JOBDDT,STARTU\r
+\r
+       000036' 550111  000000* DDTGO:  HRRZ TAC1, JOBDDT(JDAT)         ;GET DDT STARTING ADDRESS\r
+       000037' 326100  000043'         JUMPN TAC1,DDT1         ;GO START JOB IF NON-ZERO\r
+       000040' 265040  000025*         JSP TAC,CONMES                  ;ZERO, PRINT"NO DDT"\r
+\r
+       000041' 472364  042210          ASCII /NO DDT\r
+       000042' 520321  200000  /\r
+\r
+       000043' 505100  010000  DDT1:   HRLI TAC1,USRMOD        ;USER MODE BIT\r
+       000044' 254000  000007*         JRST STARTU             ;GO SET TO RUN JOB\r
+                               ;DIGITAL MAYNARD\r
+\r
+                               INTERNAL DIGITAL\r
+\r
+       000045' 265040  000040* DIGITAL:        JSP TAC,CONMES\r
+       000046' 442131  446236          ASCIZ /HELLO\r
+       000047' 064240  000000  /\r
+\r
+\fCOMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES  MACRO 10 05:51 24-APR-78 PAGE 4\r
+COMCON MAC     24-APR-78 01:00         T.HASTINGS 8-2-65\r
+\r
+\r
+\r
+\r
+\r
+                               ; "CORE  #" - ASSIGNS #*1024 WORDS OF CORE TO JOB\r
+                               ;   "CORE" WITH NO ARGUMENT IS EQUIVALENT TO "CORE 0"\r
+\r
+                               INTERNAL CORE\r
+                               EXTERNAL CORE1,DECIN,ANYRIN,CONMES,COMERA,NOTENF\r
+                               EXTERNAL JOBPFI,JBTADR,CPOPJ,JOBPRT,JOBPR1,JOBZER\r
+                               EXTERNAL RADX10\r
+\r
+       000050' 260140  000000* CORE:   PUSHJ PDP, DECIN        ;GET NO. OF 1K BLOCKS\r
+       000051' 254000  000077'         JRST COR3               ;ERROR\r
+       000052' 336040  000002          SKIPN TAC,TAC1          ;IS ZERO BEING ASKED FOR?\r
+       000053' 326440  000000*         JUMPN JDAT,JOBZER       ;YES, RELEASE ALL DEVICES IF THERE WAS\r
+       000054' 260140  000000*         PUSHJ PDP,CORE1\r
+       000055' 254000  000065'         JRST COR2               ;CORE NOT AVAILABLE (AC TAC = BLO CKS L\r
+       000056' 550444  000000*         HRRZ JDAT, JBTADR(ITEM)         ;CORE GRANTED, CLEAR PART OF\r
+       000057' 322440  000016*         JUMPE JDAT, CPOPJ       ;UNLESS ALL CORE WAS RETURNED\r
+       000060' 402011  000000*         SETZM JOBPRT(JDAT)              ;CLEAR PART PROTECTED FROM IO\r
+       000061' 505051  000060*         HRLI TAC,JOBPRT(JDAT)\r
+       000062' 541051  000000*         HRRI TAC, JOBPR1(JDAT)\r
+       000063' 251051  000000*         BLT TAC, JOBPFI(JDAT)\r
+       000064' 263140  000000          POPJ PDP,\r
+\r
+       000065' 260140  000002* COR2:   PUSHJ PDP,RADX10        ;PRINT NO. OF FREE 1K BLOCKS LEFT\r
+       000066' 265040  000045*         JSP TAC,CONMES\r
+\r
+       000067' 202152  242612          ASCIZ / FREE 1K BLOCKS LEFT, NONE ASSIGNED\r
+       000070' 201431  320204\r
+       000071' 462370  345646\r
+       000072' 202310  543250\r
+       000073' 261011  647634\r
+       000074' 425010  151646\r
+       000075' 446171  642610\r
+       000076' 064240  000000  /\r
+       000077' 326100  000011* COR3:   JUMPN TAC1, COMERA      ;NOT A NO. IF NON-ZERO, APPEND "?"\r
+       000100' 254000  000000*         JRST NOTENF             ;NOT ENOUGH ARGUMENT\r
+\r
+\fCOMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES  MACRO 10 05:51 24-APR-78 PAGE 5\r
+COMCON MAC     24-APR-78 01:00         T.HASTINGS 8-2-65\r
+\r
+\r
+\r
+                               ; "SAVE FILE-NAME" - SAVES JOB AREA ON RETRIEVABLE DEVICE\r
+                               ;ONLY A SAVE OR A GET IN PROGRESS FOR EACH JOB\r
+                               ;NO ATTEMPT IS MADE TO SAVE DEVICE ASSIGNMENTS, ACS, OR PC\r
+                               INTERNAL SAVE\r
+                               EXTERNAL SAVJOB,START1,SGSET\r
+\r
+       000101' 201100  000000* SAVE:   MOVEI TAC1, SAVJOB      ;SETUP TO RUN SAVJOB\r
+       000102' 254000  000000*         JRST SGSET\r
+\r
+                               ; "GET DEVICE:FILE-NAME" - SETS UP JOB AREA FROM RETRIEVABLE DEVICE\r
+                               INTERNAL GET\r
+                               EXTERNAL GETJOB\r
+\r
+       000103' 201100  000000* GET:    MOVEI TAC1, GETJOB      ;SETUP TO RUN GET JOB\r
+       000104' 254000  000102*         JRST SGSET\r
+\r
+\fCOMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES  MACRO 10 05:51 24-APR-78 PAGE 6\r
+COMCON MAC     24-APR-78 01:00         T.HASTINGS 8-2-65\r
+\r
+\r
+\r
+\r
+                               ;"ASSIGN DEV:NAME" - ASSIGNS DEV TO JOB AND GIVES IT LOGICAL NAME NAM\r
+\r
+                               ;TEMPORARY ACS\r
+                       000012          T1=BUFPNT\r
+                       000013          T=BUFWRD\r
+\r
+                               INTERNAL ASSIGN\r
+                               EXTERNAL CTEXT1, NOTENF, DEVLST, ASSASG, CONMES, PJOBN, ANYRDX, ERNAM\r
+                               EXTERNAL CRLF, DEVLG,SYSTAP\r
+\r
+       000105' 260140  000000* ASSIGN: PUSHJ PDP, CTEXT1       ;GET FIRST ARGUMENT\r
+       000106' 322100  000100*         JUMPE TAC1, NOTENF      ;NO ARGUMENTS TYPED IF 0\r
+       000107' 200500  000002          MOVE T1, TAC1                   ;SAVE DEVICE NAME\r
+       000110' 261140  400000          PUSH PDP, ASSCON        ;SAVE INPUT BYTE POINTER\r
+       000111' 201100  400000          MOVEI TAC1, ASSCON      ;SETUP ASSIGNED BY CONSOLE BIT\r
+       000112' 554300  000000* ASSN:   HLRZ DEVDAT, DEVLST\r
+       000113' 312506  000000  ASSG0:  CAME T1,DEVNAM(DEVDAT)          ;DOES PHYSICAL NAME MATCH?\r
+       000114' 254000  000120'         JRST ASSG1              ;NO\r
+       000115' 260140  000000*         PUSHJ PDP, ASSASG       ;YES, TRY TO ASSIGN DEVICE\r
+       000116' 254000  000135'         JRST ASSER1             ;ALREADY ASSIGNED TO ANOTHER JOB\r
+       000117' 254000  000151'         JRST ASSFIN             ;ASSIGNED\r
+\r
+       000120' 200046  000000  ASSG1:  MOVE TAC,DEVNAM(DEVDAT)         ;IS THIS THE SYSTEM TAPE?\r
+       000121' 316040  000000*         CAMN TAC,SYSTAP\r
+       000122' 254000  000131'         JRST ASSG2              ;YES\r
+       000123' 135540  000000*         LDB T, PJOBN            ;SAVE OLD JOB NUMBER FOR THIS\r
+       000124' 620040  777777          TRZ TAC,-1              ;COMPARE LEFT HALF ONLY\r
+       000125' 316040  000012          CAMN TAC, T1\r
+       000126' 260140  000115*         PUSHJ PDP, ASSASG       ;MATCH, TRY TO ASSIGN IT\r
+       000127' 254000  000131'         JRST ASSG2              ;KEEP LOOKING\r
+       000130' 322540  000151'         JUMPE T,ASSFIN          ;IF OLD JOB NUMBER 0, DEVICE PREVIOSLY\r
+\r
+       000131' 554306  000003  ASSG2:  HLRZ DEVDAT, DEVSER(DEVDAT)\r
+       000132' 326300  000113'         JUMPN DEVDAT, ASSG0\r
+       000133' 262140  000001          POP PDP, TAC\r
+       000134' 254000  000211'         JRST NOTDEV             ;PRINT NO SUCH DEVICE\r
+\r
+\fCOMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES  MACRO 10 05:51 24-APR-78 PAGE 7\r
+COMCON MAC     24-APR-78 01:00         T.HASTINGS 8-2-65\r
+\r
+\r
+\r
+                               ;ALREADY ASSIGNED TO ANOTHER JOB\r
+\r
+       000135' 262140  000001  ASSER1: POP PDP, TAC\r
+       000136' 201040  000144'         MOVEI TAC, ASSMS2\r
+       000137' 260140  000066*         PUSHJ PDP, CONMES\r
+       000140' 201100  000012          MOVEI TAC1, ^D10\r
+       000141' 135040  000123*         LDB TAC, PJOBN\r
+       000142' 260140  000000*         PUSHJ PDP,ANYRDX\r
+       000143' 254000  000003*         JRST CRLF\r
+\r
+       000144' 406312  242602  ASSMS2: ASCIZ /ALREADY ASSIGNED TO JOB /\r
+       000145' 422624  040646\r
+       000146' 516230  747212\r
+       000147' 421012  447500\r
+       000150' 452370  220000\r
+\r
+                               ;DEVICE ASSIGNED, GIVE IT A LOGICAL NAME\r
+\r
+       000151' 262140  000001  ASSFIN: POP PDP,TAC     ;RESTORE INPUT BYTE POINTER\r
+       000152' 261140  000006          PUSH PDP,DEVDAT ;SAVE DDB ADDRESS\r
+       000153' 260140  000105*         PUSHJ PDP,CTEXT1        ;GET SECOND ARG, LOGICAL DEVICE NAME\r
+       000154' 332040  000002          SKIPE TAC,TAC1  ;IS THERE A LOGICAL NAME SPECIFIED?\r
+       000155' 260140  000000*         PUSHJ PDP, DEVLG        ;YES, SEE IF IT IS ALREADY IN USE\r
+                                                               ;BY THIS USER\r
+       000156' 254000  000161'         JRST ASSF1                      ;NO\r
+       000157' 201040  000173'         MOVEI TAC,LOGERR        ;YES, PRINT ERROR\r
+       000160' 260140  000137*         PUSHJ PDP,CONMES\r
+       000161' 200303  000000  ASSF1:  MOVE DEVDAT,(PDP)       ;RESTORE DDB ADDRESS\r
+       000162' 202106  000005          MOVEM TAC1,DEVLOG(DEVDAT)       ;STORE IN DEVICE DATA BLOCK\r
+       000163' 205100  400000          MOVSI TAC1,DVDIRIN      ;CLEAR DIRECTORY IN CORE BIT\r
+       000164' 412106  000004          ANDCAM TAC1,DEVMOD(DEVDAT)\r
+       000165' 260140  000000*         PUSHJ PDP, ERNAM        ;PRINT PHYSICAL DEVICE NAME\r
+       000166' 262140  000006          POP PDP, DEVDAT\r
+       000167' 265040  000160*         JSP TAC,CONMES\r
+\r
+       000170' 202032  351622          ASCIZ / ASSIGNED\r
+       000171' 436350  542032\r
+       000172' 050000  000000  /\r
+\r
+       000173' 462370  744606  LOGERR: ASCIZ /LOGICAL NAME ALREADY IN USE, /\r
+       000174' 406304  047202\r
+       000175' 466124  040630\r
+       000176' 512130  142262\r
+       000177' 202231  620252\r
+       000200' 516125  420000\r
+\r
+\fCOMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES  MACRO 10 05:51 24-APR-78 PAGE 8\r
+COMCON MAC     24-APR-78 01:00         T.HASTINGS 8-2-65\r
+\r
+\r
+\r
+                               ;"DEASSIGN DEV" - DEASSIGNS DEVICE FROM CONSOLE\r
+\r
+                               INTERNAL DEASSIGN, NOTDEV\r
+                               EXTERNAL CTEXT1, DEVSRC, CONMES, ERNAM, DEASG, DEASTY\r
+\r
+       000201' 260140  000153* DEASSIGN: PUSHJ PDP, CTEXT1     ;GET DEVICE NAME\r
+       000202' 322100  000000*         JUMPE TAC1,DEASTY       ;NO ARG. IF 0, DEASSIGN ALL BUT TTY\r
+       000203' 200040  000002          MOVE TAC, TAC1          ;DEVICE NAME\r
+       000204' 260140  000000*         PUSHJ PDP, DEVSRC       ;SEARCH FOR DEVICE\r
+       000205' 254000  000211'         JRST DEAER1             ;NOT FOUND\r
+       000206' 260140  000000*         PUSHJ PDP, DEASG        ;FOUND, DEASSIGN IT\r
+       000207' 254000  000216'         JRST DEAER2             ;NOT PREVIOUSLY ASSIGNED\r
+       000210' 263140  000000          POPJ PDP,               ;DEVICE DEASSIGNED\r
+\r
+       000211'                 NOTDEV:\r
+       000211' 265040  000167* DEAER1: JSP TAC,CONMES          ;PRINT NO SUCH DEVICE\r
+\r
+       000212' 472364  051652          ASCIZ /NO SUCH DEVICE\r
+       000213' 416204  042212\r
+       000214' 532230  342432\r
+       000215' 050000  000000  /\r
+\r
+       000216' 261140  000006  DEAER2: PUSH PDP, DEVDAT        ;PRINT PHYSICAL DEVICE NAME\r
+       000217' 260140  000165*         PUSHJ PDP, ERNAM\r
+       000220' 262140  000006          POP PDP, DEVDAT\r
+       000221' 265040  000211*         JSP TAC,CONMES\r
+\r
+       000222' 536032  347116          ASCIZ /WASN'T ASSIGNED\r
+       000223' 521010  151646\r
+       000224' 446171  642610\r
+       000225' 064240  000000  /\r
+\r
+\fCOMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES  MACRO 10 05:51 24-APR-78 PAGE 9\r
+COMCON MAC     24-APR-78 01:00         T.HASTINGS 8-2-65\r
+\r
+\r
+\r
+                               ; "ATTACH N" - ATTACH CONSOLE TO JOB N\r
+                               ;CHANGES ADDRESS OF TTY DEVICE DATA BLOCK STORED IN -1(PDP)\r
+                               ;BY THE COMMAND DECODER\r
+\r
+                               INTERNAL ATTACH\r
+                               EXTERNAL DECIN,TTYATT,JOBN,ERNAM,CONMES,TTYFND\r
+\r
+       000226' 260140  000050* ATTACH: PUSHJ PDP,DECIN         ;GET JOB NO.\r
+       000227' 254000  000243'         JRST ATT1               ;NOT A NUMBER OR NONE SPECIFIEED\r
+       000230' 332000  000002          SKIPE TAC1                      ;0 IS ILLEGAL\r
+       000231' 301100  000000*         CAIL TAC1, JOBN         ;IS JOB NUMBER TOO BIG?\r
+       000232' 254000  000243'         JRST ATT1               ;ILLEGAL JOB NUMBER\r
+       000233' 205040  004000          MOVSI TAC,JNA           ;HAS THIS JOB NO BEEN ASSIGNED?\r
+       000234' 616042  000033*         TDNN TAC,JBTSTS(TAC1)\r
+       000235' 254000  000261'         JRST ATT4               ;NO, PRINT ERROR\r
+       000236' 200200  000002          MOVE ITEM,TAC1          ;JOB NUMBER TO ITEM\r
+       000237' 260140  000000*         PUSHJ PDP,TTYATT        ;NO, ATTACH TTY\r
+       000240' 254000  000251'         JRST ATT2               ;ERROR CANT ATTACH\r
+       000241' 202303  777777          MOVEM DEVDAT,-1(PDP)            ;CHANGE DEV DATA BLOCK ADDRES\r
+       000242' 254000  000000*         JRST TTYFND             ;ATTACHED. GO SET UP OUTP. BYTE PTR.\r
+\r
+       000243' 265040  000221* ATT1:   JSP TAC,CONMES\r
+       000244' 446311  442616          ASCIZ /ILLEGAL JOB NUMBER\r
+       000245' 406304  045236\r
+       000246' 411011  652632\r
+       000247' 412132  206424  /\r
+       000250' 000000  000000\r
+\r
+       000251' 261140  000006  ATT2:   PUSH PDP,DEVDAT\r
+       000252' 260140  000217*         PUSHJ PDP,ERNAM         ;PRINT TTY DEVICE NAME\r
+       000253' 262140  000001          POP PDP,TAC\r
+       000254' 265040  000243*         JSP TAC,CONMES\r
+       000255' 202031  451212          ASCIZ / ALREADY ATTACHED\r
+       000256' 406113  120202\r
+       000257' 522510  141620\r
+       000260' 426101  505000  /\r
+\r
+       000261' 265040  000254* ATT4:   JSP TAC,CONMES\r
+       000262' 452370  220234          ASCIZ /JOB NEVER WAS INITIATED\r
+       000263' 426550  551100\r
+       000264' 536032  320222\r
+       000265' 472232  444602\r
+       000266' 522130  406424  /\r
+       000267' 000000  000000\r
+\r
+                               ; "DETACH" - DETACH CONSOLE FORM JOB\r
+\r
+                               INTERNAL DETACH\r
+                               EXTERNAL TTYDET\r
+\r
+       000270' 350003  000000  DETACH: AOS (PDP)       ;SUPRESS CR-LF SO NO TTY DDB SETUP\r
+\r
+\fCOMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES  MACRO 10 05:51 24-APR-78 PAGE 9-1\r
+COMCON MAC     24-APR-78 01:00         T.HASTINGS 8-2-65\r
+\r
+       000271' 254000  000000*         JRST TTYDET     ;GO DETACH TTY\r
+\r
+                                       END,\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 000272\r
+\r
+9K CORE USED\r
+\r
+\fCOMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES  MACRO 10 05:51 24-APR-78 PAGE 10\r
+COMCON MAC     24-APR-78 01:00         SYMBOL TABLE\r
+\r
+A              000000  INT\r
+AC1            000015  INT\r
+AC2            000016  INT\r
+AC3            000017  INT\r
+AL             000001  INT\r
+ANYRDX         000142' EXT\r
+ANYRIN         000000  EXT\r
+ASSASG         000126' EXT\r
+ASSCON         400000  INT\r
+ASSER1         000135' \r
+ASSF1          000161' \r
+ASSFIN         000151' \r
+ASSG0          000113' \r
+ASSG1          000120' \r
+ASSG2          000131' \r
+ASSIGN         000105' INT\r
+ASSMS2         000144' \r
+ASSN           000112' \r
+ASSPRG         200000  INT\r
+ATT1           000243' \r
+ATT2           000251' \r
+ATT4           000261' \r
+ATTACH         000226' INT\r
+B              000014  INT\r
+BUFPNT         000012  INT\r
+BUFWRD         000013  INT\r
+CLOSB          002000  INT\r
+CLSIN          000002  INT\r
+CLSOUT         000001  INT\r
+COMERA         000077' EXT\r
+CONMES         000261' EXT\r
+CONT           000022' INT\r
+CONTA          000025' \r
+CONTC          000032' INT\r
+CONTM          000034' EXT\r
+CONTU          000024' EXT\r
+COR2           000065' \r
+COR3           000077' \r
+CORE           000050' INT\r
+CORE1          000054' EXT\r
+CPOPJ          000057' EXT\r
+CPOPJ1         000021' EXT\r
+CRLF           000143' EXT\r
+CTEXT1         000201' EXT\r
+D              000017  INT\r
+DAT            000005  INT\r
+DCL            000001  INT\r
+DCW            020000  INT\r
+DDI            000007  INT\r
+DDO            000006  INT\r
+DDT1           000043' \r
+DDTGO          000036' INT\r
+\r
+\r
+\fCOMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES  MACRO 10 05:51 24-APR-78 PAGE 10-1\r
+COMCON MAC     24-APR-78 01:00         SYMBOL TABLE\r
+\r
+DDTMEM         000037  INT\r
+DDTSYM         000036  INT\r
+DEAER1         000211' \r
+DEAER2         000216' \r
+DEASG          000206' EXT\r
+DEASSI         000201' INT\r
+DEASTY         000202' EXT\r
+DECIN          000226' EXT\r
+DEN            000004  INT\r
+DETACH         000270' INT\r
+DEVADR         000007  INT\r
+DEVBUF         000006  INT\r
+DEVCHR         000001  INT\r
+DEVCTR         000011  INT\r
+DEVDAT         000006  INT\r
+DEVIAD         000007  INT\r
+DEVIOS         000002  INT\r
+DEVLG          000155' EXT\r
+DEVLOG         000005  INT\r
+DEVLST         000112' EXT\r
+DEVMOD         000004  INT\r
+DEVNAM         000000  INT\r
+DEVOAD         000010  INT\r
+DEVPTR         000010  INT\r
+DEVSER         000003  INT\r
+DEVSRC         000204' EXT\r
+DGF            000012  INT\r
+DIGITA         000045' INT\r
+DIN            000003  INT\r
+DLK            000005  INT\r
+DOU            000002  INT\r
+DR             000016  INT\r
+DRL            000000  INT\r
+DSI            000011  INT\r
+DSO            000010  INT\r
+DTW            040000  INT\r
+DVAVAL         000040  INT\r
+DVCDR          100000  INT\r
+DVDIR          000004  INT\r
+DVDIRI         400000  INT\r
+DVIN           000002  INT\r
+DVLPT          040000  INT\r
+DVMTA          000020  INT\r
+DVOUT          000001  INT\r
+DVTTY          000010  INT\r
+ENTRB          020000  INT\r
+ERNAM          000252' EXT\r
+GET            000103' INT\r
+GETJOB         000103' EXT\r
+I              000010  INT\r
+IB             000013  INT\r
+IBUFB          200000  INT\r
+IJOB           000000' INT\r
+\r
+\fCOMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES  MACRO 10 05:51 24-APR-78 PAGE 10-2\r
+COMCON MAC     24-APR-78 01:00         SYMBOL TABLE\r
+\r
+INITB          400000  INT\r
+INPB           010000  INT\r
+IO             000020  INT\r
+IOACT          010000  INT\r
+IOBEG          000002  INT\r
+IOBKTL         040000  INT\r
+IOCON          000040  INT\r
+IODEND         020000  INT\r
+IODERR         200000  INT\r
+IODISC         400000  INT\r
+IODONE         400000  INT\r
+IODTER         100000  INT\r
+IOEND          000040  INT\r
+IOFST          000004  INT\r
+IOIMPM         400000  INT\r
+IONRCK         000100  INT\r
+IORDEL         000100  INT\r
+IORET          000020  INT\r
+IOS            000000  INT\r
+IOSTRT         000010  INT\r
+IOUSE          400000  INT\r
+IOW            000001  INT\r
+IOWC           000020  INT\r
+IOWS           400000  INT\r
+ITEM           000004  INT\r
+JBFADR         000000  INT\r
+JBFCTR         000002  INT\r
+JBFPTR         000001  INT\r
+JBTADR         000056' EXT\r
+JBTSTS         000234' EXT\r
+JBUF           000005  INT\r
+JDAT           000011  INT\r
+JERR           002000  INT\r
+JIOW           100000  INT\r
+JNA            004000  INT\r
+JOBDDT         000036' EXT\r
+JOBINI         000000' EXT\r
+JOBKIL         000004' EXT\r
+JOBN           000231' EXT\r
+JOBPFI         000063' EXT\r
+JOBPR1         000062' EXT\r
+JOBPRT         000061' EXT\r
+JOBSA          000017' EXT\r
+JOBZER         000053' EXT\r
+KJOB           000004' INT\r
+LOGERR         000173' \r
+LOOKB          040000  INT\r
+MONJOB         000000  EXT\r
+MTW            010000  INT\r
+NOTDEV         000211' INT\r
+NOTENF         000106' EXT\r
+OBUFB          100000  INT\r
+OCTIN          000013' EXT\r
+\r
+\fCOMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES  MACRO 10 05:51 24-APR-78 PAGE 10-3\r
+COMCON MAC     24-APR-78 01:00         SYMBOL TABLE\r
+\r
+OUTPB          004000  INT\r
+PDP            000003  INT\r
+PICHN          000100  INT\r
+PJOB           000001' INT\r
+PJOBN          000141' EXT\r
+PROG           000007  INT\r
+RADX10         000065' EXT\r
+RUN            200000  INT\r
+RUNABL         204000  INT\r
+SAVE           000101' INT\r
+SAVJOB         000101' EXT\r
+SGSET          000104' EXT\r
+ST2            000016' \r
+ST3            000020' \r
+START          000005' INT\r
+START1         000000  EXT\r
+STARTC         000010' INT\r
+STARTM         000012' EXT\r
+STARTU         000044' EXT\r
+STRT           000013' \r
+SYSTAP         000121' EXT\r
+T              000013  \r
+T1             000012  \r
+TAC            000001  INT\r
+TAC1           000002  INT\r
+TEM            000010  INT\r
+TTYATC         020000  INT\r
+TTYATT         000237' EXT\r
+TTYDET         000271' EXT\r
+TTYFND         000242' EXT\r
+TTYUSE         010000  INT\r
+USRMOD         010000  INT\r
+UUO            000014  INT\r
+\f   CCCCCCCCCCCC         OOOOOOOOO         MMM         MMM         CCCCCCCCCCCC         SSSSSSSSSSSS         SSSSSSSSSSSS\r
+   CCCCCCCCCCCC         OOOOOOOOO         MMM         MMM         CCCCCCCCCCCC         SSSSSSSSSSSS         SSSSSSSSSSSS\r
+   CCCCCCCCCCCC         OOOOOOOOO         MMM         MMM         CCCCCCCCCCCC         SSSSSSSSSSSS         SSSSSSSSSSSS\r
+CCC                  OOO         OOO      MMMMMM   MMMMMM      CCC                  SSS                  SSS            \r
+CCC                  OOO         OOO      MMMMMM   MMMMMM      CCC                  SSS                  SSS            \r
+CCC                  OOO         OOO      MMMMMM   MMMMMM      CCC                  SSS                  SSS            \r
+CCC                  OOO         OOO      MMM   MMM   MMM      CCC                  SSS                  SSS            \r
+CCC                  OOO         OOO      MMM   MMM   MMM      CCC                  SSS                  SSS            \r
+CCC                  OOO         OOO      MMM   MMM   MMM      CCC                  SSS                  SSS            \r
+CCC                  OOO         OOO      MMM         MMM      CCC                     SSSSSSSSS            SSSSSSSSS   \r
+CCC                  OOO         OOO      MMM         MMM      CCC                     SSSSSSSSS            SSSSSSSSS   \r
+CCC                  OOO         OOO      MMM         MMM      CCC                     SSSSSSSSS            SSSSSSSSS   \r
+CCC                  OOO         OOO      MMM         MMM      CCC                              SSS                  SSS\r
+CCC                  OOO         OOO      MMM         MMM      CCC                              SSS                  SSS\r
+CCC                  OOO         OOO      MMM         MMM      CCC                              SSS                  SSS\r
+CCC                  OOO         OOO      MMM         MMM      CCC                              SSS                  SSS\r
+CCC                  OOO         OOO      MMM         MMM      CCC                              SSS                  SSS\r
+CCC                  OOO         OOO      MMM         MMM      CCC                              SSS                  SSS\r
+   CCCCCCCCCCCC         OOOOOOOOO         MMM         MMM         CCCCCCCCCCCC      SSSSSSSSSSSS         SSSSSSSSSSSS   \r
+   CCCCCCCCCCCC         OOOOOOOOO         MMM         MMM         CCCCCCCCCCCC      SSSSSSSSSSSS         SSSSSSSSSSSS   \r
+   CCCCCCCCCCCC         OOOOOOOOO         MMM         MMM         CCCCCCCCCCCC      SSSSSSSSSSSS         SSSSSSSSSSSS   \r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  05:53:58\r
+File: DSKB0 :COMCSS.LST   [8,296] Created: 20-April-1967 05:51:00 Printed: 24-April-1978 05:53:32\r
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:1951 \r
+File will be deleted after printing\r
+\f\r
+COMCSS - COMMAND COMMON ROUTINES       MACRO 10 05:51 24-APR-78 PAGE 1\r
+S      MAC     24-APR-78 21:40         T. HASTINGS         8-15-65\r
+\r
+                                       XLIST\r
+                                      LIST\r
+                               TITLE COMCSS - COMMAND COMMON ROUTINES\r
+                               SUBTTL    T. HASTINGS       8-15-65\r
+                               ;ROUTINE TO RETURN NEXT ALPHANUMERIC STRING\r
+                               ; IN COMMAND LINE (SIXBIT)\r
+                               ; CALL:   MOVE TAC, BYTE POINTER TO FIRST CHAR.-1\r
+                               ;         PUSHJ PDP, CTEXT\r
+                               ; SIXBIT STRING RETURN LEFT JUSTIFIED IN AC TAC1\r
+\r
+                               INTERNAL CTEXT, CTEXT1\r
+\r
+                       000012  T=BUFPNT            ;TEMPORARY ACS\r
+                       000013  T1=BUFWRD\r
+                       000014  T2=UUO\r
+\r
+       000000' 201100  000000  CTEXT1:   MOVEI TAC1, 0         ;CHECK PREVIOUS BREAK CHAR.\r
+       000001' 135500  000001            LDB T, TAC\r
+       000002' 306500  000015            CAIN T, 15            ;RETURN IF CR.\r
+       000003' 263140  000000            POPJ PDP,\r
+\r
+       000004' 260140  000035' CTEXT:    PUSHJ PDP, SKIPS              ;SKIP LEADING SPACES, TABS\r
+       000005' 200500  000231'           MOVE T,[POINT 6,TAC1]\r
+       000006' 201100  000000            MOVEI TAC1, 0\r
+       000007' 135540  000001            LDB T1, TAC\r
+       000010' 254000  000012'           JRST CTEX1\r
+       000011' 134540  000001  CTEX0:    ILDB T1,TAC\r
+       000012' 260140  000024' CTEX1:    PUSHJ PDP, CTEX               ;IS IT ALPHANUMERIC\r
+       000013' 263140  000000            POPJ PDP,                     ;NO. EXIT\r
+       000014' 640540  000040            TRC T1,40                     ;CONVERT TO SIXBIT\r
+       000015' 136540  000012            IDPB T1,T                     ;YES, STORE AWAY\r
+       000016' 312500  000232'           CAME T,[POINT 6,TAC1,35]      ;SIX CHARACTER YET\r
+       000017' 254000  000011'           JRST CTEX0                    ;NO\r
+       000020' 134540  000001  CTEX2:    ILDB T1, TAC                  ;YES\r
+       000021' 260140  000024'           PUSHJ PDP, CTEX               ;IS IT ALPHANUMERIC\r
+       000022' 263140  000000            POPJ PDP,                     ;NO, EXIT\r
+       000023' 254000  000020'           JRST CTEX2\r
+\r
+                               ;SCAN FOR ALPHANUMERIC CHAR IN T1\r
+       000024' 301540  000060  CTEX:     CAIL T1, "0"\r
+       000025' 303540  000132            CAILE T1, "Z"         ;LETTERS ARE LARGER THAN NOS.\r
+       000026' 263140  000000            POPJ PDP,           ;NEITHER\r
+       000027' 303540  000071            CAILE T1, "9"\r
+       000030' 301540  000101            CAIL T1, "A"\r
+       000031' 350003  000000            AOS (PDP)           ;LETTER OR NUMBER\r
+       000032' 263140  000000            POPJ PDP,\r
+\r
+\fCOMCSS - COMMAND COMMON ROUTINES      MACRO 10 05:51 24-APR-78 PAGE 2\r
+COMCSS MAC     24-APR-78 01:01         T. HASTINGS         8-15-65\r
+\r
+\r
+                               ;ROUTINE TO IGNORE LEADING SPACES AND TABS\r
+                               ;CALL:    MOVE TAC, BYTE POINTER TO CHAR.\r
+                               ;         PUSHJ PDP, SKIPS1\r
+\r
+                               INTERNAL SKIPS1\r
+\r
+       000033' 135500  000001  SKIPS1:   LDB T, TAC\r
+       000034' 254000  000036'           JRST SKIPSA\r
+\r
+                               ;ROUTINE TO IGNORE LEDING SPACES AND TABS \r
+                               ;CALL:    MOVE TAC, BYTE POINTER TO CHAR.-1\r
+                               ;         PUSHJ PDP, SKIPS\r
+\r
+                               INTERNAL SKIPS\r
+\r
+       000035' 134500  000001  SKIPS:    ILDB T, TAC\r
+       000036' 302500  000040  SKIPSA:   CAIE T, " "\r
+       000037' 306500  000011            CAIN T, 11\r
+       000040' 254000  000035'           JRST SKIPS\r
+       000041' 263140  000000            POPJ PDP,\r
+\r
+\fCOMCSS - COMMAND COMMON ROUTINES      MACRO 10 05:51 24-APR-78 PAGE 3\r
+COMCSS MAC     24-APR-78 01:01         T. HASTINGS         8-15-65\r
+\r
+\r
+                               ;ROUTINE TO APPEND A "?" TO INPUT STRING AND SET AS OUTPUT\r
+                               ;CALL:    MOVE TAC, BYTE POINTER TO LAST CHAR. IN INPUT STRING\r
+                               ;         PUSHJ PDP, COMERA\r
+\r
+                               INTERNAL COMERA\r
+\r
+       000042' 133000  000001  COMERA:   IBP TAC\r
\r
+                               ;ROUTINE TO REPLACE LAST CHARACTER IN INPUT STRING BY "?"\r
+                               ;AND SET AS OUTPUT\r
+                               ;CALL:    MOVE TAC, BYTE POINTER TO LAST CHAR. IN INPUT STRING\r
+                               ;         PUSHJ PDP, COMERR\r
+\r
+                               INTERNAL COMERR\r
+\r
+                               EXTERNAL TTYBUF\r
+\r
+       000043' 200240  000001  COMERR:   MOVE DAT,TAC\r
+       000044' 201506  000000*           MOVEI T,TTYBUF(DEVDAT)        ;IS THERE MORE THAN 3 WORDS I\r
+       000045' 305505  777775            CAIGE T,-3(DAT)\r
+       000046' 541252  000003            HRRI DAT,3(T)         ;YES, TYPE ONLY 3\r
+       000047' 201500  000077            MOVEI T, "?"            ;APPEND "?"\r
+       000050' 137500  000005            DPB T, DAT\r
+       000051' 265040  000060'           JSP TAC,CONMES\r
+\r
+       000052' 202331  747222            ASCIZ / MONITOR COMMAND ERROR\r
+       000053' 522372  220206\r
+       000054' 476331  540634\r
+       000055' 421010  551244\r
+       000056' 476441  505000  /\r
+\r
+\fCOMCSS - COMMAND COMMON ROUTINES      MACRO 10 05:51 24-APR-78 PAGE 4\r
+COMCSS MAC     24-APR-78 01:01         T. HASTINGS         8-15-65\r
+\r
+\r
+                               ;ROUTINE TO PRINT CARRIAGE RETURN-LINE-FEED\r
+                               ;CALL:    MOVE DAT,BYTE POINTER TO OUTPUT\r
+                               ;         PUSHJ PDP,CRLF\r
+\r
+                               INTERNAL CRLF\r
+\r
+                               CRLF:     MOVEI TAC,[ASCII /\r
+       000057' 201040  000233' /]\r
+\r
+                               ;ROUTINE TO MOVE ASCII CHAR. STRING TO CONSOLE OUTPUT BUFFER\r
+                               ; CALL:   MOVE DAT, BYTE POINTER TO LAST OUTPUT CHARACTER\r
+                               ;         MOVEI TAC,  ADDRESS OF ASCII MESSAGE`\r
+                               ;         PUSHJ PDP, CONMES\r
+                               ; STRING TERMINATED BY NULL\r
+                               ; CONMES DOES NOT START TTY\r
+\r
+                               INTERNAL CONMES\r
+\r
+       000060' 261140  000002  CONMES:   PUSH PDP, TAC1\r
+       000061' 505040  440700            HRLI TAC, 440700      ;FORM BYTE POINTER\r
+       000062' 134100  000001  CON0:     ILDB TAC1, TAC\r
+       000063' 322100  000066'           JUMPE TAC1, CON1\r
+       000064' 136100  000005            IDPB TAC1, DAT\r
+       000065' 254000  000062'           JRST CON0\r
+       000066' 262140  000002  CON1:     POP PDP, TAC1\r
+       000067' 263140  000000            POPJ PDP,\r
+\r
+                               ;ROUTINE TO PRINT "TO FEW ARGUMENTS"\r
+                               ;CALL:    MOVE DAT,BYTE POINTER\r
+                               ;         PUSHJ PDP,NOTENF\r
+\r
+                               INTERNAL NOTENF\r
+\r
+       000070' 265040  000060' NOTENF:   JSP TAC,CONMES\r
+\r
+       000071' 522371  720214  ASCIZ /TOO FEW ARGUMENTS\r
+       000072' 426564  040644\r
+       000073' 436531  542634\r
+       000074' 522461  505000  /\r
+\r
+\fCOMCSS - COMMAND COMMON ROUTINES      MACRO 10 05:51 24-APR-78 PAGE 5\r
+COMCSS MAC     24-APR-78 01:01         T. HASTINGS         8-15-65\r
+\r
+\r
+                               ;ROUTINE TO INITIALIZE A JOB\r
+                               ;CALL:    MOVE ITEM, JOB NUMBER\r
+                               ;         PUSHJ PDP, JOBINI\r
+                               ;         DEVDAT IS SETUP ON RETURN\r
+\r
+                               INTERNAL JOBINI,JOBZER\r
+                               EXTERNAL JBTSTS,PJOBN,CORE1,MONJOB,ESTOP,TTYATT\r
+\r
+       000075' 326200  000100' JOBINI:   JUMPN ITEM,JOB0       ;HAS A JOB NUMBER BEED ASSIGNED?\r
+       000076' 260140  000135'           PUSHJ PDP,ASSJOB      ;NO, THEN ASSIGN ONE.\r
+       000077' 254000  000060'           JRST CONMESS          ;NONE LEFT\r
+       000100' 260140  000000* JOB0:     PUSHJ PDP,TTYATT      ;ATTACH TTY\r
+       000101' 255000  000000            JFCL                  ;ALREADY ATTACHED\r
+       000102' 205040  004000            MOVSI TAC,JNA         ;CLEAR JOB NO. ASSIGNED BIT\r
+       000103' 412044  000000*           ANDCAM TAC,JBTSTS(ITEM)         ;TO FORCE MESSAGE\r
+       000104' 205040  646471            MOVSI TAC,646471      ;SIXBIT /TTY/\r
+       000105' 202046  000005            MOVEM TAC, DEVLOG(DEVDAT)       ;SET LOGICAL NAME\r
+       000106' 201500  400000            MOVEI T, ASSCON       ;SET ASSIGNED BY CONSOLE BIT\r
+       000107' 436506  000004            IORM T, DEVMOD(DEVDAT)\r
+       000110' 260140  000172'           PUSHJ PDP, DEASTY     ;DE-ASSIGNED ALL DEVICES EXCEPT TTY\r
+       000111' 322440  000000*           JUMPE JDAT,CPOPJ      ;DOES JOB ALREDY HAVE CORE?\r
+\r
+                               ;ROUTINE TO RELEASE ALL DEVICES AND FLUSH CORE\r
+                               ;RUN AS MONITOR JOB\r
+                               ;CALL:    SAME AS JOBIN\r
+\r
+                               EXTERNAL IOKILL\r
+\r
+       000112' 541100  000115' JOBZER:   HRRI TAC1,JOB1        ;ADDRESS OF SUB. TO RELEASE DEV.\r
+       000113' 505100  000000* JOBZR1:   HRLI TAC1, ESTOP      ;RETURN ADDRESS AFER IORELS\r
+       000114' 254000  000000*           JRST MONJOB           ;GO SCHEDULE MONITOR JOB\r
+\r
+       000115' 260140  000000* JOB1:     PUSHJ PDP,IOKILL      ;KILL ALL IO DEVICES\r
+       000116' 201040  000000            MOVEI TAC,0           ;FLUSH ALL CORE\r
+       000117' 370003  000000            SOS (PDP)             ;CORE1 WILL SKIP RETURN\r
+       000120' 254000  000000*           JRST CORE1\r
+\r
+\fCOMCSS - COMMAND COMMON ROUTINES      MACRO 10 05:51 24-APR-78 PAGE 6\r
+COMCSS MAC     24-APR-78 01:01         T. HASTINGS         8-15-65\r
+\r
+\r
+                               ;ROUTINE TO KILL CURRENT JOB\r
+                               ;CALL   PUSHJ PDP,JOBKIL\r
+\r
+                               INTERNAL JOBKIL\r
+                               EXTERNAL JBTSTS,TTYKIL\r
+\r
+       000121' 350003  000000  JOBKIL:   AOS (PDP)             ;SUPRESS CR-LF AND JOB INIT. CHECK\r
+       000122' 201040  000001            MOVEI TAC,1\r
+       000123' 260140  000173'           PUSHJ PDP,DEASAL      ;DEASSIGN ALL DEVICES\r
+       000124' 322440  000132'           JUMPE JDAT,JOBKA      ;DOES JOB HAVE CORE?\r
+       000125' 541100  000127'           HRRI TAC1,JOBK2       ;YES,RELEAS DEVICE AND CLEAR\r
+       000126' 254000  000113'           JRST JOBZR1\r
+\r
+       000127' 261140  000006  JOBK2:    PUSH PDP,DEVDAT       ;SAVE DEVDAT FOR TTYKIL\r
+       000130' 260140  000115'           PUSHJ PDP,JOB1        ;FLUSH CORE AND RELEASE DEVICES\r
+       000131' 262140  000006            POP PDP,DEVDAT\r
+       000132' 205040  002000  JOBKA:    MOVSI TAC,JERR        ;CLEAR ALL BUT JOB ERROR BIT\r
+       000133' 202044  000103*           MOVEM TAC,JBTSTS(ITEM)          ;IN JOB STATUS WORD\r
+       000134' 254000  000000*           JRST TTYKIL           ;RETURN TTY TO VIRGIN STATE\r
+\r
+                               ;ROUTINE TO ASSIGN AN UNUSED JOB NUMBER\r
+                               ;CALL     PUSHJ PDP,ASSJOB\r
+                               ;         ERROR RETURN       TAC DESTROYED\r
+                               ;         OK RETURN       ITEM SET, TAC AND TAC1 PRESERVED\r
+\r
+                               INTERNAL ASSJOB\r
+                               EXTERNAL MJOBN,JBTSTS,CPOPJ1\r
+\r
+       000135' 205200  000000* ASSJOB:   MOVSI ITEM,MJOBN\r
+       000136' 253200  000137'           AOBJN ITEM,.+1\r
+       000137' 205540  004000            MOVSI T1,JNA\r
+       000140' 612544  000133*           TDNE T1,JBTSTS(ITEM)\r
+       000141' 253200  000140'           AOBJN ITEM,.-1\r
+       000142' 325200  000145'           JUMPGE ITEM,ASSJB1\r
+       000143' 405200  777777            ANDI ITEM,-1\r
+       000144' 254000  000000*           JRST CPOPJ1\r
+\r
+       000145' 265040  000060' ASSJB1:   JSP TAC,CONMES\r
+       000146' 452370  220206            ASCIZ /JOB CAPACITY EXCEEDED\r
+       000147' 406410  141622\r
+       000150' 522624  042660\r
+       000151' 416130  542212\r
+       000152' 420321  200000  /\r
+\r
+\fCOMCSS - COMMAND COMMON ROUTINES      MACRO 10 05:51 24-APR-78 PAGE 7\r
+COMCSS MAC     24-APR-78 01:01         T. HASTINGS         8-15-65\r
+\r
+\r
+                               ;ROUTINE TO DEASSIGN A DEVICE \r
+                               ;CALL:    MOVE DEVDAT, DEVICE DATA BLOCK\r
+                               ;         MOVE ITEM, JOB NUMBER\r
+                               ;         PUSHJ DPD, DEASG\r
+                               ;         ERROR NOT PREVIOUSLY ASSIGNED\r
+                               ;         OK RETURN WITH DEVICE DEASSIGNED\r
+\r
+                               INTERNAL DEASG\r
+                               EXTERNAL PJOBN, CPOPJ1\r
+\r
+       000153' 135500  000000* DEASG:    LDB T, PJOBN          ;WAS DEVICE ASSIGNED TO THIS JOB?\r
+       000154' 312500  000004            CAME T, ITEM\r
+       000155' 263140  000000            POPJ PDP,             ;NO. RETURN\r
+       000156' 205500  400000            MOVSI T,DVDIRIN       ;CLEAR DIRECTORY IN CORE BIT\r
+       000157' 412506  000004            ANDCAM T,DEVMOD(DEVDAT)\r
+       000160' 201500  400000            MOVEI T, ASSCON       ;YES, IS ASSIGNED BY CONSOLE BIT ON?\r
+       000161' 616506  000004            TDNN T, DEVMOD(DEVDAT)\r
+       000162' 263140  000000            POPJ PDP,             ;NO\r
+       000163' 413506  000004            ANDCAB T,DEVMOD(DEVDAT)        ;YES, CLEAR BIT\r
+       000164' 402006  000005            SETZM DEVLOG(DEVDAT)           ;CLEAR LOGICAL NAME\r
+       000165' 602500  200000            TRNE T, ASSPRG        ;IS ASSIGNED BY PROGRAM BIT ON?\r
+       000166' 254000  000144*           JRST CPOPJ1           ;YES\r
+       000167' 201500  000000            MOVEI T,0             ;NO, CLEAR JOB NUMBER\r
+       000170' 137500  000153*           DPB T, PJOBN\r
+       000171' 254000  000166*           JRST CPOPJ1\r
+\r
+                               ;ROUTINE TO DEASSIGN ALL DEVICES EXCEPT LOGICAL TTY\r
+                               ;CALL:    MOVE ITEM, JOB NUMBER \r
+                               ;         PUSHJ PDP, DEASTY\r
+\r
+                               INTERNAL DEASTY\r
+\r
+       000172' 205040  646471  DEASTY:   MOVSI TAC, 646471     ;SIXBIT /TTY/\r
+                                                               ;FALL INTO DEASAL\r
+\r
+                               ;ROUTINE TO DEASSIGN ALL DEVICES EXECPT ONE\r
+                               ;CALL:    MOVE ITEM, JOB NUMBER\r
+                               ;         MOVE TAC, LOGICAL DEVICE NOT TO BE DEASSIGNED\r
+                               ;         PUSHJ PDP, DEASAL\r
+\r
+                               INTERNAL DEASAL\r
+                               EXTERNAL DEVLST\r
+\r
+       000173' 261140  000006  DEASAL:   PUSH PDP,DEVDAT\r
+       000174' 554300  000000*           HLRZ DEVDAT,DEVLST    ;SEARCH ALL DDBS\r
+       000175' 312046  000005  DEA1:     CAME TAC, DEVLOG(DEVDAT)        ;IS THIS THE LOGICAL NAME\r
+       000176' 260140  000153'           PUSHJ PDP, DEASG      ;NO, TRY TO DEASSIGN IT\r
+       000177' 255000  000000            JFCL                  ;IGNORE IF CANT\r
+       000200' 554306  000003            HLRZ DEVDAT, DEVSER(DEVDAT)\r
+       000201' 326300  000175'           JUMPN DEVDAT, DEA1\r
+       000202' 262140  000006            POP PDP,DEVDAT\r
+       000203' 263140  000000            POPJ PDP,\r
+\r
+\fCOMCSS - COMMAND COMMON ROUTINES      MACRO 10 05:51 24-APR-78 PAGE 8\r
+COMCSS MAC     24-APR-78 01:01         T. HASTINGS         8-15-65\r
+\r
+\r
+                               ;ROUTINE TO READ CONSOLE AND CONVERT ANY RADIX NUMBER\r
+                               ; CALL:   MOVE TAC1,  DESIRED RADIX\r
+                               ;         MOVE TAC,  BYTE POINTER TO FIRST CHRACTER\r
+                               ;         PUSHJ PDP, ANYRIN\r
+                               ;         ERROR EXIT            ;AC TAC1=0 IF NO NUMBER BEFORE FIRST NO\r
+                               ;         NORMAL EXIT           ;AC TAC1 CONTAINS NUMEBR\r
+                               ; SCAN STOPS ON FIRST ILLEGAL CHARACTER OR CR\r
+                               ; IGNORES SPACES, TABS, RUBOUTS\r
+\r
+                               INTERNAL OCTIN,ANYRIN,DECIN,DECIN1\r
+                               EXTERNAL CPOPJ1, CPOPJ\r
+\r
+                       000012  C=BUFPNT  ;CHARACTER AC\r
+                       000013  R=BUFWRD  ;RADIX AC\r
+\r
+       000204' 133000  000001  DECIN1:   IBP TAC       ;SKIP SEPARATION CHARACTER\r
+       000205' 201100  000012  DECIN:    MOVEI TAC1,12         ;DECIMAL INPUT\r
+       000206' 254000  000210'           JRST ANYRIN\r
+\r
+       000207' 201100  000010  OCTIN:    MOVEI TAC1, 10\r
+       000210' 200540  000002  ANYRIN:   MOVE R, TAC1\r
+       000211' 201100  000000            MOVEI TAC1, 0\r
+       000212' 260140  000033'           PUSHJ PDP, SKIPS1     ;SKIP LEADING SPACES, TABS\r
+       000213' 135500  000001            LDB C, TAC\r
+       000214' 306500  000015            CAIN C, 15            ;CHECK FOR INITIAL CR\r
+       000215' 263140  000000            POPJ PDP,             ;EXIT WITH 0 IN TAC1\r
+       000216' 302500  000055  OCT0:     CAIE C,"-"   ;DASH?\r
+       000217' 306500  000015            CAIN C,15  ;CR?\r
+       000220' 254000  000171*           JRST CPOPJ1           ;YES, ONLY LEGAL TERMINATORS\r
+       000221' 275500  000060            SUBI C,60\r
+       000222' 321500  000224'           JUMPL C, OCTE         ;ERROR IF NEGATIVE\r
+       000223' 311500  000013            CAML C, R             ;OR .GE. RADIX\r
+       000224' 344100  000111* OCTE:     AOJA TAC1,CPOPJ       ;ERROR,INSURE TAC1 NON-ZERO\r
+       000225' 220100  000013            IMUL TAC1, R\r
+       000226' 270100  000012            ADD TAC1, C\r
+       000227' 134500  000001  OCT1:     ILDB C, TAC\r
+       000230' 254000  000216'           JRST OCT0\r
+\r
+                                         END,\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 000234\r
+\r
+9K CORE USED\r
+\r
+\fCOMCSS - COMMAND COMMON ROUTINES      MACRO 10 05:51 24-APR-78 PAGE 9\r
+COMCSS MAC     24-APR-78 01:01         SYMBOL TABLE\r
+\r
+A              000000  INT\r
+AC1            000015  INT\r
+AC2            000016  INT\r
+AC3            000017  INT\r
+AL             000001  INT\r
+ANYRIN         000210' INT\r
+ASSCON         400000  INT\r
+ASSJB1         000145' \r
+ASSJOB         000135' INT\r
+ASSPRG         200000  INT\r
+B              000014  INT\r
+BUFPNT         000012  INT\r
+BUFWRD         000013  INT\r
+C              000012  \r
+CLOSB          002000  INT\r
+CLSIN          000002  INT\r
+CLSOUT         000001  INT\r
+COMERA         000042' INT\r
+COMERR         000043' INT\r
+CON0           000062' \r
+CON1           000066' \r
+CONMES         000060' INT\r
+CORE1          000120' EXT\r
+CPOPJ          000224' EXT\r
+CPOPJ1         000220' EXT\r
+CRLF           000057' INT\r
+CTEX           000024' \r
+CTEX0          000011' \r
+CTEX1          000012' \r
+CTEX2          000020' \r
+CTEXT          000004' INT\r
+CTEXT1         000000' INT\r
+D              000017  INT\r
+DAT            000005  INT\r
+DCL            000001  INT\r
+DCW            020000  INT\r
+DDI            000007  INT\r
+DDO            000006  INT\r
+DDTMEM         000037  INT\r
+DDTSYM         000036  INT\r
+DEA1           000175' \r
+DEASAL         000173' INT\r
+DEASG          000153' INT\r
+DEASTY         000172' INT\r
+DECIN          000205' INT\r
+DECIN1         000204' INT\r
+DEN            000004  INT\r
+DEVADR         000007  INT\r
+DEVBUF         000006  INT\r
+DEVCHR         000001  INT\r
+DEVCTR         000011  INT\r
+DEVDAT         000006  INT\r
+\r
+\r
+\fCOMCSS - COMMAND COMMON ROUTINES      MACRO 10 05:51 24-APR-78 PAGE 9-1\r
+COMCSS MAC     24-APR-78 01:01         SYMBOL TABLE\r
+\r
+DEVIAD         000007  INT\r
+DEVIOS         000002  INT\r
+DEVLOG         000005  INT\r
+DEVLST         000174' EXT\r
+DEVMOD         000004  INT\r
+DEVNAM         000000  INT\r
+DEVOAD         000010  INT\r
+DEVPTR         000010  INT\r
+DEVSER         000003  INT\r
+DGF            000012  INT\r
+DIN            000003  INT\r
+DLK            000005  INT\r
+DOU            000002  INT\r
+DR             000016  INT\r
+DRL            000000  INT\r
+DSI            000011  INT\r
+DSO            000010  INT\r
+DTW            040000  INT\r
+DVAVAL         000040  INT\r
+DVCDR          100000  INT\r
+DVDIR          000004  INT\r
+DVDIRI         400000  INT\r
+DVIN           000002  INT\r
+DVLPT          040000  INT\r
+DVMTA          000020  INT\r
+DVOUT          000001  INT\r
+DVTTY          000010  INT\r
+ENTRB          020000  INT\r
+ESTOP          000113' EXT\r
+I              000010  INT\r
+IB             000013  INT\r
+IBUFB          200000  INT\r
+INITB          400000  INT\r
+INPB           010000  INT\r
+IO             000020  INT\r
+IOACT          010000  INT\r
+IOBEG          000002  INT\r
+IOBKTL         040000  INT\r
+IOCON          000040  INT\r
+IODEND         020000  INT\r
+IODERR         200000  INT\r
+IODISC         400000  INT\r
+IODONE         400000  INT\r
+IODTER         100000  INT\r
+IOEND          000040  INT\r
+IOFST          000004  INT\r
+IOIMPM         400000  INT\r
+IOKILL         000115' EXT\r
+IONRCK         000100  INT\r
+IORDEL         000100  INT\r
+IORET          000020  INT\r
+IOS            000000  INT\r
+IOSTRT         000010  INT\r
+\r
+\fCOMCSS - COMMAND COMMON ROUTINES      MACRO 10 05:51 24-APR-78 PAGE 9-2\r
+COMCSS MAC     24-APR-78 01:01         SYMBOL TABLE\r
+\r
+IOUSE          400000  INT\r
+IOW            000001  INT\r
+IOWC           000020  INT\r
+IOWS           400000  INT\r
+ITEM           000004  INT\r
+JBFADR         000000  INT\r
+JBFCTR         000002  INT\r
+JBFPTR         000001  INT\r
+JBTSTS         000140' EXT\r
+JBUF           000005  INT\r
+JDAT           000011  INT\r
+JERR           002000  INT\r
+JIOW           100000  INT\r
+JNA            004000  INT\r
+JOB0           000100' \r
+JOB1           000115' \r
+JOBINI         000075' INT\r
+JOBK2          000127' \r
+JOBKA          000132' \r
+JOBKIL         000121' INT\r
+JOBZER         000112' INT\r
+JOBZR1         000113' \r
+LOOKB          040000  INT\r
+MJOBN          000135' EXT\r
+MONJOB         000114' EXT\r
+MTW            010000  INT\r
+NOTENF         000070' INT\r
+OBUFB          100000  INT\r
+OCT0           000216' \r
+OCT1           000227' \r
+OCTE           000224' \r
+OCTIN          000207' INT\r
+OUTPB          004000  INT\r
+PDP            000003  INT\r
+PICHN          000100  INT\r
+PJOBN          000170' EXT\r
+PROG           000007  INT\r
+R              000013  \r
+RUN            200000  INT\r
+RUNABL         204000  INT\r
+SKIPS          000035' INT\r
+SKIPS1         000033' INT\r
+SKIPSA         000036' \r
+T              000012  \r
+T1             000013  \r
+T2             000014  \r
+TAC            000001  INT\r
+TAC1           000002  INT\r
+TEM            000010  INT\r
+TTYATC         020000  INT\r
+TTYATT         000100' EXT\r
+TTYBUF         000044' EXT\r
+TTYKIL         000134' EXT\r
+\r
+\fCOMCSS - COMMAND COMMON ROUTINES      MACRO 10 05:51 24-APR-78 PAGE 9-3\r
+COMCSS MAC     24-APR-78 01:01         SYMBOL TABLE\r
+\r
+TTYUSE         010000  INT\r
+USRMOD         010000  INT\r
+UUO            000014  INT\r
+\f   CCCCCCCCCCCC         OOOOOOOOO         MMM         MMM         IIIIIIIII         NNN         NNN         IIIIIIIII   \r
+   CCCCCCCCCCCC         OOOOOOOOO         MMM         MMM         IIIIIIIII         NNN         NNN         IIIIIIIII   \r
+   CCCCCCCCCCCC         OOOOOOOOO         MMM         MMM         IIIIIIIII         NNN         NNN         IIIIIIIII   \r
+CCC                  OOO         OOO      MMMMMM   MMMMMM            III            NNN         NNN            III      \r
+CCC                  OOO         OOO      MMMMMM   MMMMMM            III            NNN         NNN            III      \r
+CCC                  OOO         OOO      MMMMMM   MMMMMM            III            NNN         NNN            III      \r
+CCC                  OOO         OOO      MMM   MMM   MMM            III            NNNNNN      NNN            III      \r
+CCC                  OOO         OOO      MMM   MMM   MMM            III            NNNNNN      NNN            III      \r
+CCC                  OOO         OOO      MMM   MMM   MMM            III            NNNNNN      NNN            III      \r
+CCC                  OOO         OOO      MMM         MMM            III            NNN   NNN   NNN            III      \r
+CCC                  OOO         OOO      MMM         MMM            III            NNN   NNN   NNN            III      \r
+CCC                  OOO         OOO      MMM         MMM            III            NNN   NNN   NNN            III      \r
+CCC                  OOO         OOO      MMM         MMM            III            NNN      NNNNNN            III      \r
+CCC                  OOO         OOO      MMM         MMM            III            NNN      NNNNNN            III      \r
+CCC                  OOO         OOO      MMM         MMM            III            NNN      NNNNNN            III      \r
+CCC                  OOO         OOO      MMM         MMM            III            NNN         NNN            III      \r
+CCC                  OOO         OOO      MMM         MMM            III            NNN         NNN            III      \r
+CCC                  OOO         OOO      MMM         MMM            III            NNN         NNN            III      \r
+   CCCCCCCCCCCC         OOOOOOOOO         MMM         MMM         IIIIIIIII         NNN         NNN         IIIIIIIII   \r
+   CCCCCCCCCCCC         OOOOOOOOO         MMM         MMM         IIIIIIIII         NNN         NNN         IIIIIIIII   \r
+   CCCCCCCCCCCC         OOOOOOOOO         MMM         MMM         IIIIIIIII         NNN         NNN         IIIIIIIII   \r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  05:53:58\r
+File: DSKB0 :COMINI.LST   [8,296] Created: 20-April-1967 05:51:00 Printed: 24-April-1978 05:53:33\r
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:1939 \r
+File will be deleted after printing\r
+\f\r
+COMINI - THE COMMAND DECODER   MACRO 10 05:51 24-APR-78 PAGE 1\r
+S      MAC     24-APR-78 21:40         T. HASTINGS 8-2-65\r
+\r
+                                       XLIST\r
+                                      LIST\r
+                                       TITLE COMINI - THE COMMAND DECODER\r
+                                       SUBTTL  T. HASTINGS 8-2-65\r
+                               ;CALLED FROM CLOCK ROUTINE WHEN COMCNT IS GREATER THAN 0\r
+                               ;AS SET BY TTY SERVICE ROUTINE\r
+                               ;ALL ACS HAVE BEEN SAVED BY CLOCK CHANNEL\r
+                               ;THE COMMAND DECODER CALLS TTYCOM WHICH SCANS FOR TTY WHICH TYPED\r
+                               ;THE COMMAND AND THEN DISPATCHES(PUSHJ) TO APPROPRIATE\r
+                               ;COMMAND SETUP ROTUINE OF THE SAME NAME WITH ACS SET AS:\r
+                               ;ITEM = JOB NUMBER\r
+                               ;TAC = BYTE POINTER TO COMMAND STRING(SSPACE OR CR AFTER COMMAND NAME)\r
+                               ;DAT = BYTE POINTER TO LAST OUTPUT CHARACTER\r
+                               ;DEVDAT = ADDRESS OF DEVICE DATA BLOCK TYPING COMMAND\r
+                               ;JDAT = ADDRESS OF JOB AREA, = 0 IF NO JOB AREA\r
+                               ;PROG = ADDRESS OF PROGRAM AREA\r
+                               ;DEVDAT IS ALSO PUSHED ON END OF PD LIST SO IT MAY BE DESTROYED\r
+                               ;UPON RETURN FROM COMMAND SETUP ROUTINE. A CR-LF IS ADDED TO\r
+                               ;MASSAGE AND TTY IS STARTED ON TTY SPCIFIED BY -1(PDP)\r
+\r
+                               ;SINCE THE COMMAND DECODER IS CALLED FROM CLOCK ROUTINE\r
+                               ;COMMAND SETUP ROUTINE MUST RUN TO COMPLETION QUICKLY\r
+                               ;IF A COMMAND FUNCTION CANNON DO THIS. IT MUST JUST SET\r
+                               ;THE JOB TO RUNABLE STATUS AND RETURN IMMEDIATELY\r
+\r
+                               INTERNAL COMMAND\r
+                               EXTERNAL TTYCOM,TTYSTR,CTEXT,JBTADR,CONMES\r
+                               EXTERNAL COMERR,COMCNT\r
+                               EXTERNAL JOBINI,CRLF,CTEXT,RADX10,ASSJOB,JBTSTS\r
+\r
+                       000012  T=BUFPNT  ;TEMPORARY ACS\r
+                       000013  T1=BUFWRD\r
+\r
+\fCOMINI - THE COMMAND DECODER  MACRO 10 05:51 24-APR-78 PAGE 2\r
+COMINI MAC     24-APR-78 03:49         T. HASTINGS 8-2-65\r
+\r
+\r
+       000000' 260140  000000* COMMAND:  PUSHJ PDP, TTYCOM     ;SETUP DEVDAT,DAT,TAC, AND ITEM\r
+       000001' 254000  000041'           JRST COM2             ;NONE FOUND\r
+       000002' 261140  000006            PUSH PDP,DEVDAT       ;SAVE TTY DDB ADDRESS\r
+       000003' 260140  000000*           PUSHJ PDP, CTEXT      ;RETURN COMMAND NAME IN TAC1\r
+       000004' 322100  000043'           JUMPE TAC1, COM2A     ;IGNORE BLANK LINE\r
+       000005' 205500  777760            MOVSI T, -DISPL       ;SEARCH FOR COMMAND NAME\r
+       000006' 312112  000074'           CAME TAC1, COMTAB(T)  \r
+       000007' 253500  000006'           AOBJN T, .-1\r
+       000010' 325500  000047'           JUMPGE T,COM2B        ;WAS COMMAND FOUND?\r
+       000011' 200112  000114'           MOVE TAC1,DISP(T)     ;YES, GET DISPATCH ADDRESS AND BITS\r
+       000012' 326200  000026'           JUMPN ITEM, COM1      ;HAS A JOB NUMBER BEEN ASSIGNED\r
+       000013' 603100  200000            TLNE TAC1,NOJOBN      ;NO, IS A JOB NUMBER NEEDED FOR THIS CO\r
+       000014' 254000  000026'           JRST COM1 ;NO\r
+       000015' 260140  000000*           PUSHJ PDP,ASSJOB      ;TRY TO ASSIGN A FREE JOB NUMBER\r
+       000016' 254000  000067'           JRST COM3A            ;NONE AVAILABLE, ERROR MESSAGE\r
+\r
+\fCOMINI - THE COMMAND DECODER  MACRO 10 05:51 24-APR-78 PAGE 3\r
+COMINI MAC     24-APR-78 03:49         T. HASTINGS 8-2-65\r
+\r
+       000017' 261140  000001            PUSH PDP, TAC         ;SAVE INPUT BYTE POINTER\r
+       000020' 261140  000002            PUSH PDP,TAC1         ;SAVE ADDRESS OF COMMAND ROUTINE\r
+       000021' 403340  000011            SETZB PROG,JDAT       ;NO CORE, CLEAR REL. ADRESS\r
+       000022' 260140  000000*           PUSHJ PDP,JOBINI      ;INITIALIZE JOB\r
+       000023' 262140  000002            POP PDP,TAC1          ;RESTORE ADR OF COMMAND ROUTINE\r
+       000024' 262140  000001            POP PDP, TAC          ;RESTORE INPUT BYTE POINTER\r
+       000025' 202303  000000            MOVEM DEVDAT,(PDP)    ;SET ADDRESS OF TTY DEV. DATA BLOCK\r
+       000026' 550444  000000* COM1:     HRRZ JDAT, JBTADR(ITEM)       ;AND JOB DATA AREA\r
+       000027' 336340  000011            SKIPN PROG,JDAT       ;SET PROG. DOES JOB HAVE CORE?\r
+       000030' 603100  400000            TLNE TAC1,NOCORE      ;NO. IS CORE NEEDED FOR THIS COMMAND?\r
+       000031' 254000  000035'           JRST COM1C            ;NO\r
+       000032' 201040  000051'           MOVEI TAC,NOCOR       ;YES, PRINT "NO CORE ASSIGNED"\r
+       000033' 260140  000000* COM1B:    PUSHJ PDP,CONMES\r
+       000034' 254000  000036'           JRST COM1A\r
+\r
+       000035' 260142  000000  COM1C:    PUSHJ PDP,(TAC1)      ;DISPATCH TO COMMAND SETUP ROUTINE\r
+       000036' 326200  000055' COM1A:    JUMPN ITEM, COM3      ;ADD CR-LF AND CHECK FOR JOB INIT.\r
+       000037' 262140  000006  COM1D:    POP PDP,DEVDAT        ;RESTORE TTY DDB ADDRESS\r
+       000040' 260140  000000*           PUSHJ PDP, TTYSTR     ;START OUTPUT, IF ANY\r
+       000041' 370000  000000* COM2:     SOS COMCNT            ;DECREMENT COMMAND COUNT\r
+       000042' 263140  000000            POPJ PDP,             ;EXIT\r
+\r
+       000043' 135100  000001  COM2A:    LDB TAC1, TAC         ;NULL FIELD. WAS BREAK CHAR. A CR?\r
+       000044' 302100  000015            CAIE TAC1,15          ;A CR?\r
+       000045' 306100  000073            CAIN TAC1,";"           ;OR A SEMI COLON?\r
+       000046' 254000  000037'           JRST COM1D            ;YES. IGNORE LINE\r
+       000047' 260140  000000* COM2B:    PUSHJ PDP,COMERR      ;NO. PRINT MONITOR COMMAND ERROR\r
+       000050' 254000  000037'           JRST COM1D\r
+\r
+       000051' 472364  041636  NOCOR:    ASCIZ /NO CORE ASSIGNED\r
+       000052' 512124  040646\r
+       000053' 516230  747212\r
+       000054' 420321  200000  /\r
+\r
+       000055' 200044  000000* COM3:     MOVE TAC,JBTSTS(ITEM)         ;GET STATUS WORD\r
+       000056' 663040  004000            TLOE TAC,JNA                  ;IS JOB NO ASSIGNED BIT ON YET\r
+       000057' 254000  000067'           JRST COM3A                    ;YES, JOB INIT. BEFORE\r
+       000060' 202044  000055*           MOVEM TAC,JBTSTS(ITEM)\r
+       000061' 201040  000134'           MOVEI TAC,[ASCIZ /JOB /]\r
+       000062' 260140  000033*           PUSHJ PDP,CONMES      ;PRINT JOB N INITIALIZED\r
+       000063' 200040  000004            MOVE TAC,ITEM\r
+       000064' 260140  000000*           PUSHJ PDP,RADX10      ;PRINT JOB NUMBER\r
+       000065' 201040  000071'           MOVEI TAC,JOBM\r
+       000066' 260140  000062*           PUSHJ PDP,CONMES\r
+       000067' 260140  000000* COM3A:    PUSHJ PDP,CRLF\r
+       000070' 254000  000037'           JRST COM1D\r
+\r
+       000071' 202231  644650  JOBM:     ASCIZ / INITIALIZED\r
+       000072' 446031  444664\r
+       000073' 426101  505000  /\r
+\r
+\fCOMINI - THE COMMAND DECODER  MACRO 10 05:51 24-APR-78 PAGE 4\r
+COMINI MAC     24-APR-78 03:49         T. HASTINGS 8-2-65\r
+\r
+\r
+                               ;TABLE OF CONSOLE COMMANDS.\r
+\r
+                       400000  NOCORE=400000           ;NO CORE NEEDED FOR COMMAND\r
+                       200000  NOJOBN=200000           ;NO JOB NUMBER NEEDED FOR COMMAND\r
+\r
+                               DEFINE NAMES\r
+                               <REPEAT 0,<\r
+                                C G,COMERR,0\r
+                               >\r
+                                C CORE,CORE,NOCORE\r
+                                C GET,GET,0\r
+                                C START,START,0\r
+                                C IJOB,IJOB,NOCORE+NOJOBN\r
+                                C PJOB,PJOB,NOCORE\r
+                                C KJOB,KJOB,NOCORE\r
+                                C SAVE,SAVE,0\r
+                               REPEAT 0,<\r
+                                C RESAVE,COMERR,0\r
+                               >\r
+                                C CONT,CONT,0\r
+                                C DDT,DDTGO,0\r
+                                C ASSIGN,ASSIGN,NOCORE\r
+                                C DEASSI,DEASSIGN,NOCORE\r
+                                C STARTC,STARTC,0\r
+                                C CONTC,CONTC,0\r
+                                C DETACH,DETACH,NOCORE+NOJOBN\r
+                                C ATTACH,ATTACH,NOCORE+NOJOBN\r
+                               REPEAT 0,<\r
+                                C MTAPE,COMERR,0\r
+                                C DAYTIM,COMERR,NOCORE\r
+                                C RUNTIM,COMERR,NOCORE\r
+                                C TOTTIM,COMERR,NOCORE\r
+                                C NULTIM,COMERR,NOCRE\r
+                                C SYSDDT,COMERR,NOCORE\r
+                                C SYSMAK,SYSMAK,0\r
+                               >\r
+                                C DIGITAL,DIGITAL,NOCORE+NOJOBN\r
+                               >\r
+\r
+\fCOMINI - THE COMMAND DECODER  MACRO 10 05:51 24-APR-78 PAGE 5\r
+COMINI MAC     24-APR-78 03:49         T. HASTINGS 8-2-65\r
+\r
+\r
+                               ;GENERATE TABLE OF SIXBIT COMMAND NAMES\r
+\r
+                               DEFINE C(A,B,C)\r
+                               <         ZZ=.+1\r
+                                SIXBIT /A/\r
+                                IFN .-ZZ,<RELOC ZZ> ;ONLY FIRST 6 CHARACTERS\r
+                               >\r
+\r
+                               COMTAB:   NAMES^REPEAT 0,<\r
+                                C G,COMERR,0\r
+                               >\r
+       000074' 435762  450000   SIXBIT /CORE/\r
+       000075' 474564  000000   SIXBIT /GET/\r
+       000076' 636441  626400   SIXBIT /START/\r
+       000077' 515257  420000   SIXBIT /IJOB/\r
+       000100' 605257  420000   SIXBIT /PJOB/\r
+       000101' 535257  420000   SIXBIT /KJOB/\r
+       000102' 634166  450000   SIXBIT /SAVE/\r
+       000103' 435756  640000   SIXBIT /CONT/\r
+       000104' 444464  000000   SIXBIT /DDT/\r
+       000105' 416363  514756   SIXBIT /ASSIGN/\r
+       000106' 444541  636351   SIXBIT /DEASSI/\r
+       000107' 636441  626443   SIXBIT /STARTC/\r
+       000110' 435756  644300   SIXBIT /CONTC/\r
+       000111' 444564  414350   SIXBIT /DETACH/\r
+       000112' 416464  414350   SIXBIT /ATTACH/\r
+       000113' 445147  516441   SIXBIT /DIGITAL/\r
+       000114' 540000  000000\r
+                       000020  DISPL=.-COMTAB          ;LENTH OF TABLE\r
+\r
+\fCOMINI - THE COMMAND DECODER  MACRO 10 05:51 24-APR-78 PAGE 6\r
+COMINI MAC     24-APR-78 03:49         T. HASTINGS 8-2-65\r
+\r
+\r
+                               ;GENERATE THE DISPATCH TABLE\r
+\r
+                               DEFINE C(A,B,C)\r
+                               <         XWD C,B\r
+                               EXTERNAL B\r
+                               >\r
+\r
+                               DISP:     NAMES^REPEAT 0,<\r
+                                C G,COMERR,0\r
+                               >\r
+       000114' 400000  000000*  C CORE,CORE,NOCORE^      XWD NOCORE,CORE\r
+       000115' 000000  000000*  C GET,GET,0^     XWD 0,GET\r
+       000116' 000000  000000*  C START,START,0^         XWD 0,START\r
+       000117' 600000  000000*  C IJOB,IJOB,NOCORE+NOJOBN^       XWD NOCORE+NOJOBN,IJOB\r
+       000120' 400000  000000*  C PJOB,PJOB,NOCORE^      XWD NOCORE,PJOB\r
+       000121' 400000  000000*  C KJOB,KJOB,NOCORE^      XWD NOCORE,KJOB\r
+       000122' 000000  000000*  C SAVE,SAVE,0^   XWD 0,SAVE\r
+       000123' 000000  000000*  C CONT,CONT,0^   XWD 0,CONT\r
+       000124' 000000  000000*  C DDT,DDTGO,0^   XWD 0,DDTGO\r
+       000125' 400000  000000*  C ASSIGN,ASSIGN,NOCORE^          XWD NOCORE,ASSIGN\r
+       000126' 400000  000000*  C DEASSI,DEASSIGN,NOCORE^        XWD NOCORE,DEASSIGN\r
+       000127' 000000  000000*  C STARTC,STARTC,0^       XWD 0,STARTC\r
+       000130' 000000  000000*  C CONTC,CONTC,0^         XWD 0,CONTC\r
+       000131' 600000  000000*  C DETACH,DETACH,NOCORE+NOJOBN^   XWD NOCORE+NOJOBN,DETACH\r
+       000132' 600000  000000*  C ATTACH,ATTACH,NOCORE+NOJOBN^   XWD NOCORE+NOJOBN,ATTACH\r
+       000133' 600000  000000*  C DIGITAL,DIGITAL,NOCORE+NOJOBN^         XWD NOCORE+NOJOBN,DIGITAL\r
+\r
+                                         END,\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 000135\r
+\r
+9K CORE USED\r
+\r
+\fCOMINI - THE COMMAND DECODER  MACRO 10 05:51 24-APR-78 PAGE 7\r
+COMINI MAC     24-APR-78 03:49         SYMBOL TABLE\r
+\r
+A              000000  INT\r
+AC1            000015  INT\r
+AC2            000016  INT\r
+AC3            000017  INT\r
+AL             000001  INT\r
+ASSCON         400000  INT\r
+ASSIGN         000125' EXT\r
+ASSJOB         000015' EXT\r
+ASSPRG         200000  INT\r
+ATTACH         000132' EXT\r
+B              000014  INT\r
+BUFPNT         000012  INT\r
+BUFWRD         000013  INT\r
+CLOSB          002000  INT\r
+CLSIN          000002  INT\r
+CLSOUT         000001  INT\r
+COM1           000026' \r
+COM1A          000036' \r
+COM1B          000033' \r
+COM1C          000035' \r
+COM1D          000037' \r
+COM2           000041' \r
+COM2A          000043' \r
+COM2B          000047' \r
+COM3           000055' \r
+COM3A          000067' \r
+COMCNT         000041' EXT\r
+COMERR         000047' EXT\r
+COMMAN         000000' INT\r
+COMTAB         000074' \r
+CONMES         000066' EXT\r
+CONT           000123' EXT\r
+CONTC          000130' EXT\r
+CORE           000114' EXT\r
+CRLF           000067' EXT\r
+CTEXT          000003' EXT\r
+D              000017  INT\r
+DAT            000005  INT\r
+DCL            000001  INT\r
+DCW            020000  INT\r
+DDI            000007  INT\r
+DDO            000006  INT\r
+DDTGO          000124' EXT\r
+DDTMEM         000037  INT\r
+DDTSYM         000036  INT\r
+DEASSI         000126' EXT\r
+DEN            000004  INT\r
+DETACH         000131' EXT\r
+DEVADR         000007  INT\r
+DEVBUF         000006  INT\r
+DEVCHR         000001  INT\r
+\r
+\r
+\fCOMINI - THE COMMAND DECODER  MACRO 10 05:51 24-APR-78 PAGE 7-1\r
+COMINI MAC     24-APR-78 03:49         SYMBOL TABLE\r
+\r
+DEVCTR         000011  INT\r
+DEVDAT         000006  INT\r
+DEVIAD         000007  INT\r
+DEVIOS         000002  INT\r
+DEVLOG         000005  INT\r
+DEVMOD         000004  INT\r
+DEVNAM         000000  INT\r
+DEVOAD         000010  INT\r
+DEVPTR         000010  INT\r
+DEVSER         000003  INT\r
+DGF            000012  INT\r
+DIGITA         000133' EXT\r
+DIN            000003  INT\r
+DISP           000114' \r
+DISPL          000020  \r
+DLK            000005  INT\r
+DOU            000002  INT\r
+DR             000016  INT\r
+DRL            000000  INT\r
+DSI            000011  INT\r
+DSO            000010  INT\r
+DTW            040000  INT\r
+DVAVAL         000040  INT\r
+DVCDR          100000  INT\r
+DVDIR          000004  INT\r
+DVDIRI         400000  INT\r
+DVIN           000002  INT\r
+DVLPT          040000  INT\r
+DVMTA          000020  INT\r
+DVOUT          000001  INT\r
+DVTTY          000010  INT\r
+ENTRB          020000  INT\r
+GET            000115' EXT\r
+I              000010  INT\r
+IB             000013  INT\r
+IBUFB          200000  INT\r
+IJOB           000117' EXT\r
+INITB          400000  INT\r
+INPB           010000  INT\r
+IO             000020  INT\r
+IOACT          010000  INT\r
+IOBEG          000002  INT\r
+IOBKTL         040000  INT\r
+IOCON          000040  INT\r
+IODEND         020000  INT\r
+IODERR         200000  INT\r
+IODISC         400000  INT\r
+IODONE         400000  INT\r
+IODTER         100000  INT\r
+IOEND          000040  INT\r
+IOFST          000004  INT\r
+IOIMPM         400000  INT\r
+IONRCK         000100  INT\r
+\r
+\fCOMINI - THE COMMAND DECODER  MACRO 10 05:51 24-APR-78 PAGE 7-2\r
+COMINI MAC     24-APR-78 03:49         SYMBOL TABLE\r
+\r
+IORDEL         000100  INT\r
+IORET          000020  INT\r
+IOS            000000  INT\r
+IOSTRT         000010  INT\r
+IOUSE          400000  INT\r
+IOW            000001  INT\r
+IOWC           000020  INT\r
+IOWS           400000  INT\r
+ITEM           000004  INT\r
+JBFADR         000000  INT\r
+JBFCTR         000002  INT\r
+JBFPTR         000001  INT\r
+JBTADR         000026' EXT\r
+JBTSTS         000060' EXT\r
+JBUF           000005  INT\r
+JDAT           000011  INT\r
+JERR           002000  INT\r
+JIOW           100000  INT\r
+JNA            004000  INT\r
+JOBINI         000022' EXT\r
+JOBM           000071' \r
+KJOB           000121' EXT\r
+LOOKB          040000  INT\r
+MTW            010000  INT\r
+NOCOR          000051' \r
+NOCORE         400000  \r
+NOJOBN         200000  \r
+OBUFB          100000  INT\r
+OUTPB          004000  INT\r
+PDP            000003  INT\r
+PICHN          000100  INT\r
+PJOB           000120' EXT\r
+PROG           000007  INT\r
+RADX10         000064' EXT\r
+RUN            200000  INT\r
+RUNABL         204000  INT\r
+SAVE           000122' EXT\r
+START          000116' EXT\r
+STARTC         000127' EXT\r
+T              000012  \r
+T1             000013  \r
+TAC            000001  INT\r
+TAC1           000002  INT\r
+TEM            000010  INT\r
+TTYATC         020000  INT\r
+TTYCOM         000000' EXT\r
+TTYSTR         000040' EXT\r
+TTYUSE         010000  INT\r
+USRMOD         010000  INT\r
+UUO            000014  INT\r
+ZZ             000114' \r
+\f   CCCCCCCCCCCC         OOOOOOOOO         RRRRRRRRRRRR         EEEEEEEEEEEEEEE                                          \r
+   CCCCCCCCCCCC         OOOOOOOOO         RRRRRRRRRRRR         EEEEEEEEEEEEEEE                                          \r
+   CCCCCCCCCCCC         OOOOOOOOO         RRRRRRRRRRRR         EEEEEEEEEEEEEEE                                          \r
+CCC                  OOO         OOO      RRR         RRR      EEE                                                      \r
+CCC                  OOO         OOO      RRR         RRR      EEE                                                      \r
+CCC                  OOO         OOO      RRR         RRR      EEE                                                      \r
+CCC                  OOO         OOO      RRR         RRR      EEE                                                      \r
+CCC                  OOO         OOO      RRR         RRR      EEE                                                      \r
+CCC                  OOO         OOO      RRR         RRR      EEE                                                      \r
+CCC                  OOO         OOO      RRRRRRRRRRRR         EEEEEEEEEEEE                                             \r
+CCC                  OOO         OOO      RRRRRRRRRRRR         EEEEEEEEEEEE                                             \r
+CCC                  OOO         OOO      RRRRRRRRRRRR         EEEEEEEEEEEE                                             \r
+CCC                  OOO         OOO      RRR   RRR            EEE                                                      \r
+CCC                  OOO         OOO      RRR   RRR            EEE                                                      \r
+CCC                  OOO         OOO      RRR   RRR            EEE                                                      \r
+CCC                  OOO         OOO      RRR      RRR         EEE                                                      \r
+CCC                  OOO         OOO      RRR      RRR         EEE                                                      \r
+CCC                  OOO         OOO      RRR      RRR         EEE                                                      \r
+   CCCCCCCCCCCC         OOOOOOOOO         RRR         RRR      EEEEEEEEEEEEEEE                                          \r
+   CCCCCCCCCCCC         OOOOOOOOO         RRR         RRR      EEEEEEEEEEEEEEE                                          \r
+   CCCCCCCCCCCC         OOOOOOOOO         RRR         RRR      EEEEEEEEEEEEEEE                                          \r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  05:53:58\r
+File: DSKB0 :CORE  .LST   [8,296] Created: 20-April-1967 05:51:00 Printed: 24-April-1978 05:53:33\r
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:1930 \r
+File will be deleted after printing\r
+\f\r
+CORE - CORE ALLOCATION ROUTINE MACRO 10 05:51 24-APR-78 PAGE 1\r
+S      MAC     24-APR-78 21:40         G. BELL 6-29-65\r
+\r
+                                       XLIST\r
+                                      LIST\r
+                               TITLE CORE - CORE ALLOCATION ROUTINE\r
+                                       SUBTTL G. BELL 6-29-65\r
+                               ;         PUSHJ PDP, CORE1      ;ITEM = JOB #. TAC = 1K CORE BLOCKS\r
+                                                               ;REQUESTED\r
+                               ;         RET1                  ;OLD CORE RETURNED.\r
+                               ;         RET2                  ;OLD CORE RETURNED.   JBTADR, JOBREL ARE\r
+                                                               ;SET UP\r
+                               ; JBADR (ITEM) = POINTER TO JOB AREA. JOBREL (JBTADR) = HIGHEST LOCAT\r
+                               ; C(RH) JBTADR IS SET OT 0 OR REQUESTED CORE. JOBREL IS SET IF CORE G\r
+                               ; NOT A PURE PROCEDURE ...\r
+                               ;CORTAL:  0                             ;COUNT OF FREE CORE\r
+                               ;CORTAB:  BLOCK ^D3                     ;TABLE OF 72 BITS. 1 BIT FOR\r
+                               ;1K OF CORE. 1 = USED. 0 = FREE\r
+                               ;CORLST:  POINT 1, CORTAB, 32           ;POINTER FIRST OUT OF BOUNDS\r
+                               ;\r
+                               ;TEMPORARY USAGE\r
+       000000' 000000  000000  CORUSZ:   0                             ;SIZE OF USERS CODE, OLD.-NEW\r
+       000001' 000000  000000  CORLOC:   0                             ;POSITION OF 1ST FREE BLOCK\r
+                               ;\r
+                               ;AC ASSIGNMENTS\r
+                       000012  COR1=BUFPNT\r
+                       000013  COR2=BUFWRD\r
+                       000014  COR3=UUO\r
+                               INTERNAL CORE1\r
+                               EXTERNAL JBTADR,JOBREL,CORLST,CORTAL,CORTAB\r
+\r
+\fCORE - CORE ALLOCATION ROUTINE        MACRO 10 05:51 24-APR-78 PAGE 2\r
+CORE   MAC     24-APR-78 22:34         G. BELL 6-29-65\r
+\r
+\r
+       000002' 135500  000042' CORE1:    LDB COR1, CORE1P      \r
+       000003' 202500  000001'           MOVEM COR1, CORLOC\r
+       000004' 322500  000013'           JUMPE COR1, CORGET            ;IF 0 NO CORE NOEW.\r
+       000005' 554504  000000*           HLRZ COR1, JBTADR(ITEM)       ;CLEAR OLD CORE\r
+       000006' 350000  000012            AOS COR1                      ;HIGHEST ADDRESS AVAIL. FORM\r
+       000007' 240500  777766            ASH COR1, -^D10\r
+       000010' 202500  000000'           MOVEM COR1, CORUSZ\r
+       000011' 402000  000014  CORRET:   CLEARM COR3                   ;RETURN OLD CORE\r
+       000012' 260140  000056'           PUSHJ PDP, CORSTG\r
+       000013' 402004  000005* CORGET:   SETZM JBTADR(ITEM)    ;CLEAR JOB ADDRESS TO 0\r
+       000014' 322040  000037'           JUMPE TAC, COROK              ;IF NO CORE TO GET, RETURN\r
+       000015' 200600  000043'           MOVE COR3, CORE2P     ;SET UP FOR\r
+       000016' 476000  000001'           SETOM CORLOC                  ;HOLE SEARCH\r
+       000017' 260140  000044' CORG1:    PUSHJ PDP, CORHOL\r
+       000020' 254000  000040'           JRST CORNG                    ;UNSUCCESSFUL SEARCH\r
+       000021' 315500  000001            CAMGE COR1, TAC               ;HOLE FOUND\r
+       000022' 254000  000017'           JRST CORG1\r
+       000023' 213000  000012  CORGVE:   MOVNS COR1                    ;BACKUP CORLOC\r
+       000024' 272500  000001'           ADDM COR1, CORLOC\r
+       000025' 202040  000000'           MOVEM TAC, CORUSZ             ;RESERVE HOLD FOR JOB\r
+       000026' 201600  000001            MOVEI COR3, 1                 ;SET CORTAB\r
+       000027' 260140  000056'           PUSHJ PDP, CORSTG\r
+       000030' 200500  000001'           MOVE COR1, CORLOC             ;C(RH)=RELOC, C(LH)=PROTECT\r
+       000031' 240500  000012            ASH COR1, ^D10\r
+       000032' 542504  000013*           HRRM COR1, JBTADR(ITEM)\r
+       000033' 240040  000012            ASH TAC, ^D10\r
+       000034' 275040  000001            SUBI TAC, 1\r
+       000035' 542052  000000*           HRRM TAC, JOBREL (COR1)\r
+       000036' 506044  000032*           HRLM TAC,JBTADR(ITEM)\r
+       000037' 350003  000000  COROK:    AOS (PDP)\r
+       000040' 200040  000000* CORNG:    MOVE TAC, CORTAL\r
+       000041' 263140  000000            POPJ PDP,\r
+\r
+       000042' 121004  000036* CORE1P:   POINT 8, JBTADRR(ITEM),25\r
+       000043' 440100  000000* CORE2P:   POINT 1, CORTAB\r
+\r
+\fCORE - CORE ALLOCATION ROUTINE        MACRO 10 05:51 24-APR-78 PAGE 3\r
+CORE   MAC     24-APR-78 22:34         G. BELL 6-29-65\r
+\r
+\r
+                               ;         PUSHJ PDP, CORHOL     ;COR1-HOLES FREE, COR2=TEMP\r
+                               ;         RETURN1               ;COR3=POINTER. RETURN1=END OF STRING RE\r
+                               ;         RETURN2               ;HOLE FOUND.\r
+                               ; CORLOC CONTAINS 0,1.. N, THE CORE BLK PTR. CORLST IS PTR TO\r
+                               ; STOP STRING TEST\r
+       000044' 402000  000012  CORHOL:   CLEARM COR1\r
+       000045' 316600  000000* CORH01:   CAMN COR3, CORLST             ;TEST DONE\r
+       000046' 263140  000000            POPJ PDP,\r
+       000047' 134540  000014            ILDB COR2, COR3               ;TEST NEXT BLOCK\r
+       000050' 350000  000001'           AOS CORLOC\r
+       000051' 336000  000013            SKIPN COR2\r
+       000052' 344500  000045'           AOJA COR1, CORH01             ;COUNT FREE\r
+       000053' 322500  000045'           JUMPE COR1, CORH01\r
+       000054' 350003  000000            AOS (PDP)\r
+       000055' 263140  000000            POPJ PDP,\r
+                               ;;        PUSHJ PDP, CORSTG     ;CORUSZ=SIZE RESERVED. CORLOC=LOCATION\r
+                               ; IF COR3=0, THEN FREE CORE\r
+                               ; IF COR3=1, THEN RESERVE CORE.\r
+                               ; USES COR1, COR2, COR3\r
+                               ; CORTAL=COUNT OF FREE CORE. AND IS UPDATED\r
+       000056' 261140  000001  CORSTG:   PUSH PDP, TAC                 ;SAVE NO. OF BLOCKS BEING REQ\r
+       000057' 200540  000000'           MOVE COR2,CORUSZ              ;FIX CORTALLY\r
+       000060' 332000  000014            SKIPE COR3\r
+       000061' 213000  000013            MOVNS COR2\r
+       000062' 272540  000040*           ADDM COR2, CORTAL\r
+       000063' 200040  000001'           MOVE TAC, CORLOC              ;GET POINTER-1\r
+       000064' 231040  000044            IDIVI TAC, ^D36               ;TAC=WORD,TAC1=BIT\r
+       000065' 270040  000076'           ADD TAC, CORLP1       ;FORM BYTE POINTER\r
+       000066' 213000  000002            MOVNS TAC1\r
+       000067' 271100  000044            ADDI TAC1, ^D36\r
+       000070' 137100  000077'           DPB TAC1, [POINT 6, TAC, 5]\r
+       000071' 200540  000000'           MOVE COR2, CORUSZ\r
+       000072' 136600  000001  CORLOP:   DPBI COR3, TAC                ;SET OR CLEAR EACH BIT IN USE\r
+       000073' 367540  000072'           SOJG COR2, CORLOP\r
+       000074' 262140  000001            POP PDP, TAC\r
+       000075' 263140  000000            POPJ PDP,\r
+\r
+       000076' 000100  000043* CORLP1:   XWD 100, CORTAB\r
+\r
+                                         END,\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 000100\r
+\r
+9K CORE USED\r
+\r
+\fCORE - CORE ALLOCATION ROUTINE        MACRO 10 05:51 24-APR-78 PAGE 4\r
+CORE   MAC     24-APR-78 22:34         SYMBOL TABLE\r
+\r
+A              000000  INT\r
+AC1            000015  INT\r
+AC2            000016  INT\r
+AC3            000017  INT\r
+AL             000001  INT\r
+ASSCON         400000  INT\r
+ASSPRG         200000  INT\r
+B              000014  INT\r
+BUFPNT         000012  INT\r
+BUFWRD         000013  INT\r
+CLOSB          002000  INT\r
+CLSIN          000002  INT\r
+CLSOUT         000001  INT\r
+COR1           000012  \r
+COR2           000013  \r
+COR3           000014  \r
+CORE1          000002' INT\r
+CORE1P         000042' \r
+CORE2P         000043' \r
+CORG1          000017' \r
+CORGET         000013' \r
+CORGVE         000023' \r
+CORH01         000045' \r
+CORHOL         000044' \r
+CORLOC         000001' \r
+CORLOP         000072' \r
+CORLP1         000076' \r
+CORLST         000045' EXT\r
+CORNG          000040' \r
+COROK          000037' \r
+CORRET         000011' \r
+CORSTG         000056' \r
+CORTAB         000076' EXT\r
+CORTAL         000062' EXT\r
+CORUSZ         000000' \r
+D              000017  INT\r
+DAT            000005  INT\r
+DCL            000001  INT\r
+DCW            020000  INT\r
+DDI            000007  INT\r
+DDO            000006  INT\r
+DDTMEM         000037  INT\r
+DDTSYM         000036  INT\r
+DEN            000004  INT\r
+DEVADR         000007  INT\r
+DEVBUF         000006  INT\r
+DEVCHR         000001  INT\r
+DEVCTR         000011  INT\r
+DEVDAT         000006  INT\r
+DEVIAD         000007  INT\r
+DEVIOS         000002  INT\r
+DEVLOG         000005  INT\r
+\r
+\r
+\fCORE - CORE ALLOCATION ROUTINE        MACRO 10 05:51 24-APR-78 PAGE 4-1\r
+CORE   MAC     24-APR-78 22:34         SYMBOL TABLE\r
+\r
+DEVMOD         000004  INT\r
+DEVNAM         000000  INT\r
+DEVOAD         000010  INT\r
+DEVPTR         000010  INT\r
+DEVSER         000003  INT\r
+DGF            000012  INT\r
+DIN            000003  INT\r
+DLK            000005  INT\r
+DOU            000002  INT\r
+DR             000016  INT\r
+DRL            000000  INT\r
+DSI            000011  INT\r
+DSO            000010  INT\r
+DTW            040000  INT\r
+DVAVAL         000040  INT\r
+DVCDR          100000  INT\r
+DVDIR          000004  INT\r
+DVDIRI         400000  INT\r
+DVIN           000002  INT\r
+DVLPT          040000  INT\r
+DVMTA          000020  INT\r
+DVOUT          000001  INT\r
+DVTTY          000010  INT\r
+ENTRB          020000  INT\r
+I              000010  INT\r
+IB             000013  INT\r
+IBUFB          200000  INT\r
+INITB          400000  INT\r
+INPB           010000  INT\r
+IO             000020  INT\r
+IOACT          010000  INT\r
+IOBEG          000002  INT\r
+IOBKTL         040000  INT\r
+IOCON          000040  INT\r
+IODEND         020000  INT\r
+IODERR         200000  INT\r
+IODISC         400000  INT\r
+IODONE         400000  INT\r
+IODTER         100000  INT\r
+IOEND          000040  INT\r
+IOFST          000004  INT\r
+IOIMPM         400000  INT\r
+IONRCK         000100  INT\r
+IORDEL         000100  INT\r
+IORET          000020  INT\r
+IOS            000000  INT\r
+IOSTRT         000010  INT\r
+IOUSE          400000  INT\r
+IOW            000001  INT\r
+IOWC           000020  INT\r
+IOWS           400000  INT\r
+ITEM           000004  INT\r
+JBFADR         000000  INT\r
+\r
+\fCORE - CORE ALLOCATION ROUTINE        MACRO 10 05:51 24-APR-78 PAGE 4-2\r
+CORE   MAC     24-APR-78 22:34         SYMBOL TABLE\r
+\r
+JBFCTR         000002  INT\r
+JBFPTR         000001  INT\r
+JBTADR         000042' EXT\r
+JBUF           000005  INT\r
+JDAT           000011  INT\r
+JERR           002000  INT\r
+JIOW           100000  INT\r
+JNA            004000  INT\r
+JOBREL         000035' EXT\r
+LOOKB          040000  INT\r
+MTW            010000  INT\r
+OBUFB          100000  INT\r
+OUTPB          004000  INT\r
+PDP            000003  INT\r
+PICHN          000100  INT\r
+PROG           000007  INT\r
+RUN            200000  INT\r
+RUNABL         204000  INT\r
+TAC            000001  INT\r
+TAC1           000002  INT\r
+TEM            000010  INT\r
+TTYATC         020000  INT\r
+TTYUSE         010000  INT\r
+USRMOD         010000  INT\r
+UUO            000014  INT\r
+\fDDDDDDDDDDDD         TTTTTTTTTTTTTTT         SSSSSSSSSSSS      EEEEEEEEEEEEEEE      RRRRRRRRRRRR            222222222   \r
+DDDDDDDDDDDD         TTTTTTTTTTTTTTT         SSSSSSSSSSSS      EEEEEEEEEEEEEEE      RRRRRRRRRRRR            222222222   \r
+DDDDDDDDDDDD         TTTTTTTTTTTTTTT         SSSSSSSSSSSS      EEEEEEEEEEEEEEE      RRRRRRRRRRRR            222222222   \r
+DDD         DDD            TTT            SSS                  EEE                  RRR         RRR      222         222\r
+DDD         DDD            TTT            SSS                  EEE                  RRR         RRR      222         222\r
+DDD         DDD            TTT            SSS                  EEE                  RRR         RRR      222         222\r
+DDD         DDD            TTT            SSS                  EEE                  RRR         RRR                  222\r
+DDD         DDD            TTT            SSS                  EEE                  RRR         RRR                  222\r
+DDD         DDD            TTT            SSS                  EEE                  RRR         RRR                  222\r
+DDD         DDD            TTT               SSSSSSSSS         EEEEEEEEEEEE         RRRRRRRRRRRR                  222   \r
+DDD         DDD            TTT               SSSSSSSSS         EEEEEEEEEEEE         RRRRRRRRRRRR                  222   \r
+DDD         DDD            TTT               SSSSSSSSS         EEEEEEEEEEEE         RRRRRRRRRRRR                  222   \r
+DDD         DDD            TTT                        SSS      EEE                  RRR   RRR                  222      \r
+DDD         DDD            TTT                        SSS      EEE                  RRR   RRR                  222      \r
+DDD         DDD            TTT                        SSS      EEE                  RRR   RRR                  222      \r
+DDD         DDD            TTT                        SSS      EEE                  RRR      RRR            222         \r
+DDD         DDD            TTT                        SSS      EEE                  RRR      RRR            222         \r
+DDD         DDD            TTT                        SSS      EEE                  RRR      RRR            222         \r
+DDDDDDDDDDDD               TTT            SSSSSSSSSSSS         EEEEEEEEEEEEEEE      RRR         RRR      222222222222222\r
+DDDDDDDDDDDD               TTT            SSSSSSSSSSSS         EEEEEEEEEEEEEEE      RRR         RRR      222222222222222\r
+DDDDDDDDDDDD               TTT            SSSSSSSSSSSS         EEEEEEEEEEEEEEE      RRR         RRR      222222222222222\r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  05:53:58\r
+File: DSKB0 :DTSER2.LST   [8,296] Created: 20-April-1967 05:51:00 Printed: 24-April-1978 05:53:33\r
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:1924 \r
+File will be deleted after printing\r
+\f\r
+DTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING       MACRO 10 05:51 24-APR-78 PAGE 1\r
+S      MAC     24-APR-78 21:40         L. HANTMANN 8-2-65 MULTIPLE DIRECTORIES VERSION\r
+\r
+                                       XLIST\r
+                                      LIST\r
+                               TITLE DTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING\r
+                               SUBTTL  L. HANTMANN 8-2-65 MULTIPLE DIRECTORIES VERSION\r
+                       000001          DTSIZ=1\r
+\r
+                               ;SUBROUTINE FOR DIRECTORY SEARCH\r
+                               ;PROG CONTAINS ACTUAL START OF PROGRAM\r
+                               ;DEVDAT CONTAINS ACTUAL START OF DVDB\r
+                               ;UUO CONTAINS RELATIVE ADDRESS OF DIRECTORY ENTRY IN USER AREA\r
+                               ;FORMAT   PUSHJ PDP, UDIRSH\r
+                               ;         JRST X                ;RETURN IF EMPTY ENTRY FOUND\r
+                               ;         NORMAL RETURN WHEN ENTRY IS FOUND\r
+                               INTERNAL ULOOK, UENTER\r
+                               EXTERNAL UXIT,PUUOAC,IOIERR,DIRERR,ADRCK,CPOPJ1,THSDAT\r
+                       000004            UDIRLN=4\r
+                       000100            UDIRIN=100            ;DIRECTORY IN\r
+                       000200            UDIREN=200            ;DIRECTORY ENTERED INTO\r
+                       000400            UNWFRE=400            ;FREE BLCOK POINTER CHANGED\r
+                       001000            ULINKF=1000           ;LAST OUTPUT BLOCK LINKED TO STORAGE\r
+                       000001            UX1=TAC\r
+                       000002            UX2=TAC1\r
+                       000005            UX3=DAT\r
+       000000' 602600  777760  UDIRSH:   TRNE UUO,777760       ;IS BLOCK IN UUO ACS?\r
+       000001' 260140  000000*           PUSHJ PDP,ADRCK       ;NO. CHECK ADDRESS\r
+       000002' 201054  000003            MOVEI  TAC,3(UUO)\r
+       000003' 603000  000002            TLNE IOS,IOBEG\r
+       000004' 260140  000343'           PUSHJ PDP, UBEG\r
+       000005' 550040  000007            HRRZ UX1, PROG                ;COPY ADR OF START OF PROGRAM\r
+       000006' 272040  000014            ADDM UX1, UUO                 ;ACTUAL START OF DIR. IN USER\r
+       000007' 201066  000000*           MOVEI UX1,@UDIR(DEVDAT)       ;ACTUAL POINTER TO DIRECTORY\r
+       000010' 550101  000000            HRRZ UX2, 0(UX1)              ;RELATIVE ADDR OF 1ST ENTRY I\r
+                                                                       ;DIRECTORY\r
+       000011' 505042  777603            HRLI UX1, -^D129+UDIRLN(UX2)  ;ENTRY COUNTER\r
+       000012' 272100  000001            ADDM UX2, UX1                 ;START OF 1ST ENTRY IN DIRECT\r
+       000013' 332000  000002            SKIPE UX2\r
+       000014' 303100  000174            CAILE UX2,174         ;IS THE REL ADR OF 1ST ENTRY INSIDE BUF\r
+       000015' 254000  000000*           JRST DIRERR           ;NO\r
+       000016' 336101  000000  UDIR2:    SKIPN UX2, 0 (UX1)            ;FIRST WORD OF ENTRY\r
+       000017' 263140  000000            POPJ PDP,                     ;SPACES FOUND\r
+       000020' 316114  000000            CAMN UX2, 0(UUO)              ;CHECK IF = TO USER AREA\r
+       000021' 254000  000026'           JRST UDIR4                    ;CHECK 2ND WORD\r
+       000022' 270040  000034' UDIR3:    ADD UX1, UDIRK1       \r
+       000023' 321040  000016'           JUMPL UX1, UDIR2\r
+       000024' 262140  000001            POP PDP, UX1                  ;TAKE PREVIOUS EXIT FROM TABL\r
+       000025' 254000  000000*           JRST UXIT                     ;TABLE FULL\r
+       000026' 554114  000001  UDIR4:    HLRZ UX2, 1 (UUO)             ;2ND WORD IN USER ARE\r
+       000027' 322100  000000*           JUMPE UX2, CPOPJ1\r
+       000030' 554241  000001            HLRZ UX3, 1 (UX1)             ;2ND WORD OF DIRECTORY AREA\r
+       000031' 302242  000000            CAIE UX3, 0 (UX2)\r
+       000032' 254000  000022'           JRST UDIR3                    ;CHECK MORE ENTRIES\r
+       000033' 254000  000027*           JRST CPOPJ1           ;MATCH, SKIP RETURN\r
+\r
+       000034' 000004  000004  UDIRK1:   XWD UDIRLN, UDIRLN\r
+\r
+\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING      MACRO 10 05:51 24-APR-78 PAGE 2\r
+DTSER2 MAC     24-APR-78 02:46         L. HANTMANN 8-2-65 MULTIPLE DIRECTORIES VERSION\r
+\r
+\r
+                               ;SUBROUTINE FOR DIRECTORY LOOKUP\r
+\r
+                               ;FORMAT   PUSHJ PDP, UDIRLU             ;VIA UUO\r
+                               ;         JRST X                        ;ENTRY NOT IN TABLE\r
+\r
+       000035' 260140  000000' ULOOK:    PUSHJ PDP, UDIRSH\r
+       000036' 254000  000025*           JRST UXIT\r
+       000037' 540241  000001            HRR UX3, 1 (UX1)\r
+       000040' 506246  000007            HRLM UX3, DEVIAD (DEVDAT)\r
+       000041' 505101  000000  ULOOK1:   HRLI UX2, 0 (UX1)             ;FROM DIRECTORY\r
+       000042' 541114  000000            HRRI UX2, 0 (UUO)             ;TO USER\r
+       000043' 251114  000003            BLT UX2, UDIRLN-1(UUO)\r
+       000044' 135100  001272'           LDB UX2,[POINT 12,2(UX1),35]  ;GET DATE USER(ENTER)EXEC(LOO\r
+       000045' 326100  000050'           JUMPN UX2,.+3         ;IS IT 0?\r
+       000046' 200100  000000*           MOVE UX2,THSDAT       ;YES, USE CURRENT DATE\r
+       000047' 137100  001273'           DPB UX2,[POINT 12,2(UUO),35]  ;SET EXEC\r
+       000050' 350003  000000            AOS (PDP)\r
+       000051' 254000  000311'           JRST UTWDR\r
+\r
+                               ;SUBROUTINE TO ENTER NEW OR CHANGE OLD DIRECTORY ENTRY\r
+                               ;FORMAT   PUSHJ PDP, UDIRCH\r
+                               ;         JRST X                        ;NO ROOM IN TABLE\r
+\r
+       000052' 260140  000000' UENTER:   PUSHJ PDP, UDIRSH\r
+       000053' 254000  000054'           JRST .+1\r
+       000054' 350246  000000*           AOS UX3, UFREE (DEVDAT)\r
+       000055' 542254  000001            HRRM UX3,1(UUO)\r
+       000056' 506246  000010            HRLM UX3, DEVOAD (DEVDAT)\r
+       000057' 250040  000014            EXCH UX1, UUO\r
+       000060' 661000  001600            TLO IOS, UDIREN+UNWFRE+ULINKF\r
+       000061' 202006  000002            MOVEM IOS, DEVIOS(DEVDAT)\r
+       000062' 254000  000041'           JRST ULOOK1\r
+\r
+\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING      MACRO 10 05:51 24-APR-78 PAGE 3\r
+DTSER2 MAC     24-APR-78 02:46         L. HANTMANN 8-2-65 MULTIPLE DIRECTORIES VERSION\r
+\r
+\r
+                               ;CREATE A CLEAN TAPE AND DIRECTORY\r
+\r
+                               INTERNAL UTPCLR\r
+                               EXTERNAL USRJDA\r
+\r
+       000063' 135040  000000* UTPCLR:   LDB TAC,PUUOAC\r
+       000064' 200301  000000*           MOVE DEVDAT,USRJDA(TAC)\r
+       000065' 322300  000000*           JUMPE DEVDAT,IOIERR\r
+       000066' 554046  000000            HLRZ TAC,DEVNAM(DEVDAT)\r
+       000067' 302040  446441            CAIE TAC,446441\r
+       000070' 254000  000036*           JRST UXIT             ;NOT DTA\r
+       000071' 200006  000002            MOVE IOS,DEVIOS(DEVDAT)\r
+       000072' 621000  000002            TLZ IOS,IOBEG\r
+       000073' 661000  000700            TLO IOS,UDIRIN+UDIREN+UNWFRE\r
+                               IFE DTSIZ,<        MOVEM DEVDAT,DIREC>\r
+                               ;THIS FOR SINGLE DIRECTORY ONLY\r
+       000074' 200046  000007*           MOVE TAC,UDIR(DEVDAT)\r
+       000075' 200100  001274'           MOVE TAC1,[XWD 1,5]\r
+       000076' 202101  000000            MOVEM TAC1,(TAC)\r
+       000077' 507000  000001            HRLS TAC\r
+       000100' 253040  000101'           AOBJN TAC,.+1\r
+       000101' 402001  000000            SETZM (TAC)\r
+       000102' 200100  000001            MOVE TAC1,TAC\r
+       000103' 350000  000001            AOS TAC\r
+       000104' 251042  000176            BLT TAC,176(TAC1)\r
+       000105' 201040  000001            MOVEI TAC, 1\r
+       000106' 202046  000054*           MOVEM TAC, UFREE (DEVDAT)\r
+       000107' 202006  000002            MOVEM IOS, DEVIOS(DEVDAT)\r
+       000110' 260140  000326'           PUSHJ PDP,UTPREL\r
+       000111' 254000  000070*           JRST UXIT\r
+\r
+\r
+                               ;END OF DTDR\r
+\r
+\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING      MACRO 10 05:51 24-APR-78 PAGE 4\r
+DTSER2 MAC     24-APR-78 02:46         L. HANTMANN 8-2-65 MULTIPLE DIRECTORIES VERSION\r
+\r
+\r
+                               SUBTTL  L. HANTMAN PART 1 7-13-65\r
+                       010000            UREV=10000            ;DT REVERSE BIT\r
+                       000001            DTSIZ=1               ;1 FOR ONE BUFFER PER TAPE UNIT\r
+\r
+                       000001            UBLK=1                ;NUMBER OF BLOCKS/BLOCK\r
+                       000001            UCHN=1                ;CHANNEL OF DATA CONTROL = 1, LOC 42\r
+                       000042            UCHA=42               ;DATA CONTROL INTERRUPT POSITION\r
+                                         EXTERNAL UXIT,ADVBFF,ADVBFE,IOSET,OUT,WAIT1,WSYNC\r
+                                         EXTERNAL PIOMOD,PUNIT,UFREE,UDIR,ADRERR,JOBPFI\r
+                                         ENTRY UTDSP\r
+\r
+                       004010  DACI=4010                       ;DC INPUT DT\r
+                       003410  DACO=3410                       ;DC OUTPUT DT\r
+                       220000  SL=220000                       ;DT TURN ON. SELECT\r
+                       003000          DTR=3000                        ;DT TURN AROUND DELAY\r
+                       002000  DT=2000                         ;DT START/STOP DELAY\r
+                       000300  RD=300                          ;DT RD\r
+                       000700  WD=700                          ;DT WR\r
+                       000200  RB=200                          ;DT READ BLOCK NOS.\r
+                       000002  VEOT=2                          ;EOT FLAG BIT\r
+                       010000  GR=10000                        ;DT REVERSE BIT\r
+                       040000  JDE=40000                       ;JOB DONE ENABLE\r
+                       100000  EE=100000                       ;ENABLE END FLAG\r
+                       002000  URDIR=2000                      ;READING DIRECTORY\r
+\r
+       000112' 254000  000326' UTDSP:    JRST UTPREL           ;RELEASE\r
+       000113' 254000  000312'           JRST UTPCLS           ;CLOSE\r
+       000114' 254000  000125'           JRST UOUT             ;OUTPUT\r
+       000115' 254000  000204'           JRST UIN              ;INPUT\r
+       000116' 254000  000052'           JRST UENTER           ;ENTER IN DIRECTORY\r
+       000117' 254000  000035'           JRST ULOOK            ;LOOKUP IN DIRECTORY\r
+       000120' 254000  000633'           JRST UDMPO            ;DUMPOUT\r
+       000121' 254000  001022'           JRST UDMPI            ;DUMPIN\r
+       000122' 254000  000272'           JRST SETO             ;SET OUTPUT BLOCK NO.\r
+       000123' 254000  000267'           JRST SETI             ;SET INPUT BLOCK NO.\r
+       000124' 254000  000277'           JRST GETF             ;GET FREE BLOCK\r
+\r
+\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING      MACRO 10 05:51 24-APR-78 PAGE 5\r
+DTSER2 MAC     24-APR-78 02:46         L. HANTMAN PART 1 7-13-65\r
+\r
+\r
+       000125' 260140  001142' UOUT:     PUSHJ PDP, UINTER             ;CHECK INTERLOCK\r
+       000126' 661000  000020            TLO IOS, IO                   ;WRITING\r
+       000127' 550046  000010            HRRZ TAC,DEVOAD(DEVDAT)\r
+       000130' 270040  000007            ADD TAC, PROG                 ;ACTUAL BUFFER ADDRESS\r
+       000131' 554106  000010            HLRZ TAC1, DEVOAD(DEVDAT)     ;BLOCK TO WRITE\r
+       000132' 306100  000001            CAIN TAC1,1\r
+       000133' 254000  000171'           JRST UOUT4                    ;COPY DIRECTORY\r
+       000134' 554101  000001            HLRZ TAC1, 1(TAC)             ;BLOCK TIE\r
+       000135' 621000  001000            TLZ IOS, ULINKF               ;NOT LINKED TO FREE STORAGE\r
+       000136' 326100  000144'           JUMPN TAC1, UOUT1             ;USE BALOCK NUMBER INDICATED\r
+       000137' 623000  000002            TLZE IOS, IOBEG               ;GET FREE STORAGE BLOCK\r
+       000140' 260140  000370'           PUSHJ PDP, UBEG3\r
+       000141' 661000  001400            TLO IOS,UNWFRE+ULINKF         ;LINKED TO FREE STORAGE\r
+       000142' 202006  000002            MOVEM IOS, DEVIOS (DEVDAT)\r
+       000143' 350106  000106*           AOS TAC1,UFREE(DEVDAT)        ;NEXT FREE BLOCK\r
+       000144' 306100  000001  UOUT1:    CAIN TAC1,1                   ;IF 1, THIS IS LAST BLOCK\r
+       000145' 400100  000000            SETZ TAC1,                    ;LAST BLOCK TIE = 0\r
+       000146' 506101  000001            HRLM TAC1,1(TAC)              ;BLOCK\r
+       000147' 552040  001121'           HRRZM TAC,UBUF                ;ACTUAL LOCATION OF DATA\r
+       000150' 544046  000010            HLR TAC,DEVOAD(DEVDAT)\r
+       000151' 506106  000010            HRLM TAC1, DEVOAD(DEVDAT)     ;NEXT BLOCK\r
+       000152' 254000  000375'           JRST USETW\r
+                               ;RETURN FROM WRITING 1 BLOCK\r
+\r
+       000153' 200046  000010  UOUT2:    MOVE TAC,DEVOAD(DEVDAT)\r
+       000154' 505040  000007            HRLI TAC,PROG                 ;PROG, BUFFER ADDRESS\r
+       000155' 515100  400000            HRLZI TAC1,IOUSE\r
+       000156' 412120  000001            ANDCAM TAC1,@TAC              ;SET USE BIT IN BUFFER\r
+       000157' 554106  000010            HLRZ TAC1,DEVOAD(DEVDAT)      ;BLOCK TIE\r
+       000160' 322100  000167'           JUMPE TAC1,UOUT3              ;WAS BLOCK WRITTEN THE LAST 0\r
+       000161' 540060  000001            HRR TAC,@TAC                  ;PROG, NEXT BUFFER ADDRESS\r
+       000162' 542046  000010            HRRM TAC,DEVOAD(DEVDAT)       ;NEXT BUFFER\r
+       000163' 602000  000040            TRNE IOS, IOCON               ;CONTINUOUS?\r
+       000164' 254000  000167'           JRST UOUT3                    ;STOP TAPE AND DISMISS\r
+       000165' 335020  000001            SKIPGE @TAC                   ;IS NEXT BUFFER EMPTY?\r
+       000166' 254000  000126'           JRST UOUT+1                   ;PROCESS NEXT BLOCK\r
+       000167' 262140  000001  UOUT3:    POP PDP, TAC                  ;REDUCE TABLE\r
+       000170' 254000  001220'           JRST DTC1                     ;STOP TAPE AND DISMISS\r
+\r
+\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING      MACRO 10 05:51 24-APR-78 PAGE 6\r
+DTSER2 MAC     24-APR-78 02:46         L. HANTMAN PART 1 7-13-65\r
+\r
+\r
+                               ;COPY DIRECTORY WHEN WRITING BLOCK 1\r
+       000171' 505101  000001  UOUT4:    HRLI TAC1,1(TAC)              ;BUFFER ADDRESS, FROM\r
+       000172' 540106  000074*           HRR TAC1, UDIR(DEVDAT)        ;DIRECTORY ADDRESS, TO\r
+       000173' 550046  000172*           HRRZ TAC, UDIR(DEVDAT)        ;DIRECTORY ADDRESS\r
+       000174' 251101  000177            BLT TAC1, 177(TAC)            ;MORE BUFFER AREA TO DIRECTORY\r
+       000175' 661000  000300            TLO IOS, UDIRIN+UDIREN        ;SET DIRECTORY BITS\r
+       000176' 200126  000173*           MOVE TAC1, @UDIR(DEVDAT)      ;NEXT FREE BLOCK IN DIRECTORY\r
+       000177' 556106  000143*           HLRZM TAC1,UFREE(DEVDAT)      ;PLACE IN DATA BLOCK\r
+       000200' 515100  400000            HRLZI TAC1, IOUSE\r
+       000201' 413101  000000            ANDCAB TAC1, 0(TAC)           ;CLEAR USE BIT\r
+       000202' 542106  000010            HRRM TAC1, DEVOAD(DEVDAT)     ;ADVANCE BUFFER POINTER\r
+       000203' 254000  000242'           JRST UEND2\r
+                               ,INPUT- NON DUMP\r
+\r
+       000204' 260140  001142' UIN:      PUSHJ PDP, UINTER             ;CHECK INTERLOCK\r
+       000205' 621000  000020            TLZ IOS, IO                   ;READING\r
+       000206' 550046  000007            HRRZ TAC,DEVIAD(DEVDAT)       ;UBUF:=TAC:=DEVIAD+PROG\r
+       000207' 270040  000007            ADD TAC,PROG\r
+       000210' 554106  000007            HLRZ TAC1, DEVIAD(DEVDAT)     ;BLOCK TO READ\r
+       000211' 306100  000001            CAIN TAC1, 1                  ;TRYING TO READ DIRECTORY?\r
+       000212' 254000  000251'           JRST UIN2                     ;COPY DIRECTORY\r
+       000213' 552040  001121'           HRRZM TAC,UBUF\r
+       000214' 554046  000007            HLRZ TAC,DEVIAD(DEVDAT)       ;TAC:=C(DEVIAD LH)\r
+       000215' 322040  000236'           JUMPE TAC,UEND                ;NEXT BLOCK=00, THEN END OF FI\r
+       000216' 254000  000377'           JRST USETR\r
+                               ;RETURN FROM READING ONE BLOCK\r
+\r
+       000217' 550046  000007  UIN1:     HRRZ TAC,DEVIAD(DEVDAT)\r
+       000220' 270040  000007            ADD TAC,PROG\r
+       000221' 554101  000001            HLRZ TAC1,1(TAC)\r
+       000222' 546106  000007            HLRM TAC1,DEVIAD(DEVDAT)      ;NEXT BLOCK NUMBER TO READ\r
+       000223' 200046  000007            MOVE TAC,DEVIAD(DEVDAT)\r
+       000224' 505040  000007            HRLI TAC,PROG\r
+       000225' 515100  400000            HRLZI TAC1,IOUSE\r
+       000226' 436120  000001            IORM TAC1,@TAC                ;SET USE BIT\r
+       000227' 540060  000001            HRR TAC,@TAC\r
+       000230' 542046  000007            HRRM TAC,DEVIAD(DEVDAT)       ;NEXT BUFFER ADDRESS\r
+       000231' 602000  000040            TRNE IOS, IOCON               ;CONTINUOUS?\r
+       000232' 254000  000167'           JRST UOUT3                    ;EXIT\r
+       000233' 331020  000001            SKIPL @TAC                    ;IS NEXT BUFFER FULL\r
+       000234' 254000  000205'           JRST UIN+1                    ;PROCESS NEXT BLOCK\r
+       000235' 254000  000167'           JRST UOUT3                    ;EXIT\r
+\r
+       000236' 661000  000040  UEND:     TLO IOS, IOEND\r
+       000237' 202006  000002            MOVEM IOS, DEVIOS(DEVDAT)\r
+       000240' 721300  020000            CONSZ UTC, 20000              ;IS TAPE STOPPED?\r
+       000241' 254000  000167'           JRST UOUT3                    ;STOP TAPE AND EXIT\r
+       000242' 371000  000000* UEND2:    SOSL DCREQ            ;DECREMENT REQUEST COUNT, IS ANY ONE WA\r
+       000243' 476000  000000*           SETOM DCAVAL                  ;YES,SET DATA CONTROL AVAILABLE\r
+       000244' 371000  000000*           SOSL DTREQ            ;DECREMENT REQUEST COUNT, IS ANY ONE WA\r
+       000245' 476000  000000*           SETOM DTAVAL                  ;YES,SET DECTAPE CONTROL AVAI\r
+       000246' 620000  010000            TRZ IOS, IOACT                ;CLEAR ACTIVE BIT\r
+\r
+\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING      MACRO 10 05:51 24-APR-78 PAGE 6-1\r
+DTSER2 MAC     24-APR-78 02:46         L. HANTMAN PART 1 7-13-65\r
+\r
+       000247' 202006  000002            MOVEM IOS, DEVIOS(DEVDAT)     ;RESTORE STATUS BITS\r
+       000250' 263140  000000            POPJ PDP, 0                   ;EXIT\r
+\r
+\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING      MACRO 10 05:51 24-APR-78 PAGE 7\r
+DTSER2 MAC     24-APR-78 02:46         L. HANTMAN PART 1 7-13-65\r
+\r
+\r
+                               ;COPY DIRECTORY WHEN READING BLOCK 1\r
+       000251' 623000  000002  UIN2:     TLZE IOS, IOBEG               ;IS DIRECTORY IN\r
+       000252' 254000  000265'           JRST UIN4                     ;READ IN DIRECTORY\r
+       000253' 260140  000242'           PUSHJ PDP, UEND2              ;CLR INDICATORS\r
+       000254' 200106  000177* UIN3:     MOVE TAC1,UFREE(DEVDAT)       ;NEXT FREE BLOCK IN DATA BLOC\r
+       000255' 506126  000176*           HRLM TAC1, @UDIR(DEVDAT)      ;PLACE IN DIRECTORY\r
+       000256' 541101  000001            HRRI TAC1, 1(TAC)             ;BUFFER ADDRESS, TO\r
+       000257' 504106  000255*           HRL TAC1, UDIR(DEVDAT)        ;DIRECTORY ADDRESS, TO\r
+       000260' 251101  000200            BLT TAC1, 200 (TAC)           ;MOVE DIRECTORY TO BUFFER ARE\r
+       000261' 515100  400000            HRLZI TAC1, IOUSE\r
+       000262' 437100  400000            IORB TAC1, IOUSE              ;SET USE BIT\r
+       000263' 542106  000007            HRRM TAC1,DEVIAD(DEVDAT)      ;ADVANCE BUFFER\r
+       000264' 263140  000000            POPJ PDP, 0                   ;EXIT\r
+       000265' 260140  000370' UIN4:     PUSHJ PDP, UBEG3\r
+       000266' 254000  000254'           JRST UIN3\r
+       000267' 260140  000000* SETI:     PUSHJ PDP,WAIT1\r
+       000270' 506606  000007            HRLM UUO,DEVIAD(DEVDAT)       ;SET INPUT BLOCK NO.\r
+       000271' 254000  000111*           JRST UXIT\r
+\r
+       000272' 260140  000267* SETO:     PUSHJ PDP,WAIT1       \r
+       000273' 260140  001142'           PUSHJ PDP, UINTER             ;WAIT FOR USE TO STOP\r
+       000274' 260140  000242'           PUSHJ PDP, UEND2              ;CLEAR INDICATORS\r
+       000275' 506606  000010            HRLM UUO,DEVOAD(DEVDAT)       ;SET OUTPUT BLOCK NO.\r
+       000276' 254000  000271*           JRST UXIT\r
+\r
+       000277' 260140  000272* GETF:     PUSHJ PDP,WAIT1\r
+       000300' 603000  000002            TLNE IOS,IOBEG\r
+       000301' 260140  000343'           PUSHJ PDP,UBEG\r
+       000302' 661000  000400            TLO IOS,UNWFRE\r
+       000303' 202006  000002            MOVEM IOS,DEVIOS(DEVDAT)\r
+       000304' 350046  000254*           AOS TAC, UFREE(DEVDAT)        ;GET FREE BLOCK\r
+       000305' 506046  000010            HRLM TAC, DEVOAD(DEVDAT)\r
+       000306' 505600  000007            HRLI UUO,PROG\r
+       000307' 542060  000014            HRRM TAC,@UUO\r
+       000310' 254000  000276*           JRST UXIT\r
+\r
+\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING      MACRO 10 05:51 24-APR-78 PAGE 8\r
+DTSER2 MAC     24-APR-78 02:46         L. HANTMAN PART 1 7-13-65\r
+\r
+\r
+                               INTERNAL UTPCLS,UTWDR,UBEG,UTPREL\r
+\r
+       000311'                 UTWDR:    IFE DTSIZ,<        PUSHJ PDP,UTPREL>\r
+\r
+       000311' 254000  000310*           JRST UXIT\r
+\r
+       000312' 607000  001000  UTPCLS:   TLNN IOS, ULINKF\r
+       000313' 254000  000326'           JRST UTPREL\r
+       000314' 135040  000000*           LDB TAC,PIOMOD        ;MODE\r
+       000315' 301040  000016            CAIL TAC,16\r
+       000316' 254000  000326'           JRST UTPREL\r
+       000317' 544046  000006            HLR TAC,DEVBUF(DEVDAT)\r
+       000320' 545040  000007            HLRI TAC, PROG\r
+       000321' 540060  000001            HRR TAC, @TAC                 ;TAC:=BUFFER ADDRESS\r
+       000322' 271040  000001            ADDI TAC,1\r
+       000323' 201100  000001            MOVEI TAC1,1\r
+       000324' 506120  000001            HRLM TAC1,@TAC\r
+       000325' 254000  000000*           JRST OUT\r
+\r
+                               UTPREL:   IFE DTSIZ,< TLNE  IOS,IOBEG   ;RELEASE\r
+                                POPJ PDP,\r
+                                TLZE IOS,UDIREN\r
+                                JRST UTPRL1\r
+                                TLNN IOS,UNWFRE\r
+                                POPJ PDP,\r
+                                TLNN IOS,UDIRIN\r
+                                PUSHJ PDP,UBEG>\r
+\r
+       000326' 627000  000600            IFN DTSIZ,< TLZN IOS,UDIREN+UNWFRE\r
+       000327' 263140  000000   POPJ PDP,>\r
+       000330' 260140  001142' UTPRL1:   PUSHJ PDP,UINTER      ;IS SYSTEM AVAILABLE?\r
+       000331' 540046  000304*           HRR TAC,UFREE(DEVDAT)\r
+       000332' 506066  000257*           HRLM TAC,@UDIR(DEVDAT)\r
+       000333' 200046  000332*           MOVE TAC,UDIR(DEVDAT)\r
+       000334' 275040  000001            SUBI TAC,1\r
+       000335' 202040  001121'           MOVEM TAC,UBUF\r
+       000336' 661000  002000            TLO IOS, URDIR\r
+       000337' 202006  000002            MOVEM IOS,DEVIOS(DEVDAT)\r
+       000340' 201040  000001            MOVEI TAC,1\r
+       000341' 260140  000375'           PUSHJ PDP,USETW\r
+       000342' 254000  000277*           JRST WAIT1\r
+\r
+\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING      MACRO 10 05:51 24-APR-78 PAGE 9\r
+DTSER2 MAC     24-APR-78 02:46         L. HANTMAN PART 1 7-13-65\r
+\r
+\r
+                               ,READ THE DIRECTORY FROM THIS DEC-TAPE\r
+\r
+       000343' 335006  000004  UBEG:     SKIPGE DEVMOD(DEVDAT)         ;IS DIRECTORY IN CORE?\r
+       000344' 661000  000100            TLO IOS,UDIRIN\r
+       000345' 603000  000100            TLNE IOS,UDIRIN\r
+       000346' 263140  000000            POPJ PDP, 0\r
+       000347' 260140  001142'           PUSHJ PDP, UINTER             ;CHECK INTERLOCK\r
+       000350' 261140  000001  UBEG2:    PUSH PDP, TAC                 ;SAVE TAC\r
+       000351' 550046  000333*           HRRZ TAC,UDIR(DEVDAT)\r
+       000352' 275040  000001            SUBI TAC, 1\r
+       000353' 202040  001121'           MOVEM TAC,UBUF\r
+       000354' 661000  002100            TLO IOS,UDIRIN+URDIR\r
+       000355' 621000  000002            TLZ IOS, IOBEG\r
+       000356' 202006  000002            MOVEM IOS,DEVIOS(DEVDAT)\r
+       000357' 205040  400000            MOVSI TAC,DVDIRIN     ;SET DIRECTORY IN CORE BIT\r
+       000360' 436046  000004            IORM TAC,DEVMOD(DEVDAT)\r
+       000361' 201040  000001            MOVEI TAC,1\r
+       000362' 260140  000377'           PUSHJ PDP,USETR\r
+       000363' 260140  000000*           PUSHJ PDP,WSYNC\r
+       000364' 544066  000351*           HLR TAC,@UDIR(DEVDAT)\r
+       000365' 552046  000331*           HRRZM TAC,UFREE(DEVDAT)\r
+       000366' 262140  000001  UBEGX:    POP PDP,TAC\r
+       000367' 263140  000000            POPJ PDP, 0\r
+\r
+       000370' 603000  000100  UBEG3:    TLNE IOS, UDIRIN\r
+       000371' 263140  000000            POPJ PDP, 0\r
+       000372' 254000  000350'           JRST UBEG2\r
+\r
+       000373' 260140  001220' UTBERR:   PUSHJ PDP, DTC1       ;ILL. BLOCK NO.\r
+       000374' 254000  000000*           JRST UTBKER\r
+\r
+       000375' 201100  000535' USETW:    MOVEI TAC1, RIT\r
+       000376' 334000  000000            SKIPA\r
+       000377' 201100  000527' USETR:    MOVEI TAC1,READ\r
+       000400' 542100  000500'           HRRM TAC1,DDIG\r
+       000401' 552040  001117'           HRRZM TAC,UBKN\r
+       000402' 323040  000373'           JUMPLE TAC,UTBERR     ;ILL. BLOCK NO.?\r
+       000403' 301040  001102            CAIL TAC,1102\r
+       000404' 254000  000373'           JRST UTBERR           ;ILL. BLOCK NO.\r
+       000405' 135040  000000*           LDB TAC,PUNIT         ;UNIT\r
+       000406' 241040  000003            ROT TAC, 3\r
+       000407' 271040  000000*           ADDI TAC, DTCCHN              ;DECTAPE CHANNEL\r
+       000410' 202040  001116'           MOVEM TAC, UNIT               ;UNIT AND CHANNEL\r
+       000411' 201040  000137            MOVEI TAC, 137\r
+       000412' 542040  001166'           HRRM TAC, DTCINT\r
+       000413' 275040  000021            SUBI TAC, 21\r
+       000414' 542040  001172'           HRRM TAC, CONSZ1              ;FALL INTO FILL\r
+\r
+\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING      MACRO 10 05:51 24-APR-78 PAGE 10\r
+DTSER2 MAC     24-APR-78 02:46         L. HANTMAN PART 1 7-13-65\r
+\r
+\r
+       000415' 720200  000000  FILL:     CONO DC,0                     ;DESELECT DC\r
+       000416' 700600  002100            CONO PI,2100                  ;TURN ON CHANNEL 1\r
+       000417' 202300  001151'           MOVEM DEVDAT, USVDB           ;SAVE DATA BLOCK ADDR\r
+       000420' 202300  001122'           MOVEM DEVDAT,UDVDAT           ;UDVDAT:=DTJIOS POINTER\r
+       000421' 201040  000002            MOVEI TAC, DEVIOS\r
+       000422' 272040  001122'           ADDM TAC,UDVDAT\r
+       000423' 200040  001275'           MOVE TAC, [JSR DDIF]          ;DATA CONTROL INTERRUPT CHANN\r
+       000424' 202040  000042            MOVEM TAC,UCHA\r
+       000425' 202340  001120'           MOVEM PROG,UPROG              ;UPROG:=PROG\r
+       000426' 200040  001121'           MOVE TAC,UBUF                 ;BLI:=XWD-200,C(UBUF)\r
+       000427' 505040  777600            HRLI TAC,-200\r
+       000430' 202040  001114'           MOVEM TAC,BLI\r
+       000431' 271040  000177            ADDI TAC,200-1\r
+       000432' 202040  001113'           MOVEM TAC,BLO\r
+       000433' 721300  020000            CONSZ UTC, 20000              ;IS TAPE MOVING?\r
+       000434' 254000  000453'           JRST FILLC                    ;YES\r
+       000435' 200040  001116'           MOVE TAC, UNIT                ;RDDA:=RDRM:=WTDA:=WTRM:=C(UN\r
+       000436' 137040  000457'           DPB TAC,F1\r
+       000437' 137040  000460'           DPB TAC,F2\r
+       000440' 137040  000461'           DPB TAC,F3\r
+       000441' 137040  000462'           DPB TAC,F4\r
+       000442' 200040  001116'           MOVE TAC,UNIT\r
+       000443' 405040  000070            ANDI TAC, 70                  ;TAC HAS UNIT ONLY\r
+       000444' 271040  323201                  ADDI TAC, SL+DTR+RB+EE+UCHN\r
+       000445' 607000  010000            TLNN IOS, UREV                ;WAS REV, GO FWD\r
+       000446' 271040  010000            ADDI TAC,GR                   ;WAS FWD, GO REV\r
+       000447' 721220  000001            CONO UTC, @TAC\r
+       000450' 720200  004011  FILL2:    CONO DC, DACI+UCHN            ;SET UP DC FOR INPUT\r
+       000451' 202006  000002            MOVEM IOS, DEVIOS (DEVDAT)\r
+       000452' 263140  000000            POPJ PDP,\r
+\r
+\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING      MACRO 10 05:51 24-APR-78 PAGE 11\r
+DTSER2 MAC     24-APR-78 02:46         L. HANTMAN PART 1 7-13-65\r
+\r
+\r
+                               ,TAPE IS ACTIVE - GIVE A COMMAND\r
+       000453' 721240  000001  FILLC:    CONI UTC,TAC                  ;UTC COMMAND: UNIT, OLD DIRE\r
+       000454' 405040  010070            ANDI TAC,GR+70                ;DIRECTION PLUS UNIT\r
+       000455' 721201  320201            CONO UTC,SL+RB+EE+UCHN(TAC)   ;NO TIME DELAY\r
+       000456' 254000  000450'           JRST FILL2\r
+\r
+       000457' 000600  000517' F1:       POINT 6,RDDA,35\r
+       000460' 000600  000531' F2:       POINT 6,RDRM,35\r
+       000461' 000600  000523' F3:       POINT 6,WTDA,35\r
+       000462' 000600  000537' F4:       POINT 6,WTRM,35\r
+                               ,CHANGE DIRECTIONS - GIVE NEW COMMANDS\r
+       000463' 721240  000001  RRV:      CONI UTC,TAC\r
+       000464' 431040  010000            XORI TAC,GR                   ;REVERSE BIT\r
+       000465' 405040  550777            ANDI TAC,550777\r
+       000466' 435040  002000            IORI TAC,DT\r
+       000467' 721201  220000            CONO UTC,SL(TAC)\r
+       000470' 720200  004011            CONO DC,DACI+UCHN\r
+       000471' 254000  000515'           JRST DXIT\r
+                               ,EXAMINE BLOCK NUMBERS - DISPATCHED FROM INTERRUPT - CHAN, DC.\r
+       000472' 000000  000000  DDIF:     0                             ;GOING FORWARD\r
+       000473' 202040  001115'           MOVEM TAC,SV1                 ;SV1:=TAC\r
+       000474' 721700  000002            CONSZ UTS, VEOT\r
+       000475' 254000  000463'           JRST RRV\r
+       000476' 720040  000001            DATAI DC,TAC\r
+       000477' 316040  001117'           CAMN TAC,UBKN                 ;BLK NOT =STR\r
+       000500' 254000  000500' DDIG:     JRST .                        ;JRST READ, BIT, IFRIGHT UBK\r
+       000501' 721300  010000            CONSZ UTC,10000               ;GOING BACKWARDS\r
+       000502' 254000  000506'           JRST .+4                      ;BACKWARDS\r
+       000503' 311040  001117'           CAML TAC,UBKN                 ;BLK > STR > FORWARD\r
+       000504' 254000  000463'           JRST RRV\r
+       000505' 254000  000510'           JRST .+3\r
+       000506' 317040  001117'           CAMG TAC,UBKN                 ;BACKWARDS\r
+       000507' 254000  000463'           JRST RRV                      ;BACKWARDS\r
+       000510' 721240  000001  DDIG2:    CONI UTC,TAC\r
+       000511' 405040  550777            ANDI TAC,550777\r
+       000512' 721201  220000            CONO UTC,SL(TAC)\r
+       000513' 334000  000000            SKIPA\r
+       000514' 542040  000042  DXIT1:    HRRM TAC,UCHA\r
+       000515' 200040  001115' DXIT:     MOVE TAC,SV1                  ;RESTORE TAC\r
+       000516' 254520  000472'           JEN @DDIF                     ;RE-ENABLE, DISMISS.\r
+\r
+\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING      MACRO 10 05:51 24-APR-78 PAGE 12\r
+DTSER2 MAC     24-APR-78 02:46         L. HANTMAN PART 1 7-13-65\r
+\r
+\r
+                               ,DISPATCH FROM UCHA INITIALLY ON CORRECT BLOCK MARK\r
+                               ,SETS OP TO READ, WRITE IN FWD, REVERSE\r
+\r
+                               ;RD FORWARD\r
+       000517' 721200  360300  RDDA:     CONO UTC,SL+RD+JDE+EE                 ;GETS UNIT NO. - RE\r
+       000520' 201040  000551'           MOVEI TAC,RDFW\r
+       000521' 720200  004011            CONO DC,DACI+UCHN\r
+       000522' 254000  000514'           JRST DXIT1\r
+\r
+       000523' 721200  360700  WTDA:     CONO UTC,SL+WD+JDE+EE                 ;GETS UNIT NO. - RE\r
+       000524' 201040  000563'           MOVEI TAC,WTFW\r
+       000525' 720200  003411            CONO DC,DACO+UCHN\r
+       000526' 254000  000514'           JRST DXIT1\r
+\r
+       000527' 721340  010000  READ:     CONSO UTC,10000               ;ENTRY TO SET UP READ\r
+       000530' 254000  000517'           JRST, RDDA\r
+                               ;READ REVERSE\r
+       000531' 721200  370300  RDRM:     CONO UTC,SL+GR+RD+JDE+EE      ;GETS UNIT NO. - RESETS TO RD\r
+       000532' 201040  000543'           MOVEI TAC,RDRV\r
+       000533' 720200  004011            CONO DC,DACI+UCHN\r
+       000534' 254000  000514'           JRST DXIT1\r
+       000535' 721340  010000  RIT:      CONSO UTC,10000               ;GOING REVERSE - ENTRY TO SET\r
+       000536' 254000  000523'           JRST WTDA                     ;WRITE FORWARD\r
+                               ;WRITE REVERSE\r
+       000537' 721200  370700  WTRM:     CONO UTC,SL+WD+GR+JDE+EE      ;GETS UNIT NO. -RESETS. TO WT\r
+       000540' 201040  000555'           MOVEI TAC,WTRV\r
+       000541' 720200  003411            CONO DC,DACO+UCHN\r
+       000542' 254000  000514'           JRST DXIT1\r
+\r
+                               ,DC INTERRUPT PROCESSSING TO READ/WRITE DATA IN EITHER\r
+                               ,DIRECTION, AND RE-ENABLE INTERRUP.\r
+                               ,EXIT BLOCK PROCESSING AT ENPT(WRITE), ENPTI(READ)\r
+\r
+       000543' 000000  000000  RDRV:     0                             ;ENTRY VIA UCHA - READ REV\r
+       000544' 720000  001113'           BLKI DC,BLO\r
+       000545' 264000  000620'           JSR ENPTI\r
+       000546' 370000  001113'           SOS BLO\r
+       000547' 370000  001113'           SOS BLO\r
+       000550' 254520  000543'           JEN @RDRV\r
+\r
+       000551' 000000  000000  RDFW:     0                             ;ENTRY VIA UCHA - READ FWD\r
+       000552' 720000  001114'           BLKI DC,BLI\r
+       000553' 264000  000620'           JSR ENPTI\r
+       000554' 254520  000551'           JEN @RDFW\r
+\r
+       000555' 000000  000000  WTRV:     0                             ;ENTRY VIA UCHA - WRITE REV\r
+       000556' 720100  001113'           BLKO DC,BLO\r
+       000557' 264000  000567'           JSR ENPT\r
+       000560' 370000  001113'           SOS BLO\r
+       000561' 370000  001113'           SOS BLO\r
+       000562' 254520  000555'           JEN @WTRV\r
+\r
+\r
+\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING      MACRO 10 05:51 24-APR-78 PAGE 12-1\r
+DTSER2 MAC     24-APR-78 02:46         L. HANTMAN PART 1 7-13-65\r
+\r
+       000563' 000000  000000  WTFW:     0                             ;ENTRY VIA UCHA - WRITE FWD\r
+       000564' 720100  001114'           BLKO DC,BLI\r
+       000565' 264000  000567'           JSR ENPT\r
+       000566' 254520  000563'           JEN @WTFW\r
+\r
+\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING      MACRO 10 05:51 24-APR-78 PAGE 13\r
+DTSER2 MAC     24-APR-78 02:46         L. HANTMAN PART 1 7-13-65\r
+\r
+\r
+                               ;END OF OUTPUT BLOCK\r
+\r
+       000567' 000000  000000  ENPT:     0\r
+       000570' 264000  000603'           JSR, ENP\r
+       000571' 202040  001115' ENPT2:    MOVEM TAC,SV1                 ;SV1:=TAC\r
+       000572' 515040  010000            HRLZI TAC,UREV\r
+       000573' 721300  010000            CONSZ UTC,10000\r
+       000574' 412060  001122'           ANDCAM TAC,@UDVDAT\r
+       000575' 721340  010000            CONSO UTC,10000\r
+       000576' 436060  001122'           IORM TAC,@UDVDAT\r
+       000577' 201040  000615'           MOVEI TAC,UOFF\r
+       000600' 542040  000042            HRRM TAC,UCHA\r
+       000601' 200040  001115'           MOVE TAC,SV1\r
+       000602' 254120  000567'           JRSTF @ENPT\r
+\r
+                               ,CHECK ERROR BITS DC MISSED, 0T PARITY, 1 LEG OP, TAPE END\r
+       000603' 000000  000000  ENP:      0\r
+       000604' 720300  010000            CONSZ DC, 10000;      DATA MISSED\r
+       000605' 264000  000627'           JSR ERROR2\r
+       000606' 254120  000603'           JRSTF @ENP\r
+\r
+                               ,SAVE STATE OF UTS, UTC, DC, TURN OFF DC, UTC, +1@ERRTAL,+1@UERR\r
+                               ;ERROR LOOPS\r
+       000607' 000000  000000  ERROR:    0\r
+       000610' 721640  001111'           CONI UTS, C12\r
+       000611' 721240  001112'           CONI UTC, C13\r
+       000612' 720240  001110'           CONI DC, C11\r
+       000613' 476000  001124'           SETOM ERRFLG\r
+       000614' 254120  000607'           JRSTF @ERROR\r
+                               ;INTERRUPT FROM DATA FLAG AFER BLKO HAS COUNTED OUT\r
+       000615' 000000  000000  UOFF:     0\r
+       000616' 700600  001100            CONO PI, 1100         ;TURN DC CHANNEL OFF\r
+       000617' 254520  000615'           JEN @UOFF             ;DISMISS EXTRA WRITE FLAG\r
+\r
+                               ;END OF INPUT BLOCK\r
+       000620' 000000  000000  ENPTI:    0\r
+       000621' 250040  000620'           EXCH TAC, ENPTI\r
+       000622' 202040  000567'           MOVEM TAC, ENPT\r
+       000623' 264000  000603'           JSR ENP\r
+       000624' 720200  000000            CONO DC, 0\r
+       000625' 200040  000620'           MOVE TAC, ENPTI\r
+       000626' 254000  000571'           JRST ENPT2\r
+                               ;DETECT FIRST ERROR ONLY\r
+       000627' 000000  000000  ERROR2:   0\r
+       000630' 336000  001124'           SKIPN ERRFLG          ;PREVIOUSLY DETECTED ERROR!\r
+       000631' 264000  000607'           JSR ERROR             ;STORE ERROR CONDITIONS\r
+       000632' 254120  000627'           JRSTF @ERROR2         ;CONTINUE LOOP\r
+\r
+                               ;END OF PART 1 DTSER2\r
+\r
+\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING      MACRO 10 05:51 24-APR-78 PAGE 14\r
+DTSER2 MAC     24-APR-78 02:46         L. HANTMAN PART 1 7-13-65\r
+\r
+\r
+                                         EXTERNAL SETIOD\r
+                                         INTERNAL UDMP0, UDMPI\r
+\r
+                               ; DUMP OUT\r
+       000633' 661000  000020  UDMPO:    TLO IOS, IO                   ;SET FOR OUTPUT\r
+       000634' 260140  001142'           PUSHJ PDP, UINTER             ;CHECK INTERLOCK\r
+       000635' 606600  777777            TRNN UUO, 777777              ;COMMAND ADDRESS?\r
+       000636' 254000  000722'           JRST UDMP2-1                  ;ERROR\r
+       000637' 201040  000727'           MOVEI TAC, DDUMP              ;RETURN WHEN BLOCK FOUND\r
+       000640' 200100  001276' UDMP0:    MOVE TAC1, [JSR DMPADV]       ;BLKI OR BLKO RETURN, COMMANDS\r
+\r
+                               ;COMMON ROUTINE FOR ALL DUMP MODES,  START SEARCH\r
+       000641' 542040  000500' UDMP1:    HRRM TAC,DDIG                 ;SEARCH RETURN\r
+       000642' 202100  000043            MOVEM TAC1, UCHA+1            ;INTERRUPT RETURN\r
+       000643' 200040  001275'           MOVE TAC, [JSR DDIF]  \r
+       000644' 202040  000042            MOVEM TAC, UCHA               ;DATA CONTROL CHANNEL\r
+       000645' 554046  000010            HLRZ TAC, DEVOAD (DEVDAT)     ;BLOCK NUMBER\r
+       000646' 607000  000020            TLNN IOS, IO                  ;WRITING?\r
+       000647' 554046  000007            HLRZ TAC, DEVIAD(DEVDAT)      ;INPUT BLOCK NUMBER\r
+       000650' 202040  001117'           MOVEM TAC, UBKN               ;BLOCK TO LOOK FOR\r
+       000651' 552300  001151'           HRRZM DEVDAT, USVDB           ;DATA BLOCK ADDRESS\r
+       000652' 135040  000405*           LDB TAC,PUNIT         ;UNIT\r
+       000653' 241040  000003            ROT TAC, 3\r
+       000654' 271040  000407*           ADDI TAC, DTCCHN\r
+       000655' 202040  001116'           MOVEM TAC, UNIT               ;UNIT AND DT CHANNEL\r
+       000656' 405040  000070            ANDI TAC, 70\r
+       000657' 721201  323201                  CONO UTC, SL+DTR+RB+EE+UCHN(TAC)\r
+       000660' 476000  001153'           SETOM UERRCN                  ;SET ERROR COUNTER\r
+       000661' 201040  000037            MOVEI TAC, 37                 ;DO NOT CHECK FOR INCOMPLETE\r
+       000662' 542040  001166'           HRRM TAC, DTCINT\r
+       000663' 201040  000016            MOVEI TAC,16\r
+       000664' 542040  001172'           HRRM TAC, DTCINT+4\r
+       000665' 720200  004011            CONO DC, DACI+UCHN            ;SET DATA CONTROL\r
+       000666' 700600  002100            CONO PI,2100          ;INSURE CHANNEL 1 ON\r
+       000667' 552340  001126'           HRRZM PROG, UDMPA             ;SAVE PROGRAM\r
+       000670' 606600  777777            TRNN UUO, 777777              ;COMMAND ADDRESS\r
+       000671' 263140  000000            POPJ PDP, 0                   ;COMMAND LIST ON TAPE, INPUT\r
+       000672' 550040  000014            HRRZ TAC, UUO                 ;GET CMD PNTR\r
+       000673' 550100  000001            HRRZ TAC1, TAC                ;SAVE POINTER\r
+       000674' 270100  000007  UDMP1A:   ADD TAC1, PROG                ;GET ACTUAL POINTER\r
+       000675' 552100  001125'           HRRZM TAC1, UDMP              ;STORE WORKING POINTER\r
+\r
+                               ;CHECK ENTIRE COMMAND LIST FOR VALIDITY\r
+       000676' 336120  001125' UDMP1B:   SKIPN TAC1, @UDMP             ;GET COMMAND\r
+       000677' 254000  000712'           JRST UDMP1C                   ;END OF COMMAND LIST\r
+       000700' 327100  000674'           JUMPG TAC1, UDMP1A            ;CHANGE COMMAND SEQUENCE\r
+       000701' 576100  001141'           HLREM TAC1, SVCNTR            ;SAVE -N\r
+       000702' 553000  000002            HRRZS TAC1                    ;GET ADDRESS\r
+       000703' 305100  000000*           CAIGE TAC1, JOBPFI    ;IS IT ABOVE IO PROT. AREA\r
+       000704' 254000  000000*           JRST ADRERR           ;NO. ADDRESS CHECK ERROR\r
+       000705' 274100  001141'           SUB TAC1, SVCNTR              ;GET AREA END\r
+       000706' 313100  000000*           CAMLE TAC1, USRREL            ;LESS THEN END?\r
+\r
+\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING      MACRO 10 05:51 24-APR-78 PAGE 14-1\r
+DTSER2 MAC     24-APR-78 02:46         L. HANTMAN PART 1 7-13-65\r
+\r
+       000707' 254000  000722'           JRST UDMP2-1                  ;OUT OF BOUNDS\r
+       000710' 350000  001125'           AOS UDMP                      ;INDEX COMMAND LIST POINTER\r
+       000711' 254000  000676'           JRST UDMP1B                   ;GET NEXT COMMAND\r
+\r
+\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING      MACRO 10 05:51 24-APR-78 PAGE 15\r
+DTSER2 MAC     24-APR-78 02:46         L. HANTMAN PART 1 7-13-65\r
+\r
+\r
+                               ;GET FIRST COMMAND\r
+       000712' 270040  000007  UDMP1C:   ADD TAC, PROG                 ;GET ACTUAL ADDRESS\r
+       000713' 552040  001125'           HRRZM TAC, UDMP               ;SAVE POINTER\r
+       000714' 336060  001125'           SKIPN TAC, @UDMP              ;1ST COMMAND\r
+       000715' 254000  000723'           JRST UDMP2                    ;NOTHING TO DO\r
+       000716' 270040  000007            ADD TAC, PROG                 ;ACTUAL POINTER\r
+       000717' 325040  000713'           JUMPGE TAC, .-4               ;CHANGE COMMAND SEQUENCE\r
+       000720' 202040  001113'           MOVEM TAC, BLO                ;SAVE I/O POINTER\r
+       000721' 263140  000000            POPJ PDP, 0\r
+                               ;EXIT WITH ERROR\r
+       000722' 660000  040000            TRO IOS, IOBKTL\r
+       000723' 201040  777775  UDMP2:    MOVEI TAC, -3\r
+       000724' 572040  001153'           HRREM TAC, UERRCN\r
+       000725' 402000  001124'           SETZM ERRFLG\r
+       000726' 254000  000242'           JRST UEND2\r
+\r
+                               ;SEARCH RETURN,OUTPUT,COMMAND LIST IN MEMORY\r
+       000727' 721300  010000  DDUMP:    CONSZ UTC,GR\r
+       000730' 254000  000510'           JRST DDIG2            ;KEEP GOING\r
+       000731' 200040  001277'           MOVE TAC,[BLKO DC,BLO]\r
+       000732' 202040  000042            MOVEM TAC, UCHA\r
+       000733' 720200  003411            CONO DC,DACO+UCHN\r
+       000734' 200040  001116'           MOVE TAC,UNIT\r
+\r
+       000735' 721201  360700            CONO UTC,SL+WD+JDE+EE(TAC)\r
+       000736' 254000  000515'           JRST DXIT\r
+                               ;BLKI OR BLKO RETURNS, COMMAND LIST IN MEMORY\r
+       000737' 000000  000000  DMPADV:   0\r
+       000740' 202040  001115'           MOVEM TAC,SV1\r
+       000741' 354040  001125'           AOSA TAC,UDMP                 ;POINTER\r
+\r
+\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING      MACRO 10 05:51 24-APR-78 PAGE 16\r
+DTSER2 MAC     24-APR-78 02:46         L. HANTMAN PART 1 7-13-65\r
+\r
+\r
+       000742' 552040  001125' DMPA1:    HRRZM TAC, UDMP               ;STORE POINTER\r
+       000743' 336041  000000            SKIPN TAC, 0(TAC)             ;IS WORD ZERO\r
+       000744' 254000  000752'           JRST DMPA2                    ;END\r
+       000745' 270040  001126'           ADD TAC, UDMPA                ;ADD PROGRAM\r
+       000746' 325040  000742'           JUMPGE TAC, DMPA1             ;CHANGE COMMAND\r
+       000747' 202040  001113'           MOVEM TAC, BLO\r
+       000750' 200040  001115' DMPXT:    MOVE TAC, SV1\r
+       000751' 254520  000737'           JEN @DMPADV\r
+\r
+                               ;END OF COMMAND LIST, INPUT OR OUTPUT\r
+       000752' 264000  000603' DMPA2:    JSR ENP\r
+       000753' 700600  001100            CONO PI, 1100                 ;TURN DATA CONTROL CHANNEL OF\r
+       000754' 721740  000040            CONSO UTS, 40                 ;WRITING?\r
+       000755' 720200  000000            CONO DC, 0                    ;SHUT OFF DATA CONTROL\r
+       000756' 254000  000750'           JRST DMPXT\r
+                               ;SEARCH RETURN, INPUT COMMAND LIST ON TAPE\r
+       000757' 721300  010000  DDMPI:    CONSZ UTC, GR                 ;GOING BACKWARDS?\r
+       000760' 254000  000510'           JRST DDIG2                    ;KEEP GOING\r
+       000761' 200040  001300'           MOVE TAC, [XWD -1,BLO-1]\r
+       000762' 202040  001113'           MOVEM TAC, BLO\r
+\r
+                               ;COMMON INSTRUCTIONS FOR COMMAND LIST IN MEMORY OR ON TAPE\r
+       000763' 200040  001301' DDMPI2:   MOVE TAC, [BLKI DC,BLO]\r
+       000764' 202040  000042            MOVEM TAC, UCHA\r
+       000765' 720200  004011            CONO DC, DACI+UCHN\r
+       000766' 200040  001116'           MOVE TAC, UNIT\r
+       000767' 721201  360300            CONO UTC, SL+RD+JDE+EE(TAC)\r
+       000770' 254000  000515'           JRST DXIT\r
+\r
+                               ;INPUT COMMAND LIST ON TAPE.  BLKI RETURN AFTER READING COMMAND\r
+       000771' 000000  000000  DMPRD:    0\r
+       000772' 331000  001113'           SKIPL BLO                     ;END OF COMMAND LIST?\r
+       000773' 254000  001010'           JRST DMPRD1\r
+       000774' 202040  001115'           MOVEM TAC, SV1                ;SAVE TAC\r
+       000775' 200040  001113'           MOVE TAC, BLO                 ;PICK UP COMMAND\r
+       000776' 576040  001141'           HLREM TAC, SVCNTR             ;-N\r
+       000777' 553000  000001            HRRZS TAC                     ;ADDRESS\r
+       001000' 274040  001141'           SUB TAC, SVCNTR               ;END ADDRESS\r
+       001001' 303040  000000  DMPRD0:   CAILE TAC, 0                  ;<END? MODIFIED\r
+       001002' 254000  001102'           JRST DMPERR                   ;OUT OF BOUNDS, EXIT\r
+       001003' 200040  001125'           MOVE TAC, UDMP                ;PROG\r
+       001004' 272040  001113'           ADDM TAC, BLO                 ;TO GET ACTUAL I/O POINTER\r
+       001005' 201040  001012'           MOVEI TAC,DMPRDA              ;NEW RETURN\r
+       001006' 542040  000042            HRRM TAC, UCHA+\r
+       001007' 334040  001115'           SKIPA TAC, SV1                ;RESTORE TAC\r
+       001010' 720200  000000  DMPRD1:   CONO DC, 0\r
+       001011' 254520  000771'           JEN @DMPRD\r
+\r
+\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING      MACRO 10 05:51 24-APR-78 PAGE 17\r
+DTSER2 MAC     24-APR-78 02:46         L. HANTMAN PART 1 7-13-65\r
+\r
+\r
+                               ;INPUT COMMAND LIST ON TAPE.  BLKI RETURN AFTER READING DATA\r
+       001012' 000000  000000  DMPRDA:   0\r
+       001013' 202040  001115'           MOVEM TAC, SV1                ;SAVE TAC\r
+       001014' 200040  001300'           MOVE TAC, [XWD -1,BLO-1]\r
+       001015' 202040  001113'           MOVEM TAC, BLO                ;READ INTO BLO\r
+       001016' 201040  000771'           MOVEI TAC, DMPRD              ;USE PREV. RETURN\r
+       001017' 542040  000043            HRRM TAC, UCHA+1\r
+       001020' 200040  001115'           MOVE TAC, SV1                 ;SAVE TAC\r
+       001021' 254520  001012'           JEN @DMPRDA\r
+                               ;DUMP IN\r
+       001022' 621000  000020  UDMPI:    TLZ IOS, IO\r
+       001023' 260140  001142'           PUSHJ PDP, UINTER\r
+       001024' 602600  777777            TRNE UUO, 777777              ;COMMAND LIST ON TAPE\r
+       001025' 254000  001033'           JRST UDMPI2                   ;COMMAND LIST IN CORE\r
+       001026' 200040  000706*           MOVE TAC, USRREL              ;LENGTH OF USER AREA\r
+       001027' 542040  001001'           HRRM TAC, DMPRD0\r
+       001030' 201040  000757'           MOVEI TAC, DDMPI              ;SEARCH RETURN\r
+       001031' 200100  001302'           MOVE TAC1, [JSR DMPRD]                ;BLOCK IN RETURN\r
+       001032' 254000  000641'           JRST UDMP1\r
+       001033' 201040  001035' UDMPI2:   MOVEI TAC, DDMPI3             ;COMMAND LIST IN CORE\r
+       001034' 254000  000640'           JRST UDMP0\r
+                               ;SEARCH RETURN, INPUT COMMAND LIST IN MEMORY\r
+       001035' 721300  010000  DDMPI3:   CONSZ UTC, GR\r
+       001036' 254000  000510'           JRST DDIG2                    ;KEEP GOING\r
+       001037' 254000  000763'           JRST DDMPI2                   ;INPUT COMMAND LIST IN CORE\r
+                               ;JOB DONE AFTER COMMAND LIST RUNS OUT\r
+       001040' 332000  001124' DMPEND:   SKIPE ERRFLG\r
+       001041' 660000  200000            TRO IOS,IODERR\r
+       001042' 202006  000002            MOVEM IOS,DEVIOS(DEVDAT)\r
+       001043' 200040  001116'           MOVE TAC,UNIT\r
+       001044' 405040  000070            ANDI TAC, 70\r
+       001045' 700600  002100            CONO PI,2100\r
+       001046' 720200  004011            CONO DC, DACI+UCHN\r
+       001047' 721201  220200            CONO UTC, SL+RB(TAC)          ;SWITCH TO SEARCH MODE\r
+       001050' 200040  001303'           MOVE TAC, [JSR UDMPRB]\r
+       001051' 202040  000042            MOVEM TAC, UCHA\r
+       001052' 254000  000000*           JRST DTCRET\r
+                               ;SEARCH RETURN TO READ NEXT FREE BLOCK\r
+       001053' 000000  000000  UDMPRB:   0\r
+       001054' 250300  001151'           EXCH DEVDAT, USVDB            ;GET DVDB\r
+       001055' 202040  001130'           MOVEM TAC,SVAC\r
+       001056' 202000  001131'           MOVEM IOS,SVAC+1\r
+       001057' 202140  001132'           MOVEM PDP,SVAC+2\r
+       001060' 202100  001133'           MOVEM TAC1,SVAC+3\r
+       001061' 200006  000002            MOVE IOS,DEVIOS(DEVDAT)\r
+       001062' 607000  000020            TLNN IOS,IO                   ;INPUT OR OUTPUT?\r
+       001063' 254000  001066'           JRST .+3                      ;INPUT\r
+       001064' 720046  000365*           DATAI DC,UFREE(DEVDAT)        ;LAST FREEBLOCK TALLY\r
+       001065' 661000  000400            TLO IOS,UNWFRE                ;SET FREE BLOCK CHANGED BIT\r
+       001066' 720200  000000            CONO DC,0                     ;TURN OFF DATA CONTROL\r
+       001067' 201040  000654*           MOVEI TAC,DTCCHN\r
+       001070' 721201  005000            CONO UTC,5000(TAC)            ;STOP TAPE\r
+\r
+\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING      MACRO 10 05:51 24-APR-78 PAGE 17-1\r
+DTSER2 MAC     24-APR-78 02:46         L. HANTMAN PART 1 7-13-65\r
+\r
+       001071' 200140  001304'           MOVE PDP,[XWD -5,SVAC+3]      ;USE REST OF SCAV BLOCK\r
+       001072' 264000  001154'           JSR IODSET\r
+       001073' 260140  001227'           PUSHJ PDP,DTC1B\r
+\r
+\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING      MACRO 10 05:51 24-APR-78 PAGE 18\r
+DTSER2 MAC     24-APR-78 02:46         L. HANTMAN PART 1 7-13-65\r
+\r
+\r
+       001074' 200040  001130'           MOVE TAC,SVAC\r
+       001075' 200000  001131'           MOVE IOS,SVAC+1\r
+       001076' 200140  001132'           MOVE PDP,SVAC+2\r
+       001077' 200100  001133'           MOVE TAC1,SVAC+3\r
+       001100' 250300  001151'           EXCH DEVDAT,USVDB\r
+       001101' 254520  001053'           JEN @UDMPRB\r
+                               ;ADDRESS CHECK FROM COMMAND.  COMMANDS ON TAPE\r
+       001102' 250300  001151' DMPERR:   EXCH DEVDAT, USVDB            ;GET DVDB\r
+       001103' 201040  400000            MOVEI TAC, IOIMPM             ;ERROR BITS\r
+       001104' 436046  000002            ORM TAC, DEVIOS(DEVDAT)       ;SET STATUS\r
+       001105' 250300  001151'           EXCH DEVDAT, USVDB            ;RESTORE DEVDAT\r
+       001106' 200040  001115'           MOVE TAC, SV1                 ;RESTORE TAC\r
+       001107' 254000  001010'           JRST DMPRD1\r
+\r
+\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING      MACRO 10 05:51 24-APR-78 PAGE 19\r
+DTSER2 MAC     24-APR-78 02:46         L. HANTMAN PART 1 7-13-65\r
+\r
+\r
+       001110' 000000  000000  C11:      0             ;TEMP CONI DC\r
+       001111' 000000  000000  C12:      0             ;TEMP CONI UTS\r
+       001112' 000000  000000  C13:      0             ;TEMP CONI UTC\r
+       001113' 000000  000000  BLO:      0             ;XWD -200 C(UBUF)\r
+       001114' 000000  000000  BLI:      0             ;XWD,-200,C(UBUF+200)\r
+       001115' 000000  000000  SV1:      0             ;TEMPORARY FOR TAC DURING INTERRUPT\r
+       001116' 000000  000000  UNIT:     0             ;IN BITS 30-32\r
+       001117' 000000  000000  UBKN:     0             ;BLOCK BEING SEARCHED FOR\r
+       001120' 000000  000000  UPROG:    0             ;HOLDS PROG\r
+       001121' 000000  000000  UBUF:     0             ;ABS. LOC OF DATA\r
+       001122' 000000  000000  UDVDAT:   0             ;PTR TO IOS\r
+       001123' 000000  000000  ERRTAL:   0             ;TOTAL NO. OF ERRORS\r
+       001124' 000000  000000  ERRFLG:   0             ;-1 IF ERROR OCCURED, 0 OTHERWISSE\r
+\r
+       001125' 000000  000000  UDMP:     0             ;HOLDS DUMP UUO ADDRESS\r
+       001126' 000000  000000  UDMPA:    0             ;HOLDS USER PROGRAM STARTING ADDRESS\r
+       001127' 000000  000000  SV0:      0\r
+       001130'                 SVAC:     BLOCK 11\r
+       001141' 000000  000000  SVCNTR:   0             ;HOLDS -N OF DUMP COMMAND WORD\r
+\r
+                               ;CHECK FRO INTERLOCK ON DECTAPE AND DATA CONTROLS\r
+       001142' 660000  010000  UINTER:   TRO IOS, IOACT\r
+       001143' 202006  000002            MOVEM IOS, DEVIOS(DEVDAT)\r
+       001144' 352000  000244*           AOSE DTREQ                    ;IS DECTAPE CONTROL FREE?\r
+       001145' 260140  000000*           PUSHJ PDP, DTWAIT             ;WAIT\r
+       001146' 352000  000242*           AOSE DCREQ                    ;IS DATA CONTROL FREE?\r
+       001147' 260140  000000*           PUSHJ PDP, DCWAIT             ;WAIT\r
+       001150' 263140  000000            POPJ PDP, 0                   ;EXIT\r
+\r
+       001151' 000000  000000  USVDB:    0             ;SAVE DATA BLOCK ADDRESS\r
+       001152' 000000  000000  USVIOS:   0             ;SAVE IOS\r
+       001153' 777777  777775  UERRCN:   -3            ;ERROR COUNTER\r
+\r
+       001154' 000000  000000  IODSET:   0\r
+       001155' 623000  000001            TLZE IOS,IOW\r
+       001156' 260140  000000*           PUSHJ PDP,SETIOD\r
+       001157' 202006  000002            MOVEM IOS,DEVIOS(DEVDAT)\r
+       001160' 254020  001154'           JRST @IODSET\r
+\r
+\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING      MACRO 10 05:51 24-APR-78 PAGE 20\r
+DTSER2 MAC     24-APR-78 02:46         L. HANTMAN PART 1 7-13-65\r
+\r
+\r
+                               ;INITIALZATION\r
+\r
+       001161' 201040  777775  DTCINI:   MOVEI TAC, -3                 ;CLEAR ERROR COUNTER\r
+       001162' 572040  001153'           HRREM TAC, UERRCN\r
+       001163' 402000  001124'           SETZM ERRFLG\r
+       001164' 721200  000000            CONO UTC, 0\r
+       001165' 263140  000000            POPJ PDP, 0\r
+\r
+       001166' 721740  000137  DTCINT:   CONSO UTS, 137                ;ALL ERRORS AND JOB DONE\r
+       001167' 254000  001167'           JRST .                        ;MODIFIED BY INITIALIZATION\r
+       001170' 721700  000020            CONSZ UTS,20                  ;TIME FLAG\r
+       001171' 254000  001244'           JRST UTIME                    ;SET DECTAPE CONTROL AVAILABL\r
+       001172' 721700  000116  CONSZ1:   CONSZ UTS, 116                ;INC BLK, PARITY, ILL OP, END\r
+       001173' 264000  000627'           JSR ERROR2                    ;ERROR\r
+\r
+                               ;JOB DONE\r
+       001174' 720200  000000            CONO DC, 0                    ;TURN OFF DATA CONTROL\r
+       001175' 202000  001127'           MOVEM 0, SV0                  ;SAVE ZERO\r
+       001176' 721240  000000            CONI UTC, 0\r
+       001177' 202000  001152'           MOVEM 0, USVIOS\r
+       001200' 405000  230070            ANDI 0, 230070                ;SAVE DIRECTION AND UNIT\r
+       001201' 721220  000000            CONO UTC, @0                  ;SWITCH TO MOVE MODE\r
+       001202' 200000  001127'           MOVE 0, SV0\r
+       001203' 264000  000000*           JSR DTCSAV\r
+       001204' 260140  001252'           PUSHJ PDP, DSETAC\r
+       001205' 332000  001124'           SKIPE ERRFLG\r
+       001206' 254000  001256'           JRST DTRED0\r
+       001207' 623000  002000            TLZE IOS,URDIR\r
+       001210' 254000  001213'           JRST .+3\r
+       001211' 264000  001154'           JSR IODSET\r
+       001212' 254000  001220'           JRST DTC1\r
+       001213' 640000  000017            TRC IOS,17\r
+       001214' 646000  000017            TRCN IOS,17\r
+       001215' 254000  001040'           JRST DMPEND\r
+       001216' 264000  001154'           JSR IODSET\r
+       001217' 254000  001237'           JRST DTCONT\r
+       001220' 200040  001152' DTC1:     MOVE TAC, USVIOS\r
+       001221' 405040  010007            ANDI TAC, 10007               ;DIRECTION, CHANNEL\r
+       001222' 435040  005000            ORI TAC,5000                  ;TIME FLAG ENABLE\r
+       001223' 721220  000001            CONO UTC, @ TAC               ;STOP TAPE, AND DESELECT\r
+       001224' 621000  010000            TLZ IOS, UREV\r
+       001225' 602040  010000            TRNE TAC, 10000\r
+       001226' 661000  010000            TLO IOS,UREV\r
+\r
+\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING      MACRO 10 05:51 24-APR-78 PAGE 21\r
+DTSER2 MAC     24-APR-78 02:46         L. HANTMAN PART 1 7-13-65\r
+\r
+\r
+       001227'                 DTC1A:\r
+       001227' 371000  001146* DTC1B:    SOSL DCREQ            ;DECREMENT REQUEST COUNT, ANYONE LEFT W\r
+       001230' 476000  000243*           SETOM DCAVAL                  ;YES.DATA CONTROL AVAILABLE\r
+       001231' 620000  010000            TRZ IOS, IOACT\r
+       001232' 202006  000002  DTC2:     MOVEM IOS, DEVIOS(DEVDAT)\r
+       001233' 201040  777775            MOVEI TAC, -3\r
+       001234' 572040  001153'           HRREM TAC, UERRCN\r
+       001235' 402000  001124'           SETZM ERRFLG\r
+       001236' 263140  000000            POPJ PDP,\r
+\r
+       001237' 201100  000153' DTCONT:   MOVEI TAC1, UOUT2\r
+       001240' 607000  000020            TLNN IOS, IO                  ;WRITING?\r
+       001241' 201100  000217'           MOVEI TAC1, UIN1\r
+       001242' 260142  000000            PUSHJ PDP, 0(TAC1)\r
+       001243' 254000  001232'           JRST DTC2\r
+\r
+                               ;INTERRUPT FROM TIME FLAG AFTER STOP DELAY\r
+       001244' 721340  004000  UTIME:    CONSO UTC,4000\r
+       001245' 254000  001167'           JRST DTCINT+1\r
+       001246' 371000  001144*           SOSL DTREQ            ;DECREMENT REQUEST COUNT, IS ANYONE STI\r
+       001247' 476000  000245*           SETOM DTAVAL                  ;YES,DECTAPE CONTROL AVAILABL\r
+       001250' 721200  000000            CONO UTC, 0\r
+       001251' 254520  000000*           JEN @DTCCHL\r
+\r
+                               ;SET UP NECESSARY DECTAPE ACCUMULATORS\r
+       001252' 200300  001151' DSETAC:   MOVE DEVDAT, USVDB\r
+       001253' 200340  001120'           MOVE PROG, UPROG\r
+       001254' 200006  000002            MOVE IOS, DEVIOS(DEVDAT)\r
+       001255' 263140  000000            POPJ PDP,\r
+                               ;RE-DO DECTAPE COMMAND IF AN ERROR OCCURED\r
+       001256' 640000  000017  DTRED0:   TRC IOS,17\r
+       001257' 646000  000017            TRCN IOS,17\r
+       001260' 254000  001040'           JRST DMPEND\r
+       001261' 350000  001153'           AOS UERRCN                    ;NOT YET 3 ERRORS\r
+       001262' 254000  001266'           JRST DTRD2                    ;THIRD ERROR\r
+       001263' 402000  001124'           SETZM ERRFLG                  ;CLEAR FLAG\r
+I      001264' 260140  000415'           PUSHJ PDP, FILL               ;RE-EXECUTE THE COMMAND\r
+       001265' 254000  001052*           JRST DTCRET                   ;EXIT\r
+       001266' 660000  200000  DTRD2:    TRO IOS, IODERR               ;SET ERROR INDICATION\r
+       001267' 623000  000001            TLZE IOS, IOW\r
+       001270' 260140  001156*           PUSHJ PDP, SETIOD             ;RELEASE WAIT\r
+       001271' 254000  001220'           JRST DTC1                     ;STOP THE TAPE\r
+                               EXTERNAL DTREQ, DCREQ, DTWAIT, DCWAIT, DTCSAV,DTCRET\r
+                               EXTERNAL DTAVAL, DCAVAL, DTCCHL, UTBKER, DTCCHN, USRREL\r
+                               INTERNAL DTCINT, DTCINI, DTSIZ,UBUF\r
+\r
+                                         END,\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 001305\r
+\r
+\r
+\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING      MACRO 10 05:51 24-APR-78 PAGE 21-1\r
+DTSER2 MAC     24-APR-78 02:46         L. HANTMAN PART 1 7-13-65\r
+\r
+9K CORE USED\r
+\r
+\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING      MACRO 10 05:51 24-APR-78 PAGE 22\r
+DTSER2 MAC     24-APR-78 02:46         SYMBOL TABLE\r
+\r
+A              000000  INT\r
+AC1            000015  INT\r
+AC2            000016  INT\r
+AC3            000017  INT\r
+ADRCK          000001' EXT\r
+ADRERR         000704' EXT\r
+ADVBFE         000000  EXT\r
+ADVBFF         000000  EXT\r
+AL             000001  INT\r
+ASSCON         400000  INT\r
+ASSPRG         200000  INT\r
+B              000014  INT\r
+BLI            001114' \r
+BLO            001113' \r
+BUFPNT         000012  INT\r
+BUFWRD         000013  INT\r
+C11            001110' \r
+C12            001111' \r
+C13            001112' \r
+CLOSB          002000  INT\r
+CLSIN          000002  INT\r
+CLSOUT         000001  INT\r
+CONSZ1         001172' \r
+CPOPJ1         000033' EXT\r
+D              000017  INT\r
+DACI           004010  \r
+DACO           003410  \r
+DAT            000005  INT\r
+DC             000200  SPD\r
+DCAVAL         001230' EXT\r
+DCL            000001  INT\r
+DCREQ          001227' EXT\r
+DCW            020000  INT\r
+DCWAIT         001147' EXT\r
+DDI            000007  INT\r
+DDIF           000472' \r
+DDIG           000500' \r
+DDIG2          000510' \r
+DDMPI          000757' \r
+DDMPI2         000763' \r
+DDMPI3         001035' \r
+DDO            000006  INT\r
+DDTMEM         000037  INT\r
+DDTSYM         000036  INT\r
+DDUMP          000727' \r
+DEN            000004  INT\r
+DEVADR         000007  INT\r
+DEVBUF         000006  INT\r
+DEVCHR         000001  INT\r
+DEVCTR         000011  INT\r
+DEVDAT         000006  INT\r
+DEVIAD         000007  INT\r
+\r
+\r
+\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING      MACRO 10 05:51 24-APR-78 PAGE 22-1\r
+DTSER2 MAC     24-APR-78 02:46         SYMBOL TABLE\r
+\r
+DEVIOS         000002  INT\r
+DEVLOG         000005  INT\r
+DEVMOD         000004  INT\r
+DEVNAM         000000  INT\r
+DEVOAD         000010  INT\r
+DEVPTR         000010  INT\r
+DEVSER         000003  INT\r
+DGF            000012  INT\r
+DIN            000003  INT\r
+DIRERR         000015' EXT\r
+DLK            000005  INT\r
+DMPA1          000742' \r
+DMPA2          000752' \r
+DMPADV         000737' \r
+DMPEND         001040' \r
+DMPERR         001102' \r
+DMPRD          000771' \r
+DMPRD0         001001' \r
+DMPRD1         001010' \r
+DMPRDA         001012' \r
+DMPXT          000750' \r
+DOU            000002  INT\r
+DR             000016  INT\r
+DRL            000000  INT\r
+DSETAC         001252' \r
+DSI            000011  INT\r
+DSO            000010  INT\r
+DT             002000  \r
+DTAVAL         001247' EXT\r
+DTC1           001220' \r
+DTC1A          001227' \r
+DTC1B          001227' \r
+DTC2           001232' \r
+DTCCHL         001251' EXT\r
+DTCCHN         001067' EXT\r
+DTCINI         001161' INT\r
+DTCINT         001166' INT\r
+DTCONT         001237' \r
+DTCRET         001265' EXT\r
+DTCSAV         001203' EXT\r
+DTR            003000  \r
+DTRD2          001266' \r
+DTRED0         001256' \r
+DTREQ          001246' EXT\r
+DTSIZ          000001  INT\r
+DTW            040000  INT\r
+DTWAIT         001145' EXT\r
+DVAVAL         000040  INT\r
+DVCDR          100000  INT\r
+DVDIR          000004  INT\r
+DVDIRI         400000  INT\r
+DVIN           000002  INT\r
+DVLPT          040000  INT\r
+\r
+\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING      MACRO 10 05:51 24-APR-78 PAGE 22-2\r
+DTSER2 MAC     24-APR-78 02:46         SYMBOL TABLE\r
+\r
+DVMTA          000020  INT\r
+DVOUT          000001  INT\r
+DVTTY          000010  INT\r
+DXIT           000515' \r
+DXIT1          000514' \r
+EE             100000  \r
+ENP            000603' \r
+ENPT           000567' \r
+ENPT2          000571' \r
+ENPTI          000620' \r
+ENTRB          020000  INT\r
+ERRFLG         001124' \r
+ERROR          000607' \r
+ERROR2         000627' \r
+ERRTAL         001123' \r
+F1             000457' \r
+F2             000460' \r
+F3             000461' \r
+F4             000462' \r
+FILL           000415' \r
+FILL2          000450' \r
+FILLC          000453' \r
+GETF           000277' \r
+GR             010000  \r
+I              000010  INT\r
+IB             000013  INT\r
+IBUFB          200000  INT\r
+INITB          400000  INT\r
+INPB           010000  INT\r
+IO             000020  INT\r
+IOACT          010000  INT\r
+IOBEG          000002  INT\r
+IOBKTL         040000  INT\r
+IOCON          000040  INT\r
+IODEND         020000  INT\r
+IODERR         200000  INT\r
+IODISC         400000  INT\r
+IODONE         400000  INT\r
+IODSET         001154' \r
+IODTER         100000  INT\r
+IOEND          000040  INT\r
+IOFST          000004  INT\r
+IOIERR         000065' EXT\r
+IOIMPM         400000  INT\r
+IONRCK         000100  INT\r
+IORDEL         000100  INT\r
+IORET          000020  INT\r
+IOS            000000  INT\r
+IOSET          000000  EXT\r
+IOSTRT         000010  INT\r
+IOUSE          400000  INT\r
+IOW            000001  INT\r
+IOWC           000020  INT\r
+\r
+\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING      MACRO 10 05:51 24-APR-78 PAGE 22-3\r
+DTSER2 MAC     24-APR-78 02:46         SYMBOL TABLE\r
+\r
+IOWS           400000  INT\r
+ITEM           000004  INT\r
+JBFADR         000000  INT\r
+JBFCTR         000002  INT\r
+JBFPTR         000001  INT\r
+JBUF           000005  INT\r
+JDAT           000011  INT\r
+JDE            040000  \r
+JERR           002000  INT\r
+JIOW           100000  INT\r
+JNA            004000  INT\r
+JOBPFI         000703' EXT\r
+LOOKB          040000  INT\r
+MTW            010000  INT\r
+OBUFB          100000  INT\r
+OUT            000325' EXT\r
+OUTPB          004000  INT\r
+PDP            000003  INT\r
+PI             000004  SPD\r
+PICHN          000100  INT\r
+PIOMOD         000314' EXT\r
+PROG           000007  INT\r
+PUNIT          000652' EXT\r
+PUUOAC         000063' EXT\r
+RB             000200  \r
+RD             000300  \r
+RDDA           000517' \r
+RDFW           000551' \r
+RDRM           000531' \r
+RDRV           000543' \r
+READ           000527' \r
+RIT            000535' \r
+RRV            000463' \r
+RUN            200000  INT\r
+RUNABL         204000  INT\r
+SETI           000267' \r
+SETIOD         001270' EXT\r
+SETO           000272' \r
+SL             220000  \r
+SV0            001127' \r
+SV1            001115' \r
+SVAC           001130' \r
+SVCNTR         001141' \r
+TAC            000001  INT\r
+TAC1           000002  INT\r
+TEM            000010  INT\r
+THSDAT         000046' EXT\r
+TTYATC         020000  INT\r
+TTYUSE         010000  INT\r
+UBEG           000343' INT\r
+UBEG2          000350' \r
+UBEG3          000370' \r
+UBEGX          000366' \r
+\r
+\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING      MACRO 10 05:51 24-APR-78 PAGE 22-4\r
+DTSER2 MAC     24-APR-78 02:46         SYMBOL TABLE\r
+\r
+UBKN           001117' \r
+UBLK           000001  \r
+UBUF           001121' INT\r
+UCHA           000042  \r
+UCHN           000001  \r
+UDIR           000364' EXT\r
+UDIR2          000016' \r
+UDIR3          000022' \r
+UDIR4          000026' \r
+UDIREN         000200  \r
+UDIRIN         000100  \r
+UDIRK1         000034' \r
+UDIRLN         000004  \r
+UDIRSH         000000' \r
+UDMP           001125' \r
+UDMP0          000640' INT\r
+UDMP1          000641' \r
+UDMP1A         000674' \r
+UDMP1B         000676' \r
+UDMP1C         000712' \r
+UDMP2          000723' \r
+UDMPA          001126' \r
+UDMPI          001022' INT\r
+UDMPI2         001033' \r
+UDMPO          000633' \r
+UDMPRB         001053' \r
+UDVDAT         001122' \r
+UEND           000236' \r
+UEND2          000242' \r
+UENTER         000052' INT\r
+UERRCN         001153' \r
+UFREE          001064' EXT\r
+UIN            000204' \r
+UIN1           000217' \r
+UIN2           000251' \r
+UIN3           000254' \r
+UIN4           000265' \r
+UINTER         001142' \r
+ULINKF         001000  \r
+ULOOK          000035' INT\r
+ULOOK1         000041' \r
+UNIT           001116' \r
+UNWFRE         000400  \r
+UOFF           000615' \r
+UOUT           000125' \r
+UOUT1          000144' \r
+UOUT2          000153' \r
+UOUT3          000167' \r
+UOUT4          000171' \r
+UPROG          001120' \r
+URDIR          002000  \r
+UREV           010000  \r
+USETR          000377' \r
+\r
+\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING      MACRO 10 05:51 24-APR-78 PAGE 22-5\r
+DTSER2 MAC     24-APR-78 02:46         SYMBOL TABLE\r
+\r
+USETW          000375' \r
+USRJDA         000064' EXT\r
+USRMOD         010000  INT\r
+USRREL         001026' EXT\r
+USVDB          001151' \r
+USVIOS         001152' \r
+UTBERR         000373' \r
+UTBKER         000374' EXT\r
+UTC            000210  SPD\r
+UTDSP          000112' ENT\r
+UTIME          001244' \r
+UTPCLR         000063' INT\r
+UTPCLS         000312' INT\r
+UTPREL         000326' INT\r
+UTPRL1         000330' \r
+UTS            000214  SPD\r
+UTWDR          000311' INT\r
+UUO            000014  INT\r
+UX1            000001  \r
+UX2            000002  \r
+UX3            000005  \r
+UXIT           000311' EXT\r
+VEOT           000002  \r
+WAIT1          000342' EXT\r
+WD             000700  \r
+WSYNC          000363' EXT\r
+WTDA           000523' \r
+WTFW           000563' \r
+\fEEEEEEEEEEEEEEE      RRRRRRRRRRRR         RRRRRRRRRRRR            CCCCCCCCCCCC         OOOOOOOOO         NNN         NNN\r
+EEEEEEEEEEEEEEE      RRRRRRRRRRRR         RRRRRRRRRRRR            CCCCCCCCCCCC         OOOOOOOOO         NNN         NNN\r
+EEEEEEEEEEEEEEE      RRRRRRRRRRRR         RRRRRRRRRRRR            CCCCCCCCCCCC         OOOOOOOOO         NNN         NNN\r
+EEE                  RRR         RRR      RRR         RRR      CCC                  OOO         OOO      NNN         NNN\r
+EEE                  RRR         RRR      RRR         RRR      CCC                  OOO         OOO      NNN         NNN\r
+EEE                  RRR         RRR      RRR         RRR      CCC                  OOO         OOO      NNN         NNN\r
+EEE                  RRR         RRR      RRR         RRR      CCC                  OOO         OOO      NNNNNN      NNN\r
+EEE                  RRR         RRR      RRR         RRR      CCC                  OOO         OOO      NNNNNN      NNN\r
+EEE                  RRR         RRR      RRR         RRR      CCC                  OOO         OOO      NNNNNN      NNN\r
+EEEEEEEEEEEE         RRRRRRRRRRRR         RRRRRRRRRRRR         CCC                  OOO         OOO      NNN   NNN   NNN\r
+EEEEEEEEEEEE         RRRRRRRRRRRR         RRRRRRRRRRRR         CCC                  OOO         OOO      NNN   NNN   NNN\r
+EEEEEEEEEEEE         RRRRRRRRRRRR         RRRRRRRRRRRR         CCC                  OOO         OOO      NNN   NNN   NNN\r
+EEE                  RRR   RRR            RRR   RRR            CCC                  OOO         OOO      NNN      NNNNNN\r
+EEE                  RRR   RRR            RRR   RRR            CCC                  OOO         OOO      NNN      NNNNNN\r
+EEE                  RRR   RRR            RRR   RRR            CCC                  OOO         OOO      NNN      NNNNNN\r
+EEE                  RRR      RRR         RRR      RRR         CCC                  OOO         OOO      NNN         NNN\r
+EEE                  RRR      RRR         RRR      RRR         CCC                  OOO         OOO      NNN         NNN\r
+EEE                  RRR      RRR         RRR      RRR         CCC                  OOO         OOO      NNN         NNN\r
+EEEEEEEEEEEEEEE      RRR         RRR      RRR         RRR         CCCCCCCCCCCC         OOOOOOOOO         NNN         NNN\r
+EEEEEEEEEEEEEEE      RRR         RRR      RRR         RRR         CCCCCCCCCCCC         OOOOOOOOO         NNN         NNN\r
+EEEEEEEEEEEEEEE      RRR         RRR      RRR         RRR         CCCCCCCCCCCC         OOOOOOOOO         NNN         NNN\r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  05:53:58\r
+File: DSKB0 :ERRCON.LST   [8,296] Created: 20-April-1967 05:51:00 Printed: 24-April-1978 05:53:33\r
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:1892 \r
+File will be deleted after printing\r
+\f\r
+ERRCON - ERROR HANDLING ROUTINE FOR MONITOR DECTECTED ERRORS   MACRO 10 05:51 24-APR-78 PAGE 1\r
+S      MAC     24-APR-78 21:40         8-9-65\r
+\r
+                                       XLIST\r
+                                      LIST\r
+                               TITLE ERRCON - ERROR HANDLING ROUTINE FOR MONITOR DECTECTED ERRORS\r
+                               SUBTTL  8-9-65\r
+                               EXTERNAL APRCHL,APRRET,HOLD,HOLDI,APRCHN\r
+                               EXTERNAL JOB,JOBADR,JOBREL,TTYFND,TTYCTR,TTYSTR\r
+                               EXTERNAL JBTADR, UXIT,JOBPDP,JOBTRP,USRPDP,UBUF,PJOBN\r
+                               EXTERNAL CPOPJ,HOLDI1,WAIT1,USRPOV,JOBPFI\r
+                               EXTERNAL CRLF,MJOBPD,JOBPDL,CPOPJ1\r
+\r
+\fERRCON - ERROR HANDLING ROUTINE FOR MONITOR DECTECTED ERRORS  MACRO 10 05:51 24-APR-78 PAGE 2\r
+ERRCON MAC     24-APR-78 23:01         8-9-65\r
+\r
+\r
+                               ;CALL:    PUSHJ PDP,ADRCK\r
+                               ;                   HRRZ TAC,LOC\r
+                               ;                   OK RETURN\r
+\r
+                                         INTERNAL ADRCK\r
+\r
+       000000' 261140  000001  ADRCK:    PUSH PDP, TAC\r
+       000001' 256023  777777            XCT @-1(PDP)\r
+       000002' 350003  777777            AOS -1(PDP)\r
+       000003' 261140  000002            PUSH PDP,TAC1\r
+       000004' 135100  000000*           LDB TAC1,PJOBN\r
+       000005' 554102  000000*           HLRZ TAC1,JBTADR(TAC1)\r
+       000006' 303040  000000*           CAILE TAC,JOBPFI      ;IN IO PROTECTED PART OF DATA AREA?\r
+       000007' 313040  000002            CAMLE TAC,TAC1        ;NO,IS IT GREATER THAN PROTECTION?\r
+       000010' 260140  000014'           PUSHJ PDP,ADRERR      ;YES\r
+       000011' 262140  000002            POP PDP,TAC1          ;NO\r
+       000012' 262140  000001            POP PDP, TAC\r
+       000013' 263140  000000            POPJ PDP,\r
+\r
+\fERRCON - ERROR HANDLING ROUTINE FOR MONITOR DECTECTED ERRORS  MACRO 10 05:51 24-APR-78 PAGE 3\r
+ERRCON MAC     24-APR-78 23:01         8-9-65\r
+\r
+\r
+                                         INTERNAL ADRERR\r
+\r
+       000014' 550100  000003  ADRERR:   HRRZ TAC1,PDP\r
+       000015' 317100  000000*           CAMG TAC1,JOBADR      ;IS THIS ERROR AT UUO OR INTERRUPT SERV\r
+       000016' 254000  000027'           JRST ADRERI           ;INTERRUPT SERVICE LEVEL\r
+       000017' 265040  000231'           JSP TAC,ERRPTU\r
+       000020' 440700  000023'           POINT 7,AERM1\r
+       000021' 260140  000155'           PUSHJ PDP,ERNAM\r
+       000022' 254000  000207'           JRST ERSYC1\r
+\r
+       000023' 406110  451212  AERM1:    ASCIZ /ADDRESS CHECK FOR /\r
+       000024' 516464  041620\r
+       000025' 426071  320214\r
+       000026' 476444  000000\r
+\r
+       000027' 135200  000004* ADRERI:   LDB ITEM, PJOBN\r
+       000030' 265040  000232'           JSP TAC,ERRPNT\r
+       000031' 440700  000023'           POINT 7,AERM1\r
+       000032' 260140  000155'           PUSHJ PDP,ERNAM\r
+       000033' 201100  000045'           MOVEI TAC1,AERM3\r
+       000034' 260140  000333'           PUSHJ PDP,MESPNT\r
+       000035' 250303  000000  ADRER2:   EXCH DEVDAT, (PDP)    ;GET ADDRESS OF D.D. BLOCK DECTECTING ER\r
+       000036' 135040  000422'           LDB TAC, [POINT 3, DEVCHR(DEVDAT), 11]  ;GET PI CHANNEL NO.\r
+       000037' 261140  000001            PUSH PDP, TAC                 ;AND SAVE\r
+       000040' 200046  000003            MOVE TAC,DEVSER(DEVDAT)\r
+       000041' 260141  000000            PUSHJ PDP,DRL(TAC)    ;RELEASE DEVICE\r
+       000042' 262140  000001            POP PDP, TAC          ;RESTORE PI CHANNEL NO.\r
+       000043' 250303  000000            EXCH DEVDAT,(PDP)\r
+       000044' 254000  000000*           JRST HOLDI                    ;AND GO DISMISS CHANNEL\r
+\r
+       000045' 202112  551222  AERM3:    ASCIZ / DURING INTERRUPT/\r
+       000046' 472164  044634\r
+       000047' 522132  251252\r
+       000050' 502500  000000\r
+\r
+\fERRCON - ERROR HANDLING ROUTINE FOR MONITOR DECTECTED ERRORS  MACRO 10 05:51 24-APR-78 PAGE 4\r
+ERRCON MAC     24-APR-78 23:01         8-9-65\r
+\r
+\r
+                                         INTERNAL APRILM\r
+                                         EXTERNAL USRREL\r
+\r
+                       200000            POVF=200000\r
+                       400000            POVC=400000\r
+                       010000            NXM=10000\r
+                       020000            ILM=20000\r
+\r
+       000051' 201040  000000* APRILM:   MOVEI TAC,APRCHN\r
+       000052' 700340  020000            CONSO APR,ILM\r
+       000053' 254000  000100'           JRST APRNXM\r
+       000054' 700201  020000            CONO APR,ILM(TAC)\r
+       000055' 550040  000000*           HRRZ TAC,APRCHL\r
+       000056' 313040  000000*           CAMLE TAC, USRREL\r
+       000057' 254000  000064'           JRST APRJRS\r
+       000060' 265040  000231'           JSP TAC,ERRPTU\r
+       000061' 440700  000070'           POINT 7,APM1\r
+       000062' 260140  000144' APRIL1:   PUSHJ PDP,EPTADR\r
+       000063' 254000  000132'           JRST APRDMS           ;GO DISMISS APR CHANNEL\r
+\r
+       000064' 265040  000231' APRJRS:   JSP TAC,ERRPTU\r
+       000065' 440700  000073'           POINT 7,APM2\r
+       000066' 260140  000144'           PUSHJ PDP,EPTADR\r
+       000067' 254000  000132'           JRST APRDMS\r
+\r
+       000070' 446311  420232  APM1:     ASCIZ /ILL MEM REF/\r
+       000071' 426324  051212\r
+       000072' 430000  000000\r
+\r
+       000073' 502064  042660  APM2:     ASCIZ /PC EXCEEDS MEM BOUND/\r
+       000074' 416130  542246\r
+       000075' 202330  546500\r
+       000076' 412372  547210\r
+       000077' 000000  000000\r
+\r
+\r
+\r
+\r
+       000100' 700340  010000  APRNXM:   CONSO APR,NXM\r
+       000101' 254000  000111'           JRST APRPDL\r
+       000102' 700201  010000            CONO APR,NXM(TAC)\r
+       000103' 265040  000231'           JSP TAC,ERRPTU\r
+       000104' 440700  000106'           POINT 7,APM3\r
+       000105' 254000  000062'           JRST APRIL1\r
+\r
+       000106' 472371  620212  APM3:     ASCIZ /NON EX MEM/\r
+       000107' 541011  542632\r
+       000110' 000000  000000\r
+\r
+\r
+\fERRCON - ERROR HANDLING ROUTINE FOR MONITOR DECTECTED ERRORS  MACRO 10 05:51 24-APR-78 PAGE 5\r
+ERRCON MAC     24-APR-78 23:01         8-9-65\r
+\r
+\r
+       000111' 700340  200000  APRPDL:   CONSO APR,POVF\r
+       000112' 265240  000202'           JSP DAT, ERROR        ;NOT APR, MUST BE HARDWARE PROB.\r
+       000113' 700201  400000            CONO APR,POVC(TAC)\r
+       000114' 200040  000055*           MOVE TAC,APRCHL\r
+       000115' 332100  000000*           SKIPE TAC1,USRPOV\r
+       000116' 607040  010000            TLNN TAC,10000        ;WAS OVF IN USER MODE?\r
+       000117' 254000  000122'           JRST PDLOV                    ;NO, GO PRINT MESSAGE\r
+       000120' 542100  000114*           HRRM TAC1,APRCHL      ;RESET RETURN\r
+       000121' 254000  000000*           JRST APRRET                   ;DISMISS CLOCK\r
+       000122' 265040  000231' PDLOV:    JSP TAC,ERRPTU\r
+       000123' 440700  000134'           POINT 7,APM4\r
+       000124' 260140  000144'           PUSHJ PDP,EPTADR\r
+       000125' 200040  000120*           MOVE TAC,APRCHL\r
+       000126' 603040  010000            TLNE TAC,10000\r
+       000127' 254000  000132'           JRST APRDMS           ;GO DISMISS APR CHANNEL\r
+       000130' 201100  000225'           MOVEI TAC1,ERMS1\r
+       000131' 260140  000340'           PUSHJ PDP,MESPC\r
+       000132' 201040  000000  APRDMS:   MOVEI TAC, 0          ;SET TO DISMISS APR CHANNEL\r
+       000133' 254000  000000*           JRST HOLDI1\r
+\r
+       000134' 502111  420236  APM4:     ASCIZ .PDL OV.\r
+       000135' 530000  000000\r
+\r
+       000136' 202032  420212  APMSYS:   ASCIZ / AT EXEC LOC /\r
+       000137' 542130  320230\r
+       000140' 476064  000000\r
+\r
+\r
+       000141' 202032  420252  APMUSR:   ASCIZ / AT USER LOC /\r
+       000142' 516132  220230\r
+       000143' 476064  000000\r
+\r
+\r
+       000144' 200040  000125* EPTADR:   MOVE TAC,APRCHL\r
+       000145' 261140  000001  EPTAD1:   PUSH PDP,TAC          ;PPRINT "AT EXEC LOC " OR "AT USER LOC"\r
+       000146' 201100  000136'           MOVEI TAC1,APMSYS\r
+       000147' 603040  010000            TLNE TAC,10000\r
+       000150' 201100  000141'           MOVEI TAC1,APMUSR\r
+       000151' 260140  000333'           PUSHJ PDP,MESPNT\r
+       000152' 262140  000001            POP PDP,TAC\r
+       000153' 405040  777777            ANDI TAC,-1\r
+       000154' 254000  000344'           JRST OCTPNT\r
+\r
+\fERRCON - ERROR HANDLING ROUTINE FOR MONITOR DECTECTED ERRORS  MACRO 10 05:51 24-APR-78 PAGE 6\r
+ERRCON MAC     24-APR-78 23:01         8-9-65\r
+\r
+\r
+                                         INTERNAL ERNAM\r
+\r
+\r
+       000155' 201100  000167' ERNAM:    MOVEI TAC1,ERRDEV\r
+       000156' 260140  000333'           PUSHJ PDP,MESPNT\r
+       000157' 200100  000423'           MOVE TAC1,[POINT 6,@-(PDP)]\r
+       000160' 201000  000006            MOVEI 0,6\r
+       000161' 134040  000002  ERNAM1:   ILDB TAC,TAC1\r
+       000162' 322040  000166'           JUMPE TAC,.+4\r
+       000163' 271040  000240            ADDI TAC,240\r
+       000164' 136040  000005            IDPB TAC,DAT\r
+       000165' 367000  000161'           SOJG 0,ERNAM1\r
+       000166' 263140  000000            POPJ PDP,\r
+\r
+       000167' 422132  644606  ERRDEV:   ASCIZ /DEVICE /\r
+       000170' 425000  000000\r
+\r
+                               INTERNAL DIRERR\r
+\r
+       000171' 262140  000000  DIRERR:   POP PDP,0 ;FLUSH RETURN ADDRESS\r
+       000172' 265040  000231'           JSP TAC,ERRPTU\r
+       000173' 440700  000176'           POINT 7,DIRER1\r
+       000174' 260140  000155'           PUSHJ PDP,ERNAM\r
+       000175' 254000  000207'           JRST ERSYC1\r
+\r
+       000176' 412030  420210  DIRER1:   ASCIZ /BAD DIRECTORY FOR /\r
+       000177' 446450  541650\r
+       000200' 476453  120214\r
+       000201' 476444  000000\r
+\r
+\fERRCON - ERROR HANDLING ROUTINE FOR MONITOR DECTECTED ERRORS  MACRO 10 05:51 24-APR-78 PAGE 7\r
+ERRCON MAC     24-APR-78 23:01         8-9-65\r
+\r
+\r
+                               ;         INTERNAL ERRDIS\r
+\r
+                               ;ERRDIS:  LDB TAC,[POINT 4,DEVCHR(DEVDAT),17]\r
+                               ;         ADDI TAC,ERRC2\r
+                               ;         SKIPL TAC1,@TAC\r
+                               ;         JRST 4,.\r
+                               ;         TLZ TAC1,400000\r
+                               ;         MOVEM TAC1,@TAC\r
+                               ;         MOVE PDP,JOBPDP(PROG)\r
+                               ;         MOVE TAC,@TAC\r
+                               ;         HRLI TAC,PROG\r
+                               ;         MOVE TAC,@TAC\r
+                               ;         HLL TAC,1(PDP)\r
+                               ;         PUSH PDP,TAC\r
+                               ;         JRST UXIT\r
+\r
+                               ;ERRC2:   XWD PROG,JOBTRP\r
+\r
+\fERRCON - ERROR HANDLING ROUTINE FOR MONITOR DECTECTED ERRORS  MACRO 10 05:51 24-APR-78 PAGE 8\r
+ERRCON MAC     24-APR-78 23:01         8-9-65\r
+\r
+\r
+                               ;UNEXPLAINED ERROR ENTRY\r
+                               ;CALL:    JSP DAT, ERROR\r
+\r
+                               INTERNAL ERROR\r
+                               EXTERNAL JOBPD1\r
+\r
+       000202' 201200  000001  ERROR:    MOVEI ITEM,1          ;PRINT ON OPERATORS CONSOLE(JOB 1)\r
+       000203' 265040  000232'           JSP TAC,ERRPNT\r
+       000204' 440700  000220'           POINT 7,ERR1\r
+       000205' 550043  777776            HRRZ TAC,-2(PDP)      ;GET LOC OF CALL TO ERROR\r
+       000206' 260140  000342' EPOCT:    PUSHJ PDP,PCPNT\r
+       000207' 201100  000225' ERSYC1:   MOVEI TAC1,ERMS1\r
+\r
+       000210' 260140  000340' ERSYCL:   PUSHJ PDP,MESPC\r
+       000211' 254000  000000*           JRST HOLD\r
+\r
+       000212' 260140  000333' EPCAD0:   PUSHJ PDP,MESPNT      ;PRINT MESS\r
+       000213' 260140  000216' EPCAD1:   PUSHJ PDP,EPCAD       ;PRINT LAST USER CALL TO MONITOR\r
+       000214' 254000  000211*           JRST HOLD\r
+\r
+       000215' 260140  000333' EPCADR:   PUSHJ PDP,MESPNT\r
+       000216' 200051  000000* EPCAD:    MOVE TAC, JOBPD1(JDAT)        ;GET LAST USER UUO CALL\r
+       000217' 364040  000145'           SOJA TAC,EPTAD1\r
+\r
+       000220' 426452  247644  ERR1:     ASCIZ /ERROR IN MONITOR AT /\r
+       000221' 202231  620232\r
+       000222' 476351  152236\r
+       000223' 511010  152100\r
+       000224' 000000  000000\r
+       000225' 355010  554212  ERMS1:    ASCIZ /; EXEC CALLED FROM /\r
+       000226' 415010  340630\r
+       000227' 462130  420214\r
+       000230' 512371  520000\r
+\r
+\fERRCON - ERROR HANDLING ROUTINE FOR MONITOR DECTECTED ERRORS  MACRO 10 05:51 24-APR-78 PAGE 9\r
+ERRCON MAC     24-APR-78 23:01         8-9-65\r
+\r
+\r
+                               ;ERROR SETUP ROUTINE\r
+                               ;CALL:    MOVE ITEM, JOBNUMBER\r
+                               ;         MOVE DEVDAT, DEVICE DATA BLOCK IF DEVICE ERROR\r
+                               ;         JSP TAC, ERRPNT\r
+                               ;         POINT 7, ERROR MESSAGE\r
+                               ;         RETURN\r
+\r
+\r
+                                         INTERNAL ERRPNT,ERRPTU\r
+\r
+       000231' 200200  000000* ERRPTU:   MOVE ITEM,JOB\r
+       000232' 200344  000005* ERRPNT:   MOVE PROG,JBTADR(ITEM)\r
+       000233' 200444  000232*           MOVE JDAT,JBTADR(ITEM)        ;GET ADDRESS OF JOB DATA AREA\r
+       000234' 322440  000240'           JUMPE JDAT, ERRPD     ;SET UP PDP IN USER AREA IF HE HAS CORE\r
+       000235' 205140  000000*           MOVSI PDP, MJOBPD\r
+       000236' 541151  000000*           HRRI PDP, JOBPDL(JDAT)\r
+\r
+       000237' 253140  000240'           AOBJN PDP, .+1                ;LEAVE ROOM FOR UUO RETURN\r
+       000240' 261140  000005  ERRPD:    PUSH PDP, DAT         ;SAVE CLALL TO ERROR SUB\r
+       000241' 261140  000006            PUSH PDP, DEVDAT\r
+       000242' 261140  000001            PUSH PDP, TAC                 ;SAVE RETURN\r
+       000243' 260140  000000*           PUSHJ PDP, TTYFND\r
+       000244' 201100  000254'           MOVEI TAC1,SYSERR\r
+       000245' 260140  000333'           PUSHJ PDP,MESPNT\r
+       000246' 200040  000004            MOVE TAC, ITEM\r
+       000247' 260140  000362'           PUSHJ PDP,RADX10\r
+       000250' 260140  000000*           PUSHJ PDP, CRLF               ;PRINT CRLF\r
+       000251' 200123  000000            MOVE TAC1, @(PDP)\r
+       000252' 260140  000333'           PUSHJ PDP, MESPNT\r
+       000253' 254000  000000*           JRST CPOPJ1\r
+\r
+       000254'                 SYSERR:   ASCIZ /\r
+       000254' 064250  551244  ERROR IN JOB /\r
+       000255' 476444  044634\r
+       000256' 202251  741100\r
+       000257' 000000  000000\r
+\r
+\fERRCON - ERROR HANDLING ROUTINE FOR MONITOR DECTECTED ERRORS  MACRO 10 05:51 24-APR-78 PAGE 10\r
+ERRCON MAC     24-APR-78 23:01         8-9-65\r
+\r
+\r
+                               ,ERROR TRAP HANDLING\r
+\r
+                               ;ERRTRP:  LDB TAC,[POINT 4,DEVCHR(DEVDAT),17]\r
+                               ;         ADDI TAC,ERRC2\r
+                               ;         SKIPG TAC1,@TAC\r
+                               ;         TLO TAC1,400000\r
+                               ;         MOVEM TAC1,@TAC\r
+                               ;         AOS       TAC\r
+                               ;         MOVE PDP,JOBPDP(PROG)\r
+                               ;         AOS       TAC\r
+                               ;         MOVE TAC1,1(PDP)\r
+                               ;         PUSH PDP,TAC\r
+                               ;         HLL TAC1,0(PDP)\r
+                               ;         HRLI TAC1,PROG\r
+                               ;         MOVEM TAC,@TAC1\r
+                               ;         JRST UXIT\r
+\r
+\fERRCON - ERROR HANDLING ROUTINE FOR MONITOR DECTECTED ERRORS  MACRO 10 05:51 24-APR-78 PAGE 11\r
+ERRCON MAC     24-APR-78 23:01         8-9-65\r
+\r
+\r
+                                         INTERNAL ILLINP\r
+\r
+       000260' 265040  000231' ILLINP:   JSP TAC,ERRPTU\r
+       000261' 440700  000270'           POINT 7,ILLOT\r
+       000262' 260140  000155'           PUSHJ PDP,ERNAM\r
+       000263' 265100  000212'           JSP TAC1, EPCAD0\r
+       000264' 202070  147234  ASCIZ / CANNOT DO INPUT/\r
+       000265' 476504  042236\r
+       000266' 202231  650252\r
+       000267' 520000  000000\r
+\r
+       000270' 476532  450252  ILLOT:    ASCIZ /OUTPUT /\r
+       000271' 521000  000000\r
+\r
+\r
+                                         INTERNAL ILLINS\r
+\r
+       000272' 265040  000231' ILLINS:   JSP TAC,ERRPTU\r
+       000273' 440700  000275'           POINT 7,ERRIL\r
+       000274' 254000  000213'           JRST EPCAD1\r
+\r
+       000275' 446311  420222  ERRIL:    ASCIZ /ILL INST/\r
+       000276' 472472  400000\r
+\r
+\fERRCON - ERROR HANDLING ROUTINE FOR MONITOR DECTECTED ERRORS  MACRO 10 05:51 24-APR-78 PAGE 12\r
+ERRCON MAC     24-APR-78 23:01         8-9-65\r
+\r
+\r
+                                       INTERNAL ILLMOD\r
+\r
+       000277' 265040  000231' ILLMOD: JSP TAC,ERRPTU\r
+       000300' 440700  000303'         POINT 7,ILLMO1\r
+       000301' 260140  000155'         PUSHJ PDP,ERNAM\r
+       000302' 254000  000213'         JRST EPCAD1\r
+\r
+       000303' 446311  420210  ILLMO1: ASCIZ /ILL DEVICE DATA MODE FOR /\r
+       000304' 426551  141612\r
+       000305' 202110  152202\r
+       000306' 202331  742212\r
+       000307' 202151  751100\r
+       000310' 000000  000000\r
+\r
+                                       INTERNAL ILLOUT\r
+\r
+       000311' 265040  000231' ILLOUT: JSP TAC,ERRPTU\r
+       000312' 440700  000321'         POINT 7,ILLIN\r
+       000313' 260140  000155'         PUSHJ PDP,ERNAM\r
+       000314' 265100  000212'         JSP TAC1,EPCAD0\r
+\r
+       000315' 202070  147234  ILM3:           ASCIZ / CANNOT DO OUTPUT/\r
+       000316' 476504  042236\r
+       000317' 202372  552240\r
+       000320' 526500  000000\r
+\r
+       000321' 446352  052650  ILLIN:  ASCIZ /INPUT /\r
+       000322' 200000  000000\r
+                               INTERNAL IOIERR\r
+\r
+       000323' 265040  000231' IOIERR: JSP TAC,ERRPTU\r
+       000324' 440700  000326'         POINT 7,IOIER1\r
+       000325' 254000  000213'         JRST EPCAD1\r
+\r
+       000326' 446364  052236  IOIER1: ASCIZ /IO TO UNASSIGNED CHANNEL/\r
+       000327' 202531  640646\r
+       000330' 516230  747212\r
+       000331' 421010  344202\r
+       000332' 472350  546000\r
+\r
+                               ,CALL WITH DEST. POINTER IN DAT\r
+                               ,SOURCE POINTER IN TAC1\r
+                               ,MOVES UNTIL A ZERO CHAR. IS FOUND\r
+\r
+                                       INTERNAL MESPNT\r
+       000333' 505100  440700  MESPNT: HRLI TAC1,440700\r
+       000334' 134040  000002  MES1:   ILDB TAC, TAC1\r
+       000335' 322040  000000*         JUMPE TAC,CPOPJ\r
+       000336' 136040  000005          IDPB TAC, DAT\r
+       000337' 254000  000334'         JRST MES1\r
+\r
+                               ,ANY RADIX PRINT\r
+\r
+\fERRCON - ERROR HANDLING ROUTINE FOR MONITOR DECTECTED ERRORS  MACRO 10 05:51 24-APR-78 PAGE 12-1\r
+ERRCON MAC     24-APR-78 23:01         8-9-65\r
+\r
+                               ,  TAC1 = RADIX\r
+                               ,  DAT = BYTE POINTER\r
+                               ,  TAC = NUMBER\r
+\r
+                                       INTERNAL OCTPNT, ANYRDX, PCPNT\r
+                                       EXTERNAL UUO0,JOBPD1\r
+\r
+       000340' 260140  000333' MESPC:  PUSHJ PDP, MESPNT       ;PRINT LAST USER UUO CALL\r
+       000341' 550051  000216*         HRRZ TAC,JOBPD1(JDAT)\r
+       000342' 275040  000001  PCPNT:  SUBI TAC,1\r
+       000343' 404040  777777          AND TAC,-1\r
+       000344' 201100  000010  OCTPNT: MOVEI TAC1,10\r
+       000345' 261140  000004  ANYRDX: PUSH PDP,ITEM\r
+       000346' 552100  000004          HRRZM TAC1, ITEM\r
+       000347' 260140  000352'         PUSHJ PDP,OCTP1\r
+       000350' 262140  000004          POP PDP,ITEM\r
+       000351' 263140  000000          POPJ PDP,\r
+\r
+       000352' 230040  000004  OCTP1:  IDIV TAC,ITEM\r
+       000353' 506103  000000          HRLM TAC1, (PDP)\r
+       000354' 322040  000356'         JUMPE TAC, .+2\r
+       000355' 260140  000352'         PUSHJ PDP, OCTP1\r
+       000356' 554043  000000          HLRZ TAC, (PDP)\r
+       000357' 271040  000060          ADDI TAC, "0"\r
+       000360' 136040  000005          IDPB TAC, DAT\r
+       000361' 263140  000000          POPJ PDP,\r
+\r
+                               INTERNAL RADX10\r
+\r
+       000362' 261140  000002  RADX10: PUSH PDP,TAC1   ;OUTPUT DECIMAL\r
+       000363' 201100  000012          MOVEI TAC1,12\r
+       000364' 260140  000345'         PUSHJ PDP,ANYRDX\r
+       000365' 262140  000002          POP PDP,TAC1\r
+       000366' 263140  000000          POPJ PDP,\r
+\r
+                               REPEAT 0,<\r
+                               PCPNT:  SUBI TAC,1\r
+                               OCTPNT: HRLZ TAC1,TAC\r
+                                 MOVSI TAC,-1\r
+                                LSHC TAC,3\r
+                                 TRNN TAC,7\r
+                                  JUMPN TAC1,.-2\r
+                               OCTPN1: ADDI TAC,"0"\r
+                                 IDPB TAC,DAT\r
+                                 JUMPGE TAC,CPOPJ\r
+                                 HLLZS TAC\r
+                                 LSHC TAC,3\r
+                                 JRST OCTPN1\r
+                               >\r
+\r
+                                       INTERNAL UTBKER\r
+       000367' 135200  000027* UTBKER: LDB ITEM,PJOBN  ;JOB NUMBER\r
+       000370' 265040  000232'         JSP TAC,ERRPNT\r
+\r
+\fERRCON - ERROR HANDLING ROUTINE FOR MONITOR DECTECTED ERRORS  MACRO 10 05:51 24-APR-78 PAGE 12-2\r
+ERRCON MAC     24-APR-78 23:01         8-9-65\r
+\r
+       000371' 440700  000401'         POINT 7,UTERM\r
+       000372' 200040  000000*         MOVE TAC,UBUF\r
+       000373' 275047  000000          SUBI TAC,(PROG)\r
+       000374' 260140  000344'         PUSHJ PDP,OCTPNT\r
+       000375' 201100  000424'         MOVEI TAC1, [ASCII / /]\r
+       000376' 260140  000333'         PUSHJ PDP, MESPNT\r
+       000377' 260140  000155'         PUSHJ PDP,ERNAM\r
+       000400' 254000  000035'         JRST ADRER2\r
+\r
+       000401' 446311  420210  UTERM:  ASCIZ /ILL DT BLOCK NO. , BUFFER AT /\r
+       000402' 521010  246236\r
+       000403' 416264  047236\r
+       000404' 271005  420204\r
+       000405' 526150  642644\r
+       000406' 202032  420000\r
+\r
+                                       INTERNAL UUOERR\r
+                                       EXTERNAL UUO0\r
+\r
+       000407' 265040  000231' UUOERR: JSP TAC,ERRPTU\r
+       000410' 440700  000416'         POINT 7,UUOER1\r
+       000411' 200040  000000*         MOVE TAC, UUO0  ;UUO PC\r
+       000412' 603040  010000          TLNE TAC, 10000 ;WAS IT FROM USER?\r
+       000413' 254000  000213'         JRST EPCAD1     ;YES, JUST PRINT LOC OF CALL\r
+       000414' 260140  000145'         PUSHJ PDP,EPTAD1        ;NO, PRINT BOTH EXEC CALL\r
+       000415' 254000  000207'         JRST ERSYC1     ;AND USER CALL\r
+\r
+       000416' 446311  420240  UUOER1: ASCIZ /ILL PROG. OP. USED/\r
+       000417' 512370  727100\r
+       000420' 476405  620252\r
+       000421' 516130  400000\r
+                                       END,\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 000425\r
+\r
+9K CORE USED\r
+\r
+\fERRCON - ERROR HANDLING ROUTINE FOR MONITOR DECTECTED ERRORS  MACRO 10 05:51 24-APR-78 PAGE 13\r
+ERRCON MAC     24-APR-78 23:01         SYMBOL TABLE\r
+\r
+A              000000  INT\r
+AC1            000015  INT\r
+AC2            000016  INT\r
+AC3            000017  INT\r
+ADRCK          000000' INT\r
+ADRER2         000035' \r
+ADRERI         000027' \r
+ADRERR         000014' INT\r
+AERM1          000023' \r
+AERM3          000045' \r
+AL             000001  INT\r
+ANYRDX         000345' INT\r
+APM1           000070' \r
+APM2           000073' \r
+APM3           000106' \r
+APM4           000134' \r
+APMSYS         000136' \r
+APMUSR         000141' \r
+APR            000000  SPD\r
+APRCHL         000144' EXT\r
+APRCHN         000051' EXT\r
+APRDMS         000132' \r
+APRIL1         000062' \r
+APRILM         000051' INT\r
+APRJRS         000064' \r
+APRNXM         000100' \r
+APRPDL         000111' \r
+APRRET         000121' EXT\r
+ASSCON         400000  INT\r
+ASSPRG         200000  INT\r
+B              000014  INT\r
+BUFPNT         000012  INT\r
+BUFWRD         000013  INT\r
+CLOSB          002000  INT\r
+CLSIN          000002  INT\r
+CLSOUT         000001  INT\r
+CPOPJ          000335' EXT\r
+CPOPJ1         000253' EXT\r
+CRLF           000250' EXT\r
+D              000017  INT\r
+DAT            000005  INT\r
+DCL            000001  INT\r
+DCW            020000  INT\r
+DDI            000007  INT\r
+DDO            000006  INT\r
+DDTMEM         000037  INT\r
+DDTSYM         000036  INT\r
+DEN            000004  INT\r
+DEVADR         000007  INT\r
+DEVBUF         000006  INT\r
+DEVCHR         000001  INT\r
+DEVCTR         000011  INT\r
+\r
+\r
+\fERRCON - ERROR HANDLING ROUTINE FOR MONITOR DECTECTED ERRORS  MACRO 10 05:51 24-APR-78 PAGE 13-1\r
+ERRCON MAC     24-APR-78 23:01         SYMBOL TABLE\r
+\r
+DEVDAT         000006  INT\r
+DEVIAD         000007  INT\r
+DEVIOS         000002  INT\r
+DEVLOG         000005  INT\r
+DEVMOD         000004  INT\r
+DEVNAM         000000  INT\r
+DEVOAD         000010  INT\r
+DEVPTR         000010  INT\r
+DEVSER         000003  INT\r
+DGF            000012  INT\r
+DIN            000003  INT\r
+DIRER1         000176' \r
+DIRERR         000171' INT\r
+DLK            000005  INT\r
+DOU            000002  INT\r
+DR             000016  INT\r
+DRL            000000  INT\r
+DSI            000011  INT\r
+DSO            000010  INT\r
+DTW            040000  INT\r
+DVAVAL         000040  INT\r
+DVCDR          100000  INT\r
+DVDIR          000004  INT\r
+DVDIRI         400000  INT\r
+DVIN           000002  INT\r
+DVLPT          040000  INT\r
+DVMTA          000020  INT\r
+DVOUT          000001  INT\r
+DVTTY          000010  INT\r
+ENTRB          020000  INT\r
+EPCAD          000216' \r
+EPCAD0         000212' \r
+EPCAD1         000213' \r
+EPCADR         000215' \r
+EPOCT          000206' \r
+EPTAD1         000145' \r
+EPTADR         000144' \r
+ERMS1          000225' \r
+ERNAM          000155' INT\r
+ERNAM1         000161' \r
+ERR1           000220' \r
+ERRDEV         000167' \r
+ERRIL          000275' \r
+ERROR          000202' INT\r
+ERRPD          000240' \r
+ERRPNT         000232' INT\r
+ERRPTU         000231' INT\r
+ERSYC1         000207' \r
+ERSYCL         000210' \r
+HOLD           000214' EXT\r
+HOLDI          000044' EXT\r
+HOLDI1         000133' EXT\r
+I              000010  INT\r
+\r
+\fERRCON - ERROR HANDLING ROUTINE FOR MONITOR DECTECTED ERRORS  MACRO 10 05:51 24-APR-78 PAGE 13-2\r
+ERRCON MAC     24-APR-78 23:01         SYMBOL TABLE\r
+\r
+IB             000013  INT\r
+IBUFB          200000  INT\r
+ILLIN          000321' \r
+ILLINP         000260' INT\r
+ILLINS         000272' INT\r
+ILLMO1         000303' \r
+ILLMOD         000277' INT\r
+ILLOT          000270' \r
+ILLOUT         000311' INT\r
+ILM            020000  \r
+ILM3           000315' \r
+INITB          400000  INT\r
+INPB           010000  INT\r
+IO             000020  INT\r
+IOACT          010000  INT\r
+IOBEG          000002  INT\r
+IOBKTL         040000  INT\r
+IOCON          000040  INT\r
+IODEND         020000  INT\r
+IODERR         200000  INT\r
+IODISC         400000  INT\r
+IODONE         400000  INT\r
+IODTER         100000  INT\r
+IOEND          000040  INT\r
+IOFST          000004  INT\r
+IOIER1         000326' \r
+IOIERR         000323' INT\r
+IOIMPM         400000  INT\r
+IONRCK         000100  INT\r
+IORDEL         000100  INT\r
+IORET          000020  INT\r
+IOS            000000  INT\r
+IOSTRT         000010  INT\r
+IOUSE          400000  INT\r
+IOW            000001  INT\r
+IOWC           000020  INT\r
+IOWS           400000  INT\r
+ITEM           000004  INT\r
+JBFADR         000000  INT\r
+JBFCTR         000002  INT\r
+JBFPTR         000001  INT\r
+JBTADR         000233' EXT\r
+JBUF           000005  INT\r
+JDAT           000011  INT\r
+JERR           002000  INT\r
+JIOW           100000  INT\r
+JNA            004000  INT\r
+JOB            000231' EXT\r
+JOBADR         000015' EXT\r
+JOBPD1         000341' EXT\r
+JOBPDL         000236' EXT\r
+JOBPDP         000000  EXT\r
+JOBPFI         000006' EXT\r
+\r
+\fERRCON - ERROR HANDLING ROUTINE FOR MONITOR DECTECTED ERRORS  MACRO 10 05:51 24-APR-78 PAGE 13-3\r
+ERRCON MAC     24-APR-78 23:01         SYMBOL TABLE\r
+\r
+JOBREL         000000  EXT\r
+JOBTRP         000000  EXT\r
+LOOKB          040000  INT\r
+MES1           000334' \r
+MESPC          000340' \r
+MESPNT         000333' INT\r
+MJOBPD         000235' EXT\r
+MTW            010000  INT\r
+NXM            010000  \r
+OBUFB          100000  INT\r
+OCTP1          000352' \r
+OCTPNT         000344' INT\r
+OUTPB          004000  INT\r
+PCPNT          000342' INT\r
+PDLOV          000122' \r
+PDP            000003  INT\r
+PICHN          000100  INT\r
+PJOBN          000367' EXT\r
+POVC           400000  \r
+POVF           200000  \r
+PROG           000007  INT\r
+RADX10         000362' INT\r
+RUN            200000  INT\r
+RUNABL         204000  INT\r
+SYSERR         000254' \r
+TAC            000001  INT\r
+TAC1           000002  INT\r
+TEM            000010  INT\r
+TTYATC         020000  INT\r
+TTYCTR         000000  EXT\r
+TTYFND         000243' EXT\r
+TTYSTR         000000  EXT\r
+TTYUSE         010000  INT\r
+UBUF           000372' EXT\r
+USRMOD         010000  INT\r
+USRPDP         000000  EXT\r
+USRPOV         000115' EXT\r
+USRREL         000056' EXT\r
+UTBKER         000367' INT\r
+UTERM          000401' \r
+UUO            000014  INT\r
+UUO0           000411' EXT\r
+UUOER1         000416' \r
+UUOERR         000407' INT\r
+UXIT           000000  EXT\r
+WAIT1          000000  EXT\r
+\f   IIIIIIIII            OOOOOOOOO            CCCCCCCCCCCC         OOOOOOOOO         NNN         NNN      TTTTTTTTTTTTTTT\r
+   IIIIIIIII            OOOOOOOOO            CCCCCCCCCCCC         OOOOOOOOO         NNN         NNN      TTTTTTTTTTTTTTT\r
+   IIIIIIIII            OOOOOOOOO            CCCCCCCCCCCC         OOOOOOOOO         NNN         NNN      TTTTTTTTTTTTTTT\r
+      III            OOO         OOO      CCC                  OOO         OOO      NNN         NNN            TTT      \r
+      III            OOO         OOO      CCC                  OOO         OOO      NNN         NNN            TTT      \r
+      III            OOO         OOO      CCC                  OOO         OOO      NNN         NNN            TTT      \r
+      III            OOO         OOO      CCC                  OOO         OOO      NNNNNN      NNN            TTT      \r
+      III            OOO         OOO      CCC                  OOO         OOO      NNNNNN      NNN            TTT      \r
+      III            OOO         OOO      CCC                  OOO         OOO      NNNNNN      NNN            TTT      \r
+      III            OOO         OOO      CCC                  OOO         OOO      NNN   NNN   NNN            TTT      \r
+      III            OOO         OOO      CCC                  OOO         OOO      NNN   NNN   NNN            TTT      \r
+      III            OOO         OOO      CCC                  OOO         OOO      NNN   NNN   NNN            TTT      \r
+      III            OOO         OOO      CCC                  OOO         OOO      NNN      NNNNNN            TTT      \r
+      III            OOO         OOO      CCC                  OOO         OOO      NNN      NNNNNN            TTT      \r
+      III            OOO         OOO      CCC                  OOO         OOO      NNN      NNNNNN            TTT      \r
+      III            OOO         OOO      CCC                  OOO         OOO      NNN         NNN            TTT      \r
+      III            OOO         OOO      CCC                  OOO         OOO      NNN         NNN            TTT      \r
+      III            OOO         OOO      CCC                  OOO         OOO      NNN         NNN            TTT      \r
+   IIIIIIIII            OOOOOOOOO            CCCCCCCCCCCC         OOOOOOOOO         NNN         NNN            TTT      \r
+   IIIIIIIII            OOOOOOOOO            CCCCCCCCCCCC         OOOOOOOOO         NNN         NNN            TTT      \r
+   IIIIIIIII            OOOOOOOOO            CCCCCCCCCCCC         OOOOOOOOO         NNN         NNN            TTT      \r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  05:53:58\r
+File: DSKB0 :IOCONT.LST   [8,296] Created: 20-April-1967 05:51:00 Printed: 24-April-1978 05:53:33\r
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:1874 \r
+File will be deleted after printing\r
+\f\r
+IOCONT - CONTROL FOR IO PROGRAMMED OPERATORS   MACRO 10 05:51 24-APR-78 PAGE 1\r
+S      MAC     24-APR-78 21:40         8-9-95\r
+\r
+                                       XLIST\r
+                                      LIST\r
+                                       TITLE IOCONT - CONTROL FOR IO PROGRAMMED OPERATORS\r
+                                       SUBTTL 8-9-95\r
+                                       EXTERNAL BUFCLC,ERROR,IOSETC,IOIERR,BUFCLR\r
+                                       EXTERNAL SETBYT,UINTQ,WAIT1,WSYNC,ADRCK\r
+                                       EXTERNAL UXIT,USRJDA,JOBJDA,ILLMOD,PUUOAC,PIOMOD\r
+                                       EXTERNAL JOB,ASSIN,PJOBN,ADRERR,USRREL,CUXIT1,CUXIT2\r
+                                       EXTERNAL SETIOS\r
+\r
+                               ;FOR PURPOSES OF COMMENTING THIS SUBROUTINE THE\r
+                               ;TERM BUFFER HEADER SHALL REFER TO THE 3 WORD HEADER\r
+                               ;WHICH IS USED BY THE USER PROGRAM AND THIS EXEC FOR\r
+                               ;REFERING TO THE RING BUFFERS.\r
+\r
+                               ;THE CONTENTS OF THE 3 WORD HEADER (AS SET BY THE MONITOR FOR THE USE\r
+                               ;                  FROM USERS PROGRAM BY AN INPUT OR AN OUTPUT UUO\r
+                               ;        WORD 2:   BYTE POINTER TO CURRENT ITEM.\r
+                               ;        WORD 3:   POSITIVE ITEM COUNT (NO. OF ITEMS LEFT ON\r
+                               ;                  INPUT, NO. OF FREE ITEMS TO GO ON OUTPUT).\r
+\r
+                               ;EACH BUFFER IN THE RING HAS FOLLOWING FORMAT (AS THE USER SEES IT)\r
+\r
+                               ;        WORD 1:   RESERVED FOR BLOCK NUMBER FOR FIXED ADDRESS DEVIC\r
+                               ;        WORD 2:   BIT 0=USE BIT FOR THIS BUFFER\r
+                               ;                  BIT 1-17=NO. OF WORDS WHICH FOLLOW (LENGTH OF BUF\r
+                               ;                  BIT 18-35=ADDRESS OF SECOND WORD OF NEXT BUFFER I\r
+                               ;        WORD 3:   LH=LINK TO NEXT BLOCK (SET BY MONITOR FOR DECTAB\r
+                               ;                  RH=NO. OF WORDS OF DATA WHICH FOLLOW (USUALLY\r
+                               ;                  SET BY EXEC EXCEPT TO COMPUTE WORD COUNT\r
+                               ;                  THAT HE WANTS TO COMPUTE WORD COUNT\r
+                               ;                  HIMSELF INSTEAD OF HAVING THE MONITOR DO IT\r
+                               ;                  USING THE BYTE POINTER IN THE 3 WORD HEADER).\r
+\r
+\r
+\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS  MACRO 10 05:51 24-APR-78 PAGE 2\r
+IOCONT MAC     24-APR-78 23:08         8-9-95\r
+\r
+\r
+                               ,H. R. MORSE      2/21/65\r
+                               ,CALLING SEQUENCE\r
+                               ,         CLOSE D,\r
+                               ,         EXIT                ALWAYS RETURNS HERE\r
+                               , THIS ROUTINE PROCESSES THE CLOSE UUO AND DETERMINES WHETHER THE\r
+                               ,OUTPUT ROUTINE SHOULD BE CALLED IF OUTPUT WERE ACTIVE, CLEARS\r
+                               ,THE INPUT BUFFER AREA IF INPUT WERE ACTIVE, AND CLEARS THE\r
+                               ,ITEM COUNTS OF BOTH INPUT AND OUTPUT HEADERS SERVING TO BOTH\r
+                               ,TERMINATE THE USE OF THE DEVICE AND SET THE I/O ROUTINES TO\r
+                               ,ACCEPT ANOTHER INPUT OR OUTPUT COMMAND IN A CLEAR STATE.\r
+                               ,IN THE CASE OF OUTPUT DEVICES. THE CLOSE ROUTINE OF THE DEVICE HANDL\r
+                               ,ING ROUTINE IS CALLED IN CASE ANY SPECIAL HANDLING IS REQUIRED.\r
+                               ,MONITOR INTERFACE\r
+                               ,         STORAGE: 30\r
+                               ,         ROUTINES CALLED:   DCL, WAIT1, UXIT\r
+                               ,         SYMBOLS SET/USED:\r
+                               ,             ACCUMULATORS:       DAT    S/U    PROG U\r
+                               ,                                 DEVDAT U      TAC  S/U\r
+                               ,                                 IOS    S/U    TAC1 S/U\r
+                               ,                                  PDP   U\r
+                               ,             DEVICE DATA BLOCK:   DEVBUF  U\r
+                               ,                                  DEVIOS  S/U\r
+                               ,                                  DEVSER  U\r
+                               ,             IO STATUS WORD:      IOACT   S    IODTER S\r
+                               ,                                  IOBEG   S    IOEND  S\r
+                               ,                                  IOBKTL  2    IOFST  S\r
+                               ,                                  IODEND  S    IOIMPM S\r
+                               ,                                  IODERR  S    IOSTRT S\r
+                               ,                                  IODISC  S    IOW    S\r
+                               ,             JOB BUFFER AREA:     IOUSE   S    \r
+                               ,                                  JBFCTR  S\r
+\r
+\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS  MACRO 10 05:51 24-APR-78 PAGE 3\r
+IOCONT MAC     24-APR-78 23:08         8-9-95\r
+\r
+\r
+\r
+                               INTERNAL CLOSE1\r
+\r
+       000000' 663300  002000  CLOSE1:   TLOE DEVDAT,CLOSB     ;HAS A CLOSE ALREADY BEEN DONE?\r
+       000001' 254000  000000*           JRST UXIT             ;YES, FOR THIS CHANNEL\r
+       000002' 135040  000000*           LDB TAC,PUUOAC        ;USER DEVICE CHANNEL NO.\r
+       000003' 502301  000000*           HLLM DEVDAT,USRJDA(TAC)\r
+       000004' 261140  000005            PUSH PDP,DAT\r
+       000005' 135040  000000*           LDB TAC,PIOMOD\r
+       000006' 305040  000016            CAIGE TAC,DR\r
+       000007' 254000  000013'           JRST UCLS4\r
+       000010' 200046  000003            MOVE TAC,DEVSER(DEVDAT)\r
+       000011' 260141  000001            PUSHJ PDP,DCL(TAC)\r
+       000012' 254000  000060'           JRST UCLS3\r
+       000013' 260140  000000* UCLS4:    PUSHJ PDP,WAIT1;      WAIT UNTIL DEVICE IS INACTIVE.\r
+       000014' 606600  000002            TRNN UUO,CLSIN        ;SUPPRESS INPUT?\r
+       000015' 607300  200000            TLNN DEVDAT,IBUFB     ;NO, WAS INPUT BUFFER SPECIFIED?\r
+       000016' 254000  000041'           JRST UCLS2                                ;NO\r
+       000017' 550106  000006            HRRZ TAC1,DEVBUF(DEVDAT)\r
+       000020' 505100  000007            HRLI TAC1,PROG\r
+       000021' 550260  000002            HRRZ DAT,@TAC1        ;FIRST WORD OF 3 WORD BUFFER HEADER\r
+       000022' 540120  000002            HRR TAC1,@TAC1        ;REMEMBER CURRENT BUFFER IN TAC1\r
+       000023' 515040  400000            HRLZI TAC,IOUSE       ;USER BOTH FOR HEADER AND EACH BUFFER\r
+       000024' 322240  000034'           JUMPE DAT,UCLS1       ;HAS A RING BEEN SETUP?(NO IF 0)\r
+       000025' 505240  000007            HRLI DAT,PROG         ;YES\r
+       000026' 540260  000005  UCLS0:    HRR DAT,@DAT;         ADVANCE CURRENT INPUT BUFFER ADDRESS\r
+                                         ADRCHK DAT  ;IS ADDRESS OF?\r
+       000027' 260140  000000*         PUSHJ PDP,ADRCK\r
+       000030' 550040  000005          HRRZ TAC,DAT  \r
+       000031' 412060  000005            ANDCAM TAC,@DAT       ;YES, CLEAR USE BIT.\r
+       000032' 312100  000005            CAME TAC1,DAT;        DONE?\r
+       000033' 254000  000026'           JRST UCLS0\r
+       000034' 505240  000007  UCLS1:    HRLI DAT,PROG\r
+       000035' 540246  000006            HRR DAT,DEVBUF(DEVDAT)\r
+       000036' 436060  000005            IORM TAC,@DAT         ;FLAG AS VIRGIN BUFFER IN 3 WORD HEADER\r
+       000037' 271240  000002            ADDI DAT,2;           JBFCTR:=0\r
+       000040' 402020  000005            SETZM @DAT            ;CLEAR INPUT ITEM COUNT.\r
+       000041' 606600  000001  UCLS2:    TRNN UUO,CLSOUT       ;SUPPRESS OUTPUT?\r
+       000042' 607300  100000            TLNN DEVDAT,OBUFB     ;NO.WAS OUPUT BUFFER SPECIFIED?\r
+       000043' 254000  000060'           JRST UCLS3                    ;NO\r
+       000044' 544246  000006            HLR DAT, DEVBUF(DEVDAT)       ;VIRGIN OUBPUT BUFFER?\r
+       000045' 505240  000007            HRLI DAT, PROG\r
+       000046' 337020  000005            SKIPG @DAT\r
+       000047' 254000  000060'           JRST UCLS3            ;YES\r
+       000050' 200046  000003            MOVE TAC,DEVSER(DEVDAT)\r
+       000051' 260141  000001            PUSHJ PDP,DCL(TAC); CLOSE OUTPUT BUFFER\r
+       000052' 544246  000006            HLR DAT,DEVBUF(DEVDAT)\r
+       000053' 505240  000007            HRLI DAT,PROG\r
+       000054' 515040  400000            HRLZI TAC,IOUSE\r
+       000055' 436060  000005            IORM TAC,@DAT\r
+       000056' 271240  000002            ADDI DAT,2\r
+       000057' 402020  000005            SETZM @DAT;           JBFCTR:=0\r
+\r
+\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS  MACRO 10 05:51 24-APR-78 PAGE 3-1\r
+IOCONT MAC     24-APR-78 23:08         8-9-95\r
+\r
+       000060' 260140  000013* UCLS3:    PUSHJ PDP,WAIT1\r
+       000061' 262140  000005            POP PDP,DAT\r
+       000062' 630000  000471'           TDZ IOS,[XWD IOEND,IODEND]\r
+       000063' 661000  000002            TLO IOS,IOBEG\r
+       000064' 202006  000002            MOVEM IOS,DEVIOS(DEVDAT);     IODISC:=0\r
+       000065' 254000  000001*           JRST UXIT;            EXIT THIS UUO\r
+\r
+\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS  MACRO 10 05:51 24-APR-78 PAGE 4\r
+IOCONT MAC     24-APR-78 23:08         8-9-95\r
+\r
+\r
+\r
+                               ,DEC 06 00 EX UUO L PT PRE 02 INBUF,OUTBUF\r
+                               ,H. R. MORSE        64-12-26\r
+                               ,CALLING SEQUENCE\r
+                               ,         INBUF D,N\r
+                               ,         EXIT                RETURNS HERE IF MEMORY NOT EXCEEDED\r
+                               ,CALLING SEQUENCE\r
+                               ,         OUTBUF D,N\r
+                               ,         EXIT                RETURNS HERE IF MEMORY NOT EXCEEDED\r
+                               , SETS UP AN N BUFFER RING FOLLOWING THE USERS PROGRAM FOR DEVICE\r
+                               , D AND INITIALIZES THE JOB BUFFER AREA HEADER:\r
+                               ,         JBFADR0:=1,         JBFADR 1-17:=0\r
+                               ,         JBFADR 18-35:=ADDRESS OF FIRST BUFFER IN RING\r
+                               ,INPUT SETS DEVIAD:=ADDRESS OF FIRST BUFFER IN RING\r
+                               ,OUTPUT SET DEVOAD:=ADDRESS OF FIRST BUFFER IN RING\r
+                               ,BUFPNT IS RESTORED.\r
+                               ,MONITOR INTERFACE\r
+                               ,         STORAGE:13\r
+                               ,         ROUTINES CALLED: BUFCLC,  UXIT\r
+                               ,         SYMBOLS SET/USED:\r
+                               ,             ACCUMULATORS:   BUFPNT  S/U               PROG U\r
+                               ,                             DEVDAT  U                 TAC  S/U\r
+                               ,                             PDP     U                 TAC1 S/U\r
+                               ,             DEVICE DATA BLOCK:        DEVBUF  U\r
+                               ,                             DEVIAD  S\r
+                               ,                             DEVOAD  S\r
+                               ,             JOB BUFFER AREA:          JBFADR  S\r
+\r
+\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS  MACRO 10 05:51 24-APR-78 PAGE 5\r
+IOCONT MAC     24-APR-78 23:08         8-9-95\r
+\r
+\r
+\r
+                                       INTERN UINBF, UOUTBF\r
+\r
+       000066' 261140  000012  UOUTBF:   PUSH PDP,BUFPNT;      SAVE BUFPNT ON STACK\r
+       000067' 260140  000000*           PUSHJ PDP,BUFCLC;     SET UP BUFFER RIGH\r
+       000070' 544046  000006            HLR TAC,DEVBUF(DEVDAT);TAC:=OUTPUT BUFFER AREA HEADER ADDRE\r
+       000071' 542506  000010            HRRM BUFPNT,DEVOAD(DEVDAT);DEVOAD:=ADDRESS OF FIRST BUFFER\r
+                               ,                                       IN RING\r
+       000072' 505040  000007  UOBF1:    HRLI TAC,PROG;        RELOCATE BUFFER AREA HEADER ADDRESS\r
+       000073' 202520  000001            MOVEM BUFPNT,@TAC;    JBFADR:=IOUSE,ADDRESS OF FIRST BUFFER\r
+                               ,                                       IN RING\r
+       000074' 262140  000012            POP PDP,BUFPNT;       RESTORE BUFPNT FROM STACK\r
+       000075' 254000  000065*           JRST UXIT;            EXIT THIS UUO\r
+       000076' 261140  000012  UINBF:    PUSH PDP,BUFPNT;      SAVE BUFPNT ON STACK\r
+       000077' 260140  000067*           PUSHJ PDP,BUFCLC;     SET UP BUFFER RING\r
+       000100' 542506  000007            HRRM BUFPNT,DEVIAD(DEVDAT); DEVIAD:=ADDRESS OF FIRST BUFFER\r
+                               ,                                       IN RING\r
+       000101' 540046  000006            HRR TAC,DEVBUF(DEVDAT); TAC:=INPUT BUFFER AREA HEADER ADDRE\r
+       000102' 254000  000072'           JRST UOBF1\r
+\r
+\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS  MACRO 10 05:51 24-APR-78 PAGE 6\r
+IOCONT MAC     24-APR-78 23:08         8-9-95\r
+\r
+\r
+\r
+                               ,DEC 06 00 EX UUO L PT PRE 03 INIT\r
+                               ,H. R. MORSE AND D. A. WITCRAFT          2/21/65\r
+                               ,CALLING SEQUENCE\r
+                               ,         INIT D,MODUS          D=JOB DEVICE CHANNEL\r
+                               ,                               MODUS=IORDEL,IOCON,IOWC,MODE.\r
+                               ,         SIXBIT/NAME/          DEVICE NAME\r
+                               ,         XWD OBUF,IBUF         BUFFER AREA HEADER ADDRESS\r
+                               ,         EXIT1                 DEVICE NOT AVAILABLE\r
+                               ,         EXIT2                 DEVICE PROPERLY AVAILABLE\r
+                               ,THE LEFT HALF OF NAME CONTAINS THE THREE LETTER DEVICE MNEMONIC,\r
+                               ,   THE RIGHT HALF IS EITHER ZOER (SYSTEM WILL ASSIGN AN ARBITRARY\r
+                               ,   UNIT) OR NON-ZERO TO REQUEST A SPECIFIC UNIT (LEFT JUSTIFIED).\r
+                               ,IF THE SELECTED DEVICE IS NOT AVAILABLE. CONTROL RETURNS TO EXIT1.\r
+                               ,OTHERWISE, THE DEVICE IS ASSIGNED TO THE USER AND ATTACHED TO HIS\r
+                               ,CHANNEL D.  THE DEVICE IS INITIALIZED IN THE FOLLOWING MANNER AFTER\r
+                               ,IOACT IS ZERO:\r
+                               ,         IOBEG:=1\r
+                               ,         DATA MODE:=BITS 32-35 OF AC UUO\r
+                               ,         IOCON:=BIT 31 OF AC UUO\r
+                               ,         IOWC:=BIT 40 OF AC UUO\r
+                               ,         IORDEL:=BIT 29 OF AC UUO\r
+                               ,         IOACT:=IODEND:=IOBKTL:=IODTER:=IODERR:=IOIMPM:=0\r
+                               ,         JBFADR:=JBFCTR:=0 FOR THE SPECIFIED BUFFERS.\r
+                               ,         DEVBUF:=OBUF,IBUF\r
+                               ,MONITOR INTERFACE\r
+                               ,         STORAGE:  20\r
+                               ,         ROUTINES CALLED:      UINTQ, ASSIGN(UASG1),USEL,UINITZ,UXIT\r
+                               ,         SYMBOLS SET/USED:\r
+                               ,             ACCUMULATORS:     DEVDAT U\r
+                               ,                               PDP    U        TAC  U\r
+                               ,                               PROG   U        TAC1 S/U\r
+                               ,             DEVICE DATA BLOCK:         DEVBUF S\r
+\r
+\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS  MACRO 10 05:51 24-APR-78 PAGE 7\r
+IOCONT MAC     24-APR-78 23:08         8-9-95\r
+\r
+\r
+\r
+                                         INTERN UINIT,UINIT1\r
+       000103' 135040  000002* UINIT:    LDB TAC,PUUOAC        ;USER DEVICE CHANNEL NO.\r
+       000104' 332301  000003*           SKIPE DEVDAT,USRJDA(TAC)        ;IS A DEVICE ALREADY HERE?\r
+       000105' 260140  000426'           PUSHJ PDP,RELEA0      ;YES, RELEASE IT\r
+       000106' 200600  000040            MOVE UUO,40           ;RESTORE AC UUO FROM LOC 40\r
+       000107' 260140  000000*           PUSHJ PDP,UINTQ       ;GET SIXBIT DEVICE NAME FROM USER\r
+       000110' 350003  000000            AOS (PDP)\r
+       000111' 200200  000000* UINIT1:   MOVE ITEM,JOB         ;CALLED BY SAVGET\r
+       000112' 260140  000000*           PUSHJ PDP,ASSIN;      TRY TO ASSIGN DEVICE\r
+       000113' 254000  000000*           JRST CUXIT1;          NOT AVAILABLE\r
+       000114' 135040  000103*           LDB TAC,PUUOAC\r
+       000115' 552301  000104*           HRRZM DEVDAT,USRJDA(TAC)      ;STORE DDB ADR IN DEVICE TABL\r
+       000116' 515040  000002            HRLZI TAC,IOBEG\r
+       000117' 202046  000002            MOVEM TAC,DEVIOS(DEVDAT)\r
+       000120' 260140  000000*           PUSHJ PDP,SETIOS      ;SET DDB IOS STATUS WORD\r
+                                                               ;FROM RT. HALF OF UUO\r
+       000121' 260140  000107*           PUSHJ PDP,UINTQ\r
+       000122' 505300  400000            HRLI DEVDAT, INITB    ;SET INIT UUO BIT\r
+       000123' 607040  777777            TLNN TAC,-1   \r
+       000124' 254000  000127'           JRST UINIT4           ;OUTPUT NOT SPECIFIED\r
+       000125' 502046  000006            HLLM TAC,DEVBUF(DEVDAT)\r
+       000126' 661300  100000            TLO DEVDAT,OBUFB      ;SET OUTPUT BUFFER SPECIFIED BIT\r
+       000127' 606040  777777  UINIT4:   TRNN TAC,-1;          IS IBUF SPECIFIED?\r
+       000130' 254000  000133'           JRST UINIT5           ;INPUT BUF NOT SPECIFIED\r
+       000131' 542046  000006            HRRM TAC,DEVBUF(DEVDAT);      DEVBUF 18-35:=IBUF\r
+       000132' 661300  200000            TLO DEVDAT,IBUFB      ;SET INPUT BUFFER SPECIFIED BIT\r
+       000133' 550100  000001  UINIT5:   HRRZ TAC1,TAC;        TAC1:=PROG,IBUF\r
+       000134' 260140  000142'           PUSHJ PDP,UINITZ;     JBFADR:=JBFCTR:=0 FOR IBUF\r
+       000135' 544100  000001            HLR TAC1,TAC;         TAC1:=PROG,OBUF\r
+       000136' 260140  000142'           PUSHJ PDP,UINITZ;     JBFADR:=JBFCTR:=0 FOR OBUF\r
+       000137' 135040  000114*           LDB TAC,PUUOAC        ;STORE UUO BITS FOR THIS CHANNEL\r
+       000140' 502301  000115*           HLLM DEVDAT,USRJDA(TAC)\r
+       000141' 254000  000000*           JRST CUXIT2\r
+\r
+\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS  MACRO 10 05:51 24-APR-78 PAGE 8\r
+IOCONT MAC     24-APR-78 23:08         8-9-95\r
+\r
+\r
+\r
+                               ,DEC 06 00 EX COM L PT PRE 03 UINITZ\r
+                               ,H. R. MORSE        64-12-26\r
+                               ,CALLING SEQUENCE\r
+                               ,         PUSHJ PDP,UINITZ\r
+                               ,         EXIT                  RETURNS HERE IF MEMORY NOT EXCEEDED.\r
+                               ,SETS JBFADR:=JBFCTR:=0 FOR THE BUFFER AREA HEADER WHOSE ADDRESS\r
+                               ,IS IN AC TAC1.  ALSO,JBFPTR 0-5:=JBFPTR 12-17:=0,JBFPTR 6-11:=BYTE S\r
+                               ,MONITOR INTERFACE\r
+                               ,         STORAGE:15\r
+                               ,         ROUTINES CALLED:      ADRCK, SETBYT\r
+                               ,         SYMBOLS SET/USED:\r
+                               ,             ACCUMULATORS:     PDP   U                 TAC    S/U\r
+                               ,                       TAC1  S/U\r
+                               ,            JOB BUFFER AREA:  JBFADR S\r
+                               ,                                       JBFCTR S\r
+                               ,                                       JBFPTR S\r
+                                         INTERN UINITZ\r
+\r
+       000142' 606100  777777  UINITZ:   TRNN TAC1,-1;         IS BUFFER SPECIFIED?\r
+       000143' 263140  000000            POPJ PDP,;RETURN\r
+       000144' 505100  000007            HRLI TAC1,PROG\r
+       000145' 260140  000027*           PUSHJ PDP,ADRCK       ;CHECK 3 WORD BUFFER HEADER\r
+       000146' 551042  000002            HRRZI TAC,2(TAC1)\r
+       000147' 402020  000002            SETZM @TAC1;          JBFADR:=0\r
+       000150' 350000  000002            AOS TAC1\r
+       000151' 261140  000001            PUSH PDP,TAC\r
+       000152' 261140  000002            PUSH PDP,TAC1\r
+       000153' 350000  000002            AOS TAC1\r
+       000154' 402020  000002            SETZM @TAC1;          JBFCTR:=0\r
+       000155' 260140  000000*           PUSHJ PDP,SETBYT;     JBFPTR 6-11:=BYTE SIZE\r
+       000156' 621040  770077            TLZ TAC,770077\r
+       000157' 262140  000002            POP PDP,TAC1\r
+       000160' 502060  000002            HLLM TAC,@TAC1\r
+       000161' 262140  000001            POP PDP,TAC\r
+       000162' 263140  000000            POPJ PDP,;            RETURN\r
+\r
+\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS  MACRO 10 05:51 24-APR-78 PAGE 9\r
+IOCONT MAC     24-APR-78 23:08         8-9-95\r
+\r
+\r
+\r
+                               INTERNAL IN\r
+       000163' 603000  000020  IN:       TLNE IOS,IO           ;IS THIS DEVICE ALREADY DOING OUTPUT!\r
+       000164' 260140  000060*           PUSHJ PDP,WAIT1       ;YES,WAIT TILL IT IS FINISHED\r
+       000165' 135040  000137*           LDB TAC,PUUOAC        ;SET BIT THAT SAYS AN INPUT UUO HAS OCC\r
+       000166' 661300  010000            TLO DEVDAT,INPB       ;FOR THIS DEVICE\r
+       000167' 502301  000140*           HLLM DEVDAT,USRJDA(TAC)         ;IN LH OF CURRENT JOB DEVICE\r
+       000170' 135040  000005*           LDB TAC,PIOMOD        ;IO MODE\r
+       000171' 301040  000016            CAIL TAC,DR           ;IS THE IO MODE DUMP MODE?\r
+       000172' 254000  000271'           JRST INDMP            ;YES\r
+       000173' 540246  000006  IN1:      HRR JBUF,DEVBUF(DEVDAT)         ;NO, GET ADDRESS OF R WORD BU\r
+       000174' 515040  400000            HRLZI TAC,IOUSE       ;BUFFER INUSE BIT\r
+       000175' 505240  000007            HRLI JBUF,PROG        ;SET INDEX FIELD FOR RELOCATION USING A\r
+       000176' 260140  000145*           PUSHJ PDP,ADRCK       ;CHECK BUFFER HEADER\r
+       000177' 551045  000002            HRRZI TAC,2(JBUF)     ;END ADDRESS OF 3 WORD HEADER\r
+       000200' 200120  000005            MOVE TAC1,@JBUF       ;GET WORD 1 OF 3 WORD BUFFER HEADER (PO\r
+       000201' 505100  000007            HRLI TAC1,PROG        ;SET INDEX FIELD COR RELOCATION USING A\r
+       000202' 337020  000005            SKIPG @JBUF           ;HAS A BUFFER RING BEEN SET UP (RH NON-\r
+                                                               ;WHICH HAS BEEN REFERENCED BY PREVIOUS\r
+       000203' 254000  000256'           JRST INPUTF           ;NO, GO SET UP BUFFER IF NECESSARY AND\r
+                                         ADRCHK TAC1           ;YES, CHECK ADDRESS TO SEE IF IN BOUNDS\r
+       000204' 260140  000176* PUSHJ PDP,ADRCK\r
+       000205' 550040  000002          HRRZ TAC,TAC1           \r
+       000206' 413060  000002            ANDCAB TAC,@TAC1      ;FLAG THIS BUFFER AS BEING FILLED (USE\r
+                                                               ;AND GET POINTER TO NEXT BUFFER\r
+       000207' 542060  000005            HRRM TAC,@JBUF        ;SET WORD 1 IN 3 WORD HEADER TO NEXT BU\r
+                                         ADRCHK TAC ;AND CHECK ITS ADDRESS TO SEE IF IN BOUNDS\r
+       000210' 260140  000204* PUSHJ PDP,ADRCK\r
+       000211' 550040  000001          HRRZ TAC,TAC \r
+       000212' 200006  000002  INPUT0:   MOVE IOS,DEVIOS(DEVDAT)       ;GET IO STATUS WORD\r
+       000213' 606000  010000            TRNN IOS,IOACT        ;IS THE DEVICE ALREADY ACTIVE (FILLING\r
+       000214' 254000  000220'           JRST INPT0B           ;NO.\r
+       000215' 606000  000040            TRNN IOS,IOCON        ;DOES THE USER WANT TO STOP AFTER EVERY\r
+       000216' 254000  000224'           JRST INPT0C           ;NO. HE WANTS NORMAL CONTINUOUS OVERLAP\r
+       000217' 260140  000000*           PUSHJ PDP,WSYNC       ;YES, WAIT TILL DEVICE FINISHES WITH ON\r
+       000220' 505040  000007  INPT0B:   HRLI TAC,PROG         ;SET FOR RELOCATION\r
+       000221' 540060  000001            HRR TAC,@TAC          ;GET POINTER 1 BLOCK AHEAD OF NEXT BBUF\r
+       000222' 331020  000001            SKIPL @TAC\r
+       000223' 260140  000276'           PUSHJ PDP,CALIN\r
+       000224' 540120  000002  INPT0C:   HRR TAC1,@TAC1\r
+       000225' 335020  000002  INPT0A:   SKIPGE @TAC1\r
+       000226' 254000  000236'           JRST INPUT2\r
+       000227' 260140  000217* INPUT1:   PUSHJ PDP,WSYNC\r
+       000230' 335020  000002            SKIPGE @TAC1\r
+       000231' 254000  000236'           JRST INPUT2\r
+       000232' 612000  000472'           TDNE IOS,[XWD IOEND,IODERR]\r
+       000233' 254000  000250'           JRST INEOF\r
+       000234' 200006  000002            MOVE IOS,DEVIOS(DEVDAT)\r
+       000235' 254000  000227'           JRST INPUT1\r
+\r
+       000236' 271100  000001  INPUT2:   ADDI TAC1,1\r
+       000237' 550220  000002            HRRZ ITEM,@TAC1\r
+\r
+\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS  MACRO 10 05:51 24-APR-78 PAGE 9-1\r
+IOCONT MAC     24-APR-78 23:08         8-9-95\r
+\r
+       000240' 275100  000001            SUBI TAC1,1\r
+       000241' 261140  000004            PUSH PDP,ITEM         ;SAVE WORD COUNT AS STORED BY IO SERVIC\r
+       000242' 260140  000000*           PUSHJ PDP,IOSETC\r
+       000243' 262140  000004            POP PDP,ITEM\r
+       000244' 135040  000170*           LDB TAC,PIOMOD        ;GET DEVICE DATA MODE\r
+       000245' 306040  000010            CAIN TAC, I           ;IMAGE MODE?\r
+       000246' 202220  000005            MOVEM ITEM,@JBUF      ;YES, STORE WORD COUNT NOT ITEM COUNT\r
+       000247' 254000  000075*           JRST UXIT\r
+\r
+\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS  MACRO 10 05:51 24-APR-78 PAGE 10\r
+IOCONT MAC     24-APR-78 23:08         8-9-95\r
+\r
+\r
+\r
+       000250' 551000  020000  INEOF:    HRRZI IOS,IODEND\r
+       000251' 436006  000002            IORM IOS,DEVIOS(DEVDAT)\r
+       000252' 254000  000247*           JRST UXIT\r
+\r
+       000253' 540100  000014  INPUTA:   HRR TAC1,UUO\r
+       000254' 412060  000002            ANDCAM TAC,@TAC1\r
+       000255' 254000  000212'           JRST INPUT0\r
+\r
+                               ;HERE ON FIRST INPUT AFTER INIT, INIT & LOOKUP, OR INIT & LOOKUP & IN\r
+       000256' 412060  000005  INPUTF:   ANDCAM TAC,@JBUF      ;MARK THAT BUFFERS HAVE BEEN REFERENCED\r
+       000257' 540060  000005            HRR TAC,@JBUF         ;PICKUP ADDRESS OF FIRST BUFFERE IN RING\r
+       000260' 542046  000007            HRRM TAC,DEVIAD(DEVDAT)               ;SET CURRENT RING BUFFER ADDR\r
+                                                                               ;IN DEVICE DATA BLOCK\r
+       000261' 336020  000005            SKIPN @JBUF           ;HAS A RING BEEN SET UP YET?\r
+       000262' 254000  000265'           JRST INPUT3           ;NO, GO SET UP A 2 BUFFER RING\r
+       000263' 260140  000276'           PUSHJ PDP,CALIN       ;YES, GO START TO SERVICE ROUTINE\r
+                                                                       ;FILLING BUFFER\r
+       000264' 254000  000225'           JRST INPT0A\r
+       000265' 541600  000002  INPUT3:   HRRI UUO,2            ;BUFFERS NOT SETUP YET.\r
+                                                                       ;SET UP 2\r
+       000266' 260140  000076'           PUSHJ PDP, UINBF\r
+       000267' 513000  000014            HLLZS UUO             ;CLEAR RIGHT HALF\r
+       000270' 254000  000173'           JRST IN1\r
+\r
+       000271' 260140  000227* INDMP:    PUSHJ PDP,WSYNC\r
+       000272' 200046  000003            MOVE TAC,DEVSER(DEVDAT)\r
+       000273' 260141  000007            PUSHJ PDP,DDI(TAC)\r
+       000274' 260140  000164*           PUSHJ PDP,WAIT1\r
+       000275' 254000  000252*           JRST UXIT\r
+\r
+\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS  MACRO 10 05:51 24-APR-78 PAGE 11\r
+IOCONT MAC     24-APR-78 23:08         8-9-95\r
+\r
+\r
+\r
+\r
+\r
+       000276' 603000  000040  CALIN:    TLNE IOS,IOEND\r
+       000277' 263140  000000            POPJ PDP,\r
+       000300' 260140  000271*           PUSHJ PDP,WSYNC\r
+       000301' 261140  000002            PUSH PDP,TAC1\r
+       000302' 200046  000003            MOVE TAC,DEVSER(DEVDAT)\r
+       000303' 260141  000003            PUSHJ PDP,DIN(TAC)\r
+       000304' 262140  000002            POP PDP,TAC1\r
+       000305' 263140  000000            POPJ PDP,\r
+\r
+\r
+\r
+\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS  MACRO 10 05:51 24-APR-78 PAGE 12\r
+IOCONT MAC     24-APR-78 23:08         8-9-95\r
+\r
+\r
+\r
+                               ,DEC 06 00 EX COM  L PT PRE 03 OUTPUT\r
+                               ,H.R. MORSE    2/21/65\r
+                               ,CALLING SEQUENCE\r
+                               ,       OUTPUT D,\r
+                               ,       EXIT\r
+                               ,OR\r
+                               ,       OUTPUT D, ADR\r
+                               ,       EXIT\r
+\r
+                               ,IF INPUT IS ACTIVE, WAIT FOR IT TO COMPLETE.\r
+                               ,IF DUMP MODE WAS SELECTED BY THE LAST INIT UUO., THEN A CHECK IS MADE\r
+                               ,   TO SEE IF DUMP FILES ARE LEGAL FOR THIS DEVICE.  IF DUMP FILES AR\r
+                               ,   NOT LEGAL. (IORET=0) AN ERROR MESSAGE IS PRINTED ON THE TTY AND\r
+                               ,   CONTROL IS TRANSFERRED T THE COMMAND INPUT ROUTINE.\r
+                               ,   OTHERWISE,THE PROGRAM WAITS UNTIL THE DEVICE IS INACTIVE AND THEN\r
+                               ,   WRITES THE DUMPFILE AND RETURNS CONTROL TO THE USERS PROGRAM\r
+                               ,IF THE MODE IS NOT DUMP, THEN\r
+                               ,1) IF ADR IS NOT ZERO, WAIT FOR DEVICE TO BECOME INACTIVE THEN SET T\r
+                               ,   CURRENT BUFFER ADDRESS EQUAL TO ADR AND AN INDICATOR (JBFADR0)\r
+                               ,   SPECIFYING THAT THIS BUFFER RING HAS NEVER BEEN REFERENCED FROM T\r
+                               ,   USERS PROGRAM BY AN INPUT OR AN OUTPUT UUO.  OTHERWISE, GO TO\r
+                               ,   2) DIRECTLY.\r
+\r
+                               ,2) IF THE BUFFER RING HAS NEVER BEEN REFERENCED (JBFADR0=1), THE\r
+                               ,   BUFFER IS CLEARED. IOUSE SET TO ZERO AND\r
+                               ,      IF THE CURRENT BUFFER ADDRESS IS ZERO, A TWO BUFFER RING IS SE\r
+                               ,      THE GO TO 8\r
+                               ,\r
+                               ,3) IF THE BUFFER RING HAS BEEN REFERENCED (JBFADR0=0   ,THEN A C\r
+                               ,   MADE TO DETERMINE IF THE WORD COUNT IS TO BE COMPUTED.\r
+                               ,       IF THE WORD COUNT IS TO BE COMPUTED (IOWC=0), IT IS SET EQUAL\r
+                               ,       TO THE ADDRESS FOR THE LAST DATA WORD MINUS THE ADDRESS OF THE\r
+                               ,       BUFFER MINUS ONE,\r
+\r
+                               ,4) IOUSE IS SET TO ONE. INDICATING THAT THE BUFFER IS FULL OR BEING\r
+                               ,   EMPTIED, AND THE CURRENT BUFFER ADDRESS IS ADVANCED.\r
+\r
+                               ,5) IF THE DEVICE IS NOT ACTIVE (IOACT=0), OUTPUT IS STARTED.\r
+                               ,6) IF THE CURRENT BUFFER IS FULL OR BEING EMPTIED (IOUSE=1),\r
+                               ,   THE PROGRAM WAITS UNTIL THE DEVICE IS INACTIVE\r
+                               ,7) THE CURRENT BUFFER IS CLEARED.\r
+                               ,8) THE ITEM POINTER IS INITIATED TO THE CURRENT BUFFER ADDRESS+1\r
+                               ,   AND THE ITEM COUNT IS SET TO THE PRODUCT OF THE BUFFER SIZE\r
+                               ,   MINUS ONE AND THE INTEGER PART OF 36/BYTE SIZE.\r
+                               ,9) RETURN TO THE USERS PROGRAM\r
+\r
+\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS  MACRO 10 05:51 24-APR-78 PAGE 13\r
+IOCONT MAC     24-APR-78 23:08         8-9-95\r
+\r
+\r
+\r
+                               ,MONITOR INTERFACE\r
+                               ,     STORAGE:  54\r
+                               ,     ROUTINE CALLED:  ADRCK, BUFCLR, CALOUT, INOUT, IOSETC, OUTA,\r
+                               ,                       OUTBUF, UXIT, WSYNC,\r
+                               ,     SYMBOLS SET/USED:\r
+                               ,        ACCUMULATORS:  DEVDAT U        PROG U\r
+                               ,                       IOS U           TAC S/U\r
+                               ,                       ITEM S/U        TAC1 S/U\r
+                               ,                       JBUF S/U        UUO S\r
+                               ,                       PDP U\r
+                               ,       DEVICE DATA BLOCK: DEVBUF U     DEVOAD S\r
+                               ,       IO STATUS WORD: IOACT U\r
+                               ,                       IOWC U\r
+                               ,       JOB BUFFER AREA:        JBADR S/U\r
+                               ,                        JBFCTR S\r
+                               ,                        JBPPTR S/U\r
+                               ,                        BUFFER SIZE U\r
+                               ,                        IOUSE S/U\r
+                               ,                        WORD COUNT S\r
+\r
+\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS  MACRO 10 05:51 24-APR-78 PAGE 14\r
+IOCONT MAC     24-APR-78 23:08         8-9-95\r
+\r
+\r
+\r
+\r
+                                         INTERN OUT\r
+\r
+       000306' 607000  000020  OUT:      TLNN IOS,IO   ;IS THIS DEVICE ALREADY DOING INPUT?\r
+       000307' 260140  000274*           PUSHJ PDP,WAIT1       ;YES, WAIT TILL IT BECOMES INACTIVE\r
+       000310' 135040  000165*           LDB TAC,PUUOAC\r
+       000311' 661301  000167*           TLO DEVDAT,OUTPB\r
+                                              HLLM DEVDAT,USRJDA(TAC)\r
+       000312' 135040  000244*           LDB TAC,PIOMOD\r
+       000313' 301040  000016            CAIL TAC,DR\r
+       000314' 254000  000400'           JRST OUTDMP\r
+                                                       PUSHJ PDP,OUTA\r
+       000315' 544246  000006  OUT1:     HLR JBUF,DEVBUF(DEVDAT)\r
+       000316' 260140  000210*           PUSHJ PDP,ADRCK       ;CHECK END OF 3 WORD HEADER\r
+       000317' 551045  000002            HRRZI TAC,2(JBUF)\r
+       000320' 505240  000007            HRLI JBUF,PROG\r
+       000321' 515040  400000            HRLZI TAC, IOUSE\r
+       000322' 337120  000005            SKIPG TAC1, @JBUF             ;HAS THIS BUFFER EVER BEEN\r
+                                                                       ;;REFERENCED?(JBFADR0=0?)\r
+       000323' 254000  000357'           JRST OUTF\r
+       000324' 350000  000005            AOS JBUF\r
+       000325' 550060  000005            HRRZ TAC, @JBUF\r
+       000326' 271100  000001            ADDI TAC1, 1\r
+       000327' 274040  000002            SUB TAC, TAC1\r
+       000330' 505100  000007            HRLI TAC1,PROG\r
+       000331' 602000  000020            TRNE IOS, IOWC                ;COMPUTE WORD COUNT?(IOWC=0?)\r
+       000332' 254000  000336'           JRST OUT2\r
+                                         ADRCHK TAC1           ;PROCEED IF ADDRESS OF WORD COUNT\r
+       000333' 260140  000316* PUSHJ PDP,ADRCK\r
+       000334' 550040  000002          HRRZ TAC,TAC1           \r
+                                                                       ;<PROTECTION ADDRESS\r
+       000335' 542060  000002            HRRM TAC, @TAC1               ;WORD COUNT:=C(JBFPTR18-35)\r
+                                                                       ;            -C(JBFPTR18-35)-\r
+       000336' 275240  000001  OUT2:     SUBI JBUF,1\r
+       000337' 275100  000001            SUBI TAC1,1\r
+       000340' 515040  400000            HRLZI TAC, IOUSE\r
+       000341' 437060  000002            IORB TAC, @TAC1               ;IOUSE:=1\r
+       000342' 260140  000333*           ADRCHK TAC1^PUSHJ PDP,ADRCK\r
+       000343' 550040  000002          HRRZ TAC,TAC1^\r
+       000344' 542060  000005            HRRM TAC,@JBUF                ;ADVANCE CURRENT BUFFER ADDRE\r
+       000345' 200006  000002            MOVE IOS,DEVIOS (DEVDAT)\r
+       000346' 606000  010000            TRNN IOS,IOACT\r
+       000347' 260140  000417'           PUSHJ PDP, CALOUT             ;START OUTPUT\r
+       000350' 544246  000006            HLR JBUF,DEVBUF(DEVDAT)\r
+       000351' 505240  000007            HRLI JBUF,PROG\r
+       000352' 200120  000005            MOVE TAC1,@JBUF\r
+       000353' 505100  000007            HRLI TAC1,PROG\r
+       000354' 337020  000002            SKIPG @TAC1                   ;IOUSE=1?\r
+       000355' 260140  000300*           PUSHJ PDP, WSYNC              ;WAIT FOR DEVICE TO BECOME IN\r
+       000356' 254000  000370'           JRST OUTS\r
+\r
+\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS  MACRO 10 05:51 24-APR-78 PAGE 15\r
+IOCONT MAC     24-APR-78 23:08         8-9-95\r
+\r
+\r
+\r
+       000357' 332120  000005  OUTF:     SKIPE TAC1,@JBUF\r
+       000360' 254000  000365'           JRST OUTF1\r
+       000361' 541600  000002            HRRI UUO,2\r
+       000362' 260140  000066'           PUSHJ PDP,UOUTBF\r
+       000363' 544246  000006            HLR JBUF,DEVBUF(DEVDAT)\r
+       000364' 505240  000007            HRLI JBUF,PROG\r
+       000365' 515040  400000  OUTF1:    HRLZI TAC, IOUSE\r
+       000366' 413060  000005            ANDCAB TAC, @JBUF             ;IOUSE:=0\r
+       000367' 542046  000010            HRRM TAC,DEVOAD(DEVDAT)\r
+       000370' 550060  000005  OUTS:     HRRZ TAC,@JBUF\r
+       000371' 260140  000000*           PUSHJ PDP,BUFCLR\r
+       000372' 540120  000005            HRR TAC1,@JBUF\r
+       000373' 505100  000007            HRLI TAC1,PROG\r
+       000374' 135200  000473'           LDB ITEM,[POINT 17,@TAC1,17]\r
+       000375' 275200  000001            SUBI ITEM,1\r
+       000376' 260140  000242*           PUSHJ PDP,IOSETC      ;JBFPTR18-35:=CURRENT BUFFER\r
+                                                               ;ADDRESS+1\r
+                                                               ;JBFCTR:=(BUFFER SIZE-1)*[36/BYTE\r
+                                                               ;SIZE]\r
+       000377' 254000  000275*           JRST UXIT             ;RETURN TO USERS PROGRAM\r
+\r
+       000400' 260140  000355* OUTDMP:   PUSHJ PDP,WSYNC\r
+       000401' 200046  000003            MOVE TAC,DEVSER(DEVDAT)\r
+       000402' 260141  000006            PUSHJ PDP,DDO(TAC)\r
+       000403' 260140  000307*           PUSHJ PDP,WAIT1\r
+       000404' 254000  000377*           JRST UXIT\r
+\r
+\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS  MACRO 10 05:51 24-APR-78 PAGE 16\r
+IOCONT MAC     24-APR-78 23:08         8-9-95\r
+\r
+\r
+\r
+\r
+                               ,DEC 06 00 EX COM L PT PRE 01 OUTA\r
+                               ,H.R. MORSE     64-12-26\r
+\r
+                               ,CALLING SEQUENCE:\r
+                               ,         PUSHJ PDP,OUTA\r
+                               ,         EXIT                  ALWAYS RETURN HERE\r
+                               ,IF THE ADDRESS FIELD OF AC UUO IS ZERO,EXIT. OTHERWISE,CHECK IOACT.\r
+                               ,IF IOACT=1, WIAT FOR IOACT=0.\r
+                               ,SET JBFADR18-35:=ADDRESS FIELD OF AC UUO. JBFADR0:=1 AND EXIT.\r
+\r
+                               ,MONITOR INTERFACE\r
+                               ,         STORAGE:13\r
+                               ,         ROUTINES CALLED:      WSYNC\r
+                               ,         SYMBOLS SET/USED:\r
+                               ,             ACCUMULATORS:     DEVDAT U\r
+                               ,                               IOS U           PROG U\r
+                               ,                               JBUF S/U        TAC S/U\r
+                               ,         DEVICE DATA BLOCK:    DEVIOS U        DEVBUF U\r
+                               ,         IO STATUS WORD:       IOACT U\r
+                               ,         JOB BUFFER AREA:      IOUSE U\r
+                               ,                               JBFADR S\r
+\r
+                                         INTERN OUTA\r
+       000405' 606600  777777  OUTA:     TRNN UUO, 777777      ;IS BUFFER ADDRESS SPECIFIED?\r
+       000406' 263140  000000            POPJ PDP,             ;NO\r
+       000407' 260140  000403*           PUSHJ PDP,WAIT1\r
+       000410' 544246  000006            HLR JBUF,DEVBUF(DEVDAT)\r
+       000411' 545240  000007            HLRI JBUF,PROG\r
+       000412' 542620  000005            HRRM UUO,@JBUF\r
+       000413' 542606  000010            HRRM UUO,DEVOAD(DEVDAT)\r
+       000414' 515040  400000            HRLZI TAC,IOUSE\r
+       000415' 412060  000005            ANDCAM TAC,@JBUF\r
+       000416' 263140  000000            POPJ PDP,             ;RETURN\r
+\r
+\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS  MACRO 10 05:51 24-APR-78 PAGE 17\r
+IOCONT MAC     24-APR-78 23:08         8-9-95\r
+\r
+\r
+\r
+\r
+                               ,DEC 06 00 EX COM L PT PRE 03 CALOUT\r
+                               ,H.R. MORSE      2/21/65\r
+\r
+                               ,CALLING SEQUENCE\r
+                               ,         PUSHJ PDP,CALOUT\r
+                               ,         EXIT\r
+\r
+                               ,DISPATCH TO DEVICE SERVICE ROUTINE DOU TO INITIATE OUTPUT.\r
+\r
+                               ,MONITOR INTERFACE\r
+                               ,         STORAGE:2\r
+                               ,         SYMBOLS SET/USED:\r
+                               ,             ACCUMULATORS:     DEVDAT U\r
+                               ,                               TAC U\r
+                               ,         DEVICE DATA BLOCK:    DEVSER U\r
+\r
+                                         INTERN CALOUT\r
+       000417' 606000  010000  CALOUT:   TRNN IOS,IOACT\r
+       000420' 254000  000424'           JRST CALOU1\r
+       000421' 606000  000040            TRNN IOS,IOCON\r
+       000422' 263140  000000            POPJ PDP,\r
+       000423' 260140  000400*           PUSHJ PDP,WSYNC\r
+       000424' 200046  000003  CALOU1:   MOVE TAC,DEVSER(DEVDAT)\r
+       000425' 254001  000002            JRST DOU(TAC)\r
+\r
+\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS  MACRO 10 05:51 24-APR-78 PAGE 18\r
+IOCONT MAC     24-APR-78 23:08         8-9-95\r
+\r
+\r
+\r
+\r
+                               ,RELEASE A DEVICE\r
+\r
+                               INTERNAL RELEA1,RELEA2,RELEA3,RELEA5\r
+\r
+       000426' 200006  000002  RELEA0:   MOVE IOS,DEVIOS(DEVDAT)       ;CALLED FROM INIT\r
+       000427'                 RELEA2:RELEA3:\r
+       000427' 620600  777777  RELEA1:   TRZ UUO,-1            ;CLOSE BOTH INPUT AND OUTPUT\r
+       000430' 260140  000000'           PUSHJ PDP,CLOSE1\r
+       000431' 260140  000407*           PUSHJ PDP,WAIT1       ;WAIT FOR DEVICE TO BECOME INACTIVE\r
+       000432' 200046  000003  RELEA5:   MOVE TAC, DEVSER(DEVDAT)      ;RELEASE WITHOUT WAITING\r
+       000433' 260141  000000            PUSHJ PDP, DRL (TAC)\r
+       000434' 135040  000310*           LDB TAC,PUUOAC\r
+       000435' 402001  000311*           SETZM USRJDA(TAC)\r
+       000436' 201040  000017            MOVEI TAC,17          ;IS THE DEVICE ON AONTHER USER CHANNEL?\r
+       000437' 550101  000435* RELEA4:   HRRZ TAC1,USRJDA(TAC)\r
+       000440' 302106  000000            CAIE TAC1,(DEVDAT)\r
+       000441' 365040  000437'           SOJGE TAC,RELEA4\r
+       000442' 325040  000404*           JUMPGE TAC,UXIT       ;EXIT IF ON ANOTHER CHANNEL\r
+       000443' 201100  200000            MOVEI TAC1,ASSPRG     ;OTHERWISE CLEAR ASSIGNED BY PROG. BIT\r
+       000444' 413106  000004            ANDCAB TAC1,DEVMOD(DEVDAT)\r
+       000445' 616100  000474'           TDNN TAC1,[XWD TTYUSE,ASSCON] ; ASSIGNED BY CONSOLE OR TTY I\r
+       000446' 137600  000000*           DPB UUO,PJOBN         ;NO. CLEAR JOB NUMBER\r
+       000447' 254000  000442*           JRST UXIT\r
+\r
+\r
+\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS  MACRO 10 05:51 24-APR-78 PAGE 19\r
+IOCONT MAC     24-APR-78 23:08         8-9-95\r
+\r
+\r
+\r
+\r
+                               ,DEC 06 00 EX UUO L PT PRE 01 STATO\r
+                               ,H.R. MORSE     64-12-26\r
+\r
+                               ,CALLING SEQUENCE\r
+                               ,         STATO D,MASK\r
+                               ,         EXIT1                 ALL SELECTED BITS ARE 0\r
+                               ,         EXIT2                 SOME SELECTED BITS ARE 1\r
+                               ,TESTS BITS OF I/O STATUS WORD OF DEVICE ON USERS CHANNEL D WHICH\r
+                               ,ARE SELECTED BY MASK.\r
+\r
+                               ,MONITOR INTERFACE:\r
+                               ,         STORAGE:              3\r
+                               ,         ROUTINES CALLED:      UXIT\r
+                               ,         SYMBOLS SET/USED:\r
+                               ,             ACCUMULATORS:     IOS U\r
+                               ,                               PDP U\r
+                               ,                               UUO U\r
+\r
+                                         INTERN USTATO\r
+\r
+       000450' 602014  000000  USTATO:   TRNE IOS,(UUO)        ;SKIP IF ANY INDICATED BITS ARE ONE\r
+       000451' 350003  000000            AOS (PDP)\r
+       000452' 254000  000447*           JRST UXIT\r
+\r
+\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS  MACRO 10 05:51 24-APR-78 PAGE 20\r
+IOCONT MAC     24-APR-78 23:08         8-9-95\r
+\r
+\r
+\r
+                               ,DEC 06 00 EX UUO L PT PRE 01 STATUS\r
+                               ,H.R. MORSE   64-12-26\r
+\r
+                               ,CALLING SEQUENCE\r
+                               ,         STATUS D,ADR\r
+                               ,         EXIT                  ALWAYS RETURNS HERE\r
+                               ,STORES I/O STATUS WORD OF DEVICE ON CHANNEL D IN LOCATION ADR.\r
+\r
+                               ,MONITOR INTERFACE\r
+                               ,         STORAGE:              3\r
+                               ,         ROUTINES CALLED:      UXIT\r
+                               ,         SYMBOLS SET/USED:     \r
+                               ,             ACCUMULATORS:     IOS U\r
+                               ,                               PROG U\r
+                               ,                               UUO U\r
+\r
+                               INTERN USTATS\r
+                               EXTERNAL ADRERR,USRREL\r
+\r
+       000453' 200040  000000* USTATS:   MOVE TAC,USRREL               ;CHECK TO SEE IF IN BOUNDS\r
+       000454' 307054  000000            CAIG TAC,(UUO)\r
+       000455' 260140  000000*           PUSHJ PDP,ADRERR\r
+       000456' 505600  000007            HRLI UUO,PROG         ;LOAD STATUS INTO INDICATED ADDRESS.\r
+       000457' 552020  000014            HRRZM IOS,@UUO\r
+       000460' 254000  000452*           JRST UXIT\r
+\r
+\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS  MACRO 10 05:51 24-APR-78 PAGE 21\r
+IOCONT MAC     24-APR-78 23:08         8-9-95\r
+\r
+\r
+\r
+                               ,CALLING SEQUENCE\r
+                               ,         SETSTS D,BITS\r
+                               ,         EXIT                  ALWAYS RETURN HERE\r
+\r
+                               INTERNAL USETST\r
+                               EXTERNAL WAIT1,SETIOS\r
+\r
+       000461' 260140  000431* USETST:   PUSHJ PDP,WAIT1       ;WAIT TILL DEVICE INACTIVE\r
+       000462' 205000  000002            MOVSI IOS, IOBEG\r
+       000463' 436006  000002            IORM IOS,DEVIOS(DEVDAT)\r
+       000464' 542606  000002            HRRM UUO,DEVIOS(DEVDAT)\r
+       000465' 254000  000460*           JRST UXIT\r
+\r
+                               ,DEC 06 00 EX UUO L PT PRE 01 STATZ\r
+                               ,H.R. MORSE     64-12-26\r
+\r
+                               ,CALLING SEQUENCE\r
+                               ,         STATZ D,MASK\r
+                               ,         EXIT1                 SOME SELECTED BITS ARE 1\r
+                               ,         EXIT2                 ALL SELECTED BITS ARE 0\r
+\r
+                               ,TESTS BITS OF I/O STATUS WORD OF DEVICE ON USERS\r
+                               ,CHANNEL D WHICH ARE SELECTED BY MASK,\r
+\r
+                               ,MONITOR INTERFACE\r
+                               ,         STORAGE:              3\r
+                               ,         ROUTINES CALLED:      UXIT\r
+                               ,         SYMBOLS SET/USED:\r
+                               ,             ACCUMULATORS:     IOS U\r
+                               ,                               PDP U\r
+                               ,                               UUO U\r
+\r
+                                         INTERN USTATZ\r
+\r
+       000466' 606014  000000  USTATZ:   TRNN IOS,(UUO)        ;SKIP IF ALL INDICATED BITS ARE ZERO\r
+       000467' 350003  000000            AOS (PDP)\r
+       000470' 254000  000465*           JRST UXIT\r
+\r
+                                         END,\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 000475\r
+\r
+9K CORE USED\r
+\r
+\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS  MACRO 10 05:51 24-APR-78 PAGE 22\r
+IOCONT MAC     24-APR-78 23:08         SYMBOL TABLE\r
+\r
+A              000000  INT\r
+AC1            000015  INT\r
+AC2            000016  INT\r
+AC3            000017  INT\r
+ADRCK          000342' EXT\r
+ADRERR         000455' EXT\r
+AL             000001  INT\r
+ASSCON         400000  INT\r
+ASSIN          000112' EXT\r
+ASSPRG         200000  INT\r
+B              000014  INT\r
+BUFCLC         000077' EXT\r
+BUFCLR         000371' EXT\r
+BUFPNT         000012  INT\r
+BUFWRD         000013  INT\r
+CALIN          000276' \r
+CALOU1         000424' \r
+CALOUT         000417' INT\r
+CLOSB          002000  INT\r
+CLOSE1         000000' INT\r
+CLSIN          000002  INT\r
+CLSOUT         000001  INT\r
+CUXIT1         000113' EXT\r
+CUXIT2         000141' EXT\r
+D              000017  INT\r
+DAT            000005  INT\r
+DCL            000001  INT\r
+DCW            020000  INT\r
+DDI            000007  INT\r
+DDO            000006  INT\r
+DDTMEM         000037  INT\r
+DDTSYM         000036  INT\r
+DEN            000004  INT\r
+DEVADR         000007  INT\r
+DEVBUF         000006  INT\r
+DEVCHR         000001  INT\r
+DEVCTR         000011  INT\r
+DEVDAT         000006  INT\r
+DEVIAD         000007  INT\r
+DEVIOS         000002  INT\r
+DEVLOG         000005  INT\r
+DEVMOD         000004  INT\r
+DEVNAM         000000  INT\r
+DEVOAD         000010  INT\r
+DEVPTR         000010  INT\r
+DEVSER         000003  INT\r
+DGF            000012  INT\r
+DIN            000003  INT\r
+DLK            000005  INT\r
+DOU            000002  INT\r
+DR             000016  INT\r
+DRL            000000  INT\r
+\r
+\r
+\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS  MACRO 10 05:51 24-APR-78 PAGE 22-1\r
+IOCONT MAC     24-APR-78 23:08         SYMBOL TABLE\r
+\r
+DSI            000011  INT\r
+DSO            000010  INT\r
+DTW            040000  INT\r
+DVAVAL         000040  INT\r
+DVCDR          100000  INT\r
+DVDIR          000004  INT\r
+DVDIRI         400000  INT\r
+DVIN           000002  INT\r
+DVLPT          040000  INT\r
+DVMTA          000020  INT\r
+DVOUT          000001  INT\r
+DVTTY          000010  INT\r
+ENTRB          020000  INT\r
+ERROR          000000  EXT\r
+I              000010  INT\r
+IB             000013  INT\r
+IBUFB          200000  INT\r
+ILLMOD         000000  EXT\r
+IN             000163' INT\r
+IN1            000173' \r
+INDMP          000271' \r
+INEOF          000250' \r
+INITB          400000  INT\r
+INPB           010000  INT\r
+INPT0A         000225' \r
+INPT0B         000220' \r
+INPT0C         000224' \r
+INPUT0         000212' \r
+INPUT1         000227' \r
+INPUT2         000236' \r
+INPUT3         000265' \r
+INPUTA         000253' \r
+INPUTF         000256' \r
+IO             000020  INT\r
+IOACT          010000  INT\r
+IOBEG          000002  INT\r
+IOBKTL         040000  INT\r
+IOCON          000040  INT\r
+IODEND         020000  INT\r
+IODERR         200000  INT\r
+IODISC         400000  INT\r
+IODONE         400000  INT\r
+IODTER         100000  INT\r
+IOEND          000040  INT\r
+IOFST          000004  INT\r
+IOIERR         000000  EXT\r
+IOIMPM         400000  INT\r
+IONRCK         000100  INT\r
+IORDEL         000100  INT\r
+IORET          000020  INT\r
+IOS            000000  INT\r
+IOSETC         000376' EXT\r
+IOSTRT         000010  INT\r
+\r
+\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS  MACRO 10 05:51 24-APR-78 PAGE 22-2\r
+IOCONT MAC     24-APR-78 23:08         SYMBOL TABLE\r
+\r
+IOUSE          400000  INT\r
+IOW            000001  INT\r
+IOWC           000020  INT\r
+IOWS           400000  INT\r
+ITEM           000004  INT\r
+JBFADR         000000  INT\r
+JBFCTR         000002  INT\r
+JBFPTR         000001  INT\r
+JBUF           000005  INT\r
+JDAT           000011  INT\r
+JERR           002000  INT\r
+JIOW           100000  INT\r
+JNA            004000  INT\r
+JOB            000111' EXT\r
+JOBJDA         000000  EXT\r
+LOOKB          040000  INT\r
+MTW            010000  INT\r
+OBUFB          100000  INT\r
+OUT            000306' INT\r
+OUT1           000315' \r
+OUT2           000336' \r
+OUTA           000405' INT\r
+OUTDMP         000400' \r
+OUTF           000357' \r
+OUTF1          000365' \r
+OUTPB          004000  INT\r
+OUTS           000370' \r
+PDP            000003  INT\r
+PICHN          000100  INT\r
+PIOMOD         000312' EXT\r
+PJOBN          000446' EXT\r
+PROG           000007  INT\r
+PUUOAC         000434' EXT\r
+RELEA0         000426' \r
+RELEA1         000427' INT\r
+RELEA2         000427' INT\r
+RELEA3         000427' INT\r
+RELEA4         000437' \r
+RELEA5         000432' INT\r
+RUN            200000  INT\r
+RUNABL         204000  INT\r
+SETBYT         000155' EXT\r
+SETIOS         000120' EXT\r
+TAC            000001  INT\r
+TAC1           000002  INT\r
+TEM            000010  INT\r
+TTYATC         020000  INT\r
+TTYUSE         010000  INT\r
+UCLS0          000026' \r
+UCLS1          000034' \r
+UCLS2          000041' \r
+UCLS3          000060' \r
+UCLS4          000013' \r
+\r
+\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS  MACRO 10 05:51 24-APR-78 PAGE 22-3\r
+IOCONT MAC     24-APR-78 23:08         SYMBOL TABLE\r
+\r
+UINBF          000076' INT\r
+UINIT          000103' INT\r
+UINIT1         000111' INT\r
+UINIT4         000127' \r
+UINIT5         000133' \r
+UINITZ         000142' INT\r
+UINTQ          000121' EXT\r
+UOBF1          000072' \r
+UOUTBF         000066' INT\r
+USETST         000461' INT\r
+USRJDA         000437' EXT\r
+USRMOD         010000  INT\r
+USRREL         000453' EXT\r
+USTATO         000450' INT\r
+USTATS         000453' INT\r
+USTATZ         000466' INT\r
+UUO            000014  INT\r
+UXIT           000470' EXT\r
+WAIT1          000461' EXT\r
+WSYNC          000423' EXT\r
+\f   IIIIIIIII            OOOOOOOOO            CCCCCCCCCCCC         SSSSSSSSSSSS         SSSSSSSSSSSS                     \r
+   IIIIIIIII            OOOOOOOOO            CCCCCCCCCCCC         SSSSSSSSSSSS         SSSSSSSSSSSS                     \r
+   IIIIIIIII            OOOOOOOOO            CCCCCCCCCCCC         SSSSSSSSSSSS         SSSSSSSSSSSS                     \r
+      III            OOO         OOO      CCC                  SSS                  SSS                                 \r
+      III            OOO         OOO      CCC                  SSS                  SSS                                 \r
+      III            OOO         OOO      CCC                  SSS                  SSS                                 \r
+      III            OOO         OOO      CCC                  SSS                  SSS                                 \r
+      III            OOO         OOO      CCC                  SSS                  SSS                                 \r
+      III            OOO         OOO      CCC                  SSS                  SSS                                 \r
+      III            OOO         OOO      CCC                     SSSSSSSSS            SSSSSSSSS                        \r
+      III            OOO         OOO      CCC                     SSSSSSSSS            SSSSSSSSS                        \r
+      III            OOO         OOO      CCC                     SSSSSSSSS            SSSSSSSSS                        \r
+      III            OOO         OOO      CCC                              SSS                  SSS                     \r
+      III            OOO         OOO      CCC                              SSS                  SSS                     \r
+      III            OOO         OOO      CCC                              SSS                  SSS                     \r
+      III            OOO         OOO      CCC                              SSS                  SSS                     \r
+      III            OOO         OOO      CCC                              SSS                  SSS                     \r
+      III            OOO         OOO      CCC                              SSS                  SSS                     \r
+   IIIIIIIII            OOOOOOOOO            CCCCCCCCCCCC      SSSSSSSSSSSS         SSSSSSSSSSSS                        \r
+   IIIIIIIII            OOOOOOOOO            CCCCCCCCCCCC      SSSSSSSSSSSS         SSSSSSSSSSSS                        \r
+   IIIIIIIII            OOOOOOOOO            CCCCCCCCCCCC      SSSSSSSSSSSS         SSSSSSSSSSSS                        \r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  05:53:58\r
+File: DSKB0 :IOCSS .LST   [8,296] Created: 20-April-1967 05:51:00 Printed: 24-April-1978 05:53:34\r
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:1847 \r
+File will be deleted after printing\r
+\f\r
+IOCSS - IO COMMON SYSTEM SUBROUTINES   MACRO 10 05:51 24-APR-78 PAGE 1\r
+S      MAC     24-APR-78 21:40         8-15-65\r
+\r
+                                       XLIST\r
+                                      LIST\r
+                                          TITLE IOCSS - IO COMMON SYSTEM SUBROUTINES\r
+                                          SUBTTL 8-15-65\r
+                                          EXTERNAL CLOSE1,DEVLST,ERROR,JBTADR\r
+                                          EXTERNAL JOB,JOBFF,RELEA1,USRJDA,WAIT1,CLDS,CLEN\r
+                                          EXTERNAL PJOBN,CPOPJ1,PIOMOD,CPOPJ,CPOPJ2\r
+                                          EXTERNAL SCNOFF,SCNON\r
+\r
+\fIOCSS - IO COMMON SYSTEM SUBROUTINES  MACRO 10 05:51 24-APR-78 PAGE 2\r
+IOCSS  MAC     24-APR-78 23:13         8-15-65\r
+\r
+\r
+\r
+                               ,DEC 06 00 EX COM L PT PRE 01 ADVBFE\r
+                               ,H.R. MORSE         64-12-26\r
+                               ,CALLING SEQUENCE\r
+                               ,         PUSHJ PDP,ADVBFE\r
+                               ,         EXIT1               RETURN IF NEXT BUFFER IS EMPTY\r
+                               ,         EXIT2               RETURN IF NEXT BUFFER IS FULL\r
+                               ,CLEARS THE USE BIT (IOUSE:=0) OF THE BUFFER POINTED TO BY THE\r
+                               ,OUTPUT BUFFER ADDRESS (DEVOAD) OF THE CURRENT DEVICE DATA BLOCK\r
+                               ,AND ADVANCES THE BUFFER ADDRESS TO THE NEXT BUFFER IN THE RING\r
+                               ,UPON RETURN, SKIPS IF THE NEXT BUFFER IS FULL.\r
+                               ,MONITOR INTERFACE\r
+                               ,         STORAGE:  6\r
+                               ,         SYMBOLS SET/USED:\r
+                               ,             ACCUMULATORS:     DEVDAT U\r
+                               ,                               PDP    S/U\r
+                               ,                               TAC    S/U\r
+                               ,             DEVICE DATA BLOCK:         DEVOAD S/U\r
+                               ,             JOB BUFFER HEADER:         IOUSE  S/U\r
+                                         INTERN ADVBFE\r
+       000000'                 ADVBFE:   ADRCHK DEVOAD(DEVDAT)^        EXTERNAL ADRCK\r
+       000000' 260140  000000*         PUSHJ PDP,ADRCK\r
+       000001' 550046  000010          HRRZ TAC,DEVOAD(DEVDAT)^\r
+       000002' 515040  400000            HRLZI TAC,IOUSE;      IOUSE:=0\r
+       000003' 413066  000010            ANDCAB TAC,@DEVOAD(DEVDAT)\r
+       000004' 542046  000010            HRRM TAC,DEVOAD(DEVDAT); DEVOAD 18-35:=NEXT BUFFER ADDRESS\r
+       000005' 335026  000010            SKIPGE @DEVOAD(DEVDAT);       IS IOUSE=0?\r
+       000006' 350003  000000            AOS (PDP);                    EXIT2. BUFFER IS FULL\r
+       000007' 263140  000000            POPJ PDP,;            EXIT1. BUFFER IS EMPTY\r
+\r
+\fIOCSS - IO COMMON SYSTEM SUBROUTINES  MACRO 10 05:51 24-APR-78 PAGE 3\r
+IOCSS  MAC     24-APR-78 23:13         8-15-65\r
+\r
+\r
+\r
+                               ,DEC 06 00 EX COM L PT PRE 01 ADVBFF\r
+                               ,H.R. MORSE         64-12-26\r
+                               ,CALLING SEQUENCE\r
+                               ,         PUSHJ PDP,ADVBFF\r
+                               ,         EXIT1                 RETURN IF NEXT BUFFER IS FULL\r
+                               ,         EXIT2                 RETURN IF NEXT BUFFER IS EMPTY\r
+                               ,SETS THE USE BIT (IOUSE:=1) OF THE BUFFER POINTED TO BY THE\r
+                               ,INPUT BUFFER ADDRESS (DEVIAD) OF THE CURRENT DEVICE DATA BLOCK\r
+                               ,AND ADVANCES THE BUFFER ADDRESS TO THE NEXT BUFFER IN THE RING.\r
+                               ,UPON RETURN. SKIPS IF THE NEXT BUFFER IS EMPTY,\r
+                               ,MONITOR INTERFACE\r
+                               ,         STORAGE:   6\r
+                               ,         SYMBOLS SET/USED:\r
+                               ,             ACCUMULATORS:             DEVDAT U\r
+                               ,                                       PDP    S/U\r
+                               ,                                       TAC    S/U\r
+                               ,             DEVICE DATA BLOCK:        DEVIAD S/U\r
+                               ,             JOB BUFFER HEADER:        IOUSE  S/U\r
+                                         INTERN ADVBFF\r
+       000010' 260140  000000* ADVBFF:   ADRCHK DEVIAD(DEVDAT)^PUSHJ PDP,ADRCK\r
+       000011' 550046  000007          HRRZ TAC,DEVIAD(DEVDAT)^\r
+       000012' 515040  400000            HRLZI TAC,IOUSE;      IOUSE:=1\r
+       000013' 437066  000007            IORB TAC,@DEVIAD(DEVDAT)\r
+       000014' 542046  000007            HRRM TAC,DEVIAD(DEVDAT); DEVIAD:=NEXT BUFFER ADDRESS\r
+       000015' 331026  000007            SKIPL @DEVIAD(DEVDAT);        IOUSE=1?\r
+       000016' 350003  000000            AOS (PDP);            EXIT2. NEXT BUFFER IS EMPTY\r
+       000017' 263140  000000            POPJ PDP,;            EXIT1. NEXT BUFFER IS FULL\r
+\r
+\fIOCSS - IO COMMON SYSTEM SUBROUTINES  MACRO 10 05:51 24-APR-78 PAGE 4\r
+IOCSS  MAC     24-APR-78 23:13         8-15-65\r
+\r
+\r
+\r
+\r
+                               ,DEC 06 00 EX COM L PT PRE 01 ASCIA\r
+                               ,C. FRAZIER AND W. SEGAL      64-12-26\r
+                               ,CALLING SEQUENCE\r
+                               ,         PUSHJ PDP,ASCIA\r
+                               ,         EXIT                ALWAYS RETURNS HERE\r
+                               ,ADDS THE ASCII INCREMENT (RIGHT JUSTIFIED) IN AC TAC1 TO THE FIVE\r
+                               ,DIGIT ASCII NUMBER (LEFT JUSTIFIED) IN AC TAC AND LEAVES THE \r
+                               ,RESULT (LEFT JUSTIFIED) IN AC TAC. TAC1 IS RESTORED.\r
+                               ,MONITOR INTERFACE\r
+                               ,         STORAGE:  21\r
+                               ,         SYMBOLS SET/USED:\r
+                               ,             ACCUMULATORS:     PDP  U\r
+                               ,                               TAC  S/U\r
+                               ,                               TAC1 S/U\r
+\r
+\fIOCSS - IO COMMON SYSTEM SUBROUTINES  MACRO 10 05:51 24-APR-78 PAGE 5\r
+IOCSS  MAC     24-APR-78 23:13         8-15-65\r
+\r
+\r
+\r
+                               ;         INTERN ASCIA\r
+                               ;ASCIA:   PUSH PDP,TAC1;        SAVE TAC1 = ASCII INCREMENT (RIGHT JUST\r
+                               ;         AND TAC1,K2;          CLEAR MOST SIGNIFICANT 3 BITS OF\r
+                               ;,                              EACH CHARACTER\r
+                               ;         LSH TAC,-1;           TAC=FIVE DIGIT ASCII NO.(RIGHT JUST.)\r
+                               ;         IOR TAC,K4;           SET SECOND AND THIRD MOST SIGNIFICANT\r
+                               ;,                              BITS OF EACH CHARACTER TO ONES.\r
+                               ;         TLZN TAC,400000\r
+                               ;         ADD TAC,K1\r
+                               ;         ADD TAC1,TAC\r
+                               ;         AND TAC1,K3\r
+                               ;         MOVE TAC,K4\r
+                               ;         AND TAC,TAC1\r
+                               ;         ASH TAC,-3\r
+                               ;         SUBM TAC1,TAC\r
+                               ;         IOR TAC,K4\r
+                               ;         LSH TAC,1\r
+                               ;         TRO TAC,1\r
+                               ;         POP PDP,TAC1;         RESTORE TAC1\r
+                               ;         POPJ PDP,;            RETURN\r
+                               ;K1:      OCT 215064321506;     CHARACTER MASK: 1000110\r
+                               ;K2:      OCT 036170743617;     CHARACTER MASK: 0001111\r
+                               ;K3:      OCT 176773757677;     CHARACTER MASK: 0111111\r
+                               ;K4:      OCT 140603014060;     CHARACTER MASK: 0110000\r
+\r
+\fIOCSS - IO COMMON SYSTEM SUBROUTINES  MACRO 10 05:51 24-APR-78 PAGE 6\r
+IOCSS  MAC     24-APR-78 23:13         8-15-65\r
+\r
+\r
+\r
+                                         INTERNAL ASSIN,ASSASG\r
+\r
+       000020' 260140  000041' ASSIN:    PUSHJ PDP,DEVSRC      ;SEARCH FOR DEVICE\r
+       000021' 263140  000000            POPJ PDP,             ;DEVICE NOT FOUND\r
+       000022' 201100  200000            MOVEI TAC1, ASSPRG    ;DEVICE FOUND, FLAG AS ASSIGNED BY PROG\r
+\r
+                               ;ASSIGN DEVICE IF UNASSIGNED\r
+                               ;CALL:    MOVE ITEM, JOB NUMBER\r
+                               ;         MOVE DEVDAT, ADDR. OF DDB\r
+                               ;         MOVEI TAC1, EITHER ASSPRG OR ASSCON\r
+                               ;         PUSHJ PDP, ASSASG\r
+                               ;         CANT ASSIGN RETURN\r
+                               ;         ASSIGNED RETURN\r
+\r
+       000023' 700200  000000* ASSASG:   CONO APR,CLDS         ;DISABLE CLOCK\r
+       000024' 135040  000000*           LDB TAC,PJOBN         ;GET JOB NUMBER IN DEV DATA BLOCK\r
+       000025' 316040  000004            CAMN TAC,ITEM         ;IS IT ALREADY ASSIGNED TO THIS JOB\r
+       000026' 254000  000035'           JRST ASSAS1           ;YES\r
+       000027' 201040  600000            MOVEI TAC, ASSPRG+ASSCON      ;NO, IS IT ASSIGNED TO ANOTHE\r
+       000030' 700600  000000*           CONO PI, SCNOFF       ;TURN SCANNER OFF\r
+       000031' 612046  000004            TDNE TAC, DEVMOD(DEVDAT)      ;ARE EITHER ASSIGNED BITS SET\r
+       000032' 254000  000036'           JRST ASSAS2           ;YES\r
+       000033' 436106  000004            IORM TAC1, DEVMOD(DEVDAT)     ;NO, SET ONE OF THEM\r
+       000034' 137200  000024*           DPB ITEM,PJOBN        ;AND STORE JOB NUMBER\r
+       000035' 350003  000000  ASSAS1:   AOS (PDP)\r
+       000036' 700600  000000* ASSAS2:   CONO PI, SCNON        ;TURN SCANNER BACK ON\r
+       000037' 700200  000000*           CONO APR,CLEN         ;RENABLE CLOCK\r
+       000040' 263140  000000            POPJ PDP,\r
+\r
+\fIOCSS - IO COMMON SYSTEM SUBROUTINES  MACRO 10 05:51 24-APR-78 PAGE 7\r
+IOCSS  MAC     24-APR-78 23:13         8-15-65\r
+\r
+\r
+\r
+                               ;ROUTINE TO SEARCH FOR A DEVICE\r
+                               ;CALL:    HRR ITEM,JOB NUMBER\r
+                               ;         MOVE TAC,[SIXBIT .DEVICE NAME.]\r
+                               ;         PUSHJ PDP, DEVSRC\r
+                               ;         NOT FOUND\r
+                               ;         FOUND\r
+\r
+                                         INTERNAL DEVLG,DEVSRC,DEVPHY\r
+                                         EXTERNAL SYSTAP,DEVOPR\r
+\r
+       000041' 260140  000044' DEVSRC:   PUSHJ PDP, DEVLG      ;SEARCH LOGICAL NAMES FIRST\r
+       000042' 254000  000056'           JRST DEVPHY           ;NOT FOUND, SEARCH PHYSICAL NAMES\r
+       000043' 254000  000000*           JRST CPOPJ1           ;FOUND\r
+\r
+                               ;SEARCH LOGICAL NAMES\r
+\r
+       000044' 554300  000000* DEVLG:    HLRZ DEVDAT,DEVLST    ;BEGINNING OF DDB CHAIN\r
+       000045' 322040  000000*           JUMPE TAC,CPOPJ       ;0 CANNOT BE A LOGICAL NAME\r
+       000046' 312046  000005  DEVLP0:   CAME TAC,DEVLOG(DEVDAT)       ;COMPARE WITH LOGICAL NAME\r
+       000047' 254000  000053'           JRST DEV0             ;NO MATCH\r
+       000050' 135100  000034*           LDB TAC1,PJOBN        ;DOES THE LOGICAL NAME BELONG TO THIS J\r
+       000051' 316100  000004            CAMN TAC1,ITEM\r
+       000052' 254000  000043*           JRST CPOPJ1                   ;YES\r
+       000053' 554306  000003  DEV0:     HLRZ DEVDAT,DEVSER(DEVDAT)    ;NO, KEEP LOOKING\r
+       000054' 326300  000046'           JUMPN DEVDAT,DEVLP0\r
+       000055' 263140  000000            POPJ PDP,             ;FINISH AND NOT FOUND\r
+\r
+                               ;SEARCH PHYSICAL NAMES\r
+\r
+       000056' 322040  000045* DEVPHY:   JUMPE TAC,CPOPJ       ;ZERO CANNOT BE A LOGICAL NAME\r
+       000057' 316040  000367'           CAMN TAC,[SIXBIT  /OPR/] ;IS IT "OPR"?\r
+       000060' 200040  000000*           MOVE TAC,DEVOPR       ;YES, CHANGE TO OPERATORS TTY\r
+       000061' 316040  000370'           CAMN TAC,[SIXBIT  /SYS/] ;IS IT "SYS"?\r
+       000062' 200040  000000*           MOVE TAC,SYSTAP       ;YES, CHANGE TO SYSTEM TAPE NAME\r
+       000063' 554300  000044*           HLRZ DEVDAT,DEVLST    ;SEARCH DEVICE DATA BLOCKS\r
+       000064' 316046  000000  DEVLP1:   CAMN TAC,DEVNAM(DEVDAT)\r
+       000065' 254000  000052*           JRST CPOPJ1           ;FOUND\r
+       000066' 554306  000003            HLRZ DEVDAT,DEVSER(DEVDAT)\r
+       000067' 326300  000064'           JUMPN DEVDAT,DEVLP1\r
+       000070' 263140  000000            POPJ PDP, ;NOT FOUND\r
+\r
+\fIOCSS - IO COMMON SYSTEM SUBROUTINES  MACRO 10 05:51 24-APR-78 PAGE 8\r
+IOCSS  MAC     24-APR-78 23:13         8-15-65\r
+\r
+\r
+\r
+                               ,DEC 06 00 EX COM L PT PRE 01 BUFCLC\r
+                               ,H. R. MORSE        64-12-26\r
+                               ,CALLING SEQUENCE\r
+                               ,         PUSHJ PDP,BUFCLC\r
+                               ,         EXIT                  RETURNS HERE IF MEMORY NOT EXCEEDED\r
+                               , SETS UP AN N BUFFER RING FOLLOWING THE USERS PROGRAM, WHERE N\r
+                               , IS IN THE ADDRESS FIELD OF AC UUO.\r
+                               , THE BUFFER RING FORMAT IS AS FOLLOWS:\r
+                               ,         LOCATION  LH   CONTENTS   RH\r
+                               , C(JOBFF) + 1              BUFFER              C(JOBFF) +1\r
+                               ,    + 0(BUFFER SIZE+2)      SIZE                    + 1(BUFFER SIZ+2)\r
+                               , C(JOBFF) +1               BUFFER              C(JOBFF) +1\r
+                               ,    +1(BUFFER SIZE+2)       SIZE                    +  2(BUFFER SIZE+2)\r
+                               ,        .                    .                             .\r
+                               ,        .                    .                             .\r
+                               ,        .                    .                             .\r
+                               , C(JOBFF) + 1              BUFFER              C(JOBFF) + 1\r
+                               ,    + (N-2)(BUFFER SIZE+2)  SIZE                    +(N-1)(BUFFER SIZE+2)\r
+                               , C(JOBFF) + 1              BUFFER              C(JOBFF) + 1\r
+                               ,    + (N-1)(BUFFER SIZE+2)  SIZE       \r
+                               ,THEN SET           BUFPNT:=IOUS,C(JOBFF) + 1\r
+                               , AND               JOBFF:=C(JOBFF) + 1 + N(BUFFER SIZE + 2)\r
+                               , BUFWRD IS RESTORED.\r
+                               ,MONITOR INTERFACE\r
+                               ,         STORAGE:  20\r
+                               ,         ROUTINES CALLED:   ADRCK\r
+                               ,         SYMBOLS SET/USED:\r
+                               ,             ACCUMULATORS:  BUFPNT S/U         PROG   U\r
+                               ,                            BUFWRD S/U         TAC   S/U\r
+                               ,                            DEVDAT U           TAC1  S/U\r
+                               ,                            PDP    S/U         UUO   U\r
+                               ,         DEVICE DATA BLOCK: DEVCHR U\r
+                               ,         JOB AREA:          JOBFF  S/U\r
+                               ,         JOB BUFFER HEADER: IOUSE  U\r
+\r
+\fIOCSS - IO COMMON SYSTEM SUBROUTINES  MACRO 10 05:51 24-APR-78 PAGE 9\r
+IOCSS  MAC     24-APR-78 23:13         8-15-65\r
+\r
+\r
+\r
+                                         INTERN BUFCLC\r
+       000071' 261140  000013  BUFCLC:   PUSH PDP,BUFWRD;      SAVE BUFWRD ON STACK\r
+       000072' 135040  000371'           LDB TAC,[POINT 12,DEVCHR(DEVDAT),35];TAC:=BUFFER SIZE\r
+       000073' 550507  000000*           HRRZ BUFPNT,JOBFF(PROG);BUFPNT:=FIRST FREE LOCATION + 1\r
+       000074' 271500  000001            ADDI BUFPNT,1\r
+       000075' 550540  000012            HRRZ BUFWRD,BUFPNT\r
+       000076' 505500  000007            HRLI BUFPNT,PROG\r
+       000077' 504540  000001            HRL BUFWRD,TAC;       BUFWRD:=BUFFER SIZE,FIRST FREE LOC + 1\r
+       000100' 271040  000002            ADDI TAC,2;           TAC:=BUFFER SIZE + 2\r
+       000101' 550100  000014            HRRZ TAC1,UUO;        TAC1:=N=ADDRESS FIELD OF AC UUO\r
+       000102' 270540  000001  BUFC1:    ADD BUFWRD,TAC;       BUFWRD:=C(BUFWRD) + C(TAC)\r
+                                         ADRCHK BUFPNT;        CHECK BUFFER FOR MEMORY BOUND\r
+       000103' 260140  000010* PUSHJ PDP,ADRCK\r
+       000104' 550040  000012          HRRZ TAC,BUFPNT\r
+       000105' 202560  000012            MOVEM BUFWRD,@BUFPNT; BUFFER HEADER+1:=C(BUFWRD)\r
+       000106' 540500  000013            HRR BUFPNT,BUFWRD;    BUFPNT 18-35:=C(BUFWRD 18-35)\r
+       000107' 367100  000102'           SOJG TAC1,BUFC1;      N:=N-1.  IS N>0?\r
+       000110' 540547  000073*           HRR BUFWRD,JOBFF(PROG)\r
+       000111' 271540  000001            ADDI BUFWRD,1\r
+       000112' 260140  000103*           PUSHJ PDP,ADRCK       ;CHECK LAST ADR. OF HEADER\r
+       000113' 551052  777776            HRRZI TAC,-2(BUFPNT)\r
+       000114' 274500  000001            SUB BUFPNT,TAC\r
+       000115' 202560  000012            MOVEM BUFWRD,@BUFPNT;LINK LAST BUFFER TO FIRST BUFFER\r
+       000116' 270500  000001            ADD BUFPNT,TAC\r
+       000117' 542507  000110*           HRRM BUFPNT,JOBFF(PROG);JOBFF:=C(JOBFF)+1+N(BUFFER SIZE+2)\r
+       000120' 540500  000013            HRR BUFPNT,BUFWRD;    BUFPNT:=IOUSE,ADDRESS OF FIRST BUFFER\r
+                               ,                                        IN RING.\r
+       000121' 505500  400000            HRLI BUFPNT,IOUSE\r
+       000122' 262140  000013            POP PDP,BUFWRD;       RESTORE BUFWRD FROM STACK.\r
+       000123' 263140  000000            POPJ PDP,;            RETURN\r
+\r
+\fIOCSS - IO COMMON SYSTEM SUBROUTINES  MACRO 10 05:51 24-APR-78 PAGE 10\r
+IOCSS  MAC     24-APR-78 23:13         8-15-65\r
+\r
+\r
+\r
+                               ,DEC 06 00 EX COM L PT PRE 01 BUFCLR\r
+                               ,H. R. MORSE        64-12-26\r
+                               ,CALLING SEQUENCE\r
+                               ,         PUSHJ PDP,BUFCLR\r
+                               ,         EXIT                  RETURNS HERE IF MEMORY NOT EXCEEDED\r
+                               , CLEAR THE WORD COUNT AND DATA AREA OF THE BUFFER WHOSE ADDRESS\r
+                               , IS IN TAC 18-35.\r
+                               ,MONITOR INTERFACE:\r
+                               ,         STORAGE:  13\r
+                               ,         ROUTINE CALLED:    ADRCK\r
+                               ,         SYMBOLS SET/USED:\r
+                               ,             ACCUMULATORS:  PDP  U             TAC   S/U\r
+                               ,                            PROG U             TAC1  S/U\r
+                                         INTERN BUFCLR\r
+       000124' 505040  000007  BUFCLR:   HRLI TAC,PROG\r
+       000125' 000000  000001*           ADRCHK TAC;           PROCEED IF CURRENT BUFFER ADDRESS\r
+                               ,                                   < PROTECTION ADDRESS.\r
+       000126' 554120  000001            HLRZ TAC1,@TAC;       TAC1 18-35=SIZE\r
+       000127' 620100  400000            TRZ TAC1,400000\r
+       000130' 270100  000001            ADD TAC1,TAC;         TAC1:=CURRENT BUFFER ADDRESS + SIZE\r
+                                         ADRCHK TAC1;          PROCEED IF CURRENT BUFFER ADDRESS\r
+       000131' 260140  000112* PUSHJ PDP,ADRCK\r
+       000132' 550040  000002          HRRZ TAC,TAC1\r
+                               ,                                    + SIZE < PROTECTION ADDRESS.\r
+       000133' 201060  000001            MOVEI TAC,@TAC;       TAC:=CURRENT BUFFER ADDRESS+1,\r
+                               ,                                    CURRENT BUFFER ADDRESS+1\r
+       000134' 504040  000001            HRL TAC,TAC\r
+       000135' 253040  000136'           AOBJN TAC,.+1\r
+       000136' 402001  000000            CLEARM 0(TAC);        WORD COUNT:=0\r
+       000137' 350000  000001            AOS TAC;              TAC:=CURRENT BUFFER ADDRESS+1,\r
+                               ,                                    CURRENT BUFFER ADDRESS+2\r
+       000140' 251060  000002            BLT TAC,@TAC1;        CLEAR BUFFER\r
+       000141' 263140  000000            POPJ PDP,;            RETURN\r
+\r
+\fIOCSS - IO COMMON SYSTEM SUBROUTINES  MACRO 10 05:51 24-APR-78 PAGE 11\r
+IOCSS  MAC     24-APR-78 23:13         8-15-65\r
+\r
+\r
+                                         SUBTTL 5-17-65 PART 2\r
+\r
+\fIOCSS - IO COMMON SYSTEM SUBROUTINES  MACRO 10 05:51 24-APR-78 PAGE 12\r
+IOCSS  MAC     24-APR-78 23:13         5-17-65 PART 2\r
+\r
+\r
+\r
+                               ,CALLING SEQUENCE\r
+                               ,         PUSHJ PDP,CKS12\r
+                               ,         EXIT                  ALWAYS RETURNS HERE\r
+                               ,CALCULATES FOLDED 12 BIT CHECKSUMS OF THE DATA WORDS IN THE\r
+                               ,BUFFER WHOSE ADDRESS IS IN AC TAC1.  TWO ALGORITHMS ARE USED.\r
+                               ,ON RETURN, THE LEFT HALF OF AC TAC CONTAINS A CHECKSUM OBTAINED\r
+                               ,BY ACCUMULATING, IN ONES COMPLEMENT, THE DATA WORDS AND FOLDING IT.\r
+                               ,THE LEFT HALF OF AC DAT CONTAINS A CHECKSUM OBTAINED BY ACCUMULATING\r
+                               ,IN TWOS COMPLEMENT, THE DATA WORDS AND FOLDING IT.  AC TAC1\r
+                               ,CONTAINS A 1.\r
+                               ,MONITOR INTERFACE\r
+                               ,         STORAGE:  20\r
+                               ,         ROUTINES CALLED:   FOLD\r
+                               ,         SYMBOLS SET/USED:\r
+                               ,             ACCUMULATORS:  DAT   S/U          SUB    S\r
+                               ,                            PDP   U            TAC    S/U\r
+                               ,                            PROG  U            TAC1   S/U\r
+\r
+\fIOCSS - IO COMMON SYSTEM SUBROUTINES  MACRO 10 05:51 24-APR-78 PAGE 13\r
+IOCSS  MAC     24-APR-78 23:13         5-17-65 PART 2\r
+\r
+\r
+\r
+                                         INTERN CKS12\r
+       000142' 270100  000007  CKS12:    ADD TAC1,PROG;        TAC1:=-WORD COUNTER,ADDRESS OF FIRST DATA\r
+       000143' 350000  000002            AOS TAC1\r
+       000144' 550042  000000            HRRZ TAC,0(TAC1)\r
+       000145' 213000  000001            MOVNS TAC\r
+       000146' 350000  000002            AOS TAC1\r
+       000147' 504100  000001            HRL TAC1,TAC\r
+       000150' 402000  000001            CLEARM TAC;           INITIALIZE TWOS COMPLEMENT SUM\r
+       000151' 270042  000000  CKS12A:   ADD TAC,0(TAC1);      TWOS COMPLEMENT ADD\r
+       000152' 253100  000151'           AOBJN TAC1,CKS12A;    DONE?\r
+       000153' 246040  777750  FOLD:     LSHC TAC,-30\r
+       000154' 242100  777764            LSH TAC1,-14\r
+       000155' 270040  000002            ADD TAC,TAC1\r
+       000156' 246040  777764            LSHC TAC,-14\r
+       000157' 242100  777750            LSH TAC1,-30\r
+       000160' 270040  000002            ADD TAC,TAC1\r
+       000161' 622040  770000            TRZE TAC,770000\r
+       000162' 350000  000001            AOS TAC\r
+       000163' 517000  000001            HRLZS TAC\r
+       000164' 201100  000001            MOVEI TAC1,1          ;TAC1:=1\r
+       000165' 263140  000000            POPJ PDP,\r
+\r
+\fIOCSS - IO COMMON SYSTEM SUBROUTINES  MACRO 10 05:51 24-APR-78 PAGE 14\r
+IOCSS  MAC     24-APR-78 23:13         5-17-65 PART 2\r
+\r
+\r
+\r
+                               ,DEC 06 00 EX COM L PT PRE 01 CLRBYT\r
+                               ,H. R. MORSE        64-12-26\r
+                               ,CALLING SEQUENCE \r
+                               ,         PUSHJ PDP,CLRBYT\r
+                               ,         EXIT                  ALWAYS RETURN HERE\r
+                               ,CALLED WITH A BYTE POINTER IN AC TAC, IT CLEARS THE REST OF THE\r
+                               ,WORD POINTED TO BY THE BYTE POINTER.\r
+                               ,MONITOR INTERFACE\r
+                               ,         STORAGE:   7\r
+                               ,         SYMBOLS SET/USED:\r
+                               ,             ACCUMULATORS:   PDP    U\r
+                               ,                             TAC    U\r
+                               ,                             TAC1   S/U\r
+                                         INTERN CLRBYT\r
+       000166' 135100  000372' CLRBYT:   LDB TAC1,[POINT 6,TAC,5];     TAC1:=P\r
+       000167' 137100  000373'           DPB TAC1,[POINT 12,TAC,11];   TAC 0-5:=0, TAC 6-12:=P\r
+       000170' 402000  000002            SETZM TAC1\r
+       000171' 137100  000001            DPB TAC1,TAC;         CLEAR BITS 36-P THROUGH 35\r
+       000172' 263140  000000            POPJ PDP,;            RETURN\r
+\r
+\fIOCSS - IO COMMON SYSTEM SUBROUTINES  MACRO 10 05:51 24-APR-78 PAGE 15\r
+IOCSS  MAC     24-APR-78 23:13         5-17-65 PART 2\r
+\r
+\r
+\r
+                               ;ROUTINE TO RELEASE ALL DEVICES ASSIGNED TO JOB\r
+\r
+                               INTERNAL IORELS\r
+                               EXTERNAL PUUOAC,RELEA3\r
+\r
+\r
+       000173' 201040  000000* IORELS:   MOVEI TAC,RELEA3      ;RELEASE ALL IO DEVICES(DONT CLOSE)\r
+\r
+                               ;ROUTINE TO DO IO FOR ALL DEVICES ASSIGNED TOI JOB\r
+                               ;CALL     MOVEI TAC,ADR. OR IO SUB.\r
+                               ;         PUSHJ PDP,IOALL\r
+\r
+                               INTERNAL IOALL\r
+\r
+       000174' 261140  000001  IOALL:    PUSH PDP,TAC          ;SAVE ADR. FO SUB.\r
+       000175' 515240  777760            HRLZI DAT, -20\r
+       000176' 200305  000000* IOALL1:   MOVE DEVDAT, USRJDA(DAT)\r
+       000177' 200006  000002            MOVE IOS,DEVIOS(DEVDAT)\r
+       000200' 201600  000000            MOVEI UUO,0\r
+       000201' 137240  000000*           DPB DAT,PUUOAC\r
+       000202' 332000  000006            SKIPE DEVDAT\r
+       000203' 260163  000000            PUSHJ PDP,@(PDP)      ;CALL THE SUB.\r
+       000204' 253240  000176'           AOBJN DAT, IOALL1\r
+       000205' 262140  000001            POP PDP,TAC\r
+       000206' 263140  000000            POPJ PDP,\r
+\r
+                               ;KILL ALL DEVICES(RELEASE WITHOUT WAITING FOR DEVICE INACTIVE)\r
+\r
+                               INTERNAL IOKILL\r
+                               EXTERNAL RELEA5\r
+\r
+       000207' 201040  000000* IOKILL:   MOVEI TAC,RELEA5\r
+       000210' 254000  000174'           JRST IOALL\r
+\r
+\fIOCSS - IO COMMON SYSTEM SUBROUTINES  MACRO 10 05:51 24-APR-78 PAGE 16\r
+IOCSS  MAC     24-APR-78 23:13         5-17-65 PART 2\r
+\r
+\r
+\r
+                               ,DEC 06 00 EX COM L PT PRE 01 IOSET\r
+                               ,H. R. MORSE        64-12-26\r
+                               ,CALLING SEQUENCE\r
+                               ,         PUSHJ PDP,IOSET\r
+                               ,         EXIT      ALWAYS RETURNS HERE\r
+                               ,THIS PROGRAM IS CALLED FROM AN INTERRUPT SERVICE ROUTINE.\r
+                               ,IT PUTS THE ADDRESS OF THE DATA AREA OF THE JOB (C(JBTADR18-35))\r
+                               ,CONNECTED TO THE DEVICE SPECIFIED BY AC DEVDAT IN AC PROG AND\r
+                               ,PUTS THE ITEM POINTER (C(DEVCTR)) IN AC ITEM.\r
+                               ,MONITOR INTERFACE\r
+                               ,         STORAGE:   5\r
+                               ,         SYMBOLS SET/USED:\r
+                               ,             ACCUMULATORS:             DEVDAT U   PDP  U\r
+                               ,                                       ITEM   S   PROG S/U\r
+                               ,             DEVICE DATA BLOCK:        DEVCHR U\r
+                               ,                                       DEVCTR U\r
+                               ,             SYSTEM ADDRESSES:         JBTADR U\r
+                                         INTERN IOSET\r
+\r
+       000211' 135340  000050* IOSET:    LDB PROG,PJOBN\r
+       000212' 200206  000011            MOVE ITEM,DEVCTR(DEVDAT); ITEM:=ITEM POINTER=C(DEVCTR)\r
+       000213' 550347  000000*           HRRZ PROG,JBTADR(PROG);       PROG:=C(JBTADR 18-35)\r
+       000214' 263140  000000            POPJ PDP,;                    RETURN\r
+\r
+\fIOCSS - IO COMMON SYSTEM SUBROUTINES  MACRO 10 05:51 24-APR-78 PAGE 17\r
+IOCSS  MAC     24-APR-78 23:13         5-17-65 PART 2\r
+\r
+\r
+\r
+                               ,6-CSS-DEC-IOSETC-PL-PRE1\r
+                               ,H.R. MORSE   17-11-64\r
+\r
+                               ,CALLING SEQUENCE\r
+                               ,         PUSHJ PDP,IOSETC\r
+                               ,         EXIT                  ALWAYS RETURN HERE\r
+\r
+                               ,SETS JBFPTR18-35:=C(TAC1 18-35)\r
+                               ,         JBFCTR:=C(ITEM)*[WORD LENGTH/BYTE SIZE]\r
+                               ,WHERE    WORD LENGTH:=36 DECIMAL\r
+                               ,         BYTE SIZE:=C(JBFPTR6-11)\r
+                               ,         [X]:= INTEGER PART OF X\r
+\r
+                               ,MONITOR INTERFACE\r
+                               ,         STORAGE:   11\r
+                               ,         ROUTINES CALLED:      ITMCT1\r
+                               ,         SYMBOLS SET/USED:\r
+                               ,             ACCUMULATORS:     JBUF S/U        TAC S/U\r
+                               ,                               ITEM S/U        TAC1 S/U\r
+                               ,                               PDP U\r
+\r
+                                         INTERN IOSETC\r
+\r
+       000215' 271240  000001  IOSETC:   ADDI JBUF,1                   ;JBFPTR12-18:=0\r
+       000216' 515040  007777            HRLZI TAC,7777        ;JBFPTR18-35:=C(TAC1 18-35)+1\r
+       000217' 406060  000005            ANDM TAC,@JBUF\r
+       000220' 542120  000005            HRRM TAC1,@JBUF\r
+       000221' 350020  000005            AOS @JBUF\r
+       000222' 135100  000374'           LDB TAC1,[POINT 6,@JBUF,11]   ;TAC1:=BYTE SIZE\r
+       000223' 260140  000232'           PUSHJ PDP,ITMCT1      ;JBFCTR:=C(ITEM)*[36/BYTE SIZE]\r
+       000224' 271000  000006            ADDI JBUF+1\r
+       000225' 202220  000005            MOVEM ITEM,@JBUF\r
+       000226' 263140  000000            POPJ PDP,             ;EXIT\r
+\r
+\fIOCSS - IO COMMON SYSTEM SUBROUTINES  MACRO 10 05:51 24-APR-78 PAGE 18\r
+IOCSS  MAC     24-APR-78 23:13         5-17-65 PART 2\r
+\r
+\r
+\r
+                               ,DEC 06 00 EX COM L PT PRE 01 ITMSET, ITMCNT, ITMCT1\r
+                               ,H.R. MORSE   64-12-26\r
+\r
+                               ,CALLING SEQUENCE\r
+                               ,         PUSHJ PDP,ITMSET\r
+                               ,         EXIT                  ALWAYS RETURNS HERE\r
+                               ,SETS AC ITEM:=(BUFFER SIZE-1)*[WORD LENGTH/BYTE SIZE]\r
+                               ,WHERE BUFFER SIZE:=BITS 1-17 OF THE BUFFER HEADER WORD POINTED TO\r
+                               ,                   BY C(DEVADR)\r
+                               ,        WORD LENGTH:=36 DECIMAL\r
+                               ,        BYTE SIZE:=INTEGER PART OF X.\r
+\r
+                               ,CALLING SEQUENCE\r
+                               ,         PUSHJ PDP,ITMCNT\r
+                               ,         EXIT                  ALWAYS RETURNS HERE\r
+                               ,SETS AC ITEM=C(ITEM)*[WORD LENGTH/BYTE SIZE]\r
+\r
+                               ,CALLING SEQUENCE\r
+                               ,         PUSHJ PDP,ITMCT1\r
+                               ,         EXIT                  ALWAYS RETURNS HERE\r
+                               ,SETS AC ITEM:=C(ITEM)*[WORD LENGTH/C(TAC1)]\r
+\r
+                               ,MONITOR INTERFACE\r
+                               ,         STOAGE:   7\r
+                               ,         SYMBOLS SET/USED:\r
+                               ,             ACCUMULATORS:     DEVDAT U   TAC S/U\r
+                               ,                               ITEM S/U   TAC1 S/U\r
+                               ,                               PDP U\r
+                               ,         DEVICE DATA BLOCK:    DEVADR U\r
+                               ,                               DEVPTR U\r
+\r
+\fIOCSS - IO COMMON SYSTEM SUBROUTINES  MACRO 10 05:51 24-APR-78 PAGE 19\r
+IOCSS  MAC     24-APR-78 23:13         5-17-65 PART 2\r
+\r
+\r
+\r
+                                         INTERN ITMSET,ITMCNT,ITMCT1\r
+       000227' 135200  000375' ITMSET:   LDB ITEM,[POINT 17,@DEVADR(DEVDAT),17];ITEM:=BUFFER SIZE-1\r
+       000230' 275200  000001            SUBI ITEM,1\r
+       000231' 135100  000376' ITMCNT:   LDB TAC1,[POINT 6,DEVPTR(DEVDAT),11];TAC1:=BYTE SIZE\r
+       000232' 201040  000044  ITMCT1:   MOVEI TAC,44          ;ITEM:=C(ITEM)*[WORD LENGTH/C(TAC1)]\r
+       000233' 230040  000002            IDIV TAC,TAC1\r
+       000234' 220200  000001            IMUL ITEM,TAC\r
+       000235' 263140  000000            POPJ PDP,\r
+\r
+\fIOCSS - IO COMMON SYSTEM SUBROUTINES  MACRO 10 05:51 24-APR-78 PAGE 20\r
+IOCSS  MAC     24-APR-78 23:13         5-17-65 PART 2\r
+\r
+\r
+\r
+                               ;ROUTINE TO SET DEVICE STATUS WORD FROM UUO\r
+\r
+                               INTERNAL SETIOS\r
+                               EXTERNAL ILLMOD\r
+\r
+       000236' 135040  000377' SETIOS:   LDB TAC,[POINT 4,UUO,35]      ;GET DEVICE DATA MODE\r
+       000237' 201040  000001            MOVEI TAC,1           ;AND CHECK FOR LEGALITY\r
+       000240' 242042  000000            LSH TAC,(TAC1)\r
+       000241' 616046  000004            TDNN TAC,DEVMOD(DEVDAT)\r
+       000242' 254000  000000*           JRST ILLMOD           ;ILLEGAL MODE\r
+       000243' 620600  010000            TRZ UUO,IOACT         ;LET USER SET ALL BITS EXCEPT IOACT\r
+       000244' 542606  000002            HRRM UUO,DEVIOS(DEVDAT)\r
+       000245' 263140  000000            POPJ PDP,\r
+\r
+\fIOCSS - IO COMMON SYSTEM SUBROUTINES  MACRO 10 05:51 24-APR-78 PAGE 21\r
+IOCSS  MAC     24-APR-78 23:13         5-17-65 PART 2\r
+\r
+\r
+\r
+                               ,DEC 06 00 EX COM L PT PRE 01 NEWBUF, BPNSET\r
+                               ,H. R. MORSE        64-12-26\r
+                               ,CALLING SEQUENCE\r
+                               ,         PUSHJ PDP,NEWBUF\r
+                               ,         EXIT                  ALWAYS RETURNS HERE\r
+                               ,CLEARS THE BUFFERE CURRENTLY POINTED TO BY THE INPUT BUFFER\r
+                               ,ADDRESS (DEVDR) OF THE CURRENT DEVICE. SETS UP THE BYTE\r
+                               ,POINTER (DEVPTR), AND THE ITEM COUNT (DEVCTR) AND RETURNS.\r
+                               ,CALLING SEQUENCE\r
+                               ,         PUSHJ PDP,BPNSET\r
+                               ,         EXIT                  ALWAYS RETURNS HERE\r
+                               ,SETS UP THE BYTE POINTER (DEVPTR) AND THE ITEM COUNT (DEVCTR)\r
+                               ,OF THE CURRENT DEVICE AND RETURNS.\r
+                               ,MONITOR INTERFACE\r
+                               ,         STORAGE:  10\r
+                               ,         ROUTINES CALLED:      BUFCLR, ITMSET\r
+                               ,         SYMBOLS SET/USED:     \r
+                               ,             ACCUMULATORS:     DEVDAT U        PDP U\r
+                               ,                               ITEM   U        TAC S/U\r
+                               ,             DEVICE DATA BLOCKS:       DEVADR U\r
+                               ,                               DEVCTR S\r
+                               ,                               DEVPTR S/U\r
+\r
+\fIOCSS - IO COMMON SYSTEM SUBROUTINES  MACRO 10 05:51 24-APR-78 PAGE 22\r
+IOCSS  MAC     24-APR-78 23:13         5-17-65 PART 2\r
+\r
+\r
+                                         INTERN BPNSET,NEWBUF\r
+\r
+       000246' 550046  000007  NEWBUF:   HRRZ TAC,DEVADR(DEVDAT); TAC:=INPUT BUFFER HEADER ADDRESS\r
+       000247' 260140  000124'           PUSHJ PDP,BUFCLR;     CLEAR INPUT BUFFER.\r
+       000250' 540046  000007  BPNSET:   HRR TAC,DEVADR(DEVDAT)\r
+       000251' 515040  007737            HRLZI TAC,7737\r
+       000252' 404046  000010            AND TAC,DEVPTR(DEVDAT); DEVPTR 0-5:=0, DEVPTR 12:=0\r
+       000253' 540046  000007            HRR TAC,DEVADR(DEVDAT); DEVPTR 10-35:=C(DEVADR 18-35) + 1\r
+       000254' 350000  000001            AOS TAC\r
+       000255' 202046  000010            MOVEM TAC,DEVPTR(DEVDAT)\r
+       000256' 260140  000227'           PUSHJ PDP,ITMSET;     ITEM:=(BUFFER SIZE-1)[36/BYTE SIZE]\r
+       000257' 202206  000011            MOVEM ITEM,DEVCTR(DEVDAT); DEVCTR:=ITEM COUNT\r
+       000260' 263140  000000            POPJ PDP,;            RETURN\r
+\r
+\fIOCSS - IO COMMON SYSTEM SUBROUTINES  MACRO 10 05:51 24-APR-78 PAGE 23\r
+IOCSS  MAC     24-APR-78 23:13         5-17-65 PART 2\r
+\r
+\r
+\r
+                               ,DEC 06 00 EX COM L PT PRE 02 SETBYT\r
+                               ,H. R. MORSE        64-12-26\r
+                               ,CALLING SEQUENCE\r
+                               ,         PUSHJ PDP,SETBYT\r
+                               ,         EXIT                  ALWAYS RETURN HERE\r
+                               ,SETS     TAC 0-5:=0\r
+                               ,         TAC 6-11:=S\r
+                               ,         TAC 12-13:=0\r
+                               ,         TAC 14-17:=PROG\r
+                               ,WHERE S=35 IF DATA MODE (IOS 32-25) IS BINARY (B)\r
+                               ,      S=8  IF DATA MODE IS IMAGE (I)\r
+                               ,      S=7  IF DATA MODE IS   ASCII PACKED (A)\r
+                               ,                             ASCII LINE (AL)\r
+                               ,                             ASCII SEQUENCED (AS)\r
+                               ,                             ASCII SEQUENCED (ASL)\r
+                               ,                   OR        ALTERNATE MODE BREAK (AM)\r
+                               ,MONITOR INTERFACE\r
+                               ,         STORAGE:   12\r
+                               ,         SYMBOLS SET/USED:\r
+                               ,             ACCUMULATORS:     PROG  U                 TAC   S\r
+                               ,                               PDP   U                 TAC1  S/U\r
+                               ,             DEVICE DATA BLOCK:          DEVIOS U\r
+                                         INTERN SETBYT\r
+       000261' 200106  000002  SETBYT:   MOVE TAC1,DEVIOS(DEVDAT);     FETCH DATA MODE, BITS 32-35 0\r
+       000262' 405100  000017            ANDI TAC1, 17\r
+       000263' 302100  000013            CAIE TAC1,IB          ;DATA MODE IMAGE BINARY?\r
+       000264' 306100  000014            CAIN TAC1,B;          IS DATA MODE=BINARY?\r
+       000265' 505040  004407            HRLI TAC,4400+PROG;   SET BYTE SIZE TO 36.\r
+       000266' 306100  000010            CAIN TAC1,I;          IS DATA MODE=IMAGE?\r
+       000267' 254000  000274'           JRST SETBY1\r
+       000270' 602100  000014            TRNE TAC1,14;         IS DATA MODE=ASCII PACKED,ASCII LINE,\r
+       000271' 254000  000273'           JRST .+2;             ASCII SEQUENCED,OR ASCII SEQUENCED LINE\r
+       000272' 505040  000707            HRLI TAC,700+PROG;    SET BYTE SIZE TO 7.\r
+       000273' 263140  000000            POPJ PDP,;            RETURN\r
+\r
+       000274' 510046  000004  SETBY1:   HLLZ TAC,DEVMOD(DEVDAT)\r
+       000275' 621040  770077            TLZ TAC,770077\r
+       000276' 661040  000007            TLO TAC,PROG\r
+       000277' 263140  000000            POPJ PDP,\r
+\r
+\fIOCSS - IO COMMON SYSTEM SUBROUTINES  MACRO 10 05:51 24-APR-78 PAGE 24\r
+IOCSS  MAC     24-APR-78 23:13         5-17-65 PART 2\r
+\r
+\r
+\r
+                               ,DEC 06 00 EX COM L PT PRE 01 STORE ITEM\r
+                               ,H.R. MORSE         64-12-26\r
+                               ,CALLING SEQUENCE\r
+                               ,         PUSHJ PDP,STODAT\r
+                               ,         EXIT1                 CHECKSUM ERROR\r
+                               ,         EXIT2                 BLOCK FULL OR BLOCK COMPLETE\r
+                               ,         EXIT3                 DATA STORED CORRECTLY\r
+                               ,CALLED FROM AN INPUT SERVICE ROUTINE WITH A DATA ITEM IN AC DAT.\r
+                               ,STORES THE DATA ITEM IN THE BUFFER, CHECKING TO SEE IF IT WERE\r
+                               ,THE FIRST ITEM ON THE BUFFER AND SETTING UP THE POINTER AND\r
+                               ,WORD COUNT APPROPRIATELY CHECKING THE MODE TO SEE IF ANY SPECIAL\r
+                               ,PROCESSING NEED BE DONE.  FOR EXAMPLE, GENERATION OF SEQUENCE\r
+                               ,NUMBERS PRECEDING EACH LINE IN SEQUENCE MODE, OR THE TERMINATION\r
+                               ,OF A BUFFER ON CERTAIN CHARACTERS IN OTHER MODES, OR IF THE BUFFER\r
+                               ,RETURN OCCURS ON AN ERROR CONDITION. THE SECOND RETURN OCCURS\r
+                               ,ON A BLOCK FULL CONDITION OR BLOCK COMPLETE CONDITION, THE THIRD\r
+                               ,RETURN OCCURS ON THE DATA STORED CORRECTLY CONDITION.  THIS\r
+                               ,ROUTINE ALSO DOES SOME CHECKING ON INPUT OF BINARY RECORD,\r
+                               ,PAPER TAPE OR CARDS.\r
+                               ,CALLING SEQUENCE\r
+                               ,         PUSHJ PDP,STOSQD\r
+                               ,         XXXX                  ALWAYS SKIPS\r
+                               ,         EXIT                  ALWAYS RETURNS HERE\r
+                               ,STORES THE WORD COUNT:=C(DEVPTR 18-35) -C(DEVIAD 18-35) - 1\r
+                               ,IN THE BUFFER.\r
+                               ,MONITOR INTERFACE\r
+                               ,         STORAGE:  69\r
+                               ,         ROUTINES CALLED: ASCIA, CKS12, ITMSET, NEWBUF\r
+                               ,         SYMBOLS SET/USED:\r
+                               ,             ACCUMULATORS:             DAT    U  PDP  U\r
+                               ,                                       DEVDAT U  TAC S/U\r
+                               ,                                       IOS    S/U         TAC1 S/U\r
+                               ,                                       ITEM   S/U\r
+                               ,             DEVICE DATA BLOCK:        DEVCTR U  DEVPTR S/\r
+                               ,                                       DEVIAD U  DEVSEQ S/\r
+                               ,             IO STATUS WORD: A     U             I      U\r
+                               ,                                       AS   U             IOBKTL S\r
+                               ,                                       ASL  U             IODTER S\r
+                               ,                                       B    U             IOFST  S/\r
+                               ,             JOB BUFFER AREA:          WORD COUNT S\r
+\r
+\fIOCSS - IO COMMON SYSTEM SUBROUTINES  MACRO 10 05:51 24-APR-78 PAGE 25\r
+IOCSS  MAC     24-APR-78 23:13         5-17-65 PART 2\r
+\r
+\r
+                                         INTERN STODAT, STOSQD\r
+\r
+       000300' 603000  000004  STODAT:   TLNE IOS,IOFST;       WILL THE NEXT ITEM BE THE FIRST ITEM\r
+                               ,                                  OF A BUFFER?\r
+       000301' 260140  000246'           PUSHJ PDP,NEWBUF;     SET UP A NEW BUFFER. ITEM:=(BUFFER\r
+                               ,                                  SIZE - 1)*[36/BYTE SIZE]\r
+       000302' 135100  000000*           LDB TAC1,PIOMOD;      TAC1:=DATA MODE\r
+       000303' 306100  000014            CAIN TAC1,B;          MODE=BINARY?\r
+       000304' 254000  000343'           JRST STOBIN\r
+       000305' 621000  000004            TLZ IOS,IOFST\r
+       000306' 136246  000010  STO1:     DPBI DAT,DEVPTR(DEVDAT); STORE DATA IN BUFFER.\r
+       000307' 302100  000000            CAIE TAC1,A;          MODE=ASCII,  IMAGE, OR BINARY?\r
+       000310' 306100  000010            CAIN TAC1,I\r
+       000311' 254000  000323'           JRST STOAIB\r
+       000312' 306100  000014            CAIN TAC1,B\r
+       000313' 254000  000323'           JRST STOAIB\r
+       000314' 307240  000214            CAIG DAT,214          ;LINE FEED,FORM FEED, OR VERTICAL TAB?\r
+       000315' 305240  000212            CAIGE DAT,212\r
+       000316' 254000  000320'           JRST .+2  ;NO\r
+       000317' 254000  000335'           JRST STOSQD           ;YES\r
+       000320' 365200  000000*           SOJGE ITEM,CPOPJ2;    ITEM:=C(ITEM)-1. IS C(ITEM)>OR=0?\r
+       000321' 660000  040000  STOE1:    TRO IOS,IOBKTL                ;IOBKTL:=1\r
+       000322' 254000  000056*           JRST CPOPJ\r
+       000323' 367200  000320* STOAIB:   SOJG ITEM,CPOPJ2;     ITEM:=C(ITEM)-1. IS C(ITEM)>0?\r
+       000324' 306100  000000            CAIN TAC1,A;          MODE=ASCII?\r
+       000325' 254000  000335'           JRST STOSQD\r
+       000326' 306100  000014            CAIN TAC1,B;          MODE=BINARY?\r
+       000327' 254000  000353'           JRST STOBND\r
+       000330' 260140  000227' STOI:     PUSHJ PDP,ITMSET;     ITEM:=(BUFFER SIZE-1)*[36/BYTE SIZE]\r
+                               ,                                      - C(DEVCTR)\r
+       000331' 274206  000011            SUB ITEM,DEVCTR(DEVDAT)\r
+       000332' 550106  000007            HRRZ TAC1,DEVIAD(DEVDAT)      ;STORE ITEM COUNT INSTEAD OF\r
+       000333' 271200  000001            ADDI ITEM,1           ;IN FIRST WORD OF BUFFER\r
+       000334' 344100  000341'           AOJA TAC1,STOSQE\r
+\r
+\fIOCSS - IO COMMON SYSTEM SUBROUTINES  MACRO 10 05:51 24-APR-78 PAGE 26\r
+IOCSS  MAC     24-APR-78 23:13         5-17-65 PART 2\r
+\r
+\r
+       000335' 200106  000007  STOSQD:   MOVE TAC1,DEVIAD(DEVDAT); TAC1:=ADDRESS OF WORD COUNT\r
+       000336' 350000  000002            AOS TAC1\r
+       000337' 550206  000010            HRRZ ITEM,DEVPTR(DEVDAT); ITEM:=C(DEVPTR 18-25) -\r
+                               ,                                     C(DEVIAD 18-35) -1\r
+       000340' 274200  000002            SUB ITEM,TAC1\r
+       000341' 542220  000002  STOSQE:   HRRM ITEM,@TAC1       ;WORD COUNT TO FIRST WORD IN BUFFER\r
+       000342' 254000  000065*           JRST CPOPJ1;          EXIT2. BLOCK COMPLETE\r
+       000343' 627000  000004  STOBIN:   TLZN IOS,IOFST;       WILL THE NEXT ITEM BE THE FIRST ITEM\r
+       000344' 254000  000306'           JRST STO1;               OF A BUFFER?  IOSFST:=0\r
+       000345' 550040  000005            HRRZ TAC,DAT\r
+       000346' 313040  000004            CAMLE TAC,ITEM;       IS WORD COUNT <OR= (BUFFER SIZE-1)*\r
+       000347' 254000  000321'           JRST STOE1;              [36/BYTE SIZE]?\r
+       000350' 200200  000001            MOVE ITEM,TAC;        ITEM:=WORD COUNT\r
+       000351' 202266  000010            MOVEM DAT,@DEVPTR(DEVDAT); STORE WORD COUNT IN BUFFER\r
+       000352' 254000  000323*           JRST CPOPJ2;          EXIT3.  DATA STORED CORRECTLY.\r
+       000353' 550106  000007  STOBND:   HRRZ TAC1,DEVIAD(DEVDAT)\r
+       000354' 260140  000142'           PUSHJ PDP,CKS12;      COMPUTE CHECKSUM\r
+       000355' 270106  000007            ADD TAC1, DEVIAD(DEVDAT)\r
+       000356' 510120  000002            HLLZ TAC1,@TAC1;      DATA CHECKSUM=COMPUTED CHECKSUM?\r
+       000357' 316040  000002            CAMN TAC,TAC1\r
+       000360' 254000  000342*           JRST CPOPJ1;          EXIT2. BLOCK COMPLETE\r
+       000361' 660000  100000            TRO IOS,IODTER;       IODTER:=1\r
+       000362' 254000  000322*           JRST CPOPJ;           EXIT1. CHECKSUM ERROR\r
+\r
+\fIOCSS - IO COMMON SYSTEM SUBROUTINES  MACRO 10 05:51 24-APR-78 PAGE 27\r
+IOCSS  MAC     24-APR-78 23:13         5-17-65 PART 2\r
+\r
+\r
+\r
+                               ,DEC 06 00 EX COM L PT PRE 01 UINTQ\r
+                               ,H.R. MORSE  64-12-26\r
+                               ,CALLING SEQUENCE\r
+                               ,         PUSHJ PDP, UINT1\r
+                               ,         EXIT                  ALWAYS RETURNS HERE\r
+                               ,TAC:=CONTENTYS OF WORD FOLLOWING UUO CALL\r
+                               ,FROM USERS AREA.\r
+                               ,MONITOR INTERFACE\r
+                               ,         STORAGE: 4\r
+                               ,         SYMBOLS SET/USED:\r
+                               ,            ACCUMULATORS:   PDP U      TAC S/U\r
+                               ,                            PROG U     \r
+                                             INTERN UINTQ\r
+       000363' 200043  777777  UINTQ:        MOVE TAC, -1(PDP)                 ;TAC:=ADDRESS FOLLOWING UUO C\r
+       000364' 505040  000007                HRLI TAC, PROG                    ;RELOCATE ADDRESS\r
+       000365' 200060  000001                MOVE TAC, @TAC                    ;TAC:=CONTENTS OF WORD FOLLOW\r
+                                                                               ;UUO CALL FROM USERS AREA\r
+       000366' 263140  000000                POPJ PDP,                         ;RETURN\r
+\r
+                                             END,\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 000400\r
+\r
+9K CORE USED\r
+\r
+\fIOCSS - IO COMMON SYSTEM SUBROUTINES  MACRO 10 05:51 24-APR-78 PAGE 28\r
+IOCSS  MAC     24-APR-78 23:13         SYMBOL TABLE\r
+\r
+A              000000  INT\r
+AC1            000015  INT\r
+AC2            000016  INT\r
+AC3            000017  INT\r
+ADRCK          000131' EXT\r
+ADVBFE         000000' INT\r
+ADVBFF         000010' INT\r
+AL             000001  INT\r
+APR            000000  SPD\r
+ASSAS1         000035' \r
+ASSAS2         000036' \r
+ASSASG         000023' INT\r
+ASSCON         400000  INT\r
+ASSIN          000020' INT\r
+ASSPRG         200000  INT\r
+B              000014  INT\r
+BPNSET         000250' INT\r
+BUFC1          000102' \r
+BUFCLC         000071' INT\r
+BUFCLR         000124' INT\r
+BUFPNT         000012  INT\r
+BUFWRD         000013  INT\r
+CKS12          000142' INT\r
+CKS12A         000151' \r
+CLDS           000023' EXT\r
+CLEN           000037' EXT\r
+CLOSB          002000  INT\r
+CLOSE1         000000  EXT\r
+CLRBYT         000166' INT\r
+CLSIN          000002  INT\r
+CLSOUT         000001  INT\r
+CPOPJ          000362' EXT\r
+CPOPJ1         000360' EXT\r
+CPOPJ2         000352' EXT\r
+D              000017  INT\r
+DAT            000005  INT\r
+DCL            000001  INT\r
+DCW            020000  INT\r
+DDI            000007  INT\r
+DDO            000006  INT\r
+DDTMEM         000037  INT\r
+DDTSYM         000036  INT\r
+DEN            000004  INT\r
+DEV0           000053' \r
+DEVADR         000007  INT\r
+DEVBUF         000006  INT\r
+DEVCHR         000001  INT\r
+DEVCTR         000011  INT\r
+DEVDAT         000006  INT\r
+DEVIAD         000007  INT\r
+DEVIOS         000002  INT\r
+DEVLG          000044' INT\r
+\r
+\r
+\fIOCSS - IO COMMON SYSTEM SUBROUTINES  MACRO 10 05:51 24-APR-78 PAGE 28-1\r
+IOCSS  MAC     24-APR-78 23:13         SYMBOL TABLE\r
+\r
+DEVLOG         000005  INT\r
+DEVLP0         000046' \r
+DEVLP1         000064' \r
+DEVLST         000063' EXT\r
+DEVMOD         000004  INT\r
+DEVNAM         000000  INT\r
+DEVOAD         000010  INT\r
+DEVOPR         000060' EXT\r
+DEVPHY         000056' INT\r
+DEVPTR         000010  INT\r
+DEVSER         000003  INT\r
+DEVSRC         000041' INT\r
+DGF            000012  INT\r
+DIN            000003  INT\r
+DLK            000005  INT\r
+DOU            000002  INT\r
+DR             000016  INT\r
+DRL            000000  INT\r
+DSI            000011  INT\r
+DSO            000010  INT\r
+DTW            040000  INT\r
+DVAVAL         000040  INT\r
+DVCDR          100000  INT\r
+DVDIR          000004  INT\r
+DVDIRI         400000  INT\r
+DVIN           000002  INT\r
+DVLPT          040000  INT\r
+DVMTA          000020  INT\r
+DVOUT          000001  INT\r
+DVTTY          000010  INT\r
+ENTRB          020000  INT\r
+ERROR          000000  EXT\r
+FOLD           000153' \r
+I              000010  INT\r
+IB             000013  INT\r
+IBUFB          200000  INT\r
+ILLMOD         000242' EXT\r
+INITB          400000  INT\r
+INPB           010000  INT\r
+IO             000020  INT\r
+IOACT          010000  INT\r
+IOALL          000174' INT\r
+IOALL1         000176' \r
+IOBEG          000002  INT\r
+IOBKTL         040000  INT\r
+IOCON          000040  INT\r
+IODEND         020000  INT\r
+IODERR         200000  INT\r
+IODISC         400000  INT\r
+IODONE         400000  INT\r
+IODTER         100000  INT\r
+IOEND          000040  INT\r
+IOFST          000004  INT\r
+\r
+\fIOCSS - IO COMMON SYSTEM SUBROUTINES  MACRO 10 05:51 24-APR-78 PAGE 28-2\r
+IOCSS  MAC     24-APR-78 23:13         SYMBOL TABLE\r
+\r
+IOIMPM         400000  INT\r
+IOKILL         000207' INT\r
+IONRCK         000100  INT\r
+IORDEL         000100  INT\r
+IORELS         000173' INT\r
+IORET          000020  INT\r
+IOS            000000  INT\r
+IOSET          000211' INT\r
+IOSETC         000215' INT\r
+IOSTRT         000010  INT\r
+IOUSE          400000  INT\r
+IOW            000001  INT\r
+IOWC           000020  INT\r
+IOWS           400000  INT\r
+ITEM           000004  INT\r
+ITMCNT         000231' INT\r
+ITMCT1         000232' INT\r
+ITMSET         000227' INT\r
+JBFADR         000000  INT\r
+JBFCTR         000002  INT\r
+JBFPTR         000001  INT\r
+JBTADR         000213' EXT\r
+JBUF           000005  INT\r
+JDAT           000011  INT\r
+JERR           002000  INT\r
+JIOW           100000  INT\r
+JNA            004000  INT\r
+JOB            000000  EXT\r
+JOBFF          000117' EXT\r
+LOOKB          040000  INT\r
+MTW            010000  INT\r
+NEWBUF         000246' INT\r
+OBUFB          100000  INT\r
+OUTPB          004000  INT\r
+PDP            000003  INT\r
+PI             000004  SPD\r
+PICHN          000100  INT\r
+PIOMOD         000302' EXT\r
+PJOBN          000211' EXT\r
+PROG           000007  INT\r
+PUUOAC         000201' EXT\r
+RELEA1         000000  EXT\r
+RELEA3         000173' EXT\r
+RELEA5         000207' EXT\r
+RUN            200000  INT\r
+RUNABL         204000  INT\r
+SCNOFF         000030' EXT\r
+SCNON          000036' EXT\r
+SETBY1         000274' \r
+SETBYT         000261' INT\r
+SETIOS         000236' INT\r
+STO1           000306' \r
+STOAIB         000323' \r
+\r
+\fIOCSS - IO COMMON SYSTEM SUBROUTINES  MACRO 10 05:51 24-APR-78 PAGE 28-3\r
+IOCSS  MAC     24-APR-78 23:13         SYMBOL TABLE\r
+\r
+STOBIN         000343' \r
+STOBND         000353' \r
+STODAT         000300' INT\r
+STOE1          000321' \r
+STOI           000330' \r
+STOSQD         000335' INT\r
+STOSQE         000341' \r
+SYSTAP         000062' EXT\r
+TAC            000001  INT\r
+TAC1           000002  INT\r
+TEM            000010  INT\r
+TTYATC         020000  INT\r
+TTYUSE         010000  INT\r
+UINTQ          000363' INT\r
+USRJDA         000176' EXT\r
+USRMOD         010000  INT\r
+UUO            000014  INT\r
+WAIT1          000000  EXT\r
+\f   IIIIIIIII            OOOOOOOOO            IIIIIIIII         NNN         NNN         IIIIIIIII               111      \r
+   IIIIIIIII            OOOOOOOOO            IIIIIIIII         NNN         NNN         IIIIIIIII               111      \r
+   IIIIIIIII            OOOOOOOOO            IIIIIIIII         NNN         NNN         IIIIIIIII               111      \r
+      III            OOO         OOO            III            NNN         NNN            III               111111      \r
+      III            OOO         OOO            III            NNN         NNN            III               111111      \r
+      III            OOO         OOO            III            NNN         NNN            III               111111      \r
+      III            OOO         OOO            III            NNNNNN      NNN            III                  111      \r
+      III            OOO         OOO            III            NNNNNN      NNN            III                  111      \r
+      III            OOO         OOO            III            NNNNNN      NNN            III                  111      \r
+      III            OOO         OOO            III            NNN   NNN   NNN            III                  111      \r
+      III            OOO         OOO            III            NNN   NNN   NNN            III                  111      \r
+      III            OOO         OOO            III            NNN   NNN   NNN            III                  111      \r
+      III            OOO         OOO            III            NNN      NNNNNN            III                  111      \r
+      III            OOO         OOO            III            NNN      NNNNNN            III                  111      \r
+      III            OOO         OOO            III            NNN      NNNNNN            III                  111      \r
+      III            OOO         OOO            III            NNN         NNN            III                  111      \r
+      III            OOO         OOO            III            NNN         NNN            III                  111      \r
+      III            OOO         OOO            III            NNN         NNN            III                  111      \r
+   IIIIIIIII            OOOOOOOOO            IIIIIIIII         NNN         NNN         IIIIIIIII            111111111   \r
+   IIIIIIIII            OOOOOOOOO            IIIIIIIII         NNN         NNN         IIIIIIIII            111111111   \r
+   IIIIIIIII            OOOOOOOOO            IIIIIIIII         NNN         NNN         IIIIIIIII            111111111   \r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  05:53:58\r
+File: DSKB0 :IOINI1.LST   [8,296] Created: 20-April-1967 05:51:00 Printed: 24-April-1978 05:53:34\r
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:1816 \r
+File will be deleted after printing\r
+\f\r
+IOINI1 - IO INITIALIZATION PART 1      MACRO 10 05:51 24-APR-78 PAGE 1\r
+S      MAC     24-APR-78 21:40         MINIMAL CONFIGURATION\r
+\r
+                                       XLIST\r
+                                      LIST\r
+                               ;SOME MACROS FOR DEFINING CONFIGURATION\r
+\r
+                               DEFINE NAME (A)\r
+                               <DEFINE NAME1\r
+                               <CONFIG:  ASCIZ /A/\r
+                               INTERNAL CONFIG\r
+                               >\r
+                               XP A,0\r
+                               SUBTTL A CONFIGURATION\r
+                               >\r
+\r
+                               DEFINE DATE (A)\r
+                               <DEFINE DATE1\r
+                               <SYSDAT:  ASCIZ /A/\r
+                               INTERNAL SYSDAT\r
+                               >>\r
+\r
+                               DEFINE VERSION (A,B)\r
+                               <DEFINE VERS1\r
+                               <SYSNUM:  XWD ^D'A,^D'B\r
+                               XP SYSMOD,^D'A\r
+                               XP SYSVER,^D'B\r
+                               INTERNAL SYSNUM\r
+                               >>\r
+\r
+                               DEFINE CUSPTAPE (A)\r
+                               <DEFINE CUSP1\r
+                               <SYSTAP:  SIXBIT /A/\r
+                               INTERNAL SYSTAP\r
+                               >>\r
+\r
+                               DEFINE ACPDL (J,CHJN,CHJPDN)\r
+                               <         CH'J'N=CHJN\r
+                                CH'J'PDN=CHJPDN\r
+                               >\r
+\r
+\fIOINI1 - IO INITIALIZATION PART 1     MACRO 10 05:51 24-APR-78 PAGE 2\r
+IOINI  MAC     24-APR-78 01:14         MINIMAL CONFIGURATION\r
+\r
+\r
+                               NAME <MINIMAL>^DEFINE NAME1\r
+                               <CONFIG:  ASCIZ /MINIMAL/\r
+                               INTERNAL CONFIG\r
+                               >\r
+\r
+\fIOINI1 - IO INITIALIZATION PART 1     MACRO 10 05:51 24-APR-78 PAGE 2\r
+IOMIN  MAC     24-APR-78 02:16         MINIMAL CONFIGURATION\r
+\r
+\r
+                                       DATE <8-16-65>^DEFINE DATE1\r
+                               <SYSDAT:  ASCIZ /8-16-65/\r
+                               INTERNAL SYSDAT\r
+                               >^\r
+                                       VERSION 1,4^DEFINE VERS1\r
+                               <SYSNUM:  XWD ^D1,^D4\r
+                               XP SYSMOD,^D1\r
+                               XP SYSVER,^D4\r
+                               INTERNAL SYSNUM\r
+                               >^\r
+                                       CUSPTAPE DTA0^DEFINE CUSP1\r
+                               <SYSTAP:  SIXBIT /DTA0/\r
+                               INTERNAL SYSTAP\r
+                               >^\r
+\r
+                               ;DEFINE THE IO PART OF THE SYSTEM\r
+                               ;THAT IS:\r
+                               ;         DEFINE INTERRUPT SERVICE ROTUINE TO BE USED\r
+                               ;       ASSIGN DEVICES TO PI CHANNELS\r
+\r
+                               DEFINE SYSTEM\r
+                                <\r
+                                ASSOC APR,6,<>\r
+                                ASSOC CTY,3,<>\r
+                                ASSOC SCN,3,<TTY0,TTY1>\r
+                                ASSOC DTC,4,<DTA0>\r
+                               >\r
+\r
+                       000001  DTSIZ=1   ;MULTIPLE DECTAPE DIRECTORIES\r
+\r
+                       000001  SCNLIN=1\r
+\r
+                               ;DEFINE HIGHEST AC TO SAVE AND LENGTH OF PD LIST FOR EACH PI CHANNEL\r
+\r
+                       000000  ACPDL (1,0,0)^    CH1N=0\r
+                       000000  ACPDL (2,0,0)^    CH2N=0\r
+                       000011  ACPDL (3,11,20)^          CH3N=11\r
+                       000011  ACPDL (4,11,20)^          CH4N=11\r
+                       000000  ACPDL (5,0,0)^    CH5N=0\r
+                       000017  ACPDL (6,17,20^   CH6N=17\r
+                       000000  ACPDL (7,0,0)^    CH7N=0\r
+                                         TITLE IOINI1 - IO INITIALIZATION PART 1\r
+       000000' 466231  644632            NAME1^CONFIG:  ASCIZ /MINIMAL/\r
+       000001' 406300  000000\r
+       000002' 341326  133132            DATE1^SYSDAT:  ASCIZ /8-16-65/\r
+       000003' 331520  000000\r
+       000004' 000001  000004            VERS1^SYSNUM:  XWD ^D1,^D4\r
+       000005' 446441  200000            CUSP1^SYSTAP:  SIXBIT /DTA0/\r
+\r
+                               ;CONFIGURATION INDEPENDANT PART OF IOINIT FOLLOWS:\r
+\r
+                               EXTERNAL ERROR\r
+\r
+\fIOINI1 - IO INITIALIZATION PART 1     MACRO 10 05:51 24-APR-78 PAGE 1\r
+IOINI1 MAC     24-APR-78 04:05         MINIMAL CONFIGURATION\r
+\r
+\r
+                               ;SETUP CHANNEL SAVE AND RESTORE ROUTINES\r
+\r
+                       000000  CHANU1=0\r
+                       000000  CHANU2=0\r
+                       000000  CHANU3=0\r
+                       000000  CHANU4=0\r
+                       000000  CHANU5=0\r
+                       000000  CHANU6=0\r
+                       000000  CHANU7=0\r
+                               DEFINE ASSOC(A,NO,D)\r
+                               <IFE CHANU'NO,<\r
+                               CHANU'NO=1\r
+                               INTERNAL CH'NO'SAV,CH'NO',CH'NO'XIT,CH'NO'SAC\r
+                               \r
+                               CH'NO'SAV: 0\r
+                                 MOVEM CH'NO'N, CH'NO'SAC+CH'NO'N\r
+                                 MOVEI CH'NO'N, CH'NO'SAC\r
+                                 BLT CH'NO'N,CH'NO'SAC+CH'NO'N-1       ;DO ONLY ONCE FOR EACH CHANNEL\r
+                                 MOVE PDP, CH'NO'CJ\r
+                                 JRST @CH'NO'SAV\r
+                               \r
+                               CH'NO'SAC: REPEAT CH'NO'N+1,<EXP 0>     ;SPACE TO SAVE SOME AC'S\r
+                                         EXP CH'NO'XIT         ;FIRST ENTRY IN PD LIST(CHAN. EXIT)\r
+                                         REPEAT CH'NO'PDN-1,<EXP 0>    ;REST OF PD LIST\r
+                               \r
+                               CH'NO'XIT: MOVSI CH'NO'N, CH'NO'SAC\r
+                                BLT CH'NO'N, CH'NO'N\r
+                                JEN @CH'NO\r
+                               \r
+                               CH'NO'CJ: XWD -CH'NO'PDN+1,CH'NO'SAC+CH'NO'N+1  ;INIT. SETTING OF P\r
+                               \r
+                               CH'NO':   0             ;PC STORED HERE BY JSR\r
+                                JRST .+1 ;INSTR. AT END OF SERVICE CHAIN\r
+                                AOS CH'NO'ERR          ;SPURIOUS INTERRUPT, ADD TO COUNT\r
+                                JEN @CH'NO             ;AND DISMISS\r
+                               >\r
+                               >\r
+                               ;GENERATE THE SAVE AND RESTORE ROUTINES\r
+\r
+                                         SYSTEM^\r
+       000006' 000000  000000  CH6SAV: 0\r
+       000007' 202740  000033'   MOVEM CH6N, CH6SAC+CH6N\r
+       000010' 201740  000014'   MOVEI CH6N, CH6SAC\r
+       000011' 251740  000032'   BLT CH6N,CH6SAC+CH6N-1        ;DO ONLY ONCE FOR EACH CHANNEL\r
+       000012' 200140  000057'   MOVE PDP, CH6CJ\r
+       000013' 254020  000006'   JRST @CH6SAV\r
+       000014' 000000  000000  EXP 0\r
+       000015' 000000  000000  EXP 0\r
+       000016' 000000  000000  EXP 0\r
+       000017' 000000  000000  EXP 0\r
+       000020' 000000  000000  EXP 0\r
+       000021' 000000  000000  EXP 0\r
+\r
+\fIOINI1 - IO INITIALIZATION PART 1     MACRO 10 05:51 24-APR-78 PAGE 1-1\r
+IOINI1 MAC     24-APR-78 04:05         MINIMAL CONFIGURATION\r
+\r
+       000022' 000000  000000  EXP 0\r
+       000023' 000000  000000  EXP 0\r
+       000024' 000000  000000  EXP 0\r
+       000025' 000000  000000  EXP 0\r
+       000026' 000000  000000  EXP 0\r
+       000027' 000000  000000  EXP 0\r
+       000030' 000000  000000  EXP 0\r
+       000031' 000000  000000  EXP 0\r
+       000032' 000000  000000  EXP 0\r
+       000033' 000000  000000  EXP 0   ;SPACE TO SAVE SOM AC'S\r
+       000034' 000000  000054'           EXP CH6XIT            ;FIRST ENTRY IN PD LIST(CHAN. EXIT)\r
+       000035' 000000  000000  EXP 0\r
+       000036' 000000  000000  EXP 0\r
+       000037' 000000  000000  EXP 0\r
+       000040' 000000  000000  EXP 0\r
+       000041' 000000  000000  EXP 0\r
+       000042' 000000  000000  EXP 0\r
+       000043' 000000  000000  EXP 0\r
+       000044' 000000  000000  EXP 0\r
+       000045' 000000  000000  EXP 0\r
+       000046' 000000  000000  EXP 0\r
+       000047' 000000  000000  EXP 0\r
+       000050' 000000  000000  EXP 0\r
+       000051' 000000  000000  EXP 0\r
+       000052' 000000  000000  EXP 0\r
+       000053' 000000  000000  EXP 0   ;REST OF PD LIST\r
+       000054' 205740  000014' CH6XIT: MOVSI CH6N, CH6SAC\r
+       000055' 251740  000017   BLT CH6N, CH6N\r
+       000056' 254520  000060'  JEN @CH6\r
+       000057' 777761  000034' CH6CJ: XWD -CH6PDN+1,CH6SAC+CH6N+1      ;INIT. SETTING OF P\r
+       000060' 000000  000000  CH6:      0             ;PC STORED HERE BY JSR\r
+       000061' 254000  000062'  JRST .+1 ;INSTR. AT END OF SERVICE CHAIN\r
+       000062' 350000  000317'  AOS CH6ERR             ;SPURIOUS INTERRUPT, ADD TO COUNT\r
+       000063' 254520  000060'  JEN @CH6               ;AND DISMISS\r
+       000064' 000000  000000  CH3SAV: 0\r
+       000065' 202440  000103'   MOVEM CH3N, CH3SAC+CH3N\r
+       000066' 201440  000072'   MOVEI CH3N, CH3SAC\r
+       000067' 251440  000102'   BLT CH3N,CH3SAC+CH3N-1        ;DO ONLY ONCE FOR EACH CHANNEL\r
+       000070' 200140  000127'   MOVE PDP, CH3CJ\r
+       000071' 254020  000064'   JRST @CH3SAV\r
+       000072' 000000  000000  EXP 0\r
+       000073' 000000  000000  EXP 0\r
+       000074' 000000  000000  EXP 0\r
+       000075' 000000  000000  EXP 0\r
+       000076' 000000  000000  EXP 0\r
+       000077' 000000  000000  EXP 0\r
+       000100' 000000  000000  EXP 0\r
+       000101' 000000  000000  EXP 0\r
+       000102' 000000  000000  EXP 0\r
+       000103' 000000  000000  EXP 0   ;SPACE TO SAVE SOM AC'S\r
+       000104' 000000  000124'           EXP CH3XIT            ;FIRST ENTRY IN PD LIST(CHAN. EXIT)\r
+       000105' 000000  000000  EXP 0\r
+       000106' 000000  000000  EXP 0\r
+\r
+\fIOINI1 - IO INITIALIZATION PART 1     MACRO 10 05:51 24-APR-78 PAGE 1-2\r
+IOINI1 MAC     24-APR-78 04:05         MINIMAL CONFIGURATION\r
+\r
+       000107' 000000  000000  EXP 0\r
+       000110' 000000  000000  EXP 0\r
+       000111' 000000  000000  EXP 0\r
+       000112' 000000  000000  EXP 0\r
+       000113' 000000  000000  EXP 0\r
+       000114' 000000  000000  EXP 0\r
+       000115' 000000  000000  EXP 0\r
+       000116' 000000  000000  EXP 0\r
+       000117' 000000  000000  EXP 0\r
+       000120' 000000  000000  EXP 0\r
+       000121' 000000  000000  EXP 0\r
+       000122' 000000  000000  EXP 0\r
+       000123' 000000  000000  EXP 0   ;REST OF PD LIST\r
+       000124' 205440  000072' CH3XIT: MOVSI CH3N, CH3SAC\r
+       000125' 251440  000011   BLT CH3N, CH3N\r
+       000126' 254520  000130'  JEN @CH3\r
+       000127' 777761  000104' CH3CJ: XWD -CH3PDN+1,CH3SAC+CH3N+1      ;INIT. SETTING OF P\r
+       000130' 000000  000000  CH3:      0             ;PC STORED HERE BY JSR\r
+       000131' 254000  000132'  JRST .+1 ;INSTR. AT END OF SERVICE CHAIN\r
+       000132' 350000  000314'  AOS CH3ERR             ;SPURIOUS INTERRUPT, ADD TO COUNT\r
+       000133' 254520  000130'  JEN @CH3               ;AND DISMISS\r
+       000134' 000000  000000  CH4SAV: 0\r
+       000135' 202440  000153'   MOVEM CH4N, CH4SAC+CH4N\r
+       000136' 201440  000142'   MOVEI CH4N, CH4SAC\r
+       000137' 251440  000152'   BLT CH4N,CH4SAC+CH4N-1        ;DO ONLY ONCE FOR EACH CHANNEL\r
+       000140' 200140  000177'   MOVE PDP, CH4CJ\r
+       000141' 254020  000134'   JRST @CH4SAV\r
+       000142' 000000  000000  EXP 0\r
+       000143' 000000  000000  EXP 0\r
+       000144' 000000  000000  EXP 0\r
+       000145' 000000  000000  EXP 0\r
+       000146' 000000  000000  EXP 0\r
+       000147' 000000  000000  EXP 0\r
+       000150' 000000  000000  EXP 0\r
+       000151' 000000  000000  EXP 0\r
+       000152' 000000  000000  EXP 0\r
+       000153' 000000  000000  EXP 0   ;SPACE TO SAVE SOM AC'S\r
+       000154' 000000  000174'           EXP CH4XIT            ;FIRST ENTRY IN PD LIST(CHAN. EXIT)\r
+       000155' 000000  000000  EXP 0\r
+       000156' 000000  000000  EXP 0\r
+       000157' 000000  000000  EXP 0\r
+       000160' 000000  000000  EXP 0\r
+       000161' 000000  000000  EXP 0\r
+       000162' 000000  000000  EXP 0\r
+       000163' 000000  000000  EXP 0\r
+       000164' 000000  000000  EXP 0\r
+       000165' 000000  000000  EXP 0\r
+       000166' 000000  000000  EXP 0\r
+       000167' 000000  000000  EXP 0\r
+       000170' 000000  000000  EXP 0\r
+       000171' 000000  000000  EXP 0\r
+       000172' 000000  000000  EXP 0\r
+       000173' 000000  000000  EXP 0   ;REST OF PD LIST\r
+\r
+\fIOINI1 - IO INITIALIZATION PART 1     MACRO 10 05:51 24-APR-78 PAGE 1-3\r
+IOINI1 MAC     24-APR-78 04:05         MINIMAL CONFIGURATION\r
+\r
+       000174' 205440  000142' CH4XIT: MOVSI CH4N, CH4SAC\r
+       000175' 251440  000011   BLT CH4N, CH4N\r
+       000176' 254520  000200'  JEN @CH4\r
+       000177' 777761  000154' CH4CJ: XWD -CH4PDN+1,CH4SAC+CH4N+1      ;INIT. SETTING OF P\r
+       000200' 000000  000000  CH4:      0             ;PC STORED HERE BY JSR\r
+       000201' 254000  000202'  JRST .+1 ;INSTR. AT END OF SERVICE CHAIN\r
+       000202' 350000  000315'  AOS CH4ERR             ;SPURIOUS INTERRUPT, ADD TO COUNT\r
+       000203' 254520  000200'  JEN @CH4               ;AND DISMISS\r
+\r
+                               ;SET UP NULL CHANNEL ROUTINES FOR UNUSED CHANNELS\r
+\r
+                               DEFINE NULCHN(J)\r
+                               <\r
+                               INTERNAL CH'J,CH'J'XIT\r
+                               CH'J:     0\r
+                               CH'J'XIT: AOS CH'J'ERR\r
+                                JEN @CH'J\r
+                               >\r
+\r
+                                         IFE CHANU1,<NULCHN(1)>^\r
+       000204' 000000  000000  CH1:      0\r
+       000205' 350000  000312' CH1XIT: AOS CH1ERR\r
+       000206' 254520  000204'  JEN @CH1\r
+                                         IFE CHANU2,<NULCHN(2)>^\r
+       000207' 000000  000000  CH2:      0\r
+       000210' 350000  000313' CH2XIT: AOS CH2ERR\r
+       000211' 254520  000207'  JEN @CH2\r
+                                         IFE CHANU3,<NULCHN(3)>\r
+                                         IFE CHANU4,<NULCHN(4)>\r
+                                         IFE CHANU5,<NULCHN(5)>^\r
+       000212' 000000  000000  CH5:      0\r
+       000213' 350000  000316' CH5XIT: AOS CH5ERR\r
+       000214' 254520  000212'  JEN @CH5\r
+                                         IFE CHANU6,<NULCHN(6)>\r
+                                         IFE CHANU7,<NULCHN(7)>^\r
+       000215' 000000  000000  CH7:      0\r
+       000216' 350000  000320' CH7XIT: AOS CH7ERR\r
+       000217' 254520  000215'  JEN @CH7\r
+\r
+\fIOINI1 - IO INITIALIZATION PART 1     MACRO 10 05:51 24-APR-78 PAGE 2\r
+IOINI1 MAC     24-APR-78 04:05         MINIMAL CONFIGURATION\r
+\r
+\r
+\r
+                               ;ASSIGN DEVICE TO CHANNELS AND SETUP CORESPONDENCE TABLE\r
+                               ;OF CHANNELS TO SERVICE ROUTINES\r
+\r
+                               DEFINE ASSOC (A,N,D)\r
+                               <         A'RET=CH'N'XIT\r
+                                A'SAV=CH'N'SAV\r
+                                A'SAC=CH'N'SAC\r
+                                A'CHL=CH'N\r
+                                A'CHN=N\r
+                                A'BIT=1\r
+                                REPEAT 7-N,<A'BIT=A'BIT*2>\r
+                                A'OFF=1000+A'BIT       ;CONO PI, A'OFF WIL TURN CHANNEL OFF\r
+                                A'ON=2000+A'BIT        ;TURN BACK ON\r
+                                A'ACT=4000+A'BIT       ;FORCE INTERRUPT ON CHAN.\r
+                               INTERN A'RET, A'SAV, A'CHL, A'CHN, A'SAC\r
+                               INTERNAL A'OFF,A'ON,A'ACT,A'BIT\r
+                                XWD A'CHL,A'INT\r
+                                EXTERNAL A'INT\r
+                               >\r
+\r
+                               INTERNAL DEVINT\r
+       000220'                 DEVINT:   SYSTEM^\r
+       000220' 000060' 000000*  XWD APRCHL,APRINT\r
+       000221' 000130' 000000*  XWD CTYCHL,CTYINT\r
+       000222' 000130' 000000*  XWD SCNCHL,SCNINT\r
+       000223' 000200' 000000*  XWD DTCCHL,DTCINT\r
+                       000004  NDEV=.-DEVINT           ;NO. OF DEVICE INTERUPT SERVICE ROUTINES\r
+                       000003  NDEVM1=NDEV-1           ;(USED BY ONCE)\r
+                               INTERNAL NDEVM1\r
+\r
+\fIOINI1 - IO INITIALIZATION PART 1     MACRO 10 05:51 24-APR-78 PAGE 3\r
+IOINI1 MAC     24-APR-78 04:05         MINIMAL CONFIGURATION\r
+\r
+\r
+\r
+                               ;INITIALIZE SOME IO DEVICES\r
+                               ;IOINI CALLED BY A PUSHJ PDP, FROM SYSINI AT SYSTEM INITIALIZATION\r
+\r
+                               DEFINE IOINIT (A)\r
+                               <IRP A\r
+                               <         EXTERNAL A'INI\r
+                                PUSHJ PDP,A'INI\r
+                               >>\r
+\r
+                               DEFINE ASSOC (A,B,C)\r
+                               <         IFIDN <A><MTC>,< IOINIT MTC>\r
+                                IFIDN <A><DTC>,< IOINIT DTC>\r
+                                IFIDN <A><LPT>,< IOINIT LPT>\r
+                                IFIDN <A><SCN>,< IOINIT SCN>\r
+                                IFIDN <A><PTP>,<IOINIT PTP>\r
+                                IFIDN <A><PTR>,<IOINIT PTR>\r
+                               >\r
+\r
+                               INTERNAL IOINI\r
+\r
+       000224'                 IOINI:  SYSTEM^\r
+       000224' 260140  000000*  PUSHJ PDP,SCNINI\r
+       000225' 260140  000000*  PUSHJ PDP,DTCINI\r
+       000226' 254000  000000*         JRST CLKINI             ;ALWAYS INIT. CLOCK\r
+\r
+                               EXTERNAL CLKINI\r
+\r
+\fIOINI1 - IO INITIALIZATION PART 1     MACRO 10 05:51 24-APR-78 PAGE 4\r
+IOINI1 MAC     24-APR-78 04:05         MINIMAL CONFIGURATION\r
+\r
+\r
+\r
+                               ;CLOCK CONTROL PARAMETERS\r
+\r
+                       004006            CLDS=4000+APRCHN      ;CLOCK DISABLE\r
+                       000206            CLEN=200+APRCHN       ;CLOCK ENABLE\r
+\r
+                                         INTERNAL CLDS,CLEN\r
+\r
+                               ;BYTE POINTERS\r
+\r
+       000227' 270400  000014  PUUOAC:   POINT 4,UUO,12        ;UUO AC FIELD\r
+       000230' 000400  000000  PIOMOD:   POINT 4,IOS,35        ;MODE BITS\r
+       000231' 331106  000001  PJOBN:    POINT 9,DEVCHR(DEVDAT),8      ;DEVICE JOB ASSIGNMENT\r
+       000232' 220406  000001  PJDCHN:   POINT 4,DEVCHR(DEVDAT),17     ;JOB DEVICE CHANNEL NO.\r
+       000233' 140606  000001  PUNIT:    POINT 6,DEVCHR(DEVDAT),23     ;DEVICE UNIT NO.\r
+\r
+                               INTERNAL PUUOAC,PIOMOD,PJOBN,PJDCHN,PUNIT\r
+\r
+                               ;COMMON SUBROUTINE RETURNS\r
+\r
+       000234' 350003  000000  CPOPJ2:   AOS (PDP)\r
+       000235' 350003  000000  CPOPJ1:   AOS (PDP)\r
+       000236' 263140  000000  CPOPJ:    POPJ PDP,\r
+\r
+                               INTERNAL CPOPJ,CPOPJ1,CPOPJ2\r
+\r
+\fIOINI1 - IO INITIALIZATION PART 1     MACRO 10 05:51 24-APR-78 PAGE 5\r
+IOINI1 MAC     24-APR-78 04:05         MINIMAL CONFIGURATION\r
+\r
+\r
+                               ,SYSTEM DATA STORAGE\r
+\r
+\r
+                               INTERNAL JOB,JOBADR,JBTADR,JBTSTS,USRREL,USRINF,USRJDA\r
+                               INTERNAL USRPDP,JOBDAT,USRDDT,USRSAV,USRUXT,USRLO,USRHI\r
+                               INTERNAL COMCNT,IOCOMP,USRPOV,STOPU,SCHEDF,TIME,JBTAD1\r
+                               INTERNAL MTAVAL,DCAVAL,DTAVAL,MTREQ,DCREQ,DTREQ,TTYTAB,CORTAB\r
+                               INTERNAL CH1ERR,CH2ERR,CH3ERR,CH4ERR,CH5ERR,CH6ERR,CH7ERR\r
+                               INTERNAL CORLST,CORTAB,CORTAL,SYSEND,SYSBEG,DEVOPR\r
+\r
+                       000000  JOBN=0  ;DEFINE NO. OF JOBS (0 THRU JOBN-1)\r
+                               ;THERE MUST BE MORE TTY DEVICE DATA BLCKS THAN JOBS.\r
+\r
+                               DEFINE ASSOC (A,N,D)\r
+                               <IRP D,<IFIDN <A><SCN>,<JOBN=JOBN+1>>>\r
+                                         SYSTEM^\r
+               777777  777776  MJOBN=-JOBN\r
+                               INTERNAL JOBN,MJOBN\r
+\r
+       000237'                 SYSBEG:   ;FIRST LOC IN SYSTEM DATA AREA\r
+                               XP SYSBG1,SYSBEG+1      ;FIRST LOC+1\r
+       000237' 000000  000000  JOB:      0             ;CURRENT JOB NUMBER EXCEPT WEN SCHEDF IS NON-ZERO\r
+       000240' 000000  000000  JOBADR:   0             ;CONTAINS ADDRESS OF JOB CURRENTLY RUNNING\r
+       000241' 000000  000000  JOBDAT:   0             ;CONTAINS ADDRESS OF JOB DATA AREA\r
+\r
+       000242'                 JBTADR:   BLOCK JOBN            ;C(LH)=PROTECT, C(RH)=RELOCATION\r
+                               XP JBTAD1,JBTADR+1   ;ADDRESS OF JOB 1(USED BY SYSMAK)\r
+       000244'                 JBTSTS:   BLOCK JOBN            ;CONTAINS STATUS INFORMATION FOR EACH J\r
+\r
+       000246' 000000  000000  USRPDP:   0         ;USER PUSH DOWN POINTER\r
+       000247' 000000  000000  USRREL:   0         ;LH=0, RH CONTAINS CONTENTS OF PROTECTION REGISTER\r
+       000250'                 USRLO:    ;FIRST LOC CLEARD BY SETUSR SUBROUTINE\r
+       000250' 000000  000000  USRUXT:   0         ;UNUSED,  JOBUXT USED TO SAVE UUO PC(UUO0)\r
+       000251' 000000  000000  USRLEV:   0         ;UNUSED,  JOBLEV USED TO SAVE LOC. 40\r
+       000252' 000000  000000  USRSAV:   0         ;TEMPORARY STORAGE FOR UUO HANDLER\r
+       000253' 000000  000000  USRPOV:   0         ;PUSH DOWN OVERFLOW TRAP\r
+       000254'                           BLOCK 2\r
+       000256' 000000  000000  USRINF:   0         ;UN LAYED OUT USER INFORMATION\r
+       000257'                 USRJDA:   BLOCK 20  ;RH=JOB DEVICE ASSIGNMENTS FOR THIS USER,LH=UUOS\r
+                               XP USRHI,.-1        ;LAST LOC CLEARED BY SETUSR ROUTINE\r
+                               XP USRPFI,.-1       ;LAST LOC PROTECTED FROM IO SERVICE\r
+                               XP USRPFU,.         ;LAST LOC PROTECTED FROM USER PROGRAM\r
+       000277' 000000  000000  USRDDT:   0         ;STARTING ADDR OF USER DDT\r
+\r
+                               ;DEVICE JUSTR BECOME AVAILABLE FLAGS\r
+       000300' 000000  000000  MTAVAL:   0          ;MAGNETIC TAPE\r
+       000301' 000000  000000  DCAVAL:   0          ;DATA CONTROL\r
+       000302' 000000  000000  DTAVAL:   0          ;DECTAPE\r
+\r
+                               ;NUMBER OF JOBS WAITING FOR DEVICES(-1=NONE, 0=1 USING, 1=1 USING)\r
+       000303' 777777  777777  MTREQ:    -1        ;MAGNETIC TAPE\r
+       000304' 777777  777777  DCREQ:    -1        ;DATA CONTROL\r
+\r
+\fIOINI1 - IO INITIALIZATION PART 1     MACRO 10 05:51 24-APR-78 PAGE 5-1\r
+IOINI1 MAC     24-APR-78 04:05         MINIMAL CONFIGURATION\r
+\r
+       000305' 777777  777777  DTREQ:    -1        ;DECTAPE\r
+       000306' 000000  000000  IOCOMP:   0         ;NUMBER OF USERS IN IO WAIT STATE\r
+       000307' 000000  000000  COMCNT:   0         ;NUMBER OF COMMANDS TYPED-IN BUT NOT DECODED\r
+       000310' 000000  000000  STOPU:    0         ;NON-ZERO WHEN CLOCK INTERRUPT FORCED TO STOP USER\r
+       000311' 000000  000000  SCHEDF:   0         ;NON-ZERO WHEN CLOCK ROUTINE IS SCHEDULING\r
+\r
+       000312' 000000  000000  CH1ERR:   0         ;SPURIOUS INTERRUPT COUNTS FOR EACH CHANNEL\r
+       000313' 000000  000000  CH2ERR:   0\r
+       000314' 000000  000000  CH3ERR:   0\r
+       000315' 000000  000000  CH4ERR:   0\r
+       000316' 000000  000000  CH5ERR:   0\r
+       000317' 000000  000000  CH6ERR:   0\r
+       000320' 000000  000000  CH7ERR:   0\r
+\r
+                       000251'            USRLO1=USRLO+1\r
+                                          INTERNAL USRLO1\r
+\r
+\fIOINI1 - IO INITIALIZATION PART 1     MACRO 10 05:51 24-APR-78 PAGE 6\r
+IOINI1 MAC     24-APR-78 04:05         MINIMAL CONFIGURATION\r
+\r
+\r
+       000321' 000000  000000  TIME:     0             ;TIME SYSTEM HAS RUN IN 60THS OF A SECOND\r
+\r
+\r
+                               XP TTYLEN,SCNLIN+1   ;LENGTH OF TTY TRANSLATOR TABLES(INCLUDING CTY)\r
+       000322'                 TTYTAB:   BLOCK TTYLEN          ;TTY TRANSLATOR TABLE\r
+                                                               ;SIGN BIT = 1 IF COMMAND JUST TYPED\r
+                                                               ;BITS 1 -9, JOB CONSOLE IS ATTACHED TO\r
+                                                               ;BITS 18-35, THE DEVICE DATA BLOCK FOR\r
+       000324' 000000  000000  DEVOPR:   0             ;SIXBIT PHYSICAL NAME OF OPERATORS\r
+                                                       ;CONSOLE SET BY SCNSER TO FIRST ACTIVE TTY.\r
+                               ;LOCATIONS FOR CORE ALLOCATION\r
+                               XP CORBLK,^D256          ;NO. OF 1K BLOCKS POSSIBLE\r
+       000325'                 CORTAB:   BLOCK <CORBLK>/^D36+1         ;1K BLOCK USE BIT TABLE\r
+                                                               ;A 1 MEANS BLOCK IS IN USE\r
+       000335' 000000  000000  CORLST:   0             ;1 BIT BYTE POINTER TO LAST FREE BLOCK POSSIBLE\r
+       000336' 000000  000000  CORTAL:   0             ;TOTAL NO. OF FREE CORE BLOCKS LEFT\r
+                               ;CORLST AND CORTAL ARE SET UP AT SYSTEM INITIALIZATION\r
+\r
+                       000336' SYSEND=.-1              ;LAST LOC. CLEARED BY SYSINI\r
+\r
+                               INTERNAL SYSSIZ\r
+                               EXTERNAL SYSFIN\r
+       000337' 000000  000000* SYSSIZ:   EXP SYSFIN            ;SIZE OF MONITOR(LAST LOC. USED)\r
+\r
+\fIOINI1 - IO INITIALIZATION PART 1     MACRO 10 05:51 24-APR-78 PAGE 7\r
+IOINI1 MAC     24-APR-78 04:05         MINIMAL CONFIGURATION\r
+\r
+\r
+                                         END,\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 000340\r
+\r
+9K CORE USED\r
+\r
+\fIOINI1 - IO INITIALIZATION PART 1     MACRO 10 05:51 24-APR-78 PAGE 8\r
+IOINI1 MAC     24-APR-78 04:05         SYMBOL TABLE\r
+\r
+A              000000  INT\r
+AC1            000015  INT\r
+AC2            000016  INT\r
+AC3            000017  INT\r
+AL             000001  INT\r
+APRACT         004002  INT\r
+APRBIT         000002  INT\r
+APRCHL         000060' INT\r
+APRCHN         000006  INT\r
+APRINT         000220' EXT\r
+APROFF         001002  INT\r
+APRON          002002  INT\r
+APRRET         000054' INT\r
+APRSAC         000014' INT\r
+APRSAV         000006' INT\r
+ASSCON         400000  INT\r
+ASSPRG         200000  INT\r
+B              000014  INT\r
+BUFPNT         000012  INT\r
+BUFWRD         000013  INT\r
+CH1            000204' INT\r
+CH1ERR         000312' INT\r
+CH1N           000000  \r
+CH1PDN         000000  \r
+CH1XIT         000205' INT\r
+CH2            000207' INT\r
+CH2ERR         000313' INT\r
+CH2N           000000  \r
+CH2PDN         000000  \r
+CH2XIT         000210' INT\r
+CH3            000130' INT\r
+CH3CJ          000127' \r
+CH3ERR         000314' INT\r
+CH3N           000011  \r
+CH3PDN         000020  \r
+CH3SAC         000072' INT\r
+CH3SAV         000064' INT\r
+CH3XIT         000124' INT\r
+CH4            000200' INT\r
+CH4CJ          000177' \r
+CH4ERR         000315' INT\r
+CH4N           000011  \r
+CH4PDN         000020  \r
+CH4SAC         000142' INT\r
+CH4SAV         000134' INT\r
+CH4XIT         000174' INT\r
+CH5            000212' INT\r
+CH5ERR         000316' INT\r
+CH5N           000000  \r
+CH5PDN         000000  \r
+\r
+\r
+\fIOINI1 - IO INITIALIZATION PART 1     MACRO 10 05:51 24-APR-78 PAGE 8-1\r
+IOINI1 MAC     24-APR-78 04:05         SYMBOL TABLE\r
+\r
+CH5XIT         000213' INT\r
+CH6            000060' INT\r
+CH6CJ          000057' \r
+CH6ERR         000317' INT\r
+CH6N           000017  \r
+CH6PDN         000020  \r
+CH6SAC         000014' INT\r
+CH6SAV         000006' INT\r
+CH6XIT         000054' INT\r
+CH7            000215' INT\r
+CH7ERR         000320' INT\r
+CH7N           000000  \r
+CH7PDN         000000  \r
+CH7XIT         000216' INT\r
+CHANU1         000000  \r
+CHANU2         000000  \r
+CHANU3         000001  \r
+CHANU4         000001  \r
+CHANU5         000000  \r
+CHANU6         000001  \r
+CHANU7         000000  \r
+CLDS           004006  INT\r
+CLEN           000206  INT\r
+CLKINI         000226' EXT\r
+CLOSB          002000  INT\r
+CLSIN          000002  INT\r
+CLSOUT         000001  INT\r
+COMCNT         000307' INT\r
+CONFIG         000000' INT\r
+CORBLK         000400  INT\r
+CORLST         000335' INT\r
+CORTAB         000325' INT\r
+CORTAL         000336' INT\r
+CPOPJ          000236' INT\r
+CPOPJ1         000235' INT\r
+CPOPJ2         000234' INT\r
+CTYACT         004020  INT\r
+CTYBIT         000020  INT\r
+CTYCHL         000130' INT\r
+CTYCHN         000003  INT\r
+CTYINT         000221' EXT\r
+CTYOFF         001020  INT\r
+CTYON          002020  INT\r
+CTYRET         000124' INT\r
+CTYSAC         000072' INT\r
+CTYSAV         000064' INT\r
+D              000017  INT\r
+DAT            000005  INT\r
+DCAVAL         000301' INT\r
+\r
+\r
+\fIOINI1 - IO INITIALIZATION PART 1     MACRO 10 05:51 24-APR-78 PAGE 8-2\r
+IOINI1 MAC     24-APR-78 04:05         SYMBOL TABLE\r
+\r
+DCL            000001  INT\r
+DCREQ          000304' INT\r
+DCW            020000  INT\r
+DDI            000007  INT\r
+DDO            000006  INT\r
+DDTMEM         000037  INT\r
+DDTSYM         000036  INT\r
+DEN            000004  INT\r
+DEVADR         000007  INT\r
+DEVBUF         000006  INT\r
+DEVCHR         000001  INT\r
+DEVCTR         000011  INT\r
+DEVDAT         000006  INT\r
+DEVIAD         000007  INT\r
+DEVINT         000220' INT\r
+DEVIOS         000002  INT\r
+DEVLOG         000005  INT\r
+DEVMOD         000004  INT\r
+DEVNAM         000000  INT\r
+DEVOAD         000010  INT\r
+DEVOPR         000324' INT\r
+DEVPTR         000010  INT\r
+DEVSER         000003  INT\r
+DGF            000012  INT\r
+DIN            000003  INT\r
+DLK            000005  INT\r
+DOU            000002  INT\r
+DR             000016  INT\r
+DRL            000000  INT\r
+DSI            000011  INT\r
+DSO            000010  INT\r
+DTAVAL         000302' INT\r
+DTCACT         004010  INT\r
+DTCBIT         000010  INT\r
+DTCCHL         000200' INT\r
+DTCCHN         000004  INT\r
+DTCINI         000225' EXT\r
+DTCINT         000223' EXT\r
+DTCOFF         001010  INT\r
+DTCON          002010  INT\r
+DTCRET         000174' INT\r
+DTCSAC         000142' INT\r
+DTCSAV         000134' INT\r
+DTREQ          000305' INT\r
+DTSIZ          000001  \r
+DTW            040000  INT\r
+DVAVAL         000040  INT\r
+DVCDR          100000  INT\r
+DVDIR          000004  INT\r
+DVDIRI         400000  INT\r
+DVIN           000002  INT\r
+DVLPT          040000  INT\r
+DVMTA          000020  INT\r
+\r
+\fIOINI1 - IO INITIALIZATION PART 1     MACRO 10 05:51 24-APR-78 PAGE 8-3\r
+IOINI1 MAC     24-APR-78 04:05         SYMBOL TABLE\r
+\r
+DVOUT          000001  INT\r
+DVTTY          000010  INT\r
+ENTRB          020000  INT\r
+ERROR          000000  EXT\r
+I              000010  INT\r
+IB             000013  INT\r
+IBUFB          200000  INT\r
+INITB          400000  INT\r
+INPB           010000  INT\r
+IO             000020  INT\r
+IOACT          010000  INT\r
+IOBEG          000002  INT\r
+IOBKTL         040000  INT\r
+IOCOMP         000306' INT\r
+IOCON          000040  INT\r
+IODEND         020000  INT\r
+IODERR         200000  INT\r
+IODISC         400000  INT\r
+IODONE         400000  INT\r
+IODTER         100000  INT\r
+IOEND          000040  INT\r
+IOFST          000004  INT\r
+IOIMPM         400000  INT\r
+IOINI          000224' INT\r
+IONRCK         000100  INT\r
+IORDEL         000100  INT\r
+IORET          000020  INT\r
+IOS            000000  INT\r
+IOSTRT         000010  INT\r
+IOUSE          400000  INT\r
+IOW            000001  INT\r
+IOWC           000020  INT\r
+IOWS           400000  INT\r
+ITEM           000004  INT\r
+JBFADR         000000  INT\r
+JBFCTR         000002  INT\r
+JBFPTR         000001  INT\r
+JBTAD1         000243' INT\r
+JBTADR         000242' INT\r
+JBTSTS         000244' INT\r
+JBUF           000005  INT\r
+JDAT           000011  INT\r
+JERR           002000  INT\r
+JIOW           100000  INT\r
+JNA            004000  INT\r
+JOB            000237' INT\r
+JOBADR         000240' INT\r
+JOBDAT         000241' INT\r
+JOBN           000002  INT\r
+LOOKB          040000  INT\r
+MINIMA         000000  INT\r
+MJOBN  777777  777776  INT\r
+\r
+\r
+\fIOINI1 - IO INITIALIZATION PART 1     MACRO 10 05:51 24-APR-78 PAGE 8-4\r
+IOINI1 MAC     24-APR-78 04:05         SYMBOL TABLE\r
+\r
+MTAVAL         000300' INT\r
+MTREQ          000303' INT\r
+MTW            010000  INT\r
+NDEV           000004  \r
+NDEVM1         000003  INT\r
+OBUFB          100000  INT\r
+OUTPB          004000  INT\r
+PDP            000003  INT\r
+PICHN          000100  INT\r
+PIOMOD         000230' INT\r
+PJDCHN         000232' INT\r
+PJOBN          000231' INT\r
+PROG           000007  INT\r
+PUNIT          000233' INT\r
+PUUOAC         000227' INT\r
+RUN            200000  INT\r
+RUNABL         204000  INT\r
+SCHEDF         000311' INT\r
+SCNACT         004020  INT\r
+SCNBIT         000020  INT\r
+SCNCHL         000130' INT\r
+SCNCHN         000003  INT\r
+SCNINI         000224' EXT\r
+SCNINT         000222' EXT\r
+SCNLIN         000001  \r
+SCNOFF         001020  INT\r
+SCNON          002020  INT\r
+SCNRET         000124' INT\r
+SCNSAC         000072' INT\r
+SCNSAV         000064' INT\r
+STOPU          000310' INT\r
+SYSBEG         000237' INT\r
+SYSBG1         000240' INT\r
+SYSDAT         000002' INT\r
+SYSEND         000336' INT\r
+SYSFIN         000337' EXT\r
+SYSMOD         000001  INT\r
+SYSNUM         000004' INT\r
+SYSSIZ         000337' INT\r
+SYSTAP         000005' INT\r
+SYSVER         000004  INT\r
+TAC            000001  INT\r
+TAC1           000002  INT\r
+TEM            000010  INT\r
+TIME           000321' INT\r
+TTYATC         020000  INT\r
+TTYLEN         000002  INT\r
+TTYTAB         000322' INT\r
+TTYUSE         010000  INT\r
+\r
+\r
+\fIOINI1 - IO INITIALIZATION PART 1     MACRO 10 05:51 24-APR-78 PAGE 8-5\r
+IOINI1 MAC     24-APR-78 04:05         SYMBOL TABLE\r
+\r
+USRDDT         000277' INT\r
+USRHI          000276' INT\r
+USRINF         000256' INT\r
+USRJDA         000257' INT\r
+USRLEV         000251' \r
+USRLO          000250' INT\r
+USRLO1         000251' INT\r
+USRMOD         010000  INT\r
+USRPDP         000246' INT\r
+USRPFI         000276' INT\r
+USRPFU         000277' INT\r
+USRPOV         000253' INT\r
+USRREL         000247' INT\r
+USRSAV         000252' INT\r
+USRUXT         000250' INT\r
+UUO            000014  INT\r
+\f   IIIIIIIII            OOOOOOOOO            IIIIIIIII         NNN         NNN         IIIIIIIII            222222222   \r
+   IIIIIIIII            OOOOOOOOO            IIIIIIIII         NNN         NNN         IIIIIIIII            222222222   \r
+   IIIIIIIII            OOOOOOOOO            IIIIIIIII         NNN         NNN         IIIIIIIII            222222222   \r
+      III            OOO         OOO            III            NNN         NNN            III            222         222\r
+      III            OOO         OOO            III            NNN         NNN            III            222         222\r
+      III            OOO         OOO            III            NNN         NNN            III            222         222\r
+      III            OOO         OOO            III            NNNNNN      NNN            III                        222\r
+      III            OOO         OOO            III            NNNNNN      NNN            III                        222\r
+      III            OOO         OOO            III            NNNNNN      NNN            III                        222\r
+      III            OOO         OOO            III            NNN   NNN   NNN            III                     222   \r
+      III            OOO         OOO            III            NNN   NNN   NNN            III                     222   \r
+      III            OOO         OOO            III            NNN   NNN   NNN            III                     222   \r
+      III            OOO         OOO            III            NNN      NNNNNN            III                  222      \r
+      III            OOO         OOO            III            NNN      NNNNNN            III                  222      \r
+      III            OOO         OOO            III            NNN      NNNNNN            III                  222      \r
+      III            OOO         OOO            III            NNN         NNN            III               222         \r
+      III            OOO         OOO            III            NNN         NNN            III               222         \r
+      III            OOO         OOO            III            NNN         NNN            III               222         \r
+   IIIIIIIII            OOOOOOOOO            IIIIIIIII         NNN         NNN         IIIIIIIII         222222222222222\r
+   IIIIIIIII            OOOOOOOOO            IIIIIIIII         NNN         NNN         IIIIIIIII         222222222222222\r
+   IIIIIIIII            OOOOOOOOO            IIIIIIIII         NNN         NNN         IIIIIIIII         222222222222222\r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  05:53:58\r
+File: DSKB0 :IOINI2.LST   [8,296] Created: 20-April-1967 05:51:00 Printed: 24-April-1978 05:53:34\r
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:1796 \r
+File will be deleted after printing\r
+\f\r
+IOINI2 - IO INITIALIZATION PART 2      MACRO 10 05:51 24-APR-78 PAGE 1\r
+S      MAC     24-APR-78 21:40         MINIMAL CONFIGURATION\r
+\r
+                                       XLIST\r
+                                      LIST\r
+                               ;SOME MACROS FOR DEFINING CONFIGURATION\r
+\r
+                               DEFINE NAME (A)\r
+                               <DEFINE NAME1\r
+                               <CONFIG:  ASCIZ /A/\r
+                               INTERNAL CONFIG\r
+                               >\r
+                               XP A,0\r
+                               SUBTTL A CONFIGURATION\r
+                               >\r
+\r
+                               DEFINE DATE (A)\r
+                               <DEFINE DATE1\r
+                               <SYSDAT:  ASCIZ /A/\r
+                               INTERNAL SYSDAT\r
+                               >>\r
+\r
+                               DEFINE VERSION (A,B)\r
+                               <DEFINE VERS1\r
+                               <SYSNUM:  XWD ^D'A,^D'B\r
+                               XP SYSMOD,^D'A\r
+                               XP SYSVER,^D'B\r
+                               INTERNAL SYSNUM\r
+                               >>\r
+\r
+                               DEFINE CUSPTAPE (A)\r
+                               <DEFINE CUSP1\r
+                               <SYSTAP:  SIXBIT /A/\r
+                               INTERNAL SYSTAP\r
+                               >>\r
+\r
+                               DEFINE ACPDL (J,CHJN,CHJPDN)\r
+                               <         CH'J'N=CHJN\r
+                                CH'J'PDN=CHJPDN\r
+                               >\r
+\r
+\fIOINI2 - IO INITIALIZATION PART 2     MACRO 10 05:51 24-APR-78 PAGE 2\r
+IOINI  MAC     24-APR-78 01:14         MINIMAL CONFIGURATION\r
+\r
+\r
+                               NAME <MINIMAL>^DEFINE NAME1\r
+                               <CONFIG:  ASCIZ /MINIMAL/\r
+                               INTERNAL CONFIG\r
+                               >\r
+\r
+\fIOINI2 - IO INITIALIZATION PART 2     MACRO 10 05:51 24-APR-78 PAGE 2\r
+IOMIN  MAC     24-APR-78 02:16         MINIMAL CONFIGURATION\r
+\r
+\r
+                                       DATE <8-16-65>^DEFINE DATE1\r
+                               <SYSDAT:  ASCIZ /8-16-65/\r
+                               INTERNAL SYSDAT\r
+                               >^\r
+                                       VERSION 1,4^DEFINE VERS1\r
+                               <SYSNUM:  XWD ^D1,^D4\r
+                               XP SYSMOD,^D1\r
+                               XP SYSVER,^D4\r
+                               INTERNAL SYSNUM\r
+                               >^\r
+                                       CUSPTAPE DTA0^DEFINE CUSP1\r
+                               <SYSTAP:  SIXBIT /DTA0/\r
+                               INTERNAL SYSTAP\r
+                               >^\r
+\r
+                               ;DEFINE THE IO PART OF THE SYSTEM\r
+                               ;THAT IS:\r
+                               ;         DEFINE INTERRUPT SERVICE ROTUINE TO BE USED\r
+                               ;       ASSIGN DEVICES TO PI CHANNELS\r
+\r
+                               DEFINE SYSTEM\r
+                                <\r
+                                ASSOC APR,6,<>\r
+                                ASSOC CTY,3,<>\r
+                                ASSOC SCN,3,<TTY0,TTY1>\r
+                                ASSOC DTC,4,<DTA0>\r
+                               >\r
+\r
+                       000001  DTSIZ=1   ;MULTIPLE DECTAPE DIRECTORIES\r
+\r
+                       000001  SCNLIN=1\r
+\r
+                               ;DEFINE HIGHEST AC TO SAVE AND LENGTH OF PD LIST FOR EACH PI CHANNEL\r
+\r
+                       000000  ACPDL (1,0,0)^    CH1N=0\r
+                       000000  ACPDL (2,0,0)^    CH2N=0\r
+                       000011  ACPDL (3,11,20)^          CH3N=11\r
+                       000011  ACPDL (4,11,20)^          CH4N=11\r
+                       000000  ACPDL (5,0,0)^    CH5N=0\r
+                       000017  ACPDL (6,17,20^   CH6N=17\r
+                       000000  ACPDL (7,0,0)^    CH7N=0\r
+                                       TITLE IOINI2 - IO INITIALIZATION PART 2\r
+\r
+                               ;DEFINITIONS OF DEVCHN AND DEVBIT\r
+                               ;THESE ALSO OCCUR IN IOINT1\r
+\r
+                               DEFINE ASSOC (A,N,D)\r
+                               <\r
+                                 A'CHN=N\r
+                               >\r
+\r
+                                         SYSTEM^\r
+\r
+\fIOINI2 - IO INITIALIZATION PART 2     MACRO 10 05:51 24-APR-78 PAGE 1\r
+IOINI2 MAC     24-APR-78 03:06         MINIMAL CONFIGURATION\r
+\r
+\r
+\r
+\fIOINI2 - IO INITIALIZATION PART 2     MACRO 10 05:51 24-APR-78 PAGE 2\r
+IOINI2 MAC     24-APR-78 03:06         MINIMAL CONFIGURATION\r
+\r
+\r
+\r
+                               ;APR PIP BITS\r
+\r
+                       000001  APRBIT=1\r
+                       000002  REPEAT 7-APRCHN,<APRBIT=APRBIT*2>\r
+                               XP PION,200             ;CONO PI,PION TURNS PI SYSTEM ON\r
+                               XP PIOFF,400            ;TURN IT OFF\r
+                               XP PICLK,PION+1B24+APRBIT       ;TURN PI ON, AND FORCE CLOCK INT.\r
+                               XP CLKOFF,1000+APRCHN           ;CONO APR,CLKOFF TURNS CLOCK FLAG OFF\r
+\r
+\fIOINI2 - IO INITIALIZATION PART 2     MACRO 10 05:51 24-APR-78 PAGE 3\r
+IOINI2 MAC     24-APR-78 03:06         MINIMAL CONFIGURATION\r
+\r
+\r
+\r
+                               ;ASSEMBLE ALL DEVICE DATA BLOCKS AND LINK THEM TOGETHER\r
+\r
+                               DEFINE SCNDDB (A,B,C)\r
+                               <         INTERNAL C'DB\r
+                               C'DB:     ZZ=.\r
+                                SIXBIT /C/\r
+                                XWD A'CHN*PICHN,STTYBF+1       ;LONG ENOUGH FOR PRINTING\r
+                                               ;SEQUENCE CARD IMAGE.\r
+                                               ;USER BUFFERS ARE 2 WORDS\r
+                                               ;LONGER THEN THE MONITORY TTY BUFFERS.\r
+                                0\r
+                               EXTERNAL  TTYDSP\r
+                                XWD C,TTYDSP\r
+                                XWD DVTTY+DVIN+DVOUT,3\r
+                                0\r
+                                0\r
+                                XWD PROG,0\r
+                                XWD PROG,0\r
+                                XP TTYPTR,.-ZZ\r
+                                0\r
+                                XP TTYCTR,.-ZZ\r
+                                0\r
+                                XP TTYSAV,.-ZZ\r
+                                0\r
+                                XP TTYBUF,.-ZZ\r
+                                XP TTYBM1,TTYBUF-1\r
+                               XP STTYBF,20\r
+                               XP STTYB1,STTYBF+1      ;LENGTH+1\r
+                                BLOCK STTYBF\r
+                               XP TTYBFE,.-ZZ-1\r
+                               \r
+                               ;LINE NO. PARAMETERS\r
+                               XP TTYLEN,SCNLIN+1  ;LENGTH OF TTY TRANSLATOR TABLE(INCLUDE TTY)\r
+                               XP TSCNLN,SCNLIN-1  ;HIGHEST TTY LINE NO.(NOT COUNTING CTY)\r
+                               XP TCONLN,TSCNLN+1  ;CTY LINE NUMBER\r
+                               XP MTTYLN,-TTYLEN   ;NEGATIVEL LENGTH OF TRANSLATOR TABLE\r
+                               XP FSNCHN,SCNCHN*101 ;CHANNEL ASSIGNED, FOR FULL DUPLEX SCN.\r
+                                XP TTYLST,TTY0DB    ;FIRST TTY DEVICE DATA BLOCK\r
+                                >\r
+\r
+                               ;NEG. NO. OF TELTYPE DEVICE DATA BLOCKS\r
+\r
+                       000000  MLTTYL=0\r
+                               DEFINE ASSOC (A,N,D)\r
+                               <IRP D,<IFIDN <A>,<SCN>,<MLTTYL=MLTTYL-1>>>\r
+\r
+                                         SYSTEM^\r
+\r
+                               INTERNAL MLTTYL\r
+\r
+\fIOINI2 - IO INITIALIZATION PART 2     MACRO 10 05:51 24-APR-78 PAGE 4\r
+IOINI2 MAC     24-APR-78 03:06         MINIMAL CONFIGURATION\r
+\r
+\r
+\r
+                               ;MAG TAPE DEVICE DATA BLOCK\r
+\r
+                       000000  MTCNUM=0\r
+\r
+                               DEFINE MTCDDB (A,B,C)\r
+                               <         INTERNAL C'DB\r
+                               C'DB:     SIXBIT /C/\r
+                               MTCNUM=MTCNUM+1\r
+                                XWD IORET+A'CHN*PICHN,<MTCNUM-1>*10000+201\r
+                               \r
+                                0\r
+                                XWD C,MTDISP\r
+                               EXTERNAL MTDISP\r
+                                XWD 4400+DVMTA+DVIN+DVOUT,154403\r
+                                0\r
+                                0\r
+                                XWD PROG,0\r
+                                XWD PROG,0\r
+                               >\r
+\r
+\fIOINI2 - IO INITIALIZATION PART 2     MACRO 10 05:51 24-APR-78 PAGE 5\r
+IOINI2 MAC     24-APR-78 03:06         MINIMAL CONFIGURATION\r
+\r
+\r
+                               ;DECTAPE DEVICE DATA BLOCK\r
+\r
+                       000000  DTCNUM=0\r
+\r
+                               DEFINE DTCDDB (A,B,C)\r
+                               <         INTERNAL C'DB\r
+                               C'DB:     ZZ=.\r
+                                SIXBIT /C/\r
+                               DTCNUM=DTCNUM+1\r
+                                XWD IORET+A'CHN*PICHN,<DTCNUM-1>*10000+201\r
+                                0\r
+                                XWD C,UTDSP\r
+                               EXTERNAL UTDSP\r
+                                XWD 4400+DVDIR+DVIN+DVOUT,154403\r
+                                0\r
+                                0\r
+                                0\r
+                                0\r
+                               XP UFREE,.-ZZ   ;NEXT FREE BLOCK NO.\r
+                                0\r
+                                XP UDIR,.-ZZ   ;LINK TO DIRECTORY IN DATA BLOCK\r
+                                IFE DTSIZ,<    EXP DIRBUF\r
+                               >\r
+                               IFN DTSIZ,<     EXP DTDIR+200*<DTCNUM-1>\r
+                               >\r
+                               >\r
+\r
+\r
+\fIOINI2 - IO INITIALIZATION PART 2     MACRO 10 05:51 24-APR-78 PAGE 6\r
+IOINI2 MAC     24-APR-78 03:06         MINIMAL CONFIGURATION\r
+\r
+\r
+\r
+                               ;LINE PRINTER DEVICE DTA BLOCK\r
+\r
+                               DEFINE LPTDDB (A,B,C)\r
+                               <INTERNAL LPTDB,LPTDAT,LPTCHR,LPTIOS,LPTSER,LPTMOD\r
+                               INTERNAL LPTBUF,LPTPTR,LPTADR,LPTSV1\r
+                               EXTERNAL LPTDSP\r
+                               \r
+                               LPTDB:\r
+                               LPTDAT:   SIXBIT /LPT/\r
+                               LPTCHR:   XWD A'CHN*PICHN,32\r
+                               LPTIOS:   0\r
+                               LPTSER:   XWD C,LPTDSP\r
+                               LPTMOD:   XWD 0+DVOUT,3\r
+                                0\r
+                               LPTBUF:   0\r
+                               LPTPTR:   0\r
+                               LPTADR:   XWD PROG,0\r
+                               LPTSV1:   0\r
+                               \r
+                               XP LPTCLB,LPTCHN+200  ;PI CHANNEL AND BUSY FLAG\r
+                               XP LPTCHB,11*LPTCHN ;LINE PRINTER ERROR AND DATA CHANNELS\r
+                               >\r
+\r
+\fIOINI2 - IO INITIALIZATION PART 2     MACRO 10 05:51 24-APR-78 PAGE 7\r
+IOINI2 MAC     24-APR-78 03:06         MINIMAL CONFIGURATION\r
+\r
+\r
+\r
+                               ;CARD READER DEVICE DATA BLOCK\r
+\r
+                               DEFINE CDRDDB (A,B,C)\r
+                               <INTERNAL CDRDB,CDRDAT,CRDIS\r
+                               EXTERNAL CDRDSP\r
+                               \r
+                               CDRDB:\r
+                               CDRDAT:   SIXBIT /CDR/\r
+                                XWD A'CHN*PICHN,34 ;LONG ENOUGHT FOR BINARY CARDS\r
+                                0\r
+                                XWD C,CDRDSP\r
+                                XWD DVCDR+1400+DVIN,14403\r
+                                0\r
+                                0\r
+                                XWD PROG,0\r
+                                0\r
+                                0\r
+                               CRDIS:    JRST .\r
+                               >\r
+\r
+\fIOINI2 - IO INITIALIZATION PART 2     MACRO 10 05:51 24-APR-78 PAGE 8\r
+IOINI2 MAC     24-APR-78 03:06         MINIMAL CONFIGURATION\r
+\r
+\r
+\r
+                               ;PAPER TAPE READER DEVICE DATA BLOCK\r
+\r
+                               DEFINE PTRDDB (A,B,C)\r
+                               <INTERNAL PTRDB,PTRDAT,PTRCHR,PTRIOS,PTRSER\r
+                               INTERNAL PTRMOD,PTRBUF,PTRADR,PTRPTR,PTRCTR,PTRSVC,PTRSV1\r
+                               EXTERNAL PTRDSP\r
+                               \r
+                               PTRDB:\r
+                               PTRDAT:   SIXBIT /PTR/\r
+                               PTRCHR:   XWD A'CHN*PICHN,41\r
+                               PTRIOS:   0\r
+                               PTRSER:   XWD C,PTRDSP\r
+                               PTRMOD:   XWD 1000+DVIN,14403\r
+                                0\r
+                               PTRBUF:   0\r
+                               PTRADR:   XWD PROG,0\r
+                               PTRPTR:   0\r
+                               PTRCTR:   0\r
+                               PTRSVC:   0\r
+                               PTRSV1:   0\r
+                               >\r
+\r
+\fIOINI2 - IO INITIALIZATION PART 2     MACRO 10 05:51 24-APR-78 PAGE 9\r
+IOINI2 MAC     24-APR-78 03:06         MINIMAL CONFIGURATION\r
+\r
+\r
+\r
+                               ;PAPER TAPE PUNCH DEVICE DATA BLOCK\r
+\r
+                               DEFINE PTPDDB (A,B,C)\r
+                               <INTERNAL PTPDB,PTPDAT,PTPCHR,PTPIOS,PTPSER,PTPMOD,PTPBUF\r
+                               INTERNAL PTPPTR,PTPADR,PTPCTR,PTPCNT,PTPCHA,PTPSIO\r
+                               EXTERNAL PTPDSP\r
+                               \r
+                               PTPDB:\r
+                               PTPDAT:   SIXBIT /PTP/\r
+                               PTPCHR:   XWD A'CHN*PICHN,41\r
+                               PTPIOS:   0\r
+                               PTPSER:   XWD C,PTPDSP\r
+                               PTPMOD:   XWD 1000+DVOUT,14403\r
+                                0\r
+                               PTPBUF:   0\r
+                               PTPPTR:   0\r
+                               PTPADR:   XWD PROG,0\r
+                               PTPCTR:   0\r
+                               PTPCNT:   0\r
+                               PTPCHA:   0\r
+                               PTPSIO:   0\r
+                               >\r
+\r
+\fIOINI2 - IO INITIALIZATION PART 2     MACRO 10 05:51 24-APR-78 PAGE 10\r
+IOINI2 MAC     24-APR-78 03:06         MINIMAL CONFIGURATION\r
+\r
+\r
+\r
+                               ;GENERATE DEVICE DATA BLOCKS NEEDED FOR THIS CONFIGURATION\r
+\r
+                               DEFINE ASSOC (A,B,C)\r
+                               <\r
+                               IRP C,<\r
+                                         ;DEFINE FORWARD LINL SYMBOL\r
+                                LINK\r
+                               ;\r
+                               ;\r
+                               ;\r
+                                A'DDB A,B,C\r
+                               \r
+                               C=0       ;SET LINK TO 0(IN CASE THIS IS LAST DDB)\r
+                               DEFINE LINK\r
+                               <C=.>\r
+                               >\r
+                               >\r
+\r
+                               INTERNAL DEVLST\r
+\r
+       000000' 000001' 000000  DEVLST:   XWD FIRDB,0           ;BEGINNING OF DEVICE DATA BLOCK CHAIN\r
+\r
+                               DEFINE LINK\r
+                               <FIRDB=.>\r
+\r
+                                         SYSTEM^\r
+       000001' 646471  200000   SIXBIT /TTY0/\r
+       000002' 000300  000021   XWD SCNCHN*PICHN,STTYBF+1      ;LONG ENOUGH FOR PRINTING\r
+       000003' 000000  000000   0\r
+       000004' 000035' 000000*  XWD TTY0,TTYDSP\r
+       000005' 000013  000003   XWD DVTTY+DVIN+DVOUT,3\r
+       000006' 000000  000000   0\r
+       000007' 000000  000000   0\r
+       000010' 000007  000000   XWD PROG,0\r
+       000011' 000007  000000   XWD PROG,0\r
+       000012' 000000  000000   0\r
+       000013' 000000  000000   0\r
+       000014' 000000  000000   0\r
+       000035' 646471  210000   SIXBIT /TTY1/\r
+       000036' 000300  000021   XWD SCNCHN*PICHN,STTYBF+1      ;LONG ENOUGH FOR PRINTING\r
+       000037' 000000  000000   0\r
+       000040' 000071' 000004*  XWD TTY1,TTYDSP\r
+       000041' 000013  000003   XWD DVTTY+DVIN+DVOUT,3\r
+       000042' 000000  000000   0\r
+       000043' 000000  000000   0\r
+       000044' 000007  000000   XWD PROG,0\r
+       000045' 000007  000000   XWD PROG,0\r
+       000046' 000000  000000   0\r
+       000047' 000000  000000   0\r
+       000050' 000000  000000   0\r
+       000071' 446441  200000   SIXBIT /DTA0/\r
+\r
+\fIOINI2 - IO INITIALIZATION PART 2     MACRO 10 05:51 24-APR-78 PAGE 10-1\r
+IOINI2 MAC     24-APR-78 03:06         MINIMAL CONFIGURATION\r
+\r
+       000072' 000420  000201   XWD IORET+DTCCHN*PICHN,<DTCNUM-1>*10000+201\r
+       000073' 000000  000000   0\r
+       000074' 000000  000000*  XWD DTA0,UTDSP\r
+       000075' 004407  154403   XWD 4400+DVDIR+DVIN+DVOUT,154403\r
+       000076' 000000  000000   0\r
+       000077' 000000  000000   0\r
+       000100' 000000  000000   0\r
+       000101' 000000  000000   0\r
+       000102' 000000  000000   0\r
+       000103' 000000  000104' IFN DTSIZ,<     EXP DTDIR+200*<DTCNUM-1>\r
+\r
+\fIOINI2 - IO INITIALIZATION PART 2     MACRO 10 05:51 24-APR-78 PAGE 11\r
+IOINI2 MAC     24-APR-78 03:06         MINIMAL CONFIGURATION\r
+\r
+\r
+\r
+       000104'                           LIT\r
+\r
+                                         IFE DTSIZ,<           DIRBUF: BLOCK 200\r
+                                INTERNAL DIRBUF\r
+                               >\r
+\r
+       000104'                 IFN DTSIZ,<DTDIR:       BLOCK DTCNUM*200\r
+                               INTERNAL DTDIR\r
+                               >\r
+\r
+                                         END,\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 000304\r
+\r
+10K CORE USED\r
+\r
+\fIOINI2 - IO INITIALIZATION PART 2     MACRO 10 05:51 24-APR-78 PAGE 12\r
+IOINI2 MAC     24-APR-78 03:06         SYMBOL TABLE\r
+\r
+A              000000  INT\r
+AC1            000015  INT\r
+AC2            000016  INT\r
+AC3            000017  INT\r
+AL             000001  INT\r
+APRBIT         000002  \r
+APRCHN         000006  \r
+ASSCON         400000  INT\r
+ASSPRG         200000  INT\r
+B              000014  INT\r
+BUFPNT         000012  INT\r
+BUFWRD         000013  INT\r
+CH1N           000000  \r
+CH1PDN         000000  \r
+CH2N           000000  \r
+CH2PDN         000000  \r
+CH3N           000011  \r
+CH3PDN         000020  \r
+CH4N           000011  \r
+CH4PDN         000020  \r
+CH5N           000000  \r
+CH5PDN         000000  \r
+CH6N           000017  \r
+CH6PDN         000020  \r
+CH7N           000000  \r
+CH7PDN         000000  \r
+CLKOFF         001006  INT\r
+CLOSB          002000  INT\r
+CLSIN          000002  INT\r
+CLSOUT         000001  INT\r
+CTYCHN         000003  \r
+D              000017  INT\r
+DAT            000005  INT\r
+DCL            000001  INT\r
+DCW            020000  INT\r
+DDI            000007  INT\r
+DDO            000006  INT\r
+DDTMEM         000037  INT\r
+DDTSYM         000036  INT\r
+DEN            000004  INT\r
+DEVADR         000007  INT\r
+DEVBUF         000006  INT\r
+DEVCHR         000001  INT\r
+DEVCTR         000011  INT\r
+DEVDAT         000006  INT\r
+\r
+\r
+\fIOINI2 - IO INITIALIZATION PART 2     MACRO 10 05:51 24-APR-78 PAGE 12-1\r
+IOINI2 MAC     24-APR-78 03:06         SYMBOL TABLE\r
+\r
+DEVIAD         000007  INT\r
+DEVIOS         000002  INT\r
+DEVLOG         000005  INT\r
+DEVLST         000000' INT\r
+DEVMOD         000004  INT\r
+DEVNAM         000000  INT\r
+DEVOAD         000010  INT\r
+DEVPTR         000010  INT\r
+DEVSER         000003  INT\r
+DGF            000012  INT\r
+DIN            000003  INT\r
+DLK            000005  INT\r
+DOU            000002  INT\r
+DR             000016  INT\r
+DRL            000000  INT\r
+DSI            000011  INT\r
+DSO            000010  INT\r
+DTA0           000000  \r
+DTA0DB         000071' INT\r
+DTCCHN         000004  \r
+DTCNUM         000001  \r
+DTDIR          000104' INT\r
+DTSIZ          000001  \r
+DTW            040000  INT\r
+DVAVAL         000040  INT\r
+DVCDR          100000  INT\r
+DVDIR          000004  INT\r
+DVDIRI         400000  INT\r
+DVIN           000002  INT\r
+DVLPT          040000  INT\r
+DVMTA          000020  INT\r
+DVOUT          000001  INT\r
+DVTTY          000010  INT\r
+ENTRB          020000  INT\r
+FIRDB          000001' \r
+FSNCHN         000303  INT\r
+I              000010  INT\r
+IB             000013  INT\r
+IBUFB          200000  INT\r
+INITB          400000  INT\r
+INPB           010000  INT\r
+IO             000020  INT\r
+IOACT          010000  INT\r
+IOBEG          000002  INT\r
+IOBKTL         040000  INT\r
+IOCON          000040  INT\r
+IODEND         020000  INT\r
+IODERR         200000  INT\r
+IODISC         400000  INT\r
+IODONE         400000  INT\r
+IODTER         100000  INT\r
+IOEND          000040  INT\r
+\r
+\r
+\fIOINI2 - IO INITIALIZATION PART 2     MACRO 10 05:51 24-APR-78 PAGE 12-2\r
+IOINI2 MAC     24-APR-78 03:06         SYMBOL TABLE\r
+\r
+IOFST          000004  INT\r
+IOIMPM         400000  INT\r
+IONRCK         000100  INT\r
+IORDEL         000100  INT\r
+IORET          000020  INT\r
+IOS            000000  INT\r
+IOSTRT         000010  INT\r
+IOUSE          400000  INT\r
+IOW            000001  INT\r
+IOWC           000020  INT\r
+IOWS           400000  INT\r
+ITEM           000004  INT\r
+JBFADR         000000  INT\r
+JBFCTR         000002  INT\r
+JBFPTR         000001  INT\r
+JBUF           000005  INT\r
+JDAT           000011  INT\r
+JERR           002000  INT\r
+JIOW           100000  INT\r
+JNA            004000  INT\r
+LOOKB          040000  INT\r
+MINIMA         000000  INT\r
+MLTTYL 777777  777776  INT\r
+MTCNUM         000000  \r
+MTTYLN 777777  777776  INT\r
+MTW            010000  INT\r
+OBUFB          100000  INT\r
+OUTPB          004000  INT\r
+PDP            000003  INT\r
+PICHN          000100  INT\r
+PICLK          004202  INT\r
+PIOFF          000400  INT\r
+PION           000200  INT\r
+PROG           000007  INT\r
+RUN            200000  INT\r
+RUNABL         204000  INT\r
+SCNCHN         000003  \r
+SCNLIN         000001  \r
+STTYB1         000021  INT\r
+STTYBF         000020  INT\r
+TAC            000001  INT\r
+TAC1           000002  INT\r
+TCONLN         000001  INT\r
+TEM            000010  INT\r
+\r
+\r
+\fIOINI2 - IO INITIALIZATION PART 2     MACRO 10 05:51 24-APR-78 PAGE 12-3\r
+IOINI2 MAC     24-APR-78 03:06         SYMBOL TABLE\r
+\r
+TSCNLN         000000  INT\r
+TTY0           000035' \r
+TTY0DB         000001' INT\r
+TTY1           000071' \r
+TTY1DB         000035' INT\r
+TTYATC         020000  INT\r
+TTYBFE         000033  INT\r
+TTYBM1         000013  INT\r
+TTYBUF         000014  INT\r
+TTYCTR         000012  INT\r
+TTYDSP         000040' EXT\r
+TTYLEN         000002  INT\r
+TTYLST         000001' INT\r
+TTYPTR         000011  INT\r
+TTYSAV         000013  INT\r
+TTYUSE         010000  INT\r
+UDIR           000012  INT\r
+UFREE          000011  INT\r
+USRMOD         010000  INT\r
+UTDSP          000074' EXT\r
+UUO            000014  INT\r
+\f   IIIIIIIII            OOOOOOOOO            IIIIIIIII         NNN         NNN         IIIIIIIII            333333333   \r
+   IIIIIIIII            OOOOOOOOO            IIIIIIIII         NNN         NNN         IIIIIIIII            333333333   \r
+   IIIIIIIII            OOOOOOOOO            IIIIIIIII         NNN         NNN         IIIIIIIII            333333333   \r
+      III            OOO         OOO            III            NNN         NNN            III            333         333\r
+      III            OOO         OOO            III            NNN         NNN            III            333         333\r
+      III            OOO         OOO            III            NNN         NNN            III            333         333\r
+      III            OOO         OOO            III            NNNNNN      NNN            III                        333\r
+      III            OOO         OOO            III            NNNNNN      NNN            III                        333\r
+      III            OOO         OOO            III            NNNNNN      NNN            III                        333\r
+      III            OOO         OOO            III            NNN   NNN   NNN            III                     333   \r
+      III            OOO         OOO            III            NNN   NNN   NNN            III                     333   \r
+      III            OOO         OOO            III            NNN   NNN   NNN            III                     333   \r
+      III            OOO         OOO            III            NNN      NNNNNN            III                        333\r
+      III            OOO         OOO            III            NNN      NNNNNN            III                        333\r
+      III            OOO         OOO            III            NNN      NNNNNN            III                        333\r
+      III            OOO         OOO            III            NNN         NNN            III            333         333\r
+      III            OOO         OOO            III            NNN         NNN            III            333         333\r
+      III            OOO         OOO            III            NNN         NNN            III            333         333\r
+   IIIIIIIII            OOOOOOOOO            IIIIIIIII         NNN         NNN         IIIIIIIII            333333333   \r
+   IIIIIIIII            OOOOOOOOO            IIIIIIIII         NNN         NNN         IIIIIIIII            333333333   \r
+   IIIIIIIII            OOOOOOOOO            IIIIIIIII         NNN         NNN         IIIIIIIII            333333333   \r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  05:53:58\r
+File: DSKB0 :IOINI3.LST   [8,296] Created: 20-April-1967 05:51:00 Printed: 24-April-1978 05:53:34\r
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:1777 \r
+File will be deleted after printing\r
+\f\r
+IOINI1 - IO INITIALIZATION PART 1      MACRO 10 05:51 24-APR-78 PAGE 1\r
+S      MAC     24-APR-78 21:40         MAXIMAL CONFIGURATION\r
+\r
+                                       XLIST\r
+                                      LIST\r
+                               ;SOME MACROS FOR DEFINING CONFIGURATION\r
+\r
+                               DEFINE NAME (A)\r
+                               <DEFINE NAME1\r
+                               <CONFIG:  ASCIZ /A/\r
+                               INTERNAL CONFIG\r
+                               >\r
+                               XP A,0\r
+                               SUBTTL A CONFIGURATION\r
+                               >\r
+\r
+                               DEFINE DATE (A)\r
+                               <DEFINE DATE1\r
+                               <SYSDAT:  ASCIZ /A/\r
+                               INTERNAL SYSDAT\r
+                               >>\r
+\r
+                               DEFINE VERSION (A,B)\r
+                               <DEFINE VERS1\r
+                               <SYSNUM:  XWD ^D'A,^D'B\r
+                               XP SYSMOD,^D'A\r
+                               XP SYSVER,^D'B\r
+                               INTERNAL SYSNUM\r
+                               >>\r
+\r
+                               DEFINE CUSPTAPE (A)\r
+                               <DEFINE CUSP1\r
+                               <SYSTAP:  SIXBIT /A/\r
+                               INTERNAL SYSTAP\r
+                               >>\r
+\r
+                               DEFINE ACPDL (J,CHJN,CHJPDN)\r
+                               <         CH'J'N=CHJN\r
+                                CH'J'PDN=CHJPDN\r
+                               >\r
+\r
+\fIOINI1 - IO INITIALIZATION PART 1     MACRO 10 05:51 24-APR-78 PAGE 2\r
+IOINI  MAC     24-APR-78 01:14         MAXIMAL CONFIGURATION\r
+\r
+\r
+                               NAME <MAXIMAL>^DEFINE NAME1\r
+                               <CONFIG:  ASCIZ /MAXIMAL/\r
+                               INTERNAL CONFIG\r
+                               >\r
+\r
+\fIOINI1 - IO INITIALIZATION PART 1     MACRO 10 05:51 24-APR-78 PAGE 2\r
+IOMAX  MAC     24-APR-78 02:50         MAXIMAL CONFIGURATION\r
+\r
+\r
+                                       DATE <8-16-65>^DEFINE DATE1\r
+                               <SYSDAT:  ASCIZ /8-16-65/\r
+                               INTERNAL SYSDAT\r
+                               >^\r
+                                       VERSION 1,4^DEFINE VERS1\r
+                               <SYSNUM:  XWD ^D1,^D4\r
+                               XP SYSMOD,^D1\r
+                               XP SYSVER,^D4\r
+                               INTERNAL SYSNUM\r
+                               >^\r
+                                       CUSPTAPE DTA0^DEFINE CUSP1\r
+                               <SYSTAP:  SIXBIT /DTA0/\r
+                               INTERNAL SYSTAP\r
+                               >^\r
+\r
+                               ;DEFINE THE IO PART OF THE SYSTEM\r
+                               ;THAT IS:\r
+                               ;         DEFINE INTERRUPT SERVICE ROTUINE TO BE USED\r
+                               ;       ASSIGN DEVICES TO PI CHANNELS\r
+\r
+                               DEFINE SYSTEM\r
+                                <\r
+                                ASSOC APR,6,<>\r
+                                ASSOC CTY,3,<>\r
+                                ASSOC SCN,3,<TTY0,TTY1>\r
+                                ASSOC DTC,4,<DTA0>\r
+                                ASSOC DTC,4,<DTA1>\r
+                                ASSOC DTC,4,<DTA2>\r
+                                ASSOC DTC,4,<DTA3>\r
+                                ASSOC MTC,2,<MTA0>\r
+                                ASSOC MTC,2,<MTA1>\r
+                                ASSOC MTC,2,<MTA2>\r
+                                ASSOC MTC,2,<MTA3>\r
+                                ASSOC LPT,5,<LPT>\r
+                                ASSOC PTP,5,<PTP>\r
+                                ASSOC PTR,5,<PTR>\r
+                                ASSOC CDR,5,<CDR>\r
+                               >\r
+\r
+                       000001  DTSIZ=1   ;MULTIPLE DECTAPE DIRECTORIES\r
+\r
+                       000001  SCNLIN=1\r
+\r
+                               ;DEFINE HIGHEST AC TO SAVE AND LENGTH OF PD LIST FOR EACH PI CHANNEL\r
+\r
+                       000000  ACPDL (1,0,0)^    CH1N=0\r
+                       000011  ACPDL (2,11,20)^          CH2N=11\r
+                       000011  ACPDL (3,11,20)^          CH3N=11\r
+                       000011  ACPDL (4,11,20)^          CH4N=11\r
+                       000011  ACPDL (5,11,20)^          CH5N=11\r
+                       000017  ACPDL (6,17,20^   CH6N=17\r
+                       000000  ACPDL (7,0,0)^    CH7N=0\r
+\r
+\fIOINI1 - IO INITIALIZATION PART 1     MACRO 10 05:51 24-APR-78 PAGE 2-1\r
+IOMAX  MAC     24-APR-78 02:50         MAXIMAL CONFIGURATION\r
+\r
+                                         TITLE IOINI1 - IO INITIALIZATION PART 1\r
+       000000' 466033  044632            NAME1^CONFIG:  ASCIZ /MAXIMAL/\r
+       000001' 406300  000000\r
+       000002' 341326  133132            DATE1^SYSDAT:  ASCIZ /8-16-65/\r
+       000003' 331520  000000\r
+       000004' 000001  000004            VERS1^SYSNUM:  XWD ^D1,^D4\r
+       000005' 446441  200000            CUSP1^SYSTAP:  SIXBIT /DTA0/\r
+\r
+                               ;CONFIGURATION INDEPENDANT PART OF IOINIT FOLLOWS:\r
+\r
+                               EXTERNAL ERROR\r
+\r
+                               ;SETUP CHANNEL SAVE AND RESTORE ROUTINES\r
+\r
+                       000000  CHANU1=0\r
+                       000000  CHANU2=0\r
+                       000000  CHANU3=0\r
+                       000000  CHANU4=0\r
+                       000000  CHANU5=0\r
+                       000000  CHANU6=0\r
+                       000000  CHANU7=0\r
+                               DEFINE ASSOC(A,NO,D)\r
+                               <IFE CHANU'NO,<\r
+                               CHANU'NO=1\r
+                               INTERNAL CH'NO'SAV,CH'NO',CH'NO'XIT,CH'NO'SAC\r
+                               \r
+                               CH'NO'SAV: 0\r
+                                 MOVEM CH'NO'N, CH'NO'SAC+CH'NO'N\r
+                                 MOVEI CH'NO'N, CH'NO'SAC\r
+                                 BLT CH'NO'N,CH'NO'SAC+CH'NO'N-1       ;DO ONLY ONCE FOR EACH CHANNEL\r
+                                 MOVE PDP, CH'NO'CJ\r
+                                 JRST @CH'NO'SAV\r
+                               \r
+                               CH'NO'SAC: REPEAT CH'NO'N+1,<EXP 0>     ;SPACE TO SAVE SOM AC'S\r
+                                         EXP CH'NO'XIT         ;FIRST ENTRY IN PD LIST(CHAN. EXIT)\r
+                                         REPEAT CH'NO'PDN-1,<EXP 0>    ;REST OF PD LIST\r
+                               \r
+                               CH'NO'XIT: MOVSI CH'NO'N, CH'NO'SAC\r
+                                BLT CH'NO'N, CH'NO'N\r
+                                JEN @CH'NO\r
+                               \r
+                               CH'NO'CJ: XWD -CH'NO'PDN+1,CH'NO'SAC+CH'NO'N+1  ;INIT. SETTING OF P\r
+                               \r
+                               CH'NO':   0             ;PC STORED HERE BY JSR\r
+                                JRST .+1 ;INSTR. AT END OF SERVICE CHAIN\r
+                                AOS CH'NO'ERR          ;SPURIOUS INTERRUPT, ADD TO COUNT\r
+                                JEN @CH'NO             ;AND DISMISS\r
+                               >\r
+                               >\r
+                               ;GENERATE THE SAVE AND RESTORE ROUTINES\r
+\r
+                                         SYSTEM^       000006' 000000  000000  CH6SAV: 0\r
+       000007' 202740  000033'   MOVEM CH6N, CH6SAC+CH6N\r
+\r
+\fIOINI1 - IO INITIALIZATION PART 1     MACRO 10 05:51 24-APR-78 PAGE 1\r
+IOINI1 MAC     24-APR-78 04:05         MAXIMAL CONFIGURATION\r
+\r
+       000010' 201740  000014'   MOVEI CH6N, CH6SAC\r
+       000011' 251740  000032'   BLT CH6N,CH6SAC+CH6N-1        ;DO ONLY ONCE FOR EACH CHANNEL\r
+       000012' 200140  000057'   MOVE PDP, CH6CJ\r
+       000013' 254020  000006'   JRST @CH6SAV\r
+       000014' 000000  000000  EXP 0\r
+       000015' 000000  000000  EXP 0\r
+       000016' 000000  000000  EXP 0\r
+       000017' 000000  000000  EXP 0\r
+       000020' 000000  000000  EXP 0\r
+       000021' 000000  000000  EXP 0\r
+       000022' 000000  000000  EXP 0\r
+       000023' 000000  000000  EXP 0\r
+       000024' 000000  000000  EXP 0\r
+       000025' 000000  000000  EXP 0\r
+       000026' 000000  000000  EXP 0\r
+       000027' 000000  000000  EXP 0\r
+       000030' 000000  000000  EXP 0\r
+       000031' 000000  000000  EXP 0\r
+       000032' 000000  000000  EXP 0\r
+       000033' 000000  000000  EXP 0   ;SPACE TO SAVE SOM AC'S\r
+       000034' 000000  000054'           EXP CH6XIT            ;FIRST ENTRY IN PD LIST(CHAN. EXIT)\r
+       000035' 000000  000000  EXP 0\r
+       000036' 000000  000000  EXP 0\r
+       000037' 000000  000000  EXP 0\r
+       000040' 000000  000000  EXP 0\r
+       000041' 000000  000000  EXP 0\r
+       000042' 000000  000000  EXP 0\r
+       000043' 000000  000000  EXP 0\r
+       000044' 000000  000000  EXP 0\r
+       000045' 000000  000000  EXP 0\r
+       000046' 000000  000000  EXP 0\r
+       000047' 000000  000000  EXP 0\r
+       000050' 000000  000000  EXP 0\r
+       000051' 000000  000000  EXP 0\r
+       000052' 000000  000000  EXP 0\r
+       000053' 000000  000000  EXP 0   ;REST OF PD LIST\r
+       000054' 205740  000014' CH6XIT: MOVSI CH6N, CH6SAC\r
+       000055' 251740  000017   BLT CH6N, CH6N\r
+       000056' 254520  000060'  JEN @CH6\r
+       000057' 777761  000034' CH6CJ: XWD -CH6PDN+1,CH6SAC+CH6N+1      ;INIT. SETTING OF P\r
+       000060' 000000  000000  CH6:      0             ;PC STORED HERE BY JSR\r
+       000061' 254000  000062'  JRST .+1 ;INSTR. AT END OF SERVICE CHAIN\r
+       000062' 350000  000456'  AOS CH6ERR             ;SPURIOUS INTERRUPT, ADD TO COUNT\r
+       000063' 254520  000060'  JEN @CH6               ;AND DISMISS\r
+       000064' 000000  000000  CH3SAV: 0\r
+       000065' 202440  000103'   MOVEM CH3N, CH3SAC+CH3N\r
+       000066' 201440  000072'   MOVEI CH3N, CH3SAC\r
+       000067' 251440  000102'   BLT CH3N,CH3SAC+CH3N-1        ;DO ONLY ONCE FOR EACH CHANNEL\r
+       000070' 200140  000127'   MOVE PDP, CH3CJ\r
+       000071' 254020  000064'   JRST @CH3SAV\r
+       000072' 000000  000000  EXP 0\r
+       000073' 000000  000000  EXP 0\r
+       000074' 000000  000000  EXP 0\r
+\r
+\fIOINI1 - IO INITIALIZATION PART 1     MACRO 10 05:51 24-APR-78 PAGE 1-1\r
+IOINI1 MAC     24-APR-78 04:05         MAXIMAL CONFIGURATION\r
+\r
+       000075' 000000  000000  EXP 0\r
+       000076' 000000  000000  EXP 0\r
+       000077' 000000  000000  EXP 0\r
+       000100' 000000  000000  EXP 0\r
+       000101' 000000  000000  EXP 0\r
+       000102' 000000  000000  EXP 0\r
+       000103' 000000  000000  EXP 0   ;SPACE TO SAVE SOM AC'S\r
+       000104' 000000  000124'           EXP CH3XIT            ;FIRST ENTRY IN PD LIST(CHAN. EXIT)\r
+       000105' 000000  000000  EXP 0\r
+       000106' 000000  000000  EXP 0\r
+       000107' 000000  000000  EXP 0\r
+       000110' 000000  000000  EXP 0\r
+       000111' 000000  000000  EXP 0\r
+       000112' 000000  000000  EXP 0\r
+       000113' 000000  000000  EXP 0\r
+       000114' 000000  000000  EXP 0\r
+       000115' 000000  000000  EXP 0\r
+       000116' 000000  000000  EXP 0\r
+       000117' 000000  000000  EXP 0\r
+       000120' 000000  000000  EXP 0\r
+       000121' 000000  000000  EXP 0\r
+       000122' 000000  000000  EXP 0\r
+       000123' 000000  000000  EXP 0   ;REST OF PD LIST\r
+       000124' 205440  000072' CH3XIT: MOVSI CH3N, CH3SAC\r
+       000125' 251440  000011   BLT CH3N, CH3N\r
+       000126' 254520  000130'  JEN @CH3\r
+       000127' 777761  000104' CH3CJ: XWD -CH3PDN+1,CH3SAC+CH3N+1      ;INIT. SETTING OF P\r
+       000130' 000000  000000  CH3:      0             ;PC STORED HERE BY JSR\r
+       000131' 254000  000132'  JRST .+1 ;INSTR. AT END OF SERVICE CHAIN\r
+       000132' 350000  000453'  AOS CH3ERR             ;SPURIOUS INTERRUPT, ADD TO COUNT\r
+       000133' 254520  000130'  JEN @CH3               ;AND DISMISS\r
+       000134' 000000  000000  CH4SAV: 0\r
+       000135' 202440  000153'   MOVEM CH4N, CH4SAC+CH4N\r
+       000136' 201440  000142'   MOVEI CH4N, CH4SAC\r
+       000137' 251440  000152'   BLT CH4N,CH4SAC+CH4N-1        ;DO ONLY ONCE FOR EACH CHANNEL\r
+       000140' 200140  000177'   MOVE PDP, CH4CJ\r
+       000141' 254020  000134'   JRST @CH4SAV\r
+       000142' 000000  000000  EXP 0\r
+       000143' 000000  000000  EXP 0\r
+       000144' 000000  000000  EXP 0\r
+       000145' 000000  000000  EXP 0\r
+       000146' 000000  000000  EXP 0\r
+       000147' 000000  000000  EXP 0\r
+       000150' 000000  000000  EXP 0\r
+       000151' 000000  000000  EXP 0\r
+       000152' 000000  000000  EXP 0\r
+       000153' 000000  000000  EXP 0   ;SPACE TO SAVE SOM AC'S\r
+       000154' 000000  000174'           EXP CH4XIT            ;FIRST ENTRY IN PD LIST(CHAN. EXIT)\r
+       000155' 000000  000000  EXP 0\r
+       000156' 000000  000000  EXP 0\r
+       000157' 000000  000000  EXP 0\r
+       000160' 000000  000000  EXP 0\r
+       000161' 000000  000000  EXP 0\r
+\r
+\fIOINI1 - IO INITIALIZATION PART 1     MACRO 10 05:51 24-APR-78 PAGE 1-2\r
+IOINI1 MAC     24-APR-78 04:05         MAXIMAL CONFIGURATION\r
+\r
+       000162' 000000  000000  EXP 0\r
+       000163' 000000  000000  EXP 0\r
+       000164' 000000  000000  EXP 0\r
+       000165' 000000  000000  EXP 0\r
+       000166' 000000  000000  EXP 0\r
+       000167' 000000  000000  EXP 0\r
+       000170' 000000  000000  EXP 0\r
+       000171' 000000  000000  EXP 0\r
+       000172' 000000  000000  EXP 0\r
+       000173' 000000  000000  EXP 0   ;REST OF PD LIST\r
+       000174' 205440  000142' CH4XIT: MOVSI CH4N, CH4SAC\r
+       000175' 251440  000011   BLT CH4N, CH4N\r
+       000176' 254520  000200'  JEN @CH4\r
+       000177' 777761  000154' CH4CJ: XWD -CH4PDN+1,CH4SAC+CH4N+1      ;INIT. SETTING OF P\r
+       000200' 000000  000000  CH4:      0             ;PC STORED HERE BY JSR\r
+       000201' 254000  000202'  JRST .+1 ;INSTR. AT END OF SERVICE CHAIN\r
+       000202' 350000  000454'  AOS CH4ERR             ;SPURIOUS INTERRUPT, ADD TO COUNT\r
+       000203' 254520  000200'  JEN @CH4               ;AND DISMISS\r
+       000204' 000000  000000  CH2SAV: 0\r
+       000205' 202440  000223'   MOVEM CH2N, CH2SAC+CH2N\r
+       000206' 201440  000212'   MOVEI CH2N, CH2SAC\r
+       000207' 251440  000222'   BLT CH2N,CH2SAC+CH2N-1        ;DO ONLY ONCE FOR EACH CHANNEL\r
+       000210' 200140  000247'   MOVE PDP, CH2CJ\r
+       000211' 254020  000204'   JRST @CH2SAV\r
+       000212' 000000  000000  EXP 0\r
+       000213' 000000  000000  EXP 0\r
+       000214' 000000  000000  EXP 0\r
+       000215' 000000  000000  EXP 0\r
+       000216' 000000  000000  EXP 0\r
+       000217' 000000  000000  EXP 0\r
+       000220' 000000  000000  EXP 0\r
+       000221' 000000  000000  EXP 0\r
+       000222' 000000  000000  EXP 0\r
+       000223' 000000  000000  EXP 0   ;SPACE TO SAVE SOM AC'S\r
+       000224' 000000  000244'           EXP CH2XIT            ;FIRST ENTRY IN PD LIST(CHAN. EXIT)\r
+       000225' 000000  000000  EXP 0\r
+       000226' 000000  000000  EXP 0\r
+       000227' 000000  000000  EXP 0\r
+       000230' 000000  000000  EXP 0\r
+       000231' 000000  000000  EXP 0\r
+       000232' 000000  000000  EXP 0\r
+       000233' 000000  000000  EXP 0\r
+       000234' 000000  000000  EXP 0\r
+       000235' 000000  000000  EXP 0\r
+       000236' 000000  000000  EXP 0\r
+       000237' 000000  000000  EXP 0\r
+       000240' 000000  000000  EXP 0\r
+       000241' 000000  000000  EXP 0\r
+       000242' 000000  000000  EXP 0\r
+       000243' 000000  000000  EXP 0   ;REST OF PD LIST\r
+       000244' 205440  000212' CH2XIT: MOVSI CH2N, CH2SAC\r
+       000245' 251440  000011   BLT CH2N, CH2N\r
+       000246' 254520  000250'  JEN @CH2\r
+\r
+\fIOINI1 - IO INITIALIZATION PART 1     MACRO 10 05:51 24-APR-78 PAGE 1-3\r
+IOINI1 MAC     24-APR-78 04:05         MAXIMAL CONFIGURATION\r
+\r
+       000247' 777761  000224' CH2CJ: XWD -CH2PDN+1,CH2SAC+CH2N+1      ;INIT. SETTING OF P\r
+       000250' 000000  000000  CH2:      0             ;PC STORED HERE BY JSR\r
+       000251' 254000  000252'  JRST .+1 ;INSTR. AT END OF SERVICE CHAIN\r
+       000252' 350000  000452'  AOS CH2ERR             ;SPURIOUS INTERRUPT, ADD TO COUNT\r
+       000253' 254520  000250'  JEN @CH2               ;AND DISMISS\r
+       000254' 000000  000000  CH5SAV: 0\r
+       000255' 202440  000273'   MOVEM CH5N, CH5SAC+CH5N\r
+       000256' 201440  000262'   MOVEI CH5N, CH5SAC\r
+       000257' 251440  000272'   BLT CH5N,CH5SAC+CH5N-1        ;DO ONLY ONCE FOR EACH CHANNEL\r
+       000260' 200140  000317'   MOVE PDP, CH5CJ\r
+       000261' 254020  000254'   JRST @CH5SAV\r
+       000262' 000000  000000  EXP 0\r
+       000263' 000000  000000  EXP 0\r
+       000264' 000000  000000  EXP 0\r
+       000265' 000000  000000  EXP 0\r
+       000266' 000000  000000  EXP 0\r
+       000267' 000000  000000  EXP 0\r
+       000270' 000000  000000  EXP 0\r
+       000271' 000000  000000  EXP 0\r
+       000272' 000000  000000  EXP 0\r
+       000273' 000000  000000  EXP 0   ;SPACE TO SAVE SOM AC'S\r
+       000274' 000000  000314'           EXP CH5XIT            ;FIRST ENTRY IN PD LIST(CHAN. EXIT)\r
+       000275' 000000  000000  EXP 0\r
+       000276' 000000  000000  EXP 0\r
+       000277' 000000  000000  EXP 0\r
+       000300' 000000  000000  EXP 0\r
+       000301' 000000  000000  EXP 0\r
+       000302' 000000  000000  EXP 0\r
+       000303' 000000  000000  EXP 0\r
+       000304' 000000  000000  EXP 0\r
+       000305' 000000  000000  EXP 0\r
+       000306' 000000  000000  EXP 0\r
+       000307' 000000  000000  EXP 0\r
+       000310' 000000  000000  EXP 0\r
+       000311' 000000  000000  EXP 0\r
+       000312' 000000  000000  EXP 0\r
+       000313' 000000  000000  EXP 0   ;REST OF PD LIST\r
+       000314' 205440  000262' CH5XIT: MOVSI CH5N, CH5SAC\r
+       000315' 251440  000011   BLT CH5N, CH5N\r
+       000316' 254520  000320'  JEN @CH5\r
+       000317' 777761  000274' CH5CJ: XWD -CH5PDN+1,CH5SAC+CH5N+1      ;INIT. SETTING OF P\r
+       000320' 000000  000000  CH5:      0             ;PC STORED HERE BY JSR\r
+       000321' 254000  000322'  JRST .+1 ;INSTR. AT END OF SERVICE CHAIN\r
+       000322' 350000  000455'  AOS CH5ERR             ;SPURIOUS INTERRUPT, ADD TO COUNT\r
+       000323' 254520  000320'  JEN @CH5               ;AND DISMISS\r
+\r
+                               ;SET UP NULL CHANNEL ROUTINES FOR UNUSED CHANNELS\r
+\r
+                               DEFINE NULCHN(J)\r
+                               <\r
+                               INTERNAL CH'J,CH'J'XIT\r
+                               CH'J:     0\r
+                               CH'J'XIT: AOS CH'J'ERR\r
+\r
+\fIOINI1 - IO INITIALIZATION PART 1     MACRO 10 05:51 24-APR-78 PAGE 1-4\r
+IOINI1 MAC     24-APR-78 04:05         MAXIMAL CONFIGURATION\r
+\r
+                                JEN @CH'J\r
+                               >\r
+\r
+                                         IFE CHANU1,<NULCHN(1)>^\r
+       000324' 000000  000000  CH1:      0\r
+       000325' 350000  000451' CH1XIT: AOS CH1ERR\r
+       000326' 254520  000324'  JEN @CH1\r
+                                         IFE CHANU2,<NULCHN(2)>\r
+                                         IFE CHANU3,<NULCHN(3)>\r
+                                         IFE CHANU4,<NULCHN(4)>\r
+                                         IFE CHANU5,<NULCHN(5)>\r
+                                         IFE CHANU6,<NULCHN(6)>\r
+                                         IFE CHANU7,<NULCHN(7)>^\r
+       000327' 000000  000000  CH7:      0\r
+       000330' 350000  000457' CH7XIT: AOS CH7ERR\r
+       000331' 254520  000327'  JEN @CH7\r
+\r
+\fIOINI1 - IO INITIALIZATION PART 1     MACRO 10 05:51 24-APR-78 PAGE 2\r
+IOINI1 MAC     24-APR-78 04:05         MAXIMAL CONFIGURATION\r
+\r
+\r
+\r
+                               ;ASSIGN DEVICE TO CHANNELS AND SETUP CORESPONDENCE TABLE\r
+                               ;OF CHANNELS TO SERVICE ROUTINES\r
+\r
+                               DEFINE ASSOC (A,N,D)\r
+                               <         A'RET=CH'N'XIT\r
+                                A'SAV=CH'N'SAV\r
+                                A'SAC=CH'N'SAC\r
+                                A'CHL=CH'N\r
+                                A'CHN=N\r
+                                A'BIT=1\r
+                                REPEAT 7-N,<A'BIT=A'BIT*2>\r
+                                A'OFF=1000+A'BIT       ;CONO PI, A'OFF WIL TURN CHANNEL OFF\r
+                                A'ON=2000+A'BIT        ;TURN BACK ON\r
+                                A'ACT=4000+A'BIT       ;FORCE INTERRUPT ON CHAN.\r
+                               INTERN A'RET, A'SAV, A'CHL, A'CHN, A'SAC\r
+                               INTERNAL A'OFF,A'ON,A'ACT,A'BIT\r
+                                XWD A'CHL,A'INT\r
+                                EXTERNAL A'INT\r
+                               >\r
+\r
+                               INTERNAL DEVINT\r
+       000332'                 DEVINT:   SYSTEM^       000332' 000060' 000000*  XWD APRCHL,APRINT\r
+       000333' 000130' 000000*  XWD CTYCHL,CTYINT\r
+       000334' 000130' 000000*  XWD SCNCHL,SCNINT\r
+       000335' 000200' 000000*  XWD DTCCHL,DTCINT\r
+       000336' 000200' 000335*  XWD DTCCHL,DTCINT\r
+       000337' 000200' 000336*  XWD DTCCHL,DTCINT\r
+       000340' 000200' 000337*  XWD DTCCHL,DTCINT\r
+       000341' 000250' 000000*  XWD MTCCHL,MTCINT\r
+       000342' 000250' 000341*  XWD MTCCHL,MTCINT\r
+       000343' 000250' 000342*  XWD MTCCHL,MTCINT\r
+       000344' 000250' 000343*  XWD MTCCHL,MTCINT\r
+       000345' 000320' 000000*  XWD LPTCHL,LPTINT\r
+       000346' 000320' 000000*  XWD PTPCHL,PTPINT\r
+       000347' 000320' 000000*  XWD PTRCHL,PTRINT\r
+       000350' 000320' 000000*  XWD CDRCHL,CDRINT\r
+                       000017  NDEV=.-DEVINT           ;NO. OF DEVICE INTERUPT SERVICE ROUTINES\r
+                       000016  NDEVM1=NDEV-1           ;(USED BY ONCE)\r
+                               INTERNAL NDEVM1\r
+\r
+\fIOINI1 - IO INITIALIZATION PART 1     MACRO 10 05:51 24-APR-78 PAGE 3\r
+IOINI1 MAC     24-APR-78 04:05         MAXIMAL CONFIGURATION\r
+\r
+\r
+\r
+                               ;INITIALIZE SOME IO DEVICES\r
+                               ;IOINI CALLED BY A PUSHJ PDP, FROM SYSINI AT SYSTEM INITIALIZATION\r
+\r
+                               DEFINE IOINIT (A)\r
+                               <IRP A\r
+                               <         EXTERNAL A'INI\r
+                                PUSHJ PDP,A'INI\r
+                               >>\r
+\r
+                               DEFINE ASSOC (A,B,C)\r
+                               <         IFIDN <A><MTC>,< IOINIT MTC>\r
+                                IFIDN <A><DTC>,< IOINIT DTC>\r
+                                IFIDN <A><LPT>,< IOINIT LPT>\r
+                                IFIDN <A><SCN>,< IOINIT SCN>\r
+                                IFIDN <A><PTP>,<IOINIT PTP>\r
+                                IFIDN <A><PTR>,<IOINIT PTR>\r
+                               >\r
+\r
+                               INTERNAL IOINI\r
+\r
+       000351'                 IOINI:  SYSTEM^ 000351' 260140  000000*  PUSHJ PDP,SCNINI\r
+       000352' 260140  000000*  PUSHJ PDP,DTCINI\r
+       000353' 260140  000352*  PUSHJ PDP,DTCINI\r
+       000354' 260140  000353*  PUSHJ PDP,DTCINI\r
+       000355' 260140  000354*  PUSHJ PDP,DTCINI\r
+       000356' 260140  000000*  PUSHJ PDP,MTCINI\r
+       000357' 260140  000356*  PUSHJ PDP,MTCINI\r
+       000360' 260140  000357*  PUSHJ PDP,MTCINI\r
+       000361' 260140  000360*  PUSHJ PDP,MTCINI\r
+       000362' 260140  000000*  PUSHJ PDP,LPTINI\r
+       000363' 260140  000000*  PUSHJ PDP,PTPINI\r
+       000364' 260140  000000*  PUSHJ PDP,PTRINI\r
+       000365' 254000  000000*         JRST CLKINI             ;ALWAYS INIT. CLOCK\r
+\r
+                               EXTERNAL CLKINI\r
+\r
+\fIOINI1 - IO INITIALIZATION PART 1     MACRO 10 05:51 24-APR-78 PAGE 4\r
+IOINI1 MAC     24-APR-78 04:05         MAXIMAL CONFIGURATION\r
+\r
+\r
+\r
+                               ;CLOCK CONTROL PARAMETERS\r
+\r
+                       004006            CLDS=4000+APRCHN      ;CLOCK DISABLE\r
+                       000206            CLEN=200+APRCHN       ;CLOCK ENABLE\r
+\r
+                                         INTERNAL CLDS,CLEN\r
+\r
+                               ;BYTE POINTERS\r
+\r
+       000366' 270400  000014  PUUOAC:   POINT 4,UUO,12        ;UUO AC FIELD\r
+       000367' 000400  000000  PIOMOD:   POINT 4,IOS,35        ;MODE BITS\r
+       000370' 331106  000001  PJOBN:    POINT 9,DEVCHR(DEVDAT),8      ;DEVICE JOB ASSIGNMENT\r
+       000371' 220406  000001  PJDCHN:   POINT 4,DEVCHR(DEVDAT),17     ;JOB DEVICE CHANNEL NO.\r
+       000372' 140606  000001  PUNIT:    POINT 6,DEVCHR(DEVDAT),23     ;DEVICE UNIT NO.\r
+\r
+                               INTERNAL PUUOAC,PIOMOD,PJOBN,PJDCHN,PUNIT\r
+\r
+                               ;COMMON SUBROUTINE RETURNS\r
+\r
+       000373' 350003  000000  CPOPJ2:   AOS (PDP)\r
+       000374' 350003  000000  CPOPJ1:   AOS (PDP)\r
+       000375' 263140  000000  CPOPJ:    POPJ PDP,\r
+\r
+                               INTERNAL CPOPJ,CPOPJ1,CPOPJ2\r
+\r
+\fIOINI1 - IO INITIALIZATION PART 1     MACRO 10 05:51 24-APR-78 PAGE 5\r
+IOINI1 MAC     24-APR-78 04:05         MAXIMAL CONFIGURATION\r
+\r
+\r
+                               ,SYSTEM DATA STORAGE\r
+\r
+\r
+                               INTERNAL JOB,JOBADR,JBTADR,JBTSTS,USRREL,USRINF,USRJDA\r
+                               INTERNAL USRPDP,JOBDAT,USRDDT,USRSAV,USRUXT,USRLO,USRHI\r
+                               INTERNAL COMCNT,IOCOMP,USRPOV,STOPU,SCHEDF,TIME,JBTAD1\r
+                               INTERNAL MTAVAL,DCAVAL,DTAVAL,MTREQ,DCREQ,DTREQ,TTYTAB,CORTAB\r
+                               INTERNAL CH1ERR,CH2ERR,CH3ERR,CH4ERR,CH5ERR,CH6ERR,CH7ERR\r
+                               INTERNAL CORLST,CORTAB,CORTAL,SYSEND,SYSBEG,DEVOPR\r
+\r
+                       000000  JOBN=0  ;DEFINE NO. OF JOBS (0 THRU JOBN-1)\r
+                               ;THERE MUST BE MORE TTY DEVICE DATA BLCKS THAN JOBS.\r
+\r
+                               DEFINE ASSOC (A,N,D)\r
+                               <IRP D,<IFIDN <A><SCN>,<JOBN=JOBN+1>>>\r
+                                         SYSTEM^               777777  777776  MJOBN=-JOBN\r
+                               INTERNAL JOBN,MJOBN\r
+\r
+       000376'                 SYSBEG:   ;FIRST LOC IN SYSTEM DATA AREA\r
+                               XP SYSBG1,SYSBEG+1      ;FIRST LOC+1\r
+       000376' 000000  000000  JOB:      0             ;CURRENT JOB NUMBER EXCEPT WEN SCHEDF IS NON-ZERO\r
+       000377' 000000  000000  JOBADR:   0             ;CONTAINS ADDRESS OF JOB CURRENTLY RUNNING\r
+       000400' 000000  000000  JOBDAT:   0             ;CONTAINS ADDRESS OF JOB DATA AREA\r
+\r
+       000401'                 JBTADR:   BLOCK JOBN            ;C(LH)=PROTECT, C(RH)=RELOCATION\r
+                               XP JBTAD1,JBTADR+1   ;ADDRESS OF JOB 1(USED BY SYSMAK)\r
+       000403'                 JBTSTS:   BLOCK JOBN            ;CONTAINS STATUS INFORMATION FOR EACH J\r
+\r
+       000405' 000000  000000  USRPDP:   0         ;USER PUSH DOWN POINTER\r
+       000406' 000000  000000  USRREL:   0         ;LH=0, RH CONTAINS CONTENTS OF PROTECTION REGISTER\r
+       000407'                 USRLO:    ;FIRST LOC CLEARD BY SETUSR SUBROUTINE\r
+       000407' 000000  000000  USRUXT:   0         ;UNUSED,  JOBUXT USED TO SAVE UUO PC(UUO0)\r
+       000410' 000000  000000  USRLEV:   0         ;UNUSED,  JOBLEV USED TO SAVE LOC. 40\r
+       000411' 000000  000000  USRSAV:   0         ;TEMPORARY STORAGE FOR UUO HANDLER\r
+       000412' 000000  000000  USRPOV:   0         ;PUSH DOWN OVERFLOW TRAP\r
+       000413'                           BLOCK 2\r
+       000415' 000000  000000  USRINF:   0         ;UN LAYED OUT USER INFORMATION\r
+       000416'                 USRJDA:   BLOCK 20  ;RH=JOB DEVICE ASSIGNMENTS FOR THIS USER,LH=UUOS\r
+                               XP USRHI,.-1        ;LAST LOC CLEARED BY SETUSR ROUTINE\r
+                               XP USRPFI,.-1       ;LAST LOC PROTECTED FROM IO SERVICE\r
+                               XP USRPFU,.         ;LAST LOC PROTECTED FROM USER PROGRAM\r
+       000436' 000000  000000  USRDDT:   0         ;STARTING ADDR OF USER DDT\r
+\r
+                               ;DEVICE JUSTR BECOME AVAILABLE FLAGS\r
+       000437' 000000  000000  MTAVAL:   0          ;MAGNETIC TAPE\r
+       000440' 000000  000000  DCAVAL:   0          ;DATA CONTROL\r
+       000441' 000000  000000  DTAVAL:   0          ;DECTAPE\r
+\r
+                               ;NUMBER OF JOBS WAITING FOR DEVICES(-1=NONE, 0=1 USING, 1=1 USING)\r
+       000442' 777777  777777  MTREQ:    -1        ;MAGNETIC TAPE\r
+       000443' 777777  777777  DCREQ:    -1        ;DATA CONTROL\r
+       000444' 777777  777777  DTREQ:    -1        ;DECTAPE\r
+\r
+\fIOINI1 - IO INITIALIZATION PART 1     MACRO 10 05:51 24-APR-78 PAGE 5-1\r
+IOINI1 MAC     24-APR-78 04:05         MAXIMAL CONFIGURATION\r
+\r
+       000445' 000000  000000  IOCOMP:   0         ;NUMBER OF USERS IN IO WAIT STATE\r
+       000446' 000000  000000  COMCNT:   0         ;NUMBER OF COMMANDS TYPED-IN BUT NOT DECODED\r
+       000447' 000000  000000  STOPU:    0         ;NON-ZERO WHEN CLOCK INTERRUPT FORCED TO STOP USER\r
+       000450' 000000  000000  SCHEDF:   0         ;NON-ZERO WHEN CLOCK ROUTINE IS SCHEDULING\r
+\r
+       000451' 000000  000000  CH1ERR:   0         ;SPURIOUS INTERRUPT COUNTS FOR EACH CHANNEL\r
+       000452' 000000  000000  CH2ERR:   0\r
+       000453' 000000  000000  CH3ERR:   0\r
+       000454' 000000  000000  CH4ERR:   0\r
+       000455' 000000  000000  CH5ERR:   0\r
+       000456' 000000  000000  CH6ERR:   0\r
+       000457' 000000  000000  CH7ERR:   0\r
+\r
+                       000410'            USRLO1=USRLO+1\r
+                                          INTERNAL USRLO1\r
+\r
+\fIOINI1 - IO INITIALIZATION PART 1     MACRO 10 05:51 24-APR-78 PAGE 6\r
+IOINI1 MAC     24-APR-78 04:05         MAXIMAL CONFIGURATION\r
+\r
+\r
+       000460' 000000  000000  TIME:     0             ;TIME SYSTEM HAS RUN IN 60THS OF A SECOND\r
+\r
+\r
+                               XP TTYLEN,SCNLIN+1   ;LENGTH OF TTY TRANSLATOR TABLES(INCLUDING CTY)\r
+       000461'                 TTYTAB:   BLOCK TTYLEN          ;TTY TRANSLATOR TABLE\r
+                                                               ;SIGN BIT = 1 IF COMMAND JUST TYPED\r
+                                                               ;BITS 1 -9, JOB CONSOLE IS ATTACHED TO\r
+                                                               ;BITS 18-35, THE DEVICE DATA BLOCK FOR\r
+       000463' 000000  000000  DEVOPR:   0             ;SIXBIT PHYSICAL NAME OF OPERATORS\r
+                                                       ;CONSOLE SET BY SCNSER TO FIRST ACTIVE TTY.\r
+                               ;LOCATIONS FOR CORE ALLOCATION\r
+                               XP CORBLK,^D256          ;NO. OF 1K BLOCKS POSSIBLE\r
+       000464'                 CORTAB:   BLOCK <CORBLK>/^D36+1         ;1K BLOCK USE BIT TABLE\r
+                                                               ;A 1 MEANS BLOCK IS IN USE\r
+       000474' 000000  000000  CORLST:   0             ;1 BIT BYTE POINTER TO LAST FREE BLOCK POSSIBLE\r
+       000475' 000000  000000  CORTAL:   0             ;TOTAL NO. OF FREE CORE BLOCKS LEFT\r
+                               ;CORLST AND CORTAL ARE SET UP AT SYSTEM INITIALIZATION\r
+\r
+                       000475' SYSEND=.-1              ;LAST LOC. CLEARED BY SYSINI\r
+\r
+                               INTERNAL SYSSIZ\r
+                               EXTERNAL SYSFIN\r
+       000476' 000000  000000* SYSSIZ:   EXP SYSFIN            ;SIZE OF MONITOR(LAST LOC. USED)\r
+\r
+\fIOINI1 - IO INITIALIZATION PART 1     MACRO 10 05:51 24-APR-78 PAGE 7\r
+IOINI1 MAC     24-APR-78 04:05         MAXIMAL CONFIGURATION\r
+\r
+\r
+                                         END,\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 000477\r
+\r
+9K CORE USED\r
+\r
+\fIOINI1 - IO INITIALIZATION PART 1     MACRO 10 05:51 24-APR-78 PAGE 8\r
+IOINI1 MAC     24-APR-78 04:05         SYMBOL TABLE\r
+\r
+A              000000  INT\r
+AC1            000015  INT\r
+AC2            000016  INT\r
+AC3            000017  INT\r
+AL             000001  INT\r
+APRACT         004002  INT\r
+APRBIT         000002  INT\r
+APRCHL         000060' INT\r
+APRCHN         000006  INT\r
+APRINT         000332' EXT\r
+APROFF         001002  INT\r
+APRON          002002  INT\r
+APRRET         000054' INT\r
+APRSAC         000014' INT\r
+APRSAV         000006' INT\r
+ASSCON         400000  INT\r
+ASSPRG         200000  INT\r
+B              000014  INT\r
+BUFPNT         000012  INT\r
+BUFWRD         000013  INT\r
+CDRACT         004004  INT\r
+CDRBIT         000004  INT\r
+CDRCHL         000320' INT\r
+CDRCHN         000005  INT\r
+CDRINT         000350' EXT\r
+CDROFF         001004  INT\r
+CDRON          002004  INT\r
+CDRRET         000314' INT\r
+CDRSAC         000262' INT\r
+CDRSAV         000254' INT\r
+CH1            000324' INT\r
+CH1ERR         000451' INT\r
+CH1N           000000  \r
+CH1PDN         000000  \r
+CH1XIT         000325' INT\r
+CH2            000250' INT\r
+CH2CJ          000247' \r
+CH2ERR         000452' INT\r
+CH2N           000011  \r
+CH2PDN         000020  \r
+CH2SAC         000212' INT\r
+CH2SAV         000204' INT\r
+CH2XIT         000244' INT\r
+CH3            000130' INT\r
+CH3CJ          000127' \r
+CH3ERR         000453' INT\r
+CH3N           000011  \r
+CH3PDN         000020  \r
+CH3SAC         000072' INT\r
+CH3SAV         000064' INT\r
+\r
+\r
+\fIOINI1 - IO INITIALIZATION PART 1     MACRO 10 05:51 24-APR-78 PAGE 8-1\r
+IOINI1 MAC     24-APR-78 04:05         SYMBOL TABLE\r
+\r
+CH3XIT         000124' INT\r
+CH4            000200' INT\r
+CH4CJ          000177' \r
+CH4ERR         000454' INT\r
+CH4N           000011  \r
+CH4PDN         000020  \r
+CH4SAC         000142' INT\r
+CH4SAV         000134' INT\r
+CH4XIT         000174' INT\r
+CH5            000320' INT\r
+CH5CJ          000317' \r
+CH5ERR         000455' INT\r
+CH5N           000011  \r
+CH5PDN         000020  \r
+CH5SAC         000262' INT\r
+CH5SAV         000254' INT\r
+CH5XIT         000314' INT\r
+CH6            000060' INT\r
+CH6CJ          000057' \r
+CH6ERR         000456' INT\r
+CH6N           000017  \r
+CH6PDN         000020  \r
+CH6SAC         000014' INT\r
+CH6SAV         000006' INT\r
+CH6XIT         000054' INT\r
+CH7            000327' INT\r
+CH7ERR         000457' INT\r
+CH7N           000000  \r
+CH7PDN         000000  \r
+CH7XIT         000330' INT\r
+CHANU1         000000  \r
+CHANU2         000001  \r
+CHANU3         000001  \r
+CHANU4         000001  \r
+CHANU5         000001  \r
+CHANU6         000001  \r
+CHANU7         000000  \r
+CLDS           004006  INT\r
+CLEN           000206  INT\r
+CLKINI         000365' EXT\r
+CLOSB          002000  INT\r
+CLSIN          000002  INT\r
+CLSOUT         000001  INT\r
+COMCNT         000446' INT\r
+CONFIG         000000' INT\r
+CORBLK         000400  INT\r
+CORLST         000474' INT\r
+CORTAB         000464' INT\r
+CORTAL         000475' INT\r
+CPOPJ          000375' INT\r
+CPOPJ1         000374' INT\r
+CPOPJ2         000373' INT\r
+CTYACT         004020  INT\r
+\r
+\fIOINI1 - IO INITIALIZATION PART 1     MACRO 10 05:51 24-APR-78 PAGE 8-2\r
+IOINI1 MAC     24-APR-78 04:05         SYMBOL TABLE\r
+\r
+CTYBIT         000020  INT\r
+CTYCHL         000130' INT\r
+CTYCHN         000003  INT\r
+CTYINT         000333' EXT\r
+CTYOFF         001020  INT\r
+CTYON          002020  INT\r
+CTYRET         000124' INT\r
+CTYSAC         000072' INT\r
+CTYSAV         000064' INT\r
+D              000017  INT\r
+DAT            000005  INT\r
+DCAVAL         000440' INT\r
+DCL            000001  INT\r
+DCREQ          000443' INT\r
+DCW            020000  INT\r
+DDI            000007  INT\r
+DDO            000006  INT\r
+DDTMEM         000037  INT\r
+DDTSYM         000036  INT\r
+DEN            000004  INT\r
+DEVADR         000007  INT\r
+DEVBUF         000006  INT\r
+DEVCHR         000001  INT\r
+DEVCTR         000011  INT\r
+DEVDAT         000006  INT\r
+DEVIAD         000007  INT\r
+DEVINT         000332' INT\r
+DEVIOS         000002  INT\r
+DEVLOG         000005  INT\r
+DEVMOD         000004  INT\r
+DEVNAM         000000  INT\r
+DEVOAD         000010  INT\r
+DEVOPR         000463' INT\r
+DEVPTR         000010  INT\r
+DEVSER         000003  INT\r
+DGF            000012  INT\r
+DIN            000003  INT\r
+DLK            000005  INT\r
+DOU            000002  INT\r
+DR             000016  INT\r
+DRL            000000  INT\r
+DSI            000011  INT\r
+DSO            000010  INT\r
+DTAVAL         000441' INT\r
+DTCACT         004010  INT\r
+DTCBIT         000010  INT\r
+DTCCHL         000200' INT\r
+DTCCHN         000004  INT\r
+DTCINI         000355' EXT\r
+\r
+\r
+\fIOINI1 - IO INITIALIZATION PART 1     MACRO 10 05:51 24-APR-78 PAGE 8-3\r
+IOINI1 MAC     24-APR-78 04:05         SYMBOL TABLE\r
+\r
+DTCINT         000340' EXT\r
+DTCOFF         001010  INT\r
+DTCON          002010  INT\r
+DTCRET         000174' INT\r
+DTCSAC         000142' INT\r
+DTCSAV         000134' INT\r
+DTREQ          000444' INT\r
+DTSIZ          000001  \r
+DTW            040000  INT\r
+DVAVAL         000040  INT\r
+DVCDR          100000  INT\r
+DVDIR          000004  INT\r
+DVDIRI         400000  INT\r
+DVIN           000002  INT\r
+DVLPT          040000  INT\r
+DVMTA          000020  INT\r
+DVOUT          000001  INT\r
+DVTTY          000010  INT\r
+ENTRB          020000  INT\r
+ERROR          000000  EXT\r
+I              000010  INT\r
+IB             000013  INT\r
+IBUFB          200000  INT\r
+INITB          400000  INT\r
+INPB           010000  INT\r
+IO             000020  INT\r
+IOACT          010000  INT\r
+IOBEG          000002  INT\r
+IOBKTL         040000  INT\r
+IOCOMP         000445' INT\r
+IOCON          000040  INT\r
+IODEND         020000  INT\r
+IODERR         200000  INT\r
+IODISC         400000  INT\r
+IODONE         400000  INT\r
+IODTER         100000  INT\r
+IOEND          000040  INT\r
+IOFST          000004  INT\r
+IOIMPM         400000  INT\r
+IOINI          000351' INT\r
+IONRCK         000100  INT\r
+IORDEL         000100  INT\r
+IORET          000020  INT\r
+IOS            000000  INT\r
+IOSTRT         000010  INT\r
+IOUSE          400000  INT\r
+IOW            000001  INT\r
+IOWC           000020  INT\r
+IOWS           400000  INT\r
+ITEM           000004  INT\r
+JBFADR         000000  INT\r
+JBFCTR         000002  INT\r
+\r
+\r
+\fIOINI1 - IO INITIALIZATION PART 1     MACRO 10 05:51 24-APR-78 PAGE 8-4\r
+IOINI1 MAC     24-APR-78 04:05         SYMBOL TABLE\r
+\r
+JBFPTR         000001  INT\r
+JBTAD1         000402' INT\r
+JBTADR         000401' INT\r
+JBTSTS         000403' INT\r
+JBUF           000005  INT\r
+JDAT           000011  INT\r
+JERR           002000  INT\r
+JIOW           100000  INT\r
+JNA            004000  INT\r
+JOB            000376' INT\r
+JOBADR         000377' INT\r
+JOBDAT         000400' INT\r
+JOBN           000002  INT\r
+LOOKB          040000  INT\r
+LPTACT         004004  INT\r
+LPTBIT         000004  INT\r
+LPTCHL         000320' INT\r
+LPTCHN         000005  INT\r
+LPTINI         000362' EXT\r
+LPTINT         000345' EXT\r
+LPTOFF         001004  INT\r
+LPTON          002004  INT\r
+LPTRET         000314' INT\r
+LPTSAC         000262' INT\r
+LPTSAV         000254' INT\r
+MAXIMA         000000  INT\r
+MJOBN  777777  777776  INT\r
+MTAVAL         000437' INT\r
+MTCACT         004040  INT\r
+MTCBIT         000040  INT\r
+MTCCHL         000250' INT\r
+MTCCHN         000002  INT\r
+MTCINI         000361' EXT\r
+MTCINT         000344' EXT\r
+MTCOFF         001040  INT\r
+MTCON          002040  INT\r
+MTCRET         000244' INT\r
+MTCSAC         000212' INT\r
+MTCSAV         000204' INT\r
+MTREQ          000442' INT\r
+MTW            010000  INT\r
+NDEV           000017  \r
+NDEVM1         000016  INT\r
+OBUFB          100000  INT\r
+OUTPB          004000  INT\r
+PDP            000003  INT\r
+PICHN          000100  INT\r
+PIOMOD         000367' INT\r
+PJDCHN         000371' INT\r
+PJOBN          000370' INT\r
+\r
+\r
+\fIOINI1 - IO INITIALIZATION PART 1     MACRO 10 05:51 24-APR-78 PAGE 8-5\r
+IOINI1 MAC     24-APR-78 04:05         SYMBOL TABLE\r
+\r
+PROG           000007  INT\r
+PTPACT         004004  INT\r
+PTPBIT         000004  INT\r
+PTPCHL         000320' INT\r
+PTPCHN         000005  INT\r
+PTPINI         000363' EXT\r
+PTPINT         000346' EXT\r
+PTPOFF         001004  INT\r
+PTPON          002004  INT\r
+PTPRET         000314' INT\r
+PTPSAC         000262' INT\r
+PTPSAV         000254' INT\r
+PTRACT         004004  INT\r
+PTRBIT         000004  INT\r
+PTRCHL         000320' INT\r
+PTRCHN         000005  INT\r
+PTRINI         000364' EXT\r
+PTRINT         000347' EXT\r
+PTROFF         001004  INT\r
+PTRON          002004  INT\r
+PTRRET         000314' INT\r
+PTRSAC         000262' INT\r
+PTRSAV         000254' INT\r
+PUNIT          000372' INT\r
+PUUOAC         000366' INT\r
+RUN            200000  INT\r
+RUNABL         204000  INT\r
+SCHEDF         000450' INT\r
+SCNACT         004020  INT\r
+SCNBIT         000020  INT\r
+SCNCHL         000130' INT\r
+SCNCHN         000003  INT\r
+SCNINI         000351' EXT\r
+SCNINT         000334' EXT\r
+SCNLIN         000001  \r
+SCNOFF         001020  INT\r
+SCNON          002020  INT\r
+SCNRET         000124' INT\r
+SCNSAC         000072' INT\r
+SCNSAV         000064' INT\r
+STOPU          000447' INT\r
+SYSBEG         000376' INT\r
+SYSBG1         000377' INT\r
+SYSDAT         000002' INT\r
+SYSEND         000475' INT\r
+SYSFIN         000476' EXT\r
+SYSMOD         000001  INT\r
+SYSNUM         000004' INT\r
+SYSSIZ         000476' INT\r
+SYSTAP         000005' INT\r
+SYSVER         000004  INT\r
+TAC            000001  INT\r
+\r
+\r
+\fIOINI1 - IO INITIALIZATION PART 1     MACRO 10 05:51 24-APR-78 PAGE 8-6\r
+IOINI1 MAC     24-APR-78 04:05         SYMBOL TABLE\r
+\r
+TAC1           000002  INT\r
+TEM            000010  INT\r
+TIME           000460' INT\r
+TTYATC         020000  INT\r
+TTYLEN         000002  INT\r
+TTYTAB         000461' INT\r
+TTYUSE         010000  INT\r
+USRDDT         000436' INT\r
+USRHI          000435' INT\r
+USRINF         000415' INT\r
+USRJDA         000416' INT\r
+USRLEV         000410' \r
+USRLO          000407' INT\r
+USRLO1         000410' INT\r
+USRMOD         010000  INT\r
+USRPDP         000405' INT\r
+USRPFI         000435' INT\r
+USRPFU         000436' INT\r
+USRPOV         000412' INT\r
+USRREL         000406' INT\r
+USRSAV         000411' INT\r
+USRUXT         000407' INT\r
+\f   IIIIIIIII            OOOOOOOOO            IIIIIIIII         NNN         NNN         IIIIIIIII         444      444   \r
+   IIIIIIIII            OOOOOOOOO            IIIIIIIII         NNN         NNN         IIIIIIIII         444      444   \r
+   IIIIIIIII            OOOOOOOOO            IIIIIIIII         NNN         NNN         IIIIIIIII         444      444   \r
+      III            OOO         OOO            III            NNN         NNN            III            444      444   \r
+      III            OOO         OOO            III            NNN         NNN            III            444      444   \r
+      III            OOO         OOO            III            NNN         NNN            III            444      444   \r
+      III            OOO         OOO            III            NNNNNN      NNN            III            444      444   \r
+      III            OOO         OOO            III            NNNNNN      NNN            III            444      444   \r
+      III            OOO         OOO            III            NNNNNN      NNN            III            444      444   \r
+      III            OOO         OOO            III            NNN   NNN   NNN            III            444444444444444\r
+      III            OOO         OOO            III            NNN   NNN   NNN            III            444444444444444\r
+      III            OOO         OOO            III            NNN   NNN   NNN            III            444444444444444\r
+      III            OOO         OOO            III            NNN      NNNNNN            III                     444   \r
+      III            OOO         OOO            III            NNN      NNNNNN            III                     444   \r
+      III            OOO         OOO            III            NNN      NNNNNN            III                     444   \r
+      III            OOO         OOO            III            NNN         NNN            III                     444   \r
+      III            OOO         OOO            III            NNN         NNN            III                     444   \r
+      III            OOO         OOO            III            NNN         NNN            III                     444   \r
+   IIIIIIIII            OOOOOOOOO            IIIIIIIII         NNN         NNN         IIIIIIIII                  444   \r
+   IIIIIIIII            OOOOOOOOO            IIIIIIIII         NNN         NNN         IIIIIIIII                  444   \r
+   IIIIIIIII            OOOOOOOOO            IIIIIIIII         NNN         NNN         IIIIIIIII                  444   \r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  05:53:58\r
+File: DSKB0 :IOINI4.LST   [8,296] Created: 20-April-1967 05:51:00 Printed: 24-April-1978 05:53:35\r
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:1754 \r
+File will be deleted after printing\r
+\f\r
+IOINI2 - IO INITIALIZATION PART 2      MACRO 10 05:51 24-APR-78 PAGE 1\r
+S      MAC     24-APR-78 21:40         MAXIMAL CONFIGURATION\r
+\r
+                                       XLIST\r
+                                      LIST\r
+                               ;SOME MACROS FOR DEFINING CONFIGURATION\r
+\r
+                               DEFINE NAME (A)\r
+                               <DEFINE NAME1\r
+                               <CONFIG:  ASCIZ /A/\r
+                               INTERNAL CONFIG\r
+                               >\r
+                               XP A,0\r
+                               SUBTTL A CONFIGURATION\r
+                               >\r
+\r
+                               DEFINE DATE (A)\r
+                               <DEFINE DATE1\r
+                               <SYSDAT:  ASCIZ /A/\r
+                               INTERNAL SYSDAT\r
+                               >>\r
+\r
+                               DEFINE VERSION (A,B)\r
+                               <DEFINE VERS1\r
+                               <SYSNUM:  XWD ^D'A,^D'B\r
+                               XP SYSMOD,^D'A\r
+                               XP SYSVER,^D'B\r
+                               INTERNAL SYSNUM\r
+                               >>\r
+\r
+                               DEFINE CUSPTAPE (A)\r
+                               <DEFINE CUSP1\r
+                               <SYSTAP:  SIXBIT /A/\r
+                               INTERNAL SYSTAP\r
+                               >>\r
+\r
+                               DEFINE ACPDL (J,CHJN,CHJPDN)\r
+                               <         CH'J'N=CHJN\r
+                                CH'J'PDN=CHJPDN\r
+                               >\r
+\r
+\fIOINI2 - IO INITIALIZATION PART 2     MACRO 10 05:51 24-APR-78 PAGE 2\r
+IOINI  MAC     24-APR-78 01:14         MAXIMAL CONFIGURATION\r
+\r
+\r
+                               NAME <MAXIMAL>^DEFINE NAME1\r
+                               <CONFIG:  ASCIZ /MAXIMAL/\r
+                               INTERNAL CONFIG\r
+                               >\r
+\r
+\fIOINI2 - IO INITIALIZATION PART 2     MACRO 10 05:51 24-APR-78 PAGE 2\r
+IOMAX  MAC     24-APR-78 02:50         MAXIMAL CONFIGURATION\r
+\r
+\r
+                                       DATE <8-16-65>^DEFINE DATE1\r
+                               <SYSDAT:  ASCIZ /8-16-65/\r
+                               INTERNAL SYSDAT\r
+                               >^\r
+                                       VERSION 1,4^DEFINE VERS1\r
+                               <SYSNUM:  XWD ^D1,^D4\r
+                               XP SYSMOD,^D1\r
+                               XP SYSVER,^D4\r
+                               INTERNAL SYSNUM\r
+                               >^\r
+                                       CUSPTAPE DTA0^DEFINE CUSP1\r
+                               <SYSTAP:  SIXBIT /DTA0/\r
+                               INTERNAL SYSTAP\r
+                               >^\r
+\r
+                               ;DEFINE THE IO PART OF THE SYSTEM\r
+                               ;THAT IS:\r
+                               ;         DEFINE INTERRUPT SERVICE ROTUINE TO BE USED\r
+                               ;       ASSIGN DEVICES TO PI CHANNELS\r
+\r
+                               DEFINE SYSTEM\r
+                                <\r
+                                ASSOC APR,6,<>\r
+                                ASSOC CTY,3,<>\r
+                                ASSOC SCN,3,<TTY0,TTY1>\r
+                                ASSOC DTC,4,<DTA0>\r
+                                ASSOC DTC,4,<DTA1>\r
+                                ASSOC DTC,4,<DTA2>\r
+                                ASSOC DTC,4,<DTA3>\r
+                                ASSOC MTC,2,<MTA0>\r
+                                ASSOC MTC,2,<MTA1>\r
+                                ASSOC MTC,2,<MTA2>\r
+                                ASSOC MTC,2,<MTA3>\r
+                                ASSOC LPT,5,<LPT>\r
+                                ASSOC PTP,5,<PTP>\r
+                                ASSOC PTR,5,<PTR>\r
+                                ASSOC CDR,5,<CDR>\r
+                               >\r
+\r
+                       000001  DTSIZ=1   ;MULTIPLE DECTAPE DIRECTORIES\r
+\r
+                       000001  SCNLIN=1\r
+\r
+                               ;DEFINE HIGHEST AC TO SAVE AND LENGTH OF PD LIST FOR EACH PI CHANNEL\r
+\r
+                       000000  ACPDL (1,0,0)^    CH1N=0\r
+                       000011  ACPDL (2,11,20)^          CH2N=11\r
+                       000011  ACPDL (3,11,20)^          CH3N=11\r
+                       000011  ACPDL (4,11,20)^          CH4N=11\r
+                       000011  ACPDL (5,11,20)^          CH5N=11\r
+                       000017  ACPDL (6,17,20^   CH6N=17\r
+                       000000  ACPDL (7,0,0)^    CH7N=0\r
+\r
+\fIOINI2 - IO INITIALIZATION PART 2     MACRO 10 05:51 24-APR-78 PAGE 2-1\r
+IOMAX  MAC     24-APR-78 02:50         MAXIMAL CONFIGURATION\r
+\r
+                                       TITLE IOINI2 - IO INITIALIZATION PART 2\r
+\r
+                               ;DEFINITIONS OF DEVCHN AND DEVBIT\r
+                               ;THESE ALSO OCCUR IN IOINT1\r
+\r
+                               DEFINE ASSOC (A,N,D)\r
+                               <\r
+                                 A'CHN=N\r
+                               >\r
+\r
+                                         SYSTEM^\r
+\r
+\fIOINI2 - IO INITIALIZATION PART 2     MACRO 10 05:51 24-APR-78 PAGE 2\r
+IOINI2 MAC     24-APR-78 03:06         MAXIMAL CONFIGURATION\r
+\r
+\r
+\r
+                               ;APR PIP BITS\r
+\r
+                       000001  APRBIT=1\r
+                       000002  REPEAT 7-APRCHN,<APRBIT=APRBIT*2>\r
+                               XP PION,200             ;CONO PI,PION TURNS PI SYSTEM ON\r
+                               XP PIOFF,400            ;TURN IT OFF\r
+                               XP PICLK,PION+1B24+APRBIT       ;TURN PI ON, AND FORCE CLOCK INT.\r
+                               XP CLKOFF,1000+APRCHN           ;CONO APR,CLKOFF TURNS CLOCK FLAG OFF\r
+\r
+\fIOINI2 - IO INITIALIZATION PART 2     MACRO 10 05:51 24-APR-78 PAGE 3\r
+IOINI2 MAC     24-APR-78 03:06         MAXIMAL CONFIGURATION\r
+\r
+\r
+\r
+                               ;ASSEMBLE ALL DEVICE DATA BLOCKS AND LINK THEM TOGETHER\r
+\r
+                               DEFINE SCNDDB (A,B,C)\r
+                               <         INTERNAL C'DB\r
+                               C'DB:     ZZ=.\r
+                                SIXBIT /C/\r
+                                XWD A'CHN*PICHN,STTYBF+1       ;LONG ENOUGH FOR PRINTING\r
+                                               ;SEQUENCE CARD IMAGE.\r
+                                               ;USER BUFFERS ARE 2 WORDS\r
+                                               ;LONGER THEN THE MONITORY TTY BUFFERS.\r
+                                0\r
+                               EXTERNAL  TTYDSP\r
+                                XWD C,TTYDSP\r
+                                XWD DVTTY+DVIN+DVOUT,3\r
+                                0\r
+                                0\r
+                                XWD PROG,0\r
+                                XWD PROG,0\r
+                                XP TTYPTR,.-ZZ\r
+                                0\r
+                                XP TTYCTR,.-ZZ\r
+                                0\r
+                                XP TTYSAV,.-ZZ\r
+                                0\r
+                                XP TTYBUF,.-ZZ\r
+                                XP TTYBM1,TTYBUF-1\r
+                               XP STTYBF,20\r
+                               XP STTYB1,STTYBF+1      ;LENGTH+1\r
+                                BLOCK STTYBF\r
+                               XP TTYBFE,.-ZZ-1\r
+                               \r
+                               ;LINE NO. PARAMETERS\r
+                               XP TTYLEN,SCNLIN+1  ;LENGTH OF TTY TRANSLATOR TABLE(INCLUDE TTY)\r
+                               XP TSCNLN,SCNLIN-1  ;HIGHEST TTY LINE NO.(NOT COUNTING CTY)\r
+                               XP TCONLN,TSCNLN+1  ;CTY LINE NUMBER\r
+                               XP MTTYLN,-TTYLEN   ;NEGATIVEL LENGTH OF TRANSLATOR TABLE\r
+                               XP FSNCHN,SCNCHN*101 ;CHANNEL ASSIGNED, FOR FULL DUPLEX SCN.\r
+                                XP TTYLST,TTY0DB    ;FIRST TTY DEVICE DATA BLOCK\r
+                                >\r
+\r
+                               ;NEG. NO. OF TELTYPE DEVICE DATA BLOCKS\r
+\r
+                       000000  MLTTYL=0\r
+                               DEFINE ASSOC (A,N,D)\r
+                               <IRP D,<IFIDN <A>,<SCN>,<MLTTYL=MLTTYL-1>>>\r
+\r
+                                         SYSTEM^\r
+                               INTERNAL MLTTYL\r
+\r
+\fIOINI2 - IO INITIALIZATION PART 2     MACRO 10 05:51 24-APR-78 PAGE 4\r
+IOINI2 MAC     24-APR-78 03:06         MAXIMAL CONFIGURATION\r
+\r
+\r
+\r
+                               ;MAG TAPE DEVICE DATA BLOCK\r
+\r
+                       000000  MTCNUM=0\r
+\r
+                               DEFINE MTCDDB (A,B,C)\r
+                               <         INTERNAL C'DB\r
+                               C'DB:     SIXBIT /C/\r
+                               MTCNUM=MTCNUM+1\r
+                                XWD IORET+A'CHN*PICHN,<MTCNUM-1>*10000+201\r
+                               \r
+                                0\r
+                                XWD C,MTDISP\r
+                               EXTERNAL MTDISP\r
+                                XWD 4400+DVMTA+DVIN+DVOUT,154403\r
+                                0\r
+                                0\r
+                                XWD PROG,0\r
+                                XWD PROG,0\r
+                               >\r
+\r
+\fIOINI2 - IO INITIALIZATION PART 2     MACRO 10 05:51 24-APR-78 PAGE 5\r
+IOINI2 MAC     24-APR-78 03:06         MAXIMAL CONFIGURATION\r
+\r
+\r
+                               ;DECTAPE DEVICE DATA BLOCK\r
+\r
+                       000000  DTCNUM=0\r
+\r
+                               DEFINE DTCDDB (A,B,C)\r
+                               <         INTERNAL C'DB\r
+                               C'DB:     ZZ=.\r
+                                SIXBIT /C/\r
+                               DTCNUM=DTCNUM+1\r
+                                XWD IORET+A'CHN*PICHN,<DTCNUM-1>*10000+201\r
+                                0\r
+                                XWD C,UTDSP\r
+                               EXTERNAL UTDSP\r
+                                XWD 4400+DVDIR+DVIN+DVOUT,154403\r
+                                0\r
+                                0\r
+                                0\r
+                                0\r
+                               XP UFREE,.-ZZ   ;NEXT FREE BLOCK NO.\r
+                                0\r
+                                XP UDIR,.-ZZ   ;LINK TO DIRECTORY IN DATA BLOCK\r
+                                IFE DTSIZ,<    EXP DIRBUF\r
+                               >\r
+                               IFN DTSIZ,<     EXP DTDIR+200*<DTCNUM-1>\r
+                               >\r
+                               >\r
+\r
+\r
+\fIOINI2 - IO INITIALIZATION PART 2     MACRO 10 05:51 24-APR-78 PAGE 6\r
+IOINI2 MAC     24-APR-78 03:06         MAXIMAL CONFIGURATION\r
+\r
+\r
+\r
+                               ;LINE PRINTER DEVICE DTA BLOCK\r
+\r
+                               DEFINE LPTDDB (A,B,C)\r
+                               <INTERNAL LPTDB,LPTDAT,LPTCHR,LPTIOS,LPTSER,LPTMOD\r
+                               INTERNAL LPTBUF,LPTPTR,LPTADR,LPTSV1\r
+                               EXTERNAL LPTDSP\r
+                               \r
+                               LPTDB:\r
+                               LPTDAT:   SIXBIT /LPT/\r
+                               LPTCHR:   XWD A'CHN*PICHN,32\r
+                               LPTIOS:   0\r
+                               LPTSER:   XWD C,LPTDSP\r
+                               LPTMOD:   XWD 0+DVOUT,3\r
+                                0\r
+                               LPTBUF:   0\r
+                               LPTPTR:   0\r
+                               LPTADR:   XWD PROG,0\r
+                               LPTSV1:   0\r
+                               \r
+                               XP LPTCLB,LPTCHN+200  ;PI CHANNEL AND BUSY FLAG\r
+                               XP LPTCHB,11*LPTCHN ;LINE PRINTER ERROR AND DATA CHANNELS\r
+                               >\r
+\r
+\fIOINI2 - IO INITIALIZATION PART 2     MACRO 10 05:51 24-APR-78 PAGE 7\r
+IOINI2 MAC     24-APR-78 03:06         MAXIMAL CONFIGURATION\r
+\r
+\r
+\r
+                               ;CARD READER DEVICE DATA BLOCK\r
+\r
+                               DEFINE CDRDDB (A,B,C)\r
+                               <INTERNAL CDRDB,CDRDAT,CRDIS\r
+                               EXTERNAL CDRDSP\r
+                               \r
+                               CDRDB:\r
+                               CDRDAT:   SIXBIT /CDR/\r
+                                XWD A'CHN*PICHN,34 ;LONG ENOUGHT FOR BINARY CARDS\r
+                                0\r
+                                XWD C,CDRDSP\r
+                                XWD DVCDR+1400+DVIN,14403\r
+                                0\r
+                                0\r
+                                XWD PROG,0\r
+                                0\r
+                                0\r
+                               CRDIS:    JRST .\r
+                               >\r
+\r
+\fIOINI2 - IO INITIALIZATION PART 2     MACRO 10 05:51 24-APR-78 PAGE 8\r
+IOINI2 MAC     24-APR-78 03:06         MAXIMAL CONFIGURATION\r
+\r
+\r
+\r
+                               ;PAPER TAPE READER DEVICE DATA BLOCK\r
+\r
+                               DEFINE PTRDDB (A,B,C)\r
+                               <INTERNAL PTRDB,PTRDAT,PTRCHR,PTRIOS,PTRSER\r
+                               INTERNAL PTRMOD,PTRBUF,PTRADR,PTRPTR,PTRCTR,PTRSVC,PTRSV1\r
+                               EXTERNAL PTRDSP\r
+                               \r
+                               PTRDB:\r
+                               PTRDAT:   SIXBIT /PTR/\r
+                               PTRCHR:   XWD A'CHN*PICHN,41\r
+                               PTRIOS:   0\r
+                               PTRSER:   XWD C,PTRDSP\r
+                               PTRMOD:   XWD 1000+DVIN,14403\r
+                                0\r
+                               PTRBUF:   0\r
+                               PTRADR:   XWD PROG,0\r
+                               PTRPTR:   0\r
+                               PTRCTR:   0\r
+                               PTRSVC:   0\r
+                               PTRSV1:   0\r
+                               >\r
+\r
+\fIOINI2 - IO INITIALIZATION PART 2     MACRO 10 05:51 24-APR-78 PAGE 9\r
+IOINI2 MAC     24-APR-78 03:06         MAXIMAL CONFIGURATION\r
+\r
+\r
+\r
+                               ;PAPER TAPE PUNCH DEVICE DATA BLOCK\r
+\r
+                               DEFINE PTPDDB (A,B,C)\r
+                               <INTERNAL PTPDB,PTPDAT,PTPCHR,PTPIOS,PTPSER,PTPMOD,PTPBUF\r
+                               INTERNAL PTPPTR,PTPADR,PTPCTR,PTPCNT,PTPCHA,PTPSIO\r
+                               EXTERNAL PTPDSP\r
+                               \r
+                               PTPDB:\r
+                               PTPDAT:   SIXBIT /PTP/\r
+                               PTPCHR:   XWD A'CHN*PICHN,41\r
+                               PTPIOS:   0\r
+                               PTPSER:   XWD C,PTPDSP\r
+                               PTPMOD:   XWD 1000+DVOUT,14403\r
+                                0\r
+                               PTPBUF:   0\r
+                               PTPPTR:   0\r
+                               PTPADR:   XWD PROG,0\r
+                               PTPCTR:   0\r
+                               PTPCNT:   0\r
+                               PTPCHA:   0\r
+                               PTPSIO:   0\r
+                               >\r
+\r
+\fIOINI2 - IO INITIALIZATION PART 2     MACRO 10 05:51 24-APR-78 PAGE 10\r
+IOINI2 MAC     24-APR-78 03:06         MAXIMAL CONFIGURATION\r
+\r
+\r
+\r
+                               ;GENERATE DEVICE DATA BLOCKS NEEDED FOR THIS CONFIGURATION\r
+\r
+                               DEFINE ASSOC (A,B,C)\r
+                               <\r
+                               IRP C,<\r
+                                         ;DEFINE FORWARD LINL SYMBOL\r
+                                LINK\r
+                               ;\r
+                               ;\r
+                               ;\r
+                                A'DDB A,B,C\r
+                               \r
+                               C=0       ;SET LINK TO 0(IN CASE THIS IS LAST DDB)\r
+                               DEFINE LINK\r
+                               <C=.>\r
+                               >\r
+                               >\r
+\r
+                               INTERNAL DEVLST\r
+\r
+       000000' 000001' 000000  DEVLST:   XWD FIRDB,0           ;BEGINNING OF DEVICE DATA BLOCK CHAIN\r
+\r
+                               DEFINE LINK\r
+                               <FIRDB=.>\r
+\r
+                                         SYSTEM^       000001' 646471  200000   SIXBIT /TTY0/\r
+       000002' 000300  000021   XWD SCNCHN*PICHN,STTYBF+1      ;LONG ENOUGH FOR PRINTING\r
+       000003' 000000  000000   0\r
+       000004' 000035' 000000*  XWD TTY0,TTYDSP\r
+       000005' 000013  000003   XWD DVTTY+DVIN+DVOUT,3\r
+       000006' 000000  000000   0\r
+       000007' 000000  000000   0\r
+       000010' 000007  000000   XWD PROG,0\r
+       000011' 000007  000000   XWD PROG,0\r
+       000012' 000000  000000   0\r
+       000013' 000000  000000   0\r
+       000014' 000000  000000   0\r
+       000035' 646471  210000   SIXBIT /TTY1/\r
+       000036' 000300  000021   XWD SCNCHN*PICHN,STTYBF+1      ;LONG ENOUGH FOR PRINTING\r
+       000037' 000000  000000   0\r
+       000040' 000071' 000004*  XWD TTY1,TTYDSP\r
+       000041' 000013  000003   XWD DVTTY+DVIN+DVOUT,3\r
+       000042' 000000  000000   0\r
+       000043' 000000  000000   0\r
+       000044' 000007  000000   XWD PROG,0\r
+       000045' 000007  000000   XWD PROG,0\r
+       000046' 000000  000000   0\r
+       000047' 000000  000000   0\r
+       000050' 000000  000000   0\r
+       000071' 446441  200000   SIXBIT /DTA0/\r
+       000072' 000420  000201   XWD IORET+DTCCHN*PICHN,<DTCNUM-1>*10000+201\r
+\r
+\fIOINI2 - IO INITIALIZATION PART 2     MACRO 10 05:51 24-APR-78 PAGE 10-1\r
+IOINI2 MAC     24-APR-78 03:06         MAXIMAL CONFIGURATION\r
+\r
+       000073' 000000  000000   0\r
+       000074' 000104' 000000*  XWD DTA0,UTDSP\r
+       000075' 004407  154403   XWD 4400+DVDIR+DVIN+DVOUT,154403\r
+       000076' 000000  000000   0\r
+       000077' 000000  000000   0\r
+       000100' 000000  000000   0\r
+       000101' 000000  000000   0\r
+       000102' 000000  000000   0\r
+       000103' 000000  000267' IFN DTSIZ,<     EXP DTDIR+200*<DTCNUM-1>\r
+       000104' 446441  210000   SIXBIT /DTA1/\r
+       000105' 000420  010201   XWD IORET+DTCCHN*PICHN,<DTCNUM-1>*10000+201\r
+       000106' 000000  000000   0\r
+       000107' 000117' 000074*  XWD DTA1,UTDSP\r
+       000110' 004407  154403   XWD 4400+DVDIR+DVIN+DVOUT,154403\r
+       000111' 000000  000000   0\r
+       000112' 000000  000000   0\r
+       000113' 000000  000000   0\r
+       000114' 000000  000000   0\r
+       000115' 000000  000000   0\r
+       000116' 000000  000467' IFN DTSIZ,<     EXP DTDIR+200*<DTCNUM-1>\r
+       000117' 446441  220000   SIXBIT /DTA2/\r
+       000120' 000420  020201   XWD IORET+DTCCHN*PICHN,<DTCNUM-1>*10000+201\r
+       000121' 000000  000000   0\r
+       000122' 000132' 000107*  XWD DTA2,UTDSP\r
+       000123' 004407  154403   XWD 4400+DVDIR+DVIN+DVOUT,154403\r
+       000124' 000000  000000   0\r
+       000125' 000000  000000   0\r
+       000126' 000000  000000   0\r
+       000127' 000000  000000   0\r
+       000130' 000000  000000   0\r
+       000131' 000000  000667' IFN DTSIZ,<     EXP DTDIR+200*<DTCNUM-1>\r
+       000132' 446441  230000   SIXBIT /DTA3/\r
+       000133' 000420  030201   XWD IORET+DTCCHN*PICHN,<DTCNUM-1>*10000+201\r
+       000134' 000000  000000   0\r
+       000135' 000145' 000122*  XWD DTA3,UTDSP\r
+       000136' 004407  154403   XWD 4400+DVDIR+DVIN+DVOUT,154403\r
+       000137' 000000  000000   0\r
+       000140' 000000  000000   0\r
+       000141' 000000  000000   0\r
+       000142' 000000  000000   0\r
+       000143' 000000  000000   0\r
+       000144' 000000  001067' IFN DTSIZ,<     EXP DTDIR+200*<DTCNUM-1>\r
+       000145' 556441  200000  MTA0DB:   SIXBIT /MTA0/\r
+       000146' 000220  000201   XWD IORET+MTCCHN*PICHN,<MTCNUM-1>*10000+201\r
+       000147' 000000  000000   0\r
+       000150' 000156' 000000*  XWD MTA0,MTDISP\r
+       000151' 004423  154403   XWD 4400+DVMTA+DVIN+DVOUT,154403\r
+       000152' 000000  000000   0\r
+       000153' 000000  000000   0\r
+       000154' 000007  000000   XWD PROG,0\r
+       000155' 000007  000000   XWD PROG,0\r
+       000156' 556441  210000  MTA1DB:   SIXBIT /MTA1/\r
+       000157' 000220  010201   XWD IORET+MTCCHN*PICHN,<MTCNUM-1>*10000+201\r
+\r
+\fIOINI2 - IO INITIALIZATION PART 2     MACRO 10 05:51 24-APR-78 PAGE 10-2\r
+IOINI2 MAC     24-APR-78 03:06         MAXIMAL CONFIGURATION\r
+\r
+       000160' 000000  000000   0\r
+       000161' 000167' 000150*  XWD MTA1,MTDISP\r
+       000162' 004423  154403   XWD 4400+DVMTA+DVIN+DVOUT,154403\r
+       000163' 000000  000000   0\r
+       000164' 000000  000000   0\r
+       000165' 000007  000000   XWD PROG,0\r
+       000166' 000007  000000   XWD PROG,0\r
+       000167' 556441  220000  MTA2DB:   SIXBIT /MTA2/\r
+       000170' 000220  020201   XWD IORET+MTCCHN*PICHN,<MTCNUM-1>*10000+201\r
+       000171' 000000  000000   0\r
+       000172' 000200' 000161*  XWD MTA2,MTDISP\r
+       000173' 004423  154403   XWD 4400+DVMTA+DVIN+DVOUT,154403\r
+       000174' 000000  000000   0\r
+       000175' 000000  000000   0\r
+       000176' 000007  000000   XWD PROG,0\r
+       000177' 000007  000000   XWD PROG,0\r
+       000200' 556441  230000  MTA3DB:   SIXBIT /MTA3/\r
+       000201' 000220  030201   XWD IORET+MTCCHN*PICHN,<MTCNUM-1>*10000+201\r
+       000202' 000000  000000   0\r
+       000203' 000211' 000172*  XWD MTA3,MTDISP\r
+       000204' 004423  154403   XWD 4400+DVMTA+DVIN+DVOUT,154403\r
+       000205' 000000  000000   0\r
+       000206' 000000  000000   0\r
+       000207' 000007  000000   XWD PROG,0\r
+       000210' 000007  000000   XWD PROG,0\r
+       000211' 546064  000000  LPTDAT:   SIXBIT /LPT/\r
+       000212' 000500  000032  LPTCHR:   XWD LPTCHN*PICHN,32\r
+       000213' 000000  000000  LPTIOS:   0\r
+       000214' 000223' 000000* LPTSER:   XWD LPT,LPTDSP\r
+       000215' 000001  000003  LPTMOD:   XWD 0+DVOUT,3\r
+       000216' 000000  000000   0\r
+       000217' 000000  000000  LPTBUF:   0\r
+       000220' 000000  000000  LPTPTR:   0\r
+       000221' 000007  000000  LPTADR:   XWD PROG,0\r
+       000222' 000000  000000  LPTSV1:   0\r
+       000223' 606460  000000  PTPDAT:   SIXBIT /PTP/\r
+       000224' 000500  000041  PTPCHR:   XWD PTPCHN*PICHN,41\r
+       000225' 000000  000000  PTPIOS:   0\r
+       000226' 000240' 000000* PTPSER:   XWD PTP,PTPDSP\r
+       000227' 001001  014403  PTPMOD:   XWD 1000+DVOUT,14403\r
+       000230' 000000  000000   0\r
+       000231' 000000  000000  PTPBUF:   0\r
+       000232' 000000  000000  PTPPTR:   0\r
+       000233' 000007  000000  PTPADR:   XWD PROG,0\r
+       000234' 000000  000000  PTPCTR:   0\r
+       000235' 000000  000000  PTPCNT:   0\r
+       000236' 000000  000000  PTPCHA:   0\r
+       000237' 000000  000000  PTPSIO:   0\r
+       000240' 606462  000000  PTRDAT:   SIXBIT /PTR/\r
+       000241' 000500  000041  PTRCHR:   XWD PTRCHN*PICHN,41\r
+       000242' 000000  000000  PTRIOS:   0\r
+       000243' 000254' 000000* PTRSER:   XWD PTR,PTRDSP\r
+       000244' 001002  014403  PTRMOD:   XWD 1000+DVIN,14403\r
+\r
+\fIOINI2 - IO INITIALIZATION PART 2     MACRO 10 05:51 24-APR-78 PAGE 10-3\r
+IOINI2 MAC     24-APR-78 03:06         MAXIMAL CONFIGURATION\r
+\r
+       000245' 000000  000000   0\r
+       000246' 000000  000000  PTRBUF:   0\r
+       000247' 000007  000000  PTRADR:   XWD PROG,0\r
+       000250' 000000  000000  PTRPTR:   0\r
+       000251' 000000  000000  PTRCTR:   0\r
+       000252' 000000  000000  PTRSVC:   0\r
+       000253' 000000  000000  PTRSV1:   0\r
+       000254' 434462  000000  CDRDAT:   SIXBIT /CDR/\r
+       000255' 000500  000034   XWD CDRCHN*PICHN,34 ;LONG ENOUGHT FOR BINARY CARDS\r
+       000256' 000000  000000   0\r
+       000257' 000000  000000*  XWD CDR,CDRDSP\r
+       000260' 101402  014403   XWD DVCDR+1400+DVIN,14403\r
+       000261' 000000  000000   0\r
+       000262' 000000  000000   0\r
+       000263' 000007  000000   XWD PROG,0\r
+       000264' 000000  000000   0\r
+       000265' 000000  000000   0\r
+       000266' 254000  000266' CRDIS:    JRST .\r
+\r
+\fIOINI2 - IO INITIALIZATION PART 2     MACRO 10 05:51 24-APR-78 PAGE 11\r
+IOINI2 MAC     24-APR-78 03:06         MAXIMAL CONFIGURATION\r
+\r
+\r
+\r
+       000267'                           LIT\r
+\r
+                                         IFE DTSIZ,<           DIRBUF: BLOCK 200\r
+                                INTERNAL DIRBUF\r
+                               >\r
+\r
+       000267'                 IFN DTSIZ,<DTDIR:       BLOCK DTCNUM*200\r
+                               INTERNAL DTDIR\r
+                               >\r
+\r
+                                         END,\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 001267\r
+\r
+10K CORE USED\r
+\r
+\fIOINI2 - IO INITIALIZATION PART 2     MACRO 10 05:51 24-APR-78 PAGE 12\r
+IOINI2 MAC     24-APR-78 03:06         SYMBOL TABLE\r
+\r
+A              000000  INT\r
+AC1            000015  INT\r
+AC2            000016  INT\r
+AC3            000017  INT\r
+AL             000001  INT\r
+APRBIT         000002  \r
+APRCHN         000006  \r
+ASSCON         400000  INT\r
+ASSPRG         200000  INT\r
+B              000014  INT\r
+BUFPNT         000012  INT\r
+BUFWRD         000013  INT\r
+CDR            000000  \r
+CDRCHN         000005  \r
+CDRDAT         000254' INT\r
+CDRDB          000254' INT\r
+CDRDSP         000257' EXT\r
+CH1N           000000  \r
+CH1PDN         000000  \r
+CH2N           000011  \r
+CH2PDN         000020  \r
+CH3N           000011  \r
+CH3PDN         000020  \r
+CH4N           000011  \r
+CH4PDN         000020  \r
+CH5N           000011  \r
+CH5PDN         000020  \r
+CH6N           000017  \r
+CH6PDN         000020  \r
+CH7N           000000  \r
+CH7PDN         000000  \r
+CLKOFF         001006  INT\r
+CLOSB          002000  INT\r
+CLSIN          000002  INT\r
+CLSOUT         000001  INT\r
+CRDIS          000266' INT\r
+CTYCHN         000003  \r
+D              000017  INT\r
+DAT            000005  INT\r
+DCL            000001  INT\r
+DCW            020000  INT\r
+DDI            000007  INT\r
+DDO            000006  INT\r
+DDTMEM         000037  INT\r
+DDTSYM         000036  INT\r
+\r
+\r
+\fIOINI2 - IO INITIALIZATION PART 2     MACRO 10 05:51 24-APR-78 PAGE 12-1\r
+IOINI2 MAC     24-APR-78 03:06         SYMBOL TABLE\r
+\r
+DEN            000004  INT\r
+DEVADR         000007  INT\r
+DEVBUF         000006  INT\r
+DEVCHR         000001  INT\r
+DEVCTR         000011  INT\r
+DEVDAT         000006  INT\r
+DEVIAD         000007  INT\r
+DEVIOS         000002  INT\r
+DEVLOG         000005  INT\r
+DEVLST         000000' INT\r
+DEVMOD         000004  INT\r
+DEVNAM         000000  INT\r
+DEVOAD         000010  INT\r
+DEVPTR         000010  INT\r
+DEVSER         000003  INT\r
+DGF            000012  INT\r
+DIN            000003  INT\r
+DLK            000005  INT\r
+DOU            000002  INT\r
+DR             000016  INT\r
+DRL            000000  INT\r
+DSI            000011  INT\r
+DSO            000010  INT\r
+DTA0           000104' \r
+DTA0DB         000071' INT\r
+DTA1           000117' \r
+DTA1DB         000104' INT\r
+DTA2           000132' \r
+DTA2DB         000117' INT\r
+DTA3           000145' \r
+DTA3DB         000132' INT\r
+DTCCHN         000004  \r
+DTCNUM         000004  \r
+DTDIR          000267' INT\r
+DTSIZ          000001  \r
+DTW            040000  INT\r
+DVAVAL         000040  INT\r
+DVCDR          100000  INT\r
+DVDIR          000004  INT\r
+DVDIRI         400000  INT\r
+DVIN           000002  INT\r
+DVLPT          040000  INT\r
+DVMTA          000020  INT\r
+DVOUT          000001  INT\r
+DVTTY          000010  INT\r
+ENTRB          020000  INT\r
+FIRDB          000001' \r
+FSNCHN         000303  INT\r
+I              000010  INT\r
+IB             000013  INT\r
+IBUFB          200000  INT\r
+INITB          400000  INT\r
+\r
+\r
+\fIOINI2 - IO INITIALIZATION PART 2     MACRO 10 05:51 24-APR-78 PAGE 12-2\r
+IOINI2 MAC     24-APR-78 03:06         SYMBOL TABLE\r
+\r
+INPB           010000  INT\r
+IO             000020  INT\r
+IOACT          010000  INT\r
+IOBEG          000002  INT\r
+IOBKTL         040000  INT\r
+IOCON          000040  INT\r
+IODEND         020000  INT\r
+IODERR         200000  INT\r
+IODISC         400000  INT\r
+IODONE         400000  INT\r
+IODTER         100000  INT\r
+IOEND          000040  INT\r
+IOFST          000004  INT\r
+IOIMPM         400000  INT\r
+IONRCK         000100  INT\r
+IORDEL         000100  INT\r
+IORET          000020  INT\r
+IOS            000000  INT\r
+IOSTRT         000010  INT\r
+IOUSE          400000  INT\r
+IOW            000001  INT\r
+IOWC           000020  INT\r
+IOWS           400000  INT\r
+ITEM           000004  INT\r
+JBFADR         000000  INT\r
+JBFCTR         000002  INT\r
+JBFPTR         000001  INT\r
+JBUF           000005  INT\r
+JDAT           000011  INT\r
+JERR           002000  INT\r
+JIOW           100000  INT\r
+JNA            004000  INT\r
+LOOKB          040000  INT\r
+LPT            000223' \r
+LPTADR         000221' INT\r
+LPTBUF         000217' INT\r
+LPTCHB         000055  INT\r
+LPTCHN         000005  \r
+LPTCHR         000212' INT\r
+LPTCLB         000205  INT\r
+LPTDAT         000211' INT\r
+LPTDB          000211' INT\r
+LPTDSP         000214' EXT\r
+LPTIOS         000213' INT\r
+LPTMOD         000215' INT\r
+LPTPTR         000220' INT\r
+LPTSER         000214' INT\r
+LPTSV1         000222' INT\r
+MAXIMA         000000  INT\r
+MLTTYL 777777  777776  INT\r
+MTA0           000156' \r
+\r
+\r
+\fIOINI2 - IO INITIALIZATION PART 2     MACRO 10 05:51 24-APR-78 PAGE 12-3\r
+IOINI2 MAC     24-APR-78 03:06         SYMBOL TABLE\r
+\r
+MTA0DB         000145' INT\r
+MTA1           000167' \r
+MTA1DB         000156' INT\r
+MTA2           000200' \r
+MTA2DB         000167' INT\r
+MTA3           000211' \r
+MTA3DB         000200' INT\r
+MTCCHN         000002  \r
+MTCNUM         000004  \r
+MTDISP         000203' EXT\r
+MTTYLN 777777  777776  INT\r
+MTW            010000  INT\r
+OBUFB          100000  INT\r
+OUTPB          004000  INT\r
+PDP            000003  INT\r
+PICHN          000100  INT\r
+PICLK          004202  INT\r
+PIOFF          000400  INT\r
+PION           000200  INT\r
+PROG           000007  INT\r
+PTP            000240' \r
+PTPADR         000233' INT\r
+PTPBUF         000231' INT\r
+PTPCHA         000236' INT\r
+PTPCHN         000005  \r
+PTPCHR         000224' INT\r
+PTPCNT         000235' INT\r
+PTPCTR         000234' INT\r
+PTPDAT         000223' INT\r
+PTPDB          000223' INT\r
+PTPDSP         000226' EXT\r
+PTPIOS         000225' INT\r
+PTPMOD         000227' INT\r
+PTPPTR         000232' INT\r
+PTPSER         000226' INT\r
+PTPSIO         000237' INT\r
+PTR            000254' \r
+PTRADR         000247' INT\r
+PTRBUF         000246' INT\r
+PTRCHN         000005  \r
+PTRCHR         000241' INT\r
+PTRCTR         000251' INT\r
+PTRDAT         000240' INT\r
+PTRDB          000240' INT\r
+PTRDSP         000243' EXT\r
+PTRIOS         000242' INT\r
+PTRMOD         000244' INT\r
+PTRPTR         000250' INT\r
+\r
+\r
+\fIOINI2 - IO INITIALIZATION PART 2     MACRO 10 05:51 24-APR-78 PAGE 12-4\r
+IOINI2 MAC     24-APR-78 03:06         SYMBOL TABLE\r
+\r
+PTRSER         000243' INT\r
+PTRSV1         000253' INT\r
+PTRSVC         000252' INT\r
+RUN            200000  INT\r
+RUNABL         204000  INT\r
+SCNCHN         000003  \r
+SCNLIN         000001  \r
+STTYB1         000021  INT\r
+STTYBF         000020  INT\r
+TAC            000001  INT\r
+TAC1           000002  INT\r
+TCONLN         000001  INT\r
+TEM            000010  INT\r
+TSCNLN         000000  INT\r
+TTY0           000035' \r
+TTY0DB         000001' INT\r
+TTY1           000071' \r
+TTY1DB         000035' INT\r
+TTYATC         020000  INT\r
+TTYBFE         000033  INT\r
+TTYBM1         000013  INT\r
+TTYBUF         000014  INT\r
+TTYCTR         000012  INT\r
+TTYDSP         000040' EXT\r
+TTYLEN         000002  INT\r
+TTYLST         000001' INT\r
+TTYPTR         000011  INT\r
+TTYSAV         000013  INT\r
+TTYUSE         010000  INT\r
+UDIR           000012  INT\r
+UFREE          000011  INT\r
+USRMOD         010000  INT\r
+UTDSP          000135' EXT\r
+UUO            000014  INT\r
+\f            JJJ         OOOOOOOOO         BBBBBBBBBBBB         DDDDDDDDDDDD            AAAAAAAAA         TTTTTTTTTTTTTTT\r
+            JJJ         OOOOOOOOO         BBBBBBBBBBBB         DDDDDDDDDDDD            AAAAAAAAA         TTTTTTTTTTTTTTT\r
+            JJJ         OOOOOOOOO         BBBBBBBBBBBB         DDDDDDDDDDDD            AAAAAAAAA         TTTTTTTTTTTTTTT\r
+            JJJ      OOO         OOO      BBB         BBB      DDD         DDD      AAA         AAA            TTT      \r
+            JJJ      OOO         OOO      BBB         BBB      DDD         DDD      AAA         AAA            TTT      \r
+            JJJ      OOO         OOO      BBB         BBB      DDD         DDD      AAA         AAA            TTT      \r
+            JJJ      OOO         OOO      BBB         BBB      DDD         DDD      AAA         AAA            TTT      \r
+            JJJ      OOO         OOO      BBB         BBB      DDD         DDD      AAA         AAA            TTT      \r
+            JJJ      OOO         OOO      BBB         BBB      DDD         DDD      AAA         AAA            TTT      \r
+            JJJ      OOO         OOO      BBBBBBBBBBBB         DDD         DDD      AAA         AAA            TTT      \r
+            JJJ      OOO         OOO      BBBBBBBBBBBB         DDD         DDD      AAA         AAA            TTT      \r
+            JJJ      OOO         OOO      BBBBBBBBBBBB         DDD         DDD      AAA         AAA            TTT      \r
+JJJ         JJJ      OOO         OOO      BBB         BBB      DDD         DDD      AAAAAAAAAAAAAAA            TTT      \r
+JJJ         JJJ      OOO         OOO      BBB         BBB      DDD         DDD      AAAAAAAAAAAAAAA            TTT      \r
+JJJ         JJJ      OOO         OOO      BBB         BBB      DDD         DDD      AAAAAAAAAAAAAAA            TTT      \r
+JJJ         JJJ      OOO         OOO      BBB         BBB      DDD         DDD      AAA         AAA            TTT      \r
+JJJ         JJJ      OOO         OOO      BBB         BBB      DDD         DDD      AAA         AAA            TTT      \r
+JJJ         JJJ      OOO         OOO      BBB         BBB      DDD         DDD      AAA         AAA            TTT      \r
+   JJJJJJJJJ            OOOOOOOOO         BBBBBBBBBBBB         DDDDDDDDDDDD         AAA         AAA            TTT      \r
+   JJJJJJJJJ            OOOOOOOOO         BBBBBBBBBBBB         DDDDDDDDDDDD         AAA         AAA            TTT      \r
+   JJJJJJJJJ            OOOOOOOOO         BBBBBBBBBBBB         DDDDDDDDDDDD         AAA         AAA            TTT      \r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  05:53:58\r
+File: DSKB0 :JOBDAT.LST   [8,296] Created: 20-April-1967 05:51:00 Printed: 24-April-1978 05:53:35\r
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:1732 \r
+File will be deleted after printing\r
+\f\r
+JOBDAT - JOB DATA AREA ASSIGNMENTS     MACRO 10 05:51 24-APR-78 PAGE 1\r
+JOBDAT MAC     24-APR-78 01:24 \r
+\r
+                               TITLE JOBDAT - JOB DATA AREA ASSIGNMENTS\r
+\r
+                                         DEFINE BLK (A,B)\r
+                               <JOBPRO=B\r
+                               A=0\r
+                               ENTRY A\r
+                               DEFINE BLK (C,D)\r
+                               <C=JOBPRO\r
+                               JOBPRO=JOBPRO+D\r
+                               ENTRY C>>\r
+\r
+                                         BLK JOBAC,20          ;SYSTEM USE AC STORAGE\r
+                                         BLK JOBDAC,20         ;USER'S AC STORAGE WHILE JOB IS INACTIV\r
+                       000157  JOBDHI=JOBDAT+17    ;HIGHEST AC SAVED WHILE INACTIVE\r
+                                         BLK JOBUUO,1          ;UUO SAVE AND TRAP LOCATIONS\r
+                                         BLK JOB41,1           ;UUO JSR LOCATION\r
+                                         BLK JOBPC,1           ;BITS 0-5=APR FLAGS, C(RH)=PC\r
+                                         BLK JOBPDP,1          ;PUSH DOWN POINTER FOR SYSTEM USE\r
+                       000043  JOBPRT=JOBPDP                   ;FIRST LOC PROTECTED FROM ITNERRUPT SER\r
+                       000044  JOBPR1=JOBPRT+1                 ;FIRST LOC+1\r
+                                         BLK JOBREL,1          ;C(LH)=0, C(RH)=RELOCATION ADDRESS\r
+                                         BLK JOBUXT,1          ;EXIT FROM UUO AT BREAK\r
+                                         BLK JOBLEV,1          ;C(40) WHEN INACTIVE\r
+                                         BLK JOBSAV,1          ;TEMPOARY STORAGE FOR UOO HANDLER\r
+                                         BLK JOBPOV,1          ;PUSH DOWN OVERFLOW TRAP\r
+                                         BLK JOBTEM,1          ;(UNUSED)TEMPORARY SYSTEM STORAGE\r
+                                         BLK JOBTM1,1          ;"\r
+                                         BLK JOBINF,1          ;UNUSED\r
+                                         BLK JOBJDA,20         ;JOB IO DEVICE CHANNEL ASSIGNMENTS\r
+                                         BLK JOBDDT,1          ;ADDRESS OF USER'S DDT\r
+                       000073  JOBPFI=JOBDDT-1                 ;LAST LOC PROTECTED FROM IO SERVICE\r
+                       000074  JOBPFU=JOBDDT                   ;LAST LOC PROTECTED FROM USER\r
+                                         BLK JOBCDP,1          ;(UNUSED)POINTER TO COMMAND STRING\r
+                                         BLK JOBTRP,20         ;(UNUSED)TRAP LOCATIONS\r
+                                         BLK JOBSYM,1          ;SYMBOL TABLE POINTER\r
+                                         BLK JOBUSY,1          ;(UNUSED)POINTER TO UNDEFINED SYMBOL TA\r
+                                         BLK JOBSA,1           ;C(RH)=STARTING ADDRESS\r
+                                                               ;C(LH)=HIGHEST LOCATION USED\r
+                                         BLK JOBFF,1           ;FIRST FREE LOCATION\r
+                       000140  JOBDAT=140          ;LENGTH OF JOB DATA AREA\r
+                       000137  JOBHGH=JOBDAT-1                 ;HIGHEST LOC IN JOB DATA AREA\r
+                       000121  JOBPDL=JOBPRO-1                 ;FIRST LOC. -1 OF PD LIST\r
+                       000122  JOBPD1=JOBPDL+1                 ;FIRST LOC. IN PD LIST\r
+               777777  777762  MJOBPD=JOBPDL-JOBHGH            ;- LENGTH OF PD LIST\r
+                       000122  JOBS41=JOBPRO                   ;PLACE WHERE SAVE-GET SAVES USER LOC 4\r
+                       000140  JOBDA=JOBDAT\r
+                               ENTRY JOBPFI,JOBPFU,JOBPDL,JOBPRO,MJOBPD,JOBHGH\r
+                               ENTRY JOBDHI,JOBPRT,JOBPR1,JOBDA,JOBS41,JOBPD1\r
+\r
+                                         END,\r
+\r
+NO ERRORS DETECTED\r
+\r
+\r
+\fJOBDAT - JOB DATA AREA ASSIGNMENTS    MACRO 10 05:51 24-APR-78 PAGE 1-1\r
+JOBDAT MAC     24-APR-78 01:24 \r
+\r
+PROGRAM BREAK IS 000000\r
+\r
+8K CORE USED\r
+\r
+\fJOBDAT - JOB DATA AREA ASSIGNMENTS    MACRO 10 05:51 24-APR-78 PAGE 2\r
+JOBDAT MAC     24-APR-78 01:24         SYMBOL TABLE\r
+\r
+JOB41          000041  ENT\r
+JOBAC          000000  ENT\r
+JOBCDP         000075  ENT\r
+JOBDA          000140  ENT\r
+JOBDAC         000020  ENT\r
+JOBDAT         000140  \r
+JOBDDT         000074  ENT\r
+JOBDHI         000157  ENT\r
+JOBFF          000121  ENT\r
+JOBHGH         000137  ENT\r
+JOBINF         000053  ENT\r
+JOBJDA         000054  ENT\r
+JOBLEV         000046  ENT\r
+JOBPC          000042  ENT\r
+JOBPD1         000122  ENT\r
+JOBPDL         000121  ENT\r
+JOBPDP         000043  ENT\r
+JOBPFI         000073  ENT\r
+JOBPFU         000074  ENT\r
+JOBPOV         000050  ENT\r
+JOBPR1         000044  ENT\r
+JOBPRO         000122  ENT\r
+JOBPRT         000043  ENT\r
+JOBREL         000044  ENT\r
+JOBS41         000122  ENT\r
+JOBSA          000120  ENT\r
+JOBSAV         000047  ENT\r
+JOBSYM         000116  ENT\r
+JOBTEM         000051  ENT\r
+JOBTM1         000052  ENT\r
+JOBTRP         000076  ENT\r
+JOBUSY         000117  ENT\r
+JOBUUO         000040  ENT\r
+JOBUXT         000045  ENT\r
+MJOBPD 777777  777762  ENT\r
+\r
+\fLLL                  PPPPPPPPPPPP         TTTTTTTTTTTTTTT         SSSSSSSSSSSS      EEEEEEEEEEEEEEE      RRRRRRRRRRRR   \r
+LLL                  PPPPPPPPPPPP         TTTTTTTTTTTTTTT         SSSSSSSSSSSS      EEEEEEEEEEEEEEE      RRRRRRRRRRRR   \r
+LLL                  PPPPPPPPPPPP         TTTTTTTTTTTTTTT         SSSSSSSSSSSS      EEEEEEEEEEEEEEE      RRRRRRRRRRRR   \r
+LLL                  PPP         PPP            TTT            SSS                  EEE                  RRR         RRR\r
+LLL                  PPP         PPP            TTT            SSS                  EEE                  RRR         RRR\r
+LLL                  PPP         PPP            TTT            SSS                  EEE                  RRR         RRR\r
+LLL                  PPP         PPP            TTT            SSS                  EEE                  RRR         RRR\r
+LLL                  PPP         PPP            TTT            SSS                  EEE                  RRR         RRR\r
+LLL                  PPP         PPP            TTT            SSS                  EEE                  RRR         RRR\r
+LLL                  PPPPPPPPPPPP               TTT               SSSSSSSSS         EEEEEEEEEEEE         RRRRRRRRRRRR   \r
+LLL                  PPPPPPPPPPPP               TTT               SSSSSSSSS         EEEEEEEEEEEE         RRRRRRRRRRRR   \r
+LLL                  PPPPPPPPPPPP               TTT               SSSSSSSSS         EEEEEEEEEEEE         RRRRRRRRRRRR   \r
+LLL                  PPP                        TTT                        SSS      EEE                  RRR   RRR      \r
+LLL                  PPP                        TTT                        SSS      EEE                  RRR   RRR      \r
+LLL                  PPP                        TTT                        SSS      EEE                  RRR   RRR      \r
+LLL                  PPP                        TTT                        SSS      EEE                  RRR      RRR   \r
+LLL                  PPP                        TTT                        SSS      EEE                  RRR      RRR   \r
+LLL                  PPP                        TTT                        SSS      EEE                  RRR      RRR   \r
+LLLLLLLLLLLLLLL      PPP                        TTT            SSSSSSSSSSSS         EEEEEEEEEEEEEEE      RRR         RRR\r
+LLLLLLLLLLLLLLL      PPP                        TTT            SSSSSSSSSSSS         EEEEEEEEEEEEEEE      RRR         RRR\r
+LLLLLLLLLLLLLLL      PPP                        TTT            SSSSSSSSSSSS         EEEEEEEEEEEEEEE      RRR         RRR\r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  05:53:58\r
+File: DSKB0 :LPTSER.LST   [8,296] Created: 20-April-1967 05:51:00 Printed: 24-April-1978 05:53:35\r
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:1729 \r
+File will be deleted after printing\r
+\f\r
+LPTSER - LINE PRINTER SERVICE ROUTINE  MACRO 10 05:51 24-APR-78 PAGE 1\r
+S      MAC     24-APR-78 21:40         8-4-65\r
+\r
+                                       XLIST\r
+                                      LIST\r
+                               TITLE LPTSER - LINE PRINTER SERVICE ROUTINE\r
+                               SUBTTL 8-4-65\r
+                               INTERNAL LPTINT,LPTINI\r
+                               EXTERNAL LPTCHN, LPTCHL, LPTRET,  OUT, WAIT1, LPTSAV, IOSET\r
+                               EXTERNAL ADVBFE,  SETIOD,ILLINP,LPTCHB,LPTCLB\r
+\r
+                               ;DEVICE DATA BLOCK LINKAGE\r
+                               EXTERNAL LPTDAT,LPTCHR,LPTIOS,LPTSER,LPTMOD,LPTBUF,LPTPTR\r
+                               EXTERNAL LPTADR,LPTSV1\r
+                               ENTRY LPTDSP\r
+\r
+\fLPTSER - LINE PRINTER SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 2\r
+LPTSER MAC     24-APR-78 01:26         8-4-65\r
+\r
+\r
+\r
+                               ,LPT PARAMETER ASSIGNMENTS\r
+\r
+                               ,   LPT CONTROL REGISTER\r
+                       002000            LPTCLR=2000           ;CLEAR BUFFER\r
+                       000100            LPTDON=100            ;DONE FLAG\r
+                       000400            LPTERR=400            ;ERROR FLAG\r
+                       001000            LPTLOV=1000           ;LINE OVERFLOW\r
+\r
+                               ,   SPECIAL IO STATUS WORD ASSIGNMENTS\r
+                       100000            LPTADV=100000\r
+\r
+                               REPEAT 0,<\r
+                               ,   LPT DATABLOCK\r
+                               \r
+                               LPTDAT:   SIXBIT .LPT.\r
+                               LPTCHR:   32\r
+                               LPTIOS:   0\r
+                               LPTSER:   EXP LPTDSP\r
+                               LPTMOD:   XWD 0,3\r
+                                0\r
+                               LPTBUF:   0\r
+                               LPTPTR:   0\r
+                               LPTADR:   XWD PROG,0\r
+                               LPTSV1:   0\r
+                               >\r
+\r
+                               ,  LPT SERVICE DISPATCH TABLE\r
+\r
+       000000' 254000  000004' LPTDSP:   JRST LPTINI           ;RELEASE\r
+       000001' 254000  000007'           JRST LPTCLS           ;CLOSE\r
+       000002' 254000  000013'           JRST LPTOUT           ;OUTPUT\r
+       000003' 254000  000000*           JRST ILLINP                           ;INPUT\r
+\r
+       000004' 712600  002000  LPTINI:   CONO LPT,LPTCLR       ;LPT INITIALIZE\r
+       000005' 513000  000034'           HLLZS LPTINT\r
+       000006' 263140  000000            POPJ PDP,\r
+\r
+\fLPTSER - LINE PRINTER SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 3\r
+LPTSER MAC     24-APR-78 01:26         8-4-65\r
+\r
+\r
+\r
+E      000007' 260140  000000* LPTCLS:   PUSHJ PDP,OUT         ;PRINT REMAINING BUFFERS\r
+       000010' 260140  000000*           PUSHJ PDP, WAIT1      ;WAIT FOR IOACT=0\r
+       000011' 712540  000126'           DATAO LPT,LPTTOP      ;PRINT CARRAGE RETURN, FORM FEED\r
+       000012' 263140  000000            POPJ PDP,             ;CLOSE RETURN\r
+\r
+       000013' 660000  010000  LPTOUT:   TRO IOS,IOACT         ;IOACT=1\r
+       000014' 621000  400000            TLZ IOS,IODISC        ;IODISC:=0\r
+       000015' 661000  000020            TLO IOS,IO            ;IO:=1\r
+       000016' 603000  000002            TLNE IOS,IOBEG        ;VIRGIN DEVICE? IOBEG:=0\r
+       000017' 254000  000024'           JRST LPTBEG           ;YES\r
+       000020' 260140  000127'           PUSHJ PDP,LPTSET\r
+       000021' 202000  000000*           MOVEM IOS,LPTIOS      ;C(LPTIOS):=C(IOS)\r
+       000022' 201040  000100            MOVEI TAC,LPTDON\r
+       000023' 254000  000030'           JRST LPTBG1\r
+\r
+       000024' 661000  400000  LPTBEG:   TLO IOS,IODISC\r
+       000025' 202000  000021*           MOVEM IOS,LPTIOS      ;C(LPTIOS):=C(IOS)\r
+       000026' 260140  000127'           PUSHJ PDP,LPTSET\r
+       000027' 201040  002000            MOVEI TAC,LPTCLR\r
+       000030' 201100  001500  LPTBG1:   MOVEI TAC1,LPTLOV+LPTERR+LPTDON\r
+       000031' 542100  000034'           HRRM TAC1,LPTINT\r
+       000032' 712601  000000*           CONO LPT, LPTCHB(TAC)         ;CLEAR BUFFER AND ASSIGN PI C\r
+       000033' 263140  000000            POPJ PDP,             ;RETURN\r
+\r
+\fLPTSER - LINE PRINTER SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 4\r
+LPTSER MAC     24-APR-78 01:26         8-4-65\r
+\r
+\r
+\r
+\r
+                               , LINE PRINTER INTERRUPT SERVICE\r
+\r
+       000034' 712740  001500  LPTINT:   CONSO LPT,LPTLOV+LPTERR+LPTDON;LINE OVERFLOW, ERROR OR DONE\r
+       000035' 254000  000034'           JRST LPTINT           ;IF LPT IS IN FLAG LIST, GO TO ERROR, E\r
+       000036' 712700  000070            CONSZ LPT,70\r
+       000037' 712740  000100            CONSO LPT,LPTDON\r
+       000040' 254000  000102'           JRST LPTERI                   ;YES\r
+       000041' 335000  000025* LPTIN1:   SKIPGE LPTIOS         ;IODISC=1?\r
+       000042' 254000  000053'           JRST LPTDSC                   ;YES\r
+       000043' 712500  000000*           BLKO LPT,LPTPTR       ;PRINT\r
+       000044' 334000  000000            SKIPA                 ;BUFFER EMPTY\r
+       000045' 254520  000000*           JEN @LPTCHL                   ;DISMISS INTERRUPT AND RETURN\r
+       000046' 202040  000000*           MOVEM TAC,LPTSV1      ;SAVE TAC\r
+       000047' 515040  400000            HRLZI TAC,IODISC      ;IODISC:=1\r
+       000050' 436040  000041*           IORM TAC,LPTIOS\r
+       000051' 200040  000046* LPTERX:   MOVE TAC,LPTSV1       ;RESTORE TAC\r
+       000052' 254520  000045*           JEN @LPTCHL                   ;DISMISS INTERRUPT AND RETURN\r
+\r
+       000053' 264000  000000* LPTDSC:   JSR LPTSAV                    ;SAVE ACCUMULATORS AND ESTABL\r
+       000054' 201300  000000*           MOVEI DEVDAT,LPTDAT  ;DEVDAT:=LPTDAT\r
+       000055' 260140  000000*           PUSHJ PDP,IOSET       ;PROG:=C(JBTADR18-35),ITEM:=C(DEVPTR)\r
+       000056' 200000  000050*           MOVE IOS,LPTIOS\r
+       000057' 623000  000002            TLZE IOS,IOBEG\r
+       000060' 254000  000077'           JRST LPTBG                    ;PUT OUT CR-LF\r
+       000061' 260140  000000*           PUSHJ PDP,ADVBFE      ;ADVANCE BUFFER\r
+       000062' 254000  000073'           JRST      LPTOFF      ;NEXT BUFFER EMPTY\r
+       000063' 602000  000040            TRNE IOS,IOCON        ;CONTINUOUS? (IOCON=0?)\r
+       000064' 254000  000073'           JRST LPTOFF           ;NO\r
+       000065' 621000  400000            TLZ IOS,IODISC\r
+       000066' 260140  000127'           PUSHJ PDP,LPTSET      ;SET LPTPTR\r
+\r
+       000067' 623000  000001  LPTINX:   TLZE IOS,IOW          ;IN A WAIT? IOW:=0\r
+       000070' 260140  000000*           PUSHJ PDP,SETIOD      ;YES.  IOWS:=1\r
+       000071' 202000  000056* LPTXIT:   MOVEM IOS,LPTIOS      ;C(LPTIOS):=C(IOS)\r
+       000072' 254000  000000*           JRST LPTRET                     ;RESTORE ACCUMULATORS AND DIS\r
+\r
+       000073' 620000  010000  LPTOFF:   TRZ IOS,IOACT\r
+       000074' 712600  000000            CONO LPT,0\r
+       000075' 513000  000034'           HLLZS LPTINT          ;TURN LPT OFF\r
+       000076' 254000  000067'           JRST LPTINX\r
+\r
+       000077' 712540  000126' LPTBG:    DATAO LPT,LPTTOP      ;SEND OUT CR-FF\r
+       000100' 621000  400000            TLZ IOS,IODISC        ;WHEN IODISC=1\r
+       000101' 254000  000071'           JRST LPTXIT\r
+\r
+\fLPTSER - LINE PRINTER SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 5\r
+LPTSER MAC     24-APR-78 01:26         8-4-65\r
+\r
+\r
+\r
+                               ;HERE ON EITHER OVERFLOW OR ERROR(OFFLINE) OR ERROR CHANNEL\r
+                               ;NOT ASSIGNED.\r
+\r
+       000102' 202040  000051* LPTERI:   MOVEM TAC,LPTSV1      ;SAVE TAC\r
+       000103' 712740  001000            CONSO LPT,LPTLOV      ;LINE OVERFLOW?\r
+       000104' 254000  000111'           JRST LPTER1                   ;NO\r
+       000105' 210040  000137'           MOVN TAC,[EXP 100001]         ;YES, DECREMENT POINTER\r
+       000106' 272040  000043*           ADDM TAC,LPTPTR\r
+       000107' 712540  000140'           DATAO LPT,[EXP 15B6+12B13]    ;PRINT CARRIAGE RETURN, LINE\r
+       000110' 254000  000051'           JRST LPTERX\r
+\r
+       000111' 712740  000070  LPTER1:   CONSO LPT,70          ;ERROR INTERRUPT ASSIGNED?\r
+       000112' 254000  000117'           JRST LPTER2           ;NO\r
+       000113' 712600  000000*           CONO LPT,LPTCLB       ;YES, DEASSIGN IT,SET BUSY,CLEAR REST\r
+       000114' 201040  000100            MOVEI TAC,LPTDON      ;ENABLE FOR DONE FLAG ONLY\r
+       000115' 542040  000034' LPTERA:   HRRM TAC,LPTINT\r
+       000116' 254000  000051'           JRST LPTERX\r
+\r
+       000117' 712640  000001  LPTER2:   CONI LPT,TAC\r
+       000120' 405040  000300            ANDI TAC,300\r
+       000121' 712601  000032*           CONO LPT,LPTCHB(TAC)\r
+       000122' 201040  001500            MOVEI TAC,LPTDON+LPTERR+LPTLOV\r
+       000123' 542040  000034'           HRRM TAC,LPTINT\r
+       000124' 200040  000102*           MOVE TAC,LPTSV1\r
+       000125' 254000  000041'           JRST LPTIN1\r
+       000126' 064300  000000  LPTTOP:   EXP 15B6+14B13        ;CARRIAGE RETURN, FORM FEED\r
+\r
+\fLPTSER - LINE PRINTER SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 6\r
+LPTSER MAC     24-APR-78 01:26         8-4-65\r
+\r
+\r
+\r
+                               ,SET UP PRINTER COUNTER AND POINTER\r
+\r
+       000127' 201060  000000* LPTSET:   MOVEI TAC,@LPTADR     ;LPTPTR:=-(WORD COUNT+1), BUFFER ADDRES\r
+       000130' 210101  000001            MOVN TAC1,1(TAC)\r
+       000131' 504040  000002            HRL TAC,TAC1\r
+       000132' 343040  000134'           AOJLE TAC,.+2         ;C(LPTPTR0-17)<0?\r
+       000133' 561040  000135'           HRROI TAC,LPTNUL-1\r
+       000134' 202040  000106*           MOVEM TAC,LPTPTR\r
+       000135' 263140  000000            POPJ PDP,             ;RETURN\r
+\r
+       000136' 000000  000000  LPTNUL:   0\r
+\r
+                                         END,\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 000141\r
+\r
+9K CORE USED\r
+\r
+\fLPTSER - LINE PRINTER SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 7\r
+LPTSER MAC     24-APR-78 01:26         SYMBOL TABLE\r
+\r
+A              000000  INT\r
+AC1            000015  INT\r
+AC2            000016  INT\r
+AC3            000017  INT\r
+ADVBFE         000061' EXT\r
+AL             000001  INT\r
+ASSCON         400000  INT\r
+ASSPRG         200000  INT\r
+B              000014  INT\r
+BUFPNT         000012  INT\r
+BUFWRD         000013  INT\r
+CLOSB          002000  INT\r
+CLSIN          000002  INT\r
+CLSOUT         000001  INT\r
+D              000017  INT\r
+DAT            000005  INT\r
+DCL            000001  INT\r
+DCW            020000  INT\r
+DDI            000007  INT\r
+DDO            000006  INT\r
+DDTMEM         000037  INT\r
+DDTSYM         000036  INT\r
+DEN            000004  INT\r
+DEVADR         000007  INT\r
+DEVBUF         000006  INT\r
+DEVCHR         000001  INT\r
+DEVCTR         000011  INT\r
+DEVDAT         000006  INT\r
+DEVIAD         000007  INT\r
+DEVIOS         000002  INT\r
+DEVLOG         000005  INT\r
+DEVMOD         000004  INT\r
+DEVNAM         000000  INT\r
+DEVOAD         000010  INT\r
+DEVPTR         000010  INT\r
+DEVSER         000003  INT\r
+DGF            000012  INT\r
+DIN            000003  INT\r
+DLK            000005  INT\r
+DOU            000002  INT\r
+DR             000016  INT\r
+DRL            000000  INT\r
+DSI            000011  INT\r
+DSO            000010  INT\r
+DTW            040000  INT\r
+DVAVAL         000040  INT\r
+DVCDR          100000  INT\r
+DVDIR          000004  INT\r
+DVDIRI         400000  INT\r
+DVIN           000002  INT\r
+DVLPT          040000  INT\r
+DVMTA          000020  INT\r
+\r
+\r
+\fLPTSER - LINE PRINTER SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 7-1\r
+LPTSER MAC     24-APR-78 01:26         SYMBOL TABLE\r
+\r
+DVOUT          000001  INT\r
+DVTTY          000010  INT\r
+ENTRB          020000  INT\r
+I              000010  INT\r
+IB             000013  INT\r
+IBUFB          200000  INT\r
+ILLINP         000003' EXT\r
+INITB          400000  INT\r
+INPB           010000  INT\r
+IO             000020  INT\r
+IOACT          010000  INT\r
+IOBEG          000002  INT\r
+IOBKTL         040000  INT\r
+IOCON          000040  INT\r
+IODEND         020000  INT\r
+IODERR         200000  INT\r
+IODISC         400000  INT\r
+IODONE         400000  INT\r
+IODTER         100000  INT\r
+IOEND          000040  INT\r
+IOFST          000004  INT\r
+IOIMPM         400000  INT\r
+IONRCK         000100  INT\r
+IORDEL         000100  INT\r
+IORET          000020  INT\r
+IOS            000000  INT\r
+IOSET          000055' EXT\r
+IOSTRT         000010  INT\r
+IOUSE          400000  INT\r
+IOW            000001  INT\r
+IOWC           000020  INT\r
+IOWS           400000  INT\r
+ITEM           000004  INT\r
+JBFADR         000000  INT\r
+JBFCTR         000002  INT\r
+JBFPTR         000001  INT\r
+JBUF           000005  INT\r
+JDAT           000011  INT\r
+JERR           002000  INT\r
+JIOW           100000  INT\r
+JNA            004000  INT\r
+LOOKB          040000  INT\r
+LPT            000124  SPD\r
+LPTADR         000127' EXT\r
+LPTADV         100000  \r
+LPTBEG         000024' \r
+LPTBG          000077' \r
+LPTBG1         000030' \r
+LPTBUF         000000  EXT\r
+LPTCHB         000121' EXT\r
+LPTCHL         000052' EXT\r
+LPTCHN         000000  EXT\r
+LPTCHR         000000  EXT\r
+\r
+\fLPTSER - LINE PRINTER SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 7-2\r
+LPTSER MAC     24-APR-78 01:26         SYMBOL TABLE\r
+\r
+LPTCLB         000113' EXT\r
+LPTCLR         002000  \r
+LPTCLS         000007' \r
+LPTDAT         000054' EXT\r
+LPTDON         000100  \r
+LPTDSC         000053' \r
+LPTDSP         000000' ENT\r
+LPTER1         000111' \r
+LPTER2         000117' \r
+LPTERA         000115' \r
+LPTERI         000102' \r
+LPTERR         000400  \r
+LPTERX         000051' \r
+LPTIN1         000041' \r
+LPTINI         000004' INT\r
+LPTINT         000034' INT\r
+LPTINX         000067' \r
+LPTIOS         000071' EXT\r
+LPTLOV         001000  \r
+LPTMOD         000000  EXT\r
+LPTNUL         000136' \r
+LPTOFF         000073' \r
+LPTOUT         000013' \r
+LPTPTR         000134' EXT\r
+LPTRET         000072' EXT\r
+LPTSAV         000053' EXT\r
+LPTSER         000000  EXT\r
+LPTSET         000127' \r
+LPTSV1         000124' EXT\r
+LPTTOP         000126' \r
+LPTXIT         000071' \r
+MTW            010000  INT\r
+OBUFB          100000  INT\r
+OUT            000007' EXT\r
+OUTPB          004000  INT\r
+PDP            000003  INT\r
+PICHN          000100  INT\r
+PROG           000007  INT\r
+RUN            200000  INT\r
+RUNABL         204000  INT\r
+SETIOD         000070' EXT\r
+TAC            000001  INT\r
+TAC1           000002  INT\r
+TEM            000010  INT\r
+TTYATC         020000  INT\r
+TTYUSE         010000  INT\r
+USRMOD         010000  INT\r
+UUO            000014  INT\r
+WAIT1          000010' EXT\r
+\fMMM         MMM      TTTTTTTTTTTTTTT      PPPPPPPPPPPP            SSSSSSSSSSSS      EEEEEEEEEEEEEEE      RRRRRRRRRRRR   \r
+MMM         MMM      TTTTTTTTTTTTTTT      PPPPPPPPPPPP            SSSSSSSSSSSS      EEEEEEEEEEEEEEE      RRRRRRRRRRRR   \r
+MMM         MMM      TTTTTTTTTTTTTTT      PPPPPPPPPPPP            SSSSSSSSSSSS      EEEEEEEEEEEEEEE      RRRRRRRRRRRR   \r
+MMMMMM   MMMMMM            TTT            PPP         PPP      SSS                  EEE                  RRR         RRR\r
+MMMMMM   MMMMMM            TTT            PPP         PPP      SSS                  EEE                  RRR         RRR\r
+MMMMMM   MMMMMM            TTT            PPP         PPP      SSS                  EEE                  RRR         RRR\r
+MMM   MMM   MMM            TTT            PPP         PPP      SSS                  EEE                  RRR         RRR\r
+MMM   MMM   MMM            TTT            PPP         PPP      SSS                  EEE                  RRR         RRR\r
+MMM   MMM   MMM            TTT            PPP         PPP      SSS                  EEE                  RRR         RRR\r
+MMM         MMM            TTT            PPPPPPPPPPPP            SSSSSSSSS         EEEEEEEEEEEE         RRRRRRRRRRRR   \r
+MMM         MMM            TTT            PPPPPPPPPPPP            SSSSSSSSS         EEEEEEEEEEEE         RRRRRRRRRRRR   \r
+MMM         MMM            TTT            PPPPPPPPPPPP            SSSSSSSSS         EEEEEEEEEEEE         RRRRRRRRRRRR   \r
+MMM         MMM            TTT            PPP                              SSS      EEE                  RRR   RRR      \r
+MMM         MMM            TTT            PPP                              SSS      EEE                  RRR   RRR      \r
+MMM         MMM            TTT            PPP                              SSS      EEE                  RRR   RRR      \r
+MMM         MMM            TTT            PPP                              SSS      EEE                  RRR      RRR   \r
+MMM         MMM            TTT            PPP                              SSS      EEE                  RRR      RRR   \r
+MMM         MMM            TTT            PPP                              SSS      EEE                  RRR      RRR   \r
+MMM         MMM            TTT            PPP                  SSSSSSSSSSSS         EEEEEEEEEEEEEEE      RRR         RRR\r
+MMM         MMM            TTT            PPP                  SSSSSSSSSSSS         EEEEEEEEEEEEEEE      RRR         RRR\r
+MMM         MMM            TTT            PPP                  SSSSSSSSSSSS         EEEEEEEEEEEEEEE      RRR         RRR\r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  05:53:58\r
+File: DSKB0 :MTPSER.LST   [8,296] Created: 20-April-1967 05:51:00 Printed: 24-April-1978 05:53:35\r
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:1720 \r
+File will be deleted after printing\r
+\f\r
+MTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES       MACRO 10 05:51 24-APR-78 PAGE 1\r
+S      MAC     24-APR-78 21:40         L. HANTMAN 8-9-65\r
+\r
+                                       XLIST\r
+                                      LIST\r
+                                         TITLE MTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES\r
+                                         SUBTTL L. HANTMAN 8-9-65\r
+                       000004            T=ITEM\r
+                               ; MAG TAPE SERVICE SUBROUTINES\r
+\r
+       000000' 260140  000000* MTAPE1:   PUSHJ PDP,WAIT1\r
+       000001' 551000  776000            HRRZI IOS,776000\r
+       000002' 413006  000002            ANDCAB IOS,DEVIOS(DEVDAT)\r
+       000003' 201214  000000            MOVEI T,(UUO)\r
+       000004' 260140  000007'           PUSHJ PDP,MTAPE+1\r
+       000005' 254000  000000*           JRST UXIT\r
+\r
+       000006' 260140  000000* MTAPE:    PUSHJ PDP,WAIT1\r
+       000007' 621000  010000            TLZ IOS,IODT\r
+       000010' 660000  010000            TRO IOS, IOACT                ;SET ACTIVE\r
+       000011' 260140  000063'           PUSHJ PDP,MTCHK2              ;CHECK IF MAG TAPE CONTROL AV\r
+       000012' 242200  000010            LSH T,^D8 ;MOVE TO FUNCTION\r
+       000013' 405200  007400            ANDI T,7400           ;MODE BITS\r
+       000014' 306200  004000            CAIN T,4000           ;LOGICAL EOT?\r
+       000015' 254000  000435'           JRST MTLEOT\r
+       000016' 302200  000400            CAIE T,400            ;RWD?\r
+       000017' 254000  000022'           JRST .+3\r
+       000020' 722700  004000            CONSZ 224,4000        ;AT LOAD POINT?\r
+       000021' 254000  000517'           JRST MTDMP4\r
+       000022' 201040  000001            MOVEI TAC, TCF                ;LOOK FOR TAPE CONTROL FREE 0\r
+       000023' 542040  000044' MTGO1:    HRRM TAC, MTCONO\r
+       000024' 542040  000211'           HRRM TAC, MTCINT\r
+       000025' 135040  000000* MTGO1A:   LDB TAC,PUNIT         ;UNIT\r
+       000026' 137040  000536'           DPB TAC,[POINT 3,T,31]        ;UNIT\r
+       000027' 135040  000537'           LDB TAC, [POINT 3, IOS,28]    ;DENSITY PARITY\r
+       000030' 431040  000005            XORI TAC, 5                   ;ODD, 556\r
+       000031' 137040  000540'           DPB TAC,[POINT 3,T,23]\r
+       000032' 201044  000000*           MOVEI TAC,MTCCHN(T) ;CHANNEL\r
+\r
+       000033' 722600  000000  MTGO:     CONO 224, 0                   ;DISABLE ALL INTERRUPTS\r
+       000034' 660040  000200            TRO TAC, 200                  ;INHIBIT RETURN TO POOL\r
+       000035' 722201  000000            CONO 220,(TAC)                ;COMMAND\r
+       000036' 402000  000533'           SETZM MTEOFF#                 ;CLEAR EOF FLAG\r
+       000037' 542300  000532'           HRRM DEVDAT,MTDEV#    ;COMMAND, DVDB\r
+       000040' 506040  000532'           HRLM TAC,MTDEV\r
+       000041' 603000  010000            TLNE IOS,IODT\r
+       000042' 700600  002100            CONO PI,2000+DCB\r
+       000043' 201040  000225'           MOVEI TAC,MTPDUN\r
+                                                       HRRM    TAC, MTIDSP\r
+       000044' 722600  000005  MTCONO:   CONO 224,TCF+ERF              ;ENABLE FLAGS\r
+       000045' 263140  000000            POPJ PDP,\r
+\r
+                               ;READ\r
+       000046' 621000  000020  MTIN:     TLZ IOS, IO                   ;READING\r
+       000047' 260140  000056'           PUSHJ PDP,MTCHEK              ;IS SYSTEM AVAILABLE?\r
+       000050' 460066  000007            SETCM TAC,@DEVIAD(DEVDAT)     ;-SIZE-1\r
+       000051' 541066  000007  MTIN1:    HRRI TAC,@DEVIAD(DEVDAT)      ;BUFFER ADDRESS, PROG INCLUDE\r
+       000052' 270040  000541'           ADD TAC,[XWD 2,1]             ;-SIZE+1,BUFFER+1\r
+       000053' 201200  002400            MOVEI T,2400          ;READ\r
+       000054' 200100  000542' MTIN2:    MOVE TAC1,[BLKI DC,4000+DCN+MTDC*10]\r
+       000055' 254000  000132'           JRST MTINDC\r
+\r
+MTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES       MACRO 10 05:51 24-APR-78 PAGE 2\r
+MTPSER MAC     24-APR-78 01:34         L. HANTMAN 8-9-65\r
+\r
+\r
+                               ;IS SYSTEM AVAILABLE\r
+       000056' 660000  010000  MTCHEK:   TRO IOS, IOACT                ;SET ACTIVE\r
+       000057' 661000  010000            TLO IOS, IODT                 ;SET FOR DATA TRANSFER\r
+       000060' 202006  000002            MOVEM IOS, DEVIOS(DEVDAT)\r
+       000061' 352000  000000* MTCHK1:   AOSE DCREQ\r
+       000062' 260140  000000*           PUSHJ PDP,DCWAIT\r
+       000063' 621000  004002  MTCHK2:   TLZ IOS, IOSEOF+IOBEG                 ;CLEAR SPACE TO EOF\r
+       000064' 202006  000002            MOVEM IOS, DEVIOS(DEVDAT)             ;STORE BITS\r
+       000065' 352000  000000*           AOSE MTREQ\r
+       000066' 260140  000000*           PUSHJ PDP,MTWAIT\r
+       000067' 256000  000025'           XCT MTGO1A                    ;UNIT\r
+       000070' 241040  000004            ROT TAC, 4                    ;PUT IN UNIT POSITION\r
+       000071' 722201  000200            CONO 220, 200(TAC)    ;HAS UNIT ONLY\r
+       000072' 722600  000002            CONO 224, SEL                 ;JAM UNIT INTO COMMAND BUFFER\r
+       000073' 722700  000002            CONSZ 224, SEL                ;UNIT NOT READY?\r
+       000074' 263140  000000            POPJ PDP, 0                   ;EXIT\r
+       000075' 241040  777774            ROT TAC, -4                   ;UNIT IN TAC\r
+       000076' 542301  000425'           HRRM DEVDAT, MTSTAK(TAC)      ;PUT IN STACK\r
+       000077' 200100  000543'           MOVE TAC1, [XWD MTCLOK,^D32]  ;HALF SECOND\r
+       000100' 137040  000544'           DPB TAC, [POINT 3,TAC1,23]    ;STORE UNIT NUMBER\r
+       000101' 506101  000425'           HRLM TAC1, MTSTAK(TAC)        ;SAVE ACTUAL CLOCK REQUEST\r
+       000102' 700600  000400            CONO PI, 400                  ;TURN OFF PI\r
+       000103' 136100  000000*           IDPB TAC1, CLOCK              ;REQUEST CLOCK RETURN TO MTCL\r
+       000104' 700600  000200            CONO PI, 200                  ;TURN PI ON\r
+       000105' 371000  000065*           SOSL MTREQ            ;DECREMENT REQUEST COUNT, ANYONE LEFT W\r
+       000106' 476000  000000*           SETOM MTAVAL                  ;YES,SET MAG TAPE AVAL\r
+       000107' 607000  010000            TLNN IOS, IODT                ;NON-DATA TRANSFER?\r
+       000110' 254000  000113'           JRST MTCHK3           ;YES\r
+       000111' 371000  000061*           SOSL DCREQ            ;NO,DECREMENT REQUEST COUNT,ANYONE LEFT\r
+       000112' 476000  000000*           SETOM DCAVAL                  ;YES,SET DATA CONTROL AVAILAB\r
+       000113' 260140  000000* MTCHK3:   PUSHJ PDP, WSYNC              ;REQUEST WAIT\r
+       000114' 200006  000002            MOVE IOS, DEVIOS(DEVDAT)      ;LOAD STATUS\r
+       000115' 607000  010000            TLNN IOS, IODT                ;DATA TRANFER?\r
+       000116' 254000  000065'           JRST MTCHK2+2                 ;CHECK FOR MT AVAILABLE ONLY\r
+       000117' 254000  000061'           JRST MTCHK1                   ;CHECK FOR MT AND DC AVAIALABL\r
+\r
+\fMTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES      MACRO 10 05:51 24-APR-78 PAGE 3\r
+MTPSER MAC     24-APR-78 01:34         L. HANTMAN 8-9-65\r
+\r
+\r
+                               ;WRITE\r
+       000120' 661000  000020  MTOUT:    TLO IOS, IO                   ;WRITING\r
+       000121' 260140  000056'           PUSHJ PDP,MTCHEK\r
+       000122' 722700  000200            CONSZ 224,200         ;IS FILE PROTECT RING IN?\r
+       000123' 254000  000145'           JRST MTOUTE           ;NO, ERROR CANT WRITE. CROCK!!\r
+       000124' 201066  000010  MTOUT1:   MOVEI TAC,@DEVOAD(DEVDAT)     ;BUFFER ADDRESS, PROG INCLUDE\r
+       000125' 210101  000001            MOVN TAC1,1(TAC)      ;-WD COUNT\r
+       000126' 504040  000002            HRL TAC,TAC1          ;-WD CMT,BUFFER\r
+       000127' 347040  000273'           AOJG TAC,MTNOTI       ;BUFFER+1, TEST FOR ZERO WORD COUNT\r
+       000130' 200040  000545' MTOUT2:   MOVE TAC,[BLKO DC,3400+DCN+MTDC*10]\r
+       000131' 201200  001000            MOVEI T,1000          ;WRITE\r
+       000132' 202040  000531' MTINDC:   MOVEM TAC,MTDCCN#             ;BLKO POINTER\r
+       000133' 202040  000526'           MOVEM TAC,DCWRD#\r
+       000134' 552100  000527'           HRRZM TAC1, MDCSAV#           ;SAVE DC COMMAND\r
+       000135' 541100  000526'           HRRI TAC1,DCWRD\r
+       000136' 202100  000042            MOVEM TAC1,40+<2*DCN>         ;BLK COMMAND\r
+       000137' 200100  000546'           MOVE TAC1,[JSR MTDCND]\r
+       000140' 202100  000043            MOVEM TAC1,41+<2*DCN>\r
+       000141' 700600  001100            CONO PI,1100\r
+       000142' 720220  000527'           CONO DC, @MDCSAV              ;DATA CONTROL COMMAND\r
+       000143' 201040  000004            MOVEI TAC, ERF\r
+       000144' 254000  000023'           JRST MTGO1\r
+\r
+       000145' 660000  200000  MTOUTE:   TRO IOS,IODERR        ;WRITE LOCK, DEVICE ERROR\r
+       000146' 260140  000246'           PUSHJ PDP,MTEND1\r
+       000147' 254000  000005*           JRST UXIT\r
+\r
+       000150' 135040  000000* MTCLS:    LDB TAC,PIOMOD        ;MODE\r
+       000151' 307040  000016            CAIG TAC, 16                  ;DUMP MODE\r
+       000152' 254000  000157'           JRST MTCLS1                   ;CLOSE OUTPUT\r
+       000153' 603000  000020            TLNE IOS,IO                   ;INPUT?\r
+       000154' 254000  000160'           JRST MTCLS1+1                 ;WRITE EOFS\r
+       000155' 201200  000016            MOVEI T,16            ;SPACE TO EOF\r
+       000156' 254000  000006'           JRST MTAPE                    ;GOES BACK TO UUO LEVEL\r
+       000157' 260140  000000* MTCLS1:   PUSHJ PDP,OUT\r
+       000160' 201200  000003            MOVEI T,3  ;WRITE IOF\r
+       000161' 260140  000006'           PUSHJ PDP, MTAPE\r
+       000162' 201200  000003            MOVEI T,3  ;WRITE EOF\r
+       000163' 260140  000006'           PUSHJ PDP, MTAPE\r
+       000164' 201200  000007            MOVEI T,7  ;BSP\r
+       000165' 254000  000006'           JRST MTAPE\r
+       000166' 263140  000000  MTDISP:   POPJ PDP,                     ;RELEASE\r
+       000167' 254000  000150'           JRST MTCLS                    ;CLOSE\r
+       000170' 254000  000120'           JRST MTOUT                    ;WRITE\r
+       000171' 254000  000046'           JRST MTIN                     ;READ\r
+       000172' 254000  000000*           JRST CUXIT1           ;ENTER IN DIRECTORY\r
+       000173' 254000  000172*           JRST CUXIT1           ;LOOKUP IN DIRECTORY\r
+       000174' 254000  000454'           JRST MTDMPO                   ;DUMP OUT\r
+       000175' 254000  000504'           JRST MTDMPI                   ;DUMP IN\r
+       000176' 254000  000147*           JRST UXIT                     ;SETO\r
+       000177' 254000  000176*           JRST UXIT                     ;SETI\r
+       000200' 254000  000177*           JRST UXIT                     ;GETF\r
+\r
+\fMTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES      MACRO 10 05:51 24-APR-78 PAGE 3-1\r
+MTPSER MAC     24-APR-78 01:34         L. HANTMAN 8-9-65\r
+\r
+\r
+       000201' 210040  000453' MTCINI:   MOVN TAC, MTREDO              ;REPEAT COUNTER\r
+       000202' 572040  000534'           HRREM TAC, MTERCN             ;RESET ERROR CNTR\r
+       000203' 722600  000000            CONO 224,0                    ;CLEAR ENABLES\r
+       000204' 513000  000211'           HLLZS MTCINT                  ;CLEAR CONSO\r
+       000205' 263140  000000            POPJ PDP,\r
+\r
+\r
+\fMTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES      MACRO 10 05:51 24-APR-78 PAGE 4\r
+MTPSER MAC     24-APR-78 01:34         L. HANTMAN 8-9-65\r
+\r
+\r
+\r
+\r
+                               ;BLK COUNTED OUT\r
+\r
+       000206' 000000  000000  MTDCND:   0\r
+       000207' 700600  001100            CONO PI,DCB+1000              ;SHUT OF DC CHANNEL\r
+       000210' 254520  000206'           JEN @MTDCND\r
+\r
+\fMTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES      MACRO 10 05:51 24-APR-78 PAGE 5\r
+MTPSER MAC     24-APR-78 01:34         L. HANTMAN 8-9-65\r
+\r
+\r
+\r
+                               ;FLAG FROM TAPE CONTROL.  SET UP BY INSERT MACRO\r
+       000211' 722740  000005  MTCINT:   CONSO 224,TCF+ERF\r
+       000212' 254000  000212'           JRST .\r
+       000213' 264000  000000*           JSR MTCSAV                    ;SAVE ACS\r
+       000214' 550300  000532'           HRRZ DEVDAT,MTDEV             ;DVBD\r
+       000215' 135340  000000*           LDB PROG,PJOBN;               JOB NUMBER\r
+       000216' 550347  000000*           HRRZ PROG, JBTADR(PROG)\r
+       000217' 200006  000002            MOVE IOS, DEVIOS(DEVDAT)\r
+       000220' 722740  000001            CONSO 224,TCF                 ;TAPE CONTROL FREE\r
+       000221' 254000  000323'           JRST MTEOR\r
+       000222' 254000  000225' MTIDSP:   JRST MTPDUN                   ;POINTS TO MTERR FOR ERROR\r
+       000223' 254000  000355'           JRST MTBSP                    ;AFTER BACKSPACE\r
+       000224' 254000  000335'           JRST MTERR                    ;IF ERROR FOUND\r
+       000225' 607000  010000  MTPDUN:   TLNN IOS,IODT\r
+       000226' 254000  000312'           JRST MTNIO2\r
+       000227' 135040  000150*           LDB TAC,PIOMOD\r
+       000230' 301040  000016            CAIL TAC,16\r
+       000231' 254000  000246'           JRST MTEND1                   ;DUMP\r
+       000232' 603000  000020            TLNE IOS,IO\r
+       000233' 254000  000273'           JRST MTNOTI                   ;WRITING\r
+       000234' 332000  000533'           SKIPE MTEOFF                  ;NOT EOF?\r
+                                                       JRST    MTEOF\r
+       000235' 201066  000007  MTINDN:   MOVEI TAC,@DEVIAD(DEVDAT)     ;BUFFER ADDRESS\r
+       000236' 210100  000531'           MOVN TAC1,MTDCCN              ;WD CNT-1\r
+       000237' 253100  000240'           AOBJN TAC1, .+1               ;WD CNT\r
+       000240' 513000  000002            HLLZS TAC1                    ;CLR RT HALF\r
+       000241' 270100  000526'           ADD TAC1,DCWRD                ;ADD CURRENT COUNT=NO. OF WDS\r
+       000242' 546101  000001            HLRM TAC1,1(TAC)              ;STORE AT WORD COUNT\r
+       000243' 260140  000000*           PUSHJ PDP,ADVBFF\r
+       000244' 254000  000246'           JRST .+2  ;NEXT BUFFER FULL\r
+       000245' 254000  000275'           JRST MTCON                            ;CONTINUE MODE\r
+       000246' 720200  000000  MTEND1:   CONO DC, 0                    ;TURN OFF DATA CONTROL\r
+       000247' 371000  000111*           SOSL DCREQ            ;DECREMENT REQUEST COUNT, ANYONE LEFT?\r
+       000250' 476000  000112*           SETOM DCAVAL                  ;YES, SET FLAG FOR CLOCK\r
+       000251' 371000  000105* MTNIO:    SOSL MTREQ\r
+       000252' 476000  000106*           SETOM MTAVAL                  ;YES, SET FLAG FOR CLOCK\r
+       000253' 722700  010000            CONSZ 224,10000               ;END OF TAPE?\r
+       000254' 660000  002000            TRO IOS, IOTEND               ;SET END OF TAPE INDICATION\r
+       000255' 620000  004000            TRZ IOS, IOBOT                ;CLR LOAD POINT INDICATION\r
+       000256' 722700  004000            CONSZ 224, 4000               ;LOAD POINT?\r
+       000257' 660000  004000            TRO IOS, IOBOT                ;SET LOAD POINT INDICATION\r
+       000260' 722700  020000            CONSZ 224, 20000              ;TAPE REWINDING?\r
+       000261' 660000  004000            TRO IOS, IOBOT                ;SET LOAD POINT INDICATION\r
+       000262' 623000  000001            TLZE IOS, IOW                 ;CLEAR WAIT\r
+       000263' 260140  000000*           PUSHJ PDP, SETIOD             ;REQUEST WAIT SATISFIED\r
+       000264' 620000  010000            TRZ IOS, IOACT                ;CLEAR ACTIVE\r
+       000265' 202006  000002            MOVEM IOS, DEVIOS(DEVDAT)     ;RESTORE BITS\r
+       000266' 722600  000000            CONO 224,0                    ;CLEAR MAG TAPE ENABLES\r
+       000267' 513000  000211'           HLLZS MTCINT                  ;CLEAR CONSO\r
+       000270' 210040  000453'           MOVN TAC, MTREDO              ;REPEAT COUNTER\r
+       000271' 572040  000534'           HRREM TAC, MTERCN#\r
+       000272' 263140  000000            POPJ PDP,             ;DISMISS INTERRUPT OR RETURN TO CALLER\r
+\r
+\fMTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES      MACRO 10 05:51 24-APR-78 PAGE 6\r
+MTPSER MAC     24-APR-78 01:34         L. HANTMAN 8-9-65\r
+\r
+\r
+       000273' 260140  000000* MTNOTI:   PUSHJ PDP,ADVBFE              ;WRITING\r
+       000274' 254000  000246'           JRST MTEND1\r
+       000275' 602000  000040  MTCON:    TRNE IOS,IOCON                ;CONTINUOUS?\r
+       000276' 254000  000246'           JRST MTEND1                   ;STOP TAPE\r
+       000277' 722700  010000            CONSZ 224,10000               ;END OF TAPE?\r
+       000300' 254000  000246'           JRST MTEND1                   ;STOP TAPE\r
+       000301' 720200  000000            CONO DC,0             ;CLEAR DATA CONTROL\r
+       000302' 623000  000001            TLZE IOS,IOW\r
+       000303' 260140  000263*           PUSHJ PDP,SETIOD\r
+       000304' 202006  000002            MOVEM IOS,DEVIOS(DEVDAT)\r
+       000305' 210040  000453'           MOVN TAC,MTREDO\r
+       000306' 572040  000534'           HRREM TAC,MTERCN\r
+       000307' 607000  000020            TLNN IOS,IO           ;INPUT OR OUTPUT?\r
+       000310' 254000  000051'           JRST MTIN1            ;CALL INPUT SUBROUTINE\r
+       000311' 254000  000124'           JRST MTOUT1           ;CALL OUTPUT SUBROUTINE\r
+       000312' 554040  000532' MTNIO2:   HLRZ TAC,MTDEV                ;COMMAND\r
+       000313' 405040  007400            ANDI TAC,7400\r
+       000314' 302040  003000            CAIE TAC, 3000                ;SPACE ONE RECORD\r
+       000315' 254000  000251'           JRST MTNIO                    ;EXIT\r
+       000316' 722700  000400            CONSZ 224, 400                ;EOF?\r
+       000317' 661000  004000            TLO IOS, IOSEOF               ;SET EOF DETECTED\r
+       000320' 254000  000251'           JRST MTNIO                    ;EXIT\r
+       000321' 661000  000040  MTEOF:    TLO IOS, IOEND\r
+       000322' 254000  000246'           JRST MTEND1\r
+       000323' 722700  000030  MTEOR:    CONSZ 224,LPE+CPE             ;IF END OF RECORD CHECK PARIT\r
+       000324' 370000  000222'           SOS MTIDSP                    ;IF ERROR CAUSE INTERRUPT TO\r
+                                                                       ;ERROR ROUTIE VIA TCF\r
+       000325' 722700  000400            CONSZ 224, 400                ;EOF?\r
+       000326' 476000  000533'           SETOM MTEOFF                  ;SET EOF FLAG\r
+       000327' 722600  000001  MTIGN:    CONO 224, TCF                 ;IF ERF, CAUSE INTERRUPT TO D\r
+                                                                       ;PATCH TABLE, DISABLE ERF FLA\r
+       000330' 202040  000206'           MOVEM TAC, MTDCND             ;SAVE TAC\r
+       000331' 201040  000001            MOVEI TAC, TCF                ;LOOK FOR TCF ONLY\r
+       000332' 542040  000211'           HRRM TAC, MTCINT              ;SET CONSO\r
+       000333' 200040  000206'           MOVE TAC,MTDCND               ;RESTORE TAC\r
+       000334' 254000  000000*           JRST MTCRET                   ;DISMISS AND RETURN VIA TCF\r
+\r
+\fMTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES      MACRO 10 05:51 24-APR-78 PAGE 7\r
+MTPSER MAC     24-APR-78 01:34         L. HANTMAN 8-9-65\r
+\r
+\r
+       000335' 554040  000532' MTERR:    HLRZ TAC,MTDEV                ;COMMAND\r
+       000336' 405040  007400            ANDI TAC,7400\r
+       000337' 306040  002400            CAIN TAC,2400                 ;READ?\r
+       000340' 254000  000343'           JRST .+3\r
+       000341' 306040  001000            CAIN TAC,1000                 ;WRITE\r
+       000342' 254000  000401'           JRST MTIGN2                   ;IGNORE IF NOT RD OR WRITE\r
+       000343' 606000  000100            TRNN IOS, IONRCK              ;RE-DO?\r
+       000344' 351000  000534'           AOSL MTERCN                   ;THIRD ERROR?\r
+       000345' 254000  000353'           JRST MTERR2                   ;TRIPLE ERROR\r
+       000346' 554040  000532'           HLRZ TAC,MTDEV                ;COMMAND\r
+       000347' 405040  770377            ANDI TAC,770377\r
+       000350' 722201  003400            CONO 220,3400(TAC)    ;BSP\r
+       000351' 370000  000222'           SOS MTIDSP\r
+       000352' 254000  000327'           JRST MTIGN\r
+\r
+       000353' 660000  200000  MTERR2:   TRO IOS, IODERR               ;DEVICE ERROR\r
+       000354' 254000  000225'           JRST MTPDUN\r
+\r
+       000355' 200040  000531' MTBSP:    MOVE TAC,MTDCCN               ;POINTER\r
+       000356' 202040  000526'           MOVEM TAC,DCWRD               ;RESET POINTER WORD\r
+       000357' 720240  000001            CONI DC,TAC                   ;SAVE IN/OUT, PACK MD. DEV NU\r
+                                                                       ;PRIORITY\r
+       000360' 405040  000777            ANDI TAC,777\r
+       000361' 271040  003000            ADDI TAC,3000                 ;MAKE WRITE\r
+       000362' 606040  000400            TRNN TAC,400                  ;WAS IT WRITING?\r
+       000363' 271040  001000            ADDI TAC,1000                 ;MAKE READ\r
+       000364' 720201  000000            CONO DC,(TAC)                 ;REISSUE CONO\r
+       000365' 554040  000532'           HLRZ TAC,MTDEV                ;COMMAND\r
+       000366' 722740  040000            CONSO 224,XNC                 ;WAIT FOR XNC\r
+       000367' 254000  000366'           JRST .-1  ;SHOULD ADD A COUNT(RUNAWAY TAPE TURNED\r
+       000370' 722201  000000            CONO 220,(TAC)                ;REISSUE RD OR WRITE\r
+       000371' 402000  000533'           SETZM MTEOFF                  ;CLR EOF FLAG\r
+       000372' 700600  002100            CONO PI,2000+DCB              ;TURN ON CHANNEL\r
+       000373' 201040  000225'           MOVEI TAC,MTPDUN              ;RESET SWITCH\r
+       000374' 542040  000222'           HRRM TAC,MTIDSP\r
+       000375' 201040  000004            MOVEI TAC, ERF\r
+       000376' 542040  000211'           HRRM TAC, MTCINT\r
+       000377' 722600  000004            CONO 224, ERF\r
+       000400' 254000  000334*           JRST MTCRET                   ;ENABLE PROPER FLAGS\r
+       000401' 350000  000222' MTIGN2:   AOS MTIDSP                    ;RESET DISPATCH SWITCH\r
+       000402' 254000  000327'           JRST MTIGN\r
+\r
+                               ;NEED TO TRY WRITING LONG RECORD GAP ON OUTPUT(ONLY) AND TRY\r
+                               ;ONCE MORE AT NEW SPOT ON TAPE IF TRIPLE ERROR\r
+\r
+\fMTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES      MACRO 10 05:51 24-APR-78 PAGE 8\r
+MTPSER MAC     24-APR-78 01:34         L. HANTMAN 8-9-65\r
+\r
+\r
+\r
+                       040000  XNC=40000               ;TRANSFER NEW COMMAND\r
+                       000002  MTDC=2                  ;MAG TAPE DATA CONTROL DEVICE NO.\r
+                       000001  TCF=1                   ;TAPE CONTROL FREE\r
+                       000004  ERF=4                   ;END OF RECORD FLAG\r
+                       000020  LPE=20                  ;LONG. PARITY ERROR\r
+                       000010  CPE=10                  ;CHAR. PARITY ERROR\r
+                       000100  DCB=100                 ;DATA CHANNEL NUMBER\r
+                       000001  DCN=1                   ;DATA CHANNEL NUMBER\r
+                       000002  SEL=2                   ;UNIT TO COMMAND BUFFER\r
+                       004000  IOSEOF=4000             ;SPACING ONE RECORD FORWARD FOUND EOF\r
+                       002000  IOTEND=2000             ;EOT INDICATION\r
+                       000100  IONRCK=100              ;DO NOT RE-TRY ON ERRORS\r
+                       004000  IOBOT=4000              ;TAPE AT LOAD POINT\r
+                       010000  IODT=10000              ;A 1 FOR A DATA TRANFER TYPE COMMAND\r
+                               EXTERNAL UXIT, ADVBFF, ADVBFE, DCREQ, DCWAIT, MTCSAV\r
+                               EXTERNAL MTCRET, DCAVAL, MTAVAL, MTCCHN, MTCCHL, MTREQ\r
+                               EXTERNAL MTWAIT,OUT,SETIOD,CLOCK,CUXIT1\r
+                               EXTERNAL WSYNC,USRREL,WAIT1,ADRERR,PUNIT,PIOMOD,PJOBN\r
+                               EXTERNAL JBTADR\r
+                               ENTRY MTDISP\r
+                               INTERNAL MTCINT,MTAPE1,MTCINI\r
+                               ;CLOCK INTERRUPT, UNIT IN TAC\r
+       000403' 550301  000425' MTCLOK:   HRRZ DEVDAT, MTSTAK(TAC)      ;DVDB\r
+       000404' 241040  000004            ROT TAC, 4                    ;PUT UNIT IN SEL BITS\r
+       000405' 722201  000200            CONO 220, 200(TAC)    ;UNIT ONLY\r
+       000406' 722600  000002            CONO 224, SEL                 ;SEL UNIT\r
+       000407' 722700  000002            CONSZ 224, SEL                ;UNIT NOT READY?\r
+       000410' 254000  000420'           JRST MTCLK2                   ;UNIT READY\r
+       000411' 241040  777774            ROT TAC, -4                   ;FOR INDEXING PURPOSES\r
+       000412' 544101  000425'           HLR TAC1, MTSTAK(TAC)         ;CLOCK REQUEST\r
+       000413' 505100  000403'           HRLI TAC1, MTCLOK             ;GET CLOCK REQUEST\r
+       000414' 700600  000400            CONO PI, 400                  ;TURN OFF PI\r
+       000415' 136100  000103*           IDPB TAC1, CLOCK              ;STORE CLOCK REQUESTED\r
+       000416' 700600  000200            CONO PI, 200                  ;TURN ON PI\r
+       000417' 263140  000000            POPJ PDP, 0                   ;EXIT\r
+       000420' 200006  000002  MTCLK2:   MOVE IOS, DEVIOS(DEVDAT)\r
+       000421' 623000  000001            TLZE IOS,IOW\r
+       000422' 260140  000303*           PUSHJ PDP, SETIOD\r
+       000423' 202006  000002            MOVEM IOS, DEVIOS(DEVDAT)\r
+       000424' 263140  000000            POPJ PDP, 0\r
+       000425'                 MTSTAK:   BLOCK ^D8\r
+\r
+\fMTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES      MACRO 10 05:51 24-APR-78 PAGE 9\r
+MTPSER MAC     24-APR-78 01:34         L. HANTMAN 8-9-65\r
+\r
+\r
+\r
+                               ;LOGICAL END OF TAPE LOOP\r
+       000435' 722700  004000  MTLEOT:   CONSZ 224, 4000               ;TAPE NOT AT LOAD POINT?\r
+       000436' 254000  000441'           JRST MTEOT2                   ;AVOID BACKSPACE IFAT LOAD P\r
+       000437' 201200  003400            MOVEI T,3400          ;BACKSPACE\r
+       000440' 260140  000022'           PUSHJ PDP, MTGO1-1\r
+       000441' 201200  000016  MTEOT2:   MOVEI T,16            ;SPACE ONE FILE\r
+       000442' 260140  000006'           PUSHJ PDP, MTAPE\r
+       000443' 201200  000006            MOVEI T,6 ;SPACE ONE RECORD\r
+       000444' 260140  000006'           PUSHJ PDP, MTAPE\r
+       000445' 260140  000006*           PUSHJ PDP, WAIT1              ;WAIT UNTIL SPACING IS COMPLE\r
+       000446' 200006  000002            MOVE IOS, DEVIOS(DEVDAT)\r
+       000447' 607000  004000            TLNN IOS, IOSEOF              ;WAS EOF DETECTED?\r
+       000450' 254000  000441'           JRST MTEOT2                   ;RESUME SPACING\r
+       000451' 201200  000007            MOVEI T,7 ;BACKSPACE, LOGICAL EOF FOUND\r
+       000452' 254000  000006'           JRST MTAPE                    ;RETURN BACK TO MAIN PROGRAM\r
+       000453' 000000  000012  MTREDO:   12        ;NUMBER OF TIMES TO RE-EXECUTE\r
+\r
+\fMTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES      MACRO 10 05:51 24-APR-78 PAGE 10\r
+MTPSER MAC     24-APR-78 01:34         L. HANTMAN 8-9-65\r
+\r
+\r
+\r
+                               ;DEVICE DEPENDENT DUMP MODES. MODE 16.\r
+                               ;OUTPUT\r
+       000454' 661000  000020  MTDMPO:   TLO IOS, IO                   ;WRITING\r
+       000455' 550200  000014            HRRZ T,UUO\r
+       000456' 260140  000056'           PUSHJ PDP, MTCHEK             ;IS SYSTEM AVAILABLE?\r
+       000457' 200120  000130'           MOVE TAC1, @MTOUT2    ;BLK0 AND DATA CONTROL COMMAN\r
+       000460' 200040  000004            MOVE TAC,T                    ;COMMAND LIST POINTER\r
+       000461' 201200  001000            MOVEI T,1000          ;WRITING COMMAND\r
+       000462' 505040  000007  MTDMP1:   HRLI TAC, PROG                ;ACTUAL ADDRESS OF COMMAND LI\r
+       000463' 202040  000530'           MOVEM TAC, MTCMDP#    ;COMMAND POINTER\r
+       000464' 336060  000001            SKIPN TAC,@TAC                ;COMMAND WORD\r
+       000465' 254000  000515'           JRST MTDMP3                   ;NOTHING TO DO\r
+       000466' 325040  000462'           JUMPGE TAC, MTDMP1    ;CHANGE COMMAND SEQUENCE\r
+       000467' 576040  000535'           HLREM TAC, SVCNTR#    ;SAVE COUNTER\r
+       000470' 553000  000001            HRRZS TAC                     ;GET ADDRESS ALONE\r
+       000471' 274040  000535'           SUB TAC, SVCNTR               ;GET LAST ADDRESS\r
+       000472' 313040  000000*           CAMLE TAC, USRREL             ;LESS THAN END?\r
+       000473' 254000  000513'           JRST MTDMP2                   ;OUT OF BOUNDS\r
+       000474' 200060  000530'           MOVE TAC, @MTCMDP             ;PICK UP POINTER AGAIN\r
+       000475' 270040  000007            ADD TAC, PROG                 ;GET ACTUAL ADDRESS\r
+       000476' 260140  000132'           PUSHJ PDP, MTINDC             ;MOVE TAPE\r
+       000477' 260140  000445*           PUSHJ PDP,WAIT1\r
+       000500' 350200  000530'           AOS T,MTCMDP          ;UPDATE COMMAND POINTER\r
+       000501' 607000  000020            TLNN IOS, IO                  ;WRITING?\r
+       000502' 254000  000506'           JRST MTDMPI+2                 ;READING\r
+       000503' 254000  000456'           JRST MTDMPO+2                 ;WRITING\r
+                               ;INPUT\r
+       000504' 621000  000020  MTDMPI:   TLZ IOS, IO                   ;READING\r
+       000505' 550200  000014            HRRZ T,UUO\r
+       000506' 260140  000056'           PUSHJ PDP, MTCHEK             ;IS SYSTEM AVAILABLE\r
+       000507' 200120  000054'           MOVE TAC1,@MTIN2              ;BLKI AND DATA CONTROL COMMAN\r
+       000510' 200040  000004            MOVE TAC,T                    ;COMMAND LIST POINTER\r
+       000511' 201200  002400            MOVEI T,2400          ;READ COMMAND\r
+       000512' 254000  000462'           JRST MTDMP1                   ;DUMP\r
+                               ;ADDRESS ERROR\r
+\r
+       000513' 260140  000515' MTDMP2:   PUSHJ PDP,MTDMP3\r
+       000514' 254000  000000*           JRST ADRERR\r
+                               ;CLEAR ALL USE BITS. NOTHING IN COMMAND LIST\r
+\r
+       000515' 371000  000247* MTDMP3:   SOSL DCREQ\r
+       000516' 476000  000250*           SETOM DCAVAL\r
+       000517' 371000  000251* MTDMP4:   SOSL MTREQ\r
+       000520' 476000  000252*           SETOM MTAVAL\r
+       000521' 620000  010000            TRZ IOS,IOACT\r
+       000522' 623000  000001            TLZE IOS,IOW\r
+       000523' 260140  000422*           PUSHJ PDP,SETIOD\r
+       000524' 202006  000002            MOVEM IOS,DEVIOS(DEVDAT)\r
+       000525' 263140  000000            POPJ PDP,\r
+\r
+                                         END,\r
+\r
+\fMTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES      MACRO 10 05:51 24-APR-78 PAGE 10-2\r
+MTPSER MAC     24-APR-78 01:34         L. HANTMAN 8-9-65\r
+\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 000547\r
+\r
+9K CORE USED\r
+\r
+\fMTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES      MACRO 10 05:51 24-APR-78 PAGE 11\r
+MTPSER MAC     24-APR-78 01:34         SYMBOL TABLE\r
+\r
+A              000000  INT\r
+AC1            000015  INT\r
+AC2            000016  INT\r
+AC3            000017  INT\r
+ADRERR         000514' EXT\r
+ADVBFE         000273' EXT\r
+ADVBFF         000243' EXT\r
+AL             000001  INT\r
+ASSCON         400000  INT\r
+ASSPRG         200000  INT\r
+B              000014  INT\r
+BUFPNT         000012  INT\r
+BUFWRD         000013  INT\r
+CLOCK          000415' EXT\r
+CLOSB          002000  INT\r
+CLSIN          000002  INT\r
+CLSOUT         000001  INT\r
+CPE            000010  \r
+CUXIT1         000173' EXT\r
+D              000017  INT\r
+DAT            000005  INT\r
+DC             000200  SPD\r
+DCAVAL         000516' EXT\r
+DCB            000100  \r
+DCL            000001  INT\r
+DCN            000001  \r
+DCREQ          000515' EXT\r
+DCW            020000  INT\r
+DCWAIT         000062' EXT\r
+DCWRD          000526' \r
+DDI            000007  INT\r
+DDO            000006  INT\r
+DDTMEM         000037  INT\r
+DDTSYM         000036  INT\r
+DEN            000004  INT\r
+DEVADR         000007  INT\r
+DEVBUF         000006  INT\r
+DEVCHR         000001  INT\r
+DEVCTR         000011  INT\r
+DEVDAT         000006  INT\r
+DEVIAD         000007  INT\r
+DEVIOS         000002  INT\r
+DEVLOG         000005  INT\r
+DEVMOD         000004  INT\r
+DEVNAM         000000  INT\r
+DEVOAD         000010  INT\r
+DEVPTR         000010  INT\r
+DEVSER         000003  INT\r
+DGF            000012  INT\r
+DIN            000003  INT\r
+DLK            000005  INT\r
+DOU            000002  INT\r
+\r
+\r
+\fMTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES      MACRO 10 05:51 24-APR-78 PAGE 11-1\r
+MTPSER MAC     24-APR-78 01:34         SYMBOL TABLE\r
+\r
+DR             000016  INT\r
+DRL            000000  INT\r
+DSI            000011  INT\r
+DSO            000010  INT\r
+DTW            040000  INT\r
+DVAVAL         000040  INT\r
+DVCDR          100000  INT\r
+DVDIR          000004  INT\r
+DVDIRI         400000  INT\r
+DVIN           000002  INT\r
+DVLPT          040000  INT\r
+DVMTA          000020  INT\r
+DVOUT          000001  INT\r
+DVTTY          000010  INT\r
+ENTRB          020000  INT\r
+ERF            000004  \r
+I              000010  INT\r
+IB             000013  INT\r
+IBUFB          200000  INT\r
+INITB          400000  INT\r
+INPB           010000  INT\r
+IO             000020  INT\r
+IOACT          010000  INT\r
+IOBEG          000002  INT\r
+IOBKTL         040000  INT\r
+IOBOT          004000  \r
+IOCON          000040  INT\r
+IODEND         020000  INT\r
+IODERR         200000  INT\r
+IODISC         400000  INT\r
+IODONE         400000  INT\r
+IODT           010000  \r
+IODTER         100000  INT\r
+IOEND          000040  INT\r
+IOFST          000004  INT\r
+IOIMPM         400000  INT\r
+IONRCK         000100  INT\r
+IORDEL         000100  INT\r
+IORET          000020  INT\r
+IOS            000000  INT\r
+IOSEOF         004000  \r
+IOSTRT         000010  INT\r
+IOTEND         002000  \r
+IOUSE          400000  INT\r
+IOW            000001  INT\r
+IOWC           000020  INT\r
+IOWS           400000  INT\r
+ITEM           000004  INT\r
+JBFADR         000000  INT\r
+JBFCTR         000002  INT\r
+JBFPTR         000001  INT\r
+JBTADR         000216' EXT\r
+JBUF           000005  INT\r
+\r
+\fMTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES      MACRO 10 05:51 24-APR-78 PAGE 11-2\r
+MTPSER MAC     24-APR-78 01:34         SYMBOL TABLE\r
+\r
+JDAT           000011  INT\r
+JERR           002000  INT\r
+JIOW           100000  INT\r
+JNA            004000  INT\r
+LOOKB          040000  INT\r
+LPE            000020  \r
+MDCSAV         000527' \r
+MTAPE          000006' \r
+MTAPE1         000000' INT\r
+MTAVAL         000520' EXT\r
+MTBSP          000355' \r
+MTCCHL         000000  EXT\r
+MTCCHN         000032' EXT\r
+MTCHEK         000056' \r
+MTCHK1         000061' \r
+MTCHK2         000063' \r
+MTCHK3         000113' \r
+MTCINI         000201' INT\r
+MTCINT         000211' INT\r
+MTCLK2         000420' \r
+MTCLOK         000403' \r
+MTCLS          000150' \r
+MTCLS1         000157' \r
+MTCMDP         000530' \r
+MTCON          000275' \r
+MTCONO         000044' \r
+MTCRET         000400' EXT\r
+MTCSAV         000213' EXT\r
+MTDC           000002  \r
+MTDCCN         000531' \r
+MTDCND         000206' \r
+MTDEV          000532' \r
+MTDISP         000166' ENT\r
+MTDMP1         000462' \r
+MTDMP2         000513' \r
+MTDMP3         000515' \r
+MTDMP4         000517' \r
+MTDMPI         000504' \r
+MTDMPO         000454' \r
+MTEND1         000246' \r
+MTEOF          000321' \r
+MTEOFF         000533' \r
+MTEOR          000323' \r
+MTEOT2         000441' \r
+MTERCN         000534' \r
+MTERR          000335' \r
+MTERR2         000353' \r
+MTGO           000033' \r
+MTGO1          000023' \r
+MTGO1A         000025' \r
+MTIDSP         000222' \r
+MTIGN          000327' \r
+MTIGN2         000401' \r
+\r
+\fMTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES      MACRO 10 05:51 24-APR-78 PAGE 11-3\r
+MTPSER MAC     24-APR-78 01:34         SYMBOL TABLE\r
+\r
+MTIN           000046' \r
+MTIN1          000051' \r
+MTIN2          000054' \r
+MTINDC         000132' \r
+MTINDN         000235' \r
+MTLEOT         000435' \r
+MTNIO          000251' \r
+MTNIO2         000312' \r
+MTNOTI         000273' \r
+MTOUT          000120' \r
+MTOUT1         000124' \r
+MTOUT2         000130' \r
+MTOUTE         000145' \r
+MTPDUN         000225' \r
+MTREDO         000453' \r
+MTREQ          000517' EXT\r
+MTSTAK         000425' \r
+MTW            010000  INT\r
+MTWAIT         000066' EXT\r
+OBUFB          100000  INT\r
+OUT            000157' EXT\r
+OUTPB          004000  INT\r
+PDP            000003  INT\r
+PI             000004  SPD\r
+PICHN          000100  INT\r
+PIOMOD         000227' EXT\r
+PJOBN          000215' EXT\r
+PROG           000007  INT\r
+PUNIT          000025' EXT\r
+RUN            200000  INT\r
+RUNABL         204000  INT\r
+SEL            000002  \r
+SETIOD         000523' EXT\r
+SVCNTR         000535' \r
+T              000004  \r
+TAC            000001  INT\r
+TAC1           000002  INT\r
+TCF            000001  \r
+TEM            000010  INT\r
+TTYATC         020000  INT\r
+TTYUSE         010000  INT\r
+USRMOD         010000  INT\r
+USRREL         000472' EXT\r
+UUO            000014  INT\r
+UXIT           000200' EXT\r
+WAIT1          000477' EXT\r
+WSYNC          000113' EXT\r
+XNC            040000  \r
+\f   OOOOOOOOO         NNN         NNN         CCCCCCCCCCCC      EEEEEEEEEEEEEEE                                          \r
+   OOOOOOOOO         NNN         NNN         CCCCCCCCCCCC      EEEEEEEEEEEEEEE                                          \r
+   OOOOOOOOO         NNN         NNN         CCCCCCCCCCCC      EEEEEEEEEEEEEEE                                          \r
+OOO         OOO      NNN         NNN      CCC                  EEE                                                      \r
+OOO         OOO      NNN         NNN      CCC                  EEE                                                      \r
+OOO         OOO      NNN         NNN      CCC                  EEE                                                      \r
+OOO         OOO      NNNNNN      NNN      CCC                  EEE                                                      \r
+OOO         OOO      NNNNNN      NNN      CCC                  EEE                                                      \r
+OOO         OOO      NNNNNN      NNN      CCC                  EEE                                                      \r
+OOO         OOO      NNN   NNN   NNN      CCC                  EEEEEEEEEEEE                                             \r
+OOO         OOO      NNN   NNN   NNN      CCC                  EEEEEEEEEEEE                                             \r
+OOO         OOO      NNN   NNN   NNN      CCC                  EEEEEEEEEEEE                                             \r
+OOO         OOO      NNN      NNNNNN      CCC                  EEE                                                      \r
+OOO         OOO      NNN      NNNNNN      CCC                  EEE                                                      \r
+OOO         OOO      NNN      NNNNNN      CCC                  EEE                                                      \r
+OOO         OOO      NNN         NNN      CCC                  EEE                                                      \r
+OOO         OOO      NNN         NNN      CCC                  EEE                                                      \r
+OOO         OOO      NNN         NNN      CCC                  EEE                                                      \r
+   OOOOOOOOO         NNN         NNN         CCCCCCCCCCCC      EEEEEEEEEEEEEEE                                          \r
+   OOOOOOOOO         NNN         NNN         CCCCCCCCCCCC      EEEEEEEEEEEEEEE                                          \r
+   OOOOOOOOO         NNN         NNN         CCCCCCCCCCCC      EEEEEEEEEEEEEEE                                          \r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  05:53:58\r
+File: DSKB0 :ONCE  .LST   [8,296] Created: 20-April-1967 05:51:00 Printed: 24-April-1978 05:53:36\r
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:1704 \r
+File will be deleted after printing\r
+\f\r
+ONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE   MACRO 10 05:51 24-APR-78 PAGE 1\r
+S      MAC     24-APR-78 21:40         THIS IS ONLY CODE PLACED AT THE END OF IOINIT\r
+\r
+                                       XLIST\r
+                                      LIST\r
+                                         TITLE ONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE\r
+                                         SUBTTL THIS IS ONLY CODE PLACED AT THE END OF IOINIT\r
+                               ;WHICH SHOULD BE THE LAST LOADED PROGRAM BEFORE SYSMAK AND DDT\r
+                               ;THUS IF IT OVERFLOWS INTO THE USER AREA NO HARM IS DONE\r
+                               ;INITIALIZE PRIORITY CHANNELS AND SETUP INTERRUPT SERVICE ROUTINE CHA\r
+                                       XP SYSFIN,.-1\r
+                       000000  XP SYSFIN,,^SYSFIN=\r
+       000000' 777777  777777' ^.-1            ;LAST LOC. IN SYSTEM\r
+                       010000  NXM=10000 ;NON EX-MEM\r
+\r
+                               INTERNAL PATCH\r
+\r
+       000001'                 PATCH:    BLOCK 100 ;PATCH SPACE\r
+                                                   ;C(SYSSIZE) SHOULD BE UPDATED AS PATCHES ARE MADE\r
+\r
+                       000001  T=TAC     ;SOME ACS\r
+                       000002  C=TAC1\r
+                       000005  INT=DAT   ;INTERRUPT SERVICE ENTRY POINT(USUALLY A CONSO INSTR.)\r
+                       000006  CHL=DEVDAT          ;THE PLACE WHERE PC IS STORED FOR THAT CHANNEL\r
+\r
+                               ;LINK TO SERVICE ROUTINES\r
+\r
+                               INTERNAL LINKSR\r
+                               EXTERNAL NDEVM1     ;=NDOV-1 (DEFINED IN IOINI1)\r
+                               EXTERNAL DEVINT,JOBSYM\r
+\r
+       000101' 000000  000000  LINKSR:   0                     ;CALLED WITH JSR FROM SYSINI\r
+                                                               ;CHAIN INTERUPT SERVICE ROUTINES TOGETH\r
+       000102' 515240  254000            HRLZI INT, 254000     ;FORM JRST INSTR.\r
+       000103' 201100  000000*           MOVEI C, NDEVM1       ;NO. OV DEV. SERV. ROUTINES TO CHAIN\r
+       000104' 554302  000000* DEV1:     HLRZ CHL, DEVINT(C)   ;LOC. WHERE PC IS STORED\r
+       000105' 540242  000104*           HRR INT, DEVINT(C)    ;INTERRUPT SERVICE ROUTINE ENTRY POINT\r
+       000106' 200046  000001            MOVE T, 1(CHL)        ;INSERT THIS ROUTINE AT FRONT OF CHAIN\r
+       000107' 202045  000001            MOVEM T, 1(INT)\r
+       000110' 202246  000001            MOVEM INT, 1(CHL)\r
+       000111' 365100  000104'           SOJGE C, DEV1\r
+\r
+\fONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE  MACRO 10 05:51 24-APR-78 PAGE 2\r
+ONCE   MAC     24-APR-78 00:18         THIS IS ONLY CODE PLACED AT THE END OF IOINIT\r
+\r
+\r
+\r
+                               ;MOVE SYMBOL TABLE UP IN MEMORY\r
+                               ;EXEC MUST BE LOADED IN 15K OR LESS IF GOING INTO 16K MACHINE\r
+\r
+       000112' 402000  000005            SETZM DAT             ;FIND FIRST NON EX MEM\r
+       000113' 700200  010000            CONO APR,NXM          ;CLEAR NON-EX MEM FLAG\r
+       000114' 271240  002000            ADDI DAT,2000         ;TRY NEXT 1K BLOCK\r
+       000115' 200105  000000            MOVE TAC1,(DAT)       ;REFERENCE THIS LOCATION\r
+       000116' 700340  010000            CONSO APR,NXM         ;NON-EXISTENT?\r
+       000117' 254000  000114'           JRST .-3              ;NO\r
+       000120' 275240  000001            SUBI DAT,1            ;YES, HIGHEST LEGAL LOC\r
+       000121' 202240  000037            MOVEM DAT,DDTMEM      ;FOR DDT\r
+       000122' 275240  000177            SUBI DAT,200-1        ;MAKE ROOM FOR DECDUMP\r
+       000123' 574100  000000*           HLRE TAC1,JOBSYM      ;-LENGTH OF S. T.\r
+       000124' 322100  000143'           JUMPE TAC1,JRSTI1     ;0 IF NON S. T. TO MOVE UP\r
+       000125' 213000  000002            MOVNS TAC1            ;+LENGTH\r
+       000126' 550040  000123*           HRRZ TAC,JOBSYM       ;FIRST ADDRESS\r
+                                                       ADDI    TAC,(TAC1)\r
+       000127' 504040  000002            HRL TAC,TAC1          ;XWD LENGTH,LENGTH+FIRST ADDRESS\r
+       000130' 275241  000001            SUBI DAT,1(TAC)       ;NEW LAST+1-OLD LAST+1\r
+       000131' 542240  000140'           HRRM DAT,STO1         ;DIST. TO MOVE\r
+       000132' 200100  000126*           MOVE TAC1,JOBSYM      ;-N,FIRST ADD.\r
+       000133' 271045  000001            ADDI TAC,1(DAT)       ;FORM NEW S.T. POINTER\r
+       000134' 202100  000132*           MOVEM TAC1,JOBSYM\r
+       000135' 201100  000134*           MOVEI TAC1,JOBSYM\r
+       000136' 202100  000036            MOVEM TAC1,DDTSYM\r
+       000137' 200101  777777            MOVE TAC1,-1(TAC)\r
+       000140' 202101  000140' STO1:     MOVEM TAC1,.(TAC)\r
+       000141' 274040  000551'           SUB TAC,[XWD 1,1]\r
+       000142' 325040  000137'           JUMPGE TAC,.-3\r
+\r
+\fONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE  MACRO 10 05:51 24-APR-78 PAGE 3\r
+ONCE   MAC     24-APR-78 00:18         THIS IS ONLY CODE PLACED AT THE END OF IOINIT\r
+\r
+\r
+\r
+                               ;SETUP LOCATIONS 40 THRU 57\r
+\r
+       000143' 200040  000552' JRSTI1:   MOVE TAC,[XWD LOC40,40]\r
+       000144' 251040  000057            BLT TAC,57\r
+       000145' 200040  000147'           MOVE TAC,JRSTI\r
+       000146' 202040  000102'           MOVEM TAC,LINKSR+1    ;DO ONCE ONLY\r
+       000147' 254020  000101' JRSTI:    JRST @LINKSR\r
+\r
+                               EXTERN UUO0,ERROR\r
+                               EXTERN CH1,CH2,CH3,CH4,CH5,CH6,CH7\r
+\r
+       000150' 000000  000000  LOC40:    0             ;UUO PC\r
+       000151' 264000  000000*           JSR UUO0      ;TO UUO HANDLER\r
+       000152' 264000  000000*           JSR CH1\r
+       000153' 265240  000000*           JSP DAT,ERROR\r
+       000154' 264000  000000*           JSR CH2\r
+       000155' 265240  000153*           JSP DAT,ERROR\r
+       000156' 264000  000000*           JSR CH3\r
+       000157' 265240  000155*           JSP DAT,ERROR\r
+       000160' 264000  000000*           JSR CH4\r
+       000161' 265240  000157*           JSP DAT,ERROR\r
+       000162' 264000  000000*           JSR CH5\r
+       000163' 265240  000161*           JSP DAT,ERROR\r
+       000164' 264000  000000*           JSR CH6\r
+       000165' 265240  000163*           JSP DAT,ERROR\r
+       000166' 264000  000000*           JSR CH7\r
+       000167' 265240  000165*           JSP DAT,ERROR\r
+\r
+\fONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE  MACRO 10 05:51 24-APR-78 PAGE 4\r
+ONCE   MAC     24-APR-78 00:18         THIS IS ONLY CODE PLACED AT THE END OF IOINIT\r
+\r
+\r
+\r
+\r
+                               ;ONCE ONLY CODE - OPERATOR SETUP DIALOGUE\r
+\r
+                               INTERNAL ONCE\r
+                               EXTERNAL CONMES,RADX10,CRLF,DECIN,DECIN1\r
+                               EXTERNAL THSDAT,MAKEND,JOBFF\r
+                               EXTERNAL ERNAM,OCTPNT,SYSSIZ,CONFIG,SYSNUM,SYSDAT\r
+\r
+       000170' 000000  000000  ONCE:     0\r
+       000171' 201040  000000            MOVEI TAC,SYSFIN      ;SET SIZE OF MONITOR\r
+       000172' 202040  000000*           MOVEM TAC,SYSSIZ\r
+       000173' 200240  000443'           MOVE DAT,LINEP        ;SETUP LINE BYTE POINTER\r
+       000174' 200140  000553'           MOVE PDP,[XWD ONCEPN,ONCEPD]\r
+       000175' 260140  000000*           PUSHJ PDP,CRLF\r
+       000176' 201040  000000*           MOVEI TAC,CONFIG\r
+       000177' 260140  000000*           PUSHJ PDP,CONMES\r
+       000200' 201040  000474'           MOVEI TAC,TSEXEC\r
+       000201' 260140  000177*           PUSHJ PDP,CONMES\r
+       000202' 554040  000000*           HLRZ TAC,SYSNUM\r
+       000203' 260140  000000*           PUSHJ PDP,RADX10\r
+       000204' 201040  000554'           MOVEI TAC,[ASCIZ /./]\r
+       000205' 260140  000201*           PUSHJ PDP,CONMES\r
+       000206' 550040  000202*           HRRZ TAC,SYSNUM\r
+       000207' 260140  000203*           PUSHJ PDP,RADX10\r
+       000210' 201040  000555'           MOVEI TAC,[ASCIZ / /]\r
+       000211' 260140  000205*           PUSHJ PDP,CONMES\r
+       000212' 201040  000000*           MOVEI TAC,SYSDAT\r
+       000213' 260140  000211*           PUSHJ PDP,CONMES\r
+       000214' 260140  000175*           PUSHJ PDP,CRLF\r
+       000215' 260140  000421'           PUSHJ PDP,OPOUT\r
+\r
+\fONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE  MACRO 10 05:51 24-APR-78 PAGE 5\r
+ONCE   MAC     24-APR-78 00:18         THIS IS ONLY CODE PLACED AT THE END OF IOINIT\r
+\r
+\r
+\r
+                               ;ASK FOR TODAYS DATE AND CONVERT\r
+                               ;DATE STORED AS ((Y-64)*12.+M-1)*31.+D-1\r
+\r
+       000216' 402000  000000* DATLOP:   SETZM THSDAT\r
+       000217' 200240  000443'           MOVE DAT,LINEP\r
+       000220' 201040  000477'           MOVEI TAC,TODATE\r
+       000221' 260140  000213*           PUSHJ PDP,CONMES\r
+       000222' 260140  000421'           PUSHJ PDP,OPOUT\r
+       000223' 260140  000376'           PUSHJ PDP,GETLIN\r
+       000224' 254000  000216'           JRST DATLOP           ;JUST CR\r
+       000225' 260140  000000*           PUSHJ PDP,DECIN1      ;MONTH\r
+       000226' 254000  000216'           JRST DATLOP           ;ERROR\r
+       000227' 332000  000002            SKIPE TAC1\r
+       000230' 303100  000014            CAILE TAC1,^D12\r
+       000231' 254000  000216'           JRST DATLOP\r
+       000232' 275100  000001            SUBI TAC1,1\r
+       000233' 221100  000037            IMULI TAC1,^D31\r
+       000234' 272100  000216*           ADDM TAC1,THSDAT\r
+       000235' 260140  000225*           PUSHJ PDP,DECIN1      ;DAY\r
+       000236' 254000  000216'           JRST DATLOP\r
+       000237' 332000  000002            SKIPE TAC1\r
+       000240' 303040  000037            CAILE TAC,^D31\r
+       000241' 254000  000216'           JRST DATLOP\r
+       000242' 275100  000001            SUBI TAC1,1\r
+       000243' 272100  000234*           ADDM TAC1,THSDAT\r
+       000244' 260140  000235*           PUSHJ PDP,DECIN1      ;YEAR\r
+       000245' 254000  000216'           JRST DATLOP\r
+       000246' 301100  000101            CAIL TAC1,^D65\r
+       000247' 303100  000143            CAILE TAC1,^D99\r
+       000250' 254000  000216'           JRST DATLOP\r
+       000251' 275100  000100            SUBI TAC1,^D64        ;YEAR ZERO\r
+       000252' 221100  000564            IMULI TAC1,^D12*^D31\r
+       000253' 272100  000243*           ADDM TAC1,THSDAT\r
+\r
+\fONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE  MACRO 10 05:51 24-APR-78 PAGE 6\r
+ONCE   MAC     24-APR-78 00:18         THIS IS ONLY CODE PLACED AT THE END OF IOINIT\r
+\r
+\r
+\r
+                               ;GET TIME OF DAY\r
+\r
+                               EXTERN TIME\r
+\r
+       000254' 402000  000000* TIMLOP:   SETZM TIME\r
+       000255' 200240  000443'           MOVE DAT,LINEP\r
+       000256' 201040  000506'           MOVEI TAC,TIMEM\r
+       000257' 260140  000221*           PUSHJ PDP,CONMES\r
+       000260' 260140  000421'           PUSHJ PDP,OPOUT\r
+       000261' 260140  000376'           PUSHJ PDP,GETLIN\r
+       000262' 254000  000254'           JRST TIMLOP           ;JUST A CR\r
+       000263' 134100  000001            ILDB TAC1,TAC\r
+       000264' 275100  000060            SUBI TAC1,60\r
+       000265' 331000  000002            SKIPL TAC1            ;CHECK FIRST DIGIT OF HOUR\r
+       000266' 303100  000002            CAILE TAC1,2\r
+       000267' 254000  000254'           JRST TIMLOP\r
+       000270' 220100  000556'           IMUL TAC1,[^D60*^D60*^D60*^D10]\r
+       000271' 272100  000254*           ADDM TAC1,TIME\r
+       000272' 134100  000001            ILDB TAC1,TAC\r
+       000273' 275100  000060            SUBI TAC1,60          ;CONVERT TO BINARY\r
+       000274' 331000  000002            SKIPL TAC1\r
+       000275' 303100  000011            CAILE TAC1,^D9\r
+       000276' 254000  000254'           JRST TIMLOP\r
+       000277' 221100  645700            IMULI TAC1,^D60*^D60*^D60\r
+       000300' 272100  000271*           ADDM TAC1,TIME\r
+       000301' 260140  000244*           PUSHJ PDP,DECIN1\r
+       000302' 254000  000254'           JRST TIMLOP\r
+       000303' 303100  000073            CAILE TAC1,^D59\r
+       000304' 254000  000254'           JRST TIMLOP\r
+       000305' 221100  007020            IMULI TAC1,^D60*^D60\r
+       000306' 272100  000300*           ADDM TAC1,TIME\r
+\r
+\fONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE  MACRO 10 05:51 24-APR-78 PAGE 7\r
+ONCE   MAC     24-APR-78 00:18         THIS IS ONLY CODE PLACED AT THE END OF IOINIT\r
+\r
+\r
+\r
+                               ;PRINT IO CONFIGURATION\r
+\r
+                               EXTERN DEVLST\r
+\r
+       000307' 200240  000443'            MOVE DAT,LINEP\r
+       000310' 201040  000517'            MOVEI TAC,IOCONF\r
+       000311' 260140  000257*            PUSHJ PDP,CONMES\r
+       000312' 554300  000000*            HLRZ DEVDAT,DEVLST\r
+       000313' 201040  000004             MOVEI TAC,ITEM\r
+       000314' 261140  000001             PUSH PDP,TAC\r
+       000315' 201040  000001  ONCE5:     MOVEI TAC,1\r
+       000316' 510206  000000             HLLZ ITEM,DEVNAM(DEVDAT)\r
+       000317' 554306  000003  ONCE4:     HLRZ DEVDAT,DEVSER(DEVDAT)\r
+       000320' 322300  000324'            JUMPE DEVDAT,ONCE6\r
+       000321' 510106  000000             HLLZ TAC1,DEVNAM(DEVDAT)\r
+       000322' 316100  000004             CAMN TAC1,ITEM\r
+       000323' 344040  000317'            AOJA TAC,ONCE4\r
+       000324' 200340  000001  ONCE6:     MOVE PROG,TAC        ;SAVE NO.\r
+       000325' 260140  000207*            PUSHJ PDP,RADX10\r
+       000326' 201600  000040             MOVEI UUO," "\r
+       000327' 136600  000005             IDPB UUO,DAT\r
+       000330' 201600  000003             MOVEI UUO,3\r
+       000331' 200440  000557'            MOVE JDAT,[POINT 6,ITEM]\r
+       000332' 134100  000011  ONCE7:     ILDB TAC1,JDAT\r
+       000333' 271100  000240             ADDI TAC1,240\r
+       000334' 136100  000005             IDPB TAC1,DAT\r
+       000335' 367600  000332'            SOJG UUO,ONCE7\r
+       000336' 201040  000560'            MOVEI TAC,[ASCIZ /'S/]\r
+       000337' 303340  000001             CAILE PROG,1\r
+       000340' 260140  000311*            PUSHJ PDP,CONMES\r
+       000341' 260140  000214*            PUSHJ PDP,CRLF\r
+       000342' 326300  000315'            JUMPN DEVDAT,ONCE5\r
+       000343' 262140  000002             POP PDP,TAC1\r
+       000344' 260140  000421'            PUSHJ PDP,OPOUT\r
+\r
+\fONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE  MACRO 10 05:51 24-APR-78 PAGE 8\r
+ONCE   MAC     24-APR-78 00:18         THIS IS ONLY CODE PLACED AT THE END OF IOINIT\r
+\r
+\r
+\r
+                               ;ASK IF SYSMAK IS WANTED\r
+\r
+       000345' 200240  000443'           MOVE DAT,LINEP\r
+       000346' 201040  000524'           MOVEI TAC,SYSM\r
+       000347' 260140  000340*           PUSHJ PDP,CONMES\r
+       000350' 260140  000421'           PUSHJ PDP,OPOUT\r
+       000351' 260140  000376'           PUSHJ PDP,GETLIN\r
+       000352' 254000  000355'           JRST ONCE2            ;NO SYSMAK\r
+       000353' 201040  000000*           MOVEI TAC,MAKEND      ;YES\r
+       000354' 202040  000172*           MOVEM TAC,SYSSIZ\r
+\r
+                               ;IS EXEC DDT WANTED?\r
+\r
+       000355' 200240  000443' ONCE2:    MOVE DAT,LINEP\r
+       000356' 201040  000536'           MOVEI TAC,SYSDM\r
+       000357' 260140  000347*           PUSHJ PDP,CONMES\r
+       000360' 260140  000421'           PUSHJ PDP,OPOUT\r
+       000361' 260140  000376'           PUSHJ PDP,GETLIN\r
+       000362' 254000  000365'           JRST ONCE3            ;NO \r
+       000363' 201040  000000*           MOVEI TAC,JOBFF       ;FIRST FREE LOCATION\r
+       000364' 552040  000354*           HRRZM TAC,SYSSIZ\r
+\r
+\fONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE  MACRO 10 05:51 24-APR-78 PAGE 9\r
+ONCE   MAC     24-APR-78 00:18         THIS IS ONLY CODE PLACED AT THE END OF IOINIT\r
+\r
+\r
+\r
+                               ;PRINT OCTAL SIZE OF MONITOR\r
+\r
+       000365' 200240  000443' ONCE3:    MOVE DAT,LINEP\r
+       000366' 201040  000541'           MOVEI TAC,EXECIS\r
+       000367' 260140  000357*           PUSHJ PDP,CONMES\r
+       000370' 200040  000364*           MOVE TAC,SYSSIZ\r
+       000371' 260140  000000*           PUSHJ PDP,OCTPNT\r
+       000372' 201040  000544'           MOVEI TAC,LENGTH\r
+       000373' 260140  000367*           PUSHJ PDP,CONMES\r
+       000374' 260140  000421'           PUSHJ PDP,OPOUT\r
+       000375' 254020  000170'           JRST @ONCE\r
+\r
+\fONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE  MACRO 10 05:51 24-APR-78 PAGE 10\r
+ONCE   MAC     24-APR-78 00:18         THIS IS ONLY CODE PLACED AT THE END OF IOINIT\r
+\r
+\r
+\r
+                               ;ROUTINE TO READ A LINE FROM OPERATORS CONSOLE\r
+                               ;CALL:    PUSHJ PDP,GETLIN\r
+                               ;         JUST A CR TYPED IN\r
+                               ;         A LINE TYPED IN,TAC SET AS BYTE POINTER\r
+\r
+                               EXTERN CPOPJ, CPOPJ1\r
+\r
+       000376' 200040  000443' GETLIN:   MOVE TAC,LINEP\r
+       000377' 201200  000000            MOVEI ITEM,0\r
+       000400' 712340  000040  GET1:     CONSO TTY,40\r
+       000401' 254000  000400'           JRST .-1\r
+       000402' 712040  000002            DATAI TTY,TAC1\r
+       000403' 712140  000002            DATAO TTY,TAC1\r
+       000404' 136100  000001            IDPB TAC1,TAC\r
+       000405' 405100  000177            ANDI TAC1,177\r
+       000406' 306100  000177            CAIN TAC1,177         ;RUBOUT\r
+       000407' 254000  000000*           JRST CPOPJ\r
+       000410' 302100  000015            CAIE TAC1,15\r
+       000411' 344200  000400'           AOJA ITEM,GET1\r
+       000412' 712340  000020            CONSO TTY,20\r
+       000413' 254000  000412'           JRST .-1\r
+       000414' 201100  000012            MOVEI TAC1,12\r
+       000415' 712140  000002            DATAO TTY,TAC1\r
+       000416' 200040  000443'           MOVE TAC,LINEP\r
+       000417' 326200  000000*           JUMPN ITEM,CPOPJ1\r
+       000420' 263140  000000            POPJ PDP,\r
+\r
+\fONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE  MACRO 10 05:51 24-APR-78 PAGE 11\r
+ONCE   MAC     24-APR-78 00:18         THIS IS ONLY CODE PLACED AT THE END OF IOINIT\r
+\r
+\r
+\r
+                               ;ROUTINE TO TYPE A LINE ON OPERATORS CONSOLE\r
+                               ;ECHO CHECK STOPS LINE AND RETURNS\r
+                               ;CALL:    DAT SET TO END OF MESSAGE\r
+\r
+       000421' 200040  000443' OPOUT:    MOVE TAC,LINEP\r
+       000422' 712040  000002            DATAI TTY,TAC1\r
+       000423' 316040  000005  OPOUT1:   CAMN TAC,DAT\r
+       000424' 262140  000000            POP PDP,\r
+       000425' 712300  000040            CONSZ TTY,40\r
+       000426' 254000  000434'           JRST OPOUT2           ;ECHO CHECK\r
+       000427' 712300  000020            CONSZ TTY,20\r
+       000430' 254000  000427'           JRST .-1\r
+       000431' 134100  000001            ILDB TAC1,TAC\r
+       000432' 712140  000002            DATAO TTY,TAC1\r
+       000433' 254000  000423'           JRST OPOUT1\r
+       000434' 712300  000020  OPOUT2:   CONSZ TTY,20\r
+       000435' 254000  000434'           JRST .-1\r
+       000436' 712140  000561'           DATAO TTY,[15]\r
+       000437' 712300  000020            CONSZ TTY,20\r
+       000440' 254000  000437'           JRST .-1\r
+       000441' 712140  000562'           DATAO TTY,[12]\r
+       000442' 263140  000000            POPJ PDP,\r
+\r
+       000443' 440700  000444' LINEP:    POINT 7,LINBUF\r
+       000444'                 LINBUF:   BLOCK 20\r
+                       000010  ONCEPN=10\r
+       000464'                 ONCEPD:   BLOCK ONCEPN\r
+\r
+\fONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE  MACRO 10 05:51 24-APR-78 PAGE 12\r
+ONCE   MAC     24-APR-78 00:18         THIS IS ONLY CODE PLACED AT THE END OF IOINIT\r
+\r
+\r
+\r
+                               ;MESSAGES\r
+\r
+       000474' 202505  620246  TSEXEC:   ASCIZ / T. S. EXEC-/\r
+       000475' 271010  554212\r
+       000476' 415320  000000\r
+       000477'                 TODATE:   ASCIZ /\r
+       000477' 064252  454640  TYPE TODAY'S DATE AS ABOVE.\r
+       000500' 425012  447610\r
+       000501' 406624  751500\r
+       000502' 422032  442500\r
+       000503' 406464  040604\r
+       000504' 476550  527032\r
+       000505' 050000  000000  /\r
+       000506'                 TIMEM:    ASCIZ /\r
+       000506' 064252  454640  TYPE 4 DIGIT NAVY TIME(0953 IS 9:53 AM).\r
+       000507' 425006  420210\r
+       000510' 446171  152100\r
+       000511' 472032  654500\r
+       000512' 522231  542520\r
+       000513' 301626  531500\r
+       000514' 446464  034564\r
+       000515' 325464  040632\r
+       000516' 245341  505000  /\r
+       000517'                 IOCONF:   ASCIZ /\r
+       000517' 064251  147500  IO CONFIGURATION\r
+       000520' 416371  643222\r
+       000521' 436532  240650\r
+       000522' 446371  606424  /\r
+       000523' 000000  000000\r
+\r
+       000524'                 SYSM:     ASCIZ /\r
+       000524' 064250  447500  DO YOU WANT SYSMAK(TYPE Y IF YES,CR IF NO)?\r
+       000525' 546372  520256\r
+       000526' 406352  420246\r
+       000527' 546471  540626\r
+       000530' 242513  150212\r
+       000531' 202624  044614\r
+       000532' 202630  551530\r
+       000533' 416444  044614\r
+       000534' 202351  724576\r
+       000535' 064240  000000  /\r
+\r
+       000536'                 SYSDM:    ASCIZ /\r
+       000536' 064250  554212  EXEC DDT?\r
+       000537' 415010  442250\r
+       000540' 374321  200000  /\r
+       000541'                 EXECIS:   ASCIZ /\r
+       000541' 064250  554212  EXEC IS /\r
+       000542' 415011  151500\r
+       000543' 000000  000000\r
+       000544' 476072  440630  LENGTH:   ASCIZ /OCTAL LOCATIONS LONG.\r
+\r
+\fONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE  MACRO 10 05:51 24-APR-78 PAGE 12-1\r
+ONCE   MAC     24-APR-78 00:18         THIS IS ONLY CODE PLACED AT THE END OF IOINIT\r
+\r
+       000545' 202311  741602\r
+       000546' 522231  747246\r
+       000547' 202311  747216\r
+       000550' 270321  200000  /\r
+                                         END,\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 000563\r
+\r
+9K CORE USED\r
+\r
+\fONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE  MACRO 10 05:51 24-APR-78 PAGE 13\r
+ONCE   MAC     24-APR-78 00:18         SYMBOL TABLE\r
+\r
+A              000000  INT\r
+AC1            000015  INT\r
+AC2            000016  INT\r
+AC3            000017  INT\r
+AL             000001  INT\r
+APR            000000  SPD\r
+ASSCON         400000  INT\r
+ASSPRG         200000  INT\r
+B              000014  INT\r
+BUFPNT         000012  INT\r
+BUFWRD         000013  INT\r
+C              000002  \r
+CH1            000152' EXT\r
+CH2            000154' EXT\r
+CH3            000156' EXT\r
+CH4            000160' EXT\r
+CH5            000162' EXT\r
+CH6            000164' EXT\r
+CH7            000166' EXT\r
+CHL            000006  \r
+CLOSB          002000  INT\r
+CLSIN          000002  INT\r
+CLSOUT         000001  INT\r
+CONFIG         000176' EXT\r
+CONMES         000373' EXT\r
+CPOPJ          000407' EXT\r
+CPOPJ1         000417' EXT\r
+CRLF           000341' EXT\r
+D              000017  INT\r
+DAT            000005  INT\r
+DATLOP         000216' \r
+DCL            000001  INT\r
+DCW            020000  INT\r
+DDI            000007  INT\r
+DDO            000006  INT\r
+DDTMEM         000037  INT\r
+DDTSYM         000036  INT\r
+DECIN          000000  EXT\r
+DECIN1         000301' EXT\r
+DEN            000004  INT\r
+DEV1           000104' \r
+DEVADR         000007  INT\r
+DEVBUF         000006  INT\r
+DEVCHR         000001  INT\r
+DEVCTR         000011  INT\r
+DEVDAT         000006  INT\r
+DEVIAD         000007  INT\r
+DEVINT         000105' EXT\r
+DEVIOS         000002  INT\r
+DEVLOG         000005  INT\r
+DEVLST         000312' EXT\r
+DEVMOD         000004  INT\r
+\r
+\r
+\fONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE  MACRO 10 05:51 24-APR-78 PAGE 13-1\r
+ONCE   MAC     24-APR-78 00:18         SYMBOL TABLE\r
+\r
+DEVNAM         000000  INT\r
+DEVOAD         000010  INT\r
+DEVPTR         000010  INT\r
+DEVSER         000003  INT\r
+DGF            000012  INT\r
+DIN            000003  INT\r
+DLK            000005  INT\r
+DOU            000002  INT\r
+DR             000016  INT\r
+DRL            000000  INT\r
+DSI            000011  INT\r
+DSO            000010  INT\r
+DTW            040000  INT\r
+DVAVAL         000040  INT\r
+DVCDR          100000  INT\r
+DVDIR          000004  INT\r
+DVDIRI         400000  INT\r
+DVIN           000002  INT\r
+DVLPT          040000  INT\r
+DVMTA          000020  INT\r
+DVOUT          000001  INT\r
+DVTTY          000010  INT\r
+ENTRB          020000  INT\r
+ERNAM          000000  EXT\r
+ERROR          000167' EXT\r
+EXECIS         000541' \r
+GET1           000400' \r
+GETLIN         000376' \r
+I              000010  INT\r
+IB             000013  INT\r
+IBUFB          200000  INT\r
+INITB          400000  INT\r
+INPB           010000  INT\r
+INT            000005  \r
+IO             000020  INT\r
+IOACT          010000  INT\r
+IOBEG          000002  INT\r
+IOBKTL         040000  INT\r
+IOCON          000040  INT\r
+IOCONF         000517' \r
+IODEND         020000  INT\r
+IODERR         200000  INT\r
+IODISC         400000  INT\r
+IODONE         400000  INT\r
+IODTER         100000  INT\r
+IOEND          000040  INT\r
+IOFST          000004  INT\r
+IOIMPM         400000  INT\r
+IONRCK         000100  INT\r
+IORDEL         000100  INT\r
+IORET          000020  INT\r
+IOS            000000  INT\r
+IOSTRT         000010  INT\r
+\r
+\fONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE  MACRO 10 05:51 24-APR-78 PAGE 13-2\r
+ONCE   MAC     24-APR-78 00:18         SYMBOL TABLE\r
+\r
+IOUSE          400000  INT\r
+IOW            000001  INT\r
+IOWC           000020  INT\r
+IOWS           400000  INT\r
+ITEM           000004  INT\r
+JBFADR         000000  INT\r
+JBFCTR         000002  INT\r
+JBFPTR         000001  INT\r
+JBUF           000005  INT\r
+JDAT           000011  INT\r
+JERR           002000  INT\r
+JIOW           100000  INT\r
+JNA            004000  INT\r
+JOBFF          000363' EXT\r
+JOBSYM         000135' EXT\r
+JRSTI          000147' \r
+JRSTI1         000143' \r
+LENGTH         000544' \r
+LINBUF         000444' \r
+LINEP          000443' \r
+LINKSR         000101' INT\r
+LOC40          000150' \r
+LOOKB          040000  INT\r
+MAKEND         000353' EXT\r
+MTW            010000  INT\r
+NDEVM1         000103' EXT\r
+NXM            010000  \r
+OBUFB          100000  INT\r
+OCTPNT         000371' EXT\r
+ONCE           000170' INT\r
+ONCE2          000355' \r
+ONCE3          000365' \r
+ONCE4          000317' \r
+ONCE5          000315' \r
+ONCE6          000324' \r
+ONCE7          000332' \r
+ONCEPD         000464' \r
+ONCEPN         000010  \r
+OPOUT          000421' \r
+OPOUT1         000423' \r
+OPOUT2         000434' \r
+OUTPB          004000  INT\r
+PATCH          000001' INT\r
+PDP            000003  INT\r
+PICHN          000100  INT\r
+PROG           000007  INT\r
+RADX10         000325' EXT\r
+RUN            200000  INT\r
+RUNABL         204000  INT\r
+STO1           000140' \r
+SYSDAT         000212' EXT\r
+SYSDM          000536' \r
+SYSFIN         000000  INT\r
+\r
+\fONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE  MACRO 10 05:51 24-APR-78 PAGE 13-3\r
+ONCE   MAC     24-APR-78 00:18         SYMBOL TABLE\r
+\r
+SYSM           000524' \r
+SYSNUM         000206' EXT\r
+SYSSIZ         000370' EXT\r
+T              000001  \r
+TAC            000001  INT\r
+TAC1           000002  INT\r
+TEM            000010  INT\r
+THSDAT         000253' EXT\r
+TIME           000306' EXT\r
+TIMEM          000506' \r
+TIMLOP         000254' \r
+TODATE         000477' \r
+TSEXEC         000474' \r
+TTY            000120  SPD\r
+TTYATC         020000  INT\r
+TTYUSE         010000  INT\r
+USRMOD         010000  INT\r
+UUO            000014  INT\r
+UUO0           000151' EXT\r
+\fPPPPPPPPPPPP         TTTTTTTTTTTTTTT      RRRRRRRRRRRR            SSSSSSSSSSSS      EEEEEEEEEEEEEEE      RRRRRRRRRRRR   \r
+PPPPPPPPPPPP         TTTTTTTTTTTTTTT      RRRRRRRRRRRR            SSSSSSSSSSSS      EEEEEEEEEEEEEEE      RRRRRRRRRRRR   \r
+PPPPPPPPPPPP         TTTTTTTTTTTTTTT      RRRRRRRRRRRR            SSSSSSSSSSSS      EEEEEEEEEEEEEEE      RRRRRRRRRRRR   \r
+PPP         PPP            TTT            RRR         RRR      SSS                  EEE                  RRR         RRR\r
+PPP         PPP            TTT            RRR         RRR      SSS                  EEE                  RRR         RRR\r
+PPP         PPP            TTT            RRR         RRR      SSS                  EEE                  RRR         RRR\r
+PPP         PPP            TTT            RRR         RRR      SSS                  EEE                  RRR         RRR\r
+PPP         PPP            TTT            RRR         RRR      SSS                  EEE                  RRR         RRR\r
+PPP         PPP            TTT            RRR         RRR      SSS                  EEE                  RRR         RRR\r
+PPPPPPPPPPPP               TTT            RRRRRRRRRRRR            SSSSSSSSS         EEEEEEEEEEEE         RRRRRRRRRRRR   \r
+PPPPPPPPPPPP               TTT            RRRRRRRRRRRR            SSSSSSSSS         EEEEEEEEEEEE         RRRRRRRRRRRR   \r
+PPPPPPPPPPPP               TTT            RRRRRRRRRRRR            SSSSSSSSS         EEEEEEEEEEEE         RRRRRRRRRRRR   \r
+PPP                        TTT            RRR   RRR                        SSS      EEE                  RRR   RRR      \r
+PPP                        TTT            RRR   RRR                        SSS      EEE                  RRR   RRR      \r
+PPP                        TTT            RRR   RRR                        SSS      EEE                  RRR   RRR      \r
+PPP                        TTT            RRR      RRR                     SSS      EEE                  RRR      RRR   \r
+PPP                        TTT            RRR      RRR                     SSS      EEE                  RRR      RRR   \r
+PPP                        TTT            RRR      RRR                     SSS      EEE                  RRR      RRR   \r
+PPP                        TTT            RRR         RRR      SSSSSSSSSSSS         EEEEEEEEEEEEEEE      RRR         RRR\r
+PPP                        TTT            RRR         RRR      SSSSSSSSSSSS         EEEEEEEEEEEEEEE      RRR         RRR\r
+PPP                        TTT            RRR         RRR      SSSSSSSSSSSS         EEEEEEEEEEEEEEE      RRR         RRR\r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  05:53:58\r
+File: DSKB0 :PTRSER.LST   [8,296] Created: 20-April-1967 05:51:00 Printed: 24-April-1978 05:53:36\r
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:1687 \r
+File will be deleted after printing\r
+\f\r
+PTRSER - PAPER TAPE READER SERVICE ROUTINE     MACRO 10 05:51 24-APR-78 PAGE 1\r
+S      MAC     24-APR-78 21:40         8-15-65\r
+\r
+                                       XLIST\r
+                                      LIST\r
+                               TITLE PTRSER - PAPER TAPE READER SERVICE ROUTINE\r
+                               SUBTTL 8-15-65\r
+                               EXTERNAL WSYNC, STOSQD, ILLOUT\r
+                               EXTERNAL STODAT, IOSET, SETBYT, CKS12, ADVBFF\r
+                               EXTERNAL SETIOD, PTRSAV, PTRCHN, PTRRET,PIOMOD\r
+                               INTERNAL PTRINT\r
+\r
+                               ;PTR DEVICE DATA BLOCK LINKAGE\r
+\r
+                               EXTERNAL PTRDB,PTRDAT,PTRCHR,PTRIOS,PTRSER,PTRMOD,PTRBUF\r
+                               EXTERNAL PTRADR,PTRPTR,PTRCTR,PTRSVC,PTRSV1\r
+                               ENTRY PTRDSP\r
+\r
+\fPTRSER - PAPER TAPE READER SERVICE ROUTINE    MACRO 10 05:51 24-APR-78 PAGE 2\r
+PTRSER MAC     24-APR-78 01:35         8-15-65\r
+\r
+\r
+\r
+                               ,PARAMETER ASSIGNMENTS\r
+                               ,   PTR CONTROL REGISTER \r
+                       000010            PTRDON=10;            DONE FLAG\r
+                       000020            PTRBSY=20;            BUSY FLAG\r
+                       000040            PTRBIN=40;            BINARY READ MODE\r
+                       000400            POW=400;   POWER.  ON=1\r
+\r
+                               ,   SPECIAL IO STATUS WORD ASSIGMENTS\r
+                       002000            PTRERR=2000\r
+                       200000            PTRFCI=200000\r
+                       100000            PTRPOW=100000\r
+                               ,   SPECIAL ASCII CHARACTERS\r
+                       000200            NULL=200\r
+                       000377            RUBOUT=377\r
+                       000232            S2EOF=232;            END OF FILE\r
+                               ,   PI CONTROL REGISTER\r
+                       000200            PION=200\r
+                       000400            PIOFF=400\r
+\r
+                               REPEAT 0,<P\r
+                               ,PTR DATA BLOCK\r
+                               PTRDAT:   SIXBIT "PTR"\r
+                               PTRCHR:   41\r
+                               PTRIOS:   0\r
+                               PTRSER:   EXP PTRDSP\r
+                               PTRMOD:   XWD 1000+PROG,10403\r
+                                0\r
+                               PTRBUF:   0\r
+                               PTRADR:   XWD PROG,0\r
+                               PTRPTR:   0\r
+                               PTRCTR:   0\r
+                               PTRSVC:   0\r
+                               PTRSV1:   0\r
+                               >\r
+\r
+                               ,PTR SERVICE DISPATCH TABLE\r
+\r
+       000000' 254000  000133' PTRDSP:   JRST PTRREL           ;RELEASE\r
+       000001' 263140  000000            POPJ PDP,;            CLOSE\r
+       000002' 254000  000000*           JRST ILLOUT           ;OUTPUT\r
+       000003' 254000  000004'           JRST PTRINP;          INPUT\r
+\r
+\fPTRSER - PAPER TAPE READER SERVICE ROUTINE    MACRO 10 05:51 24-APR-78 PAGE 3\r
+PTRSER MAC     24-APR-78 01:35         8-15-65\r
+\r
+\r
+\r
+       000004' 607000  000002  PTRINP:   TLNN IOS,IOBEG;       VIRGIN DEVICE? (IOBEG=1?)\r
+       000005' 254000  000013'           JRST PTRIN1;          NO\r
+       000006' 661000  000004            TLO IOS,IOFST;    IOFST:=1. NEXT ITEM WILL BE FIRST ITEM\r
+       000007' 260140  000000*           PUSHJ PDP,SETBYT; TAC0-5:=TAC12-13:=0,TAC6-11:=BYTE SIZE\r
+                               ,                               TAC14-17:=PROG\r
+       000010' 202040  000000*           MOVEM TAC,PTRPTR;     PTRPTR:=C(TAC)\r
+       000011' 710700  000400            CONSZ PTR,POW;        IS POWER ON?\r
+       000012' 661000  100000            TLO IOS,PTRPOW;       YES. PTRPOW:=1\r
+       000013' 660000  010000  PTRIN1:   TRO IOS,IOACT;        IOACT:=1\r
+       000014' 135040  000000*           LDB TAC,PIOMOD\r
+       000015' 201100  000000*           MOVEI TAC1, PTRCHN;   TAC1:=PTR PI CHANNEL ASSIGNME\r
+       000016' 306040  000014            CAIN TAC,B;           MODE=BINARY?\r
+       000017' 271100  000040            ADDI TAC1,PTRBIN;     YES.  ALPHA/BINARY:=BINARY\r
+       000020' 201040  000010            MOVEI TAC,PTRDON  ;SET CONSO INTERRUPT FLAG\r
+       000021' 542040  000032'           HRRM TAC,PTRINT\r
+       000022' 627000  000002            TLZN IOS,IOBEG;       VIRGIN DEVICE? (IOBEG=1?)\r
+       000023' 254000  000027'           JRST PTRIN4;          NO\r
+       000024' 202000  000000*           MOVEM IOS,PTRIOS;     PTRIOS:=C(IOS)\r
+       000025' 710602  000020            CONO PTR,PTRBSY(TAC1);        PTR BUSY FLAG:=1,ASSIGN INTER\r
+       000026' 263140  000000            POPJ PDP,;            INPUT RETURN-VIRGIN DEVICE\r
+\r
+       000027' 202000  000024* PTRIN4:   MOVEM IOS,PTRIOS;     PTRIOS:=C(IOS)\r
+       000030' 710602  000010            CONO PTR,PTRDON(TAC1);        PTR DONE FLAG:=1,ASSIGN INTER\r
+       000031' 263140  000000            POPJ PDP,\r
+\r
+\fPTRSER - PAPER TAPE READER SERVICE ROUTINE    MACRO 10 05:51 24-APR-78 PAGE 4\r
+PTRSER MAC     24-APR-78 01:35         8-15-65\r
+\r
+\r
+\r
+       000032' 710740  000010  PTRINT:   CONSO PTR,PTRDON      ;INTERRUPT.  IS DONE FLAG = 1?\r
+       000033' 254000  000032'           JRST PTRINT           ;NO. IF PTR IS IN FLAG LIST, THIS LOC\r
+       000034' 331000  000027*           SKIPL PTRIOS          ;DISCONNECT REQUEST? (IODISC=1?)\r
+       000035' 710440  000000*           DATAI PTR,PTRSV1      ;SAVE ACCUMULATORS AND ESTABLISH PDP\r
+                                                       jsr ptrsav\r
+       000036' 201300  000000*           MOVEI DEVDAT,PTRDAT   ;DEVDAT: = PTR SIXBIT\r
+       000037' 260140  000000*           PUSHJ PDP,IOSET       ;PROG:=C(JBTADR18-35),ITEM:=C(DEVCTR)\r
+       000040' 200000  000034*           MOVE IOS,PTRIOS       ;IOS:=C(PTRIOS)\r
+       000041' 200240  000035*           MOVE DAT,PTRSV1       ;DAT:=C(PTRSV1)\r
+       000042' 710740  000400            CONSO PTR,POW         ;PTR POWER ON?\r
+       000043' 254000  000074'           JRST PTREND           ;NO\r
+       000044' 667000  100000            TLON IOS,PTRPOW       ;PTRPOW=1? PTRPOW:=1\r
+       000045' 254000  000130'           JRST PTREX1           ;NO\r
+       000046' 623000  400000            TLZE IOS,IODISC\r
+       000047' 254000  000120'           JRST PTREX\r
+       000050' 623000  200000            TLZE IOS,PTRFCI       ;IS PTRFCI=1?\r
+       000051' 200240  000000*           MOVE DAT,PTRSVC       ;YES.  DAT:=C(PTRSVC)\r
+       000052' 602000  000014  PTRIN0:   TRNE IOS,B            ;MODE=BINARY?\r
+       000053' 254000  000060'           JRST PTRI0            ;YES\r
+       000054' 302240  000200            CAIE DAT,NULL         ;LAST CHARACTER NULL OR RUBOUT\r
+       000055' 306240  000377            CAIN DAT,RUBOUT\r
+       000056' 254000  000130'           JRST PTREX1           ;YES\r
+       000057' 322240  000130'           JUMPE DAT,PTREX1      ;DAT=0?\r
+\r
+       000060' 260140  000000* PTRI0:    PUSHJ PDP,STODAT      ;NO STORE DATA WORD.\r
+\r
+       000061' 255000  000000            JFCL      ;CHECKSUM ERROR\r
+       000062' 254000  000064'           JRST PTRI1            ;BLOCK FULL OR BLOCK COMPLETE\r
+       000063' 254000  000130'           JRST PTREX1           ;DATA STORED CORRECTLY.\r
+\r
+       000064' 260140  000000* PTRI1:    PUSHJ PDP,ADVBFF      ;ADVANCE BUFFER\r
+       000065' 661000  400000            TLO IOS,IODISC;       NEXT BUFFER IS FULL. IODISC:=1\r
+       000066' 602000  000040            TRNE IOS,IOCON;       NEXT BUFFER IS EMPTY.  CONTINUOUS? (IOC\r
+       000067' 661000  400000            TLO IOS,IODISC;       NON-CONT. OPERATION. IODISC:=1\r
+       000070' 661000  000004  PTRI2:    TLO IOS,IOFST;        IOFST:=1.  NEXT ITEM IS FIRST ITEM OF A\r
+       000071' 623000  000001            TLZE IOS,IOW;         IN A WAIT?  IOW:=0\r
+       000072' 260140  000000*           PUSHJ PDP,SETIOD;     IOWS:=1\r
+       000073' 254000  000130'           JRST PTREX1\r
+\r
+\fPTRSER - PAPER TAPE READER SERVICE ROUTINE    MACRO 10 05:51 24-APR-78 PAGE 5\r
+PTRSER MAC     24-APR-78 01:35         8-15-65\r
+\r
+\r
+\r
+                               ,COME HERE WHEN THE READER IS SHUT OFF\r
+\r
+       000074' 630000  000136' PTREND:   TDZ IOS,[XWD PTRPOW,IOACT]    ;PTRPOW:=0,IOACT:=0\r
+       000075' 260140  000133'           PUSHJ PDP,PTRREL      ;CLEAR PTR AND CONSO FLAG\r
+       000076' 135040  000014*           LDB TAC,PIOMOD\r
+       000077' 661000  000040            TLO IOS,IOEND         ;IOEND:=1\r
+       000100' 602040  000014            TRNE TAC,B            ;MODE=A,AL\r
+       000101' 254000  000113'           JRST PTREIB           ;NO\r
+       000102' 201240  000232            MOVEI DAT,S2EOF;      EOF CHAR\r
+       000103' 260140  000060*           PUSHJ PDP,STODAT      ;STORE DATA WORD\r
+       000104' 254000  000061'           JRST PTRI0+1          ;CHECKSUM ERROR\r
+       000105' 254000  000110'           JRST .+3      ;BLOCK FULL OF BLOCK COMPLETE\r
+       000106' 260140  000000* PTREI:    PUSHJ PDP,STOSQD;     FINISH THIS BUFFER, STORE WORD COUNT\r
+       000107' 330000  000000            SKIP\r
+       000110' 260140  000064*           PUSHJ PDP,ADVBFF      ;ADVANCE BUFFER\r
+       000111' 330000  000000            SKIP\r
+       000112' 254000  000070'           JRST PTRI2\r
+\r
+       000113' 302040  000014  PTREIB:   CAIE TAC,B            ;MODE=BINARY?\r
+       000114' 254000  000106'           JRST PTREI            ;NO\r
+       000115' 607000  000004            TLNN IOS,IOFST        ;IOFST=1?\r
+       000116' 660000  002000            TRO IOS,PTRERR        ;NO.  PTRERR:=1.  BINARY BLOCK INCOMPLE\r
+       000117' 254000  000070'           JRST PTRI2\r
+\r
+\fPTRSER - PAPER TAPE READER SERVICE ROUTINE    MACRO 10 05:51 24-APR-78 PAGE 6\r
+PTRSER MAC     24-APR-78 01:35         8-15-65\r
+\r
+\r
+\r
+                               ,DISCONNECT PTR\r
+       000120' 337020  000000* PTREX:    SKIPG @PTRADR         ;IOUSE=1?\r
+       000121' 254000  000124'           JRST PTREX0           ;YES.\r
+       000122' 710440  000041*           DATAI PTR,PTRSV1\r
+       000123' 254000  000052'           JRST PTRIN0\r
+\r
+       000124' 710440  000051* PTREX0:   DATAI PTR,PTRSVC      ;SAVE LAST DATA WORD FROM PTR\r
+       000125' 260140  000133'           PUSHJ PDP,PTRREL      ;CLEAR PTR AND CONSO FLAG\r
+       000126' 661000  200000            TLO IOS,PTRFCI        ;PTRFCI:=1\r
+       000127' 620000  010000            TRZ IOS,IOACT         ;IOACT:=0\r
+\r
+       000130' 202200  000000* PTREX1:   MOVEM ITEM,PTRCTR     ;PTRCTR:=C(ITEM)\r
+       000131' 202000  000040*           MOVEM IOS,PTRIOS      ;PTRIOS:=C(IOS)\r
+       000132' 254000  000000*           JRST PTRRET           ;RESTORE ACCUMULATORS AND DISMISS INTER\r
+\r
+                                         INTERNAL PTRINI\r
+\r
+       000133'                 PTRINI:\r
+       000133' 710600  000000  PTRREL:   CONO PTR,0            ;CLEAR PTR CONTROL\r
+       000134' 513000  000032'           HLLZS PTRINT          ;CLEAR CONSO FLAG\r
+       000135' 263140  000000            POPJ PDP,\r
+\r
+                                         END,\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 000137\r
+\r
+9K CORE USED\r
+\r
+\fPTRSER - PAPER TAPE READER SERVICE ROUTINE    MACRO 10 05:51 24-APR-78 PAGE 7\r
+PTRSER MAC     24-APR-78 01:35         SYMBOL TABLE\r
+\r
+A              000000  INT\r
+AC1            000015  INT\r
+AC2            000016  INT\r
+AC3            000017  INT\r
+ADVBFF         000110' EXT\r
+AL             000001  INT\r
+ASSCON         400000  INT\r
+ASSPRG         200000  INT\r
+B              000014  INT\r
+BUFPNT         000012  INT\r
+BUFWRD         000013  INT\r
+CKS12          000000  EXT\r
+CLOSB          002000  INT\r
+CLSIN          000002  INT\r
+CLSOUT         000001  INT\r
+D              000017  INT\r
+DAT            000005  INT\r
+DCL            000001  INT\r
+DCW            020000  INT\r
+DDI            000007  INT\r
+DDO            000006  INT\r
+DDTMEM         000037  INT\r
+DDTSYM         000036  INT\r
+DEN            000004  INT\r
+DEVADR         000007  INT\r
+DEVBUF         000006  INT\r
+DEVCHR         000001  INT\r
+DEVCTR         000011  INT\r
+DEVDAT         000006  INT\r
+DEVIAD         000007  INT\r
+DEVIOS         000002  INT\r
+DEVLOG         000005  INT\r
+DEVMOD         000004  INT\r
+DEVNAM         000000  INT\r
+DEVOAD         000010  INT\r
+DEVPTR         000010  INT\r
+DEVSER         000003  INT\r
+DGF            000012  INT\r
+DIN            000003  INT\r
+DLK            000005  INT\r
+DOU            000002  INT\r
+DR             000016  INT\r
+DRL            000000  INT\r
+DSI            000011  INT\r
+DSO            000010  INT\r
+DTW            040000  INT\r
+DVAVAL         000040  INT\r
+DVCDR          100000  INT\r
+DVDIR          000004  INT\r
+DVDIRI         400000  INT\r
+DVIN           000002  INT\r
+DVLPT          040000  INT\r
+\r
+\r
+\fPTRSER - PAPER TAPE READER SERVICE ROUTINE    MACRO 10 05:51 24-APR-78 PAGE 7-1\r
+PTRSER MAC     24-APR-78 01:35         SYMBOL TABLE\r
+\r
+DVMTA          000020  INT\r
+DVOUT          000001  INT\r
+DVTTY          000010  INT\r
+ENTRB          020000  INT\r
+I              000010  INT\r
+IB             000013  INT\r
+IBUFB          200000  INT\r
+ILLOUT         000002' EXT\r
+INITB          400000  INT\r
+INPB           010000  INT\r
+IO             000020  INT\r
+IOACT          010000  INT\r
+IOBEG          000002  INT\r
+IOBKTL         040000  INT\r
+IOCON          000040  INT\r
+IODEND         020000  INT\r
+IODERR         200000  INT\r
+IODISC         400000  INT\r
+IODONE         400000  INT\r
+IODTER         100000  INT\r
+IOEND          000040  INT\r
+IOFST          000004  INT\r
+IOIMPM         400000  INT\r
+IONRCK         000100  INT\r
+IORDEL         000100  INT\r
+IORET          000020  INT\r
+IOS            000000  INT\r
+IOSET          000037' EXT\r
+IOSTRT         000010  INT\r
+IOUSE          400000  INT\r
+IOW            000001  INT\r
+IOWC           000020  INT\r
+IOWS           400000  INT\r
+ITEM           000004  INT\r
+JBFADR         000000  INT\r
+JBFCTR         000002  INT\r
+JBFPTR         000001  INT\r
+JBUF           000005  INT\r
+JDAT           000011  INT\r
+JERR           002000  INT\r
+JIOW           100000  INT\r
+JNA            004000  INT\r
+LOOKB          040000  INT\r
+MTW            010000  INT\r
+NULL           000200  \r
+OBUFB          100000  INT\r
+OUTPB          004000  INT\r
+PDP            000003  INT\r
+PICHN          000100  INT\r
+PIOFF          000400  \r
+PIOMOD         000076' EXT\r
+PION           000200  \r
+POW            000400  \r
+\r
+\fPTRSER - PAPER TAPE READER SERVICE ROUTINE    MACRO 10 05:51 24-APR-78 PAGE 7-2\r
+PTRSER MAC     24-APR-78 01:35         SYMBOL TABLE\r
+\r
+PROG           000007  INT\r
+PTR            000104  SPD\r
+PTRADR         000120' EXT\r
+PTRBIN         000040  \r
+PTRBSY         000020  \r
+PTRBUF         000000  EXT\r
+PTRCHN         000015' EXT\r
+PTRCHR         000000  EXT\r
+PTRCTR         000130' EXT\r
+PTRDAT         000036' EXT\r
+PTRDB          000000  EXT\r
+PTRDON         000010  \r
+PTRDSP         000000' ENT\r
+PTREI          000106' \r
+PTREIB         000113' \r
+PTREND         000074' \r
+PTRERR         002000  \r
+PTREX          000120' \r
+PTREX0         000124' \r
+PTREX1         000130' \r
+PTRFCI         200000  \r
+PTRI0          000060' \r
+PTRI1          000064' \r
+PTRI2          000070' \r
+PTRIN0         000052' \r
+PTRIN1         000013' \r
+PTRIN4         000027' \r
+PTRINI         000133' INT\r
+PTRINP         000004' \r
+PTRINT         000032' INT\r
+PTRIOS         000131' EXT\r
+PTRMOD         000000  EXT\r
+PTRPOW         100000  \r
+PTRPTR         000010' EXT\r
+PTRREL         000133' \r
+PTRRET         000132' EXT\r
+PTRSAV         000000  EXT\r
+PTRSER         000000  EXT\r
+PTRSV1         000122' EXT\r
+PTRSVC         000124' EXT\r
+RUBOUT         000377  \r
+RUN            200000  INT\r
+RUNABL         204000  INT\r
+S2EOF          000232  \r
+SETBYT         000007' EXT\r
+SETIOD         000072' EXT\r
+STODAT         000103' EXT\r
+STOSQD         000106' EXT\r
+TAC            000001  INT\r
+TAC1           000002  INT\r
+TEM            000010  INT\r
+TTYATC         020000  INT\r
+TTYUSE         010000  INT\r
+\r
+\fPTRSER - PAPER TAPE READER SERVICE ROUTINE    MACRO 10 05:51 24-APR-78 PAGE 7-3\r
+PTRSER MAC     24-APR-78 01:35         SYMBOL TABLE\r
+\r
+USRMOD         010000  INT\r
+UUO            000014  INT\r
+WSYNC          000000  EXT\r
+\fPPPPPPPPPPPP         TTTTTTTTTTTTTTT      PPPPPPPPPPPP            SSSSSSSSSSSS      EEEEEEEEEEEEEEE      RRRRRRRRRRRR   \r
+PPPPPPPPPPPP         TTTTTTTTTTTTTTT      PPPPPPPPPPPP            SSSSSSSSSSSS      EEEEEEEEEEEEEEE      RRRRRRRRRRRR   \r
+PPPPPPPPPPPP         TTTTTTTTTTTTTTT      PPPPPPPPPPPP            SSSSSSSSSSSS      EEEEEEEEEEEEEEE      RRRRRRRRRRRR   \r
+PPP         PPP            TTT            PPP         PPP      SSS                  EEE                  RRR         RRR\r
+PPP         PPP            TTT            PPP         PPP      SSS                  EEE                  RRR         RRR\r
+PPP         PPP            TTT            PPP         PPP      SSS                  EEE                  RRR         RRR\r
+PPP         PPP            TTT            PPP         PPP      SSS                  EEE                  RRR         RRR\r
+PPP         PPP            TTT            PPP         PPP      SSS                  EEE                  RRR         RRR\r
+PPP         PPP            TTT            PPP         PPP      SSS                  EEE                  RRR         RRR\r
+PPPPPPPPPPPP               TTT            PPPPPPPPPPPP            SSSSSSSSS         EEEEEEEEEEEE         RRRRRRRRRRRR   \r
+PPPPPPPPPPPP               TTT            PPPPPPPPPPPP            SSSSSSSSS         EEEEEEEEEEEE         RRRRRRRRRRRR   \r
+PPPPPPPPPPPP               TTT            PPPPPPPPPPPP            SSSSSSSSS         EEEEEEEEEEEE         RRRRRRRRRRRR   \r
+PPP                        TTT            PPP                              SSS      EEE                  RRR   RRR      \r
+PPP                        TTT            PPP                              SSS      EEE                  RRR   RRR      \r
+PPP                        TTT            PPP                              SSS      EEE                  RRR   RRR      \r
+PPP                        TTT            PPP                              SSS      EEE                  RRR      RRR   \r
+PPP                        TTT            PPP                              SSS      EEE                  RRR      RRR   \r
+PPP                        TTT            PPP                              SSS      EEE                  RRR      RRR   \r
+PPP                        TTT            PPP                  SSSSSSSSSSSS         EEEEEEEEEEEEEEE      RRR         RRR\r
+PPP                        TTT            PPP                  SSSSSSSSSSSS         EEEEEEEEEEEEEEE      RRR         RRR\r
+PPP                        TTT            PPP                  SSSSSSSSSSSS         EEEEEEEEEEEEEEE      RRR         RRR\r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  05:53:58\r
+File: DSKB0 :PTPSER.LST   [8,296] Created: 20-April-1967 05:51:00 Printed: 24-April-1978 05:53:36\r
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:1677 \r
+File will be deleted after printing\r
+\f\r
+PTPSER - PAPER TAPE PUNCH SERVICE ROUTINE      MACRO 10 05:51 24-APR-78 PAGE 1\r
+S      MAC     24-APR-78 21:40         8-15-65\r
+\r
+                                       XLIST\r
+                                      LIST\r
+                               TITLE PTPSER - PAPER TAPE PUNCH SERVICE ROUTINE\r
+                               SUBTTL 8-15-65\r
+                               EXTERNAL PTPCHN, PTPSAV, ADVBFE, ITMCT1, SETIOD, SETBYT, IOSET, CKS12\r
+                               EXTERNAL ILLINP,  OUT, WAIT1, PTPRET,PTPCHL,PIOMOD\r
+                               INTERNAL PTPINT\r
+\r
+                               ;PTP DEVICE DATA BLOCK LINKAGE\r
+\r
+                               EXTERNAL PTPDB,PTPDAT,PTPCHR,PTPIOS,PTPSER,PTPMOD,PTPBUF\r
+                               EXTERNAL PTPPTR,PTPADR,PTPCTR,PTPCNT,PTPCHA,PTPSIO\r
+                               ENTRY PTPDSP\r
+\r
+\fPTPSER - PAPER TAPE PUNCH SERVICE ROUTINE     MACRO 10 05:51 24-APR-78 PAGE 2\r
+PTPSER MAC     24-APR-78 13:00         8-15-65\r
+\r
+\r
+\r
+                               , PARAMETER ASSIGNMENTS\r
+\r
+\r
+                               ,   PTP CONTROL REGISTER\r
+                       000010            PTPDON=10\r
+\r
+                               ,   FORMAT CONTROL\r
+                       000200            PTPFDN=200\r
+\r
+                               ,   SPECIAL IO STATUS WORD ASSIGNMENTS\r
+                       200000            PTPFED=200000\r
+                       040000            PTPSSQ=40000\r
+                       020000            PTPEOL=20000\r
+                       010000            PTPSEQ=10000\r
+                       004000            PTPBIN=4000           ;CHECKSUM BINARY\r
+                       002000            PTPIB=2000            ;IMAGE BINARY\r
+\r
+                               ,   SPECIAL ASCII CHARACTERS\r
+                       000200            NULL=200\r
+                       000377            RUBOUT=377\r
+                       000211            HORTAB=211\r
+                       000213            VERTAB=213\r
+                       000214            FORMFD=214\r
+\r
+                               REPEAT 0,<\r
+                               ,PTP DATA BLOCK\r
+                               \r
+                               PTPDAT:   SIXBIT "PTP"\r
+                               PTPCHR:   41\r
+                               PTPIOS:   0\r
+                               PTPSER:   EXP PTPDSP\r
+                               PTPMOD:   XWD 1000+PROG.14403\r
+                                0\r
+                               PTPBUF:   0\r
+                               PTPPTR:   0\r
+                               PTPADR:   XWD PROG,0\r
+                               PTPCTR:   0\r
+                               PTPCNT:   0\r
+                               PTPCHA:   0\r
+                               PTPSIO:   0\r
+                               >\r
+\r
+                               ,PTP SERVICE DISPATCH TABLE\r
+\r
+       000000' 254000  000004' PTPDSP:   JRST PTPREL           ;RELEASE\r
+       000001' 254000  000007'           JRST PTPCLS           ;CLOSE\r
+       000002' 254000  000024'           JRST PTPOUT           ;OUTPUT\r
+       000003' 254000  000000*           JRST ILLINP           ;INPUT\r
+\r
+\fPTPSER - PAPER TAPE PUNCH SERVICE ROUTINE     MACRO 10 05:51 24-APR-78 PAGE 3\r
+PTPSER MAC     24-APR-78 13:00         8-15-65\r
+\r
+\r
+\r
+                                         INTERNAL PTPINI\r
+       000004'                 PTPINI:\r
+       000004' 710200  000000  PTPREL:   CONO PTP,0\r
+       000005' 513000  000052'           HLLZS PTPINT          ;CLEAR CONSO FLAG BITS\r
+       000006' 263140  000000            POPJ PDP,             ;RETURN\r
+\r
+       000007' 260140  000000* PTPCLS:   PUSHJ PDP,OUT;        OUTPUT REMAINING BUFFERS\r
+       000010' 260140  000000*           PUSHJ PDP,WAIT1;      WAIT FOR IOACT=0.\r
+       000011' 200000  000000*           MOVE IOS,PTPIOS;      C(IOS):=C(PTPIOS)\r
+       000012' 661000  600001            TLO IOS,IODISC+PTPFED+IOW;    IODISC:=IOW:=PTPFED:=1\r
+       000013' 660000  010000            TRO IOS,IOACT;        IOACT:=1\r
+       000014' 202000  000011*           MOVEM IOS,PTPIOS;     C(PTPIOS):=C(IOS)\r
+       000015' 201040  000200            MOVEI TAC,200\r
+       000016' 202040  000000*           MOVEM TAC,PTPCNT;     PTPCNT:=400\r
+       000017' 201040  000010            MOVEI TAC,PTPDON      ;SET CONSO FLAG\r
+       000020' 542040  000052'           HRRM TAC,PTPINT\r
+       000021' 201040  000000*           MOVEI TAC,PTPCHN;     TAC:=PTPCHN,PI CHANNEL ASSIGNMENT\r
+       000022' 710201  000010            CONO PTP,PTPDON(TAC);         DONE FLAG:=1, ASSIGN PI CHANN\r
+       000023' 254000  000010*           JRST WAIT1            ;WAIT FOR IOACT=0, ALL BUFFERS FINISHED\r
+\r
+\fPTPSER - PAPER TAPE PUNCH SERVICE ROUTINE     MACRO 10 05:51 24-APR-78 PAGE 4\r
+PTPSER MAC     24-APR-78 13:00         8-15-65\r
+\r
+\r
+\r
+       000024' 623000  000002  PTPOUT:   TLZE IOS,IOBEG        ;VIRGIN DEVICE? (IOBEG:=0)\r
+       000025' 254000  000036'           JRST PTPIN2           ;YES\r
+\r
+       000026' 660000  010000  PTPIN1:   TRO IOS,IOACT         ;IOACT:=1\r
+       000027' 621000  400000            TLZ IOS,IODISC        ;CLEAR DISCONNECT BIT\r
+       000030' 202000  000014*           MOVEM IOS,PTPIOS      ;PTPIOS:=C(IOS)\r
+       000031' 201040  000010            MOVEI TAC,PTPDON      ;SET CONSO FLAG BIT\r
+       000032' 542040  000052'           HRRM TAC,PTPINT\r
+       000033' 201040  000021*           MOVEI TAC, PTPCHN\r
+       000034' 710201  000010            CONO PTP,PTPDON (TAC);        DONE FLAG:=1, ASSIGN PI CHAN\r
+       000035' 263140  000000            POPJ PDP,             ;RETURN\r
+\r
+       000036' 135040  000000* PTPIN2:   LDB TAC,PIOMOD\r
+       000037' 661000  200024            TLO IOS, IOFST+PTPFED+IO      ;IOFST:=PTPFED:=IO:=1\r
+       000040' 621000  006000            TLZ IOS,PTPBIN+PTPIB          ;CLEAR BINARY AND IMAGE BINAR\r
+       000041' 306040  000013            CAIN TAC,IB           ;IMAGE BINARY?\r
+       000042' 661000  002000            TLO IOS,PTPIB         ;YES\r
+       000043' 306040  000014            CAIN TAC,B            ;MODE:=BINARY?\r
+       000044' 661000  004000            TLO IOS,PTPBIN        ;YES, PTPBIN:=1\r
+       000045' 201040  000200            MOVEI TAC,PTPFDN      ;PTPCNT:=PTPFDN\r
+       000046' 202040  000016*           MOVEM TAC,PTPCNT\r
+       000047' 260140  000000*           PUSHJ PDP,SETBYT      ;SETBYT\r
+       000050' 502040  000000*           HLLM TAC,PTPPTR       ;PTPPTR0-5:=PTPPTR12-13:=0,PTPPTR6-11:=\r
+                                                               ;SIZE; PTPPTR14-17:=PROG\r
+       000051' 254000  000026'           JRST PTPIN1\r
+\r
+\fPTPSER - PAPER TAPE PUNCH SERVICE ROUTINE     MACRO 10 05:51 24-APR-78 PAGE 5\r
+PTPSER MAC     24-APR-78 13:00         8-15-65\r
+\r
+\r
+\r
+                               ,PUNCH INTERRUPT SERVICE\r
+\r
+       000052' 710340  000010  PTPINT:   CONSO PTP,PTPDON;     DONE FLAG=1?\r
+       000053' 254000  000052'           JRST PTPINT           ;NO. IF PTP IS IN FLAG LIST GO TO ERROR\r
+       000054' 202000  000000*           MOVEM IOS,PTPSIO      ;PTPSIO:=C(IOS)  SAVE IOS\r
+       000055' 200000  000030*           MOVE IOS,PTPIOS       ;IOS:=C(PTPIOS)\r
+       000056' 603000  200000            TLNE IOS,PTPFED       ;FEED REQUEST? (PTPFED=1?)\r
+       000057' 254000  000151'           JRST PTPS2            ;YES\r
+       000060' 200000  000054*           MOVE IOS,PTPSIO       ;RESTORE IOS\r
+       000061' 264000  000000*           JSR PTPSAV            ;SAVE ACS AND ESTABLISH PDP\r
+       000062' 201300  000000*           MOVEI DEVDAT,PTPDAT\r
+       000063' 260140  000000*           PUSHJ PDP,IOSET       ;PROG:=(JBTADR 18-35),ITEM:=C(DEVCTR)\r
+       000064' 200000  000055*           MOVE IOS,PTPIOS\r
+       000065' 623000  400000            TLZE IOS,IODISC       ;DISCONNECT?  (IODISC=1?)\r
+       000066' 254000  000167'           JRST PTPADV           ;YES\r
+       000067' 623000  000004            TLZE IOS,IOFST        ;IOFST=1?  IOFST:=0\r
+       000070' 254000  000175'           JRST PTP9             ;YES\r
+       000071' 607000  006000            TLNN IOS,PTPBIN+PTPIB         ;BINARY PUNCH MODE?\r
+       000072' 254000  000121'           JRST PTP3             ;NO\r
+\r
+       000073' 200040  000000* PTPB0:    MOVE TAC,PTPCHA;      BINARY OUTPUT BYTE SIZE=36\r
+       000074' 241040  000006            ROT TAC,6\r
+       000075' 202040  000073*           MOVEM TAC,PTPCHA\r
+       000076' 405040  000077            ANDI TAC,77;          TAC:=XX, SIXBIT SUB-BYTE\r
+       000077' 271040  000200            ADDI TAC,200\r
+       000100' 710140  000001            DATAO PTP,TAC;        PUNCH 2XX\r
+       000101' 371000  000046*           SOSL PTPCNT;          C(PTPCNT):=C(PTPCNT)-1.   WORD DONE?\r
+       000102' 254000  000227'           JRST PTPXIT;          NO\r
+       000103' 371000  000000*           SOSL PTPCTR;          C(PTPCTR):=C(PTPCTR)-1.   ITEM COUNT < 0\r
+       000104' 254000  000113'           JRST PTPB1;           NO\r
+       000105' 603000  002000            TLNE IOS,PTPIB        ;IMAGE BINARY?\r
+       000106' 665000  400000            TLOA IOS,IODISC       ;YES, SUPPRESS TAPE FEED.\r
+       000107' 661000  600000            TLO IOS,IODISC+PTPFED         ;IODIS:=PTPFED:=1\r
+       000110' 201040  000010            MOVEI TAC,10\r
+       000111' 202040  000101*           MOVEM TAC,PTPCNT;     PTPCNT:=10\r
+       000112' 254000  000227'           JRST PTPXIT\r
+\r
+       000113' 201040  000005  PTPB1:    MOVEI TAC,5           ;PTPCNT:=5\r
+       000114' 202040  000111*           MOVEM TAC,PTPCNT\r
+       000115' 200260  000050*           MOVE DAT,@PTPPTR;     PTPCHA:=OUTPUT DATA WORD\r
+       000116' 350000  000115*           AOS PTPPTR;           PTPPTR:=C(PTPPTR)+1.  ADVANCE ITEM POIN\r
+       000117' 202240  000075*           MOVEM DAT,PTPCHA\r
+       000120' 254000  000227'           JRST PTPXIT\r
+\r
+\fPTPSER - PAPER TAPE PUNCH SERVICE ROUTINE     MACRO 10 05:51 24-APR-78 PAGE 6\r
+PTPSER MAC     24-APR-78 13:00         8-15-65\r
+\r
+\r
+\r
+       000121' 710140  000117* PTP3:     DATAO PTP,PTPCHA;     PUNCH CHARACTER\r
+       000122' 602000  000014            TRNE IOS,14;          IS MODE AN ALPHA MODE\r
+       000123' 254000  000136'           JRST PTP1;            NO\r
+       000124' 200240  000121*           MOVE DAT,PTPCHA\r
+       000125' 302240  000211            CAIE DAT,HORTAB;      HORIZONTAL OR VERTICAL TAB?\r
+       000126' 306240  000213            CAIN DAT,VERTAB\r
+       000127' 254000  000216'           JRST PTPP1;           YES\r
+       000130' 302240  000214            CAIE DAT,FORMFD;      FORM FEED?\r
+       000131' 254000  000136'           JRST PTP1;            NO\r
+       000132' 661000  220000            TLO IOS,PTPFED+PTPEOL;        PTPFED:=PTPEOL:=1\r
+       000133' 201240  000020            MOVEI DAT,20\r
+       000134' 202240  000114*           MOVEM DAT,PTPCNT;     PTPCNT:=20\r
+       000135' 254000  000227'           JRST PTPXIT\r
+\r
+\fPTPSER - PAPER TAPE PUNCH SERVICE ROUTINE     MACRO 10 05:51 24-APR-78 PAGE 7\r
+PTPSER MAC     24-APR-78 13:00         8-15-65\r
+\r
+\r
+\r
+       000136' 375000  000103* PTP1:     SOSGE     PTPCTR;     C(PTPCTR:=C(PTPCTR)-1.  IS C(PTPCTR)<0\r
+       000137' 254000  000160'           JRST PTP5             ;YES\r
+       000140' 134240  000116*           LDBI DAT,PTPPTR       ;DAT:=OUTPUT ITEM\r
+       000141' 135040  000036*           LDB TAC,PIOMOD\r
+       000142' 306040  000010            CAIN TAC,I;           MODE=IMAGE?\r
+       000143' 254000  000147'           JRST PTP6             ;YES\r
+       000144' 435240  000200            IORI DAT,200;         NO, INSERT EIGHTH HOLD\r
+       000145' 306240  000200            CAIN DAT,NULL;        NULL?\r
+       000146' 254000  000136'           JRST PTP1;            YES\r
+\r
+       000147' 202240  000124* PTP6:     MOVEM DAT,PTPCHA;     PTPCHA:=OUTPUT ITEM\r
+       000150' 254000  000227'           JRST PTPXIT\r
+\r
+       000151' 402000  000147* PTPS2:    CLEARM    PTPCHA;     PUNCH FEED\r
+       000152' 710140  000151*           DATAO PTP,PTPCHA\r
+       000153' 377000  000134*           SOSG PTPCNT;          COUNT FEED LINES\r
+       000154' 621000  200000            TLZ IOS,PTPFED;       PTPFED:=0\r
+       000155' 202000  000064*           MOVEM IOS,PTPIOS;     PTPIOS:=C(IOS)\r
+       000156' 200000  000060*           MOVE IOS,PTPSIO       ;RESTORE IOS\r
+       000157' 254520  000000*           JEN @PTPCHL           ;DISMISS\r
+\r
+       000160' 661000  400000  PTP5:     TLO IOS,IODISC;       IODISC:=1\r
+       000161' 254000  000227'           JRST PTPXIT\r
+\r
+       000162' 550100  000000* PTPBN:    HRRZ TAC1,PTPADR;     TAC1:=BUFFER ADDRESS\r
+       000163' 260140  000000*           PUSHJ PDP,CKS12;      TAC:=CALCULATE CHECKSUM\r
+       000164' 270100  000162*           ADD TAC1, PTPADR\r
+       000165' 502060  000002            HLLM TAC,@TAC1;       STORE CHECKSUM IN LEFT HALF OF FIRST BU\r
+       000166' 254000  000113'           JRST PTPB1\r
+\r
+\fPTPSER - PAPER TAPE PUNCH SERVICE ROUTINE     MACRO 10 05:51 24-APR-78 PAGE 8\r
+PTPSER MAC     24-APR-78 13:00         8-15-65\r
+\r
+\r
+\r
+       000167' 260140  000000* PTPADV:   PUSHJ PDP,ADVBFE;     ADVANCE BUFFER\r
+       000170' 254000  000222'           JRST PTPDSC;          EXIT1.  NEXT BUFFER EMPTY\r
+       000171' 602000  000040            TRNE IOS,IOCON;       CONTINUOUS? (IOCON=1?)\r
+       000172' 254000  000222'           JRST PTPDSC;          YES\r
+       000173' 623000  000001            TLZE IOS,IOW;         IN A WAIT?  IOW:=0\r
+       000174' 260140  000000*           PUSHJ PDP,SETIOD;     YES.  IOWS:=1\r
+       000175' 621000  000004  PTP9:     TLZ IOS,IOFST;        IOFST:=0\r
+       000176' 200040  000164*           MOVE TAC,PTPADR\r
+       000177' 350000  000001            AOS TAC\r
+       000200' 542040  000140*           HRRM TAC,PTPPTR;      PTPPTR18-35:=C(PTPADR18-25)+1\r
+       000201' 550220  000001            HRRZ ITEM,@TAC;       ITEM:=WORD COUNT\r
+       000202' 135100  000215'           LDB TAC1,PTP91                ;PICK UP BYTE SIZE\r
+       000203' 260140  000000*           PUSHJ PDP,ITMCT1;     ITEM:=WORD COUNT*[36/BYTE SIZE]\r
+       000204' 202200  000136*           MOVEM ITEM,PTPCTR;    PTPCTR:=C(ITEM)\r
+       000205' 322200  000167'           JUMPE ITEM,PTPADV     ;       IS ITEM COUNT=0?\r
+       000206' 603000  004000            TLNE IOS,PTPBIN;      BINARY PUNCH MODE?\r
+       000207' 254000  000162'           JRST PTPBN;           YES\r
+       000210' 607000  002000            TLNN IOS,PTPIB        ;IMAGE BINARY?\r
+       000211' 254000  000136'           JRST PTP1\r
+       000212' 350000  000200*           AOS PTPPTR            ;YES\r
+       000213' 370000  000204*           SOS PTPCTR\r
+       000214' 254000  000113'           JRST PTPB1\r
+\r
+       000215' 300600  000212* PTP91:    POINT 6,PTPPTR,11\r
+\r
+       000216' 201240  000377  PTPP1:    MOVEI DAT,RUBOUT;     PTPCHA:=RUBOUT\r
+       000217' 202240  000152*           MOVEM DAT,PTPCHA\r
+       000220' 661000  020000            TLO IOS,PTPEOL;       PTPEOL:=1\r
+       000221' 254000  000227'           JRST PTPXIT\r
+\r
+       000222' 260140  000004' PTPDSC:   PUSHJ PDP,PTPREL      ;CLEAR PTP CONTROL REG AND CONSO BITS\r
+       000223' 620000  010000            TRZ IOS,IOACT;        IOACT:=0\r
+       000224' 661000  000004            TLO IOS,IOFST;        IOFST:=1\r
+       000225' 623000  000001            TLZE IOS,IOW;         IN A WAIT?  IOW:=0\r
+       000226' 260140  000174*           PUSHJ PDP,SETIOD;     YES.  IOSW:=1\r
+\r
+       000227' 202000  000155* PTPXIT:   MOVEM IOS,PTPIOS;     PTPIOS:=C(IOS)\r
+       000230' 254000  000000*           JRST PTPRET;          NO\r
+\r
+                               END,\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 000231\r
+\r
+9K CORE USED\r
+\r
+\fPTPSER - PAPER TAPE PUNCH SERVICE ROUTINE     MACRO 10 05:51 24-APR-78 PAGE 9\r
+PTPSER MAC     24-APR-78 13:00         SYMBOL TABLE\r
+\r
+A              000000  INT\r
+AC1            000015  INT\r
+AC2            000016  INT\r
+AC3            000017  INT\r
+ADVBFE         000167' EXT\r
+AL             000001  INT\r
+ASSCON         400000  INT\r
+ASSPRG         200000  INT\r
+B              000014  INT\r
+BUFPNT         000012  INT\r
+BUFWRD         000013  INT\r
+CKS12          000163' EXT\r
+CLOSB          002000  INT\r
+CLSIN          000002  INT\r
+CLSOUT         000001  INT\r
+D              000017  INT\r
+DAT            000005  INT\r
+DCL            000001  INT\r
+DCW            020000  INT\r
+DDI            000007  INT\r
+DDO            000006  INT\r
+DDTMEM         000037  INT\r
+DDTSYM         000036  INT\r
+DEN            000004  INT\r
+DEVADR         000007  INT\r
+DEVBUF         000006  INT\r
+DEVCHR         000001  INT\r
+DEVCTR         000011  INT\r
+DEVDAT         000006  INT\r
+DEVIAD         000007  INT\r
+DEVIOS         000002  INT\r
+DEVLOG         000005  INT\r
+DEVMOD         000004  INT\r
+DEVNAM         000000  INT\r
+DEVOAD         000010  INT\r
+DEVPTR         000010  INT\r
+DEVSER         000003  INT\r
+DGF            000012  INT\r
+DIN            000003  INT\r
+DLK            000005  INT\r
+DOU            000002  INT\r
+DR             000016  INT\r
+DRL            000000  INT\r
+DSI            000011  INT\r
+DSO            000010  INT\r
+DTW            040000  INT\r
+DVAVAL         000040  INT\r
+DVCDR          100000  INT\r
+DVDIR          000004  INT\r
+DVDIRI         400000  INT\r
+DVIN           000002  INT\r
+DVLPT          040000  INT\r
+\r
+\r
+\fPTPSER - PAPER TAPE PUNCH SERVICE ROUTINE     MACRO 10 05:51 24-APR-78 PAGE 9-1\r
+PTPSER MAC     24-APR-78 13:00         SYMBOL TABLE\r
+\r
+DVMTA          000020  INT\r
+DVOUT          000001  INT\r
+DVTTY          000010  INT\r
+ENTRB          020000  INT\r
+FORMFD         000214  \r
+HORTAB         000211  \r
+I              000010  INT\r
+IB             000013  INT\r
+IBUFB          200000  INT\r
+ILLINP         000003' EXT\r
+INITB          400000  INT\r
+INPB           010000  INT\r
+IO             000020  INT\r
+IOACT          010000  INT\r
+IOBEG          000002  INT\r
+IOBKTL         040000  INT\r
+IOCON          000040  INT\r
+IODEND         020000  INT\r
+IODERR         200000  INT\r
+IODISC         400000  INT\r
+IODONE         400000  INT\r
+IODTER         100000  INT\r
+IOEND          000040  INT\r
+IOFST          000004  INT\r
+IOIMPM         400000  INT\r
+IONRCK         000100  INT\r
+IORDEL         000100  INT\r
+IORET          000020  INT\r
+IOS            000000  INT\r
+IOSET          000063' EXT\r
+IOSTRT         000010  INT\r
+IOUSE          400000  INT\r
+IOW            000001  INT\r
+IOWC           000020  INT\r
+IOWS           400000  INT\r
+ITEM           000004  INT\r
+ITMCT1         000203' EXT\r
+JBFADR         000000  INT\r
+JBFCTR         000002  INT\r
+JBFPTR         000001  INT\r
+JBUF           000005  INT\r
+JDAT           000011  INT\r
+JERR           002000  INT\r
+JIOW           100000  INT\r
+JNA            004000  INT\r
+LOOKB          040000  INT\r
+MTW            010000  INT\r
+NULL           000200  \r
+OBUFB          100000  INT\r
+OUT            000007' EXT\r
+OUTPB          004000  INT\r
+PDP            000003  INT\r
+PICHN          000100  INT\r
+\r
+\fPTPSER - PAPER TAPE PUNCH SERVICE ROUTINE     MACRO 10 05:51 24-APR-78 PAGE 9-2\r
+PTPSER MAC     24-APR-78 13:00         SYMBOL TABLE\r
+\r
+PIOMOD         000141' EXT\r
+PROG           000007  INT\r
+PTP            000100  SPD\r
+PTP1           000136' \r
+PTP3           000121' \r
+PTP5           000160' \r
+PTP6           000147' \r
+PTP9           000175' \r
+PTP91          000215' \r
+PTPADR         000176' EXT\r
+PTPADV         000167' \r
+PTPB0          000073' \r
+PTPB1          000113' \r
+PTPBIN         004000  \r
+PTPBN          000162' \r
+PTPBUF         000000  EXT\r
+PTPCHA         000217' EXT\r
+PTPCHL         000157' EXT\r
+PTPCHN         000033' EXT\r
+PTPCHR         000000  EXT\r
+PTPCLS         000007' \r
+PTPCNT         000153' EXT\r
+PTPCTR         000213' EXT\r
+PTPDAT         000062' EXT\r
+PTPDB          000000  EXT\r
+PTPDON         000010  \r
+PTPDSC         000222' \r
+PTPDSP         000000' ENT\r
+PTPEOL         020000  \r
+PTPFDN         000200  \r
+PTPFED         200000  \r
+PTPIB          002000  \r
+PTPIN1         000026' \r
+PTPIN2         000036' \r
+PTPINI         000004' INT\r
+PTPINT         000052' INT\r
+PTPIOS         000227' EXT\r
+PTPMOD         000000  EXT\r
+PTPOUT         000024' \r
+PTPP1          000216' \r
+PTPPTR         000215' EXT\r
+PTPREL         000004' \r
+PTPRET         000230' EXT\r
+PTPS2          000151' \r
+PTPSAV         000061' EXT\r
+PTPSEQ         010000  \r
+PTPSER         000000  EXT\r
+PTPSIO         000156' EXT\r
+PTPSSQ         040000  \r
+PTPXIT         000227' \r
+RUBOUT         000377  \r
+RUN            200000  INT\r
+RUNABL         204000  INT\r
+\r
+\fPTPSER - PAPER TAPE PUNCH SERVICE ROUTINE     MACRO 10 05:51 24-APR-78 PAGE 9-3\r
+PTPSER MAC     24-APR-78 13:00         SYMBOL TABLE\r
+\r
+SETBYT         000047' EXT\r
+SETIOD         000226' EXT\r
+TAC            000001  INT\r
+TAC1           000002  INT\r
+TEM            000010  INT\r
+TTYATC         020000  INT\r
+TTYUSE         010000  INT\r
+USRMOD         010000  INT\r
+UUO            000014  INT\r
+VERTAB         000213  \r
+WAIT1          000023' EXT\r
+\fRRRRRRRRRRRR         UUU         UUU      NNN         NNN         CCCCCCCCCCCC         SSSSSSSSSSSS         SSSSSSSSSSSS\r
+RRRRRRRRRRRR         UUU         UUU      NNN         NNN         CCCCCCCCCCCC         SSSSSSSSSSSS         SSSSSSSSSSSS\r
+RRRRRRRRRRRR         UUU         UUU      NNN         NNN         CCCCCCCCCCCC         SSSSSSSSSSSS         SSSSSSSSSSSS\r
+RRR         RRR      UUU         UUU      NNN         NNN      CCC                  SSS                  SSS            \r
+RRR         RRR      UUU         UUU      NNN         NNN      CCC                  SSS                  SSS            \r
+RRR         RRR      UUU         UUU      NNN         NNN      CCC                  SSS                  SSS            \r
+RRR         RRR      UUU         UUU      NNNNNN      NNN      CCC                  SSS                  SSS            \r
+RRR         RRR      UUU         UUU      NNNNNN      NNN      CCC                  SSS                  SSS            \r
+RRR         RRR      UUU         UUU      NNNNNN      NNN      CCC                  SSS                  SSS            \r
+RRRRRRRRRRRR         UUU         UUU      NNN   NNN   NNN      CCC                     SSSSSSSSS            SSSSSSSSS   \r
+RRRRRRRRRRRR         UUU         UUU      NNN   NNN   NNN      CCC                     SSSSSSSSS            SSSSSSSSS   \r
+RRRRRRRRRRRR         UUU         UUU      NNN   NNN   NNN      CCC                     SSSSSSSSS            SSSSSSSSS   \r
+RRR   RRR            UUU         UUU      NNN      NNNNNN      CCC                              SSS                  SSS\r
+RRR   RRR            UUU         UUU      NNN      NNNNNN      CCC                              SSS                  SSS\r
+RRR   RRR            UUU         UUU      NNN      NNNNNN      CCC                              SSS                  SSS\r
+RRR      RRR         UUU         UUU      NNN         NNN      CCC                              SSS                  SSS\r
+RRR      RRR         UUU         UUU      NNN         NNN      CCC                              SSS                  SSS\r
+RRR      RRR         UUU         UUU      NNN         NNN      CCC                              SSS                  SSS\r
+RRR         RRR      UUUUUUUUUUUUUUU      NNN         NNN         CCCCCCCCCCCC      SSSSSSSSSSSS         SSSSSSSSSSSS   \r
+RRR         RRR      UUUUUUUUUUUUUUU      NNN         NNN         CCCCCCCCCCCC      SSSSSSSSSSSS         SSSSSSSSSSSS   \r
+RRR         RRR      UUUUUUUUUUUUUUU      NNN         NNN         CCCCCCCCCCCC      SSSSSSSSSSSS         SSSSSSSSSSSS   \r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  05:53:58\r
+File: DSKB0 :RUNCSS.LST   [8,296] Created: 20-April-1967 05:51:00 Printed: 24-April-1978 05:53:36\r
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:1665 \r
+File will be deleted after printing\r
+\f\r
+RUNCSS - RUN CONTROL SUBROUTINES       MACRO 10 05:51 24-APR-78 PAGE 1\r
+S      MAC     24-APR-78 21:40         T. HASTINGS   8-16-65\r
+\r
+                                       XLIST\r
+                                      LIST\r
+                               TITLE RUNCSS - RUN CONTROL SUBROUTINES\r
+                               SUBTTL T. HASTINGS   8-16-65\r
+                               EXTERNAL APRCHN,APRCHL,CH6SAC,JBTADR,JOB,JOBAC,JOBDAT,JOBN\r
+                               EXTERNAL JOBPDP,USRDDT,USRPDP,JOBDDT\r
+                               EXTERNAL IORELS,JBTSTS,JOBADR,JOBCDP,JOBPC,JOBREL,JOBSA,JOBSYM\r
+                               EXTERNAL MESPNT,QUANT1,JOBDAC,TTYSTR,STOPU,SCHEDF\r
+                               EXTERNAL UXIT,IOCOMP,DCREQ,DCAVAL,DTREQ,DTAVAL,MTREQ,MTAVAL\r
+                               EXTERNAL CH1XIT,CH2XIT,CH3XIT,CH4XIT,CH5XIT,CH6XIT,CH7XIT\r
+                               EXTERNAL JOBFF,MJOBPD,JOBPDL,IOCOMP,PJOBN,USRLO,USRLO1,USRHI\r
+                               EXTERNAL TTYFNU,RSCHED\r
+\r
+\fRUNCSS - RUN CONTROL SUBROUTINES      MACRO 10 05:51 24-APR-78 PAGE 2\r
+RUNCSS MAC     24-APR-78 01:40         T. HASTINGS   8-16-65\r
+\r
+\r
+                               ;EXIT UUO ROUTINE\r
+\r
+                                         INTERNAL EXIT\r
+                               EXTERNAL IORELS,TTYFNU,MESPNT,IOKILL\r
+\r
+       000000' 260140  000000* EXIT:     PUSHJ PDP,IORELS      ;RELEASE ALL DEVICES\r
+       000001' 260140  000000*           PUSHJ PDP,TTYFNU\r
+       000002' 201100  000005'           MOVEI TAC1,EXMESS\r
+       000003' 260140  000000*           PUSHJ PDP,MESPNT\r
+       000004' 254000  000030'           JRST HOLD ;STOP THIS USER IMMEDIATELY\r
+\r
+       000005'                 EXMESS:   ASCIZ /\r
+       000005' 064250  554222  EXIT\r
+       000006' 520321  200000  /\r
+                               ;RESET UUO ROUTINE\r
+\r
+                                         INTERNAL RESET\r
+\r
+       000007' 260140  000000* RESET:    PUSHJ PDP,IOKILL      ;RELEASE ALL DEVICES\r
+       000010' 260140  000227'           PUSHJ PDP,SETUSR      ;CLEAR PART OF JOB DATA AREA\r
+       000011' 254000  000000*           JRST UXIT             ;AND RETURN TO CALLER\r
+\r
+\fRUNCSS - RUN CONTROL SUBROUTINES      MACRO 10 05:51 24-APR-78 PAGE 3\r
+RUNCSS MAC     24-APR-78 01:40         T. HASTINGS   8-16-65\r
+\r
+\r
+\r
+                               ;COMMON ERROR HANDLING ROUTINES\r
+                               ;DEVDAT MUST BE SET UP TO TTY DDB ON WHICH TO PRINT ERROR MESSAGE\r
+\r
+                               ;HERE ON ERROR DETECTED AT INTERRUPT SERVICE LEVEL\r
+                               ;0(PDP) CONTAINS ADR. OF DEVICE DATA BLOCK CAUSING ERROR\r
+\r
+                               ;CALL     MOVE TAC, PI CHANNEL NO DETECTING ERROR\r
+                               ;         JRST HOLDI\r
+\r
+                               INTERNAL HOLDI,HOLD,HOLDI1\r
+\r
+       000012' 200103  000000  HOLDI:    MOVE TAC1, 0(PDP)     ;DEVICE DATA BLOCK\r
+       000013' 135200  000265'           LDB ITEM, [POINT 9, DEVCHR(TAC1), 8]          ;GET JOB NUMBER\r
+       000014' 261140  000001  HOLDI1:   PUSH PDP, TAC         ;SAVE PI CHANNEL NO.\r
+       000015' 260140  000032'           PUSHJ PDP, HOLDSB\r
+       000016' 262140  000001            POP PDP, TAC\r
+       000017' 254001  000020'           JRST CHNTAB(TAC)      ;GO RESTORE ACS AND DISMISS CHANNEL\r
+\r
+       000020' 254000  000000* CHNTAB:   JRST RSCHED           ;INTERRUPT ON CLOCK CHANNEL,RESCHEDULE\r
+       000021' 254000  000000*           JRST CH1XIT\r
+       000022' 254000  000000*           JRST CH2XIT\r
+       000023' 254000  000000*           JRST CH3XIT\r
+       000024' 254000  000000*           JRST CH4XIT\r
+       000025' 254000  000000*           JRST CH5XIT\r
+       000026' 254000  000000*           JRST CH6XIT\r
+       000027' 254000  000000*           JRST CH7XIT\r
+\r
+                               ;HERE ON ERROR FROM UUO LEVEL. ERROR MESSAGE ALREADY IN TTY BUFFER\r
+\r
+                               ;DAT=BYTE POINTER TO END OF MESSAGE; DEVDAT=TTY DEV. DATA BLOCK\r
+       000030' 200200  000000* HOLD:     MOVE ITEM, JOB                ;NO. OF THIS JOB\r
+       000031' 260140  000242'           PUSHJ PDP,WAIT1               ;WAIT UNTIL TTY FINISHED\r
+\r
+       000032' 260140  000000* HOLDSB:   PUSHJ PDP,CRLF\r
+       000033' 260140  000000*           PUSHJ PDP, TTYSTR     ;START UP TTY TO PRINT ERROR MESSAGE\r
+                               EXTERNAL CRLF\r
+\r
+                               ;ROUTINE TO STOP USER AND FLAG AS ERROR STOP\r
+                               ;CALL:    MOVE ITEM, JOB NUMBER\r
+                               ;         PUSHJ PDP,ESTOP\r
+\r
+\r
+                               INTERNAL ESTOP\r
+\r
+       000034' 205040  002000  ESTOP:    MOVSI TAC,JERR                ;SET ERROR BIT IN JOB STATUS\r
+       000035' 436044  000000*           IORM TAC, JBTSTS(ITEM)\r
+       000036' 254000  000070'           JRST STOP1\r
+\r
+\fRUNCSS - RUN CONTROL SUBROUTINES      MACRO 10 05:51 24-APR-78 PAGE 4\r
+RUNCSS MAC     24-APR-78 01:40         T. HASTINGS   8-16-65\r
+\r
+\r
+\r
+                               ,BLOCK TRANSFER PROGRAM OVER LOADER\r
+\r
+                                         INTERNAL LDRBLT\r
+                                         EXTERNAL USRREL\r
+\r
+                       000002            PGADR=2               ;AC CONTAINING BEGINNING OF PROGRAM(LOA\r
+\r
+       000037' 260140  000000* LDRBLT:   PUSHJ PDP,IORELS\r
+       000040' 550051  000002            HRRZ TAC, PGADR (JDAT)        ;ADD OFFSET TO SYMBOL TABLE P\r
+       000041' 402011  000002            SETZM PGADR(JDAT)     ;THEN CLEAR SO SYSMAK WILL STILL WORK\r
+       000042' 550240  000007            HRRZ DAT,PROG\r
+       000043' 270240  000001            ADD DAT,TAC\r
+       000044' 272045  000000*           ADDM TAC,JOBSYM(DAT)\r
+       000045' 504240  000007            HRL DAT,PROG\r
+       000046' 554045  000000*           HLRZ TAC,JOBSA(DAT)\r
+       000047' 313040  000000*           CAMLE TAC,USRREL      ;IS HIGHEST DESTINATION STILL IN USER A\r
+       000050' 200040  000047*           MOVE TAC,USRREL       ;NO. MAKE SURE IT IS.\r
+       000051' 207000  000005            MOVSS DAT\r
+       000052' 270040  000005            ADD TAC,DAT\r
+       000053' 270240  000266'           ADD DAT,[XWD 30,30]   ;MOVE PROGRAM DOWN\r
+       000054' 251241  000000            BLT DAT,(TAC)\r
+       000055' 200051  000000*           MOVE TAC,JOBDDT(JDAT)\r
+                                                               moveM TAC,USRDDT\r
+       000056' 260140  000227'           PUSHJ PDP,SETUSR\r
+       000057' 260140  000001*           PUSHJ PDP,TTYFNU\r
+       000060' 201100  000063'           MOVEI TAC1,LDRMES\r
+       000061' 260140  000003*           PUSHJ PDP,MESPNT\r
+       000062' 254000  000030'           JRST HOLD\r
+\r
+       000063'                 LDRMES:   ASCIZ /\r
+       000063' 064251  447602  LOADER FINISHED\r
+       000064' 422132  220214\r
+       000065' 446351  151620\r
+       000066' 426101  505000  /\r
+\r
+\fRUNCSS - RUN CONTROL SUBROUTINES      MACRO 10 05:51 24-APR-78 PAGE 5\r
+RUNCSS MAC     24-APR-78 01:40         T. HASTINGS   8-16-65\r
+\r
+\r
+\r
+                               INTERNAL STOP1, STOP2, CONT1, START1\r
+\r
+                       000200  PION=200\r
+                       000400  PIOFF=400\r
+\r
+                               ;ROUTINE TO PUT CURRENT JOB IN IO WAIT\r
+                               ;ROUTINE TO STOP CURRENT JOB\r
+                               ;MAY BE CALLED FROM ANY LEVEL\r
+                               ;CALL;    PUSHJ PDP,STOP0\r
+                               ;         RETURN                ;RETURN HERE IMMEDIATELY, IF CALLED FRO\r
+                               ;PRIORITY CHANNEL THAN CLOCK. OTHERWISE RETURN WHEN JOB IS RUNABLE AG\r
+\r
+                               INTERNAL STOP0\r
+\r
+       000067' 200200  000030* STOP0:    MOVE ITEM, JOB                ;CURRENT JOB NUMBER\r
+\r
+                               ;ROUTINE TO STOP ANY JOB FROM BEING SCHEDULED\r
+                               ;CALL:\r
+                               ;          MOVE ITEM, JOB NUMBER\r
+                               ;          PUSHJ PDP, STOP1\r
+                               ;          EXIT     ;RETURN HERE IMMEDIATELY, IF CALLED FROM HIGHER\r
+                               ;PRIORITY CHANNEL THAN CLOCK, OTHERWISE RETURN WHEN JOB IC RUNABLE\r
+                               ;CALLED WHEN CONTROL C TYPED OR ON ERROR MESSAGES\r
+\r
+       000070' 205040  200000  STOP1:     MOVSI TAC, RUN\r
+       000071' 700600  000400             CONO PI, PIOFF       ;DONE AT INTERUPT LEVEL HIGHER THAN DT\r
+       000072' 616044  000035*            TDNN TAC, JBTSTS(ITEM)               ;IS RUN BIT ON IN JOB STATUS\r
+       000073' 254000  000104'            JRST STOPA           ;NO\r
+       000074' 413044  000072*            ANDCAB TAC, JBTSTS(ITEM)             ;YES, SO CLEAR IT\r
+       000075' 700600  000200             CONO PI, PION\r
+       000076' 603040  040000             TLNE TAC, DTW        ;WAITING TO USE DECTAPE\r
+       000077' 370000  000000*            SOS DTREQ ;YES, REDUCE REQUEST COUNT\r
+       000100' 603040  020000             TLNE TAC, DCW        ;DATA CONTROL\r
+       000101' 370000  000000*            SOS DCREQ\r
+       000102' 603040  010000             TLNE TAC,MTW         ;MAG TAPE\r
+       000103' 370000  000000*            SOS MTREQ\r
+       000104' 700600  000200  STOPA:     CONO PI, PION        ;MAKE SURE PI ON\r
+       000105' 332000  000000*            SKIPE SCHEDF         ;IS CLOCK IN THE MIDDLE OF SCHEDULING\r
+       000106' 254000  000111'            JRST STOP2           ;YES, MAKE SURE THIS JOB WONT RUN\r
+       000107' 312200  000067*            CAME ITEM, JOB       ;NO, IS THIS JOB CURRENT USER\r
+       000110' 263140  000000             POPJ PDP,            ;NO\r
+                                                               ;YES, MAKE CLOCK RESCHEDULE\r
+\r
+                               ;ROUTINE TO CAUSE CLOCK TO RESCHEDULE\r
+                               ;CALL :\r
+                               ;          PUSHJ PDP, STOP2\r
+                               ;          EXIT         ;RETURN WHEN JOB RUNABLE AGAIN\r
+\r
+                               EXTERNAL PICLK\r
+\r
+       000111' 700600  000400  STOP2:     CONO PI, PIOFF       ;PREVENT CLOCK INTERRUPT\r
+\r
+\fRUNCSS - RUN CONTROL SUBROUTINES      MACRO 10 05:51 24-APR-78 PAGE 5-1\r
+RUNCSS MAC     24-APR-78 01:40         T. HASTINGS   8-16-65\r
+\r
+       000112' 476000  000000*            SETOM STOPU          ;SET FLAG FOR CLOCK ROUTINE\r
+       000113' 700600  000000*            CONO PI,PICLK        ;REQUEST CLOCK INTERRUPT AND TURN PI ON\r
+                                                               ;CLOCK WILL TRAP IMMEDIATELY IF AT UUO\r
+       000114' 263140  000000             POPJ PDP,            ;RETURN HERE WHEN JOB RUNABLE AGAIN\r
+\r
+\fRUNCSS - RUN CONTROL SUBROUTINES      MACRO 10 05:51 24-APR-78 PAGE 6\r
+RUNCSS MAC     24-APR-78 01:40         T. HASTINGS   8-16-65\r
+\r
+\r
+\r
+                               ;SUBROUTINE TO SETUP A MONITOR JOB TO BE RUN\r
+                               ;JOB MUST HAVE CORE ASSIGNED\r
+                               ;CALL:    MOVE ITEM, JOB NUMBER\r
+                               ;         HRRI TAC1, ADDRESS OF MONITOR JOB(A SUBROUTINE)\r
+                               ;         HRLI TAC1, RETURN ADDRESS WHEN JOB FINISHED\r
+                               ;         PUSHJ PDP, MONJOB\r
+                               ;         RETURN IMMEDIATELY IF CALLED FROM CLOCK LEV OR HIGHER\r
+\r
+                               ;ALL ACS WILL BE SAVED FOR THE MONITOR JOB\r
+\r
+                               INTERNAL MONJOB\r
+                               EXTERNAL JOBDAC,JOBDHI,JOBPDP,MJOBPD,JOBPDL,JBTADR\r
+\r
+       000115' 261140  000002  MONJOB:   PUSH PDP, TAC1        ;SAVE ARG.\r
+       000116' 550444  000000*           HRRZ JDAT,JBTADR(ITEM)        ;ADDRESS OF JOBS DATA AREA\r
+       000117' 201111  000000*           MOVEI TAC1, JOBDAC(JDAT)      ;SAVE 0-17 IN DUMP ACS\r
+       000120' 251111  000000*           BLT TAC1, JOBDHI(JDAT)        ;IN JOB DATA AREA\r
+       000121' 205100  000000*           MOVSI TAC1,MJOBPD     ;SET UP PD LIST IN JOB DATA AREA\r
+       000122' 541111  000000*           HRRI TAC1, JOBPDL(JDAT)\r
+       000123' 514043  000000            HlrZ TAC, (PDP)       ;WITH RETURN AS FIRST ITEM\r
+       000124' 261100  000001            PUSH TAC1, TAC\r
+       000125' 201051  000117*           MOVEI TAC, JOBDAC(JDAT)\r
+       000126' 202101  000003            MOVEM TAC1,PDP(TAC)\r
+       000127' 262140  000002            POP PDP, TAC1         ;SET TO RUN\r
+       000130' 405100  777777            ANDI TAC1, 777777     ;FALL INTO STARTU\r
+\r
+                               ;ROUTINE TO START A JOB AND LEAVE CONSOLE IN COMMAND MODE\r
+                               ;CALL:    MOVE TAC1, START PC\r
+                               ;         MOVE ITEM, JOB NUMBER\r
+                               ;         PUSHJ PDP, STARTU\r
+                               ;         RETURN IMMEDIATELY\r
+                               INTERNAL STARTM\r
+                               EXTERNAL TTYURC\r
+\r
+       000131' 260140  000137' STARTM:   PUSHJ PDP, START1\r
+       000132' 254000  000000*           JRST TTYURC\r
+\r
+                               ;START WITH TTY IN USER MODE\r
+\r
+                               INTERNAL STARTU\r
+                               EXTERNAL TTYSET\r
+\r
+       000133' 260140  000137' STARTU:   PUSHJ PDP,START1\r
+       000134' 254000  000000*           JRST TTYSET           ;SET SCANNER TO CALL SETRUN WHEN\r
+                                                               ;CR-LF AND INITIALIZE TTY\r
+\r
+                               INTERNAL CONTM\r
+                               EXTERNAL TTYURC\r
+\r
+       000135' 254000  000132* CONTM:    JRST TTYURC\r
+\r
+\r
+\fRUNCSS - RUN CONTROL SUBROUTINES      MACRO 10 05:51 24-APR-78 PAGE 6-1\r
+RUNCSS MAC     24-APR-78 01:40         T. HASTINGS   8-16-65\r
+\r
+                               ;ROUTINE TO CONTINUE A JOB FROM COMMAND MODE\r
+                               ;CALL:    MOVE ITEM, JOB NUMBER\r
+                               ;         PUSHJ PDP, CONTU\r
+                               ;         RETURN IMMEDIATELY\r
+                               INTERNAL CONTU\r
+                               EXTERNAL TTYURC\r
+\r
+       000136' 254000  000135* CONTU:    JRST TTYURC           ;SET SCANNER TO CALL SETRUN WHEN CR-LF\r
+\r
+\fRUNCSS - RUN CONTROL SUBROUTINES      MACRO 10 05:51 24-APR-78 PAGE 7\r
+RUNCSS MAC     24-APR-78 01:40         T. HASTINGS   8-16-65\r
+\r
+\r
+\r
+                               ;ROUTINE TO SET JOB STATE TO BE SCHEDULED TO RUN\r
+                               ;WITH SPECIFIED STARTING ADDRESS INCLUDING PC FLAGS\r
+                               ;CALL:    MOVE TAC1,STARTING PC\r
+                               ;         MOVE ITEM, JOB NUMBER\r
+                               ;         MOVE JDAT, ADDRESS OF JOBS DATA AREA(THERE MUST BE ONE)\r
+                               ;         PUSHJ PDP, START1\r
+                                         ;         EXIT        RETURN HERE IMMEDIATELY\r
+\r
+       000137' 200051  000000* START1:   MOVE TAC,JOBPC(JDAT)          ;GET OLD PC\r
+       000140' 202111  000137*           MOVEM TAC1,JOBPC(JDAT)        ;STORE NEW PC\r
+       000141' 603100  010000            TLNE TAC1,USRMOD              ;IS NEW PC IN USER AREA?\r
+       000142' 603040  010000            TLNE TAC,USRMOD               ;YES, WAS OLD PC IN USER AREA\r
+       000143' 254000  000147'           JRST START2                   ;YES,DUMP ACS ARE HIS\r
+       000144' 205111  000000            MOVSI TAC1,(JDAT)             ;NO, UUO ACS ARE HIS\r
+       000145' 541111  000125*           HRRI TAC1,JOBDAC(JDAT)        ;MOVE THEM TO DUMP ACS\r
+       000146' 251111  000120*           BLT TAC1,JOBDHI(JDAT)\r
+       000147' 205100  172000  START2:   MOVSI TAC1,JERR+DCW+DTW+MTW+JIOW      ;CLEAR WAIT BITS\r
+       000150' 412044  000074*           ANDCAM TAC, JBTSTS(ITEM)      ;IN JOB STATUS WORD\r
+\r
+                               ;ROUTINE TO CONTINUE ANY JOB AT CURRENT PC\r
+                               ;CALL:\r
+                               ;         MOVE ITEM, JOB NUMBER\r
+                               ;         PUSHJ PDP, CONT1\r
+                               ;         EXIT      RETURN IMMEDIATELY\r
+\r
+       000151' 263140  000000  CONT1:    POPJ PDP,\r
+\r
+\fRUNCSS - RUN CONTROL SUBROUTINES      MACRO 10 05:51 24-APR-78 PAGE 8\r
+RUNCSS MAC     24-APR-78 01:40         T. HASTINGS   8-16-65\r
+\r
+\r
+\r
+                               ;ROUTINE TO SET JOB STATUS RUN BIT\r
+                               ;CALL:    MOVE ITEM,JOB NUMBER\r
+                               ;         PUSHJ PDP,SETRUN\r
+\r
+                                         INTERNAL SETRUN\r
+       000152' 205040  200000  SETRUN:   MOVSI TAC,RUN\r
+       000153' 437044  000150*           IORB TAC,JBTSTS(ITEM)\r
+       000154' 607040  020000            TLNN TAC,DCW          ;IS JOB WAITING FOR DATA CONTROL?\r
+       000155' 254000  000160'           JRST CONT2            ;NO\r
+       000156' 357000  000101*           AOSG DCREQ            ;YES, INCREMENT REQUEST COUNT\r
+       000157' 476000  000000*           SETOM DCAVAL          ;AND SET DC AS AVAIL IF NOT IN USE\r
+       000160' 607040  040000  CONT2:    TLNN TAC,DTW          ;DECTAPE?\r
+       000161' 254000  000164'           JRST CONT3            ;NO\r
+       000162' 357000  000077*           AOSG DTREQ\r
+       000163' 476000  000000*           SETOM DTAVAL\r
+       000164' 607040  010000  CONT3:    TLNN TAC,MTW          ;MAG TAPE?\r
+       000165' 254000  000170'           JRST CONT4\r
+       000166' 357000  000103*           AOSG MTREQ\r
+       000167' 476000  000000*           SETOM MTAVAL\r
+       000170' 603040  400000  CONT4:    TLNE TAC,IOWS         ;IO WAIT SATISFIED?\r
+       000171' 350000  000000*           AOS IOCOMP            ;YES\r
+       000172' 201040  000000*           MOVEI TAC,QUANT1      ;SET TIME TO RUN FOR STRAIGHT QUEUE COM\r
+       000173' 542044  000153*           HRRM TAC,JBTSTS(ITEM)         ;RESPONSE IS FINISHED\r
+       000174' 332000  000107*           SKIPE JOB ;IS NULL JOB RUNNING?\r
+       000175' 263140  000000            POPJ PDP,             ;NO\r
+       000176' 254000  000111'           JRST STOP2                    ;YES, RESCHEDULE\r
+\r
+\fRUNCSS - RUN CONTROL SUBROUTINES      MACRO 10 05:51 24-APR-78 PAGE 9\r
+RUNCSS MAC     24-APR-78 01:40         T. HASTINGS   8-16-65\r
+\r
+\r
+\r
+                               ,ROUTINE TO INIATE A WAIT FOR MAG TAPE. DECTAPE, AND DATA CONTROL AC\r
+                                         INTERNAL MTWAIT\r
+       000177' 261140  000002  MTWAIT:   PUSH PDP,TAC1\r
+       000200' 515100  010000            HRLZI TAC1,MTW\r
+       000201' 261140  000001  DVWAIT:   PUSH PDP, TAC\r
+       000202' 200040  000174*           MOVE TAC,JOB\r
+       000203' 436101  000173*           IORM TAC1,JBTSTS(TAC)\r
+       000204' 260140  000111'           PUSHJ PDP,STOP2\r
+       000205' 262140  000001            POP PDP,TAC\r
+       000206' 262140  000002            POP PDP,TAC1\r
+       000207' 263140  000000            POPJ PDP,\r
+                                         INTERNAL DTWAIT\r
+       000210' 261140  000002  DTWAIT:   PUSH PDP,TAC1\r
+       000211' 515100  040000            HRLZI TAC1,DTW\r
+       000212' 254000  000201'           JRST DVWAIT\r
+                                         INTERNAL DCWAIT\r
+       000213' 261140  000002  DCWAIT:   PUSH PDP,TAC1\r
+       000214' 515100  020000            HRLZI TAC1,DCW\r
+       000215' 254000  000201'           JRST DVWAIT\r
+                                         INTERNAL DVWAIT\r
+\r
+\fRUNCSS - RUN CONTROL SUBROUTINES      MACRO 10 05:51 24-APR-78 PAGE 10\r
+RUNCSS MAC     24-APR-78 01:40         T. HASTINGS   8-16-65\r
+\r
+\r
+\r
+\r
+                               ,DEC 06 00 EX JOB L PT PRE 02 SETIOD\r
+                               ,H.R. MORSE    64-12-26\r
+                               ,CALLING SEQUENCE\r
+                               ,     PUSHJ PDP, SETIOD\r
+                               ,     EXIT              ALWAYS RETURNS HERE\r
+                               ,SETS THEBIT (IOWS:=1) IN THE JOB STATUS WORD (JBTSTS)\r
+                               ,INFORMING THE SYSTEM THAT AN I/O WAIT HAS BEEN COMPLETED\r
+                               ,AND THE JOB IS READY TO RUN AGAIN.\r
+                               ,MONITOR INTERFACE\r
+                               ,     STORAGE: 6\r
+                               ,     SYMBOLS SET/USED:\r
+                               ,          ACCUMULATORS:   DEVDAT U      TAC S/U\r
+                               ,                          PDP U         TAC1 S/U\r
+                               ,          DEVICE DATA BLOCK: DEVCHR U\r
+                               ,          SYSTEM DATA STORAGE: JBTSTS S/U\r
+                               ,          JOB STATUS WORD:    IOWS S\r
+                                         INTERNAL SETIOD\r
+\r
+       000216' 350000  000171* SETIOD:   AOS IOCOMP\r
+       000217' 135040  000000*           LDB TAC,PJOBN\r
+       000220' 205100  400000            MOVSI TAC1, IOWS      ;SET IO-WAIT SATISFIED BIT\r
+       000221' 436101  000203*           IORM TAC1, JBTSTS(TAC)\r
+       000222' 205100  100000            MOVSI TAC1, JIOW              ;CLEAR JOB IO-WAIT BIT\r
+       000223' 412101  000221*           ANDCAM TAC1, JBTSTS(TAC)\r
+       000224' 336000  000202*           SKIPN JOB             ;IS NULL JOB RUNNING\r
+       000225' 254000  000111'           JRST STOP2                    ;YES, FORCE CLOCK TO RE-SCHED\r
+       000226' 263140  000000            POPJ PDP,;                        RETURN\r
+\r
+\fRUNCSS - RUN CONTROL SUBROUTINES      MACRO 10 05:51 24-APR-78 PAGE 11\r
+RUNCSS MAC     24-APR-78 01:40         T. HASTINGS   8-16-65\r
+\r
+\r
+\r
+\r
+                               ;SET CURRENT JOB AREA IN SYSTEM AREA\r
+\r
+                                         INTERNAL SETUSR\r
+\r
+       000227' 541040  000000* SETUSR:   HRRI TAC,USRLO1\r
+       000230' 505040  000000*           HRLI TAC,USRLO\r
+       000231' 402000  000230*           SETZM USRLO\r
+       000232' 251040  000000*           BLT TAC,USRHI\r
+       000233' 205040  000121*           MOVSI TAC,MJOBPD\r
+       000234' 541040  000122*           HRRI TAC,JOBPDL\r
+       000235' 202040  000000*           MOVEM TAC,USRPDP\r
+       000236' 200440  000000*           MOVE JDAT,JOBDAT\r
+       000237' 544051  000046*           HLR TAC,JOBSA(JDAT)\r
+       000240' 542051  000000*           HRRM TAC,JOBFF(JDAT)\r
+       000241' 263140  000000            POPJ PDP,\r
+\r
+\fRUNCSS - RUN CONTROL SUBROUTINES      MACRO 10 05:51 24-APR-78 PAGE 12\r
+RUNCSS MAC     24-APR-78 01:40         T. HASTINGS   8-16-65\r
+\r
+\r
+\r
+                               ,DEC 06 00 EX COM L PT PRE 02 WAIT1,WSYNC\r
+                               ,H.R. MORSE   64-12-26\r
+                               ,CALLING SEQUENCE\r
+                               ,     PUSHJ PDP, WAIT1\r
+                               ,     EXIT              ALWAYS RETURNS HERE\r
+\r
+                               ,IF THE DEVICE IS INACTIVE (IOACT=0), RETURNS TO EXIT. OTHERWISE, SET\r
+                               ,IOW:=1 AND ENTERS WAIT UNLESS IOACT BECOMES ZERO BEFORE THE\r
+                               ,JUMP IS MADE, IN WHICH CHASEIT SETS IOW:=0 AND RETURNS TO EXIT.\r
+                               ,ON LEAVING THE WAIT STAT, RETURNS TO EXIT.\r
+                               ,THIS ROUTINE PREVENTS THE STATE IOACT=0 AND IOW=1 FROM OCCURING\r
+                               ,CALLING SEQUENCE\r
+                               ,     PUSHJ PDP, WSYNC\r
+                               ,     EXIT              ALWAYS RETURNS HERE\r
+                               ,SETS IOW:=1 AND ENTERS WAIT ROUTINE. RETURNS TO EXIT WHEN IOACT=0.\r
+                               ,MONITOR INTERFACE\r
+                               ,     STORAGE:          13\r
+                               ,     ROUTINES CALLED:  WAIT\r
+                               ,     SYMBOLS SET/USED: \r
+                               ,        ACCUMULATORS:     DEVDAT U     PDP U\r
+                               ,                          IOS S/U      TAC S/U\r
+                               ,     DEVICE DATA BLOCK:   DEVIOS S/U\r
+                               ,     IO STATUS WORD:      IOACT U\r
+                               ,                          IOW S/U\r
+\r
+\fRUNCSS - RUN CONTROL SUBROUTINES      MACRO 10 05:51 24-APR-78 PAGE 13\r
+RUNCSS MAC     24-APR-78 01:40         T. HASTINGS   8-16-65\r
+\r
+\r
+\r
+                                         INTERN WAIT1, WSYNC\r
+\r
+                               ; WAIT1 WAITS UNTIL DEVICE IS COMPLETELY INACTIVE BEFORE RETURNING\r
+       000242' 200006  000002  WAIT1:    MOVE IOS,DEVIOS(DEVDAT)\r
+       000243' 606000  010000            TRNN IOS, IOACT               ;IS DEVICE ACTIVE? (IOACT=1?)\r
+       000244' 263140  000000            POPJ PDP,;                    RETURN\r
+       000245' 260140  000247'           PUSHJ PDP,WSYNC;              WAIT\r
+       000246' 254000  000242'           JRST WAIT1\r
+\r
+                               ;WSYNC IS CALLED TO WAIT UNTIL SETIOD IS CALLED BY INTERRUPT SERVICE\r
+                               ;IE  UNTIL CURRENT BUFFER ACTIVITY IS COMPLETED\r
+                               ;DEVDAT MUST BE SET UP\r
+\r
+                       000200  PION=200\r
+                       000400  PIOFF=400\r
+\r
+                               WSYNC:    REPEAT 0,< PUSH PDP, TAC      ;MUST THESE BE SAVED?\r
+                                PUSH PDP, TAC1\r
+                                PUSH PDP, DAT>\r
+       \r
+       000247' 205000  000001            MOVSI IOS, IOW\r
+       000250' 205640  100000            MOVSI AC1, JIOW\r
+       000251' 200700  000224*           MOVE AC2, JOB\r
+       000252' 201740  010000            MOVEI AC3, IOACT\r
+       000253' 700600  000400            CONO PI, PIOFF                ;TURN PI OFF\r
+       000254' 616746  000002            TDNN AC3, DEVIOS(DEVDAT)      ;IS THE DEVICE ACTIVE?\r
+       000255' 254000  000262'           JRST WSYNC1                   ;NO\r
+       000256' 436006  000002            IORM IOS, DEVIOS(DEVDAT)      ;YES, SET DEVICE IO-WAIT BIT\r
+       000257' 436656  000223*           IORM AC1, JBTSTS(AC2)         ;AND JOB IO-WAIT BIT\r
+       000260' 700600  000200            CONO PI, PION                 ;TURN PI ON\r
+       000261' 260140  000111'           PUSHJ PDP, STOP2              ;STOP THIS USER BY FORCING CL\r
+                                                               ;RETURN WHEN IO-WAIT FINISHED\r
+       000262' 700600  000200  WSYNC1:   CONO PI, PION\r
+       000263' 413006  000002            ANDCAB IOS, DEVIOS(DEVDAT)    ;CLEAR DEVICE IO-WAIT BIT\r
+                               REPEAT 0,< POP PDP, DAT\r
+                                POP PDP, TAC1\r
+                                POP PDP, TAC>\r
+\r
+       000264' 263140  000000            POPJ PDP,\r
+\r
+                                         END,\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 000267\r
+\r
+9K CORE USED\r
+\r
+\fRUNCSS - RUN CONTROL SUBROUTINES      MACRO 10 05:51 24-APR-78 PAGE 14\r
+RUNCSS MAC     24-APR-78 01:40         SYMBOL TABLE\r
+\r
+A              000000  INT\r
+AC1            000015  INT\r
+AC2            000016  INT\r
+AC3            000017  INT\r
+AL             000001  INT\r
+APRCHL         000000  EXT\r
+APRCHN         000000  EXT\r
+ASSCON         400000  INT\r
+ASSPRG         200000  INT\r
+B              000014  INT\r
+BUFPNT         000012  INT\r
+BUFWRD         000013  INT\r
+CH1XIT         000021' EXT\r
+CH2XIT         000022' EXT\r
+CH3XIT         000023' EXT\r
+CH4XIT         000024' EXT\r
+CH5XIT         000025' EXT\r
+CH6SAC         000000  EXT\r
+CH6XIT         000026' EXT\r
+CH7XIT         000027' EXT\r
+CHNTAB         000020' \r
+CLOSB          002000  INT\r
+CLSIN          000002  INT\r
+CLSOUT         000001  INT\r
+CONT1          000151' INT\r
+CONT2          000160' \r
+CONT3          000164' \r
+CONT4          000170' \r
+CONTM          000135' INT\r
+CONTU          000136' INT\r
+CRLF           000032' EXT\r
+D              000017  INT\r
+DAT            000005  INT\r
+DCAVAL         000157' EXT\r
+DCL            000001  INT\r
+DCREQ          000156' EXT\r
+DCW            020000  INT\r
+DCWAIT         000213' INT\r
+DDI            000007  INT\r
+DDO            000006  INT\r
+DDTMEM         000037  INT\r
+DDTSYM         000036  INT\r
+DEN            000004  INT\r
+DEVADR         000007  INT\r
+DEVBUF         000006  INT\r
+DEVCHR         000001  INT\r
+DEVCTR         000011  INT\r
+DEVDAT         000006  INT\r
+DEVIAD         000007  INT\r
+DEVIOS         000002  INT\r
+DEVLOG         000005  INT\r
+DEVMOD         000004  INT\r
+\r
+\r
+\fRUNCSS - RUN CONTROL SUBROUTINES      MACRO 10 05:51 24-APR-78 PAGE 14-1\r
+RUNCSS MAC     24-APR-78 01:40         SYMBOL TABLE\r
+\r
+DEVNAM         000000  INT\r
+DEVOAD         000010  INT\r
+DEVPTR         000010  INT\r
+DEVSER         000003  INT\r
+DGF            000012  INT\r
+DIN            000003  INT\r
+DLK            000005  INT\r
+DOU            000002  INT\r
+DR             000016  INT\r
+DRL            000000  INT\r
+DSI            000011  INT\r
+DSO            000010  INT\r
+DTAVAL         000163' EXT\r
+DTREQ          000162' EXT\r
+DTW            040000  INT\r
+DTWAIT         000210' INT\r
+DVAVAL         000040  INT\r
+DVCDR          100000  INT\r
+DVDIR          000004  INT\r
+DVDIRI         400000  INT\r
+DVIN           000002  INT\r
+DVLPT          040000  INT\r
+DVMTA          000020  INT\r
+DVOUT          000001  INT\r
+DVTTY          000010  INT\r
+DVWAIT         000201' INT\r
+ENTRB          020000  INT\r
+ESTOP          000034' INT\r
+EXIT           000000' INT\r
+EXMESS         000005' \r
+HOLD           000030' INT\r
+HOLDI          000012' INT\r
+HOLDI1         000014' INT\r
+HOLDSB         000032' \r
+I              000010  INT\r
+IB             000013  INT\r
+IBUFB          200000  INT\r
+INITB          400000  INT\r
+INPB           010000  INT\r
+IO             000020  INT\r
+IOACT          010000  INT\r
+IOBEG          000002  INT\r
+IOBKTL         040000  INT\r
+IOCOMP         000216' EXT\r
+IOCON          000040  INT\r
+IODEND         020000  INT\r
+IODERR         200000  INT\r
+IODISC         400000  INT\r
+IODONE         400000  INT\r
+IODTER         100000  INT\r
+IOEND          000040  INT\r
+IOFST          000004  INT\r
+IOIMPM         400000  INT\r
+\r
+\fRUNCSS - RUN CONTROL SUBROUTINES      MACRO 10 05:51 24-APR-78 PAGE 14-2\r
+RUNCSS MAC     24-APR-78 01:40         SYMBOL TABLE\r
+\r
+IOKILL         000007' EXT\r
+IONRCK         000100  INT\r
+IORDEL         000100  INT\r
+IORELS         000037' EXT\r
+IORET          000020  INT\r
+IOS            000000  INT\r
+IOSTRT         000010  INT\r
+IOUSE          400000  INT\r
+IOW            000001  INT\r
+IOWC           000020  INT\r
+IOWS           400000  INT\r
+ITEM           000004  INT\r
+JBFADR         000000  INT\r
+JBFCTR         000002  INT\r
+JBFPTR         000001  INT\r
+JBTADR         000116' EXT\r
+JBTSTS         000257' EXT\r
+JBUF           000005  INT\r
+JDAT           000011  INT\r
+JERR           002000  INT\r
+JIOW           100000  INT\r
+JNA            004000  INT\r
+JOB            000251' EXT\r
+JOBAC          000000  EXT\r
+JOBADR         000000  EXT\r
+JOBCDP         000000  EXT\r
+JOBDAC         000145' EXT\r
+JOBDAT         000236' EXT\r
+JOBDDT         000055' EXT\r
+JOBDHI         000146' EXT\r
+JOBFF          000240' EXT\r
+JOBN           000000  EXT\r
+JOBPC          000140' EXT\r
+JOBPDL         000234' EXT\r
+JOBPDP         000000  EXT\r
+JOBREL         000000  EXT\r
+JOBSA          000237' EXT\r
+JOBSYM         000044' EXT\r
+LDRBLT         000037' INT\r
+LDRMES         000063' \r
+LOOKB          040000  INT\r
+MESPNT         000061' EXT\r
+MJOBPD         000233' EXT\r
+MONJOB         000115' INT\r
+MTAVAL         000167' EXT\r
+MTREQ          000166' EXT\r
+MTW            010000  INT\r
+MTWAIT         000177' INT\r
+OBUFB          100000  INT\r
+OUTPB          004000  INT\r
+PDP            000003  INT\r
+PGADR          000002  \r
+PI             000004  SPD\r
+\r
+\fRUNCSS - RUN CONTROL SUBROUTINES      MACRO 10 05:51 24-APR-78 PAGE 14-3\r
+RUNCSS MAC     24-APR-78 01:40         SYMBOL TABLE\r
+\r
+PICHN          000100  INT\r
+PICLK          000113' EXT\r
+PIOFF          000400  \r
+PION           000200  \r
+PJOBN          000217' EXT\r
+PROG           000007  INT\r
+QUANT1         000172' EXT\r
+RESET          000007' INT\r
+RSCHED         000020' EXT\r
+RUN            200000  INT\r
+RUNABL         204000  INT\r
+SCHEDF         000105' EXT\r
+SETIOD         000216' INT\r
+SETRUN         000152' INT\r
+SETUSR         000227' INT\r
+START1         000137' INT\r
+START2         000147' \r
+STARTM         000131' INT\r
+STARTU         000133' INT\r
+STOP0          000067' INT\r
+STOP1          000070' INT\r
+STOP2          000111' INT\r
+STOPA          000104' \r
+STOPU          000112' EXT\r
+TAC            000001  INT\r
+TAC1           000002  INT\r
+TEM            000010  INT\r
+TTYATC         020000  INT\r
+TTYFNU         000057' EXT\r
+TTYSET         000134' EXT\r
+TTYSTR         000033' EXT\r
+TTYURC         000136' EXT\r
+TTYUSE         010000  INT\r
+USRDDT         000000  EXT\r
+USRHI          000232' EXT\r
+USRLO          000231' EXT\r
+USRLO1         000227' EXT\r
+USRMOD         010000  INT\r
+USRPDP         000235' EXT\r
+USRREL         000050' EXT\r
+UUO            000014  INT\r
+UXIT           000011' EXT\r
+WAIT1          000242' INT\r
+WSYNC          000247' INT\r
+WSYNC1         000262' \r
+\f   SSSSSSSSSSSS         AAAAAAAAA         VVV         VVV         GGGGGGGGGGGG      EEEEEEEEEEEEEEE      TTTTTTTTTTTTTTT\r
+   SSSSSSSSSSSS         AAAAAAAAA         VVV         VVV         GGGGGGGGGGGG      EEEEEEEEEEEEEEE      TTTTTTTTTTTTTTT\r
+   SSSSSSSSSSSS         AAAAAAAAA         VVV         VVV         GGGGGGGGGGGG      EEEEEEEEEEEEEEE      TTTTTTTTTTTTTTT\r
+SSS                  AAA         AAA      VVV         VVV      GGG                  EEE                        TTT      \r
+SSS                  AAA         AAA      VVV         VVV      GGG                  EEE                        TTT      \r
+SSS                  AAA         AAA      VVV         VVV      GGG                  EEE                        TTT      \r
+SSS                  AAA         AAA      VVV         VVV      GGG                  EEE                        TTT      \r
+SSS                  AAA         AAA      VVV         VVV      GGG                  EEE                        TTT      \r
+SSS                  AAA         AAA      VVV         VVV      GGG                  EEE                        TTT      \r
+   SSSSSSSSS         AAA         AAA      VVV         VVV      GGG                  EEEEEEEEEEEE               TTT      \r
+   SSSSSSSSS         AAA         AAA      VVV         VVV      GGG                  EEEEEEEEEEEE               TTT      \r
+   SSSSSSSSS         AAA         AAA      VVV         VVV      GGG                  EEEEEEEEEEEE               TTT      \r
+            SSS      AAAAAAAAAAAAAAA      VVV         VVV      GGG   GGGGGGGGG      EEE                        TTT      \r
+            SSS      AAAAAAAAAAAAAAA      VVV         VVV      GGG   GGGGGGGGG      EEE                        TTT      \r
+            SSS      AAAAAAAAAAAAAAA      VVV         VVV      GGG   GGGGGGGGG      EEE                        TTT      \r
+            SSS      AAA         AAA         VVV   VVV         GGG         GGG      EEE                        TTT      \r
+            SSS      AAA         AAA         VVV   VVV         GGG         GGG      EEE                        TTT      \r
+            SSS      AAA         AAA         VVV   VVV         GGG         GGG      EEE                        TTT      \r
+SSSSSSSSSSSS         AAA         AAA            VVV               GGGGGGGGG         EEEEEEEEEEEEEEE            TTT      \r
+SSSSSSSSSSSS         AAA         AAA            VVV               GGGGGGGGG         EEEEEEEEEEEEEEE            TTT      \r
+SSSSSSSSSSSS         AAA         AAA            VVV               GGGGGGGGG         EEEEEEEEEEEEEEE            TTT      \r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  05:53:58\r
+File: DSKB0 :SAVGET.LST   [8,296] Created: 20-April-1967 05:51:00 Printed: 24-April-1978 05:53:37\r
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:1646 \r
+File will be deleted after printing\r
+\f\r
+SAVGET- SAVE AND GET COMMANDS  MACRO 10 05:51 24-APR-78 PAGE 1\r
+S      MAC     24-APR-78 21:40         T.HASTINGS 8-4-64\r
+\r
+                                       XLIST\r
+                                      LIST\r
+\r
+                               TITLE SAVGET- SAVE AND GET COMMANDS\r
+                               SUBTTL T.HASTINGS 8-4-64\r
+                               ;ROUTINE TO SET UP SAVE-GET DEVICE FILE-NAME TABLE\r
+                               ;CALLED BY COMMAND SETUP ROUTINES AND SAVE GET\r
+\r
+                               INTERNAL SGSET\r
+                               EXTERNAL CTEXT1,SETUSR,HOLD,MONJOB\r
+                               EXTERNAL CONMES,NOTENF,CPOPJ1\r
+\r
+       000000' 261140  000002  SGSET:    PUSH PDP, TAC1        ;SAVE STARTTING ADDRESS(SAVJOB OR GETJOB)\r
+       000001' 260140  000000*           PUSHJ PDP, CTEXT1     ;GET DEVICE NAME FROM COMMAND STRING\r
+       000002' 322100  000012'           JUMPE TAC1,SGSET1\r
+       000003' 202107  000017            MOVEM TAC1, 17(PROG)          ;SAVE IN UUO AC AREA\r
+       000004' 260140  000001*           PUSHJ PDP, CTEXT1     ;GET FILE NAME FROM COMMAND STRING\r
+       000005' 322100  000012'           JUMPE TAC1,SGSET1\r
+       000006' 202107  000014            MOVEM TAC1, 14(PROG)\r
+       000007' 262140  000002            POP PDP, TAC1         ;SCHEDULE MONITOR JOB\r
+       000010' 260140  000000*           PUSHJ PDP, MONJOB\r
+       000011' 254000  000000*           JRST CPOPJ1           ;SUPPRESS CR-LF PRINTED BY COMINI\r
+\r
+       000012' 262140  000002  SGSET1:   POP PDP,TAC1\r
+       000013' 254000  000000*           JRST NOTENF\r
+\r
+\fSAVGET- SAVE AND GET COMMANDS MACRO 10 05:51 24-APR-78 PAGE 2\r
+SAVGET MAC     24-APR-78 00:32         T.HASTINGS 8-4-64\r
+\r
+\r
+\r
+                               ;THIS JOB SAVES A JOB AREA ON RETRIEVABLE STORAGE\r
+                               ;THIS JOB RUNS IN EXEC. MODE AND CALLS IO ROUTINES DIRECTLY\r
+                               ;NO ATTTEMPT IS MADE TO SAVE STATUS OF IO DEVICES, JOBPDP, OR ACS\r
+                               ;IN FACT THE ONLY USEFUL THING WHICH MAY BE DONE WITH A JOB AREA\r
+                               ;AFTER IT HAS BEEN SAVED IS TO START EXECUTION OVER AT THE STARTING \r
+                               ;ADDRESS\r
+\r
+                               INTERNAL SAVJOB\r
+                               EXTERNAL USRPDP, OUT, USRREL,JOBPFI,JOB41,JOBS41,THSDAT\r
+\r
+                       000012  T=BUFPNT   ;TEMPORARY ACS\r
+                       000013  T1=BUFWRD\r
+\r
+       000014' 265040  000076' SAVJOB:   JSP TAC,  SG1   ;SET UP ACS AND ASSIGN DEVICE\r
+       000015' 200551  000000*           MOVE T1,JOB41(JDAT) ;SAVE USR UUOI HANDLING JSR\r
+       000016' 202551  000000*           MOVEM T1,JOBS41(JDAT)\r
+       000017' 200540  000000*           MOVE T1,THSDAT      ;SET DATE IN THIRD WORD\r
+       000020' 202547  000016            MOVEM T1,16(PROG)\r
+       000021' 260152  000004            PUSHJ PDP, DEN(T)   ;ENTER FILE NAME IN DIRECTORY\r
+       000022' 254000  000031'           JRST SAV4           ;DIRECTORY FULL\r
+       000023' 260140  000134'           PUSHJ PDP, SETLST   ;SET DUMP COMMAND LIST IN USER ARE\r
+       000024' 260140  000000*           PUSHJ PDP, OUT      ;DO AN OUTPUT\r
+       000025' 265040  000054'           JSP TAC,SG2\r
+\r
+       000026' 452370  220246            ASCIZ /JOB SAVED\r
+       000027' 406550  542032\r
+       000030' 050000  000000  /\r
+       000031' 265040  000054' SAV4:     JSP TAC,SG2\r
+\r
+       000032' 422232  242606            ASCIZ /DIRECTORY FULL\r
+       000033' 522372  254500\r
+       000034' 432531  446032\r
+       000035' 050000  000000  /\r
+\r
+\fSAVGET- SAVE AND GET COMMANDS MACRO 10 05:51 24-APR-78 PAGE 3\r
+SAVGET MAC     24-APR-78 00:32         T.HASTINGS 8-4-64\r
+\r
+\r
+\r
+\r
+                               ;THIS JOB GETS A JOB AREA FROM RETRIEVABLE DEVICE\r
+                               ;THIS JOB RUNS IN EXEC. MODE AND CALLS IO ROUTINES DIRECTLY\r
+                               ;NO ATTEMPT IS MADE TO RESTORE STATUS OF IO DEVICES, PC, OR ACS\r
+                               ;JOBPC IS SET TO STARTING ADDRESS OF JOB\r
+                               ;CORE MUST ALREADY HAVE BEEN ASSIGNED AND THE FOLLOWING LOC. SETUP IN \r
+                               ;JOB DATA AREA:\r
+                               ;JOBPDP, JOBREL\r
+\r
+                               INTERNAL GETJOB\r
+                               EXTERNAL USRREL, IN\r
+\r
+       000036' 265040  000076' GETJOB:   JSP TAC, SG1  ;SETUP ACS AND ASSIGN DEVICE\r
+       000037' 260152  000005            PUSHJ PDP, DLK(T)     ;LOOKUP FILE NAME IN DIRECTORY\r
+       000040' 254000  000047'           JRST GET2             ;NOT FOUND\r
+       000041' 260140  000134'           PUSHJ PDP, SETLST     ;SET DUMP COMMAND LIST IN USER ARE\r
+       000042' 260140  000000*           PUSHJ PDP, IN         ;DO AN INPUT\r
+       000043' 265040  000054'           JSP TAC,SG2\r
+\r
+       000044' 452370  220246            ASCIZ /JOB SETUP\r
+       000045' 426512  550032\r
+       000046' 050000  000000  /\r
+\r
+       000047' 265040  000054' GET2:     JSP TAC,SG2\r
+\r
+       000050' 432231  442500            ASCIZ /FILE NOT FOUND\r
+       000051' 472372  420214\r
+       000052' 476531  642032\r
+       000053' 050000  000000  /\r
+\r
+\fSAVGET- SAVE AND GET COMMANDS MACRO 10 05:51 24-APR-78 PAGE 4\r
+SAVGET MAC     24-APR-78 00:32         T.HASTINGS 8-4-64\r
+\r
+\r
+\r
+                               ;ROUTINE TERMINATES SAVJOB AND GETJOB\r
+                               ;CLOSE, RELEASE, CHECK FOR ERRORS AND PRINT MESSAGE AND STOP JOB\r
+                               ;ADDRESS OF MESSAGE IN AC TAC\r
+\r
+                               EXTERNAL RELEA2, SETUSR, TTYFNU, WAIT1,JOBS41,JOB41\r
+\r
+                       740000  ERRORS=1B18+1B19+1B20+1B21      ;ERRORS CHECKED FOR IN IO TRANSMISSION\r
+\r
+       000054' 260140  000000* SG2:      PUSHJ PDP, WAIT1\r
+       000055' 602000  740000            TRNE IOS, ERRORS      ;ANY ERRORS?\r
+       000056' 254000  000070'           JRST SG2A             ;AN ERROR\r
+       000057' 261140  000001            PUSH PDP,TAC          ;SAVE PRINT ADDRESS\r
+       000060' 260140  000000*           PUSHJ PDP,RELEA2      ;RELEASE DEVICE\r
+       000061' 260140  000000*           PUSHJ PDP,SETUSR      ;SETUP COPY OF JOB AREA STORED IN SYSTE\r
+       000062' 200051  000016*           MOVE TAC,JOBS41(JDAT)\r
+                                         ;RESTORE USER LOCATION 41\r
+       000063' 202051  000015*           MOVEM TAC,JOB41(JDAT)\r
+       000064' 260140  000000* SG4:      PUSHJ PDP,TTYFNU      ;FIND TELETYPE\r
+       000065' 262140  000001            POP PDP,TAC           ;RESTORE PRINT MESSAGE ADDRESS\r
+       000066' 260140  000000* SG5:      PUSHJ PDP,CONMES\r
+       000067' 254000  000000*           JRST HOLD\r
+\r
+       000070' 265040  000064' SG2A:     JSP TAC,SG4\r
+\r
+       000071' 522450  147246            ASCIZ /TRANSMISSION ERROR\r
+       000072' 466232  351622\r
+       000073' 476344  042644\r
+       000074' 512372  206424  /\r
+       000075' 000000  000000\r
+\r
+\fSAVGET- SAVE AND GET COMMANDS MACRO 10 05:51 24-APR-78 PAGE 5\r
+SAVGET MAC     24-APR-78 00:32         T.HASTINGS 8-4-64\r
+\r
+\r
+\r
+                               ;ROUTINE CALED BY SAVJOB AND GETJOBTO SETUP ACS\r
+                               ;AND ASSIGN DEVICE\r
+                               ;CALL     JSP TAC, SG1\r
+\r
+                               EXTERNAL JOBDAT, JOB, UINIT1, WAIT1, JOBADR, RESET\r
+\r
+       000076' 505140  777763  SG1:      HRLI PDP, -15         ;SET UP PD LIST IN UUO ACS\r
+       000077' 541147  777777            HRRI PDP, -1(PROG)\r
+       000100' 261140  000001            PUSH PDP, TAC         ;SAVE RETURN ADDRESS\r
+       000101' 260140  000000*           PUSHJ PDP, RESET      ;DO RESET UUO\r
+       000102' 201600  000017            MOVEI UUO, D          ;DUMP MODE\r
+       000103' 200047  000017            MOVE TAC, 17(PROG)    ;DEVICE NAME\r
+       000104' 201340  000000            MOVEI PROG, 0         ;PRETEND RELOC. IS 0\r
+       000105' 260140  000000*           PUSHJ PDP, UINIT1     ;ASSIGN DEVICE\r
+       000106' 000000  000000            0                     ;IBF,OBF\r
+       000107' 254000  000124'           JRST SGERRA           ;NOT AVAILABLE\r
+       000110' 200006  000002            MOVE IOS, DEVIOS(DEVDAT)      ;SETUP IOS\r
+       000111' 201600  000014            MOVEI UUO,14          ;REL.ADDRESS OF 4 WORD DIRECTORY ENTRY\r
+       000112' 200340  000000*           MOVE PROG, JOBADR     ;RESTORE PROG\r
+       000113' 205500  445560            MOVSI T,445560        ;SET FILE EXTENSION TO DMP\r
+       000114' 202507  000015            MOVEM T, 15(PROG)\r
+       000115' 402007  000016            SETZM 16(PROG)\r
+       000116' 210540  000000*           MOVN T1,USRREL        ;SET NEG. WORD COUNT FROM JOBREL\r
+       000117' 271540  000000*           ADDI T1,JOBPFI        ;DONT DUMP LOC. 0-JOBPFI\r
+       000120' 505540  000117*           HRLI T1,JOBPFI\r
+       000121' 206547  000017            MOVSM T1,17(PROG)     ;STORE IN 4TH WORD OF DICECTORY\r
+       000122' 200506  000003            MOVE T, DEVSER(DEVDAT)        ;SETUP FOR DOING ENTRY OF LOO\r
+       000123' 263140  000000            POPJ PDP,\r
+\r
+       000124' 201040  000127' SGERRA:   MOVEI TAC,SGNAVL\r
+       000125' 261140  000001            PUSH PDP,TAC\r
+       000126' 254000  000066'           JRST SG5\r
+\r
+       000127' 422132  644606  SGNAVL:   ASCIZ /DEVICE NOT AVAILABLE\r
+       000130' 425011  647650\r
+       000131' 202032  640622\r
+       000132' 462030  246212\r
+       000133' 064240  000000  /\r
+\r
+\fSAVGET- SAVE AND GET COMMANDS MACRO 10 05:51 24-APR-78 PAGE 6\r
+SAVGET MAC     24-APR-78 00:32         T.HASTINGS 8-4-64\r
+\r
+\r
+\r
+\r
+                               ;ROUTINE TO SET DUMP MODE COMMAND LIST IN USER AREA\r
+\r
+                               EXTERNAL ANYRDX,RELEA2,TTYFNU\r
+\r
+       000134' 200507  000017  SETLST:   MOVE T, 17(PROG)      ;4TH WORD FROM DIRECTORY\r
+       000135' 202507  000016            MOVEM T, 16(PROG)\r
+       000136' 402007  000017            SETZM 17(PROG)\r
+       000137' 574500  000012            HLRE T, T\r
+       000140' 270500  000116*           ADD T, USRREL\r
+       000141' 321500  000144'           JUMPL T, NOROOM\r
+       000142' 201600  000016            MOVEI UUO,16          ;DUMP MODE\r
+       000143' 263140  000000            POPJ PDP,\r
+\r
+       000144' 260140  000060* NOROOM:   PUSHJ PDP,RELEA2\r
+       000145' 260140  000064*           PUSHJ PDP,TTYFNU\r
+       000146' 255000  000000            JFCL\r
+       000147' 574047  000016            HLRE TAC, 16(PROG)  ;PRINT NO. OF BLOCKS NEEDED\r
+       000150' 213000  000001            MOVNS TAC\r
+       000151' 242040  777766            LSH TAC, -12\r
+       000152' 271040  000001            ADDI TAC, 1\r
+       000153' 201100  000012            MOVEI TAC1, 12\r
+       000154' 260140  000000*           PUSHJ PDP, ANYRDX\r
+       000155' 265040  000066'           JSP TAC,SG5\r
+\r
+       000156' 201431  320204            ASCIZ / 1K BLOCKS OF CORE NEEDED\r
+       000157' 462370  345646\r
+       000160' 202370  620206\r
+       000161' 476450  520234\r
+       000162' 426130  442610\r
+       000163' 064240  000000  /\r
+                                         END,\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 000164\r
+\r
+9K CORE USED\r
+\r
+\fSAVGET- SAVE AND GET COMMANDS MACRO 10 05:51 24-APR-78 PAGE 7\r
+SAVGET MAC     24-APR-78 00:32         SYMBOL TABLE\r
+\r
+A              000000  INT\r
+AC1            000015  INT\r
+AC2            000016  INT\r
+AC3            000017  INT\r
+AL             000001  INT\r
+ANYRDX         000154' EXT\r
+ASSCON         400000  INT\r
+ASSPRG         200000  INT\r
+B              000014  INT\r
+BUFPNT         000012  INT\r
+BUFWRD         000013  INT\r
+CLOSB          002000  INT\r
+CLSIN          000002  INT\r
+CLSOUT         000001  INT\r
+CONMES         000066' EXT\r
+CPOPJ1         000011' EXT\r
+CTEXT1         000004' EXT\r
+D              000017  INT\r
+DAT            000005  INT\r
+DCL            000001  INT\r
+DCW            020000  INT\r
+DDI            000007  INT\r
+DDO            000006  INT\r
+DDTMEM         000037  INT\r
+DDTSYM         000036  INT\r
+DEN            000004  INT\r
+DEVADR         000007  INT\r
+DEVBUF         000006  INT\r
+DEVCHR         000001  INT\r
+DEVCTR         000011  INT\r
+DEVDAT         000006  INT\r
+DEVIAD         000007  INT\r
+DEVIOS         000002  INT\r
+DEVLOG         000005  INT\r
+DEVMOD         000004  INT\r
+DEVNAM         000000  INT\r
+DEVOAD         000010  INT\r
+DEVPTR         000010  INT\r
+DEVSER         000003  INT\r
+DGF            000012  INT\r
+DIN            000003  INT\r
+DLK            000005  INT\r
+DOU            000002  INT\r
+DR             000016  INT\r
+DRL            000000  INT\r
+DSI            000011  INT\r
+DSO            000010  INT\r
+DTW            040000  INT\r
+DVAVAL         000040  INT\r
+DVCDR          100000  INT\r
+DVDIR          000004  INT\r
+DVDIRI         400000  INT\r
+\r
+\r
+\fSAVGET- SAVE AND GET COMMANDS MACRO 10 05:51 24-APR-78 PAGE 7-1\r
+SAVGET MAC     24-APR-78 00:32         SYMBOL TABLE\r
+\r
+DVIN           000002  INT\r
+DVLPT          040000  INT\r
+DVMTA          000020  INT\r
+DVOUT          000001  INT\r
+DVTTY          000010  INT\r
+ENTRB          020000  INT\r
+ERRORS         740000  \r
+GET2           000047' \r
+GETJOB         000036' INT\r
+HOLD           000067' EXT\r
+I              000010  INT\r
+IB             000013  INT\r
+IBUFB          200000  INT\r
+IN             000042' EXT\r
+INITB          400000  INT\r
+INPB           010000  INT\r
+IO             000020  INT\r
+IOACT          010000  INT\r
+IOBEG          000002  INT\r
+IOBKTL         040000  INT\r
+IOCON          000040  INT\r
+IODEND         020000  INT\r
+IODERR         200000  INT\r
+IODISC         400000  INT\r
+IODONE         400000  INT\r
+IODTER         100000  INT\r
+IOEND          000040  INT\r
+IOFST          000004  INT\r
+IOIMPM         400000  INT\r
+IONRCK         000100  INT\r
+IORDEL         000100  INT\r
+IORET          000020  INT\r
+IOS            000000  INT\r
+IOSTRT         000010  INT\r
+IOUSE          400000  INT\r
+IOW            000001  INT\r
+IOWC           000020  INT\r
+IOWS           400000  INT\r
+ITEM           000004  INT\r
+JBFADR         000000  INT\r
+JBFCTR         000002  INT\r
+JBFPTR         000001  INT\r
+JBUF           000005  INT\r
+JDAT           000011  INT\r
+JERR           002000  INT\r
+JIOW           100000  INT\r
+JNA            004000  INT\r
+JOB            000000  EXT\r
+JOB41          000063' EXT\r
+JOBADR         000112' EXT\r
+JOBDAT         000000  EXT\r
+JOBPFI         000120' EXT\r
+JOBS41         000062' EXT\r
+\r
+\fSAVGET- SAVE AND GET COMMANDS MACRO 10 05:51 24-APR-78 PAGE 7-2\r
+SAVGET MAC     24-APR-78 00:32         SYMBOL TABLE\r
+\r
+LOOKB          040000  INT\r
+MONJOB         000010' EXT\r
+MTW            010000  INT\r
+NOROOM         000144' \r
+NOTENF         000013' EXT\r
+OBUFB          100000  INT\r
+OUT            000024' EXT\r
+OUTPB          004000  INT\r
+PDP            000003  INT\r
+PICHN          000100  INT\r
+PROG           000007  INT\r
+RELEA2         000144' EXT\r
+RESET          000101' EXT\r
+RUN            200000  INT\r
+RUNABL         204000  INT\r
+SAV4           000031' \r
+SAVJOB         000014' INT\r
+SETLST         000134' \r
+SETUSR         000061' EXT\r
+SG1            000076' \r
+SG2            000054' \r
+SG2A           000070' \r
+SG4            000064' \r
+SG5            000066' \r
+SGERRA         000124' \r
+SGNAVL         000127' \r
+SGSET          000000' INT\r
+SGSET1         000012' \r
+T              000012  \r
+T1             000013  \r
+TAC            000001  INT\r
+TAC1           000002  INT\r
+TEM            000010  INT\r
+THSDAT         000017' EXT\r
+TTYATC         020000  INT\r
+TTYFNU         000145' EXT\r
+TTYUSE         010000  INT\r
+UINIT1         000105' EXT\r
+USRMOD         010000  INT\r
+USRPDP         000000  EXT\r
+USRREL         000140' EXT\r
+UUO            000014  INT\r
+WAIT1          000054' EXT\r
+\f   SSSSSSSSSSSS         CCCCCCCCCCCC      NNN         NNN         SSSSSSSSSSSS      EEEEEEEEEEEEEEE      RRRRRRRRRRRR   \r
+   SSSSSSSSSSSS         CCCCCCCCCCCC      NNN         NNN         SSSSSSSSSSSS      EEEEEEEEEEEEEEE      RRRRRRRRRRRR   \r
+   SSSSSSSSSSSS         CCCCCCCCCCCC      NNN         NNN         SSSSSSSSSSSS      EEEEEEEEEEEEEEE      RRRRRRRRRRRR   \r
+SSS                  CCC                  NNN         NNN      SSS                  EEE                  RRR         RRR\r
+SSS                  CCC                  NNN         NNN      SSS                  EEE                  RRR         RRR\r
+SSS                  CCC                  NNN         NNN      SSS                  EEE                  RRR         RRR\r
+SSS                  CCC                  NNNNNN      NNN      SSS                  EEE                  RRR         RRR\r
+SSS                  CCC                  NNNNNN      NNN      SSS                  EEE                  RRR         RRR\r
+SSS                  CCC                  NNNNNN      NNN      SSS                  EEE                  RRR         RRR\r
+   SSSSSSSSS         CCC                  NNN   NNN   NNN         SSSSSSSSS         EEEEEEEEEEEE         RRRRRRRRRRRR   \r
+   SSSSSSSSS         CCC                  NNN   NNN   NNN         SSSSSSSSS         EEEEEEEEEEEE         RRRRRRRRRRRR   \r
+   SSSSSSSSS         CCC                  NNN   NNN   NNN         SSSSSSSSS         EEEEEEEEEEEE         RRRRRRRRRRRR   \r
+            SSS      CCC                  NNN      NNNNNN                  SSS      EEE                  RRR   RRR      \r
+            SSS      CCC                  NNN      NNNNNN                  SSS      EEE                  RRR   RRR      \r
+            SSS      CCC                  NNN      NNNNNN                  SSS      EEE                  RRR   RRR      \r
+            SSS      CCC                  NNN         NNN                  SSS      EEE                  RRR      RRR   \r
+            SSS      CCC                  NNN         NNN                  SSS      EEE                  RRR      RRR   \r
+            SSS      CCC                  NNN         NNN                  SSS      EEE                  RRR      RRR   \r
+SSSSSSSSSSSS            CCCCCCCCCCCC      NNN         NNN      SSSSSSSSSSSS         EEEEEEEEEEEEEEE      RRR         RRR\r
+SSSSSSSSSSSS            CCCCCCCCCCCC      NNN         NNN      SSSSSSSSSSSS         EEEEEEEEEEEEEEE      RRR         RRR\r
+SSSSSSSSSSSS            CCCCCCCCCCCC      NNN         NNN      SSSSSSSSSSSS         EEEEEEEEEEEEEEE      RRR         RRR\r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  05:53:58\r
+File: DSKB0 :SCNSER.LST   [8,296] Created: 20-April-1967 05:51:00 Printed: 24-April-1978 05:53:37\r
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:1637 \r
+File will be deleted after printing\r
+\f\r
+SCNSER - SCANNER SERVICE       MACRO 10 05:51 24-APR-78 PAGE 1\r
+S      MAC     24-APR-78 21:40         TOM EGGERS     8-9-65\r
+\r
+                                       XLIST\r
+                                      LIST\r
+                               TITLE SCNSER - SCANNER SERVICE\r
+                               SUBTTL TOM EGGERS     8-9-65\r
+                               EXTERN SETIOD, ADVBFE, ADVBFF, JBTADR, CLRBYT,STTYB1\r
+                               EXTERN SCNCHN, COMCNT, SCNSAV, SCNRET,STOP1, DEVLST,TTYTAB\r
+                               INTERN SCNINI\r
+\r
+                               ;TTYPTR=DEVOAD+1\r
+                               ;TTYCTR=TTYPTR+1\r
+                               ;TTYBUF=TTYCTR+1\r
+                       000200  PION=200   ;TURN PI ON BIT\r
+                       000400  PIOFF=400               ;TURN PI OFF BIT\r
+                               ;SCNDDB                 ;NUMBER OF DEVICE DATA BLOCKS\r
+                               ;STTYBF7   ;SIZE OF TELETYPE BUFFER\r
+                       000010  CHREC=TEM               ;AC FOR CHARACTER\r
+                       000004  VPOS=ITEM               ;VERITICAL POSITION OF TELETYPE\r
+                       000005  HPOS=VPOS+1             ;               HORIZONTAL POS.\r
+                       000006  DDB=DEVDAT\r
+                       000002  LINE=TAC1               ;AC THAT HOLDS SCANNER LINE NUMBER\r
+                       040000  SYNC=40000              ;1 WHEN A BUFFER IS READY TO TRANSFER\r
+                       010000  DETH=10000              ;1 IF TTY DETACHED AND OUTPUT WAITING\r
+                       020000  NIO=20000               ;STOP ALL IO\r
+                       000010  TOUT=IO                 ;OUTPUT IN PROGRESS\r
+                       040000  NCERR=IOBKTL            ;CHARACTER LOST ON TYPE IN\r
+                       000177  DCHAR=177               ;DELETE CHARACTER\r
+                       100000  ECHOF=IODTER            ;ECHO FAILURE OCCURED\r
+                       001000  TPMON=1000              ;IO IS FROM MONITOR\r
+                       002000  SP=2000                 ;SPECIAL TELETYPE CHAR. IS BEING INTERPRETED\r
+                       100000  DDTM=100000             ;DDT MODE\r
+                       004000  T35=4000   ;TELETYPE HAS TAB,FF,VT,ETC. MECHANISM\r
+                       000100  USRB=100   ;TURN OFF TPMON WHEN OUTPUT IS FINISHED      \r
+                       020000  USRBC=20000             ;RT HALF MONITOR IOS WORD. REMAIN IN MONITOR MODE\r
+                               INTERNAL SCNINT,CTYINT,TTYUSR,TTYURC\r
+                               ENTRY TTYDSP\r
+                               EXTERN TSCNLN,TCONLN,MTTYLN,CPOPJ1\r
+                               EXTERN CPOPJ\r
+                               EXTERN FSNCHN,SCNCHL,OUT,PUUOAC,PJOBN,PUNIT,PIOMOD\r
+                               INTERNAL DDTGT,DDTRL,DDTIN,DDTOUT,TTYFND,TTYSTR,TTYFNU\r
+                               EXTERNAL WAIT1,WSYNC,CLRBYT,JOB,CLDS,CLEN,TTYBFE,TTYBM1\r
+                               EXTERNAL UXIT,ADRCK,TTYSAV,DEVPHY,DEVOPR\r
+                               EXTERNAL TTYCTR,TTYPTR,TTYBUF,TTYLST,MLTTYL,SETRUN,STTYBF,TTY0DB\r
+\r
+       000000' 270706  000007  PHPOS:  POINT 7,DEVIAD(DEVDAT),12       ;POINTER HORIZONTAL POSITION\r
+       000001' 270506  000010  PVPOS:  POINT 5,DEVOAD(DEVDAT),12       ;POINTER VERITICAL POSITION\r
+       000002' 340706  000010  PLASTC: POINT 7,DEVOAD(DEVDAT),7        ;POINTER TO LAST CHARACTER OU\r
+       000003' 360606  000007  PSCHAR: POINT 6,DEVIAD(DEVDAT),5        ;POINTER TO ^C OR ^O\r
+\r
+       000004' 321102  000000* TPCJOBN:        POINT 9,TTYTAB(LINE),9  ;CONSOLE NUMBER FOR TTY\r
+\r
+\fSCNSER - SCANNER SERVICE      MACRO 10 05:51 24-APR-78 PAGE 2\r
+SCNSER MAC     24-APR-78 03:04         TOM EGGERS     8-9-65\r
+\r
+\r
+       000005' 201040  100000  SCNINI: MOVEI TAC,100000\r
+       000006' 712200  000000          CONO TTY,0              ;SHUT DOWN CONSOLE TTY\r
+       000007' 730200  004010          CONO DCSA,4010          ;RELEASE XMITTER,RECEIVER\r
+       000010' 730300  001000          CONSZ DCSA, 1000\r
+       000011' 730200  004000          CONO DCSA, 4000\r
+       000012' 730300  000010          CONSZ DCSA, 10\r
+       000013' 730440  000002          DATAI DCSB, TAC1\r
+       000014' 367040  000010'         SOJG TAC,.-4\r
+       000015' 201040  000000*         MOVEI TAC,SCNCHN\r
+       000016' 712201  003600          CONO TTY,3600(TAC)      ;CLEAR TTY, ASSIGN CHANNEL\r
+       000017' 730200  000000*         CONO DCSA,FSNCHN        ;ASSIGN INTERRUPT CHANNELS\r
+       000020' 205040  000000*         MOVSI TAC,MLTTYL        ;NO. OF TTY DEV. DATA BLOCKS\r
+       000021' 205240  010000          MOVSI DAT,TTYUSE        ;TTY DDB IN USE BIT\r
+       000022' 205000  001004          MOVSI IOS,TPMON+IOFST           ;VIRGIN STATUS\r
+       000023' 201300  000000*         MOVEI DDB,TTYLST        ;FIRST TTY DDB ADDRESS\r
+       000024' 616246  000004  SCN1:   TDNN DAT,DEVMOD(DDB)            ;IS THIS TTY DDB IN USE?\r
+       000025' 402006  000000          SETZM DEVNAM(DDB)       ;NO. SET NAME TO 0\r
+       000026' 202006  000002          MOVEM IOS,DEVIOS(DDB)\r
+       000027' 402006  000000*         SETZM TTYSAV(DDB)       ;CLEAR USER MODE TTY STATUS WORD\r
+       000030' 412246  000004          ANDCAM DAT,DEVMOD(DDB)          ;CLEAR USE BIT\r
+       000031' 554306  000003          HLRZ DDB,DEVSER(DDB)            ;GET NEXT TTY DDB\r
+       000032' 253040  000024'         AOBJN TAC,SCN1\r
+       000033' 205040  000000*         MOVSI TAC,MTTYLN        ;SET DDB USE BITS FROM TRANSLATOR TABLE\r
+       000034' 205100  010000          MOVSI TAC1,TTYUSE\r
+       000035' 332301  000004* SCN2:   SKIPE DDB,TTYTAB(TAC)\r
+       000036' 436106  000004          IORM TAC1,DEVMOD(DDB)\r
+       000037' 253040  000035'         AOBJN TAC,SCN2\r
+       000040' 263140  000000          POPJ PDP,\r
+\r
+\fSCNSER - SCANNER SERVICE      MACRO 10 05:51 24-APR-78 PAGE 3\r
+SCNSER MAC     24-APR-78 03:04         TOM EGGERS     8-9-65\r
+\r
+\r
+                               ;ROUTINE TO RETURN TTY TO VIRGIN STATE\r
+                               ;CALL:    MOVE DDB, ADDRESS OF DEVICE DATA BLOCK\r
+                               ;         PUSHJ PDP,TTYKIL\r
+\r
+                               INTERNAL TTYKIL\r
+\r
+       000041' 200040  001142' TTYKIL: MOVE TAC,[XWD TTYUSE+TTYATC,ASSCON+ASSPRG]\r
+       000042' 412046  000004          ANDCAM TAC,DEVMOD(DEVDAT)       ;CLEAR DDB USE BIT\r
+       000043' 402006  000000          SETZM DEVNAM(DEVDAT)            ;CLEAR PHYSICAL NAME\r
+       000044' 402006  000005          SETZM DEVLOG(DEVDAT)            ;CLEAR LOGICAL NAME\r
+       000045' 254000  000052'         JRST TTYDT1\r
+\r
+                               ;ROUTINE TO DETACH TTY FROM JOB\r
+                               ;CALL:    MOVE DEVDAT,ADDRESS OF TTY DDB TO BE DETACHED\r
+\r
+                               INTERNAL TTYDET\r
+\r
+       000046' 200046  000004  TTYDET: MOVE TAC,DEVMOD(DEVDAT)\r
+       000047' 627040  020000          TLZN TAC,TTYATC      ;WAS TTY ATTACHED?\r
+       000050' 254000  000041'         JRST TTYKIL          ;NO, SO RETURN DDB TO POOL\r
+       000051' 202046  000004          MOVEM TAC,DEVMOD(DEVDAT)        ;YES, JUST CLEAR ATTACH BIT\r
+       000052' 135100  000000* TTYDT1: LDB LINE,PUNIT\r
+       000053' 414002  000035*         SETM TTYTAB(LINE)\r
+       000054' 263140  000000          POPJ PDP,\r
+\r
+\r
+       000055' 000000  000000  CCHAR:  0          ;HOLDS CHARACTER FOR CONSOLE TELETYPE\r
+                               ;CONTROL C - GO BACK TO MONITOR\r
+                               ;CONTROL 0 - SUPPRESS OUTPUT\r
+\r
+       000056' 334040  001143' TTYURC: SKIPA TAC,[XWD USRB,USRBC]      ;START JOB BUT REMAIN IN MON1\r
+       000057' 205040  000100  TTYUSR: MOVSI TAC,USRB          ;CAUSE TTY TO GO INTO\r
+       000060' 436046  000002          IORM TAC,DEVIOS(DEVDAT)         ;USER MODE WHEN\r
+       000061' 263140  000000          POPJ PDP, ;OUTPUT FINISHES\r
+\r
+                               INTERNAL TTYSET\r
+\r
+       000062' 205040  000004  TTYSET: MOVSI TAC,IOFST         ;INITIALIZE USER TTY IOS WORD\r
+       000063' 202046  000027*         MOVEM TAC,TTYSAV(DEVDAT)        ;FOR START COMMAND\r
+       000064' 254000  000057'         JRST TTYUSR\r
+\r
+\fSCNSER - SCANNER SERVICE      MACRO 10 05:51 24-APR-78 PAGE 4\r
+SCNSER MAC     24-APR-78 03:04         TOM EGGERS     8-9-65\r
+\r
+\r
+\r
+                               ;ROUTINE TO ATTACH TTY TO A JOB\r
+                               ;CALL:    MOVE DEVDAT,ADDRESS OF TTY DEVICE DATA BLOCK\r
+                               ;         MOVE ITEM,JOB NUMBER\r
+                               ;         PUSHJ PDP,TTYATT\r
+                               ;         ERROR     ;DEVDAT=DDB ADR OF OTHER TTY\r
+                                                   ;IF ANOTHER ALREADY IS ATTACHED.\r
+                               ;         OK RETURN ;DEVDAT, DAT AND TRANSLATOR TABLE SET\r
+\r
+                               INTERNAL TTYATT\r
+\r
+       000065' 135100  000052* TTYATT: LDB LINE,PUNIT  ;LINE NO. OF THIS TTY\r
+       000066' 201300  000023*         MOVEI DEVDAT,TTYLST ;SEARCH FOR DDB THAT IS ATTACHED\r
+       000067' 334000  000000          SKIPA\r
+       000070' 554306  000003  TTYAT2: HLRZ DEVDAT,DEVSER(DEVDAT)\r
+       000071' 322300  000115'         JUMPE DEVDAT,TTYAT4\r
+       000072' 135040  000000*         LDB TAC,PJOBN       ;JOB NUMBER\r
+       000073' 500046  000004          HLL TAC,DEVMOD(DEVDAT)          ;ATTACH AND USE BITS\r
+       000074' 607040  000010          TLNN TAC,DVTTY       ;IS THIS STILL A TTY DDB?\r
+       000075' 254000  000115'         JRST TTYAT4          ;NO, THIS MUST BE IJOB\r
+       000076' 306201  000000          CAIN ITEM,(TAC)      ;JOB NUMBER THE ONE TO ATTACH?\r
+       000077' 607040  010000          TLNN TAC,TTYUSE      ;YES, IS IT THE DETACHED ONE?\r
+       000100' 254000  000070'         JRST TTYAT2          ;NO, KEEP LOOKING\r
+       000101' 603040  020000          TLNE TAC,TTYATC         ;IS SOME TTY ALREADY ATTACHED?\r
+       000102' 263140  000000          POPJ PDP,               ;YES, ERROR RETURN WITH DEVDAT SET\r
+       000103' 261140  000006          PUSH PDP,DEVDAT         ;SAVE NEW DDB ADDRESS\r
+       000104' 200302  000053*         MOVE DEVDAT,TTYTAB(LINE)\r
+       000105' 200046  000004          MOVE TAC,DEVMOD(DEVDAT)\r
+       000106' 260140  000046'         PUSHJ PDP,TTYDET        ;DETACH DDB FROM TTY\r
+       000107' 262140  000006          POP PDP,DEVDAT\r
+       000110' 137200  000004' TTYAT3: DPB ITEM,TPCJOBN        ;STORE ATTACHED JOB NO.\r
+       000111' 137200  000072*         DPB ITEM,PJOBN          ;SET JOB NUMBER\r
+       000112' 205040  020000          MOVSI TAC,TTYATC        ;SET ATTACHED BIT\r
+       000113' 260140  000247'         PUSHJ PDP,TTYDAT        ;SETUP OUTPUT BYTE\r
+       000114' 254000  000410'         JRST SCNIN              ;GO INITIALIZE DDB\r
+\r
+       000115' 200302  000104* TTYAT4: MOVE DEVDAT,TTYTAB(LINE)        ;RESTORE OLD DDB ADDRESS\r
+       000116' 254000  000110'         JRST TTYAT3\r
+\r
+\fSCNSER - SCANNER SERVICE      MACRO 10 05:51 24-APR-78 PAGE 5\r
+SCNSER MAC     24-APR-78 03:04         TOM EGGERS     8-9-65\r
+\r
+\r
+\r
+                               ;ROUTINE TO SETUP AC DEVDAT TO ADDRESS OF TTY WHICH HAS TYPED A COMMA\r
+                               ;AC DAT TO BYTE POINTER TO OUTPUT BUFFER FOR COMMAND MESSAGE\r
+                               ;AC TAC TO BYTE POINTER TO COMMAND STRING\r
+                               ;AC ITEM TO JOB NUNMBER TTY IS ATTACHED TO\r
+                               ;CALL:     PUSHJ PDP,TTYCOM\r
+                               ;          NONE FOUND\r
+                               ;          ACS SETUP\r
+\r
+                               INTERNAL TTYCOM\r
+\r
+       000117' 205100  000033* TTYCOM: MOVSI LINE,MTTYLN\r
+       000120' 331002  000115*         SKIPL TTYTAB(LINE)\r
+       000121' 253100  000120'         AOBJN LINE,.-1\r
+       000122' 327100  000000*         JUMPG LINE,CPOPJ\r
+       000123' 205300  400000          MOVSI DEVDAT,400000\r
+       000124' 413302  000120*         ANDCAB DEVDAT,TTYTAB(LINE)\r
+       000125' 205240  440700          MOVSI DAT,440700\r
+       000126' 271246  000000*         ADDI DAT,TTYBUF(DEVDAT)\r
+       000127' 200040  000005          MOVE TAC,DAT\r
+\r
+                               ;FALL INTO TTYJOB\r
+\r
+                               ;ROUTINE TO RETURN IN AC ITEM JOB NUMBER WHICH TTY IS ATTACHED TO\r
+                               ;CALL:    MOVE DEVDAT,ADDRESS OF TTY DEVICE DATA BLOCK\r
+\r
+                               INTERNAL TTYJOB\r
+\r
+       000130' 135100  000065* TTYJOB: LDB LINE, PUNIT\r
+       000131' 135200  000004'         LDB ITEM,TPCJOBN\r
+       000132' 254000  000000*         JRST CPOPJ1\r
+\r
+\fSCNSER - SCANNER SERVICE      MACRO 10 05:51 24-APR-78 PAGE 6\r
+SCNSER MAC     24-APR-78 03:04         TOM EGGERS     8-9-65\r
+\r
+\r
+\r
+                               ;TELETYPE SCANNER UUO ROUTINES\r
+                               ;FOR DDT\r
+\r
+                               ;DDTGT WAITS FOR OUTPUT TO COMPLETE THEN PUTS\r
+                               ;TELETYPE INTO DDT MODE\r
+\r
+       000133' 260140  000230' DDTGT:  PUSHJ PDP,TTYSR1        ;FIND DEVICE DATA BLOCK\r
+       000134' 200006  000002          MOVE IOS,DEVIOS(DEVDAT)\r
+       000135' 607000  100000          TLNN IOS,DDTM\r
+       000136' 607000  000020          TLNN IOS,IO             ;OUTPUT IN PROGRESS\r
+       000137' 254000  000141'         JRST DDTGT2             ;NO\r
+                               ;       PUSHJ PDP,OUT           ;MAKE SURE OUTPUT STARTED\r
+       000140' 260140  000000*         PUSHJ PDP,WAIT1         ;WAIT FOR OUTPUT TO FINISH\r
+       000141' 661000  100000  DDTGT2: TLO IOS,DDTM            ;SET DDT MODE BIT\r
+       000142' 202006  000002          MOVEM IOS,DEVIOS(DEVDAT)\r
+       000143' 254000  000000*         JRST UXIT\r
+\r
+                               ;RELEASE TELETYPE FROM DDT MODE\r
+                               ;MAKE SURE OUPUT IS FINISHED FIRST\r
+\r
+       000144' 260140  000230' DDTRL:  PUSHJ PDP,TTYSR1        ;FIND DEVICE DATA BLOCK\r
+       000145' 200006  000002          MOVE IOS,DEVIOS(DEVDAT)\r
+       000146' 603000  000020          TLNE IOS,IO             ;OUTPUT IN PROGRESS?\r
+       000147' 260140  000140*         PUSHJ PDP,WAIT1         ;YES, WAIT\r
+       000150' 205000  140000          MOVSI IOS,DDTM+SYNC\r
+       000151' 412006  000002          ANDCAM IOS,DEVIOS(DEVDAT)       ;TURN OFF DDT BIT\r
+       000152' 254000  000143*         JRST UXIT\r
+\r
+\fSCNSER - SCANNER SERVICE      MACRO 10 05:51 24-APR-78 PAGE 7\r
+SCNSER MAC     24-APR-78 03:04         TOM EGGERS     8-9-65\r
+\r
+\r
+\r
+                               ;INPUT TO DDT\r
+                               ;CALL AC,[SIXBIT /DDTIN/]     AC CONTAINS POINTER TO BUFFER AREA\r
+                               ;BUFFER AREA MUST BE 21 WORDS LONG\r
+\r
+       000153' 260140  000230' DDTIN:  PUSHJ PDP,TTYSR1                ;SET UP DEVDAT\r
+       000154' 200006  000002          MOVE IOS,DEVIOS(DEVDAT)\r
+       000155' 603000  000020          TLNE IOS,IO                     ;OUTPUT IN PROGRESS\r
+       000156' 260140  000147*         PUSHJ PDP,WAIT1                 ;YES, WAIT\r
+       000157' 200006  000002  DDTIN2: MOVE IOS,DEVIOS(DEVDAT)\r
+       000160' 603000  000040          TLNE IOS,IOEND                  ;BUFFER ALREADY?\r
+       000161' 254000  000166'         JRST DDTIN3                     ;YES\r
+       000162' 201000  010000          MOVEI IOS,IOACT\r
+       000163' 436006  000002          IORM IOS,DEVIOS(DDB)\r
+       000164' 260140  000000*         PUSHJ PDP,WSYNC                 ;NO, WAIT\r
+       000165' 254000  000157'         JRST DDTIN2\r
+\r
+       000166' 205040  120004  DDTIN3: MOVSI TAC,NIO+IOFST+DDTM\r
+       000167' 436046  000002          IORM TAC,DEVIOS(DEVDAT)         ;STOP ALL IO\r
+       000170' 200046  000000*         MOVE TAC,TTYPTR(DEVDAT)\r
+       000171' 260140  000000*         PUSHJ PDP,CLRBYT                ;CLEAR OUT REMAINING BYTES\r
+       000172' 275046  000000*         SUBI TAC,TTYBM1(DEVDAT)         ;NUMBER OF WORDS\r
+       000173' 135100  000000*         LDB TAC1,PUUOAC       ;PICK UP AC NUMBER\r
+       000174' 271107  000000          ADDI TAC1,(PROG)                ;FIND REAL ADDRESS\r
+       000175' 200102  000000          MOVE TAC1,(TAC1)                ;PICK UP POINTER\r
+       000176' 271107  000000          ADDI TAC1,(PROG)                ;FIND REAL ADDRESS OF BUFFER\r
+       000177' 505106  000126*         HRLI TAC1,TTYBUF(DEVDAT)\r
+       000200' 271042  000000          ADDI TAC,(TAC1)\r
+       000201' 251101  000000          BLT TAC1,(TAC)                  ;TRANSFER MONITOR BUFFER TO U\r
+       000202' 402001  000001          CLEARM 1(TAC)                   ;MAKE SURE THERE ARE SOME NUL\r
+       000203' 205040  020040          MOVSI TAC,NIO+IOEND\r
+       000204' 412046  000002          ANDCAM TAC,DEVIOS(DEVDAT)\r
+       000205' 254000  000152*         JRST UXIT\r
+\r
+\fSCNSER - SCANNER SERVICE      MACRO 10 05:51 24-APR-78 PAGE 8\r
+SCNSER MAC     24-APR-78 03:04         TOM EGGERS     8-9-65\r
+\r
+\r
+\r
+                               ;OUTPUT FROM DDT\r
+                               ;CALL AC,[SIXBIT /DDTOUT/]      AC HAS POINTER TO DDT OUTPUT BUFFER\r
+\r
+       000206' 260140  000230' DDTOUT: PUSHJ PDP,TTYSR1\r
+       000207' 200006  000002          MOVE IOS,DEVIOS(DEVDAT)\r
+       000210' 603000  000020          TLNE IOS,IO                     ;OUTPUT IN PROGRESS?\r
+       000211' 260140  000156*         PUSHJ PDP,WAIT1                 ;YES, WAIT\r
+       000212' 200000  001144'         MOVE IOS,[XWD NIO+TOUT+DDTM,IOACT]\r
+       000213' 437006  000002          IORB IOS,DEVIOS(DEVDAT)\r
+       000214' 135040  000173*         LDB TAC,PUUOAC          ;PICK UP AC NUMBER\r
+       000215' 505040  000011          HRLI TAC,JDAT           ;CALC REAL ADDRESS OF AC\r
+       000216' 540060  000001          HRR TAC,@TAC            ;PICK UP AC\r
+       000217' 505060  000001          HRLI TAC,@TAC           ;CALC REAL ADDRESS OF DDT BUF\r
+       000220' 541046  000177*         HRRI TAC,TTYBUF(DEVDAT)\r
+       000221' 552046  000000*         HRRZM TAC,TTYCTR(DDB)           ;A SUITABLY LARGE NUMBER\r
+       000222' 200100  000001          MOVE TAC1,TAC\r
+       000223' 251042  000020          BLT TAC,20(TAC1)                ;MOVE DDT BUFFER TO MONITOR\r
+                                                       hrli tac1,440700\r
+\r
+       000224' 202106  000170*         MOVEM TAC1,TTYPTR(DEVDAT)\r
+       000225' 621000  000004          TLZ IOS,IOS+IOFST\r
+       000226' 260140  000302'         PUSHJ PDP,TTYOU0\r
+       000227' 254000  000205*         JRST UXIT\r
+\r
+\fSCNSER - SCANNER SERVICE      MACRO 10 05:51 24-APR-78 PAGE 9\r
+SCNSER MAC     24-APR-78 03:04         TOM EGGERS     8-9-65\r
+\r
+\r
+\r
+\r
+       000230' 200200  000000* TTYSR1: MOVE ITEM,JOB\r
+       000231' 205100  000117* TTYSRC: MOVSI LINE,MTTYLN\r
+       000232' 550302  000124*                 HRRZ DEVDAT,TTYTAB(LINE)\r
+       000233' 322300  000237'                 JUMPE DEVDAT,TTYF0\r
+       000234' 135040  000004'                 LDB TAC,TPCJOBN\r
+       000235' 306044  000000                  CAIN TAC,(ITEM)\r
+       000236' 263140  000000                  POPJ PDP,               ;FOUND\r
+       000237' 253100  000232'         TTYF0:  AOBJN LINE,TTYSRC+1\r
+       000240' 205040  576062                  MOVSI TAC,576062        ;SIXBIT /OPR/\r
+       000241' 254000  000000*                 JRST DEVPHY             ;SEARCH PHYSICAL DEVICE NAMES\r
+                                                                       ;AND RETURN OPERATOR TTY.\r
+\r
+                                       ;ROUTINE TO FIND A TTY FOR A JOB\r
+                                       ;CALL:  MOVE ITEM,JOB NUMBER\r
+                                       ;       PUSHJ PDP, TTYFND\r
+                                       ;       ERROR RETURN\r
+                                       ;       RETURN WITH DEVDAT SET TO ADR OF DDB\r
+                                       ;       AND DAT SET TO BYTE POINTER TO MONITOR OUTPUT BUFFER\r
+\r
+       000242' 200200  000230*         TTYFNU: MOVE ITEM,JOB\r
+       000243' 260140  000231'         TTYFND: PUSHJ PDP,TTYSRC                ;CALLED BY PUSHJ PDP,TTYFND\r
+       000244' 260140  000164* ;               PUSHJ PDP,WSYNC\r
+       000245' 205040  020000                  MOVSI TAC,NIO                   ;JOB NUMBER IN TAC1\r
+       000246' 436046  000002                  IORM TAC,DEVIOS(DEVDAT) \r
+       000247' 201246  000220*         TTYDAT: MOVEI DAT,TTYBUF(DEVDAT)        ;SETUP OUTPUT BYTE POINTER\r
+       000250' 505240  440700                  HRLI DAT,440700\r
+       000251' 263140  000000                  POPJ PDP,\r
+\r
+       000252' 200040  000005          TTYSTR: MOVE TAC,DAT\r
+       000253' 260140  000171*                 PUSHJ PDP,CLRBYT\r
+       000254' 275046  000172*                 SUBI TAC,TTYBM1(DEVDAT)\r
+       000255' 405040  777777                  ANDI TAC,-1\r
+       000256' 221040  000005                  IMULI TAC,5\r
+       000257' 202046  000221*                 MOVEM TAC,TTYCTR(DEVDAT)\r
+       000260' 201046  000247*                 MOVEI TAC,TTYBUF(DEVDAT)\r
+       000261' 505040  440700                  HRLI TAC,440700\r
+       000262' 202046  000224*                 MOVEM TAC,TTYPTR(DEVDAT)\r
+       000263' 200006  000002                  MOVE IOS,DEVIOS(DEVDAT)\r
+       000264' 434000  001145'                 IOR IOS,[XWD NIO+IOFST,IODTER+IOBKTL]\r
+                                               andcm ios,[xwd nio+iofst,iodter+iobktl]\r
+       000265' 260140  000767'                 PUSHJ PDP,GCHAR\r
+       000266' 263140  000000                  POPJ PDP, ;NOTHING TO TYPE\r
+       000267' 254000  000310'                 JRST TTYOU2             ;START OUTPUT\r
+\r
+                                       ;DISPATCH TABLE;\r
+\r
+       000270' 263140  000000          TTYDSP: POPJ PDP, ;RELEASE\r
+       000271' 254000  000000*                 JRST OUT        ;CLOSE\r
+       000272' 254000  000300'                 JRST TTYOUT\r
+       000273' 630000  001146'                 TDZ IOS,[XWD TPMON,ECHOF+NCERR]         ;INPUT\r
+       000274' 660000  010000                  TRO IOS,IOACT\r
+       000275' 623000  000002                  TLZE IOS, IOBEG\r
+\r
+\fSCNSER - SCANNER SERVICE      MACRO 10 05:51 24-APR-78 PAGE 9-1\r
+SCNSER MAC     24-APR-78 03:04         TOM EGGERS     8-9-65\r
+\r
+       000276' 661000  000004                  TLO IOS, IOFST\r
+       000277' 254000  001131'                 JRST MIS1\r
+\r
+       000300' 670000  001147'         TTYOUT: TDO IOS,[XWD TOUT+IOFST,IOACT]\r
+       000301' 630000  001146'                 TDZ IOS,[XWD TPMON,ECHOF+NCERR]\r
+       000302' 135240  000000'         TTYOU0: LDB HPOS,PHPOS\r
+       000303' 135200  000001'                 LDB VPOS,PVPOS\r
+       000304' 260140  000767'                 PUSHJ PDP, GCHAR\r
+       000305' 263140  000000                  POPJ PDP,\r
+       000306' 137240  000000'                 DPB HPOS,PHPOS\r
+       000307' 137200  000001'                 DPB VPOS,PVPOS\r
+       000310' 135100  000130*         TTYOU2: LDB LINE,PUNIT\r
+       000311' 700200  000000*                 CONO CLDS               ;DISABLE CLOCK\r
+       000312' 306100  000000*                 CAIN LINE,TCONLN\r
+       000313' 254000  000324'                 JRST CTYOUT\r
+       000314' 730200  000000                  CONO DCSA,0             ;DISABLE SCANNER\r
+       000315' 730602  000000                  CONO DCSB, (LINE)\r
+       000316' 730140  000010                  DATAO DCSA, CHREC\r
+       000317' 730200  000017*                 CONO DCSA,FSNCHN\r
+       000320' 137400  000002'                 DPB CHREC,PLASTC\r
+       000321' 700200  000000*         TTYOU1: CONO CLEN               ;RE-ENABLE CLOCK\r
+       000322' 202006  000002                  MOVEM IOS,DEVIOS(DEVDAT)\r
+       000323' 263140  000000                  POPJ PDP,\r
+\r
+       000324' 712200  000000          CTYOUT: CONO TTY,0              ;DISABLE TTY\r
+       000325' 712140  000010                  DATAO TTY,CHREC\r
+       000326' 202400  000055'                 MOVEM CHREC,CCHAR\r
+       000327' 712200  000015*                 CONO TTY,SCNCHN         ;RE-ENABLE\r
+       000330' 254000  000300'                 JRST TTYOUT1\r
+\r
+       000331' 712340  000050          CTYINT: CONSO TTY,50\r
+       000332' 254000  000332'                 JRST .\r
+       000333' 712340  000040                  CONSO TTY,40\r
+       000334' 254000  000346'                 JRST CTYOU1\r
+       000335' 202040  000055'                 MOVEM TAC, CCHAR        ;DONT ECHO RUBOUT\r
+       000336' 712040  000001                  DATAI TTY, TAC\r
+       000337' 405040  000177                  ANDI TAC, 177\r
+       000340' 306040  000177                  CAIN TAC, 177\r
+       000341' 254000  000345'                 JRST CTYRUB             ;IS A RUBOUT\r
+       000342' 712140  000001                  DATAO TTY, TAC          ;NOT, SO ECHO\r
+       000343' 250040  000055'                 EXCH TAC, CCHAR\r
+       000344' 254520  000000*                 JRST 12,@SCNCHL                 ;DISMISS INTERRUP\r
+\r
+       000345' 250040  000055'         CTYRUB: EXCH TAC, CCHAR\r
+       000346' 264000  000000*         CTYOU1: JSR SCNSAV\r
+       000347' 201400  000327*                 MOVEI CHREC,SCNCHN\r
+       000350' 712210  000200                  CONO TTY,200(CHREC)\r
+       000351' 200400  000055'                 MOVE CHREC,CCHAR\r
+       000352' 201100  000312*                 MOVEI LINE,TCONLN\r
+       000353' 254000  000363'                 JRST TCOMM\r
+\r
+       000354' 730340  001010          SCNINT: CONSO DCSA,1010\r
+       000355' 254000  000355'                 JRST .\r
+\r
+\fSCNSER - SCANNER SERVICE      MACRO 10 05:51 24-APR-78 PAGE 9-2\r
+SCNSER MAC     24-APR-78 03:04         TOM EGGERS     8-9-65\r
+\r
+       000356' 264000  000346*                 JSR SCNSAV\r
+       000357' 730340  000010                  CONSO DCSA,10           ;RECEIVER FLAG?\r
+       000360' 254000  000437'                 JRST SCNIN1             ;NO,XMITTER FLAG\r
+       000361' 730640  000002                  CONI DCSB, LINE\r
+       000362' 730440  000010                  DATAI DCSB, CHREC\r
+       000363' 405400  000177          TCOMM:  ANDI CHREC, 177\r
+       000364' 303100  000352*                 CAILE LINE,TCONLN       ;CTY LINE OR LESS\r
+       000365' 254000  000447'                 JRST TYPX               ;NO\r
+       000366' 332302  000232*                 SKIPE DDB,TTYTAB(LINE)  ;DATA BLOCK ASSIGNED?\r
+       000367' 254000  000461'                 JRST INUSE              ;YES\r
+       000370' 260140  000377'                 PUSHJ PDP,DDBSRC        ;SEARCH FOR FREE TTY DEV. DATA BLOCK\r
+       000371' 254000  000447'                 JRST TYPX               ;NONE FOUND, TYPE X\r
+       000372' 403240  000004                  CLEARB HPOS,VPOS        ;ASSUME TTY IS AT BEGIN OF FORM\r
+       000373' 730300  000700                  CONSZ DCSA,700          ;FULL DUPLEX?\r
+       000374' 306100  000364*                 CAIN LINE,TCONLN        ;CTY?\r
+       000375' 254000  000574'                 JRST INJEST             ;NO, SWALLOW CHAR\r
+       000376' 254000  000510'                 JRST TYP1\r
+\r
+\fSCNSER - SCANNER SERVICE      MACRO 10 05:51 24-APR-78 PAGE 10\r
+SCNSER MAC     24-APR-78 03:04         TOM EGGERS     8-9-65\r
+\r
+\r
+\r
+                               ;ROUTINE TO SEARCH FOR FREE TTY DEV DATA BLOCK\r
+                               ;CALL:    MOVE LINE,TTY LINE NO\r
+                               ;         PUSHJ PDP,DDBSRC\r
+                               ;         NONE FOUND\r
+                               ;         RETURN DEVDAT, LINE SET\r
+\r
+       000377' 205000  000020* DDBSRC:   MOVSI IOS,MLTTYL      ;NO. OF TTY DDB\r
+       000400' 201300  000066*           MOVEI DEVDAT,TTYLST   ;ADDRESS OF FIRST DDB\r
+       000401' 334040  001142'           SKIPA TAC,[XWD TTYUSE+TTYATC,ASSPRG+ASSCON]\r
+       000402' 554306  000003            HLRZ DEVDAT,DEVSER(DEVDAT)\r
+       000403' 612046  000004            TDNE TAC,DEVMOD(DEVDAT)       ;USE.ATTACH, AND BOTH ASSIGN\r
+       000404' 253000  000402'           AOBJN IOS,.-2\r
+       000405' 325000  000122*           JUMPGE IOS,CPOPJ      ;DDB FOUND?\r
+       000406' 200000  001150'           MOVE IOS,[XWD TPMON+IOFST,IOACT]\r
+       000407' 200040  001151'           MOVE TAC,[XWD TTYUSE,ASSCON]\r
+\r
+                               ;INITIALIZE TTY DEVICE DATA BLOCK(CALLED FROM TTYATT TOO)\r
+\r
+       000410' 436046  000004  SCNIN:    IORM TAC,DEVMOD(DEVDAT)\r
+       000411' 137100  000310*           DPB LINE,PUNIT        ;SET LINE NO. IN DDB\r
+       000412' 205040  064647            MOVSI TAC,646471      ;SIXBIT /TTY/\r
+       000413' 202046  000000            MOVEM TAC,DEVNAM(DEVDAT)\r
+       000414' 200040  001152'           MOVE TAC,[POINT 6,DEVNAM(DEVDAT),17]\r
+       000415' 261140  000002            PUSH PDP,LINE         ;SAVE LINE NO.\r
+       000416' 606100  000070            TRNN LINE,70          ;IS THERE A HIGH ORDER OCTAL DIGIT?\r
+       000417' 254000  000424'           JRST SCNIN0           ;NO\r
+       000420' 241100  777775            ROT LINE,-3           ;YES,CONVERT TO SIXBIT\r
+       000421' 271100  000020            ADDI LINE,20\r
+       000422' 136100  000001            IDPB LINE,TAC         ;STORE HIGH ORDER SIXBIT DIGIT\r
+       000423' 242100  000020            LSH LINE,20           ;IN PHYSICAL NAME\r
+       000424' 271100  000020  SCNIN0:   ADDI LINE,20\r
+       000425' 136100  000001            IDPB LINE,TAC         ;STORE LOW ORDER DIGIT\r
+       000426' 262140  000002            POP PDP,LINE\r
+\r
+       000427' 542302  000366*           HRRM DEVDAT,TTYTAB(LINE)      ;SET LINE NO. IN TRANSLATOR T\r
+       000430' 205040  436471            MOVSI TAC,436471      ;SIXBIT /CTY/\r
+       000431' 306100  000374*           CAIN LINE,TCONLN      ;IS THIS CONSOLE TTY?\r
+       000432' 202046  000000            MOVEM TAC,DEVNAM(DEVDAT)      ;YES, SET NAME TO CTY\r
+       000433' 200046  000000            MOVE TAC,DEVNAM(DEVDAT)\r
+       000434' 336000  000000*           SKIPN DEVOPR          ;IS THIS FIRST CHAR. TYPED BY ANYONE?\r
+       000435' 202040  000434*           MOVEM TAC,DEVOPR      ;YES,SET THIS TTY AS OPERATOR TTY\r
+       000436' 254000  000132*           JRST CPOPJ1           ;SUCCESSFUL RETURN\r
+\r
+       000437' 730040  000002  SCNIN1:   DATAI DCSA,LINE       ;GET LINE NO. FROM FULL DUPLEX\r
+       000440' 201040  000317*           MOVEI TAC,FSNCHN\r
+       000441' 730201  004000            CONO DCSA,4000(TAC)   ;RELEASE XMITTER SCANNER\r
+       000442' 332302  000427*           SKIPE DDB,TTYTAB(LINE)        ;DATA BLOCK ASSIGNED?\r
+       000443' 301100  000431*           CAIL LINE,TCONLN      ;LINE NO. TOO LARGE?\r
+       000444' 254000  000000*           JRST SCNRET                   ;GO AWAY\r
+       000445' 135400  000002'           LDB CHREC,PLASTC\r
+       000446' 254000  000470'           JRST INUS1\r
+\r
+\fSCNSER - SCANNER SERVICE      MACRO 10 05:51 24-APR-78 PAGE 11\r
+SCNSER MAC     24-APR-78 03:04         TOM EGGERS     8-9-65\r
+\r
+\r
+\r
+       000447' 306400  000130  TYPX:     CAIN CHREC,"X"                ;CHARACTER RECEIVED AN X?\r
+       000450' 254000  000444*           JRST SCNRET                 ;YES, GO AWAY\r
+       000451' 201400  000130            MOVEI CHREC,"X"\r
+       000452' 302100  000443*           CAIE LINE,TCONLN\r
+       000453' 254000  000456'           JRST TYPX1\r
+       000454' 712140  000010            DATAO TTY,CHREC\r
+       000455' 254000  000450*           JRST SCNRET\r
+       000456' 730742  000000  TYPX1:    CONSO DCSB,(LINE)\r
+       000457' 730140  000010            DATAO DCSA,CHREC              ;TYPE AN X\r
+       000460' 254000  000455*           JRST SCNRET\r
+\r
+       000461' 730300  000700  INUSE:    CONSZ DCSA,700        ;FULL DUPLEX?\r
+       000462' 306100  000452*           CAIN LINE,TCONLN\r
+       000463' 254000  000470'           JRST INUS1\r
+       000464' 730602  000000            CONO DCSB,(LINE)\r
+       000465' 730140  000010            DATAO DCSA,CHREC\r
+       000466' 137400  000002'           DPB CHREC,PLASTC\r
+       000467' 254000  000460*           JRST SCNRET\r
+\r
+       000470' 200006  000002  INUS1:    MOVE IOS,DEVIOS(DDB)\r
+       000471' 135340  000111*           LDB PROG,PJOBN\r
+       000472' 550347  000000*           HRRZ PROG,JBTADR(PROG)\r
+       000473' 135240  000000'           LDB HPOS,PHPOS\r
+       000474' 135200  000001'           LDB VPOS,PVPOS\r
+       000475' 135046  000262*           LDB TAC, TTYPTR(DDB)\r
+       000476' 603000  002000            TLNE IOS, SP\r
+       000477' 254000  000532'           JRST SIM35\r
+       000500' 607000  000010  INUS2:    TLNN IOS,TOUT\r
+       000501' 254000  000574'           JRST INJEST\r
+       000502' 312040  000010            CAME TAC, CHREC\r
+       000503' 254000  000526'           JRST ECHO\r
+       000504' 260140  000767' INUS3:    PUSHJ PDP, GCHAR\r
+       000505' 254000  000517'           JRST LEAV0\r
+       000506' 306100  000462* TYPE:     CAIN LINE,TCONLN\r
+       000507' 254000  000523'           JRST CTSER3\r
+       000510' 730602  000000  TYP1:     CONO DCSB,(LINE)\r
+       000511' 730140  000010            DATAO DCSA, CHREC\r
+       000512' 137400  000002'           DPB CHREC,PLASTC      ;SAVE CHARACTER FOR FULL DUPLEX\r
+       000513' 202006  000002  LEAVE:    MOVEM IOS, DEVIOS(DDB)\r
+       000514' 137240  000000' LEAV1:    DPB HPOS,PHPOS\r
+       000515' 137200  000001'           DPB VPOS,PVPOS\r
+       000516' 254000  000467*           JRST SCNRET\r
+       000517' 202046  000004  LEAV0:    MOVEM TAC,DEVMOD(DEVDAT)      ;IS TTY ATTCHED?\r
+       000520' 607040  020000            TLNN TAC,TTYATC\r
+       000521' 260140  000041'           PUSHJ PDP,TTYKIL              ;NO,RETURN TO POOL\r
+       000522' 254000  000514'           JRST LEAV1\r
+\r
+       000523' 712140  000010  CTSER3:   DATAO TTY,CHREC\r
+       000524' 202400  000055'           MOVEM CHREC,CCHAR\r
+       000525' 254000  000513'           JRST LEAVE\r
+\r
+\fSCNSER - SCANNER SERVICE      MACRO 10 05:51 24-APR-78 PAGE 12\r
+SCNSER MAC     24-APR-78 03:04         TOM EGGERS     8-9-65\r
+\r
+\r
+\r
+       000526' 670000  001153' ECHO:     TDO IOS,[XWD SP,ECHOF]\r
+       000527' 621000  000010            TLZ IOS,TOUT\r
+       000530' 201400  000177            MOVEI CHREC,177               ;SEND A RUBOUT AFTER ECHO CHE\r
+       000531' 254000  000506'           JRST TYPE\r
+\r
+       000532' 205040  777766  SIM35:    MOVSI TAC,-SCTABL\r
+       000533' 200241  000544'           MOVE HPOS, SCTAB(TAC)\r
+       000534' 302405  000000            CAIE CHREC,(HPOS)\r
+       000535' 253040  000533'           AOBJN TAC, .-2\r
+       000536' 135240  000000'           LDB HPOS,PHPOS\r
+       000537' 325040  000526'           JUMPGE TAC, ECHO\r
+       000540' 204041  000544'           MOVS TAC, SCTAB(TAC)\r
+       000541' 603040  000140            TLNE TAC, 140         ;SPACING CHARACTER\r
+       000542' 344241  000000            AOJA HPOS,(TAC)       ;YES\r
+       000543' 254001  000000            JRST (TAC)            ;NO\r
+\r
+       000544' 000556' 000040  SCTAB:    XWD SPACE," "\r
+       000545' 000564' 000012            XWD SIMLF,12\r
+       000546' 000571' 000177            XWD SIMRO,177         ;RUBOUT\r
+       000547' 000571' 000134            XWD SIMRO,134         ;BACK SLASH\r
+       000550' 000733' 000015            XWD ASC3,15           ;CR\r
+       000551' 000561' 000136            XWD SIMVA,"^"\r
+       000552' 000764' 000103            XWD DELET1,"C"\r
+       000553' 000764' 000117            XWD DELET1,"O"\r
+       000554' 000565' 000132            XWD SIM4,"Z"\r
+       000555' 000764' 000125            XWD DELET1,"U"\r
+                       000012  SCTABL=.-SCTAB\r
+\r
+       000556' 606240  000007  SPACE:    TRNN HPOS,7           ;FINISHED SIMULATING TABS(8)\r
+       000557' 254000  000565'           JRST SIM4             ;YES\r
+       000560' 254000  000506'           JRST TYPE             ;NO, SEND ANOTHER SPACE\r
+\r
+       000561' 135400  000003' SIMVA:    LDB CHREC,PSCHAR\r
+       000562' 660400  000100            TRO CHREC, 100\r
+       000563' 254000  000506'           JRST TYPE\r
+\r
+       000564' 367200  000506' SIMLF:    SOJG VPOS,TYPE        ;SEND ANOTHER LINE-FEED\r
+       000565' 621000  002000  SIM4:     TLZ IOS,SP\r
+       000566' 607000  000010            TLNN IOS,TOUT\r
+       000567' 254000  000626'           JRST INJ4\r
+       000570' 254000  000504'           JRST INUS3\r
+\r
+       000571' 625000  002000  SIMRO:    TLZA IOS, SP\r
+       000572' 640000  004000  MOD35:    TRC IOS,T35\r
+       000573' 254000  000513'           JRST LEAVE\r
+\r
+\fSCNSER - SCANNER SERVICE      MACRO 10 05:51 24-APR-78 PAGE 13\r
+SCNSER MAC     24-APR-78 03:04         TOM EGGERS     8-9-65\r
+\r
+\r
+\r
+       000574' 306400  000003  INJEST:   CAIN CHREC,3          ;CONTROL C?\r
+       000575' 254000  000642'           JRST INJ5\r
+       000576' 623000  000004            TLZE IOS,IOFST        ;IF FIRST CHARACTER IN, INITIALIZE\r
+       000577' 260140  000630'           PUSHJ PDP,SETMB1\r
+       000600' 603000  100000            TLNE IOS,DDTM         ;1 DDT CHAR RESTARTS PROGRAM\r
+       000601' 661000  040040            TLO IOS,SYNC+IOEND    ;YES, TERMINATE BUFFER\r
+       000602' 306400  000017            CAIN CHREC,17                 ;COTNROL O?\r
+       000603' 254000  000655'           JRST INJ6                     ;YES, FLUSH OUTPUT\r
+       000604' 622000  100000            TRZE IOS,ECHOF                ;ECHO HAS OCCURRED?\r
+       000605' 254000  000675'           JRST INJ7                     ;YES, NOW RESUME OUTPUT\r
+       000606' 602000  040000            TRNE IOS,NCERR\r
+       000607' 254000  000513'           JRST LEAVE\r
+       000610' 302400  000033            CAIE CHREC,033        ;NEW NEW ALT-MODE?\r
+       000611' 306400  000176            CAIN CHREC,176        ;NEW ALT-MODE?\r
+       000612' 201400  000175            MOVEI CHREC,175       ;CHANGE TO OLD\r
+       000613' 306400  000020            CAIN CHREC,20         ;CONTROL P TAB SIMULATION FLIP FLOP SWI\r
+       000614' 254000  000572'           JRST MOD35\r
+       000615' 603000  100000            TLNE IOS,DDTM\r
+       000616' 254000  000620'           JRST INJ25            ;SENT RUBOUTS ON TO DDT\r
+       000617' 306400  000177            CAIN CHREC,177        ;RUBOUT\r
+                                                       jrst    delet\r
+       000620' 136406  000475* INJ25:    DPBI CHREC, TTYPTR(DDB)\r
+       000621' 370046  000257*           SOS TAC, TTYCTR(DDB)\r
+       000622' 301400  000040            CAIL CHREC, 40\r
+       000623' 303400  000137            CAILE CHREC, 137\r
+       000624' 254000  000677'           JRST SPCIN\r
+       000625' 271240  000001            ADDI HPOS,1\r
+       000626' 260140  001062' INJ4:     PUSHJ PDP, MOVBUF\r
+       000627' 254000  000513'           JRST LEAVE\r
+\r
+       000630' 541046  000260* SETMB1:   HRRI TAC, TTYBUF(DDB)\r
+       000631' 505040  440700            HRLI TAC, 440700\r
+       000632' 202046  000620*           MOVEM TAC, TTYPTR(DDB)\r
+       000633' 507000  000001            HRLS TAC\r
+       000634' 350000  000001            AOS TAC\r
+       000635' 402006  000630*           SETZM TTYBUF(DDB)\r
+       000636' 251046  000000*           BLT TAC,TTYBFE(DDB) ;CLEAR OUT MONITOR BUFFER\r
+       000637' 201040  000111            MOVEI TAC, 111\r
+       000640' 202046  000621*           MOVEM TAC, TTYCTR(DDB)\r
+       000641' 263140  000000            POPJ PDP,\r
+\r
+\fSCNSER - SCANNER SERVICE      MACRO 10 05:51 24-APR-78 PAGE 14\r
+SCNSER MAC     24-APR-78 03:04         TOM EGGERS     8-9-65\r
+\r
+\r
+\r
+       000642' 260140  000630' INJ5:     PUSHJ PDP,SETMB1\r
+       000643' 261140  000004            PUSH PDP,ITEM         ;^C\r
+       000644' 135200  000004'           LDB ITEM,TPCJOBN      ;YES, GET USER CONSOLE NUMBER\r
+       000645' 332000  000004            SKIPE ITEM\r
+       000646' 260140  000000*           PUSHJ PDP,STOP1                 ;SHUT OFF JOB\r
+       000647' 262140  000004            POP PDP,ITEM\r
+       000650' 607000  001000            TLNN IOS,TPMON        ;SAVE STATUS OF TTY\r
+       000651' 202006  000063*           MOVEM IOS,TTYSAV(DDB)         ;WHEN IT WAS IN USER MODE\r
+       000652' 200000  001150'           MOVE IOS,[XWD TPMON+IOFST,IOACT]\r
+       000653' 201040  000103            MOVEI TAC,"C"\r
+       000654' 254000  000672'           JRST INJ61\r
+\r
+       000655' 261140  000002  INJ6:     PUSH PDP,TAC1         ;^O\r
+       000656' 623000  000001            TLZE IOS,IOW\r
+       000657' 260140  000000*           PUSHJ PDP,SETIOD\r
+       000660' 262140  000002            POP PDP,TAC1\r
+       000661' 603000  101000            TLNE IOS,TPMON+DDTM\r
+       000662' 254000  000665'           JRST INJ6A\r
+       000663' 603000  000010            TLNE IOS,TOUT\r
+       000664' 260140  000000*           PUSHJ PDP,ADVBFE\r
+       000665' 665000  000004  INJ6A:    TLOA IOS,IOFST\r
+       000666' 254000  000664'           JRST .-2\r
+       000667' 620000  100000            TRZ IOS,ECHOF\r
+       000670' 660000  020000            TRO IOS,IODEND\r
+       000671' 201040  000060            MOVEI TAC,"0"\r
+       000672' 137040  000003' INJ61:    DPB TAC,PSCHAR\r
+       000673' 201400  000136            MOVEI CHREC,"^"\r
+       000674' 254000  000743'           JRST SPC21\r
+\r
+       000675' 661000  000010  INJ7:     TLO IOS,TOUT\r
+       000676' 254000  000504'           JRST INUS3\r
+\r
+\fSCNSER - SCANNER SERVICE      MACRO 10 05:51 24-APR-78 PAGE 15\r
+SCNSER MAC     24-APR-78 03:04         TOM EGGERS     8-9-65\r
+\r
+\r
+\r
+       000677' 205040  777770  SPCIN:    MOVSI TAC,-SCITL      ;SEARCH FOR SPECIAL INPUT CHAR\r
+       000700' 200101  000707'           MOVE TAC1,SCITAB(TAC)\r
+       000701' 302402  000000            CAIE CHREC,(TAC1)     ;FOUND?\r
+       000702' 253040  000700'           AOBJN TAC,.-2         ;NO\r
+       000703' 544040  000002            HLR TAC,TAC1          ;SAVE DISPATCH ADDRESS\r
+       000704' 135100  000411*           LDB LINE,PUNIT        ;RESTORE TAC1\r
+       000705' 321041  000000            JUMPL TAC,(TAC)       \r
+       000706' 254000  000626'           JRST INJ4             ;CHARACTER NOT FOUND\r
+\r
+       000707' 000717' 000015  SCITAB:   XWD SPCCR,15          ;CR\r
+       000710' 000725' 000012            XWD ASC1,12           ;LF\r
+       000711' 000740' 000011            XWD SPC2,11           ;HORIZ TAB\r
+       000712' 000722' 000013            XWD SPVT,13           ;VT\r
+       000713' 000721' 000014            XWD SPFF,14           ;FF\r
+       000714' 000735' 000025            XWD SPC4A,25          ;^U\r
+       000715' 000745' 000032            XWD SPC7,32           ;^Z\r
+       000716' 000725' 000175            XWD ASC1, 175         ;ALT MODE\r
+                       000010  SCITL=.-SCITAB\r
+\r
+       000717' 201240  000000  SPCCR:    MOVEI HPOS,0\r
+       000720' 254000  000733'           JRST ASC3\r
+\r
+       000721' 334200  001154' SPFF:     SKIPA VPOS,[10]\r
+       000722' 201200  000004  SPVT:     MOVEI VPOS,4\r
+       000723' 607000  004000            TLNN IOS,T35          ;DONT SIMULATE FOR A MOD 35\r
+       000724' 661000  002000            TLO IOS,SP\r
+       000725' 135040  000000* ASC1:     LDB TAC,PIOMOD\r
+       000726' 607000  001000            TLNN IOS,TPMON\r
+       000727' 306040  000001            CAIN TAC,AL\r
+       000730' 661000  040000            TLO IOS,SYNC\r
+       000731' 607000  002000  ASC2:     TLNN IOS,SP\r
+       000732' 254000  000626'           JRST INJ4\r
+       000733' 201400  000012  ASC3:     MOVEI CHREC,12        ;LINE FEED\r
+       000734' 254000  000506'           JRST TYPE\r
+\r
+       000735' 260140  000630' SPC4A:    PUSHJ PDP,SETMB1\r
+       000736' 201040  000125            MOVEI TAC,"U"\r
+       000737' 254000  000672'           JRST INJ61\r
+\r
+       000740' 602000  004000  SPC2:     TRNE IOS,T35\r
+       000741' 254000  000513'           JRST LEAVE\r
+       000742' 201400  000040            MOVEI CHREC," "\r
+       000743' 661000  002000  SPC21:    TLO IOS,SP\r
+       000744' 254000  000506'           JRST TYPE\r
+\r
+       000745' 661000  042040  SPC7:     TLO IOS,SYNC+IOEND+SP         ;^Z\r
+       000746' 201040  000132            MOVEI TAC,"Z"\r
+       000747' 254000  000672'           JRST INJ61            ;ECHO ^Z\r
+\r
+\fSCNSER - SCANNER SERVICE      MACRO 10 05:51 24-APR-78 PAGE 16\r
+SCNSER MAC     24-APR-78 03:04         TOM EGGERS     8-9-65\r
+\r
+\r
+\r
+       000750' 200046  000640* DELET:    MOVE TAC,TTYCTR(DDB)\r
+       000751' 301040  000111            CAIL TAC,111\r
+       000752' 254000  000764'           JRST DELET1\r
+\r
+       000753' 205040  070000            MOVSI TAC,070000\r
+       000754' 270046  000632*           ADD TAC,TTYPTR(DDB)\r
+       000755' 603040  400000            TLNE TAC,400000\r
+       000756' 270040  001155'           ADD TAC,[XWD 347777,-1]\r
+       000757' 202046  000754*           MOVEM TAC,TTYPTR(DDB)\r
+       000760' 350006  000750*           AOS TTYCTR(DDB)\r
+\r
+       000761' 201400  000334            MOVEI CHREC,334               ;BACK SLASH\r
+       000762' 661000  002000  DELET2:   TLO IOS,SP\r
+       000763' 254000  000506'           JRST TYPE\r
+\r
+       000764' 201200  000001  DELET1:   MOVEI VPOS,1\r
+       000765' 201400  000015            MOVEI CHREC,15\r
+       000766' 254000  000762'           JRST DELET2\r
+\r
+\fSCNSER - SCANNER SERVICE      MACRO 10 05:51 24-APR-78 PAGE 17\r
+SCNSER MAC     24-APR-78 03:04         TOM EGGERS     8-9-65\r
+\r
+\r
+\r
+                               ;ROUTINE TO GET NEXT CHARACTER FROM OUTPUT BUFFER\r
+                               ;CALL:    PUSHJ PDP,GCHAR\r
+                               ;         NO MORE LEFT\r
+                               ;         RETURN WITH CHAR. IN CHREC\r
+\r
+       000767' 627000  000004  GCHAR:    TLZN IOS, IOFST\r
+       000770' 254000  000777'           JRST GCHAR3\r
+       000771' 550046  000010  GCHAR1:   HRRZ TAC,DEVOAD(DDB)\r
+       000772' 270040  001156'           ADD TAC, [XWD 000700+PROG,1]\r
+       000773' 202046  000757*           MOVEM TAC, TTYPTR(DDB)\r
+       000774' 550060  000001            HRRZ TAC, @TAC\r
+       000775' 221040  000005            IMULI TAC, 5\r
+       000776' 202046  000760*           MOVEM TAC,TTYCTR(DDB)\r
+       000777' 375006  000776* GCHAR3:   SOSGE TTYCTR(DDB)\r
+       001000' 254000  001023'           JRST GCHAR5\r
+       001001' 134406  000773*           LDBI CHREC, TTYPTR(DDB)\r
+       001002' 322400  001021'           JUMPE CHREC, GCHAR7\r
+       001003' 306400  000011            CAIN CHREC, 11\r
+       001004' 254000  001050'           JRST HT\r
+       001005' 306400  000012            CAIN CHREC, 12\r
+       001006' 344200  001015'           AOJA VPOS,GCH3\r
+       001007' 302400  000013            CAIE CHREC, 13\r
+       001010' 306400  000014            CAIN CHREC, 14\r
+       001011' 254000  001055'           JRST VTFF\r
+       001012' 271240  000001            ADDI HPOS,1\r
+       001013' 306400  000015            CAIN CHREC,15\r
+       001014' 201240  000000            MOVEI HPOS,0\r
+       001015' 354003  000000  GCH3:     AOSA (PDP)\r
+       001016' 200006  000651* GCH3A:    MOVE IOS,TTYSAV(DDB)          ;RESTORE STATUS TO USER\r
+       001017' 202006  000002  GCHAR4:   MOVEM IOS,DEVIOS(DDB)\r
+       001020' 263140  000000            POPJ PDP,\r
+\r
+       001021' 607000  100000  GCHAR7:   TLNN IOS,DDTM         ;DDT BUFFER TERMINATED WITH NULL\r
+       001022' 254000  000777'           JRST GCHAR3\r
+       001023' 261140  000002  GCHAR5:   PUSH PDP,TAC1\r
+       001024' 623000  000001            TLZE IOS, IOW\r
+       001025' 260140  000657*           PUSHJ PDP, SETIOD\r
+       001026' 262140  000002            POP PDP,TAC1\r
+       001027' 607000  101000            TLNN IOS,TPMON+DDTM\r
+       001030' 260140  000664*           PUSHJ PDP, ADVBFE\r
+       001031' 665000  000004            TLOA IOS,IOFST\r
+       001032' 254000  000771'           JRST GCHAR1\r
+       001033' 630000  001157'           TDZ IOS,[XWD IO,IOACT]\r
+       001034' 627000  000100            TLZN IOS,USRB\r
+       001035' 254000  001017'           JRST GCHAR4\r
+       001036' 621000  001000            TLZ IOS,TPMON\r
+       001037' 135100  000704*           LDB LINE,PUNIT        ;GET LINE NO.\r
+       001040' 261140  000004            PUSH PDP,ITEM\r
+       001041' 135200  000004'           LDB ITEM,TPCJOB\r
+       001042' 260140  000000*           PUSHJ PDP,SETRUN\r
+       001043' 262140  000004            POP PDP,ITEM\r
+\r
+\fSCNSER - SCANNER SERVICE      MACRO 10 05:51 24-APR-78 PAGE 17-1\r
+SCNSER MAC     24-APR-78 03:04         TOM EGGERS     8-9-65\r
+\r
+       001044' 626000  020000            TRZN IOS,USRBC\r
+       001045' 254000  001016'           JRST GCH3A\r
+       001046' 205000  001004            MOVSI IOS,TPMON+IOFST\r
+       001047' 254000  001017'           JRST GCHAR4\r
+       001050' 602000  004000  HT:       TRNE IOS,T35\r
+       001051' 344240  001015'           AOJA HPOS,GCH3\r
+       001052' 661000  002000            TLO IOS,SP\r
+       001053' 201400  000240  SPOUT:    MOVEI CHREC,240\r
+       001054' 254000  001015'           JRST GCH3\r
+\r
+       001055' 602000  004000  VTFF:     TRNE IOS,T35\r
+       001056' 344200  001015'           AOJA VPOS,GCH3\r
+       001057' 201400  000012            MOVEI CHREC,12\r
+       001060' 661000  002000            TLO IOS,SP\r
+       001061' 254000  001015'           JRST GCH3\r
+\r
+\fSCNSER - SCANNER SERVICE      MACRO 10 05:51 24-APR-78 PAGE 18\r
+SCNSER MAC     24-APR-78 03:04         TOM EGGERS     8-9-65\r
+\r
+\r
+       001062' 603000  100000  MOVBUF:   TLNE IOS,DDTM\r
+       001063' 254000  001123'           JRST MOV3 ;DONT ADVANCE BUFFERS FOR DDT MODE\r
+       001064' 627000  040000            TLZN IOS,SYNC\r
+       001065' 337006  000777*           SKIPG TTYCTR(DDB)\r
+       001066' 254000  001070'           JRST .+2\r
+       001067' 254000  001131'           JRST MIS1\r
+       001070' 603000  001000            TLNE IOS, TPMON\r
+       001071' 254000  001133'           JRST MOVMON\r
+       001072' 200046  000007            MOVE TAC,DEVIAD(DDB)          ;IS TTY EXPECTING INPUT?\r
+       001073' 602040  777777            TRNE TAC,-1   \r
+       001074' 335020  000001            SKIPGE @TAC                   ;OR IS NEXT BUFFER READY?\r
+       001075' 254000  001130'           JRST MIS  ;NO\r
+       001076' 261140  000002            PUSH PDP,TAC1\r
+       001077' 200046  001001*           MOVE TAC,TTYPTR(DDB)\r
+       001100' 260140  000253*           PUSHJ PDP,CLRBYT\r
+       001101' 200046  000007            MOVE TAC,DEVIAD(DDB)\r
+       001102' 260140  000000*           PUSHJ PDP,ADRCK    ;MAKE SURE BUFFER WILL FIT\r
+       001103' 551041  000000*           HRRZI TAC,STTYB1(TAC)         ;LENGTH+1\r
+\r
+       001104' 201066  000007            MOVEI TAC,@DEVIAD(DDB)\r
+       001105' 271040  000002            ADDI TAC,2\r
+       001106' 540400  000001            HRR CHREC,TAC\r
+       001107' 271040  000000*           ADDI TAC,STTYBF\r
+       001110' 505406  000635*           HRLI CHREC,TTYBUF(DDB)\r
+       001111' 251401  777777            BLT CHREC,-1 (TAC)\r
+       \r
+       001112' 201040  000111            MOVEI TAC,111\r
+       001113' 274046  001065*           SUB TAC, TTYCTR(DDB)\r
+       001114' 271040  000004            ADDI TAC,4\r
+       001115' 231040  000005            IDIVI TAC,5\r
+       001116' 201426  000007            MOVEI CHREC,@DEVIAD(DDB)\r
+       001117' 202050  000001            MOVEM TAC,1(CHREC)\r
+       001120' 260140  000000*           PUSHJ PDP, ADVBFF\r
+       001121' 254000  001122'           JRST .+1\r
+       001122' 665000  000004            TLOA IOS,IOFST\r
+       001123' 261140  000002  MOV3:     PUSH PDP,TAC1\r
+       001124' 623000  000001            TLZE IOS, IOW\r
+       001125' 260140  001025*           PUSHJ PDP, SETIOD\r
+       001126' 262140  000002            POP PDP,TAC1\r
+       001127' 624000  050000            TRZA IOS,NCERR+IOACT\r
+       001130' 660000  040000  MIS:      TRO IOS, NCERR\r
+       001131' 202006  000002  MIS1:     MOVEM IOS, DEVIOS(DDB)\r
+       001132' 263140  000000            POPJ PDP,\r
+       001133' 205040  400000  MOVMON:   MOVSI TAC,400000\r
+       001134' 436042  000442*           IORM TAC,TTYTAB(LINE)         ;SET BIT FOR MONITOR\r
+       001135' 661000  000004            TLO IOS,IOFST\r
+       001136' 201040  000015            MOVEI TAC,15\r
+       001137' 137046  001077*           DPB TAC,TTYPTR(DDB) ;FORCE A CARRIAGE RET INTO MONITOR COMM\r
+       001140' 350000  000000*           AOS COMCNT\r
+       001141' 263140  000000            POPJ PDP,\r
+\r
+                                         END,\r
+\r
+\fSCNSER - SCANNER SERVICE      MACRO 10 05:51 24-APR-78 PAGE 18-2\r
+SCNSER MAC     24-APR-78 03:04         TOM EGGERS     8-9-65\r
+\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 001160\r
+\r
+9K CORE USED\r
+\r
+\fSCNSER - SCANNER SERVICE      MACRO 10 05:51 24-APR-78 PAGE 19\r
+SCNSER MAC     24-APR-78 03:04         SYMBOL TABLE\r
+\r
+A              000000  INT\r
+AC1            000015  INT\r
+AC2            000016  INT\r
+AC3            000017  INT\r
+ADRCK          001102' EXT\r
+ADVBFE         001030' EXT\r
+ADVBFF         001120' EXT\r
+AL             000001  INT\r
+ASC1           000725' \r
+ASC2           000731' \r
+ASC3           000733' \r
+ASSCON         400000  INT\r
+ASSPRG         200000  INT\r
+B              000014  INT\r
+BUFPNT         000012  INT\r
+BUFWRD         000013  INT\r
+CCHAR          000055' \r
+CHREC          000010  \r
+CLDS           000311' EXT\r
+CLEN           000321' EXT\r
+CLOSB          002000  INT\r
+CLRBYT         001100' EXT\r
+CLSIN          000002  INT\r
+CLSOUT         000001  INT\r
+COMCNT         001140' EXT\r
+CPOPJ          000405' EXT\r
+CPOPJ1         000436' EXT\r
+CTSER3         000523' \r
+CTYINT         000331' INT\r
+CTYOU1         000346' \r
+CTYOUT         000324' \r
+CTYRUB         000345' \r
+D              000017  INT\r
+DAT            000005  INT\r
+DCHAR          000177  \r
+DCL            000001  INT\r
+DCSA           000300  SPD\r
+DCSB           000304  SPD\r
+DCW            020000  INT\r
+DDB            000006  \r
+DDBSRC         000377' \r
+DDI            000007  INT\r
+DDO            000006  INT\r
+DDTGT          000133' INT\r
+DDTGT2         000141' \r
+DDTIN          000153' INT\r
+DDTIN2         000157' \r
+DDTIN3         000166' \r
+DDTM           100000  \r
+DDTMEM         000037  INT\r
+DDTOUT         000206' INT\r
+DDTRL          000144' INT\r
+\r
+\r
+\fSCNSER - SCANNER SERVICE      MACRO 10 05:51 24-APR-78 PAGE 19-1\r
+SCNSER MAC     24-APR-78 03:04         SYMBOL TABLE\r
+\r
+DDTSYM         000036  INT\r
+DELET          000750' \r
+DELET1         000764' \r
+DELET2         000762' \r
+DEN            000004  INT\r
+DETH           010000  \r
+DEVADR         000007  INT\r
+DEVBUF         000006  INT\r
+DEVCHR         000001  INT\r
+DEVCTR         000011  INT\r
+DEVDAT         000006  INT\r
+DEVIAD         000007  INT\r
+DEVIOS         000002  INT\r
+DEVLOG         000005  INT\r
+DEVLST         000000  EXT\r
+DEVMOD         000004  INT\r
+DEVNAM         000000  INT\r
+DEVOAD         000010  INT\r
+DEVOPR         000435' EXT\r
+DEVPHY         000241' EXT\r
+DEVPTR         000010  INT\r
+DEVSER         000003  INT\r
+DGF            000012  INT\r
+DIN            000003  INT\r
+DLK            000005  INT\r
+DOU            000002  INT\r
+DR             000016  INT\r
+DRL            000000  INT\r
+DSI            000011  INT\r
+DSO            000010  INT\r
+DTW            040000  INT\r
+DVAVAL         000040  INT\r
+DVCDR          100000  INT\r
+DVDIR          000004  INT\r
+DVDIRI         400000  INT\r
+DVIN           000002  INT\r
+DVLPT          040000  INT\r
+DVMTA          000020  INT\r
+DVOUT          000001  INT\r
+DVTTY          000010  INT\r
+ECHO           000526' \r
+ECHOF          100000  \r
+ENTRB          020000  INT\r
+FSNCHN         000440' EXT\r
+GCH3           001015' \r
+GCH3A          001016' \r
+GCHAR          000767' \r
+GCHAR1         000771' \r
+GCHAR3         000777' \r
+GCHAR4         001017' \r
+GCHAR5         001023' \r
+GCHAR7         001021' \r
+HPOS           000005  \r
+\r
+\fSCNSER - SCANNER SERVICE      MACRO 10 05:51 24-APR-78 PAGE 19-2\r
+SCNSER MAC     24-APR-78 03:04         SYMBOL TABLE\r
+\r
+HT             001050' \r
+I              000010  INT\r
+IB             000013  INT\r
+IBUFB          200000  INT\r
+INITB          400000  INT\r
+INJ25          000620' \r
+INJ4           000626' \r
+INJ5           000642' \r
+INJ6           000655' \r
+INJ61          000672' \r
+INJ6A          000665' \r
+INJ7           000675' \r
+INJEST         000574' \r
+INPB           010000  INT\r
+INUS1          000470' \r
+INUS2          000500' \r
+INUS3          000504' \r
+INUSE          000461' \r
+IO             000020  INT\r
+IOACT          010000  INT\r
+IOBEG          000002  INT\r
+IOBKTL         040000  INT\r
+IOCON          000040  INT\r
+IODEND         020000  INT\r
+IODERR         200000  INT\r
+IODISC         400000  INT\r
+IODONE         400000  INT\r
+IODTER         100000  INT\r
+IOEND          000040  INT\r
+IOFST          000004  INT\r
+IOIMPM         400000  INT\r
+IONRCK         000100  INT\r
+IORDEL         000100  INT\r
+IORET          000020  INT\r
+IOS            000000  INT\r
+IOSTRT         000010  INT\r
+IOUSE          400000  INT\r
+IOW            000001  INT\r
+IOWC           000020  INT\r
+IOWS           400000  INT\r
+ITEM           000004  INT\r
+JBFADR         000000  INT\r
+JBFCTR         000002  INT\r
+JBFPTR         000001  INT\r
+JBTADR         000472' EXT\r
+JBUF           000005  INT\r
+JDAT           000011  INT\r
+JERR           002000  INT\r
+JIOW           100000  INT\r
+JNA            004000  INT\r
+JOB            000242' EXT\r
+LEAV0          000517' \r
+LEAV1          000514' \r
+\r
+\fSCNSER - SCANNER SERVICE      MACRO 10 05:51 24-APR-78 PAGE 19-3\r
+SCNSER MAC     24-APR-78 03:04         SYMBOL TABLE\r
+\r
+LEAVE          000513' \r
+LINE           000002  \r
+LOOKB          040000  INT\r
+MIS            001130' \r
+MIS1           001131' \r
+MLTTYL         000377' EXT\r
+MOD35          000572' \r
+MOV3           001123' \r
+MOVBUF         001062' \r
+MOVMON         001133' \r
+MTTYLN         000231' EXT\r
+MTW            010000  INT\r
+NCERR          040000  \r
+NIO            020000  \r
+OBUFB          100000  INT\r
+OUT            000271' EXT\r
+OUTPB          004000  INT\r
+PDP            000003  INT\r
+PHPOS          000000' \r
+PICHN          000100  INT\r
+PIOFF          000400  \r
+PIOMOD         000725' EXT\r
+PION           000200  \r
+PJOBN          000471' EXT\r
+PLASTC         000002' \r
+PROG           000007  INT\r
+PSCHAR         000003' \r
+PUNIT          001037' EXT\r
+PUUOAC         000214' EXT\r
+PVPOS          000001' \r
+RUN            200000  INT\r
+RUNABL         204000  INT\r
+SCITAB         000707' \r
+SCITL          000010  \r
+SCN1           000024' \r
+SCN2           000035' \r
+SCNCHL         000344' EXT\r
+SCNCHN         000347' EXT\r
+SCNIN          000410' \r
+SCNIN0         000424' \r
+SCNIN1         000437' \r
+SCNINI         000005' INT\r
+SCNINT         000354' INT\r
+SCNRET         000516' EXT\r
+SCNSAV         000356' EXT\r
+SCTAB          000544' \r
+SCTABL         000012  \r
+SETIOD         001125' EXT\r
+SETMB1         000630' \r
+SETRUN         001042' EXT\r
+SIM35          000532' \r
+SIM4           000565' \r
+SIMLF          000564' \r
+\r
+\fSCNSER - SCANNER SERVICE      MACRO 10 05:51 24-APR-78 PAGE 19-4\r
+SCNSER MAC     24-APR-78 03:04         SYMBOL TABLE\r
+\r
+SIMRO          000571' \r
+SIMVA          000561' \r
+SP             002000  \r
+SPACE          000556' \r
+SPC2           000740' \r
+SPC21          000743' \r
+SPC4A          000735' \r
+SPC7           000745' \r
+SPCCR          000717' \r
+SPCIN          000677' \r
+SPFF           000721' \r
+SPOUT          001053' \r
+SPVT           000722' \r
+STOP1          000646' EXT\r
+STTYB1         001103' EXT\r
+STTYBF         001107' EXT\r
+SYNC           040000  \r
+T35            004000  \r
+TAC            000001  INT\r
+TAC1           000002  INT\r
+TCOMM          000363' \r
+TCONLN         000506' EXT\r
+TEM            000010  INT\r
+TOUT           000010  \r
+TPCJOB         000004' \r
+TPMON          001000  \r
+TSCNLN         000000  EXT\r
+TTY            000120  SPD\r
+TTY0DB         000000  EXT\r
+TTYAT2         000070' \r
+TTYAT3         000110' \r
+TTYAT4         000115' \r
+TTYATC         020000  INT\r
+TTYATT         000065' INT\r
+TTYBFE         000636' EXT\r
+TTYBM1         000254' EXT\r
+TTYBUF         001110' EXT\r
+TTYCOM         000117' INT\r
+TTYCTR         001113' EXT\r
+TTYDAT         000247' \r
+TTYDET         000046' INT\r
+TTYDSP         000270' ENT\r
+TTYDT1         000052' \r
+TTYF0          000237' \r
+TTYFND         000243' INT\r
+TTYFNU         000242' INT\r
+TTYJOB         000130' INT\r
+TTYKIL         000041' INT\r
+TTYLST         000400' EXT\r
+TTYOU0         000302' \r
+TTYOU1         000321' \r
+TTYOU2         000310' \r
+TTYOUT         000300' \r
+\r
+\fSCNSER - SCANNER SERVICE      MACRO 10 05:51 24-APR-78 PAGE 19-5\r
+SCNSER MAC     24-APR-78 03:04         SYMBOL TABLE\r
+\r
+TTYPTR         001137' EXT\r
+TTYSAV         001016' EXT\r
+TTYSET         000062' INT\r
+TTYSR1         000230' \r
+TTYSRC         000231' \r
+TTYSTR         000252' INT\r
+TTYTAB         001134' EXT\r
+TTYURC         000056' INT\r
+TTYUSE         010000  INT\r
+TTYUSR         000057' INT\r
+TYP1           000510' \r
+TYPE           000506' \r
+TYPX           000447' \r
+TYPX1          000456' \r
+USRB           000100  \r
+USRBC          020000  \r
+USRMOD         010000  INT\r
+UUO            000014  INT\r
+UXIT           000227' EXT\r
+VPOS           000004  \r
+VTFF           001055' \r
+\f   SSSSSSSSSSSS      YYY         YYY         SSSSSSSSSSSS         CCCCCCCCCCCC         OOOOOOOOO         NNN         NNN\r
+   SSSSSSSSSSSS      YYY         YYY         SSSSSSSSSSSS         CCCCCCCCCCCC         OOOOOOOOO         NNN         NNN\r
+   SSSSSSSSSSSS      YYY         YYY         SSSSSSSSSSSS         CCCCCCCCCCCC         OOOOOOOOO         NNN         NNN\r
+SSS                  YYY         YYY      SSS                  CCC                  OOO         OOO      NNN         NNN\r
+SSS                  YYY         YYY      SSS                  CCC                  OOO         OOO      NNN         NNN\r
+SSS                  YYY         YYY      SSS                  CCC                  OOO         OOO      NNN         NNN\r
+SSS                     YYY   YYY         SSS                  CCC                  OOO         OOO      NNNNNN      NNN\r
+SSS                     YYY   YYY         SSS                  CCC                  OOO         OOO      NNNNNN      NNN\r
+SSS                     YYY   YYY         SSS                  CCC                  OOO         OOO      NNNNNN      NNN\r
+   SSSSSSSSS               YYY               SSSSSSSSS         CCC                  OOO         OOO      NNN   NNN   NNN\r
+   SSSSSSSSS               YYY               SSSSSSSSS         CCC                  OOO         OOO      NNN   NNN   NNN\r
+   SSSSSSSSS               YYY               SSSSSSSSS         CCC                  OOO         OOO      NNN   NNN   NNN\r
+            SSS            YYY                        SSS      CCC                  OOO         OOO      NNN      NNNNNN\r
+            SSS            YYY                        SSS      CCC                  OOO         OOO      NNN      NNNNNN\r
+            SSS            YYY                        SSS      CCC                  OOO         OOO      NNN      NNNNNN\r
+            SSS            YYY                        SSS      CCC                  OOO         OOO      NNN         NNN\r
+            SSS            YYY                        SSS      CCC                  OOO         OOO      NNN         NNN\r
+            SSS            YYY                        SSS      CCC                  OOO         OOO      NNN         NNN\r
+SSSSSSSSSSSS               YYY            SSSSSSSSSSSS            CCCCCCCCCCCC         OOOOOOOOO         NNN         NNN\r
+SSSSSSSSSSSS               YYY            SSSSSSSSSSSS            CCCCCCCCCCCC         OOOOOOOOO         NNN         NNN\r
+SSSSSSSSSSSS               YYY            SSSSSSSSSSSS            CCCCCCCCCCCC         OOOOOOOOO         NNN         NNN\r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  05:53:58\r
+File: DSKB0 :SYSCON.LST   [8,296] Created: 20-April-1967 05:51:00 Printed: 24-April-1978 05:53:37\r
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:1609 \r
+File will be deleted after printing\r
+\f\r
+SYSCON - UUO HANDLER   MACRO 10 05:51 24-APR-78 PAGE 1\r
+S      MAC     24-APR-78 21:40         8-9-65\r
+\r
+                                       XLIST\r
+                                      LIST\r
+                               TITLE SYSCON - UUO HANDLER\r
+                               SUBTTL 8-9-65\r
+                               EXTERNAL CLOSE1,ILLINS,IN,JOBAC,JOBADR,JOBDAT\r
+                               EXTERNAL MTAPE1,OUT,RELEA1,UINBF,UINIT,UOUTBF\r
+                               EXTERNAL USRJDA,USRSAV,USTATO,USTATS,USTATZ\r
+                               EXTERNAL ERROR,UUOERR,CLDS,CLEN\r
+                               EXTERNAL IOIERR,MJOBPD,JOBPDL,WAIT1,USRREL,PUUOAC\r
+                               EXTERNAL JOBPDL,MJOBPD,USETST\r
+\r
+\fSYSCON - UUO HANDLER  MACRO 10 05:51 24-APR-78 PAGE 2\r
+SYSCON MAC     24-APR-78 03:48         8-9-65\r
+\r
+\r
+\r
+\r
+                               , DEC 06 00 EX UUO L PT PRE 06 UUO HANDLER\r
+                               , 3/10/65\r
+                               ,   ALL UUOS DROP THEMSELVE IN REAL LOCATION 40, AND TRAP\r
+                               , TO 41. THE UUO HANDLER SHUFFLES THE UUO OFF TO THE USERS\r
+                               , 40,41, IF IT IS NOT A SYSTEM UUO.\r
+                               , SYSTEM UUOS FALL INTO THREE CLASSES, HANDLED DIFFERENTLY\r
+                               , (1) SYSTEM FUNCTIONS: LOAD ACS PDP, PROG, AND DISPATCH TO THE\r
+                               , FUNCTION.\r
+                               , (2) DEVICE INDEPENDENT I/O UUO: ALSO LOAD ACS DEVDAT AND IOS\r
+                               , AND GO THE THE SYSTEM FUNCTION.\r
+                               , (3) DEVICE DEPENDENT I/O UUOS: DO (1) AND (2), THEN DISPATCH\r
+                               , THROUGH THE TABLE WHOSE ADDRESS IS IN THE RIGHT HALF OF DEVSER(DEVD\r
+                               , CONTROL MAY ALWAYS BE RETURNED BY EXECUTING A\r
+                               ,    JRST UXIT\r
+                               , WHICH WILL RESTORE THE ACS, ARP BITS, AND RETURN.\r
+                               , THE UUO HANDLER IS PURE IF THE FOLLOWING RESTRICTIONS ARE OBSERVED.\r
+                               , RESTRICTIONS: UUOS CANNOT BE CALLED BY INTERRUPT SERVICE ROUTINES.\r
+                               , MONITOR INTERFACE\r
+                               ,         STORAGE: 89\r
+                               ,         ROUTINES CALLED: ILLINS, ADRCK, EXCLK, UUOH, SETIOS,UUOUSR\r
+                               ,            UUOS CALLED: CALL, INIT, RELEAS, CLOSE, OUTBUF, INBUF\r
+                               ,                         STATS, STATO, STATZ, OUTPUT, INPUT\r
+                               ,            DEVICE DEPENDENT:          DEN, DLK, DSO, DSI, DGF\r
+                               ,         SYMBOLS SET/USED:     \r
+                               ,                   ACCUMULATORS:       POP  S/U  TAC  S/U\r
+                               ,                                       PROG S/U  TAC1 S/U\r
+                               ,                                       SUB  S\r
+                               ,                   SYSTEM PARAMETERS:  UIO   U\r
+                               ,                                       USYS  U\r
+                               ,                                       USYSN U\r
+                               ,                   JOB AREA:           JOBAC  U  JOBDAT U\r
+                               ,                                       JOBPDP U\r
+                               ,                   SYSTEM ADDRESSES:   CLK    S/U\r
+                               ,                                       JOBADR U\r
+                               ,                                       USRLEV S/U\r
+                               ,                   DEVICE DATA BLOCK:  DEVSER U\r
+                               ,                   INTERNAL ADDRESSES: 40     S/U\r
+                               ,                                       UUO0   S/U\r
+                               ,                                       UUSAV  S/U\r
+\r
+\fSYSCON - UUO HANDLER  MACRO 10 05:51 24-APR-78 PAGE 3\r
+SYSCON MAC     24-APR-78 03:48         8-9-65\r
+\r
+\r
+\r
+\r
+                               INTERNAL UUO0\r
+\r
+       000000' 000000  000000  UUO0:     0\r
+       000001' 250040  000040            EXCH TAC,40           ;SAVE TAC; PICK UP UUO\r
+       000002' 202740  000000*           MOVEM 17,USRSAV       ;SAVE 17\r
+       000003' 603040  077000            TLNE TAC,77000        ;0 UUO IS ILLEGAL\r
+       000004' 603040  740000            TLNE TAC,740000       ;UUO FOR SYSTEM?\r
+       000005' 254000  000030'           JRST UUOSYS           ;YES\r
+       000006' 200740  000000*           MOVE 17,JOBADR        ;GET JOB AREA ADDRESS\r
+       000007' 202057  000040            MOVEM TAC,40(17)      ;STORE UUO IN USERS 40\r
+       000010' 550057  000041            HRRZ TAC,41(17)       ;PICK UP ADR OF USERS JSR\r
+       000011' 322040  000030'           JUMPE TAC,UUOSYS      ;IF ADDRESS=0,ILLEGAL USER UU\r
+       000012' 500040  000000'           HLL TAC,UUO0          ;PICK UP PROCESSOR FLAGS FOR\r
+       000013' 607040  010000            TLNN TAC,USRMOD       ;WAS UUO FROM USER?\r
+       000014' 254000  000030'           JRST UUOSYS           ;NO, ILLEGAL NUUO FROM SYSTEM\r
+       000015' 201741  000000            MOVEI 17,(TAC)        ;17 NOW HAS REL. ADR. OF USER\r
+       000016' 317740  000000*           CAMG 17,USRREL        ;DONT INCREMENT RETURN IF PC\r
+       000017' 541041  000001            HRRI TAC,1(TAC)       ;INCREMENT PC\r
+       000020' 250040  000000'           EXCH TAC,UUO0         ;SET UP RETURN  TO USER, PICK\r
+                                                               ;UP USERS FLAGS,PC\r
+       000021' 313740  000016*           CAMLE 17,USRREL       ;LEGAL MEMORY?\r
+       000022' 254000  000025'           JRST .+3  ;NO. DONT STORE PC\r
+       000023' 270740  000006*           ADD 17,JOBADR         ;MAKE REL. ADR. INTO ABS. ADR\r
+       000024' 202057  000000            MOVEM TAC,(17)        ;STORE FLAGS AND PC LIKE JSR\r
+       000025' 200040  000040            MOVE TAC,40           ;RESTORE TAC\r
+       000026' 200740  000002*           MOVE 17,USRSAV        ;RESTORE 17\r
+       000027' 254120  000000'           JRST 2,@UUO0          ;RETURN TO USER\r
+\r
+\fSYSCON - UUO HANDLER  MACRO 10 05:51 24-APR-78 PAGE 4\r
+SYSCON MAC     24-APR-78 03:48         8-9-65\r
+\r
+\r
+\r
+\r
+       000030' 250040  000040  UUOSYS:   EXCH TAC,40                   ;RESTORE TA. RESTORE THE UUO\r
+       000031' 200740  000000'           MOVE 17,UUO0                  ;PICK UP PROCESSOR FLAG\r
+       000032' 607740  010000            TLNN 17,USRMOD                ;SYSTEM UUO FROM SYSTEM?\r
+       000033' 254000  000046'           JRST UUOSY1                   ;YES\r
+       000034' 200740  000023*           MOVE 17,JOBADR                ;NO. PICK UP ADR. OF USER PRO\r
+       000035' 202717  000016            MOVEM 16,16(17)               ;STORE AC16 IN USER 16\r
+       000036' 550700  000017            HRRZ 16,17                    ;SET UP BLP POINTER\r
+       000037' 251717  000015            BLT 16,15(17)                 ;MOVE REAL ACS TO USER AREA\r
+       000040' 200000  000026*           MOVE 0,USRSAV                 ;MOVE USER 17 TO USERS AREA\r
+       000041' 202017  000017            MOVEM 0,17(17)\r
+       \r
+       000042' 200440  000000*           MOVE JDAT,JOBDAT              ;LOAD UP JOB DAT AREA ADDRES\r
+       000043' 205140  000000*           MOVSI PDP,MJOBPD              ;LOAD UP PUSH DOWN AC AND\r
+       000044' 541151  000000*           HRRI PDP,JOBPDL(JDAT)                   ;MAKE ABSOLUTE PATH\r
+       000045' 334340  000017            SKIPA PROG,17       ;PROGRAM BASE ADDRESS\r
+       000046' 200740  000040* UUOSY1:   MOVE 17,USRSAV                ;RESTORE AC17 IF UUO FROM SYS\r
+       000047' 261140  000000'           PUSH PDP,UUO0                 ;SAVE RETURN ON PUSH DOWN LIS\r
+       000050' 200600  000040            MOVE UUO,40                   ;GET THE UUO INTO AC(UUO)\r
+       000051' 135100  000250'           LDB TAC1,[POINT 9,UUO,8]                ;PICK UP UUO OP COD\r
+       000052' 301100  000100            CAIL TAC1,100                 ;ILLEGAL INSTRUCTION?\r
+       000053' 254000  000000*           JRST ILLINS                   ;YES\r
+       000054' 305100  000040            CAIGE TAC1,40                 ;SYSTEM UUO?\r
+       000055' 254000  000000*           JRST UUOERR                   ;NO. ILLEGAL\r
+       000056' 135040  000000*           LDB TAC,PUUOAC\r
+       000057' 200301  000000*           MOVE DEVDAT,USRJDA(TAC)       ;GET DDB\r
+       000060' 305100  000060            CAIGE TAC1,100-UUOT2L                   ;AN IO UUO?\r
+       000061' 254000  000070'           JRST UUODSP                   ;NO\r
+       000062' 302100  000070            CAIE TAC1,70          ;CLOSE AND RELEASE ARE ALWAYS LEGAL\r
+       000063' 306100  000071            CAIN TAC1,71\r
+       000064' 322300  000236'           JUMPE DEVDAT,UXIT\r
+       000065' 322300  000000*           JUMPE DEVDAT,IOIERR ;CHANNEL MUST BE ASSIGNED\r
+       000066' 200006  000002            MOVE IOS,DEVIOS(DEVDAT)                 ;GET DATA BLOCK STA\r
+       000067' 254002  000015'           JRST UUOT2-77+UUOT2L-1(TAC1)  ;DISPATCH\r
+\r
+       000070' 305100  000042  UUODSP:   CAIGE TAC1,40+UUOT1L          ;LEGAL SYSTEM UUO?\r
+       000071' 254002  000033'           JRST UUOT1-40(TAC1)           ;YES. DISPATCH\r
+       000072' 254000  000055*           JRST UUOERR\r
+\r
+\fSYSCON - UUO HANDLER  MACRO 10 05:51 24-APR-78 PAGE 5\r
+SYSCON MAC     24-APR-78 03:48         8-9-65\r
+\r
+\r
+\r
+       000073' 254000  000162' UUOT1:    JRST UCALL            ;40\r
+       000074' 254000  000000*           JRST UINIT\r
+                               ;ADD NON IO UUOS HERE\r
+\r
+                       000002  UUOT1L=.-UUOT1\r
+\r
+       000075'                 UUOT2:\r
+                               ;ADD IO UUOS HERE\r
+       000075' 254000  000000*           JRST USETST\r
+       000076' 254000  000000*           JRST USTATO\r
+       000077' 254000  000000*           JRST USTATS\r
+       000100' 254000  000000*           JRST USTATZ\r
+       000101' 254000  000000*           JRST UINBF\r
+       000102' 254000  000000*           JRST UOUTBF\r
+       000103' 254000  000000*           JRST IN\r
+       000104' 254000  000000*           JRST OUT\r
+       000105' 254000  000000*           JRST CLOSE1\r
+       000106' 254000  000000*           JRST RELEA1\r
+       000107' 254000  000000*           JRST MTAPE1\r
+       000110' 254000  000160'           JRST UDGF\r
+       000111' 254000  000156'           JRST UDSI\r
+       000112' 254000  000154'           JRST UDSO\r
+       000113' 254000  000143'           JRST UDLK\r
+       000114' 254000  000131'           JRST UDEN             ;77\r
+                       000020  UUOT2L=.-UUOT2\r
+\r
+\fSYSCON - UUO HANDLER  MACRO 10 05:51 24-APR-78 PAGE 6\r
+SYSCON MAC     24-APR-78 03:48         8-9-65\r
+\r
+\r
+\r
+                               ,DISPATCH TO SPECIAL ROUTINE\r
+                               DEFINE DSPT(A)\r
+                               <U'A:     PUSHJ PDP,UDSP\r
+                               JRST A(TAC)\r
+                               >\r
+       000115' 200046  000003  UDSP:     MOVE TAC,DEVSER(DEVDAT)\r
+       000116' 200106  000001            MOVE TAC1,DEVCHR(DEVDAT)\r
+       000117' 607100  000020            TLNN TAC1,IORET\r
+       000120' 201040  000116'           MOVEI TAC,NRTOSP-4    ;IGNORE THESE CALLS FOR NON-\r
+       000121' 263140  000000            POPJ PDP,\r
+       000122' 254000  000235' NRTOSP:   JRST CUXIT1           ;SKIP RETURN\r
+       000123' 254000  000235'           JRST CUXIT1           ;SKIP RETURN\r
+       000124' 265240  000000*           JSP DAT,ERROR         ;DUMP0\r
+       000125' 265240  000124*           JSP DAT,ERROR         ;DUMP1\r
+       000126' 254000  000072*           JRST UUOERR                   ;USETO\r
+       000127' 254000  000126*           JRST UUOERR                   ;USETI\r
+       000130' 254000  000127*           JRST UUOERR                   ;GETF\r
+       000131' 260140  000000* UDEN:     PUSHJ PDP,WAIT1\r
+       000132' 661000  000002            TLO IOS,IOBEG\r
+       000133' 620000  776000            TRZ IOS,776000\r
+       000134' 202006  000002            MOVEM IOS,DEVIOS(DEVDAT)\r
+       000135' 135040  000056*           LDB TAC,PUUOAC\r
+       000136' 661300  020000            TLO DEVDAT,ENTRB\r
+       000137' 621300  002000            TLZ DEVDAT,CLOSB\r
+       000140' 502301  000057*           HLLM DEVDAT,USRJDA(TAC)\r
+       000141' 260140  000115'           PUSHJ PDP,UDSP\r
+       000142' 254001  000004            JRST DEN(TAC)\r
+\r
+       000143' 260140  000131* UDLK:     PUSHJ PDP,WAIT1\r
+       000144' 630000  000251'           TDZ IOS,[XWD IOEND,776000]\r
+       000145' 202006  000002            MOVEM IOS,DEVIOS(DEVDAT)\r
+       000146' 135040  000135*           LDB TAC,PUUOAC\r
+       000147' 661300  040000            TLO DEVDAT,LOOKB\r
+       000150' 621300  002000            TLZ DEVDAT,CLOSB\r
+       000151' 502301  000140*           HLLM DEVDAT,USRJDA(TAC)\r
+       000152' 260140  000115'           PUSHJ PDP,UDSP\r
+       000153' 254001  000005            JRST DLK(TAC)\r
+\r
+       000154' 260140  000115'           DSPT(DSO)^UDSO:         PUSHJ PDP,UDSP\r
+       000155' 254001  000010  JRST DSO(TAC)\r
+\r
+       000156' 260140  000115'           DSPT(DSI)^UDSI:         PUSHJ PDP,UDSP\r
+       000157' 254001  000011  JRST DSI(TAC)\r
+\r
+       000160' 260140  000115'           DSPT(DGF)^UDGF:         PUSHJ PDP,UDSP\r
+       000161' 254001  000012  JRST DGF(TAC)\r
+\r
+\r
+\fSYSCON - UUO HANDLER  MACRO 10 05:51 24-APR-78 PAGE 7\r
+SYSCON MAC     24-APR-78 03:48         8-9-65\r
+\r
+\r
+\r
+                               , 6-CSS-DEC-CALL-PL-PRE2\r
+                               , H. R. MORSE       64-11-17\r
+                               , CALLING SEQUENCE\r
+                               ,         CALL 0,[SIXBIT/NAME/]\r
+                               , WHERE NAME IS THE NAME OF A SYSTEM ROUTINE.\r
+                               , IF NO SYSTEM ROUTINE WITH THE SPECIFIED NAME IF FOUND, THIS ROUTINE\r
+                               , EXISTS TO ERROR.\r
+                               , MONITOR INTERFACE\r
+                               ,         ROUTINES CALLED: ERROR, HASH, SYSTEM ROUTINES DEFINED BY\r
+                               ,                             USE OF UCALIN.\r
+                               ,         SYMBOLS SET/USED:\r
+                               ,                   ACCUMULATORS:       DAT S/U         PROG U\r
+                               ,                                       PDP U           UUO  S/U\r
+                               ;CONTENTS OF USER AC PLACED IN AC TAC\r
+\r
+       000162' 661600  000011  UCALL:    TLO UUO,JDAT          ;RELATIVIZE UUO ADDRESS\r
+       000163' 200260  000014            MOVE DAT,@UUO;                  DAT:=NAME OF SYSTEM ROUTINE C\r
+       000164' 205100  777760            MOVSI TAC1,-UCLLEN\r
+       000165' 312242  000174'           CAME DAT,UCLTAB(TAC1);          SEARCH SYSTEM TOUTINE NAME TA\r
+       000166' 253100  000165'           AOBJN TAC1,.-1\r
+       000167' 135240  000146*           LDB DAT,PUUOAC        ;USER UUO AC FIELD\r
+       000170' 505240  000011            HRLI DAT,JDAT\r
+       000171' 200060  000005            MOVE TAC,@DAT         ;PICK UP CONTENTS OF USER AC\r
+       000172' 321122  000214'           JUMPL TAC1,@UCLJMP(TAC1)\r
+       000173' 254000  000130*           JRST UUOERR\r
+\r
+                               DEFINE NAMES\r
+                               <         X DDTIN,DDTIN\r
+                                X DDTOUT,DDTOUT\r
+                                X DDTGT,DDTGT\r
+                                X DDTRL,DDTRL\r
+                                X SETDDT,SETDDT\r
+                                X DEVCHR,DVCHR\r
+                               X GETCHR,DVCHR\r
+                               X WAIT,WAIT\r
+                                X RESET,RESET\r
+                                X EXIT,EXIT\r
+                                X LDRBLT,LDRBLT\r
+                                X UTPCLR,UTPCLR\r
+                                X DATE,DATE\r
+                                X SETPOV,SETPOV\r
+                                X SWITCH,SWITCH\r
+                                X TIMER,TIMER\r
+                               >\r
+                               DEFINE X (A,B)\r
+                               <         SIXBIT /A/\r
+                               >\r
+       000174' 444464  515600  UCLTAB:   NAMES^          X DDTIN,DDTIN^          SIXBIT /DDTIN/\r
+       000175' 444464  576564   X DDTOUT,DDTOUT^         SIXBIT /DDTOUT/\r
+       000176' 444464  476400   X DDTGT,DDTGT^   SIXBIT /DDTGT/\r
+       000177' 444464  625400   X DDTRL,DDTRL^   SIXBIT /DDTRL/\r
+\r
+\fSYSCON - UUO HANDLER  MACRO 10 05:51 24-APR-78 PAGE 7-1\r
+SYSCON MAC     24-APR-78 03:48         8-9-65\r
+\r
+       000200' 634564  444464   X SETDDT,SETDDT^         SIXBIT /SETDDT/\r
+       000201' 444566  435062   X DEVCHR,DVCHR^          SIXBIT /DEVCHR/\r
+       000202' 474564  435062  X GETCHR,DVCHR^   SIXBIT /GETCHR/\r
+       000203' 674151  640000  X WAIT,WAIT^      SIXBIT /WAIT/\r
+       000204' 624563  456400   X RESET,RESET^   SIXBIT /RESET/\r
+       000205' 457051  640000   X EXIT,EXIT^     SIXBIT /EXIT/\r
+       000206' 544462  425464   X LDRBLT,LDRBLT^         SIXBIT /LDRBLT/\r
+       000207' 656460  435462   X UTPCLR,UTPCLR^         SIXBIT /UTPCLR/\r
+       000210' 444164  450000   X DATE,DATE^     SIXBIT /DATE/\r
+       000211' 634564  605766   X SETPOV,SETPOV^         SIXBIT /SETPOV/\r
+       000212' 636751  644350   X SWITCH,SWITCH^         SIXBIT /SWITCH/\r
+       000213' 645155  456200   X TIMER,TIMER^   SIXBIT /TIMER/\r
+                       000020  UCLLEN=.-UCLTAB\r
+\r
+                               DEFINE X(A,B)\r
+                               <         JRST B\r
+                               EXTERNAL B\r
+                               >\r
+       000214' 254000  000000* UCLJMP:   NAMES^          X DDTIN,DDTIN^          JRST DDTIN\r
+       000215' 254000  000000*  X DDTOUT,DDTOUT^         JRST DDTOUT\r
+       000216' 254000  000000*  X DDTGT,DDTGT^   JRST DDTGT\r
+       000217' 254000  000000*  X DDTRL,DDTRL^   JRST DDTRL\r
+       000220' 254000  000000*  X SETDDT,SETDDT^         JRST SETDDT\r
+       000221' 254000  000000*  X DEVCHR,DVCHR^          JRST DVCHR\r
+       000222' 254000  000221* X GETCHR,DVCHR^   JRST DVCHR\r
+       000223' 254000  000000* X WAIT,WAIT^      JRST WAIT\r
+       000224' 254000  000000*  X RESET,RESET^   JRST RESET\r
+       000225' 254000  000000*  X EXIT,EXIT^     JRST EXIT\r
+       000226' 254000  000000*  X LDRBLT,LDRBLT^         JRST LDRBLT\r
+       000227' 254000  000000*  X UTPCLR,UTPCLR^         JRST UTPCLR\r
+       000230' 254000  000000*  X DATE,DATE^     JRST DATE\r
+       000231' 254000  000000*  X SETPOV,SETPOV^         JRST SETPOV\r
+       000232' 254000  000000*  X SWITCH,SWITCH^         JRST SWITCH\r
+       000233' 254000  000000*  X TIMER,TIMER^   JRST TIMER\r
+\r
+\fSYSCON - UUO HANDLER  MACRO 10 05:51 24-APR-78 PAGE 8\r
+SYSCON MAC     24-APR-78 03:48         8-9-65\r
+\r
+\r
+\r
+                               , DEV 06 00 EX COM L PT PRE 02 UXIT\r
+                               , H. R. MORSE       64-12-26\r
+                               , CALLING SEQUENCE\r
+                               ,         ANY TRANSFER OF CONTROL TO UXIT\r
+                               , EXITS THIS UUO CALL.\r
+                               , MONITOR INTERFACE\r
+                               ,         SYMBOLS SET/USED:\r
+                               ,                   ACCUMULATORS:       MAY RESTORE ALL ACCUMULATORS\r
+                               ,                                       JDAT U\r
+                               ,                                       PDP U\r
+                               ,                                       17  S/U\r
+                               ,                   JOB AREA:           JOBAC U\r
+                               ,                   SYSTEM ADDRESSES:   USRUXT U\r
+                               ,                                       USRLEV S/U\r
+\r
+\fSYSCON - UUO HANDLER  MACRO 10 05:51 24-APR-78 PAGE 9\r
+SYSCON MAC     24-APR-78 03:48         8-9-65\r
+\r
+\r
+\r
+\r
+                                         INTERN UXIT,CUXIT1,CUXIT2\r
+\r
+       000234' 350003  000000  CUXIT2:   AOS (PDP)\r
+       000235' 350003  000000  CUXIT1:   AOS (PDP)\r
+       000236' 262140  000046* UXIT:     POP PDP,USRSAV                ;RESTORE UUO EXIT ADDRESS FRO\r
+       000237' 250040  000236*           EXCH TAC,USRSAV\r
+       000240' 607040  010000            TLNN TAC,USRMOD               ;WAS ENTRY FROM USER MODE?\r
+       000241' 254000  000246'           JRST UXIT2\r
+       000242' 202040  000237*           MOVEM TAC,USRSAV              ;SET UP RETURN\r
+       000243' 205751  000000*           MOVSI 17, JOBAC(JDAT)                   ;RESTORE ACCUMULATO\r
+       000244' 251740  000017            BLT 17,17\r
+       000245' 254120  000242* UXIT1:    JRST 2,@USRSAV                ;RETURN TO USERS PROGRAM\r
+\r
+       000246' 250040  000245* UXIT2:    EXCH TAC,USRSAV\r
+       000247' 254120  000246*           JRST 2,@USRSAV\r
+\r
+                                         END,\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 000252\r
+\r
+9K CORE USED\r
+\r
+\fSYSCON - UUO HANDLER  MACRO 10 05:51 24-APR-78 PAGE 10\r
+SYSCON MAC     24-APR-78 03:48         SYMBOL TABLE\r
+\r
+A              000000  INT\r
+AC1            000015  INT\r
+AC2            000016  INT\r
+AC3            000017  INT\r
+AL             000001  INT\r
+ASSCON         400000  INT\r
+ASSPRG         200000  INT\r
+B              000014  INT\r
+BUFPNT         000012  INT\r
+BUFWRD         000013  INT\r
+CLDS           000000  EXT\r
+CLEN           000000  EXT\r
+CLOSB          002000  INT\r
+CLOSE1         000105' EXT\r
+CLSIN          000002  INT\r
+CLSOUT         000001  INT\r
+CUXIT1         000235' INT\r
+CUXIT2         000234' INT\r
+D              000017  INT\r
+DAT            000005  INT\r
+DATE           000230' EXT\r
+DCL            000001  INT\r
+DCW            020000  INT\r
+DDI            000007  INT\r
+DDO            000006  INT\r
+DDTGT          000216' EXT\r
+DDTIN          000214' EXT\r
+DDTMEM         000037  INT\r
+DDTOUT         000215' EXT\r
+DDTRL          000217' EXT\r
+DDTSYM         000036  INT\r
+DEN            000004  INT\r
+DEVADR         000007  INT\r
+DEVBUF         000006  INT\r
+DEVCHR         000001  INT\r
+DEVCTR         000011  INT\r
+DEVDAT         000006  INT\r
+DEVIAD         000007  INT\r
+DEVIOS         000002  INT\r
+DEVLOG         000005  INT\r
+DEVMOD         000004  INT\r
+DEVNAM         000000  INT\r
+DEVOAD         000010  INT\r
+DEVPTR         000010  INT\r
+DEVSER         000003  INT\r
+DGF            000012  INT\r
+DIN            000003  INT\r
+DLK            000005  INT\r
+DOU            000002  INT\r
+DR             000016  INT\r
+DRL            000000  INT\r
+DSI            000011  INT\r
+\r
+\r
+\fSYSCON - UUO HANDLER  MACRO 10 05:51 24-APR-78 PAGE 10-1\r
+SYSCON MAC     24-APR-78 03:48         SYMBOL TABLE\r
+\r
+DSO            000010  INT\r
+DTW            040000  INT\r
+DVAVAL         000040  INT\r
+DVCDR          100000  INT\r
+DVCHR          000222' EXT\r
+DVDIR          000004  INT\r
+DVDIRI         400000  INT\r
+DVIN           000002  INT\r
+DVLPT          040000  INT\r
+DVMTA          000020  INT\r
+DVOUT          000001  INT\r
+DVTTY          000010  INT\r
+ENTRB          020000  INT\r
+ERROR          000125' EXT\r
+EXIT           000225' EXT\r
+I              000010  INT\r
+IB             000013  INT\r
+IBUFB          200000  INT\r
+ILLINS         000053' EXT\r
+IN             000103' EXT\r
+INITB          400000  INT\r
+INPB           010000  INT\r
+IO             000020  INT\r
+IOACT          010000  INT\r
+IOBEG          000002  INT\r
+IOBKTL         040000  INT\r
+IOCON          000040  INT\r
+IODEND         020000  INT\r
+IODERR         200000  INT\r
+IODISC         400000  INT\r
+IODONE         400000  INT\r
+IODTER         100000  INT\r
+IOEND          000040  INT\r
+IOFST          000004  INT\r
+IOIERR         000065' EXT\r
+IOIMPM         400000  INT\r
+IONRCK         000100  INT\r
+IORDEL         000100  INT\r
+IORET          000020  INT\r
+IOS            000000  INT\r
+IOSTRT         000010  INT\r
+IOUSE          400000  INT\r
+IOW            000001  INT\r
+IOWC           000020  INT\r
+IOWS           400000  INT\r
+ITEM           000004  INT\r
+JBFADR         000000  INT\r
+JBFCTR         000002  INT\r
+JBFPTR         000001  INT\r
+JBUF           000005  INT\r
+JDAT           000011  INT\r
+JERR           002000  INT\r
+\r
+\r
+\fSYSCON - UUO HANDLER  MACRO 10 05:51 24-APR-78 PAGE 10-2\r
+SYSCON MAC     24-APR-78 03:48         SYMBOL TABLE\r
+\r
+JIOW           100000  INT\r
+JNA            004000  INT\r
+JOBAC          000243' EXT\r
+JOBADR         000034' EXT\r
+JOBDAT         000042' EXT\r
+JOBPDL         000044' EXT\r
+LDRBLT         000226' EXT\r
+LOOKB          040000  INT\r
+MJOBPD         000043' EXT\r
+MTAPE1         000107' EXT\r
+MTW            010000  INT\r
+NRTOSP         000122' \r
+OBUFB          100000  INT\r
+OUT            000104' EXT\r
+OUTPB          004000  INT\r
+PDP            000003  INT\r
+PICHN          000100  INT\r
+PROG           000007  INT\r
+PUUOAC         000167' EXT\r
+RELEA1         000106' EXT\r
+RESET          000224' EXT\r
+RUN            200000  INT\r
+RUNABL         204000  INT\r
+SETDDT         000220' EXT\r
+SETPOV         000231' EXT\r
+SWITCH         000232' EXT\r
+TAC            000001  INT\r
+TAC1           000002  INT\r
+TEM            000010  INT\r
+TIMER          000233' EXT\r
+TTYATC         020000  INT\r
+TTYUSE         010000  INT\r
+UCALL          000162' \r
+UCLJMP         000214' \r
+UCLLEN         000020  \r
+UCLTAB         000174' \r
+UDEN           000131' \r
+UDGF           000160' \r
+UDLK           000143' \r
+UDSI           000156' \r
+UDSO           000154' \r
+UDSP           000115' \r
+UINBF          000101' EXT\r
+UINIT          000074' EXT\r
+UOUTBF         000102' EXT\r
+USETST         000075' EXT\r
+USRJDA         000151' EXT\r
+USRMOD         010000  INT\r
+USRREL         000021' EXT\r
+USRSAV         000247' EXT\r
+USTATO         000076' EXT\r
+USTATS         000077' EXT\r
+\r
+\r
+\fSYSCON - UUO HANDLER  MACRO 10 05:51 24-APR-78 PAGE 10-3\r
+SYSCON MAC     24-APR-78 03:48         SYMBOL TABLE\r
+\r
+USTATZ         000100' EXT\r
+UTPCLR         000227' EXT\r
+UUO            000014  INT\r
+UUO0           000000' INT\r
+UUODSP         000070' \r
+UUOERR         000173' EXT\r
+UUOSY1         000046' \r
+UUOSYS         000030' \r
+UUOT1          000073' \r
+UUOT1L         000002  \r
+UUOT2          000075' \r
+UUOT2L         000020  \r
+UXIT           000236' INT\r
+UXIT1          000245' \r
+UXIT2          000246' \r
+WAIT           000223' EXT\r
+WAIT1          000143' EXT\r
+\f   SSSSSSSSSSSS      YYY         YYY         SSSSSSSSSSSS         CCCCCCCCCCCC         SSSSSSSSSSSS         SSSSSSSSSSSS\r
+   SSSSSSSSSSSS      YYY         YYY         SSSSSSSSSSSS         CCCCCCCCCCCC         SSSSSSSSSSSS         SSSSSSSSSSSS\r
+   SSSSSSSSSSSS      YYY         YYY         SSSSSSSSSSSS         CCCCCCCCCCCC         SSSSSSSSSSSS         SSSSSSSSSSSS\r
+SSS                  YYY         YYY      SSS                  CCC                  SSS                  SSS            \r
+SSS                  YYY         YYY      SSS                  CCC                  SSS                  SSS            \r
+SSS                  YYY         YYY      SSS                  CCC                  SSS                  SSS            \r
+SSS                     YYY   YYY         SSS                  CCC                  SSS                  SSS            \r
+SSS                     YYY   YYY         SSS                  CCC                  SSS                  SSS            \r
+SSS                     YYY   YYY         SSS                  CCC                  SSS                  SSS            \r
+   SSSSSSSSS               YYY               SSSSSSSSS         CCC                     SSSSSSSSS            SSSSSSSSS   \r
+   SSSSSSSSS               YYY               SSSSSSSSS         CCC                     SSSSSSSSS            SSSSSSSSS   \r
+   SSSSSSSSS               YYY               SSSSSSSSS         CCC                     SSSSSSSSS            SSSSSSSSS   \r
+            SSS            YYY                        SSS      CCC                              SSS                  SSS\r
+            SSS            YYY                        SSS      CCC                              SSS                  SSS\r
+            SSS            YYY                        SSS      CCC                              SSS                  SSS\r
+            SSS            YYY                        SSS      CCC                              SSS                  SSS\r
+            SSS            YYY                        SSS      CCC                              SSS                  SSS\r
+            SSS            YYY                        SSS      CCC                              SSS                  SSS\r
+SSSSSSSSSSSS               YYY            SSSSSSSSSSSS            CCCCCCCCCCCC      SSSSSSSSSSSS         SSSSSSSSSSSS   \r
+SSSSSSSSSSSS               YYY            SSSSSSSSSSSS            CCCCCCCCCCCC      SSSSSSSSSSSS         SSSSSSSSSSSS   \r
+SSSSSSSSSSSS               YYY            SSSSSSSSSSSS            CCCCCCCCCCCC      SSSSSSSSSSSS         SSSSSSSSSSSS   \r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  05:53:58\r
+File: DSKB0 :SYSCSS.LST   [8,296] Created: 20-April-1967 05:51:00 Printed: 24-April-1978 05:53:38\r
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:1595 \r
+File will be deleted after printing\r
+\f\r
+SYSCSS - COMMON SYSTEM SUBROUTINES     MACRO 10 05:51 24-APR-78 PAGE 1\r
+S      MAC     24-APR-78 21:40         8-9-65\r
+\r
+                                       XLIST\r
+                                      LIST\r
+                               TITLE SYSCSS - COMMON SYSTEM SUBROUTINES\r
+                               SUBTTL 8-9-65\r
+                               EXTERNAL UXIT,ERROR,USRDDT,USRPOV,PUUOAC,USRREL\r
+\r
+                               ;RETURN THE DATE TO THE USER\r
+\r
+\r
+                                         INTERNAL DATE,THSDAT\r
+\r
+       000000' 200240  000002' DATE:     MOVE DAT, THSDAT\r
+       000001' 254000  000005'           JRST STOAC\r
+\r
+       000002' 000000  000000  THSDAT:   0             ;CONTAINS THE DATE\r
+\r
+                               ;RETURN TIME SYSTEM HAS RUN IN 60THS OF A SECOND\r
+\r
+                               INTERNAL TIMER\r
+                               EXTERNAL TIME\r
+\r
+       000003' 334240  000000* TIMER:    SKIPA DAT, TIME  ;FALL INTO STOAC\r
+\r
+                               ;RETURN DATA SWITCHES\r
+\r
+                               INTERNAL SWITCH\r
+\r
+       000004' 700040  000005  SWITCH:   DATAI DAT\r
+\r
+                               ;STORE DAT IN USER AC\r
+\r
+                               INTERNAL STOAC\r
+\r
+       000005' 135040  000000* STOAC:    LDB TAC, PUUOAC\r
+       000006' 505040  000007            HRLI TAC, PROG\r
+       000007' 202260  000001            MOVEM DAT,@TAC\r
+       000010' 254000  000000*           JRST UXIT\r
+\r
+                               ;RETURN DEVICE CHARACTERISTICS\r
+\r
+                               INTERNAL DVCHR\r
+                               EXTERNAL JOB,DEVSRC,PJOBN\r
+\r
+       000011' 200200  000000* DVCHR:    MOVE ITEM,JOB\r
+       000012' 260140  000000*           PUSHJ PDP,DEVSRC      ;SEARCH FOR DEVICE\r
+       000013' 334240  000034'           SKIPA DAT,[0]         ;NOT A DEVICE\r
+       000014' 334246  000004            SKIPA DAT,DEVMOD(DEVDAT)\r
+       000015' 254000  000005'           JRST STOAC\r
+       000016' 135040  000000*           LDB TAC,PJOBN         ;GET JOB NUMBER\r
+       000017' 312040  000011*           CAME TAC,JOB          ;DOES USER ALREADY HAVE THIS DEVICE?\r
+       000020' 606240  600000            TRNN DAT,ASSCON+ASSPRG        ;NO\r
+       000021' 661240  000040            TLO DAT,DVAVAL        ;NO, BUT HE CAN GET IT\r
+       000022' 254000  000005'           JRST STOAC\r
+\r
+\fSYSCSS - COMMON SYSTEM SUBROUTINES    MACRO 10 05:51 24-APR-78 PAGE 2\r
+SYSCSS MAC     24-APR-78 03:01         8-9-65\r
+\r
+\r
+\r
+                               , CALLING SEQUENCE\r
+                               ,         PUSHJ PDP,HASH\r
+                               ,         EXIT;L                ALWAYS RETURNS HERE\r
+                               , COMPUTES XOR HASH TYPE INDEX FROM NAME (SIXBIT CODE) IN AC DAT\r
+                               , AND LEAVES THE RESULT (00<OR= INDEX <OR=77) AS AN INTEGER IN TAC.\r
+                               , THE ALGORITHM IS AS FOLLOWS: (V = EXCLUSIVE OR)\r
+                               , BIT     35:=8V17V26V35\r
+                               ,         34:=7V16V25V34\r
+                               ,         33:=6V15V24V33\r
+                               ,         32:=5V11V23V29\r
+                               ,         31:=4V10V22V28\r
+                               ,         30:=3V9V21V27\r
+                               , MONITOR INTERFACE\r
+                               ,         SYMBOLS SET/USED:\r
+                               ,                   ACCUMULATORS:       DAT U           TAC S/U\r
+                               ,                                       PDP S/U         TAC1 S/U\r
+                               ;         INTERN HASH\r
+\r
+                               ;HASH:    HLR TAC,DAT\r
+                               ;         MOVE TAC1,DAT\r
+                               ;         XORB TAC1,TAC\r
+                               ;         ROT TAC1,-11\r
+                               ;         XOR TAC,TAC1\r
+                               ;         ANDI TAC,UTBNM1\r
+                               ;         POPJ PDP,             ;       RETURN\r
+\r
+\fSYSCSS - COMMON SYSTEM SUBROUTINES    MACRO 10 05:51 24-APR-78 PAGE 3\r
+SYSCSS MAC     24-APR-78 03:01         8-9-65\r
+\r
+\r
+                                         INTERNAL SETDDT\r
+\r
+       000023' 545040  010000  SETDDT:   HLRI TAC,10000\r
+       000024' 202040  000000*           MOVEM TAC,USRDDT\r
+       000025' 254000  000010*           JRST UXIT\r
+\r
+\r
+                                         INTERNAL SETPOV\r
+\r
+       000026' 545040  010000  SETPOV:   HLRI TAC,10000\r
+       000027' 202040  000000*           MOVEM TAC,USRPOV\r
+       000030' 254000  000025*           JRST UXIT\r
+\r
+                               ;WAIT FOR IO TO BECOME INACTIVE ON CHANNEL AC\r
+\r
+                               INTERNAL WAIT\r
+                               EXTERNAL IOIERR,WAIT1\r
+\r
+       000031' 322300  000000* WAIT:     JUMPE DEVDAT,IOIERR ;CHANNEL ASSIGNED?\r
+       000032' 260140  000000*           PUSHJ PDP,WAIT1     ;WAIT TILL INACTIVE\r
+       000033' 254000  000030*           JRST UXIT\r
+                                         END,\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 000035\r
+\r
+9K CORE USED\r
+\r
+\fSYSCSS - COMMON SYSTEM SUBROUTINES    MACRO 10 05:51 24-APR-78 PAGE 4\r
+SYSCSS MAC     24-APR-78 03:01         SYMBOL TABLE\r
+\r
+A              000000  INT\r
+AC1            000015  INT\r
+AC2            000016  INT\r
+AC3            000017  INT\r
+AL             000001  INT\r
+ASSCON         400000  INT\r
+ASSPRG         200000  INT\r
+B              000014  INT\r
+BUFPNT         000012  INT\r
+BUFWRD         000013  INT\r
+CLOSB          002000  INT\r
+CLSIN          000002  INT\r
+CLSOUT         000001  INT\r
+D              000017  INT\r
+DAT            000005  INT\r
+DATE           000000' INT\r
+DCL            000001  INT\r
+DCW            020000  INT\r
+DDI            000007  INT\r
+DDO            000006  INT\r
+DDTMEM         000037  INT\r
+DDTSYM         000036  INT\r
+DEN            000004  INT\r
+DEVADR         000007  INT\r
+DEVBUF         000006  INT\r
+DEVCHR         000001  INT\r
+DEVCTR         000011  INT\r
+DEVDAT         000006  INT\r
+DEVIAD         000007  INT\r
+DEVIOS         000002  INT\r
+DEVLOG         000005  INT\r
+DEVMOD         000004  INT\r
+DEVNAM         000000  INT\r
+DEVOAD         000010  INT\r
+DEVPTR         000010  INT\r
+DEVSER         000003  INT\r
+DEVSRC         000012' EXT\r
+DGF            000012  INT\r
+DIN            000003  INT\r
+DLK            000005  INT\r
+DOU            000002  INT\r
+DR             000016  INT\r
+DRL            000000  INT\r
+DSI            000011  INT\r
+DSO            000010  INT\r
+DTW            040000  INT\r
+DVAVAL         000040  INT\r
+DVCDR          100000  INT\r
+DVCHR          000011' INT\r
+DVDIR          000004  INT\r
+DVDIRI         400000  INT\r
+DVIN           000002  INT\r
+\r
+\r
+\fSYSCSS - COMMON SYSTEM SUBROUTINES    MACRO 10 05:51 24-APR-78 PAGE 4-1\r
+SYSCSS MAC     24-APR-78 03:01         SYMBOL TABLE\r
+\r
+DVLPT          040000  INT\r
+DVMTA          000020  INT\r
+DVOUT          000001  INT\r
+DVTTY          000010  INT\r
+ENTRB          020000  INT\r
+ERROR          000000  EXT\r
+I              000010  INT\r
+IB             000013  INT\r
+IBUFB          200000  INT\r
+INITB          400000  INT\r
+INPB           010000  INT\r
+IO             000020  INT\r
+IOACT          010000  INT\r
+IOBEG          000002  INT\r
+IOBKTL         040000  INT\r
+IOCON          000040  INT\r
+IODEND         020000  INT\r
+IODERR         200000  INT\r
+IODISC         400000  INT\r
+IODONE         400000  INT\r
+IODTER         100000  INT\r
+IOEND          000040  INT\r
+IOFST          000004  INT\r
+IOIERR         000031' EXT\r
+IOIMPM         400000  INT\r
+IONRCK         000100  INT\r
+IORDEL         000100  INT\r
+IORET          000020  INT\r
+IOS            000000  INT\r
+IOSTRT         000010  INT\r
+IOUSE          400000  INT\r
+IOW            000001  INT\r
+IOWC           000020  INT\r
+IOWS           400000  INT\r
+ITEM           000004  INT\r
+JBFADR         000000  INT\r
+JBFCTR         000002  INT\r
+JBFPTR         000001  INT\r
+JBUF           000005  INT\r
+JDAT           000011  INT\r
+JERR           002000  INT\r
+JIOW           100000  INT\r
+JNA            004000  INT\r
+JOB            000017' EXT\r
+LOOKB          040000  INT\r
+MTW            010000  INT\r
+OBUFB          100000  INT\r
+OUTPB          004000  INT\r
+PDP            000003  INT\r
+PICHN          000100  INT\r
+PJOBN          000016' EXT\r
+PROG           000007  INT\r
+PUUOAC         000005' EXT\r
+\r
+\fSYSCSS - COMMON SYSTEM SUBROUTINES    MACRO 10 05:51 24-APR-78 PAGE 4-2\r
+SYSCSS MAC     24-APR-78 03:01         SYMBOL TABLE\r
+\r
+RUN            200000  INT\r
+RUNABL         204000  INT\r
+SETDDT         000023' INT\r
+SETPOV         000026' INT\r
+STOAC          000005' INT\r
+SWITCH         000004' INT\r
+TAC            000001  INT\r
+TAC1           000002  INT\r
+TEM            000010  INT\r
+THSDAT         000002' INT\r
+TIME           000003' EXT\r
+TIMER          000003' INT\r
+TTYATC         020000  INT\r
+TTYUSE         010000  INT\r
+USRDDT         000024' EXT\r
+USRMOD         010000  INT\r
+USRPOV         000027' EXT\r
+USRREL         000000  EXT\r
+UUO            000014  INT\r
+UXIT           000033' EXT\r
+WAIT           000031' INT\r
+WAIT1          000032' EXT\r
+\f   SSSSSSSSSSSS      YYY         YYY         SSSSSSSSSSSS         IIIIIIIII         NNN         NNN         IIIIIIIII   \r
+   SSSSSSSSSSSS      YYY         YYY         SSSSSSSSSSSS         IIIIIIIII         NNN         NNN         IIIIIIIII   \r
+   SSSSSSSSSSSS      YYY         YYY         SSSSSSSSSSSS         IIIIIIIII         NNN         NNN         IIIIIIIII   \r
+SSS                  YYY         YYY      SSS                        III            NNN         NNN            III      \r
+SSS                  YYY         YYY      SSS                        III            NNN         NNN            III      \r
+SSS                  YYY         YYY      SSS                        III            NNN         NNN            III      \r
+SSS                     YYY   YYY         SSS                        III            NNNNNN      NNN            III      \r
+SSS                     YYY   YYY         SSS                        III            NNNNNN      NNN            III      \r
+SSS                     YYY   YYY         SSS                        III            NNNNNN      NNN            III      \r
+   SSSSSSSSS               YYY               SSSSSSSSS               III            NNN   NNN   NNN            III      \r
+   SSSSSSSSS               YYY               SSSSSSSSS               III            NNN   NNN   NNN            III      \r
+   SSSSSSSSS               YYY               SSSSSSSSS               III            NNN   NNN   NNN            III      \r
+            SSS            YYY                        SSS            III            NNN      NNNNNN            III      \r
+            SSS            YYY                        SSS            III            NNN      NNNNNN            III      \r
+            SSS            YYY                        SSS            III            NNN      NNNNNN            III      \r
+            SSS            YYY                        SSS            III            NNN         NNN            III      \r
+            SSS            YYY                        SSS            III            NNN         NNN            III      \r
+            SSS            YYY                        SSS            III            NNN         NNN            III      \r
+SSSSSSSSSSSS               YYY            SSSSSSSSSSSS            IIIIIIIII         NNN         NNN         IIIIIIIII   \r
+SSSSSSSSSSSS               YYY            SSSSSSSSSSSS            IIIIIIIII         NNN         NNN         IIIIIIIII   \r
+SSSSSSSSSSSS               YYY            SSSSSSSSSSSS            IIIIIIIII         NNN         NNN         IIIIIIIII   \r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  05:53:58\r
+File: DSKB0 :SYSINI.LST   [8,296] Created: 20-April-1967 05:51:00 Printed: 24-April-1978 05:53:38\r
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:1589 \r
+File will be deleted after printing\r
+\f\r
+SYSINI - SYSTEM INITIALIZATION MACRO 10 05:51 24-APR-78 PAGE 1\r
+S      MAC     24-APR-78 21:40         8-9-65\r
+\r
+                                       XLIST\r
+                                      LIST\r
+                               TITLE SYSINI - SYSTEM INITIALIZATION\r
+                               SUBTTL 8-9-65\r
+                               EXTERNAL APRCHN,ERROR,IOINI\r
+                               EXTERNAL DDT,NULJOB,SYSMAK,ONCE,SYSBEG,SYSBG1,SYSEND\r
+                               EXTERNAL CORTAB,CORLST,CORTAL,CORBLK,SYSSIZ,LINKSR\r
+\r
+                               ;SYSTEM INITIALIZATION DISPATCHTABLE, STARTING AT LOC. 140\r
+                               ;THIS SUBROUTINE MUST BE LOADED FIRST\r
+                               ;ROUTINE ONCE IS ONCE ONLY CODE. IT CONVERTS THE DATE\r
+                               ;AND SETS UP IO SERVICE CHAIN.\r
+\r
+\r
+\r
+                               INTERNAL SYSDSP\r
+\r
+       000000' 254000  000010' SYSDSP:   JRST SYSINI           ;INITIALIZE SYSTEM VARIABLES ONCE ONLY\r
+       000001' 254000  000000*           JRST DDT      ;EXEC DDT\r
+       000002' 254000  000000*           JRST SYSMAK           ;MAKE NEW SYSTEM\r
+       000003' 254000  000010'           JRST SYSINI           ;INITIALIZE SYSTEM VARIABLES ALWAYS\r
+       000004' 254000  000000*           JEN NULJOB            ;ERROR RECOVERY\r
+       000005' 254000  000007'           JRST SYSONE           ;DO ONCE ONLY CODE OVER AGAIN\r
+       000006' 254000  000012'           JRST JSR2 ;BYPASS ONCE ONLY OPERATOR DIALOG\r
+                                                   ;(IN CASE CONSOLE TTY DOWN)\r
+\r
+\fSYSINI - SYSTEM INITIALIZATION        MACRO 10 05:51 24-APR-78 PAGE 2\r
+SYSINI MAC     24-APR-78 00:39         8-9-65\r
+\r
+\r
+\r
+                               ;INITIALIZE SYSTEM DATA STORAGE\r
+\r
+                               INTERNAL SYSINI\r
+                       010000  NXM=10000 ;NON EX MEM FLAG\r
+\r
+       000007' 264000  000000* SYSONE:   JSR ONCE  ;ONCE ONLY CODE\r
+       000010' 700200  200000  SYSINI:   CONO APR,200000       ;IO RESET\r
+       000011' 264000  000007* JSR1:     JSR ONCE  ;DO ONCE ONLY CODE ONCE\r
+       000012' 264000  000000* JSR2:     JSR LINKSR            ;LINK IO SERVICE ROUTINES\r
+       000013' 204040  000014'           MOVS TAC,.+1\r
+       000014' 403100  000000*           SETZB TAC1,SYSBEG\r
+       000015' 206040  000011'           MOVSM TAC,JSR1\r
+       000016' 206040  000012'           MOVSM TAC,JSR2\r
+       000017' 541040  000000*           HRRI TAC,SYSBG1       ;CLEAR SYSTEM DATA STORAGE\r
+       000020' 251040  000000*           BLT TAC,SYSEND\r
+       000021' 205040  430000            MOVSI TAC, DVDIRIN+TTYATC+TTYUSE\r
+       000022' 541040  600000            HRRI TAC,ASSCON+ASSPRG\r
+       000023' 554300  000000*           HLRZ DEVDAT,DEVLST   ;SCAN ALL DEVICES\r
+       000024' 412046  000004  SYS1:     ANDCAM TAC, DEVMOD(DEVDAT)    ;CLEAR DIRECTORY IN CORE BIT,\r
+                                               ;ASSIGNED BY CONSOLE & PROGRAM\r
+       000025' 402006  000005            SETZM DEVLOG(DEVDAT)          ;CLEAR LOGICAL NAME\r
+       000026' 554306  000003            HLRZ DEVDAT, DEVSER(DEVDAT)\r
+       000027' 326300  000024'           JUMPN DEVDAT, SYS1\r
+       000030' 200440  000105'           MOVE JDAT,COREP       ;SET UP CORE USE BIT TABLE\r
+       000031' 202440  000000*           MOVEM JDAT,CORLST\r
+       000032' 201040  000000*           MOVEI TAC,CORBLK      ;NO. OF 1K BLOCKS IN TABLE\r
+       000033' 700200  010000  SYS2:     CONO APR,NXM          ;CLEAR NON EX MEM\r
+       000034' 133000  000011            IBP JDAT      ;MOVE BYTE POINTER\r
+       000035' 510242  000000            HLLZ DAT,(TAC1)       ;REFERENCE MEMORY, CLEAR RT. OF DAT\r
+       000036' 313100  000000*           CAMLE TAC1,SYSSIZ     ;HIGHEST LOC IN EXEC.\r
+       000037' 700300  010000            CONSZ APR,NXM         ;CAN MEMORY BE USED FOR USER PROG?\r
+       000040' 344240  000043'           AOJA DAT,SYS3         ;NO, MARK AS INACCESIBLE (1 BIT)\r
+       000041' 350000  000000*           AOS CORTAL\r
+       000042' 202440  000031*           MOVEM JDAT,CORLST     ;AND SET LAST FREE BLOCK POINTER\r
+       000043' 137240  000011  SYS3:     DPB DAT,JDAT          ;STORE 0 OR 1 IN TABLE\r
+       000044' 271100  002000            ADDI TAC1,2000        ;INCREMENT MEMORY REF\r
+       000045' 367040  000033'           SOJG TAC,SYS2\r
+       000046' 133000  000042*           IBP CORLST            ;SET TO FIRST UNAVAILABLE BLOCK\r
+       000047' 541040  000051'           HRRI 1,IOGO\r
+       000050' 542040  000000'           HRRM 1,SYSDSP         ;FALINTO IOGO\r
+\r
+\fSYSINI - SYSTEM INITIALIZATION        MACRO 10 05:51 24-APR-78 PAGE 3\r
+SYSINI MAC     24-APR-78 00:39         8-9-65\r
+\r
+\r
+\r
+                               ;INITIALIZE ALL IODEVICES\r
+\r
+                                         INTERNAL IOGO\r
+                                         EXTERNAL DEVLST, MJOBN, JBTADR,JBTSTS,IOINI\r
+                               EXTERNAL DCREQ,MTREQ,DTREQ\r
+\r
+       000051' 201040  000000* IOGO:     MOVEI TAC,APRCHN\r
+       000052' 700201  633440            CONO APR,633440(TAC)\r
+       000053' 554040  000023*           HLRZ TAC, DEVLST       ;CHAIN OF DEVICE DATA BLOKS\r
+       000054' 201100  200000  IOG0:     MOVEI TAC1,ASSPRG      ;CLEAR ASSIGNED BY PROGRAM BIT\r
+       000055' 413101  000004            ANDCAB TAC1,DEVMOD(TAC)\r
+       000056' 525200  000720            HRLOI ITEM,IORET+7*PICHN      ;CLEAR JOB NO., USER CHANNEL\r
+       000057' 602100  400000            TRNE TAC1,ASSCON\r
+       000060' 661200  777000            TLO ITEM,777000\r
+       000061' 406201  000001            ANDM ITEM,DEVCHR(TAC)         ;BUT NOT IORET BIT OR PII CHA\r
+       000062' 402001  000002            SETZM DEVIOS(TAC)     ;CLEAR IO STATUS WORD\r
+       000063' 402001  000006            SETZM DEVBUF(TAC)     ;CLEAR BUFFER ADDRESS\r
+       000064' 554041  000003            HLRZ TAC, DEVSER(TAC)\r
+       000065' 326040  000054'           JUMPN TAC, IOG0\r
+       000066' 476000  000000*           SETOM DCREQ           ;CLEAR DEVICE REQUEST COUNTS\r
+       000067' 476000  000000*           SETOM MTREQ   \r
+       000070' 476000  000000*           SETOM DTREQ\r
+       000071' 201140  000100'           MOVEI PDP,IOPDL-1\r
+       000072' 260140  000000*           PUSHJ PDP,IOINI       ;INITIALIZE IO DEVICES\r
+       000073' 205240  000000*           MOVSI DAT,MJOBN       ;JOB NUMBER ASSIGNED BIT\r
+       000074' 200040  000106'           MOVE TAC,[XWD JERR,1]         ;SET ERROR BIT, CLEAR ALL 0TH\r
+       000075' 202045  000000* IOG1:     MOVEM TAC,JBTSTS(DAT)\r
+       000076' 253240  000075'           AOBJN DAT,IOG1\r
+       000077' 700600  012377            CONO PI,12377\r
+       000100' 254000  000004*           JRST NULJOB           ;START THE NULL JOB\r
+       000101'                 IOPDL:    BLOCK 4\r
+       000105' 440100  000000* COREP:    POINT 1,CORTAB        ;1 BIT BYTE POINTER TO CORE USE TABLE\r
+\r
+                       000010'           END SYSINI\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 000107\r
+\r
+9K CORE USED\r
+\r
+\fSYSINI - SYSTEM INITIALIZATION        MACRO 10 05:51 24-APR-78 PAGE 4\r
+SYSINI MAC     24-APR-78 00:39         SYMBOL TABLE\r
+\r
+A              000000  INT\r
+AC1            000015  INT\r
+AC2            000016  INT\r
+AC3            000017  INT\r
+AL             000001  INT\r
+APR            000000  SPD\r
+APRCHN         000051' EXT\r
+ASSCON         400000  INT\r
+ASSPRG         200000  INT\r
+B              000014  INT\r
+BUFPNT         000012  INT\r
+BUFWRD         000013  INT\r
+CLOSB          002000  INT\r
+CLSIN          000002  INT\r
+CLSOUT         000001  INT\r
+CORBLK         000032' EXT\r
+COREP          000105' \r
+CORLST         000046' EXT\r
+CORTAB         000105' EXT\r
+CORTAL         000041' EXT\r
+D              000017  INT\r
+DAT            000005  INT\r
+DCL            000001  INT\r
+DCREQ          000066' EXT\r
+DCW            020000  INT\r
+DDI            000007  INT\r
+DDO            000006  INT\r
+DDT            000001' EXT\r
+DDTMEM         000037  INT\r
+DDTSYM         000036  INT\r
+DEN            000004  INT\r
+DEVADR         000007  INT\r
+DEVBUF         000006  INT\r
+DEVCHR         000001  INT\r
+DEVCTR         000011  INT\r
+DEVDAT         000006  INT\r
+DEVIAD         000007  INT\r
+DEVIOS         000002  INT\r
+DEVLOG         000005  INT\r
+DEVLST         000053' EXT\r
+DEVMOD         000004  INT\r
+DEVNAM         000000  INT\r
+DEVOAD         000010  INT\r
+DEVPTR         000010  INT\r
+DEVSER         000003  INT\r
+DGF            000012  INT\r
+DIN            000003  INT\r
+DLK            000005  INT\r
+DOU            000002  INT\r
+DR             000016  INT\r
+DRL            000000  INT\r
+DSI            000011  INT\r
+\r
+\r
+\fSYSINI - SYSTEM INITIALIZATION        MACRO 10 05:51 24-APR-78 PAGE 4-1\r
+SYSINI MAC     24-APR-78 00:39         SYMBOL TABLE\r
+\r
+DSO            000010  INT\r
+DTREQ          000070' EXT\r
+DTW            040000  INT\r
+DVAVAL         000040  INT\r
+DVCDR          100000  INT\r
+DVDIR          000004  INT\r
+DVDIRI         400000  INT\r
+DVIN           000002  INT\r
+DVLPT          040000  INT\r
+DVMTA          000020  INT\r
+DVOUT          000001  INT\r
+DVTTY          000010  INT\r
+ENTRB          020000  INT\r
+ERROR          000000  EXT\r
+I              000010  INT\r
+IB             000013  INT\r
+IBUFB          200000  INT\r
+INITB          400000  INT\r
+INPB           010000  INT\r
+IO             000020  INT\r
+IOACT          010000  INT\r
+IOBEG          000002  INT\r
+IOBKTL         040000  INT\r
+IOCON          000040  INT\r
+IODEND         020000  INT\r
+IODERR         200000  INT\r
+IODISC         400000  INT\r
+IODONE         400000  INT\r
+IODTER         100000  INT\r
+IOEND          000040  INT\r
+IOFST          000004  INT\r
+IOG0           000054' \r
+IOG1           000075' \r
+IOGO           000051' INT\r
+IOIMPM         400000  INT\r
+IOINI          000072' EXT\r
+IONRCK         000100  INT\r
+IOPDL          000101' \r
+IORDEL         000100  INT\r
+IORET          000020  INT\r
+IOS            000000  INT\r
+IOSTRT         000010  INT\r
+IOUSE          400000  INT\r
+IOW            000001  INT\r
+IOWC           000020  INT\r
+IOWS           400000  INT\r
+ITEM           000004  INT\r
+JBFADR         000000  INT\r
+JBFCTR         000002  INT\r
+JBFPTR         000001  INT\r
+JBTADR         000000  EXT\r
+JBTSTS         000075' EXT\r
+JBUF           000005  INT\r
+\r
+\fSYSINI - SYSTEM INITIALIZATION        MACRO 10 05:51 24-APR-78 PAGE 4-2\r
+SYSINI MAC     24-APR-78 00:39         SYMBOL TABLE\r
+\r
+JDAT           000011  INT\r
+JERR           002000  INT\r
+JIOW           100000  INT\r
+JNA            004000  INT\r
+JSR1           000011' \r
+JSR2           000012' \r
+LINKSR         000012' EXT\r
+LOOKB          040000  INT\r
+MJOBN          000073' EXT\r
+MTREQ          000067' EXT\r
+MTW            010000  INT\r
+NULJOB         000100' EXT\r
+NXM            010000  \r
+OBUFB          100000  INT\r
+ONCE           000011' EXT\r
+OUTPB          004000  INT\r
+PDP            000003  INT\r
+PI             000004  SPD\r
+PICHN          000100  INT\r
+PROG           000007  INT\r
+RUN            200000  INT\r
+RUNABL         204000  INT\r
+SYS1           000024' \r
+SYS2           000033' \r
+SYS3           000043' \r
+SYSBEG         000014' EXT\r
+SYSBG1         000017' EXT\r
+SYSDSP         000000' INT\r
+SYSEND         000020' EXT\r
+SYSINI         000010' INT\r
+SYSMAK         000002' EXT\r
+SYSONE         000007' \r
+SYSSIZ         000036' EXT\r
+TAC            000001  INT\r
+TAC1           000002  INT\r
+TEM            000010  INT\r
+TTYATC         020000  INT\r
+TTYUSE         010000  INT\r
+USRMOD         010000  INT\r
+UUO            000014  INT\r
+\f   SSSSSSSSSSSS      YYY         YYY         SSSSSSSSSSSS      MMM         MMM         AAAAAAAAA         KKK         KKK\r
+   SSSSSSSSSSSS      YYY         YYY         SSSSSSSSSSSS      MMM         MMM         AAAAAAAAA         KKK         KKK\r
+   SSSSSSSSSSSS      YYY         YYY         SSSSSSSSSSSS      MMM         MMM         AAAAAAAAA         KKK         KKK\r
+SSS                  YYY         YYY      SSS                  MMMMMM   MMMMMM      AAA         AAA      KKK         KKK\r
+SSS                  YYY         YYY      SSS                  MMMMMM   MMMMMM      AAA         AAA      KKK         KKK\r
+SSS                  YYY         YYY      SSS                  MMMMMM   MMMMMM      AAA         AAA      KKK         KKK\r
+SSS                     YYY   YYY         SSS                  MMM   MMM   MMM      AAA         AAA      KKK      KKK   \r
+SSS                     YYY   YYY         SSS                  MMM   MMM   MMM      AAA         AAA      KKK      KKK   \r
+SSS                     YYY   YYY         SSS                  MMM   MMM   MMM      AAA         AAA      KKK      KKK   \r
+   SSSSSSSSS               YYY               SSSSSSSSS         MMM         MMM      AAA         AAA      KKKKKKKKK      \r
+   SSSSSSSSS               YYY               SSSSSSSSS         MMM         MMM      AAA         AAA      KKKKKKKKK      \r
+   SSSSSSSSS               YYY               SSSSSSSSS         MMM         MMM      AAA         AAA      KKKKKKKKK      \r
+            SSS            YYY                        SSS      MMM         MMM      AAAAAAAAAAAAAAA      KKK      KKK   \r
+            SSS            YYY                        SSS      MMM         MMM      AAAAAAAAAAAAAAA      KKK      KKK   \r
+            SSS            YYY                        SSS      MMM         MMM      AAAAAAAAAAAAAAA      KKK      KKK   \r
+            SSS            YYY                        SSS      MMM         MMM      AAA         AAA      KKK         KKK\r
+            SSS            YYY                        SSS      MMM         MMM      AAA         AAA      KKK         KKK\r
+            SSS            YYY                        SSS      MMM         MMM      AAA         AAA      KKK         KKK\r
+SSSSSSSSSSSS               YYY            SSSSSSSSSSSS         MMM         MMM      AAA         AAA      KKK         KKK\r
+SSSSSSSSSSSS               YYY            SSSSSSSSSSSS         MMM         MMM      AAA         AAA      KKK         KKK\r
+SSSSSSSSSSSS               YYY            SSSSSSSSSSSS         MMM         MMM      AAA         AAA      KKK         KKK\r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  05:53:58\r
+File: DSKB0 :SYSMAK.LST   [8,296] Created: 20-April-1967 05:51:00 Printed: 24-April-1978 05:53:38\r
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:1583 \r
+File will be deleted after printing\r
+\f\r
+SYSMAK - MAKE NEW SYSTEM WITH THE OLD  MACRO 10 05:51 24-APR-78 PAGE 1\r
+S      MAC     24-APR-78 21:40         7-21-65\r
+\r
+                                       XLIST\r
+                                      LIST\r
+                               TITLE SYSMAK - MAKE NEW SYSTEM WITH THE OLD\r
+                               SUBTTL 7-21-65\r
+                               ,SYSMAK ASSUMES AN EXISTING SYSTEM WITH A LOADER IN CORE FOR JOB 1\r
+                               ,AND HIGHEST EMORY ADDRESS IN REAL 37.  TO CREATE A NEW SYSTEM, SET\r
+                               ,37 AS DESIRED, LOAD NEW SYSTEM (WITHOUT GOING INTO EXECUTION), AND\r
+                               ,START AT REAL 62.  THE COMPUTE WILL HALT AFTER THE NEW SYSTEM\r
+                               ,HAS BEEN BLOCKED DOWN.  TO START, PRESS CONTINUE OR START AT REAL\r
+                               ,60.  EXEC DDT (IF LOADED WITH THE NEW SYSTEM) STARTS AT REAL 141.\r
+                               ;FROM REL. LOC. 30 ON UP IS BLOCKED DOWN\r
+\r
+                               ,WHEN LOADING A NEW SYSTEM, LOAD SYSINI FIRST.\r
+                               ;SYSINI CONTAINS A DISPATCH TABLE  DOCUMENTED TO BE AT LOC. 60\r
+                               ;ALSO LOAD IOINI LAST SINCE IT CONTAINS SOME ONCE ONLY CODE AT END\r
+                               ;THEN LOAD SYSMAK FOLLOWED BY DDT(EXEC)\r
+                               ;BE SURE THAT LOC SYSSIZ(SIZ OF SYSTEM) IS GREATER THAN\r
+                               ;LAST LOC IN SYSMAK BEFORE STARTING TO LOAD.\r
+                               ;LOC SYSSIZ IS IN LOWER CORE AND MAY HAVE TO BE PATCHED\r
+                               ;USING CONSOLE SWITCHES.\r
+\r
+                               INTERNAL SYSMAK,MAKEND\r
+                               EXTERNAL JBTADR,JBTAD1\r
+\r
+       000000' 200040  000000* SYSMAK:   MOVE 1,JBTAD1         ;LOADER BLOCK ADDRESS FROM JOB ADDRESS\r
+       000001' 200301  000002            MOVE 6,2(1)           ;LOADER OFFSET\r
+       000002' 271301  000000            ADDI 6,(1)            ;BLOCK ADDRESS+OFFSET\r
+       000003' 200101  000006            MOVE 2,6(1);          SYSMBOL TABLE POINTER:  -N,L = LOWEST AD\r
+       000004' 271001  000002            ADDI 2(1)\r
+       000005' 564140  000002            HLRO 3,2\r
+       000006' 213000  000003            MOVNS 3       ;N = SYMBOL TABLE LENGTH\r
+       000007' 200200  000037            MOVE 4,DDTMEM         ;MEMORY SIZE(LOC 37)\r
+       000010' 202206  000037            MOVEM 4,DDTMEM(6)     ;STORE IN NEW DDTMEM\r
+       000011' 275200  000200            SUBI 4,200            ;ROOM FOR DECDUMP\r
+       000012' 202206  000036            MOVEM 4,DDTSYM(6)     ;ALSO STORE IN WHAT WILL BECOME DDTSYM\r
+       000013' 200240  000002            MOVE 5,2  ;LEAVES ROOM FOR DECDMP\r
+       000014' 270240  000003            ADD 5,3\r
+       000015' 504240  000003            HRL 5,3   ;C(5):=N,L+N\r
+       000016' 274200  000005            SUB 4,5\r
+       000017' 553000  000004            HRRZS 4   ;C(4):=0,C(37)-200-(L+N)\r
+       000020' 270100  000004            ADD 2,4   ;C(2):=-N,C(37)-200-N\r
+       000021' 202105  000000            MOVEM 2,(5)\r
+       000022' 542200  000023'           HRRM 4,.+1\r
+       000023' 262245  000000            POP 5,(5) ;MOVE SYMOBOL TABLE TO TOP OF MEMORY\r
+       000024' 325240  000023'           JUMPGE 5,.-1\r
+       000025' 200400  000034'           MOVE 10,[BLT 3,(2)]\r
+       000026' 200440  000035'           MOVE 11,[JRST 4,]\r
+       000027' 541140  000030            HRRI 3,30\r
+       000030' 505146  000030            HRLI 3,30(6)          ;C(3):=LOADER OFFSET+LOADER BLOCK ADDRE\r
+       000031' 550101  000006            HRRZ 2,6(1)           ;C(2):=LOWEST LOCATION IN SYMBOL TABLE\r
+       000032' 540441  000000            HRR 11,(1)            ;C(11):=JRST 4,START ADDRESS\r
+       000033' 254000  000010            JRST 10       ;MOVE SYSTEM TO BOTTOM OF MEMORY AND HALT\r
+\r
+       000034'                           LIT\r
+       000034' 251142  000000\r
+       000035' 254200  000000\r
+\r
+\r
+SYSMAK - MAKE NEW SYSTEM WITH THE OLD  MACRO 10 05:51 24-APR-78 PAGE 1\r
+SYSMAK MAC     24-APR-78 03:47         7-21-65\r
+\r
+       000036'                 MAKEND:   END,\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 000036\r
+\r
+9K CORE USED\r
+\r
+\fSYSMAK - MAKE NEW SYSTEM WITH THE OLD MACRO 10 05:51 24-APR-78 PAGE 2\r
+SYSMAK MAC     24-APR-78 03:47         SYMBOL TABLE\r
+\r
+A              000000  INT\r
+AC1            000015  INT\r
+AC2            000016  INT\r
+AC3            000017  INT\r
+AL             000001  INT\r
+ASSCON         400000  INT\r
+ASSPRG         200000  INT\r
+B              000014  INT\r
+BUFPNT         000012  INT\r
+BUFWRD         000013  INT\r
+CLOSB          002000  INT\r
+CLSIN          000002  INT\r
+CLSOUT         000001  INT\r
+D              000017  INT\r
+DAT            000005  INT\r
+DCL            000001  INT\r
+DCW            020000  INT\r
+DDI            000007  INT\r
+DDO            000006  INT\r
+DDTMEM         000037  INT\r
+DDTSYM         000036  INT\r
+DEN            000004  INT\r
+DEVADR         000007  INT\r
+DEVBUF         000006  INT\r
+DEVCHR         000001  INT\r
+DEVCTR         000011  INT\r
+DEVDAT         000006  INT\r
+DEVIAD         000007  INT\r
+DEVIOS         000002  INT\r
+DEVLOG         000005  INT\r
+DEVMOD         000004  INT\r
+DEVNAM         000000  INT\r
+DEVOAD         000010  INT\r
+DEVPTR         000010  INT\r
+DEVSER         000003  INT\r
+DGF            000012  INT\r
+DIN            000003  INT\r
+DLK            000005  INT\r
+DOU            000002  INT\r
+DR             000016  INT\r
+DRL            000000  INT\r
+DSI            000011  INT\r
+DSO            000010  INT\r
+DTW            040000  INT\r
+DVAVAL         000040  INT\r
+DVCDR          100000  INT\r
+DVDIR          000004  INT\r
+DVDIRI         400000  INT\r
+DVIN           000002  INT\r
+DVLPT          040000  INT\r
+DVMTA          000020  INT\r
+DVOUT          000001  INT\r
+\r
+\r
+\fSYSMAK - MAKE NEW SYSTEM WITH THE OLD MACRO 10 05:51 24-APR-78 PAGE 2-1\r
+SYSMAK MAC     24-APR-78 03:47         SYMBOL TABLE\r
+\r
+DVTTY          000010  INT\r
+ENTRB          020000  INT\r
+I              000010  INT\r
+IB             000013  INT\r
+IBUFB          200000  INT\r
+INITB          400000  INT\r
+INPB           010000  INT\r
+IO             000020  INT\r
+IOACT          010000  INT\r
+IOBEG          000002  INT\r
+IOBKTL         040000  INT\r
+IOCON          000040  INT\r
+IODEND         020000  INT\r
+IODERR         200000  INT\r
+IODISC         400000  INT\r
+IODONE         400000  INT\r
+IODTER         100000  INT\r
+IOEND          000040  INT\r
+IOFST          000004  INT\r
+IOIMPM         400000  INT\r
+IONRCK         000100  INT\r
+IORDEL         000100  INT\r
+IORET          000020  INT\r
+IOS            000000  INT\r
+IOSTRT         000010  INT\r
+IOUSE          400000  INT\r
+IOW            000001  INT\r
+IOWC           000020  INT\r
+IOWS           400000  INT\r
+ITEM           000004  INT\r
+JBFADR         000000  INT\r
+JBFCTR         000002  INT\r
+JBFPTR         000001  INT\r
+JBTAD1         000000' EXT\r
+JBTADR         000000  EXT\r
+JBUF           000005  INT\r
+JDAT           000011  INT\r
+JERR           002000  INT\r
+JIOW           100000  INT\r
+JNA            004000  INT\r
+LOOKB          040000  INT\r
+MAKEND         000036' INT\r
+MTW            010000  INT\r
+OBUFB          100000  INT\r
+OUTPB          004000  INT\r
+PDP            000003  INT\r
+PICHN          000100  INT\r
+PROG           000007  INT\r
+RUN            200000  INT\r
+RUNABL         204000  INT\r
+SYSMAK         000000' INT\r
+TAC            000001  INT\r
+TAC1           000002  INT\r
+\r
+\fSYSMAK - MAKE NEW SYSTEM WITH THE OLD MACRO 10 05:51 24-APR-78 PAGE 2-2\r
+SYSMAK MAC     24-APR-78 03:47         SYMBOL TABLE\r
+\r
+TEM            000010  INT\r
+TTYATC         020000  INT\r
+TTYUSE         010000  INT\r
+USRMOD         010000  INT\r
+UUO            000014  INT\r
+\fMMM         MMM         AAAAAAAAA            CCCCCCCCCCCC      RRRRRRRRRRRR            OOOOOOOOO                        \r
+MMM         MMM         AAAAAAAAA            CCCCCCCCCCCC      RRRRRRRRRRRR            OOOOOOOOO                        \r
+MMM         MMM         AAAAAAAAA            CCCCCCCCCCCC      RRRRRRRRRRRR            OOOOOOOOO                        \r
+MMMMMM   MMMMMM      AAA         AAA      CCC                  RRR         RRR      OOO         OOO                     \r
+MMMMMM   MMMMMM      AAA         AAA      CCC                  RRR         RRR      OOO         OOO                     \r
+MMMMMM   MMMMMM      AAA         AAA      CCC                  RRR         RRR      OOO         OOO                     \r
+MMM   MMM   MMM      AAA         AAA      CCC                  RRR         RRR      OOO         OOO                     \r
+MMM   MMM   MMM      AAA         AAA      CCC                  RRR         RRR      OOO         OOO                     \r
+MMM   MMM   MMM      AAA         AAA      CCC                  RRR         RRR      OOO         OOO                     \r
+MMM         MMM      AAA         AAA      CCC                  RRRRRRRRRRRR         OOO         OOO                     \r
+MMM         MMM      AAA         AAA      CCC                  RRRRRRRRRRRR         OOO         OOO                     \r
+MMM         MMM      AAA         AAA      CCC                  RRRRRRRRRRRR         OOO         OOO                     \r
+MMM         MMM      AAAAAAAAAAAAAAA      CCC                  RRR   RRR            OOO         OOO                     \r
+MMM         MMM      AAAAAAAAAAAAAAA      CCC                  RRR   RRR            OOO         OOO                     \r
+MMM         MMM      AAAAAAAAAAAAAAA      CCC                  RRR   RRR            OOO         OOO                     \r
+MMM         MMM      AAA         AAA      CCC                  RRR      RRR         OOO         OOO                     \r
+MMM         MMM      AAA         AAA      CCC                  RRR      RRR         OOO         OOO                     \r
+MMM         MMM      AAA         AAA      CCC                  RRR      RRR         OOO         OOO                     \r
+MMM         MMM      AAA         AAA         CCCCCCCCCCCC      RRR         RRR         OOOOOOOOO                        \r
+MMM         MMM      AAA         AAA         CCCCCCCCCCCC      RRR         RRR         OOOOOOOOO                        \r
+MMM         MMM      AAA         AAA         CCCCCCCCCCCC      RRR         RRR         OOOOOOOOO                        \r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  05:53:58\r
+File: DSKB0 :MACRO .LST   [8,296] Created: 20-April-1967 05:51:00 Printed: 24-April-1978 05:53:38\r
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:1578 \r
+File will be deleted after printing\r
+\f\r
+MACRO V.46(52)         MACRO 10 05:51 24-APR-78 PAGE 1\r
+MACRO  10      24-APR-78 02:11         RPG/CMF/JF/PMH/DMN      7-SEPT-71\r
+\r
+                               ;STANFORD ASSEMBLY:\r
+                       000170          LPTWID==^D120   ;120 CHARACTERS/LINE ON LPT AT STANFORD\r
+                               TITLE   MACRO V.46(52)  \r
+                               SUBTTL   RPG/CMF/JF/PMH/DMN     7-SEPT-71\r
+                               ;COPYRIGHT 1968,1969,1970,1971, DIGITAL EQUIPMENT CORP., MAYNARD, MASS.\r
+\r
+                       000010          VMACRO==10              ;VERSION NUMBER\r
+                       000000          VUPDATE==0              ;DEC UPDATE LEVEL\r
+                       000000          VEDIT==0                ;EDIT NUMBER\r
+                       000000          VCUSTOM==0              ;NON-DEC UPDATE LEVEL\r
+\r
+\r
+       000137                          LOC     <JOBVER==137>\r
+       000137  001000  000000          <VCUSTOM>B2+<VMACRO>B11+<VUPDATE>B17+VEDIT\r
+       000000'                         RELOC\r
+                                       MLON\r
+\r
+                               COMMENT *       ASSEMBLY FEATURE SWITCHES (ACTION WHEN NON-ZERO)\r
+\r
+                                       SWITCHES ON (NON-ZERO) IN DEC VERSION\r
+                               CCLSW           GIVES RAPID PROGRAM GENERATION FEATURE\r
+                               FTDISK          GIVES DISK FEATURES\r
+                               RENTSW          ASSEMBLE REENTRANT PROGRAMS\r
+\r
+                                       SWITCHES OFF (ZERO) IN DEC VERSION\r
+                               LNSSW           GIVES LNS VERSION\r
+                               WFWSW           GIVES ARRAY, INTEGER AND LVAR FEATURES\r
+                               IIISW           GIVES III FEATURES\r
+                               OPHSH           GIVES HASH SEARCH OF OPCODES\r
+                               *\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 2\r
+MACRO  10      24-APR-78 02:11         DEFAULT ASSEMBLY SWITCH SETTINGS\r
+\r
+                               SUBTTL  DEFAULT ASSEMBLY SWITCH SETTINGS\r
+\r
+\r
+                               IFNDEF RENTSW,<RENTSW==0>\r
+\r
+                               IFNDEF LNSSW,<LNSSW==0>\r
+                               IFN LNSSW,<FTDISK==0>\r
+\r
+                               IFNDEF CCLSW,<CCLSW==1>\r
+                       000001  IFN CCLSW,<FTDISK==1>\r
+\r
+                               IFNDEF WFWSW,<WFWSW==0>\r
+\r
+\r
+                               IFNDEF FTDISK,<FTDISK==0>\r
+\r
+                               IFNDEF IIISW,<IIISW==0>\r
+\r
+                               IFNDEF OPHSH,<OPHSH==0>\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 3\r
+MACRO  10      24-APR-78 02:11         OTHER PARAMETERS\r
+\r
+                               SUBTTL  OTHER PARAMETERS\r
+\r
+                       000062  .PDP==  ^D50            ;BASIC PUSH-DOWN POINTER\r
+                               IFNDEF LPTWID,<LPTWID==^D132>   ;DEFAULT WIDTH OF PRINTER\r
+                       000170  .LPTWD==8*<LPTWID/8>            ;USEFUL WIDTH IN MAIN LISTING\r
+                       000130  .CPL==  .LPTWD-^D32             ;WIDTH AVAIABLE FOR TEXT WHEN\r
+                                                               ;BINARY IS IN HALFWORD FORMAT\r
+                       000067  .LPP==^D55      ;LINES/PAGE\r
+                       000050  .STP==  ^D40            ;STOW SIZE\r
+                       000120  .TBUF== ^D80            ;TITLE BUFFER\r
+                       000120  .SBUF== ^D80            ;SUB-TITLE BUFFER\r
+                       000024  .IFBLK==^D20            ;IFIDN COMPARISON BLOCK SIZE\r
+                       000022  .R1B==^D18\r
+                       000012  .UNIV==^D10             ;NUMBER OF UNIVERSAL DEFINITIONS\r
+                       000004  .LEAF==4                ;SIZE OF BLOCKS IN MACRO TREE\r
+\r
+                       000001  NCOLS==1                ;NUMBER OF COLUMNS IN SYMBOL TABLE\r
+                               IFN CCLSW,<IFNDEF CTLSIZ,<CTLSIZ==^D200>>\r
+                               IFN OPHSH,<IFNDEF PRIME,<PRIME==^D701>>\r
+                               IFNDEF NUMBUF,<\r
+                               IFE LNSSW,<NUMBUF==2    ;NUMBER OF INPUT BUFFERS>\r
+                               IFN LNSSW,<NUMBUF==4    ;DOUBLE BUFFER FOR DOUBLE SIZE DEVICES>\r
+                               >\r
+\r
+                               EXTERN  JOBREL,JOBSYM,JOBDDT,JOBFF,JOBAPR,JOBSA\r
+                               IFN CCLSW,<     EXTERN  JOBERR>\r
+\r
+                                       SALL            ;SUPPRESS ALL MACROS\r
+\r
+                               ;SOME ASCII CHARACTERS\r
+\r
+                       000011  HT==11\r
+                       000012  LF==12\r
+                       000013  VT==13\r
+                       000014  FF==14\r
+                       000015  CR==15\r
+                       000033  EOL==33\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 4\r
+MACRO  10      24-APR-78 02:11         OTHER PARAMETERS\r
+\r
+                                                       ;ACCUMULATORS\r
+                       000000  AC0==   0\r
+                       000001  AC1=    AC0+1\r
+                       000002  AC2=    AC1+1\r
+                       000003  SDEL=   3               ;SEARCH INCREMENT\r
+                       000004  SX=     SDEL+1          ;SEARCH INDEX\r
+                       000005  ARG=    5               ;ARGUMENT\r
+                       000006  V=      6               ;VALUE\r
+                       000007  C=      7               ;CURRENT CHARACTER\r
+                       000010  CS=     C+1             ;CHARACTER STATUS BITS\r
+                       000011  RC=     11              ;RELOCATION BITS\r
+                       000012  MWP=    12              ;MACRO WRITE POINTER\r
+                       000013  MRP=    13              ;MACRO READ POINTER\r
+                       000014  IO=     14              ;IO REGISTER (LEFT)\r
+                       000014  ER==    IO              ;ERROR REGISTER (RIGHT)\r
+                       000015  FR=     15              ;FLAG REGISTER (LEFT)\r
+                       000015  RX==    FR              ;CURRENT RADIX (RIGHT)\r
+                       000016  MP=     16              ;MACRO PUSHDOWN POINTER\r
+                       000017  PP=     17              ;BASIC PUSHDOWN POINTER\r
+\r
+                       000003  %OP==   3\r
+                       000005  %MAC==  5\r
+                       000002  %DSYM== 2\r
+                       000001  %SYM==  1\r
+                       000006  %DMAC== %MAC+1\r
+\r
+                               OPDEF   RESET   [CALLI   0]\r
+                               OPDEF   SETDDT  [CALLI   2]\r
+                               OPDEF   DDTOUT  [CALLI   3]\r
+                               OPDEF   DEVCHR  [CALLI   4]\r
+                               OPDEF   WAIT    [MTAPE   0]\r
+                               OPDEF   CORE    [CALLI  11]\r
+                               OPDEF   EXIT    [CALLI  12]\r
+                               OPDEF   UTPCLR  [CALLI  13]\r
+                               OPDEF   DATE    [CALLI  14]\r
+                               OPDEF   APRENB  [CALLI  16]\r
+                               OPDEF   MSTIME  [CALLI  23]\r
+                               OPDEF   PJOB    [CALLI  30]\r
+                               OPDEF   RUN     [CALLI  35]\r
+                               OPDEF   TMPCOR  [CALLI  44]\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 5\r
+MACRO  10      24-APR-78 02:11         OTHER PARAMETERS\r
+\r
+                                                       ;FR  FLAG REGISTER (FR/RX)\r
+                       000001  IOSCR== 000001          ;NO CR AFTER LINE\r
+                       000004  MTAPSW==000004          ;MAG TAPE\r
+                       000010  ERRQSW==000010          ;IGNORE Q ERRORS\r
+                       000020  LOADSW==000020          ;END OF PASS1 & NO EOF YET\r
+                       000040  DCFSW== 000040          ;DECIMAL FRACTION\r
+                       000100  RIM1SW==000100          ;RIM10 MODE\r
+                       000200  NEGSW== 000200          ;NEGATIVE ATOM\r
+                       000400  RIMSW== 000400          ;RIM OUTPUT\r
+                       001000  PNCHSW==001000          ;RIM/BIN OUTPUT WANTED\r
+                       002000  CREFSW==002000\r
+                       004000  R1BSW== 004000          ;RIM10 BINARY OUTPUT\r
+                       010000  TMPSW== 010000          ;EVALUATE CURRENT ATOM\r
+                       020000  INDSW== 020000          ;INDIRECT ADDRESSING WANTED\r
+                       040000  RADXSW==040000          ;RADIX ERROR SWITCH\r
+                       100000  FSNSW== 100000          ;NON BLANK FIELD SEEN\r
+                       200000  MWLFLG==200000          ;ON FOR DON'T ALLOW MULTI-WORD LITERALS\r
+                       400000  P1==    400000          ;PASS1\r
+\r
+                                                       ;IO FLAG REGISTER (IO/ER)\r
+                       400000  FLDSW== 400000          ;ADDRESS FIELD\r
+                       200000  IOMSTR==200000\r
+                       100000  ARPGSW==100000          ;ALLOW RAPID PROGRAM GENERATION\r
+                       040000  IOPROG==040000          ;SUPRESS LISTING (LIST/XLIST PSEUDO OP)\r
+                       020000  NUMSW== 020000\r
+                       010000  IOMAC== 010000          ;MACRO EXPANSION IN PROGRESS\r
+                       004000  IOPALL==004000          ;SUPRESS LISTING OF MACRO EXPANSIONS\r
+                       002000  IONCRF==002000          ;SUPRESS OUTPUT OF CREF INFORMATION\r
+                       001000  CRPGSW==001000          ;CURRENTLY IN PROGRESS ON RPG\r
+                       000400  IOCREF==000400          ;WE ARE NOW OUTPUTTING CREF INFO\r
+                       000200  IOENDL==000200          ;BEEN TO STOUT\r
+                       000100  IOPAGE==000100\r
+                       000040  DEFCRS==000040          ;THIS IS A DEFINING OCCURANCE (MACROS)\r
+                       000020  IOIOPF==000020          ;IOP INSTRUCTION SEEN\r
+                       000010  MFLSW== 000010          ;MULTI-FILE MODE,PRGEND SEEN\r
+                       000004  IORPTC==000004          ;REPEAT CURRENT CHARACTER\r
+                       000002  IOTLSN==000002          ;TITLE SEEN\r
+                       000001  IOSALL==000001          ;SUPPRESS MACRO LISTING EVEN IF BINARY IS GENERATED\r
+\r
+                               OPDEF   JUMP1   [JUMPL  FR,  ]  ;JUMP IF PASS 1\r
+                               OPDEF   JUMP2   [JUMPGE FR,  ]  ;JUMP IF PASS 2\r
+\r
+                               OPDEF   JUMPOC  [JUMPGE IO,  ]  ;JUMP IF IN OP-CODE FIELD\r
+                               OPDEF   JUMPAD  [JUMPL  IO,  ]  ;JUMP IF IN ADDRESS FIELD\r
+\r
+                               OPDEF   JUMPCM  [JUMPL  CS,  ]  ;JUMP IF CURRENT CHAR IS COMMA\r
+                               OPDEF   JUMPNC  [JUMPGE CS,  ]  ;JUMP IF CURRENT CHAR IS NON-COMMA\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 6\r
+MACRO  10      24-APR-78 02:11         OTHER PARAMETERS\r
+\r
+                                                       ;ER ERROR REGISTERS (IO/ER)\r
+                       000020  ERRM==  000020          ;MULTIPLY DEFINED SYMBOL\r
+                       000040  ERRE==  000040          ;ILLEGAL USE OF EXTERNAL\r
+                       000100  ERRP==  000100          ;PHASE DISCREPANCY\r
+                       000200  ERRO==  000200          ;UNDEFINED OP CODE\r
+                       000400  ERRN==  000400          ;NUMBER ERROR\r
+                       001000  ERRV==  001000          ;VALUE PREVIOUSLY UNDEFINED\r
+                       002000  ERRU==  002000          ;UNDEFINED SYMBOL\r
+                       004000  ERRR==  004000          ;RELOCATION ERROR\r
+                       010000  ERRL==  010000          ;LITERAL ERROR\r
+                       020000  ERRD==  020000          ;REFERENCE TO MULTIPLY DEFINED SYMBOL\r
+                       040000  ERRA==  040000          ;PECULIAR ARGUMENT\r
+                       100000  ERRX==  100000          ;MACRO DEFINITION ERROR\r
+                       200000  ERRQ==  200000          ;QUESTIONABLE, NON-FATAL ERROR\r
+                       777760  ERRORS==777760\r
+                       000002  LPTSW== 000002\r
+                       000001  TTYSW== 000001\r
+\r
+                                                       ;SYMBOL TABLE FLAGS\r
+                       400000  SYMF==  400000          ;SYMBOL\r
+                       200000  TAGF==  200000          ;TAG\r
+                       100000  NOOUTF==100000          ;NO DDT OUTPUT WFW\r
+                       040000  SYNF==  040000          ;SYNONYM\r
+                       020000  MACF==  SYNF_-1         ;MACRO\r
+                       010000  OPDF==  SYNF_-2         ;OPDEF\r
+                       004000  PNTF==  004000          ;"VALUE" IN SYMBOL TBL IS PNTR TO 36BIT VALUE\r
+                       002000  UNDF==  002000          ;UNDEFINED\r
+                       001000  EXTF==  001000          ;EXTERNAL\r
+                       000400  INTF==  000400          ;INTERNAL\r
+                       000200  ENTF==  000200          ;ENTRY\r
+                       000100  VARF==  000100          ;VARIABLE\r
+                       000020  MDFF==  000020          ;MULTIPLY DEFINED\r
+                       000010  SPTR==  000010          ;SPECIAL EXTERNAL POINTER\r
+                       000004  SUPRBT==000004          ;SUPRESS OUTPUT TO DDT\r
+                       000002  LELF==  000002          ;LEFT HAND RELOCATABLE\r
+                       000001  RELF==  000001          ;RIGHT HAND RELOCATABLE\r
+\r
+                       200000  LITF==  200000          ;FLAG FOR PSEUDO-OPS INVALID IN LIT'S\r
+                       100000  ADDF==  100000          ;FLAG FOR PSEUDO-OPS INVALID IN ADDRESSES\r
+\r
+                       200000  TNODE== 200000          ;TERMINAL NODE FOR EVALEX\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 7\r
+MACRO  10      24-APR-78 02:11         RUN UUO\r
+\r
+                               SUBTTL  RUN UUO\r
+\r
+                               IFN CCLSW,<\r
+                               ;THIS CODE MUST BE IN FIRST 1K TO ALLOW MAXIMUM SPACE\r
+                               ; FOR OVERWRITING\r
+                               ; 74 APPEARS BECAUSE ONLY LOCS 74 AND BEYOND ARE SAVED BY "SAVE"\r
+\r
+       000000' 000000  000016' IFN CCLSW,<NUNCOM:      IOWD    0,INHERE        ;WHERE TO DO IO\r
+       000001' 000000  000000          0                       ;TERMINATE COMMAND LIST\r
+       000002' 056040  000000' NUNGO2: IN      BIN,NUNCOM      ;READ FILE\r
+       000003' 254000  000011'         JRST    NUNGO3          ;THERE ARE NO ERRORS\r
+       000004' 047400  000003  NUNERR: DDTOUT  NUNPNT,         ;COMPLAIN\r
+       000005' 047000  000012          EXIT                    ;GIVE UP\r
+       000006' 376311  147226  NUNERM: ASCIZ   /?LINKAGE ERROR/\r
+       000007' 406170  520212\r
+       000010' 512451  751000\r
+       000011' 332500  000056' NUNGO3: SKIPE   12,INHERE+133-74 ;LOOK AT JOBCOR\r
+                                                               ;DOES JOB WANT TO RUN IN MORE CORE?\r
+       000012' 317500  000000*         CAMG    12,JOBREL       ;MORE CORE THAN CURRENTLY USED?\r
+       000013' 254000  000000          JRST    NUNGO4          ;NO, GO BLT PROG\r
+       000014' 047500  000011          CORE    12,             ;ASK FOR MORE CORE\r
+       000015' 254000  000004'         JRST    NUNERR          ;NOT AVAILABLE\r
+       000016' 254000  000000          JRST    NUNGO4          ;GO BLT PROGRAM\r
+       000017'                 INHERE:\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 8\r
+MACRO  10      24-APR-78 02:11         RUN UUO\r
+\r
+                               ;THIS CODE MUST BE IN FIRST 1K\r
+       000017' 326040  000021' NUNSET: JUMPN   ACDEV,.+2               ;DEVICE SPECIFIED?\r
+       000020' 205040  637163          MOVSI   ACDEV,(SIXBIT /SYS/)    ;NO, USE SYSTEM DEVICE\r
+       000021' 326140  000023'         JUMPN   ACEXT,.+2               ;EXT SPECIFIED?\r
+       000022' 205140  634166          MOVSI   ACEXT,(SIXBIT /SAV/)    ;NO, USE "SAV"\r
+       000023' 202040  013226'         MOVEM   ACDEV,NUNDEV            ;DEVICE NAME TO USE\r
+       000024' 050040  013225'         OPEN    BIN,NUNINI              ;INIT THE DEVICE\r
+       000025' 254000  010162'         JRST    EINIT                   ;ERROR\r
+       000026' 202100  013333'         MOVEM   ACFILE,NUNDIR           ;IS THE FILE AVAILABLE?\r
+       000027' 512140  013334'         HLLZM   ACEXT,NUNDIR+1          ;STASH EXTENSION\r
+       000030' 402000  013336'         SETZM   NUNDIR+3                ;CLEAR PPN\r
+       000031' 076040  013333'         LOOKUP  BIN,NUNDIR              ;LOOK FOR FILE\r
+                                       JRST    [HLRZ   ACEXT,NUNDIR+1          ;WAS EXTENSION "SAV"?\r
+                                               CAIE    ACEXT,(SIXBIT /SAV/)    ;...\r
+                                               JRST    ERRCF                   ;GO COMPLAIN\r
+                                               MOVSI   ACEXT,(SIXBIT /DMP/)    ;TRY "DMP" EXTENSION\r
+       000032' 254000  014570'                 JRST    .-3     ]               ;TRA -3,4\r
+       000033' 260740  000066'         PUSHJ PP,DELETE         ;COMMAND FILE\r
+       000034' 200640  013333'         MOVE 15,NUNDIR          ;GET THE NAME\r
+       000035' 047640  000043          CALLI 15,43     ;TELL SYSTEM "SETNAM"\r
+       000036' 564640  013336'         HLRO    15,NUNDIR+3     ;GET WORD COUNT\r
+       000037' 506640  000000'         HRLM    15,NUNCOM       ;STASH COUNT\r
+       000040' 213000  000015          MOVNS   15              ;NEGATIVE COUNT\r
+       000041' 201715  000073          MOVEI   16,73(15)       ;WHERE TO STOP BLT\r
+       000042' 271640  000017'         ADDI    15,INHERE       ;HOW BIG TO MAKE CORE\r
+       000043' 435640  001777          IORI    15,1777         ;AN EVEN MULTIPLE OF 1K\r
+       000044' 047640  000011          CORE    15,             ;ASK TS EXEC FOR CORE\r
+                                       JRST    [HRROI RC,[SIXBIT /NOT ENUF CORE FOR LINKAGE@/]\r
+       000045' 254000  014602'                 JRST ERRFIN     ];GO COMPLAIN\r
+       000046' 205440  000054'         MOVSI   NUNTOP,NUNAC\r
+       000047' 251440  000011          BLT     NUNTOP,NUNTOP   ;SET ACS\r
+       000050' 540200  000016          HRR     NUNBLT,16       ;...\r
+       000051' 607600  001000          TLNN    IO,CRPGSW       ;WAS RPG IN PROGRESS?\r
+       000052' 621300  577000          TLZ     NUNAOS,577000   ;NO, DON'T MAKE NEXT AN RPG\r
+       000053' 254000  000002'         JRST    NUNGO2\r
+\r
+       000000                  NUNAC:  PHASE   0\r
+       000054' 200500  000017' NUNGO4: MOVE    NUNLAC,INHERE+74-74     ;SETUP FOR NEW DDT\r
+       000055' 047500  000002          SETDDT  NUNLAC,         ;...\r
+                               INTERN JOBS41\r
+                       000122  JOBS41=122              ;LOADER WILL GIVE MUL. DEF. GLOBAL IF CHANGED\r
+\r
+                               EXTERN JOB41\r
+       000056' 200500  000045'         MOVE    NUNLAC,JOBS41+INHERE-74 ;RESTORE LOC 41\r
+       000057' 202500  000000*         MOVEM   NUNLAC,JOB41    ;...\r
+       000060' 251440  000000  NUNBLT: BLT     NUNTOP,.-.      ;MOVE PRGM TO WHERE IT BELONGS\r
+       000061' 047000  000000          RESET                   ;RESET ALL I/O\r
+       000062' 350040  000000* NUNAOS: AOS     1,JOBSA         ;GET STARTING ADDR FOR RPG\r
+       000063' 254001  000000          JRST    0(1)            ;GET ON WITH THE GAME\r
+       000064' 000000  000006' NUNPNT: NUNERM                  ;ERROR MESSAGE POINTER\r
+       000065' 000020' 000075  NUNTOP: XWD     INHERE+1,75\r
+                       000012  NUNLAC=.\r
+       000066'                         DEPHASE\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 8-1\r
+MACRO  10      24-APR-78 02:11         RUN UUO\r
+\r
+                               >   \r
+                                       LIST\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 9\r
+MACRO  10      24-APR-78 02:11         RUN UUO\r
+\r
+       000066' 550000  014104' DELETE: HRRZ    EXTMP           ;IF THE EXTENSION\r
+       000067' 302000  645560          CAIE    (SIXBIT/TMP/)   ;IS  .TMP\r
+       000070' 263740  000000          POPJ    PP,             ;RETURN.\r
+       000071' 070200  000000          CLOSE   CTL2,           ;DELETE\r
+       000072' 403200  000005          SETZB   4,5             ;THE COMMAND FILE.\r
+       000073' 403300  000007          SETZB   6,7\r
+       000074' 055200  000004          RENAME  CTL2,4          ;\r
+       000075' 255000  000000          JFCL\r
+       000076' 263740  000000          POPJ    PP,\r
+                               >\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 10\r
+MACRO  10      24-APR-78 02:11         START ASSEMBLING\r
+\r
+                               SUBTTL  START ASSEMBLING\r
+\r
+       000077' 260740  003356' ASSEMB: PUSHJ   PP,INZ          ;INITIALIZE FOR PASS\r
+       000100' 200000  014604'         MOVE    [ASCII /.MAIN/]\r
+       000101' 202000  013701'         MOVEM   TBUF\r
+       000102' 201000  013527'         MOVEI   SBUF\r
+       000103' 542000  013550'         HRRM    SUBTTX\r
+\r
+       000104' 260740  001415' ASSEM1: PUSHJ   PP,CHARAC       ;TEST FOR FORM FEED\r
+       000105' 335000  013452'         SKIPGE  LIMBO           ;CRLF FLAG?\r
+       000106' 254000  000104'         JRST    ASSEM1          ;YES ,IGNORE LF\r
+       000107' 306340  000014          CAIN    C,14\r
+       000110' 332000  013214'         SKIPE   SEQNO\r
+       000111' 254000  000115'         JRST    ASSEM2\r
+       000112' 260740  010674'         PUSHJ   PP,OUTFF1\r
+       000113' 260740  001774'         PUSHJ   PP,OUTLI\r
+       000114' 254000  000104'         JRST    ASSEM1\r
+\r
+       000115' 350000  014051' ASSEM2: AOS     TAGINC\r
+       000116' 306340  000134          CAIN    C,"\"           ;BACK-SLASH?\r
+       000117' 625600  010000          TLZA    IO,IOMAC        ;YES, LIST IF IN MACRO\r
+       000120' 661600  000004          TLO     IO,IORPTC\r
+       000121' 260740  000125'         PUSHJ   PP,STMNT        ;OFF WE GO\r
+       000122' 627600  000200          TLZN    IO,IOENDL       ;WAS STOUT PRE-EMPTED?\r
+       000123' 260740  000237'         PUSHJ   PP,STOUT        ;NO, POLISH OFF LINE\r
+       000124' 254000  000104'         JRST    ASSEM1\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 11\r
+MACRO  10      24-APR-78 02:11         STATEMENT PROCESSOR\r
+\r
+                               SUBTTL  STATEMENT PROCESSOR\r
+\r
+       000125' 621640  120000  STMNT:  TLZ     FR,INDSW!FSNSW\r
+       000126' 625600  400000          TLZA    IO,FLDSW\r
+       000127' 260740  000253' STMNT1: PUSHJ   PP,LABEL\r
+       000130' 260740  000334' STMNT2: PUSHJ   PP,ATOM         ;GET THE FIRST ATOM\r
+       000131' 306340  000035          CAIN    C,35            ;"="?\r
+       000132' 254000  004112'         JRST    ASSIGN          ;YES\r
+       000133' 306340  000032          CAIN    C,32            ;":"?\r
+       000134' 254000  000127'         JRST    STMNT1          ;YES\r
+       000135' 321600  000200'         JUMPAD  STMNT7          ;NUMERIC EXPRESSION\r
+       000136' 326000  000146'         JUMPN   AC0,STMN2A      ;JUMP IF NON NULL FIELD\r
+       000137' 336000  013773'         SKIPN   LITLVL          ;ALLOW COMMA IN LITERALS\r
+       000140' 302340  000014          CAIE    C,14            ;NULL, COMMA?\r
+       000141' 306340  000033          CAIN    C,EOL           ;OR END OF LINE?\r
+       000142' 263740  000000          POPJ    PP,             ;YES,EXIT\r
+       000143' 306340  000135          CAIN    C,"]"           ;CLOSING LITERAL?\r
+       000144' 263740  000000          POPJ    PP,             ;YES\r
+       000145' 254000  000201'         JRST    STMNT9          ;NO,AT LEAST SKIP ALL THIS NONSENSE\r
+\r
+       000146' 322340  000150' STMN2A: JUMPE   C,.+2\r
+       000147' 661600  000004          TLO     IO,IORPTC\r
+       000150' 260740  012573'         PUSHJ   PP,MSRCH        ;SEARCH FOR MACRO/OPDEF/SYN\r
+       000151' 254000  000157'         JRST    STMNT3          ;NOT FOUND, TRY OP CODE\r
+       000152' 135140  014605'         LDB     SDEL,[POINT 3,ARG,5]\r
+       000153' 322140  003400'         JUMPE   SDEL,ERRAX      ;ERROR IF NO FLAGS\r
+       000154' 362140  004437'         SOJE    SDEL,OPD1       ;OPDEF IF 1\r
+       000155' 362140  005705'         SOJE    SDEL,CALLM      ;MACRO IF 2\r
+       000156' 254000  000161'         JRST    STMNT4          ;SYNONYM, PROCESS WITH OP-CODES\r
+\r
+       000157' 260740  010754' STMNT3: PUSHJ   PP,OPTSCH       ;SEARCH OP CODE TABLE\r
+       000160' 254000  000167'         JRST    STMNT5          ;NOT FOUND\r
+       000161' 510000  000006  STMNT4: HLLZ    AC0,V           ;PUT CODE IN AC0\r
+       000162' 620300  100000          TRZ     V,ADDF          ;CLEAR ADDRESS NON-VALID FLAG\r
+       000163' 622300  200000          TRZE    V,LITF          ;VALID IN LITERAL?\r
+       000164' 336000  013773'         SKIPN   LITLVL          ;NO, ARE WE IN A LITERAL?\r
+       000165' 254006  000000          JRST    0(V)            ;NO, GO TO APPROPRIATE PROCESSOR\r
+       000166' 263740  000000          POPJ    PP,             ;YES,EXIT\r
+\r
+       000167' 260740  012610' STMNT5: PUSHJ   PP,SSRCH        ;TRY SYMBOLS\r
+       000170' 254000  000207'         JRST    STMNT8          ;NOT FOUND\r
+       000171' 603240  003000          TLNE    ARG,EXTF!UNDF   ;EXTERNAL OR UNDEFINED?\r
+       000172' 254000  000200'         JRST    STMNT7          ;YES, PROCESS IN EVALEX\r
+       000173' 607440  777776          TLNN RC,-2              ;CHECK FOR EXTERNAL\r
+       000174' 602440  777776          TRNE RC,-2\r
+       000175' 254000  000200'         JRST STMNT7\r
+       000176' 200000  000006          MOVE    AC0,V           ;FOUND, PUT VALUE IN AC0\r
+       000177' 661600  020000          TLO     IO,NUMSW        ;FLAG AS NUMERIC\r
+       000200' 621600  000004  STMNT7: TLZ     IO,IORPTC\r
+       000201' 260740  001065' STMNT9: PUSHJ   PP,EVALHA       ;EVALUATE EXPRESSION\r
+       000202' 603640  100000          TLNE    FR,FSNSW        ;FIELD SEEN?\r
+       000203' 254000  002751'         JRST    STOW            ;YES,STOW THE CODE AND EXIT\r
+       000204' 302340  000075          CAIE    C,"]"-40        ;CLOSING LITERAL?\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 11-1\r
+MACRO  10      24-APR-78 02:11         STATEMENT PROCESSOR\r
+\r
+       000205' 660600  200000          TRO     ER,ERRQ         ;NO, GIVE "Q" ERROR\r
+       000206' 263740  000000          POPJ    PP,             ;EXIT\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 12\r
+MACRO  10      24-APR-78 02:11         STATEMENT PROCESSOR\r
+\r
+       000207' 201300  000000  STMNT8: MOVEI   V,0             ;ALWAYS START SCAN WITH 0\r
+       000210' 301300  000112          CAIL    V,CALNTH        ;END OF TABLE?\r
+       000211' 254000  000221'         JRST    STMN8C          ;YES, TRY TTCALLS\r
+       000212' 312006  012443'         CAME    AC0,CALTBL(V)   ;FOUND IT?\r
+       000213' 344300  000210'         AOJA    V,.-3           ;NO,TRY AGAIN\r
+       000214' 275300  000001          SUBI    V,NEGCAL        ;CALLI'S START AT -1\r
+       000215' 505300  047000          HRLI    V,(CALLI)       ;PUT IN UUO\r
+       000216' 205240  010000  STMN8D: MOVSI   ARG,OPDF        ;SET FLAG FOR OPDEF\r
+       000217' 260740  013036' STMN8B: PUSHJ   PP,INSERT       ;PUT OPDEF IN TABLE\r
+       000220' 254000  004441'         JRST    OPD             ;AND TREAT AS OPDEF\r
+\r
+       000221' 400300  000000  STMN8C: SETZ    V,              ;START WITH ZERO\r
+       000222' 301300  000016          CAIL    V,TTCLTH        ;END OF TABLE?\r
+       000223' 254000  000231'         JRST    STMN8A          ;YES, ERROR\r
+       000224' 312006  012555'         CAME    AC0,TTCTBL(V)   ;MATCH?\r
+       000225' 344300  000222'         AOJA    V,.-3           ;NO, KEEP TRYING\r
+       000226' 242300  000005          LSH     V,5             ;PUT IN AC FIELD (RIGHT HALF)\r
+       000227' 515306  051000          HRLZI   V,<(TTCALL)>(V) ;PUT UUO IN LEFT HALF\r
+       000230' 254000  000216'         JRST    STMN8D          ;SET OPDEF FLAG\r
+\r
+       000231' 403300  000011  STMN8A: SETZB   V,RC            ;CLEAR VALUE AND RELOCATION\r
+       000232' 660600  000200          TRO     ER,ERRO         ;FLAG AS UNDEFINED OP-CODE\r
+       000233' 321640  004441'         JUMP1   OPD             ;TREAT AS STANDARD OP ON PASS1\r
+       000234' 205240  013000          MOVSI   ARG,OPDF!UNDF!EXTF      ;SET A FEW FLAGS\r
+       000235' 254000  000217'         JRST    STMN8B          ;TO FORCE OUT A MESSAGE\r
+\r
+                                               ;STATEMENT OUT PASSES REMAINDER OF LINE (CMNT)\r
+                                                       ;UNTIL A LINE TERMINATOR IS SEEN.\r
+       000236' 665600  000204  STOUTS: TLOA    IO,IOENDL!IORPTC\r
+       000237' 661600  000004  STOUT:  TLO     IO,IORPTC\r
+       000240' 260740  004543'         PUSHJ   PP,BYPAS1\r
+       000241' 306340  000014          CAIN    C,14            ;COMMA?\r
+       000242' 331000  013555'         SKIPL   STPX            ;YES, ERROR IF CODE STORED\r
+       000243' 306340  000033          CAIN    C,EOL\r
+       000244' 665600  000004          TLOA    IO,IORPTC\r
+       000245' 660600  200000          TRO     ER,ERRQ\r
+       000246' 260740  001415' STOUT1: PUSHJ   PP,CHARAC\r
+       000247' 307340  000015          CAIG    C,CR\r
+       000250' 307340  000011          CAIG    C,HT\r
+       000251' 254000  000246'         JRST    STOUT1\r
+       000252' 254000  001556'         JRST    OUTLIN          ;OUTPUT THE LINE (BIN AND LST)\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 13\r
+MACRO  10      24-APR-78 02:11         LABEL PROCESSOR\r
+\r
+                                       SUBTTL  LABEL PROCESSOR\r
+       \r
+       000253' 321600  000317' LABEL:  JUMPAD  LABEL4          ;COMPARE IF NON-SYMBOLIC\r
+       000254' 322000  000321'         JUMPE   AC0,LABEL5      ;ERROR IF BLANK\r
+       000255' 661600  000040          TLO IO,DEFCRS           ;THIS IS A DEFINITION\r
+       000256' 260740  012610'         PUSHJ   PP,SSRCH        ;SEARCH FOR OPERAND\r
+       000257' 205240  602000          MOVSI   ARG,SYMF!UNDF!TAGF      ;NOT FOUND\r
+       000260' 607240  001000          TLNN    ARG,EXTF        ;OPERAND FOUND (SKIP EXIT)\r
+       000261' 254000  000266'         JRST    LABEL0\r
+       000262' 321640  000313'         JUMP1   LABEL3          ;ERROR ON PASS1\r
+       000263' 607240  002000          TLNN    ARG,UNDF        ;UNDEFINED ON PASS1\r
+       000264' 254000  000313'         JRST    LABEL3          ;NO, FLAG ERROR\r
+       000265' 621240  005000          TLZ     ARG,EXTF!PNTF   ;TURN OFF EXT FLAG NOW\r
+       000266' 627240  002100  LABEL0: TLZN    ARG,UNDF!VARF   ;WAS IT PREVIOUSLY DEFINED?\r
+       000267' 254000  000310'         JRST    LABEL2          ;YES, CHECK EQUALITY\r
+       000270' 200300  013777'         MOVE    V,LOCA  ;WFW\r
+       000271' 200440  014004'         MOVE    RC,MODA\r
+       000272' 661240  200000          TLO     ARG,TAGF\r
+       000273' 260740  006531'         PUSHJ   PP,PEEK         ;GET NEXT CHAR.\r
+       000274' 302340  000072          CAIE    C,":"           ;SPECIAL CHECK FOR  ::\r
+       000275' 254000  000301'         JRST    LABEL1          ;NO MATCH\r
+       000276' 661240  000400          TLO     ARG,INTF        ;MAKE IT INTERNAL\r
+       000277' 260740  001363'         PUSHJ   PP,GETCHR       ;PROCESS NEXT CHAR.\r
+       000300' 260740  006531'         PUSHJ   PP,PEEK         ;PREVIEW NEXT CHAR.\r
+       000301' 302340  000041  LABEL1: CAIE    C,"!"           ;HALF-KILL SIGN\r
+       000302' 254000  000305'         JRST    LABEL6          ;NO\r
+       000303' 661240  100000          TLO     ARG,NOOUTF      ;YES, SUPPRESS IT\r
+       000304' 260740  001363'         PUSHJ   PP,GETCHR       ;AND GET RID OF IT\r
+       000305' 202000  013211' LABEL6: MOVEM   AC0,TAG         ;SAVE FOR PASS 1 ERRORS\r
+       000306' 513000  014051'         HLLZS   TAGINC          ;ZERO INCREMENT\r
+       000307' 254000  013036'         JRST    INSERT          ;INSERT/UPDATE AND EXIT\r
+\r
+       000310' 526300  013776' LABEL2: HRLOM   V,LOCBLK        ;SAVE LIST LOCATION\r
+       000311' 316300  013777'         CAMN    V,LOCA          ;DOES IT COMPARE WITH PREVIOUS? WFW\r
+       000312' 312440  014004'         CAME    RC,MODA\r
+       000313' 665240  000020  LABEL3: TLOA    ARG,MDFF        ;NO, FLAG MULTIPLY DEFINED AND SKIP\r
+       000314' 254000  000323'         JRST    LABEL7          ;YES, GET RID OF EXTRA CHARS.\r
+       000315' 660600  000020          TRO     ER,ERRM         ;FLAG MULTIPLY DEFINED ERROR \r
+       000316' 254000  013137'         JRST    UPDATE          ;UPDATE AND EXIT\r
+\r
+       000317' 316000  013777' LABEL4: CAMN    AC0,LOCA        ;DO THEY COMPARE?\r
+       000320' 312440  014004'         CAME    RC,MODA\r
+       000321' 660600  000100  LABEL5: TRO     ER,ERRP         ;NO, FLAG PHASE ERROR\r
+       000322' 263740  000000          POPJ    PP,\r
+\r
+       000323' 332000  013773' LABEL7: SKIPE   LITLVL          ;LABEL IN A LITERAL?\r
+       000324' 202000  013774'         MOVEM   AC0,LITLBL      ;YES, SAVE LABEL NAME FOR LATER\r
+       000325' 260740  006531'         PUSHJ   PP,PEEK         ;INSPECT A CHAR.\r
+       000326' 306340  000072          CAIN    C,":"           ;COLON?\r
+       000327' 260740  001363'         PUSHJ   PP,GETCHR       ;YES, DISPOSE OF IT\r
+       000330' 260740  006531'         PUSHJ   PP,PEEK         ;EXAMINE ONE MORE CHAR.\r
+       000331' 306340  000041          CAIN    C,"!"           ;EXCLAMATION?\r
+       000332' 254000  001363'         JRST    GETCHR          ;YES, INDEED\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 14\r
+MACRO  10      24-APR-78 02:11         LABEL PROCESSOR\r
+\r
+       000333' 263740  000000          POPJ    PP,\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 15\r
+MACRO  10      24-APR-78 02:11         ATOM PROCESSOR\r
+\r
+                               SUBTTL  ATOM PROCESSOR\r
+       000334' 260740  000363' ATOM:   PUSHJ   PP,CELL         ;GET FIRST CELL\r
+       000335' 603600  020000          TLNE    IO,NUMSW        ;IF NON-NUMERIC\r
+       000336' 302340  000042  ATOM1:  CAIE    C,42            ;OR NOT A BINARY SHIFT,\r
+       000337' 263740  000000          POPJ    PP,             ;EXIT\r
+\r
+       000340' 261740  000000          PUSH    PP,AC0          ;STACK REGISTERS, ITS A BINARY SHIFT\r
+       000341' 261740  000001          PUSH    PP,AC1\r
+       000342' 261740  000011          PUSH    PP,RC\r
+       000343' 261740  000015          PUSH    PP,RX\r
+       000344' 541640  000012          HRRI    RX,^D10         ;COMPUTE SHIFT RADIX 10\r
+       000345' 260740  000362'         PUSHJ   PP,CELLSF       ;GET SHIFT\r
+       000346' 200240  000011          MOVE    ARG,RC          ;SAVE RELOCATION\r
+       000347' 262740  000015          POP     PP,RX           ;RESTORE REGISTERS\r
+       000350' 262740  000011          POP     PP,RC\r
+       000351' 262740  000001          POP     PP,AC1\r
+       000352' 210200  000000          MOVN    SX,AC0          ;USE NEGATIVE OF SHIFT\r
+       000353' 262740  000000          POP     PP,AC0\r
+       000354' 326240  000441'         JUMPN   ARG,NUMER2      ;IF NOT ABSOLUTE\r
+       000355' 607600  020000          TLNN    IO,NUMSW        ;AND NUMERIC,\r
+       000356' 254000  000441'         JRST    NUMER2          ;FLAG ERROR\r
+       000357' 246004  000043          LSHC    AC0,^D35(SX)\r
+       000360' 242444  000043          LSH     RC,^D35(SX)\r
+       000361' 254000  000336'         JRST    ATOM1           ;TEST FOR ANOTHER\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 16\r
+MACRO  10      24-APR-78 02:11         ATOM PROCESSOR\r
+\r
+       000362' 661600  400000  CELLSF: TLO     IO,FLDSW\r
+       000363' 403000  000011  CELL:   SETZB   AC0,RC          ;CLEAR RESULT AND RELOCATION\r
+       000364' 403040  000002          SETZB   AC1,AC2         ;CLEAR WORK REGISTERS\r
+       000365' 202740  014014'         MOVEM   PP,PPTEMP       ;SAVE PUSHDOWN POINTER\r
+       000366' 621600  020000          TLZ     IO,NUMSW\r
+       000367' 625640  040240          TLZA    FR,NEGSW!DCFSW!RADXSW\r
+\r
+       000370' 661600  400000  CELL1:  TLO     IO,FLDSW\r
+       000371' 260740  004543'         PUSHJ   PP,BYPASS\r
+       000372' 135300  014606'         LDB     V,[POINT 4,CSTAT(C),14] ;GET CODE\r
+       000373' 256006  000374'         XCT     .+1(V)          ;EXECUTE, INDEX VIA BITS 11,12,13,14 OF CSTAT TABLE\r
+       000374' 254000  000370'         JRST    CELL1           ;0; BLANK, (TAB OR "+")\r
+       000375' 254000  000407'         JRST    LETTER          ;1; LETTER  ] $ % ( ) , ; >\r
+       000376' 641640  000200          TLC     FR,NEGSW        ;2; "-"\r
+       000377' 661640  020000          TLO     FR,INDSW        ;3; "@"\r
+       000400' 254000  000717'         JRST    NUM1            ;4; NUMERIC   0 - 9\r
+       000401' 254000  000662'         JRST    ANGLB           ;5; "<"\r
+       000402' 254000  000557'         JRST    SQBRK           ;6; "["\r
+       000403' 254000  000456'         JRST    QUOTES          ;7; ""","'" \r
+       000404' 254000  000523'         JRST    QUAL            ;10; "^"\r
+       000405' 254000  000700'         JRST    PERIOD          ;11; "."\r
+       000406' 664600  200000          TROA    ER,ERRQ         ;12; ERROR, FLAG AND TREAT AS DELIMITER\r
+                                                               ;12;    ! # & * / : = ? \ _\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 17\r
+MACRO  10      24-APR-78 02:11         ATOM PROCESSOR\r
+\r
+       000407' 665100  440600  LETTER: TLOA    AC2,(POINT 6,AC0,)      ;SET BYTE POINTER\r
+       000410' 260740  001363' LETTE1: PUSHJ   PP,GETCHR       ;GET CHARACTER\r
+       000411' 607400  000006          TLNN    CS,6            ;ALPHA-NUMERIC?\r
+       000412' 254000  000416'         JRST    LETTE3          ;NO,TEST FOR VARIABLE\r
+       000413' 603100  770000          TLNE    AC2,770000      ;STORE ONLY SIX BYTES\r
+       000414' 136340  000002  LETTE2: IDPB    C,AC2           ;RETURN FROM PERIOD\r
+       000415' 254000  000410'         JRST    LETTE1\r
+\r
+       000416' 302340  000003  LETTE3: CAIE    C,03            ;"#"?\r
+       000417' 263740  000000          POPJ    PP,\r
+       000420' 322000  000455'         JUMPE   AC0,POPOUT      ;TEST FOR NULL\r
+       000421' 260740  006531'         PUSHJ   PP,PEEK         ;PEEK AT NEXT CHAR.\r
+       000422' 306340  000043          CAIN    C,"#"           ;IS IT 2ND #?\r
+       000423' 254000  000435'         JRST    LETTE4          ;YES, THEN IT'S AN EXTERN\r
+       000424' 661600  000040          TLO     IO,DEFCRS\r
+       000425' 260740  012610'         PUSHJ   PP,SSRCH        ;YES, SEARCH FOR SYMBOL (OPERAND)\r
+       000426' 205240  402000          MOVSI   ARG,SYMF!UNDF   ;NOT FOUND, FLAGAS UNDEFINED SYM.\r
+       000427' 607240  002000          TLNN    ARG,UNDF        ;UNDEFINED?\r
+       000430' 254000  001363'         JRST    GETCHR          ;NO, GET NEXT CHAR AND RETURN\r
+       000431' 661240  000100          TLO     ARG,VARF        ;YES, FLAG AS A VARIABLE\r
+       000432' 660600  002000          TRO     ER,ERRU         ;SET UNDEFINED ERROR FLAG\r
+       000433' 260740  013035'         PUSHJ   PP,INSERZ       ;INSERT IT WITH A ZERO VALUE\r
+       000434' 254000  000442'         JRST    GETDEL\r
+\r
+       000435' 260740  001363' LETTE4: PUSHJ   PP,GETCHR       ;AND SCAN PAST IT\r
+       000436' 260740  001363'         PUSHJ   PP,GETCHR       ;GET RID OF #\r
+       000437' 254000  004006'         JRST    EXTER1          ;PUT IN SYMBOL TABLE\r
+\r
+       000440' 403000  000011  NUMER1: SETZB   AC0,RC          ;RETURN ZERO\r
+       000441' 660600  000400  NUMER2: TRO     ER,ERRN         ;FLAG ERROR\r
+\r
+       000442' 260740  004543' GETDEL: PUSHJ   PP,BYPASS\r
+       000443' 322340  000442' GETDE1: JUMPE   C,.-1\r
+       000444' 201040  000000          MOVEI   AC1,0\r
+       000445' 661600  420000  GETDE3: TLO     IO,NUMSW!FLDSW  ;FLAG NUMERIC\r
+       000446' 607640  000200          TLNN    FR,NEGSW        ;IS ATOM NEGATIVE?\r
+       000447' 263740  000000          POPJ    PP,             ;NO, EXIT\r
+       000450' 322040  000453'         JUMPE   AC1,GETDE2\r
+       000451' 213000  000001          MOVNS   AC1\r
+       000452' 654000  014607'         TDCA    AC0,[-1]\r
+       000453' 213000  000000  GETDE2: MOVNS   AC0             ;YES, NEGATE VALUE\r
+       000454' 213000  000011          MOVNS   RC              ;AND RELOCATION\r
+       000455' 263740  000000  POPOUT: POPJ    PP,             ;EXIT\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 18\r
+MACRO  10      24-APR-78 02:11         ATOM PROCESSOR\r
+\r
+       000456' 302340  000007  QUOTES: CAIE    C,"'"-40        ;IS IT  "'"\r
+       000457' 254000  000465'         JRST    QUOTE           ;NO MUST BE """\r
+       000460' 254000  000507'         JRST    SQUOTE          ;YES\r
+\r
+       000461' 603000  376000  QUOTE0: TLNE    AC0,376000      ;5 CHARACTERS STORED ALREADY?\r
+       000462' 660600  200000          TRO     ER,ERRQ         ;YES, GIVE WARNING\r
+       000463' 240000  000007          ASH     AC0,7\r
+       000464' 434000  000007          IOR     AC0,C\r
+       000465' 260740  001415' QUOTE:  PUSHJ   PP,CHARAC       ;GET 7-BIT ASCII\r
+       000466' 307340  000015          CAIG    C,15            ;TEST FOR LF, VT, FF OR CR\r
+       000467' 305340  000012          CAIGE   C,12\r
+       000470' 254000  000472'         JRST    .+2             ;NO, SO ALL IS WELL\r
+       000471' 254000  000501'         JRST    QUOTE2          ;ESCAPE WITH Q ERROR\r
+       000472' 302340  000042          CAIE    C,42\r
+       000473' 254000  000461'         JRST    QUOTE0\r
+       000474' 260740  006531'         PUSHJ   PP,PEEK         ;LOOK AT NEXT CHAR.\r
+       000475' 302340  000042          CAIE    C,42\r
+       000476' 254000  000502'         JRST    QUOTE1          ;RESTORE REPEAT LEVEL AND QUIT\r
+       000477' 260740  001415'         PUSHJ   PP,CHARAC       ;GET NEXT CHAR.\r
+       000500' 254000  000461'         JRST    QUOTE0          ;USE IT\r
+\r
+       000501' 660600  200000  QUOTE2: TRO     ER,ERRQ         ;SET Q ERROR\r
+       000502' 254000  000442' QUOTE1: JRST    GETDEL\r
+\r
+       000503' 603000  770000  SQUOT0: TLNE    AC0,770000      ;SIX CHARS. STORED ALREADY ?\r
+       000504' 660600  200000          TRO     ER,ERRQ         ;YES\r
+       000505' 242000  000006          LSH     AC0,6\r
+       000506' 435007  777740          IORI    AC0,-40(C)      ;OR IN SIXBIT CHAR.\r
+\r
+       000507' 260740  001415' SQUOTE: PUSHJ   PP,CHARAC\r
+       000510' 307340  000015          CAIG    C,CR\r
+       000511' 305340  000012          CAIGE   C,LF\r
+       000512' 254000  000514'         JRST    .+2\r
+       000513' 254000  000502'         JRST    QUOTE1\r
+       000514' 302340  000047          CAIE    C,"'"\r
+       000515' 254000  000503'         JRST    SQUOT0\r
+       000516' 260740  006531'         PUSHJ   PP,PEEK\r
+       000517' 302340  000047          CAIE    C,"'"\r
+       000520' 254000  000502'         JRST    QUOTE1\r
+       000521' 260740  001415'         PUSHJ   PP,CHARAC\r
+       000522' 254000  000503'         JRST    SQUOT0\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 19\r
+MACRO  10      24-APR-78 02:11         ATOM PROCESSOR\r
+\r
+       000523' 260740  004543' QUAL:   PUSHJ   PP,BYPAS1       ;SKIP BLANKS, GET NEXT CHARACTER\r
+       000524' 306340  000042          CAIN    C,42            ;"B"?\r
+       000525' 254000  000540'         JRST    QUAL2           ;YES, RADIX=D2\r
+       000526' 306340  000057          CAIN    C,57            ;"O"?\r
+       000527' 254000  000537'         JRST    QUAL8           ;YES, RADIX=D8\r
+       000530' 306340  000046          CAIN    C,46            ;"F"?\r
+       000531' 254000  000713'         JRST    NUMDF           ;YES, PROCESS DECIMAL FRACTION\r
+       000532' 306340  000054          CAIN    C,54            ;"L"?\r
+       000533' 254000  000550'         JRST    QUALL           ;YES\r
+       000534' 302340  000044          CAIE    C,44            ;"D"?\r
+       000535' 254000  000440'         JRST    NUMER1          ;NO, FLAG NUMERIC ERROR\r
+       000536' 271100  000002          ADDI    AC2,2\r
+       000537' 271100  000006  QUAL8:  ADDI    AC2,6\r
+       000540' 271100  000002  QUAL2:  ADDI    AC2,2\r
+       000541' 261740  000015          PUSH    PP,RX\r
+       000542' 540640  000002          HRR     RX,AC2\r
+       000543' 260740  000362'         PUSHJ   PP,CELLSF\r
+       000544' 262740  000015  QUAL2A: POP     PP,RX\r
+       000545' 607600  020000          TLNN    IO,NUMSW\r
+       000546' 254000  000440'         JRST    NUMER1\r
+       000547' 254000  000443'         JRST    GETDE1\r
+\r
+       000550' 261740  000015  QUALL:  PUSH    PP,FR\r
+       000551' 260740  000362'         PUSHJ   PP,CELLSF\r
+       000552' 200100  000000          MOVE    AC2,AC0\r
+       000553' 201000  000044          MOVEI   AC0,^D36\r
+       000554' 322100  000544'         JUMPE   AC2,QUAL2A\r
+       000555' 242100  777777          LSH     AC2,-1\r
+       000556' 364000  000554'         SOJA    AC0,.-2\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 20\r
+MACRO  10      24-APR-78 02:11         LITERAL PROCESSOR\r
+\r
+                               SUBTTL  LITERAL PROCESSOR\r
+\r
+       000557' 261740  000015  SQBRK:  PUSH    PP,FR\r
+       000560' 261740  013742'         PUSH    PP,EXTPNT       ;ALLOW EXTERN TO PRECEDE LIT IN XWD\r
+       000561' 402000  013742'         SETZM   EXTPNT\r
+       000562' 332000  013773'         SKIPE LITLVL    ;SAVE SEQNO AND PAGE IF NOT IN LIT ALREADY\r
+       000563' 254000  000570'         JRST SQB5\r
+       000564' 200340  014101'         MOVE C,SEQNO2\r
+       000565' 202340  013756'         MOVEM C,LITSEQ\r
+       000566' 200340  014100'         MOVE C,PAGENO\r
+       000567' 202340  013755'         MOVEM C,LITPG\r
+       000570' 265100  003007' SQB5:   JSP     AC2,SVSTOW\r
+       000571' 260740  000125' SQB3:   PUSHJ   PP,STMNT\r
+       000572' 306340  000075          CAIN C,75       ;CHECK FOR ]\r
+       000573' 254000  000627'         JRST SQB1\r
+       000574' 661600  000004          TLO IO,IORPTC\r
+       000575' 603640  200000          TLNE    FR,MWLFLG       ;CALL IT ] IF NOT MULTI-WORD FLAG\r
+       000576' 254000  000630'         JRST    SQB2            ;BUT REPEAT LAST CHARACTER\r
+       000577' 260740  004543'         PUSHJ PP,BYPAS1\r
+       000600' 306340  000033          CAIN C,EOL\r
+       000601' 665600  000004          TLOA IO,IORPTC\r
+       000602' 660600  200000          TRO ER,ERRQ\r
+       000603' 260740  001415' SQB4:   PUSHJ PP,CHARAC\r
+       000604' 306340  000073          CAIN    C,";"           ;COMMENT?\r
+       000605' 254000  000622'         JRST    SQB6            ;YES, IGNORE SQUARE BRACKETS\r
+       000606' 306340  000135          CAIN    C,"]"           ;LOOK FOR TERMINAL SQB\r
+       000607' 606600  777760          TRNN    ER,ERRORS       ;IN CASE OF ERROR IN LITERAL\r
+       000610' 254000  000612'         JRST    .+2             ;NO ALL IS WELL\r
+       000611' 254000  000627'         JRST    SQB1            ;FINISH THE LITERAL NOW!!\r
+       000612' 307340  000015          CAIG    C,CR            ;LOOK FOR END OF LINE\r
+       000613' 306340  000011          CAIN    C,HT\r
+       000614' 254000  000603'         JRST    SQB4\r
+       000615' 260740  002020' SQB4A:  PUSHJ   PP,OUTIML       ;DUMP\r
+       000616' 260740  001415'         PUSHJ   PP,CHARAC       ;GET ANOTHER CHAR.\r
+       000617' 331000  013452'         SKIPL   LIMBO           ;CRLF FLAG\r
+       000620' 661600  000004          TLO     IO,IORPTC       ;NO REPEAT\r
+       000621' 254000  000571'         JRST    SQB3\r
+\r
+       000622' 260740  001415' SQB6:   PUSHJ   PP,CHARAC       ;GET A CHARACTER\r
+       000623' 307340  000015          CAIG    C,CR\r
+       000624' 306340  000011          CAIN    C,HT            ;LOOK FOR END OF LINE CHAR.\r
+       000625' 254000  000622'         JRST    SQB6            ;NOT YET\r
+       000626' 254000  000615'         JRST    SQB4A           ;GOT IT\r
+\r
+       000627' 621600  000004  SQB1:   TLZ     IO,IORPTC\r
+       000630' 260740  001273' SQB2:   PUSHJ   PP,STOLIT\r
+       000631' 265100  003015'         JSP     AC2,GTSTOW\r
+       000632' 332000  013774'         SKIPE   LITLBL          ;NEED TO FIXUP A LABEL?\r
+       000633' 260740  000641'         PUSHJ   PP,RELBLE       ;YES, USE LOC OF LITERAL\r
+       000634' 262740  013742'         POP     PP,EXTPNT\r
+       000635' 262740  000015          POP     PP,FR\r
+       000636' 332000  013773'         SKIPE   LITLVL          ;WERE WE NESTED?\r
+       000637' 321640  000441'         JUMP1   NUMER2          ;YES, FORCE ERROR IF PASS 1\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 20-1\r
+MACRO  10      24-APR-78 02:11         LITERAL PROCESSOR\r
+\r
+       000640' 254000  000442'         JRST    GETDEL\r
+\r
+       000641' 261740  000000  RELBLE: PUSH    PP,AC0          ;SAVE LOCATION COUNTER\r
+       000642' 261740  000011          PUSH    PP,RC           ;AND RELOCATION\r
+       000643' 200000  013774'         MOVE    AC0,LITLBL      ;SYMBOL WE NEED\r
+       000644' 402000  013774'         SETZM   LITLBL          ;ZERO INDICATOR\r
+       000645' 260740  012610'         PUSHJ   PP,SSRCH        ;SEARCH FOR OPERAND\r
+       000646' 254000  000657'         JRST    RELBL1          ;SHOULD NEVER HAPPEN\r
+       000647' 607240  200000          TLNN    ARG,TAGF        ;IT BETTER BE A LABEL\r
+       000650' 254000  000657'         JRST    RELBL1          ;IT WASN'T , GIVE UP BEFORE SOME HARM IS DONE\r
+       000651' 621240  007000          TLZ     ARG,UNDF!EXTF!PNTF      ;CLEAR FLAGS NOW\r
+       000652' 262740  000011          POP     PP,RC           ;GET LITERAL RELOCATION\r
+       000653' 200317  000000          MOVE    V,(PP)          ;GET VALUE (LOC COUNTER)\r
+       000654' 260740  013137'         PUSHJ   PP,UPDATE       ;UPDATE VALUE\r
+       000655' 262740  000000          POP     PP,AC0          ;RESTORE LITERAL COUNT\r
+       000656' 263740  000000          POPJ    PP,             ;RETURN\r
+       \r
+       000657' 262740  000011  RELBL1: POP     PP,RC           ;RESTORE RC\r
+       000660' 262740  000000          POP     PP,AC0  ;AND AC0\r
+       000661' 263740  000000          POPJ    PP,             ;JUST RETURN\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 21\r
+MACRO  10      24-APR-78 02:11         LITERAL PROCESSOR\r
+\r
+       000662' 261740  000015  ANGLB:  PUSH    PP,FR\r
+       000663' 621640  020000          TLZ     FR,INDSW\r
+       000664' 260740  000334'         PUSHJ   PP,ATOM\r
+       000665' 607600  020000          TLNN    IO,NUMSW\r
+       000666' 302340  000035          CAIE    C,35\r
+       000667' 254000  000673'         JRST    ANGLB1\r
+       000670' 260740  004126'         PUSHJ   PP,ASSIG1\r
+       000671' 200000  000006          MOVE    AC0,V\r
+       000672' 254000  000674'         JRST    ANGLB2\r
+\r
+       000673' 260740  001065' ANGLB1: PUSHJ   PP,EVALHA\r
+       000674' 262740  000015  ANGLB2: POP     PP,FR\r
+       000675' 302340  000036          CAIE    C,36\r
+       000676' 660600  000400          TRO     ER,ERRN\r
+       000677' 254000  000442'         JRST    GETDEL\r
+\r
+       000700' 260740  001363' PERIOD: PUSHJ   PP,GETCHR       ;LOOK AT NEXT CHARACTER\r
+       000701' 607400  000002          TLNN    CS,2            ;ALPHABETIC?\r
+       000702' 254000  000706'         JRST    PERNUM          ;NO, TEST NUMERIC\r
+       000703' 205000  160000          MOVSI   AC0,(SIXBIT /./)        ;YES, PUT PERIOD IN AC0\r
+       000704' 205100  360600          MOVSI   AC2,(POINT 6,AC0,5)     ;SET BYTE POINTER\r
+       000705' 254000  000414'         JRST    LETTE2          ;AND TREAT AS SYMBOL\r
+\r
+       000706' 603400  000004  PERNUM: TLNE    CS,4            ;IS IT A NUMBER\r
+       000707' 254000  000745'         JRST    NUM32           ;YES\r
+       000710' 200000  013777'         MOVE    AC0,LOCA        ;NO. CURRENT LOC SYMBOL (.)\r
+       000711' 200440  014004'         MOVE    RC,MODA         ;SET TO CURRENT ASSEMBLY MODE\r
+       000712' 254000  000443'         JRST    GETDE1          ;GET DELIMITER\r
+       000713' 661640  000040  NUMDF:  TLO     FR,DCFSW        ;SET DECIMAL FRACTION FLAG\r
+       000714' 260740  001363' NUM:    PUSHJ   PP,GETCHR       ;GET A CHARACTER\r
+       000715' 607400  000004          TLNN    CS,4            ;NUMERIC?\r
+       000716' 254000  000727'         JRST    NUM10           ;NO\r
+       000717' 275340  000020  NUM1:   SUBI    C,20            ;CONVERT TO OCTAL\r
+       000720' 261740  000007          PUSH    PP,C            ;STACK FOR FLOATING POINT\r
+       000721' 200000  000001          MOVE    AC0,AC1\r
+       000722' 225015  000000          MULI    AC0,0(RX)\r
+       000723' 270040  000007          ADD     AC1,C           ;ADD IN LAST VALUE\r
+       000724' 301355  000000          CAIL    C,0(RX)         ;IS NUMBER LESS THAN CURRENT RADIX?\r
+       000725' 661640  040000          TLO     FR,RADXSW       ;NO, SET FLAG\r
+       000726' 344100  000714'         AOJA    AC2,NUM         ;YES, AC2=NO. OF DECIMAL PLACES\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 22\r
+MACRO  10      24-APR-78 02:11         LITERAL PROCESSOR\r
+\r
+       000727' 302340  000016  NUM10:  CAIE    C,16            ;PERIOD?\r
+       000730' 603640  000040          TLNE    FR,DCFSW        ;OR DECIMAL FRACTION?\r
+       000731' 254000  000741'         JRST    NUM30           ;YES, PROCESS FLOATING POINT\r
+       000732' 242040  000001          LSH     AC1,1           ;NO, CLEAR THE SIGN BIT\r
+       000733' 246000  000043          LSHC    AC0,^D35        ;AND SHIFT INTO AC0\r
+       000734' 200740  014014'         MOVE    PP,PPTEMP       ;RESTORE PP\r
+       000735' 362100  000443'         SOJE    AC2,GETDE1      ;NO RADIX ERROR TEST IF ONE DIGIT\r
+       000736' 603640  040000          TLNE    FR,RADXSW       ;WAS ILLEGAL NUMBER ENCOUNTERED?\r
+       000737' 660600  000400          TRO     ER,ERRN         ;YES, FLAG N ERROR\r
+       000740' 254000  000443'         JRST    GETDE1\r
+\r
+       000741' 302340  000042  NUM30:  CAIE    C,"B"-40        ;IF "B" THEN MISSING  "."\r
+       000742' 260740  001363' NUM31:  PUSHJ   PP,GETCHR\r
+       000743' 607400  000004          TLNN    CS,4            ;NUMERIC?\r
+       000744' 254000  000750'         JRST    NUM40           ;NO\r
+       000745' 275340  000020  NUM32:  SUBI    C,20\r
+       000746' 261740  000007          PUSH    PP,C\r
+       000747' 254000  000742'         JRST    NUM31\r
+\r
+       000750' 261740  000015  NUM40:  PUSH    PP,FR           ;STACK VALUES\r
+       000751' 541640  000012          HRRI    RX,^D10\r
+       000752' 261740  000002          PUSH    PP,AC2\r
+       000753' 261740  014014'         PUSH    PP,PPTEMP\r
+       000754' 306340  000045          CAIN    C,45            ;"E"?\r
+                                       JRST    [PUSHJ PP,PEEK  ;GET NEXT CHAR\r
+                                               PUSH PP,C       ;SAVE NEXT CHAR\r
+                                               PUSHJ PP,CELL   ;YES, GET EXPONENT\r
+                                               POP PP,C        ;GET FIRST CHAR. AFTER E\r
+                                               CAIN V,4        ;MUST HAVE NUMERICAL STATUS\r
+                                               JRST    .+2     ;SKIP RETURN\r
+                                               CAIN C,"<"      ;ALLOW <EXP>\r
+                                               JRST    .+2     ;SKIP RETURN\r
+                                               SKIPN   AC0     ;ERROR IF NON-ZERO EXPRESSION\r
+                                               TROA ER,ERRQ    ;ALLOW E+,E-\r
+                                               SETOM   RC      ;FORCE NUMERICAL ERROR\r
+       000755' 254000  014610'                 JRST    .+2]    ;SKIP RETURN\r
+       000756' 201000  000000          MOVEI   AC0,0           ;NO, ZERO EXPONENT\r
+       000757' 262740  014014'         POP     PP,PPTEMP\r
+       000760' 262740  000004          POP     PP,SX\r
+       000761' 262740  000015          POP     PP,FR\r
+       000762' 550300  000017          HRRZ    V,PP\r
+       000763' 200740  014014'         MOVE    PP,PPTEMP\r
+       000764' 326440  000440'         JUMPN   RC,NUMER1       ;EXPONENT MUST BE ABSOLUTE\r
+       000765' 270200  000000          ADD     SX,AC0\r
+       000766' 550240  000017          HRRZ    ARG,PP\r
+       000767' 270200  000005          ADD     SX,ARG\r
+       000770' 403000  000002          SETZB   AC0,AC2\r
+       000771' 603640  000040          TLNE    FR,DCFSW\r
+       000772' 254000  001013'         JRST    NUM60\r
+       000773' 255400  000774'         JOV     NUM50           ;CLEAR OVERFLOW FLAG\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 23\r
+MACRO  10      24-APR-78 02:11         LITERAL PROCESSOR\r
+\r
+\r
+       000774' 265140  001027' NUM50:  JSP     SDEL,NUMUP      ;FLOATING POINT\r
+       000775' 254000  001002'         JRST    NUM52           ;END OF WHOLE NUMBERS\r
+       000776' 164000  014624'         FMPR    AC0,[10.0]      ;MULTIPLY BY 10\r
+       000777' 661040  233000          TLO     AC1,233000      ;CONVERT TO FLOATING POINT\r
+       001000' 144000  000001          FADR    AC0,AC1         ;ADD IT IN\r
+       001001' 254000  000774'         JRST    NUM50\r
+\r
+       001002' 265140  001035' NUM52:  JSP     SDEL,NUMDN      ;PROCESS FRACTION\r
+       001003' 144000  000002          FADR    AC0,AC2\r
+       001004' 255400  000440'         JOV     NUMER1          ;TEST FOR OVERFLOW\r
+       001005' 254000  000443'         JRST    GETDE1\r
+\r
+       001006' 661040  233000          TLO     AC1,233000\r
+       001007' 602040  777777          TRNE    AC1,-1\r
+       001010' 144100  000001          FADR    AC2,AC1         ;ACCUMULATE FRACTION\r
+       001011' 174100  014624'         FDVR    AC2,[10.0]\r
+       001012' 254000  001002'         JRST    NUM52\r
+\r
+       001013' 265140  001027' NUM60:  JSP     SDEL,NUMUP\r
+       001014' 254000  001020'         JRST    NUM62\r
+       001015' 221000  000012          IMULI   AC0,^D10\r
+       001016' 270000  000001          ADD     AC0,AC1\r
+       001017' 254000  001013'         JRST    NUM60\r
+\r
+       001020' 246040  777734  NUM62:  LSHC    AC1,-^D36\r
+       001021' 265140  001035'         JSP     SDEL,NUMDN\r
+       001022' 246040  000045          LSHC    AC1,^D37\r
+       001023' 260740  004544'         PUSHJ   PP,BYPAS2\r
+       001024' 254000  000445'         JRST    GETDE3\r
+\r
+       001025' 235040  000012          DIVI    AC1,^D10\r
+       001026' 254000  001020'         JRST    NUM62\r
+\r
+       001027' 201040  000000  NUMUP:  MOVEI   AC1,0\r
+       001030' 311240  000004          CAML    ARG,SX\r
+       001031' 254003  000000          JRST    0(SDEL)\r
+       001032' 315240  000006          CAMGE   ARG,V\r
+       001033' 200045  000001          MOVE    AC1,1(ARG)\r
+       001034' 344243  000001          AOJA    ARG,1(SDEL)\r
+\r
+       001035' 201040  000000  NUMDN:  MOVEI   AC1,0\r
+       001036' 317300  000004          CAMG    V,SX\r
+       001037' 254003  000000          JRST    0(SDEL)\r
+       001040' 313300  000005          CAMLE   V,ARG\r
+       001041' 200046  000000          MOVE    AC1,0(V)\r
+       001042' 364303  000003          SOJA    V,3(SDEL)\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 24\r
+MACRO  10      24-APR-78 02:11         GETSYM\r
+\r
+                               SUBTTL  GETSYM\r
+       001043' 201000  000000  GETSYM: MOVEI   AC0,0           ;CLEAR AC0\r
+       001044' 205040  440600          MOVSI   AC1,(POINT 6,AC0)       ;PUT POINTER IN AC1\r
+       001045' 260740  004543'         PUSHJ   PP,BYPASS       ;SKIP LEADING BLANKS\r
+       001046' 607400  000002          TLNN    CS,2            ;ALPHABETIC?\r
+       001047' 254000  001055'         JRST    GETSY1          ;NO, ERROR\r
+       001050' 302340  000016          CAIE    C,16            ;PERIOD?\r
+       001051' 254000  001056'         JRST    GETSY2          ;NO, A VALID SYMBOL\r
+       001052' 136340  000001          IDPB    C,AC1           ;STORE THE CHARACTER\r
+       001053' 260740  001363'         PUSHJ   PP,GETCHR       ;YES, TEST NEXT CHARACTER\r
+       001054' 607400  000002          TLNN    CS,2            ;ALPHABETIC?\r
+       001055' 664600  040000  GETSY1: TROA    ER,ERRA\r
+       001056' 350017  000000  GETSY2: AOS     0(PP)           ;YES, SET SKIP EXIT\r
+       001057' 607400  000006  GETSY3: TLNN    CS,6            ;ALPHA-NUMERIC?\r
+       001060' 254000  004544'         JRST    BYPAS2          ;NO, GET DELIMITER\r
+       001061' 603040  770000          TLNE    AC1,770000      ;YES, HAVE WE STORED SIX?\r
+       001062' 136340  000001          IDPB    C,AC1           ;NO, STORE IT\r
+       001063' 260740  001363'         PUSHJ   PP,GETCHR\r
+       001064' 254000  001057'         JRST    GETSY3\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 25\r
+MACRO  10      24-APR-78 02:11         EXPRESSION EVALUATOR\r
+\r
+                               SUBTTL  EXPRESSION EVALUATOR\r
+                       000000  CV==    AC0                     ;CURRENT VALUE\r
+                       000001  PV==    AC1                     ;PREVIOUS VALUE\r
+                       000011  RC==    RC                      ;CURRENT RELOCATABILITY\r
+                       000002  PR==    AC2                     ;PREVIOUS RELOCATABILITY\r
+                       000010  CS=     CS                      ;CURRENT STATUS\r
+                       000003  PS==    SDEL                    ;PREVIOUS STATUS\r
+\r
+       001065' 661640  010000  EVALHA: TLO     FR,TMPSW\r
+       001066' 260740  001077' EVALCM: PUSHJ   PP,EVALEX       ;EVALUATE FIRST EXPRESSION\r
+       001067' 261740  014625'         PUSH    PP,[0]          ;MARK PDL\r
+       001070' 321400  001073'         JUMPCM  EVALC3          ;JUMP IF COMMA\r
+       001071' 661600  000004          TLO     IO,IORPTC       ;IT'S NOT,SO REPEAT\r
+       001072' 254000  004445'         JRST    OP              ;PROCESS IN OP\r
+       001073'                 EVALC3:\r
+       001073' 261740  014625'         PUSH    PP,[0]          ;STORE ZERO'S ON PDL\r
+       001074' 261740  014625'         PUSH    PP,[0]          ;.......\r
+       001075' 205100  270417          MOVSI   AC2,(POINT 4,(PP),12)\r
+       001076' 254000  004454'         JRST    OP1B            ;PROCESS IN OP\r
+\r
+       001077' 661600  400000  EVALEX: TLO     IO,FLDSW\r
+       001100' 261740  014626'         PUSH    PP,[XWD TNODE,0]        ;MARK THE LIST 200000,,0\r
+       001101' 627640  010000          TLZN    FR,TMPSW\r
+       001102' 260740  000334' EVATOM: PUSHJ   PP,ATOM         ;GET THE NEXT ATOM\r
+       001103' 322000  001177'         JUMPE   AC0,EVGETD      ;TEST FOR NULL/ZERO\r
+       001104' 663600  020000          TLOE    IO,NUMSW        ;SET NUMERIC, WAS IT PREVIOUSLY?\r
+       001105' 254000  001200'         JRST    EVGETD+1        ;YES, TREAT ACCORDINGLY\r
+       001106' 260740  012713'         PUSHJ   PP,SEARCH       ;SEARCH FOR MACRO OR SYMBOL\r
+       001107' 254000  001131'         JRST    EVOP            ;NOT FOUND, TRY FOR OP-CODE\r
+       001110' 321240  001112'         JUMPL   ARG,.+2         ;SKIP IF OPERAND\r
+       001111' 260740  012613'         PUSHJ   PP,SSRCH1       ;OPERATOR, TRY FOR SYMBOL (OPERAND)\r
+       001112' 260740  012603'         PUSHJ   PP,QSRCH        ;PERFORM CROSS-REFERENCE\r
+       001113' 327240  001116'         JUMPG   ARG,EVMAC       ;BRANCH IF OPERATOR\r
+       001114' 200000  000006          MOVE    AC0,V           ;SYMBOL, SET VALUE\r
+       001115' 254000  001161'         JRST    EVTSTS          ;TEST STATUS\r
+\r
+       001116' 603640  000200  EVMAC:  TLNE    FR,NEGSW        ;UNARY MINUS?\r
+       001117' 254000  001156'         JRST    EVERRZ          ;YES, INVALID BEFORE OPERATOR\r
+       001120' 135140  014605'         LDB     SDEL,[POINT 3,ARG,5]    ;GET MACF/OPDF/SYNF\r
+       001121' 361140  001156'         SOJL    SDEL,EVERRZ     ;ERROR IF NO FLAGS\r
+\r
+       001122' 322340  001124'         JUMPE   C,.+2           ;NON-BLANK?\r
+       001123' 661600  000004          TLO     IO,IORPTC       ;YES, REPEAT CHARACTER\r
+       001124' 362140  005705'         SOJE    SDEL,CALLM      ;MACRO IF 2\r
+       001125' 327140  001135'         JUMPG   SDEL,EVOPS      ;SYNONYM IF 4\r
+\r
+       001126' 200000  000006          MOVE    AC0,V           ;OPDEF\r
+       001127' 201300  004445'         MOVEI   V,OP            ;SET TRANSFER VECTOR\r
+       001130' 254000  001141'         JRST    EVOPD\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 26\r
+MACRO  10      24-APR-78 02:11         EXPRESSION EVALUATOR\r
+\r
+       001131' 603640  000200  EVOP:   TLNE    FR,NEGSW        ;OPCODE, UNARY MINUS?\r
+       001132' 254000  001156'         JRST    EVERRZ          ;YES, ERROR\r
+\r
+       001133' 260740  010754'         PUSHJ   PP,OPTSCH       ;SEARCH SYMBOL TABLE\r
+       001134' 254000  001154'         JRST    EVOPX           ;NOT FOUND\r
+       001135' 620300  200000  EVOPS:  TRZ     V,LITF          ;CLEAR LIT INVALID FLAG\r
+       001136' 622300  100000          TRZE    V,ADDF          ;SYNONYM\r
+       001137' 254000  001154'         JRST    EVOPX           ;PSEUDO-OP THAT GENERATES NO DATA JUMPS\r
+       001140' 510000  000006          HLLZ    AC0,V\r
+       001141' 322340  001143' EVOPD:  JUMPE   C,.+2           ;OPDEF, NON-BLANK DELIMITER?\r
+       001142' 661600  000004          TLO     IO,IORPTC       ;YES, REPEAT CHARACTER\r
+       001143' 265100  003007'         JSP     AC2,SVSTOW\r
+       001144' 260746  000000          PUSHJ   PP,0(V)\r
+       001145' 260740  002776'         PUSHJ   PP,DSTOW\r
+       001146' 265100  003015'         JSP     AC2,GTSTOW\r
+       001147' 602440  777776          TRNE    RC,-2\r
+       001150' 542440  013742'         HRRM    RC,EXTPNT\r
+       001151' 603440  777776          TLNE RC,-2\r
+       001152' 502440  013742'         HLLM RC,EXTPNT\r
+       001153' 254000  001204'         JRST    EVNUM\r
+\r
+       001154' 205240  402000  EVOPX:  MOVSI   ARG,SYMF!UNDF\r
+       001155' 260740  013035'         PUSHJ   PP,INSERZ\r
+       001156' 403000  000011  EVERRZ: SETZB   AC0,RC          ;CLEAR CODE AND RELOCATION\r
+       001157' 660600  002000  EVERRU: TRO     ER,ERRU\r
+       001160' 254000  001177'         JRST    EVGETD\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 27\r
+MACRO  10      24-APR-78 02:11         EXPRESSION EVALUATOR\r
+\r
+       001161' 603240  002000  EVTSTS: TLNE    ARG,UNDF\r
+                                       JRST    [TRO    ER,ERRU ;SET UNDEF ERROR\r
+                                               JUMP1   EVGETD  ;TREAT AS UNDF ON PASS1\r
+       001162' 254000  014627'                 JRST    .+1]    ;TREAT AS EXTERNAL ON PASS2\r
+       001163' 607240  001000          TLNN    ARG,EXTF\r
+       001164' 254000  001173'         JRST    EVTSTR\r
+       001165' 550440  000005          HRRZ RC,ARG     ;GET ADRES WFW\r
+       001166' 550240  013742'         HRRZ ARG,EXTPNT ;SAVE IT WFW\r
+       001167' 542440  013742'         HRRM RC,EXTPNT  ;WFW\r
+       001170' 602240  777777          TRNE ARG,-1     ;WFW\r
+       001171' 660600  000040          TRO     ER,ERRE\r
+       001172' 403000  000005          SETZB   AC0,ARG\r
+\r
+       001173' 603240  000020  EVTSTR: TLNE    ARG,MDFF        ;MULTIPLY DEFINED?\r
+       001174' 660600  020000          TRO     ER,ERRD         ;YES, FLAG IT\r
+       001175' 603640  000200          TLNE    FR,NEGSW        ;NEGATIVE ATOM?\r
+       001176' 260740  000453'         PUSHJ   PP,GETDE2       ;YES, NEGATE AC0 AND RC\r
+\r
+       001177' 603600  020000  EVGETD: TLNE    IO,NUMSW        ;NON BLANK FIELD\r
+       001200' 661640  100000          TLO     FR,FSNSW        ;YES,SET FLAG\r
+       001201' 260740  004544'         PUSHJ   PP,BYPAS2\r
+       001202' 603400  000006          TLNE    CS,6            ;ALPHA-NUMERIC?\r
+       001203' 661600  000004          TLO     IO,IORPTC       ;YES, REPEAT IT\r
+       001204' 262740  000003  EVNUM:  POP     PP,PS           ;POP THE PREVIOUS DELIMITER/TNODE\r
+       001205' 661140  004000          TLO     PS,4000\r
+       001206' 315140  000010          CAMGE   PS,CS           ;OPERATION REQUIRED?\r
+       001207' 254000  001214'         JRST    EVPUSH          ;NO, PUT VALUES BACK ON STACK\r
+       001210' 607140  200000          TLNN    PS,TNODE        ;YES, HAVE WE REACHED TERMINAL NODE?\r
+       001211' 254000  001221'         JRST    EVXCT           ;NO, EXECUTION REQUIRED\r
+       001212' 607400  170000          TLNN    CS,170000       ;YES, ARE WE POINTING AT DEL? (& ! * / + - _)\r
+       001213' 263740  000000          POPJ    PP,             ;YES, EXIT\r
+                                                               ;NO,FALL INTO EVPUSH\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 28\r
+MACRO  10      24-APR-78 02:11         EXPRESSION EVALUATOR\r
+\r
+       001214' 261740  000003  EVPUSH: PUSH    PP,PS           ;STACK VALUES\r
+       001215' 261740  000000          PUSH    PP,CV\r
+       001216' 261740  000011          PUSH    PP,RC\r
+       001217' 261740  000010          PUSH    PP,CS\r
+       001220' 254000  001102'         JRST    EVATOM          ;GET NEXT ATOM\r
+\r
+       001221' 262740  000002  EVXCT:  POP     PP,PR           ;POP PREVIOUS RELOCATABILITY\r
+       001222' 262740  000001          POP     PP,PV           ;AND PREVIOUS VALUE\r
+       001223' 135140  014632'         LDB     PS,[POINT 3,PS,29]      ;TYPE OF OPERATION TO PS\r
+       001224' 254003  001225'         JRST    .+1(PS)         ;PERFORM PROPER OPERATION\r
+       001225' 254000  000104'         JRST    ASSEM1          ;0; SHOULD NEVER GET HERE ;DMN\r
+       001226' 254000  001253'         JRST    XMUL            ;1;\r
+       001227' 254000  001247'         JRST    XDIV            ;2;\r
+       001230' 254000  001244'         JRST    XADD            ;3;\r
+       001231' 254000  001241'         JRST    XSUB            ;4;\r
+       001232' 254000  001264'         JRST    XLRW            ;5; "_"\r
+       001233' 674000  000001          TDOA    CV,PV           ;6; MERGE PV INTO CV\r
+       001234' 404000  000001          AND     CV,PV           ;7; AND PV INTO CV\r
+       001235' 326440  001237'         JUMPN   RC,.+2          ;COMMON RELOCATION TEST\r
+       001236' 322100  001204' EVXCT1: JUMPE   PR,EVNUM\r
+       001237' 660600  004000          TRO     ER,ERRR         ;BOTH MUST BE FIXED\r
+       001240' 254000  001204'         JRST    EVNUM           ;GO TRY AGAIN\r
+\r
+       001241' 276040  000000  XSUB:   SUBM    PV,CV\r
+       001242' 276100  000011          SUBM    PR,RC\r
+       001243' 254000  001204'         JRST    EVNUM\r
+\r
+       001244' 272040  000000  XADD:   ADDM    PV,CV\r
+       001245' 272100  000011          ADDM    PR,RC\r
+       001246' 254000  001204'         JRST    EVNUM\r
+\r
+       001247' 230100  000000  XDIV:   IDIV    PR,CV           ;CORRECT RELOCATABILITY\r
+       001250' 232040  000000          IDIVM   PV,CV\r
+       001251' 250100  000011  XDIV1:  EXCH    PR,RC           ;TAKE RELOCATION OF NUMERATOR\r
+       001252' 254000  001236'         JRST    EVXCT1\r
+\r
+       001253' 322100  001256' XMUL:   JUMPE   PR,XMUL1        ;AT LEAST ONE OPERAND\r
+       001254' 322440  001256'         JUMPE   RC,XMUL1        ;MUST BE FIXED\r
+       001255' 660600  004000          TRO     ER,ERRR\r
+       001256' 436100  000011  XMUL1:  IORM    PR,RC           ;GET RELOCATION TO RC\r
+       001257' 315040  000000          CAMGE   PV,CV           ;FIND THE GREATER\r
+       001260' 250040  000000          EXCH    PV,CV           ;FIX IN CASE CV=0,OR 1\r
+       001261' 222040  000011          IMULM   PV,RC\r
+       001262' 222040  000000          IMULM   PV,CV\r
+       001263' 254000  001204'         JRST    EVNUM\r
+       001264' 250040  000000  XLRW:   EXCH    PV,CV\r
+       001265' 242001  000000          LSH     CV,0(PV)\r
+       001266' 242101  000000          LSH     PR,0(PV)\r
+       001267' 254000  001251'         JRST    XDIV1\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 29\r
+MACRO  10      24-APR-78 02:11         LITERAL STORAGE HANDLER\r
+\r
+                                       SUBTTL  LITERAL STORAGE HANDLER\r
+       \r
+       001270'                 STOLER:\r
+       001270' 403000  000011          SETZB   AC0,RC  ;ERROR, NO CODE STORED\r
+       001271' 260740  002751'         PUSHJ   PP,STOW         ;STOW ZERO\r
+       001272' 660600  010000          TRO     ER,ERRL         ;AND FLAG THE ERROR\r
+\r
+       001273' 200140  013555' STOLIT: MOVE    SDEL,STPX\r
+       001274' 274140  013556'         SUB     SDEL,STPY       ;COMPUTE NUMBER OF WORDS\r
+       001275' 322140  001270'         JUMPE   SDEL,STOLER     ;ERROR IF NONE STORED\r
+       001276' 606600  777760          TRNN    ER,ERRORS       ;ANY ERRORS?\r
+       001277' 254000  001303'         JRST    STOL06          ;NO\r
+       001300' 325640  001342'         JUMP2   STOL22          ;YES, NO SEARCH.  BRANCH IF PASS2\r
+       001301' 272140  013506'         ADDM    SDEL,LITCNT     ;PASS ONE, UPDATE COUNT\r
+       001302' 254000  003003'         JRST    STOWI           ;INITIALIZE STOW\r
+\r
+       001303' 201200  013501' STOL06: MOVEI   SX,LITAB        ;PREPARE FOR SEARCH\r
+       001304' 200240  013555'         MOVE    ARG,STPX        ;SAVE IN THE EVENT OF MULTIPLE-WORD\r
+       001305' 504240  013556'         HRL     ARG,STPY\r
+       001306' 200100  013507'         MOVE    AC2,LITNUM\r
+       001307' 201140  000000          MOVEI   SDEL,0\r
+       001310' 260740  002776' STOL08: PUSHJ   PP,DSTOW        ;GET VALUE WFW\r
+\r
+       001311' 361100  001344' STOL10: SOJL    AC2,STOL24      ;TEST FOR END\r
+       001312' 200204  000000          MOVE    SX,0(SX)        ;NO, GET NEXT STORAGE CELL\r
+       001313' 200304  777777          MOVE    V,-1(SX)                ;GET RELOCATION BITS WFW\r
+       001314' 316004  777776          CAMN    AC0,-2(SX)      ;DO CODES COMPARE? WFW\r
+       001315' 312440  000006          CAME    RC,V            ;YES, HOW ABOUT RELOCATION?\r
+       001316' 344140  001311'         AOJA    SDEL,STOL10     ;NO, TRY AGAIN\r
+       001317' 335000  013555'         SKIPGE  STPX            ;YES, MULTI-WORD?\r
+       001320' 254000  001355'         JRST    STOL26          ;NO, JUST RETURN LOCATION\r
+       001321' 202100  013517'         MOVEM   AC2,SAVBLK+AC2  ;YES, SAVE STARTING INFO\r
+       001322' 202200  013521'         MOVEM   SX,SAVBLK+SX\r
+\r
+       001323' 361100  001343' STOL12: SOJL    AC2,STOL23      ;TEST FOR END\r
+       001324' 260740  002776'         PUSHJ   PP,DSTOW        ;GET NEXT WORD WFW\r
+       001325' 200204  000000          MOVE    SX,0(SX)        ;UPDATE POINTER\r
+       001326' 200304  777777          MOVE    V,-1(SX)                ;GET RELOCATION WFW\r
+       001327' 316004  777776          CAMN    AC0,-2(SX)      ;COMPARE VALUE WFW\r
+       001330' 312440  000006          CAME    RC,V            ;AND RELOCATION\r
+       001331' 254000  001335'         JRST    STOL14          ;NO MATCH, TRY AGAIN\r
+       001332' 331000  013555'         SKIPL   STPX            ;MATCH, HAVE WE FINISHED SEARCH?\r
+       001333' 254000  001323'         JRST    STOL12          ;NO, TRY NEXT WORD\r
+       001334' 254000  001355'         JRST    STOL26          ;YES, RETURN LOCATION\r
+\r
+       001335' 200100  013517' STOL14: MOVE    AC2,SAVBLK+AC2  ;RESTORE STOW POINTERS\r
+       001336' 200200  013521'         MOVE    SX,SAVBLK+SX\r
+       001337' 572240  013555'         HRREM   ARG,STPX\r
+       001340' 576240  013556'         HLREM   ARG,STPY\r
+       001341' 344140  001310'         AOJA    SDEL,STOL08     ;BETTER LUCK NEXT TIME\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 30\r
+MACRO  10      24-APR-78 02:11         LITERAL STORAGE HANDLER\r
+\r
+\r
+       001342' 200140  013507' STOL22: MOVE    SDEL,LITNUM\r
+       001343' 260740  002776' STOL23: PUSHJ   PP,DSTOW        ;DSTOW AND CONVERT\r
+       001344' 200200  013502' STOL24: MOVE    SX,LITABX       ;GET CURRENT STORAGE\r
+       001345' 260740  003533'         PUSHJ   PP,GETTOP       ;GET NEXT CELL\r
+       001346' 202004  777776          MOVEM   AC0,-2(SX)      ;STORE CODE WFW\r
+       001347' 202444  777777          MOVEM   RC,-1(SX)       ;WFW\r
+       001350' 202200  013502'         MOVEM   SX,LITABX       ;SET POINTER TO CURRENT CELL\r
+       001351' 350000  013507'         AOS     LITNUM          ;INCREMENT NUMBER STORED\r
+       001352' 350000  013506'         AOS     LITCNT          ;INCREMENT NUMBER RESERVED\r
+       001353' 331000  013555'         SKIPL   STPX            ;ANY MORE CODE?\r
+       001354' 254000  001343'         JRST    STOL23          ;YES\r
+       001355' 321640  000455' STOL26: JUMP1   POPOUT          ;EXIT IF PASS ONE\r
+       001356' 200200  013505'         MOVE    SX,LITHDX       ;GET HEADER BLOCK\r
+       001357' 554444  777777          HLRZ    RC,-1(SX)       ;GET BLOCK RELOCATION\r
+       001360' 550004  777777          HRRZ    AC0,-1(SX)\r
+       001361' 271003  000000          ADDI    AC0,0(SDEL)     ;COMPUTE ACTUAL LOCATION\r
+       001362' 263740  000000          POPJ    PP,             ;EXIT\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 31\r
+MACRO  10      24-APR-78 02:11         INPUT ROUTINES\r
+\r
+                               SUBTTL  INPUT ROUTINES\r
+       001363' 260740  001415' GETCHR: PUSHJ   PP,CHARAC       ;GET ASCII CHARACTER\r
+       001364' 301340  000141          CAIL    C,"A"+40        ;CHECK FOR LOWER CASE\r
+       001365' 303340  000172          CAILE   C,"Z"+40\r
+       001366' 254000  001370'         JRST    .+2             ;NOT LOWER CASE\r
+       001367' 624340  000100          TRZA    C,100           ;CONVERT LOWER CASE TO SIXBIT\r
+       001370' 275340  000040          SUBI    C,40            ;CONVERT TO SIXBIT\r
+       001371' 307340  000077          CAIG    C,77            ;CHAR GREATER THAN SIXBIT?\r
+       001372' 325340  001404'         JUMPGE  C,GETCS         ;TEST FOR VALID SIXBIT\r
+       001373' 271340  000040          ADDI    C,40            ;BACK TO ASCII\r
+       001374' 306340  000011          CAIN    C,HT            ;CHECK FOR TAB\r
+       001375' 254000  001403'         JRST    GETCS2          ;MAKE IT LOOK LIKE SPACE\r
+       001376' 307340  000015          CAIG    C,CR            ;GREATER THAN CR\r
+       001377' 307340  000011          CAIG    C,HT            ;GREATER THAN TAB\r
+       001400' 254000  001406'         JRST    GETCS1          ;IS NOT FF,VT,LF OR CR\r
+       001401' 201340  000033          MOVEI   C,EOL           ;LINE OR FORM FEED OR V TAB\r
+       001402' 665600  000004          TLOA    IO,IORPTC       ;REPEAT CHARACTER\r
+       001403' 201340  000000  GETCS2: MOVEI   C,0             ;BUT TREAT AS BLANK\r
+       001404' 200407  001456' GETCS:  MOVE    CS,CSTAT(C)     ;GET STATUS BITS\r
+       001405' 263740  000000          POPJ    PP,             ;EXIT\r
+\r
+       001406' 322340  001404' GETCS1: JUMPE   C,GETCS         ;IGNORE NULS\r
+       001407' 640340  000100          TRC     C,100           ;MAKE CHAR. VISIBLE\r
+       001410' 201400  000136          MOVEI   CS,"^"\r
+       001411' 137400  013453'         DPB     CS,LBUFP        ;PUT ^ IN OUTPUT\r
+       001412' 260740  001423'         PUSHJ   PP,RSW2         ;ALSO MODIFIED CHAR.\r
+       001413' 660600  200000          TRO     ER,ERRQ         ;FLAG Q ERROR\r
+       001414' 254000  001363'         JRST    GETCHR          ;BUT IGNORE CHAR.\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 32\r
+MACRO  10      24-APR-78 02:11         INPUT ROUTINES\r
+\r
+\r
+       001415' 623600  000004  CHARAC: TLZE    IO,IORPTC       ;REPEAT REQUESTED?\r
+       001416' 254000  001443'         JRST    CHARAX          ;YES\r
+       001417' 326540  006474' RSW0:   JUMPN   MRP,MREAD       ;BRANCH IF TREE POINTER SET\r
+       001420' 260740  010503'         PUSHJ   PP,READ\r
+       001421' 332000  014022' RSW1:   SKIPE   RPOLVL          ;ARE WE IN "REPEAT ONCE"?\r
+       001422' 254000  005375'         JRST    REPO1           ;YES\r
+       001423' 200400  013452' RSW2:   MOVE    CS,LIMBO        ;GET LAST CHAR.\r
+       001424' 202340  013452'         MOVEM   C,LIMBO ;STORE THIS CHAR. FOR RPTC\r
+       001425' 306340  000012          CAIN    C,LF            ;LF?\r
+       001426' 302400  000015          CAIE    CS,CR           ;YES,LAST CHAR. A CR?\r
+       001427' 254000  001432'         JRST    RSW3            ;NO\r
+       001430' 563000  013452'         HRROS   LIMBO           ;YES,FLAG\r
+       001431' 263740  000000          POPJ    PP,             ;AND EXIT\r
+\r
+       001432' 603600  000001  RSW3:   TLNE    IO,IOSALL       ;MACRO SUPPRESS ALL?\r
+       001433' 326540  003447'         JUMPN   MRP,CPOPJ       ;YES,DON'T LIST IN MACRO\r
+       001434' 377000  013737'         SOSG    CPL             ;ANY ROOM IN THE IMAGE BUFFER?\r
+       001435' 260740  001657'         PUSHJ   PP,OUTPL        ;NO, OUTPUT THE PARTIAL LINE\r
+       001436' 136340  013453'         IDPB    C,LBUFP         ;YES, STORE IN PRINT AREA\r
+       001437' 302340  000011          CAIE    C,HT            ;TAB?\r
+       001440' 263740  000000          POPJ    PP,             ;NO, EXIT\r
+       001441' 201340  000007          MOVEI   C,7\r
+       001442' 412340  013737'         ANDCAM  C,CPL           ;MASK\r
+       001443' 550340  013452' CHARAX: HRRZ    C,LIMBO         ;GET LAST CHARACTER\r
+       001444' 263740  000000          POPJ    PP,             ;EXIT\r
+\r
+       001445' 260740  001415' CHARL:  PUSHJ   PP,CHARAC       ;GET AND TEST 7-BIT ASCII\r
+       001446' 307340  000014          CAIG    C,FF            ;LINE OR FORM FEED OR VT?\r
+       001447' 305340  000012          CAIGE   C,LF\r
+       001450' 263740  000000          POPJ    PP,             ;NO,EXIT\r
+       001451' 332000  013773'         SKIPE   LITLVL          ;IN LITERAL?\r
+       001452' 254000  002020'         JRST    OUTIML          ;YES\r
+       001453' 260740  007473' CHARL1: PUSHJ   PP,SAVEXS       ;SAVE REGISTERS\r
+       001454' 260740  001556'         PUSHJ   PP,OUTLIN       ;DUMP THE LINE\r
+       001455' 254000  007467'         JRST    RSTRXS          ;RESTORE REGISTERS AND EXIT\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 33\r
+MACRO  10      24-APR-78 02:11         CHARACTER STATUS TABLE\r
+\r
+                               SUBTTL  CHARACTER STATUS TABLE\r
+\r
+                                       DEFINE  GENCS   (OPLVL,ATOM,AN,SQUOZ,OPTYPE,SEQNO)\r
+                               <BYTE (6)OPLVL (9)ATOM (3)AN (6)SQUOZ,OPTYPE,SEQNO>\r
+\r
+                                       ;OPLVL  PRIORITY OF BINARY OPERATORS\r
+                                       ;ATOM   INDEX TO JUMP TABLE AT CELL1\r
+                                       ;AN     TYPE OF CHARACTER\r
+                                       ;       1=OTHER, 2=ALPHA, 4=NUMERIC\r
+                                       ;SQUOZ  VALUE IN RADIX 50\r
+                                       ;OPTYPE INDEX TO JUMP TABLE AT EVXCT\r
+                                       ;SEQNO  VALUE IN SIXBIT\r
+       001456'                 CSTAT:\r
+       001456' 000001  000000          GENCS   00,00,1,00,00,00        ; ' '\r
+       001457' 040121  000601          GENCS   04,12,1,00,06,01        ; '!'\r
+       001460' 000071  000002          GENCS   00,07,1,00,00,02        ; '"'\r
+       001461' 000121  000003          GENCS   00,12,1,00,00,03        ; '#'\r
+       001462' 000012  460004          GENCS   00,01,2,46,00,04        ; '$'\r
+       001463' 000012  470005          GENCS   00,01,2,47,00,05        ; '%'\r
+       001464' 040121  000706          GENCS   04,12,1,00,07,06        ; '&'\r
+       001465' 000071  000007          GENCS   00,07,1,00,00,07        ; '''\r
+\r
+       001466' 000011  000010          GENCS   00,01,1,00,00,10        ; '('\r
+       001467' 000011  000011          GENCS   00,01,1,00,00,11        ; ')'\r
+       001470' 020121  000112          GENCS   02,12,1,00,01,12        ; '*'\r
+       001471' 010001  000313          GENCS   01,00,1,00,03,13        ; '+'\r
+       001472' 400011  000014          GENCS   40,01,1,00,00,14        ; ','\r
+       001473' 010021  000415          GENCS   01,02,1,00,04,15        ; '-'\r
+       001474' 000112  450016          GENCS   00,11,2,45,00,16        ; '.'\r
+       001475' 020121  000217          GENCS   02,12,1,00,02,17        ; '/'\r
+\r
+       001476' 000044  010020          GENCS   00,04,4,01,00,20        ; '0'\r
+       001477' 000044  020021          GENCS   00,04,4,02,00,21        ; '1'\r
+       001500' 000044  030022          GENCS   00,04,4,03,00,22        ; '2'\r
+       001501' 000044  040023          GENCS   00,04,4,04,00,23        ; '3'\r
+       001502' 000044  050024          GENCS   00,04,4,05,00,24        ; '4'\r
+       001503' 000044  060025          GENCS   00,04,4,06,00,25        ; '5'\r
+       001504' 000044  070026          GENCS   00,04,4,07,00,26        ; '6'\r
+       001505' 000044  100027          GENCS   00,04,4,10,00,27        ; '7'\r
+\r
+       001506' 000044  110030          GENCS   00,04,4,11,00,30        ; '8'\r
+       001507' 000044  120031          GENCS   00,04,4,12,00,31        ; '9'\r
+       001510' 000121  000032          GENCS   00,12,1,00,00,32        ; ':'\r
+       001511' 000011  000033          GENCS   00,01,1,00,00,33        ; ';'\r
+       001512' 000051  000034          GENCS   00,05,1,00,00,34        ; '<'\r
+       001513' 000121  000035          GENCS   00,12,1,00,00,35        ; '='\r
+       001514' 000011  000036          GENCS   00,01,1,00,00,36        ; '>'\r
+       001515' 000121  000037          GENCS   00,12,1,00,00,37        ; '?'\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 34\r
+MACRO  10      24-APR-78 02:11         CHARACTER STATUS TABLE\r
+\r
+       001516' 000031  000040          GENCS   00,03,1,00,00,40        ; '@'\r
+       001517' 000012  130041          GENCS   00,01,2,13,00,41        ; 'A'\r
+       001520' 000012  140042          GENCS   00,01,2,14,00,42        ; 'B'\r
+       001521' 000012  150043          GENCS   00,01,2,15,00,43        ; 'C'\r
+       001522' 000012  160044          GENCS   00,01,2,16,00,44        ; 'D'\r
+       001523' 000012  170045          GENCS   00,01,2,17,00,45        ; 'E'\r
+       001524' 000012  200046          GENCS   00,01,2,20,00,46        ; 'F'\r
+       001525' 000012  210047          GENCS   00,01,2,21,00,47        ; 'G'\r
+\r
+       001526' 000012  220050          GENCS   00,01,2,22,00,50        ; 'H'\r
+       001527' 000012  230051          GENCS   00,01,2,23,00,51        ; 'I'\r
+       001530' 000012  240052          GENCS   00,01,2,24,00,52        ; 'J'\r
+       001531' 000012  250053          GENCS   00,01,2,25,00,53        ; 'K'\r
+       001532' 000012  260054          GENCS   00,01,2,26,00,54        ; 'L'\r
+       001533' 000012  270055          GENCS   00,01,2,27,00,55        ; 'M'\r
+       001534' 000012  300056          GENCS   00,01,2,30,00,56        ; 'N'\r
+       001535' 000012  310057          GENCS   00,01,2,31,00,57        ; 'O'\r
+\r
+       001536' 000012  320060          GENCS   00,01,2,32,00,60        ; 'P'\r
+       001537' 000012  330061          GENCS   00,01,2,33,00,61        ; 'Q'\r
+       001540' 000012  340062          GENCS   00,01,2,34,00,62        ; 'R'\r
+       001541' 000012  350063          GENCS   00,01,2,35,00,63        ; 'S'\r
+       001542' 000012  360064          GENCS   00,01,2,36,00,64        ; 'T'\r
+       001543' 000012  370065          GENCS   00,01,2,37,00,65        ; 'U'\r
+       001544' 000012  400066          GENCS   00,01,2,40,00,66        ; 'V'\r
+       001545' 000012  410067          GENCS   00,01,2,41,00,67        ; 'W'\r
+\r
+       001546' 000012  420070          GENCS   00,01,2,42,00,70        ; 'X'\r
+       001547' 000012  430071          GENCS   00,01,2,43,00,71        ; 'Y'\r
+       001550' 000012  440072          GENCS   00,01,2,44,00,72        ; 'Z'\r
+       001551' 000061  000073          GENCS   00,06,1,00,00,73        ; '['\r
+       001552' 000121  000074          GENCS   00,12,1,00,00,74        ; '\'\r
+       001553' 000011  000075          GENCS   00,01,1,00,00,75        ; ']'\r
+       001554' 000101  000076          GENCS   00,10,1,00,00,76        ; '^'\r
+       001555' 100121  000577          GENCS   10,12,1,00,05,77        ; '_'\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 35\r
+MACRO  10      24-APR-78 02:11         LISTING ROUTINES\r
+\r
+                               SUBTTL  LISTING ROUTINES\r
+\r
+       001556' 606600  577760  OUTLIN: TRNN    ER,ERRORS-ERRQ  ;ANY ERRORS?\r
+       001557' 603640  000010          TLNE    FR,ERRQSW       ;NO, IGNORE Q ERRORS?\r
+       001560' 620600  200000          TRZ     ER,ERRQ         ;YES, YES, ZERO THE Q ERROR\r
+       001561' 514000  000014          HRLZ    AC0,ER          ;PUT ERROR FLAGS IN AC0 LEFT\r
+       001562' 630600  013727'         TDZ     ER,TYPERR\r
+       001563' 321640  001674'         JUMP1   OUTL30          ;BRANCH IF PASS ONE\r
+       001564' 326000  001576'         JUMPN   AC0,OUTL02      ;JUMP IF ANY ERRORS TO FORCE PRINTING\r
+       001565' 331000  013555'         SKIPL   STPX            ;SKIP IF NO CODE, OTHERWISE\r
+       001566' 254000  001574'         JRST    OUTL01          ;NO\r
+       001567' 607600  000001          TLNN    IO,IOSALL       ;YES,SUPPRESS ALL?\r
+       001570' 254000  001575'         JRST    OUTL03          ;NO\r
+       001571' 326540  003447'         JUMPN   MRP,CPOPJ       ;YES,EXIT IF IN MACRO\r
+       001572' 135340  014633'         LDB     C,[XWD 350700,LBUF]\r
+       001573' 302340  000015          CAIE    C,15            ;FIRST CHAR CR?\r
+       001574' 621600  010000  OUTL01: TLZ     IO,IOMAC        ;FORCE MACRO PRINTING\r
+       001575' 607600  250000  OUTL03: TLNN    IO,IOMSTR!IOPROG!IOMAC\r
+       001576' 434600  013512' OUTL02: IOR     ER,OUTSW        ;FORCE IT.\r
+       001577' 136000  013453'         IDPB    AC0,LBUFP       ;STORE ZERO TERMINATOR AFTER ASCII SRC LINE\r
+       001600' 607640  002000          TLNN    FR,CREFSW       ;CREF?\r
+       001601' 260740  012674'         PUSHJ   PP,CLSCRF       ;YES, WRITE END OF CREF DATA (177,003)\r
+       001602' 322000  001606'         JUMPE   AC0,OUTL20      ;BRANCH IF NO ERRORS\r
+       001603' 623000  000020          TLZE    AC0,ERRM        ;M ERROR?\r
+       001604' 661000  000100          TLO     AC0,ERRP        ;M ERROR SET - SET P ERROR.\r
+       001605' 260740  001721'         PUSHJ   PP,OUTLER       ;PROCESS ERRORS\r
+\r
+       001606' 336440  013775' OUTL20: SKIPN   RC,ASGBLK\r
+       001607' 332400  013776'         SKIPE   CS,LOCBLK       ;\r
+       001610' 331000  013555'         SKIPL   STPX            ;ANY BINARY?\r
+       001611' 254000  001634'         JRST    OUTL23          ;YES, JUMP\r
+       001612' 322440  001630'         JUMPE   RC,OUTL22       ;SEQUENCE BREAK AND NO BINARY JUMPS\r
+       001613' 134340  013677'         ILDB    C,TABP          ;ASSIGNMENT FALLS THROUGH\r
+       001614' 260740  010607'         PUSHJ   PP,OUTL         ;OUTPUT A TAB.\r
+       001615' 134340  013677'         ILDB    C,TABP          ;OUTPUT 2ND TAB, LOCATION FIELD\r
+       001616' 260740  010663'         PUSHJ   PP,OUTC         ;NEXT IS BINARY LISTING FIELD\r
+       001617' 520400  013776'         HLLO    CS,LOCBLK       ;LEFT HALF OF A 36BIT VALUE\r
+       001620' 321440  001622'         JUMPL   RC,.+2          ;SKIP IF LEFT HALF IS NOT RELOC\r
+       001621' 624400  000001          TRZA    CS,1            ;IT IS, SET THE FLAG\r
+       001622' 603400  777777          TLNE    CS,-1           ;SKIP IF ITS A 18BIT VALUE, OTHERWISE\r
+       001623' 260740  003035'         PUSHJ PP,ONC1           ;PRINT LH OF A 36 BIT VALUE IN CS\r
+       001624' 524400  013776'         HRLO    CS,LOCBLK       ;PICK UP THE RIGHT HALF (18BIT VALUE)\r
+       001625' 620411  000000          TRZ     CS,0(RC)        ;\r
+       001626' 260740  003033'         PUSHJ   PP,ONC          ;PRINT IT\r
+       001627' 254000  001634'         JRST    OUTL23          ;SKIP SINGLE QUOTE TEST\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 36\r
+MACRO  10      24-APR-78 02:11         LISTING ROUTINES\r
+\r
+       001630' 260740  003033' OUTL22: PUSHJ   PP,ONC          ;TAB TO RH AND PRINT IT\r
+       001631' 201340  000047          MOVEI   C,"'"\r
+       001632' 332000  014004'         SKIPE   MODA\r
+       001633' 260740  010663'         PUSHJ   PP,OUTC\r
+       001634' 331000  013555' OUTL23: SKIPL   STPX            ;ANY BINARY?\r
+       001635' 260740  002517'         PUSHJ   PP,BOUT         ;YES, DUMP IT\r
+       001636' 200420  002003'         MOVE    CS,@OUTLI2      ;[POINT 7,LBUF]\r
+       001637' 134340  000010  OUTL24: ILDB    C,CS\r
+       001640' 322340  001645'         JUMPE   C,OUTL25\r
+       001641' 307340  000040          CAIG    C," "\r
+       001642' 254000  001637'         JRST    OUTL24\r
+       001643' 200400  013677'         MOVE    CS,TABP\r
+       001644' 260740  003061'         PUSHJ   PP,OUTASC       ;OUTPUT TABS\r
+       001645' 201400  013454' OUTL25: MOVEI   CS,LBUF\r
+       001646' 260740  003060'         PUSHJ   PP,OUTAS0       ;DUMP THE LINE\r
+       001647' 603600  000001          TLNE    IO,IOSALL       ;SUPPRESSING ALL\r
+       001650' 326540  001655'         JUMPN   MRP,OUTL27      ;YES,EXTRA CR IF IN MACRO\r
+       001651' 335000  013555' OUTL26: SKIPGE  STPX            ;ANY BINARY?\r
+       001652' 254000  001774'         JRST    OUTLI           ;NO, CLEAN UP AND EXIT\r
+       001653' 260740  002003'         PUSHJ   PP,OUTLI2       ;YES, INITIALIZE FOR NEXT LINE\r
+       001654' 260740  002517'         PUSHJ   PP,BOUT         ;YES, DUMP IT\r
+       001655' 260740  010600' OUTL27: PUSHJ   PP,OUTCR        ;OUTPUT CARRIAGE RETURN\r
+       001656' 254000  001651'         JRST    OUTL26          ;TEST FOR MORE BINARY\r
+\r
+       001657' 336000  013773' OUTPL:  SKIPN   LITLVL          ;IF IN LITERAL\r
+       001660' 331000  013555'         SKIPL   STPX            ;OR CODE GENERATED\r
+       001661' 254000  001746'         JRST    OUTIM           ;JUST OUTPUT THE IMAGE\r
+       001662' 336000  013775'         SKIPN   ASGBLK          ;SKIP IF AN ASSIGNMENT\r
+       001663' 254000  001746'         JRST    OUTIM           ;OTHERWISE OUTPUT IMAGE\r
+       001664' 261740  000007          PUSH    PP,C            ;SAVE CHAR.\r
+       001665' 201340  000015          MOVEI   C,CR\r
+       001666' 136340  013453'         IDPB    C,LBUFP\r
+       001667' 201340  000012          MOVEI   C,LF\r
+       001670' 136340  013453'         IDPB    C,LBUFP         ;FINISH WITH CRLF\r
+       001671' 260740  001556'         PUSHJ   PP,OUTLIN       ;OUTPUT PARTIAL LINE\r
+       001672' 262740  000007          POP     PP,C            ;RESTORE CHAR.\r
+       001673' 254000  002003'         JRST    OUTLI2          ;INITIALISE REST OF LINE\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 37\r
+MACRO  10      24-APR-78 02:11         LISTING ROUTINES\r
+\r
+       001674' 350400  013555' OUTL30: AOS     CS,STPX         ;PASS ONE\r
+       001675' 272400  014000'         ADDM    CS,LOCO         ;INCREMENT OUTPUT LOCATION\r
+       001676' 260740  003003'         PUSHJ   PP,STOWI        ;INITIALIZE STOW\r
+       001677' 621000  776640          TLZ     AC0,ERRORS-ERRM-ERRP-ERRV\r
+       001700' 326000  001704'         JUMPN   AC0,OUTL32      ;JUMP IF ERRORS\r
+       001701' 603600  000001          TLNE    IO,IOSALL       ;SUPPRESSING ALL/\r
+       001702' 326540  003447'         JUMPN   MRP,CPOPJ       ;YES,EXIT\r
+       001703' 254000  002002'         JRST    OUTLI1          ;NO,INIT LINE\r
+\r
+       001704' 136000  013453' OUTL32: IDPB    AC0,LBUFP       ;ZERO TERNIMATOR\r
+       001705' 434600  013512'         IOR     ER,OUTSW        ;LIST ERRORS\r
+       001706' 201400  013211'         MOVEI   CS,TAG\r
+       001707' 260740  003065'         PUSHJ   PP,OUTSIX       ;OUTPUT TAG\r
+       001710' 550340  014051'         HRRZ    C,TAGINC\r
+       001711' 260740  003051'         PUSHJ   PP,DNC          ;CONVERT INCREMENT TO DECIMAL\r
+       001712' 260740  010571'         PUSHJ   PP,OUTTAB       ;OUTPUT TAB\r
+       001713' 260740  001721'         PUSHJ   PP,OUTLER       ;OUTPUT ERROR FLAGS\r
+       001714' 260740  010571'         PUSHJ   PP,OUTTAB\r
+       001715' 201400  013214'         MOVEI   CS,SEQNO        ;ADDRESS OF SEQUENCE NO.\r
+       001716' 332000  013214'         SKIPE   SEQNO           ;FILE NOT SEQUENCED\r
+       001717' 260740  003060'         PUSHJ   PP,OUTAS0       ;OUTPUT IT\r
+       001720' 254000  001645'         JRST    OUTL25          ;OUTPUT BASIC LINE\r
+\r
+       001721' 261740  000014  OUTLER: PUSH PP,ER      ;SAVE LISTING SWITCHES FOR LATER\r
+       001722' 602600  000001          TRNE ER,TTYSW   ;IF THIS IS ON, LISTING IS ON TTY\r
+       001723' 620600  777760          TRZ ER,ERRORS   ;SO SUPPRESS ON TTY\r
+       001724' 630600  013512'         TDZ ER,OUTSW    ;BUT THIS SHOULD ONLY GO TO THE TTY\r
+       001725' 200400  013343'         MOVE CS,INDIR   ;GET FILE NAME\r
+       001726' 312400  013207'         CAME CS,LSTFIL  ;AND SEE IF SAME\r
+                                       JRST    [MOVEM CS,LSTFIL        ;SAVE AS LAST ONE\r
+                                               MOVEI CS,LSTFIL\r
+                                               PUSHJ PP,OUTSIX ;LIST NAME\r
+                                               MOVEI C," "\r
+                                               PUSHJ PP,OUTL\r
+                                               MOVE CS,PAGENO  ;PRINT PAGE NUMBER TOO\r
+       001727' 254000  014634'                 JRST OUTLE8]\r
+       001730' 200400  014100'         MOVE CS,PAGENO  ;NOW CHECK PAGE NUMBER\r
+       001731' 312400  014102'         CAME CS,LSTPGN\r
+                               OUTLE8: JRST    [MOVEM CS,LSTPGN\r
+                                               MOVEI CS,[ASCIZ /PAGE /]\r
+                                               PUSHJ PP,OUTAS0\r
+                                               MOVE C,PAGENO\r
+                                               PUSHJ PP,DNC\r
+                                               PUSHJ PP,OUTCR  ;AND NOW FOR THE ERROR LINE\r
+       001732' 254000  014645'                 JRST .+1]\r
+       001733' 502617  000000          HLLM ER,(PP)    ;RESTORE ER BUT NOT IO (LEFT HALF OF AC)\r
+       001734' 262740  000014          POP PP,ER\r
+       001735' 200400  014657'         MOVE    CS,[POINT 7,[ASCII / QXADLRUVNOPEM/]]\r
+       001736' 134340  000010  OUTLE2: ILDB    C,CS            ;GET ERROR MNEMONIC\r
+       001737' 325000  001742'         JUMPGE  AC0,OUTLE4      ;BRANCH IF NOT FLAGGED\r
+       001740' 260740  010607'         PUSHJ   PP,OUTL         ;OUTPUT THE CHARACTER\r
+       001741' 350000  013376'         AOS     ERRCNT          ;INCREMENT ERROR COUNT\r
+       001742' 242000  000001  OUTLE4: LSH     AC0,1           ;SHIFT NEXT FLAG INTO SIGN BIT\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 38\r
+MACRO  10      24-APR-78 02:11         LISTING ROUTINES\r
+\r
+       001743' 326000  001736'         JUMPN   AC0,OUTLE2      ;TEST FOR END\r
+       001744' 263740  000000          POPJ    PP,             ;EXIT\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 39\r
+MACRO  10      24-APR-78 02:11         LISTING ROUTINES\r
+\r
+       001745' 665640  000001  OUTIM1: TLOA    FR,IOSCR        ;SUPPRESS CRLF AFTER LINE\r
+       001746' 621640  000001  OUTIM:  TLZ     FR,IOSCR        ;DON'T FOR PARTIAL LINE\r
+       001747' 603600  000001          TLNE    IO,IOSALL       ;SUPPRESSING ALL?\r
+       001750' 326540  003447'         JUMPN   MRP,CPOPJ       ;YES ,EXIT IF IN MACRO\r
+       001751' 321640  002002'         JUMP1   OUTLI1          ;BYPASS IF PASS ONE\r
+       001752' 261740  000014          PUSH    PP,ER\r
+       001753' 630600  013727'         TDZ     ER,TYPERR\r
+       001754' 607600  250000          TLNN    IO,IOMSTR!IOPROG!IOMAC\r
+       001755' 434600  013512'         IOR     ER,OUTSW\r
+       001756' 261740  000007          PUSH    PP,C            ;OUTPUT IMAGE\r
+       001757' 607640  002000          TLNN    FR,CREFSW\r
+       001760' 260740  012674'         PUSHJ   PP,CLSCRF\r
+       001761' 200400  013677' OUTIM2: MOVE    CS,TABP\r
+       001762' 260740  003061'         PUSHJ   PP,OUTASC       ;OUTPUT TABS\r
+       001763' 136340  013453'         IDPB    C,LBUFP         ;STORE ZERO TERMINATOR\r
+       001764' 201400  013454'         MOVEI   CS,LBUF\r
+       001765' 260740  003060'         PUSHJ   PP,OUTAS0       ;OUTPUT THE IMAGE\r
+       001766' 627640  000001          TLZN    FR,IOSCR        ;CRLF SUPPRESS?\r
+       001767' 260740  010600'         PUSHJ   PP,OUTCR        ;NO,OUTPUT\r
+       001770' 262740  000007          POP     PP,C\r
+       001771' 502617  000000          HLLM    ER,0(PP)\r
+       001772' 262740  000014          POP     PP,ER\r
+       001773' 254000  002003'         JRST    OUTLI2\r
+\r
+       001774' 603600  000001  OUTLI:  TLNE    IO,IOSALL       ;SUPPRESSING ALL\r
+       001775' 326540  002001'         JUMPN   MRP,OUTLI3      ;YES,SET FLAG IN REPEATS ALSO\r
+       001776' 603600  004000          TLNE    IO,IOPALL       ;MACRO EXPANSION SUPRESS REQUESTED?\r
+       001777' 336000  014072'         SKIPN   MACLVL          ;YES, ARE WE IN MACRO?\r
+       002000' 625600  010000          TLZA    IO,IOMAC        ;NO, CLEAR MAC FLAG\r
+       002001' 661600  010000  OUTLI3: TLO     IO,IOMAC        ;YES, SET FLAG\r
+\r
+       002002' 620600  777763  OUTLI1: TRZ     ER,ERRORS!LPTSW!TTYSW\r
+       002003' 200400  014660' OUTLI2: MOVE    CS,[POINT 7,LBUF]       ;INITIALIZE BUFFERS\r
+       002004' 202400  013453'         MOVEM   CS,LBUFP\r
+       002005' 200400  014661'         MOVE    CS,[POINT 7,TABI,6]\r
+       002006' 202400  013677'         MOVEM   CS,TABP\r
+       002007' 201400  000130          MOVEI   CS,.CPL\r
+       002010' 202400  013737'         MOVEM   CS,CPL\r
+       002011' 205400  044000          MOVSI   CS,(ASCII /     /)\r
+       002012' 332000  013214'         SKIPE   SEQNO           ;HAVE WE SEQUENCE NUMBERS?\r
+       002013' 202400  013214'         MOVEM   CS,SEQNO        ;YES, STORE TAB IN CASE OF MACRO\r
+       002014' 202400  013215'         MOVEM   CS,SEQNO+1      ;STORE TAB AND TERMINATOR\r
+       002015' 402000  013775'         SETZM   ASGBLK\r
+       002016' 402000  013776'         SETZM   LOCBLK\r
+       002017' 263740  000000          POPJ    PP,\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 40\r
+MACRO  10      24-APR-78 02:11         LISTING ROUTINES\r
+\r
+       002020' 603600  000001  OUTIML: TLNE    IO,IOSALL       ;SUPPRESSING ALL?\r
+       002021' 326540  003447'         JUMPN   MRP,CPOPJ       ;YES,EXIT IF IN MACRO\r
+       002022' 606600  577760          TRNN ER,ERRORS-ERRQ     ;FOR LITERALS (MULIT-LINE) OUTPUT ERRORS\r
+       002023' 603640  000010          TLNE FR,ERRQSW\r
+       002024' 620600  200000          TRZ ER,ERRQ\r
+       002025' 514400  000014          HRLZ CS,ER\r
+       002026' 321640  002045'         JUMP1 OUTML1    ;CHECK PASS1 ERRORS\r
+       002027' 630600  013727'         TDZ ER,TYPERR\r
+       002030' 322400  001745'         JUMPE CS,OUTIM1\r
+       002031' 261740  014625'         PUSH PP,[0]     ;ERRORS SHOULD BE ZEROED\r
+       002032' 261740  000007          PUSH PP,C\r
+       002033' 261740  000000          PUSH    PP,AC0  ;SAVE AC0 IN CASE CALLED FROM ASCII\r
+       002034' 200000  000010          MOVE    AC0,CS  ;ERROR ROUTINE WANTS FLAGS IN AC0\r
+       002035' 434600  013512'         IOR ER,OUTSW\r
+       002036' 607640  002000          TLNN FR,CREFSW\r
+       002037' 260740  012674'         PUSHJ PP,CLSCRF ;FIX CREF\r
+       002040' 623000  000020          TLZE AC0,ERRM\r
+       002041' 661000  000100          TLO AC0,ERRP\r
+       002042' 260740  001721'         PUSHJ PP,OUTLER ;OUTPUT THEM\r
+       002043' 262740  000000          POP     PP,AC0\r
+       002044' 254000  001761'         JRST OUTIM2     ;AND LINE\r
+       \r
+       002045' 621400  776640  OUTML1: TLZ CS,ERRORS-ERRM-ERRP-ERRV\r
+       002046' 322400  002003'         JUMPE CS,OUTLI2 ;NONE\r
+       002047' 620600  001120          TRZ ER,ERRM!ERRP!ERRV\r
+       002050' 660600  010000          TRO ER,ERRL\r
+       002051' 261740  000014          PUSH PP,ER      ;SAVE\r
+       002052' 261740  000007          PUSH PP,C       ;SAVE THIS\r
+       002053' 261740  000000          PUSH    PP,AC0  ;AS ABOVE\r
+       002054' 200000  000010          MOVE    AC0,CS          ;...\r
+       002055' 630600  013727'         TDZ ER,TYPERR\r
+       002056' 434600  013512'         IOR ER,OUTSW\r
+       002057' 201400  013211'         MOVEI CS,TAG\r
+       002060' 260740  003065'         PUSHJ PP,OUTSIX\r
+       002061' 550340  014051'         HRRZ C,TAGINC\r
+       002062' 260740  003051'         PUSHJ PP,DNC\r
+       002063' 260740  010571'         PUSHJ PP,OUTTAB\r
+       002064' 260740  001721'         PUSHJ PP,OUTLER ;DO NOT FORGET ERRORS\r
+       002065' 260740  010571'         PUSHJ PP,OUTTAB\r
+       002066' 201400  013454'         MOVEI CS,LBUF   ;PRINT REST OF LINE\r
+       002067' 260740  002503'         PUSHJ PP,SOUT20\r
+       002070' 262740  000000          POP     PP,AC0\r
+       002071' 262740  000007          POP PP,C\r
+       002072' 262740  000014          POP PP,ER\r
+       002073' 254000  002003'         JRST OUTLI2\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 41\r
+MACRO  10      24-APR-78 02:11         OUTPUT ROUTINES\r
+\r
+                               SUBTTL  OUTPUT ROUTINES\r
+       002074' 260740  003111' UOUT:   PUSHJ   PP,LOOKUP       ;SET FOR TABLE SCAN\r
+       002075' 606240  004000          TRNN ARG,PNTF   ;WFW\r
+       002076' 606240  002000          TRNN    ARG,UNDF\r
+       002077' 254000  002116'         JRST    UOUT13          ;TEST FOR UNDF!EXTF!PNTF ON PASS2\r
+       002100' 325640  002122'         JUMP2   UOUT10\r
+       002101' 607600  000020          TLNN    IO,IOIOPF       ;ANY IOP'S SEEN\r
+       002102' 254000  002112'         JRST    UOUT12          ;NO,MAKE EXTERNAL\r
+       002103' 205400  777700          MOVSI   CS,PRMTBL-PRMEND;YES LOOKUP IN TABLE\r
+       002104' 312010  012206' UOUT1:  CAME    AC0,PRMTBL(CS)  ;HAVE WE A MATCH?\r
+       002105' 253400  002111'         AOBJN   CS,UOUT2        ;NO,INCREMENT AND JUMP\r
+       002106' 200250  012207'         MOVE    ARG,PRMTBL+1(CS);YES,GET VALUE\r
+       002107' 202244  000000          MOVEM   ARG,(SX)        ;UPDATE SYMBOL TABLE\r
+       002110' 263740  000000          POPJ    PP,             ;EXIT\r
+       002111' 253400  002104' UOUT2:  AOBJN   CS,UOUT1        ;TEST FOR END\r
+\r
+       002112' 260740  004015' UOUT12: PUSHJ   PP,EXTER2       ;MAKE IT EXTERNAL\r
+       002113' 205240  002000          MOVSI   ARG,UNDF        ;BUT PUT UNDF BACK ON\r
+       002114' 436244  000000          IORM    ARG,(SX)        ;SO MESSAGE WILL COME OUT\r
+       002115' 263740  000000          POPJ    PP,             ;GET NEXT SYMBOL\r
+\r
+       002116' 321640  003447' UOUT13: JUMP1   CPOPJ   ;RECYCLE ON PASS1\r
+       002117' 640240  007000          TRC ARG,UNDF!EXTF!PNTF  ;CHECK FOR ALL THREE ON\r
+       002120' 642240  007000          TRCE ARG,UNDF!EXTF!PNTF ;ARE THEY?\r
+       002121' 263740  000000          POPJ    PP,             ;NO, RECYCLE\r
+       002122' 260740  010600' UOUT10: PUSHJ PP,OUTCR\r
+       002123' 260740  003074'         PUSHJ   PP,OUTSYM       ;OUTPUT THE SYMBOL\r
+       002124' 201400  014662'         MOVEI   CS,[SIXBIT /UNASSIGNED, DEFINED AS IF EXTERNAL @/]\r
+       002125' 254000  003065'         JRST    OUTSIX          ;POPJ FOR NEXT SYMBOL\r
+\r
+       002126' 260740  003035' UOUT30: PUSHJ   PP,ONC1         ;OUTPUT THE LOCATION\r
+       002127' 254000  004235'         JRST    HIGHQ           ;EXIT THROUGH HIGHQ\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 42\r
+MACRO  10      24-APR-78 02:11         OUTPUT ROUTINES\r
+\r
+                                                               ;OUTPUT THE ENTRIES\r
+\r
+       002130' 201340  000000  EOUT:   MOVEI   C,0             ;INITIALIZE THE COUNT\r
+       002131' 200200  013552'         MOVE    SX,SYMBOL\r
+       002132' 200144  000000          MOVE    SDEL,0(SX)\r
+       002133' 361140  002141' EOUT1:  SOJL    SDEL,EOUT2      ;TEST FOR END\r
+       002134' 271200  000002          ADDI    SX,2\r
+       002135' 554244  000000          HLRZ    ARG,0(SX)\r
+       002136' 411240  400600          ANDCAI  ARG,SYMF!INTF!ENTF\r
+       002137' 326240  002133'         JUMPN   ARG,EOUT1       ;IF INVALID, DON'T COUNT\r
+       002140' 344340  002133'         AOJA    C,EOUT1         ;BUMP COUNT\r
+\r
+       002141' 505340  000004  EOUT2:  HRLI    C,4             ;BLOCK TYPE 4\r
+       002142' 260740  010404'         PUSHJ   PP,OUTBIN\r
+       002143' 403340  000005          SETZB   C,ARG\r
+       002144' 260740  010404'         PUSHJ   PP,OUTBIN\r
+       002145' 200200  013552'         MOVE    SX,SYMBOL\r
+       002146' 200144  000000          MOVE    SDEL,0(SX)\r
+       002147' 201300  000022          MOVEI   V,^D18\r
+\r
+       002150' 361140  000455' EOUT3:  SOJL    SDEL,POPOUT\r
+       002151' 271200  000002          ADDI    SX,2\r
+       002152' 554344  000000          HLRZ    C,0(SX)\r
+       002153' 411340  400600          ANDCAI  C,SYMF!INTF!ENTF\r
+       002154' 326340  002150'         JUMPN   C,EOUT3\r
+       002155' 365300  002160'         SOJGE   V,EOUT4         ;TEST END OF BLOCK\r
+       002156' 260740  010404'         PUSHJ   PP,OUTBIN\r
+       002157' 201300  000021          MOVEI   V,^D17  ;WFW\r
+       002160' 200004  777777  EOUT4:  MOVE    AC0,-1(SX)\r
+       002161' 260740  004770'         PUSHJ   PP,SQOZE\r
+       002162' 200340  000000          MOVE    C,AC0\r
+       002163' 260740  010404'         PUSHJ   PP,OUTBIN\r
+       002164' 254000  002150'         JRST    EOUT3\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 43\r
+MACRO  10      24-APR-78 02:11         OUTPUT ROUTINES\r
+\r
+                                                               ;OUTPUT THE SYMBOLS\r
+\r
+       002165' 336000  013730' SOUT:   SKIPN   IONSYM          ;SKIP IF NOSYM SEEN\r
+       002166' 606600  000003          TRNN    ER,LPTSW!TTYSW  ;A LISTING REQUIRED?\r
+       002167' 254000  002377'         JRST    SOUT1           ;NO\r
+       002170' 201000  014670'         MOVEI   [ASCIZ /SYMBOL TABLE/]\r
+       002171' 542000  013550'         HRRM    SUBTTX          ;SET NEW SUB-TITLE\r
+       002172' 260740  010703'         PUSHJ   PP,OUTFF        ;FORCE NEW PAGE\r
+       002173' 201240  000001          MOVEI   ARG,NCOLS       ;SET UP FOR NCOLS ACROSS SYMBOL TABLE\r
+       002174' 602600  000001          TRNE    ER,TTYSW        ;IS TTY LISTING DEVICE?\r
+       002175' 201240  000002          MOVEI   ARG,2           ;YES,ONLY 2 COLLUMNS\r
+       002176' 202240  013451'         MOVEM   ARG,NCOLLS      ;STORE ANSWER\r
+       002177' 202240  013554'         MOVEM ARG,SYMCNT\r
+       002200' 260740  002205'         PUSHJ PP,LOUT1          ;OUTPUT THEM\r
+       002201' 200240  013554'         MOVE ARG,SYMCNT         ;SEE IF WE ENDED EVEN\r
+       002202' 312240  013451'         CAME ARG,NCOLLS\r
+       002203' 260740  010600'         PUSHJ   PP,OUTCR        ;NO, NEED CR\r
+       002204' 254000  002377'         JRST    SOUT1           ;NOW FOR BLOCK TYPE 2\r
+\r
+       002205' 260740  002306' LOUT1:  PUSHJ   PP,LLUKUP       ;SET FOR TABLE SCAN\r
+       002206' 606240  400000          TRNN    ARG,SYMF\r
+       002207' 606240  060000          TRNN    ARG,MACF!SYNF\r
+       002210' 634540  000013          TDZA    MRP,MRP         ;SKIP AND CLEAR MRP\r
+       002211' 263740  000000          POPJ    PP,             ;NO, TRY AGAIN\r
+       002212' 602240  000400          TRNE    ARG,INTF\r
+       002213' 201540  000001          MOVEI   MRP,1\r
+       002214' 602240  001000          TRNE    ARG,EXTF\r
+       002215' 211540  000001          MOVNI   MRP,1           ;MRP=-1 FOR EXTERNAL\r
+       002216' 602240  040000          TRNE    ARG,SYNF        ;SYNONYM?\r
+       002217' 321540  000455'         JUMPL   MRP,POPOUT      ;YES, DON'T OUTPUT IF EXTERNAL\r
+       002220' 602240  000004          TRNE ARG,SUPRBT         ;IF SUPRESSED\r
+                               ;       JUMPGE MRP,POPOUT       ;DO NOT OUTPUT UNLESS EXTERNAL\r
+       002221' 263740  000000          POPJ    PP,             ;DO NOT OUTPUT\r
+       002222' 350017  000000          AOS     (PP)            ;SET FOR SKIP RETURN IF SYMBOL IS PRINTED\r
+       002223' 325540  002230'         JUMPGE  MRP,LOUT10      ;BRANCH IF NOT EXTERNAL\r
+       002224' 554440  000006          HLRZ    RC,V            ;PUT POINTER/FLAGS IN RC\r
+       002225' 602440  777776          TRNE    RC,-2           ;POINTER?\r
+       002226' 204451  000000          MOVS    RC,0(RC)        ;YES\r
+       002227' 500300  000011          HLL     V,RC            ;STORE LEFT VALUE\r
+\r
+       002230' 261740  000011  LOUT10: PUSH PP,RC      ;SAVE FOR LATER\r
+       002231' 260740  003074'         PUSHJ   PP,OUTSYM       ;OUTPUT THE NAME\r
+       002232' 200457  000000          MOVE RC,(PP)    ;GET COPY\r
+       002233' 201040  000000          MOVEI   AC1,0\r
+       002234' 323540  002241'         JUMPLE  MRP,LOUT15      ;SET DEFFERRED BITS IF EXTERNAL\r
+       002235' 603440  777776          TLNE    RC,-2           ;CHECK FOR LEFT FIXUP\r
+       002236' 435040  000040          IORI    AC1,40          ;AND SET BITS\r
+       002237' 602440  777776          TRNE    RC,-2           ;CHECK FOR RIGHT FIXUP\r
+       002240' 435040  000020          IORI    AC1,20          ;AND SET BITS\r
+       002241' 603440  777776  LOUT15: TLNE RC,-2      ;FIX RELOC AS 0 IF EXTERNAL\r
+       002242' 553000  000011          HRRZS RC\r
+       002243' 602440  777776          TRNE RC,-2\r
+       002244' 513000  000011          HLLZS RC\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 43-1\r
+MACRO  10      24-APR-78 02:11         OUTPUT ROUTINES\r
+\r
+       002245' 623440  777777          TLZE RC,-1\r
+       002246' 660440  000002          TRO RC,2\r
+       002247' 504540  000011          HRL MRP,RC\r
+       002250' 201440  000000          MOVEI RC,0\r
+       002251' 602240  000200          TRNE    ARG,ENTF        ;ENTRY DMN\r
+       002252' 541540  777773          HRRI    MRP,-5\r
+       002253' 602240  100000          TRNE ARG,NOOUTF         ;SUPRESS OUTPUT? WFW\r
+       002254' 271540  000003          ADDI MRP,3              ;YES WFW\r
+       002255' 602240  002000          TRNE    ARG,UNDF        ;UNDEFINED IS EXTERNAL\r
+       002256' 541540  000002          HRRI    MRP,2           ;SO FLAG AS UXT\r
+       002257' 434053  002512'         IOR     AC1,SOUTC(MRP)\r
+       002260' 200240  000001          MOVE ARG,AC1\r
+       002261' 202000  013551'         MOVEM AC0,SVSYM         ;SAVE IT\r
+       002262' 200000  000006          MOVE    AC0,V           ;GET THE VALUE\r
+       002263' 554440  000013          HLRZ    RC,MRP          ;AND THE RELOCATION\r
+       002264' 520400  000006          HLLO    CS,V\r
+       002265' 602440  000002          TRNE    RC,2            ;LEFT HALF RELOCATABLE?\r
+       002266' 624400  000001          TRZA    CS,1            ;NO, FLAG AND PRINT\r
+       002267' 603400  777777          TLNE    CS,-1           ;IS THE LEFT HALF ZERO?\r
+       002270' 260740  003035'         PUSHJ   PP,ONC1         ;NO, OUTPUT IT\r
+       002271' 260740  010571' LOUT11: PUSHJ   PP,OUTTAB\r
+       002272' 524400  000006  LOUT30: HRLO    CS,V\r
+       002273' 630400  000011          TDZ     CS,RC           ;SET RELOCATION\r
+       002274' 260740  003035'         PUSHJ   PP,ONC1\r
+       002275' 260740  010571'         PUSHJ   PP,OUTTAB\r
+       002276' 262740  000011          POP PP,RC               ;GET BACK RELOC AND CHECK EXTERNAL\r
+       002277' 201413  002512' LOUT60: MOVEI   CS,SOUTC(MRP)\r
+       002300' 260740  003060'         PUSHJ   PP,OUTAS0       ;EXT/INT\r
+       002301' 373000  013554'         SOSLE SYMCNT    ;SEE IF WE HAVE RUN OUT\r
+       002302' 254000  010571'         JRST    OUTTAB          ;NOT YET, PRINT ONE TAB\r
+       002303' 200400  013451' LOUT64: MOVE CS,NCOLLS          ;YES, RESET\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 44\r
+MACRO  10      24-APR-78 02:11         OUTPUT ROUTINES\r
+\r
+       002304' 202400  013554'         MOVEM CS,SYMCNT\r
+       002305' 254000  010600'         JRST    OUTCR           ;CARRIAGE RETURN AND TRY FOR ANOTHER\r
+\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 45\r
+MACRO  10      24-APR-78 02:11         OUTPUT ROUTINES\r
+\r
+                                       SYN IFBLK,SYMBLK        ;SOMEWHERE TO STORE THE POINTERS\r
+\r
+       002306' 262740  013510' LLUKUP: POP     PP,LOOKX        ;INTERCEPT RETURN POP\r
+       002307' 200200  013552'         MOVE    SX,SYMBOL\r
+       002310' 200144  000000          MOVE    SDEL,(SX)\r
+       002311' 271200  000002          ADDI    SX,2            ;SKIP COUNT OF SYMBOLS\r
+       002312' 505200  777712  LLUKP2: HRLI    SX,-<.LPP-1>    ;LENGTH OF PAGE\r
+       002313' 200300  000005          MOVE    V,ARG           ;COPY OF ARG\r
+       002314' 202206  013400'         MOVEM   SX,SYMBLK(V)    ;STORE SYMBOL POINTER IN TABLE\r
+       002315' 271200  000152          ADDI    SX,2*<.LPP-2>   ;SYMBOLS PER PAGE\r
+       002316' 367300  002314'         SOJG    V,.-2           ;FOR ALL COLUMNS\r
+       002317' 200300  013554'         MOVE    V,SYMCNT\r
+       002320' 550206  013400'         HRRZ    SX,SYMBLK(V)\r
+       002321' 315200  013553'         CAMGE   SX,SYMTOP\r
+       002322' 367300  002320'         SOJG    V,.-2\r
+       002323' 271300  000001          ADDI    V,1\r
+       002324' 202300  013400'         MOVEM   V,SYMBLK\r
+       002325' 254000  002334'         JRST    LLUKP7          ;ENTER LOOP\r
+\r
+       002326' 202205  013400' LLUKP1: MOVEM   SX,SYMBLK(ARG)  ;SAVE IT \r
+       002327' 200004  777777          MOVE    AC0,-1(SX)\r
+       002330' 260740  012740'         PUSHJ   PP,SRCH7\r
+       002331' 557000  000005          HLRZS   ARG\r
+       002332' 260760  013510'         PUSHJ   PP,@LOOKX\r
+                                       JRST    [MOVE   ARG,SYMCNT\r
+                                               MOVEM SX,SYMBLK(ARG)\r
+       002333' 254000  014673'                 JRST    .+1]\r
+       002334' 361140  000455' LLUKP7: SOJL    SDEL,POPOUT     ;TEST FOR END\r
+       002335' 200240  013554' LLUKP3: MOVE    ARG,SYMCNT      ;GET PAGE POSITION\r
+       002336' 200205  013400'         MOVE    SX,SYMBLK(ARG)  ;GET NEXT POINTER\r
+       002337' 252200  002346'         AOBJP   SX,LLUKP4\r
+       002340' 550300  000004          HRRZ    V,SX\r
+       002341' 317300  013553'         CAMG    V,SYMTOP\r
+       002342' 344200  002326'         AOJA    SX,LLUKP1\r
+       002343' 260740  002303' LLUKP6: PUSHJ   PP,LOUT64       ;RESET SYMCNT\r
+       002344' 322140  000455'         JUMPE   SDEL,POPOUT     ;EXIT IF ALL DONE\r
+       002345' 254000  002335'         JRST    LLUKP3\r
+\r
+       002346' 340200  000000  LLUKP4: AOJ     SX,\r
+       002347' 202205  013400'         MOVEM   SX,SYMBLK(ARG)\r
+       002350' 200300  013451'         MOVE    V,NCOLLS\r
+       002351' 335006  013400'         SKIPGE  SYMBLK(V)       ;TEST IF ALL FINISHED\r
+       002352' 254000  002370'         JRST    LLUKP5          ;NO\r
+       002353' 367300  002351'         SOJG    V,.-2           ;KEEP GOING\r
+       002354' 200200  013400'         MOVE    SX,SYMBLK\r
+       002355' 200204  013400'         MOVE    SX,SYMBLK(SX)\r
+       002356' 554300  000004          HLRZ    V,SX            ;GET NUMBER ADVANCED\r
+       002357' 242300  000001          LSH     V,1             ;2 WORDS PER SYMBOL\r
+       002360' 275206  000002          SUBI    SX,2(V)         ;BACK UP ONE SYMBOL\r
+       002361' 335000  014003'         SKIPGE  LPP             ;IF PAGE FULL\r
+       002362' 254000  002365'         JRST    .+3             ;DON'T FINISH WITH EXTRA CR-LF\r
+       002363' 402000  014003'         SETZM   LPP             ;ENSURE END OF PAGE\r
+       002364' 260740  002303'         PUSHJ   PP,LOUT64\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 45-1\r
+MACRO  10      24-APR-78 02:11         OUTPUT ROUTINES\r
+\r
+       002365' 200240  013451'         MOVE    ARG,NCOLLS\r
+       002366' 202240  013554'         MOVEM   ARG,SYMCNT      ;JUST IN CASE\r
+       002367' 254000  002312'         JRST    LLUKP2\r
+\r
+       002370' 377000  013554' LLUKP5: SOSG    SYMCNT  ;ON LAST COL?\r
+       002371' 254000  002343'         JRST    LLUKP6\r
+       002372' 335000  014003'         SKIPGE  LPP             ;IF PAGE FULL\r
+       002373' 254000  002335'         JRST    LLUKP3          ;NO MORE OUTPUT \r
+                               REPEAT 2,<PUSHJ PP,OUTAB2>      ;NO, TAB OUT TO NEXT COLUMN\r
+       002374' 260740  010570'\r
+       002375' 260740  010570'\r
+       002376' 254000  002335'         JRST    LLUKP3\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 46\r
+MACRO  10      24-APR-78 02:11         OUTPUT ROUTINES\r
+\r
+       002377' 260740  003111' SOUT1:  PUSHJ   PP,LOOKUP       ;SET FOR TABLE SCAN\r
+       002400' 606240  400000          TRNN    ARG,SYMF\r
+       002401' 606240  060000          TRNN    ARG,MACF!SYNF\r
+       002402' 634540  000013          TDZA    MRP,MRP         ;SKIP AND CLEAR MRP\r
+       002403' 263740  000000          POPJ    PP,             ;NO, TRY AGAIN\r
+       002404' 602240  000400          TRNE    ARG,INTF\r
+       002405' 201540  000001          MOVEI   MRP,1\r
+                               IFN WFWSW,<TRNE ARG,VARF        ;IF THIS FLAG IS ON SHOULD GO IN LOW SEG\r
+                                       JRST    SOUT1W  >\r
+       002406' 602240  001000          TRNE    ARG,EXTF\r
+       002407' 211540  000001          MOVNI   MRP,1           ;MRP=-1 FOR EXTERNAL\r
+       002410' 602240  040000          TRNE    ARG,SYNF        ;SYNONYM?\r
+       002411' 321540  000455'         JUMPL   MRP,POPOUT      ;YES, DON'T OUTPUT IF EXTERNAL\r
+       002412' 602240  000004          TRNE ARG,SUPRBT         ;IF SUPRESSED\r
+                               ;       JUMPGE MRP,POPOUT       ;DO NOT OUTPUT UNLESS EXTERNAL\r
+       002413' 263740  000000          POPJ    PP,             ;DO NOT OUTPUT\r
+       002414' 325540  002421'         JUMPGE  MRP,SOUT10      ;BRANCH IF NOT EXTERNAL\r
+       002415' 554440  000006          HLRZ    RC,V            ;PUT POINTER/FLAGS IN RC\r
+       002416' 602440  777776          TRNE    RC,-2           ;POINTER?\r
+       002417' 204451  000000          MOVS    RC,0(RC)        ;YES\r
+       002420' 500300  000011          HLL     V,RC            ;STORE LEFT VALUE\r
+\r
+       002421' 261740  000011  SOUT10: PUSH PP,RC      ;SAVE FOR LATER\r
+       002422' 201040  000000          MOVEI   AC1,0\r
+       002423' 323540  002430'         JUMPLE  MRP,SOUT15      ;SET DEFFERRED BITS IF EXTERNAL\r
+       002424' 603440  777776          TLNE    RC,-2           ;CHECK FOR LEFT FIXUP\r
+       002425' 435040  000040          IORI    AC1,40          ;AND SET BITS\r
+       002426' 602440  777776          TRNE    RC,-2           ;CHECK FOR RIGHT FIXUP\r
+       002427' 435040  000020          IORI    AC1,20          ;AND SET BITS\r
+                               IFN WFWSW,<TRNE ARG,VARF        ;IF SO THEN DEFERD\r
+                                       IORI AC1,20>\r
+       002430' 603440  777776  SOUT15: TLNE RC,-2      ;FIX RELOC AS 0 IF EXTERNAL\r
+       002431' 553000  000011          HRRZS RC\r
+       002432' 602440  777776          TRNE RC,-2\r
+       002433' 513000  000011          HLLZS RC\r
+       002434' 623440  777777          TLZE RC,-1\r
+       002435' 660440  000002          TRO RC,2\r
+       002436' 504540  000011          HRL MRP,RC\r
+       002437' 201440  000000          MOVEI RC,0\r
+       002440' 602240  000200          TRNE    ARG,ENTF        ;ENTRY DMN\r
+       002441' 541540  777773          HRRI    MRP,-5\r
+       002442' 602240  100000          TRNE ARG,NOOUTF         ;SUPRESS OUTPUT? WFW\r
+       002443' 271540  000003          ADDI MRP,3              ;YES WFW\r
+       002444' 434053  002512'         IOR     AC1,SOUTC(MRP)\r
+       002445' 200240  000001          MOVE ARG,AC1\r
+       002446' 260740  002710'         PUSHJ   PP,NOUT2        ;SQUOZE AND DUMP THE SYMBOL\r
+       002447' 202000  013551'         MOVEM AC0,SVSYM         ;SAVE IT\r
+       002450' 200000  000006          MOVE    AC0,V           ;GET THE VALUE\r
+       002451' 554440  000013          HLRZ    RC,MRP          ;AND THE RELOCATION\r
+       002452' 260740  002724'         PUSHJ   PP,COUT\r
+       002453' 262740  000011          POP PP,RC               ;GET BACK RELOC AND CHECK EXTERNAL\r
+       002454' 606440  777776          TRNN RC,-2              ;IS IT?\r
+       002455' 254000  002467'         JRST SOUT50             ;NO\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 46-1\r
+MACRO  10      24-APR-78 02:11         OUTPUT ROUTINES\r
+\r
+       002456' 200011  000001          MOVE AC0,1(RC)          ;GET NAME\r
+                               IFN WFWSW,<JUMPE AC0,[MOVSI AC0,200000  ;RIGHT DEFERED\r
+                                               PUSHJ PP,INVRSF ;INSERT IN SYMBOL INFORMATION\r
+                                               JRST SOUT50]>\r
+       002457' 201240  000060          MOVEI ARG,60            ;EXTERNAL REQ\r
+       002460' 260740  004770'         PUSHJ PP,SQOZE\r
+       002461' 513000  000011          HLLZS RC        ;NO RELOC\r
+       002462' 260740  002724'         PUSHJ PP,COUT   ;OUTPUT IT\r
+       002463' 200000  013551'         MOVE AC0,SVSYM  ;GET SYMBOL NAME\r
+       002464' 661000  500000          TLO AC0,500000  ;SET AS ADDITIVE SYMBOL\r
+       002465' 621000  200000          TLZ AC0,200000  ;BUT NOT LEFT HALF ETC\r
+       002466' 260740  002724'         PUSHJ PP,COUT\r
+       002467' 207000  000011  SOUT50: MOVSS RC        ;CHECK LEFT HALF\r
+       002470' 606440  777776          TRNN RC,-2\r
+       002471' 254000  002502'         JRST SOUT60\r
+       002472' 200011  000001          MOVE AC0,1(RC)\r
+                               IFN WFWSW,<JUMPE AC0,[MOVSI AC0,600000  ;LEFT DEFERED\r
+                                               PUSHJ PP,INVRSF\r
+                                               JRST SOUT60]>\r
+       002473' 201240  000060          MOVEI ARG,60\r
+       002474' 260740  004770'         PUSHJ PP,SQOZE\r
+       002475' 201440  000000          MOVEI RC,0\r
+       002476' 260740  002724'         PUSHJ PP,COUT\r
+       002477' 200000  013551'         MOVE AC0,SVSYM\r
+       002500' 661000  700000          TLO AC0,700000\r
+       002501' 260740  002724'         PUSHJ PP,COUT\r
+       002502' 263740  000000  SOUT60: POPJ    PP,\r
+\r
+       002503' 260740  003060' SOUT20: PUSHJ PP,OUTAS0\r
+       002504' 254000  010600'         JRST OUTCR\r
+\r
+       002505' 426352  400004          <ASCII /ENT/>!04        ;DMN\r
+       002506' 000000  000000          Z\r
+       002507' 000000  000000          Z\r
+       002510' 516131  600044          <ASCII /SEN/>!44        ;SUPRESSED ENTRY\r
+       002511' 426612  400060          <ASCII /EXT/>!60\r
+       002512' 000000  000010  SOUTC:  EXP     10\r
+       002513' 446352  400004          <ASCII /INT/>!04\r
+       002514' 526612  400060          <ASCII /UXT/>!60        ;UNDEFINED EXTERNAL\r
+       002515' 516410  400050          <ASCII /SPD/>!50\r
+       002516' 516231  600044          <ASCII /SIN/>!44        ;DMN\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 47\r
+MACRO  10      24-APR-78 02:11         OUTPUT ROUTINES\r
+\r
+                               IFN WFWSW,<\r
+                               INVRSF: MOVEI ARG,3     ;GET A BLOCK\r
+                                       ADDB ARG,FREE\r
+                                       CAML ARG,SYMBOL\r
+                                       PUSHJ PP,XCEEDS\r
+                                       MOVEM AC0,(ARG) ;SAVE WHICH HALF INFO\r
+                                       MOVE AC0,SVSYM  ;GET SYMBOL NAME\r
+                                       TLZ AC0,740000  ;GET RID OF CODE BITS\r
+                                       MOVEM AC0,-1(ARG)       ;SAVE IT\r
+                                       HLRZ AC0,(RC)           ;SYMBOL TABLE FIXUP POINTER\r
+                                       MOVEM AC0,-2(ARG)       ;LINK IN THIS BLOCK\r
+                                       SUBI ARG,2      ;POINT TO START OF BLOCK\r
+                                       HRLM ARG,(RC)\r
+                                       POPJ PP,\r
+                               \r
+                               SOUT1W: HLRZS V         ;GET THE SYMBOL TABLE POINTER\r
+                                       MOVEI RC,3      ;SET UP A NEW BLOCK FOR THIS SYMBOL\r
+                                       ADDB RC,FREE\r
+                                       CAML RC,SYMBOL\r
+                                       PUSHJ PP,XCEEDS ;CHECK ON OUT OF ROOM\r
+                                       PUSH PP,ARG     ;SAVE ARG AND ACO\r
+                                       PUSH PP,AC0\r
+                                       MOVEI ARG,0     ;NO CODE BITS\r
+                                       PUSHJ PP,SQOZE  ;CONVERT TO RAD50\r
+                                       MOVEM AC0,-1(RC)        ;SYMBOL NAME\r
+                                       POP PP,AC0\r
+                                       POP PP,ARG      ;RESTORE\r
+                                       HRRZM V,-2(RC)  ;LINK TO NEXT BLOCK\r
+                                       MOVSI V,200000  ;FLAG AS SYMBOL TABLE FIXUP\r
+                                       MOVEM V,(RC)\r
+                                       HRRZ V,(SX)     ;GET POINTER TO HEADER BLOCK\r
+                                       SUBI RC,2       ;POINT TO HEAD OF BLOCK\r
+                                       HRLM RC,(V)     ;PUT IN LINK TO NEW BLOCK\r
+                                       MOVE RC,FIXLNK  ;ADD SYMBOL TO CHAIN OF ONES TO DO\r
+                                       MOVEM SX,FIXLNK ;CHAIN THROUGH SYMBOL ENTRY\r
+                                       MOVEM RC,-1(SX) ;WHICH IS NO LONGER NEEDED\r
+                                       SETZB RC,V      ;PUT OUT 0 FOR SYMBOL VALUE\r
+                                       JRST SOUT10>\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 48\r
+MACRO  10      24-APR-78 02:11         OUTPUT ROUTINES\r
+\r
+                                                               ;OUTPUT THE BINARY\r
+\r
+       002517' 524400  014000' BOUT:   HRLO    CS,LOCO         ;PICKUP THE LOCATION\r
+       002520' 260740  003033'         PUSHJ   PP,ONC          ;OUTPUT IT TO THE LISTING FILE\r
+       002521' 201340  000047          MOVEI   C,"'"\r
+       002522' 332000  014006'         SKIPE   MODO            ;IF MODE IS NOT ABSOLUTE\r
+       002523' 260740  010663'         PUSHJ   PP,OUTC         ;PRINT A SINGLE QUOTE\r
+       002524' 260740  002776'         PUSHJ   PP,DSTOW        ;GET THE CODE\r
+       002525' 261740  000011          PUSH PP,RC      ;SAVE RELOC\r
+       002526' 261740  000011          PUSH    PP,RC   ;AND AGAIN\r
+       002527' 603440  777776  IFE WFWSW,<TLNE RC,-2   ;CHECK LEFT EXTERNAL\r
+       002530' 553000  000011          HRRZS RC        ;MAKE LEFT NON-RELOC>\r
+                               IFN WFWSW,<TLNE FR,RIMSW!RIM1SW!R1BSW   ;CHECK FOR SPECIAL BIN OUT\r
+                                       JRST  BOUT30    ;AND LET HIM DISCOVER THE HORROR\r
+                                       TLNN RC,-2      ;LEFT HALF EXTERNAL??\r
+                                       JRST BOUT11     ;NO\r
+                                       HLRZ AC1,RC     ;GET POINTER\r
+                                       SKIPE 1(AC1)    ;IS IT SPECIAL LVAR KIND (NAME IS 0)\r
+                                       JRST    [HRRZS RC\r
+                                               JRST BOUT11]    ;IGNORE FOR NOW\r
+                                       PUSH PP,AC0     ;SAVE WORD\r
+                                       HLRZS AC0       ;GET OFFSET\r
+                                       PUSHJ PP,INCSRC ;FIND A MATCH OR INSERT NEW BLOCK\r
+                                       ADDI AC1,1      ;POINT ONE FURTHER IN BLOCK\r
+                                       PUSHJ PP,LVLINK ;AND SET INFORMATION\r
+                                       POP PP,AC0\r
+                                       HRLM RC,AC0     ;THE LINK\r
+                                       HLLM RC,-1(PP)  ;AND ITS RELOC\r
+                                       MOVE RC,-1(PP)  ;GET RELOC BACK\r
+                               BOUT11:>\r
+       002531' 606440  777776          TRNN RC,-2      ;RIGHT EXT?\r
+       002532' 254000  002553'         JRST BOUT30     ;NO\r
+                               IFN WFWSW,<HRRZ AC1,RC  ;GET POINTER\r
+                                       SKIPE 1(AC1)\r
+                                       JRST    [HRRZ AC1,AC0   ;ORDINARY EXTERNAL, HANDLE\r
+                                               JUMPE AC1,BOUT20\r
+                                               HLLZS RC        ;ADD EXTERNAL\r
+                                               JRST BOUT30]\r
+                                       PUSH PP,AC0     ;SAVE WORD\r
+                                       HRRZS AC0       ;GET OFFSET\r
+                                       PUSHJ PP,INCSRC\r
+                                       PUSHJ PP,LVLINK\r
+                                       POP PP,AC0\r
+                                       HRRM RC,AC0\r
+                                       HLRM RC,-1(PP)\r
+                                       MOVE RC,-1(PP)>\r
+       002533' 550040  000000  IFE WFWSW,<HRRZ AC1,AC0 ;YES\r
+       002534' 322040  002537'         JUMPE AC1,BOUT20        ;PROCESS IF ZERO CODE THERE\r
+       002535' 513000  000011          HLLZS RC        ;MAKE NON-RELOC>\r
+       002536' 254000  002553'         JRST BOUT30     ;PROCESS\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 49\r
+MACRO  10      24-APR-78 02:11         OUTPUT ROUTINES\r
+\r
+       002537'                 BOUT20:\r
+       002537' 542057  777777          HRRM AC1,-1(PP) ;FIX RC IN STACK SO NO CONFUSION WFW (AC1 HAS 0)\r
+       002540' 540011  000000          HRR     AC0,0(RC)       ;NO, SET ADDRESS LINK\r
+       002541' 200040  014000'         MOVE    AC1,LOCO        ;GET CURRENT LOCATION\r
+       002542' 542051  000000          HRRM    AC1,0(RC)       ;SET NEW LINK\r
+       002543' 554051  000000          HLRZ    AC1,0(RC)       ;GET FLAGS/POINTER\r
+       002544' 606040  777776          TRNN    AC1,-2          ;POINTER?\r
+       002545' 540040  000011          HRR     AC1,RC          ;NO, SET TO FLAGS\r
+       002546' 544441  000000          HLR     RC,0(AC1)       ;PUT FLAGS IN RC\r
+       002547' 504040  014006'         HRL     AC1,MODO        ;GET CURRENT MODE\r
+       002550' 622440  777776          TRZE    RC,-2           ;LEFT HALF RELOCATABLE+\r
+       002551' 661040  000002          TLO     AC1,2           ;YES, SET FLAG\r
+       002552' 502041  000000          HLLM    AC1,0(AC1)      ;STORE NEW FLAGS\r
+       002553' 520400  000000  BOUT30: HLLO    CS,AC0\r
+       002554' 623440  000001          TLZE    RC,1            ;PACK RELOCATION BITS\r
+       002555' 660440  000002          TRO     RC,2\r
+       002556' 602440  000002          TRNE    RC,2            ;LEFT HALF RELOCATABLE?\r
+       002557' 620400  000001          TRZ     CS,1            ;YES, RESET BIT\r
+       002560' 261740  000000          PUSH    PP,AC0          ;NEED AN AC\r
+       002561' 554017  777777          HLRZ    AC0,-1(PP)      ;AC0 = LEFT RELOCATION\r
+       002562' 303000  000001          CAILE   AC0,1           ;EXTERNAL?\r
+       002563' 431400  001001          XORI    CS,EXTF!1       ;YES, SET SWITCH\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 50\r
+MACRO  10      24-APR-78 02:11         OUTPUT ROUTINES\r
+\r
+       002564' 262740  000000          POP     PP,AC0          ;RESTORE\r
+       002565' 260740  003033'         PUSHJ   PP,ONC\r
+       002566' 524400  000000          HRLO    CS,AC0\r
+       002567' 630400  000011          TDZ     CS,RC           ;SET RELOCATION\r
+       002570' 550357  000000          HRRZ    C,(PP)          ;C = RIGHT RELOCATION\r
+       002571' 303340  000001          CAILE   C,1             ;EXTERNAL\r
+       002572' 431400  001001          XORI    CS,EXTF!1       ;YES, SET SWITCH\r
+       002573' 260740  003033'         PUSHJ   PP,ONC\r
+       002574' 262740  000010  BOUT3I: POP     PP,CS           ;GET RID OF ENTRY ON STACK\r
+       002575' 550400  014000'         HRRZ    CS,LOCO\r
+       002576' 603640  004500          TLNE    FR,RIMSW!RIM1SW!R1BSW   ;RIM OUTPUT?\r
+       002577' 254000  010360'         JRST    ROUT            ;YES, GO PROCESS\r
+\r
+       002600' 504400  014006'         HRL     CS,MODO\r
+       002601' 312400  014005'         CAME    CS,MODLOC       ;SEQUENCE OR RELOCATION BREAK?\r
+       002602' 260740  002731'         PUSHJ   PP,COUTD        ;YES, DUMP THE BUFFER\r
+       002603' 331000  013350'         SKIPL   COUTX           ;NEW BUFFER?\r
+       002604' 254000  002613'         JRST    BOUT40          ;NO, STORE CODE AND EXIT\r
+       002605' 202400  014005'         MOVEM   CS,MODLOC       ;YES, STORE NEW VALUES\r
+       002606' 250000  014000'         EXCH    AC0,LOCO\r
+       002607' 250440  014006'         EXCH    RC,MODO\r
+       002610' 260740  002724'         PUSHJ   PP,COUT         ;STORE BLOCK LOCATION AND MODE\r
+       002611' 250440  014006'         EXCH    RC,MODO         ;RESTORE CURRENT VALUES\r
+       002612' 250000  014000'         EXCH    AC0,LOCO\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 51\r
+MACRO  10      24-APR-78 02:11         OUTPUT ROUTINES\r
+\r
+       002613' 260740  002724' BOUT40: PUSHJ PP,COUT   ;EMIT CODE\r
+       002614' 262740  000011          POP PP,RC       ;RETRIEVE EXTERNAL BITS\r
+       002615' 606440  777776          TRNN RC,-2      ;RIGHT EXTERNAL?\r
+       002616' 254000  002640'         JRST BOUT50     ;TRY FOR LEFT\r
+       002617' 260740  002731'         PUSHJ PP,COUTD\r
+       002620' 261740  013347'         PUSH PP,BLKTYP  ;TERMINATE TYPE AND SAVE\r
+       002621' 201000  000002          MOVEI AC0,2     ;BLOCK TYPE 2\r
+       002622' 202000  013347'         MOVEM AC0,BLKTYP\r
+       002623' 200011  000001          MOVE AC0,1(RC)  ;GET SYMBOL\r
+       002624' 201240  000060          MOVEI ARG,60    ;CODE BITS\r
+       002625' 260740  004770'         PUSHJ PP,SQOZE  ;CONVERT TO RADIX 50\r
+       002626' 513000  000011          HLLZS RC        ;SYMBOL HAS NO RELOCATION\r
+       002627' 260740  002724'         PUSHJ PP,COUT   ;EMIT\r
+       002630' 200000  014000'         MOVE AC0,LOCO   ;GET CURRENT LOC\r
+       002631' 505000  400000          HRLI AC0,400000 ;ADDITIVE REQ\r
+       002632' 540440  014006'         HRR RC,MODO     ;CURRENT MODE\r
+       002633' 260740  002724'         PUSHJ PP,COUT   ;EMIT\r
+       002634' 207000  000011          MOVSS RC        ;NOW FOR LEFT\r
+       002635' 606440  777776          TRNN RC,-2\r
+       002636' 254000  002660'         JRST BOUT60\r
+       002637' 254000  002647'         JRST BOUT70\r
+       002640' 207000  000011  BOUT50: MOVSS RC        ;CHECK OTHER HALF\r
+       002641' 606440  777776          TRNN RC,-2              ;LEFT HALF EXTERNAL?\r
+       002642' 254000  002662'         JRST BOUT80     ;NO, FALSE ALARM\r
+       002643' 260740  002731'         PUSHJ PP,COUTD  ;CHANGE MODE\r
+       002644' 261740  013347'         PUSH PP,BLKTYP\r
+       002645' 201000  000002          MOVEI AC0,2\r
+       002646' 202000  013347'         MOVEM AC0,BLKTYP\r
+       002647' 200011  000001  BOUT70: MOVE AC0,1(RC)\r
+       002650' 201240  000060          MOVEI ARG,60\r
+       002651' 260740  004770'         PUSHJ PP,SQOZE\r
+       002652' 513000  000011          HLLZS RC\r
+       002653' 260740  002724'         PUSHJ PP,COUT\r
+       002654' 200000  014000'         MOVE AC0,LOCO\r
+       002655' 505000  600000          HRLI AC0,600000 ;LEFT HALF ADD\r
+       002656' 540440  014006'         HRR RC,MODO\r
+       002657' 260740  002724'         PUSHJ PP,COUT   ;EMIT\r
+       002660' 260740  002731' BOUT60: PUSHJ PP,COUTD  ;CHANGE MODE\r
+       002661' 262740  013347'         POP PP,BLKTYP   ;TO OLD ONE\r
+       002662' 350000  014000' BOUT80: AOS LOCO\r
+       002663' 350000  014005'         AOS MODLOC\r
+       002664' 263740  000000          POPJ PP,\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 52\r
+MACRO  10      24-APR-78 02:11         OUTPUT ROUTINES\r
+\r
+                               IFN WFWSW,<\r
+                               INCSC1: HLRZ RC,(AC1)   ;GET OFFSET OF NEXT BLOCK\r
+                                       CAMN RC,AC0     ;IS IT THE SAME??\r
+                                       POPJ PP,        ;YES, RETURN AC1 POINTS TO BLOCK\r
+                               INCSRC: MOVE RC,AC1     ;CURRENT POINTER\r
+                                       HRRZ AC1,(AC1)  ;IN CASE THIS COMES UP 0\r
+                                       JUMPN AC1,INCSC1        ;SINCE 0 IS END OF CHAIN. ANY MORE??\r
+                                       MOVEI AC1,3     ;NO, GET A NEW BLOCK\r
+                                       ADDB AC1,FREE\r
+                                       CAML AC1,SYMBOL\r
+                                       PUSHJ PP,XCEED\r
+                                       SUBI AC1,2      ;WE MUST BE POINTING RIGHT WHEN WE GET OUT\r
+                                       HRRM AC1,(RC)   ;INSERT WHERE END OF CHAIN WAS\r
+                                       HRLZM AC0,(AC1) ;SET OFFSET AND END OF CHAIN\r
+                                       SETZM 1(AC1)\r
+                                       SETZM 2(AC1)    ;NO LEFT OR RIGHT HALF FIXUPS\r
+                                       POPJ PP,        ;DONE\r
+                               \r
+                               LVLINK: MOVE RC,LOCO    ;GET CURRENT LOCATION\r
+                                       HRL RC,MODO     ;AND MODE\r
+                                       EXCH RC,1(AC1)  ;PUT IN AND GET PLACE TO LINK TO\r
+                                       POPJ PP,>\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 53\r
+MACRO  10      24-APR-78 02:11         OUTPUT ROUTINES\r
+\r
+       002665' 200300  014676' NOUT:   MOVE    V,[POINT 7,TBUF]        ;POINTER TO ASCII LINE\r
+       002666' 205400  440600          MOVSI   CS,(POINT 6,AC0)        ;POINTER TO SIXBIT AC0\r
+       002667' 403240  000000          SETZB   ARG,AC0\r
+       002670' 134340  000006  NOUT1:  ILDB    C,V             ;GET ASCII\r
+       002671' 301340  000141          CAIL C,"A"+40\r
+       002672' 303340  000172          CAILE C,"Z"+40\r
+       002673' 254000  002675'         JRST    .+2\r
+       002674' 624340  000100          TRZA    C,100           ;LOWER CASE TO SIXBIT\r
+       002675' 275340  000040          SUBI    C,40            ;CONVERT TO SIXBIT\r
+       002676' 323340  002704'         JUMPLE  C,NOUT3         ;TEST FORM NON-SIXBIT\r
+       002677' 303340  000077          CAILE   C,77            ;AND NOT GREATER THAN SIXBIT\r
+       002700' 254000  002704'         JRST    NOUT3           ;...\r
+       002701' 136340  000010          IDPB    C,CS            ;DEPOSIT IN AC0\r
+       002702' 603400  770000          TLNE    CS,770000       ;TEST FOR SIX CHARACTERS\r
+       002703' 254000  002670'         JRST    NOUT1           ;NO, GET ANOTHER\r
+       002704' 335000  013733' NOUT3:  SKIPGE  UNIVSN          ;IF A UNIVERSAL PROG\r
+       002705' 263740  000000          POPJ    PP,             ;RETURN TO PUT IT IN THE TABLE\r
+\r
+       002706' 607600  000002  IFN CCLSW,<     TLNN IO,IOTLSN  ;AND IF WE HAVE NOT SEEN A TITLE\r
+       002707' 260740  004326'         PUSHJ PP,PRNAM  ;THEN PRINT THE NAME>\r
+       002710' 260740  004770' NOUT2:  PUSHJ   PP,SQOZE        ;CONVERT TO SIXBIT\r
+       002711' 254000  002724'         JRST    COUT            ;DUMP AND EXIT\r
+\r
+       002712'                 HOUT:\r
+       002712' 201440  000001          MOVEI   RC,1            ;RELOCATABLE\r
+                               IFN RENTSW,<\r
+                                       MOVE    AC0,HHIGH       ;GET HIGH SEG IF TWO SEGMENTS\r
+                                       JUMPE   AC0,.+2         ;NOT TWO SEGMENTS\r
+                                       PUSHJ   PP,COUT         ;OUTPUT IT >\r
+       002713' 200000  013735'         MOVE    AC0,HIGH\r
+                               IFN RENTSW,<\r
+                                       SKIPE   HHIGH           ;ANY TWOSEG HIGH STUFF\r
+                                       JRST    COUT            ;YES,SO NO ABS.>\r
+       002714' 260740  002724'         PUSHJ   PP,COUT         ;OUTPUT THE HIGHEST LOCATION\r
+       002715' 200000  013734'         MOVE AC0,ABSHI\r
+                                                               ;PUT OUT ABS PORTION OF PROGRAM BREAK\r
+       002716' 364440  002724'         SOJA    RC,COUT         ;OUTPUT A WORD OF ZERO AND EXIT\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 54\r
+MACRO  10      24-APR-78 02:11         OUTPUT ROUTINES\r
+\r
+                               IFN RENTSW,<\r
+                               HSOUT:  SETZM   HISNSW          ;CLEAR FOR PASS2\r
+                                       MOVE    AC0,SVTYP3      ;GET HISEG ARG\r
+                                       JUMPGE  AC0,.+4         ;JUMP IF ONLY HISEG\r
+                                       HRL     AC0,HIGH1       ;GET BREAK FROM PASS 1\r
+                                       JUMPL   AC0,.+2         ;OK IF GREATER THAN 400000\r
+                                       HRLS    AC0             ;SIGNAL TWO SEGMENT TO LOADER\r
+                                       MOVEI   RC,1            ;ASSUME RELOCATABLE\r
+                                       JRST    COUT            ;OUTPUT THE WORD>\r
+\r
+       002717' 336440  014052' VOUT:   SKIPN   RC,VECREL       ;IS VECTOR ABSOLUTE ZERO?\r
+       002720' 332000  014053'         SKIPE   VECTOR          ;ALSO CHECK RELOCATION\r
+       002721' 254000  002723'         JRST    .+2\r
+       002722' 263740  000000          POPJ    PP,             ;YES, EXIT\r
+       002723' 200000  014053'         MOVE    AC0,VECTOR      ;AC0 SHOULD BE FLAGS\r
+\r
+       002724' 350340  013350' COUT:   AOS     C,COUTX         ;INCREMENT INDEX\r
+       002725' 202007  013354'         MOVEM   AC0,COUTDB(C)   ;STORE CODE\r
+       002726' 136440  013352'         IDPB    RC,COUTP        ;STORE RELOCATION BITS\r
+       002727' 302340  000021          CAIE    C,^D17          ;IS THE BUFFER FULL?\r
+       002730' 263740  000000          POPJ    PP,             ;NO, EXIT\r
+\r
+       002731' 357340  013350' COUTD:  AOSG    C,COUTX         ;DUMP THE BUFFER\r
+       002732' 254000  002743'         JRST    COUTI           ;BUFFER WAS EMPTY\r
+       002733' 504340  013347'         HRL     C,BLKTYP        ;SET BLOCK TYPE\r
+       002734' 260740  010404'         PUSHJ   PP,OUTBIN       ;OUTPUT COUNT AND TYPE\r
+       002735' 477340  013351'         SETOB   C,COUTY         ;INITIALIZE INDEX\r
+\r
+       002736' 200347  013354' COUTD2: MOVE    C,COUTDB(C)     ;GET RELOCATION BITS/CODE\r
+       002737' 260740  010404'         PUSHJ   PP,OUTBIN       ;DUMP IT\r
+       002740' 350340  013351'         AOS     C,COUTY         ;INCREMENT INDEX\r
+       002741' 315340  013350'         CAMGE   C,COUTX         ;TEST FOR END\r
+       002742' 254000  002736'         JRST    COUTD2          ;NO, GET NEXT WORD\r
+\r
+       002743' 476000  013350' COUTI:  SETOM   COUTX           ;INITIALIZE BUFFER INDEX\r
+       002744' 402000  013353'         SETZM   COUTRB          ;ZERO RELOCATION BITS\r
+       002745' 200340  014677'         MOVE    C,[POINT 2,COUTRB]\r
+       002746' 202340  013352'         MOVEM   C,COUTP         ;INITIALIZE BIT POINTER\r
+       002747' 263740  000000          POPJ    PP,             ;EXIT\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 55\r
+MACRO  10      24-APR-78 02:11         OUTPUT ROUTINES\r
+\r
+       002750'                 STOWZ1:\r
+       002750' 201440  000000  STOWZ:  MOVEI   RC,0\r
+       002751'                 STOW:\r
+       002751' 321640  002763'         JUMP1   STOW20          ;SKIP TEST IF PASS ONE\r
+       002752' 602440  777776          TRNE    RC,-2           ;RIGHT HALF ZERO OR 1?\r
+       002753' 260740  003021'         PUSHJ   PP,STOWT        ;NO, HANDLE EXTERNAL\r
+       002754' 607440  777776          TLNN    RC,-2           ;LEFT HALF ZERO OR 1? WFW\r
+       002755' 254000  002761'         JRST    STOW10          ;YES, SKIP TEST\r
+       002756' 207000  000011          MOVSS   RC              ;SWAP HALVES\r
+       002757' 260740  003026'         PUSHJ   PP,STOWT1       ;HANDLE EXTERNAL WFW\r
+       002760' 207000  000011          MOVSS   RC              ;RESTORE VALUES\r
+\r
+       002761' 332000  013742' STOW10: SKIPE   EXTPNT          ;ANY EXTERNALS REMAINING?\r
+       002762' 660600  000040          TRO     ER,ERRE         ;YES, SET EXTERNAL ERROR FLAG\r
+\r
+       002763' 350040  013555' STOW20: AOS     AC1,STPX        ;INCREMENT POINTER\r
+       002764' 202001  013557'         MOVEM   AC0,STCODE(AC1) ;STOW CODE\r
+       002765' 202441  013627'         MOVEM   RC,STOWRC(AC1)  ;STOW RELOCATION BITS\r
+       002766' 336000  013773'         SKIPN   LITLVL          ;ARE WE IN LITERAL?\r
+       002767' 350000  013777'         AOS     LOCA            ;NO, INCREMENT ASSEMBLY LOCATION\r
+       002770' 305040  000047          CAIGE   AC1,.STP-1      ;OVERFLOW?\r
+       002771' 263740  000000          POPJ    PP,             ;NO, EXIT\r
+\r
+       002772' 332000  013773'         SKIPE   LITLVL          ;ARE WE IN A LITERAL?\r
+       002773' 664600  010000          TROA    ER,ERRL         ;YES, FLAG ERROR BUT DON'T DUMP\r
+       002774' 254000  001453'         JRST    CHARL1          ;NO, SAVE REGISTERS AND DUMP THE BUFFER\r
+       002775' 254000  003003'         JRST    STOWI           ;INITIALIZE BUFFER\r
+\r
+       002776' 350040  013556' DSTOW:  AOS     AC1,STPY        ;INCREMENT POINTER\r
+       002777' 200001  013557'         MOVE    AC0,STCODE(AC1) ;FETCH CODE\r
+       003000' 200441  013627'         MOVE    RC,STOWRC(AC1)  ;FETCH RELOCATION BITS\r
+       003001' 315040  013555'         CAMGE   AC1,STPX        ;IS THIS THE END?\r
+       003002' 263740  000000          POPJ    PP,             ;NO, EXIT\r
+\r
+       003003' 476000  013555' STOWI:  SETOM   STPX            ;INITIALIZE FOR INPUT\r
+       003004' 476000  013556'         SETOM   STPY            ;INITIALIZE FOR OUTPUT\r
+       003005' 402000  013742'         SETZM   EXTPNT\r
+       003006' 263740  000000          POPJ    PP,             ;EXIT\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 56\r
+MACRO  10      24-APR-78 02:11         OUTPUT ROUTINES\r
+\r
+       003007' 350000  013773' SVSTOW: AOS     LITLVL          ;NESTED LITERALS\r
+       003010' 261740  013555'         PUSH    PP,STPX         ;MAKE ROOM FOR ANOTHER\r
+       003011' 261740  013556'         PUSH    PP,STPY\r
+       003012' 200040  013555'         MOVE    AC1,STPX\r
+       003013' 202040  013556'         MOVEM   AC1,STPY\r
+       003014' 254002  000000          JRST    0(AC2)\r
+\r
+       003015' 262740  013556' GTSTOW: POP     PP,STPY         ;BACK UP A LEVEL\r
+       003016' 262740  013555'         POP     PP,STPX\r
+       003017' 370000  013773'         SOS     LITLVL\r
+       003020' 254002  000000          JRST    0(AC2)\r
+\r
+                                       ;EXTERNAL RIGHT\r
+       003021' 550040  013742' STOWT:  HRRZ    AC1,EXTPNT      ;GET RIGHT POINTER\r
+       003022' 302051  000000          CAIE    AC1,(RC)        ;DOES IT MATCH \r
+       003023' 260740  004041'         PUSHJ   PP,QEXT         ;EXTERNAL OR RELOCATION ERROR\r
+       003024' 513000  013742'         HLLZS   EXTPNT\r
+       003025' 263740  000000          POPJ    PP,             ;EXIT\r
+\r
+                                       ;EXTERNAL LEFT\r
+       003026' 554040  013742' STOWT1: HLRZ    AC1,EXTPNT      ;GET LEFT HALF\r
+       003027' 302051  000000          CAIE    AC1,(RC)        ;SEE ABOVE\r
+       003030' 260740  004041'         PUSHJ   PP,QEXT\r
+       003031' 553000  013742'         HRRZS   EXTPNT\r
+       003032' 263740  000000          POPJ    PP,             ;EXIT\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 57\r
+MACRO  10      24-APR-78 02:11         OUTPUT ROUTINES\r
+\r
+       003033' 134340  013677' ONC:    ILDB    C,TABP          ;ENTRY TO ADVANCE TAB POINTER\r
+       003034' 260740  010607'         PUSHJ   PP,OUTL         ;OUTPUT A TAB\r
+                                                               ;OUTPUT 6 OCT NUMBERS FROM CS LEFT\r
+       003035' 201340  000006  ONC1:   MOVEI   C,6             ;CONVERT TO ASCII\r
+       003036' 246340  000003          LSHC    C,3             ;SHIFT IN OCTAL\r
+       003037' 260740  010607'         PUSHJ   PP,OUTL         ;OUTPUT ASCII FROM C\r
+       003040' 602400  777777          TRNE    CS,-1           ;ARE WE THROUGH?\r
+       003041' 254000  003035'         JRST    ONC1            ;NO, GET ANOTHER\r
+       003042' 201340  000000          MOVEI   C,0             ;CLEAR C\r
+       003043' 607400  000001          TLNN    CS,1            ;RELOCATABLE?\r
+       003044' 201340  000047          MOVEI   C,"'"           ;YES\r
+       003045' 607400  001000          TLNN    CS,EXTF         ;OR EXTERNAL\r
+       003046' 201340  000052          MOVEI   C,"*"           ;YES\r
+       003047' 326340  010663' ONC2:   JUMPN   C,OUTC          ;OUTPUT IF EXTERN OR RELOCATABLE\r
+       003050' 263740  000000          POPJ    PP,             ;EXIT\r
+\r
+       003051' 231340  000012  DNC:    IDIVI   C,^D10\r
+       003052' 506417  000000          HRLM    CS,0(PP)\r
+       003053' 322340  003055'         JUMPE   C,.+2\r
+       003054' 260740  003051'         PUSHJ   PP,DNC          ;RECURSE IF NON-ZERO\r
+       003055' 554357  000000          HLRZ    C,0(PP)\r
+       003056' 271340  000060          ADDI    C,"0"           ;FORM ASCII\r
+       003057' 254000  010572'         JRST    PRINT           ;DUMP AND TEST FOR END\r
+\r
+       003060' 505400  440700  OUTAS0: HRLI    CS,(POINT 7,,)  ;ENTRY TO SET POINTER\r
+       003061' 134340  000010  OUTASC: ILDB    C,CS            ;GET NEXT BYTE\r
+       003062' 322340  000455'         JUMPE   C,POPOUT        ;EXIT ON ZERO DELIMITER\r
+       003063' 260740  010572'         PUSHJ   PP,PRINT\r
+       003064' 254000  003061'         JRST    OUTASC\r
+\r
+       003065' 505400  440600  OUTSIX: HRLI    CS,(POINT 6,,)  ;OUTPUT SIXBIT\r
+       003066' 134340  000010          ILDB    C,CS            ;GET SIXBIT\r
+       003067' 306340  000040          CAIN    C,40            ;"@" DELIMITER?\r
+       003070' 263740  000000          POPJ    PP,             ;YES, EXIT\r
+       003071' 271340  000040          ADDI    C,40            ;NO, FORM ASCII\r
+       003072' 260740  010607'         PUSHJ   PP,OUTL         ;OUTPUT ASCII CHAR FROM C\r
+       003073' 254000  003066'         JRST    OUTSIX+1\r
+\r
+       003074' 200400  000000  OUTSYM: MOVE    CS,AC0          ;PLACE NAME IN CS\r
+       003075' 201340  000000  OUTSY1: MOVEI   C,0             ;CLEAR C\r
+       003076' 246340  000006          LSHC    C,6             ;MOVE NEXT SIXBIT CHARACTER IN\r
+       003077' 322340  010571'         JUMPE   C,OUTTAB        ;TEST FOR END\r
+       003100' 271340  000040          ADDI    C,40            ;CONVERT TO ASCII\r
+       003101' 260740  010607'         PUSHJ   PP,OUTL         ;OUTPUT\r
+       003102' 254000  003075'         JRST    OUTSY1          ;LOOP\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 58\r
+MACRO  10      24-APR-78 02:11         OUTPUT ROUTINES\r
+\r
+       003103' 350217  000000  OUTSET: AOS     SX,0(PP)        ;GET RETURN LOCATION\r
+       003104' 200204  777777          MOVE    SX,-1(SX)       ;GET XWD CODE\r
+       003105' 546200  013347'         HLRM    SX,BLKTYP       ;SET BLOCK TYPE\r
+       003106' 403240  000011          SETZB   ARG,RC\r
+       003107' 260744  000000          PUSHJ   PP,0(SX)        ;GO TO PRESCRIBED ROUTINE\r
+       003110' 254000  002731'         JRST    COUTD           ;TERMINATE BLOCK AND EXIT\r
+\r
+                                       ;LOOKUP SCANS ALL THE SYMBOLS IN THE SYMBOL TABLE\r
+\r
+       003111' 262740  013510' LOOKUP: POP     PP,LOOKX        ;INTERCEPT RETURN POP\r
+       003112' 200200  013552'         MOVE    SX,SYMBOL\r
+       003113' 200144  000000          MOVE    SDEL,0(SX)      ;SET FOR TABLE SCAN\r
+       003114' 361140  000455' LOOKL:  SOJL    SDEL,POPOUT     ;TEST FOR END\r
+       003115' 271200  000002          ADDI    SX,2\r
+       003116' 200004  777777          MOVE    AC0,-1(SX)\r
+       003117' 260740  012740'         PUSHJ   PP,SRCH7        ;LOAD REGISTERS\r
+       003120' 557000  000005          HLRZS   ARG\r
+       003121' 260760  013510'         PUSHJ   PP,@LOOKX       ;RETURN TO CALLING ROUTINE\r
+       003122' 254000  003114'         JRST    LOOKL           ;TRY AGAIN\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 59\r
+MACRO  10      24-APR-78 02:11         OUTPUT ROUTINES\r
+\r
+       003123' 260740  001066' END0:   PUSHJ   PP,EVALCM       ;GET A WORD\r
+       003124' 332000  013742'         SKIPE   EXTPNT          ;ANY EXTERNALS?\r
+       003125' 660600  000040          TRO     ER,ERRE         ;YES, ERROR\r
+       003126' 336300  000000          SKIPN   V,AC0           ;NON-ZERO?\r
+       003127' 322440  003131'         JUMPE   RC,.+2          ;OR RELOC?\r
+       003130' 260740  004116'         PUSHJ   PP,ASSIG7       ;YES, LIST THE VALUE\r
+       003131' 202000  014053'         MOVEM   AC0,VECTOR\r
+       003132' 202440  014052'         MOVEM   RC,VECREL\r
+       003133' 260740  003551'         PUSHJ   PP,VARA         ;FILL OUT SELF-DEFINED VARIABLES\r
+       003134' 260740  000236'         PUSHJ   PP,STOUTS       ;DUMP THE LINE\r
+       003135' 261740  000014          PUSH    PP,IO           ;SAVE FLAGS\r
+       003136' 661600  040000          TLO     IO,IOPROG       ;XLIST LITS\r
+       003137' 260740  003456'         PUSHJ   PP,LIT1\r
+       003140' 262740  000014          POP     PP,IO           ;GET FLAG BACK\r
+       003141' 325640  003216'         JUMP2   ENDP2\r
+\r
+       003142' 260740  002074'         PUSHJ   PP,UOUT\r
+       003143' 607600  000010          TLNN    IO,MFLSW        ;SKIP IF ONLY PSEND\r
+       003144' 260740  007437'         PUSHJ   PP,REC2\r
+       003145' 200000  013343'         MOVE    INDIR           ;SET UP FIRST AS LAST\r
+       003146' 202000  013207'         MOVEM   LSTFIL          ;PRINTED\r
+       003147' 402000  014102'         SETZM   LSTPGN\r
+       003150' 260740  003356'         PUSHJ   PP,INZ\r
+       003151' 603600  000010          TLNE    IO,MFLSW        ;IF PSEND\r
+       003152' 263740  000000          POPJ    PP,             ;BACK TO PSEND0\r
+       003153' 332000  013731'         SKIPE   PRGPTR          ;HAVE ANY PRGEND'S BEEN SEEN\r
+       003154' 254000  005027'         JRST    PSEND3          ;YES,GO SET UP AGAIN\r
+\r
+       003155' 402000  013740' PASS20: SETZM   CTLSAV\r
+       003156' 260740  002743'         PUSHJ   PP,COUTI\r
+       003157' 260740  002130'         PUSHJ   PP,EOUT         ;OUTPUT THE ENTRIES\r
+       003160' 260740  003103'         PUSHJ   PP,OUTSET\r
+       003161' 000006  002665'         XWD     6,NOUT          ;OUTPUT THE NAME (BLKTYP-6)\r
+                               IFN RENTSW,<\r
+                                       SKIPN   HISNSW          ;PUT OUT BLOCK TYPE 3?\r
+                                       JRST    PASS21          ;NO\r
+                                       PUSHJ   PP,OUTSET\r
+                                       XWD     3,HSOUT         ;OUTPUT THE HISEG BLOCK\r
+                               PASS21: >\r
+       003162' 201000  000001          MOVEI   1\r
+       003163' 542000  013347'         HRRM    BLKTYP          ;SET FOR TYPE 1 BLOCK\r
+       003164' 621640  400000          TLZ     FR,P1           ;SET FOR PASS 2 AND TURN OFF FLAG\r
+       003165' 661600  004000          TLO     IO,IOPALL       ;PUT THESE BACK\r
+       003166' 621600  040440          TLZ     IO,IOPROG!IOCREF!DEFCRS ;SO LISTINGS WILL BE THE WAY THEY SHOULD\r
+       003167' 607640  004000          TLNN    FR,R1BSW\r
+       003170' 254000  003003'         JRST    STOWI\r
+       \r
+       003171' 200400  014700'         MOVE CS,[XWD $ST-1-$CKSM,R1BLDR]\r
+       003172' 200350  000000          MOVE C,0(CS)\r
+       003173' 260740  010405'         PUSHJ PP,PTPBIN\r
+       003174' 253400  003172'         AOBJN CS,.-2\r
+       003175' 260740  010465'         PUSHJ   PP,R1BI\r
+       003176' 254000  003003'         JRST    STOWI\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 60\r
+MACRO  10      24-APR-78 02:11         OUTPUT ROUTINES\r
+\r
+       \r
+       003177'                 R1BLDR:\r
+       000000                          PHASE 0\r
+       003177' 777762  000000          IOWD $ADR,$ST\r
+       003200' 710600  000060  $ST:    CONO PTR,60\r
+       003201' 541400  000004          HRRI $A,$RD+1\r
+       003202' 710740  000010  $RD:    CONSO PTR,10\r
+       003203' 254000  000003          JRST .-1\r
+       003204' 710470  000007          DATAI PTR,@$TBL1-$RD+1($A)\r
+       003205' 256010  000007          XCT $TBL1-$RD+1($A)\r
+       003206' 256010  000012          XCT $TBL2-$RD+1($A)\r
+       003207' 364400  000000  $A:     SOJA $A,\r
+       003210' 312740  000016  $TBL1:  CAME $CKSM,$ADR\r
+       003211' 270756  000001          ADD $CKSM,1($ADR)\r
+       003212' 331740  000016          SKIPL $CKSM,$ADR\r
+       003213' 254200  000001  $TBL2:  JRST 4,$ST\r
+       003214' 253700  000003          AOBJN $ADR,$RD\r
+       003215' 254000  000002  $ADR:   JRST $ST+1\r
+       000017                  $CKSM:  \r
+       003216'                         DEPHASE\r
+\r
+                               IF2,<   PURGE $ST,$RD,$A,$TBL1,$TBL2,$ADR,$CKSM>\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 61\r
+MACRO  10      24-APR-78 02:11         OUTPUT ROUTINES\r
+\r
+       003216' 260740  002731' ENDP2:  PUSHJ   PP,COUTD        ;DUMP THE BUFFER\r
+       003217' 200000  014000'         MOVE    AC0,LOCO        ;CHECK TO SEE IF LIT DIFFERED\r
+       003220' 336000  014006'         SKIPN   MODO            ;AND USE SMALLER SINCE AT END\r
+                                       JRST    [CAMN   AC0,ABSHI\r
+                                               HRRZM   AC2,ABSHI\r
+       003221' 254000  014701'                 JRST    ENDP2W]\r
+                               IFN RENTSW,<SKIPE HHIGH         ;SKIP IF NOT TWO SEGMENTS\r
+                                       JRST    [CAMN   AC0,HHIGH\r
+                                               HRRZM   AC2,HHIGH\r
+                                               JRST    ENDP2W]>\r
+       003222' 316000  013735'         CAMN    AC0,HIGH\r
+       003223' 552100  013735'         HRRZM   AC2,HIGH\r
+       003224'                 ENDP2W:\r
+       003224' 603600  000400  REPEAT 1,<TLNE  IO,IOCREF       ;CLOSE CREF IF NECESSARY>\r
+                               REPEAT 0,<TLNE FR,CREFSW        ;IF CREFFING\r
+                                       JRST ENDP2Q\r
+                                       MOVEI SDEL,0\r
+                                       PUSH PP,DBUF+3  ;SO NO PAGE INFO\r
+                                       DPB SDEL,[POINT 7,DBUF+3,13]\r
+                                       IOR ER,OUTSW    ;MAKE SURE OF OUTPUT\r
+                                       PUSHJ PP,CREF\r
+                                       MOVEI C,20      ;CODE FOR TITLE\r
+                                       PUSHJ PP,OUTLST\r
+                                       PUSH PP,IO      ;SAVE THIS\r
+                                       TLZ IO,IOPAGE   ;AND PREVENT PAGE DURING TITLE\r
+                                       MOVEI CS,TBUF\r
+                                       PUSHJ PP,OUTAS0\r
+                                       MOVEI CS,VBUF\r
+                                       PUSHJ PP,OUTAS0\r
+                                       POP PP,IO       ;RESTORE THE IO WORD\r
+                                       POP PP,DBUF+3   >       ;NEEDS FIX TO CREF\r
+       003225' 260740  012676'         PUSHJ   PP,CLSCR2       ;CLOSE IT UP\r
+       003226' 540600  013512' ENDP2Q: HRR     ER,OUTSW        ;SET OUTPUT SWITCH\r
+       003227' 336000  013727'         SKIPN   TYPERR\r
+       003230' 660600  000001          TRO     ER,TTYSW\r
+       003231' 260740  002074'         PUSHJ   PP,UOUT         ;OUTPUT UNDEFINEDS\r
+       003232' 660600  000001          TRO     ER,TTYSW\r
+       003233' 051540  000007          SKPINC  C       ;SEE IF WE CAN INPUT A CHAR.\r
+       003234' 255000  000000            JFCL          ;BUT ONLY TO DEFEAT ^O\r
+       003235' 337340  013376'         SKIPG C,ERRCNT  ;GET ERROR COUNT AND CHECK FOR POSITIVE\r
+       003236' 254000  003254'         JRST NOERW      ;PRINT NO ERROR MESSAGE\r
+       003237' 272340  000000* IFN CCLSW,<ADDM C,JOBERR        ;REMEMBER ERROR COUNT FOR EXECUTION DELETION>\r
+       003240' 260740  010600'         PUSHJ PP,OUTCR\r
+       003241' 200340  013376'         MOVE C,ERRCNT\r
+       003242' 306340  000001          CAIN C,1        ;1 IS A SPECIAL CASE\r
+       003243' 254000  003251'         JRST ONERW      ;PRINT MESSAGE\r
+       003244' 201340  000077          MOVEI   C,"?"           ;? FOR BATCH\r
+       003245' 260740  010607'         PUSHJ   PP,OUTL         ;...\r
+       003246' 200340  013376'         MOVE C,ERRCNT   ;PRINT NUMBER OF ERRORS\r
+       003247' 260740  003051'         PUSHJ PP,DNC\r
+       003250' 334400  014704'         SKIPA CS,[EXP ERRMS1]   ;LOAD TO PRINT\r
+       003251' 201400  010153' ONERW:  MOVEI CS,ERRMS2 ;ONE ERROR DETECTED\r
+       003252' 260740  003065' ONERW1: PUSHJ PP,OUTSIX ;PRINT\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 61-1\r
+MACRO  10      24-APR-78 02:11         OUTPUT ROUTINES\r
+\r
+       003253' 254000  003262'         JRST ENDP2A\r
+       003254' 201400  010156' NOERW:  MOVEI CS,ERRMS3\r
+       003255' 603600  001010  IFN CCLSW,<TLNE IO,CRPGSW!MFLSW ;IF RPG, DON'T PRINT MESSAGE>\r
+                               IFE CCLSW,<TLNE IO,MFLSW        ;NOR IF MULTI-FILE MODE>\r
+       003256' 620600  000001          TRZ     ER,TTYSW                ;NO TTY OUTPUT\r
+       003257' 434600  013512'         IOR     ER,OUTSW        ;UNLESS NEEDED FOR LISTING\r
+       003260' 260740  010600'         PUSHJ PP,OUTCR\r
+       003261' 254000  003252'         JRST ONERW1\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 62\r
+MACRO  10      24-APR-78 02:11         OUTPUT ROUTINES\r
+\r
+       003262' 260740  010600' ENDP2A: PUSHJ PP,OUTCR\r
+       003263' 607600  000010          TLNN    IO,MFLSW        ;IN A MULTI-PROG FILE?\r
+       003264' 254000  003270'         JRST    ENDP2D          ;NO\r
+       003265' 332000  013376'         SKIPE   ERRCNT          ;ANY ERROR?\r
+                                       PUSHJ   PP,[MOVEI CS,[ASCIZ /PROGRAM    /]\r
+                                               PUSHJ PP,OUTAS0 ;YES,SO PRINT MESSAGE\r
+                                               MOVEI   CS,TBUF ;AND TITLE\r
+                                               PUSHJ PP,OUTAS0 ;FOR IDENTIFICATION\r
+       003266' 260740  014707'                 JRST    OUTCR]  ;AND A CR-LF\r
+       003267' 624600  000001          TRZA    ER,TTYSW        ;NO MORE OUTPUT NOW\r
+       003270'                 ENDP2D:\r
+       003270' 603600  001000  IFN CCLSW,<TLNE IO,CRPGSW       ;IF RPG, DON'T PRINT PGM BREAK\r
+       003271' 620600  000001          TRZ     ER,TTYSW        ;...>\r
+                               IFE CCLSW,<     SKIPA           ;SO PRGEND CODE CAN WORK>\r
+       003272' 434600  013512'         IOR     ER,OUTSW        ;...\r
+       003273' 260740  010600'         PUSHJ   PP,OUTCR\r
+                               IFN RENTSW,<\r
+                                       MOVEI   CS,[SIXBIT /HI-SEG. BREAK IS @/]\r
+                                       SKIPN   HHIGH           ;DON'T PRINT IF ZERO\r
+                                       JRST    ENDP2C          ;IT WAS\r
+                                       PUSHJ   PP,OUTSIX\r
+                                       HRLO    CS,HHIGH        ;GET THE BREAK\r
+                                       PUSHJ   PP,ONC1\r
+                                       PUSHJ   PP,OUTCR\r
+                               ENDP2C:>\r
+       003274' 201400  014714'         MOVEI   CS,[SIXBIT /PROGRAM BREAK IS @/]\r
+       003275' 260740  003065'         PUSHJ   PP,OUTSIX       ;OUTPUT PROGRAM BREAK\r
+       003276' 550400  013734'         HRRZ    CS,ABSHI        ;GET ABS. BREAK\r
+       003277' 307400  000140          CAIG    CS,140          ;ANY ABS. CODE\r
+                                       JRST    [HRLO CS,HIGH   ;NO\r
+       003300' 254000  014717'                 JRST    ENDP2B] ;SO DON'T PRINT\r
+       003301' 524400  013735'         HRLO    CS,HIGH         ;GET PROGRAM BREAK\r
+       003302' 260740  003035'         PUSHJ   PP,ONC1\r
+       003303' 260740  010600'         PUSHJ   PP,OUTCR\r
+       003304' 201400  014721'         MOVEI   CS,[SIXBIT /ABSLUTE BREAK IS @/]\r
+       003305' 260740  003065'         PUSHJ   PP,OUTSIX\r
+       003306' 524400  013734'         HRLO    CS,ABSHI\r
+       003307' 260740  003035' ENDP2B: PUSHJ   PP,ONC1\r
+       003310' 260740  010600'         PUSHJ PP,OUTCR\r
+       003311' 603640  004400          TLNE    FR,RIMSW!R1BSW  ;RIM MODE?\r
+       003312' 260740  003345'         PUSHJ   PP,RIMFIN       ;YES, FINISH IT\r
+       003313' 607600  001010  IFN CCLSW,<TLNN IO,CRPGSW!MFLSW ;IF NOT IN CCL MODE>\r
+                               IFE CCLSW,<TLNN IO,MFLSW        ;NOR IF IN MULTI-FILE MODE>\r
+       003314' 660600  000001          TRO     ER,TTYSW        ;PRINT SIZE\r
+       003315' 260740  010600'         PUSHJ   PP,OUTCR\r
+       003316' 200340  000012*         MOVE    C,JOBREL\r
+       003317' 242340  777766          LSH     C,-^D10\r
+       003320' 271340  000001          ADDI    C,1\r
+       003321' 260740  003051'         PUSHJ   PP,DNC\r
+       003322' 201400  014724'         MOVEI   CS,[SIXBIT /K CORE USED@/]\r
+       003323' 260740  003065'         PUSHJ   PP,OUTSIX\r
+       003324' 260740  010600'         PUSHJ   PP,OUTCR        \r
+       003325' 540600  013512'         HRR     ER,OUTSW\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 62-1\r
+MACRO  10      24-APR-78 02:11         OUTPUT ROUTINES\r
+\r
+       003326' 260740  003103'         PUSHJ   PP,OUTSET\r
+       003327' 000002  002165'         XWD     2,SOUT          ;OUTPUT THE SYMBOLS (BLKTYP-2)\r
+       003330' 260740  003103'         PUSHJ   PP,OUTSET\r
+       003331' 000007  002717'         XWD     7,VOUT          ;OUTPUT TRANSFER VECTOR (..-7)\r
+                               IFN WFWSW,<PUSHJ PP,OUTSET      ;OUTPUT THE LVAR FIXUPS\r
+                                       XWD 13,OUTB12>\r
+       003332' 260740  003103'         PUSHJ   PP,OUTSET\r
+       003333' 000005  002712'         XWD     5,HOUT          ;OUTPUT HIGHEST RELOCATABLE (..-5)\r
+       003334' 260740  002731'         PUSHJ   PP,COUTD\r
+       003335' 607600  000010          TLNN    IO,MFLSW        ;IS IT PRGEND?\r
+       003336' 254000  007225'         JRST    FINIS           ;ALAS, FINISHED\r
+       003337' 201400  013527'         MOVEI   CS,SBUF         ;RESET SBUF POINTER\r
+       003340' 542400  013550'         HRRM    CS,SUBTTX       ;TO SUBTTL\r
+       003341' 402000  013734'         SETZM   PASS2I          ;CLEAR PASS2 VARIABLES\r
+       003342' 200000  014726'         MOVE    [XWD PASS2I,PASS2I+1]\r
+       003343' 251000  014076'         BLT     PASS2Z-1        ;BUT NOT ALL OF VARIABLES\r
+       003344' 254000  003356'         JRST    INZ             ;RE-INITIALIZE FOR NEXT PROG\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 63\r
+MACRO  10      24-APR-78 02:11         OUTPUT ROUTINES\r
+\r
+                               IFN WFWSW,<\r
+                               OUTB12: SKIPN ARG,FIXLNK        ;WERE THERE ANY??\r
+                                       POPJ PP,                ;JUST GO AWAY\r
+                               OUTB19: HRRZ SX,(ARG)   ;POINTER TO HEADER BLOCK NOW IN SX\r
+                                       HRRZ AC1,(SX)   ;NOW AC1 HAS POINTER TO CODE FIXUPS\r
+                                       JUMPE AC1,OUTB13        ;NONE THERE\r
+                               OUTB16: HLRZ AC0,(AC1)  ;GET LOCATION OFFSET\r
+                                       ADD AC0,2(SX)   ;ADD BASE LOCATION\r
+                                       SKIPN 1(AC1)    ;AND RIGHT HALF??\r
+                                       JRST OUTB14     ;NO\r
+                                       PUSH PP,AC0     ;SAVE FIXUP VALUE\r
+                                       SETZB AC0,RC\r
+                                       PUSHJ PP,OUTBWD ;OUTPUT A Z (SAYS RIGHT HALF CODE)\r
+                                       POP PP,AC0      ;GET VALUE BACK\r
+                                       HLRZ RC,1(AC1)  ;GET RELOC OF FIXUP CHAIN\r
+                                       LSH RC,1        ;GOES IN LEFT HALF\r
+                                       HRL AC0,1(AC1)  ;LOCATION OF CHAIN\r
+                                       PUSHJ PP,OUTBWD ;LEFT HALF LOCATION, RIGHT HALF VALUE\r
+                               OUTB14: SKIPN 2(AC1)    ;ANY LEFT HALF??\r
+                                       JRST OUTB15     ;NO, GO LOOK FOR NEXT BLOCK\r
+                                       PUSH PP,AC0     ;SAVE VALUE\r
+                                       MOVEI RC,0\r
+                                       MOVSI AC0,400000        ;INDICATE LEFT HALF\r
+                                       PUSHJ PP,OUTBWD\r
+                                       POP PP,AC0\r
+                                       HLRZ RC,2(AC1)  ;GET RELOC FOR LEFT HALF\r
+                                       LSH RC,1\r
+                                       HRL AC0,2(AC1)\r
+                                       PUSHJ PP,OUTBWD\r
+                               OUTB15: HRRZ AC1,(AC1)  ;NEXT LINK IN CHAIN\r
+                                       JUMPN AC1,OUTB16        ;IF NOT END, PROCESS\r
+                               OUTB13: HLRZ AC1,(SX)   ;POINTER TO SYMBOL TABLE FIXUP CHAIN\r
+                                       JUMPE AC1,OUTB17        ;CHACK FOR SOME THERE\r
+                               OUTB18: MOVE AC0,2(AC1) ;FLAGS\r
+                                       HRR AC0,2(SX)   ;VALUE IN RH\r
+                                       MOVEI RC,0      ;NO RELCO ON IT\r
+                                       PUSHJ PP,OUTBWD\r
+                                       MOVE AC0,1(AC1) ;THE SYMBOL NAME\r
+                                       PUSHJ PP,OUTBWD\r
+                                       HRRZ AC1,(AC1)  ;FOOLOW CHAIN\r
+                                       JUMPN AC1,OUTB18\r
+                               OUTB17: HRRZ ARG,-1(ARG)        ;DONE WITH THIS SYMBOL GET NEXT\r
+                                       JUMPN ARG,OUTB19\r
+                                       POPJ PP,        ;ALL DONE\r
+                               \r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 64\r
+MACRO  10      24-APR-78 02:11         OUTPUT ROUTINES\r
+\r
+                               \r
+                               OUTBWD: SKIPL COUTX     ;IF WE ARE AT THE START\r
+                                       JRST COUT       ;NO PUT OUT\r
+                                       PUSH PP,AC0     ;WE NEED TO PUT NEW RELOC AND VAR LENGTH\r
+                                       PUSH PP,RC      ;AS FIRST TWO WORDS\r
+                                       MOVE AC0,HIGH\r
+                                       MOVEI RC,1      ;IT IS RELOC\r
+                                       PUSHJ PP,COUT\r
+                                       MOVE AC0,LVARLC ;THE LENGTH\r
+                                       MOVEI RC,0\r
+                                       PUSHJ PP,COUT\r
+                                       POP PP,RC\r
+                                       POP PP,AC0\r
+                                       JRST COUT       ;NOW PUT OUT THE ONE WE WANTED TO\r
+                               >\r
+\r
+       003345' 603640  004000  RIMFIN: TLNE FR,R1BSW\r
+       003346' 260740  010447'         PUSHJ PP,R1BDMP\r
+       003347' 336340  014053'         SKIPN   C,VECTOR\r
+       003350' 205340  254200          MOVSI   C,(JRST 4,)\r
+       003351' 607340  777000          TLNN    C,777000\r
+       003352' 661340  254000          TLO     C,(JRST)\r
+       003353' 260740  010405'         PUSHJ   PP,PTPBIN\r
+       003354' 201340  000000          MOVEI   C,0\r
+       003355' 254000  010405'         JRST    PTPBIN\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 65\r
+MACRO  10      24-APR-78 02:11         PASS INITIALIZE\r
+\r
+                               SUBTTL  PASS INITIALIZE\r
+       003356' 350000  014004' INZ:    AOS     MODA\r
+       003357' 350000  014006'         AOS     MODO\r
+       003360' 402000  013214'         SETZM   SEQNO\r
+       003361' 402000  013211'         SETZM   TAG\r
+       003362' 541640  000010          HRRI    RX,^D8\r
+       003363' 201000  013477'         MOVEI   VARHD\r
+       003364' 202000  013500'         MOVEM   VARHDX\r
+       003365' 201000  013504'         MOVEI   LITHD\r
+       003366' 202000  013505'         MOVEM   LITHDX\r
+       003367' 260740  003526'         PUSHJ   PP,LITI\r
+       003370' 260740  003003'         PUSHJ   PP,STOWI\r
+       003371' 254000  001774'         JRST    OUTLI\r
+\r
+       003372' 220100  000005  RCPNTR: POINT   1,ARG,^L<RELF>-18       ;POINT 1,ARG,22\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 66\r
+MACRO  10      24-APR-78 02:11         PSEUDO-OP HANDLERS\r
+\r
+                               SUBTTL  PSEUDO-OP HANDLERS\r
+\r
+       003373' 260740  000236' TAPE0:  PUSHJ   PP,STOUTS       ;FINISH THIS LINE\r
+       003374' 254000  007447'         JRST    GOTEND          ;AND IGNORE THE REST OF THIS FILE\r
+\r
+       003375' 260740  004034' RADIX0: PUSHJ   PP,EVAL10       ;EVALUATE RADIX D10\r
+       003376' 307000  000012          CAIG    AC0,^D10        ;IF GREATER THAN 10\r
+       003377' 307000  000001          CAIG    AC0,1           ;OR LESS THAN 2,\r
+       003400' 664600  040000  ERRAX:  TROA    ER,ERRA         ;FLAG ERROR AND SKIP\r
+       003401' 540640  000000          HRR     RX,AC0          ;SET NEW RADIX\r
+       003402' 263740  000000          POPJ    PP,\r
+\r
+\r
+       003403' 621600  000001  XALL0:  TLZ     IO,IOSALL       ;TURN OFF MACRO SUPPRESS ALL\r
+       003404' 321640  000455' IOSET:  JUMP1   POPOUT          ;NOSYM (IONSYM), XALL (IOPALL), XLIST (IOPROG)\r
+       003405' 554200  000000          HLRZ    SX,AC0          ;STORE FLAGS\r
+       003406' 260740  000236'         PUSHJ   PP,STOUTS       ;POLISH OFF LINE\r
+       003407' 661604  000000          TLO     IO,0(SX)        ;NOW SUPRESS PRINTING\r
+       003410' 263740  000000          POPJ    PP,\r
+\r
+       003411' 630600  000000  IORSET: TDZ     IO,AC0          ;RESET  FLAG IOPALL/IOPROG\r
+       003412' 603000  002000          TLNE    AC0,IONCRF      ;RESTORING CREFFING?\r
+       003413' 621600  000040          TLZ     IO,DEFCRS       ;YES, CLEAR ANY WAITING DEFINING OCCURENCES\r
+       003414' 263740  000000          POPJ    PP,\r
+\r
+       003415' 260740  004235' BLOCK0: PUSHJ   PP,HIGHQ\r
+       003416' 260740  001077'         PUSHJ   PP,EVALEX       ;EVALUATE\r
+       003417' 622440  777777          TRZE    RC,-1           ;EXTERNAL OR RELOCATABLE?\r
+       003420' 260740  004041'         PUSHJ   PP,QEXT         ;YES, DETERMINE TYPE\r
+       003421' 272000  014000'         ADDM    AC0,LOCO        ;UPDATE ASSEMBLY LOCATION\r
+       003422' 250000  013777' BLOCK1: EXCH    AC0,LOCA        ;SAVE START OF BLOCK\r
+       003423' 272000  013777'         ADDM    AC0,LOCA        ;UPDATE OUTPUT LOCATION\r
+       003424' 526000  013776' BLOCK2: HRLOM   AC0,LOCBLK\r
+       003425' 325640  000455'         JUMP2   POPOUT\r
+       003426' 602600  002000          TRNE    ER,ERRU\r
+       003427' 660600  001000          TRO     ER,ERRV\r
+       003430' 263740  000000          POPJ    PP,\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 67\r
+MACRO  10      24-APR-78 02:11         PSEUDO-OP HANDLERS\r
+\r
+\r
+       003431' 660600  000001  PRNTX0: TRO     ER,TTYSW        ;SET OUTPUT TO TTY\r
+       003432' 325640  003434'         JUMP2   PRNTX2          ;PASS1?\r
+       003433' 674600  013512'         TDOA    ER,OUTSW        ;YES,OUTPUT TO LSTDEV ALSO\r
+       003434' 420600  013512' PRNTX2: ANDCM   ER,OUTSW        ;NO,DON'T OUTPUT TO TTY IF IT IS LSTDEV\r
+       003435' 260740  004543'         PUSHJ   PP,BYPASS       ;GET FIRST CHAR.\r
+       003436' 665600  000004          TLOA    IO,IORPTC       ;REPEAT IT AND SKIP\r
+       003437' 260740  010572' PRNTX4: PUSHJ   PP,PRINT        ;PRINT THE CHAR.\r
+       003440' 260740  001415'         PUSHJ   PP,CHARAC       ;GET ASCII CHAR.\r
+       003441' 307340  000015          CAIG    C,CR            ;IF GREATER THAN CR\r
+       003442' 307340  000011          CAIG    C,HT            ;OR LESS THAN LF\r
+       003443' 254000  003437'         JRST    PRNTX4          ;THEN CONTINUE\r
+       003444' 260740  010600'         PUSHJ   PP,OUTCR        ;OUTPUT A CRLF\r
+       003445' 624600  000003          TRZA    ER,TTYSW!LPTSW  ;TURN OF OUTPUT\r
+       003446' 350017  000000  CPOPJ1: AOS     (PP)            ;USEFUL TAG HAS TO GO SOMEWHERE\r
+       003447' 263740  000000  CPOPJ:  POPJ    PP,             ;EXIT\r
+\r
+       003450' 260740  001363' REMAR0: PUSHJ   PP,GETCHR       ;GET A CHARACTER\r
+       003451' 302340  000033          CAIE    C,EOL\r
+       003452' 254000  003450'         JRST    REMAR0\r
+       003453' 263740  000000          POPJ    PP,             ;EXIT\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 68\r
+MACRO  10      24-APR-78 02:11         PSEUDO-OP HANDLERS\r
+\r
+       003454' 260740  003422' LIT0:   PUSHJ   PP,BLOCK1\r
+       003455' 260740  000236'         PUSHJ   PP,STOUTS\r
+       003456' 325640  003466' LIT1:   JUMP2   LIT20\r
+\r
+                               ;ON PASS ONE, WE JUST STEP THE LOCATION COUNTER AND CLEAR\r
+\r
+       003457' 200000  013506'         MOVE    AC0,LITCNT\r
+       003460' 200200  013505'         MOVE    SX,LITHDX\r
+       003461' 506004  000000          HRLM    AC0,0(SX)\r
+       003462' 200300  013777'         MOVE    V,LOCA\r
+       003463' 504300  014004'         HRL     V,MODA\r
+       003464' 202304  777777          MOVEM   V,-1(SX)\r
+       003465' 254000  003522'         JRST    LIT24\r
+\r
+       003466' 261740  013777' LIT20:  PUSH    PP,LOCA\r
+       003467' 261740  014000'         PUSH    PP,LOCO\r
+       003470' 336000  013507'         SKIPN   LITNUM\r
+       003471' 254000  003476'         JRST    LIT20A\r
+       003472' 200200  013505'         MOVE    SX,LITHDX\r
+       003473' 550004  777777          HRRZ    AC0,-1(SX)\r
+       003474' 312000  013777'         CAME    AC0,LOCA\r
+       003475' 660600  000100          TRO     ER,ERRP\r
+       003476' 200200  013501' LIT20A: MOVE    SX,LITAB\r
+       003477' 375000  013507' LIT21:  SOSGE   LITNUM\r
+       003500' 254000  003511'         JRST    LIT22\r
+       003501' 200004  777776          MOVE    AC0,-2(SX)      ;WFW\r
+       003502' 200444  777777          MOVE    RC,-1(SX)       ;WFW\r
+       003503' 200204  000000          MOVE SX,(SX)    ;WFW POINTER TO THE NEXT LIT\r
+       003504' 260740  002763'         PUSHJ   PP,STOW20       ;STOW CODE\r
+       003505' 201340  000012          MOVEI   C,12            ;SET LINE FEED\r
+       003506' 136340  013453'         IDPB    C,LBUFP\r
+       003507' 260740  001556'         PUSHJ   PP,OUTLIN       ;OUTPUT THE LINE\r
+       003510' 254000  003477'         JRST    LIT21\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 69\r
+MACRO  10      24-APR-78 02:11         PSEUDO-OP HANDLERS\r
+\r
+       003511' 550100  014000' LIT22:  HRRZ    AC2,LOCO\r
+       003512' 262740  014000'         POP     PP,LOCO\r
+       003513' 262740  013777'         POP     PP,LOCA\r
+       003514' 200200  013505'         MOVE    SX,LITHDX\r
+       003515' 554004  000000          HLRZ    AC0,0(SX)\r
+       003516' 274100  014000'         SUB AC2,LOCO    ;COMPUTE LENGTH USED\r
+       003517' 315000  000002          CAMGE AC0,AC2   ;USE LARGER\r
+       003520' 200000  000002          MOVE AC0,AC2\r
+       003521' 270100  014000'         ADD AC2,LOCO\r
+       003522' 272000  013777' LIT24:  ADDM    AC0,LOCA\r
+       003523' 272000  014000'         ADDM    AC0,LOCO\r
+       003524' 260740  003533'         PUSHJ   PP,GETTOP\r
+       003525' 542200  013505'         HRRM    SX,LITHDX\r
+       003526' 402000  013506' LITI:   SETZM   LITCNT\r
+       003527' 402000  013507'         SETZM   LITNUM\r
+       003530' 201000  013501'         MOVEI   LITAB\r
+       003531' 202000  013502'         MOVEM   LITABX\r
+       003532' 254000  004235'         JRST    HIGHQ\r
+\r
+       003533' 550040  000004  GETTOP: HRRZ    AC1,SX          ;VARHD\r
+       003534' 550204  000000          HRRZ    SX,0(SX)\r
+       003535' 326200  000455'         JUMPN   SX,POPOUT\r
+       003536' 201200  000003          MOVEI   SX,3    ;WFW\r
+       003537' 273200  013377'         ADDB    SX,FREE\r
+       003540' 311200  013552'         CAML    SX,SYMBOL\r
+       003541' 260740  010277'         PUSHJ   PP,XCEED\r
+       003542' 275200  000001          SUBI    SX,1            ;MAKE SX POINT TO LINK\r
+       003543' 402004  000000          SETZM   0(SX)           ;CLEAR FORWARD LINK\r
+       003544' 542201  000000          HRRM    SX,0(AC1)       ;STORE ADDRESS IN LAST LINK\r
+       003545' 263740  000000          POPJ    PP,\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 70\r
+MACRO  10      24-APR-78 02:11         PSEUDO-OP HANDLERS\r
+\r
+       003546' 260740  003422' VAR0:   PUSHJ   PP,BLOCK1       ;PRINT LOCATION\r
+       003547' 260740  003551'         PUSHJ PP,VARA\r
+       003550' 254000  000236'         JRST STOUTS\r
+\r
+       003551' 200200  013500' VARA:   MOVE    SX,VARHDX\r
+       003552' 200000  013777'         MOVE AC0,LOCA   ;GET LOCATION FOR CHECK\r
+       003553' 321640  003556'         JUMP1 VARB      ;DO NOT CHECK START ON PASS 1\r
+       003554' 312004  777777          CAME AC0,-1(SX) ;CHECK START OF VAR AREA\r
+       003555' 660600  000100          TRO ER,ERRP     ;AND GIVE ERROR\r
+       003556' 202004  777777  VARB:   MOVEM AC0,-1(SX)        ;SAVE START FOR PASS 2\r
+       003557' 554004  000000          HLRZ    AC0,0(SX)\r
+       003560' 272000  013777'         ADDM    AC0,LOCA\r
+       003561' 272000  014000'         ADDM    AC0,LOCO\r
+       003562' 260740  003533'         PUSHJ   PP,GETTOP\r
+       003563' 542200  013500'         HRRM    SX,VARHDX\r
+       003564' 325640  000455'         JUMP2   POPOUT\r
+\r
+       003565' 260740  003111'         PUSHJ   PP,LOOKUP       ;SET FOR TABLE SCAN\r
+                               IFN WFWSW,<TRNN ARG,EXTF        ;IN CASE LVAR HAS BEEN THROUGH>\r
+       003566' 626240  000100          TRZN    ARG,VARF\r
+       003567' 263740  000000          POPJ    PP,             ;NO, EXIT\r
+       003570' 620240  002000          TRZ ARG,UNDF            ;TURN OFF FLAG NOW\r
+                               IFN WFWSW,<MOVSI AC0,1(V)       ;NUMBER TO ADD TO>\r
+       003571' 205000  000001  IFE WFWSW,<MOVSI AC0,1          ;ADD 1>\r
+       003572' 272001  000000          ADDM    AC0,0(AC1)      ;UPDATE COUNT\r
+                               IFN WFWSW,<\r
+                               VARA1:  ADDI V,1                ;GET LENGTH OF DESIRED BLOCK\r
+                                       ADDM V,LOCO\r
+                                       EXCH V,LOCA\r
+                                       ADDM V,LOCA\r
+                                       HRL ARG,V       ;GET STARTING LOCATION AND UPDAT PCS\r
+                               >\r
+\r
+       003573' 434240  014004'         IOR     ARG,MODA        ;SET TO ASSEMBLY MODE\r
+       003574' 504240  013777' IFE WFWSW,<HRL  ARG,LOCA>\r
+       003575' 206244  000000          MOVSM   ARG,0(SX)       ;UPDATE 2ND WRD OF SYM TAB ENTRY\r
+       003576' 350000  013777' IFE WFWSW,<AOS  LOCA\r
+       003577' 350000  014000'         AOS     LOCO>\r
+       003600' 254000  004235'         JRST    HIGHQ1\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 71\r
+MACRO  10      24-APR-78 02:11         PSEUDO-OP HANDLERS\r
+\r
+       003601' 261740  000000  IF:     PUSH    PP,AC0          ;SAVE AC0\r
+       003602' 261740  000014          PUSH    PP,IO\r
+       003603' 260740  004046'         PUSHJ   PP,EVALXQ       ;EVALUATE AND TEST EXTERNAL\r
+       003604' 262740  000001          POP     PP,AC1\r
+       003605' 321040  003607'         JUMPL   AC1,IFPOP\r
+       003606' 621600  400000          TLZ     IO,FLDSW\r
+       003607' 262740  000001  IFPOP:  POP     PP,AC1          ;RETRIEVE SKIP INSTRUCTION\r
+       003610' 661600  000004  IFSET:  TLO IO,IORPTC           ;REPEAT CHARACTER\r
+       003611' 256000  000001  IFXCT:  XCT     AC1             ;EXECUTE INSTRUCTION\r
+       003612' 634000  000000          TDZA    AC0,AC0         ;FALSE\r
+       003613' 201000  000001          MOVEI   AC0,1           ;TRUE\r
+       003614' 325600  005266' IFEXIT: JUMPOC REPEA1           ;BRANCH IF IN OP-CODE FIELD\r
+       003615' 260740  001363' IFEX1:  PUSHJ PP,GETCHR         ;SEARCH FOR "<"\r
+       003616' 306340  000033          CAIN C,EOL              ;ERROR IF END OF LINE\r
+       003617' 254000  003400'         JRST ERRAX\r
+       003620' 302340  000034          CAIE C,34\r
+       003621' 254000  003615'         JRST IFEX1\r
+       003622' 322000  003753'         JUMPE AC0,IFEX2         ;TEST FOR 0\r
+       003623' 661600  000004          TLO IO,IORPTC           ;NO, PROCESS AS CELL\r
+       003624' 260740  000363'         PUSHJ PP,CELL\r
+       003625' 402000  013747'         SETZM   INCND           ;NOT ANY MORE\r
+       003626' 254000  002751'         JRST STOW               ;STOW CODE AND EXIT\r
+\r
+       003627' 541000  400000  IFPASS: HRRI    AC0,P1          ;MAKE IT TLNX IO,P1\r
+       003630' 200040  000000          MOVE    AC1,AC0         ;PLACE IT IN AC1\r
+       003631' 254000  003610'         JRST    IFSET           ;EXECUTE INSTRUCTION\r
+\r
+       003632' 520040  000000  IFB0:   HLLO    AC1,AC0         ;FORM AND STORE TEST INSTRUCTION\r
+       003633' 260740  001445' IFB1:   PUSHJ   PP,CHARL        ;GET FIRST NON-BLANK\r
+       003634' 302340  000040          CAIE    C," "\r
+       003635' 306340  000011          CAIN    C,"     "\r
+       003636' 254000  003633'         JRST    IFB1            ;SKIP BLANKS AND TABS\r
+       003637' 307340  000015          CAIG    C,CR            ;CHECK FOR CARRET AS DELIM.\r
+       003640' 305340  000012          CAIGE   C,LF\r
+       003641' 334200  014101'         SKIPA   SX,SEQNO2\r
+       003642' 254000  003400'         JRST    ERRAX\r
+       003643' 202200  013764'         MOVEM   SX,CNDSEQ\r
+       003644' 200200  014100'         MOVE    SX,PAGENO\r
+       003645' 202200  013763'         MOVEM   SX,CNDPG\r
+       003646' 476000  013747'         SETOM   INCND           ;SAVE INFO. FOR PASS 1 ERRORS\r
+       003647' 306340  000074          CAIN    C,"<"           ;LEFT BRACKET?\r
+       003650' 403340  000011          SETZB   C,RC            ;YES, PREPARE FOR OLD FORMAT\r
+       003651' 334200  000007          SKIPA   SX,C            ;SAVE FOR COMPARISON\r
+       003652' 660000  000001  IFB3:   TRO     AC0,1           ;SET FLAG\r
+       003653' 260740  001445' IFB2:   PUSHJ   PP,CHARL        ;GET ASCII CHARACTER AND LIST\r
+       003654' 316340  000004          CAMN    C,SX            ;TEST FOR DELIMITER\r
+       003655' 254000  003611'         JRST    IFXCT           ;FOUND\r
+       003656' 302340  000040          CAIE    C," "           ;BLANK?\r
+       003657' 306340  000011          CAIN    C,"     "       ;OR TAB?\r
+       003660' 254000  003653'         JRST    IFB2            ;YES\r
+       003661' 326200  003652'         JUMPN   SX,IFB3         ;JUMP IF NEW FORMAT\r
+       003662' 306340  000074          CAIN    C,"<"           ;<?\r
+       003663' 344440  003653'         AOJA    RC,IFB2         ;YES, INCREMENT COUNT\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 71-1\r
+MACRO  10      24-APR-78 02:11         PSEUDO-OP HANDLERS\r
+\r
+       003664' 306340  000076          CAIN    C,">"           ;>?\r
+       003665' 361440  003611'         SOJL    RC,IFXCT        ;YES, DECREMENT AND EXIT IF DONE\r
+       003666' 254000  003652'         JRST    IFB3            ;GET NEXT CHARACTER\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 72\r
+MACRO  10      24-APR-78 02:11         PSEUDO-OP HANDLERS\r
+\r
+       003667' 541000  002000  IFDEF0: HRRI    AC0,UNDF        ;MAKE IT TLNX ARG,UNDF\r
+       003670' 261740  000000          PUSH    PP,AC0          ;STACK IT\r
+       003671' 260740  001043'         PUSHJ   PP,GETSYM       ;TAKES SKIP RETURN IF SYM NAME IS LEGAL\r
+       003672' 664600  040000          TROA    ER,ERRA         ;ILLEGAL!\r
+       003673' 260740  012713'         PUSHJ   PP,SEARCH\r
+                                       JRST    [PUSHJ  PP,OPTSCH\r
+                                               TLO     ARG,UNDF\r
+       003674' 254000  014727'                 JRST    .+1]\r
+       003675' 260740  012620'         PUSHJ PP,SSRCH3         ;EMIT TO CREF ANYWAY\r
+       003676' 254000  003607'         JRST    IFPOP           ;POP AND EXECUTE INSTRUCTION\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 73\r
+MACRO  10      24-APR-78 02:11         PSEUDO-OP HANDLERS\r
+\r
+       003677' 557000  000000  IFIDN0: HLRZS   AC0\r
+       003700' 201300  000047          MOVEI   V,2*.IFBLK-1\r
+       003701' 402006  013400'         SETZM   IFBLK(V)        ;CLEAR COMPARISON BLOCK\r
+       003702' 365300  003701'         SOJGE   V,.-1\r
+       003703' 402000  014054'         SETZM   .TEMP           ;CLEAR STORED DELIMETER\r
+       003704' 201440  013400'         MOVEI   RC,IFBLK        ;SET FOR FIRST BLOCK\r
+       003705' 260740  003717'         PUSHJ   PP,IFCL         ;GET FIRST STRING\r
+       003706' 201440  013424'         MOVEI   RC,IFBLKA\r
+       003707' 260740  003717'         PUSHJ   PP,IFCL         ;GET SECOND STRING\r
+       003710' 201300  000023          MOVEI   V,.IFBLK-1\r
+       003711' 200206  013400'         MOVE    SX,IFBLK(V)     ;GET WORD FROM FIRST STRING\r
+       003712' 316206  013424'         CAMN    SX,IFBLKA(V)    ;COMPARE WITH SECOND STRING\r
+       003713' 365300  003711'         SOJGE   V,.-2           ;EQUAL, TRY NEXT WORD\r
+       003714' 321300  003614'         JUMPL   V,IFEXIT        ;DID WE FINISH STRING\r
+       003715' 431000  000001          XORI    AC0,1           ;NO, TOGGLE REQUEST\r
+       003716' 254000  003614'         JRST    IFEXIT  ;DO NOT TURN ON IORPTC WFW\r
+\r
+       003717' 260740  001415' IFCL:   PUSHJ   PP,CHARAC       ;GET AND LIST CHARACTER\r
+       003720' 302340  000040          CAIE    C," "           ;SKIP SPACES\r
+       003721' 307340  000015          CAIG    C,CR            ;ALSO SKIP CR-LF\r
+       003722' 305340  000011          CAIGE   C,HT            ;AND TAB\r
+       003723' 254000  003725'         JRST    .+2             ;NOT ONE OF THEM\r
+       003724' 254000  003717'         JRST    IFCL            ;SO LONG COMPARISONS WILL WORK\r
+                               ;*** A CROCK SO THAT IFIDN <X>,<X>,<INST.> WILL WORK    ***\r
+       003725' 302340  000054          CAIE    C,","           ;IS IT A COMMA?\r
+       003726' 254000  003731'         JRST    .+3             ;NO\r
+       003727' 336000  014054'         SKIPN   .TEMP           ;YES, WAS PREVIOUS FIELD OLD METHOD?\r
+       003730' 254000  003717'         JRST    IFCL            ;YES, IGNORE COMMA AND SPACES\r
+                               ;       ***\r
+       003731' 306340  000074          CAIN    C,"<"           ;WAS IT LEFT BRACKET?\r
+       003732' 474340  000000          SETO    C,              ;SIGNAL OLD METHOD, LOOK FOR RIGHT BRACKET\r
+       003733' 202340  014054'         MOVEM   C,.TEMP         ;STORE TERMINATOR FOR COMPARISON\r
+       003734' 201200  000143          MOVEI   SX,5*.IFBLK-1   ;LIMIT SEARCH\r
+       003735' 505440  440700          HRLI    RC,(POINT 7,,)  ;SET UP BYTE IN RC\r
+       003736' 260740  001415' IFCLR:  PUSHJ   PP,CHARAC\r
+       003737' 333000  014054'         SKIPLE  .TEMP           ;NEW METHOD?\r
+       003740' 254000  003745'         JRST    IFCLR1          ;YES, IGNORE ANGLE BRACKET COUNTING\r
+       003741' 306340  000074          CAIN    C,"<"           ;ANOTHER LEFT ANGLE?\r
+       003742' 370000  014054'         SOS     .TEMP           ;YES, KEEP COUNT\r
+       003743' 306340  000076          CAIN    C,">"           ;CLOSING ANGLE\r
+       003744' 355000  014054'         AOSGE   .TEMP           ;MATCHING COUNT?\r
+       003745' 316340  014054' IFCLR1: CAMN    C,.TEMP         ;TEST FOR DELIMITER\r
+       003746' 263740  000000          POPJ    PP,             ;EXIT ON RIGHT DELIMITER\r
+       003747' 367200  003751'         SOJG    SX,.+2          ;ANY ROOM IN COMPARISON BLOCK?\r
+       003750' 664600  040000          TROA    ER,ERRA         ;NO, FLAG ERROR BUT KEEP ON GOING\r
+       003751' 136340  000011          IDPB    C,RC            ;DEPOSIT BYTE\r
+       003752' 254000  003736'         JRST    IFCLR\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 74\r
+MACRO  10      24-APR-78 02:11         PSEUDO-OP HANDLERS\r
+\r
+\r
+       003753' 260740  001363' IFEX2:  PUSHJ   PP,GETCHR\r
+       003754' 306340  000033          CAIN    C,EOL           ;EXIT WITH ERROR IF END OF LINE\r
+       003755' 254000  003400'         JRST    ERRAX\r
+       003756' 306340  000034          CAIN    C,34            ;"<"?\r
+       003757' 344000  003753'         AOJA    AC0,IFEX2       ;YES, INCREMENT COUNT\r
+       003760' 302340  000036          CAIE    C,36            ;">"?\r
+       003761' 254000  003753'         JRST    IFEX2           ;NO, TRY AGAIN\r
+       003762' 365000  003753'         SOJGE   AC0,IFEX2       ;YES, TEST FOR MATCH\r
+       003763' 260740  004543'         PUSHJ   PP,BYPASS       ;YES, MOVE TO NEXT DELIMITER\r
+       003764' 402000  013747'         SETZM   INCND           ;OUT OF CONDITIONAL NOW\r
+       003765' 344000  002750'         AOJA    AC0,STOWZ1      ;STOW ZERO\r
+\r
+\r
+       003766' 512000  013743' INTER0: HLLZM   AC0,INTENT      ;AC0 CONTAINS INTF/ENTF FLAGS\r
+\r
+       003767' 260740  001043' INTER1: PUSHJ   PP,GETSYM       ;GET A SYMBOL\r
+       003770' 254000  003777'         JRST    INTER3          ;INVALID, SKIP\r
+       003771' 260740  012610'         PUSHJ   PP,SSRCH        ;SEARCH THE TABLE\r
+       003772' 205240  402400          MOVSI   ARG,SYMF!INTF!UNDF\r
+       003773' 603240  002000          TLNE    ARG,UNDF        ;UNDEFINED?\r
+       003774' 660600  040000          TRO     ER,ERRA         ;YES, FLAG ERROR\r
+                               IFN WFWSW,<TLNN ARG,VARF        ;LET HIM MAKE INTERNAL EVEN IF EXTF ON>\r
+       003775' 607240  041000          TLNN    ARG,SYNF!EXTF\r
+       003776' 674240  013743'         TDOA    ARG,INTENT                      ;SET APPROPRIATE FLAGS\r
+       003777' 664600  040000  INTER3: TROA    ER,ERRA         ;FLAG ARG EROR AND SKIP\r
+       004000' 260740  013034'         PUSHJ   PP,INSERQ       ;INSERT/UPDATE\r
+       004001' 321400  003767'         JUMPCM  INTER1\r
+       004002' 402000  013742'         SETZM EXTPNT    ;JUST IN CASE, SO AS NOT TO CONFUSE WORLD\r
+       004003' 263740  000000          POPJ    PP,             ;NO, EXIT\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 75\r
+MACRO  10      24-APR-78 02:11         PSEUDO-OP HANDLERS\r
+\r
+       004004' 260740  001043' EXTER0: PUSHJ   PP,GETSYM       ;GET A SYMBOL\r
+       004005' 254000  004030'         JRST    EXTER4          ;INVALID, ERROR\r
+       004006' 661600  000040  EXTER1: TLO     IO,DEFCRS       ;FLAG THIS AS A DEFINITION\r
+       004007' 260740  012610'         PUSHJ   PP,SSRCH        ;OK, SEARCH SYMBOL TABLE\r
+       004010' 254000  004015'         JRST    EXTER2          ;NOT THERE, INSERT IT\r
+       004011' 607240  003100          TLNN    ARG,EXTF!VARF!UNDF\r
+       004012' 664600  000040          TROA    ER,ERRE         ;FLAG ERROR AND BYPASS\r
+       004013' 603240  001000          TLNE    ARG,EXTF        ;VALID, ALREADY DEFINED?\r
+                                       JRST    [JUMP1  EXTER3  ;YES, BYPASS\r
+                                               TLZN ARG,UNDF   ;SKIP IF UNDEFINED ALSO\r
+                                               JRST    EXTER3  ;CONTINUE\r
+                                               ANDM ARG,(SX)   ;CLEAR UNDF ON PASS 2\r
+       004014' 254000  014732'                 JRST    EXTER2] ;SET UP EXTERNAL NOW\r
+       004015' 201300  000002  EXTER2: MOVEI V,2               ;NO, GET 2 CELLS FROM THE TREE\r
+       004016' 273300  013377'         ADDB V,FREE\r
+       004017' 311300  013552'         CAML    V,SYMBOL        ;HAVE WE RUN OUT OF CORE?\r
+       004020' 260740  010276'         PUSHJ   PP,XCEEDS       ;YES, TRY TO BORROW SOME MORE\r
+       004021' 275300  000002          SUBI    V,2             ;GET RIGHT CELL FOR POINTER\r
+       004022' 403446  000000          SETZB   RC,0(V)         ;ALL SET, ZERO VALUES\r
+       004023' 205240  401000          MOVSI   ARG,SYMF!EXTF\r
+       004024' 260740  013036'         PUSHJ   PP,INSERT       ;INSERT/UPDATE IT\r
+       004025' 205240  004000          MOVSI   ARG,PNTF\r
+       004026' 436244  000000          IORM    ARG,0(SX)\r
+       004027' 334244  777777          SKIPA ARG,-1(SX)                ;GET THE SIXBIT FOR THE NAME\r
+       004030' 664600  040000  EXTER4: TROA ER,ERRA    ;FLAG AS ERROR\r
+       004031' 202246  000001          MOVEM ARG,1(V)          ;AND STORE THAT IN CASE SYMBOL TABLE MOVES\r
+       004032' 321400  004004' EXTER3: JUMPCM  EXTER0\r
+       004033' 263740  000000          POPJ    PP,             ;NO, EXIT\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 76\r
+MACRO  10      24-APR-78 02:11         PSEUDO-OP HANDLERS\r
+\r
+       004034' 261740  000015  EVAL10: PUSH    PP,RX\r
+       004035' 541640  000012          HRRI    RX,^D10\r
+       004036' 260740  001077'         PUSHJ   PP,EVALEX       ;EVALUATE\r
+       004037' 262740  000015          POP     PP,RX           ;RESET RADIX\r
+       004040' 322440  000455'         JUMPE   RC,POPOUT       ;EXIT IF ABSOLUTE\r
+\r
+       004041' 332000  013742' QEXT:   SKIPE   EXTPNT          ;ANY POSSIBILITIES?\r
+       004042' 664600  000040          TROA    ER,ERRE         ;YES, FLAG EXTERNAL ERROR\r
+       004043' 660600  004000          TRO     ER,ERRR         ;NO, FLAG RELOCATION ERROR\r
+       004044' 513000  000011          HLLZS   RC              ;CLEAR RELOCATION/EXTERNAL\r
+       004045' 263740  000000          POPJ    PP,\r
+\r
+       004046' 260740  001077' EVALXQ: PUSHJ   PP,EVALEX       ;EVALUATE EXPRESSION\r
+       004047' 627440  777776          TLZN RC,-2              ;LEFT HALF EXTERNAL\r
+       004050' 622440  777776          TRZE    RC,-2           ;WAS AN EXTERNAL FOUND?\r
+       004051' 660600  000040          TRO     ER,ERRE         ;YES, FLAG ERROR\r
+       004052' 263740  000000          POPJ    PP,             ;RETURN\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 77\r
+MACRO  10      24-APR-78 02:11         PSEUDO-OP HANDLERS\r
+\r
+       004053' 260740  001043' OPDEF0: PUSHJ   PP,GETSYM       ;GET THE FIRST SYMBOL\r
+       004054' 263740  000000          POPJ    PP,             ;ERROR IF INVALID SYMBOL\r
+       004055' 302340  000073          CAIE    C,73            ;"["?\r
+       004056' 254000  003400'         JRST    ERRAX           ;NO, ERROR\r
+       004057' 261740  000000          PUSH    PP,AC0          ;STACK MNEMONIC\r
+       004060' 350000  013773'         AOS     LITLVL          ;SHORT OUT LOCATION INCREMENT\r
+       004061' 260740  000125'         PUSHJ   PP,STMNT        ;EVALUATE STATEMENT\r
+       004062' 335000  013555'         SKIPGE  STPX            ;CODE STORED?\r
+       004063' 664600  040000          TROA    ER,ERRA         ;NO,"A" ERROR\r
+       004064' 260740  002776'         PUSHJ   PP,DSTOW        ;GET AND DECODE VALUE\r
+       004065' 370000  013773'         SOS     LITLVL\r
+       004066' 250017  000000          EXCH    AC0,0(PP)       ;EXCHANGE VALUE FOR MNEMONIC\r
+       004067' 261740  000011          PUSH    PP,RC           ;STACK RELOCATION\r
+       004070' 661600  000040          TLO     IO,DEFCRS       ;SAY WE ARE DEFINING IT\r
+       004071' 260740  012573'         PUSHJ   PP,MSRCH        ;SEARCH SYMBOL TABLE\r
+       004072' 205240  010000          MOVSI   ARG,OPDF        ;NOT FOUND\r
+       004073' 262740  000011          POP     PP,RC           ;RESTORE VALUES\r
+       004074' 262740  000006          POP     PP,V\r
+       004075' 603240  060000          TLNE    ARG,SYNF!MACF\r
+       004076' 660600  040000          TRO     ER,ERRA         ;YES "A" ERROR\r
+       004077' 606600  040000          TRNN    ER,ERRA         ;ERROR?\r
+       004100' 260740  013036'         PUSHJ   PP,INSERT       ;NO, INSERT/UPDATE\r
+       004101' 621600  000040          TLZ IO,DEFCRS           ;JUST IN CASE\r
+       004102' 260740  004543'         PUSHJ   PP,BYPASS\r
+       004103' 254000  003003'         JRST    STOWI           ;BE SURE STOW IS RESET\r
+\r
+\r
+       004104' 200000  014000' DEPHA0: MOVE    AC0,LOCO\r
+       004105' 334440  014006'         SKIPA   RC,MODO         ;SET TO OUTPUT VALUES AND SKIP\r
+       004106' 260740  004046' PHASE0: PUSHJ   PP,EVALXQ       ;EVALUATE AND CHECK FOR EXTERNAL\r
+       004107' 202000  013777'         MOVEM   AC0,LOCA        ;SET ASSEMBLY LOCATION COUNTER\r
+       004110' 202440  014004'         MOVEM   RC,MODA\r
+       004111' 254000  003424'         JRST    BLOCK2\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 78\r
+MACRO  10      24-APR-78 02:11         PSEUDO-OP HANDLERS\r
+\r
+       004112' 321600  003400' ASSIGN: JUMPAD  ERRAX           ;NO, ERROR\r
+       004113' 260740  004126'         PUSHJ   PP,ASSIG1\r
+       004114' 603600  000001          TLNE    IO,IOSALL       ;SUPPRESS ALL?\r
+       004115' 326540  003447'         JUMPN   MRP,CPOPJ       ;IF IN MACRO\r
+       004116' 202440  013775' ASSIG7: MOVEM   RC,ASGBLK\r
+       004117' 602440  777776          TRNE    RC,-2           ;EXTERNAL\r
+       004120' 513000  013775'         HLLZS   ASGBLK          ;YES,CLEAR RELOCATION\r
+       004121' 603440  000001          TLNE    RC,1            ;LEFT HALF NOT RELOC?\r
+       004122' 603440  777776          TLNE    RC,-2           ;...\r
+       004123' 563000  013775'         HRROS   ASGBLK          ;YES, SET FLAG\r
+       004124' 202300  013776'         MOVEM   V,LOCBLK\r
+       004125' 263740  000000          POPJ    PP,\r
+\r
+       004126' 261740  000000  ASSIG1: PUSH    PP,AC0          ;SAVE SYMBOL\r
+       004127' 403000  013742'         SETZB AC0,EXTPNT        ;SPECIAL CHECK FOR == WFW\r
+       004130' 260740  006531'         PUSHJ PP,PEEK           ;IS THE NEXT ON =\r
+       004131' 302340  000075          CAIE    C,"="\r
+       004132' 254000  004136'         JRST    ASSIG5\r
+       004133' 661000  100000          TLO     AC0,NOOUTF      ;YES, NOT OUT TO DDT WFW\r
+       004134' 260740  001363'         PUSHJ   PP,GETCHR       ;PROCESS THE CHAR.\r
+       004135' 260740  006531'         PUSHJ   PP,PEEK         ;CHECK FOR ==: DMN\r
+       004136' 302340  000072  ASSIG5: CAIE    C,":"           ;IS IT\r
+       004137' 254000  004142'         JRST    ASSIG6          ;NO\r
+       004140' 661000  000400          TLO     AC0,INTF        ;MAKE INTERNAL\r
+       004141' 260740  001363'         PUSHJ   PP,GETCHR       ;REPEAT IT\r
+       004142' 202000  014103' ASSIG6: MOVEM AC0,HDAS          ;STORE THESE BITS WFW\r
+       004143' 260740  001066'         PUSHJ   PP,EVALCM       ;EVALUATE EXPRESSION\r
+       004144' 250017  000000          EXCH    AC0,0(PP)       ;SWAP VALUE FOR SYMBOL\r
+       004145' 261740  000011          PUSH    PP,RC\r
+       004146' 606440  777776          TRNN RC,-2              ;CHECK EXTERNAL AGREEMENT\r
+       004147' 254000  004154'         JRST ASSIG2\r
+       004150' 553000  000011          HRRZS RC\r
+       004151' 550240  013742'         HRRZ ARG,EXTPNT\r
+       004152' 312440  000005          CAME RC,ARG\r
+       004153' 260740  004041'         PUSHJ   PP,QEXT         ;EXTERNAL OR RELOCATION ERROR\r
+       004154' 554457  000000  ASSIG2: HLRZ RC,(PP)\r
+       004155' 606440  777776          TRNN RC,-2\r
+       004156' 254000  004162'         JRST ASSIG3\r
+       004157' 554240  013742'         HLRZ ARG,EXTPNT\r
+       004160' 312440  000005          CAME RC,ARG\r
+       004161' 260740  004041'         PUSHJ   PP,QEXT\r
+       004162' 661600  000040  ASSIG3: TLO IO,DEFCRS\r
+       004163' 260740  012610'         PUSHJ   PP,SSRCH\r
+       004164' 205240  400000          MOVSI   ARG,SYMF\r
+       004165' 434240  014103'         IOR ARG,HDAS    ;WFW\r
+       004166' 603240  002000          TLNE    ARG,UNDF        ;WAS IT UNDEFINED\r
+       004167' 621240  005000          TLZ     ARG,EXTF!PNTF   ;YES,CLEAR EXTF NOW\r
+       004170' 621240  002100          TLZ     ARG,UNDF!VARF   ;CANCEL UNDEFINED AND VARIABLE FLAGS\r
+       004171' 402000  013742'         SETZM EXTPNT            ;FOR REST OF WORLD\r
+       004172' 262740  000011          POP     PP,RC\r
+       004173' 602600  577760          TRNE    ER,ERRORS-ERRQ\r
+       004174' 400440  000000          SETZ    RC,             ;CLEAR RELOCATION\r
+       004175' 262740  000006          POP     PP,V\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 78-1\r
+MACRO  10      24-APR-78 02:11         PSEUDO-OP HANDLERS\r
+\r
+       004176' 602600  002000          TRNE    ER,ERRU         ;WAS VALUE UNDEFINED?\r
+       004177' 661240  002000          TLO     ARG,UNDF        ;YES,SO TURN UNDF ON\r
+       004200' 603240  201000          TLNE    ARG,TAGF!EXTF\r
+       004201' 254000  003400'         JRST    ERRAX\r
+       004202' 254000  013036'         JRST    INSERT\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 79\r
+MACRO  10      24-APR-78 02:11         PSEUDO-OP HANDLERS\r
+\r
+       004203' 260740  004235' LOC0:   PUSHJ   PP,HIGHQ        ;AC0=0,0\r
+       004204' 261740  000000          PUSH    PP,AC0          ;SAVE MODE REQUESTED\r
+       004205' 557000  000000          HLRZS   AC0             ;PUT MODE IN RIGHT HALF\r
+       004206' 326000  004227'         JUMPN   AC0,RELOC0      ;RELOC PSEUDO-OP\r
+       004207' 316000  014006'         CAMN    AC0,MODO        ;SAME AS PRESENT MODE?\r
+                                       JRST    [HRRZ AC0,LOCO  ;YES\r
+                                               EXCH AC0,ABSLOC ;EXCH VALUES\r
+       004210' 254000  014737'                 JRST    LOC01]\r
+       004211' 550000  014000'         HRRZ    AC0,LOCO        ;NO, GET CURRENT VALUE\r
+       004212' 202000  014001'         MOVEM   AC0,RELLOC      ;SAVE IT\r
+       004213' 200000  014002'         MOVE    AC0,ABSLOC      ;GET LAST RELOC VALUE\r
+       004214' 260740  004543' LOC01:  PUSHJ   PP,BYPASS       ;SKIP BLANKS\r
+       004215' 661600  000004          TLO     IO,IORPTC\r
+       004216' 302340  000033          CAIE    C,EOL           ;USE PREVIOUS VALUE IF NULL ARGUMENT\r
+       004217' 260740  004046'         PUSHJ   PP,EVALXQ       ;GET EXPRESSION AND TEST EXTERNAL\r
+       004220' 542017  000000          HRRM    AC0,(PP)        ;STORE NEW VALUE\r
+       004221' 262740  000000          POP     PP,AC0          ;RETRIEVE STORED MODE AND VALUE\r
+       004222' 552000  013777' LOC10:  HRRZM   AC0,LOCA        ;SET ASSEMBLY LOCATION\r
+       004223' 552000  014000'         HRRZM   AC0,LOCO        ;AND OUTPUT LOCATION\r
+       004224' 556000  014004'         HLRZM   AC0,MODA        ;SET MODE\r
+       004225' 556000  014006'         HLRZM   AC0,MODO\r
+       004226' 254000  003424'         JRST    BLOCK2\r
+\r
+       004227' 316000  014006' RELOC0: CAMN    AC0,MODO\r
+                                       JRST    [HRRZ   AC0,LOCO\r
+                                               EXCH    AC0,RELLOC\r
+       004230' 254000  014742'                 JRST    LOC01]\r
+       004231' 550000  014000'         HRRZ    AC0,LOCO\r
+       004232' 202000  014002'         MOVEM   AC0,ABSLOC\r
+       004233' 200000  014001'         MOVE    AC0,RELLOC\r
+       004234' 254000  004214'         JRST    LOC01\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 80\r
+MACRO  10      24-APR-78 02:11         PSEUDO-OP HANDLERS\r
+\r
+                               IFN RENTSW,<\r
+                               HISEG1: PUSHJ   PP,HIGHQ        ;SET CURRENT PROGRAM BREAK\r
+                                       PUSHJ   PP,COUTD        ;DUMP CURRENT TYPE OF BLOCK\r
+                                       SKIPN   HISNSW          ;IF WE HAVE SEEN IT BEFORE\r
+                                       SKIPE   HIGH            ;OR ANY RELOC CODE PUT OUT\r
+                                       TRO     ER,ERRQ         ;FLAG AS AN ERROR\r
+                                       PUSHJ   PP,BYPASS       ;GO GET EXPRESSION\r
+                                       TLO     IO,IORPTC\r
+                                       PUSHJ   PP,EVALXQ       ;CHECK FOR EXTERNAL\r
+                                       ANDCMI  AC0,1777        ;ONLY ALLOWED TO START ON NEW K BOUND\r
+                                       HRRZM   AC0,LOCA        ;SET LOC COUNTERS\r
+                                       HRRZM   AC0,LOCO\r
+                                       MOVEI   RC,1            ;ASSUME RELOCATABLE\r
+                                       POPJ    PP,\r
+                               \r
+                               TWSEG0: PUSHJ   PP,HISEG1       ;COMMON CODE\r
+                                       JUMPN   AC0,.+2         ;ARGUMENT SEEN\r
+                                       MOVEI   AC0,400000      ;ASSUME 400000\r
+                                       HRRZM   AC0,HMIN        ;SET OFSET OF HIGH SEG.\r
+                                       HRRZM   AC0,HHIGH       ;INCASE NO HISEG CODE\r
+                                       TLOA    AC0,(1B0)       ;SIGNAL TWO SEGMENTS AND SKIP\r
+                               \r
+                               HISEG0: PUSHJ   PP,HISEG1       ;COMMON CODE\r
+                               HISEG2: MOVEM   AC0,SVTYP3      ;SAVE THE HISEG ARG\r
+                                       MOVEM   RC,MODA         ;SET MODES\r
+                                       MOVEM   RC,MODO\r
+                                       SETOM   HISNSW          ;WE HAVE ALREADY PUT ONE OUT\r
+                                       JRST    BLOCK2          ;MAKE LISTING HAPPEN RIGHT>\r
+\r
+                               IFE RENTSW,<\r
+                                       SYN     CPOPJ,HISEG0\r
+                                       SYN     CPOPJ,TWSEG0>\r
+\r
+                                       SYN     CPOPJ,ONFORM\r
+                                       SYN     CPOPJ,OFFORM\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 81\r
+MACRO  10      24-APR-78 02:11         PSEUDO-OP HANDLERS\r
+\r
+       004235'                 HIGHQ:\r
+       004235' 200300  014000' HIGHQ1: MOVE    V,LOCO  ;GET ASSEMBLY LOCATION\r
+       004236' 336000  014006'         SKIPN   MODO            ;IF ASSEMBLY MODE IS ABSOLUTE\r
+                                       JRST    [CAMLE V,ABSHI  ;RECORED ABS HIGHEST ALSO\r
+                                               MOVEM V,ABSHI\r
+       004237' 254000  014745'                 POPJ PP,]\r
+                               IFN RENTSW,<SKIPE       HMIN    ;IS IT A TWO SEGMENT PROGRAM?\r
+                                       JRST    [CAMGE  V,HMIN  ;YES,IS THIS HIGH SEG.?\r
+                                               JRST    .+1     ;NO,STORE LOW SEGMENT\r
+                                               CAMLE   V,HHIGH ;YES,IS IT GREATER THAN "HHIGH"?\r
+                                               MOVEM   V,HHIGH ;YES,REPLACE WITH LARGER VALUE\r
+                                               POPJ    PP,]>\r
+       004240' 313300  013735'         CAMLE   V,HIGH          ;IS IT GREATER THAN "HIGH"?\r
+       004241' 202300  013735'         MOVEM   V,HIGH          ;YES, REPLACE WITH LARGER VALUE\r
+       004242' 263740  000000          POPJ    PP,\r
+       \r
+       004243' 625640  200000  ONML:   TLZA FR,MWLFLG          ;MULTI-WORD LITERALS OK\r
+       004244' 661640  200000  OFFML:  TLO FR,MWLFLG           ;NO\r
+       004245' 263740  000000          POPJ PP,\r
+\r
+       004246' 476000  013730' OFFSYM: SETOM   IONSYM  ;SUPRESS SYMBOL TABLE LISTING\r
+       004247' 263740  000000          POPJ    PP,\r
+\r
+       004250' 260740  001043' SUPRE0: PUSHJ PP,GETSYM ;GET A SYMBOL TO SUPRES\r
+       004251' 254000  004255'         JRST SUPRE1     ;ERROR\r
+       004252' 260740  012610'         PUSHJ PP,SSRCH  ;SYMBOL ONLY\r
+       004253' 254000  004255'         JRST SUPRE1     ;GIVE ERROR MESSAGE\r
+       004254' 665240  000004          TLOA ARG,SUPRBT ;SET THE SUPRESS BIT\r
+       004255' 664600  040000  SUPRE1: TROA ER,ERRA\r
+       004256' 436244  000000          IORM ARG,(SX)   ;PUT BACK\r
+       004257' 321400  004250'         JUMPCM SUPRE0   ;ANY MORE?\r
+       004260' 254000  004264'         JRST    SUPRS1\r
+\r
+       004261' 260740  003111' SUPRSA: PUSHJ PP,LOOKUP ;SUPRESS ALL\r
+       004262' 205240  000004          MOVSI ARG,SUPRBT\r
+       004263' 436244  000000          IORM ARG,(SX)\r
+       004264' 402000  013742' SUPRS1: SETZM EXTPNT    ;JUST IN CASE WE LOOKED ONE UP\r
+       004265' 263740  000000          POPJ PP,\r
+\r
+       004266' 321640  000455' XPUNG0: JUMP1   POPOUT\r
+       004267' 260740  003111'         PUSHJ   PP,LOOKUP\r
+       004270' 200244  000000          MOVE    ARG,(SX)        ;GET SYMBOL FLAGS\r
+       004271' 607240  001610          TLNN    ARG,INTF!ENTF!EXTF!SPTR\r
+       004272' 665240  000004          TLOA    ARG,SUPRBT      ;LOCAL SYMBOL,SO SUPPRESS IT\r
+       004273' 402000  013742'         SETZM   EXTPNT\r
+       004274' 202244  000000          MOVEM   ARG,(SX)        ;RESTORE FLAGS\r
+       004275' 263740  000000          POPJ    PP,\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 82\r
+MACRO  10      24-APR-78 02:11         PSEUDO-OP HANDLERS\r
+\r
+       004276' 325640  003450' TITLE0: JUMP2   REMAR0\r
+       004277' 201200  000120          MOVEI   SX,.TBUF\r
+       004300' 541000  013701'         HRRI    AC0,TBUF\r
+       004301' 260740  004315'         PUSHJ PP,SUBTT1 ;GO READ IT\r
+       004302' 202200  013700'         MOVEM   SX,TCNT         ;SAVE COUNT OF CHARS. WRITTEN\r
+       004303' 332000  013733'         SKIPE   UNIVSN          ;WAS IT A UNIVERSAL?\r
+       004304' 260740  005176'         PUSHJ   PP,ADDUNV       ;YES  ADD TO TABLE\r
+       004305' 663600  000002          TLOE IO,IOTLSN  ;HAVE WE SEEN ONE\r
+                               IFE CCLSW,<TRO  ER,ERRM         ;YES, COMPLAIN>\r
+       004306' 664600  000020  IFN CCLSW,<TROA ER,ERRM         ;YES, MESSAGE\r
+       004307' 254000  004326'         JRST    PRNAM           ;PRINT NAME IF FIRST ONE>\r
+       004310' 263740  000000          POPJ    PP,             ;EXIT OTHERWISE\r
+\r
+       004311' 332000  013527' SUBTT0: SKIPE   SBUF            ;STORE FIRST SUBTTL ON PASS1\r
+       004312' 321640  003450'         JUMP1   REMAR0          ;OTHERWISE EXIT IF PASS ONE\r
+       004313' 201200  000120          MOVEI   SX,.SBUF\r
+       004314' 541000  013527'         HRRI    AC0,SBUF\r
+\r
+       004315' 260740  004543' SUBTT1: PUSHJ   PP,BYPASS       ;BYPASS LEADING BLANKS\r
+       004316' 661600  000004          TLO     IO,IORPTC\r
+       004317' 260740  001415' SUBTT3: PUSHJ   PP,CHARAC       ;GET ASCII CHARACTER\r
+       004320' 136340  000000          IDPB    C,AC0           ;STORE IN BLOCK\r
+       004321' 305340  000040          CAIGE   C,40            ;TEST FOR TERMINATOR\r
+       004322' 306340  000011          CAIN    C,HT\r
+       004323' 367200  004317'         SOJG    SX,SUBTT3       ;TEST FOR BUFFER FULL\r
+       004324' 137440  000000          DPB     RC,AC0          ;END, STORE TERMINATOR\r
+       004325' 364200  003447'         SOJA    SX,CPOPJ        ;COUNT NUL AND EXIT\r
+\r
+                               IFN CCLSW,<\r
+       004326' 607600  001000  PRNAM:  TLNN IO,CRPGSW  ;NOT IF NOT RPG\r
+       004327' 263740  000000          POPJ PP,\r
+       004330' 261740  000000          PUSH    PP,AC0          ;SAVE AC0 DMN\r
+       004331' 261740  000011          PUSH    PP,RC           ;AND RC\r
+       004332' 200000  014676'         MOVE AC0,[POINT 7,TBUF]\r
+       004333' 200200  014750'         MOVE SX,[POINT 7,OTBUF]\r
+       004334' 201440  000006          MOVEI RC,6      ;MAX OF SIX CHRS\r
+       004335' 134340  000000  PN1:    ILDB C,AC0\r
+       004336' 303340  000040          CAILE C," "     ;CHECK FOR LEGAL\r
+       004337' 303340  000172          CAILE C,"Z"+40  ;CHECK AGAINST LOWER CASE Z\r
+       004340' 254000  004343'         JRST PN2\r
+       004341' 136340  000004          IDPB C,SX       ;PUT IN OUTPUT BUFFER\r
+       004342' 367440  004335'         SOJG RC,PN1     ;GET MORE\r
+       004343' 201340  000000  PN2:    MOVEI C,0\r
+       004344' 136340  000004          IDPB C,SX       ;TERMINATOR\r
+       004345' 051140  014007'         TTCALL  3,OTBUF\r
+                                       TTCALL  3,[ASCIZ /\r
+       004346' 051140  014751' /]\r
+       004347' 262740  000011          POP     PP,RC\r
+       004350' 262740  000000          POP     PP,AC0          ;RESTORE AC0 DMN\r
+       004351' 263740  000000          POPJ PP,\r
+                               >\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 83\r
+MACRO  10      24-APR-78 02:11         PSEUDO-OP HANDLERS\r
+\r
+       004352' 260740  001043' SYN0:   PUSHJ   PP,GETSYM       ;GET THE FIRST SYMBOL\r
+       004353' 254000  003400'         JRST    ERRAX           ;ERROR, EXIT\r
+       004354' 260740  012573'         PUSHJ   PP,MSRCH        ;TRY FOR MACRO/OPDEF\r
+       004355' 254000  004373'         JRST    SYN3            ;NO,0THRY FOR OPERAND\r
+       004356' 201200  012573' SYN1:   MOVEI   SX,MSRCH        ;YES, SET FLAG\r
+       004357' 260740  007473' SYN2:   PUSHJ   PP,SAVEXS       ;SAVE REGISTERS\r
+       004360' 325400  003400'         JUMPNC  ERRAX           ;ERROR IF NO COMMA\r
+       004361' 260740  001043'         PUSHJ   PP,GETSYM       ;GET THE SECOND SYMBOL\r
+       004362' 263740  000000          POPJ    PP,\r
+       004363' 260760  013521'         PUSHJ   PP,@SAVBLK+SX   ;SEARCH FOR SECOND SYMBOL\r
+       004364' 255000  000000          JFCL\r
+       004365' 200240  013522'         MOVE    ARG,SAVBLK+ARG  ;GET VALUES\r
+       004366' 200440  013526'         MOVE    RC,SAVBLK+RC\r
+       004367' 200300  013523'         MOVE    V,SAVBLK+V\r
+       004370' 603240  020000          TLNE    ARG,MACF        ;MACRO?\r
+       004371' 260740  006543'         PUSHJ   PP,REFINC       ;YES, INCREMENT REFERENCE\r
+       004372' 254000  013036'         JRST    INSERT          ;INSERT AND EXIT\r
+\r
+       004373' 260740  012610' SYN3:   PUSHJ   PP,SSRCH        ;SEARCH FOR OPERAND\r
+       004374' 254000  004404'         JRST    SYN4            ;NOT FOUND, TRY OP CODE\r
+       004375' 661240  040000          TLO     ARG,SYNF        ;FLAG AS SYNONYM\r
+       004376' 603240  001000          TLNE    ARG,EXTF        ;EXTERNAL?\r
+       004377' 550300  000005          HRRZ    V,ARG           ;YES, RELPACE WITH POINTER\r
+       004400' 201200  012610'         MOVEI   SX,SSRCH        ;SET FLAG\r
+       004401' 607240  000100          TLNN ARG,VARF   ;DO NOT LET HIM SYN A VARIABLE\r
+       004402' 254000  004357'         JRST    SYN2\r
+       004403' 254000  003400'         JRST ERRAX\r
+\r
+       004404' 260740  010754' SYN4:   PUSHJ   PP,OPTSCH       ;SEARCH FOR OP-CODE\r
+       004405' 254000  003400'         JRST    ERRAX           ;NOT FOUND, EXIT WITH ERROR\r
+       004406' 205240  040000          MOVSI   ARG,SYNF        ;FLAG AS SYNONYM\r
+       004407' 254000  004356'         JRST    SYN1\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 84\r
+MACRO  10      24-APR-78 02:11         PSEUDO-OP HANDLERS\r
+\r
+       004410' 260740  001043' PURGE0: PUSHJ   PP,GETSYM       ;GET A MNEMONIC\r
+                                       JRST    [TRZ ER,ERRA    ;CLEAR ERROR\r
+       004411' 254000  014752'                 POPJ    PP,]    ;AND RETURN\r
+       004412' 260740  012573'         PUSHJ   PP,MSRCH        ;SEARCH MACRO SYMBOL TABLE\r
+       004413' 254000  004421'         JRST    PURGE2          ;NOT FOUND, TRY SYMBOLS\r
+       004414' 261740  000010          PUSH    PP,CS           ;SAVE CS AS IT MAY GET GARBAGED\r
+       004415' 603240  020000          TLNE    ARG,MACF        ;MACRO?\r
+       004416' 260740  006546'         PUSHJ   PP,REFDEC       ;YES, DECREMENT THE REFERENCE\r
+       004417' 262740  000010          POP     PP,CS\r
+       004420' 254000  004434'         JRST    PURGE4          ;REMOVE SYMBOL FROM TABLE\r
+\r
+       004421' 260740  012610' PURGE2: PUSHJ   PP,SSRCH        ;TRY OPERAND SYMBOL TABLE\r
+       004422' 254000  004435'         JRST    PURGE5          ;NOT FOUND GET NEXT SYMBOL\r
+       004423' 606440  777776          TRNN RC,-2              ;CHECK COMPLEX EXTERNAL\r
+       004424' 603440  777776          TLNE RC,-2\r
+       004425' 603240  040000          TLNE ARG,SYNF\r
+       004426' 254000  004430'         JRST    .+2\r
+       004427' 254000  004433'         JRST PURGE3\r
+       004430' 603240  003000          TLNE    ARG,EXTF!UNDF   ;ERROR IF EXTERNAL OR UNDEFINED\r
+       004431' 603240  040000          TLNE    ARG,SYNF        ;BUT NOT A SYNONYM\r
+       004432' 254000  004434'         JRST    PURGE4\r
+       004433' 664600  040000  PURGE3: TROA    ER,ERRA         ;NOT FOUND, ERROR\r
+       004434' 260740  013115' PURGE4: PUSHJ   PP,REMOVE       ;REMOVE FROM THE SYMBOL TABLE\r
+       004435' 321400  004410' PURGE5: JUMPCM  PURGE0\r
+       004436' 263740  000000          POPJ    PP,             ;EXIT\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 85\r
+MACRO  10      24-APR-78 02:11         PSEUDO-OP HANDLERS\r
+\r
+       004437' 603240  002000  OPD1:   TLNE    ARG,UNDF        ;IF OPDEF IS UNDEFINED\r
+       004440' 660600  000200          TRO     ER,ERRO         ;GIVE "O" ERROR\r
+       004441' 200000  000006  OPD:    MOVE    AC0,V           ;PUT VALUE IN AC0\r
+       004442' 254000  004445'         JRST    OP\r
+       004443' 205100  301117  IOP:    MOVSI   AC2,(POINT 9,0(PP),11)\r
+       004444' 665600  000020          TLOA    IO,IOIOPF       ;SET "IOP SEEN" AND SKIP\r
+       004445' 205100  270417  OP:     MOVSI   AC2,(POINT 4,0(PP),12)\r
+       004446' 261740  000011          PUSH    PP,RC\r
+       004447' 261740  000000          PUSH    PP,AC0          ;STACK CODE \r
+       004450' 261740  000002          PUSH    PP,AC2\r
+       004451' 260740  001077'         PUSHJ   PP,EVALEX       ;EVALUATE FIRST EXPRESSION\r
+       004452' 262740  000002          POP     PP,AC2\r
+       004453' 325400  004465'         JUMPNC  OP2\r
+       004454' 260740  001363' OP1B:   PUSHJ   PP,GETCHR       ;GET A CHARACTER\r
+       004455' 321400  004676'         JUMPCM XWD5             ;PROCESS COMMA COMMA IN XWD\r
+       004456' 661600  000004          TLO     IO,IORPTC       ;NOT A COMMA,REPEAT IT\r
+       004457' 135040  000002          LDB     AC1,AC2\r
+       004460' 270040  000000          ADD     AC1,AC0\r
+       004461' 137040  000002          DPB     AC1,AC2\r
+       004462' 322440  004464'         JUMPE   RC,OP1A         ;EXTERNAL OR RELOCATABLE?\r
+       004463' 260740  004041'         PUSHJ   PP,QEXT         ;YES, DETERMINE WHICH AND FLAG AN ERROR\r
+\r
+       004464' 260740  001077' OP1A:   PUSHJ   PP,EVALEX       ;GET ADDRESS PART\r
+       004465' 260740  004474' OP2:    PUSHJ   PP,EVADR        ;EVALUATE STANDARD ADDRESS\r
+       004466' 262740  000000  OP3:    POP     PP,AC0          ;PUT IN AC0\r
+       004467' 262740  000011          POP     PP,RC\r
+       004470' 332017  000000          SKIPE   (PP)            ;CAME FROM EVALCM?\r
+       004471' 254000  002751'         JRST    STOW            ;NO,STOW CODE AND EXIT\r
+       004472' 262740  000001          POP     PP,AC1          ;YES,EXIT IMMEDIATELY\r
+       004473' 263740  000000          POPJ    PP,\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 86\r
+MACRO  10      24-APR-78 02:11         PSEUDO-OP HANDLERS\r
+\r
+       004474'                 EVADR:                          ;EVALUATE STANDARD ADDRESS\r
+       004474' 607000  777777  IFE IIISW,<TLNN AC0,-1          ;OK IF ALL 0'S\r
+       004475' 254000  004501'         JRST    .+4             ;IT WAS\r
+       004476' 641000  777777          TLC     AC0,-1          ;CHANGE ALL ONES TO ZEROS\r
+       004477' 643000  777777          TLCE    AC0,-1          ;OK IF ALL 1'S\r
+       004500' 660600  200000          TRO     ER,ERRQ         ;NO,FLAG Q ERROR>\r
+       004501' 270017  777777          ADD     AC0,-1(PP)      ;ADD ADDRESS PORTIONS\r
+       004502' 500017  777777          HLL     AC0,-1(PP)      ;GET LEFT HALF\r
+       004503' 623640  020000          TLZE    FR,INDSW        ;INDIRECT BIT?\r
+       004504' 661000  000020          TLO     AC0,(Z @)       ;YES, PUT IT IN\r
+       004505' 202017  777777          MOVEM   AC0,-1(PP)      ;RE-STACK CODE\r
+       004506' 270457  777776          ADD     RC,-2(PP)       ;UPDATE RELOCATION\r
+       004507' 542457  777776          HRRM    RC,-2(PP)       ;USE HALF WORD ADD\r
+       004510' 302340  000010          CAIE    C,10            ;"("?\r
+       004511' 263740  000000          POPJ    PP,             ;NO, EXIT\r
+\r
+       004512' 207000  013742'         MOVSS   EXTPNT          ;WFW\r
+       004513' 260740  001066'         PUSHJ   PP,EVALCM       ;EVALUATE\r
+       004514' 207000  013742'         MOVSS   EXTPNT          ;WFW\r
+       004515' 207300  000000          MOVSS   V,AC0           ;SWAP HALVES\r
+       004516' 207200  000011  IFE IIISW,<MOVSS SX,RC\r
+       004517' 434200  000006          IOR     SX,V            ;MERGE RELOCATION\r
+       004520' 606200  777777          TRNN    SX,-1           ;RIGHT HALF ZERO?\r
+       004521' 254000  004533'         JRST    OP2A            ;YES, DO SIMPLE ADD\r
+       004522' 200240  000011          MOVE    ARG,RC          ;NO, SWAP RC INTO ARG>\r
+                               IFN IIISW,<MOVSS ARG,RC>\r
+       004523' 270317  777777          ADD     V,-1(PP)        ;ADD RIGHT HALVES\r
+       004524' 270257  777776          ADD     ARG,-2(PP)\r
+       004525' 542317  777777          HRRM    V,-1(PP)        ;UPDATE WITHOUT CARRY\r
+       004526' 542257  777776          HRRM    ARG,-2(PP)\r
+       004527' 513000  000000          HLLZS   AC0             ;PREPARE LEFT HALVES\r
+       004530' 513000  000011          HLLZS   RC\r
+       004531' 603200  777777  IFE IIISW,<TLNE SX,-1           ;IS LEFT HALF ZERO?\r
+       004532' 660600  200000          TRO     ER,ERRQ         ;NO FLAG FORMAT ERROR\r
+       004533' 603440  777777  OP2A:   TLNE    RC,-1           ;RELOCATION FOR LEFT HALF?\r
+       004534' 260740  004546'         PUSHJ   PP,OP2A1        ;YES,IS IT LEGAL?\r
+       004535' 603000  777000          TLNE    AC0,777000      ;OP CODE FIELD USED?\r
+                                       JRST    [EXCH AC0,-1(PP);YES, GET STORED CODE\r
+                                               TLNE AC0,777000 ;OP CODE FIELD BEEN SET?\r
+                                               TRO ER,ERRQ     ;YES, MOST LIKELY AN ERROR\r
+                                               EXCH AC0,-1(PP)\r
+       004536' 254000  014754'                 JRST    .+1]    ;RETURN TO ADD >\r
+       004537' 272017  777777          ADDM    AC0,-1(PP)      ;MERGE WITH PREVIOUS VALUE\r
+       004540' 272457  777776          ADDM    RC,-2(PP)\r
+       004541' 302340  000011          CAIE    C,11            ;")"?\r
+       004542' 254000  003400'         JRST    ERRAX           ;NO, FLAG ERROR\r
+                                                               ;YES, BYPASS PARENTHESIS\r
+       004543'                 BYPASS:\r
+       004543' 260740  001363' BYPAS1: PUSHJ   PP,GETCHR\r
+       004544' 322340  004543' BYPAS2: JUMPE   C,.-1           ;SKIP TRAILING BLANKS\r
+       004545' 263740  000000          POPJ    PP,             ;EXIT\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 87\r
+MACRO  10      24-APR-78 02:11         PSEUDO-OP HANDLERS\r
+\r
+                               IFE IIISW,<\r
+       004546' 250457  777776  OP2A1:  EXCH    RC,-2(PP)       ;GET STORED CODE\r
+       004547' 607440  777777          TLNN    RC,-1           ;OK IF ALL ZERO\r
+       004550' 254000  004554'         JRST    OP2A2           ;OK SO RETURN\r
+       004551' 641440  777777          TLC     RC,-1           ;CHANGE ALL ONES TO ZEROS\r
+       004552' 643440  777777          TLCE    RC,-1           ;OK IF ALL ONES\r
+       004553' 660600  200000          TRO     ER,ERRQ         ;OTHERWISE A "Q" ERROR\r
+       004554' 250457  777776  OP2A2:  EXCH    RC,-2(PP)       ;GET RC,BACK\r
+       004555' 263740  000000          POPJ    PP,             ;AND RETURN>\r
+\r
+\r
+       004556' 514000  000015  EXPRES: HRLZ    AC0,RX          ;FUDGE FOR OCT0\r
+\r
+       004557' 261740  000015  OCT0:   PUSH    PP,RX\r
+       004560' 544640  000000          HLR     RX,AC0\r
+       004561' 260740  001077' OCT1:   PUSHJ   PP,EVALEX       ;EVALUATE\r
+       004562' 260740  002751'         PUSHJ   PP,STOW         ;STOW CODE\r
+       004563' 321400  004561'         JUMPCM  OCT1\r
+       004564' 262740  000015          POP     PP,RX           ;YES, RESTORE RADIX\r
+       004565' 263740  000000          POPJ    PP,             ;EXIT\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 88\r
+MACRO  10      24-APR-78 02:11         PSEUDO-OP HANDLERS\r
+\r
+       004566' 205440  440600  SIXB10: MOVSI   RC,(POINT 6,AC0)        ;SET UP POINTER\r
+       004567' 201000  000000          MOVEI   AC0,0           ;CLEAR WORD\r
+\r
+       004570' 260740  001445' SIXB20: PUSHJ   PP,CHARL        ;GET NEXT CHARACTER\r
+       004571' 316340  000004          CAMN    C,SX            ;IS THIS PRESET DELIMITER?\r
+       004572' 254000  004644'         JRST    ASC60           ;YES\r
+       004573' 301340  000141          CAIL C,"A"+40\r
+       004574' 303340  000172          CAILE C,"Z"+40\r
+       004575' 254000  004577'         JRST    .+2\r
+       004576' 624340  000100          TRZA    C,100           ;CONVERT LOWER CASE TO SIXBIT\r
+       004577' 275340  000040          SUBI    C,40            ;CONVERT TO SIXBIT\r
+       004600' 321340  004641'         JUMPL   C,ASC55         ;TEST FOR INVALID CHARACTER\r
+       004601' 136340  000011          IDPB    C,RC            ;NO, DEPOSIT THE BYTE\r
+       004602' 603440  770000          TLNE    RC,770000       ;IS THE WORD FULL?\r
+       004603' 254000  004570'         JRST    SIXB20          ;NO, GET NEXT CHARACTER\r
+       004604' 260740  002750'         PUSHJ   PP,STOWZ        ;YES, STORE\r
+       004605' 254000  004566'         JRST    SIXB10          ;GET NEXT WORD\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 89\r
+MACRO  10      24-APR-78 02:11         PSEUDO-OP HANDLERS\r
+\r
+       004606' 510140  000000  ASCII0: HLLZ    SDEL,AC0        ;STORE ASCII/ASCIZ FLAG\r
+       004607' 260740  001445' ASC10:  PUSHJ   PP,CHARL        ;GET FIRST NON-BLANK\r
+       004610' 302340  000040          CAIE    C," "\r
+       004611' 306340  000011          CAIN    C,HT\r
+       004612' 254000  004607'         JRST    ASC10\r
+       004613' 307340  000015          CAIG C,CR               ;CHECK FOR CRRET AS DELIM\r
+       004614' 305340  000012          CAIGE C,LF\r
+       004615' 334200  014101'         SKIPA   SX,SEQNO2\r
+       004616' 254000  003400'         JRST ERRAX\r
+       004617' 202200  013762'         MOVEM SX,TXTSEQ         ;SAVE SEQ AND PAGE\r
+       004620' 200200  014100'         MOVE SX,PAGENO\r
+       004621' 202200  013761'         MOVEM SX,TXTPG\r
+       004622' 476000  013746'         SETOM INTXT\r
+       004623' 200200  000007          MOVE    SX,C            ;SAVE FOR COMPARISON\r
+       004624' 327140  004566'         JUMPG   SDEL,SIXB10     ;BRANCH IF SIXBIT\r
+\r
+       004625' 205440  440700  ASC20:  MOVSI   RC,(POINT 7,AC0)        ;SET UP POINTER\r
+       004626' 603140  200000          TLNE    SDEL,200000     ;THIS BIT (AND BIT0) IN FOR COMMENT\r
+       004627' 205440  440000          MOVSI RC,440000         ;SO NOTHING WILL BE DEPOSITED\r
+       004630' 201000  000000  IFE IIISW,<MOVEI AC0,0          ;CLEAR WORD>\r
+                               IFN IIISW,<TLNE SDEL,100000     ;ASCID?\r
+                                       TLZA    SDEL,400000     ;YES, ZERO ASCIZ BIT\r
+                                       TDZA    AC0,AC0         ;NO, ZERO WORD\r
+                                       MOVE    AC0,[BYTE (7) 10,10,10,10,10 (1) 1]     ;YES, A WORD FULL OF BACKSPACES\r
+                               >\r
+       004631' 260740  001445' ASC30:  PUSHJ   PP,CHARL        ;GET ASCII CHARACTER AND LIST\r
+       004632' 316340  000004          CAMN    C,SX            ;TEST FOR DELIMITER\r
+       004633' 254000  004642'         JRST    ASC50           ;FOUND\r
+       004634' 136340  000011          IDPB    C,RC            ;DEPOSIT BYTE\r
+       004635' 603440  760000          TLNE    RC,760000       ;HAVE WE FINISHED WORD?\r
+       004636' 254000  004631'         JRST    ASC30           ;NO,GET NEXT CHARACTER\r
+       004637' 260740  002750'         PUSHJ   PP,STOWZ        ;YES, STOW IT\r
+       004640' 254000  004625'         JRST    ASC20           ;GET NEXT WORD\r
+\r
+       004641' 634400  000010  ASC55:  TDZA    CS,CS           ;ZERO CS IN CASE NESTED\r
+       004642' 634440  000003  ASC50:  TDZA    RC,SDEL         ;TEST FOR ASCIIZ\r
+       004643' 664600  040000          TROA    ER,ERRA         ;SIXBIT ERROR EXIT\r
+       004644' 260740  004543' ASC60:  PUSHJ   PP,BYPAS1       ;POLISH OFF TERMINATOR\r
+       004645' 402000  013746'         SETZM INTXT     ;WE ARE OUT OF IT\r
+                               IFN IIISW,<TLNN SDEL,100000     ;NO EXTRA WORDS FOR ASCID>\r
+       004646' 420440  013555'         ANDCM   RC,STPX         ;STORE AT LEAST ONE WORD\r
+       004647' 607140  200000          TLNN SDEL,200000        ;GET OUT WITHOUT STORING\r
+       004650' 325440  002750'         JUMPGE  RC,STOWZ        ;STOW\r
+       004651' 263740  000000          POPJ    PP,             ;ASCII, NO BYTES STORED, SO EXIT\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 90\r
+MACRO  10      24-APR-78 02:11         PSEUDO-OP HANDLERS\r
+\r
+       004652'                 POINT0:\r
+       004652' 261740  000011          PUSH    PP,RC           ;STACK REGISTERS\r
+       004653' 261740  000000          PUSH    PP,AC0\r
+       004654' 260740  004034'         PUSHJ   PP,EVAL10       ;EVALUATE RADIX 10\r
+       004655' 137000  014761'         DPB     AC0,[POINT 6,0(PP),11]  ;STORE BYTE SIZE\r
+       004656' 325400  004665'         JUMPNC  POINT2\r
+       004657' 260740  001077'         PUSHJ   PP,EVALEX       ;NO, GET ADDRESS\r
+       004660' 260740  004474'         PUSHJ   PP,EVADR        ;EVALUATE STANDARD ADDRESS\r
+       004661' 325400  004665'         JUMPNC  POINT2\r
+       004662' 260740  004034'         PUSHJ   PP,EVAL10       ;EVALUATE RADIX 10\r
+       004663' 603600  020000          TLNE    IO,NUMSW        ;IF NUMERIC\r
+       004664' 654000  014607'         TDCA    AC0,[-1]        ;POSITION=D35-RHB\r
+       004665' 201000  000000  POINT2: MOVEI   AC0,0           ;OTHERWISE SET TO D36\r
+       004666' 271000  000044          ADDI    AC0,^D36\r
+       004667' 242000  000036          LSH     AC0,^D30\r
+       004670' 272017  000000          ADDM    AC0,0(PP)       ;UPDATE VALUE\r
+       004671' 254000  004466'         JRST    OP3\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 91\r
+MACRO  10      24-APR-78 02:11         PSEUDO-OP HANDLERS\r
+\r
+       004672'                 XWD0:\r
+       004672' 261740  000011          PUSH    PP,RC\r
+       004673' 261740  000000          PUSH    PP,AC0          ;STORE ZERO ON STACK\r
+       004674' 260740  001077'         PUSHJ   PP,EVALEX       ;EVALUATE EXPRESSION\r
+       004675' 325400  004465'         JUMPNC  OP2\r
+       004676' 336017  000000  XWD5:   SKIPN   (PP)            ;ANY CODE YET?\r
+       004677' 254000  004704'         JRST    XWD10           ;NO,USE VALUE IN AC0\r
+       004700' 322000  004702'         JUMPE   AC0,.+2         ;ANYTHING IN AC0?\r
+       004701' 660600  200000          TRO     ER,ERRQ         ;YES,FLAG "Q"ERROR\r
+       004702' 200017  000000          MOVE    AC0,(PP)        ;USE PREVIOUS VALUE\r
+       004703' 200457  777777          MOVE    RC,-1(PP)       ;AND RELOCATION\r
+       004704' 516017  000000  XWD10:  HRLZM   AC0,0(PP)       ;SET LEFT HALF\r
+       004705' 516457  777777          HRLZM   RC,-1(PP)\r
+       004706' 207000  013742'         MOVSS EXTPNT    ;WFW\r
+       004707' 254000  004464'         JRST    OP1A            ;EXIT THROUGH OP\r
+\r
+       004710' 260740  004046' IOWD0:  PUSHJ   PP,EVALXQ       ;EVALUATE AND TEST FOR EXTERNAL\r
+       004711' 302340  000014          CAIE    C,14            ;","?\r
+                                       JRST    [SKIPN  AC0     ;IF NZERO AND NO "," SEEN\r
+                                               TRO ER,ERRQ     ;TREAT AS Q ERROR\r
+       004712' 254000  014762'                 SOJA AC0,STOW]  ;NO, TREAT AS RIGHT HALF\r
+       004713' 261740  000000          PUSH    PP,AC0          ;YES, STACK LEFT HALF\r
+       004714' 260740  001077'         PUSHJ   PP,EVALEX       ;WFW\r
+       004715' 275000  000001          SUBI    AC0,1\r
+       004716' 262740  000001          POP     PP,AC1          ;RETRIEVE LEFT HALF\r
+       004717' 213000  000001          MOVNS   AC1\r
+       004720' 504000  000001          HRL     AC0,AC1\r
+       004721' 254000  002751'         JRST    STOW            ;STOW CODE AND EXIT\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 92\r
+MACRO  10      24-APR-78 02:11         PSEUDO-OP HANDLERS\r
+\r
+       004722' 260740  004543' BYTE0:  PUSHJ   PP,BYPASS       ;GET FIRST NON-BLANK\r
+       004723' 302340  000010          CAIE    C,10            ;"("?\r
+       004724' 254000  003400'         JRST    ERRAX           ;NO, FLAG ERROR AND EXIT\r
+       004725' 261740  000011          PUSH    PP,RC\r
+       004726' 261740  000000          PUSH    PP,AC0          ;INITIALIZE STACK TO ZERO\r
+       004727' 205240  447717          MOVSI   ARG,(POINT -1,(PP))\r
+\r
+       004730' 261740  000005  BYTE1:  PUSH    PP,ARG\r
+       004731' 260740  004034'         PUSHJ   PP,EVAL10       ;EVALUATE RADIX 10\r
+       004732' 262740  000005          POP     PP,ARG\r
+       004733' 307000  000044          CAIG    AC0,^D36        ;TEST SIZE\r
+       004734' 325000  004736'         JUMPGE  AC0,.+2\r
+       004735' 660600  040000          TRO     ER,ERRA\r
+       004736' 137000  014765'         DPB     AC0,[POINT 6,ARG,11]    ;STORE BYTE SIZE\r
+\r
+       004737' 133000  000005  BYTE2:  IBP     ARG             ;INCREMENT BYTE\r
+       004740' 626240  777777          TRZN    ARG,-1          ;OVERFLOW?\r
+       004741' 254000  004746'         JRST    BYTE3           ;NO\r
+       004742' 403000  000011          SETZB   AC0,RC          ;YES\r
+       004743' 250017  000000          EXCH    AC0,0(PP)       ;GET CURRENT VALUES\r
+       004744' 250457  777777          EXCH    RC,-1(PP)       ;AND STACK ZEROS\r
+       004745' 260740  002751'         PUSHJ   PP,STOW         ;STOW FULL WORD\r
+\r
+       004746' 261740  000005  BYTE3:  PUSH    PP,ARG\r
+       004747' 260740  001077'         PUSHJ   PP,EVALEX       ;COMPUTE NEXT BYTE\r
+       004750' 262740  000005          POP     PP,ARG\r
+       004751' 137000  000005          DPB     AC0,ARG         ;STORE BYTE\r
+       004752' 520000  000005          HLLO    AC0,ARG\r
+       004753' 137440  000000          DPB     RC,AC0          ;STORE RELOCATION\r
+\r
+       004754' 321400  004737'         JUMPCM  BYTE2\r
+       004755' 306340  000010          CAIN    C,10            ;"("?\r
+       004756' 254000  004730'         JRST    BYTE1           ;YES, GET NEW BYTE SIZE\r
+       004757' 254000  004466'         JRST    OP3             ;NO, EXIT\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 93\r
+MACRO  10      24-APR-78 02:11         PSEUDO-OP HANDLERS\r
+\r
+       004760' 260740  001077' RADX50: PUSHJ   PP,EVALEX       ;EVALUATE CODE\r
+       004761' 326440  003400'         JUMPN   RC,ERRAX                ;ERROR IF NOT ABSOLUTE\r
+       004762' 200240  000000          MOVE    ARG,AC0\r
+       004763' 325400  003400'         JUMPNC  ERRAX\r
+       004764' 260740  001043'         PUSHJ   PP,GETSYM       ;YES, GET SYMBOL\r
+       004765' 620600  040000          TRZ     ER,ERRA         ;CLEAR ERROR\r
+       004766' 260740  004770'         PUSHJ   PP,SQOZE        ;SQUOZE SIXBIT AND ADD CODE\r
+       004767' 254000  002751'         JRST    STOW            ;STOW CODE AND EXIT\r
+\r
+\r
+       004770' 200100  000000  SQOZE:  MOVE    AC1+1,AC0       ;PUT SIXBIT IN AC1+1\r
+       004771' 201000  000000          MOVEI   AC0,0           ;CLEAR RESULT\r
+       004772' 201040  000000  SQOZ1:  MOVEI   AC1,0\r
+       004773' 246040  000006          LSHC    AC1,6           ;PUT 6-BIT CHARACTER IN AC1\r
+       004774' 135040  014766'         LDB     AC1,[POINT 6,CSTAT(AC1),23]     ;CONVERT TO RADIX50\r
+       004775' 221000  000050          IMULI   AC0,50          ;MULTIPLY PREVIOUS RESULT\r
+       004776' 270000  000001          ADD     AC0,AC1         ;ADD NEW CHARACTER\r
+       004777' 326100  004772'         JUMPN   AC1+1,SQOZ1     ;TEST FOR END\r
+       005000' 242240  000036          LSH     ARG,^D30        ;LEFT-JUSTIFY CODE\r
+       005001' 434000  000005          IOR     AC0,ARG         ;MERGE WITH RESULT\r
+       005002' 263740  000000          POPJ    PP,\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 94\r
+MACRO  10      24-APR-78 02:11         PSEUDO-OP HANDLERS\r
+\r
+                               REPEAT 0,<      EXPLANATION OF ARRAY AND LVAR FEATURES\r
+                               \r
+                               WHEN A VARIABLE IS SEEN EITHER BY #, INTEGER OR ARRAY\r
+                               THE VALUE PORTION OF THE SYMBOL TABLE ENTRY (RH OF 2ND WORD)\r
+                               IS USE TO HOLD THE DESIRED SIZE-1. THE CORRECT VALUE IS\r
+                               ASSIGNED BY THE VAR PSEUDO OP.\r
+                               \r
+                               WHEN LVAR IS SEEN, A SEARCH OF THE SYMBOL TABLE IS MADE\r
+                               FOR ALL VARIABLES. THE VARF (VARIABLE) FLAG IS\r
+                               LEFT ON AND EXTF AND PNTF ARE TURNED ON SO THAT THE\r
+                               VARIABLE LOOKS LIKE AN EXTERNAL. THE POINTER\r
+                               (RH OF 2ND WORD OF THE SYMBOL TABLE ENTRY) POINTS\r
+                               TO THE HEADER BLOCK. THE HEADER BLOCK IS FORMATTED AS FOLLOWS:\r
+                               WORD 1: LEFT HALF IS A POINTER TO SYMBOL TABLE FIXUP BLOCKS\r
+                                       RIGHT HALF IS A POINTER TO CODE FIXUP BLOCKS\r
+                               WORD 2: 0 THIS IS USED TO DISTINGUISH IT FROM NORMAL EXTERNALS\r
+                                               WHICH HAVE THE SYMBOL NAME HERE\r
+                               WORD 3: THE LOCATION RELATIVE TO THE START OF THE LOW CORE\r
+                                               VARIABLES\r
+                               \r
+                               CORE FIXUP BLOCKS ARE SET UP BY BOUT\r
+                               \r
+                               WORD1:  RH LINK TO NEXT CORE FIXUP BLOCK 0 IF END OF CHAIN\r
+                                       LH OFFSET. NUMBER TO BE ADDED TO SYMBOL VALUE BEFORE\r
+                                       FIXUP IS DONE\r
+                               WORD 2: POINTER TO A FIXUP CHAIN FOR RIGHT HALVES\r
+                                       LEFT HALF IS RELOCATION RH IS ADDRESS\r
+                               WORD 3: SAME AS WORD 2 BUT FOR LEFT HALF FIXUPS\r
+                               \r
+                               NOTE ALL THESE FIXUPS ARE CHAINED EVEN IF IN LEFT HALF.\r
+                               SIMILARY ALL REFERENCES TO SAY A+1 ARE CHAINED\r
+                               \r
+                               SYMBOL TABLE FIXUP BLOCKS. THESE ARE GENERATED BY SOUT\r
+                               AS THE SYMBOL TABLE IS PUT OUT. THESE FIXUPS ARE ADDITIVE\r
+                               NOT CHAINED.\r
+                               \r
+                               WORD 1: RH LINK TO NEXT BLOCK\r
+                                       LH 0\r
+                               WORD 2: RADIX50 FOR THE SYMBOL\r
+                               WORD 3: 200000,,0 IF RH FIXUP\r
+                                       600000,,0 IF LH FIXUP\r
+                               \r
+                               SOUT ALSO SETS UP FIXLNK. FIXLNK POINTS TO THE CHAIN OF\r
+                               ALL LVAR FIXUPS TO BE DONE. IT POINTS TO THE SECOND WORD\r
+                               \r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 95\r
+MACRO  10      24-APR-78 02:11         PSEUDO-OP HANDLERS\r
+\r
+                               OF A 2 WORD BLOCK\r
+                               \r
+                               WORD 1: LINK TO 2ND WORD OF NEXT BLOCK 0 IF END\r
+                               WORD 2: RH POINTER TO A HEADER BLOCK\r
+                                       LH GARBAGE\r
+                               \r
+                               FIXUPS ARE BLOCK TYPE 13 AS FOLLOWS\r
+                               WORD 1: THE PROGRAM BREAK (AS BLOCK TYPE 5)\r
+                               WORD 2: THE NUMBER OF LOCATION USED FOR VARIABLES IN THE\r
+                                       LOW SEGMENT+1\r
+                               \r
+                               REMAINING WORDS COME IN PAIRS AS FOLLOWS:\r
+                               1ST WORD        BIT 0=0 RH FIXUP\r
+                                               BIT 0=1 LH FIXUP\r
+                                               BIT 1=0 CORE FIXUP\r
+                                                       WORD 2 LH POINTER TO CHAIN\r
+                                                       WORD 2 RH VALUE\r
+                                               BIT 1=1 SYMBOL FIXUP\r
+                                                       WORD 1 RH VALUE\r
+                                                       WORD 2 SYMBOL\r
+                               >\r
+\r
+                               REPEAT 0,<      EXPLANATION OF ICC FEATURES\r
+                               \r
+                                       IF FORMSW IS SET NON ZERO THE FORM OF THE OCTAL LISTING OUTPUT\r
+                                       IS CHANGED FROM STANDARD HALF WORD FORM TO THE FOLLOWING:-\r
+                               \r
+                                       IF INSTRUCTION          BYTE 9,4,1,4,18\r
+                                       IF I/O INSTRUCTION      BYTE 3,7,3,1,4,18\r
+                                       IF BYTE POINTER         BYTE 6,6,2,4,18\r
+                                       IF ASCII                BYTE 7,7,7,7,7\r
+                                       IF SIXBIT               BYTE 6,6,6,6,6,6\r
+                               \r
+                                       ALL OTHERS ARE STANDARD HALF WORD\r
+                               \r
+                                       THIS FEATURE CAN BE OVER RIDDEN BY USE OF /H SWITCH\r
+                                       STANDARD HALF WORD FORM IS THEN USED.\r
+                                       HOWEVER BECAUSE OF EXTRA SPACING THE OUTPUT IS PUSHED MORE\r
+                                       TO THE RIGHT AND LONG COMMENTS OVERFLOW THE LINE\r
+                                       >\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 96\r
+MACRO  10      24-APR-78 02:11         PSEUDO-OP HANDLERS\r
+\r
+                               IFN WFWSW,<\r
+                               %INTEG: PUSHJ PP,GETSYM ;GET A SYMBOL\r
+                                       JRST INTG2      ;BAD SYMBOL ERROR\r
+                                       TLO IO,DEFCRS   ;THIS IS A DEFINTION\r
+                                       PUSHJ PP,SSRCH  ;SEE IF THERE\r
+                                       MOVSI ARG,SYMF!UNDF     ;SET SYMBOL AND UNDEFINED IF NOT\r
+                                       TLNN ARG,UNDF   ;IF ALREADY DEFINED\r
+                                       JRST INTG1      ;JUST IGNORE\r
+                                       TLOA ARG,VARF   ;SET VARIABLE FLAG\r
+                               INTG2:  TROA ER,ERRA    ;SYMBOL ERROR\r
+                                       PUSHJ PP,INSERZ ;PUT IN WITH ZERO VALUE (LENGTH OF 1)\r
+                               INTG1:  JUMPCM %INTEG\r
+                                       POPJ PP,\r
+                               \r
+                               %ARAY:  MOVEM PP,ARAYP  ;SAVE PUSHDOW POINTER\r
+                               ARAY2:  PUSHJ PP,GETSYM\r
+                                       JRST ARAY1      ;BAD SYMBOL GIVE ERROR AND ABORT\r
+                                       PUSH PP,AC0     ;SAVE NAME\r
+                                       JUMPCM ARAY2    ;AND GO ON IF A COMMA\r
+                                       CAIE C,"["-40   ;MUST BE A [\r
+                                       JRST ARAY1\r
+                                       PUSHJ PP,BYPASS ;OH, WELL\r
+                                       TLO IO,IORPTC\r
+                                       PUSHJ PP,EVALXQ ;GET A SIZE\r
+                                       CAIE C,"]"-40   ;MUST END RIGHT\r
+                                       JRST ARAY1\r
+                                       PUSHJ PP,BYPASS ;??\r
+                                       HRRZ V,AC0      ;GET VALUE\r
+                                       SUBI V,1\r
+                               NXTVAL: POP PP,AC0\r
+                                       PUSH PP,V       ;SAVE OVER SEARCH\r
+                                       TLO IO,DEFCRS\r
+                                       PUSHJ PP,SSRCH  ;FIND IT\r
+                                       MOVSI ARG,SYMF!UNDF\r
+                                       POP PP,V        ;GET VALUE BACK\r
+                                       TLNN ARG,UNDF\r
+                                       JRST ARAY3\r
+                                       TLO ARG,VARF\r
+                                       MOVEI RC,0      ;NO RELOC\r
+                                       PUSHJ PP,INSERT\r
+                               ARAY3:  CAME PP,ARAYP\r
+                                       JRST NXTVAL     ;STILL NAMES STACKED\r
+                                       JUMPCM ARAY2\r
+                                       POPJ PP,\r
+                               \r
+                               ARAY1:  TRO ER,ERRA     ;ERROR EXIT\r
+                                       MOVE PP,ARAYP\r
+                                       POPJ PP,        ;RESET PDL AND GO\r
+                               >\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 97\r
+MACRO  10      24-APR-78 02:11         PSEUDO-OP HANDLERS\r
+\r
+                               IFN WFWSW,<\r
+                               %LVAR:  JUMP2 POPOUT    ;IGNORE ON PASS2\r
+                                       PUSHJ PP,LOOKUP ;SCAN SYMBOL TABLE\r
+                                       TRNN ARG,EXTF   ;THESE ARE LVARS WE HAVE DONE ONCE\r
+                                       TRNN ARG,VARF   ;FOR VARIABLES\r
+                                       POPJ PP,        ;IGNORE ALL OTHERS\r
+                                       TRZ ARG,UNDF    ;SET AS DEFINED\r
+                                       MOVEI RC,3\r
+                                       ADDB RC,FREE\r
+                                       CAML RC,SYMBOL  ;GET BLOCK\r
+                                       PUSHJ PP,XCEEDS\r
+                                       SUBI RC,2       ;POINT TO START OF BLOCK\r
+                                       ADDI V,1\r
+                                       EXCH V,LVARLC   ;GET CORRECT VARIABLE LOCATION\r
+                                       MOVEM V,2(RC)   ;SAVE IT\r
+                                       ADDM V,LVARLC   ;AND UPDATE BASE\r
+                                       SETZM (RC)\r
+                                       SETZM 1(RC)     ;NO NAME TO IDENT AN LVAR AND NO FIXUPS\r
+                                       HRL ARG,RC      ;POINTER\r
+                                       TRO ARG,EXTF!PNTF       ;FLAG AS EXTERNAL AND POINTER\r
+                                       MOVSM ARG,(SX)  ;PUT IT AWAY\r
+                                       POPJ PP,\r
+                               >\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 98\r
+MACRO  10      24-APR-78 02:11         PSEUDO-OP HANDLERS\r
+\r
+                               ; PSEUDO-END STATEMENT FOR MULTI-FILE CAPABILITY\r
+\r
+                               ; HERE IF PRGEND (PASS 1)\r
+       005003' 661600  000010  PSEND0: TLO     IO,MFLSW        ;PSEND SEEN\r
+       005004' 260740  003123'         PUSHJ   PP,END0         ;AS IF END STATEMENT\r
+       005005' 513000  000014          HLLZS   IO              ;CLEAR ER(RH)\r
+       005006' 402000  013376'         SETZM   ERRCNT          ;CLEAR ERROR COUNT FOR EACH PROG.\r
+       005007' 325640  005023'         JUMP2   PSEND2          ;DIFFERENT ON PASS2\r
+       005010' 332000  013733'         SKIPE   UNIVSN          ;SEEN A UNIVERSAL\r
+       005011' 260740  005207'         PUSHJ   PP,UNISYM       ;YES, STORE SYMBOLS\r
+       005012' 260740  005033'         PUSHJ   PP,PSEND4       ;SAVE SYMBOLS, POINTERS AND TITLE\r
+       005013' 621600  000002          TLZ     IO,IOTLSN       ;CLEAR TITLE SEEN FLAG\r
+       005014' 621600  000010  PSEND1: TLZ     IO,MFLSW         ;FOR NEXT FILE\r
+       005015' 402000  014055'         SETZM   UNISCH          ;CLEAR UNIVERSAL SEARCH TABLE\r
+       005016' 200000  014767'         MOVE    AC0,[UNISCH,,UNISCH+1]\r
+       005017' 251000  014066'         BLT     AC0,UNISCH+.UNIV-1\r
+       005020' 260740  010703'         PUSHJ   PP,OUTFF        ;RESET PAGE COUNT\r
+       005021' 205000  000001          MOVSI   AC0,1           ;SET SO RELOC 0 WORKS\r
+       005022' 254000  004222'         JRST    LOC10           ;FOR RELOC 0\r
+\r
+                               ; HERE IF PRGEND (PASS 2)\r
+       005023' 402000  013527' PSEND2: SETZM   SBUF            ;SO SUBTTL IS NOT WRONG\r
+       005024' 260740  005115'         PUSHJ   PP,PSEND5       ;PUT TITLE BACK\r
+       005025' 260740  005014'         PUSHJ   PP,PSEND1       ;COMMON  CODE\r
+       005026' 254000  003155'         JRST    PASS20          ;OUTPUT THE ENTRIES\r
+\r
+                               ; HERE IF END (PASS 1)\r
+       005027' 260740  005033' PSEND3: PUSHJ   PP,PSEND4       ;SAVE LAST PROGRAM \r
+       005030' 547000  013731'         HLRS    PRGPTR          ;REINITIALIZE POINTER\r
+       005031' 260740  005115'         PUSHJ   PP,PSEND5       ;READ BACK FIRST PROGRAM\r
+       005032' 254000  003155'         JRST    PASS20\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 99\r
+MACRO  10      24-APR-78 02:11         PSEUDO-OP HANDLERS\r
+\r
+                               ;HERE TO SAVE AND RESTORE SYMBOL TABLE, TITLE AND OTHER USEFUL LOCATIONS\r
+                       000004          XTRA==4                 ;NUMBER OF OTHER LOCATIONS TO SAVE\r
+\r
+       005033' 200300  013377' PSEND4: MOVE    V,FREE          ;GET  NEXT FREE LOCATION\r
+       005034' 271300  000030          ADDI    V,LENGTH+.TBUF/5+XTRA\r
+       005035' 311300  013552'         CAML    V,SYMBOL        ;WILL WORST CASE FIT?\r
+       005036' 260740  010277'         PUSHJ   PP,XCEED        ;NO, EXPAND\r
+       005037' 204300  013377'         MOVS    V,FREE\r
+       005040' 540300  013731'         HRR     V,PRGPTR        ;LAST PRGEND BLOCK\r
+       005041' 546306  000000          HLRM    V,(V)           ;LINK THIS BLOCK\r
+       005042' 336000  013731'         SKIPN   PRGPTR          ;IF FIRST TIME\r
+       005043' 512300  013731'         HLLZM   V,PRGPTR        ;SET LINK TO START OF CHAIN\r
+       005044' 546300  013731'         HLRM    V,PRGPTR        ;POINTER TO IT\r
+       005045' 402020  013377'         SETZM   @FREE           ;CLEAR LINK WORD\r
+       005046' 350000  013377'         AOS     FREE            ;THIS LOCATION USED NOW\r
+       005047' 204000  013552'         MOVS    AC0,SYMBOL      ;BOTTOM OF SYMBOL TABLE\r
+       005050' 540000  013377'         HRR     AC0,FREE        ;FREE SPACE\r
+       005051' 200320  013552'         MOVE    V,@SYMBOL       ;GET NUMBER OF SYMBOLS\r
+       005052' 240300  000001          ASH     V,1             ;TWO WORDS PER SYMBOL\r
+       005053' 271300  000001          ADDI    V,1             ;ONE MORE FOR COUNT\r
+       005054' 273300  013377'         ADDB    V,FREE          ;END OF TABLE WHEN MOVED\r
+       005055' 251006  000000          BLT     AC0,(V)         ;MOVE TABLE\r
+       005056' 550000  003316*         HRRZ    AC0,JOBREL      ;TOP OF CORE\r
+       005057' 275000  000001          SUBI    AC0,1\r
+       005060' 202000  013553'         MOVEM   AC0,SYMTOP      ;FOR NEXT SYMBOL TABLE\r
+       005061' 275000  000004          SUBI    AC0,LENGTH      ;LENGTH OF INITIAL SYMBOLS\r
+       005062' 202000  013552'         MOVEM   AC0,SYMBOL      ;SET POINTER TO COUNT OF SYMBOLS\r
+       005063' 505000  012201'         HRLI    AC0,SYMNUM      ;BLT POINTER\r
+       005064' 251020  013553'         BLT     AC0,@SYMTOP     ;SET UP INITIAL SYMBOL TABLE\r
+       005065' 260740  013125'         PUSHJ   PP,SRCHI        ;SET UP SEARCH POINTER\r
+       005066' 201000  000120          MOVEI   AC0,.TBUF       ;MAX NUMBER OF CHARS. IN TITLE\r
+       005067' 274000  013700'         SUB     AC0,TCNT        ;ACTUAL NUMBER\r
+       005070' 231000  000005          IDIVI   AC0,5           ;NUMBER OF WORDS\r
+       005071' 332000  000001          SKIPE   AC1             ;REMAINDER?\r
+       005072' 271000  000001          ADDI    AC0,1           ;YES\r
+       005073' 202020  013377'         MOVEM   AC0,@FREE       ;STORE COUNT\r
+       005074' 350000  013377'         AOS     FREE            ;THIS LOCATION USED NOW\r
+       005075' 250000  013377'         EXCH    AC0,FREE        ;SET UP AC0 FOR BLT\r
+       005076' 272000  013377'         ADDM    AC0,FREE        ;WILL BE AFTER TITLE MOVES\r
+       005077' 505000  013701'         HRLI    AC0,TBUF        ;BLT POINTER\r
+       005100' 251020  013377'         BLT     AC0,@FREE       ;MOVE TITLE\r
+       005101' 200100  013505'         MOVE    AC2,LITHDX      ;POINTER TO LIT INFO.\r
+       005102' 200002  777777          MOVE    AC0,-1(AC2)     ;SIZE OF PASS1 LOCO\r
+       005103' 260740  005160'         PUSHJ   PP,STORIT       ;SAVE IT IN SYMBOL TABLE\r
+       005104' 200100  013500'         MOVE    AC2,VARHDX      ;SAME FOR VARS\r
+       005105' 200002  777777          MOVE    AC0,-1(AC2)\r
+       005106' 260740  005160'         PUSHJ   PP,STORIT\r
+                               IFN RENTSW,<\r
+                                       MOVE    AC0,HISNSW      ;GET TWOSEG/HISEG FLAG\r
+                                       HRR     AC0,HIGH1       ;AND PASS1 BREAK\r
+                                       PUSHJ   PP,STORIT\r
+                                       JUMPGE  AC0,PSEND6      ;NOT TWOSEG\r
+                                       MOVE    AC0,SVTYP3      ;HIGH SEGMENT OFFSET\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 99-1\r
+MACRO  10      24-APR-78 02:11         PSEUDO-OP HANDLERS\r
+\r
+                                       PUSHJ   PP,STORIT       ;SAVE IT ALSO>\r
+       005107' 200000  013377' PSEND6: MOVE    AC0,FREE        ;GET NEXT FREE LOCATION\r
+       005110' 275000  000001          SUBI    AC0,1           ;LAST ONE USED\r
+       005111' 550300  013731'         HRRZ    V,PRGPTR        ;POINTER TO START OF DATA BLOCK\r
+       005112' 506006  000000          HRLM    AC0,(V)         ;LINK TO END OF BLOCK\r
+       005113' 263740  000000          POPJ    PP,             ;RETURN\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 100\r
+MACRO  10      24-APR-78 02:11         PSEUDO-OP HANDLERS\r
+\r
+       005114' 260740  010277' PSENDX: PUSHJ   PP,XCEED        ;NEED TO EXPAND CORE FIRST\r
+       005115' 550000  005056* PSEND5: HRRZ    AC0,JOBREL      ;GET TOP OF CORE\r
+       005116' 275000  000001          SUBI    AC0,1\r
+       005117' 202000  013553'         MOVEM   AC0,SYMTOP      ;TOP OF NEW SYMBOL TABLE\r
+       005120' 550300  013731'         HRRZ    V,PRGPTR        ;ADDRESS OF THIS BLOCK\r
+       005121' 322300  005165'         JUMPE   V,PSNDER        ;ERROR LINK NOT SET UP\r
+       005122' 200046  000000          MOVE    AC1,(V)         ;NEXT LINK\r
+       005123' 200306  000001          MOVE    V,1(V)          ;GET ITS SYMBOL COUNT\r
+       005124' 240300  000001          ASH     V,1             ;NUMBER OF WORDS\r
+       005125' 271300  000001          ADDI    V,1             ;PLUS ONE FOR COUNT\r
+       005126' 275006  000000          SUBI    AC0,(V)         ;START OF NEW SYMBOL TABLE\r
+       005127' 317000  013377'         CAMG    AC0,FREE        ;WILL IT FIT\r
+       005130' 254000  005114'         JRST    PSENDX          ;NO, NEED TO EXPAND AND RESET AC0\r
+       005131' 270300  013731'         ADD     V,PRGPTR        ;POINT TO END OF SYMBOL TABLE\r
+       005132' 201306  000001          MOVEI   V,1(V)          ;THEN TO BEG OF TITLE\r
+       005133' 202000  013552'         MOVEM   AC0,SYMBOL      ;BOTTOM OF NEW TABLE\r
+       005134' 504000  013731'         HRL     AC0,PRGPTR      ;ADDRESS OF FIRST WORD OF BLOCK\r
+       005135' 270000  014770'         ADD     AC0,[1,,0]      ;MAKE BLT POINTER\r
+       005136' 542040  013731'         HRRM    AC1,PRGPTR      ;POINT TO NEXT BLOCK\r
+       005137' 251020  013553'         BLT     AC0,@SYMTOP     ;MOVE TABLE\r
+       005140' 260740  013125'         PUSHJ   PP,SRCHI        ;SET UP POINTER\r
+       005141' 200046  000000          MOVE    AC1,(V)         ;NUMBER OF WORDS OF TITLE\r
+       005142' 201006  000001          MOVEI   AC0,1(V)        ;START OF STORED TITLE\r
+       005143' 270300  000001          ADD     V,AC1           ;INCREMENT PAST TITLE\r
+       005144' 271040  013700'         ADDI    AC1,TBUF-1      ;END OF TITLE\r
+       005145' 505000  013701'         HRLI    AC0,TBUF        ;WHERE TO PUT IT\r
+       005146' 207000  000000          MOVSS   AC0             ;BLT POINTER\r
+       005147' 251001  000000          BLT     AC0,(AC1)       ;MOVE TITLE\r
+       005150' 661600  000002          TLO     IO,IOTLSN       ;SET AS IF TITLE SEEN\r
+       005151' 200100  013505'         MOVE    AC2,LITHDX      ;INVERSE OF ABOVE\r
+       005152' 260740  005163'         PUSHJ   PP,GETIT\r
+       005153' 202002  777777          MOVEM   AC0,-1(AC2)\r
+       005154' 200100  013500'         MOVE    AC2,VARHDX      ;SAME FOR VARS\r
+       005155' 260740  005163'         PUSHJ   PP,GETIT\r
+       005156' 202002  777777          MOVEM   AC0,-1(AC2)\r
+                               IFN RENTSW,<\r
+                                       PUSHJ   PP,GETIT        ;GET TWO HALF WORDS\r
+                                       HRRZM   AC0,HIGH1       ;PASS1 BREAK\r
+                                       HLLEM   AC0,HISNSW      ;TWOSEG/HISEG FLAG\r
+                                       JUMPGE  AC0,CPOPJ       ;NOT TWOSEG\r
+                                       PUSHJ   PP,GETIT\r
+                                       MOVEM   AC0,SVTYP3      ;BLOCK 3 WORD>\r
+       005157' 263740  000000          POPJ    PP,\r
+\r
+       005160' 202020  013377' STORIT: MOVEM   AC0,@FREE       ;STORE IT IN DATA BLOCK\r
+       005161' 350000  013377'         AOS     FREE            ;ADVANCE POINTER\r
+       005162' 263740  000000          POPJ    PP,\r
+\r
+       005163' 200006  000001  GETIT:  MOVE    AC0,1(V)        ;FILL AC0 OUT OF PRGEND BLOCK\r
+       005164' 344300  003447'         AOJA    V,CPOPJ         ;INCREMENT AND RETURN\r
+\r
+       005165' 561440  014771' PSNDER: HRROI   RC,[SIXBIT      /PRGEND ERROR @/]\r
+       005166' 254000  010176'         JRST    ERRFIN\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 101\r
+MACRO  10      24-APR-78 02:11         PSEUDO-OP HANDLERS\r
+\r
+                               ;MULTIPLE SYMBOL TABLE FEATURE PSEUDO-OPS\r
+\r
+       005167' 325640  004276' UNIV0:  JUMP2   TITLE0          ;DO IT ALL ON PASS 1\r
+       005170' 550200  014122'         HRRZ    SX,UNIVNO       ;GET NUMBER OF UNIVERSALS SEEN\r
+       005171' 301200  000012          CAIL    SX,.UNIV        ;ALLOW ONE MORE?\r
+       005172' 254000  005205'         JRST    UNVERR          ;NO, GIVE FATAL ERROR\r
+       005173' 350000  014122'         AOS     UNIVNO          ;ONE MORE NOW\r
+       005174' 476000  013733'         SETOM   UNIVSN          ;AND SET SEEN A UNIVERSAL\r
+       005175' 254000  004276'         JRST    TITLE0          ;CONTINUE AS IF TITLE\r
+\r
+\r
+       005176' 261740  000011  ADDUNV: PUSH    PP,RC           ;AN AC TO USE\r
+       005177' 260740  002665'         PUSHJ   PP,NOUT         ;CONVERT TO SIXBIT\r
+       005200' 550440  014122'         HRRZ    RC,UNIVNO       ;GET ENTRY INDEX\r
+       005201' 202011  014123'         MOVEM   AC0,UNITBL(RC)  ;STORE SIXBIT NAME IN TABLE\r
+       005202' 553000  013733'         HRRZS   UNIVSN          ;ONLY DO IT ONCE\r
+       005203' 262740  000011          POP     PP,RC           ;RESTORE RC\r
+       005204' 263740  000000          POPJ    PP,             ;AND RETURN\r
+\r
+       005205' 561440  014774' UNVERR: HRROI   RC,[SIXBIT /TOO MANY UNIVERSALS@/]\r
+       005206' 254000  010176'         JRST    ERRFIN\r
+\r
+       005207' 550000  013377' UNISYM: HRRZ    AC0,FREE        ;GET HIGHEST FREE LOCATION\r
+       005210' 202000  000000*         MOVEM   AC0,JOBFF       ;INTO JOBFF\r
+       005211' 260740  004261'         PUSHJ   PP,SUPRSA       ;TURN ON SUPPRESS BIT\r
+       005212' 261740  013552'         PUSH    PP,SYMBOL       ;NEED TO SAVE INCASE PRGEND\r
+       005213' 200000  013553'         MOVE    AC0,SYMTOP      ;TOP OF TABLE\r
+       005214' 274000  013552'         SUB     AC0,SYMBOL      ;GET LENGTH OF TABLE\r
+       005215' 504240  013552'         HRL     ARG,SYMBOL      ;BOTTOM OF TABLE\r
+       005216' 540240  005210*         HRR     ARG,JOBFF       ;WHERE TO GO\r
+       005217' 550440  014122'         HRRZ    RC,UNIVNO       ;GET TABLE INDEX\r
+       005220' 542240  013552'         HRRM    ARG,SYMBOL      ;WILL BE THERE SOON\r
+       005221' 552251  014135'         HRRZM   ARG,UNIPTR(RC)  ;STORE IN CORRESPONDING PLACE\r
+       005222' 273000  005216*         ADDB    AC0,JOBFF       ;WHERE TO END\r
+       005223' 506011  014135'         HRLM    AC0,UNIPTR(RC)  ;SAVE NEW SYMTOP\r
+       005224' 251260  005222*         BLT     ARG,@JOBFF      ;MOVE TABLE\r
+       005225' 552000  014121'         HRRZM   AC0,UNITOP      ;SAVE TOP OF TABLES+1\r
+       005226' 313000  014117'         CAMLE   AC0,MACSIZ      ;IN CASE OVER A K BOUND\r
+       005227' 202000  014117'         MOVEM   AC0,MACSIZ      ;DON'T REDUCE SO FAR NOW\r
+       005230' 202000  013377'         MOVEM   AC0,FREE        ;JUST IN CASE IN MACRO\r
+       005231' 200000  013547'         MOVE    AC0,SRCHX       ;SAVE OLD SEARCH POINTER\r
+       005232' 260740  013125'         PUSHJ   PP,SRCHI        ;GET SEARCH POINTER\r
+       005233' 250000  013547'         EXCH    AC0,SRCHX\r
+       005234' 202011  014147'         MOVEM   AC0,UNISHX(RC)  ;SAVE IT\r
+       005235' 402000  013733'         SETZM   UNIVSN          ;CLEAR FLAG INCASE PRGEND\r
+       005236' 262740  013552'         POP     PP,SYMBOL       ;RESTORE OLD VALUE\r
+       005237' 263740  000000          POPJ    PP,             ;RETURN\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 102\r
+MACRO  10      24-APR-78 02:11         PSEUDO-OP HANDLERS\r
+\r
+       005240' 260740  001043' SERCH0: PUSHJ   PP,GETSYM       ;GET A SYMBOL\r
+       005241' 254000  003400'         JRST    ERRAX           ;ERROR IF NOT VALID\r
+       005242' 201440  000001          MOVEI   RC,1            ;START AT ENTRY ONE\r
+       005243' 301440  000012          CAIL    RC,.UNIV        ;CHECK FOR CONSISTENCY ERROR\r
+       005244' 254000  005260'         JRST    SCHERR          ;CANNOT FIND THIS ONE\r
+       005245' 312011  014123'         CAME    AC0,UNITBL(RC)  ;LOOK FOR MATCH\r
+       005246' 344440  005243'         AOJA    RC,.-3          ;NOT FOUND YET\r
+       005247' 200000  000011          MOVE    AC0,RC          ;STORE TABLE ENTRY NUMBER\r
+       005250' 201440  000001          MOVEI   RC,1            ;START AT ENTRY ONE\r
+       005251' 301440  000012          CAIL    RC,.UNIV        ;CHECK FOR CONSISTENCY ERROR\r
+       005252' 254000  005260'         JRST    SCHERR          ;SHOULD NEVER HAPPEN!!\r
+       005253' 332011  014055'         SKIPE   UNISCH(RC)      ;LOOK FOR AN EMPTY SLOT\r
+       005254' 344440  005251'         AOJA    RC,.-3          ;NOT FOUND YET\r
+       005255' 202011  014055'         MOVEM   AC0,UNISCH(RC)  ;STORE INDEX IN TABLE\r
+       005256' 321400  005240'         JUMPCM  SERCH0          ;LOOK FOR MORE NAMES\r
+       005257' 263740  000000          POPJ    PP,             ;FINISHED\r
+\r
+       005260' 205440  015000' SCHERR: MOVSI   RC,[SIXBIT /CANNOT FIND UNIVERSAL@/]\r
+       005261' 254000  010176'         JRST    ERRFIN          ;NAME IN AC0\r
+\r
+                               ;MESSAGE FOR CASE WHERE FILES AFTER UNIVERSAL USED MORE BUFFER SPACE THAN FIRST UNIVERS\r
+                               AL\r
+                               UNIERR: HRROI   RC,[SIXBIT /UNIVERSAL PROGRAM(S) MUST HAVE SAME OUTPUT SPECIFICATION AS\r
+       005262' 561440  015004'  OTHER FILES@/]\r
+       005263' 254000  010176'         JRST    ERRFIN\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 103\r
+MACRO  10      24-APR-78 02:11         MACRO/REPEAT HANDLERS\r
+\r
+                               SUBTTL  MACRO/REPEAT HANDLERS\r
+\r
+       005264' 260740  004046' REPEA0: PUSHJ   PP,EVALXQ       ;EVALUATE REPEAT EXP, EXTERNS ARE ILL.\r
+       005265' 325400  003400'         JUMPNC  ERRAX\r
+\r
+       005266' 323000  005346' REPEA1: JUMPLE  AC0,REPZ        ;PASS THE EXP., DONT PROCESS\r
+       005267' 362000  005365'         SOJE    AC0,REPO        ;REPEAT ONCE\r
+       005270' 260740  006450' REPEA2: PUSHJ   PP,GCHARQ       ;GET STARTING "<"\r
+       005271' 302340  000074          CAIE    C,"<"\r
+       005272' 254000  005270'         JRST    REPEA2\r
+       005273' 260740  006413'         PUSHJ   PP,SKELI1       ;INITIALIZE SKELETON\r
+       005274' 261700  014020'         PUSH    MP,REPEXP\r
+       005275' 202000  014020'         MOVEM   AC0,REPEXP\r
+       005276' 261700  014021'         PUSH    MP,REPPNT       ;STACK PREVIOUS REPEAT POINTER\r
+       005277' 202240  014021'         MOVEM   ARG,REPPNT      ;STORE NEW POINTER\r
+       005300' 634140  000003          TDZA    SDEL,SDEL       ;YES, INITIALIZE BRACKET COUNT AND SKIP\r
+\r
+       005301' 260740  006456' REPEA4: PUSHJ   PP,WCHARQ       ;WRITE A CHARACTER\r
+       005302' 260740  006450'         PUSHJ   PP,GCHARQ       ;GET A CHARACTER\r
+       005303' 306340  000074          CAIN    C,"<"           ;"<"?\r
+       005304' 344140  005301'         AOJA    SDEL,REPEA4     ;YES, INCREMENT AND WRITE\r
+       005305' 302340  000076          CAIE    C,">"           ;">"?\r
+       005306' 254000  005301'         JRST    REPEA4          ;NO, WRITE THE CHARACTER\r
+       005307' 365140  005301'         SOJGE   SDEL,REPEA4     ;YES, WRITE IF NON-NEGATIVE COUNT\r
+       005310' 205400  774060          MOVSI   CS,(BYTE (7) 177,3)     ;SET "REPEAT" END\r
+       005311' 260740  006466'         PUSHJ   PP,WWRXE        ;WRITE END\r
+       005312' 336000  013773'         SKIPN   LITLVL          ;LITERAL MIGHT END ON LINE\r
+       005313' 332000  014072'         SKIPE   MACLVL          ;IF IN MACRO DARE NOT PROCESS\r
+       005314' 254000  005317'         JRST    .+3             ;REST OF LINE SINCE MACRO MIGHT END ON IT\r
+       005315' 260740  004543'         PUSHJ   PP,BYPASS       ;BYPASS\r
+       005316' 260740  000236'         PUSHJ   PP,STOUTS       ;POLISH OF LINE BEFORE PROCESSING REPEAT\r
+       005317' 261700  000013          PUSH    MP,MRP          ;STACK PREVIOUS READ POINTER\r
+       005320' 261700  014075'         PUSH    MP,RCOUNT       ;SAVE WORD COUNT\r
+       005321' 550540  014021'         HRRZ    MRP,REPPNT      ;SET UP READ POINTER\r
+       005322' 336000  014072'         SKIPN   MACLVL          ;IF IN MACRO GIVE CR-LF FIRST\r
+       005323' 332000  013773'         SKIPE   LITLVL          ;SAME FOR LITERAL\r
+       005324' 254000  005326'         JRST    REPEA7\r
+       005325' 344540  000455'         AOJA    MRP,POPOUT      ;BYPASS ARG COUNT\r
+\r
+       005326' 550540  014021' REPEA7: HRRZ    MRP,REPPNT      ;SET UP READ POINTER\r
+       005327' 271540  000001          ADDI    MRP,1           ;BYPASS ARG COUNT\r
+       005330' 201340  000015  REPEA8: MOVEI   C,CR\r
+       005331' 254000  001421'         JRST    RSW1\r
+\r
+       005332' 371000  014020' REPEND: SOSL    REPEXP\r
+       005333' 254000  005326'         JRST    REPEA7\r
+       005334' 550300  014021'         HRRZ    V,REPPNT        ;GET START OF TREE\r
+       005335' 260740  006546'         PUSHJ   PP,REFDEC       ;DECREMENT REFERENCE\r
+       005336' 262700  014075'         POP     MP,RCOUNT\r
+       005337' 262700  000013          POP     MP,MRP\r
+       005340' 262700  014021'         POP     MP,REPPNT\r
+       005341' 262700  014020'         POP     MP,REPEXP\r
+       005342' 336000  013773'         SKIPN   LITLVL          ;IF IN LITERAL OR\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 103-1\r
+MACRO  10      24-APR-78 02:11         MACRO/REPEAT HANDLERS\r
+\r
+       005343' 332000  014072'         SKIPE   MACLVL          ;IF IN MACRO\r
+       005344' 254000  001417'         JRST    RSW0            ;FINISH OF LINE NOW\r
+       005345' 254000  005330'         JRST    REPEA8\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 104\r
+MACRO  10      24-APR-78 02:11         MACRO/REPEAT HANDLERS\r
+\r
+       005346' 200140  014101' REPZ:   MOVE SDEL,SEQNO2        ;SAVE IN CASE OF END OF FILE\r
+       005347' 202140  013760'         MOVEM SDEL,REPSEQ\r
+       005350' 200140  014100'         MOVE SDEL,PAGENO\r
+       005351' 202140  013757'         MOVEM SDEL,REPPG\r
+       005352' 476000  013744'         SETOM INREP\r
+       005353' 201140  000000          MOVEI SDEL,0    ;SET COUNT\r
+       005354' 260740  006451' REPZ1:  PUSHJ   PP,GCHAR        ;GET NEXT CHARACTER\r
+       005355' 306340  000074          CAIN    C,"<"           ;"<"?\r
+       005356' 344140  005354'         AOJA    SDEL,REPZ1      ;YES, INCREMENT COUNT\r
+       005357' 306340  000076          CAIN    C,">"           ;">"?\r
+       005360' 363140  005362'         SOJLE   SDEL,REPZ2      ;YES, EXIT IF MATCHING\r
+       005361' 254000  005354'         JRST    REPZ1           ;NO, RECYCLE\r
+       005362' 402000  013744' REPZ2:  SETZM   INREP   ;FLAG OUT OF IT\r
+       005363' 402000  013747'         SETZM   INCND   ;AND CONDITIONAL ALSO\r
+       005364' 254000  000125'         JRST    STMNT   ;AND EXIT\r
+\r
+       005365' 260740  006451' REPO:   PUSHJ   PP,GCHAR        ;GET "<"\r
+       005366' 302340  000074          CAIE    C,"<"\r
+       005367' 254000  005365'         JRST    REPO\r
+       005370' 332000  014022'         SKIPE   RPOLVL          ;ARE WE NESTED?\r
+       005371' 350000  014022'         AOS     RPOLVL          ;YES, DECREMENT CURRENT\r
+       005372' 261700  014022'         PUSH    MP,RPOLVL\r
+       005373' 476000  014022'         SETOM   RPOLVL\r
+       005374' 254000  000125'         JRST    STMNT\r
+\r
+       005375' 306340  000074  REPO1:  CAIN    C,"<"\r
+       005376' 370000  014022'         SOS     RPOLVL\r
+       005377' 306340  000076          CAIN    C,">"\r
+       005400' 352000  014022'         AOSE    RPOLVL\r
+       005401' 254000  001423'         JRST    RSW2\r
+       005402' 262700  014022'         POP     MP,RPOLVL\r
+       005403' 260740  001423'         PUSHJ   PP,RSW2\r
+       005404' 254000  001417'         JRST    RSW0\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 105\r
+MACRO  10      24-APR-78 02:11         MACRO/REPEAT HANDLERS\r
+\r
+       005405' 260740  001043' DEFIN0: PUSHJ   PP,GETSYM       ;GET MACRO NAME\r
+       005406' 254000  003400'         JRST    ERRAX           ;EXIT ON ERROR\r
+       005407' 202740  014015'         MOVEM   PP,PPTMP1       ;SAVE POINTER\r
+       005410' 202000  014016'         MOVEM   AC0,PPTMP2      ;SAVE NAME\r
+       005411' 661600  000004          TLO     IO,IORPTC\r
+       005412' 200200  014101'         MOVE SX,SEQNO2  ;SAVE IN CASE OF EOF\r
+       005413' 202200  013754'         MOVEM SX,DEFSEQ\r
+       005414' 200200  014100'         MOVE SX,PAGENO\r
+       005415' 202200  013753'         MOVEM SX,DEFPG\r
+       005416' 476000  013745'         SETOM INDEF     ;AND FLAG IN DEFINE\r
+                                       SYN     .TEMP,COMSW     ;SAVE SPACE\r
+       005417' 403200  014054'         SETZB   SX,COMSW        ;SET ARGUMENT AND REFERENCE COUNT AND COMMENT SWITCH\r
+       005420' 260740  006451' DEF02:  PUSHJ   PP,GCHAR        ;SEARCH FOR "(" OR "<"\r
+       005421' 307340  000014          CAIG    C,FF            ;SEARCH FOR END OF LINE\r
+       005422' 305340  000012          CAIGE   C,LF            ;LF,VT, OR FF\r
+       005423' 254000  005425'         JRST    .+2             ;WASN'T ANY OF THEM\r
+       005424' 402000  014054'         SETZM   COMSW           ;RESET COMMENT SWITCH\r
+       005425' 306340  000073          CAIN    C,";"           ;COMMENT?\r
+       005426' 476000  014054'         SETOM   COMSW           ;YES, SET COMMENT SWITCH\r
+       005427' 332000  014054'         SKIPE   COMSW           ;INSIDE A COMMENT?\r
+       005430' 254000  005420'         JRST    DEF02           ;YES, IGNORE CHARACTER\r
+       005431' 306340  000074          CAIN    C,"<"           ;"<"?\r
+       005432' 254000  005450'         JRST    DEF20           ;YES\r
+       005433' 302340  000050          CAIE    C,"("           ;"("?\r
+       005434' 254000  005420'         JRST    DEF02           ;NO\r
+       005435' 260740  001043' DEF10:  PUSHJ   PP,GETSYM       ;YES, GET DUMMY SYMBOL\r
+       005436' 660600  040000          TRO     ER,ERRA         ;FLAG ERROR\r
+       005437' 271200  000001          ADDI    SX,1            ;INCREMENT ARG COUNT\r
+       005440' 261740  000000          PUSH    PP,AC0          ;STACK IT\r
+       005441' 306340  000034          CAIN    C,'<'           ;A DEFAULT ARGUMENT COMING UP?\r
+       005442' 254000  005663'         JRST    DEF80           ;YES, STORE IT AWAY\r
+       005443' 302340  000011          CAIE    C,11            ;")"?\r
+       005444' 254000  005435'         JRST    DEF10           ;NO, GET NEXT DUMMY SYMBOL\r
+       005445' 260740  006451' DEF12:  PUSHJ   PP,GCHAR\r
+       005446' 302340  000074          CAIE    C,"<"           ;"<"?\r
+       005447' 254000  005445'         JRST    DEF12           ;NO\r
+       005450' 261740  014625' DEF20:  PUSH    PP,[0]          ;YES, MARK THE LIST\r
+       005451' 242200  000011          LSH     SX,9            ;SHIFT ARG COUNT\r
+       005452' 350240  000004          AOS     ARG,SX\r
+       005453' 260740  006414'         PUSHJ   PP,SKELI        ;INITIALIZE MACRO SKELETON\r
+       005454' 200000  014016'         MOVE    AC0,PPTMP2      ;GET NAME\r
+       005455' 661600  000040          TLO IO,DEFCRS\r
+       005456' 260740  012573'         PUSHJ   PP,MSRCH        ;SEARCH THE TABLE\r
+       005457' 254000  005463'         JRST    DEF24           ;NOT FOUND\r
+       005460' 607240  020000          TLNN    ARG,MACF        ;FOUND, IS IT A MACRO?\r
+       005461' 664600  100000          TROA    ER,ERRX         ;NO, FLAG ERROR AND SKIP\r
+       005462' 260740  006546'         PUSHJ   PP,REFDEC       ;YES, DECREMENT THE REFERENCE\r
+       005463' 550300  014074' DEF24:  HRRZ    V,WWRXX         ;GET START OF TREE\r
+       005464' 336000  014054'         SKIPN   .TEMP           ;ANY DEFAULT ARGUMENTS TO TAKE CARE OF?\r
+       005465' 254000  005513'         JRST    DEF25           ;NO\r
+       005466' 550346  000001          HRRZ    C,1(V)          ;GET SHIFTED ARG COUNT\r
+       005467' 242340  777767          LSH     C,-9            ;GET ARG COUNT BACK\r
+       005470' 271340  000001          ADDI    C,1             ;ONE MORE FOR TERMINAL ZERO\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 105-1\r
+MACRO  10      24-APR-78 02:11         MACRO/REPEAT HANDLERS\r
+\r
+       005471' 270340  014054'         ADD     C,.TEMP         ;NUMBER OF ITEMS IN STACK\r
+       005472' 507000  000007          HRLS    C               ;MAKE XWD\r
+       005473' 274740  000007          SUB     PP,C            ;BACK UP STACK\r
+       005474' 200140  014054'         MOVE    SDEL,.TEMP      ;NUMBER OF WORDS NEEDED\r
+       005475' 273140  013377'         ADDB    SDEL,FREE       ;FROM FREE CORE\r
+       005476' 311140  013552'         CAML    SDEL,SYMBOL     ;MORE CORE NEEDED\r
+       005477' 260740  010276'         PUSHJ   PP,XCEEDS       ;YES, TRY TO GET IT\r
+       005500' 274140  014054'         SUB     SDEL,.TEMP      ;FORM POINTER\r
+       005501' 506146  000001          HRLM    SDEL,1(V)       ;STORE IT WITH ARG COUNT IN MACRO\r
+       005502' 275140  000001          SUBI    SDEL,1          ;TO USE FOR PUSHING POINTER INTO STORAGE\r
+       005503' 201357  000001          MOVEI   C,1(PP)         ;POINT TO START OF STACK\r
+       005504' 200247  000000  DEF26:  MOVE    ARG,(C)         ;GET AN ITEM OFF STACK\r
+       005505' 607240  777740          TLNN    ARG,-40         ;A POINTER?\r
+                                       JUMPN   ARG,[PUSH SDEL,ARG      ;YES, STORE IT\r
+                               \r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 106\r
+MACRO  10      24-APR-78 02:11         MACRO/REPEAT HANDLERS\r
+\r
+       005506' 326240  015020'                 AOJA    C,DEF26]        ;GET NEXT\r
+       005507' 261740  000005          PUSH    PP,ARG          ;RESTACK ARGUMENT\r
+       005510' 332000  000005          SKIPE   ARG             ;FINISHED IF ZERO\r
+       005511' 344340  005504'         AOJA    C,DEF26 ;GET NEXT\r
+       005512' 261140  000005          PUSH    SDEL,ARG        ;STORE ZERO IN DEFAULT LIST ALSO\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 107\r
+MACRO  10      24-APR-78 02:11         MACRO/REPEAT HANDLERS\r
+\r
+       005513' 205240  020000  DEF25:  MOVSI   ARG,MACF\r
+       005514' 202740  014016'         MOVEM   PP,PPTMP2       ;STORE TEMP STORAGE POINTER\r
+       005515' 260740  013036'         PUSHJ   PP,INSERT       ;INSERT/UPDATE\r
+       005516' 621600  000040          TLZ IO,DEFCRS   ;JUST IN CASE\r
+       005517' 402000  014070'         SETZM   ARGF            ;NO ARGUMENT SEEN\r
+       005520' 402000  014067'         SETZM   SQFLG           ;AND NO ' SEEN\r
+       005521' 634140  000003          TDZA    SDEL,SDEL       ;CLEAR BRACKET COUNT\r
+       005522' 260740  006456' DEF30:  PUSHJ   PP,WCHAR        ;WRITE CHARACTER\r
+       005523' 260740  006451' DEF31:  PUSHJ   PP,GCHAR        ;GET A CHARACTER\r
+       005524' 200400  000007  DEF32:  MOVE    CS,C            ;GET A COPY\r
+       005525' 306340  000073          CAIN    C,";"           ;IS IT A COMMENT\r
+       005526' 254000  005565'         JRST    CPEEK           ;YES CHECK FOR ;;\r
+       005527' 307400  000172  DEF33:  CAIG CS,"Z"+40          ;CONVERT LOWER CASE\r
+       005530' 305400  000141          CAIGE CS,"A"+40\r
+       005531' 254000  005533'         JRST    .+2\r
+       005532' 275400  000040          SUBI CS,40\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 108\r
+MACRO  10      24-APR-78 02:11         MACRO/REPEAT HANDLERS\r
+\r
+       005533' 305400  000040          CAIGE CS,40             ;TEST FOR CONTROL CHAR.\r
+                                       JRST    [SKIPN  SQFLG   ;HAS SINGLE QUOTE BEEN SEEN?\r
+                                               JRST    DEF30   ;NO, OUTPUT THIS CHAR.\r
+                                               PUSH    PP,C    ;YES, SAVE CURRENT CHAR\r
+                                               MOVEI   C,47    ;SET UP QUOTE\r
+                                               PUSHJ   PP,WCHAR;WRITE IT\r
+                                               POP     PP,C    ;GET BACK CURRENT CHAR.\r
+                                               SETZM   SQFLG   ;RESET FLAG\r
+       005534' 254000  015022'                 JRST    DEF30]  ;AND CONTINUE \r
+       005535' 303400  000137          CAILE CS,77+40\r
+       005536' 254000  005522'         JRST    DEF30           ;TEST FOR SPECIAL\r
+       005537' 200410  001416'         MOVE    CS,CSTAT-40(CS) ;GET STATUS BITS\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 109\r
+MACRO  10      24-APR-78 02:11         MACRO/REPEAT HANDLERS\r
+\r
+       005540' 603400  000006          TLNE    CS,6            ;ALPHA-NUMERIC?\r
+       005541' 254000  005602'         JRST    DEF40           ;YES\r
+       005542' 336000  014067'         SKIPN   SQFLG           ;WAS A ' SEEN?\r
+       005543' 254000  005551'         JRST    DEF36           ;NO, PROCESH\r
+       005544' 261740  000007          PUSH    PP,C            ;YES, SAVE CURRENT CHARACTER\r
+       005545' 201340  000047          MOVEI   C,47            ;AND PUT IN A '\r
+       005546' 260740  006456'         PUSHJ   PP,WCHAR        ;...\r
+       005547' 262740  000007          POP     PP,C            ;RESTORE CURRENT CHARACTER\r
+       005550' 402000  014067'         SETZM   SQFLG           ;AND RESET FLAG\r
+       005551' 302340  000047  DEF36:  CAIE    C,47            ;IS THIS A '?\r
+       005552' 254000  005557'         JRST    DEF35           ;NOPE\r
+       005553' 336000  014070'         SKIPN   ARGF            ;YES, WAS LAST THING SEEN AN ARG?\r
+       005554' 476000  014067'         SETOM   SQFLG           ;IF NOT, SET SNGL QUOT FLAG\r
+       005555' 402000  014070'         SETZM   ARGF            ;BUT NOT ARGUMENT IN ANY CASE\r
+       005556' 254000  005523'         JRST    DEF31           ;GO GET NEXT CHARACTER\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 110\r
+MACRO  10      24-APR-78 02:11         MACRO/REPEAT HANDLERS\r
+\r
+       005557' 402000  014070' DEF35:  SETZM   ARGF            ;THIS IS NOT AN ARGUMENT\r
+       005560' 306340  000074          CAIN    C,"<"           ;"<"?\r
+       005561' 344140  005522'         AOJA    SDEL,DEF30      ;YES, INCREMENT COUNT AND WRITE\r
+       005562' 306340  000076          CAIN    C,">"           ;">"?\r
+       005563' 361140  005656'         SOJL    SDEL,DEF70      ;YES, TEST FOR END\r
+       005564' 254000  005522'         JRST    DEF30           ;NO, WRITE IT\r
+\r
+       005565' 607600  004000  CPEEK:  TLNN    IO,IOPALL       ;IF LALL IS ON\r
+       005566' 254000  005527'         JRST    DEF33           ;JUST RETURN\r
+       005567' 260740  006531'         PUSHJ   PP,PEEK         ;LOOK AT NEXT CHAR.\r
+       005570' 306340  000073          CAIN    C,";"           ;IS IT ;;?\r
+       005571' 254000  005574'         JRST    CPEEK1          ;YES\r
+       005572' 200340  000010          MOVE    C,CS            ;RESTORE C\r
+       005573' 254000  005527'         JRST    DEF33           ;AND RETURN\r
+\r
+       005574' 260740  006451' CPEEK1: PUSHJ   PP,GCHAR        ;GET THE CHAR.\r
+       005575' 302340  000076          CAIE    C,">"           ;RETURN IF END OF MACRO\r
+       005576' 307340  000015          CAIG    C,CR            ;IS CHAR ONE OF\r
+       005577' 305340  000012          CAIGE   C,LF            ;LF,VT,FF,CR\r
+       005600' 254000  005574'         JRST    CPEEK1          ;NO,SO GET NEXT CHAR.\r
+       005601' 254000  005524'         JRST    DEF32           ;YES,RETURN AND STORE\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 111\r
+MACRO  10      24-APR-78 02:11         MACRO/REPEAT HANDLERS\r
+\r
+       005602' 201000  000000  DEF40:  MOVEI   AC0,0           ;CLEAR ATOM\r
+       005603' 205040  440600          MOVSI   AC1,(POINT 6,AC0)       ;SET POINTER\r
+       005604' 261740  000007  DEF42:  PUSH    PP,C            ;STACK CHARACTER\r
+       005605' 603040  770000          TLNE    AC1,770000      ;HAVE WE STORED 6?\r
+       005606' 136400  000001          IDPB    CS,AC1          ;NO, STORE IN ATOM\r
+       005607' 260740  006451'         PUSHJ   PP,GCHAR        ;GET NEXT CHARACTER\r
+       005610' 200400  000007          MOVE    CS,C\r
+       005611' 307400  000172          CAIG CS,"Z"+40\r
+       005612' 305400  000141          CAIGE CS,"A"+40\r
+       005613' 254000  005615'         JRST    .+2\r
+       005614' 275400  000040          SUBI CS,40              ;CONVERT LOWER TO UPPER\r
+       005615' 301400  000040          CAIL CS,40\r
+       005616' 303400  000137          CAILE CS,77+40\r
+       005617' 254000  005623'         JRST    DEF44           ;TEST SPECIAL\r
+       005620' 200410  001416'         MOVE    CS,CSTAT-40(CS) ;GET STATUS\r
+       005621' 603400  000006          TLNE    CS,6            ;ALPHA-NUMERIC?\r
+       005622' 254000  005604'         JRST    DEF42           ;YES, GET ANOTHER\r
+       005623' 261740  014625' DEF44:  PUSH    PP,[0]          ;NO, MARK THE LIST\r
+       005624' 200200  014015'         MOVE    SX,PPTMP1       ;GET POINTER TO TOP\r
+\r
+       005625' 336004  000001  DEF46:  SKIPN   1(SX)           ;END OF LIST?\r
+       005626' 254000  005645'         JRST    DEF50           ;YES\r
+       005627' 312004  000001          CAME    AC0,1(SX)       ;NO, DO THEY COMPARE?\r
+       005630' 344200  005625'         AOJA    SX,DEF46        ;NO, TRY AGAIN\r
+       005631' 274200  014015'         SUB     SX,PPTMP1       ;YES, GET DUMMY SYMBOL NUMBER\r
+       005632' 242200  000004          LSH SX,4\r
+       005633' 205404  776020          MOVSI   CS,<(BYTE (7) 177,101)>(SX)     ;SET ESCAPE CODE MACEND\r
+       005634' 242000  777742          LSH     AC0,-^D30\r
+       005635' 306000  000005          CAIN    AC0,5           ;"%"?\r
+       005636' 661400  001000          TLO     CS,1000         ;YES, SET CRESYM FLAG\r
+       005637' 260740  006462'         PUSHJ   PP,WWORD        ;WRITE THE WORD\r
+       005640' 476000  014070'         SETOM ARGF              ;SET ARGUMENT SEEN FLAG\r
+       005641' 402000  014067'         SETZM SQFLG             ;AND IGNORE ANY ' WAITING TO GET INTO STRING\r
+       005642' 200740  014016' DEF48:  MOVE    PP,PPTMP2       ;RESET PUSHDOWN POINTER\r
+       005643' 661600  000004          TLO     IO,IORPTC       ;ECHO LAST CHARACTER\r
+       005644' 254000  005523'         JRST    DEF31           ;RECYCLE\r
+\r
+       005645'                 DEF50:\r
+       005645' 336000  014067'         SKIPN   SQFLG           ;HAVE WE SEEN A '?\r
+       005646' 254000  005652'         JRST    DEF51           ;NOPE\r
+       005647' 201340  000047          MOVEI   C,47            ;YES, PUT IT IN\r
+       005650' 260740  006456'         PUSHJ   PP,WCHAR        ;...\r
+       005651' 402000  014067'         SETZM   SQFLG           ;AND CLEAR FLAG\r
+       005652' 200344  000002  DEF51:  MOVE    C,2(SX)         ;GET CHARACTER\r
+       005653' 322340  005642'         JUMPE   C,DEF48         ;CLEAN UP IF END\r
+       005654' 260740  006456'         PUSHJ   PP,WCHAR        ;WRITE THE CHARACTER\r
+       005655' 344200  005652'         AOJA    SX,DEF51        ;GET NEXT\r
+\r
+       005656' 200740  014015' DEF70:  MOVE    PP,PPTMP1       ;RESTORE PUSHDOWN POINTER\r
+       005657' 205400  774020          MOVSI   CS,(BYTE (7) 177,1)\r
+       005660' 260740  006466'         PUSHJ   PP,WWRXE        ;WRITE END\r
+       005661' 402000  013745'         SETZM INDEF     ;OUT OF IT\r
+       005662' 254000  004543'         JRST    BYPASS\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 112\r
+MACRO  10      24-APR-78 02:11         MACRO/REPEAT HANDLERS\r
+\r
+                               ; HERE TO STORE DEFAULT ARGUMENTS\r
+\r
+       005663' 350000  014054' DEF80:  AOS     .TEMP           ;COUNT ONE MORE\r
+       005664' 260740  006413'         PUSHJ   PP,SKELI1       ;INITIALIZE SKELETON\r
+       005665' 504300  000004          HRL     V,SX            ;SYMBOL NUMBER\r
+       005666' 261740  000006          PUSH    PP,V            ;STORE POINTER\r
+       005667' 634140  000003          TDZA    SDEL,SDEL       ;ZERO BRACKET COUNT\r
+       005670' 260740  006456' DEF81:  PUSHJ   PP,WCHARQ       ;WRITE A CHARACTER\r
+       005671' 260740  006450'         PUSHJ   PP,GCHARQ       ;GET A CHARACTER\r
+       005672' 306340  000074          CAIN    C,"<"           ;ANOTHER "<"?\r
+       005673' 344140  005670'         AOJA    SDEL,DEF81      ;YES, INCREMENT AND WRITE\r
+       005674' 302340  000076          CAIE    C,">"           ;CLOSING ANGLE?\r
+       005675' 254000  005670'         JRST    DEF81           ;NO, JUST WRITE THE CHAR.\r
+       005676' 365140  005670'         SOJGE   SDEL,DEF81      ;YES, WRITE IF NOT END\r
+       005677' 205400  774040          MOVSI   CS,(BYTE (7) 177,2)\r
+       005700' 260740  006466'         PUSHJ   PP,WWRXE        ;WRITE END OF DUMMY ARGUMENT\r
+       005701' 260740  006451'         PUSHJ   PP,GCHAR        ;READ AT NEXT CHAR.\r
+       005702' 302340  000051          CAIE    C,")"           ;END OF ARGUMENT LIST?\r
+       005703' 254000  005435'         JRST    DEF10           ;NO, GET NEXT SYMBOL\r
+       005704' 254000  005445'         JRST    DEF12           ;YES, LOOK FOR "<"\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 113\r
+MACRO  10      24-APR-78 02:11         MACRO CALL PROCESSOR\r
+\r
+                               SUBTTL  MACRO CALL PROCESSOR\r
+       005705' 335000  014071' CALLM:  SKIPGE  MACENL          ;ARE WE TRYING TO RE-ENTER?\r
+       005706' 254000  003400'         JRST    ERRAX           ;YES, BOMB OUT WITH ERROR\r
+       005707' 563000  014071'         HRROS   MACENL          ;FLAG "CALLM IN PROGRESS"\r
+       005710' 250700  013250'         EXCH    MP,RP\r
+       005711' 261700  000006          PUSH    MP,V            ;STACK FOR REFDEC\r
+       005712' 250700  013250'         EXCH    MP,RP\r
+       005713' 202000  013750'         MOVEM   AC0,CALNAM      ;SAVE MACRO NAME INCASE OF ERROR\r
+       005714' 200140  014101'         MOVE SDEL,SEQNO2        ;SAVE IN CASE OF EOF\r
+       005715' 202140  013752'         MOVEM SDEL,CALSEQ\r
+       005716' 200140  014100'         MOVE SDEL,PAGENO\r
+       005717' 202140  013751'         MOVEM SDEL,CALPG\r
+       005720' 271300  000001          ADDI    V,1             ;POINT TO DUMMY SYMBOL COUNT\r
+       005721' 350146  000000          AOS     SDEL,0(V)       ;INCREMENT ARG COUNT\r
+       005722' 512140  014054'         HLLZM   SDEL,.TEMP      ;DEFAULT ARG POINTER IF NON-ZERO\r
+       005723' 246140  777723          LSHC    SDEL,-^D<9+36>  ;ZERO SDEL, GET ARG COUNT IN SX\r
+       005724' 405200  000777          ANDI    SX,777          ;MASK\r
+       005725' 332000  014054'         SKIPE   .TEMP           ;IF AT LEAST ONE DEFAULT ARG\r
+       005726' 542200  014054'         HRRM    SX,.TEMP        ;STORE COUNT OF ARGS\r
+       005727' 261740  000006          PUSH    PP,V            ;STACK FOR MRP\r
+       005730' 261740  013250'         PUSH    PP,RP           ;STACK FOR MACPNT\r
+       005731' 322200  005776'         JUMPE   SX,MAC20        ;TEST FOR NO ARGS\r
+       005732' 260740  001415'         PUSHJ   PP,CHARAC\r
+       005733' 302340  000050          CAIE    C,"("           ;"("\r
+       005734' 664140  777777          TROA    SDEL,-1         ;NO, FUDGE PAREN COUNT AND SKIP\r
+\r
+       005735' 260740  006451' MAC10:  PUSHJ   PP,GCHAR        ;GET A CHARACTER, LOOK FOR AN ARG\r
+       005736' 307340  000015          CAIG C,CR\r
+       005737' 305340  000012          CAIGE C,LF\r
+       005740' 306340  000073          CAIN    C,";"           ;";"?\r
+       005741' 254000  006000'         JRST    MAC21           ;YES, END OF ARGUMENT STRING\r
+\r
+       005742' 260740  006413'         PUSHJ   PP,SKELI1       ;NO, INITIALIZE SKELETON\r
+       005743' 306340  000074          CAIN    C,"<"           ;"<"?\r
+       005744' 254000  006073'         JRST    MAC30           ;YES, PROCESS AS SPECIAL\r
+       005745' 302340  000176          CAIE C,176\r
+       005746' 306340  000134          CAIN    C,134           ;"\"\r
+       005747' 254000  006103'         JRST    MAC40           ;YES, PROCESS SYMBOL\r
+\r
+       005750' 306340  000054  MAC14:  CAIN    C,","           ;","?\r
+       005751' 254000  005767'         JRST    MAC16           ;YES; NULL SYMBOL\r
+       005752' 306340  000050          CAIN    C,"("           ;"("?\r
+       005753' 271140  000001          ADDI    SDEL,1          ;YES, INCREMENT COUNT\r
+       005754' 306340  000051          CAIN    C,")"           ;")"?\r
+       005755' 361140  005767'         SOJL    SDEL,MAC16      ;YES, TEST FOR END\r
+       005756' 260740  006456'         PUSHJ   PP,WCHAR        ;WRITE INTO SKELETON\r
+       005757' 260740  001415' MAC14A: PUSHJ   PP,CHARAC       ;GET NEXT CHARACTER\r
+       005760' 307340  000015          CAIG C,CR\r
+       005761' 305340  000012          CAIGE C,LF\r
+       005762' 254000  005764'         JRST    .+2\r
+       005763' 254000  005766'         JRST    MAC15           ;TEST FOR END OF LINE\r
+       005764' 302340  000073          CAIE    C,";"           ;";"?\r
+       005765' 254000  005750'         JRST    MAC14           ;YES, END OF LINE\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 113-1\r
+MACRO  10      24-APR-78 02:11         MACRO CALL PROCESSOR\r
+\r
+\r
+       005766' 661600  000004  MAC15:  TLO     IO,IORPTC\r
+       005767' 205400  774040  MAC16:  MOVSI   CS,(BYTE (7) 177,2)\r
+       005770' 260740  006466'         PUSHJ   PP,WWRXE        ;WRITE END\r
+       005771' 250700  013250'         EXCH    MP,RP\r
+       005772' 261700  014074'         PUSH    MP,WWRXX\r
+       005773' 250700  013250'         EXCH    MP,RP\r
+       005774' 363200  005776'         SOJLE   SX,MAC20        ;BRANCH IF NO MORE ARGS\r
+       005775' 325140  005735'         JUMPGE  SDEL,MAC10      ;HAVEN'T SEEN TERMINAL ")" YET\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 114\r
+MACRO  10      24-APR-78 02:11         MACRO CALL PROCESSOR\r
+\r
+       005776' 627600  000004  MAC20:  TLZN    IO,IORPTC\r
+       005777' 260740  001415'         PUSHJ   PP,CHARAC\r
+       006000' 250700  013250' MAC21:  EXCH    MP,RP\r
+       006001' 322200  006023'         JUMPE   SX,MAC21B       ;NO MISSING ARGS\r
+       006002' 261700  014607' MAC21A: PUSH    MP,[-1]         ;FILL IN MISSING ARGS\r
+       006003' 336000  014054'         SKIPN   .TEMP           ;ANY DEFAULT ARGS?\r
+       006004' 254000  006022'         JRST    MAC21C          ;NO\r
+       006005' 550340  014054'         HRRZ    C,.TEMP         ;GET ARG COUNT\r
+       006006' 275344  777777          SUBI    C,-1(SX)        ;ACCOUNT FOR THOSE GIVEN\r
+       006007' 517000  000007          HRLZS   C               ;PUT IN LEFT HALF\r
+       006010' 554140  014054'         HLRZ    SDEL,.TEMP      ;ADDRESS OF TABLE\r
+       006011' 336003  000000  MAC21D: SKIPN   (SDEL)          ;END OF LIST\r
+       006012' 254000  006022'         JRST    MAC21C          ;YES\r
+       006013' 430343  000000          XOR     C,(SDEL)        ;TEST FOR CORRECT ARG\r
+       006014' 607340  777777          TLNN    C,-1            ;WAS IT?\r
+       006015' 254000  006020'         JRST    MAC21E          ;YES\r
+       006016' 430343  000000          XOR     C,(SDEL)        ;BACK THE WAY IT WAS\r
+       006017' 344140  006011'         AOJA    SDEL,MAC21D     ;AND TRY AGAIN\r
+\r
+       006020' 202356  000000  MAC21E: MOVEM   C,(MP)          ;REPLACE -1 WITH TREE POINTER\r
+       006021' 350007  000001          AOS     1(C)            ;INCREMENT REFERENCE\r
+       006022' 367200  006002' MAC21C: SOJG    SX,MAC21A\r
+       006023' 261700  014625' MAC21B: PUSH    MP,[0]          ;SET TERMINAL\r
+       006024' 550340  013452'         HRRZ    C,LIMBO\r
+       006025' 607600  000001          TLNN    IO,IOSALL       ;SUPPRESSING ALL?\r
+       006026' 254000  006045'         JRST    MAC23           ;NO\r
+       006027' 326540  006043'         JUMPN   MRP,MAC27       ;IN MACRO?\r
+       006030' 302340  000073          CAIE    C,";"           ;NO,IN COMMENT?\r
+       006031' 254000  006036'         JRST    MAC26           ;NO\r
+       006032' 260740  001415' MAC22:  PUSHJ   PP,CHARAC       ;YES,GET IT INTO THE LBUF\r
+       006033' 307340  000015          CAIG    C,CR            ;LESS THAN CR?\r
+       006034' 305340  000012          CAIGE   C,LF            ;AND GREATER THAN LF?\r
+       006035' 254000  006032'         JRST    MAC22           ;NO GET ANOTHER\r
+       006036' 515200  070000  MAC26:  HRLZI   SX,70000        ;DECREMENT BYTE POINTER\r
+       006037' 273200  013453'         ADDB    SX,LBUFP\r
+       006040' 325200  006043'         JUMPGE  SX,MAC27\r
+       006041' 525200  347777          HRLOI   SX,347777\r
+       006042' 272200  013453'         ADDM    SX,LBUFP\r
+       006043' 505340  777777  MAC27:  HRLI    C,-1            ;SET FLAG\r
+       006044' 254000  006060'         JRST    MAC25\r
+\r
+       006045' 201200  000136  MAC23:  MOVEI   SX,"^"\r
+       006046' 321600  006057'         JUMPAD  MAC24           ;BRANCH IF ADDRESS FIELD\r
+       006047' 306340  000073          CAIN    C,";"           ;IF SEMI-COLON\r
+       006050' 332000  013773'         SKIPE   LITLVL          ;AND NOT IN A LITERAL\r
+       006051' 254000  006057'         JRST    MAC24           ;NOT BOTH TRUE\r
+       006052' 326540  006057'         JUMPN   MRP,MAC24       ;OR IN A MACRO\r
+       006053' 260740  000237'         PUSHJ   PP,STOUT        ;LIST COMMENT OR CR-LF\r
+       006054' 603600  004000          TLNE    IO,IOPALL       ;MACRO EXPANSION SUPPRESSION?\r
+       006055' 661600  010000          TLO     IO,IOMAC        ;  NO, SET TEMP BIT\r
+       006056' 674340  014607'         TDOA    C,[-1]          ;FLAG LAST CHARACTER\r
+       006057' 137200  013453' MAC24:  DPB     SX,LBUFP        ;SET ^ INTO LINE BUFFER\r
+       006060' 261700  014073' MAC25:  PUSH    MP,MACPNT\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 114-1\r
+MACRO  10      24-APR-78 02:11         MACRO CALL PROCESSOR\r
+\r
+       006061' 262740  014073'         POP     PP,MACPNT\r
+       006062' 261700  000007          PUSH    MP,C\r
+       006063' 261700  014075'         PUSH    MP,RCOUNT       ;STACK WORD COUNT\r
+       006064' 261700  000013          PUSH    MP,MRP          ;STACK MACRO POINTER\r
+       006065' 262740  000013          POP     PP,MRP          ;SET NEW READ POINTER\r
+       006066' 250700  013250'         EXCH    MP,RP\r
+       006067' 350000  014072'         AOS     MACLVL\r
+       006070' 553000  014071'         HRRZS   MACENL          ;RESET "CALLM IN PROGRESS"\r
+       006071' 325600  000130'         JUMPOC  STMNT2          ;OP-CODE FIELD\r
+       006072' 254000  001102'         JRST    EVATOM          ;ADDRESS FIELD\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 115\r
+MACRO  10      24-APR-78 02:11         MACRO CALL PROCESSOR\r
+\r
+       006073' 201000  000000  MAC30:  MOVEI   AC0,0           ;INITIALIZE BRACKET COUNTER\r
+       006074' 260740  006451' MAC31:  PUSHJ   PP,GCHAR        ;GET A CHARACTER\r
+       006075' 306340  000074          CAIN    C,"<"           ;"<"?\r
+       006076' 271000  000001          ADDI    AC0,1           ;YES, INCREMENT COUNT\r
+       006077' 306340  000076          CAIN    C,">"           ;">"?\r
+       006100' 361000  005757'         SOJL    AC0,MAC14A      ;YES, EXIT IF MATCHING\r
+       006101' 260740  006456'         PUSHJ   PP,WCHAR        ;WRITE INTO SKELETON\r
+       006102' 254000  006074'         JRST    MAC31           ;GO BACK FOR ANOTHER\r
+\r
+       006103' 261740  000004  MAC40:  PUSH    PP,SX           ;STACK REGISTERS\r
+       006104' 261740  000003          PUSH    PP,SDEL\r
+       006105' 502600  014051'         HLLM    IO,TAGINC       ;SAVE IO FLAGS\r
+       006106' 260740  000363'         PUSHJ   PP,CELL         ;GET AN ATOM\r
+       006107' 200300  000000          MOVE    V,AC0           ;ASSUME NUMERIC\r
+       006110' 603600  020000          TLNE    IO,NUMSW        ;GOOD GUESS?\r
+       006111' 254000  006114'         JRST    MAC41           ;YES\r
+       006112' 260740  012610'         PUSHJ   PP,SSRCH        ;SEARCH THE SYMBOL TABLE\r
+       006113' 664600  100000          TROA    ER,ERRX         ;NOT FOUND, ERROR\r
+       006114' 260740  006122' MAC41:  PUSHJ   PP,MAC42        ;FORM ASCII STRING\r
+       006115' 500600  014051'         HLL     IO,TAGINC       ;RESTORE IO FLAGS\r
+       006116' 262740  000003          POP     PP,SDEL\r
+       006117' 262740  000004          POP     PP,SX\r
+       006120' 661600  000004          TLO     IO,IORPTC       ;REPEAT LAST CHARACTER\r
+       006121' 254000  005757'         JRST    MAC14A          ;RETURN TO MAIN SCAN\r
+\r
+       006122' 200340  000006  MAC42:  MOVE    C,V\r
+       006123' 246340  777735  MAC44:  LSHC    C,-^D35\r
+       006124' 242400  777777          LSH     CS,-1\r
+       006125' 235355  000000          DIVI    C,0(RX)         ;DIVIDE BY CURRENT RADIX\r
+       006126' 506417  000000          HRLM    CS,0(PP)\r
+       006127' 322340  006131'         JUMPE   C,.+2           ;TEST FOR END\r
+       006130' 260740  006123'         PUSHJ   PP,MAC44\r
+       006131' 554357  000000          HLRZ    C,0(PP)\r
+       006132' 271340  000060          ADDI    C,"0"           ;FORM TEXT\r
+       006133' 254000  006456'         JRST    WCHAR           ;WRITE INTO SKELETON\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 116\r
+MACRO  10      24-APR-78 02:11         MACRO CALL PROCESSOR\r
+\r
+       006134' 370000  014071' MACEN0: SOS     MACENL\r
+       006135' 335340  014071' MACEND: SKIPGE  C,MACENL        ;TEST "CALLM IN PROGRESS"\r
+       006136' 350000  014071'         AOS     MACENL          ;INCREMENT END LEVEL AND EXIT\r
+       006137' 321340  005330'         JUMPL   C,REPEA8\r
+       006140' 250700  013250'         EXCH    MP,RP\r
+       006141' 262700  000013          POP     MP,MRP          ;RETRIEVE READ POINTER\r
+       006142' 262700  014075'         POP     MP,RCOUNT       ;AND WORD COUNT\r
+       006143' 201340  000136          MOVEI   C,"^"\r
+       006144' 331016  000000          SKIPL   0(MP)           ;TEST FLAG\r
+       006145' 260740  001423'         PUSHJ   PP,RSW2         ;MARK END OF SUBSTITUTION\r
+       006146' 262700  000007          POP     MP,C\r
+       006147' 262700  000005          POP     MP,ARG\r
+       006150' 334700  014073'         SKIPA   MP,MACPNT       ;RESET MP AND SKIP\r
+       006151' 260740  006546' MACEN1: PUSHJ   PP,REFDEC       ;DECREMENT REFERENCE\r
+       006152' 350300  014073' MACEN2: AOS     V,MACPNT        ;GET POINTER\r
+       006153' 200306  000000          MOVE    V,0(V)\r
+       006154' 327300  006151'         JUMPG   V,MACEN1        ;IF >0, DECREMENT REFERENCE\r
+       006155' 321300  006152'         JUMPL   V,MACEN2        ;IF <0, BYPASS\r
+       006156' 262700  000006          POP     MP,V            ;IF=0, RETRIEVE POINTER\r
+       006157' 260740  006546'         PUSHJ   PP,REFDEC       ;DECREMENT REFERENCE\r
+       006160' 202240  014073'         MOVEM   ARG,MACPNT\r
+       006161' 250700  013250'         EXCH    MP,RP\r
+       006162' 370000  014072'         SOS     MACLVL\r
+       006163' 336000  014071'         SKIPN   MACENL          ;CHECK UNPROCESSED END LEVEL\r
+       006164' 254000  006167'         JRST    MACEN3          ;NONE TO PROCESS\r
+       006165' 606540  777777          TRNN    MRP,-1          ;MRP AT END OF TEXT\r
+       006166' 254000  006134'         JRST    MACEN0          ;THEN POP THE MACRO STACK NOW\r
+       006167' 606340  077400  MACEN3: TRNN    C,77400         ;SALL FLAG?\r
+       006170' 505340  000000          HRLI    C,0             ;YES,TURN IT OFF\r
+       006171' 321340  005330'         JUMPL   C,REPEA8        ;IF FLAG SET SUBSTITUTE\r
+       006172' 254000  001421'         JRST    RSW1\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 117\r
+MACRO  10      24-APR-78 02:11         MACRO CALL PROCESSOR\r
+\r
+       006173' 336000  014072' IRP0:   SKIPN   MACLVL          ;ARE WE IN A MACRO?\r
+       006174' 254000  003400'         JRST    ERRAX           ;NO, BOMB OUT\r
+       006175' 260740  006516' IRP10:  PUSHJ   PP,MREADS       ;YES, GET DATA SPEC\r
+       006176' 302340  000040          CAIE C,40               ;SKIP LEADING BLANKS\r
+       006177' 306340  000050          CAIN    C,"("           ;"("?\r
+       006200' 254000  006175'         JRST    IRP10           ;YES, BYPASS\r
+       006201' 306340  000011          CAIN C,11\r
+       006202' 254000  006175'         JRST IRP10\r
+       006203' 302340  000177          CAIE    C,177           ;NO, IS IT SPECIAL?\r
+       006204' 254000  003400'         JRST    ERRAX           ;NO, ERROR\r
+       006205' 260740  006516'         PUSHJ   PP,MREADS       ;YES\r
+       006206' 626340  000100          TRZN C,100              ;CREATED?\r
+       006207' 254000  003400'         JRST ERRAX\r
+       006210' 301340  000040          CAIL C,40               ;TOO BIG?\r
+       006211' 254000  003400'         JRST ERRAX\r
+       006212' 270340  014073'         ADD     C,MACPNT        ;NO, FORM POINTER TO STACK\r
+       006213' 261700  013770'         PUSH    MP,IRPCF        ;STACK PREVIOUS POINTERS\r
+       006214' 261700  013772'         PUSH    MP,IRPSW\r
+       006215' 261700  013767'         PUSH    MP,IRPARP\r
+       006216' 261700  013766'         PUSH    MP,IRPARG\r
+       006217' 261700  013765'         PUSH    MP,IRPCNT\r
+       006220' 261707  000000          PUSH    MP,0(C)\r
+       006221' 261700  013771'         PUSH    MP,IRPPOI\r
+\r
+       006222' 552340  013767'         HRRZM   C,IRPARP\r
+       006223' 202000  013770'         MOVEM   AC0,IRPCF       ;IRPC FLAG FOUND IN AC0\r
+       006224' 476000  013772'         SETOM   IRPSW           ;RESET IRP SWITCH\r
+       006225' 200407  000000          MOVE    CS,0(C)\r
+       006226' 202400  013766'         MOVEM   CS,IRPARG\r
+\r
+       006227' 260740  006516'         PUSHJ   PP,MREADS\r
+       006230' 302340  000074          CAIE    C,"<"           ;"<"?\r
+       006231' 254000  006227'         JRST    .-2             ;NO, SEARCH UNTIL FOUND\r
+       006232' 260740  006413'         PUSHJ   PP,SKELI1       ;INITIALIZE NEW STRING\r
+       006233' 202240  013771'         MOVEM   ARG,IRPPOI      ;SET NEW POINTER\r
+\r
+       006234' 634140  000003          TDZA    SDEL,SDEL       ;ZERO BRACKET COUNT AND SKIP\r
+       006235' 260740  006456' IRP20:  PUSHJ   PP,WCHAR1\r
+       006236' 260740  006516'         PUSHJ   PP,MREADS\r
+       006237' 306340  000074          CAIN    C,"<"           ;"<"?\r
+       006240' 344140  006235'         AOJA    SDEL,IRP20      ;YES, INCREMENT COUNT AND WRITE\r
+       006241' 302340  000076          CAIE    C,">"           ;">"?\r
+       006242' 254000  006235'         JRST    IRP20           ;NO, JUST WRITE IT\r
+       006243' 365140  006235'         SOJGE   SDEL,IRP20      ;YES, WRITE IF NOT MATCHING\r
+       006244' 200400  015032'         MOVE    CS,[BYTE (7) 15,177,4]\r
+       006245' 260740  006466'         PUSHJ   PP,WWRXE        ;WRITE END\r
+       006246' 261700  000013          PUSH    MP,MRP          ;STACK PREVIOUS READ POINTER\r
+       006247' 261700  014075'         PUSH    MP,RCOUNT       ;AND WORD COUNT\r
+       006250' 337400  013766'         SKIPG   CS,IRPARG\r
+       006251' 254000  006331'         JRST    IRPPOP          ;EXIT IF NOT VALID ARGUMENT\r
+       006252' 201350  000001          MOVEI   C,1(CS)         ;INITIALIZE POINTER\r
+       006253' 202340  013766'         MOVEM   C,IRPARG\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 118\r
+MACRO  10      24-APR-78 02:11         MACRO CALL PROCESSOR\r
+\r
+       006254' 250540  013766' IRPSET: EXCH    MRP,IRPARG      ;SWAP READ POINTERS\r
+       006255' 200200  014075'         MOVE    SX,RCOUNT       ;SWAP COUNT OF WORDS TO READ\r
+       006256' 250200  013765'         EXCH    SX,IRPCNT\r
+       006257' 202200  014075'         MOVEM   SX,RCOUNT\r
+       006260' 260740  006413'         PUSHJ   PP,SKELI1       ;INITIALIZE SKELETON FOR DATA\r
+       006261' 552260  013767'         HRRZM   ARG,@IRPARP     ;STORE NEW DS POINTER\r
+       006262' 403200  000003          SETZB   SX,SDEL         ;ZERO FOUND FLAG AND BRACKET COUNT\r
+       006263' 135340  000013          LDB     C,MRP           ;GET LAST CHAR\r
+       006264' 306340  000054          CAIN    C,","\r
+       006265' 332000  013770'         SKIPE   IRPCF           ;IN IRPC\r
+       006266' 254000  006270'         JRST    IRPSE1          ;NO\r
+       006267' 201200  000001          MOVEI   SX,1            ;FORCE ARGUMENT\r
+       006270' 260740  006516' IRPSE1: PUSHJ   PP,MREADS\r
+       006271' 302340  000177          CAIE    C,177           ;SPECIAL?\r
+       006272' 344200  006277'         AOJA    SX,IRPSE2       ;NO, FLAG AS FOUND\r
+       006273' 260740  006535'         PUSHJ   PP,PEEKM        ;LOOK AT NEXT CHARACTER\r
+       006274' 402000  013772'         SETZM   IRPSW           ;SET IRP SWITCH\r
+       006275' 327200  006312'         JUMPG   SX,IRPSE4       ;IF ARG FOUND, PROCESS IT\r
+       006276' 254000  006331'         JRST    IRPPOP          ;NO, CLEAN UP AND EXIT\r
+\r
+       006277' 332000  013770' IRPSE2: SKIPE   IRPCF           ;IRPC?\r
+       006300' 254000  006307'         JRST    IRPSE3          ;YES, WRITE IT\r
+       006301' 306340  000054          CAIN    C,","           ;NO, IS IT A COMMA?\r
+       006302' 322140  006312'         JUMPE   SDEL,IRPSE4     ;YES, EXIT IF NOT NESTED\r
+       006303' 306340  000074          CAIN    C,"<"           ;"<"?\r
+       006304' 271140  000001          ADDI    SDEL,1          ;YES, INCREMENT COUNT\r
+       006305' 306340  000076          CAIN    C,">"           ;">"?\r
+       006306' 275140  000001          SUBI    SDEL,1          ;YES, DECREMENT COUNT\r
+\r
+       006307' 260740  006456' IRPSE3: PUSHJ   PP,WCHAR\r
+       006310' 336000  013770'         SKIPN   IRPCF           ;IRPC?\r
+       006311' 254000  006270'         JRST    IRPSE1          ;NO, GET NEXT CHARACTER\r
+\r
+       006312' 205400  774040  IRPSE4: MOVSI   CS,(BYTE (7) 177,2)\r
+       006313' 260740  006466'         PUSHJ   PP,WWRXE        ;WRITE END\r
+       006314' 202540  013766'         MOVEM   MRP,IRPARG      ;SAVE POINTER\r
+       006315' 200540  014075'         MOVE    MRP,RCOUNT      ;SAVE COUNT\r
+       006316' 202540  013765'         MOVEM   MRP,IRPCNT\r
+       006317' 550540  013771'         HRRZ    MRP,IRPPOI      ;SET FOR NEW SCAN\r
+       006320' 344540  005330'         AOJA    MRP,REPEA8      ;ON ARG COUNT\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 119\r
+MACRO  10      24-APR-78 02:11         MACRO CALL PROCESSOR\r
+\r
+       006321' 336000  013767' STOPI0: SKIPN   IRPARP          ;IRP IN PROGRESS?\r
+       006322' 254000  003400'         JRST    ERRAX           ;NO, ERROR\r
+       006323' 402000  013772'         SETZM   IRPSW           ;YES, SET SWITCH\r
+       006324' 263740  000000          POPJ    PP,\r
+\r
+       006325' 200320  013767' IRPEND: MOVE    V,@IRPARP\r
+       006326' 260740  006546'         PUSHJ   PP,REFDEC\r
+       006327' 332000  013772'         SKIPE   IRPSW           ;MORE TO COME?\r
+       006330' 254000  006254'         JRST    IRPSET          ;YES\r
+\r
+       006331' 200300  013771' IRPPOP: MOVE    V,IRPPOI\r
+       006332' 260740  006546'         PUSHJ   PP,REFDEC       ;DECREMENT REFERENCE\r
+       006333' 262700  014075'         POP     MP,RCOUNT\r
+       006334' 262700  000013          POP     MP,MRP          ;RESTORE CELLS\r
+       006335' 262700  013771'         POP     MP,IRPPOI\r
+       006336' 262720  013767'         POP     MP,@IRPARP\r
+       006337' 262700  013765'         POP     MP,IRPCNT\r
+       006340' 262700  013766'         POP     MP,IRPARG\r
+       006341' 262700  013767'         POP     MP,IRPARP\r
+       006342' 262700  013772'         POP     MP,IRPSW\r
+       006343' 262700  013770'         POP     MP,IRPCF\r
+       006344' 254000  005330'         JRST    REPEA8\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 120\r
+MACRO  10      24-APR-78 02:11         MACRO CALL PROCESSOR\r
+\r
+       006345'                 GETDS:                          ;GET DUMMY SYMBOL NUMBER\r
+       006345' 200400  000007          MOVE    CS,C            ;USE CS FOR WORK REGISTER\r
+       006346' 405400  000037          ANDI    CS,37           ;MASK\r
+       006347' 270400  014073'         ADD     CS,MACPNT       ;ADD BASE ADDRESS\r
+       006350' 200310  000000          MOVE    V,0(CS)         ;GET POINTER FLAG\r
+       006351' 327300  006377'         JUMPG   V,GETDS1        ;BRANCH IF POINTER\r
+       006352' 606340  000040          TRNN    C,40            ;NOT POINTER, SHOULD WE CREATE?\r
+       006353' 254000  001417'         JRST    RSW0            ;NO, FORGET THIS ARG\r
+       006354' 261740  014074'         PUSH    PP,WWRXX\r
+       006355' 261740  000012          PUSH    PP,MWP          ;STACK MACRO WRITE POINTER\r
+       006356' 261740  014076'         PUSH    PP,WCOUNT       ;SAVE WORD  COUNT\r
+       006357' 260740  006413'         PUSHJ   PP,SKELI1       ;INITIALIZE SKELETON\r
+       006360' 202250  000000          MOVEM   ARG,0(CS)       ;STORE POINTER\r
+       006361' 200400  015033'         MOVE    CS,[BYTE (7) 0,170,170,170,171] ;CREATE A SYMBOL\r
+       006362' 270400  014077'         ADD     CS,LSTSYM               ;LSTSYM= # OF LAST CREATED\r
+       006363' 630400  015034'         TDZ     CS,[BYTE (7) 0,170,170,170,170]\r
+       006364' 202400  014077'         MOVEM   CS,LSTSYM\r
+       006365' 434400  015035'         IOR     CS,[ASCII /.0000/]\r
+       006366' 201340  000056          MOVEI C,"."\r
+       006367' 260740  006456'         PUSHJ PP,WCHAR\r
+       006370' 260740  006462'         PUSHJ   PP,WWORD        ;WRITE INTO SKELETON\r
+       006371' 205400  774040          MOVSI   CS,(BYTE (7) 177,2)\r
+       006372' 260740  006466'         PUSHJ   PP,WWRXE        ;WRITE END CODE\r
+       006373' 262740  014076'         POP     PP,WCOUNT       ;RESTORE WORD COUNT\r
+       006374' 262740  000012          POP     PP,MWP          ;RESTORE MACRO WRITE POINTER\r
+       006375' 262740  014074'         POP     PP,WWRXX\r
+       006376' 200300  000005          MOVE    V,ARG           ;SET UP FOR REFINC\r
+\r
+       006377' 260740  006543' GETDS1: PUSHJ   PP,REFINC       ;INCREMENT REFERENCE\r
+       006400' 504300  014075'         HRL     V,RCOUNT        ;SAVE WORD COUNT\r
+       006401' 261700  000006          PUSH    MP,V            ;STACK V FOR DECREMENT\r
+       006402' 261700  000013          PUSH    MP,MRP          ;STACK READ POINTER\r
+       006403' 201546  000001          MOVEI   MRP,1(V)        ;FORM READ POINTER\r
+       006404' 254000  001417'         JRST    RSW0            ;EXIT\r
+\r
+       006405' 262700  000013  DSEND:  POP     MP,MRP\r
+       006406' 262700  000006          POP     MP,V\r
+       006407' 576300  014075'         HLREM   V,RCOUNT        ;RESTORE WORD COUNT\r
+       006410' 553000  000006          HRRZS   V               ;CLEAR COUNT\r
+       006411' 260740  006546'         PUSHJ   PP,REFDEC       ;DECREMENT REFERENCE\r
+       006412' 254000  001417'         JRST    RSW0            ;EXIT\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 121\r
+MACRO  10      24-APR-78 02:11         MACRO CALL PROCESSOR\r
+\r
+       006413' 201240  000001  SKELI1: MOVEI   ARG,1           ;ENTRY FOR SINGLE ARG\r
+       006414' 400500  000000  SKELI:  SETZ    MWP,            ;SIGNAL FIRST TIME THROUGH\r
+       006415' 260740  006427'         PUSHJ   PP,SKELWL       ;GET POINTER WORD\r
+       006416' 552500  014074'         HRRZM   MWP,WWRXX       ;SAVE FIRST ADDRESS\r
+       006417' 552500  013450'         HRRZM   MWP,LADR        ;SAVE START OF LINKED LIST\r
+       006420' 552252  000001          HRRZM   ARG,1(MWP)      ;STORE COUNT\r
+       006421' 370000  014076'         SOS     WCOUNT          ;ACCOUNT FOR WORD\r
+       006422' 550240  014074'         HRRZ    ARG,WWRXX       ;SET FIRST ADDRESS\r
+       006423' 271500  000002          ADDI    MWP,2           ;BUMP POINTER\r
+       006424' 505500  440700          HRLI    MWP,(POINT 7)   ;SET FOR 5 ASCII BYTES\r
+                                       ;SKELW RETURNS WITH ADR OF NEXT FREE LOC IN V (RIGHT)\r
+\r
+       006425' 373000  014076' SKELW:  SOSLE   WCOUNT          ;STILL SOME SPACE IN LEAF?\r
+       006426' 263740  000000          POPJ    PP,             ;YES, RETURN\r
+       006427' 332300  013511' SKELWL: SKIPE   V,NEXT          ;GET FIRST FREE ADDRESS\r
+       006430' 254000  006437'         JRST    SKELW1          ;IF NON-ZERO, UPDATE FREE\r
+       006431' 200300  013377'         MOVE    V,FREE          ;GET FREE\r
+       006432' 271300  000004          ADDI    V,.LEAF         ;INCREMENT BY LEAF SIZE\r
+       006433' 311300  013552'         CAML    V,SYMBOL        ;OVERFLOW?\r
+       006434' 260740  010277'         PUSHJ   PP,XCEED        ;YES, BOMB OUT\r
+       006435' 250300  013377'         EXCH    V,FREE          ;UPDATE FREE\r
+       006436' 402006  000000          SETZM   (V)             ;CLEAR LINK\r
+\r
+       006437' 500306  000000  SKELW1: HLL     V,0(V)          ;GET ADDRESS\r
+       006440' 546300  013511'         HLRM    V,NEXT          ;UPDATE NEXT\r
+       006441' 332000  000012          SKIPE   MWP             ;IF FIRST TIME\r
+       006442' 506312  777775          HRLM    V,1-.LEAF(MWP)  ;STORE LINK IN FIRST WORD OF LEAF\r
+       006443' 201500  000004          MOVEI   MWP,.LEAF       ;SIZE OF LEAF\r
+       006444' 202500  014076'         MOVEM   MWP,WCOUNT      ;STORE FOR COUNT DOWN\r
+       006445' 201506  000000          MOVEI   MWP,(V)         ;SET UP WRITE POINTER\r
+       006446' 661500  160700          TLO     MWP,(POINT 7,,21)       ;2 ASCII CHARS\r
+       006447' 263740  000000          POPJ    PP,\r
+\r
+                                       ;WWRXX  POINTS TO END OF TREE\r
+                                       ;MWP    IDPB POINTER TO NEXT HOLE\r
+                                       ;NEXT   FIRST OF A LINKED PORTION THAT IS NOT BEING USED (LEAVES)\r
+                                       ;FREE   POINTS TO FREE CORE BETWEEN TREE AND SYM-TABLE\r
+                                       ;LADR   POINTS TO BEG OF LINKED PORTION.\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 122\r
+MACRO  10      24-APR-78 02:11         MACRO CALL PROCESSOR\r
+\r
+       006450' 326540  006516' GCHARQ: JUMPN   MRP,MREADS      ;IF GETTING CHAR. FROM TREE\r
+       006451' 260740  001415' GCHAR:  PUSHJ   PP,CHARAC       ;GET ASCII CHARACTER\r
+       006452' 307340  000014          CAIG    C,FF            ;TEST FOR LF, VT OR FF\r
+       006453' 305340  000012          CAIGE   C,LF\r
+       006454' 263740  000000          POPJ    PP,             ;NO\r
+       006455' 254000  001745'         JRST    OUTIM1          ;YES, LIST IT\r
+\r
+       006456'                 WCHARQ:\r
+       006456'                 WCHAR:  \r
+       006456' 607500  760000  WCHAR1: TLNN    MWP,760000      ;END OF WORD?\r
+       006457' 260740  006425'         PUSHJ   PP,SKELW        ;YES, GET ANOTHER\r
+       006460' 136340  000012          IDPB    C,MWP           ;STORE CHARACTER\r
+       006461' 263740  000000          POPJ    PP,\r
+\r
+       006462' 246340  000007  WWORD:  LSHC    C,7             ;MOVE ASCII INTO C\r
+       006463' 260740  006456'         PUSHJ   PP,WCHAR1       ;STORE IT\r
+       006464' 326400  006462'         JUMPN   CS,WWORD        ;TEST FOR END\r
+       006465' 263740  000000          POPJ    PP,             ;YES, EXIT\r
+\r
+       006466' 260740  006462' WWRXE:  PUSHJ   PP,WWORD        ;WRITE LAST WORD\r
+       006467' 270500  014076'         ADD     MWP,WCOUNT      ;GET TO END OF LEAF\r
+       006470' 275500  000004          SUBI    MWP,.LEAF       ;NOW POINT TO START OF IT\r
+       006471' 553012  000000          HRRZS   (MWP)           ;ZERO LEFT HALF OF LAST LEAF\r
+       006472' 542520  014074'         HRRM    MWP,@WWRXX      ;SET POINTER TO END\r
+       006473' 263740  000000          POPJ    PP,\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 123\r
+MACRO  10      24-APR-78 02:11         MACRO CALL PROCESSOR\r
+\r
+       006474' 260740  006516' MREAD:  PUSHJ   PP,MREADS       ;READ ONE CHARACTER\r
+       006475' 302340  000177          CAIE    C,177           ;SPECIAL?\r
+       006476' 254000  001421'         JRST    RSW1            ;NO, EXIT\r
+       006477' 260740  006516'         PUSHJ   PP,MREADS       ;YES, GET CODE WORD\r
+       006500' 622340  000100          TRZE C,100              ;SYMBOL?\r
+       006501' 254000  006345'         JRST GETDS              ;YES\r
+       006502' 303340  000004          CAILE C,4               ;POSSIBLY ILLEGAL\r
+       006503' 254000  003400'         JRST ERRAX              ;YUP\r
+       006504' 541540  000000          HRRI    MRP,0           ;NO, SIGNAL END OF TEXT\r
+       006505' 254007  006506'         JRST    .+1(C)\r
+       006506' 260740  010277'         PUSHJ   PP,XCEED\r
+       006507' 254000  006135'         JRST    MACEND          ;1; END OF MACRO\r
+       006510' 254000  006405'         JRST    DSEND           ;2; END OF DUMMY SYMBOL\r
+       006511' 254000  005332'         JRST    REPEND          ;3; END OF REPEAT\r
+       006512' 254000  006325'         JRST    IRPEND          ;4; END OF IRP\r
+\r
+       006513' 505540  000700  MREADI: HRLI    MRP,700         ;SET UP BYTE POINTER\r
+       006514' 201340  000003          MOVEI   C,.LEAF-1       ;NUMBER OF WORDS\r
+       006515' 202340  014075'         MOVEM   C,RCOUNT\r
+       006516' 607540  777777  MREADS: TLNN    MRP,-1          ;FIRST TIME HERE?\r
+       006517' 254000  006513'         JRST    MREADI          ;YES, SET UP MRP AND RCOUNT\r
+       006520' 607540  760000          TLNN    MRP,760000      ;HAVE WE FINISHED WORD?\r
+       006521' 373000  014075'         SOSLE   RCOUNT          ;YES, STILL ROOM IN LEAF?\r
+       006522' 254000  006527'         JRST    MREADC          ;STILL CHAR. IN LEAF\r
+       006523' 554553  777775          HLRZ    MRP,1-.LEAF(MRP);YES, GET LINK\r
+       006524' 505540  160700          HRLI    MRP,(POINT 7,,21)       ;SET POINTER\r
+       006525' 201340  000004          MOVEI   C,.LEAF         ;RESET COUNT\r
+       006526' 202340  014075'         MOVEM   C,RCOUNT\r
+       006527' 134340  000013  MREADC: ILDB    C,MRP           ;GET CHARACTER\r
+       006530' 263740  000000          POPJ    PP,\r
+\r
+       006531' 326540  006535' PEEK:   JUMPN   MRP,PEEKM       ;THIS IS A MACRO READ\r
+       006532' 260740  001415'         PUSHJ   PP,CHARAC       ;READ AN ASCII CHAR.\r
+       006533' 661600  000004          TLO     IO,IORPTC       ;REPEAT  FOR NEXT\r
+       006534' 263740  000000          POPJ    PP,             ;AND RETURN\r
+\r
+       006535' 261740  000013  PEEKM:  PUSH    PP,MRP          ;SAVE MACRO READ POINTER\r
+       006536' 261740  014075'         PUSH    PP,RCOUNT       ;SAVE WORD COUNT\r
+       006537' 260740  006516'         PUSHJ   PP,MREADS       ;READ IN A CHAR.\r
+       006540' 262740  014075'         POP     PP,RCOUNT       ;RESTORE WORD COUNT\r
+       006541' 262740  000013          POP     PP,MRP          ;RESET READ POINTER\r
+       006542' 263740  000000          POPJ    PP,             ;IORPTC IS NOT SET\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 124\r
+MACRO  10      24-APR-78 02:11         MACRO CALL PROCESSOR\r
+\r
+       006543' 201406  000001  REFINC: MOVEI   CS,1(V)         ;GET POINTER TO TREE\r
+       006544' 350010  000000          AOS     0(CS)           ;INCREMENT REFERENCE\r
+       006545' 263740  000000          POPJ    PP,\r
+\r
+       006546' 323300  006560' REFDEC: JUMPLE  V,DECERR        ;CATASTROPHIC ERROR SOMEWHERE\r
+       006547' 201406  000001          MOVEI   CS,1(V)         ;GET POINTER TO TREE\r
+       006550' 370410  000000          SOS     CS,0(CS)        ;DECREMENT REFERENCE\r
+       006551' 602400  000777          TRNE    CS,000777       ;IS IT ZERO?\r
+       006552' 263740  000000          POPJ    PP,             ;NO, EXIT\r
+       006553' 550406  000000          HRRZ    CS,0(V)         ;YES, GET POINTER TO END\r
+       006554' 504400  013511'         HRL     CS,NEXT         ;GET POINTER TO NEXT RE-USABLE\r
+       006555' 502410  000000          HLLM    CS,0(CS)        ;SET LINK\r
+       006556' 542300  013511'         HRRM    V,NEXT          ;RESET NEXT\r
+       006557' 263740  000000          POPJ    PP,\r
+\r
+       006560' 200000  013750' DECERR: MOVE    AC0,CALNAM      ;GET MACRO NAME\r
+       006561' 205440  015036'         MOVSI   RC,[SIXBIT /ERROR WHILE EXPANDING@/]\r
+       006562' 260740  010241'         PUSHJ   PP,TYPMSG\r
+       006563' 254000  010140'         JRST    ERRNE2          ;COMMON MESSAGE\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 125\r
+MACRO  10      24-APR-78 02:11         MACRO CALL PROCESSOR\r
+\r
+                       000000  A==     0                       ;ASCII MODE\r
+                       000001  AL==    1                       ;ASCII LINE MODE\r
+                       000013  IB==    13                      ;IMAGE BINARY MODE\r
+                       000014  B==     14                      ;BINARY MODE\r
+                       000016  DMP==16         ;DUMP MODE\r
+\r
+                       000000  CTL==   0                       ;CONTROL DEVICE NUMBER\r
+                       000004  IFN CCLSW,<CTL2==4              ;INPUT DEV FOR CCL FILE>\r
+                       000001  BIN==   1                       ;BINARY DEVICE NUMBER\r
+                       000002  CHAR==  2                       ;INPUT DEVICE NUMBER\r
+                       000003  LST==   3                       ;LISTING DEVICE NUMBER\r
+\r
+                               ;       COMMAND STRING ACCUMULATORS\r
+\r
+                       000001  ACDEV== 1                       ;DEVICE\r
+                       000002  ACFILE==2                       ;FILE\r
+                       000003  ACEXT== 3                       ;EXTENSION\r
+                       000004  ACPPN== 4                       ;PPN\r
+                       000004  ACDEL== 4                       ;DELIMITER\r
+                       000005  ACPNTR==5                       ;BYTE POINTER\r
+\r
+                       000006  TIO==   6\r
+\r
+                       001000  TIORW== 1000\r
+                       002000  TIOLE== 2000\r
+                       020000  TIOCLD==20000\r
+\r
+                       000004  DIRBIT==4               ;DIRECTORY DEVICE\r
+                       000010  TTYBIT==10              ;TTY\r
+                       000020  MTABIT==20              ;MTA\r
+                       000100  DTABIT==100             ;DTA\r
+                       002000  DISBIT==2000            ;DISPLAY\r
+                       020000  CONBIT==20000           ;CONTROLING TTY\r
+                       040000  LPTBIT==40000           ;LPT\r
+                       200000  DSKBIT==200000          ;DSK\r
+\r
+                               ;GETSTS ERROR BITS\r
+\r
+                       400000  IOIMPM==400000          ;IMPROPER MODE (WRITE LOCK)\r
+                       200000  IODERR==200000          ;DEVICE DATA ERROR\r
+                       100000  IODTER==100000          ;CHECKSUM OR PARITY ERROR\r
+                       040000  IOBKTL== 40000          ;BLOCK TOO LARGE\r
+                       740000  ERRBIT==IOIMPM!IODERR!IODTER!IOBKTL\r
+\r
+                               SYN     .TEMP,PPN\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 126\r
+MACRO  10      24-APR-78 02:11         I/O ROUTINES\r
+\r
+                               SUBTTL  I/O ROUTINES\r
+       006564'                 BEG:\r
+       006564' 625600  100000  IFN CCLSW,<TLZA IO,ARPGSW       ;DON'T ALLOW RAPID PROGRAM GENERATION\r
+       006565' 661600  100000          TLO     IO,ARPGSW       ;ALLOW RAPID PROGRAM GENERATION>\r
+       006566' 550540  005115*         HRRZ    MRP,JOBREL      ;GET LOWSEG SIZE\r
+       006567' 202540  014117'         MOVEM   MRP,MACSIZ      ;SAVE CORE SIZE\r
+                                                               ;DECODE VERSION NUMBER\r
+       006570' 201740  014161'         MOVEI   PP,JOBFFI       ;TEMP PUSH DOWN STACK\r
+       006571' 261740  014625'         PUSH    PP,[0]          ;MARK BOTTOM OF STACK\r
+       006572' 135000  015042'         LDB     0,[POINT 3,JOBVER,2]    ;GET USER BITS\r
+       006573' 322000  006600'         JUMPE   0,GETE          ;NOT SET IF ZERO\r
+       006574' 271000  000060          ADDI    0,"0"           ;FORM NUMBER\r
+       006575' 261740  000000          PUSH    PP,0            ;STACK IT\r
+       006576' 201000  000055          MOVEI   0,"-"           ;SEPARATE BY HYPHEN\r
+       006577' 261740  000000          PUSH    PP,0            ;STACK IT ALSO\r
+       006600' 550000  000137  GETE:   HRRZ    0,JOBVER        ;GET EDIT NUMBER\r
+       006601' 322000  006612'         JUMPE   0,GETU          ;SKIP ALL THIS IF ZERO\r
+       006602' 201040  000051          MOVEI   1,")"           ;ENCLOSE IN PARENS.\r
+       006603' 261740  000001          PUSH    PP,1\r
+       006604' 231000  000010  GETED:  IDIVI   0,8             ;GET OCTAL DIGITS\r
+       006605' 271040  000060          ADDI    1,"0"           ;MAKE ASCII\r
+       006606' 261740  000001          PUSH    PP,1            ;STACK IT\r
+       006607' 326000  006604'         JUMPN   0,GETED         ;LOOP TIL DONE\r
+       006610' 201000  000050          MOVEI   0,"("           ;OTHER PAREN.\r
+       006611' 261740  000000          PUSH    PP,0\r
+       006612' 135000  015043' GETU:   LDB     0,[POINT 6,JOBVER,17]   ;UPDATE NUMBER\r
+       006613' 322000  006620'         JUMPE   0,GETV          ;SKIP IF ZERO\r
+       006614' 231000  000010          IDIVI   0,8             ;MIGHT BE TWO DIGITS\r
+       006615' 271040  000100          ADDI    1,"@"           ;FORM ALPHA\r
+       006616' 261740  000001          PUSH    PP,1\r
+       006617' 326000  006613'         JUMPN   0,GETU+1        ;LOOP IF NOT DONE\r
+       006620' 135000  015044' GETV:   LDB     0,[POINT 9,JOBVER,11]   ;GET VERSION NUMBER\r
+       006621' 231000  000010          IDIVI   0,8             ;GET DIGIT\r
+       006622' 271040  000060          ADDI    1,"0"           ;TO ASCII\r
+       006623' 261740  000001          PUSH    PP,1            ;STACK\r
+       006624' 326000  006621'         JUMPN   0,GETV+1        ;LOOP\r
+       006625' 200040  015045'         MOVE    1,[POINT 7,VBUF+1,13]   ;POINTER TO DEPOSIT IN VBUF\r
+       006626' 262740  000000          POP     PP,0            ;GET CHARACTER\r
+       006627' 136000  000001          IDPB    0,1             ;DEPOSIT IT\r
+       006630' 326000  006626'         JUMPN   0,.-2           ;KEEP GOING IF NOT ZERO\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 127\r
+MACRO  10      24-APR-78 02:11         I/O ROUTINES\r
+\r
+                               IFN CCLSW,<\r
+       006631' 625600  001000          TLZA    IO,CRPGSW       ;SET TO INIT NEW COMMAND FILE\r
+       006632' 607600  001000  M:      TLNN    IO,CRPGSW       ;CURRENTLY DOING RPG?>\r
+                               IFE CCLSW,<M:>\r
+       006633' 047000  000000          RESET                   ;INITIALIZE PROGRAM\r
+       006634' 402000  013220'         SETZM   BINDEV          ;CLEAR INCASE NOT USED NEXT TIME\r
+       006635' 402000  013223'         SETZM   LSTDEV          ;SAME REASON\r
+       006636' 402000  013234'         SETZM   INDEV           ;INCASE OF ERROR\r
+       006637' 550540  014117'         HRRZ    MRP,MACSIZ      ;GET INITIAL SIZE\r
+       006640' 047540  000011          CORE    MRP,            ;BACK TO ORIGINAL SIZ4\r
+       006641' 255000  000000          JFCL                    ;SHOULD NEVER FAIL\r
+       006642' 403540  013250'         SETZB   MRP,PASS1I\r
+       006643' 200000  015046'         MOVE    [XWD PASS1I,PASS1I+1]\r
+       006644' 251000  014101'         BLT     PASS2X-1        ;ZERO THE PASS1 AND PASS2 VARIABLES\r
+       006645' 201740  014161'         MOVEI   PP,JOBFFI       ;SET TEMP PUSH-DOWN POINTER\r
+       006646' 200400  015047'         MOVE    CS,[POINT 7,DBUF,6]     ;INITIALIZE FOR DATE\r
+       006647' 047100  000023          MSTIME  2,              ;GET TIME FROM MONITOR\r
+       006650' 260740  010707'         PUSHJ   PP,TIMOUT       ;TIME FORMAT OUTPUT\r
+       006651' 047040  000014          DATE    1,              ;GET DATE\r
+       006652' 133000  000010          IBP     CS              ;PASS OVER PRESET SPACE\r
+       006653' 260740  010724'         PUSHJ   PP,DATOUT       ;DATE FORMAT OUTPUT\r
+       006654' 205640  402000          MOVSI   FR,P1!CREFSW\r
+       006655' 603600  001000  IFN CCLSW,<TLNE IO,CRPGSW       ;RPG IN PROGRESS?\r
+       006656' 254000  006742'         JRST    GOSET           ;YES, GO READ NEXT COMMAND\r
+       006657' 603600  100000          TLNE    IO,ARPGSW       ;NO, RPG ALLOWED?\r
+       006660' 254000  006703'         JRST    RPGSET          ;YES, GO TRY\r
+       006661' 071200  000000  CTLSET: RELEASE CTL2,           ;IN CASE OF LOOKUP FAILURE>\r
+                               IFE CCLSW,<CTLSET:>\r
+       006662' 205600  004000          MOVSI   IO,IOPALL       ;ZERO FLAGS\r
+       006663' 041000  000001          INIT    CTL,AL          ;INITIALIZE USER CONSOLE\r
+       006664' 646471  000000          SIXBIT  /TTY/\r
+       006665' 014114' 014111'         XWD     CTOBUF,CTIBUF\r
+       006666' 047000  000012          EXIT                    ;NO TTY, NO ASSEMBLY\r
+       006667' 205340  646471          MOVSI   C,(SIXBIT /TTY/)\r
+       006670' 047340  000004          DEVCHR  C,              ;GET CHARACTERISTICS\r
+       006671' 607340  000010          TLNN    C,10            ;IS IT REALLY A TTY\r
+       006672' 047000  000012          EXIT                    ;NO\r
+       006673' 064000  000001          INBUF   CTL,1           ;INITIALIZE SINGLE CONTROL\r
+       006674' 065000  000001          OUTBUF  CTL,1           ;BUFFERS\r
+       006675' 260740  010247'         PUSHJ   PP,CRLF         ;OUTPUT CARRIAGE RETURN - LINE FEED\r
+       006676' 201340  000052          MOVEI   C,"*"\r
+       006677' 136340  014115'         IDPB    C,CTOBUF+1\r
+       006700' 067000  000000          OUTPUT  CTL,\r
+       006701' 066000  000000          INPUT   CTL,\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 128\r
+MACRO  10      24-APR-78 02:11         I/O ROUTINES\r
+\r
+       006702' 254000  007022' IFN CCLSW,<JRST BINSET          ;BEGIN WITH BINARY FILE\r
+\r
+       006703'                 RPGSET:\r
+       006703' 041200  000001          INIT    CTL2,AL         ;LOOK FOR DISK\r
+       006704' 446353  000000          SIXBIT  /DSK/           ;...\r
+       006705' 000000  014106'         XWD     0,CTLBLK        ;...\r
+       006706' 254000  006661'         JRST    CTLSET          ;DSK NOT THERE\r
+\r
+       006707' 515140  554143          HRLZI   3,(SIXBIT /MAC/)        ;###MAC\r
+       006710' 201000  000003          MOVEI   3                       ;COUNT\r
+       006711' 047040  000030          PJOB    AC1,                    ;RETURNS JOB NO. TO AC1\r
+       006712' 231040  000012  RPGLUP: IDIVI   AC1,12                  ;CONVERT\r
+       006713' 271100  000020          ADDI    AC2,"0"-40              ;SIXBITIZE IT\r
+       006714' 246100  777772          LSHC    AC2,-6                  ;\r
+       006715' 367000  006712'         SOJG    0,RPGLUP                ;3 TIMES\r
+       006716' 202140  013251'         MOVEM   3,CTLBUF                ;###MAC\r
+       006717' 515000  645560          HRLZI   (SIXBIT /TMP/)          ;\r
+       006720' 202000  013252'         MOVEM   CTLBUF+1                ;TMP\r
+       006721' 402000  013254'         SETZM   CTLBUF+3                ;PROG-PRO\r
+       006722' 076200  013251'         LOOKUP  CTL2,CTLBUF             ;COMMAND FILE\r
+       006723' 254000  006661'         JRST    CTLSET                  ;NOT THERE\r
+       006724' 546000  014104'         HLRM    EXTMP                   ;SAVE THE EXTENSION\r
+\r
+       006725' 064200  000001  RPGS2:  INBUF   CTL2,1          ;SINGLE BUFFERED\r
+       006726' 041000  000001  RPGS2A: INIT    CTL,AL          ;TTY FOR CONSOLE MESSAGES\r
+       006727' 646471  000000          SIXBIT  /TTY/           ;...\r
+       006730' 014114' 000000          XWD     CTOBUF,0        ;...\r
+       006731' 047000  000012          EXIT                    ;NO TTY, NO ASSEMBLY\r
+       006732' 065000  000001          OUTBUF  CTL,1           ;SINGLE BUFFERED\r
+       006733' 200000  005224*         MOVE    JOBFF           ;REMEMBER WHERE BINARY BUFFERS BEGIN\r
+       006734' 202000  014105'         MOVEM   SAVFF           ;...\r
+       006735' 550000  006566*         HRRZ    JOBREL          ;TOP OF CORE\r
+       006736' 313000  014117'         CAMLE   MACSIZ          ;SEE IF IT HAS GROWN\r
+       006737' 202000  014117'         MOVEM   MACSIZ          ;PREVENTS ADDRESS CHECK ON EXIT\r
+       006740' 603600  001000          TLNE IO,CRPGSW  ;ARE WE ALREADY IN RPG MODE?\r
+       006741' 254000  006632'         JRST M  ;MUST HAVE COME FROM @ COMMAND, RESET\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 129\r
+MACRO  10      24-APR-78 02:11         I/O ROUTINES\r
+\r
+       006742' 205600  005000  GOSET:  MOVSI   IO,IOPALL!CRPGSW        ;SET INITIAL FLAGS\r
+       006743' 201400  000310          MOVEI   CS,CTLSIZ       ;MAXIMUM CHARS IN A LINE\r
+       006744' 200040  014110'         MOVE    AC1,CTLBLK+2    ;NUMBER OF CHARACTERS\r
+       006745' 202040  014113'         MOVEM   AC1,CTIBUF+2    ;SAVE FOR PASS 2\r
+       006746' 200040  015050'         MOVE    AC1,[POINT 7,CTLBUF]    ;WHERE TO STASH CHARS\r
+       006747' 202040  014112'         MOVEM   AC1,CTIBUF+1    ;...\r
+       006750' 377000  014110' GOSET1: SOSG    CTLBLK+2        ;ANY MORE CHARS?\r
+                                       PUSHJ   PP,[IN CTL2,            ;READ ANOTHER BUFFERFUL\r
+                                                  POPJ PP,             ;EVERYTHING OK, RETURN\r
+                                                  STATO CTL2,20000     ;EOF?\r
+                                                  JRST [HRROI RC,[SIXBIT /ERROR READING COMMAND FILE@/]\r
+                                                       JRST ERRFIN]            ;GO COMPLAIN\r
+                                                  PUSHJ PP,DELETE      ;CMD FILE\r
+       006751' 260740  015060'                    EXIT]                ;EOF AND FINISHED\r
+       006752' 134340  014107'         ILDB    C,CTLBLK+1      ;GET NEXT CHAR\r
+       006753' 200460  014107'         MOVE    RC,@CTLBLK+1    ;CHECK FOR SEQUENCE NUMBERS\r
+       006754' 602440  000001          TRNE    RC,1            ;...\r
+                                       JRST    [AOS    CTLBLK+1        ;SKIP OVER ANOTHER 5 CHARS\r
+                                               MOVNI   RC,5            ;...\r
+                                               ADDM    RC,CTLBLK+2     ;...\r
+       006755' 254000  015066'                 JRST    GOSET1  ]       ;GO READ ANOTHER CHAR\r
+       006756' 322340  006750'         JUMPE   C,GOSET1        ;IGNORE NULLS\r
+       006757' 136340  014112'         IDPB    C,CTIBUF+1      ;STASH AWAY\r
+       006760' 350000  014113'         AOS     CTIBUF+2        ;INCREMENT CHAR. COUNT\r
+       006761' 302340  000012          CAIE    C,12            ;LINE FEED OR\r
+       006762' 306340  000175          CAIN    C,175           ;ALTMODE?\r
+       006763' 254000  006772'         JRST    GOSET2          ;YES, FINISHED WITH COMMAND\r
+       006764' 302340  000176          CAIE    C,176\r
+       006765' 306340  000033          CAIN    C,33\r
+       006766' 254000  006772'         JRST    GOSET2          ;ALTMODE.\r
+       006767' 367400  006750'         SOJG    CS,GOSET1       ;GO READ ANOTHER\r
+       006770' 561440  015072'         HRROI   RC,[SIXBIT /COMMAND LINE TOO LONG@/]\r
+       006771' 254000  010176'         JRST    ERRFIN          ;GO COMPLAIN\r
+       006772' 201340  000012  GOSET2: MOVEI   C,12            ;MAKE SURE THERE'S A LF\r
+       006773' 136340  014112'         IDPB    C,CTIBUF+1      ;...\r
+       006774' 202040  014112'         MOVEM   AC1,CTIBUF+1    ;SET POINTER TO BEGINNING\r
+       006775' 350000  014113'         AOS     CTIBUF+2        ;ADD I TO COUNT\r
+       006776' 200000  014105'         MOVE    SAVFF           ;RESET JOBFF FOR NEW BINARY\r
+       006777' 202000  006733*         MOVEM   JOBFF           ;...\r
+       007000' 254000  007022'         JRST BINSET\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 130\r
+MACRO  10      24-APR-78 02:11         I/O ROUTINES\r
+\r
+\r
+       007001' 260740  000066' RPGS1:  PUSHJ   PP,DELETE       ;DELETE COMMAND FILE\r
+       007002' 202040  013231'         MOVEM   ACDEV,RPGDEV    ;GET SET TO INIT\r
+       007003' 050200  013230'         OPEN    CTL2,RPGINI     ;DO IT\r
+       007004' 254000  010162'         JRST    EINIT           ;ERROR\r
+       007005' 202100  013343'         MOVEM   ACFILE,INDIR    ;USE INPUT BLOCK\r
+       007006' 202200  013346'         MOVEM   ACPPN,INDIR+3   ;SET PPN \r
+       007007' 202140  013344'         MOVEM   ACEXT,INDIR+1\r
+       007010' 076200  013343'         LOOKUP  CTL2,INDIR\r
+                                       JRST    [JUMPN  ACEXT,RPGLOS    ;GIVE UP ,EXPLICIT EXTENSION\r
+                                       MOVSI   ACEXT,(SIXBIT /CCL/)    ;IF BLANK TRY CCL\r
+       007011' 254000  015076'                 JRST    .-2     ]\r
+       007012' 546140  014104'         HLRM    ACEXT,EXTMP     ;SAVE THE EXTENSION\r
+       007013' 554000  000062*         HLRZ    JOBSA           ;RESET JOBFF TO ORIGINAL\r
+       007014' 202000  006777*         MOVEM   JOBFF\r
+       007015' 661600  001000          TLO     IO,CRPGSW       ;TURN ON SWITCH SO WE RESET WORLD\r
+       007016' 254000  006725'         JRST    RPGS2           ;AND GO\r
+       007017' 071200  000000  RPGLOS: RELEAS  CTL2,0\r
+       007020' 621600  001000          TLZ     IO,CRPGSW       ;STOPS IO TO UNASGD CHAN\r
+       007021' 254000  010171'         JRST    ERRCF           ;NO FILE FOUND\r
+                               >\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 131\r
+MACRO  10      24-APR-78 02:11         I/O ROUTINES\r
+\r
+       007022' 260740  007477' BINSET: PUSHJ   PP,NAME1        ;GET FIRST NAME\r
+       007023' 306340  000041  IFN CCLSW,<CAIN C,"!"           ;WAS THIS AN IMPERATIVE?\r
+       007024' 254000  000017'         JRST    NUNSET          ;GET THEE TO A NUNNERY\r
+       007025' 306340  000100          CAIN C,"@"      ;CHEK FOR A NEW RPG FILE\r
+       007026' 254000  007001'         JRST RPGS1>\r
+       007027' 607640  002000          TLNN    FR,CREFSW       ;CROSS REF REQUESTED?\r
+       007030' 254000  007070'         JRST    LSTSE1          ;YES, SKIP BINARY\r
+       007031' 306340  000054          CAIN    C,","           ;COMMA?\r
+       007032' 322040  007067'         JUMPE   ACDEV,LSTSET    ;YES, SKIP BINARY IF NO DEVICE SPECIFIED\r
+       007033' 306340  000137          CAIN    C,"_"           ;LEFT ARROW?\r
+       007034' 322040  007070'         JUMPE   ACDEV,LSTSE1    ;YES, SKIP BINARY IF NO DEVICE SPECIFIED\r
+       007035' 322040  006632'         JUMPE   ACDEV,M         ;IGNORE IF JUST <CR-LF>\r
+       007036' 661640  001000          TLO     FR,PNCHSW       ;OK, SET SWITCH\r
+       007037' 202040  013220'         MOVEM   ACDEV,BINDEV    ;STORE DEVICE NAME\r
+       007040' 202100  013337'         MOVEM   ACFILE,BINDIR   ;STORE FILE NAME IN DIRECTORY\r
+       007041' 326140  007043'         JUMPN   ACEXT,.+2       ;EXTENSION SPECIFIED?\r
+       007042' 205140  624554          MOVSI   ACEXT,(SIXBIT /REL/)    ;NO, ASSUME RELOCATABLE BINARY\r
+       007043' 202140  013340'         MOVEM   ACEXT,BINDIR+1  ;STORE IN DIRECTORY\r
+       007044' 202200  013342'         MOVEM   ACPPN,BINDIR+3  ;SET PPN\r
+       007045' 050040  013217'         OPEN    BIN,BININI      ;INITIALIZE BINARY\r
+       007046' 254000  010162'         JRST    EINIT           ;ERROR\r
+       007047' 623300  002000          TLZE TIO,TIOLE          ;SKIP TO EOT\r
+       007050' 072040  000010          MTAPE BIN,10\r
+       007051' 623300  001000          TLZE    TIO,TIORW       ;REWIND REQUESTED?\r
+       007052' 072040  000001          MTAPE   BIN,1           ;YES\r
+       007053' 325400  007061'         JUMPGE  CS,BINSE2       ;BRANCH IF NO BACK-SPACE\r
+       007054' 072040  000017          MTAPE   BIN,17          ;BACK-SPACE A FILE\r
+       007055' 341400  007054'         AOJL    CS,.-1          ;TEST FOR END\r
+       007056' 072040  000000          WAIT    BIN,\r
+       007057' 061040  004000          STATO   BIN,1B24        ;LOAD POINT?\r
+       007060' 072040  000016          MTAPE   BIN,16          ;NO, GO FORWARD ONE\r
+       007061' 367400  007060' BINSE2: SOJG    CS,.-1          ;TEST FORWARD SPACING\r
+\r
+       007062' 603300  020000          TLNE    TIO,TIOCLD      ;DIRECTORY CLEAR REQUESTED?\r
+       007063' 047040  000013          UTPCLR  BIN,            ;YES, CLEAR IT\r
+       007064' 065040  000002          OUTBUF  BIN,2           ;SET UP TWO RING BUFFER\r
+       007065' 306340  000137          CAIN    C,"_"\r
+       007066' 254000  007142'         JRST    GETSET          ;NO LISTING\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 132\r
+MACRO  10      24-APR-78 02:11         I/O ROUTINES\r
+\r
+       007067' 260740  007477' LSTSET: PUSHJ   PP,NAME1        ;GET NEXT DEVICE\r
+       007070' 302340  000137  LSTSE1: CAIE    C,"_"\r
+       007071' 254000  007603'         JRST    ERRCM\r
+       007072' 603640  002000          TLNE    FR,CREFSW       ;CROSS-REF REQUESTED?\r
+       007073' 254000  007102'         JRST    LSTSE2          ;NO, BRANCH\r
+       007074' 326040  007076'         JUMPN   ACDEV,.+2       ;YES, WAS DEVICE SPECIFIED?\r
+       007075' 205040  446353          MOVSI   ACDEV,(SIXBIT /DSK/)    ;NO, ASSUME DSK\r
+       007076' 326100  007100'         JUMPN   ACFILE,.+2\r
+       007077' 200100  015101'         MOVE    ACFILE,[SIXBIT /CREF/]\r
+       007100' 326140  007102'         JUMPN   ACEXT,.+2\r
+       007101' 205140  436246  MOVSI   ACEXT,(SIXBIT /CRF/)   \r
+       007102' 322040  007142' LSTSE2: JUMPE   ACDEV,GETSET    ;FORGET LISTING IF NO DEVICE SPECIFIED\r
+       007103' 200000  000001          MOVE    AC0,ACDEV\r
+       007104' 047000  000004          DEVCHR  AC0,            ;GET CHARACTERISTICS\r
+       007105' 603000  042010          TLNE    AC0,LPTBIT!DISBIT!TTYBIT\r
+       007106' 603640  002000          TLNE    FR,CREFSW       ; WAS CROSS-REF REQUESTED?\r
+       007107' 354000  013512'         AOSA    OUTSW+0*TTYSW   ;NO, ASSUME TTY\r
+       007110' 254000  007603'         JRST    ERRCM           ;YES, ERROR - CREF DEV MUST NOT BE LPT, DIS, OR TTY\r
+       007111' 603000  020000          TLNE    AC0,CONBIT      ;CONTROLING TELETYPE LISTING?\r
+       007112' 254000  007142'         JRST    GETSET          ;YES, BUFFER ALREADY SET\r
+       007113' 202040  013223'         MOVEM   ACDEV,LSTDEV    ;STORE DEVICE NAME\r
+       007114' 350000  013512'         AOS     OUTSW+0*LPTSW   ;SET FOR LPT\r
+       007115' 202100  013333'         MOVEM   ACFILE,LSTDIR   ;STORE FILE NAME\r
+       007116' 326140  007120'         JUMPN   ACEXT,.+2\r
+       007117' 205140  546364          MOVSI   ACEXT,(SIXBIT /LST/)\r
+       007120' 202140  013334'         MOVEM   ACEXT,LSTDIR+1\r
+       007121' 202200  013336'         MOVEM   ACPPN,LSTDIR+3  ;SET PPN\r
+       007122' 050140  013222'         OPEN    LST,LSTINI      ;INITIALIZE LISTING OUTPUT\r
+       007123' 254000  010162'         JRST    EINIT           ;ERROR\r
+       007124' 623300  002000          TLZE TIO,TIOLE\r
+       007125' 072140  000010          MTAPE LST,10\r
+       007126' 623300  001000          TLZE    TIO,TIORW       ;REWIND REQUESTED?\r
+       007127' 072140  000001          MTAPE   LST,1           ;YES\r
+       007130' 325400  007136'         JUMPGE  CS,LSTSE3\r
+       007131' 072140  000017          MTAPE   LST,17\r
+       007132' 341400  007131'         AOJL    CS,.-1\r
+       007133' 072140  000000          WAIT    LST,\r
+       007134' 061140  004000          STATO   LST,1B24\r
+       007135' 072140  000016          MTAPE   LST,16\r
+       007136' 367400  007135' LSTSE3: SOJG    CS,.-1\r
+       007137' 603300  020000          TLNE    TIO,TIOCLD      ;DIRECTORY CLEAR REQUESTED?\r
+       007140' 047140  000013          UTPCLR  LST,            ;YES, CLEAR IT\r
+       007141' 065140  000002          OUTBUF  LST,2           ;SET UP A TWO RING BUFFER\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 133\r
+MACRO  10      24-APR-78 02:11         I/O ROUTINES\r
+\r
+       007142' 201140  010321' GETSET: MOVEI   3,PDPERR\r
+       007143' 542140  000000*         HRRM    3,JOBAPR        ;SET TRAP LOCATION\r
+       007144' 201140  200000          MOVEI   3,1B19          ;SET FOR PUSH-DOWN OVERFLOW\r
+       007145' 047140  000016          APRENB  3,\r
+       007146' 370140  013513'         SOS     3,PDP           ;GET PDP REQUEST MINUS 1\r
+       007147' 221140  000062          IMULI   3,.PDP          ;COMPUTE SIZE (50*<NUMBER OF /P'S +1>)\r
+       007150' 514700  000003          HRLZ    MP,3\r
+       007151' 540700  007014*         HRR     MP,JOBFF        ;SET BASIC POINTER\r
+       007152' 200740  000016          MOVE    PP,MP\r
+       007153' 274740  000003          SUB     PP,3\r
+       007154' 202740  013250'         MOVEM   PP,RP           ;SET RP\r
+       007155' 274740  000003          SUB     PP,3\r
+       007156' 240140  000001          ASH     3,1             ;DOUBLE SIZE OF BASIC POINTER\r
+       007157' 504740  000003          HRL     PP,3\r
+       007160' 276740  000003          SUBM    PP,3            ;COMPUTE TOP LOCATION\r
+       007161' 336000  014121'         SKIPN   UNITOP          ;IF ANY UNIVERSALS HAVE BEEN SEEN\r
+       007162' 254000  007167'         JRST    GETSE0          ;NO\r
+       007163' 553000  000003          HRRZS   3               ;GET TOP OF BUFFERS AND STACKS\r
+       007164' 313140  014120'         CAMLE   3,UNISIZ        ;HOPE ITS NOT BIGGER THAN UNIVERSAL ONE\r
+       007165' 254000  005262'         JRST    UNIERR          ;IT WAS, YOU LOSE\r
+       007166' 334140  014121'         SKIPA   3,UNITOP        ;DON'T LOSE THEM\r
+       007167' 552140  014120' GETSE0: HRRZM   3,UNISIZ        ;STORE UNTIL A UNIVERSAL IS SEEN\r
+       007170' 552140  013450'         HRRZM   3,LADR          ;SET START OF MACRO TREE\r
+       007171' 552140  013377'         HRRZM   3,FREE\r
+\r
+       007172' 550000  006735* GETSE1: HRRZ    JOBREL\r
+       007173' 275000  000001          SUBI    1\r
+       007174' 202000  013553'         MOVEM   SYMTOP          ;SET TOP OF SYMBOL TABLE\r
+       007175' 275000  000004          SUBI    LENGTH          ;SET POINTER FOR INITIAL SYMBOLS\r
+       007176' 313000  013450'         CAMLE   LADR            ;HAVE WE ROOM?\r
+       007177' 254000  007205'         JRST    GETSE2          ;YES\r
+\r
+       007200' 550100  007172*         HRRZ    2,JOBREL        ;NO, TRY FOR MORE CORE\r
+       007201' 271100  002000          ADDI    2,2000\r
+       007202' 047100  000011          CORE    2,\r
+       007203' 254000  010317'         JRST    XCEED2  ;NO MORE, INFORM USER\r
+       007204' 254000  007172'         JRST    GETSE1          ;TRY AGAIN\r
+\r
+       007205' 202000  013552' GETSE2: MOVEM   SYMBOL          ;SET START OF SYMBOL TABLE\r
+       007206' 505000  012201'         HRLI    SYMNUM\r
+       007207' 251020  013553'         BLT     @SYMTOP         ;STORE SYMBOLS\r
+       007210' 260740  013125'         PUSHJ   PP,SRCHI        ;INITIALIZE TABLE\r
+       007211' 200000  015102'         MOVE    [XWD CTIBUF+1,CTLSAV]   ;SAVE CONTROL INPUT BUFFER\r
+       007212' 251000  013741'         BLT     CTLS1           ;FOR RESCAN ON PASS 2\r
+       007213' 205000  446353  IFN FTDISK,<MOVSI (SIXBIT /DSK/)        ;SET INPUT TO TAKE DSK AS DEV\r
+       007214' 202000  013736'         MOVEM ACDEVX>\r
+       007215' 260740  002743'         PUSHJ PP,COUTI  ;INIT OUTPUT JUST IN CASE\r
+       007216' 260740  007242'         PUSHJ   PP,INSET        ;GET FIRST INPUT FILE\r
+\r
+       007217' 603600  001000  IFN CCLSW,<TLNE IO,CRPGSW       ;BUT ONLY IF DOING RPG\r
+       007220' 051140  015103'         TTCALL  3,[ASCIZ /MACRO: /]     ;PUBLISH COMPILER NAME>\r
+       007221' 200400  013343'         MOVE CS,INDIR   ;SET UP NAME OF FIRST FILE\r
+       007222' 202400  013207'         MOVEM CS,LSTFIL ;AS LAST PRINTED\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 133-1\r
+MACRO  10      24-APR-78 02:11         I/O ROUTINES\r
+\r
+       007223' 402000  014102'         SETZM   LSTPGN\r
+       007224' 254000  000077'         JRST    ASSEMB          ;START ASSEMBLY\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 134\r
+MACRO  10      24-APR-78 02:11         I/O ROUTINES\r
+\r
+       007225' 070040  000000  FINIS:  CLOSE   BIN,            ;DUMP BUFFER\r
+       007226' 603640  001000          TLNE    FR,PNCHSW       ;PUNCH REQUESTED?\r
+       007227' 260740  010415'         PUSHJ   PP,TSTBIN       ;YES, TEST FOR ERRORS\r
+       007230' 071040  000000          RELEAS  BIN,\r
+       007231' 070140  000000          CLOSE   LST,\r
+       007232' 373000  013512'         SOSLE   OUTSW+0*LPTSW   ;LPT TYPE OUTPUT?\r
+       007233' 260740  010424'         PUSHJ   PP,TSTLST       ;YES, TEST FOR ERRORS\r
+       007234' 071140  000000          RELEAS  LST,\r
+       007235' 071100  000000          RELEAS  CHAR,\r
+       007236' 067000  000000          OUTPUT CTL,0    ;FLUSH TTY OUTPUT\r
+       007237' 332000  013733'         SKIPE   UNIVSN          ;SKIP IF NOT ASSEMBLING UNIVERSAL\r
+       007240' 260740  005207'         PUSHJ   PP,UNISYM       ;STORE SYMBOLS ETC. FIRST\r
+       007241' 254000  006632'         JRST    M               ;RETURN FOR NEXT ASSEMBLY\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 135\r
+MACRO  10      24-APR-78 02:11         I/O ROUTINES\r
+\r
+       007242' 201000  014161' INSET:  MOVEI   JOBFFI          ;POINTER TO INPUT BUFFER\r
+       007243' 542000  007151*         HRRM    JOBFF           ;INFORM SYSTEM OF BUFFER AREA\r
+       007244' 260740  007500'         PUSHJ   PP,NAME2        ;GET NEXT COMMAND NAME\r
+       007245' 322040  010115'         JUMPE   ACDEV,ERRNE     ;ERROR  IF NONE LEFT\r
+       007246' 202040  013234'         MOVEM   ACDEV,INDEV     ;STORE DEVICE\r
+       007247' 202100  013343'         MOVEM   ACFILE,INDIR    ;STORE FILE IN DIRECTORY\r
+       007250' 202200  013346'         MOVEM   ACPPN,INDIR+3   ;STORE PPN BEFORE WE LOSE IT\r
+       007251' 050100  013233'         OPEN    CHAR,INDEVI\r
+       007252' 254000  010162'         JRST    EINIT           ;ERROR\r
+       007253' 047040  000004          DEVCHR  ACDEV,          ;TEST CHARACTERISTICS\r
+       007254' 607040  000020          TLNN    ACDEV,MTABIT    ;MAG TAPE?\r
+       007255' 254000  007300'         JRST    INSET3          ;NO\r
+       007256' 627640  000004          TLZN    FR,MTAPSW       ;FIRST MAG TAPE IN PASS 2?\r
+       007257' 254000  007262'         JRST    INSET1          ;NO\r
+       007260' 607300  001000          TLNN    TIO,TIORW       ;YES, REWIND REQUESTED?\r
+       007261' 274400  013514'         SUB     CS,RECCNT       ;NO, PREPARE TO BACK-SPACE TAPE\r
+       007262' 350000  013514' INSET1: AOS     RECCNT          ;INCREMENT FILE COUNTER\r
+       007263' 272400  013514'         ADDM    CS,RECCNT       ;UPDATE  COUNT\r
+       007264' 623300  002000          TLZE TIO,TIOLE\r
+       007265' 072100  000010          MTAPE CHAR,10\r
+       007266' 623300  001000          TLZE    TIO,TIORW       ;REWIND?\r
+       007267' 072100  000001          MTAPE   CHAR,1          ;YES\r
+       007270' 325400  007277'         JUMPGE  CS,INSET2\r
+       007271' 072100  000017          MTAPE   CHAR,17\r
+       007272' 072100  000017          MTAPE   CHAR,17\r
+       007273' 341400  007272'         AOJL    CS,.-1\r
+       007274' 072100  000000          WAIT    CHAR,\r
+       007275' 061100  004000          STATO   CHAR,1B24\r
+       007276' 072100  000016          MTAPE   CHAR,16\r
+       007277' 365400  007276' INSET2: SOJGE   CS,.-1\r
+\r
+       007300' 064100  000001  INSET3: INBUF CHAR,1\r
+       007301' 201240  014161'         MOVEI ACPNTR,JOBFFI\r
+       007302' 250240  007243*         EXCH ACPNTR,JOBFF\r
+       007303' 275240  014161'         SUBI ACPNTR,JOBFFI\r
+       007304' 201200  000407          MOVEI ACDEL,NUMBUF*203+1\r
+       007305' 230200  000005          IDIV ACDEL,ACPNTR\r
+       007306' 064104  000000          INBUF CHAR,(ACDEL)\r
+       007307' 326140  007312'         JUMPN   ACEXT,INSET4    ;TAKE USER'S EXTENSION IF NON-BLANK\r
+       007310' 205140  554143          MOVSI   ACEXT,(SIXBIT /MAC/)    ;BLANK, TRY .MAC FIRST\r
+       007311' 260740  007425'         PUSHJ   PP,INSETI\r
+       007312' 260740  007425' INSET4: PUSHJ   PP,INSETI\r
+       007313' 322140  010171'         JUMPE   ACEXT,ERRCF     ;ERROR IF ZERO\r
+       007314' 603040  000010          TLNE    ACDEV,TTYBIT    ;TELETYPE?\r
+       007315' 060100  000001          SETSTS  CHAR,AL         ;YES, CHANGE TO ASCII LINE\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 136\r
+MACRO  10      24-APR-78 02:11         I/O ROUTINES\r
+\r
+                                                               ;DO ALL ENTERS HERE FOR LEVEL D\r
+       007316' 332000  013732'         SKIPE   ENTERS          ;HAVE ENTERS BEEN DONE ALREADY?\r
+       007317' 254000  007351'         JRST    ENTRDN          ;YES, DON'T DO TWICE\r
+       007320' 336140  013223'         SKIPN   ACEXT,LSTDEV    ;IS THERE A LIST DEVICE?\r
+       007321' 254000  007342'         JRST    LSTSE5          ;NO SO DON'T DO ENTER\r
+       007322' 336100  013333'         SKIPN   ACFILE,LSTDIR   ;GET FILE NAME INCASE OF ERROR\r
+                                       JRST    [DEVCHR ACEXT,  \r
+                                               TLNE    ACEXT,DIRBIT    ;DOES IT HAVE A DIRECTORY?\r
+                                               JRST    LSTSE4          ;YES, GIVE UP BEFORE HARM IS DONE\r
+                                               SKIPE   ACFILE,INDIR    ;USE INPUT FILE NAME\r
+                                               MOVEM   ACFILE,LSTDIR   ;TOO BAD IF ZERO ALSO\r
+       007323' 254000  015105'                 JRST    LSTSE4]\r
+       007324' 510140  013334'         HLLZ    ACEXT,LSTDIR+1  ;EXT ALSO\r
+       007325' 200200  013336'         MOVE    ACPPN,LSTDIR+3  ;SAVE PPN\r
+       007326' 076140  013333'         LOOKUP  LST,LSTDIR      ;PREVIOUS ONE STILL THERE\r
+       007327' 254000  007340'         JRST    LSTSE4          ;NO\r
+       007330' 402000  013333'         SETZM   LSTDIR          ;YES,CLEAR NAME\r
+       007331' 202200  013336'         MOVEM   ACPPN,LSTDIR+3  ;RESET PPN\r
+       007332' 055140  013333'         RENAME  LST,LSTDIR\r
+       007333' 070140  000000          CLOSE   LST,            ;IGNORE FAILURE\r
+       007334' 202100  013333'         MOVEM   ACFILE,LSTDIR   ;RESTORE NAME\r
+       007335' 513000  013334'         HLLZS   LSTDIR+1        ;BH 11/19/74 FOR DATE75.  CLEAR RH.\r
+       007336' 402000  013335'         SETZM   LSTDIR+2        ;CLEAR PROTECTION AND DATE\r
+       007337' 202200  013336'         MOVEM   ACPPN,LSTDIR+3  ;SET PPN AGAIN\r
+       007340'                 LSTSE4: \r
+       007340' 077140  013333'         ENTER   LST,LSTDIR      ;SET UP DIRECTORY\r
+       007341' 254000  010164'         JRST    ERRCL           ;ERROR\r
+       007342' 336140  013220' LSTSE5: SKIPN   ACEXT,BINDEV    ;A BINARY DEVICE THEN ?\r
+       007343' 254000  007351'         JRST    ENTRDN          ;NO\r
+       007344' 336100  013337'         SKIPN   ACFILE,BINDIR   ;INCASE OF ERROR\r
+                                       JRST    [DEVCHR ACEXT,  \r
+                                               TLNE    ACEXT,DIRBIT    ;DOES IT HAVE A DIRECTORY?\r
+                                               JRST    .+1             ;YES, GIVE UP BEFORE HARM IS DONE\r
+                                               SKIPE   ACFILE,INDIR    ;USE INPUT FILE NAME\r
+                                               MOVEM   ACFILE,BINDIR   ;TOO BAD IF ZERO ALSO\r
+       007345' 254000  015113'                 JRST    .+1]\r
+       007346' 513140  013340'         HLLZS   ACEXT,BINDIR+1  ;BH 11/19/74 DATE75.  WAS HLLZ.\r
+       007347' 077040  013337'         ENTER   BIN,BINDIR      ;ENTER FILE NAME\r
+       007350' 254000  010166'         JRST    ERRCB           ;ERROR\r
+\r
+       007351' 476000  013732' ENTRDN: SETOM   ENTERS          ;MAKE SURE ONLY DONE ONCE\r
+       007352' 200400  015121'         MOVE    CS,[POINT 7,DEVBUF]\r
+       007353' 261740  000001          PUSH    PP,1            ;SAVE THE ACCS\r
+       007354' 261740  000002          PUSH    PP,2\r
+       007355' 261740  000003          PUSH    PP,3\r
+       007356' 336100  013343'         SKIPN   2,INDIR         ;GET INPUT NAME\r
+       007357' 254000  007412'         JRST    FINDEV          ;FINISHED WITH DEVICE\r
+       007360' 400040  000000          SETZ    1,              ;CLEAR FOR RECEIVING\r
+       007361' 246040  000006          LSHC    1,6             ;SHIFT ONE CHAR. IN\r
+       007362' 271040  000040          ADDI    1,40            ;FORM ASCII\r
+       007363' 136040  000010          IDPB    1,CS            ;STORE CHAR.\r
+       007364' 326100  007360'         JUMPN   2,.-4           ;MORE TO DO?\r
+       007365' 201040  000011          MOVEI   1,"     "       ;SEPARATE BY TAB\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 136-1\r
+MACRO  10      24-APR-78 02:11         I/O ROUTINES\r
+\r
+       007366' 136040  000010          IDPB    1,CS\r
+       007367' 510100  013344'         HLLZ    2,INDIR+1       ;GET EXT\r
+       007370' 322100  007376'         JUMPE   2,FINEXT        ;NO EXT\r
+       007371' 400040  000000          SETZ    1,\r
+       007372' 246040  000006          LSHC    1,6             ;SAME LOOP AS ABOVE\r
+       007373' 271040  000040          ADDI    1,40\r
+       007374' 136040  000010          IDPB    1,CS\r
+       007375' 326100  007371'         JUMPN   2,.-4\r
+       007376' 201040  000011  FINEXT: MOVEI   1,"     "\r
+       007377' 136040  000010          IDPB    1,CS            ;SEPARATE BY TAB\r
+       007400' 135040  015122'         LDB     1,[POINT 12,INDIR+2,35] ;GET DATE\r
+       007401' 135100  015123'         LDB     2,[POINT 3,INDIR+1,20]  ;BH 11/19/74 DATE75.\r
+       007402' 137100  015124'         DPB     2,[POINT 3,1,23]        ;BH 11/19/74 DATE75.\r
+       007403' 322040  007412'         JUMPE   1,FINDEV        ;NO DATE?\r
+       007404' 260740  010724'         PUSHJ   PP,DATOUT       ;STORE IT\r
+       007405' 135100  015125'         LDB     2,[POINT 11,INDIR+2,23] ;GET CREATION TIME\r
+       007406' 322100  007412'         JUMPE   2,FINDEV        ;NO TIME (DECTAPE)\r
+       007407' 201040  000040          MOVEI   1," "           ;SEPARATE BY SPACE\r
+       007410' 136040  000010          IDPB    1,CS\r
+       007411' 260740  010710'         PUSHJ   PP,TIMOU1       ;STORE TIME\r
+       007412' 400040  000000  FINDEV: SETZ    1,\r
+       007413' 201100  000011          MOVEI   2,"     "       ;FINAL TAB\r
+       007414' 136100  000010          IDPB    2,CS\r
+       007415' 136040  000010          IDPB    1,CS            ;TERMINATE FOR NOW\r
+       007416' 262740  000003          POP     PP,3            ;RESTORE ACCS\r
+       007417' 262740  000002          POP     PP,2\r
+       007420' 262740  000001          POP     PP,1\r
+       007421' 336000  014100'         SKIPN   PAGENO          ;IF FIRST TIME THRU\r
+       007422' 254000  010703'         JRST    OUTFF           ;START NEW PAGE\r
+       007423' 402000  014100'         SETZM PAGENO            ;ON NEW FILE, RESET PAGES\r
+       007424' 254000  010704'         JRST    OUTFF2          ;DON'T START NEW PAGE UNLESS FF\r
+\r
+       007425' 512140  013344' INSETI: HLLZM   ACEXT,INDIR+1   ;STORE EXTENSION\r
+       007426' 200200  013346'         MOVE    ACPPN,INDIR+3   ;SAVE PPN\r
+       007427' 076100  013343'         LOOKUP  CHAR,INDIR\r
+       007430' 334140  013344'         SKIPA   ACEXT,INDIR+1   ;GET ERROR CODE\r
+       007431' 254000  003446'         JRST    CPOPJ1          ;SKIP-RETURN IF FOUND\r
+       007432' 602140  777777          TRNE    ACEXT,-1        ;ERROR CODE OF 0 IS FILE NOT FOUND\r
+       007433' 254000  010171'         JRST    ERRCF           ;FILE THERE BUT NOT READABLE\r
+       007434' 400140  000000          SETZ    ACEXT,          ;CLEAR EXT AND TRY AGAIN\r
+       007435' 202200  013346'         MOVEM   ACPPN,INDIR+3   ;RESTORE PPN\r
+       007436' 263740  000000          POPJ    PP,\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 137\r
+MACRO  10      24-APR-78 02:11         I/O ROUTINES\r
+\r
+       007437' 204000  015102' REC2:   MOVS    [XWD CTIBUF+1,CTLSAV]   ;RESCAN CONTROL (FROM PASS1 END STMNT)\r
+       007440' 251000  014113'         BLT     CTIBUF+2        ;INPUT BUFFER\r
+       007441' 201000  000137          MOVEI   "_"\r
+       007442' 506000  013347'         HRLM    ACDELX          ;FUDGE PREVIOUS DELIMITER\r
+                               IFN RENTSW,<MOVE HHIGH  ;GET HI-SEG BREAK\r
+                                       MOVEM   HIGH1   ;SAVE THE ONE WE GOT ON PASS1 (FOR HISEG)>\r
+       007443' 402000  013734'         SETZM   PASS2I\r
+       007444' 200000  014726'         MOVE    [XWD PASS2I,PASS2I+1]\r
+       007445' 251000  014101'         BLT     PASS2X-1                ;ZERO PASS2 VARIABLES\r
+       007446' 661640  000024          TLO     FR,MTAPSW!LOADSW        ;SET FLAGS \r
+\r
+       007447' 200000  013234' GOTEND: MOVE    INDEV           ;GET LAST DEVICE\r
+       007450' 047000  000004          DEVCHR                  ;GET ITS CHARACTERISTICS\r
+       007451' 603000  000004          TLNE    4               ;TEST FOR DIRECTORY (DSK OR DTA)\r
+       007452' 254000  007460'         JRST    EOT             ;YES, SO DON'T WASTE TIME\r
+       007453' 254000  007456'         JRST    .+3             ;NO, INPUT BUFFER BY BUFFER\r
+       007454' 056100  000000          IN      CHAR,\r
+       007455' 254000  007454'         JRST    .-1             ;NO ERRORS\r
+       007456' 061100  020000          STATO   CHAR,1B22       ;TEST FOR EOF\r
+       007457' 254000  007454'         JRST    .-3             ;IGNORE ERRORS\r
+\r
+       007460' 260740  007473' EOT:    PUSHJ   PP,SAVEXS       ;SAVE REGISTERS\r
+       007461' 260740  007242'         PUSHJ   PP,INSET        ;GET THE NEXT INPUT DEVICE\r
+       007462' 561440  015126'         HRROI   RC,[SIXBIT /END OF PASS 1@/]    ;ASSUME END OF PASS\r
+       007463' 627640  000020          TLZN    FR,LOADSW       ;ZERO ONLY ON END OF PASS 1\r
+       007464' 561440  015131'         HRROI   RC,[SIXBIT /LOAD THE NEXT FILE@/]       ;NOT END OF PASS\r
+       007465' 607040  000024          TLNN    ACDEV,(1B13!1B15)       ;WAS ALL THAT WORK NECESSARY?\r
+       007466' 260740  010241'         PUSHJ   PP,TYPMSG       ;YES\r
+\r
+       007467' 205440  013515' RSTRXS: MOVSI   RC,SAVBLK       ;SET POINTER\r
+       007470' 251440  000010          BLT     RC,RC-1         ;RESTORE REGISTERS\r
+       007471' 200440  013526'         MOVE    RC,SAVERC       ;RESTORE RC\r
+       007472' 263740  000000          POPJ    PP,             ;EXIT\r
+\r
+       007473' 202440  013526' SAVEXS: MOVEM   RC,SAVERC       ;SAVE RC\r
+       007474' 201440  013515'         MOVEI   RC,SAVBLK       ;SET POINTER\r
+       007475' 251440  013525'         BLT     RC,SAVBLK+RC-1  ;BLT ALL REGISTERS BELOW RC\r
+       007476' 263740  000000          POPJ    PP,             ;EXIT\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 138\r
+MACRO  10      24-APR-78 02:11         I/O ROUTINES\r
+\r
+       007477' 402000  013736' NAME1:  SETZM   ACDEVX          ;ENTRY FOR DESTINATION\r
+       007500' 403040  013345' NAME2:  SETZB   ACDEV,INDIR+2   ;ENTRY FOR SOURCE\r
+       007501' 201100  000000          MOVEI   ACFILE,0        ;CLEAR FILE\r
+       007502' 554200  013347'         HLRZ    ACDEL,ACDELX    ;GET PREVIOUS DELIMITER\r
+       007503' 403300  000010          SETZB   TIO,CS\r
+       007504' 403140  013346'         SETZB   ACEXT,INDIR+3   ;RESET EXTENSION AND PROGRAM-NUMBER PAIR\r
+       007505' 402000  014054'         SETZM   PPN             ;CLEAR PPN\r
+       007506' 205240  440600  NAME3:  MOVSI   ACPNTR,(POINT 6,AC0)    ;SET POINTER\r
+       007507' 634000  000000          TDZA    AC0,AC0         ;CLEAR SYMBOL\r
+\r
+       007510' 260740  007630' SLASH:  PUSHJ   PP,SW0\r
+       007511' 260740  010076' GETIOC: PUSHJ   PP,TTYIN        ;GET INPUT CHARACTER\r
+       007512' 306340  000057          CAIN    C,"/"\r
+       007513' 254000  007510'         JRST    SLASH\r
+       007514' 306340  000050          CAIN    C,"("\r
+       007515' 254000  007624'         JRST    SWITCH\r
+       007516' 306340  000072          CAIN    C,":"\r
+       007517' 254000  007551'         JRST    DEVICE\r
+       007520' 306340  000056          CAIN    C,"."\r
+       007521' 254000  007554'         JRST    NAME\r
+       007522' 302340  000041  IFN CCLSW,<CAIE C,"!"           ;IS CHAR AN IMPERATIVE?\r
+       007523' 306340  000100          CAIN    C,"@"\r
+       007524' 254000  007560'         JRST    TERM            ;YES, GO DO IT>\r
+       007525' 302340  000033          CAIE    C,33            ;CHECK FOR THREE FLAVORS OF ALT-MODE\r
+       007526' 306340  000176          CAIN    C,176           ;...\r
+       007527' 254000  007560'         JRST    TERM            ;...\r
+       007530' 307340  000015          CAIG    C,CR            ;LESS THAN CR?\r
+       007531' 305340  000012          CAIGE   C,LF            ;AND GREATER THAN LF?\r
+       007532' 306340  000175          CAIN    C,175           ;OR 3RD ALTMOD\r
+       007533' 254000  007560'         JRST    TERM            ;YES\r
+       007534' 306340  000133  IFN FTDISK,<CAIN C,"["\r
+       007535' 254000  007605'         JRST    PROGNP          ;GET PROGRAMER NUMBER PAIR>\r
+       007536' 306340  000075          CAIN    C,"="           ;EQUALS IS SAME AS LEFT ARROW\r
+       007537' 644340  000142          TRCA    C,142           ;SO MAKE IT A "_" AND SKIP\r
+       007540' 302340  000054          CAIE    C,","\r
+       007541' 306340  000137          CAIN    C,"_"\r
+       007542' 254000  007560'         JRST    TERM\r
+       007543' 305340  000040          CAIGE   C,40            ;VALID AS SIXBIT?\r
+                                       JRST    [CAIN C,"Z"-100 ;NO,IS IT ^Z\r
+                                               EXIT            ;YES,EXIT FOR BATCH\r
+       007544' 254000  015135'                 JRST    GETIOC] ;JUST IGNORE\r
+       007545' 275340  000040          SUBI    C,40            ;CONVERT TO 6-BIT\r
+       007546' 603240  770000          TLNE    ACPNTR,770000   ;HAVE WE STORED SIX BYTES?\r
+       007547' 136340  000005          IDPB    C,ACPNTR        ;NO, STORE IT\r
+       007550' 254000  007511'         JRST    GETIOC          ;GET NEXT CHARACTER\r
+\r
+       007551' 326040  007603' DEVICE: JUMPN   ACDEV,ERRCM     ;ERROR IF ALREADY SET\r
+       007552' 200040  000000          MOVE    ACDEV,AC0       ;DEVICE NAME\r
+       007553' 254000  007556'         JRST    DEVNAM          ;COMMON CODE\r
+\r
+       007554' 326100  007603' NAME:   JUMPN   ACFILE,ERRCM    ;ERROR IF ALREADY SET\r
+       007555' 200100  000000          MOVE    ACFILE,AC0      ;FILE NAME\r
+       007556' 200200  000007  DEVNAM: MOVE    ACDEL,C         ;SET DELIMITER\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 138-1\r
+MACRO  10      24-APR-78 02:11         I/O ROUTINES\r
+\r
+       007557' 254000  007506'         JRST    NAME3           ;GET NEXT SYMBOL\r
+\r
+       007560' 322200  007565' TERM:   JUMPE   ACDEL,TERM1     ;IF NO PREVIOUS TERMINATOR, THEN FILENAME\r
+       007561' 306200  000137          CAIN    ACDEL,"_"       ;...\r
+       007562' 254000  007565'         JRST    TERM1           ;...\r
+       007563' 302200  000072          CAIE    ACDEL,":"       ;IF PREVIOUS DELIMITER\r
+       007564' 306200  000054          CAIN    ACDEL,","       ;WAS COLON OR COMMA\r
+       007565' 200100  000000  TERM1:  MOVE    ACFILE,AC0      ;SET FILE\r
+       007566' 306200  000056          CAIN    ACDEL,"."       ;IF PERIOD,\r
+       007567' 510140  000000          HLLZ    ACEXT,AC0       ;SET EXTENSION\r
+       007570' 506340  013347'         HRLM    C,ACDELX        ;SAVE PREVIOUS DELIMITER\r
+       007571' 326040  007573'         JUMPN   ACDEV,.+2       ;IF DEVICE SET USE IT\r
+       007572' 334040  013736'         SKIPA   ACDEV,ACDEVX    ;OTHERWISE USE LAST DEVICE\r
+       007573' 202040  013736'         MOVEM   ACDEV,ACDEVX    ;AND DEVICE\r
+       007574' 200200  014054'         MOVE    ACPPN,PPN       ;PUT PPN IN RIGHT PLACE\r
+       007575' 306340  000041  IFN FTDISK,<CAIN C,"!"          ;IMPERATIVE?\r
+       007576' 263740  000000          POPJ    PP,             ;YES, DON'T ASSUME DEV\r
+       007577' 322100  003447'         JUMPE   ACFILE,CPOPJ    ;IF THERE IS A FILE,\r
+       007600' 326040  007602'         JUMPN   ACDEV,.+2       ;BUT NO DEVICE\r
+       007601' 205040  446353          MOVSI   ACDEV,(SIXBIT /DSK/)    ;THEN ASSUME DISK>\r
+       007602' 263740  000000          POPJ    PP,             ;EXIT\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 139\r
+MACRO  10      24-APR-78 02:11         I/O ROUTINES\r
+\r
+       007603' 561440  015140' ERRCM:  HRROI   RC,[SIXBIT /COMMAND ERROR@/]\r
+       007604' 254000  010176'         JRST    ERRFIN\r
+\r
+       007605'                 IFN FTDISK,<PROGNP:\r
+       007605' 516440  014054' PROGN1: HRLZM   RC,PPN          ;COMMA, STORE LEFT HALF\r
+       007606' 201440  000000  PROGN2: MOVEI   RC,0            ;CLEAR AC\r
+       007607' 260740  010076' PROGN3: PUSHJ   PP,TTYIN\r
+       007610' 306340  000054          CAIN    C,","\r
+       007611' 254000  007605'         JRST    PROGN1          ;STORE LEFT HALF\r
+       007612' 542440  014054'         HRRM    RC,PPN          ;ASSUME TERMINAL\r
+       007613' 306340  000135          CAIN    C,"]"\r
+       007614' 254000  007511'         JRST    GETIOC          ;YES, RETURN TO MAIN SCAN\r
+       007615' 301340  000060          CAIL    C,"0"           ;CHECK FOR VALID NUMBERS\r
+       007616' 303340  000067          CAILE   C,"7"\r
+       007617' 254000  007603'         JRST    ERRCM           ;NOT VALID\r
+       007620' 242440  000003          LSH     RC,3            ;SHIFT PREVIOUS RESULT\r
+       007621' 271447  777720          ADDI    RC,-"0"(C)      ;ADD IN NEW NUMBER\r
+       007622' 254000  007607'         JRST    PROGN3          ;GET NEXT CHARACTER>\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 140\r
+MACRO  10      24-APR-78 02:11         I/O ROUTINES\r
+\r
+       007623' 260740  007631' SWITC0: PUSHJ   PP,SW1          ;PROCESS CHARACTER\r
+       007624' 260740  010076' SWITCH: PUSHJ   PP,TTYIN        ;GET NEXT CHARACTER\r
+       007625' 302340  000051          CAIE    C,")"           ;END OF STRING?\r
+       007626' 254000  007623'         JRST    SWITC0          ;NO\r
+       007627' 254000  007511'         JRST    GETIOC          ;YES\r
+\r
+       007630' 260740  010076' SW0:    PUSHJ   PP,TTYIN\r
+       007631' 201347  777677  SW1:    MOVEI   C,-"A"(C)       ;CONVERT FROM ASCII TO NUMERIC\r
+       007632' 303340  000031          CAILE   C,"Z"-"A"       ;WITHIN BOUNDS? (IS IT ALPHA?)\r
+       007633' 254000  007603'         JRST    ERRCM           ;NO, ERROR\r
+       007634' 200440  015143'         MOVE    RC,[POINT 4,BYTAB]\r
+       007635' 133000  000011          IBP     RC\r
+       007636' 365340  007635'         SOJGE   C,.-1           ;MOVE TO PROPER BYTE\r
+       007637' 135340  000011          LDB     C,RC            ;PICK UP BYTE\r
+       007640' 322340  007603'         JUMPE   C,ERRCM         ;TEST FOR VALID SWITCH\r
+       007641' 307340  000003          CAIG    C,SWTABT-SWTAB  ;LEGAL ON SOURCE?\r
+       007642' 321740  007603'         JUMPL   PP,ERRCM        ;NO, TEST FOR SOURCE\r
+       007643' 135440  015144'         LDB     RC,[POINT 4,SWTAB-1(C),12]\r
+       007644' 306440  000014          CAIN    RC,IO\r
+       007645' 336000  013740'         SKIPN   CTLSAV          ;IF PASS2 OR IO SWITCH,\r
+       007646' 256007  010052'         XCT     SWTAB-1(C)      ;EXECUTE INSTRUCTION\r
+       007647' 263740  000000          POPJ    PP,             ;EXIT\r
+       007650' 621600  000001          TLZ     IO,IOSALL       ;TAKE CARE OF /X\r
+       007651' 263740  000000          POPJ    PP,\r
+\r
+                               DEFINE HELP (TEXT)<\r
+                                       XLIST\r
+                                       ASCIZ ?TEXT?\r
+                                       LIST>\r
+\r
+                               HLPMES: HELP <\r
+                               Switches are :-\r
+                               */A advance one file\r
+                               */B backspace one file\r
+                               /C produce a cref listing\r
+                               */E list macro expansions (LALL)\r
+                               */F list in new format (.MFRMT)\r
+                               /G list in old format (.HWFRMT)\r
+                               /H type this text\r
+                               */L reinstate listing (LIST)\r
+                               /M suppress ascii in macro and repeat expansion (SALL)\r
+                               */N suppress error printout on tty\r
+                               /O set MLOFF pseudo-op\r
+                               /P increase size of the pushdown stack\r
+                               /Q suppress Q errors on the listing\r
+                               */S suppress listing (XLIST)\r
+                               */T rewind device\r
+                               */X suppress all macro expansions (XALL)\r
+                               */Z zero the directory\r
+                               Switches A,B,C,T,W,X, and Z must immediately follow\r
+                               the device or file to which they refer.\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 141\r
+MACRO  10      24-APR-78 02:11         I/O ROUTINES\r
+\r
+                                       DEFINE  SETSW   (LETTER,INSTRUCTION) <  INSTRUCTION\r
+                               J=      <"LETTER"-"A">-^D9*<I=<"LETTER"-"A">/^D9>\r
+                                       SETCOD  \I,J>\r
+\r
+                                       DEFINE  SETCOD          (I,J)\r
+                                       <BYTAB'I=BYTAB'I!<.-SWTAB>B<4*J+3>>\r
+\r
+                       000000  BYTAB0= 0                       ;INITIALIZE TABLE\r
+                       000000  BYTAB1= 0\r
+                       000000  BYTAB2= 0\r
+\r
+       010053'                 SWTAB:\r
+       010053' 661300  020000          SETSW   Z,<TLO  TIO,TIOCLD      >\r
+       010054' 621640  002000          SETSW   C,<TLZ  FR,CREFSW       >\r
+       010055' 370000  013513'         SETSW   P,<SOS  PDP             >\r
+       010056'                 SWTABT:                         ;THE ABOVE SW'S ARE LEGAL ON OUTPUT ONLY\r
+       010056' 271400  000001          SETSW   A,<ADDI CS,1            >\r
+       010057' 275400  000001          SETSW   B,<SUBI CS,1            >\r
+       010060' 621600  004001          SETSW   E,<TLZ  IO,IOPALL!IOSALL        >\r
+       010061' 051140  007652'         SETSW   H,<OUTSTR       HLPMES>\r
+       010062' 621600  200000          SETSW   L,<TLZ  IO,IOMSTR       >\r
+       010063' 661600  004001          SETSW   M,<TLO  IO,IOPALL!IOSALL        >\r
+       010064' 523000  013727'         SETSW   N,<HLLOS   TYPERR       >\r
+       010065' 256000  004244'         SETSW   O,<XCT  OFFML           >\r
+       010066' 661640  000010          SETSW   Q,<TLO  FR,ERRQSW       >\r
+       010067' 661600  200000          SETSW   S,<TLO  IO,IOMSTR       >\r
+       010070' 661300  002000          SETSW   T,<TLO  TIO,TIOLE       >\r
+       010071' 661300  001000          SETSW   W,<TLO  TIO,TIORW       >\r
+       010072' 665600  004000          SETSW   X,<TLOA IO,IOPALL       >\r
+\r
+       010073'                 BYTAB:                          ;BYTAB CONTAINS AN INDEX TO SWTAB\r
+                                                               ;IT CONSIST OF 9 4BIT BYTES/WORD\r
+                                                               ;OR ONE BYTE FOR EACH LETTER\r
+\r
+       010073' 212201  400160          +BYTAB0                 ;A-I    BYTE = 1 THROUGH 17 = INDEX\r
+       010074' 001046  531700          +BYTAB1                 ;J-R    BYTE = 0 = COMMAND ERROR\r
+       010075' 674003  600020          +BYTAB2                 ;S-Z\r
+\r
+                               IF2,<PURGE I,J,BYTAB0,BYTAB1,BYTAB2>\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 142\r
+MACRO  10      24-APR-78 02:11         I/O ROUTINES\r
+\r
+       010076' 375000  014113' TTYIN:  SOSGE   CTIBUF+2        ;ENUF CHAR.?\r
+       010077' 254000  010113'         JRST    TTYERR          ;NO\r
+       010100' 134340  014112'         ILDB    C,CTIBUF+1      ;GET CHARACTER\r
+       010101' 302340  000040          CAIE    C," "           ;SKIP BLANKS\r
+       010102' 306340  000011          CAIN    C,HT            ;AND TABS\r
+       010103' 254000  010076'         JRST    TTYIN\r
+       010104' 306340  000015          CAIN    C,15            ;CR?\r
+       010105' 402000  014113'         SETZM   CTIBUF+2        ;YES,IGNORE REST OF LINE\r
+       010106' 307340  000172          CAIG C,"Z"+40           ;CHECK FOR LOWER CASE\r
+       010107' 305340  000141          CAIGE C,"A"+40\r
+       010110' 263740  000000          POPJ    PP,             ;NO,EXIT\r
+       010111' 275340  000040          SUBI C,40\r
+       010112' 263740  000000          POPJ    PP,             ;YES, EXIT\r
+\r
+       010113' 336000  013234' TTYERR: SKIPN   INDEV           ;INPUT DEVICE SEEN?\r
+       010114' 254000  007603'         JRST    ERRCM           ;NO, SO MISSING "_"\r
+       010115' 561440  015145' ERRNE:  HRROI   RC,[SIXBIT /?NO END STATEMENT ENCOUNTERED ON INPUT FILE@/]\r
+       010116' 051540  000006  ERRNE0: SKPINC  V       ;SEE IF WE CAN INPUT A CHAR.\r
+       010117' 255000  000000            JFCL          ;BUT ONLY TO DEFEAT ^O\r
+       010120' 260740  010241'         PUSHJ PP,TYPMSG ;OUTPUT IT\r
+       010121' 332000  013773'         SKIPE LITLVL    ;SEE IF IN LITERAL\r
+       010122' 336000  013755'         SKIPN   LITPG   ;PAGE 0 MEANS NOT IN A LITERAL REALY\r
+       010123' 254000  010126'         JRST ERRNE1     ;NO, TRY OTHERS\r
+       010124' 200300  015157'         MOVE V,[XWD [SIXBIT /IN LITERAL@/],LITPG]\r
+       010125' 260740  010323'         PUSHJ PP,PRNUM  ;GO PRINT INFORMATION\r
+       010126' 201300  000000  ERRNE1: MOVEI V,0       ;CHECK FOR OTHER PLACES\r
+       010127' 332000  013745'         SKIPE INDEF\r
+       010130' 200300  015162'         MOVE V,[XWD [SIXBIT /IN DEFINE@/],DEFPG]\r
+       010131' 332000  013746'         SKIPE INTXT\r
+       010132' 200300  015165'         MOVE V,[XWD [SIXBIT /IN TEXT@/],TXTPG]\r
+       010133' 332000  013744'         SKIPE INREP\r
+       010134' 200300  015173'         MOVE V,[XWD [SIXBIT /IN CONDITIONAL OR REPEAT@/],REPPG]\r
+       010135' 332000  013747'         SKIPE INCND\r
+       010136' 200300  015177'         MOVE V,[XWD [SIXBIT /IN CONDITIONAL@/],CNDPG]\r
+       010137' 335000  014071'         SKIPGE MACENL\r
+       010140' 200300  015203' ERRNE2: MOVE V,[XWD [SIXBIT /IN MACRO CALL@/],CALPG]\r
+       010141' 326300  010145'         JUMPN V,ERRNE3\r
+       010142' 336000  013773'         SKIPN   LITLVL          ;HAD ONE PAGE NUMBER ALREADY\r
+       010143' 334300  015204'         SKIPA   V,[XWD [SIXBIT /@/],PAGENO]     ;BETTER THAN NOTHING\r
+       010144' 254000  010146'         JRST    .+2\r
+       010145' 260740  010323' ERRNE3: PUSHJ PP,PRNUM\r
+       010146' 561440  015134'         HRROI RC,[SIXBIT /@/]   ;WILL GET A RETURN\r
+       010147' 254000  010176'         JRST ERRFIN\r
+\r
+       010150' 004562  625762  ERRMS1: SIXBIT / ERRORS DETECTED@/\r
+       010151' 630044  456445\r
+       010152' 436445  444000\r
+       010153' 372100  456262  ERRMS2: SIXBIT /?1 ERROR DETECTED@/\r
+       010154' 576200  444564\r
+       010155' 454364  454440\r
+       010156' 565700  456262  ERRMS3: SIXBIT /NO ERRORS DETECTED@/\r
+       010157' 576263  004445\r
+       010160' 644543  644544\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 142-1\r
+MACRO  10      24-APR-78 02:11         I/O ROUTINES\r
+\r
+       010161' 400000  000000\r
+       010162' 200440  015210' EINIT:  MOVE    RC,[XWD ACDEV,[SIXBIT /NOT AVAILABLE@/]]\r
+       010163' 254000  010176'         JRST    ERRFIN\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 143\r
+MACRO  10      24-APR-78 02:11         I/O ROUTINES\r
+\r
+       010164' 550440  013334' ERRCL:  HRRZ    RC,LSTDIR+1     ;GET LST DEV ERROR CODE\r
+       010165' 254000  010167'         JRST    .+2             ;GET ERROR MESSAGE\r
+       010166' 550440  013340' ERRCB:  HRRZ    RC,BINDIR+1     ;GET BIN DEV ERROR CODE\r
+       010167' 326440  010173'         JUMPN   RC,ERRTYP\r
+       010170' 364440  010173'         SOJA    RC,ERRTYP       ;SPECIAL CASE IF ERROR CODE 0\r
+\r
+       010171' 550440  013344' ERRCF:  HRRZ    RC,INDIR+1      ;GET INPUT DEV ERROR CODE\r
+       010172' 510140  013344'         HLLZ    ACEXT,INDIR+1   ;SET UP EXT\r
+\r
+       010173' 301440  000027  ERRTYP: CAIL    RC,TABLND-TABLE ;IS ERROR CODE LEGAL?\r
+       010174' 334440  010240'         SKIPA   RC,TABLND       ;NO, GIVE CATCH ALL MESSAGE\r
+       010175' 200451  010211'         MOVE    RC,TABLE(RC)    ;YES, PICK UP MESSAGE\r
+\r
+       010176' 051540  000007  ERRFIN: SKPINC  C               ;SEE IN WE CAN INPUT A CHAR.\r
+       010177' 255000  000000            JFCL                  ;BUT ONLY TO DEFEAT ^O\r
+       010200' 260740  010247'         PUSHJ   PP,CRLF\r
+       010201' 201340  000077          MOVEI   C,"?"\r
+       010202' 260740  010252'         PUSHJ   PP,TYO\r
+       010203' 260740  010242'         PUSHJ   PP,TYPMS1\r
+       010204' 070140  000000          CLOSE   LST,            ;GIVE USER A PARTIAL LISTING\r
+       010205' 070040  000040          CLOSE   BIN,40          ;BUT NEVER A BUM REL FILE\r
+       010206' 350000  003237* IFN CCLSW,<AOS  JOBERR          ;RECORD ERROR SO EXECUTION DELETED>\r
+       010207' 254000  006632'         JRST    M\r
+\r
+       010210' 015211' 000002          [SIXBIT /(0) ILLEGAL FILE NAME@/],,ACFILE\r
+       010211' 015215' 000002  TABLE:  [SIXBIT /(0) FILE WAS NOT FOUND@/],,ACFILE\r
+       010212' 015221' 000002          [SIXBIT /(1) NO DIRECTORY FOR PROJECT-PROGRAMMER NUMBER@/],,ACFILE\r
+       010213' 015231' 000002          [SIXBIT /(2) PROTECTION FAILURE@/],,ACFILE\r
+       010214' 015235' 000002          [SIXBIT /(3) FILE WAS BEING MODIFIED@/],,ACFILE\r
+       010215' 015242' 000002          [SIXBIT /(4) RENAME FILE NAME ALREADY EXISTS@/],,ACFILE\r
+       010216' 015250' 000002          [SIXBIT /(5) ILLEGAL SEQUENCE OF UUOS@/],,ACFILE\r
+       010217' 015255' 000002          [SIXBIT /(6) BAD UFD OR BAD RIB@/],,ACFILE\r
+       010220' 015261' 000002          [SIXBIT /(7) NOT A SAV FILE@/],,ACFILE\r
+       010221' 015265' 000002          [SIXBIT /(10) NOT ENOUGH CORE@/],,ACFILE\r
+       010222' 015271' 000002          [SIXBIT /(11) DEVICE NOT AVAILABLE@/],,ACFILE\r
+       010223' 015276' 000002          [SIXBIT /(12) NO SUCH DEVICE@/],,ACFILE\r
+       010224' 015302' 000002          [SIXBIT /(13) NOT TWO RELOC REG. CAPABILITY@/],,ACFILE\r
+       010225' 015310' 000002          [SIXBIT /(14) NO ROOM OR QUOTA EXCEEDED@/],,ACFILE\r
+       010226' 015316' 000002          [SIXBIT /(15) WRITE LOCK ERROR@/],,ACFILE\r
+       010227' 015322' 000002          [SIXBIT /(16) NOT ENOUGH MONITOR TABLE SPACE@/],,ACFILE\r
+       010230' 015330' 000002          [SIXBIT /(17) PARTIAL ALLOCATION ONLY@/],,ACFILE\r
+       010231' 015335' 000002          [SIXBIT /(20) BLOCK NOT FREE ON ALLOCATION@/],,ACFILE\r
+       010232' 015343' 000002          [SIXBIT /(21) CAN'T SUPERSEDE (ENTER) AN EXISTING DIRECTORY@/],,ACFILE\r
+       010233' 015354' 000002          [SIXBIT /(22) CAN'T DELETE (RENAME) A NON-EMPTY DIRECTORY@/],,ACFILE\r
+       010234' 015365' 000002          [SIXBIT /(23) SFD NOT FOUND@/],,ACFILE\r
+       010235' 015371' 000002          [SIXBIT /(24) SEARCH LIST EMPTY@/],,ACFILE\r
+       010236' 015375' 000002          [SIXBIT /(25) SFD NESTED TOO DEEPLY@/],,ACFILE\r
+       010237' 015402' 000002          [SIXBIT /(26) NO-CREATE ON FOR SPECIFIED PATH@/],,ACFILE\r
+\r
+       010240' 015411' 000002  TABLND: [SIXBIT /(?) LOOKUP, ENTER, OR RENAME ERROR@/],,ACFILE\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 144\r
+MACRO  10      24-APR-78 02:11         I/O ROUTINES\r
+\r
+       010241' 260740  010247' TYPMSG: PUSHJ   PP,CRLF         ;MOVE TO NEXT LINE\r
+       010242' 554400  000011  TYPMS1: HLRZ    CS,RC           ;GET FIRST MESSAGE\r
+       010243' 302400  777777          CAIE    CS,-1           ;SKIP IF MINUS ONE\r
+       010244' 260740  010262'         PUSHJ   PP,TYPM2        ;TYPE MESSAGE\r
+       010245' 550400  000011          HRRZ    CS,RC           ;GET SECOND HALF\r
+       010246' 260740  010262'         PUSHJ   PP,TYPM2\r
+\r
+       010247' 201340  000015  CRLF:   MOVEI   C,CR            ;OUTPUT CARRIAGE RETURN\r
+       010250' 260740  010252'         PUSHJ   PP,TYO\r
+       010251' 201340  000012          MOVEI   C,LF            ;AND LINE FEED\r
+\r
+       010252' 377000  014116' TYO:    SOSG    CTOBUF+2        ;BUFFER FULL?\r
+       010253' 067000  000000          OUTPUT  CTL,0           ;YES, DUMP IT\r
+       010254' 136340  014115'         IDPB    C,CTOBUF+1      ;STORE BYTE\r
+       010255' 307340  000014          CAIG    C,FF            ;FORM FEED?\r
+       010256' 305340  000012          CAIGE   C,LF            ;V TAB OR LINE FEED?\r
+       010257' 263740  000000          POPJ    PP,             ;NO\r
+       010260' 067000  000000          OUTPUT  CTL,0           ;YES\r
+       010261' 263740  000000          POPJ    PP,             ;AND EXIT\r
+\r
+       010262' 205340  400000  TYPM2:  MOVSI   C,(1B0)         ;ANTICIPATE REGISTER WORD\r
+       010263' 306400  000002          CAIN    CS,ACFILE       ;FILE NAME ?\r
+                                       JRST    [JUMPE  ACEXT,.+1       ;YES, TEST FOR EXT\r
+                                               LSH     ACEXT,-6        ;MAKE SPACE FOR "."\r
+                                               IOR     ACEXT,[SIXBIT /.   @/]\r
+       010264' 254000  015420'                 JRST    TYPM2A]\r
+       010265' 307400  000017          CAIG    CS,17           ;IS IT?\r
+       010266' 202350  000001          MOVEM   C,1(CS)\r
+       010267' 505400  440600  TYPM2A: HRLI    CS,(POINT 6,,)  ;FORM BYTE POINTER\r
+\r
+       010270' 134340  000010  TYPM3:  ILDB    C,CS            ;GET A SIXBIT BYTE\r
+       010271' 306340  000040          CAIN    C,40            ;"@"?\r
+       010272' 254000  010252'         JRST    TYO             ;YES, TYPE SPACE AND EXIT\r
+       010273' 271340  000040          ADDI    C,40            ;NO, FORM 7-BIT ASCII\r
+       010274' 260740  010252'         PUSHJ   PP,TYO          ;OUTPUT CHARACTER\r
+       010275' 254000  010270'         JRST    TYPM3\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 145\r
+MACRO  10      24-APR-78 02:11         I/O ROUTINES\r
+\r
+       010276' 271200  002000  XCEEDS: ADDI SX,2000            ;ADJUST SYMBOL POINTER\r
+       010277' 260740  007473' XCEED:  PUSHJ   PP,SAVEXS       ;SAVE THE REGISTERS\r
+       010300' 550040  007200*         HRRZ    1,JOBREL        ;GET CURRENT TOP\r
+       010301' 201001  002000          MOVEI   0,2000(1)\r
+       010302' 047000  000011          CORE    0,              ;REQUEST MORE CORE\r
+       010303' 254000  010317'         JRST    XCEED2          ;ERROR, BOMB OUT\r
+       010304' 550100  010300*         HRRZ    2,JOBREL        ;GET NEW TOP\r
+\r
+       010305' 200001  000000  XCEED1: MOVE    0,0(1)          ;GET ORIGIONAL\r
+       010306' 202002  000000          MOVEM   0,0(2)          ;STORE IN NEW LOCATION\r
+       010307' 275100  000001          SUBI    2,1             ;DECREMENT UPPER\r
+       010310' 313040  013552'         CAMLE   1,SYMBOL        ;HAVE WE ARRIVED?\r
+       010311' 364040  010305'         SOJA    1,XCEED1        ;NO, GET ANOTHER\r
+       010312' 201040  002000          MOVEI   1,2000\r
+       010313' 272040  013552'         ADDM    1,SYMBOL\r
+       010314' 272040  013553'         ADDM    1,SYMTOP\r
+       010315' 260740  013125'         PUSHJ   PP,SRCHI        ;RE-INITIALIZE SYMBOL TABLE\r
+       010316' 254000  007467'         JRST    RSTRXS          ;RESTORE REGISTERS AND EXIT\r
+\r
+       010317' 561440  015424' XCEED2: HRROI   RC,[SIXBIT /INSUFFICIENT CORE@/]\r
+       010320' 254000  010116'         JRST    ERRNE0\r
+       010321' 561440  015427' PDPERR: HRROI   RC,[SIXBIT .PDP OVERFLOW, TRY /P@.]\r
+       010322' 254000  010116'         JRST    ERRNE0\r
+\r
+       010323' 554400  000006  PRNUM:  HLRZ CS,V       ;GET MESSAGE\r
+       010324' 260740  010262'         PUSHJ PP,TYPM2\r
+       010325' 201400  015433'         MOVEI   CS,[SIXBIT /ON PAGE@/]\r
+       010326' 260740  010262'         PUSHJ   PP,TYPM2\r
+       010327' 200006  000000          MOVE AC0,(V)    ;GET PAGE\r
+       010330' 260740  010345'         PUSHJ PP,DP1    ;PRINT NUMBER\r
+       010331' 201340  000040          MOVEI C,40\r
+       010332' 260740  010252'         PUSHJ PP,TYO\r
+       010333' 336046  000001          SKIPN AC1,1(V)  ;GET SEQ NUM IF THERE\r
+       010334' 263740  000000          POPJ PP,        ;NO, RETURN\r
+       010335' 202040  014011'         MOVEM AC1,OUTSQ\r
+       010336' 201400  015435'         MOVEI   CS,[SIXBIT /LINE@/]\r
+       010337' 260740  010262'         PUSHJ   PP,TYPM2\r
+       010340' 201000  014011'         MOVEI AC0,OUTSQ ;PRINT IT\r
+       010341' 067000  000000          OUTPUT CTL,0    ;TO MAKE THINGS PRINT IN RIGHT ORDER\r
+       010342' 047000  000003          DDTOUT AC0,\r
+       010343' 201340  000040          MOVEI C,40\r
+       010344' 254000  010252'         JRST TYO        ;AND RETURN\r
+\r
+       010345' 231000  000012  DP1:    IDIVI AC0,^D10\r
+       010346' 506057  000000          HRLM AC1,(PP)\r
+       010347' 322000  010351'         JUMPE   AC0,.+2\r
+       010350' 260740  010345'         PUSHJ PP,DP1\r
+       010351' 554357  000000          HLRZ C,(PP)\r
+       010352' 271340  000060          ADDI C,"0"\r
+       010353' 254000  010252'         JRST TYO\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 146\r
+MACRO  10      24-APR-78 02:11         I/O ROUTINES\r
+\r
+       010354' 670640  000000  RIM0:   TDO     FR,AC0          ;SET RIM/RIM10 FLAG\r
+       010355' 603640  001000          TLNE    FR,PNCHSW       ;FORGET IT IF PUNCH RESET\r
+       010356' 060040  000013          SETSTS  BIN,IB          ;SET TO IMAGE BINARY MODE\r
+       010357' 263740  000000          POPJ    PP,\r
+\r
+       010360' 250400  014050' ROUT:   EXCH CS,RIMLOC\r
+       010361' 274740  015436'         SUB PP,[XWD 1,1]        ;CLEAR OUT STACK WFW\r
+       010362' 603640  004000          TLNE FR,R1BSW\r
+       010363' 254000  010471'         JRST ROUT6\r
+       010364' 607640  000100          TLNN    FR,RIM1SW\r
+       010365' 254000  010375'         JRST    ROUT1\r
+       010366' 322400  010375'         JUMPE   CS,ROUT1        ;RIM10 OUTPUT\r
+       010367' 274400  014050'         SUB     CS,RIMLOC\r
+       010370' 322400  010375'         JUMPE   CS,ROUT1\r
+       010371' 327400  003400'         JUMPG   CS,ERRAX\r
+       010372' 201340  000000          MOVEI   C,0\r
+       010373' 260740  010405'         PUSHJ   PP,PTPBIN\r
+       010374' 341400  010373'         AOJL    CS,.-1\r
+       010375' 205340  710440  ROUT1:  MOVSI   C,(DATAI PTR,)  ;RIM OUTPUT\r
+       010376' 540340  014000'         HRR C,LOCO              ;GET ADDRESS\r
+       010377' 603640  000100          TLNE    FR,RIM1SW       ;NO DATAI IF RIM10\r
+       010400' 354000  014050'         AOSA    RIMLOC\r
+       010401' 260740  010405'         PUSHJ   PP,PTPBIN       ;OUTPUT\r
+       010402' 200340  000000          MOVE    C,AC0           ;CODE\r
+       010403' 354000  014000'         AOSA    LOCO            ;INCREMENT CURRENT LOCATION\r
+\r
+       010404' 607640  004500  OUTBIN: TLNN    FR,RIMSW!RIM1SW!R1BSW   ;EXIT IF RIM MODE\r
+       010405' 607640  001000  PTPBIN: TLNN    FR,PNCHSW       ;EXIT IF PUNCH NOT REQUESTED\r
+       010406' 263740  000000          POPJ    PP,\r
+       010407' 377000  013327'         SOSG    BINBUF+2        ;TEST FOR BUFFER FULL\r
+       010410' 260740  010413'         PUSHJ   PP,DMPBIN       ;YES, DUMP IT\r
+       010411' 136340  013326'         IDPB    C,BINBUF+1      ;DEPOSIT BYTE\r
+       010412' 263740  000000          POPJ    PP,             ;EXIT\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 147\r
+MACRO  10      24-APR-78 02:11         I/O ROUTINES\r
+\r
+       010413' 057040  000000  DMPBIN: OUT     BIN,0           ;DUMP THE BUFFER\r
+       010414' 263740  000000          POPJ    PP,             ;NO ERRORS\r
+       010415' 062040  000007  TSTBIN: GETSTS  BIN,C           ;GET STSTUS BITS\r
+       010416' 606340  740000          TRNN    C,ERRBIT        ;ERROR?\r
+       010417' 263740  000000          POPJ    PP,             ;NO, EXIT\r
+       010420' 200000  013220'         MOVE    AC0,BINDEV      ;YES, GET TAG\r
+       010421' 254000  010430'         JRST    ERRLST          ;TYPE MESSAGE AND ABORT\r
+\r
+       010422' 057140  000000  DMPLST: OUT     LST,0           ;OUTPUT BUFFER\r
+       010423' 263740  000000          POPJ    PP,             ;NO ERRORS\r
+       010424' 062140  000007  TSTLST: GETSTS  LST,C           ;ANY ERRORS?\r
+       010425' 606340  740000          TRNN    C,ERRBIT\r
+       010426' 263740  000000          POPJ    PP,             ;NO, EXIT\r
+       010427' 200000  013223'         MOVE    AC0,LSTDEV\r
+       010430' 205440  015437' ERRLST: MOVSI   RC,[SIXBIT /OUTPUT WRITE-LOCK ERROR DEVICE@/]\r
+       010431' 602340  400000          TRNE    C,IOIMPM        ;IMPROPER MODE?\r
+       010432' 254000  010176'         JRST    ERRFIN          ;YES\r
+       010433' 205440  015445'         MOVSI   RC,[SIXBIT /OUTPUT DATA ERROR DEVICE@/]\r
+       010434' 602340  200000          TRNE    C,IODERR        ;DEVICE DATA ERROR?\r
+       010435' 254000  010176'         JRST    ERRFIN          ;YES\r
+       010436' 205440  015452'         MOVSI   RC,[SIXBIT /OUTPUT CHECKSUM OR PARITY ERROR DEVICE@/]\r
+       010437' 602340  100000          TRNE    C,IODTER        ;IS IT\r
+       010440' 254000  010176'         JRST    ERRFIN          ;YES\r
+       010441' 200400  000000          MOVE    CS,AC0          ;GET DEVICE\r
+       010442' 047400  000004          DEVCHR  CS,             ;FIND OUT WHAT IT IS\r
+       010443' 205440  015461'         MOVSI   RC,[SIXBIT /OUTPUT QUOTA EXCEEDED ON DEVICE@/]\r
+       010444' 607400  200000          TLNN    CS,DSKBIT       ;SKIP IF DSK OUTPUT\r
+       010445' 205440  015467'         MOVSI   RC,[SIXBIT /OUTPUT BLOCK TOO LARGE DEVICE@/]\r
+       010446' 254000  010176'         JRST    ERRFIN\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 148\r
+MACRO  10      24-APR-78 02:11         I/O ROUTINES\r
+\r
+       \r
+       010447' 460400  014023' R1BDMP: SETCM CS,R1BCNT\r
+       010450' 322400  010465'         JUMPE CS,R1BI\r
+       010451' 517340  000010          HRLZS C,CS\r
+       010452' 540340  014047'         HRR C,R1BLOC\r
+       010453' 541347  777777          HRRI C,-1(C)\r
+       010454' 202340  014024'         MOVEM C,R1BCHK\r
+       010455' 260740  010405'         PUSHJ PP,PTPBIN\r
+       010456' 541400  014025'         HRRI CS,R1BBLK\r
+       010457' 200350  000000  R1BDM1: MOVE C,0(CS)\r
+       010460' 272340  014024'         ADDM C,R1BCHK\r
+       010461' 260740  010405'         PUSHJ PP,PTPBIN\r
+       010462' 253400  010457'         AOBJN CS,R1BDM1\r
+       010463' 200340  014024'         MOVE C,R1BCHK\r
+       010464' 260740  010405'         PUSHJ PP,PTPBIN\r
+       010465' 476000  014023' R1BI:   SETOM R1BCNT\r
+       010466' 261740  014000'         PUSH PP,LOCO\r
+       010467' 262740  014047'         POP PP,R1BLOC\r
+       010470' 263740  000000          POPJ PP,\r
+\r
+       010471' 312400  014050' ROUT6:  CAME CS,RIMLOC\r
+       010472' 260740  010447'         PUSHJ PP,R1BDMP\r
+       010473' 350340  014023'         AOS C,R1BCNT\r
+       010474' 202007  014025'         MOVEM AC0,R1BBLK(C)\r
+       010475' 350000  014000'         AOS LOCO\r
+       010476' 306340  000021          CAIN C,.R1B-1\r
+       010477' 260740  010447'         PUSHJ PP,R1BDMP\r
+       010500' 350000  014050'         AOS RIMLOC\r
+       010501' 263740  000000          POPJ PP,\r
+       \r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 149\r
+MACRO  10      24-APR-78 02:11         I/O ROUTINES\r
+\r
+       010502' 260740  007460' READ0:  PUSHJ   PP,EOT          ;END OF TAPE\r
+\r
+       010503' 375000  013332' READ:   SOSGE   IBUF+2          ;BUFFER EMPTY?\r
+       010504' 254000  010545'         JRST    READ3           ;YES\r
+       010505' 134340  013331' READ1:  ILDB    C,IBUF+1        ;PLACE CHARACTER IN C\r
+       010506' 200420  013331'         MOVE CS,@IBUF+1         ;CHECK FOR SEQUENCE NUMBER\r
+       010507' 606400  000001          TRNN CS,1\r
+       010510' 254000  010525'         JRST READ1A\r
+       010511' 306400  000001          CAIN CS,1               ;CHECK FOR SPECIAL\r
+       010512' 200400  015474'         MOVE CS,[<ASCII/     />+1]\r
+       010513' 202400  013214'         MOVEM CS,SEQNO\r
+       010514' 202400  014101'         MOVEM CS,SEQNO2\r
+       010515' 211400  000004          MOVNI CS,4\r
+       010516' 272400  013332'         ADDM CS,IBUF+2          ;ADJUST WORD COUNT\r
+                               REPEAT 4,<      IBP IBUF+1>     ;SKIP SEQ NO\r
+       010517' 133000  013331'\r
+       010520' 133000  013331'\r
+       010521' 133000  013331'\r
+       010522' 133000  013331'\r
+       010523' 260740  010503'         PUSHJ PP,READ   ;AND THE TAB\r
+       010524' 254000  010503'         JRST    READ            ;GET NEXT CHARACTER\r
+\r
+       010525' 322340  010503' READ1A: JUMPE   C,READ          ;IGNORE NULL\r
+       010526' 306340  000032          CAIN    C,32            ;IF IT'S A "^Z"\r
+       010527' 201340  000012          MOVEI   C,LF            ;TREAT IT AS A "LF"\r
+       010530' 302340  000037          CAIE    C,37            ;CONTROL _\r
+       010531' 263740  000000          POPJ    PP,\r
+       010532' 201340  000136          MOVEI   C,"^"           ;MAKE CONTROL-SHIFT _ VISIBLE\r
+       010533' 260740  001423'         PUSHJ   PP,RSW2\r
+       010534' 201340  000137          MOVEI   C,"_"\r
+       010535' 260740  001423'         PUSHJ   PP,RSW2\r
+       010536' 260740  010503' READ2:  PUSHJ   PP,READ         ;YES, TEST FOR LINE FEED\r
+       010537' 260740  001423'         PUSHJ   PP,RSW2         ;LIST IN ANY EVENT\r
+       010540' 307340  000014          CAIG    C,FF            ;IS IT ONE OF\r
+       010541' 305340  000012          CAIGE   C,LF            ;LF, VT, OR FF?\r
+       010542' 254000  010536'         JRST    READ2           ;NO\r
+       010543' 260740  001745'         PUSHJ   PP,OUTIM1       ;YES, DUMP THE LINE\r
+       010544' 254000  010503'         JRST    READ            ;RETURN NEXT CHARACTER\r
+\r
+       010545' 056100  000000  READ3:  IN      CHAR,0          ;GET NEXT BUFFER\r
+       010546' 254000  010503'         JRST    READ            ;NO ERRORS\r
+       010547' 062100  000007          GETSTS  CHAR,C\r
+       010550' 606340  742000          TRNN    C,ERRBIT!2000   ;ERRORS?\r
+       010551' 254000  010502'         JRST    READ0           ;EOF\r
+       010552' 200000  013234'         MOVE    AC0,INDEV\r
+       010553' 205440  015475'         MOVSI   RC,[SIXBIT/ INPUT PHYSICAL END OF TAPE DEVICE@/]\r
+       010554' 602340  002000          TRNE    C,2000\r
+       010555' 254000  010176'         JRST    ERRFIN          ;E-O-T\r
+       010556' 205440  015503'         MOVSI   RC,[SIXBIT /MONITOR DETECTED SOFTWARE INPUT ERROR DEVICE@/]\r
+       010557' 602340  400000          TRNE    C,IOIMPM        ;IMPROPER MODE?\r
+       010560' 254000  010176'         JRST    ERRFIN          ;YES\r
+       010561' 205440  015513'         MOVSI   RC,[SIXBIT /INPUT DATA ERROR DEVICE@/]\r
+       010562' 602340  200000          TRNE    C,IODERR        ;DEVICE DATA ERROR?\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 149-1\r
+MACRO  10      24-APR-78 02:11         I/O ROUTINES\r
+\r
+       010563' 254000  010176'         JRST    ERRFIN          ;YES\r
+       010564' 205440  015517'         MOVSI   RC,[SIXBIT /INPUT CHECKSUM OR PARITY ERROR DEVICE@/]\r
+       010565' 606340  100000          TRNN    C,IODTER\r
+       010566' 205440  015526'         MOVSI   RC,[SIXBIT /INPUT BLOCK TOO LARGE DEVICE@/]\r
+       010567' 254000  010176'         JRST    ERRFIN\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 150\r
+MACRO  10      24-APR-78 02:11         I/O ROUTINES\r
+\r
+       010570' 260740  010571' OUTAB2: PUSHJ   PP,OUTTAB       ;PRINT TWO TABS\r
+       010571' 201340  000011  OUTTAB: MOVEI   C,HT\r
+       010572' 302340  000015  PRINT:  CAIE    C,CR            ;IS THIS A CR?\r
+       010573' 306340  000012          CAIN    C,LF            ;OR LF?\r
+       010574' 254000  010600'         JRST    OUTCR           ;YES, GO PROCESS\r
+       010575' 306340  000014          CAIN    C,FF            ;FORM FEED?\r
+       010576' 254000  010703'         JRST    OUTFF           ;YES, FORCE NEW PAGE\r
+       010577' 254000  010607'         JRST    OUTL\r
+\r
+       010600' 606600  777763  OUTCR:  TRNN    ER,ERRORS!LPTSW!TTYSW\r
+       010601' 263740  000000          POPJ    PP,\r
+       010602' 201340  000015          MOVEI   C,CR            ;CARRIAGE RETURN, LINE FEED\r
+       010603' 260740  010607'         PUSHJ   PP,OUTL\r
+       010604' 375000  014003'         SOSGE   LPP             ;END OF PAGE?\r
+       010605' 661600  000100          TLO     IO,IOPAGE       ;YES, SET FLAG\r
+       010606' 644340  000007          TRCA    C,7             ;FORM LINE FEED AND SKIP\r
+\r
+       010607' 627600  000100  OUTL:   TLZN    IO,IOPAGE       ;NEW PAGE REQUESTED?\r
+       010610' 254000  010663'         JRST    OUTC            ;NO\r
+       010611' 321640  010663'         JUMP1   OUTC            ;YES, BYPASS IF PASS ONE\r
+       010612' 261740  000007          PUSH    PP,C            ;SAVE C AND CS\r
+       010613' 261740  000010          PUSH    PP,CS\r
+       010614' 261740  000014          PUSH    PP,ER\r
+       010615' 607600  240000          TLNN    IO,IOMSTR!IOPROG\r
+       010616' 540600  013512'         HRR     ER,OUTSW\r
+       010617' 603600  000400          TLNE    IO,IOCREF       ;IF DOING CREF OUTPUT NOW\r
+       010620' 603640  002000          TLNE    FR,CREFSW       ;AND CREFFING (JUST IN CASE)\r
+       010621' 254000  010623'         JRST    .+2\r
+       010622' 260740  012674'         PUSHJ   PP,CLSC3        ;CLOSE IT OUT\r
+       010623' 502617  000000          HLLM    IO,(PP)         ;SAVE THIS NEW STATE OF IO\r
+       010624' 201340  000067          MOVEI   C,.LPP\r
+       010625' 202340  014003'         MOVEM   C,LPP           ;SET NEW COUNTER\r
+       010626' 201340  000015          MOVEI   C,CR\r
+       010627' 260740  010663'         PUSHJ   PP,OUTC\r
+       010630' 201340  000014          MOVEI   C,FF\r
+       010631' 260740  010663'         PUSHJ   PP,OUTC         ;OUTPUT FORM FEED\r
+       010632' 201400  013701'         MOVEI   CS,TBUF\r
+       010633' 260740  003060'         PUSHJ   PP,OUTAS0       ;OUTPUT TITLE\r
+       010634' 201400  013243'         MOVEI   CS,VBUF\r
+       010635' 260740  003060'         PUSHJ   PP,OUTAS0       ;OUTPUT VERSION\r
+       010636' 201400  013236'         MOVEI   CS,DBUF\r
+       010637' 260740  003060'         PUSHJ   PP,OUTAS0       ; AND DATE\r
+       010640' 200340  014100'         MOVE    C,PAGENO\r
+       010641' 260740  003051'         PUSHJ   PP,DNC          ;OUTPUT PAGE NUMBER\r
+       010642' 357000  014013'         AOSG    PAGEN.          ;FIRST PAGE OF THIS NUMBER?\r
+       010643' 254000  010650'         JRST    OUTL1           ;YES\r
+       010644' 201340  000055          MOVEI   C,"-"           ;NO, PUT OUT MODIFIER\r
+       010645' 260740  010663'         PUSHJ   PP,OUTC\r
+       010646' 200340  014013'         MOVE    C,PAGEN.\r
+       010647' 260740  003051'         PUSHJ   PP,DNC\r
+       010650' 260740  010600' OUTL1:  PUSHJ   PP,OUTCR\r
+       010651' 201400  013721'         MOVEI CS,DEVBUF\r
+       010652' 260740  003060'         PUSHJ PP,OUTAS0\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 150-1\r
+MACRO  10      24-APR-78 02:11         I/O ROUTINES\r
+\r
+       010653' 550400  013550'         HRRZ    CS,SUBTTX       ;SWITCH FOR SUB-TITLE\r
+       010654' 332010  000000          SKIPE   0(CS)           ;IS THERE A SUB-TITLE?\r
+       010655' 260740  010571'         PUSHJ   PP,OUTTAB       ;YES, OUTPUT A TAB\r
+       010656' 260740  002503'         PUSHJ   PP,SOUT20       ;OUTPUT ASCII WITH CARRIAGE RETURN\r
+       010657' 260740  010600'         PUSHJ   PP,OUTCR\r
+       010660' 262740  000014          POP     PP,ER\r
+       010661' 262740  000010          POP     PP,CS           ;RESTORE REGISTERS\r
+       010662' 262740  000007          POP     PP,C\r
+\r
+       010663' 602600  777761  OUTC:   TRNE    ER,ERRORS!TTYSW\r
+       010664' 260740  010252'         PUSHJ   PP,TYO\r
+       010665' 606600  000002          TRNN    ER,LPTSW\r
+       010666' 263740  000000          POPJ    PP,\r
+       010667' 377000  013324' OUTLST: SOSG    LSTBUF+2        ;BUFFER FULL?\r
+       010670' 260740  010422'         PUSHJ   PP,DMPLST       ;YES, DUMP IT\r
+                               COMMENT $ REG DOESN'T LIKE THIS FEATURE ANY MORE 9-5-72\r
+                               $\r
+       010671' 136340  013323'         IDPB    C,LSTBUF+1      ;STORE BYTE\r
+       010672' 263740  000000          POPJ    PP,             ;EXIT\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 151\r
+MACRO  10      24-APR-78 02:11         I/O ROUTINES\r
+\r
+       010673' 260740  000236' PAGE0:  PUSHJ   PP,STOUTS       ;PAGE PSEUDO-OP\r
+       010674' 603600  000400  OUTFF1: TLNE    IO,IOCREF       ;CURRENTLY DOING CREF?\r
+       010675' 603600  040000          TLNE    IO,IOPROG       ;AND NOT XLISTED?\r
+       010676' 254000  010703'         JRST    OUTFF           ;NO\r
+       010677' 540600  013512'         HRR     ER,OUTSW\r
+       010700' 260740  012674'         PUSHJ   PP,CLSCRF\r
+       010701' 260740  010600'         PUSHJ   PP,OUTCR\r
+       010702' 541600  000000          HRRI    ER,0\r
+       010703' 661600  000100  OUTFF:  TLO     IO,IOPAGE\r
+       010704' 476000  014013' OUTFF2: SETOM   PAGEN.\r
+       010705' 350000  014100'         AOS     PAGENO\r
+       010706' 263740  000000          POPJ    PP,\r
+\r
+       010707' 231100  165140  TIMOUT: IDIVI   2,^D60*^D1000\r
+       010710' 231100  000074  TIMOU1: IDIVI   2,^D60\r
+       010711' 261740  000003          PUSH    PP,3            ;SAVE MINUTES\r
+       010712' 260740  010716'         PUSHJ   PP,OTOD         ;STORE HOURS\r
+       010713' 201140  000072          MOVEI   3,":"           ;SEPARATE BY COLON\r
+       010714' 136140  000010          IDPB    3,CS\r
+       010715' 262740  000002          POP     PP,2            ;STORE MINUTES\r
+       010716' 231100  000012  OTOD:   IDIVI   2,^D10\r
+       010717' 271100  000060          ADDI    2,60            ;FORM ASCII\r
+       010720' 136100  000010          IDPB    2,CS\r
+       010721' 271140  000060          ADDI    3,60\r
+       010722' 136140  000010          IDPB    3,CS\r
+       010723' 263740  000000          POPJ    PP,\r
+\r
+       010724' 231040  000037  DATOUT: IDIVI   1,^D31          ;GET DAY\r
+       010725' 271100  000001          ADDI    2,1\r
+       010726' 307100  000011          CAIG    2,^D9           ;TWO DIGITS?\r
+       010727' 271100  117540          ADDI    2,7760*^D10     ;NO, PUT IN SPACE\r
+       010730' 260740  010716'         PUSHJ   PP,OTOD         ;STORE DAY\r
+       010731' 231040  000014          IDIVI   1,^D12          ;GET MONTH\r
+       010732' 200102  010740'         MOVE    2,DTAB(2)       ;GET MNEMONIC\r
+       010733' 136100  000010          IDPB    2,CS            ;DEPOSIT RIGHT MOST 7 BITS\r
+       010734' 242100  777771          LSH     2,-7            ;SHIFT NEXT IN\r
+       010735' 326100  010733'         JUMPN   2,.-2           ;DEPOSIT IFIT EXISTS\r
+       010736' 201101  000100          MOVEI   2,^D64(1)       ;GET YEAR\r
+       010737' 254000  010716'         JRST    OTOD            ;STORE IT\r
+\r
+       010740' 133164  062455  DTAB:   "-NAJ-"\r
+       010741' 133024  261455          "-BEF-"\r
+       010742' 133224  063255          "-RAM-"\r
+       010743' 133225  020255          "-RPA-"\r
+       010744' 133314  063255          "-YAM-"\r
+       010745' 133165  262455          "-NUJ-"\r
+       010746' 133145  262455          "-LUJ-"\r
+       010747' 133075  260255          "-GUA-"\r
+       010750' 133204  264655          "-PES-"\r
+       010751' 133244  163655          "-TCO-"\r
+       010752' 133264  763455          "-VON-"\r
+       010753' 133034  261055          "-CED-"\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 152\r
+MACRO  10      24-APR-78 02:11         MACHINE INSTRUCTION SEARCH ROUTINES\r
+\r
+                               SUBTTL  MACHINE INSTRUCTION SEARCH ROUTINES\r
+                               IFE OPHSH,<\r
+       010754' 201440  000000  OPTSCH: MOVEI   RC,0\r
+       010755' 201240  000400          MOVEI   ARG,1B^L<OP1END-OP1TOP> ;SET UP INDEX\r
+       010756' 201300  000200          MOVEI   V,1B^L<OP1END-OP1TOP>/2 ;SET UP INCREMENT\r
+\r
+       010757' 316005  011012' OPT1A:  CAMN    AC0,OP1TOP(ARG) ;ARE WE POINTING AT SYMBOL?\r
+       010760' 254000  010771'         JRST    OPT1D           ;YES, GET THE CODE\r
+       010761' 322300  000455'         JUMPE   V,POPOUT        ;TEST FOR END\r
+       010762' 311005  011012'         CAML    AC0,OP1TOP(ARG) ;NO, SHOULD WE MOVE DOWN?\r
+       010763' 674240  000006          TDOA    ARG,V           ;NO, INCREMENT\r
+       010764' 274240  000006  OPT1B:  SUB     ARG,V           ;YES, DECREMENT\r
+       010765' 240300  777777          ASH     V,-1            ;HALVE INCREMENT\r
+       010766' 307240  000770          CAIG    ARG,OP1END-OP1TOP       ;ARE WE OUT OF BOUNDS?\r
+       010767' 254000  010757'         JRST    OPT1A           ;NO, TRY AGAIN\r
+       010770' 254000  010764'         JRST    OPT1B           ;YES, BRING IT DOWN A PEG\r
+                               >\r
+\r
+                               IFN OPHSH,<\r
+                               OPTSCH: MOVE    ARG,AC0         ;GET SIXBIT NAME\r
+                                       TLZ     ARG,400000      ;CLEAR SIGN BIT\r
+                                       IDIVI   ARG,PRIME       ;REM. GOES IN V\r
+                                       CAMN    AC0,OP1TOP(V)   ;ARE WE POINTING AT SYMBOL?\r
+                                       JRST    OPT1D           ;YES\r
+                                       SKIPN   OP1TOP(V)       ;TEST FOR END\r
+                                       POPJ    PP,             ;SYMBOL NOT FOUND\r
+                                       HLRZ    RC,ARG          ;SAVE LHS OF QUOTIENT\r
+                                       SKIPA   ARG,RC          ;GET IT BACK\r
+                               OPT1A:  ADDI    ARG,(RC)        ;INCREMENT ARG\r
+                                       ADDI    V,(ARG)         ;QUADRATIC INCREASE TO V\r
+                                       CAIL    V,PRIME         ;V IS MODULO PRIME\r
+                                       JRST    [SUBI   V,PRIME\r
+                                               JRST    .-1]\r
+                                       CAMN    AC0,OP1TOP(V)   ;IS THIS IT?\r
+                                       JRST    OPT1D           ;YES\r
+                                       SKIPE   OP1TOP(V)       ;END?\r
+                                       JRST    OPT1A           ;TRY AGAIN\r
+                                       POPJ    PP,             ;FAILED\r
+                               >\r
+       010771'                 OPT1D:\r
+                               IFN OPHSH,<     SETZ    RC,     ;CLEAR RELOCATION\r
+                                       MOVE    ARG,V           ;GET INDEX IN RIGHT ACC.>\r
+       010771' 231240  000004          IDIVI   ARG,4           ;ARG HAS INDEX USED IN OPTTAB\r
+       010772' 135306  011007'         LDB     V,OPTTAB(V)     ;V HAS INDEX TO OPTTAB\r
+       010773' 301300  000700          CAIL    V,700           ;PSEUDO-OP OR IO INSTRUCTION?\r
+       010774' 254000  011002'         JRST    OPT1G           ;YES\r
+       010775' 241300  777767          ROT     V,-^D9          ;LEFT JUSTIFY\r
+       010776' 541300  004445'         HRRI    V,OP            ;POINT TO BASIC FORMAT\r
+       010777' 350017  000000  OPT1F:  AOS     0(PP)           ;SET FOR SKIP EXIT\r
+       011000' 201140  000003          MOVEI   SDEL,%OP        ;SET OP-CODE CROSS-REF FLAG\r
+       011001' 254000  012621'         JRST    CREF            ;TEST AND OUTPUT, AC0=SYMBOL, V=VALUE\r
+\r
+       011002' 327000  011005' OPT1G:  JUMPG   AC0,.+3         ;IF ".","$",OR "%" USE TABLE 1\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 152-1\r
+MACRO  10      24-APR-78 02:11         MACHINE INSTRUCTION SEARCH ROUTINES\r
+\r
+       011003' 607000  200000          TLNN    AC0,200000      ;PSEUDO-OP OR IO INST., TEST FOR PROPER TABLE\r
+       011004' 334306  011452'         SKIPA   V,OP2TAB-700(V) ;2ND TABLE, FIRST LETTER IS "A" TO "O"\r
+       011005' 200306  011406'         MOVE    V,OP1TAB-700(V) ;1ST TABLE, ..."P" TO "Z"\r
+       011006' 254000  010777'         JRST    OPT1F           ;EXIT\r
+\r
+       011007'                 OPTTAB:\r
+       011007' 001105  012002' IFE OPHSH,<     POINT   9,OP1COD-1(ARG),35>\r
+       011010' 331105  012003'         POINT   9,OP1COD  (ARG), 8\r
+       011011' 221105  012003'         POINT   9,OP1COD  (ARG),17\r
+       011012' 111105  012003'         POINT   9,OP1COD  (ARG),26\r
+                               IFN OPHSH,<     POINT   9,OP1COD  (ARG),35>\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 153\r
+MACRO  10      24-APR-78 02:11         MACHINE INSTRUCTION SEARCH ROUTINES\r
+\r
+                               IFDEF .XCREF,<  .XCREF  ;DON'T CREF THIS MESS>\r
+                               IFE OPHSH,<\r
+       011012'                         RELOC   .-1\r
+       011012'                 OP1TOP:\r
+       011013'                         RELOC\r
+\r
+                                       IF1,<N1=0\r
+                                       DEFINE  X  <N1=N1+1 ;>>\r
+\r
+                                       IF2, <\r
+                       000044          N2=^D36\r
+                       000000          CC=0\r
+       012003'                         RELOC   OP1COD\r
+       011013'                         RELOC\r
+                               DEFINE  X (SYMBOL,CODE) \r
+                               <SIXBIT /SYMBOL/\r
+                               CC=CC+CODE_<N2=N2-9>\r
+                               IFE N2, <OUTLIT>>\r
+\r
+                               DEFINE  OUTLIT  <\r
+                                       RELOC\r
+                                       +CC\r
+                                       RELOC\r
+                               N2=^D36+<CC=0>>>\r
+                                       SYN X,XX                ;JUST THE SAME MACRO>\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 154\r
+MACRO  10      24-APR-78 02:11         MACHINE INSTRUCTION SEARCH ROUTINES\r
+\r
+\r
+                               IFN OPHSH,<\r
+                               DEFINE XX (SB,CD)<>             ;A NUL MACRO\r
+                               OP1TOP: IF1,<   BLOCK PRIME>\r
+                               IF1,<DEFINE X (SB,CD)<>>\r
+                               IF2,<\r
+                               DEFINE OPSTOR (RM)<.$'RM=.$'RM+<OPCODE_<9*<3-R&3>>>>\r
+                               \r
+                               DEFINE X (SB,CD)<\r
+                               SXB=<SIXBIT /SB/>\r
+                               Q=SXB&-1_-1/PRIME\r
+                               R=SXB&-1_-1-Q*PRIME\r
+                               H=Q_-22&777\r
+                               TRY=1\r
+                               OPCODE=CD\r
+                               ITEM Q,\R\r
+                               IFL PRIME-TRY,<PRINTX HASH FAILURE>>\r
+                               \r
+                               DEFINE ITEM (QT,RM)<\r
+                               IFN .%'RM,<R=R+H\r
+                               IFL PRIME-R,<R=R-R/PRIME*PRIME>\r
+                               H=H+Q_-22&777\r
+                               IFGE PRIME-<TRY=TRY+1>,<ITEM Q,\R>>\r
+                               IFE .%'RM,<.%'RM=SXB\r
+                               OPSTOR \<R/4>>>>\r
+                               IF1,<\r
+                               DEFINE GETSYM (N)<.%'N=0>\r
+                               \r
+                               N=0\r
+                                       XLIST\r
+                               REPEAT PRIME,<GETSYM \N\r
+                               N=N+1>\r
+                               DEFINE GETSYM (N)<.$'N=0>\r
+                               N=0\r
+                               REPEAT <PRIME/4+1>,<GETSYM \N\r
+                               N=N+1>\r
+                               >\r
+                                       LIST>\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 155\r
+MACRO  10      24-APR-78 02:11         MACHINE INSTRUCTION SEARCH ROUTINES\r
+\r
+                               IFN OPHSH,<             ;PUT THE MOST USED OP CODES FIRST\r
+                               X       JRST  , 254\r
+                               X       PUSHJ , 260\r
+                               X       POPJ  , 263\r
+                               X       PUSH  , 261\r
+                               X       POP   , 262\r
+                               X       AOS   , 350\r
+                               X       ASCIZ , 701\r
+                               X       CALLI , 047\r
+                               X       EXTERN, 724\r
+                               X       INTERN, 744\r
+                               X       JFCL  , 255\r
+                               X       JSP   , 265\r
+                               X       MOVE  , 200\r
+                               X       MOVEI , 201\r
+                               X       MOVEM , 202\r
+                               X       SETZM , 402\r
+                               X       SIXBIT, 717\r
+                               X       SOS   , 370\r
+                               X       TLNE  , 603\r
+                               X       TLNN  , 607\r
+                               X       TLO   , 661\r
+                               X       TLZ   , 621\r
+                               X       TLZA  , 625\r
+                               X       TLZE  , 623\r
+                               X       TLZN  , 627\r
+                               X       TRNE  , 602\r
+                               X       TRNN  , 606\r
+                               X       TRZ   , 620\r
+                               >\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 156\r
+MACRO  10      24-APR-78 02:11         MACHINE INSTRUCTION SEARCH ROUTINES\r
+\r
+       011013' 414444  000000  X       ADD   , 270\r
+       011014' 414444  420000  X       ADDB  , 273\r
+       011015' 414444  510000  X       ADDI  , 271\r
+       011016' 414444  550000  X       ADDM  , 272\r
+       012003' 270273  271272\r
+\r
+       011017' 415644  000000  X       AND   , 404\r
+       011020' 415644  420000  X       ANDB  , 407\r
+       011021' 415644  434100  X       ANDCA , 410\r
+       011022' 415644  434142  X       ANDCAB, 413\r
+       012004' 404407  410413\r
+       011023' 415644  434151  X       ANDCAI, 411\r
+       011024' 415644  434155  X       ANDCAM, 412\r
+       011025' 415644  434200  X       ANDCB , 440\r
+       011026' 415644  434242  X       ANDCBB, 443\r
+       012005' 411412  440443\r
+       011027' 415644  434251  X       ANDCBI, 441\r
+       011030' 415644  434255  X       ANDCBM, 442\r
+       011031' 415644  435500  X       ANDCM , 420\r
+       011032' 415644  435542  X       ANDCMB, 423\r
+       012006' 441442  420423\r
+       011033' 415644  435551  X       ANDCMI, 421\r
+       011034' 415644  435555  X       ANDCMM, 422\r
+       011035' 415644  510000  X       ANDI  , 405\r
+       011036' 415644  550000  X       ANDM  , 406\r
+       012007' 421422  405406\r
+\r
+       011037' 415742  525600  X       AOBJN , 253\r
+       011040' 415742  526000  X       AOBJP , 252\r
+\r
+       011041' 415752  000000  X       AOJ   , 340\r
+       011042' 415752  410000  X       AOJA  , 344\r
+       012010' 253252  340344\r
+       011043' 415752  450000  X       AOJE  , 342\r
+       011044' 415752  470000  X       AOJG  , 347\r
+       011045' 415752  474500  X       AOJGE , 345\r
+       011046' 415752  540000  X       AOJL  , 341\r
+       012011' 342347  345341\r
+       011047' 415752  544500  X       AOJLE , 343\r
+       011050' 415752  560000  X       AOJN  , 346\r
+\r
+       011051' 415763  000000  XX      AOS   , 350\r
+       011052' 415763  410000  X       AOSA  , 354\r
+       012012' 343346  350354\r
+       011053' 415763  450000  X       AOSE  , 352\r
+       011054' 415763  470000  X       AOSG  , 357\r
+       011055' 415763  474500  X       AOSGE , 355\r
+       011056' 415763  540000  X       AOSL  , 351\r
+       012013' 352357  355351\r
+       011057' 415763  544500  X       AOSLE , 353\r
+       011060' 415763  560000  X       AOSN  , 356\r
+       011061' 416247  000000  X       ARG   , 320\r
+                               IFN WFWSW,<X    ARRAY ,  772>\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 156-1\r
+MACRO  10      24-APR-78 02:11         MACHINE INSTRUCTION SEARCH ROUTINES\r
+\r
+                               IFN IIISW,<X    ASCID , 771>\r
+       011062' 416343  515100  X       ASCII , 700\r
+       012014' 353356  320700\r
+       011063' 416343  517200  XX      ASCIZ , 701\r
+\r
+       011064' 416350  000000  X       ASH   , 240\r
+       011065' 416350  430000  X       ASHC  , 244\r
+\r
+       011066' 416365  606062  X       ASUPPR, 705\r
+       012015' 701240  244705\r
+       011067' 425453  510000  X       BLKI  , 702\r
+       011070' 425453  570000  X       BLKO  , 703\r
+       011071' 425457  435300  X       BLOCK , 704\r
+\r
+       011072' 425464  000000  X       BLT   , 251\r
+       012016' 702703  704251\r
+\r
+       011073' 427164  450000  X       BYTE  , 707\r
+\r
+       011074' 434151  000000  XX      CAI   , 300\r
+       011075' 434151  410000  X       CAIA  , 304\r
+       011076' 434151  450000  X       CAIE  , 302\r
+       012017' 707300  304302\r
+       011077' 434151  470000  X       CAIG  , 307\r
+       011100' 434151  474500  X       CAIGE , 305\r
+       011101' 434151  540000  X       CAIL  , 301\r
+       011102' 434151  544500  X       CAILE , 303\r
+       012020' 307305  301303\r
+       011103' 434151  560000  X       CAIN  , 306\r
+\r
+       011104' 434154  540000  X       CALL  , 040\r
+       011105' 434154  545100  XX      CALLI , 047\r
+\r
+       011106' 434155  000000  XX      CAM   , 310\r
+       012021' 306040  047310\r
+       011107' 434155  410000  X       CAMA  , 314\r
+       011110' 434155  450000  X       CAME  , 312\r
+       011111' 434155  470000  X       CAMG  , 317\r
+       011112' 434155  474500  X       CAMGE , 315\r
+       012022' 314312  317315\r
+       011113' 434155  540000  X       CAML  , 311\r
+       011114' 434155  544500  X       CAMLE , 313\r
+       011115' 434155  560000  X       CAMN  , 316\r
+\r
+       011116' 435445  416200  XX      CLEAR , 400\r
+       012023' 311313  316400\r
+       011117' 435445  416242  XX      CLEARB, 403\r
+       011120' 435445  416251  XX      CLEARI, 401\r
+       011121' 435445  416255  XX      CLEARM, 402\r
+\r
+       011122' 435457  634500  X       CLOSE , 070\r
+       012024' 403401  402070\r
+       011123' 435755  554556  X       COMMEN, 770\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 156-2\r
+MACRO  10      24-APR-78 02:11         MACHINE INSTRUCTION SEARCH ROUTINES\r
+\r
+\r
+\r
+       011124' 435756  510000  X       CONI  , 710\r
+       011125' 435756  570000  X       CONO  , 711\r
+       011126' 435756  635700  X       CONSO , 712\r
+       012025' 770710  711712\r
+       011127' 435756  637200  X       CONSZ , 713\r
+\r
+       011130' 444164  411600  XX      DATA. , 020\r
+\r
+       011131' 444164  415100  X       DATAI , 714\r
+       011132' 444164  415700  X       DATAO , 715\r
+       012026' 713020  714715\r
+       011133' 444543  000000  X       DEC   , 716\r
+       011134' 444546  515645  X       DEFINE, 717\r
+       011135' 444560  504163  X       DEPHAS, 720\r
+\r
+       011136' 444656  000000  X       DFN   , 131\r
+       012027' 716717  720131\r
+\r
+       011137' 445166  000000  X       DIV   , 234\r
+       011140' 445166  420000  X       DIVB  , 237\r
+       011141' 445166  510000  X       DIVI  , 235\r
+       011142' 445166  550000  X       DIVM  , 236\r
+       012030' 234237  235236\r
+\r
+\r
+       011143' 446042  000000  X       DPB   , 137\r
+       011144' 446042  510000  X       DPBI  , 136\r
+\r
+       011145' 455644  000000  X       END   , 721\r
+\r
+       011146' 455664  456200  X       ENTER , 077\r
+       012031' 137136  721077\r
+\r
+       011147' 455664  627100  X       ENTRY , 722\r
+\r
+       011150' 456166  000000  X       EQV   , 444\r
+       011151' 456166  420000  X       EQVB  , 447\r
+       011152' 456166  510000  X       EQVI  , 445\r
+       012032' 722444  447445\r
+       011153' 456166  550000  X       EQVM  , 446\r
+\r
+       011154' 457043  500000  X       EXCH  , 250\r
+\r
+       011155' 457060  000000  X       EXP   , 723\r
+       011156' 457064  456256  XX      EXTERN, 724\r
+       012033' 446250  723724\r
+\r
+       011157' 464144  000000  X       FAD   , 140\r
+       011160' 464144  420000  X       FADB  , 143\r
+       011161' 464144  540000  X       FADL  , 141\r
+       011162' 464144  550000  X       FADM  , 142\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 156-3\r
+MACRO  10      24-APR-78 02:11         MACHINE INSTRUCTION SEARCH ROUTINES\r
+\r
+       012034' 140143  141142\r
+\r
+       011163' 464144  620000  X       FADR  , 144\r
+       011164' 464144  624200  X       FADRB , 147\r
+       011165' 464144  625100  X       FADRI , 145\r
+       011166' 464144  625500  X       FADRM , 146\r
+       012035' 144147  145146\r
+\r
+       011167' 464466  000000  X       FDV   , 170\r
+       011170' 464466  420000  X       FDVB  , 173\r
+       011171' 464466  540000  X       FDVL  , 171\r
+       011172' 464466  550000  X       FDVM  , 172\r
+       012036' 170173  171172\r
+\r
+       011173' 464466  620000  X       FDVR  , 174\r
+       011174' 464466  624200  X       FDVRB , 177\r
+       011175' 464466  625100  X       FDVRI , 175\r
+       011176' 464466  625500  X       FDVRM , 176\r
+       012037' 174177  175176\r
+\r
+       011177' 465156  160000  XX      FIN.  , 021\r
+\r
+\r
+       011200' 465560  000000  X       FMP   , 160\r
+       011201' 465560  420000  X       FMPB  , 163\r
+       011202' 465560  540000  X       FMPL  , 161\r
+       012040' 021160  163161\r
+       011203' 465560  550000  X       FMPM  , 162\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 157\r
+MACRO  10      24-APR-78 02:11         MACHINE INSTRUCTION SEARCH ROUTINES\r
+\r
+       011204' 465560  620000  X       FMPR  , 164\r
+       011205' 465560  624200  X       FMPRB , 167\r
+       011206' 465560  625100  X       FMPRI , 165\r
+       012041' 162164  167165\r
+       011207' 465560  625500  X       FMPRM , 166\r
+\r
+       011210' 466342  000000  X       FSB   , 150\r
+       011211' 466342  420000  X       FSBB  , 153\r
+       011212' 466342  540000  X       FSBL  , 151\r
+       012042' 166150  153151\r
+       011213' 466342  550000  X       FSBM  , 152\r
+\r
+       011214' 466342  620000  X       FSBR  , 154\r
+       011215' 466342  624200  X       FSBRB , 157\r
+       011216' 466342  625100  X       FSBRI , 155\r
+       012043' 152154  157155\r
+       011217' 466342  625500  X       FSBRM , 156\r
+\r
+       011220' 466343  000000  X       FSC   , 132\r
+\r
+       011221' 474564  636463  X       GETSTS, 062\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 158\r
+MACRO  10      24-APR-78 02:11         MACHINE INSTRUCTION SEARCH ROUTINES\r
+\r
+       011222' 504154  640000  X       HALT  , 725\r
+       012044' 156132  062725\r
+       011223' 505163  454700  X       HISEG , 706\r
+\r
+       011224' 505454  000000  X       HLL   , 500\r
+       011225' 505454  450000  X       HLLE  , 530\r
+       011226' 505454  455100  X       HLLEI , 531\r
+       012045' 706500  530531\r
+       011227' 505454  455500  X       HLLEM , 532\r
+       011230' 505454  456300  X       HLLES , 533\r
+       011231' 505454  510000  X       HLLI  , 501\r
+       011232' 505454  550000  X       HLLM  , 502\r
+       012046' 532533  501502\r
+       011233' 505454  570000  X       HLLO  , 520\r
+       011234' 505454  575100  X       HLLOI , 521\r
+       011235' 505454  575500  X       HLLOM , 522\r
+       011236' 505454  576300  X       HLLOS , 523\r
+       012047' 520521  522523\r
+       011237' 505454  630000  X       HLLS  , 503\r
+       011240' 505454  720000  X       HLLZ  , 510\r
+       011241' 505454  725100  X       HLLZI , 511\r
+       011242' 505454  725500  X       HLLZM , 512\r
+       012050' 503510  511512\r
+       011243' 505454  726300  X       HLLZS , 513\r
+\r
+       011244' 505462  000000  X       HLR   , 544\r
+       011245' 505462  450000  X       HLRE  , 574\r
+       011246' 505462  455100  X       HLREI , 575\r
+       012051' 513544  574575\r
+       011247' 505462  455500  X       HLREM , 576\r
+       011250' 505462  456300  X       HLRES , 577\r
+       011251' 505462  510000  X       HLRI  , 545\r
+       011252' 505462  550000  X       HLRM  , 546\r
+       012052' 576577  545546\r
+       011253' 505462  570000  X       HLRO  , 564\r
+       011254' 505462  575100  X       HLROI , 565\r
+       011255' 505462  575500  X       HLROM , 566\r
+       011256' 505462  576300  X       HLROS , 567\r
+       012053' 564565  566567\r
+       011257' 505462  630000  X       HLRS  , 547\r
+       011260' 505462  720000  X       HLRZ  , 554\r
+       011261' 505462  725100  X       HLRZI , 555\r
+       011262' 505462  725500  X       HLRZM , 556\r
+       012054' 547554  555556\r
+       011263' 505462  726300  X       HLRZS , 557\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 159\r
+MACRO  10      24-APR-78 02:11         MACHINE INSTRUCTION SEARCH ROUTINES\r
+\r
+       011264' 506254  000000  X       HRL   , 504\r
+       011265' 506254  450000  X       HRLE  , 534\r
+       011266' 506254  455100  X       HRLEI , 535\r
+       012055' 557504  534535\r
+       011267' 506254  455500  X       HRLEM , 536\r
+       011270' 506254  456300  X       HRLES , 537\r
+       011271' 506254  510000  X       HRLI  , 505\r
+       011272' 506254  550000  X       HRLM  , 506\r
+       012056' 536537  505506\r
+       011273' 506254  570000  X       HRLO  , 524\r
+       011274' 506254  575100  X       HRLOI , 525\r
+       011275' 506254  575500  X       HRLOM , 526\r
+       011276' 506254  576300  X       HRLOS , 527\r
+       012057' 524525  526527\r
+       011277' 506254  630000  X       HRLS  , 507\r
+       011300' 506254  720000  X       HRLZ  , 514\r
+       011301' 506254  725100  X       HRLZI , 515\r
+       011302' 506254  725500  X       HRLZM , 516\r
+       012060' 507514  515516\r
+       011303' 506254  726300  X       HRLZS , 517\r
+\r
+       011304' 506262  000000  X       HRR   , 540\r
+       011305' 506262  450000  X       HRRE  , 570\r
+       011306' 506262  455100  X       HRREI , 571\r
+       012061' 517540  570571\r
+       011307' 506262  455500  X       HRREM , 572\r
+       011310' 506262  456300  X       HRRES , 573\r
+       011311' 506262  510000  X       HRRI  , 541\r
+       011312' 506262  550000  X       HRRM  , 542\r
+       012062' 572573  541542\r
+       011313' 506262  570000  X       HRRO  , 560\r
+       011314' 506262  575100  X       HRROI , 561\r
+       011315' 506262  575500  X       HRROM , 562\r
+       011316' 506262  576300  X       HRROS , 563\r
+       012063' 560561  562563\r
+       011317' 506262  630000  X       HRRS  , 543\r
+       011320' 506262  720000  X       HRRZ  , 550\r
+       011321' 506262  725100  X       HRRZI , 551\r
+       011322' 506262  725500  X       HRRZM , 552\r
+       012064' 543550  551552\r
+       011323' 506262  726300  X       HRRZS , 553\r
+\r
+       011324' 514260  000000  X       IBP   , 133\r
+\r
+       011325' 514451  660000  X       IDIV  , 230\r
+       011326' 514451  664200  X       IDIVB , 233\r
+       012065' 553133  230233\r
+       011327' 514451  665100  X       IDIVI , 231\r
+       011330' 514451  665500  X       IDIVM , 232\r
+\r
+       011331' 514460  420000  X       IDPB  , 136\r
+\r
+       011332' 514621  000000  X       IF1   , 726\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 159-1\r
+MACRO  10      24-APR-78 02:11         MACHINE INSTRUCTION SEARCH ROUTINES\r
+\r
+       012066' 231232  136726\r
+       011333' 514622  000000  X       IF2   , 727\r
+       011334' 514642  000000  X       IFB   , 730\r
+       011335' 514644  454600  X       IFDEF , 731\r
+       011336' 514644  514600  X       IFDIF , 732\r
+       012067' 727730  731732\r
+       011337' 514645  000000  X       IFE   , 733\r
+       011340' 514647  000000  X       IFG   , 734\r
+       011341' 514647  450000  X       IFGE  , 735\r
+       011342' 514651  445600  X       IFIDN , 736\r
+       012070' 733734  735736\r
+       011343' 514654  000000  X       IFL   , 737\r
+       011344' 514654  450000  X       IFLE  , 740\r
+       011345' 514656  000000  X       IFN   , 741\r
+       011346' 514656  420000  X       IFNB  , 742\r
+       012071' 737740  741742\r
+       011347' 514656  444546  X       IFNDEF, 743\r
+\r
+       011350' 515444  420000  X       ILDB  , 134\r
+\r
+       011351' 515565  540000  X       IMUL  , 220\r
+       011352' 515565  544200  X       IMULB , 223\r
+       012072' 743134  220223\r
+       011353' 515565  545100  X       IMULI , 221\r
+       011354' 515565  545500  X       IMULM , 222\r
+\r
+       011355' 515600  000000  X       IN    , 056\r
+       011356' 515616  000000  XX      IN.   , 016\r
+       012073' 221222  056016\r
+       011357' 515642  654600  X       INBUF , 064\r
+       011360' 515646  160000  XX      INF.  , 026\r
+       011361' 515651  640000  X       INIT  , 041\r
+       011362' 515660  656400  X       INPUT , 066\r
+       012074' 064026  041066\r
+                               IFN WFWSW,<X    INTEGE, 773>\r
+\r
+       011363' 515664  456256  XX      INTERN, 744\r
+\r
+       011364' 515762  000000  X       IOR   , 434\r
+       011365' 515762  420000  X       IORB  , 437\r
+       011366' 515762  510000  X       IORI  , 435\r
+       012075' 744434  437435\r
+       011367' 515762  550000  X       IORM  , 436\r
+\r
+\r
+       011370' 515767  440000  X       IOWD  , 745\r
+       011371' 516260  000000  X       IRP   , 746\r
+       011372' 516260  430000  X       IRPC  , 747\r
+       012076' 436745  746747\r
+       011373' 524362  710000  X       JCRY  , 750\r
+       011374' 524362  712000  X       JCRY0 , 751\r
+       011375' 524362  712100  X       JCRY1 , 752\r
+       011376' 524556  000000  X       JEN   , 753\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 159-2\r
+MACRO  10      24-APR-78 02:11         MACHINE INSTRUCTION SEARCH ROUTINES\r
+\r
+       012077' 750751  752753\r
+\r
+       011377' 524643  540000  XX      JFCL  , 255\r
+\r
+       011400' 524646  570000  X       JFFO  , 243\r
+       011401' 524657  660000  X       JFOV  , 765\r
+       011402' 525766  000000  X       JOV   , 754\r
+       012100' 255243  765754\r
+\r
+       011403' 526241  000000  X       JRA   , 267\r
+       011404' 526263  640000  XX      JRST  , 254\r
+\r
+       011405' 526263  644600  X       JRSTF , 755\r
+\r
+       011406' 526341  000000  X       JSA   , 266\r
+       012101' 267254  755266\r
+       011407' 526360  000000  XX      JSP   , 265\r
+       011410' 526362  000000  X       JSR   , 264\r
+\r
+       011411' 526555  600000  XX      JUMP  , 320\r
+       011412' 526555  604100  XX      JUMPA , 324\r
+       012102' 265264  320324\r
+       011413' 526555  604500  X       JUMPE , 322\r
+       011414' 526555  604700  X       JUMPG , 327\r
+       011415' 526555  604745  X       JUMPGE, 325\r
+       011416' 526555  605400  X       JUMPL , 321\r
+       012103' 322327  325321\r
+       011417' 526555  605445  X       JUMPLE, 323\r
+       011420' 526555  605600  X       JUMPN , 326\r
+\r
+       011421' 544154  540000  X       LALL  , 756\r
+\r
+       011422' 544442  000000  X       LDB   , 135\r
+       012104' 323326  756135\r
+       011423' 544442  510000  X       LDBI  , 134\r
+\r
+\r
+       011424' 545163  640000  X       LIST  , 757\r
+       011425' 545164  000000  X       LIT   , 760\r
+       011426' 545743  000000  X       LOC   , 761\r
+       012105' 134757  760761\r
+\r
+       011427' 545757  536560  X       LOOKUP, 076\r
+\r
+       011430' 546350  000000  X       LSH   , 242\r
+       011431' 546350  430000  X       LSHC  , 246\r
+                               IFN WFWSW,<X    LVAR  , 774>\r
+       011432' 555457  464600  X       MLOFF , 767\r
+       012106' 076242  246767\r
+       011433' 555457  560000  X       MLON  , 766\r
+       011434' 555766  450000  XX      MOVE  , 200\r
+       011435' 555766  455100  XX      MOVEI , 201\r
+       011436' 555766  455500  XX      MOVEM , 202\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 159-3\r
+MACRO  10      24-APR-78 02:11         MACHINE INSTRUCTION SEARCH ROUTINES\r
+\r
+       012107' 766200  201202\r
+       011437' 555766  456300  X       MOVES , 203\r
+       011440' 555766  550000  X       MOVM  , 214\r
+       011441' 555766  555100  X       MOVMI , 215\r
+       011442' 555766  555500  X       MOVMM , 216\r
+       012110' 203214  215216\r
+       011443' 555766  556300  X       MOVMS , 217\r
+       011444' 555766  560000  X       MOVN  , 210\r
+       011445' 555766  565100  X       MOVNI , 211\r
+       011446' 555766  565500  X       MOVNM , 212\r
+       012111' 217210  211212\r
+       011447' 555766  566300  X       MOVNS , 213\r
+       011450' 555766  630000  X       MOVS  , 204\r
+       011451' 555766  635100  X       MOVSI , 205\r
+       011452' 555766  635500  X       MOVSM , 206\r
+       012112' 213204  205206\r
+       011453' 555766  636300  X       MOVSS , 207\r
+\r
+\r
+       011454' 556441  604500  X       MTAPE , 072\r
+       011455' 556457  601600  XX      MTOP. , 024\r
+\r
+       011456' 556554  000000  X       MUL   , 224\r
+       012113' 207072  024224\r
+       011457' 556554  420000  X       MULB  , 227\r
+       011460' 556554  510000  X       MULI  , 225\r
+       011461' 556554  550000  X       MULM  , 226\r
+       011462' 565451  160000  XX      NLI.  , 031\r
+       012114' 227225  226031\r
+       011463' 565457  160000  XX      NLO.  , 032\r
+\r
+       011464' 565763  715500  X       NOSYM , 762\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 160\r
+MACRO  10      24-APR-78 02:11         MACHINE INSTRUCTION SEARCH ROUTINES\r
+\r
+       011465' 574364  000000  X       OCT   , 763\r
+       011466' 576044  454600  X       OPDEF , 764\r
+       012115' 032762  763764\r
+\r
+       011467' 576045  560000  X       OPEN  , 050\r
+\r
+       011470' 576200  000000  X       OR    , 434\r
+       011471' 576242  000000  X       ORB   , 437\r
+       011472' 576243  410000  X       ORCA  , 454\r
+       012116' 050434  437454\r
+       011473' 576243  414200  X       ORCAB , 457\r
+       011474' 576243  415100  X       ORCAI , 455\r
+       011475' 576243  415500  X       ORCAM , 456\r
+       011476' 576243  420000  X       ORCB  , 470\r
+       012117' 457455  456470\r
+       011477' 576243  424200  X       ORCBB , 473\r
+\r
+       011500' 576243  425100  X       ORCBI , 471\r
+       011501' 576243  425500  X       ORCBM , 472\r
+       011502' 576243  550000  X       ORCM  , 464\r
+       012120' 473471  472464\r
+       011503' 576243  554200  X       ORCMB , 467\r
+       011504' 576243  555100  X       ORCMI , 465\r
+       011505' 576243  555500  X       ORCMM , 466\r
+       011506' 576251  000000  X       ORI   , 435\r
+       012121' 467465  466435\r
+       011507' 576255  000000  X       ORM   , 436\r
+\r
+       011510' 576564  000000  X       OUT   , 057\r
+       011511' 576564  160000  XX      OUT.  , 017\r
+       011512' 576564  426546  X       OUTBUF, 065\r
+       012122' 436057  017065\r
+       011513' 576564  461600  XX      OUTF. , 027\r
+       011514' 576564  606564  X       OUTPUT, 067\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 161\r
+MACRO  10      24-APR-78 02:11         MACHINE INSTRUCTION SEARCH ROUTINES\r
+\r
+       011515' 604147  450000  X       PAGE  , 700\r
+       011516' 604163  632200  X       PASS2 , 701\r
+       012123' 027067  700701\r
+       011517' 605041  634500  X       PHASE , 702\r
+       011520' 605751  566400  X       POINT , 703\r
+\r
+       011521' 605760  000000  XX      POP   , 262\r
+       011522' 605760  520000  XX      POPJ  , 263\r
+       012124' 702703  262263\r
+\r
+       011523' 606247  455644  X       PRGEND, 714\r
+       011524' 606251  566470  X       PRINTX, 704\r
+       011525' 606562  474500  X       PURGE , 705\r
+\r
+       011526' 606563  500000  XX      PUSH  , 261\r
+       012125' 714704  705261\r
+       011527' 606563  505200  XX      PUSHJ , 260\r
+\r
+       011530' 624144  517000  X       RADIX , 706\r
+       011531' 624144  517025  X       RADIX5, 707\r
+\r
+       011532' 624554  454163  X       RELEAS, 071\r
+       012126' 260706  707071\r
+\r
+       011533' 624554  574300  X       RELOC , 710\r
+       011534' 624555  416253  X       REMARK, 711\r
+\r
+       011535' 624556  415545  X       RENAME, 055\r
+\r
+       011536' 624560  454164  X       REPEAT, 712\r
+       012127' 710711  055712\r
+\r
+       011537' 624563  456416  XX      RESET., 015\r
+       011540' 625155  000000  X       RIM   , 715\r
+       011541' 625155  212000  X       RIM10 , 735\r
+       011542' 625155  212042  X       RIM10B, 736\r
+       012130' 015715  735736\r
+\r
+       011543' 625764  000000  X       ROT   , 241\r
+       011544' 625764  430000  X       ROTC  , 245\r
+\r
+       011545' 626367  000000  X       RSW   , 716\r
+       011546' 626442  160000  XX      RTB.  , 022\r
+       012131' 241245  716022\r
+       011547' 634154  540000  X       SALL  , 720\r
+       011550' 634541  624350  X       SEARCH, 721\r
+\r
+       011551' 634564  410000  X       SETA  , 424\r
+       011552' 634564  414200  X       SETAB , 427\r
+       012132' 720721  424427\r
+       011553' 634564  415100  X       SETAI , 425\r
+       011554' 634564  415500  X       SETAM , 426\r
+       011555' 634564  434100  X       SETCA , 450\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 161-1\r
+MACRO  10      24-APR-78 02:11         MACHINE INSTRUCTION SEARCH ROUTINES\r
+\r
+       011556' 634564  434142  X       SETCAB, 453\r
+       012133' 425426  450453\r
+       011557' 634564  434151  X       SETCAI, 451\r
+       011560' 634564  434155  X       SETCAM, 452\r
+       011561' 634564  435500  X       SETCM , 460\r
+       011562' 634564  435542  X       SETCMB, 463\r
+       012134' 451452  460463\r
+       011563' 634564  435551  X       SETCMI, 461\r
+       011564' 634564  435555  X       SETCMM, 462\r
+       011565' 634564  550000  X       SETM  , 414\r
+       011566' 634564  554200  X       SETMB , 417\r
+       012135' 461462  414417\r
+       011567' 634564  555100  X       SETMI , 415\r
+       011570' 634564  555500  X       SETMM , 416\r
+       011571' 634564  570000  X       SETO  , 474\r
+       011572' 634564  574200  X       SETOB , 477\r
+       012136' 415416  474477\r
+       011573' 634564  575100  X       SETOI , 475\r
+       011574' 634564  575500  X       SETOM , 476\r
+       011575' 634564  636463  X       SETSTS, 060\r
+       011576' 634564  720000  X       SETZ  , 400\r
+       012137' 475476  060400\r
+       011577' 634564  724200  X       SETZB , 403\r
+       011600' 634564  725100  X       SETZI , 401\r
+       011601' 634564  725500  XX      SETZM , 402\r
+\r
+       011602' 635170  425164  XX      SIXBIT, 717\r
+       012140' 403401  402717\r
+\r
+       011603' 635351  600000  XX      SKIP  , 330\r
+       011604' 635351  604100  X       SKIPA , 334\r
+       011605' 635351  604500  X       SKIPE , 332\r
+       011606' 635351  604700  X       SKIPG , 337\r
+       012141' 330334  332337\r
+       011607' 635351  604745  X       SKIPGE, 335\r
+       011610' 635351  605400  X       SKIPL , 331\r
+       011611' 635351  605445  X       SKIPLE, 333\r
+       011612' 635351  605600  X       SKIPN , 336\r
+       012142' 335331  333336\r
+\r
+       011613' 635451  636416  XX      SLIST., 025\r
+\r
+       011614' 635752  000000  X       SOJ   , 360\r
+       011615' 635752  410000  X       SOJA  , 364\r
+       011616' 635752  450000  X       SOJE  , 362\r
+       012143' 025360  364362\r
+       011617' 635752  470000  X       SOJG  , 367\r
+       011620' 635752  474500  X       SOJGE , 365\r
+       011621' 635752  540000  X       SOJL  , 361\r
+       011622' 635752  544500  X       SOJLE , 363\r
+       012144' 367365  361363\r
+       011623' 635752  560000  X       SOJN  , 366\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 161-2\r
+MACRO  10      24-APR-78 02:11         MACHINE INSTRUCTION SEARCH ROUTINES\r
+\r
+       011624' 635763  000000  XX      SOS   , 370\r
+       011625' 635763  410000  X       SOSA  , 374\r
+       011626' 635763  450000  X       SOSE  , 372\r
+       012145' 366370  374372\r
+       011627' 635763  470000  X       SOSG  , 377\r
+       011630' 635763  474500  X       SOSGE , 375\r
+       011631' 635763  540000  X       SOSL  , 371\r
+       011632' 635763  544500  X       SOSLE , 373\r
+       012146' 377375  371373\r
+       011633' 635763  560000  X       SOSN  , 376\r
+\r
+       011634' 636165  577245  X       SQUOZE, 707\r
+\r
+       011635' 636441  645700  X       STATO , 061\r
+       011636' 636441  646563  X       STATUS, 062\r
+       012147' 376707  061062\r
+       011637' 636441  647200  X       STATZ , 063\r
+\r
+       011640' 636457  605100  X       STOPI , 722\r
+\r
+       011641' 636542  000000  X       SUB   , 274\r
+       011642' 636542  420000  X       SUBB  , 277\r
+       012150' 063722  274277\r
+       011643' 636542  510000  X       SUBI  , 275\r
+       011644' 636542  550000  X       SUBM  , 276\r
+\r
+                               IF2,<IFE OPHSH,<SUBTL:>>\r
+       011645' 636542  646454  X       SUBTTL, 723\r
+       011646' 636560  606245  X       SUPPRE, 713\r
+       012151' 275276  723713\r
+       011647' 637156  000000  X       SYN   , 724\r
+       011650' 644160  450000  X       TAPE  , 725\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 162\r
+MACRO  10      24-APR-78 02:11         MACHINE INSTRUCTION SEARCH ROUTINES\r
+\r
+       011651' 644443  000000  X       TDC   , 650\r
+       011652' 644443  410000  X       TDCA  , 654\r
+       012152' 724725  650654\r
+       011653' 644443  450000  X       TDCE  , 652\r
+       011654' 644443  560000  X       TDCN  , 656\r
+       011655' 644456  000000  X       TDN   , 610\r
+       011656' 644456  410000  X       TDNA  , 614\r
+       012153' 652656  610614\r
+       011657' 644456  450000  X       TDNE  , 612\r
+       011660' 644456  560000  X       TDNN  , 616\r
+       011661' 644457  000000  X       TDO   , 670\r
+       011662' 644457  410000  X       TDOA  , 674\r
+       012154' 612616  670674\r
+       011663' 644457  450000  X       TDOE  , 672\r
+       011664' 644457  560000  X       TDON  , 676\r
+       011665' 644472  000000  X       TDZ   , 630\r
+       011666' 644472  410000  X       TDZA  , 634\r
+       012155' 672676  630634\r
+       011667' 644472  450000  X       TDZE  , 632\r
+       011670' 644472  560000  X       TDZN  , 636\r
+\r
+       011671' 645164  544500  X       TITLE , 726\r
+\r
+       011672' 645443  000000  X       TLC   , 641\r
+       012156' 632636  726641\r
+       011673' 645443  410000  X       TLCA  , 645\r
+       011674' 645443  450000  X       TLCE  , 643\r
+       011675' 645443  560000  X       TLCN  , 647\r
+       011676' 645456  000000  X       TLN   , 601\r
+       012157' 645643  647601\r
+       011677' 645456  410000  X       TLNA  , 605\r
+       011700' 645456  450000  XX      TLNE  , 603\r
+       011701' 645456  560000  XX      TLNN  , 607\r
+       011702' 645457  000000  XX      TLO   , 661\r
+       012160' 605603  607661\r
+       011703' 645457  410000  X       TLOA  , 665\r
+       011704' 645457  450000  X       TLOE  , 663\r
+       011705' 645457  560000  X       TLON  , 667\r
+       011706' 645472  000000  XX      TLZ   , 621\r
+       012161' 665663  667621\r
+       011707' 645472  410000  XX      TLZA  , 625\r
+       011710' 645472  450000  XX      TLZE  , 623\r
+       011711' 645472  560000  XX      TLZN  , 627\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 163\r
+MACRO  10      24-APR-78 02:11         MACHINE INSTRUCTION SEARCH ROUTINES\r
+\r
+       011712' 646243  000000  X       TRC   , 640\r
+       012162' 625623  627640\r
+       011713' 646243  410000  X       TRCA  , 644\r
+       011714' 646243  450000  X       TRCE  , 642\r
+       011715' 646243  560000  X       TRCN  , 646\r
+       011716' 646256  000000  X       TRN   , 600\r
+       012163' 644642  646600\r
+       011717' 646256  410000  X       TRNA  , 604\r
+       011720' 646256  450000  XX      TRNE  , 602\r
+       011721' 646256  560000  XX      TRNN  , 606\r
+       011722' 646257  000000  X       TRO   , 660\r
+       012164' 604602  606660\r
+       011723' 646257  410000  X       TROA  , 664\r
+       011724' 646257  450000  X       TROE  , 662\r
+       011725' 646257  560000  X       TRON  , 666\r
+       011726' 646272  000000  XX      TRZ   , 620\r
+       012165' 664662  666620\r
+       011727' 646272  410000  X       TRZA  , 624\r
+       011730' 646272  450000  X       TRZE  , 622\r
+       011731' 646272  560000  X       TRZN  , 626\r
+\r
+       011732' 646343  000000  X       TSC   , 651\r
+       012166' 624622  626651\r
+       011733' 646343  410000  X       TSCA  , 655\r
+       011734' 646343  450000  X       TSCE  , 653\r
+       011735' 646343  560000  X       TSCN  , 657\r
+       011736' 646356  000000  X       TSN   , 611\r
+       012167' 655653  657611\r
+       011737' 646356  410000  X       TSNA  , 615\r
+       011740' 646356  450000  X       TSNE  , 613\r
+\r
+       011741' 646356  560000  X       TSNN  , 617\r
+       011742' 646357  000000  X       TSO   , 671\r
+       012170' 615613  617671\r
+       011743' 646357  410000  X       TSOA  , 675\r
+       011744' 646357  450000  X       TSOE  , 673\r
+       011745' 646357  560000  X       TSON  , 677\r
+       011746' 646372  000000  X       TSZ   , 631\r
+       012171' 675673  677631\r
+       011747' 646372  410000  X       TSZA  , 635\r
+       011750' 646372  450000  X       TSZE  , 633\r
+       011751' 646372  560000  X       TSZN  , 637\r
+       011752' 646443  415454  X       TTCALL, 051\r
+       012172' 635633  637051\r
+       011753' 646757  634547  X       TWOSEG, 731\r
+       011754' 654641  000000  X       UFA   , 130\r
+       011755' 654745  644600  X       UGETF , 073\r
+       011756' 655245  560000  X       UJEN  , 100\r
+       012173' 731130  073100\r
+       011757' 655651  664562  X       UNIVER, 737\r
+       011760' 656345  645100  X       USETI , 074\r
+       011761' 656345  645700  X       USETO , 075\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 163-1\r
+MACRO  10      24-APR-78 02:11         MACHINE INSTRUCTION SEARCH ROUTINES\r
+\r
+       011762' 664162  000000  X       VAR   , 727\r
+       012174' 737074  075727\r
+\r
+       011763' 676442  160000  XX      WTB.  , 023\r
+\r
+       011764' 704154  540000  X       XALL  , 732\r
+\r
+       011765' 704364  000000  X       XCT   , 256\r
+\r
+       011766' 705451  636400  X       XLIST , 733\r
+       012175' 023732  256733\r
+\r
+       011767' 705762  000000  X       XOR   , 430\r
+       011770' 705762  420000  X       XORB  , 433\r
+       011771' 705762  510000  X       XORI  , 431\r
+       011772' 705762  550000  X       XORM  , 432\r
+       012176' 430433  431432\r
+\r
+       011773' 706065  564745  X       XPUNGE, 730\r
+       011774' 706744  000000  X       XWD   , 734\r
+\r
+       011775' 720000  000000  X       Z     , 000\r
+\r
+       011776' 164362  454600  X       .CREF , 740\r
+       012177' 730734  000740\r
+       011777' 165067  466255  X       .HWFRM, 742\r
+       012000' 165546  625564  X       .MFRMT, 743\r
+       012001' 167043  624546  X       .XCREF, 741\r
+\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 164\r
+MACRO  10      24-APR-78 02:11         MACHINE INSTRUCTION SEARCH ROUTINES\r
+\r
+                               IFN OPHSH,<             ;NO-OPS, OLD MNEMONICS,F4 UUOS\r
+                               X       CAI   , 300\r
+                               X       CAM   , 310\r
+                               X       CLEAR , 400\r
+                               X       CLEARB, 403\r
+                               X       CLEARI, 401\r
+                               X       CLEARM, 402\r
+                               X       JUMP  , 320\r
+                               X       JUMPA , 324\r
+                               X       SKIP  , 330\r
+                               X       RESET., 015\r
+                               X       IN.   , 016\r
+                               X       OUT.  , 017\r
+                               X       DATA. , 020\r
+                               X       FIN.  , 021\r
+                               X       RTB.  , 022\r
+                               X       WTB.  , 023\r
+                               X       MTOP. , 024\r
+                               X       SLIST., 025\r
+                               X       INF.  , 026\r
+                               X       OUTF. , 027\r
+                               X       NLI.  , 031\r
+                               X       NLO.  , 032\r
+                               >\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 165\r
+MACRO  10      24-APR-78 02:11         MACHINE INSTRUCTION SEARCH ROUTINES\r
+\r
+                               IFE OPHSH,<\r
+                               IF1, <  BLOCK   N1>\r
+       012002' 377777  777777  OP1END: -1B36\r
+       012003'                 OP1COD: BLOCK   N1/4\r
+       012200' 742743  741000          CC>\r
+                               IFN OPHSH,<\r
+                               IF2,<\r
+                               DEFINE SETVAL (N)<EXP   .%'N\r
+                               PURGE .%'N>\r
+                               N=0\r
+                               XLIST\r
+                               REPEAT PRIME,<SETVAL \N\r
+                               N=N+1>\r
+                               LIST\r
+                               >\r
+                               OP1COD: IF1,<   BLOCK <PRIME/4+1>>\r
+                               IF2,<\r
+                               DEFINE SETVAL (N)<EXP   .$'N\r
+                               PURGE .$'N>\r
+                               N=0\r
+                               XLIST\r
+                               REPEAT <PRIME/4+1>,<SETVAL      \N\r
+                               N=N+1>\r
+                               >\r
+                               LIST>\r
+\r
+                               IFDEF .CREF,<   .CREF   ;START CREFFING AGAIN>\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 166\r
+MACRO  10      24-APR-78 02:11         PERMANENT SYMBOLS\r
+\r
+                               SUBTTL  PERMANENT SYMBOLS\r
+       012201' 000000  000002  SYMNUM: EXP     LENGTH/2        ;NUMBER OF PERMANENT SYMBOLS\r
+                               DEFINE  P       (A,B)<\r
+                                       SIXBIT  /A/\r
+                                       XWD     SYMF!NOOUTF,B>\r
+\r
+       012202' 400000  000000  P       @,      0(SUPRBT)\r
+       012203' 500004  000000\r
+       012204' 373737  373737  P       ??????, 0(SUPRBT)\r
+       012205' 500004  000000\r
+\r
+                       000004  LENGTH= .-SYMNUM-1                      ;LENGTH OF INITIAL SYMBOLS\r
+\r
+       012206'                 PRMTBL:                 ;PERMANENT SYMBOLS\r
+       012206' 414443  000000  P       ADC,    24\r
+       012207' 500000  000024\r
+       012210' 416062  000000  P       APR,    0\r
+       012211' 500000  000000\r
+       012212' 434351  000000  P       CCI,    14\r
+       012213' 500000  000014\r
+       012214' 434460  000000  P       CDP,    110\r
+       012215' 500000  000110\r
+       012216' 434462  000000  P       CDR,    114\r
+       012217' 500000  000114\r
+       012220' 436041  000000  P       CPA,    0\r
+       012221' 500000  000000\r
+       012222' 436200  000000  P       CR,     150\r
+       012223' 500000  000150\r
+       012224' 444300  000000  P       DC,     200\r
+       012225' 500000  000200\r
+       012226' 444363  410000  P       DCSA,   300\r
+       012227' 500000  000300\r
+       012230' 444363  420000  P       DCSB,   304\r
+       012231' 500000  000304\r
+       012232' 444600  000000  P       DF,     270\r
+       012233' 500000  000270\r
+       012234' 445163  000000  P       DIS,    130\r
+       012235' 500000  000130\r
+       012236' 445463  000000  P       DLS,    240\r
+       012237' 500000  000240\r
+       012240' 446043  000000  P       DPC,    250\r
+       012241' 500000  000250\r
+       012242' 446353  000000  P       DSK,    170\r
+       012243' 500000  000170\r
+       012244' 446443  000000  P       DTC,    320\r
+       012245' 500000  000320\r
+       012246' 446463  000000  P       DTS,    324\r
+       012247' 500000  000324\r
+       012250' 546064  000000  P       LPT,    124\r
+       012251' 500000  000124\r
+       012252' 554446  000000  P       MDF,    260\r
+       012253' 500000  000260\r
+       012254' 556443  000000  P       MTC,    220\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 166-1\r
+MACRO  10      24-APR-78 02:11         PERMANENT SYMBOLS\r
+\r
+       012255' 500000  000220\r
+       012256' 556455  000000  P       MTM,    230\r
+       012257' 500000  000230\r
+       012260' 556463  000000  P       MTS,    224\r
+       012261' 500000  000224\r
+       012262' 604147  000000  P       PAG,    10\r
+       012263' 500000  000010\r
+       012264' 605100  000000  P       PI,     4\r
+       012265' 500000  000004\r
+       012266' 605464  000000  P       PLT,    140\r
+       012267' 500000  000140\r
+       012270' 606460  000000  P       PTP,    100\r
+       012271' 500000  000100\r
+       012272' 606462  000000  P       PTR,    104\r
+       012273' 500000  000104\r
+\r
+       012274' 645543  000000  P       TMC,    340\r
+       012275' 500000  000340\r
+       012276' 645563  000000  P       TMS,    344\r
+       012277' 500000  000344\r
+       012300' 646471  000000  P       TTY,    120\r
+       012301' 500000  000120\r
+       012302' 656443  000000  P       UTC,    210\r
+       012303' 500000  000210\r
+       012304' 656463  000000  P       UTS,    214\r
+       012305' 500000  000214\r
+                               IFE LNSSW,<     XLIST   >\r
+                                       LIST\r
+       012306'                 PRMEND:                         ;END OF PERMANENT SYMBOLS\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 167\r
+MACRO  10      24-APR-78 02:11         PERMANENT SYMBOLS\r
+\r
+                                       OPDEF   ZL      [Z      LITF]   ;INVALID IN LITERALS\r
+                                       OPDEF   ZA      [Z      ADDF]   ;INVALID IN ADDRESSES\r
+                                       OPDEF   ZAL     [Z      ADDF!LITF]\r
+\r
+       012306'                 OP1TAB:\r
+\r
+       012306' 000000  110673'         ZA      PAGE0                   ;PAGE\r
+       012307' 000000  303155'         ZAL     PASS20                  ;PASS2\r
+       012310' 000000  304106'         ZAL     PHASE0                  ;PHASE\r
+       012311' 000000  004652'         Z       POINT0                  ;POINT\r
+       012312' 000000  103431'         ZA      PRNTX0                  ;PRINTX\r
+       012313' 000000  104410'         ZA      PURGE0                  ;PURGE\r
+       012314' 000000  103375'         ZA      RADIX0                  ;RADIX\r
+       012315' 000000  004760'         Z       RADX50                  ;RADIX50,SQUOZE\r
+       012316' 000001  304203'         ZAL     LOC0    (1)             ;RELOC\r
+       012317' 000000  303450'         ZAL     REMAR0                  ;REMARK\r
+       012320' 000000  105264'         ZA      REPEA0                  ;REPEAT\r
+       012321' 000000  104250'         ZA      SUPRE0                  ;SUPRESS\r
+       012322' 000000  305003'         ZAL     PSEND0                  ;PRGEND\r
+       012323' 000400  310354'         ZAL     RIM0    (RIMSW)         ;RIM\r
+       012324' 700040  004443'         DATAI   0,IOP                   ;RSW\r
+       012325' 000001  004606'         Z       ASCII0  (1)             ;SIXBIT\r
+       012326' 004001  303404'         ZAL     IOSET   (IOPALL!IOSALL) ;SALL\r
+       012327' 000000  305240'         ZAL     SERCH0                  ;SEARCH\r
+       012330' 000000  106321'         ZA      STOPI0                  ;STOPI\r
+       012331' 440700  104311'         ZA      SUBTT0  (Z (POINT 7,,)) ;SUBTTL\r
+       012332' 000000  104352'         ZA      SYN0                    ;SYN\r
+       012333' 000000  303373'         ZAL     TAPE0                   ;TAPE\r
+       012334' 440700  104276'         ZA      TITLE0  (Z (POINT 7,,)) ;TITLE\r
+       012335' 000000  303546'         ZAL     VAR0                    ;VAR\r
+\r
+       012336' 000000  004266'         Z       XPUNG0                  ;XPUNGE\r
+       012337' 000000  303447'         ZAL     TWSEG0                  ;TWOSEGMENTS\r
+       012340' 004000  303403'         ZAL     XALL0   (IOPALL)        ;XALL\r
+       012341' 040000  303404'         ZAL     IOSET   (IOPROG)        ;XLIST\r
+       012342' 000000  004672'         Z       XWD0                    ;XWD\r
+       012343' 000100  310354'         ZAL     RIM0    (RIM1SW)        ;RIM10\r
+       012344' 004000  310354'         ZAL     RIM0    (R1BSW)         ;RIM10B\r
+       012345' 440700  105167'         ZA      UNIV0   (Z (POINT 7,,)) ;UNIVERSAL\r
+       012346' 002000  303411'         ZAL     IORSET  (IONCRF)        ;.CREF\r
+       012347' 002000  303404'         ZAL     IOSET   (IONCRF)        ;.XCREF\r
+       012350' 000000  103447'         ZA      OFFORM                  ;.HWFRMT\r
+       012351' 000000  103447'         ZA      ONFORM                  ;.MFRMT\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 168\r
+MACRO  10      24-APR-78 02:11         PERMANENT SYMBOLS\r
+\r
+       012352'                 OP2TAB:\r
+\r
+       012352' 000000  004606'         Z       ASCII0  (0)             ;ASCII\r
+       012353' 400000  004606'         Z       ASCII0  (1B18)          ;ASCIZ\r
+       012354' 700000  004443'         BLKI    IOP                     ;BLKI\r
+       012355' 700100  004443'         BLKO    IOP                     ;BLKO\r
+       012356' 000000  303415'         ZAL     BLOCK0                  ;BLOCK\r
+       012357' 000000  104261'         ZA      SUPRSA                  ;ASUPPRESS\r
+       012360' 000000  303447'         ZAL     HISEG0                  ;HISEG\r
+       012361' 000000  004722'         Z       BYTE0                   ;BYTE\r
+       012362' 700240  004443'         CONI    IOP                     ;CONI\r
+       012363' 700200  004443'         CONO    IOP                     ;CONO\r
+       012364' 700340  004443'         CONSO   IOP                     ;CONSO\r
+       012365' 700300  004443'         CONSZ   IOP                     ;CONSZ\r
+       012366' 700040  004443'         DATAI   IOP                     ;DATAI\r
+       012367' 700140  004443'         DATAO   IOP                     ;DATAO\r
+       012370' 000012  004557'         Z       OCT0    (^D10)          ;DEC\r
+       012371' 000000  105405'         ZA      DEFIN0                  ;DEFINE\r
+\r
+       012372' 000000  304104'         ZAL     DEPHA0                  ;DEPHASE\r
+       012373' 000000  303123'         ZAL     END0                    ;END\r
+       012374' 000600  103766'         ZA      INTER0  (INTF!ENTF)     ;ENTRY\r
+       012375' 000000  004556'         Z       EXPRES                  ;EXP\r
+       012376' 000000  104004'         ZA      EXTER0                  ;EXTERN\r
+       012377' 254200  004445'         JRST    4,OP                    ;HALT\r
+       012400' 607640  003627'         TLNN    FR,IFPASS               ;IF1\r
+       012401' 603640  003627'         TLNE    FR,IFPASS               ;IF2\r
+\r
+       012402' 602000  003632'         TRNE    AC0,IFB0                ;IFB\r
+       012403' 603240  003667'         TLNE    ARG,IFDEF0              ;IFDEF\r
+       012404' 000000  003677'         Z       IFIDN0  (0)             ;IFDIF\r
+       012405' 332000  003601'         SKIPE   IF                      ;IFE\r
+       012406' 337000  003601'         SKIPG   IF                      ;IFG\r
+       012407' 335000  003601'         SKIPGE  IF                      ;IFGE\r
+       012410' 000001  003677'         Z       IFIDN0  (1)             ;IFIDN\r
+       012411' 331000  003601'         SKIPL   IF                      ;IFL\r
+\r
+       012412' 333000  003601'         SKIPLE  IF                      ;IFLE\r
+       012413' 336000  003601'         SKIPN   IF                      ;IFN\r
+       012414' 606000  003632'         TRNN    AC0,IFB0                ;IFNB\r
+       012415' 607240  003667'         TLNN    ARG,IFDEF0              ;IFNDEF\r
+       012416' 000400  103766'         ZA      INTER0  (INTF)          ;INTERN\r
+       012417' 000000  004710'         Z       IOWD0                   ;IOWD\r
+       012420' 000000  006173'         Z       IRP0    (0)             ;IRP\r
+       012421' 400000  006173'         Z       IRP0    (400000)        ;IRPC\r
+\r
+       012422' 255300  004445'         JFCL    6,OP                    ;JCRY\r
+       012423' 255200  004445'         JFCL    4,OP                    ;JCRY0\r
+       012424' 255100  004445'         JFCL    2,OP                    ;JCRY1\r
+       012425' 254500  004445'         JRST    12,OP                   ;JEN\r
+       012426' 255400  004445'         JFCL    10,OP                   ;JOV\r
+       012427' 254100  004445'         JRST    2,OP                    ;JRSTF\r
+       012430' 004001  303411'         ZAL     IORSET  (IOPALL!IOSALL) ;LALL\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 168-1\r
+MACRO  10      24-APR-78 02:11         PERMANENT SYMBOLS\r
+\r
+       012431' 040000  303411'         ZAL     IORSET  (IOPROG)        ;LIST\r
+       012432' 000000  303454'         ZAL     LIT0                    ;LIT\r
+       012433' 000000  304203'         ZAL     LOC0    (0)             ;LOC\r
+       012434' 000000  104246'         ZA      OFFSYM                  ;NOSYM\r
+       012435' 000010  004557'         Z       OCT0    (^D8)           ;OCT\r
+       012436' 000000  104053'         ZA      OPDEF0                  ;OPDEF\r
+       012437' 255040  004445'         JFCL    1,OP                    ;JFOV\r
+       012440' 000000  104243'         ZA      ONML                    ;MLON\r
+       012441' 000000  104244'         ZA      OFFML                   ;MLOFF\r
+       012442' 600000  004606'         Z       ASCII0  (3B19)          ;COMMENT\r
+                               IFN IIISW!WFWSW,<\r
+                                       Z       ASCII0  (5B20)          ;ASCID\r
+                               IFN WFWSW,<\r
+                                       ZAL     %ARAY                   ;ARRAY\r
+                                       ZAL     %INTEG                  ;INTEGER\r
+                                       ZAL     %LVAR                   ;LVAR>>\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 169\r
+MACRO  10      24-APR-78 02:11         PERMANENT SYMBOLS\r
+\r
+\r
+       012443'                 CALTBL:\r
+                                                               ;USER DEFINED CALLI'S GO HERE\r
+       012443' 545147  506463          SIXBIT  /LIGHTS/        ;-1\r
+       012444' 624563  456400  CALLI0: SIXBIT  /RESET/         ; 0\r
+       012445' 444464  515600          SIXBIT  /DDTIN/         ; 1\r
+       012446' 634564  444464          SIXBIT  /SETDDT/        ; 2\r
+       012447' 444464  576564          SIXBIT  /DDTOUT/        ; 3\r
+       012450' 444566  435062          SIXBIT  /DEVCHR/        ; 4\r
+       012451' 444464  476400          SIXBIT  /DDTGT/         ; 5\r
+       012452' 474564  435062          SIXBIT  /GETCHR/        ; 6\r
+       012453' 444464  625400          SIXBIT  /DDTRL/         ; 7\r
+       012454' 674151  640000          SIXBIT  /WAIT/          ;10\r
+       012455' 435762  450000          SIXBIT  /CORE/          ;11\r
+       012456' 457051  640000          SIXBIT  /EXIT/          ;12\r
+       012457' 656460  435462          SIXBIT  /UTPCLR/        ;13\r
+       012460' 444164  450000          SIXBIT  /DATE/          ;14\r
+       012461' 545747  515600          SIXBIT  /LOGIN/         ;15\r
+       012462' 416062  455642          SIXBIT  /APRENB/        ;16\r
+       012463' 545747  576564          SIXBIT  /LOGOUT/        ;17\r
+       012464' 636751  644350          SIXBIT  /SWITCH/        ;20\r
+       012465' 624541  636351          SIXBIT  /REASSI/        ;21\r
+       012466' 645155  456200          SIXBIT  /TIMER/         ;22\r
+       012467' 556364  515545          SIXBIT  /MSTIME/        ;23\r
+       012470' 474564  606056          SIXBIT  /GETPPN/        ;24\r
+       012471' 646260  634564          SIXBIT  /TRPSET/        ;25\r
+       012472' 646260  524556          SIXBIT  /TRPJEN/        ;26\r
+       012473' 626556  645155          SIXBIT  /RUNTIM/        ;27\r
+       012474' 605257  420000          SIXBIT  /PJOB/          ;30\r
+       012475' 635445  456000          SIXBIT  /SLEEP/         ;31\r
+       012476' 634564  605766          SIXBIT  /SETPOV/        ;32\r
+       012477' 604545  530000          SIXBIT  /PEEK/          ;33\r
+       012500' 474564  545156          SIXBIT  /GETLIN/        ;34\r
+       012501' 626556  000000          SIXBIT  /RUN/           ;35\r
+       012502' 634564  656760          SIXBIT  /SETUWP/        ;36\r
+       012503' 624555  416000          SIXBIT  /REMAP/         ;37\r
+       012504' 474564  634547          SIXBIT  /GETSEG/        ;40\r
+       012505' 474564  644142          SIXBIT  /GETTAB/        ;41\r
+       012506' 636071  000000          SIXBIT  /SPY/           ;42\r
+       012507' 634564  564155          SIXBIT  /SETNAM/        ;43\r
+       012510' 645560  435762          SIXBIT  /TMPCOR/        ;44\r
+       012511' 446353  435062          SIXBIT  /DSKCHR/        ;45\r
+       012512' 637163  636462          SIXBIT  /SYSSTR/        ;46\r
+       012513' 525742  636462          SIXBIT  /JOBSTR/        ;47\r
+       012514' 636462  656557          SIXBIT  /STRUUO/        ;50\r
+       012515' 637163  605071          SIXBIT  /SYSPHY/        ;51\r
+       012516' 466245  435056          SIXBIT  /FRECHN/        ;52\r
+       012517' 444566  647160          SIXBIT  /DEVTYP/        ;53\r
+       012520' 444566  636463          SIXBIT  /DEVSTS/        ;54\r
+       012521' 444566  606056          SIXBIT  /DEVPPN/        ;55\r
+       012522' 634545  530000          SIXBIT  /SEEK/          ;56\r
+       012523' 626464  626000          SIXBIT  /RTTRP/         ;57\r
+       012524' 545743  530000          SIXBIT  /LOCK/          ;60\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 169-1\r
+MACRO  10      24-APR-78 02:11         PERMANENT SYMBOLS\r
+\r
+       012525' 525742  636463          SIXBIT  /JOBSTS/        ;61\r
+       012526' 545743  416445          SIXBIT  /LOCATE/        ;62\r
+       012527' 675045  624500          SIXBIT  /WHERE/         ;63\r
+       012530' 444566  564155          SIXBIT  /DEVNAM/        ;64\r
+       012531' 436454  525742          SIXBIT  /CTLJOB/        ;65\r
+       012532' 475742  636462          SIXBIT  /GOBSTR/        ;66\r
+       012533' 000000  000000          0                       ;67\r
+       012534' 000000  000000          0                       ;70\r
+       012535' 506061  000000          SIXBIT  /HPQ/           ;71\r
+       012536' 505142  456200          SIXBIT  /HIBER/         ;72\r
+       012537' 674153  450000          SIXBIT  /WAKE/          ;73\r
+       012540' 435047  606056          SIXBIT  /CHGPPN/        ;74\r
+       012541' 634564  656557          SIXBIT  /SETUUO/        ;75\r
+       012542' 444566  474556          SIXBIT  /DEVGEN/        ;76\r
+       012543' 576450  656362          SIXBIT  /OTHUSR/        ;77\r
+       012544' 435053  414343          SIXBIT  /CHKACC/        ;100\r
+       012545' 444566  635172          SIXBIT  /DEVSIZ/        ;101\r
+       012546' 444145  555756          SIXBIT  /DAEMON/        ;102\r
+       012547' 525742  604553          SIXBIT  /JOBPEK/        ;103\r
+       012550' 416464  414350          SIXBIT  /ATTACH/        ;104\r
+       012551' 444145  465156          SIXBIT  /DAEFIN/        ;105\r
+       012552' 466243  656557          SIXBIT  /FRCUUO/        ;106\r
+       012553' 444566  545655          SIXBIT  /DEVLNM/        ;107\r
+       012554' 604164  501600          SIXBIT  /PATH./         ;110\r
+\r
+                       000112  CALNTH==.-CALTBL\r
+                       000001  NEGCAL==CALLI0-CALTBL           ;NUMBER OF NEGATIVE CALLI'S\r
+\r
+       012555' 515643  506267  TTCTBL: SIXBIT  /INCHRW/        ; 0     INPUT A CHAR. AND WAIT\r
+       012556' 576564  435062          SIXBIT  /OUTCHR/        ; 1     OUTPUT A CHAR.\r
+       012557' 515643  506263          SIXBIT  /INCHRS/        ; 2     INPUT A CHAR. AND SKIP\r
+       012560' 576564  636462          SIXBIT  /OUTSTR/        ; 3     OUTPUT A STRING\r
+       012561' 515643  506754          SIXBIT  /INCHWL/        ; 4     INPUT CHAR., WAIT, LINE MODE\r
+       012562' 515643  506354          SIXBIT  /INCHSL/        ; 5     INPUT CHAR., SKIP, LINE MODE\r
+       012563' 474564  544350          SIXBIT  /GETLCH/        ; 6     GET LINE CHARACTERISTICS\r
+       012564' 634564  544350          SIXBIT  /SETLCH/        ; 7     SET LINE CHARACTERISTICS\r
+       012565' 624563  434156          SIXBIT  /RESCAN/        ;10     RESET INPUT STREAM TO COMMAND\r
+       012566' 435462  424651          SIXBIT  /CLRBFI/        ;11     CLEAR TYPEIN BUFFER\r
+       012567' 435462  424657          SIXBIT  /CLRBFO/        ;12     CLEAR TYPEOUT BUFFER\r
+       012570' 635360  515643          SIXBIT  /SKPINC/        ;13     SKIPS IF A CHAR. CAN BE INPUT\r
+       012571' 635360  515654          SIXBIT  /SKPINL/        ;14     SKIPS IF A LINE CAN BE INPUT\r
+       012572' 515756  455765          SIXBIT  /IONEOU/        ;15     OUTPUT AS AN IMAGE CHAR.\r
+\r
+                       000016  TTCLTH==.-TTCTBL\r
+                                       SUBTTL  USER-DEFINED SYMBOL SEARCH ROUTINES\r
+       012573' 260740  012713' MSRCH:  PUSHJ   PP,SEARCH       ;PERFORM GENERAL SEARCH\r
+       012574' 263740  000000          POPJ    PP,             ;NOT FOUND, EXIT\r
+       012575' 327240  012602'         JUMPG   ARG,MSRCH2      ;SKIP-EXIT AND CROSS-REF IF FOUND\r
+       012576' 312004  000001          CAME    AC0,1(SX)       ;WE ARE LOOKING AT SYMBOL, TRY ONE ABOVE\r
+       012577' 263740  000000          POPJ    PP,             ;NO, EXIT\r
+       012600' 271200  000002          ADDI    SX,2            ;YES, POINT TO IT\r
+       012601' 260740  012736'         PUSHJ   PP,SRCH5        ;LOAD REGISTERS\r
+       012602' 354017  000000  MSRCH2: AOSA    0(PP)           ;SET SKIP-EXIT\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 169-2\r
+MACRO  10      24-APR-78 02:11         USER-DEFINED SYMBOL SEARCH ROUTINES\r
+\r
+       012603' 321240  012620' QSRCH:  JUMPL   ARG,SSRCH3      ;BRANCH IF OPERAND\r
+       012604' 201140  000005          MOVEI   SDEL,%MAC       ;SET OPERATOR FLAG\r
+       012605' 623600  000040          TLZE IO,DEFCRS  ;IS IT A DEFINITION?\r
+       012606' 201140  000006          MOVEI SDEL,%DMAC        ;YES\r
+       012607' 254000  012621'         JRST    CREF            ;CROSS-REF AND EXIT\r
+\r
+       012610' 260740  012713' SSRCH:  PUSHJ   PP,SEARCH       ;PERFORM GENERAL SEARCH\r
+       012611' 263740  000000          POPJ    PP,             ;NOT FOUND, EXIT\r
+       012612' 321240  012617'         JUMPL   ARG,SSRCH2      ;SKIP-EXIT AND CROSS-REF IF FOUND\r
+       012613' 312004  777775  SSRCH1: CAME    AC0,-3(SX)      ;WE ARE LOOKING AT MACRO, LOOK ONE SLOT BELOW\r
+       012614' 263740  000000          POPJ    PP,             ;NO DICE, EXIT\r
+       012615' 275200  000002          SUBI    SX,2            ;YES, POINT TO IT\r
+       012616' 260740  012736'         PUSHJ   PP,SRCH5        ;LOAD REGISTERS\r
+       012617' 350017  000000  SSRCH2: AOS     0(PP)           ;SET FOR SKIP-EXIT\r
+       012620' 201140  000001  SSRCH3: MOVEI   SDEL,%SYM       ;SET OPERAND FLAG\r
+\r
+       012621' 607600  002000  CREF:   TLNN    IO,IONCRF       ;NO CREFFING FOR THIS SYMBOL?\r
+       012622' 603640  402000          TLNE    FR,P1!CREFSW    ;PASS ONE OR CROSS-REF SUPPRESSION?\r
+       012623' 263740  000000          POPJ    PP,             ;YES, EXIT\r
+       012624' 250140  000007          EXCH    SDEL,C          ;PUT FLAG IN C, SACE C\r
+       012625' 261740  000010          PUSH    PP,CS\r
+       012626' 603600  000400          TLNE IO,IOCREF          ;HAVE WE PUT OUT THE 177,102\r
+       012627' 254000  012641'         JRST CREF3              ;YES\r
+       012630' 261740  000007          PUSH PP,C               ;START OF CREF DATA\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 170\r
+MACRO  10      24-APR-78 02:11         USER-DEFINED SYMBOL SEARCH ROUTINES\r
+\r
+                               REPEAT 0,<      ;NEEDS CHANGE TO CREF\r
+                                       MOVEI C,177\r
+                                       PUSHJ PP,OUTLST\r
+                                       MOVEI C,102\r
+                                       PUSHJ PP,OUTLST\r
+                                       TLO IO,IOCREF   ;WE NOW ARE IN THAT STATE\r
+                                       POP PP,C        ;WE HAVE NOW\r
+                               CREF3:  JUMPE C,NOFLG           ;JUST CLOSE IT\r
+                                       PUSHJ   PP,OUTLST       ;TYPE OF SYMBOL (%MAC,%DMAC,%SYM)\r
+                                       MOVSI CS,770000         ;COUNT CHRS\r
+                                       TDZA C,C        ;STARTING AT 0\r
+                                       LSH CS,-6       ;TRY NEXT\r
+                                       TDNE AC0,CS     ;IS THAT ONE THERE?\r
+                                       AOJA C,.-2      ;YES\r
+                                       PUSHJ PP,OUTLST         ;PRINT NUMBER OF SYMBOL CONSTITUENTS\r
+                                       MOVE    CS,AC0\r
+                               \r
+                               CREF2:  MOVEI   C,0\r
+                                       LSHC    C,6\r
+                                       ADDI    C,40\r
+                                       PUSHJ   PP,OUTLST       ;THE ASCII SYMBOL\r
+                                       JUMPN   CS,CREF2\r
+                                       MOVEI   C,%DSYM\r
+                                       TLZE    IO,DEFCRS\r
+                                       PUSHJ   PP,OUTLST       ;MARK IT AS A DEFINING OCCURENCE\r
+                               NOFLG:  MOVE    C,SDEL\r
+                                       POP     PP,CS\r
+                                       POPJ    PP,\r
+                               \r
+                               CLSCRF: TRNN ER,LPTSW\r
+                                       POPJ PP,        ;LEAVE IF WE SHOULD NOT BE PRINTING\r
+                               CLSCR2: MOVEI C,177\r
+                                       PUSHJ PP,PRINT\r
+                                       TLZE IO,IOCREF  ;WAS IT OPEN?\r
+                                       JRST CLSCR1     ;YES, JUST CLOSE IT\r
+                                       MOVEI C,102     ;NO, OPEN IT FIRST\r
+                                       PUSHJ PP,OUTLST         ;MARK BEGINNING OF CREF DATA\r
+                                       MOVEI C,177\r
+                                       PUSHJ PP,OUTLST\r
+                               CLSCR1: MOVEI C,103\r
+                                       JRST OUTLST             ;MARK END OF CREF DATA\r
+                               \r
+                               CLSC3:  TLZ IO,IOCREF\r
+                                       MOVEI C,177\r
+                                       PUSHJ PP,OUTLST\r
+                                       MOVEI C,104\r
+                                       JRST OUTLST     ;177,104 CLOSES IT FOR NOW\r
+                               >       ;END OF REPEAT 0\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 171\r
+MACRO  10      24-APR-78 02:11         USER-DEFINED SYMBOL SEARCH ROUTINES\r
+\r
+                               REPEAT 1,<                      ;WORKS WITH EXISTING CREF\r
+       012631' 603600  000100          TLNE IO,IOPAGE\r
+       012632' 260740  012664'         PUSHJ PP,CRFHDR         ;GET CORRECT SUBTTL\r
+       012633' 201340  000177          MOVEI C,177\r
+       012634' 260740  010667'         PUSHJ PP,OUTLST\r
+       012635' 201340  000102          MOVEI C,102\r
+       012636' 260740  010667'         PUSHJ PP,OUTLST\r
+       012637' 661600  000400          TLO IO,IOCREF   ;WE NOW ARE IN THAT STATE\r
+       012640' 262740  000007          POP PP,C        ;WE HAVE NOW\r
+       012641' 260740  010667' CREF3:  PUSHJ   PP,OUTLST       ;TYPE OF SYMBOL (%MAC,%DMAC,%SYM)\r
+       012642' 205400  770000          MOVSI CS,770000         ;COUNT CHRS\r
+       012643' 634340  000007          TDZA C,C        ;STARTING AT 0\r
+       012644' 242400  777772          LSH CS,-6       ;TRY NEXT\r
+       012645' 612000  000010          TDNE AC0,CS     ;IS THAT ONE THERE?\r
+       012646' 344340  012644'         AOJA C,.-2      ;YES\r
+       012647' 260740  010667'         PUSHJ PP,OUTLST         ;PRINT NUMBER OF SYMBOL CONSTITUENTS\r
+       012650' 200400  000000          MOVE    CS,AC0\r
+\r
+       012651' 201340  000000  CREF2:  MOVEI   C,0\r
+       012652' 246340  000006          LSHC    C,6\r
+       012653' 271340  000040          ADDI    C,40\r
+       012654' 260740  010667'         PUSHJ   PP,OUTLST       ;THE ASCII SYMBOL\r
+       012655' 326400  012651'         JUMPN   CS,CREF2\r
+       012656' 201340  000002          MOVEI   C,%DSYM\r
+       012657' 623600  000040          TLZE    IO,DEFCRS\r
+       012660' 260740  010667'         PUSHJ   PP,OUTLST       ;MARK IT AS A DEFINING OCCURENCE\r
+       012661' 200340  000003          MOVE    C,SDEL\r
+       012662' 262740  000010          POP     PP,CS\r
+       012663' 263740  000000          POPJ    PP,\r
+\r
+                               IFN OPHSH,<\r
+                               SUBTL:  SIXBIT  /SUBTTL/>\r
+       012664' 312000  011645' CRFHDR: CAME    AC0,SUBTL       ;IS FIRST SYMBOL "SUBTTL"\r
+       012665' 254000  012672'         JRST    CRFHD1          ;NO\r
+       012666' 510000  000006          HLLZ    AC0,V\r
+       012667' 260740  004311'         PUSHJ   PP,SUBTT0       ;UPDATE SUBTTL\r
+       012670' 200000  011645'         MOVE    AC0,SUBTL       ;RESTORE ARG.\r
+       012671' 201300  003447'         MOVEI   V,CPOPJ\r
+       012672' 201340  000000  CRFHD1: MOVEI   C,0\r
+       012673' 254000  010607'         JRST    OUTL\r
+\r
+       012674'                 CLSC3:\r
+       012674' 606600  000002  CLSCRF: TRNN ER,LPTSW\r
+       012675' 263740  000000          POPJ PP,        ;LEAVE IF WE SHOULD NOT BE PRINTING\r
+       012676' 623600  000400  CLSCR2: TLZE IO,IOCREF  ;FINISH UP LINE\r
+       012677' 254000  012707'         JRST CLSCR1\r
+       012700' 201340  000000          MOVEI   C,0\r
+       012701' 603600  000100          TLNE    IO,IOPAGE       ;NEW PAGE?\r
+       012702' 260740  010607'         PUSHJ   PP,OUTL         ;YES,GIVE IT A ROUSING SENDOFF!\r
+       012703' 201340  000177          MOVEI C,177\r
+       012704' 260740  010667'         PUSHJ PP,OUTLST\r
+       012705' 201340  000102          MOVEI C,102\r
+       012706' 260740  010667'         PUSHJ PP,OUTLST         ;MARK BEGINNING OF CREF DATA\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 171-1\r
+MACRO  10      24-APR-78 02:11         USER-DEFINED SYMBOL SEARCH ROUTINES\r
+\r
+       012707' 201340  000177  CLSCR1: MOVEI C,177\r
+       012710' 260740  010667'         PUSHJ PP,OUTLST\r
+       012711' 201340  000103          MOVEI C,103\r
+       012712' 254000  010667'         JRST OUTLST             ;MARK END OF CREF DATA\r
+                               >       ;END OF REPEAT 1\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 172\r
+MACRO  10      24-APR-78 02:11         USER-DEFINED SYMBOL SEARCH ROUTINES\r
+\r
+       012713' 554200  013547' SEARCH: HLRZ    SX,SRCHX\r
+       012714' 550140  013547'         HRRZ    SDEL,SRCHX\r
+\r
+       012715' 311004  777777  SRCH1:  CAML    AC0,-1(SX)\r
+       012716' 254000  012725'         JRST    SRCH3\r
+       012717' 274200  000003  SRCH2:  SUB     SX,SDEL\r
+       012720' 242140  777777          LSH     SDEL,-1\r
+       012721' 317200  013553'         CAMG    SX,SYMTOP\r
+       012722' 326140  012715'         JUMPN   SDEL,SRCH1\r
+       012723' 326140  012717'         JUMPN   SDEL,SRCH2\r
+       012724' 364200  012761'         SOJA    SX,SRCHNO       ;NOT FOUND\r
+\r
+       012725' 316004  777777  SRCH3:  CAMN    AC0,-1(SX)\r
+       012726' 254000  012735'         JRST    SRCH4           ;NORMAL / FOUND EXIT\r
+       012727' 270200  000003          ADD     SX,SDEL\r
+       012730' 242140  777777          LSH     SDEL,-1\r
+       012731' 317200  013553'         CAMG    SX,SYMTOP\r
+       012732' 326140  012715'         JUMPN   SDEL,SRCH1\r
+       012733' 326140  012717'         JUMPN   SDEL,SRCH2\r
+       012734' 364200  012761'         SOJA    SX,SRCHNO       ;NOT FOUND\r
+\r
+       012735' 350017  000000  SRCH4:  AOS     0(PP)           ;SET FOR SKIP EXIT\r
+       012736' 205240  000004  SRCH5:  MOVSI ARG,SUPRBT        ;HE IS USING IT, TURN OFF BIT\r
+       012737' 412244  000000          ANDCAM ARG,(SX) ; IN THE TABLE\r
+       012740' 200244  000000  SRCH7:  MOVE ARG,0(SX)          ;FLAG AND VALUE TO ARG\r
+       012741' 135440  003372'         LDB     RC,RCPNTR       ;POINT 1,ARG,17\r
+       012742' 603240  000002          TLNE ARG,LELF   ;CHECK LEFT RELOCATE\r
+       012743' 661440  000001          TLO RC,1\r
+       012744' 550300  000005          HRRZ    V,ARG\r
+       012745' 603240  000010          TLNE ARG,SPTR   ;CHECK SPECIAL EXTESN POINTER\r
+       012746' 254000  012752'         JRST SRCH6\r
+       012747' 603240  004000          TLNE    ARG,PNTF\r
+       012750' 200305  000000          MOVE    V,0(ARG)                ;36BIT VALUE TO V\r
+       012751' 254000  013005'         JRST    SRCHOK\r
+       \r
+       012752' 200305  000000  SRCH6:  MOVE V,0(ARG)   ;VALUE\r
+       012753' 200445  000001          MOVE RC,1(ARG)  ;AND RELOC\r
+       012754' 603440  777776          TLNE RC,-2      ;CHECK AND SET EXTPNT\r
+       012755' 502440  013742'         HLLM RC,EXTPNT\r
+       012756' 602440  777776          TRNE RC,-2      \r
+       012757' 542440  013742'         HRRM RC,EXTPNT\r
+       012760' 254000  013005'         JRST    SRCHOK\r
+       012761' 336000  014056' SRCHNO: SKIPN   UNISCH+1        ;ALLOWED TO SEARCH OTHER TABLES\r
+       012762' 263740  000000          POPJ    PP,             ;NO, JUST RETURN\r
+       012763' 350300  014055'         AOS     V,UNISCH        ;GET NEXT INDEX TO TABLE\r
+       012764' 302300  000001          CAIE    V,1             ;FIRST TIME IN\r
+       012765' 254000  012774'         JRST    SRCHN1          ;YES, SAVE SYMBOL INFO\r
+       012766' 506200  014055'         HRLM    SX,UNISCH       ;SAVE SX AND SET FLAG\r
+       012767' 200240  013547'         MOVE    ARG,SRCHX       ;SEARCH POINTER\r
+       012770' 202240  014147'         MOVEM   ARG,UNISHX      ;TO A SAFE PLACE\r
+       012771' 540240  013552'         HRR     ARG,SYMBOL\r
+       012772' 504240  013553'         HRL     ARG,SYMTOP\r
+       012773' 202240  014135'         MOVEM   ARG,UNIPTR      ;STORE ALSO\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 172-1\r
+MACRO  10      24-APR-78 02:11         USER-DEFINED SYMBOL SEARCH ROUTINES\r
+\r
+       012774' 200306  014055' SRCHN1: MOVE    V,UNISCH(V)     ;GET TRUE INDEX\r
+       012775' 322300  013004'         JUMPE   V,SRCHKO        ;IF ZERO ALL TABLE SCANNED\r
+       012776' 200246  014147'         MOVE    ARG,UNISHX(V)   ;NEW SRCHX\r
+       012777' 202240  013547'         MOVEM   ARG,SRCHX       ;SET IT UP\r
+       013000' 200246  014135'         MOVE    ARG,UNIPTR(V)   ;SYMTOP,,SYMBOL\r
+       013001' 552240  013552'         HRRZM   ARG,SYMBOL\r
+       013002' 556240  013553'         HLRZM   ARG,SYMTOP\r
+       013003' 254000  012713'         JRST    SEARCH          ;TRY AGAIN\r
+\r
+       013004' 400240  000000  SRCHKO: SETZ    ARG,            ;CLEAR ARG SO ZERO STORED\r
+       013005' 336000  014055' SRCHOK: SKIPN   UNISCH          ;HAVE WE SEARCH OTHER TABLES\r
+       013006' 263740  000000          POPJ    PP,             ;NO, JUST RETURN\r
+       013007' 554200  014055' SYMBCK: HLRZ    SX,UNISCH       ;RESTORE SX\r
+       013010' 402000  014055'         SETZM   UNISCH          ;CLEAR SYMBCK FLAG\r
+       013011' 261740  000006          PUSH    PP,V            ;SAVE AN AC\r
+       013012' 200300  014147'         MOVE    V,UNISHX        ;SRCHX\r
+       013013' 202300  013547'         MOVEM   V,SRCHX         ;RESTORE ORIGINAL\r
+       013014' 200300  014135'         MOVE    V,UNIPTR        ;SYMTOP,,SYMBOL\r
+       013015' 552300  013552'         HRRZM   V,SYMBOL\r
+       013016' 556300  013553'         HLRZM   V,SYMTOP\r
+       013017' 322240  013032'         JUMPE   ARG,SRCHK2      ;TOTALLY UNDEFINED\r
+       013020' 261740  000011          PUSH    PP,RC           ;SAVE SOME ACCS\r
+       013021' 261740  000005          PUSH    PP,ARG\r
+       013022' 261740  013742'         PUSH    PP,EXTPNT\r
+       013023' 403240  013742'         SETZB   ARG,EXTPNT      ;CLEAR ALL SYMBOL DATA\r
+       013024' 403440  000006          SETZB   RC,V\r
+       013025' 260740  013036'         PUSHJ   PP,INSERT       ;INSERT SYMBOL IN TABLE\r
+       013026' 262740  013742'         POP     PP,EXTPNT       ;RESTORE ACCS ETC.\r
+       013027' 262740  000005          POP     PP,ARG\r
+       013030' 262740  000011          POP     PP,RC\r
+       013031' 202244  000000          MOVEM   ARG,(SX)        ;SET FLAGS AND VALUE AS IT SHOULD BE\r
+       013032' 262740  000006  SRCHK2: POP     PP,V\r
+       013033' 263740  000000          POPJ    PP,             ;RETURN\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 173\r
+MACRO  10      24-APR-78 02:11         USER-DEFINED SYMBOL SEARCH ROUTINES\r
+\r
+       013034' 603240  002100  INSERQ: TLNE    ARG,UNDF!VARF\r
+       013035' 403440  000006  INSERZ: SETZB   RC,V\r
+       013036' 312004  777777  INSERT: CAME    AC0,-1(SX)      ;ARE WE LOOKING AT MATCHING MNEMONIC?\r
+       013037' 254000  013047'         JRST    INSRT2          ;NO, JUST INSERT\r
+       013040' 321240  013044'         JUMPL   ARG,INSRT1      ;YES, BRANCH IF OPERAND\r
+       013041' 331004  000000          SKIPL   0(SX)           ;OPERATOR, ARE WE LOOKING AT ONE?\r
+       013042' 254000  013137'         JRST    UPDATE          ;YES, UPDATE\r
+       013043' 254000  013047'         JRST    INSRT2          ;NO, INSERT\r
+\r
+       013044' 337004  000000  INSRT1: SKIPG   0(SX)           ;OPERAND, ARE WE LOOKING AT ONE?\r
+       013045' 254000  013137'         JRST    UPDATE          ;YES, UPDATE\r
+       013046' 275200  000002          SUBI    SX,2            ;NO, MOVE UNDER OPERATOR AND INSERT\r
+       013047' 200140  013552' INSRT2: MOVE    SDEL,SYMBOL\r
+       013050' 275140  000002          SUBI    SDEL,2\r
+       013051' 313140  013377'         CAMLE   SDEL,FREE\r
+       013052' 254000  013055'         JRST    INSRT3\r
+       013053' 260740  010276'         PUSHJ   PP,XCEEDS\r
+       013054' 271140  002000          ADDI    SDEL,2000\r
+       013055' 202140  013552' INSRT3: MOVEM   SDEL,SYMBOL     ;MAKE ROOM FOR A TWO WORD ENTRY\r
+       013056' 505143  000002          HRLI    SDEL,2(SDEL)\r
+       013057' 251144  777776          BLT     SDEL,-2(SX)     ;PUSH EVERYONE DOWN TWO LOACTIONS\r
+       013060' 350020  013552'         AOS     @SYMBOL         ;INCREMENT THE SYMBOL COUNT\r
+       013061' 607440  777776          TLNN RC,-2      ;NEED SPECIAL?\r
+       013062' 602440  777776          TRNE RC,-2      ;LEFT OR RIGHT EXTERNAL?\r
+       013063' 254000  013104'         JRST INSRT5     ;YES, JUMP\r
+       013064' 607300  777777          TLNN    V,-1            ;SKIP IF V IS A 36BIT VALUE\r
+       013065' 254000  013074'         JRST    INSRT4          ;JUMP, ITS A 18BIT VALUE\r
+       013066' 350140  013377'         AOS     SDEL,FREE       ;36BIT, SO GET A CELL FROM FREE CORE\r
+       013067' 311140  013552'         CAML    SDEL,SYMBOL     ;MORE CORE NEEDED?\r
+       013070' 260740  010276'         PUSHJ   PP,XCEEDS       ;YES\r
+       013071' 541243  777777          HRRI    ARG,-1(SDEL)    ;POINTER TO ARG\r
+       013072' 202305  000000          MOVEM   V,0(ARG)        ;36BIT VALUE TO FREE CORE\r
+       013073' 665240  004000          TLOA    ARG,PNTF        ;NOTE THAT ARG IS APOINTER, NOT A 18BIT VALUE\r
+\r
+       013074' 540240  000006  INSRT4: HRR     ARG,V           ;18BIT VALUE TO ARG\r
+       013075' 137440  003372'         DPB     RC,RCPNTR       ;FIX RIGHT RELOCATION\r
+       013076' 603440  000001          TLNE RC,1\r
+       013077' 661240  000002          TLO ARG,LELF    ;FIX LEFT RELOCATION\r
+       013100' 202244  000000  INSRT6: MOVEM   ARG,0(SX)       ;INSERT FLAGS AND VALUE.\r
+       013101' 202004  777777          MOVEM   AC0,-1(SX)      ;INSERT SYMBOL NAME.\r
+       013102' 260740  013125'         PUSHJ   PP,SRCHI        ;INITILIAZE SRCHX\r
+       013103' 254000  012603'         JRST    QSRCH           ;EXIT THROUGH CREF\r
+       \r
+       013104' 201140  000002  INSRT5: MOVEI SDEL,2    ;GET TWO CELLS FROM FREE CORE\r
+       013105' 273140  013377'         ADDB SDEL,FREE\r
+       013106' 311140  013552'         CAML SDEL,SYMBOL;MORE CORE NEEDED?\r
+       013107' 260740  010276'         PUSHJ PP,XCEEDS ;YES\r
+       013110' 202443  777777          MOVEM RC,-1(SDEL)\r
+       013111' 541243  777776          HRRI ARG,-2(SDEL)       ;POINTER TO ARG\r
+       013112' 202305  000000          MOVEM V,0(ARG)\r
+       013113' 661240  000010          TLO ARG,SPTR    ;SET SPECIAL POINTER, POINTS TO TWO CELLS\r
+       013114' 254000  013100'         JRST INSRT6\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 174\r
+MACRO  10      24-APR-78 02:11         USER-DEFINED SYMBOL SEARCH ROUTINES\r
+\r
+       013115' 275200  000002  REMOVE: SUBI    SX,2            ;MOVE EVERYONE UP TWO LOCATIONS\r
+       013116' 200004  000000  REMOV1: MOVE    0(SX)\r
+       013117' 202004  000002          MOVEM   2(SX)           ;OVERWRITE THE DELETED SYMBOL\r
+       013120' 312200  013552'         CAME    SX,SYMBOL       ;SKIP WHEN DONE\r
+       013121' 364200  013116'         SOJA    SX,REMOV1\r
+       013122' 271200  000002          ADDI    SX,2\r
+       013123' 202200  013552'         MOVEM   SX,SYMBOL\r
+       013124' 370004  000000          SOS     0(SX)           ;DECREMENT THE SYMBOL COUNT\r
+\r
+       013125' 201100  000000  SRCHI:  MOVEI   AC2,0           ;THIS CODE SETS UP SRCHX\r
+       013126' 140120  013552'         FAD     AC2,@SYMBOL\r
+       013127' 242100  777745          LSH     AC2,-^D27\r
+       013130' 201040  001000          MOVEI   AC1,1000\r
+       013131' 242042  777421          LSH     AC1,-357(AC2)\r
+       013132' 542040  013547'         HRRM    AC1,SRCHX\r
+       013133' 242040  000001          LSH     AC1,1\r
+       013134' 270040  013552'         ADD     AC1,SYMBOL\r
+       013135' 506040  013547'         HRLM    AC1,SRCHX\r
+       013136' 263740  000000          POPJ    PP,             ;SRCHX=XWD <SYMTBL+LENGTH/2>,LENGTH/4\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 175\r
+MACRO  10      24-APR-78 02:11         USER-DEFINED SYMBOL SEARCH ROUTINES\r
+\r
+       013137' 137440  003372' UPDATE: DPB     RC,RCPNTR       ;FIX RIGHT RELOCATION\r
+       013140' 603240  000010          TLNE ARG,SPTR   ;SKIP IF THERE IS NO SPECIAL POINTER\r
+       013141' 254000  013171'         JRST UPDAT4     ;YES, USE THE TWO CELLS\r
+       013142' 607440  777776          TLNN RC,-2      ;NEED TO CHANGE\r
+       013143' 602440  777776          TRNE RC,-2      ;ANY CURRENT EXTERNS?\r
+       013144' 254000  013175'         JRST UPDAT5     ;YES ,JUMP\r
+       013145' 621240  000002          TLZ ARG,LELF    ;CLEAR LELF\r
+       013146' 603440  000001          TLNE RC,1       ;LEFT RELOCATABLE?\r
+       013147' 661240  000002          TLO ARG,LELF    ;YES, SET THE FLAG\r
+       013150' 603240  004000          TLNE    ARG,PNTF        ;WAS THERE A 36BIT VALUE?\r
+       013151' 254000  013164'         JRST    UPDAT2          ;YES, USE IT.\r
+       013152' 603300  777777          TLNE    V,-1            ;NO,IS THERE A 36BIT VALUE?\r
+       013153' 254000  013157'         JRST    UPDAT1          ;YES, GET A CELL\r
+       013154' 540240  000006          HRR     ARG,V           ;NO, USE RH OF ARG\r
+       013155' 202244  000000  UPDAT3: MOVEM   ARG,0(SX)       ;OVERWRITE THE ONE IN THE TABLE\r
+       013156' 263740  000000          POPJ    PP,             ;AND EXIT\r
+\r
+       013157' 350140  013377' UPDAT1: AOS     SDEL,FREE       ;GET ONE CELL\r
+       013160' 311140  013552'         CAML    SDEL,SYMBOL     ;NEED MORE CORE?\r
+       013161' 260740  010276'         PUSHJ   PP,XCEEDS       ;YES\r
+       013162' 541243  777777          HRRI    ARG,-1(SDEL)    ;POINTER TO ARG\r
+       013163' 661240  004000          TLO     ARG,PNTF        ;AND NOTE IT.\r
+       013164' 603240  001000  UPDAT2: TLNE ARG,EXTF   ;IS THERE A EXTERNAL?\r
+       013165' 254000  013155'         JRST UPDAT3             ;YES, - JUST SAVE A LOCATION\r
+       013166' 202244  000000          MOVEM   ARG,0(SX)       ;NO, OVERWRITE THE POINTER IN THE TABLE\r
+       013167' 202305  000000          MOVEM   V,0(ARG)        ;STORE VALUE AS A 36BIT VALUE\r
+       013170' 263740  000000          POPJ    PP,             ;AND EXIT\r
+       \r
+       013171' 202244  000000  UPDAT4: MOVEM ARG,0(SX) ;WE HAVE TWO CELLS, WE USE THEM\r
+       013172' 202305  000000          MOVEM V,0(ARG)  ;SAVE AS 36BIT VALUE\r
+       013173' 202445  000001          MOVEM RC,1(ARG) ;SAVE RELOCATION BITS\r
+       013174' 263740  000000          POPJ PP,                ;AND EXIT\r
+\r
+       013175' 201140  000002  UPDAT5: MOVEI SDEL,2            ;THERE IS A EXTERNAL\r
+       013176' 273140  013377'         ADDB SDEL,FREE          ;SO WE NEED TWO LOACTIONS\r
+       013177' 311140  013552'         CAML SDEL,SYMBOL        ;NEED MORE CORE?\r
+       013200' 260740  010276'         PUSHJ PP,XCEEDS         ;YES\r
+       013201' 202443  777777          MOVEM RC,-1(SDEL)       ;SAVE RELOCATION BITS\r
+       013202' 541243  777776          HRRI ARG,-2(SDEL)       ;SAVE THE POINTER IN ARG\r
+       013203' 202305  000000          MOVEM V,0(ARG)          ;SAVE A 36BIT VALUE\r
+       013204' 661240  000010          TLO ARG,SPTR            ;SET SPECIAL PNTR FLAG\r
+       013205' 621240  004000          TLZ ARG,PNTF            ;CLEAR POINTER FLAG\r
+       013206' 254000  013155'         JRST UPDAT3             ;SAVE THE POINTER AND EXIT\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 176\r
+MACRO  10      24-APR-78 02:11         CONSTANTS\r
+\r
+                                       SUBTTL  CONSTANTS\r
+\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 177\r
+MACRO  10      24-APR-78 02:11         PHASED CODE\r
+\r
+                                       SUBTTL PHASED CODE\r
+                                     SUBTTL PHASED CODE\r
+       013207'                 LSTFIL: BLOCK 1\r
+       013210' 400000  000000          SIXBIT /@/      ;SYMBOL TO STOP PRINTING\r
+       013211'                 TAG:    BLOCK   1\r
+       013212' 001300  400000          SIXBIT  / + @/\r
+       013213'                 TABI:\r
+       013213' 000221  104422          BYTE    (7) 0, 11, 11, 11, 11\r
+       013214'                 SEQNO:  BLOCK   1\r
+       013215' 201004  020100          ASCIZ   /       /\r
+       013216' 201000  000000\r
+       013217' 000000  000014  BININI: EXP     B\r
+       013220'                 BINDEV: BLOCK   1\r
+       013221' 013325' 000000          XWD     BINBUF,0\r
+       013222' 000000  000001  LSTINI: EXP     AL\r
+       013223'                 LSTDEV: BLOCK   1\r
+       013224' 013322' 000000          XWD     LSTBUF,0\r
+                               IFN CCLSW,<\r
+       013225' 000000  000016  NUNINI: EXP     DMP\r
+       013226'                 NUNDEV: BLOCK   1\r
+       013227' 000000  000000          XWD     0,0\r
+       013230' 000000  000001  RPGINI: EXP     AL\r
+       013231'                 RPGDEV: BLOCK 1\r
+       013232' 000000  014106'         XWD 0,CTLBLK\r
+                               >\r
+       013233' 000000  000000  INDEVI: EXP     A\r
+       013234'                 INDEV:  BLOCK   1\r
+       013235' 000000  013330'         XWD     0,IBUF\r
+       013236' 202511  135232  DBUF:   ASCIZ   / TI:ME DY-MON-YR PAGE /\r
+       013237' 425010  454532\r
+       013240' 466371  626662\r
+       013241' 511012  040616\r
+       013242' 425000  000000\r
+       013243' 046330  141644  VBUF:   ASCIZ   /       MACRO / ;MUST BE LAST LOCATIONS IN BLOCK\r
+       013244' 475000  000000\r
+       013245'                         BLOCK   3       ;ALLOW FOR LONG TITLE\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 178\r
+MACRO  10      24-APR-78 02:11         STORAGE CELLS\r
+\r
+                               SUBTTL  STORAGE CELLS\r
+\r
+       013250'                 PASS1I:\r
+\r
+       013250'                 RP:     BLOCK   1\r
+\r
+                               IFE CCLSW,<CTIBUF:      BLOCK   3\r
+                               CTOBUF: BLOCK   3\r
+                               >\r
+       013251'                 IFN CCLSW,<CTLBUF:      BLOCK   <CTLSIZ+5>/5\r
+                               >\r
+       013322'                 LSTBUF: BLOCK   3\r
+       013325'                 BINBUF: BLOCK   3\r
+       013330'                 IBUF:   BLOCK   3\r
+       013333'                 IFN CCLSW,<NUNDIR:>\r
+       013333'                 LSTDIR: BLOCK   4\r
+       013337'                 BINDIR: BLOCK   4\r
+       013343'                 INDIR:  BLOCK   4\r
+\r
+       013347'                 ACDELX:                         ;LEFT HALF\r
+       013347'                 BLKTYP: BLOCK   1               ;RIGHT HALF\r
+\r
+       013350'                 COUTX:  BLOCK   1\r
+       013351'                 COUTY:  BLOCK   1\r
+       013352'                 COUTP:  BLOCK   1\r
+       013353'                 COUTRB: BLOCK   1\r
+       013354'                 COUTDB: BLOCK   ^D18\r
+\r
+       013376'                 ERRCNT: BLOCK   1\r
+       013377'                 FREE:   BLOCK   1\r
+                               IFN RENTSW,<HIGH1:      BLOCK 1\r
+                               HISNSW: BLOCK   1\r
+                               SVTYP3: BLOCK   1\r
+                               HMIN:   BLOCK   1       ;START OF HIGH SEG. IN TWO SEG. PROG.>\r
+       013400'                 IFBLK:  BLOCK   .IFBLK\r
+       013424'                 IFBLKA: BLOCK   .IFBLK\r
+       013450'                 LADR:   BLOCK   1\r
+       013451'                 NCOLLS: BLOCK   1\r
+       013452'                 LIMBO:  BLOCK   1\r
+       013453'                 LBUFP:  BLOCK   1\r
+       013454'                 LBUF:   BLOCK   <.CPL+5>/5\r
+       013476'                         BLOCK 1\r
+       013477'                 VARHD:  BLOCK   1\r
+       013500'                 VARHDX: BLOCK   1\r
+                               IFN WFWSW,<LVARLC:      BLOCK 1>\r
+\r
+       013501'                 LITAB:  BLOCK   1\r
+       013502'                 LITABX: BLOCK   1\r
+       013503'                         BLOCK   1\r
+       013504'                 LITHD:  BLOCK   1\r
+       013505'                 LITHDX: BLOCK   1\r
+       013506'                 LITCNT: BLOCK   1\r
+       013507'                 LITNUM: BLOCK   1\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 178-1\r
+MACRO  10      24-APR-78 02:11         STORAGE CELLS\r
+\r
+\r
+       013510'                 LOOKX:  BLOCK   1\r
+       013511'                 NEXT:   BLOCK   1\r
+       013512'                 OUTSW:  BLOCK   1\r
+       013513'                 PDP:    BLOCK   1\r
+       013514'                 RECCNT: BLOCK   1\r
+       013515'                 SAVBLK: BLOCK   RC\r
+       013526'                 SAVERC: BLOCK   1\r
+       013527'                 SBUF:   BLOCK   .SBUF/5\r
+       013547'                 SRCHX:  BLOCK   1\r
+       013550'                 SUBTTX: BLOCK   1\r
+       013551'                 SVSYM:  BLOCK   1\r
+       013552'                 SYMBOL: BLOCK   1\r
+       013553'                 SYMTOP: BLOCK   1\r
+       013554'                 SYMCNT: BLOCK 1\r
+\r
+       013555'                 STPX:   BLOCK   1\r
+       013556'                 STPY:   BLOCK   1\r
+       013557'                 STCODE: BLOCK   .STP\r
+       013627'                 STOWRC: BLOCK   .STP\r
+\r
+       013677'                 TABP:   BLOCK   1\r
+       013700'                 TCNT:   BLOCK   1               ;COUNT OF CHARS. LEFT IN TBUF\r
+       013701'                 TBUF:   BLOCK   .TBUF/5\r
+       013721'                 DEVBUF: BLOCK   6               ;STORE NAME.EXT CREATION DATE AND TIME\r
+       013727'                 TYPERR: BLOCK   1\r
+       013730'                 IONSYM: BLOCK   1       ;-1 SUPRESS LISTING OF SYMBOLS\r
+       013731'                 PRGPTR: BLOCK   1       ;POINTER TO CHAIN OF PRGEND BLOCKS\r
+       013732'                 ENTERS: BLOCK   1       ;-1 WHEN ENTERS HAVE BEEN DONE\r
+       013733'                 UNIVSN: BLOCK   1       ;-1 WHEN A UNIVERSAL SEEN\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 179\r
+MACRO  10      24-APR-78 02:11         STORAGE CELLS\r
+\r
+       013734'                 PASS2I:\r
+\r
+       013734'                 ABSHI:  BLOCK 1\r
+       013735'                 HIGH:   BLOCK   1\r
+                               IFN RENTSW,<HHIGH: BLOCK 1      ;SAVE BREAK OF HIGH SEG. IN TWO SEG PROG.>\r
+       013736'                 ACDEVX: BLOCK   1\r
+       013737'                 CPL:    BLOCK   1\r
+       013740'                 CTLSAV: BLOCK   1\r
+       013741'                 CTLS1:  BLOCK   1\r
+       013742'                 EXTPNT: BLOCK   1\r
+       013743'                 INTENT: BLOCK   1\r
+       013744'                 INREP:  BLOCK 1\r
+       013745'                 INDEF:  BLOCK 1\r
+       013746'                 INTXT:  BLOCK 1\r
+       013747'                 INCND:  BLOCK   1\r
+       013750'                 CALNAM: BLOCK   1\r
+       013751'                 CALPG:  BLOCK 1\r
+       013752'                 CALSEQ: BLOCK 1\r
+       013753'                 DEFPG:  BLOCK 1\r
+       013754'                 DEFSEQ: BLOCK 1\r
+       013755'                 LITPG:  BLOCK 1\r
+       013756'                 LITSEQ: BLOCK 1\r
+       013757'                 REPPG:  BLOCK 1\r
+       013760'                 REPSEQ: BLOCK 1\r
+       013761'                 TXTPG:  BLOCK 1\r
+       013762'                 TXTSEQ: BLOCK 1\r
+       013763'                 CNDPG:  BLOCK   1\r
+       013764'                 CNDSEQ: BLOCK   1\r
+       013765'                 IRPCNT: BLOCK   1\r
+       013766'                 IRPARG: BLOCK   1\r
+       013767'                 IRPARP: BLOCK   1\r
+       013770'                 IRPCF:  BLOCK   1\r
+       013771'                 IRPPOI: BLOCK   1\r
+       013772'                 IRPSW:  BLOCK   1\r
+                               IFN WFWSW,<FIXLNK:      BLOCK 1>\r
+       013773'                 LITLVL: BLOCK   1\r
+       013774'                 LITLBL: BLOCK   1               ;NAME OF LABEL DEFINED INSIDE A LITERAL\r
+\r
+       013775'                 ASGBLK: BLOCK   1\r
+       013776'                 LOCBLK: BLOCK   1\r
+\r
+       013777'                 LOCA:   BLOCK   1\r
+       014000'                 LOCO:   BLOCK   1\r
+       014001'                 RELLOC: BLOCK   1\r
+       014002'                 ABSLOC: BLOCK   1\r
+       014003'                 LPP:    BLOCK   1\r
+       014004'                 MODA:   BLOCK   1\r
+       014005'                 MODLOC: BLOCK   1\r
+       014006'                 MODO:   BLOCK   1\r
+       014007'                 IFN CCLSW,<OTBUF:       BLOCK 2>\r
+       014011'                 OUTSQ:  BLOCK 2\r
+       014013'                 PAGEN.: BLOCK   1\r
+       014014'                 PPTEMP: BLOCK   1\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 179-1\r
+MACRO  10      24-APR-78 02:11         STORAGE CELLS\r
+\r
+       014015'                 PPTMP1: BLOCK   1\r
+       014016'                 PPTMP2: BLOCK   1\r
+\r
+       014017'                 REPCNT: BLOCK   1\r
+       014020'                 REPEXP: BLOCK   1\r
+       014021'                 REPPNT: BLOCK   1\r
+       014022'                 RPOLVL: BLOCK   1\r
+       014023'                 R1BCNT: BLOCK 1\r
+       014024'                 R1BCHK: BLOCK 1\r
+       014025'                 R1BBLK: BLOCK .R1B\r
+       014047'                 R1BLOC: BLOCK 1\r
+       014050'                 RIMLOC: BLOCK   1\r
+       014051'                 TAGINC: BLOCK   1\r
+       014052'                 VECREL: BLOCK   1\r
+       014053'                 VECTOR: BLOCK   1\r
+       014054'                 .TEMP:  BLOCK   1               ;TEMPORARY STORAGE\r
+       014055'                 UNISCH: BLOCK   .UNIV           ;SEARCH TABLE FOR UNIVERSALS\r
+       014067'                 SQFLG:  BLOCK 1\r
+       014070'                 ARGF:   BLOCK   1\r
+       014071'                 MACENL: BLOCK   1\r
+       014072'                 MACLVL: BLOCK   1\r
+       014073'                 MACPNT: BLOCK   1\r
+       014074'                 WWRXX:  BLOCK   1\r
+       014075'                 RCOUNT: BLOCK   1               ;COUNT OF WORDS STILL TO READ IN LEAF\r
+       014076'                 WCOUNT: BLOCK   1               ;COUNT OF WORDS STILL FREE IN LEAF\r
+       014077'                 PASS2Z:                         ;ONLY CLEAR TO HERE ON PRGEND\r
+       014077'                 LSTSYM: BLOCK   1\r
+       014100'                 PAGENO: BLOCK   1\r
+       014101'                 SEQNO2: BLOCK 1\r
+       014102'                 PASS2X:\r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 180\r
+MACRO  10      24-APR-78 02:11         MULTI-ASSEMBLY STORAGE CELLS\r
+\r
+                               SUBTTL  MULTI-ASSEMBLY STORAGE CELLS\r
+\r
+       014102'                 LSTPGN: BLOCK 1\r
+                               IFN WFWSW,<ARAYP:       BLOCK 1>\r
+       014103'                 HDAS:   BLOCK 1\r
+       014104'                 IFN CCLSW,<EXTMP:       BLOCK 1 ;HOLDS EXT OF COMMAND FILE (RH)\r
+       014105'                 SAVFF:  BLOCK   1\r
+       014106'                 CTLBLK: BLOCK   3\r
+       014111'                 CTIBUF: BLOCK   3\r
+       014114'                 CTOBUF: BLOCK   3>\r
+       014117'                 MACSIZ: BLOCK   1               ;INITIAL SIZE OF LOW SEG\r
+       014120'                 UNISIZ: BLOCK   1               ;TOP OF BUFFERS AND STACKS\r
+       014121'                 UNITOP: BLOCK   1               ;TOP OF UNIVERSAL SYMBOL TABLE\r
+       014122'                 UNIVNO: BLOCK   1               ;NUMBER OF UNIVERSALS SEEN\r
+       014123'                 UNITBL: BLOCK   .UNIV           ;TABLE OF UNIVERSAL NAMES\r
+       014135'                 UNIPTR: BLOCK   .UNIV           ;TABLE OF SYMBOL POINTERS\r
+       014147'                 UNISHX: BLOCK   .UNIV           ;TABLE OF SRCHX POINTERS\r
+       014161'                         VAR                     ;CLEAR VARIABLES\r
+\r
+       014161'                 JOBFFI: BLOCK   203*NUMBUF+1            ;INPUT BUFFER PLUS ONE\r
+\r
+                       006564'         END     BEG\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 015533\r
+\r
+12K CORE USED\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 181\r
+MACRO  10      24-APR-78 02:11         SYMBOL TABLE\r
+\r
+A              000000  SPD\r
+ABSHI          013734' \r
+ABSLOC         014002' \r
+AC0            000000  SPD\r
+AC1            000001  \r
+AC2            000002  \r
+ACDEL          000004  SPD\r
+ACDELX         013347' \r
+ACDEV          000001  SPD\r
+ACDEVX         013736' \r
+ACEXT          000003  SPD\r
+ACFILE         000002  SPD\r
+ACPNTR         000005  SPD\r
+ACPPN          000004  SPD\r
+ADDF           100000  SPD\r
+ADDUNV         005176' \r
+AL             000001  SPD\r
+ANGLB          000662' \r
+ANGLB1         000673' \r
+ANGLB2         000674' \r
+APRENB 047000  000016  \r
+ARG            000005  \r
+ARGF           014070' \r
+ARPGSW         100000  SPD\r
+ASC10          004607' \r
+ASC20          004625' \r
+ASC30          004631' \r
+ASC50          004642' \r
+ASC55          004641' \r
+ASC60          004644' \r
+ASCII0         004606' \r
+ASGBLK         013775' \r
+ASSEM1         000104' \r
+ASSEM2         000115' \r
+ASSEMB         000077' \r
+ASSIG1         004126' \r
+ASSIG2         004154' \r
+ASSIG3         004162' \r
+ASSIG5         004136' \r
+ASSIG6         004142' \r
+ASSIG7         004116' \r
+ASSIGN         004112' \r
+ATOM           000334' \r
+ATOM1          000336' \r
+B              000014  SPD\r
+BEG            006564' \r
+BIN            000001  SPD\r
+BINBUF         013325' \r
+BINDEV         013220' \r
+BINDIR         013337' \r
+BININI         013217' \r
+BINSE2         007061' \r
+BINSET         007022' \r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 181-1\r
+MACRO  10      24-APR-78 02:11         SYMBOL TABLE\r
+\r
+BLKTYP         013347' \r
+BLOCK0         003415' \r
+BLOCK1         003422' \r
+BLOCK2         003424' \r
+BOUT           002517' \r
+BOUT20         002537' \r
+BOUT30         002553' \r
+BOUT3I         002574' \r
+BOUT40         002613' \r
+BOUT50         002640' \r
+BOUT60         002660' \r
+BOUT70         002647' \r
+BOUT80         002662' \r
+BYPAS1         004543' \r
+BYPAS2         004544' \r
+BYPASS         004543' \r
+BYTAB          010073' \r
+BYTE0          004722' \r
+BYTE1          004730' \r
+BYTE2          004737' \r
+BYTE3          004746' \r
+C              000007  \r
+CALLI0         012444' \r
+CALLM          005705' \r
+CALNAM         013750' \r
+CALNTH         000112  SPD\r
+CALPG          013751' \r
+CALSEQ         013752' \r
+CALTBL         012443' \r
+CC     742743  741000  \r
+CCLSW          000001  SPD\r
+CELL           000363' \r
+CELL1          000370' \r
+CELLSF         000362' \r
+CHAR           000002  SPD\r
+CHARAC         001415' \r
+CHARAX         001443' \r
+CHARL          001445' \r
+CHARL1         001453' \r
+CLSC3          012674' \r
+CLSCR1         012707' \r
+CLSCR2         012676' \r
+CLSCRF         012674' \r
+CNDPG          013763' \r
+CNDSEQ         013764' \r
+COMSW          014054' \r
+CONBIT         020000  SPD\r
+CORE   047000  000011  \r
+COUT           002724' \r
+COUTD          002731' \r
+COUTD2         002736' \r
+COUTDB         013354' \r
+COUTI          002743' \r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 181-2\r
+MACRO  10      24-APR-78 02:11         SYMBOL TABLE\r
+\r
+COUTP          013352' \r
+COUTRB         013353' \r
+COUTX          013350' \r
+COUTY          013351' \r
+CPEEK          005565' \r
+CPEEK1         005574' \r
+CPL            013737' \r
+CPOPJ          003447' \r
+CPOPJ1         003446' \r
+CR             000015  SPD\r
+CREF           012621' \r
+CREF2          012651' \r
+CREF3          012641' \r
+CREFSW         002000  SPD\r
+CRFHD1         012672' \r
+CRFHDR         012664' \r
+CRLF           010247' \r
+CRPGSW         001000  SPD\r
+CS             000010  \r
+CSTAT          001456' \r
+CTIBUF         014111' \r
+CTL            000000  SPD\r
+CTL2           000004  SPD\r
+CTLBLK         014106' \r
+CTLBUF         013251' \r
+CTLS1          013741' \r
+CTLSAV         013740' \r
+CTLSET         006661' \r
+CTLSIZ         000310  SPD\r
+CTOBUF         014114' \r
+CV             000000  SPD\r
+DATE   047000  000014  \r
+DATOUT         010724' \r
+DBUF           013236' \r
+DCFSW          000040  SPD\r
+DDTOUT 047000  000003  \r
+DECERR         006560' \r
+DEF02          005420' \r
+DEF10          005435' \r
+DEF12          005445' \r
+DEF20          005450' \r
+DEF24          005463' \r
+DEF25          005513' \r
+DEF26          005504' \r
+DEF30          005522' \r
+DEF31          005523' \r
+DEF32          005524' \r
+DEF33          005527' \r
+DEF35          005557' \r
+DEF36          005551' \r
+DEF40          005602' \r
+DEF42          005604' \r
+DEF44          005623' \r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 181-3\r
+MACRO  10      24-APR-78 02:11         SYMBOL TABLE\r
+\r
+DEF46          005625' \r
+DEF48          005642' \r
+DEF50          005645' \r
+DEF51          005652' \r
+DEF70          005656' \r
+DEF80          005663' \r
+DEF81          005670' \r
+DEFCRS         000040  SPD\r
+DEFIN0         005405' \r
+DEFPG          013753' \r
+DEFSEQ         013754' \r
+DELETE         000066' \r
+DEPHA0         004104' \r
+DEVBUF         013721' \r
+DEVCHR 047000  000004  \r
+DEVICE         007551' \r
+DEVNAM         007556' \r
+DIRBIT         000004  SPD\r
+DISBIT         002000  SPD\r
+DMP            000016  SPD\r
+DMPBIN         010413' \r
+DMPLST         010422' \r
+DNC            003051' \r
+DP1            010345' \r
+DSEND          006405' \r
+DSKBIT         200000  SPD\r
+DSTOW          002776' \r
+DTAB           010740' \r
+DTABIT         000100  SPD\r
+EINIT          010162' \r
+END0           003123' \r
+ENDP2          003216' \r
+ENDP2A         003262' \r
+ENDP2B         003307' \r
+ENDP2D         003270' \r
+ENDP2Q         003226' \r
+ENDP2W         003224' \r
+ENTERS         013732' \r
+ENTF           000200  SPD\r
+ENTRDN         007351' \r
+EOL            000033  SPD\r
+EOT            007460' \r
+EOUT           002130' \r
+EOUT1          002133' \r
+EOUT2          002141' \r
+EOUT3          002150' \r
+EOUT4          002160' \r
+ER             000014  SPD\r
+ERRA           040000  SPD\r
+ERRAX          003400' \r
+ERRBIT         740000  SPD\r
+ERRCB          010166' \r
+ERRCF          010171' \r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 181-4\r
+MACRO  10      24-APR-78 02:11         SYMBOL TABLE\r
+\r
+ERRCL          010164' \r
+ERRCM          007603' \r
+ERRCNT         013376' \r
+ERRD           020000  SPD\r
+ERRE           000040  SPD\r
+ERRFIN         010176' \r
+ERRL           010000  SPD\r
+ERRLST         010430' \r
+ERRM           000020  SPD\r
+ERRMS1         010150' \r
+ERRMS2         010153' \r
+ERRMS3         010156' \r
+ERRN           000400  SPD\r
+ERRNE          010115' \r
+ERRNE0         010116' \r
+ERRNE1         010126' \r
+ERRNE2         010140' \r
+ERRNE3         010145' \r
+ERRO           000200  SPD\r
+ERRORS         777760  SPD\r
+ERRP           000100  SPD\r
+ERRQ           200000  SPD\r
+ERRQSW         000010  SPD\r
+ERRR           004000  SPD\r
+ERRTYP         010173' \r
+ERRU           002000  SPD\r
+ERRV           001000  SPD\r
+ERRX           100000  SPD\r
+EVADR          004474' \r
+EVAL10         004034' \r
+EVALC3         001073' \r
+EVALCM         001066' \r
+EVALEX         001077' \r
+EVALHA         001065' \r
+EVALXQ         004046' \r
+EVATOM         001102' \r
+EVERRU         001157' \r
+EVERRZ         001156' \r
+EVGETD         001177' \r
+EVMAC          001116' \r
+EVNUM          001204' \r
+EVOP           001131' \r
+EVOPD          001141' \r
+EVOPS          001135' \r
+EVOPX          001154' \r
+EVPUSH         001214' \r
+EVTSTR         001173' \r
+EVTSTS         001161' \r
+EVXCT          001221' \r
+EVXCT1         001236' \r
+EXIT   047000  000012  \r
+EXPRES         004556' \r
+EXTER0         004004' \r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 181-5\r
+MACRO  10      24-APR-78 02:11         SYMBOL TABLE\r
+\r
+EXTER1         004006' \r
+EXTER2         004015' \r
+EXTER3         004032' \r
+EXTER4         004030' \r
+EXTF           001000  SPD\r
+EXTMP          014104' \r
+EXTPNT         013742' \r
+FF             000014  SPD\r
+FINDEV         007412' \r
+FINEXT         007376' \r
+FINIS          007225' \r
+FLDSW          400000  SPD\r
+FR             000015  \r
+FREE           013377' \r
+FSNSW          100000  SPD\r
+FTDISK         000001  SPD\r
+GCHAR          006451' \r
+GCHARQ         006450' \r
+GETCHR         001363' \r
+GETCS          001404' \r
+GETCS1         001406' \r
+GETCS2         001403' \r
+GETDE1         000443' \r
+GETDE2         000453' \r
+GETDE3         000445' \r
+GETDEL         000442' \r
+GETDS          006345' \r
+GETDS1         006377' \r
+GETE           006600' \r
+GETED          006604' \r
+GETIOC         007511' \r
+GETIT          005163' \r
+GETSE0         007167' \r
+GETSE1         007172' \r
+GETSE2         007205' \r
+GETSET         007142' \r
+GETSY1         001055' \r
+GETSY2         001056' \r
+GETSY3         001057' \r
+GETSYM         001043' \r
+GETTOP         003533' \r
+GETU           006612' \r
+GETV           006620' \r
+GOSET          006742' \r
+GOSET1         006750' \r
+GOSET2         006772' \r
+GOTEND         007447' \r
+GTSTOW         003015' \r
+HDAS           014103' \r
+HIGH           013735' \r
+HIGHQ          004235' \r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 181-6\r
+MACRO  10      24-APR-78 02:11         SYMBOL TABLE\r
+\r
+HIGHQ1         004235' \r
+HISEG0         003447' \r
+HLPMES         007652' \r
+HOUT           002712' \r
+HT             000011  SPD\r
+IB             000013  SPD\r
+IBUF           013330' \r
+IF             003601' \r
+IFB0           003632' \r
+IFB1           003633' \r
+IFB2           003653' \r
+IFB3           003652' \r
+IFBLK          013400' \r
+IFBLKA         013424' \r
+IFCL           003717' \r
+IFCLR          003736' \r
+IFCLR1         003745' \r
+IFDEF0         003667' \r
+IFEX1          003615' \r
+IFEX2          003753' \r
+IFEXIT         003614' \r
+IFIDN0         003677' \r
+IFPASS         003627' \r
+IFPOP          003607' \r
+IFSET          003610' \r
+IFXCT          003611' \r
+IIISW          000000  SPD\r
+INCND          013747' \r
+INDEF          013745' \r
+INDEV          013234' \r
+INDEVI         013233' \r
+INDIR          013343' \r
+INDSW          020000  SPD\r
+INHERE         000017' \r
+INREP          013744' \r
+INSERQ         013034' \r
+INSERT         013036' \r
+INSERZ         013035' \r
+INSET          007242' \r
+INSET1         007262' \r
+INSET2         007277' \r
+INSET3         007300' \r
+INSET4         007312' \r
+INSETI         007425' \r
+INSRT1         013044' \r
+INSRT2         013047' \r
+INSRT3         013055' \r
+INSRT4         013074' \r
+INSRT5         013104' \r
+INSRT6         013100' \r
+INTENT         013743' \r
+INTER0         003766' \r
+INTER1         003767' \r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 181-7\r
+MACRO  10      24-APR-78 02:11         SYMBOL TABLE\r
+\r
+INTER3         003777' \r
+INTF           000400  SPD\r
+INTXT          013746' \r
+INZ            003356' \r
+IO             000014  \r
+IOBKTL         040000  SPD\r
+IOCREF         000400  SPD\r
+IODERR         200000  SPD\r
+IODTER         100000  SPD\r
+IOENDL         000200  SPD\r
+IOIMPM         400000  SPD\r
+IOIOPF         000020  SPD\r
+IOMAC          010000  SPD\r
+IOMSTR         200000  SPD\r
+IONCRF         002000  SPD\r
+IONSYM         013730' \r
+IOP            004443' \r
+IOPAGE         000100  SPD\r
+IOPALL         004000  SPD\r
+IOPROG         040000  SPD\r
+IORPTC         000004  SPD\r
+IORSET         003411' \r
+IOSALL         000001  SPD\r
+IOSCR          000001  SPD\r
+IOSET          003404' \r
+IOTLSN         000002  SPD\r
+IOWD0          004710' \r
+IRP0           006173' \r
+IRP10          006175' \r
+IRP20          006235' \r
+IRPARG         013766' \r
+IRPARP         013767' \r
+IRPCF          013770' \r
+IRPCNT         013765' \r
+IRPEND         006325' \r
+IRPPOI         013771' \r
+IRPPOP         006331' \r
+IRPSE1         006270' \r
+IRPSE2         006277' \r
+IRPSE3         006307' \r
+IRPSE4         006312' \r
+IRPSET         006254' \r
+IRPSW          013772' \r
+JOB41          000057' EXT\r
+JOBAPR         007143' EXT\r
+JOBDDT         000000  EXT\r
+JOBERR         010206' EXT\r
+JOBFF          007302' EXT\r
+JOBFFI         014161' \r
+JOBREL         010304' EXT\r
+JOBS41         000122  INT\r
+JOBSA          007013' EXT\r
+JOBSYM         000000  EXT\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 181-8\r
+MACRO  10      24-APR-78 02:11         SYMBOL TABLE\r
+\r
+JOBVER         000137  SPD\r
+JUMP1  321640  000000  \r
+JUMP2  325640  000000  \r
+JUMPAD 321600  000000  \r
+JUMPCM 321400  000000  \r
+JUMPNC 325400  000000  \r
+JUMPOC 325600  000000  \r
+LABEL          000253' \r
+LABEL0         000266' \r
+LABEL1         000301' \r
+LABEL2         000310' \r
+LABEL3         000313' \r
+LABEL4         000317' \r
+LABEL5         000321' \r
+LABEL6         000305' \r
+LABEL7         000323' \r
+LADR           013450' \r
+LBUF           013454' \r
+LBUFP          013453' \r
+LELF           000002  SPD\r
+LENGTH         000004  \r
+LETTE1         000410' \r
+LETTE2         000414' \r
+LETTE3         000416' \r
+LETTE4         000435' \r
+LETTER         000407' \r
+LF             000012  SPD\r
+LIMBO          013452' \r
+LIT0           003454' \r
+LIT1           003456' \r
+LIT20          003466' \r
+LIT20A         003476' \r
+LIT21          003477' \r
+LIT22          003511' \r
+LIT24          003522' \r
+LITAB          013501' \r
+LITABX         013502' \r
+LITCNT         013506' \r
+LITF           200000  SPD\r
+LITHD          013504' \r
+LITHDX         013505' \r
+LITI           003526' \r
+LITLBL         013774' \r
+LITLVL         013773' \r
+LITNUM         013507' \r
+LITPG          013755' \r
+LITSEQ         013756' \r
+LLUKP1         002326' \r
+LLUKP2         002312' \r
+LLUKP3         002335' \r
+LLUKP4         002346' \r
+LLUKP5         002370' \r
+LLUKP6         002343' \r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 181-9\r
+MACRO  10      24-APR-78 02:11         SYMBOL TABLE\r
+\r
+LLUKP7         002334' \r
+LLUKUP         002306' \r
+LNSSW          000000  SPD\r
+LOADSW         000020  SPD\r
+LOC0           004203' \r
+LOC01          004214' \r
+LOC10          004222' \r
+LOCA           013777' \r
+LOCBLK         013776' \r
+LOCO           014000' \r
+LOOKL          003114' \r
+LOOKUP         003111' \r
+LOOKX          013510' \r
+LOUT1          002205' \r
+LOUT10         002230' \r
+LOUT11         002271' \r
+LOUT15         002241' \r
+LOUT30         002272' \r
+LOUT60         002277' \r
+LOUT64         002303' \r
+LPP            014003' \r
+LPTBIT         040000  SPD\r
+LPTSW          000002  SPD\r
+LPTWID         000170  SPD\r
+LST            000003  SPD\r
+LSTBUF         013322' \r
+LSTDEV         013223' \r
+LSTDIR         013333' \r
+LSTFIL         013207' \r
+LSTINI         013222' \r
+LSTPGN         014102' \r
+LSTSE1         007070' \r
+LSTSE2         007102' \r
+LSTSE3         007136' \r
+LSTSE4         007340' \r
+LSTSE5         007342' \r
+LSTSET         007067' \r
+LSTSYM         014077' \r
+M              006632' \r
+MAC10          005735' \r
+MAC14          005750' \r
+MAC14A         005757' \r
+MAC15          005766' \r
+MAC16          005767' \r
+MAC20          005776' \r
+MAC21          006000' \r
+MAC21A         006002' \r
+MAC21B         006023' \r
+MAC21C         006022' \r
+MAC21D         006011' \r
+MAC21E         006020' \r
+MAC22          006032' \r
+MAC23          006045' \r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 181-10\r
+MACRO  10      24-APR-78 02:11         SYMBOL TABLE\r
+\r
+MAC24          006057' \r
+MAC25          006060' \r
+MAC26          006036' \r
+MAC27          006043' \r
+MAC30          006073' \r
+MAC31          006074' \r
+MAC40          006103' \r
+MAC41          006114' \r
+MAC42          006122' \r
+MAC44          006123' \r
+MACEN0         006134' \r
+MACEN1         006151' \r
+MACEN2         006152' \r
+MACEN3         006167' \r
+MACEND         006135' \r
+MACENL         014071' \r
+MACF           020000  SPD\r
+MACLVL         014072' \r
+MACPNT         014073' \r
+MACSIZ         014117' \r
+MDFF           000020  SPD\r
+MFLSW          000010  SPD\r
+MODA           014004' \r
+MODLOC         014005' \r
+MODO           014006' \r
+MP             000016  \r
+MREAD          006474' \r
+MREADC         006527' \r
+MREADI         006513' \r
+MREADS         006516' \r
+MRP            000013  \r
+MSRCH          012573' \r
+MSRCH2         012602' \r
+MSTIME 047000  000023  \r
+MTABIT         000020  SPD\r
+MTAPSW         000004  SPD\r
+MWLFLG         200000  SPD\r
+MWP            000012  \r
+N1             000767  \r
+N2             000011  \r
+NAME           007554' \r
+NAME1          007477' \r
+NAME2          007500' \r
+NAME3          007506' \r
+NCOLLS         013451' \r
+NCOLS          000001  SPD\r
+NEGCAL         000001  SPD\r
+NEGSW          000200  SPD\r
+NEXT           013511' \r
+NOERW          003254' \r
+NOOUTF         100000  SPD\r
+NOUT           002665' \r
+NOUT1          002670' \r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 181-11\r
+MACRO  10      24-APR-78 02:11         SYMBOL TABLE\r
+\r
+NOUT2          002710' \r
+NOUT3          002704' \r
+NUM            000714' \r
+NUM1           000717' \r
+NUM10          000727' \r
+NUM30          000741' \r
+NUM31          000742' \r
+NUM32          000745' \r
+NUM40          000750' \r
+NUM50          000774' \r
+NUM52          001002' \r
+NUM60          001013' \r
+NUM62          001020' \r
+NUMBUF         000002  SPD\r
+NUMDF          000713' \r
+NUMDN          001035' \r
+NUMER1         000440' \r
+NUMER2         000441' \r
+NUMSW          020000  SPD\r
+NUMUP          001027' \r
+NUNAC          000054' \r
+NUNAOS         000006  \r
+NUNBLT         000004  \r
+NUNCOM         000000' \r
+NUNDEV         013226' \r
+NUNDIR         013333' \r
+NUNERM         000006' \r
+NUNERR         000004' \r
+NUNGO2         000002' \r
+NUNGO3         000011' \r
+NUNGO4         000000  \r
+NUNINI         013225' \r
+NUNLAC         000012  \r
+NUNPNT         000010  \r
+NUNSET         000017' \r
+NUNTOP         000011  \r
+OCT0           004557' \r
+OCT1           004561' \r
+OFFML          004244' \r
+OFFORM         003447' \r
+OFFSYM         004246' \r
+ONC            003033' \r
+ONC1           003035' \r
+ONC2           003047' \r
+ONERW          003251' \r
+ONERW1         003252' \r
+ONFORM         003447' \r
+ONML           004243' \r
+OP             004445' \r
+OP1A           004464' \r
+OP1B           004454' \r
+OP1COD         012003' \r
+OP1END         012002' \r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 181-12\r
+MACRO  10      24-APR-78 02:11         SYMBOL TABLE\r
+\r
+OP1TAB         012306' \r
+OP1TOP         011012' \r
+OP2            004465' \r
+OP2A           004533' \r
+OP2A1          004546' \r
+OP2A2          004554' \r
+OP2TAB         012352' \r
+OP3            004466' \r
+OPD            004441' \r
+OPD1           004437' \r
+OPDEF0         004053' \r
+OPDF           010000  SPD\r
+OPHSH          000000  SPD\r
+OPT1A          010757' \r
+OPT1B          010764' \r
+OPT1D          010771' \r
+OPT1F          010777' \r
+OPT1G          011002' \r
+OPTSCH         010754' \r
+OPTTAB         011007' \r
+OTBUF          014007' \r
+OTOD           010716' \r
+OUTAB2         010570' \r
+OUTAS0         003060' \r
+OUTASC         003061' \r
+OUTBIN         010404' \r
+OUTC           010663' \r
+OUTCR          010600' \r
+OUTFF          010703' \r
+OUTFF1         010674' \r
+OUTFF2         010704' \r
+OUTIM          001746' \r
+OUTIM1         001745' \r
+OUTIM2         001761' \r
+OUTIML         002020' \r
+OUTL           010607' \r
+OUTL01         001574' \r
+OUTL02         001576' \r
+OUTL03         001575' \r
+OUTL1          010650' \r
+OUTL20         001606' \r
+OUTL22         001630' \r
+OUTL23         001634' \r
+OUTL24         001637' \r
+OUTL25         001645' \r
+OUTL26         001651' \r
+OUTL27         001655' \r
+OUTL30         001674' \r
+OUTL32         001704' \r
+OUTLE2         001736' \r
+OUTLE4         001742' \r
+OUTLE8         001732' \r
+OUTLER         001721' \r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 181-13\r
+MACRO  10      24-APR-78 02:11         SYMBOL TABLE\r
+\r
+OUTLI          001774' \r
+OUTLI1         002002' \r
+OUTLI2         002003' \r
+OUTLI3         002001' \r
+OUTLIN         001556' \r
+OUTLST         010667' \r
+OUTML1         002045' \r
+OUTPL          001657' \r
+OUTSET         003103' \r
+OUTSIX         003065' \r
+OUTSQ          014011' \r
+OUTSTR 051140  000000  \r
+OUTSW          013512' \r
+OUTSY1         003075' \r
+OUTSYM         003074' \r
+OUTTAB         010571' \r
+P1             400000  SPD\r
+PAGE0          010673' \r
+PAGEN.         014013' \r
+PAGENO         014100' \r
+PASS1I         013250' \r
+PASS20         003155' \r
+PASS2I         013734' \r
+PASS2X         014102' \r
+PASS2Z         014077' \r
+PDP            013513' \r
+PDPERR         010321' \r
+PEEK           006531' \r
+PEEKM          006535' \r
+PERIOD         000700' \r
+PERNUM         000706' \r
+PHASE0         004106' \r
+PJOB   047000  000030  \r
+PN1            004335' \r
+PN2            004343' \r
+PNCHSW         001000  SPD\r
+PNTF           004000  SPD\r
+POINT0         004652' \r
+POINT2         004665' \r
+POPOUT         000455' \r
+PP             000017  \r
+PPN            014054' \r
+PPTEMP         014014' \r
+PPTMP1         014015' \r
+PPTMP2         014016' \r
+PR             000002  SPD\r
+PRGPTR         013731' \r
+PRINT          010572' \r
+PRMEND         012306' \r
+PRMTBL         012206' \r
+PRNAM          004326' \r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 181-14\r
+MACRO  10      24-APR-78 02:11         SYMBOL TABLE\r
+\r
+PRNTX0         003431' \r
+PRNTX2         003434' \r
+PRNTX4         003437' \r
+PRNUM          010323' \r
+PROGN1         007605' \r
+PROGN2         007606' \r
+PROGN3         007607' \r
+PROGNP         007605' \r
+PS             000003  SPD\r
+PSEND0         005003' \r
+PSEND1         005014' \r
+PSEND2         005023' \r
+PSEND3         005027' \r
+PSEND4         005033' \r
+PSEND5         005115' \r
+PSEND6         005107' \r
+PSENDX         005114' \r
+PSNDER         005165' \r
+PTPBIN         010405' \r
+PTR            000104  SPD\r
+PURGE0         004410' \r
+PURGE2         004421' \r
+PURGE3         004433' \r
+PURGE4         004434' \r
+PURGE5         004435' \r
+PV             000001  SPD\r
+QEXT           004041' \r
+QSRCH          012603' \r
+QUAL           000523' \r
+QUAL2          000540' \r
+QUAL2A         000544' \r
+QUAL8          000537' \r
+QUALL          000550' \r
+QUOTE          000465' \r
+QUOTE0         000461' \r
+QUOTE1         000502' \r
+QUOTE2         000501' \r
+QUOTES         000456' \r
+R1BBLK         014025' \r
+R1BCHK         014024' \r
+R1BCNT         014023' \r
+R1BDM1         010457' \r
+R1BDMP         010447' \r
+R1BI           010465' \r
+R1BLDR         003177' \r
+R1BLOC         014047' \r
+R1BSW          004000  SPD\r
+RADIX0         003375' \r
+RADX50         004760' \r
+RADXSW         040000  SPD\r
+RC             000011  SPD\r
+RCOUNT         014075' \r
+RCPNTR         003372' \r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 181-15\r
+MACRO  10      24-APR-78 02:11         SYMBOL TABLE\r
+\r
+READ           010503' \r
+READ0          010502' \r
+READ1          010505' \r
+READ1A         010525' \r
+READ2          010536' \r
+READ3          010545' \r
+REC2           007437' \r
+RECCNT         013514' \r
+REFDEC         006546' \r
+REFINC         006543' \r
+RELBL1         000657' \r
+RELBLE         000641' \r
+RELF           000001  SPD\r
+RELLOC         014001' \r
+RELOC0         004227' \r
+REMAR0         003450' \r
+REMOV1         013116' \r
+REMOVE         013115' \r
+RENTSW         000000  SPD\r
+REPCNT         014017' \r
+REPEA0         005264' \r
+REPEA1         005266' \r
+REPEA2         005270' \r
+REPEA4         005301' \r
+REPEA7         005326' \r
+REPEA8         005330' \r
+REPEND         005332' \r
+REPEXP         014020' \r
+REPO           005365' \r
+REPO1          005375' \r
+REPPG          013757' \r
+REPPNT         014021' \r
+REPSEQ         013760' \r
+REPZ           005346' \r
+REPZ1          005354' \r
+REPZ2          005362' \r
+RESET  047000  000000  \r
+RIM0           010354' \r
+RIM1SW         000100  SPD\r
+RIMFIN         003345' \r
+RIMLOC         014050' \r
+RIMSW          000400  SPD\r
+ROUT           010360' \r
+ROUT1          010375' \r
+ROUT6          010471' \r
+RP             013250' \r
+RPGDEV         013231' \r
+RPGINI         013230' \r
+RPGLOS         007017' \r
+RPGLUP         006712' \r
+RPGS1          007001' \r
+RPGS2          006725' \r
+RPGS2A         006726' \r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 181-16\r
+MACRO  10      24-APR-78 02:11         SYMBOL TABLE\r
+\r
+RPGSET         006703' \r
+RPOLVL         014022' \r
+RSTRXS         007467' \r
+RSW0           001417' \r
+RSW1           001421' \r
+RSW2           001423' \r
+RSW3           001432' \r
+RUN    047000  000035  \r
+RX             000015  SPD\r
+SAVBLK         013515' \r
+SAVERC         013526' \r
+SAVEXS         007473' \r
+SAVFF          014105' \r
+SBUF           013527' \r
+SCHERR         005260' \r
+SDEL           000003  \r
+SEARCH         012713' \r
+SEQNO          013214' \r
+SEQNO2         014101' \r
+SERCH0         005240' \r
+SETDDT 047000  000002  \r
+SIXB10         004566' \r
+SIXB20         004570' \r
+SKELI          006414' \r
+SKELI1         006413' \r
+SKELW          006425' \r
+SKELW1         006437' \r
+SKELWL         006427' \r
+SKPINC 051540  000000  \r
+SLASH          007510' \r
+SOUT           002165' \r
+SOUT1          002377' \r
+SOUT10         002421' \r
+SOUT15         002430' \r
+SOUT20         002503' \r
+SOUT50         002467' \r
+SOUT60         002502' \r
+SOUTC          002512' \r
+SPTR           000010  SPD\r
+SQB1           000627' \r
+SQB2           000630' \r
+SQB3           000571' \r
+SQB4           000603' \r
+SQB4A          000615' \r
+SQB5           000570' \r
+SQB6           000622' \r
+SQBRK          000557' \r
+SQFLG          014067' \r
+SQOZ1          004772' \r
+SQOZE          004770' \r
+SQUOT0         000503' \r
+\r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 181-17\r
+MACRO  10      24-APR-78 02:11         SYMBOL TABLE\r
+\r
+SQUOTE         000507' \r
+SRCH1          012715' \r
+SRCH2          012717' \r
+SRCH3          012725' \r
+SRCH4          012735' \r
+SRCH5          012736' \r
+SRCH6          012752' \r
+SRCH7          012740' \r
+SRCHI          013125' \r
+SRCHK2         013032' \r
+SRCHKO         013004' \r
+SRCHN1         012774' \r
+SRCHNO         012761' \r
+SRCHOK         013005' \r
+SRCHX          013547' \r
+SSRCH          012610' \r
+SSRCH1         012613' \r
+SSRCH2         012617' \r
+SSRCH3         012620' \r
+STCODE         013557' \r
+STMN2A         000146' \r
+STMN8A         000231' \r
+STMN8B         000217' \r
+STMN8C         000221' \r
+STMN8D         000216' \r
+STMNT          000125' \r
+STMNT1         000127' \r
+STMNT2         000130' \r
+STMNT3         000157' \r
+STMNT4         000161' \r
+STMNT5         000167' \r
+STMNT7         000200' \r
+STMNT8         000207' \r
+STMNT9         000201' \r
+STOL06         001303' \r
+STOL08         001310' \r
+STOL10         001311' \r
+STOL12         001323' \r
+STOL14         001335' \r
+STOL22         001342' \r
+STOL23         001343' \r
+STOL24         001344' \r
+STOL26         001355' \r
+STOLER         001270' \r
+STOLIT         001273' \r
+STOPI0         006321' \r
+STORIT         005160' \r
+STOUT          000237' \r
+STOUT1         000246' \r
+STOUTS         000236' \r
+STOW           002751' \r
+STOW10         002761' \r
+STOW20         002763' \r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 181-18\r
+MACRO  10      24-APR-78 02:11         SYMBOL TABLE\r
+\r
+STOWI          003003' \r
+STOWRC         013627' \r
+STOWT          003021' \r
+STOWT1         003026' \r
+STOWZ          002750' \r
+STOWZ1         002750' \r
+STPX           013555' \r
+STPY           013556' \r
+SUBTL          011645' \r
+SUBTT0         004311' \r
+SUBTT1         004315' \r
+SUBTT3         004317' \r
+SUBTTX         013550' \r
+SUPRBT         000004  SPD\r
+SUPRE0         004250' \r
+SUPRE1         004255' \r
+SUPRS1         004264' \r
+SUPRSA         004261' \r
+SVSTOW         003007' \r
+SVSYM          013551' \r
+SW0            007630' \r
+SW1            007631' \r
+SWITC0         007623' \r
+SWITCH         007624' \r
+SWTAB          010053' \r
+SWTABT         010056' \r
+SX             000004  \r
+SYMBCK         013007' \r
+SYMBLK         013400' \r
+SYMBOL         013552' \r
+SYMCNT         013554' \r
+SYMF           400000  SPD\r
+SYMNUM         012201' \r
+SYMTOP         013553' \r
+SYN0           004352' \r
+SYN1           004356' \r
+SYN2           004357' \r
+SYN3           004373' \r
+SYN4           004404' \r
+SYNF           040000  SPD\r
+TABI           013213' \r
+TABLE          010211' \r
+TABLND         010240' \r
+TABP           013677' \r
+TAG            013211' \r
+TAGF           200000  SPD\r
+TAGINC         014051' \r
+TAPE0          003373' \r
+TBUF           013701' \r
+TCNT           013700' \r
+TERM           007560' \r
+TERM1          007565' \r
+TIMOU1         010710' \r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 181-19\r
+MACRO  10      24-APR-78 02:11         SYMBOL TABLE\r
+\r
+TIMOUT         010707' \r
+TIO            000006  SPD\r
+TIOCLD         020000  SPD\r
+TIOLE          002000  SPD\r
+TIORW          001000  SPD\r
+TITLE0         004276' \r
+TMPCOR 047000  000044  \r
+TMPSW          010000  SPD\r
+TNODE          200000  SPD\r
+TSTBIN         010415' \r
+TSTLST         010424' \r
+TTCLTH         000016  SPD\r
+TTCTBL         012555' \r
+TTYBIT         000010  SPD\r
+TTYERR         010113' \r
+TTYIN          010076' \r
+TTYSW          000001  SPD\r
+TWSEG0         003447' \r
+TXTPG          013761' \r
+TXTSEQ         013762' \r
+TYO            010252' \r
+TYPERR         013727' \r
+TYPM2          010262' \r
+TYPM2A         010267' \r
+TYPM3          010270' \r
+TYPMS1         010242' \r
+TYPMSG         010241' \r
+UNDF           002000  SPD\r
+UNIERR         005262' \r
+UNIPTR         014135' \r
+UNISCH         014055' \r
+UNISHX         014147' \r
+UNISIZ         014120' \r
+UNISYM         005207' \r
+UNITBL         014123' \r
+UNITOP         014121' \r
+UNIV0          005167' \r
+UNIVNO         014122' \r
+UNIVSN         013733' \r
+UNVERR         005205' \r
+UOUT           002074' \r
+UOUT1          002104' \r
+UOUT10         002122' \r
+UOUT12         002112' \r
+UOUT13         002116' \r
+UOUT2          002111' \r
+UOUT30         002126' \r
+UPDAT1         013157' \r
+UPDAT2         013164' \r
+UPDAT3         013155' \r
+UPDAT4         013171' \r
+UPDAT5         013175' \r
+UPDATE         013137' \r
+\r
+\fMACRO V.46(52)                MACRO 10 05:51 24-APR-78 PAGE 181-20\r
+MACRO  10      24-APR-78 02:11         SYMBOL TABLE\r
+\r
+UTPCLR 047000  000013  \r
+V              000006  \r
+VAR0           003546' \r
+VARA           003551' \r
+VARB           003556' \r
+VARF           000100  SPD\r
+VARHD          013477' \r
+VARHDX         013500' \r
+VBUF           013243' \r
+VCUSTO         000000  SPD\r
+VECREL         014052' \r
+VECTOR         014053' \r
+VEDIT          000000  SPD\r
+VMACRO         000010  SPD\r
+VOUT           002717' \r
+VT             000013  SPD\r
+VUPDAT         000000  SPD\r
+WAIT   072000  000000  \r
+WCHAR          006456' \r
+WCHAR1         006456' \r
+WCHARQ         006456' \r
+WCOUNT         014076' \r
+WFWSW          000000  SPD\r
+WWORD          006462' \r
+WWRXE          006466' \r
+WWRXX          014074' \r
+XADD           001244' \r
+XALL0          003403' \r
+XCEED          010277' \r
+XCEED1         010305' \r
+XCEED2         010317' \r
+XCEEDS         010276' \r
+XDIV           001247' \r
+XDIV1          001251' \r
+XLRW           001264' \r
+XMUL           001253' \r
+XMUL1          001256' \r
+XPUNG0         004266' \r
+XSUB           001241' \r
+XTRA           000004  SPD\r
+XWD0           004672' \r
+XWD10          004704' \r
+XWD5           004676' \r
+ZA             100000  \r
+ZAL            300000  \r
+\fEEEEEEEEEEEEEEE      DDDDDDDDDDDD            IIIIIIIII         TTTTTTTTTTTTTTT         OOOOOOOOO         RRRRRRRRRRRR   \r
+EEEEEEEEEEEEEEE      DDDDDDDDDDDD            IIIIIIIII         TTTTTTTTTTTTTTT         OOOOOOOOO         RRRRRRRRRRRR   \r
+EEEEEEEEEEEEEEE      DDDDDDDDDDDD            IIIIIIIII         TTTTTTTTTTTTTTT         OOOOOOOOO         RRRRRRRRRRRR   \r
+EEE                  DDD         DDD            III                  TTT            OOO         OOO      RRR         RRR\r
+EEE                  DDD         DDD            III                  TTT            OOO         OOO      RRR         RRR\r
+EEE                  DDD         DDD            III                  TTT            OOO         OOO      RRR         RRR\r
+EEE                  DDD         DDD            III                  TTT            OOO         OOO      RRR         RRR\r
+EEE                  DDD         DDD            III                  TTT            OOO         OOO      RRR         RRR\r
+EEE                  DDD         DDD            III                  TTT            OOO         OOO      RRR         RRR\r
+EEEEEEEEEEEE         DDD         DDD            III                  TTT            OOO         OOO      RRRRRRRRRRRR   \r
+EEEEEEEEEEEE         DDD         DDD            III                  TTT            OOO         OOO      RRRRRRRRRRRR   \r
+EEEEEEEEEEEE         DDD         DDD            III                  TTT            OOO         OOO      RRRRRRRRRRRR   \r
+EEE                  DDD         DDD            III                  TTT            OOO         OOO      RRR   RRR      \r
+EEE                  DDD         DDD            III                  TTT            OOO         OOO      RRR   RRR      \r
+EEE                  DDD         DDD            III                  TTT            OOO         OOO      RRR   RRR      \r
+EEE                  DDD         DDD            III                  TTT            OOO         OOO      RRR      RRR   \r
+EEE                  DDD         DDD            III                  TTT            OOO         OOO      RRR      RRR   \r
+EEE                  DDD         DDD            III                  TTT            OOO         OOO      RRR      RRR   \r
+EEEEEEEEEEEEEEE      DDDDDDDDDDDD            IIIIIIIII               TTT               OOOOOOOOO         RRR         RRR\r
+EEEEEEEEEEEEEEE      DDDDDDDDDDDD            IIIIIIIII               TTT               OOOOOOOOO         RRR         RRR\r
+EEEEEEEEEEEEEEE      DDDDDDDDDDDD            IIIIIIIII               TTT               OOOOOOOOO         RRR         RRR\r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  05:53:58\r
+File: DSKB0 :EDITOR.LST   [8,296] Created: 20-April-1967 05:52:00 Printed: 24-April-1978 05:53:40\r
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:1338 \r
+File will be deleted after printing\r
+\f\r
+EDITOR   V.003 1 APRIL 1968    MACRO 10 05:51 24-APR-78 PAGE 3\r
+EDITOR MAC     24-APR-78 03:01         DECEDIT PARAMETERS\r
+\r
+                               TITLE EDITOR   V.003    1 APRIL 1968\r
+                               SUBTTL DECEDIT PARAMETERS\r
+\r
+                               DEFINE ERR (A) <        JSR A,ERRORX>\r
+                               DEFINE TSTRIN (A) <     EXP "A"+"A"+1>\r
+\r
+                       000001  S0=1\r
+                       000002  S1=2\r
+                       000004  S2=4\r
+                       000010  S3=10\r
+                       000040  S4=40\r
+                       000020  S5=20\r
+                       000100  S6=100\r
+                       000200  S7=200\r
+                       000400  S8=400\r
+                       000003  PDP=3\r
+                       000004  FL=4\r
+                       000011  INDEX=11\r
+                       000012  WC=12\r
+                       000013  C=13\r
+                       000014  COTP=14\r
+                       000005  IPT=5\r
+                       000006  TPT=6\r
+                       000010  P=10\r
+                       000015  SINDEX=15\r
+                       000016  CINDEX=16\r
+                       000017  LAST=17\r
+                       000002  TYP=2\r
+                       000003  DT=3\r
+                               OPDEF EXIT [POPJ PDP,]\r
+                               OPDEF CAL [PUSHJ PDP,]\r
+                               OPDEF SAVE [PUSH PDP,]\r
+                               OPDEF UNSAVE [POP PDP,]\r
+                               EXTERNAL JOBFF\r
+\r
+\fEDITOR   V.003        1 APRIL 1968    MACRO 10 05:51 24-APR-78 PAGE 4\r
+EDITOR MAC     24-APR-78 03:01         DECTAPE IO - AUGUST 25, 1965\r
+\r
+                               SUBTTL DECTAPE IO - AUGUST 25, 1965\r
+\r
+                       001000  FOPEN=1000\r
+                       000001  AC1=1\r
+                       000002  AC2=2\r
+                       000005  AC3=5\r
+                       000006  AC4=6\r
+\r
+       000000' 607200  000001  FILLB:  TLNN FL,1;      IS BUFFER LOADED\r
+       000001' 254000  000041'         JRST FILLB1;    NO, SO LOAD IT\r
+       000002' 200540  001060'         MOVE C,WBC;     GET BUFFER COUNT\r
+       000003' 307540  000177          CAIG C,177;     IS IT GETTIN FULL\r
+       000004' 263140  000000  ATSALL: EXIT;   NO\r
+       000005' 620200  000400          TRZ FL,S8;      SET FIRST BLOCK FLAG TO FALSE\r
+       000006' 660200  000010          TRO FL,S3;      AND MODIFIED FLAG TO TRUE\r
+       000007' 201100  001064'         MOVEI AC2,WB;   GET WORKING BUFFER ADDRESS\r
+       000010' 201240  000001          MOVEI AC3,1;    SEQUENCE NUMBER TEST\r
+       000011' 271100  000125          ADDI AC2,125;   DUMP ABOUT 2/3 OF BUFFER\r
+       000012' 616242  000000          TDNN AC3,0(AC2);        BUT NOT A FRACTIONAL LINE\r
+       000013' 364100  000012'         SOJA AC2,.-1;   HUNT FOR BEGIN OF LINE\r
+       000014' 550400  000135'         HRRZ P,THSBLK;  UPDATE PREVIOUS BLOCK NUMBER\r
+       000015' 073140  000136'         UGETF DT,IAMTEM;        NEXT FREE BLOCK\r
+       000016' 075150  000000          USETO DT,0(P);  PREPARE TO DUMP THIS BLOCK\r
+       000017' 200400  000136'         MOVE P,IAMTEM;  AND PREPARE NEXT BLOCK\r
+       000020' 200240  001050'         MOVE AC3,DTOBUF;        SET UP BLT\r
+       000021' 516405  000001          HRLZM P,1(AC3); LINK TO NEXT DECTAPE BLOCK\r
+       000022' 505240  001064'         HRLI AC3,WB;    SOURCE\r
+       000023' 271240  000002          ADDI AC3,2;     +2\r
+       000024' 200040  000002          MOVE AC1,AC2;   LAST\r
+       000025' 275040  001064'         SUBI AC1,WB;    AND MAKE A COUNT OF IT\r
+       000026' 274540  000001          SUB C,AC1;      TOTAL REMAINING WORDS\r
+       000027' 202540  001060'         MOVEM C,WBC;    SET NEW COUNT\r
+       000030' 271045  777777          ADDI AC1,-1(AC3);       SETUP FOR BLT\r
+       000031' 260140  000122'         CAL DUMX;       TRANSFER AND DUMP BLOCK\r
+       000032' 201240  001064'         MOVEI AC3,WB;   GET DEST FOR MOVE UP\r
+       000033' 504240  000002          HRL AC3,AC2;    AND SOURCE\r
+       000034' 200040  000005          MOVE AC1,AC3;   GENERATE LAST ADDRESS\r
+       000035' 271053  000000          ADDI AC1,(C);   FROM COUNT\r
+       000036' 251241  000000          BLT AC3,(AC1);  ON TOAST\r
+       000037' 250400  000135'         EXCH P,THSBLK;  SET NEW BLOCK\r
+       000040' 254000  000000'         JRST FILLB;     GO AGAIN\r
+\r
+       000041' 607200  001000  FILLB1: TLNN FL,FOPEN;  IS A FILE OPEN\r
+                                       ERR 7;          NO, SO *NFO*\r
+       000042' 264340  000162'         JSR 7,ERRORX\r
+       000043' 661200  000001          TLO FL,1;       SET TO FILLED BUFFER\r
+       000044' 254000  000075'         JRST GETF;      AND GET THE FIRST BLOCK\r
+\r
+\fEDITOR   V.003        1 APRIL 1968    MACRO 10 05:51 24-APR-78 PAGE 5\r
+EDITOR MAC     24-APR-78 03:01         DECTAPE IO - AUGUST 25, 1965\r
+\r
+       000045' 602200  000001  GET:    TRNE FL,S0;     FORWARD OR REVERSE\r
+       000046' 254000  000073'         JRST GETL;      REVERSE\r
+\r
+       000047' 602200  000020  GETN:   TRNE FL,S5;     IS THERE ANY MORE\r
+       000050' 263140  000000          EXIT;           NO\r
+       000051' 554000  001063'         HLRZ WBF;       GET LINK\r
+       000052' 260140  000106'         CAL DUMPB;      OUTPUT BLOCK\r
+       000053' 200400  000135'         MOVE P,THSBLK;  SAVE PREVIOUS FLOCK NUMBER\r
+       000054' 620200  000400          TRZ FL,S8;      SET FIRST BLOCK FLAG TO FALSE\r
+       000055' 552000  000135' GET0:   HRRZM THSBLK;   SAVE CURRENT BLOCK NUMBER\r
+       000056' 075160  000135'         USETO DT,@THSBLK;       SER OUTPUT FOR PRESENT BLOCK\r
+\r
+       000057' 066140  000000  SLURP:  INPUT DT,0;     INPUT A NEW BLOCK\r
+       000060' 554000  001063'         HLRZ WBF;       GET LINK\r
+       000061' 336000  000000          SKIPN;          WE DONT LIKE ZERO LINKS\r
+       000062' 660200  000020          TRO FL,S5;      SO WE SET A FLAG TO REMIND US\r
+       000063' 550000  001063'         HRRZ WBF;       GET COUNT\r
+       000064' 202000  001060'         MOVEM WBC;      AND SAVE IT\r
+       000065' 606200  000020          TRNN FL,S5;     WAS IT END OF FILE\r
+       000066' 332000  000000          SKIPE;          EMPTY BLOCK\r
+       000067' 263140  000000          EXIT;           END OF FILE OR NON-EMPTY BLOCK\r
+       000070' 554000  001063'         HLRZ WBF;       EMPTY BLOCK - GET LINK\r
+       000071' 606200  000001          TRNN FL,S0;     DIRECTION CHECK\r
+       000072' 254000  000055'         JRST GET0;      FORWARD\r
+\r
+       000073' 260140  000106' GETL:   CAL DUMPB;      REVERSE - GET LAST BLOCK-SAVE THIS ONE\r
+       000074' 326400  000100'         JUMPN P,GETL1;  IS LAST BLOCK AVAILABLE\r
+       000075' 550400  001013' GETF:   HRRZ P,FBNUM;   NO, SO GET FIRST ONE\r
+       000076' 620200  000021          TRZ FL,S0+S5;   SET FORWARD AND END\r
+       000077' 664200  000400          TROA FL,S8;     SET FIRST BLOCK AND SKIP\r
+       000100' 620200  000420  GETL1:  TRZ FL,S5+S8;   SET NON-END AND NON-FIRST\r
+       000101' 074150  000000          USETI DT,(P);   ESTABLISH INPUT BLOCK NUMBER\r
+       000102' 075150  000000          USETO DT,(P);   AND OUTPUT BLOCK NUMBER\r
+       000103' 202400  000135'         MOVEM P,THSBLK; UPDATE CURRENT BLOCK NUMBER\r
+       000104' 402000  000010          SETZM P;        AND ZERO PREVIOUS BLOCK NUMBER\r
+       000105' 254000  000057'         JRST SLURP;     AND INPUT THE BLOCK\r
+\r
+\fEDITOR   V.003        1 APRIL 1968    MACRO 10 05:51 24-APR-78 PAGE 6\r
+EDITOR MAC     24-APR-78 03:01         DECTAPE IO - AUGUST 25, 1965\r
+\r
+       000106' 260140  000000' DUMPB:  CAL FILLB;      SPLIT BLOCKS IF THE OVER-RUN\r
+       000107' 626200  000010          TRZN FL,S3;     ANY MODS MADE\r
+       000110' 263140  000000          EXIT;           NO\r
+       000111' 200100  001050'         MOVE AC2,DTOBUF;        POINTER TO BUFFERS\r
+       000112' 201242  000002          MOVEI AC3,2(AC2);       FIRST WORD ADDRESS\r
+       000113' 505240  001064'         HRLI AC3,WB;    FIRST DATA WORD\r
+       000114' 554040  001063'         HLRZ AC1,WBF;   BLOCK NUMBER\r
+       000115' 336000  000001          SKIPN AC1;      LAST BLOCK\r
+       000116' 370000  000001          SOS AC1;        YES, SO EXTEND\r
+       000117' 506042  000001          HRLM AC1,1(AC2);        INTO LINK\r
+       000120' 201042  000001          MOVEI AC1,1(AC2);       PREPARE BLT\r
+       000121' 270040  001060'         ADD AC1,WBC;    SIZE OF BLT\r
+       000122' 251241  000000  DUMX:   BLT AC3,(AC1);  BLOCK UP SUBROUTINE\r
+       000123' 542040  001051'         HRRM AC1,DTOBF1;        LAST ADDRESS\r
+       000124' 067140  000000          OUTPUT DT,0;    DUMP IT\r
+       000125' 061140  740000          STATO DT,740000;        CHECK FOR DEVICE ERROR\r
+       000126' 263140  000000          EXIT;           ALL IS GOOD\r
+       000127' 476000  000004          SETOM FL     ; DDE ERROR\r
+                                       ERR 12;         *DDE*\r
+       000130' 264500  000162'         JSR 12,ERRORX\r
+\r
+       000131' 603200  001000  FINISH: TLNE FL,FOPEN;  IF A FILE IS OPEN\r
+       000132' 260140  000106'         CAL DUMPB;      DUMP IT\r
+       000133' 071140  000000  FINIS2: RELEAS DT,0;    RELEASE THE TAPE\r
+       000134' 254000  001030'         JRST INITIX;    AND GO BACK TO SETUP\r
+\r
+       000135' 000000  000000  THSBLK: 0;              PRESENT BLOCK NUMBER\r
+       000136' 000000  000000  IAMTEM: 0;              TEMPORARY\r
+\r
+\fEDITOR   V.003        1 APRIL 1968    MACRO 10 05:51 24-APR-78 PAGE 9\r
+EDITOR MAC     24-APR-78 03:01         CONTROL - AUGUST 25, 1965\r
+\r
+                               SUBTTL CONTROL - AUGUST 25, 1965\r
+                                                       ;MAIN LISTEN AND DISPATCH FOR EDITOR CONTROL MODE\r
+       000137' 260140  000612' OUTTER: CAL GETCHR;     GET ONE CHARACTER\r
+       000140' 306540  000015          CAIN C,15;      INITIAL CARRIAGE RETURNS\r
+       000141' 254000  000137'         JRST OUTTER;    ARE IGNORED\r
+       000142' 306540  000111          CAIN C,"I"\r
+       000143' 254000  000205'         JRST INSE\r
+       000144' 306540  000104          CAIN C,"D"\r
+       000145' 254000  000425'         JRST DELETE\r
+       000146' 306540  000120          CAIN C,"P"\r
+       000147' 254000  000471'         JRST PRINT\r
+       000150' 306540  000105          CAIN C,"E"\r
+       000151' 254000  000131'         JRST FINISH\r
+       000152' 302540  000033          CAIE C,33;      ALTERNATE ALTMOD\r
+       000153' 306540  000175          CAIN C,175;     THE REGULAR ALTMOD\r
+       000154' 254000  000522'         JRST PNEXT\r
+       000155' 306540  000123          CAIN C,"S"\r
+       000156' 254000  000657'         JRST DECINI\r
+                                       ERR 1;          ILLEGAL COMMAND\r
+       000157' 264040  000162'         JSR 1,ERRORX\r
+                               ;OUTPUT A CARRIAGE RETURN\r
+       000160' 201440  000171' CRT:    MOVEI INDEX,CRM;        PICK UP THE POINTER\r
+       000161' 254000  000601'         JRST OTLINE;    OUTPUT CRT-LF-*\r
+\r
+                               ;ERROR PRINT\r
+       000162' 000000  000000  ERRORX: 0;              CALLED BY JSR X,ERRORX\r
+       000163' 550440  000162'         HRRZ INDEX,ERRORX;      WHERE X IS THE ERROR NUMBER\r
+       000164' 135440  000204'         LDB INDEX,EPT;  EXTRACT THE X\r
+       000165' 201451  000171'         MOVEI INDEX,ERT-1(INDEX)\r
+       000166' 201140  001304' ERROX1: MOVEI PDP,PDSTAK;       INITIALIZE PUSHDOWN\r
+       000167' 260140  000601' ERROX2: CAL OTLINE;     OUTPUT ERROR MESSAGE\r
+\r
+\fEDITOR   V.003        1 APRIL 1968    MACRO 10 05:51 24-APR-78 PAGE 10\r
+EDITOR MAC     24-APR-78 03:01         CONTROL - AUGUST 25, 1965\r
+\r
+       000170' 254000  001035'         JRST COMLEV;    AND A CARRIAGE RETURN - EXIT\r
+                               ;ERROR MESSAGES ET.AL.  THESE MUST NOT BE MOVED ABOUT\r
+                               ;SINCE THE PRINT ROUTINE DEPENDS ON THE BIT 35 OF THE\r
+                               ;NEXT MESSAGE TO TERMINATE THE PRESENT ONE\r
+\r
+       000171' 064245  200000  CRM:    OCT 64245200000;        THE CARRIAGE RETURN-LINE FEED-*\r
+       000172'                 ERT:    TSTRIN <*ILC*>; ILLEGAL COMMAND\r
+       000172' 252231  441525          EXP "*ILC*"+"*ILC*"+1\r
+                                       TSTRIN <*NLN*>; NON-EXISTENT LINE\r
+       000173' 252351  447125          EXP "*NLN*"+"*NLN*"+1\r
+                                       TSTRIN <*ILS*>; ILLEGAL SEQUENCE\r
+       000174' 252231  451525          EXP "*ILS*"+"*ILS*"+1\r
+                                       TSTRIN <*ILR*>; ILLEGAL REFERENCE\r
+       000175' 252231  451125          EXP "*ILR*"+"*ILR*"+1\r
+                                       TSTRIN <*UNA*>; UNIT NOT AVAILABLE\r
+       000176' 252531  640525          EXP "*UNA*"+"*UNA*"+1\r
+                                       TSTRIN <*DCE*>; DIRECTORY CAPACITY EXCEEDED\r
+       000177' 252110  342525          EXP "*DCE*"+"*DCE*"+1\r
+                                       TSTRIN <*NFO*>; NO FILE OPEN\r
+       000200' 252350  647525          EXP "*NFO*"+"*NFO*"+1\r
+                                       TSTRIN <*FAU*>; FILE NAME ALREADY IN USE\r
+       000201' 252150  152525          EXP "*FAU*"+"*FAU*"+1\r
+                                       TSTRIN <*NCF*>; NOT A CURRENT FILE\r
+       000202' 252350  343125          EXP "*NCF*"+"*NCF*"+1\r
+                                       TSTRIN <*DDE*>; DEVICE DATA ERROR\r
+       000203' 252110  442525          EXP "*DDE*"+"*DDE*"+1\r
+       000204' 270411  777777  EPT:    POINT 4,-1(INDEX),12;   THE ERROR PRINT DEPENDS\r
+                                                       ;ON THE 1 IN BIT 35 HERE\r
+                               ;COMMUNICATIONS\r
+\r
+\fEDITOR   V.003        1 APRIL 1968    MACRO 10 05:51 24-APR-78 PAGE 12\r
+EDITOR MAC     24-APR-78 03:01         EDITOR - AUGUST 25, 1965\r
+\r
+                               SUBTTL EDITOR - AUGUST 25, 1965\r
+\r
+                               ;INSERT LINE(S)\r
+       000205' 260140  000616' INSE:   CAL GETSEQ;     GET THE SEQUENCE NUMBER AND STEP\r
+       000206' 202000  000016          MOVEM CINDEX;   THIS INSTR SKIPED IF ONLY ONE ARG\r
+       000207' 254000  000216'         JRST INSE3;     PROCESS IT\r
+       000210' 260140  000333' INSE2:  CAL FIND;       TOP OF THE LOOP - SEARCH FOR THE LINE\r
+       000211' 316651  000000          CAMN SINDEX,(INDEX);    EXACT MATCH?\r
+                                       ERR 4;          YES, *ILR*\r
+       000212' 264200  000162'         JSR 4,ERRORX\r
+       000213' 260140  000252'         CAL BACK1;      BACKUP TO LAST LINE\r
+       000214' 312000  000017          CAME LAST;      IS IT INDEED THE LAST ONE WE PUT IN\r
+                                       ERR 3;          NO, *ILS*\r
+       000215' 264140  000162'         JSR 3,ERRORX\r
+       000216' 260140  000333' INSE3:  CAL FIND;       GET THE LINE\r
+       000217' 260140  000541'         CAL OTSEQ;      OUTPUT THE SEQUENCE NUMBER\r
+       000220' 260140  000547'         CAL GETLIN;     GET THE INPUT LINE\r
+       000221' 254000  000137'         JRST OUTTER;    ALT MODE\r
+       000222' 260140  000227'         CAL INSED;      INSERT AND DELETE\r
+       000223' 202640  000017          MOVEM SINDEX,LAST;      SAVE AWAY THIS LINE NUMBER\r
+       000224' 202640  001056'         MOVEM SINDEX,FIRST\r
+       000225' 260140  000305'         CAL ASCIA;      STEP SEQUENCE\r
+       000226' 254000  000210'         JRST INSE2;     LOOP BACK FOR NEXT LINE\r
+\r
+       000227' 550000  000014  INSED:  HRRZ COTP;      GET THE SIZE OF THE LINE\r
+       000230' 201040  000000          MOVEI 1,0;      SETUP DIRECTION FLAG\r
+       000231' 311000  000012          CAML WC;        IF LINE SIZE IS GREATER-EQUAL THAN NEW\r
+       000232' 201040  000001          MOVEI 1,1;      SET FLAG TO 1\r
+       000233' 312000  000012          CAME WC;        IF OLD LINE IS NON-NULL\r
+       000234' 254000  000264'         JRST INSEG;     DELETE IT\r
+       000235' 322500  000245' INSE1:  JUMPE WC,INSE16;        NULL SIZE TO INPUT\r
+       000236' 554440  000014          HLRZ INDEX,COTP;        GET LINE ADDRESS\r
+       000237' 270440  000012          ADD INDEX,WC;   AND SIZE\r
+       000240' 547000  000014          HLRS COTP;      AND COUNT\r
+       000241' 505600  001313'         HRLI COTP,TTB;  SET SOURCE\r
+       000242' 200040  000014          MOVE 1,COTP;    READY FOR BLT\r
+       000243' 251611  777777          BLT COTP,-1(INDEX);     MOVE IN THE NEW LINE\r
+       000244' 200600  000001          MOVE COTP,1;    RESTORE COTP\r
+       000245' 660200  000110  INSE16: TRO FL,S3+S6;   SET MOD FLAGS - GENERAL EXIT\r
+       000246' 201040  001064' CLEARE: MOVEI 1,WB;     CLEAR LAST BUFFER WORD\r
+       000247' 270040  001060'         ADD 1,WBC;      END OF BUFFER\r
+       000250' 402001  000000          SETZM (1);      SET TO ZERO\r
+       000251' 263140  000000          EXIT;           GO AWAY\r
+\r
+                               ;BACK UP LINE POINTER\r
+       000252' 302440  001064' BACK1:  CAIE INDEX,WB;  IS THIS THE FIRST LINE IN THE BUFFER\r
+       000253' 254000  000262'         JRST BACK;      NO, SO NORMAL PROCESS\r
+       000254' 660200  000001          TRO FL,S0;      WE MUST GET THE PREVIOUS BLOCK\r
+       000255' 260140  000045'         CAL GET;        INPUT IT - THIS WILL ALWAYS WORK\r
+       000256' 270440  001060'         ADD INDEX,WBC;  LAST LINE\r
+       000257' 254000  000262'         JRST BACK;      NOW WE BACK IT UP\r
+       000260' 200011  000000          MOVE (INDEX);   TOP OF LOOP - PICK UP DATA WORD\r
+       000261' 606000  000001          TRNN 1;         BIT ONE MAKES IT A SEQUENCE N\r
+\r
+\fEDITOR   V.003        1 APRIL 1968    MACRO 10 05:51 24-APR-78 PAGE 12-1\r
+EDITOR MAC     24-APR-78 03:01         EDITOR - AUGUST 25, 1965\r
+\r
+       000262' 364440  000260' BACK:   SOJA INDEX,.-2; COUNT IT BACK\r
+       000263' 263140  000000          EXIT\r
+\r
+\fEDITOR   V.003        1 APRIL 1968    MACRO 10 05:51 24-APR-78 PAGE 13\r
+EDITOR MAC     24-APR-78 03:01         EDITOR - AUGUST 25, 1965\r
+\r
+       000264' 260140  000414' INSEG:  CAL CSIZE;      COMPUTE SIZE OF XFER\r
+       000265' 322000  000276'         JUMPE INSEX;    ZERO SIZE XFER\r
+       000266' 326040  000272'         JUMPN 1,INSER;  FORWARD BLT\r
+       000267' 507000  000000          HRLS 0;         REVERSE XFER\r
+       000270' 270440  000000          ADD INDEX,0;    SET UP POINTER WORD\r
+       000271' 553000  000000          HRRZS 0;        READY TO GO\r
+       000272' 202440  000013  INSER:  MOVEM INDEX,C;  PROTECT XFER WORD\r
+       000273' 251551  000000          BLT C,(INDEX);  XFER ONE WORD\r
+       000274' 256001  000303'         XCT ITAB(1);    STEP UP OR DOWN\r
+       000275' 365000  000272'         SOJGE INSER;    IF NOT DONE, LOOP BACK\r
+       000276' 550000  000014  INSEX:  HRRZ COTP;      SETUP SIZE\r
+       000277' 274000  000012          SUB WC;         OF NEW BLOCK\r
+       000300' 250000  001060'         EXCH WBC;\r
+       000301' 276000  001060'         SUBM WBC;       NOW NEW BLOCK SIZE IS IN WBC\r
+       000302' 254000  000235'         JRST INSE1;     ALL DONE - GO BACK\r
+\r
+       000303' 274440  000332' ITAB:   SUB INDEX,K5;   SHRINK\r
+       000304' 270440  000332'         ADD INDEX,K5;   GROW\r
+\r
+                               ;THE ASCII ADDER\r
+\r
+       000305' 261140  000016  ASCIA:  SAVE CINDEX;    PROTECT THE STEP\r
+       000306' 200340  000015          MOVE 7,SINDEX\r
+       000307' 404700  000327'         AND CINDEX,K2;  MASK OUT 60S\r
+       000310' 242700  000001          LSH CINDEX,1;\r
+       000311' 434640  000331'         IOR SINDEX,K4;\r
+       000312' 270640  000326'         ADD SINDEX,K1;\r
+       000313' 270700  000015          ADD CINDEX,SINDEX;      EXCESS 166 ADDITION\r
+       000314' 404700  000330'         AND CINDEX,K3;  MASK OUT CARRY BITS\r
+       000315' 200640  000331'         MOVE SINDEX,K4;\r
+       000316' 404640  000016          AND SINDEX,CINDEX;\r
+       000317' 240640  777775          ASH SINDEX,-3;  GIVES 000 WHERE CARRY HAPPENED, 006\r
+       000320' 276700  000015          SUBM CINDEX,SINDEX;     CONVERT TO EXCESS 0 OR 60\r
+       000321' 434640  000331'         IOR SINDEX,K4;  CONVERT TO EXCESS 60\r
+       000322' 262140  000016          UNSAVE CINDEX;  RESTORE THE STEP\r
+       000323' 311340  000015          CAML 7,SINDEX;  IF 99999, DON'T GO TO 00009\r
+       000324' 264140  000162'         ERR 3^  JSR 3,ERRORX^\r
+       000325' 263140  000000          EXIT;           LEAVE\r
+\r
+       000326' 432150  643214  K1:     OCT 432150643214;       106\r
+       000327' 036170  743617  K2:     OCT 036170743617;       017\r
+       000330' 375767  737576  K3:     OCT 375767737576;       077\r
+       000331' 301406  030141  K4:     TSTRIN <00000>^ EXP "00000"+"00000"+1^\r
+       000332' 000001  000001  K5:     XWD 1,1;        +,- ONE TO BOTH HALVES\r
+\r
+\fEDITOR   V.003        1 APRIL 1968    MACRO 10 05:51 24-APR-78 PAGE 14\r
+EDITOR MAC     24-APR-78 03:01         EDITOR - AUGUST 25, 1965\r
+\r
+       000333' 260140  000000' FIND:   CAL FILLB;      FILL THE BUFFER\r
+       000334' 620200  000041  FIND1:  TRZ FL,S0+S4;   FORWARD SEARCH AND INITIAL SEARCH\r
+       000335' 550000  001060' FIND2:  HRRZ WBC;       GET THE BUFFER SIZE\r
+       000336' 322000  000360'         JUMPE FINDA;    EMPTY BLOCK\r
+       000337' 201440  001064'         MOVEI INDEX,WB; GET THE DATA ADDRESS\r
+       000340' 200000  001064'         MOVE WB;        GET THE FIRST DATA WORD\r
+       000341' 313000  000015          CAMLE SINDEX;   ARE WE PAST THE LINE\r
+       000342' 254000  000360'         JRST FINDA;     YES, REVERSE\r
+       000343' 316000  000015          CAMN SINDEX;    EXACT MATCH\r
+       000344' 254000  000402'         JRST FINDEQ;    YES, BE HAPPY\r
+       000345' 270440  001060'         ADD INDEX,WBC;  FORM ADDRESS OF LAST DATA WORD\r
+       000346' 260140  000262'         CAL BACK;       FIND ITS SEQUENCE NUMBER\r
+       000347' 313000  000015          CAMLE SINDEX;   IT THE LINE IN THIS BLOCK\r
+       000350' 254000  000372'         JRST FIND3A;    YES, INVESTIGATE FURTHER\r
+       000351' 316000  000015          CAMN SINDEX;    EXACT MATCH\r
+       000352' 254000  000402'         JRST FINDEQ;    YES\r
+       000353' 602200  000020  FINDX:  TRNE FL,S5;     IS THIS LAST BLOCK\r
+       000354' 254000  000367'         JRST FINDC;     YES, SO EXIT WITH THIS ADDRESS\r
+       000355' 660200  000040          TRO FL,S4;      SCANNING HAS STARTED\r
+       000356' 620200  000001          TRZ FL,S0;      AND GO FORWARD\r
+       000357' 254000  000365'         JRST FIND4;     AWAY WE GO\r
+\r
+       000360' 201440  000000  FINDA:  MOVEI INDEX,0;  SETUP FOR REVERSE\r
+       000361' 606200  000040          TRNN FL,S4;     HAVE WE BEEN HERE BEFORE\r
+       000362' 602200  000400          TRNE FL,S8;     OR IS IT THE FIRST BLOCK\r
+       000363' 254000  000370'         JRST FINDR;     YES, SO USE THIS ADDRESS\r
+       000364' 660200  000001          TRO FL,S0;      OTHERWISE, GO BACK ONE BLOCK\r
+       000365' 260140  000045' FIND4:  CAL GET;        GET THE BLOCK\r
+       000366' 254000  000335'         JRST FIND2;     SEARCH FOR IT\r
+\r
+       000367' 550440  001060' FINDC:  HRRZ INDEX,WBC; TAIL OF BLOCK IF ENTERED HERE\r
+       000370' 271440  001064' FINDR:  ADDI INDEX,WB;  HEAD OF BLOCK IF ENTERED HERE\r
+       000371' 254000  000400'         JRST FIND3;     AND RETURN\r
+\r
+       000372' 201440  001060' FIND3A: MOVEI INDEX,WBC;        WE WISH TO SCAN THIS BLOCK FOR\r
+       000373' 260140  000406'         CAL FINDES;     THIS LINE - COMPUTE LINE SIZE\r
+       000374' 316000  000015          CAMN SINDEX;    EXACT MATCH\r
+       000375' 254000  000402'         JRST FINDEQ;    YES, WELL, GOOD\r
+       000376' 317000  000015          CAMG SINDEX;    HAVE WE PASSED IT\r
+       000377' 344440  000373'         AOJA INDEX,FIND3A+1;    NO, SO CONTINUE\r
+       000400' 514600  000011  FIND3:  HRLZ COTP,INDEX;        RETURN THE ADDRESS OF THE LINE\r
+       000401' 254000  000246'         JRST CLEARE;    EXIT\r
+\r
+       000402' 514600  000011  FINDEQ: HRLZ COTP,INDEX;        FOUND THE DESIRED LINE\r
+       000403' 260140  000406'         CAL FINDES;     COMPUTE ITS SIZE\r
+       000404' 554440  000014          HLRZ INDEX,COTP;        SET UP INDEX\r
+       000405' 254000  000246'         JRST CLEARE;    AND EXIT\r
+\r
+\fEDITOR   V.003        1 APRIL 1968    MACRO 10 05:51 24-APR-78 PAGE 15\r
+EDITOR MAC     24-APR-78 03:01         EDITOR - AUGUST 25, 1965\r
+\r
+       000406' 350000  000014  FINDES: AOS COTP;       FIND SIZE OF LINE\r
+       000407' 200011  000001          MOVE 1(INDEX);  FIND NEXT SEQUENCE NUMBER\r
+       000410' 350000  000011          AOS INDEX;\r
+       000411' 606000  000001          TRNN 1;         SEQUENCE NUMBER?\r
+       000412' 326000  000406'         JUMPN FINDES;   NO, BUT ZERO ALSO DENOTES END\r
+       000413' 263140  000000          EXIT;           DONE\r
+\r
+       000414' 550000  000014  CSIZE:  HRRZ COTP;      COMPUTE SIZE OF TRANSFER\r
+       000415' 554440  000014          HLRZ INDEX,COTP;        SIZE OF THIS LINE\r
+       000416' 270000  000011          ADD INDEX;      AND THIS LOCATION\r
+       000417' 270440  000012          ADD INDEX,WC;   PLUS THE NEW LINE SIZE\r
+       000420' 504440  000000          HRL INDEX,0;    IN LEFT HALF IS OLD SIZE\r
+       000421' 275000  001064'         SUBI WB;        AND TURN IT INTO A COUNT\r
+       000422' 550540  001060'         HRRZ C,WBC;     FOR A SUBTRACT\r
+       000423' 276540  000000          SUBM C,0;       AND NOW ZERO HAS THE XFER SIZE\r
+       000424' 263140  000000          EXIT;\r
+\r
+\r
+       000425' 260140  000502' DELETE: CAL GE2SEQ;     GET THE RANGE TO BE EXCISED\r
+       000426' 550440  001060' DELOOP: HRRZ INDEX,WBC; GET THE WORD COUNT\r
+       000427' 271440  001064'         ADDI INDEX,WB;  FORM THE END ADDRESS\r
+       000430' 260140  000262'         CAL BACK;       GET THE LAST SEQUENCE IN THE BLOCK\r
+       000431' 316000  000017          CAMN LAST;      IS THE LAST LINE THE END OF THE RANGE\r
+       000432' 254000  000447'         JRST DEQ;       YES\r
+       000433' 311000  000017          CAML LAST;      DO WE WANT TO DELETE THIS ONE TOO\r
+       000434' 254000  000451'         JRST DINB;      NO,DELETE TERMINATES IN THE BUFFER\r
+       000435' 260140  000465'         CAL DREST;      ERASE THE REST OF THE BUFFER\r
+       000436' 602200  000020  EMPT:   TRNE FL,S5;     LAST BLOCK\r
+       000437' 254000  001035'         JRST COMLEV;    YES, DONE\r
+       000440' 620200  000001          TRZ FL,S0;      FORWARD\r
+       000441' 260140  000045'         CAL GET;        INPUT NEXT BLOCK\r
+       000442' 200640  001064'         MOVE SINDEX,WB; GET FIRST LINE\r
+       000443' 606640  000001          TRNN SINDEX,1;  IF NOT A ONE, BLOCK IS EMPTY\r
+       000444' 254000  000436'         JRST EMPT;      SO GET THE NEXT ONE\r
+       000445' 260140  000333'         CAL FIND;       NEW SINDEX IS THE FIRST LINE - THIS CAL\r
+       000446' 254000  000426'         JRST DELOOP;    SETS UP THE COUNTS, ETC.\r
+\r
+       000447' 260140  000465' DEQ:    CAL DREST;      DELETE THE REST OF THE BUFFER\r
+       000450' 254000  001035' DEX:    JRST COMLEV;    EXIT\r
+\r
+\fEDITOR   V.003        1 APRIL 1968    MACRO 10 05:51 24-APR-78 PAGE 16\r
+EDITOR MAC     24-APR-78 03:01         EDITOR - AUGUST 25, 1965\r
+\r
+       000451' 201440  001063' DINB:   MOVEI INDEX,WBF;        GET INITIAL ADDRESS\r
+       000452' 260140  000406'         CAL FINDES;     SCAN THE LINE\r
+       000453' 322000  000456'         JUMPE .+3;      END OF BUFFER\r
+       000454' 317000  000017          CAMG LAST;      LAST LINE DONE\r
+       000455' 344440  000452'         AOJA INDEX,DINB+1;      NO, GO AGAIN\r
+       000456' 557000  000014          HLRZS COTP;     COMPUTE TOTAL SIZE\r
+       000457' 274440  000014          SUB INDEX,COTP; THIS MUCH SMALLER\r
+       000460' 517000  000014          HRLZS COTP;     RESET LEFT HALF\r
+       000461' 542440  000014          HRRM INDEX,COTP;        AND RIGHT HALF GET DELTA SIZE\r
+       000462' 402000  000012          CLEARM WC;      SET FOR ZERO LENGTH INSERT\r
+       000463' 260140  000227'         CAL INSED;      INSERT THE NULL LINE\r
+       000464' 254000  001035'         JRST COMLEV;    AND EXIT\r
+\r
+       000465' 554440  000014  DREST:  HLRZ INDEX,COTP;        DELETE THE REMAINING BUFFER\r
+       000466' 275440  001064'         SUBI INDEX,WB;  JUST DECREMENT SIZE\r
+       000467' 542440  001060'         HRRM INDEX,WBC; OF THE NEW BUFFER\r
+       000470' 254000  000245'         JRST INSE16;    DONE\r
+\r
+\fEDITOR   V.003        1 APRIL 1968    MACRO 10 05:51 24-APR-78 PAGE 17\r
+EDITOR MAC     24-APR-78 03:01         EDITOR - AUGUST 25, 1965\r
+\r
+       000471' 260140  000502' PRINT:  CAL GE2SEQ;     GET THE RANGE\r
+       000472' 200011  000000  PRLOOP: MOVE (INDEX);   GET A LINE\r
+       000473' 322000  000533'         JUMPE GETNEX;   ZERO IMPLIES END OF BUFFER - GET NEXT\r
+       000474' 313000  000017          CAMLE LAST;     ARE WE STILL IN THE BALLPARK\r
+       000475' 254000  001035'         JRST COMLEV;    NO, ALL DONE\r
+       000476' 260140  000516'         CAL STEP;       PREPARE FOR NEXT HUNT\r
+       000477' 260140  000601'         CAL OTLINE;     PRINT THIS LINE\r
+       000500' 260140  000333'         CAL FIND;       FIND THE NEXT LINE\r
+       000501' 254000  000472'         JRST PRLOOP;    LOOK AT IT\r
+\r
+       000502' 260140  000616' GE2SEQ: CAL GETSEQ;     GET A 2 NUMBER RANGE\r
+       000503' 334000  000000          SKIPA;          THERE WERE TWO\r
+       000504' 254000  000507'         JRST GEX;       ONLY ONE\r
+       000505' 242000  000001          LSH 1;          JUSTIFY IT\r
+       000506' 664000  000001          TROA 1;         AND FLAG IT AS A SEQUENCE NUMBER\r
+       000507' 200000  000015  GEX:    MOVE SINDEX;    DUPLICATE THE INPUT NUMBER IF JUST ONE\r
+       000510' 202000  000017          MOVEM LAST;     STORE THE END OF THE RANGE\r
+       000511' 260140  000333'         CAL FIND;       SEARCH FOR THE FIRST LINE\r
+       000512' 316740  001056'         CAMN LAST,FIRST;        BOTH THE SAME\r
+       000513' 316651  000000          CAMN SINDEX,(INDEX);    BUT NO MATCH FOUNT\r
+       000514' 263140  000000          EXIT;           WILL SKIP THIS ONE\r
+                                       ERR 2;          AND *NLN*\r
+       000515' 264100  000162'         JSR 2,ERRORX\r
+\r
+       000516' 261140  000016  STEP:   SAVE CINDEX     ;PROTECT THE STEP\r
+       000517' 201700  000001          MOVEI CINDEX,1; PREPARE TO ADD ONE TO SINDEX\r
+       000520' 202000  000015          MOVEM SINDEX;   WHICH WE LOAD FROM ZERO\r
+\r
+\fEDITOR   V.003        1 APRIL 1968    MACRO 10 05:51 24-APR-78 PAGE 24\r
+EDITOR MAC     24-APR-78 03:01         EDITOR - AUGUST 25, 1965\r
+\r
+       000521' 254000  000306'         JRST ASCIA+1;   AWAY\r
+\r
+       000522' 200640  001056' PNEXT:  MOVE SINDEX,FIRST;      PRINT NEXT LINE\r
+       000523' 200000  000015          MOVE SINDEX;    UPDATE THE LINE POINTER\r
+       000524' 260140  000516'         CAL STEP;       NEXT LINE\r
+       000525' 260140  000333'         CAL FIND;       WHERE IS IT\r
+       000526' 336651  000000          SKIPN SINDEX,(INDEX);   ZERO IS END, ALSO LOAD SINDEX\r
+                                       ERR 2;          *NLN*\r
+       000527' 264100  000162'         JSR 2,ERRORX\r
+       000530' 202640  001056'         MOVEM SINDEX,FIRST;     STEP FIRST POINTER\r
+       000531' 260140  000601'         CAL OTLINE;     PRINT THE LINE\r
+       000532' 254000  000137'         JRST OUTTER;    BACK TO CONTROL\r
+\r
+       000533' 602200  000020  GETNEX: TRNE FL,S5;     END OF FILE\r
+       000534' 254000  001035'         JRST COMLEV;    YES, EXIT\r
+       000535' 620200  000001          TRZ FL,S0;      FORWARD\r
+       000536' 260140  000045'         CAL GET;        INPUT IT\r
+       000537' 201440  001064'         MOVEI INDEX,WB; FIRST ADDRESS\r
+       000540' 254000  000472'         JRST PRLOOP;    RETURN TO PRINT SCAN\r
+\r
+\fEDITOR   V.003        1 APRIL 1968    MACRO 10 05:51 24-APR-78 PAGE 26\r
+EDITOR MAC     24-APR-78 03:01         TELETYPE IO - AUGUST 25, 1965\r
+\r
+                               SUBTTL TELETYPE IO - AUGUST 25, 1965\r
+\r
+                               ;OUTPUT SEQUENCE NUMBER\r
+       000541' 350000  001043' OTSEQ:  AOS TYOBF1;     STEP THE WORD POINTER\r
+\r
+\r
+       000542' 202660  001043'         MOVEM SINDEX,@TYOBF1;   PUT THE SEQUENCE NO.\r
+       000543' 201040  000211          MOVEI 1,211;    AND A TAB\r
+       000544' 136040  001043'         IDPB 1,TYOBF1;  INTO THE OUTPUT BUFFER\r
+       000545' 067100  000000  OTSEQ4: OUTPUT TYP,0;   OUTPUT THE TELETYPE BUFFER\r
+       000546' 263140  000000          EXIT\r
+\r
+                               ;INPUT ONE LINE FROM TELETYPE AND CONVERT TO SEQUENCED\r
+\r
+       000547' 066100  000000  GETLIN: INPUT TYP,0;    READ THE LINE\r
+       000550' 201040  001314'         MOVEI 1,TTB1;   PREEPARE TO BLOCK IT UP\r
+       000551' 505040  001313'         HRLI 1,TTB;     DESTINATION\r
+       000552' 402000  001313'         CLEARM TTB\r
+       000553' 251040  001336'         BLT 1,TTB16;    BLOCK IT UP\r
+       000554' 200300  000600'         MOVE TPT,KKK1;  PREPARE THE CONVERSION POINTER\r
+       000555' 200240  001046'         MOVE IPT,TYIBF1;        AND READ POINTER\r
+       000556' 200100  001047'         MOVE 2,TYIBF2;  AND THE COUNT\r
+       000557' 202646  000000          MOVEM SINDEX,(TPT);     PUT IN THE SEQUENCE\r
+       000560' 201040  000211          MOVEI 1,211;    TAB\r
+       000561' 344300  000564'         AOJA TPT,EOMLOP+2;      START CONVERSION\r
+\r
+       000562' 361100  000571' EOMLOP: SOJL 2,EOMOUT;  IF ALL OUT OF CHARACTERS\r
+       000563' 134040  000005          ILDB 1,IPT;     READ ONE\r
+       000564' 136040  000006          IDPB 1,TPT;     WRITE ONE\r
+       000565' 302040  000033          CAIE 1,33;      ALTERNATE ALTMOD\r
+       000566' 306040  000175          CAIN 1,175;     REGULAR ALTMOD\r
+       000567' 254000  000160'         JRST CRT;               MAKE EXIT\r
+       000570' 254000  000562'         JRST EOMLOP;    GET MORE\r
+\r
+       000571' 200500  000006  EOMOUT: MOVE WC,TPT;    FORM WORD COUNT\r
+       000572' 274500  000600'         SUB WC,KKK1;    INITIAL VALUE\r
+       000573' 553000  000012          HRRZS WC;               CLEAR LEFT\r
+       000574' 306040  000012          CAIN 1,12;      LINE FEED\r
+       000575' 271500  000001          ADDI WC,1;      MEANS STEP COUNT\r
+       000576' 350003  000000  STEPEX: AOS (PDP);      SKIP EXIT\r
+       000577' 263140  000000          EXIT\r
+       000600' 440700  001313' KKK1:   POINT 7,TTB;    INITIAL POINTER\r
+\r
+                               ;OUTPUT ONE LINE OF TEXT\r
+\r
+       000601' 200011  000000  OTLINE: MOVE (INDEX);   FIRST WORD\r
+       000602' 254000  000607'         JRST OTL1\r
+       000603' 200011  000000          MOVE (INDEX);   SUBSEQUENT WORDS\r
+       000604' 322000  000545'         JUMPE OTSEQ4;   ZERO IMPLIES THE END OF THE WORLD\r
+       000605' 602000  000001          TRNE 1;         ONE IMPLIES THE END OF THE LINE\r
+       000606' 254000  000545'         JRST OTSEQ4\r
+       000607' 350000  001043' OTL1:   AOS TYOBF1;     PUT IT IN THE OUTPUT BUFFER\r
+       000610' 202020  001043'         MOVEM @TYOBF1\r
+\r
+\fEDITOR   V.003        1 APRIL 1968    MACRO 10 05:51 24-APR-78 PAGE 26-1\r
+EDITOR MAC     24-APR-78 03:01         TELETYPE IO - AUGUST 25, 1965\r
+\r
+       000611' 344440  000603'         AOJA INDEX,OTLINE+2;    GO FOR MORE\r
+\r
+\fEDITOR   V.003        1 APRIL 1968    MACRO 10 05:51 24-APR-78 PAGE 27\r
+EDITOR MAC     24-APR-78 03:01         TELETYPE IO - AUGUST 25, 1965\r
+\r
+                               ;GET ONE CHARACTER\r
+\r
+       000612' 066100  000000  GETCHR: INPUT TYP,0;    GET A LINE\r
+       000613' 200240  001046'         MOVE IPT,TYIBF1;        PREPARE INPUT POINTER\r
+       000614' 134540  000005          ILDB C,IPT;     LOAD THE FIRST CHARACTER\r
+       000615' 263140  000000          EXIT\r
+\r
+                               ;GET A SEQUENCE PAIR\r
+\r
+       000616' 403000  000015  GETSEQ: CLEARB 0,SINDEX;        MAKE BOTH ZERO\r
+       000617' 134540  000005          ILDB C,IPT;     GET A CHARACTER\r
+       000620' 301540  000060          CAIL C,60;      IT MUST BE A NUMBER\r
+       000621' 303540  000071          CAILE C,71\r
+       000622' 254000  000626'         JRST ETEST;     OR A DELIMITER\r
+       000623' 242640  000007          LSH SINDEX,7;   NUMBER\r
+       000624' 270640  000013          ADD SINDEX,C;   NEW ONE\r
+       000625' 254000  000617'         JRST GETSEQ+1\r
+\r
+       000626' 306540  000056  ETEST:  CAIN C,56;      POINT?\r
+       000627' 254000  000652'         JRST PER\r
+       000630' 306540  000054          CAIN C,54;      COMMA?\r
+       000631' 254000  000645'         JRST CMMA\r
+       000632' 332000  000015          SKIPE SINDEX;   IF NOTHING INPUT YET\r
+       000633' 302540  000015          CAIE C,15;      OR NOT A CARRET\r
+       000634'                 COMERR: ERR 1;          ILLEGAL COMMAND\r
+       000634' 264040  000162'         JSR 1,ERRORX\r
+       000635' 434640  000656'         IOR SINDEX,KK4; MAKE IT AN ASCII THING\r
+       000636' 332000  000000          SKIPE 0;                IF TWO ARGS\r
+       000637' 250640  000000          EXCH SINDEX,0;  SWAP EM BACK\r
+       000640' 242640  000001          LSH SINDEX,1;   LEFT JUSTIFY\r
+       000641' 660640  000001          TRO SINDEX,1;   AND FLAG IT\r
+       000642' 202640  001056'         MOVEM SINDEX,FIRST;     SAVE IT FOR .\r
+       000643' 322000  000576'         JUMPE STEPEX;   ONLY ONE ARG\r
+       000644' 263140  000000          EXIT;           TWO ARGS\r
+\r
+       000645' 322640  000634' CMMA:   JUMPE SINDEX,COMERR;    THREE ARGS?\r
+       000646' 326000  000634'         JUMPN COMERR;   ONE ARG\r
+       000647' 434640  000656'         IOR SINDEX,KK4; ASCII-IZE IT\r
+       000650' 250640  000000          EXCH SINDEX,0;  SWAP EM\r
+       000651' 254000  000617'         JRST GETSEQ+1\r
+\r
+       000652' 326640  000634' PER:    JUMPN SINDEX,COMERR;    CANT BE THIRD ARG\r
+       000653' 200640  001056'         MOVE SINDEX,FIRST;      RETREIVE POINT\r
+       000654' 242640  777777          LSH SINDEX,-1;  RIGHT JUSTIFY\r
+       000655' 254000  000617'         JRST GETSEQ+1\r
+\r
+       000656' 140603  014060  KK4:    OCT 140603014060;       00000\r
+\r
+\fEDITOR   V.003        1 APRIL 1968    MACRO 10 05:51 24-APR-78 PAGE 28\r
+EDITOR MAC     24-APR-78 03:01         DECSET - AUGUST 25, 1965\r
+\r
+                               SUBTTL DECSET - AUGUST 25, 1965\r
+\r
+                       001000  FOPEN=1000\r
+\r
+                               ;SET FILE OPEN (*SN,NAME)\r
+\r
+       000657' 603200  001000  DECINI: TLNE FL,FOPEN;  IF A FILE IS NOT ALREADY OPEN\r
+                                                       ;       THEN GOTO NORMAL PROCESS\r
+                                       ERR 1 ; IF FILE OPEN ,MUST CLOSE W. E\r
+       000660' 264040  000162'         JSR 1 ,ERRORX\r
+       000661' 403200  001060' DECIN1: SETZB FL,WBC;   ZERO FLAGS AND WORD COUNT\r
+       000662' 402000  001012'         CLEARM DTNAME;  FILE NAME\r
+       000663' 402000  001013'         CLEARM DTNAME+1;        AND EXTENSION\r
+       000664' 402000  001014'         CLEARM DTNAME+2;        AND DATE\r
+       000665' 260140  000710'         CAL GTCHAR;     GET UNIT NUMBER\r
+       000666' 301000  000060          CAIL 60;                IT MUST BE A NUMBER\r
+       000667' 303000  000070          CAILE 70;\r
+       000670' 254000  000665'         JRST .-3;               IGNORE ANYTHING ELSE\r
+       000671' 137000  001337'         DPB [POINT 5,PLUNK,23]; DUMP INTO INIT COMMAND\r
+       000672' 260140  000710'         CAL GTCHAR;     NEXT CHARACTER\r
+       000673' 302000  000054          CAIE 54;                COMMA?\r
+       000674' 254000  000672'         JRST .-2;               IGNORE ALL ELSE\r
+       000675' 200040  001340' LOOP0:  MOVE 1,[POINT 6,DTNAME];        INITIALIZE NAME POINTER\r
+       000676' 201540  000006          MOVEI C,6;      MAX NAME LENGTH\r
+       000677' 260140  000710' LOOP:   CAL GTCHAR;     GET A CHARACTER\r
+       000700' 301000  000060          CAIL "0";               NUMBERS AND LETTERS ONLY COME HERE\r
+       000701' 303000  000071          CAILE "9";      SO HERE FILTER NUMBERS\r
+       000702' 254000  001000'         JRST LOOP1;     IT IS A LETTER\r
+       000703' 640000  000040  LOOP2:  TRC 40; NUMBER - MAKE IT SIXBIT\r
+       000704' 136000  000001          IDPB 1;         STORE INTO NAME (OR EXTENSION)\r
+       000705' 367540  000677'         SOJG C,LOOP;    COUNT DOWN FOR SIZE\r
+       000706' 260140  000710'         CAL GTCHAR;     NEXT CHARACTER\r
+       000707' 254000  000706'         JRST .-1;\r
+\r
+\r
+\fEDITOR   V.003        1 APRIL 1968    MACRO 10 05:51 24-APR-78 PAGE 29\r
+EDITOR MAC     24-APR-78 03:01         DECSET - AUGUST 25, 1965\r
+\r
+       000710' 134000  000005  GTCHAR: ILDB IPT;               LOAD ONE CHARACTER\r
+       000711' 306000  000015          CAIN 15;                CRT\r
+       000712' 254000  000727'         JRST GET1;      SNEAK EXIT\r
+       000713' 306000  000056          CAIN ".";       AN EXTENSION IS COMMING\r
+       000714' 254000  001004'         JRST GET2;      FIX IT UP\r
+       000715' 302000  000033          CAIE 33;                THE FUNNY ALTMODE\r
+       000716' 306000  000175          CAIN 175;               AND THE REAL ONE\r
+       000717' 254000  000726'         JRST    GET11   ;CAUSE EXIT TO OCCUR\r
+       000720' 306000  000012          CAIN    0,12    ;LF CHAR?\r
+       000721' 254000  000727'         JRST GET1       ; YES TREAT AS CR\r
+       000722' 302000  000001          CAIE 1;         CONTROL A\r
+       000723' 263140  000000          EXIT;           NOTA SO EXIT HAPPY\r
+       000724' 661200  000100          TLO FL,100;     SET CONTROL A FLAG\r
+       000725' 254000  000710'         JRST GTCHAR;    GET ANOTHER CHARACTER\r
+       000726' 661200  000002  GET11:  TLO     FL,2    ;NEW FILE FLAG\r
+\r
+       000727' 262140  000000  GET1:   UNSAVE; POP OFF EXIT\r
+       000730' 201000  001050' GO:     MOVEI DTOBUF;   THESE TWO INSTRUCTIONS REQUIRED\r
+       000731' 506000  000736'         HRLM PLUNK+1;   REQUIRED TO LINK LEFT HALF\r
+       000732' 200000  001057'         MOVE SJOBFF;    RESET JOB AREA\r
+       000733' 202000  000000*         MOVEM JOBFF;    TO PREVENT STORAGE EAT-UP\r
+       000734' 041140  000000          INIT DT,0;      INITIALIZE DECTAPE\r
+       000735' 446441  000000  PLUNK:  SIXBIT /DTA/;   RIGHT HALF SET ABOVE\r
+       000736' 000000  001053'         XWD 0,DTIBUF;   LEFT HALF SET ABOVE\r
+                                       ERR 5;          UNIT NOT AVAILABLE\r
+       000737' 264240  000162'         JSR 5,ERRORX\r
+       000740' 205000  400000          MOVSI 400000;   USE BIT\r
+       000741' 412000  001062'         ANDCAM DTB;     CLEAR IT\r
+       000742' 541000  001062'         HRRI DTB;               HEAD OF BUFFER\r
+       000743' 202000  001053'         MOVEM DTIBUF;   SETUP IN HEADER\r
+       000744' 065140  000001          OUTBUF DT,1;    SET UP SINGLE BUFFER\r
+       000745' 623200  000100          TLZE FL,100;    NEW DIRECTORY?\r
+       000746' 047140  000013          CALLI DT,13;    YES, ZONK IT (UTPCLR)\r
+       000747' 336000  001012'         SKIPN DTNAME;   NO NAME MEANS JUST CLEAR, PROB\r
+       000750' 254000  000133'         JRST FINIS2;    SO EXIT AND CLOSE FILE\r
+       000751' 076140  001012'         LOOKUP DT,DTNAME;       IS THE NAME ALRRADY THERE\r
+       000752' 254000  000772'         JRST NEWFIL;    NO, SO WE ENTER IT\r
+       000753' 603200  000002          TLNE FL,2;      ARE WE ASKING FOR A NEW FILE\r
+                                       ERR 10;         YES, FAU\r
+       000754' 264400  000162'         JSR 10,ERRORX\r
+\r
+       000755' 200100  001013' DOIT:   MOVE 2,DTNAME+1;        GET LINK\r
+       000756' 074142  000000          USETI DT,(2);   SET IT UP\r
+       000757' 067140  000000          OUTPUT DT,;     MAKE SYSTEM HAPPY\r
+       000760' 075142  000000          USETO DT,(2);   SET UP OUTPUT ALSO\r
+       000761' 627200  000010          TLZN FL,10;     NEW FILE?\r
+       000762' 254000  000767'         JRST DOIT1;     NO, ALMOST DONE\r
+       000763' 402000  001063'         SETZM WBF;      WE MUST FORCE AN EMPTY BLOCK\r
+       000764' 661200  000001          TLO FL,1;               SET BUFFER FULL FLAG\r
+       000765' 402000  001060'         SETZM WBC;      ZERO LENGTH\r
+       000766' 660200  000530          TRO FL,S3+S5+S6+S8;     INITIAL STATE, FIRST BLOCK MODIFIED\r
+       000767' 202100  000135' DOIT1:  MOVEM 2,THSBLK; SETUP CURRENT BLOCK NUMBER\r
+       000770' 661200  001000          TLO FL,FOPEN;   SET FILE STATUS TO OPEN\r
+\r
+\fEDITOR   V.003        1 APRIL 1968    MACRO 10 05:51 24-APR-78 PAGE 29-1\r
+EDITOR MAC     24-APR-78 03:01         DECSET - AUGUST 25, 1965\r
+\r
+       000771' 254000  001035'         JRST COMLEV;    ALL DONE\r
+\r
+\fEDITOR   V.003        1 APRIL 1968    MACRO 10 05:51 24-APR-78 PAGE 30\r
+EDITOR MAC     24-APR-78 03:01         DECSET - AUGUST 25, 1965\r
+\r
+       000772' 607200  000002  NEWFIL: TLNN FL,2;      WAS ALTMOD STRUCK\r
+                                       ERR 11;         NO, NCF\r
+       000773' 264440  000162'         JSR 11,ERRORX\r
+       000774' 077140  001012'         ENTER DT,DTNAME;        PUT IN DI\r
+                                       ERR 6;          DCE\r
+       000775' 264300  000162'         JSR 6,ERRORX\r
+       000776' 661200  000010          TLO FL,10;      SET NEW FILE FLAG\r
+       000777' 254000  000755'         JRST DOIT;\r
+\r
+       001000' 301000  000101  LOOP1:  CAIL "A";       LETTER CHECK\r
+       001001' 303000  000132          CAILE "Z";      IT MUST VERILY BE A LETTER\r
+       001002' 254000  000677'         JRST LOOP;      WE IGNORE IT\r
+       001003' 254000  000703'         JRST LOOP2;     WE PROCESS IT\r
+\r
+       001004' 332000  001013' GET2:   SKIPE DTEXTN;   EXTENSION?\r
+                                       ERR 1;          ALREADY GOT ONE, CANT HAVE TWO\r
+       001005' 264040  000162'         JSR 1,ERRORX\r
+       001006' 621040  770000          TLZ 1,770000;   MAGIC TO BYTE POINTER TO POINT TO NEXT\r
+       001007' 201540  000003          MOVEI C,3;      ONLY 3 LETTERS IN EXTENSION\r
+       001010' 262140  000000          UNSAVE;         POP OF SOME GARBAGE\r
+       001011' 254000  000677'         JRST LOOP;      RETURN TO LISTEN\r
+\r
+       001012' 000000  000000  DTNAME: 0;      FILE NAME\r
+       001013' 000000  000000  DTEXTN: 0;      FILE EXTENSION\r
+       001014' 000000  000000  DTDATE: 0;      DATE\r
+       001015' 000000  000000          0;              DUMMY\r
+\r
+                       001013' FBNUM=DTEXTN\r
+\r
+\r
+\fEDITOR   V.003        1 APRIL 1968    MACRO 10 05:51 24-APR-78 PAGE 31\r
+EDITOR MAC     24-APR-78 03:01         INITIA - AUGUST 25, 1965\r
+\r
+                               SUBTTL INITIA - AUGUST 25, 1965\r
+                       000001  AL=1\r
+       001016' 047000  000000  INITIA: CALLI 0,0;      RESET SYSTEM\r
+       001017' 041100  000001          INIT TYP,AL;    RESET CONCOLE\r
+       001020' 646471  000000          SIXBIT /TTY/\r
+       001021' 001042' 001045'         XWD TYOBUF,TYIBUF\r
+       001022' 254200  000000          HALT\r
+       001023' 064100  000001          INBUF TYP,1;    SET UP ONE INPUT BUFFER\r
+       001024' 065100  000002          OUTBUF TYP,2;   AND TWO OUTPUT BUFFERS\r
+       001025' 200000  000733*         MOVE JOBFF;     SAVE FIRST FREE\r
+       001026' 202000  001057'         MOVEM SJOBFF;   FOR LATER RESTART\r
+       001027' 067100  000000          OUTPUT TYP,0;   MAKE SYSTEM HAPPY\r
+       001030' 200700  001041' INITIX: MOVE CINDEX,KK1;        INITIALIZE STEP TO 10\r
+       001031' 201140  001303'         MOVEI PDP,PDSTAK-1;     INITIALIZE PUSHDOWN POINTER\r
+       001032' 403640  000004          CLEARB SINDEX,FL;       FLAGS AND SEQUENCE INDEX\r
+       001033' 211400  000001          MOVNI P,1;      AND FIRST BLOCK POINTER\r
+       001034' 402000  001060'         CLEARM WBC;     WORD COUNT\r
+       001035' 260140  000160' COMLEV: CAL CRT;        A COMMON RETURN\r
+       001036' 301200  000000          CAIL FL,0 ; DDE ERROR\r
+       001037' 254000  000137'         JRST OUTTER    ; NO, SO OFF TO LISTEN CONTROL\r
+       001040' 254000  001016'         JRST INITIA   ; YES GO RESET WORLD\r
+\r
+                               ;BUFFERS, ET. AL.\r
+       001041' 140603  014260  KK1:    OCT 140603014260;       00010\r
+       001042'                 TYOBUF: BLOCK 3\r
+       001045'                 TYIBUF: BLOCK 3\r
+\r
+       001050'                 DTOBUF: BLOCK 3\r
+       001053' 000000  000000  DTIBUF: 0\r
+       001054' 000700  000000          XWD 700,0;      SELF ASSIGNED BUFFERS, ETC.\r
+       001055' 000000  000000          0\r
+\r
+       001056' 000000  000000  FIRST:  0\r
+       001057' 000000  000000  SJOBFF: 0\r
+\r
+       001060' 000000  000000  WBC:    0;              WORKING BUFFER COUNT\r
+       001061' 000000  000000          0\r
+       001062' 000200  001062' DTB:    XWD 200,DTB;    DECTAPE HEADER\r
+       001063' 000000  000000  WBF:    0\r
+       001064'                 WB:     BLOCK 217;      THE WORKING BUFFER\r
+       001303' 624563  456400  RESTT:  SIXBIT .RESET.\r
+\r
+       001304'                 PDSTAK: BLOCK 7;        PUSHDOWN STAK\r
+       001313'                 TTB:    BLOCK 23;       TELETYPE BUFFER-BUFFER\r
+       001336' 000000  000000  TTB16:  0\r
+\r
+                       001314' TTB1=TTB+1\r
+                       001046' TYIBF1=TYIBUF+1\r
+                       001047' TYIBF2=TYIBUF+2\r
+                       001043' TYOBF1=TYOBUF+1\r
+                       001051' DTOBF1=DTOBUF+1\r
+\r
+                               EXTERNAL JOBFF\r
+\r
+\fEDITOR   V.003        1 APRIL 1968    MACRO 10 05:51 24-APR-78 PAGE 31-1\r
+EDITOR MAC     24-APR-78 03:01         INITIA - AUGUST 25, 1965\r
+\r
+       001337'                 EDEND:\r
+\r
+                       001016' END INITIA\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 001341\r
+\r
+9K CORE USED\r
+\r
+\fEDITOR   V.003        1 APRIL 1968    MACRO 10 05:51 24-APR-78 PAGE 32\r
+EDITOR MAC     24-APR-78 03:01         SYMBOL TABLE\r
+\r
+AC1            000001  \r
+AC2            000002  \r
+AC3            000005  \r
+AC4            000006  \r
+AL             000001  \r
+ASCIA          000305' \r
+ATSALL         000004' \r
+BACK           000262' \r
+BACK1          000252' \r
+C              000013  \r
+CAL    260140  000000  \r
+CINDEX         000016  \r
+CLEARE         000246' \r
+CMMA           000645' \r
+COMERR         000634' \r
+COMLEV         001035' \r
+COTP           000014  \r
+CRM            000171' \r
+CRT            000160' \r
+CSIZE          000414' \r
+DECIN1         000661' \r
+DECINI         000657' \r
+DELETE         000425' \r
+DELOOP         000426' \r
+DEQ            000447' \r
+DEX            000450' \r
+DINB           000451' \r
+DOIT           000755' \r
+DOIT1          000767' \r
+DREST          000465' \r
+DT             000003  \r
+DTB            001062' \r
+DTDATE         001014' \r
+DTEXTN         001013' \r
+DTIBUF         001053' \r
+DTNAME         001012' \r
+DTOBF1         001051' \r
+DTOBUF         001050' \r
+DUMPB          000106' \r
+DUMX           000122' \r
+EDEND          001337' \r
+EMPT           000436' \r
+EOMLOP         000562' \r
+EOMOUT         000571' \r
+EPT            000204' \r
+ERRORX         000162' \r
+ERROX1         000166' \r
+ERROX2         000167' \r
+ERT            000172' \r
+ETEST          000626' \r
+EXIT   263140  000000  \r
+FBNUM          001013' \r
+\r
+\r
+\fEDITOR   V.003        1 APRIL 1968    MACRO 10 05:51 24-APR-78 PAGE 32-1\r
+EDITOR MAC     24-APR-78 03:01         SYMBOL TABLE\r
+\r
+FILLB          000000' \r
+FILLB1         000041' \r
+FIND           000333' \r
+FIND1          000334' \r
+FIND2          000335' \r
+FIND3          000400' \r
+FIND3A         000372' \r
+FIND4          000365' \r
+FINDA          000360' \r
+FINDC          000367' \r
+FINDEQ         000402' \r
+FINDES         000406' \r
+FINDR          000370' \r
+FINDX          000353' \r
+FINIS2         000133' \r
+FINISH         000131' \r
+FIRST          001056' \r
+FL             000004  \r
+FOPEN          001000  \r
+GE2SEQ         000502' \r
+GET            000045' \r
+GET0           000055' \r
+GET1           000727' \r
+GET11          000726' \r
+GET2           001004' \r
+GETCHR         000612' \r
+GETF           000075' \r
+GETL           000073' \r
+GETL1          000100' \r
+GETLIN         000547' \r
+GETN           000047' \r
+GETNEX         000533' \r
+GETSEQ         000616' \r
+GEX            000507' \r
+GO             000730' \r
+GTCHAR         000710' \r
+IAMTEM         000136' \r
+INDEX          000011  \r
+INITIA         001016' \r
+INITIX         001030' \r
+INSE           000205' \r
+INSE1          000235' \r
+INSE16         000245' \r
+INSE2          000210' \r
+INSE3          000216' \r
+INSED          000227' \r
+INSEG          000264' \r
+INSER          000272' \r
+INSEX          000276' \r
+IPT            000005  \r
+ITAB           000303' \r
+JOBFF          001025' EXT\r
+K1             000326' \r
+\r
+\fEDITOR   V.003        1 APRIL 1968    MACRO 10 05:51 24-APR-78 PAGE 32-2\r
+EDITOR MAC     24-APR-78 03:01         SYMBOL TABLE\r
+\r
+K2             000327' \r
+K3             000330' \r
+K4             000331' \r
+K5             000332' \r
+KK1            001041' \r
+KK4            000656' \r
+KKK1           000600' \r
+LAST           000017  \r
+LOOP           000677' \r
+LOOP0          000675' \r
+LOOP1          001000' \r
+LOOP2          000703' \r
+NEWFIL         000772' \r
+OTL1           000607' \r
+OTLINE         000601' \r
+OTSEQ          000541' \r
+OTSEQ4         000545' \r
+OUTTER         000137' \r
+P              000010  \r
+PDP            000003  \r
+PDSTAK         001304' \r
+PER            000652' \r
+PLUNK          000735' \r
+PNEXT          000522' \r
+PRINT          000471' \r
+PRLOOP         000472' \r
+RESTT          001303' \r
+S0             000001  \r
+S1             000002  \r
+S2             000004  \r
+S3             000010  \r
+S4             000040  \r
+S5             000020  \r
+S6             000100  \r
+S7             000200  \r
+S8             000400  \r
+SAVE   261140  000000  \r
+SINDEX         000015  \r
+SJOBFF         001057' \r
+SLURP          000057' \r
+STEP           000516' \r
+STEPEX         000576' \r
+THSBLK         000135' \r
+TPT            000006  \r
+TTB            001313' \r
+TTB1           001314' \r
+TTB16          001336' \r
+TYIBF1         001046' \r
+TYIBF2         001047' \r
+TYIBUF         001045' \r
+TYOBF1         001043' \r
+TYOBUF         001042' \r
+\r
+\r
+\fEDITOR   V.003        1 APRIL 1968    MACRO 10 05:51 24-APR-78 PAGE 32-3\r
+EDITOR MAC     24-APR-78 03:01         SYMBOL TABLE\r
+\r
+TYP            000002  \r
+UNSAVE 262140  000000  \r
+WB             001064' \r
+WBC            001060' \r
+WBF            001063' \r
+\fFFFFFFFFFFFFFFF      UUU         UUU      DDDDDDDDDDDD            GGGGGGGGGGGG      EEEEEEEEEEEEEEE         222222222   \r
+FFFFFFFFFFFFFFF      UUU         UUU      DDDDDDDDDDDD            GGGGGGGGGGGG      EEEEEEEEEEEEEEE         222222222   \r
+FFFFFFFFFFFFFFF      UUU         UUU      DDDDDDDDDDDD            GGGGGGGGGGGG      EEEEEEEEEEEEEEE         222222222   \r
+FFF                  UUU         UUU      DDD         DDD      GGG                  EEE                  222         222\r
+FFF                  UUU         UUU      DDD         DDD      GGG                  EEE                  222         222\r
+FFF                  UUU         UUU      DDD         DDD      GGG                  EEE                  222         222\r
+FFF                  UUU         UUU      DDD         DDD      GGG                  EEE                              222\r
+FFF                  UUU         UUU      DDD         DDD      GGG                  EEE                              222\r
+FFF                  UUU         UUU      DDD         DDD      GGG                  EEE                              222\r
+FFFFFFFFFFFF         UUU         UUU      DDD         DDD      GGG                  EEEEEEEEEEEE                  222   \r
+FFFFFFFFFFFF         UUU         UUU      DDD         DDD      GGG                  EEEEEEEEEEEE                  222   \r
+FFFFFFFFFFFF         UUU         UUU      DDD         DDD      GGG                  EEEEEEEEEEEE                  222   \r
+FFF                  UUU         UUU      DDD         DDD      GGG   GGGGGGGGG      EEE                        222      \r
+FFF                  UUU         UUU      DDD         DDD      GGG   GGGGGGGGG      EEE                        222      \r
+FFF                  UUU         UUU      DDD         DDD      GGG   GGGGGGGGG      EEE                        222      \r
+FFF                  UUU         UUU      DDD         DDD      GGG         GGG      EEE                     222         \r
+FFF                  UUU         UUU      DDD         DDD      GGG         GGG      EEE                     222         \r
+FFF                  UUU         UUU      DDD         DDD      GGG         GGG      EEE                     222         \r
+FFF                  UUUUUUUUUUUUUUU      DDDDDDDDDDDD            GGGGGGGGG         EEEEEEEEEEEEEEE      222222222222222\r
+FFF                  UUUUUUUUUUUUUUU      DDDDDDDDDDDD            GGGGGGGGG         EEEEEEEEEEEEEEE      222222222222222\r
+FFF                  UUUUUUUUUUUUUUU      DDDDDDDDDDDD            GGGGGGGGG         EEEEEEEEEEEEEEE      222222222222222\r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  05:53:58\r
+File: DSKB0 :FUDGE2.LST   [8,296] Created: 20-April-1967 05:52:00 Printed: 24-April-1978 05:53:41\r
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:1311 \r
+File will be deleted after printing\r
+\f\r
+FUDGE2  V.011  MACRO 10 05:52 24-APR-78 PAGE 1\r
+FUDGE2 MAC     24-APR-78 03:09         2-OCT-70        ED YOURDON/VJC/DMN\r
+\r
+                               TITLE   FUDGE2  V.011\r
+                               SUBTTL  2-OCT-70        ED YOURDON/VJC/DMN\r
+                               ;FILE UPDATE GENERATOR\r
+                               ;"COPYRIGHT 1968,1969,DIGITAL EQUIPMENT CORP. MAYNARD,MASS. U.S.A."\r
+\r
+                       000011          VFUDGE==11              ;VERSION NUMBER\r
+                       000000          VPATCH==0               ;DEC PATCH LEVEL\r
+                       000000          VCUSTOM==0              ;NON-DEC PATCH LEVEL\r
+\r
+                       000137          JOBVER==137\r
+       000137                          LOC     JOBVER\r
+       000137  000000  000011          XWD VCUSTOM,VFUDGE+VPATCH*1000\r
+       000000'                         RELOC\r
+                                       MLON\r
+\r
+                               ;FUDGE ACCUMULATOR DEFINITIONS\r
+\r
+                       000001          A=      1               ;GENERAL COMMUNICATION AC\r
+                       000002          B=      2               ;SCRATCH ACCUMULATOR\r
+                       000003          T=      3               ;USED IN /C AND /X ONLY\r
+                       000004          C=      4               ;SCRATCH ACCUMULATOR\r
+                       000005          D=      5               ;IO DEVICE NUMBER ACCUMULATOR\r
+                       000006          E=      6               ;SCRATCH ACCUMULATOR\r
+                       000007          F=      7               ;FLAG ACCUMULATOR\r
+                       000010          G=      10              ;DEVICE CHARACTERISTICS AC\r
+                       000011          H=      11              ;USED IN GETCHR AND GETCMN\r
+                       000012          P=      12              ;PUSHDOWN POINTER AC\r
+                       000013          R=      13              ;PROGRAM NAME-USED IN READ,WRITE\r
+                       000014          S=      14              ;SIXBIT SYMBOL ACCUMULATOR\r
+                       000015          DIS=    15              ;DISPATCH ACCUMULATOR\r
+                       000016          EXT=    16              ;FILE NAME EXTENSION ACCUMULATOR\r
+                       000017          SW=     17              ;SWITCH UUO AC\r
+\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 2\r
+FUDGE2 MAC     24-APR-78 03:09         2-OCT-70        ED YOURDON/VJC/DMN\r
+\r
+                               ;FUDGE FLAG DEFINITIONS (RIGHT HALF OF ACCUMULATOR F)\r
+\r
+                       000001          DESTB== 1               ;1-DESTINATION DEVICE SEEN\r
+                       000002          SAVEB== 2               ;1-SWITCH SEEN,BUT NOT EXECUTED\r
+                       000004          SWTB==  4               ;1-SWITCH MODE ENTERED IN GETCHR\r
+                       000010          SLSHB== 10              ;1-SWITCH MODE ENTERED WITH </>\r
+                       000020          TTYOB== 20              ;1-NON-TTY OUTPUT;USED BY IO\r
+                       000040          TTYCB== 40              ;1-NON-TTY OUTPUT;USED BY COMMAND\r
+                       000100          PROGB== 100             ;1-PROGRAM NAME SEEN IN SPECIFICATION\r
+                       000200          NOLOCB==200             ;1-DELETE LOCAL SYMBOLS ***VJC\r
+                       000400          DEVB==  400             ;1-DEVICE NAME SEEN IN SPEC.\r
+                       001000          EXTB==  1000            ;1-EXPLICIT FILE NAME EXTENSION\r
+                       002000          ERRB==  2000            ;1-ERROR IN ENTRY BLOCK CHECK\r
+                       004000          INFOB== 4000            ;1-VALID INFORMATION IN COMMAND\r
+                       010000          CONB==  10000           ;1-CONTEXT OF <.> IS PROGRAM NAME\r
+                                                               ;0-CONTEXT OF <.> IS FILE NAME\r
+                       020000          F4IB==  20000           ;1-IGNORE F4 OUTPUT\r
+                       040000          CRLFTY==40000           ;1-CR,LF TYPED (FOR ERROR MSG)\r
+                       100000          POPBAK==100000          ;1-XCT POPJ P,  ;TO RETURN TO CALLING SEQ.\r
+                       200000          XFLG==  200000          ;1-INDEX THIS FILE\r
+                       400000          DTAFLG==400000          ;1-OUTPUT DEVICE IS DTA (SPECIAL INDEX)\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 3\r
+FUDGE2 MAC     24-APR-78 03:09         2-OCT-70        ED YOURDON/VJC/DMN\r
+\r
+\r
+\r
+\r
+                               ;HANDY BITS FOR CALLS TO DEVCHR FOR DEVICE CHARACTERISTICS\r
+                       000001          OUTBIT==1               ;1-DEVICE CAN DO OUTPUT\r
+                       000002          INBIT== 2               ;1-DEVICE CAN DO INPUT\r
+                       000004          DRCTRB==4               ;1-DEVICE HAS A DIRECTORY\r
+                       000010          TTYBIT==10              ;1-DEVICE IS A TTY\r
+                       000100          DTABIT==100             ;1-DEVICE IS A DTA\r
+                       040000          LPTBIT==40000           ;1-DEVICE IS LPT\r
+                       200000          DSKBIT==200000          ;1-DEVICE IS DSK\r
+\r
+                               ;OTHER USEFUL PARAMETER ASSIGNMENTS\r
+                       000200          N==     200             ;SIZE OF MASTER AND TRAN BUFFERS\r
+                       000020          XP==    20              ;SIZE OF PUSHDOWN LIST\r
+                       000500          SIZE==  500             ;SIZE OF PURE ENTRY BLOCK\r
+                       000505          X==     SIZE+5          ;SIZE OF ENTRY AND SAVE BLOCKS\r
+                       020000          IOEOF== 20000           ;1-END-OF-FILE HAS BEEN SEEN\r
+                       040000          IOBKTL==40000           ;1-BLOCK-TOO-LARGE ERROR\r
+                       100000          IODATA==100000          ;1-DATA ERROR\r
+                       200000          IODEV== 200000          ;1-DEVICE ERROR\r
+                       004000          IOBOT== 4000            ;1-MAG TAPE IS AT BEGINNING OF TAPE\r
+\r
+                       000011          RIBALC==11              ;NUMBER OF BLOCKS ALLOCATED\r
+\r
+                               ;EXTERNAL SYMBOLS\r
+                                       EXTERN  JOBFF, JOBREL, JOBSYM, JOBSA\r
+\r
+                               OPDEF   JSR     [PUSHJ  P,]     ;PURE FOR RE-ENTRANT FUDGE\r
+\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 4\r
+FUDGE2 MAC     24-APR-78 03:09         INITIALIZE AND SETUP OF FUDGE2\r
+\r
+                               SUBTTL INITIALIZE AND SETUP OF FUDGE2\r
+                               ;THIS SECTION OF CODING DOES THE FOLLOWING THINGS\r
+                               ;       1.RESETS ALL IO DEVICES BY CALLING [SIXBIT /RESET/]\r
+                               ;       2.INITIALIZES THE TELETYPE IN ASCII-LINE MODE\r
+                               ;       3.TYPES A * TO SIGNIFY READINESS FOR INPUT FROM USER\r
+                               ;       4.SETS UP A PUSHDOWN LIST\r
+                               ;       5.INITIALIZES VARIOUS ACCUMULATORS, CLEARS THE FLAGS,\r
+                               ;         AND INITIALIZES THE MSTBUF AND TRNBUF COUNTERS\r
+\r
+       000000' 255000  000000  FUDGE2: JFCL                    ;INCASE OF CCL ENTRY\r
+       000001' 047000  000000          RESET                   ;RESET I/O DEVICES   \r
+       000002' 200000  005126'         MOVE    [XWD LOW,LOW+1]\r
+       000003' 402000  002515'         SETZM   LOW             ;CLEAR DATA AREA\r
+       000004' 251000  005116'         BLT     LOWTOP-1\r
+       000005' 200000  005127'         MOVE    [XWD 17,11]     ;TEST FOR LEVEL D\r
+       000006' 400000  000000          SETZ                    ;FAILED, NOT LEVEL D\r
+       000007' 607000  003400          TLNN    (7B9)           ;IS IT LEVEL D OR LATER?\r
+       000010' 634000  000000          TDZA                    ;NO\r
+       000011' 561000  777776          HRROI   -2              ;THIS IS LEVEL D\r
+       000012' 202000  005111'         MOVEM   LEVEL           ;STORE STATE\r
+       000013' 400000  000000          SETZ                    ;CLEAR ACC'S\r
+       000014' 201740  000001          MOVEI   17,1            ;WITH A BLT OF ZERO\r
+       000015' 251740  000017          BLT     17,17           ;FROM 0-17\r
+       000016' 041000  000001          INIT    0,1             ;INITIALIZE TTY, CHANNEL 0\r
+       000017' 646471  000000          SIXBIT  /TTY/           ;TTY\r
+       000020' 004602' 004610'         XWD     OBUF, IBUF      ;ADDRESSES FOR BUFFER HEADERS\r
+       000021' 254200  000021'         HALT    .               ;ILLEGAL INSTRUCTION IF NO TTY\r
+       000022' 067000  000000          OUTPUT  0,              ;DUMMY OUTPUT ON TTY\r
+       000023' 201040  000052          MOVEI   A, "*"          ;PICK UP A <*>\r
+       000024' 136040  004603'         IDPB    A, OBUF+1       ;TYPE IT OUT\r
+       000025' 067000  000000          OUTPUT  0,              ;EMPTY THE BUFFER\r
+       000026' 200500  005125'         MOVE    P, XPDLST       ;SET UP A PUSHDOWN POINTER\r
+       000027' 561240  000001          HRROI   D,1             ;INITIALIZE DEVICE BUFFER\r
+       000030' 202240  003324'         MOVEM   D, DEVBUF       ;...\r
+       000031' 205040  777600          MOVSI   A, -N           ;GET COUNT OF MSTBUF AND TRNBUF\r
+       000032' 541040  002525'         HRRI    A, FILBUF+1     ;INITIALIZE POINTER IN FILBUF\r
+       000033' 202040  002524'         MOVEM   A, FILBUF       ;SET UP COUNT IN FILE BUFFER\r
+       000034' 541040  002725'         HRRI    A, PRGBUF+1     ;INITIALIZE POINTER IN PRGBUF\r
+       000035' 202040  002724'         MOVEM   A, PRGBUF       ;...\r
+       000036' 541040  003124'         HRRI    A,PPNBUF        ;INITIAL POINTER IN PPNBUF\r
+       000037' 202040  003124'         MOVEM   A,PPNBUF\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 5\r
+FUDGE2 MAC     24-APR-78 03:09         FUDGE2 COMMAND STRING DISPATCHING\r
+\r
+                               SUBTTL FUDGE2 COMMAND STRING DISPATCHING\r
+                               ;THIS ROUTINE PICKS UP CHARACTERS FROM THE TELETYPE BUFFER AND\r
+                               ;DISPATCHES TO THE PROPER ROUTINE DEPENDING ON THE TYPE OF\r
+                               ;CHARACTER.A TABLE OF BYTES AND BYTE POINTERS ALLOWS EACH\r
+                               ;CHARACTER IN THE ASCII SET TO BE TREATED INDIVIDUALLY. THE\r
+                               ;ROUTINE MAY BE ENTERED AT GETCHR IF IT IS DESIRED TO ACCUMULATE\r
+                               ;A 6-LETTER SIXBIT SYMBOL IN AC S. SYMBOLS OF DIFFERENT LENGTHS\r
+                               ;MAY BE ACCUMULATED IN DIFFERENT REGISTERS BY SETTING THE CONTENTS\r
+                               ;OF AC B TO THE DESIRED LENGTH, AND PUTTING A BYTE POINTER IN E\r
+                               ;AND ENTERING THE ROUTINE AT GETCHR+4.\r
+\r
+       000040' 622340  100000  GETCHR: TRZE    F,POPBAK        ;IMMEDIATE RETURN?\r
+       000041' 263500  000000          POPJ    P,              ;YES\r
+       000042' 201100  000006          MOVEI   B, 6            ;SET COUNT OF SYMBOL TO 6\r
+       000043' 200300  005117'         MOVE    E, SYMPTR       ;SET UP A BYTE POINTER FOR AC S\r
+       000044' 201600  000000          MOVEI   S, 0            ;INITIALIZE SYMBOL ACCUMULATOR\r
+       000045' 377000  004612' GETCMN: SOSG    IBUF+2          ;IS TTY BUFFER EMPTY?\r
+       000046' 066000  000000          INPUT   0,              ;YES, FILL IT UP\r
+       000047' 134040  004611'         ILDB    A, IBUF+1       ;GET A CHARACTER\r
+       000050' 200400  000001          MOVE    G, A            ;GET A COPY OF IT IN AC G\r
+       000051' 200000  005100'         MOVE    0, CURCHR       ;SAVE PREVIOUS CHAR\r
+       000052' 202000  005101'         MOVEM   0, LSTCHR       ;AS LAST CHAR\r
+       000053' 202040  005100'         MOVEM   A, CURCHR       ;SAVE CURRENT CHAR\r
+       000054' 231400  000011          IDIVI   G, 11           ;TRANSLATE TO 4-BIT CODE\r
+       000055' 135411  000077'         LDB     G, TABLE(H)     ;USE PROPER BYTE POINTER\r
+       000056' 305400  000004          CAIGE   G, 4            ;MODIFY CODE IF .GE. 4\r
+       000057' 606340  000004          TRNN    F, SWTB         ;MODIFY CODE IF IN SWITCH MODE\r
+       000060' 271400  000004          ADDI    G, 4            ;CHANGE DISPATCH BY ADDING 4\r
+       000061' 550450  000065'         HRRZ    H, DSPTCH(G)    ;GET PROPER DISPATCH ADDRESS\r
+       000062' 301400  000010          CAIL    G, 10           ;BUT CHANGE IF NOT CORRECT\r
+       000063' 554450  000055'         HLRZ    H, DSPTCH-10(G) ;TO A LEFT HALF DISPATCH\r
+       000064' 254011  000000          JRST    (H)             ;EXIT TO APPROPRIATE ROUTINE\r
+\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 6\r
+FUDGE2 MAC     24-APR-78 03:09         COMMAND DISPATCH TABLE AND BYTE POINTERS\r
+\r
+                               SUBTTL COMMAND DISPATCH TABLE AND BYTE POINTERS\r
+       000065' 000045' 002136' DSPTCH: XWD     GETCMN,ERR16    ;IGNORED CHAR, BAD CHAR(SWITCH)\r
+       000066' 000145' 000135'         XWD     SWTCH, SWTCHA   ;<(>, LETTER(SWITCH MODE)\r
+       000067' 000317' 002136'         XWD     COLON, ERR16    ;<:>, NUMBER(SWITCH MODE)\r
+       000070' 000257' 000146'         XWD     PERIOD,SWTCHE   ;<.>, <)>ESCAPE SWITCH MODE\r
+       000071' 000156' 002147'         XWD     LFTARW,ERR17    ;<?>OR<=>, BAD CHAR (NORMAL MODE)\r
+       000072' 000310' 000127'         XWD     COMMA, STORE    ;<,>, ALPHABETIC CHARACTER(NORMAL)\r
+       000073' 000521' 000127'         XWD     ALTMOD,STORE    ;<$>,NUMERIC CHARACTER(NORMAL)\r
+       000074' 000144' 002147'         XWD     SLASH, ERR17    ;</>, <)> ILLEGAL ESCAPE\r
+       000075' 000265' 000000          XWD     LBRACK, 0       ;LEFT ANGLE BRACKET, OR "["\r
+       000076' 000303' 000000          XWD     RBRACK, 0       ;RIGHT ANGLE BRACKET\r
+\r
+       000077' 400410  000110' TABLE:  POINT   4, BITE(G), 3\r
+       000100' 340410  000110'         POINT   4, BITE(G), 7\r
+       000101' 300410  000110'         POINT   4, BITE(G), 11\r
+       000102' 240410  000110'         POINT   4, BITE(G), 15\r
+       000103' 200410  000110'         POINT   4, BITE(G), 19\r
+       000104' 140410  000110'         POINT   4, BITE(G), 23\r
+       000105' 100410  000110'         POINT   4, BITE(G), 27\r
+       000106' 040410  000110'         POINT   4, BITE(G), 31\r
+       000107' 000410  000110'         POINT   4, BITE(G), 35\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 7\r
+FUDGE2 MAC     24-APR-78 03:09         BYTE TABLE FOR DISPATCHING\r
+\r
+                                SUBTTL BYTE TABLE FOR DISPATCHING\r
+                               ;CLASSIFICATION BYTE CODES\r
+                               ;       BYTE    DISP    CLASSIFICATION\r
+\r
+                               ;       00      00      ILLEGAL CHARACTER, SWITCH MODE\r
+                               ;       01      01      ALPHABETIC CHARACTER, SWITCH MODE\r
+                               ;       02      02      NUMERIC CHARACTER, SWITCH MODE\r
+                               ;       03      03      SWITCH MODE ESCAPE, SWITCH MODE\r
+\r
+                               ;       00      04      ILLEGAL CHARACTER, NORMAL MODE\r
+                               ;       01      05      ALPHABETIC CHARACTER, NORMAL MODE\r
+                               ;       02      06      NUMERIC CHARACTER, NORMAL MODE\r
+                               ;       03      07      SWITCH MODE ESCAPE, SWITCH MODE\r
+\r
+                               ;       04      10      IGNORED CHARACTER\r
+                               ;       05      11      ENTER SWITCH MODE WITH A <(>\r
+                               ;       06      12      DEVICE DELIMITER, <:>\r
+                               ;       07      13      FILE EXTENSION DELIMITER, <.>\r
+                               ;                       (CAN ALSO BE PART OF A PROGRAM NAME)\r
+                               ;       10      14      OUTPUT SPECIFICATION, <LFT ARW> OR <=>\r
+                               ;       11      15      FILE DELIMITER, <,>\r
+                               ;       12      16      COMMAND TERMINATOR, <ALT MODE>=33,175,176\r
+                               ;       13      17      ENTER SWITCH MODE WITH A </>\r
+                               ;       14      20      CHANGE CONTEXT OF PERIOD TO PROG NAME, <<> ,OR "["\r
+                               ;       15      21      CHANGE CONTEXT OF PERIOD TO FILE NAME, <>>\r
+\r
+                               ;BYTE TABLE CORRESPONDING TO 128 ASCII CHARS\r
+\r
+       000110' 200000  000000  BITE:   BYTE    (4)     4,0,0,0,0,0,0,0,0       ;NUL\r
+       000111' 210421  000000          BYTE    (4)     4,4,4,4,4,0,0,0,0\r
+       000112' 000000  000012          BYTE    (4)     0,0,0,0,0,0,0,0,12      ;?Z=$\r
+       000113' 500000  110100          BYTE    (4)     12,0,0,0,0,11,0,4,0     ;$\r
+       000114' 000001  230411          BYTE    (4)     0,0,0,0,5,3,1,0,11      ;***DMN\r
+       000115' 017310  421042          BYTE    (4)     0,7,13,2,2,2,2,2,2      ;-,.,/,0,1,2,3,4,5\r
+       000116' 104211  406215          BYTE    (4)     2,2,2,2,6,0,14,10,15    ;6,7,8,9,:,;,<,=,>\r
+       000117' 000104  210421          BYTE    (4)     0,0,1,1,1,1,1,1,1       ; , , ,B,C,D,E,F,G\r
+       000120' 042104  210421          BYTE    (4)     1,1,1,1,1,1,1,1,1       ;H,I,J,K,L,M,N,O,P\r
+       000121' 042104  210421          BYTE    (4)     1,1,1,1,1,1,1,1,1       ;Q,R,S,T,U,V,W,X,Y\r
+       000122' 070000  100021          BYTE    (4)     1,14,0,0,0,10,0,1,1     ;Z,[, ,], ,?, ,A,B\r
+       000123' 042104  210421          BYTE    (4)     1,1,1,1,1,1,1,1,1       ;C,D,E,F,G,H,I,J,K\r
+       000124' 042104  210421          BYTE    (4)     1,1,1,1,1,1,1,1,1       ;L,M,N,O,P,Q,R,S,T\r
+       000125' 042104  210012          BYTE    (4)     1,1,1,1,1,1,0,0,12      ;U,V,W,X,Y,Z, , ,$\r
+       000126' 510000  000000          BYTE    (4)     12,4                    ;$,DEL\r
+\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 8\r
+FUDGE2 MAC     24-APR-78 03:09         ROUTINES TO HANDLE 0-9,A-Z,. CHARACTERS\r
+\r
+                               SUBTTL ROUTINES TO HANDLE 0-9,A-Z,. CHARACTERS\r
+                               ;IN THE COMMAND STRING. IN NORMAL MODE, THE CHARACTER IS\r
+                               ;DEPOSITED TO FORM A SIXBIT SYMBOL. NOTE THAT "." IS LEGAL IN A PROGRAM NAME.\r
+                               ;E.G. <EXP.1,ALLIO.>, IF ENCLOSED IN< >. IN SWITCH MODE, THE PROPER\r
+                               ;INSTRUCTION IS EXECUTED WITH THE AID OF A DISPATCH TABLE.\r
+                               ;THEN, IF SWITCH MODE WAS ENTERED WITH A SLASH, FUDGE2 EXITS\r
+                               ;FROM SWITCH MODE.\r
+\r
+       000127' 660340  004000  STORE:  TRO     F,INFOB         ; INDICATE VALID INFO SEEN\r
+       000130' 361100  000045'         SOJL    B, GETCMN       ; JUMP IF NO ROOM FOR CHARACTER\r
+       000131' 305040  000141          CAIGE   A,141           ;WORRY ABOUT LOWER CASE LETTERS\r
+       000132' 275040  000040          SUBI    A, 40           ;CONVERT FROM ASCII TO SIXBIT\r
+       000133' 136040  000006          IDPB    A, E            ;STORE CHARACTER ACCORDING TO BYTE\r
+       000134' 254000  000045'         JRST    GETCMN          ;RETURN FOR NEXT CHARACTER\r
+\r
+       000135' 205740  072000  SWTCHA: MOVSI   SW, 072000      ;GET AN MTAPE OPCODE\r
+       000136' 301040  000141          CAIL    A,141           ;ACCEPT LOWER CASE SWITCHES\r
+       000137' 275040  000040          SUBI    A,40\r
+       000140' 256001  000115'         XCT     SLIST-101(A)    ;EXECUTE PROPER SWITCH INSTRUCTION\r
+       000141' 622340  000010          TRZE    F, SLSHB        ;SWITCH MODE ENTERED WITH A </>?\r
+       000142' 620340  000004          TRZ     F, SWTB         ;YES, EXIT FROM SWITCH MODE\r
+       000143' 254000  000045'         JRST    GETCMN          ;RETURN FOR MORE CHARACTERS\r
+\r
+\r
+                               ;THE FOLLOWING THREE ROUTINES HANDLE THE CONTROL CHARACTERS IN\r
+                               ;THE COMMAND STRING WHICH CAUSE FUDGE2 TO ENTER INTO AND EXIT\r
+                               ;FROM SWITCH MODE. THERE ARE TWO TYPES OF SWITCH MODE, DEPENDING\r
+                               ;ON WHETHER THE IT IS ENTERED WITH A </> OR A <(>.\r
+\r
+       000144' 660340  000010  SLASH:  TRO     F, SLSHB        ;ENTER SWITCH MODE WITH A </>\r
+       000145' 664340  000004  SWTCH:  TROA    F, SWTB         ;ENTER SWITCH MODE WITH A <(>\r
+       000146' 620340  000004  SWTCHE: TRZ     F, SWTB         ;EXIT FROM SWITCH MODE WITH A <)>\r
+       000147' 254000  000045'         JRST    GETCMN          ;RETURN FOR MORE CHARACTERS\r
+\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 9\r
+FUDGE2 MAC     24-APR-78 03:09         LEFT ARROW PROCESSOR\r
+\r
+                               SUBTTL LEFT ARROW PROCESSOR\r
+                               ;THE LEFT ARROW PROCESSOR IS ENTERED BY A DISPATCH FROM THE\r
+                               ;COMMAND STRING. IT SIGNALS THE END OF THE DESTINGATION DEVICE\r
+                               ;SPECIFICATION. IF THE SIXBIT SYMBOL ACCUMULATOR S IS NON-\r
+                               ;ZERO, IT ASSUMES THAT THE USER HAS OMITTED THE FILE NAME DE-\r
+                               ;LIMITER, AND CALLS THE FILE NAME ROUTINE. A PROGRAM NAME \r
+                               ;SPECIFICATION IN THE OUTPUT DEVICE IS ILLEGAL.\r
+                               ;FLAG SETTINGS: THE DESTINATION FLAG (DESTB) IS SET TO ONE,\r
+                               ;THE DEVICE FLAG IS SET TO ZERO, AND THE PROGR?M NAME FLAG (PROGB)\r
+                               ;IS SET TO ONE SO THAT THE FIRST DEVICE AFTER THE LEFT ARROW\r
+                               ;WILL NOT RESULT IN A CALL TO PUTDEV.\r
+                               ;IF NO OUTPUT DEVICE IS SEEN DSK IS ASSUMED.\r
+                               ;POPBAK IS SET SO CONTROL RETURNS FRON COLON VIA GETCHR\r
+\r
+       000150' 261500  000014  NODEV:  PUSH    P,S             ;SAVE FILE NAME\r
+       000151' 205600  446353          MOVSI   S,(SIXBIT /DSK/);DSK IS DEFAULT DEVICE\r
+       000152' 660340  100000          TRO     F,POPBAK        ;RETURN FROM GETCHR\r
+       000153' 260500  000317'         PUSHJ   P,COLON         ;FAKE A DEVICE SEEN\r
+       000154' 262500  000014          POP     P,S             ;RESTORE FILE NAME\r
+       000155' 263500  000000          POPJ    P,              ;RETURN\r
+\r
+\r
+       000156' 260500  000407' LFTARW: PUSHJ   P, SEMICP       ;DO A LOOKUP IF NECESSARY\r
+       000157' 620340  000400          TRZ     F, DEVB         ;SET THE DEVICE FLAG TO ZERO\r
+       000160' 660340  000101          TRO     F, PROGB+DESTB  ;SET PROGRAM AND DESTINATION FLAGS\r
+       000161' 254000  000040'         JRST    GETCHR          ;RETURN FOR NEXT SYMBOL\r
+\r
+\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 10\r
+FUDGE2 MAC     24-APR-78 03:09         THIS CODE PROCESSES PROJECT-PROGRAMMER NUMBERS\r
+\r
+                               SUBTTL  THIS CODE PROCESSES PROJECT-PROGRAMMER NUMBERS\r
+\r
+       000162' 400140  000000  LSQB:   SETZ    T,              ;START WITH ZERO\r
+       000163' 261500  000003          PUSH    P,T             ;AND STORE IT\r
+       000164' 260500  000210' LSQB1:  PUSHJ   P,TTYIN         ;GET NEXT CHAR.\r
+       000165' 306040  000135          CAIN    A,"]"           ;MATCHING SQB.?\r
+       000166' 254000  000202'         JRST    RSQB            ;YES\r
+       000167' 306040  000054          CAIN    A,","           ;COMMA?\r
+       000170' 254000  000177'         JRST    SQBCMA          ;YES,SORT OUT XWD\r
+       000171' 301040  000060          CAIL    A,"0"           ;IS IT AN OCTAL NUMBER?\r
+       000172' 303040  000071          CAILE   A,"9"           ;...\r
+       000173' 254000  000214'         JRST    ERRISQ          ;NO,ERROR\r
+       000174' 242140  000003          LSH     T,3             ;MAKE SPACE FOR NEXT CHAR.\r
+       000175' 271141  777720          ADDI    T,-60(A)        ;ADDI IN NEW DIGIT\r
+\r
+\r
+       000176' 254000  000164'         JRST    LSQB1           ;BACK FOR MORE\r
+\r
+       000177' 516152  000000  SQBCMA: HRLZM   T,(P)           ;STORE LEFT HALF ON STACK\r
+       000200' 400140  000000          SETZ    T,              ;START AFRESH\r
+       000201' 254000  000164'         JRST    LSQB1           ;AND GET RIGHT HALF\r
+\r
+       000202' 542152  000000  RSQB:   HRRM    T,(P)           ;PUT RIGHT HALF ON STACK\r
+       000203' 262500  000003          POP     P,T             ;AND POP XWD OFF\r
+       000204' 202140  005113'         MOVEM   T,PRJPRG        ;SAVE DEFAULT PROJ-PROG\r
+       000205' 326600  000045'         JUMPN   S,GETCMN        ;AFTER A FILE NAME IS ONLY TEMP.\r
+       000206' 202140  005112'         MOVEM   T,DEFPPN        ;PERMANENT DEFAULT PPN\r
+       000207' 254000  000045'         JRST    GETCMN          ;GET NEXT CHAR.\r
+\r
+       000210' 377000  004612' TTYIN:  SOSG    IBUF+2          ;BUFFER EMPTY\r
+       000211' 066000  000000          INPUT   0,              ;YES, FILL IT UP\r
+       000212' 134040  004611'         ILDB    A,IBUF+1        ;GET A CHARACTER\r
+       000213' 263500  000000          POPJ    P,              ;AND RETURN\r
+\r
+       000214' 201100  005130' ERRISQ: MOVEI   B,[ASCIZ /?Illegal project-programmer number/]\r
+       000215' 254000  002247'         JRST    ERROR\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 11\r
+FUDGE2 MAC     24-APR-78 03:09         DISPATCH TABLE FOR SWITCHES\r
+\r
+                               SUBTTL DISPATCH TABLE FOR SWITCHES\r
+\r
+       000216' 201640  000711' SLIST:  MOVEI   DIS, APPEND     ;A - APPEND INSTRUCTION\r
+       000217' 260500  000250'         PUSHJ   P, BSWTCH       ;B - BACKSPACE ONE FILE\r
+       000220' 201640  000730'         MOVEI   DIS, DELCPY     ;C - COPY AND DELETE LOCAL SYMBOLS ***VJC\r
+       000221' 201640  000701'         MOVEI   DIS, DELETE     ;D - DELETE INSTRUCTION\r
+       000222' 201640  000660'         MOVEI   DIS, EXTRCT     ;E - EXTRACT INSTRUCTION\r
+       000223' 254000  002136'         JRST    ERR16           ;F - ERROR\r
+       000224' 254000  002136'         JRST    ERR16           ;G - ERROR\r
+       000225' 254000  002136'         JRST    ERR16           ;H - ERROR\r
+       000226' 201640  000632'         MOVEI   DIS, INSERT     ;I - INSERT INSTRUCTION\r
+       000227' 254000  002136'         JRST    ERR16           ;J - ERROR\r
+       000230' 260500  000251'         PUSHJ   P, KSWTCH       ;K - SKIPFILE\r
+       000231' 201640  000600'         MOVEI   DIS, LIST       ;L - LIST COMMAND\r
+       000232' 254000  002136'         JRST    ERR16           ;M - ERROR\r
+       000233' 254000  002136'         JRST    ERR16           ;N - ERROR\r
+       000234' 254000  002136'         JRST    ERR16           ;O - ERROR\r
+       000235' 254000  002136'         JRST    ERR16           ;P - ERROR\r
+       000236' 254000  002136'         JRST    ERR16           ;Q - ERROR\r
+       000237' 201640  000621'         MOVEI   DIS, REPLCE     ;R - REPLACE INSTRUCTION\r
+       000240' 254000  002136'         JRST    ERR16           ;S - ERROR\r
+       000241' 260500  000252'         PUSHJ   P, TSWTCH       ;T - SKIP TO LOGICAL END OF TAPE\r
+       000242' 254000  002136'         JRST    ERR16           ;U - ERROR\r
+       000243' 254000  002136'         JRST    ERR16           ;V - ERROR\r
+       000244' 260500  000253'         PUSHJ   P, WSWTCH       ;W - REWIND MAG TAPE\r
+       000245' 201640  000722'         MOVEI   DIS,INDEX       ;X - INDEX THIS LIBRARY\r
+       000246' 254000  002136'         JRST    ERR16           ;Y - ERROR\r
+       000247' 260500  000254'         PUSHJ   P, ZSWTCH       ;Z - CLEAR DIRECTORY ON DECTAPE\r
+\r
+\r
+                               ;MAGTAPE AND DECTAPE DEVICE SWITCH HANDLERS\r
+                               ;THE FOLLOWING ROUTINES HANDLE THE B,K,T,W, AND Z SWITCHES\r
+                               ;BY ASSEMBLING THE PROPER CALL OR UUO INSTRUCTION. IF A \r
+                               ;DEVICE HAS ALREADY BEEN SEEN, THE CHANNEL NUMBER IS LOADED\r
+                               ;INTO THE COMMAND, AND THE INSTRUCTION IS EXECUTED. OTHER-\r
+                               ;WISE, EXECUTION IS DEFERRED BY SETTING A FLAG AND STORING\r
+                               ;THE PARTIALLY ASSEMBLED INSTRUCTION. THE INSTRUCTION IS\r
+                               ;EXECUTED LATER, AFTER THE DEVICE HAS BEEN SEEN.\r
+\r
+       000250' 271740  000001  BSWTCH: ADDI    SW, 1           ;CODE FOR BACKSPACE IS 17\r
+       000251' 271740  000006  KSWTCH: ADDI    SW, 6           ;CODE FOR SKIPFILE IS 16\r
+       000252' 271740  000007  TSWTCH: ADDI    SW, 7           ;CODE FOR SKIP TO L.E.O.T. IS 10\r
+       000253' 344740  000255' WSWTCH: AOJA    SW,.+2          ;CODE FOR REWIND IS 1\r
+       000254' 200740  005123' ZSWTCH: MOVE    SW, DTCLR       ;DIFFERENT UUO FOR /Z\r
+       000255' 660340  000002          TRO     F, SAVEB        ;TURN ON THE SWITCH BIT\r
+       000256' 263500  000000          POPJ    P,              ;EXIT\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 12\r
+FUDGE2 MAC     24-APR-78 03:09         PERIOD PROCESSOR\r
+\r
+                               SUBTTL PERIOD PROCESSOR\r
+                               ;THE PERIOD PROCESSOR IS CALLED BY A DISPATCH FROM GETCHR. IT \r
+                               ;PRECEDES A FILE NAME EXTENSION, UNLESS THE CONTEXT BIT CONB IS\r
+                               ;A ONE (CONB=1), IN WHICH CASE, THE PERIOD WAS FOUND INSIDE AN\r
+                               ;ANGLE BRACKET, INDICATING THAT IT IS PART OF A PROGRAM NAME.\r
+                               ;THE EXTENSION NAME IS GOTTEN BY ENTERING THE GETCHR ROUTINE\r
+                               ;WITH THE LENGTH SET TO THREE CHARACTERS, AND A BYTE POINTER\r
+                               ;SET TO STORE THE SYMOL IN ACCUMULATOR EXT. THE EXTENSION\r
+                               ;FLAG IS SET BY THIS ROUTINE.\r
+\r
+       000257' 602340  010000  PERIOD: TRNE    F, CONB         ;IS PERIOD PART OF A PROGRAM NAME?\r
+       000260' 254000  000127'         JRST    STORE           ;YES, STORE IT IN SYMBOL\r
+       000261' 660340  001000          TRO     F, EXTB         ;NO, SET EXTENSION FLAG\r
+       000262' 200300  005120'         MOVE    E, EXTPTR       ;GET ANOTHER BYTE POINTER\r
+       000263' 201100  000003          MOVEI   B, 3            ;ASSEMBLE A 3-CHARACTER WORD\r
+       000264' 254000  000045'         JRST    GETCMN          ;BUT DONT DESTROY S\r
+\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 13\r
+FUDGE2 MAC     24-APR-78 03:09         ROUTINES TO PROCESS ANGLE BRACKETS\r
+\r
+                               SUBTTL ROUTINES TO PROCESS ANGLE BRACKETS\r
+                               ;THE FOLLOWING ROUTINES PROCESS THE LEFT ANGLE BRACKET "<"\r
+                               ;AND RIGHT ANGLE BRACKET ">" CHARACTERS. THEY ARE ENTERED BY\r
+                               ;A DISPATCH FROM THE GETCHR ROUTINE. THE ANGLE BRACKETS\r
+                               ;CAN ACT AS FILE NAME OR PROGRAM NAME DELIMITERS, SO A CHECK\r
+                               ;IS MADE TO SEE IF THE SYMBOL ACCUMULATOR IS NON-ZERO. THE\r
+                               ;MAIN FUNCTION OF THE ROUTINES IS TO SET OR CLEAR THE CONTEXT\r
+                               ;BIT CONB, WHOSE INTERPRETATION IS AS FOLLOWS:\r
+                               ;SETTING OF BIT MEANING\r
+                               ;       0               COMMAS DELIMIT FILE NAMES, AND PERIODS\r
+                               ;                       DELIMIT FILE NAME EXTENSIONS\r
+                               ;       1               COMMAS DELIMIT PROGRAM NAMES, AND PERIODS\r
+                               ;                       ARE PART OF A PROGRAM NAME\r
+\r
+       000265' 606340  000001  LBRACK: TRNN    F, DESTB        ;IS THIS THE OUTPUT DEVICE?\r
+       000266' 254000  002007'         JRST    ERROR1          ;YES, SYNTAX ERROR\r
+       000267' 306040  000133          CAIN    A,"["           ;PROJECT-PROGRAMMER PAIR?\r
+       000270' 254000  000162'         JRST    LSQB            ;YES, HANDLE IT\r
+       000271' 200000  005102'         MOVE    0,SDEVCHR       ;GET SAVED DEV CHRSTCS\r
+       000272' 607000  200100          TLNN    0,DTABIT+DSKBIT ;LAST DEVICE DSK OR DTA?\r
+       000273' 254000  000277'         JRST    LBRACA          ;NO\r
+       000274' 200000  005101'         MOVE    0,LSTCHR        ;GET LAST CHAR\r
+       000275' 306000  000072          CAIN    0,72            ;WAS IT COLON?\r
+       000276' 254000  002007'         JRST    ERROR1          ;YES,:< ILLEGAL\r
+       000277'                 LBRACA:                         ;NO CONTINUE\r
+       000277' 260500  000407'         PUSHJ   P, SEMICP       ;PROCESS THE FILE NAME\r
+       000300' 660340  010000          TRO     F, CONB         ;SET CONTEXT TO PROGRAM NAMES\r
+       000301' 350000  005077'         AOS     MATCH           ;ADD ONE FOR EACH LEFT < ***VJC\r
+       000302' 254000  000040'         JRST    GETCHR          ;RETURN FOR MORE CHARACTERS\r
+\r
+       000303' 322600  000305' RBRACK: JUMPE   S,.+2           ;IS THERE A SYMBOL TO HANDLE?\r
+       000304' 260500  000470'         PUSHJ   P,COMMAP        ;YES,PROCESS THE FILE NAME\r
+       000305' 620340  010000          TRZ     F,CONB          ;SET CONTEXT TO FILE NAMES\r
+       000306' 370000  005077'         SOS     MATCH           ;SUBTRACT ONE FOR EACH RIGHT > ***VJC\r
+       000307' 254000  000040'         JRST    GETCHR          ;RETURN FOR MORE CHARACTERS\r
+\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 14\r
+FUDGE2 MAC     24-APR-78 03:09         COMMA PROCESSOR\r
+\r
+                               SUBTTL COMMA PROCESSOR\r
+                               ;THE COMMA ROUTINE IS ENTERED BY A DISPATCH FROM GETCHR.\r
+                               ;IT DETERMINES WHETHER THE COMMA DELIMITS A FILE NAME OR A\r
+                               ;PROGRAM NAME, AND TRANSFERS CONTROL EITHER TO SEMICP OR TO\r
+                               ;COMMAP.\r
+\r
+       000310' 606340  010000  COMMA:  TRNN    F, CONB         ;FILE NAME OR PRGRAM NAME?\r
+       000311' 254000  000314'         JRST    COMMAX          ;FILE NAME\r
+       000312' 260500  000470'         PUSHJ   P, COMMAP       ;PROGRAM NAME\r
+       000313' 254000  000040'         JRST    GETCHR          ;RETURN FOR MORE CHARACTERS\r
+\r
+       000314' 260500  000407' COMMAX: PUSHJ   P, SEMICP       ;FILE NAME, DO A LOOKUP\r
+       000315' 402000  005113'         SETZM   PRJPRG          ;CLEAR TEMP. PPN\r
+       000316' 254000  000040'         JRST    GETCHR          ;RETURN FOR MORE CHARACTERS\r
+\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 15\r
+FUDGE2 MAC     24-APR-78 03:09         COLON PROCESSOR\r
+\r
+                               SUBTTL COLON PROCESSOR\r
+                               ;THIS ROUTINE IS ENTERED BY A DISPATCH FROM THE GETCHR\r
+                               ;ITS PURPOSE IS TO INITIALIZE DEVICES USED BY FUDGE2 AND\r
+                               ;ASSIGN THEM A CHANNEL NUMBER. IF THE DEVICE IS THE TTY, THE\r
+                               ;ROUTINE EXITS IMMEDIATELY, SINCE THE TTY HAS ALREADY BEEN\r
+                               ;INITIALIZED. IF A PROGRAM WAS NOT SEEN IN THE PREVIOUS DEVICE\r
+                               ;SPECIFICATION, THEN THE PRECEDING FILE HAD NO PROGRAMS\r
+                               ;FOLLOWING IT, AND A ZERO IS PLACED IN THE LIST STRUCTURE IN\r
+                               ;THE 3-WORD FILE BLOCK, SO THAT THE GETDEV ROUTINE WILL\r
+                               ;KNOW THAT THE ENTIRE FILE IS DESIRED. IF THE COLON ROUTINE\r
+                               ;IS CALLED WITH 0 IN ACCUMULATOR S, THE ROUTINE ASSUMES\r
+                               ;THAT SOMETHING LIKE "DTA3:FOO?DTA4:BAR<X,Y,Z>,MTA0:::/R"\r
+                               ;WAS TYPED, AND IT PUTS A PHONY FILE NAME IN FILBUF TO KEEP\r
+                               ;THE BOOK-KEEPING STRAIGHT.\r
+\r
+       000317' 660340  000400  COLON:  TRO     F, DEVB         ;DEVICE WAS SEEN IN THIS SPEC.\r
+       000320' 602340  100000          TRNE    F,POPBAK        ;DEFAULT "DSK" BEING SET\r
+       000321' 254000  000324'         JRST    .+3             ;SO DON'T CLEAR PROJ-PROG\r
+       000322' 402000  005112'         SETZM   DEFPPN          ;CLEAR PERMANENT PPN\r
+       000323' 402000  005113'         SETZM   PRJPRG          ;AND TEMP. ALSO\r
+       000324' 322600  000373'         JUMPE   S, COLONC       ;NULL S IMPLIES FILES ON MTA,PTR\r
+       000325' 202600  002522'         MOVEM   S, COLON2       ;SAVE DEVICE FOR INIT\r
+       000326' 200400  000014          MOVE    G, S            ;GET A COPY OF THE DEVICE NAME\r
+       000327' 047400  000004          DEVCHR  G,              ;GET ITS CHARACTERISTICS\r
+       000330' 202400  005102'         MOVEM   G,SDEVCHR       ;SAVE DEV CHRSTCS ***VJC\r
+       000331' 603400  040010          TLNE    G,TTYBIT!LPTBIT ;IF EITHER TTY OR LPT\r
+       000332' 402000  005111'         SETZM   LEVEL           ;DON'T DO EXTENDED LOOKUPS EVER\r
+       000333' 603400  000010          TLNE    G, TTYBIT       ;IS THE DEVICE A TTY?\r
+       000334' 254000  000040'         JRST    GETCHR          ;YES, RETURN IMMEDIATELY\r
+       000335' 606340  000001          TRNN    F, DESTB        ;IS THIS THE OUTPUT DEVICE?\r
+       000336' 254000  000375'         JRST    COLON4          ;YES, GO CHECK SEPARATE THINGS\r
+       000337' 200240  003324'         MOVE    D, DEVBUF       ;GET POINTER TO DEVICE NAME TABLE\r
+       000340' 252240  000344' COLON6: AOBJP   D, COLON7       ;MORE DEVICES TO CHECK?\r
+       000341' 316605  003324'         CAMN    S, DEVBUF(D)    ;HAS DEVICE ALREADY BEEN INITTED?\r
+       000342' 254000  000040'         JRST    GETCHR          ;YES, DON'T RE-INIT IT\r
+       000343' 254000  000340'         JRST    COLON6          ;CHECK SOME MORE\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 16\r
+FUDGE2 MAC     24-APR-78 03:09         COLON PROCESSOR\r
+\r
+\r
+       000344' 202605  003324' COLON7: MOVEM   S, DEVBUF(D)    ;STORE THE NEW DEVICE NAME\r
+       000345' 205040  777777          MOVSI   A, -1           ;FIX UP THE COUNT IN THE BUFFER\r
+       000346' 272040  003324'         ADDM    A, DEVBUF       ;...\r
+       000347' 607400  000002          TLNN    G, INBIT        ;CAN DEVICE DO INPUT?\r
+       000350' 254000  002015'         JRST    ERROR4          ;NO, ERROR\r
+       000351' 201600  000000          MOVEI   S, 0            ;CLEAR OUT THE SYMBOL WORD\r
+       000352' 666340  000100          TRON    F, PROGB        ;WAS A PROGRAM NAME SEEN?\r
+       000353' 260500  000444'         PUSHJ   P, STNULL       ;NO, STORE A NULL IN FILE BLOCK\r
+       000354' 200040  000005          MOVE    A, D            ;CALCULATE BUFFER HEADER POSITION\r
+       000355' 221040  000003          IMULI   A, 3            ;3 WORDS PER BUFFER HEADER\r
+       000356' 271040  004610'         ADDI    A, IBUF         ;ALL BUFFER HEADERS IN IBUF BLOCK\r
+       000357' 350000  005103' COLON8: AOS     NUMDEV          ;ONE MORE DEVICE SEEN\r
+       000360' 202040  002523'         MOVEM   A, COLON3       ;SAVE WORD FOR INIT\r
+       000361' 201040  000014          MOVEI   A, 14           ;SET MODE TO BINARY\r
+       000362' 603400  040000          TLNE    G,LPTBIT        ;IS DEVICE THE LPT?\r
+       000363' 201040  000000          MOVEI   A, 0            ;YES, RESTORE MODE TO ASCII\r
+       000364' 542040  002521'         HRRM    A, COLON0       ;SAVE MODE FOR INIT\r
+       000365' 137240  005137'         DPB     D, [POINT 4,COLON1,12]\r
+       000366' 256000  002462'         XCT     COLON1          ;DO OPEN ON DEVICE\r
+       000367' 254000  002061'         JRST    ERROR9          ;DEVICE NOT AVAILABLE\r
+       000370' 606340  000001          TRNN    F, DESTB        ;IS THIS THE OUTPUT DEVICE?\r
+       000371' 254000  000040'         JRST    GETCHR          ;YES, NO MORE CHECKING - EXIT\r
+       000372' 607400  000004          TLNN    G, DRCTRB       ;DOES DEVICE HAVE A DIRECTORY?\r
+       000373' 260500  000406' COLONC: PUSHJ   P, COLONB       ;NO, GIVE IT A PHONY FILE NAME\r
+       000374' 254000  000040'         JRST    GETCHR          ;RETURN FOR MORE CHARACTERS\r
+\r
+                               ;OUTPUT DEVICE ONLY\r
+\r
+       000375' 202600  003325' COLON4: MOVEM   S, DEVBUF+1     ;SAVE THE DEVICE NAME\r
+       000376' 201240  000001          MOVEI   D, 1            ;SET DEVICE NUMBER TO 1\r
+       000377' 607400  000001          TLNN    G, OUTBIT       ;CAN DEVICE DO OUTPUT?\r
+       000400' 254000  002015'         JRST    ERROR4          ;NO, ERROR\r
+       000401' 603400  000100          TLNE    G,DTABIT        ;IS DEVICE DTA?\r
+       000402' 660340  400000          TRO     F,DTAFLG        ;YES, SET IN CASE INDEXING\r
+       000403' 205040  004605'         MOVSI   A, OBUF+3       ;CALCULATE BUFFER HEADER ADDRESS\r
+       000404' 660340  000040          TRO     F, TTYCB        ;INDICATE NON-TTY IO\r
+       000405' 254000  000357'         JRST    COLON8          ;ENTER MAIN PROCESSING LOOP\r
+\r
+       000406' 201600  465757  COLONB: MOVEI   S, 465757       ;FILE NAME OF "FOO"\r
+                                                               ;FALLS THROUGH TO SEMICP ROUTINE\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 17\r
+FUDGE2 MAC     24-APR-78 03:09         FILE NAME PROCESSOR\r
+\r
+                               SUBTTL FILE NAME PROCESSOR\r
+                               ;THIS ROUTINE IS CALLED BY THE COMMA ROUTINE WHEN IT HAS\r
+                               ;BEEN DETERMINED THAT THE CONTEXT OF THE COMMA IS THAT OF A\r
+                               ;FILE NAME. NULL FILES ARE IGNORED BY THE ROUTINE, AND CAUSE\r
+                               ;AN IMMEDIATE RETURN TO GETCHR. FOR OUTPUT DEVICES, AN ENTER\r
+                               ;IS PERFORMED, WHILE FOR INPUT DEVICES, THE FLOW OF CONTROL IS\r
+                               ;AS FOLLOWS:\r
+                               ;       1. IF THE PREVIOUS FILE HAD NO PROGRAMS, A ZERO IS\r
+                               ;          STORED IN THE 3RD WORD OF THE FILE BLOCK OF THAT\r
+                               ;          FILE - THE WORD THAT ORDINARILY POINTS TO THE \r
+                               ;          PROGRAM SUBLIST.\r
+                               ;       2. THE PROGRAM LIST FOR THE PREVIOUS FILE IS TERMINATED\r
+                               ;          BY PUTTING A ZERO IN THE PROGRAM BUFFER, AND PUTTING\r
+                               ;          A POINTER TO THE ZERO IN THE 3RD WORD OF THIS FILE\r
+                               ;          BLOCK (NOT THE PREVIOUS BLOCK)\r
+                               ;       3. THE FILE NAME AND FILE NAME EXTENSION AND THE DEVICE\r
+                               ;          CHANNEL NUMBER OF THE CURRENT FILE ARE STORED.\r
+\r
+       000407' 606340  000400  SEMICP: TRNN    F,DEVB          ;HAS A DEVICE BEEN SEEN?\r
+       000410' 260500  000150'         PUSHJ   P,NODEV         ;NO, SO ASSUME "DSK"\r
+       000411' 312740  005123'         CAME    SW,DTCLR        ;Z SWITCH? YES, OPERATE ON OUTPUT ONLY\r
+       000412' 137240  005140'         DPB     D, [POINT 4,SW,12]\r
+       000413' 622340  000002          TRZE    F, SAVEB        ;IS THERE A SWITCH TO PROCESS?\r
+       000414' 256000  000017          XCT     SW              ;YES, EXECUTE IT\r
+       000415' 322600  000462'         JUMPE   S, SEMIC3       ;IGNORE NULL FILES\r
+\r
+       000416' 626340  001000  SEMICA: TRZN    F, EXTB         ;EXPLICIT EXTENSION SEEN?\r
+       000417' 505700  624554          HRLI    EXT, 624554     ;NO, REPLACE WITH REL"\r
+       000420' 606340  000001          TRNN    F, DESTB        ;OUTPUT DEVICE?\r
+       000421' 254000  000447'         JRST    SEMIC2          ;YES, PROCESS SEPARATELY\r
+       000422' 261500  000014          PUSH    P, S            ;SAVE FILE NAME\r
+       000423' 201600  000000          MOVEI   S, 0            ;PUT IN A ZERO\r
+       000424' 626340  000100          TRZN    F, PROGB        ;WAS A PROGRAM SEEN IN PREVIOUS?\r
+       000425' 260500  000444'         PUSHJ   P, STNULL       ;NO, CLOSE OUT PREVIOUS FILE\r
+       000426' 260500  001144'         PUSHJ   P, PUTPRG       ;YES, CLOSE OUT PREVIOUS PRGLST\r
+       000427' 262500  000014  SEMIC4: POP     P, S            ;RESTORE FILE NAME\r
+       000430' 316600  005141'         CAMN    S,[12B5]        ;IS IT * ?***DMN\r
+       000431' 254000  001675'         JRST    ASTRSK          ;YES ***DMN\r
+       000432' 260500  001137'         PUSHJ   P, PUTFIL       ;NO, STORE FILENAME\r
+       000433' 200600  005112'         MOVE    S,DEFPPN        ;GET GLOBAL PPN\r
+       000434' 260500  001151'         PUSHJ   P,PUTPPN        ;SAVE IT\r
+       000435' 200600  000016          MOVE    S, EXT          ;GET FILE NAME EXTENSION\r
+       000436' 260500  001137'         PUSHJ   P, PUTFIL       ;STORE IT\r
+       000437' 542241  000000          HRRM    D, (A)          ;STORE CHANNEL NUMBER, ALSO\r
+       000440' 200600  005113'         MOVE    S,PRJPRG        ;GET TEMP. PPN\r
+       000441' 260500  001151'         PUSHJ   P,PUTPPN        ;SAVE IT ALSO\r
+       000442' 550600  002724'         HRRZ    S, PRGBUF       ;GET A POINTER TO PROGRAM LIST\r
+       000443' 254000  001137'         JRST    PUTFIL          ;STORE IT AND EXIT\r
+\r
+       000444' 550040  002524' STNULL: HRRZ    A, FILBUF       ;GET ADDRESS OF CURRENT BLOCK\r
+       000445' 402001  000000          SETZM   (A)             ;CLOSE OUT THE FILE\r
+       000446' 263500  000000          POPJ    P,              ;EXIT\r
+\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 18\r
+FUDGE2 MAC     24-APR-78 03:09         ENTER ON OUTPUT DEVICE DIRECTORY\r
+\r
+                               SUBTTL ENTER ON OUTPUT DEVICE DIRECTORY\r
+\r
+       000447' 202600  004572' SEMIC2: MOVEM   S, EBLOCK       ;SAVE FILE NAME FOR ENTER\r
+       000450' 202700  004573'         MOVEM   EXT, EBLOCK+1   ;SAVE FILE NAME EXTENSION\r
+       000451' 137240  005142'         DPB     D, [POINT 4,SEMIC1,12]\r
+       000452' 402000  004574'         SETZM   EBLOCK+2        ;CLEAR DATA AND PROTECTION\r
+       000453' 200140  005102'         MOVE    T,SDEVCHR       ;GET CHARACTERISTICS\r
+       000454' 607140  200000          TLNN    T,DSKBIT        ;IF NOT A DSK\r
+       000455' 402000  005111'         SETZM   LEVEL           ;CLEAR LEVEL D FLAG\r
+       000456' 332140  005111'         SKIPE   T,LEVEL         ;EITHER -2 OR 0\r
+       000457' 254000  000463'         JRST    DEFENT          ;SAVE ENTRY BLOCK\r
+       000460' 256000  002463'         XCT     SEMIC1          ;DO AN ENTER ON THE OUTPUT DEVICE\r
+       000461' 254000  002076'         JRST    ERR14           ;DIRECTORY FULL\r
+       000462' 263500  000000  SEMIC3: POPJ    P,              ;EXIT\r
+\r
+       000463' 200140  005143' DEFENT: MOVE    T,[XWD EBLOCK,SVENTR]\r
+       000464' 251140  005115'         BLT     T,SVENTR+1      ;SAVE EBLOCK\r
+       000465' 201140  000011          MOVEI   T,RIBALC        ;SET FOR 11 WORD LOOKUP\r
+       000466' 202140  004570'         MOVEM   T,EBLOCK-2      ;IN EXTENDED LOOKUP\r
+       000467' 254000  000462'         JRST    SEMIC3          ;DEFER ENTRY TIL AFTER LOOKUP\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 19\r
+FUDGE2 MAC     24-APR-78 03:09         THE PROGRAM NAME PROCESSOR\r
+\r
+                               SUBTTL THE PROGRAM NAME PROCESSOR\r
+                               ;THE COMMAP ROUTINE IS ENTERED BY A CALL FROM THE COMMA\r
+                               ;ROUTINE WHEN THE CONTEXT OF A COMMA IS THAT OF A PROGRAM NAME\r
+                               ;DELIMITER. ITS PURPOSE IS TO SAVE UP THE PROGRAM NAMES IT SEES\r
+                               ;IN THE PROGRAM BUFFER PRGBUF. THE PROGRAM NAMES ARE CONVERTED\r
+                               ;TO RADIX 50 REPRESENTATION, AND A CALL TO PUTPRG STORES THE\r
+                               ;PROGRAM NAME FOR LATER REFERENCE BY THE VARIOUS FUDGE SUBROUTINES\r
+                               ;------------------------------------------------------------------\r
+                               ;RADIX50 - SIXBIT CODE CONVERSION TABLE\r
+\r
+                               ;CHARACTER      SIXBIT          RADIX50\r
+\r
+                               ;0-9            20-31           01-12\r
+                               ;A-Z            41-72           13-44\r
+                               ;BLANK          00              00\r
+                               ;PERIOD         16              45\r
+                               ;$              04              46\r
+                               ;-------------------------------------------------------------------\r
+                               ;THE SYMBOL IS ASSUMED TO LEFT-JUSTIFIED UPON ENTERING, AND\r
+                               ;IS RIGHT-JUSTIFIED BEFORE CONVERSION TO RADIX 50.\r
+\r
+                               ;FLAG SETTINGS: THE PROGRAM BIT PROGB IS SET TO 1, AND THE FILE\r
+                               ;BIT FILEB IS SET TO 0.\r
+       000470' 660340  000100  COMMAP: TRO     F, PROGB        ;SET PROGRAM BIT\r
+       000471' 606340  000001          TRNN    F, DESTB        ;IS THIS THE OUTPUT DEVICE?\r
+       000472' 254000  002007'         JRST    ERROR1          ;YES, SYNTAX ERROR\r
+       000473' 200300  005117'         MOVE    E, SYMPTR       ;SET UP A BYTE POINTER TO S\r
+       000474' 201100  000006          MOVEI   B, 6            ;SET COUNTER TO SIX\r
+       000475' 201200  000000          MOVEI   C, 0\r
+       000476' 322600  000503'         JUMPE   S, COMMA1       ;NULL SYMBOL?\r
+       000477' 602600  000077  COMMA3: TRNE    S, 77           ;IS SYMBOL RIGHT-JUSTIFIED YET?\r
+       000500' 254000  000503'         JRST    COMMA1          ;YES, GO CONVERT TO RADIX 50\r
+       000501' 241600  777772          ROT     S, -6           ;NO, SHIFT IT ONE PLACE RIGHT\r
+       000502' 254000  000477'         JRST    COMMA3          ;CHECK AGAIN\r
+       000503' 221200  000050  COMMA1: IMULI   C, 50           ;CONVERT TO RADIX50\r
+       000504' 134040  000006          ILDB    A, E            ;PICK UP NEXT CHARACTER IN S\r
+       000505' 322040  000516'         JUMPE   A, COMMA4       ;A BLANK IS A BLANK IS A BLANK!\r
+       000506' 306040  000004          CAIN    A, 4            ;IS IT A <$>?\r
+       000507' 271040  000070          ADDI    A, 70           ;YES, COMPENSATE FOR SUBTRACTION\r
+       000510' 306040  000016          CAIN    A, 16           ;IS IT A <.>?\r
+       000511' 271040  000055          ADDI    A, 55           ;YES, COMPENSATE FOR SUBTRACTION\r
+       000512' 303040  000031          CAILE   A, 31           ;TRANSLATE TO RADIX 50 CODE\r
+       000513' 275040  000007          SUBI    A, 7            ;LETTER - SUBTRACT 26\r
+       000514' 275040  000017          SUBI    A, 17           ;NUMBER - SUBTRACT 17\r
+       000515' 270200  000001          ADD     C, A            ;COMBINE WITH PARTIAL WORD\r
+       000516' 367100  000503' COMMA4: SOJG    B, COMMA1       ;LOOP FOR SIX CHARACTERS\r
+       000517' 200600  000004          MOVE    S, C            ;PUT SYMBOL BACK IN S\r
+       000520' 254000  001144'         JRST    PUTPRG          ;STORE IT AND EXIT\r
+\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 20\r
+FUDGE2 MAC     24-APR-78 03:09         THE ALTMODE PROCESSOR\r
+\r
+                               SUBTTL THE ALTMODE PROCESSOR\r
+                               ;THE ALTMODE SUBROUTINE IS CALLED BY A DISPATCH FROM THE\r
+                               ;GETCHR ROUTINE WHEN A $ IS SEEN IN THE COMMAND STRING. IT SIGNALS\r
+                               ;THE END OF THE COMMAND STRING. A CHECK IS MADE ON THE SYNTAX\r
+                               ;OF THE COMMAND STRING, TO SEE IF AN OUTPUT DEVICE WAS SPEC-\r
+                               ;IFIED, AND TO SEE IF A COMMAND WAS GIVEN. THE LIST\r
+                               ;STRUCTURE FOR THE FILE NAMES AND PROGRAM NAMES IS TERMINATED\r
+                               ;BY TWO CALLS TO SEMICP, THE LAST OF WHICH HAS A FILE NAME OF 0.\r
+                               ;THE POINTERS AT THE TOP OF THE FILBUF,PRGBUF AND DEVBUF BUFFERS\r
+                               ;ARE RESET FOR LATER USER BY THE VARIOUS SUBROUTINES.\r
+\r
+       000521' 606340  004000  ALTMOD: TRNN    F,INFOB         ; IS THERE A COMMAND?\r
+       000522' 254000  000000'         JRST    FUDGE2          ; NO, RESTART\r
+       000523' 260500  002243'         PUSHJ   P,CRLF          ; ACKNOWLEDGE WITH A CR LF\r
+       000524' 660340  040000          TRO     F,CRLFTY        ;INDICATE CR,LF TYPED\r
+       000525' 260500  000407'         PUSHJ   P, SEMICP       ;STORE THIS FILE NAME\r
+       000526' 201600  000000          MOVEI   S, 0            ;MAKE A NULL FILE NAME\r
+       000527' 260500  000416'         PUSHJ   P, SEMICA       ;TERMINATE THE LIST STRUCTURE\r
+       000530' 200040  005124'         MOVE    A, FILXWD       ;SET UP A BLT POINTER TO FIX\r
+       000531' 251040  002527'         BLT     A, FILBUF+3     ;THE MASTER FILE PART,1ST WORD OF\r
+       000532' 402000  002530'         SETZM   FILBUF+4        ;FILBUF WAS JUNK,NOW 4TH WORD=0\r
+       000533' 201040  002531'         MOVEI   A, FILBUF+5     ;RESET POINTER TO TRANS. FILES\r
+       000534' 202040  002524'         MOVEM   A, FILBUF       ;...\r
+       000535' 201040  003125'         MOVEI   A,PPNBUF+1      ;RESET PPNBUF\r
+       000536' 202040  003124'         MOVEM   A,PPNBUF        ;AS IT WAS AT START\r
+       000537' 322640  002007'         JUMPE   DIS, ERROR1     ;NO COMMAND SEEN?\r
+       000540' 606340  000001          TRNN    F, DESTB        ;NO OUTPUT FILE MENTIONED?\r
+       000541' 254000  002007'         JRST    ERROR1          ;SYNTAX ERROR\r
+       000542' 332000  005077'         SKIPE   MATCH           ;LEFT < EQU RIGHT > ?***VJC\r
+       000543' 254000  002007'         JRST    ERROR1          ;SYNTAX ERROR ***VJC\r
+       000544' 602340  000040          TRNE    F, TTYCB        ;CHANGE OUTPUT IF ON TTY\r
+       000545' 660340  000020          TRO     F, TTYOB        ;...\r
+                                                               ;AND FALL INTO INBUF0\r
+\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 21\r
+FUDGE2 MAC     24-APR-78 03:09         THE ALTMODE PROCESSOR\r
+\r
+\r
+                               ;SEE HOW MANY 204(8) WORD BLOCKS FIT IN JOBREL-JOBFF.\r
+                               ;DIVIDE THIS NUMBER BY THE NUMBER OF DEVICES\r
+                               ;IN DEVBUF TABLE. THIS GIVES THE NO. OF BLOCKS\r
+                               ;THAT CAN BE ASSIGNED TO EACH DEVICE, IF ZERO,\r
+                               ;NEED MORE CORE. THE REMAINDER OF THE DIVISION\r
+                               ;INDICATES EXTRA BLOCKS THAT MAY BE\r
+                               ;ALLOCATED TO OUTPUT OR INPUT DEVICES\r
+\r
+       000546' 550040  000000* INBUF0: HRRZ    A, JOBREL       ;GET TOP OF JOB AREA\r
+       000547' 274040  000000*         SUB     A,JOBFF         ;BUFFER AREA AVAILABLE\r
+       000550' 231040  000204          IDIVI   A, 204          ;NUMBER OF DECTAPE BLOCKS\r
+       000551' 230040  005103'         IDIV    A,NUMDEV        ;DIVIDED BY NUMBER OF DEVICES\r
+       000552' 322040  000573'         JUMPE   A,INBUFG        ;NOT ENOUGH CORE\r
+       000553' 201300  000002          MOVEI   E,2             ;START INBUFS ON DEVICE #2\r
+       000554' 602340  000040          TRNE    F, TTYCB        ;IS OUTPUT ON TTY?\r
+       000555' 254000  000566'         JRST    INBUF1          ;NO, DO AN OUTBUF\r
+       000556' 200200  000001  INBUF2: MOVE    C, A            ;PICK UP NUMBER OF BLOCKS\r
+       000557' 361100  000561'         SOJL    A+1,.+2         ;ANY EXTRA BLOCKS? (REMAINDER)\r
+       000560' 340200  000000          AOJ     C,              ;YES, USE THEM\r
+       000561' 137300  005144'         DPB     E, [POINT 4, INBUF3,12]\r
+       000562' 256000  002464'         XCT     INBUF3          ;PERFORM THE INBUF\r
+       000563' 315300  000005          CAMGE   E, D            ;MORE DEVICES TO TAKE CARE OF?\r
+       000564' 344300  000556'         AOJA    E, INBUF2       ;YES, PROCESS THEM\r
+       000565' 254015  000000          JRST    (DIS)           ;NO, GO TO APPROPRIATE SUBROUTINE\r
+\r
+\r
+       000566' 200200  000001  INBUF1: MOVE    C, A            ;PICK UP NUMBER OF BLOCKS\r
+       000567' 361100  000571'         SOJL    A+1,.+2         ;ANY EXTRA BLOCKS?\r
+       000570' 340200  000000          AOJ     C,              ;YES, GIVE ONE TO OUTPUT\r
+       000571' 065044  000000  INBUF4: OUTBUF  1,(C)           ;OUTBUF ON DEVICE #1\r
+       000572' 254000  000556'         JRST    INBUF2          ;GO DO SOME INBUFS\r
+                               ;ASK FOR MORE CORE\r
+\r
+       000573' 550040  000546* INBUFG: HRRZ    A,JOBREL        ;GET ANOTHER K OF CORE\r
+       000574' 271040  002000          ADDI    A,2000\r
+       000575' 047040  000011          CORE    A,\r
+       000576' 254000  002170'         JRST    ERR22           ;NOT AVAILABLE\r
+       000577' 254000  000546'         JRST    INBUF0          ;TRY TO SET UP BUFFERS\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 22\r
+FUDGE2 MAC     24-APR-78 03:09         FUDGE2 COMMAND PROCESSORS\r
+\r
+                               SUBTTL  FUDGE2 COMMAND PROCESSORS\r
+\r
+                               ;LIST PROCESSOR\r
+                               ;THIS ROUTINE PROCESSES THE L COMMAND IN FUDGE2. BINARY\r
+                               ;PROGRAMS ARE READ, AND THEIR NAMES OUTPUT, UNTIL AN END\r
+                               ;OF FILE IS REACHED.\r
+\r
+       000600' 606340  000020  LIST:   TRNN    F,TTYOB         ;OUTPUT TO TTY?\r
+       000601' 254000  000610'         JRST    LIST1           ;MODE MUST BE ASCII\r
+       000602' 062040  000003          GETSTS  1,T             ;GET STATUS\r
+       000603' 626140  000014          TRZN    T,14            ;BINARY MODE SET?\r
+       000604' 254000  000610'         JRST    LIST1           ;NO, MUST BE ASCII\r
+       000605' 060043  000000          SETSTS  1,(T)           ;CHANGE MODE TO ASCII\r
+       000606' 205140  000700          MOVSI   T,700           ;SET UP NEW BYTE POINTER\r
+       000607' 202140  004606'         MOVEM   T,OBUF+4        ;SO WORD COUNT WILL BE CORRECT\r
+       000610' 260500  000772' LIST1:  PUSHJ   P, MSTGET       ;GET THE MASTER DEVICE\r
+       000611' 254000  002024'         JRST    ERROR6          ;NOT ENOUGH ARGUMENTS\r
+       000612' 476000  005116'         SETOM   NOWARN          ;DON'T GIVE WARNING MESSAGE IF INDEX SEEN\r
+       000613' 260500  001156' LIST2:  PUSHJ   P, READ         ;READ A PROGRAM NAME\r
+       000614' 254000  002257'         JRST    EXIT            ;ALL DONE\r
+       000615' 200100  000001          MOVE    B, A            ;GET THE PROGRAM NAME IN B\r
+       000616' 260500  002220'         PUSHJ   P, PTYPO        ;TYPE IT OUT\r
+       000617' 260500  002243'         PUSHJ   P, CRLF         ;TYPE A CRLF\r
+       000620' 254000  000613'         JRST    LIST2           ;RETURN FOR MORE PROGRAM NAMES\r
+\r
+\r
+                               ;REPLACE PROCESSOR\r
+                               ;THIS ROUTINE PROCESSES THE R COMMAND IN FUDGE2. THE TOTAL\r
+                               ;COMMAND STRING IS BROKEN INTO A LIST OF PROGRAMS FOR THE MASTER\r
+                               ;DEVICE, AND A LIST OF PROGRAMS FOR THE TRANSACTION DEVICES.\r
+                               ;THE ROUTINE READS THE MASTER FILE UNTIL ONE OF THE DESIRED\r
+                               ;REPLACEMENT PROGRAMS IS REACHED, THEN SWITCHES TO THE \r
+                               ;TRANSACTION DEVICE TO FIND THE PROGRAM WHICH IS TO REPLACE THE\r
+                               ;PROGRAM IN THE MASTER FILE. AFTER THE REPLACEMENT HAS BEEN\r
+                               ;EFFECTED, RESET IS CALLED TO RESTORE THE MASTER DEVICE TO ITS\r
+                               ;OLD POSITION.\r
+\r
+       000621' 260500  000772' REPLCE: PUSHJ   P, MSTGET       ;GET A PROGRAM FROM MASTER DEVICE\r
+       000622' 254000  000656'         JRST    IPROC7          ;NO MORE, COPY REST OF MASTER\r
+       000623' 260500  000743'         PUSHJ   P, COPYTO       ;COPY UP TO THE PROGRAM NAME\r
+       000624' 260500  000777'         PUSHJ   P, TRNGET       ;GET A PROGRAM FROM TRANSACTION\r
+       000625' 254000  002022'         JRST    ERROR5          ;USER DID NOT SUPPLY ENOUGH\r
+       000626' 260500  000751'         PUSHJ   P, FINDCP       ;FIND THE PROGRAM AND COPY IT\r
+       000627' 306240  000002          CAIN    D, 2            ;HAS THE MASTER DEVICE BEEN MOVED?\r
+       000630' 260500  001002'         PUSHJ   P, RESET        ;YES, RESET IT\r
+       000631' 254000  000621'         JRST    REPLCE          ;LOOK FOR MORE REPLACEMENTS\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 23\r
+FUDGE2 MAC     24-APR-78 03:09         INSERT PROCESSOR\r
+\r
+                               SUBTTL INSERT PROCESSOR\r
+                               ;THIS SUBROUTINE PROCESSES THE I COMMAND IN FUDGE. IT READS AND\r
+                               ;WRITES PROGRAMS FROM THE MASTER FILE UNTIL IT FINDS THE\r
+                               ;PROGRAM NAME CURRENTLY POINTED TO, AT WHICH TIME IT STARTS READING\r
+                               ;FROM THE TRANSACTION DEVICE, MAKING AN INSERTION AT THE\r
+                               ;PROPER PLACE.\r
+\r
+       000632' 260500  000772' INSERT: PUSHJ   P, MSTGET       ;GET A PROGRAM FROM MASTER FILE\r
+       000633' 254000  000656'         JRST    IPROC7          ;NO MORE, COPY REST OF MASTER\r
+       000634' 260500  000743'         PUSHJ   P, COPYTO       ;COPY UP TO A PROGRAM NAME\r
+       000635' 202200  002517'         MOVEM   C, SAVEAC       ;SAVE SPECIAL ACCUMULATOR\r
+       000636' 200240  005145'         MOVE    D, [XWD ENTBLK,SVEBLK]\r
+       000637' 251244  000506          BLT     D, X+1(C)       ;MOVE ENTRY BLOCK INTO SAFE PLACE\r
+       000640' 260500  000777'         PUSHJ   P, TRNGET       ;GET NEXT TRANSACTION FILE\r
+       000641' 254000  002022'         JRST    ERROR5          ;NOT ENOUGH TRANSACTION FILES\r
+       000642' 260500  000751'         PUSHJ   P, FINDCP       ;FIND TRANSACTION FILE AND COPY\r
+       000643' 302240  000002          CAIE    D, 2            ;HAS MASTER FILE BEEN JIGGLED?\r
+       000644' 254000  000647'         JRST    FIXUP           ;NO, RESTORE THE ENTRY BLOCK\r
+       000645' 260500  001002'         PUSHJ   P, RESET        ;YES, RESET IT\r
+       000646' 254000  000654'         JRST    INSER1          ;WRITE OUTGO BACK FOR MORE INSERTIONS\r
+\r
+       000647' 200200  002517' FIXUP:  MOVE    C, SAVEAC       ;RESTORE SPECIAL AC\r
+       000650' 204240  005145'         MOVS    D, [XWD ENTBLK,SVEBLK]\r
+       000651' 251244  000000          BLT     D, (C)          ;RESTORE ENTRY BLOCK\r
+       000652' 201240  000002          MOVEI   D, 2            ;SET UP CHANNEL AC\r
+       000653' 201640  000006          MOVEI   DIS, 6          ;SET UP BUFFER HEADER INDEX\r
+       000654' 260500  001305' INSER1: PUSHJ   P, WRITE        ;WRITE OUT THE CURRENT FILE\r
+       000655' 254000  000632'         JRST    INSERT          ;GO BACK FOR MORE INSERTIONS\r
+\r
+       000656' 260500  000737' IPROC7: PUSHJ   P, COPY         ;COPY REST OF MASTER FILE\r
+       000657' 254000  002257'         JRST    EXIT            ;EXIT\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 24\r
+FUDGE2 MAC     24-APR-78 03:09         EXTRACT PROCESSOR\r
+\r
+                                SUBTTL EXTRACT PROCESSOR\r
+                               ;THIS ROUTINE PROCESSES THE E COMMAND IN FUDGE. RATHER THAN\r
+                               ;ONE MASTER AND SEVERAL TRANSACTION FILES, ALL FILES ARE\r
+                               ;TREATED THE SAME. AFTER A CALL TO EITHER MSTGET OR TRNGET\r
+                               ;PROGRAMS ARE SEARCHED FOR AND WRITTEN ON THE OUTPUT DEVICE.\r
+\r
+       000660' 476000  005116' EXTRCT: SETOM   NOWARN          ;NO WARNING MESSAGE\r
+       000661' 260500  000772'         PUSHJ   P, MSTGET       ;GET A PROGRAM FROM MASTER DEVICE\r
+       000662' 254000  000670'         JRST    EPROC1          ;ALL DONE WITH MASTER DEVICE\r
+       000663' 326540  000666'         JUMPN   R,.+3           ;ANY PROGRAMS THIS FILE? **VJC\r
+       000664' 260500  000737'         PUSHJ   P,COPY          ;NO, COPY ENTIRE FILE ***VJC\r
+       000665' 254000  000670'         JRST    EPROC1          ; ***VJC\r
+       000666' 260500  000751'         PUSHJ   P, FINDCP       ;FIND THE PROGRAM AND COPY IT\r
+       000667' 254000  000660'         JRST    EXTRCT          ;RETURN FOR MORE MASTER PROGRAMS\r
+       000670' 201040  002531' EPROC1: MOVEI   A, FILBUF+5     ;GET PROGRAM FROM TRANS BUFFER\r
+       000671' 202040  002524'         MOVEM   A, FILBUF       ;INITIALIZE POINTER FIRST\r
+       000672' 260500  001031' EPROC2: PUSHJ   P, GETDEV       ;...\r
+       000673' 254000  002257'         JRST    EXIT            ;ALL DONE\r
+       000674' 326540  000677'         JUMPN   R,.+3           ;ANY PROGRAMS THIS FILE?  ***VJC\r
+       000675' 260500  000737'         PUSHJ   P,COPY          ;NO, COPY ENTIRE FILE ***VJC\r
+       000676' 254000  000672'         JRST    EPROC2          ; ***VJC\r
+       000677' 260500  000751'         PUSHJ   P, FINDCP       ;FIND THE PROGRAM AND COPY IT\r
+       000700' 254000  000672'         JRST    EPROC2          ;RETURN FOR MORE TRANS FILES\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 25\r
+FUDGE2 MAC     24-APR-78 03:09         DELETE PROCESSOR\r
+\r
+                               SUBTTL DELETE PROCESSOR\r
+                               ;THIS ROUTINE PROCESSES THE D COMMAND IN FUDGE2.  ONLY ONE\r
+                               ;INPUT FILE WILL BE READ, AND THE PROGRAM NAMES ASSOCIATED\r
+                               ;WITH ITS LIST WILL BE DELETED.\r
+\r
+       000701' 260500  000772' DELETE: PUSHJ   P, MSTGET       ;GET A PROGRAM TO BE DELETED\r
+       000702' 254000  000656'         JRST    IPROC7          ;FINISH OFF THE MASTER FILE\r
+       000703' 260500  001156' DPROC1: PUSHJ   P, READ         ;READ A PROGRAM\r
+       000704' 254000  002026'         JRST    ERROR7          ;EOF - CANT FIND IT\r
+       000705' 316540  000001          CAMN    R, A            ;CORRECT PROGRAM?\r
+       000706' 254000  000701'         JRST    DELETE          ;YES, GET THE NEXT ONE\r
+       000707' 260500  001305'         PUSHJ   P, WRITE        ;NO, WRITE THIS ONE OUT\r
+       000710' 254000  000703'         JRST    DPROC1          ;TRY AGAIN\r
+\r
+                               ;APPEND PROCESSOR\r
+                               ;THIS ROUTINE HANDLES THE A COMMAND IN FUDGE2. IT WILL COPY\r
+                               ;THE ENTIRE MASTER FILE, THEN START OBTAINING TRANSACTION\r
+                               ;DEVICES WITH CALLS TO TRNGET, APPENDING ONE OR MORE\r
+                               ;PROGRAMS FROM EACH FILE.\r
+\r
+       000711' 260500  000772' APPEND: PUSHJ   P, MSTGET       ;GET A PROGRAM FROM MASTER FILE\r
+       000712' 254000  002024'         JRST    ERROR6          ;NOT ENOUGH ARGUMENTS\r
+       000713' 260500  000737'         PUSHJ   P, COPY         ;COPY ENTIRE FILE\r
+       000714' 201040  002531'         MOVEI   A, FILBUF+5     ;INITIALIZE POINTER FOR TRANS\r
+       000715' 202040  002524'         MOVEM   A, FILBUF       ;...\r
+       000716' 260500  001031' APROC3: PUSHJ   P, GETDEV       ;GET A PROGRAM NAME\r
+       000717' 254000  002257'         JRST    EXIT            ;ALL DONE\r
+       000720' 260500  000751'         PUSHJ   P, FINDCP       ;FIND THE PROGRAM AND COPY IT\r
+       000721' 254000  000716'         JRST    APROC3          ;GET NEXT APPENDATION\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 26\r
+FUDGE2 MAC     24-APR-78 03:09         DELETE PROCESSOR\r
+\r
+\r
+                               ;THIS ROUTINE PROCESSES THE X COMMAND (INDEX LIBRARY)\r
+                               ;AND FALLS INTO DELETE LOCAL SYMBOLS CODE.\r
+                               ;IF NOT DESIRED SKIP TO DELCPY+1\r
+\r
+       000722' 200040  003325' INDEX:  MOVE    A,DEVBUF+1      ;GET OUTPUT DEVICE\r
+       000723' 047040  000004          DEVCHR  A,              ;GET ITS CHARACTERISTICS\r
+       000724' 607040  200100          TLNN    A,DSKBIT!DTABIT ;ONLY ALLOW DSK AND DTA AS LIBRARY DEVICES\r
+       000725' 254000  002172'         JRST    ERR23           ;GIVE ERROR MESSAGE\r
+       000726' 476000  005116'         SETOM   NOWARN          ;NO WARNING MESSAGE IF /X\r
+       000727' 660340  200000          TRO     F,XFLG          ;SET INDEX FLAG\r
+                               ;       TROA    F,XFLG          ;SET /X BUT NOT /C\r
+\r
+                               ;DELETE LOCAL SYMBOLS AND COPY PROCESSOR\r
+                               ;THIS ROUTINE PROCESSES THE C COMMAND\r
+                               ;ONLY THE MASTER FILE IS HANDLED\r
+\r
+       000730' 660340  000200  DELCPY: TRO     F, NOLOCB       ;SET FLAG TO DELETE LOCAL SYMBOLS\r
+       000731' 260500  000772'         PUSHJ   P, MSTGET       ;GET A PROGRAM FROM MASTER FILE\r
+       000732' 254000  002024'         JRST    ERROR6          ;NOT ENOUGH ARGUMENTS\r
+       000733' 260500  000737'         PUSHJ   P, COPY         ;COPY ENTIRE FILE\r
+       000734' 606340  200000          TRNN    F,XFLG          ;INDEX FLAG ON?\r
+       000735' 254000  002257'         JRST    EXIT            ;ALL DONE\r
+       000736' 254000  001571'         JRST    INDEX3          ;YES DO PASS 2\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 27\r
+FUDGE2 MAC     24-APR-78 03:09         FUDGE2 IO SUBROUTINES\r
+\r
+                               SUBTTL  FUDGE2 IO SUBROUTINES\r
+\r
+                               ;ROUTINES TO COPY FILES, COPY UP TO A GIVEN PROGRAM IN A FILE\r
+                               ;AND TO FIND A GIVEN PROGRAM IN A FILE AND COPY IT.\r
+\r
+                               ;THE COPY ROUTINE WILL COPY BINARY PROGRAMS FROM WHEREVER THE\r
+                               ;INPUT DEVICE HAPPENS TO BE WHEN IT IS CALLED, UP TO THE\r
+                               ;END OF FILE. SINCE COPY IS CALLED WITH A PUSHJ, THE END-OF-\r
+                               ;FILE EXIT IN INGET WILL EXIT TO THE PLACE THAT CALLED COPY.\r
+\r
+       000737' 260500  001156' COPY:   PUSHJ   P, READ         ;READ A PROGRAM\r
+       000740' 263500  000000          POPJ    P,              ;EXIT WHEN ALL THROUGH FILE\r
+       000741' 260500  001305'         PUSHJ   P, WRITE        ;WRITE OUT THE PROGRAM\r
+       000742' 254000  000737'         JRST    COPY            ;RETURN FOR MORE PROGRAMS\r
+\r
+                               ;THE COPYTO ROUTINE WILL READ AND WRITE PROGRAMS FROM THE\r
+                               ;INPUT DEVICE UNTIL THE PROGRAM WHOSE NAME IS IN ACCUMULATOR\r
+                               ;R IS FOUND, AT WHICH TIME IT EXITS\r
+\r
+       000743' 260500  001156' COPYTO: PUSHJ   P, READ         ;READ A PROGRAM\r
+       000744' 254000  002026'         JRST    ERROR7          ;EOF - CANT FIND IT\r
+       000745' 316540  000001          CAMN    R, A            ;IS IT THE CORRECT PROGRAM?\r
+       000746' 263500  000000          POPJ    P,              ;YES, EXIT\r
+       000747' 260500  001305'         PUSHJ   P, WRITE        ;NO, WRITE IT OUT\r
+       000750' 254000  000743'         JRST    COPYTO          ;READ SOME MORE PROGRAMS\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 28\r
+FUDGE2 MAC     24-APR-78 03:09         FUDGE2 IO SUBROUTINES\r
+\r
+\r
+                               ;THE FINDCP ROUTINE WILL SEARCH THE INPUT FILE FOR A PROGRAM\r
+                               ;WHOSE NAME IS IN ACCUMULATOR R, AND HAVING FOUND IT, WILL\r
+                               ;WRITE IT OUT. IF THE CONTENTS OF AC R ARE ZERO, THE ENTIRE\r
+                               ;FILE IS COPIED.\r
+\r
+       000751' 322540  000737' FINDCP: JUMPE   R, COPY         ;COPY ENTIRE FILE?\r
+       000752' 260500  001156' FIND1:  PUSHJ   P, READ         ;READ A PROGRAM FROM INPUT FILE\r
+       000753' 254000  000757'         JRST    FIND2           ;EOF, TRY REWINDING AND TRYING AGAIN\r
+       000754' 312540  000001          CAME    R, A            ;IS THIS THE RIGHT ONE?\r
+       000755' 254000  000752'         JRST    FIND1           ;NO, TRY AGAIN\r
+       000756' 254000  001305'         JRST    WRITE           ;YES, WRITE IT OUT AND EXIT\r
+\r
+       000757' 322040  002026' FIND2:  JUMPE   A,ERROR7        ;V3 IF EOF OUTPUT ERROR MESSAGE\r
+       000760' 260500  001024'         PUSHJ   P, BACKSP       ;BACKSPACE THE MAG TAPE\r
+       000761' 550040  002524'         HRRZ    A, FILBUF       ;PICK UP THE FILE POINTER\r
+       000762' 502041  000003          HLLM    A, 3(A)         ;CLEAR THE LOOKUP FLAG FOR DECTAPE\r
+       000763' 260500  001031'         PUSHJ   P, GETDEV       ;SET UP THE PROGRAM AGAIN\r
+       000764' 254000  002013'         JRST    ERROR3          ;IMPOSSIBLE ERROR RETURN\r
+       000765' 260500  001156' FIND3:  PUSHJ   P, READ         ;READ A PROGRAM FROM INPUT FILE\r
+       000766' 254000  002026'         JRST    ERROR7          ;EOF - REALLY CANT FIND IT\r
+       000767' 312540  000001          CAME    R, A            ;IS THIS THE RIGHT ONE?\r
+       000770' 254000  000765'         JRST    FIND3           ;NO, TRY AGAIN\r
+       000771' 254000  001305'         JRST    WRITE           ;YES, WRITE IT OUT AND EXIT\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 29\r
+FUDGE2 MAC     24-APR-78 03:09         FUDGE2 IO SUBROUTINES\r
+\r
+                               ;ROUTINE MSTGET RETRIEVES A PROGRAM NAME FROM THE MASTER\r
+                               ;DEVICE SPECIFICATIONS. IT SAVES THE POINTER IN FILBUF, \r
+                               ;CHANGES IT TO POINT TO ITS OWN BLOCK, THEN CALLS GETDEV\r
+\r
+       000772' 200040  002524' MSTGET: MOVE    A, FILBUF       ;GET THE POINTER TO CURRENT FILE\r
+       000773' 202040  002515'         MOVEM   A, FILSAV       ;SAVE THE CURRENT POINTER\r
+       000774' 201040  002525'         MOVEI   A, FILBUF+1     ;CHANGE IT TO POINT TO MASTER\r
+       000775' 202040  002524'         MOVEM   A, FILBUF       ;...\r
+       000776' 254000  001031'         JRST    GETDEV          ;CALL COMMON ROUTINE\r
+\r
+\r
+                               ;ROUTINE TRNGET RETRIEVES A PROGRAM NAME FROM THE TRANSACTION\r
+                               ;FILES. IT RESETS THE POINTER THAT MSTGET WIPED OUT, AND CALLS\r
+                               ;THE COMMON PROGRAM RETRIEVAL PROGRAM GETDEV.\r
+\r
+       000777' 200040  002515' TRNGET: MOVE    A, FILSAV       ;GET SAVED POINTER\r
+       001000' 202040  002524'         MOVEM   A, FILBUF       ;RESTORE IT TO ITS PLACE\r
+       001001' 254000  001031'         JRST    GETDEV          ;CALL COMMON ROUTINE\r
+\r
+                               ;ROUTINE RESET RESTORES THE STATE OF THE MASTER DEVICE TO\r
+                               ;WHAT IT WAS JUST AFTER THE LAST TIME MSTGET WAS CALLED. IT\r
+                               ;SETS THE POINTER OF THE MASTER FILE BACK TO THE PREVIOUS\r
+                               ;PROGRAM, CALLS MSTGET, AND FINDS THE PROGRAM AGAIN\r
+\r
+       001002' 201040  002531' RESET:  MOVEI   A,FILBUF+5      ;START OF TRANSACTION LIST  ***DMN\r
+       001003' 502040  002527'         HLLM    A, FILBUF+3     ;NOW CLEAR LOOKUP FLAG ON MASTER\r
+       001004' 370000  002527'         SOS     FILBUF+3        ;MOVE POINTER BACK ONE PROGRAM\r
+       001005' 336001  000000  RESET2: SKIPN   (A)             ;ANY TRANSACTION FILES ?    ***DMN\r
+       001006' 254000  001012'         JRST    RESET3          ;NO-ALL DONE                ***DMN\r
+       001007' 502041  000002          HLLM    A,2(A)          ;CLEAR LOOKUP FLAG ON IT    ***DMN\r
+       001010' 271040  000003          ADDI    A,3             ;NEXT FILE                  ***DMN\r
+       001011' 254000  001005'         JRST    RESET2          ;GO BACK FOR MORE           ***DMN\r
+       001012' 260500  000772' RESET3: PUSHJ   P, MSTGET       ;SET UP THE MASTER DEVICE\r
+       001013' 254000  002013'         JRST    ERROR3          ;FUDGE ERROR-NO MASTER!\r
+       001014' 260500  001024'         PUSHJ   P, BACKSP       ;BACKSPACE IN CASE ITS A MAG TAPE\r
+       001015' 200040  002515'         MOVE    A, FILSAV       ;DIDDLE THE POINTERS, BECAUSE MSTGET\r
+       001016' 202040  002524'         MOVEM   A, FILBUF       ;WILL BE CALLED AGAIN IMMEDIATELY\r
+       001017' 260500  001156' RESET1: PUSHJ   P, READ         ;READ A PROGRAM FROM MASTER FILE\r
+       001020' 254000  002013'         JRST    ERROR3          ;FUDGE ERROR-CANT FIND PROGRAM\r
+       001021' 312540  000001          CAME    R, A            ;IS IT THE RIGHT PROGRAM NAME?\r
+       001022' 254000  001017'         JRST    RESET1          ;NO, LOOK AGAIN\r
+       001023' 263500  000000          POPJ    P,              ;YES, EXIT\r
+       001024' 137240  005146' BACKSP: DPB     D, [POINT 4, BACK0,12]\r
+       001025' 137240  005147'         DPB     D, [POINT 4, BACK1, 12]\r
+       001026' 137240  005150'         DPB     D, [POINT 4, BACK2,12]\r
+       001027' 137240  005151'         DPB     D, [POINT 4,BACK3,12]\r
+       001030' 254000  002465'         JRST    BACK0           ;GO TO POSITION MAGTAPE\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 30\r
+FUDGE2 MAC     24-APR-78 03:09         COMMON PROGRAM RETRIEVAL PROGRAM GETDEV.\r
+\r
+                               SUBTTL COMMON PROGRAM RETRIEVAL PROGRAM GETDEV.\r
+                               ;THIS PROGRAM USES VARIOUS POINTERS AND BITS OF INFORMATION\r
+                               ;IN FILBUF AND PRG BUF TO RETURN TO THE USER A RADIX 50\r
+                               ;PROGRAM NAME AS SEEN IN THE COMMAND STRING. THE STRUCTURE\r
+                               ;OF INFORMATION IN THESE TWO BUFFERS IS AS FOLLOWS:\r
+\r
+                               ;FILBUF IS A LIST OF 3-WORD BLOCKS OF DATA ABOUT EACH FILE.\r
+                               ;THE FIRST WORD IN FILBUF IS A POINTER WHICH POINTS TO THE\r
+                               ;FIRST WORD OF THE BLOCK CURRENTLY BEING WORKED ON BY\r
+                               ;THE VARIOUS SUBROUTINES OF FUDGE. WHEN THE COMMAND STRING\r
+                               ;IS BEING PROCESSED AND INFORMATION IS BEING STORED IN FILBUF,\r
+                               ;THIS POINTER IS IN THE FORM OF AN AOBJN WORD SO THAT A CHECK\r
+                               ;CAN BE MADE FOR BUFFER OVERFLOW. THE CONTENTS OF THE 3-WORD\r
+                               ;FILE BLOCK IS AS FOLLOWS:\r
+                               ;       1ST WORD - SIXBIT FILE NAME, OR ZERO IF THIS IS THE\r
+                               ;                  END OF THE LIST .\r
+                               ;       2ND WORD - LEFT HALF CONTAINS A SIXBIT FILE NAME EXTENSION\r
+                               ;                  RIGHT HALF CONTAINS THE CHANNEL NUMBER FOR\r
+                               ;                  THIS FILE.\r
+                               ;       3RD WORD - LEFT HALF IS ZERO IS A LOOKUP HAS NOT BEEN\r
+                               ;                  DONE ON THIS FILE NAME, AND -1 IF IT HAS. A\r
+                               ;                  LOOKUP CAN THUS BE FORECED BY ZEROING OUT THE\r
+                               ;                  LEFT HALF OF THE WORD.\r
+                               ;                  RIGHT HALF CONTAINS A POINTER TO THE LAST\r
+                               ;                  PROGRAM NAME IN PRGBUF THAT WAS REFERENCED. THE\r
+                               ;                  RIGHT HALF IS ZERO IF THERE ARE NO PROGRAM\r
+                               ;                  NAMES ASSOCIATED WITH THE FILE.\r
+\r
+                               ;PRGBUF IS A LIST OF PROGRAM NAMES USED BY THE FILES IN FILBUF.\r
+                               ;THE FIRST WORD OF PRGBUF IS A POINTER WORD WHOSE USE IS THE\r
+                               ;SAME AS THE FIRST WORD OF FILBUF.THE ENTRIES IN PRGBUF CONSIST\r
+                               ;OF A LIST OF RADIX50 SYMBOLS, ONE TO A WORD, TERMINATED BY\r
+                               ;A ZERO WORD.\r
+\r
+                               ;FUDGE2 WORKS WITH FILBUF AND PRGBUF IN TWO DISTINCTLY \r
+                               ;DIFFERENT WAYS: ONCE WHEN IT IS PROCESSING THE COMMAND STRING\r
+                               ;AND STORING THE VARIOUS FILE NAMES AND PROGRAM NAMES, AND\r
+                               ;ONCE WHEN IT IS USING THE INFORMATION IN THE FILES TO PROCESS\r
+                               ;A FUDGE COMMAND. WHEN A FILE NAME IS SEEN IN THE COMMAND STRING,\r
+                               ;THE STATUS OF THE PREVIOUS FILE IS CHECKED. IF THE PREVIOUS\r
+                               ;FILE HAD NO PROGRAM NAMES, THEN ITS POINTER WORD (3RD WORD) IS\r
+                               ;ZEROED OUT TO INDICATE THE ABSCENCE OF ANY PROGRAMS IN PRGBUF.\r
+                               ;OTHERWISE, PROCESSING BEGINS ON THE CURRENT FILE: THE FILE\r
+                               ;NAME, FILE NAME EXTENSION, AND CHANNEL NUMBER ARE STORED. THE\r
+                               ;CONTENTS OF THE POINTER WORD IN PRGBUF ARE STORED IN THE\r
+                               ;POINTER WORD OF THE FILE BLOCK\r
+                               ;ROOM IS LEFT IN FILBUF SO THAT WHEN THE CARRIAGE RETURN IS\r
+                               ;SEEN, FUDGE2 CAN SHUFFLE THE FIRST FILE BLOCK UP ONE WORD AND\r
+                               ;INSERT ANOTHER NULL. THE EFFECT OF THIS KLUDGE IS THAT WE NOW\r
+                               ;HAVE TWO SEPARATE LISTS IN FILBUF, A MASTER LIST, AND A \r
+                               ;TRANSACTION LIST.\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 31\r
+FUDGE2 MAC     24-APR-78 03:09         COMMON PROGRAM RETRIEVAL PROGRAM GETDEV.\r
+\r
+       001031' 200100  002524' GETDEV: MOVE    B, FILBUF       ;GET POINTER TO FILE BLOCK\r
+       001032' 336002  000000          SKIPN   (B)             ;END OF LIST? (ZERO TERMINATES)\r
+       001033' 263500  000000          POPJ    P,              ;YES, EXIT\r
+       001034' 200040  003124'         MOVE    A,PPNBUF        ;GET POINTER TO PPN'S\r
+       001035' 200241  000000          MOVE    D,(A)           ;GET GLOBAL PPN\r
+       001036' 202240  005112'         MOVEM   D,DEFPPN        ;SAVE AS DEFAULT PPN\r
+       001037' 200241  000001          MOVE    D,1(A)          ;GET TEMP. PPN\r
+       001040' 202240  005113'         MOVEM   D,PRJPRG        ;SAVE AS TEMP. PPN\r
+       001041' 271040  000002          ADDI    A,2             ;INCREMENT POINTER\r
+       001042' 202040  003124'         MOVEM   A,PPNBUF        ;SAVE NEW POINTER\r
+       001043' 550242  000001          HRRZ    D, 1(B)         ;GET DEVICE NUMBER FOR THIS DEVICE\r
+       001044' 331002  000002          SKIPL   2(B)            ;HAS A LOOKUUP BEEN DONE?\r
+       001045' 254000  001066'         JRST    GET3            ;NO, GO DO LOOKUP\r
+       001046' 201640  000003  GET0:   MOVEI   DIS, 3          ;SET UP AC DIS\r
+       001047' 220640  000005          IMUL    DIS, D          ;C(DIS) = 3*C(D)\r
+       001050' 550042  000002          HRRZ    A, 2(B)         ;GET  POINTER TO  PROGRAM NAMES\r
+       001051' 322040  001060'         JUMPE   A, GET1         ;NULL PROGRAM LIST (NO POINTER)?\r
+       001052' 350042  000002          AOS     A, 2(B)         ;NO, INCREMENT POINTER BY ONE\r
+       001053' 200541  000000          MOVE    R, (A)          ;GET A PROGRAM NAME\r
+       001054' 326540  001063'         JUMPN   R, CPOPJ1       ;END OF PROGRAM LIST?\r
+       001055' 271100  000003          ADDI    B, 3            ;YES, INCREMENT FILBUF POINTER\r
+       001056' 202100  002524'         MOVEM   B, FILBUF       ;SAVE NEW POINTER\r
+       001057' 254000  001031'         JRST    GETDEV          ;TRY NEXT FILE BLOCK\r
+\r
+       001060' 201540  000000  GET1:   MOVEI   R, 0            ;NO PROGRAMS, RETURN ZERO\r
+       001061' 271100  000003          ADDI    B, 3            ;MOVE FILBUF POINTER TO NEXT BLOCK\r
+       001062' 202100  002524'         MOVEM   B, FILBUF       ;SAVE THE POINTER\r
+       001063' 354012  000000  CPOPJ1: AOSA    (P)             ;GOOD RETURN\r
+       001064' 262512  000000  POPOUT: POP     P,(P)           ;POP UP ONE LEVEL\r
+       001065' 263500  000000  CPOPJ:  POPJ    P,              ;EXIT\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 32\r
+FUDGE2 MAC     24-APR-78 03:09         COMMON PROGRAM RETRIEVAL PROGRAM GETDEV.\r
+\r
+\r
+       001066' 137240  005152' GET3:   DPB     D, [POINT 4,GET3A,12]\r
+       001067' 256000  002472'         XCT     GET3A           ;CLOSE CURRENT FILE BEFORE DOING...\r
+       001070' 200042  000000          MOVE    A, (B)          ;GET FILE NAME OF NEXT FILE\r
+       001071' 202040  004572'         MOVEM   A, EBLOCK       ;SET UP FOR LOOKUP\r
+       001072' 510042  000001          HLLZ    A, 1(B)         ;GET FILE NAME EXTENSION\r
+       001073' 202040  004573'         MOVEM   A, EBLOCK+1     ;SAVE IT FOR LOOKUP\r
+       001074' 563042  000002          HRROS   A, 2(B)         ;SET FLAG IN LEFT HALF OF 3RD WORD\r
+       001075' 137240  005153'         DPB     D, [POINT 4,GET4A,12]\r
+       001076' 336040  005113'         SKIPN   A,PRJPRG        ;GET TEMP. PPN\r
+       001077' 200040  005112'         MOVE    A,DEFPPN        ;USE PERMANENT IF NO TEMP.\r
+       001100' 202040  004575'         MOVEM   A,EBLOCK+3      ;SAVE IT\r
+       001101' 202040  004571'         MOVEM   A,EBLOCK-1      ;FOR LEVEL D ALSO\r
+       001102' 200045  003324'         MOVE    A,DEVBUF(D)     ;GET DEVICE\r
+       001103' 047040  000004          DEVCHR  A,              ;GET ITS CHARACTERISTICS\r
+       001104' 607040  200000          TLNN    A,DSKBIT        ;IF NOT A DSK\r
+       001105' 634140  000003          TDZA    T,T             ;NO EXTENDED LOOKUP\r
+       001106' 200140  005111'         MOVE    T,LEVEL         ;GET LEVEL\r
+       001107' 256000  002473' GET4:   XCT     GET4A           ;DO A LOOKUP ON NEW FILE\r
+       001110' 254000  001113'         JRST    .+3             ;NOT FOUND, TRY WITH BLANKS EXT.\r
+       001111' 402000  004575'         SETZM   EBLOCK+3        ;CLEAR PROJ-PROG\r
+       001112' 254000  001121'         JRST    DOENTR          ;SUCCESSFUL RETURN FROM LOOKUP\r
+       001113' 554042  000001          HLRZ    A, 1(B)         ;GET THE FILE NAME EXTENSION\r
+       001114' 302040  624554          CAIE    A, 624554       ;IS IT "REL" ?\r
+       001115' 254000  002043'         JRST    ERROR8          ;NO,  DON'T GIVE HIM ANOTHER CHANCE\r
+       001116' 502042  000001          HLLM    A, 1(B)         ;YES, TRY LOOKUP WITH 0 EXTENSION\r
+       001117' 402000  004573'         SETZM   EBLOCK+1        ;CLEAR EXTENSION IN LOOKUP BLOCK\r
+       001120' 254000  001107'         JRST    GET4            ;TRY AGAIN\r
+\r
+       001121' 336000  005111' DOENTR: SKIPN   LEVEL           ;IF NOT LEVEL D\r
+       001122' 254000  001134'         JRST    DOXSWT          ;ENTER DONE ALREADY\r
+       001123' 204140  005143'         MOVS    T,[XWD EBLOCK,SVENTR]\r
+       001124' 251140  004573'         BLT     T,EBLOCK+1      ;RESTORE EBLOCK\r
+       001125' 205140  777000          MOVSI   T,777000        ;MASK FOR PROTECTION\r
+       001126' 406140  004574'         ANDM    T,EBLOCK+2      ;CLEAR DATE AND TIME\r
+       001127' 402000  004571'         SETZM   EBLOCK-1        ;CLEAR PPN\r
+       001130' 200140  005111'         MOVE    T,LEVEL\r
+       001131' 256000  002463'         XCT     SEMIC1          ;DO ENTER\r
+                                       JRST    [HRRZ T,EBLOCK+1 ;GET ERROR CODE\r
+                                               CAIN    T,17    ;PARTIAL ALLOCATION ONLY?\r
+                                               JRST    .+1     ;YES, JUST CONTINUE\r
+       001132' 254000  005154'                 JRST    ERR14]  ;ERROR\r
+       001133' 402000  005111'         SETZM   LEVEL           ;NEVER AGAIN\r
+       001134' 602340  200000  DOXSWT: TRNE    F,XFLG          ;INDEX FLAG ON?\r
+       001135' 260500  001467'         PUSHJ   P,INDEX0        ;YES, SET UP POINTERS AND CORE\r
+       001136' 254000  001046'         JRST    GET0            ;AND CONTINUE\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 33\r
+FUDGE2 MAC     24-APR-78 03:09         COMMON PROGRAM RETRIEVAL PROGRAM GETDEV.\r
+\r
+\r
+                               ;SHORT ROUTINES TO STORE WORDS IN THE FILE BUFFER AND PROGRAM\r
+                               ;BUFFER\r
+                               ;ROUTINE PUTFIL STORES THE CONTENTS OF ACCUMULATOR S IN THE\r
+                               ;NEXT FREE LOCATION IN FILBUF. IT CHECKS FOR OVERFLOW.\r
+\r
+       001137' 200040  002524' PUTFIL: MOVE    A, FILBUF       ;GET POINTER WORD FOR FILBUF\r
+       001140' 252040  002011'         AOBJP   A, ERROR2       ;INCREMENT, CHECK FOR OVERFLOW\r
+       001141' 202040  002524'         MOVEM   A, FILBUF       ;SAVE NEW POINTER\r
+       001142' 202601  000000          MOVEM   S, (A)          ;SAVE FILE NAME ENTRY\r
+       001143' 263500  000000          POPJ    P,              ;EXIT\r
+\r
+\r
+                               ;ROUTINE PUTPRG STORES THE CONENTS OF ACCUMULATOR S IN THE\r
+                               ;NEXT FREE LOCATION IN PRGBUF. IT CHECKS FOR OVERFLOW.\r
+\r
+       001144' 200040  002724' PUTPRG: MOVE    A, PRGBUF       ;GET POINTER WORD FOR BUFFER\r
+       001145' 252040  002011'         AOBJP   A, ERROR2       ;INCREMENT, CHECK FOR OVERFLOW\r
+       001146' 202040  002724'         MOVEM   A, PRGBUF       ;SAVE NEW POINTER WORD\r
+       001147' 202601  000000          MOVEM   S, (A)          ;SAVE PROGRAM NAME\r
+       001150' 263500  000000          POPJ    P,              ;EXIT\r
+\r
+                               ;ROUTINE PUTPPN STORE THE TWO PPPN NUMBER IN PPNBUF\r
+\r
+       001151' 200040  003124' PUTPPN: MOVE    A,PPNBUF        ;GET POINTER WORD FOR BUFFER\r
+       001152' 252040  002011'         AOBJP   A,ERROR2\r
+       001153' 202040  003124'         MOVEM   A,PPNBUF        ;SAVE NEW POINTER WORD\r
+       001154' 202601  000000          MOVEM   S,(A)           ;SAVE PPN\r
+       001155' 263500  000000          POPJ    P,              ;EXIT\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 34\r
+FUDGE2 MAC     24-APR-78 03:09         ROUTINE TO INPUT ONE PROGRAM AT A TIME\r
+\r
+                               SUBTTL ROUTINE TO INPUT ONE PROGRAM AT A TIME\r
+                               ;THE FIRST WORD THAT THE PROGRAM READS WILL BE A BLOCK HEADER.\r
+                               ;BLOCKS ARE READ UNTIL AN ENTRY BLOCK IS FOUND, AND THE ENTIRE\r
+                               ;ENTRY BLOCK IS STORED IN AN INTERNAL BUFFER,SIZE PERMITTING.\r
+                               ;FOLLOWING THAT, THE NAME BLOCK IS READ, AND THE NAME OF THE \r
+                               ;PROGRAM IS RETURNED IN ACCUMULATOR A. PROVISION IS MADE FOR\r
+                               ;BLOCKS OF WORD COUNT ZERO. THE SECTION OF CODING AROUND READ2\r
+                               ;DELIBERATELY OMITS THIS CHECK IN ORDER TO READ IN THE NEXT\r
+                               ;BLOCK HEADER WITH A MINIMUM OF INSTRUCTIONS. ORDINARILY, EACH\r
+                               ;PROGRAM WILL BEGIN WITH AN ENTRY BLOCK, BUT THE ROUTINE WILL\r
+                               ;ALSO ALLOW THE PROGRAM TO BEGIN WITH A NAME BLOCK IF NO\r
+                               ;ENTRY BLOCK IS SEEN.\r
+\r
+       001156' 201200  003334' READ:   MOVEI   C, ENTBLK       ;SET UP POINTER TO BUFFER\r
+       001157' 260500  001647' READ6:  JSR     GETIN           ;GET A BLOCK HEADER\r
+       001160' 554100  000001          HLRZ    B, A            ;GET THE BLOCK CODE\r
+       001161' 306100  000014          CAIN    B,14            ;IS IT AN INDEX BLOCK?\r
+       001162' 254000  001276'         JRST    READX           ;YES, GET RID OF IT\r
+       001163' 306100  000004          CAIN    B, 4            ;IS IT AN ENTRY BLOCK?\r
+       001164' 254000  001206'         JRST    READ1           ;YES, PROCESS IT\r
+       001165' 306100  000006          CAIN    B, 6            ;IS IT A NAME BLOCK?\r
+       001166' 254000  001266'         JRST    READ7           ;YES, PROCESS IT\r
+       001167' 306100  000400          CAIN    B,400           ;F4 SIGNAL WORD?\r
+       001170' 254000  001270'         JRST    F4I             ;YES, PROCESS F4 BLOCKS\r
+       001171' 260500  001337'         PUSHJ   P, COUNT        ;CALCULATE SIZE OF BLOCK\r
+       001172' 322100  001157'         JUMPE   B, READ6        ;WORD COUNT OF ZERO?\r
+       001173' 311115  004612' READ6A: CAML    B, IBUF+2(DIS)  ;DOES BLOCK OVERLAP IO BUFFERS?\r
+       001174' 254000  001202'         JRST    READ6B          ;ADJUST B AND GET ANOTHER BUFFER\r
+       001175' 200055  004612'         MOVE    A, IBUF+2(DIS)  ;NO, DIDDLE BUFFER HEADER COUNT\r
+       001176' 274040  000002          SUB     A, B            ;ELIMINATE BLOCK OF LENGTH C(B)\r
+       001177' 202055  004612'         MOVEM   A, IBUF+2(DIS)  ;PUT NEW WORD COUNT BACK\r
+       001200' 272115  004611'         ADDM    B, IBUF+1(DIS)  ;MOVE BYTE POINTER PAST BLOCK\r
+       001201' 254000  001157'         JRST    READ6           ;GET NEXT BLOCK\r
+       001202' 274115  004612' READ6B: SUB     B, IBUF+2(DIS)  ;ACCOUNT FOR REST OF THIS BUFFER\r
+       001203' 402015  004612'         SETZM   IBUF+2(DIS)     ;FORCE ANOTHER INBUF\r
+       001204' 260500  001647'         JSR     GETIN           ;GET ANOTHER BUFFER OF INPUT\r
+       001205' 254000  001173'         JRST    READ6A          ;CHECK AGAIN\r
+\r
+\r
+                               ; THIS CODE MODIFIED 3-21-71 BY DCS (STANFORD) TO HANDLE\r
+                               ;  MORE THAN ONE ENTRY BLOCK (FAIL AND SAIL BOTH ISSUE\r
+                               ;  MULTIPLE ENTRY BLOCKS).\r
+\r
+                       000452  SIZZ==SIZE-<<SIZE+21>/22>-4     ;ACCOUNT FOR HDR BLKS, RELOC WRDS, PROGNAME\r
+       001206' 402000  003334' READ1:  SETZM   ENTBLK          ;SAME AS (C) AT PRESENT\r
+       001207' 505200  777777          HRLI    C,-1            ;AOBJN WILL OVERFLOW FIRST TIME\r
+\r
+                               ; BACK HERE FOR EACH NEW ENTRY BLOCK\r
+\r
+       001210' 211101  400000  READ2:  MOVNI   B,400000(A)     ;-1 IN LH, 377777-CT IN RH\r
+       001211' 553000  000001          HRRZS   A\r
+       001212' 270040  003334'         ADD     A,ENTBLK        ;NEW COUNT IF IT FITS\r
+       001213' 303040  000452          CAILE   A,SIZZ          ;TOO MUCH NOW?\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 34-1\r
+FUDGE2 MAC     24-APR-78 03:09         ROUTINE TO INPUT ONE PROGRAM AT A TIME\r
+\r
+       001214' 664340  002000           TROA    F,ERRB         ; YES, MARK ENTRY BLOCK TOO BIG\r
+       001215' 202040  003334'         MOVEM   A,ENTBLK        ;NO, UPDATE USED COUNT\r
+                               ; HERE FOR EACH NEW WORD\r
+       001216' 606100  377777  READ23: TRNN    B,377777        ;END THIS LOADER BLOCK?\r
+       001217' 254000  001233'          JRST    READ55         ; YES, CHECK NEXT\r
+       001220' 253100  001223'         AOBJN   B,NXTWRD        ;TIME FOR SOME RELOC BITS?\r
+       001221' 260500  001647'         JSR     GETIN           ;YES, GET THEM AND TOSS THEM\r
+       001222' 505100  777756          HRLI    B,-22           ;AND RESET COUNT\r
+       001223' 260500  001647' NXTWRD: JSR     GETIN           ;GET A DATA WORD\r
+                               ; (ROUTINE COURTESY OF DEC LOADER)\r
+\r
+       001224' 253200  001230'         AOBJN   C,READ22        ;NEED TO INSERT RELOC WORD?\r
+       001225' 606340  002000          TRNN    F,ERRB          ;YES, UNLESS NOT INSERTING\r
+       001226' 402004  000000           SETZM   (C)            ; ALL ENTRY RELOCS ARE 0\r
+       001227' 270200  005160'         ADD     C,[XWD -22,1]   ;LH 0 BEFORE ADD, SET UP NEXT\r
+       001230' 606340  002000  READ22: TRNN    F,ERRB          ;ARE WE INSERTING?\r
+       001231' 202044  000000           MOVEM   A,(C)          ; YES, PUT IT AWAY\r
+       001232' 254000  001216'         JRST    READ23          ;LOOP\r
+\r
+\r
+       001233' 260500  001647' READ55: JSR     GETIN           ;GET NEXT HEADER WORD\r
+       001234' 554100  000001          HLRZ    B,A             ;TYPE\r
+       001235' 306100  000004          CAIN    B,4             ;ANOTHER ENTRY?\r
+       001236' 254000  001210'          JRST    READ2          ; YES, STORE IT\r
+\r
+                               ; PROGRAM NAME -- FINISH ENTRY BLOCK OUT\r
+       001237' 201100  000004          MOVEI   B,4             ;ENTRY BLOCK TYPE\r
+       001240' 506100  003334'         HRLM    B,ENTBLK        ;NOW CORRECT TYPE,,COUNT\r
+       001241' 505200  000000          HRLI    C,0             ;CLEAR LH COUNT\r
+       001242' 344200  001266'         AOJA    C,READ7         ;STORE NAME BLOCK HEADER AND CONTINUE\r
+                               ; END OF DCS PATCH 3-21-71\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 35\r
+FUDGE2 MAC     24-APR-78 03:09         ROUTINE TO INPUT ONE PROGRAM AT A TIME\r
+\r
+       001243' 260500  001337' READ5:  PUSHJ   P, COUNT        ;CALCULATE SIZE OF BLOCK\r
+       001244' 322100  001261'         JUMPE   B, READ9        ;WORD COUNT OF ZERO?\r
+       001245' 260500  001647' READ3:  JSR     GETIN           ;GET A WORD\r
+       001246' 202044  000000          MOVEM   A, (C)          ;STORE IT\r
+       001247' 340200  000000          AOJ     C,              ;INCREMENT BUFFER POINTER\r
+       001250' 367100  001245'         SOJG    B, READ3        ;DONE READING YET?\r
+       001251' 306440  000002          CAIN    G+1, 2          ;IS THERE A COMMON WORD?\r
+       001252' 200044  777776          MOVE    A, -2(C)        ;GET PROGRAM NAME IN A\r
+       001253' 322040  001261'         JUMPE   A, READ9        ;IGNORE WORD OF ZERO\r
+       001254' 200100  000001          MOVE    B, A            ;GET RID OF EXTRA BLANKS\r
+       001255' 231100  000050  READ8:  IDIVI   B, 50           ;TRY DIVIDING IT BY 50\r
+       001256' 326140  001261'         JUMPN   B+1, READ9      ;FILTERED OUT ALL THE BLANKS?\r
+       001257' 200040  000002          MOVE    A, B            ;NO, STORE SYMBOL AGAIN\r
+       001260' 254000  001255'         JRST    READ8           ;TRY ANOTHER DIVISION\r
+\r
+       001261' 602340  002000  READ9:  TRNE    F, ERRB         ;ERROR CONDITION?\r
+       001262' 254000  002064'         JRST    ERR10           ;YES\r
+       001263' 606340  200000          TRNN    F,XFLG          ;INDEX FLAG ON?\r
+       001264' 254000  001063'         JRST    CPOPJ1          ;NO, SKIP EXIT\r
+       001265' 254000  001514'         JRST    INDEX1          ;YES SAVE ENTRIES\r
+\r
+       001266' 202044  000000  READ7:  MOVEM   A, (C)          ;STORE NAME BLOCK HEADER\r
+       001267' 344200  001243'         AOJA    C, READ5        ;GO READ NAME BLOCK\r
+\r
+       001270' 660340  020000  F4I:    TRO     F,F4IB          ;DONT OUTPUT DURING F4 SEARCH\r
+       001271' 261500  000004          PUSH    P,C             ;SAVE ENTRY BLOCK\r
+       001272' 260500  001346'         PUSHJ   P,F4            ;PASS F4 BLOCKS\r
+       001273' 262500  000004          POP     P,C             ;RESTORE ENTRY BLOCK\r
+       001274' 620340  020000          TRZ     F,F4IB          ;TURN OFF IGNORE BIT\r
+       001275' 254000  001157'         JRST    READ6           ;GO PROCESS NEXT PROGRAM\r
+\r
+       001276' 336000  005116' READX:  SKIPN   NOWARN          ;DO WE WANT A MESSAGE?\r
+                                       TTCALL  3,[ASCIZ /WARNING NO INDEX ON OUTPUT FILE - CONTINUING\r
+       001277' 051140  005161' /]\r
+       001300' 476000  005116'         SETOM   NOWARN          ;ONCE IS ENOUGH\r
+       001301' 402015  004612'         SETZM   IBUF+2(DIS)     ;FORCE ANOTHER INBUF\r
+       001302' 260500  001647'         JSR     GETIN           ;INPUT THE NEXT BLOCK\r
+       001303' 370015  004612'         SOS     IBUF+2(DIS)     ;WORD COUNT OUT BY ONE\r
+       001304' 254000  001160'         JRST    READ6+1         ;AND RETURN TO CODE\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 36\r
+FUDGE2 MAC     24-APR-78 03:09         ROUTINE TO OUTPUT ONE PROGRAM AT A TIME\r
+\r
+                               SUBTTL ROUTINE TO OUTPUT ONE PROGRAM AT A TIME\r
+                               ;THE WRITE SUBROUTINE WILL OUTPUT AN ENTIRE BINARY RE-\r
+                               ;LOCATABLE PROGRAM AS WRITTEN BY MACRO6. IT ASSUMES THAT THE\r
+                               ;ENTRY BLOCK AND NAME BLOCK FOR THE PROGRAM ARE IN THE\r
+                               ;INTERNAL BUFFER ENTBLK, AND OUTPUTS THESE BEFORE PICKING UP\r
+                               ;MORE BLOCKS FROM THE CURRENT INPUT DEVICE. BLOCKS ARE READ\r
+                               ;AND WRITTEN UNTIL THE END BLOCK HAS BEEN PROCESSED. PROVISION I\r
+                               ;IS MADE FOR BLOCKS WITH A WORD COUNT OF ZERO.\r
+\r
+       001305' 275200  003334' WRITE:  SUBI    C, ENTBLK       ;GET COUNT OF ENTRY BLOCK\r
+       001306' 322200  001314'         JUMPE   C, WRITE3       ;NOTHING TO OUTPUT?\r
+       001307' 201100  003334'         MOVEI   B, ENTBLK       ;GET A POINTER IN B\r
+       001310' 200042  000000  WRITE2: MOVE    A, (B)          ;GET A BINARY WORD\r
+       001311' 260500  001656'         PUSHJ   P, OUT          ;OUTPUT IT\r
+       001312' 340100  000000          AOJ     B,              ;INCREMENT POINTER\r
+       001313' 367200  001310'         SOJG    C, WRITE2       ;KEEP GOING UNTIL BUFFER EMPTY\r
+       001314' 260500  001647' WRITE3: JSR     GETIN           ;GET A BLOCK HEADER\r
+       001315' 554100  000001          HLRZ    B,A             ;GET THE BLOCK TYPE CODE ***VJC\r
+       001316' 606340  000200          TRNN    F,NOLOCB        ;DELETE LOCAL SYMBOLS? ***VJC\r
+       001317' 254000  001322'         JRST    .+3             ;NO\r
+       001320' 306100  000002          CAIN    B,2             ;IS IT A SYMBOL BLOCK? ***VJC\r
+       001321' 254000  001410'         JRST    DELLOC          ;GO DELETE LOCAL SYMBOL ***VJC\r
+                                                               ;COME BACK TO WRITE3 ***VJC\r
+                                                               ;UNLESS EXIT ON END-OF-FILE ***VJC\r
+\r
+       001322' 260500  001656'         PUSHJ   P, OUT          ;OUTPUT IT\r
+       001323' 306100  000400          CAIN    B, 400          ;IS THIS A FORTRAN IV SIGNAL WORD?\r
+       001324' 254000  001346'         JRST    F4              ;YES, PROCESS F4 OUTPUT\r
+       001325' 202100  002520'         MOVEM   B, SAVEBT       ;SAVE THE BLOCK TYPE\r
+       001326' 260500  001337'         PUSHJ   P, COUNT        ;NO, GET SIZE OF BLOCK\r
+       001327' 322100  001314'         JUMPE   B, WRITE3       ;WORD COUNT OF ZERO?\r
+       001330' 260500  001647' WRITE4: JSR     GETIN           ;OUTPUT THE BLOCK\r
+       001331' 260500  001656'         PUSHJ   P, OUT          ;...\r
+       001332' 367100  001330'         SOJG    B, WRITE4       ;LOOP BACK UNTIL DONE\r
+       001333' 200040  002520'         MOVE    A, SAVEBT       ;RETRIEVE THE BLOCK TYPE\r
+       001334' 302040  000005          CAIE    A, 5            ;WAS IT AN END BLOCK?\r
+       001335' 254000  001314'         JRST    WRITE3          ;NO, RETURN FOR MORE BLOCKS\r
+       001336' 263500  000000          POPJ    P,              ;YES, EXIT\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 37\r
+FUDGE2 MAC     24-APR-78 03:09         ROUTINE TO OUTPUT ONE PROGRAM AT A TIME\r
+\r
+\r
+                               ;THE COUNT SUBROUTINE CALCULATES THE LENGTH OF THE VARIOUS \r
+                               ;BLOCKS READ BY THE WRITE AND READ SUBROUTINES. THE POSITIVE\r
+                               ;WORD COUNT IS FOUND IN THE RIGHT HALF OF THE ENTRY BLOCK \r
+                               ;HEADER, WHICH IS ASSUMED TO BE IN AC A UPON ENTERING. THE\r
+                               ;LENGTH WILL BE RETURNED IN AC B, AND INCLUDES THE DATA WORDS\r
+                               ;(SYMBOLS, ENTRY WORDS, ETC.) AND THE SUBHEADERS, OF WHICH\r
+                               ;THERE IS ONE FOR EVERY 18 (DECIMIAL) DATA WORDS. THE BLOCK\r
+                               ;HEADER IS DESTROYED, AND IS NOT INCLUDED IN THE LENGTH.\r
+\r
+       001337' 550400  000001  COUNT:  HRRZ    G, A            ;GET NUMBER OF WORDS\r
+       001340' 231400  000022          IDIVI   G, 22           ;1SUBHEADER/18 DATA WORDS\r
+       001341' 271401  000000          ADDI    G,(A)           ;ADD INTO WORD COUNT\r
+       001342' 322440  001344'         JUMPE   G+1,.+2         ;1 EXTRA SUBHEADER FOR\r
+       001343' 340400  000000          AOJ     G,              ;STRAY ONES\r
+       001344' 200100  000010          MOVE    B, G            ;RESULTS IN AC B\r
+       001345' 263500  000000          POPJ    P,              ;EXIT\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 38\r
+FUDGE2 MAC     24-APR-78 03:09         ROUTINE TO HANDLE FORTRAN OUTPUT\r
+\r
+                               SUBTTL ROUTINE TO HANDLE FORTRAN OUTPUT\r
+\r
+                               ;SUBSECTION OF THE WRITE ROUTINE TO HANDLE OUTPUT FROM THE\r
+                               ;FORTRAN IV COMPILER. THE MAIN OBJECT OF THE ROUTINE IS TO\r
+                               ;LOOK FOR THE END BLOCK. OTHER BLOCKS ARE MERELY COPIED OUT.\r
+                               ;THE BLOCK TYPES ARE GIVEN BY THE FOLLOWING TABLE\r
+                               ;----------------------------------------------------------------\r
+                                       ;BITS 0-17      BITS18-23       BITS 24-35              TYPE\r
+\r
+                               ;777777         70              N                  DATA STATEMENT\r
+                               ;777777         50              N           ABSOLUTE MACHINE CODE\r
+                               ;777777         0               -           PROGRAMMER LABELS\r
+                               ;777777         31              -           MADE LABELS\r
+                               ;777777         60              -           ENTRY LABELS\r
+                               ;777777                 777776              END BLOCK\r
+                               ;-----------------------------------------------------------------\r
+       001346' 260500  001647' F4:     JSR     GETIN           ;GET A FORTRAN IV BLOCK HEADER\r
+       001347' 260500  001405'         PUSHJ   P, OUT4         ;OUTPUT IT\r
+       001350' 641040  777777          TLC     A, -1           ;TURN ONES TO ZEROES IN LEFT HALF\r
+       001351' 603040  777777          TLNE    A, -1           ;NO, WAS LEFT HALF ALL ONES?\r
+       001352' 254000  001346'         JRST    F4              ;NO, IT WAS CALCULATED MACHINE CODE\r
+       001353' 306040  777776          CAIN    A, -2           ;YES, IS RIGHT HALF = 777776?\r
+       001354' 254000  001372'         JRST    ENDST           ;YES, PROCESS F4 END BLOCK\r
+       001355' 135100  005173'         LDB     B, [POINT 6,A,23];GET CODE BITS FROM BITS 18-23\r
+       001356' 620040  770000          TRZ     A, 770000       ;THEN WIPE THEM OUT\r
+       001357' 302100  000070          CAIE    B, 70           ;IS IT A DATA STATEMENT?\r
+       001360' 306100  000050          CAIN    B, 50           ;IS IT ABSOLUTE MACHINE CODE?\r
+       001361' 254000  001365'         JRST    MACHCD          ;YES, TREAT IT LIKE DATA STATEMENTS\r
+       001362' 260500  001647'         JSR     GETIN           ;NO, ITS A LABEL OF SOME SORT\r
+       001363' 260500  001405'         PUSHJ   P, OUT4         ;WHICH CONSISTS OF ONE WORD\r
+       001364' 254000  001346'         JRST    F4              ;LOOK FOR NEXT BLOCK HEADER\r
+\r
+       001365' 550100  000001  MACHCD: HRRZ    B, A            ;GET THE WORD COUNT IN AC B\r
+       001366' 260500  001647'         JSR     GETIN           ;INPUT A WORD\r
+       001367' 260500  001405'         PUSHJ   P, OUT4         ;OUTPUT IT\r
+       001370' 367100  001365'         SOJG    B, MACHCD       ;LOOP BACK FOR REST OF THE BLOCK\r
+       001371' 254000  001346'         JRST    F4              ;GO LOOK FOR NEXT BLOCK\r
+\r
+       001372' 201100  000001  ENDST:  MOVEI   B,1             ;TWO WORDS, FIVE TABLES, ONE WORD, ONE TABLE\r
+       001373' 201200  000006          MOVEI   C,6             ;TO GO\r
+       001374' 260500  001647' F4LUP1: JSR     GETIN           ;GET TABLE MEMBER\r
+       001375' 260500  001405' F4LUP3: PUSHJ   P,OUT4          ;OUTPUT WORD\r
+       001376' 365100  001374'         SOJGE   B,F4LUP1        ;LOOP WITHIN A TABLE\r
+       001377' 321200  001065'         JUMPL   C,CPOPJ         ;LAST TABLE - RETURN\r
+       001400' 367200  001402'         SOJG    C,F4LUP2        ;FIRST TWO WORDS AND FIVE TABLES\r
+       001401' 322200  001374'         JUMPE   C,F4LUP1        ;COMMON LENGTH WORD\r
+       001402' 260500  001647' F4LUP2: JSR     GETIN           ;READ HEADER WORD\r
+       001403' 200100  000001          MOVE    B,A             ;COUNT TO COUNTER\r
+       001404' 254000  001375'         JRST    F4LUP3          ;STASH\r
+\r
+       001405' 606340  020000  OUT4:   TRNN    F,F4IB          ;DONT DO OUTPUT?\r
+       001406' 260500  001656'         PUSHJ   P,OUT           ;YES, DO OUTPUT\r
+       001407' 263500  000000          POPJ    P,              ;RETURN\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 39\r
+FUDGE2 MAC     24-APR-78 03:09         ROUTINE TO DELETE LOCAL SYMBOLS FROM SYMBOL BLOCK\r
+\r
+                               SUBTTL ROUTINE TO DELETE LOCAL SYMBOLS FROM SYMBOL BLOCK\r
+\r
+                               ;ALL LOCAL AND SUPPRESSED LOCAL SYMBOLS ARE DELETED\r
+                               ;EXTERNALS,INTERNAL AND SUPPRESSED INTERNALS ARE NOT DELETED.\r
+\r
+       001410' 552040  005047' DELLOC: HRRZM   A,BSZ           ;SIZE OF SYMBOL BBLE\r
+       001411' 260500  001461'         PUSHJ   P,DELINI        ;CLEAR NEW HEADER & RELOC WORDS\r
+                                                               ;SET PB = SYMBLK+2\r
+       001412' 260500  001647' DELGTR: JSR     GETIN           ;GET RELOCATION WORD\r
+       001413' 202040  005052'         MOVEM   A,RELOCS        ;SAVE IT\r
+       001414' 200040  005122'         MOVE    A,PTGR          ;INIT POINTER TO GET\r
+       001415' 202040  005050'         MOVEM   A,PTGRS         ;RELOCATION WORD\r
+\r
+       001416' 260500  001647' DELGT1: JSR     GETIN           ;GET FIRST WORD OF PAIR\r
+       001417' 134000  005050'         ILDB    0,PTGRS         ;GET RELOCATION BITS & HOLD\r
+       001420' 603040  100000          TLNE    A,(1B2)         ;IS SYMBOL  LOCAL?\r
+       001421' 254000  001435'         JRST    DELDEC          ;YES, DON'T COPY\r
+       001422' 202043  000000          MOVEM   A,0(T)          ;STORE FIRST WORD\r
+       001423' 260500  001647'         JSR     GETIN           ;GET SECOND WORD INTO A\r
+       001424' 202043  000001          MOVEM   A,1(T)          ;STORE SECOND WORD\r
+       001425' 136000  005051'         IDPB    0,PTSRS         ;STORE RELOCATION BITS\r
+       001426' 201040  000002          MOVEI   A,2             ;COUNT WORDS STORED\r
+       001427' 272040  005053'         ADDM    A,SYMBLK        ;I.E. UPDATE WORD COUNT\r
+       001430' 271140  000002          ADDI    T,2             ;UPDATE NEXT LOCATION TO STORE\r
+       001431' 200040  005051'         MOVE    A,PTSRS         ;HAVE WE STORED 9\r
+       001432' 607040  770000          TLNN    A,770000        ;SYMBOL PAIRS?\r
+       001433' 260500  001447'         PUSHJ   P,DELWRT        ;YES, WRITE IT OUT\r
+       001434' 254000  001436'         JRST    DELDEC+1        ;ALREADY HAVE 2ND WORD\r
+\r
+       001435' 260500  001647' DELDEC: JSR     GETIN           ;GET SECOND WORD INTO A\r
+       001436' 370000  005047'         SOS     BSZ             ;HAVE WE EXHAUSTED\r
+       001437' 377000  005047'         SOSG    BSZ             ;ALL WORDS IN BLOCK?\r
+       001440' 254000  001445'         JRST    DELFIN          ;YES, NONE LEFT\r
+       001441' 200040  005050'         MOVE    A,PTGRS         ;HAVE WE GOT 9\r
+       001442' 603040  770000          TLNE    A,770000        ;SYMBOL PAIRS YET?\r
+       001443' 254000  001416'         JRST    DELGT1          ;NO, GET NEXT PAIR\r
+       001444' 254000  001412'         JRST    DELGTR          ;YES, GET RELOCATION\r
+\r
+       001445' 260500  001447' DELFIN: PUSHJ   P,DELWRT        ;ORIGINAL BLOCK EMPTY NOW\r
+       001446' 254000  001314'         JRST    WRITE3          ;GET NEXT BLOCK\r
+\r
+\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 40\r
+FUDGE2 MAC     24-APR-78 03:09         ROUTINE TO WRITE OUT NEW SYMBOL BBLE\r
+\r
+                               SUBTTL ROUTINE TO WRITE OUT NEW SYMBOL BBLE\r
+\r
+       001447' 336040  005053' DELWRT: SKIPN   A,SYMBLK        ;ANYTHING TO WRITE\r
+       001450' 254000  001461'         JRST    DELINI          ;NO, CAN LEAVE\r
+       001451' 550000  000001          HRRZ    0,A             ;GET WORD COUNT\r
+       001452' 505040  000002          HRLI    A,2             ;PUT IN BLOCK TYPE\r
+       001453' 260500  001656'         PUSHJ   P,OUT           ;WRITE BLOCK HEADER\r
+       001454' 201100  005053'         MOVEI   B,SYMBLK        ;LOC OF FIRST WORD\r
+       001455' 271100  000001  DELWRU: ADDI    B,1             ;LOC OF RELOC WORD\r
+       001456' 200042  000000          MOVE    A,0(B)          ;GET WORD\r
+       001457' 260500  001656'         PUSHJ   P,OUT           ;OUTPUT\r
+       001460' 365000  001455'         SOJGE   0,DELWRU        ;ALL THROUGH?\r
+\r
+                               ;ROUTINE TO INITIALIZE NEW SYMBOL BBLE\r
+       001461' 402000  005053' DELINI: SETZM   SYMBLK          ;YES, CLEAR COUNT\r
+       001462' 402000  005054'         SETZM   SYMBLK+1        ;CLEAR RELOCATION\r
+       001463' 200040  005121'         MOVE    A,PTSR          ;INIT POINTER\r
+       001464' 202040  005051'         MOVEM   A,PTSRS         ;FOR STORING NEW RELOC\r
+       001465' 201140  005055'         MOVEI   T,SYMBLK+2      ;SET TO STORE FIRST GLOBAL\r
+       001466' 263500  000000          POPJ    P,\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 41\r
+FUDGE2 MAC     24-APR-78 03:09         ROUTINES TO INDEX THE LIBRARY\r
+\r
+                               SUBTTL ROUTINES TO INDEX THE LIBRARY\r
+\r
+                               COMMENT *       THE INDEXING OF LIBRARY FILES IS DONE IN TWO PASSES.\r
+                                       ON PASS 1 THE LIBRARY FILE IS COPIED AND ALL ENTRIES STORED\r
+                                       IN CORE ALLONG WITH A POINTER TO THE BEGINING OF THE BLOCK.\r
+                                       A DUMMY INDEX BLOCK (TYPE 14) IS OUTPUT AT THE BEGINING OF THE\r
+                                       NEW LIBRARY AND ONE IS OUTPUT WHENEVER THE CURRENT INDEX BLOCK\r
+                                       FILLS A BUFFER.\r
+                                       ON PASS 2 THE DUMMY INDEX BLOCKS ARE REPLACED BY REAL ONES.\r
+                                       FUDGE2 USED USETO'S AND DUMP MODE.\r
+                                       IF THE OUTPUT DEVICE IS DTA FUDGE2 USES UGETF UUO'S TO FIND\r
+                                       THE NEXT BLOCK AND NON-STANDARD DUMP MODE TO WRITE THE INDICES.\r
+                                       DESIGN AND CODING BY D.M.NIXON JULY 1970\r
+                               *\r
+\r
+       001467' 200040  001646' INDEX0: MOVE    A,INDEXH        ;BLOCK HEADER\r
+       001470' 350000  002516'         AOS     BLKCNT          ;START ON BLOCK #1\r
+       001471' 260500  001660'         PUSHJ   P,OUT1          ;OUTPUT IT\r
+       001472' 067040  000000          OUTPUT  1,              ;FORCE OUTPUT\r
+       001473' 200140  004607'         MOVE    T,OBUF+5        ;BUFFER SIZE\r
+       001474' 202140  005104'         MOVEM   T,XCOUNT\r
+       001475' 202140  005106'         MOVEM   T,BUFSIZ        ;SAVE IT AWAY\r
+       001476' 350140  000573*         AOS     T,JOBREL        ;TO GET 1K MORE\r
+       001477' 202140  005105'         MOVEM   T,XPNTR\r
+       001500' 202140  005107'         MOVEM   T,XBEG          ;START OF INDEX BUFFERS\r
+       001501' 047140  000011          CORE    T,\r
+       001502' 254000  002170'         JRST    ERR22           ;NOT ENUF CORE\r
+       001503' 201040  000001          MOVEI   A,1             ;START ON BLOCK #1 (IF DSK)\r
+       001504' 202060  005105'         MOVEM   A,@XPNTR        ;STORE FIRST BLOCK #\r
+       001505' 350000  005105'         AOS     XPNTR\r
+       001506' 200040  001646'         MOVE    A,INDEXH\r
+       001507' 202060  005105'         MOVEM   A,@XPNTR\r
+       001510' 350000  005105'         AOS     XPNTR\r
+       001511' 370000  005104'         SOS     XCOUNT\r
+       001512' 370000  005104'         SOS     XCOUNT          ;RESERVE SPACE FOR NEXT LINK WORD\r
+       001513' 263500  000000          POPJ    P,              ;RETURN\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 42\r
+FUDGE2 MAC     24-APR-78 03:09         ROUTINES TO INDEX THE LIBRARY\r
+\r
+                               ;HERE ON PASS 1 TO STORE ENTRIES AND POINTERS.\r
+\r
+       001514' 350012  000000  INDEX1: AOS     (P)             ;SET SKIP RETURN\r
+       001515' 550140  003334'         HRRZ    T,ENTBLK        ;GET SIZE OF BLOCK\r
+       001516' 210040  000003          MOVN    A,T\r
+       001517' 271140  000001          ADDI    T,1             ;WORD OF INFO\r
+       001520' 311140  005104'         CAML    T,XCOUNT        ;ENUF ROOM IN BLOCK?\r
+       001521' 254000  001546'         JRST    NOROOM          ;NO\r
+       001522' 200140  003334'         MOVE    T,ENTBLK        ;GET HEADER WORD\r
+       001523' 202160  005105'         MOVEM   T,@XPNTR\r
+       001524' 350000  005105'         AOS     XPNTR\r
+       001525' 370000  005104'         SOS     XCOUNT\r
+       001526' 507000  000001          HRLS    A\r
+       001527' 541040  003335'         HRRI    A,ENTBLK+1\r
+       001530' 336141  000000  INDEXA: SKIPN   T,(A)\r
+       001531' 344040  001530'         AOJA    A,.-1\r
+       001532' 202160  005105'         MOVEM   T,@XPNTR\r
+       001533' 370000  005104'         SOS     XCOUNT\r
+       001534' 350000  005105'         AOS     XPNTR\r
+       001535' 253040  001530'         AOBJN   A,INDEXA\r
+       001536' 200140  005106' INDEX2: MOVE    T,BUFSIZ\r
+       001537' 274140  004607'         SUB     T,OBUF+5\r
+       001540' 207000  000003          MOVSS   T\r
+       001541' 540140  002516'         HRR     T,BLKCNT\r
+       001542' 202160  005105'         MOVEM   T,@XPNTR\r
+       001543' 370000  005104'         SOS     XCOUNT\r
+       001544' 350000  005105'         AOS     XPNTR\r
+       001545' 263500  000000          POPJ    P,\r
+\r
+                               ;HERE WHEN CURRENT INDEX BLOCK IS FULL.\r
+\r
+       001546' 200040  001646' NOROOM: MOVE    A,INDEXH        ;HEADER BLOCK OF INDEX FOR LOADER\r
+       001547' 260500  001664'         PUSHJ   P,OUTGO\r
+       001550' 067040  000000          OUTPUT  1,\r
+       001551' 200140  002516'         MOVE    T,BLKCNT        ;GET INDEX BLOCK #\r
+       001552' 562160  005105'         HRROM   T,@XPNTR        ;STORE IT WITH -1 IN LEFT HALF\r
+       001553' 200040  005104'         MOVE    A,XCOUNT\r
+       001554' 272040  005105'         ADDM    A,XPNTR\r
+       001555' 200040  005106'         MOVE    A,BUFSIZ\r
+       001556' 202040  005104'         MOVEM   A,XCOUNT\r
+                                                               ;MARK IT AS AN INDEX INCASE BLOCK FULL\r
+       001557' 562160  005105'         HRROM   T,@XPNTR        ;SAVE BLOCK # FOR PASS 2\r
+       001560' 350000  005105'         AOS     XPNTR\r
+       001561' 606340  400000          TRNN    F,DTAFLG        ;NOT IF DTA\r
+       001562' 350000  002516'         AOS     BLKCNT          ;ONE FOR OUTPUT\r
+       001563' 200040  001646'         MOVE    A,INDEXH\r
+       001564' 202060  005105'         MOVEM   A,@XPNTR\r
+       001565' 350000  005105'         AOS     XPNTR\r
+       001566' 370000  005104'         SOS     XCOUNT\r
+       001567' 370000  005104'         SOS     XCOUNT          ;SPACE FOR LINK WORD TO NEXT INDEX\r
+       001570' 254000  001515'         JRST    INDEX1+1\r
+\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 43\r
+FUDGE2 MAC     24-APR-78 03:09         ROUTINES TO INDEX THE LIBRARY\r
+\r
+                               ;HERE FOR PASS 2. WRITE OUT THE INDEX BLOCKS\r
+\r
+       001571' 476020  005105' INDEX3: SETOM   @XPNTR          ;TERMINATE WITH END OF INDEX MARKER\r
+       001572' 067040  000000          OUTPUT  1,              ;SO LAST BLOCK IS WRITTEN\r
+       001573' 602340  400000          TRNE    F,DTAFLG        ;IS IT DTA?\r
+       001574' 254000  001614'         JRST    INDEX5          ;YES, TREAT DIFFERENTLY\r
+       001575' 060040  000016          SETSTS  1,16\r
+       001576' 211040  000200          MOVNI   A,200\r
+       001577' 506040  005107'         HRLM    A,XBEG\r
+       001600' 402000  005110' INDEX4: SETZM   XBEG+1\r
+       001601' 200060  005107'         MOVE    A,@XBEG\r
+       001602' 075041  000000          USETO   1,(A)\r
+       001603' 067040  005107'         OUTPUT  1,XBEG\r
+       001604' 063040  760000          STATZ   1,760000\r
+       001605' 254000  002132'         JRST    ERR15\r
+       001606' 201040  000200          MOVEI   A,200\r
+       001607' 273040  005107'         ADDB    A,XBEG\r
+       001610' 553000  000001          HRRZS   A\r
+       001611' 317040  005105'         CAMG    A,XPNTR\r
+       001612' 254000  001600'         JRST    INDEX4\r
+       001613' 254000  002257'         JRST    EXIT\r
+\r
+       001614' 070040  000000  INDEX5: CLOSE   1,              ;AND A SEPARATE EOF BLOCK\r
+       001615' 060040  000116          SETSTS  1,116           ;NONE STANDARD MODE\r
+       001616' 211040  000200          MOVNI   A,200           ;IOWD COUNT\r
+       001617' 506040  005107'         HRLM    A,XBEG          ;SET IT UP FOR OUTPUT\r
+       001620' 074060  002516'         USETI   1,@BLKCNT       ;SET ON LAST BLOCK\r
+       001621' 066040  002513'         INPUT   1,DIRIOW        ;READ IT IN\r
+       001622' 135040  005174'         LDB     A,[POINT 10,DIRBLK,27]  ;GET FIRST BLOCK #\r
+       001623' 542060  005107'         HRRM    A,@XBEG         ;STORE IT FOR COMMON LOOP\r
+       001624' 402000  005110'         SETZM   XBEG+1          ;MAKE SURE IT'S ZERO\r
+       001625' 200060  005107' INDEX6: MOVE    A,@XBEG         ;GET BLOCK NUMBER\r
+       001626' 074041  000000          USETI   1,(A)           ;SET FOR INPUT\r
+       001627' 066040  002513'         INPUT   1,DIRIOW        ;INPUT BLOCK\r
+       001630' 200140  004647'         MOVE    T,DIRBLK        ;TO FIND LINK WORD\r
+       001631' 250160  005107'         EXCH    T,@XBEG         ;PUT IT IN OUTPUT BLOCK\r
+       001632' 370000  005107'         SOS     XBEG            ;BACK UP POINTER\r
+       001633' 075041  000000          USETO   1,(A)           ;NOW FOR OUTPUT\r
+       001634' 067040  005107'         OUTPUT  1,XBEG          ;OUT IT GOES\r
+       001635' 063040  760000          STATZ   1,760000        ;UNLESS IN ERROR\r
+       001636' 254000  002132'         JRST    ERR15           ;DEVICE ERROR\r
+       001637' 201040  000200          MOVEI   A,200           ;GET TO NEXT DUMP BLOCK\r
+       001640' 273040  005107'         ADDB    A,XBEG          ;ADVANCE POINTER\r
+       001641' 553000  000001          HRRZS   A               ;JUST WORD LOCATION\r
+       001642' 317040  005105'         CAMG    A,XPNTR         ;ALL DONE?\r
+       001643' 254000  001625'         JRST    INDEX6          ;NO, LOOP\r
+       001644' 060040  000016          SETSTS  1,16            ;BACK TO STANDARD MODE TO UPDATE DIR.\r
+       001645' 254000  002257'         JRST    EXIT            ;YES, FINISH UP\r
+\r
+       001646' 000014  000177  INDEXH: XWD     14,177          ;USED TO SIGNAL INDEX BLOCK TO LOADER\r
+\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 44\r
+FUDGE2 MAC     24-APR-78 03:09         INPUT SERVICE ROUTINE\r
+\r
+                               SUBTTL INPUT SERVICE ROUTINE\r
+                               ;THE INPUT ROUTINE GETS CHARACTERS FROM THE DEVICE WHOSE\r
+                               ;CHANNEL NUMBER IS IN ACCUMULATOR D. IT CALCULATES THE POSITION\r
+                               ;OF THE BUFFER HEADER OF THE DEVICE, THEN EITHER LOADS AC A\r
+                               ;FROM THE BYTE POINTER, OR DOES AN INPUT. IF AN END OF FILE\r
+                               ;IS FOUND, THE ROUTINE EXITS WITH A POPJ, SINCE THE READ ROUTINE\r
+                               ;IS CALLED WITH A PUSHJ, FOLLOWED BY AN EOF RETURN. THE NORMAL\r
+                               ;EXIT FROM GETIN IS BY A JRST @GETIN.\r
+\r
+       001647' 377015  004612' GETIN:  SOSG    IBUF+2(DIS)     ;IS APPROPRIATE BUFFER EMPTY?\r
+       001650' 254000  001653'         JRST    INGET           ;YES, GET ANOTHER BUFFER\r
+       001651' 134055  004611' GETIN1: ILDB    A, IBUF+1(DIS)  ;LOAD AC A WITH A CHARACTER\r
+       001652' 263500  000000          POPJ    P,\r
+\r
+       001653' 137240  005175' INGET:  DPB     D,[POINT 4,INGET2,12]\r
+       001654' 137240  005176'         DPB     D,[POINT 4,INGET3,12]\r
+       001655' 254000  002474'         JRST    INGET2          ;INPUT A BUFFER OF DATA\r
+\r
+\r
+                               ;OUTPUT SERVICE ROUTINE\r
+                               ;THE OUT ROUTINE CHECKS THE TTYOB FLAG TO SEE IF THE OUTPUT\r
+                               ;SHOULD BE ON THE TTY. IF SO, IT TRANSFERS CONTROL IMMEDIATELY.\r
+                               ;OTHERWISE, IT ASSUMES OUTPUT IS ON DEVICE #1.\r
+\r
+       001656' 606340  000020  OUT:    TRNN    F, TTYOB        ;SHOULD OUTPUT BE ON TTY?\r
+       001657' 254000  002237'         JRST    TYPO            ;YES\r
+       001660' 377000  004607' OUT1:   SOSG    OBUF+5          ;IS OUTPUT BUFFER EMPTY?\r
+       001661' 254000  001664'         JRST    OUTGO           ;YES, OUTPUT A BUFFER\r
+       001662' 136040  004606' OUT2:   IDPB    A, OBUF+4       ;DEPOSIT CHARACTER\r
+       001663' 263500  000000          POPJ    P,              ;EXIT\r
+\r
+       001664' 606340  200000  OUTGO:  TRNN    F,XFLG          ;IF NOT INDEXING\r
+       001665' 254000  001671'         JRST    OUTG            ;DON'T WASTE TIME\r
+       001666' 606340  400000          TRNN    F,DTAFLG        ;IF DTA SKIP\r
+       001667' 354000  002516'         AOSA    BLKCNT          ;INCR. COUNT IF DSK\r
+       001670' 073040  002516'         UGETF   1,BLKCNT        ;GET NEXT BLOCK IF DTA\r
+       001671' 057040  000000  OUTG:   OUT     1,              ;OUTPUT A BUFFER\r
+       001672' 254000  001662'         JRST    OUT2            ;NO ERRORS\r
+       001673' 201240  000001          MOVEI   D, 1            ;YES, SET CHANNEL TO OUTPUT\r
+       001674' 254000  002132'         JRST    ERR15           ;GO TO ERROR ROUTINE\r
+\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 45\r
+FUDGE2 MAC     24-APR-78 03:09         ROUTINE TO HANDLE ASTERISK FILE NAME *.EXT\r
+\r
+                               SUBTTL ROUTINE TO HANDLE ASTERISK FILE NAME *.EXT\r
+                               ;THE DIRECTORY IS SEARCHED FOR FILE NAMES WITH GIVEN EXTENSION OR\r
+                               ;EXTENSION REL IF NONE SPECIFIED. THESE ARE STORED IN FILBUF\r
+                               ;ENTERED BY JRST FROM SEMICP\r
+                               ;EXIT BY POPJ\r
+                               ;DMN 23 MAY 1969\r
+\r
+\r
+       001675' 200100  002522' ASTRSK: MOVE    B,COLON2        ;GET DEVICE LAST SEEN\r
+       001676' 202100  002511'         MOVEM   B,DSKINI+1      ;SAVE IT IN CASE DSK\r
+       001677' 047100  000004          DEVCHR  B,              ;GET ITS CHARACTERISTICS\r
+       001700' 603100  000100          TLNE    B,DTABIT        ;IS IT A DTA\r
+       001701' 254000  001760'         JRST    DTAAST          ;YES\r
+       001702' 607100  200000          TLNN    B,DSKBIT        ;IS IT THE DSK?\r
+       001703' 254000  002160'         JRST    ERR18           ;MUST BE ONE OR THE OTHER\r
+                                                               ;FALL INTO DSKAST IF OK\r
+\r
+       001704' 261500  000547* DSKAST: PUSH    P,JOBFF         ;SAVE OLD JOBFF\r
+       001705' 201100  004645'         MOVEI   B,DSKHDR        ;WHERE BUFFER WILL GO\r
+       001706' 202100  001704*         MOVEM   B,JOBFF         ;SET IT UP\r
+\r
+       001707' 050440  002510'         OPEN    11,DSKINI       ;11 IS SAFE CH.NO.\r
+       001710' 254000  002162'         JRST    ERR19           ;CONNOT INIT DSK\r
+       001711' 064440  000001          INBUF   11,1            ;FORCE SINGLE BUFFERING\r
+       001712' 200100  002522'         MOVE    B,COLON2        ;GET DEVICE\r
+       001713' 047100  000055          DEVPPN  B,              ;GET PROJ-PROG INCASE SYS: ETC.\r
+       001714' 047100  000024          GETPPN  B,              ;FAILED, GET USER PROJ,PROG PAIR\r
+       001715' 202100  004572'         MOVEM   B,EBLOCK        ;SAVE IT FOR LOOKUP OF UFD\r
+       001716' 205100  654644          MOVSI   B,(SIXBIT/UFD/) ;EXTENSION\r
+       001717' 202100  004573'         MOVEM   B,EBLOCK+1\r
+       001720' 200100  005177'         MOVE    B,[XWD 1,1]     ;TO GET UFD ***VJC\r
+       001721' 202100  004575'         MOVEM   B,EBLOCK+3      ;ENTRY BLOCK SET UP\r
+       001722' 076440  004572'         LOOKUP  11,EBLOCK       ;DO LOOKUP\r
+       001723' 254000  002164'         JRST    ERR20           ;CANNOT DO IT\r
+\r
+       001724' 260500  001745' DSKLUP: PUSHJ   P,DSKINP        ;INPUT A WORD\r
+       001725' 202600  004640'         MOVEM   S,SAVNAM        ;SAVE NAME FOR LATER\r
+       001726' 260500  001745'         PUSHJ   P,DSKINP        ;GET EXT AS WELL\r
+       001727' 512600  004641'         HLLZM   S,SAVEXT        ;SAVE EXT, CLEAR RH ***VJC\r
+       001730' 336000  004640'         SKIPN   SAVNAM          ;IS THERE A NAME\r
+       001731' 254000  001724'         JRST    DSKLUP          ;NO GET NEXT PAIR\r
+       001732' 312700  004641'         CAME    EXT,SAVEXT      ;EXTENSIONS MATCH\r
+       001733' 254000  001724'         JRST    DSKLUP          ;NO GET NEXT PAIR\r
+       001734' 260500  000444'         PUSHJ   P,STNULL        ;CLOSE OUT OLD FILE\r
+       001735' 200600  004640'         MOVE    S,SAVNAM        ;RECALL NAME\r
+       001736' 260500  001137'         PUSHJ   P,PUTFIL        ;STORE IT IN FILBUF\r
+       001737' 200600  004641'         MOVE    S,SAVEXT        ;RECALL EXTENSION\r
+       001740' 260500  001137'         PUSHJ   P,PUTFIL\r
+       001741' 542241  000000          HRRM    D,(A)           ;GET CHANNEL\r
+       001742' 550600  002724'         HRRZ    S,PRGBUF        ;POINTER TO PRGBUF\r
+       001743' 260500  001137'         PUSHJ   P,PUTFIL        ;SAVE IT AS 3RD WORD\r
+       001744' 254000  001724'         JRST    DSKLUP          ;GO LOOP ROUND ALL\r
+\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 46\r
+FUDGE2 MAC     24-APR-78 03:09         ROUTINE TO HANDLE ASTERISK FILE NAME *.EXT\r
+\r
+                               ;ROUTINE TO GET NEXT WORD FROM UFD\r
+\r
+       001745' 375000  004644' DSKINP: SOSGE   DIRBUF+2        ;USUAL INPUT ROUTINE\r
+       001746' 254000  001751'         JRST    DSKIN1          ;GET ANOTHER BUFFER\r
+       001747' 134600  004643'         ILDB    S,DIRBUF+1      ;GET A WORD \r
+       001750' 263500  000000          POPJ    P,              ;RETURN\r
+\r
+       001751' 056440  000000  DSKIN1: IN      11,0            ;DO INPUT\r
+       001752' 254000  001745'         JRST    DSKINP          ;NO ERRORS\r
+       001753' 061440  020000          STATO   11,20000        ;END OF FILE?\r
+       001754' 254000  002166'         JRST    ERR21           ;NO, READ ERROR\r
+\r
+       001755' 262500  001706* FIN:    POP     P,JOBFF         ;POP UP ONE LEVEL\r
+       001756' 262500  001755*         POP     P,JOBFF         ;RESTORE JOBFF\r
+       001757' 263500  000000          POPJ    P,              ;RETURN TO COMMAND SCAN\r
+\r
+\r
+       001760' 135100  005137' DTAAST: LDB     B,[POINT 4,COLON1,12]   ;GET CHANNEL\r
+       001761' 137100  005200'         DPB     B,[POINT 4,DP+0,12]     ;DEPOSIT IT\r
+       001762' 137100  005201'         DPB     B,[POINT 4,DP+1,12]\r
+       001763' 137100  005202'         DPB     B,[POINT 4,DP+2,12]\r
+       001764' 137100  005203'         DPB     B,[POINT 4,DP+3,12]\r
+       001765' 137100  005204'         DPB     B,[POINT 4,DP+5,12]\r
+       001766' 400100  000000          SETZ    B,              ;INITIAL CONDITION\r
+       001767' 254000  002501'         JRST    DP              ;INPUT DIRECTORY\r
+\r
+       001770' 301100  000026  DTALUP: CAIL    B,26            ;END OF DIRECTORY\r
+       001771' 263500  000000          POPJ    P,              ;YES- FINISHED\r
+       001772' 510602  005020'         HLLZ    S,DIREXT(B)     ;GET EXTENSION\r
+       001773' 332002  004772'         SKIPE   DIRNAM(B)       ;IF NAME ZERO DON'T BOTHER\r
+       001774' 312600  000016          CAME    S,EXT           ;IS EXTENSION SAME\r
+       001775' 344100  001770'         AOJA    B,DTALUP        ;NO GET NEXT ENTRY\r
+       001776' 260500  000444'         PUSHJ   P,STNULL        ;TERMINATE LAST ENTRY\r
+       001777' 200602  004772'         MOVE    S,DIRNAM(B)     ;GET NAME\r
+       002000' 260500  001137'         PUSHJ   P,PUTFIL        ;STORE IT IN FILBUF\r
+       002001' 510602  005020'         HLLZ    S,DIREXT(B)     ;AND EXTENSION\r
+       002002' 260500  001137'         PUSHJ   P,PUTFIL        ;STORE IT\r
+       002003' 542241  000000          HRRM    D,(A)           ;SAVECH.\r
+       002004' 550600  002724'         HRRZ    S,PRGBUF        ;SAVE PRGBUF POINTER\r
+       002005' 260500  001137'         PUSHJ   P,PUTFIL        ;STORE IT\r
+       002006' 344100  001770'         AOJA    B,DTALUP        ;GET NEXT ENTRY\r
+\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 47\r
+FUDGE2 MAC     24-APR-78 03:09         ERROR ROUTINES\r
+\r
+                               SUBTTL ERROR ROUTINES\r
+\r
+       002007' 201100  002261' ERROR1: MOVEI   B, EMES1        ;FUDGE COMMAND ERROR\r
+       002010' 254000  002247'         JRST    ERROR           ;TYPE IT AND EXIT\r
+\r
+       002011' 201100  002266' ERROR2: MOVEI   B, EMES2        ;TOO MANY PROGRAM NAMES\r
+       002012' 254000  002247'         JRST    ERROR           ;TYPE IT AND EXIT\r
+\r
+       002013' 201100  002276' ERROR3: MOVEI   B, EMES3        ;FUDGE SYSTEM ERROR\r
+       002014' 254000  002247'         JRST    ERROR           ;TYPE A MESSAGE AND EXIT\r
+\r
+       002015' 260500  002201' ERROR4: PUSHJ   P, DTYPOQ       ;TYPE DEVICE NAME\r
+       002016' 201100  002307'         MOVEI   B, EMES4        ;"CANNOT DO IO AS REQUESTED"\r
+       002017' 326400  002247'         JUMPN   G,ERROR         ;TYPE IT\r
+       002020' 201100  002456'         MOVEI   B,EMES24        ;NO SUCH DEVICE IF G=0\r
+       002021' 254000  002247'         JRST    ERROR           ;TYPE IT AND EXIT\r
+\r
+       002022' 201100  002315' ERROR5: MOVEI   B, EMES5        ;UNEQUAL NUMBER OF MASTER AND TR.\r
+       002023' 254000  002247'         JRST    ERROR           ;TYPE IT AND EXIT\r
+\r
+       002024' 201100  002330' ERROR6: MOVEI   B, EMES6        ;NOT ENOUGH ARGUMENTS\r
+       002025' 254000  002247'         JRST    ERROR           ;TYPE IT AND EXIT\r
+\r
+       002026' 260500  002201' ERROR7: PUSHJ   P, DTYPOQ       ;TYPE OUT THE DEVICE NAME\r
+       002027' 201040  000072          MOVEI   A, 72           ;ASCII COLON\r
+       002030' 260500  002237'         PUSHJ   P, TYPO         ;TYPE IT OUT\r
+       002031' 260500  002216'         PUSHJ   P, FTYPO        ;TYPE  OUT THE FILE NAME\r
+       002032' 201040  000074          MOVEI   A, 74           ;ASCII LEFT ANGLE BRACKET\r
+       002033' 260500  002237'         PUSHJ   P, TYPO         ;TYPE IT  OUT\r
+       002034' 200100  000013          MOVE    B, R            ;GET PROGRAM NAME\r
+       002035' 620340  000020          TRZ     F, TTYOB        ;SET IO BACK TO TTY\r
+       002036' 260500  002220'         PUSHJ   P, PTYPO        ;TYPE  OUT THE PROGRAM NAME\r
+       002037' 201040  000076          MOVEI   A, 76           ;ASCII RIGHT ANGLE BRACKET\r
+       002040' 260500  002237'         PUSHJ   P, TYPO         ;TYPE IT OUT\r
+       002041' 201100  002335'         MOVEI   B, EMES7        ;GET AN ERROR MESSAGE\r
+       002042' 254000  002247'         JRST    ERROR           ;TYPE IT OUT AND EXIT\r
+\r
+       002043' 260500  002201' ERROR8: PUSHJ   P, DTYPOQ       ;TYPE OUT THE DEVICE NAME\r
+       002044' 201040  000072          MOVEI   A, 72           ;ASCII COLON\r
+       002045' 260500  002237'         PUSHJ   P, TYPO         ;TYPE IT OUT\r
+       002046' 260500  002216'         PUSHJ   P, FTYPO        ;TYPE  OUT FILE NAME\r
+       002047' 201040  000056          MOVEI   A, 56           ;ASCII PERIOD\r
+       002050' 260500  002237'         PUSHJ   P, TYPO         ;TYPE IT OUT\r
+       002051' 550040  002524'         HRRZ    A, FILBUF       ;GET THE POINTER TO CURRENT FILE\r
+       002052' 554601  000001          HLRZ    S, 1(A)         ;GET FILE NAME EXTENSION\r
+       002053' 260500  002206'         PUSHJ   P, DTYPO1       ;TYPE IT OUT\r
+       002054' 200140  005102'         MOVE    T,SDEVCHR       ;GET CHARACTERISTICS\r
+       002055' 603140  200000          TLNE    T,DSKBIT        ;IS IT A DSK?\r
+       002056' 254000  002103'         JRST    ERR8A           ;YES\r
+       002057' 201100  002335'         MOVEI   B, EMES7        ;GET ERROR MESSAGE "NOT FOUND"\r
+       002060' 254000  002247'         JRST    ERROR           ;TYPE IT OUT AND EXIT\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 48\r
+FUDGE2 MAC     24-APR-78 03:09         ERROR ROUTINES\r
+\r
+       002061' 260500  002201' ERROR9: PUSHJ   P, DTYPOQ       ;TYPE DEVICE NAME\r
+       002062' 201100  002340'         MOVEI   B, EMES9B       ;GET REMAINDER OF MESSAGE\r
+       002063' 254000  002247'         JRST    ERROR           ;TYPE IT AND EXIT\r
+\r
+       002064' 200200  000001  ERR10:  MOVE    C, A            ;SAVE PROGRAM NAME IN C\r
+       002065' 201100  002343'         MOVEI   B, EMES10       ;"ENTRY BLOCK TOO LARGE, PROGRAM"\r
+       002066' 260500  002174'         PUSHJ   P, ETYPO        ;TYPE BEGINNING OF MESSAGE\r
+       002067' 200100  000004          MOVE    B, C            ;GET PROGRAM NAME IN B\r
+       002070' 260500  002220'         PUSHJ   P, PTYPO        ;TYPE IT OUT\r
+       002071' 254000  002253'         JRST    EXIT1           ;EXIT\r
+\r
+       002072' 201100  002352' ERR11:  MOVEI   B, EMES11       ;TRANSMISSION ERROR ON INPUT\r
+       002073' 260500  002174'         PUSHJ   P, ETYPO        ;TYPE THE MESSAGE\r
+       002074' 260500  002205'         PUSHJ   P, DTYPO        ;TYPE NAME OF OFFENDIN DEVICE\r
+       002075' 254000  002253'         JRST    EXIT1           ;EXIT\r
+\r
+       002076' 200140  005102' ERR14:  MOVE    T,SDEVCHR       ;GET DEVICE CHARACTERISTICS\r
+       002077' 603140  200000          TLNE    T,DSKBIT        ;IS IT A DSK\r
+       002100' 254000  002043'         JRST    ERROR8          ;YES\r
+       002101' 201100  002362'         MOVEI   B, EMES14       ;DIRECTORY FULL ON OUTPUT\r
+       002102' 254000  002247'         JRST    ERROR           ;TYPE IT AND EXIT\r
+\r
+       002103' 550140  004573' ERR8A:  HRRZ    T,EBLOCK+1      ;GET ERROR CODE\r
+       002104' 301140  000021          CAIL    T,TABLND-ETABLE ;LEGAL ERROR?\r
+       002105' 334100  002131'         SKIPA   B,TABLND        ;NO, USE CATCH ALL MESSAGE\r
+       002106' 200103  002110'         MOVE    B,ETABLE(T)     ;PICK UP MESSAGE\r
+       002107' 254000  002247'         JRST    ERROR\r
+\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 49\r
+FUDGE2 MAC     24-APR-78 03:09         ERROR ROUTINES\r
+\r
+       002110' 000000  005205' ETABLE: [ASCIZ /(0) file was not found/]\r
+       002111' 000000  005212'         [ASCIZ /(1) no such project-programmer number/]\r
+       002112' 000000  005222'         [ASCIZ /(2) protection failure/]\r
+       002113' 000000  005227'         [ASCIZ /(3) file was being modified/]\r
+       002114' 000000  005235'         [ASCIZ /(4) rename file name already exists/]\r
+       002115' 000000  005245'         [ASCIZ /(5) illegal sequence of UUOs/]\r
+       002116' 000000  005253'         [ASCIZ /(6) bad UFD or bad RIB/]\r
+       002117' 000000  005260'         [ASCIZ /(7) not a SAV file/]\r
+       002120' 000000  005264'         [ASCIZ /(10) not enough core/]\r
+       002121' 000000  005271'         [ASCIZ /(11) device not available/]\r
+       002122' 000000  005277'         [ASCIZ /(12) no such device/]\r
+       002123' 000000  005303'         [ASCIZ /(13) not two reloc reg. capability/]\r
+       002124' 000000  005312'         [ASCIZ /(14) no room or quota exceeded/]\r
+       002125' 000000  005321'         [ASCIZ /(15) write lock error/]\r
+       002126' 000000  005326'         [ASCIZ /(16) not enough monitor table space/]\r
+       002127' 000000  005336'         [ASCIZ /(17) partial allocation only/]\r
+       002130' 000000  005344'         [ASCIZ /(20) block not free on allocation/]\r
+\r
+       002131' 000000  005353' TABLND: [ASCIZ /(?) lookup,enter,or rename error/]\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 50\r
+FUDGE2 MAC     24-APR-78 03:09         ERROR ROUTINES\r
+\r
+       002132' 201100  002371' ERR15:  MOVEI   B, EMES15       ;DEVICE ERROR ON OUTPUT\r
+       002133' 260500  002174'         PUSHJ   P, ETYPO        ;TYPE THE MESSAGE\r
+       002134' 260500  002205'         PUSHJ   P, DTYPO        ;TYPE NAME OF OFFENDING DEVICE\r
+       002135' 254000  002253'         JRST    EXIT1           ;GO AWAY\r
+\r
+       002136' 200100  000001  ERR16:  MOVE    B,A             ;SAVE OFFENDING LETTER\r
+       002137' 260500  002243'         PUSHJ   P,CRLF\r
+       002140' 201040  000077          MOVEI   A,77            ;TYPE OUT "?"\r
+       002141' 260500  001656'         PUSHJ   P, OUT\r
+       002142' 200040  000002          MOVE    A, B            ;GET BACK OFFENDING LETTER\r
+       002143' 260500  001656'         PUSHJ   P, OUT          ;TYPE OFFENDING LETTER\r
+       002144' 201100  002400'         MOVEI   B, EMES16       ;"X" IS AN ILLEGAL SWITCH\r
+       002145' 660340  040000          TRO     F,CRLFTY\r
+       002146' 254000  002247'         JRST    ERROR           ;TYPE IT AND EXIT\r
+\r
+       002147' 200100  000001  ERR17:  MOVE    B, A\r
+       002150' 260500  002243'         PUSHJ   P,CRLF\r
+       002151' 201040  000077          MOVEI   A, 77\r
+       002152' 260500  001656'         PUSHJ   P, OUT\r
+       002153' 200040  000002          MOVE    A, B\r
+       002154' 260500  001656'         PUSHJ   P, OUT          ;TYPE OFFENDING LETTER\r
+       002155' 201100  002405'         MOVEI   B, EMES17       ;"X" IS AN ILLEGAL CHARACTER\r
+       002156' 660340  040000          TRO     F,CRLFTY\r
+       002157' 254000  002247'         JRST    ERROR           ;TYPE IT AND EXIT\r
+\r
+       002160' 201100  002412' ERR18:  MOVEI   B,EMES18\r
+       002161' 254000  002247'         JRST    ERROR\r
+\r
+       002162' 201100  002423' ERR19:  MOVEI   B,EMES19\r
+       002163' 254000  002247'         JRST    ERROR\r
+\r
+       002164' 201100  002427' ERR20:  MOVEI   B,EMES20\r
+       002165' 254000  002247'         JRST    ERROR\r
+\r
+       002166' 201100  002434' ERR21:  MOVEI   B,EMES21\r
+       002167' 254000  002247'         JRST    ERROR\r
+\r
+       002170' 201100  002441' ERR22:  MOVEI   B,EMES22\r
+       002171' 254000  002247'         JRST    ERROR\r
+\r
+       002172' 201100  002447' ERR23:  MOVEI   B,EMES23\r
+       002173' 254000  002247'         JRST    ERROR\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 51\r
+FUDGE2 MAC     24-APR-78 03:09         VARIOUS ERROR ROUTINES AND SMALL TYPE-OUT ROUTINES\r
+\r
+                               SUBTTL VARIOUS ERROR ROUTINES AND SMALL TYPE-OUT ROUTINES\r
+\r
+       002174' 505100  440700  ETYPO:  HRLI    B, 440700       ;MAKE A BYTE POINTER\r
+       002175' 134040  000002  ETYPO2: ILDB    A, B            ;GET A CHARACTER\r
+       002176' 322040  001065'         JUMPE   A,CPOPJ         ;EXIT IF NULL\r
+       002177' 260500  002237'         PUSHJ   P, TYPO         ;NO, TYPE IT\r
+       002200' 254000  002175'         JRST    ETYPO2          ;RETURN FOR MORE CHARACTERS\r
+\r
+       002201' 666340  040000  DTYPOQ: TRON    F,CRLFTY        ;IS CR,LF TYPED OUT?\r
+       002202' 260500  002243'         PUSHJ   P,CRLF          ;YES\r
+       002203' 201040  000077          MOVEI   A,77            ;TYPE OUT ? FOR BATCH\r
+       002204' 260500  002237'         PUSHJ   P,TYPO\r
+\r
+\r
+       002205' 200605  003324' DTYPO:  MOVE    S, DEVBUF(D)    ;GET DEVICE NAME FROM BUFFER\r
+       002206' 200200  005117' DTYPO1: MOVE    C, SYMPTR       ;BYTE POINTER TO SYMBOL NAME\r
+       002207' 201100  000006          MOVEI   B, 6            ;LOOP COUNTER FOR 6 CHARACTERS\r
+       002210' 134040  000004  DTYPO2: ILDB    A, C            ;GET A CHARACTER\r
+       002211' 322040  002214'         JUMPE   A, DTYPO3       ;IGNORE BLANKS\r
+       002212' 271040  000040          ADDI    A, 40           ;CONVERT TO 7-BIT ASCII\r
+       002213' 260500  002237'         PUSHJ   P, TYPO         ;TYPE IT\r
+       002214' 367100  002210' DTYPO3: SOJG    B, DTYPO2       ;ALL DONE?\r
+       002215' 263500  000000          POPJ    P,              ;EXIT\r
+\r
+       002216' 200620  002524' FTYPO:  MOVE    S, @FILBUF      ;PICK UP THE FILE NAME\r
+       002217' 254000  002206'         JRST    DTYPO1          ;JUMP INTO DTYPO ROUTINE\r
+\r
+       002220' 201040  000006  PTYPO:  MOVEI   A, 6            ;SIX CHARACTERS TO GET\r
+       002221' 231100  000050  PTYPO2: IDIVI   B, 50           ;CONVERT TO SIXBIT CODE\r
+       002222' 506152  000000          HRLM    B+1, (P)        ;STORE CHARACTER ON PD LIST\r
+       002223' 363040  002225'         SOJLE   A,.+2           ;ALL DONE?\r
+       002224' 260500  002221'         PUSHJ   P, PTYPO2       ;NO, DIVIDE SOME MORE\r
+       002225' 554052  000000          HLRZ    A, (P)          ;POP CHARACTERS OFF STACK\r
+       002226' 322040  001065'         JUMPE   A, CPOPJ        ;IGNORE BLANKS\r
+       002227' 303040  000012          CAILE   A, 12           ;LETTER OR NUMBER?\r
+       002230' 271040  000007          ADDI    A, 7            ;LETTER - ADD 66\r
+       002231' 271040  000057          ADDI    A, 57           ;NUMBER - ADD 57\r
+       002232' 306040  000134          CAIN    A, 134          ;DOLLAR SIGN?\r
+       002233' 275040  000070          SUBI    A, 70           ;YES, SPECIAL CASE\r
+       002234' 306040  000133          CAIN    A, 133          ;PERIOD?\r
+       002235' 275040  000055          SUBI    A, 55           ;YES, SPECIAL CASE\r
+       002236' 254000  001656'         JRST    OUT             ;RECURSIVE EXIT FOR MORE CHARS\r
+\r
+       002237' 136040  004603' TYPO:   IDPB    A, OBUF+1       ;STORE CHARACTER IN BUFFER\r
+       002240' 306040  000012          CAIN    A, 12           ;LINE FEED?\r
+       002241' 067000  000000          OUTPUT  0,              ;YES, EMPTY BUFFER\r
+       002242' 263500  000000          POPJ    P,              ;EXIT\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 52\r
+FUDGE2 MAC     24-APR-78 03:09         VARIOUS ERROR ROUTINES AND SMALL TYPE-OUT ROUTINES\r
+\r
+       002243' 201040  000015  CRLF:   MOVEI   A, 15           ;CARRIAGE RETURN\r
+       002244' 260500  001656'         PUSHJ   P, OUT          ;OUTPUT IT\r
+       002245' 201040  000012          MOVEI   A, 12           ;LINE FEED\r
+       002246' 254000  001656'         JRST    OUT             ;OUTPUT IT AND EXIT\r
+\r
+       002247' 620340  000020  ERROR:  TRZ     F,TTYOB         ;JUST IN CASE , SET OUTPUT TO TTY\r
+       002250' 666340  040000          TRON    F,CRLFTY\r
+       002251' 260500  002243'         PUSHJ   P,CRLF\r
+       002252' 260500  002174'         PUSHJ   P, ETYPO        ;TYPE LAST MESSAGE OF ERROR\r
+       002253' 620340  000020  EXIT1:  TRZ     F,TTYOB         ;ENSURE TTY OUTPUT OF CR-LF\r
+       002254' 260500  002243'         PUSHJ   P,CRLF          ;FINISH WITH CR-LF\r
+       002255' 070000  000000          CLOSE   0,              ;FORCE OUTPUT OF LAST LINE\r
+       002256' 254000  000000'         JRST    FUDGE2          ;START AGAIN\r
+\r
+       002257' 070040  000000  EXIT:   CLOSE   1,              ;CLOSE OUT THE OUTPUT CHANNEL\r
+       002260' 254000  000000'         JRST    FUDGE2          ;RESTART\r
+\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 53\r
+FUDGE2 MAC     24-APR-78 03:09         ERROR MESSAGES\r
+\r
+                               SUBTTL ERROR MESSAGES\r
+       002261' 376152  542216  EMES1:  ASCIZ   "?FUDGE2 SYNTAX ERROR"\r
+       002262' 425444  051662\r
+       002263' 472510  154100\r
+       002264' 426452  247644\r
+       002265' 000000  000000\r
+       002266' 376511  747500  EMES2:  ASCIZ   "?TOO MANY FILE NAMES OR PROGRAM NAMES"\r
+       002267' 466031  654500\r
+       002270' 432231  442500\r
+       002271' 472031  542646\r
+       002272' 202372  220240\r
+       002273' 512370  751202\r
+       002274' 465011  640632\r
+       002275' 426460  000000\r
+       002276' 376412  247616  EMES3:  ASCIZ   "?PROGRAM ERROR WHILE RESETTING MASTER DEVICE"\r
+       002277' 512031  520212\r
+       002300' 512451  751100\r
+       002301' 536211  146212\r
+       002302' 202450  551612\r
+       002303' 522511  147216\r
+       002304' 202330  151650\r
+       002305' 426444  042212\r
+       002306' 532230  342400\r
+       002307' 202070  147234  EMES4:  ASCIZ   " CANNOT DO IO AS REQUESTED"\r
+       002310' 476504  042236\r
+       002311' 202231  720202\r
+       002312' 515012  242642\r
+       002313' 526132  352212\r
+       002314' 420000  000000\r
+       002315' 376531  642642  EMES5:  ASCIZ   "?UNEQUAL NUMBER OF MASTER AND TRANSACTION PROGRAMS"\r
+       002316' 526031  420234\r
+       002317' 526330  242644\r
+       002320' 202370  620232\r
+       002321' 406472  442644\r
+       002322' 202031  642100\r
+       002323' 522450  147246\r
+       002324' 406072  444636\r
+       002325' 471012  051236\r
+       002326' 436450  146646\r
+       002327' 000000  000000\r
+       002330' 376351  752100  EMES6:  ASCIZ   "?NOT ENOUGH ARGUMENTS"\r
+       002331' 426351  752616\r
+       002332' 441010  151216\r
+       002333' 526330  547250\r
+       002334' 514000  000000\r
+       002335' 202351  752100  EMES7:  ASCIZ   " NOT FOUND"\r
+       002336' 432372  547210\r
+       002337' 000000  000000\r
+       002340' 202351  752100  EMES9B: ASCIZ   " NOT AVAILABLE"\r
+       002341' 406550  144630\r
+       002342' 406051  442400\r
+       002343' 376131  652244  EMES10: ASCIZ   "?ENTRY BLOCK TOO LARGE, PROGRAM "\r
+       002344' 545010  246236\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 53-1\r
+FUDGE2 MAC     24-APR-78 03:09         ERROR MESSAGES\r
+\r
+       002345' 416264  052236\r
+       002346' 475011  440644\r
+       002347' 436125  420240\r
+       002350' 512370  751202\r
+       002351' 465000  000000\r
+       002352' 376512  240634  EMES11: ASCIZ   "?TRANSMISSION ERROR ON INPUT DEVICE "\r
+       002353' 516331  151646\r
+       002354' 446371  620212\r
+       002355' 512451  751100\r
+       002356' 476344  044634\r
+       002357' 502532  420210\r
+       002360' 426551  141612\r
+       002361' 200000  000000\r
+       002362' 376111  151212  EMES14: ASCIZ   "?DIRECTORY FULL ON OUTPUT DEVICE "\r
+       002363' 416511  751262\r
+       002364' 202152  546230\r
+       002365' 202371  620236\r
+       002366' 526512  052650\r
+       002367' 202110  553222\r
+       002370' 416124  000000\r
+       002371' 376110  553222  EMES15: ASCIZ   "?DEVICE ERROR ON OUTPUT DEVICE "\r
+       002372' 416124  042644\r
+       002373' 512372  220236\r
+       002374' 471011  752650\r
+       002375' 502532  420210\r
+       002376' 426551  141612\r
+       002377' 200000  000000\r
+       002400' 202232  320202  EMES16: ASCIZ   " IS AN ILLEGAL SWITCH"\r
+       002401' 471011  146230\r
+       002402' 426170  146100\r
+       002403' 516571  152206\r
+       002404' 440000  000000\r
+       002405' 202232  320202  EMES17: ASCIZ   " IS AN ILLEGAL CHARACTER"\r
+       002406' 471011  146230\r
+       002407' 426170  146100\r
+       002410' 416210  151202\r
+       002411' 416510  551000\r
+       002412' 376110  553222  EMES18: ASCIZ "?DEVICE FOR * COMMAND MUST BE DSK OR DTA"\r
+       002413' 416124  043236\r
+       002414' 511005  220206\r
+       002415' 476331  540634\r
+       002416' 421011  552646\r
+       002417' 521010  242500\r
+       002420' 422471  320236\r
+       002421' 511010  452202\r
+       002422' 000000  000000\r
+       002423' 376070  147234  EMES19: ASCIZ "?CANNOT INIT DSK"\r
+       002424' 476504  044634\r
+       002425' 446504  042246\r
+       002426' 454000  000000\r
+       002427' 376311  747626  EMES20: ASCIZ "?LOOKUP FAILURE ON DSK"\r
+       002430' 526404  043202\r
+       002431' 446312  551212\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 53-2\r
+FUDGE2 MAC     24-APR-78 03:09         ERROR MESSAGES\r
+\r
+       002432' 202371  620210\r
+       002433' 516260  000000\r
+       002434' 376132  251236  EMES21: ASCIZ "?ERROR WHILE READING UFD"\r
+       002435' 511012  744222\r
+       002436' 462124  051212\r
+       002437' 406111  147216\r
+       002440' 202530  642000\r
+       002441' 376351  752100  EMES22: ASCIZ "?NOT ENOUGH CORE AVAILABLE "\r
+       002442' 426351  752616\r
+       002443' 441010  347644\r
+       002444' 425010  153202\r
+       002445' 446310  141230\r
+       002446' 425000  000000\r
+       002447' 376372  552240  EMES23: ASCIZ   "?OUTPUT DEVICE MUST BE DSK OR DTA"\r
+       002450' 526504  042212\r
+       002451' 532230  342500\r
+       002452' 466532  352100\r
+       002453' 412124  042246\r
+       002454' 455011  751100\r
+       002455' 422510  100000\r
+       002456' 202111  742646  EMES24: ASCIZ   " DOES NOT EXIST"\r
+       002457' 202351  752100\r
+       002460' 426611  151650\r
+       002461' 000000  000000\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 54\r
+FUDGE2 MAC     24-APR-78 03:09         IMPURE CODE\r
+\r
+                               SUBTTL IMPURE CODE\r
+\r
+\r
+       002462' 050000  002521' COLON1: OPEN    ,COLON0         ;INITIALIZATION SEQUENCE\r
+       002463' 077003  004572' SEMIC1: ENTER   , EBLOCK(T)\r
+       002464' 064004  000000  INBUF3: INBUF   ,(C)\r
+\r
+       002465' 072000  000017  BACK0:  MTAPE   , 17            ;BACKSPACE MAG TAPE ONE FILE\r
+       002466' 072000  000000  BACK3:  MTAPE   ,0              ;WAIT FOR BACKSPACE TO FIN.\r
+       002467' 061000  004000  BACK1:  STATO   , IOBOT         ;ARE WE AT BEGINNING OF TAPE\r
+       002470' 072000  000016  BACK2:  MTAPE   , 16            ;NO, SKIP FILE\r
+       002471' 263500  000000          POPJ    P,              ;EXIT\r
+\r
+       002472' 070000  000000  GET3A:  CLOSE   ,\r
+       002473' 076003  004572' GET4A:  LOOKUP  , EBLOCK(T)\r
+\r
+       002474' 056000  000000  INGET2: IN      0,              ;INPUT A BUFFER OF DATA\r
+       002475' 254000  001651'         JRST    GETIN1          ;NO ERRORS\r
+       002476' 063000  020000  INGET3: STATZ   , IOEOF         ;END OF FILE?\r
+       002477' 254000  001064'         JRST    POPOUT          ;YES, HIGH LEVEL EXIT\r
+       002500' 254000  002072'         JRST    ERR11           ;ERROR\r
+\r
+       002501' 060000  000117  DP:     SETSTS  ,117            ;DUMP MODE NON-STANDARD\r
+       002502' 074000  000144          USETI   ,144            ;DIRECTORY BLOCK\r
+       002503' 066000  002513'         INPUT   ,DIRIOW         ;ONE BLOCK ONLY\r
+       002504' 063000  760000          STATZ   ,760000         ;CHECK ERRORS\r
+       002505' 254000  002501'         JRST    DP              ;TRY AGAIN\r
+       002506' 060000  000014          SETSTS  ,14             ;BACK TO BINARY\r
+       002507' 254000  001770'         JRST    DTALUP\r
+\r
+       002510' 000000  000014  DSKINI: EXP     14\r
+       002511' 446353  000000          SIXBIT  /DSK/           ;MAY GET MODIFIED\r
+       002512' 000000  004642'         EXP     DIRBUF\r
+\r
+       002513' 777600  004646' DIRIOW: IOWD    200,DIRBLK      ;IOWD FOR DIRECTORY INPUT\r
+       002514' 000000  000000          0                       ;MUST BE IN LOW SEGMENT\r
+\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 55\r
+FUDGE2 MAC     24-APR-78 03:09         STORAGE AND BUFFERS\r
+\r
+                               SUBTTL STORAGE AND BUFFERS\r
+\r
+       002515'                 LOW:\r
+\r
+       002515'                 FILSAV: BLOCK   1\r
+       002516'                 BLKCNT: BLOCK   1               ;NUMBER OF BUFFERS OUTPUT\r
+       002517'                 SAVEAC: BLOCK   1\r
+       002520'                 SAVEBT: BLOCK   1\r
+       002521'                 COLON0: BLOCK   1               ;MODE\r
+       002522'                 COLON2: BLOCK   1               ;DEVICE NAME\r
+       002523'                 COLON3: BLOCK   1               ;BUFFER HEADER\r
+       002524'                 FILBUF: BLOCK   N\r
+       002724'                 PRGBUF: BLOCK   N\r
+       003124'                 PPNBUF: BLOCK   N\r
+       003324'                 DEVBUF: BLOCK   10\r
+       003334'                 ENTBLK: BLOCK   X+1\r
+       004042'                 SVEBLK: BLOCK   X+1\r
+       004550'                 PDLIST: BLOCK   XP\r
+       004570'                         BLOCK   2               ;FOR EXTENDED LOOKUP AND ENTERS\r
+       004572'                 EBLOCK: BLOCK   4\r
+       004576'                         BLOCK   <RIBALC-6+1>    ;MORE EXTENDED STUFF\r
+       004602'                 OBUF:   BLOCK   6               ;TTY:, OUTPUT DEV:\r
+       004610'                 IBUF:   BLOCK   30              ;INPUT DEVICES (10)\r
+\r
+       004640'                 SAVNAM: BLOCK   1       ;SAVED FILE NAME FROM UFD\r
+       004641'                 SAVEXT: BLOCK   1       ;SAVED EXT NAME FROM UFD\r
+       004642'                 DIRBUF: BLOCK 3         ;DIRECTORY BUFFER HEADER\r
+       004645'                 DSKHDR: BLOCK N+2       ;TWO WORDS OF OVERHEAD [P,P]+EXT\r
+                       004647' DIRBLK=DSKHDR+2\r
+                       004772' DIRNAM=DIRBLK+123       ;FILENAMES IN DTA DIRECTORY START HERE\r
+                       005020' DIREXT=DIRNAM+26        ;EXTENSIONS IN DTA DIRECTORY START HERE\r
+\r
+       005047'                 BSZ:    BLOCK   1               ;SIZE OF OLD SYMBOL BLOCK\r
+       005050'                 PTGRS:  BLOCK   1               ;PTGR SAVED\r
+       005051'                 PTSRS:  BLOCK   1               ;PTSR SAVED\r
+       005052'                 RELOCS: BLOCK   1               ;ORIGINAL RELOC\r
+       005053'                 SYMBLK: BLOCK   ^D20            ;NEW SYMBOL BLOCK\r
+\r
+       005077'                 MATCH:  BLOCK   1               ;COUNT OF <'S - >'S ***VJC\r
+\r
+       005100'                 CURCHR: BLOCK   1               ;SAVED CURRENT CHAR OF CS\r
+       005101'                 LSTCHR: BLOCK   1               ;SAVED LAST CHAR OF CS\r
+       005102'                 SDEVCH: BLOCK   1       ;SAVED DEVICE CHARACTERS\r
+       005103'                 NUMDEV: BLOCK   1       ;NUMBER OF DEVICES\r
+       005104'                 XCOUNT: BLOCK   1\r
+       005105'                 XPNTR:  BLOCK   1\r
+       005106'                 BUFSIZ: BLOCK   1\r
+       005107'                 XBEG:   BLOCK   2\r
+       005111'                 LEVEL:  BLOCK   1       ;-2 IF LEVEL D\r
+       005112'                 DEFPPN: BLOCK   1       ;DEFAULT PROJ-PROG\r
+       005113'                 PRJPRG: BLOCK   1       ;TEMP. PROJ-PROG\r
+       005114'                 SVENTR: BLOCK   2       ;PLACE TO SAVE EBLOCK,+1\r
+       005116'                 NOWARN: BLOCK   1       ;SIGNAL TO PRINT MESSAGE ABOUT INDEX\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 55-1\r
+FUDGE2 MAC     24-APR-78 03:09         STORAGE AND BUFFERS\r
+\r
+       005117'                         VAR             ;JUST IN CASE\r
+\r
+       005117'                 LOWTOP:\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 56\r
+FUDGE2 MAC     24-APR-78 03:09         CONSTANTS,POINTERS AND LITERALS\r
+\r
+                               SUBTTL CONSTANTS,POINTERS AND LITERALS\r
+\r
+       005117' 440600  000014  SYMPTR: POINT   6, S\r
+       005120' 440600  000016  EXTPTR: POINT   6, EXT\r
+       005121' 440400  005054' PTSR:   POINT   4,SYMBLK+1      ;TO STORE RELOCATION\r
+       005122' 440400  005052' PTGR:   POINT   4,RELOCS        ;TO GET RELOCATION\r
+       005123' 047040  000013  DTCLR:  UTPCLR  1,\r
+       005124' 002526' 002525' FILXWD: XWD     FILBUF+2, FILBUF+1\r
+       005125' 777760  004547' XPDLST: XWD     -XP,PDLIST-1\r
+\r
+                       000000'         END     FUDGE2\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 005362\r
+\r
+9K CORE USED\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 57\r
+FUDGE2 MAC     24-APR-78 03:09         SYMBOL TABLE\r
+\r
+A              000001  \r
+ALTMOD         000521' \r
+APPEND         000711' \r
+APROC3         000716' \r
+ASTRSK         001675' \r
+B              000002  \r
+BACK0          002465' \r
+BACK1          002467' \r
+BACK2          002470' \r
+BACK3          002466' \r
+BACKSP         001024' \r
+BITE           000110' \r
+BLKCNT         002516' \r
+BSWTCH         000250' \r
+BSZ            005047' \r
+BUFSIZ         005106' \r
+C              000004  \r
+COLON          000317' \r
+COLON0         002521' \r
+COLON1         002462' \r
+COLON2         002522' \r
+COLON3         002523' \r
+COLON4         000375' \r
+COLON6         000340' \r
+COLON7         000344' \r
+COLON8         000357' \r
+COLONB         000406' \r
+COLONC         000373' \r
+COMMA          000310' \r
+COMMA1         000503' \r
+COMMA3         000477' \r
+COMMA4         000516' \r
+COMMAP         000470' \r
+COMMAX         000314' \r
+CONB           010000  SPD\r
+COPY           000737' \r
+COPYTO         000743' \r
+CORE   047000  000011  \r
+COUNT          001337' \r
+CPOPJ          001065' \r
+CPOPJ1         001063' \r
+CRLF           002243' \r
+CRLFTY         040000  SPD\r
+CURCHR         005100' \r
+D              000005  \r
+DEFENT         000463' \r
+DEFPPN         005112' \r
+DELCPY         000730' \r
+DELDEC         001435' \r
+DELETE         000701' \r
+DELFIN         001445' \r
+DELGT1         001416' \r
+DELGTR         001412' \r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 57-1\r
+FUDGE2 MAC     24-APR-78 03:09         SYMBOL TABLE\r
+\r
+DELINI         001461' \r
+DELLOC         001410' \r
+DELWRT         001447' \r
+DELWRU         001455' \r
+DESTB          000001  SPD\r
+DEVB           000400  SPD\r
+DEVBUF         003324' \r
+DEVCHR 047000  000004  \r
+DEVPPN 047000  000055  \r
+DIRBLK         004647' \r
+DIRBUF         004642' \r
+DIREXT         005020' \r
+DIRIOW         002513' \r
+DIRNAM         004772' \r
+DIS            000015  \r
+DOENTR         001121' \r
+DOXSWT         001134' \r
+DP             002501' \r
+DPROC1         000703' \r
+DRCTRB         000004  SPD\r
+DSKAST         001704' \r
+DSKBIT         200000  SPD\r
+DSKHDR         004645' \r
+DSKIN1         001751' \r
+DSKINI         002510' \r
+DSKINP         001745' \r
+DSKLUP         001724' \r
+DSPTCH         000065' \r
+DTAAST         001760' \r
+DTABIT         000100  SPD\r
+DTAFLG         400000  SPD\r
+DTALUP         001770' \r
+DTCLR          005123' \r
+DTYPO          002205' \r
+DTYPO1         002206' \r
+DTYPO2         002210' \r
+DTYPO3         002214' \r
+DTYPOQ         002201' \r
+E              000006  \r
+EBLOCK         004572' \r
+EMES1          002261' \r
+EMES10         002343' \r
+EMES11         002352' \r
+EMES14         002362' \r
+EMES15         002371' \r
+EMES16         002400' \r
+EMES17         002405' \r
+EMES18         002412' \r
+EMES19         002423' \r
+EMES2          002266' \r
+EMES20         002427' \r
+EMES21         002434' \r
+EMES22         002441' \r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 57-2\r
+FUDGE2 MAC     24-APR-78 03:09         SYMBOL TABLE\r
+\r
+EMES23         002447' \r
+EMES24         002456' \r
+EMES3          002276' \r
+EMES4          002307' \r
+EMES5          002315' \r
+EMES6          002330' \r
+EMES7          002335' \r
+EMES9B         002340' \r
+ENDST          001372' \r
+ENTBLK         003334' \r
+EPROC1         000670' \r
+EPROC2         000672' \r
+ERR10          002064' \r
+ERR11          002072' \r
+ERR14          002076' \r
+ERR15          002132' \r
+ERR16          002136' \r
+ERR17          002147' \r
+ERR18          002160' \r
+ERR19          002162' \r
+ERR20          002164' \r
+ERR21          002166' \r
+ERR22          002170' \r
+ERR23          002172' \r
+ERR8A          002103' \r
+ERRB           002000  SPD\r
+ERRISQ         000214' \r
+ERROR          002247' \r
+ERROR1         002007' \r
+ERROR2         002011' \r
+ERROR3         002013' \r
+ERROR4         002015' \r
+ERROR5         002022' \r
+ERROR6         002024' \r
+ERROR7         002026' \r
+ERROR8         002043' \r
+ERROR9         002061' \r
+ETABLE         002110' \r
+ETYPO          002174' \r
+ETYPO2         002175' \r
+EXIT           002257' \r
+EXIT1          002253' \r
+EXT            000016  \r
+EXTB           001000  SPD\r
+EXTPTR         005120' \r
+EXTRCT         000660' \r
+F              000007  \r
+F4             001346' \r
+F4I            001270' \r
+F4IB           020000  SPD\r
+F4LUP1         001374' \r
+F4LUP2         001402' \r
+F4LUP3         001375' \r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 57-3\r
+FUDGE2 MAC     24-APR-78 03:09         SYMBOL TABLE\r
+\r
+FILBUF         002524' \r
+FILSAV         002515' \r
+FILXWD         005124' \r
+FIN            001755' \r
+FIND1          000752' \r
+FIND2          000757' \r
+FIND3          000765' \r
+FINDCP         000751' \r
+FIXUP          000647' \r
+FTYPO          002216' \r
+FUDGE2         000000' \r
+G              000010  \r
+GET0           001046' \r
+GET1           001060' \r
+GET3           001066' \r
+GET3A          002472' \r
+GET4           001107' \r
+GET4A          002473' \r
+GETCHR         000040' \r
+GETCMN         000045' \r
+GETDEV         001031' \r
+GETIN          001647' \r
+GETIN1         001651' \r
+GETPPN 047000  000024  \r
+H              000011  \r
+IBUF           004610' \r
+INBIT          000002  SPD\r
+INBUF0         000546' \r
+INBUF1         000566' \r
+INBUF2         000556' \r
+INBUF3         002464' \r
+INBUF4         000571' \r
+INBUFG         000573' \r
+INDEX          000722' \r
+INDEX0         001467' \r
+INDEX1         001514' \r
+INDEX2         001536' \r
+INDEX3         001571' \r
+INDEX4         001600' \r
+INDEX5         001614' \r
+INDEX6         001625' \r
+INDEXA         001530' \r
+INDEXH         001646' \r
+INFOB          004000  SPD\r
+INGET          001653' \r
+INGET2         002474' \r
+INGET3         002476' \r
+INSER1         000654' \r
+INSERT         000632' \r
+IOBKTL         040000  SPD\r
+IOBOT          004000  SPD\r
+IODATA         100000  SPD\r
+IODEV          200000  SPD\r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 57-4\r
+FUDGE2 MAC     24-APR-78 03:09         SYMBOL TABLE\r
+\r
+IOEOF          020000  SPD\r
+IPROC7         000656' \r
+JOBFF          001756' EXT\r
+JOBREL         001476' EXT\r
+JOBSA          000000  EXT\r
+JOBSYM         000000  EXT\r
+JOBVER         000137  SPD\r
+JSR    260500  000000  \r
+KSWTCH         000251' \r
+LBRACA         000277' \r
+LBRACK         000265' \r
+LEVEL          005111' \r
+LFTARW         000156' \r
+LIST           000600' \r
+LIST1          000610' \r
+LIST2          000613' \r
+LOW            002515' \r
+LOWTOP         005117' \r
+LPTBIT         040000  SPD\r
+LSQB           000162' \r
+LSQB1          000164' \r
+LSTCHR         005101' \r
+MACHCD         001365' \r
+MATCH          005077' \r
+MSTGET         000772' \r
+N              000200  SPD\r
+NODEV          000150' \r
+NOLOCB         000200  SPD\r
+NOROOM         001546' \r
+NOWARN         005116' \r
+NUMDEV         005103' \r
+NXTWRD         001223' \r
+OBUF           004602' \r
+OUT            001656' \r
+OUT1           001660' \r
+OUT2           001662' \r
+OUT4           001405' \r
+OUTBIT         000001  SPD\r
+OUTG           001671' \r
+OUTGO          001664' \r
+P              000012  \r
+PDLIST         004550' \r
+PERIOD         000257' \r
+POPBAK         100000  SPD\r
+POPOUT         001064' \r
+PPNBUF         003124' \r
+PRGBUF         002724' \r
+PRJPRG         005113' \r
+PROGB          000100  SPD\r
+PTGR           005122' \r
+PTGRS          005050' \r
+PTSR           005121' \r
+PTSRS          005051' \r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 57-5\r
+FUDGE2 MAC     24-APR-78 03:09         SYMBOL TABLE\r
+\r
+PTYPO          002220' \r
+PTYPO2         002221' \r
+PUTFIL         001137' \r
+PUTPPN         001151' \r
+PUTPRG         001144' \r
+R              000013  \r
+RBRACK         000303' \r
+READ           001156' \r
+READ1          001206' \r
+READ2          001210' \r
+READ22         001230' \r
+READ23         001216' \r
+READ3          001245' \r
+READ5          001243' \r
+READ55         001233' \r
+READ6          001157' \r
+READ6A         001173' \r
+READ6B         001202' \r
+READ7          001266' \r
+READ8          001255' \r
+READ9          001261' \r
+READX          001276' \r
+RELOCS         005052' \r
+REPLCE         000621' \r
+RESET          001002' \r
+RESET  047000  000000  \r
+RESET1         001017' \r
+RESET2         001005' \r
+RESET3         001012' \r
+RIBALC         000011  SPD\r
+RSQB           000202' \r
+S              000014  \r
+SAVEAC         002517' \r
+SAVEB          000002  SPD\r
+SAVEBT         002520' \r
+SAVEXT         004641' \r
+SAVNAM         004640' \r
+SDEVCH         005102' \r
+SEMIC1         002463' \r
+SEMIC2         000447' \r
+SEMIC3         000462' \r
+SEMIC4         000427' \r
+SEMICA         000416' \r
+SEMICP         000407' \r
+SIZE           000500  SPD\r
+SIZZ           000452  SPD\r
+SLASH          000144' \r
+SLIST          000216' \r
+SLSHB          000010  SPD\r
+SQBCMA         000177' \r
+STNULL         000444' \r
+STORE          000127' \r
+SVEBLK         004042' \r
+\r
+\fFUDGE2  V.011 MACRO 10 05:52 24-APR-78 PAGE 57-6\r
+FUDGE2 MAC     24-APR-78 03:09         SYMBOL TABLE\r
+\r
+SVENTR         005114' \r
+SW             000017  \r
+SWTB           000004  SPD\r
+SWTCH          000145' \r
+SWTCHA         000135' \r
+SWTCHE         000146' \r
+SYMBLK         005053' \r
+SYMPTR         005117' \r
+T              000003  \r
+TABLE          000077' \r
+TABLND         002131' \r
+TRNGET         000777' \r
+TSWTCH         000252' \r
+TTYBIT         000010  SPD\r
+TTYCB          000040  SPD\r
+TTYIN          000210' \r
+TTYOB          000020  SPD\r
+TYPO           002237' \r
+UTPCLR 047000  000013  \r
+VCUSTO         000000  SPD\r
+VFUDGE         000011  SPD\r
+VPATCH         000000  SPD\r
+WRITE          001305' \r
+WRITE2         001310' \r
+WRITE3         001314' \r
+WRITE4         001330' \r
+WSWTCH         000253' \r
+X              000505  SPD\r
+XBEG           005107' \r
+XCOUNT         005104' \r
+XFLG           200000  SPD\r
+\fLLL                     OOOOOOOOO            AAAAAAAAA         DDDDDDDDDDDD         EEEEEEEEEEEEEEE      RRRRRRRRRRRR   \r
+LLL                     OOOOOOOOO            AAAAAAAAA         DDDDDDDDDDDD         EEEEEEEEEEEEEEE      RRRRRRRRRRRR   \r
+LLL                     OOOOOOOOO            AAAAAAAAA         DDDDDDDDDDDD         EEEEEEEEEEEEEEE      RRRRRRRRRRRR   \r
+LLL                  OOO         OOO      AAA         AAA      DDD         DDD      EEE                  RRR         RRR\r
+LLL                  OOO         OOO      AAA         AAA      DDD         DDD      EEE                  RRR         RRR\r
+LLL                  OOO         OOO      AAA         AAA      DDD         DDD      EEE                  RRR         RRR\r
+LLL                  OOO         OOO      AAA         AAA      DDD         DDD      EEE                  RRR         RRR\r
+LLL                  OOO         OOO      AAA         AAA      DDD         DDD      EEE                  RRR         RRR\r
+LLL                  OOO         OOO      AAA         AAA      DDD         DDD      EEE                  RRR         RRR\r
+LLL                  OOO         OOO      AAA         AAA      DDD         DDD      EEEEEEEEEEEE         RRRRRRRRRRRR   \r
+LLL                  OOO         OOO      AAA         AAA      DDD         DDD      EEEEEEEEEEEE         RRRRRRRRRRRR   \r
+LLL                  OOO         OOO      AAA         AAA      DDD         DDD      EEEEEEEEEEEE         RRRRRRRRRRRR   \r
+LLL                  OOO         OOO      AAAAAAAAAAAAAAA      DDD         DDD      EEE                  RRR   RRR      \r
+LLL                  OOO         OOO      AAAAAAAAAAAAAAA      DDD         DDD      EEE                  RRR   RRR      \r
+LLL                  OOO         OOO      AAAAAAAAAAAAAAA      DDD         DDD      EEE                  RRR   RRR      \r
+LLL                  OOO         OOO      AAA         AAA      DDD         DDD      EEE                  RRR      RRR   \r
+LLL                  OOO         OOO      AAA         AAA      DDD         DDD      EEE                  RRR      RRR   \r
+LLL                  OOO         OOO      AAA         AAA      DDD         DDD      EEE                  RRR      RRR   \r
+LLLLLLLLLLLLLLL         OOOOOOOOO         AAA         AAA      DDDDDDDDDDDD         EEEEEEEEEEEEEEE      RRR         RRR\r
+LLLLLLLLLLLLLLL         OOOOOOOOO         AAA         AAA      DDDDDDDDDDDD         EEEEEEEEEEEEEEE      RRR         RRR\r
+LLLLLLLLLLLLLLL         OOOOOOOOO         AAA         AAA      DDDDDDDDDDDD         EEEEEEEEEEEEEEE      RRR         RRR\r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  05:53:58\r
+File: DSKB1 :LOADER.LST   [8,296] Created: 20-April-1967 05:52:00 Printed: 24-April-1978 05:53:41\r
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:1244 \r
+File will be deleted after printing\r
+\fPPPPPPPPPPPP            IIIIIIIII         PPPPPPPPPPPP                                                                  \r
+PPPPPPPPPPPP            IIIIIIIII         PPPPPPPPPPPP                                                                  \r
+PPPPPPPPPPPP            IIIIIIIII         PPPPPPPPPPPP                                                                  \r
+PPP         PPP            III            PPP         PPP                                                               \r
+PPP         PPP            III            PPP         PPP                                                               \r
+PPP         PPP            III            PPP         PPP                                                               \r
+PPP         PPP            III            PPP         PPP                                                               \r
+PPP         PPP            III            PPP         PPP                                                               \r
+PPP         PPP            III            PPP         PPP                                                               \r
+PPPPPPPPPPPP               III            PPPPPPPPPPPP                                                                  \r
+PPPPPPPPPPPP               III            PPPPPPPPPPPP                                                                  \r
+PPPPPPPPPPPP               III            PPPPPPPPPPPP                                                                  \r
+PPP                        III            PPP                                                                           \r
+PPP                        III            PPP                                                                           \r
+PPP                        III            PPP                                                                           \r
+PPP                        III            PPP                                                                           \r
+PPP                        III            PPP                                                                           \r
+PPP                        III            PPP                                                                           \r
+PPP                     IIIIIIIII         PPP                                                                           \r
+PPP                     IIIIIIIII         PPP                                                                           \r
+PPP                     IIIIIIIII         PPP                                                                           \r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  05:53:58\r
+File: DSKB1 :PIP   .LST   [8,296] Created: 20-April-1967 05:53:00 Printed: 24-April-1978 05:53:41\r
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:1244 \r
+File will be deleted after printing\r
+\f\r
+PIP V.030 MOD SANDERS/DBP 19-AUG-71    MACRO 10 05:52 24-APR-78 PAGE 1\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                               TITLE PIP V.030 MOD SANDERS/DBP 19-AUG-71\r
+                               SUBTTL  VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                               ;PERIPHERAL INTERCHANGE PROGRAM\r
+                               ;"COPYRIGHT 1968, 1969, DIGITAL EQUIPMENT CORP.,MAYNARD,MASS.,U.S.A.\r
+\r
+                       000030  VPIP==30                ;VERSION NUMBER\r
+                       000005  SVER==5         ; SANDERS VERSION\r
+\r
+\r
+                               ;WCH==0  PIP IS ASSEMBLED FOR PDP-10 AND ASSUMES NEW FORMAT DECTAPES.\r
+                               ;WCH==1  PIP IS ASSEMBLED FOR PDP-6 AND ASSUMES OLD FORMAT DECTAPES.\r
+\r
+                               ;DISK30==0 PIP IS ASSEMBLED TO RUN WITH 10/40, 10/50 MONITOR SYSTEMS.\r
+                               ;DISK30==1 PIP IS ASSEMBLED TO RUN WITH 10/30 DISK SYSTEM.\r
+\r
+                               ;BLOC0==0 PIP ALLOWS COPYING OF BLOCK0 (DECTAPE).\r
+                               ;BLOC0==1 PIP WILL NOT ALLOW BLOCK0 TO BE COPIED.\r
+\r
+                               ;RIMSW==0 /Y SWITCH OPTION UNAVAILABLE. (ALSO UNAVAILABLE FOR OLD FORMAT DECTAPES)\r
+                               ;RIMSW==1 /Y SWITCH OPTION AVAILABLE.\r
+\r
+                               ;FTDSK==0       NON DSK SYSTEM.NO CCL.SAVES CORE ON 10/40\r
+                               ;FTDSK==1       10/50 DSK SYSTEM,ALSO 10/30 DSK SYSTEM\r
+\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 2\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+\r
+                               ;CONDITIONAL ASSEMBLY SWITCH SETUP (NORMAL CONFIGURATION)\r
+                               ;---------------------------------\r
+\r
+                               IFNDEF WCH,     <WCH==0>\r
+                               IFNDEF DISK30,  <DISK30==0>\r
+                               IFNDEF BLOC0,   <BLOC0==0>\r
+                               IFNDEF FTDSK,   <FTDSK==0>\r
+                               IFN WCH,        <RIMSW==0>\r
+                               IFNDEF RIMSW,   <RIMSW==0>\r
+                               IFNDEF K,       <K==0>\r
+\r
+\r
+\r
+\r
+       000124                          LOC 124\r
+       000124  000000  000000'         PIP1            ;SET REENTER ADDRESS\r
+       000000'                         RELOC\r
+       000137                          LOC 137\r
+       000137  000005  000030          XWD SVER,VPIP\r
+       000000'                         RELOC\r
+\r
+\r
+                                       MLON\r
+                               IFDEF SALL,     <SALL>\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 3\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+\r
+                               EXTERN JOBFF,JOBSA,JOBREL\r
+\r
+                               ;FLAG ASSIGNMENTS (RIGHT HALF)\r
+\r
+                       000001  LINE==1         ;ASCII LINE MODE PROCESSING\r
+                       000002  BMOD==2         ;BINARY PROCESSING\r
+                       000004  TBMOD==4        ;SUPPRESS TRAILING SP, CHANGE MULTIPLE SP TO TABS\r
+                       000010  DFLG==10        ;DELETE FILES MODE\r
+                       000020  LFLG==20        ;LIST DIRECTORY\r
+                       000040  NSMOD==40       ;IGNORE INPUT SEQUENCE NUMBERS\r
+                       000100  RFLG==100       ;RENAME FILE MODE\r
+                       000200  SQMOD==200      ;GENERATE SEQUENCE NUMBERS\r
+                       000400  STS==400        ;END OF LINE SEEN, OUTPUT SEQUENCE NUMBER NEXT\r
+                       001000  SPMOD==1000     ;SUPPRESS TRAILING SPACES\r
+                       002000  XFLG==2000      ;COPY DECTAPE MODE\r
+                       004000  ZFLG==4000      ;CLEAR DECTAPE DIRECTORY\r
+                       010000  SUS==10000      ;SEQUENCE NUMBER GENERATION IN PROGRESS\r
+                       020000  SPOK==20000     ;SPACE WAS LAST CHARACTER\r
+                       040000  ESQ==40000      ;STOP OUTPUTTING SEQ NUM, RESUME OUTPUTTING DATA\r
+                       100000  SNI==100000     ;DO NOT INCREMENT SEQUENCE NUMBER\r
+                       200000  MTFLG==200000   ;MTA REQUEST RECEIVED\r
+                       400000  OSFLG==400000   ;GENERATE SEQ. NOS. INCR. BY ONE\r
+\r
+                               ;FLAG ASSIGNMENTS (LEFT HALF)\r
+\r
+                       000001  OFLG==1         ;BLOCK 0 COPY\r
+                       000002  RIMFLG==2       ;RIM FORMAT INPUT /OUT TO DTA. ILLEG IF RIMSW==0,OR WCH==1\r
+                       000004  PFLG==4         ;FORTRAN PROGRAM OUTPUT FORMAT CONVERSION\r
+                       000010  PCONV==10       ;COLUMN 1 CONVERSION IN PROGRESS\r
+                       000020  NEWFIL==20      ;NEW FILE JUST INITIATED\r
+                       000040  CHKFLG==40      ;PARENTHESES CHECK MODE\r
+                       000100  IFLG==100       ;SELECT IMAGE MODE\r
+                       000200  GFLG==200       ;KEEP GOING IF THERE ARE I/O ERRORS\r
+                       000400  IBFLG==400      ;SELECT IMAGE BINARY MODE\r
+                       001000  JFLG==1000      ;NON-STANDARD MODE\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 4\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                               ;AUXFLG ASSIGNMENTS (LEFT HALF)\r
+\r
+                       000001  QFLG==1         ;PLEASE PRINT SWITCH SET\r
+                       000002  NSPROT==2       ;NON-STANDARD DISK OUTPUT PROTECTION\r
+                       000004  SBIN==4         ;36-BIT PR. ON REL. ETC. FILES\r
+                       000020  NOMORE==20      ;IGNORE ANY SWITCHES BUT MTA FROM NOW ON\r
+                       000040  CDRFLG==40      ;CONVERT COLS 73-80 TO SPACES + /C\r
+                       000100  INFOFL==100     ;FLAG USED BY ERR3A:\r
+                       000200  RSDCFL==200     ;USED FOR MERGING FILES, ==1 IF FILE HAS EXTENSION\r
+                                               ;REL,SAV,DMP,CHN OR OTHERWISE == 0\r
+                       000400  FRSTIN==400     ;THIS IS THE FIRST INPUT FILE (USED IN FILE\r
+                                               ;MERGE COMMAND) == 0 FOR FIRST INPUT\r
+\r
+                               ;MTAREQ ASSIGNMENTS (RIGHT HALF)\r
+\r
+                       000001  MTAFLG==1       ;MTA ADVANCE ONE FILE\r
+                       000002  MTBFLG==2       ;MTA BACKSPACE ONE FILE\r
+                       000004  MTTFLG==4       ;MTA SKIP TP LOGICAL EOT\r
+                       000010  MTWFLG==10      ;MTA REWIND\r
+                       000020  MTFFLG==20      ;MTA MARK EOF\r
+                       000040  MTUFLG==40      ;MTA REWIND AND UNLOAD\r
+                       000100  MTDFLG==100     ;MTA ADVANCE ONE RECORD\r
+                       000200  MTPFLG==200     ;MTA BACKSPACE ONE RECORD\r
+                       000400  MT8FLG==400     ;MTA SET 800 B.P.I.\r
+                       001000  MT5FLG==1000    ;MTA SET 556 B.P.I.\r
+                       002000  MT2FLG==2000    ;MTA SET 200 B.P.I.\r
+                       004000  MTEFLG==4000    ;MTA SELECT EVEN PARITY\r
+\r
+                               ;AUXFLG ASSIGNMENTS (RIGHT HALF)\r
+\r
+                       000001  REDFLG==1       ;==1 IF ANY FILES ARE INPUT (OTHER THAN DIRECTORIES)\r
+                       000002  SYSFLG==2       ;DEVICE IS SYS\r
+                       000004  SYSLST==4       ;LAST DEVICE WAS SYS\r
+                       000010  LPTOUT==10      ;LPT OUTPUT\r
+                       000020  FFLG==20        ;LIST SHORT DISK DIRECTORY\r
+                       000040  ONEOUT==40      ;ONE OUTPUT FILE INITIALIZED\r
+                       000100  CDRIN==100      ;CARDS IN\r
+                       000200  MTAOUT==200     ;OUTPUT TO MTA\r
+                       000400  MTAIN==400      ;INPUT FROM MTA\r
+                       001000  TTYIN==1000     ;INPUT FROM TTY\r
+                       002000  READ1==2000     ;LOOK FOUND NEW INPUT FILE, NO READ YET.\r
+                       004000  DTAOUT==4000    ;OUTPUT TO DTA\r
+                       010000  DSKOUT==10000   ;OUTPUT TO DSK\r
+                       020000  DTAIN==20000    ;INPUT FROM DTA\r
+                       040000  DSKIN==40000    ;INPUT FROM DSK\r
+                       100000  TTYOUT==100000  ;OUTPUT TO TTY\r
+                       200000  PPTIN==200000   ;INPUT FROM PTR\r
+                       400000  PPTOUT==400000  ;OUTPUT TO PTP\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 5\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                               ;CALFLG ASSIGNMENTS (RIGHT HALF) FOR DESCRIBING A BLOCK OF INFORMATION\r
+                               ;FOUND BY THE COMMAND SCANNER.\r
+\r
+                       000001  FNEX==1         ;==1 WHEN FN.EX==*.*, *.EXT, FN.* (WHEN MORE\r
+                                               ;THAN ONE FN.EX IS IMPLIED).\r
+                       000002  MATEX==2        ;FILE EXTENSIONS MUST MATCH\r
+                       000004  MATFN==4        ;FILE NAMES MUST MATCH\r
+                       000010  NEWDEV==10      ;A NEW INPUT DEVICE WAS GIVEN\r
+                       000020  NEWPP==20       ;A NEW #P-P WAS GIVEN\r
+                       000040  ASTFLG==40      ;FLAG SET WHEN FILE NAMED IN CS FOUND\r
+                                               ;BY LOOK ROUTINE EVEN IF FN OR EXT =*\r
+                       000100  DEV==100        ;DEVICE NAME INDICATOR\r
+                       000200  DVSWTH==200     ;OUTPUT DEVICE SEEN\r
+                       000400  NSWTCH==400     ;INDICATES NULL NAME\r
+                       001000  SSWTCH==1000    ;LEFT ARROW SEEN\r
+                       002000  LISTTY==2000    ;LIST TO TTY\r
+                       004000  TMPI==4000      ;INPUT DEVICE TMPCOR SEEN\r
+                       010000  TMPO==10000     ;OUTPUT DEVICE TMPCOR\r
+                       020000  RXFLG==20000    ;(RX) SEEN\r
+\r
+                       000037  ALLCLF==FNEX!MATEX!MATFN!NEWDEV!NEWPP\r
+\r
+                               ;DEVICE CHANNEL ASSIGNMENTS\r
+\r
+                       000001  CON==1          ;COMMAND INPUT CHANNEL\r
+                       000002  OUT==2          ;OUTPUT DEVICE\r
+                       000003  IN==3           ;INPUT DEVICE\r
+                       000004  TAPE==4         ;MTA POSITIONING\r
+                       000005  DIR==5          ;DISK DIR. READ\r
+                       000006  BLKIN==6        ;INPUT FOR 10/30 DISK FILES\r
+                       000007  DTDIR==7        ; DECTAPE DIR. READ(FOR PPN)\r
+\r
+                               ;ACCUMULATOR ASSIGNMENTS\r
+\r
+                       000001  T1=1            ;GENERAL PURPOSE\r
+                       000002  T2=2            ;G.P.\r
+                       000003  T3=3            ;G.P.\r
+                       000004  CHR=4           ;INPUT CHARACTER\r
+                       000005  P=5             ;PUSHDOWN POINTER\r
+                       000006  FLAG=6          ;FLAG REGISTER\r
+                       000007  T4=7            ;G.P.\r
+                       000010  IOS=10          ;IO STATUS BITS\r
+                       000011  T5=11           ;G.P.\r
+                       000012  T6=12           ; G.P.\r
+                       000013  AUXFLG=13       ;AUXILIARY FLAG REGISTER\r
+                       000014  T7=14           ;G.P.\r
+                       000015  DOUT=15         ;DIVIDED NO. FOR OUTPUT\r
+                       000016  DOUT1=16        ;REMAINDER, DOUT+1\r
+                       000017  CALFLG=17       ;MORE FLAGS\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 6\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+\r
+                               ;MISCELLANEOUS PARAMETERS\r
+\r
+                       400000  WRTLOK==400000  ;WRITE LOCK (DECTAPE) /IMPROPER I/O\r
+                       040000  BIGBLK==40000   ;BLOCK TOO LARGE\r
+                       000002  INBIT==2        ;DEVCHR BIT FOR DEV CAN DO INPUT\r
+                       000001  OUTBIT==1       ;DEVCHR BIT FOR DEV CAN DO OUTPUT\r
+                       020000  EOFBIT==20000   ;END OF FILE\r
+                       002000  EOTBIT==2000    ;END OF TAPE\r
+                       000004  DTABIT==4       ;DEVCHR BIT FOR DECTAPE IDENTIFICATION\r
+                       000001  INHIB==1        ;OUTPUT RELEASE INHIBIT BIT\r
+                       000010  TABSP==10       ;SPACES PER TAB\r
+                       000200  PTRBIT==200     ;DEVCHR BIT FOR PTR\r
+                       000400  PTPBIT==400     ;DEVCHR BIT FOR PTP\r
+                       200000  DSKBIT==200000  ;DEVCHR BIT FOR DSK\r
+                       000020  MTABIT==20      ;DEVCHR BIT FOR MTA\r
+                       040000  LPTBIT==40000   ;DEVCHR BIT FOR LPT\r
+                       000010  TTYBIT==10      ;DEVCHR BIT FOR TTY\r
+                       100000  CDRBIT==100000  ;DEVCHR FOR CDR\r
+                       000200  DENS2==200      ;MTA 200 BPI\r
+                       000400  DENS5==400      ;MTA 556 BPI\r
+                       000600  DENS8==600      ;MTA 800 BPI\r
+                       001000  PARE==1000      ;MTA EVEN PARITY\r
+                       004000  LDP==4000       ;MTA LOAD POINT STATUS\r
+                       000020  HPAGE==20\r
+\r
+                               ;MACRO DEFINITIONS\r
+\r
+                               DEFINE SKIP (J)<JRST    .+1+'J>\r
+\r
+                               DEFINE  LSTLIN (Z),<\r
+                                       SKIPA   T1,[POINT 7,Z]\r
+                                       PUSHJ   P,PUT\r
+                                       ILDB    CHR,T1\r
+                               IFN WCH,<PUSHJ  P,CCASE>\r
+                                       JUMPN   CHR,.-2>\r
+\r
+                               DEFINE  ERRPNT  (X),<\r
+                                       JSP     T1,PTEXT\r
+                                       ASCIZ   X>\r
+\r
+                               DEFINE  ERRPN2  (X),<\r
+                                       JSP     T1,PTEXT2\r
+                                       ASCIZ   X>\r
+\r
+                               DEFINE  ERRPNX  (X),<\r
+                                       JSP     T1,PRETXT\r
+                                       ASCIZ   X>\r
+\r
+\r
+       000000'                 LOW:\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 7\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+\r
+                               ;ASCII CHARACTERS\r
+\r
+                       000015  CR==15          ;CARRIAGE RETURN\r
+                       000012  LF==12          ;LINE FEED\r
+                       000014  FF==14          ;FORM-FEED\r
+                       000033  ALTMOD==33      ;NEWEST ALTMODE\r
+                       000175  ALT175==175     ;OLDEST ALTMODE\r
+                       000176  ALT176==176     ;OLDER ALTMODE\r
+                       000137  LA==137         ;LEFT ARROW\r
+                       000032  CZ==32          ;CONTROL Z\r
+                       000021  XON==21         ;^Q,START TTY PTR\r
+                       000023  XOFF==23        ;^S,STOP TTY PTR MODE\r
+                       000054  COMMA==54\r
+                       000056  PERIOD==56      ;PERIOD\r
+                       000072  COLON==72\r
+                       000040  SPACE==40\r
+                       000177  DEL==177        ;DELETE,RUBOUT,REPEAT MOD.35\r
+                       000011  TAB==11         ;TAB\r
+\r
+\r
+                               ;CALLI DEFINITIONS\r
+\r
+                               OPDEF   RESET   [CALLI   0]\r
+                               OPDEF   DEVCHR  [CALLI   4]\r
+                               OPDEF   CORE    [CALLI  11]\r
+                               OPDEF   EXIT    [CALLI  12]\r
+                               OPDEF   UTPCLR  [CALLI  13]\r
+                               OPDEF   DATE    [CALLI  14]\r
+                               OPDEF   MSTIME  [CALLI  23]\r
+                               OPDEF   GETPPN  [CALLI  24]\r
+                               OPDEF   PJOB    [CALLI  30]\r
+                               OPDEF   RUN     [CALLI  35]\r
+                               OPDEF   GETTAB  [CALLI  41]\r
+                               OPDEF   TMPCOR  [CALLI  44]\r
+                               OPDEF   DSKCHR  [CALLI  45]\r
+                               OPDEF   JOBSTR  [CALLI  47]\r
+                               OPDEF   DEVPPN  [CALLI  55]\r
+                               OPDEF   WAIT    [MTAPE   0]\r
+\r
+                               ;EXTENDED LOOKUP PARAMETERS\r
+\r
+                       000005  RBSIZ==5                ;WRITTEN FILE LENGTH\r
+                       000017  RIBSTS==17              ;STATUS BITS\r
+\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 8\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+\r
+\r
+       000000' 200000  004665' PIP1:   MOVE    0,[LOW,,LOW+1]\r
+       000001' 402000  000000'         SETZM   LOW\r
+       000002' 251000  004665'         BLT     0,LOWTOP\r
+       000003' 205000  637163          MOVSI   (SIXBIT /SYS/)\r
+       000004' 047000  000055          DEVPPN                  ;FIND PP OF DEVICE SYS\r
+       000005' 200000  003733'         MOVE    PP13            ;ASSUME 1,,3 IF NOT LEVELD\r
+       000006' 202000  004037'         MOVEM   SYSPP           ;SAVE AS SYS PP\r
+                               IFN FTDSK,<\r
+                                       MOVE    [XWD 17,11]     ;STATES WORD\r
+                                       GETTAB                  ;GET IT\r
+                                       SETZ                    ;ERROR RETURN\r
+                                       TLNN    (7B9)           ;TEST FOR LEVEL D\r
+                                       TDZA                    ;NOT LEVEL D\r
+                                       HRROI   -2              ;THIS IS LEVEL D\r
+                                       MOVEM   LEVEL           ;SAVE  >\r
+       000007' 554040  000000* IFE FTDSK,<HLRZ T1,JOBSA        ;NO DSK SO USE JOBFF>\r
+                               IFN FTDSK,<MOVEI T1,DSKDR       ;ASSUME NO DISK FOR TEST, LOC OF DSK RTNS\r
+                                       MOVSI   0,(SIXBIT /DSK/)\r
+                                       DEVCHR                  ;DEVCHR REQUEST: IS THERE A DSK \r
+                                       JUMPE   0,P1            ;0 IF NO DISK: USE DSKDR\r
+                                       MOVE    T1,JOBFF        ;DISK: PREPARE TO SAVE C(JOBFF)\r
+                                       HRRZ    T2,JOBREL       ;HIGHEST REL LOC AVAILABLE TO USER\r
+                                       CAIL    T2,6000         ;CURRENT SIZE 4K\r
+                                       JRST    P1              ;YES\r
+                                       MOVEI   T2,7777         ;NO. EXPAND TO 4K\r
+                                       HRRZM   T1,SVJBFF       ;SAVE JOBFF SO BUFFERS CAN BE CREATED\r
+                                       CORE    T2,             ;CORE UUO\r
+                                       JRST    DERR7           ;CORE UNAVAILABLE>\r
+       000010' 552040  004016' P1:     HRRZM   T1,SVJBFF       ;SAVE JOBFF SO BUFFERS CAN BE CREATED\r
+       000011' 254000  000012'         JRST    PIP\r
+\r
+                               IFN FTDSK,<\r
+                               DERR7:  ERRPNT  </?4K needed/>\r
+                                       EXIT                    ;EXIT TO MONITOR>\r
+\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 9\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+       000012' 047000  000000  PIP:    RESET           ;REINITIALIZE WHEN RESTARTED MANUALLY\r
+                                                       ;NEW COMMAND STRING SCAN STARTS HERE\r
+       000013'                 PIP2:   \r
+       000013' 265440  000541' PIP2A:  JSP T5,INICN1   ;INITIALIZE THE TTY AND PDL\r
+       000014' 201000  000015          MOVEI 0,CR      ;TYPE CR\r
+       000015' 136000  003757'         IDPB 0,TFO+1\r
+       000016' 201000  000012          MOVEI 0,LF      ;AND LF\r
+       000017' 136000  003757'         IDPB    0,TFO+1\r
+       000020' 201000  000052          MOVEI   0,"*"   ;TYPE ASTERISK******\r
+       000021' 136000  003757'         IDPB 0,TFO+1    ;READY TO ACCEPT\r
+       000022' 067040  000000          OUTPUT CON,     ;COMMAND FROM TTY\r
+       000023' 402000  004026' PIP2B:  SETZM TOTBRK    ;CLEAR PAREN COUNTER\r
+       000024' 201000  000010          MOVEI 0,TABSP   ;SPACES PER TAB\r
+       000025' 202000  004027'         MOVEM 0,TABCT   ;INITIALIZE TAB COUNT\r
+       000026' 200000  003721'         MOVE 0,ZRO      ;ASCII /00000/\r
+       000027' 202000  004014'         MOVEM 0,SQNUM   ;INITIALIZE SEQUENCE NUMBERS\r
+       000030' 071040  000000          RELEAS CON,     ;RELEASE TTY FOR USE AS IN-OUT DEVICE\r
+\r
+       000031' 403300  004040' MAINA1: SETZB FLAG,FILNAM   ;INITIALIZE FOR FIRST/NEXT COMMAND STRING\r
+       000032' 403540  004637'         SETZB AUXFLG,DEVICE\r
+                               IFN FTDSK,<HRRZI 0,(SIXBIT /SYS/) ;SYSTEM DIRECT DEV, DSK/DTA\r
+                                       HRLZM 0,ADSK            ;PUT IN SYSTEM DEVICE>\r
+       000033' 200000  004666'         MOVE 0,[XWD FILNAM,FILNAM+1]    ;SET PROJECT, PROG NO.\r
+       000034' 251000  004136'         BLT 0,AB        ;ZERO OUT FILNAM - AB\r
+       000035' 400740  000000          SETZ    CALFLG,         ;CLEAR OTHER FLOGS\r
+       000036' 200140  000055'         MOVE T3,COMPTR  ;BYTE POINTER FOR STORING CS IN BUFFER\r
+\r
+                               ;ACCUMULATE CS CHARS IN COMBUF ALLOW LONG CS ONLY FOR TTY COMMAND\r
+\r
+       000037' 260240  001352' COMSTO: PUSHJ   P,GETTA         ;GET CS CHAR\r
+       000040' 350340  004131'         AOS     T4,COMCNT       ;COUNT CHARS\r
+       000041' 303340  000310          CAILE   T4,^D200        ;ALLOW UP TO 200 CHARS\r
+       000042' 254000  002045'         JRST    ERR6B           ;MORE THAN 200 CHARS\r
+       000043' 306000  000032          CAIN    0,CZ            ;CHECK FOR ^Z\r
+       000044' 260240  001415' COMASK: PUSHJ   P,GETEN2        ;SET  ^Z IN 0\r
+       000045' 136000  000003          IDPB    0,T3            ;STORE IN COMBUF\r
+       000046' 332000  004057'         SKIPE   COMEOF          ;END-OF-FILE SET?\r
+       000047' 254000  000056'         JRST    COMPRO          ;YES, PROCESS CS IN COMBUF\r
+       000050' 307000  000015          CAIG    0,CR            ;NOT EOF\r
+       000051' 305000  000012          CAIGE   0,LF            ;LF,VT,FF,CR?\r
+       000052' 306000  000033          CAIN    0,ALTMODE       ;NO, $?\r
+       000053' 254000  000044'         JRST    COMASK          ;YES\r
+       000054' 254000  000037'         JRST    COMSTO          ;NO, KEEP STORING\r
+\r
+       000055' 440700  004060' COMPTR: POINT   7,COMBUF\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 10\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+\r
+                               ;********************************************************************\r
+                               ;BEGIN SCAN OF DESTINATION PORTION OF COMMAND STRING\r
+       000056'                 COMPRO:\r
+                               IFN FTDSK,<\r
+                                       MOVSI   0,(SIXBIT/DSK/)\r
+                                       DEVCHR                          ;IS THERE A DSK?\r
+                                       JUMPE   0,COMPRP\r
+                                       MOVSI   0,(SIXBIT /DSK/)        ;MAKE DEFAULT DEVICE\r
+                                       MOVEM   0,DEVICE                ;TENTATIVELY DSK>\r
+\r
+       000056' 071040  000000  COMPRP: RELEASE CON,            ;RELEASE TTY\r
+       000057' 200000  000055'         MOVE    0,COMPTR        ;INITIALIZE POINTER\r
+       000060' 202000  004132'         MOVEM 0,COMPTS          ;TO PICK UP CS FROM COMBUF\r
+       000061' 260240  000557'         PUSHJ P,NAME    ;GO SCAN DESTINATION PORTION OF COMMAND STRING\r
+       000062' 332000  004135'         SKIPE XNAME     ;NO SCAN OVERSHOOT ALLOWED\r
+       000063' 254000  002040'         JRST ERR6A\r
+       000064' 331000  004134'         SKIPL   ESWTCH  ;11/25/69  END OF CS ?\r
+       000065' 254000  000073'         JRST    MAINC   ;NO\r
+       000066' 606740  000400          TRNN    CALFLG,NSWTCH   ;NON-NULL DESTINATION\r
+       000067' 602740  001000          TRNE    CALFLG,SSWTCH   ;_ NOT SEEN?\r
+       000070' 332000  004040'         SKIPE   FILNAM          ;OR ANYTHING IN FILENAME\r
+       000071' 254000  002040'         JRST    ERR6A           ;YES, ERROR\r
+       000072' 254000  000013'         JRST    PIP2            ;NO, ALL OK\r
+\r
+       000073' 200000  004637' MAINC:  MOVE 0,DEVICE   ;GET OUTPUT DEVICE NAME\r
+       000074' 202000  004634'         MOVEM 0,ODEV    ;SAVE DEVICE NAME FOR LATER USAGE\r
+       000075' 260240  000506'         PUSHJ P,DEVTST  ;SAVE DEVICE TYPE, SET XXXOUT.E.G. DTAOUT\r
+       000076' 260240  000466'         PUSHJ P,ABCHK   ;CHECK MTA BACKSPACE/ADV VALUES\r
+       000077' 260240  000476'         PUSHJ P,PROTK   ;CHECK PROTECTION\r
+       000100' 200000  004136'         MOVE 0,AB       ;MTA VALUE SWITCHES\r
+       000101' 202000  004031'         MOVEM 0,ABOUT   ;GET MTA CONTROL NUMBERS FO R OUT\r
+       000102' 200000  004133'         MOVE 0,AUX\r
+       000103' 202000  004032'         MOVEM 0,AUXOUT\r
+       000104' 200000  004667'         MOVE 0,[XWD FILNAM,DTON]\r
+       000105' 251000  004047'         BLT 0,DTON+3    ;SAVE DESTINATION FILE NAME\r
+                               IFN FTDSK,<TRNN AUXFLG,DSKOUT   ;DISK OUTPUT?>\r
+       000106' 402000  004047'         SETZM DTON+3    ;ZERO 4TH WD OF DIRECTORY ENTRY\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 11\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+       000107' 620740  001000  M3:     TRZ     CALFLG,SSWTCH   ;TERMINATE DESTINATION FILE SCAN\r
+       000110' 402000  004637'         SETZM DEVICE    ;DONT CARRY OVER INPUT DEVICE\r
+                               IFN FTDSK,<MOVSI 0,(SIXBIT/DSK/)\r
+                                       DEVCHR          ;IS THERE A DISK\r
+                                       JUMPE 0,M3A\r
+                                       MOVSI 0,(SIXBIT /DSK/)  ;DEFAULT CASE DSK\r
+                                       MOVEM 0,DEVICE  ;MUST NOT LET O/DEV. CARRY OVER AS I/DEV.>\r
+       000111' 260240  000451' M3A:    PUSHJ P,DESCRP  ;GET A UNIT DESCRIPTOR (INPUT).\r
+       000112' 607540  000001          TLNN AUXFLG,QFLG;Q?     ;SCAN INPUT PORTION OF COMMAND STRING\r
+       000113' 254000  000132'         JRST M2         ;NO\r
+       000114' 551000  637163          HRRZI 0,(SIXBIT /SYS/)  ;YES MAKE INPUT DEVICE SYS\r
+       000115' 516000  004637'         HRLZM 0,DEVICE\r
+       000116' 516000  004050'         HRLZM DEVA              ;SAVE COPY OF INPUT DEVICE\r
+       000117' 200000  003727'         MOVE 0,QPIP             ;MAKE INPUT FILENAME QPIP\r
+       000120' 202000  004040'         MOVEM 0,FILNAM\r
+       000121' 205000  120000          MOVSI 0,(SIXBIT /*/)    ;DONT RESTRICT QPIP\r
+       000122' 202000  004041'         MOVEM 0,FILEX   ;EXT TO BEING NULL\r
+       000123' 620740  000002          TRZ     CALFLG,MATEX    ;DON'T MATCH EXTENSIONS\r
+       000124' 660540  000002          TRO     AUXFLG,SYSFLG   ;DEVICE IS SYS\r
+       000125' 200000  004037'         MOVE    0,SYSPP ;GET SYS PP\r
+       000126' 202000  004043'         MOVEM   0,PP    ;AND SET IT\r
+       000127' 370000  004134'         SOS ESWTCH      ;NO MORE COMMAND STRING\r
+       000130' 620540  261500          TRZ AUXFLG,DTAIN+DSKIN+CDRIN+PPTIN+TTYIN+MTAIN\r
+       000131' 260240  002132'         PUSHJ P,CHECK1  ;CHECK INPUT DEVICE\r
+\r
+       000132' 661540  000020  M2:     TLO AUXFLG,NOMORE       ;NO MORE SWITCHES BUT MTA ALLOWED\r
+       000133' 603300  000001          TLNE FLAG,OFLG  ;BLOCK 0 COPY?\r
+       000134' 254000  003451'         JRST BLOCK0     ;YES\r
+       000135' 640300  002100          TRC FLAG,XFLG+RFLG;(RX)\r
+       000136' 646300  002100          TRCN FLAG,XFLG+RFLG\r
+       000137' 260240  000173'         PUSHJ   P,M5    ;YES,(RX)\r
+                               IFN RIMSW,<\r
+                                       TLNN FLAG,RIMFLG        ;RIM OUTPUT?\r
+                                       JRST M1         ;NO\r
+                               IFE WCH,<       \r
+                                       TRNE AUXFLG,PPTOUT      ;RIM IS ONLY DTA TO PTP\r
+                                       TRNN AUXFLG,DTAIN!DSKIN!MTAIN\r
+                                       JRST ERR5B>\r
+                               IFN WCH,<JRST RIMTB  >>\r
+\r
+       000140' 201340  000001  M1:     MOVEI T4,1      ;ASCII LINE MODE ASSUMED\r
+       000141' 260240  000200'         PUSHJ P,OUTLOOK ;SEE IF OUTPUT DEV MTA\r
+       000142' 260240  000154'         PUSHJ P,M4      ;NOT MTA\r
+       000143' 603300  001000          TLNE    FLAG,JFLG       ;NON STARDARD MODE ?\r
+       000144' 660340  000100          TRO     T4,100          ;TO PUNCH 029 ON CDP\r
+       000145' 552340  004633'         HRRZM T4,OMOD   ;SET MODE OF OUTPUT DEV\r
+       000146' 201340  000001          MOVEI T4,1\r
+       000147' 260240  000204'         PUSHJ P,INLOOK  ;SEE IF INPUT DEV MTA\r
+       000150' 260240  000154'         PUSHJ P,M4      ;NOT MTA\r
+       000151' 552340  004636'         HRRZM T4,ININI1 ;SET MODE OF INPUT DEV\r
+       000152' 260240  002746'         PUSHJ P,FNSET   ;NOW DEVICE, DEVA CORRECT FOR START\r
+       000153' 254000  000251'         JRST OMOD1      ;INIT OUTPUT DEVICE\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 12\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+\r
+                               ;SET MODE IF /I,/B,/H,\r
+\r
+       000154' 607300  000100  M4:     TLNN FLAG,IFLG  ;IMAGE BINARY MODE?\r
+       000155' 254000  000160'         JRST .+3        ;NO\r
+       000156' 660340  000010          TRO T4,10       ;IM. MODE\r
+       000157' 620340  000001          TRZ T4,1        ;CLEAR ASCII LINE MODE\r
+\r
+       000160' 606300  000002          TRNN FLAG,BMOD  ;BINARY MODE?\r
+       000161' 254000  000164'         JRST .+3        ;NO\r
+       000162' 660340  000014          TRO T4,14       ;BIN. MODE\r
+       000163' 620340  000001          TRZ T4,1        ;CLEAR ASCII LINE MODE\r
+\r
+       000164' 603300  000400          TLNE FLAG,IBFLG ;ASCII TO START.  IB MODE?\r
+       000165' 660340  000013          TRO T4,13       ;YES\r
+       000166' 602300  002000          TRNE FLAG,XFLG  ;COPY MODE?\r
+       000167' 263240  000000          POPJ P,         ;YES, DON'T ALTER DATA MODE\r
+\r
+       000170' 602300  000110          TRNE FLAG,DFLG+RFLG     ;DELETE OR RENAME?\r
+       000171' 660340  000020          TRO T4,20       ;DIRECTORY WILL BE WRITTEN, DON'T\r
+       000172' 263240  000000          POPJ P,         ;COMPUTE WORD COUNT MODE NEEDED.\r
+                                                       ;FORCE MONITOR TO USE WORD COUNT\r
+                                                       ;IN FIRST DATA WORD OF BUFFER\r
+\r
+       000173' 620300  000100  M5:     TRZ     FLAG,RFLG       ;CLEAR /R FLAG\r
+       000174' 660740  020000          TRO     CALFLG,RXFLG    ;SET (RX) FLAG\r
+       000175' 200000  004670'         MOVE    0,[XWD DTON,MATCH]\r
+       000176' 251000  004650'         BLT     0,MATCH+1       ;SAVE NAME AND EXT\r
+       000177' 263240  000000          POPJ    P,              ;RETURN\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 13\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                               ;IF OUTPUT DEVICE IS MTA PERFORM ALL PRE-TRANSFER REQUESTS\r
+                               ;SUCH AS REWIND.  IF OUTPUT DEVICE IS MTA, AND THERE IS NO \r
+                               ;INPUT DEVICE, EXIT.  FOR OTHER MTA OUTPUT, PREPARE INIT\r
+                               ;DENSITY AND PARITY.\r
+\r
+       000200'                 OUTLOOK:\r
+       000200' 200140  004031'         MOVE T3,ABOUT   ;AB FOR OUTPUT DEV\r
+       000201' 200040  004032'         MOVE T1,AUXOUT  ;AUX FOR OUTPUT DEV\r
+       000202' 201500  003666'         MOVEI T6,INOMTA ;SET TO INIT\r
+       000203' 254000  003531'         JRST MT1        ;MTA FOR OUTPUT\r
+\r
+\r
+\r
+\r
+                               ;SAME FOR INPUT DEVICE.\r
+\r
+       000204' 332140  004040' INLOOK: SKIPE   T3,FILNAM       ;IF NO FILENAME\r
+       000205' 606300  002000          TRNN    FLAG,XFLG       ;OR NOT /X\r
+       000206' 254000  000217'         JRST    INLUK1          ;CONTINUE\r
+       000207' 332000  004044'         SKIPE   DTON            ;IF OUTPUT NAME SET UP\r
+       000210' 254000  000217'         JRST    INLUK1          ;CONTINUE\r
+       000211' 554040  004041'         HLRZ    T1,FILEX        ;GET EXT\r
+       000212' 302040  120000          CAIE    T1,(SIXBIT /*/) ;IF EITHER IS *\r
+       000213' 316140  003730'         CAMN    T3,STAR         ;DON'T SET OUTNAME\r
+       000214' 254000  000217'         JRST    INLUK1          ;BUT JUST CONTINUE\r
+       000215' 202140  004044'         MOVEM   T3,DTON         ;SET OUT NAME\r
+       000216' 516040  004045'         HRLZM   T1,DTON+1       ;AND EXTENSION\r
+       000217' 200140  004136' INLUK1: MOVE T3,AB      ;ADV OR BKSPACE\r
+       000220' 200040  004133'         MOVE T1,AUX     ;AUX FOR INPUT DEV\r
+       000221' 201500  003667'         MOVEI T6,INIMTA ;SET TO INIT\r
+       000222' 254000  003531'         JRST MT1        ;MTA FOR INPUT\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 14\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                               ;ROUTINE TO INITIALIZE OUTPUT DEVICE\r
+\r
+       000223' 200040  004671' OMODE:  MOVE T1,[XWD OBF,IBF]\r
+       000224' 202040  004635'         MOVEM T1,ODEV+1\r
+       000225' 200040  004015'         MOVE T1,DTJBFF  ;JOBFF AFTER 2 TTY BUFS\r
+       000226' 202040  000000*         MOVEM T1,JOBFF  ;SET UP\r
+\r
+       000227' 050100  004633'         OPEN OUT,OMOD   ;INITIALIZE OUTPUT DEVICE\r
+       000230' 254000  001767'         JRST ERR1       ;UNAVAILABLE ERROR\r
+       000231' 065100  000001          OUTBUF OUT,1    ;TRY ONE OUTBUFFER FOR SIZE\r
+       000232' 250040  000226*         EXCH T1,JOBFF   ;JOBFF_DTJBFF+BUFSZ\r
+                                                       ;NOTE JOBFF RESET TO DTJBFF\r
+       000233' 274040  004015'         SUB T1,DTJBFF   ;T1=BUFSZ\r
+       000234' 550000  000000*         HRRZ 0,JOBREL   ;HIGHEST CORE AVAILABLE\r
+       000235' 274000  004015'         SUB 0,DTJBFF    ;0=TOTAL CORE AVAILABLE\r
+       000236' 240000  777777          ASH 0,-1        ;COMPUTE HOW MANY OUTPUT BUFFERS\r
+       000237' 232000  000001          IDIVM 0,T1      ;FIT IN HALF THE AVAILABLE SPACE\r
+       000240' 201340  000223'         MOVEI T4,OMODE  ;SET RETURN FROM MORCOR\r
+       000241' 305040  000001          CAIGE T1,1      ;1 OR MORE THAN 1 FIT?\r
+       000242' 254000  000262'         JRST MORCOR     ;NO, NEED MORE CORE\r
+       000243' 065101  000000          OUTBUF OUT,(T1) ;SET UP OUTPUT BUFFERS\r
+       000244' 200000  003746'         MOVE 0,OBF+1\r
+       000245' 202000  003741'         MOVEM 0,SVOBF   ;SAVE ORIGINAL MODE SETTING\r
+       000246' 200000  000232*         MOVE 0,JOBFF\r
+       000247' 552000  004017'         HRRZM 0,SVJBF1  ;PREPARE TO RECLAIM INBUFFER SPACE\r
+       000250' 263240  000000          POPJ P,\r
+\r
+       000251' 260240  000223' OMOD1:  PUSHJ P,OMODE   ;GO INITIALIZE OUTPUT DEVICE\r
+       000252' 626300  004000          TRZN FLAG,ZFLG  ;Z COMMAND TYPED?\r
+       000253' 254000  000275'         JRST MAINA2     ;NO,\r
+       000254' 260240  002212'         PUSHJ P,DTCLR   ;YES, GO CLEAR DIRECTORY\r
+       000255' 071100  000000          RELEASE OUT,\r
+       000256' 071240  000000          RELEASE DIR,\r
+       000257' 606740  000400          TRNN    CALFLG,NSWTCH   ;SEE IF DEVICE WAS TYPED\r
+       000260' 254000  000251'         JRST OMOD1      ;YES\r
+       000261' 254000  000013'         JRST PIP2       ;GET NEXT COMMAND\r
+\r
+       000262' 550000  000234* MORCOR: HRRZ 0,JOBREL   ;TRY TO GET\r
+       000263' 271000  002000          ADDI 0,2000     ;1K MORE OF CORE\r
+       000264' 047000  000011          CORE            ;ASK MONITOR FOR 1K CORE\r
+       000265' 254000  000267'         JRST OMODER             ;NOT AVAILABLE\r
+       000266' 254007  000000          JRST (T4)       ;GOT IT\r
+\r
+       000267' 265040  002155' OMODER: ERRPNT</?Not enough core/>\r
+       000270' 376355  772100\r
+       000271' 627355  772716\r
+       000272' 641014  367744\r
+       000273' 624000  000000\r
+       000274' 047000  000012          EXIT\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 15\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                               ;MAIN LOOP TO PROCESS INPUT SIDE OF CS\r
+\r
+\r
+       000275' 602300  000110  MAINA2: TRNE   FLAG,RFLG+DFLG   ;RENAME OR DELETE FILE MODE?\r
+       000276' 254000  002432'         JRST   DTDELE           ;YES./D,/X,OR(DX)\r
+                               IFN RIMSW,<\r
+                                       TLNE   FLAG,RIMFLG      ;RIM?\r
+                                       JRST   RIMTB            ;YES./Y\r
+                                       >\r
+       000277' 602300  002000          TRNE   FLAG,XFLG        ;TRANSFER EVERYTHING MODE?\r
+       000300' 254000  002220'         JRST   PRECOP           ;YES./X\r
+                               ;LOOP TO COPY ALL FILES BEGINS HERE FROM MAIN2\r
+       000301' 606540  000020  MAINA3: TRNN   AUXFLG,FFLG      ;LIST DSK DIR SHORT?\r
+       000302' 602300  000020          TRNE   FLAG,LFLG        ;LIST DIRECTORY?\r
+       000303' 254000  003017'         JRST   DTPDIR           ;YES./F OR /L\r
+       000304' 260240  000426'         PUSHJ  P,ININIT         ;INITIALIZE INPUT FILE\r
+       000305' 602540  020000          TRNE   AUXFLG,DTAIN     ;DEC TAPE INPUT?\r
+       000306' 260240  002701'         PUSHJ  P,DTADIR         ;INIT DTA DIR\r
+\r
+                               IFN FTDSK,<TRNE   AUXFLG,DSKIN  ;NO, DISK INPUT?\r
+                                       PUSHJ  P,DSKDIR         ;OR DSK>\r
+       000307' 260240  002566' MAINA4: PUSHJ  P,LOOK           ;GET A FILE TO COPY\r
+       000310' 254000  000323'         JRST   MAINA5           ;NO MORE\r
+       000311' 076140  004052'         LOOKUP IN,ZRF\r
+       000312' 254000  002003'         JRST   ERR3             ;LOOKUP FAILURE\r
+                               IFN WCH,<\r
+                               MAINA6: TRNN  AUXFLG,DTAIN+DTAOUT\r
+                                       JRST  .+5\r
+                                       HLRZ  0,ZRF+1\r
+                                       CAIE  0,(SIXBIT /DMP/)\r
+                                       IFN DISK30,<CAIN 0,(SIXBIT/SVE/)>\r
+                                       IFE DISK30,<CAIN 0,(SIXBIT/SAV/)>\r
+                                       JRST  MAINA4            ;DONT COPY DMP OR SAV FILES ON DTA>\r
+       000313' 661300  000020          TLO   FLAG,NEWFIL\r
+       000314' 260240  003353'         PUSHJ P,FILTYP\r
+       000315' 602540  000040          TRNE  AUXFLG,ONEOUT\r
+       000316' 254000  000333'         JRST  PSCANA            ;OUT HAS BEEN INITIALIZED\r
+                               IFE WCH,<\r
+       000317' 260240  002412'         PUSHJ P,OKBLKS>\r
+       000320' 077100  004044'         ENTER OUT,DTON          ;CREATE OUTPUT FILE\r
+       000321' 254000  002024'         JRST  ERR4              ;DIR. FULL OR 0 FILE NAME\r
+       000322' 254000  000333'         JRST  PSCANA\r
+\r
+       000323' 626540  000001  MAINA5: TRZN  AUXFLG,REDFLG\r
+       000324' 254000  001107'         JRST  IOERRN            ;NEVER READ A FILE\r
+       000325' 254000  000411'         JRST  MAIN1\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 16\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+       000326' 602540  201500  PSCANB: TRNE AUXFLG,MTAIN!CDRIN!TTYIN!PPTIN     ;ON NON-DIR DEVICE?\r
+       000327' 620740  000037          TRZ     CALFLG,ALLCLF   ;END OF THE ONE OR MANY FILES SPECIFIED\r
+       000330' 666540  000040          TRON AUXFLG,ONEOUT      ;HAS OUT JUST BEEN INIT?\r
+       000331' 067100  000000          OUTPUT OUT,     ;YES, AND FIRST FILE IS EOF ONLY, INIT OUT IN\r
+                                                       ;CASE NO MORE SOURCE FILES\r
+       000332' 254000  000407'         JRST PSCAN5     ;EMPTY FILE, CLOSE INPUT, RETURN FOR MORE\r
+\r
+       000333' 660540  000001  PSCANA: TRO   AUXFLG,REDFLG     ;SET FLAG FOR INPUT FILE READ\r
+       000334' 260240  001616'         PUSHJ P,INP             ;GO READ INPUT FILE\r
+       000335' 620540  002000          TRZ   AUXFLG,READ1\r
+       000336' 260240  002376'         PUSHJ P,TTYZ            ;CHECK IF INPUT IS TTY\r
+       000337' 602400  020000          TRNE IOS,EOFBIT         ;EOF FIRST DATA?\r
+       000340' 254000  000326'         JRST PSCANB\r
+       000341' 336000  003744'         SKIPN IBF+2\r
+       000342' 254000  000333'         JRST PSCANA\r
+\r
+       000343' 660540  000040  PSCAN:  TRO AUXFLG,ONEOUT       ;INDICATE ONE OUTPUT FILE INITED\r
+       000344' 200000  003723'         MOVE 0,OPTRA    ;PRESCAN A LINE, INITIALIZE LINE BUFFER PTR\r
+       000345' 202000  004020'         MOVEM 0,OPTR\r
+       000346' 402000  004035'         SETZM CDRCNT\r
+       000347' 260240  000553'         PUSHJ P,CLRBUF  ;CLEAR LINE BUFFER\r
+       000350' 664300  000400          TROA FLAG,STS   ;START A FRESH LINE\r
+       000351' 260240  000756' PSCAN3: PUSHJ P,PUT     ;HERE FOR BINARY DATA\r
+\r
+       000352' 260240  001462' PSCAN2: PUSHJ P,GET     ;GET CHARACTER\r
+       000353' 254000  000376'         JRST PSCAN1     ;END OF FILE RETURN\r
+       000354' 616300  004672'         TDNN FLAG,[XWD IFLG+IBFLG,BMOD] ;BIN. OR NO CHAR. PROCESSING\r
+       000355' 603540  000004          TLNE AUXFLG,SBIN\r
+       000356' 254000  000351'         JRST PSCAN3     ;YES\r
+       000357' 200040  004020'         MOVE T1,OPTR\r
+       000360' 306200  000177          CAIN CHR,DEL    ;VJC 4/16/69\r
+       000361' 254000  000352'         JRST PSCAN2     ; STR# 10-2615\r
+       000362' 316040  003722'         CAMN T1,OPTMAX  ;CHECK LENGTH OF LINE\r
+       000363' 254000  001751'         JRST ERR10      ;LINE TOO LONG\r
+       000364' 136200  004020'         IDPB CHR,OPTR   ;DEPOSIT CHAR. IN LINE BUFFER\r
+       000365' 307200  000024          CAIG CHR,24\r
+       000366' 305200  000020          CAIGE   CHR,20  ;LINE PRINTERR CONTROL CHAR\r
+       000367' 254000  000371'         SKIP    1       ;NO\r
+       000370' 254000  000374'         JRST PSCAN4     ;YES, TREAT AS END OF LINE\r
+       000371' 307200  000014          CAIG CHR,14\r
+       000372' 305200  000012          CAIGE CHR,12    ;END OF LINE CHARACTER?\r
+       000373' 254000  000352'         JRST PSCAN2     ;NO, SO CONTINUE\r
+       000374' 260240  000707' PSCAN4: PUSHJ P,OUTLBF  ;YES, SO DUMP THE LINE BUFFER\r
+       000375' 254000  000343'         JRST PSCAN      ;SCAN THE NEXT LINE\r
+\r
+       000376' 135200  004020' PSCAN1: LDB     CHR,OPTR        ;PICK UP LAST CHAR.\r
+       000377' 306200  000032          CAIN    CHR,CZ          ;IS IT ^Z\r
+       000400' 606540  001000          TRNN    AUXFLG,TTYIN    ;FROM TTY?\r
+       000401' 254000  000404'         JRST    PSCAN6          ;NO\r
+       000402' 400200  000000          SETZ    CHR,            ;YES,CLEAR CHAR.\r
+       000403' 137200  004020'         DPB     CHR,OPTR        ;AND REMOVE FROM BUFFER\r
+       000404' 260240  000707' PSCAN6: PUSHJ P,OUTLBF  ;DUMP THE REMAINING BUFFER\r
+       000405' 602300  002000          TRNE FLAG,XFLG  ;COPY MODE?\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 16-1\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+       000406' 254000  002311'         JRST COPY2A     ;YES, GO COPY THE NEXT FILE\r
+       000407' 070140  000000  PSCAN5: CLOSE IN,\r
+       000410' 254000  000307'         JRST MAINA4\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 17\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                               ;COME HERE AFTER /L,/D,/R ON DISK OR THROUGH COPYING\r
+\r
+       000411' 071240  000000  MAIN1:  RELEAS DIR,     ;RELEASE THE DIRECTORY DEVICE\r
+       000412' 071140  000001          RELEAS IN,INHIB ;RELEASE THE INPUT DEVICE\r
+       000413' 331340  004134'         SKIPL T4,ESWTCH ;MORE COMMAND STRING TO PROCESS?\r
+       000414' 254000  000421'         JRST MAIN2      ;YES\r
+\r
+                               ;COME HERE AFTER /D,/R ON DTA. ALSO FROM ABOVE\r
+\r
+       000415' 070100  000000  MAINB:  CLOSE OUT,      ;CLOSE THE OUTPUT FILE\r
+       000416' 260240  000764'         PUSHJ P,OUTP1   ;CHECK THE FINAL ERROR BITS\r
+                               IFN FTDSK,<TLNE AUXFLG,NSPROT   ;NON-ST. PROT?\r
+                                       TRNN AUXFLG,DSKOUT+DTAOUT       ;DISK OUT/ OR DTA\r
+                                       JRST MAINB1     ;NO\r
+                                       LDB 0,PRPTL\r
+                                       DPB 0,PRPTD\r
+                                       RENAME OUT,DTON ;SET UP RENAME REQUEST\r
+                                       JRST DERR6      ;DISK ERROR\r
+                               MAINB1:>\r
+       000417' 071100  000000          RELEAS OUT,     ;RELEASE THE OUTPUT DEVICE\r
+       000420' 254000  000013'         JRST PIP2       ;PROCESS THE NEXT COMMAND\r
+\r
+       000421' 260240  000451' MAIN2:  PUSHJ P,DESCRP  ;GET THE NEXT INPUT FILE TO PROCESS\r
+       000422' 260240  000204'         PUSHJ P,INLOOK\r
+       000423' 260240  000154'         PUSHJ P,M4\r
+       000424' 552340  004636'         HRRZM T4,ININI1\r
+       000425' 254000  000301'         JRST MAINA3\r
+                               ;END OF LOOP BEGINNING AT MAINA3\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 18\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                               ;SUBROUTINE TO INITIALIZE THE INPUT FILE\r
+\r
+       000426' 200040  004017' ININIT: MOVE T1,SVJBF1  ;SVJBF1=END OF OUTPUT BUFFERS\r
+\r
+       000427' 202040  000246*         MOVEM T1,JOBFF  ;COMPARE OMODE CODE\r
+       000430' 201000  003742'         MOVEI 0,IBF\r
+       000431' 202000  004640'         MOVEM 0,DEVICE+1\r
+       000432' 050140  004636'         OPEN IN,ININI1\r
+       000433' 254000  001770'         JRST ERR1A      ;NOT AVAILABLE ERROR\r
+       000434' 064140  000001          INBUF IN,1      ;TRY ONE INPUT BUFFER FOR SIZE\r
+       000435' 250040  000427*         EXCH T1,JOBFF   ;HOW MANY INBUFFERS WILL FIT?\r
+       000436' 274040  004017'         SUB T1,SVJBF1\r
+       000437' 550000  000262*         HRRZ 0,JOBREL\r
+       000440' 274000  000435*         SUB 0,JOBFF     ;JOBREL-SVJBF1=TOTAL SPACE LEFT\r
+       000441' 232000  000001          IDIVM 0,T1\r
+       000442' 201340  000426'         MOVEI T4,ININIT ;RETURN FROM MORCOR IS ININIT\r
+       000443' 305040  000001          CAIGE T1,1      ;1 OR MORE THAN 1 FITS?\r
+       000444' 254000  000262'         JRST MORCOR     ;NO, GET MORE CORE\r
+       000445' 064141  000000          INBUF IN,(T1)   ;SET UP AS MANY BUFFS AS FIT\r
+       000446' 200000  003743'         MOVE 0,IBF+1    ;SAVE ORIGINAL MODE\r
+       000447' 202000  003740'         MOVEM 0,SVIBF\r
+       000450' 263240  000000          POPJ P,\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 19\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                               ;THIS ROUTINE GETS AN INPUT UNIT DESCRIPTOR AND, FOR\r
+                               ;ADVANCE FILE AND BSPF ON MTA, ENSURES THE VALUE 1 IF NO\r
+                               ;NUMBER WAS GIVEN.\r
+\r
+       000451' 402000  004133' DESCRP: SETZM AUX       ;WILL GET ANY MTA REQ. GOING TO AUXFLG.\r
+       000452' 622540  000002          TRZE    AUXFLG,SYSFLG   ;IS THIS DEVICE SYS.?\r
+       000453' 660540  000004          TRO     AUXFLG,SYSLST   ;YES,SET SYS AS LAST DEVICE\r
+       000454' 402000  004136'         SETZM AB        ;MTA VALUE SWITCHES\r
+       000455' 402000  004042'         SETZM PR        ;PROTECTION\r
+       000456' 402000  004043'         SETZM PP        ;PROJ-PROG NUMBER\r
+                               ;********************************************************************\r
+       000457' 260240  000557'         PUSHJ P,NAME    ;GO SCAN INPUT SIDE OF COMMAND STRING\r
+       000460' 200040  004042'         MOVE T1,PR      ;PROTECTION\r
+       000461' 512040  004042'         HLLZM T1,PR     ;IGNORE PR FLAG IN RHS FOR INPUT\r
+       000462' 620540  261500          TRZ AUXFLG,DTAIN+DSKIN+PPTIN+MTAIN+CDRIN+TTYIN\r
+       000463' 260240  002132'         PUSHJ P,CHECK1  ;CHECK UNIT, AND FOR _\r
+\r
+                               IFN FTDSK,<TRNN AUXFLG,DSKIN    ;DSK INPUT?\r
+                                       JRST DESCR1     ;NO\r
+                                       TRNE    AUXFLG,SYSFLG   ;IS THIS DEVICE SYS?\r
+                                       JRST DESCR1     ;YES\r
+                                       TRNN    AUXFLG,SYSLST   ;WAS LAST DEVICE?\r
+                                       JRST DESCR1     ;NO\r
+                                       MOVE T2,FNPPNS  ;YES, SAVE LAST [P,P]\r
+                                       SKIPE PP        ;[P,P] ZERO?\r
+                                       JRST DESCR1\r
+                                       MOVEM T2,PP     ;YES, MAKE OLD [P,P] CURRENT [P,P]\r
+                                       MOVEM T2,FNPPN  ;RESERVE [P,P]>\r
+       000464' 332000  004135' DESCR1: SKIPE XNAME     ;NO OVERSHOOT ALLOWED\r
+       000465' 254000  002040'         JRST ERR6A\r
+\r
+       000466' 554100  004136' ABCHK:  HLRZ T2,AB      ;NO RECS/FILES TO BACKSPACE\r
+       000467' 326100  000471'         JUMPN T2,.+2    ;IF 0\r
+       000470' 201100  000001          MOVEI T2,1      ;GUARANTEE ONE\r
+       000471' 506100  004136'         HRLM T2,AB      ;SET AB LH\r
+\r
+       000472' 550100  004136'         HRRZ T2,AB      ;NO RECS/FILES TO ADV\r
+       000473' 326100  002746'         JUMPN T2,FNSET  ;IF 0\r
+       000474' 350000  004136'         AOS AB          ;GUARANTEE 1\r
+       000475' 254000  002746'         JRST    FNSET   ;FIND OUT DETAILS OF FILENAME\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 20\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+\r
+                               ;IF A NON-STANDARD OUTPUT PROTECTION IS REQUESTED, SAVE FOR RENAME.\r
+\r
+       000476' 200040  004042' PROTK:  MOVE T1,PR\r
+       000477' 606040  000001          TRNN T1,1\r
+       000500' 254000  000504'         JRST PROTK1\r
+       000501' 512040  004033'         HLLZM T1,PROTS\r
+       000502' 512040  004042'         HLLZM T1,PR\r
+       000503' 665540  000002          TLOA AUXFLG,NSPROT\r
+       000504' 403040  004042' PROTK1: SETZB   T1,PR\r
+       000505' 263240  000000          POPJ P,\r
+\r
+                               ;TEST "DEVICE" TO SEE IF DESTINATION DEVICE IS DTA, DSK, PTP, LPT, TTY, MTA\r
+                               ;IF ANY IS TRUE, SET RELEVANT BIT IN AUXFLG.  "0" CONTAINS\r
+                               ;"DEVICE" ON ENTRY.\r
+\r
+       000506' 047000  000004  DEVTST: DEVCHR          ;GET DEVICE CHARACTERISTICS\r
+                               IFN FTDSK,<TLNN 0,DSKBIT        ;IS OUTPUT DEV DSK?\r
+                                       JRST DEVTSU     ;NO\r
+                                       TRO AUXFLG,DSKOUT       ;YES, SET BIT\r
+                                       PUSH    P,DEVICE        ;SAVE DEVICE NAME\r
+                                       POP     P,ADSK          ;PUT NAME IN DSK INIT\r
+                                       POPJ P,\r
+                               DEVTSU:>\r
+       000507' 322000  000525'         JUMPE   0,DEVER2        ;NON-EXISTENT DEVICE\r
+       000510' 607000  000001          TLNN 0,OUTBIT   ;CAN DEV DO OUTPUT?\r
+       000511' 254000  002040'         JRST ERR6A      ;NO\r
+\r
+       000512' 603000  000004          TLNE 0,DTABIT   ;DECTAPE?\r
+       000513' 660540  004000          TRO AUXFLG,DTAOUT       ;YES\r
+\r
+       000514' 603000  000400          TLNE 0,PTPBIT   ;PAPER TAPE PUNCH?\r
+       000515' 660540  400000          TRO AUXFLG,PPTOUT\r
+\r
+       000516' 603000  040000          TLNE 0,LPTBIT   ;LINE PRINTER?\r
+       000517' 660540  000010          TRO AUXFLG,LPTOUT\r
+\r
+       000520' 603000  000010          TLNE 0,TTYBIT   ;TELETYPE?\r
+       000521' 660540  100000          TRO AUXFLG,TTYOUT\r
+\r
+       000522' 603000  000020          TLNE 0,MTABIT   ;MAGTAPE?\r
+       000523' 660540  000200          TRO AUXFLG,MTAOUT\r
+\r
+       000524' 263240  000000          POPJ P,\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 21\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+\r
+                               ;ROUTINE TO CHECK IF DEVICE SYS AND SET [P,P], IF NONE GIVEN\r
+\r
+                               IFN FTDSK,<\r
+                               PSYSP:  CAME    0,[SIXBIT /SYS/];IS DEVICE SYS?\r
+                                       POPJ    P,              ;NO\r
+                                       MOVE    T1,SYSPP        ;GET SYS PP\r
+                                       MOVEM   T1,PP           ;AND SET IT\r
+                                       TRO     AUXFLG,SYSFLG   ;SET FLAG TO INDICATE\r
+                                       POPJ    P,              ;CURRENT INPUT DEVICE IS SYS>\r
+\r
+       000525'                 DEVER1: \r
+       000525' 200040  004637' DEVER2: MOVE    T1,DEVICE\r
+       000526' 202040  004641' DEVER:  MOVEM   T1,DEVERR\r
+       000527' 265040  002155'         ERRPNT  </?Device />\r
+       000530' 376114  573322\r
+       000531' 617124  000000\r
+       000532' 260240  002201'         PUSHJ   P,P6BIT\r
+       000533' 000000  004641'                 DEVERR\r
+       000534' 265040  002166'         ERRPN2  </does not exist!/>\r
+       000535' 623374  571500\r
+       000536' 673376  420312\r
+       000537' 743236  372102\r
+       000540' 000000  000000\r
+                               ;ROUTINE TO INIT PDL POINTER AND TTY\r
+\r
+       000541' 201240  004153' INICN1: MOVEI   P,PDL-1         ;INITIALIZE PUSHDOWN POINTER\r
+       000542' 200000  004016' INICN2: MOVE    0,SVJBFF        ;IS INITIALIZED AT PIP1\r
+       000543' 202000  000440*         MOVEM   0,JOBFF         ;SET JOBFF TO BEGINNING OF BUFFER AREA\r
+       000544' 260240  001410'         PUSHJ   P,INICON        ;INITIALIZE THE TTY\r
+       000545' 064040  000001          INBUF   CON,1           ;ONE INBUFFER\r
+       000546' 065040  000001          OUTBUF  CON,1           ;ONE OUTBUFFER\r
+       000547' 200000  000543*         MOVE    0,JOBFF\r
+       000550' 552000  004015'         HRRZM   0,DTJBFF        ;JOBFF AFTER 2 TTY BUFFERS SET\r
+       000551' 067040  000000          OUTPUT   CON,           ;INITIALIZE BUFFER POINTERS\r
+       000552' 254011  000000          JRST    (T5)\r
+\r
+                               ;ROUTINE TO CLEAR LINE BUFFER\r
+\r
+       000553' 402000  004174' CLRBUF: SETZM   LBUF            ;SUBR. TO CLEAR LINE BUFFER\r
+       000554' 200000  004673'         MOVE    0,[XWD LBUF,LBUF+1]\r
+       000555' 251000  004377'         BLT     0,LBUFE\r
+       000556' 263240  000000          POPJ    P,\r
+\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 22\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                               ;COMMAND SCANNER ROUTINE\r
+\r
+       000557' 606740  001000  NAME:   TRNN    CALFLG,SSWTCH   ;RETURN NULL IF _ OR END-OF-LINE SEEN\r
+       000560' 335000  004134'         SKIPGE  ESWTCH\r
+       000561' 254000  000666'         JRST    NM13            ;\r
+       000562' 620740  000400          TRZ     CALFLG,NSWTCH\r
+       000563' 332040  004135'         SKIPE   T1,XNAME        ;IF COMMAND SCAN OVERSHOOT PICKED UP\r
+                                                               ;DEVICE NAME, USE IT NOW\r
+       000564' 254000  000640'         JRST    NM7\r
+       000565' 620740  000100          TRZ     CALFLG,DEV\r
+                               ;LOOK FOR FILE NAME, EXT\r
+       000566' 402000  004041' NM1:    SETZM   FILEX\r
+       000567' 402000  004040' NM2:    SETZM   FILNAM\r
+       000570' 200040  000672'         MOVE    T1,NM15\r
+                               ;LOOP TO PICK OFF FILENAME, EXT\r
+       000571' 260240  001175' NM3:    PUSHJ   P,GETCOM        ;GO GET 7 BIT ASCII CHAR. FROM COMMAND STRING\r
+       000572' 302000  000052          CAIE    0,"*"           ;TO ALLOW FN.EX = *.*\r
+       000573' 301000  000101          CAIL    0,"A"           ;ALPHABETIC CHARACTER?\r
+       000574' 303000  000132          CAILE   0,"Z"\r
+       000575' 254000  000602'         JRST    NM4A            ;NO\r
+       000576' 275000  000040  NM4:    SUBI    0,40            ;CONVERT TO SIXBIT\r
+       000577' 603040  770000          TLNE    T1,770000       ;6 CHARS. YET?\r
+       000600' 136000  000001          IDPB    0,T1            ;NO\r
+       000601' 254000  000571'         JRST    NM3             ;GET NEXT CHAR.\r
+       000602' 301000  000060  NM4A:   CAIL    0,"0"           ;NUMERIC?\r
+       000603' 303000  000071          CAILE   0,"9"\r
+       000604' 254000  000606'         JRST    NM5             ;NO\r
+       000605' 254000  000576'         JRST    NM4\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 23\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                               ;CHARACTER NOT *,0-9,A-Z\r
+       000606' 307000  000015  NM5:    CAIG    0,CR            ;CARRIAGE RETURN\r
+       000607' 305000  000012          CAIGE   0,LF            ;LINE FEED\r
+       000610' 306000  000033          CAIN    0,ALTMOD        ;ALTMODE\r
+       000611' 254000  000613'         JRST    NM5A            ;YES\r
+       000612' 306000  000032          CAIN    0,CZ            ;END-OF-FILE(CCL)?\r
+       000613' 374000  004134' NM5A:   SOSA    ESWTCH          ;YES, OR EOF\r
+       000614' 306000  000054          CAIN    0,COMMA         ;COMMA\r
+       000615' 254000  000633'         JRST    NM6             ;YES\r
+       000616' 306000  000056          CAIN    0,PERIOD        ;PERIOD\r
+       000617' 254000  000654'         JRST    NM10            ;YES\r
+       000620' 306000  000072          CAIN    0,COLON         ;COLON\r
+       000621' 254000  000646'         JRST    NM9             ;YES\r
+       000622' 306000  000073          CAIN    0,";"           ;IS THE REST A COMMENT?\r
+       000623' 254000  000700'         JRST    NM16            ;YES\r
+       000624' 306000  000003          CAIN    0,"C"-100       ;^C\r
+       000625' 047000  000012          EXIT                    ;IN CASE JACCT ON ???\r
+       000626' 302000  000137          CAIE    0,LA            ;LEFT ARROW\r
+       000627' 254000  000673'         JRST    NM5B            ;NO\r
+       000630' 660740  001000          TRO     CALFLG,SSWTCH   ;SET LEFT ARROW SWITCH\r
+       000631' 602740  000100          TRNE    CALFLG,DEV      ;HAS A DEVICE BEEN SEEN?\r
+       000632' 660740  000200          TRO     CALFLG,DVSWTH   ;YES-NEEDED FOR /Z/,/D\r
+\r
+       000633' 336040  004041' NM6:    SKIPN   T1,FILEX        ;COMMA ROUTINE - FIGURE OUT WHAT WE HAVE\r
+       000634' 254000  000661'         JRST    NM11            ;NO FILE NAME TEMPORARILY IN FILEX\r
+       000635' 250040  004040'         EXCH    T1,FILNAM       ;PUT THE FILE NAME WHERE IT BELONGS\r
+       000636' 512040  004041'         HLLZM   T1,FILEX        ;PUT THE EXTENSION WHERE IT BELONGS\r
+       000637' 263240  000000          POPJ    P,\r
+\r
+       000640' 402000  004135' NM7:    SETZM   XNAME           ;USE XNAME ONLY ONCE\r
+       000641' 306040  000001          CAIN    T1,1            ;1 FLAGS A NULL OVERSHOOT\r
+       000642' 254000  000666'         JRST    NM13            ;RETURN NULL NAME\r
+       000643' 202040  004637' NM8:    MOVEM   T1,DEVICE       ;NEW DEVICE\r
+       000644' 660740  000100          TRO     CALFLG,DEV\r
+       000645' 254000  000566'         JRST    NM1             ;LOOK FOR A FILE NAME AND EXTENSION\r
+\r
+       000646' 606740  000100  NM9:    TRNN    CALFLG,DEV      ;COLON ROUTINE - IS DEVICE NAME IN YET?\r
+       000647' 254000  000664'         JRST    NM12            ;NO\r
+       000650' 336040  004040'         SKIPN   T1,FILNAM       ;SCAN OVERSHOOT - NULL OVERSHOOT?\r
+       000651' 201040  000001          MOVEI   T1,1            ;YES - FLAG NULL OVERSHOOT WITH A 1\r
+       000652' 202040  004135'         MOVEM   T1,XNAME        ;XNAME = OVERSHOOT NAME\r
+       000653' 254000  000670'         JRST    NM14\r
+       000654' 332000  004041' NM10:   SKIPE   FILEX\r
+       000655' 254000  002040'         JRST    ERR6\r
+       000656' 200000  004040'         MOVE    0,FILNAM        ;PERIOD ROUTINE - SAVE FILE NAME\r
+       000657' 202000  004041'         MOVEM   0,FILEX         ;TEMPORARILY IN FILEX\r
+       000660' 254000  000567'         JRST    NM2             ;LOOK FOR EXTENSION\r
+       000661' 336000  004040' NM11:   SKIPN   FILNAM          ;WAS A FILE NAME SPECIFIED?\r
+       000662' 602740  000100          TRNE    CALFLG,DEV      ;WAS ANYTHING SPECIFIED?\r
+       000663' 263240  000000          POPJ    P,              ;YES\r
+       000664' 332040  004040' NM12:   SKIPE   T1,FILNAM       ;NULL NAME SPECIFIED?\r
+       000665' 254000  000643'         JRST    NM8             ;NO - SO REMEMBER AND LOOK FOR FILE NAME\r
+\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 23-1\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+       000666' 660740  000400  NM13:   TRO     CALFLG,NSWTCH   ;RETURN A NULL NAME\r
+       000667' 402000  004041'         SETZM   FILEX\r
+       000670' 402000  004040' NM14:   SETZM   FILNAM\r
+       000671' 263240  000000          POPJ    P,\r
+\r
+       000672' 440600  004040' NM15:   POINT   6,FILNAM\r
+       000673' 307000  000137  NM5B:   CAIG    0,LA            ;ALLOW ANY SIXBIT CHAR NOT CS DELIMITER\r
+       000674' 307000  000040          CAIG    0,SPACE         ;SPACES IGNORED\r
+       000675' 254000  000571'         JRST    NM3             ;IGNORE NOT LEGAL SIXBIT\r
+       000676' 254000  000576'         JRST    NM4             ;ACCEPT\r
+\r
+       000677' 260240  001404'         PUSHJ   P,GETBUF        ;GET NEXT ASCII CHAR.\r
+       000700' 303000  000012  NM16:   CAILE   0,LF\r
+       000701' 307000  000015          CAIG    0,CR            ;IF LF,FF,VT,OR CR\r
+       000702' 254000  000613'         JRST    NM5A            ;RETURN\r
+       000703' 302000  000033          CAIE    0,ALTMOD        ;SAME IF ALTMOD\r
+       000704' 306000  000032          CAIN    0,CZ            ;OR ^Z\r
+       000705' 254000  000613'         JRST    NM5A\r
+       000706' 254000  000677'         JRST    NM16-1          ;GET NEXT CHARACTER\r
+\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 24\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                               ;ROUTINE TO OUTPUT ONE LINE FROM LBUF\r
+\r
+       000707' 602300  000001  OUTLBF: TRNE FLAG,LINE\r
+       000710' 254000  000717'         JRST OUTLBA     ;OUTPUT LINE-BY-LINE\r
+       000711' 200100  003723' OUTCH1: MOVE T2,OPTRA   ;OUTPUT CHARACTER-BY-CHARACTER\r
+       000712' 316100  004020' OUTLB1: CAMN T2,OPTR    ;ARE ALL CHARACTERS OUT?\r
+       000713' 263240  000000          POPJ P,         ;YES\r
+       000714' 134200  000002          ILDB CHR,T2     ;NO\r
+       000715' 260240  000756'         PUSHJ P,PUT     ;GO OUTPUT CHARACTER\r
+       000716' 254000  000712'         JRST OUTLB1\r
+       000717' 603300  000040  OUTLBA: TLNE FLAG,CHKFLG;PAREN COUNTING?\r
+       000720' 254000  003305'         JRST OUTCHK     ;YES, SO DO IT\r
+       000721' 602540  100010          TRNE AUXFLG,TTYOUT+LPTOUT\r
+       000722' 254000  000711'         JRST OUTCH1     ;IF OUTPUT TO TTY OR LPT DO CHR BY CHR  \r
+       000723' 201040  000004          MOVEI T1,4      ;CLEAR UNUSED PORTION OF LAST WORD USED IN LBUF\r
+       000724' 201100  000000          MOVEI T2,0\r
+       000725' 200140  004020'         MOVE T3,OPTR\r
+       000726' 136100  000003          IDPB T2,T3\r
+       000727' 367040  000726'         SOJG T1,.-1\r
+       000730' 201100  000005          MOVEI T2,5\r
+       000731' 550040  004020'         HRRZ T1,OPTR    ;COMPUTE NUMBER OF WORDS FILLED\r
+       000732' 275040  004173'         SUBI T1,LBUF-1\r
+       000733' 322040  000754'         JUMPE T1,OUTLB3 ;DO NOTHING IF BUFFER EMPTY\r
+       000734' 222040  000002          IMULM T1,T2     ;COMPUTE CHARACTER COUNT=5 TIMES WORD CT\r
+                               ;THIS IS WHERE OLD FORTRAN MODE WAS TESTED.\r
+       000735' 317100  003747'         CAMG T2,OBF+2   ;WILL LINE FIT IN THE OUTBUFFER?\r
+       000736' 254000  000745'         JRST OUTLB2     ;YES\r
+       000737' 260240  000762'         PUSHJ P,OUTP    ;NO, SO DUMP BUFFER AND CHECK ERROR BITS\r
+       000740' 201500  000001          MOVEI T6 ,1\r
+       000741' 612500  004174'         TDNE T6,LBUF    ;SEQUENCED?   \r
+       000742' 606540  004000          TRNN AUXFLG,DTAOUT      ;YES, ON DTA?\r
+       000743' 254000  000745'         SKIP    1       ;NO\r
+       000744' 271100  000240          ADDI T2,40*5    ;LEAVE EDITING ROOM\r
+       000745' 213000  000002  OUTLB2: MOVNS T2\r
+       000746' 272100  003747'         ADDM T2,OBF+2   ;UPDATE OUTBUFFER CHARACTER COUNT\r
+       000747' 505100  004174'         HRLI T2,LBUF\r
+       000750' 540100  003746'         HRR T2,OBF+1\r
+       000751' 340100  000000          AOJ T2,\r
+       000752' 273040  003746'         ADDB T1,OBF+1   ;UPDATE OUTBUFFER BYTE POINTER\r
+       000753' 251101  000000          BLT T2,(T1)     ;MOVE DATA TO OUTBUFFER\r
+       000754' 263240  000000  OUTLB3: POPJ P,\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 25\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                               ;ROUTINE TO PUT ONE CHAR INTO OUT BUFFER\r
+\r
+       000755' 201200  000011  TABOUT: MOVEI   CHR,TAB ;OUTPUT A TAB\r
+       000756' 377000  003747' PUT:    SOSG OBF+2      ;SUBR. TO OUTPUT ONE CHARACTER IN AC CHR\r
+       000757' 260240  000762'         PUSHJ P,OUTP    ;IF BUFFER FULL, DUMP AND CHECK ERR BITS\r
+       000760' 136200  003746'         IDPB CHR,OBF+1  ;PUT CHARACTER IN BUFFER\r
+       000761' 263240  000000          POPJ P,\r
+\r
+                               ;ROUTINE TO DUMP OUT BUFFER WHEN FULL\r
+\r
+       000762' 057100  000000  OUTP:   OUT OUT,        ;SUBR. TO DUMP OUTBUFFER AND CHECK ERR BITS\r
+       000763' 254000  001710'         JRST    CPOPJZ  ;NO ERRERS,BUT CLEAR IOS JUST IN CASE\r
+       000764' 062100  000010  OUTP1:  GETSTS OUT,IOS  ;HERE FOR BIT CHECKING ONLY\r
+       000765' 260240  000770'         PUSHJ P,OUTP4\r
+       000766' 060110  000000          SETSTS OUT,(IOS);ERRORS WERE DETECTED\r
+       000767' 263240  000000          POPJ P,         ;NO ERRORS\r
+\r
+       000770' 606540  000200  OUTP4:  TRNN AUXFLG,MTAOUT\r
+       000771' 254000  000774'         JRST .+3\r
+       000772' 602400  002000  OUTP3:  TRNE IOS,EOTBIT ;EOT?\r
+       000773' 254000  000776'         JRST .+3        ;YES\r
+       000774' 606400  740000          TRNN IOS,740000 ;ANY ERROR BITS ON?\r
+       000775' 254000  001707'         JRST CPOPJ1     ;NO\r
+       000776' 260240  001135'         PUSHJ P,COMERR  ;YES\r
+\r
+       000777' 265440  000542'         JSP T5,INICN2   ;INIT TTY\r
+       001000' 260240  001652'         PUSHJ P,QUEST\r
+       001001' 265040  002166'         ERRPN2  </Output device />\r
+       001002' 477536  470352\r
+       001003' 721014  462754\r
+       001004' 647074  520000\r
+       001005' 260240  002201'         PUSHJ   P,P6BIT\r
+       001006' 000000  004634'                 ODEV\r
+       001007' 336000  004044'         SKIPN   DTON            ;ONLY IF THERE IS A FILE NAME\r
+       001010' 254000  001014'         JRST    .+4             ;DON'T PRINT IF NOT\r
+       001011' 265040  002166'         ERRPN2  </: file />\r
+       001012' 351014  664730\r
+       001013' 625000  000000\r
+       001014' 201140  004044'         MOVEI T3,DTON   ;OUTPUT FILE NAME LOC\r
+       001015' 260240  001146'         PUSHJ P,FN.EX   ;PRINT FILE NAME EXT\r
+       001016' 200100  000013          MOVE T2,AUXFLG\r
+       001017' 405100  014200          ANDI T2,MTAOUT+DSKOUT+DTAOUT\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 26\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+\r
+       001020' 201040  001074' IOERR:  MOVEI T1,TXTC   ;PHYSICAL END OF TAPE\r
+       001021' 602400  002000          TRNE IOS,EOTBIT\r
+       001022' 254000  002166'         JRST PTEXT2     ;YES\r
+\r
+       001023' 201040  001055'         MOVEI T1,TXTD2  ;7-9 PUNCH MISSING\r
+       001024' 606100  000100          TRNN T2,CDRIN\r
+\r
+                               IFN FTDSK,<\r
+                                       MOVEI   T1,TXTD3\r
+                                       TRNN    T2,DSKIN!DSKOUT>\r
+\r
+       001025' 201040  001042'         MOVEI T1,TXTD   ;WRITE LOCK ERROR\r
+       001026' 606100  074600          TRNN T2,DSKIN+DSKOUT+DTAIN+DTAOUT+MTAIN+MTAOUT\r
+\r
+       001027' 201040  001047'         MOVEI T1,TXTD1\r
+       001030' 602400  400000          TRNE IOS,WRTLOK\r
+       001031' 254000  002166'         JRST PTEXT2\r
+\r
+       001032' 201040  001062'         MOVEI T1,TXTA   ;DEVICE ERROR\r
+       001033' 602400  200000          TRNE IOS,200000\r
+       001034' 254000  002166'         JRST PTEXT2\r
+\r
+       001035' 201040  001066'         MOVEI T1,TXTB   ;CHECKSUM/PARITY ERROR\r
+       001036' 602400  100000          TRNE IOS,100000\r
+       001037' 254000  002166'         JRST PTEXT2\r
+\r
+                               IFN FTDSK,<\r
+                                       HRRZ    T1,TABLE+14\r
+                                       TRNN    T2,DSKOUT       ;QUOTA EXCEDED>\r
+\r
+       001040' 201040  001100'         MOVEI T1,TXTC1  ;BLOCK TOO LARGE\r
+       001041' 254000  002166'         JRST PTEXT2\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 27\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                               ;DEVICE ERROR COMMENTS\r
+\r
+       001042' 737455  172312  TXTD:   ASCIZ /write (lock) error/\r
+       001043' 201215  467706\r
+       001044' 655224  062744\r
+       001045' 713376  200000\r
+       001046' 254000  001107'         JRST IOERRN     ;NO RECOVERY\r
+\r
+       001047' 613235  660744  TXTD1:  ASCIZ /binary data incomplete/\r
+       001050' 745014  460750\r
+       001051' 605015  167306\r
+       001052' 677336  066312\r
+       001053' 723120  000000\r
+       001054' 254000  001114'         JRST IOERRG\r
+\r
+       001055' 335327  120340  TXTD2:  ASCIZ /7-9 punch missing/\r
+       001056' 727354  364100\r
+       001057' 667236  371722\r
+       001060' 673160  000000\r
+       001061' 254000  001114'         JRST IOERRG\r
+\r
+       001062' 623136  664706  TXTA:   ASCIZ /device error/\r
+       001063' 625014  571344\r
+       001064' 677440  000000\r
+       001065' 254000  001114'         JRST IOERRG\r
+\r
+       001066' 617214  561726  TXTB:   ASCIZ /checksum or parity error/\r
+       001067' 717535  520336\r
+       001070' 711016  060744\r
+       001071' 647517  120312\r
+       001072' 713455  771000\r
+       001073' 254000  001114'         JRST IOERRG\r
+\r
+       001074' 703217  171722  TXTC:   ASCIZ /physical eot/\r
+       001075' 617035  420312\r
+       001076' 677500  000000\r
+       001077' 254000  001114'         JRST IOERRG\r
+\r
+       001100' 613315  761726  TXTC1:  ASCIZ /block or block number too large/\r
+       001101' 203376  220304\r
+       001102' 663374  365500\r
+       001103' 673535  561312\r
+       001104' 711016  467736\r
+       001105' 203314  171316\r
+       001106' 624000  000000\r
+                                       ;FALLS THROUGH TO IOERRN\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 28\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+\r
+       001107' 071200  000000  IOERRN: RELEAS TAPE,    ;NO RECOVERY ERRORS EXIT HERE\r
+       001110' 071240  000000          RELEAS DIR,\r
+       001111' 071100  000000          RELEAS OUT,\r
+       001112' 071140  000000          RELEAS IN,\r
+                               IFN DISK30,<\r
+                                       RELEAS BLKIN,>\r
+       001113' 254000  000013'         JRST PIP2       ;GET NEXT COMMAND\r
+\r
+                               IFN FTDSK,<\r
+                               TXTD3:  ASCIZ   /monitor detected software error/>\r
+\r
+                               ;TEST IF /G FLAG(IGNORE ERRORS) SET\r
+\r
+       001114' 607300  000200  IOERRG: TLNN FLAG,GFLG          ;PRINTED CURRENT MESSAGE\r
+       001115' 254000  001107'         JRST IOERRN             ;NO RECOVERY\r
+\r
+                                       ERRPN2</\r
+       001116' 265040  002166' />                              ;PRINT CR, LF DON'T MOVE>\r
+       001117' 064240  000000\r
+\r
+       001120' 071040  000000          RELEAS CON,\r
+       001121' 602540  100000          TRNE AUXFLG,TTYOUT      ;TTY OUTPUT DEVICE?\r
+       001122' 260240  000223'         PUSHJ P,OMODE           ;YES, INIT OUTPUT DEVICE\r
+       001123' 602540  001000          TRNE AUXFLG,TTYIN       ;REINIT TTYIN,TTYOUT\r
+       001124' 260240  000426'         PUSHJ P,ININIT\r
+       001125' 620400  740000          TRZ IOS,740000          ;CLEAR FILE STATUS, I/O ERRORS\r
+       001126' 602100  000600          TRNE T2,MTAIN+MTAOUT\r
+       001127' 620400  002000          TRZ IOS,EOTBIT          ;CLEAR PHYSICAL EOT I/O ERROR\r
+       001130' 204000  004674'         MOVS 0,[XWD 1,SAVAC]\r
+       001131' 251000  000003          BLT 0,3\r
+       001132' 200440  003764'         MOVE T5,SAVAC+3\r
+       001133' 200500  003765'         MOVE T6,SAVAC+4\r
+       001134' 263240  000000          POPJ P,\r
+\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 29\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+       001135' 200000  004674' COMERR: MOVE 0,[XWD 1,SAVAC]    ;SAVE ACS T1,T2,T3,T5,T6\r
+       001136' 251000  003763'         BLT 0,SAVAC+2\r
+       001137' 202440  003764'         MOVEM T5,SAVAC+3\r
+       001140' 202500  003765'         MOVEM T6,SAVAC+4\r
+       001141' 602540  100000          TRNE AUXFLG,TTYOUT      ;RELEASE ANY TTYIO\r
+       001142' 071100  000000          RELEAS OUT,\r
+       001143' 602540  001000          TRNE AUXFLG,TTYIN\r
+       001144' 071140  000000          RELEAS IN,\r
+       001145' 263240  000000          POPJ P,\r
+                               ;PRINT FILE NAME AND EXTENSION FROM (T3), 1(T3).\r
+\r
+       001146' 200043  000000  FN.EX:  MOVE T1,(T3)    ;T1=FILENAME\r
+       001147' 554503  000001          HLRZ T6,1(T3)   ;T6=FILE EXT\r
+       001150' 306500  654644          CAIN T6,(SIXBIT /UFD/)\r
+       001151' 400040  000000          SETZ T1,        ;UFD FILES ONLY ARE ASSUMED TO HAVE FILENAME\r
+       001152' 202040  004642'         MOVEM T1,DERR2  ;OF NUMERIC FORM (#,# P-P NUMBER).\r
+       001153' 322500  001166'         JUMPE T6,DERR2A ;FILE EXT=0?\r
+       001154' 302500  654644          CAIE T6,(SIXBIT /UFD/)\r
+       001155' 254000  001165'         JRST DERR2B     ;NO\r
+\r
+       001156' 554643  000000          HLRZ DOUT,(T3)  ;YES, GET PROJ. NO.\r
+       001157' 201100  002175'         MOVEI T2,PUTCON ;PRINT PROJ-PROG. NO.\r
+       001160' 260240  003235'         PUSHJ P,OUTDC1  ;CONVERT TO ASCII\r
+\r
+       001161' 201200  000054          MOVEI CHR,COMMA\r
+       001162' 260240  002175'         PUSHJ P,PUTCON\r
+\r
+       001163' 550643  000000          HRRZ DOUT,(T3)  ;GET PROG. NO.\r
+       001164' 260240  003235'         PUSHJ P,OUTDC1  ;CONVERT TO ASCII\r
+\r
+       001165' 661500  000016  DERR2B: TLO     T6,"."-40       ;PUT SIXBIT PERIOD\r
+       001166' 202500  004643' DERR2A: MOVEM   T6,DERR2+1      ;INTO EXTENSION\r
+       001167' 260240  002201'         PUSHJ   P,P6BIT\r
+       001170' 000000  004642'                 DERR2\r
+       001171' 260240  002201'         PUSHJ   P,P6BIT\r
+       001172' 000000  004643'                 DERR2+1\r
+       001173' 201200  000040          MOVEI   CHR," "\r
+       001174' 254000  002175'         JRST    PUTCON\r
+\r
+\r
+\r
+\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 30\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                               ;THIS ROUTINE GETS A 7 BIT ASCII CHARACTER FROM THE COMMAND STRING\r
+                               ;AND RETURNS IT TO THE COMMAND SCANNER ROUTINE (NAME) IN AC0\r
+\r
+       001175' 260240  001404' GETCOM: PUSHJ P,GETBUF\r
+       001176' 306000  000057          CAIN 0,"/"      ;SINGLE CHARACTER SWITCH\r
+       001177' 254000  001300'         JRST GETT6\r
+       001200' 306000  000050          CAIN 0,"("      ;LOOK FOR (MULTI-CHAR.) SWITCH\r
+       001201' 254000  001252'         JRST GETT3\r
+       001202' 306000  000074          CAIN 0,"<"      ;GO LOOK FOR PROTECTION\r
+       001203' 254000  001223'         JRST GETT9\r
+       001204' 302000  000133          CAIE 0,"["\r
+       001205' 263240  000000          POPJ P,\r
+\r
+       001206' 260240  001236' GETT10: PUSHJ P,GETDEC  ;LOOK FOR PROJECT-PROGRAMMER NUMBER\r
+       001207' 303600  777777          CAILE T7,-1     ;GREATER THAN HALF WORD?\r
+       001210' 254000  002107'         JRST ERR2A      ;YES, ERROR\r
+       001211' 302000  000054          CAIE 0,","      ;SEPARATOR?\r
+       001212' 254000  001232'         JRST GETUPJ     ;OR TERMINATOR (NON-NUMERIC)\r
+       001213' 516600  004043'         HRLZM T7,PP\r
+       001214' 260240  001236'         PUSHJ   P,GETDEC\r
+       001215' 303600  777777          CAILE   T7,-1\r
+       001216' 254000  002107'         JRST    ERR2A\r
+\r
+       001217' 542600  004043' GETT11: HRRM T7,PP\r
+       001220' 306000  000135          CAIN 0,"]"      ;FORCE CORRECT TERMINATOR\r
+       001221' 254000  001175'         JRST GETCOM\r
+       001222' 254000  002076'         JRST ERR2\r
+\r
+       001223' 260240  001235' GETT9:  PUSHJ P,GETOCT\r
+       001224' 306000  000076          CAIN 0,">"      ;TERMINATE ON RIGHT BRKT ONLY\r
+       001225' 303600  000777          CAILE T7,777    ;PR. IN RANGE?\r
+       001226' 254000  002107'         JRST ERR2A\r
+       001227' 241600  777767          ROT T7,-11\r
+       001230' 522600  004042'         HLLOM T7,PR     ;RHS=1'S MEANS <> SEEN (PR MAY BE 0)\r
+       001231' 254000  001175'         JRST GETCOM\r
+\r
+       001232' 200440  003734' GETUPJ: MOVE    T5,UPROJ\r
+       001233' 516440  004043'         HRLZM   T5,PP\r
+       001234' 254000  001217'         JRST    GETT11\r
+       001235' 334440  004675' GETOCT: SKIPA   T5,[EXP 10]\r
+       001236' 201440  000012  GETDEC: MOVEI   T5,12\r
+       001237' 201600  000000  GETNUM: MOVEI T7,0      ;TO PICK UP P-P NUMBER\r
+       001240' 260240  001404' GETN1:  PUSHJ P,GETBUF  ;AND PROTECTION\r
+       001241' 306000  000040          CAIN 0," "      ;IGNORE SPACES\r
+       001242' 254000  001240'         JRST GETN1\r
+       001243' 301000  000060          CAIL 0,"0"\r
+       001244' 301011  000060          CAIL 0,"0"(T5)\r
+       001245' 263240  000000          POPJ P,         ;GOT A NON-NUMERIC\r
+       001246' 220600  000011          IMUL    T7,T5   ; MULTIPLY BY RADIX\r
+       001247' 275000  000060          SUBI    0,"0"\r
+       001250' 270600  000000          ADD     T7,0    ; ADD DIGIT\r
+       001251' 254000  001240'         JRST GETN1\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 31\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+       001252' 260240  001320' GETT3:  PUSHJ P,GETT5   ;PROCESS SWITCH CHARACTER\r
+       001253' 306000  000051          CAIN 0,")"      ;CLOSING PAREN?\r
+       001254' 254000  001175'         JRST GETCOM     ;YES\r
+       001255' 306000  000115          CAIN 0,"M"      ;MTA FLAG?\r
+       001256' 660300  200000          TRO FLAG, MTFLG ;SET MTA, LOOK FOR MULTI CHAR. SWITCH\r
+       001257' 302000  000043          CAIE 0,"#"      ;MTA#\r
+       001260' 254000  001252'         JRST GETT3      ;NO\r
+       001261' 606300  200000          TRNN FLAG,MTFLG ;ONLY LOOK AFTER # IF MTFLG IS ON.\r
+       001262' 254000  002040'         JRST ERR6A      ;I.E. IF MT SWITCH IS IN PROGRESS.\r
+       001263' 260240  001305'         PUSHJ P,GETNUD  ;GET A NUMBER\r
+       001264' 302000  000104          CAIE 0,"D"      ;TERMINATED BY D?\r
+       001265' 306000  000101          CAIN 0,"A"      ;TERMINATED BY A?\r
+       001266' 254000  001276'         JRST GETT3A     ;YES, MARK AB UPPER\r
+       001267' 302000  000120          CAIE 0,"P"      ;ONLY A,D,P AND B CAN BE\r
+       001270' 306000  000102          CAIN 0,"B"      ;PRECEDED BY #.\r
+       001271' 254000  001273'         SKIP    1\r
+       001272' 254000  002040'         JRST ERR6A\r
+       001273' 542600  004136'         HRRM T7,AB      ;NO. FILES/RECS TO ADVANCE\r
+                                                       ;GOES IN AB (RH)\r
+       001274' 260240  001321' GETT3B: PUSHJ P,GETT5A\r
+       001275' 254000  001252'         JRST GETT3\r
+\r
+       001276' 506600  004136' GETT3A: HRLM T7,AB      ;NO. FILES/RECS TO BACK SPACE\r
+       001277' 254000  001274'         JRST GETT3B     ;GOES IN AB (LH)\r
+\r
+       001300' 260240  001320' GETT6:  PUSHJ P,GETT5   ;PROCESS ONE SWITCH CHAR\r
+       001301' 302000  000115          CAIE 0,"M"\r
+       001302' 306000  000051          CAIN 0,")"      ;THESE ARE ILLEGAL 1-SWITCH CHARS.\r
+       001303' 254000  002040'         JRST ERR6A\r
+       001304' 254000  001175'         JRST GETCOM\r
+\r
+       001305' 201600  000000  GETNUD: MOVEI T7,0      ;GET A DECIMAL NUMBER\r
+       001306' 260240  001404' GETN2:  PUSHJ P,GETBUF  ;GET CHAR FROM COMMAND STRING\r
+       001307' 306000  000040          CAIN 0,SPACE    ;SPACE?\r
+       001310' 254000  001306'         JRST GETN2      ;YES, IGNORE\r
+       001311' 301000  000060          CAIL 0,"0"      ;NUMBER?\r
+       001312' 303000  000071          CAILE 0,"9"\r
+       001313' 263240  000000          POPJ P,         ;NO\r
+       001314' 221600  000012          IMULI T7,^D10   ;T7*10\r
+       001315' 405000  000017          ANDI 0,17       ;ADD ON LAST DIGIT\r
+       001316' 270600  000000          ADD T7,0        ;+ LOW 4 BITS\r
+       001317' 254000  001306'         JRST GETN2\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 32\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+\r
+                               ;GET NEXT COMMAND STRING CHAR(SWITCH),CHECK WITH TABLE,SET FLAGS\r
+\r
+       001320' 260240  001404' GETT5:  PUSHJ P,GETBUF  ;GET CHAR FROM COMMAND STRING\r
+       001321' 200100  004676' GETT5A: MOVE T2,[XWD 350700,DISPTB]     ;SET DISPTB NEXT SEARCH\r
+       001322' 201500  004056'         MOVEI T6,MTAREQ ;SET MTAREQ NEXT SEARCH\r
+\r
+       001323' 606300  200000          TRNN FLAG,MTFLG ;SET UP TABLE TO SEARCH AND FLAG TO SET.\r
+       001324' 541100  001436'         HRRI T2,DISPTA  ;PUT IN BYTE POINTER, NOT MTA REQUEST\r
+\r
+                               ;SET TO LOOK AT NON-MTA LETTERS FIRST\r
+\r
+       001325' 606300  200000          TRNN FLAG,MTFLG ;IF MTFLG SET, START AT DISPTB AND STORE RESULT IN\r
+       001326' 201500  000013          MOVEI T6,AUXFLG ;MTAREQ, ELSE START AT DISPTA AND STORE RESULT IN\r
+                                                       ;AUXFLG OR FLAG\r
+                               ;GET FIRST CHAR DISPTA OR DISPTB, LOOK FOR MATCH, SET SWITCH FLAGS.\r
+\r
+       001327' 135140  000002  GETT7:  LDB T3,T2       ;COMPARE WITH LEFT 7 BITS OF\r
+       001330' 326140  001335'         JUMPN T3,GETT8  ;TABLE ENTRIES\r
+       001331' 620300  200000          TRZ FLAG, MTFLG ;SEARCHED TABLE 1 (DISPTB) DROP MTA FLAG\r
+       001332' 201500  000013          MOVEI T6,AUXFLG ;SET AUXFLG NEXT TABLE SEARCH\r
+       001333' 603540  000020          TLNE AUXFLG,NOMORE      ;AFTER FIRST INPUT DEVICE ONLY ACCEPT MTA FLAGS\r
+       001334' 263240  000000          POPJ P,\r
+\r
+       001335' 306140  000001  GETT8:  CAIN T3,1       ;END OF DISPTA 1ST HALF?\r
+       001336' 201500  000006          MOVEI T6,FLAG   ;YES, SEARCH DISPTA 2ND HALF FROM NOW ON\r
+       001337' 306140  000002          CAIN T3,2       ;END OF DISPTA 2ND HALF?\r
+       001340' 254000  002040'         JRST ERR6A      ;SEARCHED TABLE 3, ERROR EXIT\r
+       001341' 312140  000000          CAME T3,0       ;MATCHING CHARACTER?\r
+       001342' 344100  001327'         AOJA T2,GETT7   ;NO, GET NEXT SWITCH IN TABLE.\r
+\r
+       001343' 200442  000000          MOVE T5,(T2)    ;YES, SET FLAG OR AUXFLG OR MTAREQ\r
+       001344' 436452  000000          ORM T5,(T6)     ;FLAG OR AUXFLG\r
+       001345' 602300  200000          TRNE FLAG,MTFLG\r
+       001346' 436440  004133'         ORM T5,AUX      ;MTA REQUESTS SAVED IN AUX\r
+                               IFE RIMSW,<\r
+       001347' 603300  000002          TLNE FLAG,RIMFLG\r
+       001350' 254000  004652'         JRST RIMTB      ;NO RIM IF RIMSW=0\r
+                                       >               ;PRINT ERROR MESSAGE\r
+       001351' 263240  000000          POPJ P,         ;EXIT ON MATCHING CHAR\r
+\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 33\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+\r
+                               ;ROUTINE TO GET ONE TTY OR CCL COMMAND STRING CHAR INTO AC 0\r
+\r
+       001352'                 GETTA:\r
+\r
+       001352' 373000  003755'         SOSLE TFI+2     ;SUBR TO GET ONE TTY CHAR IN AC 0\r
+       001353' 254000  001371'         JRST GETT2      ;BUFFER NOT EMPTY\r
+       001354' 200000  003753'         MOVE 0,TFI      ;BUFFER EMPTY, SAVE\r
+       001355' 200440  003756'         MOVE T5,TFO     ;CURRENT BUFFER LOCS\r
+       001356' 260240  001410'         PUSHJ P,INICON  ;BUFFER EMPTY SO RE-ATTACH TTY\r
+       001357' 562000  003753'         HRROM 0,TFI     ;RESTORE OLD BUFFER LOCS\r
+       001360' 562440  003756'         HRROM T5,TFO    ;USE PREVIOUSLY ASSIGNED I/O BUF. FOR TTY\r
+       001361' 200440  004131'         MOVE T5,COMCNT  ;DONT TYPE CR,LF\r
+       001362' 307440  000105          CAIG T5,^D69    ;FOR SHORT LINE\r
+       001363' 254000  001365'         JRST GETTIN\r
+       001364' 260240  002735'         PUSHJ   P,INFO2 ;TYPE CR,LF\r
+       001365' 066040  000000  GETTIN: INPUT CON,      ;GET THE NEXT LINE\r
+       001366' 200440  003755'         MOVE T5,TFI+2   ;SAVE CHAR COUNT\r
+       001367' 071040  000000          RELEAS CON,     ;LET GO OF TTY FOR USE AS IN-OUT DEVICE\r
+       001370' 202440  003755'         MOVEM T5,TFI+2  ;RESTORE CHAR COUNT LOST DURING RELEASE\r
+       001371' 134000  003754' GETT2:  ILDB 0,TFI+1    ;FETCH CHAR\r
+       001372' 302000  000175  GETT4:  CAIE 0,ALT175   ;OLD ALTMODE?\r
+       001373' 306000  000176          CAIN 0,ALT176\r
+       001374' 201000  000033          MOVEI 0,ALTMOD  ;YES,MAKE NEW ALTMOD\r
+       001375' 322000  001352'         JUMPE   0,GETTA ;IGNORE NULL CHARS\r
+       001376' 301000  000140          CAIL 0,140      ;LOWER CASE?\r
+       001377' 620000  000040          TRZ     0,40    ;YES MAKE UPPER CASE?\r
+       001400' 302000  000021          CAIE    0,XON   ;IGNORE XON,XOFF ONLY FOR\r
+       001401' 306000  000023          CAIN    0,XOFF  ;TTY SERVICE TO SIGNAL TTY\r
+       001402' 254000  001352'         JRST    GETTA   ;PTR READ IN MODE\r
+       001403' 263240  000000          POPJ P,\r
+\r
+                               ;ROUTINE TO GET ONE TTY CHAR FROM COMBUF INTO AC0\r
+\r
+       001404' 375000  004131' GETBUF: SOSGE COMCNT    ;ANY CHARS LEFT?\r
+       001405' 254000  002045'         JRST ERR6B      ;NO, COMMAND ERROR\r
+       001406' 134000  004132'         ILDB 0,COMPTS   ;PICK UP CHAR FROM COMBUF\r
+       001407' 263240  000000          POPJ P,\r
+\r
+                               ;ROUTINE TO INITIALIZE THE TTY, ASCII LINE MODE\r
+\r
+       001410' 041040  000001  INICON: INIT CON,1      ;SUBR TO INITIALIZE THE TTY\r
+       001411' 646471  000000          SIXBIT /TTY/\r
+       001412' 003756' 003753'         XWD TFO,TFI     ;TTY OUT/IN BUFFER HEADERS\r
+       001413' 047000  000012          EXIT            ;IF TTY NOT AVAILABLE,FATAL.JOB DET?\r
+       001414' 263240  000000          POPJ P,\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 34\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                               ;GET 7 BIT ASCII CHARACTER - INPUT FROM CCL COMMAND FILE\r
+\r
+       001415' 476000  004057' GETEN2: SETOM   COMEOF          ;INDICATE END OF FILE\r
+       001416' 201000  000032          MOVEI   0,CZ            ;NEEDED TO TERM CCL CS SCAN\r
+       001417' 263240  000000          POPJ    P,\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 35\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                               ;TABLE OF RECOGNIZED COMMAND LETTERS AND CORRESPONDING FLAG BITS\r
+\r
+                               DEFINE DISP (A,B)\r
+                               <       XWD <"A">*4000,B>\r
+                               ;MAGTAPE SWITCHES AND FLAG BITS. TABLE 1 (MTAREQ)\r
+       001420' 404000  000001  DISPTB: DISP A,MTAFLG\r
+       001421' 410000  000002          DISP B,MTBFLG\r
+       001422' 520000  000004          DISP T,MTTFLG\r
+       001423' 534000  000010          DISP W,MTWFLG\r
+       001424' 340000  000400          DISP 8,MT8FLG\r
+       001425' 324000  001000          DISP 5,MT5FLG\r
+       001426' 310000  002000          DISP 2,MT2FLG\r
+       001427' 424000  004000          DISP E,MTEFLG\r
+       001430' 524000  000040          DISP U,MTUFLG\r
+       001431' 430000  000020          DISP F,MTFFLG\r
+       001432' 420000  000100          DISP D,MTDFLG\r
+       001433' 500000  000200          DISP P,MTPFLG\r
+       001434' 214000  000000          DISP #,0\r
+       001435' 000000  000000          OCT 000000000000\r
+                               ;1ST BYTE 0=END OF DISPTB\r
+                               ;------------------------\r
+                               ;COMMAND STRING LETTERS AND FLAG BITS. TABLE 2 (AUXFLG)\r
+       001436' 504001  000000  DISPTA:                 XWD <"Q">*4000+QFLG,0\r
+       001437' 424040  000000                          XWD <"E">*4000+CDRFLG,0\r
+       001440' 430000  000020          DISP F,FFLG\r
+       001441' 004000  000000          OCT 004000000000\r
+                               ;1ST BYTE 1=END OF DISPTA 1ST HALF\r
+                               ;------------------------\r
+                               ;COMMAND STRING LETTERS AND FLAG BITS. TABLE 3 (FLAG)\r
+       001442' 404000  000001          DISP A,LINE\r
+       001443' 410000  000002          DISP B,BMOD\r
+                               IFN,K,< DISP C,TBMOD\r
+                                       DISP D,DFLG\r
+                                       DISP L,LFLG>\r
+       001444' 464000  000000          DISP M,0\r
+       001445' 244000  000000          DISP ),0\r
+       001446' 470000  000040          DISP N,NSMOD\r
+       001447' 474000  400640          DISP O,SQMOD+NSMOD+STS+OSFLG\r
+       001450' 500014  000000                          XWD <"P">*4000+PFLG+PCONV,0\r
+                               IFN,K<  DISP R,RFLG>\r
+       001451' 514000  000640          DISP S,SQMOD+NSMOD+STS\r
+                               IFN,K<  DISP T,SPMOD\r
+                                                       XWD <"V">*4000+CHKFLG,LINE\r
+                                       DISP X,XFLG>\r
+       001452' 550000  004000          DISP Z,ZFLG\r
+       001453' 524001  000000                          XWD <"U">*4000+OFLG,0\r
+       001454' 544402  000000                          XWD <"Y">*4000+IBFLG+RIMFLG,0\r
+       001455' 451000  000000                          XWD <"J">*4000+JFLG,0\r
+       001456' 444100  000000                          XWD <"I">*4000+IFLG,0\r
+       001457' 440400  000000                          XWD <"H">*4000+IBFLG,0\r
+       001460' 434200  000000                          XWD <"G">*4000+GFLG,0\r
+       001461' 010000  000000          OCT 010000000000\r
+                               ;FIRST BYTE 2=END OF DISPTA 2ND HALF\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 36\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                               ;SUBR TO GET NEXT CHAR INTO AC CHR\r
+                               ;NO SKIP RETURN IS END OF FILE, SINGLE SKIP IS NORMAL RETURN\r
+\r
+       001462' 607300  000020  GET:    TLNN FLAG,NEWFIL        ;NEW FILE?\r
+       001463' 627300  000030          TLZN FLAG,PCONV+NEWFIL  ;NO,CONVERT THIS CHAR?\r
+       001464' 254000  001506'         JRST GETPC1     ;YES\r
+       001465' 135200  003743'         LDB CHR,IBF+1   ;GET CHAR\r
+       001466' 306200  000040          CAIN CHR," "    ;SPACE?\r
+       001467' 254000  001544'         JRST GETPC2     ;YES, CONVERT TO LINE FEED\r
+       001470' 307200  000063          CAIG CHR,"3"    ;IS THE CHAR A PROPER FORMAT CONTROL CHAR?\r
+       001471' 305200  000052          CAIGE CHR,"*"\r
+       001472' 254000  001542'         JRST GETPC3     ;NO, SO OUTPUT LINE FEED FOLLOWED BY BAD CHAR\r
+       001473' 307200  000056          CAIG CHR,"."    ;USE LEFT HALF OF TABLE?\r
+       001474' 334204  001474'         SKIPA CHR,PCHTAB-<"*">(CHR)\r
+       001475' 204204  001467'         MOVS CHR,PCHTAB-<"/">(CHR)\r
+       001476' 137200  003743' GETPC4: DPB CHR,IBF+1   ;CLOBBER OLD CHAR, USUALLY BECOMES NULL\r
+       001477' 242200  777771          LSH CHR,-7      ;BUT OTHERWISE BECOMES ANOTHER FORMAT CHAR\r
+       001500' 405200  000377          ANDI CHR,377    ;EXTRACT THE CHAR TO BE OUTPUT\r
+       001501' 622200  000200          TRZE CHR,200    ;=1 FOR GENERATING MULTIPLE LINE FEEDS\r
+       001502' 661300  000010          TLO FLAG,PCONV  ;CONTINUE TO CONVERT\r
+       001503' 326200  001707'         JUMPN CHR,CPOPJ1;OUTPUT THE GENERATED CHAR UNLESS NULL\r
+       001504' 262245  000000          POP     P,(P)   ;IGNORE NULL CHARS\r
+       001505' 254000  000374'         JRST    PSCAN4  ;DUMP THE LINE BUFFER\r
+       001506' 606300  010000  GETPC1: TRNN FLAG,SUS   ;SUPPLYING SEQ. NUM. NOW?\r
+       001507' 254000  001532'         JRST GET2       ;NO\r
+       001510' 134200  004036'         ILDB CHR,PTRPT  ;YES, SO GET CHAR OF SEQ NUM\r
+       001511' 326200  001707'         JUMPN CHR,CPOPJ1;0 MARKS LAST CHAR\r
+       001512' 135040  003743'         LDB T1,IBF+1    ;GET FIRST CHAR OF THIS LINE\r
+       001513' 201200  000015          MOVEI CHR,15\r
+       001514' 307040  000015          CAIG T1,15      ;PREPARE TO OUTPUT A CR,LF\r
+       001515' 305040  000012          CAIGE T1,12     ;IS FIRST CHAR OF LINE AN END OF LINE CHAR?\r
+       001516' 201200  000011          MOVEI   CHR,TAB ;NO, SO OUTPUT A TAB\r
+       001517' 620300  010000          TRZ FLAG,SUS    ;TURN OFF SUS SUPPLY\r
+       001520' 254000  001724'         JRST    GETA5\r
+       001521' 350000  003743' GET5:   AOS IBF+1       ;HERE IF A SEQ NUM FOUND IN INBUFFER\r
+       001522' 275040  000005          SUBI T1,5       ;IGNORE SEQ NUM, TAB AND DECREMENT CHAR COUNT\r
+       001523' 202040  003744'         MOVEM T1,IBF+2\r
+       001524' 602300  000040          TRNE FLAG,NSMOD ;REMOVE SEQ NUMS MODE?\r
+       001525' 254000  001532'         JRST GET2       ;YES, SO GET NEXT CHAR\r
+       001526' 202100  004014'         MOVEM T2,SQNUM  ;SEQ NUM FROM BUFFER BECOMES NEW SEQ NUM\r
+       001527' 260240  000707'         PUSHJ P,OUTLBF  ;DUMP THE LINE BUFFER (IF REQUIRED)\r
+       001530' 666300  100400          TRON FLAG,STS+SNI       ;TURN ON START OF LINE\r
+                                                       ;AND NO-INCREMENT SEQ NUM FLAG\r
+       001531' 260240  000553'         PUSHJ P,CLRBUF  ;CLEAR LBUF IF IN THE MIDDLE OF A LINE\r
+\r
+       001532' 622300  040000  GET2:   TRZE FLAG,ESQ   ;REPROCESS LAST CHAR?\r
+       001533' 254000  001557'         JRST GET1       ;YES\r
+       001534' 371040  003744'         SOSL T1,IBF+2   ;CHARS REMAINING IN INBUFFER?\r
+       001535' 254000  001553'         JRST GET4       ;YES\r
+       001536' 260240  001616'         PUSHJ P,INP     ;NO, SO REFILL AND CHECK ERR BITS\r
+       001537' 602400  020000          TRNE IOS,EOFBIT ;END OF FILE? IOS HAS STATUS BITS\r
+       001540' 263240  000000          POPJ P,         ;YES\r
+       001541' 254000  001532'         JRST GET2       ;NO, SO PROCESS INBUFFER\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 36-1\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+\r
+       001542' 660300  040000  GETPC3: TRO FLAG,ESQ    ;REPROCESS BAD CHAR\r
+       001543' 664200  002400          TROA CHR,12*200 ;PRECEED BAD CHAR WITH LINE FEED\r
+       001544' 201200  002400  GETPC2: MOVEI CHR,12*200;CHANGE SPACE TO LINE FEED\r
+       001545' 254000  001476'         JRST GETPC4\r
+\r
+       001546' 005000  004656  PCHTAB: XWD 24*200,23*200+"."   ;/ *\r
+       001547' 042440  037600          XWD 212*200+" ",177*200 ;0 +   VJC 4/16/49\r
+       001550' 003000  004200          XWD 14*200,21*200       ;1 ,\r
+       001551' 004000  042460          XWD 20*200,212*200+"0"  ;2 -\r
+       001552' 002600  004400          XWD 13*200,22*200       ;3 .\r
+\r
+       001553' 134200  003743' GET4:   ILDB CHR,IBF+1  ;FETCH CHAR FROM INBUFFER\r
+       001554' 616300  004672'         TDNN FLAG,[XWD IFLG+IBFLG,BMOD] ;BIN, IB, I OR SBIN MODE?\r
+       001555' 603540  000004          TLNE AUXFLG,SBIN\r
+       001556' 254000  001707'         JRST CPOPJ1     ;YES, SO NO PROCESSING REQUIRED\r
+       001557' 135200  003743' GET1:   LDB CHR,IBF+1   ;AFTER SEQ NUM, HERE FOR 1ST CHAR\r
+       001560' 322200  001532'         JUMPE CHR,GET2  ;IGNORE NULL CHARS\r
+       001561' 306200  000012          CAIN CHR,LF     ;IGNORE LINE FEED IN FORTRAN OUTPUT\r
+       001562' 607300  000004          TLNN FLAG,PFLG  ;/P SWITCH IN EFFECT?\r
+       001563' 254000  001566'         JRST GET1A      ;NO\r
+       001564' 661300  000010          TLO FLAG,PCONV  ;CONVERT THE NEXT LIVE CHAR\r
+       001565' 254000  001532'         JRST GET2       ;GET NEXT CHAR\r
+       001566' 200120  003743' GET1A:  MOVE T2,@IBF+1  ;BIT 35 OF BUFFER SET?\r
+       001567' 622100  000001          TRZE T2,1\r
+       001570' 254000  001521'         JRST GET5       ;YES, THIS IS A SEQ NUM\r
+       001571' 622300  000400          TRZE FLAG,STS   ;START SEQ (NEW LINE) FLAG ON?\r
+       001572' 606300  100200          TRNN FLAG,SQMOD+SNI     ;YES, SEQ MODE OR SEQ COPY?\r
+       001573' 254000  001666'         JRST GET7       ;NO, SO PROCESS CHAR\r
+       001574' 200100  004014'         MOVE T2,SQNUM   ;NO, SO ADD 10. TO SEQ NUM\r
+       001575' 200040  003724'         MOVE T1,K1\r
+       001576' 602300  400000          TRNE FLAG,OSFLG ;TEST FOR INCR. BY ONE\r
+       001577' 200040  003726'         MOVE T1,K4\r
+       001600' 270100  000001          ADD T2,T1       ;ASCII INCREMENT\r
+       001601' 404100  003725'         AND T2,K3       ;MASK SIGNIFICANT DIGITS\r
+       001602' 200040  000002          MOVE T1,T2\r
+       001603' 404040  003721'         AND T1,ZRO      ;MASK CARRY BITS\r
+       001604' 240040  777775          ASH T1,-3\r
+       001605' 274100  000001          SUB T2,T1       ;ADJUST CARRIES\r
+       001606' 434100  003721'         IOR T2,ZRO\r
+       001607' 626300  100000          TRZN FLAG,SNI   ;NON-INCREMENT SEQ NUM FLAG ON?\r
+       001610' 202100  004014'         MOVEM T2,SQNUM  ;NO, SO SAVE THE RESULT\r
+       001611' 660300  050001          TRO FLAG,LINE+SUS+ESQ   ;TURN ON SUPPLY SEQ, REPROCESS\r
+                                                               ;LAST CHAR, AND LINE-BY-LINE FLAGS\r
+       001612' 350000  004174'         AOS LBUF                ;SET BIT 35 IN LBUF TO MARK SEQ NUM\r
+       001613' 200040  004677'         MOVE T1,[POINT 7,SQNUM]\r
+       001614' 202040  004036'         MOVEM T1,PTRPT  ;INITIALIZE SEQ NUM PICK-UP POINTER\r
+       001615' 254000  001462'         JRST GET        ;GO OUTPUT FIRST CHAR OF SEQ NUM\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 37\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                               ;ROUTINE TO INPUT INPUT FILE\r
+\r
+       001616' 056140  000000  INP:    IN      IN,     ;INPUT DATA\r
+       001617' 254000  001710'         JRST    CPOPJZ  ;NO ERRORS ,BUT CLEAR IOS JUST IN CASE\r
+       001620' 062140  000010  INERR:  GETSTS IN,IOS   ;SUBR TO CHECK INPUT ERR BITS\r
+       001621' 606540  000400          TRNN AUXFLG,MTAIN       ;MTA INPUT?\r
+       001622' 602400  740000          TRNE IOS,740000 ;ANY ERROR BITS SET?\r
+       001623' 606400  742000          TRNN IOS,740000+EOTBIT  ;EOT FOR MTA?\r
+       001624' 263240  000000          POPJ P,         ;NO\r
+\r
+       001625' 260240  001135'         PUSHJ P,COMERR  ;SAVE AC'S RELEASE TTY\r
+       001626' 265440  000542'         JSP T5,INICN2   ;YES SO PRINT OUT COMPLETE FILE DESCRIPTOR\r
+       001627' 260240  001652'         PUSHJ P,QUEST\r
+       001630' 265040  002166'         ERRPN2  </Input device />\r
+       001631' 447356  072750\r
+       001632' 203114  573322\r
+       001633' 617124  000000\r
+       001634' 260240  002201'         PUSHJ   P,P6BIT\r
+       001635' 000000  004637'                 DEVICE\r
+       001636' 336000  004052'         SKIPN   ZRF             ;IS THERE A FILE NAME\r
+       001637' 254000  001643'         JRST    .+4             ;NO,SO DON'T PRINT\r
+       001640' 265040  002166'         ERRPN2  </: file />\r
+       001641' 351014  664730\r
+       001642' 625000  000000\r
+       001643' 201140  004052'         MOVEI T3,ZRF    ;LOC OF INPUT FILE NAME TO T3\r
+       001644' 260240  001146'         PUSHJ P,FN.EX   ;DEPOSIT FILE NAME, EXT INTO TTY OUT BUFFER\r
+       001645' 200100  000013          MOVE T2,AUXFLG\r
+       001646' 405100  060500          ANDI T2,CDRIN+DTAIN+DSKIN+MTAIN\r
+       001647' 260240  001020'         PUSHJ P,IOERR   ;GO PRINT ERROR DESCRIPTOR\r
+       001650' 060150  000000          SETSTS IN,(IOS)\r
+       001651' 263240  000000          POPJ P,\r
+\r
+                               ;ROUTINE TO TEST IF BLOCK TOO LARGE, OR WRITE LOCKED\r
+\r
+       001652' 201200  000077  QUEST:  MOVEI CHR,"?"   ;DEPOSIT "?" IN ERROR MSG\r
+       001653' 607300  000200          TLNN FLAG,GFLG  ;ONLY IF /G NOT ON\r
+       001654' 254000  002175'         JRST PUTCON     ;/G NOT ON, PRINT ?(FATAL) BEFORE ERR MSG\r
+\r
+       001655' 606400  040000          TRNN IOS,BIGBLK ;BLOCK NO. TOO LARGE?\r
+       001656' 254000  001662'         JRST QUEST2     ;NO\r
+       001657' 606540  024000          TRNN AUXFLG,DTAIN+DTAOUT        ;YES\r
+       001660' 263240  000000          POPJ P,         ;BLOCK TOO LARGE\r
+\r
+       001661' 254000  002175'         JRST PUTCON     ;DEPOSIT "?" FATAL EVEN IF /G ON\r
+\r
+       001662' 602400  400000  QUEST2: TRNE IOS,WRTLOK ;WRITE LOCKED?\r
+       001663' 606540  034600          TRNN AUXFLG,DTAIN+DTAOUT+MTAIN+MTAOUT+DSKOUT\r
+       001664' 263240  000000          POPJ P,         ;NO\r
+       001665' 254000  002175'         JRST PUTCON     ;DEPOSIT "?" FATAL EVEN IF /G ON\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 38\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+\r
+       001666' 603300  000010  GET7:   TLNE FLAG,PCONV ;CONVERTING FORTRAN CARRAIGE CONTROL CHAR?\r
+       001667' 254000  001463'         JRST GET+1      ;YES, GO DO IT\r
+       001670' 350040  004035'         AOS T1,CDRCNT\r
+       001671' 603540  000040          TLNE AUXFLG,CDRFLG\r
+       001672' 254000  001712'         JRST GET7B      ;CARD READER INPUT\r
+\r
+       001673' 306200  000040  GET7C:  CAIN CHR,SPACE  ;SPACE?\r
+       001674' 254000  001727'         JRST GETA2      ;YES\r
+       001675' 306200  000015          CAIN CHR,CR     ;CAR. RET.?\r
+       001676' 254000  001717'         JRST GETA3      ;YES\r
+       001677' 620300  020000          TRZ FLAG,SPOK   ;CHAR NOT A SPACE STOP COUNTING CONSEC. SPACES\r
+       001700' 306200  000011          CAIN CHR,TAB    ;TAB?\r
+       001701' 254000  001724'         JRST GETA5      ;KEEP TRACK OF TAB STOPS\r
+       001702' 307200  000137          CAIG CHR,137\r
+       001703' 305200  000040          CAIGE CHR,SPACE ;NON-SPACING CHARACTER?\r
+       001704' 254000  001707'         JRST CPOPJ1     ;YES, SO RETURN IMMEDIATELY\r
+       001705' 377000  004027'         SOSG TABCT      ;COUNT DOWN THE TAB STOP COUNTER\r
+       001706' 254000  001724'         JRST GETA5      ;RESET THE COUNTER IF TAB STOP IS PASSED\r
+       001707' 354005  000000  CPOPJ1: AOSA    (P)     ;SKIP RETURN\r
+       001710' 400400  000000  CPOPJZ: SETZ    IOS,    ;CLEAR IOS JUST IN CASE\r
+       001711' 263240  000000  CPOPJ:  POPJ    P,\r
+\r
+\r
+       001712' 301040  000111  GET7B:  CAIL T1,^D73    ;LT COL 73?\r
+       001713' 303040  000120          CAILE T1,^D80   ;NO, LE COL 80?\r
+       001714' 254000  001673'         JRST    GET7C   ;CANT BE A CARD SEQUENCE NUMBER\r
+       001715' 201200  000040          MOVEI CHR,SPACE ;REPLACE CARD SEQUENCE NOS. BY SPACE\r
+       001716' 254000  001673'         JRST GET7C\r
+\r
+       001717' 622300  020000  GETA3:  TRZE FLAG,SPOK  ;CAR. RET. SEEN, ANY TRAILING SPACES?\r
+       001720' 606300  001004          TRNN FLAG,SPMOD+TBMOD   ;YES, ARE WE FLUSHING TRAILING SPACES\r
+       001721' 254000  001724'         JRST GETA5      ;NO, RESET TAB COUNTER ONLY\r
+       001722' 200000  004023'         MOVE 0,SVPTR1\r
+       001723' 202000  004020'         MOVEM 0,OPTR    ;CLOBBER THE OUTPUT POINTER TO LBUF\r
+       001724' 201000  000010  GETA5:  MOVEI 0,TABSP\r
+       001725' 202000  004027'         MOVEM 0,TABCT   ;RESET THE TAB COUNTER\r
+       001726' 254000  001707'         JRST    CPOPJ1\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 39\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+       001727' 662300  020000  GETA2:  TROE FLAG,SPOK  ;SPACE WAS SEEN, IS THIS ONE OF A SEQUENCE?\r
+       001730' 254000  001735'         JRST GETA7      ;YES\r
+       001731' 200000  004020'         MOVE 0,OPTR     ;THIS IS THE FIRST SPACE SEEN, SAVE LBUF\r
+                                                       ;POINTER IN CASE THIS SPACE MUST BE FLUSHED\r
+       001732' 202000  004023'         MOVEM 0,SVPTR1  ;THIS POINTER FOR FLUSHING FINAL SPACES\r
+       001733' 202000  004024'         MOVEM 0,SVPTR2  ;THIS POINTER FOR CHANGING MULT. SPACES TO TABS\r
+       001734' 402000  004030'         SETZM SPCT      ;INITIALIZE THE SPACE COUNTER\r
+       001735' 350040  004030' GETA7:  AOS T1,SPCT\r
+       001736' 373000  004027'         SOSLE TABCT     ;ARE WE AT THE NEXT TAB STOP?\r
+       001737' 254000  001707'         JRST CPOPJ1     ;NO\r
+       001740' 301040  000002          CAIL T1,2       ;DONT BOTHER CHANGING ONE SPACE TO A TAB\r
+       001741' 606300  000004          TRNN FLAG,TBMOD ;TAB GENERATING MODE?\r
+       001742' 254000  001747'         JRST GETA5A     ;NO, GO RESET TAB COUNTER\r
+       001743' 200000  004024'         MOVE 0,SVPTR2\r
+       001744' 202000  004020'         MOVEM 0,OPTR    ;BACK UP THE OUTPUT POINTER OVER THE LAST\r
+                                                       ;GROUP OF SPACES\r
+       001745' 201200  000011          MOVEI CHR,TAB   ;OUTPUT A TAB\r
+       001746' 402000  004030'         SETZM SPCT      ;RESET THE SPACE COUNTER\r
+       001747' 133000  004024' GETA5A: IBP SVPTR2      ;UPDATE THE CHANGE-SPACES-TO-TABS POINTER\r
+       001750' 254000  001724'         JRST GETA5      ;RESET THE TAB COUNTER\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 40\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                               ;ERROR ROUTINES\r
+\r
+                               IFE WCH,<IFN RIMSW,<\r
+                               ERR8A:  MOVEI   T4,ERR382\r
+                                       JRST    E10B\r
+                               ERR3B:  MOVEI   T4,ERR381\r
+                                       JRST    E10B>>\r
+\r
+       001751' 201340  002053' ERR10:  MOVEI   T4,E10A\r
+       001752' 336000  004052' E10B:   SKIPN   ZRF\r
+       001753' 254000  001757'         SKIP    3\r
+       001754' 265040  002155'         ERRPNT  </?File />\r
+       001755' 376155  166312\r
+       001756' 200000  000000\r
+       001757' 201140  004052'         MOVEI T3,ZRF\r
+       001760' 260240  001146'         PUSHJ P,FN.EX\r
+       001761' 254007  000000          JRST    (T4)\r
+\r
+                               IFE WCH,<IFN RIMSW,<\r
+                               ERR381: ERRPN2  </illegal extension!/>\r
+                               \r
+                               ERR382: ERRPN2  </illegal format!/>\r
+                               \r
+                               ERR5B:  ERRPN2  </? DTA to PTP only!/>>>\r
+\r
+       001762' 265040  002155' ERR9:   ERRPNT  </?/>\r
+       001763' 374000  000000\r
+       001764' 201140  004044'         MOVEI T3,DTON\r
+       001765' 260240  001146'         PUSHJ P,FN.EX\r
+       001766' 254000  002033'         JRST    ERR4B\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 41\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+       001767' 334100  004634' ERR1:   SKIPA T2,ODEV   ;OUTPUT UNAVAILABLE\r
+       001770' 200100  004637' ERR1A:  MOVE T2,DEVICE  ;INPUT UNAVAILABLE\r
+       001771' 265040  002155' ERR1B:  ERRPNT  </?Device />\r
+       001772' 376114  573322\r
+       001773' 617124  000000\r
+       001774' 260240  002201'         PUSHJ   P,P6BIT\r
+       001775' 000000  000002                  T2\r
+       001776' 265040  002166'         ERRPN2  </ not available!/>\r
+       001777' 203355  772100\r
+       002000' 607554  164730\r
+       002001' 607055  462502\r
+       002002' 000000  000000\r
+       002003'                 ERR3:\r
+                               IFN FTDSK,<TRNE AUXFLG,DSKIN\r
+                                       JRST DERR5      ;ERR ON DSK>\r
+       002003' 260240  002005'         PUSHJ P,ERR3A\r
+       002004' 254000  001107'         JRST IOERRN     ;EXIT\r
+       002005' 661540  000100  ERR3A:  TLO AUXFLG,INFOFL       ;SIGNAL RETURN TO ERR3AA\r
+       002006' 254000  002711'         JRST INFO\r
+       002007' 265040  002166' ERR3AA: ERRPN2  </? No file named />\r
+       002010' 375011  667500\r
+       002011' 633235  462500\r
+       002012' 673035  562710\r
+       002013' 200000  000000\r
+       002014' 201140  004040'         MOVEI   T3,FILNAM\r
+       002015' 260240  001146'         PUSHJ   P,FN.EX ;PRINT NAME OF FILE THAT CANNOT BE FOUND\r
+       002016' 260240  002735'         PUSHJ   P,INFO2         ;OUTPUT MESS. WITH CR-LF\r
+       002017' 606540  101000          TRNN    AUXFLG,TTYIN!TTYOUT     ;WAS TTY IN USE?\r
+       002020' 263240  000000          POPJ    P,              ;NO\r
+       002021' 602540  001000          TRNE    AUXFLG,TTYIN    ;INPUT DEVICE?\r
+       002022' 254000  000426'         JRST    ININIT          ;YES ,RE-INIT\r
+       002023' 254000  000223'         JRST    OMODE           ;MUST BE OUTPUT\r
+\r
+       002024' 336000  004044' ERR4:   SKIPN DTON\r
+       002025' 254000  002033'         JRST ERR4A\r
+                               IFN FTDSK,<TRNE AUXFLG,DSKOUT   ;ERR ON DSK\r
+                                       JRST DERR6>\r
+       002026' 265040  002155'         ERRPNT  </? Directory full!/>\r
+       002027' 375010  464744\r
+       002030' 627076  467744\r
+       002031' 745014  672730\r
+       002032' 661020  000000\r
+       002033'                 ERR4A:\r
+                               IFN FTDSK,<TRNE AUXFLG,DSKOUT\r
+                                       JRST ERR4C>\r
+       002033' 265040  002155' ERR4B:  ERRPNT  </?Illegal file name!/>\r
+       002034' 376235  466312\r
+       002035' 637035  420314\r
+       002036' 647314  520334\r
+       002037' 607334  520400\r
+                               IFN FTDSK,<\r
+                               ERR4C:  ERRPNT  </?(0) Illegal file name!/>>\r
+\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 41-1\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+       002040'                 ERR6:\r
+       002040' 265040  002155' ERR6A:  ERRPNT  </?PIP command error!/>\r
+       002041' 376411  150100\r
+       002042' 617375  566702\r
+       002043' 673104  062744\r
+       002044' 713376  220400\r
+\r
+       002045' 265040  002155' ERR6B:  ERRPNT  </?PIP command too long!/>\r
+       002046' 376411  150100\r
+       002047' 617375  566702\r
+       002050' 673104  072336\r
+       002051' 675015  467734\r
+       002052' 635020  000000\r
+\r
+       002053' 265040  002166' E10A:   ERRPN2  </ line too long!/>\r
+       002054' 203315  167312\r
+       002055' 203515  767500\r
+       002056' 663375  663502\r
+       002057' 000000  000000\r
+       002060' 265040  002155' ERR5A:  ERRPNT  </?Too many input devices!/>\r
+       002061' 376515  767500\r
+       002062' 667035  674500\r
+       002063' 647356  072750\r
+       002064' 203114  573322\r
+       002065' 617136  320400\r
+                               ;FILE MANIPULATION COMMANDS TO NON-DIRECTORY DEVICES COME HERE\r
+\r
+       002066' 265040  002155' ERR5:   ERRPNT  </?Disk or DECtape input required!/>\r
+       002067' 376115  171726\r
+       002070' 203376  220210\r
+       002071' 426076  460740\r
+       002072' 625015  167340\r
+       002073' 727504  071312\r
+       002074' 707535  171312\r
+       002075' 621020  000000\r
+       002076' 265040  002155' ERR2:   ERRPNT </?Incorrect Project-Programmer number!/>\r
+       002077' 376235  661736\r
+       002100' 713454  561750\r
+       002101' 202416  267724\r
+       002102' 627076  426640\r
+       002103' 713374  771302\r
+       002104' 667334  571100\r
+       002105' 673535  561312\r
+       002106' 711020  000000\r
+       002107' 265040  002155' ERR2A:  ERRPNX  </?Illegal protection!/>\r
+       002110' 376235  466312\r
+       002111' 637035  420340\r
+       002112' 713376  462706\r
+       002113' 723235  767102\r
+       002114' 000000  000000\r
+                               IFE BLOC0,<\r
+       002115' 265040  002155' ERR7A:  ERRPNT  <Z?DECtape I/O only!Z>>\r
+       002116' 376110  541750\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 41-2\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+       002117' 607414  520222\r
+       002120' 276364  067734\r
+       002121' 663624  100000\r
+\r
+       002122' 265040  002155' ERR8:   ERRPNT  </?Explicit output device required!/>\r
+       002123' 376137  070330\r
+       002124' 647075  172100\r
+       002125' 677536  470352\r
+       002126' 721014  462754\r
+       002127' 647074  520344\r
+       002130' 627436  564744\r
+       002131' 627104  100000\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 42\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+\r
+                               ;ROUTINE TO CHECK INPUT DEV, SET XXXIN.E.G.DTAIN\r
+\r
+       002132' 200000  004637' CHECK1: MOVE 0,DEVICE   ;INPUT DEVICE NAME TO AC 0\r
+       002133' 322000  002152'         JUMPE 0,CHECK   ;IGNORE IF NO INPUT DEVICE\r
+                               IFN FTDSK,<PUSHJ        P,PSYSP ; STR# 10-3178>\r
+       002134' 047000  000004          DEVCHR          ;GET INPUT DEVCHR\r
+                               IFN FTDSK,<TLNN 0,DSKBIT ;INPUT DEVICE DISK?\r
+                                       JRST CHECK2     ;NO\r
+                                       TRO AUXFLG,DSKIN;INPUT DEVICE IS DSK, SET BIT\r
+                                       MOVE    T1,DEVICE\r
+                                       CAMN    T1,[SIXBIT/SYS/]        ; INIT SYS AS DSK\r
+                                       MOVSI   T1,(SIXBIT/DSK/)\r
+                                       MOVEM   T1,ADSK\r
+                                       JRST    CHECK>\r
+\r
+       002135' 322000  000525' CHECK2: JUMPE 0,DEVER1  ;NON-EX. DEVICE\r
+\r
+       002136' 607000  000002          TLNN 0,INBIT    ;CAN DEVICE DO INPUT?\r
+       002137' 254000  002040'         JRST ERR6A      ;NO, COMMD ERROR\r
+\r
+       002140' 603000  000200          TLNE 0,PTRBIT   ;PAPER TAPE READER?\r
+       002141' 660540  200000          TRO AUXFLG,PPTIN;YES\r
+\r
+       002142' 603000  000004          TLNE 0,DTABIT   ;DECTAPE?\r
+       002143' 660540  020000          TRO AUXFLG,DTAIN\r
+\r
+       002144' 603000  000020          TLNE 0,MTABIT   ;MAGTAPE?\r
+       002145' 660540  000400          TRO AUXFLG, MTAIN\r
+\r
+       002146' 603000  100000          TLNE CDRBIT     ;CARD READER?\r
+       002147' 660540  000100          TRO AUXFLG,CDRIN\r
+\r
+       002150' 603000  000010          TLNE 0,TTYBIT   ;TELETYPE?\r
+       002151' 660540  001000          TRO AUXFLG,TTYIN\r
+\r
+       002152' 602740  001000  CHECK:  TRNE    CALFLG,SSWTCH   ;_FLAG STILL ON?\r
+       002153' 254000  002040'         JRST ERR6A      ; YES ,COMMAND ERROR\r
+       002154' 263240  000000          POPJ P,         ; NO, RETURN \r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 43\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                               ;SUBR TO PRINT ERROR MESSAGES\r
+                               ;! MARKS THE END OF MESSAGE & SIGNALS GO TO PIP2\r
+                               ;NULL IS A FLAG TO RETURN TO THE NEXT LOCATION\r
+\r
+       002155'                 PRETXT: \r
+       002155' 071240  000000  PTEXT:  RELEAS DIR,     ;RELEASE DIRECTORY DEVICE\r
+\r
+       002156' 071200  000000          RELEAS TAPE,    ;RELEASE MAGTAPE\r
+       002157' 071100  000000          RELEAS OUT,     ;LET GO OF BOTH OUTPUT AND\r
+       002160' 071140  000000          RELEAS IN,      ;INPUT DEVICES\r
+       002161' 265440  000541'         JSP T5,INICN1   ;INITIALIZE THE TTY\r
+       002162' 201000  000015          MOVEI   0,CR\r
+       002163' 136000  003757'         IDPB    0,TFO+1 ;OUTPUT A CR-LF\r
+       002164' 201000  000012          MOVEI   0,LF\r
+       002165' 136000  003757'         IDPB    0,TFO+1 ;FOR BATCH\r
+       002166' 505040  440700  PTEXT2: HRLI T1,440700  ;GET SET TO SCAN 7-BIT DATA\r
+       002167' 134000  000001  PTEXT1: ILDB 0,T1       ;GET CHAR OF ERR MESSAGE\r
+       002170' 322001  000001          JUMPE 0,1(T1)   ;RETURN ON ZERO\r
+       002171' 306000  000041          CAIN 0,"!"      ;!?\r
+       002172' 254000  000013'         JRST PIP2       ;YES, END OF MESSAGE, APPEND CAR.RET., LF\r
+       002173' 136000  003757'         IDPB 0,TFO+1    ;DEPOSIT CHAR IN OUTBUFFER\r
+       002174' 254000  002167'         JRST PTEXT1     ;GET NEXT CHAR\r
+\r
+                               ;ROUTINE TO DEPOSIT CHARACTER IN TTY OUT BUFFER\r
+\r
+       002175' 377000  003760' PUTCON: SOSG TFO+2      ;STORED MORE THAN BUFFER HOLDS?\r
+       002176' 067040  000000          OUTPUT CON,     ;YES\r
+       002177' 136200  003757'         IDPB CHR,TFO+1\r
+       002200' 263240  000000          POPJ P,\r
+\r
+                               ;ROUTINE TO CONVERT ONE WORD OF SIXBIT\r
+                               ;FROM ADDRESS IN LOCATION AFTER CALL AND DEPOSIT INTO TTY OUT BUFFER\r
+\r
+       002201' 200065  000000  P6BIT:  MOVE T1,@(P)    ;PICK UP WORD OF 6-BIT\r
+       002202' 505040  440600          HRLI T1,440600  ;SET UP POINTER\r
+       002203' 134200  000001  P6BIT1: ILDB CHR,T1\r
+       002204' 322200  002207'         JUMPE CHR,P6BIT2\r
+       002205' 271200  000040          ADDI CHR,40\r
+       002206' 260240  002175'         PUSHJ P,PUTCON  ;DEPOSIT IN TTY\r
+       002207' 603040  770000  P6BIT2: TLNE T1,770000  ;DONE SIX?\r
+       002210' 254000  002203'         JRST P6BIT1     ;NO\r
+       002211' 254000  001707'         JRST CPOPJ1     ;SKIP RETURN\r
+\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 44\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                               ;ROUTINE TO CLEAR DSK OR DTA DIRECTORY (/Z SWITCH)\r
+\r
+       002212' 606740  000200  DTCLR:  TRNN    CALFLG,DVSWTH   ;HAS A DEVICE BEEN SEEN?\r
+       002213' 254000  002122'         JRST    ERR8            ;NO,SO DON'T SCREW USER\r
+                               IFN FTDSK,<TRNE AUXFLG,DSKOUT   ;CLEAR DSK OR DTA DIR.\r
+                                       JRST DSKZRO>\r
+       002214' 606540  004000          TRNN AUXFLG,DTAOUT      ;MUST BE DTA\r
+       002215' 254000  002066'         JRST ERR5\r
+       002216' 047100  000013          UTPCLR  OUT,            ;CLEAR DIRECTORY\r
+       002217' 263240  000000          POPJ P,\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 45\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                               ;ROUTINE TO SET UP TO COPY EVERYTHING\r
+\r
+       002220' 260240  000426' PRECOP: PUSHJ   P,ININIT        ;INIT INPUT FILE\r
+       002221' 606540  020000          TRNN    AUXFLG,DTAIN    ;DECTAPE INPUT\r
+       002222' 254000  002225'         SKIP    2               ;NO\r
+       002223' 260240  003272'         PUSHJ   P,DTCH2         ;YES, GET DIRECT, SET POINTERS TO DIRECT\r
+\r
+       002224' 260240  002702' DTCOPY: PUSHJ   P,DTADI1        ;START (T5)\r
+                               IFN FTDSK,<TRNE AUXFLG,DSKIN    ;DSK INPUT. ENTER HERE FROM DTD2\r
+                                       PUSHJ   P,DSKDIR        ;YES, PREPARE TO LOOKUP FILES>\r
+       002225' 402000  004034' COPY1A: SETZM   ZCNT            ;CLEAR COUNT FOR DSK ZERO REQUESTS\r
+       002226' 201100  000006          MOVEI   T2,6            ;FILL 0 CHARS. IN DEST-FILE\r
+       002227' 200040  004700'         MOVE    T1,[POINT 6,DTON]       ;NAME WITH X'S. THIS IS\r
+       002230' 134000  000001  XSS:    ILDB    0,T1            ;THEN THE BASE FOR GENERATED\r
+       002231' 326000  002233'         JUMPN   0,.+2           ;DESTINATION FILES FROM\r
+       002232' 201000  000070          MOVEI   0,"X"-40        ;NON-DIR. DEVICES IN /X\r
+       002233' 137000  000001          DPB     0,T1\r
+       002234' 367100  002230'         SOJG    T2,XSS          ;DON'T YET KNOW IF ONE\r
+                                                               ;OF THE INPUT DEV. WILL\r
+       002235' 200000  004044'         MOVE    0,DTON          ;BE NON-DIR\r
+       002236' 202000  004021'         MOVEM   0,DTONSV\r
+       002237' 200000  004045'         MOVE    0,DTON+1\r
+       002240' 202000  004022'         MOVEM   0,DTONSV+1\r
+\r
+       002241' 260240  002371' COPY1:  PUSHJ   P,SR2           ;SET INIT. COPYING MODE\r
+       002242' 260240  002566'         PUSHJ   P,LOOK          ;GET A FILE TO COPY\r
+       002243' 254000  002317'         JRST    CAL6            ;NO MORE\r
+                               IFN FTDSK<PUSHJ P,XDDSK         ;GOT ONE, CHECK (XD) FROM DSK, NAMTAB\r
+                                       JRST    COPY1           ;IN LIST, DON'T COPY>\r
+       002244' 606540  201500          TRNN    AUXFLG,MTAIN+PPTIN+CDRIN+TTYIN  ;OK, COPY FILE\r
+       002245' 254000  002250'         JRST    COPY6A          ;MUST BE DIRECTORY DEVICE\r
+       002246' 260240  002337'         PUSHJ   P,MTPTCR        ;SET UP A DEST. FN.\r
+       002247' 254000  002252'         JRST    COPY6\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 46\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+       002250' 076140  004052' COPY6A: LOOKUP  IN,ZRF          ;LOOKUP INPUT FILE NAME\r
+       002251' 254000  002315'         JRST    CAL5            ;INPUT FILE FILE PROTECTED\r
+       002252' 260240  003353' COPY6:  PUSHJ   P,FILTYP        ;CHECK FOR DMP,SAV,REL,CHN\r
+                               IFN WCH,<\r
+                                       TRNN    AUXFLG,DTAIN+DTAOUT\r
+                                       JRST    .+5\r
+                                       HLRZ    0,ZRF+1\r
+                                       CAIE    0,(SIXBIT /DMP/)\r
+                               IFN DISK30,<CAIN 0,(SIXBIT/SVE/)>\r
+                               IFE DISK30,<CAIN 0,(SIXBIT/SAV/)>\r
+                                       JRST    COPY1>\r
+       002253' 260240  002323'         PUSHJ   P,COPY3\r
+       002254' 200000  004052' COPY6B: MOVE    0,ZRF           ;INPUT FILE NAME\r
+       002255' 202000  004044'         MOVEM   0,DTON          ;IS OUTPUT FILE NAME\r
+       002256' 510000  004053'         HLLZ    0,ZRF+1         ;LIKEWISE EXT\r
+       002257' 512000  004045'         HLLZM   0,DTON+1\r
+\r
+                               ;THIS CODE OPERATES AS FOLLOWS - FOR E+2, SET = 0\r
+                               ;TO START (ASSUMING /X)\r
+                               ;DSK TO DSK IF EDIT SWITCHES PUT E+2 = 0 IF NO EDITS TRANSFER\r
+                               ;       DATE, TIME, BITS 13-35\r
+                               ;DSK TO DTA FOR EDITS E+2 = 0, NO EDITS TRANSFER 24-35 FOR\r
+                               ;DATE, FOR"SAV" FILES TRANSLATE NO.  1K BLOCKS\r
+                               ;DTA TO DSK FOR NO EDITS XFER BITS 24-35, ELSE E+2 = 0\r
+                               ;DTA TO DTA ALWAYS XFER 18-23, (1K BLOCK) NO EDITS XFER 24-35(DATE)\r
+\r
+       002260' 402000  004046'         SETZM   DTON+2          ;CLEAR DATE. OUTPUT FILE, DSK/DTA\r
+       002261' 135000  003717'         LDB     0,DATE          ;GET DSK/DTA DATE CREATED\r
+       002262' 616300  004701'         TDNN    FLAG,[XWD PFLG,LINE+TBMOD+NSMOD+SQMOD+SPMOD]\r
+       002263' 603540  000040          TLNE    AUXFLG,CDRFLG\r
+       002264' 254000  002266'         JRST    COPY6C\r
+       002265' 137000  003720'         DPB     0,DATED         ;DEPOSIT IF NO EDITS\r
+                               IFN FTDSK,<LDB  0,TIME\r
+                                       TRC     AUXFLG,DSKIN+DSKOUT\r
+                                       TRCN    AUXFLG,DSKIN+DSKOUT\r
+                                       DPB     0,TIMED         ;DSK TO DSK TIME>\r
+       002266'                 COPY6C: IFE WCH,<\r
+       002266' 260240  002412'         PUSHJ   P,OKBLKS        ;SETUP 1K BLOCKS>\r
+       002267' 077100  004044'         ENTER   OUT,DTON        ;GOT DATA, CREATE NEW FILE\r
+       002270' 254000  002024'         JRST    ERR4            ;DIRECTORY FULL\r
+       002271' 200000  003721'         MOVE    0,ZRO           ;GET ASCII/00000/AND\r
+       002272' 202000  004014'         MOVEM   0,SQNUM         ;RESET SEQUENCE NO.\r
+       002273' 661300  000020          TLO     FLAG,NEWFIL     ;SET NEW FILE FLAG\r
+       002274' 402000  004026'         SETZM   TOTBRK          ;CLEAR PAREN COUNTER\r
+       002275' 607540  000044          TLNN    AUXFLG,CDRFLG+SBIN      ;SPECIAL PROCESSING?\r
+       002276' 612300  004702'         TDNE    FLAG,[XWD PFLG+IFLG+IBFLG,LINE+BMOD+TBMOD+NSMOD+SQMOD+SPMOD]    \r
+       002277' 254000  000343'         JRST    PSCAN           ;YES, DO IT\r
+       002300' 375000  003744' COPY5:  SOSGE   IBF+2           ;INPUT BUFFER EMPTY?\r
+       002301' 254000  002305'         JRST    COPY4           ;YES\r
+       002302' 134200  003743'         ILDB    CHR,IBF+1       ;GET NEXT WORD AND\r
+       002303' 260240  000756'         PUSHJ   P,PUT           ;OUTPUT IT\r
+       002304' 254000  002300'         JRST    COPY5\r
+       002305' 260240  002323' COPY4:  PUSHJ   P,COPY3         ;GET NEXT FULL SOURCE BLOCK\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 46-1\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+       002306' 260240  000762'         PUSHJ   P,OUTP          ;OUTPUT PREV. BLOCK-DONT ALTER DATA\r
+       002307' 350000  003747'         AOS     OBF+2           ;MAKE PUT HAPPY BECAUSE OF\r
+       002310' 254000  002300'         JRST    COPY5           ;OUTPUT HERE.\r
+       002311' 070140  000000  COPY2A: CLOSE   IN,\r
+       002312' 070100  000000          CLOSE   OUT,\r
+                               IFN FTDSK,<TLNE  AUXFLG,NSPROT  ;NON-STANDARD PROTECTION?\r
+                                       TRNN    AUXFLG,DSKOUT   ;RENAME ALL OUTPUT FILES IF\r
+                                       JRST    COPY2B          ;NON-STANDARD PROTECTION\r
+                                       MOVE    0,PROTS         ;GET NEW PROTECTION\r
+                                       MOVEM   0,DTON+2\r
+                               \r
+                                       RENAME  OUT,DTON        ;RENAME OUTPUT FILE\r
+                                       JRST    DERR6>\r
+       002313' 260240  000764' COPY2B: PUSHJ   P,OUTP1\r
+       002314' 254000  002241'         JRST    COPY1           ;GO GET NEXT FILE\r
+\r
+       002315' 350000  004034' CAL5:   AOS     ZCNT            ;INPUT FILE READ PROT.\r
+       002316' 254000  002241'         JRST    COPY1           ;COUNT READ FAILURES\r
+\r
+                               ;NO MORE FILES TO COPY\r
+\r
+       002317' 621540  000002  CAL6:   TLZ     AUXFLG,NSPROT\r
+                               IFN FTDSK,<     SKIPN   ZCNT    ;FILES READ PROTECTED ?>\r
+       002320' 254000  000411'         JRST    MAIN1           ;NO\r
+                               IFN FTDSK,<MOVSI T4,(SIXBIT /X/)        ;YES,PRINT FAILURE DURING\r
+                                       JRST    DSKZ5           ;/X REQUEST>\r
+\r
+       002321' 332000  003744' COPY3B: SKIPE   IBF+2           ;EMPTY BLOCK?\r
+       002322' 263240  000000          POPJ    P,              ;NO, RETURN\r
+\r
+       002323' 260240  001616' COPY3:  PUSHJ   P,INP           ;READ NEXT BLOCK\r
+       002324' 622540  002000          TRZE    AUXFLG,READ1\r
+       002325' 260240  002376'         PUSHJ   P,TTYZ          ;END OF FILE FROM TTY?\r
+       002326' 606400  020000          TRNN    IOS,EOFBIT      ;END OF FILE? IOS HAS STATUS BITS\r
+       002327' 254000  002321'         JRST    COPY3B          ;NO.\r
+       002330' 262240  000000          POP     P,0             ;FIND WHERE CALLED FROM\r
+       002331' 553000  000000          HRRZS   0\r
+       002332' 602540  201500          TRNE    AUXFLG,MTAIN+CDRIN+TTYIN+PPTIN\r
+       002333' 302000  002254'         CAIE    0,COPY6B        ;DID WE COME FROM COPY6B-1\r
+       002334' 254000  002311'         JRST    COPY2A          ;NO, EOF NOT FIRST DATA IN FILE \r
+       002335' 620740  000037          TRZ   CALFLG,ALLCLF     ;END OF INFO ON NON-DIR. DEVICE\r
+       002336' 254000  002241'         JRST    COPY1\r
+\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 47\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                               ;CREATE DESTINATION FILE NAME. RANGE IS ...001 TO ...999\r
+\r
+       002337' 350040  004051' MTPTCR: AOS T1,NO.\r
+       002340' 303040  001747          CAILE T1,^D999\r
+       002341' 254000  002350'         JRST MPC2\r
+       002342' 260240  002362'         PUSHJ P,MTPTC1\r
+       002343' 200000  004021'         MOVE 0,DTONSV   ;FILNAM=DTON IS ONLY WAY TO IDENTIFY\r
+       002344' 202000  004052'         MOVEM 0,ZRF     ;INPUT FILE\r
+       002345' 200000  004022'         MOVE 0,DTONSV+1\r
+       002346' 202000  004053'         MOVEM 0,ZRF+1\r
+       002347' 263240  000000          POPJ P,\r
+       002350' 265040  002155' MPC2:   ERRPNT <Z?Terminate /X, max. of 999 files processed!Z>\r
+       002351' 376514  571332\r
+       002352' 647354  172312\r
+       002353' 201373  026100\r
+       002354' 667037  027100\r
+       002355' 677144  034562\r
+       002356' 345014  664730\r
+       002357' 627464  070344\r
+       002360' 677074  571746\r
+       002361' 627104  100000\r
+\r
+       002362' 201641  001750  MTPTC1: MOVEI DOUT,^D1000(T1)\r
+       002363' 200040  004703'         MOVE T1,[POINT 6,DTONSV,17]\r
+       002364' 265100  003235'         JSP T2,OUTDC1\r
+       002365' 344100  001711'         AOJA T2,CPOPJ\r
+       002366' 275200  000040          SUBI CHR,40\r
+       002367' 136200  000001          IDPB CHR,T1\r
+       002370' 263240  000000          POPJ P,\r
+\r
+                               ;ROUTINE TO RESTORE BYTE POINTERS TO INITED MODE\r
+                               ;FOR INPUT AND OUTPUT DEVICES\r
+\r
+       002371' 200000  003740' SR2:    MOVE 0,SVIBF\r
+       002372' 502000  003743'         HLLM 0,IBF+1\r
+       002373' 200000  003741'         MOVE 0,SVOBF\r
+       002374' 502000  003746'         HLLM 0,OBF+1\r
+       002375' 263240  000000          POPJ P,\r
+\r
+                               ;ROUTINE TO SEE IF ^Z FIRST CHAR ON TTY\r
+\r
+       002376' 606540  001000  TTYZ:   TRNN AUXFLG,TTYIN       ;SEE IF FIRST CHAR. IS ^Z\r
+       002377' 263240  000000          POPJ P,                 ;NOT TTY INPUT\r
+       002400' 550040  003743'         HRRZ T1,IBF+1           ;ON TTY\r
+       002401' 554001  000001          HLRZ 0,1(T1)            ;GET FIRST CHARACTER\r
+       002402' 620000  003777          TRZ     0,3777          ;CLEAR ANY OTHER CHAR.\r
+       002403' 306000  150000          CAIN    0,(<CZ>B6)      ;IS IT ^Z?\r
+       002404' 664400  020000          TROA    IOS,EOFBIT      ;YES,SET END OF FILE\r
+       002405' 302000  104000          CAIE    0,(<XON>B6)     ;IS IT XON "^Q"\r
+       002406' 263240  000000          POPJ    P,              ;NO\r
+       002407' 205000  774000          MOVSI   0,(<DEL>B6)     ;A RUBOUT\r
+       002410' 436001  000001          IORM    1(T1)           ;CLEAR "^Q" FROM BUFFER\r
+       002411' 263240  000000          POPJ    P,              ;AND RETURN\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 48\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                               IFE     WCH,<\r
+                               ;DTA TO DTA MAINTAIN BITS 18-23 OF E+2 IF SET\r
+                               ;DSK TO DSK NO TRANSLATION (E+2)\r
+                               ;DSK TO DTA TRANSLATE E+3 (LHS) INTO E+2 (18-23)\r
+                               ;DTA TO DSK NO TRANSLATION (E+2)\r
+                               ;THIS ROUTINE ENSURES "SAVE" FILES MAINTAIN\r
+                               ;CORRECT DATA FOR LOADING.  FOR DSK INPUT\r
+                               ;A "SAVE" FILE IS ONE WITH THE EXTENSION\r
+                               ;"SAV". E+3 = (-[(200XN)+NO. WDS IN LAST BLOCK]\r
+                               ;IN LHS TRANSLATE TO NO. 1K BLOCKS NEEDED\r
+                               ;TO LOAD FILE - BEFORE IT IS EXPANDED IN CORE.\r
+\r
+       002412' 606740  020000  OKBLKS: TRNN    CALFLG,RXFLG    ;(RX)?\r
+       002413' 254000  002422'         JRST    OKBLK0          ;NO\r
+       002414' 200000  004647'         MOVE    0,MATCH         ;GET FILE NAME\r
+       002415' 554040  004650'         HLRZ    T1,MATCH+1      ;AND EXT.\r
+       002416' 312000  003730'         CAME    0,STAR          ;SKIP IF NAME IS "*"\r
+       002417' 202000  004044'         MOVEM   0,DTON          ;OTHERWISE REPLACE NAME\r
+       002420' 302040  120000          CAIE    T1,(SIXBIT /*/) ;SAME FOR EXT\r
+       002421' 506040  004045'         HRLM    T1,DTON+1\r
+       002422' 200000  004044' OKBLK0: MOVE    0,DTON          ;GET OUTPUT FILE NAME\r
+       002423' 554040  004045'         HLRZ    T1,DTON+1       ;AND EXT\r
+       002424' 302040  120000          CAIE    T1,(SIXBIT /*/) ;IS IT "*"\r
+       002425' 316000  003730'         CAMN    0,STAR          ;IS IT "*"\r
+       002426' 254000  002033'         JRST    ERR4B           ;YES, ERROR\r
+\r
+                               REPEAT 0,<                      ;NEEDS FIX TO TENDMP OR MONITOR\r
+                                       TRNE    AUXFLG,DTAOUT   ;OUTPUT TO DTA?\r
+                                       CAIE    T1,(SIXBIT /SAV/) ;AND A SAV FILE?\r
+                                       SKIP    1               ;NO\r
+                                       UGETF   OUT,0           ;SET TO FIRST FREE BLOCK\r
+                               >\r
+\r
+                               IFN FTDSK,<TRC  AUXFLG,DSKIN+DSKOUT     ;DSK I/O\r
+                                       TRCN    AUXFLG,DSKIN+DSKOUT\r
+                                       POPJ    P,                      ;YES, EXIT\r
+                                       TRC     AUXFLG,DTAIN+DTAOUT     ;NO\r
+                                       TRCE    AUXFLG,DTAIN+DTAOUT     ;DTA I/O\r
+                                       JRST    OKBLK1                  ;NO>\r
+       002427' 135000  003716'         LDB     0,OKB                   ;DTA I/O - 1K BLKS\r
+       002430' 137000  003715'         DPB     0,OKBD                  ;DEPOSIT IN DTON\r
+       002431' 263240  000000          POPJ    P,\r
+\r
+                               IFN FTDSK,<\r
+                               OKBLK1: TRC     AUXFLG,DTAIN+DSKOUT     ;DTA-TO-DSK\r
+                                       TRCN    AUXFLG,DTAIN+DSKOUT\r
+                                       POPJ    P,                      ;YES\r
+                                       TRC     AUXFLG,DSKIN+DTAOUT     ;NO,DSK-TO-DTA?\r
+                                       TRCE    AUXFLG,DSKIN+DTAOUT     ;NO\r
+                                       POPJ    P,\r
+                                       HLRZ    0,ZRF+1                 ;YES DSK-TO-DTA\r
+                               IFE DISK30,<\r
+                                       CAIE    0,(SIXBIT /SAV/)        ;GET LOOKED UP EXT,(INPUT).\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 48-1\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                                       >\r
+                               IFN DISK30,<CAIE 0,SIXBIT /SVE/>\r
+                                       POPJ    P,\r
+                                       HLRO    T1,ZRF+3                ;EXTENSION=SAV\r
+                                       MOVNS   T1                      ;WORD COUNT\r
+                                       IDIVI   T1,2000                 ;DIVIDE BY 1K CORE(OCTAL LOCS.)\r
+                                       JUMPN   T2,.+2\r
+                                       SOJ     T1,                     ;N-1\r
+                                       DPB     T1,OKBD\r
+                                       POPJ    P,>>\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 49\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+\r
+                               IFN FTDSK,<\r
+                               ;ARE WE DOING (XD) FROM DSK? IF NOT, EXIT.\r
+                               ;SEE IF CURRENT FILE SELECTED IN ZRF IS IN THE\r
+                               ;LIST OF FILES NOT TO BE COPIED. (POPJ IF IT IS)\r
+                               \r
+                               XDDSK:  TRC     FLAG,XFLG+DFLG          ;COMPLEMENT\r
+                                       TRCN    FLAG,XFLG+DFLG          ;RESET AND TEST\r
+                                       TRNN    AUXFLG,DSKIN            ;/X AND /D WERE SET\r
+                                       JRST    CPOPJ1                  ;NOT DSKIN SO COPY FILE\r
+                                       HRROI   T1,-12                  ;SET TO LOOP NAMTAB\r
+                               XDDSK2: MOVE    T2,ZRF                  ;GET FILE NAME\r
+                                       SKIPN   T3,NAMTAB+12(T1)        ;END OF TABLE ENTRIES?\r
+                                       JRST    CPOPJ1                  ;YES, EXIT\r
+                                       CAME    T2,T3                   ;FN IS * OR MATCH?\r
+                                       CAMN    T3,STAR\r
+                                       SKIP    1                       ;YES, * OR MATCH?\r
+                                       JRST    XDDSK1                  ;NO MATCH\r
+                                       HLLZ    T2,ZRF+1                ;GET EXT\r
+                                       SKIPN   T3,NAMTAB+24(T1)        ;NO EXT MATCH WANTED\r
+                                       POPJ    P,                      ;EXIT THEN\r
+                                       CAME    T2,T3                   ;EXT IS * OR MATCH?\r
+                                       CAMN    T3,STAR\r
+                                       POPJ    P,                      ;FN EX MATCH, NO COPY\r
+                               XDDSK1: AOJL    T1,XDDSK2               ;TRY ANOTHER FOR MATCH\r
+                                       JRST    CPOPJ1                  ;SEARCHED TABLE, NO MATCH>\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 50\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                               ;ROUTINE TO DELETE OR RENAME FILES ON DTA OR DSK OR SET UP NAMTAB\r
+                               ;FOR (DX) (DISK ONLY)\r
+\r
+       002432' 602300  002000  DTDELE: TRNE    FLAG,XFLG       ;/X\r
+       002433' 254000  002443'         JRST    DELE1           ;YES\r
+       002434' 606300  000010          TRNN    FLAG,DFLG       ;/D NEED EXPLICIT DEVICE\r
+       002435' 254000  002440'         SKIP    2\r
+       002436' 606740  000200          TRNN    CALFLG,DVSWTH   ;-1 IF DEVICE SEEN\r
+       002437' 254000  002122'         JRST    ERR8            ;NO, ERROR\r
+       002440' 200000  004634'         MOVE    0,ODEV          ;OUTPUT DEVICE\r
+       002441' 202000  004637'         MOVEM   0,DEVICE        ;NO,SET DEVICE FOR INPUT\r
+       002442' 202000  004050'         MOVEM   0,DEVA\r
+       002443' 620540  261500  DELE1:  TRZ     AUXFLG,DTAIN+CDRIN+TTYIN+PPTIN+MTAIN+DSKIN\r
+       002444' 260240  002132'         PUSHJ   P,CHECK1        ;RESET INPUT DEVICE DESCRP\r
+       002445' 201000  003766'         MOVEI   0,NAMTAB        ;FOR /R GET NEW NAME\r
+       002446' 505000  004044'         HRLI    0,DTON          ;SET TO BLT OUTPUT DIRECT ENTRY\r
+       002447' 251000  003771'         BLT     0,NAMTAB+3      ;TO NAMTAB\r
+\r
+       002450' 606540  060000          TRNN    AUXFLG,DTAIN+DSKIN\r
+       002451' 254000  002066'         JRST    ERR5            ;NOT DTA OR DSK\r
+       002452' 260240  002746'         PUSHJ   P,FNSET         ;SET UP CALFLG CORRECTLY\r
+       002453' 602300  002000          TRNE    FLAG,XFLG       ;/X?\r
+       002454' 254000  002456'         JRST    DTD1            ;YES, (DX). RX ILLEGAL\r
+                               IFN FTDSK,<TRNE AUXFLG,DSKOUT   ;NO, HAS TO BE /D OR /R\r
+                                       JRST    DSKDR0          ;ON DSK>\r
+       002455' 254000  002460'         JRST    DTADR           ;OR DTA\r
+\r
+       002456'                 DTD1:\r
+                               IFN FTDSK,<TRNE AUXFLG,DSKIN    ;DSK INPUT?\r
+                                       JRST    DTD1A           ;YES>\r
+       002456' 260240  003271'         PUSHJ   P,DTCHECK       ;NO, HAS TO BE DTA, GET DIR\r
+       002457' 254000  002466'         JRST    DELE3           ;DELETE, FILES FROM DIR\r
+                               IFN FTDSK,<\r
+                               DTD1A:  SETZM   NAMTAB          ;COLLECT NAMES FOR DX, DSK SOURCE\r
+                                       MOVE    T1,[XWD NAMTAB,NAMTAB+1]\r
+                                       BLT     T1,NAMTAB+23    ;FIRST CLEAR TABLE\r
+                                       MOVEI   T1,NAMTAB       ;LOCATION OF NAMTAB\r
+                                       MOVEM   T1,LOCNAM\r
+                               DTD4:   MOVE    0,FILNAM\r
+                                       JUMPE   0,DTD4A         ;FN=0 ILLEGAL\r
+                                       MOVE    T1,LOCNAM\r
+                                       MOVEM   0,(T1)          ;STORE FILENAME FROM CS\r
+                                       MOVE    0,FILEX         ;STORE FILE EXT\r
+                                       MOVEM   0,12(T1)        ;TABLE FULL?\r
+                                       MOVEI   T2,NAMTAB+11\r
+                                       CAMN    T2,T1\r
+                                       SOS     ESWTCH          ;YES\r
+                                       SKIPE   ESWTCH          ;NO, END OF CS SCAN?\r
+                                       JRST    DTD2            ;END OF NAME PROCESSING\r
+                                       AOS     T1,LOCNAM       ;SET TO STORE IN NEXT SLOT NAMTAB\r
+                               DTD4B:  PUSHJ   P,DESCRP        ;NO, GET NEXT FILENAME FROM CS\r
+                                       TRNE    CALFLG,NEWPP!NEWDEV\r
+                                       JRST    ERR5A           ;ERROR, NEW DEV OR# PP\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 50-1\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                                       JRST    DTD4\r
+                               DTD4A:  PUSHJ   P,ERR3A\r
+                                       JRST    DTD4B\r
+                               \r
+                               ;END OF CS OR NAMTAB FULL\r
+                               DTD2:   PUSHJ   P,ININIT        ;INIT INPUT FILE\r
+                                       MOVEI   T1,1            ;SET TO RETURN DTCOPY+1\r
+                                       JRST    DTD5>\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 51\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                               ;ROUTINE TO DELETE OR RENAME FILES ON DTA\r
+\r
+       002460' 260240  003271' DTADR:  PUSHJ   P,DTCHECK       ;GO GET DTA DIRECTORY\r
+       002461' 200040  003742'         MOVE T1,IBF             ;CURRENT INPUT BUFFER\r
+                               IFN WCH,<\r
+                                       USETO OUT,1             ;TRY TO WRITE OUTPUT TAPE\r
+                                       >                       ;DETERMINE IF WRITE LOCKED\r
+                               IFE WCH,<\r
+       002462' 075100  000144          USETO OUT,144>          ;THIS SHOULD GIVE ERROR MSG\r
+       002463' 067101  000000          OUTPUT OUT,(T1)         ;IF DTA WRITE LOCKED\r
+       002464' 260240  003271'         PUSHJ P,DTCHECK         ;GO GET DTA DIRECTORY\r
+\r
+       002465' 260240  002711'         PUSHJ   P,INFO          ;WRITE "FILES DELETED/RENAME\r
+\r
+                               ;*********************************************************************\r
+\r
+\r
+                               ;LOOP TO DELETE/RENAME. FOR (DX) DELETE FILES FROM DTA DIR\r
+                               ;THEN USE REVISED DIRECTORY TO COPY ALL REMAINING FILES\r
+\r
+\r
+       002466' 260240  002566' DELE3:  PUSHJ   P,LOOK          ;GET FILE TO DELETE OR RENAME FROM CS\r
+       002467' 254000  002513'         JRST    DELE5           ;NO MORE FILES\r
+       002470' 606300  002000          TRNN    FLAG,XFLG       ;/X?\r
+       002471' 260240  002743'         PUSHJ   P,INFO3         ;PRINT FILENAME-EXT\r
+       002472' 200040  004012'         MOVE    T1,DIRST        ;GOT A MATCH - PROCESS IT\r
+       002473' 602300  000100          TRNE    FLAG,RFLG       ;AND IT IS AT (T5) IN (DTA) DIR\r
+       002474' 254000  002522'         JRST    DTRNAM          ;RENAME\r
+                               IFN WCH,<\r
+                                       SKIPA   T2,T1\r
+                                       ADDI    T2,4\r
+                                       SKIPE   4(T2)\r
+                                       JRST    .-2\r
+                                       HRLS    T1\r
+                                       ADDI    T1,4            ;GET TO END OF NAMES\r
+                                       MOVSS   T1              ;BLOCK UP DIR\r
+                                       BLT     T1,-1(T2)       ;ZERO OUT LAST 4 WORDS\r
+                                       SETZM   (T2)\r
+                                       SETZM   1(T2)\r
+                                       SETZM   2(T2)\r
+                                       SETZM   3(T2)\r
+                                       MOVE    T1,DIRST1\r
+                                       MOVEM   T1,DIRST\r
+                                       JRST    DELE3>\r
+                               IFE WCH,<\r
+       002475' 402001  000000          SETZM   (T1)            ;DELETE FILENAME IN CORE DIRECT\r
+       002476' 402001  000026          SETZM   26(T1)          ;DELETE EXT\r
+       002477' 274040  004013'         SUB     T1,DIRST1       ;GET FILE "NUMBER" (POS IN DIRECT)\r
+       002500' 201140  001102          MOVEI   T3,1102         ;TO LOOK AT ALL BLOCKS\r
+       002501' 205100  440500          MOVSI   T2,(POINT 5,0)\r
+       002502' 540100  004013'         HRR     T2,DIRST1       ;TO CALCULATE ADDRESS OF FIRST WORD\r
+       002503' 275100  000122          SUBI    T2,122          ;OF BLOCK TABLE IN DIRECTORY\r
+       002504' 363140  002466' DELE2:  SOJLE   T3,DELE3        ;LOOK AT 1101 BLOCKS\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 51-1\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+       002505' 134000  000002          ILDB    0,T2            ;GET BLOCK NUMBER\r
+       002506' 312000  000001          CAME    0,T1            ;IS IT SAME AS FILE "NUMBER"\r
+       002507' 254000  002504'         JRST    DELE2           ;NO IGNORE\r
+       002510' 400000  000000          SETZ    0,              ;FREE THE BLOCKS OF THIS FILE\r
+       002511' 137000  000002          DPB     0,T2            ;CLEAR OUT BLOCK NUMBER\r
+       002512' 254000  002504'         JRST    DELE2>          ;LOOP ON 1102 BLOCKS\r
+       002513' 200040  003742' DELE5:  MOVE    T1,IBF          ;LOC OF INPUT BUFFER\r
+       002514' 602300  002000          TRNE    FLAG,XFLG       ;DX SWITCH?\r
+       002515' 254000  002543'         JRST    DTD6            ;YES, NOW MUST COPY REMAINING FILES\r
+                               IFN WCH,<\r
+                                       USETO   OUT,1>\r
+                               IFE WCH,<\r
+       002516' 075100  000144          USETO   OUT,144>\r
+       002517' 067101  000000          OUTPUT  OUT,(T1)        ;OUTPUT DTA DIRECTORY\r
+       002520' 071040  000000          RELEAS  CON,            ;OUTPUT DELETE OR RENAME INFO TO TTY\r
+       002521' 254000  000415'         JRST    MAINB\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 52\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                               ;ROUTINE TO RENAME FILE ON DECTAPE\r
+\r
+       002522' 260240  002553' DTRNAM: PUSHJ   P,RENAME\r
+       002523' 402000  004046'         SETZM   DTON+2          ;MAKE MONITOR SUPPLY\r
+       002524' 402000  004047'         SETZM   DTON+3          ;DATE TIME\r
+       002525' 076100  004044'         LOOKUP  OUT,DTON        ;LOOK UP FILENAME-EXT ON OUTPUT DEV\r
+       002526' 254000  002530'         SKIP    1               ;NO FILE ALREADY OF DESTINATION NAME\r
+       002527' 254000  002536'         JRST    DTRNM1\r
+       002530' 200000  004044'         MOVE    0,DTON          ;RENAME, FILENAME\r
+       002531' 322000  002466'         JUMPE   0,DELE3         ;BUT NOT IF ZERO\r
+       002532' 202001  000000          MOVEM   0,(T1)          ;PUT IN DIRECTORY\r
+       002533' 200000  004045'         MOVE    0,DTON+1        ;GET EXT\r
+                               IFE WCH,<\r
+       002534' 502001  000026          HLLM    0,26(T1)>       ;RENAME, EXT\r
+                               IFN WCH,<\r
+                                       HLLM    0,1(T1)>\r
+       002535' 254000  002466'         JRST    DELE3\r
+       002536' 550100  003742' DTRNM1: HRRZ    T2,IBF  ; GET PROTECTION DIR SLOT\r
+       002537' 135000  004704'         LDB     0,[POINT 5,17(T2),14]\r
+       002540' 302000  000036          CAIE    0,36            ; FILE PROTECTION ?\r
+       002541' 254000  001762'         JRST    ERR9            ; NO,ILLEGAL FILE NAME\r
+       002542' 254000  002466'         JRST    DELE3           ; RENAME DONE AT MAINB\r
+\r
+                               ;END OF LOOP\r
+                               ;*********************************************************************\r
+                               ;DX SWITCH ON, COPY ALL BUT SPECIFIED FILES. I.E. THOSE NOT DELETED\r
+\r
+       002543' 201040  000000  DTD6:   MOVEI   T1,0            ;SET TO RETURN TO DTCOPY\r
+       002544' 205000  120000  DTD5:   MOVSI   0,(SIXBIT /*/)\r
+       002545' 202000  004040'         MOVEM   0,FILNAM        ;FORCE COPY-ALL\r
+       002546' 202000  004041'         MOVEM   0,FILEX         ;BY MAKING FILE-EXT=*.*\r
+       002547' 260240  002746'         PUSHJ   P,FNSET         ;FIND DETAILS OF FILE-EXT\r
+       002550' 602540  020000          TRNE    AUXFLG,DTAIN    ;DTA INPUT\r
+       002551' 260240  003277'         PUSHJ   P,DTCH1         ;INIT DIRST,DIRST1\r
+                               IFN RIMSW,      <\r
+                                       TLNE    FLAG,RIMFLG     ;NO\r
+                                       JRST    RIMTB\r
+                                       >\r
+       002552' 254001  002224'         JRST    DTCOPY(T1)\r
+\r
+\r
+                               ;SET UP OUTPUT DIRECTORY ENTRY FOR RENAME\r
+                               ;ONLY ONE FILE NAME ALLOWED, BUT MAY BE *.EXT OR FN.*\r
+\r
+       002553' 331000  004134' RENAME: SKIPL   ESWTCH          ;SKIP IF CR,LF SEEN IN C.S.\r
+       002554' 254000  002040'         JRST    ERR6A           ;ONLY 1 SOURCE FILE DESCRIPTOR ALLOWED\r
+       002555' 554000  003767'         HLRZ    0,NAMTAB+1      ;GET EXT\r
+       002556' 306000  120000          CAIN    0,(SIXBIT /*/)  ;USE SPEC. EXTENSION, BUT IF\r
+       002557' 554000  004053'         HLRZ    0,ZRF+1         ;EXT.=*, USE SOURCE EXTENSION\r
+       002560' 506000  004045'         HRLM    0,DTON+1        ;USE SPECIFIED EXT\r
+       002561' 200100  003766'         MOVE    T2,NAMTAB       ;USE SPEC. FN, BUT IF\r
+       002562' 316100  003730'         CAMN    T2,STAR         ;FN=* OR 0, USE SOURCE FILENAME\r
+       002563' 200100  004052'         MOVE    T2,ZRF          ;SOURCE FILE NAME=DEST\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 52-1\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+       002564' 202100  004044'         MOVEM   T2,DTON         ;USE SPECIFIED FILENAME\r
+       002565' 263240  000000          POPJ    P,\r
+\r
+\r
+\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 53\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                               ;THIS ROUTINE GETS NEXT FILENAME.EXT FROM CS\r
+                               ;THEN SEES IF ONE IN DIRECTORY MATCHES\r
+                               ;IF IT DOES - EXIT IS CPOPJ1\r
+                               ;NO-MORE-FN.EX-TO-HANDLE-EXIT IS POPJ\r
+                               ;PREPARE ZRF FOR A "LOOKUP" ON THE NEXT REQUESTED FILE.\r
+\r
+       002566' 602740  000001  LOOK:   TRNE    CALFLG,FNEX     ;DOES FILNAM, FILEX CONTAIN\r
+       002567' 254000  002572'         JRST    LOOK6           ;A FILE TO THINK ABOUT? YES\r
+       002570' 260240  002767' LOOK01: PUSHJ   P,LOOKA         ;GET ONE (NOTE: DEVICE MAY ALTER)\r
+       002571' 263240  000000          POPJ    P,              ;NONE, END OF CS\r
+                                                               ;RETURN SKIP FROM LOOKA\r
+       002572' 200100  004041' LOOK6:  MOVE    T2,FILEX        ;GET FILE EXT INTO T2\r
+       002573' 336040  004040'         SKIPN   T1,FILNAM       ;FILNAME AND EXT=0?\r
+       002574' 332100  004041'         SKIPE   T2,FILEX\r
+       002575' 254000  002577'         SKIP    1               ;EITHER FN OR EX N.E.0\r
+       002576' 254000  002650'         JRST    LOOK7C          ;FN.EX=0, ONE FILE COPY\r
+       002577' 312040  003730'         CAME    T1,STAR         ;FILNAME OR EXT=*?\r
+       002600' 316100  003730'         CAMN    T2,STAR\r
+       002601' 254000  002640'         JRST    LOOK7A          ;FN OR EX=*, MANY FILES \r
+\r
+       002602' 602540  060000          TRNE    AUXFLG,DTAIN+DSKIN      ;DONT REQUIRE FILENAME\r
+       002603' 322040  002616'         JUMPE   T1,LOOK6C       ;HERE FOR 0.EX,FN.EX OR FN.0,0.EX ILLEGAL\r
+       002604' 620740  000001  LOOK7B: TRZ     CALFLG,FNEX     ;IF HERE, ONLY ONE FILE WAS ENTAILED IN REQUEST.\r
+       002605' 606540  060000          TRNN    AUXFLG,DTAIN+DSKIN\r
+       002606' 254000  002635'         JRST    LOOK4           ;GOT A FILE TO HANDLE\r
+\r
+       002607' 260240  002662' LOOK8:  PUSHJ   P,PICUP         ;GET A FILE (ANY) FROM DIRECTORY\r
+       002610' 254000  002623'         JRST    LOOK2           ;WE GOT A FILE, DOES IT MATCH?\r
+       002611' 622740  000001          TRZE    CALFLG,FNEX     ;SEE IF A PARTIC. FILE WAS REQUESTED?\r
+       002612' 254000  002620'         JRST    LOOK6D          ;NO\r
+       002613' 254000  002616'         JRST    LOOK6C          ;YES\r
+\r
+       002614' 260240  002005' LOOK6A: PUSHJ   P,ERR3A\r
+       002615' 254000  001107'         JRST    IOERRN          ;NO RECOVERY\r
+       002616' 260240  002005' LOOK6C: PUSHJ   P,ERR3A\r
+       002617' 254000  002570'         JRST    LOOK01          ;GET NEXT FILE FROM CS\r
+\r
+       002620' 626740  000040  LOOK6D: TRZN    CALFLG,ASTFLG   ;DID WE FIND AT LEAST ONE\r
+       002621' 260240  002005'         PUSHJ   P,ERR3A         ;NO, PRINT MSG.\r
+       002622' 254000  002566'         JRST    LOOK            ;GET NEXT FILE FROM CS\r
+                               ;CHECK IF FILE.EXT IN DIRECTORY MATCHES FILE TO /D,/R\r
+                               ;NOTE WE MAY HAVE *.EXT,FIL.*, OR *.*\r
+\r
+\r
+       002623' 606740  000004  LOOK2:  TRNN    CALFLG,MATFN    ;SHOULD FILENAMES MATCH\r
+       002624' 254000  002630'         JRST    LOOK3           ;NO\r
+       002625' 200040  004040'         MOVE    T1,FILNAM       ;YES\r
+       002626' 312040  004052'         CAME    T1,ZRF\r
+       002627' 254000  002607'         JRST    LOOK8           ;NO MATCH\r
+\r
+       002630' 606740  000002  LOOK3:  TRNN    CALFLG,MATEX    ;SHOULD EXTENSIONS MATCH\r
+       002631' 254000  002635'         JRST    LOOK5           ;NO\r
+       002632' 200040  004041'         MOVE    T1,FILEX        ;YES\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 53-1\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+       002633' 312040  004053'         CAME    T1,ZRF+1\r
+       002634' 254000  002607'         JRST    LOOK8           ;NO MATCH\r
+                               LOOK5:  IFN DISK30,<\r
+                                       TRNN    AUXFLG,DSKIN    ;DSK INPUT?\r
+                                       JRST    LOOK4           ;NO\r
+                                       LDB     T1,UFDIN+1      ;PICKUP P-P# IN DIRECTORY\r
+                                       HRRZM   T1,T2\r
+                                       CAME    T2,MASK         ;COMPARE WITH OWN P-P#\r
+                                       JRST    LOOK8           ;NO MATCH>\r
+       002635' 660540  002000  LOOK4:  TRO     AUXFLG,READ1    ;READY FOR FIRST READ\r
+       002636' 660740  000040          TRO     CALFLG,ASTFLG   ;FOUND A FILE *.EXT, F.*,*.*\r
+       002637' 254000  001707'         JRST    CPOPJ1          ;MATCH OR NO CARES\r
+\r
+                               ;FILENAME OR EXT=*\r
+       002640' 322100  002642' LOOK7A: JUMPE   T2,.+2          ;EXT=0?\r
+       002641' 316100  003730'         CAMN    T2,STAR         ;NO,\r
+       002642' 312040  003730'         CAME    T1,STAR\r
+       002643' 254000  002645'         SKIP    1\r
+       002644' 254000  002655'         JRST    LOOK1           ;*.* ALWAYS O.K. AND *\r
+       002645' 606540  060000          TRNN    AUXFLG,DSKIN+DTAIN\r
+       002646' 254000  002614'         JRST LOOK6A     ;*.A OR * ON NON-DIRECT DEV\r
+       002647' 254000  002607'         JRST    LOOK8\r
+\r
+       002650' 602540  060000  LOOK7C: TRNE    AUXFLG,DSKIN+DTAIN\r
+       002651' 254000  002616'         JRST    LOOK6C          ;0.0 ON DIR DEVICE\r
+       002652' 402000  004052'         SETZM   ZRF\r
+       002653' 402000  004053'         SETZM   ZRF+1\r
+       002654' 254000  002604'         JRST    LOOK7B          ;0.0 ON NON-DIR. DEV.\r
+\r
+       002655' 602540  060000  LOOK1:  TRNE    AUXFLG,DTAIN+DSKIN\r
+       002656' 254000  002607'         JRST    LOOK8\r
+       002657' 402000  004052'         SETZM   ZRF\r
+       002660' 402000  004053'         SETZM   ZRF+1\r
+       002661' 254000  002635'         JRST    LOOK4\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 54\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                               ;ROUTINE TO GET NEXT FILE NAME FROM DIRECTORY\r
+                               ;FILNAM, FILEX CONTAIN THE FILE NAME. EXT TO BE\r
+                               ;MATCHED WITH DIR. NAMES. PUT SUGGESTED FILE\r
+                               ;NAME EXT IN ZRF, ZRF+1 AND #P-P IN ZRF+3\r
+                               ;NOTE THAT WE HAVE TO HANDLE *.EXT,FILE.*\r
+\r
+       002662'                 PICUP:\r
+                               IFN FTDSK,<TRNN AUXFLG,DSKIN    ;DSK INPUT?\r
+                                       JRST    PICUP2          ;N0, DTA\r
+                                       SOSLE   UFDIN+2         ;YES\r
+                                       JRST    .+3\r
+                               PICUP1: PUSHJ   P,UIN           ;INPUT USER'S FILE DIRECTORY\r
+                                       JRST    CPOPJ1          ;EOF ON DSK\r
+                                       ILDB    0,UFDIN+1       ;PICK UP FILENAME\r
+                                       JUMPE   0,PICUP1        ;IGNORE NULL\r
+                                       MOVEM   0,ZRF           ;SET FILE NAME\r
+                                       MOVE    0,FNPPN\r
+                                       MOVEM   0,ZRF+3         ;SET DSK #P-P\r
+                                       SOS     UFDIN+2         ;COUNT DOWN FOR NEXT TIME\r
+                                       ILDB    0,UFDIN+1       ;SET FILE EX\r
+                                       HLLZM   0,ZRF+1\r
+                               IFN DISK30,<\r
+                                       IBP     UFDIN+1         ;INCREMENT POINTER TO GET PROJ,PROG #\r
+                                       IBP     UFDIN+1>\r
+                                       POPJ    P,>\r
+\r
+       002662'                 PICUP2:\r
+                               IFN WCH,<\r
+                                       MOVE    T5,DIRST        ;DIRST=LOC 4 FIRST TIME THRU\r
+                                       ADDI    T5,4            ;CALCULATE FIRST/NEXT FILENAME\r
+                                       MOVEM   T5,DIRST\r
+                                       MOVE    0,(T5)\r
+                                       JUMPE   0,CPOPJ1                ;NO MORE FILENAMES IN DIRECTORY\r
+                                       MOVEM   0,ZRF\r
+                                       MOVE    0,1(T5)>\r
+                               IFE WCH,<\r
+       002662' 200140  004013'         MOVE    T3,DIRST1       ;SETUP TO CHECK ALL FILENAME SLOTS\r
+       002663' 271140  000026          ADDI    T3,26           ;IN DIRECTORY (22 FILE NAMES)\r
+       002664' 200440  004012'         MOVE    T5,DIRST        ;LOC OF FIRST/NEXT FILE\r
+       002665' 271440  000001  PICUP4: ADDI    T5,1            ;\r
+       002666' 313440  000003          CAMLE   T5,T3           ;END OF FILE SLOTS?\r
+       002667' 254000  001707'         JRST    CPOPJ1          ;END OF FILE NAMES\r
+       002670' 202440  004012'         MOVEM   T5,DIRST        ;NEXT SLOT TO LOOK AT\r
+       002671' 200011  000000          MOVE    0,(T5)          ;GOT FILE NAME FROM DIRECT\r
+       002672' 322000  002665'         JUMPE   0,PICUP4        ;IGNORE IF 0\r
+       002673' 202000  004052'         MOVEM   0,ZRF\r
+       002674' 200011  000026          MOVE    0,26(T5)>       ;GET EXT ETC\r
+       002675' 512000  004053'         HLLZM   0,ZRF+1\r
+       002676' 200000  004043'         MOVE    0,PP\r
+       002677' 202000  004055'         MOVEM   0,ZRF+3\r
+       002700' 263240  000000          POPJ    P,\r
+\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 55\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                               ;READ DTA DIR. AND PREPARE T5 TO PICK UP FIRST ENTRY.\r
+\r
+       002701' 260240  003272' DTADIR: PUSHJ   P,DTCH2         ;READ DTA DIR INTO INPUT BUF\r
+       002702' 201140  004400' DTADI1: MOVEI   T3,DBUF         ;SET BLT FROM INBUF TO DBUF\r
+       002703' 504140  000011          HRL     T3,T5           ;FIRST DATA WORD OF DIRECTORY IN T5\r
+                               IFN WCH,<\r
+                                       MOVNS   T2\r
+                                       BLT     T3,DBUF+176(T2)\r
+                                       SETZM   DBUF+177(T2)\r
+                                       MOVEI   T5,DBUF-4>\r
+                               IFE WCH,<\r
+       002704' 251140  004576'         BLT     T3,DBUF+176     ;MOVE FROM INBUF TO DBUF\r
+       002705' 201440  004522'         MOVEI   T5,DBUF+123-1>  ;LOC OF FIRST FILE NAME\r
+       002706' 202440  004012'         MOVEM   T5,DIRST        ;T5 POINTS TO FILNAME JUST HANDLED\r
+       002707' 202440  004013'         MOVEM   T5,DIRST1       ;TO RESTORE DIRST\r
+       002710' 263240  000000          POPJ    P,              ;(IE NONE BUT NEXT WILL BE FIRST)\r
+\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 56\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+\r
+                               ;ROUTINE TO OUTPUT FILENAMES THAT WERE DELETED OR RENAMED\r
+                               ;PRINT "FILES DELETED:" OR "FILES RENAMED:"\r
+                               ;ALSO USED TO PRINT "NO FILE NAMED XXX.XXX"\r
+\r
+\r
+       002711' 200040  003756' INFO:   MOVE    T1,TFO          ;SETUP TTY FOR OUTPUT\r
+       002712' 200100  003753'         MOVE    T2,TFI          ;SAVE BUFFER LOCS\r
+       002713' 260240  001410'         PUSHJ P,INICON          ;INIT TTY\r
+       002714' 562100  003753'         HRROM   T2,TFI          ;SET BUFFER LOCS\r
+       002715' 562040  003756'         HRROM   T1,TFO\r
+       002716' 067040  000000          OUTPUT CON,\r
+       002717' 623540  000100          TLZE    AUXFLG,INFOFL   ;ERROR PRINT ONLY?\r
+       002720' 254000  002007'         JRST    ERR3AA          ;YES\r
+       002721' 606300  000010          TRNN    FLAG,DFLG       ;DELETE?\r
+       002722' 254000  002730'         JRST    INFO1           ;NO, MUST BE RENAME\r
+       002723' 265040  002166'         ERRPN2  </Files deleted:/>\r
+       002724' 433235  462746\r
+       002725' 203114  566312\r
+       002726' 723134  435000\r
+       002727' 254000  002735'         JRST    INFO2\r
+       002730' 476000  004651' INFO1:  SETOM   RENSN           ;DON'T PRINT IT TWICE\r
+       002731' 265040  002166'         ERRPN2  </Files renamed:/>      ;RENAME (/R)\r
+       002732' 433235  462746\r
+       002733' 203454  567302\r
+       002734' 667134  435000\r
+       002735' 201200  000015  INFO2:  MOVEI   CHR,CR          ;OUTPUT CR/LF\r
+       002736' 260240  002175'         PUSHJ   P,PUTCON        ;ON TTY\r
+       002737' 201200  000012          MOVEI   CHR,LF\r
+       002740' 260240  002175'         PUSHJ   P,PUTCON\r
+       002741' 067040  000000          OUTPUT CON,\r
+       002742' 263240  000000          POPJ    P,\r
+\r
+                               ;**********************************************************************\r
+                               ;PRINT FILENAME.EXT OR [P,P].UFD OF FILE DELETED\r
+\r
+       002743' 201140  004052' INFO3:  MOVEI   T3,ZRF          ;LOCATION OF FILENAME\r
+       002744' 260240  001146'         PUSHJ   P,FN.EX\r
+       002745' 254000  002735'         JRST    INFO2\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 57\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                               ;/X OR /D. FIND OUT DETAILS OF FILE NAME AND\r
+                               ;EXTENSION (0 FN.EX=*.*) AND ANY CHANGE IN\r
+                               ;SOURCE DEV. SET BITS IN CALFLG.\r
+\r
+       002746' 620740  000037  FNSET:  TRZ     CALFLG,ALLCLF   ;CLEAR FLAGS ON ENTRY\r
+       002747' 660740  000001          TRO     CALFLG,FNEX\r
+       002750' 205000  120000          MOVSI   0,(SIXBIT /*/)  ;* TO AC0\r
+       002751' 312000  004040'         CAME    0,FILNAM        ;FILNAM=* OR 0?\r
+       002752' 336000  004040'         SKIPN   FILNAM\r
+       002753' 254000  002755'         SKIP    1               ;FILENAME = * OR 0\r
+       002754' 660740  000004          TRO     CALFLG,MATFN    ;FILENAME MUST BE MATCHED\r
+       002755' 336000  004041'         SKIPN   FILEX           ;EXT=0?\r
+       002756' 606540  201500          TRNN    AUXFLG, MTAIN+CDRIN+PPTIN+TTYIN ;YES\r
+       002757' 316000  004041'         CAMN    0,FILEX         ;NO, EXT = *?\r
+       002760' 254000  002762'         SKIP    1               ;YES\r
+       002761' 660740  000002          TRO     CALFLG,MATEX    ;FILE EXTENSION MUST BE MATCHED\r
+                               IFN FTDSK,<TRNN    AUXFLG,DSKIN\r
+                                       JRST    FNSET1\r
+                                       SKIPN   T2,PP\r
+                                       JRST    FNSET2          ;IF #P-P=0 IT IS COUNTED AS UNCHANGED\r
+                                       CAME    T2,FNPPN\r
+                                       TRO     CALFLG,NEWPP    ;CHANGE IN # P-P\r
+                                       JRST    FNSET1\r
+                               FNSET2: MOVE    T2,FNPPN        ;IF P-P#=0, SET TO PREVIOUS VALUE\r
+                                       MOVEM   T2,PP>\r
+       002762' 200100  004637' FNSET1: MOVE    T2,DEVICE\r
+       002763' 312100  004050'         CAME    T2,DEVA\r
+       002764' 660740  000010          TRO     CALFLG,NEWDEV   ;CHANGE IN SOURCE DEV.\r
+       002765' 202100  004050'         MOVEM   T2,DEVA         ;SET DEVA=DEVICE\r
+       002766' 263240  000000          POPJ    P,\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 58\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                               ;POPJ EXIT IF END OF COMMAND STRING, OTHERWISE RESET\r
+                               ;POINTER TO START OF DIRECTORY, READING IN NEW DIR.\r
+                               ;IF DEV OR #P-P CHANGED (EXIT CPOPJ1)\r
+                               ;IF DIR. IS ON DSK RESET BY REINIT.\r
+\r
+       002767' 332340  004134' LOOKA:  SKIPE   T4,ESWTCH               ;MORE C.S.?\r
+       002770' 263240  000000          POPJ    P,                      ;NO\r
+       002771' 260240  000451'         PUSHJ   P,DESCRP                ;YES, GET NEXT FN.EX FROM CS\r
+       002772' 260240  000204'         PUSHJ   P,INLOOK                ;CHECK FOR MTA REQUESTS, MODE\r
+       002773' 260240  000154'         PUSHJ   P,M4                    ;CHECK FOR /I,/B,/H\r
+       002774' 552340  004636'         HRRZM    T4,ININI1              ;SET MODE\r
+       002775' 071240  000000          RELEAS  DIR,\r
+       002776' 606540  201500          TRNN    AUXFLG,MTAIN+CDRIN+PPTIN+TTYIN  ;NON-DIR DEVICE?\r
+       002777' 254000  003002'         JRST    LOOKF\r
+\r
+       003000' 602740  000006          TRNE    CALFLG,MATEX!MATFN      ;YES, NO FN EX BUT *.* OR * ALLOWED\r
+       003001' 254000  002040'         JRST    ERR6A\r
+\r
+       003002' 606300  000010  LOOKF:  TRNN    FLAG,DFLG               ;FOR DELETE, ONE SOURCE FILE\r
+       003003' 254000  003006'         JRST    LOOKB                   ;...\r
+\r
+       003004' 602740  000030          TRNE    CALFLG,NEWDEV!NEWPP     ;ONLY IS PERMITTED\r
+       003005' 254000  002060'         JRST    ERR5A\r
+\r
+       003006' 606740  000030  LOOKB:  TRNN    CALFLG,NEWDEV!NEWPP     ;PREPARE TO LOOK FOR NEW FILE\r
+       003007' 254000  003014'         JRST    LOOKC                   ;NAME AT HEAD OF DIRECTORY\r
+\r
+       003010' 260240  000426'         PUSHJ   P,ININIT                ;INIT INPUT FILE\r
+       003011' 606540  060000          TRNN    AUXFLG,DTAIN+DSKIN\r
+       003012' 254000  001707'         JRST    CPOPJ1\r
+                               IFN FTDSK,<TRNN AUXFLG,DTAIN            ;DTA INPUT?\r
+                                       JRST    LOOKD                   ;NO, MUST BE DSK>\r
+       003013' 260240  002701'         PUSHJ   P,DTADIR                ;YES, READ IN DTA DIRECT\r
+\r
+       003014'                 LOOKC:\r
+                               IFN FTDSK,<TRNE    AUXFLG,DSKIN         ;DSK INPUT?\r
+                                       JRST    LOOKD                   ;YES>\r
+       003014' 200440  004013'         MOVE    T5,DIRST1               ;NO, RESET DIRECTORY START\r
+       003015' 202440  004012'         MOVEM   T5,DIRST\r
+       003016' 254000  001707'         JRST    CPOPJ1\r
+\r
+                               IFN FTDSK,<\r
+                               LOOKD:  PUSHJ   P,DSKDIR                ;GET USER'S FILE DIRECTORY\r
+                                       SETZM   UFDIN+2                 ;DSK DIR BUF EMPTY\r
+                                       JRST    CPOPJ1>\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 59\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                               ;ROUTINE TO LIST DTA OR DSK DIRECTORIES\r
+\r
+\r
+       003017' 077100  004044' DTPDIR: ENTER   OUT,DTON        ;OUTPUT DEV,NROCT ENTRY\r
+       003020' 254000  002024'         JRST    ERR4            ;DIRECTORY FULL\r
+                               IFN FTDSK,<TRNE    AUXFLG,FFLG  ;/F? SHORT FORM?\r
+                                       SKIPE   DEVICE          ;INPUT DEVICE SPECIFIED?\r
+                                       JRST    PDIR1A          ;YES\r
+                                       MOVSI   0,(SIXBIT/DSK/)\r
+                                       DEVCHR\r
+                                       JUMPE   0,PDIR1A        ;NO DISK\r
+                                       HRRZI   0,(SIXBIT /DSK/);ASSUME DSK IF NO DEVICE GIVEN\r
+                                       HRLZM   0,DEVICE\r
+                                       TROA   AUXFLG,DSKIN     ;SET DSK INPUT\r
+                               PDIR1A: TRNE    AUXFLG,DSKIN    ;DSK INPUT?\r
+                                       JRST    DSKLST          ;YES, GO AND TRY TO LIST DSK>\r
+       003021' 606540  020000          TRNN    AUXFLG,DTAIN    ;DECTAPE INPUT?\r
+       003022' 254000  002066'         JRST    ERR5            ;NOT DSK OR DTA. ERROR\r
+\r
+                               ;ROUTINE TO LIST DTA DIRECTORY. /L OR /F SWITCH\r
+\r
+       003023' 260240  003271' DTALST: PUSHJ   P,DTCHECK       ;CHECK FOR DTA INPUT-MUST BE DECTAPE AND\r
+                                                               ;GET DIRECTORY\r
+       003024' 260240  003205'         PUSHJ   P,CRLF          ;PRINT NO. OF FREE BLOCKS LEFT\r
+       003025' 135040  004705'         LDB     T1,[POINT 5,16(T5),14]\r
+       003026' 302040  000036          CAIE    T1,36           ; SKIP DIR HEADER IF\r
+       003027' 254000  003070'         JRST    PDIR1B          ; DECTAPE HAS NO PROTECTION\r
+U      003030' 334040  004706'         LSTLIN  HEDL1           ; PRINT HEADER\r
+       003031' 260240  000756'\r
+       003032' 134200  000001\r
+       003033' 326200  003031'\r
+       003034' 200100  003736'         MOVE    T2,DTAID\r
+       003035' 322100  003055'         JUMPE   T2,DTALS4\r
+       003036' 201100  000005          MOVEI   T2,5            ; CHARACTER COUNT\r
+       003037' 200000  004707'         MOVE    0,[POINT 6,DTAID]\r
+       003040' 134200  000000          ILDB    CHR,0           ; GET CLASSIFICATION\r
+       003041' 302200  000023          CAIE    CHR,23          ; STD (I.E.=3) ?\r
+       003042' 344100  003052'         AOJA    T2,DTALS3\r
+       003043' 134200  000000  DTALS1: ILDB    CHR,0           ; GET NEXT DIGIT\r
+       003044' 271200  000040          ADDI    CHR,40          ; CONVERT TO ASCII\r
+       003045' 306200  000060          CAIN    CHR,"0"         ; SUPPRESS LEADING ZEROS\r
+       003046' 367100  003043'         SOJG    T2,DTALS1\r
+       003047' 260240  000756'         PUSHJ   P,PUT\r
+       003050' 363100  003055' DTALS2: SOJLE   T2,DTALS4\r
+       003051' 134200  000000          ILDB    CHR,0\r
+       003052' 271200  000040  DTALS3: ADDI    CHR,40\r
+       003053' 260240  000756'         PUSHJ   P,PUT\r
+       003054' 254000  003050'         JRST    DTALS2\r
+       003055' 201200  000133  DTALS4: MOVEI   CHR,"["\r
+       003056' 260240  000756'         PUSHJ   P,PUT\r
+       003057' 554640  003737'         HLRZ    DOUT,DIRPPN\r
+       003060' 260240  003260'         PUSHJ   P,OUTDEC\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 59-1\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+       003061' 201200  000054          MOVEI   CHR,","\r
+       003062' 260240  000756'         PUSHJ   P,PUT\r
+       003063' 550640  003737'         HRRZ    DOUT,DIRPPN\r
+       003064' 260240  003260'         PUSHJ   P,OUTDEC\r
+       003065' 201200  000135          MOVEI   CHR,"]"\r
+       003066' 260240  000756'         PUSHJ   P,PUT\r
+       003067' 260240  003205'         PUSHJ   P,CRLF\r
+       003070'                 PDIR1B:\r
+\r
+                               IFN WCH,<\r
+                                       MOVE    T1,IBF\r
+                                       HLRZ    DOUT,1(T1)      ;GET FREE BLOCK POINTER\r
+                                       MOVNS   DOUT\r
+                                       ADDI    DOUT,1101       ;GET NO. OF FREE BLOCKS LESS FREE BLOCK NO.\r
+                                       PUSHJ   P,OUTDEC        ;PRINT RESULT>\r
+                               IFE WCH,<\r
+       003070' 400640  000000          SETZ   DOUT,            ;CLEAR NO. FREE BLOCKS\r
+       003071' 201340  001102          MOVEI   T4,1102         ;OCTAL NO. OF BLOCKS ON DECTAPE\r
+       003072' 205040  440500          MOVSI   T1,(POINT 5,0)  ;5 BIT BYTES\r
+       003073' 550440  003742'         HRRZ    T5,IBF          ;CURRENT INPUT BUFFER\r
+       003074' 271051  000001          ADDI    T1,1(T5)        ;POINTER TO 1ST DATA WORD IN DIRECT\r
+\r
+\r
+       003075' 363340  003101' PDIR8:  SOJLE   T4,PDIR1        ;ALL THROUGH?\r
+       003076' 134140  000001          ILDB    T3,T1           ;CALCULATE NO. OF FREE BLOCKS\r
+       003077' 326140  003075'         JUMPN   T3,PDIR8\r
+\r
+                                                               ;THIS BLOCK FULL\r
+       003100' 344640  003075'         AOJA    DOUT,PDIR8      ;COUNT NO. WITH ZERO IN\r
+       003101' 260240  003260' PDIR1:  PUSHJ   P,OUTDEC        ;PRINT RESULT>\r
+       003102' 200000  004710'         MOVE    0,[POINT 6,PDIR7]\r
+       003103' 201100  000022          MOVEI   T2,^D18         ;SET LOOP TO DEPOSIT 18 CHARS\r
+       003104' 260240  003211'         PUSHJ   P,PDIR2         ;PRINT "FREE BLOCKS LEFT" MESSAGE\r
+       003105' 260240  003205'         PUSHJ   P,CRLF          ;CARRIAGE RET, LINEFEED\r
+       003106' 260240  003277'         PUSHJ   P,DTCH1         ;FIX T5, TO POINT AT BEGIN OF DIR\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 60\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                               ;LOOP TO EXAMINE FILE NAMES DTA DIRECTORY\r
+       003107'                 PDIR4:\r
+                               IFE WCH,<\r
+       003107' 336011  000123          SKIPN   123(T5)         ;NULL (=0) FILE NAME?\r
+       003110' 254000  003200'         JRST    PDIR6           ;YES SO LOOK FOR ANOTHER>\r
+                               IFN WCH,<\r
+                                       SKIPN   (T5)            ;NULL (=0) FILE NAME?\r
+                                       JRST    MAIN1           ;YES, SO END OF DIR.>\r
+       003111' 201100  000006          MOVEI   T2,6            ;TRANSMIT UP TO 6 CHARACTERS\r
+       003112' 205000  440611          MOVSI   0,440600+T5     ;SET UP SOURCE BYTE POINTER\r
+                               IFE WCH,<\r
+       003113' 541000  000123          HRRI    0,123>          ;SET TO PICK UP FILE NAME\r
+       003114' 400340  000000          SETZ   T4,\r
+                               ;FOLLOWING CODE TO OUTPUT PROJ, PROG FILENAME\r
+                               ;*****************************************************************\r
+                               IFE WCH,<\r
+       003115' 554211  000151          HLRZ    CHR,151(T5)     ;GET EXT\r
+       003116' 302200  654644          CAIE    CHR,(SIXBIT/UFD/)       ;UFD?\r
+       003117' 254000  003130'         JRST    PDIR4A          ;NO\r
+\r
+       003120' 554651  000123          HLRZ    DOUT,123(T5)    ;PROJ NO.\r
+       003121' 201100  000756'         MOVEI   T2,PUT\r
+       003122' 260240  003235'         PUSHJ   P,OUTDC1\r
+\r
+       003123' 201200  000054          MOVEI   CHR,COMMA       ;COMMA\r
+       003124' 260240  000756'         PUSHJ   P,PUT\r
+\r
+       003125' 550651  000123          HRRZ    DOUT,123(T5)    ;PROG NO.\r
+       003126' 260240  003235'         PUSHJ   P,OUTDC1\r
+       003127' 254000  003131'         JRST    PDIR4B\r
+                                       >\r
+                               ;*********************************************************************\r
+       003130' 260240  003211' PDIR4A: PUSHJ   P,PDIR2         ;OUTPUT 6-BIT DATA AND INCR DIRECTORY PTR\r
+                               IFE WCH,<\r
+       003131' 510211  000151  PDIR4B: HLLZ    CHR,151(T5)>    ;PICK UP EXTENSION\r
+                               IFN WCH,<\r
+                                       HLLZ    CHR,(T5)>\r
+       003132' 205000  440611          MOVSI   0,440600+T5     ;SET BYTE POINTER\r
+                               IFE WCH,<\r
+       003133' 541000  000151          HRRI    0,151>          ;PICK UP EXTENSION\r
+       003134' 201100  000004          MOVEI   T2,4            ;PRINT UP TO 4 CHRS. (PERIOD+3*EXT)\r
+       003135' 326200  003140'         JUMPN   CHR,.+3         ;EXTENSION NULL?\r
+       003136' 260240  003214'         PUSHJ   P,PDIR2A+1      ;YES\r
+       003137' 254000  003142'         SKIP    2               ;NO\r
+       003140' 201200  000016          MOVEI   CHR,PERIOD-40   ;NO, SO PRINT A PERIOD\r
+       003141' 260240  003213' PDIR3:  PUSHJ   P,PDIR2A        ;OUTPT 6 BIT OR INCR T5\r
+                               IFE WCH,<\r
+       003142' 201200  000040          MOVEI   CHR,SPACE       ;OUTPUT 2 SPACES\r
+       003143' 260240  000756'         PUSHJ   P,PUT\r
+       003144' 260240  000756'         PUSHJ   P,PUT\r
+       003145' 602540  000020          TRNE AUXFLG,FFLG        ;SHORT FORM DIRECT ?\r
+       003146' 254000  003177'         JRST PDIR3A             ;YES VJC 4/16/69\r
+\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 60-1\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+       003147' 400640  000000          SETZ    DOUT,           ;CALCULATE NBR OF BLOCKS PER FILE\r
+       003150' 201340  001101          MOVEI   T4,1101\r
+       003151' 205000  440500          MOVSI   0,(POINT 5,0)\r
+       003152' 550100  003742'         HRRZ    T2,IBF\r
+       003153' 271002  000001          ADDI    0,1(T2)\r
+       003154' 550600  000011          HRRZ    T7,T5\r
+       003155' 275602  000000          SUBI    T7,(T2)\r
+       003156' 134500  000000          ILDB    T6,0            ;LOAD CONTENTS OF S.A.T. BLOCK\r
+       003157' 316500  000014          CAMN    T6,T7           ;COMPARE WITH FILE SLOT NBR\r
+       003160' 271640  000001          ADDI    DOUT,1          ;ADD 1 TO COUNT IF EQUAL\r
+       003161' 367340  003156'         SOJG    T4,.-3\r
+       003162' 260240  003260'         PUSHJ   P,OUTDEC        ;OUTPUT NBR OF BLOCKS PER FILE\r
+       003163' 201200  000011          MOVEI   CHR,TAB\r
+                                       >\r
+                               IFN WCH,<\r
+                                       AOJ     T5,             ;STEP DIR. POINTER\r
+                                       MOVEI   CHR,11\r
+                                       PUSHJ   P,PUT           ;OUTPUT A TAB\r
+                                       CAIG    T4,7>\r
+       003164' 260240  000756'         PUSHJ   P,PUT\r
+       003165' 135040  004711'         LDB     T1,[POINT 5,DBUF+16,14]\r
+       003166' 302040  000036          CAIE    T1,36\r
+       003167' 254000  003174'         JRST    PDIR3B\r
+       003170' 550040  003742'         HRRZ    T1,IBF\r
+       003171' 276440  000001          SUBM    T5,T1\r
+       003172' 135000  004712'         LDB     0,[POINT 9,DBUF+200(T1),8]\r
+U      003173' 260240  000000*         PUSHJ   P,PROTO         ; OUTPUT PROTECTION\r
+       003174'                 PDIR3B:\r
+                               IFE WCH,<\r
+       003174' 200011  000151          MOVE    0,151(T5)       ;GET ENTRY DATE>\r
+                               IFN WCH,<\r
+                                       MOVE    0,-1(T5)        ;GET ENTRY DATE>\r
+       003175' 405000  007777          ANDI    0,7777          ;LEFT BITS ARE IRRELEVENT\r
+       003176' 260240  003224'         PUSHJ   P,DATOUT        ;OUTPUT THE DATE\r
+       003177' 260240  003205' PDIR3A: PUSHJ   P,CRLF          ;GIVE CR,LF 4/16/69\r
+                               IFN WCH,<\r
+                                       AOJA    T5,PDIR4        ;PROCESS NEXT ENTRY>\r
+                               IFE WCH,<\r
+       003200' 550040  003742' PDIR6:  HRRZ    T1,IBF          ;PROCESS NEXT ENTRY\r
+       003201' 276440  000001          SUBM    T5,T1\r
+       003202' 301040  000026          CAIL    T1,26           ;FILE "NUMBER" OK?\r
+       003203' 254000  000411'         JRST    MAIN1           ;NO, END OF ENTRIES\r
+       003204' 344440  003107'         AOJA    T5,PDIR4        ;END OF LOOP, GET NEXT FILENAME>\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 61\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+\r
+                               IFN FTDSK,<\r
+                               CLRF:   SOS     LIN>\r
+       003205' 201200  000015  CRLF:   MOVEI   CHR,CR          ;OUTPUT CAR. RET.\r
+       003206' 260240  000756'         PUSHJ   P,PUT\r
+       003207' 201200  000012          MOVEI   CHR,LF          ;LINE FEED\r
+       003210' 254000  000756'         JRST    PUT\r
+\r
+       003211' 134200  000000  PDIR2:  ILDB    CHR,0           ;ROUTINE TO OUTPUT 6-BIT DATA\r
+       003212' 606000  777777          TRNN    0,-1            ;PRINT SPACES WHEN PRINTING THE FREE BLOCKS\r
+       003213' 322200  003220' PDIR2A: JUMPE   CHR,PDIR21      ;TERMINATE ON SPACE\r
+       003214' 271200  000040          ADDI    CHR,40          ;CONVERT TO 7 BIT\r
+       003215' 260240  000756'         PUSHJ   P,PUT           ;OUTPUT CHARACTER\r
+       003216' 271340  000001          ADDI    T4,1\r
+       003217' 367100  003211'         SOJG    T2,PDIR2        ;COUNT DOWN MAX-CHARS COUNTER\r
+                               IFN WCH,<\r
+                               PDIR21: AOJA    T5,CPOPJ        ;STEP AND CONTINUE>\r
+                               IFE WCH,<\r
+       003220' 263240  000000  PDIR21: POPJ    P,              ;CONTINUE>\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 62\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+       003221' 160046  624545  PDIR7:  SIXBIT /. FREE BLOCKS LEFT/\r
+       003222' 004254  574353\r
+       003223' 630054  454664\r
+                               ;OUTPUT THE DATE FOUND IN AC 0.\r
+\r
+       003224' 201100  000756' DATOUT: MOVEI T2,PUT            ;PUT CHAR IN OUT\r
+       003225' 231000  000037          IDIVI 0,^D31\r
+       003226' 201141  000001          MOVEI T3,1(1)\r
+       003227' 231000  000014          IDIVI 0,^D12\r
+       003230' 200640  000003          MOVE DOUT,T3            ;DOUT=DAY\r
+       003231' 260240  003235'         PUSHJ P,OUTDC1          ;PRINT DAY\r
+       003232' 260240  003262'         PUSHJ P,DATO2           ;PRINT -MONTH-\r
+       003233' 200640  000000          MOVE DOUT,0\r
+       003234' 271640  000100          ADDI DOUT,^D64          ;DOUT=YEAR\r
+       003235' 334700  003731' OUTDC1: SKIPA DOUT+1,TWL        ;RADIX 10\r
+                               ;*******************************************************************\r
+                               ;ROUTINE TO CONVERT OCTAL TO ASCII\r
+                               ;DOUT CONTAINS OCTAL VALUE ON ENTRY\r
+\r
+       003236' 201700  000010  OUTOCT: MOVEI DOUT+1,10         ;RADIX 8\r
+       003237' 552700  000007  PRNUMA: HRRZM DOUT+1,T4\r
+       003240' 201200  000060          MOVEI CHR,"0"\r
+       003241' 315640  000016          CAMGE DOUT,DOUT+1       ;PRINT AT LEAST 2 DIGITS\r
+       003242' 260242  000000          PUSHJ P,(T2)            ;PUT OR PUTCON\r
+       003243' 231647  000000  PRN:    IDIVI DOUT,(T4)         ;DIVIDE BY RADIX\r
+       003244' 506705  000000          HRLM DOUT+1,(P)         ;SAVE NO. FOR PRINT\r
+       003245' 322640  003247'         JUMPE DOUT,.+2          ;ENUF DIGITS?\r
+       003246' 260240  003243'         PUSHJ P,PRN             ;NO, GET MORE\r
+       003247' 554205  000000          HLRZ CHR,(P)            ;YES, GET LEFTMOST\r
+       003250' 271200  000060          ADDI CHR,60             ;CONVERT TO ASCII\r
+       003251' 254002  000000          JRST (T2)               ;PUT OR PUTCON\r
+\r
+       003252' 201200  000040  OUTDE4: MOVEI   CHR," "         ;SET UP FOR SPACES\r
+       003253' 301640  001750          CAIL    DOUT,^D1000     ;PRINT 4 CHAR.\r
+       003254' 254000  003260'         JRST    OUTDEC          ;AT LEAST 4 SEEN\r
+       003255' 260240  000756'         PUSHJ   P,PUT           ;OUTPUT ONE SPACE\r
+       003256' 305640  000144          CAIGE   DOUT,^D100      ;3 CHAR.?\r
+       003257' 260240  000756'         PUSHJ   P,PUT           ;NO,SO ANOTHER SPACE\r
+       003260' 201100  000756' OUTDEC: MOVEI T2,PUT            ;PUT CHAR IN OUT BUF\r
+       003261' 254000  003235'         JRST OUTDC1\r
+\r
+       003262' 201340  000005  DATO2:  MOVEI T4,5\r
+       003263' 200500  004153'         MOVE T6,MNPT\r
+       003264' 272040  000012          ADDM 1,T6\r
+       003265' 134200  000012          ILDB CHR,T6\r
+       003266' 260242  000000          PUSHJ P,(T2)            ;PUT OR PUTCON\r
+       003267' 367340  003265'         SOJG T4,.-2\r
+       003270' 263240  000000          POPJ P,\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 63\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                               ;READ DTA DIRECTORY AND INITIALIZE DIRST AND DIRST1\r
+\r
+       003271' 260240  000426' DTCHECK:PUSHJ P,ININIT  ;INITIALIZE INPUT DEVICE\r
+       003272'                 DTCH2:\r
+                               IFN WCH,<\r
+                                       USETI IN,1      ;GET DTA DIR>\r
+                               IFE WCH,<\r
+       003272' 074140  000144          USETI IN,144    ;GET DTA DIR>\r
+       003273' 260240  001616'         PUSHJ P,INP     ;INPUT DIRECTORY\r
+       003274' 070140  000000          CLOSE   IN,\r
+       003275' 260240  003333'         PUSHJ   P,GETPPN        ; GET PPN OF DECTAPE\r
+       003276' 260240  000426'         PUSHJ   P,ININIT        ; REINITIALIZE INPUT DEVICE\r
+                               IFN WCH,<\r
+                               DTCH1:  MOVE T5,IBF\r
+                                       HRRZ T2,1(T5)\r
+                                       ADDI T5,1(T2)   ;GET ADD. OF FIRST ENTRY\r
+                                       MOVE 0,T5\r
+                                       SUBI 0,4>\r
+                               IFE WCH,<\r
+       003277' 550440  003742' DTCH1:  HRRZ T5,IBF     ;LOC. OF CURRENT BUF, 2ND WORD\r
+       003300' 201011  000123          MOVEI 0,123(T5) ;83 WORDS,7, FIVE-BIT BYTES\r
+       003301' 271440  000001          ADDI T5,1       ;COMPUTE ADD. OF DIR. START>\r
+       003302' 202000  004012'         MOVEM 0,DIRST   ;FIRST FILE NAME LOC\r
+       003303' 202000  004013'         MOVEM 0,DIRST1  ;TO RESTORE DIRST\r
+       003304' 263240  000000          POPJ P,\r
+\r
+                               ;ROUTINE TO CHECK BRACKET COUNT/MATCHING\r
+\r
+       003305' 403140  004025' OUTCHK: SETZB T3,TLBRKT ;COUNT <> ON THIS LINE, CLEAR THINGS\r
+       003306' 200040  003723'         MOVE T1,OPTRA   ;BYTE POINTER FOR READING OUT THE LINE\r
+       003307' 316040  004020' OUTCH2: CAMN T1,OPTR    ;LINE DONE?\r
+       003310' 254000  003320'         JRST OUTCH3     ;YES, SO DECIDE WHETHER TO PRINT\r
+       003311' 134100  000001          ILDB T2,T1      ;GET CHAR\r
+       003312' 306100  000074          CAIN T2,"<"     ;LEFT BRACKET?\r
+       003313' 350000  004025'         AOS TLBRKT      ;YES, SO INCREMENT BRACKET COUNT\r
+       003314' 306100  000076          CAIN T2,">"     ;RIGHT BRACKET?\r
+       003315' 371000  004025'         SOSL TLBRKT     ;YES, SUBTRACT BRACKET COUNT, GONE NEG?\r
+       003316' 254000  003307'         JRST OUTCH2     ;NO, SO DO NEXT CHAR\r
+       003317' 344140  003307'         AOJA T3,OUTCH2  ;YES, SO FLAG COUNT GONE NEG.\r
+\r
+       003320' 336100  004025' OUTCH3: SKIPN T2,TLBRKT ;BRACKET COUNT OFF THIS LINE?\r
+       003321' 322140  001711'         JUMPE T3,CPOPJ  ;NO, WENT NEG.?\r
+       003322' 272100  004026'         ADDM T2,TOTBRK  ;YES, SO ADD INTO CUMULATIVE COUNT\r
+       003323' 201200  000055          MOVEI CHR,"-"   ;PRINT MINUS FOR NEG TOTAL\r
+       003324' 335000  004026'         SKIPGE TOTBRK\r
+       003325' 260240  000756'         PUSHJ P,PUT\r
+       003326' 214640  004026'         MOVM DOUT,TOTBRK;PRINT MAGNITUDE OF TOTAL\r
+       003327' 260240  003260'         PUSHJ P,OUTDEC\r
+       003330' 201200  000011          MOVEI CHR,TAB   ;FOLLOW WITH TAB\r
+       003331' 260240  000756'         PUSHJ P,PUT\r
+       003332' 254000  000711'         JRST OUTCH1     ;AND PRINT THE LINE\r
+\r
+       003333' 201440  000117  GETPPN: MOVEI   T5,117  ; NON STD DUMP MODE\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 63-1\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+U      003334' 202440  000000*         MOVEM   T5,DTBLK\r
+       003335' 200440  004637'         MOVE    T5,DEVICE       ; GET INPUT DEVICE\r
+U      003336' 202440  000000*         MOVEM   T5,DTDEV\r
+U      003337' 050340  003334*         OPEN    DTDIR,DTBLK\r
+       003340' 263240  000000          POPJ    P,\r
+       003341' 074340  000144          USETI   DTDIR,144       ; READ BLOCK 100 AND\r
+       003342' 200440  004713'         MOVE    T5,[IOWD 227,DBUF]\r
+       003343' 201500  000000          MOVEI   T6,0\r
+       003344' 066340  000011          INPUT   DTDIR,T5        ; WORD 1 OF BLOCK 101.\r
+       003345' 200440  004577'         MOVE    T5,177+DBUF\r
+       003346' 202440  003736'         MOVEM   T5,DTAID\r
+       003347' 200440  004600'         MOVE    T5,200+DBUF\r
+       003350' 202440  003737'         MOVEM   T5,DIRPPN       ; SAVE PPN FOR LISTING\r
+       003351' 071340  000000          RELEASE DTDIR,\r
+       003352' 263240  000000          POPJ    P,\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 64\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+       003353' 612300  004672' FILTYP: TDNE FLAG,[XWD IFLG+IBFLG,BMOD]\r
+       003354' 263240  000000          POPJ P,                 ;BIN MODE DON'T CARE IF DMP, ETC\r
+       003355' 606540  060400          TRNN    AUXFLG,DSKIN!DTAIN!MTAIN        ;BINARY INPUT POSSIBLE?\r
+       003356' 254000  003365'         JRST    FIL11           ;NO\r
+       003357' 606540  014200          TRNN    AUXFLG,DSKOUT!DTAOUT!MTAOUT     ;BINARY OUTPUT?\r
+       003360' 254000  003365'         JRST    FIL11           ;NO\r
+       003361' 616300  004701'         TDNN    FLAG,[XWD PFLG,LINE!TBMOD!NSMOD!SQMOD!SPMOD]\r
+       003362' 603540  000040          TLNE    AUXFLG,CDRFLG   ;/E FROM DSK IS NOT BINARY\r
+       003363' 254000  003365'         JRST    FIL11           ;SO TURN OFF SBIN\r
+       003364' 254000  003414'         JRST    FIL3            ;FORCE BINARY MODE\r
+       003365' 621540  000004  FIL11:  TLZ AUXFLG,SBIN         ;IS\r
+       003366' 554000  004053'         HLRZ 0,ZRF+1            ; INPUT EXTENSION\r
+       003367' 302000  445560          CAIE 0,(SIXBIT /DMP/)   ;DMP?\r
+       003370' 306000  634166  IFE DISK30,<CAIN 0,(SIXBIT /SAV/)       ;SAV?>\r
+                               IFN DISK30,<CAIN 0,(SIXBIT/SVE/)>\r
+       003371' 254000  003414'         JRST FIL3               ;YES\r
+       003372' 302000  435056          CAIE 0,(SIXBIT /CHN/)   ;CHN?\r
+       003373' 306000  624554          CAIN 0,(SIXBIT /REL/)   ;REL?\r
+       003374' 254000  003414'         JRST FIL3               ;YES\r
+       003375' 302000  635062          CAIE    0,(SIXBIT /SHR/)\r
+       003376' 306000  504750          CAIN    0,(SIXBIT /HGH/)\r
+       003377' 254000  003414'         JRST    FIL3\r
+       003400' 302000  425156          CAIE    0,'BIN' ; GENERAL BINARY EXTENSION?\r
+       003401' 306000  545767          CAIN    0,(SIXBIT /LOW/)\r
+       003402' 254000  003414'         JRST    FIL3\r
+       003403' 606300  002000          TRNN FLAG,XFLG          ;DO NORMAL PROCESSING ON ALL\r
+       003404' 254000  003430'         JRST FIL2               ;BUT DMP ETC FILES IF NOT /X\r
+       003405' 607540  000040          TLNN AUXFLG,CDRFLG\r
+       003406' 612300  004701'         TDNE FLAG,[XWD PFLG,LINE+TBMOD+NSMOD+SQMOD+SPMOD]\r
+       003407' 263240  000000          POPJ P,                 ;NO SIGNIFICANT SWITCHES\r
+       003410' 515000  004400  FIL1:   HRLZI 0,004400          ;FORCE 36-BIT.\r
+       003411' 502000  003743'         HLLM 0,IBF+1            ;INPUT BYTE POINTER\r
+       003412' 502000  003746'         HLLM 0,OBF+1            ;OUTPUT BYTE POINTER\r
+       003413' 263240  000000          POPJ P,                 ;CHANGE TO FORCED BINARY\r
+       003414' 661540  000004  FIL3:   TLO AUXFLG,SBIN         ;INPUT EXT = DMP,SAV,CHN,REL\r
+       003415' 602300  002000          TRNE FLAG,XFLG\r
+       003416' 254000  003410'         JRST FIL1\r
+       003417' 667540  000400          TLON AUXFLG,FRSTIN      ;NOT /X TEST FURTHER\r
+       003420' 254000  003443'         JRST FIL4               ;IS THIS FIRST SOURCE, YES\r
+       003421' 663540  000200          TLOE AUXFLG,RSDCFL      ;NOT FIRST, WAS PREVIOS FILE RSCD?\r
+       003422' 254000  003445'         JRST    FIL5            ;YES, NO CHANGE UNLESS DEVICE HAS CHANGED\r
+       003423' 067100  000000          OUTPUT OUT,             ;NO CHANGE TO 36-BIT\r
+       003424' 200000  003747'         MOVE 0,OBF+2            ;CURRENTLY 7-BIT I/O, MUST CHANGE TO 36-BIT\r
+                                                               ;OUTPUT CURRENT BUFFER\r
+       003425' 231000  000005          IDIVI 0,5               ;DIVIDE OBF+2 BY 5 (CHAR. COUNT)\r
+       003426' 202000  003747'         MOVEM 0,OBF+2\r
+       003427' 254000  003410'         JRST FIL1\r
+       003430' 663540  000400  FIL2:   TLOE AUXFLG,FRSTIN      ;NOT A RSCD FILE\r
+       003431' 627540  000200          TLZN AUXFLG,RSDCFL      ;NO, WAS PREV. FILE RSCD?\r
+       003432' 263240  000000          POPJ P,                 ;NO, NO CHANGE\r
+       003433' 067100  000000          OUTPUT OUT,             ;YES, CHANGE 36-BIT TO 7-BIT\r
+       003434' 201000  000005          MOVEI 0,5\r
+       003435' 222000  003747'         IMULM 0,OBF+2\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 64-1\r
+PIP    MAC     24-APR-78 03:15         VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+       003436' 200000  003740'         MOVE 0,SVIBF            ;RESTORE 7-BIT\r
+       003437' 502000  003743'         HLLM 0,IBF+1\r
+       003440' 200000  003741'         MOVE 0,SVOBF\r
+       003441' 502000  003746'         HLLM 0,OBF+1\r
+       003442' 263240  000000          POPJ P,\r
+       003443' 661540  000200  FIL4:   TLO AUXFLG,RSDCFL       ;SET REL,SAV,DMP,CHN FLAG\r
+       003444' 254000  003410'         JRST FIL1\r
+       003445' 515000  004400  FIL5:   HRLZI 0,004400          ;NEW DEVICE, SET 36-BIT INPUT\r
+       003446' 602740  000010          TRNE CALFLG,NEWDEV      ;SOURCE DEVICE CHANGED\r
+       003447' 502000  003743'         HLLM 0,IBF+1\r
+       003450' 263240  000000          POPJ P,                 ;OUTPUT ALREADY SET\r
+\r
+\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 65\r
+PIP    MAC     24-APR-78 03:15         BLOCK 0 CODE\r
+\r
+                               SUBTTL BLOCK 0 CODE\r
+\r
+                               IFE BLOC0,<\r
+                               IFE WCH,<;THIS CODE COPIES BLOCK 0,1,2 ONLY. I/O MUST BE DECTAPE.>\r
+                               IFN WCH,<;THIS CODE COPIES BLOCK 0 ONLY. I/O MUST BE DECTAPE.>\r
+                               ;MODE SELECTED MUST BE BIT 100, 20 AND NOT DUMP MODE (134).\r
+\r
+       003451' 640540  024000  BLOCK0: TRC AUXFLG,DTAIN+DTAOUT\r
+       003452' 642540  024000          TRCE AUXFLG,DTAIN+DTAOUT;FORCE DTA I/O\r
+       003453' 254000  002115'         JRST ERR7A\r
+       003454' 201000  000134          MOVEI 0,134\r
+       003455' 202000  004633'         MOVEM 0,OMOD\r
+       003456' 202000  004636'         MOVEM 0,ININI1\r
+       003457' 205000  003745'         MOVSI 0,OBF\r
+       003460' 202000  004635'         MOVEM 0,ODEV+1\r
+       003461' 201000  003742'         MOVEI 0,IBF\r
+       003462' 202000  004640'         MOVEM 0,DEVICE+1\r
+       003463' 050100  004633'         OPEN OUT,OMOD\r
+       003464' 254000  001767'         JRST ERR1               ;UNAVAILABLE\r
+       003465' 065100  000001          OUTBUF  OUT,1\r
+       003466' 067100  000000          OUTPUT  OUT,\r
+       003467' 050140  004636'         OPEN IN,ININI1\r
+       003470' 254000  001770'         JRST ERR1A\r
+       003471' 064140  000001          INBUF IN,1\r
+       003472' 403040  003735'         SETZB T1,BL0CNT\r
+       003473' 074141  000000  BL4:    USETI IN,(T1)\r
+       003474' 066140  000000          INPUT IN,               ;READ\r
+       003475' 062140  000010          GETSTS IN,IOS\r
+       003476' 606400  740000          TRNN IOS,740000         ;ANY ERRORS\r
+       003477' 254000  003515'         JRST BL1                ;NO\r
+       003500' 265440  000542'         JSP T5,INICN2\r
+       003501' 260240  001652'         PUSHJ P,QUEST\r
+       003502' 265040  002166'         ERRPN2 </Input device />\r
+       003503' 447356  072750\r
+       003504' 203114  573322\r
+       003505' 617124  000000\r
+       003506' 260240  002201'         PUSHJ P,P6BIT\r
+       003507' 000000  004637'               DEVICE\r
+       003510' 265040  002166'         ERRPN2 </: />\r
+       003511' 351000  000000\r
+       003512' 200100  000013          MOVE T2,AUXFLG          ;DECTAPE FOR ERROR MESSAGE\r
+       003513' 405100  020000          ANDI T2,DTAIN\r
+       003514' 260240  001020'         PUSHJ P,IOERR           ;PRINT ERROR TYPE\r
+       003515' 514440  003743' BL1:    HRLZ T5,IBF+1\r
+       003516' 540440  003746'         HRR T5,OBF+1\r
+       003517' 201351  000177          MOVEI T4,177(T5)\r
+       003520' 251447  000000          BLT T5,(T4)             ;SHIFT DATA TO OUTPUT BUFFER\r
+       003521' 075120  003735'         USETO   OUT,@BL0CNT\r
+       003522' 067100  000000          OUTPUT OUT,             ;WRITE BLOCK\r
+       003523' 260240  000764'         PUSHJ P, OUTP1          ;CHECK ERRORS\r
+                               IFE WCH,<\r
+       003524' 350040  003735'         AOS T1,BL0CNT\r
+       003525' 305040  000003          CAIGE T1,3\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 65-1\r
+PIP    MAC     24-APR-78 03:15         BLOCK 0 CODE\r
+\r
+       003526' 254000  003473'         JRST BL4>\r
+       003527' 071100  000000  BL3:    RELEASE OUT,            ;IF ANY, PDL IS RESET\r
+       003530' 254000  000013'         JRST PIP2>\r
+\r
+                               IFN BLOC0,<\r
+                               BLOCK0: ERRPNT  </?No block 0 copy!/>\r
+                                               >\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 66\r
+PIP    MAC     24-APR-78 03:15         MAGTAPE ROUTINES\r
+\r
+                               SUBTTL  MAGTAPE ROUTINES\r
+\r
+                               ;TEST TO SEE IF MORE THAN ONE OF THE LOWEST EIGHT MTA FLAGS\r
+                               ;HAVE BEEN SELECTED. IF SO ERROR. OTHERWISE, IMPLEMENT\r
+                               ;REQUEST.  T1, T3, T6 SET AT ENTRY BY INLOOK OR OUTLOOK\r
+                               ;TO EQUAL AUX/AUXOUT, AB/ABOUT,INIMTA/INOMTA\r
+\r
+       003531' 550100  000001  MT1:    HRRZ T2,T1              ;T1 CONTAINS REQUEST\r
+       003532' 405102  777777          ANDI T2,-1(T2)          ;KNOCK OFF RIGHT MOST 1\r
+       003533' 602100  000377          TRNE T2,377\r
+       003534' 254000  003701'         JRST MTR1               ;PRINT ERROR MESSAGE\r
+\r
+       003535' 606040  000377          TRNN T1,MTAFLG+MTBFLG+MTWFLG+MTTFLG+MTFFLG+MTUFLG+MTDFLG+MTPFLG\r
+       003536' 254000  003562'         JRST MTC1\r
+       003537' 260252  000000          PUSHJ P,(T6)            ;THERE IS A  REQUEST\r
+                                                               ;GO TO INIMTA/INOMTA\r
+\r
+                               ;PERFORM POSITIONING REQUESTS\r
+       003540' 602040  000040          TRNE T1,MTUFLG\r
+       003541' 254000  003600'         JRST UNLOAD\r
+\r
+       003542' 602040  000010          TRNE T1,MTWFLG\r
+       003543' 254000  003602'         JRST REWIND\r
+\r
+       003544' 602040  000020          TRNE T1,MTFFLG\r
+       003545' 254000  003605'         JRST MARKEF\r
+\r
+       003546' 602040  000004          TRNE T1,MTTFLG\r
+       003547' 254000  003615'         JRST SLEOT\r
+\r
+       003550' 602040  000202          TRNE T1,MTBFLG+MTPFLG   ;MULTIPLE REQUESTS ALLOWED\r
+       003551' 254000  003617'         JRST BSPF\r
+\r
+       003552' 602040  000101          TRNE T1,MTAFLG+MTDFLG   ;MULTIPLE REQUESTS ALLOWED\r
+       003553' 254000  003653'         JRST ADVF\r
+\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 67\r
+PIP    MAC     24-APR-78 03:15         MAGTAPE ROUTINES\r
+\r
+                               ;T1=AUX,AUXOUT. T3=AB,ABOUT.  T6=INIMTA,INOMTA.\r
+\r
+       003554' 071200  000000  MTCONT: RELEAS TAPE,\r
+       003555' 606040  000040          TRNN T1,MTUFLG          ;UNLOAD?\r
+       003556' 602740  000400          TRNE CALFLG,NSWTCH      ;IS THERE AN INPUT DEVICE?\r
+       003557' 302500  003666'         CAIE T6,INOMTA          ;OUTPUT TAPE?\r
+       003560' 263240  000000          POPJ P,                 ;NO\r
+       003561' 254000  000013'         JRST PIP2               ;YES, END OF COMMAND\r
+\r
+                               ;ROUTINE TO CHECK AND SET DENSITY FOR NEW DEVICE\r
+\r
+       003562' 200340  000001  MTC1:   MOVE T4,T1              ;GET AUX/AUXOUT\r
+       003563' 405340  003400          ANDI T4,MT2FLG+MT5FLG+MT8FLG\r
+       003564' 405347  777777          ANDI T4,-1(T4)          ;REMOVE RIGHT MOST 1\r
+       003565' 326340  003701'         JUMPN T4,MTR1           ;MORE THAN 1 REQ, ERROR\r
+\r
+       003566' 201340  000001          MOVEI T4,1              ;ASCII LINE STANDARD MODE\r
+\r
+       003567' 602040  002000          TRNE T1,MT2FLG\r
+       003570' 660340  000200          TRO T4,DENS2            ;SET 200 BPI\r
+\r
+       003571' 602040  001000          TRNE T1,MT5FLG\r
+       003572' 660340  000400          TRO T4,DENS5            ;SET 556 BPI\r
+\r
+       003573' 602040  000400          TRNE T1,MT8FLG\r
+       003574' 660340  000600          TRO T4,DENS8            ;SET 800 BPI\r
+\r
+       003575' 602040  004000          TRNE T1,MTEFLG\r
+       003576' 660340  001000          TRO T4,PARE             ;EVEN PARITY\r
+\r
+       003577' 263240  000000          POPJ P,\r
+\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 68\r
+PIP    MAC     24-APR-78 03:15         MAGTAPE ROUTINES\r
+\r
+                               ;REWIND AND UNLOAD\r
+\r
+       003600' 072200  000011  UNLOAD: MTAPE TAPE,11\r
+       003601' 254000  003554'         JRST MTCONT\r
+\r
+                               ;REWIND ONLY\r
+\r
+       003602' 072200  000001  REWIND: MTAPE TAPE,1\r
+       003603' 072200  000000  MTWAIT: WAIT TAPE,\r
+       003604' 254000  003554'         JRST MTCONT\r
+\r
+\r
+\r
+\r
+                               ;MARK END OF FILE\r
+\r
+       003605' 200440  004645' MARKEF: MOVE T5,MTANAM\r
+       003606' 250440  004634'         EXCH T5,ODEV\r
+       003607' 072200  000003          MTAPE TAPE,3\r
+       003610' 062200  000010          GETSTS TAPE,IOS\r
+       003611' 260240  000772'         PUSHJ P,OUTP3\r
+       003612' 060210  000000          SETSTS TAPE,(IOS)\r
+       003613' 202440  004634'         MOVEM T5,ODEV\r
+       003614' 254000  003554'         JRST MTCONT\r
+\r
+\r
+\r
+\r
+                               ;SKIP TO LOGICAL END OF TAPE.\r
+\r
+       003615' 072200  000010  SLEOT:  MTAPE TAPE,10\r
+       003616' 254000  003603'         JRST MTWAIT\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 69\r
+PIP    MAC     24-APR-78 03:15         MAGTAPE ROUTINES\r
+\r
+                               ;BACKSPACE MTA 1 FILE, T3=AB OR ABOUT\r
+                               ;AB/ABOUT = INPUT/OUTPUT DEVICE\r
+\r
+       003617' 550140  000003  BSPF:   HRRZ T3,T3      ;T3=NO. OF FILES/RECORDS TO BACK\r
+       003620' 072200  000000  BSPF2:  WAIT TAPE,      ;WAIT\r
+       003621' 062200  000010          GETSTS TAPE,IOS\r
+       003622' 606400  004000          TRNN IOS,LDP    ;AT LOAD POINT?\r
+       003623' 254000  003637'         JRST BSPF3      ;NO LDP\r
+       003624' 265040  002155'         ERRPNT </?Load point before end of (MB) or (MP) request!/>\r
+       003625' 376315  760710\r
+       003626' 203415  764734\r
+       003627' 721014  262714\r
+       003630' 677454  520312\r
+       003631' 673104  067714\r
+       003632' 201211  541122\r
+       003633' 203376  220120\r
+       003634' 466405  120344\r
+       003635' 627436  562746\r
+       003636' 721020  000000\r
+       003637' 201440  000007  BSPF3:  MOVEI T5,7      ;BSPR\r
+       003640' 606040  000200          TRNN T1,MTPFLG  ;BSPR?\r
+       003641' 201440  000017          MOVEI T5,17     ;BSPF\r
+       003642' 072211  000000          MTAPE TAPE,(T5) ;BACKSPACE FILE/RECORD\r
+       003643' 365140  003620'         SOJGE T3,BSPF2  ;MORE FILES/RECORDS TO BSP?\r
+                                                       ;NO, END OF LOOP\r
+       003644' 072200  000000          WAIT TAPE,\r
+       003645' 062200  000010          GETSTS TAPE,IOS\r
+       003646' 606040  000002          TRNN T1,MTBFLG  ;BACKSPACE FILE?\r
+       003647' 254000  003554'         JRST MTCONT     ;NO\r
+       003650' 606400  004000          TRNN IOS,LDP    ;IF AT LOAD POINT\r
+       003651' 072200  000016          MTAPE TAPE,16   ;(MOVE FWD. OVER EOF)\r
+       003652' 254000  003554'         JRST MTCONT     ;DON'T SKIP A RECORD\r
+\r
+\r
+\r
+                               ;ADVANCE MTA 1 FILE, T3=AB OR ABOUT\r
+                               ;AB/ABOUT = INPUT/OUTPUT DEVICE\r
+\r
+       003653' 554140  000003  ADVF:   HLRZ T3,T3      ;T3=NO. FILES (OR REC) TO ADVANCE\r
+       003654' 201440  000006  ADVF2:  MOVEI T5,6      ;ADVR\r
+       003655' 606040  000100          TRNN T1,MTDFLG  ;ADVR ?\r
+       003656' 201440  000016          MOVEI T5,16     ;ADVF\r
+       003657' 072211  000000          MTAPE TAPE,(T5) ;ADVANCE FILE/RECORD\r
+       003660' 367140  003654'         SOJG T3,ADVF2   ;MORE FILES/RECORDS TO ADV?\r
+                                                       ;NO, END OF LOOP\r
+       003661' 072200  000000          WAIT TAPE,      ;WAIT...\r
+       003662' 062200  000010          GETSTS TAPE,IOS\r
+       003663' 622400  020000          TRZE IOS,EOFBIT\r
+       003664' 060210  000000          SETSTS TAPE,(IOS)       ;END OF FILE\r
+       003665' 254000  003554'         JRST MTCONT\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 70\r
+PIP    MAC     24-APR-78 03:15         MAGTAPE ROUTINES\r
+\r
+                               ;ROUTINE TO INITIALIZE MAGTAPE FOR INPUT OR OUTPUT\r
+\r
+       003666' 334100  004634' INOMTA: SKIPA T2,ODEV   ;INIT OUTPUT DEVICE\r
+       003667' 200100  004637' INIMTA: MOVE T2,DEVICE  ;INIT INPUT DEVICE\r
+       003670' 402000  004646'         SETZM MTANAM+1\r
+       003671' 202100  004645'         MOVEM T2,MTANAM\r
+       003672' 606740  000010          TRNN CALFLG,NEWDEV\r
+       003673' 254000  003676'         JRST INMTA      ;SAME DEVICE\r
+       003674' 260240  003562'         PUSHJ P,MTC1    ;NEW DEVICE\r
+       003675' 552340  004644'         HRRZM   T4,INMTA1       ;SET MODE,DENSITY,PARITY\r
+\r
+       003676' 050200  004644' INMTA:  OPEN TAPE,INMTA1\r
+       003677' 254000  001771'         JRST ERR1B\r
+       003700' 263240  000000          POPJ P,\r
+\r
+                               ;ROUTINE TO PRINT ERROR MSG IF MORE THAN 1/8 FLAGS SET\r
+\r
+       003701' 200340  004637' MTR1:   MOVE T4,DEVICE  ;TENTATIVELY SET I/DEV\r
+\r
+       003702' 302500  003667'         CAIE T6,INIMTA  ;INPUT DEVICE?\r
+       003703' 200340  004634'         MOVE T4,ODEV    ;NO, SET O/DEV\r
+       003704' 265040  002155'         ERRPNT </?Too many requests for />\r
+       003705' 376515  767500\r
+       003706' 667035  674500\r
+       003707' 713136  172712\r
+       003710' 717516  320314\r
+       003711' 677444  000000\r
+       003712' 260240  002201'         PUSHJ P,P6BIT\r
+       003713' 000000  000007                  T4\r
+       003714' 254000  000013'         JRST    PIP2\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 71\r
+PIP    MAC     24-APR-78 03:15         CONSTANTS/STORAGE/VARIABLES\r
+\r
+                                       SUBTTL  CONSTANTS/STORAGE/VARIABLES\r
+\r
+                               ;CONSTANTS\r
+\r
+                               IFE WCH,<\r
+       003715' 140600  004046' OKBD:   POINT 6,DTON+2,23       ;FOR NO. 1K BLOCKS\r
+       003716' 140600  004054' OKB:    POINT 6,ZRF+2,23>\r
+       003717' 001400  004054' DATE:   POINT 12,ZRF+2,35\r
+       003720' 001400  004046' DATED:  POINT 12,DTON+2,35      ;CREATION DATE /X\r
+       003721' 301406  030140  ZRO:    ASCII /00000/\r
+       003722' 010700  004376' OPTMAX: POINT 7,LBUFE-1,34\r
+       003723' 000700  004173' OPTRA:  XWD 700,LBUF-1          ;INITIAL POINTER TO LINE BUFFER\r
+       003724' 432150  643240  K1:     432150643240            ;MAGIC ASCII INCREMENT BY 10\r
+       003725' 375767  737576  K3:     375767737576            ;CHARACTER MASK 077\r
+       003726' 432150  643216  K4:     432150643216            ;MAGIC ASCII INCREMENT BY 1\r
+       003727' 616051  600000  QPIP:   SIXBIT /QPIP/           ;DATA FOR Q SWITCH\r
+       003730' 120000  000000  STAR:   SIXBIT /*/              ;LOOK FOR *.* FILNAM.EXT\r
+       003731' 000000  000012  TWL:    OCT 12\r
+       003732' 000001  000001  PP11:   XWD 1,1\r
+       003733' 000001  000003  PP13:   XWD 1,3                 ; SANDERS SYS\r
+       003734' 000000  000145  UPROJ:  EXP     ^D101   ; SANDERS UNIVERSAL PROJECT\r
+                               IFN FTDSK,<\r
+                               PRPTL:  POINT 9,PROTS,8         ;PROTECTION FOR RENAME\r
+                               PRPTD:  POINT 9,DTON+2,8\r
+                               PRNM:   POINT 9,ZRF+2,8         ;PROT FOR /R\r
+                               TIME:   POINT 11,ZRF+2,23       ;CREATE TIME /X\r
+                               TIMED:  POINT 11,DTON+2,23      ;DEPOSIT CREATE TIME>\r
+\r
+\r
+\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 72\r
+PIP    MAC     24-APR-78 03:15         CONSTANTS/STORAGE/VARIABLES\r
+\r
+                               ;PROGRAM STORAGE AREA\r
+\r
+                               IFE BLOC0,<\r
+       003735'                 BL0CNT: BLOCK   1               ;COUNT>\r
+       003736'                 DTAID:  BLOCK 1 ; STORE DTA SERIAL NUMBER\r
+       003737'                 DIRPPN: BLOCK 1         ; STORE OWNERSHIP\r
+       003740'                 SVIBF:  BLOCK   1       ;SAVE INIT MODE (INPUT)\r
+       003741'                 SVOBF:  BLOCK   1       ;SAVE INIT MODE (OUTPUT)\r
+       003742'                 IBF:    BLOCK   3       ;INPUT BUFFER HEADER\r
+       003745'                 OBF:    BLOCK   3       ;OUTPUT BUFFER HEADER\r
+       003750'                 OBI:    BLOCK   3       ;OUTPUT BUFFER INPUT HEADER FOR DSK /Z\r
+       003753'                 TFI:    BLOCK   3       ;CONSOLE INPUT HEADER\r
+       003756'                 TFO:    BLOCK   3       ;CONSOLE OUTPUT HEADER\r
+       003761'                 SAVAC:  BLOCK   5       ;SAVE SOME ACS\r
+       003766'                 NAMTAB: BLOCK   24      ;FOR (XD) ON DSK OR RENAME\r
+                               IFN FTDSK,<\r
+                               LOCNAM: BLOCK   1       ;POINTER FOR NAMTAB>\r
+       004012'                 DIRST:  BLOCK   1       ;LOC. OF LAST DIR. FILE NAME REFERENCED\r
+       004013'                 DIRST1: BLOCK   1       ;SAVE INITIAL DIRST\r
+       004014'                 SQNUM:  BLOCK   1       ;CURRENT SEQUENCE NUMBER\r
+       004015'                 DTJBFF: BLOCK   1       ;VALUE OF JOBFF AFTER CONSOLE I/O BUFFERS\r
+       004016'                 SVJBFF: BLOCK   1       ;INITIAL VALUE OF JOBFF\r
+       004017'                 SVJBF1: BLOCK   1       ;VALUE OF JOBFF AFTER OUTBUF UUO\r
+       004020'                 OPTR:   BLOCK   1       ;CURRENT POINTER FOR LINE PRESCAN\r
+       004021'                 DTONSV: BLOCK   2       ;OUTPUT DIRECTORY ENTRY COPY\r
+       004023'                 SVPTR1: BLOCK   1       ;POINTER TO LAST PRINTING CHARACTER\r
+       004024'                 SVPTR2: BLOCK   1       ;POINTER TO LAST GENERATED TAB\r
+       004025'                 TLBRKT: BLOCK   1       ;TOTAL PARENS ON THIS LINE\r
+       004026'                 TOTBRK: BLOCK   1       ;TOTAL CUMULATIVE PARENS\r
+       004027'                 TABCT:  BLOCK   1       ;SPACES TO NEXT TAB STOP\r
+       004030'                 SPCT:   BLOCK   1       ;CONSECUTIVE SPACES COUNTER\r
+       004031'                 ABOUT:  BLOCK   1       ;AB FOR OUTPUT UNIT\r
+       004032'                 AUXOUT: BLOCK   1       ;AUX FOR OUTPUT UNIT\r
+       004033'                 PROTS:  BLOCK   1       ;SAVE PROTECTION\r
+       004034'                 ZCNT:   BLOCK   1       ;COUNT FOR DSK ZRO REQ.\r
+       004035'                 CDRCNT: BLOCK   1       ;COUNT CARD COLS.\r
+       004036'                 PTRPT:  BLOCK   1       ;STORE SEQ. NO. POINTER\r
+       004037'                 SYSPP:  BLOCK   1       ;PP OF DEVICE SYS\r
+\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 73\r
+PIP    MAC     24-APR-78 03:15         CONSTANTS/STORAGE/VARIABLES\r
+\r
+                               ;THIS IS A BLOCK OF VARIABLE LOCATIONS, ZEROED AT THE START OF EACH\r
+                               ;PIP RUN, I.E EACH TIME PIP TYPES *.\r
+\r
+                               ;*****  DO NOT SPLIT THIS BLOCK *****\r
+                               IFN FTDSK,<\r
+                               RIBFIR: BLOCK   1       ;NUMBER OF WORDS IN LOOKUP\r
+                               PPP:    BLOCK   1       ;PROJ-PROG FOR EXTENDED LOOKUP>\r
+       004040'                 FILNAM: BLOCK   1       ;FILE NAME FROM COMMAND SCANNER\r
+       004041'                 FILEX:  BLOCK   1       ;EXTENSION\r
+       004042'                 PR:     BLOCK   1       ;PROTECTION\r
+       004043'                 PP:     BLOCK   1       ;P-P NUMBER TYPED BY USER\r
+                               IFN FTDSK,<BLOCK 20+RIBFIR-.>   ;TOTAL LENGTH OF LOOKUP BLOCK\r
+                               ;*****  END OF BLOCK    *****\r
+       004044'                 DTON:   BLOCK   4       ;OUTPUT DIR. ENTRY\r
+       004050'                 DEVA:   BLOCK   1       ;SAVE INPUT DEV. NAME\r
+       004051'                 NO.:    BLOCK   1       ;GENERATE FILE NAMES\r
+       004052'                 ZRF:    BLOCK   4       ;LOOKUP FILE NAMES\r
+       004056'                 MTAREQ: BLOCK   1       ;STORE MTA REQUESTS\r
+\r
+       004057'                 COMEOF: BLOCK   1       ;EOF INDICATOR\r
+       004060'                 COMBUF: BLOCK   ^D41    ;COMMAND BUFFER. ALLOWS 205 CHARS.\r
+       004131'                 COMCNT: BLOCK   1       ;COMBUF CHARS COUNT\r
+       004132'                 COMPTS: BLOCK   1       ;POINTER FOR STORING/EXTRACTING CS\r
+\r
+\r
+       004133'                 AUX:    BLOCK   1       ;COPT AUXFLG (MTA)\r
+                               IFN FTDSK,<\r
+                               FNPPN:  BLOCK   1       ;RESERVE #P-P\r
+                               FNPPNS: BLOCK   1       ;COPY FNPPN FOR LATEST NON-SYS #P-P>\r
+       004134'                 ESWTCH: BLOCK   1       ;-1 INDICATES END OF LINE\r
+       004135'                 XNAME:  BLOCK   1       ;-1 INDICATES SCAN OVERSHOOT WITH A NULL NAME\r
+                                                       ;0  INDICATES NO SCAN OVERSHOOT\r
+                                                       ;CONTAINS OVERSHOOT NAME IF NOT NULL\r
+       004136'                 AB:     BLOCK   1       ;MTA VALUE SWITCHES\r
+                                                       ;THIS IS THE END OF THE INIT. ZEROED BLOCK.\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 74\r
+PIP    MAC     24-APR-78 03:15         CONSTANTS/STORAGE/VARIABLES\r
+\r
+       004137' 266254  167132  MONTH:  ASCII /-Jan-/\r
+       004140' 266154  561132          ASCII /-Feb-/\r
+       004141' 266334  171132          ASCII /-Mar-/\r
+       004142' 266036  071132          ASCII /-Apr-/\r
+       004143' 266334  174532          ASCII /-May-/\r
+       004144' 266256  567132          ASCII /-Jun-/\r
+       004145' 266256  566132          ASCII /-Jul-/\r
+       004146' 266036  563532          ASCII /-Aug-/\r
+       004147' 266474  570132          ASCII /-Sep-/\r
+       004150' 266374  372132          ASCII /-Oct-/\r
+       004151' 266355  773132          ASCII /-Nov-/\r
+       004152' 266114  561532          ASCII /-Dec-/\r
+\r
+       004153' 440700  004137' MNPT:   POINT 7,MONTH\r
+\r
+       004154'                 PDL:   BLOCK 20         ;PUSHDOWN LIST\r
+\r
+       004174'                 LBUF:  BLOCK 204        ;LINE BUFFER. ALLOW FOR FORTRAN DATA\r
+                       004377' LBUFE==.-1\r
+\r
+       004400'                 DBUF:  BLOCK 204        ;DIRECTORY BUFFER\r
+       004604'                         BLOCK   27      ; ALLOW ENOUGH FOR DTA PROT.\r
+\r
+       004633'                 OMOD:   BLOCK 1         ;OUTPUT DEVICE MODE, STATUS\r
+       004634'                 ODEV:   BLOCK 2         ;OUTPUT DEVICE NAME\r
+                                                       ;BUFFER HEADER(S) LOC\r
+\r
+       004636'                 ININI1: BLOCK 1         ;INPUT DEVICE\r
+       004637'                 DEVICE: BLOCK 2\r
+\r
+\r
+       004641'                 DEVERR: BLOCK 1\r
+       004642'                 DERR2:  BLOCK 2\r
+\r
+       004644'                 INMTA1: BLOCK 1\r
+       004645'                 MTANAM: BLOCK 2\r
+       004647'                 MATCH:  BLOCK   2       ;NAME AND EXT FOR /L OR (RX)\r
+       004651'                 RENSN:  BLOCK   1       ;-1 IF RENAME MESSAGE SEEN\r
+\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 75\r
+PIP    MAC     24-APR-78 03:15         RIM LOADER\r
+\r
+                               SUBTTL  RIM LOADER\r
+                               IFE RIMSW,<\r
+       004652' 265040  002155' RIMTB:  ERRPNT  <Z? /Y switch option not available this assembly!Z>\r
+       004653' 375005  754500\r
+       004654' 717575  172306\r
+       004655' 641015  770350\r
+       004656' 647375  620334\r
+       004657' 677504  060754\r
+       004660' 607235  460704\r
+       004661' 663124  072320\r
+       004662' 647464  060746\r
+       004663' 717135  561330\r
+       004664' 745020  000000\r
+                               XLIST>\r
+                               LIST\r
+\r
+                               IFE FTDSK,<     \r
+       004665'                         VAR\r
+       004665'                 LOWTOP:\r
+                       000000'         END     PIP1>\r
+\r
+DTBLK  UNASSIGNED, DEFINED AS IF EXTERNAL \r
+DTDEV  UNASSIGNED, DEFINED AS IF EXTERNAL \r
+HEDL1  UNASSIGNED, DEFINED AS IF EXTERNAL \r
+PROTO  UNASSIGNED, DEFINED AS IF EXTERNAL \r
+?5 ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 004714\r
+\r
+10K CORE USED\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 81\r
+PIP    MAC     24-APR-78 03:15         SYMBOL TABLE\r
+\r
+AB             004136' \r
+ABCHK          000466' \r
+ABOUT          004031' \r
+ADVF           003653' \r
+ADVF2          003654' \r
+ALLCLF         000037  SPD\r
+ALT175         000175  SPD\r
+ALT176         000176  SPD\r
+ALTMOD         000033  SPD\r
+ASTFLG         000040  SPD\r
+AUX            004133' \r
+AUXFLG         000013  \r
+AUXOUT         004032' \r
+BIGBLK         040000  SPD\r
+BL0CNT         003735' \r
+BL1            003515' \r
+BL3            003527' \r
+BL4            003473' \r
+BLKIN          000006  SPD\r
+BLOC0          000000  SPD\r
+BLOCK0         003451' \r
+BMOD           000002  SPD\r
+BSPF           003617' \r
+BSPF2          003620' \r
+BSPF3          003637' \r
+CAL5           002315' \r
+CAL6           002317' \r
+CALFLG         000017  \r
+CDRBIT         100000  SPD\r
+CDRCNT         004035' \r
+CDRFLG         000040  SPD\r
+CDRIN          000100  SPD\r
+CHECK          002152' \r
+CHECK1         002132' \r
+CHECK2         002135' \r
+CHKFLG         000040  SPD\r
+CHR            000004  \r
+CLRBUF         000553' \r
+COLON          000072  SPD\r
+COMASK         000044' \r
+COMBUF         004060' \r
+COMCNT         004131' \r
+COMEOF         004057' \r
+COMERR         001135' \r
+COMMA          000054  SPD\r
+COMPRO         000056' \r
+COMPRP         000056' \r
+COMPTR         000055' \r
+COMPTS         004132' \r
+COMSTO         000037' \r
+CON            000001  SPD\r
+COPY1          002241' \r
+COPY1A         002225' \r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 81-1\r
+PIP    MAC     24-APR-78 03:15         SYMBOL TABLE\r
+\r
+COPY2A         002311' \r
+COPY2B         002313' \r
+COPY3          002323' \r
+COPY3B         002321' \r
+COPY4          002305' \r
+COPY5          002300' \r
+COPY6          002252' \r
+COPY6A         002250' \r
+COPY6B         002254' \r
+COPY6C         002266' \r
+CORE   047000  000011  \r
+CPOPJ          001711' \r
+CPOPJ1         001707' \r
+CPOPJZ         001710' \r
+CR             000015  SPD\r
+CRLF           003205' \r
+CZ             000032  SPD\r
+DATE           003717' \r
+DATE   047000  000014  \r
+DATED          003720' \r
+DATO2          003262' \r
+DATOUT         003224' \r
+DBUF           004400' \r
+DEL            000177  SPD\r
+DELE1          002443' \r
+DELE2          002504' \r
+DELE3          002466' \r
+DELE5          002513' \r
+DENS2          000200  SPD\r
+DENS5          000400  SPD\r
+DENS8          000600  SPD\r
+DERR2          004642' \r
+DERR2A         001166' \r
+DERR2B         001165' \r
+DESCR1         000464' \r
+DESCRP         000451' \r
+DEV            000100  SPD\r
+DEVA           004050' \r
+DEVCHR 047000  000004  \r
+DEVER          000526' \r
+DEVER1         000525' \r
+DEVER2         000525' \r
+DEVERR         004641' \r
+DEVICE         004637' \r
+DEVPPN 047000  000055  \r
+DEVTST         000506' \r
+DFLG           000010  SPD\r
+DIR            000005  SPD\r
+DIRPPN         003737' \r
+DIRST          004012' \r
+DIRST1         004013' \r
+DISK30         000000  SPD\r
+\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 81-2\r
+PIP    MAC     24-APR-78 03:15         SYMBOL TABLE\r
+\r
+DISPTA         001436' \r
+DISPTB         001420' \r
+DOUT           000015  \r
+DOUT1          000016  \r
+DSKBIT         200000  SPD\r
+DSKCHR 047000  000045  \r
+DSKIN          040000  SPD\r
+DSKOUT         010000  SPD\r
+DTABIT         000004  SPD\r
+DTADI1         002702' \r
+DTADIR         002701' \r
+DTADR          002460' \r
+DTAID          003736' \r
+DTAIN          020000  SPD\r
+DTALS1         003043' \r
+DTALS2         003050' \r
+DTALS3         003052' \r
+DTALS4         003055' \r
+DTALST         003023' \r
+DTAOUT         004000  SPD\r
+DTBLK          003337' UXT\r
+DTCH1          003277' \r
+DTCH2          003272' \r
+DTCHEC         003271' \r
+DTCLR          002212' \r
+DTCOPY         002224' \r
+DTD1           002456' \r
+DTD5           002544' \r
+DTD6           002543' \r
+DTDELE         002432' \r
+DTDEV          003336' UXT\r
+DTDIR          000007  SPD\r
+DTJBFF         004015' \r
+DTON           004044' \r
+DTONSV         004021' \r
+DTPDIR         003017' \r
+DTRNAM         002522' \r
+DTRNM1         002536' \r
+DVSWTH         000200  SPD\r
+E10A           002053' \r
+E10B           001752' \r
+EOFBIT         020000  SPD\r
+EOTBIT         002000  SPD\r
+ERR1           001767' \r
+ERR10          001751' \r
+ERR1A          001770' \r
+ERR1B          001771' \r
+ERR2           002076' \r
+ERR2A          002107' \r
+ERR3           002003' \r
+ERR3A          002005' \r
+ERR3AA         002007' \r
+ERR4           002024' \r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 81-3\r
+PIP    MAC     24-APR-78 03:15         SYMBOL TABLE\r
+\r
+ERR4A          002033' \r
+ERR4B          002033' \r
+ERR5           002066' \r
+ERR5A          002060' \r
+ERR6           002040' \r
+ERR6A          002040' \r
+ERR6B          002045' \r
+ERR7A          002115' \r
+ERR8           002122' \r
+ERR9           001762' \r
+ESQ            040000  SPD\r
+ESWTCH         004134' \r
+EXIT   047000  000012  \r
+FF             000014  SPD\r
+FFLG           000020  SPD\r
+FIL1           003410' \r
+FIL11          003365' \r
+FIL2           003430' \r
+FIL3           003414' \r
+FIL4           003443' \r
+FIL5           003445' \r
+FILEX          004041' \r
+FILNAM         004040' \r
+FILTYP         003353' \r
+FLAG           000006  \r
+FN.EX          001146' \r
+FNEX           000001  SPD\r
+FNSET          002746' \r
+FNSET1         002762' \r
+FRSTIN         000400  SPD\r
+FTDSK          000000  SPD\r
+GET            001462' \r
+GET1           001557' \r
+GET1A          001566' \r
+GET2           001532' \r
+GET4           001553' \r
+GET5           001521' \r
+GET7           001666' \r
+GET7B          001712' \r
+GET7C          001673' \r
+GETA2          001727' \r
+GETA3          001717' \r
+GETA5          001724' \r
+GETA5A         001747' \r
+GETA7          001735' \r
+GETBUF         001404' \r
+GETCOM         001175' \r
+GETDEC         001236' \r
+GETEN2         001415' \r
+GETN1          001240' \r
+\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 81-4\r
+PIP    MAC     24-APR-78 03:15         SYMBOL TABLE\r
+\r
+GETN2          001306' \r
+GETNUD         001305' \r
+GETNUM         001237' \r
+GETOCT         001235' \r
+GETPC1         001506' \r
+GETPC2         001544' \r
+GETPC3         001542' \r
+GETPC4         001476' \r
+GETPPN         003333' \r
+GETPPN 047000  000024  \r
+GETT10         001206' \r
+GETT11         001217' \r
+GETT2          001371' \r
+GETT3          001252' \r
+GETT3A         001276' \r
+GETT3B         001274' \r
+GETT4          001372' \r
+GETT5          001320' \r
+GETT5A         001321' \r
+GETT6          001300' \r
+GETT7          001327' \r
+GETT8          001335' \r
+GETT9          001223' \r
+GETTA          001352' \r
+GETTAB 047000  000041  \r
+GETTIN         001365' \r
+GETUPJ         001232' \r
+GFLG           000200  SPD\r
+HEDL1          004706' UXT\r
+HPAGE          000020  SPD\r
+IBF            003742' \r
+IBFLG          000400  SPD\r
+IFLG           000100  SPD\r
+IN             000003  SPD\r
+INBIT          000002  SPD\r
+INERR          001620' \r
+INFO           002711' \r
+INFO1          002730' \r
+INFO2          002735' \r
+INFO3          002743' \r
+INFOFL         000100  SPD\r
+INHIB          000001  SPD\r
+INICN1         000541' \r
+INICN2         000542' \r
+INICON         001410' \r
+INIMTA         003667' \r
+ININI1         004636' \r
+ININIT         000426' \r
+INLOOK         000204' \r
+INLUK1         000217' \r
+INMTA          003676' \r
+INMTA1         004644' \r
+INOMTA         003666' \r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 81-5\r
+PIP    MAC     24-APR-78 03:15         SYMBOL TABLE\r
+\r
+INP            001616' \r
+IOERR          001020' \r
+IOERRG         001114' \r
+IOERRN         001107' \r
+IOS            000010  \r
+JFLG           001000  SPD\r
+JOBFF          000547' EXT\r
+JOBREL         000437' EXT\r
+JOBSA          000007' EXT\r
+JOBSTR 047000  000047  \r
+K              000000  SPD\r
+K1             003724' \r
+K3             003725' \r
+K4             003726' \r
+LA             000137  SPD\r
+LBUF           004174' \r
+LBUFE          004377' SPD\r
+LDP            004000  SPD\r
+LF             000012  SPD\r
+LFLG           000020  SPD\r
+LINE           000001  SPD\r
+LISTTY         002000  SPD\r
+LOOK           002566' \r
+LOOK01         002570' \r
+LOOK1          002655' \r
+LOOK2          002623' \r
+LOOK3          002630' \r
+LOOK4          002635' \r
+LOOK5          002635' \r
+LOOK6          002572' \r
+LOOK6A         002614' \r
+LOOK6C         002616' \r
+LOOK6D         002620' \r
+LOOK7A         002640' \r
+LOOK7B         002604' \r
+LOOK7C         002650' \r
+LOOK8          002607' \r
+LOOKA          002767' \r
+LOOKB          003006' \r
+LOOKC          003014' \r
+LOOKF          003002' \r
+LOW            000000' \r
+LOWTOP         004665' \r
+LPTBIT         040000  SPD\r
+LPTOUT         000010  SPD\r
+M1             000140' \r
+M2             000132' \r
+M3             000107' \r
+M3A            000111' \r
+M4             000154' \r
+M5             000173' \r
+MAIN1          000411' \r
+\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 81-6\r
+PIP    MAC     24-APR-78 03:15         SYMBOL TABLE\r
+\r
+MAIN2          000421' \r
+MAINA1         000031' \r
+MAINA2         000275' \r
+MAINA3         000301' \r
+MAINA4         000307' \r
+MAINA5         000323' \r
+MAINB          000415' \r
+MAINC          000073' \r
+MARKEF         003605' \r
+MATCH          004647' \r
+MATEX          000002  SPD\r
+MATFN          000004  SPD\r
+MNPT           004153' \r
+MONTH          004137' \r
+MORCOR         000262' \r
+MPC2           002350' \r
+MSTIME 047000  000023  \r
+MT1            003531' \r
+MT2FLG         002000  SPD\r
+MT5FLG         001000  SPD\r
+MT8FLG         000400  SPD\r
+MTABIT         000020  SPD\r
+MTAFLG         000001  SPD\r
+MTAIN          000400  SPD\r
+MTANAM         004645' \r
+MTAOUT         000200  SPD\r
+MTAREQ         004056' \r
+MTBFLG         000002  SPD\r
+MTC1           003562' \r
+MTCONT         003554' \r
+MTDFLG         000100  SPD\r
+MTEFLG         004000  SPD\r
+MTFFLG         000020  SPD\r
+MTFLG          200000  SPD\r
+MTPFLG         000200  SPD\r
+MTPTC1         002362' \r
+MTPTCR         002337' \r
+MTR1           003701' \r
+MTTFLG         000004  SPD\r
+MTUFLG         000040  SPD\r
+MTWAIT         003603' \r
+MTWFLG         000010  SPD\r
+NAME           000557' \r
+NAMTAB         003766' \r
+NEWDEV         000010  SPD\r
+NEWFIL         000020  SPD\r
+NEWPP          000020  SPD\r
+NM1            000566' \r
+NM10           000654' \r
+NM11           000661' \r
+NM12           000664' \r
+NM13           000666' \r
+NM14           000670' \r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 81-7\r
+PIP    MAC     24-APR-78 03:15         SYMBOL TABLE\r
+\r
+NM15           000672' \r
+NM16           000700' \r
+NM2            000567' \r
+NM3            000571' \r
+NM4            000576' \r
+NM4A           000602' \r
+NM5            000606' \r
+NM5A           000613' \r
+NM5B           000673' \r
+NM6            000633' \r
+NM7            000640' \r
+NM8            000643' \r
+NM9            000646' \r
+NO.            004051' \r
+NOMORE         000020  SPD\r
+NSMOD          000040  SPD\r
+NSPROT         000002  SPD\r
+NSWTCH         000400  SPD\r
+OBF            003745' \r
+OBI            003750' \r
+ODEV           004634' \r
+OFLG           000001  SPD\r
+OKB            003716' \r
+OKBD           003715' \r
+OKBLK0         002422' \r
+OKBLKS         002412' \r
+OMOD           004633' \r
+OMOD1          000251' \r
+OMODE          000223' \r
+OMODER         000267' \r
+ONEOUT         000040  SPD\r
+OPTMAX         003722' \r
+OPTR           004020' \r
+OPTRA          003723' \r
+OSFLG          400000  SPD\r
+OUT            000002  SPD\r
+OUTBIT         000001  SPD\r
+OUTCH1         000711' \r
+OUTCH2         003307' \r
+OUTCH3         003320' \r
+OUTCHK         003305' \r
+OUTDC1         003235' \r
+OUTDE4         003252' \r
+OUTDEC         003260' \r
+OUTLB1         000712' \r
+OUTLB2         000745' \r
+OUTLB3         000754' \r
+OUTLBA         000717' \r
+OUTLBF         000707' \r
+OUTLOO         000200' \r
+OUTOCT         003236' \r
+OUTP           000762' \r
+OUTP1          000764' \r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 81-8\r
+PIP    MAC     24-APR-78 03:15         SYMBOL TABLE\r
+\r
+OUTP3          000772' \r
+OUTP4          000770' \r
+P              000005  \r
+P1             000010' \r
+P6BIT          002201' \r
+P6BIT1         002203' \r
+P6BIT2         002207' \r
+PARE           001000  SPD\r
+PCHTAB         001546' \r
+PCONV          000010  SPD\r
+PDIR1          003101' \r
+PDIR1B         003070' \r
+PDIR2          003211' \r
+PDIR21         003220' \r
+PDIR2A         003213' \r
+PDIR3          003141' \r
+PDIR3A         003177' \r
+PDIR3B         003174' \r
+PDIR4          003107' \r
+PDIR4A         003130' \r
+PDIR4B         003131' \r
+PDIR6          003200' \r
+PDIR7          003221' \r
+PDIR8          003075' \r
+PDL            004154' \r
+PERIOD         000056  SPD\r
+PFLG           000004  SPD\r
+PICUP          002662' \r
+PICUP2         002662' \r
+PICUP4         002665' \r
+PIP            000012' \r
+PIP1           000000' \r
+PIP2           000013' \r
+PIP2A          000013' \r
+PIP2B          000023' \r
+PJOB   047000  000030  \r
+PP             004043' \r
+PP11           003732' \r
+PP13           003733' \r
+PPTIN          200000  SPD\r
+PPTOUT         400000  SPD\r
+PR             004042' \r
+PRECOP         002220' \r
+PRETXT         002155' \r
+PRN            003243' \r
+PRNUMA         003237' \r
+PROTK          000476' \r
+PROTK1         000504' \r
+PROTO          003173' UXT\r
+PROTS          004033' \r
+PSCAN          000343' \r
+PSCAN1         000376' \r
+PSCAN2         000352' \r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 81-9\r
+PIP    MAC     24-APR-78 03:15         SYMBOL TABLE\r
+\r
+PSCAN3         000351' \r
+PSCAN4         000374' \r
+PSCAN5         000407' \r
+PSCAN6         000404' \r
+PSCANA         000333' \r
+PSCANB         000326' \r
+PTEXT          002155' \r
+PTEXT1         002167' \r
+PTEXT2         002166' \r
+PTPBIT         000400  SPD\r
+PTRBIT         000200  SPD\r
+PTRPT          004036' \r
+PUT            000756' \r
+PUTCON         002175' \r
+QFLG           000001  SPD\r
+QPIP           003727' \r
+QUEST          001652' \r
+QUEST2         001662' \r
+RBSIZ          000005  SPD\r
+READ1          002000  SPD\r
+REDFLG         000001  SPD\r
+RENAME         002553' \r
+RENSN          004651' \r
+RESET  047000  000000  \r
+REWIND         003602' \r
+RFLG           000100  SPD\r
+RIBSTS         000017  SPD\r
+RIMFLG         000002  SPD\r
+RIMSW          000000  SPD\r
+RIMTB          004652' \r
+RSDCFL         000200  SPD\r
+RUN    047000  000035  \r
+RXFLG          020000  SPD\r
+SAVAC          003761' \r
+SBIN           000004  SPD\r
+SLEOT          003615' \r
+SNI            100000  SPD\r
+SPACE          000040  SPD\r
+SPCT           004030' \r
+SPMOD          001000  SPD\r
+SPOK           020000  SPD\r
+SQMOD          000200  SPD\r
+SQNUM          004014' \r
+SR2            002371' \r
+SSWTCH         001000  SPD\r
+STAR           003730' \r
+STS            000400  SPD\r
+SUS            010000  SPD\r
+SVER           000005  SPD\r
+SVIBF          003740' \r
+SVJBF1         004017' \r
+SVJBFF         004016' \r
+\r
+\r
+\fPIP V.030 MOD SANDERS/DBP 19-AUG-71   MACRO 10 05:52 24-APR-78 PAGE 81-10\r
+PIP    MAC     24-APR-78 03:15         SYMBOL TABLE\r
+\r
+SVOBF          003741' \r
+SVPTR1         004023' \r
+SVPTR2         004024' \r
+SYSFLG         000002  SPD\r
+SYSLST         000004  SPD\r
+SYSPP          004037' \r
+T1             000001  \r
+T2             000002  \r
+T3             000003  \r
+T4             000007  \r
+T5             000011  \r
+T6             000012  \r
+T7             000014  \r
+TAB            000011  SPD\r
+TABCT          004027' \r
+TABOUT         000755' \r
+TABSP          000010  SPD\r
+TAPE           000004  SPD\r
+TBMOD          000004  SPD\r
+TFI            003753' \r
+TFO            003756' \r
+TLBRKT         004025' \r
+TMPCOR 047000  000044  \r
+TMPI           004000  SPD\r
+TMPO           010000  SPD\r
+TOTBRK         004026' \r
+TTYBIT         000010  SPD\r
+TTYIN          001000  SPD\r
+TTYOUT         100000  SPD\r
+TTYZ           002376' \r
+TWL            003731' \r
+TXTA           001062' \r
+TXTB           001066' \r
+TXTC           001074' \r
+TXTC1          001100' \r
+TXTD           001042' \r
+TXTD1          001047' \r
+TXTD2          001055' \r
+UNLOAD         003600' \r
+UPROJ          003734' \r
+UTPCLR 047000  000013  \r
+VPIP           000030  SPD\r
+WAIT   072000  000000  \r
+WCH            000000  SPD\r
+WRTLOK         400000  SPD\r
+XFLG           002000  SPD\r
+\fTTTTTTTTTTTTTTT      EEEEEEEEEEEEEEE      NNN         NNN      DDDDDDDDDDDD         MMM         MMM      PPPPPPPPPPPP   \r
+TTTTTTTTTTTTTTT      EEEEEEEEEEEEEEE      NNN         NNN      DDDDDDDDDDDD         MMM         MMM      PPPPPPPPPPPP   \r
+TTTTTTTTTTTTTTT      EEEEEEEEEEEEEEE      NNN         NNN      DDDDDDDDDDDD         MMM         MMM      PPPPPPPPPPPP   \r
+      TTT            EEE                  NNN         NNN      DDD         DDD      MMMMMM   MMMMMM      PPP         PPP\r
+      TTT            EEE                  NNN         NNN      DDD         DDD      MMMMMM   MMMMMM      PPP         PPP\r
+      TTT            EEE                  NNN         NNN      DDD         DDD      MMMMMM   MMMMMM      PPP         PPP\r
+      TTT            EEE                  NNNNNN      NNN      DDD         DDD      MMM   MMM   MMM      PPP         PPP\r
+      TTT            EEE                  NNNNNN      NNN      DDD         DDD      MMM   MMM   MMM      PPP         PPP\r
+      TTT            EEE                  NNNNNN      NNN      DDD         DDD      MMM   MMM   MMM      PPP         PPP\r
+      TTT            EEEEEEEEEEEE         NNN   NNN   NNN      DDD         DDD      MMM         MMM      PPPPPPPPPPPP   \r
+      TTT            EEEEEEEEEEEE         NNN   NNN   NNN      DDD         DDD      MMM         MMM      PPPPPPPPPPPP   \r
+      TTT            EEEEEEEEEEEE         NNN   NNN   NNN      DDD         DDD      MMM         MMM      PPPPPPPPPPPP   \r
+      TTT            EEE                  NNN      NNNNNN      DDD         DDD      MMM         MMM      PPP            \r
+      TTT            EEE                  NNN      NNNNNN      DDD         DDD      MMM         MMM      PPP            \r
+      TTT            EEE                  NNN      NNNNNN      DDD         DDD      MMM         MMM      PPP            \r
+      TTT            EEE                  NNN         NNN      DDD         DDD      MMM         MMM      PPP            \r
+      TTT            EEE                  NNN         NNN      DDD         DDD      MMM         MMM      PPP            \r
+      TTT            EEE                  NNN         NNN      DDD         DDD      MMM         MMM      PPP            \r
+      TTT            EEEEEEEEEEEEEEE      NNN         NNN      DDDDDDDDDDDD         MMM         MMM      PPP            \r
+      TTT            EEEEEEEEEEEEEEE      NNN         NNN      DDDDDDDDDDDD         MMM         MMM      PPP            \r
+      TTT            EEEEEEEEEEEEEEE      NNN         NNN      DDDDDDDDDDDD         MMM         MMM      PPP            \r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  05:53:58\r
+File: DSKB1 :TENDMP.LST   [8,296] Created: 20-April-1967 05:53:00 Printed: 24-April-1978 05:53:42\r
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:1142 \r
+File will be deleted after printing\r
+\f\r
+TENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032    MACRO 10 05:53 24-APR-78 PAGE 1\r
+TENDMP MAC     24-APR-78 14:35         TD10 VERSION\r
+\r
+                               TITLE TENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032\r
+                                       IFNDEF REL,<REL=0>      ;0 PAPER TAPE, 1 RELOCATABLE BINARY\r
+                                       IFNDEF MAGT,<MAGT=0>    ;0 DTAPE, 1 MTAPE\r
+                                       IFN MAGT,<\r
+                               ; MAGTAPE UTILITY ROUTINE - COURTSEY DATALINE SYSTEMS J HANCOCK\r
+                                       >\r
+                                       IFNDEF MODE,<MODE=0>    ;0 IS TD10, 1 IS 551/136\r
+                                       IFNDEF CORE,<CORE=4>    ;NUMBER OF 8K MEMORY BLOCKS\r
+\r
+                                       IFE MODE,<SUBTTL TD10 VERSION>\r
+                                       IFN MODE,<SUBTTL 551/136 VERSION>\r
+\r
+                               IFE REL,<\r
+                               IFE MAGT,<RIM10B>\r
+                               IFN MAGT,<RIM10>>\r
+                       000210          UTC=210\r
+                       000214          UTS=214\r
+                       000200          DC=200\r
+                       000320          DTC=320\r
+                       000324          DTS=324\r
+\r
+                       000000  F=0     ;MUST BE 0. USED BY JRA'S\r
+                       000002  A=2     ;MISC TEMP. HOLDS 136 CONO INDEX IN UWAIT\r
+                       000001  B=1     ;TEMP. HOLDS BLOCK # COMPUTATION IN SEARCH\r
+                       000003  C=3     ;HOLDS BITS FOR DECTAPE CONO DURING I/O\r
+                       000004  D=4     ;HOLDS POINTERS FOR AOBJN'S THROUGH CORE\r
+                       000005  E=5     ;HOLDS COUNT OF WORDS IN CURRENT DT BLOCK\r
+                       000006  P=6     ;PC FOR JSP'S\r
+                       000007  CKS=7   ;HAD BEEN CHECKSUM IN MACDMP\r
+                       000010  FILN=10 ;NUMBER OF FILE IN DIRECTORY, 1 TO 26 OCTAL\r
+                       000011  BLKNO=11        ;BLOCK NUMBER SEARCHED FOR ON TAPE\r
+                       000012  WRITE=12        ;MULTI-STATE FLAG FOR DEFINING I/O OPERATION\r
+                                               ;1=D 0=K -1=ELSE\r
+                       000013  PNTR=13 ;POINTER TO BYTE TABLE IN DIRECTORY\r
+                       000014  CH=14   ;HOLDS 6BIT CHARACTER OF COMMAND, OR -1\r
+                       000015  Q=15    ;ANOTHER JSP AC\r
+                       000016  G=16    ;RARELY USED VERY TEMP\r
+                       000017  CT=17   ;COUNT OF WORDS TO DUMP\r
+\r
+                       077777  COMPTR=BEGR+377 ;COMMAND POINTER, IF SUPPLIED\r
+                       077175          LOZAD=BEGR-203  ;WHEN CORE IS CLEARED, IT\r
+                                                       ;IS FROM 40 THRU LOZAD\r
+                       000020          LOW=20  ;FIRST LOCATION CONSIDERED FOR DUMPING\r
+                       077175          HIGH=BEGR-203   ;LAST LOCATION CONSIDERED FOR DUMPING\r
+                                                       ;ZEROED AT BEG THESE DAYS\r
+                       077176          FOOF=BEGR-202   ;NEEDED FOR ZERO CORE SEARCH, ZEROED AT BEG1\r
+                       077177  TAB=BEGR-201            ;FILE DIRECTORY\r
+                       077377  LINK=BEGR-1             ;0-17=LINK, 18-27=FBN, 29-35=WC\r
+       077400                  IFE REL,<IFE MAGT,<LOC 17400+<<CORE-1>*20000>>\r
+                                        IFN MAGT,<LOC 17377+<<CORE-1>*20000>\r
+                                       IOWD    LAST-BEGR+1,BEGR>>\r
+\r
+\fTENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032   MACRO 10 05:53 24-APR-78 PAGE 2\r
+TENDMP MAC     24-APR-78 14:35         TD10 VERSION\r
+\r
+                               ;INITIAL ENTRY IS AT BEGR, UNLESS A COMMAND POINTER IS\r
+                               ;SUPPLIED IN COMPTR. IN THAT CASE, ENTRY IS AT BEGR+1\r
+\r
+       077400  402000  077777  BEGR:   SETZM COMPTR    ;CLEAR ANY JUNK IN COMMAND POINTER\r
+       077401  700200  635550          CONO 635550     ;I/O RESET, ETC.\r
+       077402  265300  077467  BEG:    JSP P,CRR       ;TYPE A CR-LF\r
+       077403  201200  077750          MOVEI D,SPNT-2  ;PREPARE TO REMOVE AOBJN POINTERS\r
+       077404  403100  077176  BEG1:   SETZB A,FOOF    ;CLEAR A TO PUT IN CORE, CLEAR\r
+                                                       ;FOOF FOR  THE NEXT ZERO CORE SEARCH\r
+       077405  250104  000002          EXCH A,2(D)     ;REMOVE HEADER LIST\r
+       077406  253100  077406          AOBJN A,.       ;COUNT THROUGH TO NEXT HEADER\r
+       077407  201202  777777          MOVEI D,-1(A)   ;ACCOUNT FOR OVERSHOOT IN AOBJN\r
+       077410  326200  077404          JUMPN D,BEG1    ;IF WE DIDNT AOBJN A 0, GO FOR NEXT HDR\r
+       077411  200540  077753          MOVE PNTR,[XWD 500,TAB-1]       ;5 BIT BYTES IN DIRECTORY\r
+       077412  403600  000000          SETZB CH,F\r
+       077413  475500  000215  CRCH:   SETOI WRITE,215 ;USED FOR CARRET TYPEOUT\r
+       077414  403140  077175  TYI:    SETZB C,HIGH    ;HOPEFULLY HIGH IS TEMPORARY\r
+       077415  403040  000005          SETZB B,E       ;NAME INITIALIZING\r
+       077416  665040  400000          TLOA B,400000   ;NULL NAME IS "@. "\r
+       077417  201240  000002  SPACE:  MOVEI E,C-1     ;EXTENSION INTO C\r
+       077420  505240  020600          HRLI E,20600    ;FAKE OUT END TEST OF BYTE PTR\r
+                               ;STOP TAPE DRIVE\r
+                               IFN MODE,<CONO UTC,0>\r
+       077421  732200  400000  IFE MODE,<CONO DTC,400000>\r
+       077422  134120  077400  NEXT:   ILDB A,@BEGR    ;GIVES A 0 UNLESS COMMAND POINTER SUPPLIED\r
+                                                       ;RH OF NEXT IS USED AS A CONSTANT\r
+       077423  475400  000207  BELL:   SETOI FILN,207  ;INITIALIZATION FOR SEARCH\r
+       077424  403440  000017          SETZB BLKNO,CT  ; "\r
+       077425  402000  077377          SETZM LINK\r
+       077426  326100  077433          JUMPN A,RCH     ;JUMP IF COMMAND READ FROM CORE\r
+       077427  712340  000040          CONSO TTY,40    ;TYPEIN FLAG?\r
+       077430  254000  077427          JRST .-1        ;NO,WAIT\r
+       077431  712040  000002          DATAI TTY,A     ;GET TYPED IN CHARACTER\r
+       077432  265300  077471          JSP P,TYO       ;ECHO IT (WITH PARITY)\r
+       077433  405100  000177  RCH:    ANDI A,177      ;STRIP OFF PARITY\r
+       077434  306100  000177          CAIN A,177      ;RUBOUT?\r
+       077435  254000  077400          JRST BEGR       ;YES. RESTART TENDMP\r
+       077436  302100  000033          CAIE A,33       ;NEW ALTMODE?\r
+       077437  301100  000175          CAIL A,175      ;OR 175 OR 176 ALTMODES?\r
+       077440  254000  077501          JRST ALTTST     ;YES, SOME ALTMODE.\r
+       077441  301100  000140          CAIL A,140      ;LOWER CASE CHARACTER?\r
+       077442  620100  000040          TRZ A,40        ;YES. CHANGE TO UPPER CASE\r
+       077443  275100  000040          SUBI A,40       ;CONVERT TO SIXBIT\r
+       077444  321100  077504          JUMPL A,CARRET  ;ANY CONTROL CHARACTER\r
+       077445  322100  077417          JUMPE A,SPACE   ;CHAR WAS 40\r
+       077446  603240  770000  NEXT1:  TLNE E,770000   ;NO MORE THAN SIX CHARS\r
+       077447  136100  000005          IDPB A,E        ;GOES INTO AC1 = B\r
+       077450  254000  077422          JRST NEXT       ;GET ANOTHER CHARACTER\r
+\r
+\r
+\fTENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032   MACRO 10 05:53 24-APR-78 PAGE 3\r
+TENDMP MAC     24-APR-78 14:35         TD10 VERSION\r
+\r
+\r
+                               ;HERE ON JUMP BLOCK DURING LOADS, OR NUMBER>7 ALT\r
+       077451                  JBLK:\r
+                               ;STOP TAPE DRIVE\r
+                               IFN MODE,<CONO UTC,0>\r
+       077451  732200  400000  IFE MODE,<CONO DTC,400000>\r
+       077452  542200  077454          HRRM D,SADR     ;SAVE STARTING ADDRESS\r
+       077453  326600  077402          JUMPN CH,BEG    ;IF NOT LOADGO COMMAND\r
+       077454  254000  077402  SADR:   JRST BEG        ;CURRENT S.A.\r
+       077455                  LOADS:                  ;HERE TO LOAD TAPE TO CORE\r
+       077455  201200  077176          MOVEI D,LOZAD+1 ;FIRST LOC NOT TO ZERO\r
+       077456  402000  000040          SETZM 40        ;A "FEATURE"\r
+       077457  200140  077754          MOVE C,[XWD 40,41]      ;PREPARE TO CLEAR CORE.\r
+       077460  606600  000003          TRNN CH,3       ;SKIP ON M,N   NOT ON L,T,@\r
+       077461  251144  777777          BLT C,-1(D)     ;ZERO CORE\r
+       077462  265640  077557  LOAD:   JSP Q,LODUMP    ;START READING FILE. LODUMP PROCESSES\r
+                                                       ;ONE HEADER AND ITS DATA\r
+       077463  254000  077462          JRST LOAD       ;IF OK, GET NEXT BLOCK.(IF NONE, \r
+                                                       ;LODUMP RETURNS TO JBLK.)\r
+       077464  336240  000012  DELE:   SKIPN E,WRITE   ;SKIP IF NOT IN THE K PHASE OF A D COMMAND.\r
+                                                       ;OR A K COMMAND\r
+                                                       ;ALSO, SET E =0, SO SEARCH HAPPENS IN RBLK\r
+       077465  344500  077713  CLS1:   AOJA WRITE,CLSTP        ; 0 TO 1. GO DUMP OUT DIRECTORY.\r
+       077466  334300  077422  ERR:    SKIPA P,NEXT    ;SET TO RETURN TO BEGR\r
+       077467  334100  077413  CRR:    SKIPA A,CRCH    ;LIKE HRROI A,215 AND SKIPA\r
+       077470  334100  077423          SKIPA A,BELL    ;GET A BELL CHARACTER\r
+       077471  336000  077777  TYO:    SKIPN COMPTR    ;DONT TYO IF NO TYI, UNLESS ERR\r
+       077472  712140  000002          DATAO TTY,A     ;TYPE OUT\r
+       077473  712300  000020          CONSZ TTY,20    ;WAIT FOR TTY TO FINISH\r
+       077474  254000  077473          JRST .-1        ;NOT YET\r
+       077475  302100  000215          CAIE A,215      ;IF CR TYPED IN,\r
+       077476  325106  000000          JUMPGE A,(P)    ;OR SIGN BIT OF CHAR ON,(SEE CRR)\r
+       077477  201100  000012          MOVEI A,12      ;APPEND A LINEFEED\r
+       077500  254000  077471          JRST TYO        ;GO TYPE LF\r
+\r
+\r
+\fTENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032   MACRO 10 05:53 24-APR-78 PAGE 4\r
+TENDMP MAC     24-APR-78 14:35         TD10 VERSION\r
+\r
+       077501  607040  004040  ALTTST: TLNN B,4040     ;IF ALPHA CHARACTERS, DONT GET CH\r
+       077502  135600  000005          LDB CH,E        ;LAST CH BEFORE ALT, -40\r
+       077503  326600  077667          JUMPN CH,ALTMD  ;IF CH NOT NULL, GOT PROCESS ALTMODE\r
+       077504  205400  777752  CARRET: MOVSI FILN,-26  ;FILE NAME SPECIFIED. FIRST THING TO\r
+                                                       ;DO IS LOOK IT UP IN DIRECTORY\r
+       077505  336010  077322  LUP:    SKIPN TAB+123(FILN)     ;SEARCH FOR FREE FILE\r
+       077506  332450  077350          SKIPE BLKNO,TAB+151(FILN)       ;CHECK BOTH WORDS\r
+       077507  634440  000011          TDZA BLKNO,BLKNO        ;ENSURE CLEAR BLOCK NUMBER\r
+       077510  542400  077517          HRRM FILN,FREE  ;SAVE NUMBER OF A FREE FILE\r
+       077511  510710  077350          HLLZ G,TAB+151(FILN)    ;ONLY CHECK LEFT OF 2ND WD\r
+       077512  316050  077322          CAMN B,TAB+123(FILN)    ;SEARCH FOR TYPED-IN FILE\r
+       077513  312140  000016          CAME C,G                ;BOTH WORDS\r
+       077514  253400  077505          AOBJN FILN,LUP  ;NOT THIS ONE. KEEP LOOKING\r
+       077515  321400  077522          JUMPL FILN,BEG69        ;IF FILE FOUND, JUMP\r
+       077516  323500  077466          JUMPLE WRITE,ERR        ;IF NOT FOUND, BETTER BE DUMP\r
+       077517  201400  077517  FREE:   MOVEI FILN,.    ;DUMP & NOT FOUND, MAKE ENTRY WHERE FREE\r
+                                                       ;(ADDRESS MODIFIED ABOVE)\r
+       077520  332010  077322          SKIPE TAB+123(FILN)     ;MAKE SURE HOLE AVAILABLE\r
+       077521  254000  077466          JRST ERR        ;NO FREE SLOTS\r
+\r
+       077522  201410  000001  BEG69:  MOVEI FILN,1(FILN)      ;FILN IS FILE #+1; CLR LH\r
+       077523  321500  077455          JUMPL WRITE,LOADS       ;ALL LOAD INSTRUCTIONS\r
+                               IFE MAGT,<\r
+       077524  336000  000012          SKIPN WRITE     ;DELETE? (K COMMAND)\r
+       077525  403040  000003          SETZB B,C       ;YES, KILL FILE\r
+       077526  202050  077321          MOVEM B,TAB+122(FILN)   ;CLEAR IF DELE, ENTER IF NEW DUMP\r
+       077527  512150  077347          HLLZM C,TAB+150(FILN)   ;BOTH WORDS\r
+                                                               ;FALL INTO DUMP ROUTINE\r
+                                                               ;WHICH IS A NO-OP FOR K\r
+\r
+\r
+\fTENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032   MACRO 10 05:53 24-APR-78 PAGE 5\r
+TENDMP MAC     24-APR-78 14:35         TD10 VERSION\r
+\r
+\r
+                               ;DUMP WRITES OUT CORE ONTO TAPE\r
+\r
+                               ;DUMP THRU DUMP2-1 SETS UP POINTERS TO NON-ZERO CORE AREAS. THESE\r
+                               ;AOBJN POINTERS ARE CALLED  "HEADERS", AND PRECEDE THE DATA WHEN\r
+                               ;THE TAPE IS WRITTEN.\r
+                               ;THE FIRST HEADER IS KEPT IN SPNT. SUCCESIVE HEADERS GO INTO THE FIRST\r
+                               ;ZERO WORD FOLLOWING THE BLOCK CORRESPONDING TO THE PREVIOUS HEADER.\r
+                               ;AFTER THE LAST NON-ZERO BLOCK IS (BY DEFINITION) A ZERO, WHICH\r
+                               ;TERMINATES THE HEADER LIST. THIS WORD MAY BE LOCATION FOOF (37176) IF\r
+                               ;CORE WAS FILLED UP TO THE BASE OF TENDMP.\r
+\r
+       077530                  DUMP:                   ;HERE ON D,K. (BLKN)=0, FILN SET UP\r
+       077530  210100  077755          MOVN A,[XWD HIGH-LOW-1,-LOW+1]  ;COUNTER TO EXAMINE \r
+                                                                       ;CORE FOR BLOCKS OF 0\r
+       077531  201340  077751          MOVEI CKS,SPNT-1        ;FIRST HEADER GOES INTO SPNT\r
+       077532  336002  000001  DMP1:   SKIPN 1(A)      ;FIND SOME NON-ZERO CORE\r
+       077533  253100  077532          AOBJN A,.-1     ;ZERO. KEEP LOOKING.\r
+       077534  202100  000004          MOVEM A,D       ;SAVE ADR\r
+       077535  336002  000001          SKIPN 1(A)      ;FIND SOME ZERO CORE\r
+       077536  332002  000002          SKIPE 2(A)      ;DON'T MAKE NEW BLOCK FOR 1 ZERO\r
+       077537  253100  077535          AOBJN A,.-2     ;NON-ZERO. KEEP LOOKING\r
+       077540  274200  000002          SUB D,A         ;GET -COUNT IN BOTH HALVES OF D\r
+       077541  275744  777777          SUBI CT,-1(D)   ;COUNT N WORDS DATA, 1 HDR\r
+       077542  271202  000000          ADDI D,(A)      ;GET F.A.-1 IN RH OF D\r
+       077543  202207  000001          MOVEM D,1(CKS)  ;SAVE HEADER\r
+       077544  325200  077546          JUMPGE D,.+2    ;ON DATA GROUPS,\r
+       077545  200340  000002          MOVE CKS,A      ;GET THE HEADER\r
+                                                       ;F.A.+W.C. IS ADR OF NEXT HEADER\r
+                                                       ;I.E., FIRST 0 AFTER NON-ZERO BLOCK\r
+       077546  321100  077532          JUMPL A,DMP1    ;LOOP IF MORE CORE\r
+       077547  242340  000002          LSH CKS,2       ;SHIFT CORE SIZ FOR DIR\r
+       077550  333000  000012          SKIPLE WRITE    ;IF DUMPING, SET JOBREL\r
+       077551  542350  077347          HRRM CKS,TAB+150(FILN)  ;PUT IN DIR\r
+       077552  201200  077751  DMP2:   MOVEI D,SPNT-1  ;SET UP TO FOLLOW THE HEADERS.\r
+       077553  201757  000001          MOVEI CT,1(CT)  ;CLR LH, COUNT JBLK\r
+       077554  200204  000001  DMP3:   MOVE D,1(D)     ;GET HEADER\r
+       077555  325200  077566          JUMPGE D,THRU   ;IF NULL HEADER FOUND\r
+       077556  201640  077554          MOVEI Q,DMP3    ;Q:= DMP3 AS A RETURN AFTER AOBJN\r
+                                       >\r
+\r
+                               IFN MAGT,<\r
+                                       JRST    ERR             ;HOW DID WE GET HERE?  DLS***\r
+                               ;DUMP WRITES OUT CORE ONTO MAGNETIC TAPE\r
+                               ;DUMP WRITES OUT A CORE IMAGE ON MAGNETIC TAPE WITHOUT\r
+                               ;ZERO COMPRESSION. THE RECORDS ARE 200(OCTAL) WORDS IN LENGTH\r
+                               ;AND BEGIN WITH WORD ZERO. BEFORE STARTING THE TAPE IS REWOUND.\r
+                               ;IT ASSUMES MTA0, AT LEAST FOR NOW.\r
+                                \r
+                                       MTC=    340\r
+                                       MTS=    344\r
+                               DUMP:   CONO    MTC,1000        ;REWIND\r
+                                       CONSO   MTS,300000      ;WAIT FOR BOT OR REWINDING\r
+\r
+\fTENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032   MACRO 10 05:53 24-APR-78 PAGE 5-1\r
+TENDMP MAC     24-APR-78 14:35         TD10 VERSION\r
+\r
+                                       JRST    .-1\r
+                                       CONSO   MTS,40          ;TRANSPORT READY?\r
+                                       JRST    .-1\r
+                                       SETZ    A,\r
+                               DUMP1:  HRLI    A,-200          ;WORDS PER BLOCK\r
+                                       CONO    MTC,64100       ;START WRITE OPERATION\r
+                               DUMP2:  CONSO   MTS,1           ;TD10 READY FOR DATA?\r
+                                       JRST    .-1\r
+                                       DATAO   MTC,(A)         ;SEND OUT DATA\r
+                                       AOBJN   A,DUMP2         ;POINT TO NEXT WORD AND LOOP\r
+                                       CONO    MTS,1           ;STOP THE DRIVE\r
+                                       CONSO   MTS,100         ;WAIT TILL STOPPED\r
+                                       JRST    .-1\r
+                                       CONSZ   MTS,464610      ;ANY ERRORS?\r
+                                       JRST    ERR             ;YES, GO RING BELL\r
+                                       AOSE    [-CORE*20000/200+2]     ;ALL CORE DUMPED?\r
+                                       JRST    DUMP1           ;NO\r
+                                       CONO    MTC,65100       ;WRITE END OF FILE\r
+                                       CONSO   MTS,100         ;DONE?\r
+                                       JRST    .-1\r
+                                       CONO    MTC,65100\r
+                                       CONSO   MTS,100\r
+                                       JRST    .-1\r
+                                       JRST    BEGR            ;ALL DONE\r
+                                       >\r
+\r
+\r
+       077557  265300  077572  LODUMP: JSP P,UWAIT\r
+       077560  255000  000004          JFCL D          ;IN/OUTPUT HEADER\r
+       077561  325200  077451          JUMPGE D,JBLK   ;IF JRST BLOCK READ. CANT HAPPEN ON WRITE\r
+       077562  265300  077572  DMP5:   JSP P,UWAIT\r
+       077563  255004  000001          JFCL 1(D)       ;IN/OUTPUT DATA WORD\r
+       077564  253200  077562          AOBJN D,DMP5    ;COUNT DOWN THE HEADER\r
+       077565  254015  000000          JRST (Q)        ;END OF HEADER. TO DMP3 OR LOAD+1\r
+                               ;WRITE:  1=D  0=K  -1=ELSE\r
+\r
+       077566  265300  077572  THRU:   JSP P,UWAIT     ;WRITE OUT JRST BLOCK\r
+       077567  255000  077454          JFCL SADR       ;FROM LOC SADR\r
+       077570  341240  077627  IFE MODE,<      AOJL E,UWAIT1   ;FILL OUT BLOCK, TO GET CKSM OUT>\r
+       077571  624500  777777          TRZA WRITE,-1   ;THEN SET WRITE TO 0, AND GO CLOBBER\r
+                                                       ;ANY FURTHER BLOCKS WITH THIS FILN\r
+       077572  341240  077627  UWAIT:  AOJL E,UWAIT1   ;RETURN ADDR = (P)      DATA ADDR = @(P)\r
+                                                       ;E IS -WD COUNT IN BLOCK OR POSITIVE\r
+                                                       ;BYTE POINTER FIRST TIME THRU\r
+       077573  554440  077377          HLRZ BLKNO,LINK         ;SET TO FOLLOW LINK\r
+       077574  325500  077576  MNLUP0: JUMPGE WRITE,MNLUP      ;WRITING OR DELETING\r
+       077575  326440  077620          JUMPN BLKNO,RBLK\r
+       077576  354000  000011  MNLUP:  AOSA BLKNO      ;NEXT BLOCK IN THE DIRECTORY\r
+       077577  137040  000013  MNLUP1: DPB B,PNTR      ;FOR DELETE, 0 FILE NAME AND NUMBER\r
+       077600  134100  000013          ILDB A,PNTR     ;SEARCH FILE DIR\r
+       077601  306100  000037          CAIN A,37\r
+       077602  254000  077464          JRST DELE       ;END OF TAB MARKER, DELE GOES TO\r
+                                                       ;CLSTP ON A "D" TO DUMP DIRECTORY\r
+\r
+\fTENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032   MACRO 10 05:53 24-APR-78 PAGE 5-2\r
+TENDMP MAC     24-APR-78 14:35         TD10 VERSION\r
+\r
+       077603  661112  777777          TLO A,-1(WRITE) ;0 ON D, -1 ON K OR K PHASE OF D\r
+       077604  302402  000000          CAIE FILN,(A)   ;IS THIS BLOCK ASSIGNED TO CURRENT FILE?\r
+       077605  326100  077576          JUMPN A,MNLUP   ;OR MAYBE FREE? JUMP IF IN USE BY\r
+                                                       ;ANOTHER FILE.\r
+       077606  137400  000013          DPB FILN,PNTR   ;SMASH AWAY WRITE BLOCK ON D OR K. BUT\r
+                                                       ;SEE MNLUP1 ON K.\r
+       077607  322500  077577          JUMPE WRITE,MNLUP1      ;K COMMAND\r
+       077610  336140  077377          SKIPN C,LINK            ;HAS LINK BEEN SET UP?\r
+       077611  137440  077756          DPB BLKNO,[XWD 101200,LINK]     ;NO. PUT BLOCK IN AS FIRST BLK NO\r
+       077612  506440  077377          HRLM BLKNO,LINK ;PUT BLOCK IN AS LINK\r
+       077613  322140  077574          JUMPE C,MNLUP0          ;JUMP IF THIS IS THE FIRST PASS THRU DIRECTORY\r
+       077614  554440  000003          HLRZ BLKNO,C            ;GET LINKED BLOCK CHOSEN BEFORE\r
+       077615  201140  000177          MOVEI C,177             ;PUT IN A WORD COUNT FOR PIP\r
+       077616  436140  077377          IORM C,LINK             ;AND PUT ALL THAT INTO LINK WORD\r
+       077617  275740  000177          SUBI CT,177             ;DECREMENT WORDS LEFT TO GO\r
+\r
+\r
+\fTENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032   MACRO 10 05:53 24-APR-78 PAGE 6\r
+TENDMP MAC     24-APR-78 14:35         TD10 VERSION\r
+\r
+\r
+                               ;RBLK SEARCHES FOR THE BLOCK IN BLKNO, ENTERS IT GOING FORWARD,\r
+                               ;AND THEN READS INTO CORE, DUMPS CORE, OR COMPARES CORE AS\r
+                               ;DETERMINED BY CONTENTS OF WRITE.\r
+\r
+       077620  560140  077744  RBLK:   HRRO C,TAPENO   ;CURRENT TAPE NO.\r
+                                                       ;SET LH TO  PREPARE FOR JUMPN IN DELE\r
+                               IFE MODE,<\r
+       077621  660040  777777          TRO B,-1        ;ENSURE GOING FORWARD WHEN FIRST SEARCH\r
+       077622  732340  300000          CONSO DTC,300000        ;IS A DIRECTION ASSERTED?\r
+       077623  660140  210000          TRO C,210000    ;NO. GO FORWARD\r
+       077624  606040  400001  RB1:    TRNN B,400001   ;DECIDE WHETHER TO TURN AROUND\r
+       077625  660140  300000          TRO C,300000    ;TURN AROUND\r
+       077626  732203  020200  RBG:    CONO DTC,20200(C)       ;ISSUE THE COMMAND TO TD10.\r
+                                                               ;200=SEARCH, 300=READ, 700=WRITE.\r
+       077627  732700  672700  UWAIT1: CONSZ DTS,672700        ;ANY ERRORS?\r
+       077630  254000  077466          JRST ERR        ;YES. GO DING AND THEN TYI\r
+       077631  732740  000001          CONSO DTS,1     ;DATA READY?\r
+       077632  254000  077627          JRST .-3        ;NO. GO WAIT SOME MORE\r
+       077633  321252  077660          JUMPL E,INOUT(WRITE)    ;IF IN MIDST OF A DT BLOCK, DISPATCH\r
+       077634  732040  000001          DATAI DTC,B     ;NO. SEARCHING. GET BLOCK NO.\r
+       077635  620140  310000          TRZ C,310000    ;CLOBBER DIRECTION BITS IN CONO\r
+       077636  275051  000000          SUBI B,(BLKNO)  ;COMPARE WITH DESIRED BLOCK\r
+       077637  732300  100000          CONSZ DTC,100000        ;COMPLEMENT DECISION IF GOING REVERSE\r
+       077640  640040  777776          TRC B,-2        ;BIT 35 IS FOR  TURNAROUND SPACE.\r
+                               >\r
+\r
+\fTENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032   MACRO 10 05:53 24-APR-78 PAGE 7\r
+TENDMP MAC     24-APR-78 14:35         TD10 VERSION\r
+\r
+\r
+                               IFN MODE,<\r
+                                       SETOB A,B       ;GO FORWARD, SET DC FOR SEARCH\r
+                                       CONSZ UTS,40    ;IS CHECKSUM BEING WRITTEN?\r
+                                       JRST .-1        ;WAIT\r
+                               RB1:    TRNN B,400001   ;DECIDE WHETHER TO TURN AROUND\r
+                                       TRCA C,10000    ;CHANGE DIRECTION AND DELAY\r
+                                       CONSO UTC,200000        ;UNIT SELECTED?\r
+                                       TRO C,2000      ;INVOKE STARTUP DELAY\r
+                               RBG:    CONO UTC,220200(C)      ;COMMAND TO THE  551.\r
+                                                               ;200=SEARCH, 300=READ, 700=WRITE.\r
+                                       CONO DC,4011(A) ;COMMAND TO THE 136.\r
+                               UWAIT1: CONSZ UTS,6     ;ANY ERRORS?\r
+                                       JRST ERR        ;YES. GO DING AND THEN TYI\r
+                                       CONSO DC,1000   ;DATA READY?\r
+                                       JRST .-3        ;NO. WAIT SOME MORE\r
+                                       JUMPL E,INOUT(WRITE)    ;IF IN MIDST OF A DT BLOCK, DISPATCH\r
+                                       DATAI DC,B      ;NO. SEARCHING. GET BLOCK NUMBER\r
+                                       TRZ C,2000      ;DONT DELAY ANY MORE\r
+                                       SUBI B,(BLKNO)  ;COMPARE WITH DESIRED BLOCK\r
+                                       TRNE C,10000    ;COMPLEMENT IF GOING REVERSE\r
+                                       TRC B,-2        ;BIT 35 IS FOR TURNAROUND SPACE.\r
+                               >\r
+       077641  326040  077624          JUMPN B,RB1     ;JUMP IF NOT GOING FORWARD INTO (BLKNO)\r
+       077642  211240  000200          MOVNI E,200     ;WORDS PER BLOCK\r
+       077643  202300  000000          MOVEM P,F       ;SAVE RETURN IN AC0\r
+       077644  660140  000100          TRO C,100       ;READ COMMAND, MAYBE\r
+       077645  323500  077652          JUMPLE WRITE,RB2        ;JUMP IF READ\r
+       077646  660140  000400          TRO C,400       ;CHANGE TO WRITE COMMAND\r
+                               IFN MODE,<MOVNI A,401   ;SET 136 TO OUTPUT>\r
+       077647  327740  077652          JUMPG CT,.+3\r
+       077650  553000  077377          HRRZS LINK      ;IF LAST BLK, KILL LINK\r
+       077651  137240  000013          DPB E,PNTR              ;AND THE DIR BYTE ? 0\r
+       077652  302440  000144  RB2:    CAIE BLKNO,^D100        ;IF NOT DIRECTORY BLOCK\r
+       077653  201300  077655          MOVEI P,.+2     ;SETUP NEW RETURN\r
+       077654  254000  077626          JRST RBG\r
+       077655  340240  077377          AOJ E,LINK      ;IN/OUTPUT LINK\r
+       077656  267300  077627          JRA P,UWAIT1    ;RESTORE CALLER ADR\r
+                                                       ;AND PROCESS DATA WORDS\r
+\r
+\fTENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032   MACRO 10 05:53 24-APR-78 PAGE 8\r
+TENDMP MAC     24-APR-78 14:35         TD10 VERSION\r
+\r
+\r
+                               IFE MODE,<\r
+       077657  732066  000000          DATAI DTC,@(P)  ;READ COMMANDS. GET WORD TO CORE\r
+       077660  254000  077662  INOUT:  JRST UWAIT2     ;INOUT-1 TO INOUT +1 ARE DISPATCHED TO.\r
+       077661  732166  000000          DATAO DTC,@(P)  ;OUTPUT TO TAPE\r
+       077662  346240  077666  UWAIT2: AOJN E,UWAIT3   ;WAS THAT THE LAST WORD IN THE DT BLOCK?\r
+       077663  732600  000001          CONO DTS,1      ;YES. GIVE FUNCTION STOP TO TD10\r
+       077664  732740  100000          CONSO DTS,100000        ;AND WAIT FOR CHECKSUM TO BE DONE\r
+       077665  254000  077664          JRST .-1        ;NOT YET. WAIT\r
+       077666  364246  000000  UWAIT3: SOJA E,0(P)     ;DONE. COMPENSATE FOR THE AOJN ABOVE, AND\r
+                                                       ;RETURN TO CALLER OF UWAIT OR RBLK\r
+                               >\r
+\r
+                               IFN MODE,<\r
+                                       DATAI DC,@(P)   ;READ COMMANDS. GET WORD TO CORE\r
+                               INOUT:  JRST UWAIT2     ;INOUT-1 THRU INOUT+1 ARE DISPATCHED TO.\r
+                                       DATAO DC,@(P)   ;OUTPUT TO TAPE\r
+                               UWAIT2: JRST 0(P)       ;RETURN TO CALLER OF UWAIT OR RBLK.\r
+                               >\r
+\r
+\fTENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032   MACRO 10 05:53 24-APR-78 PAGE 9\r
+TENDMP MAC     24-APR-78 14:35         TD10 VERSION\r
+\r
+\r
+       077667  201100  000044  ALTMD:  MOVEI A,"$"\r
+       077670  265300  077471          JSP P,TYO       ;ALTMODE IS PRINTED AS "$"\r
+\r
+                               IFE MAGT,<\r
+       077671  302600  000053          CAIE CH,"K"-40  ;FOR K, WRITE := 0\r
+       077672  306600  000044          CAIN CH,"D"-40  ;FOR D, WRITE :=1\r
+       077673  343500  077672          AOJLE WRITE,.-1 ;COUNT (WRITE)\r
+                                       >\r
+\r
+                               IFN MAGT,<\r
+                                       CAIN CH,"D"-40  ;FOR D, WRITE :=1\r
+                                       AOJLE WRITE,.-1 ;COUNT (WRITE)\r
+                                       JUMPG WRITE,DUMP        ;D MEANS GO DUMP ON MAG TAPE\r
+                                       >\r
+\r
+       077674  306600  000047          CAIN CH,"G"-40  ;GO TO PROGRAM?\r
+       077675  254020  077454          JRST @SADR      ;YES. JUMP OUT\r
+       077676  306600  000046          CAIN CH,"F"-40  ;FILE DIR PRINT?\r
+       077677  254000  077732          JRST FDIR       ;YES. PRINT FILE DIR OF THIS TAPE\r
+       077700  306600  000072          CAIN CH,"Z"-40  ;ZERO DIRECTORY?\r
+       077701  254000  077721          JRST ZDIR       ;DISPATCH\r
+       077702  303600  000027          CAILE CH,27     ;SKIP IF OCTAL NUMBER\r
+       077703  254000  077414          JRST TYI        ;NO. GO PROCESS FILE NAME\r
+       077704  242040  000003          LSH B,3 ;CONVERT SIXBIT TO OCTAL\r
+       077705  246000  000003          LSHC F,3        ;F+1=B\r
+       077706  326040  077704          JUMPN B,.-2     ;MAY BE MORE THAN 1 DIGIT (START ADR)\r
+       077707  303000  000007          CAILE F,7       ;SKIP IF ONE DIGIT\r
+       077710  267200  077451          JRA D,JBLK      ;D:=SADR. DISPATCH TO JBLK WHICH SAVES SADR.\r
+       077711                  OPNTP:                  ;SHIFT UNIT NUMBER LEFT FOR CONO\r
+       077711  242000  000011  IFE MODE,<LSH F,11>\r
+                               IFN MODE,<LSH F,3>\r
+       077712  542000  077744          HRRM F,TAPENO   ;SAVE IN CORE\r
+       077713  201440  000144  CLSTP:  MOVEI BLKNO,^D100       ;BLK NO OF FILE DIR\r
+       077714  401540  000000          SETZI PNTR,0    ;DONT CLOBBER DIRECTORY BYTE\r
+       077715  265300  077620          JSP P,RBLK      ;MOVE TO BLOCK 100\r
+       077716  255005  077377          JFCL TAB+200(E) ;READ OR WRITE DIR TAB AS DETERMINED BY WRITE\r
+       077717  341240  077627          AOJL E,UWAIT1   ;COUNT THE 200 WORDS\r
+       077720  254000  077402          JRST BEG        ;GO ASK FOR NEXT COMMAND\r
+\r
+       077721  200100  077757  ZDIR:   MOVE A,[XWD FOOF,TAB]   ;FOOF IS CLEAR\r
+       077722  251100  077375          BLT A,TAB+176   ;CLEAR DIRECTORY, EXCEPT LAST WORD FOR ID\r
+       077723  205100  757000          MOVSI A,(36B4+36B9)     ;RESERVE BLOCKS 1 & 2\r
+       077724  202100  077177          MOVEM A,TAB     ;IN DIRECTORY\r
+       077725  205100  017000          MOVSI A,(36B9)\r
+       077726  202100  077215          MOVEM A,TAB+16  ;BLK 100 (DIR) IS RESERVED TOO\r
+       077727  525100  000007          HRLOI A,7       ;AND BLOCKS >1100 ARE EOT\r
+       077730  202100  077321          MOVEM A,TAB+122 ;END OF BYTE TAB\r
+       077731  344500  077465          AOJA WRITE,CLS1 ;SET WRITE TO OUTPUT\r
+                                                               ;AND DUMP BLK 100.\r
+\r
+\fTENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032   MACRO 10 05:53 24-APR-78 PAGE 10\r
+TENDMP MAC     24-APR-78 14:35         TD10 VERSION\r
+\r
+       077732  211400  000026  FDIR:   MOVNI FILN,26   ;26 FILES (OCTAL)\r
+       077733  265300  077467  FD2:    JSP P,CRR       ;CR-LF\r
+       077734  336150  077350  FD3:    SKIPN C,TAB+123+26(FILN)        ;FIRST WORD OF NAME. IS IT BLANK?\r
+       077735  344140  077741          AOJA C,FD1      ;YES. SET C=1 AND LOOP\r
+       077736  265700  077743          JSP G,SIXBP     ;PRINT FIRST WORD AND A SPACE\r
+       077737  510150  077376          HLLZ C,TAB+151+26(FILN) ;SECOND WORD OF FILE NAME\r
+       077740  265700  077743          JSP G,SIXBP     ;PRINT AND CLEAR C\r
+       077741  341403  077733  FD1:    AOJL FILN,FD2(C)        ;CAN JUMP TO FD2 OR FD3. COUNT FILES.\r
+       077742  254000  077402          JRST BEG        ;ALL FILES PRINTED OR BLANK. RETURN.\r
+\r
+       077743  201040  000007  SIXBP:  MOVEI B,7       ;SIXBP PRINTS C(C) IN 6BIT\r
+                                                       ;AND ADDS A TRAILING SPACE\r
+                                                       ;AND LEAVES (C)=0\r
+\r
+       077744                  TAPENO:                 ;USE ADR AS TEMP FOR CURRENT UNIT\r
+       077744  401100  000000  SIXBP1: SETZI A,.-.     ;CLEAR A\r
+       077745  246100  000006          LSHC A,6\r
+       077746  271100  000040          ADDI A,40       ;SIXBIT TO ASCII\r
+       077747  265300  077471          JSP P,TYO       ;TYPE OUT CHARACTER\r
+       077750  367040  077744          SOJG B,SIXBP1   ;LOOP IF MORE CHARACTERS\r
+       077751  254016  000000          JRST 0(G)       ;RETURN\r
+\r
+       077752  000000  000000  SPNT:   0               ;POINTER TO HEADERS IN CORE.\r
+\r
+       077753                          LIT\r
+       077753  000500  077176\r
+       077754  000040  000041\r
+       077755  077154  777761\r
+       077756  101200  077377\r
+       077757  077176  077177\r
+\r
+\r
+                               IFN MAGT,<\r
+                               SLOP:   MOVE    .+3\r
+                                       MOVEM   COMPTR\r
+                                       JRST    BEGR+1\r
+                                       XWD     440700,.+1\r
+                                       BYTE    (7) "0",33,177\r
+                               LAST:   JRST    SLOP\r
+                                       >\r
+                               IFE MAGT,<\r
+                       000000          SLOP=COMPTR-17-.        ;THIS MANY WORDS BEFORE RESERVED AREA\r
+                                                               ;FOR COMMAND STRINGS.\r
+                               ;!!!!!  NOTE: ABOVE PARAMETER MUST COME OUT POSITIVE IN\r
+                               ;       ORDER TO MEET THE DOCUMENTATION OF RESERVED COMMAND STRING AREA.\r
+                               ;\r
+                               ;       THIS MEANS ANY CODE ADDED MUST BE COMPENSATED FOR BY\r
+                               ;       A CORRESPONDING TIGHTENING SOMEWHERE. GOOD LUCK.\r
+                               ;       TENDMP IS VERY TIGHT ALREADY.\r
+                                       >\r
+\r
+                       077400          END BEGR\r
+\r
+\r
+\fTENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032   MACRO 10 05:53 24-APR-78 PAGE 10-1\r
+TENDMP MAC     24-APR-78 14:35         TD10 VERSION\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 000000\r
+ABSLUTE BREAK IS 077760\r
+\r
+8K CORE USED\r
+\r
+\fTENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032   MACRO 10 05:53 24-APR-78 PAGE 11\r
+TENDMP MAC     24-APR-78 14:35         SYMBOL TABLE\r
+\r
+A              000002  \r
+ALTMD          077667  \r
+ALTTST         077501  \r
+B              000001  \r
+BEG            077402  \r
+BEG1           077404  \r
+BEG69          077522  \r
+BEGR           077400  \r
+BELL           077423  \r
+BLKNO          000011  \r
+C              000003  \r
+CARRET         077504  \r
+CH             000014  \r
+CKS            000007  \r
+CLS1           077465  \r
+CLSTP          077713  \r
+COMPTR         077777  \r
+CORE           000004  \r
+CRCH           077413  \r
+CRR            077467  \r
+CT             000017  \r
+D              000004  \r
+DC             000200  \r
+DELE           077464  \r
+DMP1           077532  \r
+DMP2           077552  \r
+DMP3           077554  \r
+DMP5           077562  \r
+DTC            000320  \r
+DTS            000324  \r
+DUMP           077530  \r
+E              000005  \r
+ERR            077466  \r
+F              000000  \r
+FD1            077741  \r
+FD2            077733  \r
+FD3            077734  \r
+FDIR           077732  \r
+FILN           000010  \r
+FOOF           077176  \r
+FREE           077517  \r
+G              000016  \r
+HIGH           077175  \r
+INOUT          077660  \r
+JBLK           077451  \r
+LINK           077377  \r
+LOAD           077462  \r
+LOADS          077455  \r
+LODUMP         077557  \r
+LOW            000020  \r
+LOZAD          077175  \r
+LUP            077505  \r
+MAGT           000000  \r
+\r
+\fTENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032   MACRO 10 05:53 24-APR-78 PAGE 11-1\r
+TENDMP MAC     24-APR-78 14:35         SYMBOL TABLE\r
+\r
+MNLUP          077576  \r
+MNLUP0         077574  \r
+MNLUP1         077577  \r
+MODE           000000  \r
+NEXT           077422  \r
+NEXT1          077446  \r
+OPNTP          077711  \r
+P              000006  \r
+PNTR           000013  \r
+Q              000015  \r
+RB1            077624  \r
+RB2            077652  \r
+RBG            077626  \r
+RBLK           077620  \r
+RCH            077433  \r
+REL            000000  \r
+SADR           077454  \r
+SIXBP          077743  \r
+SIXBP1         077744  \r
+SLOP           000000  \r
+SPACE          077417  \r
+SPNT           077752  \r
+TAB            077177  \r
+TAPENO         077744  \r
+THRU           077566  \r
+TTY            000120  SPD\r
+TYI            077414  \r
+TYO            077471  \r
+UTC            000210  \r
+UTS            000214  \r
+UWAIT          077572  \r
+UWAIT1         077627  \r
+UWAIT2         077662  \r
+UWAIT3         077666  \r
+WRITE          000012  \r
+ZDIR           077721  \r
+\fSpooler runtime 0 Seconds, 0 KCS, 2085 disk reads, 74 disk writes, 865 pages\r
+ ***END*** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 ***END*** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 ***END*** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 ***END*** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 ***END*** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 ***END*** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 ***END*** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 ***END*** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 ***END*** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 ***END*** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 ***END*** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 ***END*** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 ***END*** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 ***END*** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 ***END*** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 ***END*** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 ***END*** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 ***END*** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 ***END*** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 ***END*** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 ***END*** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 ***END*** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 ***END*** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 ***END*** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 ***END*** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 ***END*** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 ***END*** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 ***END*** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 ***END*** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13 ***END*** Name: MON45        Address: **** UNKNOWN ****  CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****    \r
+\13   \r
+\13   \r
+\13   \r
+\13\f
\ No newline at end of file
diff --git a/src/m140n.lst b/src/m140n.lst
new file mode 100644 (file)
index 0000000..c95f7b4
--- /dev/null
@@ -0,0 +1,46367 @@
+LPTSPL Version 3(105)  Running on LPT000\r
+ **START** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 **START** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 **START** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 **START** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 **START** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 **START** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 **START** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 **START** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 **START** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 **START** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 **START** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 **START** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 **START** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 **START** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 **START** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 **START** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 **START** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 **START** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 **START** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 **START** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 **START** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 **START** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 **START** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 **START** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 **START** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 **START** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 **START** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 **START** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 **START** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 **START** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13\f   CCCCCCCCCCCC      DDDDDDDDDDDD         RRRRRRRRRRRR            SSSSSSSSSSSS      EEEEEEEEEEEEEEE      RRRRRRRRRRRR   \r
+   CCCCCCCCCCCC      DDDDDDDDDDDD         RRRRRRRRRRRR            SSSSSSSSSSSS      EEEEEEEEEEEEEEE      RRRRRRRRRRRR   \r
+   CCCCCCCCCCCC      DDDDDDDDDDDD         RRRRRRRRRRRR            SSSSSSSSSSSS      EEEEEEEEEEEEEEE      RRRRRRRRRRRR   \r
+CCC                  DDD         DDD      RRR         RRR      SSS                  EEE                  RRR         RRR\r
+CCC                  DDD         DDD      RRR         RRR      SSS                  EEE                  RRR         RRR\r
+CCC                  DDD         DDD      RRR         RRR      SSS                  EEE                  RRR         RRR\r
+CCC                  DDD         DDD      RRR         RRR      SSS                  EEE                  RRR         RRR\r
+CCC                  DDD         DDD      RRR         RRR      SSS                  EEE                  RRR         RRR\r
+CCC                  DDD         DDD      RRR         RRR      SSS                  EEE                  RRR         RRR\r
+CCC                  DDD         DDD      RRRRRRRRRRRR            SSSSSSSSS         EEEEEEEEEEEE         RRRRRRRRRRRR   \r
+CCC                  DDD         DDD      RRRRRRRRRRRR            SSSSSSSSS         EEEEEEEEEEEE         RRRRRRRRRRRR   \r
+CCC                  DDD         DDD      RRRRRRRRRRRR            SSSSSSSSS         EEEEEEEEEEEE         RRRRRRRRRRRR   \r
+CCC                  DDD         DDD      RRR   RRR                        SSS      EEE                  RRR   RRR      \r
+CCC                  DDD         DDD      RRR   RRR                        SSS      EEE                  RRR   RRR      \r
+CCC                  DDD         DDD      RRR   RRR                        SSS      EEE                  RRR   RRR      \r
+CCC                  DDD         DDD      RRR      RRR                     SSS      EEE                  RRR      RRR   \r
+CCC                  DDD         DDD      RRR      RRR                     SSS      EEE                  RRR      RRR   \r
+CCC                  DDD         DDD      RRR      RRR                     SSS      EEE                  RRR      RRR   \r
+   CCCCCCCCCCCC      DDDDDDDDDDDD         RRR         RRR      SSSSSSSSSSSS         EEEEEEEEEEEEEEE      RRR         RRR\r
+   CCCCCCCCCCCC      DDDDDDDDDDDD         RRR         RRR      SSSSSSSSSSSS         EEEEEEEEEEEEEEE      RRR         RRR\r
+   CCCCCCCCCCCC      DDDDDDDDDDDD         RRR         RRR      SSSSSSSSSSSS         EEEEEEEEEEEEEEE      RRR         RRR\r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  11:23:08\r
+File: DSKB1 :CDRSER.LST   [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:18
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:2632 \r
+File will be deleted after printing\r
+\f\rCDRSER - CARD READER SERVICE                 PAGE 1\r
+        8-2-65\r
+\r
+                                00010           XLIST\r
+                                01930          LIST\r
+\r\fCDRSER - CARD READER SERVICE                 PAGE 7\r
+        8-2-65\r
+\r
+\r
+                                00010   TITLE CDRSER - CARD READER SERVICE\r
+                                00020   SUBTTL  8-2-65\r
+\r
+\r
+                                00050   EXTERNAL STODAT, ADVBFF, IOSET, SETIOD, SETBYT, STOSQD\r
+                                00060   EXTERNAL CDRSAV, CDRCHN,  CDRRET,ILLOUT,PIOMOD\r
+                                00070   INTERNAL CDRINT\r
+\r
+                                00090   ;DEVICE DATA BLOCK LINKAGE\r
+                                00100   EXTERNAL CDRDB,CDRDAT,CRDIS\r
+                                00110   ENTRY CDRDSP\r
+\r\fCDRSER - CARD READER SERVICE                 PAGE 2\r
+        8-2-65\r
+\r
+\r
\r
+                                00150   ,CDR PARAMETER ASSIGNMENTS\r
\r
+                                00170   ,   CDR CONTROL REGISTER\r
+                        000010  00180             CRDONE=10;            DONE FLAG\r
+                        000020  00190             CRBUSY=20;            BUSY FLAG\r
+                        000040  00200             CRBIN=40;             BINARY\r
+                        000100  00210             CRALL=100;            ALL FLAG\r
+                        000200  00220             CRMISS=200;           DATA MISSED\r
+                        000400  00230             CREOC=400;            END OF CARD\r
+                        001000  00240             CREOFF=1000;          END OF FILE\r
+                        002000  00250             CRERR=2000;           ERROR\r
+                        000002  00260             CHCHN=2\r
+                                00270   ,   ACCUMULATORS\r
+                        000010  00280             CRDAT1=TEM\r
+                        000011  00290             CRAC=JDAT\r
\r
+                                00310   ,   SPECIAL IO STATUS WORD ASSIGNMENTS\r
+                        040000  00320             CRMFST=40000;         FIRST CARD\r
+                        200000  00330             CRMBIN=200000;        BINARY\r
+                        100000  00340             CRMIMG=100000;        IMAGE\r
+                                00350   ,   SPECIAL CHARACTERS\r
+                        000032  00360             S2EOF=32;             END OF FILE\r
\r
+                                00380   REPEAT 0,<\r
+                                00390   ,CDR DATA BLOCK\r
+                                00400   \r
+                                00410   CDRDAT:   SIXBIT /CRD\r
+                                00420    34\r
+                                00430    0\r
+                                00440    EXP CDRDSP\r
+                                00450    XWD 1400+PROG,10403\r
+                                00460    0\r
+                                00470    0 \r
+                                00480    XWD PROG,0\r
+                                00490    0\r
+                                00500    0\r
+                                00510   CRDIS:    JRST .\r
+                                00520   >\r
+\r
+                                00540   ,CDR SERVICE DISPATCH TABLE\r
+\r
+        000000' 715200  000000  00560   CDRDSP:   CONO CR,0 ;RELEASE\r
+        000001' 263140  000000  00570             POPJ PDP,;            CLOSE\r
+        000002' 254000  000000* 00580             JRST ILLOUT           ;OUTPUT\r
+        000003' 254000  000004' 00590             JRST CRINP;           INPUT\r
+\r\fCDRSER - CARD READER SERVICE                 PAGE 3\r
+        8-2-65\r
+\r
+\r
+\r
+        000004' 621000  000002  00630   CRINP:    TLZ IOS,IOBEG;        VIRGIN DEVICE?  IOBUF:=0\r
+\r
+        000005' 661000  040004  00650   CDRIN1:   TLO IOS,IOFST+CRMFST;         IOFST:=CRMFST:=1\r
+        000006' 135040  000000* 00660             LDB TAC,PIOMOD\r
+        000007' 306040  000014  00670             CAIN TAC,B;           MODE=BINARY?\r
+        000010' 661000  200000  00680             TLO IOS,CRMBIN;       YES.  CRMBIN:=1\r
+        000011' 306040  000010  00690             CAIN TAC,I;           MODE=IMAGE?\r
+        000012' 661000  100000  00700             TLO IOS,CRMIMG;       YES.  CRMIMG:=1\r
+        000013' 660000  010000  00710             TRO IOS,IOACT;        IOACT:=1\r
+        000014' 202006  000002  00720             MOVEM IOS,DEVIOS(DEVDAT)\r
+        000015' 260140  000000* 00730             PUSHJ PDP,SETBYT;     TAC0-5:=TAC12-13:=0; TAC6-11:=BYTE SIZE\r
+        000016' 202046  000010  00740             MOVEM TAC,DEVPTR(DEVDAT)\r
+        000017' 201040  000000* 00750             MOVEI TAC, CDRCHN;    ASSIGN PI CHANNEL\r
+        000020' 715201  000160  00760             CONO CR,CRBIN+CRALL+CRBUSY(TAC);              SELECT BINARY, ALL\r
+        000021' 263140  000000  00770             POPJ PDP,;            RETURN\r
+\r\fCDRSER - CARD READER SERVICE                 PAGE 4\r
+        8-2-65\r
+\r
+\r
+\r
+        000022' 715340  000010  00810   CDRINT:   CONSO CR,CRDONE;      DONE FLAG?\r
+        000023' 254000  000022' 00820             JRST CDRINT\r
+        000024' 264000  000000* 00830             JSR CDRSAV;                   SAVE ACCUMULATORS AND ESTABLI\r
+        000025' 201300  000000* 00840             MOVEI DEVDAT,CDRDAT\r
+        000026' 200006  000002  00850             MOVE IOS,DEVIOS(DEVDAT)\r
+        000027' 715300  002200  00860             CONSZ CR,  CRMISS+CRERR;      DATA MISSED OR ERROR?\r
+        000030' 660000  200000  00870             TRO IOS,IODERR;       IODERR:=1\r
+        000031' 715040  000010  00880             DATAI CR, CRDAT1;     INPUT INFORMATION\r
+        000032' 260140  000000* 00890             PUSHJ PDP,IOSET;      PROG:=C(JBTADR18-35), ITEM:= C(DEVPTR)\r
+        000033' 627000  040000  00900             TLZN IOS,CRMFST;      FIRST CARD?  CRMFST:=0\r
+        000034' 256000  000000* 00910             XCT CRDIS             ;NOT FIRST, GO TO SUBROUTINE\r
+\r
+        000035' 640400  007400  00930   CRFIRS:   TRC CRDAT1, 7400;     FIRST COL OF FIRST CARD\r
+        000036' 646400  007400  00940             TRCN CRDAT1,7400;     Y, X, 0, OR 1 PUNCH?\r
+        000037' 254000  000047' 00950             JRST CREOFC;                  NO, END OF FILE CARD\r
+        000040' 715300  001000  00960             CONSZ CR, CREOFF;     END OF FILE?\r
+        000041' 254000  000051' 00970             JRST CREOF;                   YES\r
+        000042' 603000  200000  00980             TLNE IOS,CRMBIN;      CRMBIN=1?\r
+        000043' 254000  000125' 00990             JRST CRFSTB;          YES\r
+        000044' 603000  100000  01000             TLNE IOS,CRMIMG;      CRMIMG=1?\r
+        000045' 254000  000144' 01010             JRST CRFSTI;          YES\r
+        000046' 254000  000067' 01020             JRST CRFSTL+1\r
+\r
+        000047' 201040  000017* 01040   CREOFC:   MOVEI TAC,CDRCHN      ;WAIT FOR EOC\r
+        000050' 715201  000020  01050             CONO CR,CRBUSY(TAC)\r
+        000051' 661000  000040  01060   CREOF:    TLO IOS, IOEND;       IUEND:=1\r
+        000052' 201240  000032  01070             MOVEI DAT,S2EOF\r
+        000053' 260140  000000* 01080             PUSHJ PDP,STODAT;     STORE END OF FILE CHARACTER\r
+        000054' 330000  000000  01090             SKIP\r
+        000055' 254000  000217' 01100             JRST CRLST2;          BLOCK FULL OR BLOCK COMPLETE\r
+        000056' 201040  000056' 01110             MOVEI TAC,.;          DATA STATED PROPERLY\r
+        000057' 542040  000034* 01120             HRRM TAC, CRDIS;      SET DISPATCH TO RETURN HERE.\r
+        000060' 715340  000400  01130             CONSO CR, CREOC;      END OF CARD?\r
+        000061' 254000  000226' 01140             JRST CREXIT;          NO.\r
+        000062' 260140  000000* 01150             PUSHJ PDP,ADVBFF;     ADVANCE BUFFER\r
+        000063' 330000  000000  01160             SKIP\r
+        000064' 661000  000002  01170             TLO IOS,IOBEG;        IOBEG:=1\r
+        000065' 254000  000231' 01180             JRST CROFF\r
+\r
+        000066' 260140  000164' 01200   CRFSTL:   PUSHJ PDP, CRITMS;    STORE ITEM\r
+        000067' 201040  000074' 01210             MOVEI TAC,CRCV;       TAC:=CRCV.   HOLLERITH READ\r
+\r
+        000070' 715240  000002  01230   CRREST:   CONI CR, TAC1\r
+        000071' 620100  000160  01240             TRZ TAC1, CRBIN+CRALL+CRBUSY; SELECT HOLERITH, ALL:=0, BUS\r
+        000072' 715202  000000  01250             CONO CR, (TAC1);      RESET CARD READER\r
+        000073' 254000  000112' 01260             JRST CREXT1;          CHANGE DISPATCH AND GO\r
+\r\fCDRSER - CARD READER SERVICE                 PAGE 5\r
+        8-2-65\r
+\r
+\r
+                                01290   , HOLLERITH READ MODE\r
+\r
+        000074' 200440  000241' 01310   CRCV:     MOVE CRAC, [POINT 6,CRDAT1,23];       COLUMNS 79 AND 80\r
+        000075' 715340  000400  01320             CONSO CR,CREOC;       END OF CARD?\r
+        000076' 200440  000142' 01330             MOVE CRAC,CRC1;       NO.  LOOK AT ALL CHARACTERS\r
+        000077' 134040  000011  01340             LDBI TAC,CRAC         ;CONVERT HOLLERITH\r
+        000100' 231040  000005  01350             IDIVI TAC, 5;         TO ASCII\r
+        000101' 135242  000206' 01360             LDB DAT, CRCV1(TAC1)\r
+        000102' 260140  000053* 01370             PUSHJ PDP,STODAT;     STORE IN BU FER\r
+        000103' 254000  000052' 01380             JRST CREOF+1\r
+        000104' 254000  000115' 01390             JRST CRINS\r
+        000105' 603440  760000  01400             TLNE CRAC, 760000;    WORD COMPLETE?\r
+        000106' 254000  000077' 01410             JRST CRCV+3;          NO\r
+        000107' 715300  000400  01420             CONSZ CR,CREOC;       END OF CARD?\r
+        000110' 254000  000115' 01430             JRST CRINS;           YES\r
+        000111' 201040  000074' 01440             MOVEI TAC, CRCV;      NEXT DISPATCH TO CRCV.  HOLLERITH READ\r
+\r
+        000112' 542040  000057* 01460   CREXT1:   HRRM TAC, CRDIS;      UPDATE DISPTACHER\r
+        000113' 254000  000226' 01470             JRST CREXIT\r
+        000114' 000000  006424  01480   CRCON:    OCT 6424\r
+\r
+        000115' 200440  000143' 01500   CRINS:    MOVE CRAC,CRC2;       BLOCK FULL OR BLOCK COMPLETE  INSERT CR\r
+        000116' 134240  000011  01510             LDBI DAT, CRAC\r
+        000117' 260140  000102* 01520             PUSHJ PDP,STODAT;     STORE CHAR\r
+        000120' 330000  000000  01530             SKIP;                 EXIT1.\r
+        000121' 254000  000217' 01540             JRST CRLST2;          EXIT2.  BLOCK FULL OR BLOCK COMPLETE\r
+        000122' 603440  760000  01550             TLNE CRAC,760000;     THATS ALL?\r
+        000123' 254000  000116' 01560             JRST CRINS+1;         NO\r
+        000124' 254000  000213' 01570             JRST CRLAST;          END OF CARD\r
+\r\fCDRSER - CARD READER SERVICE                 PAGE 6\r
+        8-2-65\r
+\r
+\r
+                                01600   , BINARY READ MODE\r
+\r
+        000125' 135040  000242' 01620   CRFSTB:   LDB TAC,[POINT 3,CRDAT1,35];  7-9 PUNCH?\r
+        000126' 302040  000005  01630             CAIE TAC, 5\r
+        000127' 660000  400000  01640             TRO IOS, IOIMPM;      YES.  IOIMPM:=1\r
+        000130' 715240  000001  01650             CONI CR, TAC\r
+        000131' 620040  000120  01660             TRZ TAC, CRBUSY+CRALL;        BUSY FLAG:=0, ALL FLAG;=0\r
+        000132' 715201  000000  01670             CONO CR,(TAC);        RESET TO RE-READ COL 3\r
+        000133' 201040  000135' 01680             MOVEI TAC, CRCOL2;    DISPATCH TO CRCOL2 ON NEXT INTERRUPT\r
+        000134' 254000  000112' 01690             JRST CREXT1\r
+\r
+        000135' 201040  000137' 01710   CRCOL2:   MOVEI TAC, CRCOL4;    DISPATCH TO CRCOL4 ON NEXT INTERRUPT\r
+        000136' 542040  000112* 01720             HRRM TAC,CRDIS\r
+\r
+        000137' 200240  000010  01740   CRCOL4:   MOVE DAT, CRDAT1\r
+        000140' 260140  000165' 01750             PUSHJ PDP, CRITMS+1;          STORE THE WORD FROM DAT\r
+        000141' 254000  000226' 01760             JRST CREXIT\r
+\r
+        000142' 440600  000010  01780   CRC1:     POINT 6,CRDAT1\r
+        000143' 170700  000114' 01790   CRC2:     POINT 7,CRCON,20\r
+\r\fCDRSER - CARD READER SERVICE                 PAGE 7\r
+        8-2-65\r
+\r
+\r
+                                01820   ,IMAGE READ MODE\r
+\r
+        000144' 201040  000147' 01840   CRFSTI:   MOVEI TAC,  .+3;      DISPATCH TO CRFSTI + 3 ON NEXT INTERRUP\r
+        000145' 137400  000243' 01850             DPB CRDAT1,[POINT 24,CRTEM,23];       SAVE COLUMN 1 AS MI\r
+        000146' 254000  000112' 01860             JRST CREXT1\r
+\r
+        000147' 260140  000164' 01880             PUSHJ PDP, CRITMS;    SET ITEM AND CHECK SIZE\r
+        000150' 434400  000240' 01890             IOR CRDAT1, CRTEM;    CRTEM12-35:=COL 1 AND 2\r
+        000151' 201040  000153' 01900             MOVEI TAC, .+2;       DISPATCH TO CRFSTI + 7 ON NEXT INTERRUP\r
+        000152' 254000  000157' 01910             JRST CRIM1+1\r
+\r
+        000153' 715240  000002  01930             CONI CR, TAC1\r
+        000154' 620100  000120  01940             TRZ TAC1, CRBUSY+CRALL;       BUSY FLAG:=ALL FLAG:=0\r
+        000155' 715202  000000  01950             CONO CR, (TAC1);      RESET READER ON COL 3\r
+\r
+        000156' 201040  000156' 01970   CRIM1:    MOVEI TAC,.;          DISPATCH TO CRIM1 ON NEXT INTERRUPT\r
+        000157' 715300  000400  01980             CONSZ CR, CREOC;      END OF CARD?\r
+        000160' 254000  000213' 01990             JRST CRLAST;          YES\r
+        000161' 202026  000010  02000             MOVEM @DEVPTR(DEVDAT)\r
+        000162' 350006  000010  02010             AOS DEVPTR(DEVDAT);   INCREMENT ITEM POINTER\r
+        000163' 254000  000112' 02020             JRST CREXT1\r
+\r
+        000164' 661000  000004  02040   CRITMS:   TLO IOS, IOFST;       IOFST:=1\r
+        000165' 260140  000117* 02050             PUSHJ PDP, STODAT;    STORE WORD\r
+        000166' 254000  000052' 02060             JRST CREOF+1\r
+        000167' 254000  000052' 02070             JRST CREOF+1\r
+        000170' 263140  000000  02080             POPJ PDP,;            RETURN\r
+\r
+        000171' 575426  231550  02100   CRCNV:    ASCII ._123456789.\r
+        000172' 325546  734162\r
+        000173' 301730  057116  02110             ASCII .0=@^'\ /ST.\r
+        000174' 561005  751650\r
+        000175' 526552  754262  02120             ASCII .UVWXYZ;,(".\r
+        000176' 551665  424104\r
+        000177' 215125  545226  02130             ASCII .#%-JKLMNOP.\r
+        000200' 462331  647640\r
+        000201' 506447  222124  02140             ASCII .QR:$*[>&+A.\r
+        000202' 555744  625602\r
+        000203' 412070  442614  02150             ASCII :BCDEFGHI?.:\r
+        000204' 436211  137534\r
+        000205' 246727  420576  02160             ASCII :)]<!?:\r
+\r
+        000206' 350701  000171' 02180   CRCV1:    POINT 7,CRCNV(TAC),6\r
+        000207' 260701  000171' 02190             POINT 7,CRCNV(TAC),13\r
+        000210' 170701  000171' 02200             POINT 7,CRCNV(TAC),20\r
+        000211' 100701  000171' 02210             POINT 7,CRCNV(TAC),27\r
+        000212' 010701  000171' 02220             POINT 7,CRCNV(TAC),34\r
+\r\fCDRSER - CARD READER SERVICE                 PAGE 8\r
+        8-2-65\r
+\r
+\r
+        000213' 301200  000122  02250   CRLAST:   CAIL ITEM,^D82;       C(ITEM)<82?\r
+        000214' 254000  000234' 02260             JRST CRCONT;          NO\r
+        000215' 260140  000000* 02270   CRLST0:   PUSHJ PDP,STOSQD;     STORE WORD COUNT\r
+        000216' 330000  000000  02280             SKIP\r
+        000217' 260140  000062* 02290   CRLST2:   PUSHJ PDP,ADVBFF;     ADVANCE BUFFER\r
+        000220' 254000  000231' 02300             JRST CROFF;           EXIT1.  NECT BUFFER FULL\r
+        000221' 201040  000047* 02310             MOVEI TAC, CDRCHN\r
+        000222' 715201  000160  02320             CONO CR, CRBIN+CRALL+CRBUSY(TAC);     SELECT BINARY, ALL\r
+                                02330                                   ,ASSIGN PI CHANNEL\r
+        000223' 661000  040004  02340   CRLST1:   TLO IOS,IOFST+CRMFST;         IOFST:=CRMFST:=1\r
+        000224' 623000  000001  02350             TLZE IOS, IOW;        IN A WAIT?  IOW:=0\r
+        000225' 260140  000000* 02360             PUSHJ PDP, SETIOD;    IOWS:=1\r
+\r
+        000226' 202006  000002  02380   CREXIT:   MOVEM IOS,DEVIOS(DEVDAT);     C(CRIOS):=C(IOS)\r
+        000227' 202206  000011  02390             MOVEM ITEM, DEVCTR(DEVDAT);   C(CRCTR):=C(ITEM)\r
+        000230' 254000  000000* 02400             JRST CDRRET;          RESTORE ACCUMULATORS AND DISMISS INTERR\r
+\r
+        000231' 620000  010000  02420   CROFF:    TRZ IOS,IOACT;        IOACT:=0\r
+        000232' 715200  000000  02430             CONO CR,0;            CLEAR CDR CONTROL REGISTER\r
+        000233' 254000  000223' 02440             JRST CRLST1\r
+\r
+        000234' 201040  000221* 02460   CRCONT:   MOVEI TAC, CDRCHN;    ASSIGN PI CHANNEL\r
+        000235' 715201  000160  02470             CONO CR, CRBIN+CRALL+CRBUSY(TAC);     SELECT BINARY, ALL,\r
+        000236' 661000  040000  02480             TLO IOS,CRMFST;       CRMFST:=1\r
+        000237' 254000  000226' 02490             JRST CREXIT\r
+\r
+        000240' 000000  000000  02510   CRTEM:    0\r
+                                02520   END,\r
+        000241' 140600  000010\r
+        000242' 000300  000010\r
+        000243' 143000  000240'\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 000244\r
+\r
+8K CORE USED\r
+\r\fCDRSER - CARD READER SERVICE                 PAGE 9\r
+        SYMBOL TABLE\r
+\r
+                000253  \r
+A               000000  INT\r
+AC1             000015  INT\r
+AC2             000016  INT\r
+AC3             000017  INT\r
+ADVBFF          000217' EXT\r
+AL              000001  INT\r
+ASSCON          400000  INT\r
+ASSPRG          200000  INT\r
+B               000014  INT\r
+BUFPNT          000012  INT\r
+BUFWRD          000013  INT\r
+CDRCHN          000234' EXT\r
+CDRDAT          000025' EXT\r
+CDRDB           000000  EXT\r
+CDRDSP          000000' ENT\r
+CDRIN1          000005' \r
+CDRINT          000022' INT\r
+CDRRET          000230' EXT\r
+CDRSAV          000024' EXT\r
+CHCHN           000002  \r
+CLOSB           002000  INT\r
+CLSIN           000002  INT\r
+CLSOUT          000001  INT\r
+CR              000150  SPD\r
+CRAC            000011  \r
+CRALL           000100  \r
+CRBIN           000040  \r
+CRBUSY          000020  \r
+CRC1            000142' \r
+CRC2            000143' \r
+CRCNV           000171' \r
+CRCOL2          000135' \r
+CRCOL4          000137' \r
+CRCON           000114' \r
+CRCONT          000234' \r
+CRCV            000074' \r
+CRCV1           000206' \r
+CRDAT1          000010  \r
+CRDIS           000136' EXT\r
+CRDONE          000010  \r
+CREOC           000400  \r
+CREOF           000051' \r
+CREOFC          000047' \r
+CREOFF          001000  \r
+CRERR           002000  \r
+CREXIT          000226' \r
+CREXT1          000112' \r
+CRFIRS          000035' \r
+CRFSTB          000125' \r
+CRFSTI          000144' \r
+CRFSTL          000066' \r
+CRIM1           000156' \r
+\r\fCDRSER - CARD READER SERVICE                 PAGE 9-1\r
+        SYMBOL TABLE\r
+\r
+CRINP           000004' \r
+CRINS           000115' \r
+CRITMS          000164' \r
+CRLAST          000213' \r
+CRLST0          000215' \r
+CRLST1          000223' \r
+CRLST2          000217' \r
+CRMBIN          200000  \r
+CRMFST          040000  \r
+CRMIMG          100000  \r
+CRMISS          000200  \r
+CROFF           000231' \r
+CRREST          000070' \r
+CRTEM           000240' \r
+D               000017  INT\r
+DAT             000005  INT\r
+DCL             000001  INT\r
+DCW             020000  INT\r
+DDI             000007  INT\r
+DDO             000006  INT\r
+DDTMEM          000037  INT\r
+DDTSYM          000036  INT\r
+DEN             000004  INT\r
+DEVADR          000007  INT\r
+DEVBUF          000006  INT\r
+DEVCHR          000001  INT\r
+DEVCTR          000011  INT\r
+DEVDAT          000006  INT\r
+DEVIAD          000007  INT\r
+DEVIOS          000002  INT\r
+DEVLOG          000005  INT\r
+DEVMOD          000004  INT\r
+DEVNAM          000000  INT\r
+DEVOAD          000010  INT\r
+DEVPTR          000010  INT\r
+DEVSER          000003  INT\r
+DGF             000012  INT\r
+DIN             000003  INT\r
+DLK             000005  INT\r
+DOU             000002  INT\r
+DR              000016  INT\r
+DRL             000000  INT\r
+DSI             000011  INT\r
+DSO             000010  INT\r
+DTW             040000  INT\r
+DVAVAL          000040  INT\r
+DVCDR           100000  INT\r
+DVDIR           000004  INT\r
+DVDIRI          400000  INT\r
+DVIN            000002  INT\r
+DVLPT           040000  INT\r
+DVMTA           000020  INT\r
+DVOUT           000001  INT\r
+\r\fCDRSER - CARD READER SERVICE                 PAGE 9-2\r
+        SYMBOL TABLE\r
+\r
+DVTTY           000010  INT\r
+ENTRB           020000  INT\r
+I               000010  INT\r
+IB              000013  INT\r
+IBUFB           200000  INT\r
+ILLOUT          000002' EXT\r
+INITB           400000  INT\r
+INPB            010000  INT\r
+IO              000020  INT\r
+IOACT           010000  INT\r
+IOBEG           000002  INT\r
+IOBKTL          040000  INT\r
+IOCON           000040  INT\r
+IODEND          020000  INT\r
+IODERR          200000  INT\r
+IODISC          400000  INT\r
+IODONE          400000  INT\r
+IODTER          100000  INT\r
+IOEND           000040  INT\r
+IOFST           000004  INT\r
+IOIMPM          400000  INT\r
+IONRCK          000100  INT\r
+IORDEL          000100  INT\r
+IORET           000020  INT\r
+IOS             000000  INT\r
+IOSET           000032' EXT\r
+IOSTRT          000010  INT\r
+IOUSE           400000  INT\r
+IOW             000001  INT\r
+IOWC            000020  INT\r
+IOWS            400000  INT\r
+ITEM            000004  INT\r
+JBFADR          000000  INT\r
+JBFCTR          000002  INT\r
+JBFPTR          000001  INT\r
+JBUF            000005  INT\r
+JDAT            000011  INT\r
+JERR            002000  INT\r
+JIOW            100000  INT\r
+JNA             004000  INT\r
+LOOKB           040000  INT\r
+MTW             010000  INT\r
+OBUFB           100000  INT\r
+OUTPB           004000  INT\r
+PDP             000003  INT\r
+PICHN           000100  INT\r
+PIOMOD          000006' EXT\r
+PROG            000007  INT\r
+RUN             200000  INT\r
+RUNABL          204000  INT\r
+S2EOF           000032  \r
+SETBYT          000015' EXT\r
+SETIOD          000225' EXT\r
+\r\fCDRSER - CARD READER SERVICE                 PAGE 9-3\r
+        SYMBOL TABLE\r
+\r
+STODAT          000165' EXT\r
+STOSQD          000215' EXT\r
+TAC             000001  INT\r
+TAC1            000002  INT\r
+TEM             000010  INT\r
+TTYATC          020000  INT\r
+TTYUSE          010000  INT\r
+USRMOD          010000  INT\r
+UUO             000014  INT\r
+\f   CCCCCCCCCCCC      LLL                  KKK         KKK         CCCCCCCCCCCC         SSSSSSSSSSSS         SSSSSSSSSSSS\r
+   CCCCCCCCCCCC      LLL                  KKK         KKK         CCCCCCCCCCCC         SSSSSSSSSSSS         SSSSSSSSSSSS\r
+   CCCCCCCCCCCC      LLL                  KKK         KKK         CCCCCCCCCCCC         SSSSSSSSSSSS         SSSSSSSSSSSS\r
+CCC                  LLL                  KKK         KKK      CCC                  SSS                  SSS            \r
+CCC                  LLL                  KKK         KKK      CCC                  SSS                  SSS            \r
+CCC                  LLL                  KKK         KKK      CCC                  SSS                  SSS            \r
+CCC                  LLL                  KKK      KKK         CCC                  SSS                  SSS            \r
+CCC                  LLL                  KKK      KKK         CCC                  SSS                  SSS            \r
+CCC                  LLL                  KKK      KKK         CCC                  SSS                  SSS            \r
+CCC                  LLL                  KKKKKKKKK            CCC                     SSSSSSSSS            SSSSSSSSS   \r
+CCC                  LLL                  KKKKKKKKK            CCC                     SSSSSSSSS            SSSSSSSSS   \r
+CCC                  LLL                  KKKKKKKKK            CCC                     SSSSSSSSS            SSSSSSSSS   \r
+CCC                  LLL                  KKK      KKK         CCC                              SSS                  SSS\r
+CCC                  LLL                  KKK      KKK         CCC                              SSS                  SSS\r
+CCC                  LLL                  KKK      KKK         CCC                              SSS                  SSS\r
+CCC                  LLL                  KKK         KKK      CCC                              SSS                  SSS\r
+CCC                  LLL                  KKK         KKK      CCC                              SSS                  SSS\r
+CCC                  LLL                  KKK         KKK      CCC                              SSS                  SSS\r
+   CCCCCCCCCCCC      LLLLLLLLLLLLLLL      KKK         KKK         CCCCCCCCCCCC      SSSSSSSSSSSS         SSSSSSSSSSSS   \r
+   CCCCCCCCCCCC      LLLLLLLLLLLLLLL      KKK         KKK         CCCCCCCCCCCC      SSSSSSSSSSSS         SSSSSSSSSSSS   \r
+   CCCCCCCCCCCC      LLLLLLLLLLLLLLL      KKK         KKK         CCCCCCCCCCCC      SSSSSSSSSSSS         SSSSSSSSSSSS   \r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  11:23:08\r
+File: DSKB1 :CLKCSS.LST   [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:18
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:2619 \r
+File will be deleted after printing\r
+\f\rCLKCSS - SCHEDULING ALOGRITHM                 PAGE 1\r
+        T. HASTING 6-29-65\r
+\r
+                                00010           XLIST\r
+                                01930          LIST\r
+\r\fCLKCSS - SCHEDULING ALOGRITHM                 PAGE 7\r
+        T. HASTING 6-29-65\r
+\r
+\r
+                                00010   TITLE CLKCSS - SCHEDULING ALOGRITHM\r
+                                00020   SUBTTL      T. HASTING 6-29-65\r
+                                00030   ;SCHEDULING ALOGRITHM\r
+                                00040   ;CALL:\r
+                                00050   ;       PUSHJ PDP, NXTJOB\r
+                                00060   ;       EXIT                    ;RETURN HIGHEST PRIORITY USER IN AC ITEM\r
+\r
+                                00080   ;NEXJOB ASSUMES NO ACS SET EXCEPT PDP AND THAT IS MAY USE\r
+                                00090   ;ANY OF THE OTHER ACS\r
+                                00100   ;EXECUTION REQUIRES ROUGHLY 37 CYCLES FOR NORMAL CASE\r
+\r
+                                00120   INTERNAL NXTJOB, QUANTS\r
+                                00130   EXTERNAL IOCOMP,JOBN,JBTSTS,JOB\r
+                                00140   EXTERNAL MTAVAL,DCAVAL,DTAVAL,SCNOFF,SCNON\r
+\r
+                        000002  00160   T=TAC1    ;TEMPORARY AC\r
+                        000006  00170   C=DEVDAT\r
+                        000005  00180   P=DAT\r
+\r
+        000000' 200100  000000* 00200   NXTJOB:   MOVE T, IOCOMP        ;NO. OF COMPLETED IO JOBS\r
+        000001' 202100  000064' 00210             MOVEM T, IOAVAL       ;MAKE SLOW IO LOOK LIKE FAST IO\r
+\r
+                                00230   ;KEEP IO DEVICES BUSY\r
+        000002' 515240  777774  00240             HRLZI P, -NUM         ;NO. OF IO DEVICES CATEGORIES TO CHECK\r
+        000003' 336025  000060' 00250   NXT0:     SKIPN @AVALTB(P)      ;NON-ZERO IF IO JUST BECOME AVAILABLE\r
+        000004' 253240  000003' 00260   NXT1:     AOBJN P, NXT0\r
+        000005' 327240  000026' 00270             JUMPG P, NXT4         ;FINISHED YET\r
+        000006' 402025  000060' 00280             SETZM @AVALTB(P)      ;IO DEVICE AVAIL. ACKNOWLEDGE FACT\r
+        000007' 200105  000065' 00290             MOVE T,WAITB(P)       ;GET APPROPRIATE JOB STATUS BIT\r
+        000010' 200205  000071' 00300             MOVE ITEM,JOBP(P)     ;SEARCH FOR WAITING JOB\r
+        000011' 350000  000004  00310             AOS ITEM              ;LOOK AT EVERYONE ELSE FIRST\r
+        000012' 301200  000000* 00320   NXT2:     CAIL ITEM,JOBN        ;MODULO JOBN\r
+        000013' 201200  000001  00330             MOVEI ITEM,1          ;SKIP NULL JOB\r
+        000014' 617104  000000* 00340             TSNN T,JBTSTS(ITEM)   ;IS WAIT BIT SET FOR THIS JOB?\r
+        000015' 254000  000023' 00350             JRST NXT3 ;NO. KEEP LOOKING\r
+        000016' 700600  000000* 00360             CONO PI,SCNOFF        ;YES, TURN SCANNER CHAN. OFF(CONTROL C)\r
+        000017' 554044  000014* 00370             HLRZ TAC,JBTSTS(ITEM)           ;IS JOB RUNABLE?\r
+        000020' 306042  204000  00380             CAIN TAC,RUNABLE(T)\r
+        000021' 254000  000041' 00390             JRST NXT7             ;YES, CLEAR BIT. SET RUN TIME. RETURN\r
+        000022' 700600  000000* 00400             CONO PI,SCNON         ;NO. TURN SCANNER CHAN. ON. KEEP LOOKIN\r
+        000023' 312205  000071' 00410   NXT3:     CAME ITEM, JOBP(P)    ;HAVE ALL USERS BEEN LOOKED AT\r
+        000024' 344200  000012' 00420             AOJA ITEM, NXT2       ;NO. KEEP LOOKING\r
+        000025' 254000  000004' 00430             JRST NXT1             ;YES. SHOULD NOT HAPPEN\r
+\r\fCLKCSS - SCHEDULING ALOGRITHM                 PAGE 2\r
+        T. HASTING 6-29-65\r
+\r
+\r
+                                00460   ;NO JOBS WAITING TO USE IO DEVICES\r
+                                00470   ;HAS CURENT JOB USED ITS QUANTUM\r
+\r
+        000026' 201300  000012* 00490   NXT4:     MOVEI C,JOBN          ;GET READY FOR POSSIBLE LOOP\r
+        000027' 334200  000000* 00500             SKIPA ITEM, JOB       ;CURRENTLY RUNNING JOB\r
+\r
+        000030' 350000  000004  00520   NXT6:     AOS ITEM              ;LOOK AT NEXT JOB\r
+        000031' 301200  000026* 00530             CAIL ITEM, JOBN       ;MODULO JOBN\r
+        000032' 201200  000001  00540             MOVEI ITEM, 1         ;SKIP NULL JOB\r
+\r
+        000033' 554104  000017* 00560   NXT5:     HLRZ T, JBTSTS(ITEM)           ;IS THIS JOB RUNNABLE\r
+        000034' 306100  204000  00570             CAIN T, RUNABLE\r
+        000035' 254000  000050' 00580             JRST NXT9             ;YES,RETURN WITH ITEM SET\r
+        000036' 367300  000030' 00590   NXT5A:    SOJG C, NXT6          ;NO. LOOKED AT ALL JOBS YET?\r
+        000037' 403200  000002  00600             SETZB ITEM,T          ;YES. INDICATE NULL JOB TO RUN\r
+        000040' 344100  000054' 00610             AOJA T,NXT8           ;SET TO RUN FOR ONE CLOCK TICK\r
+\r
+        000041' 202205  000071' 00630   NXT7:     MOVEM ITEM, JOBP(P)   ;SAVE THIS JOB NO. FOR NEXT TIME\r
+        000042' 620042  000000  00640             TRZ TAC,(T)           ;CLEAR WAIT BIT\r
+        000043' 506044  000033* 00650             HRLM TAC,JBTSTS(ITEM)           ;IN JOB STATUS WORD\r
+        000044' 602100  400000  00660             TRNE T,IOWS           ;IS WAIT BIT IOWS?\r
+        000045' 370000  000000* 00670             SOS IOCOMP            ;YES, SUBTRACT REQUEST COUNT\r
+        000046' 700600  000022* 00680             CONO PI,SCNON         ;TURN SCANNER CHANNEL BACK ON\r
+        000047' 254000  000053' 00690             JRST NXT10            ;AND GO SET RUNNING TIME\r
+\r
+        000050' 550104  000043* 00710   NXT9:     HRRZ T,JBTSTS(ITEM)   ;HAS TIME GONE TO ZERO FOR THIS JOB?\r
+        000051' 602100  777777  00720             TRNE T,-1\r
+        000052' 263140  000000  00730             POPJ PDP,             ;NO\r
+        000053' 200105  000075' 00740   NXT10:    MOVE T, QUANTS(P)     ;SET QUANTUM RUNNING TIME FOR THIS QUEU\r
+        000054' 542104  000050* 00750   NXT8:     HRRM T, JBTSTS(ITEM)\r
+        000055' 316200  000027* 00760             CAMN ITEM, JOB        ;IS THIS SAME AS OLD JOB?\r
+        000056' 326200  000036' 00770             JUMPN ITEM, NXT5A     ;AND NOT NULL JOB\r
+        000057' 263140  000000  00780             POPJ PDP,\r
+\r\fCLKCSS - SCHEDULING ALOGRITHM                 PAGE 3\r
+        T. HASTING 6-29-65\r
+\r
+\r
+                                00810   ;FLAGS SET NON-ZERO WHEN IO DEVICES BECOME AVAILABLE\r
+\r
+        000060' 000000  000000* 00830   AVALTB:   EXP MTAVAL            ;MAG TAPE\r
+        000061' 000000  000000* 00840             EXP DCAVAL            ;DATA CONTROL\r
+        000062' 000000  000000* 00850             EXP DTAVAL            ;DECTAPE\r
+        000063' 000000  000064' 00860             EXP IOAVAL            ;ALL OTHER DEVICES\r
+                        000004  00870   NUM=.-AVALTB\r
+\r
+        000064' 000000  000000  00890   IOAVAL:   0                     ;FLAG = NO. OF IO COMPLETED JOBS\r
+\r
+                                00910   ;BIT IN STATUS WORD MEANING JOB WAITING TO USE DEVICE\r
+        000065' 000000  010000  00920   WAITB:    EXP MTW\r
+        000066' 000000  020000  00930             EXP DCW\r
+        000067' 000000  040000  00940             EXP DTW\r
+        000070' 000000  400000  00950             EXP IOWS\r
+\r
+                                00970   ;LAST JOB SCHEDULED FOR DEVICE\r
+                                00980   JOBP:     REPEAT NUM,\r
+                                00990   <         EXP 1\r
+                                01000   >\r
+        000071' 000000  000001                    EXP 1\r
+\r
+        000072' 000000  000001                    EXP 1\r
+\r
+        000073' 000000  000001                    EXP 1\r
+\r
+        000074' 000000  000001                    EXP 1\r
+\r
+\r
+                                01020   ;QUANTUM TIMES FOR EACH QUEUE\r
+\r
+        000075' 000000  000004  01040   QUANTS:   EXP 4                 ;MAGTAPE QUEUE\r
+        000076' 000000  000004  01050             EXP 4                 ;DATA CONTROL QUEUE\r
+        000077' 000000  000004  01060             EXP 4                 ;DECTAPE QUEUE\r
+        000100' 000000  000006  01070             EXP 6                 ;IOWAIT SATISFIED QUEUE\r
+        000101' 000000  000017  01080             EXP QUANT1            ;STRAIGHT COMPUTATION QUEUE\r
+\r
+                                01100   XP  QUANT1,^D15;        STRAIGHT COMPUTATION QUEUE\r
+\r
+                                01120             END,\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 000102\r
+\r
+8K CORE USED\r
+\r\fCLKCSS - SCHEDULING ALOGRITHM                 PAGE 4\r
+        SYMBOL TABLE\r
+\r
+                000217  \r
+A               000000  INT\r
+AC1             000015  INT\r
+AC2             000016  INT\r
+AC3             000017  INT\r
+AL              000001  INT\r
+ASSCON          400000  INT\r
+ASSPRG          200000  INT\r
+AVALTB          000060' \r
+B               000014  INT\r
+BUFPNT          000012  INT\r
+BUFWRD          000013  INT\r
+C               000006  \r
+CLOSB           002000  INT\r
+CLSIN           000002  INT\r
+CLSOUT          000001  INT\r
+D               000017  INT\r
+DAT             000005  INT\r
+DCAVAL          000061' EXT\r
+DCL             000001  INT\r
+DCW             020000  INT\r
+DDI             000007  INT\r
+DDO             000006  INT\r
+DDTMEM          000037  INT\r
+DDTSYM          000036  INT\r
+DEN             000004  INT\r
+DEVADR          000007  INT\r
+DEVBUF          000006  INT\r
+DEVCHR          000001  INT\r
+DEVCTR          000011  INT\r
+DEVDAT          000006  INT\r
+DEVIAD          000007  INT\r
+DEVIOS          000002  INT\r
+DEVLOG          000005  INT\r
+DEVMOD          000004  INT\r
+DEVNAM          000000  INT\r
+DEVOAD          000010  INT\r
+DEVPTR          000010  INT\r
+DEVSER          000003  INT\r
+DGF             000012  INT\r
+DIN             000003  INT\r
+DLK             000005  INT\r
+DOU             000002  INT\r
+DR              000016  INT\r
+DRL             000000  INT\r
+DSI             000011  INT\r
+DSO             000010  INT\r
+DTAVAL          000062' EXT\r
+DTW             040000  INT\r
+DVAVAL          000040  INT\r
+DVCDR           100000  INT\r
+DVDIR           000004  INT\r
+DVDIRI          400000  INT\r
+\r\fCLKCSS - SCHEDULING ALOGRITHM                 PAGE 4-1\r
+        SYMBOL TABLE\r
+\r
+DVIN            000002  INT\r
+DVLPT           040000  INT\r
+DVMTA           000020  INT\r
+DVOUT           000001  INT\r
+DVTTY           000010  INT\r
+ENTRB           020000  INT\r
+I               000010  INT\r
+IB              000013  INT\r
+IBUFB           200000  INT\r
+INITB           400000  INT\r
+INPB            010000  INT\r
+IO              000020  INT\r
+IOACT           010000  INT\r
+IOAVAL          000064' \r
+IOBEG           000002  INT\r
+IOBKTL          040000  INT\r
+IOCOMP          000045' EXT\r
+IOCON           000040  INT\r
+IODEND          020000  INT\r
+IODERR          200000  INT\r
+IODISC          400000  INT\r
+IODONE          400000  INT\r
+IODTER          100000  INT\r
+IOEND           000040  INT\r
+IOFST           000004  INT\r
+IOIMPM          400000  INT\r
+IONRCK          000100  INT\r
+IORDEL          000100  INT\r
+IORET           000020  INT\r
+IOS             000000  INT\r
+IOSTRT          000010  INT\r
+IOUSE           400000  INT\r
+IOW             000001  INT\r
+IOWC            000020  INT\r
+IOWS            400000  INT\r
+ITEM            000004  INT\r
+JBFADR          000000  INT\r
+JBFCTR          000002  INT\r
+JBFPTR          000001  INT\r
+JBTSTS          000054' EXT\r
+JBUF            000005  INT\r
+JDAT            000011  INT\r
+JERR            002000  INT\r
+JIOW            100000  INT\r
+JNA             004000  INT\r
+JOB             000055' EXT\r
+JOBN            000031' EXT\r
+JOBP            000071' \r
+LOOKB           040000  INT\r
+MTAVAL          000060' EXT\r
+MTW             010000  INT\r
+NUM             000004  \r
+NXT0            000003' \r
+\r\fCLKCSS - SCHEDULING ALOGRITHM                 PAGE 4-2\r
+        SYMBOL TABLE\r
+\r
+NXT1            000004' \r
+NXT10           000053' \r
+NXT2            000012' \r
+NXT3            000023' \r
+NXT4            000026' \r
+NXT5            000033' \r
+NXT5A           000036' \r
+NXT6            000030' \r
+NXT7            000041' \r
+NXT8            000054' \r
+NXT9            000050' \r
+NXTJOB          000000' INT\r
+OBUFB           100000  INT\r
+OUTPB           004000  INT\r
+P               000005  \r
+PDP             000003  INT\r
+PI              000004  SPD\r
+PICHN           000100  INT\r
+PROG            000007  INT\r
+QUANT1          000017  INT\r
+QUANTS          000075' INT\r
+RUN             200000  INT\r
+RUNABL          204000  INT\r
+SCNOFF          000016' EXT\r
+SCNON           000046' EXT\r
+T               000002  \r
+TAC             000001  INT\r
+TAC1            000002  INT\r
+TEM             000010  INT\r
+TTYATC          020000  INT\r
+TTYUSE          010000  INT\r
+USRMOD          010000  INT\r
+UUO             000014  INT\r
+WAITB           000065' \r
+\f   CCCCCCCCCCCC      LLL                     OOOOOOOOO            CCCCCCCCCCCC      KKK         KKK                     \r
+   CCCCCCCCCCCC      LLL                     OOOOOOOOO            CCCCCCCCCCCC      KKK         KKK                     \r
+   CCCCCCCCCCCC      LLL                     OOOOOOOOO            CCCCCCCCCCCC      KKK         KKK                     \r
+CCC                  LLL                  OOO         OOO      CCC                  KKK         KKK                     \r
+CCC                  LLL                  OOO         OOO      CCC                  KKK         KKK                     \r
+CCC                  LLL                  OOO         OOO      CCC                  KKK         KKK                     \r
+CCC                  LLL                  OOO         OOO      CCC                  KKK      KKK                        \r
+CCC                  LLL                  OOO         OOO      CCC                  KKK      KKK                        \r
+CCC                  LLL                  OOO         OOO      CCC                  KKK      KKK                        \r
+CCC                  LLL                  OOO         OOO      CCC                  KKKKKKKKK                           \r
+CCC                  LLL                  OOO         OOO      CCC                  KKKKKKKKK                           \r
+CCC                  LLL                  OOO         OOO      CCC                  KKKKKKKKK                           \r
+CCC                  LLL                  OOO         OOO      CCC                  KKK      KKK                        \r
+CCC                  LLL                  OOO         OOO      CCC                  KKK      KKK                        \r
+CCC                  LLL                  OOO         OOO      CCC                  KKK      KKK                        \r
+CCC                  LLL                  OOO         OOO      CCC                  KKK         KKK                     \r
+CCC                  LLL                  OOO         OOO      CCC                  KKK         KKK                     \r
+CCC                  LLL                  OOO         OOO      CCC                  KKK         KKK                     \r
+   CCCCCCCCCCCC      LLLLLLLLLLLLLLL         OOOOOOOOO            CCCCCCCCCCCC      KKK         KKK                     \r
+   CCCCCCCCCCCC      LLLLLLLLLLLLLLL         OOOOOOOOO            CCCCCCCCCCCC      KKK         KKK                     \r
+   CCCCCCCCCCCC      LLLLLLLLLLLLLLL         OOOOOOOOO            CCCCCCCCCCCC      KKK         KKK                     \r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  11:23:08\r
+File: DSKB1 :CLOCK .LST   [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:18
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:2612 \r
+File will be deleted after printing\r
+\f\rCLOCK - CLOCK SERVICE ROUTINE                 PAGE 1\r
+        T. HASTINGS 6-2-65\r
+\r
+                                00010           XLIST\r
+                                01930          LIST\r
+\r\fCLOCK - CLOCK SERVICE ROUTINE                 PAGE 7\r
+        T. HASTINGS 6-2-65\r
+\r
+\r
+                                00010   TITLE CLOCK - CLOCK SERVICE ROUTINE\r
+                                00020   SUBTTL      T. HASTINGS 6-2-65\r
+                                00030   INTERNAL CLOCK, CLKINI,NULJOB,APRINT,RSCHED\r
+                                00040   EXTERNAL APRSAV, APRRET, APRCHN,APRILM,APRCHL\r
+                                00050   EXTERNAL COMCNT,COMMAND,JOB,JOBADR,APRSAC,JOBDAC,JOBPDP,JOBREL\r
+                                00060   EXTERNAL USRPDP,JOBPFU,JOBPC,JBTADR,JOBADR,JOBDAT,USRPFU,CLDS,NXTJOB\r
+                                00070   EXTERNAL STOPU,SCHEDF,TIME,JOBLEV,JOBUXT,UUO0,JOBDHI,CLKOFF,JBTSTS\r
+\r
+                                00090   ;CLOCK WILL TIME AN INTERVAL AND PUSHJ PDP, TO AN ADDRESS\r
+                                00100   ;AFTER THE INTERVAL HAS EXPIRED\r
+                                00110   ;TO MAKE A REQUEST:\r
+                                00120   ;       CONO PI,PIOFF\r
+                                00130   ;       DPBI AC,CLOCK\r
+                                00140   ;       CONO PI,PION\r
+                                00150   ;AC MUST CONTAIN- XWD ADDRESS,NUMBER OF CLOCK COUNTS+DATA*1000\r
+                                00160   ;THE HIGH ORDER SIX BITS OF THE RIGHT HALF(DATA) ARE PLACED IN AC\r
+                                00170   ;TAC RIGHT JUSTIFIED BEFORE THE PUSHJ PDP, ADDRES IS DONE\r
+\r
+                                00190   ;SYSTEM FLAGS:\r
+                                00200   ; STOPU IS SET NON-ZERO AT EITHER INTERRUPT SERVICE LEVEL OR\r
+                                00210   ;   UUO LEVEL AND A CLOCK INTERRUPT IS REQUESTED WHEN CURRENT\r
+                                00220   ;   JOB MUST BE STOPPED AND ANOTHER ONE RUN.\r
+                                00230   ; SCHEDF IS SET NON-ZERO BY CLOCK ROUTINE WHEN IF IS IN THE PROCESS\r
+                                00240   ;   OF RESCHEDULING.  IT IS CLEARED AFTER JOB HAS BEEN SET TO\r
+                                00250   ;   CURRENTLY RUNNING JOB.\r
+                                00260   ; TIME IS THE TIME SYSTEM HAS RUN IN 60THS OF A SECOND\r
+\r
+                        000200  00280   PION=200\r
+                        000400  00290   PIOFF=400\r
+\r
+                        000005  00310   STOR=DAT\r
+                        000001  00320   T=TAC\r
+                        000011  00330   JA=JDAT\r
+\r
+        000000' 004400  000000' 00350   CLOCK:    POINT 36,CIPWT-1,35           ;BYTE POINTER TO CLOCK QUEUE\r
+        000001'                 00360   CIPWT:    BLOCK 12                      ;THE QUEUE\r
+\r
+        000013' 201000  000000' 00380   CLKINI:   MOVEI CIPWT-1                 ;SET UP BYTE POINTER\r
+        000014' 542000  000000' 00390             HRRM CLOCK\r
+        000015' 263140  000000  00400             POPJ PDP,\r
+\r\fCLOCK - CLOCK SERVICE ROUTINE                 PAGE 2\r
+        T. HASTINGS 6-2-65\r
+\r
+\r
+        000016' 254000  000020' 00430   APRINT:   JRST .+2              ;HERE ON APR INTERRUPT\r
+        000017' 254000  000017' 00440             JRST .                ;TO OTHER DEVICES ON THIS CHANNEL\r
+        000020' 700340  230000  00450             CONSO APR,230000              ;IS IT ANY OF THE OTHERS\r
+        000021' 254000  000024' 00460             JRST CIP0             ;NO. GO CHECK CLOCK\r
+        000022' 264000  000000* 00470             JSR APRSAV                    ;YES, SAVE ACS\r
+        000023' 254000  000000* 00480             JRST APRILM                   ;AND GO PROCESS ILLEGAL MEMOR\r
+        000024' 700340  002000  00490   CIP0:     CONSO APR, 2000       ;IS CLOCK ENABLED\r
+        000025' 254000  000030' 00500             JRST CIP1  ;NO. GO TO OTHER DEVICES\r
+        000026' 700300  001000  00510             CONSZ APR, 1000       ;YES, DID CLOCK CAUSE INTERRUPT\r
+        000027' 254000  000034' 00520             JRST CIP2             ;YES\r
+        000030' 336000  000000* 00530   CIP1:     SKIPN STOPU           ;NO, IS THIS A REQUEST INTERRUPT\r
+        000031' 254000  000017' 00540             JRST APRINT+1         ;NO. GO TO OTHER DEVICES\r
+        000032' 264000  000022* 00550   CIP1B:    JSR APRSAV            ;YES, SAVE ACS\r
+        000033' 254000  000064' 00560             JRST CIP6             ;RESCHEDULE BUT DONT TIME\r
+\r\fCLOCK - CLOCK SERVICE ROUTINE                 PAGE 3\r
+        T. HASTINGS 6-2-65\r
+\r
+\r
+        000034' 264000  000032* 00590   CIP2:     JSR APRSAV                    ;SAVE ACS\r
+        000035' 350000  000000* 00600             AOS TIME              ;INCREMENT TIME\r
+        000036' 200040  000000* 00610             MOVE TAC,JOB          ;DECREMENT CURRENT JOBS RUNNING TIME\r
+        000037' 370001  000000* 00620             SOS JBTSTS(TAC)\r
+        000040' 700200  000000* 00630             CONO APR,CLKOFF       ;TURN CLOCK FLAG OFF\r
+\r
+                                00650   ;PROCESS TIMING REQUESTS STORED IN QUEUE\r
+        000041' 550240  000000' 00660             HRRZ STOR, CLOCK      ;GET END OF LIST\r
+        000042' 306240  000000' 00670   CIP4:     CAIN STOR, CIPWT-1    ;END YET\r
+        000043' 254000  000062' 00680             JRST CIP5             ;YES\r
+        000044' 370105  000000  00690             SOS TAC1, (STOR)      ;DECREMENT TIMING REQUEST\r
+        000045' 602100  007777  00700             TRNE TAC1, 7777       ;TIME EXPIRED YET\r
+        000046' 364240  000042' 00710             SOJA STOR, CIP4       ;NO, CONTINUE SCAN\r
+        000047' 700600  000400  00720             CONO PI, PIOFF        ;YES. MOVE LAST ITEM IN LIST TO THS\r
+        000050' 200060  000000' 00730             MOVE TAC, @CLOCK\r
+        000051' 370000  000000' 00740             SOS CLOCK\r
+        000052' 700600  000200  00750             CONO PI, PION\r
+        000053' 202045  000000  00760             MOVEM TAC, (STOR)\r
+        000054' 135040  000143' 00770             LDB TAC, [POINT 6, TAC1, 23]  ;GET 6 BIT DATA ITEM\r
+        000055' 207000  000002  00780             MOVSS TAC1            ;SETUP DISPATCH ADDRESS\r
+        000056' 261140  000005  00790             PUSH PDP, STOR        ;SAVE ONLY VALUABLE AC\r
+        000057' 260142  000000  00800             PUSHJ PDP, (TAC1)     ;AND DISPATCH TO TIMING REQUEST ROUTINE\r
+        000060' 262140  000005  00810             POP PDP, STOR\r
+        000061' 364240  000042' 00820             SOJA STOR, CIP4       ;GO BACK FOR MORE REQUESTS\r
+\r
+        000062' 332000  000000* 00840   CIP5:     SKIPE COMCNT          ;ANY COMMANDS TO PROCESS\r
+        000063' 260140  000000* 00850             PUSHJ PDP, COMMAND    ;YES\r
+        000064'                 00860   RSCHED:                         ;RESCHEDULE, HERE AFTER APRILM\r
+        000064' 402000  000030* 00870   CIP6:     SETZM STOPU           ;CLEAR INTERRUPT REQUEST FLAG\r
+        000065' 476000  000000* 00880             SETOM SCHEDF          ;FLAG THAT SCHEDULING IS IN PROGRESS\r
+        000066' 260140  000000* 00890             PUSHJ PDP, NXTJOB     ;RETURN HIGHEST PRIORITY JOB IN AC ITEM\r
+        000067' 316200  000036* 00900             CAMN ITEM, JOB        ;IS IT SAME AS CURRENT JOB\r
+        000070' 254000  000136' 00910             JRST CIP8 ;YES, EXIT\r
+\r\fCLOCK - CLOCK SERVICE ROUTINE                 PAGE 4\r
+        T. HASTINGS 6-2-65\r
+\r
+\r
+                                00940   ;DIFFERENT JOB, SAVE OLD JOB\r
+        000071' 336000  000067* 00950             SKIPN JOB             ;IS OLD JOB THE NULL JOB\r
+        000072' 254000  000110' 00960             JRST CIP7             ;YES, DONT BOTHER TO SAVE ANYTHING\r
+        000073' 200440  000000* 00970             MOVE JA, JOBADR       ;NO. MOVE CHANNEL ACS TO USER JOB AREA\r
+        000074' 201051  000000* 00980             MOVEI T,JOBDAC(JA)\r
+        000075' 505040  000000* 00990             HRLI T, APRSAC\r
+        000076' 251051  000000* 01000             BLT T, JOBDHI(JA)\r
+        000077' 201051  000000* 01010             MOVEI T, JOBPDP(JA)   ;MOVE JOB STATE VARIABLES TO JOB DATA A\r
+        000100' 505040  000000* 01020             HRLI T, USRPDP\r
+        000101' 251051  000000* 01030             BLT T, JOBPFU(JA)\r
+        000102' 200040  000040  01040             MOVE T, 40                    ;SAVE LOC. 40\r
+        000103' 202051  000000* 01050             MOVEM T, JOBLEV(JA)\r
+        000104' 200040  000000* 01060             MOVE T, UUO0                  ;AND UUO PC\r
+        000105' 202051  000000* 01070             MOVEM T, JOBUXT(JA)\r
+        000106' 200040  000000* 01080             MOVE T, APRCHL        ;SET C(CHANNEL INTERRUPT LOC.) AS PC\r
+        000107' 202051  000000* 01090             MOVEM T, JOBPC(JA)\r
+\r
+\r\fCLOCK - CLOCK SERVICE ROUTINE                 PAGE 5\r
+        T. HASTINGS 6-2-65\r
+\r
+\r
+                                01130   ;RESTOR NEW JOB\r
+        000110' 202200  000071* 01140   CIP7:     MOVEM ITEM, JOB       ;STORE NEW CURRENT JOB NUMBER\r
+        000111' 403000  000065* 01150             SETZB 0,SCHEDF        ;INDICATE SCHEDULING FINISHED\r
+        000112' 322200  000140' 01160             JUMPE ITEM, NUL0      ;IS NEW JOB NULL JOB\r
+        000113' 200444  000000* 01170             MOVE JA, JBTADR(ITEM)         ;SETUP STATE VARIABLES FOR CU\r
+        000114' 552440  000073* 01180             HRRZM JA, JOBADR      ;IN SYSTEM AREA\r
+        000115' 552440  000000* 01190             HRRZM JA, JOBDAT\r
+        000116' 556451  000000* 01200             HLRZM JA, JOBREL(JA)          ;SET RELOCATION AND PROTECTION\r
+        000117' 700140  000011  01210             DATAO JA\r
+        000120' 201040  000100* 01220             MOVEI T,USRPDP\r
+        000121' 505051  000077* 01230             HRLI T, JOBPDP(JA)    ;MOVE JOB STATE VARIABLES TO SYSTEM ARE\r
+        000122' 251040  000000* 01240             BLT T, USRPFU\r
+        000123' 200051  000103* 01250             MOVE T, JOBLEV(JA)    ;RESTORE LOC. 40\r
+        000124' 202040  000040  01260             MOVEM T, 40\r
+        000125' 200051  000105* 01270             MOVE T, JOBUXT(JA)    ;AND UUO PC\r
+        000126' 202040  000104* 01280             MOVEM T, UUO0\r
+        000127' 200051  000107* 01290             MOVE T, JOBPC(JA)     ;SET C(CHANNEL LOC.) TO C(JOBPC)\r
+        000130' 202040  000106* 01300             MOVEM T, APRCHL\r
+        000131' 205751  000074* 01310             MOVSI 17, JOBDAC(JA)          ;RESTORE USER ACS\r
+        000132' 251740  000017  01320             BLT 17,17\r
+        000133' 332000  000064* 01330             SKIPE STOPU           ;HAS STOPU BEEN SET SINCE CIP6\r
+        000134' 254000  000032' 01340             JRST CIP1B                    ;YES, GO RESCHEDULE\r
+        000135' 254520  000130* 01350             JEN @APRCHL           ;NO. DISMISS CHANNEL\r
+\r
+        000136' 402000  000111* 01370   CIP8:     SETZM SCHEDF                  ;CLEAR SCHEDULING FLAG\r
+        000137' 254000  000000* 01380             JRST APRRET                   ;AND DISMISS INTERRUPT\r
+\r
+                                01400   ;THE NULL JOB\r
+        000140' 254400  000141' 01410   NUL0:     JRST 10, NULJOB       ;RENABLE AND RUN IN EXEC. MODE\r
+\r
+        000141' 200040  000142' 01430   NULJOB:   MOVE 1,.+1\r
+        000142' 344000  000001  01440             AOJA 0,1  ;COUNT IN AC0 FOR VISUAL MONITORING\r
+                                01450                                   ;ALSO PC = 1\r
+                                01460             END,\r
+        000143' 140600  000002\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 000144\r
+\r
+8K CORE USED\r
+\r\fCLOCK - CLOCK SERVICE ROUTINE                 PAGE 6\r
+        SYMBOL TABLE\r
+\r
+                000243  \r
+A               000000  INT\r
+AC1             000015  INT\r
+AC2             000016  INT\r
+AC3             000017  INT\r
+AL              000001  INT\r
+APR             000000  SPD\r
+APRCHL          000135' EXT\r
+APRCHN          000000  EXT\r
+APRILM          000023' EXT\r
+APRINT          000016' INT\r
+APRRET          000137' EXT\r
+APRSAC          000075' EXT\r
+APRSAV          000034' EXT\r
+ASSCON          400000  INT\r
+ASSPRG          200000  INT\r
+B               000014  INT\r
+BUFPNT          000012  INT\r
+BUFWRD          000013  INT\r
+CIP0            000024' \r
+CIP1            000030' \r
+CIP1B           000032' \r
+CIP2            000034' \r
+CIP4            000042' \r
+CIP5            000062' \r
+CIP6            000064' \r
+CIP7            000110' \r
+CIP8            000136' \r
+CIPWT           000001' \r
+CLDS            000000  EXT\r
+CLKINI          000013' INT\r
+CLKOFF          000040' EXT\r
+CLOCK           000000' INT\r
+CLOSB           002000  INT\r
+CLSIN           000002  INT\r
+CLSOUT          000001  INT\r
+COMCNT          000062' EXT\r
+COMMAN          000063' EXT\r
+D               000017  INT\r
+DAT             000005  INT\r
+DCL             000001  INT\r
+DCW             020000  INT\r
+DDI             000007  INT\r
+DDO             000006  INT\r
+DDTMEM          000037  INT\r
+DDTSYM          000036  INT\r
+DEN             000004  INT\r
+DEVADR          000007  INT\r
+DEVBUF          000006  INT\r
+DEVCHR          000001  INT\r
+DEVCTR          000011  INT\r
+DEVDAT          000006  INT\r
+DEVIAD          000007  INT\r
+\r\fCLOCK - CLOCK SERVICE ROUTINE                 PAGE 6-1\r
+        SYMBOL TABLE\r
+\r
+DEVIOS          000002  INT\r
+DEVLOG          000005  INT\r
+DEVMOD          000004  INT\r
+DEVNAM          000000  INT\r
+DEVOAD          000010  INT\r
+DEVPTR          000010  INT\r
+DEVSER          000003  INT\r
+DGF             000012  INT\r
+DIN             000003  INT\r
+DLK             000005  INT\r
+DOU             000002  INT\r
+DR              000016  INT\r
+DRL             000000  INT\r
+DSI             000011  INT\r
+DSO             000010  INT\r
+DTW             040000  INT\r
+DVAVAL          000040  INT\r
+DVCDR           100000  INT\r
+DVDIR           000004  INT\r
+DVDIRI          400000  INT\r
+DVIN            000002  INT\r
+DVLPT           040000  INT\r
+DVMTA           000020  INT\r
+DVOUT           000001  INT\r
+DVTTY           000010  INT\r
+ENTRB           020000  INT\r
+I               000010  INT\r
+IB              000013  INT\r
+IBUFB           200000  INT\r
+INITB           400000  INT\r
+INPB            010000  INT\r
+IO              000020  INT\r
+IOACT           010000  INT\r
+IOBEG           000002  INT\r
+IOBKTL          040000  INT\r
+IOCON           000040  INT\r
+IODEND          020000  INT\r
+IODERR          200000  INT\r
+IODISC          400000  INT\r
+IODONE          400000  INT\r
+IODTER          100000  INT\r
+IOEND           000040  INT\r
+IOFST           000004  INT\r
+IOIMPM          400000  INT\r
+IONRCK          000100  INT\r
+IORDEL          000100  INT\r
+IORET           000020  INT\r
+IOS             000000  INT\r
+IOSTRT          000010  INT\r
+IOUSE           400000  INT\r
+IOW             000001  INT\r
+IOWC            000020  INT\r
+IOWS            400000  INT\r
+\r\fCLOCK - CLOCK SERVICE ROUTINE                 PAGE 6-2\r
+        SYMBOL TABLE\r
+\r
+ITEM            000004  INT\r
+JA              000011  \r
+JBFADR          000000  INT\r
+JBFCTR          000002  INT\r
+JBFPTR          000001  INT\r
+JBTADR          000113' EXT\r
+JBTSTS          000037' EXT\r
+JBUF            000005  INT\r
+JDAT            000011  INT\r
+JERR            002000  INT\r
+JIOW            100000  INT\r
+JNA             004000  INT\r
+JOB             000110' EXT\r
+JOBADR          000114' EXT\r
+JOBDAC          000131' EXT\r
+JOBDAT          000115' EXT\r
+JOBDHI          000076' EXT\r
+JOBLEV          000123' EXT\r
+JOBPC           000127' EXT\r
+JOBPDP          000121' EXT\r
+JOBPFU          000101' EXT\r
+JOBREL          000116' EXT\r
+JOBUXT          000125' EXT\r
+LOOKB           040000  INT\r
+MTW             010000  INT\r
+NUL0            000140' \r
+NULJOB          000141' INT\r
+NXTJOB          000066' EXT\r
+OBUFB           100000  INT\r
+OUTPB           004000  INT\r
+PDP             000003  INT\r
+PI              000004  SPD\r
+PICHN           000100  INT\r
+PIOFF           000400  \r
+PION            000200  \r
+PROG            000007  INT\r
+RSCHED          000064' INT\r
+RUN             200000  INT\r
+RUNABL          204000  INT\r
+SCHEDF          000136' EXT\r
+STOPU           000133' EXT\r
+STOR            000005  \r
+T               000001  \r
+TAC             000001  INT\r
+TAC1            000002  INT\r
+TEM             000010  INT\r
+TIME            000035' EXT\r
+TTYATC          020000  INT\r
+TTYUSE          010000  INT\r
+USRMOD          010000  INT\r
+USRPDP          000120' EXT\r
+USRPFU          000122' EXT\r
+UUO             000014  INT\r
+\r\fCLOCK - CLOCK SERVICE ROUTINE                 PAGE 6-3\r
+        SYMBOL TABLE\r
+\r
+UUO0            000126' EXT\r
+\f   CCCCCCCCCCCC         OOOOOOOOO         MMM         MMM         CCCCCCCCCCCC         OOOOOOOOO         NNN         NNN\r
+   CCCCCCCCCCCC         OOOOOOOOO         MMM         MMM         CCCCCCCCCCCC         OOOOOOOOO         NNN         NNN\r
+   CCCCCCCCCCCC         OOOOOOOOO         MMM         MMM         CCCCCCCCCCCC         OOOOOOOOO         NNN         NNN\r
+CCC                  OOO         OOO      MMMMMM   MMMMMM      CCC                  OOO         OOO      NNN         NNN\r
+CCC                  OOO         OOO      MMMMMM   MMMMMM      CCC                  OOO         OOO      NNN         NNN\r
+CCC                  OOO         OOO      MMMMMM   MMMMMM      CCC                  OOO         OOO      NNN         NNN\r
+CCC                  OOO         OOO      MMM   MMM   MMM      CCC                  OOO         OOO      NNNNNN      NNN\r
+CCC                  OOO         OOO      MMM   MMM   MMM      CCC                  OOO         OOO      NNNNNN      NNN\r
+CCC                  OOO         OOO      MMM   MMM   MMM      CCC                  OOO         OOO      NNNNNN      NNN\r
+CCC                  OOO         OOO      MMM         MMM      CCC                  OOO         OOO      NNN   NNN   NNN\r
+CCC                  OOO         OOO      MMM         MMM      CCC                  OOO         OOO      NNN   NNN   NNN\r
+CCC                  OOO         OOO      MMM         MMM      CCC                  OOO         OOO      NNN   NNN   NNN\r
+CCC                  OOO         OOO      MMM         MMM      CCC                  OOO         OOO      NNN      NNNNNN\r
+CCC                  OOO         OOO      MMM         MMM      CCC                  OOO         OOO      NNN      NNNNNN\r
+CCC                  OOO         OOO      MMM         MMM      CCC                  OOO         OOO      NNN      NNNNNN\r
+CCC                  OOO         OOO      MMM         MMM      CCC                  OOO         OOO      NNN         NNN\r
+CCC                  OOO         OOO      MMM         MMM      CCC                  OOO         OOO      NNN         NNN\r
+CCC                  OOO         OOO      MMM         MMM      CCC                  OOO         OOO      NNN         NNN\r
+   CCCCCCCCCCCC         OOOOOOOOO         MMM         MMM         CCCCCCCCCCCC         OOOOOOOOO         NNN         NNN\r
+   CCCCCCCCCCCC         OOOOOOOOO         MMM         MMM         CCCCCCCCCCCC         OOOOOOOOO         NNN         NNN\r
+   CCCCCCCCCCCC         OOOOOOOOO         MMM         MMM         CCCCCCCCCCCC         OOOOOOOOO         NNN         NNN\r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  11:23:08\r
+File: DSKB1 :COMCON.LST   [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:18
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:2602 \r
+File will be deleted after printing\r
+\f\rCOMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES                 PAGE 1\r
+        T.HASTINGS 8-2-65\r
+\r
+                                00010           XLIST\r
+                                01930          LIST\r
+\r\fCOMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES                 PAGE 7\r
+        T.HASTINGS 8-2-65\r
+\r
+\r
+                                00010           TITLE COMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES\r
+                                00020           SUBTTL T.HASTINGS 8-2-65\r
+                                00030   ;CALLED FROM COMMAND DECODER WHICH IS CALLED FROM CLOCK ROUTINE\r
+                                00040   ;WITH FOLLOWING ACS SET:\r
+                                00050   ;TAC= BYTE POINTER TO COMMAND STRING(SPACE OR CR AFTER COMMAND NAME)\r
+                                00060   ;ITEM = JOB NUMBER\r
+                                00070   ;DAT = BYTE POINTER TO LAST OUTPUT CHARACTER\r
+                                00080   ;DEVDAT= ADDRESS OF DEVICE DATA BLOCK INITIATING COMMAND\r
+                                00090   ;JDAT = ADDRESS OF JOB DATA AREA, = 0 IF NO JOB AREA\r
+\r
+                                00110   ;UPON RETURN FROM COMMAND SETUP ROUTINE, A CR-LF IS ADDED IF\r
+                                00120   ;NEEDED AND TTY IS STARTED\r
+\r
+                                00140   ;SINCE THE COMMAND DECODER IS CALLED FROM THE CLOCK ROUTINE\r
+                                00150   ;COMMAND SETUP ROUTINES MUST RUN TO COMPLETION QUICKLY\r
+                                00160   ;IF A COMMAND FUNCTION CANNOT DO THIS, IT MUST JUST SET\r
+                                00170   ;THE JOB TO A RUNNABLE STATUS AND RETURN I MEDIATELY\r
+\r
+                                00190   ; "IJOB" - INITIALIZE JOB\r
+                                00200   INTERNAL IJOB\r
+                                00210   EXTERNAL RADX10,JOBINI,JOBKIL,CRLF,MONJOB\r
+\r
+        000000' 254000  000000* 00230   IJOB:   JRST JOBINI\r
+\r
+                                00250   ;PRINT JOB NUMBER\r
+\r
+                                00270           INTERNAL PJOB\r
+        000001' 200040  000004  00280   PJOB:   MOVE TAC, ITEM\r
+        000002' 260140  000000* 00290           PUSHJ PDP,RADX10\r
+        000003' 254000  000000* 00300           JRST CRLF\r
+\r
+                                00320   ;KILL JOB(MUST HAVE CORE ASSIGNED)\r
+\r
+                                00340           INTERNAL KJOB\r
+        000004' 254000  000000* 00350   KJOB:   JRST JOBKIL\r
+\r\fCOMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES                 PAGE 2\r
+        T.HASTINGS 8-2-65\r
+\r
+\r
+\r
+                                00390   ; "START L" OR "START" - START AT LOC. L OR STARTING ADDRESS\r
+                                00400   INTERNAL START\r
+                                00410   EXTERNAL OCTIN,JOBSA,START1,COMERA,STARTU,CPOPJ,CPOPJ1,STARTM\r
+\r
+        000005' 260140  000013' 00430   START:  PUSHJ PDP,STRT\r
+        000006' 254000  000000* 00440           JRST COMERA     ;ERROR\r
+        000007' 254000  000000* 00450           JRST STARTU     ;GO SET JOB TO START(CONSOLE IN USER MO\r
+\r
+                                00470   ; "STARTC L" OR  "STARTC" - START AT LOC. L(TTY IN COMMAND MODE)\r
+\r
+                                00490   INTERNAL STARTC\r
+                                00500   EXTERNAL STARTM\r
+\r
+        000010' 260140  000013' 00520   STARTC: PUSHJ PDP,STRT\r
+        000011' 254000  000006* 00530           JRST COMERA     ;ERROR\r
+        000012' 254000  000000* 00540           JRST STARTM     ;FO SET JOB TO START(TTY IN COM. MODE)\r
+\r
+                                00560   ;ROUTINE TO SCAN ARGUMENT\r
+\r
+        000013' 260140  000000* 00580   STRT:   PUSHJ PDP,OCTIN ;CONVERT OCTAL NO,\r
+        000014' 254000  000016' 00590           JRST ST2        ;EITHER NO NUMBER OR ERROR\r
+        000015' 254000  000020' 00600           JRST ST3        ;START JOB C(TAC1)\r
+\r
+        000016' 326100  000000* 00620   ST2:    JUMPN TAC1, CPOPJ       ;NOT A NUMBER IF NON-ZERO\r
+        000017' 550111  000000* 00630           HRRZ TAC1, JOBSA(JDAT)          ;NO, START AT STARTING ADDRES\r
+        000020' 505100  001000  00640   ST3:    HRLI TAC1, 1000         ;USER MODE FLAG\r
+        000021' 254000  000000* 00650           JRST CPOPJ1             ;OR RETURN\r
+\r\fCOMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES                 PAGE 3\r
+        T.HASTINGS 8-2-65\r
+\r
+\r
+\r
+                                00690   ; "CONT" - CONTINUE EXECUTION FROM WHERE LEFT OFF\r
+                                00700   INTERNAL CONT\r
+                                00710   EXTERNAL CONTU,CONMES,JBTSTS\r
+\r
+        000022' 205100  002000  00730   CONT:   MOVSI TAC1, JERR\r
+        000023' 616104  000000* 00740           TDNN TAC1, JBTSTS(ITEM)         ;IS JOB ERROR BIT SET?\r
+        000024' 254000  000000* 00750           JRST CONTU                      ;NO, GO SET JOB TO CONTINUE\r
+        000025' 265040  000000* 00760   CONTA:  JSP TAC,CONMES          ;YES, PRINT CANT CONTINUE\r
+\r
+        000026' 416031  623650  00780           ASCIZ /CAN'T CONTINUE\r
+        000027' 202071  747250\r
+        000030' 446352  542432\r
+        000031' 050000  000000  00790   /\r
+\r
+                                00810   ; "CONTC" - CONTINUE EXECUTION(TTY REMAINS IN COMMAND MODE)\r
+\r
+                                00830   INTERNAL CONTC\r
+                                00840   EXTERNAL CONTM\r
+\r
+        000032' 205100  002000  00860   CONTC:  MOVSI TAC1, JERR\r
+        000033' 616104  000023* 00870           TDNN TAC1, JBTSTS(ITEM)         ;IS JOB ERROR BIT SET?\r
+        000034' 254000  000000* 00880           JRST CONTM      ;NO\r
+        000035' 254000  000025' 00890           JRST CONTA      ;YES\r
+\r
+                                00910   ; "DDT" - START EXECUTION AT DDT IN USER AREA\r
+                                00920   INTERNAL DDTGO\r
+                                00930   EXTERNAL JOBDDT,STARTU\r
+\r
+        000036' 550111  000000* 00950   DDTGO:  HRRZ TAC1, JOBDDT(JDAT)         ;GET DDT STARTING ADDRESS\r
+        000037' 326100  000043' 00960           JUMPN TAC1,DDT1         ;GO START JOB IF NON-ZERO\r
+        000040' 265040  000025* 00970           JSP TAC,CONMES                  ;ZERO, PRINT"NO DDT"\r
+\r
+        000041' 472364  042210  00990           ASCII /NO DDT\r
+        000042' 520321  200000  01000   /\r
+\r
+        000043' 505100  010000  01020   DDT1:   HRLI TAC1,USRMOD        ;USER MODE BIT\r
+        000044' 254000  000007* 01030           JRST STARTU             ;GO SET TO RUN JOB\r
+                                01040   ;DIGITAL MAYNARD\r
+\r
+                                01060   INTERNAL DIGITAL\r
+\r
+        000045' 265040  000040* 01080   DIGITAL:        JSP TAC,CONMES\r
+        000046' 442131  446236  01090           ASCIZ /HELLO\r
+        000047' 064240  000000  01100   /\r
+\r\fCOMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES                 PAGE 4\r
+        T.HASTINGS 8-2-65\r
+\r
+\r
+\r
+\r
+\r
+                                01160   ; "CORE  #" - ASSIGNS #*1024 WORDS OF CORE TO JOB\r
+                                01170   ;   "CORE" WITH NO ARGUMENT IS EQUIVALENT TO "CORE 0"\r
+\r
+                                01190   INTERNAL CORE\r
+                                01200   EXTERNAL CORE1,DECIN,ANYRIN,CONMES,COMERA,NOTENF\r
+                                01210   EXTERNAL JOBPFI,JBTADR,CPOPJ,JOBPRT,JOBPR1,JOBZER\r
+                                01220   EXTERNAL RADX10\r
+\r
+        000050' 260140  000000* 01240   CORE:   PUSHJ PDP, DECIN        ;GET NO. OF 1K BLOCKS\r
+        000051' 254000  000077' 01250           JRST COR3               ;ERROR\r
+        000052' 336040  000002  01260           SKIPN TAC,TAC1          ;IS ZERO BEING ASKED FOR?\r
+        000053' 326440  000000* 01270           JUMPN JDAT,JOBZER       ;YES, RELEASE ALL DEVICES IF THERE WAS\r
+        000054' 260140  000000* 01280           PUSHJ PDP,CORE1\r
+        000055' 254000  000065' 01290           JRST COR2               ;CORE NOT AVAILABLE (AC TAC = BLO CKS L\r
+        000056' 550444  000000* 01300           HRRZ JDAT, JBTADR(ITEM)         ;CORE GRANTED, CLEAR PART OF\r
+        000057' 322440  000016* 01310           JUMPE JDAT, CPOPJ       ;UNLESS ALL CORE WAS RETURNED\r
+        000060' 402011  000000* 01320           SETZM JOBPRT(JDAT)              ;CLEAR PART PROTECTED FROM IO\r
+        000061' 505051  000060* 01330           HRLI TAC,JOBPRT(JDAT)\r
+        000062' 541051  000000* 01340           HRRI TAC, JOBPR1(JDAT)\r
+        000063' 251051  000000* 01350           BLT TAC, JOBPFI(JDAT)\r
+        000064' 263140  000000  01360           POPJ PDP,\r
+\r
+        000065' 260140  000002* 01380   COR2:   PUSHJ PDP,RADX10        ;PRINT NO. OF FREE 1K BLOCKS LEFT\r
+        000066' 265040  000045* 01390           JSP TAC,CONMES\r
+\r
+        000067' 202152  242612  01410           ASCIZ / FREE 1K BLOCKS LEFT, NONE ASSIGNED\r
+        000070' 201431  320204\r
+        000071' 462370  345646\r
+        000072' 202310  543250\r
+        000073' 261011  647634\r
+        000074' 425010  151646\r
+        000075' 446171  642610\r
+        000076' 064240  000000  01420   /\r
+        000077' 326100  000011* 01430   COR3:   JUMPN TAC1, COMERA      ;NOT A NO. IF NON-ZERO, APPEND "?"\r
+        000100' 254000  000000* 01440           JRST NOTENF             ;NOT ENOUGH ARGUMENT\r
+\r\fCOMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES                 PAGE 5\r
+        T.HASTINGS 8-2-65\r
+\r
+\r
+\r
+                                01480   ; "SAVE FILE-NAME" - SAVES JOB AREA ON RETRIEVABLE DEVICE\r
+                                01490   ;ONLY A SAVE OR A GET IN PROGRESS FOR EACH JOB\r
+                                01500   ;NO ATTEMPT IS MADE TO SAVE DEVICE ASSIGNMENTS, ACS, OR PC\r
+                                01510   INTERNAL SAVE\r
+                                01520   EXTERNAL SAVJOB,START1,SGSET\r
+\r
+        000101' 201100  000000* 01540   SAVE:   MOVEI TAC1, SAVJOB      ;SETUP TO RUN SAVJOB\r
+        000102' 254000  000000* 01550           JRST SGSET\r
+\r
+                                01570   ; "GET DEVICE:FILE-NAME" - SETS UP JOB AREA FROM RETRIEVABLE DEVICE\r
+                                01580   INTERNAL GET\r
+                                01590   EXTERNAL GETJOB\r
+\r
+        000103' 201100  000000* 01610   GET:    MOVEI TAC1, GETJOB      ;SETUP TO RUN GET JOB\r
+        000104' 254000  000102* 01620           JRST SGSET\r
+\r\fCOMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES                 PAGE 6\r
+        T.HASTINGS 8-2-65\r
+\r
+\r
+\r
+\r
+                                01670   ;"ASSIGN DEV:NAME" - ASSIGNS DEV TO JOB AND GIVES IT LOGICAL NAME NAM\r
+\r
+                                01690   ;TEMPORARY ACS\r
+                        000012  01700           T1=BUFPNT\r
+                        000013  01710           T=BUFWRD\r
+\r
+                                01730   INTERNAL ASSIGN\r
+                                01740   EXTERNAL CTEXT1, NOTENF, DEVLST, ASSASG, CONMES, PJOBN, ANYRDX, ERNAM\r
+                                01750   EXTERNAL CRLF, DEVLG,SYSTAP\r
+\r
+        000105' 260140  000000* 01770   ASSIGN: PUSHJ PDP, CTEXT1       ;GET FIRST ARGUMENT\r
+        000106' 322100  000100* 01780           JUMPE TAC1, NOTENF      ;NO ARGUMENTS TYPED IF 0\r
+        000107' 200500  000002  01790           MOVE T1, TAC1                   ;SAVE DEVICE NAME\r
+        000110' 261140  400000  01800           PUSH PDP, ASSCON        ;SAVE INPUT BYTE POINTER\r
+        000111' 201100  400000  01810           MOVEI TAC1, ASSCON      ;SETUP ASSIGNED BY CONSOLE BIT\r
+        000112' 554300  000000* 01820   ASSN:   HLRZ DEVDAT, DEVLST\r
+        000113' 312506  000000  01830   ASSG0:  CAME T1,DEVNAM(DEVDAT)          ;DOES PHYSICAL NAME MATCH?\r
+        000114' 254000  000120' 01840           JRST ASSG1              ;NO\r
+        000115' 260140  000000* 01850           PUSHJ PDP, ASSASG       ;YES, TRY TO ASSIGN DEVICE\r
+        000116' 254000  000135' 01860           JRST ASSER1             ;ALREADY ASSIGNED TO ANOTHER JOB\r
+        000117' 254000  000151' 01870           JRST ASSFIN             ;ASSIGNED\r
+\r
+        000120' 200046  000000  01890   ASSG1:  MOVE TAC,DEVNAM(DEVDAT)         ;IS THIS THE SYSTEM TAPE?\r
+        000121' 316040  000000* 01900           CAMN TAC,SYSTAP\r
+        000122' 254000  000131' 01910           JRST ASSG2              ;YES\r
+        000123' 135540  000000* 01920           LDB T, PJOBN            ;SAVE OLD JOB NUMBER FOR THIS\r
+        000124' 620040  777777  01930           TRZ TAC,-1              ;COMPARE LEFT HALF ONLY\r
+        000125' 316040  000012  01940           CAMN TAC, T1\r
+        000126' 260140  000115* 01950           PUSHJ PDP, ASSASG       ;MATCH, TRY TO ASSIGN IT\r
+        000127' 254000  000131' 01960           JRST ASSG2              ;KEEP LOOKING\r
+        000130' 322540  000151' 01970           JUMPE T,ASSFIN          ;IF OLD JOB NUMBER 0, DEVICE PREVIOSLY\r
+\r
+        000131' 554306  000003  01990   ASSG2:  HLRZ DEVDAT, DEVSER(DEVDAT)\r
+        000132' 326300  000113' 02000           JUMPN DEVDAT, ASSG0\r
+        000133' 262140  000001  02010           POP PDP, TAC\r
+        000134' 254000  000211' 02020           JRST NOTDEV             ;PRINT NO SUCH DEVICE\r
+\r\fCOMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES                 PAGE 7\r
+        T.HASTINGS 8-2-65\r
+\r
+\r
+\r
+                                02060   ;ALREADY ASSIGNED TO ANOTHER JOB\r
+\r
+        000135' 262140  000001  02080   ASSER1: POP PDP, TAC\r
+        000136' 201040  000144' 02090           MOVEI TAC, ASSMS2\r
+        000137' 260140  000066* 02100           PUSHJ PDP, CONMES\r
+        000140' 201100  000012  02110           MOVEI TAC1, ^D10\r
+        000141' 135040  000123* 02120           LDB TAC, PJOBN\r
+        000142' 260140  000000* 02130           PUSHJ PDP,ANYRDX\r
+        000143' 254000  000003* 02140           JRST CRLF\r
+\r
+        000144' 406312  242602  02160   ASSMS2: ASCIZ /ALREADY ASSIGNED TO JOB /\r
+        000145' 422624  040646\r
+        000146' 516230  747212\r
+        000147' 421012  447500\r
+        000150' 452370  220000\r
+\r
+                                02180   ;DEVICE ASSIGNED, GIVE IT A LOGICAL NAME\r
+\r
+        000151' 262140  000001  02200   ASSFIN: POP PDP,TAC     ;RESTORE INPUT BYTE POINTER\r
+        000152' 261140  000006  02210           PUSH PDP,DEVDAT ;SAVE DDB ADDRESS\r
+        000153' 260140  000105* 02220           PUSHJ PDP,CTEXT1        ;GET SECOND ARG, LOGICAL DEVICE NAME\r
+        000154' 332040  000002  02230           SKIPE TAC,TAC1  ;IS THERE A LOGICAL NAME SPECIFIED?\r
+        000155' 260140  000000* 02240           PUSHJ PDP, DEVLG        ;YES, SEE IF IT IS ALREADY IN USE\r
+                                02250                                   ;BY THIS USER\r
+        000156' 254000  000161' 02260           JRST ASSF1                      ;NO\r
+        000157' 201040  000173' 02270           MOVEI TAC,LOGERR        ;YES, PRINT ERROR\r
+        000160' 260140  000137* 02280           PUSHJ PDP,CONMES\r
+        000161' 200303  000000  02290   ASSF1:  MOVE DEVDAT,(PDP)       ;RESTORE DDB ADDRESS\r
+        000162' 202106  000005  02300           MOVEM TAC1,DEVLOG(DEVDAT)       ;STORE IN DEVICE DATA BLOCK\r
+        000163' 205100  400000  02310           MOVSI TAC1,DVDIRIN      ;CLEAR DIRECTORY IN CORE BIT\r
+        000164' 412106  000004  02320           ANDCAM TAC1,DEVMOD(DEVDAT)\r
+        000165' 260140  000000* 02330           PUSHJ PDP, ERNAM        ;PRINT PHYSICAL DEVICE NAME\r
+        000166' 262140  000006  02340           POP PDP, DEVDAT\r
+        000167' 265040  000160* 02350           JSP TAC,CONMES\r
+\r
+        000170' 202032  351622  02370           ASCIZ / ASSIGNED\r
+        000171' 436350  542032\r
+        000172' 050000  000000  02380   /\r
+\r
+        000173' 462370  744606  02400   LOGERR: ASCIZ /LOGICAL NAME ALREADY IN USE, /\r
+        000174' 406304  047202\r
+        000175' 466124  040630\r
+        000176' 512130  142262\r
+        000177' 202231  620252\r
+        000200' 516125  420000\r
+\r\fCOMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES                 PAGE 8\r
+        T.HASTINGS 8-2-65\r
+\r
+\r
+\r
+                                02440   ;"DEASSIGN DEV" - DEASSIGNS DEVICE FROM CONSOLE\r
+\r
+                                02460   INTERNAL DEASSIGN, NOTDEV\r
+                                02470   EXTERNAL CTEXT1, DEVSRC, CONMES, ERNAM, DEASG, DEASTY\r
+\r
+        000201' 260140  000153* 02490   DEASSIGN: PUSHJ PDP, CTEXT1     ;GET DEVICE NAME\r
+        000202' 322100  000000* 02500           JUMPE TAC1,DEASTY       ;NO ARG. IF 0, DEASSIGN ALL BUT TTY\r
+        000203' 200040  000002  02510           MOVE TAC, TAC1          ;DEVICE NAME\r
+        000204' 260140  000000* 02520           PUSHJ PDP, DEVSRC       ;SEARCH FOR DEVICE\r
+        000205' 254000  000211' 02530           JRST DEAER1             ;NOT FOUND\r
+        000206' 260140  000000* 02540           PUSHJ PDP, DEASG        ;FOUND, DEASSIGN IT\r
+        000207' 254000  000216' 02550           JRST DEAER2             ;NOT PREVIOUSLY ASSIGNED\r
+        000210' 263140  000000  02560           POPJ PDP,               ;DEVICE DEASSIGNED\r
+\r
+        000211'                 02580   NOTDEV:\r
+        000211' 265040  000167* 02590   DEAER1: JSP TAC,CONMES          ;PRINT NO SUCH DEVICE\r
+\r
+        000212' 472364  051652  02610           ASCIZ /NO SUCH DEVICE\r
+        000213' 416204  042212\r
+        000214' 532230  342432\r
+        000215' 050000  000000  02620   /\r
+\r
+        000216' 261140  000006  02640   DEAER2: PUSH PDP, DEVDAT        ;PRINT PHYSICAL DEVICE NAME\r
+        000217' 260140  000165* 02650           PUSHJ PDP, ERNAM\r
+        000220' 262140  000006  02660           POP PDP, DEVDAT\r
+        000221' 265040  000211* 02670           JSP TAC,CONMES\r
+\r
+        000222' 536032  347116  02690           ASCIZ /WASN'T ASSIGNED\r
+        000223' 521010  151646\r
+        000224' 446171  642610\r
+        000225' 064240  000000  02700   /\r
+\r\fCOMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES                 PAGE 9\r
+        T.HASTINGS 8-2-65\r
+\r
+\r
+\r
+                                02740   ; "ATTACH N" - ATTACH CONSOLE TO JOB N\r
+                                02750   ;CHANGES ADDRESS OF TTY DEVICE DATA BLOCK STORED IN -1(PDP)\r
+                                02760   ;BY THE COMMAND DECODER\r
+\r
+                                02780   INTERNAL ATTACH\r
+                                02790   EXTERNAL DECIN,TTYATT,JOBN,ERNAM,CONMES,TTYFND\r
+\r
+        000226' 260140  000050* 02810   ATTACH: PUSHJ PDP,DECIN         ;GET JOB NO.\r
+        000227' 254000  000243' 02820           JRST ATT1               ;NOT A NUMBER OR NONE SPECIFIEED\r
+        000230' 332000  000002  02830           SKIPE TAC1                      ;0 IS ILLEGAL\r
+        000231' 301100  000000* 02840           CAIL TAC1, JOBN         ;IS JOB NUMBER TOO BIG?\r
+        000232' 254000  000243' 02850           JRST ATT1               ;ILLEGAL JOB NUMBER\r
+        000233' 205040  004000  02860           MOVSI TAC,JNA           ;HAS THIS JOB NO BEEN ASSIGNED?\r
+        000234' 616042  000033* 02870           TDNN TAC,JBTSTS(TAC1)\r
+        000235' 254000  000261' 02880           JRST ATT4               ;NO, PRINT ERROR\r
+        000236' 200200  000002  02890           MOVE ITEM,TAC1          ;JOB NUMBER TO ITEM\r
+        000237' 260140  000000* 02900           PUSHJ PDP,TTYATT        ;NO, ATTACH TTY\r
+        000240' 254000  000251' 02910           JRST ATT2               ;ERROR CANT ATTACH\r
+        000241' 202303  777777  02920           MOVEM DEVDAT,-1(PDP)            ;CHANGE DEV DATA BLOCK ADDRES\r
+        000242' 254000  000000* 02930           JRST TTYFND             ;ATTACHED. GO SET UP OUTP. BYTE PTR.\r
+\r
+        000243' 265040  000221* 02950   ATT1:   JSP TAC,CONMES\r
+        000244' 446311  442616  02960           ASCIZ /ILLEGAL JOB NUMBER\r
+        000245' 406304  045236\r
+        000246' 411011  652632\r
+        000247' 412132  206424  02970   /\r
+        000250' 000000  000000\r
+\r
+        000251' 261140  000006  02990   ATT2:   PUSH PDP,DEVDAT\r
+        000252' 260140  000217* 03000           PUSHJ PDP,ERNAM         ;PRINT TTY DEVICE NAME\r
+        000253' 262140  000001  03010           POP PDP,TAC\r
+        000254' 265040  000243* 03020           JSP TAC,CONMES\r
+        000255' 202031  451212  03030           ASCIZ / ALREADY ATTACHED\r
+        000256' 406113  120202\r
+        000257' 522510  141620\r
+        000260' 426101  505000  03040   /\r
+\r
+        000261' 265040  000254* 03060   ATT4:   JSP TAC,CONMES\r
+        000262' 452370  220234  03070           ASCIZ /JOB NEVER WAS INITIATED\r
+        000263' 426550  551100\r
+        000264' 536032  320222\r
+        000265' 472232  444602\r
+        000266' 522130  406424  03080   /\r
+        000267' 000000  000000\r
+\r
+                                03100   ; "DETACH" - DETACH CONSOLE FORM JOB\r
+\r
+                                03120   INTERNAL DETACH\r
+                                03130   EXTERNAL TTYDET\r
+\r
+        000270' 350003  000000  03150   DETACH: AOS (PDP)       ;SUPRESS CR-LF SO NO TTY DDB SETUP\r
+\r\fCOMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES                 PAGE 9-1\r
+        T.HASTINGS 8-2-65\r
+\r
+        000271' 254000  000000* 03160           JRST TTYDET     ;GO DETACH TTY\r
+\r
+                                03180           END,\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 000272\r
+\r
+8K CORE USED\r
+\r\fCOMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES                 PAGE 10\r
+        SYMBOL TABLE\r
+\r
+                000303  \r
+A               000000  INT\r
+AC1             000015  INT\r
+AC2             000016  INT\r
+AC3             000017  INT\r
+AL              000001  INT\r
+ANYRDX          000142' EXT\r
+ANYRIN          000000  EXT\r
+ASSASG          000126' EXT\r
+ASSCON          400000  INT\r
+ASSER1          000135' \r
+ASSF1           000161' \r
+ASSFIN          000151' \r
+ASSG0           000113' \r
+ASSG1           000120' \r
+ASSG2           000131' \r
+ASSIGN          000105' INT\r
+ASSMS2          000144' \r
+ASSN            000112' \r
+ASSPRG          200000  INT\r
+ATT1            000243' \r
+ATT2            000251' \r
+ATT4            000261' \r
+ATTACH          000226' INT\r
+B               000014  INT\r
+BUFPNT          000012  INT\r
+BUFWRD          000013  INT\r
+CLOSB           002000  INT\r
+CLSIN           000002  INT\r
+CLSOUT          000001  INT\r
+COMERA          000077' EXT\r
+CONMES          000261' EXT\r
+CONT            000022' INT\r
+CONTA           000025' \r
+CONTC           000032' INT\r
+CONTM           000034' EXT\r
+CONTU           000024' EXT\r
+COR2            000065' \r
+COR3            000077' \r
+CORE            000050' INT\r
+CORE1           000054' EXT\r
+CPOPJ           000057' EXT\r
+CPOPJ1          000021' EXT\r
+CRLF            000143' EXT\r
+CTEXT1          000201' EXT\r
+D               000017  INT\r
+DAT             000005  INT\r
+DCL             000001  INT\r
+DCW             020000  INT\r
+DDI             000007  INT\r
+DDO             000006  INT\r
+DDT1            000043' \r
+DDTGO           000036' INT\r
+\r\fCOMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES                 PAGE 10-1\r
+        SYMBOL TABLE\r
+\r
+DDTMEM          000037  INT\r
+DDTSYM          000036  INT\r
+DEAER1          000211' \r
+DEAER2          000216' \r
+DEASG           000206' EXT\r
+DEASSI          000201' INT\r
+DEASTY          000202' EXT\r
+DECIN           000226' EXT\r
+DEN             000004  INT\r
+DETACH          000270' INT\r
+DEVADR          000007  INT\r
+DEVBUF          000006  INT\r
+DEVCHR          000001  INT\r
+DEVCTR          000011  INT\r
+DEVDAT          000006  INT\r
+DEVIAD          000007  INT\r
+DEVIOS          000002  INT\r
+DEVLG           000155' EXT\r
+DEVLOG          000005  INT\r
+DEVLST          000112' EXT\r
+DEVMOD          000004  INT\r
+DEVNAM          000000  INT\r
+DEVOAD          000010  INT\r
+DEVPTR          000010  INT\r
+DEVSER          000003  INT\r
+DEVSRC          000204' EXT\r
+DGF             000012  INT\r
+DIGITA          000045' INT\r
+DIN             000003  INT\r
+DLK             000005  INT\r
+DOU             000002  INT\r
+DR              000016  INT\r
+DRL             000000  INT\r
+DSI             000011  INT\r
+DSO             000010  INT\r
+DTW             040000  INT\r
+DVAVAL          000040  INT\r
+DVCDR           100000  INT\r
+DVDIR           000004  INT\r
+DVDIRI          400000  INT\r
+DVIN            000002  INT\r
+DVLPT           040000  INT\r
+DVMTA           000020  INT\r
+DVOUT           000001  INT\r
+DVTTY           000010  INT\r
+ENTRB           020000  INT\r
+ERNAM           000252' EXT\r
+GET             000103' INT\r
+GETJOB          000103' EXT\r
+I               000010  INT\r
+IB              000013  INT\r
+IBUFB           200000  INT\r
+IJOB            000000' INT\r
+\r\fCOMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES                 PAGE 10-2\r
+        SYMBOL TABLE\r
+\r
+INITB           400000  INT\r
+INPB            010000  INT\r
+IO              000020  INT\r
+IOACT           010000  INT\r
+IOBEG           000002  INT\r
+IOBKTL          040000  INT\r
+IOCON           000040  INT\r
+IODEND          020000  INT\r
+IODERR          200000  INT\r
+IODISC          400000  INT\r
+IODONE          400000  INT\r
+IODTER          100000  INT\r
+IOEND           000040  INT\r
+IOFST           000004  INT\r
+IOIMPM          400000  INT\r
+IONRCK          000100  INT\r
+IORDEL          000100  INT\r
+IORET           000020  INT\r
+IOS             000000  INT\r
+IOSTRT          000010  INT\r
+IOUSE           400000  INT\r
+IOW             000001  INT\r
+IOWC            000020  INT\r
+IOWS            400000  INT\r
+ITEM            000004  INT\r
+JBFADR          000000  INT\r
+JBFCTR          000002  INT\r
+JBFPTR          000001  INT\r
+JBTADR          000056' EXT\r
+JBTSTS          000234' EXT\r
+JBUF            000005  INT\r
+JDAT            000011  INT\r
+JERR            002000  INT\r
+JIOW            100000  INT\r
+JNA             004000  INT\r
+JOBDDT          000036' EXT\r
+JOBINI          000000' EXT\r
+JOBKIL          000004' EXT\r
+JOBN            000231' EXT\r
+JOBPFI          000063' EXT\r
+JOBPR1          000062' EXT\r
+JOBPRT          000061' EXT\r
+JOBSA           000017' EXT\r
+JOBZER          000053' EXT\r
+KJOB            000004' INT\r
+LOGERR          000173' \r
+LOOKB           040000  INT\r
+MONJOB          000000  EXT\r
+MTW             010000  INT\r
+NOTDEV          000211' INT\r
+NOTENF          000106' EXT\r
+OBUFB           100000  INT\r
+OCTIN           000013' EXT\r
+\r\fCOMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES                 PAGE 10-3\r
+        SYMBOL TABLE\r
+\r
+OUTPB           004000  INT\r
+PDP             000003  INT\r
+PICHN           000100  INT\r
+PJOB            000001' INT\r
+PJOBN           000141' EXT\r
+PROG            000007  INT\r
+RADX10          000065' EXT\r
+RUN             200000  INT\r
+RUNABL          204000  INT\r
+SAVE            000101' INT\r
+SAVJOB          000101' EXT\r
+SGSET           000104' EXT\r
+ST2             000016' \r
+ST3             000020' \r
+START           000005' INT\r
+START1          000000  EXT\r
+STARTC          000010' INT\r
+STARTM          000012' EXT\r
+STARTU          000044' EXT\r
+STRT            000013' \r
+SYSTAP          000121' EXT\r
+T               000013  \r
+T1              000012  \r
+TAC             000001  INT\r
+TAC1            000002  INT\r
+TEM             000010  INT\r
+TTYATC          020000  INT\r
+TTYATT          000237' EXT\r
+TTYDET          000271' EXT\r
+TTYFND          000242' EXT\r
+TTYUSE          010000  INT\r
+USRMOD          010000  INT\r
+UUO             000014  INT\r
+\f   CCCCCCCCCCCC         OOOOOOOOO         MMM         MMM         CCCCCCCCCCCC         SSSSSSSSSSSS         SSSSSSSSSSSS\r
+   CCCCCCCCCCCC         OOOOOOOOO         MMM         MMM         CCCCCCCCCCCC         SSSSSSSSSSSS         SSSSSSSSSSSS\r
+   CCCCCCCCCCCC         OOOOOOOOO         MMM         MMM         CCCCCCCCCCCC         SSSSSSSSSSSS         SSSSSSSSSSSS\r
+CCC                  OOO         OOO      MMMMMM   MMMMMM      CCC                  SSS                  SSS            \r
+CCC                  OOO         OOO      MMMMMM   MMMMMM      CCC                  SSS                  SSS            \r
+CCC                  OOO         OOO      MMMMMM   MMMMMM      CCC                  SSS                  SSS            \r
+CCC                  OOO         OOO      MMM   MMM   MMM      CCC                  SSS                  SSS            \r
+CCC                  OOO         OOO      MMM   MMM   MMM      CCC                  SSS                  SSS            \r
+CCC                  OOO         OOO      MMM   MMM   MMM      CCC                  SSS                  SSS            \r
+CCC                  OOO         OOO      MMM         MMM      CCC                     SSSSSSSSS            SSSSSSSSS   \r
+CCC                  OOO         OOO      MMM         MMM      CCC                     SSSSSSSSS            SSSSSSSSS   \r
+CCC                  OOO         OOO      MMM         MMM      CCC                     SSSSSSSSS            SSSSSSSSS   \r
+CCC                  OOO         OOO      MMM         MMM      CCC                              SSS                  SSS\r
+CCC                  OOO         OOO      MMM         MMM      CCC                              SSS                  SSS\r
+CCC                  OOO         OOO      MMM         MMM      CCC                              SSS                  SSS\r
+CCC                  OOO         OOO      MMM         MMM      CCC                              SSS                  SSS\r
+CCC                  OOO         OOO      MMM         MMM      CCC                              SSS                  SSS\r
+CCC                  OOO         OOO      MMM         MMM      CCC                              SSS                  SSS\r
+   CCCCCCCCCCCC         OOOOOOOOO         MMM         MMM         CCCCCCCCCCCC      SSSSSSSSSSSS         SSSSSSSSSSSS   \r
+   CCCCCCCCCCCC         OOOOOOOOO         MMM         MMM         CCCCCCCCCCCC      SSSSSSSSSSSS         SSSSSSSSSSSS   \r
+   CCCCCCCCCCCC         OOOOOOOOO         MMM         MMM         CCCCCCCCCCCC      SSSSSSSSSSSS         SSSSSSSSSSSS   \r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  11:23:08\r
+File: DSKB1 :COMCSS.LST   [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:19
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:2587 \r
+File will be deleted after printing\r
+\f\rCOMCSS - COMMAND COMMON ROUTINES                 PAGE 1\r
+        T. HASTINGS         8-15-65\r
+\r
+                                00010           XLIST\r
+                                01930          LIST\r
+\r\fCOMCSS - COMMAND COMMON ROUTINES                 PAGE 7\r
+        T. HASTINGS         8-15-65\r
+\r
+\r
+                                00010   TITLE COMCSS - COMMAND COMMON ROUTINES\r
+                                00020   SUBTTL    T. HASTINGS       8-15-65\r
+                                00030   ;ROUTINE TO RETURN NEXT ALPHANUMERIC STRING\r
+                                00040   ; IN COMMAND LINE (SIXBIT)\r
+                                00050   ; CALL:   MOVE TAC, BYTE POINTER TO FIRST CHAR.-1\r
+                                00060   ;         PUSHJ PDP, CTEXT\r
+                                00070   ; SIXBIT STRING RETURN LEFT JUSTIFIED IN AC TAC1\r
+\r
+                                00090   INTERNAL CTEXT, CTEXT1\r
+\r
+                        000012  00110   T=BUFPNT            ;TEMPORARY ACS\r
+                        000013  00120   T1=BUFWRD\r
+                        000014  00130   T2=UUO\r
+\r
+        000000' 201100  000000  00150   CTEXT1:   MOVEI TAC1, 0         ;CHECK PREVIOUS BREAK CHAR.\r
+        000001' 135500  000001  00160             LDB T, TAC\r
+        000002' 306500  000015  00170             CAIN T, 15            ;RETURN IF CR.\r
+        000003' 263140  000000  00180             POPJ PDP,\r
+\r
+        000004' 260140  000035' 00200   CTEXT:    PUSHJ PDP, SKIPS              ;SKIP LEADING SPACES, TABS\r
+        000005' 200500  000231' 00210             MOVE T,[POINT 6,TAC1]\r
+        000006' 201100  000000  00220             MOVEI TAC1, 0\r
+        000007' 135540  000001  00230             LDB T1, TAC\r
+        000010' 254000  000012' 00240             JRST CTEX1\r
+        000011' 134540  000001  00250   CTEX0:    ILDB T1,TAC\r
+        000012' 260140  000024' 00260   CTEX1:    PUSHJ PDP, CTEX               ;IS IT ALPHANUMERIC\r
+        000013' 263140  000000  00270             POPJ PDP,                     ;NO. EXIT\r
+        000014' 640540  000040  00280             TRC T1,40                     ;CONVERT TO SIXBIT\r
+        000015' 136540  000012  00290             IDPB T1,T                     ;YES, STORE AWAY\r
+        000016' 312500  000232' 00300             CAME T,[POINT 6,TAC1,35]      ;SIX CHARACTER YET\r
+        000017' 254000  000011' 00310             JRST CTEX0                    ;NO\r
+        000020' 134540  000001  00320   CTEX2:    ILDB T1, TAC                  ;YES\r
+        000021' 260140  000024' 00330             PUSHJ PDP, CTEX               ;IS IT ALPHANUMERIC\r
+        000022' 263140  000000  00340             POPJ PDP,                     ;NO, EXIT\r
+        000023' 254000  000020' 00350             JRST CTEX2\r
+\r
+                                00370   ;SCAN FOR ALPHANUMERIC CHAR IN T1\r
+        000024' 301540  000060  00380   CTEX:     CAIL T1, "0"\r
+        000025' 303540  000132  00390             CAILE T1, "Z"         ;LETTERS ARE LARGER THAN NOS.\r
+        000026' 263140  000000  00400             POPJ PDP,           ;NEITHER\r
+        000027' 303540  000071  00410             CAILE T1, "9"\r
+        000030' 301540  000101  00420             CAIL T1, "A"\r
+        000031' 350003  000000  00430             AOS (PDP)           ;LETTER OR NUMBER\r
+        000032' 263140  000000  00440             POPJ PDP,\r
+\r\fCOMCSS - COMMAND COMMON ROUTINES                 PAGE 2\r
+        T. HASTINGS         8-15-65\r
+\r
+\r
+                                00470   ;ROUTINE TO IGNORE LEADING SPACES AND TABS\r
+                                00480   ;CALL:    MOVE TAC, BYTE POINTER TO CHAR.\r
+                                00490   ;         PUSHJ PDP, SKIPS1\r
+\r
+                                00510   INTERNAL SKIPS1\r
+\r
+        000033' 135500  000001  00530   SKIPS1:   LDB T, TAC\r
+        000034' 254000  000036' 00540             JRST SKIPSA\r
+\r
+                                00560   ;ROUTINE TO IGNORE LEDING SPACES AND TABS \r
+                                00570   ;CALL:    MOVE TAC, BYTE POINTER TO CHAR.-1\r
+                                00580   ;         PUSHJ PDP, SKIPS\r
+\r
+                                00600   INTERNAL SKIPS\r
+\r
+        000035' 134500  000001  00620   SKIPS:    ILDB T, TAC\r
+        000036' 302500  000040  00630   SKIPSA:   CAIE T, " "\r
+        000037' 306500  000011  00640             CAIN T, 11\r
+        000040' 254000  000035' 00650             JRST SKIPS\r
+        000041' 263140  000000  00660             POPJ PDP,\r
+\r\fCOMCSS - COMMAND COMMON ROUTINES                 PAGE 3\r
+        T. HASTINGS         8-15-65\r
+\r
+\r
+                                00690   ;ROUTINE TO APPEND A "?" TO INPUT STRING AND SET AS OUTPUT\r
+                                00700   ;CALL:    MOVE TAC, BYTE POINTER TO LAST CHAR. IN INPUT STRING\r
+                                00710   ;         PUSHJ PDP, COMERA\r
+\r
+                                00730   INTERNAL COMERA\r
+\r
+        000042' 133000  000001  00750   COMERA:   IBP TAC\r
\r
+                                00770   ;ROUTINE TO REPLACE LAST CHARACTER IN INPUT STRING BY "?"\r
+                                00780   ;AND SET AS OUTPUT\r
+                                00790   ;CALL:    MOVE TAC, BYTE POINTER TO LAST CHAR. IN INPUT STRING\r
+                                00800   ;         PUSHJ PDP, COMERR\r
+\r
+                                00820   INTERNAL COMERR\r
+\r
+                                00840   EXTERNAL TTYBUF\r
+\r
+        000043' 200240  000001  00860   COMERR:   MOVE DAT,TAC\r
+        000044' 201506  000000* 00870             MOVEI T,TTYBUF(DEVDAT)        ;IS THERE MORE THAN 3 WORDS I\r
+        000045' 305505  777775  00880             CAIGE T,-3(DAT)\r
+        000046' 541252  000003  00890             HRRI DAT,3(T)         ;YES, TYPE ONLY 3\r
+        000047' 201500  000077  00900             MOVEI T, "?"            ;APPEND "?"\r
+        000050' 137500  000005  00910             DPB T, DAT\r
+        000051' 265040  000060' 00920             JSP TAC,CONMES\r
+\r
+        000052' 202331  747222  00940             ASCIZ / MONITOR COMMAND ERROR\r
+        000053' 522372  220206\r
+        000054' 476331  540634\r
+        000055' 421010  551244\r
+        000056' 476441  505000  00950   /\r
+\r\fCOMCSS - COMMAND COMMON ROUTINES                 PAGE 4\r
+        T. HASTINGS         8-15-65\r
+\r
+\r
+                                00980   ;ROUTINE TO PRINT CARRIAGE RETURN-LINE-FEED\r
+                                00990   ;CALL:    MOVE DAT,BYTE POINTER TO OUTPUT\r
+                                01000   ;         PUSHJ PDP,CRLF\r
+\r
+                                01020   INTERNAL CRLF\r
+\r
+                                01040   CRLF:     MOVEI TAC,[ASCII /\r
+        000057' 201040  000233' 01050   /]\r
+\r
+                                01070   ;ROUTINE TO MOVE ASCII CHAR. STRING TO CONSOLE OUTPUT BUFFER\r
+                                01080   ; CALL:   MOVE DAT, BYTE POINTER TO LAST OUTPUT CHARACTER\r
+                                01090   ;         MOVEI TAC,  ADDRESS OF ASCII MESSAGE`\r
+                                01100   ;         PUSHJ PDP, CONMES\r
+                                01110   ; STRING TERMINATED BY NULL\r
+                                01120   ; CONMES DOES NOT START TTY\r
+\r
+                                01140   INTERNAL CONMES\r
+\r
+        000060' 261140  000002  01160   CONMES:   PUSH PDP, TAC1\r
+        000061' 505040  440700  01170             HRLI TAC, 440700      ;FORM BYTE POINTER\r
+        000062' 134100  000001  01180   CON0:     ILDB TAC1, TAC\r
+        000063' 322100  000066' 01190             JUMPE TAC1, CON1\r
+        000064' 136100  000005  01200             IDPB TAC1, DAT\r
+        000065' 254000  000062' 01210             JRST CON0\r
+        000066' 262140  000002  01220   CON1:     POP PDP, TAC1\r
+        000067' 263140  000000  01230             POPJ PDP,\r
+\r
+                                01250   ;ROUTINE TO PRINT "TO FEW ARGUMENTS"\r
+                                01260   ;CALL:    MOVE DAT,BYTE POINTER\r
+                                01270   ;         PUSHJ PDP,NOTENF\r
+\r
+                                01290   INTERNAL NOTENF\r
+\r
+        000070' 265040  000060' 01310   NOTENF:   JSP TAC,CONMES\r
+\r
+        000071' 522371  720214  01330   ASCIZ /TOO FEW ARGUMENTS\r
+        000072' 426564  040644\r
+        000073' 436531  542634\r
+        000074' 522461  505000  01340   /\r
+\r\fCOMCSS - COMMAND COMMON ROUTINES                 PAGE 5\r
+        T. HASTINGS         8-15-65\r
+\r
+\r
+                                01370   ;ROUTINE TO INITIALIZE A JOB\r
+                                01380   ;CALL:    MOVE ITEM, JOB NUMBER\r
+                                01390   ;         PUSHJ PDP, JOBINI\r
+                                01400   ;         DEVDAT IS SETUP ON RETURN\r
+\r
+                                01420   INTERNAL JOBINI,JOBZER\r
+                                01430   EXTERNAL JBTSTS,PJOBN,CORE1,MONJOB,ESTOP,TTYATT\r
+\r
+        000075' 326200  000100' 01450   JOBINI:   JUMPN ITEM,JOB0       ;HAS A JOB NUMBER BEED ASSIGNED?\r
+        000076' 260140  000135' 01460             PUSHJ PDP,ASSJOB      ;NO, THEN ASSIGN ONE.\r
+        000077' 254000  000060' 01470             JRST CONMESS          ;NONE LEFT\r
+        000100' 260140  000000* 01480   JOB0:     PUSHJ PDP,TTYATT      ;ATTACH TTY\r
+        000101' 255000  000000  01490             JFCL                  ;ALREADY ATTACHED\r
+        000102' 205040  004000  01500             MOVSI TAC,JNA         ;CLEAR JOB NO. ASSIGNED BIT\r
+        000103' 412044  000000* 01510             ANDCAM TAC,JBTSTS(ITEM)         ;TO FORCE MESSAGE\r
+        000104' 205040  646471  01520             MOVSI TAC,646471      ;SIXBIT /TTY/\r
+        000105' 202046  000005  01530             MOVEM TAC, DEVLOG(DEVDAT)       ;SET LOGICAL NAME\r
+        000106' 201500  400000  01540             MOVEI T, ASSCON       ;SET ASSIGNED BY CONSOLE BIT\r
+        000107' 436506  000004  01550             IORM T, DEVMOD(DEVDAT)\r
+        000110' 260140  000172' 01560             PUSHJ PDP, DEASTY     ;DE-ASSIGNED ALL DEVICES EXCEPT TTY\r
+        000111' 322440  000000* 01570             JUMPE JDAT,CPOPJ      ;DOES JOB ALREDY HAVE CORE?\r
+\r
+                                01590   ;ROUTINE TO RELEASE ALL DEVICES AND FLUSH CORE\r
+                                01600   ;RUN AS MONITOR JOB\r
+                                01610   ;CALL:    SAME AS JOBIN\r
+\r
+                                01630   EXTERNAL IOKILL\r
+\r
+        000112' 541100  000115' 01650   JOBZER:   HRRI TAC1,JOB1        ;ADDRESS OF SUB. TO RELEASE DEV.\r
+        000113' 505100  000000* 01660   JOBZR1:   HRLI TAC1, ESTOP      ;RETURN ADDRESS AFER IORELS\r
+        000114' 254000  000000* 01670             JRST MONJOB           ;GO SCHEDULE MONITOR JOB\r
+\r
+        000115' 260140  000000* 01690   JOB1:     PUSHJ PDP,IOKILL      ;KILL ALL IO DEVICES\r
+        000116' 201040  000000  01700             MOVEI TAC,0           ;FLUSH ALL CORE\r
+        000117' 370003  000000  01710             SOS (PDP)             ;CORE1 WILL SKIP RETURN\r
+        000120' 254000  000000* 01720             JRST CORE1\r
+\r\fCOMCSS - COMMAND COMMON ROUTINES                 PAGE 6\r
+        T. HASTINGS         8-15-65\r
+\r
+\r
+                                01750   ;ROUTINE TO KILL CURRENT JOB\r
+                                01760   ;CALL   PUSHJ PDP,JOBKIL\r
+\r
+                                01780   INTERNAL JOBKIL\r
+                                01790   EXTERNAL JBTSTS,TTYKIL\r
+\r
+        000121' 350003  000000  01810   JOBKIL:   AOS (PDP)             ;SUPRESS CR-LF AND JOB INIT. CHECK\r
+        000122' 201040  000001  01820             MOVEI TAC,1\r
+        000123' 260140  000173' 01830             PUSHJ PDP,DEASAL      ;DEASSIGN ALL DEVICES\r
+        000124' 322440  000132' 01840             JUMPE JDAT,JOBKA      ;DOES JOB HAVE CORE?\r
+        000125' 541100  000127' 01850             HRRI TAC1,JOBK2       ;YES,RELEAS DEVICE AND CLEAR\r
+        000126' 254000  000113' 01860             JRST JOBZR1\r
+\r
+        000127' 261140  000006  01880   JOBK2:    PUSH PDP,DEVDAT       ;SAVE DEVDAT FOR TTYKIL\r
+        000130' 260140  000115' 01890             PUSHJ PDP,JOB1        ;FLUSH CORE AND RELEASE DEVICES\r
+        000131' 262140  000006  01900             POP PDP,DEVDAT\r
+        000132' 205040  002000  01910   JOBKA:    MOVSI TAC,JERR        ;CLEAR ALL BUT JOB ERROR BIT\r
+        000133' 202044  000103* 01920             MOVEM TAC,JBTSTS(ITEM)          ;IN JOB STATUS WORD\r
+        000134' 254000  000000* 01930             JRST TTYKIL           ;RETURN TTY TO VIRGIN STATE\r
+\r
+                                01950   ;ROUTINE TO ASSIGN AN UNUSED JOB NUMBER\r
+                                01960   ;CALL     PUSHJ PDP,ASSJOB\r
+                                01970   ;         ERROR RETURN       TAC DESTROYED\r
+                                01980   ;         OK RETURN       ITEM SET, TAC AND TAC1 PRESERVED\r
+\r
+                                02000   INTERNAL ASSJOB\r
+                                02010   EXTERNAL MJOBN,JBTSTS,CPOPJ1\r
+\r
+        000135' 205200  000000* 02030   ASSJOB:   MOVSI ITEM,MJOBN\r
+        000136' 253200  000137' 02040             AOBJN ITEM,.+1\r
+        000137' 205540  004000  02050             MOVSI T1,JNA\r
+        000140' 612544  000133* 02060             TDNE T1,JBTSTS(ITEM)\r
+        000141' 253200  000140' 02070             AOBJN ITEM,.-1\r
+        000142' 325200  000145' 02080             JUMPGE ITEM,ASSJB1\r
+        000143' 405200  777777  02090             ANDI ITEM,-1\r
+        000144' 254000  000000* 02100             JRST CPOPJ1\r
+\r
+        000145' 265040  000060' 02120   ASSJB1:   JSP TAC,CONMES\r
+        000146' 452370  220206  02130             ASCIZ /JOB CAPACITY EXCEEDED\r
+        000147' 406410  141622\r
+        000150' 522624  042660\r
+        000151' 416130  542212\r
+        000152' 420321  200000  02140   /\r
+\r\fCOMCSS - COMMAND COMMON ROUTINES                 PAGE 7\r
+        T. HASTINGS         8-15-65\r
+\r
+\r
+                                02170   ;ROUTINE TO DEASSIGN A DEVICE \r
+                                02180   ;CALL:    MOVE DEVDAT, DEVICE DATA BLOCK\r
+                                02190   ;         MOVE ITEM, JOB NUMBER\r
+                                02200   ;         PUSHJ DPD, DEASG\r
+                                02210   ;         ERROR NOT PREVIOUSLY ASSIGNED\r
+                                02220   ;         OK RETURN WITH DEVICE DEASSIGNED\r
+\r
+                                02240   INTERNAL DEASG\r
+                                02250   EXTERNAL PJOBN, CPOPJ1\r
+\r
+        000153' 135500  000000* 02270   DEASG:    LDB T, PJOBN          ;WAS DEVICE ASSIGNED TO THIS JOB?\r
+        000154' 312500  000004  02280             CAME T, ITEM\r
+        000155' 263140  000000  02290             POPJ PDP,             ;NO. RETURN\r
+        000156' 205500  400000  02300             MOVSI T,DVDIRIN       ;CLEAR DIRECTORY IN CORE BIT\r
+        000157' 412506  000004  02310             ANDCAM T,DEVMOD(DEVDAT)\r
+        000160' 201500  400000  02320             MOVEI T, ASSCON       ;YES, IS ASSIGNED BY CONSOLE BIT ON?\r
+        000161' 616506  000004  02330             TDNN T, DEVMOD(DEVDAT)\r
+        000162' 263140  000000  02340             POPJ PDP,             ;NO\r
+        000163' 413506  000004  02350             ANDCAB T,DEVMOD(DEVDAT)        ;YES, CLEAR BIT\r
+        000164' 402006  000005  02360             SETZM DEVLOG(DEVDAT)           ;CLEAR LOGICAL NAME\r
+        000165' 602500  200000  02370             TRNE T, ASSPRG        ;IS ASSIGNED BY PROGRAM BIT ON?\r
+        000166' 254000  000144* 02380             JRST CPOPJ1           ;YES\r
+        000167' 201500  000000  02390             MOVEI T,0             ;NO, CLEAR JOB NUMBER\r
+        000170' 137500  000153* 02400             DPB T, PJOBN\r
+        000171' 254000  000166* 02410             JRST CPOPJ1\r
+\r
+                                02430   ;ROUTINE TO DEASSIGN ALL DEVICES EXCEPT LOGICAL TTY\r
+                                02440   ;CALL:    MOVE ITEM, JOB NUMBER \r
+                                02450   ;         PUSHJ PDP, DEASTY\r
+\r
+                                02470   INTERNAL DEASTY\r
+\r
+        000172' 205040  646471  02490   DEASTY:   MOVSI TAC, 646471     ;SIXBIT /TTY/\r
+                                02500                                   ;FALL INTO DEASAL\r
+\r
+                                02520   ;ROUTINE TO DEASSIGN ALL DEVICES EXECPT ONE\r
+                                02530   ;CALL:    MOVE ITEM, JOB NUMBER\r
+                                02540   ;         MOVE TAC, LOGICAL DEVICE NOT TO BE DEASSIGNED\r
+                                02550   ;         PUSHJ PDP, DEASAL\r
+\r
+                                02570   INTERNAL DEASAL\r
+                                02580   EXTERNAL DEVLST\r
+\r
+        000173' 261140  000006  02600   DEASAL:   PUSH PDP,DEVDAT\r
+        000174' 554300  000000* 02610             HLRZ DEVDAT,DEVLST    ;SEARCH ALL DDBS\r
+        000175' 312046  000005  02620   DEA1:     CAME TAC, DEVLOG(DEVDAT)        ;IS THIS THE LOGICAL NAME\r
+        000176' 260140  000153' 02630             PUSHJ PDP, DEASG      ;NO, TRY TO DEASSIGN IT\r
+        000177' 255000  000000  02640             JFCL                  ;IGNORE IF CANT\r
+        000200' 554306  000003  02650             HLRZ DEVDAT, DEVSER(DEVDAT)\r
+        000201' 326300  000175' 02660             JUMPN DEVDAT, DEA1\r
+        000202' 262140  000006  02670             POP PDP,DEVDAT\r
+        000203' 263140  000000  02680             POPJ PDP,\r
+\r\fCOMCSS - COMMAND COMMON ROUTINES                 PAGE 8\r
+        T. HASTINGS         8-15-65\r
+\r
+\r
+                                02710   ;ROUTINE TO READ CONSOLE AND CONVERT ANY RADIX NUMBER\r
+                                02720   ; CALL:   MOVE TAC1,  DESIRED RADIX\r
+                                02730   ;         MOVE TAC,  BYTE POINTER TO FIRST CHRACTER\r
+                                02740   ;         PUSHJ PDP, ANYRIN\r
+                                02750   ;         ERROR EXIT            ;AC TAC1=0 IF NO NUMBER BEFORE FIRST NO\r
+                                02760   ;         NORMAL EXIT           ;AC TAC1 CONTAINS NUMEBR\r
+                                02770   ; SCAN STOPS ON FIRST ILLEGAL CHARACTER OR CR\r
+                                02780   ; IGNORES SPACES, TABS, RUBOUTS\r
+\r
+                                02800   INTERNAL OCTIN,ANYRIN,DECIN,DECIN1\r
+                                02810   EXTERNAL CPOPJ1, CPOPJ\r
+\r
+                        000012  02830   C=BUFPNT  ;CHARACTER AC\r
+                        000013  02840   R=BUFWRD  ;RADIX AC\r
+\r
+        000204' 133000  000001  02860   DECIN1:   IBP TAC       ;SKIP SEPARATION CHARACTER\r
+        000205' 201100  000012  02870   DECIN:    MOVEI TAC1,12         ;DECIMAL INPUT\r
+        000206' 254000  000210' 02880             JRST ANYRIN\r
+\r
+        000207' 201100  000010  02900   OCTIN:    MOVEI TAC1, 10\r
+        000210' 200540  000002  02910   ANYRIN:   MOVE R, TAC1\r
+        000211' 201100  000000  02920             MOVEI TAC1, 0\r
+        000212' 260140  000033' 02930             PUSHJ PDP, SKIPS1     ;SKIP LEADING SPACES, TABS\r
+        000213' 135500  000001  02940             LDB C, TAC\r
+        000214' 306500  000015  02950             CAIN C, 15            ;CHECK FOR INITIAL CR\r
+        000215' 263140  000000  02960             POPJ PDP,             ;EXIT WITH 0 IN TAC1\r
+        000216' 302500  000055  02970   OCT0:     CAIE C,"-"   ;DASH?\r
+        000217' 306500  000015  02980             CAIN C,15  ;CR?\r
+        000220' 254000  000171* 02990             JRST CPOPJ1           ;YES, ONLY LEGAL TERMINATORS\r
+        000221' 275500  000060  03000             SUBI C,60\r
+        000222' 321500  000224' 03010             JUMPL C, OCTE         ;ERROR IF NEGATIVE\r
+        000223' 311500  000013  03020             CAML C, R             ;OR .GE. RADIX\r
+        000224' 344100  000111* 03030   OCTE:     AOJA TAC1,CPOPJ       ;ERROR,INSURE TAC1 NON-ZERO\r
+        000225' 220100  000013  03040             IMUL TAC1, R\r
+        000226' 270100  000012  03050             ADD TAC1, C\r
+        000227' 134500  000001  03060   OCT1:     ILDB C, TAC\r
+        000230' 254000  000216' 03070             JRST OCT0\r
+\r
+                                03090             END,\r
+        000231' 440600  000002\r
+        000232' 000600  000002\r
+        000233' 064240  000000\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 000234\r
+\r
+8K CORE USED\r
+\r\fCOMCSS - COMMAND COMMON ROUTINES                 PAGE 9\r
+        SYMBOL TABLE\r
+\r
+                000245  \r
+A               000000  INT\r
+AC1             000015  INT\r
+AC2             000016  INT\r
+AC3             000017  INT\r
+AL              000001  INT\r
+ANYRIN          000210' INT\r
+ASSCON          400000  INT\r
+ASSJB1          000145' \r
+ASSJOB          000135' INT\r
+ASSPRG          200000  INT\r
+B               000014  INT\r
+BUFPNT          000012  INT\r
+BUFWRD          000013  INT\r
+C               000012  \r
+CLOSB           002000  INT\r
+CLSIN           000002  INT\r
+CLSOUT          000001  INT\r
+COMERA          000042' INT\r
+COMERR          000043' INT\r
+CON0            000062' \r
+CON1            000066' \r
+CONMES          000060' INT\r
+CORE1           000120' EXT\r
+CPOPJ           000224' EXT\r
+CPOPJ1          000220' EXT\r
+CRLF            000057' INT\r
+CTEX            000024' \r
+CTEX0           000011' \r
+CTEX1           000012' \r
+CTEX2           000020' \r
+CTEXT           000004' INT\r
+CTEXT1          000000' INT\r
+D               000017  INT\r
+DAT             000005  INT\r
+DCL             000001  INT\r
+DCW             020000  INT\r
+DDI             000007  INT\r
+DDO             000006  INT\r
+DDTMEM          000037  INT\r
+DDTSYM          000036  INT\r
+DEA1            000175' \r
+DEASAL          000173' INT\r
+DEASG           000153' INT\r
+DEASTY          000172' INT\r
+DECIN           000205' INT\r
+DECIN1          000204' INT\r
+DEN             000004  INT\r
+DEVADR          000007  INT\r
+DEVBUF          000006  INT\r
+DEVCHR          000001  INT\r
+DEVCTR          000011  INT\r
+DEVDAT          000006  INT\r
+\r\fCOMCSS - COMMAND COMMON ROUTINES                 PAGE 9-1\r
+        SYMBOL TABLE\r
+\r
+DEVIAD          000007  INT\r
+DEVIOS          000002  INT\r
+DEVLOG          000005  INT\r
+DEVLST          000174' EXT\r
+DEVMOD          000004  INT\r
+DEVNAM          000000  INT\r
+DEVOAD          000010  INT\r
+DEVPTR          000010  INT\r
+DEVSER          000003  INT\r
+DGF             000012  INT\r
+DIN             000003  INT\r
+DLK             000005  INT\r
+DOU             000002  INT\r
+DR              000016  INT\r
+DRL             000000  INT\r
+DSI             000011  INT\r
+DSO             000010  INT\r
+DTW             040000  INT\r
+DVAVAL          000040  INT\r
+DVCDR           100000  INT\r
+DVDIR           000004  INT\r
+DVDIRI          400000  INT\r
+DVIN            000002  INT\r
+DVLPT           040000  INT\r
+DVMTA           000020  INT\r
+DVOUT           000001  INT\r
+DVTTY           000010  INT\r
+ENTRB           020000  INT\r
+ESTOP           000113' EXT\r
+I               000010  INT\r
+IB              000013  INT\r
+IBUFB           200000  INT\r
+INITB           400000  INT\r
+INPB            010000  INT\r
+IO              000020  INT\r
+IOACT           010000  INT\r
+IOBEG           000002  INT\r
+IOBKTL          040000  INT\r
+IOCON           000040  INT\r
+IODEND          020000  INT\r
+IODERR          200000  INT\r
+IODISC          400000  INT\r
+IODONE          400000  INT\r
+IODTER          100000  INT\r
+IOEND           000040  INT\r
+IOFST           000004  INT\r
+IOIMPM          400000  INT\r
+IOKILL          000115' EXT\r
+IONRCK          000100  INT\r
+IORDEL          000100  INT\r
+IORET           000020  INT\r
+IOS             000000  INT\r
+IOSTRT          000010  INT\r
+\r\fCOMCSS - COMMAND COMMON ROUTINES                 PAGE 9-2\r
+        SYMBOL TABLE\r
+\r
+IOUSE           400000  INT\r
+IOW             000001  INT\r
+IOWC            000020  INT\r
+IOWS            400000  INT\r
+ITEM            000004  INT\r
+JBFADR          000000  INT\r
+JBFCTR          000002  INT\r
+JBFPTR          000001  INT\r
+JBTSTS          000140' EXT\r
+JBUF            000005  INT\r
+JDAT            000011  INT\r
+JERR            002000  INT\r
+JIOW            100000  INT\r
+JNA             004000  INT\r
+JOB0            000100' \r
+JOB1            000115' \r
+JOBINI          000075' INT\r
+JOBK2           000127' \r
+JOBKA           000132' \r
+JOBKIL          000121' INT\r
+JOBZER          000112' INT\r
+JOBZR1          000113' \r
+LOOKB           040000  INT\r
+MJOBN           000135' EXT\r
+MONJOB          000114' EXT\r
+MTW             010000  INT\r
+NOTENF          000070' INT\r
+OBUFB           100000  INT\r
+OCT0            000216' \r
+OCT1            000227' \r
+OCTE            000224' \r
+OCTIN           000207' INT\r
+OUTPB           004000  INT\r
+PDP             000003  INT\r
+PICHN           000100  INT\r
+PJOBN           000170' EXT\r
+PROG            000007  INT\r
+R               000013  \r
+RUN             200000  INT\r
+RUNABL          204000  INT\r
+SKIPS           000035' INT\r
+SKIPS1          000033' INT\r
+SKIPSA          000036' \r
+T               000012  \r
+T1              000013  \r
+T2              000014  \r
+TAC             000001  INT\r
+TAC1            000002  INT\r
+TEM             000010  INT\r
+TTYATC          020000  INT\r
+TTYATT          000100' EXT\r
+TTYBUF          000044' EXT\r
+TTYKIL          000134' EXT\r
+\r\fCOMCSS - COMMAND COMMON ROUTINES                 PAGE 9-3\r
+        SYMBOL TABLE\r
+\r
+TTYUSE          010000  INT\r
+USRMOD          010000  INT\r
+UUO             000014  INT\r
+\f   CCCCCCCCCCCC         OOOOOOOOO         MMM         MMM         IIIIIIIII         NNN         NNN         IIIIIIIII   \r
+   CCCCCCCCCCCC         OOOOOOOOO         MMM         MMM         IIIIIIIII         NNN         NNN         IIIIIIIII   \r
+   CCCCCCCCCCCC         OOOOOOOOO         MMM         MMM         IIIIIIIII         NNN         NNN         IIIIIIIII   \r
+CCC                  OOO         OOO      MMMMMM   MMMMMM            III            NNN         NNN            III      \r
+CCC                  OOO         OOO      MMMMMM   MMMMMM            III            NNN         NNN            III      \r
+CCC                  OOO         OOO      MMMMMM   MMMMMM            III            NNN         NNN            III      \r
+CCC                  OOO         OOO      MMM   MMM   MMM            III            NNNNNN      NNN            III      \r
+CCC                  OOO         OOO      MMM   MMM   MMM            III            NNNNNN      NNN            III      \r
+CCC                  OOO         OOO      MMM   MMM   MMM            III            NNNNNN      NNN            III      \r
+CCC                  OOO         OOO      MMM         MMM            III            NNN   NNN   NNN            III      \r
+CCC                  OOO         OOO      MMM         MMM            III            NNN   NNN   NNN            III      \r
+CCC                  OOO         OOO      MMM         MMM            III            NNN   NNN   NNN            III      \r
+CCC                  OOO         OOO      MMM         MMM            III            NNN      NNNNNN            III      \r
+CCC                  OOO         OOO      MMM         MMM            III            NNN      NNNNNN            III      \r
+CCC                  OOO         OOO      MMM         MMM            III            NNN      NNNNNN            III      \r
+CCC                  OOO         OOO      MMM         MMM            III            NNN         NNN            III      \r
+CCC                  OOO         OOO      MMM         MMM            III            NNN         NNN            III      \r
+CCC                  OOO         OOO      MMM         MMM            III            NNN         NNN            III      \r
+   CCCCCCCCCCCC         OOOOOOOOO         MMM         MMM         IIIIIIIII         NNN         NNN         IIIIIIIII   \r
+   CCCCCCCCCCCC         OOOOOOOOO         MMM         MMM         IIIIIIIII         NNN         NNN         IIIIIIIII   \r
+   CCCCCCCCCCCC         OOOOOOOOO         MMM         MMM         IIIIIIIII         NNN         NNN         IIIIIIIII   \r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  11:23:08\r
+File: DSKB1 :COMINI.LST   [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:19
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:2574 \r
+File will be deleted after printing\r
+\f\rCOMINI - THE COMMAND DECODER                 PAGE 1\r
+        T. HASTINGS 8-2-65\r
+\r
+                                00010           XLIST\r
+                                01930          LIST\r
+\r\fCOMINI - THE COMMAND DECODER                 PAGE 7\r
+        T. HASTINGS 8-2-65\r
+\r
+\r
+                                00010           TITLE COMINI - THE COMMAND DECODER\r
+                                00020           SUBTTL  T. HASTINGS 8-2-65\r
+                                00030   ;CALLED FROM CLOCK ROUTINE WHEN COMCNT IS GREATER THAN 0\r
+                                00040   ;AS SET BY TTY SERVICE ROUTINE\r
+                                00050   ;ALL ACS HAVE BEEN SAVED BY CLOCK CHANNEL\r
+                                00060   ;THE COMMAND DECODER CALLS TTYCOM WHICH SCANS FOR TTY WHICH TYPED\r
+                                00070   ;THE COMMAND AND THEN DISPATCHES(PUSHJ) TO APPROPRIATE\r
+                                00080   ;COMMAND SETUP ROTUINE OF THE SAME NAME WITH ACS SET AS:\r
+                                00090   ;ITEM = JOB NUMBER\r
+                                00100   ;TAC = BYTE POINTER TO COMMAND STRING(SSPACE OR CR AFTER COMMAND NAME)\r
+                                00110   ;DAT = BYTE POINTER TO LAST OUTPUT CHARACTER\r
+                                00120   ;DEVDAT = ADDRESS OF DEVICE DATA BLOCK TYPING COMMAND\r
+                                00130   ;JDAT = ADDRESS OF JOB AREA, = 0 IF NO JOB AREA\r
+                                00140   ;PROG = ADDRESS OF PROGRAM AREA\r
+                                00150   ;DEVDAT IS ALSO PUSHED ON END OF PD LIST SO IT MAY BE DESTROYED\r
+                                00160   ;UPON RETURN FROM COMMAND SETUP ROUTINE. A CR-LF IS ADDED TO\r
+                                00170   ;MASSAGE AND TTY IS STARTED ON TTY SPCIFIED BY -1(PDP)\r
+\r
+                                00190   ;SINCE THE COMMAND DECODER IS CALLED FROM CLOCK ROUTINE\r
+                                00200   ;COMMAND SETUP ROUTINE MUST RUN TO COMPLETION QUICKLY\r
+                                00210   ;IF A COMMAND FUNCTION CANNON DO THIS. IT MUST JUST SET\r
+                                00220   ;THE JOB TO RUNABLE STATUS AND RETURN IMMEDIATELY\r
+\r
+                                00240   INTERNAL COMMAND\r
+                                00250   EXTERNAL TTYCOM,TTYSTR,CTEXT,JBTADR,CONMES\r
+                                00260   EXTERNAL COMERR,COMCNT\r
+                                00270   EXTERNAL JOBINI,CRLF,CTEXT,RADX10,ASSJOB,JBTSTS\r
+\r
+                        000012  00290   T=BUFPNT  ;TEMPORARY ACS\r
+                        000013  00300   T1=BUFWRD\r
+\r\fCOMINI - THE COMMAND DECODER                 PAGE 2\r
+        T. HASTINGS 8-2-65\r
+\r
+\r
+        000000' 260140  000000* 00330   COMMAND:  PUSHJ PDP, TTYCOM     ;SETUP DEVDAT,DAT,TAC, AND ITEM\r
+        000001' 254000  000041' 00340             JRST COM2             ;NONE FOUND\r
+        000002' 261140  000006  00350             PUSH PDP,DEVDAT       ;SAVE TTY DDB ADDRESS\r
+        000003' 260140  000000* 00360             PUSHJ PDP, CTEXT      ;RETURN COMMAND NAME IN TAC1\r
+        000004' 322100  000043' 00370             JUMPE TAC1, COM2A     ;IGNORE BLANK LINE\r
+        000005' 205500  777760  00380             MOVSI T, -DISPL       ;SEARCH FOR COMMAND NAME\r
+        000006' 312112  000074' 00390             CAME TAC1, COMTAB(T)  \r
+        000007' 253500  000006' 00400             AOBJN T, .-1\r
+        000010' 325500  000047' 00410             JUMPGE T,COM2B        ;WAS COMMAND FOUND?\r
+        000011' 200112  000114' 00420             MOVE TAC1,DISP(T)     ;YES, GET DISPATCH ADDRESS AND BITS\r
+        000012' 326200  000026' 00430             JUMPN ITEM, COM1      ;HAS A JOB NUMBER BEEN ASSIGNED\r
+        000013' 603100  200000  00440             TLNE TAC1,NOJOBN      ;NO, IS A JOB NUMBER NEEDED FOR THIS CO\r
+        000014' 254000  000026' 00450             JRST COM1 ;NO\r
+        000015' 260140  000000* 00460             PUSHJ PDP,ASSJOB      ;TRY TO ASSIGN A FREE JOB NUMBER\r
+        000016' 254000  000067' 00470             JRST COM3A            ;NONE AVAILABLE, ERROR MESSAGE\r
+\r\fCOMINI - THE COMMAND DECODER                 PAGE 3\r
+        T. HASTINGS 8-2-65\r
+\r
+\r
+        000017' 261140  000001  00500             PUSH PDP, TAC         ;SAVE INPUT BYTE POINTER\r
+        000020' 261140  000002  00510             PUSH PDP,TAC1         ;SAVE ADDRESS OF COMMAND ROUTINE\r
+        000021' 403340  000011  00520             SETZB PROG,JDAT       ;NO CORE, CLEAR REL. ADRESS\r
+        000022' 260140  000000* 00530             PUSHJ PDP,JOBINI      ;INITIALIZE JOB\r
+        000023' 262140  000002  00540             POP PDP,TAC1          ;RESTORE ADR OF COMMAND ROUTINE\r
+        000024' 262140  000001  00550             POP PDP, TAC          ;RESTORE INPUT BYTE POINTER\r
+        000025' 202303  000000  00560             MOVEM DEVDAT,(PDP)    ;SET ADDRESS OF TTY DEV. DATA BLOCK\r
+        000026' 550444  000000* 00570   COM1:     HRRZ JDAT, JBTADR(ITEM)       ;AND JOB DATA AREA\r
+        000027' 336340  000011  00580             SKIPN PROG,JDAT       ;SET PROG. DOES JOB HAVE CORE?\r
+        000030' 603100  400000  00590             TLNE TAC1,NOCORE      ;NO. IS CORE NEEDED FOR THIS COMMAND?\r
+        000031' 254000  000035' 00600             JRST COM1C            ;NO\r
+        000032' 201040  000051' 00610             MOVEI TAC,NOCOR       ;YES, PRINT "NO CORE ASSIGNED"\r
+        000033' 260140  000000* 00620   COM1B:    PUSHJ PDP,CONMES\r
+        000034' 254000  000036' 00630             JRST COM1A\r
+\r
+        000035' 260142  000000  00650   COM1C:    PUSHJ PDP,(TAC1)      ;DISPATCH TO COMMAND SETUP ROUTINE\r
+        000036' 326200  000055' 00660   COM1A:    JUMPN ITEM, COM3      ;ADD CR-LF AND CHECK FOR JOB INIT.\r
+        000037' 262140  000006  00670   COM1D:    POP PDP,DEVDAT        ;RESTORE TTY DDB ADDRESS\r
+        000040' 260140  000000* 00680             PUSHJ PDP, TTYSTR     ;START OUTPUT, IF ANY\r
+        000041' 370000  000000* 00690   COM2:     SOS COMCNT            ;DECREMENT COMMAND COUNT\r
+        000042' 263140  000000  00700             POPJ PDP,             ;EXIT\r
+\r
+        000043' 135100  000001  00720   COM2A:    LDB TAC1, TAC         ;NULL FIELD. WAS BREAK CHAR. A CR?\r
+        000044' 302100  000015  00730             CAIE TAC1,15          ;A CR?\r
+        000045' 306100  000073  00740             CAIN TAC1,";"           ;OR A SEMI COLON?\r
+        000046' 254000  000037' 00750             JRST COM1D            ;YES. IGNORE LINE\r
+        000047' 260140  000000* 00760   COM2B:    PUSHJ PDP,COMERR      ;NO. PRINT MONITOR COMMAND ERROR\r
+        000050' 254000  000037' 00770             JRST COM1D\r
+\r
+        000051' 472364  041636  00790   NOCOR:    ASCIZ /NO CORE ASSIGNED\r
+        000052' 512124  040646\r
+        000053' 516230  747212\r
+        000054' 420321  200000  00800   /\r
+\r
+        000055' 200044  000000* 00820   COM3:     MOVE TAC,JBTSTS(ITEM)         ;GET STATUS WORD\r
+        000056' 663040  004000  00830             TLOE TAC,JNA                  ;IS JOB NO ASSIGNED BIT ON YET\r
+        000057' 254000  000067' 00840             JRST COM3A                    ;YES, JOB INIT. BEFORE\r
+        000060' 202044  000055* 00850             MOVEM TAC,JBTSTS(ITEM)\r
+        000061' 201040  000134' 00860             MOVEI TAC,[ASCIZ /JOB /]\r
+        000062' 260140  000033* 00870             PUSHJ PDP,CONMES      ;PRINT JOB N INITIALIZED\r
+        000063' 200040  000004  00880             MOVE TAC,ITEM\r
+        000064' 260140  000000* 00890             PUSHJ PDP,RADX10      ;PRINT JOB NUMBER\r
+        000065' 201040  000071' 00900             MOVEI TAC,JOBM\r
+        000066' 260140  000062* 00910             PUSHJ PDP,CONMES\r
+        000067' 260140  000000* 00920   COM3A:    PUSHJ PDP,CRLF\r
+        000070' 254000  000037' 00930             JRST COM1D\r
+\r
+        000071' 202231  644650  00950   JOBM:     ASCIZ / INITIALIZED\r
+        000072' 446031  444664\r
+        000073' 426101  505000  00960   /\r
+\r\fCOMINI - THE COMMAND DECODER                 PAGE 4\r
+        T. HASTINGS 8-2-65\r
+\r
+\r
+                                00990   ;TABLE OF CONSOLE COMMANDS.\r
+\r
+                        400000  01010   NOCORE=400000           ;NO CORE NEEDED FOR COMMAND\r
+                        200000  01020   NOJOBN=200000           ;NO JOB NUMBER NEEDED FOR COMMAND\r
+\r
+                                01040   DEFINE NAMES\r
+                                01050   <REPEAT 0,<\r
+                                01060    C G,COMERR,0\r
+                                01070   >\r
+                                01080    C CORE,CORE,NOCORE\r
+                                01090    C GET,GET,0\r
+                                01100    C START,START,0\r
+                                01110    C IJOB,IJOB,NOCORE+NOJOBN\r
+                                01120    C PJOB,PJOB,NOCORE\r
+                                01130    C KJOB,KJOB,NOCORE\r
+                                01140    C SAVE,SAVE,0\r
+                                01150   REPEAT 0,<\r
+                                01160    C RESAVE,COMERR,0\r
+                                01170   >\r
+                                01180    C CONT,CONT,0\r
+                                01190    C DDT,DDTGO,0\r
+                                01200    C ASSIGN,ASSIGN,NOCORE\r
+                                01210    C DEASSI,DEASSIGN,NOCORE\r
+                                01220    C STARTC,STARTC,0\r
+                                01230    C CONTC,CONTC,0\r
+                                01240    C DETACH,DETACH,NOCORE+NOJOBN\r
+                                01250    C ATTACH,ATTACH,NOCORE+NOJOBN\r
+                                01260   REPEAT 0,<\r
+                                01270    C MTAPE,COMERR,0\r
+                                01280    C DAYTIM,COMERR,NOCORE\r
+                                01290    C RUNTIM,COMERR,NOCORE\r
+                                01300    C TOTTIM,COMERR,NOCORE\r
+                                01310    C NULTIM,COMERR,NOCRE\r
+                                01320    C SYSDDT,COMERR,NOCORE\r
+                                01330    C SYSMAK,SYSMAK,0\r
+                                01340   >\r
+                                01350    C DIGITAL,DIGITAL,NOCORE+NOJOBN\r
+                                01360   >\r
+\r\fCOMINI - THE COMMAND DECODER                 PAGE 5\r
+        T. HASTINGS 8-2-65\r
+\r
+\r
+                                01390   ;GENERATE TABLE OF SIXBIT COMMAND NAMES\r
+\r
+                                01410   DEFINE C(A,B,C)\r
+                                01420   <         ZZ=.+1\r
+                                01430    SIXBIT /A/\r
+                                01440    IFN .-ZZ,<RELOC ZZ> ;ONLY FIRST 6 CHARACTERS\r
+                                01450   >\r
+\r
+                                01470   COMTAB:   NAMES^REPEAT 0,<\r
+                                         C G,COMERR,0\r
+                                        >\r
+        000074' 435762  450000           SIXBIT /CORE/\r
+        000075' 474564  000000           SIXBIT /GET/\r
+        000076' 636441  626400           SIXBIT /START/\r
+        000077' 515257  420000           SIXBIT /IJOB/\r
+        000100' 605257  420000           SIXBIT /PJOB/\r
+        000101' 535257  420000           SIXBIT /KJOB/\r
+        000102' 634166  450000           SIXBIT /SAVE/\r
+        000103' 435756  640000           SIXBIT /CONT/\r
+        000104' 444464  000000           SIXBIT /DDT/\r
+        000105' 416363  514756           SIXBIT /ASSIGN/\r
+        000106' 444541  636351           SIXBIT /DEASSI/\r
+        000107' 636441  626443           SIXBIT /STARTC/\r
+        000110' 435756  644300           SIXBIT /CONTC/\r
+        000111' 444564  414350           SIXBIT /DETACH/\r
+        000112' 416464  414350           SIXBIT /ATTACH/\r
+        000113' 445147  516441           SIXBIT /DIGITAL/\r
+        000114' 540000  000000\r
+                        000020  01480   DISPL=.-COMTAB          ;LENTH OF TABLE\r
+\r\fCOMINI - THE COMMAND DECODER                 PAGE 6\r
+        T. HASTINGS 8-2-65\r
+\r
+\r
+                                01510   ;GENERATE THE DISPATCH TABLE\r
+\r
+                                01530   DEFINE C(A,B,C)\r
+                                01540   <         XWD C,B\r
+                                01550   EXTERNAL B\r
+                                01560   >\r
+\r
+                                01580   DISP:     NAMES^REPEAT 0,<\r
+                                         C G,COMERR,0\r
+                                        >\r
+        000114' 400000  000000*          C CORE,CORE,NOCORE^      XWD NOCORE,CORE\r
+        000115' 000000  000000*          C GET,GET,0^     XWD 0,GET\r
+        000116' 000000  000000*          C START,START,0^         XWD 0,START\r
+        000117' 600000  000000*          C IJOB,IJOB,NOCORE+NOJOBN^       XWD NOCORE+NOJOBN,IJOB\r
+        000120' 400000  000000*          C PJOB,PJOB,NOCORE^      XWD NOCORE,PJOB\r
+        000121' 400000  000000*          C KJOB,KJOB,NOCORE^      XWD NOCORE,KJOB\r
+        000122' 000000  000000*          C SAVE,SAVE,0^   XWD 0,SAVE\r
+        000123' 000000  000000*          C CONT,CONT,0^   XWD 0,CONT\r
+        000124' 000000  000000*          C DDT,DDTGO,0^   XWD 0,DDTGO\r
+        000125' 400000  000000*          C ASSIGN,ASSIGN,NOCORE^          XWD NOCORE,ASSIGN\r
+        000126' 400000  000000*          C DEASSI,DEASSIGN,NOCORE^        XWD NOCORE,DEASSIGN\r
+        000127' 000000  000000*          C STARTC,STARTC,0^       XWD 0,STARTC\r
+        000130' 000000  000000*          C CONTC,CONTC,0^         XWD 0,CONTC\r
+        000131' 600000  000000*          C DETACH,DETACH,NOCORE+NOJOBN^   XWD NOCORE+NOJOBN,DETACH\r
+        000132' 600000  000000*          C ATTACH,ATTACH,NOCORE+NOJOBN^   XWD NOCORE+NOJOBN,ATTACH\r
+        000133' 600000  000000*          C DIGITAL,DIGITAL,NOCORE+NOJOBN^         XWD NOCORE+NOJOBN,DIGITAL\r
+\r
+                                01600             END,\r
+        000134' 452370  220000\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 000135\r
+\r
+9K CORE USED\r
+\r\fCOMINI - THE COMMAND DECODER                 PAGE 7\r
+        SYMBOL TABLE\r
+\r
+                000241  \r
+A               000000  INT\r
+AC1             000015  INT\r
+AC2             000016  INT\r
+AC3             000017  INT\r
+AL              000001  INT\r
+ASSCON          400000  INT\r
+ASSIGN          000125' EXT\r
+ASSJOB          000015' EXT\r
+ASSPRG          200000  INT\r
+ATTACH          000132' EXT\r
+B               000014  INT\r
+BUFPNT          000012  INT\r
+BUFWRD          000013  INT\r
+CLOSB           002000  INT\r
+CLSIN           000002  INT\r
+CLSOUT          000001  INT\r
+COM1            000026' \r
+COM1A           000036' \r
+COM1B           000033' \r
+COM1C           000035' \r
+COM1D           000037' \r
+COM2            000041' \r
+COM2A           000043' \r
+COM2B           000047' \r
+COM3            000055' \r
+COM3A           000067' \r
+COMCNT          000041' EXT\r
+COMERR          000047' EXT\r
+COMMAN          000000' INT\r
+COMTAB          000074' \r
+CONMES          000066' EXT\r
+CONT            000123' EXT\r
+CONTC           000130' EXT\r
+CORE            000114' EXT\r
+CRLF            000067' EXT\r
+CTEXT           000003' EXT\r
+D               000017  INT\r
+DAT             000005  INT\r
+DCL             000001  INT\r
+DCW             020000  INT\r
+DDI             000007  INT\r
+DDO             000006  INT\r
+DDTGO           000124' EXT\r
+DDTMEM          000037  INT\r
+DDTSYM          000036  INT\r
+DEASSI          000126' EXT\r
+DEN             000004  INT\r
+DETACH          000131' EXT\r
+DEVADR          000007  INT\r
+DEVBUF          000006  INT\r
+DEVCHR          000001  INT\r
+DEVCTR          000011  INT\r
+\r\fCOMINI - THE COMMAND DECODER                 PAGE 7-1\r
+        SYMBOL TABLE\r
+\r
+DEVDAT          000006  INT\r
+DEVIAD          000007  INT\r
+DEVIOS          000002  INT\r
+DEVLOG          000005  INT\r
+DEVMOD          000004  INT\r
+DEVNAM          000000  INT\r
+DEVOAD          000010  INT\r
+DEVPTR          000010  INT\r
+DEVSER          000003  INT\r
+DGF             000012  INT\r
+DIGITA          000133' EXT\r
+DIN             000003  INT\r
+DISP            000114' \r
+DISPL           000020  \r
+DLK             000005  INT\r
+DOU             000002  INT\r
+DR              000016  INT\r
+DRL             000000  INT\r
+DSI             000011  INT\r
+DSO             000010  INT\r
+DTW             040000  INT\r
+DVAVAL          000040  INT\r
+DVCDR           100000  INT\r
+DVDIR           000004  INT\r
+DVDIRI          400000  INT\r
+DVIN            000002  INT\r
+DVLPT           040000  INT\r
+DVMTA           000020  INT\r
+DVOUT           000001  INT\r
+DVTTY           000010  INT\r
+ENTRB           020000  INT\r
+GET             000115' EXT\r
+I               000010  INT\r
+IB              000013  INT\r
+IBUFB           200000  INT\r
+IJOB            000117' EXT\r
+INITB           400000  INT\r
+INPB            010000  INT\r
+IO              000020  INT\r
+IOACT           010000  INT\r
+IOBEG           000002  INT\r
+IOBKTL          040000  INT\r
+IOCON           000040  INT\r
+IODEND          020000  INT\r
+IODERR          200000  INT\r
+IODISC          400000  INT\r
+IODONE          400000  INT\r
+IODTER          100000  INT\r
+IOEND           000040  INT\r
+IOFST           000004  INT\r
+IOIMPM          400000  INT\r
+IONRCK          000100  INT\r
+IORDEL          000100  INT\r
+\r\fCOMINI - THE COMMAND DECODER                 PAGE 7-2\r
+        SYMBOL TABLE\r
+\r
+IORET           000020  INT\r
+IOS             000000  INT\r
+IOSTRT          000010  INT\r
+IOUSE           400000  INT\r
+IOW             000001  INT\r
+IOWC            000020  INT\r
+IOWS            400000  INT\r
+ITEM            000004  INT\r
+JBFADR          000000  INT\r
+JBFCTR          000002  INT\r
+JBFPTR          000001  INT\r
+JBTADR          000026' EXT\r
+JBTSTS          000060' EXT\r
+JBUF            000005  INT\r
+JDAT            000011  INT\r
+JERR            002000  INT\r
+JIOW            100000  INT\r
+JNA             004000  INT\r
+JOBINI          000022' EXT\r
+JOBM            000071' \r
+KJOB            000121' EXT\r
+LOOKB           040000  INT\r
+MTW             010000  INT\r
+NOCOR           000051' \r
+NOCORE          400000  \r
+NOJOBN          200000  \r
+OBUFB           100000  INT\r
+OUTPB           004000  INT\r
+PDP             000003  INT\r
+PICHN           000100  INT\r
+PJOB            000120' EXT\r
+PROG            000007  INT\r
+RADX10          000064' EXT\r
+RUN             200000  INT\r
+RUNABL          204000  INT\r
+SAVE            000122' EXT\r
+START           000116' EXT\r
+STARTC          000127' EXT\r
+T               000012  \r
+T1              000013  \r
+TAC             000001  INT\r
+TAC1            000002  INT\r
+TEM             000010  INT\r
+TTYATC          020000  INT\r
+TTYCOM          000000' EXT\r
+TTYSTR          000040' EXT\r
+TTYUSE          010000  INT\r
+USRMOD          010000  INT\r
+UUO             000014  INT\r
+ZZ              000114' \r
+\f   CCCCCCCCCCCC         OOOOOOOOO         RRRRRRRRRRRR         EEEEEEEEEEEEEEE                                          \r
+   CCCCCCCCCCCC         OOOOOOOOO         RRRRRRRRRRRR         EEEEEEEEEEEEEEE                                          \r
+   CCCCCCCCCCCC         OOOOOOOOO         RRRRRRRRRRRR         EEEEEEEEEEEEEEE                                          \r
+CCC                  OOO         OOO      RRR         RRR      EEE                                                      \r
+CCC                  OOO         OOO      RRR         RRR      EEE                                                      \r
+CCC                  OOO         OOO      RRR         RRR      EEE                                                      \r
+CCC                  OOO         OOO      RRR         RRR      EEE                                                      \r
+CCC                  OOO         OOO      RRR         RRR      EEE                                                      \r
+CCC                  OOO         OOO      RRR         RRR      EEE                                                      \r
+CCC                  OOO         OOO      RRRRRRRRRRRR         EEEEEEEEEEEE                                             \r
+CCC                  OOO         OOO      RRRRRRRRRRRR         EEEEEEEEEEEE                                             \r
+CCC                  OOO         OOO      RRRRRRRRRRRR         EEEEEEEEEEEE                                             \r
+CCC                  OOO         OOO      RRR   RRR            EEE                                                      \r
+CCC                  OOO         OOO      RRR   RRR            EEE                                                      \r
+CCC                  OOO         OOO      RRR   RRR            EEE                                                      \r
+CCC                  OOO         OOO      RRR      RRR         EEE                                                      \r
+CCC                  OOO         OOO      RRR      RRR         EEE                                                      \r
+CCC                  OOO         OOO      RRR      RRR         EEE                                                      \r
+   CCCCCCCCCCCC         OOOOOOOOO         RRR         RRR      EEEEEEEEEEEEEEE                                          \r
+   CCCCCCCCCCCC         OOOOOOOOO         RRR         RRR      EEEEEEEEEEEEEEE                                          \r
+   CCCCCCCCCCCC         OOOOOOOOO         RRR         RRR      EEEEEEEEEEEEEEE                                          \r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  11:23:08\r
+File: DSKB1 :CORE  .LST   [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:19
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:2564 \r
+File will be deleted after printing\r
+\f\rCORE - CORE ALLOCATION ROUTINE                 PAGE 1\r
+        G. BELL 6-29-65\r
+\r
+                                00010           XLIST\r
+                                01930          LIST\r
+\r\fCORE - CORE ALLOCATION ROUTINE                 PAGE 7\r
+        G. BELL 6-29-65\r
+\r
+\r
+                                00010   TITLE CORE - CORE ALLOCATION ROUTINE\r
+                                00020           SUBTTL G. BELL 6-29-65\r
+                                00030   ;         PUSHJ PDP, CORE1      ;ITEM = JOB #. TAC = 1K CORE BLOCKS\r
+                                00040                                   ;REQUESTED\r
+                                00050   ;         RET1                  ;OLD CORE RETURNED.\r
+                                00060   ;         RET2                  ;OLD CORE RETURNED.   JBTADR, JOBREL ARE\r
+                                00070                                   ;SET UP\r
+                                00080   ; JBADR (ITEM) = POINTER TO JOB AREA. JOBREL (JBTADR) = HIGHEST LOCAT\r
+                                00090   ; C(RH) JBTADR IS SET OT 0 OR REQUESTED CORE. JOBREL IS SET IF CORE G\r
+                                00100   ; NOT A PURE PROCEDURE ...\r
+                                00110   ;CORTAL:  0                             ;COUNT OF FREE CORE\r
+                                00120   ;CORTAB:  BLOCK ^D3                     ;TABLE OF 72 BITS. 1 BIT FOR\r
+                                00130   ;1K OF CORE. 1 = USED. 0 = FREE\r
+                                00140   ;CORLST:  POINT 1, CORTAB, 32           ;POINTER FIRST OUT OF BOUNDS\r
+                                00150   ;\r
+                                00160   ;TEMPORARY USAGE\r
+        000000' 000000  000000  00170   CORUSZ:   0                             ;SIZE OF USERS CODE, OLD.-NEW\r
+        000001' 000000  000000  00180   CORLOC:   0                             ;POSITION OF 1ST FREE BLOCK\r
+                                00190   ;\r
+                                00200   ;AC ASSIGNMENTS\r
+                        000012  00210   COR1=BUFPNT\r
+                        000013  00220   COR2=BUFWRD\r
+                        000014  00230   COR3=UUO\r
+                                00240   INTERNAL CORE1\r
+                                00250   EXTERNAL JBTADR,JOBREL,CORLST,CORTAL,CORTAB\r
+\r\fCORE - CORE ALLOCATION ROUTINE                 PAGE 2\r
+        G. BELL 6-29-65\r
+\r
+\r
+        000002' 135500  000042' 00280   CORE1:    LDB COR1, CORE1P      \r
+        000003' 202500  000001' 00290             MOVEM COR1, CORLOC\r
+        000004' 322500  000013' 00300             JUMPE COR1, CORGET            ;IF 0 NO CORE NOEW.\r
+        000005' 554504  000000* 00310             HLRZ COR1, JBTADR(ITEM)       ;CLEAR OLD CORE\r
+        000006' 350000  000012  00320             AOS COR1                      ;HIGHEST ADDRESS AVAIL. FORM\r
+        000007' 240500  777766  00330             ASH COR1, -^D10\r
+        000010' 202500  000000' 00340             MOVEM COR1, CORUSZ\r
+        000011' 402000  000014  00350   CORRET:   CLEARM COR3                   ;RETURN OLD CORE\r
+        000012' 260140  000056' 00360             PUSHJ PDP, CORSTG\r
+        000013' 402004  000005* 00370   CORGET:   SETZM JBTADR(ITEM)    ;CLEAR JOB ADDRESS TO 0\r
+        000014' 322040  000037' 00380             JUMPE TAC, COROK              ;IF NO CORE TO GET, RETURN\r
+        000015' 200600  000043' 00390             MOVE COR3, CORE2P     ;SET UP FOR\r
+        000016' 476000  000001' 00400             SETOM CORLOC                  ;HOLE SEARCH\r
+        000017' 260140  000044' 00410   CORG1:    PUSHJ PDP, CORHOL\r
+        000020' 254000  000040' 00420             JRST CORNG                    ;UNSUCCESSFUL SEARCH\r
+        000021' 315500  000001  00430             CAMGE COR1, TAC               ;HOLE FOUND\r
+        000022' 254000  000017' 00440             JRST CORG1\r
+        000023' 213000  000012  00450   CORGVE:   MOVNS COR1                    ;BACKUP CORLOC\r
+        000024' 272500  000001' 00460             ADDM COR1, CORLOC\r
+        000025' 202040  000000' 00470             MOVEM TAC, CORUSZ             ;RESERVE HOLD FOR JOB\r
+        000026' 201600  000001  00480             MOVEI COR3, 1                 ;SET CORTAB\r
+        000027' 260140  000056' 00490             PUSHJ PDP, CORSTG\r
+        000030' 200500  000001' 00500             MOVE COR1, CORLOC             ;C(RH)=RELOC, C(LH)=PROTECT\r
+        000031' 240500  000012  00510             ASH COR1, ^D10\r
+        000032' 542504  000013* 00520             HRRM COR1, JBTADR(ITEM)\r
+        000033' 240040  000012  00530             ASH TAC, ^D10\r
+        000034' 275040  000001  00540             SUBI TAC, 1\r
+        000035' 542052  000000* 00550             HRRM TAC, JOBREL (COR1)\r
+        000036' 506044  000032* 00560             HRLM TAC,JBTADR(ITEM)\r
+        000037' 350003  000000  00570   COROK:    AOS (PDP)\r
+        000040' 200040  000000* 00580   CORNG:    MOVE TAC, CORTAL\r
+        000041' 263140  000000  00590             POPJ PDP,\r
+\r
+        000042' 121004  000036* 00610   CORE1P:   POINT 8, JBTADRR(ITEM),25\r
+        000043' 440100  000000* 00620   CORE2P:   POINT 1, CORTAB\r
+\r\fCORE - CORE ALLOCATION ROUTINE                 PAGE 3\r
+        G. BELL 6-29-65\r
+\r
+\r
+                                00650   ;         PUSHJ PDP, CORHOL     ;COR1-HOLES FREE, COR2=TEMP\r
+                                00660   ;         RETURN1               ;COR3=POINTER. RETURN1=END OF STRING RE\r
+                                00670   ;         RETURN2               ;HOLE FOUND.\r
+                                00680   ; CORLOC CONTAINS 0,1.. N, THE CORE BLK PTR. CORLST IS PTR TO\r
+                                00690   ; STOP STRING TEST\r
+        000044' 402000  000012  00700   CORHOL:   CLEARM COR1\r
+        000045' 316600  000000* 00710   CORH01:   CAMN COR3, CORLST             ;TEST DONE\r
+        000046' 263140  000000  00720             POPJ PDP,\r
+        000047' 134540  000014  00730             ILDB COR2, COR3               ;TEST NEXT BLOCK\r
+        000050' 350000  000001' 00740             AOS CORLOC\r
+        000051' 336000  000013  00750             SKIPN COR2\r
+        000052' 344500  000045' 00760             AOJA COR1, CORH01             ;COUNT FREE\r
+        000053' 322500  000045' 00770             JUMPE COR1, CORH01\r
+        000054' 350003  000000  00780             AOS (PDP)\r
+        000055' 263140  000000  00790             POPJ PDP,\r
+                                00800   ;;        PUSHJ PDP, CORSTG     ;CORUSZ=SIZE RESERVED. CORLOC=LOCATION\r
+                                00810   ; IF COR3=0, THEN FREE CORE\r
+                                00820   ; IF COR3=1, THEN RESERVE CORE.\r
+                                00830   ; USES COR1, COR2, COR3\r
+                                00840   ; CORTAL=COUNT OF FREE CORE. AND IS UPDATED\r
+        000056' 261140  000001  00850   CORSTG:   PUSH PDP, TAC                 ;SAVE NO. OF BLOCKS BEING REQ\r
+        000057' 200540  000000' 00860             MOVE COR2,CORUSZ              ;FIX CORTALLY\r
+        000060' 332000  000014  00870             SKIPE COR3\r
+        000061' 213000  000013  00880             MOVNS COR2\r
+        000062' 272540  000040* 00890             ADDM COR2, CORTAL\r
+        000063' 200040  000001' 00900             MOVE TAC, CORLOC              ;GET POINTER-1\r
+        000064' 231040  000044  00910             IDIVI TAC, ^D36               ;TAC=WORD,TAC1=BIT\r
+        000065' 270040  000076' 00920             ADD TAC, CORLP1       ;FORM BYTE POINTER\r
+        000066' 213000  000002  00930             MOVNS TAC1\r
+        000067' 271100  000044  00940             ADDI TAC1, ^D36\r
+        000070' 137100  000077' 00950             DPB TAC1, [POINT 6, TAC, 5]\r
+        000071' 200540  000000' 00960             MOVE COR2, CORUSZ\r
+        000072' 136600  000001  00970   CORLOP:   DPBI COR3, TAC                ;SET OR CLEAR EACH BIT IN USE\r
+        000073' 367540  000072' 00980             SOJG COR2, CORLOP\r
+        000074' 262140  000001  00990             POP PDP, TAC\r
+        000075' 263140  000000  01000             POPJ PDP,\r
+\r
+        000076' 000100  000043* 01020   CORLP1:   XWD 100, CORTAB\r
+\r
+                                01040             END,\r
+        000077' 360600  000001\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 000100\r
+\r
+8K CORE USED\r
+\r\fCORE - CORE ALLOCATION ROUTINE                 PAGE 4\r
+        SYMBOL TABLE\r
+\r
+                000206  \r
+A               000000  INT\r
+AC1             000015  INT\r
+AC2             000016  INT\r
+AC3             000017  INT\r
+AL              000001  INT\r
+ASSCON          400000  INT\r
+ASSPRG          200000  INT\r
+B               000014  INT\r
+BUFPNT          000012  INT\r
+BUFWRD          000013  INT\r
+CLOSB           002000  INT\r
+CLSIN           000002  INT\r
+CLSOUT          000001  INT\r
+COR1            000012  \r
+COR2            000013  \r
+COR3            000014  \r
+CORE1           000002' INT\r
+CORE1P          000042' \r
+CORE2P          000043' \r
+CORG1           000017' \r
+CORGET          000013' \r
+CORGVE          000023' \r
+CORH01          000045' \r
+CORHOL          000044' \r
+CORLOC          000001' \r
+CORLOP          000072' \r
+CORLP1          000076' \r
+CORLST          000045' EXT\r
+CORNG           000040' \r
+COROK           000037' \r
+CORRET          000011' \r
+CORSTG          000056' \r
+CORTAB          000076' EXT\r
+CORTAL          000062' EXT\r
+CORUSZ          000000' \r
+D               000017  INT\r
+DAT             000005  INT\r
+DCL             000001  INT\r
+DCW             020000  INT\r
+DDI             000007  INT\r
+DDO             000006  INT\r
+DDTMEM          000037  INT\r
+DDTSYM          000036  INT\r
+DEN             000004  INT\r
+DEVADR          000007  INT\r
+DEVBUF          000006  INT\r
+DEVCHR          000001  INT\r
+DEVCTR          000011  INT\r
+DEVDAT          000006  INT\r
+DEVIAD          000007  INT\r
+DEVIOS          000002  INT\r
+DEVLOG          000005  INT\r
+\r\fCORE - CORE ALLOCATION ROUTINE                 PAGE 4-1\r
+        SYMBOL TABLE\r
+\r
+DEVMOD          000004  INT\r
+DEVNAM          000000  INT\r
+DEVOAD          000010  INT\r
+DEVPTR          000010  INT\r
+DEVSER          000003  INT\r
+DGF             000012  INT\r
+DIN             000003  INT\r
+DLK             000005  INT\r
+DOU             000002  INT\r
+DR              000016  INT\r
+DRL             000000  INT\r
+DSI             000011  INT\r
+DSO             000010  INT\r
+DTW             040000  INT\r
+DVAVAL          000040  INT\r
+DVCDR           100000  INT\r
+DVDIR           000004  INT\r
+DVDIRI          400000  INT\r
+DVIN            000002  INT\r
+DVLPT           040000  INT\r
+DVMTA           000020  INT\r
+DVOUT           000001  INT\r
+DVTTY           000010  INT\r
+ENTRB           020000  INT\r
+I               000010  INT\r
+IB              000013  INT\r
+IBUFB           200000  INT\r
+INITB           400000  INT\r
+INPB            010000  INT\r
+IO              000020  INT\r
+IOACT           010000  INT\r
+IOBEG           000002  INT\r
+IOBKTL          040000  INT\r
+IOCON           000040  INT\r
+IODEND          020000  INT\r
+IODERR          200000  INT\r
+IODISC          400000  INT\r
+IODONE          400000  INT\r
+IODTER          100000  INT\r
+IOEND           000040  INT\r
+IOFST           000004  INT\r
+IOIMPM          400000  INT\r
+IONRCK          000100  INT\r
+IORDEL          000100  INT\r
+IORET           000020  INT\r
+IOS             000000  INT\r
+IOSTRT          000010  INT\r
+IOUSE           400000  INT\r
+IOW             000001  INT\r
+IOWC            000020  INT\r
+IOWS            400000  INT\r
+ITEM            000004  INT\r
+JBFADR          000000  INT\r
+\r\fCORE - CORE ALLOCATION ROUTINE                 PAGE 4-2\r
+        SYMBOL TABLE\r
+\r
+JBFCTR          000002  INT\r
+JBFPTR          000001  INT\r
+JBTADR          000042' EXT\r
+JBUF            000005  INT\r
+JDAT            000011  INT\r
+JERR            002000  INT\r
+JIOW            100000  INT\r
+JNA             004000  INT\r
+JOBREL          000035' EXT\r
+LOOKB           040000  INT\r
+MTW             010000  INT\r
+OBUFB           100000  INT\r
+OUTPB           004000  INT\r
+PDP             000003  INT\r
+PICHN           000100  INT\r
+PROG            000007  INT\r
+RUN             200000  INT\r
+RUNABL          204000  INT\r
+TAC             000001  INT\r
+TAC1            000002  INT\r
+TEM             000010  INT\r
+TTYATC          020000  INT\r
+TTYUSE          010000  INT\r
+USRMOD          010000  INT\r
+UUO             000014  INT\r
+\fDDDDDDDDDDDD         TTTTTTTTTTTTTTT         SSSSSSSSSSSS      EEEEEEEEEEEEEEE      RRRRRRRRRRRR            222222222   \r
+DDDDDDDDDDDD         TTTTTTTTTTTTTTT         SSSSSSSSSSSS      EEEEEEEEEEEEEEE      RRRRRRRRRRRR            222222222   \r
+DDDDDDDDDDDD         TTTTTTTTTTTTTTT         SSSSSSSSSSSS      EEEEEEEEEEEEEEE      RRRRRRRRRRRR            222222222   \r
+DDD         DDD            TTT            SSS                  EEE                  RRR         RRR      222         222\r
+DDD         DDD            TTT            SSS                  EEE                  RRR         RRR      222         222\r
+DDD         DDD            TTT            SSS                  EEE                  RRR         RRR      222         222\r
+DDD         DDD            TTT            SSS                  EEE                  RRR         RRR                  222\r
+DDD         DDD            TTT            SSS                  EEE                  RRR         RRR                  222\r
+DDD         DDD            TTT            SSS                  EEE                  RRR         RRR                  222\r
+DDD         DDD            TTT               SSSSSSSSS         EEEEEEEEEEEE         RRRRRRRRRRRR                  222   \r
+DDD         DDD            TTT               SSSSSSSSS         EEEEEEEEEEEE         RRRRRRRRRRRR                  222   \r
+DDD         DDD            TTT               SSSSSSSSS         EEEEEEEEEEEE         RRRRRRRRRRRR                  222   \r
+DDD         DDD            TTT                        SSS      EEE                  RRR   RRR                  222      \r
+DDD         DDD            TTT                        SSS      EEE                  RRR   RRR                  222      \r
+DDD         DDD            TTT                        SSS      EEE                  RRR   RRR                  222      \r
+DDD         DDD            TTT                        SSS      EEE                  RRR      RRR            222         \r
+DDD         DDD            TTT                        SSS      EEE                  RRR      RRR            222         \r
+DDD         DDD            TTT                        SSS      EEE                  RRR      RRR            222         \r
+DDDDDDDDDDDD               TTT            SSSSSSSSSSSS         EEEEEEEEEEEEEEE      RRR         RRR      222222222222222\r
+DDDDDDDDDDDD               TTT            SSSSSSSSSSSS         EEEEEEEEEEEEEEE      RRR         RRR      222222222222222\r
+DDDDDDDDDDDD               TTT            SSSSSSSSSSSS         EEEEEEEEEEEEEEE      RRR         RRR      222222222222222\r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  11:23:08\r
+File: DSKB1 :DTSER2.LST   [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:20
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:2557 \r
+File will be deleted after printing\r
+\f\rDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING                 PAGE 1\r
+        L. HANTMANN 8-2-65 MULTIPLE DIRECTORIES VERSION\r
+\r
+                                00010           XLIST\r
+                                01930          LIST\r
+\r\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING                 PAGE 7\r
+        L. HANTMANN 8-2-65 MULTIPLE DIRECTORIES VERSION\r
+\r
+\r
+                                00010   TITLE DTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING\r
+                                00020   SUBTTL  L. HANTMANN 8-2-65 MULTIPLE DIRECTORIES VERSION\r
+                        000001  00030           DTSIZ=1\r
+\r
+                                00050   ;SUBROUTINE FOR DIRECTORY SEARCH\r
+                                00060   ;PROG CONTAINS ACTUAL START OF PROGRAM\r
+                                00070   ;DEVDAT CONTAINS ACTUAL START OF DVDB\r
+                                00080   ;UUO CONTAINS RELATIVE ADDRESS OF DIRECTORY ENTRY IN USER AREA\r
+                                00090   ;FORMAT   PUSHJ PDP, UDIRSH\r
+                                00100   ;         JRST X                ;RETURN IF EMPTY ENTRY FOUND\r
+                                00110   ;         NORMAL RETURN WHEN ENTRY IS FOUND\r
+                                00120   INTERNAL ULOOK, UENTER\r
+                                00130   EXTERNAL UXIT,PUUOAC,IOIERR,DIRERR,ADRCK,CPOPJ1,THSDAT\r
+                        000004  00140             UDIRLN=4\r
+                        000100  00150             UDIRIN=100            ;DIRECTORY IN\r
+                        000200  00160             UDIREN=200            ;DIRECTORY ENTERED INTO\r
+                        000400  00170             UNWFRE=400            ;FREE BLCOK POINTER CHANGED\r
+                        001000  00180             ULINKF=1000           ;LAST OUTPUT BLOCK LINKED TO STORAGE\r
+                        000001  00190             UX1=TAC\r
+                        000002  00200             UX2=TAC1\r
+                        000005  00210             UX3=DAT\r
+        000000' 602600  777760  00220   UDIRSH:   TRNE UUO,777760       ;IS BLOCK IN UUO ACS?\r
+        000001' 260140  000000* 00230             PUSHJ PDP,ADRCK       ;NO. CHECK ADDRESS\r
+        000002' 201054  000003  00240             MOVEI  TAC,3(UUO)\r
+        000003' 603000  000002  00250             TLNE IOS,IOBEG\r
+        000004' 260140  000343' 00260             PUSHJ PDP, UBEG\r
+        000005' 550040  000007  00270             HRRZ UX1, PROG                ;COPY ADR OF START OF PROGRAM\r
+        000006' 272040  000014  00280             ADDM UX1, UUO                 ;ACTUAL START OF DIR. IN USER\r
+        000007' 201066  000000* 00290             MOVEI UX1,@UDIR(DEVDAT)       ;ACTUAL POINTER TO DIRECTORY\r
+        000010' 550101  000000  00300             HRRZ UX2, 0(UX1)              ;RELATIVE ADDR OF 1ST ENTRY I\r
+                                00310                                           ;DIRECTORY\r
+        000011' 505042  777603  00320             HRLI UX1, -^D129+UDIRLN(UX2)  ;ENTRY COUNTER\r
+        000012' 272100  000001  00330             ADDM UX2, UX1                 ;START OF 1ST ENTRY IN DIRECT\r
+        000013' 332000  000002  00340             SKIPE UX2\r
+        000014' 303100  000174  00350             CAILE UX2,174         ;IS THE REL ADR OF 1ST ENTRY INSIDE BUF\r
+        000015' 254000  000000* 00360             JRST DIRERR           ;NO\r
+        000016' 336101  000000  00370   UDIR2:    SKIPN UX2, 0 (UX1)            ;FIRST WORD OF ENTRY\r
+        000017' 263140  000000  00380             POPJ PDP,                     ;SPACES FOUND\r
+        000020' 316114  000000  00390             CAMN UX2, 0(UUO)              ;CHECK IF = TO USER AREA\r
+        000021' 254000  000026' 00400             JRST UDIR4                    ;CHECK 2ND WORD\r
+        000022' 270040  000034' 00410   UDIR3:    ADD UX1, UDIRK1       \r
+        000023' 321040  000016' 00420             JUMPL UX1, UDIR2\r
+        000024' 262140  000001  00430             POP PDP, UX1                  ;TAKE PREVIOUS EXIT FROM TABL\r
+        000025' 254000  000000* 00440             JRST UXIT                     ;TABLE FULL\r
+        000026' 554114  000001  00450   UDIR4:    HLRZ UX2, 1 (UUO)             ;2ND WORD IN USER ARE\r
+        000027' 322100  000000* 00460             JUMPE UX2, CPOPJ1\r
+        000030' 554241  000001  00470             HLRZ UX3, 1 (UX1)             ;2ND WORD OF DIRECTORY AREA\r
+        000031' 302242  000000  00480             CAIE UX3, 0 (UX2)\r
+        000032' 254000  000022' 00490             JRST UDIR3                    ;CHECK MORE ENTRIES\r
+        000033' 254000  000027* 00500             JRST CPOPJ1           ;MATCH, SKIP RETURN\r
+\r
+        000034' 000004  000004  00520   UDIRK1:   XWD UDIRLN, UDIRLN\r
+\r\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING                 PAGE 2\r
+        L. HANTMANN 8-2-65 MULTIPLE DIRECTORIES VERSION\r
+\r
+\r
+                                00550   ;SUBROUTINE FOR DIRECTORY LOOKUP\r
+\r
+                                00570   ;FORMAT   PUSHJ PDP, UDIRLU             ;VIA UUO\r
+                                00580   ;         JRST X                        ;ENTRY NOT IN TABLE\r
+\r
+        000035' 260140  000000' 00600   ULOOK:    PUSHJ PDP, UDIRSH\r
+        000036' 254000  000025* 00610             JRST UXIT\r
+        000037' 540241  000001  00620             HRR UX3, 1 (UX1)\r
+        000040' 506246  000007  00630             HRLM UX3, DEVIAD (DEVDAT)\r
+        000041' 505101  000000  00640   ULOOK1:   HRLI UX2, 0 (UX1)             ;FROM DIRECTORY\r
+        000042' 541114  000000  00650             HRRI UX2, 0 (UUO)             ;TO USER\r
+        000043' 251114  000003  00660             BLT UX2, UDIRLN-1(UUO)\r
+        000044' 135100  001272' 00670             LDB UX2,[POINT 12,2(UX1),35]  ;GET DATE USER(ENTER)EXEC(LOO\r
+        000045' 326100  000050' 00680             JUMPN UX2,.+3         ;IS IT 0?\r
+        000046' 200100  000000* 00690             MOVE UX2,THSDAT       ;YES, USE CURRENT DATE\r
+        000047' 137100  001273' 00700             DPB UX2,[POINT 12,2(UUO),35]  ;SET EXEC\r
+        000050' 350003  000000  00710             AOS (PDP)\r
+        000051' 254000  000311' 00720             JRST UTWDR\r
+\r
+                                00740   ;SUBROUTINE TO ENTER NEW OR CHANGE OLD DIRECTORY ENTRY\r
+                                00750   ;FORMAT   PUSHJ PDP, UDIRCH\r
+                                00760   ;         JRST X                        ;NO ROOM IN TABLE\r
+\r
+        000052' 260140  000000' 00780   UENTER:   PUSHJ PDP, UDIRSH\r
+        000053' 254000  000054' 00790             JRST .+1\r
+        000054' 350246  000000* 00800             AOS UX3, UFREE (DEVDAT)\r
+        000055' 542254  000001  00810             HRRM UX3,1(UUO)\r
+        000056' 506246  000010  00820             HRLM UX3, DEVOAD (DEVDAT)\r
+        000057' 250040  000014  00830             EXCH UX1, UUO\r
+        000060' 661000  001600  00840             TLO IOS, UDIREN+UNWFRE+ULINKF\r
+        000061' 202006  000002  00850             MOVEM IOS, DEVIOS(DEVDAT)\r
+        000062' 254000  000041' 00860             JRST ULOOK1\r
+\r\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING                 PAGE 3\r
+        L. HANTMANN 8-2-65 MULTIPLE DIRECTORIES VERSION\r
+\r
+\r
+                                00890   ;CREATE A CLEAN TAPE AND DIRECTORY\r
+\r
+                                00910   INTERNAL UTPCLR\r
+                                00920   EXTERNAL USRJDA\r
+\r
+        000063' 135040  000000* 00940   UTPCLR:   LDB TAC,PUUOAC\r
+        000064' 200301  000000* 00950             MOVE DEVDAT,USRJDA(TAC)\r
+        000065' 322300  000000* 00960             JUMPE DEVDAT,IOIERR\r
+        000066' 554046  000000  00970             HLRZ TAC,DEVNAM(DEVDAT)\r
+        000067' 302040  446441  00980             CAIE TAC,446441\r
+        000070' 254000  000036* 00990             JRST UXIT             ;NOT DTA\r
+        000071' 200006  000002  01000             MOVE IOS,DEVIOS(DEVDAT)\r
+        000072' 621000  000002  01010             TLZ IOS,IOBEG\r
+        000073' 661000  000700  01020             TLO IOS,UDIRIN+UDIREN+UNWFRE\r
+                                01030   IFE DTSIZ,<        MOVEM DEVDAT,DIREC>\r
+                                01040   ;THIS FOR SINGLE DIRECTORY ONLY\r
+        000074' 200046  000007* 01050             MOVE TAC,UDIR(DEVDAT)\r
+        000075' 200100  001274' 01060             MOVE TAC1,[XWD 1,5]\r
+        000076' 202101  000000  01070             MOVEM TAC1,(TAC)\r
+        000077' 507000  000001  01080             HRLS TAC\r
+        000100' 253040  000101' 01090             AOBJN TAC,.+1\r
+        000101' 402001  000000  01100             SETZM (TAC)\r
+        000102' 200100  000001  01110             MOVE TAC1,TAC\r
+        000103' 350000  000001  01120             AOS TAC\r
+        000104' 251042  000176  01130             BLT TAC,176(TAC1)\r
+        000105' 201040  000001  01140             MOVEI TAC, 1\r
+        000106' 202046  000054* 01150             MOVEM TAC, UFREE (DEVDAT)\r
+        000107' 202006  000002  01160             MOVEM IOS, DEVIOS(DEVDAT)\r
+        000110' 260140  000326' 01170             PUSHJ PDP,UTPREL\r
+        000111' 254000  000070* 01180             JRST UXIT\r
+\r
+\r
+                                01210   ;END OF DTDR\r
+\r\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING                 PAGE 4\r
+        L. HANTMANN 8-2-65 MULTIPLE DIRECTORIES VERSION\r
+\r
+\r
+                                01240   SUBTTL  L. HANTMAN PART 1 7-13-65\r
+                        010000  01250             UREV=10000            ;DT REVERSE BIT\r
+                        000001  01260             DTSIZ=1               ;1 FOR ONE BUFFER PER TAPE UNIT\r
+\r
+                        000001  01280             UBLK=1                ;NUMBER OF BLOCKS/BLOCK\r
+                        000001  01290             UCHN=1                ;CHANNEL OF DATA CONTROL = 1, LOC 42\r
+                        000042  01300             UCHA=42               ;DATA CONTROL INTERRUPT POSITION\r
+                                01310             EXTERNAL UXIT,ADVBFF,ADVBFE,IOSET,OUT,WAIT1,WSYNC\r
+                                01320             EXTERNAL PIOMOD,PUNIT,UFREE,UDIR,ADRERR,JOBPFI\r
+                                01330             ENTRY UTDSP\r
+\r
+                        004010  01350   DACI=4010                       ;DC INPUT DT\r
+                        003410  01360   DACO=3410                       ;DC OUTPUT DT\r
+                        220000  01370   SL=220000                       ;DT TURN ON. SELECT\r
+                        003000  01380           DTR=3000                        ;DT TURN AROUND DELAY\r
+                        002000  01390   DT=2000                         ;DT START/STOP DELAY\r
+                        000300  01400   RD=300                          ;DT RD\r
+                        000700  01410   WD=700                          ;DT WR\r
+                        000200  01420   RB=200                          ;DT READ BLOCK NOS.\r
+                        000002  01430   VEOT=2                          ;EOT FLAG BIT\r
+                        010000  01440   GR=10000                        ;DT REVERSE BIT\r
+                        040000  01450   JDE=40000                       ;JOB DONE ENABLE\r
+                        100000  01460   EE=100000                       ;ENABLE END FLAG\r
+                        002000  01470   URDIR=2000                      ;READING DIRECTORY\r
+\r
+        000112' 254000  000326' 01490   UTDSP:    JRST UTPREL           ;RELEASE\r
+        000113' 254000  000312' 01500             JRST UTPCLS           ;CLOSE\r
+        000114' 254000  000125' 01510             JRST UOUT             ;OUTPUT\r
+        000115' 254000  000204' 01520             JRST UIN              ;INPUT\r
+        000116' 254000  000052' 01530             JRST UENTER           ;ENTER IN DIRECTORY\r
+        000117' 254000  000035' 01540             JRST ULOOK            ;LOOKUP IN DIRECTORY\r
+        000120' 254000  000633' 01550             JRST UDMPO            ;DUMPOUT\r
+        000121' 254000  001022' 01560             JRST UDMPI            ;DUMPIN\r
+        000122' 254000  000272' 01570             JRST SETO             ;SET OUTPUT BLOCK NO.\r
+        000123' 254000  000267' 01580             JRST SETI             ;SET INPUT BLOCK NO.\r
+        000124' 254000  000277' 01590             JRST GETF             ;GET FREE BLOCK\r
+\r\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING                 PAGE 5\r
+        L. HANTMAN PART 1 7-13-65\r
+\r
+\r
+        000125' 260140  001142' 01620   UOUT:     PUSHJ PDP, UINTER             ;CHECK INTERLOCK\r
+        000126' 661000  000020  01630             TLO IOS, IO                   ;WRITING\r
+        000127' 550046  000010  01640             HRRZ TAC,DEVOAD(DEVDAT)\r
+        000130' 270040  000007  01650             ADD TAC, PROG                 ;ACTUAL BUFFER ADDRESS\r
+        000131' 554106  000010  01660             HLRZ TAC1, DEVOAD(DEVDAT)     ;BLOCK TO WRITE\r
+        000132' 306100  000001  01670             CAIN TAC1,1\r
+        000133' 254000  000171' 01680             JRST UOUT4                    ;COPY DIRECTORY\r
+        000134' 554101  000001  01690             HLRZ TAC1, 1(TAC)             ;BLOCK TIE\r
+        000135' 621000  001000  01700             TLZ IOS, ULINKF               ;NOT LINKED TO FREE STORAGE\r
+        000136' 326100  000144' 01710             JUMPN TAC1, UOUT1             ;USE BALOCK NUMBER INDICATED\r
+        000137' 623000  000002  01720             TLZE IOS, IOBEG               ;GET FREE STORAGE BLOCK\r
+        000140' 260140  000370' 01730             PUSHJ PDP, UBEG3\r
+        000141' 661000  001400  01740             TLO IOS,UNWFRE+ULINKF         ;LINKED TO FREE STORAGE\r
+        000142' 202006  000002  01750             MOVEM IOS, DEVIOS (DEVDAT)\r
+        000143' 350106  000106* 01760             AOS TAC1,UFREE(DEVDAT)        ;NEXT FREE BLOCK\r
+        000144' 306100  000001  01770   UOUT1:    CAIN TAC1,1                   ;IF 1, THIS IS LAST BLOCK\r
+        000145' 400100  000000  01780             SETZ TAC1,                    ;LAST BLOCK TIE = 0\r
+        000146' 506101  000001  01790             HRLM TAC1,1(TAC)              ;BLOCK\r
+        000147' 552040  001121' 01800             HRRZM TAC,UBUF                ;ACTUAL LOCATION OF DATA\r
+        000150' 544046  000010  01810             HLR TAC,DEVOAD(DEVDAT)\r
+        000151' 506106  000010  01820             HRLM TAC1, DEVOAD(DEVDAT)     ;NEXT BLOCK\r
+        000152' 254000  000375' 01830             JRST USETW\r
+                                01840   ;RETURN FROM WRITING 1 BLOCK\r
+\r
+        000153' 200046  000010  01860   UOUT2:    MOVE TAC,DEVOAD(DEVDAT)\r
+        000154' 505040  000007  01870             HRLI TAC,PROG                 ;PROG, BUFFER ADDRESS\r
+        000155' 515100  400000  01880             HRLZI TAC1,IOUSE\r
+        000156' 412120  000001  01890             ANDCAM TAC1,@TAC              ;SET USE BIT IN BUFFER\r
+        000157' 554106  000010  01900             HLRZ TAC1,DEVOAD(DEVDAT)      ;BLOCK TIE\r
+        000160' 322100  000167' 01910             JUMPE TAC1,UOUT3              ;WAS BLOCK WRITTEN THE LAST 0\r
+        000161' 540060  000001  01920             HRR TAC,@TAC                  ;PROG, NEXT BUFFER ADDRESS\r
+        000162' 542046  000010  01930             HRRM TAC,DEVOAD(DEVDAT)       ;NEXT BUFFER\r
+        000163' 602000  000040  01940             TRNE IOS, IOCON               ;CONTINUOUS?\r
+        000164' 254000  000167' 01950             JRST UOUT3                    ;STOP TAPE AND DISMISS\r
+        000165' 335020  000001  01960             SKIPGE @TAC                   ;IS NEXT BUFFER EMPTY?\r
+        000166' 254000  000126' 01970             JRST UOUT+1                   ;PROCESS NEXT BLOCK\r
+        000167' 262140  000001  01980   UOUT3:    POP PDP, TAC                  ;REDUCE TABLE\r
+        000170' 254000  001220' 01990             JRST DTC1                     ;STOP TAPE AND DISMISS\r
+\r\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING                 PAGE 6\r
+        L. HANTMAN PART 1 7-13-65\r
+\r
+\r
+                                02020   ;COPY DIRECTORY WHEN WRITING BLOCK 1\r
+        000171' 505101  000001  02030   UOUT4:    HRLI TAC1,1(TAC)              ;BUFFER ADDRESS, FROM\r
+        000172' 540106  000074* 02040             HRR TAC1, UDIR(DEVDAT)        ;DIRECTORY ADDRESS, TO\r
+        000173' 550046  000172* 02050             HRRZ TAC, UDIR(DEVDAT)        ;DIRECTORY ADDRESS\r
+        000174' 251101  000177  02060             BLT TAC1, 177(TAC)            ;MORE BUFFER AREA TO DIRECTORY\r
+        000175' 661000  000300  02070             TLO IOS, UDIRIN+UDIREN        ;SET DIRECTORY BITS\r
+        000176' 200126  000173* 02080             MOVE TAC1, @UDIR(DEVDAT)      ;NEXT FREE BLOCK IN DIRECTORY\r
+        000177' 556106  000143* 02090             HLRZM TAC1,UFREE(DEVDAT)      ;PLACE IN DATA BLOCK\r
+        000200' 515100  400000  02100             HRLZI TAC1, IOUSE\r
+        000201' 413101  000000  02110             ANDCAB TAC1, 0(TAC)           ;CLEAR USE BIT\r
+        000202' 542106  000010  02120             HRRM TAC1, DEVOAD(DEVDAT)     ;ADVANCE BUFFER POINTER\r
+        000203' 254000  000242' 02130             JRST UEND2\r
+                                02140   ,INPUT- NON DUMP\r
+\r
+        000204' 260140  001142' 02160   UIN:      PUSHJ PDP, UINTER             ;CHECK INTERLOCK\r
+        000205' 621000  000020  02170             TLZ IOS, IO                   ;READING\r
+        000206' 550046  000007  02180             HRRZ TAC,DEVIAD(DEVDAT)       ;UBUF:=TAC:=DEVIAD+PROG\r
+        000207' 270040  000007  02190             ADD TAC,PROG\r
+        000210' 554106  000007  02200             HLRZ TAC1, DEVIAD(DEVDAT)     ;BLOCK TO READ\r
+        000211' 306100  000001  02210             CAIN TAC1, 1                  ;TRYING TO READ DIRECTORY?\r
+        000212' 254000  000251' 02220             JRST UIN2                     ;COPY DIRECTORY\r
+        000213' 552040  001121' 02230             HRRZM TAC,UBUF\r
+        000214' 554046  000007  02240             HLRZ TAC,DEVIAD(DEVDAT)       ;TAC:=C(DEVIAD LH)\r
+        000215' 322040  000236' 02250             JUMPE TAC,UEND                ;NEXT BLOCK=00, THEN END OF FI\r
+        000216' 254000  000377' 02260             JRST USETR\r
+                                02270   ;RETURN FROM READING ONE BLOCK\r
+\r
+        000217' 550046  000007  02290   UIN1:     HRRZ TAC,DEVIAD(DEVDAT)\r
+        000220' 270040  000007  02300             ADD TAC,PROG\r
+        000221' 554101  000001  02310             HLRZ TAC1,1(TAC)\r
+        000222' 546106  000007  02320             HLRM TAC1,DEVIAD(DEVDAT)      ;NEXT BLOCK NUMBER TO READ\r
+        000223' 200046  000007  02330             MOVE TAC,DEVIAD(DEVDAT)\r
+        000224' 505040  000007  02340             HRLI TAC,PROG\r
+        000225' 515100  400000  02350             HRLZI TAC1,IOUSE\r
+        000226' 436120  000001  02360             IORM TAC1,@TAC                ;SET USE BIT\r
+        000227' 540060  000001  02370             HRR TAC,@TAC\r
+        000230' 542046  000007  02380             HRRM TAC,DEVIAD(DEVDAT)       ;NEXT BUFFER ADDRESS\r
+        000231' 602000  000040  02390             TRNE IOS, IOCON               ;CONTINUOUS?\r
+        000232' 254000  000167' 02400             JRST UOUT3                    ;EXIT\r
+        000233' 331020  000001  02410             SKIPL @TAC                    ;IS NEXT BUFFER FULL\r
+        000234' 254000  000205' 02420             JRST UIN+1                    ;PROCESS NEXT BLOCK\r
+        000235' 254000  000167' 02430             JRST UOUT3                    ;EXIT\r
+\r
+        000236' 661000  000040  02450   UEND:     TLO IOS, IOEND\r
+        000237' 202006  000002  02460             MOVEM IOS, DEVIOS(DEVDAT)\r
+        000240' 721300  020000  02470             CONSZ UTC, 20000              ;IS TAPE STOPPED?\r
+        000241' 254000  000167' 02480             JRST UOUT3                    ;STOP TAPE AND EXIT\r
+        000242' 371000  000000* 02490   UEND2:    SOSL DCREQ            ;DECREMENT REQUEST COUNT, IS ANY ONE WA\r
+        000243' 476000  000000* 02500             SETOM DCAVAL                  ;YES,SET DATA CONTROL AVAILABLE\r
+        000244' 371000  000000* 02510             SOSL DTREQ            ;DECREMENT REQUEST COUNT, IS ANY ONE WA\r
+        000245' 476000  000000* 02520             SETOM DTAVAL                  ;YES,SET DECTAPE CONTROL AVAI\r
+        000246' 620000  010000  02530             TRZ IOS, IOACT                ;CLEAR ACTIVE BIT\r
+\r\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING                 PAGE 6-1\r
+        L. HANTMAN PART 1 7-13-65\r
+\r
+        000247' 202006  000002  02540             MOVEM IOS, DEVIOS(DEVDAT)     ;RESTORE STATUS BITS\r
+        000250' 263140  000000  02550             POPJ PDP, 0                   ;EXIT\r
+\r\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING                 PAGE 7\r
+        L. HANTMAN PART 1 7-13-65\r
+\r
+\r
+                                02580   ;COPY DIRECTORY WHEN READING BLOCK 1\r
+        000251' 623000  000002  02590   UIN2:     TLZE IOS, IOBEG               ;IS DIRECTORY IN\r
+        000252' 254000  000265' 02600             JRST UIN4                     ;READ IN DIRECTORY\r
+        000253' 260140  000242' 02610             PUSHJ PDP, UEND2              ;CLR INDICATORS\r
+        000254' 200106  000177* 02620   UIN3:     MOVE TAC1,UFREE(DEVDAT)       ;NEXT FREE BLOCK IN DATA BLOC\r
+        000255' 506126  000176* 02630             HRLM TAC1, @UDIR(DEVDAT)      ;PLACE IN DIRECTORY\r
+        000256' 541101  000001  02640             HRRI TAC1, 1(TAC)             ;BUFFER ADDRESS, TO\r
+        000257' 504106  000255* 02650             HRL TAC1, UDIR(DEVDAT)        ;DIRECTORY ADDRESS, TO\r
+        000260' 251101  000200  02660             BLT TAC1, 200 (TAC)           ;MOVE DIRECTORY TO BUFFER ARE\r
+        000261' 515100  400000  02670             HRLZI TAC1, IOUSE\r
+        000262' 437100  400000  02680             IORB TAC1, IOUSE              ;SET USE BIT\r
+        000263' 542106  000007  02690             HRRM TAC1,DEVIAD(DEVDAT)      ;ADVANCE BUFFER\r
+        000264' 263140  000000  02700             POPJ PDP, 0                   ;EXIT\r
+        000265' 260140  000370' 02710   UIN4:     PUSHJ PDP, UBEG3\r
+        000266' 254000  000254' 02720             JRST UIN3\r
+        000267' 260140  000000* 02730   SETI:     PUSHJ PDP,WAIT1\r
+        000270' 506606  000007  02740             HRLM UUO,DEVIAD(DEVDAT)       ;SET INPUT BLOCK NO.\r
+        000271' 254000  000111* 02750             JRST UXIT\r
+\r
+        000272' 260140  000267* 02770   SETO:     PUSHJ PDP,WAIT1       \r
+        000273' 260140  001142' 02780             PUSHJ PDP, UINTER             ;WAIT FOR USE TO STOP\r
+        000274' 260140  000242' 02790             PUSHJ PDP, UEND2              ;CLEAR INDICATORS\r
+        000275' 506606  000010  02800             HRLM UUO,DEVOAD(DEVDAT)       ;SET OUTPUT BLOCK NO.\r
+        000276' 254000  000271* 02810             JRST UXIT\r
+\r
+        000277' 260140  000272* 02830   GETF:     PUSHJ PDP,WAIT1\r
+        000300' 603000  000002  02840             TLNE IOS,IOBEG\r
+        000301' 260140  000343' 02850             PUSHJ PDP,UBEG\r
+        000302' 661000  000400  02860             TLO IOS,UNWFRE\r
+        000303' 202006  000002  02870             MOVEM IOS,DEVIOS(DEVDAT)\r
+        000304' 350046  000254* 02880             AOS TAC, UFREE(DEVDAT)        ;GET FREE BLOCK\r
+        000305' 506046  000010  02890             HRLM TAC, DEVOAD(DEVDAT)\r
+        000306' 505600  000007  02900             HRLI UUO,PROG\r
+        000307' 542060  000014  02910             HRRM TAC,@UUO\r
+        000310' 254000  000276* 02920             JRST UXIT\r
+\r\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING                 PAGE 8\r
+        L. HANTMAN PART 1 7-13-65\r
+\r
+\r
+                                02950   INTERNAL UTPCLS,UTWDR,UBEG,UTPREL\r
+\r
+        000311'                 02970   UTWDR:    IFE DTSIZ,<        PUSHJ PDP,UTPREL>\r
+\r
+        000311' 254000  000310* 02990             JRST UXIT\r
+\r
+        000312' 607000  001000  03010   UTPCLS:   TLNN IOS, ULINKF\r
+        000313' 254000  000326' 03020             JRST UTPREL\r
+        000314' 135040  000000* 03030             LDB TAC,PIOMOD        ;MODE\r
+        000315' 301040  000016  03040             CAIL TAC,16\r
+        000316' 254000  000326' 03050             JRST UTPREL\r
+        000317' 544046  000006  03060             HLR TAC,DEVBUF(DEVDAT)\r
+        000320' 545040  000007  03070             HLRI TAC, PROG\r
+        000321' 540060  000001  03080             HRR TAC, @TAC                 ;TAC:=BUFFER ADDRESS\r
+        000322' 271040  000001  03090             ADDI TAC,1\r
+        000323' 201100  000001  03100             MOVEI TAC1,1\r
+        000324' 506120  000001  03110             HRLM TAC1,@TAC\r
+        000325' 254000  000000* 03120             JRST OUT\r
+\r
+                                03140   UTPREL:   IFE DTSIZ,< TLNE  IOS,IOBEG   ;RELEASE\r
+                                03150    POPJ PDP,\r
+                                03160    TLZE IOS,UDIREN\r
+                                03170    JRST UTPRL1\r
+                                03180    TLNN IOS,UNWFRE\r
+                                03190    POPJ PDP,\r
+                                03200    TLNN IOS,UDIRIN\r
+                                03210    PUSHJ PDP,UBEG>\r
+\r
+        000326' 627000  000600  03230             IFN DTSIZ,< TLZN IOS,UDIREN+UNWFRE\r
+        000327' 263140  000000  03240    POPJ PDP,>\r
+        000330' 260140  001142' 03250   UTPRL1:   PUSHJ PDP,UINTER      ;IS SYSTEM AVAILABLE?\r
+        000331' 540046  000304* 03260             HRR TAC,UFREE(DEVDAT)\r
+        000332' 506066  000257* 03270             HRLM TAC,@UDIR(DEVDAT)\r
+        000333' 200046  000332* 03280             MOVE TAC,UDIR(DEVDAT)\r
+        000334' 275040  000001  03290             SUBI TAC,1\r
+        000335' 202040  001121' 03300             MOVEM TAC,UBUF\r
+        000336' 661000  002000  03310             TLO IOS, URDIR\r
+        000337' 202006  000002  03320             MOVEM IOS,DEVIOS(DEVDAT)\r
+        000340' 201040  000001  03330             MOVEI TAC,1\r
+        000341' 260140  000375' 03340             PUSHJ PDP,USETW\r
+        000342' 254000  000277* 03350             JRST WAIT1\r
+\r\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING                 PAGE 9\r
+        L. HANTMAN PART 1 7-13-65\r
+\r
+\r
+                                03380   ,READ THE DIRECTORY FROM THIS DEC-TAPE\r
+\r
+        000343' 335006  000004  03400   UBEG:     SKIPGE DEVMOD(DEVDAT)         ;IS DIRECTORY IN CORE?\r
+        000344' 661000  000100  03410             TLO IOS,UDIRIN\r
+        000345' 603000  000100  03420             TLNE IOS,UDIRIN\r
+        000346' 263140  000000  03430             POPJ PDP, 0\r
+        000347' 260140  001142' 03440             PUSHJ PDP, UINTER             ;CHECK INTERLOCK\r
+        000350' 261140  000001  03450   UBEG2:    PUSH PDP, TAC                 ;SAVE TAC\r
+        000351' 550046  000333* 03460             HRRZ TAC,UDIR(DEVDAT)\r
+        000352' 275040  000001  03470             SUBI TAC, 1\r
+        000353' 202040  001121' 03480             MOVEM TAC,UBUF\r
+        000354' 661000  002100  03490             TLO IOS,UDIRIN+URDIR\r
+        000355' 621000  000002  03500             TLZ IOS, IOBEG\r
+        000356' 202006  000002  03510             MOVEM IOS,DEVIOS(DEVDAT)\r
+        000357' 205040  400000  03520             MOVSI TAC,DVDIRIN     ;SET DIRECTORY IN CORE BIT\r
+        000360' 436046  000004  03530             IORM TAC,DEVMOD(DEVDAT)\r
+        000361' 201040  000001  03540             MOVEI TAC,1\r
+        000362' 260140  000377' 03550             PUSHJ PDP,USETR\r
+        000363' 260140  000000* 03560             PUSHJ PDP,WSYNC\r
+        000364' 544066  000351* 03570             HLR TAC,@UDIR(DEVDAT)\r
+        000365' 552046  000331* 03580             HRRZM TAC,UFREE(DEVDAT)\r
+        000366' 262140  000001  03590   UBEGX:    POP PDP,TAC\r
+        000367' 263140  000000  03600             POPJ PDP, 0\r
+\r
+        000370' 603000  000100  03620   UBEG3:    TLNE IOS, UDIRIN\r
+        000371' 263140  000000  03630             POPJ PDP, 0\r
+        000372' 254000  000350' 03640             JRST UBEG2\r
+\r
+        000373' 260140  001220' 03660   UTBERR:   PUSHJ PDP, DTC1       ;ILL. BLOCK NO.\r
+        000374' 254000  000000* 03670             JRST UTBKER\r
+\r
+        000375' 201100  000535' 03690   USETW:    MOVEI TAC1, RIT\r
+        000376' 334000  000000  03700             SKIPA\r
+        000377' 201100  000527' 03710   USETR:    MOVEI TAC1,READ\r
+        000400' 542100  000500' 03720             HRRM TAC1,DDIG\r
+        000401' 552040  001117' 03730             HRRZM TAC,UBKN\r
+        000402' 323040  000373' 03740             JUMPLE TAC,UTBERR     ;ILL. BLOCK NO.?\r
+        000403' 301040  001102  03750             CAIL TAC,1102\r
+        000404' 254000  000373' 03760             JRST UTBERR           ;ILL. BLOCK NO.\r
+        000405' 135040  000000* 03770             LDB TAC,PUNIT         ;UNIT\r
+        000406' 241040  000003  03780             ROT TAC, 3\r
+        000407' 271040  000000* 03790             ADDI TAC, DTCCHN              ;DECTAPE CHANNEL\r
+        000410' 202040  001116' 03800             MOVEM TAC, UNIT               ;UNIT AND CHANNEL\r
+        000411' 201040  000137  03810             MOVEI TAC, 137\r
+        000412' 542040  001166' 03820             HRRM TAC, DTCINT\r
+        000413' 275040  000021  03830             SUBI TAC, 21\r
+        000414' 542040  001172' 03840             HRRM TAC, CONSZ1              ;FALL INTO FILL\r
+\r\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING                 PAGE 10\r
+        L. HANTMAN PART 1 7-13-65\r
+\r
+\r
+        000415' 720200  000000  03870   FILL:     CONO DC,0                     ;DESELECT DC\r
+        000416' 700600  002100  03880             CONO PI,2100                  ;TURN ON CHANNEL 1\r
+        000417' 202300  001151' 03890             MOVEM DEVDAT, USVDB           ;SAVE DATA BLOCK ADDR\r
+        000420' 202300  001122' 03900             MOVEM DEVDAT,UDVDAT           ;UDVDAT:=DTJIOS POINTER\r
+        000421' 201040  000002  03910             MOVEI TAC, DEVIOS\r
+        000422' 272040  001122' 03920             ADDM TAC,UDVDAT\r
+        000423' 200040  001275' 03930             MOVE TAC, [JSR DDIF]          ;DATA CONTROL INTERRUPT CHANN\r
+        000424' 202040  000042  03940             MOVEM TAC,UCHA\r
+        000425' 202340  001120' 03950             MOVEM PROG,UPROG              ;UPROG:=PROG\r
+        000426' 200040  001121' 03960             MOVE TAC,UBUF                 ;BLI:=XWD-200,C(UBUF)\r
+        000427' 505040  777600  03970             HRLI TAC,-200\r
+        000430' 202040  001114' 03980             MOVEM TAC,BLI\r
+        000431' 271040  000177  03990             ADDI TAC,200-1\r
+        000432' 202040  001113' 04000             MOVEM TAC,BLO\r
+        000433' 721300  020000  04010             CONSZ UTC, 20000              ;IS TAPE MOVING?\r
+        000434' 254000  000453' 04020             JRST FILLC                    ;YES\r
+        000435' 200040  001116' 04030             MOVE TAC, UNIT                ;RDDA:=RDRM:=WTDA:=WTRM:=C(UN\r
+        000436' 137040  000457' 04040             DPB TAC,F1\r
+        000437' 137040  000460' 04050             DPB TAC,F2\r
+        000440' 137040  000461' 04060             DPB TAC,F3\r
+        000441' 137040  000462' 04070             DPB TAC,F4\r
+        000442' 200040  001116' 04080             MOVE TAC,UNIT\r
+        000443' 405040  000070  04090             ANDI TAC, 70                  ;TAC HAS UNIT ONLY\r
+        000444' 271040  323201  04100                   ADDI TAC, SL+DTR+RB+EE+UCHN\r
+        000445' 607000  010000  04110             TLNN IOS, UREV                ;WAS REV, GO FWD\r
+        000446' 271040  010000  04120             ADDI TAC,GR                   ;WAS FWD, GO REV\r
+        000447' 721220  000001  04130             CONO UTC, @TAC\r
+        000450' 720200  004011  04140   FILL2:    CONO DC, DACI+UCHN            ;SET UP DC FOR INPUT\r
+        000451' 202006  000002  04150             MOVEM IOS, DEVIOS (DEVDAT)\r
+        000452' 263140  000000  04160             POPJ PDP,\r
+\r\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING                 PAGE 11\r
+        L. HANTMAN PART 1 7-13-65\r
+\r
+\r
+                                04190   ,TAPE IS ACTIVE - GIVE A COMMAND\r
+        000453' 721240  000001  04200   FILLC:    CONI UTC,TAC                  ;UTC COMMAND: UNIT, OLD DIRE\r
+        000454' 405040  010070  04210             ANDI TAC,GR+70                ;DIRECTION PLUS UNIT\r
+        000455' 721201  320201  04220             CONO UTC,SL+RB+EE+UCHN(TAC)   ;NO TIME DELAY\r
+        000456' 254000  000450' 04230             JRST FILL2\r
+\r
+        000457' 000600  000517' 04250   F1:       POINT 6,RDDA,35\r
+        000460' 000600  000531' 04260   F2:       POINT 6,RDRM,35\r
+        000461' 000600  000523' 04270   F3:       POINT 6,WTDA,35\r
+        000462' 000600  000537' 04280   F4:       POINT 6,WTRM,35\r
+                                04290   ,CHANGE DIRECTIONS - GIVE NEW COMMANDS\r
+        000463' 721240  000001  04300   RRV:      CONI UTC,TAC\r
+        000464' 431040  010000  04310             XORI TAC,GR                   ;REVERSE BIT\r
+        000465' 405040  550777  04320             ANDI TAC,550777\r
+        000466' 435040  002000  04330             IORI TAC,DT\r
+        000467' 721201  220000  04340             CONO UTC,SL(TAC)\r
+        000470' 720200  004011  04350             CONO DC,DACI+UCHN\r
+        000471' 254000  000515' 04360             JRST DXIT\r
+                                04370   ,EXAMINE BLOCK NUMBERS - DISPATCHED FROM INTERRUPT - CHAN, DC.\r
+        000472' 000000  000000  04380   DDIF:     0                             ;GOING FORWARD\r
+        000473' 202040  001115' 04390             MOVEM TAC,SV1                 ;SV1:=TAC\r
+        000474' 721700  000002  04400             CONSZ UTS, VEOT\r
+        000475' 254000  000463' 04410             JRST RRV\r
+        000476' 720040  000001  04420             DATAI DC,TAC\r
+        000477' 316040  001117' 04430             CAMN TAC,UBKN                 ;BLK NOT =STR\r
+        000500' 254000  000500' 04440   DDIG:     JRST .                        ;JRST READ, BIT, IFRIGHT UBK\r
+        000501' 721300  010000  04450             CONSZ UTC,10000               ;GOING BACKWARDS\r
+        000502' 254000  000506' 04460             JRST .+4                      ;BACKWARDS\r
+        000503' 311040  001117' 04470             CAML TAC,UBKN                 ;BLK > STR > FORWARD\r
+        000504' 254000  000463' 04480             JRST RRV\r
+        000505' 254000  000510' 04490             JRST .+3\r
+        000506' 317040  001117' 04500             CAMG TAC,UBKN                 ;BACKWARDS\r
+        000507' 254000  000463' 04510             JRST RRV                      ;BACKWARDS\r
+        000510' 721240  000001  04520   DDIG2:    CONI UTC,TAC\r
+        000511' 405040  550777  04530             ANDI TAC,550777\r
+        000512' 721201  220000  04540             CONO UTC,SL(TAC)\r
+        000513' 334000  000000  04550             SKIPA\r
+        000514' 542040  000042  04560   DXIT1:    HRRM TAC,UCHA\r
+        000515' 200040  001115' 04570   DXIT:     MOVE TAC,SV1                  ;RESTORE TAC\r
+        000516' 254520  000472' 04580             JEN @DDIF                     ;RE-ENABLE, DISMISS.\r
+\r\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING                 PAGE 12\r
+        L. HANTMAN PART 1 7-13-65\r
+\r
+\r
+                                04610   ,DISPATCH FROM UCHA INITIALLY ON CORRECT BLOCK MARK\r
+                                04620   ,SETS OP TO READ, WRITE IN FWD, REVERSE\r
+\r
+                                04640   ;RD FORWARD\r
+        000517' 721200  360300  04650   RDDA:     CONO UTC,SL+RD+JDE+EE                 ;GETS UNIT NO. - RE\r
+        000520' 201040  000551' 04660             MOVEI TAC,RDFW\r
+        000521' 720200  004011  04670             CONO DC,DACI+UCHN\r
+        000522' 254000  000514' 04680             JRST DXIT1\r
+\r
+        000523' 721200  360700  04700   WTDA:     CONO UTC,SL+WD+JDE+EE                 ;GETS UNIT NO. - RE\r
+        000524' 201040  000563' 04710             MOVEI TAC,WTFW\r
+        000525' 720200  003411  04720             CONO DC,DACO+UCHN\r
+        000526' 254000  000514' 04730             JRST DXIT1\r
+\r
+        000527' 721340  010000  04750   READ:     CONSO UTC,10000               ;ENTRY TO SET UP READ\r
+        000530' 254000  000517' 04760             JRST, RDDA\r
+                                04770   ;READ REVERSE\r
+        000531' 721200  370300  04780   RDRM:     CONO UTC,SL+GR+RD+JDE+EE      ;GETS UNIT NO. - RESETS TO RD\r
+        000532' 201040  000543' 04790             MOVEI TAC,RDRV\r
+        000533' 720200  004011  04800             CONO DC,DACI+UCHN\r
+        000534' 254000  000514' 04810             JRST DXIT1\r
+        000535' 721340  010000  04820   RIT:      CONSO UTC,10000               ;GOING REVERSE - ENTRY TO SET\r
+        000536' 254000  000523' 04830             JRST WTDA                     ;WRITE FORWARD\r
+                                04840   ;WRITE REVERSE\r
+        000537' 721200  370700  04850   WTRM:     CONO UTC,SL+WD+GR+JDE+EE      ;GETS UNIT NO. -RESETS. TO WT\r
+        000540' 201040  000555' 04860             MOVEI TAC,WTRV\r
+        000541' 720200  003411  04870             CONO DC,DACO+UCHN\r
+        000542' 254000  000514' 04880             JRST DXIT1\r
+\r
+                                04900   ,DC INTERRUPT PROCESSSING TO READ/WRITE DATA IN EITHER\r
+                                04910   ,DIRECTION, AND RE-ENABLE INTERRUP.\r
+                                04920   ,EXIT BLOCK PROCESSING AT ENPT(WRITE), ENPTI(READ)\r
+\r
+        000543' 000000  000000  04940   RDRV:     0                             ;ENTRY VIA UCHA - READ REV\r
+        000544' 720000  001113' 04950             BLKI DC,BLO\r
+        000545' 264000  000620' 04960             JSR ENPTI\r
+        000546' 370000  001113' 04970             SOS BLO\r
+        000547' 370000  001113' 04980             SOS BLO\r
+        000550' 254520  000543' 04990             JEN @RDRV\r
+\r
+        000551' 000000  000000  05010   RDFW:     0                             ;ENTRY VIA UCHA - READ FWD\r
+        000552' 720000  001114' 05020             BLKI DC,BLI\r
+        000553' 264000  000620' 05030             JSR ENPTI\r
+        000554' 254520  000551' 05040             JEN @RDFW\r
+\r
+        000555' 000000  000000  05060   WTRV:     0                             ;ENTRY VIA UCHA - WRITE REV\r
+        000556' 720100  001113' 05070             BLKO DC,BLO\r
+        000557' 264000  000567' 05080             JSR ENPT\r
+        000560' 370000  001113' 05090             SOS BLO\r
+        000561' 370000  001113' 05100             SOS BLO\r
+        000562' 254520  000555' 05110             JEN @WTRV\r
+\r
+\r\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING                 PAGE 12-1\r
+        L. HANTMAN PART 1 7-13-65\r
+\r
+        000563' 000000  000000  05130   WTFW:     0                             ;ENTRY VIA UCHA - WRITE FWD\r
+        000564' 720100  001114' 05140             BLKO DC,BLI\r
+        000565' 264000  000567' 05150             JSR ENPT\r
+        000566' 254520  000563' 05160             JEN @WTFW\r
+\r\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING                 PAGE 13\r
+        L. HANTMAN PART 1 7-13-65\r
+\r
+\r
+                                05190   ;END OF OUTPUT BLOCK\r
+\r
+        000567' 000000  000000  05210   ENPT:     0\r
+        000570' 264000  000603' 05220             JSR, ENP\r
+        000571' 202040  001115' 05230   ENPT2:    MOVEM TAC,SV1                 ;SV1:=TAC\r
+        000572' 515040  010000  05240             HRLZI TAC,UREV\r
+        000573' 721300  010000  05250             CONSZ UTC,10000\r
+        000574' 412060  001122' 05260             ANDCAM TAC,@UDVDAT\r
+        000575' 721340  010000  05270             CONSO UTC,10000\r
+        000576' 436060  001122' 05280             IORM TAC,@UDVDAT\r
+        000577' 201040  000615' 05290             MOVEI TAC,UOFF\r
+        000600' 542040  000042  05300             HRRM TAC,UCHA\r
+        000601' 200040  001115' 05310             MOVE TAC,SV1\r
+        000602' 254120  000567' 05320             JRSTF @ENPT\r
+\r
+                                05340   ,CHECK ERROR BITS DC MISSED, 0T PARITY, 1 LEG OP, TAPE END\r
+        000603' 000000  000000  05350   ENP:      0\r
+        000604' 720300  010000  05360             CONSZ DC, 10000;      DATA MISSED\r
+        000605' 264000  000627' 05370             JSR ERROR2\r
+        000606' 254120  000603' 05380             JRSTF @ENP\r
+\r
+                                05400   ,SAVE STATE OF UTS, UTC, DC, TURN OFF DC, UTC, +1@ERRTAL,+1@UERR\r
+                                05410   ;ERROR LOOPS\r
+        000607' 000000  000000  05420   ERROR:    0\r
+        000610' 721640  001111' 05430             CONI UTS, C12\r
+        000611' 721240  001112' 05440             CONI UTC, C13\r
+        000612' 720240  001110' 05450             CONI DC, C11\r
+        000613' 476000  001124' 05460             SETOM ERRFLG\r
+        000614' 254120  000607' 05470             JRSTF @ERROR\r
+                                05480   ;INTERRUPT FROM DATA FLAG AFER BLKO HAS COUNTED OUT\r
+        000615' 000000  000000  05490   UOFF:     0\r
+        000616' 700600  001100  05500             CONO PI, 1100         ;TURN DC CHANNEL OFF\r
+        000617' 254520  000615' 05510             JEN @UOFF             ;DISMISS EXTRA WRITE FLAG\r
+\r
+                                05530   ;END OF INPUT BLOCK\r
+        000620' 000000  000000  05540   ENPTI:    0\r
+        000621' 250040  000620' 05550             EXCH TAC, ENPTI\r
+        000622' 202040  000567' 05560             MOVEM TAC, ENPT\r
+        000623' 264000  000603' 05570             JSR ENP\r
+        000624' 720200  000000  05580             CONO DC, 0\r
+        000625' 200040  000620' 05590             MOVE TAC, ENPTI\r
+        000626' 254000  000571' 05600             JRST ENPT2\r
+                                05610   ;DETECT FIRST ERROR ONLY\r
+        000627' 000000  000000  05620   ERROR2:   0\r
+        000630' 336000  001124' 05630             SKIPN ERRFLG          ;PREVIOUSLY DETECTED ERROR!\r
+        000631' 264000  000607' 05640             JSR ERROR             ;STORE ERROR CONDITIONS\r
+        000632' 254120  000627' 05650             JRSTF @ERROR2         ;CONTINUE LOOP\r
+\r
+                                05670   ;END OF PART 1 DTSER2\r
+\r\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING                 PAGE 14\r
+        L. HANTMAN PART 1 7-13-65\r
+\r
+\r
+                                05700             EXTERNAL SETIOD\r
+                                05710             INTERNAL UDMP0, UDMPI\r
+\r
+                                05730   ; DUMP OUT\r
+        000633' 661000  000020  05740   UDMPO:    TLO IOS, IO                   ;SET FOR OUTPUT\r
+        000634' 260140  001142' 05750             PUSHJ PDP, UINTER             ;CHECK INTERLOCK\r
+        000635' 606600  777777  05760             TRNN UUO, 777777              ;COMMAND ADDRESS?\r
+        000636' 254000  000722' 05770             JRST UDMP2-1                  ;ERROR\r
+        000637' 201040  000727' 05780             MOVEI TAC, DDUMP              ;RETURN WHEN BLOCK FOUND\r
+        000640' 200100  001276' 05790   UDMP0:    MOVE TAC1, [JSR DMPADV]       ;BLKI OR BLKO RETURN, COMMANDS\r
+\r
+                                05810   ;COMMON ROUTINE FOR ALL DUMP MODES,  START SEARCH\r
+        000641' 542040  000500' 05820   UDMP1:    HRRM TAC,DDIG                 ;SEARCH RETURN\r
+        000642' 202100  000043  05830             MOVEM TAC1, UCHA+1            ;INTERRUPT RETURN\r
+        000643' 200040  001275' 05840             MOVE TAC, [JSR DDIF]  \r
+        000644' 202040  000042  05850             MOVEM TAC, UCHA               ;DATA CONTROL CHANNEL\r
+        000645' 554046  000010  05860             HLRZ TAC, DEVOAD (DEVDAT)     ;BLOCK NUMBER\r
+        000646' 607000  000020  05870             TLNN IOS, IO                  ;WRITING?\r
+        000647' 554046  000007  05880             HLRZ TAC, DEVIAD(DEVDAT)      ;INPUT BLOCK NUMBER\r
+        000650' 202040  001117' 05890             MOVEM TAC, UBKN               ;BLOCK TO LOOK FOR\r
+        000651' 552300  001151' 05900             HRRZM DEVDAT, USVDB           ;DATA BLOCK ADDRESS\r
+        000652' 135040  000405* 05910             LDB TAC,PUNIT         ;UNIT\r
+        000653' 241040  000003  05920             ROT TAC, 3\r
+        000654' 271040  000407* 05930             ADDI TAC, DTCCHN\r
+        000655' 202040  001116' 05940             MOVEM TAC, UNIT               ;UNIT AND DT CHANNEL\r
+        000656' 405040  000070  05950             ANDI TAC, 70\r
+        000657' 721201  323201  05960                   CONO UTC, SL+DTR+RB+EE+UCHN(TAC)\r
+        000660' 476000  001153' 05970             SETOM UERRCN                  ;SET ERROR COUNTER\r
+        000661' 201040  000037  05980             MOVEI TAC, 37                 ;DO NOT CHECK FOR INCOMPLETE\r
+        000662' 542040  001166' 05990             HRRM TAC, DTCINT\r
+        000663' 201040  000016  06000             MOVEI TAC,16\r
+        000664' 542040  001172' 06010             HRRM TAC, DTCINT+4\r
+        000665' 720200  004011  06020             CONO DC, DACI+UCHN            ;SET DATA CONTROL\r
+        000666' 700600  002100  06030             CONO PI,2100          ;INSURE CHANNEL 1 ON\r
+        000667' 552340  001126' 06040             HRRZM PROG, UDMPA             ;SAVE PROGRAM\r
+        000670' 606600  777777  06050             TRNN UUO, 777777              ;COMMAND ADDRESS\r
+        000671' 263140  000000  06060             POPJ PDP, 0                   ;COMMAND LIST ON TAPE, INPUT\r
+        000672' 550040  000014  06070             HRRZ TAC, UUO                 ;GET CMD PNTR\r
+        000673' 550100  000001  06080             HRRZ TAC1, TAC                ;SAVE POINTER\r
+        000674' 270100  000007  06090   UDMP1A:   ADD TAC1, PROG                ;GET ACTUAL POINTER\r
+        000675' 552100  001125' 06100             HRRZM TAC1, UDMP              ;STORE WORKING POINTER\r
+\r
+                                06120   ;CHECK ENTIRE COMMAND LIST FOR VALIDITY\r
+        000676' 336120  001125' 06130   UDMP1B:   SKIPN TAC1, @UDMP             ;GET COMMAND\r
+        000677' 254000  000712' 06140             JRST UDMP1C                   ;END OF COMMAND LIST\r
+        000700' 327100  000674' 06150             JUMPG TAC1, UDMP1A            ;CHANGE COMMAND SEQUENCE\r
+        000701' 576100  001141' 06160             HLREM TAC1, SVCNTR            ;SAVE -N\r
+        000702' 553000  000002  06170             HRRZS TAC1                    ;GET ADDRESS\r
+        000703' 305100  000000* 06180             CAIGE TAC1, JOBPFI    ;IS IT ABOVE IO PROT. AREA\r
+        000704' 254000  000000* 06190             JRST ADRERR           ;NO. ADDRESS CHECK ERROR\r
+        000705' 274100  001141' 06200             SUB TAC1, SVCNTR              ;GET AREA END\r
+        000706' 313100  000000* 06210             CAMLE TAC1, USRREL            ;LESS THEN END?\r
+\r\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING                 PAGE 14-1\r
+        L. HANTMAN PART 1 7-13-65\r
+\r
+        000707' 254000  000722' 06220             JRST UDMP2-1                  ;OUT OF BOUNDS\r
+        000710' 350000  001125' 06230             AOS UDMP                      ;INDEX COMMAND LIST POINTER\r
+        000711' 254000  000676' 06240             JRST UDMP1B                   ;GET NEXT COMMAND\r
+\r\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING                 PAGE 15\r
+        L. HANTMAN PART 1 7-13-65\r
+\r
+\r
+                                06270   ;GET FIRST COMMAND\r
+        000712' 270040  000007  06280   UDMP1C:   ADD TAC, PROG                 ;GET ACTUAL ADDRESS\r
+        000713' 552040  001125' 06290             HRRZM TAC, UDMP               ;SAVE POINTER\r
+        000714' 336060  001125' 06300             SKIPN TAC, @UDMP              ;1ST COMMAND\r
+        000715' 254000  000723' 06310             JRST UDMP2                    ;NOTHING TO DO\r
+        000716' 270040  000007  06320             ADD TAC, PROG                 ;ACTUAL POINTER\r
+        000717' 325040  000713' 06330             JUMPGE TAC, .-4               ;CHANGE COMMAND SEQUENCE\r
+        000720' 202040  001113' 06340             MOVEM TAC, BLO                ;SAVE I/O POINTER\r
+        000721' 263140  000000  06350             POPJ PDP, 0\r
+                                06360   ;EXIT WITH ERROR\r
+        000722' 660000  040000  06370             TRO IOS, IOBKTL\r
+        000723' 201040  777775  06380   UDMP2:    MOVEI TAC, -3\r
+        000724' 572040  001153' 06390             HRREM TAC, UERRCN\r
+        000725' 402000  001124' 06400             SETZM ERRFLG\r
+        000726' 254000  000242' 06410             JRST UEND2\r
+\r
+                                06430   ;SEARCH RETURN,OUTPUT,COMMAND LIST IN MEMORY\r
+        000727' 721300  010000  06440   DDUMP:    CONSZ UTC,GR\r
+        000730' 254000  000510' 06450             JRST DDIG2            ;KEEP GOING\r
+        000731' 200040  001277' 06460             MOVE TAC,[BLKO DC,BLO]\r
+        000732' 202040  000042  06470             MOVEM TAC, UCHA\r
+        000733' 720200  003411  06480             CONO DC,DACO+UCHN\r
+        000734' 200040  001116' 06490             MOVE TAC,UNIT\r
+\r
+        000735' 721201  360700  06510             CONO UTC,SL+WD+JDE+EE(TAC)\r
+        000736' 254000  000515' 06520             JRST DXIT\r
+                                06530   ;BLKI OR BLKO RETURNS, COMMAND LIST IN MEMORY\r
+        000737' 000000  000000  06540   DMPADV:   0\r
+        000740' 202040  001115' 06550             MOVEM TAC,SV1\r
+        000741' 354040  001125' 06560             AOSA TAC,UDMP                 ;POINTER\r
+\r\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING                 PAGE 16\r
+        L. HANTMAN PART 1 7-13-65\r
+\r
+\r
+        000742' 552040  001125' 06590   DMPA1:    HRRZM TAC, UDMP               ;STORE POINTER\r
+        000743' 336041  000000  06600             SKIPN TAC, 0(TAC)             ;IS WORD ZERO\r
+        000744' 254000  000752' 06610             JRST DMPA2                    ;END\r
+        000745' 270040  001126' 06620             ADD TAC, UDMPA                ;ADD PROGRAM\r
+        000746' 325040  000742' 06630             JUMPGE TAC, DMPA1             ;CHANGE COMMAND\r
+        000747' 202040  001113' 06640             MOVEM TAC, BLO\r
+        000750' 200040  001115' 06650   DMPXT:    MOVE TAC, SV1\r
+        000751' 254520  000737' 06660             JEN @DMPADV\r
+\r
+                                06680   ;END OF COMMAND LIST, INPUT OR OUTPUT\r
+        000752' 264000  000603' 06690   DMPA2:    JSR ENP\r
+        000753' 700600  001100  06700             CONO PI, 1100                 ;TURN DATA CONTROL CHANNEL OF\r
+        000754' 721740  000040  06710             CONSO UTS, 40                 ;WRITING?\r
+        000755' 720200  000000  06720             CONO DC, 0                    ;SHUT OFF DATA CONTROL\r
+        000756' 254000  000750' 06730             JRST DMPXT\r
+                                06740   ;SEARCH RETURN, INPUT COMMAND LIST ON TAPE\r
+        000757' 721300  010000  06750   DDMPI:    CONSZ UTC, GR                 ;GOING BACKWARDS?\r
+        000760' 254000  000510' 06760             JRST DDIG2                    ;KEEP GOING\r
+        000761' 200040  001300' 06770             MOVE TAC, [XWD -1,BLO-1]\r
+        000762' 202040  001113' 06780             MOVEM TAC, BLO\r
+\r
+                                06800   ;COMMON INSTRUCTIONS FOR COMMAND LIST IN MEMORY OR ON TAPE\r
+        000763' 200040  001301' 06810   DDMPI2:   MOVE TAC, [BLKI DC,BLO]\r
+        000764' 202040  000042  06820             MOVEM TAC, UCHA\r
+        000765' 720200  004011  06830             CONO DC, DACI+UCHN\r
+        000766' 200040  001116' 06840             MOVE TAC, UNIT\r
+        000767' 721201  360300  06850             CONO UTC, SL+RD+JDE+EE(TAC)\r
+        000770' 254000  000515' 06860             JRST DXIT\r
+\r
+                                06880   ;INPUT COMMAND LIST ON TAPE.  BLKI RETURN AFTER READING COMMAND\r
+        000771' 000000  000000  06890   DMPRD:    0\r
+        000772' 331000  001113' 06900             SKIPL BLO                     ;END OF COMMAND LIST?\r
+        000773' 254000  001010' 06910             JRST DMPRD1\r
+        000774' 202040  001115' 06920             MOVEM TAC, SV1                ;SAVE TAC\r
+        000775' 200040  001113' 06930             MOVE TAC, BLO                 ;PICK UP COMMAND\r
+        000776' 576040  001141' 06940             HLREM TAC, SVCNTR             ;-N\r
+        000777' 553000  000001  06950             HRRZS TAC                     ;ADDRESS\r
+        001000' 274040  001141' 06960             SUB TAC, SVCNTR               ;END ADDRESS\r
+        001001' 303040  000000  06970   DMPRD0:   CAILE TAC, 0                  ;<END? MODIFIED\r
+        001002' 254000  001102' 06980             JRST DMPERR                   ;OUT OF BOUNDS, EXIT\r
+        001003' 200040  001125' 06990             MOVE TAC, UDMP                ;PROG\r
+        001004' 272040  001113' 07000             ADDM TAC, BLO                 ;TO GET ACTUAL I/O POINTER\r
+        001005' 201040  001012' 07010             MOVEI TAC,DMPRDA              ;NEW RETURN\r
+        001006' 542040  000042  07020             HRRM TAC, UCHA+\r
+        001007' 334040  001115' 07030             SKIPA TAC, SV1                ;RESTORE TAC\r
+        001010' 720200  000000  07040   DMPRD1:   CONO DC, 0\r
+        001011' 254520  000771' 07050             JEN @DMPRD\r
+\r\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING                 PAGE 17\r
+        L. HANTMAN PART 1 7-13-65\r
+\r
+\r
+                                07080   ;INPUT COMMAND LIST ON TAPE.  BLKI RETURN AFTER READING DATA\r
+        001012' 000000  000000  07090   DMPRDA:   0\r
+        001013' 202040  001115' 07100             MOVEM TAC, SV1                ;SAVE TAC\r
+        001014' 200040  001300' 07110             MOVE TAC, [XWD -1,BLO-1]\r
+        001015' 202040  001113' 07120             MOVEM TAC, BLO                ;READ INTO BLO\r
+        001016' 201040  000771' 07130             MOVEI TAC, DMPRD              ;USE PREV. RETURN\r
+        001017' 542040  000043  07140             HRRM TAC, UCHA+1\r
+        001020' 200040  001115' 07150             MOVE TAC, SV1                 ;SAVE TAC\r
+        001021' 254520  001012' 07160             JEN @DMPRDA\r
+                                07170   ;DUMP IN\r
+        001022' 621000  000020  07180   UDMPI:    TLZ IOS, IO\r
+        001023' 260140  001142' 07190             PUSHJ PDP, UINTER\r
+        001024' 602600  777777  07200             TRNE UUO, 777777              ;COMMAND LIST ON TAPE\r
+        001025' 254000  001033' 07210             JRST UDMPI2                   ;COMMAND LIST IN CORE\r
+        001026' 200040  000706* 07220             MOVE TAC, USRREL              ;LENGTH OF USER AREA\r
+        001027' 542040  001001' 07230             HRRM TAC, DMPRD0\r
+        001030' 201040  000757' 07240             MOVEI TAC, DDMPI              ;SEARCH RETURN\r
+        001031' 200100  001302' 07250             MOVE TAC1, [JSR DMPRD]                ;BLOCK IN RETURN\r
+        001032' 254000  000641' 07260             JRST UDMP1\r
+        001033' 201040  001035' 07270   UDMPI2:   MOVEI TAC, DDMPI3             ;COMMAND LIST IN CORE\r
+        001034' 254000  000640' 07280             JRST UDMP0\r
+                                07290   ;SEARCH RETURN, INPUT COMMAND LIST IN MEMORY\r
+        001035' 721300  010000  07300   DDMPI3:   CONSZ UTC, GR\r
+        001036' 254000  000510' 07310             JRST DDIG2                    ;KEEP GOING\r
+        001037' 254000  000763' 07320             JRST DDMPI2                   ;INPUT COMMAND LIST IN CORE\r
+                                07330   ;JOB DONE AFTER COMMAND LIST RUNS OUT\r
+        001040' 332000  001124' 07340   DMPEND:   SKIPE ERRFLG\r
+        001041' 660000  200000  07350             TRO IOS,IODERR\r
+        001042' 202006  000002  07360             MOVEM IOS,DEVIOS(DEVDAT)\r
+        001043' 200040  001116' 07370             MOVE TAC,UNIT\r
+        001044' 405040  000070  07380             ANDI TAC, 70\r
+        001045' 700600  002100  07390             CONO PI,2100\r
+        001046' 720200  004011  07400             CONO DC, DACI+UCHN\r
+        001047' 721201  220200  07410             CONO UTC, SL+RB(TAC)          ;SWITCH TO SEARCH MODE\r
+        001050' 200040  001303' 07420             MOVE TAC, [JSR UDMPRB]\r
+        001051' 202040  000042  07430             MOVEM TAC, UCHA\r
+        001052' 254000  000000* 07440             JRST DTCRET\r
+                                07450   ;SEARCH RETURN TO READ NEXT FREE BLOCK\r
+        001053' 000000  000000  07460   UDMPRB:   0\r
+        001054' 250300  001151' 07470             EXCH DEVDAT, USVDB            ;GET DVDB\r
+        001055' 202040  001130' 07480             MOVEM TAC,SVAC\r
+        001056' 202000  001131' 07490             MOVEM IOS,SVAC+1\r
+        001057' 202140  001132' 07500             MOVEM PDP,SVAC+2\r
+        001060' 202100  001133' 07510             MOVEM TAC1,SVAC+3\r
+        001061' 200006  000002  07520             MOVE IOS,DEVIOS(DEVDAT)\r
+        001062' 607000  000020  07530             TLNN IOS,IO                   ;INPUT OR OUTPUT?\r
+        001063' 254000  001066' 07540             JRST .+3                      ;INPUT\r
+        001064' 720046  000365* 07550             DATAI DC,UFREE(DEVDAT)        ;LAST FREEBLOCK TALLY\r
+        001065' 661000  000400  07560             TLO IOS,UNWFRE                ;SET FREE BLOCK CHANGED BIT\r
+        001066' 720200  000000  07570             CONO DC,0                     ;TURN OFF DATA CONTROL\r
+        001067' 201040  000654* 07580             MOVEI TAC,DTCCHN\r
+        001070' 721201  005000  07590             CONO UTC,5000(TAC)            ;STOP TAPE\r
+\r\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING                 PAGE 17-1\r
+        L. HANTMAN PART 1 7-13-65\r
+\r
+        001071' 200140  001304' 07600             MOVE PDP,[XWD -5,SVAC+3]      ;USE REST OF SCAV BLOCK\r
+        001072' 264000  001154' 07610             JSR IODSET\r
+        001073' 260140  001227' 07620             PUSHJ PDP,DTC1B\r
+\r\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING                 PAGE 18\r
+        L. HANTMAN PART 1 7-13-65\r
+\r
+\r
+        001074' 200040  001130' 07650             MOVE TAC,SVAC\r
+        001075' 200000  001131' 07660             MOVE IOS,SVAC+1\r
+        001076' 200140  001132' 07670             MOVE PDP,SVAC+2\r
+        001077' 200100  001133' 07680             MOVE TAC1,SVAC+3\r
+        001100' 250300  001151' 07690             EXCH DEVDAT,USVDB\r
+        001101' 254520  001053' 07700             JEN @UDMPRB\r
+                                07710   ;ADDRESS CHECK FROM COMMAND.  COMMANDS ON TAPE\r
+        001102' 250300  001151' 07720   DMPERR:   EXCH DEVDAT, USVDB            ;GET DVDB\r
+        001103' 201040  400000  07730             MOVEI TAC, IOIMPM             ;ERROR BITS\r
+        001104' 436046  000002  07740             ORM TAC, DEVIOS(DEVDAT)       ;SET STATUS\r
+        001105' 250300  001151' 07750             EXCH DEVDAT, USVDB            ;RESTORE DEVDAT\r
+        001106' 200040  001115' 07760             MOVE TAC, SV1                 ;RESTORE TAC\r
+        001107' 254000  001010' 07770             JRST DMPRD1\r
+\r\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING                 PAGE 19\r
+        L. HANTMAN PART 1 7-13-65\r
+\r
+\r
+        001110' 000000  000000  07800   C11:      0             ;TEMP CONI DC\r
+        001111' 000000  000000  07810   C12:      0             ;TEMP CONI UTS\r
+        001112' 000000  000000  07820   C13:      0             ;TEMP CONI UTC\r
+        001113' 000000  000000  07830   BLO:      0             ;XWD -200 C(UBUF)\r
+        001114' 000000  000000  07840   BLI:      0             ;XWD,-200,C(UBUF+200)\r
+        001115' 000000  000000  07850   SV1:      0             ;TEMPORARY FOR TAC DURING INTERRUPT\r
+        001116' 000000  000000  07860   UNIT:     0             ;IN BITS 30-32\r
+        001117' 000000  000000  07870   UBKN:     0             ;BLOCK BEING SEARCHED FOR\r
+        001120' 000000  000000  07880   UPROG:    0             ;HOLDS PROG\r
+        001121' 000000  000000  07890   UBUF:     0             ;ABS. LOC OF DATA\r
+        001122' 000000  000000  07900   UDVDAT:   0             ;PTR TO IOS\r
+        001123' 000000  000000  07910   ERRTAL:   0             ;TOTAL NO. OF ERRORS\r
+        001124' 000000  000000  07920   ERRFLG:   0             ;-1 IF ERROR OCCURED, 0 OTHERWISSE\r
+\r
+        001125' 000000  000000  07940   UDMP:     0             ;HOLDS DUMP UUO ADDRESS\r
+        001126' 000000  000000  07950   UDMPA:    0             ;HOLDS USER PROGRAM STARTING ADDRESS\r
+        001127' 000000  000000  07960   SV0:      0\r
+        001130'                 07970   SVAC:     BLOCK 11\r
+        001141' 000000  000000  07980   SVCNTR:   0             ;HOLDS -N OF DUMP COMMAND WORD\r
+\r
+                                08000   ;CHECK FRO INTERLOCK ON DECTAPE AND DATA CONTROLS\r
+        001142' 660000  010000  08010   UINTER:   TRO IOS, IOACT\r
+        001143' 202006  000002  08020             MOVEM IOS, DEVIOS(DEVDAT)\r
+        001144' 352000  000244* 08030             AOSE DTREQ                    ;IS DECTAPE CONTROL FREE?\r
+        001145' 260140  000000* 08040             PUSHJ PDP, DTWAIT             ;WAIT\r
+        001146' 352000  000242* 08050             AOSE DCREQ                    ;IS DATA CONTROL FREE?\r
+        001147' 260140  000000* 08060             PUSHJ PDP, DCWAIT             ;WAIT\r
+        001150' 263140  000000  08070             POPJ PDP, 0                   ;EXIT\r
+\r
+        001151' 000000  000000  08090   USVDB:    0             ;SAVE DATA BLOCK ADDRESS\r
+        001152' 000000  000000  08100   USVIOS:   0             ;SAVE IOS\r
+        001153' 777777  777775  08110   UERRCN:   -3            ;ERROR COUNTER\r
+\r
+        001154' 000000  000000  08130   IODSET:   0\r
+        001155' 623000  000001  08140             TLZE IOS,IOW\r
+        001156' 260140  000000* 08150             PUSHJ PDP,SETIOD\r
+        001157' 202006  000002  08160             MOVEM IOS,DEVIOS(DEVDAT)\r
+        001160' 254020  001154' 08170             JRST @IODSET\r
+\r\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING                 PAGE 20\r
+        L. HANTMAN PART 1 7-13-65\r
+\r
+\r
+                                08200   ;INITIALZATION\r
+\r
+        001161' 201040  777775  08220   DTCINI:   MOVEI TAC, -3                 ;CLEAR ERROR COUNTER\r
+        001162' 572040  001153' 08230             HRREM TAC, UERRCN\r
+        001163' 402000  001124' 08240             SETZM ERRFLG\r
+        001164' 721200  000000  08250             CONO UTC, 0\r
+        001165' 263140  000000  08260             POPJ PDP, 0\r
+\r
+        001166' 721740  000137  08280   DTCINT:   CONSO UTS, 137                ;ALL ERRORS AND JOB DONE\r
+        001167' 254000  001167' 08290             JRST .                        ;MODIFIED BY INITIALIZATION\r
+        001170' 721700  000020  08300             CONSZ UTS,20                  ;TIME FLAG\r
+        001171' 254000  001244' 08310             JRST UTIME                    ;SET DECTAPE CONTROL AVAILABL\r
+        001172' 721700  000116  08320   CONSZ1:   CONSZ UTS, 116                ;INC BLK, PARITY, ILL OP, END\r
+        001173' 264000  000627' 08330             JSR ERROR2                    ;ERROR\r
+\r
+                                08350   ;JOB DONE\r
+        001174' 720200  000000  08360             CONO DC, 0                    ;TURN OFF DATA CONTROL\r
+        001175' 202000  001127' 08370             MOVEM 0, SV0                  ;SAVE ZERO\r
+        001176' 721240  000000  08380             CONI UTC, 0\r
+        001177' 202000  001152' 08390             MOVEM 0, USVIOS\r
+        001200' 405000  230070  08400             ANDI 0, 230070                ;SAVE DIRECTION AND UNIT\r
+        001201' 721220  000000  08410             CONO UTC, @0                  ;SWITCH TO MOVE MODE\r
+        001202' 200000  001127' 08420             MOVE 0, SV0\r
+        001203' 264000  000000* 08430             JSR DTCSAV\r
+        001204' 260140  001252' 08440             PUSHJ PDP, DSETAC\r
+        001205' 332000  001124' 08450             SKIPE ERRFLG\r
+        001206' 254000  001256' 08460             JRST DTRED0\r
+        001207' 623000  002000  08470             TLZE IOS,URDIR\r
+        001210' 254000  001213' 08480             JRST .+3\r
+        001211' 264000  001154' 08490             JSR IODSET\r
+        001212' 254000  001220' 08500             JRST DTC1\r
+        001213' 640000  000017  08510             TRC IOS,17\r
+        001214' 646000  000017  08520             TRCN IOS,17\r
+        001215' 254000  001040' 08530             JRST DMPEND\r
+        001216' 264000  001154' 08540             JSR IODSET\r
+        001217' 254000  001237' 08550             JRST DTCONT\r
+        001220' 200040  001152' 08560   DTC1:     MOVE TAC, USVIOS\r
+        001221' 405040  010007  08570             ANDI TAC, 10007               ;DIRECTION, CHANNEL\r
+        001222' 435040  005000  08580             ORI TAC,5000                  ;TIME FLAG ENABLE\r
+        001223' 721220  000001  08590             CONO UTC, @ TAC               ;STOP TAPE, AND DESELECT\r
+        001224' 621000  010000  08600             TLZ IOS, UREV\r
+        001225' 602040  010000  08610             TRNE TAC, 10000\r
+        001226' 661000  010000  08620             TLO IOS,UREV\r
+\r\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING                 PAGE 21\r
+        L. HANTMAN PART 1 7-13-65\r
+\r
+\r
+        001227'                 08650   DTC1A:\r
+        001227' 371000  001146* 08660   DTC1B:    SOSL DCREQ            ;DECREMENT REQUEST COUNT, ANYONE LEFT W\r
+        001230' 476000  000243* 08670             SETOM DCAVAL                  ;YES.DATA CONTROL AVAILABLE\r
+        001231' 620000  010000  08680             TRZ IOS, IOACT\r
+        001232' 202006  000002  08690   DTC2:     MOVEM IOS, DEVIOS(DEVDAT)\r
+        001233' 201040  777775  08700             MOVEI TAC, -3\r
+        001234' 572040  001153' 08710             HRREM TAC, UERRCN\r
+        001235' 402000  001124' 08720             SETZM ERRFLG\r
+        001236' 263140  000000  08730             POPJ PDP,\r
+\r
+        001237' 201100  000153' 08750   DTCONT:   MOVEI TAC1, UOUT2\r
+        001240' 607000  000020  08760             TLNN IOS, IO                  ;WRITING?\r
+        001241' 201100  000217' 08770             MOVEI TAC1, UIN1\r
+        001242' 260142  000000  08780             PUSHJ PDP, 0(TAC1)\r
+        001243' 254000  001232' 08790             JRST DTC2\r
+\r
+                                08810   ;INTERRUPT FROM TIME FLAG AFTER STOP DELAY\r
+        001244' 721340  004000  08820   UTIME:    CONSO UTC,4000\r
+        001245' 254000  001167' 08830             JRST DTCINT+1\r
+        001246' 371000  001144* 08840             SOSL DTREQ            ;DECREMENT REQUEST COUNT, IS ANYONE STI\r
+        001247' 476000  000245* 08850             SETOM DTAVAL                  ;YES,DECTAPE CONTROL AVAILABL\r
+        001250' 721200  000000  08860             CONO UTC, 0\r
+        001251' 254520  000000* 08870             JEN @DTCCHL\r
+\r
+                                08890   ;SET UP NECESSARY DECTAPE ACCUMULATORS\r
+        001252' 200300  001151' 08900   DSETAC:   MOVE DEVDAT, USVDB\r
+        001253' 200340  001120' 08910             MOVE PROG, UPROG\r
+        001254' 200006  000002  08920             MOVE IOS, DEVIOS(DEVDAT)\r
+        001255' 263140  000000  08930             POPJ PDP,\r
+                                08940   ;RE-DO DECTAPE COMMAND IF AN ERROR OCCURED\r
+        001256' 640000  000017  08950   DTRED0:   TRC IOS,17\r
+        001257' 646000  000017  08960             TRCN IOS,17\r
+        001260' 254000  001040' 08970             JRST DMPEND\r
+        001261' 350000  001153' 08980             AOS UERRCN                    ;NOT YET 3 ERRORS\r
+        001262' 254000  001266' 08990             JRST DTRD2                    ;THIRD ERROR\r
+        001263' 402000  001124' 09000             SETZM ERRFLG                  ;CLEAR FLAG\r
+        001264' 260140  000415' 09010             PUSHJ PDP, FILL               ;RE-EXECUTE THE COMMAND\r
+        001265' 254000  001052* 09020             JRST DTCRET                   ;EXIT\r
+        001266' 660000  200000  09030   DTRD2:    TRO IOS, IODERR               ;SET ERROR INDICATION\r
+        001267' 623000  000001  09040             TLZE IOS, IOW\r
+        001270' 260140  001156* 09050             PUSHJ PDP, SETIOD             ;RELEASE WAIT\r
+        001271' 254000  001220' 09060             JRST DTC1                     ;STOP THE TAPE\r
+                                09070   EXTERNAL DTREQ, DCREQ, DTWAIT, DCWAIT, DTCSAV,DTCRET\r
+                                09080   EXTERNAL DTAVAL, DCAVAL, DTCCHL, UTBKER, DTCCHN, USRREL\r
+                                09090   INTERNAL DTCINT, DTCINI, DTSIZ,UBUF\r
+\r
+                                09110             END,\r
+        001272' 001401  000002\r
+        001273' 001414  000002\r
+        001274' 000001  000005\r
+        001275' 264000  000472'\r
+        001276' 264000  000737'\r
+\r\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING                 PAGE 21-1\r
+        L. HANTMAN PART 1 7-13-65\r
+\r
+        001277' 720100  001113'\r
+        001300' 777777  001112'\r
+        001301' 720000  001113'\r
+        001302' 264000  000771'\r
+        001303' 264000  001053'\r
+        001304' 777773  001133'\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 001305\r
+\r
+9K CORE USED\r
+\r\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING                 PAGE 22\r
+        SYMBOL TABLE\r
+\r
+                000452  \r
+A               000000  INT\r
+AC1             000015  INT\r
+AC2             000016  INT\r
+AC3             000017  INT\r
+ADRCK           000001' EXT\r
+ADRERR          000704' EXT\r
+ADVBFE          000000  EXT\r
+ADVBFF          000000  EXT\r
+AL              000001  INT\r
+ASSCON          400000  INT\r
+ASSPRG          200000  INT\r
+B               000014  INT\r
+BLI             001114' \r
+BLO             001113' \r
+BUFPNT          000012  INT\r
+BUFWRD          000013  INT\r
+C11             001110' \r
+C12             001111' \r
+C13             001112' \r
+CLOSB           002000  INT\r
+CLSIN           000002  INT\r
+CLSOUT          000001  INT\r
+CONSZ1          001172' \r
+CPOPJ1          000033' EXT\r
+D               000017  INT\r
+DACI            004010  \r
+DACO            003410  \r
+DAT             000005  INT\r
+DC              000200  SPD\r
+DCAVAL          001230' EXT\r
+DCL             000001  INT\r
+DCREQ           001227' EXT\r
+DCW             020000  INT\r
+DCWAIT          001147' EXT\r
+DDI             000007  INT\r
+DDIF            000472' \r
+DDIG            000500' \r
+DDIG2           000510' \r
+DDMPI           000757' \r
+DDMPI2          000763' \r
+DDMPI3          001035' \r
+DDO             000006  INT\r
+DDTMEM          000037  INT\r
+DDTSYM          000036  INT\r
+DDUMP           000727' \r
+DEN             000004  INT\r
+DEVADR          000007  INT\r
+DEVBUF          000006  INT\r
+DEVCHR          000001  INT\r
+DEVCTR          000011  INT\r
+DEVDAT          000006  INT\r
+DEVIAD          000007  INT\r
+\r\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING                 PAGE 22-1\r
+        SYMBOL TABLE\r
+\r
+DEVIOS          000002  INT\r
+DEVLOG          000005  INT\r
+DEVMOD          000004  INT\r
+DEVNAM          000000  INT\r
+DEVOAD          000010  INT\r
+DEVPTR          000010  INT\r
+DEVSER          000003  INT\r
+DGF             000012  INT\r
+DIN             000003  INT\r
+DIRERR          000015' EXT\r
+DLK             000005  INT\r
+DMPA1           000742' \r
+DMPA2           000752' \r
+DMPADV          000737' \r
+DMPEND          001040' \r
+DMPERR          001102' \r
+DMPRD           000771' \r
+DMPRD0          001001' \r
+DMPRD1          001010' \r
+DMPRDA          001012' \r
+DMPXT           000750' \r
+DOU             000002  INT\r
+DR              000016  INT\r
+DRL             000000  INT\r
+DSETAC          001252' \r
+DSI             000011  INT\r
+DSO             000010  INT\r
+DT              002000  \r
+DTAVAL          001247' EXT\r
+DTC1            001220' \r
+DTC1A           001227' \r
+DTC1B           001227' \r
+DTC2            001232' \r
+DTCCHL          001251' EXT\r
+DTCCHN          001067' EXT\r
+DTCINI          001161' INT\r
+DTCINT          001166' INT\r
+DTCONT          001237' \r
+DTCRET          001265' EXT\r
+DTCSAV          001203' EXT\r
+DTR             003000  \r
+DTRD2           001266' \r
+DTRED0          001256' \r
+DTREQ           001246' EXT\r
+DTSIZ           000001  INT\r
+DTW             040000  INT\r
+DTWAIT          001145' EXT\r
+DVAVAL          000040  INT\r
+DVCDR           100000  INT\r
+DVDIR           000004  INT\r
+DVDIRI          400000  INT\r
+DVIN            000002  INT\r
+DVLPT           040000  INT\r
+\r\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING                 PAGE 22-2\r
+        SYMBOL TABLE\r
+\r
+DVMTA           000020  INT\r
+DVOUT           000001  INT\r
+DVTTY           000010  INT\r
+DXIT            000515' \r
+DXIT1           000514' \r
+EE              100000  \r
+ENP             000603' \r
+ENPT            000567' \r
+ENPT2           000571' \r
+ENPTI           000620' \r
+ENTRB           020000  INT\r
+ERRFLG          001124' \r
+ERROR           000607' \r
+ERROR2          000627' \r
+ERRTAL          001123' \r
+F1              000457' \r
+F2              000460' \r
+F3              000461' \r
+F4              000462' \r
+FILL            000415' \r
+FILL2           000450' \r
+FILLC           000453' \r
+GETF            000277' \r
+GR              010000  \r
+I               000010  INT\r
+IB              000013  INT\r
+IBUFB           200000  INT\r
+INITB           400000  INT\r
+INPB            010000  INT\r
+IO              000020  INT\r
+IOACT           010000  INT\r
+IOBEG           000002  INT\r
+IOBKTL          040000  INT\r
+IOCON           000040  INT\r
+IODEND          020000  INT\r
+IODERR          200000  INT\r
+IODISC          400000  INT\r
+IODONE          400000  INT\r
+IODSET          001154' \r
+IODTER          100000  INT\r
+IOEND           000040  INT\r
+IOFST           000004  INT\r
+IOIERR          000065' EXT\r
+IOIMPM          400000  INT\r
+IONRCK          000100  INT\r
+IORDEL          000100  INT\r
+IORET           000020  INT\r
+IOS             000000  INT\r
+IOSET           000000  EXT\r
+IOSTRT          000010  INT\r
+IOUSE           400000  INT\r
+IOW             000001  INT\r
+IOWC            000020  INT\r
+\r\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING                 PAGE 22-3\r
+        SYMBOL TABLE\r
+\r
+IOWS            400000  INT\r
+ITEM            000004  INT\r
+JBFADR          000000  INT\r
+JBFCTR          000002  INT\r
+JBFPTR          000001  INT\r
+JBUF            000005  INT\r
+JDAT            000011  INT\r
+JDE             040000  \r
+JERR            002000  INT\r
+JIOW            100000  INT\r
+JNA             004000  INT\r
+JOBPFI          000703' EXT\r
+LOOKB           040000  INT\r
+MTW             010000  INT\r
+OBUFB           100000  INT\r
+OUT             000325' EXT\r
+OUTPB           004000  INT\r
+PDP             000003  INT\r
+PI              000004  SPD\r
+PICHN           000100  INT\r
+PIOMOD          000314' EXT\r
+PROG            000007  INT\r
+PUNIT           000652' EXT\r
+PUUOAC          000063' EXT\r
+RB              000200  \r
+RD              000300  \r
+RDDA            000517' \r
+RDFW            000551' \r
+RDRM            000531' \r
+RDRV            000543' \r
+READ            000527' \r
+RIT             000535' \r
+RRV             000463' \r
+RUN             200000  INT\r
+RUNABL          204000  INT\r
+SETI            000267' \r
+SETIOD          001270' EXT\r
+SETO            000272' \r
+SL              220000  \r
+SV0             001127' \r
+SV1             001115' \r
+SVAC            001130' \r
+SVCNTR          001141' \r
+TAC             000001  INT\r
+TAC1            000002  INT\r
+TEM             000010  INT\r
+THSDAT          000046' EXT\r
+TTYATC          020000  INT\r
+TTYUSE          010000  INT\r
+UBEG            000343' INT\r
+UBEG2           000350' \r
+UBEG3           000370' \r
+UBEGX           000366' \r
+\r\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING                 PAGE 22-4\r
+        SYMBOL TABLE\r
+\r
+UBKN            001117' \r
+UBLK            000001  \r
+UBUF            001121' INT\r
+UCHA            000042  \r
+UCHN            000001  \r
+UDIR            000364' EXT\r
+UDIR2           000016' \r
+UDIR3           000022' \r
+UDIR4           000026' \r
+UDIREN          000200  \r
+UDIRIN          000100  \r
+UDIRK1          000034' \r
+UDIRLN          000004  \r
+UDIRSH          000000' \r
+UDMP            001125' \r
+UDMP0           000640' INT\r
+UDMP1           000641' \r
+UDMP1A          000674' \r
+UDMP1B          000676' \r
+UDMP1C          000712' \r
+UDMP2           000723' \r
+UDMPA           001126' \r
+UDMPI           001022' INT\r
+UDMPI2          001033' \r
+UDMPO           000633' \r
+UDMPRB          001053' \r
+UDVDAT          001122' \r
+UEND            000236' \r
+UEND2           000242' \r
+UENTER          000052' INT\r
+UERRCN          001153' \r
+UFREE           001064' EXT\r
+UIN             000204' \r
+UIN1            000217' \r
+UIN2            000251' \r
+UIN3            000254' \r
+UIN4            000265' \r
+UINTER          001142' \r
+ULINKF          001000  \r
+ULOOK           000035' INT\r
+ULOOK1          000041' \r
+UNIT            001116' \r
+UNWFRE          000400  \r
+UOFF            000615' \r
+UOUT            000125' \r
+UOUT1           000144' \r
+UOUT2           000153' \r
+UOUT3           000167' \r
+UOUT4           000171' \r
+UPROG           001120' \r
+URDIR           002000  \r
+UREV            010000  \r
+USETR           000377' \r
+\r\fDTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING                 PAGE 22-5\r
+        SYMBOL TABLE\r
+\r
+USETW           000375' \r
+USRJDA          000064' EXT\r
+USRMOD          010000  INT\r
+USRREL          001026' EXT\r
+USVDB           001151' \r
+USVIOS          001152' \r
+UTBERR          000373' \r
+UTBKER          000374' EXT\r
+UTC             000210  SPD\r
+UTDSP           000112' ENT\r
+UTIME           001244' \r
+UTPCLR          000063' INT\r
+UTPCLS          000312' INT\r
+UTPREL          000326' INT\r
+UTPRL1          000330' \r
+UTS             000214  SPD\r
+UTWDR           000311' INT\r
+UUO             000014  INT\r
+UX1             000001  \r
+UX2             000002  \r
+UX3             000005  \r
+UXIT            000311' EXT\r
+VEOT            000002  \r
+WAIT1           000342' EXT\r
+WD              000700  \r
+WSYNC           000363' EXT\r
+WTDA            000523' \r
+WTFW            000563' \r
+WTRM            000537' \r
+WTRV            000555' \r
+\fEEEEEEEEEEEEEEE      RRRRRRRRRRRR         RRRRRRRRRRRR            CCCCCCCCCCCC         OOOOOOOOO         NNN         NNN\r
+EEEEEEEEEEEEEEE      RRRRRRRRRRRR         RRRRRRRRRRRR            CCCCCCCCCCCC         OOOOOOOOO         NNN         NNN\r
+EEEEEEEEEEEEEEE      RRRRRRRRRRRR         RRRRRRRRRRRR            CCCCCCCCCCCC         OOOOOOOOO         NNN         NNN\r
+EEE                  RRR         RRR      RRR         RRR      CCC                  OOO         OOO      NNN         NNN\r
+EEE                  RRR         RRR      RRR         RRR      CCC                  OOO         OOO      NNN         NNN\r
+EEE                  RRR         RRR      RRR         RRR      CCC                  OOO         OOO      NNN         NNN\r
+EEE                  RRR         RRR      RRR         RRR      CCC                  OOO         OOO      NNNNNN      NNN\r
+EEE                  RRR         RRR      RRR         RRR      CCC                  OOO         OOO      NNNNNN      NNN\r
+EEE                  RRR         RRR      RRR         RRR      CCC                  OOO         OOO      NNNNNN      NNN\r
+EEEEEEEEEEEE         RRRRRRRRRRRR         RRRRRRRRRRRR         CCC                  OOO         OOO      NNN   NNN   NNN\r
+EEEEEEEEEEEE         RRRRRRRRRRRR         RRRRRRRRRRRR         CCC                  OOO         OOO      NNN   NNN   NNN\r
+EEEEEEEEEEEE         RRRRRRRRRRRR         RRRRRRRRRRRR         CCC                  OOO         OOO      NNN   NNN   NNN\r
+EEE                  RRR   RRR            RRR   RRR            CCC                  OOO         OOO      NNN      NNNNNN\r
+EEE                  RRR   RRR            RRR   RRR            CCC                  OOO         OOO      NNN      NNNNNN\r
+EEE                  RRR   RRR            RRR   RRR            CCC                  OOO         OOO      NNN      NNNNNN\r
+EEE                  RRR      RRR         RRR      RRR         CCC                  OOO         OOO      NNN         NNN\r
+EEE                  RRR      RRR         RRR      RRR         CCC                  OOO         OOO      NNN         NNN\r
+EEE                  RRR      RRR         RRR      RRR         CCC                  OOO         OOO      NNN         NNN\r
+EEEEEEEEEEEEEEE      RRR         RRR      RRR         RRR         CCCCCCCCCCCC         OOOOOOOOO         NNN         NNN\r
+EEEEEEEEEEEEEEE      RRR         RRR      RRR         RRR         CCCCCCCCCCCC         OOOOOOOOO         NNN         NNN\r
+EEEEEEEEEEEEEEE      RRR         RRR      RRR         RRR         CCCCCCCCCCCC         OOOOOOOOO         NNN         NNN\r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  11:23:08\r
+File: DSKB1 :ERRCON.LST   [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:20
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:2524 \r
+File will be deleted after printing\r
+\f\rERRCON - ERROR HANDLING ROUTINE FOR MONITOR DECTECTED ERRORS                 PAGE 1\r
+        8-9-65\r
+\r
+                                00010           XLIST\r
+                                01930          LIST\r
+\r\fERRCON - ERROR HANDLING ROUTINE FOR MONITOR DECTECTED ERRORS                 PAGE 7\r
+        8-9-65\r
+\r
+\r
+                                00010   TITLE ERRCON - ERROR HANDLING ROUTINE FOR MONITOR DECTECTED ERRORS\r
+                                00020   SUBTTL  8-9-65\r
+                                00030   EXTERNAL APRCHL,APRRET,HOLD,HOLDI,APRCHN\r
+                                00040   EXTERNAL JOB,JOBADR,JOBREL,TTYFND,TTYCTR,TTYSTR\r
+                                00050   EXTERNAL JBTADR, UXIT,JOBPDP,JOBTRP,USRPDP,UBUF,PJOBN\r
+                                00060   EXTERNAL CPOPJ,HOLDI1,WAIT1,USRPOV,JOBPFI\r
+                                00070   EXTERNAL CRLF,MJOBPD,JOBPDL,CPOPJ1\r
+\r\fERRCON - ERROR HANDLING ROUTINE FOR MONITOR DECTECTED ERRORS                 PAGE 2\r
+        8-9-65\r
+\r
+\r
+                                00100   ;CALL:    PUSHJ PDP,ADRCK\r
+                                00110   ;                   HRRZ TAC,LOC\r
+                                00120   ;                   OK RETURN\r
+\r
+                                00140             INTERNAL ADRCK\r
+\r
+        000000' 261140  000001  00160   ADRCK:    PUSH PDP, TAC\r
+        000001' 256023  777777  00170             XCT @-1(PDP)\r
+        000002' 350003  777777  00180             AOS -1(PDP)\r
+        000003' 261140  000002  00190             PUSH PDP,TAC1\r
+        000004' 135100  000000* 00200             LDB TAC1,PJOBN\r
+        000005' 554102  000000* 00210             HLRZ TAC1,JBTADR(TAC1)\r
+        000006' 303040  000000* 00220             CAILE TAC,JOBPFI      ;IN IO PROTECTED PART OF DATA AREA?\r
+        000007' 313040  000002  00230             CAMLE TAC,TAC1        ;NO,IS IT GREATER THAN PROTECTION?\r
+        000010' 260140  000014' 00240             PUSHJ PDP,ADRERR      ;YES\r
+        000011' 262140  000002  00250             POP PDP,TAC1          ;NO\r
+        000012' 262140  000001  00260             POP PDP, TAC\r
+        000013' 263140  000000  00270             POPJ PDP,\r
+\r\fERRCON - ERROR HANDLING ROUTINE FOR MONITOR DECTECTED ERRORS                 PAGE 3\r
+        8-9-65\r
+\r
+\r
+                                00300             INTERNAL ADRERR\r
+\r
+        000014' 550100  000003  00320   ADRERR:   HRRZ TAC1,PDP\r
+        000015' 317100  000000* 00330             CAMG TAC1,JOBADR      ;IS THIS ERROR AT UUO OR INTERRUPT SERV\r
+        000016' 254000  000027' 00340             JRST ADRERI           ;INTERRUPT SERVICE LEVEL\r
+        000017' 265040  000231' 00350             JSP TAC,ERRPTU\r
+        000020' 440700  000023' 00360             POINT 7,AERM1\r
+        000021' 260140  000155' 00370             PUSHJ PDP,ERNAM\r
+        000022' 254000  000207' 00380             JRST ERSYC1\r
+\r
+        000023' 406110  451212  00400   AERM1:    ASCIZ /ADDRESS CHECK FOR /\r
+        000024' 516464  041620\r
+        000025' 426071  320214\r
+        000026' 476444  000000\r
+\r
+        000027' 135200  000004* 00420   ADRERI:   LDB ITEM, PJOBN\r
+        000030' 265040  000232' 00430             JSP TAC,ERRPNT\r
+        000031' 440700  000023' 00440             POINT 7,AERM1\r
+        000032' 260140  000155' 00450             PUSHJ PDP,ERNAM\r
+        000033' 201100  000045' 00460             MOVEI TAC1,AERM3\r
+        000034' 260140  000333' 00470             PUSHJ PDP,MESPNT\r
+        000035' 250303  000000  00480   ADRER2:   EXCH DEVDAT, (PDP)    ;GET ADDRESS OF D.D. BLOCK DECTECTING ER\r
+        000036' 135040  000422' 00490             LDB TAC, [POINT 3, DEVCHR(DEVDAT), 11]  ;GET PI CHANNEL NO.\r
+        000037' 261140  000001  00500             PUSH PDP, TAC                 ;AND SAVE\r
+        000040' 200046  000003  00510             MOVE TAC,DEVSER(DEVDAT)\r
+        000041' 260141  000000  00520             PUSHJ PDP,DRL(TAC)    ;RELEASE DEVICE\r
+        000042' 262140  000001  00530             POP PDP, TAC          ;RESTORE PI CHANNEL NO.\r
+        000043' 250303  000000  00540             EXCH DEVDAT,(PDP)\r
+        000044' 254000  000000* 00550             JRST HOLDI                    ;AND GO DISMISS CHANNEL\r
+\r
+        000045' 202112  551222  00570   AERM3:    ASCIZ / DURING INTERRUPT/\r
+        000046' 472164  044634\r
+        000047' 522132  251252\r
+        000050' 502500  000000\r
+\r\fERRCON - ERROR HANDLING ROUTINE FOR MONITOR DECTECTED ERRORS                 PAGE 4\r
+        8-9-65\r
+\r
+\r
+                                00600             INTERNAL APRILM\r
+                                00610             EXTERNAL USRREL\r
+\r
+                        200000  00630             POVF=200000\r
+                        400000  00640             POVC=400000\r
+                        010000  00650             NXM=10000\r
+                        020000  00660             ILM=20000\r
+\r
+        000051' 201040  000000* 00680   APRILM:   MOVEI TAC,APRCHN\r
+        000052' 700340  020000  00690             CONSO APR,ILM\r
+        000053' 254000  000100' 00700             JRST APRNXM\r
+        000054' 700201  020000  00710             CONO APR,ILM(TAC)\r
+        000055' 550040  000000* 00720             HRRZ TAC,APRCHL\r
+        000056' 313040  000000* 00730             CAMLE TAC, USRREL\r
+        000057' 254000  000064' 00740             JRST APRJRS\r
+        000060' 265040  000231' 00750             JSP TAC,ERRPTU\r
+        000061' 440700  000070' 00760             POINT 7,APM1\r
+        000062' 260140  000144' 00770   APRIL1:   PUSHJ PDP,EPTADR\r
+        000063' 254000  000132' 00780             JRST APRDMS           ;GO DISMISS APR CHANNEL\r
+\r
+        000064' 265040  000231' 00800   APRJRS:   JSP TAC,ERRPTU\r
+        000065' 440700  000073' 00810             POINT 7,APM2\r
+        000066' 260140  000144' 00820             PUSHJ PDP,EPTADR\r
+        000067' 254000  000132' 00830             JRST APRDMS\r
+\r
+        000070' 446311  420232  00850   APM1:     ASCIZ /ILL MEM REF/\r
+        000071' 426324  051212\r
+        000072' 430000  000000\r
+\r
+        000073' 502064  042660  00870   APM2:     ASCIZ /PC EXCEEDS MEM BOUND/\r
+        000074' 416130  542246\r
+        000075' 202330  546500\r
+        000076' 412372  547210\r
+        000077' 000000  000000\r
+\r
+\r
+\r
+\r
+        000100' 700340  010000  00920   APRNXM:   CONSO APR,NXM\r
+        000101' 254000  000111' 00930             JRST APRPDL\r
+        000102' 700201  010000  00940             CONO APR,NXM(TAC)\r
+        000103' 265040  000231' 00950             JSP TAC,ERRPTU\r
+        000104' 440700  000106' 00960             POINT 7,APM3\r
+        000105' 254000  000062' 00970             JRST APRIL1\r
+\r
+        000106' 472371  620212  00990   APM3:     ASCIZ /NON EX MEM/\r
+        000107' 541011  542632\r
+        000110' 000000  000000\r
+\r
+\r\fERRCON - ERROR HANDLING ROUTINE FOR MONITOR DECTECTED ERRORS                 PAGE 5\r
+        8-9-65\r
+\r
+\r
+        000111' 700340  200000  01030   APRPDL:   CONSO APR,POVF\r
+        000112' 265240  000202' 01040             JSP DAT, ERROR        ;NOT APR, MUST BE HARDWARE PROB.\r
+        000113' 700201  400000  01050             CONO APR,POVC(TAC)\r
+        000114' 200040  000055* 01060             MOVE TAC,APRCHL\r
+        000115' 332100  000000* 01070             SKIPE TAC1,USRPOV\r
+        000116' 607040  010000  01080             TLNN TAC,10000        ;WAS OVF IN USER MODE?\r
+        000117' 254000  000122' 01090             JRST PDLOV                    ;NO, GO PRINT MESSAGE\r
+        000120' 542100  000114* 01100             HRRM TAC1,APRCHL      ;RESET RETURN\r
+        000121' 254000  000000* 01110             JRST APRRET                   ;DISMISS CLOCK\r
+        000122' 265040  000231' 01120   PDLOV:    JSP TAC,ERRPTU\r
+        000123' 440700  000134' 01130             POINT 7,APM4\r
+        000124' 260140  000144' 01140             PUSHJ PDP,EPTADR\r
+        000125' 200040  000120* 01150             MOVE TAC,APRCHL\r
+        000126' 603040  010000  01160             TLNE TAC,10000\r
+        000127' 254000  000132' 01170             JRST APRDMS           ;GO DISMISS APR CHANNEL\r
+        000130' 201100  000225' 01180             MOVEI TAC1,ERMS1\r
+        000131' 260140  000340' 01190             PUSHJ PDP,MESPC\r
+        000132' 201040  000000  01200   APRDMS:   MOVEI TAC, 0          ;SET TO DISMISS APR CHANNEL\r
+        000133' 254000  000000* 01210             JRST HOLDI1\r
+\r
+        000134' 502111  420236  01230   APM4:     ASCIZ .PDL OV.\r
+        000135' 530000  000000\r
+\r
+        000136' 202032  420212  01250   APMSYS:   ASCIZ / AT EXEC LOC /\r
+        000137' 542130  320230\r
+        000140' 476064  000000\r
+\r
+\r
+        000141' 202032  420252  01280   APMUSR:   ASCIZ / AT USER LOC /\r
+        000142' 516132  220230\r
+        000143' 476064  000000\r
+\r
+\r
+        000144' 200040  000125* 01310   EPTADR:   MOVE TAC,APRCHL\r
+        000145' 261140  000001  01320   EPTAD1:   PUSH PDP,TAC          ;PPRINT "AT EXEC LOC " OR "AT USER LOC"\r
+        000146' 201100  000136' 01330             MOVEI TAC1,APMSYS\r
+        000147' 603040  010000  01340             TLNE TAC,10000\r
+        000150' 201100  000141' 01350             MOVEI TAC1,APMUSR\r
+        000151' 260140  000333' 01360             PUSHJ PDP,MESPNT\r
+        000152' 262140  000001  01370             POP PDP,TAC\r
+        000153' 405040  777777  01380             ANDI TAC,-1\r
+        000154' 254000  000344' 01390             JRST OCTPNT\r
+\r\fERRCON - ERROR HANDLING ROUTINE FOR MONITOR DECTECTED ERRORS                 PAGE 6\r
+        8-9-65\r
+\r
+\r
+                                01420             INTERNAL ERNAM\r
+\r
+\r
+        000155' 201100  000167' 01450   ERNAM:    MOVEI TAC1,ERRDEV\r
+        000156' 260140  000333' 01460             PUSHJ PDP,MESPNT\r
+        000157' 200100  000423' 01470             MOVE TAC1,[POINT 6,@-(PDP)]\r
+        000160' 201000  000006  01480             MOVEI 0,6\r
+        000161' 134040  000002  01490   ERNAM1:   ILDB TAC,TAC1\r
+        000162' 322040  000166' 01500             JUMPE TAC,.+4\r
+        000163' 271040  000240  01510             ADDI TAC,240\r
+        000164' 136040  000005  01520             IDPB TAC,DAT\r
+        000165' 367000  000161' 01530             SOJG 0,ERNAM1\r
+        000166' 263140  000000  01540             POPJ PDP,\r
+\r
+        000167' 422132  644606  01560   ERRDEV:   ASCIZ /DEVICE /\r
+        000170' 425000  000000\r
+\r
+                                01580   INTERNAL DIRERR\r
+\r
+        000171' 262140  000000  01600   DIRERR:   POP PDP,0 ;FLUSH RETURN ADDRESS\r
+        000172' 265040  000231' 01610             JSP TAC,ERRPTU\r
+        000173' 440700  000176' 01620             POINT 7,DIRER1\r
+        000174' 260140  000155' 01630             PUSHJ PDP,ERNAM\r
+        000175' 254000  000207' 01640             JRST ERSYC1\r
+\r
+        000176' 412030  420210  01660   DIRER1:   ASCIZ /BAD DIRECTORY FOR /\r
+        000177' 446450  541650\r
+        000200' 476453  120214\r
+        000201' 476444  000000\r
+\r\fERRCON - ERROR HANDLING ROUTINE FOR MONITOR DECTECTED ERRORS                 PAGE 7\r
+        8-9-65\r
+\r
+\r
+                                01690   ;         INTERNAL ERRDIS\r
+\r
+                                01710   ;ERRDIS:  LDB TAC,[POINT 4,DEVCHR(DEVDAT),17]\r
+                                01720   ;         ADDI TAC,ERRC2\r
+                                01730   ;         SKIPL TAC1,@TAC\r
+                                01740   ;         JRST 4,.\r
+                                01750   ;         TLZ TAC1,400000\r
+                                01760   ;         MOVEM TAC1,@TAC\r
+                                01770   ;         MOVE PDP,JOBPDP(PROG)\r
+                                01780   ;         MOVE TAC,@TAC\r
+                                01790   ;         HRLI TAC,PROG\r
+                                01800   ;         MOVE TAC,@TAC\r
+                                01810   ;         HLL TAC,1(PDP)\r
+                                01820   ;         PUSH PDP,TAC\r
+                                01830   ;         JRST UXIT\r
+\r
+                                01850   ;ERRC2:   XWD PROG,JOBTRP\r
+\r\fERRCON - ERROR HANDLING ROUTINE FOR MONITOR DECTECTED ERRORS                 PAGE 8\r
+        8-9-65\r
+\r
+\r
+                                01880   ;UNEXPLAINED ERROR ENTRY\r
+                                01890   ;CALL:    JSP DAT, ERROR\r
+\r
+                                01910   INTERNAL ERROR\r
+                                01920   EXTERNAL JOBPD1\r
+\r
+        000202' 201200  000001  01940   ERROR:    MOVEI ITEM,1          ;PRINT ON OPERATORS CONSOLE(JOB 1)\r
+        000203' 265040  000232' 01950             JSP TAC,ERRPNT\r
+        000204' 440700  000220' 01960             POINT 7,ERR1\r
+        000205' 550043  777776  01970             HRRZ TAC,-2(PDP)      ;GET LOC OF CALL TO ERROR\r
+        000206' 260140  000342' 01980   EPOCT:    PUSHJ PDP,PCPNT\r
+        000207' 201100  000225' 01990   ERSYC1:   MOVEI TAC1,ERMS1\r
+\r
+        000210' 260140  000340' 02010   ERSYCL:   PUSHJ PDP,MESPC\r
+        000211' 254000  000000* 02020             JRST HOLD\r
+\r
+        000212' 260140  000333' 02040   EPCAD0:   PUSHJ PDP,MESPNT      ;PRINT MESS\r
+        000213' 260140  000216' 02050   EPCAD1:   PUSHJ PDP,EPCAD       ;PRINT LAST USER CALL TO MONITOR\r
+        000214' 254000  000211* 02060             JRST HOLD\r
+\r
+        000215' 260140  000333' 02080   EPCADR:   PUSHJ PDP,MESPNT\r
+        000216' 200051  000000* 02090   EPCAD:    MOVE TAC, JOBPD1(JDAT)        ;GET LAST USER UUO CALL\r
+        000217' 364040  000145' 02100             SOJA TAC,EPTAD1\r
+\r
+        000220' 426452  247644  02120   ERR1:     ASCIZ /ERROR IN MONITOR AT /\r
+        000221' 202231  620232\r
+        000222' 476351  152236\r
+        000223' 511010  152100\r
+        000224' 000000  000000\r
+        000225' 355010  554212  02130   ERMS1:    ASCIZ /; EXEC CALLED FROM /\r
+        000226' 415010  340630\r
+        000227' 462130  420214\r
+        000230' 512371  520000\r
+\r\fERRCON - ERROR HANDLING ROUTINE FOR MONITOR DECTECTED ERRORS                 PAGE 9\r
+        8-9-65\r
+\r
+\r
+                                02160   ;ERROR SETUP ROUTINE\r
+                                02170   ;CALL:    MOVE ITEM, JOBNUMBER\r
+                                02180   ;         MOVE DEVDAT, DEVICE DATA BLOCK IF DEVICE ERROR\r
+                                02190   ;         JSP TAC, ERRPNT\r
+                                02200   ;         POINT 7, ERROR MESSAGE\r
+                                02210   ;         RETURN\r
+\r
+\r
+                                02240             INTERNAL ERRPNT,ERRPTU\r
+\r
+        000231' 200200  000000* 02260   ERRPTU:   MOVE ITEM,JOB\r
+        000232' 200344  000005* 02270   ERRPNT:   MOVE PROG,JBTADR(ITEM)\r
+        000233' 200444  000232* 02280             MOVE JDAT,JBTADR(ITEM)        ;GET ADDRESS OF JOB DATA AREA\r
+        000234' 322440  000240' 02290             JUMPE JDAT, ERRPD     ;SET UP PDP IN USER AREA IF HE HAS CORE\r
+        000235' 205140  000000* 02300             MOVSI PDP, MJOBPD\r
+        000236' 541151  000000* 02310             HRRI PDP, JOBPDL(JDAT)\r
+\r
+        000237' 253140  000240' 02330             AOBJN PDP, .+1                ;LEAVE ROOM FOR UUO RETURN\r
+        000240' 261140  000005  02340   ERRPD:    PUSH PDP, DAT         ;SAVE CLALL TO ERROR SUB\r
+        000241' 261140  000006  02350             PUSH PDP, DEVDAT\r
+        000242' 261140  000001  02360             PUSH PDP, TAC                 ;SAVE RETURN\r
+        000243' 260140  000000* 02370             PUSHJ PDP, TTYFND\r
+        000244' 201100  000254' 02380             MOVEI TAC1,SYSERR\r
+        000245' 260140  000333' 02390             PUSHJ PDP,MESPNT\r
+        000246' 200040  000004  02400             MOVE TAC, ITEM\r
+        000247' 260140  000362' 02410             PUSHJ PDP,RADX10\r
+        000250' 260140  000000* 02420             PUSHJ PDP, CRLF               ;PRINT CRLF\r
+        000251' 200123  000000  02430             MOVE TAC1, @(PDP)\r
+        000252' 260140  000333' 02440             PUSHJ PDP, MESPNT\r
+        000253' 254000  000000* 02450             JRST CPOPJ1\r
+\r
+        000254'                 02470   SYSERR:   ASCIZ /\r
+        000254' 064250  551244  02480   ERROR IN JOB /\r
+        000255' 476444  044634\r
+        000256' 202251  741100\r
+        000257' 000000  000000\r
+\r\fERRCON - ERROR HANDLING ROUTINE FOR MONITOR DECTECTED ERRORS                 PAGE 10\r
+        8-9-65\r
+\r
+\r
+                                02510   ,ERROR TRAP HANDLING\r
+\r
+                                02530   ;ERRTRP:  LDB TAC,[POINT 4,DEVCHR(DEVDAT),17]\r
+                                02540   ;         ADDI TAC,ERRC2\r
+                                02550   ;         SKIPG TAC1,@TAC\r
+                                02560   ;         TLO TAC1,400000\r
+                                02570   ;         MOVEM TAC1,@TAC\r
+                                02580   ;         AOS       TAC\r
+                                02590   ;         MOVE PDP,JOBPDP(PROG)\r
+                                02600   ;         AOS       TAC\r
+                                02610   ;         MOVE TAC1,1(PDP)\r
+                                02620   ;         PUSH PDP,TAC\r
+                                02630   ;         HLL TAC1,0(PDP)\r
+                                02640   ;         HRLI TAC1,PROG\r
+                                02650   ;         MOVEM TAC,@TAC1\r
+                                02660   ;         JRST UXIT\r
+\r\fERRCON - ERROR HANDLING ROUTINE FOR MONITOR DECTECTED ERRORS                 PAGE 11\r
+        8-9-65\r
+\r
+\r
+                                02690             INTERNAL ILLINP\r
+\r
+        000260' 265040  000231' 02710   ILLINP:   JSP TAC,ERRPTU\r
+        000261' 440700  000270' 02720             POINT 7,ILLOT\r
+        000262' 260140  000155' 02730             PUSHJ PDP,ERNAM\r
+        000263' 265100  000212' 02740             JSP TAC1, EPCAD0\r
+        000264' 202070  147234  02750   ASCIZ / CANNOT DO INPUT/\r
+        000265' 476504  042236\r
+        000266' 202231  650252\r
+        000267' 520000  000000\r
+\r
+        000270' 476532  450252  02770   ILLOT:    ASCIZ /OUTPUT /\r
+        000271' 521000  000000\r
+\r
+\r
+                                02800             INTERNAL ILLINS\r
+\r
+        000272' 265040  000231' 02820   ILLINS:   JSP TAC,ERRPTU\r
+        000273' 440700  000275' 02830             POINT 7,ERRIL\r
+        000274' 254000  000213' 02840             JRST EPCAD1\r
+\r
+        000275' 446311  420222  02860   ERRIL:    ASCIZ /ILL INST/\r
+        000276' 472472  400000\r
+\r\fERRCON - ERROR HANDLING ROUTINE FOR MONITOR DECTECTED ERRORS                 PAGE 12\r
+        8-9-65\r
+\r
+\r
+                                02890           INTERNAL ILLMOD\r
+\r
+        000277' 265040  000231' 02910   ILLMOD: JSP TAC,ERRPTU\r
+        000300' 440700  000303' 02920           POINT 7,ILLMO1\r
+        000301' 260140  000155' 02930           PUSHJ PDP,ERNAM\r
+        000302' 254000  000213' 02940           JRST EPCAD1\r
+\r
+        000303' 446311  420210  02960   ILLMO1: ASCIZ /ILL DEVICE DATA MODE FOR /\r
+        000304' 426551  141612\r
+        000305' 202110  152202\r
+        000306' 202331  742212\r
+        000307' 202151  751100\r
+        000310' 000000  000000\r
+\r
+                                02980           INTERNAL ILLOUT\r
+\r
+        000311' 265040  000231' 03000   ILLOUT: JSP TAC,ERRPTU\r
+        000312' 440700  000321' 03010           POINT 7,ILLIN\r
+        000313' 260140  000155' 03020           PUSHJ PDP,ERNAM\r
+        000314' 265100  000212' 03030           JSP TAC1,EPCAD0\r
+\r
+        000315' 202070  147234  03050   ILM3:           ASCIZ / CANNOT DO OUTPUT/\r
+        000316' 476504  042236\r
+        000317' 202372  552240\r
+        000320' 526500  000000\r
+\r
+        000321' 446352  052650  03070   ILLIN:  ASCIZ /INPUT /\r
+        000322' 200000  000000\r
+                                03080   INTERNAL IOIERR\r
+\r
+        000323' 265040  000231' 03100   IOIERR: JSP TAC,ERRPTU\r
+        000324' 440700  000326' 03110           POINT 7,IOIER1\r
+        000325' 254000  000213' 03120           JRST EPCAD1\r
+\r
+        000326' 446364  052236  03140   IOIER1: ASCIZ /IO TO UNASSIGNED CHANNEL/\r
+        000327' 202531  640646\r
+        000330' 516230  747212\r
+        000331' 421010  344202\r
+        000332' 472350  546000\r
+\r
+                                03160   ,CALL WITH DEST. POINTER IN DAT\r
+                                03170   ,SOURCE POINTER IN TAC1\r
+                                03180   ,MOVES UNTIL A ZERO CHAR. IS FOUND\r
+\r
+                                03200           INTERNAL MESPNT\r
+        000333' 505100  440700  03210   MESPNT: HRLI TAC1,440700\r
+        000334' 134040  000002  03220   MES1:   ILDB TAC, TAC1\r
+        000335' 322040  000000* 03230           JUMPE TAC,CPOPJ\r
+        000336' 136040  000005  03240           IDPB TAC, DAT\r
+        000337' 254000  000334' 03250           JRST MES1\r
+\r
+                                03270   ,ANY RADIX PRINT\r
+\r\fERRCON - ERROR HANDLING ROUTINE FOR MONITOR DECTECTED ERRORS                 PAGE 12-1\r
+        8-9-65\r
+\r
+                                03280   ,  TAC1 = RADIX\r
+                                03290   ,  DAT = BYTE POINTER\r
+                                03300   ,  TAC = NUMBER\r
+\r
+                                03320           INTERNAL OCTPNT, ANYRDX, PCPNT\r
+                                03330           EXTERNAL UUO0,JOBPD1\r
+\r
+        000340' 260140  000333' 03350   MESPC:  PUSHJ PDP, MESPNT       ;PRINT LAST USER UUO CALL\r
+        000341' 550051  000216* 03360           HRRZ TAC,JOBPD1(JDAT)\r
+        000342' 275040  000001  03370   PCPNT:  SUBI TAC,1\r
+        000343' 404040  777777  03380           AND TAC,-1\r
+        000344' 201100  000010  03390   OCTPNT: MOVEI TAC1,10\r
+        000345' 261140  000004  03400   ANYRDX: PUSH PDP,ITEM\r
+        000346' 552100  000004  03410           HRRZM TAC1, ITEM\r
+        000347' 260140  000352' 03420           PUSHJ PDP,OCTP1\r
+        000350' 262140  000004  03430           POP PDP,ITEM\r
+        000351' 263140  000000  03440           POPJ PDP,\r
+\r
+        000352' 230040  000004  03460   OCTP1:  IDIV TAC,ITEM\r
+        000353' 506103  000000  03470           HRLM TAC1, (PDP)\r
+        000354' 322040  000356' 03480           JUMPE TAC, .+2\r
+        000355' 260140  000352' 03490           PUSHJ PDP, OCTP1\r
+        000356' 554043  000000  03500           HLRZ TAC, (PDP)\r
+        000357' 271040  000060  03510           ADDI TAC, "0"\r
+        000360' 136040  000005  03520           IDPB TAC, DAT\r
+        000361' 263140  000000  03530           POPJ PDP,\r
+\r
+                                03550   INTERNAL RADX10\r
+\r
+        000362' 261140  000002  03570   RADX10: PUSH PDP,TAC1   ;OUTPUT DECIMAL\r
+        000363' 201100  000012  03580           MOVEI TAC1,12\r
+        000364' 260140  000345' 03590           PUSHJ PDP,ANYRDX\r
+        000365' 262140  000002  03600           POP PDP,TAC1\r
+        000366' 263140  000000  03610           POPJ PDP,\r
+\r
+                                03630   REPEAT 0,<\r
+                                03640   PCPNT:  SUBI TAC,1\r
+                                03650   OCTPNT: HRLZ TAC1,TAC\r
+                                03660     MOVSI TAC,-1\r
+                                03670    LSHC TAC,3\r
+                                03680     TRNN TAC,7\r
+                                03690      JUMPN TAC1,.-2\r
+                                03700   OCTPN1: ADDI TAC,"0"\r
+                                03710     IDPB TAC,DAT\r
+                                03720     JUMPGE TAC,CPOPJ\r
+                                03730     HLLZS TAC\r
+                                03740     LSHC TAC,3\r
+                                03750     JRST OCTPN1\r
+                                03760   >\r
+\r
+                                03780           INTERNAL UTBKER\r
+        000367' 135200  000027* 03790   UTBKER: LDB ITEM,PJOBN  ;JOB NUMBER\r
+        000370' 265040  000232' 03800           JSP TAC,ERRPNT\r
+\r\fERRCON - ERROR HANDLING ROUTINE FOR MONITOR DECTECTED ERRORS                 PAGE 12-2\r
+        8-9-65\r
+\r
+        000371' 440700  000401' 03810           POINT 7,UTERM\r
+        000372' 200040  000000* 03820           MOVE TAC,UBUF\r
+        000373' 275047  000000  03830           SUBI TAC,(PROG)\r
+        000374' 260140  000344' 03840           PUSHJ PDP,OCTPNT\r
+        000375' 201100  000424' 03850           MOVEI TAC1, [ASCII / /]\r
+        000376' 260140  000333' 03860           PUSHJ PDP, MESPNT\r
+        000377' 260140  000155' 03870           PUSHJ PDP,ERNAM\r
+        000400' 254000  000035' 03880           JRST ADRER2\r
+\r
+        000401' 446311  420210  03900   UTERM:  ASCIZ /ILL DT BLOCK NO. , BUFFER AT /\r
+        000402' 521010  246236\r
+        000403' 416264  047236\r
+        000404' 271005  420204\r
+        000405' 526150  642644\r
+        000406' 202032  420000\r
+\r
+                                03920           INTERNAL UUOERR\r
+                                03930           EXTERNAL UUO0\r
+\r
+        000407' 265040  000231' 03950   UUOERR: JSP TAC,ERRPTU\r
+        000410' 440700  000416' 03960           POINT 7,UUOER1\r
+        000411' 200040  000000* 03970           MOVE TAC, UUO0  ;UUO PC\r
+        000412' 603040  010000  03980           TLNE TAC, 10000 ;WAS IT FROM USER?\r
+        000413' 254000  000213' 03990           JRST EPCAD1     ;YES, JUST PRINT LOC OF CALL\r
+        000414' 260140  000145' 04000           PUSHJ PDP,EPTAD1        ;NO, PRINT BOTH EXEC CALL\r
+        000415' 254000  000207' 04010           JRST ERSYC1     ;AND USER CALL\r
+\r
+        000416' 446311  420240  04030   UUOER1: ASCIZ /ILL PROG. OP. USED/\r
+        000417' 512370  727100\r
+        000420' 476405  620252\r
+        000421' 516130  400000\r
+                                04040           END,\r
+        000422' 300306  000001\r
+        000423' 440623  000000\r
+        000424' 200000  000000\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 000425\r
+\r
+8K CORE USED\r
+\r\fERRCON - ERROR HANDLING ROUTINE FOR MONITOR DECTECTED ERRORS                 PAGE 13\r
+        SYMBOL TABLE\r
+\r
+                000320  \r
+A               000000  INT\r
+AC1             000015  INT\r
+AC2             000016  INT\r
+AC3             000017  INT\r
+ADRCK           000000' INT\r
+ADRER2          000035' \r
+ADRERI          000027' \r
+ADRERR          000014' INT\r
+AERM1           000023' \r
+AERM3           000045' \r
+AL              000001  INT\r
+ANYRDX          000345' INT\r
+APM1            000070' \r
+APM2            000073' \r
+APM3            000106' \r
+APM4            000134' \r
+APMSYS          000136' \r
+APMUSR          000141' \r
+APR             000000  SPD\r
+APRCHL          000144' EXT\r
+APRCHN          000051' EXT\r
+APRDMS          000132' \r
+APRIL1          000062' \r
+APRILM          000051' INT\r
+APRJRS          000064' \r
+APRNXM          000100' \r
+APRPDL          000111' \r
+APRRET          000121' EXT\r
+ASSCON          400000  INT\r
+ASSPRG          200000  INT\r
+B               000014  INT\r
+BUFPNT          000012  INT\r
+BUFWRD          000013  INT\r
+CLOSB           002000  INT\r
+CLSIN           000002  INT\r
+CLSOUT          000001  INT\r
+CPOPJ           000335' EXT\r
+CPOPJ1          000253' EXT\r
+CRLF            000250' EXT\r
+D               000017  INT\r
+DAT             000005  INT\r
+DCL             000001  INT\r
+DCW             020000  INT\r
+DDI             000007  INT\r
+DDO             000006  INT\r
+DDTMEM          000037  INT\r
+DDTSYM          000036  INT\r
+DEN             000004  INT\r
+DEVADR          000007  INT\r
+DEVBUF          000006  INT\r
+DEVCHR          000001  INT\r
+DEVCTR          000011  INT\r
+\r\fERRCON - ERROR HANDLING ROUTINE FOR MONITOR DECTECTED ERRORS                 PAGE 13-1\r
+        SYMBOL TABLE\r
+\r
+DEVDAT          000006  INT\r
+DEVIAD          000007  INT\r
+DEVIOS          000002  INT\r
+DEVLOG          000005  INT\r
+DEVMOD          000004  INT\r
+DEVNAM          000000  INT\r
+DEVOAD          000010  INT\r
+DEVPTR          000010  INT\r
+DEVSER          000003  INT\r
+DGF             000012  INT\r
+DIN             000003  INT\r
+DIRER1          000176' \r
+DIRERR          000171' INT\r
+DLK             000005  INT\r
+DOU             000002  INT\r
+DR              000016  INT\r
+DRL             000000  INT\r
+DSI             000011  INT\r
+DSO             000010  INT\r
+DTW             040000  INT\r
+DVAVAL          000040  INT\r
+DVCDR           100000  INT\r
+DVDIR           000004  INT\r
+DVDIRI          400000  INT\r
+DVIN            000002  INT\r
+DVLPT           040000  INT\r
+DVMTA           000020  INT\r
+DVOUT           000001  INT\r
+DVTTY           000010  INT\r
+ENTRB           020000  INT\r
+EPCAD           000216' \r
+EPCAD0          000212' \r
+EPCAD1          000213' \r
+EPCADR          000215' \r
+EPOCT           000206' \r
+EPTAD1          000145' \r
+EPTADR          000144' \r
+ERMS1           000225' \r
+ERNAM           000155' INT\r
+ERNAM1          000161' \r
+ERR1            000220' \r
+ERRDEV          000167' \r
+ERRIL           000275' \r
+ERROR           000202' INT\r
+ERRPD           000240' \r
+ERRPNT          000232' INT\r
+ERRPTU          000231' INT\r
+ERSYC1          000207' \r
+ERSYCL          000210' \r
+HOLD            000214' EXT\r
+HOLDI           000044' EXT\r
+HOLDI1          000133' EXT\r
+I               000010  INT\r
+\r\fERRCON - ERROR HANDLING ROUTINE FOR MONITOR DECTECTED ERRORS                 PAGE 13-2\r
+        SYMBOL TABLE\r
+\r
+IB              000013  INT\r
+IBUFB           200000  INT\r
+ILLIN           000321' \r
+ILLINP          000260' INT\r
+ILLINS          000272' INT\r
+ILLMO1          000303' \r
+ILLMOD          000277' INT\r
+ILLOT           000270' \r
+ILLOUT          000311' INT\r
+ILM             020000  \r
+ILM3            000315' \r
+INITB           400000  INT\r
+INPB            010000  INT\r
+IO              000020  INT\r
+IOACT           010000  INT\r
+IOBEG           000002  INT\r
+IOBKTL          040000  INT\r
+IOCON           000040  INT\r
+IODEND          020000  INT\r
+IODERR          200000  INT\r
+IODISC          400000  INT\r
+IODONE          400000  INT\r
+IODTER          100000  INT\r
+IOEND           000040  INT\r
+IOFST           000004  INT\r
+IOIER1          000326' \r
+IOIERR          000323' INT\r
+IOIMPM          400000  INT\r
+IONRCK          000100  INT\r
+IORDEL          000100  INT\r
+IORET           000020  INT\r
+IOS             000000  INT\r
+IOSTRT          000010  INT\r
+IOUSE           400000  INT\r
+IOW             000001  INT\r
+IOWC            000020  INT\r
+IOWS            400000  INT\r
+ITEM            000004  INT\r
+JBFADR          000000  INT\r
+JBFCTR          000002  INT\r
+JBFPTR          000001  INT\r
+JBTADR          000233' EXT\r
+JBUF            000005  INT\r
+JDAT            000011  INT\r
+JERR            002000  INT\r
+JIOW            100000  INT\r
+JNA             004000  INT\r
+JOB             000231' EXT\r
+JOBADR          000015' EXT\r
+JOBPD1          000341' EXT\r
+JOBPDL          000236' EXT\r
+JOBPDP          000000  EXT\r
+JOBPFI          000006' EXT\r
+\r\fERRCON - ERROR HANDLING ROUTINE FOR MONITOR DECTECTED ERRORS                 PAGE 13-3\r
+        SYMBOL TABLE\r
+\r
+JOBREL          000000  EXT\r
+JOBTRP          000000  EXT\r
+LOOKB           040000  INT\r
+MES1            000334' \r
+MESPC           000340' \r
+MESPNT          000333' INT\r
+MJOBPD          000235' EXT\r
+MTW             010000  INT\r
+NXM             010000  \r
+OBUFB           100000  INT\r
+OCTP1           000352' \r
+OCTPNT          000344' INT\r
+OUTPB           004000  INT\r
+PCPNT           000342' INT\r
+PDLOV           000122' \r
+PDP             000003  INT\r
+PICHN           000100  INT\r
+PJOBN           000367' EXT\r
+POVC            400000  \r
+POVF            200000  \r
+PROG            000007  INT\r
+RADX10          000362' INT\r
+RUN             200000  INT\r
+RUNABL          204000  INT\r
+SYSERR          000254' \r
+TAC             000001  INT\r
+TAC1            000002  INT\r
+TEM             000010  INT\r
+TTYATC          020000  INT\r
+TTYCTR          000000  EXT\r
+TTYFND          000243' EXT\r
+TTYSTR          000000  EXT\r
+TTYUSE          010000  INT\r
+UBUF            000372' EXT\r
+USRMOD          010000  INT\r
+USRPDP          000000  EXT\r
+USRPOV          000115' EXT\r
+USRREL          000056' EXT\r
+UTBKER          000367' INT\r
+UTERM           000401' \r
+UUO             000014  INT\r
+UUO0            000411' EXT\r
+UUOER1          000416' \r
+UUOERR          000407' INT\r
+UXIT            000000  EXT\r
+WAIT1           000000  EXT\r
+\f   IIIIIIIII            OOOOOOOOO            CCCCCCCCCCCC         OOOOOOOOO         NNN         NNN      TTTTTTTTTTTTTTT\r
+   IIIIIIIII            OOOOOOOOO            CCCCCCCCCCCC         OOOOOOOOO         NNN         NNN      TTTTTTTTTTTTTTT\r
+   IIIIIIIII            OOOOOOOOO            CCCCCCCCCCCC         OOOOOOOOO         NNN         NNN      TTTTTTTTTTTTTTT\r
+      III            OOO         OOO      CCC                  OOO         OOO      NNN         NNN            TTT      \r
+      III            OOO         OOO      CCC                  OOO         OOO      NNN         NNN            TTT      \r
+      III            OOO         OOO      CCC                  OOO         OOO      NNN         NNN            TTT      \r
+      III            OOO         OOO      CCC                  OOO         OOO      NNNNNN      NNN            TTT      \r
+      III            OOO         OOO      CCC                  OOO         OOO      NNNNNN      NNN            TTT      \r
+      III            OOO         OOO      CCC                  OOO         OOO      NNNNNN      NNN            TTT      \r
+      III            OOO         OOO      CCC                  OOO         OOO      NNN   NNN   NNN            TTT      \r
+      III            OOO         OOO      CCC                  OOO         OOO      NNN   NNN   NNN            TTT      \r
+      III            OOO         OOO      CCC                  OOO         OOO      NNN   NNN   NNN            TTT      \r
+      III            OOO         OOO      CCC                  OOO         OOO      NNN      NNNNNN            TTT      \r
+      III            OOO         OOO      CCC                  OOO         OOO      NNN      NNNNNN            TTT      \r
+      III            OOO         OOO      CCC                  OOO         OOO      NNN      NNNNNN            TTT      \r
+      III            OOO         OOO      CCC                  OOO         OOO      NNN         NNN            TTT      \r
+      III            OOO         OOO      CCC                  OOO         OOO      NNN         NNN            TTT      \r
+      III            OOO         OOO      CCC                  OOO         OOO      NNN         NNN            TTT      \r
+   IIIIIIIII            OOOOOOOOO            CCCCCCCCCCCC         OOOOOOOOO         NNN         NNN            TTT      \r
+   IIIIIIIII            OOOOOOOOO            CCCCCCCCCCCC         OOOOOOOOO         NNN         NNN            TTT      \r
+   IIIIIIIII            OOOOOOOOO            CCCCCCCCCCCC         OOOOOOOOO         NNN         NNN            TTT      \r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  11:23:08\r
+File: DSKB1 :IOCONT.LST   [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:20
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:2505 \r
+File will be deleted after printing\r
+\f\rIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS                 PAGE 1\r
+        8-9-95\r
+\r
+                                00010           XLIST\r
+                                01930          LIST\r
+\r\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS                 PAGE 7\r
+        8-9-95\r
+\r
+\r
+                                00010           TITLE IOCONT - CONTROL FOR IO PROGRAMMED OPERATORS\r
+                                00020           SUBTTL 8-9-95\r
+                                00030           EXTERNAL BUFCLC,ERROR,IOSETC,IOIERR,BUFCLR\r
+                                00040           EXTERNAL SETBYT,UINTQ,WAIT1,WSYNC,ADRCK\r
+                                00050           EXTERNAL UXIT,USRJDA,JOBJDA,ILLMOD,PUUOAC,PIOMOD\r
+                                00060           EXTERNAL JOB,ASSIN,PJOBN,ADRERR,USRREL,CUXIT1,CUXIT2\r
+                                00070           EXTERNAL SETIOS\r
+\r
+                                00090   ;FOR PURPOSES OF COMMENTING THIS SUBROUTINE THE\r
+                                00100   ;TERM BUFFER HEADER SHALL REFER TO THE 3 WORD HEADER\r
+                                00110   ;WHICH IS USED BY THE USER PROGRAM AND THIS EXEC FOR\r
+                                00120   ;REFERING TO THE RING BUFFERS.\r
+\r
+                                00140   ;THE CONTENTS OF THE 3 WORD HEADER (AS SET BY THE MONITOR FOR THE USE\r
+                                00150   ;                  FROM USERS PROGRAM BY AN INPUT OR AN OUTPUT UUO\r
+                                00160   ;        WORD 2:   BYTE POINTER TO CURRENT ITEM.\r
+                                00170   ;        WORD 3:   POSITIVE ITEM COUNT (NO. OF ITEMS LEFT ON\r
+                                00180   ;                  INPUT, NO. OF FREE ITEMS TO GO ON OUTPUT).\r
+\r
+                                00200   ;EACH BUFFER IN THE RING HAS FOLLOWING FORMAT (AS THE USER SEES IT)\r
+\r
+                                00220   ;        WORD 1:   RESERVED FOR BLOCK NUMBER FOR FIXED ADDRESS DEVIC\r
+                                00230   ;        WORD 2:   BIT 0=USE BIT FOR THIS BUFFER\r
+                                00240   ;                  BIT 1-17=NO. OF WORDS WHICH FOLLOW (LENGTH OF BUF\r
+                                00250   ;                  BIT 18-35=ADDRESS OF SECOND WORD OF NEXT BUFFER I\r
+                                00260   ;        WORD 3:   LH=LINK TO NEXT BLOCK (SET BY MONITOR FOR DECTAB\r
+                                00270   ;                  RH=NO. OF WORDS OF DATA WHICH FOLLOW (USUALLY\r
+                                00280   ;                  SET BY EXEC EXCEPT TO COMPUTE WORD COUNT\r
+                                00290   ;                  THAT HE WANTS TO COMPUTE WORD COUNT\r
+                                00300   ;                  HIMSELF INSTEAD OF HAVING THE MONITOR DO IT\r
+                                00310   ;                  USING THE BYTE POINTER IN THE 3 WORD HEADER).\r
+\r
+\r\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS                 PAGE 2\r
+        8-9-95\r
+\r
+\r
+                                00350   ,H. R. MORSE      2/21/65\r
+                                00360   ,CALLING SEQUENCE\r
+                                00370   ,         CLOSE D,\r
+                                00380   ,         EXIT                ALWAYS RETURNS HERE\r
+                                00390   , THIS ROUTINE PROCESSES THE CLOSE UUO AND DETERMINES WHETHER THE\r
+                                00400   ,OUTPUT ROUTINE SHOULD BE CALLED IF OUTPUT WERE ACTIVE, CLEARS\r
+                                00410   ,THE INPUT BUFFER AREA IF INPUT WERE ACTIVE, AND CLEARS THE\r
+                                00420   ,ITEM COUNTS OF BOTH INPUT AND OUTPUT HEADERS SERVING TO BOTH\r
+                                00430   ,TERMINATE THE USE OF THE DEVICE AND SET THE I/O ROUTINES TO\r
+                                00440   ,ACCEPT ANOTHER INPUT OR OUTPUT COMMAND IN A CLEAR STATE.\r
+                                00450   ,IN THE CASE OF OUTPUT DEVICES. THE CLOSE ROUTINE OF THE DEVICE HANDL\r
+                                00460   ,ING ROUTINE IS CALLED IN CASE ANY SPECIAL HANDLING IS REQUIRED.\r
+                                00470   ,MONITOR INTERFACE\r
+                                00480   ,         STORAGE: 30\r
+                                00490   ,         ROUTINES CALLED:   DCL, WAIT1, UXIT\r
+                                00500   ,         SYMBOLS SET/USED:\r
+                                00510   ,             ACCUMULATORS:       DAT    S/U    PROG U\r
+                                00520   ,                                 DEVDAT U      TAC  S/U\r
+                                00530   ,                                 IOS    S/U    TAC1 S/U\r
+                                00540   ,                                  PDP   U\r
+                                00550   ,             DEVICE DATA BLOCK:   DEVBUF  U\r
+                                00560   ,                                  DEVIOS  S/U\r
+                                00570   ,                                  DEVSER  U\r
+                                00580   ,             IO STATUS WORD:      IOACT   S    IODTER S\r
+                                00590   ,                                  IOBEG   S    IOEND  S\r
+                                00600   ,                                  IOBKTL  2    IOFST  S\r
+                                00610   ,                                  IODEND  S    IOIMPM S\r
+                                00620   ,                                  IODERR  S    IOSTRT S\r
+                                00630   ,                                  IODISC  S    IOW    S\r
+                                00640   ,             JOB BUFFER AREA:     IOUSE   S    \r
+                                00650   ,                                  JBFCTR  S\r
+\r\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS                 PAGE 3\r
+        8-9-95\r
+\r
+\r
+\r
+                                00690   INTERNAL CLOSE1\r
+\r
+        000000' 663300  002000  00710   CLOSE1:   TLOE DEVDAT,CLOSB     ;HAS A CLOSE ALREADY BEEN DONE?\r
+        000001' 254000  000000* 00720             JRST UXIT             ;YES, FOR THIS CHANNEL\r
+        000002' 135040  000000* 00730             LDB TAC,PUUOAC        ;USER DEVICE CHANNEL NO.\r
+        000003' 502301  000000* 00740             HLLM DEVDAT,USRJDA(TAC)\r
+        000004' 261140  000005  00750             PUSH PDP,DAT\r
+        000005' 135040  000000* 00760             LDB TAC,PIOMOD\r
+        000006' 305040  000016  00770             CAIGE TAC,DR\r
+        000007' 254000  000013' 00780             JRST UCLS4\r
+        000010' 200046  000003  00790             MOVE TAC,DEVSER(DEVDAT)\r
+        000011' 260141  000001  00800             PUSHJ PDP,DCL(TAC)\r
+        000012' 254000  000060' 00810             JRST UCLS3\r
+        000013' 260140  000000* 00820   UCLS4:    PUSHJ PDP,WAIT1;      WAIT UNTIL DEVICE IS INACTIVE.\r
+        000014' 606600  000002  00830             TRNN UUO,CLSIN        ;SUPPRESS INPUT?\r
+        000015' 607300  200000  00840             TLNN DEVDAT,IBUFB     ;NO, WAS INPUT BUFFER SPECIFIED?\r
+        000016' 254000  000041' 00850             JRST UCLS2                                ;NO\r
+        000017' 550106  000006  00860             HRRZ TAC1,DEVBUF(DEVDAT)\r
+        000020' 505100  000007  00870             HRLI TAC1,PROG\r
+        000021' 550260  000002  00880             HRRZ DAT,@TAC1        ;FIRST WORD OF 3 WORD BUFFER HEADER\r
+        000022' 540120  000002  00890             HRR TAC1,@TAC1        ;REMEMBER CURRENT BUFFER IN TAC1\r
+        000023' 515040  400000  00900             HRLZI TAC,IOUSE       ;USER BOTH FOR HEADER AND EACH BUFFER\r
+        000024' 322240  000034' 00910             JUMPE DAT,UCLS1       ;HAS A RING BEEN SETUP?(NO IF 0)\r
+        000025' 505240  000007  00920             HRLI DAT,PROG         ;YES\r
+        000026' 540260  000005  00930   UCLS0:    HRR DAT,@DAT;         ADVANCE CURRENT INPUT BUFFER ADDRESS\r
+                                00940             ADRCHK DAT  ;IS ADDRESS OF?\r
+        000027' 260140  000000*                 PUSHJ PDP,ADRCK\r
+        000030' 550040  000005                  HRRZ TAC,DAT  \r
+        000031' 412060  000005  00950             ANDCAM TAC,@DAT       ;YES, CLEAR USE BIT.\r
+        000032' 312100  000005  00960             CAME TAC1,DAT;        DONE?\r
+        000033' 254000  000026' 00970             JRST UCLS0\r
+        000034' 505240  000007  00980   UCLS1:    HRLI DAT,PROG\r
+        000035' 540246  000006  00990             HRR DAT,DEVBUF(DEVDAT)\r
+        000036' 436060  000005  01000             IORM TAC,@DAT         ;FLAG AS VIRGIN BUFFER IN 3 WORD HEADER\r
+        000037' 271240  000002  01010             ADDI DAT,2;           JBFCTR:=0\r
+        000040' 402020  000005  01020             SETZM @DAT            ;CLEAR INPUT ITEM COUNT.\r
+        000041' 606600  000001  01030   UCLS2:    TRNN UUO,CLSOUT       ;SUPPRESS OUTPUT?\r
+        000042' 607300  100000  01040             TLNN DEVDAT,OBUFB     ;NO.WAS OUPUT BUFFER SPECIFIED?\r
+        000043' 254000  000060' 01050             JRST UCLS3                    ;NO\r
+        000044' 544246  000006  01060             HLR DAT, DEVBUF(DEVDAT)       ;VIRGIN OUBPUT BUFFER?\r
+        000045' 505240  000007  01070             HRLI DAT, PROG\r
+        000046' 337020  000005  01080             SKIPG @DAT\r
+        000047' 254000  000060' 01090             JRST UCLS3            ;YES\r
+        000050' 200046  000003  01100             MOVE TAC,DEVSER(DEVDAT)\r
+        000051' 260141  000001  01110             PUSHJ PDP,DCL(TAC); CLOSE OUTPUT BUFFER\r
+        000052' 544246  000006  01120             HLR DAT,DEVBUF(DEVDAT)\r
+        000053' 505240  000007  01130             HRLI DAT,PROG\r
+        000054' 515040  400000  01140             HRLZI TAC,IOUSE\r
+        000055' 436060  000005  01150             IORM TAC,@DAT\r
+        000056' 271240  000002  01160             ADDI DAT,2\r
+        000057' 402020  000005  01170             SETZM @DAT;           JBFCTR:=0\r
+\r\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS                 PAGE 3-1\r
+        8-9-95\r
+\r
+        000060' 260140  000013* 01180   UCLS3:    PUSHJ PDP,WAIT1\r
+        000061' 262140  000005  01190             POP PDP,DAT\r
+        000062' 630000  000473' 01200             TDZ IOS,[XWD IOEND,IODEND]\r
+        000063' 661000  000002  01210             TLO IOS,IOBEG\r
+        000064' 202006  000002  01220             MOVEM IOS,DEVIOS(DEVDAT);     IODISC:=0\r
+        000065' 254000  000001* 01230             JRST UXIT;            EXIT THIS UUO\r
+\r\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS                 PAGE 4\r
+        8-9-95\r
+\r
+\r
+\r
+                                01270   ,DEC 06 00 EX UUO L PT PRE 02 INBUF,OUTBUF\r
+                                01280   ,H. R. MORSE        64-12-26\r
+                                01290   ,CALLING SEQUENCE\r
+                                01300   ,         INBUF D,N\r
+                                01310   ,         EXIT                RETURNS HERE IF MEMORY NOT EXCEEDED\r
+                                01320   ,CALLING SEQUENCE\r
+                                01330   ,         OUTBUF D,N\r
+                                01340   ,         EXIT                RETURNS HERE IF MEMORY NOT EXCEEDED\r
+                                01350   , SETS UP AN N BUFFER RING FOLLOWING THE USERS PROGRAM FOR DEVICE\r
+                                01360   , D AND INITIALIZES THE JOB BUFFER AREA HEADER:\r
+                                01370   ,         JBFADR0:=1,         JBFADR 1-17:=0\r
+                                01380   ,         JBFADR 18-35:=ADDRESS OF FIRST BUFFER IN RING\r
+                                01390   ,INPUT SETS DEVIAD:=ADDRESS OF FIRST BUFFER IN RING\r
+                                01400   ,OUTPUT SET DEVOAD:=ADDRESS OF FIRST BUFFER IN RING\r
+                                01410   ,BUFPNT IS RESTORED.\r
+                                01420   ,MONITOR INTERFACE\r
+                                01430   ,         STORAGE:13\r
+                                01440   ,         ROUTINES CALLED: BUFCLC,  UXIT\r
+                                01450   ,         SYMBOLS SET/USED:\r
+                                01460   ,             ACCUMULATORS:   BUFPNT  S/U               PROG U\r
+                                01470   ,                             DEVDAT  U                 TAC  S/U\r
+                                01480   ,                             PDP     U                 TAC1 S/U\r
+                                01490   ,             DEVICE DATA BLOCK:        DEVBUF  U\r
+                                01500   ,                             DEVIAD  S\r
+                                01510   ,                             DEVOAD  S\r
+                                01520   ,             JOB BUFFER AREA:          JBFADR  S\r
+\r\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS                 PAGE 5\r
+        8-9-95\r
+\r
+\r
+\r
+                                01560           INTERN UINBF, UOUTBF\r
+\r
+        000066' 261140  000012  01580   UOUTBF:   PUSH PDP,BUFPNT;      SAVE BUFPNT ON STACK\r
+        000067' 260140  000000* 01590             PUSHJ PDP,BUFCLC;     SET UP BUFFER RIGH\r
+        000070' 544046  000006  01600             HLR TAC,DEVBUF(DEVDAT);TAC:=OUTPUT BUFFER AREA HEADER ADDRE\r
+        000071' 542506  000010  01610             HRRM BUFPNT,DEVOAD(DEVDAT);DEVOAD:=ADDRESS OF FIRST BUFFER\r
+                                01620   ,                                       IN RING\r
+        000072' 505040  000007  01630   UOBF1:    HRLI TAC,PROG;        RELOCATE BUFFER AREA HEADER ADDRESS\r
+        000073' 202520  000001  01640             MOVEM BUFPNT,@TAC;    JBFADR:=IOUSE,ADDRESS OF FIRST BUFFER\r
+                                01650   ,                                       IN RING\r
+        000074' 262140  000012  01660             POP PDP,BUFPNT;       RESTORE BUFPNT FROM STACK\r
+        000075' 254000  000065* 01670             JRST UXIT;            EXIT THIS UUO\r
+        000076' 261140  000012  01680   UINBF:    PUSH PDP,BUFPNT;      SAVE BUFPNT ON STACK\r
+        000077' 260140  000067* 01690             PUSHJ PDP,BUFCLC;     SET UP BUFFER RING\r
+        000100' 542506  000007  01700             HRRM BUFPNT,DEVIAD(DEVDAT); DEVIAD:=ADDRESS OF FIRST BUFFER\r
+                                01710   ,                                       IN RING\r
+        000101' 540046  000006  01720             HRR TAC,DEVBUF(DEVDAT); TAC:=INPUT BUFFER AREA HEADER ADDRE\r
+        000102' 254000  000072' 01730             JRST UOBF1\r
+\r\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS                 PAGE 6\r
+        8-9-95\r
+\r
+\r
+\r
+                                01770   ,DEC 06 00 EX UUO L PT PRE 03 INIT\r
+                                01780   ,H. R. MORSE AND D. A. WITCRAFT          2/21/65\r
+                                01790   ,CALLING SEQUENCE\r
+                                01800   ,         INIT D,MODUS          D=JOB DEVICE CHANNEL\r
+                                01810   ,                               MODUS=IORDEL,IOCON,IOWC,MODE.\r
+                                01820   ,         SIXBIT/NAME/          DEVICE NAME\r
+                                01830   ,         XWD OBUF,IBUF         BUFFER AREA HEADER ADDRESS\r
+                                01840   ,         EXIT1                 DEVICE NOT AVAILABLE\r
+                                01850   ,         EXIT2                 DEVICE PROPERLY AVAILABLE\r
+                                01860   ,THE LEFT HALF OF NAME CONTAINS THE THREE LETTER DEVICE MNEMONIC,\r
+                                01870   ,   THE RIGHT HALF IS EITHER ZOER (SYSTEM WILL ASSIGN AN ARBITRARY\r
+                                01880   ,   UNIT) OR NON-ZERO TO REQUEST A SPECIFIC UNIT (LEFT JUSTIFIED).\r
+                                01890   ,IF THE SELECTED DEVICE IS NOT AVAILABLE. CONTROL RETURNS TO EXIT1.\r
+                                01900   ,OTHERWISE, THE DEVICE IS ASSIGNED TO THE USER AND ATTACHED TO HIS\r
+                                01910   ,CHANNEL D.  THE DEVICE IS INITIALIZED IN THE FOLLOWING MANNER AFTER\r
+                                01920   ,IOACT IS ZERO:\r
+                                01930   ,         IOBEG:=1\r
+                                01940   ,         DATA MODE:=BITS 32-35 OF AC UUO\r
+                                01950   ,         IOCON:=BIT 31 OF AC UUO\r
+                                01960   ,         IOWC:=BIT 40 OF AC UUO\r
+                                01970   ,         IORDEL:=BIT 29 OF AC UUO\r
+                                01980   ,         IOACT:=IODEND:=IOBKTL:=IODTER:=IODERR:=IOIMPM:=0\r
+                                01990   ,         JBFADR:=JBFCTR:=0 FOR THE SPECIFIED BUFFERS.\r
+                                02000   ,         DEVBUF:=OBUF,IBUF\r
+                                02010   ,MONITOR INTERFACE\r
+                                02020   ,         STORAGE:  20\r
+                                02030   ,         ROUTINES CALLED:      UINTQ, ASSIGN(UASG1),USEL,UINITZ,UXIT\r
+                                02040   ,         SYMBOLS SET/USED:\r
+                                02050   ,             ACCUMULATORS:     DEVDAT U\r
+                                02060   ,                               PDP    U        TAC  U\r
+                                02070   ,                               PROG   U        TAC1 S/U\r
+                                02080   ,             DEVICE DATA BLOCK:         DEVBUF S\r
+\r\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS                 PAGE 7\r
+        8-9-95\r
+\r
+\r
+\r
+                                02120             INTERN UINIT,UINIT1\r
+        000103' 135040  000002* 02130   UINIT:    LDB TAC,PUUOAC        ;USER DEVICE CHANNEL NO.\r
+        000104' 332301  000003* 02140             SKIPE DEVDAT,USRJDA(TAC)        ;IS A DEVICE ALREADY HERE?\r
+        000105' 260140  000430' 02150             PUSHJ PDP,RELEA0      ;YES, RELEASE IT\r
+        000106' 200600  000040  02160             MOVE UUO,40           ;RESTORE AC UUO FROM LOC 40\r
+        000107' 260140  000000* 02170             PUSHJ PDP,UINTQ       ;GET SIXBIT DEVICE NAME FROM USER\r
+        000110' 350003  000000  02180             AOS (PDP)\r
+        000111' 200200  000000* 02190   UINIT1:   MOVE ITEM,JOB         ;CALLED BY SAVGET\r
+        000112' 260140  000000* 02200             PUSHJ PDP,ASSIN;      TRY TO ASSIGN DEVICE\r
+        000113' 254000  000000* 02210             JRST CUXIT1;          NOT AVAILABLE\r
+        000114' 135040  000103* 02220             LDB TAC,PUUOAC\r
+        000115' 552301  000104* 02230             HRRZM DEVDAT,USRJDA(TAC)      ;STORE DDB ADR IN DEVICE TABL\r
+        000116' 515040  000002  02240             HRLZI TAC,IOBEG\r
+        000117' 202046  000002  02250             MOVEM TAC,DEVIOS(DEVDAT)\r
+        000120' 260140  000000* 02260             PUSHJ PDP,SETIOS      ;SET DDB IOS STATUS WORD\r
+                                02270                                   ;FROM RT. HALF OF UUO\r
+        000121' 260140  000107* 02280             PUSHJ PDP,UINTQ\r
+        000122' 505300  400000  02290             HRLI DEVDAT, INITB    ;SET INIT UUO BIT\r
+        000123' 607040  777777  02300             TLNN TAC,-1   \r
+        000124' 254000  000127' 02310             JRST UINIT4           ;OUTPUT NOT SPECIFIED\r
+        000125' 502046  000006  02320             HLLM TAC,DEVBUF(DEVDAT)\r
+        000126' 661300  100000  02330             TLO DEVDAT,OBUFB      ;SET OUTPUT BUFFER SPECIFIED BIT\r
+        000127' 606040  777777  02340   UINIT4:   TRNN TAC,-1;          IS IBUF SPECIFIED?\r
+        000130' 254000  000133' 02350             JRST UINIT5           ;INPUT BUF NOT SPECIFIED\r
+        000131' 542046  000006  02360             HRRM TAC,DEVBUF(DEVDAT);      DEVBUF 18-35:=IBUF\r
+        000132' 661300  200000  02370             TLO DEVDAT,IBUFB      ;SET INPUT BUFFER SPECIFIED BIT\r
+        000133' 550100  000001  02380   UINIT5:   HRRZ TAC1,TAC;        TAC1:=PROG,IBUF\r
+        000134' 260140  000142' 02390             PUSHJ PDP,UINITZ;     JBFADR:=JBFCTR:=0 FOR IBUF\r
+        000135' 544100  000001  02400             HLR TAC1,TAC;         TAC1:=PROG,OBUF\r
+        000136' 260140  000142' 02410             PUSHJ PDP,UINITZ;     JBFADR:=JBFCTR:=0 FOR OBUF\r
+        000137' 135040  000114* 02420             LDB TAC,PUUOAC        ;STORE UUO BITS FOR THIS CHANNEL\r
+        000140' 502301  000115* 02430             HLLM DEVDAT,USRJDA(TAC)\r
+        000141' 254000  000000* 02440             JRST CUXIT2\r
+\r\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS                 PAGE 8\r
+        8-9-95\r
+\r
+\r
+\r
+                                02480   ,DEC 06 00 EX COM L PT PRE 03 UINITZ\r
+                                02490   ,H. R. MORSE        64-12-26\r
+                                02500   ,CALLING SEQUENCE\r
+                                02510   ,         PUSHJ PDP,UINITZ\r
+                                02520   ,         EXIT                  RETURNS HERE IF MEMORY NOT EXCEEDED.\r
+                                02530   ,SETS JBFADR:=JBFCTR:=0 FOR THE BUFFER AREA HEADER WHOSE ADDRESS\r
+                                02540   ,IS IN AC TAC1.  ALSO,JBFPTR 0-5:=JBFPTR 12-17:=0,JBFPTR 6-11:=BYTE S\r
+                                02550   ,MONITOR INTERFACE\r
+                                02560   ,         STORAGE:15\r
+                                02570   ,         ROUTINES CALLED:      ADRCK, SETBYT\r
+                                02580   ,         SYMBOLS SET/USED:\r
+                                02590   ,             ACCUMULATORS:     PDP   U                 TAC    S/U\r
+                                02600   ,                       TAC1  S/U\r
+                                02610   ,            JOB BUFFER AREA:  JBFADR S\r
+                                02620   ,                                       JBFCTR S\r
+                                02630   ,                                       JBFPTR S\r
+                                02640             INTERN UINITZ\r
+\r
+        000142' 606100  777777  02660   UINITZ:   TRNN TAC1,-1;         IS BUFFER SPECIFIED?\r
+        000143' 263140  000000  02670             POPJ PDP,;RETURN\r
+        000144' 505100  000007  02680             HRLI TAC1,PROG\r
+        000145' 260140  000027* 02690             PUSHJ PDP,ADRCK       ;CHECK 3 WORD BUFFER HEADER\r
+        000146' 551042  000002  02700             HRRZI TAC,2(TAC1)\r
+        000147' 402020  000002  02710             SETZM @TAC1;          JBFADR:=0\r
+        000150' 350000  000002  02720             AOS TAC1\r
+        000151' 261140  000001  02730             PUSH PDP,TAC\r
+        000152' 261140  000002  02740             PUSH PDP,TAC1\r
+        000153' 350000  000002  02750             AOS TAC1\r
+        000154' 402020  000002  02760             SETZM @TAC1;          JBFCTR:=0\r
+        000155' 260140  000000* 02770             PUSHJ PDP,SETBYT;     JBFPTR 6-11:=BYTE SIZE\r
+        000156' 621040  770077  02780             TLZ TAC,770077\r
+        000157' 262140  000002  02790             POP PDP,TAC1\r
+        000160' 502060  000002  02800             HLLM TAC,@TAC1\r
+        000161' 262140  000001  02810             POP PDP,TAC\r
+        000162' 263140  000000  02820             POPJ PDP,;            RETURN\r
+\r\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS                 PAGE 9\r
+        8-9-95\r
+\r
+\r
+\r
+                                02860   INTERNAL IN\r
+        000163' 603000  000020  02870   IN:       TLNE IOS,IO           ;IS THIS DEVICE ALREADY DOING OUTPUT!\r
+        000164' 260140  000060* 02880             PUSHJ PDP,WAIT1       ;YES,WAIT TILL IT IS FINISHED\r
+        000165' 135040  000137* 02890             LDB TAC,PUUOAC        ;SET BIT THAT SAYS AN INPUT UUO HAS OCC\r
+        000166' 661300  010000  02900             TLO DEVDAT,INPB       ;FOR THIS DEVICE\r
+        000167' 502301  000140* 02910             HLLM DEVDAT,USRJDA(TAC)         ;IN LH OF CURRENT JOB DEVICE\r
+        000170' 135040  000005* 02920             LDB TAC,PIOMOD        ;IO MODE\r
+        000171' 301040  000016  02930             CAIL TAC,DR           ;IS THE IO MODE DUMP MODE?\r
+        000172' 254000  000271' 02940             JRST INDMP            ;YES\r
+        000173' 540246  000006  02950   IN1:      HRR JBUF,DEVBUF(DEVDAT)         ;NO, GET ADDRESS OF R WORD BU\r
+        000174' 515040  400000  02960             HRLZI TAC,IOUSE       ;BUFFER INUSE BIT\r
+        000175' 505240  000007  02970             HRLI JBUF,PROG        ;SET INDEX FIELD FOR RELOCATION USING A\r
+        000176' 260140  000145* 02980             PUSHJ PDP,ADRCK       ;CHECK BUFFER HEADER\r
+        000177' 551045  000002  02990             HRRZI TAC,2(JBUF)     ;END ADDRESS OF 3 WORD HEADER\r
+        000200' 200120  000005  03000             MOVE TAC1,@JBUF       ;GET WORD 1 OF 3 WORD BUFFER HEADER (PO\r
+        000201' 505100  000007  03010             HRLI TAC1,PROG        ;SET INDEX FIELD COR RELOCATION USING A\r
+        000202' 337020  000005  03020             SKIPG @JBUF           ;HAS A BUFFER RING BEEN SET UP (RH NON-\r
+                                03030                                   ;WHICH HAS BEEN REFERENCED BY PREVIOUS\r
+        000203' 254000  000256' 03040             JRST INPUTF           ;NO, GO SET UP BUFFER IF NECESSARY AND\r
+                                03050             ADRCHK TAC1           ;YES, CHECK ADDRESS TO SEE IF IN BOUNDS\r
+        000204' 260140  000176*         PUSHJ PDP,ADRCK\r
+        000205' 550040  000002                  HRRZ TAC,TAC1           \r
+        000206' 413060  000002  03060             ANDCAB TAC,@TAC1      ;FLAG THIS BUFFER AS BEING FILLED (USE\r
+                                03070                                   ;AND GET POINTER TO NEXT BUFFER\r
+        000207' 542060  000005  03080             HRRM TAC,@JBUF        ;SET WORD 1 IN 3 WORD HEADER TO NEXT BU\r
+                                03090             ADRCHK TAC ;AND CHECK ITS ADDRESS TO SEE IF IN BOUNDS\r
+        000210' 260140  000204*         PUSHJ PDP,ADRCK\r
+        000211' 550040  000001                  HRRZ TAC,TAC \r
+        000212' 200006  000002  03100   INPUT0:   MOVE IOS,DEVIOS(DEVDAT)       ;GET IO STATUS WORD\r
+        000213' 606000  010000  03110             TRNN IOS,IOACT        ;IS THE DEVICE ALREADY ACTIVE (FILLING\r
+        000214' 254000  000220' 03120             JRST INPT0B           ;NO.\r
+        000215' 606000  000040  03130             TRNN IOS,IOCON        ;DOES THE USER WANT TO STOP AFTER EVERY\r
+        000216' 254000  000224' 03140             JRST INPT0C           ;NO. HE WANTS NORMAL CONTINUOUS OVERLAP\r
+        000217' 260140  000000* 03150             PUSHJ PDP,WSYNC       ;YES, WAIT TILL DEVICE FINISHES WITH ON\r
+        000220' 505040  000007  03160   INPT0B:   HRLI TAC,PROG         ;SET FOR RELOCATION\r
+        000221' 540060  000001  03170             HRR TAC,@TAC          ;GET POINTER 1 BLOCK AHEAD OF NEXT BBUF\r
+        000222' 331020  000001  03180             SKIPL @TAC\r
+        000223' 260140  000276' 03190             PUSHJ PDP,CALIN\r
+        000224' 540120  000002  03200   INPT0C:   HRR TAC1,@TAC1\r
+        000225' 335020  000002  03210   INPT0A:   SKIPGE @TAC1\r
+        000226' 254000  000236' 03220             JRST INPUT2\r
+        000227' 260140  000217* 03230   INPUT1:   PUSHJ PDP,WSYNC\r
+        000230' 335020  000002  03240             SKIPGE @TAC1\r
+        000231' 254000  000236' 03250             JRST INPUT2\r
+        000232' 612000  000474' 03260             TDNE IOS,[XWD IOEND,IODERR]\r
+        000233' 254000  000250' 03270             JRST INEOF\r
+        000234' 200006  000002  03280             MOVE IOS,DEVIOS(DEVDAT)\r
+        000235' 254000  000227' 03290             JRST INPUT1\r
+\r
+        000236' 271100  000001  03310   INPUT2:   ADDI TAC1,1\r
+        000237' 550220  000002  03320             HRRZ ITEM,@TAC1\r
+\r\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS                 PAGE 9-1\r
+        8-9-95\r
+\r
+        000240' 275100  000001  03330             SUBI TAC1,1\r
+        000241' 261140  000004  03340             PUSH PDP,ITEM         ;SAVE WORD COUNT AS STORED BY IO SERVIC\r
+        000242' 260140  000000* 03350             PUSHJ PDP,IOSETC\r
+        000243' 262140  000004  03360             POP PDP,ITEM\r
+        000244' 135040  000170* 03370             LDB TAC,PIOMOD        ;GET DEVICE DATA MODE\r
+        000245' 306040  000010  03380             CAIN TAC, I           ;IMAGE MODE?\r
+        000246' 202220  000005  03390             MOVEM ITEM,@JBUF      ;YES, STORE WORD COUNT NOT ITEM COUNT\r
+        000247' 254000  000075* 03400             JRST UXIT\r
+\r\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS                 PAGE 10\r
+        8-9-95\r
+\r
+\r
+\r
+        000250' 551000  020000  03440   INEOF:    HRRZI IOS,IODEND\r
+        000251' 436006  000002  03450             IORM IOS,DEVIOS(DEVDAT)\r
+        000252' 254000  000247* 03460             JRST UXIT\r
+\r
+        000253' 540100  000014  03480   INPUTA:   HRR TAC1,UUO\r
+        000254' 412060  000002  03490             ANDCAM TAC,@TAC1\r
+        000255' 254000  000212' 03500             JRST INPUT0\r
+\r
+                                03520   ;HERE ON FIRST INPUT AFTER INIT, INIT & LOOKUP, OR INIT & LOOKUP & IN\r
+        000256' 412060  000005  03530   INPUTF:   ANDCAM TAC,@JBUF      ;MARK THAT BUFFERS HAVE BEEN REFERENCED\r
+        000257' 540060  000005  03540             HRR TAC,@JBUF         ;PICKUP ADDRESS OF FIRST BUFFERE IN RING\r
+        000260' 542046  000007  03550             HRRM TAC,DEVIAD(DEVDAT)               ;SET CURRENT RING BUFFER ADDR\r
+                                03560                                                   ;IN DEVICE DATA BLOCK\r
+        000261' 336020  000005  03570             SKIPN @JBUF           ;HAS A RING BEEN SET UP YET?\r
+        000262' 254000  000265' 03580             JRST INPUT3           ;NO, GO SET UP A 2 BUFFER RING\r
+        000263' 260140  000276' 03590             PUSHJ PDP,CALIN       ;YES, GO START TO SERVICE ROUTINE\r
+                                03600                                           ;FILLING BUFFER\r
+        000264' 254000  000225' 03610             JRST INPT0A\r
+        000265' 541600  000002  03620   INPUT3:   HRRI UUO,2            ;BUFFERS NOT SETUP YET.\r
+                                03630                                           ;SET UP 2\r
+        000266' 260140  000076' 03640             PUSHJ PDP, UINBF\r
+        000267' 513000  000014  03650             HLLZS UUO             ;CLEAR RIGHT HALF\r
+        000270' 254000  000173' 03660             JRST IN1\r
+\r
+        000271' 260140  000227* 03680   INDMP:    PUSHJ PDP,WSYNC\r
+        000272' 200046  000003  03690             MOVE TAC,DEVSER(DEVDAT)\r
+        000273' 260141  000007  03700             PUSHJ PDP,DDI(TAC)\r
+        000274' 260140  000164* 03710             PUSHJ PDP,WAIT1\r
+        000275' 254000  000252* 03720             JRST UXIT\r
+\r\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS                 PAGE 11\r
+        8-9-95\r
+\r
+\r
+\r
+\r
+\r
+        000276' 603000  000040  03780   CALIN:    TLNE IOS,IOEND\r
+        000277' 263140  000000  03790             POPJ PDP,\r
+        000300' 260140  000271* 03800             PUSHJ PDP,WSYNC\r
+        000301' 261140  000002  03810             PUSH PDP,TAC1\r
+        000302' 200046  000003  03820             MOVE TAC,DEVSER(DEVDAT)\r
+        000303' 260141  000003  03830             PUSHJ PDP,DIN(TAC)\r
+        000304' 262140  000002  03840             POP PDP,TAC1\r
+        000305' 263140  000000  03850             POPJ PDP,\r
+\r
+\r
+\r\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS                 PAGE 12\r
+        8-9-95\r
+\r
+\r
+\r
+                                03910   ,DEC 06 00 EX COM  L PT PRE 03 OUTPUT\r
+                                03920   ,H.R. MORSE    2/21/65\r
+                                03930   ,CALLING SEQUENCE\r
+                                03940   ,       OUTPUT D,\r
+                                03950   ,       EXIT\r
+                                03960   ,OR\r
+                                03970   ,       OUTPUT D, ADR\r
+                                03980   ,       EXIT\r
+\r
+                                04000   ,IF INPUT IS ACTIVE, WAIT FOR IT TO COMPLETE.\r
+                                04010   ,IF DUMP MODE WAS SELECTED BY THE LAST INIT UUO., THEN A CHECK IS MADE\r
+                                04020   ,   TO SEE IF DUMP FILES ARE LEGAL FOR THIS DEVICE.  IF DUMP FILES AR\r
+                                04030   ,   NOT LEGAL. (IORET=0) AN ERROR MESSAGE IS PRINTED ON THE TTY AND\r
+                                04040   ,   CONTROL IS TRANSFERRED T THE COMMAND INPUT ROUTINE.\r
+                                04050   ,   OTHERWISE,THE PROGRAM WAITS UNTIL THE DEVICE IS INACTIVE AND THEN\r
+                                04060   ,   WRITES THE DUMPFILE AND RETURNS CONTROL TO THE USERS PROGRAM\r
+                                04070   ,IF THE MODE IS NOT DUMP, THEN\r
+                                04080   ,1) IF ADR IS NOT ZERO, WAIT FOR DEVICE TO BECOME INACTIVE THEN SET T\r
+                                04090   ,   CURRENT BUFFER ADDRESS EQUAL TO ADR AND AN INDICATOR (JBFADR0)\r
+                                04100   ,   SPECIFYING THAT THIS BUFFER RING HAS NEVER BEEN REFERENCED FROM T\r
+                                04110   ,   USERS PROGRAM BY AN INPUT OR AN OUTPUT UUO.  OTHERWISE, GO TO\r
+                                04120   ,   2) DIRECTLY.\r
+\r
+                                04140   ,2) IF THE BUFFER RING HAS NEVER BEEN REFERENCED (JBFADR0=1), THE\r
+                                04150   ,   BUFFER IS CLEARED. IOUSE SET TO ZERO AND\r
+                                04160   ,      IF THE CURRENT BUFFER ADDRESS IS ZERO, A TWO BUFFER RING IS SE\r
+                                04170   ,      THE GO TO 8\r
+                                04180   ,\r
+                                04190   ,3) IF THE BUFFER RING HAS BEEN REFERENCED (JBFADR0=0   ,THEN A C\r
+                                04200   ,   MADE TO DETERMINE IF THE WORD COUNT IS TO BE COMPUTED.\r
+                                04210   ,       IF THE WORD COUNT IS TO BE COMPUTED (IOWC=0), IT IS SET EQUAL\r
+                                04220   ,       TO THE ADDRESS FOR THE LAST DATA WORD MINUS THE ADDRESS OF THE\r
+                                04230   ,       BUFFER MINUS ONE,\r
+\r
+                                04250   ,4) IOUSE IS SET TO ONE. INDICATING THAT THE BUFFER IS FULL OR BEING\r
+                                04260   ,   EMPTIED, AND THE CURRENT BUFFER ADDRESS IS ADVANCED.\r
+\r
+                                04280   ,5) IF THE DEVICE IS NOT ACTIVE (IOACT=0), OUTPUT IS STARTED.\r
+                                04290   ,6) IF THE CURRENT BUFFER IS FULL OR BEING EMPTIED (IOUSE=1),\r
+                                04300   ,   THE PROGRAM WAITS UNTIL THE DEVICE IS INACTIVE\r
+                                04310   ,7) THE CURRENT BUFFER IS CLEARED.\r
+                                04320   ,8) THE ITEM POINTER IS INITIATED TO THE CURRENT BUFFER ADDRESS+1\r
+                                04330   ,   AND THE ITEM COUNT IS SET TO THE PRODUCT OF THE BUFFER SIZE\r
+                                04340   ,   MINUS ONE AND THE INTEGER PART OF 36/BYTE SIZE.\r
+                                04350   ,9) RETURN TO THE USERS PROGRAM\r
+\r\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS                 PAGE 13\r
+        8-9-95\r
+\r
+\r
+\r
+                                04390   ,MONITOR INTERFACE\r
+                                04400   ,     STORAGE:  54\r
+                                04410   ,     ROUTINE CALLED:  ADRCK, BUFCLR, CALOUT, INOUT, IOSETC, OUTA,\r
+                                04420   ,                       OUTBUF, UXIT, WSYNC,\r
+                                04430   ,     SYMBOLS SET/USED:\r
+                                04440   ,        ACCUMULATORS:  DEVDAT U        PROG U\r
+                                04450   ,                       IOS U           TAC S/U\r
+                                04460   ,                       ITEM S/U        TAC1 S/U\r
+                                04470   ,                       JBUF S/U        UUO S\r
+                                04480   ,                       PDP U\r
+                                04490   ,       DEVICE DATA BLOCK: DEVBUF U     DEVOAD S\r
+                                04500   ,       IO STATUS WORD: IOACT U\r
+                                04510   ,                       IOWC U\r
+                                04520   ,       JOB BUFFER AREA:        JBADR S/U\r
+                                04530   ,                        JBFCTR S\r
+                                04540   ,                        JBPPTR S/U\r
+                                04550   ,                        BUFFER SIZE U\r
+                                04560   ,                        IOUSE S/U\r
+                                04570   ,                        WORD COUNT S\r
+\r\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS                 PAGE 14\r
+        8-9-95\r
+\r
+\r
+\r
+\r
+                                04620             INTERN OUT\r
+\r
+        000306' 607000  000020  04640   OUT:      TLNN IOS,IO   ;IS THIS DEVICE ALREADY DOING INPUT?\r
+        000307' 260140  000274* 04650             PUSHJ PDP,WAIT1       ;YES, WAIT TILL IT BECOMES INACTIVE\r
+        000310' 135040  000165* 04660             LDB TAC,PUUOAC\r
+        000311' 661300  004000  04670             TLO DEVDAT,OUTPB\r
+        000312' 502301  000167* 04680             HLLM DEVDAT,USRJDA(TAC)\r
+        000313' 135040  000244* 04690             LDB TAC,PIOMOD\r
+        000314' 301040  000016  04700             CAIL TAC,DR\r
+        000315' 254000  000402' 04710             JRST OUTDMP\r
+        000316' 260140  000407' 04720             PUSHJ PDP,OUTA\r
+        000317' 544246  000006  04730   OUT1:     HLR JBUF,DEVBUF(DEVDAT)\r
+        000320' 260140  000210* 04740             PUSHJ PDP,ADRCK       ;CHECK END OF 3 WORD HEADER\r
+        000321' 551045  000002  04750             HRRZI TAC,2(JBUF)\r
+        000322' 505240  000007  04760             HRLI JBUF,PROG\r
+        000323' 515040  400000  04770             HRLZI TAC, IOUSE\r
+        000324' 337120  000005  04780             SKIPG TAC1, @JBUF             ;HAS THIS BUFFER EVER BEEN\r
+                                04790                                           ;;REFERENCED?(JBFADR0=0?)\r
+        000325' 254000  000361' 04800             JRST OUTF\r
+        000326' 350000  000005  04810             AOS JBUF\r
+        000327' 550060  000005  04820             HRRZ TAC, @JBUF\r
+        000330' 271100  000001  04830             ADDI TAC1, 1\r
+        000331' 274040  000002  04840             SUB TAC, TAC1\r
+        000332' 505100  000007  04850             HRLI TAC1,PROG\r
+        000333' 602000  000020  04860             TRNE IOS, IOWC                ;COMPUTE WORD COUNT?(IOWC=0?)\r
+        000334' 254000  000340' 04870             JRST OUT2\r
+                                04880             ADRCHK TAC1           ;PROCEED IF ADDRESS OF WORD COUNT\r
+        000335' 260140  000320*         PUSHJ PDP,ADRCK\r
+        000336' 550040  000002                  HRRZ TAC,TAC1           \r
+                                04890                                           ;<PROTECTION ADDRESS\r
+        000337' 542060  000002  04900             HRRM TAC, @TAC1               ;WORD COUNT:=C(JBFPTR18-35)\r
+                                04910                                           ;            -C(JBFPTR18-35)-\r
+        000340' 275240  000001  04920   OUT2:     SUBI JBUF,1\r
+        000341' 275100  000001  04930             SUBI TAC1,1\r
+        000342' 515040  400000  04940             HRLZI TAC, IOUSE\r
+        000343' 437060  000002  04950             IORB TAC, @TAC1               ;IOUSE:=1\r
+        000344' 260140  000335* 04960             ADRCHK TAC1^PUSHJ PDP,ADRCK\r
+        000345' 550040  000002                  HRRZ TAC,TAC1^\r
+        000346' 542060  000005  04970             HRRM TAC,@JBUF                ;ADVANCE CURRENT BUFFER ADDRE\r
+        000347' 200006  000002  04980             MOVE IOS,DEVIOS (DEVDAT)\r
+        000350' 606000  010000  04990             TRNN IOS,IOACT\r
+        000351' 260140  000421' 05000             PUSHJ PDP, CALOUT             ;START OUTPUT\r
+        000352' 544246  000006  05010             HLR JBUF,DEVBUF(DEVDAT)\r
+        000353' 505240  000007  05020             HRLI JBUF,PROG\r
+        000354' 200120  000005  05030             MOVE TAC1,@JBUF\r
+        000355' 505100  000007  05040             HRLI TAC1,PROG\r
+        000356' 337020  000002  05050             SKIPG @TAC1                   ;IOUSE=1?\r
+        000357' 260140  000300* 05060             PUSHJ PDP, WSYNC              ;WAIT FOR DEVICE TO BECOME IN\r
+        000360' 254000  000372' 05070             JRST OUTS\r
+\r\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS                 PAGE 15\r
+        8-9-95\r
+\r
+\r
+\r
+        000361' 332120  000005  05110   OUTF:     SKIPE TAC1,@JBUF\r
+        000362' 254000  000367' 05120             JRST OUTF1\r
+        000363' 541600  000002  05130             HRRI UUO,2\r
+        000364' 260140  000066' 05140             PUSHJ PDP,UOUTBF\r
+        000365' 544246  000006  05150             HLR JBUF,DEVBUF(DEVDAT)\r
+        000366' 505240  000007  05160             HRLI JBUF,PROG\r
+        000367' 515040  400000  05170   OUTF1:    HRLZI TAC, IOUSE\r
+        000370' 413060  000005  05180             ANDCAB TAC, @JBUF             ;IOUSE:=0\r
+        000371' 542046  000010  05190             HRRM TAC,DEVOAD(DEVDAT)\r
+        000372' 550060  000005  05200   OUTS:     HRRZ TAC,@JBUF\r
+        000373' 260140  000000* 05210             PUSHJ PDP,BUFCLR\r
+        000374' 540120  000005  05220             HRR TAC1,@JBUF\r
+        000375' 505100  000007  05230             HRLI TAC1,PROG\r
+        000376' 135200  000475' 05240             LDB ITEM,[POINT 17,@TAC1,17]\r
+        000377' 275200  000001  05250             SUBI ITEM,1\r
+        000400' 260140  000242* 05260             PUSHJ PDP,IOSETC      ;JBFPTR18-35:=CURRENT BUFFER\r
+                                05270                                   ;ADDRESS+1\r
+                                05280                                   ;JBFCTR:=(BUFFER SIZE-1)*[36/BYTE\r
+                                05290                                   ;SIZE]\r
+        000401' 254000  000275* 05300             JRST UXIT             ;RETURN TO USERS PROGRAM\r
+\r
+        000402' 260140  000357* 05320   OUTDMP:   PUSHJ PDP,WSYNC\r
+        000403' 200046  000003  05330             MOVE TAC,DEVSER(DEVDAT)\r
+        000404' 260141  000006  05340             PUSHJ PDP,DDO(TAC)\r
+        000405' 260140  000307* 05350             PUSHJ PDP,WAIT1\r
+        000406' 254000  000401* 05360             JRST UXIT\r
+\r\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS                 PAGE 16\r
+        8-9-95\r
+\r
+\r
+\r
+\r
+                                05410   ,DEC 06 00 EX COM L PT PRE 01 OUTA\r
+                                05420   ,H.R. MORSE     64-12-26\r
+\r
+                                05440   ,CALLING SEQUENCE:\r
+                                05450   ,         PUSHJ PDP,OUTA\r
+                                05460   ,         EXIT                  ALWAYS RETURN HERE\r
+                                05470   ,IF THE ADDRESS FIELD OF AC UUO IS ZERO,EXIT. OTHERWISE,CHECK IOACT.\r
+                                05480   ,IF IOACT=1, WIAT FOR IOACT=0.\r
+                                05490   ,SET JBFADR18-35:=ADDRESS FIELD OF AC UUO. JBFADR0:=1 AND EXIT.\r
+\r
+                                05510   ,MONITOR INTERFACE\r
+                                05520   ,         STORAGE:13\r
+                                05530   ,         ROUTINES CALLED:      WSYNC\r
+                                05540   ,         SYMBOLS SET/USED:\r
+                                05550   ,             ACCUMULATORS:     DEVDAT U\r
+                                05560   ,                               IOS U           PROG U\r
+                                05570   ,                               JBUF S/U        TAC S/U\r
+                                05580   ,         DEVICE DATA BLOCK:    DEVIOS U        DEVBUF U\r
+                                05590   ,         IO STATUS WORD:       IOACT U\r
+                                05600   ,         JOB BUFFER AREA:      IOUSE U\r
+                                05610   ,                               JBFADR S\r
+\r
+                                05630             INTERN OUTA\r
+        000407' 606600  777777  05640   OUTA:     TRNN UUO, 777777      ;IS BUFFER ADDRESS SPECIFIED?\r
+        000410' 263140  000000  05650             POPJ PDP,             ;NO\r
+        000411' 260140  000405* 05660             PUSHJ PDP,WAIT1\r
+        000412' 544246  000006  05670             HLR JBUF,DEVBUF(DEVDAT)\r
+        000413' 545240  000007  05680             HLRI JBUF,PROG\r
+        000414' 542620  000005  05690             HRRM UUO,@JBUF\r
+        000415' 542606  000010  05700             HRRM UUO,DEVOAD(DEVDAT)\r
+        000416' 515040  400000  05710             HRLZI TAC,IOUSE\r
+        000417' 412060  000005  05720             ANDCAM TAC,@JBUF\r
+        000420' 263140  000000  05730             POPJ PDP,             ;RETURN\r
+\r\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS                 PAGE 17\r
+        8-9-95\r
+\r
+\r
+\r
+\r
+                                05780   ,DEC 06 00 EX COM L PT PRE 03 CALOUT\r
+                                05790   ,H.R. MORSE      2/21/65\r
+\r
+                                05810   ,CALLING SEQUENCE\r
+                                05820   ,         PUSHJ PDP,CALOUT\r
+                                05830   ,         EXIT\r
+\r
+                                05850   ,DISPATCH TO DEVICE SERVICE ROUTINE DOU TO INITIATE OUTPUT.\r
+\r
+                                05870   ,MONITOR INTERFACE\r
+                                05880   ,         STORAGE:2\r
+                                05890   ,         SYMBOLS SET/USED:\r
+                                05900   ,             ACCUMULATORS:     DEVDAT U\r
+                                05910   ,                               TAC U\r
+                                05920   ,         DEVICE DATA BLOCK:    DEVSER U\r
+\r
+                                05940             INTERN CALOUT\r
+        000421' 606000  010000  05950   CALOUT:   TRNN IOS,IOACT\r
+        000422' 254000  000426' 05960             JRST CALOU1\r
+        000423' 606000  000040  05970             TRNN IOS,IOCON\r
+        000424' 263140  000000  05980             POPJ PDP,\r
+        000425' 260140  000402* 05990             PUSHJ PDP,WSYNC\r
+        000426' 200046  000003  06000   CALOU1:   MOVE TAC,DEVSER(DEVDAT)\r
+        000427' 254001  000002  06010             JRST DOU(TAC)\r
+\r\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS                 PAGE 18\r
+        8-9-95\r
+\r
+\r
+\r
+\r
+                                06060   ,RELEASE A DEVICE\r
+\r
+                                06080   INTERNAL RELEA1,RELEA2,RELEA3,RELEA5\r
+\r
+        000430' 200006  000002  06100   RELEA0:   MOVE IOS,DEVIOS(DEVDAT)       ;CALLED FROM INIT\r
+        000431'                 06110   RELEA2:RELEA3:\r
+        000431' 620600  777777  06120   RELEA1:   TRZ UUO,-1            ;CLOSE BOTH INPUT AND OUTPUT\r
+        000432' 260140  000000' 06130             PUSHJ PDP,CLOSE1\r
+        000433' 260140  000411* 06140             PUSHJ PDP,WAIT1       ;WAIT FOR DEVICE TO BECOME INACTIVE\r
+        000434' 200046  000003  06150   RELEA5:   MOVE TAC, DEVSER(DEVDAT)      ;RELEASE WITHOUT WAITING\r
+        000435' 260141  000000  06160             PUSHJ PDP, DRL (TAC)\r
+        000436' 135040  000310* 06170             LDB TAC,PUUOAC\r
+        000437' 402001  000312* 06180             SETZM USRJDA(TAC)\r
+        000440' 201040  000017  06190             MOVEI TAC,17          ;IS THE DEVICE ON AONTHER USER CHANNEL?\r
+        000441' 550101  000437* 06200   RELEA4:   HRRZ TAC1,USRJDA(TAC)\r
+        000442' 302106  000000  06210             CAIE TAC1,(DEVDAT)\r
+        000443' 365040  000441' 06220             SOJGE TAC,RELEA4\r
+        000444' 325040  000406* 06230             JUMPGE TAC,UXIT       ;EXIT IF ON ANOTHER CHANNEL\r
+        000445' 201100  200000  06240             MOVEI TAC1,ASSPRG     ;OTHERWISE CLEAR ASSIGNED BY PROG. BIT\r
+        000446' 413106  000004  06250             ANDCAB TAC1,DEVMOD(DEVDAT)\r
+        000447' 616100  000476' 06260             TDNN TAC1,[XWD TTYUSE,ASSCON] ; ASSIGNED BY CONSOLE OR TTY I\r
+        000450' 137600  000000* 06270             DPB UUO,PJOBN         ;NO. CLEAR JOB NUMBER\r
+        000451' 254000  000444* 06280             JRST UXIT\r
+\r
+\r\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS                 PAGE 19\r
+        8-9-95\r
+\r
+\r
+\r
+\r
+                                06340   ,DEC 06 00 EX UUO L PT PRE 01 STATO\r
+                                06350   ,H.R. MORSE     64-12-26\r
+\r
+                                06370   ,CALLING SEQUENCE\r
+                                06380   ,         STATO D,MASK\r
+                                06390   ,         EXIT1                 ALL SELECTED BITS ARE 0\r
+                                06400   ,         EXIT2                 SOME SELECTED BITS ARE 1\r
+                                06410   ,TESTS BITS OF I/O STATUS WORD OF DEVICE ON USERS CHANNEL D WHICH\r
+                                06420   ,ARE SELECTED BY MASK.\r
+\r
+                                06440   ,MONITOR INTERFACE:\r
+                                06450   ,         STORAGE:              3\r
+                                06460   ,         ROUTINES CALLED:      UXIT\r
+                                06470   ,         SYMBOLS SET/USED:\r
+                                06480   ,             ACCUMULATORS:     IOS U\r
+                                06490   ,                               PDP U\r
+                                06500   ,                               UUO U\r
+\r
+                                06520             INTERN USTATO\r
+\r
+        000452' 602014  000000  06540   USTATO:   TRNE IOS,(UUO)        ;SKIP IF ANY INDICATED BITS ARE ONE\r
+        000453' 350003  000000  06550             AOS (PDP)\r
+        000454' 254000  000451* 06560             JRST UXIT\r
+\r\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS                 PAGE 20\r
+        8-9-95\r
+\r
+\r
+\r
+                                06600   ,DEC 06 00 EX UUO L PT PRE 01 STATUS\r
+                                06610   ,H.R. MORSE   64-12-26\r
+\r
+                                06630   ,CALLING SEQUENCE\r
+                                06640   ,         STATUS D,ADR\r
+                                06650   ,         EXIT                  ALWAYS RETURNS HERE\r
+                                06660   ,STORES I/O STATUS WORD OF DEVICE ON CHANNEL D IN LOCATION ADR.\r
+\r
+                                06680   ,MONITOR INTERFACE\r
+                                06690   ,         STORAGE:              3\r
+                                06700   ,         ROUTINES CALLED:      UXIT\r
+                                06710   ,         SYMBOLS SET/USED:     \r
+                                06720   ,             ACCUMULATORS:     IOS U\r
+                                06730   ,                               PROG U\r
+                                06740   ,                               UUO U\r
+\r
+                                06760   INTERN USTATS\r
+                                06770   EXTERNAL ADRERR,USRREL\r
+\r
+        000455' 200040  000000* 06790   USTATS:   MOVE TAC,USRREL               ;CHECK TO SEE IF IN BOUNDS\r
+        000456' 307054  000000  06800             CAIG TAC,(UUO)\r
+        000457' 260140  000000* 06810             PUSHJ PDP,ADRERR\r
+        000460' 505600  000007  06820             HRLI UUO,PROG         ;LOAD STATUS INTO INDICATED ADDRESS.\r
+        000461' 552020  000014  06830             HRRZM IOS,@UUO\r
+        000462' 254000  000454* 06840             JRST UXIT\r
+\r\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS                 PAGE 21\r
+        8-9-95\r
+\r
+\r
+\r
+                                06880   ,CALLING SEQUENCE\r
+                                06890   ,         SETSTS D,BITS\r
+                                06900   ,         EXIT                  ALWAYS RETURN HERE\r
+\r
+                                06920   INTERNAL USETST\r
+                                06930   EXTERNAL WAIT1,SETIOS\r
+\r
+        000463' 260140  000433* 06950   USETST:   PUSHJ PDP,WAIT1       ;WAIT TILL DEVICE INACTIVE\r
+        000464' 205000  000002  06960             MOVSI IOS, IOBEG\r
+        000465' 436006  000002  06970             IORM IOS,DEVIOS(DEVDAT)\r
+        000466' 542606  000002  06980             HRRM UUO,DEVIOS(DEVDAT)\r
+        000467' 254000  000462* 06990             JRST UXIT\r
+\r
+                                07010   ,DEC 06 00 EX UUO L PT PRE 01 STATZ\r
+                                07020   ,H.R. MORSE     64-12-26\r
+\r
+                                07040   ,CALLING SEQUENCE\r
+                                07050   ,         STATZ D,MASK\r
+                                07060   ,         EXIT1                 SOME SELECTED BITS ARE 1\r
+                                07070   ,         EXIT2                 ALL SELECTED BITS ARE 0\r
+\r
+                                07090   ,TESTS BITS OF I/O STATUS WORD OF DEVICE ON USERS\r
+                                07100   ,CHANNEL D WHICH ARE SELECTED BY MASK,\r
+\r
+                                07120   ,MONITOR INTERFACE\r
+                                07130   ,         STORAGE:              3\r
+                                07140   ,         ROUTINES CALLED:      UXIT\r
+                                07150   ,         SYMBOLS SET/USED:\r
+                                07160   ,             ACCUMULATORS:     IOS U\r
+                                07170   ,                               PDP U\r
+                                07180   ,                               UUO U\r
+\r
+                                07200             INTERN USTATZ\r
+\r
+        000470' 606014  000000  07220   USTATZ:   TRNN IOS,(UUO)        ;SKIP IF ALL INDICATED BITS ARE ZERO\r
+        000471' 350003  000000  07230             AOS (PDP)\r
+        000472' 254000  000467* 07240             JRST UXIT\r
+\r
+                                07260             END,\r
+        000473' 000040  020000\r
+        000474' 000040  200000\r
+        000475' 222120  000002\r
+        000476' 010000  400000\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 000477\r
+\r
+8K CORE USED\r
+\r\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS                 PAGE 22\r
+        SYMBOL TABLE\r
+\r
+                000266  \r
+A               000000  INT\r
+AC1             000015  INT\r
+AC2             000016  INT\r
+AC3             000017  INT\r
+ADRCK           000344' EXT\r
+ADRERR          000457' EXT\r
+AL              000001  INT\r
+ASSCON          400000  INT\r
+ASSIN           000112' EXT\r
+ASSPRG          200000  INT\r
+B               000014  INT\r
+BUFCLC          000077' EXT\r
+BUFCLR          000373' EXT\r
+BUFPNT          000012  INT\r
+BUFWRD          000013  INT\r
+CALIN           000276' \r
+CALOU1          000426' \r
+CALOUT          000421' INT\r
+CLOSB           002000  INT\r
+CLOSE1          000000' INT\r
+CLSIN           000002  INT\r
+CLSOUT          000001  INT\r
+CUXIT1          000113' EXT\r
+CUXIT2          000141' EXT\r
+D               000017  INT\r
+DAT             000005  INT\r
+DCL             000001  INT\r
+DCW             020000  INT\r
+DDI             000007  INT\r
+DDO             000006  INT\r
+DDTMEM          000037  INT\r
+DDTSYM          000036  INT\r
+DEN             000004  INT\r
+DEVADR          000007  INT\r
+DEVBUF          000006  INT\r
+DEVCHR          000001  INT\r
+DEVCTR          000011  INT\r
+DEVDAT          000006  INT\r
+DEVIAD          000007  INT\r
+DEVIOS          000002  INT\r
+DEVLOG          000005  INT\r
+DEVMOD          000004  INT\r
+DEVNAM          000000  INT\r
+DEVOAD          000010  INT\r
+DEVPTR          000010  INT\r
+DEVSER          000003  INT\r
+DGF             000012  INT\r
+DIN             000003  INT\r
+DLK             000005  INT\r
+DOU             000002  INT\r
+DR              000016  INT\r
+DRL             000000  INT\r
+\r\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS                 PAGE 22-1\r
+        SYMBOL TABLE\r
+\r
+DSI             000011  INT\r
+DSO             000010  INT\r
+DTW             040000  INT\r
+DVAVAL          000040  INT\r
+DVCDR           100000  INT\r
+DVDIR           000004  INT\r
+DVDIRI          400000  INT\r
+DVIN            000002  INT\r
+DVLPT           040000  INT\r
+DVMTA           000020  INT\r
+DVOUT           000001  INT\r
+DVTTY           000010  INT\r
+ENTRB           020000  INT\r
+ERROR           000000  EXT\r
+I               000010  INT\r
+IB              000013  INT\r
+IBUFB           200000  INT\r
+ILLMOD          000000  EXT\r
+IN              000163' INT\r
+IN1             000173' \r
+INDMP           000271' \r
+INEOF           000250' \r
+INITB           400000  INT\r
+INPB            010000  INT\r
+INPT0A          000225' \r
+INPT0B          000220' \r
+INPT0C          000224' \r
+INPUT0          000212' \r
+INPUT1          000227' \r
+INPUT2          000236' \r
+INPUT3          000265' \r
+INPUTA          000253' \r
+INPUTF          000256' \r
+IO              000020  INT\r
+IOACT           010000  INT\r
+IOBEG           000002  INT\r
+IOBKTL          040000  INT\r
+IOCON           000040  INT\r
+IODEND          020000  INT\r
+IODERR          200000  INT\r
+IODISC          400000  INT\r
+IODONE          400000  INT\r
+IODTER          100000  INT\r
+IOEND           000040  INT\r
+IOFST           000004  INT\r
+IOIERR          000000  EXT\r
+IOIMPM          400000  INT\r
+IONRCK          000100  INT\r
+IORDEL          000100  INT\r
+IORET           000020  INT\r
+IOS             000000  INT\r
+IOSETC          000400' EXT\r
+IOSTRT          000010  INT\r
+\r\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS                 PAGE 22-2\r
+        SYMBOL TABLE\r
+\r
+IOUSE           400000  INT\r
+IOW             000001  INT\r
+IOWC            000020  INT\r
+IOWS            400000  INT\r
+ITEM            000004  INT\r
+JBFADR          000000  INT\r
+JBFCTR          000002  INT\r
+JBFPTR          000001  INT\r
+JBUF            000005  INT\r
+JDAT            000011  INT\r
+JERR            002000  INT\r
+JIOW            100000  INT\r
+JNA             004000  INT\r
+JOB             000111' EXT\r
+JOBJDA          000000  EXT\r
+LOOKB           040000  INT\r
+MTW             010000  INT\r
+OBUFB           100000  INT\r
+OUT             000306' INT\r
+OUT1            000317' \r
+OUT2            000340' \r
+OUTA            000407' INT\r
+OUTDMP          000402' \r
+OUTF            000361' \r
+OUTF1           000367' \r
+OUTPB           004000  INT\r
+OUTS            000372' \r
+PDP             000003  INT\r
+PICHN           000100  INT\r
+PIOMOD          000313' EXT\r
+PJOBN           000450' EXT\r
+PROG            000007  INT\r
+PUUOAC          000436' EXT\r
+RELEA0          000430' \r
+RELEA1          000431' INT\r
+RELEA2          000431' INT\r
+RELEA3          000431' INT\r
+RELEA4          000441' \r
+RELEA5          000434' INT\r
+RUN             200000  INT\r
+RUNABL          204000  INT\r
+SETBYT          000155' EXT\r
+SETIOS          000120' EXT\r
+TAC             000001  INT\r
+TAC1            000002  INT\r
+TEM             000010  INT\r
+TTYATC          020000  INT\r
+TTYUSE          010000  INT\r
+UCLS0           000026' \r
+UCLS1           000034' \r
+UCLS2           000041' \r
+UCLS3           000060' \r
+UCLS4           000013' \r
+\r\fIOCONT - CONTROL FOR IO PROGRAMMED OPERATORS                 PAGE 22-3\r
+        SYMBOL TABLE\r
+\r
+UINBF           000076' INT\r
+UINIT           000103' INT\r
+UINIT1          000111' INT\r
+UINIT4          000127' \r
+UINIT5          000133' \r
+UINITZ          000142' INT\r
+UINTQ           000121' EXT\r
+UOBF1           000072' \r
+UOUTBF          000066' INT\r
+USETST          000463' INT\r
+USRJDA          000441' EXT\r
+USRMOD          010000  INT\r
+USRREL          000455' EXT\r
+USTATO          000452' INT\r
+USTATS          000455' INT\r
+USTATZ          000470' INT\r
+UUO             000014  INT\r
+UXIT            000472' EXT\r
+WAIT1           000463' EXT\r
+WSYNC           000425' EXT\r
+\f   IIIIIIIII            OOOOOOOOO            CCCCCCCCCCCC         SSSSSSSSSSSS         SSSSSSSSSSSS                     \r
+   IIIIIIIII            OOOOOOOOO            CCCCCCCCCCCC         SSSSSSSSSSSS         SSSSSSSSSSSS                     \r
+   IIIIIIIII            OOOOOOOOO            CCCCCCCCCCCC         SSSSSSSSSSSS         SSSSSSSSSSSS                     \r
+      III            OOO         OOO      CCC                  SSS                  SSS                                 \r
+      III            OOO         OOO      CCC                  SSS                  SSS                                 \r
+      III            OOO         OOO      CCC                  SSS                  SSS                                 \r
+      III            OOO         OOO      CCC                  SSS                  SSS                                 \r
+      III            OOO         OOO      CCC                  SSS                  SSS                                 \r
+      III            OOO         OOO      CCC                  SSS                  SSS                                 \r
+      III            OOO         OOO      CCC                     SSSSSSSSS            SSSSSSSSS                        \r
+      III            OOO         OOO      CCC                     SSSSSSSSS            SSSSSSSSS                        \r
+      III            OOO         OOO      CCC                     SSSSSSSSS            SSSSSSSSS                        \r
+      III            OOO         OOO      CCC                              SSS                  SSS                     \r
+      III            OOO         OOO      CCC                              SSS                  SSS                     \r
+      III            OOO         OOO      CCC                              SSS                  SSS                     \r
+      III            OOO         OOO      CCC                              SSS                  SSS                     \r
+      III            OOO         OOO      CCC                              SSS                  SSS                     \r
+      III            OOO         OOO      CCC                              SSS                  SSS                     \r
+   IIIIIIIII            OOOOOOOOO            CCCCCCCCCCCC      SSSSSSSSSSSS         SSSSSSSSSSSS                        \r
+   IIIIIIIII            OOOOOOOOO            CCCCCCCCCCCC      SSSSSSSSSSSS         SSSSSSSSSSSS                        \r
+   IIIIIIIII            OOOOOOOOO            CCCCCCCCCCCC      SSSSSSSSSSSS         SSSSSSSSSSSS                        \r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  11:23:08\r
+File: DSKB1 :IOCSS .LST   [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:21
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:2477 \r
+File will be deleted after printing\r
+\f\rIOCSS - IO COMMON SYSTEM SUBROUTINES                 PAGE 1\r
+        8-15-65\r
+\r
+                                00010           XLIST\r
+                                01930          LIST\r
+\r\fIOCSS - IO COMMON SYSTEM SUBROUTINES                 PAGE 7\r
+        8-15-65\r
+\r
+\r
+                                00010              TITLE IOCSS - IO COMMON SYSTEM SUBROUTINES\r
+                                00020              SUBTTL 8-15-65\r
+                                00030              EXTERNAL CLOSE1,DEVLST,ERROR,JBTADR\r
+                                00040              EXTERNAL JOB,JOBFF,RELEA1,USRJDA,WAIT1,CLDS,CLEN\r
+                                00050              EXTERNAL PJOBN,CPOPJ1,PIOMOD,CPOPJ,CPOPJ2\r
+                                00060              EXTERNAL SCNOFF,SCNON\r
+\r\fIOCSS - IO COMMON SYSTEM SUBROUTINES                 PAGE 2\r
+        8-15-65\r
+\r
+\r
+\r
+                                00100   ,DEC 06 00 EX COM L PT PRE 01 ADVBFE\r
+                                00110   ,H.R. MORSE         64-12-26\r
+                                00120   ,CALLING SEQUENCE\r
+                                00130   ,         PUSHJ PDP,ADVBFE\r
+                                00140   ,         EXIT1               RETURN IF NEXT BUFFER IS EMPTY\r
+                                00150   ,         EXIT2               RETURN IF NEXT BUFFER IS FULL\r
+                                00160   ,CLEARS THE USE BIT (IOUSE:=0) OF THE BUFFER POINTED TO BY THE\r
+                                00170   ,OUTPUT BUFFER ADDRESS (DEVOAD) OF THE CURRENT DEVICE DATA BLOCK\r
+                                00180   ,AND ADVANCES THE BUFFER ADDRESS TO THE NEXT BUFFER IN THE RING\r
+                                00190   ,UPON RETURN, SKIPS IF THE NEXT BUFFER IS FULL.\r
+                                00200   ,MONITOR INTERFACE\r
+                                00210   ,         STORAGE:  6\r
+                                00220   ,         SYMBOLS SET/USED:\r
+                                00230   ,             ACCUMULATORS:     DEVDAT U\r
+                                00240   ,                               PDP    S/U\r
+                                00250   ,                               TAC    S/U\r
+                                00260   ,             DEVICE DATA BLOCK:         DEVOAD S/U\r
+                                00270   ,             JOB BUFFER HEADER:         IOUSE  S/U\r
+                                00280             INTERN ADVBFE\r
+        000000'                 00290   ADVBFE:   ADRCHK DEVOAD(DEVDAT)^        EXTERNAL ADRCK\r
+        000000' 260140  000000*                 PUSHJ PDP,ADRCK\r
+        000001' 550046  000010                  HRRZ TAC,DEVOAD(DEVDAT)^\r
+        000002' 515040  400000  00300             HRLZI TAC,IOUSE;      IOUSE:=0\r
+        000003' 413066  000010  00310             ANDCAB TAC,@DEVOAD(DEVDAT)\r
+        000004' 542046  000010  00320             HRRM TAC,DEVOAD(DEVDAT); DEVOAD 18-35:=NEXT BUFFER ADDRESS\r
+        000005' 335026  000010  00330             SKIPGE @DEVOAD(DEVDAT);       IS IOUSE=0?\r
+        000006' 350003  000000  00340             AOS (PDP);                    EXIT2. BUFFER IS FULL\r
+        000007' 263140  000000  00350             POPJ PDP,;            EXIT1. BUFFER IS EMPTY\r
+\r\fIOCSS - IO COMMON SYSTEM SUBROUTINES                 PAGE 3\r
+        8-15-65\r
+\r
+\r
+\r
+                                00390   ,DEC 06 00 EX COM L PT PRE 01 ADVBFF\r
+                                00400   ,H.R. MORSE         64-12-26\r
+                                00410   ,CALLING SEQUENCE\r
+                                00420   ,         PUSHJ PDP,ADVBFF\r
+                                00430   ,         EXIT1                 RETURN IF NEXT BUFFER IS FULL\r
+                                00440   ,         EXIT2                 RETURN IF NEXT BUFFER IS EMPTY\r
+                                00450   ,SETS THE USE BIT (IOUSE:=1) OF THE BUFFER POINTED TO BY THE\r
+                                00460   ,INPUT BUFFER ADDRESS (DEVIAD) OF THE CURRENT DEVICE DATA BLOCK\r
+                                00470   ,AND ADVANCES THE BUFFER ADDRESS TO THE NEXT BUFFER IN THE RING.\r
+                                00480   ,UPON RETURN. SKIPS IF THE NEXT BUFFER IS EMPTY,\r
+                                00490   ,MONITOR INTERFACE\r
+                                00500   ,         STORAGE:   6\r
+                                00510   ,         SYMBOLS SET/USED:\r
+                                00520   ,             ACCUMULATORS:             DEVDAT U\r
+                                00530   ,                                       PDP    S/U\r
+                                00540   ,                                       TAC    S/U\r
+                                00550   ,             DEVICE DATA BLOCK:        DEVIAD S/U\r
+                                00560   ,             JOB BUFFER HEADER:        IOUSE  S/U\r
+                                00570             INTERN ADVBFF\r
+        000010' 260140  000000* 00580   ADVBFF:   ADRCHK DEVIAD(DEVDAT)^PUSHJ PDP,ADRCK\r
+        000011' 550046  000007                  HRRZ TAC,DEVIAD(DEVDAT)^\r
+        000012' 515040  400000  00590             HRLZI TAC,IOUSE;      IOUSE:=1\r
+        000013' 437066  000007  00600             IORB TAC,@DEVIAD(DEVDAT)\r
+        000014' 542046  000007  00610             HRRM TAC,DEVIAD(DEVDAT); DEVIAD:=NEXT BUFFER ADDRESS\r
+        000015' 331026  000007  00620             SKIPL @DEVIAD(DEVDAT);        IOUSE=1?\r
+        000016' 350003  000000  00630             AOS (PDP);            EXIT2. NEXT BUFFER IS EMPTY\r
+        000017' 263140  000000  00640             POPJ PDP,;            EXIT1. NEXT BUFFER IS FULL\r
+\r\fIOCSS - IO COMMON SYSTEM SUBROUTINES                 PAGE 4\r
+        8-15-65\r
+\r
+\r
+\r
+\r
+                                00690   ,DEC 06 00 EX COM L PT PRE 01 ASCIA\r
+                                00700   ,C. FRAZIER AND W. SEGAL      64-12-26\r
+                                00710   ,CALLING SEQUENCE\r
+                                00720   ,         PUSHJ PDP,ASCIA\r
+                                00730   ,         EXIT                ALWAYS RETURNS HERE\r
+                                00740   ,ADDS THE ASCII INCREMENT (RIGHT JUSTIFIED) IN AC TAC1 TO THE FIVE\r
+                                00750   ,DIGIT ASCII NUMBER (LEFT JUSTIFIED) IN AC TAC AND LEAVES THE \r
+                                00760   ,RESULT (LEFT JUSTIFIED) IN AC TAC. TAC1 IS RESTORED.\r
+                                00770   ,MONITOR INTERFACE\r
+                                00780   ,         STORAGE:  21\r
+                                00790   ,         SYMBOLS SET/USED:\r
+                                00800   ,             ACCUMULATORS:     PDP  U\r
+                                00810   ,                               TAC  S/U\r
+                                00820   ,                               TAC1 S/U\r
+\r\fIOCSS - IO COMMON SYSTEM SUBROUTINES                 PAGE 5\r
+        8-15-65\r
+\r
+\r
+\r
+                                00860   ;         INTERN ASCIA\r
+                                00870   ;ASCIA:   PUSH PDP,TAC1;        SAVE TAC1 = ASCII INCREMENT (RIGHT JUST\r
+                                00880   ;         AND TAC1,K2;          CLEAR MOST SIGNIFICANT 3 BITS OF\r
+                                00890   ;,                              EACH CHARACTER\r
+                                00900   ;         LSH TAC,-1;           TAC=FIVE DIGIT ASCII NO.(RIGHT JUST.)\r
+                                00910   ;         IOR TAC,K4;           SET SECOND AND THIRD MOST SIGNIFICANT\r
+                                00920   ;,                              BITS OF EACH CHARACTER TO ONES.\r
+                                00930   ;         TLZN TAC,400000\r
+                                00940   ;         ADD TAC,K1\r
+                                00950   ;         ADD TAC1,TAC\r
+                                00960   ;         AND TAC1,K3\r
+                                00970   ;         MOVE TAC,K4\r
+                                00980   ;         AND TAC,TAC1\r
+                                00990   ;         ASH TAC,-3\r
+                                01000   ;         SUBM TAC1,TAC\r
+                                01010   ;         IOR TAC,K4\r
+                                01020   ;         LSH TAC,1\r
+                                01030   ;         TRO TAC,1\r
+                                01040   ;         POP PDP,TAC1;         RESTORE TAC1\r
+                                01050   ;         POPJ PDP,;            RETURN\r
+                                01060   ;K1:      OCT 215064321506;     CHARACTER MASK: 1000110\r
+                                01070   ;K2:      OCT 036170743617;     CHARACTER MASK: 0001111\r
+                                01080   ;K3:      OCT 176773757677;     CHARACTER MASK: 0111111\r
+                                01090   ;K4:      OCT 140603014060;     CHARACTER MASK: 0110000\r
+\r\fIOCSS - IO COMMON SYSTEM SUBROUTINES                 PAGE 6\r
+        8-15-65\r
+\r
+\r
+\r
+                                01130             INTERNAL ASSIN,ASSASG\r
+\r
+        000020' 260140  000041' 01150   ASSIN:    PUSHJ PDP,DEVSRC      ;SEARCH FOR DEVICE\r
+        000021' 263140  000000  01160             POPJ PDP,             ;DEVICE NOT FOUND\r
+        000022' 201100  200000  01170             MOVEI TAC1, ASSPRG    ;DEVICE FOUND, FLAG AS ASSIGNED BY PROG\r
+\r
+                                01190   ;ASSIGN DEVICE IF UNASSIGNED\r
+                                01200   ;CALL:    MOVE ITEM, JOB NUMBER\r
+                                01210   ;         MOVE DEVDAT, ADDR. OF DDB\r
+                                01220   ;         MOVEI TAC1, EITHER ASSPRG OR ASSCON\r
+                                01230   ;         PUSHJ PDP, ASSASG\r
+                                01240   ;         CANT ASSIGN RETURN\r
+                                01250   ;         ASSIGNED RETURN\r
+\r
+        000023' 700200  000000* 01270   ASSASG:   CONO APR,CLDS         ;DISABLE CLOCK\r
+        000024' 135040  000000* 01280             LDB TAC,PJOBN         ;GET JOB NUMBER IN DEV DATA BLOCK\r
+        000025' 316040  000004  01290             CAMN TAC,ITEM         ;IS IT ALREADY ASSIGNED TO THIS JOB\r
+        000026' 254000  000035' 01300             JRST ASSAS1           ;YES\r
+        000027' 201040  600000  01310             MOVEI TAC, ASSPRG+ASSCON      ;NO, IS IT ASSIGNED TO ANOTHE\r
+        000030' 700600  000000* 01320             CONO PI, SCNOFF       ;TURN SCANNER OFF\r
+        000031' 612046  000004  01330             TDNE TAC, DEVMOD(DEVDAT)      ;ARE EITHER ASSIGNED BITS SET\r
+        000032' 254000  000036' 01340             JRST ASSAS2           ;YES\r
+        000033' 436106  000004  01350             IORM TAC1, DEVMOD(DEVDAT)     ;NO, SET ONE OF THEM\r
+        000034' 137200  000024* 01360             DPB ITEM,PJOBN        ;AND STORE JOB NUMBER\r
+        000035' 350003  000000  01370   ASSAS1:   AOS (PDP)\r
+        000036' 700600  000000* 01380   ASSAS2:   CONO PI, SCNON        ;TURN SCANNER BACK ON\r
+        000037' 700200  000000* 01390             CONO APR,CLEN         ;RENABLE CLOCK\r
+        000040' 263140  000000  01400             POPJ PDP,\r
+\r\fIOCSS - IO COMMON SYSTEM SUBROUTINES                 PAGE 7\r
+        8-15-65\r
+\r
+\r
+\r
+                                01440   ;ROUTINE TO SEARCH FOR A DEVICE\r
+                                01450   ;CALL:    HRR ITEM,JOB NUMBER\r
+                                01460   ;         MOVE TAC,[SIXBIT .DEVICE NAME.]\r
+                                01470   ;         PUSHJ PDP, DEVSRC\r
+                                01480   ;         NOT FOUND\r
+                                01490   ;         FOUND\r
+\r
+                                01510             INTERNAL DEVLG,DEVSRC,DEVPHY\r
+                                01520             EXTERNAL SYSTAP,DEVOPR\r
+\r
+        000041' 260140  000044' 01540   DEVSRC:   PUSHJ PDP, DEVLG      ;SEARCH LOGICAL NAMES FIRST\r
+        000042' 254000  000056' 01550             JRST DEVPHY           ;NOT FOUND, SEARCH PHYSICAL NAMES\r
+        000043' 254000  000000* 01560             JRST CPOPJ1           ;FOUND\r
+\r
+                                01580   ;SEARCH LOGICAL NAMES\r
+\r
+        000044' 554300  000000* 01600   DEVLG:    HLRZ DEVDAT,DEVLST    ;BEGINNING OF DDB CHAIN\r
+        000045' 322040  000000* 01610             JUMPE TAC,CPOPJ       ;0 CANNOT BE A LOGICAL NAME\r
+        000046' 312046  000005  01620   DEVLP0:   CAME TAC,DEVLOG(DEVDAT)       ;COMPARE WITH LOGICAL NAME\r
+        000047' 254000  000053' 01630             JRST DEV0             ;NO MATCH\r
+        000050' 135100  000034* 01640             LDB TAC1,PJOBN        ;DOES THE LOGICAL NAME BELONG TO THIS J\r
+        000051' 316100  000004  01650             CAMN TAC1,ITEM\r
+        000052' 254000  000043* 01660             JRST CPOPJ1                   ;YES\r
+        000053' 554306  000003  01670   DEV0:     HLRZ DEVDAT,DEVSER(DEVDAT)    ;NO, KEEP LOOKING\r
+        000054' 326300  000046' 01680             JUMPN DEVDAT,DEVLP0\r
+        000055' 263140  000000  01690             POPJ PDP,             ;FINISH AND NOT FOUND\r
+\r
+                                01710   ;SEARCH PHYSICAL NAMES\r
+\r
+        000056' 322040  000045* 01730   DEVPHY:   JUMPE TAC,CPOPJ       ;ZERO CANNOT BE A LOGICAL NAME\r
+        000057' 316040  000370' 01740             CAMN TAC,[SIXBIT  /OPR/] ;IS IT "OPR"?\r
+        000060' 200040  000000* 01750             MOVE TAC,DEVOPR       ;YES, CHANGE TO OPERATORS TTY\r
+        000061' 316040  000371' 01760             CAMN TAC,[SIXBIT  /SYS/] ;IS IT "SYS"?\r
+        000062' 200040  000000* 01770             MOVE TAC,SYSTAP       ;YES, CHANGE TO SYSTEM TAPE NAME\r
+        000063' 554300  000044* 01780             HLRZ DEVDAT,DEVLST    ;SEARCH DEVICE DATA BLOCKS\r
+        000064' 316046  000000  01790   DEVLP1:   CAMN TAC,DEVNAM(DEVDAT)\r
+        000065' 254000  000052* 01800             JRST CPOPJ1           ;FOUND\r
+        000066' 554306  000003  01810             HLRZ DEVDAT,DEVSER(DEVDAT)\r
+        000067' 326300  000064' 01820             JUMPN DEVDAT,DEVLP1\r
+        000070' 263140  000000  01830             POPJ PDP, ;NOT FOUND\r
+\r\fIOCSS - IO COMMON SYSTEM SUBROUTINES                 PAGE 8\r
+        8-15-65\r
+\r
+\r
+\r
+                                01870   ,DEC 06 00 EX COM L PT PRE 01 BUFCLC\r
+                                01880   ,H. R. MORSE        64-12-26\r
+                                01890   ,CALLING SEQUENCE\r
+                                01900   ,         PUSHJ PDP,BUFCLC\r
+                                01910   ,         EXIT                  RETURNS HERE IF MEMORY NOT EXCEEDED\r
+                                01920   , SETS UP AN N BUFFER RING FOLLOWING THE USERS PROGRAM, WHERE N\r
+                                01930   , IS IN THE ADDRESS FIELD OF AC UUO.\r
+                                01940   , THE BUFFER RING FORMAT IS AS FOLLOWS:\r
+                                01950   ,         LOCATION  LH   CONTENTS   RH\r
+                                01960   , C(JOBFF) + 1              BUFFER              C(JOBFF) +1\r
+                                01970   ,    + 0(BUFFER SIZE+2)      SIZE                    + 1(BUFFER SIZ+2)\r
+                                01980   , C(JOBFF) +1               BUFFER              C(JOBFF) +1\r
+                                01990   ,    +1(BUFFER SIZE+2)       SIZE                    +  2(BUFFER SIZE+2)\r
+                                02000   ,        .                    .                             .\r
+                                02010   ,        .                    .                             .\r
+                                02020   ,        .                    .                             .\r
+                                02030   , C(JOBFF) + 1              BUFFER              C(JOBFF) + 1\r
+                                02040   ,    + (N-2)(BUFFER SIZE+2)  SIZE                    +(N-1)(BUFFER SIZE+2)\r
+                                02050   , C(JOBFF) + 1              BUFFER              C(JOBFF) + 1\r
+                                02060   ,    + (N-1)(BUFFER SIZE+2)  SIZE       \r
+                                02070   ,THEN SET           BUFPNT:=IOUS,C(JOBFF) + 1\r
+                                02080   , AND               JOBFF:=C(JOBFF) + 1 + N(BUFFER SIZE + 2)\r
+                                02090   , BUFWRD IS RESTORED.\r
+                                02100   ,MONITOR INTERFACE\r
+                                02110   ,         STORAGE:  20\r
+                                02120   ,         ROUTINES CALLED:   ADRCK\r
+                                02130   ,         SYMBOLS SET/USED:\r
+                                02140   ,             ACCUMULATORS:  BUFPNT S/U         PROG   U\r
+                                02150   ,                            BUFWRD S/U         TAC   S/U\r
+                                02160   ,                            DEVDAT U           TAC1  S/U\r
+                                02170   ,                            PDP    S/U         UUO   U\r
+                                02180   ,         DEVICE DATA BLOCK: DEVCHR U\r
+                                02190   ,         JOB AREA:          JOBFF  S/U\r
+                                02200   ,         JOB BUFFER HEADER: IOUSE  U\r
+\r\fIOCSS - IO COMMON SYSTEM SUBROUTINES                 PAGE 9\r
+        8-15-65\r
+\r
+\r
+\r
+                                02240             INTERN BUFCLC\r
+        000071' 261140  000013  02250   BUFCLC:   PUSH PDP,BUFWRD;      SAVE BUFWRD ON STACK\r
+        000072' 135040  000372' 02260             LDB TAC,[POINT 12,DEVCHR(DEVDAT),35];TAC:=BUFFER SIZE\r
+        000073' 550507  000000* 02270             HRRZ BUFPNT,JOBFF(PROG);BUFPNT:=FIRST FREE LOCATION + 1\r
+        000074' 271500  000001  02280             ADDI BUFPNT,1\r
+        000075' 550540  000012  02290             HRRZ BUFWRD,BUFPNT\r
+        000076' 505500  000007  02300             HRLI BUFPNT,PROG\r
+        000077' 504540  000001  02310             HRL BUFWRD,TAC;       BUFWRD:=BUFFER SIZE,FIRST FREE LOC + 1\r
+        000100' 271040  000002  02320             ADDI TAC,2;           TAC:=BUFFER SIZE + 2\r
+        000101' 550100  000014  02330             HRRZ TAC1,UUO;        TAC1:=N=ADDRESS FIELD OF AC UUO\r
+        000102' 270540  000001  02340   BUFC1:    ADD BUFWRD,TAC;       BUFWRD:=C(BUFWRD) + C(TAC)\r
+                                02350             ADRCHK BUFPNT;        CHECK BUFFER FOR MEMORY BOUND\r
+        000103' 260140  000010*         PUSHJ PDP,ADRCK\r
+        000104' 550040  000012                  HRRZ TAC,BUFPNT\r
+        000105' 202560  000012  02360             MOVEM BUFWRD,@BUFPNT; BUFFER HEADER+1:=C(BUFWRD)\r
+        000106' 540500  000013  02370             HRR BUFPNT,BUFWRD;    BUFPNT 18-35:=C(BUFWRD 18-35)\r
+        000107' 367100  000102' 02380             SOJG TAC1,BUFC1;      N:=N-1.  IS N>0?\r
+        000110' 540547  000073* 02390             HRR BUFWRD,JOBFF(PROG)\r
+        000111' 271540  000001  02400             ADDI BUFWRD,1\r
+        000112' 260140  000103* 02410             PUSHJ PDP,ADRCK       ;CHECK LAST ADR. OF HEADER\r
+        000113' 551052  777776  02420             HRRZI TAC,-2(BUFPNT)\r
+        000114' 274500  000001  02430             SUB BUFPNT,TAC\r
+        000115' 202560  000012  02440             MOVEM BUFWRD,@BUFPNT;LINK LAST BUFFER TO FIRST BUFFER\r
+        000116' 270500  000001  02450             ADD BUFPNT,TAC\r
+        000117' 542507  000110* 02460             HRRM BUFPNT,JOBFF(PROG);JOBFF:=C(JOBFF)+1+N(BUFFER SIZE+2)\r
+        000120' 540500  000013  02470             HRR BUFPNT,BUFWRD;    BUFPNT:=IOUSE,ADDRESS OF FIRST BUFFER\r
+                                02480   ,                                        IN RING.\r
+        000121' 505500  400000  02490             HRLI BUFPNT,IOUSE\r
+        000122' 262140  000013  02500             POP PDP,BUFWRD;       RESTORE BUFWRD FROM STACK.\r
+        000123' 263140  000000  02510             POPJ PDP,;            RETURN\r
+\r\fIOCSS - IO COMMON SYSTEM SUBROUTINES                 PAGE 10\r
+        8-15-65\r
+\r
+\r
+\r
+                                02550   ,DEC 06 00 EX COM L PT PRE 01 BUFCLR\r
+                                02560   ,H. R. MORSE        64-12-26\r
+                                02570   ,CALLING SEQUENCE\r
+                                02580   ,         PUSHJ PDP,BUFCLR\r
+                                02590   ,         EXIT                  RETURNS HERE IF MEMORY NOT EXCEEDED\r
+                                02600   , CLEAR THE WORD COUNT AND DATA AREA OF THE BUFFER WHOSE ADDRESS\r
+                                02610   , IS IN TAC 18-35.\r
+                                02620   ,MONITOR INTERFACE:\r
+                                02630   ,         STORAGE:  13\r
+                                02640   ,         ROUTINE CALLED:    ADRCK\r
+                                02650   ,         SYMBOLS SET/USED:\r
+                                02660   ,             ACCUMULATORS:  PDP  U             TAC   S/U\r
+                                02670   ,                            PROG U             TAC1  S/U\r
+                                02680             INTERN BUFCLR\r
+        000124' 505040  000007  02690   BUFCLR:   HRLI TAC,PROG\r
+                                02700             ADRCHK TAC;           PROCEED IF CURRENT BUFFER ADDRESS\r
+        000125' 260140  000112*         PUSHJ PDP,ADRCK\r
+        000126' 550040  000001                  HRRZ TAC,TAC\r
+                                02710   ,                                   < PROTECTION ADDRESS.\r
+        000127' 554120  000001  02720             HLRZ TAC1,@TAC;       TAC1 18-35=SIZE\r
+        000130' 620100  400000  02730             TRZ TAC1,400000\r
+        000131' 270100  000001  02740             ADD TAC1,TAC;         TAC1:=CURRENT BUFFER ADDRESS + SIZE\r
+                                02750             ADRCHK TAC1;          PROCEED IF CURRENT BUFFER ADDRESS\r
+        000132' 260140  000125*         PUSHJ PDP,ADRCK\r
+        000133' 550040  000002                  HRRZ TAC,TAC1\r
+                                02760   ,                                    + SIZE < PROTECTION ADDRESS.\r
+        000134' 201060  000001  02770             MOVEI TAC,@TAC;       TAC:=CURRENT BUFFER ADDRESS+1,\r
+                                02780   ,                                    CURRENT BUFFER ADDRESS+1\r
+        000135' 504040  000001  02790             HRL TAC,TAC\r
+        000136' 253040  000137' 02800             AOBJN TAC,.+1\r
+        000137' 402001  000000  02810             CLEARM 0(TAC);        WORD COUNT:=0\r
+        000140' 350000  000001  02820             AOS TAC;              TAC:=CURRENT BUFFER ADDRESS+1,\r
+                                02830   ,                                    CURRENT BUFFER ADDRESS+2\r
+        000141' 251060  000002  02840             BLT TAC,@TAC1;        CLEAR BUFFER\r
+        000142' 263140  000000  02850             POPJ PDP,;            RETURN\r
+\r\fIOCSS - IO COMMON SYSTEM SUBROUTINES                 PAGE 11\r
+        8-15-65\r
+\r
+\r
+                                02880             SUBTTL 5-17-65 PART 2\r
+\r\fIOCSS - IO COMMON SYSTEM SUBROUTINES                 PAGE 12\r
+        5-17-65 PART 2\r
+\r
+\r
+\r
+                                02920   ,CALLING SEQUENCE\r
+                                02930   ,         PUSHJ PDP,CKS12\r
+                                02940   ,         EXIT                  ALWAYS RETURNS HERE\r
+                                02950   ,CALCULATES FOLDED 12 BIT CHECKSUMS OF THE DATA WORDS IN THE\r
+                                02960   ,BUFFER WHOSE ADDRESS IS IN AC TAC1.  TWO ALGORITHMS ARE USED.\r
+                                02970   ,ON RETURN, THE LEFT HALF OF AC TAC CONTAINS A CHECKSUM OBTAINED\r
+                                02980   ,BY ACCUMULATING, IN ONES COMPLEMENT, THE DATA WORDS AND FOLDING IT.\r
+                                02990   ,THE LEFT HALF OF AC DAT CONTAINS A CHECKSUM OBTAINED BY ACCUMULATING\r
+                                03000   ,IN TWOS COMPLEMENT, THE DATA WORDS AND FOLDING IT.  AC TAC1\r
+                                03010   ,CONTAINS A 1.\r
+                                03020   ,MONITOR INTERFACE\r
+                                03030   ,         STORAGE:  20\r
+                                03040   ,         ROUTINES CALLED:   FOLD\r
+                                03050   ,         SYMBOLS SET/USED:\r
+                                03060   ,             ACCUMULATORS:  DAT   S/U          SUB    S\r
+                                03070   ,                            PDP   U            TAC    S/U\r
+                                03080   ,                            PROG  U            TAC1   S/U\r
+\r\fIOCSS - IO COMMON SYSTEM SUBROUTINES                 PAGE 13\r
+        5-17-65 PART 2\r
+\r
+\r
+\r
+                                03120             INTERN CKS12\r
+        000143' 270100  000007  03130   CKS12:    ADD TAC1,PROG;        TAC1:=-WORD COUNTER,ADDRESS OF FIRST DATA\r
+        000144' 350000  000002  03140             AOS TAC1\r
+        000145' 550042  000000  03150             HRRZ TAC,0(TAC1)\r
+        000146' 213000  000001  03160             MOVNS TAC\r
+        000147' 350000  000002  03170             AOS TAC1\r
+        000150' 504100  000001  03180             HRL TAC1,TAC\r
+        000151' 402000  000001  03190             CLEARM TAC;           INITIALIZE TWOS COMPLEMENT SUM\r
+        000152' 270042  000000  03200   CKS12A:   ADD TAC,0(TAC1);      TWOS COMPLEMENT ADD\r
+        000153' 253100  000152' 03210             AOBJN TAC1,CKS12A;    DONE?\r
+        000154' 246040  777750  03220   FOLD:     LSHC TAC,-30\r
+        000155' 242100  777764  03230             LSH TAC1,-14\r
+        000156' 270040  000002  03240             ADD TAC,TAC1\r
+        000157' 246040  777764  03250             LSHC TAC,-14\r
+        000160' 242100  777750  03260             LSH TAC1,-30\r
+        000161' 270040  000002  03270             ADD TAC,TAC1\r
+        000162' 622040  770000  03280             TRZE TAC,770000\r
+        000163' 350000  000001  03290             AOS TAC\r
+        000164' 517000  000001  03300             HRLZS TAC\r
+        000165' 201100  000001  03310             MOVEI TAC1,1          ;TAC1:=1\r
+        000166' 263140  000000  03320             POPJ PDP,\r
+\r\fIOCSS - IO COMMON SYSTEM SUBROUTINES                 PAGE 14\r
+        5-17-65 PART 2\r
+\r
+\r
+\r
+                                03360   ,DEC 06 00 EX COM L PT PRE 01 CLRBYT\r
+                                03370   ,H. R. MORSE        64-12-26\r
+                                03380   ,CALLING SEQUENCE \r
+                                03390   ,         PUSHJ PDP,CLRBYT\r
+                                03400   ,         EXIT                  ALWAYS RETURN HERE\r
+                                03410   ,CALLED WITH A BYTE POINTER IN AC TAC, IT CLEARS THE REST OF THE\r
+                                03420   ,WORD POINTED TO BY THE BYTE POINTER.\r
+                                03430   ,MONITOR INTERFACE\r
+                                03440   ,         STORAGE:   7\r
+                                03450   ,         SYMBOLS SET/USED:\r
+                                03460   ,             ACCUMULATORS:   PDP    U\r
+                                03470   ,                             TAC    U\r
+                                03480   ,                             TAC1   S/U\r
+                                03490             INTERN CLRBYT\r
+        000167' 135100  000373' 03500   CLRBYT:   LDB TAC1,[POINT 6,TAC,5];     TAC1:=P\r
+        000170' 137100  000374' 03510             DPB TAC1,[POINT 12,TAC,11];   TAC 0-5:=0, TAC 6-12:=P\r
+        000171' 402000  000002  03520             SETZM TAC1\r
+        000172' 137100  000001  03530             DPB TAC1,TAC;         CLEAR BITS 36-P THROUGH 35\r
+        000173' 263140  000000  03540             POPJ PDP,;            RETURN\r
+\r\fIOCSS - IO COMMON SYSTEM SUBROUTINES                 PAGE 15\r
+        5-17-65 PART 2\r
+\r
+\r
+\r
+                                03580   ;ROUTINE TO RELEASE ALL DEVICES ASSIGNED TO JOB\r
+\r
+                                03600   INTERNAL IORELS\r
+                                03610   EXTERNAL PUUOAC,RELEA3\r
+\r
+\r
+        000174' 201040  000000* 03640   IORELS:   MOVEI TAC,RELEA3      ;RELEASE ALL IO DEVICES(DONT CLOSE)\r
+\r
+                                03660   ;ROUTINE TO DO IO FOR ALL DEVICES ASSIGNED TOI JOB\r
+                                03670   ;CALL     MOVEI TAC,ADR. OR IO SUB.\r
+                                03680   ;         PUSHJ PDP,IOALL\r
+\r
+                                03700   INTERNAL IOALL\r
+\r
+        000175' 261140  000001  03720   IOALL:    PUSH PDP,TAC          ;SAVE ADR. FO SUB.\r
+        000176' 515240  777760  03730             HRLZI DAT, -20\r
+        000177' 200305  000000* 03740   IOALL1:   MOVE DEVDAT, USRJDA(DAT)\r
+        000200' 200006  000002  03750             MOVE IOS,DEVIOS(DEVDAT)\r
+        000201' 201600  000000  03760             MOVEI UUO,0\r
+        000202' 137240  000000* 03770             DPB DAT,PUUOAC\r
+        000203' 332000  000006  03780             SKIPE DEVDAT\r
+        000204' 260163  000000  03790             PUSHJ PDP,@(PDP)      ;CALL THE SUB.\r
+        000205' 253240  000177' 03800             AOBJN DAT, IOALL1\r
+        000206' 262140  000001  03810             POP PDP,TAC\r
+        000207' 263140  000000  03820             POPJ PDP,\r
+\r
+                                03840   ;KILL ALL DEVICES(RELEASE WITHOUT WAITING FOR DEVICE INACTIVE)\r
+\r
+                                03860   INTERNAL IOKILL\r
+                                03870   EXTERNAL RELEA5\r
+\r
+        000210' 201040  000000* 03890   IOKILL:   MOVEI TAC,RELEA5\r
+        000211' 254000  000175' 03900             JRST IOALL\r
+\r\fIOCSS - IO COMMON SYSTEM SUBROUTINES                 PAGE 16\r
+        5-17-65 PART 2\r
+\r
+\r
+\r
+                                03940   ,DEC 06 00 EX COM L PT PRE 01 IOSET\r
+                                03950   ,H. R. MORSE        64-12-26\r
+                                03960   ,CALLING SEQUENCE\r
+                                03970   ,         PUSHJ PDP,IOSET\r
+                                03980   ,         EXIT      ALWAYS RETURNS HERE\r
+                                03990   ,THIS PROGRAM IS CALLED FROM AN INTERRUPT SERVICE ROUTINE.\r
+                                04000   ,IT PUTS THE ADDRESS OF THE DATA AREA OF THE JOB (C(JBTADR18-35))\r
+                                04010   ,CONNECTED TO THE DEVICE SPECIFIED BY AC DEVDAT IN AC PROG AND\r
+                                04020   ,PUTS THE ITEM POINTER (C(DEVCTR)) IN AC ITEM.\r
+                                04030   ,MONITOR INTERFACE\r
+                                04040   ,         STORAGE:   5\r
+                                04050   ,         SYMBOLS SET/USED:\r
+                                04060   ,             ACCUMULATORS:             DEVDAT U   PDP  U\r
+                                04070   ,                                       ITEM   S   PROG S/U\r
+                                04080   ,             DEVICE DATA BLOCK:        DEVCHR U\r
+                                04090   ,                                       DEVCTR U\r
+                                04100   ,             SYSTEM ADDRESSES:         JBTADR U\r
+                                04110             INTERN IOSET\r
+\r
+        000212' 135340  000050* 04130   IOSET:    LDB PROG,PJOBN\r
+        000213' 200206  000011  04140             MOVE ITEM,DEVCTR(DEVDAT); ITEM:=ITEM POINTER=C(DEVCTR)\r
+        000214' 550347  000000* 04150             HRRZ PROG,JBTADR(PROG);       PROG:=C(JBTADR 18-35)\r
+        000215' 263140  000000  04160             POPJ PDP,;                    RETURN\r
+\r\fIOCSS - IO COMMON SYSTEM SUBROUTINES                 PAGE 17\r
+        5-17-65 PART 2\r
+\r
+\r
+\r
+                                04200   ,6-CSS-DEC-IOSETC-PL-PRE1\r
+                                04210   ,H.R. MORSE   17-11-64\r
+\r
+                                04230   ,CALLING SEQUENCE\r
+                                04240   ,         PUSHJ PDP,IOSETC\r
+                                04250   ,         EXIT                  ALWAYS RETURN HERE\r
+\r
+                                04270   ,SETS JBFPTR18-35:=C(TAC1 18-35)\r
+                                04280   ,         JBFCTR:=C(ITEM)*[WORD LENGTH/BYTE SIZE]\r
+                                04290   ,WHERE    WORD LENGTH:=36 DECIMAL\r
+                                04300   ,         BYTE SIZE:=C(JBFPTR6-11)\r
+                                04310   ,         [X]:= INTEGER PART OF X\r
+\r
+                                04330   ,MONITOR INTERFACE\r
+                                04340   ,         STORAGE:   11\r
+                                04350   ,         ROUTINES CALLED:      ITMCT1\r
+                                04360   ,         SYMBOLS SET/USED:\r
+                                04370   ,             ACCUMULATORS:     JBUF S/U        TAC S/U\r
+                                04380   ,                               ITEM S/U        TAC1 S/U\r
+                                04390   ,                               PDP U\r
+\r
+                                04410             INTERN IOSETC\r
+\r
+        000216' 271240  000001  04430   IOSETC:   ADDI JBUF,1                   ;JBFPTR12-18:=0\r
+        000217' 515040  007777  04440             HRLZI TAC,7777        ;JBFPTR18-35:=C(TAC1 18-35)+1\r
+        000220' 406060  000005  04450             ANDM TAC,@JBUF\r
+        000221' 542120  000005  04460             HRRM TAC1,@JBUF\r
+        000222' 350020  000005  04470             AOS @JBUF\r
+        000223' 135100  000375' 04480             LDB TAC1,[POINT 6,@JBUF,11]   ;TAC1:=BYTE SIZE\r
+        000224' 260140  000233' 04490             PUSHJ PDP,ITMCT1      ;JBFCTR:=C(ITEM)*[36/BYTE SIZE]\r
+        000225' 271000  000006  04500             ADDI JBUF+1\r
+        000226' 202220  000005  04510             MOVEM ITEM,@JBUF\r
+        000227' 263140  000000  04520             POPJ PDP,             ;EXIT\r
+\r\fIOCSS - IO COMMON SYSTEM SUBROUTINES                 PAGE 18\r
+        5-17-65 PART 2\r
+\r
+\r
+\r
+                                04560   ,DEC 06 00 EX COM L PT PRE 01 ITMSET, ITMCNT, ITMCT1\r
+                                04570   ,H.R. MORSE   64-12-26\r
+\r
+                                04590   ,CALLING SEQUENCE\r
+                                04600   ,         PUSHJ PDP,ITMSET\r
+                                04610   ,         EXIT                  ALWAYS RETURNS HERE\r
+                                04620   ,SETS AC ITEM:=(BUFFER SIZE-1)*[WORD LENGTH/BYTE SIZE]\r
+                                04630   ,WHERE BUFFER SIZE:=BITS 1-17 OF THE BUFFER HEADER WORD POINTED TO\r
+                                04640   ,                   BY C(DEVADR)\r
+                                04650   ,        WORD LENGTH:=36 DECIMAL\r
+                                04660   ,        BYTE SIZE:=INTEGER PART OF X.\r
+\r
+                                04680   ,CALLING SEQUENCE\r
+                                04690   ,         PUSHJ PDP,ITMCNT\r
+                                04700   ,         EXIT                  ALWAYS RETURNS HERE\r
+                                04710   ,SETS AC ITEM=C(ITEM)*[WORD LENGTH/BYTE SIZE]\r
+\r
+                                04730   ,CALLING SEQUENCE\r
+                                04740   ,         PUSHJ PDP,ITMCT1\r
+                                04750   ,         EXIT                  ALWAYS RETURNS HERE\r
+                                04760   ,SETS AC ITEM:=C(ITEM)*[WORD LENGTH/C(TAC1)]\r
+\r
+                                04780   ,MONITOR INTERFACE\r
+                                04790   ,         STOAGE:   7\r
+                                04800   ,         SYMBOLS SET/USED:\r
+                                04810   ,             ACCUMULATORS:     DEVDAT U   TAC S/U\r
+                                04820   ,                               ITEM S/U   TAC1 S/U\r
+                                04830   ,                               PDP U\r
+                                04840   ,         DEVICE DATA BLOCK:    DEVADR U\r
+                                04850   ,                               DEVPTR U\r
+\r\fIOCSS - IO COMMON SYSTEM SUBROUTINES                 PAGE 19\r
+        5-17-65 PART 2\r
+\r
+\r
+\r
+                                04890             INTERN ITMSET,ITMCNT,ITMCT1\r
+        000230' 135200  000376' 04900   ITMSET:   LDB ITEM,[POINT 17,@DEVADR(DEVDAT),17];ITEM:=BUFFER SIZE-1\r
+        000231' 275200  000001  04910             SUBI ITEM,1\r
+        000232' 135100  000377' 04920   ITMCNT:   LDB TAC1,[POINT 6,DEVPTR(DEVDAT),11];TAC1:=BYTE SIZE\r
+        000233' 201040  000044  04930   ITMCT1:   MOVEI TAC,44          ;ITEM:=C(ITEM)*[WORD LENGTH/C(TAC1)]\r
+        000234' 230040  000002  04940             IDIV TAC,TAC1\r
+        000235' 220200  000001  04950             IMUL ITEM,TAC\r
+        000236' 263140  000000  04960             POPJ PDP,\r
+\r\fIOCSS - IO COMMON SYSTEM SUBROUTINES                 PAGE 20\r
+        5-17-65 PART 2\r
+\r
+\r
+\r
+                                05000   ;ROUTINE TO SET DEVICE STATUS WORD FROM UUO\r
+\r
+                                05020   INTERNAL SETIOS\r
+                                05030   EXTERNAL ILLMOD\r
+\r
+        000237' 135040  000400' 05050   SETIOS:   LDB TAC,[POINT 4,UUO,35]      ;GET DEVICE DATA MODE\r
+        000240' 201040  000001  05060             MOVEI TAC,1           ;AND CHECK FOR LEGALITY\r
+        000241' 242042  000000  05070             LSH TAC,(TAC1)\r
+        000242' 616046  000004  05080             TDNN TAC,DEVMOD(DEVDAT)\r
+        000243' 254000  000000* 05090             JRST ILLMOD           ;ILLEGAL MODE\r
+        000244' 620600  010000  05100             TRZ UUO,IOACT         ;LET USER SET ALL BITS EXCEPT IOACT\r
+        000245' 542606  000002  05110             HRRM UUO,DEVIOS(DEVDAT)\r
+        000246' 263140  000000  05120             POPJ PDP,\r
+\r\fIOCSS - IO COMMON SYSTEM SUBROUTINES                 PAGE 21\r
+        5-17-65 PART 2\r
+\r
+\r
+\r
+                                05160   ,DEC 06 00 EX COM L PT PRE 01 NEWBUF, BPNSET\r
+                                05170   ,H. R. MORSE        64-12-26\r
+                                05180   ,CALLING SEQUENCE\r
+                                05190   ,         PUSHJ PDP,NEWBUF\r
+                                05200   ,         EXIT                  ALWAYS RETURNS HERE\r
+                                05210   ,CLEARS THE BUFFERE CURRENTLY POINTED TO BY THE INPUT BUFFER\r
+                                05220   ,ADDRESS (DEVDR) OF THE CURRENT DEVICE. SETS UP THE BYTE\r
+                                05230   ,POINTER (DEVPTR), AND THE ITEM COUNT (DEVCTR) AND RETURNS.\r
+                                05240   ,CALLING SEQUENCE\r
+                                05250   ,         PUSHJ PDP,BPNSET\r
+                                05260   ,         EXIT                  ALWAYS RETURNS HERE\r
+                                05270   ,SETS UP THE BYTE POINTER (DEVPTR) AND THE ITEM COUNT (DEVCTR)\r
+                                05280   ,OF THE CURRENT DEVICE AND RETURNS.\r
+                                05290   ,MONITOR INTERFACE\r
+                                05300   ,         STORAGE:  10\r
+                                05310   ,         ROUTINES CALLED:      BUFCLR, ITMSET\r
+                                05320   ,         SYMBOLS SET/USED:     \r
+                                05330   ,             ACCUMULATORS:     DEVDAT U        PDP U\r
+                                05340   ,                               ITEM   U        TAC S/U\r
+                                05350   ,             DEVICE DATA BLOCKS:       DEVADR U\r
+                                05360   ,                               DEVCTR S\r
+                                05370   ,                               DEVPTR S/U\r
+\r\fIOCSS - IO COMMON SYSTEM SUBROUTINES                 PAGE 22\r
+        5-17-65 PART 2\r
+\r
+\r
+                                05400             INTERN BPNSET,NEWBUF\r
+\r
+        000247' 550046  000007  05420   NEWBUF:   HRRZ TAC,DEVADR(DEVDAT); TAC:=INPUT BUFFER HEADER ADDRESS\r
+        000250' 260140  000124' 05430             PUSHJ PDP,BUFCLR;     CLEAR INPUT BUFFER.\r
+        000251' 540046  000007  05440   BPNSET:   HRR TAC,DEVADR(DEVDAT)\r
+        000252' 515040  007737  05450             HRLZI TAC,7737\r
+        000253' 404046  000010  05460             AND TAC,DEVPTR(DEVDAT); DEVPTR 0-5:=0, DEVPTR 12:=0\r
+        000254' 540046  000007  05470             HRR TAC,DEVADR(DEVDAT); DEVPTR 10-35:=C(DEVADR 18-35) + 1\r
+        000255' 350000  000001  05480             AOS TAC\r
+        000256' 202046  000010  05490             MOVEM TAC,DEVPTR(DEVDAT)\r
+        000257' 260140  000230' 05500             PUSHJ PDP,ITMSET;     ITEM:=(BUFFER SIZE-1)[36/BYTE SIZE]\r
+        000260' 202206  000011  05510             MOVEM ITEM,DEVCTR(DEVDAT); DEVCTR:=ITEM COUNT\r
+        000261' 263140  000000  05520             POPJ PDP,;            RETURN\r
+\r\fIOCSS - IO COMMON SYSTEM SUBROUTINES                 PAGE 23\r
+        5-17-65 PART 2\r
+\r
+\r
+\r
+                                05560   ,DEC 06 00 EX COM L PT PRE 02 SETBYT\r
+                                05570   ,H. R. MORSE        64-12-26\r
+                                05580   ,CALLING SEQUENCE\r
+                                05590   ,         PUSHJ PDP,SETBYT\r
+                                05600   ,         EXIT                  ALWAYS RETURN HERE\r
+                                05610   ,SETS     TAC 0-5:=0\r
+                                05620   ,         TAC 6-11:=S\r
+                                05630   ,         TAC 12-13:=0\r
+                                05640   ,         TAC 14-17:=PROG\r
+                                05650   ,WHERE S=35 IF DATA MODE (IOS 32-25) IS BINARY (B)\r
+                                05660   ,      S=8  IF DATA MODE IS IMAGE (I)\r
+                                05670   ,      S=7  IF DATA MODE IS   ASCII PACKED (A)\r
+                                05680   ,                             ASCII LINE (AL)\r
+                                05690   ,                             ASCII SEQUENCED (AS)\r
+                                05700   ,                             ASCII SEQUENCED (ASL)\r
+                                05710   ,                   OR        ALTERNATE MODE BREAK (AM)\r
+                                05720   ,MONITOR INTERFACE\r
+                                05730   ,         STORAGE:   12\r
+                                05740   ,         SYMBOLS SET/USED:\r
+                                05750   ,             ACCUMULATORS:     PROG  U                 TAC   S\r
+                                05760   ,                               PDP   U                 TAC1  S/U\r
+                                05770   ,             DEVICE DATA BLOCK:          DEVIOS U\r
+                                05780             INTERN SETBYT\r
+        000262' 200106  000002  05790   SETBYT:   MOVE TAC1,DEVIOS(DEVDAT);     FETCH DATA MODE, BITS 32-35 0\r
+        000263' 405100  000017  05800             ANDI TAC1, 17\r
+        000264' 302100  000013  05810             CAIE TAC1,IB          ;DATA MODE IMAGE BINARY?\r
+        000265' 306100  000014  05820             CAIN TAC1,B;          IS DATA MODE=BINARY?\r
+        000266' 505040  004407  05830             HRLI TAC,4400+PROG;   SET BYTE SIZE TO 36.\r
+        000267' 306100  000010  05840             CAIN TAC1,I;          IS DATA MODE=IMAGE?\r
+        000270' 254000  000275' 05850             JRST SETBY1\r
+        000271' 602100  000014  05860             TRNE TAC1,14;         IS DATA MODE=ASCII PACKED,ASCII LINE,\r
+        000272' 254000  000274' 05870             JRST .+2;             ASCII SEQUENCED,OR ASCII SEQUENCED LINE\r
+        000273' 505040  000707  05880             HRLI TAC,700+PROG;    SET BYTE SIZE TO 7.\r
+        000274' 263140  000000  05890             POPJ PDP,;            RETURN\r
+\r
+        000275' 510046  000004  05910   SETBY1:   HLLZ TAC,DEVMOD(DEVDAT)\r
+        000276' 621040  770077  05920             TLZ TAC,770077\r
+        000277' 661040  000007  05930             TLO TAC,PROG\r
+        000300' 263140  000000  05940             POPJ PDP,\r
+\r\fIOCSS - IO COMMON SYSTEM SUBROUTINES                 PAGE 24\r
+        5-17-65 PART 2\r
+\r
+\r
+\r
+                                05980   ,DEC 06 00 EX COM L PT PRE 01 STORE ITEM\r
+                                05990   ,H.R. MORSE         64-12-26\r
+                                06000   ,CALLING SEQUENCE\r
+                                06010   ,         PUSHJ PDP,STODAT\r
+                                06020   ,         EXIT1                 CHECKSUM ERROR\r
+                                06030   ,         EXIT2                 BLOCK FULL OR BLOCK COMPLETE\r
+                                06040   ,         EXIT3                 DATA STORED CORRECTLY\r
+                                06050   ,CALLED FROM AN INPUT SERVICE ROUTINE WITH A DATA ITEM IN AC DAT.\r
+                                06060   ,STORES THE DATA ITEM IN THE BUFFER, CHECKING TO SEE IF IT WERE\r
+                                06070   ,THE FIRST ITEM ON THE BUFFER AND SETTING UP THE POINTER AND\r
+                                06080   ,WORD COUNT APPROPRIATELY CHECKING THE MODE TO SEE IF ANY SPECIAL\r
+                                06090   ,PROCESSING NEED BE DONE.  FOR EXAMPLE, GENERATION OF SEQUENCE\r
+                                06100   ,NUMBERS PRECEDING EACH LINE IN SEQUENCE MODE, OR THE TERMINATION\r
+                                06110   ,OF A BUFFER ON CERTAIN CHARACTERS IN OTHER MODES, OR IF THE BUFFER\r
+                                06120   ,RETURN OCCURS ON AN ERROR CONDITION. THE SECOND RETURN OCCURS\r
+                                06130   ,ON A BLOCK FULL CONDITION OR BLOCK COMPLETE CONDITION, THE THIRD\r
+                                06140   ,RETURN OCCURS ON THE DATA STORED CORRECTLY CONDITION.  THIS\r
+                                06150   ,ROUTINE ALSO DOES SOME CHECKING ON INPUT OF BINARY RECORD,\r
+                                06160   ,PAPER TAPE OR CARDS.\r
+                                06170   ,CALLING SEQUENCE\r
+                                06180   ,         PUSHJ PDP,STOSQD\r
+                                06190   ,         XXXX                  ALWAYS SKIPS\r
+                                06200   ,         EXIT                  ALWAYS RETURNS HERE\r
+                                06210   ,STORES THE WORD COUNT:=C(DEVPTR 18-35) -C(DEVIAD 18-35) - 1\r
+                                06220   ,IN THE BUFFER.\r
+                                06230   ,MONITOR INTERFACE\r
+                                06240   ,         STORAGE:  69\r
+                                06250   ,         ROUTINES CALLED: ASCIA, CKS12, ITMSET, NEWBUF\r
+                                06260   ,         SYMBOLS SET/USED:\r
+                                06270   ,             ACCUMULATORS:             DAT    U  PDP  U\r
+                                06280   ,                                       DEVDAT U  TAC S/U\r
+                                06290   ,                                       IOS    S/U         TAC1 S/U\r
+                                06300   ,                                       ITEM   S/U\r
+                                06310   ,             DEVICE DATA BLOCK:        DEVCTR U  DEVPTR S/\r
+                                06320   ,                                       DEVIAD U  DEVSEQ S/\r
+                                06330   ,             IO STATUS WORD: A     U             I      U\r
+                                06340   ,                                       AS   U             IOBKTL S\r
+                                06350   ,                                       ASL  U             IODTER S\r
+                                06360   ,                                       B    U             IOFST  S/\r
+                                06370   ,             JOB BUFFER AREA:          WORD COUNT S\r
+\r\fIOCSS - IO COMMON SYSTEM SUBROUTINES                 PAGE 25\r
+        5-17-65 PART 2\r
+\r
+\r
+                                06400             INTERN STODAT, STOSQD\r
+\r
+        000301' 603000  000004  06420   STODAT:   TLNE IOS,IOFST;       WILL THE NEXT ITEM BE THE FIRST ITEM\r
+                                06430   ,                                  OF A BUFFER?\r
+        000302' 260140  000247' 06440             PUSHJ PDP,NEWBUF;     SET UP A NEW BUFFER. ITEM:=(BUFFER\r
+                                06450   ,                                  SIZE - 1)*[36/BYTE SIZE]\r
+        000303' 135100  000000* 06460             LDB TAC1,PIOMOD;      TAC1:=DATA MODE\r
+        000304' 306100  000014  06470             CAIN TAC1,B;          MODE=BINARY?\r
+        000305' 254000  000344' 06480             JRST STOBIN\r
+        000306' 621000  000004  06490             TLZ IOS,IOFST\r
+        000307' 136246  000010  06500   STO1:     DPBI DAT,DEVPTR(DEVDAT); STORE DATA IN BUFFER.\r
+        000310' 302100  000000  06510             CAIE TAC1,A;          MODE=ASCII,  IMAGE, OR BINARY?\r
+        000311' 306100  000010  06520             CAIN TAC1,I\r
+        000312' 254000  000324' 06530             JRST STOAIB\r
+        000313' 306100  000014  06540             CAIN TAC1,B\r
+        000314' 254000  000324' 06550             JRST STOAIB\r
+        000315' 307240  000214  06560             CAIG DAT,214          ;LINE FEED,FORM FEED, OR VERTICAL TAB?\r
+        000316' 305240  000212  06570             CAIGE DAT,212\r
+        000317' 254000  000321' 06580             JRST .+2  ;NO\r
+        000320' 254000  000336' 06590             JRST STOSQD           ;YES\r
+        000321' 365200  000000* 06600             SOJGE ITEM,CPOPJ2;    ITEM:=C(ITEM)-1. IS C(ITEM)>OR=0?\r
+        000322' 660000  040000  06610   STOE1:    TRO IOS,IOBKTL                ;IOBKTL:=1\r
+        000323' 254000  000056* 06620             JRST CPOPJ\r
+        000324' 367200  000321* 06630   STOAIB:   SOJG ITEM,CPOPJ2;     ITEM:=C(ITEM)-1. IS C(ITEM)>0?\r
+        000325' 306100  000000  06640             CAIN TAC1,A;          MODE=ASCII?\r
+        000326' 254000  000336' 06650             JRST STOSQD\r
+        000327' 306100  000014  06660             CAIN TAC1,B;          MODE=BINARY?\r
+        000330' 254000  000354' 06670             JRST STOBND\r
+        000331' 260140  000230' 06680   STOI:     PUSHJ PDP,ITMSET;     ITEM:=(BUFFER SIZE-1)*[36/BYTE SIZE]\r
+                                06690   ,                                      - C(DEVCTR)\r
+        000332' 274206  000011  06700             SUB ITEM,DEVCTR(DEVDAT)\r
+        000333' 550106  000007  06710             HRRZ TAC1,DEVIAD(DEVDAT)      ;STORE ITEM COUNT INSTEAD OF\r
+        000334' 271200  000001  06720             ADDI ITEM,1           ;IN FIRST WORD OF BUFFER\r
+        000335' 344100  000342' 06730             AOJA TAC1,STOSQE\r
+\r\fIOCSS - IO COMMON SYSTEM SUBROUTINES                 PAGE 26\r
+        5-17-65 PART 2\r
+\r
+\r
+        000336' 200106  000007  06760   STOSQD:   MOVE TAC1,DEVIAD(DEVDAT); TAC1:=ADDRESS OF WORD COUNT\r
+        000337' 350000  000002  06770             AOS TAC1\r
+        000340' 550206  000010  06780             HRRZ ITEM,DEVPTR(DEVDAT); ITEM:=C(DEVPTR 18-25) -\r
+                                06790   ,                                     C(DEVIAD 18-35) -1\r
+        000341' 274200  000002  06800             SUB ITEM,TAC1\r
+        000342' 542220  000002  06810   STOSQE:   HRRM ITEM,@TAC1       ;WORD COUNT TO FIRST WORD IN BUFFER\r
+        000343' 254000  000065* 06820             JRST CPOPJ1;          EXIT2. BLOCK COMPLETE\r
+        000344' 627000  000004  06830   STOBIN:   TLZN IOS,IOFST;       WILL THE NEXT ITEM BE THE FIRST ITEM\r
+        000345' 254000  000307' 06840             JRST STO1;               OF A BUFFER?  IOSFST:=0\r
+        000346' 550040  000005  06850             HRRZ TAC,DAT\r
+        000347' 313040  000004  06860             CAMLE TAC,ITEM;       IS WORD COUNT <OR= (BUFFER SIZE-1)*\r
+        000350' 254000  000322' 06870             JRST STOE1;              [36/BYTE SIZE]?\r
+        000351' 200200  000001  06880             MOVE ITEM,TAC;        ITEM:=WORD COUNT\r
+        000352' 202266  000010  06890             MOVEM DAT,@DEVPTR(DEVDAT); STORE WORD COUNT IN BUFFER\r
+        000353' 254000  000324* 06900             JRST CPOPJ2;          EXIT3.  DATA STORED CORRECTLY.\r
+        000354' 550106  000007  06910   STOBND:   HRRZ TAC1,DEVIAD(DEVDAT)\r
+        000355' 260140  000143' 06920             PUSHJ PDP,CKS12;      COMPUTE CHECKSUM\r
+        000356' 270106  000007  06930             ADD TAC1, DEVIAD(DEVDAT)\r
+        000357' 510120  000002  06940             HLLZ TAC1,@TAC1;      DATA CHECKSUM=COMPUTED CHECKSUM?\r
+        000360' 316040  000002  06950             CAMN TAC,TAC1\r
+        000361' 254000  000343* 06960             JRST CPOPJ1;          EXIT2. BLOCK COMPLETE\r
+        000362' 660000  100000  06970             TRO IOS,IODTER;       IODTER:=1\r
+        000363' 254000  000323* 06980             JRST CPOPJ;           EXIT1. CHECKSUM ERROR\r
+\r\fIOCSS - IO COMMON SYSTEM SUBROUTINES                 PAGE 27\r
+        5-17-65 PART 2\r
+\r
+\r
+\r
+                                07020   ,DEC 06 00 EX COM L PT PRE 01 UINTQ\r
+                                07030   ,H.R. MORSE  64-12-26\r
+                                07040   ,CALLING SEQUENCE\r
+                                07050   ,         PUSHJ PDP, UINT1\r
+                                07060   ,         EXIT                  ALWAYS RETURNS HERE\r
+                                07070   ,TAC:=CONTENTYS OF WORD FOLLOWING UUO CALL\r
+                                07080   ,FROM USERS AREA.\r
+                                07090   ,MONITOR INTERFACE\r
+                                07100   ,         STORAGE: 4\r
+                                07110   ,         SYMBOLS SET/USED:\r
+                                07120   ,            ACCUMULATORS:   PDP U      TAC S/U\r
+                                07130   ,                            PROG U     \r
+                                07140                 INTERN UINTQ\r
+        000364' 200043  777777  07150   UINTQ:        MOVE TAC, -1(PDP)                 ;TAC:=ADDRESS FOLLOWING UUO C\r
+        000365' 505040  000007  07160                 HRLI TAC, PROG                    ;RELOCATE ADDRESS\r
+        000366' 200060  000001  07170                 MOVE TAC, @TAC                    ;TAC:=CONTENTS OF WORD FOLLOW\r
+                                07180                                                   ;UUO CALL FROM USERS AREA\r
+        000367' 263140  000000  07190                 POPJ PDP,                         ;RETURN\r
+\r
+                                07210                 END,\r
+        000370' 576062  000000\r
+        000371' 637163  000000\r
+        000372' 001406  000001\r
+        000373' 360600  000001\r
+        000374' 301400  000001\r
+        000375' 300620  000005\r
+        000376' 222126  000007\r
+        000377' 300606  000010\r
+        000400' 000400  000014\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 000401\r
+\r
+8K CORE USED\r
+\r\fIOCSS - IO COMMON SYSTEM SUBROUTINES                 PAGE 28\r
+        SYMBOL TABLE\r
+\r
+                000264  \r
+A               000000  INT\r
+AC1             000015  INT\r
+AC2             000016  INT\r
+AC3             000017  INT\r
+ADRCK           000132' EXT\r
+ADVBFE          000000' INT\r
+ADVBFF          000010' INT\r
+AL              000001  INT\r
+APR             000000  SPD\r
+ASSAS1          000035' \r
+ASSAS2          000036' \r
+ASSASG          000023' INT\r
+ASSCON          400000  INT\r
+ASSIN           000020' INT\r
+ASSPRG          200000  INT\r
+B               000014  INT\r
+BPNSET          000251' INT\r
+BUFC1           000102' \r
+BUFCLC          000071' INT\r
+BUFCLR          000124' INT\r
+BUFPNT          000012  INT\r
+BUFWRD          000013  INT\r
+CKS12           000143' INT\r
+CKS12A          000152' \r
+CLDS            000023' EXT\r
+CLEN            000037' EXT\r
+CLOSB           002000  INT\r
+CLOSE1          000000  EXT\r
+CLRBYT          000167' INT\r
+CLSIN           000002  INT\r
+CLSOUT          000001  INT\r
+CPOPJ           000363' EXT\r
+CPOPJ1          000361' EXT\r
+CPOPJ2          000353' EXT\r
+D               000017  INT\r
+DAT             000005  INT\r
+DCL             000001  INT\r
+DCW             020000  INT\r
+DDI             000007  INT\r
+DDO             000006  INT\r
+DDTMEM          000037  INT\r
+DDTSYM          000036  INT\r
+DEN             000004  INT\r
+DEV0            000053' \r
+DEVADR          000007  INT\r
+DEVBUF          000006  INT\r
+DEVCHR          000001  INT\r
+DEVCTR          000011  INT\r
+DEVDAT          000006  INT\r
+DEVIAD          000007  INT\r
+DEVIOS          000002  INT\r
+DEVLG           000044' INT\r
+\r\fIOCSS - IO COMMON SYSTEM SUBROUTINES                 PAGE 28-1\r
+        SYMBOL TABLE\r
+\r
+DEVLOG          000005  INT\r
+DEVLP0          000046' \r
+DEVLP1          000064' \r
+DEVLST          000063' EXT\r
+DEVMOD          000004  INT\r
+DEVNAM          000000  INT\r
+DEVOAD          000010  INT\r
+DEVOPR          000060' EXT\r
+DEVPHY          000056' INT\r
+DEVPTR          000010  INT\r
+DEVSER          000003  INT\r
+DEVSRC          000041' INT\r
+DGF             000012  INT\r
+DIN             000003  INT\r
+DLK             000005  INT\r
+DOU             000002  INT\r
+DR              000016  INT\r
+DRL             000000  INT\r
+DSI             000011  INT\r
+DSO             000010  INT\r
+DTW             040000  INT\r
+DVAVAL          000040  INT\r
+DVCDR           100000  INT\r
+DVDIR           000004  INT\r
+DVDIRI          400000  INT\r
+DVIN            000002  INT\r
+DVLPT           040000  INT\r
+DVMTA           000020  INT\r
+DVOUT           000001  INT\r
+DVTTY           000010  INT\r
+ENTRB           020000  INT\r
+ERROR           000000  EXT\r
+FOLD            000154' \r
+I               000010  INT\r
+IB              000013  INT\r
+IBUFB           200000  INT\r
+ILLMOD          000243' EXT\r
+INITB           400000  INT\r
+INPB            010000  INT\r
+IO              000020  INT\r
+IOACT           010000  INT\r
+IOALL           000175' INT\r
+IOALL1          000177' \r
+IOBEG           000002  INT\r
+IOBKTL          040000  INT\r
+IOCON           000040  INT\r
+IODEND          020000  INT\r
+IODERR          200000  INT\r
+IODISC          400000  INT\r
+IODONE          400000  INT\r
+IODTER          100000  INT\r
+IOEND           000040  INT\r
+IOFST           000004  INT\r
+\r\fIOCSS - IO COMMON SYSTEM SUBROUTINES                 PAGE 28-2\r
+        SYMBOL TABLE\r
+\r
+IOIMPM          400000  INT\r
+IOKILL          000210' INT\r
+IONRCK          000100  INT\r
+IORDEL          000100  INT\r
+IORELS          000174' INT\r
+IORET           000020  INT\r
+IOS             000000  INT\r
+IOSET           000212' INT\r
+IOSETC          000216' INT\r
+IOSTRT          000010  INT\r
+IOUSE           400000  INT\r
+IOW             000001  INT\r
+IOWC            000020  INT\r
+IOWS            400000  INT\r
+ITEM            000004  INT\r
+ITMCNT          000232' INT\r
+ITMCT1          000233' INT\r
+ITMSET          000230' INT\r
+JBFADR          000000  INT\r
+JBFCTR          000002  INT\r
+JBFPTR          000001  INT\r
+JBTADR          000214' EXT\r
+JBUF            000005  INT\r
+JDAT            000011  INT\r
+JERR            002000  INT\r
+JIOW            100000  INT\r
+JNA             004000  INT\r
+JOB             000000  EXT\r
+JOBFF           000117' EXT\r
+LOOKB           040000  INT\r
+MTW             010000  INT\r
+NEWBUF          000247' INT\r
+OBUFB           100000  INT\r
+OUTPB           004000  INT\r
+PDP             000003  INT\r
+PI              000004  SPD\r
+PICHN           000100  INT\r
+PIOMOD          000303' EXT\r
+PJOBN           000212' EXT\r
+PROG            000007  INT\r
+PUUOAC          000202' EXT\r
+RELEA1          000000  EXT\r
+RELEA3          000174' EXT\r
+RELEA5          000210' EXT\r
+RUN             200000  INT\r
+RUNABL          204000  INT\r
+SCNOFF          000030' EXT\r
+SCNON           000036' EXT\r
+SETBY1          000275' \r
+SETBYT          000262' INT\r
+SETIOS          000237' INT\r
+STO1            000307' \r
+STOAIB          000324' \r
+\r\fIOCSS - IO COMMON SYSTEM SUBROUTINES                 PAGE 28-3\r
+        SYMBOL TABLE\r
+\r
+STOBIN          000344' \r
+STOBND          000354' \r
+STODAT          000301' INT\r
+STOE1           000322' \r
+STOI            000331' \r
+STOSQD          000336' INT\r
+STOSQE          000342' \r
+SYSTAP          000062' EXT\r
+TAC             000001  INT\r
+TAC1            000002  INT\r
+TEM             000010  INT\r
+TTYATC          020000  INT\r
+TTYUSE          010000  INT\r
+UINTQ           000364' INT\r
+USRJDA          000177' EXT\r
+USRMOD          010000  INT\r
+UUO             000014  INT\r
+WAIT1           000000  EXT\r
+\f   IIIIIIIII            OOOOOOOOO            IIIIIIIII         NNN         NNN         IIIIIIIII               111      \r
+   IIIIIIIII            OOOOOOOOO            IIIIIIIII         NNN         NNN         IIIIIIIII               111      \r
+   IIIIIIIII            OOOOOOOOO            IIIIIIIII         NNN         NNN         IIIIIIIII               111      \r
+      III            OOO         OOO            III            NNN         NNN            III               111111      \r
+      III            OOO         OOO            III            NNN         NNN            III               111111      \r
+      III            OOO         OOO            III            NNN         NNN            III               111111      \r
+      III            OOO         OOO            III            NNNNNN      NNN            III                  111      \r
+      III            OOO         OOO            III            NNNNNN      NNN            III                  111      \r
+      III            OOO         OOO            III            NNNNNN      NNN            III                  111      \r
+      III            OOO         OOO            III            NNN   NNN   NNN            III                  111      \r
+      III            OOO         OOO            III            NNN   NNN   NNN            III                  111      \r
+      III            OOO         OOO            III            NNN   NNN   NNN            III                  111      \r
+      III            OOO         OOO            III            NNN      NNNNNN            III                  111      \r
+      III            OOO         OOO            III            NNN      NNNNNN            III                  111      \r
+      III            OOO         OOO            III            NNN      NNNNNN            III                  111      \r
+      III            OOO         OOO            III            NNN         NNN            III                  111      \r
+      III            OOO         OOO            III            NNN         NNN            III                  111      \r
+      III            OOO         OOO            III            NNN         NNN            III                  111      \r
+   IIIIIIIII            OOOOOOOOO            IIIIIIIII         NNN         NNN         IIIIIIIII            111111111   \r
+   IIIIIIIII            OOOOOOOOO            IIIIIIIII         NNN         NNN         IIIIIIIII            111111111   \r
+   IIIIIIIII            OOOOOOOOO            IIIIIIIII         NNN         NNN         IIIIIIIII            111111111   \r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  11:23:08\r
+File: DSKB1 :IOINI1.LST   [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:21
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:2445 \r
+File will be deleted after printing\r
+\f\rIOINI1 - IO INITIALIZATION PART 1                 PAGE 1\r
+        MINIMAL CONFIGURATION\r
+\r
+                                00010           XLIST\r
+                                01930          LIST\r
+\r\fIOINI1 - IO INITIALIZATION PART 1                 PAGE 7\r
+        MINIMAL CONFIGURATION\r
+\r
+\r
+                                00010   ;SOME MACROS FOR DEFINING CONFIGURATION\r
+\r
+                                00030   DEFINE NAME (A)\r
+                                00040   <DEFINE NAME1\r
+                                00050   <CONFIG:  ASCIZ /A/\r
+                                00060   INTERNAL CONFIG\r
+                                00070   >\r
+                                00080   XP A,0\r
+                                00090   SUBTTL A CONFIGURATION\r
+                                00100   >\r
+\r
+                                00120   DEFINE DATE (A)\r
+                                00130   <DEFINE DATE1\r
+                                00140   <SYSDAT:  ASCIZ /A/\r
+                                00150   INTERNAL SYSDAT\r
+                                00160   >>\r
+\r
+                                00180   DEFINE VERSION (A,B)\r
+                                00190   <DEFINE VERS1\r
+                                00200   <SYSNUM:  XWD ^D'A,^D'B\r
+                                00210   XP SYSMOD,^D'A\r
+                                00220   XP SYSVER,^D'B\r
+                                00230   INTERNAL SYSNUM\r
+                                00240   >>\r
+\r
+                                00260   DEFINE CUSPTAPE (A)\r
+                                00270   <DEFINE CUSP1\r
+                                00280   <SYSTAP:  SIXBIT /A/\r
+                                00290   INTERNAL SYSTAP\r
+                                00300   >>\r
+\r
+                                00320   DEFINE ACPDL (J,CHJN,CHJPDN)\r
+                                00330   <         CH'J'N=CHJN\r
+                                00340    CH'J'PDN=CHJPDN\r
+                                00350   >\r
+\r\fIOINI1 - IO INITIALIZATION PART 1                 PAGE 2\r
+        MINIMAL CONFIGURATION\r
+\r
+\r
+                                00010   NAME <MINIMAL>^DEFINE NAME1\r
+                                        <CONFIG:  ASCIZ /MINIMAL/\r
+                                        INTERNAL CONFIG\r
+                                        >\r
+\r\fIOINI1 - IO INITIALIZATION PART 1                 PAGE 2\r
+        MINIMAL CONFIGURATION\r
+\r
+\r
+                                00040           DATE <8-16-65>^DEFINE DATE1\r
+                                        <SYSDAT:  ASCIZ /8-16-65/\r
+                                        INTERNAL SYSDAT\r
+                                        >^\r
+                                00050           VERSION 1,4^DEFINE VERS1\r
+                                        <SYSNUM:  XWD ^D1,^D4\r
+                                        XP SYSMOD,^D1\r
+                                        XP SYSVER,^D4\r
+                                        INTERNAL SYSNUM\r
+                                        >^\r
+                                00060           CUSPTAPE DTA0^DEFINE CUSP1\r
+                                        <SYSTAP:  SIXBIT /DTA0/\r
+                                        INTERNAL SYSTAP\r
+                                        >^\r
+\r
+                                00080   ;DEFINE THE IO PART OF THE SYSTEM\r
+                                00090   ;THAT IS:\r
+                                00100   ;         DEFINE INTERRUPT SERVICE ROTUINE TO BE USED\r
+                                00110   ;       ASSIGN DEVICES TO PI CHANNELS\r
+\r
+                                00130   DEFINE SYSTEM\r
+                                00140    <\r
+                                00150    ASSOC APR,6,<>\r
+                                00160    ASSOC CTY,3,<>\r
+                                00170    ASSOC SCN,3,<TTY0,TTY1>\r
+                                00180    ASSOC DTC,4,<DTA0>\r
+                                00190   >\r
+\r
+                        000001  00210   DTSIZ=1   ;MULTIPLE DECTAPE DIRECTORIES\r
+\r
+                        000001  00230   SCNLIN=1\r
+\r
+                                00250   ;DEFINE HIGHEST AC TO SAVE AND LENGTH OF PD LIST FOR EACH PI CHANNEL\r
+\r
+                        000000  00270   ACPDL (1,0,0)^    CH1N=0\r
+                        000000  00280   ACPDL (2,0,0)^    CH2N=0\r
+                        000011  00290   ACPDL (3,11,20)^          CH3N=11\r
+                        000011  00300   ACPDL (4,11,20)^          CH4N=11\r
+                        000000  00310   ACPDL (5,0,0)^    CH5N=0\r
+                        000017  00320   ACPDL (6,17,20^   CH6N=17\r
+                        000000  00330   ACPDL (7,0,0)^    CH7N=0\r
+                                00010             TITLE IOINI1 - IO INITIALIZATION PART 1\r
+        000000' 466231  644632  00020             NAME1^CONFIG:  ASCIZ /MINIMAL/\r
+        000001' 406300  000000\r
+        000002' 341326  133132  00030             DATE1^SYSDAT:  ASCIZ /8-16-65/\r
+        000003' 331520  000000\r
+        000004' 000001  000004  00040             VERS1^SYSNUM:  XWD ^D1,^D4\r
+        000005' 446441  200000  00050             CUSP1^SYSTAP:  SIXBIT /DTA0/\r
+\r
+                                00070   ;CONFIGURATION INDEPENDANT PART OF IOINIT FOLLOWS:\r
+\r
+                                00090   EXTERNAL ERROR\r
+\r\fIOINI1 - IO INITIALIZATION PART 1                 PAGE 1\r
+        MINIMAL CONFIGURATION\r
+\r
+\r
+                                00110   ;SETUP CHANNEL SAVE AND RESTORE ROUTINES\r
+\r
+                        000000  00130   CHANU1=0\r
+                        000000  00140   CHANU2=0\r
+                        000000  00150   CHANU3=0\r
+                        000000  00160   CHANU4=0\r
+                        000000  00170   CHANU5=0\r
+                        000000  00180   CHANU6=0\r
+                        000000  00190   CHANU7=0\r
+                                00200   DEFINE ASSOC(A,NO,D)\r
+                                00210   <IFE CHANU'NO,<\r
+                                00220   CHANU'NO=1\r
+                                00230   INTERNAL CH'NO'SAV,CH'NO',CH'NO'XIT,CH'NO'SAC\r
+                                00240   \r
+                                00250   CH'NO'SAV: 0\r
+                                00260     MOVEM CH'NO'N, CH'NO'SAC+CH'NO'N\r
+                                00270     MOVEI CH'NO'N, CH'NO'SAC\r
+                                00280     BLT CH'NO'N,CH'NO'SAC+CH'NO'N-1       ;DO ONLY ONCE FOR EACH CHANNEL\r
+                                00290     MOVE PDP, CH'NO'CJ\r
+                                00300     JRST @CH'NO'SAV\r
+                                00310   \r
+                                00320   CH'NO'SAC: REPEAT CH'NO'N+1,<EXP 0>     ;SPACE TO SAVE SOME AC'S\r
+                                00330             EXP CH'NO'XIT         ;FIRST ENTRY IN PD LIST(CHAN. EXIT)\r
+                                00340             REPEAT CH'NO'PDN-1,<EXP 0>    ;REST OF PD LIST\r
+                                00350   \r
+                                00360   CH'NO'XIT: MOVSI CH'NO'N, CH'NO'SAC\r
+                                00370    BLT CH'NO'N, CH'NO'N\r
+                                00380    JEN @CH'NO\r
+                                00390   \r
+                                00400   CH'NO'CJ: XWD -CH'NO'PDN+1,CH'NO'SAC+CH'NO'N+1  ;INIT. SETTING OF P\r
+                                00410   \r
+                                00420   CH'NO':   0             ;PC STORED HERE BY JSR\r
+                                00430    JRST .+1 ;INSTR. AT END OF SERVICE CHAIN\r
+                                00440    AOS CH'NO'ERR          ;SPURIOUS INTERRUPT, ADD TO COUNT\r
+                                00450    JEN @CH'NO             ;AND DISMISS\r
+                                00460   >\r
+                                00470   >\r
+                                00480   ;GENERATE THE SAVE AND RESTORE ROUTINES\r
+\r
+                                00500             SYSTEM^\r
+        000006' 000000  000000          CH6SAV: 0\r
+        000007' 202740  000033'           MOVEM CH6N, CH6SAC+CH6N\r
+        000010' 201740  000014'           MOVEI CH6N, CH6SAC\r
+        000011' 251740  000032'           BLT CH6N,CH6SAC+CH6N-1        ;DO ONLY ONCE FOR EACH CHANNEL\r
+        000012' 200140  000057'           MOVE PDP, CH6CJ\r
+        000013' 254020  000006'           JRST @CH6SAV\r
+        000014' 000000  000000          EXP 0\r
+        000015' 000000  000000          EXP 0\r
+        000016' 000000  000000          EXP 0\r
+        000017' 000000  000000          EXP 0\r
+        000020' 000000  000000          EXP 0\r
+        000021' 000000  000000          EXP 0\r
+\r\fIOINI1 - IO INITIALIZATION PART 1                 PAGE 1-1\r
+        MINIMAL CONFIGURATION\r
+\r
+        000022' 000000  000000          EXP 0\r
+        000023' 000000  000000          EXP 0\r
+        000024' 000000  000000          EXP 0\r
+        000025' 000000  000000          EXP 0\r
+        000026' 000000  000000          EXP 0\r
+        000027' 000000  000000          EXP 0\r
+        000030' 000000  000000          EXP 0\r
+        000031' 000000  000000          EXP 0\r
+        000032' 000000  000000          EXP 0\r
+        000033' 000000  000000          EXP 0   ;SPACE TO SAVE SOME AC'S\r
+        000034' 000000  000054'                   EXP CH6XIT            ;FIRST ENTRY IN PD LIST(CHAN. EXIT)\r
+        000035' 000000  000000          EXP 0\r
+        000036' 000000  000000          EXP 0\r
+        000037' 000000  000000          EXP 0\r
+        000040' 000000  000000          EXP 0\r
+        000041' 000000  000000          EXP 0\r
+        000042' 000000  000000          EXP 0\r
+        000043' 000000  000000          EXP 0\r
+        000044' 000000  000000          EXP 0\r
+        000045' 000000  000000          EXP 0\r
+        000046' 000000  000000          EXP 0\r
+        000047' 000000  000000          EXP 0\r
+        000050' 000000  000000          EXP 0\r
+        000051' 000000  000000          EXP 0\r
+        000052' 000000  000000          EXP 0\r
+        000053' 000000  000000          EXP 0   ;REST OF PD LIST\r
+        000054' 205740  000014'         CH6XIT: MOVSI CH6N, CH6SAC\r
+        000055' 251740  000017           BLT CH6N, CH6N\r
+        000056' 254520  000060'          JEN @CH6\r
+        000057' 777761  000034'         CH6CJ: XWD -CH6PDN+1,CH6SAC+CH6N+1      ;INIT. SETTING OF P\r
+        000060' 000000  000000          CH6:      0             ;PC STORED HERE BY JSR\r
+        000061' 254000  000062'          JRST .+1 ;INSTR. AT END OF SERVICE CHAIN\r
+        000062' 350000  000317'          AOS CH6ERR             ;SPURIOUS INTERRUPT, ADD TO COUNT\r
+        000063' 254520  000060'          JEN @CH6               ;AND DISMISS\r
+        000064' 000000  000000          CH3SAV: 0\r
+        000065' 202440  000103'           MOVEM CH3N, CH3SAC+CH3N\r
+        000066' 201440  000072'           MOVEI CH3N, CH3SAC\r
+        000067' 251440  000102'           BLT CH3N,CH3SAC+CH3N-1        ;DO ONLY ONCE FOR EACH CHANNEL\r
+        000070' 200140  000127'           MOVE PDP, CH3CJ\r
+        000071' 254020  000064'           JRST @CH3SAV\r
+        000072' 000000  000000          EXP 0\r
+        000073' 000000  000000          EXP 0\r
+        000074' 000000  000000          EXP 0\r
+        000075' 000000  000000          EXP 0\r
+        000076' 000000  000000          EXP 0\r
+        000077' 000000  000000          EXP 0\r
+        000100' 000000  000000          EXP 0\r
+        000101' 000000  000000          EXP 0\r
+        000102' 000000  000000          EXP 0\r
+        000103' 000000  000000          EXP 0   ;SPACE TO SAVE SOME AC'S\r
+        000104' 000000  000124'                   EXP CH3XIT            ;FIRST ENTRY IN PD LIST(CHAN. EXIT)\r
+        000105' 000000  000000          EXP 0\r
+        000106' 000000  000000          EXP 0\r
+\r\fIOINI1 - IO INITIALIZATION PART 1                 PAGE 1-2\r
+        MINIMAL CONFIGURATION\r
+\r
+        000107' 000000  000000          EXP 0\r
+        000110' 000000  000000          EXP 0\r
+        000111' 000000  000000          EXP 0\r
+        000112' 000000  000000          EXP 0\r
+        000113' 000000  000000          EXP 0\r
+        000114' 000000  000000          EXP 0\r
+        000115' 000000  000000          EXP 0\r
+        000116' 000000  000000          EXP 0\r
+        000117' 000000  000000          EXP 0\r
+        000120' 000000  000000          EXP 0\r
+        000121' 000000  000000          EXP 0\r
+        000122' 000000  000000          EXP 0\r
+        000123' 000000  000000          EXP 0   ;REST OF PD LIST\r
+        000124' 205440  000072'         CH3XIT: MOVSI CH3N, CH3SAC\r
+        000125' 251440  000011           BLT CH3N, CH3N\r
+        000126' 254520  000130'          JEN @CH3\r
+        000127' 777761  000104'         CH3CJ: XWD -CH3PDN+1,CH3SAC+CH3N+1      ;INIT. SETTING OF P\r
+        000130' 000000  000000          CH3:      0             ;PC STORED HERE BY JSR\r
+        000131' 254000  000132'          JRST .+1 ;INSTR. AT END OF SERVICE CHAIN\r
+        000132' 350000  000314'          AOS CH3ERR             ;SPURIOUS INTERRUPT, ADD TO COUNT\r
+        000133' 254520  000130'          JEN @CH3               ;AND DISMISS\r
+        000134' 000000  000000          CH4SAV: 0\r
+        000135' 202440  000153'           MOVEM CH4N, CH4SAC+CH4N\r
+        000136' 201440  000142'           MOVEI CH4N, CH4SAC\r
+        000137' 251440  000152'           BLT CH4N,CH4SAC+CH4N-1        ;DO ONLY ONCE FOR EACH CHANNEL\r
+        000140' 200140  000177'           MOVE PDP, CH4CJ\r
+        000141' 254020  000134'           JRST @CH4SAV\r
+        000142' 000000  000000          EXP 0\r
+        000143' 000000  000000          EXP 0\r
+        000144' 000000  000000          EXP 0\r
+        000145' 000000  000000          EXP 0\r
+        000146' 000000  000000          EXP 0\r
+        000147' 000000  000000          EXP 0\r
+        000150' 000000  000000          EXP 0\r
+        000151' 000000  000000          EXP 0\r
+        000152' 000000  000000          EXP 0\r
+        000153' 000000  000000          EXP 0   ;SPACE TO SAVE SOME AC'S\r
+        000154' 000000  000174'                   EXP CH4XIT            ;FIRST ENTRY IN PD LIST(CHAN. EXIT)\r
+        000155' 000000  000000          EXP 0\r
+        000156' 000000  000000          EXP 0\r
+        000157' 000000  000000          EXP 0\r
+        000160' 000000  000000          EXP 0\r
+        000161' 000000  000000          EXP 0\r
+        000162' 000000  000000          EXP 0\r
+        000163' 000000  000000          EXP 0\r
+        000164' 000000  000000          EXP 0\r
+        000165' 000000  000000          EXP 0\r
+        000166' 000000  000000          EXP 0\r
+        000167' 000000  000000          EXP 0\r
+        000170' 000000  000000          EXP 0\r
+        000171' 000000  000000          EXP 0\r
+        000172' 000000  000000          EXP 0\r
+        000173' 000000  000000          EXP 0   ;REST OF PD LIST\r
+\r\fIOINI1 - IO INITIALIZATION PART 1                 PAGE 1-3\r
+        MINIMAL CONFIGURATION\r
+\r
+        000174' 205440  000142'         CH4XIT: MOVSI CH4N, CH4SAC\r
+        000175' 251440  000011           BLT CH4N, CH4N\r
+        000176' 254520  000200'          JEN @CH4\r
+        000177' 777761  000154'         CH4CJ: XWD -CH4PDN+1,CH4SAC+CH4N+1      ;INIT. SETTING OF P\r
+        000200' 000000  000000          CH4:      0             ;PC STORED HERE BY JSR\r
+        000201' 254000  000202'          JRST .+1 ;INSTR. AT END OF SERVICE CHAIN\r
+        000202' 350000  000315'          AOS CH4ERR             ;SPURIOUS INTERRUPT, ADD TO COUNT\r
+        000203' 254520  000200'          JEN @CH4               ;AND DISMISS\r
+\r
+                                00520   ;SET UP NULL CHANNEL ROUTINES FOR UNUSED CHANNELS\r
+\r
+                                00540   DEFINE NULCHN(J)\r
+                                00550   <\r
+                                00560   INTERNAL CH'J,CH'J'XIT\r
+                                00570   CH'J:     0\r
+                                00580   CH'J'XIT: AOS CH'J'ERR\r
+                                00590    JEN @CH'J\r
+                                00600   >\r
+\r
+                                00620             IFE CHANU1,<NULCHN(1)>^\r
+        000204' 000000  000000          CH1:      0\r
+        000205' 350000  000312'         CH1XIT: AOS CH1ERR\r
+        000206' 254520  000204'          JEN @CH1\r
+                                00630             IFE CHANU2,<NULCHN(2)>^\r
+        000207' 000000  000000          CH2:      0\r
+        000210' 350000  000313'         CH2XIT: AOS CH2ERR\r
+        000211' 254520  000207'          JEN @CH2\r
+                                00640             IFE CHANU3,<NULCHN(3)>\r
+                                00650             IFE CHANU4,<NULCHN(4)>\r
+                                00660             IFE CHANU5,<NULCHN(5)>^\r
+        000212' 000000  000000          CH5:      0\r
+        000213' 350000  000316'         CH5XIT: AOS CH5ERR\r
+        000214' 254520  000212'          JEN @CH5\r
+                                00670             IFE CHANU6,<NULCHN(6)>\r
+                                00680             IFE CHANU7,<NULCHN(7)>^\r
+        000215' 000000  000000          CH7:      0\r
+        000216' 350000  000320'         CH7XIT: AOS CH7ERR\r
+        000217' 254520  000215'          JEN @CH7\r
+\r\fIOINI1 - IO INITIALIZATION PART 1                 PAGE 2\r
+        MINIMAL CONFIGURATION\r
+\r
+\r
+\r
+                                00720   ;ASSIGN DEVICE TO CHANNELS AND SETUP CORESPONDENCE TABLE\r
+                                00730   ;OF CHANNELS TO SERVICE ROUTINES\r
+\r
+                                00750   DEFINE ASSOC (A,N,D)\r
+                                00760   <         A'RET=CH'N'XIT\r
+                                00770    A'SAV=CH'N'SAV\r
+                                00780    A'SAC=CH'N'SAC\r
+                                00790    A'CHL=CH'N\r
+                                00800    A'CHN=N\r
+                                00810    A'BIT=1\r
+                                00820    REPEAT 7-N,<A'BIT=A'BIT*2>\r
+                                00830    A'OFF=1000+A'BIT       ;CONO PI, A'OFF WIL TURN CHANNEL OFF\r
+                                00840    A'ON=2000+A'BIT        ;TURN BACK ON\r
+                                00850    A'ACT=4000+A'BIT       ;FORCE INTERRUPT ON CHAN.\r
+                                00860   INTERN A'RET, A'SAV, A'CHL, A'CHN, A'SAC\r
+                                00870   INTERNAL A'OFF,A'ON,A'ACT,A'BIT\r
+                                00880    XWD A'CHL,A'INT\r
+                                00890    EXTERNAL A'INT\r
+                                00900   >\r
+\r
+                                00920   INTERNAL DEVINT\r
+        000220'                 00930   DEVINT:   SYSTEM^\r
+        000220' 000060' 000000*          XWD APRCHL,APRINT\r
+        000221' 000130' 000000*          XWD CTYCHL,CTYINT\r
+        000222' 000130' 000000*          XWD SCNCHL,SCNINT\r
+        000223' 000200' 000000*          XWD DTCCHL,DTCINT\r
+                        000004  00940   NDEV=.-DEVINT           ;NO. OF DEVICE INTERUPT SERVICE ROUTINES\r
+                        000003  00950   NDEVM1=NDEV-1           ;(USED BY ONCE)\r
+                                00960   INTERNAL NDEVM1\r
+\r\fIOINI1 - IO INITIALIZATION PART 1                 PAGE 3\r
+        MINIMAL CONFIGURATION\r
+\r
+\r
+\r
+                                01000   ;INITIALIZE SOME IO DEVICES\r
+                                01010   ;IOINI CALLED BY A PUSHJ PDP, FROM SYSINI AT SYSTEM INITIALIZATION\r
+\r
+                                01030   DEFINE IOINIT (A)\r
+                                01040   <IRP A\r
+                                01050   <         EXTERNAL A'INI\r
+                                01060    PUSHJ PDP,A'INI\r
+                                01070   >>\r
+\r
+                                01090   DEFINE ASSOC (A,B,C)\r
+                                01100   <         IFIDN <A><MTC>,< IOINIT MTC>\r
+                                01110    IFIDN <A><DTC>,< IOINIT DTC>\r
+                                01120    IFIDN <A><LPT>,< IOINIT LPT>\r
+                                01130    IFIDN <A><SCN>,< IOINIT SCN>\r
+                                01140    IFIDN <A><PTP>,<IOINIT PTP>\r
+                                01150    IFIDN <A><PTR>,<IOINIT PTR>\r
+                                01160   >\r
+\r
+                                01180   INTERNAL IOINI\r
+\r
+        000224'                 01200   IOINI:  SYSTEM^\r
+        000224' 260140  000000*          PUSHJ PDP,SCNINI\r
+        000225' 260140  000000*          PUSHJ PDP,DTCINI\r
+        000226' 254000  000000* 01210           JRST CLKINI             ;ALWAYS INIT. CLOCK\r
+\r
+                                01230   EXTERNAL CLKINI\r
+\r\fIOINI1 - IO INITIALIZATION PART 1                 PAGE 4\r
+        MINIMAL CONFIGURATION\r
+\r
+\r
+\r
+                                01270   ;CLOCK CONTROL PARAMETERS\r
+\r
+                        004006  01290             CLDS=4000+APRCHN      ;CLOCK DISABLE\r
+                        000206  01300             CLEN=200+APRCHN       ;CLOCK ENABLE\r
+\r
+                                01320             INTERNAL CLDS,CLEN\r
+\r
+                                01340   ;BYTE POINTERS\r
+\r
+        000227' 270400  000014  01360   PUUOAC:   POINT 4,UUO,12        ;UUO AC FIELD\r
+        000230' 000400  000000  01370   PIOMOD:   POINT 4,IOS,35        ;MODE BITS\r
+        000231' 331106  000001  01380   PJOBN:    POINT 9,DEVCHR(DEVDAT),8      ;DEVICE JOB ASSIGNMENT\r
+        000232' 220406  000001  01390   PJDCHN:   POINT 4,DEVCHR(DEVDAT),17     ;JOB DEVICE CHANNEL NO.\r
+        000233' 140606  000001  01400   PUNIT:    POINT 6,DEVCHR(DEVDAT),23     ;DEVICE UNIT NO.\r
+\r
+                                01420   INTERNAL PUUOAC,PIOMOD,PJOBN,PJDCHN,PUNIT\r
+\r
+                                01440   ;COMMON SUBROUTINE RETURNS\r
+\r
+        000234' 350003  000000  01460   CPOPJ2:   AOS (PDP)\r
+        000235' 350003  000000  01470   CPOPJ1:   AOS (PDP)\r
+        000236' 263140  000000  01480   CPOPJ:    POPJ PDP,\r
+\r
+                                01500   INTERNAL CPOPJ,CPOPJ1,CPOPJ2\r
+\r\fIOINI1 - IO INITIALIZATION PART 1                 PAGE 5\r
+        MINIMAL CONFIGURATION\r
+\r
+\r
+                                01530   ,SYSTEM DATA STORAGE\r
+\r
+\r
+                                01560   INTERNAL JOB,JOBADR,JBTADR,JBTSTS,USRREL,USRINF,USRJDA\r
+                                01570   INTERNAL USRPDP,JOBDAT,USRDDT,USRSAV,USRUXT,USRLO,USRHI\r
+                                01580   INTERNAL COMCNT,IOCOMP,USRPOV,STOPU,SCHEDF,TIME,JBTAD1\r
+                                01590   INTERNAL MTAVAL,DCAVAL,DTAVAL,MTREQ,DCREQ,DTREQ,TTYTAB,CORTAB\r
+                                01600   INTERNAL CH1ERR,CH2ERR,CH3ERR,CH4ERR,CH5ERR,CH6ERR,CH7ERR\r
+                                01610   INTERNAL CORLST,CORTAB,CORTAL,SYSEND,SYSBEG,DEVOPR\r
+\r
+                        000000  01630   JOBN=0  ;DEFINE NO. OF JOBS (0 THRU JOBN-1)\r
+                                01640   ;THERE MUST BE MORE TTY DEVICE DATA BLCKS THAN JOBS.\r
+\r
+                                01660   DEFINE ASSOC (A,N,D)\r
+                                01670   <IRP D,<IFIDN <A><SCN>,<JOBN=JOBN+1>>>\r
+                                01680             SYSTEM^\r
+                777777  777776  01690   MJOBN=-JOBN\r
+                                01700   INTERNAL JOBN,MJOBN\r
+\r
+        000237'                 01720   SYSBEG:   ;FIRST LOC IN SYSTEM DATA AREA\r
+                                01730   XP SYSBG1,SYSBEG+1      ;FIRST LOC+1\r
+        000237' 000000  000000  01740   JOB:      0             ;CURRENT JOB NUMBER EXCEPT WEN SCHEDF IS NON-ZERO\r
+        000240' 000000  000000  01750   JOBADR:   0             ;CONTAINS ADDRESS OF JOB CURRENTLY RUNNING\r
+        000241' 000000  000000  01760   JOBDAT:   0             ;CONTAINS ADDRESS OF JOB DATA AREA\r
+\r
+        000242'                 01780   JBTADR:   BLOCK JOBN            ;C(LH)=PROTECT, C(RH)=RELOCATION\r
+                                01790   XP JBTAD1,JBTADR+1   ;ADDRESS OF JOB 1(USED BY SYSMAK)\r
+        000244'                 01800   JBTSTS:   BLOCK JOBN            ;CONTAINS STATUS INFORMATION FOR EACH J\r
+\r
+        000246' 000000  000000  01820   USRPDP:   0         ;USER PUSH DOWN POINTER\r
+        000247' 000000  000000  01830   USRREL:   0         ;LH=0, RH CONTAINS CONTENTS OF PROTECTION REGISTER\r
+        000250'                 01840   USRLO:    ;FIRST LOC CLEARD BY SETUSR SUBROUTINE\r
+        000250' 000000  000000  01850   USRUXT:   0         ;UNUSED,  JOBUXT USED TO SAVE UUO PC(UUO0)\r
+        000251' 000000  000000  01860   USRLEV:   0         ;UNUSED,  JOBLEV USED TO SAVE LOC. 40\r
+        000252' 000000  000000  01870   USRSAV:   0         ;TEMPORARY STORAGE FOR UUO HANDLER\r
+        000253' 000000  000000  01880   USRPOV:   0         ;PUSH DOWN OVERFLOW TRAP\r
+        000254'                 01890             BLOCK 2\r
+        000256' 000000  000000  01900   USRINF:   0         ;UN LAYED OUT USER INFORMATION\r
+        000257'                 01910   USRJDA:   BLOCK 20  ;RH=JOB DEVICE ASSIGNMENTS FOR THIS USER,LH=UUOS\r
+                                01920   XP USRHI,.-1        ;LAST LOC CLEARED BY SETUSR ROUTINE\r
+                                01930   XP USRPFI,.-1       ;LAST LOC PROTECTED FROM IO SERVICE\r
+                                01940   XP USRPFU,.         ;LAST LOC PROTECTED FROM USER PROGRAM\r
+        000277' 000000  000000  01950   USRDDT:   0         ;STARTING ADDR OF USER DDT\r
+\r
+                                01970   ;DEVICE JUSTR BECOME AVAILABLE FLAGS\r
+        000300' 000000  000000  01980   MTAVAL:   0          ;MAGNETIC TAPE\r
+        000301' 000000  000000  01990   DCAVAL:   0          ;DATA CONTROL\r
+        000302' 000000  000000  02000   DTAVAL:   0          ;DECTAPE\r
+\r
+                                02020   ;NUMBER OF JOBS WAITING FOR DEVICES(-1=NONE, 0=1 USING, 1=1 USING)\r
+        000303' 777777  777777  02030   MTREQ:    -1        ;MAGNETIC TAPE\r
+        000304' 777777  777777  02040   DCREQ:    -1        ;DATA CONTROL\r
+\r\fIOINI1 - IO INITIALIZATION PART 1                 PAGE 5-1\r
+        MINIMAL CONFIGURATION\r
+\r
+        000305' 777777  777777  02050   DTREQ:    -1        ;DECTAPE\r
+        000306' 000000  000000  02060   IOCOMP:   0         ;NUMBER OF USERS IN IO WAIT STATE\r
+        000307' 000000  000000  02070   COMCNT:   0         ;NUMBER OF COMMANDS TYPED-IN BUT NOT DECODED\r
+        000310' 000000  000000  02080   STOPU:    0         ;NON-ZERO WHEN CLOCK INTERRUPT FORCED TO STOP USER\r
+        000311' 000000  000000  02090   SCHEDF:   0         ;NON-ZERO WHEN CLOCK ROUTINE IS SCHEDULING\r
+\r
+        000312' 000000  000000  02110   CH1ERR:   0         ;SPURIOUS INTERRUPT COUNTS FOR EACH CHANNEL\r
+        000313' 000000  000000  02120   CH2ERR:   0\r
+        000314' 000000  000000  02130   CH3ERR:   0\r
+        000315' 000000  000000  02140   CH4ERR:   0\r
+        000316' 000000  000000  02150   CH5ERR:   0\r
+        000317' 000000  000000  02160   CH6ERR:   0\r
+        000320' 000000  000000  02170   CH7ERR:   0\r
+\r
+                        000251' 02190              USRLO1=USRLO+1\r
+                                02200              INTERNAL USRLO1\r
+\r\fIOINI1 - IO INITIALIZATION PART 1                 PAGE 6\r
+        MINIMAL CONFIGURATION\r
+\r
+\r
+        000321' 000000  000000  02230   TIME:     0             ;TIME SYSTEM HAS RUN IN 60THS OF A SECOND\r
+\r
+\r
+                                02260   XP TTYLEN,SCNLIN+1   ;LENGTH OF TTY TRANSLATOR TABLES(INCLUDING CTY)\r
+        000322'                 02270   TTYTAB:   BLOCK TTYLEN          ;TTY TRANSLATOR TABLE\r
+                                02280                                   ;SIGN BIT = 1 IF COMMAND JUST TYPED\r
+                                02290                                   ;BITS 1 -9, JOB CONSOLE IS ATTACHED TO\r
+                                02300                                   ;BITS 18-35, THE DEVICE DATA BLOCK FOR\r
+        000324' 000000  000000  02310   DEVOPR:   0             ;SIXBIT PHYSICAL NAME OF OPERATORS\r
+                                02320                           ;CONSOLE SET BY SCNSER TO FIRST ACTIVE TTY.\r
+                                02330   ;LOCATIONS FOR CORE ALLOCATION\r
+                                02340   XP CORBLK,^D256          ;NO. OF 1K BLOCKS POSSIBLE\r
+        000325'                 02350   CORTAB:   BLOCK <CORBLK>/^D36+1         ;1K BLOCK USE BIT TABLE\r
+                                02360                                   ;A 1 MEANS BLOCK IS IN USE\r
+        000335' 000000  000000  02370   CORLST:   0             ;1 BIT BYTE POINTER TO LAST FREE BLOCK POSSIBLE\r
+        000336' 000000  000000  02380   CORTAL:   0             ;TOTAL NO. OF FREE CORE BLOCKS LEFT\r
+                                02390   ;CORLST AND CORTAL ARE SET UP AT SYSTEM INITIALIZATION\r
+\r
+                        000336' 02410   SYSEND=.-1              ;LAST LOC. CLEARED BY SYSINI\r
+\r
+                                02430   INTERNAL SYSSIZ\r
+                                02440   EXTERNAL SYSFIN\r
+        000337' 000000  000000* 02450   SYSSIZ:   EXP SYSFIN            ;SIZE OF MONITOR(LAST LOC. USED)\r
+\r\fIOINI1 - IO INITIALIZATION PART 1                 PAGE 7\r
+        MINIMAL CONFIGURATION\r
+\r
+\r
+                                02480             END,\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 000340\r
+\r
+9K CORE USED\r
+\r\fIOINI1 - IO INITIALIZATION PART 1                 PAGE 8\r
+        SYMBOL TABLE\r
+\r
+                000436  \r
+A               000000  INT\r
+AC1             000015  INT\r
+AC2             000016  INT\r
+AC3             000017  INT\r
+AL              000001  INT\r
+APRACT          004002  INT\r
+APRBIT          000002  INT\r
+APRCHL          000060' INT\r
+APRCHN          000006  INT\r
+APRINT          000220' EXT\r
+APROFF          001002  INT\r
+APRON           002002  INT\r
+APRRET          000054' INT\r
+APRSAC          000014' INT\r
+APRSAV          000006' INT\r
+ASSCON          400000  INT\r
+ASSPRG          200000  INT\r
+B               000014  INT\r
+BUFPNT          000012  INT\r
+BUFWRD          000013  INT\r
+CH1             000204' INT\r
+CH1ERR          000312' INT\r
+CH1N            000000  \r
+CH1PDN          000000  \r
+CH1XIT          000205' INT\r
+CH2             000207' INT\r
+CH2ERR          000313' INT\r
+CH2N            000000  \r
+CH2PDN          000000  \r
+CH2XIT          000210' INT\r
+CH3             000130' INT\r
+CH3CJ           000127' \r
+CH3ERR          000314' INT\r
+CH3N            000011  \r
+CH3PDN          000020  \r
+CH3SAC          000072' INT\r
+CH3SAV          000064' INT\r
+CH3XIT          000124' INT\r
+CH4             000200' INT\r
+CH4CJ           000177' \r
+CH4ERR          000315' INT\r
+CH4N            000011  \r
+CH4PDN          000020  \r
+CH4SAC          000142' INT\r
+CH4SAV          000134' INT\r
+CH4XIT          000174' INT\r
+CH5             000212' INT\r
+CH5ERR          000316' INT\r
+CH5N            000000  \r
+CH5PDN          000000  \r
+CH5XIT          000213' INT\r
+CH6             000060' INT\r
+\r\fIOINI1 - IO INITIALIZATION PART 1                 PAGE 8-1\r
+        SYMBOL TABLE\r
+\r
+CH6CJ           000057' \r
+CH6ERR          000317' INT\r
+CH6N            000017  \r
+CH6PDN          000020  \r
+CH6SAC          000014' INT\r
+CH6SAV          000006' INT\r
+CH6XIT          000054' INT\r
+CH7             000215' INT\r
+CH7ERR          000320' INT\r
+CH7N            000000  \r
+CH7PDN          000000  \r
+CH7XIT          000216' INT\r
+CHANU1          000000  \r
+CHANU2          000000  \r
+CHANU3          000001  \r
+CHANU4          000001  \r
+CHANU5          000000  \r
+CHANU6          000001  \r
+CHANU7          000000  \r
+CLDS            004006  INT\r
+CLEN            000206  INT\r
+CLKINI          000226' EXT\r
+CLOSB           002000  INT\r
+CLSIN           000002  INT\r
+CLSOUT          000001  INT\r
+COMCNT          000307' INT\r
+CONFIG          000000' INT\r
+CORBLK          000400  INT\r
+CORLST          000335' INT\r
+CORTAB          000325' INT\r
+CORTAL          000336' INT\r
+CPOPJ           000236' INT\r
+CPOPJ1          000235' INT\r
+CPOPJ2          000234' INT\r
+CTYACT          004020  INT\r
+CTYBIT          000020  INT\r
+CTYCHL          000130' INT\r
+CTYCHN          000003  INT\r
+CTYINT          000221' EXT\r
+CTYOFF          001020  INT\r
+CTYON           002020  INT\r
+CTYRET          000124' INT\r
+CTYSAC          000072' INT\r
+CTYSAV          000064' INT\r
+D               000017  INT\r
+DAT             000005  INT\r
+DCAVAL          000301' INT\r
+DCL             000001  INT\r
+DCREQ           000304' INT\r
+DCW             020000  INT\r
+DDI             000007  INT\r
+DDO             000006  INT\r
+DDTMEM          000037  INT\r
+\r\fIOINI1 - IO INITIALIZATION PART 1                 PAGE 8-2\r
+        SYMBOL TABLE\r
+\r
+DDTSYM          000036  INT\r
+DEN             000004  INT\r
+DEVADR          000007  INT\r
+DEVBUF          000006  INT\r
+DEVCHR          000001  INT\r
+DEVCTR          000011  INT\r
+DEVDAT          000006  INT\r
+DEVIAD          000007  INT\r
+DEVINT          000220' INT\r
+DEVIOS          000002  INT\r
+DEVLOG          000005  INT\r
+DEVMOD          000004  INT\r
+DEVNAM          000000  INT\r
+DEVOAD          000010  INT\r
+DEVOPR          000324' INT\r
+DEVPTR          000010  INT\r
+DEVSER          000003  INT\r
+DGF             000012  INT\r
+DIN             000003  INT\r
+DLK             000005  INT\r
+DOU             000002  INT\r
+DR              000016  INT\r
+DRL             000000  INT\r
+DSI             000011  INT\r
+DSO             000010  INT\r
+DTAVAL          000302' INT\r
+DTCACT          004010  INT\r
+DTCBIT          000010  INT\r
+DTCCHL          000200' INT\r
+DTCCHN          000004  INT\r
+DTCINI          000225' EXT\r
+DTCINT          000223' EXT\r
+DTCOFF          001010  INT\r
+DTCON           002010  INT\r
+DTCRET          000174' INT\r
+DTCSAC          000142' INT\r
+DTCSAV          000134' INT\r
+DTREQ           000305' INT\r
+DTSIZ           000001  \r
+DTW             040000  INT\r
+DVAVAL          000040  INT\r
+DVCDR           100000  INT\r
+DVDIR           000004  INT\r
+DVDIRI          400000  INT\r
+DVIN            000002  INT\r
+DVLPT           040000  INT\r
+DVMTA           000020  INT\r
+DVOUT           000001  INT\r
+DVTTY           000010  INT\r
+ENTRB           020000  INT\r
+ERROR           000000  EXT\r
+I               000010  INT\r
+IB              000013  INT\r
+\r\fIOINI1 - IO INITIALIZATION PART 1                 PAGE 8-3\r
+        SYMBOL TABLE\r
+\r
+IBUFB           200000  INT\r
+INITB           400000  INT\r
+INPB            010000  INT\r
+IO              000020  INT\r
+IOACT           010000  INT\r
+IOBEG           000002  INT\r
+IOBKTL          040000  INT\r
+IOCOMP          000306' INT\r
+IOCON           000040  INT\r
+IODEND          020000  INT\r
+IODERR          200000  INT\r
+IODISC          400000  INT\r
+IODONE          400000  INT\r
+IODTER          100000  INT\r
+IOEND           000040  INT\r
+IOFST           000004  INT\r
+IOIMPM          400000  INT\r
+IOINI           000224' INT\r
+IONRCK          000100  INT\r
+IORDEL          000100  INT\r
+IORET           000020  INT\r
+IOS             000000  INT\r
+IOSTRT          000010  INT\r
+IOUSE           400000  INT\r
+IOW             000001  INT\r
+IOWC            000020  INT\r
+IOWS            400000  INT\r
+ITEM            000004  INT\r
+JBFADR          000000  INT\r
+JBFCTR          000002  INT\r
+JBFPTR          000001  INT\r
+JBTAD1          000243' INT\r
+JBTADR          000242' INT\r
+JBTSTS          000244' INT\r
+JBUF            000005  INT\r
+JDAT            000011  INT\r
+JERR            002000  INT\r
+JIOW            100000  INT\r
+JNA             004000  INT\r
+JOB             000237' INT\r
+JOBADR          000240' INT\r
+JOBDAT          000241' INT\r
+JOBN            000002  INT\r
+LOOKB           040000  INT\r
+MINIMA          000000  INT\r
+MJOBN   777777  777776  INT\r
+MTAVAL          000300' INT\r
+MTREQ           000303' INT\r
+MTW             010000  INT\r
+NDEV            000004  \r
+NDEVM1          000003  INT\r
+OBUFB           100000  INT\r
+OUTPB           004000  INT\r
+\r\fIOINI1 - IO INITIALIZATION PART 1                 PAGE 8-4\r
+        SYMBOL TABLE\r
+\r
+PDP             000003  INT\r
+PICHN           000100  INT\r
+PIOMOD          000230' INT\r
+PJDCHN          000232' INT\r
+PJOBN           000231' INT\r
+PROG            000007  INT\r
+PUNIT           000233' INT\r
+PUUOAC          000227' INT\r
+RUN             200000  INT\r
+RUNABL          204000  INT\r
+SCHEDF          000311' INT\r
+SCNACT          004020  INT\r
+SCNBIT          000020  INT\r
+SCNCHL          000130' INT\r
+SCNCHN          000003  INT\r
+SCNINI          000224' EXT\r
+SCNINT          000222' EXT\r
+SCNLIN          000001  \r
+SCNOFF          001020  INT\r
+SCNON           002020  INT\r
+SCNRET          000124' INT\r
+SCNSAC          000072' INT\r
+SCNSAV          000064' INT\r
+STOPU           000310' INT\r
+SYSBEG          000237' INT\r
+SYSBG1          000240' INT\r
+SYSDAT          000002' INT\r
+SYSEND          000336' INT\r
+SYSFIN          000337' EXT\r
+SYSMOD          000001  INT\r
+SYSNUM          000004' INT\r
+SYSSIZ          000337' INT\r
+SYSTAP          000005' INT\r
+SYSVER          000004  INT\r
+TAC             000001  INT\r
+TAC1            000002  INT\r
+TEM             000010  INT\r
+TIME            000321' INT\r
+TTYATC          020000  INT\r
+TTYLEN          000002  INT\r
+TTYTAB          000322' INT\r
+TTYUSE          010000  INT\r
+USRDDT          000277' INT\r
+USRHI           000276' INT\r
+USRINF          000256' INT\r
+USRJDA          000257' INT\r
+USRLEV          000251' \r
+USRLO           000250' INT\r
+USRLO1          000251' INT\r
+USRMOD          010000  INT\r
+USRPDP          000246' INT\r
+USRPFI          000276' INT\r
+USRPFU          000277' INT\r
+\r\fIOINI1 - IO INITIALIZATION PART 1                 PAGE 8-5\r
+        SYMBOL TABLE\r
+\r
+USRPOV          000253' INT\r
+USRREL          000247' INT\r
+USRSAV          000252' INT\r
+USRUXT          000250' INT\r
+UUO             000014  INT\r
+\f   IIIIIIIII            OOOOOOOOO            IIIIIIIII         NNN         NNN         IIIIIIIII            222222222   \r
+   IIIIIIIII            OOOOOOOOO            IIIIIIIII         NNN         NNN         IIIIIIIII            222222222   \r
+   IIIIIIIII            OOOOOOOOO            IIIIIIIII         NNN         NNN         IIIIIIIII            222222222   \r
+      III            OOO         OOO            III            NNN         NNN            III            222         222\r
+      III            OOO         OOO            III            NNN         NNN            III            222         222\r
+      III            OOO         OOO            III            NNN         NNN            III            222         222\r
+      III            OOO         OOO            III            NNNNNN      NNN            III                        222\r
+      III            OOO         OOO            III            NNNNNN      NNN            III                        222\r
+      III            OOO         OOO            III            NNNNNN      NNN            III                        222\r
+      III            OOO         OOO            III            NNN   NNN   NNN            III                     222   \r
+      III            OOO         OOO            III            NNN   NNN   NNN            III                     222   \r
+      III            OOO         OOO            III            NNN   NNN   NNN            III                     222   \r
+      III            OOO         OOO            III            NNN      NNNNNN            III                  222      \r
+      III            OOO         OOO            III            NNN      NNNNNN            III                  222      \r
+      III            OOO         OOO            III            NNN      NNNNNN            III                  222      \r
+      III            OOO         OOO            III            NNN         NNN            III               222         \r
+      III            OOO         OOO            III            NNN         NNN            III               222         \r
+      III            OOO         OOO            III            NNN         NNN            III               222         \r
+   IIIIIIIII            OOOOOOOOO            IIIIIIIII         NNN         NNN         IIIIIIIII         222222222222222\r
+   IIIIIIIII            OOOOOOOOO            IIIIIIIII         NNN         NNN         IIIIIIIII         222222222222222\r
+   IIIIIIIII            OOOOOOOOO            IIIIIIIII         NNN         NNN         IIIIIIIII         222222222222222\r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  11:23:08\r
+File: DSKB1 :IOINI2.LST   [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:21
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:2424 \r
+File will be deleted after printing\r
+\f\rIOINI2 - IO INITIALIZATION PART 2                 PAGE 1\r
+        MINIMAL CONFIGURATION\r
+\r
+                                00010           XLIST\r
+                                01930          LIST\r
+\r\fIOINI2 - IO INITIALIZATION PART 2                 PAGE 7\r
+        MINIMAL CONFIGURATION\r
+\r
+\r
+                                00010   ;SOME MACROS FOR DEFINING CONFIGURATION\r
+\r
+                                00030   DEFINE NAME (A)\r
+                                00040   <DEFINE NAME1\r
+                                00050   <CONFIG:  ASCIZ /A/\r
+                                00060   INTERNAL CONFIG\r
+                                00070   >\r
+                                00080   XP A,0\r
+                                00090   SUBTTL A CONFIGURATION\r
+                                00100   >\r
+\r
+                                00120   DEFINE DATE (A)\r
+                                00130   <DEFINE DATE1\r
+                                00140   <SYSDAT:  ASCIZ /A/\r
+                                00150   INTERNAL SYSDAT\r
+                                00160   >>\r
+\r
+                                00180   DEFINE VERSION (A,B)\r
+                                00190   <DEFINE VERS1\r
+                                00200   <SYSNUM:  XWD ^D'A,^D'B\r
+                                00210   XP SYSMOD,^D'A\r
+                                00220   XP SYSVER,^D'B\r
+                                00230   INTERNAL SYSNUM\r
+                                00240   >>\r
+\r
+                                00260   DEFINE CUSPTAPE (A)\r
+                                00270   <DEFINE CUSP1\r
+                                00280   <SYSTAP:  SIXBIT /A/\r
+                                00290   INTERNAL SYSTAP\r
+                                00300   >>\r
+\r
+                                00320   DEFINE ACPDL (J,CHJN,CHJPDN)\r
+                                00330   <         CH'J'N=CHJN\r
+                                00340    CH'J'PDN=CHJPDN\r
+                                00350   >\r
+\r\fIOINI2 - IO INITIALIZATION PART 2                 PAGE 2\r
+        MINIMAL CONFIGURATION\r
+\r
+\r
+                                00010   NAME <MINIMAL>^DEFINE NAME1\r
+                                        <CONFIG:  ASCIZ /MINIMAL/\r
+                                        INTERNAL CONFIG\r
+                                        >\r
+\r\fIOINI2 - IO INITIALIZATION PART 2                 PAGE 2\r
+        MINIMAL CONFIGURATION\r
+\r
+\r
+                                00040           DATE <8-16-65>^DEFINE DATE1\r
+                                        <SYSDAT:  ASCIZ /8-16-65/\r
+                                        INTERNAL SYSDAT\r
+                                        >^\r
+                                00050           VERSION 1,4^DEFINE VERS1\r
+                                        <SYSNUM:  XWD ^D1,^D4\r
+                                        XP SYSMOD,^D1\r
+                                        XP SYSVER,^D4\r
+                                        INTERNAL SYSNUM\r
+                                        >^\r
+                                00060           CUSPTAPE DTA0^DEFINE CUSP1\r
+                                        <SYSTAP:  SIXBIT /DTA0/\r
+                                        INTERNAL SYSTAP\r
+                                        >^\r
+\r
+                                00080   ;DEFINE THE IO PART OF THE SYSTEM\r
+                                00090   ;THAT IS:\r
+                                00100   ;         DEFINE INTERRUPT SERVICE ROTUINE TO BE USED\r
+                                00110   ;       ASSIGN DEVICES TO PI CHANNELS\r
+\r
+                                00130   DEFINE SYSTEM\r
+                                00140    <\r
+                                00150    ASSOC APR,6,<>\r
+                                00160    ASSOC CTY,3,<>\r
+                                00170    ASSOC SCN,3,<TTY0,TTY1>\r
+                                00180    ASSOC DTC,4,<DTA0>\r
+                                00190   >\r
+\r
+                        000001  00210   DTSIZ=1   ;MULTIPLE DECTAPE DIRECTORIES\r
+\r
+                        000001  00230   SCNLIN=1\r
+\r
+                                00250   ;DEFINE HIGHEST AC TO SAVE AND LENGTH OF PD LIST FOR EACH PI CHANNEL\r
+\r
+                        000000  00270   ACPDL (1,0,0)^    CH1N=0\r
+                        000000  00280   ACPDL (2,0,0)^    CH2N=0\r
+                        000011  00290   ACPDL (3,11,20)^          CH3N=11\r
+                        000011  00300   ACPDL (4,11,20)^          CH4N=11\r
+                        000000  00310   ACPDL (5,0,0)^    CH5N=0\r
+                        000017  00320   ACPDL (6,17,20^   CH6N=17\r
+                        000000  00330   ACPDL (7,0,0)^    CH7N=0\r
+                                00010           TITLE IOINI2 - IO INITIALIZATION PART 2\r
+\r
+                                00030   ;DEFINITIONS OF DEVCHN AND DEVBIT\r
+                                00040   ;THESE ALSO OCCUR IN IOINT1\r
+\r
+                                00060   DEFINE ASSOC (A,N,D)\r
+                                00070   <\r
+                                00080     A'CHN=N\r
+                                00090   >\r
+\r
+                                00110             SYSTEM^\r
+\r\fIOINI2 - IO INITIALIZATION PART 2                 PAGE 1\r
+        MINIMAL CONFIGURATION\r
+\r
+\r
+\r\fIOINI2 - IO INITIALIZATION PART 2                 PAGE 2\r
+        MINIMAL CONFIGURATION\r
+\r
+\r
+\r
+                                00160   ;APR PIP BITS\r
+\r
+                        000001  00180   APRBIT=1\r
+                        000002  00190   REPEAT 7-APRCHN,<APRBIT=APRBIT*2>\r
+                                00200   XP PION,200             ;CONO PI,PION TURNS PI SYSTEM ON\r
+                                00210   XP PIOFF,400            ;TURN IT OFF\r
+                                00220   XP PICLK,PION+1B24+APRBIT       ;TURN PI ON, AND FORCE CLOCK INT.\r
+                                00230   XP CLKOFF,1000+APRCHN           ;CONO APR,CLKOFF TURNS CLOCK FLAG OFF\r
+\r\fIOINI2 - IO INITIALIZATION PART 2                 PAGE 3\r
+        MINIMAL CONFIGURATION\r
+\r
+\r
+\r
+                                00270   ;ASSEMBLE ALL DEVICE DATA BLOCKS AND LINK THEM TOGETHER\r
+\r
+                                00290   DEFINE SCNDDB (A,B,C)\r
+                                00300   <         INTERNAL C'DB\r
+                                00310   C'DB:     ZZ=.\r
+                                00320    SIXBIT /C/\r
+                                00330    XWD A'CHN*PICHN,STTYBF+1       ;LONG ENOUGH FOR PRINTING\r
+                                00340                   ;SEQUENCE CARD IMAGE.\r
+                                00350                   ;USER BUFFERS ARE 2 WORDS\r
+                                00360                   ;LONGER THEN THE MONITORY TTY BUFFERS.\r
+                                00370    0\r
+                                00380   EXTERNAL  TTYDSP\r
+                                00390    XWD C,TTYDSP\r
+                                00400    XWD DVTTY+DVIN+DVOUT,3\r
+                                00410    0\r
+                                00420    0\r
+                                00430    XWD PROG,0\r
+                                00440    XWD PROG,0\r
+                                00450    XP TTYPTR,.-ZZ\r
+                                00460    0\r
+                                00470    XP TTYCTR,.-ZZ\r
+                                00480    0\r
+                                00490    XP TTYSAV,.-ZZ\r
+                                00500    0\r
+                                00510    XP TTYBUF,.-ZZ\r
+                                00520    XP TTYBM1,TTYBUF-1\r
+                                00530   XP STTYBF,20\r
+                                00540   XP STTYB1,STTYBF+1      ;LENGTH+1\r
+                                00550    BLOCK STTYBF\r
+                                00560   XP TTYBFE,.-ZZ-1\r
+                                00570   \r
+                                00580   ;LINE NO. PARAMETERS\r
+                                00590   XP TTYLEN,SCNLIN+1  ;LENGTH OF TTY TRANSLATOR TABLE(INCLUDE TTY)\r
+                                00600   XP TSCNLN,SCNLIN-1  ;HIGHEST TTY LINE NO.(NOT COUNTING CTY)\r
+                                00610   XP TCONLN,TSCNLN+1  ;CTY LINE NUMBER\r
+                                00620   XP MTTYLN,-TTYLEN   ;NEGATIVEL LENGTH OF TRANSLATOR TABLE\r
+                                00630   XP FSNCHN,SCNCHN*101 ;CHANNEL ASSIGNED, FOR FULL DUPLEX SCN.\r
+                                00640    XP TTYLST,TTY0DB    ;FIRST TTY DEVICE DATA BLOCK\r
+                                00650    >\r
+\r
+                                00670   ;NEG. NO. OF TELTYPE DEVICE DATA BLOCKS\r
+\r
+                        000000  00690   MLTTYL=0\r
+                                00700   DEFINE ASSOC (A,N,D)\r
+                                00710   <IRP D,<IFIDN <A>,<SCN>,<MLTTYL=MLTTYL-1>>>\r
+\r
+                                00730             SYSTEM^\r
+\r
+                                00750   INTERNAL MLTTYL\r
+\r\fIOINI2 - IO INITIALIZATION PART 2                 PAGE 4\r
+        MINIMAL CONFIGURATION\r
+\r
+\r
+\r
+                                00790   ;MAG TAPE DEVICE DATA BLOCK\r
+\r
+                        000000  00810   MTCNUM=0\r
+\r
+                                00830   DEFINE MTCDDB (A,B,C)\r
+                                00840   <         INTERNAL C'DB\r
+                                00850   C'DB:     SIXBIT /C/\r
+                                00860   MTCNUM=MTCNUM+1\r
+                                00870    XWD IORET+A'CHN*PICHN,<MTCNUM-1>*10000+201\r
+                                00880   \r
+                                00890    0\r
+                                00900    XWD C,MTDISP\r
+                                00910   EXTERNAL MTDISP\r
+                                00920    XWD 4400+DVMTA+DVIN+DVOUT,154403\r
+                                00930    0\r
+                                00940    0\r
+                                00950    XWD PROG,0\r
+                                00960    XWD PROG,0\r
+                                00970   >\r
+\r\fIOINI2 - IO INITIALIZATION PART 2                 PAGE 5\r
+        MINIMAL CONFIGURATION\r
+\r
+\r
+                                01000   ;DECTAPE DEVICE DATA BLOCK\r
+\r
+                        000000  01020   DTCNUM=0\r
+\r
+                                01040   DEFINE DTCDDB (A,B,C)\r
+                                01050   <         INTERNAL C'DB\r
+                                01060   C'DB:     ZZ=.\r
+                                01070    SIXBIT /C/\r
+                                01080   DTCNUM=DTCNUM+1\r
+                                01090    XWD IORET+A'CHN*PICHN,<DTCNUM-1>*10000+201\r
+                                01100    0\r
+                                01110    XWD C,UTDSP\r
+                                01120   EXTERNAL UTDSP\r
+                                01130    XWD 4400+DVDIR+DVIN+DVOUT,154403\r
+                                01140    0\r
+                                01150    0\r
+                                01160    0\r
+                                01170    0\r
+                                01180   XP UFREE,.-ZZ   ;NEXT FREE BLOCK NO.\r
+                                01190    0\r
+                                01200    XP UDIR,.-ZZ   ;LINK TO DIRECTORY IN DATA BLOCK\r
+                                01210    IFE DTSIZ,<    EXP DIRBUF\r
+                                01220   >\r
+                                01230   IFN DTSIZ,<     EXP DTDIR+200*<DTCNUM-1>\r
+                                01240   >\r
+                                01250   >\r
+\r
+\r\fIOINI2 - IO INITIALIZATION PART 2                 PAGE 6\r
+        MINIMAL CONFIGURATION\r
+\r
+\r
+\r
+                                01300   ;LINE PRINTER DEVICE DTA BLOCK\r
+\r
+                                01320   DEFINE LPTDDB (A,B,C)\r
+                                01330   <INTERNAL LPTDB,LPTDAT,LPTCHR,LPTIOS,LPTSER,LPTMOD\r
+                                01340   INTERNAL LPTBUF,LPTPTR,LPTADR,LPTSV1\r
+                                01350   EXTERNAL LPTDSP\r
+                                01360   \r
+                                01370   LPTDB:\r
+                                01380   LPTDAT:   SIXBIT /LPT/\r
+                                01390   LPTCHR:   XWD A'CHN*PICHN,32\r
+                                01400   LPTIOS:   0\r
+                                01410   LPTSER:   XWD C,LPTDSP\r
+                                01420   LPTMOD:   XWD 0+DVOUT,3\r
+                                01430    0\r
+                                01440   LPTBUF:   0\r
+                                01450   LPTPTR:   0\r
+                                01460   LPTADR:   XWD PROG,0\r
+                                01470   LPTSV1:   0\r
+                                01480   \r
+                                01490   XP LPTCLB,LPTCHN+200  ;PI CHANNEL AND BUSY FLAG\r
+                                01500   XP LPTCHB,11*LPTCHN ;LINE PRINTER ERROR AND DATA CHANNELS\r
+                                01510   >\r
+\r\fIOINI2 - IO INITIALIZATION PART 2                 PAGE 7\r
+        MINIMAL CONFIGURATION\r
+\r
+\r
+\r
+                                01550   ;CARD READER DEVICE DATA BLOCK\r
+\r
+                                01570   DEFINE CDRDDB (A,B,C)\r
+                                01580   <INTERNAL CDRDB,CDRDAT,CRDIS\r
+                                01590   EXTERNAL CDRDSP\r
+                                01600   \r
+                                01610   CDRDB:\r
+                                01620   CDRDAT:   SIXBIT /CDR/\r
+                                01630    XWD A'CHN*PICHN,34 ;LONG ENOUGHT FOR BINARY CARDS\r
+                                01640    0\r
+                                01650    XWD C,CDRDSP\r
+                                01660    XWD DVCDR+1400+DVIN,14403\r
+                                01670    0\r
+                                01680    0\r
+                                01690    XWD PROG,0\r
+                                01700    0\r
+                                01710    0\r
+                                01720   CRDIS:    JRST .\r
+                                01730   >\r
+\r\fIOINI2 - IO INITIALIZATION PART 2                 PAGE 8\r
+        MINIMAL CONFIGURATION\r
+\r
+\r
+\r
+                                01770   ;PAPER TAPE READER DEVICE DATA BLOCK\r
+\r
+                                01790   DEFINE PTRDDB (A,B,C)\r
+                                01800   <INTERNAL PTRDB,PTRDAT,PTRCHR,PTRIOS,PTRSER\r
+                                01810   INTERNAL PTRMOD,PTRBUF,PTRADR,PTRPTR,PTRCTR,PTRSVC,PTRSV1\r
+                                01820   EXTERNAL PTRDSP\r
+                                01830   \r
+                                01840   PTRDB:\r
+                                01850   PTRDAT:   SIXBIT /PTR/\r
+                                01860   PTRCHR:   XWD A'CHN*PICHN,41\r
+                                01870   PTRIOS:   0\r
+                                01880   PTRSER:   XWD C,PTRDSP\r
+                                01890   PTRMOD:   XWD 1000+DVIN,14403\r
+                                01900    0\r
+                                01910   PTRBUF:   0\r
+                                01920   PTRADR:   XWD PROG,0\r
+                                01930   PTRPTR:   0\r
+                                01940   PTRCTR:   0\r
+                                01950   PTRSVC:   0\r
+                                01960   PTRSV1:   0\r
+                                01970   >\r
+\r\fIOINI2 - IO INITIALIZATION PART 2                 PAGE 9\r
+        MINIMAL CONFIGURATION\r
+\r
+\r
+\r
+                                02010   ;PAPER TAPE PUNCH DEVICE DATA BLOCK\r
+\r
+                                02030   DEFINE PTPDDB (A,B,C)\r
+                                02040   <INTERNAL PTPDB,PTPDAT,PTPCHR,PTPIOS,PTPSER,PTPMOD,PTPBUF\r
+                                02050   INTERNAL PTPPTR,PTPADR,PTPCTR,PTPCNT,PTPCHA,PTPSIO\r
+                                02060   EXTERNAL PTPDSP\r
+                                02070   \r
+                                02080   PTPDB:\r
+                                02090   PTPDAT:   SIXBIT /PTP/\r
+                                02100   PTPCHR:   XWD A'CHN*PICHN,41\r
+                                02110   PTPIOS:   0\r
+                                02120   PTPSER:   XWD C,PTPDSP\r
+                                02130   PTPMOD:   XWD 1000+DVOUT,14403\r
+                                02140    0\r
+                                02150   PTPBUF:   0\r
+                                02160   PTPPTR:   0\r
+                                02170   PTPADR:   XWD PROG,0\r
+                                02180   PTPCTR:   0\r
+                                02190   PTPCNT:   0\r
+                                02200   PTPCHA:   0\r
+                                02210   PTPSIO:   0\r
+                                02220   >\r
+\r\fIOINI2 - IO INITIALIZATION PART 2                 PAGE 10\r
+        MINIMAL CONFIGURATION\r
+\r
+\r
+\r
+                                02260   ;GENERATE DEVICE DATA BLOCKS NEEDED FOR THIS CONFIGURATION\r
+\r
+                                02280   DEFINE ASSOC (A,B,C)\r
+                                02290   <\r
+                                02300   IRP C,<\r
+                                02310             ;DEFINE FORWARD LINL SYMBOL\r
+                                02320    LINK\r
+                                02330   ;\r
+                                02340   ;\r
+                                02350   ;\r
+                                02360    A'DDB A,B,C\r
+                                02370   \r
+                                02380   C=0       ;SET LINK TO 0(IN CASE THIS IS LAST DDB)\r
+                                02390   DEFINE LINK\r
+                                02400   <C=.>\r
+                                02410   >\r
+                                02420   >\r
+\r
+                                02440   INTERNAL DEVLST\r
+\r
+        000000' 000001' 000000  02460   DEVLST:   XWD FIRDB,0           ;BEGINNING OF DEVICE DATA BLOCK CHAIN\r
+\r
+                                02480   DEFINE LINK\r
+                                02490   <FIRDB=.>\r
+\r
+                                02510             SYSTEM^\r
+        000001' 646471  200000           SIXBIT /TTY0/\r
+        000002' 000300  000021           XWD SCNCHN*PICHN,STTYBF+1      ;LONG ENOUGH FOR PRINTING\r
+        000003' 000000  000000           0\r
+        000004' 000035' 000000*          XWD TTY0,TTYDSP\r
+        000005' 000013  000003           XWD DVTTY+DVIN+DVOUT,3\r
+        000006' 000000  000000           0\r
+        000007' 000000  000000           0\r
+        000010' 000007  000000           XWD PROG,0\r
+        000011' 000007  000000           XWD PROG,0\r
+        000012' 000000  000000           0\r
+        000013' 000000  000000           0\r
+        000014' 000000  000000           0\r
+        000035' 646471  210000           SIXBIT /TTY1/\r
+        000036' 000300  000021           XWD SCNCHN*PICHN,STTYBF+1      ;LONG ENOUGH FOR PRINTING\r
+        000037' 000000  000000           0\r
+        000040' 000071' 000004*          XWD TTY1,TTYDSP\r
+        000041' 000013  000003           XWD DVTTY+DVIN+DVOUT,3\r
+        000042' 000000  000000           0\r
+        000043' 000000  000000           0\r
+        000044' 000007  000000           XWD PROG,0\r
+        000045' 000007  000000           XWD PROG,0\r
+        000046' 000000  000000           0\r
+        000047' 000000  000000           0\r
+        000050' 000000  000000           0\r
+        000071' 446441  200000           SIXBIT /DTA0/\r
+\r\fIOINI2 - IO INITIALIZATION PART 2                 PAGE 10-1\r
+        MINIMAL CONFIGURATION\r
+\r
+        000072' 000420  000201           XWD IORET+DTCCHN*PICHN,<DTCNUM-1>*10000+201\r
+        000073' 000000  000000           0\r
+        000074' 000000  000000*          XWD DTA0,UTDSP\r
+        000075' 004407  154403           XWD 4400+DVDIR+DVIN+DVOUT,154403\r
+        000076' 000000  000000           0\r
+        000077' 000000  000000           0\r
+        000100' 000000  000000           0\r
+        000101' 000000  000000           0\r
+        000102' 000000  000000           0\r
+        000103' 000000  000104'         IFN DTSIZ,<     EXP DTDIR+200*<DTCNUM-1>\r
+\r\fIOINI2 - IO INITIALIZATION PART 2                 PAGE 11\r
+        MINIMAL CONFIGURATION\r
+\r
+\r
+\r
+        000104'                 02550             LIT\r
+\r
+                                02570             IFE DTSIZ,<           DIRBUF: BLOCK 200\r
+                                02580    INTERNAL DIRBUF\r
+                                02590   >\r
+\r
+        000104'                 02610   IFN DTSIZ,<DTDIR:       BLOCK DTCNUM*200\r
+                                02620   INTERNAL DTDIR\r
+                                02630   >\r
+\r
+                                02650             END,\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 000304\r
+\r
+9K CORE USED\r
+\r\fIOINI2 - IO INITIALIZATION PART 2                 PAGE 12\r
+        SYMBOL TABLE\r
+\r
+                000272  \r
+A               000000  INT\r
+AC1             000015  INT\r
+AC2             000016  INT\r
+AC3             000017  INT\r
+AL              000001  INT\r
+APRBIT          000002  \r
+APRCHN          000006  \r
+ASSCON          400000  INT\r
+ASSPRG          200000  INT\r
+B               000014  INT\r
+BUFPNT          000012  INT\r
+BUFWRD          000013  INT\r
+CH1N            000000  \r
+CH1PDN          000000  \r
+CH2N            000000  \r
+CH2PDN          000000  \r
+CH3N            000011  \r
+CH3PDN          000020  \r
+CH4N            000011  \r
+CH4PDN          000020  \r
+CH5N            000000  \r
+CH5PDN          000000  \r
+CH6N            000017  \r
+CH6PDN          000020  \r
+CH7N            000000  \r
+CH7PDN          000000  \r
+CLKOFF          001006  INT\r
+CLOSB           002000  INT\r
+CLSIN           000002  INT\r
+CLSOUT          000001  INT\r
+CTYCHN          000003  \r
+D               000017  INT\r
+DAT             000005  INT\r
+DCL             000001  INT\r
+DCW             020000  INT\r
+DDI             000007  INT\r
+DDO             000006  INT\r
+DDTMEM          000037  INT\r
+DDTSYM          000036  INT\r
+DEN             000004  INT\r
+DEVADR          000007  INT\r
+DEVBUF          000006  INT\r
+DEVCHR          000001  INT\r
+DEVCTR          000011  INT\r
+DEVDAT          000006  INT\r
+DEVIAD          000007  INT\r
+DEVIOS          000002  INT\r
+DEVLOG          000005  INT\r
+DEVLST          000000' INT\r
+DEVMOD          000004  INT\r
+DEVNAM          000000  INT\r
+DEVOAD          000010  INT\r
+\r\fIOINI2 - IO INITIALIZATION PART 2                 PAGE 12-1\r
+        SYMBOL TABLE\r
+\r
+DEVPTR          000010  INT\r
+DEVSER          000003  INT\r
+DGF             000012  INT\r
+DIN             000003  INT\r
+DLK             000005  INT\r
+DOU             000002  INT\r
+DR              000016  INT\r
+DRL             000000  INT\r
+DSI             000011  INT\r
+DSO             000010  INT\r
+DTA0            000000  \r
+DTA0DB          000071' INT\r
+DTCCHN          000004  \r
+DTCNUM          000001  \r
+DTDIR           000104' INT\r
+DTSIZ           000001  \r
+DTW             040000  INT\r
+DVAVAL          000040  INT\r
+DVCDR           100000  INT\r
+DVDIR           000004  INT\r
+DVDIRI          400000  INT\r
+DVIN            000002  INT\r
+DVLPT           040000  INT\r
+DVMTA           000020  INT\r
+DVOUT           000001  INT\r
+DVTTY           000010  INT\r
+ENTRB           020000  INT\r
+FIRDB           000001' \r
+FSNCHN          000303  INT\r
+I               000010  INT\r
+IB              000013  INT\r
+IBUFB           200000  INT\r
+INITB           400000  INT\r
+INPB            010000  INT\r
+IO              000020  INT\r
+IOACT           010000  INT\r
+IOBEG           000002  INT\r
+IOBKTL          040000  INT\r
+IOCON           000040  INT\r
+IODEND          020000  INT\r
+IODERR          200000  INT\r
+IODISC          400000  INT\r
+IODONE          400000  INT\r
+IODTER          100000  INT\r
+IOEND           000040  INT\r
+IOFST           000004  INT\r
+IOIMPM          400000  INT\r
+IONRCK          000100  INT\r
+IORDEL          000100  INT\r
+IORET           000020  INT\r
+IOS             000000  INT\r
+IOSTRT          000010  INT\r
+IOUSE           400000  INT\r
+\r\fIOINI2 - IO INITIALIZATION PART 2                 PAGE 12-2\r
+        SYMBOL TABLE\r
+\r
+IOW             000001  INT\r
+IOWC            000020  INT\r
+IOWS            400000  INT\r
+ITEM            000004  INT\r
+JBFADR          000000  INT\r
+JBFCTR          000002  INT\r
+JBFPTR          000001  INT\r
+JBUF            000005  INT\r
+JDAT            000011  INT\r
+JERR            002000  INT\r
+JIOW            100000  INT\r
+JNA             004000  INT\r
+LOOKB           040000  INT\r
+MINIMA          000000  INT\r
+MLTTYL  777777  777776  INT\r
+MTCNUM          000000  \r
+MTTYLN  777777  777776  INT\r
+MTW             010000  INT\r
+OBUFB           100000  INT\r
+OUTPB           004000  INT\r
+PDP             000003  INT\r
+PICHN           000100  INT\r
+PICLK           004202  INT\r
+PIOFF           000400  INT\r
+PION            000200  INT\r
+PROG            000007  INT\r
+RUN             200000  INT\r
+RUNABL          204000  INT\r
+SCNCHN          000003  \r
+SCNLIN          000001  \r
+STTYB1          000021  INT\r
+STTYBF          000020  INT\r
+TAC             000001  INT\r
+TAC1            000002  INT\r
+TCONLN          000001  INT\r
+TEM             000010  INT\r
+TSCNLN          000000  INT\r
+TTY0            000035' \r
+TTY0DB          000001' INT\r
+TTY1            000071' \r
+TTY1DB          000035' INT\r
+TTYATC          020000  INT\r
+TTYBFE          000033  INT\r
+TTYBM1          000013  INT\r
+TTYBUF          000014  INT\r
+TTYCTR          000012  INT\r
+TTYDSP          000040' EXT\r
+TTYLEN          000002  INT\r
+TTYLST          000001' INT\r
+TTYPTR          000011  INT\r
+TTYSAV          000013  INT\r
+TTYUSE          010000  INT\r
+UDIR            000012  INT\r
+\r\fIOINI2 - IO INITIALIZATION PART 2                 PAGE 12-3\r
+        SYMBOL TABLE\r
+\r
+UFREE           000011  INT\r
+USRMOD          010000  INT\r
+UTDSP           000074' EXT\r
+UUO             000014  INT\r
+ZZ              000071' \r
+\f   IIIIIIIII            OOOOOOOOO            IIIIIIIII         NNN         NNN         IIIIIIIII            333333333   \r
+   IIIIIIIII            OOOOOOOOO            IIIIIIIII         NNN         NNN         IIIIIIIII            333333333   \r
+   IIIIIIIII            OOOOOOOOO            IIIIIIIII         NNN         NNN         IIIIIIIII            333333333   \r
+      III            OOO         OOO            III            NNN         NNN            III            333         333\r
+      III            OOO         OOO            III            NNN         NNN            III            333         333\r
+      III            OOO         OOO            III            NNN         NNN            III            333         333\r
+      III            OOO         OOO            III            NNNNNN      NNN            III                        333\r
+      III            OOO         OOO            III            NNNNNN      NNN            III                        333\r
+      III            OOO         OOO            III            NNNNNN      NNN            III                        333\r
+      III            OOO         OOO            III            NNN   NNN   NNN            III                     333   \r
+      III            OOO         OOO            III            NNN   NNN   NNN            III                     333   \r
+      III            OOO         OOO            III            NNN   NNN   NNN            III                     333   \r
+      III            OOO         OOO            III            NNN      NNNNNN            III                        333\r
+      III            OOO         OOO            III            NNN      NNNNNN            III                        333\r
+      III            OOO         OOO            III            NNN      NNNNNN            III                        333\r
+      III            OOO         OOO            III            NNN         NNN            III            333         333\r
+      III            OOO         OOO            III            NNN         NNN            III            333         333\r
+      III            OOO         OOO            III            NNN         NNN            III            333         333\r
+   IIIIIIIII            OOOOOOOOO            IIIIIIIII         NNN         NNN         IIIIIIIII            333333333   \r
+   IIIIIIIII            OOOOOOOOO            IIIIIIIII         NNN         NNN         IIIIIIIII            333333333   \r
+   IIIIIIIII            OOOOOOOOO            IIIIIIIII         NNN         NNN         IIIIIIIII            333333333   \r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  11:23:08\r
+File: DSKB1 :IOINI3.LST   [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:21
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:2404 \r
+File will be deleted after printing\r
+\f\rIOINI1 - IO INITIALIZATION PART 1                 PAGE 1\r
+        MAXIMAL CONFIGURATION\r
+\r
+                                00010           XLIST\r
+                                01930          LIST\r
+\r\fIOINI1 - IO INITIALIZATION PART 1                 PAGE 7\r
+        MAXIMAL CONFIGURATION\r
+\r
+\r
+                                00010   ;SOME MACROS FOR DEFINING CONFIGURATION\r
+\r
+                                00030   DEFINE NAME (A)\r
+                                00040   <DEFINE NAME1\r
+                                00050   <CONFIG:  ASCIZ /A/\r
+                                00060   INTERNAL CONFIG\r
+                                00070   >\r
+                                00080   XP A,0\r
+                                00090   SUBTTL A CONFIGURATION\r
+                                00100   >\r
+\r
+                                00120   DEFINE DATE (A)\r
+                                00130   <DEFINE DATE1\r
+                                00140   <SYSDAT:  ASCIZ /A/\r
+                                00150   INTERNAL SYSDAT\r
+                                00160   >>\r
+\r
+                                00180   DEFINE VERSION (A,B)\r
+                                00190   <DEFINE VERS1\r
+                                00200   <SYSNUM:  XWD ^D'A,^D'B\r
+                                00210   XP SYSMOD,^D'A\r
+                                00220   XP SYSVER,^D'B\r
+                                00230   INTERNAL SYSNUM\r
+                                00240   >>\r
+\r
+                                00260   DEFINE CUSPTAPE (A)\r
+                                00270   <DEFINE CUSP1\r
+                                00280   <SYSTAP:  SIXBIT /A/\r
+                                00290   INTERNAL SYSTAP\r
+                                00300   >>\r
+\r
+                                00320   DEFINE ACPDL (J,CHJN,CHJPDN)\r
+                                00330   <         CH'J'N=CHJN\r
+                                00340    CH'J'PDN=CHJPDN\r
+                                00350   >\r
+\r\fIOINI1 - IO INITIALIZATION PART 1                 PAGE 2\r
+        MAXIMAL CONFIGURATION\r
+\r
+\r
+                                00010   NAME <MAXIMAL>^DEFINE NAME1\r
+                                        <CONFIG:  ASCIZ /MAXIMAL/\r
+                                        INTERNAL CONFIG\r
+                                        >\r
+\r\fIOINI1 - IO INITIALIZATION PART 1                 PAGE 2\r
+        MAXIMAL CONFIGURATION\r
+\r
+\r
+                                00040           DATE <8-16-65>^DEFINE DATE1\r
+                                        <SYSDAT:  ASCIZ /8-16-65/\r
+                                        INTERNAL SYSDAT\r
+                                        >^\r
+                                00050           VERSION 1,4^DEFINE VERS1\r
+                                        <SYSNUM:  XWD ^D1,^D4\r
+                                        XP SYSMOD,^D1\r
+                                        XP SYSVER,^D4\r
+                                        INTERNAL SYSNUM\r
+                                        >^\r
+                                00060           CUSPTAPE DTA0^DEFINE CUSP1\r
+                                        <SYSTAP:  SIXBIT /DTA0/\r
+                                        INTERNAL SYSTAP\r
+                                        >^\r
+\r
+                                00080   ;DEFINE THE IO PART OF THE SYSTEM\r
+                                00090   ;THAT IS:\r
+                                00100   ;         DEFINE INTERRUPT SERVICE ROTUINE TO BE USED\r
+                                00110   ;       ASSIGN DEVICES TO PI CHANNELS\r
+\r
+                                00130   DEFINE SYSTEM\r
+                                00140    <\r
+                                00150    ASSOC APR,6,<>\r
+                                00160    ASSOC CTY,3,<>\r
+                                00170    ASSOC SCN,3,<TTY0,TTY1>\r
+                                00180    ASSOC DTC,4,<DTA0>\r
+                                00190    ASSOC DTC,4,<DTA1>\r
+                                00200    ASSOC DTC,4,<DTA2>\r
+                                00210    ASSOC DTC,4,<DTA3>\r
+                                00220    ASSOC MTC,2,<MTA0>\r
+                                00230    ASSOC MTC,2,<MTA1>\r
+                                00240    ASSOC MTC,2,<MTA2>\r
+                                00250    ASSOC MTC,2,<MTA3>\r
+                                00260    ASSOC LPT,5,<LPT>\r
+                                00270    ASSOC PTP,5,<PTP>\r
+                                00280    ASSOC PTR,5,<PTR>\r
+                                00290    ASSOC CDR,5,<CDR>\r
+                                00300   >\r
+\r
+                        000001  00320   DTSIZ=1   ;MULTIPLE DECTAPE DIRECTORIES\r
+\r
+                        000001  00340   SCNLIN=1\r
+\r
+                                00360   ;DEFINE HIGHEST AC TO SAVE AND LENGTH OF PD LIST FOR EACH PI CHANNEL\r
+\r
+                        000000  00380   ACPDL (1,0,0)^    CH1N=0\r
+                        000011  00390   ACPDL (2,11,20)^          CH2N=11\r
+                        000011  00400   ACPDL (3,11,20)^          CH3N=11\r
+                        000011  00410   ACPDL (4,11,20)^          CH4N=11\r
+                        000011  00420   ACPDL (5,11,20)^          CH5N=11\r
+                        000017  00430   ACPDL (6,17,20^   CH6N=17\r
+                        000000  00440   ACPDL (7,0,0)^    CH7N=0\r
+\r\fIOINI1 - IO INITIALIZATION PART 1                 PAGE 2-1\r
+        MAXIMAL CONFIGURATION\r
+\r
+                                00010             TITLE IOINI1 - IO INITIALIZATION PART 1\r
+        000000' 466033  044632  00020             NAME1^CONFIG:  ASCIZ /MAXIMAL/\r
+        000001' 406300  000000\r
+        000002' 341326  133132  00030             DATE1^SYSDAT:  ASCIZ /8-16-65/\r
+        000003' 331520  000000\r
+        000004' 000001  000004  00040             VERS1^SYSNUM:  XWD ^D1,^D4\r
+        000005' 446441  200000  00050             CUSP1^SYSTAP:  SIXBIT /DTA0/\r
+\r
+                                00070   ;CONFIGURATION INDEPENDANT PART OF IOINIT FOLLOWS:\r
+\r
+                                00090   EXTERNAL ERROR\r
+\r
+                                00110   ;SETUP CHANNEL SAVE AND RESTORE ROUTINES\r
+\r
+                        000000  00130   CHANU1=0\r
+                        000000  00140   CHANU2=0\r
+                        000000  00150   CHANU3=0\r
+                        000000  00160   CHANU4=0\r
+                        000000  00170   CHANU5=0\r
+                        000000  00180   CHANU6=0\r
+                        000000  00190   CHANU7=0\r
+                                00200   DEFINE ASSOC(A,NO,D)\r
+                                00210   <IFE CHANU'NO,<\r
+                                00220   CHANU'NO=1\r
+                                00230   INTERNAL CH'NO'SAV,CH'NO',CH'NO'XIT,CH'NO'SAC\r
+                                00240   \r
+                                00250   CH'NO'SAV: 0\r
+                                00260     MOVEM CH'NO'N, CH'NO'SAC+CH'NO'N\r
+                                00270     MOVEI CH'NO'N, CH'NO'SAC\r
+                                00280     BLT CH'NO'N,CH'NO'SAC+CH'NO'N-1       ;DO ONLY ONCE FOR EACH CHANNEL\r
+                                00290     MOVE PDP, CH'NO'CJ\r
+                                00300     JRST @CH'NO'SAV\r
+                                00310   \r
+                                00320   CH'NO'SAC: REPEAT CH'NO'N+1,<EXP 0>     ;SPACE TO SAVE SOME AC'S\r
+                                00330             EXP CH'NO'XIT         ;FIRST ENTRY IN PD LIST(CHAN. EXIT)\r
+                                00340             REPEAT CH'NO'PDN-1,<EXP 0>    ;REST OF PD LIST\r
+                                00350   \r
+                                00360   CH'NO'XIT: MOVSI CH'NO'N, CH'NO'SAC\r
+                                00370    BLT CH'NO'N, CH'NO'N\r
+                                00380    JEN @CH'NO\r
+                                00390   \r
+                                00400   CH'NO'CJ: XWD -CH'NO'PDN+1,CH'NO'SAC+CH'NO'N+1  ;INIT. SETTING OF P\r
+                                00410   \r
+                                00420   CH'NO':   0             ;PC STORED HERE BY JSR\r
+                                00430    JRST .+1 ;INSTR. AT END OF SERVICE CHAIN\r
+                                00440    AOS CH'NO'ERR          ;SPURIOUS INTERRUPT, ADD TO COUNT\r
+                                00450    JEN @CH'NO             ;AND DISMISS\r
+                                00460   >\r
+                                00470   >\r
+                                00480   ;GENERATE THE SAVE AND RESTORE ROUTINES\r
+\r
+                                00500             SYSTEM^       000006' 000000  000000          CH6SAV: 0\r
+        000007' 202740  000033'           MOVEM CH6N, CH6SAC+CH6N\r
+\r\fIOINI1 - IO INITIALIZATION PART 1                 PAGE 1\r
+        MAXIMAL CONFIGURATION\r
+\r
+        000010' 201740  000014'           MOVEI CH6N, CH6SAC\r
+        000011' 251740  000032'           BLT CH6N,CH6SAC+CH6N-1        ;DO ONLY ONCE FOR EACH CHANNEL\r
+        000012' 200140  000057'           MOVE PDP, CH6CJ\r
+        000013' 254020  000006'           JRST @CH6SAV\r
+        000014' 000000  000000          EXP 0\r
+        000015' 000000  000000          EXP 0\r
+        000016' 000000  000000          EXP 0\r
+        000017' 000000  000000          EXP 0\r
+        000020' 000000  000000          EXP 0\r
+        000021' 000000  000000          EXP 0\r
+        000022' 000000  000000          EXP 0\r
+        000023' 000000  000000          EXP 0\r
+        000024' 000000  000000          EXP 0\r
+        000025' 000000  000000          EXP 0\r
+        000026' 000000  000000          EXP 0\r
+        000027' 000000  000000          EXP 0\r
+        000030' 000000  000000          EXP 0\r
+        000031' 000000  000000          EXP 0\r
+        000032' 000000  000000          EXP 0\r
+        000033' 000000  000000          EXP 0   ;SPACE TO SAVE SOME AC'S\r
+        000034' 000000  000054'                   EXP CH6XIT            ;FIRST ENTRY IN PD LIST(CHAN. EXIT)\r
+        000035' 000000  000000          EXP 0\r
+        000036' 000000  000000          EXP 0\r
+        000037' 000000  000000          EXP 0\r
+        000040' 000000  000000          EXP 0\r
+        000041' 000000  000000          EXP 0\r
+        000042' 000000  000000          EXP 0\r
+        000043' 000000  000000          EXP 0\r
+        000044' 000000  000000          EXP 0\r
+        000045' 000000  000000          EXP 0\r
+        000046' 000000  000000          EXP 0\r
+        000047' 000000  000000          EXP 0\r
+        000050' 000000  000000          EXP 0\r
+        000051' 000000  000000          EXP 0\r
+        000052' 000000  000000          EXP 0\r
+        000053' 000000  000000          EXP 0   ;REST OF PD LIST\r
+        000054' 205740  000014'         CH6XIT: MOVSI CH6N, CH6SAC\r
+        000055' 251740  000017           BLT CH6N, CH6N\r
+        000056' 254520  000060'          JEN @CH6\r
+        000057' 777761  000034'         CH6CJ: XWD -CH6PDN+1,CH6SAC+CH6N+1      ;INIT. SETTING OF P\r
+        000060' 000000  000000          CH6:      0             ;PC STORED HERE BY JSR\r
+        000061' 254000  000062'          JRST .+1 ;INSTR. AT END OF SERVICE CHAIN\r
+        000062' 350000  000456'          AOS CH6ERR             ;SPURIOUS INTERRUPT, ADD TO COUNT\r
+        000063' 254520  000060'          JEN @CH6               ;AND DISMISS\r
+        000064' 000000  000000          CH3SAV: 0\r
+        000065' 202440  000103'           MOVEM CH3N, CH3SAC+CH3N\r
+        000066' 201440  000072'           MOVEI CH3N, CH3SAC\r
+        000067' 251440  000102'           BLT CH3N,CH3SAC+CH3N-1        ;DO ONLY ONCE FOR EACH CHANNEL\r
+        000070' 200140  000127'           MOVE PDP, CH3CJ\r
+        000071' 254020  000064'           JRST @CH3SAV\r
+        000072' 000000  000000          EXP 0\r
+        000073' 000000  000000          EXP 0\r
+        000074' 000000  000000          EXP 0\r
+\r\fIOINI1 - IO INITIALIZATION PART 1                 PAGE 1-1\r
+        MAXIMAL CONFIGURATION\r
+\r
+        000075' 000000  000000          EXP 0\r
+        000076' 000000  000000          EXP 0\r
+        000077' 000000  000000          EXP 0\r
+        000100' 000000  000000          EXP 0\r
+        000101' 000000  000000          EXP 0\r
+        000102' 000000  000000          EXP 0\r
+        000103' 000000  000000          EXP 0   ;SPACE TO SAVE SOME AC'S\r
+        000104' 000000  000124'                   EXP CH3XIT            ;FIRST ENTRY IN PD LIST(CHAN. EXIT)\r
+        000105' 000000  000000          EXP 0\r
+        000106' 000000  000000          EXP 0\r
+        000107' 000000  000000          EXP 0\r
+        000110' 000000  000000          EXP 0\r
+        000111' 000000  000000          EXP 0\r
+        000112' 000000  000000          EXP 0\r
+        000113' 000000  000000          EXP 0\r
+        000114' 000000  000000          EXP 0\r
+        000115' 000000  000000          EXP 0\r
+        000116' 000000  000000          EXP 0\r
+        000117' 000000  000000          EXP 0\r
+        000120' 000000  000000          EXP 0\r
+        000121' 000000  000000          EXP 0\r
+        000122' 000000  000000          EXP 0\r
+        000123' 000000  000000          EXP 0   ;REST OF PD LIST\r
+        000124' 205440  000072'         CH3XIT: MOVSI CH3N, CH3SAC\r
+        000125' 251440  000011           BLT CH3N, CH3N\r
+        000126' 254520  000130'          JEN @CH3\r
+        000127' 777761  000104'         CH3CJ: XWD -CH3PDN+1,CH3SAC+CH3N+1      ;INIT. SETTING OF P\r
+        000130' 000000  000000          CH3:      0             ;PC STORED HERE BY JSR\r
+        000131' 254000  000132'          JRST .+1 ;INSTR. AT END OF SERVICE CHAIN\r
+        000132' 350000  000453'          AOS CH3ERR             ;SPURIOUS INTERRUPT, ADD TO COUNT\r
+        000133' 254520  000130'          JEN @CH3               ;AND DISMISS\r
+        000134' 000000  000000          CH4SAV: 0\r
+        000135' 202440  000153'           MOVEM CH4N, CH4SAC+CH4N\r
+        000136' 201440  000142'           MOVEI CH4N, CH4SAC\r
+        000137' 251440  000152'           BLT CH4N,CH4SAC+CH4N-1        ;DO ONLY ONCE FOR EACH CHANNEL\r
+        000140' 200140  000177'           MOVE PDP, CH4CJ\r
+        000141' 254020  000134'           JRST @CH4SAV\r
+        000142' 000000  000000          EXP 0\r
+        000143' 000000  000000          EXP 0\r
+        000144' 000000  000000          EXP 0\r
+        000145' 000000  000000          EXP 0\r
+        000146' 000000  000000          EXP 0\r
+        000147' 000000  000000          EXP 0\r
+        000150' 000000  000000          EXP 0\r
+        000151' 000000  000000          EXP 0\r
+        000152' 000000  000000          EXP 0\r
+        000153' 000000  000000          EXP 0   ;SPACE TO SAVE SOME AC'S\r
+        000154' 000000  000174'                   EXP CH4XIT            ;FIRST ENTRY IN PD LIST(CHAN. EXIT)\r
+        000155' 000000  000000          EXP 0\r
+        000156' 000000  000000          EXP 0\r
+        000157' 000000  000000          EXP 0\r
+        000160' 000000  000000          EXP 0\r
+        000161' 000000  000000          EXP 0\r
+\r\fIOINI1 - IO INITIALIZATION PART 1                 PAGE 1-2\r
+        MAXIMAL CONFIGURATION\r
+\r
+        000162' 000000  000000          EXP 0\r
+        000163' 000000  000000          EXP 0\r
+        000164' 000000  000000          EXP 0\r
+        000165' 000000  000000          EXP 0\r
+        000166' 000000  000000          EXP 0\r
+        000167' 000000  000000          EXP 0\r
+        000170' 000000  000000          EXP 0\r
+        000171' 000000  000000          EXP 0\r
+        000172' 000000  000000          EXP 0\r
+        000173' 000000  000000          EXP 0   ;REST OF PD LIST\r
+        000174' 205440  000142'         CH4XIT: MOVSI CH4N, CH4SAC\r
+        000175' 251440  000011           BLT CH4N, CH4N\r
+        000176' 254520  000200'          JEN @CH4\r
+        000177' 777761  000154'         CH4CJ: XWD -CH4PDN+1,CH4SAC+CH4N+1      ;INIT. SETTING OF P\r
+        000200' 000000  000000          CH4:      0             ;PC STORED HERE BY JSR\r
+        000201' 254000  000202'          JRST .+1 ;INSTR. AT END OF SERVICE CHAIN\r
+        000202' 350000  000454'          AOS CH4ERR             ;SPURIOUS INTERRUPT, ADD TO COUNT\r
+        000203' 254520  000200'          JEN @CH4               ;AND DISMISS\r
+        000204' 000000  000000          CH2SAV: 0\r
+        000205' 202440  000223'           MOVEM CH2N, CH2SAC+CH2N\r
+        000206' 201440  000212'           MOVEI CH2N, CH2SAC\r
+        000207' 251440  000222'           BLT CH2N,CH2SAC+CH2N-1        ;DO ONLY ONCE FOR EACH CHANNEL\r
+        000210' 200140  000247'           MOVE PDP, CH2CJ\r
+        000211' 254020  000204'           JRST @CH2SAV\r
+        000212' 000000  000000          EXP 0\r
+        000213' 000000  000000          EXP 0\r
+        000214' 000000  000000          EXP 0\r
+        000215' 000000  000000          EXP 0\r
+        000216' 000000  000000          EXP 0\r
+        000217' 000000  000000          EXP 0\r
+        000220' 000000  000000          EXP 0\r
+        000221' 000000  000000          EXP 0\r
+        000222' 000000  000000          EXP 0\r
+        000223' 000000  000000          EXP 0   ;SPACE TO SAVE SOME AC'S\r
+        000224' 000000  000244'                   EXP CH2XIT            ;FIRST ENTRY IN PD LIST(CHAN. EXIT)\r
+        000225' 000000  000000          EXP 0\r
+        000226' 000000  000000          EXP 0\r
+        000227' 000000  000000          EXP 0\r
+        000230' 000000  000000          EXP 0\r
+        000231' 000000  000000          EXP 0\r
+        000232' 000000  000000          EXP 0\r
+        000233' 000000  000000          EXP 0\r
+        000234' 000000  000000          EXP 0\r
+        000235' 000000  000000          EXP 0\r
+        000236' 000000  000000          EXP 0\r
+        000237' 000000  000000          EXP 0\r
+        000240' 000000  000000          EXP 0\r
+        000241' 000000  000000          EXP 0\r
+        000242' 000000  000000          EXP 0\r
+        000243' 000000  000000          EXP 0   ;REST OF PD LIST\r
+        000244' 205440  000212'         CH2XIT: MOVSI CH2N, CH2SAC\r
+        000245' 251440  000011           BLT CH2N, CH2N\r
+        000246' 254520  000250'          JEN @CH2\r
+\r\fIOINI1 - IO INITIALIZATION PART 1                 PAGE 1-3\r
+        MAXIMAL CONFIGURATION\r
+\r
+        000247' 777761  000224'         CH2CJ: XWD -CH2PDN+1,CH2SAC+CH2N+1      ;INIT. SETTING OF P\r
+        000250' 000000  000000          CH2:      0             ;PC STORED HERE BY JSR\r
+        000251' 254000  000252'          JRST .+1 ;INSTR. AT END OF SERVICE CHAIN\r
+        000252' 350000  000452'          AOS CH2ERR             ;SPURIOUS INTERRUPT, ADD TO COUNT\r
+        000253' 254520  000250'          JEN @CH2               ;AND DISMISS\r
+        000254' 000000  000000          CH5SAV: 0\r
+        000255' 202440  000273'           MOVEM CH5N, CH5SAC+CH5N\r
+        000256' 201440  000262'           MOVEI CH5N, CH5SAC\r
+        000257' 251440  000272'           BLT CH5N,CH5SAC+CH5N-1        ;DO ONLY ONCE FOR EACH CHANNEL\r
+        000260' 200140  000317'           MOVE PDP, CH5CJ\r
+        000261' 254020  000254'           JRST @CH5SAV\r
+        000262' 000000  000000          EXP 0\r
+        000263' 000000  000000          EXP 0\r
+        000264' 000000  000000          EXP 0\r
+        000265' 000000  000000          EXP 0\r
+        000266' 000000  000000          EXP 0\r
+        000267' 000000  000000          EXP 0\r
+        000270' 000000  000000          EXP 0\r
+        000271' 000000  000000          EXP 0\r
+        000272' 000000  000000          EXP 0\r
+        000273' 000000  000000          EXP 0   ;SPACE TO SAVE SOME AC'S\r
+        000274' 000000  000314'                   EXP CH5XIT            ;FIRST ENTRY IN PD LIST(CHAN. EXIT)\r
+        000275' 000000  000000          EXP 0\r
+        000276' 000000  000000          EXP 0\r
+        000277' 000000  000000          EXP 0\r
+        000300' 000000  000000          EXP 0\r
+        000301' 000000  000000          EXP 0\r
+        000302' 000000  000000          EXP 0\r
+        000303' 000000  000000          EXP 0\r
+        000304' 000000  000000          EXP 0\r
+        000305' 000000  000000          EXP 0\r
+        000306' 000000  000000          EXP 0\r
+        000307' 000000  000000          EXP 0\r
+        000310' 000000  000000          EXP 0\r
+        000311' 000000  000000          EXP 0\r
+        000312' 000000  000000          EXP 0\r
+        000313' 000000  000000          EXP 0   ;REST OF PD LIST\r
+        000314' 205440  000262'         CH5XIT: MOVSI CH5N, CH5SAC\r
+        000315' 251440  000011           BLT CH5N, CH5N\r
+        000316' 254520  000320'          JEN @CH5\r
+        000317' 777761  000274'         CH5CJ: XWD -CH5PDN+1,CH5SAC+CH5N+1      ;INIT. SETTING OF P\r
+        000320' 000000  000000          CH5:      0             ;PC STORED HERE BY JSR\r
+        000321' 254000  000322'          JRST .+1 ;INSTR. AT END OF SERVICE CHAIN\r
+        000322' 350000  000455'          AOS CH5ERR             ;SPURIOUS INTERRUPT, ADD TO COUNT\r
+        000323' 254520  000320'          JEN @CH5               ;AND DISMISS\r
+\r
+                                00520   ;SET UP NULL CHANNEL ROUTINES FOR UNUSED CHANNELS\r
+\r
+                                00540   DEFINE NULCHN(J)\r
+                                00550   <\r
+                                00560   INTERNAL CH'J,CH'J'XIT\r
+                                00570   CH'J:     0\r
+                                00580   CH'J'XIT: AOS CH'J'ERR\r
+\r\fIOINI1 - IO INITIALIZATION PART 1                 PAGE 1-4\r
+        MAXIMAL CONFIGURATION\r
+\r
+                                00590    JEN @CH'J\r
+                                00600   >\r
+\r
+                                00620             IFE CHANU1,<NULCHN(1)>^\r
+        000324' 000000  000000          CH1:      0\r
+        000325' 350000  000451'         CH1XIT: AOS CH1ERR\r
+        000326' 254520  000324'          JEN @CH1\r
+                                00630             IFE CHANU2,<NULCHN(2)>\r
+                                00640             IFE CHANU3,<NULCHN(3)>\r
+                                00650             IFE CHANU4,<NULCHN(4)>\r
+                                00660             IFE CHANU5,<NULCHN(5)>\r
+                                00670             IFE CHANU6,<NULCHN(6)>\r
+                                00680             IFE CHANU7,<NULCHN(7)>^\r
+        000327' 000000  000000          CH7:      0\r
+        000330' 350000  000457'         CH7XIT: AOS CH7ERR\r
+        000331' 254520  000327'          JEN @CH7\r
+\r\fIOINI1 - IO INITIALIZATION PART 1                 PAGE 2\r
+        MAXIMAL CONFIGURATION\r
+\r
+\r
+\r
+                                00720   ;ASSIGN DEVICE TO CHANNELS AND SETUP CORESPONDENCE TABLE\r
+                                00730   ;OF CHANNELS TO SERVICE ROUTINES\r
+\r
+                                00750   DEFINE ASSOC (A,N,D)\r
+                                00760   <         A'RET=CH'N'XIT\r
+                                00770    A'SAV=CH'N'SAV\r
+                                00780    A'SAC=CH'N'SAC\r
+                                00790    A'CHL=CH'N\r
+                                00800    A'CHN=N\r
+                                00810    A'BIT=1\r
+                                00820    REPEAT 7-N,<A'BIT=A'BIT*2>\r
+                                00830    A'OFF=1000+A'BIT       ;CONO PI, A'OFF WIL TURN CHANNEL OFF\r
+                                00840    A'ON=2000+A'BIT        ;TURN BACK ON\r
+                                00850    A'ACT=4000+A'BIT       ;FORCE INTERRUPT ON CHAN.\r
+                                00860   INTERN A'RET, A'SAV, A'CHL, A'CHN, A'SAC\r
+                                00870   INTERNAL A'OFF,A'ON,A'ACT,A'BIT\r
+                                00880    XWD A'CHL,A'INT\r
+                                00890    EXTERNAL A'INT\r
+                                00900   >\r
+\r
+                                00920   INTERNAL DEVINT\r
+        000332'                 00930   DEVINT:   SYSTEM^       000332' 000060' 000000*          XWD APRCHL,APRINT\r
+        000333' 000130' 000000*          XWD CTYCHL,CTYINT\r
+        000334' 000130' 000000*          XWD SCNCHL,SCNINT\r
+        000335' 000200' 000000*          XWD DTCCHL,DTCINT\r
+        000336' 000200' 000335*          XWD DTCCHL,DTCINT\r
+        000337' 000200' 000336*          XWD DTCCHL,DTCINT\r
+        000340' 000200' 000337*          XWD DTCCHL,DTCINT\r
+        000341' 000250' 000000*          XWD MTCCHL,MTCINT\r
+        000342' 000250' 000341*          XWD MTCCHL,MTCINT\r
+        000343' 000250' 000342*          XWD MTCCHL,MTCINT\r
+        000344' 000250' 000343*          XWD MTCCHL,MTCINT\r
+        000345' 000320' 000000*          XWD LPTCHL,LPTINT\r
+        000346' 000320' 000000*          XWD PTPCHL,PTPINT\r
+        000347' 000320' 000000*          XWD PTRCHL,PTRINT\r
+        000350' 000320' 000000*          XWD CDRCHL,CDRINT\r
+                        000017  00940   NDEV=.-DEVINT           ;NO. OF DEVICE INTERUPT SERVICE ROUTINES\r
+                        000016  00950   NDEVM1=NDEV-1           ;(USED BY ONCE)\r
+                                00960   INTERNAL NDEVM1\r
+\r\fIOINI1 - IO INITIALIZATION PART 1                 PAGE 3\r
+        MAXIMAL CONFIGURATION\r
+\r
+\r
+\r
+                                01000   ;INITIALIZE SOME IO DEVICES\r
+                                01010   ;IOINI CALLED BY A PUSHJ PDP, FROM SYSINI AT SYSTEM INITIALIZATION\r
+\r
+                                01030   DEFINE IOINIT (A)\r
+                                01040   <IRP A\r
+                                01050   <         EXTERNAL A'INI\r
+                                01060    PUSHJ PDP,A'INI\r
+                                01070   >>\r
+\r
+                                01090   DEFINE ASSOC (A,B,C)\r
+                                01100   <         IFIDN <A><MTC>,< IOINIT MTC>\r
+                                01110    IFIDN <A><DTC>,< IOINIT DTC>\r
+                                01120    IFIDN <A><LPT>,< IOINIT LPT>\r
+                                01130    IFIDN <A><SCN>,< IOINIT SCN>\r
+                                01140    IFIDN <A><PTP>,<IOINIT PTP>\r
+                                01150    IFIDN <A><PTR>,<IOINIT PTR>\r
+                                01160   >\r
+\r
+                                01180   INTERNAL IOINI\r
+\r
+        000351'                 01200   IOINI:  SYSTEM^ 000351' 260140  000000*          PUSHJ PDP,SCNINI\r
+        000352' 260140  000000*          PUSHJ PDP,DTCINI\r
+        000353' 260140  000352*          PUSHJ PDP,DTCINI\r
+        000354' 260140  000353*          PUSHJ PDP,DTCINI\r
+        000355' 260140  000354*          PUSHJ PDP,DTCINI\r
+        000356' 260140  000000*          PUSHJ PDP,MTCINI\r
+        000357' 260140  000356*          PUSHJ PDP,MTCINI\r
+        000360' 260140  000357*          PUSHJ PDP,MTCINI\r
+        000361' 260140  000360*          PUSHJ PDP,MTCINI\r
+        000362' 260140  000000*          PUSHJ PDP,LPTINI\r
+        000363' 260140  000000*          PUSHJ PDP,PTPINI\r
+        000364' 260140  000000*          PUSHJ PDP,PTRINI\r
+        000365' 254000  000000* 01210           JRST CLKINI             ;ALWAYS INIT. CLOCK\r
+\r
+                                01230   EXTERNAL CLKINI\r
+\r\fIOINI1 - IO INITIALIZATION PART 1                 PAGE 4\r
+        MAXIMAL CONFIGURATION\r
+\r
+\r
+\r
+                                01270   ;CLOCK CONTROL PARAMETERS\r
+\r
+                        004006  01290             CLDS=4000+APRCHN      ;CLOCK DISABLE\r
+                        000206  01300             CLEN=200+APRCHN       ;CLOCK ENABLE\r
+\r
+                                01320             INTERNAL CLDS,CLEN\r
+\r
+                                01340   ;BYTE POINTERS\r
+\r
+        000366' 270400  000014  01360   PUUOAC:   POINT 4,UUO,12        ;UUO AC FIELD\r
+        000367' 000400  000000  01370   PIOMOD:   POINT 4,IOS,35        ;MODE BITS\r
+        000370' 331106  000001  01380   PJOBN:    POINT 9,DEVCHR(DEVDAT),8      ;DEVICE JOB ASSIGNMENT\r
+        000371' 220406  000001  01390   PJDCHN:   POINT 4,DEVCHR(DEVDAT),17     ;JOB DEVICE CHANNEL NO.\r
+        000372' 140606  000001  01400   PUNIT:    POINT 6,DEVCHR(DEVDAT),23     ;DEVICE UNIT NO.\r
+\r
+                                01420   INTERNAL PUUOAC,PIOMOD,PJOBN,PJDCHN,PUNIT\r
+\r
+                                01440   ;COMMON SUBROUTINE RETURNS\r
+\r
+        000373' 350003  000000  01460   CPOPJ2:   AOS (PDP)\r
+        000374' 350003  000000  01470   CPOPJ1:   AOS (PDP)\r
+        000375' 263140  000000  01480   CPOPJ:    POPJ PDP,\r
+\r
+                                01500   INTERNAL CPOPJ,CPOPJ1,CPOPJ2\r
+\r\fIOINI1 - IO INITIALIZATION PART 1                 PAGE 5\r
+        MAXIMAL CONFIGURATION\r
+\r
+\r
+                                01530   ,SYSTEM DATA STORAGE\r
+\r
+\r
+                                01560   INTERNAL JOB,JOBADR,JBTADR,JBTSTS,USRREL,USRINF,USRJDA\r
+                                01570   INTERNAL USRPDP,JOBDAT,USRDDT,USRSAV,USRUXT,USRLO,USRHI\r
+                                01580   INTERNAL COMCNT,IOCOMP,USRPOV,STOPU,SCHEDF,TIME,JBTAD1\r
+                                01590   INTERNAL MTAVAL,DCAVAL,DTAVAL,MTREQ,DCREQ,DTREQ,TTYTAB,CORTAB\r
+                                01600   INTERNAL CH1ERR,CH2ERR,CH3ERR,CH4ERR,CH5ERR,CH6ERR,CH7ERR\r
+                                01610   INTERNAL CORLST,CORTAB,CORTAL,SYSEND,SYSBEG,DEVOPR\r
+\r
+                        000000  01630   JOBN=0  ;DEFINE NO. OF JOBS (0 THRU JOBN-1)\r
+                                01640   ;THERE MUST BE MORE TTY DEVICE DATA BLCKS THAN JOBS.\r
+\r
+                                01660   DEFINE ASSOC (A,N,D)\r
+                                01670   <IRP D,<IFIDN <A><SCN>,<JOBN=JOBN+1>>>\r
+                                01680             SYSTEM^               777777  777776  01690   MJOBN=-JOBN\r
+                                01700   INTERNAL JOBN,MJOBN\r
+\r
+        000376'                 01720   SYSBEG:   ;FIRST LOC IN SYSTEM DATA AREA\r
+                                01730   XP SYSBG1,SYSBEG+1      ;FIRST LOC+1\r
+        000376' 000000  000000  01740   JOB:      0             ;CURRENT JOB NUMBER EXCEPT WEN SCHEDF IS NON-ZERO\r
+        000377' 000000  000000  01750   JOBADR:   0             ;CONTAINS ADDRESS OF JOB CURRENTLY RUNNING\r
+        000400' 000000  000000  01760   JOBDAT:   0             ;CONTAINS ADDRESS OF JOB DATA AREA\r
+\r
+        000401'                 01780   JBTADR:   BLOCK JOBN            ;C(LH)=PROTECT, C(RH)=RELOCATION\r
+                                01790   XP JBTAD1,JBTADR+1   ;ADDRESS OF JOB 1(USED BY SYSMAK)\r
+        000403'                 01800   JBTSTS:   BLOCK JOBN            ;CONTAINS STATUS INFORMATION FOR EACH J\r
+\r
+        000405' 000000  000000  01820   USRPDP:   0         ;USER PUSH DOWN POINTER\r
+        000406' 000000  000000  01830   USRREL:   0         ;LH=0, RH CONTAINS CONTENTS OF PROTECTION REGISTER\r
+        000407'                 01840   USRLO:    ;FIRST LOC CLEARD BY SETUSR SUBROUTINE\r
+        000407' 000000  000000  01850   USRUXT:   0         ;UNUSED,  JOBUXT USED TO SAVE UUO PC(UUO0)\r
+        000410' 000000  000000  01860   USRLEV:   0         ;UNUSED,  JOBLEV USED TO SAVE LOC. 40\r
+        000411' 000000  000000  01870   USRSAV:   0         ;TEMPORARY STORAGE FOR UUO HANDLER\r
+        000412' 000000  000000  01880   USRPOV:   0         ;PUSH DOWN OVERFLOW TRAP\r
+        000413'                 01890             BLOCK 2\r
+        000415' 000000  000000  01900   USRINF:   0         ;UN LAYED OUT USER INFORMATION\r
+        000416'                 01910   USRJDA:   BLOCK 20  ;RH=JOB DEVICE ASSIGNMENTS FOR THIS USER,LH=UUOS\r
+                                01920   XP USRHI,.-1        ;LAST LOC CLEARED BY SETUSR ROUTINE\r
+                                01930   XP USRPFI,.-1       ;LAST LOC PROTECTED FROM IO SERVICE\r
+                                01940   XP USRPFU,.         ;LAST LOC PROTECTED FROM USER PROGRAM\r
+        000436' 000000  000000  01950   USRDDT:   0         ;STARTING ADDR OF USER DDT\r
+\r
+                                01970   ;DEVICE JUSTR BECOME AVAILABLE FLAGS\r
+        000437' 000000  000000  01980   MTAVAL:   0          ;MAGNETIC TAPE\r
+        000440' 000000  000000  01990   DCAVAL:   0          ;DATA CONTROL\r
+        000441' 000000  000000  02000   DTAVAL:   0          ;DECTAPE\r
+\r
+                                02020   ;NUMBER OF JOBS WAITING FOR DEVICES(-1=NONE, 0=1 USING, 1=1 USING)\r
+        000442' 777777  777777  02030   MTREQ:    -1        ;MAGNETIC TAPE\r
+        000443' 777777  777777  02040   DCREQ:    -1        ;DATA CONTROL\r
+        000444' 777777  777777  02050   DTREQ:    -1        ;DECTAPE\r
+\r\fIOINI1 - IO INITIALIZATION PART 1                 PAGE 5-1\r
+        MAXIMAL CONFIGURATION\r
+\r
+        000445' 000000  000000  02060   IOCOMP:   0         ;NUMBER OF USERS IN IO WAIT STATE\r
+        000446' 000000  000000  02070   COMCNT:   0         ;NUMBER OF COMMANDS TYPED-IN BUT NOT DECODED\r
+        000447' 000000  000000  02080   STOPU:    0         ;NON-ZERO WHEN CLOCK INTERRUPT FORCED TO STOP USER\r
+        000450' 000000  000000  02090   SCHEDF:   0         ;NON-ZERO WHEN CLOCK ROUTINE IS SCHEDULING\r
+\r
+        000451' 000000  000000  02110   CH1ERR:   0         ;SPURIOUS INTERRUPT COUNTS FOR EACH CHANNEL\r
+        000452' 000000  000000  02120   CH2ERR:   0\r
+        000453' 000000  000000  02130   CH3ERR:   0\r
+        000454' 000000  000000  02140   CH4ERR:   0\r
+        000455' 000000  000000  02150   CH5ERR:   0\r
+        000456' 000000  000000  02160   CH6ERR:   0\r
+        000457' 000000  000000  02170   CH7ERR:   0\r
+\r
+                        000410' 02190              USRLO1=USRLO+1\r
+                                02200              INTERNAL USRLO1\r
+\r\fIOINI1 - IO INITIALIZATION PART 1                 PAGE 6\r
+        MAXIMAL CONFIGURATION\r
+\r
+\r
+        000460' 000000  000000  02230   TIME:     0             ;TIME SYSTEM HAS RUN IN 60THS OF A SECOND\r
+\r
+\r
+                                02260   XP TTYLEN,SCNLIN+1   ;LENGTH OF TTY TRANSLATOR TABLES(INCLUDING CTY)\r
+        000461'                 02270   TTYTAB:   BLOCK TTYLEN          ;TTY TRANSLATOR TABLE\r
+                                02280                                   ;SIGN BIT = 1 IF COMMAND JUST TYPED\r
+                                02290                                   ;BITS 1 -9, JOB CONSOLE IS ATTACHED TO\r
+                                02300                                   ;BITS 18-35, THE DEVICE DATA BLOCK FOR\r
+        000463' 000000  000000  02310   DEVOPR:   0             ;SIXBIT PHYSICAL NAME OF OPERATORS\r
+                                02320                           ;CONSOLE SET BY SCNSER TO FIRST ACTIVE TTY.\r
+                                02330   ;LOCATIONS FOR CORE ALLOCATION\r
+                                02340   XP CORBLK,^D256          ;NO. OF 1K BLOCKS POSSIBLE\r
+        000464'                 02350   CORTAB:   BLOCK <CORBLK>/^D36+1         ;1K BLOCK USE BIT TABLE\r
+                                02360                                   ;A 1 MEANS BLOCK IS IN USE\r
+        000474' 000000  000000  02370   CORLST:   0             ;1 BIT BYTE POINTER TO LAST FREE BLOCK POSSIBLE\r
+        000475' 000000  000000  02380   CORTAL:   0             ;TOTAL NO. OF FREE CORE BLOCKS LEFT\r
+                                02390   ;CORLST AND CORTAL ARE SET UP AT SYSTEM INITIALIZATION\r
+\r
+                        000475' 02410   SYSEND=.-1              ;LAST LOC. CLEARED BY SYSINI\r
+\r
+                                02430   INTERNAL SYSSIZ\r
+                                02440   EXTERNAL SYSFIN\r
+        000476' 000000  000000* 02450   SYSSIZ:   EXP SYSFIN            ;SIZE OF MONITOR(LAST LOC. USED)\r
+\r\fIOINI1 - IO INITIALIZATION PART 1                 PAGE 7\r
+        MAXIMAL CONFIGURATION\r
+\r
+\r
+                                02480             END,\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 000477\r
+\r
+9K CORE USED\r
+\r\fIOINI1 - IO INITIALIZATION PART 1                 PAGE 8\r
+        SYMBOL TABLE\r
+\r
+                000532  \r
+A               000000  INT\r
+AC1             000015  INT\r
+AC2             000016  INT\r
+AC3             000017  INT\r
+AL              000001  INT\r
+APRACT          004002  INT\r
+APRBIT          000002  INT\r
+APRCHL          000060' INT\r
+APRCHN          000006  INT\r
+APRINT          000332' EXT\r
+APROFF          001002  INT\r
+APRON           002002  INT\r
+APRRET          000054' INT\r
+APRSAC          000014' INT\r
+APRSAV          000006' INT\r
+ASSCON          400000  INT\r
+ASSPRG          200000  INT\r
+B               000014  INT\r
+BUFPNT          000012  INT\r
+BUFWRD          000013  INT\r
+CDRACT          004004  INT\r
+CDRBIT          000004  INT\r
+CDRCHL          000320' INT\r
+CDRCHN          000005  INT\r
+CDRINT          000350' EXT\r
+CDROFF          001004  INT\r
+CDRON           002004  INT\r
+CDRRET          000314' INT\r
+CDRSAC          000262' INT\r
+CDRSAV          000254' INT\r
+CH1             000324' INT\r
+CH1ERR          000451' INT\r
+CH1N            000000  \r
+CH1PDN          000000  \r
+CH1XIT          000325' INT\r
+CH2             000250' INT\r
+CH2CJ           000247' \r
+CH2ERR          000452' INT\r
+CH2N            000011  \r
+CH2PDN          000020  \r
+CH2SAC          000212' INT\r
+CH2SAV          000204' INT\r
+CH2XIT          000244' INT\r
+CH3             000130' INT\r
+CH3CJ           000127' \r
+CH3ERR          000453' INT\r
+CH3N            000011  \r
+CH3PDN          000020  \r
+CH3SAC          000072' INT\r
+CH3SAV          000064' INT\r
+CH3XIT          000124' INT\r
+CH4             000200' INT\r
+\r\fIOINI1 - IO INITIALIZATION PART 1                 PAGE 8-1\r
+        SYMBOL TABLE\r
+\r
+CH4CJ           000177' \r
+CH4ERR          000454' INT\r
+CH4N            000011  \r
+CH4PDN          000020  \r
+CH4SAC          000142' INT\r
+CH4SAV          000134' INT\r
+CH4XIT          000174' INT\r
+CH5             000320' INT\r
+CH5CJ           000317' \r
+CH5ERR          000455' INT\r
+CH5N            000011  \r
+CH5PDN          000020  \r
+CH5SAC          000262' INT\r
+CH5SAV          000254' INT\r
+CH5XIT          000314' INT\r
+CH6             000060' INT\r
+CH6CJ           000057' \r
+CH6ERR          000456' INT\r
+CH6N            000017  \r
+CH6PDN          000020  \r
+CH6SAC          000014' INT\r
+CH6SAV          000006' INT\r
+CH6XIT          000054' INT\r
+CH7             000327' INT\r
+CH7ERR          000457' INT\r
+CH7N            000000  \r
+CH7PDN          000000  \r
+CH7XIT          000330' INT\r
+CHANU1          000000  \r
+CHANU2          000001  \r
+CHANU3          000001  \r
+CHANU4          000001  \r
+CHANU5          000001  \r
+CHANU6          000001  \r
+CHANU7          000000  \r
+CLDS            004006  INT\r
+CLEN            000206  INT\r
+CLKINI          000365' EXT\r
+CLOSB           002000  INT\r
+CLSIN           000002  INT\r
+CLSOUT          000001  INT\r
+COMCNT          000446' INT\r
+CONFIG          000000' INT\r
+CORBLK          000400  INT\r
+CORLST          000474' INT\r
+CORTAB          000464' INT\r
+CORTAL          000475' INT\r
+CPOPJ           000375' INT\r
+CPOPJ1          000374' INT\r
+CPOPJ2          000373' INT\r
+CTYACT          004020  INT\r
+CTYBIT          000020  INT\r
+CTYCHL          000130' INT\r
+\r\fIOINI1 - IO INITIALIZATION PART 1                 PAGE 8-2\r
+        SYMBOL TABLE\r
+\r
+CTYCHN          000003  INT\r
+CTYINT          000333' EXT\r
+CTYOFF          001020  INT\r
+CTYON           002020  INT\r
+CTYRET          000124' INT\r
+CTYSAC          000072' INT\r
+CTYSAV          000064' INT\r
+D               000017  INT\r
+DAT             000005  INT\r
+DCAVAL          000440' INT\r
+DCL             000001  INT\r
+DCREQ           000443' INT\r
+DCW             020000  INT\r
+DDI             000007  INT\r
+DDO             000006  INT\r
+DDTMEM          000037  INT\r
+DDTSYM          000036  INT\r
+DEN             000004  INT\r
+DEVADR          000007  INT\r
+DEVBUF          000006  INT\r
+DEVCHR          000001  INT\r
+DEVCTR          000011  INT\r
+DEVDAT          000006  INT\r
+DEVIAD          000007  INT\r
+DEVINT          000332' INT\r
+DEVIOS          000002  INT\r
+DEVLOG          000005  INT\r
+DEVMOD          000004  INT\r
+DEVNAM          000000  INT\r
+DEVOAD          000010  INT\r
+DEVOPR          000463' INT\r
+DEVPTR          000010  INT\r
+DEVSER          000003  INT\r
+DGF             000012  INT\r
+DIN             000003  INT\r
+DLK             000005  INT\r
+DOU             000002  INT\r
+DR              000016  INT\r
+DRL             000000  INT\r
+DSI             000011  INT\r
+DSO             000010  INT\r
+DTAVAL          000441' INT\r
+DTCACT          004010  INT\r
+DTCBIT          000010  INT\r
+DTCCHL          000200' INT\r
+DTCCHN          000004  INT\r
+DTCINI          000355' EXT\r
+DTCINT          000340' EXT\r
+DTCOFF          001010  INT\r
+DTCON           002010  INT\r
+DTCRET          000174' INT\r
+DTCSAC          000142' INT\r
+DTCSAV          000134' INT\r
+\r\fIOINI1 - IO INITIALIZATION PART 1                 PAGE 8-3\r
+        SYMBOL TABLE\r
+\r
+DTREQ           000444' INT\r
+DTSIZ           000001  \r
+DTW             040000  INT\r
+DVAVAL          000040  INT\r
+DVCDR           100000  INT\r
+DVDIR           000004  INT\r
+DVDIRI          400000  INT\r
+DVIN            000002  INT\r
+DVLPT           040000  INT\r
+DVMTA           000020  INT\r
+DVOUT           000001  INT\r
+DVTTY           000010  INT\r
+ENTRB           020000  INT\r
+ERROR           000000  EXT\r
+I               000010  INT\r
+IB              000013  INT\r
+IBUFB           200000  INT\r
+INITB           400000  INT\r
+INPB            010000  INT\r
+IO              000020  INT\r
+IOACT           010000  INT\r
+IOBEG           000002  INT\r
+IOBKTL          040000  INT\r
+IOCOMP          000445' INT\r
+IOCON           000040  INT\r
+IODEND          020000  INT\r
+IODERR          200000  INT\r
+IODISC          400000  INT\r
+IODONE          400000  INT\r
+IODTER          100000  INT\r
+IOEND           000040  INT\r
+IOFST           000004  INT\r
+IOIMPM          400000  INT\r
+IOINI           000351' INT\r
+IONRCK          000100  INT\r
+IORDEL          000100  INT\r
+IORET           000020  INT\r
+IOS             000000  INT\r
+IOSTRT          000010  INT\r
+IOUSE           400000  INT\r
+IOW             000001  INT\r
+IOWC            000020  INT\r
+IOWS            400000  INT\r
+ITEM            000004  INT\r
+JBFADR          000000  INT\r
+JBFCTR          000002  INT\r
+JBFPTR          000001  INT\r
+JBTAD1          000402' INT\r
+JBTADR          000401' INT\r
+JBTSTS          000403' INT\r
+JBUF            000005  INT\r
+JDAT            000011  INT\r
+JERR            002000  INT\r
+\r\fIOINI1 - IO INITIALIZATION PART 1                 PAGE 8-4\r
+        SYMBOL TABLE\r
+\r
+JIOW            100000  INT\r
+JNA             004000  INT\r
+JOB             000376' INT\r
+JOBADR          000377' INT\r
+JOBDAT          000400' INT\r
+JOBN            000002  INT\r
+LOOKB           040000  INT\r
+LPTACT          004004  INT\r
+LPTBIT          000004  INT\r
+LPTCHL          000320' INT\r
+LPTCHN          000005  INT\r
+LPTINI          000362' EXT\r
+LPTINT          000345' EXT\r
+LPTOFF          001004  INT\r
+LPTON           002004  INT\r
+LPTRET          000314' INT\r
+LPTSAC          000262' INT\r
+LPTSAV          000254' INT\r
+MAXIMA          000000  INT\r
+MJOBN   777777  777776  INT\r
+MTAVAL          000437' INT\r
+MTCACT          004040  INT\r
+MTCBIT          000040  INT\r
+MTCCHL          000250' INT\r
+MTCCHN          000002  INT\r
+MTCINI          000361' EXT\r
+MTCINT          000344' EXT\r
+MTCOFF          001040  INT\r
+MTCON           002040  INT\r
+MTCRET          000244' INT\r
+MTCSAC          000212' INT\r
+MTCSAV          000204' INT\r
+MTREQ           000442' INT\r
+MTW             010000  INT\r
+NDEV            000017  \r
+NDEVM1          000016  INT\r
+OBUFB           100000  INT\r
+OUTPB           004000  INT\r
+PDP             000003  INT\r
+PICHN           000100  INT\r
+PIOMOD          000367' INT\r
+PJDCHN          000371' INT\r
+PJOBN           000370' INT\r
+PROG            000007  INT\r
+PTPACT          004004  INT\r
+PTPBIT          000004  INT\r
+PTPCHL          000320' INT\r
+PTPCHN          000005  INT\r
+PTPINI          000363' EXT\r
+PTPINT          000346' EXT\r
+PTPOFF          001004  INT\r
+PTPON           002004  INT\r
+PTPRET          000314' INT\r
+\r\fIOINI1 - IO INITIALIZATION PART 1                 PAGE 8-5\r
+        SYMBOL TABLE\r
+\r
+PTPSAC          000262' INT\r
+PTPSAV          000254' INT\r
+PTRACT          004004  INT\r
+PTRBIT          000004  INT\r
+PTRCHL          000320' INT\r
+PTRCHN          000005  INT\r
+PTRINI          000364' EXT\r
+PTRINT          000347' EXT\r
+PTROFF          001004  INT\r
+PTRON           002004  INT\r
+PTRRET          000314' INT\r
+PTRSAC          000262' INT\r
+PTRSAV          000254' INT\r
+PUNIT           000372' INT\r
+PUUOAC          000366' INT\r
+RUN             200000  INT\r
+RUNABL          204000  INT\r
+SCHEDF          000450' INT\r
+SCNACT          004020  INT\r
+SCNBIT          000020  INT\r
+SCNCHL          000130' INT\r
+SCNCHN          000003  INT\r
+SCNINI          000351' EXT\r
+SCNINT          000334' EXT\r
+SCNLIN          000001  \r
+SCNOFF          001020  INT\r
+SCNON           002020  INT\r
+SCNRET          000124' INT\r
+SCNSAC          000072' INT\r
+SCNSAV          000064' INT\r
+STOPU           000447' INT\r
+SYSBEG          000376' INT\r
+SYSBG1          000377' INT\r
+SYSDAT          000002' INT\r
+SYSEND          000475' INT\r
+SYSFIN          000476' EXT\r
+SYSMOD          000001  INT\r
+SYSNUM          000004' INT\r
+SYSSIZ          000476' INT\r
+SYSTAP          000005' INT\r
+SYSVER          000004  INT\r
+TAC             000001  INT\r
+TAC1            000002  INT\r
+TEM             000010  INT\r
+TIME            000460' INT\r
+TTYATC          020000  INT\r
+TTYLEN          000002  INT\r
+TTYTAB          000461' INT\r
+TTYUSE          010000  INT\r
+USRDDT          000436' INT\r
+USRHI           000435' INT\r
+USRINF          000415' INT\r
+USRJDA          000416' INT\r
+\r\fIOINI1 - IO INITIALIZATION PART 1                 PAGE 8-6\r
+        SYMBOL TABLE\r
+\r
+USRLEV          000410' \r
+USRLO           000407' INT\r
+USRLO1          000410' INT\r
+USRMOD          010000  INT\r
+USRPDP          000405' INT\r
+USRPFI          000435' INT\r
+USRPFU          000436' INT\r
+USRPOV          000412' INT\r
+USRREL          000406' INT\r
+USRSAV          000411' INT\r
+USRUXT          000407' INT\r
+UUO             000014  INT\r
+\f   IIIIIIIII            OOOOOOOOO            IIIIIIIII         NNN         NNN         IIIIIIIII         444      444   \r
+   IIIIIIIII            OOOOOOOOO            IIIIIIIII         NNN         NNN         IIIIIIIII         444      444   \r
+   IIIIIIIII            OOOOOOOOO            IIIIIIIII         NNN         NNN         IIIIIIIII         444      444   \r
+      III            OOO         OOO            III            NNN         NNN            III            444      444   \r
+      III            OOO         OOO            III            NNN         NNN            III            444      444   \r
+      III            OOO         OOO            III            NNN         NNN            III            444      444   \r
+      III            OOO         OOO            III            NNNNNN      NNN            III            444      444   \r
+      III            OOO         OOO            III            NNNNNN      NNN            III            444      444   \r
+      III            OOO         OOO            III            NNNNNN      NNN            III            444      444   \r
+      III            OOO         OOO            III            NNN   NNN   NNN            III            444444444444444\r
+      III            OOO         OOO            III            NNN   NNN   NNN            III            444444444444444\r
+      III            OOO         OOO            III            NNN   NNN   NNN            III            444444444444444\r
+      III            OOO         OOO            III            NNN      NNNNNN            III                     444   \r
+      III            OOO         OOO            III            NNN      NNNNNN            III                     444   \r
+      III            OOO         OOO            III            NNN      NNNNNN            III                     444   \r
+      III            OOO         OOO            III            NNN         NNN            III                     444   \r
+      III            OOO         OOO            III            NNN         NNN            III                     444   \r
+      III            OOO         OOO            III            NNN         NNN            III                     444   \r
+   IIIIIIIII            OOOOOOOOO            IIIIIIIII         NNN         NNN         IIIIIIIII                  444   \r
+   IIIIIIIII            OOOOOOOOO            IIIIIIIII         NNN         NNN         IIIIIIIII                  444   \r
+   IIIIIIIII            OOOOOOOOO            IIIIIIIII         NNN         NNN         IIIIIIIII                  444   \r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  11:23:08\r
+File: DSKB1 :IOINI4.LST   [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:22
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:2380 \r
+File will be deleted after printing\r
+\f\rIOINI2 - IO INITIALIZATION PART 2                 PAGE 1\r
+        MAXIMAL CONFIGURATION\r
+\r
+                                00010           XLIST\r
+                                01930          LIST\r
+\r\fIOINI2 - IO INITIALIZATION PART 2                 PAGE 7\r
+        MAXIMAL CONFIGURATION\r
+\r
+\r
+                                00010   ;SOME MACROS FOR DEFINING CONFIGURATION\r
+\r
+                                00030   DEFINE NAME (A)\r
+                                00040   <DEFINE NAME1\r
+                                00050   <CONFIG:  ASCIZ /A/\r
+                                00060   INTERNAL CONFIG\r
+                                00070   >\r
+                                00080   XP A,0\r
+                                00090   SUBTTL A CONFIGURATION\r
+                                00100   >\r
+\r
+                                00120   DEFINE DATE (A)\r
+                                00130   <DEFINE DATE1\r
+                                00140   <SYSDAT:  ASCIZ /A/\r
+                                00150   INTERNAL SYSDAT\r
+                                00160   >>\r
+\r
+                                00180   DEFINE VERSION (A,B)\r
+                                00190   <DEFINE VERS1\r
+                                00200   <SYSNUM:  XWD ^D'A,^D'B\r
+                                00210   XP SYSMOD,^D'A\r
+                                00220   XP SYSVER,^D'B\r
+                                00230   INTERNAL SYSNUM\r
+                                00240   >>\r
+\r
+                                00260   DEFINE CUSPTAPE (A)\r
+                                00270   <DEFINE CUSP1\r
+                                00280   <SYSTAP:  SIXBIT /A/\r
+                                00290   INTERNAL SYSTAP\r
+                                00300   >>\r
+\r
+                                00320   DEFINE ACPDL (J,CHJN,CHJPDN)\r
+                                00330   <         CH'J'N=CHJN\r
+                                00340    CH'J'PDN=CHJPDN\r
+                                00350   >\r
+\r\fIOINI2 - IO INITIALIZATION PART 2                 PAGE 2\r
+        MAXIMAL CONFIGURATION\r
+\r
+\r
+                                00010   NAME <MAXIMAL>^DEFINE NAME1\r
+                                        <CONFIG:  ASCIZ /MAXIMAL/\r
+                                        INTERNAL CONFIG\r
+                                        >\r
+\r\fIOINI2 - IO INITIALIZATION PART 2                 PAGE 2\r
+        MAXIMAL CONFIGURATION\r
+\r
+\r
+                                00040           DATE <8-16-65>^DEFINE DATE1\r
+                                        <SYSDAT:  ASCIZ /8-16-65/\r
+                                        INTERNAL SYSDAT\r
+                                        >^\r
+                                00050           VERSION 1,4^DEFINE VERS1\r
+                                        <SYSNUM:  XWD ^D1,^D4\r
+                                        XP SYSMOD,^D1\r
+                                        XP SYSVER,^D4\r
+                                        INTERNAL SYSNUM\r
+                                        >^\r
+                                00060           CUSPTAPE DTA0^DEFINE CUSP1\r
+                                        <SYSTAP:  SIXBIT /DTA0/\r
+                                        INTERNAL SYSTAP\r
+                                        >^\r
+\r
+                                00080   ;DEFINE THE IO PART OF THE SYSTEM\r
+                                00090   ;THAT IS:\r
+                                00100   ;         DEFINE INTERRUPT SERVICE ROTUINE TO BE USED\r
+                                00110   ;       ASSIGN DEVICES TO PI CHANNELS\r
+\r
+                                00130   DEFINE SYSTEM\r
+                                00140    <\r
+                                00150    ASSOC APR,6,<>\r
+                                00160    ASSOC CTY,3,<>\r
+                                00170    ASSOC SCN,3,<TTY0,TTY1>\r
+                                00180    ASSOC DTC,4,<DTA0>\r
+                                00190    ASSOC DTC,4,<DTA1>\r
+                                00200    ASSOC DTC,4,<DTA2>\r
+                                00210    ASSOC DTC,4,<DTA3>\r
+                                00220    ASSOC MTC,2,<MTA0>\r
+                                00230    ASSOC MTC,2,<MTA1>\r
+                                00240    ASSOC MTC,2,<MTA2>\r
+                                00250    ASSOC MTC,2,<MTA3>\r
+                                00260    ASSOC LPT,5,<LPT>\r
+                                00270    ASSOC PTP,5,<PTP>\r
+                                00280    ASSOC PTR,5,<PTR>\r
+                                00290    ASSOC CDR,5,<CDR>\r
+                                00300   >\r
+\r
+                        000001  00320   DTSIZ=1   ;MULTIPLE DECTAPE DIRECTORIES\r
+\r
+                        000001  00340   SCNLIN=1\r
+\r
+                                00360   ;DEFINE HIGHEST AC TO SAVE AND LENGTH OF PD LIST FOR EACH PI CHANNEL\r
+\r
+                        000000  00380   ACPDL (1,0,0)^    CH1N=0\r
+                        000011  00390   ACPDL (2,11,20)^          CH2N=11\r
+                        000011  00400   ACPDL (3,11,20)^          CH3N=11\r
+                        000011  00410   ACPDL (4,11,20)^          CH4N=11\r
+                        000011  00420   ACPDL (5,11,20)^          CH5N=11\r
+                        000017  00430   ACPDL (6,17,20^   CH6N=17\r
+                        000000  00440   ACPDL (7,0,0)^    CH7N=0\r
+\r\fIOINI2 - IO INITIALIZATION PART 2                 PAGE 2-1\r
+        MAXIMAL CONFIGURATION\r
+\r
+                                00010           TITLE IOINI2 - IO INITIALIZATION PART 2\r
+\r
+                                00030   ;DEFINITIONS OF DEVCHN AND DEVBIT\r
+                                00040   ;THESE ALSO OCCUR IN IOINT1\r
+\r
+                                00060   DEFINE ASSOC (A,N,D)\r
+                                00070   <\r
+                                00080     A'CHN=N\r
+                                00090   >\r
+\r
+                                00110             SYSTEM^\r
+\r\fIOINI2 - IO INITIALIZATION PART 2                 PAGE 2\r
+        MAXIMAL CONFIGURATION\r
+\r
+\r
+\r
+                                00160   ;APR PIP BITS\r
+\r
+                        000001  00180   APRBIT=1\r
+                        000002  00190   REPEAT 7-APRCHN,<APRBIT=APRBIT*2>\r
+                                00200   XP PION,200             ;CONO PI,PION TURNS PI SYSTEM ON\r
+                                00210   XP PIOFF,400            ;TURN IT OFF\r
+                                00220   XP PICLK,PION+1B24+APRBIT       ;TURN PI ON, AND FORCE CLOCK INT.\r
+                                00230   XP CLKOFF,1000+APRCHN           ;CONO APR,CLKOFF TURNS CLOCK FLAG OFF\r
+\r\fIOINI2 - IO INITIALIZATION PART 2                 PAGE 3\r
+        MAXIMAL CONFIGURATION\r
+\r
+\r
+\r
+                                00270   ;ASSEMBLE ALL DEVICE DATA BLOCKS AND LINK THEM TOGETHER\r
+\r
+                                00290   DEFINE SCNDDB (A,B,C)\r
+                                00300   <         INTERNAL C'DB\r
+                                00310   C'DB:     ZZ=.\r
+                                00320    SIXBIT /C/\r
+                                00330    XWD A'CHN*PICHN,STTYBF+1       ;LONG ENOUGH FOR PRINTING\r
+                                00340                   ;SEQUENCE CARD IMAGE.\r
+                                00350                   ;USER BUFFERS ARE 2 WORDS\r
+                                00360                   ;LONGER THEN THE MONITORY TTY BUFFERS.\r
+                                00370    0\r
+                                00380   EXTERNAL  TTYDSP\r
+                                00390    XWD C,TTYDSP\r
+                                00400    XWD DVTTY+DVIN+DVOUT,3\r
+                                00410    0\r
+                                00420    0\r
+                                00430    XWD PROG,0\r
+                                00440    XWD PROG,0\r
+                                00450    XP TTYPTR,.-ZZ\r
+                                00460    0\r
+                                00470    XP TTYCTR,.-ZZ\r
+                                00480    0\r
+                                00490    XP TTYSAV,.-ZZ\r
+                                00500    0\r
+                                00510    XP TTYBUF,.-ZZ\r
+                                00520    XP TTYBM1,TTYBUF-1\r
+                                00530   XP STTYBF,20\r
+                                00540   XP STTYB1,STTYBF+1      ;LENGTH+1\r
+                                00550    BLOCK STTYBF\r
+                                00560   XP TTYBFE,.-ZZ-1\r
+                                00570   \r
+                                00580   ;LINE NO. PARAMETERS\r
+                                00590   XP TTYLEN,SCNLIN+1  ;LENGTH OF TTY TRANSLATOR TABLE(INCLUDE TTY)\r
+                                00600   XP TSCNLN,SCNLIN-1  ;HIGHEST TTY LINE NO.(NOT COUNTING CTY)\r
+                                00610   XP TCONLN,TSCNLN+1  ;CTY LINE NUMBER\r
+                                00620   XP MTTYLN,-TTYLEN   ;NEGATIVEL LENGTH OF TRANSLATOR TABLE\r
+                                00630   XP FSNCHN,SCNCHN*101 ;CHANNEL ASSIGNED, FOR FULL DUPLEX SCN.\r
+                                00640    XP TTYLST,TTY0DB    ;FIRST TTY DEVICE DATA BLOCK\r
+                                00650    >\r
+\r
+                                00670   ;NEG. NO. OF TELTYPE DEVICE DATA BLOCKS\r
+\r
+                        000000  00690   MLTTYL=0\r
+                                00700   DEFINE ASSOC (A,N,D)\r
+                                00710   <IRP D,<IFIDN <A>,<SCN>,<MLTTYL=MLTTYL-1>>>\r
+\r
+                                00730             SYSTEM^\r
+                                00750   INTERNAL MLTTYL\r
+\r\fIOINI2 - IO INITIALIZATION PART 2                 PAGE 4\r
+        MAXIMAL CONFIGURATION\r
+\r
+\r
+\r
+                                00790   ;MAG TAPE DEVICE DATA BLOCK\r
+\r
+                        000000  00810   MTCNUM=0\r
+\r
+                                00830   DEFINE MTCDDB (A,B,C)\r
+                                00840   <         INTERNAL C'DB\r
+                                00850   C'DB:     SIXBIT /C/\r
+                                00860   MTCNUM=MTCNUM+1\r
+                                00870    XWD IORET+A'CHN*PICHN,<MTCNUM-1>*10000+201\r
+                                00880   \r
+                                00890    0\r
+                                00900    XWD C,MTDISP\r
+                                00910   EXTERNAL MTDISP\r
+                                00920    XWD 4400+DVMTA+DVIN+DVOUT,154403\r
+                                00930    0\r
+                                00940    0\r
+                                00950    XWD PROG,0\r
+                                00960    XWD PROG,0\r
+                                00970   >\r
+\r\fIOINI2 - IO INITIALIZATION PART 2                 PAGE 5\r
+        MAXIMAL CONFIGURATION\r
+\r
+\r
+                                01000   ;DECTAPE DEVICE DATA BLOCK\r
+\r
+                        000000  01020   DTCNUM=0\r
+\r
+                                01040   DEFINE DTCDDB (A,B,C)\r
+                                01050   <         INTERNAL C'DB\r
+                                01060   C'DB:     ZZ=.\r
+                                01070    SIXBIT /C/\r
+                                01080   DTCNUM=DTCNUM+1\r
+                                01090    XWD IORET+A'CHN*PICHN,<DTCNUM-1>*10000+201\r
+                                01100    0\r
+                                01110    XWD C,UTDSP\r
+                                01120   EXTERNAL UTDSP\r
+                                01130    XWD 4400+DVDIR+DVIN+DVOUT,154403\r
+                                01140    0\r
+                                01150    0\r
+                                01160    0\r
+                                01170    0\r
+                                01180   XP UFREE,.-ZZ   ;NEXT FREE BLOCK NO.\r
+                                01190    0\r
+                                01200    XP UDIR,.-ZZ   ;LINK TO DIRECTORY IN DATA BLOCK\r
+                                01210    IFE DTSIZ,<    EXP DIRBUF\r
+                                01220   >\r
+                                01230   IFN DTSIZ,<     EXP DTDIR+200*<DTCNUM-1>\r
+                                01240   >\r
+                                01250   >\r
+\r
+\r\fIOINI2 - IO INITIALIZATION PART 2                 PAGE 6\r
+        MAXIMAL CONFIGURATION\r
+\r
+\r
+\r
+                                01300   ;LINE PRINTER DEVICE DTA BLOCK\r
+\r
+                                01320   DEFINE LPTDDB (A,B,C)\r
+                                01330   <INTERNAL LPTDB,LPTDAT,LPTCHR,LPTIOS,LPTSER,LPTMOD\r
+                                01340   INTERNAL LPTBUF,LPTPTR,LPTADR,LPTSV1\r
+                                01350   EXTERNAL LPTDSP\r
+                                01360   \r
+                                01370   LPTDB:\r
+                                01380   LPTDAT:   SIXBIT /LPT/\r
+                                01390   LPTCHR:   XWD A'CHN*PICHN,32\r
+                                01400   LPTIOS:   0\r
+                                01410   LPTSER:   XWD C,LPTDSP\r
+                                01420   LPTMOD:   XWD 0+DVOUT,3\r
+                                01430    0\r
+                                01440   LPTBUF:   0\r
+                                01450   LPTPTR:   0\r
+                                01460   LPTADR:   XWD PROG,0\r
+                                01470   LPTSV1:   0\r
+                                01480   \r
+                                01490   XP LPTCLB,LPTCHN+200  ;PI CHANNEL AND BUSY FLAG\r
+                                01500   XP LPTCHB,11*LPTCHN ;LINE PRINTER ERROR AND DATA CHANNELS\r
+                                01510   >\r
+\r\fIOINI2 - IO INITIALIZATION PART 2                 PAGE 7\r
+        MAXIMAL CONFIGURATION\r
+\r
+\r
+\r
+                                01550   ;CARD READER DEVICE DATA BLOCK\r
+\r
+                                01570   DEFINE CDRDDB (A,B,C)\r
+                                01580   <INTERNAL CDRDB,CDRDAT,CRDIS\r
+                                01590   EXTERNAL CDRDSP\r
+                                01600   \r
+                                01610   CDRDB:\r
+                                01620   CDRDAT:   SIXBIT /CDR/\r
+                                01630    XWD A'CHN*PICHN,34 ;LONG ENOUGHT FOR BINARY CARDS\r
+                                01640    0\r
+                                01650    XWD C,CDRDSP\r
+                                01660    XWD DVCDR+1400+DVIN,14403\r
+                                01670    0\r
+                                01680    0\r
+                                01690    XWD PROG,0\r
+                                01700    0\r
+                                01710    0\r
+                                01720   CRDIS:    JRST .\r
+                                01730   >\r
+\r\fIOINI2 - IO INITIALIZATION PART 2                 PAGE 8\r
+        MAXIMAL CONFIGURATION\r
+\r
+\r
+\r
+                                01770   ;PAPER TAPE READER DEVICE DATA BLOCK\r
+\r
+                                01790   DEFINE PTRDDB (A,B,C)\r
+                                01800   <INTERNAL PTRDB,PTRDAT,PTRCHR,PTRIOS,PTRSER\r
+                                01810   INTERNAL PTRMOD,PTRBUF,PTRADR,PTRPTR,PTRCTR,PTRSVC,PTRSV1\r
+                                01820   EXTERNAL PTRDSP\r
+                                01830   \r
+                                01840   PTRDB:\r
+                                01850   PTRDAT:   SIXBIT /PTR/\r
+                                01860   PTRCHR:   XWD A'CHN*PICHN,41\r
+                                01870   PTRIOS:   0\r
+                                01880   PTRSER:   XWD C,PTRDSP\r
+                                01890   PTRMOD:   XWD 1000+DVIN,14403\r
+                                01900    0\r
+                                01910   PTRBUF:   0\r
+                                01920   PTRADR:   XWD PROG,0\r
+                                01930   PTRPTR:   0\r
+                                01940   PTRCTR:   0\r
+                                01950   PTRSVC:   0\r
+                                01960   PTRSV1:   0\r
+                                01970   >\r
+\r\fIOINI2 - IO INITIALIZATION PART 2                 PAGE 9\r
+        MAXIMAL CONFIGURATION\r
+\r
+\r
+\r
+                                02010   ;PAPER TAPE PUNCH DEVICE DATA BLOCK\r
+\r
+                                02030   DEFINE PTPDDB (A,B,C)\r
+                                02040   <INTERNAL PTPDB,PTPDAT,PTPCHR,PTPIOS,PTPSER,PTPMOD,PTPBUF\r
+                                02050   INTERNAL PTPPTR,PTPADR,PTPCTR,PTPCNT,PTPCHA,PTPSIO\r
+                                02060   EXTERNAL PTPDSP\r
+                                02070   \r
+                                02080   PTPDB:\r
+                                02090   PTPDAT:   SIXBIT /PTP/\r
+                                02100   PTPCHR:   XWD A'CHN*PICHN,41\r
+                                02110   PTPIOS:   0\r
+                                02120   PTPSER:   XWD C,PTPDSP\r
+                                02130   PTPMOD:   XWD 1000+DVOUT,14403\r
+                                02140    0\r
+                                02150   PTPBUF:   0\r
+                                02160   PTPPTR:   0\r
+                                02170   PTPADR:   XWD PROG,0\r
+                                02180   PTPCTR:   0\r
+                                02190   PTPCNT:   0\r
+                                02200   PTPCHA:   0\r
+                                02210   PTPSIO:   0\r
+                                02220   >\r
+\r\fIOINI2 - IO INITIALIZATION PART 2                 PAGE 10\r
+        MAXIMAL CONFIGURATION\r
+\r
+\r
+\r
+                                02260   ;GENERATE DEVICE DATA BLOCKS NEEDED FOR THIS CONFIGURATION\r
+\r
+                                02280   DEFINE ASSOC (A,B,C)\r
+                                02290   <\r
+                                02300   IRP C,<\r
+                                02310             ;DEFINE FORWARD LINL SYMBOL\r
+                                02320    LINK\r
+                                02330   ;\r
+                                02340   ;\r
+                                02350   ;\r
+                                02360    A'DDB A,B,C\r
+                                02370   \r
+                                02380   C=0       ;SET LINK TO 0(IN CASE THIS IS LAST DDB)\r
+                                02390   DEFINE LINK\r
+                                02400   <C=.>\r
+                                02410   >\r
+                                02420   >\r
+\r
+                                02440   INTERNAL DEVLST\r
+\r
+        000000' 000001' 000000  02460   DEVLST:   XWD FIRDB,0           ;BEGINNING OF DEVICE DATA BLOCK CHAIN\r
+\r
+                                02480   DEFINE LINK\r
+                                02490   <FIRDB=.>\r
+\r
+                                02510             SYSTEM^       000001' 646471  200000           SIXBIT /TTY0/\r
+        000002' 000300  000021           XWD SCNCHN*PICHN,STTYBF+1      ;LONG ENOUGH FOR PRINTING\r
+        000003' 000000  000000           0\r
+        000004' 000035' 000000*          XWD TTY0,TTYDSP\r
+        000005' 000013  000003           XWD DVTTY+DVIN+DVOUT,3\r
+        000006' 000000  000000           0\r
+        000007' 000000  000000           0\r
+        000010' 000007  000000           XWD PROG,0\r
+        000011' 000007  000000           XWD PROG,0\r
+        000012' 000000  000000           0\r
+        000013' 000000  000000           0\r
+        000014' 000000  000000           0\r
+        000035' 646471  210000           SIXBIT /TTY1/\r
+        000036' 000300  000021           XWD SCNCHN*PICHN,STTYBF+1      ;LONG ENOUGH FOR PRINTING\r
+        000037' 000000  000000           0\r
+        000040' 000071' 000004*          XWD TTY1,TTYDSP\r
+        000041' 000013  000003           XWD DVTTY+DVIN+DVOUT,3\r
+        000042' 000000  000000           0\r
+        000043' 000000  000000           0\r
+        000044' 000007  000000           XWD PROG,0\r
+        000045' 000007  000000           XWD PROG,0\r
+        000046' 000000  000000           0\r
+        000047' 000000  000000           0\r
+        000050' 000000  000000           0\r
+        000071' 446441  200000           SIXBIT /DTA0/\r
+        000072' 000420  000201           XWD IORET+DTCCHN*PICHN,<DTCNUM-1>*10000+201\r
+\r\fIOINI2 - IO INITIALIZATION PART 2                 PAGE 10-1\r
+        MAXIMAL CONFIGURATION\r
+\r
+        000073' 000000  000000           0\r
+        000074' 000104' 000000*          XWD DTA0,UTDSP\r
+        000075' 004407  154403           XWD 4400+DVDIR+DVIN+DVOUT,154403\r
+        000076' 000000  000000           0\r
+        000077' 000000  000000           0\r
+        000100' 000000  000000           0\r
+        000101' 000000  000000           0\r
+        000102' 000000  000000           0\r
+        000103' 000000  000267'         IFN DTSIZ,<     EXP DTDIR+200*<DTCNUM-1>\r
+        000104' 446441  210000           SIXBIT /DTA1/\r
+        000105' 000420  010201           XWD IORET+DTCCHN*PICHN,<DTCNUM-1>*10000+201\r
+        000106' 000000  000000           0\r
+        000107' 000117' 000074*          XWD DTA1,UTDSP\r
+        000110' 004407  154403           XWD 4400+DVDIR+DVIN+DVOUT,154403\r
+        000111' 000000  000000           0\r
+        000112' 000000  000000           0\r
+        000113' 000000  000000           0\r
+        000114' 000000  000000           0\r
+        000115' 000000  000000           0\r
+        000116' 000000  000467'         IFN DTSIZ,<     EXP DTDIR+200*<DTCNUM-1>\r
+        000117' 446441  220000           SIXBIT /DTA2/\r
+        000120' 000420  020201           XWD IORET+DTCCHN*PICHN,<DTCNUM-1>*10000+201\r
+        000121' 000000  000000           0\r
+        000122' 000132' 000107*          XWD DTA2,UTDSP\r
+        000123' 004407  154403           XWD 4400+DVDIR+DVIN+DVOUT,154403\r
+        000124' 000000  000000           0\r
+        000125' 000000  000000           0\r
+        000126' 000000  000000           0\r
+        000127' 000000  000000           0\r
+        000130' 000000  000000           0\r
+        000131' 000000  000667'         IFN DTSIZ,<     EXP DTDIR+200*<DTCNUM-1>\r
+        000132' 446441  230000           SIXBIT /DTA3/\r
+        000133' 000420  030201           XWD IORET+DTCCHN*PICHN,<DTCNUM-1>*10000+201\r
+        000134' 000000  000000           0\r
+        000135' 000145' 000122*          XWD DTA3,UTDSP\r
+        000136' 004407  154403           XWD 4400+DVDIR+DVIN+DVOUT,154403\r
+        000137' 000000  000000           0\r
+        000140' 000000  000000           0\r
+        000141' 000000  000000           0\r
+        000142' 000000  000000           0\r
+        000143' 000000  000000           0\r
+        000144' 000000  001067'         IFN DTSIZ,<     EXP DTDIR+200*<DTCNUM-1>\r
+        000145' 556441  200000          MTA0DB:   SIXBIT /MTA0/\r
+        000146' 000220  000201           XWD IORET+MTCCHN*PICHN,<MTCNUM-1>*10000+201\r
+        000147' 000000  000000           0\r
+        000150' 000156' 000000*          XWD MTA0,MTDISP\r
+        000151' 004423  154403           XWD 4400+DVMTA+DVIN+DVOUT,154403\r
+        000152' 000000  000000           0\r
+        000153' 000000  000000           0\r
+        000154' 000007  000000           XWD PROG,0\r
+        000155' 000007  000000           XWD PROG,0\r
+        000156' 556441  210000          MTA1DB:   SIXBIT /MTA1/\r
+        000157' 000220  010201           XWD IORET+MTCCHN*PICHN,<MTCNUM-1>*10000+201\r
+\r\fIOINI2 - IO INITIALIZATION PART 2                 PAGE 10-2\r
+        MAXIMAL CONFIGURATION\r
+\r
+        000160' 000000  000000           0\r
+        000161' 000167' 000150*          XWD MTA1,MTDISP\r
+        000162' 004423  154403           XWD 4400+DVMTA+DVIN+DVOUT,154403\r
+        000163' 000000  000000           0\r
+        000164' 000000  000000           0\r
+        000165' 000007  000000           XWD PROG,0\r
+        000166' 000007  000000           XWD PROG,0\r
+        000167' 556441  220000          MTA2DB:   SIXBIT /MTA2/\r
+        000170' 000220  020201           XWD IORET+MTCCHN*PICHN,<MTCNUM-1>*10000+201\r
+        000171' 000000  000000           0\r
+        000172' 000200' 000161*          XWD MTA2,MTDISP\r
+        000173' 004423  154403           XWD 4400+DVMTA+DVIN+DVOUT,154403\r
+        000174' 000000  000000           0\r
+        000175' 000000  000000           0\r
+        000176' 000007  000000           XWD PROG,0\r
+        000177' 000007  000000           XWD PROG,0\r
+        000200' 556441  230000          MTA3DB:   SIXBIT /MTA3/\r
+        000201' 000220  030201           XWD IORET+MTCCHN*PICHN,<MTCNUM-1>*10000+201\r
+        000202' 000000  000000           0\r
+        000203' 000211' 000172*          XWD MTA3,MTDISP\r
+        000204' 004423  154403           XWD 4400+DVMTA+DVIN+DVOUT,154403\r
+        000205' 000000  000000           0\r
+        000206' 000000  000000           0\r
+        000207' 000007  000000           XWD PROG,0\r
+        000210' 000007  000000           XWD PROG,0\r
+        000211' 546064  000000          LPTDAT:   SIXBIT /LPT/\r
+        000212' 000500  000032          LPTCHR:   XWD LPTCHN*PICHN,32\r
+        000213' 000000  000000          LPTIOS:   0\r
+        000214' 000223' 000000*         LPTSER:   XWD LPT,LPTDSP\r
+        000215' 000001  000003          LPTMOD:   XWD 0+DVOUT,3\r
+        000216' 000000  000000           0\r
+        000217' 000000  000000          LPTBUF:   0\r
+        000220' 000000  000000          LPTPTR:   0\r
+        000221' 000007  000000          LPTADR:   XWD PROG,0\r
+        000222' 000000  000000          LPTSV1:   0\r
+        000223' 606460  000000          PTPDAT:   SIXBIT /PTP/\r
+        000224' 000500  000041          PTPCHR:   XWD PTPCHN*PICHN,41\r
+        000225' 000000  000000          PTPIOS:   0\r
+        000226' 000240' 000000*         PTPSER:   XWD PTP,PTPDSP\r
+        000227' 001001  014403          PTPMOD:   XWD 1000+DVOUT,14403\r
+        000230' 000000  000000           0\r
+        000231' 000000  000000          PTPBUF:   0\r
+        000232' 000000  000000          PTPPTR:   0\r
+        000233' 000007  000000          PTPADR:   XWD PROG,0\r
+        000234' 000000  000000          PTPCTR:   0\r
+        000235' 000000  000000          PTPCNT:   0\r
+        000236' 000000  000000          PTPCHA:   0\r
+        000237' 000000  000000          PTPSIO:   0\r
+        000240' 606462  000000          PTRDAT:   SIXBIT /PTR/\r
+        000241' 000500  000041          PTRCHR:   XWD PTRCHN*PICHN,41\r
+        000242' 000000  000000          PTRIOS:   0\r
+        000243' 000254' 000000*         PTRSER:   XWD PTR,PTRDSP\r
+        000244' 001002  014403          PTRMOD:   XWD 1000+DVIN,14403\r
+\r\fIOINI2 - IO INITIALIZATION PART 2                 PAGE 10-3\r
+        MAXIMAL CONFIGURATION\r
+\r
+        000245' 000000  000000           0\r
+        000246' 000000  000000          PTRBUF:   0\r
+        000247' 000007  000000          PTRADR:   XWD PROG,0\r
+        000250' 000000  000000          PTRPTR:   0\r
+        000251' 000000  000000          PTRCTR:   0\r
+        000252' 000000  000000          PTRSVC:   0\r
+        000253' 000000  000000          PTRSV1:   0\r
+        000254' 434462  000000          CDRDAT:   SIXBIT /CDR/\r
+        000255' 000500  000034           XWD CDRCHN*PICHN,34 ;LONG ENOUGHT FOR BINARY CARDS\r
+        000256' 000000  000000           0\r
+        000257' 000000  000000*          XWD CDR,CDRDSP\r
+        000260' 101402  014403           XWD DVCDR+1400+DVIN,14403\r
+        000261' 000000  000000           0\r
+        000262' 000000  000000           0\r
+        000263' 000007  000000           XWD PROG,0\r
+        000264' 000000  000000           0\r
+        000265' 000000  000000           0\r
+        000266' 254000  000266'         CRDIS:    JRST .\r
+\r\fIOINI2 - IO INITIALIZATION PART 2                 PAGE 11\r
+        MAXIMAL CONFIGURATION\r
+\r
+\r
+\r
+        000267'                 02550             LIT\r
+\r
+                                02570             IFE DTSIZ,<           DIRBUF: BLOCK 200\r
+                                02580    INTERNAL DIRBUF\r
+                                02590   >\r
+\r
+        000267'                 02610   IFN DTSIZ,<DTDIR:       BLOCK DTCNUM*200\r
+                                02620   INTERNAL DTDIR\r
+                                02630   >\r
+\r
+                                02650             END,\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 001267\r
+\r
+10K CORE USED\r
+\r\fIOINI2 - IO INITIALIZATION PART 2                 PAGE 12\r
+        SYMBOL TABLE\r
+\r
+                000376  \r
+A               000000  INT\r
+AC1             000015  INT\r
+AC2             000016  INT\r
+AC3             000017  INT\r
+AL              000001  INT\r
+APRBIT          000002  \r
+APRCHN          000006  \r
+ASSCON          400000  INT\r
+ASSPRG          200000  INT\r
+B               000014  INT\r
+BUFPNT          000012  INT\r
+BUFWRD          000013  INT\r
+CDR             000000  \r
+CDRCHN          000005  \r
+CDRDAT          000254' INT\r
+CDRDB           000254' INT\r
+CDRDSP          000257' EXT\r
+CH1N            000000  \r
+CH1PDN          000000  \r
+CH2N            000011  \r
+CH2PDN          000020  \r
+CH3N            000011  \r
+CH3PDN          000020  \r
+CH4N            000011  \r
+CH4PDN          000020  \r
+CH5N            000011  \r
+CH5PDN          000020  \r
+CH6N            000017  \r
+CH6PDN          000020  \r
+CH7N            000000  \r
+CH7PDN          000000  \r
+CLKOFF          001006  INT\r
+CLOSB           002000  INT\r
+CLSIN           000002  INT\r
+CLSOUT          000001  INT\r
+CRDIS           000266' INT\r
+CTYCHN          000003  \r
+D               000017  INT\r
+DAT             000005  INT\r
+DCL             000001  INT\r
+DCW             020000  INT\r
+DDI             000007  INT\r
+DDO             000006  INT\r
+DDTMEM          000037  INT\r
+DDTSYM          000036  INT\r
+DEN             000004  INT\r
+DEVADR          000007  INT\r
+DEVBUF          000006  INT\r
+DEVCHR          000001  INT\r
+DEVCTR          000011  INT\r
+DEVDAT          000006  INT\r
+DEVIAD          000007  INT\r
+\r\fIOINI2 - IO INITIALIZATION PART 2                 PAGE 12-1\r
+        SYMBOL TABLE\r
+\r
+DEVIOS          000002  INT\r
+DEVLOG          000005  INT\r
+DEVLST          000000' INT\r
+DEVMOD          000004  INT\r
+DEVNAM          000000  INT\r
+DEVOAD          000010  INT\r
+DEVPTR          000010  INT\r
+DEVSER          000003  INT\r
+DGF             000012  INT\r
+DIN             000003  INT\r
+DLK             000005  INT\r
+DOU             000002  INT\r
+DR              000016  INT\r
+DRL             000000  INT\r
+DSI             000011  INT\r
+DSO             000010  INT\r
+DTA0            000104' \r
+DTA0DB          000071' INT\r
+DTA1            000117' \r
+DTA1DB          000104' INT\r
+DTA2            000132' \r
+DTA2DB          000117' INT\r
+DTA3            000145' \r
+DTA3DB          000132' INT\r
+DTCCHN          000004  \r
+DTCNUM          000004  \r
+DTDIR           000267' INT\r
+DTSIZ           000001  \r
+DTW             040000  INT\r
+DVAVAL          000040  INT\r
+DVCDR           100000  INT\r
+DVDIR           000004  INT\r
+DVDIRI          400000  INT\r
+DVIN            000002  INT\r
+DVLPT           040000  INT\r
+DVMTA           000020  INT\r
+DVOUT           000001  INT\r
+DVTTY           000010  INT\r
+ENTRB           020000  INT\r
+FIRDB           000001' \r
+FSNCHN          000303  INT\r
+I               000010  INT\r
+IB              000013  INT\r
+IBUFB           200000  INT\r
+INITB           400000  INT\r
+INPB            010000  INT\r
+IO              000020  INT\r
+IOACT           010000  INT\r
+IOBEG           000002  INT\r
+IOBKTL          040000  INT\r
+IOCON           000040  INT\r
+IODEND          020000  INT\r
+IODERR          200000  INT\r
+\r\fIOINI2 - IO INITIALIZATION PART 2                 PAGE 12-2\r
+        SYMBOL TABLE\r
+\r
+IODISC          400000  INT\r
+IODONE          400000  INT\r
+IODTER          100000  INT\r
+IOEND           000040  INT\r
+IOFST           000004  INT\r
+IOIMPM          400000  INT\r
+IONRCK          000100  INT\r
+IORDEL          000100  INT\r
+IORET           000020  INT\r
+IOS             000000  INT\r
+IOSTRT          000010  INT\r
+IOUSE           400000  INT\r
+IOW             000001  INT\r
+IOWC            000020  INT\r
+IOWS            400000  INT\r
+ITEM            000004  INT\r
+JBFADR          000000  INT\r
+JBFCTR          000002  INT\r
+JBFPTR          000001  INT\r
+JBUF            000005  INT\r
+JDAT            000011  INT\r
+JERR            002000  INT\r
+JIOW            100000  INT\r
+JNA             004000  INT\r
+LOOKB           040000  INT\r
+LPT             000223' \r
+LPTADR          000221' INT\r
+LPTBUF          000217' INT\r
+LPTCHB          000055  INT\r
+LPTCHN          000005  \r
+LPTCHR          000212' INT\r
+LPTCLB          000205  INT\r
+LPTDAT          000211' INT\r
+LPTDB           000211' INT\r
+LPTDSP          000214' EXT\r
+LPTIOS          000213' INT\r
+LPTMOD          000215' INT\r
+LPTPTR          000220' INT\r
+LPTSER          000214' INT\r
+LPTSV1          000222' INT\r
+MAXIMA          000000  INT\r
+MLTTYL  777777  777776  INT\r
+MTA0            000156' \r
+MTA0DB          000145' INT\r
+MTA1            000167' \r
+MTA1DB          000156' INT\r
+MTA2            000200' \r
+MTA2DB          000167' INT\r
+MTA3            000211' \r
+MTA3DB          000200' INT\r
+MTCCHN          000002  \r
+MTCNUM          000004  \r
+MTDISP          000203' EXT\r
+\r\fIOINI2 - IO INITIALIZATION PART 2                 PAGE 12-3\r
+        SYMBOL TABLE\r
+\r
+MTTYLN  777777  777776  INT\r
+MTW             010000  INT\r
+OBUFB           100000  INT\r
+OUTPB           004000  INT\r
+PDP             000003  INT\r
+PICHN           000100  INT\r
+PICLK           004202  INT\r
+PIOFF           000400  INT\r
+PION            000200  INT\r
+PROG            000007  INT\r
+PTP             000240' \r
+PTPADR          000233' INT\r
+PTPBUF          000231' INT\r
+PTPCHA          000236' INT\r
+PTPCHN          000005  \r
+PTPCHR          000224' INT\r
+PTPCNT          000235' INT\r
+PTPCTR          000234' INT\r
+PTPDAT          000223' INT\r
+PTPDB           000223' INT\r
+PTPDSP          000226' EXT\r
+PTPIOS          000225' INT\r
+PTPMOD          000227' INT\r
+PTPPTR          000232' INT\r
+PTPSER          000226' INT\r
+PTPSIO          000237' INT\r
+PTR             000254' \r
+PTRADR          000247' INT\r
+PTRBUF          000246' INT\r
+PTRCHN          000005  \r
+PTRCHR          000241' INT\r
+PTRCTR          000251' INT\r
+PTRDAT          000240' INT\r
+PTRDB           000240' INT\r
+PTRDSP          000243' EXT\r
+PTRIOS          000242' INT\r
+PTRMOD          000244' INT\r
+PTRPTR          000250' INT\r
+PTRSER          000243' INT\r
+PTRSV1          000253' INT\r
+PTRSVC          000252' INT\r
+RUN             200000  INT\r
+RUNABL          204000  INT\r
+SCNCHN          000003  \r
+SCNLIN          000001  \r
+STTYB1          000021  INT\r
+STTYBF          000020  INT\r
+TAC             000001  INT\r
+TAC1            000002  INT\r
+TCONLN          000001  INT\r
+TEM             000010  INT\r
+TSCNLN          000000  INT\r
+TTY0            000035' \r
+\r\fIOINI2 - IO INITIALIZATION PART 2                 PAGE 12-4\r
+        SYMBOL TABLE\r
+\r
+TTY0DB          000001' INT\r
+TTY1            000071' \r
+TTY1DB          000035' INT\r
+TTYATC          020000  INT\r
+TTYBFE          000033  INT\r
+TTYBM1          000013  INT\r
+TTYBUF          000014  INT\r
+TTYCTR          000012  INT\r
+TTYDSP          000040' EXT\r
+TTYLEN          000002  INT\r
+TTYLST          000001' INT\r
+TTYPTR          000011  INT\r
+TTYSAV          000013  INT\r
+TTYUSE          010000  INT\r
+UDIR            000012  INT\r
+UFREE           000011  INT\r
+USRMOD          010000  INT\r
+UTDSP           000135' EXT\r
+UUO             000014  INT\r
+ZZ              000132' \r
+\f            JJJ         OOOOOOOOO         BBBBBBBBBBBB         DDDDDDDDDDDD            AAAAAAAAA         TTTTTTTTTTTTTTT\r
+            JJJ         OOOOOOOOO         BBBBBBBBBBBB         DDDDDDDDDDDD            AAAAAAAAA         TTTTTTTTTTTTTTT\r
+            JJJ         OOOOOOOOO         BBBBBBBBBBBB         DDDDDDDDDDDD            AAAAAAAAA         TTTTTTTTTTTTTTT\r
+            JJJ      OOO         OOO      BBB         BBB      DDD         DDD      AAA         AAA            TTT      \r
+            JJJ      OOO         OOO      BBB         BBB      DDD         DDD      AAA         AAA            TTT      \r
+            JJJ      OOO         OOO      BBB         BBB      DDD         DDD      AAA         AAA            TTT      \r
+            JJJ      OOO         OOO      BBB         BBB      DDD         DDD      AAA         AAA            TTT      \r
+            JJJ      OOO         OOO      BBB         BBB      DDD         DDD      AAA         AAA            TTT      \r
+            JJJ      OOO         OOO      BBB         BBB      DDD         DDD      AAA         AAA            TTT      \r
+            JJJ      OOO         OOO      BBBBBBBBBBBB         DDD         DDD      AAA         AAA            TTT      \r
+            JJJ      OOO         OOO      BBBBBBBBBBBB         DDD         DDD      AAA         AAA            TTT      \r
+            JJJ      OOO         OOO      BBBBBBBBBBBB         DDD         DDD      AAA         AAA            TTT      \r
+JJJ         JJJ      OOO         OOO      BBB         BBB      DDD         DDD      AAAAAAAAAAAAAAA            TTT      \r
+JJJ         JJJ      OOO         OOO      BBB         BBB      DDD         DDD      AAAAAAAAAAAAAAA            TTT      \r
+JJJ         JJJ      OOO         OOO      BBB         BBB      DDD         DDD      AAAAAAAAAAAAAAA            TTT      \r
+JJJ         JJJ      OOO         OOO      BBB         BBB      DDD         DDD      AAA         AAA            TTT      \r
+JJJ         JJJ      OOO         OOO      BBB         BBB      DDD         DDD      AAA         AAA            TTT      \r
+JJJ         JJJ      OOO         OOO      BBB         BBB      DDD         DDD      AAA         AAA            TTT      \r
+   JJJJJJJJJ            OOOOOOOOO         BBBBBBBBBBBB         DDDDDDDDDDDD         AAA         AAA            TTT      \r
+   JJJJJJJJJ            OOOOOOOOO         BBBBBBBBBBBB         DDDDDDDDDDDD         AAA         AAA            TTT      \r
+   JJJJJJJJJ            OOOOOOOOO         BBBBBBBBBBBB         DDDDDDDDDDDD         AAA         AAA            TTT      \r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  11:23:08\r
+File: DSKB1 :JOBDAT.LST   [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:22
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:2357 \r
+File will be deleted after printing\r
+\f\rJOBDAT - JOB DATA AREA ASSIGNMENTS                 PAGE 1\r
+\r
+\r
+                                00010   TITLE JOBDAT - JOB DATA AREA ASSIGNMENTS\r
+\r
+                                00030             DEFINE BLK (A,B)\r
+                                00040   <JOBPRO=B\r
+                                00050   A=0\r
+                                00060   ENTRY A\r
+                                00070   DEFINE BLK (C,D)\r
+                                00080   <C=JOBPRO\r
+                                00090   JOBPRO=JOBPRO+D\r
+                                00100   ENTRY C>>\r
+\r
+                                00120             BLK JOBAC,20          ;SYSTEM USE AC STORAGE\r
+                                00130             BLK JOBDAC,20         ;USER'S AC STORAGE WHILE JOB IS INACTIV\r
+                        000157  00140   JOBDHI=JOBDAT+17    ;HIGHEST AC SAVED WHILE INACTIVE\r
+                                00150             BLK JOBUUO,1          ;UUO SAVE AND TRAP LOCATIONS\r
+                                00160             BLK JOB41,1           ;UUO JSR LOCATION\r
+                                00170             BLK JOBPC,1           ;BITS 0-5=APR FLAGS, C(RH)=PC\r
+                                00180             BLK JOBPDP,1          ;PUSH DOWN POINTER FOR SYSTEM USE\r
+                        000043  00190   JOBPRT=JOBPDP                   ;FIRST LOC PROTECTED FROM ITNERRUPT SER\r
+                        000044  00200   JOBPR1=JOBPRT+1                 ;FIRST LOC+1\r
+                                00210             BLK JOBREL,1          ;C(LH)=0, C(RH)=RELOCATION ADDRESS\r
+                                00220             BLK JOBUXT,1          ;EXIT FROM UUO AT BREAK\r
+                                00230             BLK JOBLEV,1          ;C(40) WHEN INACTIVE\r
+                                00240             BLK JOBSAV,1          ;TEMPOARY STORAGE FOR UOO HANDLER\r
+                                00250             BLK JOBPOV,1          ;PUSH DOWN OVERFLOW TRAP\r
+                                00260             BLK JOBTEM,1          ;(UNUSED)TEMPORARY SYSTEM STORAGE\r
+                                00270             BLK JOBTM1,1          ;"\r
+                                00280             BLK JOBINF,1          ;UNUSED\r
+                                00290             BLK JOBJDA,20         ;JOB IO DEVICE CHANNEL ASSIGNMENTS\r
+                                00300             BLK JOBDDT,1          ;ADDRESS OF USER'S DDT\r
+                        000073  00310   JOBPFI=JOBDDT-1                 ;LAST LOC PROTECTED FROM IO SERVICE\r
+                        000074  00320   JOBPFU=JOBDDT                   ;LAST LOC PROTECTED FROM USER\r
+                                00330             BLK JOBCDP,1          ;(UNUSED)POINTER TO COMMAND STRING\r
+                                00340             BLK JOBTRP,20         ;(UNUSED)TRAP LOCATIONS\r
+                                00350             BLK JOBSYM,1          ;SYMBOL TABLE POINTER\r
+                                00360             BLK JOBUSY,1          ;(UNUSED)POINTER TO UNDEFINED SYMBOL TA\r
+                                00370             BLK JOBSA,1           ;C(RH)=STARTING ADDRESS\r
+                                00380                                   ;C(LH)=HIGHEST LOCATION USED\r
+                                00390             BLK JOBFF,1           ;FIRST FREE LOCATION\r
+                        000140  00400   JOBDAT=140          ;LENGTH OF JOB DATA AREA\r
+                        000137  00410   JOBHGH=JOBDAT-1                 ;HIGHEST LOC IN JOB DATA AREA\r
+                        000121  00420   JOBPDL=JOBPRO-1                 ;FIRST LOC. -1 OF PD LIST\r
+                        000122  00430   JOBPD1=JOBPDL+1                 ;FIRST LOC. IN PD LIST\r
+                777777  777762  00440   MJOBPD=JOBPDL-JOBHGH            ;- LENGTH OF PD LIST\r
+                        000122  00450   JOBS41=JOBPRO                   ;PLACE WHERE SAVE-GET SAVES USER LOC 4\r
+                        000140  00460   JOBDA=JOBDAT\r
+                                00470   ENTRY JOBPFI,JOBPFU,JOBPDL,JOBPRO,MJOBPD,JOBHGH\r
+                                00480   ENTRY JOBDHI,JOBPRT,JOBPR1,JOBDA,JOBS41,JOBPD1\r
+\r
+                                00500             END,\r
+\r
+NO ERRORS DETECTED\r
+\r
+\r\fJOBDAT - JOB DATA AREA ASSIGNMENTS                 PAGE 1-1\r
+\r
+\r
+PROGRAM BREAK IS 000000\r
+\r
+8K CORE USED\r
+\r\fJOBDAT - JOB DATA AREA ASSIGNMENTS                 PAGE 2\r
+        SYMBOL TABLE\r
+\r
+                000046  \r
+JOB41           000041  ENT\r
+JOBAC           000000  ENT\r
+JOBCDP          000075  ENT\r
+JOBDA           000140  ENT\r
+JOBDAC          000020  ENT\r
+JOBDAT          000140  \r
+JOBDDT          000074  ENT\r
+JOBDHI          000157  ENT\r
+JOBFF           000121  ENT\r
+JOBHGH          000137  ENT\r
+JOBINF          000053  ENT\r
+JOBJDA          000054  ENT\r
+JOBLEV          000046  ENT\r
+JOBPC           000042  ENT\r
+JOBPD1          000122  ENT\r
+JOBPDL          000121  ENT\r
+JOBPDP          000043  ENT\r
+JOBPFI          000073  ENT\r
+JOBPFU          000074  ENT\r
+JOBPOV          000050  ENT\r
+JOBPR1          000044  ENT\r
+JOBPRO          000122  ENT\r
+JOBPRT          000043  ENT\r
+JOBREL          000044  ENT\r
+JOBS41          000122  ENT\r
+JOBSA           000120  ENT\r
+JOBSAV          000047  ENT\r
+JOBSYM          000116  ENT\r
+JOBTEM          000051  ENT\r
+JOBTM1          000052  ENT\r
+JOBTRP          000076  ENT\r
+JOBUSY          000117  ENT\r
+JOBUUO          000040  ENT\r
+JOBUXT          000045  ENT\r
+MJOBPD  777777  777762  ENT\r
+\fLLL                  PPPPPPPPPPPP         TTTTTTTTTTTTTTT         SSSSSSSSSSSS      EEEEEEEEEEEEEEE      RRRRRRRRRRRR   \r
+LLL                  PPPPPPPPPPPP         TTTTTTTTTTTTTTT         SSSSSSSSSSSS      EEEEEEEEEEEEEEE      RRRRRRRRRRRR   \r
+LLL                  PPPPPPPPPPPP         TTTTTTTTTTTTTTT         SSSSSSSSSSSS      EEEEEEEEEEEEEEE      RRRRRRRRRRRR   \r
+LLL                  PPP         PPP            TTT            SSS                  EEE                  RRR         RRR\r
+LLL                  PPP         PPP            TTT            SSS                  EEE                  RRR         RRR\r
+LLL                  PPP         PPP            TTT            SSS                  EEE                  RRR         RRR\r
+LLL                  PPP         PPP            TTT            SSS                  EEE                  RRR         RRR\r
+LLL                  PPP         PPP            TTT            SSS                  EEE                  RRR         RRR\r
+LLL                  PPP         PPP            TTT            SSS                  EEE                  RRR         RRR\r
+LLL                  PPPPPPPPPPPP               TTT               SSSSSSSSS         EEEEEEEEEEEE         RRRRRRRRRRRR   \r
+LLL                  PPPPPPPPPPPP               TTT               SSSSSSSSS         EEEEEEEEEEEE         RRRRRRRRRRRR   \r
+LLL                  PPPPPPPPPPPP               TTT               SSSSSSSSS         EEEEEEEEEEEE         RRRRRRRRRRRR   \r
+LLL                  PPP                        TTT                        SSS      EEE                  RRR   RRR      \r
+LLL                  PPP                        TTT                        SSS      EEE                  RRR   RRR      \r
+LLL                  PPP                        TTT                        SSS      EEE                  RRR   RRR      \r
+LLL                  PPP                        TTT                        SSS      EEE                  RRR      RRR   \r
+LLL                  PPP                        TTT                        SSS      EEE                  RRR      RRR   \r
+LLL                  PPP                        TTT                        SSS      EEE                  RRR      RRR   \r
+LLLLLLLLLLLLLLL      PPP                        TTT            SSSSSSSSSSSS         EEEEEEEEEEEEEEE      RRR         RRR\r
+LLLLLLLLLLLLLLL      PPP                        TTT            SSSSSSSSSSSS         EEEEEEEEEEEEEEE      RRR         RRR\r
+LLLLLLLLLLLLLLL      PPP                        TTT            SSSSSSSSSSSS         EEEEEEEEEEEEEEE      RRR         RRR\r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  11:23:08\r
+File: DSKB1 :LPTSER.LST   [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:22
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:2354 \r
+File will be deleted after printing\r
+\f\rLPTSER - LINE PRINTER SERVICE ROUTINE                 PAGE 1\r
+        8-4-65\r
+\r
+                                00010           XLIST\r
+                                01930          LIST\r
+\r\fLPTSER - LINE PRINTER SERVICE ROUTINE                 PAGE 7\r
+        8-4-65\r
+\r
+\r
+                                00010   TITLE LPTSER - LINE PRINTER SERVICE ROUTINE\r
+                                00020   SUBTTL 8-4-65\r
+                                00030   INTERNAL LPTINT,LPTINI\r
+                                00040   EXTERNAL LPTCHN, LPTCHL, LPTRET,  OUT, WAIT1, LPTSAV, IOSET\r
+                                00050   EXTERNAL ADVBFE,  SETIOD,ILLINP,LPTCHB,LPTCLB\r
+\r
+                                00070   ;DEVICE DATA BLOCK LINKAGE\r
+                                00080   EXTERNAL LPTDAT,LPTCHR,LPTIOS,LPTSER,LPTMOD,LPTBUF,LPTPTR\r
+                                00090   EXTERNAL LPTADR,LPTSV1\r
+                                00100   ENTRY LPTDSP\r
+\r\fLPTSER - LINE PRINTER SERVICE ROUTINE                 PAGE 2\r
+        8-4-65\r
+\r
+\r
+\r
+                                00140   ,LPT PARAMETER ASSIGNMENTS\r
+\r
+                                00160   ,   LPT CONTROL REGISTER\r
+                        002000  00170             LPTCLR=2000           ;CLEAR BUFFER\r
+                        000100  00180             LPTDON=100            ;DONE FLAG\r
+                        000400  00190             LPTERR=400            ;ERROR FLAG\r
+                        001000  00200             LPTLOV=1000           ;LINE OVERFLOW\r
+\r
+                                00220   ,   SPECIAL IO STATUS WORD ASSIGNMENTS\r
+                        100000  00230             LPTADV=100000\r
+\r
+                                00250   REPEAT 0,<\r
+                                00260   ,   LPT DATABLOCK\r
+                                00270   \r
+                                00280   LPTDAT:   SIXBIT .LPT.\r
+                                00290   LPTCHR:   32\r
+                                00300   LPTIOS:   0\r
+                                00310   LPTSER:   EXP LPTDSP\r
+                                00320   LPTMOD:   XWD 0,3\r
+                                00330    0\r
+                                00340   LPTBUF:   0\r
+                                00350   LPTPTR:   0\r
+                                00360   LPTADR:   XWD PROG,0\r
+                                00370   LPTSV1:   0\r
+                                00380   >\r
+\r
+                                00400   ,  LPT SERVICE DISPATCH TABLE\r
+\r
+        000000' 254000  000004' 00420   LPTDSP:   JRST LPTINI           ;RELEASE\r
+        000001' 254000  000007' 00430             JRST LPTCLS           ;CLOSE\r
+        000002' 254000  000013' 00440             JRST LPTOUT           ;OUTPUT\r
+        000003' 254000  000000* 00450             JRST ILLINP                           ;INPUT\r
+\r
+        000004' 712600  002000  00470   LPTINI:   CONO LPT,LPTCLR       ;LPT INITIALIZE\r
+        000005' 513000  000034' 00480             HLLZS LPTINT\r
+        000006' 263140  000000  00490             POPJ PDP,\r
+\r\fLPTSER - LINE PRINTER SERVICE ROUTINE                 PAGE 3\r
+        8-4-65\r
+\r
+\r
+\r
+        000007' 260140  000000* 00530   LPTCLS:   PUSHJ PDP,OUT         ;PRINT REMAINING BUFFERS\r
+        000010' 260140  000000* 00540             PUSHJ PDP, WAIT1      ;WAIT FOR IOACT=0\r
+        000011' 712540  000126' 00550             DATAO LPT,LPTTOP      ;PRINT CARRAGE RETURN, FORM FEED\r
+        000012' 263140  000000  00560             POPJ PDP,             ;CLOSE RETURN\r
+\r
+        000013' 660000  010000  00580   LPTOUT:   TRO IOS,IOACT         ;IOACT=1\r
+        000014' 621000  400000  00590             TLZ IOS,IODISC        ;IODISC:=0\r
+        000015' 661000  000020  00600             TLO IOS,IO            ;IO:=1\r
+        000016' 603000  000002  00610             TLNE IOS,IOBEG        ;VIRGIN DEVICE? IOBEG:=0\r
+        000017' 254000  000024' 00620             JRST LPTBEG           ;YES\r
+        000020' 260140  000127' 00630             PUSHJ PDP,LPTSET\r
+        000021' 202000  000000* 00640             MOVEM IOS,LPTIOS      ;C(LPTIOS):=C(IOS)\r
+        000022' 201040  000100  00650             MOVEI TAC,LPTDON\r
+        000023' 254000  000030' 00660             JRST LPTBG1\r
+\r
+        000024' 661000  400000  00680   LPTBEG:   TLO IOS,IODISC\r
+        000025' 202000  000021* 00690             MOVEM IOS,LPTIOS      ;C(LPTIOS):=C(IOS)\r
+        000026' 260140  000127' 00700             PUSHJ PDP,LPTSET\r
+        000027' 201040  002000  00710             MOVEI TAC,LPTCLR\r
+        000030' 201100  001500  00720   LPTBG1:   MOVEI TAC1,LPTLOV+LPTERR+LPTDON\r
+        000031' 542100  000034' 00730             HRRM TAC1,LPTINT\r
+        000032' 712601  000000* 00740             CONO LPT, LPTCHB(TAC)         ;CLEAR BUFFER AND ASSIGN PI C\r
+        000033' 263140  000000  00750             POPJ PDP,             ;RETURN\r
+\r\fLPTSER - LINE PRINTER SERVICE ROUTINE                 PAGE 4\r
+        8-4-65\r
+\r
+\r
+\r
+\r
+                                00800   , LINE PRINTER INTERRUPT SERVICE\r
+\r
+        000034' 712740  001500  00820   LPTINT:   CONSO LPT,LPTLOV+LPTERR+LPTDON;LINE OVERFLOW, ERROR OR DONE\r
+        000035' 254000  000034' 00830             JRST LPTINT           ;IF LPT IS IN FLAG LIST, GO TO ERROR, E\r
+        000036' 712700  000070  00840             CONSZ LPT,70\r
+        000037' 712740  000100  00850             CONSO LPT,LPTDON\r
+        000040' 254000  000102' 00860             JRST LPTERI                   ;YES\r
+        000041' 335000  000025* 00870   LPTIN1:   SKIPGE LPTIOS         ;IODISC=1?\r
+        000042' 254000  000053' 00880             JRST LPTDSC                   ;YES\r
+        000043' 712500  000000* 00890             BLKO LPT,LPTPTR       ;PRINT\r
+        000044' 334000  000000  00900             SKIPA                 ;BUFFER EMPTY\r
+        000045' 254520  000000* 00910             JEN @LPTCHL                   ;DISMISS INTERRUPT AND RETURN\r
+        000046' 202040  000000* 00920             MOVEM TAC,LPTSV1      ;SAVE TAC\r
+        000047' 515040  400000  00930             HRLZI TAC,IODISC      ;IODISC:=1\r
+        000050' 436040  000041* 00940             IORM TAC,LPTIOS\r
+        000051' 200040  000046* 00950   LPTERX:   MOVE TAC,LPTSV1       ;RESTORE TAC\r
+        000052' 254520  000045* 00960             JEN @LPTCHL                   ;DISMISS INTERRUPT AND RETURN\r
+\r
+        000053' 264000  000000* 00980   LPTDSC:   JSR LPTSAV                    ;SAVE ACCUMULATORS AND ESTABL\r
+        000054' 201300  000000* 00990             MOVEI DEVDAT,LPTDAT  ;DEVDAT:=LPTDAT\r
+        000055' 260140  000000* 01000             PUSHJ PDP,IOSET       ;PROG:=C(JBTADR18-35),ITEM:=C(DEVPTR)\r
+        000056' 200000  000050* 01010             MOVE IOS,LPTIOS\r
+        000057' 623000  000002  01020             TLZE IOS,IOBEG\r
+        000060' 254000  000077' 01030             JRST LPTBG                    ;PUT OUT CR-LF\r
+        000061' 260140  000000* 01040             PUSHJ PDP,ADVBFE      ;ADVANCE BUFFER\r
+        000062' 254000  000073' 01050             JRST      LPTOFF      ;NEXT BUFFER EMPTY\r
+        000063' 602000  000040  01060             TRNE IOS,IOCON        ;CONTINUOUS? (IOCON=0?)\r
+        000064' 254000  000073' 01070             JRST LPTOFF           ;NO\r
+        000065' 621000  400000  01080             TLZ IOS,IODISC\r
+        000066' 260140  000127' 01090             PUSHJ PDP,LPTSET      ;SET LPTPTR\r
+\r
+        000067' 623000  000001  01110   LPTINX:   TLZE IOS,IOW          ;IN A WAIT? IOW:=0\r
+        000070' 260140  000000* 01120             PUSHJ PDP,SETIOD      ;YES.  IOWS:=1\r
+        000071' 202000  000056* 01130   LPTXIT:   MOVEM IOS,LPTIOS      ;C(LPTIOS):=C(IOS)\r
+        000072' 254000  000000* 01140             JRST LPTRET                     ;RESTORE ACCUMULATORS AND DIS\r
+\r
+        000073' 620000  010000  01160   LPTOFF:   TRZ IOS,IOACT\r
+        000074' 712600  000000  01170             CONO LPT,0\r
+        000075' 513000  000034' 01180             HLLZS LPTINT          ;TURN LPT OFF\r
+        000076' 254000  000067' 01190             JRST LPTINX\r
+\r
+        000077' 712540  000126' 01210   LPTBG:    DATAO LPT,LPTTOP      ;SEND OUT CR-FF\r
+        000100' 621000  400000  01220             TLZ IOS,IODISC        ;WHEN IODISC=1\r
+        000101' 254000  000071' 01230             JRST LPTXIT\r
+\r\fLPTSER - LINE PRINTER SERVICE ROUTINE                 PAGE 5\r
+        8-4-65\r
+\r
+\r
+\r
+                                01270   ;HERE ON EITHER OVERFLOW OR ERROR(OFFLINE) OR ERROR CHANNEL\r
+                                01280   ;NOT ASSIGNED.\r
+\r
+        000102' 202040  000051* 01300   LPTERI:   MOVEM TAC,LPTSV1      ;SAVE TAC\r
+        000103' 712740  001000  01310             CONSO LPT,LPTLOV      ;LINE OVERFLOW?\r
+        000104' 254000  000111' 01320             JRST LPTER1                   ;NO\r
+        000105' 210040  000137' 01330             MOVN TAC,[EXP 100001]         ;YES, DECREMENT POINTER\r
+        000106' 272040  000043* 01340             ADDM TAC,LPTPTR\r
+        000107' 712540  000140' 01350             DATAO LPT,[EXP 15B6+12B13]    ;PRINT CARRIAGE RETURN, LINE\r
+        000110' 254000  000051' 01360             JRST LPTERX\r
+\r
+        000111' 712740  000070  01380   LPTER1:   CONSO LPT,70          ;ERROR INTERRUPT ASSIGNED?\r
+        000112' 254000  000117' 01390             JRST LPTER2           ;NO\r
+        000113' 712600  000000* 01400             CONO LPT,LPTCLB       ;YES, DEASSIGN IT,SET BUSY,CLEAR REST\r
+        000114' 201040  000100  01410             MOVEI TAC,LPTDON      ;ENABLE FOR DONE FLAG ONLY\r
+        000115' 542040  000034' 01420   LPTERA:   HRRM TAC,LPTINT\r
+        000116' 254000  000051' 01430             JRST LPTERX\r
+\r
+        000117' 712640  000001  01450   LPTER2:   CONI LPT,TAC\r
+        000120' 405040  000300  01460             ANDI TAC,300\r
+        000121' 712601  000032* 01470             CONO LPT,LPTCHB(TAC)\r
+        000122' 201040  001500  01480             MOVEI TAC,LPTDON+LPTERR+LPTLOV\r
+        000123' 542040  000034' 01490             HRRM TAC,LPTINT\r
+        000124' 200040  000102* 01500             MOVE TAC,LPTSV1\r
+        000125' 254000  000041' 01510             JRST LPTIN1\r
+        000126' 064300  000000  01520   LPTTOP:   EXP 15B6+14B13        ;CARRIAGE RETURN, FORM FEED\r
+\r\fLPTSER - LINE PRINTER SERVICE ROUTINE                 PAGE 6\r
+        8-4-65\r
+\r
+\r
+\r
+                                01560   ,SET UP PRINTER COUNTER AND POINTER\r
+\r
+        000127' 201060  000000* 01580   LPTSET:   MOVEI TAC,@LPTADR     ;LPTPTR:=-(WORD COUNT+1), BUFFER ADDRES\r
+        000130' 210101  000001  01590             MOVN TAC1,1(TAC)\r
+        000131' 504040  000002  01600             HRL TAC,TAC1\r
+        000132' 343040  000134' 01610             AOJLE TAC,.+2         ;C(LPTPTR0-17)<0?\r
+        000133' 561040  000135' 01620             HRROI TAC,LPTNUL-1\r
+        000134' 202040  000106* 01630             MOVEM TAC,LPTPTR\r
+        000135' 263140  000000  01640             POPJ PDP,             ;RETURN\r
+\r
+        000136' 000000  000000  01660   LPTNUL:   0\r
+\r
+                                01680             END,\r
+        000137' 000000  100001\r
+        000140' 064240  000000\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 000141\r
+\r
+8K CORE USED\r
+\r\fLPTSER - LINE PRINTER SERVICE ROUTINE                 PAGE 7\r
+        SYMBOL TABLE\r
+\r
+                000236  \r
+A               000000  INT\r
+AC1             000015  INT\r
+AC2             000016  INT\r
+AC3             000017  INT\r
+ADVBFE          000061' EXT\r
+AL              000001  INT\r
+ASSCON          400000  INT\r
+ASSPRG          200000  INT\r
+B               000014  INT\r
+BUFPNT          000012  INT\r
+BUFWRD          000013  INT\r
+CLOSB           002000  INT\r
+CLSIN           000002  INT\r
+CLSOUT          000001  INT\r
+D               000017  INT\r
+DAT             000005  INT\r
+DCL             000001  INT\r
+DCW             020000  INT\r
+DDI             000007  INT\r
+DDO             000006  INT\r
+DDTMEM          000037  INT\r
+DDTSYM          000036  INT\r
+DEN             000004  INT\r
+DEVADR          000007  INT\r
+DEVBUF          000006  INT\r
+DEVCHR          000001  INT\r
+DEVCTR          000011  INT\r
+DEVDAT          000006  INT\r
+DEVIAD          000007  INT\r
+DEVIOS          000002  INT\r
+DEVLOG          000005  INT\r
+DEVMOD          000004  INT\r
+DEVNAM          000000  INT\r
+DEVOAD          000010  INT\r
+DEVPTR          000010  INT\r
+DEVSER          000003  INT\r
+DGF             000012  INT\r
+DIN             000003  INT\r
+DLK             000005  INT\r
+DOU             000002  INT\r
+DR              000016  INT\r
+DRL             000000  INT\r
+DSI             000011  INT\r
+DSO             000010  INT\r
+DTW             040000  INT\r
+DVAVAL          000040  INT\r
+DVCDR           100000  INT\r
+DVDIR           000004  INT\r
+DVDIRI          400000  INT\r
+DVIN            000002  INT\r
+DVLPT           040000  INT\r
+DVMTA           000020  INT\r
+\r\fLPTSER - LINE PRINTER SERVICE ROUTINE                 PAGE 7-1\r
+        SYMBOL TABLE\r
+\r
+DVOUT           000001  INT\r
+DVTTY           000010  INT\r
+ENTRB           020000  INT\r
+I               000010  INT\r
+IB              000013  INT\r
+IBUFB           200000  INT\r
+ILLINP          000003' EXT\r
+INITB           400000  INT\r
+INPB            010000  INT\r
+IO              000020  INT\r
+IOACT           010000  INT\r
+IOBEG           000002  INT\r
+IOBKTL          040000  INT\r
+IOCON           000040  INT\r
+IODEND          020000  INT\r
+IODERR          200000  INT\r
+IODISC          400000  INT\r
+IODONE          400000  INT\r
+IODTER          100000  INT\r
+IOEND           000040  INT\r
+IOFST           000004  INT\r
+IOIMPM          400000  INT\r
+IONRCK          000100  INT\r
+IORDEL          000100  INT\r
+IORET           000020  INT\r
+IOS             000000  INT\r
+IOSET           000055' EXT\r
+IOSTRT          000010  INT\r
+IOUSE           400000  INT\r
+IOW             000001  INT\r
+IOWC            000020  INT\r
+IOWS            400000  INT\r
+ITEM            000004  INT\r
+JBFADR          000000  INT\r
+JBFCTR          000002  INT\r
+JBFPTR          000001  INT\r
+JBUF            000005  INT\r
+JDAT            000011  INT\r
+JERR            002000  INT\r
+JIOW            100000  INT\r
+JNA             004000  INT\r
+LOOKB           040000  INT\r
+LPT             000124  SPD\r
+LPTADR          000127' EXT\r
+LPTADV          100000  \r
+LPTBEG          000024' \r
+LPTBG           000077' \r
+LPTBG1          000030' \r
+LPTBUF          000000  EXT\r
+LPTCHB          000121' EXT\r
+LPTCHL          000052' EXT\r
+LPTCHN          000000  EXT\r
+LPTCHR          000000  EXT\r
+\r\fLPTSER - LINE PRINTER SERVICE ROUTINE                 PAGE 7-2\r
+        SYMBOL TABLE\r
+\r
+LPTCLB          000113' EXT\r
+LPTCLR          002000  \r
+LPTCLS          000007' \r
+LPTDAT          000054' EXT\r
+LPTDON          000100  \r
+LPTDSC          000053' \r
+LPTDSP          000000' ENT\r
+LPTER1          000111' \r
+LPTER2          000117' \r
+LPTERA          000115' \r
+LPTERI          000102' \r
+LPTERR          000400  \r
+LPTERX          000051' \r
+LPTIN1          000041' \r
+LPTINI          000004' INT\r
+LPTINT          000034' INT\r
+LPTINX          000067' \r
+LPTIOS          000071' EXT\r
+LPTLOV          001000  \r
+LPTMOD          000000  EXT\r
+LPTNUL          000136' \r
+LPTOFF          000073' \r
+LPTOUT          000013' \r
+LPTPTR          000134' EXT\r
+LPTRET          000072' EXT\r
+LPTSAV          000053' EXT\r
+LPTSER          000000  EXT\r
+LPTSET          000127' \r
+LPTSV1          000124' EXT\r
+LPTTOP          000126' \r
+LPTXIT          000071' \r
+MTW             010000  INT\r
+OBUFB           100000  INT\r
+OUT             000007' EXT\r
+OUTPB           004000  INT\r
+PDP             000003  INT\r
+PICHN           000100  INT\r
+PROG            000007  INT\r
+RUN             200000  INT\r
+RUNABL          204000  INT\r
+SETIOD          000070' EXT\r
+TAC             000001  INT\r
+TAC1            000002  INT\r
+TEM             000010  INT\r
+TTYATC          020000  INT\r
+TTYUSE          010000  INT\r
+USRMOD          010000  INT\r
+UUO             000014  INT\r
+WAIT1           000010' EXT\r
+\fMMM         MMM      TTTTTTTTTTTTTTT      PPPPPPPPPPPP            SSSSSSSSSSSS      EEEEEEEEEEEEEEE      RRRRRRRRRRRR   \r
+MMM         MMM      TTTTTTTTTTTTTTT      PPPPPPPPPPPP            SSSSSSSSSSSS      EEEEEEEEEEEEEEE      RRRRRRRRRRRR   \r
+MMM         MMM      TTTTTTTTTTTTTTT      PPPPPPPPPPPP            SSSSSSSSSSSS      EEEEEEEEEEEEEEE      RRRRRRRRRRRR   \r
+MMMMMM   MMMMMM            TTT            PPP         PPP      SSS                  EEE                  RRR         RRR\r
+MMMMMM   MMMMMM            TTT            PPP         PPP      SSS                  EEE                  RRR         RRR\r
+MMMMMM   MMMMMM            TTT            PPP         PPP      SSS                  EEE                  RRR         RRR\r
+MMM   MMM   MMM            TTT            PPP         PPP      SSS                  EEE                  RRR         RRR\r
+MMM   MMM   MMM            TTT            PPP         PPP      SSS                  EEE                  RRR         RRR\r
+MMM   MMM   MMM            TTT            PPP         PPP      SSS                  EEE                  RRR         RRR\r
+MMM         MMM            TTT            PPPPPPPPPPPP            SSSSSSSSS         EEEEEEEEEEEE         RRRRRRRRRRRR   \r
+MMM         MMM            TTT            PPPPPPPPPPPP            SSSSSSSSS         EEEEEEEEEEEE         RRRRRRRRRRRR   \r
+MMM         MMM            TTT            PPPPPPPPPPPP            SSSSSSSSS         EEEEEEEEEEEE         RRRRRRRRRRRR   \r
+MMM         MMM            TTT            PPP                              SSS      EEE                  RRR   RRR      \r
+MMM         MMM            TTT            PPP                              SSS      EEE                  RRR   RRR      \r
+MMM         MMM            TTT            PPP                              SSS      EEE                  RRR   RRR      \r
+MMM         MMM            TTT            PPP                              SSS      EEE                  RRR      RRR   \r
+MMM         MMM            TTT            PPP                              SSS      EEE                  RRR      RRR   \r
+MMM         MMM            TTT            PPP                              SSS      EEE                  RRR      RRR   \r
+MMM         MMM            TTT            PPP                  SSSSSSSSSSSS         EEEEEEEEEEEEEEE      RRR         RRR\r
+MMM         MMM            TTT            PPP                  SSSSSSSSSSSS         EEEEEEEEEEEEEEE      RRR         RRR\r
+MMM         MMM            TTT            PPP                  SSSSSSSSSSSS         EEEEEEEEEEEEEEE      RRR         RRR\r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  11:23:08\r
+File: DSKB1 :MTPSER.LST   [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:22
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:2344 \r
+File will be deleted after printing\r
+\f\rMTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES                 PAGE 1\r
+        L. HANTMAN 8-9-65\r
+\r
+                                00010           XLIST\r
+                                01930          LIST\r
+\r\fMTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES                 PAGE 7\r
+        L. HANTMAN 8-9-65\r
+\r
+\r
+                                00010             TITLE MTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES\r
+                                00020             SUBTTL L. HANTMAN 8-9-65\r
+                        000004  00030             T=ITEM\r
+                                00040   ; MAG TAPE SERVICE SUBROUTINES\r
+\r
+        000000' 260140  000000* 00060   MTAPE1:   PUSHJ PDP,WAIT1\r
+        000001' 551000  776000  00070             HRRZI IOS,776000\r
+        000002' 413006  000002  00080             ANDCAB IOS,DEVIOS(DEVDAT)\r
+        000003' 201214  000000  00090             MOVEI T,(UUO)\r
+        000004' 260140  000007' 00100             PUSHJ PDP,MTAPE+1\r
+        000005' 254000  000000* 00110             JRST UXIT\r
+\r
+        000006' 260140  000000* 00130   MTAPE:    PUSHJ PDP,WAIT1\r
+        000007' 621000  010000  00140             TLZ IOS,IODT\r
+        000010' 660000  010000  00150             TRO IOS, IOACT                ;SET ACTIVE\r
+        000011' 260140  000063' 00160             PUSHJ PDP,MTCHK2              ;CHECK IF MAG TAPE CONTROL AV\r
+        000012' 242200  000010  00170             LSH T,^D8 ;MOVE TO FUNCTION\r
+        000013' 405200  007400  00180             ANDI T,7400           ;MODE BITS\r
+        000014' 306200  004000  00190             CAIN T,4000           ;LOGICAL EOT?\r
+        000015' 254000  000436' 00200             JRST MTLEOT\r
+        000016' 302200  000400  00210             CAIE T,400            ;RWD?\r
+        000017' 254000  000022' 00220             JRST .+3\r
+        000020' 722700  004000  00230             CONSZ 224,4000        ;AT LOAD POINT?\r
+        000021' 254000  000520' 00240             JRST MTDMP4\r
+        000022' 201040  000001  00250             MOVEI TAC, TCF                ;LOOK FOR TAPE CONTROL FREE 0\r
+        000023' 542040  000044' 00260   MTGO1:    HRRM TAC, MTCONO\r
+        000024' 542040  000211' 00270             HRRM TAC, MTCINT\r
+        000025' 135040  000000* 00280   MTGO1A:   LDB TAC,PUNIT         ;UNIT\r
+        000026' 137040  000537' 00290             DPB TAC,[POINT 3,T,31]        ;UNIT\r
+        000027' 135040  000540' 00300             LDB TAC, [POINT 3, IOS,28]    ;DENSITY PARITY\r
+        000030' 431040  000005  00310             XORI TAC, 5                   ;ODD, 556\r
+        000031' 137040  000541' 00320             DPB TAC,[POINT 3,T,23]\r
+        000032' 201044  000000* 00330             MOVEI TAC,MTCCHN(T) ;CHANNEL\r
+\r
+        000033' 722600  000000  00350   MTGO:     CONO 224, 0                   ;DISABLE ALL INTERRUPTS\r
+        000034' 660040  000200  00360             TRO TAC, 200                  ;INHIBIT RETURN TO POOL\r
+        000035' 722201  000000  00370             CONO 220,(TAC)                ;COMMAND\r
+        000036' 402000  000534' 00380             SETZM MTEOFF#                 ;CLEAR EOF FLAG\r
+        000037' 542300  000533' 00390             HRRM DEVDAT,MTDEV#    ;COMMAND, DVDB\r
+        000040' 506040  000533' 00400             HRLM TAC,MTDEV\r
+        000041' 603000  010000  00410             TLNE IOS,IODT\r
+        000042' 700600  002100  00420             CONO PI,2000+DCB\r
+        000043' 201040  000225' 00430             MOVEI TAC,MTPDUN\r
+        000044' 722600  000005  00440   MTCONO:   CONO 224,TCF+ERF              ;ENABLE FLAGS\r
+        000045' 263140  000000  00450             POPJ PDP,\r
+\r
+                                00470   ;READ\r
+        000046' 621000  000020  00480   MTIN:     TLZ IOS, IO                   ;READING\r
+        000047' 260140  000056' 00490             PUSHJ PDP,MTCHEK              ;IS SYSTEM AVAILABLE?\r
+        000050' 460066  000007  00500             SETCM TAC,@DEVIAD(DEVDAT)     ;-SIZE-1\r
+        000051' 541066  000007  00510   MTIN1:    HRRI TAC,@DEVIAD(DEVDAT)      ;BUFFER ADDRESS, PROG INCLUDE\r
+        000052' 270040  000542' 00520             ADD TAC,[XWD 2,1]             ;-SIZE+1,BUFFER+1\r
+\r\fMTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES                 PAGE 1\r
+        L. HANTMAN 8-9-65\r
+\r
+        000053' 201200  002400  00530             MOVEI T,2400          ;READ\r
+        000054' 200100  000543' 00540   MTIN2:    MOVE TAC1,[BLKI DC,4000+DCN+MTDC*10]\r
+        000055' 254000  000132' 00550             JRST MTINDC\r
+\r\fMTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES                 PAGE 2\r
+        L. HANTMAN 8-9-65\r
+\r
+\r
+                                00580   ;IS SYSTEM AVAILABLE\r
+        000056' 660000  010000  00590   MTCHEK:   TRO IOS, IOACT                ;SET ACTIVE\r
+        000057' 661000  010000  00600             TLO IOS, IODT                 ;SET FOR DATA TRANSFER\r
+        000060' 202006  000002  00610             MOVEM IOS, DEVIOS(DEVDAT)\r
+        000061' 352000  000000* 00620   MTCHK1:   AOSE DCREQ\r
+        000062' 260140  000000* 00630             PUSHJ PDP,DCWAIT\r
+        000063' 621000  004002  00640   MTCHK2:   TLZ IOS, IOSEOF+IOBEG                 ;CLEAR SPACE TO EOF\r
+        000064' 202006  000002  00650             MOVEM IOS, DEVIOS(DEVDAT)             ;STORE BITS\r
+        000065' 352000  000000* 00660             AOSE MTREQ\r
+        000066' 260140  000000* 00670             PUSHJ PDP,MTWAIT\r
+        000067' 256000  000025' 00680             XCT MTGO1A                    ;UNIT\r
+        000070' 241040  000004  00690             ROT TAC, 4                    ;PUT IN UNIT POSITION\r
+        000071' 722201  000200  00700             CONO 220, 200(TAC)    ;HAS UNIT ONLY\r
+        000072' 722600  000002  00710             CONO 224, SEL                 ;JAM UNIT INTO COMMAND BUFFER\r
+        000073' 722700  000002  00720             CONSZ 224, SEL                ;UNIT NOT READY?\r
+        000074' 263140  000000  00730             POPJ PDP, 0                   ;EXIT\r
+        000075' 241040  777774  00740             ROT TAC, -4                   ;UNIT IN TAC\r
+        000076' 542301  000426' 00750             HRRM DEVDAT, MTSTAK(TAC)      ;PUT IN STACK\r
+        000077' 200100  000544' 00760             MOVE TAC1, [XWD MTCLOK,^D32]  ;HALF SECOND\r
+        000100' 137040  000545' 00770             DPB TAC, [POINT 3,TAC1,23]    ;STORE UNIT NUMBER\r
+        000101' 506101  000426' 00780             HRLM TAC1, MTSTAK(TAC)        ;SAVE ACTUAL CLOCK REQUEST\r
+        000102' 700600  000400  00790             CONO PI, 400                  ;TURN OFF PI\r
+        000103' 136100  000000* 00800             IDPB TAC1, CLOCK              ;REQUEST CLOCK RETURN TO MTCL\r
+        000104' 700600  000200  00810             CONO PI, 200                  ;TURN PI ON\r
+        000105' 371000  000065* 00820             SOSL MTREQ            ;DECREMENT REQUEST COUNT, ANYONE LEFT W\r
+        000106' 476000  000000* 00830             SETOM MTAVAL                  ;YES,SET MAG TAPE AVAL\r
+        000107' 607000  010000  00840             TLNN IOS, IODT                ;NON-DATA TRANSFER?\r
+        000110' 254000  000113' 00850             JRST MTCHK3           ;YES\r
+        000111' 371000  000061* 00860             SOSL DCREQ            ;NO,DECREMENT REQUEST COUNT,ANYONE LEFT\r
+        000112' 476000  000000* 00870             SETOM DCAVAL                  ;YES,SET DATA CONTROL AVAILAB\r
+        000113' 260140  000000* 00880   MTCHK3:   PUSHJ PDP, WSYNC              ;REQUEST WAIT\r
+        000114' 200006  000002  00890             MOVE IOS, DEVIOS(DEVDAT)      ;LOAD STATUS\r
+        000115' 607000  010000  00900             TLNN IOS, IODT                ;DATA TRANFER?\r
+        000116' 254000  000065' 00910             JRST MTCHK2+2                 ;CHECK FOR MT AVAILABLE ONLY\r
+        000117' 254000  000061' 00920             JRST MTCHK1                   ;CHECK FOR MT AND DC AVAIALABL\r
+\r\fMTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES                 PAGE 3\r
+        L. HANTMAN 8-9-65\r
+\r
+\r
+                                00950   ;WRITE\r
+        000120' 661000  000020  00960   MTOUT:    TLO IOS, IO                   ;WRITING\r
+        000121' 260140  000056' 00970             PUSHJ PDP,MTCHEK\r
+        000122' 722700  000200  00980             CONSZ 224,200         ;IS FILE PROTECT RING IN?\r
+        000123' 254000  000145' 00990             JRST MTOUTE           ;NO, ERROR CANT WRITE. CROCK!!\r
+        000124' 201066  000010  01000   MTOUT1:   MOVEI TAC,@DEVOAD(DEVDAT)     ;BUFFER ADDRESS, PROG INCLUDE\r
+        000125' 210101  000001  01010             MOVN TAC1,1(TAC)      ;-WD COUNT\r
+        000126' 504040  000002  01020             HRL TAC,TAC1          ;-WD CMT,BUFFER\r
+        000127' 347040  000274' 01030             AOJG TAC,MTNOTI       ;BUFFER+1, TEST FOR ZERO WORD COUNT\r
+        000130' 200040  000546' 01040   MTOUT2:   MOVE TAC,[BLKO DC,3400+DCN+MTDC*10]\r
+        000131' 201200  001000  01050             MOVEI T,1000          ;WRITE\r
+        000132' 202040  000532' 01060   MTINDC:   MOVEM TAC,MTDCCN#             ;BLKO POINTER\r
+        000133' 202040  000527' 01070             MOVEM TAC,DCWRD#\r
+        000134' 552100  000530' 01080             HRRZM TAC1, MDCSAV#           ;SAVE DC COMMAND\r
+        000135' 541100  000527' 01090             HRRI TAC1,DCWRD\r
+        000136' 202100  000042  01100             MOVEM TAC1,40+<2*DCN>         ;BLK COMMAND\r
+        000137' 200100  000547' 01110             MOVE TAC1,[JSR MTDCND]\r
+        000140' 202100  000043  01120             MOVEM TAC1,41+<2*DCN>\r
+        000141' 700600  001100  01130             CONO PI,1100\r
+        000142' 720220  000530' 01140             CONO DC, @MDCSAV              ;DATA CONTROL COMMAND\r
+        000143' 201040  000004  01150             MOVEI TAC, ERF\r
+        000144' 254000  000023' 01160             JRST MTGO1\r
+\r
+        000145' 660000  200000  01180   MTOUTE:   TRO IOS,IODERR        ;WRITE LOCK, DEVICE ERROR\r
+        000146' 260140  000247' 01190             PUSHJ PDP,MTEND1\r
+        000147' 254000  000005* 01200             JRST UXIT\r
+\r
+        000150' 135040  000000* 01220   MTCLS:    LDB TAC,PIOMOD        ;MODE\r
+        000151' 307040  000016  01230             CAIG TAC, 16                  ;DUMP MODE\r
+        000152' 254000  000157' 01240             JRST MTCLS1                   ;CLOSE OUTPUT\r
+        000153' 603000  000020  01250             TLNE IOS,IO                   ;INPUT?\r
+        000154' 254000  000160' 01260             JRST MTCLS1+1                 ;WRITE EOFS\r
+        000155' 201200  000016  01270             MOVEI T,16            ;SPACE TO EOF\r
+        000156' 254000  000006' 01280             JRST MTAPE                    ;GOES BACK TO UUO LEVEL\r
+        000157' 260140  000000* 01290   MTCLS1:   PUSHJ PDP,OUT\r
+        000160' 201200  000003  01300             MOVEI T,3  ;WRITE IOF\r
+        000161' 260140  000006' 01310             PUSHJ PDP, MTAPE\r
+        000162' 201200  000003  01320             MOVEI T,3  ;WRITE EOF\r
+        000163' 260140  000006' 01330             PUSHJ PDP, MTAPE\r
+        000164' 201200  000007  01340             MOVEI T,7  ;BSP\r
+        000165' 254000  000006' 01350             JRST MTAPE\r
+        000166' 263140  000000  01360   MTDISP:   POPJ PDP,                     ;RELEASE\r
+        000167' 254000  000150' 01370             JRST MTCLS                    ;CLOSE\r
+        000170' 254000  000120' 01380             JRST MTOUT                    ;WRITE\r
+        000171' 254000  000046' 01390             JRST MTIN                     ;READ\r
+        000172' 254000  000000* 01400             JRST CUXIT1           ;ENTER IN DIRECTORY\r
+        000173' 254000  000172* 01410             JRST CUXIT1           ;LOOKUP IN DIRECTORY\r
+        000174' 254000  000455' 01420             JRST MTDMPO                   ;DUMP OUT\r
+        000175' 254000  000505' 01430             JRST MTDMPI                   ;DUMP IN\r
+        000176' 254000  000147* 01440             JRST UXIT                     ;SETO\r
+        000177' 254000  000176* 01450             JRST UXIT                     ;SETI\r
+        000200' 254000  000177* 01460             JRST UXIT                     ;GETF\r
+\r\fMTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES                 PAGE 3-1\r
+        L. HANTMAN 8-9-65\r
+\r
+\r
+        000201' 210040  000454' 01480   MTCINI:   MOVN TAC, MTREDO              ;REPEAT COUNTER\r
+        000202' 572040  000535' 01490             HRREM TAC, MTERCN             ;RESET ERROR CNTR\r
+        000203' 722600  000000  01500             CONO 224,0                    ;CLEAR ENABLES\r
+        000204' 513000  000211' 01510             HLLZS MTCINT                  ;CLEAR CONSO\r
+        000205' 263140  000000  01520             POPJ PDP,\r
+\r
+\r\fMTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES                 PAGE 4\r
+        L. HANTMAN 8-9-65\r
+\r
+\r
+\r
+\r
+                                01580   ;BLK COUNTED OUT\r
+\r
+        000206' 000000  000000  01600   MTDCND:   0\r
+        000207' 700600  001100  01610             CONO PI,DCB+1000              ;SHUT OF DC CHANNEL\r
+        000210' 254520  000206' 01620             JEN @MTDCND\r
+\r\fMTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES                 PAGE 5\r
+        L. HANTMAN 8-9-65\r
+\r
+\r
+\r
+                                01660   ;FLAG FROM TAPE CONTROL.  SET UP BY INSERT MACRO\r
+        000211' 722740  000005  01670   MTCINT:   CONSO 224,TCF+ERF\r
+        000212' 254000  000212' 01680             JRST .\r
+        000213' 264000  000000* 01690             JSR MTCSAV                    ;SAVE ACS\r
+        000214' 550300  000533' 01700             HRRZ DEVDAT,MTDEV             ;DVBD\r
+        000215' 135340  000000* 01710             LDB PROG,PJOBN;               JOB NUMBER\r
+        000216' 550347  000000* 01720             HRRZ PROG, JBTADR(PROG)\r
+        000217' 200006  000002  01730             MOVE IOS, DEVIOS(DEVDAT)\r
+        000220' 722740  000001  01740             CONSO 224,TCF                 ;TAPE CONTROL FREE\r
+        000221' 254000  000324' 01750             JRST MTEOR\r
+        000222' 254000  000225' 01760   MTIDSP:   JRST MTPDUN                   ;POINTS TO MTERR FOR ERROR\r
+        000223' 254000  000356' 01770             JRST MTBSP                    ;AFTER BACKSPACE\r
+        000224' 254000  000336' 01780             JRST MTERR                    ;IF ERROR FOUND\r
+        000225' 607000  010000  01790   MTPDUN:   TLNN IOS,IODT\r
+        000226' 254000  000313' 01800             JRST MTNIO2\r
+        000227' 135040  000150* 01810             LDB TAC,PIOMOD\r
+        000230' 301040  000016  01820             CAIL TAC,16\r
+        000231' 254000  000247' 01830             JRST MTEND1                   ;DUMP\r
+        000232' 603000  000020  01840             TLNE IOS,IO\r
+        000233' 254000  000274' 01850             JRST MTNOTI                   ;WRITING\r
+        000234' 332000  000534' 01860             SKIPE MTEOFF                  ;NOT EOF?\r
+        000235' 254000  000322' 01870             JRST MTEOF\r
+        000236' 201066  000007  01880   MTINDN:   MOVEI TAC,@DEVIAD(DEVDAT)     ;BUFFER ADDRESS\r
+        000237' 210100  000532' 01890             MOVN TAC1,MTDCCN              ;WD CNT-1\r
+        000240' 253100  000241' 01900             AOBJN TAC1, .+1               ;WD CNT\r
+        000241' 513000  000002  01910             HLLZS TAC1                    ;CLR RT HALF\r
+        000242' 270100  000527' 01920             ADD TAC1,DCWRD                ;ADD CURRENT COUNT=NO. OF WDS\r
+        000243' 546101  000001  01930             HLRM TAC1,1(TAC)              ;STORE AT WORD COUNT\r
+        000244' 260140  000000* 01940             PUSHJ PDP,ADVBFF\r
+        000245' 254000  000247' 01950             JRST .+2  ;NEXT BUFFER FULL\r
+        000246' 254000  000276' 01960             JRST MTCON                            ;CONTINUE MODE\r
+        000247' 720200  000000  01970   MTEND1:   CONO DC, 0                    ;TURN OFF DATA CONTROL\r
+        000250' 371000  000111* 01980             SOSL DCREQ            ;DECREMENT REQUEST COUNT, ANYONE LEFT?\r
+        000251' 476000  000112* 01990             SETOM DCAVAL                  ;YES, SET FLAG FOR CLOCK\r
+        000252' 371000  000105* 02000   MTNIO:    SOSL MTREQ\r
+        000253' 476000  000106* 02010             SETOM MTAVAL                  ;YES, SET FLAG FOR CLOCK\r
+        000254' 722700  010000  02020             CONSZ 224,10000               ;END OF TAPE?\r
+        000255' 660000  002000  02030             TRO IOS, IOTEND               ;SET END OF TAPE INDICATION\r
+        000256' 620000  004000  02040             TRZ IOS, IOBOT                ;CLR LOAD POINT INDICATION\r
+        000257' 722700  004000  02050             CONSZ 224, 4000               ;LOAD POINT?\r
+        000260' 660000  004000  02060             TRO IOS, IOBOT                ;SET LOAD POINT INDICATION\r
+        000261' 722700  020000  02070             CONSZ 224, 20000              ;TAPE REWINDING?\r
+        000262' 660000  004000  02080             TRO IOS, IOBOT                ;SET LOAD POINT INDICATION\r
+        000263' 623000  000001  02090             TLZE IOS, IOW                 ;CLEAR WAIT\r
+        000264' 260140  000000* 02100             PUSHJ PDP, SETIOD             ;REQUEST WAIT SATISFIED\r
+        000265' 620000  010000  02110             TRZ IOS, IOACT                ;CLEAR ACTIVE\r
+        000266' 202006  000002  02120             MOVEM IOS, DEVIOS(DEVDAT)     ;RESTORE BITS\r
+        000267' 722600  000000  02130             CONO 224,0                    ;CLEAR MAG TAPE ENABLES\r
+        000270' 513000  000211' 02140             HLLZS MTCINT                  ;CLEAR CONSO\r
+        000271' 210040  000454' 02150             MOVN TAC, MTREDO              ;REPEAT COUNTER\r
+        000272' 572040  000535' 02160             HRREM TAC, MTERCN#\r
+\r\fMTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES                 PAGE 5-1\r
+        L. HANTMAN 8-9-65\r
+\r
+        000273' 263140  000000  02170             POPJ PDP,             ;DISMISS INTERRUPT OR RETURN TO CALLER\r
+\r\fMTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES                 PAGE 6\r
+        L. HANTMAN 8-9-65\r
+\r
+\r
+        000274' 260140  000000* 02200   MTNOTI:   PUSHJ PDP,ADVBFE              ;WRITING\r
+        000275' 254000  000247' 02210             JRST MTEND1\r
+        000276' 602000  000040  02220   MTCON:    TRNE IOS,IOCON                ;CONTINUOUS?\r
+        000277' 254000  000247' 02230             JRST MTEND1                   ;STOP TAPE\r
+        000300' 722700  010000  02240             CONSZ 224,10000               ;END OF TAPE?\r
+        000301' 254000  000247' 02250             JRST MTEND1                   ;STOP TAPE\r
+        000302' 720200  000000  02260             CONO DC,0             ;CLEAR DATA CONTROL\r
+        000303' 623000  000001  02270             TLZE IOS,IOW\r
+        000304' 260140  000264* 02280             PUSHJ PDP,SETIOD\r
+        000305' 202006  000002  02290             MOVEM IOS,DEVIOS(DEVDAT)\r
+        000306' 210040  000454' 02300             MOVN TAC,MTREDO\r
+        000307' 572040  000535' 02310             HRREM TAC,MTERCN\r
+        000310' 607000  000020  02320             TLNN IOS,IO           ;INPUT OR OUTPUT?\r
+        000311' 254000  000051' 02330             JRST MTIN1            ;CALL INPUT SUBROUTINE\r
+        000312' 254000  000124' 02340             JRST MTOUT1           ;CALL OUTPUT SUBROUTINE\r
+        000313' 554040  000533' 02350   MTNIO2:   HLRZ TAC,MTDEV                ;COMMAND\r
+        000314' 405040  007400  02360             ANDI TAC,7400\r
+        000315' 302040  003000  02370             CAIE TAC, 3000                ;SPACE ONE RECORD\r
+        000316' 254000  000252' 02380             JRST MTNIO                    ;EXIT\r
+        000317' 722700  000400  02390             CONSZ 224, 400                ;EOF?\r
+        000320' 661000  004000  02400             TLO IOS, IOSEOF               ;SET EOF DETECTED\r
+        000321' 254000  000252' 02410             JRST MTNIO                    ;EXIT\r
+        000322' 661000  000040  02420   MTEOF:    TLO IOS, IOEND\r
+        000323' 254000  000247' 02430             JRST MTEND1\r
+        000324' 722700  000030  02440   MTEOR:    CONSZ 224,LPE+CPE             ;IF END OF RECORD CHECK PARIT\r
+        000325' 370000  000222' 02450             SOS MTIDSP                    ;IF ERROR CAUSE INTERRUPT TO\r
+                                02460                                           ;ERROR ROUTIE VIA TCF\r
+        000326' 722700  000400  02470             CONSZ 224, 400                ;EOF?\r
+        000327' 476000  000534' 02480             SETOM MTEOFF                  ;SET EOF FLAG\r
+        000330' 722600  000001  02490   MTIGN:    CONO 224, TCF                 ;IF ERF, CAUSE INTERRUPT TO D\r
+                                02500                                           ;PATCH TABLE, DISABLE ERF FLA\r
+        000331' 202040  000206' 02510             MOVEM TAC, MTDCND             ;SAVE TAC\r
+        000332' 201040  000001  02520             MOVEI TAC, TCF                ;LOOK FOR TCF ONLY\r
+        000333' 542040  000211' 02530             HRRM TAC, MTCINT              ;SET CONSO\r
+        000334' 200040  000206' 02540             MOVE TAC,MTDCND               ;RESTORE TAC\r
+        000335' 254000  000000* 02550             JRST MTCRET                   ;DISMISS AND RETURN VIA TCF\r
+\r\fMTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES                 PAGE 7\r
+        L. HANTMAN 8-9-65\r
+\r
+\r
+        000336' 554040  000533' 02580   MTERR:    HLRZ TAC,MTDEV                ;COMMAND\r
+        000337' 405040  007400  02590             ANDI TAC,7400\r
+        000340' 306040  002400  02600             CAIN TAC,2400                 ;READ?\r
+        000341' 254000  000344' 02610             JRST .+3\r
+        000342' 306040  001000  02620             CAIN TAC,1000                 ;WRITE\r
+        000343' 254000  000402' 02630             JRST MTIGN2                   ;IGNORE IF NOT RD OR WRITE\r
+        000344' 606000  000100  02640             TRNN IOS, IONRCK              ;RE-DO?\r
+        000345' 351000  000535' 02650             AOSL MTERCN                   ;THIRD ERROR?\r
+        000346' 254000  000354' 02660             JRST MTERR2                   ;TRIPLE ERROR\r
+        000347' 554040  000533' 02670             HLRZ TAC,MTDEV                ;COMMAND\r
+        000350' 405040  770377  02680             ANDI TAC,770377\r
+        000351' 722201  003400  02690             CONO 220,3400(TAC)    ;BSP\r
+        000352' 370000  000222' 02700             SOS MTIDSP\r
+        000353' 254000  000330' 02710             JRST MTIGN\r
+\r
+        000354' 660000  200000  02730   MTERR2:   TRO IOS, IODERR               ;DEVICE ERROR\r
+        000355' 254000  000225' 02740             JRST MTPDUN\r
+\r
+        000356' 200040  000532' 02760   MTBSP:    MOVE TAC,MTDCCN               ;POINTER\r
+        000357' 202040  000527' 02770             MOVEM TAC,DCWRD               ;RESET POINTER WORD\r
+        000360' 720240  000001  02780             CONI DC,TAC                   ;SAVE IN/OUT, PACK MD. DEV NU\r
+                                02790                                           ;PRIORITY\r
+        000361' 405040  000777  02800             ANDI TAC,777\r
+        000362' 271040  003000  02810             ADDI TAC,3000                 ;MAKE WRITE\r
+        000363' 606040  000400  02820             TRNN TAC,400                  ;WAS IT WRITING?\r
+        000364' 271040  001000  02830             ADDI TAC,1000                 ;MAKE READ\r
+        000365' 720201  000000  02840             CONO DC,(TAC)                 ;REISSUE CONO\r
+        000366' 554040  000533' 02850             HLRZ TAC,MTDEV                ;COMMAND\r
+        000367' 722740  040000  02860             CONSO 224,XNC                 ;WAIT FOR XNC\r
+        000370' 254000  000367' 02870             JRST .-1  ;SHOULD ADD A COUNT(RUNAWAY TAPE TURNED\r
+        000371' 722201  000000  02880             CONO 220,(TAC)                ;REISSUE RD OR WRITE\r
+        000372' 402000  000534' 02890             SETZM MTEOFF                  ;CLR EOF FLAG\r
+        000373' 700600  002100  02900             CONO PI,2000+DCB              ;TURN ON CHANNEL\r
+        000374' 201040  000225' 02910             MOVEI TAC,MTPDUN              ;RESET SWITCH\r
+        000375' 542040  000222' 02920             HRRM TAC,MTIDSP\r
+        000376' 201040  000004  02930             MOVEI TAC, ERF\r
+        000377' 542040  000211' 02940             HRRM TAC, MTCINT\r
+        000400' 722600  000004  02950             CONO 224, ERF\r
+        000401' 254000  000335* 02960             JRST MTCRET                   ;ENABLE PROPER FLAGS\r
+        000402' 350000  000222' 02970   MTIGN2:   AOS MTIDSP                    ;RESET DISPATCH SWITCH\r
+        000403' 254000  000330' 02980             JRST MTIGN\r
+\r
+                                03000   ;NEED TO TRY WRITING LONG RECORD GAP ON OUTPUT(ONLY) AND TRY\r
+                                03010   ;ONCE MORE AT NEW SPOT ON TAPE IF TRIPLE ERROR\r
+\r\fMTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES                 PAGE 8\r
+        L. HANTMAN 8-9-65\r
+\r
+\r
+\r
+                        040000  03050   XNC=40000               ;TRANSFER NEW COMMAND\r
+                        000002  03060   MTDC=2                  ;MAG TAPE DATA CONTROL DEVICE NO.\r
+                        000001  03070   TCF=1                   ;TAPE CONTROL FREE\r
+                        000004  03080   ERF=4                   ;END OF RECORD FLAG\r
+                        000020  03090   LPE=20                  ;LONG. PARITY ERROR\r
+                        000010  03100   CPE=10                  ;CHAR. PARITY ERROR\r
+                        000100  03110   DCB=100                 ;DATA CHANNEL NUMBER\r
+                        000001  03120   DCN=1                   ;DATA CHANNEL NUMBER\r
+                        000002  03130   SEL=2                   ;UNIT TO COMMAND BUFFER\r
+                        004000  03140   IOSEOF=4000             ;SPACING ONE RECORD FORWARD FOUND EOF\r
+                        002000  03150   IOTEND=2000             ;EOT INDICATION\r
+                        000100  03160   IONRCK=100              ;DO NOT RE-TRY ON ERRORS\r
+                        004000  03170   IOBOT=4000              ;TAPE AT LOAD POINT\r
+                        010000  03180   IODT=10000              ;A 1 FOR A DATA TRANFER TYPE COMMAND\r
+                                03190   EXTERNAL UXIT, ADVBFF, ADVBFE, DCREQ, DCWAIT, MTCSAV\r
+                                03200   EXTERNAL MTCRET, DCAVAL, MTAVAL, MTCCHN, MTCCHL, MTREQ\r
+                                03210   EXTERNAL MTWAIT,OUT,SETIOD,CLOCK,CUXIT1\r
+                                03220   EXTERNAL WSYNC,USRREL,WAIT1,ADRERR,PUNIT,PIOMOD,PJOBN\r
+                                03230   EXTERNAL JBTADR\r
+                                03240   ENTRY MTDISP\r
+                                03250   INTERNAL MTCINT,MTAPE1,MTCINI\r
+                                03260   ;CLOCK INTERRUPT, UNIT IN TAC\r
+        000404' 550301  000426' 03270   MTCLOK:   HRRZ DEVDAT, MTSTAK(TAC)      ;DVDB\r
+        000405' 241040  000004  03280             ROT TAC, 4                    ;PUT UNIT IN SEL BITS\r
+        000406' 722201  000200  03290             CONO 220, 200(TAC)    ;UNIT ONLY\r
+        000407' 722600  000002  03300             CONO 224, SEL                 ;SEL UNIT\r
+        000410' 722700  000002  03310             CONSZ 224, SEL                ;UNIT NOT READY?\r
+        000411' 254000  000421' 03320             JRST MTCLK2                   ;UNIT READY\r
+        000412' 241040  777774  03330             ROT TAC, -4                   ;FOR INDEXING PURPOSES\r
+        000413' 544101  000426' 03340             HLR TAC1, MTSTAK(TAC)         ;CLOCK REQUEST\r
+        000414' 505100  000404' 03350             HRLI TAC1, MTCLOK             ;GET CLOCK REQUEST\r
+        000415' 700600  000400  03360             CONO PI, 400                  ;TURN OFF PI\r
+        000416' 136100  000103* 03370             IDPB TAC1, CLOCK              ;STORE CLOCK REQUESTED\r
+        000417' 700600  000200  03380             CONO PI, 200                  ;TURN ON PI\r
+        000420' 263140  000000  03390             POPJ PDP, 0                   ;EXIT\r
+        000421' 200006  000002  03400   MTCLK2:   MOVE IOS, DEVIOS(DEVDAT)\r
+        000422' 623000  000001  03410             TLZE IOS,IOW\r
+        000423' 260140  000304* 03420             PUSHJ PDP, SETIOD\r
+        000424' 202006  000002  03430             MOVEM IOS, DEVIOS(DEVDAT)\r
+        000425' 263140  000000  03440             POPJ PDP, 0\r
+        000426'                 03450   MTSTAK:   BLOCK ^D8\r
+\r\fMTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES                 PAGE 9\r
+        L. HANTMAN 8-9-65\r
+\r
+\r
+\r
+                                03490   ;LOGICAL END OF TAPE LOOP\r
+        000436' 722700  004000  03500   MTLEOT:   CONSZ 224, 4000               ;TAPE NOT AT LOAD POINT?\r
+        000437' 254000  000442' 03510             JRST MTEOT2                   ;AVOID BACKSPACE IFAT LOAD P\r
+        000440' 201200  003400  03520             MOVEI T,3400          ;BACKSPACE\r
+        000441' 260140  000022' 03530             PUSHJ PDP, MTGO1-1\r
+        000442' 201200  000016  03540   MTEOT2:   MOVEI T,16            ;SPACE ONE FILE\r
+        000443' 260140  000006' 03550             PUSHJ PDP, MTAPE\r
+        000444' 201200  000006  03560             MOVEI T,6 ;SPACE ONE RECORD\r
+        000445' 260140  000006' 03570             PUSHJ PDP, MTAPE\r
+        000446' 260140  000006* 03580             PUSHJ PDP, WAIT1              ;WAIT UNTIL SPACING IS COMPLE\r
+        000447' 200006  000002  03590             MOVE IOS, DEVIOS(DEVDAT)\r
+        000450' 607000  004000  03600             TLNN IOS, IOSEOF              ;WAS EOF DETECTED?\r
+        000451' 254000  000442' 03610             JRST MTEOT2                   ;RESUME SPACING\r
+        000452' 201200  000007  03620             MOVEI T,7 ;BACKSPACE, LOGICAL EOF FOUND\r
+        000453' 254000  000006' 03630             JRST MTAPE                    ;RETURN BACK TO MAIN PROGRAM\r
+        000454' 000000  000012  03640   MTREDO:   12        ;NUMBER OF TIMES TO RE-EXECUTE\r
+\r\fMTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES                 PAGE 10\r
+        L. HANTMAN 8-9-65\r
+\r
+\r
+\r
+                                03680   ;DEVICE DEPENDENT DUMP MODES. MODE 16.\r
+                                03690   ;OUTPUT\r
+        000455' 661000  000020  03700   MTDMPO:   TLO IOS, IO                   ;WRITING\r
+        000456' 550200  000014  03710             HRRZ T,UUO\r
+        000457' 260140  000056' 03720             PUSHJ PDP, MTCHEK             ;IS SYSTEM AVAILABLE?\r
+        000460' 200120  000130' 03730             MOVE TAC1, @MTOUT2    ;BLK0 AND DATA CONTROL COMMAN\r
+        000461' 200040  000004  03740             MOVE TAC,T                    ;COMMAND LIST POINTER\r
+        000462' 201200  001000  03750             MOVEI T,1000          ;WRITING COMMAND\r
+        000463' 505040  000007  03760   MTDMP1:   HRLI TAC, PROG                ;ACTUAL ADDRESS OF COMMAND LI\r
+        000464' 202040  000531' 03770             MOVEM TAC, MTCMDP#    ;COMMAND POINTER\r
+        000465' 336060  000001  03780             SKIPN TAC,@TAC                ;COMMAND WORD\r
+        000466' 254000  000516' 03790             JRST MTDMP3                   ;NOTHING TO DO\r
+        000467' 325040  000463' 03800             JUMPGE TAC, MTDMP1    ;CHANGE COMMAND SEQUENCE\r
+        000470' 576040  000536' 03810             HLREM TAC, SVCNTR#    ;SAVE COUNTER\r
+        000471' 553000  000001  03820             HRRZS TAC                     ;GET ADDRESS ALONE\r
+        000472' 274040  000536' 03830             SUB TAC, SVCNTR               ;GET LAST ADDRESS\r
+        000473' 313040  000000* 03840             CAMLE TAC, USRREL             ;LESS THAN END?\r
+        000474' 254000  000514' 03850             JRST MTDMP2                   ;OUT OF BOUNDS\r
+        000475' 200060  000531' 03860             MOVE TAC, @MTCMDP             ;PICK UP POINTER AGAIN\r
+        000476' 270040  000007  03870             ADD TAC, PROG                 ;GET ACTUAL ADDRESS\r
+        000477' 260140  000132' 03880             PUSHJ PDP, MTINDC             ;MOVE TAPE\r
+        000500' 260140  000446* 03890             PUSHJ PDP,WAIT1\r
+        000501' 350200  000531' 03900             AOS T,MTCMDP          ;UPDATE COMMAND POINTER\r
+        000502' 607000  000020  03910             TLNN IOS, IO                  ;WRITING?\r
+        000503' 254000  000507' 03920             JRST MTDMPI+2                 ;READING\r
+        000504' 254000  000457' 03930             JRST MTDMPO+2                 ;WRITING\r
+                                03940   ;INPUT\r
+        000505' 621000  000020  03950   MTDMPI:   TLZ IOS, IO                   ;READING\r
+        000506' 550200  000014  03960             HRRZ T,UUO\r
+        000507' 260140  000056' 03970             PUSHJ PDP, MTCHEK             ;IS SYSTEM AVAILABLE\r
+        000510' 200120  000054' 03980             MOVE TAC1,@MTIN2              ;BLKI AND DATA CONTROL COMMAN\r
+        000511' 200040  000004  03990             MOVE TAC,T                    ;COMMAND LIST POINTER\r
+        000512' 201200  002400  04000             MOVEI T,2400          ;READ COMMAND\r
+        000513' 254000  000463' 04010             JRST MTDMP1                   ;DUMP\r
+                                04020   ;ADDRESS ERROR\r
+\r
+        000514' 260140  000516' 04040   MTDMP2:   PUSHJ PDP,MTDMP3\r
+        000515' 254000  000000* 04050             JRST ADRERR\r
+                                04060   ;CLEAR ALL USE BITS. NOTHING IN COMMAND LIST\r
+\r
+        000516' 371000  000250* 04080   MTDMP3:   SOSL DCREQ\r
+        000517' 476000  000251* 04090             SETOM DCAVAL\r
+        000520' 371000  000252* 04100   MTDMP4:   SOSL MTREQ\r
+        000521' 476000  000253* 04110             SETOM MTAVAL\r
+        000522' 620000  010000  04120             TRZ IOS,IOACT\r
+        000523' 623000  000001  04130             TLZE IOS,IOW\r
+        000524' 260140  000423* 04140             PUSHJ PDP,SETIOD\r
+        000525' 202006  000002  04150             MOVEM IOS,DEVIOS(DEVDAT)\r
+        000526' 263140  000000  04160             POPJ PDP,\r
+\r
+                                04180             END,\r
+\r\fMTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES                 PAGE 10-1\r
+        L. HANTMAN 8-9-65\r
+\r
+        000537' 040300  000004\r
+        000540' 070300  000000\r
+        000541' 140300  000004\r
+        000542' 000002  000001\r
+        000543' 720000  004021\r
+        000544' 000404' 000040\r
+        000545' 140300  000002\r
+        000546' 720100  003421\r
+        000547' 264000  000206'\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 000550\r
+\r
+8K CORE USED\r
+\r\fMTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES                 PAGE 11\r
+        SYMBOL TABLE\r
+\r
+                000322  \r
+A               000000  INT\r
+AC1             000015  INT\r
+AC2             000016  INT\r
+AC3             000017  INT\r
+ADRERR          000515' EXT\r
+ADVBFE          000274' EXT\r
+ADVBFF          000244' EXT\r
+AL              000001  INT\r
+ASSCON          400000  INT\r
+ASSPRG          200000  INT\r
+B               000014  INT\r
+BUFPNT          000012  INT\r
+BUFWRD          000013  INT\r
+CLOCK           000416' EXT\r
+CLOSB           002000  INT\r
+CLSIN           000002  INT\r
+CLSOUT          000001  INT\r
+CPE             000010  \r
+CUXIT1          000173' EXT\r
+D               000017  INT\r
+DAT             000005  INT\r
+DC              000200  SPD\r
+DCAVAL          000517' EXT\r
+DCB             000100  \r
+DCL             000001  INT\r
+DCN             000001  \r
+DCREQ           000516' EXT\r
+DCW             020000  INT\r
+DCWAIT          000062' EXT\r
+DCWRD           000527' \r
+DDI             000007  INT\r
+DDO             000006  INT\r
+DDTMEM          000037  INT\r
+DDTSYM          000036  INT\r
+DEN             000004  INT\r
+DEVADR          000007  INT\r
+DEVBUF          000006  INT\r
+DEVCHR          000001  INT\r
+DEVCTR          000011  INT\r
+DEVDAT          000006  INT\r
+DEVIAD          000007  INT\r
+DEVIOS          000002  INT\r
+DEVLOG          000005  INT\r
+DEVMOD          000004  INT\r
+DEVNAM          000000  INT\r
+DEVOAD          000010  INT\r
+DEVPTR          000010  INT\r
+DEVSER          000003  INT\r
+DGF             000012  INT\r
+DIN             000003  INT\r
+DLK             000005  INT\r
+DOU             000002  INT\r
+\r\fMTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES                 PAGE 11-1\r
+        SYMBOL TABLE\r
+\r
+DR              000016  INT\r
+DRL             000000  INT\r
+DSI             000011  INT\r
+DSO             000010  INT\r
+DTW             040000  INT\r
+DVAVAL          000040  INT\r
+DVCDR           100000  INT\r
+DVDIR           000004  INT\r
+DVDIRI          400000  INT\r
+DVIN            000002  INT\r
+DVLPT           040000  INT\r
+DVMTA           000020  INT\r
+DVOUT           000001  INT\r
+DVTTY           000010  INT\r
+ENTRB           020000  INT\r
+ERF             000004  \r
+I               000010  INT\r
+IB              000013  INT\r
+IBUFB           200000  INT\r
+INITB           400000  INT\r
+INPB            010000  INT\r
+IO              000020  INT\r
+IOACT           010000  INT\r
+IOBEG           000002  INT\r
+IOBKTL          040000  INT\r
+IOBOT           004000  \r
+IOCON           000040  INT\r
+IODEND          020000  INT\r
+IODERR          200000  INT\r
+IODISC          400000  INT\r
+IODONE          400000  INT\r
+IODT            010000  \r
+IODTER          100000  INT\r
+IOEND           000040  INT\r
+IOFST           000004  INT\r
+IOIMPM          400000  INT\r
+IONRCK          000100  INT\r
+IORDEL          000100  INT\r
+IORET           000020  INT\r
+IOS             000000  INT\r
+IOSEOF          004000  \r
+IOSTRT          000010  INT\r
+IOTEND          002000  \r
+IOUSE           400000  INT\r
+IOW             000001  INT\r
+IOWC            000020  INT\r
+IOWS            400000  INT\r
+ITEM            000004  INT\r
+JBFADR          000000  INT\r
+JBFCTR          000002  INT\r
+JBFPTR          000001  INT\r
+JBTADR          000216' EXT\r
+JBUF            000005  INT\r
+\r\fMTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES                 PAGE 11-2\r
+        SYMBOL TABLE\r
+\r
+JDAT            000011  INT\r
+JERR            002000  INT\r
+JIOW            100000  INT\r
+JNA             004000  INT\r
+LOOKB           040000  INT\r
+LPE             000020  \r
+MDCSAV          000530' \r
+MTAPE           000006' \r
+MTAPE1          000000' INT\r
+MTAVAL          000521' EXT\r
+MTBSP           000356' \r
+MTCCHL          000000  EXT\r
+MTCCHN          000032' EXT\r
+MTCHEK          000056' \r
+MTCHK1          000061' \r
+MTCHK2          000063' \r
+MTCHK3          000113' \r
+MTCINI          000201' INT\r
+MTCINT          000211' INT\r
+MTCLK2          000421' \r
+MTCLOK          000404' \r
+MTCLS           000150' \r
+MTCLS1          000157' \r
+MTCMDP          000531' \r
+MTCON           000276' \r
+MTCONO          000044' \r
+MTCRET          000401' EXT\r
+MTCSAV          000213' EXT\r
+MTDC            000002  \r
+MTDCCN          000532' \r
+MTDCND          000206' \r
+MTDEV           000533' \r
+MTDISP          000166' ENT\r
+MTDMP1          000463' \r
+MTDMP2          000514' \r
+MTDMP3          000516' \r
+MTDMP4          000520' \r
+MTDMPI          000505' \r
+MTDMPO          000455' \r
+MTEND1          000247' \r
+MTEOF           000322' \r
+MTEOFF          000534' \r
+MTEOR           000324' \r
+MTEOT2          000442' \r
+MTERCN          000535' \r
+MTERR           000336' \r
+MTERR2          000354' \r
+MTGO            000033' \r
+MTGO1           000023' \r
+MTGO1A          000025' \r
+MTIDSP          000222' \r
+MTIGN           000330' \r
+MTIGN2          000402' \r
+\r\fMTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES                 PAGE 11-3\r
+        SYMBOL TABLE\r
+\r
+MTIN            000046' \r
+MTIN1           000051' \r
+MTIN2           000054' \r
+MTINDC          000132' \r
+MTINDN          000236' \r
+MTLEOT          000436' \r
+MTNIO           000252' \r
+MTNIO2          000313' \r
+MTNOTI          000274' \r
+MTOUT           000120' \r
+MTOUT1          000124' \r
+MTOUT2          000130' \r
+MTOUTE          000145' \r
+MTPDUN          000225' \r
+MTREDO          000454' \r
+MTREQ           000520' EXT\r
+MTSTAK          000426' \r
+MTW             010000  INT\r
+MTWAIT          000066' EXT\r
+OBUFB           100000  INT\r
+OUT             000157' EXT\r
+OUTPB           004000  INT\r
+PDP             000003  INT\r
+PI              000004  SPD\r
+PICHN           000100  INT\r
+PIOMOD          000227' EXT\r
+PJOBN           000215' EXT\r
+PROG            000007  INT\r
+PUNIT           000025' EXT\r
+RUN             200000  INT\r
+RUNABL          204000  INT\r
+SEL             000002  \r
+SETIOD          000524' EXT\r
+SVCNTR          000536' \r
+T               000004  \r
+TAC             000001  INT\r
+TAC1            000002  INT\r
+TCF             000001  \r
+TEM             000010  INT\r
+TTYATC          020000  INT\r
+TTYUSE          010000  INT\r
+USRMOD          010000  INT\r
+USRREL          000473' EXT\r
+UUO             000014  INT\r
+UXIT            000200' EXT\r
+WAIT1           000500' EXT\r
+WSYNC           000113' EXT\r
+XNC             040000  \r
+\f   OOOOOOOOO         NNN         NNN         CCCCCCCCCCCC      EEEEEEEEEEEEEEE                                          \r
+   OOOOOOOOO         NNN         NNN         CCCCCCCCCCCC      EEEEEEEEEEEEEEE                                          \r
+   OOOOOOOOO         NNN         NNN         CCCCCCCCCCCC      EEEEEEEEEEEEEEE                                          \r
+OOO         OOO      NNN         NNN      CCC                  EEE                                                      \r
+OOO         OOO      NNN         NNN      CCC                  EEE                                                      \r
+OOO         OOO      NNN         NNN      CCC                  EEE                                                      \r
+OOO         OOO      NNNNNN      NNN      CCC                  EEE                                                      \r
+OOO         OOO      NNNNNN      NNN      CCC                  EEE                                                      \r
+OOO         OOO      NNNNNN      NNN      CCC                  EEE                                                      \r
+OOO         OOO      NNN   NNN   NNN      CCC                  EEEEEEEEEEEE                                             \r
+OOO         OOO      NNN   NNN   NNN      CCC                  EEEEEEEEEEEE                                             \r
+OOO         OOO      NNN   NNN   NNN      CCC                  EEEEEEEEEEEE                                             \r
+OOO         OOO      NNN      NNNNNN      CCC                  EEE                                                      \r
+OOO         OOO      NNN      NNNNNN      CCC                  EEE                                                      \r
+OOO         OOO      NNN      NNNNNN      CCC                  EEE                                                      \r
+OOO         OOO      NNN         NNN      CCC                  EEE                                                      \r
+OOO         OOO      NNN         NNN      CCC                  EEE                                                      \r
+OOO         OOO      NNN         NNN      CCC                  EEE                                                      \r
+   OOOOOOOOO         NNN         NNN         CCCCCCCCCCCC      EEEEEEEEEEEEEEE                                          \r
+   OOOOOOOOO         NNN         NNN         CCCCCCCCCCCC      EEEEEEEEEEEEEEE                                          \r
+   OOOOOOOOO         NNN         NNN         CCCCCCCCCCCC      EEEEEEEEEEEEEEE                                          \r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  11:23:08\r
+File: DSKB1 :ONCE  .LST   [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:23
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:2325 \r
+File will be deleted after printing\r
+\f\rONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE                 PAGE 1\r
+        THIS IS ONLY CODE PLACED AT THE END OF IOINIT\r
+\r
+                                00010           XLIST\r
+                                01930          LIST\r
+\r\fONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE                 PAGE 7\r
+        THIS IS ONLY CODE PLACED AT THE END OF IOINIT\r
+\r
+\r
+                                00010             TITLE ONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE\r
+                                00020             SUBTTL THIS IS ONLY CODE PLACED AT THE END OF IOINIT\r
+                                00030   ;WHICH SHOULD BE THE LAST LOADED PROGRAM BEFORE SYSMAK AND DDT\r
+                                00040   ;THUS IF IT OVERFLOWS INTO THE USER AREA NO HARM IS DONE\r
+                                00050   ;INITIALIZE PRIORITY CHANNELS AND SETUP INTERRUPT SERVICE ROUTINE CHA\r
+\r
+                                00070   XP SYSFIN,.-1           ;LAST LOC. IN SYSTEM\r
+                        010000  00080   NXM=10000 ;NON EX-MEM\r
+\r
+                                00100   INTERNAL PATCH\r
+\r
+        000000'                 00120   PATCH:    BLOCK 100 ;PATCH SPACE\r
+                                00130                       ;C(SYSSIZE) SHOULD BE UPDATED AS PATCHES ARE MADE\r
+\r
+                        000001  00150   T=TAC     ;SOME ACS\r
+                        000002  00160   C=TAC1\r
+                        000005  00170   INT=DAT   ;INTERRUPT SERVICE ENTRY POINT(USUALLY A CONSO INSTR.)\r
+                        000006  00180   CHL=DEVDAT          ;THE PLACE WHERE PC IS STORED FOR THAT CHANNEL\r
+\r
+                                00200   ;LINK TO SERVICE ROUTINES\r
+\r
+                                00220   INTERNAL LINKSR\r
+                                00230   EXTERNAL NDEVM1     ;=NDOV-1 (DEFINED IN IOINI1)\r
+                                00240   EXTERNAL DEVINT,JOBSYM\r
+\r
+        000100' 000000  000000  00260   LINKSR:   0                     ;CALLED WITH JSR FROM SYSINI\r
+                                00270                                   ;CHAIN INTERUPT SERVICE ROUTINES TOGETH\r
+        000101' 515240  254000  00280             HRLZI INT, 254000     ;FORM JRST INSTR.\r
+        000102' 201100  000000* 00290             MOVEI C, NDEVM1       ;NO. OV DEV. SERV. ROUTINES TO CHAIN\r
+        000103' 554302  000000* 00300   DEV1:     HLRZ CHL, DEVINT(C)   ;LOC. WHERE PC IS STORED\r
+        000104' 540242  000103* 00310             HRR INT, DEVINT(C)    ;INTERRUPT SERVICE ROUTINE ENTRY POINT\r
+        000105' 200046  000001  00320             MOVE T, 1(CHL)        ;INSERT THIS ROUTINE AT FRONT OF CHAIN\r
+        000106' 202045  000001  00330             MOVEM T, 1(INT)\r
+        000107' 202246  000001  00340             MOVEM INT, 1(CHL)\r
+        000110' 365100  000103' 00350             SOJGE C, DEV1\r
+\r\fONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE                 PAGE 2\r
+        THIS IS ONLY CODE PLACED AT THE END OF IOINIT\r
+\r
+\r
+\r
+                                00390   ;MOVE SYMBOL TABLE UP IN MEMORY\r
+                                00400   ;EXEC MUST BE LOADED IN 15K OR LESS IF GOING INTO 16K MACHINE\r
+\r
+        000111' 402000  000005  00420             SETZM DAT             ;FIND FIRST NON EX MEM\r
+        000112' 700200  010000  00430             CONO APR,NXM          ;CLEAR NON-EX MEM FLAG\r
+        000113' 271240  002000  00440             ADDI DAT,2000         ;TRY NEXT 1K BLOCK\r
+        000114' 200105  000000  00450             MOVE TAC1,(DAT)       ;REFERENCE THIS LOCATION\r
+        000115' 700340  010000  00460             CONSO APR,NXM         ;NON-EXISTENT?\r
+        000116' 254000  000113' 00470             JRST .-3              ;NO\r
+        000117' 275240  000001  00480             SUBI DAT,1            ;YES, HIGHEST LEGAL LOC\r
+        000120' 202240  000037  00490             MOVEM DAT,DDTMEM      ;FOR DDT\r
+        000121' 275240  000177  00500             SUBI DAT,200-1        ;MAKE ROOM FOR DECDUMP\r
+        000122' 574100  000000* 00510             HLRE TAC1,JOBSYM      ;-LENGTH OF S. T.\r
+        000123' 322100  000143' 00520             JUMPE TAC1,JRSTI1     ;0 IF NON S. T. TO MOVE UP\r
+        000124' 213000  000002  00530             MOVNS TAC1            ;+LENGTH\r
+        000125' 550040  000122* 00540             HRRZ TAC,JOBSYM       ;FIRST ADDRESS\r
+        000126' 271042  000000  00550             ADDI TAC,(TAC1)\r
+        000127' 504040  000002  00560             HRL TAC,TAC1          ;XWD LENGTH,LENGTH+FIRST ADDRESS\r
+        000130' 275241  000001  00570             SUBI DAT,1(TAC)       ;NEW LAST+1-OLD LAST+1\r
+        000131' 542240  000140' 00580             HRRM DAT,STO1         ;DIST. TO MOVE\r
+        000132' 200100  000125* 00590             MOVE TAC1,JOBSYM      ;-N,FIRST ADD.\r
+        000133' 271045  000001  00600             ADDI TAC,1(DAT)       ;FORM NEW S.T. POINTER\r
+        000134' 202100  000132* 00610             MOVEM TAC1,JOBSYM\r
+        000135' 201100  000134* 00620             MOVEI TAC1,JOBSYM\r
+        000136' 202100  000036  00630             MOVEM TAC1,DDTSYM\r
+        000137' 200101  777777  00640             MOVE TAC1,-1(TAC)\r
+        000140' 202101  000140' 00650   STO1:     MOVEM TAC1,.(TAC)\r
+        000141' 274040  000551' 00660             SUB TAC,[XWD 1,1]\r
+        000142' 325040  000137' 00670             JUMPGE TAC,.-3\r
+\r\fONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE                 PAGE 3\r
+        THIS IS ONLY CODE PLACED AT THE END OF IOINIT\r
+\r
+\r
+\r
+                                00710   ;SETUP LOCATIONS 40 THRU 57\r
+\r
+        000143' 200040  000552' 00730   JRSTI1:   MOVE TAC,[XWD LOC40,40]\r
+        000144' 251040  000057  00740             BLT TAC,57\r
+        000145' 200040  000147' 00750             MOVE TAC,JRSTI\r
+        000146' 202040  000101' 00760             MOVEM TAC,LINKSR+1    ;DO ONCE ONLY\r
+        000147' 254020  000100' 00770   JRSTI:    JRST @LINKSR\r
+\r
+                                00790   EXTERN UUO0,ERROR\r
+                                00800   EXTERN CH1,CH2,CH3,CH4,CH5,CH6,CH7\r
+\r
+        000150' 000000  000000  00820   LOC40:    0             ;UUO PC\r
+        000151' 264000  000000* 00830             JSR UUO0      ;TO UUO HANDLER\r
+        000152' 264000  000000* 00840             JSR CH1\r
+        000153' 265240  000000* 00850             JSP DAT,ERROR\r
+        000154' 264000  000000* 00860             JSR CH2\r
+        000155' 265240  000153* 00870             JSP DAT,ERROR\r
+        000156' 264000  000000* 00880             JSR CH3\r
+        000157' 265240  000155* 00890             JSP DAT,ERROR\r
+        000160' 264000  000000* 00900             JSR CH4\r
+        000161' 265240  000157* 00910             JSP DAT,ERROR\r
+        000162' 264000  000000* 00920             JSR CH5\r
+        000163' 265240  000161* 00930             JSP DAT,ERROR\r
+        000164' 264000  000000* 00940             JSR CH6\r
+        000165' 265240  000163* 00950             JSP DAT,ERROR\r
+        000166' 264000  000000* 00960             JSR CH7\r
+        000167' 265240  000165* 00970             JSP DAT,ERROR\r
+\r\fONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE                 PAGE 4\r
+        THIS IS ONLY CODE PLACED AT THE END OF IOINIT\r
+\r
+\r
+\r
+\r
+                                01020   ;ONCE ONLY CODE - OPERATOR SETUP DIALOGUE\r
+\r
+                                01040   INTERNAL ONCE\r
+                                01050   EXTERNAL CONMES,RADX10,CRLF,DECIN,DECIN1\r
+                                01060   EXTERNAL THSDAT,MAKEND,JOBFF\r
+                                01070   EXTERNAL ERNAM,OCTPNT,SYSSIZ,CONFIG,SYSNUM,SYSDAT\r
+\r
+        000170' 000000  000000  01090   ONCE:     0\r
+        000171' 201040  777777' 01100             MOVEI TAC,SYSFIN      ;SET SIZE OF MONITOR\r
+        000172' 202040  000000* 01110             MOVEM TAC,SYSSIZ\r
+        000173' 200240  000443' 01120             MOVE DAT,LINEP        ;SETUP LINE BYTE POINTER\r
+        000174' 200140  000553' 01130             MOVE PDP,[XWD ONCEPN,ONCEPD]\r
+        000175' 260140  000000* 01140             PUSHJ PDP,CRLF\r
+        000176' 201040  000000* 01150             MOVEI TAC,CONFIG\r
+        000177' 260140  000000* 01160             PUSHJ PDP,CONMES\r
+        000200' 201040  000474' 01170             MOVEI TAC,TSEXEC\r
+        000201' 260140  000177* 01180             PUSHJ PDP,CONMES\r
+        000202' 554040  000000* 01190             HLRZ TAC,SYSNUM\r
+        000203' 260140  000000* 01200             PUSHJ PDP,RADX10\r
+        000204' 201040  000554' 01210             MOVEI TAC,[ASCIZ /./]\r
+        000205' 260140  000201* 01220             PUSHJ PDP,CONMES\r
+        000206' 550040  000202* 01230             HRRZ TAC,SYSNUM\r
+        000207' 260140  000203* 01240             PUSHJ PDP,RADX10\r
+        000210' 201040  000555' 01250             MOVEI TAC,[ASCIZ / /]\r
+        000211' 260140  000205* 01260             PUSHJ PDP,CONMES\r
+        000212' 201040  000000* 01270             MOVEI TAC,SYSDAT\r
+        000213' 260140  000211* 01280             PUSHJ PDP,CONMES\r
+        000214' 260140  000175* 01290             PUSHJ PDP,CRLF\r
+        000215' 260140  000421' 01300             PUSHJ PDP,OPOUT\r
+\r\fONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE                 PAGE 5\r
+        THIS IS ONLY CODE PLACED AT THE END OF IOINIT\r
+\r
+\r
+\r
+                                01340   ;ASK FOR TODAYS DATE AND CONVERT\r
+                                01350   ;DATE STORED AS ((Y-64)*12.+M-1)*31.+D-1\r
+\r
+        000216' 402000  000000* 01370   DATLOP:   SETZM THSDAT\r
+        000217' 200240  000443' 01380             MOVE DAT,LINEP\r
+        000220' 201040  000477' 01390             MOVEI TAC,TODATE\r
+        000221' 260140  000213* 01400             PUSHJ PDP,CONMES\r
+        000222' 260140  000421' 01410             PUSHJ PDP,OPOUT\r
+        000223' 260140  000376' 01420             PUSHJ PDP,GETLIN\r
+        000224' 254000  000216' 01430             JRST DATLOP           ;JUST CR\r
+        000225' 260140  000000* 01440             PUSHJ PDP,DECIN1      ;MONTH\r
+        000226' 254000  000216' 01450             JRST DATLOP           ;ERROR\r
+        000227' 332000  000002  01460             SKIPE TAC1\r
+        000230' 303100  000014  01470             CAILE TAC1,^D12\r
+        000231' 254000  000216' 01480             JRST DATLOP\r
+        000232' 275100  000001  01490             SUBI TAC1,1\r
+        000233' 221100  000037  01500             IMULI TAC1,^D31\r
+        000234' 272100  000216* 01510             ADDM TAC1,THSDAT\r
+        000235' 260140  000225* 01520             PUSHJ PDP,DECIN1      ;DAY\r
+        000236' 254000  000216' 01530             JRST DATLOP\r
+        000237' 332000  000002  01540             SKIPE TAC1\r
+        000240' 303040  000037  01550             CAILE TAC,^D31\r
+        000241' 254000  000216' 01560             JRST DATLOP\r
+        000242' 275100  000001  01570             SUBI TAC1,1\r
+        000243' 272100  000234* 01580             ADDM TAC1,THSDAT\r
+        000244' 260140  000235* 01590             PUSHJ PDP,DECIN1      ;YEAR\r
+        000245' 254000  000216' 01600             JRST DATLOP\r
+        000246' 301100  000101  01610             CAIL TAC1,^D65\r
+        000247' 303100  000143  01620             CAILE TAC1,^D99\r
+        000250' 254000  000216' 01630             JRST DATLOP\r
+        000251' 275100  000100  01640             SUBI TAC1,^D64        ;YEAR ZERO\r
+        000252' 221100  000564  01650             IMULI TAC1,^D12*^D31\r
+        000253' 272100  000243* 01660             ADDM TAC1,THSDAT\r
+\r\fONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE                 PAGE 6\r
+        THIS IS ONLY CODE PLACED AT THE END OF IOINIT\r
+\r
+\r
+\r
+                                01700   ;GET TIME OF DAY\r
+\r
+                                01720   EXTERN TIME\r
+\r
+        000254' 402000  000000* 01740   TIMLOP:   SETZM TIME\r
+        000255' 200240  000443' 01750             MOVE DAT,LINEP\r
+        000256' 201040  000506' 01760             MOVEI TAC,TIMEM\r
+        000257' 260140  000221* 01770             PUSHJ PDP,CONMES\r
+        000260' 260140  000421' 01780             PUSHJ PDP,OPOUT\r
+        000261' 260140  000376' 01790             PUSHJ PDP,GETLIN\r
+        000262' 254000  000254' 01800             JRST TIMLOP           ;JUST A CR\r
+        000263' 134100  000001  01810             ILDB TAC1,TAC\r
+        000264' 275100  000060  01820             SUBI TAC1,60\r
+        000265' 331000  000002  01830             SKIPL TAC1            ;CHECK FIRST DIGIT OF HOUR\r
+        000266' 303100  000002  01840             CAILE TAC1,2\r
+        000267' 254000  000254' 01850             JRST TIMLOP\r
+        000270' 220100  000556' 01860             IMUL TAC1,[^D60*^D60*^D60*^D10]\r
+        000271' 272100  000254* 01870             ADDM TAC1,TIME\r
+        000272' 134100  000001  01880             ILDB TAC1,TAC\r
+        000273' 275100  000060  01890             SUBI TAC1,60          ;CONVERT TO BINARY\r
+        000274' 331000  000002  01900             SKIPL TAC1\r
+        000275' 303100  000011  01910             CAILE TAC1,^D9\r
+        000276' 254000  000254' 01920             JRST TIMLOP\r
+        000277' 221100  645700  01930             IMULI TAC1,^D60*^D60*^D60\r
+        000300' 272100  000271* 01940             ADDM TAC1,TIME\r
+        000301' 260140  000244* 01950             PUSHJ PDP,DECIN1\r
+        000302' 254000  000254' 01960             JRST TIMLOP\r
+        000303' 303100  000073  01970             CAILE TAC1,^D59\r
+        000304' 254000  000254' 01980             JRST TIMLOP\r
+        000305' 221100  007020  01990             IMULI TAC1,^D60*^D60\r
+        000306' 272100  000300* 02000             ADDM TAC1,TIME\r
+\r\fONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE                 PAGE 7\r
+        THIS IS ONLY CODE PLACED AT THE END OF IOINIT\r
+\r
+\r
+\r
+                                02040   ;PRINT IO CONFIGURATION\r
+\r
+                                02060   EXTERN DEVLST\r
+\r
+        000307' 200240  000443' 02080              MOVE DAT,LINEP\r
+        000310' 201040  000517' 02090              MOVEI TAC,IOCONF\r
+        000311' 260140  000257* 02100              PUSHJ PDP,CONMES\r
+        000312' 554300  000000* 02110              HLRZ DEVDAT,DEVLST\r
+        000313' 201040  000004  02120              MOVEI TAC,ITEM\r
+        000314' 261140  000001  02130              PUSH PDP,TAC\r
+        000315' 201040  000001  02140   ONCE5:     MOVEI TAC,1\r
+        000316' 510206  000000  02150              HLLZ ITEM,DEVNAM(DEVDAT)\r
+        000317' 554306  000003  02160   ONCE4:     HLRZ DEVDAT,DEVSER(DEVDAT)\r
+        000320' 322300  000324' 02170              JUMPE DEVDAT,ONCE6\r
+        000321' 510106  000000  02180              HLLZ TAC1,DEVNAM(DEVDAT)\r
+        000322' 316100  000004  02190              CAMN TAC1,ITEM\r
+        000323' 344040  000317' 02200              AOJA TAC,ONCE4\r
+        000324' 200340  000001  02210   ONCE6:     MOVE PROG,TAC        ;SAVE NO.\r
+        000325' 260140  000207* 02220              PUSHJ PDP,RADX10\r
+        000326' 201600  000040  02230              MOVEI UUO," "\r
+        000327' 136600  000005  02240              IDPB UUO,DAT\r
+        000330' 201600  000003  02250              MOVEI UUO,3\r
+        000331' 200440  000557' 02260              MOVE JDAT,[POINT 6,ITEM]\r
+        000332' 134100  000011  02270   ONCE7:     ILDB TAC1,JDAT\r
+        000333' 271100  000240  02280              ADDI TAC1,240\r
+        000334' 136100  000005  02290              IDPB TAC1,DAT\r
+        000335' 367600  000332' 02300              SOJG UUO,ONCE7\r
+        000336' 201040  000560' 02310              MOVEI TAC,[ASCIZ /'S/]\r
+        000337' 303340  000001  02320              CAILE PROG,1\r
+        000340' 260140  000311* 02330              PUSHJ PDP,CONMES\r
+        000341' 260140  000214* 02340              PUSHJ PDP,CRLF\r
+        000342' 326300  000315' 02350              JUMPN DEVDAT,ONCE5\r
+        000343' 262140  000002  02360              POP PDP,TAC1\r
+        000344' 260140  000421' 02370              PUSHJ PDP,OPOUT\r
+\r\fONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE                 PAGE 8\r
+        THIS IS ONLY CODE PLACED AT THE END OF IOINIT\r
+\r
+\r
+\r
+                                02410   ;ASK IF SYSMAK IS WANTED\r
+\r
+        000345' 200240  000443' 02430             MOVE DAT,LINEP\r
+        000346' 201040  000524' 02440             MOVEI TAC,SYSM\r
+        000347' 260140  000340* 02450             PUSHJ PDP,CONMES\r
+        000350' 260140  000421' 02460             PUSHJ PDP,OPOUT\r
+        000351' 260140  000376' 02470             PUSHJ PDP,GETLIN\r
+        000352' 254000  000355' 02480             JRST ONCE2            ;NO SYSMAK\r
+        000353' 201040  000000* 02490             MOVEI TAC,MAKEND      ;YES\r
+        000354' 202040  000172* 02500             MOVEM TAC,SYSSIZ\r
+\r
+                                02520   ;IS EXEC DDT WANTED?\r
+\r
+        000355' 200240  000443' 02540   ONCE2:    MOVE DAT,LINEP\r
+        000356' 201040  000536' 02550             MOVEI TAC,SYSDM\r
+        000357' 260140  000347* 02560             PUSHJ PDP,CONMES\r
+        000360' 260140  000421' 02570             PUSHJ PDP,OPOUT\r
+        000361' 260140  000376' 02580             PUSHJ PDP,GETLIN\r
+        000362' 254000  000365' 02590             JRST ONCE3            ;NO \r
+        000363' 201040  000000* 02600             MOVEI TAC,JOBFF       ;FIRST FREE LOCATION\r
+        000364' 552040  000354* 02610             HRRZM TAC,SYSSIZ\r
+\r\fONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE                 PAGE 9\r
+        THIS IS ONLY CODE PLACED AT THE END OF IOINIT\r
+\r
+\r
+\r
+                                02650   ;PRINT OCTAL SIZE OF MONITOR\r
+\r
+        000365' 200240  000443' 02670   ONCE3:    MOVE DAT,LINEP\r
+        000366' 201040  000541' 02680             MOVEI TAC,EXECIS\r
+        000367' 260140  000357* 02690             PUSHJ PDP,CONMES\r
+        000370' 200040  000364* 02700             MOVE TAC,SYSSIZ\r
+        000371' 260140  000000* 02710             PUSHJ PDP,OCTPNT\r
+        000372' 201040  000544' 02720             MOVEI TAC,LENGTH\r
+        000373' 260140  000367* 02730             PUSHJ PDP,CONMES\r
+        000374' 260140  000421' 02740             PUSHJ PDP,OPOUT\r
+        000375' 254020  000170' 02750             JRST @ONCE\r
+\r\fONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE                 PAGE 10\r
+        THIS IS ONLY CODE PLACED AT THE END OF IOINIT\r
+\r
+\r
+\r
+                                02790   ;ROUTINE TO READ A LINE FROM OPERATORS CONSOLE\r
+                                02800   ;CALL:    PUSHJ PDP,GETLIN\r
+                                02810   ;         JUST A CR TYPED IN\r
+                                02820   ;         A LINE TYPED IN,TAC SET AS BYTE POINTER\r
+\r
+                                02840   EXTERN CPOPJ, CPOPJ1\r
+\r
+        000376' 200040  000443' 02860   GETLIN:   MOVE TAC,LINEP\r
+        000377' 201200  000000  02870             MOVEI ITEM,0\r
+        000400' 712340  000040  02880   GET1:     CONSO TTY,40\r
+        000401' 254000  000400' 02890             JRST .-1\r
+        000402' 712040  000002  02900             DATAI TTY,TAC1\r
+        000403' 712140  000002  02910             DATAO TTY,TAC1\r
+        000404' 136100  000001  02920             IDPB TAC1,TAC\r
+        000405' 405100  000177  02930             ANDI TAC1,177\r
+        000406' 306100  000177  02940             CAIN TAC1,177         ;RUBOUT\r
+        000407' 254000  000000* 02950             JRST CPOPJ\r
+        000410' 302100  000015  02960             CAIE TAC1,15\r
+        000411' 344200  000400' 02970             AOJA ITEM,GET1\r
+        000412' 712340  000020  02980             CONSO TTY,20\r
+        000413' 254000  000412' 02990             JRST .-1\r
+        000414' 201100  000012  03000             MOVEI TAC1,12\r
+        000415' 712140  000002  03010             DATAO TTY,TAC1\r
+        000416' 200040  000443' 03020             MOVE TAC,LINEP\r
+        000417' 326200  000000* 03030             JUMPN ITEM,CPOPJ1\r
+        000420' 263140  000000  03040             POPJ PDP,\r
+\r\fONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE                 PAGE 11\r
+        THIS IS ONLY CODE PLACED AT THE END OF IOINIT\r
+\r
+\r
+\r
+                                03080   ;ROUTINE TO TYPE A LINE ON OPERATORS CONSOLE\r
+                                03090   ;ECHO CHECK STOPS LINE AND RETURNS\r
+                                03100   ;CALL:    DAT SET TO END OF MESSAGE\r
+\r
+        000421' 200040  000443' 03120   OPOUT:    MOVE TAC,LINEP\r
+        000422' 712040  000002  03130             DATAI TTY,TAC1\r
+        000423' 316040  000005  03140   OPOUT1:   CAMN TAC,DAT\r
+        000424' 262140  000000  03150             POP PDP,\r
+        000425' 712300  000040  03160             CONSZ TTY,40\r
+        000426' 254000  000434' 03170             JRST OPOUT2           ;ECHO CHECK\r
+        000427' 712300  000020  03180             CONSZ TTY,20\r
+        000430' 254000  000427' 03190             JRST .-1\r
+        000431' 134100  000001  03200             ILDB TAC1,TAC\r
+        000432' 712140  000002  03210             DATAO TTY,TAC1\r
+        000433' 254000  000423' 03220             JRST OPOUT1\r
+        000434' 712300  000020  03230   OPOUT2:   CONSZ TTY,20\r
+        000435' 254000  000434' 03240             JRST .-1\r
+        000436' 712140  000561' 03250             DATAO TTY,[15]\r
+        000437' 712300  000020  03260             CONSZ TTY,20\r
+        000440' 254000  000437' 03270             JRST .-1\r
+        000441' 712140  000562' 03280             DATAO TTY,[12]\r
+        000442' 263140  000000  03290             POPJ PDP,\r
+\r
+        000443' 440700  000444' 03310   LINEP:    POINT 7,LINBUF\r
+        000444'                 03320   LINBUF:   BLOCK 20\r
+                        000010  03330   ONCEPN=10\r
+        000464'                 03340   ONCEPD:   BLOCK ONCEPN\r
+\r\fONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE                 PAGE 12\r
+        THIS IS ONLY CODE PLACED AT THE END OF IOINIT\r
+\r
+\r
+\r
+                                03380   ;MESSAGES\r
+\r
+        000474' 202505  620246  03400   TSEXEC:   ASCIZ / T. S. EXEC-/\r
+        000475' 271010  554212\r
+        000476' 415320  000000\r
+        000477'                 03410   TODATE:   ASCIZ /\r
+        000477' 064252  454640  03420   TYPE TODAY'S DATE AS ABOVE.\r
+        000500' 425012  447610\r
+        000501' 406624  751500\r
+        000502' 422032  442500\r
+        000503' 406464  040604\r
+        000504' 476550  527032\r
+        000505' 050000  000000  03430   /\r
+        000506'                 03440   TIMEM:    ASCIZ /\r
+        000506' 064252  454640  03450   TYPE 4 DIGIT NAVY TIME(0953 IS 9:53 AM).\r
+        000507' 425006  420210\r
+        000510' 446171  152100\r
+        000511' 472032  654500\r
+        000512' 522231  542520\r
+        000513' 301626  531500\r
+        000514' 446464  034564\r
+        000515' 325464  040632\r
+        000516' 245341  505000  03460   /\r
+        000517'                 03470   IOCONF:   ASCIZ /\r
+        000517' 064251  147500  03480   IO CONFIGURATION\r
+        000520' 416371  643222\r
+        000521' 436532  240650\r
+        000522' 446371  606424  03490   /\r
+        000523' 000000  000000\r
+\r
+        000524'                 03510   SYSM:     ASCIZ /\r
+        000524' 064250  447500  03520   DO YOU WANT SYSMAK(TYPE Y IF YES,CR IF NO)?\r
+        000525' 546372  520256\r
+        000526' 406352  420246\r
+        000527' 546471  540626\r
+        000530' 242513  150212\r
+        000531' 202624  044614\r
+        000532' 202630  551530\r
+        000533' 416444  044614\r
+        000534' 202351  724576\r
+        000535' 064240  000000  03530   /\r
+\r
+        000536'                 03550   SYSDM:    ASCIZ /\r
+        000536' 064250  554212  03560   EXEC DDT?\r
+        000537' 415010  442250\r
+        000540' 374321  200000  03570   /\r
+        000541'                 03580   EXECIS:   ASCIZ /\r
+        000541' 064250  554212  03590   EXEC IS /\r
+        000542' 415011  151500\r
+        000543' 000000  000000\r
+        000544' 476072  440630  03600   LENGTH:   ASCIZ /OCTAL LOCATIONS LONG.\r
+\r\fONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE                 PAGE 12-1\r
+        THIS IS ONLY CODE PLACED AT THE END OF IOINIT\r
+\r
+        000545' 202311  741602\r
+        000546' 522231  747246\r
+        000547' 202311  747216\r
+        000550' 270321  200000  03610   /\r
+                                03620             END,\r
+        000551' 000001  000001\r
+        000552' 000150' 000040\r
+        000553' 000010  000464'\r
+        000554' 270000  000000\r
+        000555' 200000  000000\r
+        000556' 000010  172600\r
+        000557' 440600  000004\r
+        000560' 236460  000000\r
+        000561' 000000  000015\r
+        000562' 000000  000012\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 000563\r
+\r
+8K CORE USED\r
+\r\fONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE                 PAGE 13\r
+        SYMBOL TABLE\r
+\r
+                000265  \r
+A               000000  INT\r
+AC1             000015  INT\r
+AC2             000016  INT\r
+AC3             000017  INT\r
+AL              000001  INT\r
+APR             000000  SPD\r
+ASSCON          400000  INT\r
+ASSPRG          200000  INT\r
+B               000014  INT\r
+BUFPNT          000012  INT\r
+BUFWRD          000013  INT\r
+C               000002  \r
+CH1             000152' EXT\r
+CH2             000154' EXT\r
+CH3             000156' EXT\r
+CH4             000160' EXT\r
+CH5             000162' EXT\r
+CH6             000164' EXT\r
+CH7             000166' EXT\r
+CHL             000006  \r
+CLOSB           002000  INT\r
+CLSIN           000002  INT\r
+CLSOUT          000001  INT\r
+CONFIG          000176' EXT\r
+CONMES          000373' EXT\r
+CPOPJ           000407' EXT\r
+CPOPJ1          000417' EXT\r
+CRLF            000341' EXT\r
+D               000017  INT\r
+DAT             000005  INT\r
+DATLOP          000216' \r
+DCL             000001  INT\r
+DCW             020000  INT\r
+DDI             000007  INT\r
+DDO             000006  INT\r
+DDTMEM          000037  INT\r
+DDTSYM          000036  INT\r
+DECIN           000000  EXT\r
+DECIN1          000301' EXT\r
+DEN             000004  INT\r
+DEV1            000103' \r
+DEVADR          000007  INT\r
+DEVBUF          000006  INT\r
+DEVCHR          000001  INT\r
+DEVCTR          000011  INT\r
+DEVDAT          000006  INT\r
+DEVIAD          000007  INT\r
+DEVINT          000104' EXT\r
+DEVIOS          000002  INT\r
+DEVLOG          000005  INT\r
+DEVLST          000312' EXT\r
+DEVMOD          000004  INT\r
+\r\fONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE                 PAGE 13-1\r
+        SYMBOL TABLE\r
+\r
+DEVNAM          000000  INT\r
+DEVOAD          000010  INT\r
+DEVPTR          000010  INT\r
+DEVSER          000003  INT\r
+DGF             000012  INT\r
+DIN             000003  INT\r
+DLK             000005  INT\r
+DOU             000002  INT\r
+DR              000016  INT\r
+DRL             000000  INT\r
+DSI             000011  INT\r
+DSO             000010  INT\r
+DTW             040000  INT\r
+DVAVAL          000040  INT\r
+DVCDR           100000  INT\r
+DVDIR           000004  INT\r
+DVDIRI          400000  INT\r
+DVIN            000002  INT\r
+DVLPT           040000  INT\r
+DVMTA           000020  INT\r
+DVOUT           000001  INT\r
+DVTTY           000010  INT\r
+ENTRB           020000  INT\r
+ERNAM           000000  EXT\r
+ERROR           000167' EXT\r
+EXECIS          000541' \r
+GET1            000400' \r
+GETLIN          000376' \r
+I               000010  INT\r
+IB              000013  INT\r
+IBUFB           200000  INT\r
+INITB           400000  INT\r
+INPB            010000  INT\r
+INT             000005  \r
+IO              000020  INT\r
+IOACT           010000  INT\r
+IOBEG           000002  INT\r
+IOBKTL          040000  INT\r
+IOCON           000040  INT\r
+IOCONF          000517' \r
+IODEND          020000  INT\r
+IODERR          200000  INT\r
+IODISC          400000  INT\r
+IODONE          400000  INT\r
+IODTER          100000  INT\r
+IOEND           000040  INT\r
+IOFST           000004  INT\r
+IOIMPM          400000  INT\r
+IONRCK          000100  INT\r
+IORDEL          000100  INT\r
+IORET           000020  INT\r
+IOS             000000  INT\r
+IOSTRT          000010  INT\r
+\r\fONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE                 PAGE 13-2\r
+        SYMBOL TABLE\r
+\r
+IOUSE           400000  INT\r
+IOW             000001  INT\r
+IOWC            000020  INT\r
+IOWS            400000  INT\r
+ITEM            000004  INT\r
+JBFADR          000000  INT\r
+JBFCTR          000002  INT\r
+JBFPTR          000001  INT\r
+JBUF            000005  INT\r
+JDAT            000011  INT\r
+JERR            002000  INT\r
+JIOW            100000  INT\r
+JNA             004000  INT\r
+JOBFF           000363' EXT\r
+JOBSYM          000135' EXT\r
+JRSTI           000147' \r
+JRSTI1          000143' \r
+LENGTH          000544' \r
+LINBUF          000444' \r
+LINEP           000443' \r
+LINKSR          000100' INT\r
+LOC40           000150' \r
+LOOKB           040000  INT\r
+MAKEND          000353' EXT\r
+MTW             010000  INT\r
+NDEVM1          000102' EXT\r
+NXM             010000  \r
+OBUFB           100000  INT\r
+OCTPNT          000371' EXT\r
+ONCE            000170' INT\r
+ONCE2           000355' \r
+ONCE3           000365' \r
+ONCE4           000317' \r
+ONCE5           000315' \r
+ONCE6           000324' \r
+ONCE7           000332' \r
+ONCEPD          000464' \r
+ONCEPN          000010  \r
+OPOUT           000421' \r
+OPOUT1          000423' \r
+OPOUT2          000434' \r
+OUTPB           004000  INT\r
+PATCH           000000' INT\r
+PDP             000003  INT\r
+PICHN           000100  INT\r
+PROG            000007  INT\r
+RADX10          000325' EXT\r
+RUN             200000  INT\r
+RUNABL          204000  INT\r
+STO1            000140' \r
+SYSDAT          000212' EXT\r
+SYSDM           000536' \r
+SYSFIN  777777  777777' INT\r
+\r\fONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE                 PAGE 13-3\r
+        SYMBOL TABLE\r
+\r
+SYSM            000524' \r
+SYSNUM          000206' EXT\r
+SYSSIZ          000370' EXT\r
+T               000001  \r
+TAC             000001  INT\r
+TAC1            000002  INT\r
+TEM             000010  INT\r
+THSDAT          000253' EXT\r
+TIME            000306' EXT\r
+TIMEM           000506' \r
+TIMLOP          000254' \r
+TODATE          000477' \r
+TSEXEC          000474' \r
+TTY             000120  SPD\r
+TTYATC          020000  INT\r
+TTYUSE          010000  INT\r
+USRMOD          010000  INT\r
+UUO             000014  INT\r
+UUO0            000151' EXT\r
+\fPPPPPPPPPPPP         TTTTTTTTTTTTTTT      RRRRRRRRRRRR            SSSSSSSSSSSS      EEEEEEEEEEEEEEE      RRRRRRRRRRRR   \r
+PPPPPPPPPPPP         TTTTTTTTTTTTTTT      RRRRRRRRRRRR            SSSSSSSSSSSS      EEEEEEEEEEEEEEE      RRRRRRRRRRRR   \r
+PPPPPPPPPPPP         TTTTTTTTTTTTTTT      RRRRRRRRRRRR            SSSSSSSSSSSS      EEEEEEEEEEEEEEE      RRRRRRRRRRRR   \r
+PPP         PPP            TTT            RRR         RRR      SSS                  EEE                  RRR         RRR\r
+PPP         PPP            TTT            RRR         RRR      SSS                  EEE                  RRR         RRR\r
+PPP         PPP            TTT            RRR         RRR      SSS                  EEE                  RRR         RRR\r
+PPP         PPP            TTT            RRR         RRR      SSS                  EEE                  RRR         RRR\r
+PPP         PPP            TTT            RRR         RRR      SSS                  EEE                  RRR         RRR\r
+PPP         PPP            TTT            RRR         RRR      SSS                  EEE                  RRR         RRR\r
+PPPPPPPPPPPP               TTT            RRRRRRRRRRRR            SSSSSSSSS         EEEEEEEEEEEE         RRRRRRRRRRRR   \r
+PPPPPPPPPPPP               TTT            RRRRRRRRRRRR            SSSSSSSSS         EEEEEEEEEEEE         RRRRRRRRRRRR   \r
+PPPPPPPPPPPP               TTT            RRRRRRRRRRRR            SSSSSSSSS         EEEEEEEEEEEE         RRRRRRRRRRRR   \r
+PPP                        TTT            RRR   RRR                        SSS      EEE                  RRR   RRR      \r
+PPP                        TTT            RRR   RRR                        SSS      EEE                  RRR   RRR      \r
+PPP                        TTT            RRR   RRR                        SSS      EEE                  RRR   RRR      \r
+PPP                        TTT            RRR      RRR                     SSS      EEE                  RRR      RRR   \r
+PPP                        TTT            RRR      RRR                     SSS      EEE                  RRR      RRR   \r
+PPP                        TTT            RRR      RRR                     SSS      EEE                  RRR      RRR   \r
+PPP                        TTT            RRR         RRR      SSSSSSSSSSSS         EEEEEEEEEEEEEEE      RRR         RRR\r
+PPP                        TTT            RRR         RRR      SSSSSSSSSSSS         EEEEEEEEEEEEEEE      RRR         RRR\r
+PPP                        TTT            RRR         RRR      SSSSSSSSSSSS         EEEEEEEEEEEEEEE      RRR         RRR\r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  11:23:08\r
+File: DSKB1 :PTRSER.LST   [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:23
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:2307 \r
+File will be deleted after printing\r
+\f\rPTRSER - PAPER TAPE READER SERVICE ROUTINE                 PAGE 1\r
+        8-15-65\r
+\r
+                                00010           XLIST\r
+                                01930          LIST\r
+\r\fPTRSER - PAPER TAPE READER SERVICE ROUTINE                 PAGE 7\r
+        8-15-65\r
+\r
+\r
+                                00010   TITLE PTRSER - PAPER TAPE READER SERVICE ROUTINE\r
+                                00020   SUBTTL 8-15-65\r
+                                00030   EXTERNAL WSYNC, STOSQD, ILLOUT\r
+                                00040   EXTERNAL STODAT, IOSET, SETBYT, CKS12, ADVBFF\r
+                                00050   EXTERNAL SETIOD, PTRSAV, PTRCHN, PTRRET,PIOMOD\r
+                                00060   INTERNAL PTRINT\r
+\r
+                                00080   ;PTR DEVICE DATA BLOCK LINKAGE\r
+\r
+                                00100   EXTERNAL PTRDB,PTRDAT,PTRCHR,PTRIOS,PTRSER,PTRMOD,PTRBUF\r
+                                00110   EXTERNAL PTRADR,PTRPTR,PTRCTR,PTRSVC,PTRSV1\r
+                                00120   ENTRY PTRDSP\r
+\r\fPTRSER - PAPER TAPE READER SERVICE ROUTINE                 PAGE 2\r
+        8-15-65\r
+\r
+\r
+\r
+                                00160   ,PARAMETER ASSIGNMENTS\r
+                                00170   ,   PTR CONTROL REGISTER \r
+                        000010  00180             PTRDON=10;            DONE FLAG\r
+                        000020  00190             PTRBSY=20;            BUSY FLAG\r
+                        000040  00200             PTRBIN=40;            BINARY READ MODE\r
+                        000400  00210             POW=400;   POWER.  ON=1\r
+\r
+                                00230   ,   SPECIAL IO STATUS WORD ASSIGMENTS\r
+                        002000  00240             PTRERR=2000\r
+                        200000  00250             PTRFCI=200000\r
+                        100000  00260             PTRPOW=100000\r
+                                00270   ,   SPECIAL ASCII CHARACTERS\r
+                        000200  00280             NULL=200\r
+                        000377  00290             RUBOUT=377\r
+                        000232  00300             S2EOF=232;            END OF FILE\r
+                                00310   ,   PI CONTROL REGISTER\r
+                        000200  00320             PION=200\r
+                        000400  00330             PIOFF=400\r
+\r
+                                00350   REPEAT 0,<P\r
+                                00360   ,PTR DATA BLOCK\r
+                                00370   PTRDAT:   SIXBIT "PTR"\r
+                                00380   PTRCHR:   41\r
+                                00390   PTRIOS:   0\r
+                                00400   PTRSER:   EXP PTRDSP\r
+                                00410   PTRMOD:   XWD 1000+PROG,10403\r
+                                00420    0\r
+                                00430   PTRBUF:   0\r
+                                00440   PTRADR:   XWD PROG,0\r
+                                00450   PTRPTR:   0\r
+                                00460   PTRCTR:   0\r
+                                00470   PTRSVC:   0\r
+                                00480   PTRSV1:   0\r
+                                00490   >\r
+\r
+                                00510   ,PTR SERVICE DISPATCH TABLE\r
+\r
+        000000' 254000  000134' 00530   PTRDSP:   JRST PTRREL           ;RELEASE\r
+        000001' 263140  000000  00540             POPJ PDP,;            CLOSE\r
+        000002' 254000  000000* 00550             JRST ILLOUT           ;OUTPUT\r
+        000003' 254000  000004' 00560             JRST PTRINP;          INPUT\r
+\r\fPTRSER - PAPER TAPE READER SERVICE ROUTINE                 PAGE 3\r
+        8-15-65\r
+\r
+\r
+\r
+        000004' 607000  000002  00600   PTRINP:   TLNN IOS,IOBEG;       VIRGIN DEVICE? (IOBEG=1?)\r
+        000005' 254000  000013' 00610             JRST PTRIN1;          NO\r
+        000006' 661000  000004  00620             TLO IOS,IOFST;    IOFST:=1. NEXT ITEM WILL BE FIRST ITEM\r
+        000007' 260140  000000* 00630             PUSHJ PDP,SETBYT; TAC0-5:=TAC12-13:=0,TAC6-11:=BYTE SIZE\r
+                                00640   ,                               TAC14-17:=PROG\r
+        000010' 202040  000000* 00650             MOVEM TAC,PTRPTR;     PTRPTR:=C(TAC)\r
+        000011' 710700  000400  00660             CONSZ PTR,POW;        IS POWER ON?\r
+        000012' 661000  100000  00670             TLO IOS,PTRPOW;       YES. PTRPOW:=1\r
+        000013' 660000  010000  00680   PTRIN1:   TRO IOS,IOACT;        IOACT:=1\r
+        000014' 135040  000000* 00690             LDB TAC,PIOMOD\r
+        000015' 201100  000000* 00700             MOVEI TAC1, PTRCHN;   TAC1:=PTR PI CHANNEL ASSIGNME\r
+        000016' 306040  000014  00710             CAIN TAC,B;           MODE=BINARY?\r
+        000017' 271100  000040  00720             ADDI TAC1,PTRBIN;     YES.  ALPHA/BINARY:=BINARY\r
+        000020' 201040  000010  00730             MOVEI TAC,PTRDON  ;SET CONSO INTERRUPT FLAG\r
+        000021' 542040  000032' 00740             HRRM TAC,PTRINT\r
+        000022' 627000  000002  00750             TLZN IOS,IOBEG;       VIRGIN DEVICE? (IOBEG=1?)\r
+        000023' 254000  000027' 00760             JRST PTRIN4;          NO\r
+        000024' 202000  000000* 00770             MOVEM IOS,PTRIOS;     PTRIOS:=C(IOS)\r
+        000025' 710602  000020  00780             CONO PTR,PTRBSY(TAC1);        PTR BUSY FLAG:=1,ASSIGN INTER\r
+        000026' 263140  000000  00790             POPJ PDP,;            INPUT RETURN-VIRGIN DEVICE\r
+\r
+        000027' 202000  000024* 00810   PTRIN4:   MOVEM IOS,PTRIOS;     PTRIOS:=C(IOS)\r
+        000030' 710602  000010  00820             CONO PTR,PTRDON(TAC1);        PTR DONE FLAG:=1,ASSIGN INTER\r
+        000031' 263140  000000  00830             POPJ PDP,\r
+\r\fPTRSER - PAPER TAPE READER SERVICE ROUTINE                 PAGE 4\r
+        8-15-65\r
+\r
+\r
+\r
+        000032' 710740  000010  00870   PTRINT:   CONSO PTR,PTRDON      ;INTERRUPT.  IS DONE FLAG = 1?\r
+        000033' 254000  000032' 00880             JRST PTRINT           ;NO. IF PTR IS IN FLAG LIST, THIS LOC\r
+        000034' 331000  000027* 00890             SKIPL PTRIOS          ;DISCONNECT REQUEST? (IODISC=1?)\r
+        000035' 710440  000000* 00900             DATAI PTR,PTRSV1      ;PTRSV1: = DATA WORD\r
+        000036' 264000  000000* 00910             JSR PTRSAV            ;SAVE ACCUMULATORS AND ESTABLISH PDP\r
+        000037' 201300  000000* 00920             MOVEI DEVDAT,PTRDAT   ;DEVDAT: = PTR SIXBIT\r
+        000040' 260140  000000* 00930             PUSHJ PDP,IOSET       ;PROG:=C(JBTADR18-35),ITEM:=C(DEVCTR)\r
+        000041' 200000  000034* 00940             MOVE IOS,PTRIOS       ;IOS:=C(PTRIOS)\r
+        000042' 200240  000035* 00950             MOVE DAT,PTRSV1       ;DAT:=C(PTRSV1)\r
+        000043' 710740  000400  00960             CONSO PTR,POW         ;PTR POWER ON?\r
+        000044' 254000  000075' 00970             JRST PTREND           ;NO\r
+        000045' 667000  100000  00980             TLON IOS,PTRPOW       ;PTRPOW=1? PTRPOW:=1\r
+        000046' 254000  000131' 00990             JRST PTREX1           ;NO\r
+        000047' 623000  400000  01000             TLZE IOS,IODISC\r
+        000050' 254000  000121' 01010             JRST PTREX\r
+        000051' 623000  200000  01020             TLZE IOS,PTRFCI       ;IS PTRFCI=1?\r
+        000052' 200240  000000* 01030             MOVE DAT,PTRSVC       ;YES.  DAT:=C(PTRSVC)\r
+        000053' 602000  000014  01040   PTRIN0:   TRNE IOS,B            ;MODE=BINARY?\r
+        000054' 254000  000061' 01050             JRST PTRI0            ;YES\r
+        000055' 302240  000200  01060             CAIE DAT,NULL         ;LAST CHARACTER NULL OR RUBOUT\r
+        000056' 306240  000377  01070             CAIN DAT,RUBOUT\r
+        000057' 254000  000131' 01080             JRST PTREX1           ;YES\r
+        000060' 322240  000131' 01090             JUMPE DAT,PTREX1      ;DAT=0?\r
+\r
+        000061' 260140  000000* 01110   PTRI0:    PUSHJ PDP,STODAT      ;NO STORE DATA WORD.\r
+        000062' 255000  000000  01120             JFCL      ;CHECKSUM ERROR\r
+        000063' 254000  000065' 01130             JRST PTRI1            ;BLOCK FULL OR BLOCK COMPLETE\r
+        000064' 254000  000131' 01140             JRST PTREX1           ;DATA STORED CORRECTLY.\r
+\r
+        000065' 260140  000000* 01160   PTRI1:    PUSHJ PDP,ADVBFF      ;ADVANCE BUFFER\r
+        000066' 661000  400000  01170             TLO IOS,IODISC;       NEXT BUFFER IS FULL. IODISC:=1\r
+        000067' 602000  000040  01180             TRNE IOS,IOCON;       NEXT BUFFER IS EMPTY.  CONTINUOUS? (IOC\r
+        000070' 661000  400000  01190             TLO IOS,IODISC;       NON-CONT. OPERATION. IODISC:=1\r
+        000071' 661000  000004  01200   PTRI2:    TLO IOS,IOFST;        IOFST:=1.  NEXT ITEM IS FIRST ITEM OF A\r
+        000072' 623000  000001  01210             TLZE IOS,IOW;         IN A WAIT?  IOW:=0\r
+        000073' 260140  000000* 01220             PUSHJ PDP,SETIOD;     IOWS:=1\r
+        000074' 254000  000131' 01230             JRST PTREX1\r
+\r\fPTRSER - PAPER TAPE READER SERVICE ROUTINE                 PAGE 5\r
+        8-15-65\r
+\r
+\r
+\r
+                                01270   ,COME HERE WHEN THE READER IS SHUT OFF\r
+\r
+        000075' 630000  000137' 01290   PTREND:   TDZ IOS,[XWD PTRPOW,IOACT]    ;PTRPOW:=0,IOACT:=0\r
+        000076' 260140  000134' 01300             PUSHJ PDP,PTRREL      ;CLEAR PTR AND CONSO FLAG\r
+        000077' 135040  000014* 01310             LDB TAC,PIOMOD\r
+        000100' 661000  000040  01320             TLO IOS,IOEND         ;IOEND:=1\r
+        000101' 602040  000014  01330             TRNE TAC,B            ;MODE=A,AL\r
+        000102' 254000  000114' 01340             JRST PTREIB           ;NO\r
+        000103' 201240  000232  01350             MOVEI DAT,S2EOF;      EOF CHAR\r
+        000104' 260140  000061* 01360             PUSHJ PDP,STODAT      ;STORE DATA WORD\r
+        000105' 254000  000062' 01370             JRST PTRI0+1          ;CHECKSUM ERROR\r
+        000106' 254000  000111' 01380             JRST .+3      ;BLOCK FULL OF BLOCK COMPLETE\r
+        000107' 260140  000000* 01390   PTREI:    PUSHJ PDP,STOSQD;     FINISH THIS BUFFER, STORE WORD COUNT\r
+        000110' 330000  000000  01400             SKIP\r
+        000111' 260140  000065* 01410             PUSHJ PDP,ADVBFF      ;ADVANCE BUFFER\r
+        000112' 330000  000000  01420             SKIP\r
+        000113' 254000  000071' 01430             JRST PTRI2\r
+\r
+        000114' 302040  000014  01450   PTREIB:   CAIE TAC,B            ;MODE=BINARY?\r
+        000115' 254000  000107' 01460             JRST PTREI            ;NO\r
+        000116' 607000  000004  01470             TLNN IOS,IOFST        ;IOFST=1?\r
+        000117' 660000  002000  01480             TRO IOS,PTRERR        ;NO.  PTRERR:=1.  BINARY BLOCK INCOMPLE\r
+        000120' 254000  000071' 01490             JRST PTRI2\r
+\r\fPTRSER - PAPER TAPE READER SERVICE ROUTINE                 PAGE 6\r
+        8-15-65\r
+\r
+\r
+\r
+                                01530   ,DISCONNECT PTR\r
+        000121' 337020  000000* 01540   PTREX:    SKIPG @PTRADR         ;IOUSE=1?\r
+        000122' 254000  000125' 01550             JRST PTREX0           ;YES.\r
+        000123' 710440  000042* 01560             DATAI PTR,PTRSV1\r
+        000124' 254000  000053' 01570             JRST PTRIN0\r
+\r
+        000125' 710440  000052* 01590   PTREX0:   DATAI PTR,PTRSVC      ;SAVE LAST DATA WORD FROM PTR\r
+        000126' 260140  000134' 01600             PUSHJ PDP,PTRREL      ;CLEAR PTR AND CONSO FLAG\r
+        000127' 661000  200000  01610             TLO IOS,PTRFCI        ;PTRFCI:=1\r
+        000130' 620000  010000  01620             TRZ IOS,IOACT         ;IOACT:=0\r
+\r
+        000131' 202200  000000* 01640   PTREX1:   MOVEM ITEM,PTRCTR     ;PTRCTR:=C(ITEM)\r
+        000132' 202000  000041* 01650             MOVEM IOS,PTRIOS      ;PTRIOS:=C(IOS)\r
+        000133' 254000  000000* 01660             JRST PTRRET           ;RESTORE ACCUMULATORS AND DISMISS INTER\r
+\r
+                                01680             INTERNAL PTRINI\r
+\r
+        000134'                 01700   PTRINI:\r
+        000134' 710600  000000  01710   PTRREL:   CONO PTR,0            ;CLEAR PTR CONTROL\r
+        000135' 513000  000032' 01720             HLLZS PTRINT          ;CLEAR CONSO FLAG\r
+        000136' 263140  000000  01730             POPJ PDP,\r
+\r
+                                01750             END,\r
+        000137' 100000  010000\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 000140\r
+\r
+8K CORE USED\r
+\r\fPTRSER - PAPER TAPE READER SERVICE ROUTINE                 PAGE 7\r
+        SYMBOL TABLE\r
+\r
+                000245  \r
+A               000000  INT\r
+AC1             000015  INT\r
+AC2             000016  INT\r
+AC3             000017  INT\r
+ADVBFF          000111' EXT\r
+AL              000001  INT\r
+ASSCON          400000  INT\r
+ASSPRG          200000  INT\r
+B               000014  INT\r
+BUFPNT          000012  INT\r
+BUFWRD          000013  INT\r
+CKS12           000000  EXT\r
+CLOSB           002000  INT\r
+CLSIN           000002  INT\r
+CLSOUT          000001  INT\r
+D               000017  INT\r
+DAT             000005  INT\r
+DCL             000001  INT\r
+DCW             020000  INT\r
+DDI             000007  INT\r
+DDO             000006  INT\r
+DDTMEM          000037  INT\r
+DDTSYM          000036  INT\r
+DEN             000004  INT\r
+DEVADR          000007  INT\r
+DEVBUF          000006  INT\r
+DEVCHR          000001  INT\r
+DEVCTR          000011  INT\r
+DEVDAT          000006  INT\r
+DEVIAD          000007  INT\r
+DEVIOS          000002  INT\r
+DEVLOG          000005  INT\r
+DEVMOD          000004  INT\r
+DEVNAM          000000  INT\r
+DEVOAD          000010  INT\r
+DEVPTR          000010  INT\r
+DEVSER          000003  INT\r
+DGF             000012  INT\r
+DIN             000003  INT\r
+DLK             000005  INT\r
+DOU             000002  INT\r
+DR              000016  INT\r
+DRL             000000  INT\r
+DSI             000011  INT\r
+DSO             000010  INT\r
+DTW             040000  INT\r
+DVAVAL          000040  INT\r
+DVCDR           100000  INT\r
+DVDIR           000004  INT\r
+DVDIRI          400000  INT\r
+DVIN            000002  INT\r
+DVLPT           040000  INT\r
+\r\fPTRSER - PAPER TAPE READER SERVICE ROUTINE                 PAGE 7-1\r
+        SYMBOL TABLE\r
+\r
+DVMTA           000020  INT\r
+DVOUT           000001  INT\r
+DVTTY           000010  INT\r
+ENTRB           020000  INT\r
+I               000010  INT\r
+IB              000013  INT\r
+IBUFB           200000  INT\r
+ILLOUT          000002' EXT\r
+INITB           400000  INT\r
+INPB            010000  INT\r
+IO              000020  INT\r
+IOACT           010000  INT\r
+IOBEG           000002  INT\r
+IOBKTL          040000  INT\r
+IOCON           000040  INT\r
+IODEND          020000  INT\r
+IODERR          200000  INT\r
+IODISC          400000  INT\r
+IODONE          400000  INT\r
+IODTER          100000  INT\r
+IOEND           000040  INT\r
+IOFST           000004  INT\r
+IOIMPM          400000  INT\r
+IONRCK          000100  INT\r
+IORDEL          000100  INT\r
+IORET           000020  INT\r
+IOS             000000  INT\r
+IOSET           000040' EXT\r
+IOSTRT          000010  INT\r
+IOUSE           400000  INT\r
+IOW             000001  INT\r
+IOWC            000020  INT\r
+IOWS            400000  INT\r
+ITEM            000004  INT\r
+JBFADR          000000  INT\r
+JBFCTR          000002  INT\r
+JBFPTR          000001  INT\r
+JBUF            000005  INT\r
+JDAT            000011  INT\r
+JERR            002000  INT\r
+JIOW            100000  INT\r
+JNA             004000  INT\r
+LOOKB           040000  INT\r
+MTW             010000  INT\r
+NULL            000200  \r
+OBUFB           100000  INT\r
+OUTPB           004000  INT\r
+PDP             000003  INT\r
+PICHN           000100  INT\r
+PIOFF           000400  \r
+PIOMOD          000077' EXT\r
+PION            000200  \r
+POW             000400  \r
+\r\fPTRSER - PAPER TAPE READER SERVICE ROUTINE                 PAGE 7-2\r
+        SYMBOL TABLE\r
+\r
+PROG            000007  INT\r
+PTR             000104  SPD\r
+PTRADR          000121' EXT\r
+PTRBIN          000040  \r
+PTRBSY          000020  \r
+PTRBUF          000000  EXT\r
+PTRCHN          000015' EXT\r
+PTRCHR          000000  EXT\r
+PTRCTR          000131' EXT\r
+PTRDAT          000037' EXT\r
+PTRDB           000000  EXT\r
+PTRDON          000010  \r
+PTRDSP          000000' ENT\r
+PTREI           000107' \r
+PTREIB          000114' \r
+PTREND          000075' \r
+PTRERR          002000  \r
+PTREX           000121' \r
+PTREX0          000125' \r
+PTREX1          000131' \r
+PTRFCI          200000  \r
+PTRI0           000061' \r
+PTRI1           000065' \r
+PTRI2           000071' \r
+PTRIN0          000053' \r
+PTRIN1          000013' \r
+PTRIN4          000027' \r
+PTRINI          000134' INT\r
+PTRINP          000004' \r
+PTRINT          000032' INT\r
+PTRIOS          000132' EXT\r
+PTRMOD          000000  EXT\r
+PTRPOW          100000  \r
+PTRPTR          000010' EXT\r
+PTRREL          000134' \r
+PTRRET          000133' EXT\r
+PTRSAV          000036' EXT\r
+PTRSER          000000  EXT\r
+PTRSV1          000123' EXT\r
+PTRSVC          000125' EXT\r
+RUBOUT          000377  \r
+RUN             200000  INT\r
+RUNABL          204000  INT\r
+S2EOF           000232  \r
+SETBYT          000007' EXT\r
+SETIOD          000073' EXT\r
+STODAT          000104' EXT\r
+STOSQD          000107' EXT\r
+TAC             000001  INT\r
+TAC1            000002  INT\r
+TEM             000010  INT\r
+TTYATC          020000  INT\r
+TTYUSE          010000  INT\r
+\r\fPTRSER - PAPER TAPE READER SERVICE ROUTINE                 PAGE 7-3\r
+        SYMBOL TABLE\r
+\r
+USRMOD          010000  INT\r
+UUO             000014  INT\r
+WSYNC           000000  EXT\r
+\fPPPPPPPPPPPP         TTTTTTTTTTTTTTT      PPPPPPPPPPPP            SSSSSSSSSSSS      EEEEEEEEEEEEEEE      RRRRRRRRRRRR   \r
+PPPPPPPPPPPP         TTTTTTTTTTTTTTT      PPPPPPPPPPPP            SSSSSSSSSSSS      EEEEEEEEEEEEEEE      RRRRRRRRRRRR   \r
+PPPPPPPPPPPP         TTTTTTTTTTTTTTT      PPPPPPPPPPPP            SSSSSSSSSSSS      EEEEEEEEEEEEEEE      RRRRRRRRRRRR   \r
+PPP         PPP            TTT            PPP         PPP      SSS                  EEE                  RRR         RRR\r
+PPP         PPP            TTT            PPP         PPP      SSS                  EEE                  RRR         RRR\r
+PPP         PPP            TTT            PPP         PPP      SSS                  EEE                  RRR         RRR\r
+PPP         PPP            TTT            PPP         PPP      SSS                  EEE                  RRR         RRR\r
+PPP         PPP            TTT            PPP         PPP      SSS                  EEE                  RRR         RRR\r
+PPP         PPP            TTT            PPP         PPP      SSS                  EEE                  RRR         RRR\r
+PPPPPPPPPPPP               TTT            PPPPPPPPPPPP            SSSSSSSSS         EEEEEEEEEEEE         RRRRRRRRRRRR   \r
+PPPPPPPPPPPP               TTT            PPPPPPPPPPPP            SSSSSSSSS         EEEEEEEEEEEE         RRRRRRRRRRRR   \r
+PPPPPPPPPPPP               TTT            PPPPPPPPPPPP            SSSSSSSSS         EEEEEEEEEEEE         RRRRRRRRRRRR   \r
+PPP                        TTT            PPP                              SSS      EEE                  RRR   RRR      \r
+PPP                        TTT            PPP                              SSS      EEE                  RRR   RRR      \r
+PPP                        TTT            PPP                              SSS      EEE                  RRR   RRR      \r
+PPP                        TTT            PPP                              SSS      EEE                  RRR      RRR   \r
+PPP                        TTT            PPP                              SSS      EEE                  RRR      RRR   \r
+PPP                        TTT            PPP                              SSS      EEE                  RRR      RRR   \r
+PPP                        TTT            PPP                  SSSSSSSSSSSS         EEEEEEEEEEEEEEE      RRR         RRR\r
+PPP                        TTT            PPP                  SSSSSSSSSSSS         EEEEEEEEEEEEEEE      RRR         RRR\r
+PPP                        TTT            PPP                  SSSSSSSSSSSS         EEEEEEEEEEEEEEE      RRR         RRR\r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  11:23:08\r
+File: DSKB1 :PTPSER.LST   [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:23
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:2296 \r
+File will be deleted after printing\r
+\f\rPTPSER - PAPER TAPE PUNCH SERVICE ROUTINE                 PAGE 1\r
+        8-15-65\r
+\r
+                                00010           XLIST\r
+                                01930          LIST\r
+\r\fPTPSER - PAPER TAPE PUNCH SERVICE ROUTINE                 PAGE 7\r
+        8-15-65\r
+\r
+\r
+                                00010   TITLE PTPSER - PAPER TAPE PUNCH SERVICE ROUTINE\r
+                                00020   SUBTTL 8-15-65\r
+                                00030   EXTERNAL PTPCHN, PTPSAV, ADVBFE, ITMCT1, SETIOD, SETBYT, IOSET, CKS12\r
+                                00040   EXTERNAL ILLINP,  OUT, WAIT1, PTPRET,PTPCHL,PIOMOD\r
+                                00050   INTERNAL PTPINT\r
+\r
+                                00070   ;PTP DEVICE DATA BLOCK LINKAGE\r
+\r
+                                00090   EXTERNAL PTPDB,PTPDAT,PTPCHR,PTPIOS,PTPSER,PTPMOD,PTPBUF\r
+                                00100   EXTERNAL PTPPTR,PTPADR,PTPCTR,PTPCNT,PTPCHA,PTPSIO\r
+                                00110   ENTRY PTPDSP\r
+\r\fPTPSER - PAPER TAPE PUNCH SERVICE ROUTINE                 PAGE 2\r
+        8-15-65\r
+\r
+\r
+\r
+                                00150   , PARAMETER ASSIGNMENTS\r
+\r
+\r
+                                00180   ,   PTP CONTROL REGISTER\r
+                        000010  00190             PTPDON=10\r
+\r
+                                00210   ,   FORMAT CONTROL\r
+                        000200  00220             PTPFDN=200\r
+\r
+                                00240   ,   SPECIAL IO STATUS WORD ASSIGNMENTS\r
+                        200000  00250             PTPFED=200000\r
+                        040000  00260             PTPSSQ=40000\r
+                        020000  00270             PTPEOL=20000\r
+                        010000  00280             PTPSEQ=10000\r
+                        004000  00290             PTPBIN=4000           ;CHECKSUM BINARY\r
+                        002000  00300             PTPIB=2000            ;IMAGE BINARY\r
+\r
+                                00320   ,   SPECIAL ASCII CHARACTERS\r
+                        000200  00330             NULL=200\r
+                        000377  00340             RUBOUT=377\r
+                        000211  00350             HORTAB=211\r
+                        000213  00360             VERTAB=213\r
+                        000214  00370             FORMFD=214\r
+\r
+                                00390   REPEAT 0,<\r
+                                00400   ,PTP DATA BLOCK\r
+                                00410   \r
+                                00420   PTPDAT:   SIXBIT "PTP"\r
+                                00430   PTPCHR:   41\r
+                                00440   PTPIOS:   0\r
+                                00450   PTPSER:   EXP PTPDSP\r
+                                00460   PTPMOD:   XWD 1000+PROG.14403\r
+                                00470    0\r
+                                00480   PTPBUF:   0\r
+                                00490   PTPPTR:   0\r
+                                00500   PTPADR:   XWD PROG,0\r
+                                00510   PTPCTR:   0\r
+                                00520   PTPCNT:   0\r
+                                00530   PTPCHA:   0\r
+                                00540   PTPSIO:   0\r
+                                00550   >\r
+\r
+                                00570   ,PTP SERVICE DISPATCH TABLE\r
+\r
+        000000' 254000  000004' 00590   PTPDSP:   JRST PTPREL           ;RELEASE\r
+        000001' 254000  000007' 00600             JRST PTPCLS           ;CLOSE\r
+        000002' 254000  000024' 00610             JRST PTPOUT           ;OUTPUT\r
+        000003' 254000  000000* 00620             JRST ILLINP           ;INPUT\r
+\r\fPTPSER - PAPER TAPE PUNCH SERVICE ROUTINE                 PAGE 3\r
+        8-15-65\r
+\r
+\r
+\r
+                                00660             INTERNAL PTPINI\r
+        000004'                 00670   PTPINI:\r
+        000004' 710200  000000  00680   PTPREL:   CONO PTP,0\r
+        000005' 513000  000052' 00690             HLLZS PTPINT          ;CLEAR CONSO FLAG BITS\r
+        000006' 263140  000000  00700             POPJ PDP,             ;RETURN\r
+\r
+        000007' 260140  000000* 00720   PTPCLS:   PUSHJ PDP,OUT;        OUTPUT REMAINING BUFFERS\r
+        000010' 260140  000000* 00730             PUSHJ PDP,WAIT1;      WAIT FOR IOACT=0.\r
+        000011' 200000  000000* 00740             MOVE IOS,PTPIOS;      C(IOS):=C(PTPIOS)\r
+        000012' 661000  600001  00750             TLO IOS,IODISC+PTPFED+IOW;    IODISC:=IOW:=PTPFED:=1\r
+        000013' 660000  010000  00760             TRO IOS,IOACT;        IOACT:=1\r
+        000014' 202000  000011* 00770             MOVEM IOS,PTPIOS;     C(PTPIOS):=C(IOS)\r
+        000015' 201040  000200  00780             MOVEI TAC,200\r
+        000016' 202040  000000* 00790             MOVEM TAC,PTPCNT;     PTPCNT:=400\r
+        000017' 201040  000010  00800             MOVEI TAC,PTPDON      ;SET CONSO FLAG\r
+        000020' 542040  000052' 00810             HRRM TAC,PTPINT\r
+        000021' 201040  000000* 00820             MOVEI TAC,PTPCHN;     TAC:=PTPCHN,PI CHANNEL ASSIGNMENT\r
+        000022' 710201  000010  00830             CONO PTP,PTPDON(TAC);         DONE FLAG:=1, ASSIGN PI CHANN\r
+        000023' 254000  000010* 00840             JRST WAIT1            ;WAIT FOR IOACT=0, ALL BUFFERS FINISHED\r
+\r\fPTPSER - PAPER TAPE PUNCH SERVICE ROUTINE                 PAGE 4\r
+        8-15-65\r
+\r
+\r
+\r
+        000024' 623000  000002  00880   PTPOUT:   TLZE IOS,IOBEG        ;VIRGIN DEVICE? (IOBEG:=0)\r
+        000025' 254000  000036' 00890             JRST PTPIN2           ;YES\r
+\r
+        000026' 660000  010000  00910   PTPIN1:   TRO IOS,IOACT         ;IOACT:=1\r
+        000027' 621000  400000  00920             TLZ IOS,IODISC        ;CLEAR DISCONNECT BIT\r
+        000030' 202000  000014* 00930             MOVEM IOS,PTPIOS      ;PTPIOS:=C(IOS)\r
+        000031' 201040  000010  00940             MOVEI TAC,PTPDON      ;SET CONSO FLAG BIT\r
+        000032' 542040  000052' 00950             HRRM TAC,PTPINT\r
+        000033' 201040  000021* 00960             MOVEI TAC, PTPCHN\r
+        000034' 710201  000010  00970             CONO PTP,PTPDON (TAC);        DONE FLAG:=1, ASSIGN PI CHAN\r
+        000035' 263140  000000  00980             POPJ PDP,             ;RETURN\r
+\r
+        000036' 135040  000000* 01000   PTPIN2:   LDB TAC,PIOMOD\r
+        000037' 661000  200024  01010             TLO IOS, IOFST+PTPFED+IO      ;IOFST:=PTPFED:=IO:=1\r
+        000040' 621000  006000  01020             TLZ IOS,PTPBIN+PTPIB          ;CLEAR BINARY AND IMAGE BINAR\r
+        000041' 306040  000013  01030             CAIN TAC,IB           ;IMAGE BINARY?\r
+        000042' 661000  002000  01040             TLO IOS,PTPIB         ;YES\r
+        000043' 306040  000014  01050             CAIN TAC,B                    ;MODE:=BINARY?\r
+        000044' 661000  004000  01060             TLO IOS,PTPBIN        ;YES, PTPBIN:=1\r
+        000045' 201040  000200  01070             MOVEI TAC,PTPFDN      ;PTPCNT:=PTPFDN\r
+        000046' 202040  000016* 01080             MOVEM TAC,PTPCNT\r
+        000047' 260140  000000* 01090             PUSHJ PDP,SETBYT      ;SETBYT\r
+        000050' 502040  000000* 01100             HLLM TAC,PTPPTR       ;PTPPTR0-5:=PTPPTR12-13:=0,PTPPTR6-11:=\r
+                                01110                                   ;SIZE; PTPPTR14-17:=PROG\r
+        000051' 254000  000026' 01120             JRST PTPIN1\r
+\r\fPTPSER - PAPER TAPE PUNCH SERVICE ROUTINE                 PAGE 5\r
+        8-15-65\r
+\r
+\r
+\r
+                                01160   ,PUNCH INTERRUPT SERVICE\r
+\r
+        000052' 710340  000010  01180   PTPINT:   CONSO PTP,PTPDON;     DONE FLAG=1?\r
+        000053' 254000  000052' 01190             JRST PTPINT           ;NO. IF PTP IS IN FLAG LIST GO TO ERROR\r
+        000054' 202000  000000* 01200             MOVEM IOS,PTPSIO      ;PTPSIO:=C(IOS)  SAVE IOS\r
+        000055' 200000  000030* 01210             MOVE IOS,PTPIOS       ;IOS:=C(PTPIOS)\r
+        000056' 603000  200000  01220             TLNE IOS,PTPFED       ;FEED REQUEST? (PTPFED=1?)\r
+        000057' 254000  000151' 01230             JRST PTPS2            ;YES\r
+        000060' 200000  000054* 01240             MOVE IOS,PTPSIO       ;RESTORE IOS\r
+        000061' 264000  000000* 01250             JSR PTPSAV            ;SAVE ACS AND ESTABLISH PDP\r
+        000062' 201300  000000* 01260             MOVEI DEVDAT,PTPDAT\r
+        000063' 260140  000000* 01270             PUSHJ PDP,IOSET       ;PROG:=(JBTADR 18-35),ITEM:=C(DEVCTR)\r
+        000064' 200000  000055* 01280             MOVE IOS,PTPIOS\r
+        000065' 623000  400000  01290             TLZE IOS,IODISC       ;DISCONNECT?  (IODISC=1?)\r
+        000066' 254000  000167' 01300             JRST PTPADV           ;YES\r
+        000067' 623000  000004  01310             TLZE IOS,IOFST        ;IOFST=1?  IOFST:=0\r
+        000070' 254000  000175' 01320             JRST PTP9             ;YES\r
+        000071' 607000  006000  01330             TLNN IOS,PTPBIN+PTPIB         ;BINARY PUNCH MODE?\r
+        000072' 254000  000121' 01340             JRST PTP3             ;NO\r
+\r
+        000073' 200040  000000* 01360   PTPB0:    MOVE TAC,PTPCHA;      BINARY OUTPUT BYTE SIZE=36\r
+        000074' 241040  000006  01370             ROT TAC,6\r
+        000075' 202040  000073* 01380             MOVEM TAC,PTPCHA\r
+        000076' 405040  000077  01390             ANDI TAC,77;          TAC:=XX, SIXBIT SUB-BYTE\r
+        000077' 271040  000200  01400             ADDI TAC,200\r
+        000100' 710140  000001  01410             DATAO PTP,TAC;        PUNCH 2XX\r
+        000101' 371000  000046* 01420             SOSL PTPCNT;          C(PTPCNT):=C(PTPCNT)-1.   WORD DONE?\r
+        000102' 254000  000227' 01430             JRST PTPXIT;          NO\r
+        000103' 371000  000000* 01440             SOSL PTPCTR;          C(PTPCTR):=C(PTPCTR)-1.   ITEM COUNT < 0\r
+        000104' 254000  000113' 01450             JRST PTPB1;           NO\r
+        000105' 603000  002000  01460             TLNE IOS,PTPIB        ;IMAGE BINARY?\r
+        000106' 665000  400000  01470             TLOA IOS,IODISC       ;YES, SUPPRESS TAPE FEED.\r
+        000107' 661000  600000  01480             TLO IOS,IODISC+PTPFED         ;IODIS:=PTPFED:=1\r
+        000110' 201040  000010  01490             MOVEI TAC,10\r
+        000111' 202040  000101* 01500             MOVEM TAC,PTPCNT;     PTPCNT:=10\r
+        000112' 254000  000227' 01510             JRST PTPXIT\r
+\r
+        000113' 201040  000005  01530   PTPB1:    MOVEI TAC,5           ;PTPCNT:=5\r
+        000114' 202040  000111* 01540             MOVEM TAC,PTPCNT\r
+        000115' 200260  000050* 01550             MOVE DAT,@PTPPTR;     PTPCHA:=OUTPUT DATA WORD\r
+        000116' 350000  000115* 01560             AOS PTPPTR;           PTPPTR:=C(PTPPTR)+1.  ADVANCE ITEM POIN\r
+        000117' 202240  000075* 01570             MOVEM DAT,PTPCHA\r
+        000120' 254000  000227' 01580             JRST PTPXIT\r
+\r\fPTPSER - PAPER TAPE PUNCH SERVICE ROUTINE                 PAGE 6\r
+        8-15-65\r
+\r
+\r
+\r
+        000121' 710140  000117* 01620   PTP3:     DATAO PTP,PTPCHA;     PUNCH CHARACTER\r
+        000122' 602000  000014  01630             TRNE IOS,14;          IS MODE AN ALPHA MODE\r
+        000123' 254000  000136' 01640             JRST PTP1;            NO\r
+        000124' 200240  000121* 01650             MOVE DAT,PTPCHA\r
+        000125' 302240  000211  01660             CAIE DAT,HORTAB;      HORIZONTAL OR VERTICAL TAB?\r
+        000126' 306240  000213  01670             CAIN DAT,VERTAB\r
+        000127' 254000  000216' 01680             JRST PTPP1;           YES\r
+        000130' 302240  000214  01690             CAIE DAT,FORMFD;      FORM FEED?\r
+        000131' 254000  000136' 01700             JRST PTP1;            NO\r
+        000132' 661000  220000  01710             TLO IOS,PTPFED+PTPEOL;        PTPFED:=PTPEOL:=1\r
+        000133' 201240  000020  01720             MOVEI DAT,20\r
+        000134' 202240  000114* 01730             MOVEM DAT,PTPCNT;     PTPCNT:=20\r
+        000135' 254000  000227' 01740             JRST PTPXIT\r
+\r\fPTPSER - PAPER TAPE PUNCH SERVICE ROUTINE                 PAGE 7\r
+        8-15-65\r
+\r
+\r
+\r
+        000136' 375000  000103* 01780   PTP1:     SOSGE     PTPCTR;     C(PTPCTR:=C(PTPCTR)-1.  IS C(PTPCTR)<0\r
+        000137' 254000  000160' 01790             JRST PTP5             ;YES\r
+        000140' 134240  000116* 01800             LDBI DAT,PTPPTR       ;DAT:=OUTPUT ITEM\r
+        000141' 135040  000036* 01810             LDB TAC,PIOMOD\r
+        000142' 306040  000010  01820             CAIN TAC,I;           MODE=IMAGE?\r
+        000143' 254000  000147' 01830             JRST PTP6             ;YES\r
+        000144' 435240  000200  01840             IORI DAT,200;         NO, INSERT EIGHTH HOLD\r
+        000145' 306240  000200  01850             CAIN DAT,NULL;        NULL?\r
+        000146' 254000  000136' 01860             JRST PTP1;            YES\r
+\r
+        000147' 202240  000124* 01880   PTP6:     MOVEM DAT,PTPCHA;     PTPCHA:=OUTPUT ITEM\r
+        000150' 254000  000227' 01890             JRST PTPXIT\r
+\r
+        000151' 402000  000147* 01910   PTPS2:    CLEARM    PTPCHA;     PUNCH FEED\r
+        000152' 710140  000151* 01920             DATAO PTP,PTPCHA\r
+        000153' 377000  000134* 01930             SOSG PTPCNT;          COUNT FEED LINES\r
+        000154' 621000  200000  01940             TLZ IOS,PTPFED;       PTPFED:=0\r
+        000155' 202000  000064* 01950             MOVEM IOS,PTPIOS;     PTPIOS:=C(IOS)\r
+        000156' 200000  000060* 01960             MOVE IOS,PTPSIO       ;RESTORE IOS\r
+        000157' 254520  000000* 01970             JEN @PTPCHL           ;DISMISS\r
+\r
+        000160' 661000  400000  01990   PTP5:     TLO IOS,IODISC;       IODISC:=1\r
+        000161' 254000  000227' 02000             JRST PTPXIT\r
+\r
+        000162' 550100  000000* 02020   PTPBN:    HRRZ TAC1,PTPADR;     TAC1:=BUFFER ADDRESS\r
+        000163' 260140  000000* 02030             PUSHJ PDP,CKS12;      TAC:=CALCULATE CHECKSUM\r
+        000164' 270100  000162* 02040             ADD TAC1, PTPADR\r
+        000165' 502060  000002  02050             HLLM TAC,@TAC1;       STORE CHECKSUM IN LEFT HALF OF FIRST BU\r
+        000166' 254000  000113' 02060             JRST PTPB1\r
+\r\fPTPSER - PAPER TAPE PUNCH SERVICE ROUTINE                 PAGE 8\r
+        8-15-65\r
+\r
+\r
+\r
+        000167' 260140  000000* 02100   PTPADV:   PUSHJ PDP,ADVBFE;     ADVANCE BUFFER\r
+        000170' 254000  000222' 02110             JRST PTPDSC;          EXIT1.  NEXT BUFFER EMPTY\r
+        000171' 602000  000040  02120             TRNE IOS,IOCON;       CONTINUOUS? (IOCON=1?)\r
+        000172' 254000  000222' 02130             JRST PTPDSC;          YES\r
+        000173' 623000  000001  02140             TLZE IOS,IOW;         IN A WAIT?  IOW:=0\r
+        000174' 260140  000000* 02150             PUSHJ PDP,SETIOD;     YES.  IOWS:=1\r
+        000175' 621000  000004  02160   PTP9:     TLZ IOS,IOFST;        IOFST:=0\r
+        000176' 200040  000164* 02170             MOVE TAC,PTPADR\r
+        000177' 350000  000001  02180             AOS TAC\r
+        000200' 542040  000140* 02190             HRRM TAC,PTPPTR;      PTPPTR18-35:=C(PTPADR18-25)+1\r
+        000201' 550220  000001  02200             HRRZ ITEM,@TAC;       ITEM:=WORD COUNT\r
+        000202' 135100  000215' 02210             LDB TAC1,PTP91                ;PICK UP BYTE SIZE\r
+        000203' 260140  000000* 02220             PUSHJ PDP,ITMCT1;     ITEM:=WORD COUNT*[36/BYTE SIZE]\r
+        000204' 202200  000136* 02230             MOVEM ITEM,PTPCTR;    PTPCTR:=C(ITEM)\r
+        000205' 322200  000167' 02240             JUMPE ITEM,PTPADV     ;       IS ITEM COUNT=0?\r
+        000206' 603000  004000  02250             TLNE IOS,PTPBIN;      BINARY PUNCH MODE?\r
+        000207' 254000  000162' 02260             JRST PTPBN;           YES\r
+        000210' 607000  002000  02270             TLNN IOS,PTPIB        ;IMAGE BINARY?\r
+        000211' 254000  000136' 02280             JRST PTP1\r
+        000212' 350000  000200* 02290             AOS PTPPTR            ;YES\r
+        000213' 370000  000204* 02300             SOS PTPCTR\r
+        000214' 254000  000113' 02310             JRST PTPB1\r
+\r
+        000215' 300600  000212* 02330   PTP91:    POINT 6,PTPPTR,11\r
+\r
+        000216' 201240  000377  02350   PTPP1:    MOVEI DAT,RUBOUT;     PTPCHA:=RUBOUT\r
+        000217' 202240  000152* 02360             MOVEM DAT,PTPCHA\r
+        000220' 661000  020000  02370             TLO IOS,PTPEOL;       PTPEOL:=1\r
+        000221' 254000  000227' 02380             JRST PTPXIT\r
+\r
+        000222' 260140  000004' 02400   PTPDSC:   PUSHJ PDP,PTPREL      ;CLEAR PTP CONTROL REG AND CONSO BITS\r
+        000223' 620000  010000  02410             TRZ IOS,IOACT;        IOACT:=0\r
+        000224' 661000  000004  02420             TLO IOS,IOFST;        IOFST:=1\r
+        000225' 623000  000001  02430             TLZE IOS,IOW;         IN A WAIT?  IOW:=0\r
+        000226' 260140  000174* 02440             PUSHJ PDP,SETIOD;     YES.  IOSW:=1\r
+\r
+        000227' 202000  000155* 02460   PTPXIT:   MOVEM IOS,PTPIOS;     PTPIOS:=C(IOS)\r
+        000230' 254000  000000* 02470             JRST PTPRET;          NO\r
+\r
+                                02490   END,\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 000231\r
+\r
+8K CORE USED\r
+\r\fPTPSER - PAPER TAPE PUNCH SERVICE ROUTINE                 PAGE 9\r
+        SYMBOL TABLE\r
+\r
+                000255  \r
+A               000000  INT\r
+AC1             000015  INT\r
+AC2             000016  INT\r
+AC3             000017  INT\r
+ADVBFE          000167' EXT\r
+AL              000001  INT\r
+ASSCON          400000  INT\r
+ASSPRG          200000  INT\r
+B               000014  INT\r
+BUFPNT          000012  INT\r
+BUFWRD          000013  INT\r
+CKS12           000163' EXT\r
+CLOSB           002000  INT\r
+CLSIN           000002  INT\r
+CLSOUT          000001  INT\r
+D               000017  INT\r
+DAT             000005  INT\r
+DCL             000001  INT\r
+DCW             020000  INT\r
+DDI             000007  INT\r
+DDO             000006  INT\r
+DDTMEM          000037  INT\r
+DDTSYM          000036  INT\r
+DEN             000004  INT\r
+DEVADR          000007  INT\r
+DEVBUF          000006  INT\r
+DEVCHR          000001  INT\r
+DEVCTR          000011  INT\r
+DEVDAT          000006  INT\r
+DEVIAD          000007  INT\r
+DEVIOS          000002  INT\r
+DEVLOG          000005  INT\r
+DEVMOD          000004  INT\r
+DEVNAM          000000  INT\r
+DEVOAD          000010  INT\r
+DEVPTR          000010  INT\r
+DEVSER          000003  INT\r
+DGF             000012  INT\r
+DIN             000003  INT\r
+DLK             000005  INT\r
+DOU             000002  INT\r
+DR              000016  INT\r
+DRL             000000  INT\r
+DSI             000011  INT\r
+DSO             000010  INT\r
+DTW             040000  INT\r
+DVAVAL          000040  INT\r
+DVCDR           100000  INT\r
+DVDIR           000004  INT\r
+DVDIRI          400000  INT\r
+DVIN            000002  INT\r
+DVLPT           040000  INT\r
+\r\fPTPSER - PAPER TAPE PUNCH SERVICE ROUTINE                 PAGE 9-1\r
+        SYMBOL TABLE\r
+\r
+DVMTA           000020  INT\r
+DVOUT           000001  INT\r
+DVTTY           000010  INT\r
+ENTRB           020000  INT\r
+FORMFD          000214  \r
+HORTAB          000211  \r
+I               000010  INT\r
+IB              000013  INT\r
+IBUFB           200000  INT\r
+ILLINP          000003' EXT\r
+INITB           400000  INT\r
+INPB            010000  INT\r
+IO              000020  INT\r
+IOACT           010000  INT\r
+IOBEG           000002  INT\r
+IOBKTL          040000  INT\r
+IOCON           000040  INT\r
+IODEND          020000  INT\r
+IODERR          200000  INT\r
+IODISC          400000  INT\r
+IODONE          400000  INT\r
+IODTER          100000  INT\r
+IOEND           000040  INT\r
+IOFST           000004  INT\r
+IOIMPM          400000  INT\r
+IONRCK          000100  INT\r
+IORDEL          000100  INT\r
+IORET           000020  INT\r
+IOS             000000  INT\r
+IOSET           000063' EXT\r
+IOSTRT          000010  INT\r
+IOUSE           400000  INT\r
+IOW             000001  INT\r
+IOWC            000020  INT\r
+IOWS            400000  INT\r
+ITEM            000004  INT\r
+ITMCT1          000203' EXT\r
+JBFADR          000000  INT\r
+JBFCTR          000002  INT\r
+JBFPTR          000001  INT\r
+JBUF            000005  INT\r
+JDAT            000011  INT\r
+JERR            002000  INT\r
+JIOW            100000  INT\r
+JNA             004000  INT\r
+LOOKB           040000  INT\r
+MTW             010000  INT\r
+NULL            000200  \r
+OBUFB           100000  INT\r
+OUT             000007' EXT\r
+OUTPB           004000  INT\r
+PDP             000003  INT\r
+PICHN           000100  INT\r
+\r\fPTPSER - PAPER TAPE PUNCH SERVICE ROUTINE                 PAGE 9-2\r
+        SYMBOL TABLE\r
+\r
+PIOMOD          000141' EXT\r
+PROG            000007  INT\r
+PTP             000100  SPD\r
+PTP1            000136' \r
+PTP3            000121' \r
+PTP5            000160' \r
+PTP6            000147' \r
+PTP9            000175' \r
+PTP91           000215' \r
+PTPADR          000176' EXT\r
+PTPADV          000167' \r
+PTPB0           000073' \r
+PTPB1           000113' \r
+PTPBIN          004000  \r
+PTPBN           000162' \r
+PTPBUF          000000  EXT\r
+PTPCHA          000217' EXT\r
+PTPCHL          000157' EXT\r
+PTPCHN          000033' EXT\r
+PTPCHR          000000  EXT\r
+PTPCLS          000007' \r
+PTPCNT          000153' EXT\r
+PTPCTR          000213' EXT\r
+PTPDAT          000062' EXT\r
+PTPDB           000000  EXT\r
+PTPDON          000010  \r
+PTPDSC          000222' \r
+PTPDSP          000000' ENT\r
+PTPEOL          020000  \r
+PTPFDN          000200  \r
+PTPFED          200000  \r
+PTPIB           002000  \r
+PTPIN1          000026' \r
+PTPIN2          000036' \r
+PTPINI          000004' INT\r
+PTPINT          000052' INT\r
+PTPIOS          000227' EXT\r
+PTPMOD          000000  EXT\r
+PTPOUT          000024' \r
+PTPP1           000216' \r
+PTPPTR          000215' EXT\r
+PTPREL          000004' \r
+PTPRET          000230' EXT\r
+PTPS2           000151' \r
+PTPSAV          000061' EXT\r
+PTPSEQ          010000  \r
+PTPSER          000000  EXT\r
+PTPSIO          000156' EXT\r
+PTPSSQ          040000  \r
+PTPXIT          000227' \r
+RUBOUT          000377  \r
+RUN             200000  INT\r
+RUNABL          204000  INT\r
+\r\fPTPSER - PAPER TAPE PUNCH SERVICE ROUTINE                 PAGE 9-3\r
+        SYMBOL TABLE\r
+\r
+SETBYT          000047' EXT\r
+SETIOD          000226' EXT\r
+TAC             000001  INT\r
+TAC1            000002  INT\r
+TEM             000010  INT\r
+TTYATC          020000  INT\r
+TTYUSE          010000  INT\r
+USRMOD          010000  INT\r
+UUO             000014  INT\r
+VERTAB          000213  \r
+WAIT1           000023' EXT\r
+\fRRRRRRRRRRRR         UUU         UUU      NNN         NNN         CCCCCCCCCCCC         SSSSSSSSSSSS         SSSSSSSSSSSS\r
+RRRRRRRRRRRR         UUU         UUU      NNN         NNN         CCCCCCCCCCCC         SSSSSSSSSSSS         SSSSSSSSSSSS\r
+RRRRRRRRRRRR         UUU         UUU      NNN         NNN         CCCCCCCCCCCC         SSSSSSSSSSSS         SSSSSSSSSSSS\r
+RRR         RRR      UUU         UUU      NNN         NNN      CCC                  SSS                  SSS            \r
+RRR         RRR      UUU         UUU      NNN         NNN      CCC                  SSS                  SSS            \r
+RRR         RRR      UUU         UUU      NNN         NNN      CCC                  SSS                  SSS            \r
+RRR         RRR      UUU         UUU      NNNNNN      NNN      CCC                  SSS                  SSS            \r
+RRR         RRR      UUU         UUU      NNNNNN      NNN      CCC                  SSS                  SSS            \r
+RRR         RRR      UUU         UUU      NNNNNN      NNN      CCC                  SSS                  SSS            \r
+RRRRRRRRRRRR         UUU         UUU      NNN   NNN   NNN      CCC                     SSSSSSSSS            SSSSSSSSS   \r
+RRRRRRRRRRRR         UUU         UUU      NNN   NNN   NNN      CCC                     SSSSSSSSS            SSSSSSSSS   \r
+RRRRRRRRRRRR         UUU         UUU      NNN   NNN   NNN      CCC                     SSSSSSSSS            SSSSSSSSS   \r
+RRR   RRR            UUU         UUU      NNN      NNNNNN      CCC                              SSS                  SSS\r
+RRR   RRR            UUU         UUU      NNN      NNNNNN      CCC                              SSS                  SSS\r
+RRR   RRR            UUU         UUU      NNN      NNNNNN      CCC                              SSS                  SSS\r
+RRR      RRR         UUU         UUU      NNN         NNN      CCC                              SSS                  SSS\r
+RRR      RRR         UUU         UUU      NNN         NNN      CCC                              SSS                  SSS\r
+RRR      RRR         UUU         UUU      NNN         NNN      CCC                              SSS                  SSS\r
+RRR         RRR      UUUUUUUUUUUUUUU      NNN         NNN         CCCCCCCCCCCC      SSSSSSSSSSSS         SSSSSSSSSSSS   \r
+RRR         RRR      UUUUUUUUUUUUUUU      NNN         NNN         CCCCCCCCCCCC      SSSSSSSSSSSS         SSSSSSSSSSSS   \r
+RRR         RRR      UUUUUUUUUUUUUUU      NNN         NNN         CCCCCCCCCCCC      SSSSSSSSSSSS         SSSSSSSSSSSS   \r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  11:23:08\r
+File: DSKB1 :RUNCSS.LST   [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:24
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:2283 \r
+File will be deleted after printing\r
+\f\rRUNCSS - RUN CONTROL SUBROUTINES                 PAGE 1\r
+        T. HASTINGS   8-16-65\r
+\r
+                                00010           XLIST\r
+                                01930          LIST\r
+\r\fRUNCSS - RUN CONTROL SUBROUTINES                 PAGE 7\r
+        T. HASTINGS   8-16-65\r
+\r
+\r
+                                00010   TITLE RUNCSS - RUN CONTROL SUBROUTINES\r
+                                00020   SUBTTL T. HASTINGS   8-16-65\r
+                                00030   EXTERNAL APRCHN,APRCHL,CH6SAC,JBTADR,JOB,JOBAC,JOBDAT,JOBN\r
+                                00040   EXTERNAL JOBPDP,USRDDT,USRPDP,JOBDDT\r
+                                00050   EXTERNAL IORELS,JBTSTS,JOBADR,JOBCDP,JOBPC,JOBREL,JOBSA,JOBSYM\r
+                                00060   EXTERNAL MESPNT,QUANT1,JOBDAC,TTYSTR,STOPU,SCHEDF\r
+                                00070   EXTERNAL UXIT,IOCOMP,DCREQ,DCAVAL,DTREQ,DTAVAL,MTREQ,MTAVAL\r
+                                00080   EXTERNAL CH1XIT,CH2XIT,CH3XIT,CH4XIT,CH5XIT,CH6XIT,CH7XIT\r
+                                00090   EXTERNAL JOBFF,MJOBPD,JOBPDL,IOCOMP,PJOBN,USRLO,USRLO1,USRHI\r
+                                00100   EXTERNAL TTYFNU,RSCHED\r
+\r\fRUNCSS - RUN CONTROL SUBROUTINES                 PAGE 2\r
+        T. HASTINGS   8-16-65\r
+\r
+\r
+                                00130   ;EXIT UUO ROUTINE\r
+\r
+                                00150             INTERNAL EXIT\r
+                                00160   EXTERNAL IORELS,TTYFNU,MESPNT,IOKILL\r
+\r
+        000000' 260140  000000* 00180   EXIT:     PUSHJ PDP,IORELS      ;RELEASE ALL DEVICES\r
+        000001' 260140  000000* 00190             PUSHJ PDP,TTYFNU\r
+        000002' 201100  000005' 00200             MOVEI TAC1,EXMESS\r
+        000003' 260140  000000* 00210             PUSHJ PDP,MESPNT\r
+        000004' 254000  000030' 00220             JRST HOLD ;STOP THIS USER IMMEDIATELY\r
+\r
+        000005'                 00240   EXMESS:   ASCIZ /\r
+        000005' 064250  554222  00250   EXIT\r
+        000006' 520321  200000  00260   /\r
+                                00270   ;RESET UUO ROUTINE\r
+\r
+                                00290             INTERNAL RESET\r
+\r
+        000007' 260140  000000* 00310   RESET:    PUSHJ PDP,IOKILL      ;RELEASE ALL DEVICES\r
+        000010' 260140  000230' 00320             PUSHJ PDP,SETUSR      ;CLEAR PART OF JOB DATA AREA\r
+        000011' 254000  000000* 00330             JRST UXIT             ;AND RETURN TO CALLER\r
+\r\fRUNCSS - RUN CONTROL SUBROUTINES                 PAGE 3\r
+        T. HASTINGS   8-16-65\r
+\r
+\r
+\r
+                                00370   ;COMMON ERROR HANDLING ROUTINES\r
+                                00380   ;DEVDAT MUST BE SET UP TO TTY DDB ON WHICH TO PRINT ERROR MESSAGE\r
+\r
+                                00400   ;HERE ON ERROR DETECTED AT INTERRUPT SERVICE LEVEL\r
+                                00410   ;0(PDP) CONTAINS ADR. OF DEVICE DATA BLOCK CAUSING ERROR\r
+\r
+                                00430   ;CALL     MOVE TAC, PI CHANNEL NO DETECTING ERROR\r
+                                00440   ;         JRST HOLDI\r
+\r
+                                00460   INTERNAL HOLDI,HOLD,HOLDI1\r
+\r
+        000012' 200103  000000  00480   HOLDI:    MOVE TAC1, 0(PDP)     ;DEVICE DATA BLOCK\r
+        000013' 135200  000266' 00490             LDB ITEM, [POINT 9, DEVCHR(TAC1), 8]          ;GET JOB NUMBER\r
+        000014' 261140  000001  00500   HOLDI1:   PUSH PDP, TAC         ;SAVE PI CHANNEL NO.\r
+        000015' 260140  000032' 00510             PUSHJ PDP, HOLDSB\r
+        000016' 262140  000001  00520             POP PDP, TAC\r
+        000017' 254001  000020' 00530             JRST CHNTAB(TAC)      ;GO RESTORE ACS AND DISMISS CHANNEL\r
+\r
+        000020' 254000  000000* 00550   CHNTAB:   JRST RSCHED           ;INTERRUPT ON CLOCK CHANNEL,RESCHEDULE\r
+        000021' 254000  000000* 00560             JRST CH1XIT\r
+        000022' 254000  000000* 00570             JRST CH2XIT\r
+        000023' 254000  000000* 00580             JRST CH3XIT\r
+        000024' 254000  000000* 00590             JRST CH4XIT\r
+        000025' 254000  000000* 00600             JRST CH5XIT\r
+        000026' 254000  000000* 00610             JRST CH6XIT\r
+        000027' 254000  000000* 00620             JRST CH7XIT\r
+\r
+                                00640   ;HERE ON ERROR FROM UUO LEVEL. ERROR MESSAGE ALREADY IN TTY BUFFER\r
+\r
+                                00660   ;DAT=BYTE POINTER TO END OF MESSAGE; DEVDAT=TTY DEV. DATA BLOCK\r
+        000030' 200200  000000* 00670   HOLD:     MOVE ITEM, JOB                ;NO. OF THIS JOB\r
+        000031' 260140  000243' 00680             PUSHJ PDP,WAIT1               ;WAIT UNTIL TTY FINISHED\r
+\r
+        000032' 260140  000000* 00700   HOLDSB:   PUSHJ PDP,CRLF\r
+        000033' 260140  000000* 00710             PUSHJ PDP, TTYSTR     ;START UP TTY TO PRINT ERROR MESSAGE\r
+                                00720   EXTERNAL CRLF\r
+\r
+                                00740   ;ROUTINE TO STOP USER AND FLAG AS ERROR STOP\r
+                                00750   ;CALL:    MOVE ITEM, JOB NUMBER\r
+                                00760   ;         PUSHJ PDP,ESTOP\r
+\r
+\r
+                                00790   INTERNAL ESTOP\r
+\r
+        000034' 205040  002000  00810   ESTOP:    MOVSI TAC,JERR                ;SET ERROR BIT IN JOB STATUS\r
+        000035' 436044  000000* 00820             IORM TAC, JBTSTS(ITEM)\r
+        000036' 254000  000071' 00830             JRST STOP1\r
+\r\fRUNCSS - RUN CONTROL SUBROUTINES                 PAGE 4\r
+        T. HASTINGS   8-16-65\r
+\r
+\r
+\r
+                                00870   ,BLOCK TRANSFER PROGRAM OVER LOADER\r
+\r
+                                00890             INTERNAL LDRBLT\r
+                                00900             EXTERNAL USRREL\r
+\r
+                        000002  00920             PGADR=2               ;AC CONTAINING BEGINNING OF PROGRAM(LOA\r
+\r
+        000037' 260140  000000* 00940   LDRBLT:   PUSHJ PDP,IORELS\r
+        000040' 550051  000002  00950             HRRZ TAC, PGADR (JDAT)        ;ADD OFFSET TO SYMBOL TABLE P\r
+        000041' 402011  000002  00960             SETZM PGADR(JDAT)     ;THEN CLEAR SO SYSMAK WILL STILL WORK\r
+        000042' 550240  000007  00970             HRRZ DAT,PROG\r
+        000043' 270240  000001  00980             ADD DAT,TAC\r
+        000044' 272045  000000* 00990             ADDM TAC,JOBSYM(DAT)\r
+        000045' 504240  000007  01000             HRL DAT,PROG\r
+        000046' 554045  000000* 01010             HLRZ TAC,JOBSA(DAT)\r
+        000047' 313040  000000* 01020             CAMLE TAC,USRREL      ;IS HIGHEST DESTINATION STILL IN USER A\r
+        000050' 200040  000047* 01030             MOVE TAC,USRREL       ;NO. MAKE SURE IT IS.\r
+        000051' 207000  000005  01040             MOVSS DAT\r
+        000052' 270040  000005  01050             ADD TAC,DAT\r
+        000053' 270240  000267' 01060             ADD DAT,[XWD 30,30]   ;MOVE PROGRAM DOWN\r
+        000054' 251241  000000  01070             BLT DAT,(TAC)\r
+        000055' 200051  000000* 01080             MOVE TAC,JOBDDT(JDAT)\r
+        000056' 202040  000000* 01090             MOVEM TAC,USRDDT\r
+        000057' 260140  000230' 01100             PUSHJ PDP,SETUSR\r
+        000060' 260140  000001* 01110             PUSHJ PDP,TTYFNU\r
+        000061' 201100  000064' 01120             MOVEI TAC1,LDRMES\r
+        000062' 260140  000003* 01130             PUSHJ PDP,MESPNT\r
+        000063' 254000  000030' 01140             JRST HOLD\r
+\r
+        000064'                 01160   LDRMES:   ASCIZ /\r
+        000064' 064251  447602  01170   LOADER FINISHED\r
+        000065' 422132  220214\r
+        000066' 446351  151620\r
+        000067' 426101  505000  01180   /\r
+\r\fRUNCSS - RUN CONTROL SUBROUTINES                 PAGE 5\r
+        T. HASTINGS   8-16-65\r
+\r
+\r
+\r
+                                01220   INTERNAL STOP1, STOP2, CONT1, START1\r
+\r
+                        000200  01240   PION=200\r
+                        000400  01250   PIOFF=400\r
+\r
+                                01270   ;ROUTINE TO PUT CURRENT JOB IN IO WAIT\r
+                                01280   ;ROUTINE TO STOP CURRENT JOB\r
+                                01290   ;MAY BE CALLED FROM ANY LEVEL\r
+                                01300   ;CALL;    PUSHJ PDP,STOP0\r
+                                01310   ;         RETURN                ;RETURN HERE IMMEDIATELY, IF CALLED FRO\r
+                                01320   ;PRIORITY CHANNEL THAN CLOCK. OTHERWISE RETURN WHEN JOB IS RUNABLE AG\r
+\r
+                                01340   INTERNAL STOP0\r
+\r
+        000070' 200200  000030* 01360   STOP0:    MOVE ITEM, JOB                ;CURRENT JOB NUMBER\r
+\r
+                                01380   ;ROUTINE TO STOP ANY JOB FROM BEING SCHEDULED\r
+                                01390   ;CALL:\r
+                                01400   ;          MOVE ITEM, JOB NUMBER\r
+                                01410   ;          PUSHJ PDP, STOP1\r
+                                01420   ;          EXIT     ;RETURN HERE IMMEDIATELY, IF CALLED FROM HIGHER\r
+                                01430   ;PRIORITY CHANNEL THAN CLOCK, OTHERWISE RETURN WHEN JOB IC RUNABLE\r
+                                01440   ;CALLED WHEN CONTROL C TYPED OR ON ERROR MESSAGES\r
+\r
+        000071' 205040  200000  01460   STOP1:     MOVSI TAC, RUN\r
+        000072' 700600  000400  01470              CONO PI, PIOFF       ;DONE AT INTERUPT LEVEL HIGHER THAN DT\r
+        000073' 616044  000035* 01480              TDNN TAC, JBTSTS(ITEM)               ;IS RUN BIT ON IN JOB STATUS\r
+        000074' 254000  000105' 01490              JRST STOPA           ;NO\r
+        000075' 413044  000073* 01500              ANDCAB TAC, JBTSTS(ITEM)             ;YES, SO CLEAR IT\r
+        000076' 700600  000200  01510              CONO PI, PION\r
+        000077' 603040  040000  01520              TLNE TAC, DTW        ;WAITING TO USE DECTAPE\r
+        000100' 370000  000000* 01530              SOS DTREQ ;YES, REDUCE REQUEST COUNT\r
+        000101' 603040  020000  01540              TLNE TAC, DCW        ;DATA CONTROL\r
+        000102' 370000  000000* 01550              SOS DCREQ\r
+        000103' 603040  010000  01560              TLNE TAC,MTW         ;MAG TAPE\r
+        000104' 370000  000000* 01570              SOS MTREQ\r
+        000105' 700600  000200  01580   STOPA:     CONO PI, PION        ;MAKE SURE PI ON\r
+        000106' 332000  000000* 01590              SKIPE SCHEDF         ;IS CLOCK IN THE MIDDLE OF SCHEDULING\r
+        000107' 254000  000112' 01600              JRST STOP2           ;YES, MAKE SURE THIS JOB WONT RUN\r
+        000110' 312200  000070* 01610              CAME ITEM, JOB       ;NO, IS THIS JOB CURRENT USER\r
+        000111' 263140  000000  01620              POPJ PDP,            ;NO\r
+                                01630                                   ;YES, MAKE CLOCK RESCHEDULE\r
+\r
+                                01650   ;ROUTINE TO CAUSE CLOCK TO RESCHEDULE\r
+                                01660   ;CALL :\r
+                                01670   ;          PUSHJ PDP, STOP2\r
+                                01680   ;          EXIT         ;RETURN WHEN JOB RUNABLE AGAIN\r
+\r
+                                01700   EXTERNAL PICLK\r
+\r
+        000112' 700600  000400  01720   STOP2:     CONO PI, PIOFF       ;PREVENT CLOCK INTERRUPT\r
+\r\fRUNCSS - RUN CONTROL SUBROUTINES                 PAGE 5-1\r
+        T. HASTINGS   8-16-65\r
+\r
+        000113' 476000  000000* 01730              SETOM STOPU          ;SET FLAG FOR CLOCK ROUTINE\r
+        000114' 700600  000000* 01740              CONO PI,PICLK        ;REQUEST CLOCK INTERRUPT AND TURN PI ON\r
+                                01750                                   ;CLOCK WILL TRAP IMMEDIATELY IF AT UUO\r
+        000115' 263140  000000  01760              POPJ PDP,            ;RETURN HERE WHEN JOB RUNABLE AGAIN\r
+\r\fRUNCSS - RUN CONTROL SUBROUTINES                 PAGE 6\r
+        T. HASTINGS   8-16-65\r
+\r
+\r
+\r
+                                01800   ;SUBROUTINE TO SETUP A MONITOR JOB TO BE RUN\r
+                                01810   ;JOB MUST HAVE CORE ASSIGNED\r
+                                01820   ;CALL:    MOVE ITEM, JOB NUMBER\r
+                                01830   ;         HRRI TAC1, ADDRESS OF MONITOR JOB(A SUBROUTINE)\r
+                                01840   ;         HRLI TAC1, RETURN ADDRESS WHEN JOB FINISHED\r
+                                01850   ;         PUSHJ PDP, MONJOB\r
+                                01860   ;         RETURN IMMEDIATELY IF CALLED FROM CLOCK LEV OR HIGHER\r
+\r
+                                01880   ;ALL ACS WILL BE SAVED FOR THE MONITOR JOB\r
+\r
+                                01900   INTERNAL MONJOB\r
+                                01910   EXTERNAL JOBDAC,JOBDHI,JOBPDP,MJOBPD,JOBPDL,JBTADR\r
+\r
+        000116' 261140  000002  01930   MONJOB:   PUSH PDP, TAC1        ;SAVE ARG.\r
+        000117' 550444  000000* 01940             HRRZ JDAT,JBTADR(ITEM)        ;ADDRESS OF JOBS DATA AREA\r
+        000120' 201111  000000* 01950             MOVEI TAC1, JOBDAC(JDAT)      ;SAVE 0-17 IN DUMP ACS\r
+        000121' 251111  000000* 01960             BLT TAC1, JOBDHI(JDAT)        ;IN JOB DATA AREA\r
+        000122' 205100  000000* 01970             MOVSI TAC1,MJOBPD     ;SET UP PD LIST IN JOB DATA AREA\r
+        000123' 541111  000000* 01980             HRRI TAC1, JOBPDL(JDAT)\r
+        000124' 554043  000000  01990             HLRZ TAC, (PDP)       ;WITH RETURN AS FIRST ITEM\r
+        000125' 261100  000001  02000             PUSH TAC1, TAC\r
+        000126' 201051  000120* 02010             MOVEI TAC, JOBDAC(JDAT)\r
+        000127' 202101  000003  02020             MOVEM TAC1,PDP(TAC)\r
+        000130' 262140  000002  02030             POP PDP, TAC1         ;SET TO RUN\r
+        000131' 405100  777777  02040             ANDI TAC1, 777777     ;FALL INTO STARTU\r
+\r
+                                02060   ;ROUTINE TO START A JOB AND LEAVE CONSOLE IN COMMAND MODE\r
+                                02070   ;CALL:    MOVE TAC1, START PC\r
+                                02080   ;         MOVE ITEM, JOB NUMBER\r
+                                02090   ;         PUSHJ PDP, STARTU\r
+                                02100   ;         RETURN IMMEDIATELY\r
+                                02110   INTERNAL STARTM\r
+                                02120   EXTERNAL TTYURC\r
+\r
+        000132' 260140  000140' 02140   STARTM:   PUSHJ PDP, START1\r
+        000133' 254000  000000* 02150             JRST TTYURC\r
+\r
+                                02170   ;START WITH TTY IN USER MODE\r
+\r
+                                02190   INTERNAL STARTU\r
+                                02200   EXTERNAL TTYSET\r
+\r
+        000134' 260140  000140' 02220   STARTU:   PUSHJ PDP,START1\r
+        000135' 254000  000000* 02230             JRST TTYSET           ;SET SCANNER TO CALL SETRUN WHEN\r
+                                02240                                   ;CR-LF AND INITIALIZE TTY\r
+\r
+                                02260   INTERNAL CONTM\r
+                                02270   EXTERNAL TTYURC\r
+\r
+        000136' 254000  000133* 02290   CONTM:    JRST TTYURC\r
+\r
+\r\fRUNCSS - RUN CONTROL SUBROUTINES                 PAGE 6-1\r
+        T. HASTINGS   8-16-65\r
+\r
+                                02310   ;ROUTINE TO CONTINUE A JOB FROM COMMAND MODE\r
+                                02320   ;CALL:    MOVE ITEM, JOB NUMBER\r
+                                02330   ;         PUSHJ PDP, CONTU\r
+                                02340   ;         RETURN IMMEDIATELY\r
+                                02350   INTERNAL CONTU\r
+                                02360   EXTERNAL TTYURC\r
+\r
+        000137' 254000  000136* 02380   CONTU:    JRST TTYURC           ;SET SCANNER TO CALL SETRUN WHEN CR-LF\r
+\r\fRUNCSS - RUN CONTROL SUBROUTINES                 PAGE 7\r
+        T. HASTINGS   8-16-65\r
+\r
+\r
+\r
+                                02420   ;ROUTINE TO SET JOB STATE TO BE SCHEDULED TO RUN\r
+                                02430   ;WITH SPECIFIED STARTING ADDRESS INCLUDING PC FLAGS\r
+                                02440   ;CALL:    MOVE TAC1,STARTING PC\r
+                                02450   ;         MOVE ITEM, JOB NUMBER\r
+                                02460   ;         MOVE JDAT, ADDRESS OF JOBS DATA AREA(THERE MUST BE ONE)\r
+                                02470   ;         PUSHJ PDP, START1\r
+                                02480             ;         EXIT        RETURN HERE IMMEDIATELY\r
+\r
+        000140' 200051  000000* 02500   START1:   MOVE TAC,JOBPC(JDAT)          ;GET OLD PC\r
+        000141' 202111  000140* 02510             MOVEM TAC1,JOBPC(JDAT)        ;STORE NEW PC\r
+        000142' 603100  010000  02520             TLNE TAC1,USRMOD              ;IS NEW PC IN USER AREA?\r
+        000143' 603040  010000  02530             TLNE TAC,USRMOD               ;YES, WAS OLD PC IN USER AREA\r
+        000144' 254000  000150' 02540             JRST START2                   ;YES,DUMP ACS ARE HIS\r
+        000145' 205111  000000  02550             MOVSI TAC1,(JDAT)             ;NO, UUO ACS ARE HIS\r
+        000146' 541111  000126* 02560             HRRI TAC1,JOBDAC(JDAT)        ;MOVE THEM TO DUMP ACS\r
+        000147' 251111  000121* 02570             BLT TAC1,JOBDHI(JDAT)\r
+        000150' 205100  172000  02580   START2:   MOVSI TAC1,JERR+DCW+DTW+MTW+JIOW      ;CLEAR WAIT BITS\r
+        000151' 412044  000075* 02590             ANDCAM TAC, JBTSTS(ITEM)      ;IN JOB STATUS WORD\r
+\r
+                                02610   ;ROUTINE TO CONTINUE ANY JOB AT CURRENT PC\r
+                                02620   ;CALL:\r
+                                02630   ;         MOVE ITEM, JOB NUMBER\r
+                                02640   ;         PUSHJ PDP, CONT1\r
+                                02650   ;         EXIT      RETURN IMMEDIATELY\r
+\r
+        000152' 263140  000000  02670   CONT1:    POPJ PDP,\r
+\r\fRUNCSS - RUN CONTROL SUBROUTINES                 PAGE 8\r
+        T. HASTINGS   8-16-65\r
+\r
+\r
+\r
+                                02710   ;ROUTINE TO SET JOB STATUS RUN BIT\r
+                                02720   ;CALL:    MOVE ITEM,JOB NUMBER\r
+                                02730   ;         PUSHJ PDP,SETRUN\r
+\r
+                                02750             INTERNAL SETRUN\r
+        000153' 205040  200000  02760   SETRUN:   MOVSI TAC,RUN\r
+        000154' 437044  000151* 02770             IORB TAC,JBTSTS(ITEM)\r
+        000155' 607040  020000  02780             TLNN TAC,DCW          ;IS JOB WAITING FOR DATA CONTROL?\r
+        000156' 254000  000161' 02790             JRST CONT2            ;NO\r
+        000157' 357000  000102* 02800             AOSG DCREQ            ;YES, INCREMENT REQUEST COUNT\r
+        000160' 476000  000000* 02810             SETOM DCAVAL          ;AND SET DC AS AVAIL IF NOT IN USE\r
+        000161' 607040  040000  02820   CONT2:    TLNN TAC,DTW          ;DECTAPE?\r
+        000162' 254000  000165' 02830             JRST CONT3            ;NO\r
+        000163' 357000  000100* 02840             AOSG DTREQ\r
+        000164' 476000  000000* 02850             SETOM DTAVAL\r
+        000165' 607040  010000  02860   CONT3:    TLNN TAC,MTW          ;MAG TAPE?\r
+        000166' 254000  000171' 02870             JRST CONT4\r
+        000167' 357000  000104* 02880             AOSG MTREQ\r
+        000170' 476000  000000* 02890             SETOM MTAVAL\r
+        000171' 603040  400000  02900   CONT4:    TLNE TAC,IOWS         ;IO WAIT SATISFIED?\r
+        000172' 350000  000000* 02910             AOS IOCOMP            ;YES\r
+        000173' 201040  000000* 02920             MOVEI TAC,QUANT1      ;SET TIME TO RUN FOR STRAIGHT QUEUE COM\r
+        000174' 542044  000154* 02930             HRRM TAC,JBTSTS(ITEM)         ;RESPONSE IS FINISHED\r
+        000175' 332000  000110* 02940             SKIPE JOB ;IS NULL JOB RUNNING?\r
+        000176' 263140  000000  02950             POPJ PDP,             ;NO\r
+        000177' 254000  000112' 02960             JRST STOP2                    ;YES, RESCHEDULE\r
+\r\fRUNCSS - RUN CONTROL SUBROUTINES                 PAGE 9\r
+        T. HASTINGS   8-16-65\r
+\r
+\r
+\r
+                                03000   ,ROUTINE TO INIATE A WAIT FOR MAG TAPE. DECTAPE, AND DATA CONTROL AC\r
+                                03010             INTERNAL MTWAIT\r
+        000200' 261140  000002  03020   MTWAIT:   PUSH PDP,TAC1\r
+        000201' 515100  010000  03030             HRLZI TAC1,MTW\r
+        000202' 261140  000001  03040   DVWAIT:   PUSH PDP, TAC\r
+        000203' 200040  000175* 03050             MOVE TAC,JOB\r
+        000204' 436101  000174* 03060             IORM TAC1,JBTSTS(TAC)\r
+        000205' 260140  000112' 03070             PUSHJ PDP,STOP2\r
+        000206' 262140  000001  03080             POP PDP,TAC\r
+        000207' 262140  000002  03090             POP PDP,TAC1\r
+        000210' 263140  000000  03100             POPJ PDP,\r
+                                03110             INTERNAL DTWAIT\r
+        000211' 261140  000002  03120   DTWAIT:   PUSH PDP,TAC1\r
+        000212' 515100  040000  03130             HRLZI TAC1,DTW\r
+        000213' 254000  000202' 03140             JRST DVWAIT\r
+                                03150             INTERNAL DCWAIT\r
+        000214' 261140  000002  03160   DCWAIT:   PUSH PDP,TAC1\r
+        000215' 515100  020000  03170             HRLZI TAC1,DCW\r
+        000216' 254000  000202' 03180             JRST DVWAIT\r
+                                03190             INTERNAL DVWAIT\r
+\r\fRUNCSS - RUN CONTROL SUBROUTINES                 PAGE 10\r
+        T. HASTINGS   8-16-65\r
+\r
+\r
+\r
+\r
+                                03240   ,DEC 06 00 EX JOB L PT PRE 02 SETIOD\r
+                                03250   ,H.R. MORSE    64-12-26\r
+                                03260   ,CALLING SEQUENCE\r
+                                03270   ,     PUSHJ PDP, SETIOD\r
+                                03280   ,     EXIT              ALWAYS RETURNS HERE\r
+                                03290   ,SETS THEBIT (IOWS:=1) IN THE JOB STATUS WORD (JBTSTS)\r
+                                03300   ,INFORMING THE SYSTEM THAT AN I/O WAIT HAS BEEN COMPLETED\r
+                                03310   ,AND THE JOB IS READY TO RUN AGAIN.\r
+                                03320   ,MONITOR INTERFACE\r
+                                03330   ,     STORAGE: 6\r
+                                03340   ,     SYMBOLS SET/USED:\r
+                                03350   ,          ACCUMULATORS:   DEVDAT U      TAC S/U\r
+                                03360   ,                          PDP U         TAC1 S/U\r
+                                03370   ,          DEVICE DATA BLOCK: DEVCHR U\r
+                                03380   ,          SYSTEM DATA STORAGE: JBTSTS S/U\r
+                                03390   ,          JOB STATUS WORD:    IOWS S\r
+                                03400             INTERNAL SETIOD\r
+\r
+        000217' 350000  000172* 03420   SETIOD:   AOS IOCOMP\r
+        000220' 135040  000000* 03430             LDB TAC,PJOBN\r
+        000221' 205100  400000  03440             MOVSI TAC1, IOWS      ;SET IO-WAIT SATISFIED BIT\r
+        000222' 436101  000204* 03450             IORM TAC1, JBTSTS(TAC)\r
+        000223' 205100  100000  03460             MOVSI TAC1, JIOW              ;CLEAR JOB IO-WAIT BIT\r
+        000224' 412101  000222* 03470             ANDCAM TAC1, JBTSTS(TAC)\r
+        000225' 336000  000203* 03480             SKIPN JOB             ;IS NULL JOB RUNNING\r
+        000226' 254000  000112' 03490             JRST STOP2                    ;YES, FORCE CLOCK TO RE-SCHED\r
+        000227' 263140  000000  03500             POPJ PDP,;                        RETURN\r
+\r\fRUNCSS - RUN CONTROL SUBROUTINES                 PAGE 11\r
+        T. HASTINGS   8-16-65\r
+\r
+\r
+\r
+\r
+                                03550   ;SET CURRENT JOB AREA IN SYSTEM AREA\r
+\r
+                                03570             INTERNAL SETUSR\r
+\r
+        000230' 541040  000000* 03590   SETUSR:   HRRI TAC,USRLO1\r
+        000231' 505040  000000* 03600             HRLI TAC,USRLO\r
+        000232' 402000  000231* 03610             SETZM USRLO\r
+        000233' 251040  000000* 03620             BLT TAC,USRHI\r
+        000234' 205040  000122* 03630             MOVSI TAC,MJOBPD\r
+        000235' 541040  000123* 03640             HRRI TAC,JOBPDL\r
+        000236' 202040  000000* 03650             MOVEM TAC,USRPDP\r
+        000237' 200440  000000* 03660             MOVE JDAT,JOBDAT\r
+        000240' 544051  000046* 03670             HLR TAC,JOBSA(JDAT)\r
+        000241' 542051  000000* 03680             HRRM TAC,JOBFF(JDAT)\r
+        000242' 263140  000000  03690             POPJ PDP,\r
+\r\fRUNCSS - RUN CONTROL SUBROUTINES                 PAGE 12\r
+        T. HASTINGS   8-16-65\r
+\r
+\r
+\r
+                                03730   ,DEC 06 00 EX COM L PT PRE 02 WAIT1,WSYNC\r
+                                03740   ,H.R. MORSE   64-12-26\r
+                                03750   ,CALLING SEQUENCE\r
+                                03760   ,     PUSHJ PDP, WAIT1\r
+                                03770   ,     EXIT              ALWAYS RETURNS HERE\r
+\r
+                                03790   ,IF THE DEVICE IS INACTIVE (IOACT=0), RETURNS TO EXIT. OTHERWISE, SET\r
+                                03800   ,IOW:=1 AND ENTERS WAIT UNLESS IOACT BECOMES ZERO BEFORE THE\r
+                                03810   ,JUMP IS MADE, IN WHICH CHASEIT SETS IOW:=0 AND RETURNS TO EXIT.\r
+                                03820   ,ON LEAVING THE WAIT STAT, RETURNS TO EXIT.\r
+                                03830   ,THIS ROUTINE PREVENTS THE STATE IOACT=0 AND IOW=1 FROM OCCURING\r
+                                03840   ,CALLING SEQUENCE\r
+                                03850   ,     PUSHJ PDP, WSYNC\r
+                                03860   ,     EXIT              ALWAYS RETURNS HERE\r
+                                03870   ,SETS IOW:=1 AND ENTERS WAIT ROUTINE. RETURNS TO EXIT WHEN IOACT=0.\r
+                                03880   ,MONITOR INTERFACE\r
+                                03890   ,     STORAGE:          13\r
+                                03900   ,     ROUTINES CALLED:  WAIT\r
+                                03910   ,     SYMBOLS SET/USED: \r
+                                03920   ,        ACCUMULATORS:     DEVDAT U     PDP U\r
+                                03930   ,                          IOS S/U      TAC S/U\r
+                                03940   ,     DEVICE DATA BLOCK:   DEVIOS S/U\r
+                                03950   ,     IO STATUS WORD:      IOACT U\r
+                                03960   ,                          IOW S/U\r
+\r\fRUNCSS - RUN CONTROL SUBROUTINES                 PAGE 13\r
+        T. HASTINGS   8-16-65\r
+\r
+\r
+\r
+                                04000             INTERN WAIT1, WSYNC\r
+\r
+                                04020   ; WAIT1 WAITS UNTIL DEVICE IS COMPLETELY INACTIVE BEFORE RETURNING\r
+        000243' 200006  000002  04030   WAIT1:    MOVE IOS,DEVIOS(DEVDAT)\r
+        000244' 606000  010000  04040             TRNN IOS, IOACT               ;IS DEVICE ACTIVE? (IOACT=1?)\r
+        000245' 263140  000000  04050             POPJ PDP,;                    RETURN\r
+        000246' 260140  000250' 04060             PUSHJ PDP,WSYNC;              WAIT\r
+        000247' 254000  000243' 04070             JRST WAIT1\r
+\r
+                                04090   ;WSYNC IS CALLED TO WAIT UNTIL SETIOD IS CALLED BY INTERRUPT SERVICE\r
+                                04100   ;IE  UNTIL CURRENT BUFFER ACTIVITY IS COMPLETED\r
+                                04110   ;DEVDAT MUST BE SET UP\r
+\r
+                        000200  04130   PION=200\r
+                        000400  04140   PIOFF=400\r
+\r
+                                04160   WSYNC:    REPEAT 0,< PUSH PDP, TAC      ;MUST THESE BE SAVED?\r
+                                04170    PUSH PDP, TAC1\r
+                                04180    PUSH PDP, DAT>\r
+        \r
+        000250' 205000  000001  04200             MOVSI IOS, IOW\r
+        000251' 205640  100000  04210             MOVSI AC1, JIOW\r
+        000252' 200700  000225* 04220             MOVE AC2, JOB\r
+        000253' 201740  010000  04230             MOVEI AC3, IOACT\r
+        000254' 700600  000400  04240             CONO PI, PIOFF                ;TURN PI OFF\r
+        000255' 616746  000002  04250             TDNN AC3, DEVIOS(DEVDAT)      ;IS THE DEVICE ACTIVE?\r
+        000256' 254000  000263' 04260             JRST WSYNC1                   ;NO\r
+        000257' 436006  000002  04270             IORM IOS, DEVIOS(DEVDAT)      ;YES, SET DEVICE IO-WAIT BIT\r
+        000260' 436656  000224* 04280             IORM AC1, JBTSTS(AC2)         ;AND JOB IO-WAIT BIT\r
+        000261' 700600  000200  04290             CONO PI, PION                 ;TURN PI ON\r
+        000262' 260140  000112' 04300             PUSHJ PDP, STOP2              ;STOP THIS USER BY FORCING CL\r
+                                04310                                   ;RETURN WHEN IO-WAIT FINISHED\r
+        000263' 700600  000200  04320   WSYNC1:   CONO PI, PION\r
+        000264' 413006  000002  04330             ANDCAB IOS, DEVIOS(DEVDAT)    ;CLEAR DEVICE IO-WAIT BIT\r
+                                04340   REPEAT 0,< POP PDP, DAT\r
+                                04350    POP PDP, TAC1\r
+                                04360    POP PDP, TAC>\r
+\r
+        000265' 263140  000000  04380             POPJ PDP,\r
+\r
+                                04400             END,\r
+        000266' 331102  000001\r
+        000267' 000030  000030\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 000270\r
+\r
+8K CORE USED\r
+\r\fRUNCSS - RUN CONTROL SUBROUTINES                 PAGE 14\r
+        SYMBOL TABLE\r
+\r
+                000317  \r
+A               000000  INT\r
+AC1             000015  INT\r
+AC2             000016  INT\r
+AC3             000017  INT\r
+AL              000001  INT\r
+APRCHL          000000  EXT\r
+APRCHN          000000  EXT\r
+ASSCON          400000  INT\r
+ASSPRG          200000  INT\r
+B               000014  INT\r
+BUFPNT          000012  INT\r
+BUFWRD          000013  INT\r
+CH1XIT          000021' EXT\r
+CH2XIT          000022' EXT\r
+CH3XIT          000023' EXT\r
+CH4XIT          000024' EXT\r
+CH5XIT          000025' EXT\r
+CH6SAC          000000  EXT\r
+CH6XIT          000026' EXT\r
+CH7XIT          000027' EXT\r
+CHNTAB          000020' \r
+CLOSB           002000  INT\r
+CLSIN           000002  INT\r
+CLSOUT          000001  INT\r
+CONT1           000152' INT\r
+CONT2           000161' \r
+CONT3           000165' \r
+CONT4           000171' \r
+CONTM           000136' INT\r
+CONTU           000137' INT\r
+CRLF            000032' EXT\r
+D               000017  INT\r
+DAT             000005  INT\r
+DCAVAL          000160' EXT\r
+DCL             000001  INT\r
+DCREQ           000157' EXT\r
+DCW             020000  INT\r
+DCWAIT          000214' INT\r
+DDI             000007  INT\r
+DDO             000006  INT\r
+DDTMEM          000037  INT\r
+DDTSYM          000036  INT\r
+DEN             000004  INT\r
+DEVADR          000007  INT\r
+DEVBUF          000006  INT\r
+DEVCHR          000001  INT\r
+DEVCTR          000011  INT\r
+DEVDAT          000006  INT\r
+DEVIAD          000007  INT\r
+DEVIOS          000002  INT\r
+DEVLOG          000005  INT\r
+DEVMOD          000004  INT\r
+\r\fRUNCSS - RUN CONTROL SUBROUTINES                 PAGE 14-1\r
+        SYMBOL TABLE\r
+\r
+DEVNAM          000000  INT\r
+DEVOAD          000010  INT\r
+DEVPTR          000010  INT\r
+DEVSER          000003  INT\r
+DGF             000012  INT\r
+DIN             000003  INT\r
+DLK             000005  INT\r
+DOU             000002  INT\r
+DR              000016  INT\r
+DRL             000000  INT\r
+DSI             000011  INT\r
+DSO             000010  INT\r
+DTAVAL          000164' EXT\r
+DTREQ           000163' EXT\r
+DTW             040000  INT\r
+DTWAIT          000211' INT\r
+DVAVAL          000040  INT\r
+DVCDR           100000  INT\r
+DVDIR           000004  INT\r
+DVDIRI          400000  INT\r
+DVIN            000002  INT\r
+DVLPT           040000  INT\r
+DVMTA           000020  INT\r
+DVOUT           000001  INT\r
+DVTTY           000010  INT\r
+DVWAIT          000202' INT\r
+ENTRB           020000  INT\r
+ESTOP           000034' INT\r
+EXIT            000000' INT\r
+EXMESS          000005' \r
+HOLD            000030' INT\r
+HOLDI           000012' INT\r
+HOLDI1          000014' INT\r
+HOLDSB          000032' \r
+I               000010  INT\r
+IB              000013  INT\r
+IBUFB           200000  INT\r
+INITB           400000  INT\r
+INPB            010000  INT\r
+IO              000020  INT\r
+IOACT           010000  INT\r
+IOBEG           000002  INT\r
+IOBKTL          040000  INT\r
+IOCOMP          000217' EXT\r
+IOCON           000040  INT\r
+IODEND          020000  INT\r
+IODERR          200000  INT\r
+IODISC          400000  INT\r
+IODONE          400000  INT\r
+IODTER          100000  INT\r
+IOEND           000040  INT\r
+IOFST           000004  INT\r
+IOIMPM          400000  INT\r
+\r\fRUNCSS - RUN CONTROL SUBROUTINES                 PAGE 14-2\r
+        SYMBOL TABLE\r
+\r
+IOKILL          000007' EXT\r
+IONRCK          000100  INT\r
+IORDEL          000100  INT\r
+IORELS          000037' EXT\r
+IORET           000020  INT\r
+IOS             000000  INT\r
+IOSTRT          000010  INT\r
+IOUSE           400000  INT\r
+IOW             000001  INT\r
+IOWC            000020  INT\r
+IOWS            400000  INT\r
+ITEM            000004  INT\r
+JBFADR          000000  INT\r
+JBFCTR          000002  INT\r
+JBFPTR          000001  INT\r
+JBTADR          000117' EXT\r
+JBTSTS          000260' EXT\r
+JBUF            000005  INT\r
+JDAT            000011  INT\r
+JERR            002000  INT\r
+JIOW            100000  INT\r
+JNA             004000  INT\r
+JOB             000252' EXT\r
+JOBAC           000000  EXT\r
+JOBADR          000000  EXT\r
+JOBCDP          000000  EXT\r
+JOBDAC          000146' EXT\r
+JOBDAT          000237' EXT\r
+JOBDDT          000055' EXT\r
+JOBDHI          000147' EXT\r
+JOBFF           000241' EXT\r
+JOBN            000000  EXT\r
+JOBPC           000141' EXT\r
+JOBPDL          000235' EXT\r
+JOBPDP          000000  EXT\r
+JOBREL          000000  EXT\r
+JOBSA           000240' EXT\r
+JOBSYM          000044' EXT\r
+LDRBLT          000037' INT\r
+LDRMES          000064' \r
+LOOKB           040000  INT\r
+MESPNT          000062' EXT\r
+MJOBPD          000234' EXT\r
+MONJOB          000116' INT\r
+MTAVAL          000170' EXT\r
+MTREQ           000167' EXT\r
+MTW             010000  INT\r
+MTWAIT          000200' INT\r
+OBUFB           100000  INT\r
+OUTPB           004000  INT\r
+PDP             000003  INT\r
+PGADR           000002  \r
+PI              000004  SPD\r
+\r\fRUNCSS - RUN CONTROL SUBROUTINES                 PAGE 14-3\r
+        SYMBOL TABLE\r
+\r
+PICHN           000100  INT\r
+PICLK           000114' EXT\r
+PIOFF           000400  \r
+PION            000200  \r
+PJOBN           000220' EXT\r
+PROG            000007  INT\r
+QUANT1          000173' EXT\r
+RESET           000007' INT\r
+RSCHED          000020' EXT\r
+RUN             200000  INT\r
+RUNABL          204000  INT\r
+SCHEDF          000106' EXT\r
+SETIOD          000217' INT\r
+SETRUN          000153' INT\r
+SETUSR          000230' INT\r
+START1          000140' INT\r
+START2          000150' \r
+STARTM          000132' INT\r
+STARTU          000134' INT\r
+STOP0           000070' INT\r
+STOP1           000071' INT\r
+STOP2           000112' INT\r
+STOPA           000105' \r
+STOPU           000113' EXT\r
+TAC             000001  INT\r
+TAC1            000002  INT\r
+TEM             000010  INT\r
+TTYATC          020000  INT\r
+TTYFNU          000060' EXT\r
+TTYSET          000135' EXT\r
+TTYSTR          000033' EXT\r
+TTYURC          000137' EXT\r
+TTYUSE          010000  INT\r
+USRDDT          000056' EXT\r
+USRHI           000233' EXT\r
+USRLO           000232' EXT\r
+USRLO1          000230' EXT\r
+USRMOD          010000  INT\r
+USRPDP          000236' EXT\r
+USRREL          000050' EXT\r
+UUO             000014  INT\r
+UXIT            000011' EXT\r
+WAIT1           000243' INT\r
+WSYNC           000250' INT\r
+WSYNC1          000263' \r
+\f   SSSSSSSSSSSS         AAAAAAAAA         VVV         VVV         GGGGGGGGGGGG      EEEEEEEEEEEEEEE      TTTTTTTTTTTTTTT\r
+   SSSSSSSSSSSS         AAAAAAAAA         VVV         VVV         GGGGGGGGGGGG      EEEEEEEEEEEEEEE      TTTTTTTTTTTTTTT\r
+   SSSSSSSSSSSS         AAAAAAAAA         VVV         VVV         GGGGGGGGGGGG      EEEEEEEEEEEEEEE      TTTTTTTTTTTTTTT\r
+SSS                  AAA         AAA      VVV         VVV      GGG                  EEE                        TTT      \r
+SSS                  AAA         AAA      VVV         VVV      GGG                  EEE                        TTT      \r
+SSS                  AAA         AAA      VVV         VVV      GGG                  EEE                        TTT      \r
+SSS                  AAA         AAA      VVV         VVV      GGG                  EEE                        TTT      \r
+SSS                  AAA         AAA      VVV         VVV      GGG                  EEE                        TTT      \r
+SSS                  AAA         AAA      VVV         VVV      GGG                  EEE                        TTT      \r
+   SSSSSSSSS         AAA         AAA      VVV         VVV      GGG                  EEEEEEEEEEEE               TTT      \r
+   SSSSSSSSS         AAA         AAA      VVV         VVV      GGG                  EEEEEEEEEEEE               TTT      \r
+   SSSSSSSSS         AAA         AAA      VVV         VVV      GGG                  EEEEEEEEEEEE               TTT      \r
+            SSS      AAAAAAAAAAAAAAA      VVV         VVV      GGG   GGGGGGGGG      EEE                        TTT      \r
+            SSS      AAAAAAAAAAAAAAA      VVV         VVV      GGG   GGGGGGGGG      EEE                        TTT      \r
+            SSS      AAAAAAAAAAAAAAA      VVV         VVV      GGG   GGGGGGGGG      EEE                        TTT      \r
+            SSS      AAA         AAA         VVV   VVV         GGG         GGG      EEE                        TTT      \r
+            SSS      AAA         AAA         VVV   VVV         GGG         GGG      EEE                        TTT      \r
+            SSS      AAA         AAA         VVV   VVV         GGG         GGG      EEE                        TTT      \r
+SSSSSSSSSSSS         AAA         AAA            VVV               GGGGGGGGG         EEEEEEEEEEEEEEE            TTT      \r
+SSSSSSSSSSSS         AAA         AAA            VVV               GGGGGGGGG         EEEEEEEEEEEEEEE            TTT      \r
+SSSSSSSSSSSS         AAA         AAA            VVV               GGGGGGGGG         EEEEEEEEEEEEEEE            TTT      \r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  11:23:08\r
+File: DSKB1 :SAVGET.LST   [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:24
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:2263 \r
+File will be deleted after printing\r
+\f\rSAVGET- SAVE AND GET COMMANDS                 PAGE 1\r
+        T.HASTINGS 8-4-64\r
+\r
+                                00010           XLIST\r
+                                01930          LIST\r
+\r\fSAVGET- SAVE AND GET COMMANDS                 PAGE 7\r
+        T.HASTINGS 8-4-64\r
+\r
+\r
+\r
+                                00020   TITLE SAVGET- SAVE AND GET COMMANDS\r
+                                00030   SUBTTL T.HASTINGS 8-4-64\r
+                                00040   ;ROUTINE TO SET UP SAVE-GET DEVICE FILE-NAME TABLE\r
+                                00050   ;CALLED BY COMMAND SETUP ROUTINES AND SAVE GET\r
+\r
+                                00070   INTERNAL SGSET\r
+                                00080   EXTERNAL CTEXT1,SETUSR,HOLD,MONJOB\r
+                                00090   EXTERNAL CONMES,NOTENF,CPOPJ1\r
+\r
+        000000' 261140  000002  00110   SGSET:    PUSH PDP, TAC1        ;SAVE STARTTING ADDRESS(SAVJOB OR GETJOB)\r
+        000001' 260140  000000* 00120             PUSHJ PDP, CTEXT1     ;GET DEVICE NAME FROM COMMAND STRING\r
+        000002' 322100  000012' 00130             JUMPE TAC1,SGSET1\r
+        000003' 202107  000017  00140             MOVEM TAC1, 17(PROG)          ;SAVE IN UUO AC AREA\r
+        000004' 260140  000001* 00150             PUSHJ PDP, CTEXT1     ;GET FILE NAME FROM COMMAND STRING\r
+        000005' 322100  000012' 00160             JUMPE TAC1,SGSET1\r
+        000006' 202107  000014  00170             MOVEM TAC1, 14(PROG)\r
+        000007' 262140  000002  00180             POP PDP, TAC1         ;SCHEDULE MONITOR JOB\r
+        000010' 260140  000000* 00190             PUSHJ PDP, MONJOB\r
+        000011' 254000  000000* 00200             JRST CPOPJ1           ;SUPPRESS CR-LF PRINTED BY COMINI\r
+\r
+        000012' 262140  000002  00220   SGSET1:   POP PDP,TAC1\r
+        000013' 254000  000000* 00230             JRST NOTENF\r
+\r\fSAVGET- SAVE AND GET COMMANDS                 PAGE 2\r
+        T.HASTINGS 8-4-64\r
+\r
+\r
+\r
+                                00270   ;THIS JOB SAVES A JOB AREA ON RETRIEVABLE STORAGE\r
+                                00280   ;THIS JOB RUNS IN EXEC. MODE AND CALLS IO ROUTINES DIRECTLY\r
+                                00290   ;NO ATTTEMPT IS MADE TO SAVE STATUS OF IO DEVICES, JOBPDP, OR ACS\r
+                                00300   ;IN FACT THE ONLY USEFUL THING WHICH MAY BE DONE WITH A JOB AREA\r
+                                00310   ;AFTER IT HAS BEEN SAVED IS TO START EXECUTION OVER AT THE STARTING \r
+                                00320   ;ADDRESS\r
+\r
+                                00340   INTERNAL SAVJOB\r
+                                00350   EXTERNAL USRPDP, OUT, USRREL,JOBPFI,JOB41,JOBS41,THSDAT\r
+\r
+                        000012  00370   T=BUFPNT   ;TEMPORARY ACS\r
+                        000013  00380   T1=BUFWRD\r
+\r
+        000014' 265040  000076' 00400   SAVJOB:   JSP TAC,  SG1   ;SET UP ACS AND ASSIGN DEVICE\r
+        000015' 200551  000000* 00410             MOVE T1,JOB41(JDAT) ;SAVE USR UUOI HANDLING JSR\r
+        000016' 202551  000000* 00420             MOVEM T1,JOBS41(JDAT)\r
+        000017' 200540  000000* 00430             MOVE T1,THSDAT      ;SET DATE IN THIRD WORD\r
+        000020' 202547  000016  00440             MOVEM T1,16(PROG)\r
+        000021' 260152  000004  00450             PUSHJ PDP, DEN(T)   ;ENTER FILE NAME IN DIRECTORY\r
+        000022' 254000  000031' 00460             JRST SAV4           ;DIRECTORY FULL\r
+        000023' 260140  000134' 00470             PUSHJ PDP, SETLST   ;SET DUMP COMMAND LIST IN USER ARE\r
+        000024' 260140  000000* 00480             PUSHJ PDP, OUT      ;DO AN OUTPUT\r
+        000025' 265040  000054' 00490             JSP TAC,SG2\r
+\r
+        000026' 452370  220246  00510             ASCIZ /JOB SAVED\r
+        000027' 406550  542032\r
+        000030' 050000  000000  00520   /\r
+        000031' 265040  000054' 00530   SAV4:     JSP TAC,SG2\r
+\r
+        000032' 422232  242606  00550             ASCIZ /DIRECTORY FULL\r
+        000033' 522372  254500\r
+        000034' 432531  446032\r
+        000035' 050000  000000  00560   /\r
+\r\fSAVGET- SAVE AND GET COMMANDS                 PAGE 3\r
+        T.HASTINGS 8-4-64\r
+\r
+\r
+\r
+\r
+                                00610   ;THIS JOB GETS A JOB AREA FROM RETRIEVABLE DEVICE\r
+                                00620   ;THIS JOB RUNS IN EXEC. MODE AND CALLS IO ROUTINES DIRECTLY\r
+                                00630   ;NO ATTEMPT IS MADE TO RESTORE STATUS OF IO DEVICES, PC, OR ACS\r
+                                00640   ;JOBPC IS SET TO STARTING ADDRESS OF JOB\r
+                                00650   ;CORE MUST ALREADY HAVE BEEN ASSIGNED AND THE FOLLOWING LOC. SETUP IN \r
+                                00660   ;JOB DATA AREA:\r
+                                00670   ;JOBPDP, JOBREL\r
+\r
+                                00690   INTERNAL GETJOB\r
+                                00700   EXTERNAL USRREL, IN\r
+\r
+        000036' 265040  000076' 00720   GETJOB:   JSP TAC, SG1  ;SETUP ACS AND ASSIGN DEVICE\r
+        000037' 260152  000005  00730             PUSHJ PDP, DLK(T)     ;LOOKUP FILE NAME IN DIRECTORY\r
+        000040' 254000  000047' 00740             JRST GET2             ;NOT FOUND\r
+        000041' 260140  000134' 00750             PUSHJ PDP, SETLST     ;SET DUMP COMMAND LIST IN USER ARE\r
+        000042' 260140  000000* 00760             PUSHJ PDP, IN         ;DO AN INPUT\r
+        000043' 265040  000054' 00770             JSP TAC,SG2\r
+\r
+        000044' 452370  220246  00790             ASCIZ /JOB SETUP\r
+        000045' 426512  550032\r
+        000046' 050000  000000  00800   /\r
+\r
+        000047' 265040  000054' 00820   GET2:     JSP TAC,SG2\r
+\r
+        000050' 432231  442500  00840             ASCIZ /FILE NOT FOUND\r
+        000051' 472372  420214\r
+        000052' 476531  642032\r
+        000053' 050000  000000  00850   /\r
+\r\fSAVGET- SAVE AND GET COMMANDS                 PAGE 4\r
+        T.HASTINGS 8-4-64\r
+\r
+\r
+\r
+                                00890   ;ROUTINE TERMINATES SAVJOB AND GETJOB\r
+                                00900   ;CLOSE, RELEASE, CHECK FOR ERRORS AND PRINT MESSAGE AND STOP JOB\r
+                                00910   ;ADDRESS OF MESSAGE IN AC TAC\r
+\r
+                                00930   EXTERNAL RELEA2, SETUSR, TTYFNU, WAIT1,JOBS41,JOB41\r
+\r
+                        740000  00950   ERRORS=1B18+1B19+1B20+1B21      ;ERRORS CHECKED FOR IN IO TRANSMISSION\r
+\r
+        000054' 260140  000000* 00970   SG2:      PUSHJ PDP, WAIT1\r
+        000055' 602000  740000  00980             TRNE IOS, ERRORS      ;ANY ERRORS?\r
+        000056' 254000  000070' 00990             JRST SG2A             ;AN ERROR\r
+        000057' 261140  000001  01000             PUSH PDP,TAC          ;SAVE PRINT ADDRESS\r
+        000060' 260140  000000* 01010             PUSHJ PDP,RELEA2      ;RELEASE DEVICE\r
+        000061' 260140  000000* 01020             PUSHJ PDP,SETUSR      ;SETUP COPY OF JOB AREA STORED IN SYSTE\r
+        000062' 200051  000016* 01030             MOVE TAC,JOBS41(JDAT)\r
+                                01040             ;RESTORE USER LOCATION 41\r
+        000063' 202051  000015* 01050             MOVEM TAC,JOB41(JDAT)\r
+        000064' 260140  000000* 01060   SG4:      PUSHJ PDP,TTYFNU      ;FIND TELETYPE\r
+        000065' 262140  000001  01070             POP PDP,TAC           ;RESTORE PRINT MESSAGE ADDRESS\r
+        000066' 260140  000000* 01080   SG5:      PUSHJ PDP,CONMES\r
+        000067' 254000  000000* 01090             JRST HOLD\r
+\r
+        000070' 265040  000064' 01110   SG2A:     JSP TAC,SG4\r
+\r
+        000071' 522450  147246  01130             ASCIZ /TRANSMISSION ERROR\r
+        000072' 466232  351622\r
+        000073' 476344  042644\r
+        000074' 512372  206424  01140   /\r
+        000075' 000000  000000\r
+\r\fSAVGET- SAVE AND GET COMMANDS                 PAGE 5\r
+        T.HASTINGS 8-4-64\r
+\r
+\r
+\r
+                                01180   ;ROUTINE CALED BY SAVJOB AND GETJOBTO SETUP ACS\r
+                                01190   ;AND ASSIGN DEVICE\r
+                                01200   ;CALL     JSP TAC, SG1\r
+\r
+                                01220   EXTERNAL JOBDAT, JOB, UINIT1, WAIT1, JOBADR, RESET\r
+\r
+        000076' 505140  777763  01240   SG1:      HRLI PDP, -15         ;SET UP PD LIST IN UUO ACS\r
+        000077' 541147  777777  01250             HRRI PDP, -1(PROG)\r
+        000100' 261140  000001  01260             PUSH PDP, TAC         ;SAVE RETURN ADDRESS\r
+        000101' 260140  000000* 01270             PUSHJ PDP, RESET      ;DO RESET UUO\r
+        000102' 201600  000017  01280             MOVEI UUO, D          ;DUMP MODE\r
+        000103' 200047  000017  01290             MOVE TAC, 17(PROG)    ;DEVICE NAME\r
+        000104' 201340  000000  01300             MOVEI PROG, 0         ;PRETEND RELOC. IS 0\r
+        000105' 260140  000000* 01310             PUSHJ PDP, UINIT1     ;ASSIGN DEVICE\r
+        000106' 000000  000000  01320             0                     ;IBF,OBF\r
+        000107' 254000  000124' 01330             JRST SGERRA           ;NOT AVAILABLE\r
+        000110' 200006  000002  01340             MOVE IOS, DEVIOS(DEVDAT)      ;SETUP IOS\r
+        000111' 201600  000014  01350             MOVEI UUO,14          ;REL.ADDRESS OF 4 WORD DIRECTORY ENTRY\r
+        000112' 200340  000000* 01360             MOVE PROG, JOBADR     ;RESTORE PROG\r
+        000113' 205500  445560  01370             MOVSI T,445560        ;SET FILE EXTENSION TO DMP\r
+        000114' 202507  000015  01380             MOVEM T, 15(PROG)\r
+        000115' 402007  000016  01390             SETZM 16(PROG)\r
+        000116' 210540  000000* 01400             MOVN T1,USRREL        ;SET NEG. WORD COUNT FROM JOBREL\r
+        000117' 271540  000000* 01410             ADDI T1,JOBPFI        ;DONT DUMP LOC. 0-JOBPFI\r
+        000120' 505540  000117* 01420             HRLI T1,JOBPFI\r
+        000121' 206547  000017  01430             MOVSM T1,17(PROG)     ;STORE IN 4TH WORD OF DICECTORY\r
+        000122' 200506  000003  01440             MOVE T, DEVSER(DEVDAT)        ;SETUP FOR DOING ENTRY OF LOO\r
+        000123' 263140  000000  01450             POPJ PDP,\r
+\r
+        000124' 201040  000127' 01470   SGERRA:   MOVEI TAC,SGNAVL\r
+        000125' 261140  000001  01480             PUSH PDP,TAC\r
+        000126' 254000  000066' 01490             JRST SG5\r
+\r
+        000127' 422132  644606  01510   SGNAVL:   ASCIZ /DEVICE NOT AVAILABLE\r
+        000130' 425011  647650\r
+        000131' 202032  640622\r
+        000132' 462030  246212\r
+        000133' 064240  000000  01520   /\r
+\r\fSAVGET- SAVE AND GET COMMANDS                 PAGE 6\r
+        T.HASTINGS 8-4-64\r
+\r
+\r
+\r
+\r
+                                01570   ;ROUTINE TO SET DUMP MODE COMMAND LIST IN USER AREA\r
+\r
+                                01590   EXTERNAL ANYRDX,RELEA2,TTYFNU\r
+\r
+        000134' 200507  000017  01610   SETLST:   MOVE T, 17(PROG)      ;4TH WORD FROM DIRECTORY\r
+        000135' 202507  000016  01620             MOVEM T, 16(PROG)\r
+        000136' 402007  000017  01630             SETZM 17(PROG)\r
+        000137' 574500  000012  01640             HLRE T, T\r
+        000140' 270500  000116* 01650             ADD T, USRREL\r
+        000141' 321500  000144' 01660             JUMPL T, NOROOM\r
+        000142' 201600  000016  01670             MOVEI UUO,16          ;DUMP MODE\r
+        000143' 263140  000000  01680             POPJ PDP,\r
+\r
+        000144' 260140  000060* 01700   NOROOM:   PUSHJ PDP,RELEA2\r
+        000145' 260140  000064* 01710             PUSHJ PDP,TTYFNU\r
+        000146' 255000  000000  01720             JFCL\r
+        000147' 574047  000016  01730             HLRE TAC, 16(PROG)  ;PRINT NO. OF BLOCKS NEEDED\r
+        000150' 213000  000001  01740             MOVNS TAC\r
+        000151' 242040  777766  01750             LSH TAC, -12\r
+        000152' 271040  000001  01760             ADDI TAC, 1\r
+        000153' 201100  000012  01770             MOVEI TAC1, 12\r
+        000154' 260140  000000* 01780             PUSHJ PDP, ANYRDX\r
+        000155' 265040  000066' 01790             JSP TAC,SG5\r
+\r
+        000156' 201431  320204  01810             ASCIZ / 1K BLOCKS OF CORE NEEDED\r
+        000157' 462370  345646\r
+        000160' 202370  620206\r
+        000161' 476450  520234\r
+        000162' 426130  442610\r
+        000163' 064240  000000  01820   /\r
+                                01830             END,\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 000164\r
+\r
+8K CORE USED\r
+\r\fSAVGET- SAVE AND GET COMMANDS                 PAGE 7\r
+        SYMBOL TABLE\r
+\r
+                000230  \r
+A               000000  INT\r
+AC1             000015  INT\r
+AC2             000016  INT\r
+AC3             000017  INT\r
+AL              000001  INT\r
+ANYRDX          000154' EXT\r
+ASSCON          400000  INT\r
+ASSPRG          200000  INT\r
+B               000014  INT\r
+BUFPNT          000012  INT\r
+BUFWRD          000013  INT\r
+CLOSB           002000  INT\r
+CLSIN           000002  INT\r
+CLSOUT          000001  INT\r
+CONMES          000066' EXT\r
+CPOPJ1          000011' EXT\r
+CTEXT1          000004' EXT\r
+D               000017  INT\r
+DAT             000005  INT\r
+DCL             000001  INT\r
+DCW             020000  INT\r
+DDI             000007  INT\r
+DDO             000006  INT\r
+DDTMEM          000037  INT\r
+DDTSYM          000036  INT\r
+DEN             000004  INT\r
+DEVADR          000007  INT\r
+DEVBUF          000006  INT\r
+DEVCHR          000001  INT\r
+DEVCTR          000011  INT\r
+DEVDAT          000006  INT\r
+DEVIAD          000007  INT\r
+DEVIOS          000002  INT\r
+DEVLOG          000005  INT\r
+DEVMOD          000004  INT\r
+DEVNAM          000000  INT\r
+DEVOAD          000010  INT\r
+DEVPTR          000010  INT\r
+DEVSER          000003  INT\r
+DGF             000012  INT\r
+DIN             000003  INT\r
+DLK             000005  INT\r
+DOU             000002  INT\r
+DR              000016  INT\r
+DRL             000000  INT\r
+DSI             000011  INT\r
+DSO             000010  INT\r
+DTW             040000  INT\r
+DVAVAL          000040  INT\r
+DVCDR           100000  INT\r
+DVDIR           000004  INT\r
+DVDIRI          400000  INT\r
+\r\fSAVGET- SAVE AND GET COMMANDS                 PAGE 7-1\r
+        SYMBOL TABLE\r
+\r
+DVIN            000002  INT\r
+DVLPT           040000  INT\r
+DVMTA           000020  INT\r
+DVOUT           000001  INT\r
+DVTTY           000010  INT\r
+ENTRB           020000  INT\r
+ERRORS          740000  \r
+GET2            000047' \r
+GETJOB          000036' INT\r
+HOLD            000067' EXT\r
+I               000010  INT\r
+IB              000013  INT\r
+IBUFB           200000  INT\r
+IN              000042' EXT\r
+INITB           400000  INT\r
+INPB            010000  INT\r
+IO              000020  INT\r
+IOACT           010000  INT\r
+IOBEG           000002  INT\r
+IOBKTL          040000  INT\r
+IOCON           000040  INT\r
+IODEND          020000  INT\r
+IODERR          200000  INT\r
+IODISC          400000  INT\r
+IODONE          400000  INT\r
+IODTER          100000  INT\r
+IOEND           000040  INT\r
+IOFST           000004  INT\r
+IOIMPM          400000  INT\r
+IONRCK          000100  INT\r
+IORDEL          000100  INT\r
+IORET           000020  INT\r
+IOS             000000  INT\r
+IOSTRT          000010  INT\r
+IOUSE           400000  INT\r
+IOW             000001  INT\r
+IOWC            000020  INT\r
+IOWS            400000  INT\r
+ITEM            000004  INT\r
+JBFADR          000000  INT\r
+JBFCTR          000002  INT\r
+JBFPTR          000001  INT\r
+JBUF            000005  INT\r
+JDAT            000011  INT\r
+JERR            002000  INT\r
+JIOW            100000  INT\r
+JNA             004000  INT\r
+JOB             000000  EXT\r
+JOB41           000063' EXT\r
+JOBADR          000112' EXT\r
+JOBDAT          000000  EXT\r
+JOBPFI          000120' EXT\r
+JOBS41          000062' EXT\r
+\r\fSAVGET- SAVE AND GET COMMANDS                 PAGE 7-2\r
+        SYMBOL TABLE\r
+\r
+LOOKB           040000  INT\r
+MONJOB          000010' EXT\r
+MTW             010000  INT\r
+NOROOM          000144' \r
+NOTENF          000013' EXT\r
+OBUFB           100000  INT\r
+OUT             000024' EXT\r
+OUTPB           004000  INT\r
+PDP             000003  INT\r
+PICHN           000100  INT\r
+PROG            000007  INT\r
+RELEA2          000144' EXT\r
+RESET           000101' EXT\r
+RUN             200000  INT\r
+RUNABL          204000  INT\r
+SAV4            000031' \r
+SAVJOB          000014' INT\r
+SETLST          000134' \r
+SETUSR          000061' EXT\r
+SG1             000076' \r
+SG2             000054' \r
+SG2A            000070' \r
+SG4             000064' \r
+SG5             000066' \r
+SGERRA          000124' \r
+SGNAVL          000127' \r
+SGSET           000000' INT\r
+SGSET1          000012' \r
+T               000012  \r
+T1              000013  \r
+TAC             000001  INT\r
+TAC1            000002  INT\r
+TEM             000010  INT\r
+THSDAT          000017' EXT\r
+TTYATC          020000  INT\r
+TTYFNU          000145' EXT\r
+TTYUSE          010000  INT\r
+UINIT1          000105' EXT\r
+USRMOD          010000  INT\r
+USRPDP          000000  EXT\r
+USRREL          000140' EXT\r
+UUO             000014  INT\r
+WAIT1           000054' EXT\r
+\f   SSSSSSSSSSSS         CCCCCCCCCCCC      NNN         NNN         SSSSSSSSSSSS      EEEEEEEEEEEEEEE      RRRRRRRRRRRR   \r
+   SSSSSSSSSSSS         CCCCCCCCCCCC      NNN         NNN         SSSSSSSSSSSS      EEEEEEEEEEEEEEE      RRRRRRRRRRRR   \r
+   SSSSSSSSSSSS         CCCCCCCCCCCC      NNN         NNN         SSSSSSSSSSSS      EEEEEEEEEEEEEEE      RRRRRRRRRRRR   \r
+SSS                  CCC                  NNN         NNN      SSS                  EEE                  RRR         RRR\r
+SSS                  CCC                  NNN         NNN      SSS                  EEE                  RRR         RRR\r
+SSS                  CCC                  NNN         NNN      SSS                  EEE                  RRR         RRR\r
+SSS                  CCC                  NNNNNN      NNN      SSS                  EEE                  RRR         RRR\r
+SSS                  CCC                  NNNNNN      NNN      SSS                  EEE                  RRR         RRR\r
+SSS                  CCC                  NNNNNN      NNN      SSS                  EEE                  RRR         RRR\r
+   SSSSSSSSS         CCC                  NNN   NNN   NNN         SSSSSSSSS         EEEEEEEEEEEE         RRRRRRRRRRRR   \r
+   SSSSSSSSS         CCC                  NNN   NNN   NNN         SSSSSSSSS         EEEEEEEEEEEE         RRRRRRRRRRRR   \r
+   SSSSSSSSS         CCC                  NNN   NNN   NNN         SSSSSSSSS         EEEEEEEEEEEE         RRRRRRRRRRRR   \r
+            SSS      CCC                  NNN      NNNNNN                  SSS      EEE                  RRR   RRR      \r
+            SSS      CCC                  NNN      NNNNNN                  SSS      EEE                  RRR   RRR      \r
+            SSS      CCC                  NNN      NNNNNN                  SSS      EEE                  RRR   RRR      \r
+            SSS      CCC                  NNN         NNN                  SSS      EEE                  RRR      RRR   \r
+            SSS      CCC                  NNN         NNN                  SSS      EEE                  RRR      RRR   \r
+            SSS      CCC                  NNN         NNN                  SSS      EEE                  RRR      RRR   \r
+SSSSSSSSSSSS            CCCCCCCCCCCC      NNN         NNN      SSSSSSSSSSSS         EEEEEEEEEEEEEEE      RRR         RRR\r
+SSSSSSSSSSSS            CCCCCCCCCCCC      NNN         NNN      SSSSSSSSSSSS         EEEEEEEEEEEEEEE      RRR         RRR\r
+SSSSSSSSSSSS            CCCCCCCCCCCC      NNN         NNN      SSSSSSSSSSSS         EEEEEEEEEEEEEEE      RRR         RRR\r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  11:23:08\r
+File: DSKB1 :SCNSER.LST   [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:24
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:2253 \r
+File will be deleted after printing\r
+\f\rSCNSER - SCANNER SERVICE                 PAGE 1\r
+        TOM EGGERS     8-9-65\r
+\r
+                                00010           XLIST\r
+                                01930          LIST\r
+\r\fSCNSER - SCANNER SERVICE                 PAGE 7\r
+        TOM EGGERS     8-9-65\r
+\r
+\r
+                                00010   TITLE SCNSER - SCANNER SERVICE\r
+                                00020   SUBTTL TOM EGGERS     8-9-65\r
+                                00030   EXTERN SETIOD, ADVBFE, ADVBFF, JBTADR, CLRBYT,STTYB1\r
+                                00040   EXTERN SCNCHN, COMCNT, SCNSAV, SCNRET,STOP1, DEVLST,TTYTAB\r
+                                00050   INTERN SCNINI\r
+\r
+                                00070   ;TTYPTR=DEVOAD+1\r
+                                00080   ;TTYCTR=TTYPTR+1\r
+                                00090   ;TTYBUF=TTYCTR+1\r
+                        000200  00100   PION=200   ;TURN PI ON BIT\r
+                        000400  00110   PIOFF=400               ;TURN PI OFF BIT\r
+                                00120   ;SCNDDB                 ;NUMBER OF DEVICE DATA BLOCKS\r
+                                00130   ;STTYBF7   ;SIZE OF TELETYPE BUFFER\r
+                        000010  00140   CHREC=TEM               ;AC FOR CHARACTER\r
+                        000004  00150   VPOS=ITEM               ;VERITICAL POSITION OF TELETYPE\r
+                        000005  00160   HPOS=VPOS+1             ;               HORIZONTAL POS.\r
+                        000006  00170   DDB=DEVDAT\r
+                        000002  00180   LINE=TAC1               ;AC THAT HOLDS SCANNER LINE NUMBER\r
+                        040000  00190   SYNC=40000              ;1 WHEN A BUFFER IS READY TO TRANSFER\r
+                        010000  00200   DETH=10000              ;1 IF TTY DETACHED AND OUTPUT WAITING\r
+                        020000  00210   NIO=20000               ;STOP ALL IO\r
+                        000020  00220   TOUT=IO                 ;OUTPUT IN PROGRESS\r
+                        040000  00230   NCERR=IOBKTL            ;CHARACTER LOST ON TYPE IN\r
+                        000177  00240   DCHAR=177               ;DELETE CHARACTER\r
+                        100000  00250   ECHOF=IODTER            ;ECHO FAILURE OCCURED\r
+                        001000  00260   TPMON=1000              ;IO IS FROM MONITOR\r
+                        002000  00270   SP=2000                 ;SPECIAL TELETYPE CHAR. IS BEING INTERPRETED\r
+                        100000  00280   DDTM=100000             ;DDT MODE\r
+                        004000  00290   T35=4000   ;TELETYPE HAS TAB,FF,VT,ETC. MECHANISM\r
+                        000100  00300   USRB=100   ;TURN OFF TPMON WHEN OUTPUT IS FINISHED      \r
+                        020000  00310   USRBC=20000             ;RT HALF MONITOR IOS WORD. REMAIN IN MONITOR MODE\r
+                                00320   INTERNAL SCNINT,CTYINT,TTYUSR,TTYURC\r
+                                00330   ENTRY TTYDSP\r
+                                00340   EXTERN TSCNLN,TCONLN,MTTYLN,CPOPJ1\r
+                                00350   EXTERN CPOPJ\r
+                                00360   EXTERN FSNCHN,SCNCHL,OUT,PUUOAC,PJOBN,PUNIT,PIOMOD\r
+                                00370   INTERNAL DDTGT,DDTRL,DDTIN,DDTOUT,TTYFND,TTYSTR,TTYFNU\r
+                                00380   EXTERNAL WAIT1,WSYNC,CLRBYT,JOB,CLDS,CLEN,TTYBFE,TTYBM1\r
+                                00390   EXTERNAL UXIT,ADRCK,TTYSAV,DEVPHY,DEVOPR\r
+                                00400   EXTERNAL TTYCTR,TTYPTR,TTYBUF,TTYLST,MLTTYL,SETRUN,STTYBF,TTY0DB\r
+\r
+        000000' 270706  000007  00420   PHPOS:  POINT 7,DEVIAD(DEVDAT),12       ;POINTER HORIZONTAL POSITION\r
+        000001' 270506  000010  00430   PVPOS:  POINT 5,DEVOAD(DEVDAT),12       ;POINTER VERITICAL POSITION\r
+        000002' 340706  000010  00440   PLASTC: POINT 7,DEVOAD(DEVDAT),7        ;POINTER TO LAST CHARACTER OU\r
+        000003' 360606  000007  00450   PSCHAR: POINT 6,DEVIAD(DEVDAT),5        ;POINTER TO ^C OR ^O\r
+\r
+        000004' 321102  000000* 00470   TPCJOBN:        POINT 9,TTYTAB(LINE),9  ;CONSOLE NUMBER FOR TTY\r
+\r\fSCNSER - SCANNER SERVICE                 PAGE 2\r
+        TOM EGGERS     8-9-65\r
+\r
+\r
+        000005' 201040  100000  00500   SCNINI: MOVEI TAC,100000\r
+        000006' 712200  000000  00510           CONO TTY,0              ;SHUT DOWN CONSOLE TTY\r
+        000007' 730200  004010  00520           CONO DCSA,4010          ;RELEASE XMITTER,RECEIVER\r
+        000010' 730300  001000  00530           CONSZ DCSA, 1000\r
+        000011' 730200  004000  00540           CONO DCSA, 4000\r
+        000012' 730300  000010  00550           CONSZ DCSA, 10\r
+        000013' 730440  000002  00560           DATAI DCSB, TAC1\r
+        000014' 367040  000010' 00570           SOJG TAC,.-4\r
+        000015' 201040  000000* 00580           MOVEI TAC,SCNCHN\r
+        000016' 712201  003600  00590           CONO TTY,3600(TAC)      ;CLEAR TTY, ASSIGN CHANNEL\r
+        000017' 730200  000000* 00600           CONO DCSA,FSNCHN        ;ASSIGN INTERRUPT CHANNELS\r
+        000020' 205040  000000* 00610           MOVSI TAC,MLTTYL        ;NO. OF TTY DEV. DATA BLOCKS\r
+        000021' 205240  010000  00620           MOVSI DAT,TTYUSE        ;TTY DDB IN USE BIT\r
+        000022' 205000  001004  00630           MOVSI IOS,TPMON+IOFST           ;VIRGIN STATUS\r
+        000023' 201300  000000* 00640           MOVEI DDB,TTYLST        ;FIRST TTY DDB ADDRESS\r
+        000024' 616246  000004  00650   SCN1:   TDNN DAT,DEVMOD(DDB)            ;IS THIS TTY DDB IN USE?\r
+        000025' 402006  000000  00660           SETZM DEVNAM(DDB)       ;NO. SET NAME TO 0\r
+        000026' 202006  000002  00670           MOVEM IOS,DEVIOS(DDB)\r
+        000027' 402006  000000* 00680           SETZM TTYSAV(DDB)       ;CLEAR USER MODE TTY STATUS WORD\r
+        000030' 412246  000004  00690           ANDCAM DAT,DEVMOD(DDB)          ;CLEAR USE BIT\r
+        000031' 554306  000003  00700           HLRZ DDB,DEVSER(DDB)            ;GET NEXT TTY DDB\r
+        000032' 253040  000024' 00710           AOBJN TAC,SCN1\r
+        000033' 205040  000000* 00720           MOVSI TAC,MTTYLN        ;SET DDB USE BITS FROM TRANSLATOR TABLE\r
+        000034' 205100  010000  00730           MOVSI TAC1,TTYUSE\r
+        000035' 332301  000004* 00740   SCN2:   SKIPE DDB,TTYTAB(TAC)\r
+        000036' 436106  000004  00750           IORM TAC1,DEVMOD(DDB)\r
+        000037' 253040  000035' 00760           AOBJN TAC,SCN2\r
+        000040' 263140  000000  00770           POPJ PDP,\r
+\r\fSCNSER - SCANNER SERVICE                 PAGE 3\r
+        TOM EGGERS     8-9-65\r
+\r
+\r
+                                00800   ;ROUTINE TO RETURN TTY TO VIRGIN STATE\r
+                                00810   ;CALL:    MOVE DDB, ADDRESS OF DEVICE DATA BLOCK\r
+                                00820   ;         PUSHJ PDP,TTYKIL\r
+\r
+                                00840   INTERNAL TTYKIL\r
+\r
+        000041' 200040  001144' 00860   TTYKIL: MOVE TAC,[XWD TTYUSE+TTYATC,ASSCON+ASSPRG]\r
+        000042' 412046  000004  00870           ANDCAM TAC,DEVMOD(DEVDAT)       ;CLEAR DDB USE BIT\r
+        000043' 402006  000000  00880           SETZM DEVNAM(DEVDAT)            ;CLEAR PHYSICAL NAME\r
+        000044' 402006  000005  00890           SETZM DEVLOG(DEVDAT)            ;CLEAR LOGICAL NAME\r
+        000045' 254000  000052' 00900           JRST TTYDT1\r
+\r
+                                00920   ;ROUTINE TO DETACH TTY FROM JOB\r
+                                00930   ;CALL:    MOVE DEVDAT,ADDRESS OF TTY DDB TO BE DETACHED\r
+\r
+                                00950   INTERNAL TTYDET\r
+\r
+        000046' 200046  000004  00970   TTYDET: MOVE TAC,DEVMOD(DEVDAT)\r
+        000047' 627040  020000  00980           TLZN TAC,TTYATC      ;WAS TTY ATTACHED?\r
+        000050' 254000  000041' 00990           JRST TTYKIL          ;NO, SO RETURN DDB TO POOL\r
+        000051' 202046  000004  01000           MOVEM TAC,DEVMOD(DEVDAT)        ;YES, JUST CLEAR ATTACH BIT\r
+        000052' 135100  000000* 01010   TTYDT1: LDB LINE,PUNIT\r
+        000053' 414002  000035* 01020           SETM TTYTAB(LINE)\r
+        000054' 263140  000000  01030           POPJ PDP,\r
+\r
+\r
+        000055' 000000  000000  01060   CCHAR:  0          ;HOLDS CHARACTER FOR CONSOLE TELETYPE\r
+                                01070   ;CONTROL C - GO BACK TO MONITOR\r
+                                01080   ;CONTROL 0 - SUPPRESS OUTPUT\r
+\r
+        000056' 334040  001145' 01100   TTYURC: SKIPA TAC,[XWD USRB,USRBC]      ;START JOB BUT REMAIN IN MON1\r
+        000057' 205040  000100  01110   TTYUSR: MOVSI TAC,USRB          ;CAUSE TTY TO GO INTO\r
+        000060' 436046  000002  01120           IORM TAC,DEVIOS(DEVDAT)         ;USER MODE WHEN\r
+        000061' 263140  000000  01130           POPJ PDP, ;OUTPUT FINISHES\r
+\r
+                                01150   INTERNAL TTYSET\r
+\r
+        000062' 205040  000004  01170   TTYSET: MOVSI TAC,IOFST         ;INITIALIZE USER TTY IOS WORD\r
+        000063' 202046  000027* 01180           MOVEM TAC,TTYSAV(DEVDAT)        ;FOR START COMMAND\r
+        000064' 254000  000057' 01190           JRST TTYUSR\r
+\r\fSCNSER - SCANNER SERVICE                 PAGE 4\r
+        TOM EGGERS     8-9-65\r
+\r
+\r
+\r
+                                01230   ;ROUTINE TO ATTACH TTY TO A JOB\r
+                                01240   ;CALL:    MOVE DEVDAT,ADDRESS OF TTY DEVICE DATA BLOCK\r
+                                01250   ;         MOVE ITEM,JOB NUMBER\r
+                                01260   ;         PUSHJ PDP,TTYATT\r
+                                01270   ;         ERROR     ;DEVDAT=DDB ADR OF OTHER TTY\r
+                                01280                       ;IF ANOTHER ALREADY IS ATTACHED.\r
+                                01290   ;         OK RETURN ;DEVDAT, DAT AND TRANSLATOR TABLE SET\r
+\r
+                                01310   INTERNAL TTYATT\r
+\r
+        000065' 135100  000052* 01330   TTYATT: LDB LINE,PUNIT  ;LINE NO. OF THIS TTY\r
+        000066' 201300  000023* 01340           MOVEI DEVDAT,TTYLST ;SEARCH FOR DDB THAT IS ATTACHED\r
+        000067' 334000  000000  01350           SKIPA\r
+        000070' 554306  000003  01360   TTYAT2: HLRZ DEVDAT,DEVSER(DEVDAT)\r
+        000071' 322300  000115' 01370           JUMPE DEVDAT,TTYAT4\r
+        000072' 135040  000000* 01380           LDB TAC,PJOBN       ;JOB NUMBER\r
+        000073' 500046  000004  01390           HLL TAC,DEVMOD(DEVDAT)          ;ATTACH AND USE BITS\r
+        000074' 607040  000010  01400           TLNN TAC,DVTTY       ;IS THIS STILL A TTY DDB?\r
+        000075' 254000  000115' 01410           JRST TTYAT4          ;NO, THIS MUST BE IJOB\r
+        000076' 306201  000000  01420           CAIN ITEM,(TAC)      ;JOB NUMBER THE ONE TO ATTACH?\r
+        000077' 607040  010000  01430           TLNN TAC,TTYUSE      ;YES, IS IT THE DETACHED ONE?\r
+        000100' 254000  000070' 01440           JRST TTYAT2          ;NO, KEEP LOOKING\r
+        000101' 603040  020000  01450           TLNE TAC,TTYATC         ;IS SOME TTY ALREADY ATTACHED?\r
+        000102' 263140  000000  01460           POPJ PDP,               ;YES, ERROR RETURN WITH DEVDAT SET\r
+        000103' 261140  000006  01470           PUSH PDP,DEVDAT         ;SAVE NEW DDB ADDRESS\r
+        000104' 200302  000053* 01480           MOVE DEVDAT,TTYTAB(LINE)\r
+        000105' 200046  000004  01490           MOVE TAC,DEVMOD(DEVDAT)\r
+        000106' 260140  000046' 01500           PUSHJ PDP,TTYDET        ;DETACH DDB FROM TTY\r
+        000107' 262140  000006  01510           POP PDP,DEVDAT\r
+        000110' 137200  000004' 01520   TTYAT3: DPB ITEM,TPCJOBN        ;STORE ATTACHED JOB NO.\r
+        000111' 137200  000072* 01530           DPB ITEM,PJOBN          ;SET JOB NUMBER\r
+        000112' 205040  020000  01540           MOVSI TAC,TTYATC        ;SET ATTACHED BIT\r
+        000113' 260140  000247' 01550           PUSHJ PDP,TTYDAT        ;SETUP OUTPUT BYTE\r
+        000114' 254000  000411' 01560           JRST SCNIN              ;GO INITIALIZE DDB\r
+\r
+        000115' 200302  000104* 01580   TTYAT4: MOVE DEVDAT,TTYTAB(LINE)        ;RESTORE OLD DDB ADDRESS\r
+        000116' 254000  000110' 01590           JRST TTYAT3\r
+\r\fSCNSER - SCANNER SERVICE                 PAGE 5\r
+        TOM EGGERS     8-9-65\r
+\r
+\r
+\r
+                                01630   ;ROUTINE TO SETUP AC DEVDAT TO ADDRESS OF TTY WHICH HAS TYPED A COMMA\r
+                                01640   ;AC DAT TO BYTE POINTER TO OUTPUT BUFFER FOR COMMAND MESSAGE\r
+                                01650   ;AC TAC TO BYTE POINTER TO COMMAND STRING\r
+                                01660   ;AC ITEM TO JOB NUNMBER TTY IS ATTACHED TO\r
+                                01670   ;CALL:     PUSHJ PDP,TTYCOM\r
+                                01680   ;          NONE FOUND\r
+                                01690   ;          ACS SETUP\r
+\r
+                                01710   INTERNAL TTYCOM\r
+\r
+        000117' 205100  000033* 01730   TTYCOM: MOVSI LINE,MTTYLN\r
+        000120' 331002  000115* 01740           SKIPL TTYTAB(LINE)\r
+        000121' 253100  000120' 01750           AOBJN LINE,.-1\r
+        000122' 327100  000000* 01760           JUMPG LINE,CPOPJ\r
+        000123' 205300  400000  01770           MOVSI DEVDAT,400000\r
+        000124' 413302  000120* 01780           ANDCAB DEVDAT,TTYTAB(LINE)\r
+        000125' 205240  440700  01790           MOVSI DAT,440700\r
+        000126' 271246  000000* 01800           ADDI DAT,TTYBUF(DEVDAT)\r
+        000127' 200040  000005  01810           MOVE TAC,DAT\r
+\r
+                                01830   ;FALL INTO TTYJOB\r
+\r
+                                01850   ;ROUTINE TO RETURN IN AC ITEM JOB NUMBER WHICH TTY IS ATTACHED TO\r
+                                01860   ;CALL:    MOVE DEVDAT,ADDRESS OF TTY DEVICE DATA BLOCK\r
+\r
+                                01880   INTERNAL TTYJOB\r
+\r
+        000130' 135100  000065* 01900   TTYJOB: LDB LINE, PUNIT\r
+        000131' 135200  000004' 01910           LDB ITEM,TPCJOBN\r
+        000132' 254000  000000* 01920           JRST CPOPJ1\r
+\r\fSCNSER - SCANNER SERVICE                 PAGE 6\r
+        TOM EGGERS     8-9-65\r
+\r
+\r
+\r
+                                01960   ;TELETYPE SCANNER UUO ROUTINES\r
+                                01970   ;FOR DDT\r
+\r
+                                01990   ;DDTGT WAITS FOR OUTPUT TO COMPLETE THEN PUTS\r
+                                02000   ;TELETYPE INTO DDT MODE\r
+\r
+        000133' 260140  000231' 02020   DDTGT:  PUSHJ PDP,TTYSR1        ;FIND DEVICE DATA BLOCK\r
+        000134' 200006  000002  02030           MOVE IOS,DEVIOS(DEVDAT)\r
+        000135' 607000  100000  02040           TLNN IOS,DDTM\r
+        000136' 607000  000020  02050           TLNN IOS,IO             ;OUTPUT IN PROGRESS\r
+        000137' 254000  000141' 02060           JRST DDTGT2             ;NO\r
+                                02070   ;       PUSHJ PDP,OUT           ;MAKE SURE OUTPUT STARTED\r
+        000140' 260140  000000* 02080           PUSHJ PDP,WAIT1         ;WAIT FOR OUTPUT TO FINISH\r
+        000141' 661000  100000  02090   DDTGT2: TLO IOS,DDTM            ;SET DDT MODE BIT\r
+        000142' 202006  000002  02100           MOVEM IOS,DEVIOS(DEVDAT)\r
+        000143' 254000  000000* 02110           JRST UXIT\r
+\r
+                                02130   ;RELEASE TELETYPE FROM DDT MODE\r
+                                02140   ;MAKE SURE OUPUT IS FINISHED FIRST\r
+\r
+        000144' 260140  000231' 02160   DDTRL:  PUSHJ PDP,TTYSR1        ;FIND DEVICE DATA BLOCK\r
+        000145' 200006  000002  02170           MOVE IOS,DEVIOS(DEVDAT)\r
+        000146' 603000  000020  02180           TLNE IOS,IO             ;OUTPUT IN PROGRESS?\r
+        000147' 260140  000140* 02190           PUSHJ PDP,WAIT1         ;YES, WAIT\r
+        000150' 205000  140000  02200           MOVSI IOS,DDTM+SYNC\r
+        000151' 412006  000002  02210           ANDCAM IOS,DEVIOS(DEVDAT)       ;TURN OFF DDT BIT\r
+        000152' 254000  000143* 02220           JRST UXIT\r
+\r\fSCNSER - SCANNER SERVICE                 PAGE 7\r
+        TOM EGGERS     8-9-65\r
+\r
+\r
+\r
+                                02260   ;INPUT TO DDT\r
+                                02270   ;CALL AC,[SIXBIT /DDTIN/]     AC CONTAINS POINTER TO BUFFER AREA\r
+                                02280   ;BUFFER AREA MUST BE 21 WORDS LONG\r
+\r
+        000153' 260140  000231' 02300   DDTIN:  PUSHJ PDP,TTYSR1                ;SET UP DEVDAT\r
+        000154' 200006  000002  02310           MOVE IOS,DEVIOS(DEVDAT)\r
+        000155' 603000  000020  02320           TLNE IOS,IO                     ;OUTPUT IN PROGRESS\r
+        000156' 260140  000147* 02330           PUSHJ PDP,WAIT1                 ;YES, WAIT\r
+        000157' 200006  000002  02340   DDTIN2: MOVE IOS,DEVIOS(DEVDAT)\r
+        000160' 603000  000040  02350           TLNE IOS,IOEND                  ;BUFFER ALREADY?\r
+        000161' 254000  000166' 02360           JRST DDTIN3                     ;YES\r
+        000162' 201000  010000  02370           MOVEI IOS,IOACT\r
+        000163' 436006  000002  02380           IORM IOS,DEVIOS(DDB)\r
+        000164' 260140  000000* 02390           PUSHJ PDP,WSYNC                 ;NO, WAIT\r
+        000165' 254000  000157' 02400           JRST DDTIN2\r
+\r
+        000166' 205040  120004  02420   DDTIN3: MOVSI TAC,NIO+IOFST+DDTM\r
+        000167' 436046  000002  02430           IORM TAC,DEVIOS(DEVDAT)         ;STOP ALL IO\r
+        000170' 200046  000000* 02440           MOVE TAC,TTYPTR(DEVDAT)\r
+        000171' 260140  000000* 02450           PUSHJ PDP,CLRBYT                ;CLEAR OUT REMAINING BYTES\r
+        000172' 275046  000000* 02460           SUBI TAC,TTYBM1(DEVDAT)         ;NUMBER OF WORDS\r
+        000173' 135100  000000* 02470           LDB TAC1,PUUOAC       ;PICK UP AC NUMBER\r
+        000174' 271107  000000  02480           ADDI TAC1,(PROG)                ;FIND REAL ADDRESS\r
+        000175' 200102  000000  02490           MOVE TAC1,(TAC1)                ;PICK UP POINTER\r
+        000176' 271107  000000  02500           ADDI TAC1,(PROG)                ;FIND REAL ADDRESS OF BUFFER\r
+        000177' 505106  000126* 02510           HRLI TAC1,TTYBUF(DEVDAT)\r
+        000200' 271042  000000  02520           ADDI TAC,(TAC1)\r
+        000201' 251101  000000  02530           BLT TAC1,(TAC)                  ;TRANSFER MONITOR BUFFER TO U\r
+        000202' 402001  000001  02540           CLEARM 1(TAC)                   ;MAKE SURE THERE ARE SOME NUL\r
+        000203' 205040  020040  02550           MOVSI TAC,NIO+IOEND\r
+        000204' 412046  000002  02560           ANDCAM TAC,DEVIOS(DEVDAT)\r
+        000205' 254000  000152* 02570           JRST UXIT\r
+\r\fSCNSER - SCANNER SERVICE                 PAGE 8\r
+        TOM EGGERS     8-9-65\r
+\r
+\r
+\r
+                                02610   ;OUTPUT FROM DDT\r
+                                02620   ;CALL AC,[SIXBIT /DDTOUT/]      AC HAS POINTER TO DDT OUTPUT BUFFER\r
+\r
+        000206' 260140  000231' 02640   DDTOUT: PUSHJ PDP,TTYSR1\r
+        000207' 200006  000002  02650           MOVE IOS,DEVIOS(DEVDAT)\r
+        000210' 603000  000020  02660           TLNE IOS,IO                     ;OUTPUT IN PROGRESS?\r
+        000211' 260140  000156* 02670           PUSHJ PDP,WAIT1                 ;YES, WAIT\r
+        000212' 200000  001146' 02680           MOVE IOS,[XWD NIO+TOUT+DDTM,IOACT]\r
+        000213' 437006  000002  02690           IORB IOS,DEVIOS(DEVDAT)\r
+        000214' 135040  000173* 02700           LDB TAC,PUUOAC          ;PICK UP AC NUMBER\r
+        000215' 505040  000011  02710           HRLI TAC,JDAT           ;CALC REAL ADDRESS OF AC\r
+        000216' 540060  000001  02720           HRR TAC,@TAC            ;PICK UP AC\r
+        000217' 505060  000001  02730           HRLI TAC,@TAC           ;CALC REAL ADDRESS OF DDT BUF\r
+        000220' 541046  000177* 02740           HRRI TAC,TTYBUF(DEVDAT)\r
+        000221' 552046  000000* 02750           HRRZM TAC,TTYCTR(DDB)           ;A SUITABLY LARGE NUMBER\r
+        000222' 200100  000001  02760           MOVE TAC1,TAC\r
+        000223' 251042  000020  02770           BLT TAC,20(TAC1)                ;MOVE DDT BUFFER TO MONITOR\r
+        000224' 505100  440700  02780           HRLI TAC1,440700\r
+\r
+        000225' 202106  000170* 02800           MOVEM TAC1,TTYPTR(DEVDAT)\r
+        000226' 621000  000004  02810           TLZ IOS,IOS+IOFST\r
+        000227' 260140  000303' 02820           PUSHJ PDP,TTYOU0\r
+        000230' 254000  000205* 02830           JRST UXIT\r
+\r\fSCNSER - SCANNER SERVICE                 PAGE 9\r
+        TOM EGGERS     8-9-65\r
+\r
+\r
+\r
+        000231' 200200  000000* 02870   TTYSR1: MOVE ITEM,JOB\r
+        000232' 205100  000117* 02880   TTYSRC: MOVSI LINE,MTTYLN\r
+        000233' 550302  000124* 02890                   HRRZ DEVDAT,TTYTAB(LINE)\r
+        000234' 322300  000240' 02900                   JUMPE DEVDAT,TTYF0\r
+        000235' 135040  000004' 02910                   LDB TAC,TPCJOBN\r
+        000236' 306044  000000  02920                   CAIN TAC,(ITEM)\r
+        000237' 263140  000000  02930                   POPJ PDP,               ;FOUND\r
+        000240' 253100  000233' 02940           TTYF0:  AOBJN LINE,TTYSRC+1\r
+        000241' 205040  576062  02950                   MOVSI TAC,576062        ;SIXBIT /OPR/\r
+        000242' 254000  000000* 02960                   JRST DEVPHY             ;SEARCH PHYSICAL DEVICE NAMES\r
+                                02970                                           ;AND RETURN OPERATOR TTY.\r
+\r
+                                02990           ;ROUTINE TO FIND A TTY FOR A JOB\r
+                                03000           ;CALL:  MOVE ITEM,JOB NUMBER\r
+                                03010           ;       PUSHJ PDP, TTYFND\r
+                                03020           ;       ERROR RETURN\r
+                                03030           ;       RETURN WITH DEVDAT SET TO ADR OF DDB\r
+                                03040           ;       AND DAT SET TO BYTE POINTER TO MONITOR OUTPUT BUFFER\r
+\r
+        000243' 200200  000231* 03060           TTYFNU: MOVE ITEM,JOB\r
+        000244' 260140  000232' 03070           TTYFND: PUSHJ PDP,TTYSRC                ;CALLED BY PUSHJ PDP,TTYFND\r
+                                03080           ;       PUSHJ PDP,WSYNC\r
+        000245' 205040  020000  03090                   MOVSI TAC,NIO                   ;JOB NUMBER IN TAC1\r
+        000246' 436046  000002  03100                   IORM TAC,DEVIOS(DEVDAT) \r
+        000247' 201246  000220* 03110           TTYDAT: MOVEI DAT,TTYBUF(DEVDAT)        ;SETUP OUTPUT BYTE POINTER\r
+        000250' 505240  440700  03120                   HRLI DAT,440700\r
+        000251' 263140  000000  03130                   POPJ PDP,\r
+\r
+        000252' 200040  000005  03150           TTYSTR: MOVE TAC,DAT\r
+        000253' 260140  000171* 03160                   PUSHJ PDP,CLRBYT\r
+        000254' 275046  000172* 03170                   SUBI TAC,TTYBM1(DEVDAT)\r
+        000255' 405040  777777  03180                   ANDI TAC,-1\r
+        000256' 221040  000005  03190                   IMULI TAC,5\r
+        000257' 202046  000221* 03200                   MOVEM TAC,TTYCTR(DEVDAT)\r
+        000260' 201046  000247* 03210                   MOVEI TAC,TTYBUF(DEVDAT)\r
+        000261' 505040  440700  03220                   HRLI TAC,440700\r
+        000262' 202046  000225* 03230                   MOVEM TAC,TTYPTR(DEVDAT)\r
+        000263' 200006  000002  03240                   MOVE IOS,DEVIOS(DEVDAT)\r
+        000264' 434000  001147' 03250                   IOR IOS,[XWD NIO+IOFST,IODTER+IOBKTL]\r
+        000265' 420000  001147' 03260                   ANDCM IOS,[XWD NIO+IOFST,IODTER+IOBKTL]\r
+        000266' 260140  000771' 03270                   PUSHJ PDP,GCHAR\r
+        000267' 263140  000000  03280                   POPJ PDP, ;NOTHING TO TYPE\r
+        000270' 254000  000311' 03290                   JRST TTYOU2             ;START OUTPUT\r
+\r
+                                03310           ;DISPATCH TABLE;\r
+\r
+        000271' 263140  000000  03330           TTYDSP: POPJ PDP, ;RELEASE\r
+        000272' 254000  000000* 03340                   JRST OUT        ;CLOSE\r
+        000273' 254000  000301' 03350                   JRST TTYOUT\r
+        000274' 630000  001150' 03360                   TDZ IOS,[XWD TPMON,ECHOF+NCERR]         ;INPUT\r
+        000275' 660000  010000  03370                   TRO IOS,IOACT\r
+\r\fSCNSER - SCANNER SERVICE                 PAGE 9-1\r
+        TOM EGGERS     8-9-65\r
+\r
+        000276' 623000  000002  03380                   TLZE IOS, IOBEG\r
+        000277' 661000  000004  03390                   TLO IOS, IOFST\r
+        000300' 254000  001133' 03400                   JRST MIS1\r
+\r
+        000301' 670000  001151' 03420           TTYOUT: TDO IOS,[XWD TOUT+IOFST,IOACT]\r
+        000302' 630000  001150' 03430                   TDZ IOS,[XWD TPMON,ECHOF+NCERR]\r
+        000303' 135240  000000' 03440           TTYOU0: LDB HPOS,PHPOS\r
+        000304' 135200  000001' 03450                   LDB VPOS,PVPOS\r
+        000305' 260140  000771' 03460                   PUSHJ PDP, GCHAR\r
+        000306' 263140  000000  03470                   POPJ PDP,\r
+        000307' 137240  000000' 03480                   DPB HPOS,PHPOS\r
+        000310' 137200  000001' 03490                   DPB VPOS,PVPOS\r
+        000311' 135100  000130* 03500           TTYOU2: LDB LINE,PUNIT\r
+        000312' 700200  000000* 03510                   CONO CLDS               ;DISABLE CLOCK\r
+        000313' 306100  000000* 03520                   CAIN LINE,TCONLN\r
+        000314' 254000  000325' 03530                   JRST CTYOUT\r
+        000315' 730200  000000  03540                   CONO DCSA,0             ;DISABLE SCANNER\r
+        000316' 730602  000000  03550                   CONO DCSB, (LINE)\r
+        000317' 730140  000010  03560                   DATAO DCSA, CHREC\r
+        000320' 730200  000017* 03570                   CONO DCSA,FSNCHN\r
+        000321' 137400  000002' 03580                   DPB CHREC,PLASTC\r
+        000322' 700200  000000* 03590           TTYOU1: CONO CLEN               ;RE-ENABLE CLOCK\r
+        000323' 202006  000002  03600                   MOVEM IOS,DEVIOS(DEVDAT)\r
+        000324' 263140  000000  03610                   POPJ PDP,\r
+\r
+        000325' 712200  000000  03630           CTYOUT: CONO TTY,0              ;DISABLE TTY\r
+        000326' 712140  000010  03640                   DATAO TTY,CHREC\r
+        000327' 202400  000055' 03650                   MOVEM CHREC,CCHAR\r
+        000330' 712200  000015* 03660                   CONO TTY,SCNCHN         ;RE-ENABLE\r
+        000331' 254000  000301' 03670                   JRST TTYOUT1\r
+\r
+        000332' 712340  000050  03690           CTYINT: CONSO TTY,50\r
+        000333' 254000  000333' 03700                   JRST .\r
+        000334' 712340  000040  03710                   CONSO TTY,40\r
+        000335' 254000  000347' 03720                   JRST CTYOU1\r
+        000336' 202040  000055' 03730                   MOVEM TAC, CCHAR        ;DONT ECHO RUBOUT\r
+        000337' 712040  000001  03740                   DATAI TTY, TAC\r
+        000340' 405040  000177  03750                   ANDI TAC, 177\r
+        000341' 306040  000177  03760                   CAIN TAC, 177\r
+        000342' 254000  000346' 03770                   JRST CTYRUB             ;IS A RUBOUT\r
+        000343' 712140  000001  03780                   DATAO TTY, TAC          ;NOT, SO ECHO\r
+        000344' 250040  000055' 03790                   EXCH TAC, CCHAR\r
+        000345' 254520  000000* 03800                   JRST 12,@SCNCHL                 ;DISMISS INTERRUP\r
+\r
+        000346' 250040  000055' 03820           CTYRUB: EXCH TAC, CCHAR\r
+        000347' 264000  000000* 03830           CTYOU1: JSR SCNSAV\r
+        000350' 201400  000330* 03840                   MOVEI CHREC,SCNCHN\r
+        000351' 712210  000200  03850                   CONO TTY,200(CHREC)\r
+        000352' 200400  000055' 03860                   MOVE CHREC,CCHAR\r
+        000353' 201100  000313* 03870                   MOVEI LINE,TCONLN\r
+        000354' 254000  000364' 03880                   JRST TCOMM\r
+\r
+        000355' 730340  001010  03900           SCNINT: CONSO DCSA,1010\r
+\r\fSCNSER - SCANNER SERVICE                 PAGE 9-2\r
+        TOM EGGERS     8-9-65\r
+\r
+        000356' 254000  000356' 03910                   JRST .\r
+        000357' 264000  000347* 03920                   JSR SCNSAV\r
+        000360' 730340  000010  03930                   CONSO DCSA,10           ;RECEIVER FLAG?\r
+        000361' 254000  000440' 03940                   JRST SCNIN1             ;NO,XMITTER FLAG\r
+        000362' 730640  000002  03950                   CONI DCSB, LINE\r
+        000363' 730440  000010  03960                   DATAI DCSB, CHREC\r
+        000364' 405400  000177  03970           TCOMM:  ANDI CHREC, 177\r
+        000365' 303100  000353* 03980                   CAILE LINE,TCONLN       ;CTY LINE OR LESS\r
+        000366' 254000  000450' 03990                   JRST TYPX               ;NO\r
+        000367' 332302  000233* 04000                   SKIPE DDB,TTYTAB(LINE)  ;DATA BLOCK ASSIGNED?\r
+        000370' 254000  000462' 04010                   JRST INUSE              ;YES\r
+        000371' 260140  000400' 04020                   PUSHJ PDP,DDBSRC        ;SEARCH FOR FREE TTY DEV. DATA BLOCK\r
+        000372' 254000  000450' 04030                   JRST TYPX               ;NONE FOUND, TYPE X\r
+        000373' 403240  000004  04040                   CLEARB HPOS,VPOS        ;ASSUME TTY IS AT BEGIN OF FORM\r
+        000374' 730300  000700  04050                   CONSZ DCSA,700          ;FULL DUPLEX?\r
+        000375' 306100  000365* 04060                   CAIN LINE,TCONLN        ;CTY?\r
+        000376' 254000  000575' 04070                   JRST INJEST             ;NO, SWALLOW CHAR\r
+        000377' 254000  000511' 04080                   JRST TYP1\r
+\r\fSCNSER - SCANNER SERVICE                 PAGE 10\r
+        TOM EGGERS     8-9-65\r
+\r
+\r
+\r
+                                04120   ;ROUTINE TO SEARCH FOR FREE TTY DEV DATA BLOCK\r
+                                04130   ;CALL:    MOVE LINE,TTY LINE NO\r
+                                04140   ;         PUSHJ PDP,DDBSRC\r
+                                04150   ;         NONE FOUND\r
+                                04160   ;         RETURN DEVDAT, LINE SET\r
+\r
+        000400' 205000  000020* 04180   DDBSRC:   MOVSI IOS,MLTTYL      ;NO. OF TTY DDB\r
+        000401' 201300  000066* 04190             MOVEI DEVDAT,TTYLST   ;ADDRESS OF FIRST DDB\r
+        000402' 334040  001144' 04200             SKIPA TAC,[XWD TTYUSE+TTYATC,ASSPRG+ASSCON]\r
+        000403' 554306  000003  04210             HLRZ DEVDAT,DEVSER(DEVDAT)\r
+        000404' 612046  000004  04220             TDNE TAC,DEVMOD(DEVDAT)       ;USE.ATTACH, AND BOTH ASSIGN\r
+        000405' 253000  000403' 04230             AOBJN IOS,.-2\r
+        000406' 325000  000122* 04240             JUMPGE IOS,CPOPJ      ;DDB FOUND?\r
+        000407' 200000  001152' 04250             MOVE IOS,[XWD TPMON+IOFST,IOACT]\r
+        000410' 200040  001153' 04260             MOVE TAC,[XWD TTYUSE,ASSCON]\r
+\r
+                                04280   ;INITIALIZE TTY DEVICE DATA BLOCK(CALLED FROM TTYATT TOO)\r
+\r
+        000411' 436046  000004  04300   SCNIN:    IORM TAC,DEVMOD(DEVDAT)\r
+        000412' 137100  000311* 04310             DPB LINE,PUNIT        ;SET LINE NO. IN DDB\r
+        000413' 205040  646471  04320             MOVSI TAC,646471      ;SIXBIT /TTY/\r
+        000414' 202046  000000  04330             MOVEM TAC,DEVNAM(DEVDAT)\r
+        000415' 200040  001154' 04340             MOVE TAC,[POINT 6,DEVNAM(DEVDAT),17]\r
+        000416' 261140  000002  04350             PUSH PDP,LINE         ;SAVE LINE NO.\r
+        000417' 606100  000070  04360             TRNN LINE,70          ;IS THERE A HIGH ORDER OCTAL DIGIT?\r
+        000420' 254000  000425' 04370             JRST SCNIN0           ;NO\r
+        000421' 241100  777775  04380             ROT LINE,-3           ;YES,CONVERT TO SIXBIT\r
+        000422' 271100  000020  04390             ADDI LINE,20\r
+        000423' 136100  000001  04400             IDPB LINE,TAC         ;STORE HIGH ORDER SIXBIT DIGIT\r
+        000424' 242100  000020  04410             LSH LINE,20           ;IN PHYSICAL NAME\r
+        000425' 271100  000020  04420   SCNIN0:   ADDI LINE,20\r
+        000426' 136100  000001  04430             IDPB LINE,TAC         ;STORE LOW ORDER DIGIT\r
+        000427' 262140  000002  04440             POP PDP,LINE\r
+\r
+        000430' 542302  000367* 04460             HRRM DEVDAT,TTYTAB(LINE)      ;SET LINE NO. IN TRANSLATOR T\r
+        000431' 205040  436471  04470             MOVSI TAC,436471      ;SIXBIT /CTY/\r
+        000432' 306100  000375* 04480             CAIN LINE,TCONLN      ;IS THIS CONSOLE TTY?\r
+        000433' 202046  000000  04490             MOVEM TAC,DEVNAM(DEVDAT)      ;YES, SET NAME TO CTY\r
+        000434' 200046  000000  04500             MOVE TAC,DEVNAM(DEVDAT)\r
+        000435' 336000  000000* 04510             SKIPN DEVOPR          ;IS THIS FIRST CHAR. TYPED BY ANYONE?\r
+        000436' 202040  000435* 04520             MOVEM TAC,DEVOPR      ;YES,SET THIS TTY AS OPERATOR TTY\r
+        000437' 254000  000132* 04530             JRST CPOPJ1           ;SUCCESSFUL RETURN\r
+\r
+        000440' 730040  000002  04550   SCNIN1:   DATAI DCSA,LINE       ;GET LINE NO. FROM FULL DUPLEX\r
+        000441' 201040  000320* 04560             MOVEI TAC,FSNCHN\r
+        000442' 730201  004000  04570             CONO DCSA,4000(TAC)   ;RELEASE XMITTER SCANNER\r
+        000443' 332302  000430* 04580             SKIPE DDB,TTYTAB(LINE)        ;DATA BLOCK ASSIGNED?\r
+        000444' 301100  000432* 04590             CAIL LINE,TCONLN      ;LINE NO. TOO LARGE?\r
+        000445' 254000  000000* 04600             JRST SCNRET                   ;GO AWAY\r
+        000446' 135400  000002' 04610             LDB CHREC,PLASTC\r
+        000447' 254000  000471' 04620             JRST INUS1\r
+\r\fSCNSER - SCANNER SERVICE                 PAGE 11\r
+        TOM EGGERS     8-9-65\r
+\r
+\r
+\r
+        000450' 306400  000130  04660   TYPX:     CAIN CHREC,"X"                ;CHARACTER RECEIVED AN X?\r
+        000451' 254000  000445* 04670             JRST SCNRET                 ;YES, GO AWAY\r
+        000452' 201400  000130  04680             MOVEI CHREC,"X"\r
+        000453' 302100  000444* 04690             CAIE LINE,TCONLN\r
+        000454' 254000  000457' 04700             JRST TYPX1\r
+        000455' 712140  000010  04710             DATAO TTY,CHREC\r
+        000456' 254000  000451* 04720             JRST SCNRET\r
+        000457' 730742  000000  04730   TYPX1:    CONSO DCSB,(LINE)\r
+        000460' 730140  000010  04740             DATAO DCSA,CHREC              ;TYPE AN X\r
+        000461' 254000  000456* 04750             JRST SCNRET\r
+\r
+        000462' 730300  000700  04770   INUSE:    CONSZ DCSA,700        ;FULL DUPLEX?\r
+        000463' 306100  000453* 04780             CAIN LINE,TCONLN\r
+        000464' 254000  000471' 04790             JRST INUS1\r
+        000465' 730602  000000  04800             CONO DCSB,(LINE)\r
+        000466' 730140  000010  04810             DATAO DCSA,CHREC\r
+        000467' 137400  000002' 04820             DPB CHREC,PLASTC\r
+        000470' 254000  000461* 04830             JRST SCNRET\r
+\r
+        000471' 200006  000002  04850   INUS1:    MOVE IOS,DEVIOS(DDB)\r
+        000472' 135340  000111* 04860             LDB PROG,PJOBN\r
+        000473' 550347  000000* 04870             HRRZ PROG,JBTADR(PROG)\r
+        000474' 135240  000000' 04880             LDB HPOS,PHPOS\r
+        000475' 135200  000001' 04890             LDB VPOS,PVPOS\r
+        000476' 135046  000262* 04900             LDB TAC, TTYPTR(DDB)\r
+        000477' 603000  002000  04910             TLNE IOS, SP\r
+        000500' 254000  000533' 04920             JRST SIM35\r
+        000501' 607000  000020  04930   INUS2:    TLNN IOS,TOUT\r
+        000502' 254000  000575' 04940             JRST INJEST\r
+        000503' 312040  000010  04950             CAME TAC, CHREC\r
+        000504' 254000  000527' 04960             JRST ECHO\r
+        000505' 260140  000771' 04970   INUS3:    PUSHJ PDP, GCHAR\r
+        000506' 254000  000520' 04980             JRST LEAV0\r
+        000507' 306100  000463* 04990   TYPE:     CAIN LINE,TCONLN\r
+        000510' 254000  000524' 05000             JRST CTSER3\r
+        000511' 730602  000000  05010   TYP1:     CONO DCSB,(LINE)\r
+        000512' 730140  000010  05020             DATAO DCSA, CHREC\r
+        000513' 137400  000002' 05030             DPB CHREC,PLASTC      ;SAVE CHARACTER FOR FULL DUPLEX\r
+        000514' 202006  000002  05040   LEAVE:    MOVEM IOS, DEVIOS(DDB)\r
+        000515' 137240  000000' 05050   LEAV1:    DPB HPOS,PHPOS\r
+        000516' 137200  000001' 05060             DPB VPOS,PVPOS\r
+        000517' 254000  000470* 05070             JRST SCNRET\r
+        000520' 202046  000004  05080   LEAV0:    MOVEM TAC,DEVMOD(DEVDAT)      ;IS TTY ATTCHED?\r
+        000521' 607040  020000  05090             TLNN TAC,TTYATC\r
+        000522' 260140  000041' 05100             PUSHJ PDP,TTYKIL              ;NO,RETURN TO POOL\r
+        000523' 254000  000515' 05110             JRST LEAV1\r
+\r
+        000524' 712140  000010  05130   CTSER3:   DATAO TTY,CHREC\r
+        000525' 202400  000055' 05140             MOVEM CHREC,CCHAR\r
+        000526' 254000  000514' 05150             JRST LEAVE\r
+\r\fSCNSER - SCANNER SERVICE                 PAGE 12\r
+        TOM EGGERS     8-9-65\r
+\r
+\r
+\r
+        000527' 670000  001155' 05190   ECHO:     TDO IOS,[XWD SP,ECHOF]\r
+        000530' 621000  000020  05200             TLZ IOS,TOUT\r
+        000531' 201400  000177  05210             MOVEI CHREC,177               ;SEND A RUBOUT AFTER ECHO CHE\r
+        000532' 254000  000507' 05220             JRST TYPE\r
+\r
+        000533' 205040  777766  05240   SIM35:    MOVSI TAC,-SCTABL\r
+        000534' 200241  000545' 05250             MOVE HPOS, SCTAB(TAC)\r
+        000535' 302405  000000  05260             CAIE CHREC,(HPOS)\r
+        000536' 253040  000534' 05270             AOBJN TAC, .-2\r
+        000537' 135240  000000' 05280             LDB HPOS,PHPOS\r
+        000540' 325040  000527' 05290             JUMPGE TAC, ECHO\r
+        000541' 204041  000545' 05300             MOVS TAC, SCTAB(TAC)\r
+        000542' 603040  000140  05310             TLNE TAC, 140         ;SPACING CHARACTER\r
+        000543' 344241  000000  05320             AOJA HPOS,(TAC)       ;YES\r
+        000544' 254001  000000  05330             JRST (TAC)            ;NO\r
+\r
+        000545' 000557' 000040  05350   SCTAB:    XWD SPACE," "\r
+        000546' 000565' 000012  05360             XWD SIMLF,12\r
+        000547' 000572' 000177  05370             XWD SIMRO,177         ;RUBOUT\r
+        000550' 000572' 000134  05380             XWD SIMRO,134         ;BACK SLASH\r
+        000551' 000735' 000015  05390             XWD ASC3,15           ;CR\r
+        000552' 000562' 000136  05400             XWD SIMVA,"^"\r
+        000553' 000766' 000103  05410             XWD DELET1,"C"\r
+        000554' 000766' 000117  05420             XWD DELET1,"O"\r
+        000555' 000566' 000132  05430             XWD SIM4,"Z"\r
+        000556' 000766' 000125  05440             XWD DELET1,"U"\r
+                        000012  05450   SCTABL=.-SCTAB\r
+\r
+        000557' 606240  000007  05470   SPACE:    TRNN HPOS,7           ;FINISHED SIMULATING TABS(8)\r
+        000560' 254000  000566' 05480             JRST SIM4             ;YES\r
+        000561' 254000  000507' 05490             JRST TYPE             ;NO, SEND ANOTHER SPACE\r
+\r
+        000562' 135400  000003' 05510   SIMVA:    LDB CHREC,PSCHAR\r
+        000563' 660400  000100  05520             TRO CHREC, 100\r
+        000564' 254000  000507' 05530             JRST TYPE\r
+\r
+        000565' 367200  000507' 05550   SIMLF:    SOJG VPOS,TYPE        ;SEND ANOTHER LINE-FEED\r
+        000566' 621000  002000  05560   SIM4:     TLZ IOS,SP\r
+        000567' 607000  000020  05570             TLNN IOS,TOUT\r
+        000570' 254000  000630' 05580             JRST INJ4\r
+        000571' 254000  000505' 05590             JRST INUS3\r
+\r
+        000572' 625000  002000  05610   SIMRO:    TLZA IOS, SP\r
+        000573' 640000  004000  05620   MOD35:    TRC IOS,T35\r
+        000574' 254000  000514' 05630             JRST LEAVE\r
+\r\fSCNSER - SCANNER SERVICE                 PAGE 13\r
+        TOM EGGERS     8-9-65\r
+\r
+\r
+\r
+        000575' 306400  000003  05670   INJEST:   CAIN CHREC,3          ;CONTROL C?\r
+        000576' 254000  000644' 05680             JRST INJ5\r
+        000577' 623000  000004  05690             TLZE IOS,IOFST        ;IF FIRST CHARACTER IN, INITIALIZE\r
+        000600' 260140  000632' 05700             PUSHJ PDP,SETMB1\r
+        000601' 603000  100000  05710             TLNE IOS,DDTM         ;1 DDT CHAR RESTARTS PROGRAM\r
+        000602' 661000  040040  05720             TLO IOS,SYNC+IOEND    ;YES, TERMINATE BUFFER\r
+        000603' 306400  000017  05730             CAIN CHREC,17                 ;COTNROL O?\r
+        000604' 254000  000657' 05740             JRST INJ6                     ;YES, FLUSH OUTPUT\r
+        000605' 622000  100000  05750             TRZE IOS,ECHOF                ;ECHO HAS OCCURRED?\r
+        000606' 254000  000677' 05760             JRST INJ7                     ;YES, NOW RESUME OUTPUT\r
+        000607' 602000  040000  05770             TRNE IOS,NCERR\r
+        000610' 254000  000514' 05780             JRST LEAVE\r
+        000611' 302400  000033  05790             CAIE CHREC,033        ;NEW NEW ALT-MODE?\r
+        000612' 306400  000176  05800             CAIN CHREC,176        ;NEW ALT-MODE?\r
+        000613' 201400  000175  05810             MOVEI CHREC,175       ;CHANGE TO OLD\r
+        000614' 306400  000020  05820             CAIN CHREC,20         ;CONTROL P TAB SIMULATION FLIP FLOP SWI\r
+        000615' 254000  000573' 05830             JRST MOD35\r
+        000616' 603000  100000  05840             TLNE IOS,DDTM\r
+        000617' 254000  000622' 05850             JRST INJ25            ;SENT RUBOUTS ON TO DDT\r
+        000620' 306400  000177  05860             CAIN CHREC,177        ;RUBOUT\r
+        000621' 254000  000752' 05870             JRST DELET\r
+        000622' 136406  000476* 05880   INJ25:    DPBI CHREC, TTYPTR(DDB)\r
+        000623' 370046  000257* 05890             SOS TAC, TTYCTR(DDB)\r
+        000624' 301400  000040  05900             CAIL CHREC, 40\r
+        000625' 303400  000137  05910             CAILE CHREC, 137\r
+        000626' 254000  000701' 05920             JRST SPCIN\r
+        000627' 271240  000001  05930             ADDI HPOS,1\r
+        000630' 260140  001064' 05940   INJ4:     PUSHJ PDP, MOVBUF\r
+        000631' 254000  000514' 05950             JRST LEAVE\r
+\r
+        000632' 541046  000260* 05970   SETMB1:   HRRI TAC, TTYBUF(DDB)\r
+        000633' 505040  440700  05980             HRLI TAC, 440700\r
+        000634' 202046  000622* 05990             MOVEM TAC, TTYPTR(DDB)\r
+        000635' 507000  000001  06000             HRLS TAC\r
+        000636' 350000  000001  06010             AOS TAC\r
+        000637' 402006  000632* 06020             SETZM TTYBUF(DDB)\r
+        000640' 251046  000000* 06030             BLT TAC,TTYBFE(DDB) ;CLEAR OUT MONITOR BUFFER\r
+        000641' 201040  000111  06040             MOVEI TAC, 111\r
+        000642' 202046  000623* 06050             MOVEM TAC, TTYCTR(DDB)\r
+        000643' 263140  000000  06060             POPJ PDP,\r
+\r\fSCNSER - SCANNER SERVICE                 PAGE 14\r
+        TOM EGGERS     8-9-65\r
+\r
+\r
+\r
+        000644' 260140  000632' 06100   INJ5:     PUSHJ PDP,SETMB1\r
+        000645' 261140  000004  06110             PUSH PDP,ITEM         ;^C\r
+        000646' 135200  000004' 06120             LDB ITEM,TPCJOBN      ;YES, GET USER CONSOLE NUMBER\r
+        000647' 332000  000004  06130             SKIPE ITEM\r
+        000650' 260140  000000* 06140             PUSHJ PDP,STOP1                 ;SHUT OFF JOB\r
+        000651' 262140  000004  06150             POP PDP,ITEM\r
+        000652' 607000  001000  06160             TLNN IOS,TPMON        ;SAVE STATUS OF TTY\r
+        000653' 202006  000063* 06170             MOVEM IOS,TTYSAV(DDB)         ;WHEN IT WAS IN USER MODE\r
+        000654' 200000  001152' 06180             MOVE IOS,[XWD TPMON+IOFST,IOACT]\r
+        000655' 201040  000103  06190             MOVEI TAC,"C"\r
+        000656' 254000  000674' 06200             JRST INJ61\r
+\r
+        000657' 261140  000002  06220   INJ6:     PUSH PDP,TAC1         ;^O\r
+        000660' 623000  000001  06230             TLZE IOS,IOW\r
+        000661' 260140  000000* 06240             PUSHJ PDP,SETIOD\r
+        000662' 262140  000002  06250             POP PDP,TAC1\r
+        000663' 603000  101000  06260             TLNE IOS,TPMON+DDTM\r
+        000664' 254000  000667' 06270             JRST INJ6A\r
+        000665' 603000  000020  06280             TLNE IOS,TOUT\r
+        000666' 260140  000000* 06290             PUSHJ PDP,ADVBFE\r
+        000667' 665000  000004  06300   INJ6A:    TLOA IOS,IOFST\r
+        000670' 254000  000666' 06310             JRST .-2\r
+        000671' 620000  100000  06320             TRZ IOS,ECHOF\r
+        000672' 660000  020000  06330             TRO IOS,IODEND\r
+        000673' 201040  000060  06340             MOVEI TAC,"0"\r
+        000674' 137040  000003' 06350   INJ61:    DPB TAC,PSCHAR\r
+        000675' 201400  000136  06360             MOVEI CHREC,"^"\r
+        000676' 254000  000745' 06370             JRST SPC21\r
+\r
+        000677' 661000  000020  06390   INJ7:     TLO IOS,TOUT\r
+        000700' 254000  000505' 06400             JRST INUS3\r
+\r\fSCNSER - SCANNER SERVICE                 PAGE 15\r
+        TOM EGGERS     8-9-65\r
+\r
+\r
+\r
+        000701' 205040  777770  06440   SPCIN:    MOVSI TAC,-SCITL      ;SEARCH FOR SPECIAL INPUT CHAR\r
+        000702' 200101  000711' 06450             MOVE TAC1,SCITAB(TAC)\r
+        000703' 302402  000000  06460             CAIE CHREC,(TAC1)     ;FOUND?\r
+        000704' 253040  000702' 06470             AOBJN TAC,.-2         ;NO\r
+        000705' 544040  000002  06480             HLR TAC,TAC1          ;SAVE DISPATCH ADDRESS\r
+        000706' 135100  000412* 06490             LDB LINE,PUNIT        ;RESTORE TAC1\r
+        000707' 321041  000000  06500             JUMPL TAC,(TAC)       \r
+        000710' 254000  000630' 06510             JRST INJ4             ;CHARACTER NOT FOUND\r
+\r
+        000711' 000721' 000015  06530   SCITAB:   XWD SPCCR,15          ;CR\r
+        000712' 000727' 000012  06540             XWD ASC1,12           ;LF\r
+        000713' 000742' 000011  06550             XWD SPC2,11           ;HORIZ TAB\r
+        000714' 000724' 000013  06560             XWD SPVT,13           ;VT\r
+        000715' 000723' 000014  06570             XWD SPFF,14           ;FF\r
+        000716' 000737' 000025  06580             XWD SPC4A,25          ;^U\r
+        000717' 000747' 000032  06590             XWD SPC7,32           ;^Z\r
+        000720' 000727' 000175  06600             XWD ASC1, 175         ;ALT MODE\r
+                        000010  06610   SCITL=.-SCITAB\r
+\r
+        000721' 201240  000000  06630   SPCCR:    MOVEI HPOS,0\r
+        000722' 254000  000735' 06640             JRST ASC3\r
+\r
+        000723' 334200  001156' 06660   SPFF:     SKIPA VPOS,[10]\r
+        000724' 201200  000004  06670   SPVT:     MOVEI VPOS,4\r
+        000725' 607000  004000  06680             TLNN IOS,T35          ;DONT SIMULATE FOR A MOD 35\r
+        000726' 661000  002000  06690             TLO IOS,SP\r
+        000727' 135040  000000* 06700   ASC1:     LDB TAC,PIOMOD\r
+        000730' 607000  001000  06710             TLNN IOS,TPMON\r
+        000731' 306040  000001  06720             CAIN TAC,AL\r
+        000732' 661000  040000  06730             TLO IOS,SYNC\r
+        000733' 607000  002000  06740   ASC2:     TLNN IOS,SP\r
+        000734' 254000  000630' 06750             JRST INJ4\r
+        000735' 201400  000012  06760   ASC3:     MOVEI CHREC,12        ;LINE FEED\r
+        000736' 254000  000507' 06770             JRST TYPE\r
+\r
+        000737' 260140  000632' 06790   SPC4A:    PUSHJ PDP,SETMB1\r
+        000740' 201040  000125  06800             MOVEI TAC,"U"\r
+        000741' 254000  000674' 06810             JRST INJ61\r
+\r
+        000742' 602000  004000  06830   SPC2:     TRNE IOS,T35\r
+        000743' 254000  000514' 06840             JRST LEAVE\r
+        000744' 201400  000040  06850             MOVEI CHREC," "\r
+        000745' 661000  002000  06860   SPC21:    TLO IOS,SP\r
+        000746' 254000  000507' 06870             JRST TYPE\r
+\r
+        000747' 661000  042040  06890   SPC7:     TLO IOS,SYNC+IOEND+SP         ;^Z\r
+        000750' 201040  000132  06900             MOVEI TAC,"Z"\r
+        000751' 254000  000674' 06910             JRST INJ61            ;ECHO ^Z\r
+\r\fSCNSER - SCANNER SERVICE                 PAGE 16\r
+        TOM EGGERS     8-9-65\r
+\r
+\r
+\r
+        000752' 200046  000642* 06950   DELET:    MOVE TAC,TTYCTR(DDB)\r
+        000753' 301040  000111  06960             CAIL TAC,111\r
+        000754' 254000  000766' 06970             JRST DELET1\r
+\r
+        000755' 205040  070000  06990             MOVSI TAC,070000\r
+        000756' 270046  000634* 07000             ADD TAC,TTYPTR(DDB)\r
+        000757' 603040  400000  07010             TLNE TAC,400000\r
+        000760' 270040  001157' 07020             ADD TAC,[XWD 347777,-1]\r
+        000761' 202046  000756* 07030             MOVEM TAC,TTYPTR(DDB)\r
+        000762' 350006  000752* 07040             AOS TTYCTR(DDB)\r
+\r
+        000763' 201400  000334  07060             MOVEI CHREC,334               ;BACK SLASH\r
+        000764' 661000  002000  07070   DELET2:   TLO IOS,SP\r
+        000765' 254000  000507' 07080             JRST TYPE\r
+\r
+        000766' 201200  000001  07100   DELET1:   MOVEI VPOS,1\r
+        000767' 201400  000015  07110             MOVEI CHREC,15\r
+        000770' 254000  000764' 07120             JRST DELET2\r
+\r\fSCNSER - SCANNER SERVICE                 PAGE 17\r
+        TOM EGGERS     8-9-65\r
+\r
+\r
+\r
+                                07160   ;ROUTINE TO GET NEXT CHARACTER FROM OUTPUT BUFFER\r
+                                07170   ;CALL:    PUSHJ PDP,GCHAR\r
+                                07180   ;         NO MORE LEFT\r
+                                07190   ;         RETURN WITH CHAR. IN CHREC\r
+\r
+        000771' 627000  000004  07210   GCHAR:    TLZN IOS, IOFST\r
+        000772' 254000  001001' 07220             JRST GCHAR3\r
+        000773' 550046  000010  07230   GCHAR1:   HRRZ TAC,DEVOAD(DDB)\r
+        000774' 270040  001160' 07240             ADD TAC, [XWD 000700+PROG,1]\r
+        000775' 202046  000761* 07250             MOVEM TAC, TTYPTR(DDB)\r
+        000776' 550060  000001  07260             HRRZ TAC, @TAC\r
+        000777' 221040  000005  07270             IMULI TAC, 5\r
+        001000' 202046  000762* 07280             MOVEM TAC,TTYCTR(DDB)\r
+        001001' 375006  001000* 07290   GCHAR3:   SOSGE TTYCTR(DDB)\r
+        001002' 254000  001025' 07300             JRST GCHAR5\r
+        001003' 134406  000775* 07310             LDBI CHREC, TTYPTR(DDB)\r
+        001004' 322400  001023' 07320             JUMPE CHREC, GCHAR7\r
+        001005' 306400  000011  07330             CAIN CHREC, 11\r
+        001006' 254000  001052' 07340             JRST HT\r
+        001007' 306400  000012  07350             CAIN CHREC, 12\r
+        001010' 344200  001017' 07360             AOJA VPOS,GCH3\r
+        001011' 302400  000013  07370             CAIE CHREC, 13\r
+        001012' 306400  000014  07380             CAIN CHREC, 14\r
+        001013' 254000  001057' 07390             JRST VTFF\r
+        001014' 271240  000001  07400             ADDI HPOS,1\r
+        001015' 306400  000015  07410             CAIN CHREC,15\r
+        001016' 201240  000000  07420             MOVEI HPOS,0\r
+        001017' 354003  000000  07430   GCH3:     AOSA (PDP)\r
+        001020' 200006  000653* 07440   GCH3A:    MOVE IOS,TTYSAV(DDB)          ;RESTORE STATUS TO USER\r
+        001021' 202006  000002  07450   GCHAR4:   MOVEM IOS,DEVIOS(DDB)\r
+        001022' 263140  000000  07460             POPJ PDP,\r
+\r
+        001023' 607000  100000  07480   GCHAR7:   TLNN IOS,DDTM         ;DDT BUFFER TERMINATED WITH NULL\r
+        001024' 254000  001001' 07490             JRST GCHAR3\r
+        001025' 261140  000002  07500   GCHAR5:   PUSH PDP,TAC1\r
+        001026' 623000  000001  07510             TLZE IOS, IOW\r
+        001027' 260140  000661* 07520             PUSHJ PDP, SETIOD\r
+        001030' 262140  000002  07530             POP PDP,TAC1\r
+        001031' 607000  101000  07540             TLNN IOS,TPMON+DDTM\r
+        001032' 260140  000666* 07550             PUSHJ PDP, ADVBFE\r
+        001033' 665000  000004  07560             TLOA IOS,IOFST\r
+        001034' 254000  000773' 07570             JRST GCHAR1\r
+        001035' 630000  001161' 07580             TDZ IOS,[XWD IO,IOACT]\r
+        001036' 627000  000100  07590             TLZN IOS,USRB\r
+        001037' 254000  001021' 07600             JRST GCHAR4\r
+        001040' 621000  001000  07610             TLZ IOS,TPMON\r
+        001041' 135100  000706* 07620             LDB LINE,PUNIT        ;GET LINE NO.\r
+        001042' 261140  000004  07630             PUSH PDP,ITEM\r
+        001043' 135200  000004' 07640             LDB ITEM,TPCJOB\r
+        001044' 260140  000000* 07650             PUSHJ PDP,SETRUN\r
+        001045' 262140  000004  07660             POP PDP,ITEM\r
+\r\fSCNSER - SCANNER SERVICE                 PAGE 17-1\r
+        TOM EGGERS     8-9-65\r
+\r
+        001046' 626000  020000  07670             TRZN IOS,USRBC\r
+        001047' 254000  001020' 07680             JRST GCH3A\r
+        001050' 205000  001004  07690             MOVSI IOS,TPMON+IOFST\r
+        001051' 254000  001021' 07700             JRST GCHAR4\r
+        001052' 602000  004000  07710   HT:       TRNE IOS,T35\r
+        001053' 344240  001017' 07720             AOJA HPOS,GCH3\r
+        001054' 661000  002000  07730             TLO IOS,SP\r
+        001055' 201400  000240  07740   SPOUT:    MOVEI CHREC,240\r
+        001056' 254000  001017' 07750             JRST GCH3\r
+\r
+        001057' 602000  004000  07770   VTFF:     TRNE IOS,T35\r
+        001060' 344200  001017' 07780             AOJA VPOS,GCH3\r
+        001061' 201400  000012  07790             MOVEI CHREC,12\r
+        001062' 661000  002000  07800             TLO IOS,SP\r
+        001063' 254000  001017' 07810             JRST GCH3\r
+\r\fSCNSER - SCANNER SERVICE                 PAGE 18\r
+        TOM EGGERS     8-9-65\r
+\r
+\r
+        001064' 603000  100000  07840   MOVBUF:   TLNE IOS,DDTM\r
+        001065' 254000  001125' 07850             JRST MOV3 ;DONT ADVANCE BUFFERS FOR DDT MODE\r
+        001066' 627000  040000  07860             TLZN IOS,SYNC\r
+        001067' 337006  001001* 07870             SKIPG TTYCTR(DDB)\r
+        001070' 254000  001072' 07880             JRST .+2\r
+        001071' 254000  001133' 07890             JRST MIS1\r
+        001072' 603000  001000  07900             TLNE IOS, TPMON\r
+        001073' 254000  001135' 07910             JRST MOVMON\r
+        001074' 200046  000007  07920             MOVE TAC,DEVIAD(DDB)          ;IS TTY EXPECTING INPUT?\r
+        001075' 602040  777777  07930             TRNE TAC,-1   \r
+        001076' 335020  000001  07940             SKIPGE @TAC                   ;OR IS NEXT BUFFER READY?\r
+        001077' 254000  001132' 07950             JRST MIS  ;NO\r
+        001100' 261140  000002  07960             PUSH PDP,TAC1\r
+        001101' 200046  001003* 07970             MOVE TAC,TTYPTR(DDB)\r
+        001102' 260140  000253* 07980             PUSHJ PDP,CLRBYT\r
+        001103' 200046  000007  07990             MOVE TAC,DEVIAD(DDB)\r
+        001104' 260140  000000* 08000             PUSHJ PDP,ADRCK    ;MAKE SURE BUFFER WILL FIT\r
+        001105' 551041  000000* 08010             HRRZI TAC,STTYB1(TAC)         ;LENGTH+1\r
+\r
+        001106' 201066  000007  08030             MOVEI TAC,@DEVIAD(DDB)\r
+        001107' 271040  000002  08040             ADDI TAC,2\r
+        001110' 540400  000001  08050             HRR CHREC,TAC\r
+        001111' 271040  000000* 08060             ADDI TAC,STTYBF\r
+        001112' 505406  000637* 08070             HRLI CHREC,TTYBUF(DDB)\r
+        001113' 251401  777777  08080             BLT CHREC,-1 (TAC)\r
+        \r
+        001114' 201040  000111  08100             MOVEI TAC,111\r
+        001115' 274046  001067* 08110             SUB TAC, TTYCTR(DDB)\r
+        001116' 271040  000004  08120             ADDI TAC,4\r
+        001117' 231040  000005  08130             IDIVI TAC,5\r
+        001120' 201426  000007  08140             MOVEI CHREC,@DEVIAD(DDB)\r
+        001121' 202050  000001  08150             MOVEM TAC,1(CHREC)\r
+        001122' 260140  000000* 08160             PUSHJ PDP, ADVBFF\r
+        001123' 254000  001124' 08170             JRST .+1\r
+        001124' 665000  000004  08180             TLOA IOS,IOFST\r
+        001125' 261140  000002  08190   MOV3:     PUSH PDP,TAC1\r
+        001126' 623000  000001  08200             TLZE IOS, IOW\r
+        001127' 260140  001027* 08210             PUSHJ PDP, SETIOD\r
+        001130' 262140  000002  08220             POP PDP,TAC1\r
+        001131' 624000  050000  08230             TRZA IOS,NCERR+IOACT\r
+        001132' 660000  040000  08240   MIS:      TRO IOS, NCERR\r
+        001133' 202006  000002  08250   MIS1:     MOVEM IOS, DEVIOS(DDB)\r
+        001134' 263140  000000  08260             POPJ PDP,\r
+        001135' 205040  400000  08270   MOVMON:   MOVSI TAC,400000\r
+        001136' 436042  000443* 08280             IORM TAC,TTYTAB(LINE)         ;SET BIT FOR MONITOR\r
+        001137' 661000  000004  08290             TLO IOS,IOFST\r
+        001140' 201040  000015  08300             MOVEI TAC,15\r
+        001141' 137046  001101* 08310             DPB TAC,TTYPTR(DDB) ;FORCE A CARRIAGE RET INTO MONITOR COMM\r
+        001142' 350000  000000* 08320             AOS COMCNT\r
+        001143' 263140  000000  08330             POPJ PDP,\r
+\r
+                                08350             END,\r
+\r\fSCNSER - SCANNER SERVICE                 PAGE 18-1\r
+        TOM EGGERS     8-9-65\r
+\r
+        001144' 030000  600000\r
+        001145' 000100  020000\r
+        001146' 120020  010000\r
+        001147' 020004  140000\r
+        001150' 001000  140000\r
+        001151' 000024  010000\r
+        001152' 001004  010000\r
+        001153' 010000  400000\r
+        001154' 220606  000000\r
+        001155' 002000  100000\r
+        001156' 000000  000010\r
+        001157' 347777  777777\r
+        001160' 000707  000001\r
+        001161' 000020  010000\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 001162\r
+\r
+9K CORE USED\r
+\r\fSCNSER - SCANNER SERVICE                 PAGE 19\r
+        SYMBOL TABLE\r
+\r
+                000443  \r
+A               000000  INT\r
+AC1             000015  INT\r
+AC2             000016  INT\r
+AC3             000017  INT\r
+ADRCK           001104' EXT\r
+ADVBFE          001032' EXT\r
+ADVBFF          001122' EXT\r
+AL              000001  INT\r
+ASC1            000727' \r
+ASC2            000733' \r
+ASC3            000735' \r
+ASSCON          400000  INT\r
+ASSPRG          200000  INT\r
+B               000014  INT\r
+BUFPNT          000012  INT\r
+BUFWRD          000013  INT\r
+CCHAR           000055' \r
+CHREC           000010  \r
+CLDS            000312' EXT\r
+CLEN            000322' EXT\r
+CLOSB           002000  INT\r
+CLRBYT          001102' EXT\r
+CLSIN           000002  INT\r
+CLSOUT          000001  INT\r
+COMCNT          001142' EXT\r
+CPOPJ           000406' EXT\r
+CPOPJ1          000437' EXT\r
+CTSER3          000524' \r
+CTYINT          000332' INT\r
+CTYOU1          000347' \r
+CTYOUT          000325' \r
+CTYRUB          000346' \r
+D               000017  INT\r
+DAT             000005  INT\r
+DCHAR           000177  \r
+DCL             000001  INT\r
+DCSA            000300  SPD\r
+DCSB            000304  SPD\r
+DCW             020000  INT\r
+DDB             000006  \r
+DDBSRC          000400' \r
+DDI             000007  INT\r
+DDO             000006  INT\r
+DDTGT           000133' INT\r
+DDTGT2          000141' \r
+DDTIN           000153' INT\r
+DDTIN2          000157' \r
+DDTIN3          000166' \r
+DDTM            100000  \r
+DDTMEM          000037  INT\r
+DDTOUT          000206' INT\r
+DDTRL           000144' INT\r
+\r\fSCNSER - SCANNER SERVICE                 PAGE 19-1\r
+        SYMBOL TABLE\r
+\r
+DDTSYM          000036  INT\r
+DELET           000752' \r
+DELET1          000766' \r
+DELET2          000764' \r
+DEN             000004  INT\r
+DETH            010000  \r
+DEVADR          000007  INT\r
+DEVBUF          000006  INT\r
+DEVCHR          000001  INT\r
+DEVCTR          000011  INT\r
+DEVDAT          000006  INT\r
+DEVIAD          000007  INT\r
+DEVIOS          000002  INT\r
+DEVLOG          000005  INT\r
+DEVLST          000000  EXT\r
+DEVMOD          000004  INT\r
+DEVNAM          000000  INT\r
+DEVOAD          000010  INT\r
+DEVOPR          000436' EXT\r
+DEVPHY          000242' EXT\r
+DEVPTR          000010  INT\r
+DEVSER          000003  INT\r
+DGF             000012  INT\r
+DIN             000003  INT\r
+DLK             000005  INT\r
+DOU             000002  INT\r
+DR              000016  INT\r
+DRL             000000  INT\r
+DSI             000011  INT\r
+DSO             000010  INT\r
+DTW             040000  INT\r
+DVAVAL          000040  INT\r
+DVCDR           100000  INT\r
+DVDIR           000004  INT\r
+DVDIRI          400000  INT\r
+DVIN            000002  INT\r
+DVLPT           040000  INT\r
+DVMTA           000020  INT\r
+DVOUT           000001  INT\r
+DVTTY           000010  INT\r
+ECHO            000527' \r
+ECHOF           100000  \r
+ENTRB           020000  INT\r
+FSNCHN          000441' EXT\r
+GCH3            001017' \r
+GCH3A           001020' \r
+GCHAR           000771' \r
+GCHAR1          000773' \r
+GCHAR3          001001' \r
+GCHAR4          001021' \r
+GCHAR5          001025' \r
+GCHAR7          001023' \r
+HPOS            000005  \r
+\r\fSCNSER - SCANNER SERVICE                 PAGE 19-2\r
+        SYMBOL TABLE\r
+\r
+HT              001052' \r
+I               000010  INT\r
+IB              000013  INT\r
+IBUFB           200000  INT\r
+INITB           400000  INT\r
+INJ25           000622' \r
+INJ4            000630' \r
+INJ5            000644' \r
+INJ6            000657' \r
+INJ61           000674' \r
+INJ6A           000667' \r
+INJ7            000677' \r
+INJEST          000575' \r
+INPB            010000  INT\r
+INUS1           000471' \r
+INUS2           000501' \r
+INUS3           000505' \r
+INUSE           000462' \r
+IO              000020  INT\r
+IOACT           010000  INT\r
+IOBEG           000002  INT\r
+IOBKTL          040000  INT\r
+IOCON           000040  INT\r
+IODEND          020000  INT\r
+IODERR          200000  INT\r
+IODISC          400000  INT\r
+IODONE          400000  INT\r
+IODTER          100000  INT\r
+IOEND           000040  INT\r
+IOFST           000004  INT\r
+IOIMPM          400000  INT\r
+IONRCK          000100  INT\r
+IORDEL          000100  INT\r
+IORET           000020  INT\r
+IOS             000000  INT\r
+IOSTRT          000010  INT\r
+IOUSE           400000  INT\r
+IOW             000001  INT\r
+IOWC            000020  INT\r
+IOWS            400000  INT\r
+ITEM            000004  INT\r
+JBFADR          000000  INT\r
+JBFCTR          000002  INT\r
+JBFPTR          000001  INT\r
+JBTADR          000473' EXT\r
+JBUF            000005  INT\r
+JDAT            000011  INT\r
+JERR            002000  INT\r
+JIOW            100000  INT\r
+JNA             004000  INT\r
+JOB             000243' EXT\r
+LEAV0           000520' \r
+LEAV1           000515' \r
+\r\fSCNSER - SCANNER SERVICE                 PAGE 19-3\r
+        SYMBOL TABLE\r
+\r
+LEAVE           000514' \r
+LINE            000002  \r
+LOOKB           040000  INT\r
+MIS             001132' \r
+MIS1            001133' \r
+MLTTYL          000400' EXT\r
+MOD35           000573' \r
+MOV3            001125' \r
+MOVBUF          001064' \r
+MOVMON          001135' \r
+MTTYLN          000232' EXT\r
+MTW             010000  INT\r
+NCERR           040000  \r
+NIO             020000  \r
+OBUFB           100000  INT\r
+OUT             000272' EXT\r
+OUTPB           004000  INT\r
+PDP             000003  INT\r
+PHPOS           000000' \r
+PICHN           000100  INT\r
+PIOFF           000400  \r
+PIOMOD          000727' EXT\r
+PION            000200  \r
+PJOBN           000472' EXT\r
+PLASTC          000002' \r
+PROG            000007  INT\r
+PSCHAR          000003' \r
+PUNIT           001041' EXT\r
+PUUOAC          000214' EXT\r
+PVPOS           000001' \r
+RUN             200000  INT\r
+RUNABL          204000  INT\r
+SCITAB          000711' \r
+SCITL           000010  \r
+SCN1            000024' \r
+SCN2            000035' \r
+SCNCHL          000345' EXT\r
+SCNCHN          000350' EXT\r
+SCNIN           000411' \r
+SCNIN0          000425' \r
+SCNIN1          000440' \r
+SCNINI          000005' INT\r
+SCNINT          000355' INT\r
+SCNRET          000517' EXT\r
+SCNSAV          000357' EXT\r
+SCTAB           000545' \r
+SCTABL          000012  \r
+SETIOD          001127' EXT\r
+SETMB1          000632' \r
+SETRUN          001044' EXT\r
+SIM35           000533' \r
+SIM4            000566' \r
+SIMLF           000565' \r
+\r\fSCNSER - SCANNER SERVICE                 PAGE 19-4\r
+        SYMBOL TABLE\r
+\r
+SIMRO           000572' \r
+SIMVA           000562' \r
+SP              002000  \r
+SPACE           000557' \r
+SPC2            000742' \r
+SPC21           000745' \r
+SPC4A           000737' \r
+SPC7            000747' \r
+SPCCR           000721' \r
+SPCIN           000701' \r
+SPFF            000723' \r
+SPOUT           001055' \r
+SPVT            000724' \r
+STOP1           000650' EXT\r
+STTYB1          001105' EXT\r
+STTYBF          001111' EXT\r
+SYNC            040000  \r
+T35             004000  \r
+TAC             000001  INT\r
+TAC1            000002  INT\r
+TCOMM           000364' \r
+TCONLN          000507' EXT\r
+TEM             000010  INT\r
+TOUT            000020  \r
+TPCJOB          000004' \r
+TPMON           001000  \r
+TSCNLN          000000  EXT\r
+TTY             000120  SPD\r
+TTY0DB          000000  EXT\r
+TTYAT2          000070' \r
+TTYAT3          000110' \r
+TTYAT4          000115' \r
+TTYATC          020000  INT\r
+TTYATT          000065' INT\r
+TTYBFE          000640' EXT\r
+TTYBM1          000254' EXT\r
+TTYBUF          001112' EXT\r
+TTYCOM          000117' INT\r
+TTYCTR          001115' EXT\r
+TTYDAT          000247' \r
+TTYDET          000046' INT\r
+TTYDSP          000271' ENT\r
+TTYDT1          000052' \r
+TTYF0           000240' \r
+TTYFND          000244' INT\r
+TTYFNU          000243' INT\r
+TTYJOB          000130' INT\r
+TTYKIL          000041' INT\r
+TTYLST          000401' EXT\r
+TTYOU0          000303' \r
+TTYOU1          000322' \r
+TTYOU2          000311' \r
+TTYOUT          000301' \r
+\r\fSCNSER - SCANNER SERVICE                 PAGE 19-5\r
+        SYMBOL TABLE\r
+\r
+TTYPTR          001141' EXT\r
+TTYSAV          001020' EXT\r
+TTYSET          000062' INT\r
+TTYSR1          000231' \r
+TTYSRC          000232' \r
+TTYSTR          000252' INT\r
+TTYTAB          001136' EXT\r
+TTYURC          000056' INT\r
+TTYUSE          010000  INT\r
+TTYUSR          000057' INT\r
+TYP1            000511' \r
+TYPE            000507' \r
+TYPX            000450' \r
+TYPX1           000457' \r
+USRB            000100  \r
+USRBC           020000  \r
+USRMOD          010000  INT\r
+UUO             000014  INT\r
+UXIT            000230' EXT\r
+VPOS            000004  \r
+VTFF            001057' \r
+WAIT1           000211' EXT\r
+WSYNC           000164' EXT\r
+\f   SSSSSSSSSSSS      YYY         YYY         SSSSSSSSSSSS         CCCCCCCCCCCC         OOOOOOOOO         NNN         NNN\r
+   SSSSSSSSSSSS      YYY         YYY         SSSSSSSSSSSS         CCCCCCCCCCCC         OOOOOOOOO         NNN         NNN\r
+   SSSSSSSSSSSS      YYY         YYY         SSSSSSSSSSSS         CCCCCCCCCCCC         OOOOOOOOO         NNN         NNN\r
+SSS                  YYY         YYY      SSS                  CCC                  OOO         OOO      NNN         NNN\r
+SSS                  YYY         YYY      SSS                  CCC                  OOO         OOO      NNN         NNN\r
+SSS                  YYY         YYY      SSS                  CCC                  OOO         OOO      NNN         NNN\r
+SSS                     YYY   YYY         SSS                  CCC                  OOO         OOO      NNNNNN      NNN\r
+SSS                     YYY   YYY         SSS                  CCC                  OOO         OOO      NNNNNN      NNN\r
+SSS                     YYY   YYY         SSS                  CCC                  OOO         OOO      NNNNNN      NNN\r
+   SSSSSSSSS               YYY               SSSSSSSSS         CCC                  OOO         OOO      NNN   NNN   NNN\r
+   SSSSSSSSS               YYY               SSSSSSSSS         CCC                  OOO         OOO      NNN   NNN   NNN\r
+   SSSSSSSSS               YYY               SSSSSSSSS         CCC                  OOO         OOO      NNN   NNN   NNN\r
+            SSS            YYY                        SSS      CCC                  OOO         OOO      NNN      NNNNNN\r
+            SSS            YYY                        SSS      CCC                  OOO         OOO      NNN      NNNNNN\r
+            SSS            YYY                        SSS      CCC                  OOO         OOO      NNN      NNNNNN\r
+            SSS            YYY                        SSS      CCC                  OOO         OOO      NNN         NNN\r
+            SSS            YYY                        SSS      CCC                  OOO         OOO      NNN         NNN\r
+            SSS            YYY                        SSS      CCC                  OOO         OOO      NNN         NNN\r
+SSSSSSSSSSSS               YYY            SSSSSSSSSSSS            CCCCCCCCCCCC         OOOOOOOOO         NNN         NNN\r
+SSSSSSSSSSSS               YYY            SSSSSSSSSSSS            CCCCCCCCCCCC         OOOOOOOOO         NNN         NNN\r
+SSSSSSSSSSSS               YYY            SSSSSSSSSSSS            CCCCCCCCCCCC         OOOOOOOOO         NNN         NNN\r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  11:23:08\r
+File: DSKB1 :SYSCON.LST   [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:25
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:2224 \r
+File will be deleted after printing\r
+\f\rSYSCON - UUO HANDLER                 PAGE 1\r
+        8-9-65\r
+\r
+                                00010           XLIST\r
+                                01930          LIST\r
+\r\fSYSCON - UUO HANDLER                 PAGE 7\r
+        8-9-65\r
+\r
+\r
+                                00010   TITLE SYSCON - UUO HANDLER\r
+                                00020   SUBTTL 8-9-65\r
+                                00030   EXTERNAL CLOSE1,ILLINS,IN,JOBAC,JOBADR,JOBDAT\r
+                                00040   EXTERNAL MTAPE1,OUT,RELEA1,UINBF,UINIT,UOUTBF\r
+                                00050   EXTERNAL USRJDA,USRSAV,USTATO,USTATS,USTATZ\r
+                                00060   EXTERNAL ERROR,UUOERR,CLDS,CLEN\r
+                                00070   EXTERNAL IOIERR,MJOBPD,JOBPDL,WAIT1,USRREL,PUUOAC\r
+                                00080   EXTERNAL JOBPDL,MJOBPD,USETST\r
+\r\fSYSCON - UUO HANDLER                 PAGE 2\r
+        8-9-65\r
+\r
+\r
+\r
+\r
+                                00130   , DEC 06 00 EX UUO L PT PRE 06 UUO HANDLER\r
+                                00140   , 3/10/65\r
+                                00150   ,   ALL UUOS DROP THEMSELVE IN REAL LOCATION 40, AND TRAP\r
+                                00160   , TO 41. THE UUO HANDLER SHUFFLES THE UUO OFF TO THE USERS\r
+                                00170   , 40,41, IF IT IS NOT A SYSTEM UUO.\r
+                                00180   , SYSTEM UUOS FALL INTO THREE CLASSES, HANDLED DIFFERENTLY\r
+                                00190   , (1) SYSTEM FUNCTIONS: LOAD ACS PDP, PROG, AND DISPATCH TO THE\r
+                                00200   , FUNCTION.\r
+                                00210   , (2) DEVICE INDEPENDENT I/O UUO: ALSO LOAD ACS DEVDAT AND IOS\r
+                                00220   , AND GO THE THE SYSTEM FUNCTION.\r
+                                00230   , (3) DEVICE DEPENDENT I/O UUOS: DO (1) AND (2), THEN DISPATCH\r
+                                00240   , THROUGH THE TABLE WHOSE ADDRESS IS IN THE RIGHT HALF OF DEVSER(DEVD\r
+                                00250   , CONTROL MAY ALWAYS BE RETURNED BY EXECUTING A\r
+                                00260   ,    JRST UXIT\r
+                                00270   , WHICH WILL RESTORE THE ACS, ARP BITS, AND RETURN.\r
+                                00280   , THE UUO HANDLER IS PURE IF THE FOLLOWING RESTRICTIONS ARE OBSERVED.\r
+                                00290   , RESTRICTIONS: UUOS CANNOT BE CALLED BY INTERRUPT SERVICE ROUTINES.\r
+                                00300   , MONITOR INTERFACE\r
+                                00310   ,         STORAGE: 89\r
+                                00320   ,         ROUTINES CALLED: ILLINS, ADRCK, EXCLK, UUOH, SETIOS,UUOUSR\r
+                                00330   ,            UUOS CALLED: CALL, INIT, RELEAS, CLOSE, OUTBUF, INBUF\r
+                                00340   ,                         STATS, STATO, STATZ, OUTPUT, INPUT\r
+                                00350   ,            DEVICE DEPENDENT:          DEN, DLK, DSO, DSI, DGF\r
+                                00360   ,         SYMBOLS SET/USED:     \r
+                                00370   ,                   ACCUMULATORS:       POP  S/U  TAC  S/U\r
+                                00380   ,                                       PROG S/U  TAC1 S/U\r
+                                00390   ,                                       SUB  S\r
+                                00400   ,                   SYSTEM PARAMETERS:  UIO   U\r
+                                00410   ,                                       USYS  U\r
+                                00420   ,                                       USYSN U\r
+                                00430   ,                   JOB AREA:           JOBAC  U  JOBDAT U\r
+                                00440   ,                                       JOBPDP U\r
+                                00450   ,                   SYSTEM ADDRESSES:   CLK    S/U\r
+                                00460   ,                                       JOBADR U\r
+                                00470   ,                                       USRLEV S/U\r
+                                00480   ,                   DEVICE DATA BLOCK:  DEVSER U\r
+                                00490   ,                   INTERNAL ADDRESSES: 40     S/U\r
+                                00500   ,                                       UUO0   S/U\r
+                                00510   ,                                       UUSAV  S/U\r
+\r\fSYSCON - UUO HANDLER                 PAGE 3\r
+        8-9-65\r
+\r
+\r
+\r
+\r
+                                00560   INTERNAL UUO0\r
+\r
+        000000' 000000  000000  00580   UUO0:     0\r
+        000001' 250040  000040  00590             EXCH TAC,40           ;SAVE TAC; PICK UP UUO\r
+        000002' 202740  000000* 00600             MOVEM 17,USRSAV       ;SAVE 17\r
+        000003' 603040  077000  00610             TLNE TAC,77000        ;0 UUO IS ILLEGAL\r
+        000004' 603040  740000  00620             TLNE TAC,740000       ;UUO FOR SYSTEM?\r
+        000005' 254000  000030' 00630             JRST UUOSYS           ;YES\r
+        000006' 200740  000000* 00640             MOVE 17,JOBADR        ;GET JOB AREA ADDRESS\r
+        000007' 202057  000040  00650             MOVEM TAC,40(17)      ;STORE UUO IN USERS 40\r
+        000010' 550057  000041  00660             HRRZ TAC,41(17)       ;PICK UP ADR OF USERS JSR\r
+        000011' 322040  000030' 00670             JUMPE TAC,UUOSYS      ;IF ADDRESS=0,ILLEGAL USER UU\r
+        000012' 500040  000000' 00680             HLL TAC,UUO0          ;PICK UP PROCESSOR FLAGS FOR\r
+        000013' 607040  010000  00690             TLNN TAC,USRMOD       ;WAS UUO FROM USER?\r
+        000014' 254000  000030' 00700             JRST UUOSYS           ;NO, ILLEGAL NUUO FROM SYSTEM\r
+        000015' 201741  000000  00710             MOVEI 17,(TAC)        ;17 NOW HAS REL. ADR. OF USER\r
+        000016' 317740  000000* 00720             CAMG 17,USRREL        ;DONT INCREMENT RETURN IF PC\r
+        000017' 541041  000001  00730             HRRI TAC,1(TAC)       ;INCREMENT PC\r
+        000020' 250040  000000' 00740             EXCH TAC,UUO0         ;SET UP RETURN  TO USER, PICK\r
+                                00750                                   ;UP USERS FLAGS,PC\r
+        000021' 313740  000016* 00760             CAMLE 17,USRREL       ;LEGAL MEMORY?\r
+        000022' 254000  000025' 00770             JRST .+3  ;NO. DONT STORE PC\r
+        000023' 270740  000006* 00780             ADD 17,JOBADR         ;MAKE REL. ADR. INTO ABS. ADR\r
+        000024' 202057  000000  00790             MOVEM TAC,(17)        ;STORE FLAGS AND PC LIKE JSR\r
+        000025' 200040  000040  00800             MOVE TAC,40           ;RESTORE TAC\r
+        000026' 200740  000002* 00810             MOVE 17,USRSAV        ;RESTORE 17\r
+        000027' 254120  000000' 00820             JRST 2,@UUO0          ;RETURN TO USER\r
+\r\fSYSCON - UUO HANDLER                 PAGE 4\r
+        8-9-65\r
+\r
+\r
+\r
+\r
+        000030' 250040  000040  00870   UUOSYS:   EXCH TAC,40                   ;RESTORE TA. RESTORE THE UUO\r
+        000031' 200740  000000' 00880             MOVE 17,UUO0                  ;PICK UP PROCESSOR FLAG\r
+        000032' 607740  010000  00890             TLNN 17,USRMOD                ;SYSTEM UUO FROM SYSTEM?\r
+        000033' 254000  000046' 00900             JRST UUOSY1                   ;YES\r
+        000034' 200740  000023* 00910             MOVE 17,JOBADR                ;NO. PICK UP ADR. OF USER PRO\r
+        000035' 202717  000016  00920             MOVEM 16,16(17)               ;STORE AC16 IN USER 16\r
+        000036' 550700  000017  00930             HRRZ 16,17                    ;SET UP BLP POINTER\r
+        000037' 251717  000015  00940             BLT 16,15(17)                 ;MOVE REAL ACS TO USER AREA\r
+        000040' 200000  000026* 00950             MOVE 0,USRSAV                 ;MOVE USER 17 TO USERS AREA\r
+        000041' 202017  000017  00960             MOVEM 0,17(17)\r
+        \r
+        000042' 200440  000000* 00980             MOVE JDAT,JOBDAT              ;LOAD UP JOB DAT AREA ADDRES\r
+        000043' 205140  000000* 00990             MOVSI PDP,MJOBPD              ;LOAD UP PUSH DOWN AC AND\r
+        000044' 541151  000000* 01000             HRRI PDP,JOBPDL(JDAT)                   ;MAKE ABSOLUTE PATH\r
+        000045' 334340  000017  01010             SKIPA PROG,17       ;PROGRAM BASE ADDRESS\r
+        000046' 200740  000040* 01020   UUOSY1:   MOVE 17,USRSAV                ;RESTORE AC17 IF UUO FROM SYS\r
+        000047' 261140  000000' 01030             PUSH PDP,UUO0                 ;SAVE RETURN ON PUSH DOWN LIS\r
+        000050' 200600  000040  01040             MOVE UUO,40                   ;GET THE UUO INTO AC(UUO)\r
+        000051' 135100  000250' 01050             LDB TAC1,[POINT 9,UUO,8]                ;PICK UP UUO OP COD\r
+        000052' 301100  000100  01060             CAIL TAC1,100                 ;ILLEGAL INSTRUCTION?\r
+        000053' 254000  000000* 01070             JRST ILLINS                   ;YES\r
+        000054' 305100  000040  01080             CAIGE TAC1,40                 ;SYSTEM UUO?\r
+        000055' 254000  000000* 01090             JRST UUOERR                   ;NO. ILLEGAL\r
+        000056' 135040  000000* 01100             LDB TAC,PUUOAC\r
+        000057' 200301  000000* 01110             MOVE DEVDAT,USRJDA(TAC)       ;GET DDB\r
+        000060' 305100  000060  01120             CAIGE TAC1,100-UUOT2L                   ;AN IO UUO?\r
+        000061' 254000  000070' 01130             JRST UUODSP                   ;NO\r
+        000062' 302100  000070  01140             CAIE TAC1,70          ;CLOSE AND RELEASE ARE ALWAYS LEGAL\r
+        000063' 306100  000071  01150             CAIN TAC1,71\r
+        000064' 322300  000236' 01160             JUMPE DEVDAT,UXIT\r
+        000065' 322300  000000* 01170             JUMPE DEVDAT,IOIERR ;CHANNEL MUST BE ASSIGNED\r
+        000066' 200006  000002  01180             MOVE IOS,DEVIOS(DEVDAT)                 ;GET DATA BLOCK STA\r
+        000067' 254002  000015' 01190             JRST UUOT2-77+UUOT2L-1(TAC1)  ;DISPATCH\r
+\r
+        000070' 305100  000042  01210   UUODSP:   CAIGE TAC1,40+UUOT1L          ;LEGAL SYSTEM UUO?\r
+        000071' 254002  000033' 01220             JRST UUOT1-40(TAC1)           ;YES. DISPATCH\r
+        000072' 254000  000055* 01230             JRST UUOERR\r
+\r\fSYSCON - UUO HANDLER                 PAGE 5\r
+        8-9-65\r
+\r
+\r
+\r
+        000073' 254000  000162' 01270   UUOT1:    JRST UCALL            ;40\r
+        000074' 254000  000000* 01280             JRST UINIT\r
+                                01290   ;ADD NON IO UUOS HERE\r
+\r
+                        000002  01310   UUOT1L=.-UUOT1\r
+\r
+        000075'                 01330   UUOT2:\r
+                                01340   ;ADD IO UUOS HERE\r
+        000075' 254000  000000* 01350             JRST USETST\r
+        000076' 254000  000000* 01360             JRST USTATO\r
+        000077' 254000  000000* 01370             JRST USTATS\r
+        000100' 254000  000000* 01380             JRST USTATZ\r
+        000101' 254000  000000* 01390             JRST UINBF\r
+        000102' 254000  000000* 01400             JRST UOUTBF\r
+        000103' 254000  000000* 01410             JRST IN\r
+        000104' 254000  000000* 01420             JRST OUT\r
+        000105' 254000  000000* 01430             JRST CLOSE1\r
+        000106' 254000  000000* 01440             JRST RELEA1\r
+        000107' 254000  000000* 01450             JRST MTAPE1\r
+        000110' 254000  000160' 01460             JRST UDGF\r
+        000111' 254000  000156' 01470             JRST UDSI\r
+        000112' 254000  000154' 01480             JRST UDSO\r
+        000113' 254000  000143' 01490             JRST UDLK\r
+        000114' 254000  000131' 01500             JRST UDEN             ;77\r
+                        000020  01510   UUOT2L=.-UUOT2\r
+\r\fSYSCON - UUO HANDLER                 PAGE 6\r
+        8-9-65\r
+\r
+\r
+\r
+                                01550   ,DISPATCH TO SPECIAL ROUTINE\r
+                                01560   DEFINE DSPT(A)\r
+                                01570   <U'A:     PUSHJ PDP,UDSP\r
+                                01580   JRST A(TAC)\r
+                                01590   >\r
+        000115' 200046  000003  01600   UDSP:     MOVE TAC,DEVSER(DEVDAT)\r
+        000116' 200106  000001  01610             MOVE TAC1,DEVCHR(DEVDAT)\r
+        000117' 607100  000020  01620             TLNN TAC1,IORET\r
+        000120' 201040  000116' 01630             MOVEI TAC,NRTOSP-4    ;IGNORE THESE CALLS FOR NON-\r
+        000121' 263140  000000  01640             POPJ PDP,\r
+        000122' 254000  000235' 01650   NRTOSP:   JRST CUXIT1           ;SKIP RETURN\r
+        000123' 254000  000235' 01660             JRST CUXIT1           ;SKIP RETURN\r
+        000124' 265240  000000* 01670             JSP DAT,ERROR         ;DUMP0\r
+        000125' 265240  000124* 01680             JSP DAT,ERROR         ;DUMP1\r
+        000126' 254000  000072* 01690             JRST UUOERR                   ;USETO\r
+        000127' 254000  000126* 01700             JRST UUOERR                   ;USETI\r
+        000130' 254000  000127* 01710             JRST UUOERR                   ;GETF\r
+        000131' 260140  000000* 01720   UDEN:     PUSHJ PDP,WAIT1\r
+        000132' 661000  000002  01730             TLO IOS,IOBEG\r
+        000133' 620000  776000  01740             TRZ IOS,776000\r
+        000134' 202006  000002  01750             MOVEM IOS,DEVIOS(DEVDAT)\r
+        000135' 135040  000056* 01760             LDB TAC,PUUOAC\r
+        000136' 661300  020000  01770             TLO DEVDAT,ENTRB\r
+        000137' 621300  002000  01780             TLZ DEVDAT,CLOSB\r
+        000140' 502301  000057* 01790             HLLM DEVDAT,USRJDA(TAC)\r
+        000141' 260140  000115' 01800             PUSHJ PDP,UDSP\r
+        000142' 254001  000004  01810             JRST DEN(TAC)\r
+\r
+        000143' 260140  000131* 01830   UDLK:     PUSHJ PDP,WAIT1\r
+        000144' 630000  000251' 01840             TDZ IOS,[XWD IOEND,776000]\r
+        000145' 202006  000002  01850             MOVEM IOS,DEVIOS(DEVDAT)\r
+        000146' 135040  000135* 01860             LDB TAC,PUUOAC\r
+        000147' 661300  040000  01870             TLO DEVDAT,LOOKB\r
+        000150' 621300  002000  01880             TLZ DEVDAT,CLOSB\r
+        000151' 502301  000140* 01890             HLLM DEVDAT,USRJDA(TAC)\r
+        000152' 260140  000115' 01900             PUSHJ PDP,UDSP\r
+        000153' 254001  000005  01910             JRST DLK(TAC)\r
+\r
+        000154' 260140  000115' 01930             DSPT(DSO)^UDSO:         PUSHJ PDP,UDSP\r
+        000155' 254001  000010          JRST DSO(TAC)\r
+\r
+        000156' 260140  000115' 01950             DSPT(DSI)^UDSI:         PUSHJ PDP,UDSP\r
+        000157' 254001  000011          JRST DSI(TAC)\r
+\r
+        000160' 260140  000115' 01970             DSPT(DGF)^UDGF:         PUSHJ PDP,UDSP\r
+        000161' 254001  000012          JRST DGF(TAC)\r
+\r
+\r\fSYSCON - UUO HANDLER                 PAGE 7\r
+        8-9-65\r
+\r
+\r
+\r
+                                02020   , 6-CSS-DEC-CALL-PL-PRE2\r
+                                02030   , H. R. MORSE       64-11-17\r
+                                02040   , CALLING SEQUENCE\r
+                                02050   ,         CALL 0,[SIXBIT/NAME/]\r
+                                02060   , WHERE NAME IS THE NAME OF A SYSTEM ROUTINE.\r
+                                02070   , IF NO SYSTEM ROUTINE WITH THE SPECIFIED NAME IF FOUND, THIS ROUTINE\r
+                                02080   , EXISTS TO ERROR.\r
+                                02090   , MONITOR INTERFACE\r
+                                02100   ,         ROUTINES CALLED: ERROR, HASH, SYSTEM ROUTINES DEFINED BY\r
+                                02110   ,                             USE OF UCALIN.\r
+                                02120   ,         SYMBOLS SET/USED:\r
+                                02130   ,                   ACCUMULATORS:       DAT S/U         PROG U\r
+                                02140   ,                                       PDP U           UUO  S/U\r
+                                02150   ;CONTENTS OF USER AC PLACED IN AC TAC\r
+\r
+        000162' 661600  000011  02170   UCALL:    TLO UUO,JDAT          ;RELATIVIZE UUO ADDRESS\r
+        000163' 200260  000014  02180             MOVE DAT,@UUO;                  DAT:=NAME OF SYSTEM ROUTINE C\r
+        000164' 205100  777760  02190             MOVSI TAC1,-UCLLEN\r
+        000165' 312242  000174' 02200             CAME DAT,UCLTAB(TAC1);          SEARCH SYSTEM TOUTINE NAME TA\r
+        000166' 253100  000165' 02210             AOBJN TAC1,.-1\r
+        000167' 135240  000146* 02220             LDB DAT,PUUOAC        ;USER UUO AC FIELD\r
+        000170' 505240  000011  02230             HRLI DAT,JDAT\r
+        000171' 200060  000005  02240             MOVE TAC,@DAT         ;PICK UP CONTENTS OF USER AC\r
+        000172' 321122  000214' 02250             JUMPL TAC1,@UCLJMP(TAC1)\r
+        000173' 254000  000130* 02260             JRST UUOERR\r
+\r
+                                02280   DEFINE NAMES\r
+                                02290   <         X DDTIN,DDTIN\r
+                                02300    X DDTOUT,DDTOUT\r
+                                02310    X DDTGT,DDTGT\r
+                                02320    X DDTRL,DDTRL\r
+                                02330    X SETDDT,SETDDT\r
+                                02340    X DEVCHR,DVCHR\r
+                                02350   X GETCHR,DVCHR\r
+                                02360   X WAIT,WAIT\r
+                                02370    X RESET,RESET\r
+                                02380    X EXIT,EXIT\r
+                                02390    X LDRBLT,LDRBLT\r
+                                02400    X UTPCLR,UTPCLR\r
+                                02410    X DATE,DATE\r
+                                02420    X SETPOV,SETPOV\r
+                                02430    X SWITCH,SWITCH\r
+                                02440    X TIMER,TIMER\r
+                                02450   >\r
+                                02460   DEFINE X (A,B)\r
+                                02470   <         SIXBIT /A/\r
+                                02480   >\r
+        000174' 444464  515600  02490   UCLTAB:   NAMES^          X DDTIN,DDTIN^          SIXBIT /DDTIN/\r
+        000175' 444464  576564           X DDTOUT,DDTOUT^         SIXBIT /DDTOUT/\r
+        000176' 444464  476400           X DDTGT,DDTGT^   SIXBIT /DDTGT/\r
+        000177' 444464  625400           X DDTRL,DDTRL^   SIXBIT /DDTRL/\r
+\r\fSYSCON - UUO HANDLER                 PAGE 7-1\r
+        8-9-65\r
+\r
+        000200' 634564  444464           X SETDDT,SETDDT^         SIXBIT /SETDDT/\r
+        000201' 444566  435062           X DEVCHR,DVCHR^          SIXBIT /DEVCHR/\r
+        000202' 474564  435062          X GETCHR,DVCHR^   SIXBIT /GETCHR/\r
+        000203' 674151  640000          X WAIT,WAIT^      SIXBIT /WAIT/\r
+        000204' 624563  456400           X RESET,RESET^   SIXBIT /RESET/\r
+        000205' 457051  640000           X EXIT,EXIT^     SIXBIT /EXIT/\r
+        000206' 544462  425464           X LDRBLT,LDRBLT^         SIXBIT /LDRBLT/\r
+        000207' 656460  435462           X UTPCLR,UTPCLR^         SIXBIT /UTPCLR/\r
+        000210' 444164  450000           X DATE,DATE^     SIXBIT /DATE/\r
+        000211' 634564  605766           X SETPOV,SETPOV^         SIXBIT /SETPOV/\r
+        000212' 636751  644350           X SWITCH,SWITCH^         SIXBIT /SWITCH/\r
+        000213' 645155  456200           X TIMER,TIMER^   SIXBIT /TIMER/\r
+                        000020  02500   UCLLEN=.-UCLTAB\r
+\r
+                                02520   DEFINE X(A,B)\r
+                                02530   <         JRST B\r
+                                02540   EXTERNAL B\r
+                                02550   >\r
+        000214' 254000  000000* 02560   UCLJMP:   NAMES^          X DDTIN,DDTIN^          JRST DDTIN\r
+        000215' 254000  000000*          X DDTOUT,DDTOUT^         JRST DDTOUT\r
+        000216' 254000  000000*          X DDTGT,DDTGT^   JRST DDTGT\r
+        000217' 254000  000000*          X DDTRL,DDTRL^   JRST DDTRL\r
+        000220' 254000  000000*          X SETDDT,SETDDT^         JRST SETDDT\r
+        000221' 254000  000000*          X DEVCHR,DVCHR^          JRST DVCHR\r
+        000222' 254000  000221*         X GETCHR,DVCHR^   JRST DVCHR\r
+        000223' 254000  000000*         X WAIT,WAIT^      JRST WAIT\r
+        000224' 254000  000000*          X RESET,RESET^   JRST RESET\r
+        000225' 254000  000000*          X EXIT,EXIT^     JRST EXIT\r
+        000226' 254000  000000*          X LDRBLT,LDRBLT^         JRST LDRBLT\r
+        000227' 254000  000000*          X UTPCLR,UTPCLR^         JRST UTPCLR\r
+        000230' 254000  000000*          X DATE,DATE^     JRST DATE\r
+        000231' 254000  000000*          X SETPOV,SETPOV^         JRST SETPOV\r
+        000232' 254000  000000*          X SWITCH,SWITCH^         JRST SWITCH\r
+        000233' 254000  000000*          X TIMER,TIMER^   JRST TIMER\r
+\r\fSYSCON - UUO HANDLER                 PAGE 8\r
+        8-9-65\r
+\r
+\r
+\r
+                                02600   , DEV 06 00 EX COM L PT PRE 02 UXIT\r
+                                02610   , H. R. MORSE       64-12-26\r
+                                02620   , CALLING SEQUENCE\r
+                                02630   ,         ANY TRANSFER OF CONTROL TO UXIT\r
+                                02640   , EXITS THIS UUO CALL.\r
+                                02650   , MONITOR INTERFACE\r
+                                02660   ,         SYMBOLS SET/USED:\r
+                                02670   ,                   ACCUMULATORS:       MAY RESTORE ALL ACCUMULATORS\r
+                                02680   ,                                       JDAT U\r
+                                02690   ,                                       PDP U\r
+                                02700   ,                                       17  S/U\r
+                                02710   ,                   JOB AREA:           JOBAC U\r
+                                02720   ,                   SYSTEM ADDRESSES:   USRUXT U\r
+                                02730   ,                                       USRLEV S/U\r
+\r\fSYSCON - UUO HANDLER                 PAGE 9\r
+        8-9-65\r
+\r
+\r
+\r
+\r
+                                02780             INTERN UXIT,CUXIT1,CUXIT2\r
+\r
+        000234' 350003  000000  02800   CUXIT2:   AOS (PDP)\r
+        000235' 350003  000000  02810   CUXIT1:   AOS (PDP)\r
+        000236' 262140  000046* 02820   UXIT:     POP PDP,USRSAV                ;RESTORE UUO EXIT ADDRESS FRO\r
+        000237' 250040  000236* 02830             EXCH TAC,USRSAV\r
+        000240' 607040  010000  02840             TLNN TAC,USRMOD               ;WAS ENTRY FROM USER MODE?\r
+        000241' 254000  000246' 02850             JRST UXIT2\r
+        000242' 202040  000237* 02860             MOVEM TAC,USRSAV              ;SET UP RETURN\r
+        000243' 205751  000000* 02870             MOVSI 17, JOBAC(JDAT)                   ;RESTORE ACCUMULATO\r
+        000244' 251740  000017  02880             BLT 17,17\r
+        000245' 254120  000242* 02890   UXIT1:    JRST 2,@USRSAV                ;RETURN TO USERS PROGRAM\r
+\r
+        000246' 250040  000245* 02910   UXIT2:    EXCH TAC,USRSAV\r
+        000247' 254120  000246* 02920             JRST 2,@USRSAV\r
+\r
+                                02940             END,\r
+        000250' 331100  000014\r
+        000251' 000040  776000\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 000252\r
+\r
+9K CORE USED\r
+\r\fSYSCON - UUO HANDLER                 PAGE 10\r
+        SYMBOL TABLE\r
+\r
+                000264  \r
+A               000000  INT\r
+AC1             000015  INT\r
+AC2             000016  INT\r
+AC3             000017  INT\r
+AL              000001  INT\r
+ASSCON          400000  INT\r
+ASSPRG          200000  INT\r
+B               000014  INT\r
+BUFPNT          000012  INT\r
+BUFWRD          000013  INT\r
+CLDS            000000  EXT\r
+CLEN            000000  EXT\r
+CLOSB           002000  INT\r
+CLOSE1          000105' EXT\r
+CLSIN           000002  INT\r
+CLSOUT          000001  INT\r
+CUXIT1          000235' INT\r
+CUXIT2          000234' INT\r
+D               000017  INT\r
+DAT             000005  INT\r
+DATE            000230' EXT\r
+DCL             000001  INT\r
+DCW             020000  INT\r
+DDI             000007  INT\r
+DDO             000006  INT\r
+DDTGT           000216' EXT\r
+DDTIN           000214' EXT\r
+DDTMEM          000037  INT\r
+DDTOUT          000215' EXT\r
+DDTRL           000217' EXT\r
+DDTSYM          000036  INT\r
+DEN             000004  INT\r
+DEVADR          000007  INT\r
+DEVBUF          000006  INT\r
+DEVCHR          000001  INT\r
+DEVCTR          000011  INT\r
+DEVDAT          000006  INT\r
+DEVIAD          000007  INT\r
+DEVIOS          000002  INT\r
+DEVLOG          000005  INT\r
+DEVMOD          000004  INT\r
+DEVNAM          000000  INT\r
+DEVOAD          000010  INT\r
+DEVPTR          000010  INT\r
+DEVSER          000003  INT\r
+DGF             000012  INT\r
+DIN             000003  INT\r
+DLK             000005  INT\r
+DOU             000002  INT\r
+DR              000016  INT\r
+DRL             000000  INT\r
+DSI             000011  INT\r
+\r\fSYSCON - UUO HANDLER                 PAGE 10-1\r
+        SYMBOL TABLE\r
+\r
+DSO             000010  INT\r
+DTW             040000  INT\r
+DVAVAL          000040  INT\r
+DVCDR           100000  INT\r
+DVCHR           000222' EXT\r
+DVDIR           000004  INT\r
+DVDIRI          400000  INT\r
+DVIN            000002  INT\r
+DVLPT           040000  INT\r
+DVMTA           000020  INT\r
+DVOUT           000001  INT\r
+DVTTY           000010  INT\r
+ENTRB           020000  INT\r
+ERROR           000125' EXT\r
+EXIT            000225' EXT\r
+I               000010  INT\r
+IB              000013  INT\r
+IBUFB           200000  INT\r
+ILLINS          000053' EXT\r
+IN              000103' EXT\r
+INITB           400000  INT\r
+INPB            010000  INT\r
+IO              000020  INT\r
+IOACT           010000  INT\r
+IOBEG           000002  INT\r
+IOBKTL          040000  INT\r
+IOCON           000040  INT\r
+IODEND          020000  INT\r
+IODERR          200000  INT\r
+IODISC          400000  INT\r
+IODONE          400000  INT\r
+IODTER          100000  INT\r
+IOEND           000040  INT\r
+IOFST           000004  INT\r
+IOIERR          000065' EXT\r
+IOIMPM          400000  INT\r
+IONRCK          000100  INT\r
+IORDEL          000100  INT\r
+IORET           000020  INT\r
+IOS             000000  INT\r
+IOSTRT          000010  INT\r
+IOUSE           400000  INT\r
+IOW             000001  INT\r
+IOWC            000020  INT\r
+IOWS            400000  INT\r
+ITEM            000004  INT\r
+JBFADR          000000  INT\r
+JBFCTR          000002  INT\r
+JBFPTR          000001  INT\r
+JBUF            000005  INT\r
+JDAT            000011  INT\r
+JERR            002000  INT\r
+JIOW            100000  INT\r
+\r\fSYSCON - UUO HANDLER                 PAGE 10-2\r
+        SYMBOL TABLE\r
+\r
+JNA             004000  INT\r
+JOBAC           000243' EXT\r
+JOBADR          000034' EXT\r
+JOBDAT          000042' EXT\r
+JOBPDL          000044' EXT\r
+LDRBLT          000226' EXT\r
+LOOKB           040000  INT\r
+MJOBPD          000043' EXT\r
+MTAPE1          000107' EXT\r
+MTW             010000  INT\r
+NRTOSP          000122' \r
+OBUFB           100000  INT\r
+OUT             000104' EXT\r
+OUTPB           004000  INT\r
+PDP             000003  INT\r
+PICHN           000100  INT\r
+PROG            000007  INT\r
+PUUOAC          000167' EXT\r
+RELEA1          000106' EXT\r
+RESET           000224' EXT\r
+RUN             200000  INT\r
+RUNABL          204000  INT\r
+SETDDT          000220' EXT\r
+SETPOV          000231' EXT\r
+SWITCH          000232' EXT\r
+TAC             000001  INT\r
+TAC1            000002  INT\r
+TEM             000010  INT\r
+TIMER           000233' EXT\r
+TTYATC          020000  INT\r
+TTYUSE          010000  INT\r
+UCALL           000162' \r
+UCLJMP          000214' \r
+UCLLEN          000020  \r
+UCLTAB          000174' \r
+UDEN            000131' \r
+UDGF            000160' \r
+UDLK            000143' \r
+UDSI            000156' \r
+UDSO            000154' \r
+UDSP            000115' \r
+UINBF           000101' EXT\r
+UINIT           000074' EXT\r
+UOUTBF          000102' EXT\r
+USETST          000075' EXT\r
+USRJDA          000151' EXT\r
+USRMOD          010000  INT\r
+USRREL          000021' EXT\r
+USRSAV          000247' EXT\r
+USTATO          000076' EXT\r
+USTATS          000077' EXT\r
+USTATZ          000100' EXT\r
+UTPCLR          000227' EXT\r
+\r\fSYSCON - UUO HANDLER                 PAGE 10-3\r
+        SYMBOL TABLE\r
+\r
+UUO             000014  INT\r
+UUO0            000000' INT\r
+UUODSP          000070' \r
+UUOERR          000173' EXT\r
+UUOSY1          000046' \r
+UUOSYS          000030' \r
+UUOT1           000073' \r
+UUOT1L          000002  \r
+UUOT2           000075' \r
+UUOT2L          000020  \r
+UXIT            000236' INT\r
+UXIT1           000245' \r
+UXIT2           000246' \r
+WAIT            000223' EXT\r
+WAIT1           000143' EXT\r
+\f   SSSSSSSSSSSS      YYY         YYY         SSSSSSSSSSSS         CCCCCCCCCCCC         SSSSSSSSSSSS         SSSSSSSSSSSS\r
+   SSSSSSSSSSSS      YYY         YYY         SSSSSSSSSSSS         CCCCCCCCCCCC         SSSSSSSSSSSS         SSSSSSSSSSSS\r
+   SSSSSSSSSSSS      YYY         YYY         SSSSSSSSSSSS         CCCCCCCCCCCC         SSSSSSSSSSSS         SSSSSSSSSSSS\r
+SSS                  YYY         YYY      SSS                  CCC                  SSS                  SSS            \r
+SSS                  YYY         YYY      SSS                  CCC                  SSS                  SSS            \r
+SSS                  YYY         YYY      SSS                  CCC                  SSS                  SSS            \r
+SSS                     YYY   YYY         SSS                  CCC                  SSS                  SSS            \r
+SSS                     YYY   YYY         SSS                  CCC                  SSS                  SSS            \r
+SSS                     YYY   YYY         SSS                  CCC                  SSS                  SSS            \r
+   SSSSSSSSS               YYY               SSSSSSSSS         CCC                     SSSSSSSSS            SSSSSSSSS   \r
+   SSSSSSSSS               YYY               SSSSSSSSS         CCC                     SSSSSSSSS            SSSSSSSSS   \r
+   SSSSSSSSS               YYY               SSSSSSSSS         CCC                     SSSSSSSSS            SSSSSSSSS   \r
+            SSS            YYY                        SSS      CCC                              SSS                  SSS\r
+            SSS            YYY                        SSS      CCC                              SSS                  SSS\r
+            SSS            YYY                        SSS      CCC                              SSS                  SSS\r
+            SSS            YYY                        SSS      CCC                              SSS                  SSS\r
+            SSS            YYY                        SSS      CCC                              SSS                  SSS\r
+            SSS            YYY                        SSS      CCC                              SSS                  SSS\r
+SSSSSSSSSSSS               YYY            SSSSSSSSSSSS            CCCCCCCCCCCC      SSSSSSSSSSSS         SSSSSSSSSSSS   \r
+SSSSSSSSSSSS               YYY            SSSSSSSSSSSS            CCCCCCCCCCCC      SSSSSSSSSSSS         SSSSSSSSSSSS   \r
+SSSSSSSSSSSS               YYY            SSSSSSSSSSSS            CCCCCCCCCCCC      SSSSSSSSSSSS         SSSSSSSSSSSS   \r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  11:23:08\r
+File: DSKB1 :SYSCSS.LST   [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:25
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:2209 \r
+File will be deleted after printing\r
+\f\rSYSCSS - COMMON SYSTEM SUBROUTINES                 PAGE 1\r
+        8-9-65\r
+\r
+                                00010           XLIST\r
+                                01930          LIST\r
+\r\fSYSCSS - COMMON SYSTEM SUBROUTINES                 PAGE 7\r
+        8-9-65\r
+\r
+\r
+                                00010   TITLE SYSCSS - COMMON SYSTEM SUBROUTINES\r
+                                00020   SUBTTL 8-9-65\r
+                                00030   EXTERNAL UXIT,ERROR,USRDDT,USRPOV,PUUOAC,USRREL\r
+\r
+                                00050   ;RETURN THE DATE TO THE USER\r
+\r
+\r
+                                00080             INTERNAL DATE,THSDAT\r
+\r
+        000000' 200240  000002' 00100   DATE:     MOVE DAT, THSDAT\r
+        000001' 254000  000005' 00110             JRST STOAC\r
+\r
+        000002' 000000  000000  00130   THSDAT:   0             ;CONTAINS THE DATE\r
+\r
+                                00150   ;RETURN TIME SYSTEM HAS RUN IN 60THS OF A SECOND\r
+\r
+                                00170   INTERNAL TIMER\r
+                                00180   EXTERNAL TIME\r
+\r
+        000003' 334240  000000* 00200   TIMER:    SKIPA DAT, TIME  ;FALL INTO STOAC\r
+\r
+                                00220   ;RETURN DATA SWITCHES\r
+\r
+                                00240   INTERNAL SWITCH\r
+\r
+        000004' 700040  000005  00260   SWITCH:   DATAI DAT\r
+\r
+                                00280   ;STORE DAT IN USER AC\r
+\r
+                                00300   INTERNAL STOAC\r
+\r
+        000005' 135040  000000* 00320   STOAC:    LDB TAC, PUUOAC\r
+        000006' 505040  000007  00330             HRLI TAC, PROG\r
+        000007' 202260  000001  00340             MOVEM DAT,@TAC\r
+        000010' 254000  000000* 00350             JRST UXIT\r
+\r
+                                00370   ;RETURN DEVICE CHARACTERISTICS\r
+\r
+                                00390   INTERNAL DVCHR\r
+                                00400   EXTERNAL JOB,DEVSRC,PJOBN\r
+\r
+        000011' 200200  000000* 00420   DVCHR:    MOVE ITEM,JOB\r
+        000012' 260140  000000* 00430             PUSHJ PDP,DEVSRC      ;SEARCH FOR DEVICE\r
+        000013' 334240  000034' 00440             SKIPA DAT,[0]         ;NOT A DEVICE\r
+        000014' 334246  000004  00450             SKIPA DAT,DEVMOD(DEVDAT)\r
+        000015' 254000  000005' 00460             JRST STOAC\r
+        000016' 135040  000000* 00470             LDB TAC,PJOBN         ;GET JOB NUMBER\r
+        000017' 312040  000011* 00480             CAME TAC,JOB          ;DOES USER ALREADY HAVE THIS DEVICE?\r
+        000020' 606240  600000  00490             TRNN DAT,ASSCON+ASSPRG        ;NO\r
+        000021' 661240  000040  00500             TLO DAT,DVAVAL        ;NO, BUT HE CAN GET IT\r
+        000022' 254000  000005' 00510             JRST STOAC\r
+\r\fSYSCSS - COMMON SYSTEM SUBROUTINES                 PAGE 2\r
+        8-9-65\r
+\r
+\r
+\r
+                                00550   , CALLING SEQUENCE\r
+                                00560   ,         PUSHJ PDP,HASH\r
+                                00570   ,         EXIT;L                ALWAYS RETURNS HERE\r
+                                00580   , COMPUTES XOR HASH TYPE INDEX FROM NAME (SIXBIT CODE) IN AC DAT\r
+                                00590   , AND LEAVES THE RESULT (00<OR= INDEX <OR=77) AS AN INTEGER IN TAC.\r
+                                00600   , THE ALGORITHM IS AS FOLLOWS: (V = EXCLUSIVE OR)\r
+                                00610   , BIT     35:=8V17V26V35\r
+                                00620   ,         34:=7V16V25V34\r
+                                00630   ,         33:=6V15V24V33\r
+                                00640   ,         32:=5V11V23V29\r
+                                00650   ,         31:=4V10V22V28\r
+                                00660   ,         30:=3V9V21V27\r
+                                00670   , MONITOR INTERFACE\r
+                                00680   ,         SYMBOLS SET/USED:\r
+                                00690   ,                   ACCUMULATORS:       DAT U           TAC S/U\r
+                                00700   ,                                       PDP S/U         TAC1 S/U\r
+                                00710   ;         INTERN HASH\r
+\r
+                                00730   ;HASH:    HLR TAC,DAT\r
+                                00740   ;         MOVE TAC1,DAT\r
+                                00750   ;         XORB TAC1,TAC\r
+                                00760   ;         ROT TAC1,-11\r
+                                00770   ;         XOR TAC,TAC1\r
+                                00780   ;         ANDI TAC,UTBNM1\r
+                                00790   ;         POPJ PDP,             ;       RETURN\r
+\r\fSYSCSS - COMMON SYSTEM SUBROUTINES                 PAGE 3\r
+        8-9-65\r
+\r
+\r
+                                00820             INTERNAL SETDDT\r
+\r
+        000023' 545040  010000  00840   SETDDT:   HLRI TAC,10000\r
+        000024' 202040  000000* 00850             MOVEM TAC,USRDDT\r
+        000025' 254000  000010* 00860             JRST UXIT\r
+\r
+\r
+                                00890             INTERNAL SETPOV\r
+\r
+        000026' 545040  010000  00910   SETPOV:   HLRI TAC,10000\r
+        000027' 202040  000000* 00920             MOVEM TAC,USRPOV\r
+        000030' 254000  000025* 00930             JRST UXIT\r
+\r
+                                00950   ;WAIT FOR IO TO BECOME INACTIVE ON CHANNEL AC\r
+\r
+                                00970   INTERNAL WAIT\r
+                                00980   EXTERNAL IOIERR,WAIT1\r
+\r
+        000031' 322300  000000* 01000   WAIT:     JUMPE DEVDAT,IOIERR ;CHANNEL ASSIGNED?\r
+        000032' 260140  000000* 01010             PUSHJ PDP,WAIT1     ;WAIT TILL INACTIVE\r
+        000033' 254000  000030* 01020             JRST UXIT\r
+                                01030             END,\r
+        000034' 000000  000000\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 000035\r
+\r
+8K CORE USED\r
+\r\fSYSCSS - COMMON SYSTEM SUBROUTINES                 PAGE 4\r
+        SYMBOL TABLE\r
+\r
+                000203  \r
+A               000000  INT\r
+AC1             000015  INT\r
+AC2             000016  INT\r
+AC3             000017  INT\r
+AL              000001  INT\r
+ASSCON          400000  INT\r
+ASSPRG          200000  INT\r
+B               000014  INT\r
+BUFPNT          000012  INT\r
+BUFWRD          000013  INT\r
+CLOSB           002000  INT\r
+CLSIN           000002  INT\r
+CLSOUT          000001  INT\r
+D               000017  INT\r
+DAT             000005  INT\r
+DATE            000000' INT\r
+DCL             000001  INT\r
+DCW             020000  INT\r
+DDI             000007  INT\r
+DDO             000006  INT\r
+DDTMEM          000037  INT\r
+DDTSYM          000036  INT\r
+DEN             000004  INT\r
+DEVADR          000007  INT\r
+DEVBUF          000006  INT\r
+DEVCHR          000001  INT\r
+DEVCTR          000011  INT\r
+DEVDAT          000006  INT\r
+DEVIAD          000007  INT\r
+DEVIOS          000002  INT\r
+DEVLOG          000005  INT\r
+DEVMOD          000004  INT\r
+DEVNAM          000000  INT\r
+DEVOAD          000010  INT\r
+DEVPTR          000010  INT\r
+DEVSER          000003  INT\r
+DEVSRC          000012' EXT\r
+DGF             000012  INT\r
+DIN             000003  INT\r
+DLK             000005  INT\r
+DOU             000002  INT\r
+DR              000016  INT\r
+DRL             000000  INT\r
+DSI             000011  INT\r
+DSO             000010  INT\r
+DTW             040000  INT\r
+DVAVAL          000040  INT\r
+DVCDR           100000  INT\r
+DVCHR           000011' INT\r
+DVDIR           000004  INT\r
+DVDIRI          400000  INT\r
+DVIN            000002  INT\r
+\r\fSYSCSS - COMMON SYSTEM SUBROUTINES                 PAGE 4-1\r
+        SYMBOL TABLE\r
+\r
+DVLPT           040000  INT\r
+DVMTA           000020  INT\r
+DVOUT           000001  INT\r
+DVTTY           000010  INT\r
+ENTRB           020000  INT\r
+ERROR           000000  EXT\r
+I               000010  INT\r
+IB              000013  INT\r
+IBUFB           200000  INT\r
+INITB           400000  INT\r
+INPB            010000  INT\r
+IO              000020  INT\r
+IOACT           010000  INT\r
+IOBEG           000002  INT\r
+IOBKTL          040000  INT\r
+IOCON           000040  INT\r
+IODEND          020000  INT\r
+IODERR          200000  INT\r
+IODISC          400000  INT\r
+IODONE          400000  INT\r
+IODTER          100000  INT\r
+IOEND           000040  INT\r
+IOFST           000004  INT\r
+IOIERR          000031' EXT\r
+IOIMPM          400000  INT\r
+IONRCK          000100  INT\r
+IORDEL          000100  INT\r
+IORET           000020  INT\r
+IOS             000000  INT\r
+IOSTRT          000010  INT\r
+IOUSE           400000  INT\r
+IOW             000001  INT\r
+IOWC            000020  INT\r
+IOWS            400000  INT\r
+ITEM            000004  INT\r
+JBFADR          000000  INT\r
+JBFCTR          000002  INT\r
+JBFPTR          000001  INT\r
+JBUF            000005  INT\r
+JDAT            000011  INT\r
+JERR            002000  INT\r
+JIOW            100000  INT\r
+JNA             004000  INT\r
+JOB             000017' EXT\r
+LOOKB           040000  INT\r
+MTW             010000  INT\r
+OBUFB           100000  INT\r
+OUTPB           004000  INT\r
+PDP             000003  INT\r
+PICHN           000100  INT\r
+PJOBN           000016' EXT\r
+PROG            000007  INT\r
+PUUOAC          000005' EXT\r
+\r\fSYSCSS - COMMON SYSTEM SUBROUTINES                 PAGE 4-2\r
+        SYMBOL TABLE\r
+\r
+RUN             200000  INT\r
+RUNABL          204000  INT\r
+SETDDT          000023' INT\r
+SETPOV          000026' INT\r
+STOAC           000005' INT\r
+SWITCH          000004' INT\r
+TAC             000001  INT\r
+TAC1            000002  INT\r
+TEM             000010  INT\r
+THSDAT          000002' INT\r
+TIME            000003' EXT\r
+TIMER           000003' INT\r
+TTYATC          020000  INT\r
+TTYUSE          010000  INT\r
+USRDDT          000024' EXT\r
+USRMOD          010000  INT\r
+USRPOV          000027' EXT\r
+USRREL          000000  EXT\r
+UUO             000014  INT\r
+UXIT            000033' EXT\r
+WAIT            000031' INT\r
+WAIT1           000032' EXT\r
+\f   SSSSSSSSSSSS      YYY         YYY         SSSSSSSSSSSS         IIIIIIIII         NNN         NNN         IIIIIIIII   \r
+   SSSSSSSSSSSS      YYY         YYY         SSSSSSSSSSSS         IIIIIIIII         NNN         NNN         IIIIIIIII   \r
+   SSSSSSSSSSSS      YYY         YYY         SSSSSSSSSSSS         IIIIIIIII         NNN         NNN         IIIIIIIII   \r
+SSS                  YYY         YYY      SSS                        III            NNN         NNN            III      \r
+SSS                  YYY         YYY      SSS                        III            NNN         NNN            III      \r
+SSS                  YYY         YYY      SSS                        III            NNN         NNN            III      \r
+SSS                     YYY   YYY         SSS                        III            NNNNNN      NNN            III      \r
+SSS                     YYY   YYY         SSS                        III            NNNNNN      NNN            III      \r
+SSS                     YYY   YYY         SSS                        III            NNNNNN      NNN            III      \r
+   SSSSSSSSS               YYY               SSSSSSSSS               III            NNN   NNN   NNN            III      \r
+   SSSSSSSSS               YYY               SSSSSSSSS               III            NNN   NNN   NNN            III      \r
+   SSSSSSSSS               YYY               SSSSSSSSS               III            NNN   NNN   NNN            III      \r
+            SSS            YYY                        SSS            III            NNN      NNNNNN            III      \r
+            SSS            YYY                        SSS            III            NNN      NNNNNN            III      \r
+            SSS            YYY                        SSS            III            NNN      NNNNNN            III      \r
+            SSS            YYY                        SSS            III            NNN         NNN            III      \r
+            SSS            YYY                        SSS            III            NNN         NNN            III      \r
+            SSS            YYY                        SSS            III            NNN         NNN            III      \r
+SSSSSSSSSSSS               YYY            SSSSSSSSSSSS            IIIIIIIII         NNN         NNN         IIIIIIIII   \r
+SSSSSSSSSSSS               YYY            SSSSSSSSSSSS            IIIIIIIII         NNN         NNN         IIIIIIIII   \r
+SSSSSSSSSSSS               YYY            SSSSSSSSSSSS            IIIIIIIII         NNN         NNN         IIIIIIIII   \r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  11:23:08\r
+File: DSKB1 :SYSINI.LST   [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:25
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:2202 \r
+File will be deleted after printing\r
+\f\rSYSINI - SYSTEM INITIALIZATION                 PAGE 1\r
+        8-9-65\r
+\r
+                                00010           XLIST\r
+                                01930          LIST\r
+\r\fSYSINI - SYSTEM INITIALIZATION                 PAGE 7\r
+        8-9-65\r
+\r
+\r
+                                00010   TITLE SYSINI - SYSTEM INITIALIZATION\r
+                                00020   SUBTTL 8-9-65\r
+                                00030   EXTERNAL APRCHN,ERROR,IOINI\r
+                                00040   EXTERNAL DDT,NULJOB,SYSMAK,ONCE,SYSBEG,SYSBG1,SYSEND\r
+                                00050   EXTERNAL CORTAB,CORLST,CORTAL,CORBLK,SYSSIZ,LINKSR\r
+\r
+                                00070   ;SYSTEM INITIALIZATION DISPATCHTABLE, STARTING AT LOC. 140\r
+                                00080   ;THIS SUBROUTINE MUST BE LOADED FIRST\r
+                                00090   ;ROUTINE ONCE IS ONCE ONLY CODE. IT CONVERTS THE DATE\r
+                                00100   ;AND SETS UP IO SERVICE CHAIN.\r
+\r
+\r
+\r
+                                00140   INTERNAL SYSDSP\r
+\r
+        000000' 254000  000010' 00160   SYSDSP:   JRST SYSINI           ;INITIALIZE SYSTEM VARIABLES ONCE ONLY\r
+        000001' 254000  000000* 00170             JRST DDT      ;EXEC DDT\r
+        000002' 254000  000000* 00180             JRST SYSMAK           ;MAKE NEW SYSTEM\r
+        000003' 254000  000010' 00190             JRST SYSINI           ;INITIALIZE SYSTEM VARIABLES ALWAYS\r
+        000004' 254500  000000* 00200             JEN  NULJOB           ;ERROR RECOVERY\r
+        000005' 254000  000007' 00210             JRST SYSONE           ;DO ONCE ONLY CODE OVER AGAIN\r
+        000006' 254000  000012' 00220             JRST JSR2 ;BYPASS ONCE ONLY OPERATOR DIALOG\r
+                                00230                       ;(IN CASE CONSOLE TTY DOWN)\r
+\r\fSYSINI - SYSTEM INITIALIZATION                 PAGE 2\r
+        8-9-65\r
+\r
+\r
+\r
+                                00270   ;INITIALIZE SYSTEM DATA STORAGE\r
+\r
+                                00290   INTERNAL SYSINI\r
+                        010000  00300   NXM=10000 ;NON EX MEM FLAG\r
+\r
+        000007' 264000  000000* 00320   SYSONE:   JSR ONCE  ;ONCE ONLY CODE\r
+        000010' 700200  200000  00330   SYSINI:   CONO APR,200000       ;IO RESET\r
+        000011' 264000  000007* 00340   JSR1:     JSR ONCE  ;DO ONCE ONLY CODE ONCE\r
+        000012' 264000  000000* 00350   JSR2:     JSR LINKSR            ;LINK IO SERVICE ROUTINES\r
+        000013' 204040  000014' 00360             MOVS TAC,.+1\r
+        000014' 403100  000000* 00370             SETZB TAC1,SYSBEG\r
+        000015' 206040  000011' 00380             MOVSM TAC,JSR1\r
+        000016' 206040  000012' 00390             MOVSM TAC,JSR2\r
+        000017' 541040  000000* 00400             HRRI TAC,SYSBG1       ;CLEAR SYSTEM DATA STORAGE\r
+        000020' 251040  000000* 00410             BLT TAC,SYSEND\r
+        000021' 205040  430000  00420             MOVSI TAC, DVDIRIN+TTYATC+TTYUSE\r
+        000022' 541040  600000  00430             HRRI TAC,ASSCON+ASSPRG\r
+        000023' 554300  000000* 00440             HLRZ DEVDAT,DEVLST   ;SCAN ALL DEVICES\r
+        000024' 412046  000004  00450   SYS1:     ANDCAM TAC, DEVMOD(DEVDAT)    ;CLEAR DIRECTORY IN CORE BIT,\r
+                                00460                   ;ASSIGNED BY CONSOLE & PROGRAM\r
+        000025' 402006  000005  00470             SETZM DEVLOG(DEVDAT)          ;CLEAR LOGICAL NAME\r
+        000026' 554306  000003  00480             HLRZ DEVDAT, DEVSER(DEVDAT)\r
+        000027' 326300  000024' 00490             JUMPN DEVDAT, SYS1\r
+        000030' 200440  000105' 00500             MOVE JDAT,COREP       ;SET UP CORE USE BIT TABLE\r
+        000031' 202440  000000* 00510             MOVEM JDAT,CORLST\r
+        000032' 201040  000000* 00520             MOVEI TAC,CORBLK      ;NO. OF 1K BLOCKS IN TABLE\r
+        000033' 700200  010000  00530   SYS2:     CONO APR,NXM          ;CLEAR NON EX MEM\r
+        000034' 133000  000011  00540             IBP JDAT      ;MOVE BYTE POINTER\r
+        000035' 510242  000000  00550             HLLZ DAT,(TAC1)       ;REFERENCE MEMORY, CLEAR RT. OF DAT\r
+        000036' 313100  000000* 00560             CAMLE TAC1,SYSSIZ     ;HIGHEST LOC IN EXEC.\r
+        000037' 700300  010000  00570             CONSZ APR,NXM         ;CAN MEMORY BE USED FOR USER PROG?\r
+        000040' 344240  000043' 00580             AOJA DAT,SYS3         ;NO, MARK AS INACCESIBLE (1 BIT)\r
+        000041' 350000  000000* 00590             AOS CORTAL\r
+        000042' 202440  000031* 00600             MOVEM JDAT,CORLST     ;AND SET LAST FREE BLOCK POINTER\r
+        000043' 137240  000011  00610   SYS3:     DPB DAT,JDAT          ;STORE 0 OR 1 IN TABLE\r
+        000044' 271100  002000  00620             ADDI TAC1,2000        ;INCREMENT MEMORY REF\r
+        000045' 367040  000033' 00630             SOJG TAC,SYS2\r
+        000046' 133000  000042* 00640             IBP CORLST            ;SET TO FIRST UNAVAILABLE BLOCK\r
+        000047' 541040  000051' 00650             HRRI 1,IOGO\r
+        000050' 542040  000000' 00660             HRRM 1,SYSDSP         ;FALINTO IOGO\r
+\r\fSYSINI - SYSTEM INITIALIZATION                 PAGE 3\r
+        8-9-65\r
+\r
+\r
+\r
+                                00700   ;INITIALIZE ALL IODEVICES\r
+\r
+                                00720             INTERNAL IOGO\r
+                                00730             EXTERNAL DEVLST, MJOBN, JBTADR,JBTSTS,IOINI\r
+                                00740   EXTERNAL DCREQ,MTREQ,DTREQ\r
+\r
+        000051' 201040  000000* 00760   IOGO:     MOVEI TAC,APRCHN\r
+        000052' 700201  633440  00770             CONO APR,633440(TAC)\r
+        000053' 554040  000023* 00780             HLRZ TAC, DEVLST       ;CHAIN OF DEVICE DATA BLOKS\r
+        000054' 201100  200000  00790   IOG0:     MOVEI TAC1,ASSPRG      ;CLEAR ASSIGNED BY PROGRAM BIT\r
+        000055' 413101  000004  00800             ANDCAB TAC1,DEVMOD(TAC)\r
+        000056' 525200  000720  00810             HRLOI ITEM,IORET+7*PICHN      ;CLEAR JOB NO., USER CHANNEL\r
+        000057' 602100  400000  00820             TRNE TAC1,ASSCON\r
+        000060' 661200  777000  00830             TLO ITEM,777000\r
+        000061' 406201  000001  00840             ANDM ITEM,DEVCHR(TAC)         ;BUT NOT IORET BIT OR PII CHA\r
+        000062' 402001  000002  00850             SETZM DEVIOS(TAC)     ;CLEAR IO STATUS WORD\r
+        000063' 402001  000006  00860             SETZM DEVBUF(TAC)     ;CLEAR BUFFER ADDRESS\r
+        000064' 554041  000003  00870             HLRZ TAC, DEVSER(TAC)\r
+        000065' 326040  000054' 00880             JUMPN TAC, IOG0\r
+        000066' 476000  000000* 00890             SETOM DCREQ           ;CLEAR DEVICE REQUEST COUNTS\r
+        000067' 476000  000000* 00900             SETOM MTREQ   \r
+        000070' 476000  000000* 00910             SETOM DTREQ\r
+        000071' 201140  000100' 00920             MOVEI PDP,IOPDL-1\r
+        000072' 260140  000000* 00930             PUSHJ PDP,IOINI       ;INITIALIZE IO DEVICES\r
+        000073' 205240  000000* 00940             MOVSI DAT,MJOBN       ;JOB NUMBER ASSIGNED BIT\r
+        000074' 200040  000106' 00950             MOVE TAC,[XWD JERR,1]         ;SET ERROR BIT, CLEAR ALL 0TH\r
+        000075' 202045  000000* 00960   IOG1:     MOVEM TAC,JBTSTS(DAT)\r
+        000076' 253240  000075' 00970             AOBJN DAT,IOG1\r
+        000077' 700600  012377  00980             CONO PI,12377\r
+        000100' 254000  000004* 00990             JRST NULJOB           ;START THE NULL JOB\r
+        000101'                 01000   IOPDL:    BLOCK 4\r
+        000105' 440100  000000* 01010   COREP:    POINT 1,CORTAB        ;1 BIT BYTE POINTER TO CORE USE TABLE\r
+\r
+                        000010' 01030             END SYSINI\r
+        000106' 002000  000001\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 000107\r
+\r
+8K CORE USED\r
+\r\fSYSINI - SYSTEM INITIALIZATION                 PAGE 4\r
+        SYMBOL TABLE\r
+\r
+                000225  \r
+A               000000  INT\r
+AC1             000015  INT\r
+AC2             000016  INT\r
+AC3             000017  INT\r
+AL              000001  INT\r
+APR             000000  SPD\r
+APRCHN          000051' EXT\r
+ASSCON          400000  INT\r
+ASSPRG          200000  INT\r
+B               000014  INT\r
+BUFPNT          000012  INT\r
+BUFWRD          000013  INT\r
+CLOSB           002000  INT\r
+CLSIN           000002  INT\r
+CLSOUT          000001  INT\r
+CORBLK          000032' EXT\r
+COREP           000105' \r
+CORLST          000046' EXT\r
+CORTAB          000105' EXT\r
+CORTAL          000041' EXT\r
+D               000017  INT\r
+DAT             000005  INT\r
+DCL             000001  INT\r
+DCREQ           000066' EXT\r
+DCW             020000  INT\r
+DDI             000007  INT\r
+DDO             000006  INT\r
+DDT             000001' EXT\r
+DDTMEM          000037  INT\r
+DDTSYM          000036  INT\r
+DEN             000004  INT\r
+DEVADR          000007  INT\r
+DEVBUF          000006  INT\r
+DEVCHR          000001  INT\r
+DEVCTR          000011  INT\r
+DEVDAT          000006  INT\r
+DEVIAD          000007  INT\r
+DEVIOS          000002  INT\r
+DEVLOG          000005  INT\r
+DEVLST          000053' EXT\r
+DEVMOD          000004  INT\r
+DEVNAM          000000  INT\r
+DEVOAD          000010  INT\r
+DEVPTR          000010  INT\r
+DEVSER          000003  INT\r
+DGF             000012  INT\r
+DIN             000003  INT\r
+DLK             000005  INT\r
+DOU             000002  INT\r
+DR              000016  INT\r
+DRL             000000  INT\r
+DSI             000011  INT\r
+\r\fSYSINI - SYSTEM INITIALIZATION                 PAGE 4-1\r
+        SYMBOL TABLE\r
+\r
+DSO             000010  INT\r
+DTREQ           000070' EXT\r
+DTW             040000  INT\r
+DVAVAL          000040  INT\r
+DVCDR           100000  INT\r
+DVDIR           000004  INT\r
+DVDIRI          400000  INT\r
+DVIN            000002  INT\r
+DVLPT           040000  INT\r
+DVMTA           000020  INT\r
+DVOUT           000001  INT\r
+DVTTY           000010  INT\r
+ENTRB           020000  INT\r
+ERROR           000000  EXT\r
+I               000010  INT\r
+IB              000013  INT\r
+IBUFB           200000  INT\r
+INITB           400000  INT\r
+INPB            010000  INT\r
+IO              000020  INT\r
+IOACT           010000  INT\r
+IOBEG           000002  INT\r
+IOBKTL          040000  INT\r
+IOCON           000040  INT\r
+IODEND          020000  INT\r
+IODERR          200000  INT\r
+IODISC          400000  INT\r
+IODONE          400000  INT\r
+IODTER          100000  INT\r
+IOEND           000040  INT\r
+IOFST           000004  INT\r
+IOG0            000054' \r
+IOG1            000075' \r
+IOGO            000051' INT\r
+IOIMPM          400000  INT\r
+IOINI           000072' EXT\r
+IONRCK          000100  INT\r
+IOPDL           000101' \r
+IORDEL          000100  INT\r
+IORET           000020  INT\r
+IOS             000000  INT\r
+IOSTRT          000010  INT\r
+IOUSE           400000  INT\r
+IOW             000001  INT\r
+IOWC            000020  INT\r
+IOWS            400000  INT\r
+ITEM            000004  INT\r
+JBFADR          000000  INT\r
+JBFCTR          000002  INT\r
+JBFPTR          000001  INT\r
+JBTADR          000000  EXT\r
+JBTSTS          000075' EXT\r
+JBUF            000005  INT\r
+\r\fSYSINI - SYSTEM INITIALIZATION                 PAGE 4-2\r
+        SYMBOL TABLE\r
+\r
+JDAT            000011  INT\r
+JERR            002000  INT\r
+JIOW            100000  INT\r
+JNA             004000  INT\r
+JSR1            000011' \r
+JSR2            000012' \r
+LINKSR          000012' EXT\r
+LOOKB           040000  INT\r
+MJOBN           000073' EXT\r
+MTREQ           000067' EXT\r
+MTW             010000  INT\r
+NULJOB          000100' EXT\r
+NXM             010000  \r
+OBUFB           100000  INT\r
+ONCE            000011' EXT\r
+OUTPB           004000  INT\r
+PDP             000003  INT\r
+PI              000004  SPD\r
+PICHN           000100  INT\r
+PROG            000007  INT\r
+RUN             200000  INT\r
+RUNABL          204000  INT\r
+SYS1            000024' \r
+SYS2            000033' \r
+SYS3            000043' \r
+SYSBEG          000014' EXT\r
+SYSBG1          000017' EXT\r
+SYSDSP          000000' INT\r
+SYSEND          000020' EXT\r
+SYSINI          000010' INT\r
+SYSMAK          000002' EXT\r
+SYSONE          000007' \r
+SYSSIZ          000036' EXT\r
+TAC             000001  INT\r
+TAC1            000002  INT\r
+TEM             000010  INT\r
+TTYATC          020000  INT\r
+TTYUSE          010000  INT\r
+USRMOD          010000  INT\r
+UUO             000014  INT\r
+\f   SSSSSSSSSSSS      YYY         YYY         SSSSSSSSSSSS      MMM         MMM         AAAAAAAAA         KKK         KKK\r
+   SSSSSSSSSSSS      YYY         YYY         SSSSSSSSSSSS      MMM         MMM         AAAAAAAAA         KKK         KKK\r
+   SSSSSSSSSSSS      YYY         YYY         SSSSSSSSSSSS      MMM         MMM         AAAAAAAAA         KKK         KKK\r
+SSS                  YYY         YYY      SSS                  MMMMMM   MMMMMM      AAA         AAA      KKK         KKK\r
+SSS                  YYY         YYY      SSS                  MMMMMM   MMMMMM      AAA         AAA      KKK         KKK\r
+SSS                  YYY         YYY      SSS                  MMMMMM   MMMMMM      AAA         AAA      KKK         KKK\r
+SSS                     YYY   YYY         SSS                  MMM   MMM   MMM      AAA         AAA      KKK      KKK   \r
+SSS                     YYY   YYY         SSS                  MMM   MMM   MMM      AAA         AAA      KKK      KKK   \r
+SSS                     YYY   YYY         SSS                  MMM   MMM   MMM      AAA         AAA      KKK      KKK   \r
+   SSSSSSSSS               YYY               SSSSSSSSS         MMM         MMM      AAA         AAA      KKKKKKKKK      \r
+   SSSSSSSSS               YYY               SSSSSSSSS         MMM         MMM      AAA         AAA      KKKKKKKKK      \r
+   SSSSSSSSS               YYY               SSSSSSSSS         MMM         MMM      AAA         AAA      KKKKKKKKK      \r
+            SSS            YYY                        SSS      MMM         MMM      AAAAAAAAAAAAAAA      KKK      KKK   \r
+            SSS            YYY                        SSS      MMM         MMM      AAAAAAAAAAAAAAA      KKK      KKK   \r
+            SSS            YYY                        SSS      MMM         MMM      AAAAAAAAAAAAAAA      KKK      KKK   \r
+            SSS            YYY                        SSS      MMM         MMM      AAA         AAA      KKK         KKK\r
+            SSS            YYY                        SSS      MMM         MMM      AAA         AAA      KKK         KKK\r
+            SSS            YYY                        SSS      MMM         MMM      AAA         AAA      KKK         KKK\r
+SSSSSSSSSSSS               YYY            SSSSSSSSSSSS         MMM         MMM      AAA         AAA      KKK         KKK\r
+SSSSSSSSSSSS               YYY            SSSSSSSSSSSS         MMM         MMM      AAA         AAA      KKK         KKK\r
+SSSSSSSSSSSS               YYY            SSSSSSSSSSSS         MMM         MMM      AAA         AAA      KKK         KKK\r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  11:23:08\r
+File: DSKB1 :SYSMAK.LST   [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:25
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:2195 \r
+File will be deleted after printing\r
+\f\rSYSMAK - MAKE NEW SYSTEM WITH THE OLD                 PAGE 1\r
+        7-21-65\r
+\r
+                                00010           XLIST\r
+                                01930          LIST\r
+\r\fSYSMAK - MAKE NEW SYSTEM WITH THE OLD                 PAGE 7\r
+        7-21-65\r
+\r
+\r
+                                00010   TITLE SYSMAK - MAKE NEW SYSTEM WITH THE OLD\r
+                                00020   SUBTTL 7-21-65\r
+                                00030   ,SYSMAK ASSUMES AN EXISTING SYSTEM WITH A LOADER IN CORE FOR JOB 1\r
+                                00040   ,AND HIGHEST EMORY ADDRESS IN REAL 37.  TO CREATE A NEW SYSTEM, SET\r
+                                00050   ,37 AS DESIRED, LOAD NEW SYSTEM (WITHOUT GOING INTO EXECUTION), AND\r
+                                00060   ,START AT REAL 62.  THE COMPUTE WILL HALT AFTER THE NEW SYSTEM\r
+                                00070   ,HAS BEEN BLOCKED DOWN.  TO START, PRESS CONTINUE OR START AT REAL\r
+                                00080   ,60.  EXEC DDT (IF LOADED WITH THE NEW SYSTEM) STARTS AT REAL 141.\r
+                                00090   ;FROM REL. LOC. 30 ON UP IS BLOCKED DOWN\r
+\r
+                                00110   ,WHEN LOADING A NEW SYSTEM, LOAD SYSINI FIRST.\r
+                                00120   ;SYSINI CONTAINS A DISPATCH TABLE  DOCUMENTED TO BE AT LOC. 60\r
+                                00130   ;ALSO LOAD IOINI LAST SINCE IT CONTAINS SOME ONCE ONLY CODE AT END\r
+                                00140   ;THEN LOAD SYSMAK FOLLOWED BY DDT(EXEC)\r
+                                00150   ;BE SURE THAT LOC SYSSIZ(SIZ OF SYSTEM) IS GREATER THAN\r
+                                00160   ;LAST LOC IN SYSMAK BEFORE STARTING TO LOAD.\r
+                                00170   ;LOC SYSSIZ IS IN LOWER CORE AND MAY HAVE TO BE PATCHED\r
+                                00180   ;USING CONSOLE SWITCHES.\r
+\r
+                                00200   INTERNAL SYSMAK,MAKEND\r
+                                00210   EXTERNAL JBTADR,JBTAD1\r
+\r
+        000000' 200040  000000* 00230   SYSMAK:   MOVE 1,JBTAD1         ;LOADER BLOCK ADDRESS FROM JOB ADDRESS\r
+        000001' 200301  000002  00240             MOVE 6,2(1)           ;LOADER OFFSET\r
+        000002' 271301  000000  00250             ADDI 6,(1)            ;BLOCK ADDRESS+OFFSET\r
+        000003' 200101  000006  00260             MOVE 2,6(1);          SYSMBOL TABLE POINTER:  -N,L = LOWEST AD\r
+        000004' 271001  000002  00270             ADDI 2(1)\r
+        000005' 564140  000002  00280             HLRO 3,2\r
+        000006' 213000  000003  00290             MOVNS 3       ;N = SYMBOL TABLE LENGTH\r
+        000007' 200200  000037  00300             MOVE 4,DDTMEM         ;MEMORY SIZE(LOC 37)\r
+        000010' 202206  000037  00310             MOVEM 4,DDTMEM(6)     ;STORE IN NEW DDTMEM\r
+        000011' 275200  000200  00320             SUBI 4,200            ;ROOM FOR DECDUMP\r
+        000012' 202206  000036  00330             MOVEM 4,DDTSYM(6)     ;ALSO STORE IN WHAT WILL BECOME DDTSYM\r
+        000013' 200240  000002  00340             MOVE 5,2  ;LEAVES ROOM FOR DECDMP\r
+        000014' 270240  000003  00350             ADD 5,3\r
+        000015' 504240  000003  00360             HRL 5,3   ;C(5):=N,L+N\r
+        000016' 274200  000005  00370             SUB 4,5\r
+        000017' 553000  000004  00380             HRRZS 4   ;C(4):=0,C(37)-200-(L+N)\r
+        000020' 270100  000004  00390             ADD 2,4   ;C(2):=-N,C(37)-200-N\r
+        000021' 202105  000000  00400             MOVEM 2,(5)\r
+        000022' 542200  000023' 00410             HRRM 4,.+1\r
+        000023' 262245  000000  00420             POP 5,(5) ;MOVE SYMOBOL TABLE TO TOP OF MEMORY\r
+        000024' 325240  000023' 00430             JUMPGE 5,.-1\r
+        000025' 200400  000034' 00440             MOVE 10,[BLT 3,(2)]\r
+        000026' 200440  000035' 00450             MOVE 11,[JRST 4,]\r
+        000027' 541140  000030  00460             HRRI 3,30\r
+        000030' 505146  000030  00470             HRLI 3,30(6)          ;C(3):=LOADER OFFSET+LOADER BLOCK ADDRE\r
+        000031' 550101  000006  00480             HRRZ 2,6(1)           ;C(2):=LOWEST LOCATION IN SYMBOL TABLE\r
+        000032' 540441  000000  00490             HRR 11,(1)            ;C(11):=JRST 4,START ADDRESS\r
+        000033' 254000  000010  00500             JRST 10       ;MOVE SYSTEM TO BOTTOM OF MEMORY AND HALT\r
+\r
+        000034'                 00520             LIT\r
+\r\fSYSMAK - MAKE NEW SYSTEM WITH THE OLD                 PAGE 1\r
+        7-21-65\r
+\r
+        000034' 251142  000000\r
+        000035' 254200  000000\r
+\r
+        000036'                 00540   MAKEND:   END,\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 000036\r
+\r
+8K CORE USED\r
+\r\fSYSMAK - MAKE NEW SYSTEM WITH THE OLD                 PAGE 2\r
+        SYMBOL TABLE\r
+\r
+                000162  \r
+A               000000  INT\r
+AC1             000015  INT\r
+AC2             000016  INT\r
+AC3             000017  INT\r
+AL              000001  INT\r
+ASSCON          400000  INT\r
+ASSPRG          200000  INT\r
+B               000014  INT\r
+BUFPNT          000012  INT\r
+BUFWRD          000013  INT\r
+CLOSB           002000  INT\r
+CLSIN           000002  INT\r
+CLSOUT          000001  INT\r
+D               000017  INT\r
+DAT             000005  INT\r
+DCL             000001  INT\r
+DCW             020000  INT\r
+DDI             000007  INT\r
+DDO             000006  INT\r
+DDTMEM          000037  INT\r
+DDTSYM          000036  INT\r
+DEN             000004  INT\r
+DEVADR          000007  INT\r
+DEVBUF          000006  INT\r
+DEVCHR          000001  INT\r
+DEVCTR          000011  INT\r
+DEVDAT          000006  INT\r
+DEVIAD          000007  INT\r
+DEVIOS          000002  INT\r
+DEVLOG          000005  INT\r
+DEVMOD          000004  INT\r
+DEVNAM          000000  INT\r
+DEVOAD          000010  INT\r
+DEVPTR          000010  INT\r
+DEVSER          000003  INT\r
+DGF             000012  INT\r
+DIN             000003  INT\r
+DLK             000005  INT\r
+DOU             000002  INT\r
+DR              000016  INT\r
+DRL             000000  INT\r
+DSI             000011  INT\r
+DSO             000010  INT\r
+DTW             040000  INT\r
+DVAVAL          000040  INT\r
+DVCDR           100000  INT\r
+DVDIR           000004  INT\r
+DVDIRI          400000  INT\r
+DVIN            000002  INT\r
+DVLPT           040000  INT\r
+DVMTA           000020  INT\r
+DVOUT           000001  INT\r
+\r\fSYSMAK - MAKE NEW SYSTEM WITH THE OLD                 PAGE 2-1\r
+        SYMBOL TABLE\r
+\r
+DVTTY           000010  INT\r
+ENTRB           020000  INT\r
+I               000010  INT\r
+IB              000013  INT\r
+IBUFB           200000  INT\r
+INITB           400000  INT\r
+INPB            010000  INT\r
+IO              000020  INT\r
+IOACT           010000  INT\r
+IOBEG           000002  INT\r
+IOBKTL          040000  INT\r
+IOCON           000040  INT\r
+IODEND          020000  INT\r
+IODERR          200000  INT\r
+IODISC          400000  INT\r
+IODONE          400000  INT\r
+IODTER          100000  INT\r
+IOEND           000040  INT\r
+IOFST           000004  INT\r
+IOIMPM          400000  INT\r
+IONRCK          000100  INT\r
+IORDEL          000100  INT\r
+IORET           000020  INT\r
+IOS             000000  INT\r
+IOSTRT          000010  INT\r
+IOUSE           400000  INT\r
+IOW             000001  INT\r
+IOWC            000020  INT\r
+IOWS            400000  INT\r
+ITEM            000004  INT\r
+JBFADR          000000  INT\r
+JBFCTR          000002  INT\r
+JBFPTR          000001  INT\r
+JBTAD1          000000' EXT\r
+JBTADR          000000  EXT\r
+JBUF            000005  INT\r
+JDAT            000011  INT\r
+JERR            002000  INT\r
+JIOW            100000  INT\r
+JNA             004000  INT\r
+LOOKB           040000  INT\r
+MAKEND          000036' INT\r
+MTW             010000  INT\r
+OBUFB           100000  INT\r
+OUTPB           004000  INT\r
+PDP             000003  INT\r
+PICHN           000100  INT\r
+PROG            000007  INT\r
+RUN             200000  INT\r
+RUNABL          204000  INT\r
+SYSMAK          000000' INT\r
+TAC             000001  INT\r
+TAC1            000002  INT\r
+\r\fSYSMAK - MAKE NEW SYSTEM WITH THE OLD                 PAGE 2-2\r
+        SYMBOL TABLE\r
+\r
+TEM             000010  INT\r
+TTYATC          020000  INT\r
+TTYUSE          010000  INT\r
+USRMOD          010000  INT\r
+UUO             000014  INT\r
+\fMMM         MMM         AAAAAAAAA            CCCCCCCCCCCC      RRRRRRRRRRRR            OOOOOOOOO                        \r
+MMM         MMM         AAAAAAAAA            CCCCCCCCCCCC      RRRRRRRRRRRR            OOOOOOOOO                        \r
+MMM         MMM         AAAAAAAAA            CCCCCCCCCCCC      RRRRRRRRRRRR            OOOOOOOOO                        \r
+MMMMMM   MMMMMM      AAA         AAA      CCC                  RRR         RRR      OOO         OOO                     \r
+MMMMMM   MMMMMM      AAA         AAA      CCC                  RRR         RRR      OOO         OOO                     \r
+MMMMMM   MMMMMM      AAA         AAA      CCC                  RRR         RRR      OOO         OOO                     \r
+MMM   MMM   MMM      AAA         AAA      CCC                  RRR         RRR      OOO         OOO                     \r
+MMM   MMM   MMM      AAA         AAA      CCC                  RRR         RRR      OOO         OOO                     \r
+MMM   MMM   MMM      AAA         AAA      CCC                  RRR         RRR      OOO         OOO                     \r
+MMM         MMM      AAA         AAA      CCC                  RRRRRRRRRRRR         OOO         OOO                     \r
+MMM         MMM      AAA         AAA      CCC                  RRRRRRRRRRRR         OOO         OOO                     \r
+MMM         MMM      AAA         AAA      CCC                  RRRRRRRRRRRR         OOO         OOO                     \r
+MMM         MMM      AAAAAAAAAAAAAAA      CCC                  RRR   RRR            OOO         OOO                     \r
+MMM         MMM      AAAAAAAAAAAAAAA      CCC                  RRR   RRR            OOO         OOO                     \r
+MMM         MMM      AAAAAAAAAAAAAAA      CCC                  RRR   RRR            OOO         OOO                     \r
+MMM         MMM      AAA         AAA      CCC                  RRR      RRR         OOO         OOO                     \r
+MMM         MMM      AAA         AAA      CCC                  RRR      RRR         OOO         OOO                     \r
+MMM         MMM      AAA         AAA      CCC                  RRR      RRR         OOO         OOO                     \r
+MMM         MMM      AAA         AAA         CCCCCCCCCCCC      RRR         RRR         OOOOOOOOO                        \r
+MMM         MMM      AAA         AAA         CCCCCCCCCCCC      RRR         RRR         OOOOOOOOO                        \r
+MMM         MMM      AAA         AAA         CCCCCCCCCCCC      RRR         RRR         OOOOOOOOO                        \r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  11:23:08\r
+File: DSKB1 :MACRO .LST   [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:26
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:2189 \r
+File will be deleted after printing\r
+\f\rMACRO V.10                     PAGE 1\r
+        RPG/CMF/JF/PMH/DMN      7-SEPT-71\r
+\r
+                                ;STANFORD ASSEMBLY:\r
+                        000170          LPTWID==^D120   ;120 CHARACTERS/LINE ON LPT AT STANFORD\r
+                                TITLE   MACRO V.10      \r
+                                SUBTTL   RPG/CMF/JF/PMH/DMN     7-SEPT-71\r
+                                ;COPYRIGHT 1968,1969,1970,1971, DIGITAL EQUIPMENT CORP., MAYNARD, MASS.\r
+\r
+                        000010          VMACRO==10              ;VERSION NUMBER\r
+                        000000          VUPDATE==0              ;DEC UPDATE LEVEL\r
+                        000000          VEDIT==0                ;EDIT NUMBER\r
+                        000000          VCUSTOM==0              ;NON-DEC UPDATE LEVEL\r
+\r
+\r
+        000137                          LOC     <JOBVER==137>\r
+        000137  001000  000000          <VCUSTOM>B2+<VMACRO>B11+<VUPDATE>B17+VEDIT\r
+        000000'                         RELOC\r
+                                        MLON\r
+\r
+                                COMMENT *       ASSEMBLY FEATURE SWITCHES (ACTION WHEN NON-ZERO)\r
+\r
+                                        SWITCHES ON (NON-ZERO) IN DEC VERSION\r
+                                CCLSW           GIVES RAPID PROGRAM GENERATION FEATURE\r
+                                FTDISK          GIVES DISK FEATURES\r
+                                RENTSW          ASSEMBLE REENTRANT PROGRAMS\r
+\r
+                                        SWITCHES OFF (ZERO) IN DEC VERSION\r
+                                LNSSW           GIVES LNS VERSION\r
+                                IIISW           GIVES III FEATURES\r
+                                OPHSH           GIVES HASH SEARCH OF OPCODES\r
+                                *\r
+\r\fMACRO V.10                     PAGE 2\r
+        DEFAULT ASSEMBLY SWITCH SETTINGS\r
+\r
+                                SUBTTL  DEFAULT ASSEMBLY SWITCH SETTINGS\r
+\r
+\r
+                                IFNDEF RENTSW,<RENTSW==0>\r
+\r
+                                IFNDEF LNSSW,<LNSSW==0>\r
+                                IFN LNSSW,<FTDISK==0>\r
+\r
+                                IFNDEF CCLSW,<CCLSW==1>\r
+                        000001  IFN CCLSW,<FTDISK==1>\r
+\r
+                                IFNDEF UNIVR,<UNIVR==0>\r
+\r
+                                IFNDEF FTDISK,<FTDISK==0>\r
+\r
+                                IFNDEF IIISW,<IIISW==0>\r
+\r
+                                IFNDEF OPHSH,<OPHSH==0>\r
+\r
+\r\fMACRO V.10                     PAGE 3\r
+        OTHER PARAMETERS\r
+\r
+                                SUBTTL  OTHER PARAMETERS\r
+\r
+                        000062  .PDP==  ^D50            ;BASIC PUSH-DOWN POINTER\r
+                                IFNDEF LPTWID,<LPTWID==^D132>   ;DEFAULT WIDTH OF PRINTER\r
+                        000170  .LPTWD==8*<LPTWID/8>            ;USEFUL WIDTH IN MAIN LISTING\r
+                        000130  .CPL==  .LPTWD-^D32             ;WIDTH AVAIABLE FOR TEXT WHEN\r
+                                                                ;BINARY IS IN HALFWORD FORMAT\r
+                        000067  .LPP==^D55      ;LINES/PAGE\r
+                        000050  .STP==  ^D40            ;STOW SIZE\r
+                        000120  .TBUF== ^D80            ;TITLE BUFFER\r
+                        000120  .SBUF== ^D80            ;SUB-TITLE BUFFER\r
+                        000024  .IFBLK==^D20            ;IFIDN COMPARISON BLOCK SIZE\r
+                        000022  .R1B==^D18\r
+                        000012  .UNIV==^D10             ;NUMBER OF UNIVERSAL DEFINITIONS\r
+                        000004  .LEAF==4                ;SIZE OF BLOCKS IN MACRO TREE\r
+\r
+                        000001  NCOLS==1                ;NUMBER OF COLUMNS IN SYMBOL TABLE\r
+                                IFN CCLSW,<IFNDEF CTLSIZ,<CTLSIZ==^D200>>\r
+                                IFN OPHSH,<IFNDEF PRIME,<PRIME==^D701>>\r
+                                IFNDEF NUMBUF,<\r
+                                IFE LNSSW,<NUMBUF==2    ;NUMBER OF INPUT BUFFERS>\r
+                                IFN LNSSW,<NUMBUF==4    ;DOUBLE BUFFER FOR DOUBLE SIZE DEVICES>\r
+                                >\r
+\r
+                                EXTERN  JOBREL,JOBSYM,JOBDDT,JOBFF,JOBAPR,JOBSA\r
+                                IFN CCLSW,<     EXTERN  JOBERR>\r
+\r
+                                        SALL            ;SUPPRESS ALL MACROS\r
+\r
+                                ;SOME ASCII CHARACTERS\r
+\r
+                        000011  HT==11\r
+                        000012  LF==12\r
+                        000013  VT==13\r
+                        000014  FF==14\r
+                        000015  CR==15\r
+                        000033  EOL==33\r
+\r\fMACRO V.10                     PAGE 4\r
+        OTHER PARAMETERS\r
+\r
+                                                        ;ACCUMULATORS\r
+                        000000  AC0==   0\r
+                        000001  AC1=    AC0+1\r
+                        000002  AC2=    AC1+1\r
+                        000003  SDEL=   3               ;SEARCH INCREMENT\r
+                        000004  SX=     SDEL+1          ;SEARCH INDEX\r
+                        000005  ARG=    5               ;ARGUMENT\r
+                        000006  V=      6               ;VALUE\r
+                        000007  C=      7               ;CURRENT CHARACTER\r
+                        000010  CS=     C+1             ;CHARACTER STATUS BITS\r
+                        000011  RC=     11              ;RELOCATION BITS\r
+                        000012  MWP=    12              ;MACRO WRITE POINTER\r
+                        000013  MRP=    13              ;MACRO READ POINTER\r
+                        000014  IO=     14              ;IO REGISTER (LEFT)\r
+                        000014  ER==    IO              ;ERROR REGISTER (RIGHT)\r
+                        000015  FR=     15              ;FLAG REGISTER (LEFT)\r
+                        000015  RX==    FR              ;CURRENT RADIX (RIGHT)\r
+                        000016  MP=     16              ;MACRO PUSHDOWN POINTER\r
+                        000017  PP=     17              ;BASIC PUSHDOWN POINTER\r
+\r
+                        000003  %OP==   3\r
+                        000005  %MAC==  5\r
+                        000002  %DSYM== 2\r
+                        000001  %SYM==  1\r
+                        000006  %DMAC== %MAC+1\r
+\r
+                                OPDEF   RESET   [CALLI   0]\r
+                                OPDEF   SETDDT  [CALLI   2]\r
+                                OPDEF   DDTOUT  [CALLI   3]\r
+                                OPDEF   DEVCHR  [CALLI   4]\r
+                                OPDEF   WAIT    [MTAPE   0]\r
+                                OPDEF   CORE    [CALLI  11]\r
+                                OPDEF   EXIT    [CALLI  12]\r
+                                OPDEF   UTPCLR  [CALLI  13]\r
+                                OPDEF   DATE    [CALLI  14]\r
+                                OPDEF   APRENB  [CALLI  16]\r
+                                OPDEF   MSTIME  [CALLI  23]\r
+                                OPDEF   PJOB    [CALLI  30]\r
+                                OPDEF   RUN     [CALLI  35]\r
+                                OPDEF   TMPCOR  [CALLI  44]\r
+\r
+\r\fMACRO V.10                     PAGE 5\r
+        OTHER PARAMETERS\r
+\r
+                                                        ;FR  FLAG REGISTER (FR/RX)\r
+                        000001  IOSCR== 000001          ;NO CR AFTER LINE\r
+                        000004  MTAPSW==000004          ;MAG TAPE\r
+                        000010  ERRQSW==000010          ;IGNORE Q ERRORS\r
+                        000020  LOADSW==000020          ;END OF PASS1 & NO EOF YET\r
+                        000040  DCFSW== 000040          ;DECIMAL FRACTION\r
+                        000100  RIM1SW==000100          ;RIM10 MODE\r
+                        000200  NEGSW== 000200          ;NEGATIVE ATOM\r
+                        000400  RIMSW== 000400          ;RIM OUTPUT\r
+                        001000  PNCHSW==001000          ;RIM/BIN OUTPUT WANTED\r
+                        002000  CREFSW==002000\r
+                        004000  R1BSW== 004000          ;RIM10 BINARY OUTPUT\r
+                        010000  TMPSW== 010000          ;EVALUATE CURRENT ATOM\r
+                        020000  INDSW== 020000          ;INDIRECT ADDRESSING WANTED\r
+                        040000  RADXSW==040000          ;RADIX ERROR SWITCH\r
+                        100000  FSNSW== 100000          ;NON BLANK FIELD SEEN\r
+                        200000  MWLFLG==200000          ;ON FOR DON'T ALLOW MULTI-WORD LITERALS\r
+                        400000  P1==    400000          ;PASS1\r
+\r
+                                                        ;IO FLAG REGISTER (IO/ER)\r
+                        400000  FLDSW== 400000          ;ADDRESS FIELD\r
+                        200000  IOMSTR==200000\r
+                        100000  ARPGSW==100000          ;ALLOW RAPID PROGRAM GENERATION\r
+                        040000  IOPROG==040000          ;SUPRESS LISTING (LIST/XLIST PSEUDO OP)\r
+                        020000  NUMSW== 020000\r
+                        010000  IOMAC== 010000          ;MACRO EXPANSION IN PROGRESS\r
+                        004000  IOPALL==004000          ;SUPRESS LISTING OF MACRO EXPANSIONS\r
+                        002000  IONCRF==002000          ;SUPRESS OUTPUT OF CREF INFORMATION\r
+                        001000  CRPGSW==001000          ;CURRENTLY IN PROGRESS ON RPG\r
+                        000400  IOCREF==000400          ;WE ARE NOW OUTPUTTING CREF INFO\r
+                        000200  IOENDL==000200          ;BEEN TO STOUT\r
+                        000100  IOPAGE==000100\r
+                        000040  DEFCRS==000040          ;THIS IS A DEFINING OCCURANCE (MACROS)\r
+                        000020  IOIOPF==000020          ;IOP INSTRUCTION SEEN\r
+                        000010  MFLSW== 000010          ;MULTI-FILE MODE,PRGEND SEEN\r
+                        000004  IORPTC==000004          ;REPEAT CURRENT CHARACTER\r
+                        000002  IOTLSN==000002          ;TITLE SEEN\r
+                        000001  IOSALL==000001          ;SUPPRESS MACRO LISTING EVEN IF BINARY IS GENERATED\r
+\r
+                                OPDEF   JUMP1   [JUMPL  FR,  ]  ;JUMP IF PASS 1\r
+                                OPDEF   JUMP2   [JUMPGE FR,  ]  ;JUMP IF PASS 2\r
+\r
+                                OPDEF   JUMPOC  [JUMPGE IO,  ]  ;JUMP IF IN OP-CODE FIELD\r
+                                OPDEF   JUMPAD  [JUMPL  IO,  ]  ;JUMP IF IN ADDRESS FIELD\r
+\r
+                                OPDEF   JUMPCM  [JUMPL  CS,  ]  ;JUMP IF CURRENT CHAR IS COMMA\r
+                                OPDEF   JUMPNC  [JUMPGE CS,  ]  ;JUMP IF CURRENT CHAR IS NON-COMMA\r
+\r
+\r\fMACRO V.10                     PAGE 6\r
+        OTHER PARAMETERS\r
+\r
+                                                        ;ER ERROR REGISTERS (IO/ER)\r
+                        000020  ERRM==  000020          ;MULTIPLY DEFINED SYMBOL\r
+                        000040  ERRE==  000040          ;ILLEGAL USE OF EXTERNAL\r
+                        000100  ERRP==  000100          ;PHASE DISCREPANCY\r
+                        000200  ERRO==  000200          ;UNDEFINED OP CODE\r
+                        000400  ERRN==  000400          ;NUMBER ERROR\r
+                        001000  ERRV==  001000          ;VALUE PREVIOUSLY UNDEFINED\r
+                        002000  ERRU==  002000          ;UNDEFINED SYMBOL\r
+                        004000  ERRR==  004000          ;RELOCATION ERROR\r
+                        010000  ERRL==  010000          ;LITERAL ERROR\r
+                        020000  ERRD==  020000          ;REFERENCE TO MULTIPLY DEFINED SYMBOL\r
+                        040000  ERRA==  040000          ;PECULIAR ARGUMENT\r
+                        100000  ERRX==  100000          ;MACRO DEFINITION ERROR\r
+                        200000  ERRQ==  200000          ;QUESTIONABLE, NON-FATAL ERROR\r
+                        777760  ERRORS==777760\r
+                        000002  LPTSW== 000002\r
+                        000001  TTYSW== 000001\r
+\r
+                                                        ;SYMBOL TABLE FLAGS\r
+                        400000  SYMF==  400000          ;SYMBOL\r
+                        200000  TAGF==  200000          ;TAG\r
+                        100000  NOOUTF==100000          ;NO DDT OUTPUT WFW\r
+                        040000  SYNF==  040000          ;SYNONYM\r
+                        020000  MACF==  SYNF_-1         ;MACRO\r
+                        010000  OPDF==  SYNF_-2         ;OPDEF\r
+                        004000  PNTF==  004000          ;"VALUE" IN SYMBOL TBL IS PNTR TO 36BIT VALUE\r
+                        002000  UNDF==  002000          ;UNDEFINED\r
+                        001000  EXTF==  001000          ;EXTERNAL\r
+                        000400  INTF==  000400          ;INTERNAL\r
+                        000200  ENTF==  000200          ;ENTRY\r
+                        000100  VARF==  000100          ;VARIABLE\r
+                        000020  MDFF==  000020          ;MULTIPLY DEFINED\r
+                        000010  SPTR==  000010          ;SPECIAL EXTERNAL POINTER\r
+                        000004  SUPRBT==000004          ;SUPRESS OUTPUT TO DDT\r
+                        000002  LELF==  000002          ;LEFT HAND RELOCATABLE\r
+                        000001  RELF==  000001          ;RIGHT HAND RELOCATABLE\r
+\r
+                        200000  LITF==  200000          ;FLAG FOR PSEUDO-OPS INVALID IN LIT'S\r
+                        100000  ADDF==  100000          ;FLAG FOR PSEUDO-OPS INVALID IN ADDRESSES\r
+\r
+                        200000  TNODE== 200000          ;TERMINAL NODE FOR EVALEX\r
+\r\fMACRO V.10                     PAGE 7\r
+        RUN UUO\r
+\r
+                                SUBTTL  RUN UUO\r
+\r
+                                IFN CCLSW,<\r
+                                ;THIS CODE MUST BE IN FIRST 1K TO ALLOW MAXIMUM SPACE\r
+                                ; FOR OVERWRITING\r
+                                ; 74 APPEARS BECAUSE ONLY LOCS 74 AND BEYOND ARE SAVED BY "SAVE"\r
+\r
+        000000' 000000  000016' IFN CCLSW,<NUNCOM:      IOWD    0,INHERE        ;WHERE TO DO IO\r
+        000001' 000000  000000          0                       ;TERMINATE COMMAND LIST\r
+        000002' 056040  000000' NUNGO2: IN      BIN,NUNCOM      ;READ FILE\r
+        000003' 254000  000011'         JRST    NUNGO3          ;THERE ARE NO ERRORS\r
+        000004' 047400  000003  NUNERR: DDTOUT  NUNPNT,         ;COMPLAIN\r
+        000005' 047000  000012          EXIT                    ;GIVE UP\r
+        000006' 376311  147226  NUNERM: ASCIZ   /?LINKAGE ERROR/\r
+        000007' 406170  520212\r
+        000010' 512451  751000\r
+        000011' 332500  000056' NUNGO3: SKIPE   12,INHERE+133-74 ;LOOK AT JOBCOR\r
+                                                                ;DOES JOB WANT TO RUN IN MORE CORE?\r
+        000012' 317500  000000*         CAMG    12,JOBREL       ;MORE CORE THAN CURRENTLY USED?\r
+        000013' 254000  000000          JRST    NUNGO4          ;NO, GO BLT PROG\r
+        000014' 047500  000011          CORE    12,             ;ASK FOR MORE CORE\r
+        000015' 254000  000004'         JRST    NUNERR          ;NOT AVAILABLE\r
+        000016' 254000  000000          JRST    NUNGO4          ;GO BLT PROGRAM\r
+        000017'                 INHERE:\r
+\r\fMACRO V.10                     PAGE 8\r
+        RUN UUO\r
+\r
+                                ;THIS CODE MUST BE IN FIRST 1K\r
+        000017' 326040  000021' NUNSET: JUMPN   ACDEV,.+2               ;DEVICE SPECIFIED?\r
+        000020' 205040  637163          MOVSI   ACDEV,(SIXBIT /SYS/)    ;NO, USE SYSTEM DEVICE\r
+        000021' 326140  000023'         JUMPN   ACEXT,.+2               ;EXT SPECIFIED?\r
+        000022' 205140  634166          MOVSI   ACEXT,(SIXBIT /SAV/)    ;NO, USE "SAV"\r
+        000023' 202040  012556'         MOVEM   ACDEV,NUNDEV            ;DEVICE NAME TO USE\r
+        000024' 050040  012555'         OPEN    BIN,NUNINI              ;INIT THE DEVICE\r
+        000025' 254000  007700'         JRST    EINIT                   ;ERROR\r
+        000026' 202100  012663'         MOVEM   ACFILE,NUNDIR           ;IS THE FILE AVAILABLE?\r
+        000027' 512140  012664'         HLLZM   ACEXT,NUNDIR+1          ;STASH EXTENSION\r
+        000030' 402000  012666'         SETZM   NUNDIR+3                ;CLEAR PPN\r
+        000031' 076040  012663'         LOOKUP  BIN,NUNDIR              ;LOOK FOR FILE\r
+                                        JRST    [HLRZ   ACEXT,NUNDIR+1          ;WAS EXTENSION "SAV"?\r
+                                                CAIE    ACEXT,(SIXBIT /SAV/)    ;...\r
+                                                JRST    ERRCF                   ;GO COMPLAIN\r
+                                                MOVSI   ACEXT,(SIXBIT /DMP/)    ;TRY "DMP" EXTENSION\r
+        000032' 254000  014043'                 JRST    .-3     ]               ;TRA -3,4\r
+        000033' 260740  000066'         PUSHJ PP,DELETE         ;COMMAND FILE\r
+        000034' 200640  012663'         MOVE 15,NUNDIR          ;GET THE NAME\r
+        000035' 047640  000043          CALLI 15,43     ;TELL SYSTEM "SETNAM"\r
+        000036' 564640  012666'         HLRO    15,NUNDIR+3     ;GET WORD COUNT\r
+        000037' 506640  000000'         HRLM    15,NUNCOM       ;STASH COUNT\r
+        000040' 213000  000015          MOVNS   15              ;NEGATIVE COUNT\r
+        000041' 201715  000073          MOVEI   16,73(15)       ;WHERE TO STOP BLT\r
+        000042' 271640  000017'         ADDI    15,INHERE       ;HOW BIG TO MAKE CORE\r
+        000043' 435640  001777          IORI    15,1777         ;AN EVEN MULTIPLE OF 1K\r
+        000044' 047640  000011          CORE    15,             ;ASK TS EXEC FOR CORE\r
+                                        JRST    [HRROI RC,[SIXBIT /NOT ENUF CORE FOR LINKAGE@/]\r
+        000045' 254000  014055'                 JRST ERRFIN     ];GO COMPLAIN\r
+        000046' 205440  000054'         MOVSI   NUNTOP,NUNAC\r
+        000047' 251440  000011          BLT     NUNTOP,NUNTOP   ;SET ACS\r
+        000050' 540200  000016          HRR     NUNBLT,16       ;...\r
+        000051' 607600  001000          TLNN    IO,CRPGSW       ;WAS RPG IN PROGRESS?\r
+        000052' 621300  577000          TLZ     NUNAOS,577000   ;NO, DON'T MAKE NEXT AN RPG\r
+        000053' 254000  000002'         JRST    NUNGO2\r
+\r
+        000000                  NUNAC:  PHASE   0\r
+        000054' 200500  000017' NUNGO4: MOVE    NUNLAC,INHERE+74-74     ;SETUP FOR NEW DDT\r
+        000055' 047500  000002          SETDDT  NUNLAC,         ;...\r
+                                INTERN JOBS41\r
+                        000122  JOBS41=122              ;LOADER WILL GIVE MUL. DEF. GLOBAL IF CHANGED\r
+\r
+                                EXTERN JOB41\r
+        000056' 200500  000045'         MOVE    NUNLAC,JOBS41+INHERE-74 ;RESTORE LOC 41\r
+        000057' 202500  000000*         MOVEM   NUNLAC,JOB41    ;...\r
+        000060' 251440  000000  NUNBLT: BLT     NUNTOP,.-.      ;MOVE PRGM TO WHERE IT BELONGS\r
+        000061' 047000  000000          RESET                   ;RESET ALL I/O\r
+        000062' 350040  000000* NUNAOS: AOS     1,JOBSA         ;GET STARTING ADDR FOR RPG\r
+        000063' 254001  000000          JRST    0(1)            ;GET ON WITH THE GAME\r
+        000064' 000000  000006' NUNPNT: NUNERM                  ;ERROR MESSAGE POINTER\r
+        000065' 000020' 000075  NUNTOP: XWD     INHERE+1,75\r
+                        000012  NUNLAC=.\r
+        000066'                         DEPHASE\r
+\r\fMACRO V.10                     PAGE 8-1\r
+        RUN UUO\r
+\r
+                                >   \r
+                                        LIST\r
+\r
+\r\fMACRO V.10                     PAGE 9\r
+        RUN UUO\r
+\r
+        000066' 550000  013420' DELETE: HRRZ    EXTMP           ;IF THE EXTENSION\r
+        000067' 302000  645560          CAIE    (SIXBIT/TMP/)   ;IS  .TMP\r
+        000070' 263740  000000          POPJ    PP,             ;RETURN.\r
+        000071' 070200  000000          CLOSE   CTL2,           ;DELETE\r
+        000072' 403200  000005          SETZB   4,5             ;THE COMMAND FILE.\r
+        000073' 403300  000007          SETZB   6,7\r
+        000074' 055200  000004          RENAME  CTL2,4          ;\r
+        000075' 255000  000000          JFCL\r
+        000076' 263740  000000          POPJ    PP,\r
+                                >\r
+\r\fMACRO V.10                     PAGE 10\r
+        START ASSEMBLING\r
+\r
+                                SUBTTL  START ASSEMBLING\r
+\r
+        000077' 260740  003267' ASSEMB: PUSHJ   PP,INZ          ;INITIALIZE FOR PASS\r
+        000100' 200000  014057'         MOVE    [ASCII /.MAIN/]\r
+        000101' 202000  013230'         MOVEM   TBUF\r
+        000102' 201000  013057'         MOVEI   SBUF\r
+        000103' 542000  013100'         HRRM    SUBTTX\r
+\r
+        000104' 260740  001406' ASSEM1: PUSHJ   PP,CHARAC       ;TEST FOR FORM FEED\r
+        000105' 335000  013002'         SKIPGE  LIMBO           ;CRLF FLAG?\r
+        000106' 254000  000104'         JRST    ASSEM1          ;YES ,IGNORE LF\r
+        000107' 306340  000014          CAIN    C,14\r
+        000110' 332000  012544'         SKIPE   SEQNO\r
+        000111' 254000  000115'         JRST    ASSEM2\r
+        000112' 260740  010410'         PUSHJ   PP,OUTFF1\r
+        000113' 260740  001765'         PUSHJ   PP,OUTLI\r
+        000114' 254000  000104'         JRST    ASSEM1\r
+\r
+        000115' 350000  013377' ASSEM2: AOS     TAGINC\r
+        000116' 306340  000134          CAIN    C,"\"           ;BACK-SLASH?\r
+        000117' 625600  010000          TLZA    IO,IOMAC        ;YES, LIST IF IN MACRO\r
+        000120' 661600  000004          TLO     IO,IORPTC\r
+        000121' 260740  000125'         PUSHJ   PP,STMNT        ;OFF WE GO\r
+        000122' 627600  000200          TLZN    IO,IOENDL       ;WAS STOUT PRE-EMPTED?\r
+        000123' 260740  000230'         PUSHJ   PP,STOUT        ;NO, POLISH OFF LINE\r
+        000124' 254000  000104'         JRST    ASSEM1\r
+\r
+\r\fMACRO V.10                     PAGE 11\r
+        STATEMENT PROCESSOR\r
+\r
+                                SUBTTL  STATEMENT PROCESSOR\r
+\r
+        000125' 621640  120000  STMNT:  TLZ     FR,INDSW!FSNSW\r
+        000126' 625600  400000          TLZA    IO,FLDSW\r
+        000127' 260740  000244' STMNT1: PUSHJ   PP,LABEL\r
+        000130' 260740  000325' STMNT2: PUSHJ   PP,ATOM         ;GET THE FIRST ATOM\r
+        000131' 306340  000035          CAIN    C,35            ;"="?\r
+        000132' 254000  004023'         JRST    ASSIGN          ;YES\r
+        000133' 306340  000032          CAIN    C,32            ;":"?\r
+        000134' 254000  000127'         JRST    STMNT1          ;YES\r
+        000135' 321600  000200'         JUMPAD  STMNT7          ;NUMERIC EXPRESSION\r
+        000136' 326000  000146'         JUMPN   AC0,STMN2A      ;JUMP IF NON NULL FIELD\r
+        000137' 336000  013321'         SKIPN   LITLVL          ;ALLOW COMMA IN LITERALS\r
+        000140' 302340  000014          CAIE    C,14            ;NULL, COMMA?\r
+        000141' 306340  000033          CAIN    C,EOL           ;OR END OF LINE?\r
+        000142' 263740  000000          POPJ    PP,             ;YES,EXIT\r
+        000143' 306340  000135          CAIN    C,"]"           ;CLOSING LITERAL?\r
+        000144' 263740  000000          POPJ    PP,             ;YES\r
+        000145' 254000  000201'         JRST    STMNT9          ;NO,AT LEAST SKIP ALL THIS NONSENSE\r
+\r
+        000146' 322340  000150' STMN2A: JUMPE   C,.+2\r
+        000147' 661600  000004          TLO     IO,IORPTC\r
+        000150' 260740  012173'         PUSHJ   PP,MSRCH        ;SEARCH FOR MACRO/OPDEF/SYN\r
+        000151' 254000  000157'         JRST    STMNT3          ;NOT FOUND, TRY OP CODE\r
+        000152' 135140  014060'         LDB     SDEL,[POINT 3,ARG,5]\r
+        000153' 322140  003311'         JUMPE   SDEL,ERRAX      ;ERROR IF NO FLAGS\r
+        000154' 362140  004346'         SOJE    SDEL,OPD1       ;OPDEF IF 1\r
+        000155' 362140  005511'         SOJE    SDEL,CALLM      ;MACRO IF 2\r
+        000156' 254000  000161'         JRST    STMNT4          ;SYNONYM, PROCESS WITH OP-CODES\r
+\r
+        000157' 260740  010470' STMNT3: PUSHJ   PP,OPTSCH       ;SEARCH OP CODE TABLE\r
+        000160' 254000  000167'         JRST    STMNT5          ;NOT FOUND\r
+        000161' 510000  000006  STMNT4: HLLZ    AC0,V           ;PUT CODE IN AC0\r
+        000162' 620300  100000          TRZ     V,ADDF          ;CLEAR ADDRESS NON-VALID FLAG\r
+        000163' 622300  200000          TRZE    V,LITF          ;VALID IN LITERAL?\r
+        000164' 336000  013321'         SKIPN   LITLVL          ;NO, ARE WE IN A LITERAL?\r
+        000165' 254006  000000          JRST    0(V)            ;NO, GO TO APPROPRIATE PROCESSOR\r
+        000166' 263740  000000          POPJ    PP,             ;YES,EXIT\r
+\r
+        000167' 260740  012210' STMNT5: PUSHJ   PP,SSRCH        ;TRY SYMBOLS\r
+        000170' 254000  000207'         JRST    STMNT8          ;NOT FOUND\r
+        000171' 603240  003000          TLNE    ARG,EXTF!UNDF   ;EXTERNAL OR UNDEFINED?\r
+        000172' 254000  000200'         JRST    STMNT7          ;YES, PROCESS IN EVALEX\r
+        000173' 607440  777776          TLNN RC,-2              ;CHECK FOR EXTERNAL\r
+        000174' 602440  777776          TRNE RC,-2\r
+        000175' 254000  000200'         JRST STMNT7\r
+        000176' 200000  000006          MOVE    AC0,V           ;FOUND, PUT VALUE IN AC0\r
+        000177' 661600  020000          TLO     IO,NUMSW        ;FLAG AS NUMERIC\r
+        000200' 621600  000004  STMNT7: TLZ     IO,IORPTC\r
+        000201' 260740  001056' STMNT9: PUSHJ   PP,EVALHA       ;EVALUATE EXPRESSION\r
+        000202' 603640  100000          TLNE    FR,FSNSW        ;FIELD SEEN?\r
+        000203' 254000  002665'         JRST    STOW            ;YES,STOW THE CODE AND EXIT\r
+        000204' 302340  000075          CAIE    C,"]"-40        ;CLOSING LITERAL?\r
+\r\fMACRO V.10                     PAGE 11-1\r
+        STATEMENT PROCESSOR\r
+\r
+        000205' 660600  200000          TRO     ER,ERRQ         ;NO, GIVE "Q" ERROR\r
+        000206' 263740  000000          POPJ    PP,             ;EXIT\r
+\r
+\r\fMACRO V.10                     PAGE 12\r
+        STATEMENT PROCESSOR\r
+\r
+                                STMNT8:repeat 0,<MOVEI  V,0             ;ALWAYS START SCAN WITH 0\r
+                                        CAIL    V,CALNTH        ;END OF TABLE?\r
+                                        JRST    STMN8C          ;YES, TRY TTCALLS\r
+                                        CAME    AC0,CALTBL(V)   ;FOUND IT?\r
+                                        AOJA    V,.-3           ;NO,TRY AGAIN\r
+                                        SUBI    V,NEGCAL        ;CALLI'S START AT -1\r
+                                        HRLI    V,(CALLI)       ;PUT IN UUO>\r
+        000207' 205240  010000  STMN8D: MOVSI   ARG,OPDF        ;SET FLAG FOR OPDEF\r
+        000210' 260740  012366' STMN8B: PUSHJ   PP,INSERT       ;PUT OPDEF IN TABLE\r
+        000211' 254000  004350'         JRST    OPD             ;AND TREAT AS OPDEF\r
+\r
+        000212' 400300  000000  STMN8C: SETZ    V,              ;START WITH ZERO\r
+        000213' 301300  000016          CAIL    V,TTCLTH        ;END OF TABLE?\r
+        000214' 254000  000222'         JRST    STMN8A          ;YES, ERROR\r
+        000215' 312006  012155'         CAME    AC0,TTCTBL(V)   ;MATCH?\r
+        000216' 344300  000213'         AOJA    V,.-3           ;NO, KEEP TRYING\r
+        000217' 242300  000005          LSH     V,5             ;PUT IN AC FIELD (RIGHT HALF)\r
+        000220' 515306  051000          HRLZI   V,<(TTCALL)>(V) ;PUT UUO IN LEFT HALF\r
+        000221' 254000  000207'         JRST    STMN8D          ;SET OPDEF FLAG\r
+\r
+        000222' 403300  000011  STMN8A: SETZB   V,RC            ;CLEAR VALUE AND RELOCATION\r
+        000223' 660600  000200          TRO     ER,ERRO         ;FLAG AS UNDEFINED OP-CODE\r
+        000224' 321640  004350'         JUMP1   OPD             ;TREAT AS STANDARD OP ON PASS1\r
+        000225' 205240  013000          MOVSI   ARG,OPDF!UNDF!EXTF      ;SET A FEW FLAGS\r
+        000226' 254000  000210'         JRST    STMN8B          ;TO FORCE OUT A MESSAGE\r
+\r
+                                                ;STATEMENT OUT PASSES REMAINDER OF LINE (CMNT)\r
+                                                        ;UNTIL A LINE TERMINATOR IS SEEN.\r
+        000227' 665600  000204  STOUTS: TLOA    IO,IOENDL!IORPTC\r
+        000230' 661600  000004  STOUT:  TLO     IO,IORPTC\r
+        000231' 260740  004452'         PUSHJ   PP,BYPAS1\r
+        000232' 306340  000014          CAIN    C,14            ;COMMA?\r
+        000233' 331000  013104'         SKIPL   STPX            ;YES, ERROR IF CODE STORED\r
+        000234' 306340  000033          CAIN    C,EOL\r
+        000235' 665600  000004          TLOA    IO,IORPTC\r
+        000236' 660600  200000          TRO     ER,ERRQ\r
+        000237' 260740  001406' STOUT1: PUSHJ   PP,CHARAC\r
+        000240' 307340  000015          CAIG    C,CR\r
+        000241' 307340  000011          CAIG    C,HT\r
+        000242' 254000  000237'         JRST    STOUT1\r
+        000243' 254000  001547'         JRST    OUTLIN          ;OUTPUT THE LINE (BIN AND LST)\r
+\r\fMACRO V.10                     PAGE 13\r
+        LABEL PROCESSOR\r
+\r
+                                        SUBTTL  LABEL PROCESSOR\r
+        \r
+        000244' 321600  000310' LABEL:  JUMPAD  LABEL4          ;COMPARE IF NON-SYMBOLIC\r
+        000245' 322000  000312'         JUMPE   AC0,LABEL5      ;ERROR IF BLANK\r
+        000246' 661600  000040          TLO IO,DEFCRS           ;THIS IS A DEFINITION\r
+        000247' 260740  012210'         PUSHJ   PP,SSRCH        ;SEARCH FOR OPERAND\r
+        000250' 205240  602000          MOVSI   ARG,SYMF!UNDF!TAGF      ;NOT FOUND\r
+        000251' 607240  001000          TLNN    ARG,EXTF        ;OPERAND FOUND (SKIP EXIT)\r
+        000252' 254000  000257'         JRST    LABEL0\r
+        000253' 321640  000304'         JUMP1   LABEL3          ;ERROR ON PASS1\r
+        000254' 607240  002000          TLNN    ARG,UNDF        ;UNDEFINED ON PASS1\r
+        000255' 254000  000304'         JRST    LABEL3          ;NO, FLAG ERROR\r
+        000256' 621240  005000          TLZ     ARG,EXTF!PNTF   ;TURN OFF EXT FLAG NOW\r
+        000257' 627240  002100  LABEL0: TLZN    ARG,UNDF!VARF   ;WAS IT PREVIOUSLY DEFINED?\r
+        000260' 254000  000301'         JRST    LABEL2          ;YES, CHECK EQUALITY\r
+        000261' 200300  013325'         MOVE    V,LOCA  ;WFW\r
+        000262' 200440  013332'         MOVE    RC,MODA\r
+        000263' 661240  200000          TLO     ARG,TAGF\r
+        000264' 260740  006335'         PUSHJ   PP,PEEK         ;GET NEXT CHAR.\r
+        000265' 302340  000072          CAIE    C,":"           ;SPECIAL CHECK FOR  ::\r
+        000266' 254000  000272'         JRST    LABEL1          ;NO MATCH\r
+        000267' 661240  000400          TLO     ARG,INTF        ;MAKE IT INTERNAL\r
+        000270' 260740  001354'         PUSHJ   PP,GETCHR       ;PROCESS NEXT CHAR.\r
+        000271' 260740  006335'         PUSHJ   PP,PEEK         ;PREVIEW NEXT CHAR.\r
+        000272' 302340  000041  LABEL1: CAIE    C,"!"           ;HALF-KILL SIGN\r
+        000273' 254000  000276'         JRST    LABEL6          ;NO\r
+        000274' 661240  100000          TLO     ARG,NOOUTF      ;YES, SUPPRESS IT\r
+        000275' 260740  001354'         PUSHJ   PP,GETCHR       ;AND GET RID OF IT\r
+        000276' 202000  012541' LABEL6: MOVEM   AC0,TAG         ;SAVE FOR PASS 1 ERRORS\r
+        000277' 513000  013377'         HLLZS   TAGINC          ;ZERO INCREMENT\r
+        000300' 254000  012366'         JRST    INSERT          ;INSERT/UPDATE AND EXIT\r
+\r
+        000301' 526300  013324' LABEL2: HRLOM   V,LOCBLK        ;SAVE LIST LOCATION\r
+        000302' 316300  013325'         CAMN    V,LOCA          ;DOES IT COMPARE WITH PREVIOUS? WFW\r
+        000303' 312440  013332'         CAME    RC,MODA\r
+        000304' 665240  000020  LABEL3: TLOA    ARG,MDFF        ;NO, FLAG MULTIPLY DEFINED AND SKIP\r
+        000305' 254000  000314'         JRST    LABEL7          ;YES, GET RID OF EXTRA CHARS.\r
+        000306' 660600  000020          TRO     ER,ERRM         ;FLAG MULTIPLY DEFINED ERROR \r
+        000307' 254000  012467'         JRST    UPDATE          ;UPDATE AND EXIT\r
+\r
+        000310' 316000  013325' LABEL4: CAMN    AC0,LOCA        ;DO THEY COMPARE?\r
+        000311' 312440  013332'         CAME    RC,MODA\r
+        000312' 660600  000100  LABEL5: TRO     ER,ERRP         ;NO, FLAG PHASE ERROR\r
+        000313' 263740  000000          POPJ    PP,\r
+\r
+        000314' 332000  013321' LABEL7: SKIPE   LITLVL          ;LABEL IN A LITERAL?\r
+        000315' 202000  013322'         MOVEM   AC0,LITLBL      ;YES, SAVE LABEL NAME FOR LATER\r
+        000316' 260740  006335'         PUSHJ   PP,PEEK         ;INSPECT A CHAR.\r
+        000317' 306340  000072          CAIN    C,":"           ;COLON?\r
+        000320' 260740  001354'         PUSHJ   PP,GETCHR       ;YES, DISPOSE OF IT\r
+        000321' 260740  006335'         PUSHJ   PP,PEEK         ;EXAMINE ONE MORE CHAR.\r
+        000322' 306340  000041          CAIN    C,"!"           ;EXCLAMATION?\r
+        000323' 254000  001354'         JRST    GETCHR          ;YES, INDEED\r
+\r\fMACRO V.10                     PAGE 14\r
+        LABEL PROCESSOR\r
+\r
+        000324' 263740  000000          POPJ    PP,\r
+\r\fMACRO V.10                     PAGE 15\r
+        ATOM PROCESSOR\r
+\r
+                                SUBTTL  ATOM PROCESSOR\r
+        000325' 260740  000354' ATOM:   PUSHJ   PP,CELL         ;GET FIRST CELL\r
+        000326' 603600  020000          TLNE    IO,NUMSW        ;IF NON-NUMERIC\r
+        000327' 302340  000042  ATOM1:  CAIE    C,42            ;OR NOT A BINARY SHIFT,\r
+        000330' 263740  000000          POPJ    PP,             ;EXIT\r
+\r
+        000331' 261740  000000          PUSH    PP,AC0          ;STACK REGISTERS, ITS A BINARY SHIFT\r
+        000332' 261740  000001          PUSH    PP,AC1\r
+        000333' 261740  000011          PUSH    PP,RC\r
+        000334' 261740  000015          PUSH    PP,RX\r
+        000335' 541640  000012          HRRI    RX,^D10         ;COMPUTE SHIFT RADIX 10\r
+        000336' 260740  000353'         PUSHJ   PP,CELLSF       ;GET SHIFT\r
+        000337' 200240  000011          MOVE    ARG,RC          ;SAVE RELOCATION\r
+        000340' 262740  000015          POP     PP,RX           ;RESTORE REGISTERS\r
+        000341' 262740  000011          POP     PP,RC\r
+        000342' 262740  000001          POP     PP,AC1\r
+        000343' 210200  000000          MOVN    SX,AC0          ;USE NEGATIVE OF SHIFT\r
+        000344' 262740  000000          POP     PP,AC0\r
+        000345' 326240  000432'         JUMPN   ARG,NUMER2      ;IF NOT ABSOLUTE\r
+        000346' 607600  020000          TLNN    IO,NUMSW        ;AND NUMERIC,\r
+        000347' 254000  000432'         JRST    NUMER2          ;FLAG ERROR\r
+        000350' 246004  000043          LSHC    AC0,^D35(SX)\r
+        000351' 242444  000043          LSH     RC,^D35(SX)\r
+        000352' 254000  000327'         JRST    ATOM1           ;TEST FOR ANOTHER\r
+\r\fMACRO V.10                     PAGE 16\r
+        ATOM PROCESSOR\r
+\r
+        000353' 661600  400000  CELLSF: TLO     IO,FLDSW\r
+        000354' 403000  000011  CELL:   SETZB   AC0,RC          ;CLEAR RESULT AND RELOCATION\r
+        000355' 403040  000002          SETZB   AC1,AC2         ;CLEAR WORK REGISTERS\r
+        000356' 202740  013342'         MOVEM   PP,PPTEMP       ;SAVE PUSHDOWN POINTER\r
+        000357' 621600  020000          TLZ     IO,NUMSW\r
+        000360' 625640  040240          TLZA    FR,NEGSW!DCFSW!RADXSW\r
+\r
+        000361' 661600  400000  CELL1:  TLO     IO,FLDSW\r
+        000362' 260740  004452'         PUSHJ   PP,BYPASS\r
+        000363' 135300  014061'         LDB     V,[POINT 4,CSTAT(C),14] ;GET CODE\r
+        000364' 256006  000365'         XCT     .+1(V)          ;EXECUTE, INDEX VIA BITS 11,12,13,14 OF CSTAT TABLE\r
+        000365' 254000  000361'         JRST    CELL1           ;0; BLANK, (TAB OR "+")\r
+        000366' 254000  000400'         JRST    LETTER          ;1; LETTER  ] $ % ( ) , ; >\r
+        000367' 641640  000200          TLC     FR,NEGSW        ;2; "-"\r
+        000370' 661640  020000          TLO     FR,INDSW        ;3; "@"\r
+        000371' 254000  000710'         JRST    NUM1            ;4; NUMERIC   0 - 9\r
+        000372' 254000  000653'         JRST    ANGLB           ;5; "<"\r
+        000373' 254000  000550'         JRST    SQBRK           ;6; "["\r
+        000374' 254000  000447'         JRST    QUOTES          ;7; ""","'" \r
+        000375' 254000  000514'         JRST    QUAL            ;10; "^"\r
+        000376' 254000  000671'         JRST    PERIOD          ;11; "."\r
+        000377' 664600  200000          TROA    ER,ERRQ         ;12; ERROR, FLAG AND TREAT AS DELIMITER\r
+                                                                ;12;    ! # & * / : = ? \ _\r
+\r\fMACRO V.10                     PAGE 17\r
+        ATOM PROCESSOR\r
+\r
+        000400' 665100  440600  LETTER: TLOA    AC2,(POINT 6,AC0,)      ;SET BYTE POINTER\r
+        000401' 260740  001354' LETTE1: PUSHJ   PP,GETCHR       ;GET CHARACTER\r
+        000402' 607400  000006          TLNN    CS,6            ;ALPHA-NUMERIC?\r
+        000403' 254000  000407'         JRST    LETTE3          ;NO,TEST FOR VARIABLE\r
+        000404' 603100  770000          TLNE    AC2,770000      ;STORE ONLY SIX BYTES\r
+        000405' 136340  000002  LETTE2: IDPB    C,AC2           ;RETURN FROM PERIOD\r
+        000406' 254000  000401'         JRST    LETTE1\r
+\r
+        000407' 302340  000003  LETTE3: CAIE    C,03            ;"#"?\r
+        000410' 263740  000000          POPJ    PP,\r
+        000411' 322000  000446'         JUMPE   AC0,POPOUT      ;TEST FOR NULL\r
+        000412' 260740  006335'         PUSHJ   PP,PEEK         ;PEEK AT NEXT CHAR.\r
+        000413' 306340  000043          CAIN    C,"#"           ;IS IT 2ND #?\r
+        000414' 254000  000426'         JRST    LETTE4          ;YES, THEN IT'S AN EXTERN\r
+        000415' 661600  000040          TLO     IO,DEFCRS\r
+        000416' 260740  012210'         PUSHJ   PP,SSRCH        ;YES, SEARCH FOR SYMBOL (OPERAND)\r
+        000417' 205240  402000          MOVSI   ARG,SYMF!UNDF   ;NOT FOUND, FLAGAS UNDEFINED SYM.\r
+        000420' 607240  002000          TLNN    ARG,UNDF        ;UNDEFINED?\r
+        000421' 254000  001354'         JRST    GETCHR          ;NO, GET NEXT CHAR AND RETURN\r
+        000422' 661240  000100          TLO     ARG,VARF        ;YES, FLAG AS A VARIABLE\r
+        000423' 660600  002000          TRO     ER,ERRU         ;SET UNDEFINED ERROR FLAG\r
+        000424' 260740  012365'         PUSHJ   PP,INSERZ       ;INSERT IT WITH A ZERO VALUE\r
+        000425' 254000  000433'         JRST    GETDEL\r
+\r
+        000426' 260740  001354' LETTE4: PUSHJ   PP,GETCHR       ;AND SCAN PAST IT\r
+        000427' 260740  001354'         PUSHJ   PP,GETCHR       ;GET RID OF #\r
+        000430' 254000  003717'         JRST    EXTER1          ;PUT IN SYMBOL TABLE\r
+\r
+        000431' 403000  000011  NUMER1: SETZB   AC0,RC          ;RETURN ZERO\r
+        000432' 660600  000400  NUMER2: TRO     ER,ERRN         ;FLAG ERROR\r
+\r
+        000433' 260740  004452' GETDEL: PUSHJ   PP,BYPASS\r
+        000434' 322340  000433' GETDE1: JUMPE   C,.-1\r
+        000435' 201040  000000          MOVEI   AC1,0\r
+        000436' 661600  420000  GETDE3: TLO     IO,NUMSW!FLDSW  ;FLAG NUMERIC\r
+        000437' 607640  000200          TLNN    FR,NEGSW        ;IS ATOM NEGATIVE?\r
+        000440' 263740  000000          POPJ    PP,             ;NO, EXIT\r
+        000441' 322040  000444'         JUMPE   AC1,GETDE2\r
+        000442' 213000  000001          MOVNS   AC1\r
+        000443' 654000  014062'         TDCA    AC0,[-1]\r
+        000444' 213000  000000  GETDE2: MOVNS   AC0             ;YES, NEGATE VALUE\r
+        000445' 213000  000011          MOVNS   RC              ;AND RELOCATION\r
+        000446' 263740  000000  POPOUT: POPJ    PP,             ;EXIT\r
+\r\fMACRO V.10                     PAGE 18\r
+        ATOM PROCESSOR\r
+\r
+        000447' 302340  000007  QUOTES: CAIE    C,"'"-40        ;IS IT  "'"\r
+        000450' 254000  000456'         JRST    QUOTE           ;NO MUST BE """\r
+        000451' 254000  000500'         JRST    SQUOTE          ;YES\r
+\r
+        000452' 603000  376000  QUOTE0: TLNE    AC0,376000      ;5 CHARACTERS STORED ALREADY?\r
+        000453' 660600  200000          TRO     ER,ERRQ         ;YES, GIVE WARNING\r
+        000454' 240000  000007          ASH     AC0,7\r
+        000455' 434000  000007          IOR     AC0,C\r
+        000456' 260740  001406' QUOTE:  PUSHJ   PP,CHARAC       ;GET 7-BIT ASCII\r
+        000457' 307340  000015          CAIG    C,15            ;TEST FOR LF, VT, FF OR CR\r
+        000460' 305340  000012          CAIGE   C,12\r
+        000461' 254000  000463'         JRST    .+2             ;NO, SO ALL IS WELL\r
+        000462' 254000  000472'         JRST    QUOTE2          ;ESCAPE WITH Q ERROR\r
+        000463' 302340  000042          CAIE    C,42\r
+        000464' 254000  000452'         JRST    QUOTE0\r
+        000465' 260740  006335'         PUSHJ   PP,PEEK         ;LOOK AT NEXT CHAR.\r
+        000466' 302340  000042          CAIE    C,42\r
+        000467' 254000  000473'         JRST    QUOTE1          ;RESTORE REPEAT LEVEL AND QUIT\r
+        000470' 260740  001406'         PUSHJ   PP,CHARAC       ;GET NEXT CHAR.\r
+        000471' 254000  000452'         JRST    QUOTE0          ;USE IT\r
+\r
+        000472' 660600  200000  QUOTE2: TRO     ER,ERRQ         ;SET Q ERROR\r
+        000473' 254000  000433' QUOTE1: JRST    GETDEL\r
+\r
+        000474' 603000  770000  SQUOT0: TLNE    AC0,770000      ;SIX CHARS. STORED ALREADY ?\r
+        000475' 660600  200000          TRO     ER,ERRQ         ;YES\r
+        000476' 242000  000006          LSH     AC0,6\r
+        000477' 435007  777740          IORI    AC0,-40(C)      ;OR IN SIXBIT CHAR.\r
+\r
+        000500' 260740  001406' SQUOTE: PUSHJ   PP,CHARAC\r
+        000501' 307340  000015          CAIG    C,CR\r
+        000502' 305340  000012          CAIGE   C,LF\r
+        000503' 254000  000505'         JRST    .+2\r
+        000504' 254000  000473'         JRST    QUOTE1\r
+        000505' 302340  000047          CAIE    C,"'"\r
+        000506' 254000  000474'         JRST    SQUOT0\r
+        000507' 260740  006335'         PUSHJ   PP,PEEK\r
+        000510' 302340  000047          CAIE    C,"'"\r
+        000511' 254000  000473'         JRST    QUOTE1\r
+        000512' 260740  001406'         PUSHJ   PP,CHARAC\r
+        000513' 254000  000474'         JRST    SQUOT0\r
+\r
+\r\fMACRO V.10                     PAGE 19\r
+        ATOM PROCESSOR\r
+\r
+        000514' 260740  004452' QUAL:   PUSHJ   PP,BYPAS1       ;SKIP BLANKS, GET NEXT CHARACTER\r
+        000515' 306340  000042          CAIN    C,42            ;"B"?\r
+        000516' 254000  000531'         JRST    QUAL2           ;YES, RADIX=D2\r
+        000517' 306340  000057          CAIN    C,57            ;"O"?\r
+        000520' 254000  000530'         JRST    QUAL8           ;YES, RADIX=D8\r
+        000521' 306340  000046          CAIN    C,46            ;"F"?\r
+        000522' 254000  000704'         JRST    NUMDF           ;YES, PROCESS DECIMAL FRACTION\r
+        000523' 306340  000054          CAIN    C,54            ;"L"?\r
+        000524' 254000  000541'         JRST    QUALL           ;YES\r
+        000525' 302340  000044          CAIE    C,44            ;"D"?\r
+        000526' 254000  000431'         JRST    NUMER1          ;NO, FLAG NUMERIC ERROR\r
+        000527' 271100  000002          ADDI    AC2,2\r
+        000530' 271100  000006  QUAL8:  ADDI    AC2,6\r
+        000531' 271100  000002  QUAL2:  ADDI    AC2,2\r
+        000532' 261740  000015          PUSH    PP,RX\r
+        000533' 540640  000002          HRR     RX,AC2\r
+        000534' 260740  000353'         PUSHJ   PP,CELLSF\r
+        000535' 262740  000015  QUAL2A: POP     PP,RX\r
+        000536' 607600  020000          TLNN    IO,NUMSW\r
+        000537' 254000  000431'         JRST    NUMER1\r
+        000540' 254000  000434'         JRST    GETDE1\r
+\r
+        000541' 261740  000015  QUALL:  PUSH    PP,FR\r
+        000542' 260740  000353'         PUSHJ   PP,CELLSF\r
+        000543' 200100  000000          MOVE    AC2,AC0\r
+        000544' 201000  000044          MOVEI   AC0,^D36\r
+        000545' 322100  000535'         JUMPE   AC2,QUAL2A\r
+        000546' 242100  777777          LSH     AC2,-1\r
+        000547' 364000  000545'         SOJA    AC0,.-2\r
+\r\fMACRO V.10                     PAGE 20\r
+        LITERAL PROCESSOR\r
+\r
+                                SUBTTL  LITERAL PROCESSOR\r
+\r
+        000550' 261740  000015  SQBRK:  PUSH    PP,FR\r
+        000551' 261740  013270'         PUSH    PP,EXTPNT       ;ALLOW EXTERN TO PRECEDE LIT IN XWD\r
+        000552' 402000  013270'         SETZM   EXTPNT\r
+        000553' 332000  013321'         SKIPE LITLVL    ;SAVE SEQNO AND PAGE IF NOT IN LIT ALREADY\r
+        000554' 254000  000561'         JRST SQB5\r
+        000555' 200340  013415'         MOVE C,SEQNO2\r
+        000556' 202340  013304'         MOVEM C,LITSEQ\r
+        000557' 200340  013414'         MOVE C,PAGENO\r
+        000560' 202340  013303'         MOVEM C,LITPG\r
+        000561' 265100  002723' SQB5:   JSP     AC2,SVSTOW\r
+        000562' 260740  000125' SQB3:   PUSHJ   PP,STMNT\r
+        000563' 306340  000075          CAIN C,75       ;CHECK FOR ]\r
+        000564' 254000  000620'         JRST SQB1\r
+        000565' 661600  000004          TLO IO,IORPTC\r
+        000566' 603640  200000          TLNE    FR,MWLFLG       ;CALL IT ] IF NOT MULTI-WORD FLAG\r
+        000567' 254000  000621'         JRST    SQB2            ;BUT REPEAT LAST CHARACTER\r
+        000570' 260740  004452'         PUSHJ PP,BYPAS1\r
+        000571' 306340  000033          CAIN C,EOL\r
+        000572' 665600  000004          TLOA IO,IORPTC\r
+        000573' 660600  200000          TRO ER,ERRQ\r
+        000574' 260740  001406' SQB4:   PUSHJ PP,CHARAC\r
+        000575' 306340  000073          CAIN    C,";"           ;COMMENT?\r
+        000576' 254000  000613'         JRST    SQB6            ;YES, IGNORE SQUARE BRACKETS\r
+        000577' 306340  000135          CAIN    C,"]"           ;LOOK FOR TERMINAL SQB\r
+        000600' 606600  777760          TRNN    ER,ERRORS       ;IN CASE OF ERROR IN LITERAL\r
+        000601' 254000  000603'         JRST    .+2             ;NO ALL IS WELL\r
+        000602' 254000  000620'         JRST    SQB1            ;FINISH THE LITERAL NOW!!\r
+        000603' 307340  000015          CAIG    C,CR            ;LOOK FOR END OF LINE\r
+        000604' 306340  000011          CAIN    C,HT\r
+        000605' 254000  000574'         JRST    SQB4\r
+        000606' 260740  002011' SQB4A:  PUSHJ   PP,OUTIML       ;DUMP\r
+        000607' 260740  001406'         PUSHJ   PP,CHARAC       ;GET ANOTHER CHAR.\r
+        000610' 331000  013002'         SKIPL   LIMBO           ;CRLF FLAG\r
+        000611' 661600  000004          TLO     IO,IORPTC       ;NO REPEAT\r
+        000612' 254000  000562'         JRST    SQB3\r
+\r
+        000613' 260740  001406' SQB6:   PUSHJ   PP,CHARAC       ;GET A CHARACTER\r
+        000614' 307340  000015          CAIG    C,CR\r
+        000615' 306340  000011          CAIN    C,HT            ;LOOK FOR END OF LINE CHAR.\r
+        000616' 254000  000613'         JRST    SQB6            ;NOT YET\r
+        000617' 254000  000606'         JRST    SQB4A           ;GOT IT\r
+\r
+        000620' 621600  000004  SQB1:   TLZ     IO,IORPTC\r
+        000621' 260740  001264' SQB2:   PUSHJ   PP,STOLIT\r
+        000622' 265100  002731'         JSP     AC2,GTSTOW\r
+        000623' 332000  013322'         SKIPE   LITLBL          ;NEED TO FIXUP A LABEL?\r
+        000624' 260740  000632'         PUSHJ   PP,RELBLE       ;YES, USE LOC OF LITERAL\r
+        000625' 262740  013270'         POP     PP,EXTPNT\r
+        000626' 262740  000015          POP     PP,FR\r
+        000627' 332000  013321'         SKIPE   LITLVL          ;WERE WE NESTED?\r
+        000630' 321640  000432'         JUMP1   NUMER2          ;YES, FORCE ERROR IF PASS 1\r
+\r\fMACRO V.10                     PAGE 20-1\r
+        LITERAL PROCESSOR\r
+\r
+        000631' 254000  000433'         JRST    GETDEL\r
+\r
+        000632' 261740  000000  RELBLE: PUSH    PP,AC0          ;SAVE LOCATION COUNTER\r
+        000633' 261740  000011          PUSH    PP,RC           ;AND RELOCATION\r
+        000634' 200000  013322'         MOVE    AC0,LITLBL      ;SYMBOL WE NEED\r
+        000635' 402000  013322'         SETZM   LITLBL          ;ZERO INDICATOR\r
+        000636' 260740  012210'         PUSHJ   PP,SSRCH        ;SEARCH FOR OPERAND\r
+        000637' 254000  000650'         JRST    RELBL1          ;SHOULD NEVER HAPPEN\r
+        000640' 607240  200000          TLNN    ARG,TAGF        ;IT BETTER BE A LABEL\r
+        000641' 254000  000650'         JRST    RELBL1          ;IT WASN'T , GIVE UP BEFORE SOME HARM IS DONE\r
+        000642' 621240  007000          TLZ     ARG,UNDF!EXTF!PNTF      ;CLEAR FLAGS NOW\r
+        000643' 262740  000011          POP     PP,RC           ;GET LITERAL RELOCATION\r
+        000644' 200317  000000          MOVE    V,(PP)          ;GET VALUE (LOC COUNTER)\r
+        000645' 260740  012467'         PUSHJ   PP,UPDATE       ;UPDATE VALUE\r
+        000646' 262740  000000          POP     PP,AC0          ;RESTORE LITERAL COUNT\r
+        000647' 263740  000000          POPJ    PP,             ;RETURN\r
+        \r
+        000650' 262740  000011  RELBL1: POP     PP,RC           ;RESTORE RC\r
+        000651' 262740  000000          POP     PP,AC0  ;AND AC0\r
+        000652' 263740  000000          POPJ    PP,             ;JUST RETURN\r
+\r\fMACRO V.10                     PAGE 21\r
+        LITERAL PROCESSOR\r
+\r
+        000653' 261740  000015  ANGLB:  PUSH    PP,FR\r
+        000654' 621640  020000          TLZ     FR,INDSW\r
+        000655' 260740  000325'         PUSHJ   PP,ATOM\r
+        000656' 607600  020000          TLNN    IO,NUMSW\r
+        000657' 302340  000035          CAIE    C,35\r
+        000660' 254000  000664'         JRST    ANGLB1\r
+        000661' 260740  004037'         PUSHJ   PP,ASSIG1\r
+        000662' 200000  000006          MOVE    AC0,V\r
+        000663' 254000  000665'         JRST    ANGLB2\r
+\r
+        000664' 260740  001056' ANGLB1: PUSHJ   PP,EVALHA\r
+        000665' 262740  000015  ANGLB2: POP     PP,FR\r
+        000666' 302340  000036          CAIE    C,36\r
+        000667' 660600  000400          TRO     ER,ERRN\r
+        000670' 254000  000433'         JRST    GETDEL\r
+\r
+        000671' 260740  001354' PERIOD: PUSHJ   PP,GETCHR       ;LOOK AT NEXT CHARACTER\r
+        000672' 607400  000002          TLNN    CS,2            ;ALPHABETIC?\r
+        000673' 254000  000677'         JRST    PERNUM          ;NO, TEST NUMERIC\r
+        000674' 205000  160000          MOVSI   AC0,(SIXBIT /./)        ;YES, PUT PERIOD IN AC0\r
+        000675' 205100  360600          MOVSI   AC2,(POINT 6,AC0,5)     ;SET BYTE POINTER\r
+        000676' 254000  000405'         JRST    LETTE2          ;AND TREAT AS SYMBOL\r
+\r
+        000677' 603400  000004  PERNUM: TLNE    CS,4            ;IS IT A NUMBER\r
+        000700' 254000  000736'         JRST    NUM32           ;YES\r
+        000701' 200000  013325'         MOVE    AC0,LOCA        ;NO. CURRENT LOC SYMBOL (.)\r
+        000702' 200440  013332'         MOVE    RC,MODA         ;SET TO CURRENT ASSEMBLY MODE\r
+        000703' 254000  000434'         JRST    GETDE1          ;GET DELIMITER\r
+        000704' 661640  000040  NUMDF:  TLO     FR,DCFSW        ;SET DECIMAL FRACTION FLAG\r
+        000705' 260740  001354' NUM:    PUSHJ   PP,GETCHR       ;GET A CHARACTER\r
+        000706' 607400  000004          TLNN    CS,4            ;NUMERIC?\r
+        000707' 254000  000720'         JRST    NUM10           ;NO\r
+        000710' 275340  000020  NUM1:   SUBI    C,20            ;CONVERT TO OCTAL\r
+        000711' 261740  000007          PUSH    PP,C            ;STACK FOR FLOATING POINT\r
+        000712' 200000  000001          MOVE    AC0,AC1\r
+        000713' 225015  000000          MULI    AC0,0(RX)\r
+        000714' 270040  000007          ADD     AC1,C           ;ADD IN LAST VALUE\r
+        000715' 301355  000000          CAIL    C,0(RX)         ;IS NUMBER LESS THAN CURRENT RADIX?\r
+        000716' 661640  040000          TLO     FR,RADXSW       ;NO, SET FLAG\r
+        000717' 344100  000705'         AOJA    AC2,NUM         ;YES, AC2=NO. OF DECIMAL PLACES\r
+\r
+\r\fMACRO V.10                     PAGE 22\r
+        LITERAL PROCESSOR\r
+\r
+        000720' 302340  000016  NUM10:  CAIE    C,16            ;PERIOD?\r
+        000721' 603640  000040          TLNE    FR,DCFSW        ;OR DECIMAL FRACTION?\r
+        000722' 254000  000732'         JRST    NUM30           ;YES, PROCESS FLOATING POINT\r
+        000723' 242040  000001          LSH     AC1,1           ;NO, CLEAR THE SIGN BIT\r
+        000724' 246000  000043          LSHC    AC0,^D35        ;AND SHIFT INTO AC0\r
+        000725' 200740  013342'         MOVE    PP,PPTEMP       ;RESTORE PP\r
+        000726' 362100  000434'         SOJE    AC2,GETDE1      ;NO RADIX ERROR TEST IF ONE DIGIT\r
+        000727' 603640  040000          TLNE    FR,RADXSW       ;WAS ILLEGAL NUMBER ENCOUNTERED?\r
+        000730' 660600  000400          TRO     ER,ERRN         ;YES, FLAG N ERROR\r
+        000731' 254000  000434'         JRST    GETDE1\r
+\r
+        000732' 302340  000042  NUM30:  CAIE    C,"B"-40        ;IF "B" THEN MISSING  "."\r
+        000733' 260740  001354' NUM31:  PUSHJ   PP,GETCHR\r
+        000734' 607400  000004          TLNN    CS,4            ;NUMERIC?\r
+        000735' 254000  000741'         JRST    NUM40           ;NO\r
+        000736' 275340  000020  NUM32:  SUBI    C,20\r
+        000737' 261740  000007          PUSH    PP,C\r
+        000740' 254000  000733'         JRST    NUM31\r
+\r
+        000741' 261740  000015  NUM40:  PUSH    PP,FR           ;STACK VALUES\r
+        000742' 541640  000012          HRRI    RX,^D10\r
+        000743' 261740  000002          PUSH    PP,AC2\r
+        000744' 261740  013342'         PUSH    PP,PPTEMP\r
+        000745' 306340  000045          CAIN    C,45            ;"E"?\r
+                                        JRST    [PUSHJ PP,PEEK  ;GET NEXT CHAR\r
+                                                PUSH PP,C       ;SAVE NEXT CHAR\r
+                                                PUSHJ PP,CELL   ;YES, GET EXPONENT\r
+                                                POP PP,C        ;GET FIRST CHAR. AFTER E\r
+                                                CAIN V,4        ;MUST HAVE NUMERICAL STATUS\r
+                                                JRST    .+2     ;SKIP RETURN\r
+                                                CAIN C,"<"      ;ALLOW <EXP>\r
+                                                JRST    .+2     ;SKIP RETURN\r
+                                                SKIPN   AC0     ;ERROR IF NON-ZERO EXPRESSION\r
+                                                TROA ER,ERRQ    ;ALLOW E+,E-\r
+                                                SETOM   RC      ;FORCE NUMERICAL ERROR\r
+        000746' 254000  014063'                 JRST    .+2]    ;SKIP RETURN\r
+        000747' 201000  000000          MOVEI   AC0,0           ;NO, ZERO EXPONENT\r
+        000750' 262740  013342'         POP     PP,PPTEMP\r
+        000751' 262740  000004          POP     PP,SX\r
+        000752' 262740  000015          POP     PP,FR\r
+        000753' 550300  000017          HRRZ    V,PP\r
+        000754' 200740  013342'         MOVE    PP,PPTEMP\r
+        000755' 326440  000431'         JUMPN   RC,NUMER1       ;EXPONENT MUST BE ABSOLUTE\r
+        000756' 270200  000000          ADD     SX,AC0\r
+        000757' 550240  000017          HRRZ    ARG,PP\r
+        000760' 270200  000005          ADD     SX,ARG\r
+        000761' 403000  000002          SETZB   AC0,AC2\r
+        000762' 603640  000040          TLNE    FR,DCFSW\r
+        000763' 254000  001004'         JRST    NUM60\r
+        000764' 255400  000765'         JOV     NUM50           ;CLEAR OVERFLOW FLAG\r
+\r\fMACRO V.10                     PAGE 23\r
+        LITERAL PROCESSOR\r
+\r
+\r
+        000765' 265140  001020' NUM50:  JSP     SDEL,NUMUP      ;FLOATING POINT\r
+        000766' 254000  000773'         JRST    NUM52           ;END OF WHOLE NUMBERS\r
+        000767' 164000  014077'         FMPR    AC0,[10.0]      ;MULTIPLY BY 10\r
+        000770' 661040  233000          TLO     AC1,233000      ;CONVERT TO FLOATING POINT\r
+        000771' 144000  000001          FADR    AC0,AC1         ;ADD IT IN\r
+        000772' 254000  000765'         JRST    NUM50\r
+\r
+        000773' 265140  001026' NUM52:  JSP     SDEL,NUMDN      ;PROCESS FRACTION\r
+        000774' 144000  000002          FADR    AC0,AC2\r
+        000775' 255400  000431'         JOV     NUMER1          ;TEST FOR OVERFLOW\r
+        000776' 254000  000434'         JRST    GETDE1\r
+\r
+        000777' 661040  233000          TLO     AC1,233000\r
+        001000' 602040  777777          TRNE    AC1,-1\r
+        001001' 144100  000001          FADR    AC2,AC1         ;ACCUMULATE FRACTION\r
+        001002' 174100  014077'         FDVR    AC2,[10.0]\r
+        001003' 254000  000773'         JRST    NUM52\r
+\r
+        001004' 265140  001020' NUM60:  JSP     SDEL,NUMUP\r
+        001005' 254000  001011'         JRST    NUM62\r
+        001006' 221000  000012          IMULI   AC0,^D10\r
+        001007' 270000  000001          ADD     AC0,AC1\r
+        001010' 254000  001004'         JRST    NUM60\r
+\r
+        001011' 246040  777734  NUM62:  LSHC    AC1,-^D36\r
+        001012' 265140  001026'         JSP     SDEL,NUMDN\r
+        001013' 246040  000045          LSHC    AC1,^D37\r
+        001014' 260740  004453'         PUSHJ   PP,BYPAS2\r
+        001015' 254000  000436'         JRST    GETDE3\r
+\r
+        001016' 235040  000012          DIVI    AC1,^D10\r
+        001017' 254000  001011'         JRST    NUM62\r
+\r
+        001020' 201040  000000  NUMUP:  MOVEI   AC1,0\r
+        001021' 311240  000004          CAML    ARG,SX\r
+        001022' 254003  000000          JRST    0(SDEL)\r
+        001023' 315240  000006          CAMGE   ARG,V\r
+        001024' 200045  000001          MOVE    AC1,1(ARG)\r
+        001025' 344243  000001          AOJA    ARG,1(SDEL)\r
+\r
+        001026' 201040  000000  NUMDN:  MOVEI   AC1,0\r
+        001027' 317300  000004          CAMG    V,SX\r
+        001030' 254003  000000          JRST    0(SDEL)\r
+        001031' 313300  000005          CAMLE   V,ARG\r
+        001032' 200046  000000          MOVE    AC1,0(V)\r
+        001033' 364303  000003          SOJA    V,3(SDEL)\r
+\r\fMACRO V.10                     PAGE 24\r
+        GETSYM\r
+\r
+                                SUBTTL  GETSYM\r
+        001034' 201000  000000  GETSYM: MOVEI   AC0,0           ;CLEAR AC0\r
+        001035' 205040  440600          MOVSI   AC1,(POINT 6,AC0)       ;PUT POINTER IN AC1\r
+        001036' 260740  004452'         PUSHJ   PP,BYPASS       ;SKIP LEADING BLANKS\r
+        001037' 607400  000002          TLNN    CS,2            ;ALPHABETIC?\r
+        001040' 254000  001046'         JRST    GETSY1          ;NO, ERROR\r
+        001041' 302340  000016          CAIE    C,16            ;PERIOD?\r
+        001042' 254000  001047'         JRST    GETSY2          ;NO, A VALID SYMBOL\r
+        001043' 136340  000001          IDPB    C,AC1           ;STORE THE CHARACTER\r
+        001044' 260740  001354'         PUSHJ   PP,GETCHR       ;YES, TEST NEXT CHARACTER\r
+        001045' 607400  000002          TLNN    CS,2            ;ALPHABETIC?\r
+        001046' 664600  040000  GETSY1: TROA    ER,ERRA\r
+        001047' 350017  000000  GETSY2: AOS     0(PP)           ;YES, SET SKIP EXIT\r
+        001050' 607400  000006  GETSY3: TLNN    CS,6            ;ALPHA-NUMERIC?\r
+        001051' 254000  004453'         JRST    BYPAS2          ;NO, GET DELIMITER\r
+        001052' 603040  770000          TLNE    AC1,770000      ;YES, HAVE WE STORED SIX?\r
+        001053' 136340  000001          IDPB    C,AC1           ;NO, STORE IT\r
+        001054' 260740  001354'         PUSHJ   PP,GETCHR\r
+        001055' 254000  001050'         JRST    GETSY3\r
+\r
+\r\fMACRO V.10                     PAGE 25\r
+        EXPRESSION EVALUATOR\r
+\r
+                                SUBTTL  EXPRESSION EVALUATOR\r
+                        000000  CV==    AC0                     ;CURRENT VALUE\r
+                        000001  PV==    AC1                     ;PREVIOUS VALUE\r
+                        000011  RC==    RC                      ;CURRENT RELOCATABILITY\r
+                        000002  PR==    AC2                     ;PREVIOUS RELOCATABILITY\r
+                        000010  CS=     CS                      ;CURRENT STATUS\r
+                        000003  PS==    SDEL                    ;PREVIOUS STATUS\r
+\r
+        001056' 661640  010000  EVALHA: TLO     FR,TMPSW\r
+        001057' 260740  001070' EVALCM: PUSHJ   PP,EVALEX       ;EVALUATE FIRST EXPRESSION\r
+        001060' 261740  014100'         PUSH    PP,[0]          ;MARK PDL\r
+        001061' 321400  001064'         JUMPCM  EVALC3          ;JUMP IF COMMA\r
+        001062' 661600  000004          TLO     IO,IORPTC       ;IT'S NOT,SO REPEAT\r
+        001063' 254000  004354'         JRST    OP              ;PROCESS IN OP\r
+        001064'                 EVALC3:\r
+        001064' 261740  014100'         PUSH    PP,[0]          ;STORE ZERO'S ON PDL\r
+        001065' 261740  014100'         PUSH    PP,[0]          ;.......\r
+        001066' 205100  270417          MOVSI   AC2,(POINT 4,(PP),12)\r
+        001067' 254000  004363'         JRST    OP1B            ;PROCESS IN OP\r
+\r
+        001070' 661600  400000  EVALEX: TLO     IO,FLDSW\r
+        001071' 261740  014101'         PUSH    PP,[XWD TNODE,0]        ;MARK THE LIST 200000,,0\r
+        001072' 627640  010000          TLZN    FR,TMPSW\r
+        001073' 260740  000325' EVATOM: PUSHJ   PP,ATOM         ;GET THE NEXT ATOM\r
+        001074' 322000  001170'         JUMPE   AC0,EVGETD      ;TEST FOR NULL/ZERO\r
+        001075' 663600  020000          TLOE    IO,NUMSW        ;SET NUMERIC, WAS IT PREVIOUSLY?\r
+        001076' 254000  001171'         JRST    EVGETD+1        ;YES, TREAT ACCORDINGLY\r
+        001077' 260740  012313'         PUSHJ   PP,SEARCH       ;SEARCH FOR MACRO OR SYMBOL\r
+        001100' 254000  001122'         JRST    EVOP            ;NOT FOUND, TRY FOR OP-CODE\r
+        001101' 321240  001103'         JUMPL   ARG,.+2         ;SKIP IF OPERAND\r
+        001102' 260740  012213'         PUSHJ   PP,SSRCH1       ;OPERATOR, TRY FOR SYMBOL (OPERAND)\r
+        001103' 260740  012203'         PUSHJ   PP,QSRCH        ;PERFORM CROSS-REFERENCE\r
+        001104' 327240  001107'         JUMPG   ARG,EVMAC       ;BRANCH IF OPERATOR\r
+        001105' 200000  000006          MOVE    AC0,V           ;SYMBOL, SET VALUE\r
+        001106' 254000  001152'         JRST    EVTSTS          ;TEST STATUS\r
+\r
+        001107' 603640  000200  EVMAC:  TLNE    FR,NEGSW        ;UNARY MINUS?\r
+        001110' 254000  001147'         JRST    EVERRZ          ;YES, INVALID BEFORE OPERATOR\r
+        001111' 135140  014060'         LDB     SDEL,[POINT 3,ARG,5]    ;GET MACF/OPDF/SYNF\r
+        001112' 361140  001147'         SOJL    SDEL,EVERRZ     ;ERROR IF NO FLAGS\r
+\r
+        001113' 322340  001115'         JUMPE   C,.+2           ;NON-BLANK?\r
+        001114' 661600  000004          TLO     IO,IORPTC       ;YES, REPEAT CHARACTER\r
+        001115' 362140  005511'         SOJE    SDEL,CALLM      ;MACRO IF 2\r
+        001116' 327140  001126'         JUMPG   SDEL,EVOPS      ;SYNONYM IF 4\r
+\r
+        001117' 200000  000006          MOVE    AC0,V           ;OPDEF\r
+        001120' 201300  004354'         MOVEI   V,OP            ;SET TRANSFER VECTOR\r
+        001121' 254000  001132'         JRST    EVOPD\r
+\r\fMACRO V.10                     PAGE 26\r
+        EXPRESSION EVALUATOR\r
+\r
+        001122' 603640  000200  EVOP:   TLNE    FR,NEGSW        ;OPCODE, UNARY MINUS?\r
+        001123' 254000  001147'         JRST    EVERRZ          ;YES, ERROR\r
+\r
+        001124' 260740  010470'         PUSHJ   PP,OPTSCH       ;SEARCH SYMBOL TABLE\r
+        001125' 254000  001145'         JRST    EVOPX           ;NOT FOUND\r
+        001126' 620300  200000  EVOPS:  TRZ     V,LITF          ;CLEAR LIT INVALID FLAG\r
+        001127' 622300  100000          TRZE    V,ADDF          ;SYNONYM\r
+        001130' 254000  001145'         JRST    EVOPX           ;PSEUDO-OP THAT GENERATES NO DATA JUMPS\r
+        001131' 510000  000006          HLLZ    AC0,V\r
+        001132' 322340  001134' EVOPD:  JUMPE   C,.+2           ;OPDEF, NON-BLANK DELIMITER?\r
+        001133' 661600  000004          TLO     IO,IORPTC       ;YES, REPEAT CHARACTER\r
+        001134' 265100  002723'         JSP     AC2,SVSTOW\r
+        001135' 260746  000000          PUSHJ   PP,0(V)\r
+        001136' 260740  002712'         PUSHJ   PP,DSTOW\r
+        001137' 265100  002731'         JSP     AC2,GTSTOW\r
+        001140' 602440  777776          TRNE    RC,-2\r
+        001141' 542440  013270'         HRRM    RC,EXTPNT\r
+        001142' 603440  777776          TLNE RC,-2\r
+        001143' 502440  013270'         HLLM RC,EXTPNT\r
+        001144' 254000  001175'         JRST    EVNUM\r
+\r
+        001145' 205240  402000  EVOPX:  MOVSI   ARG,SYMF!UNDF\r
+        001146' 260740  012365'         PUSHJ   PP,INSERZ\r
+        001147' 403000  000011  EVERRZ: SETZB   AC0,RC          ;CLEAR CODE AND RELOCATION\r
+        001150' 660600  002000  EVERRU: TRO     ER,ERRU\r
+        001151' 254000  001170'         JRST    EVGETD\r
+\r\fMACRO V.10                     PAGE 27\r
+        EXPRESSION EVALUATOR\r
+\r
+        001152' 603240  002000  EVTSTS: TLNE    ARG,UNDF\r
+                                        JRST    [TRO    ER,ERRU ;SET UNDEF ERROR\r
+                                                JUMP1   EVGETD  ;TREAT AS UNDF ON PASS1\r
+        001153' 254000  014102'                 JRST    .+1]    ;TREAT AS EXTERNAL ON PASS2\r
+        001154' 607240  001000          TLNN    ARG,EXTF\r
+        001155' 254000  001164'         JRST    EVTSTR\r
+        001156' 550440  000005          HRRZ RC,ARG     ;GET ADRES WFW\r
+        001157' 550240  013270'         HRRZ ARG,EXTPNT ;SAVE IT WFW\r
+        001160' 542440  013270'         HRRM RC,EXTPNT  ;WFW\r
+        001161' 602240  777777          TRNE ARG,-1     ;WFW\r
+        001162' 660600  000040          TRO     ER,ERRE\r
+        001163' 403000  000005          SETZB   AC0,ARG\r
+\r
+        001164' 603240  000020  EVTSTR: TLNE    ARG,MDFF        ;MULTIPLY DEFINED?\r
+        001165' 660600  020000          TRO     ER,ERRD         ;YES, FLAG IT\r
+        001166' 603640  000200          TLNE    FR,NEGSW        ;NEGATIVE ATOM?\r
+        001167' 260740  000444'         PUSHJ   PP,GETDE2       ;YES, NEGATE AC0 AND RC\r
+\r
+        001170' 603600  020000  EVGETD: TLNE    IO,NUMSW        ;NON BLANK FIELD\r
+        001171' 661640  100000          TLO     FR,FSNSW        ;YES,SET FLAG\r
+        001172' 260740  004453'         PUSHJ   PP,BYPAS2\r
+        001173' 603400  000006          TLNE    CS,6            ;ALPHA-NUMERIC?\r
+        001174' 661600  000004          TLO     IO,IORPTC       ;YES, REPEAT IT\r
+        001175' 262740  000003  EVNUM:  POP     PP,PS           ;POP THE PREVIOUS DELIMITER/TNODE\r
+        001176' 661140  004000          TLO     PS,4000\r
+        001177' 315140  000010          CAMGE   PS,CS           ;OPERATION REQUIRED?\r
+        001200' 254000  001205'         JRST    EVPUSH          ;NO, PUT VALUES BACK ON STACK\r
+        001201' 607140  200000          TLNN    PS,TNODE        ;YES, HAVE WE REACHED TERMINAL NODE?\r
+        001202' 254000  001212'         JRST    EVXCT           ;NO, EXECUTION REQUIRED\r
+        001203' 607400  170000          TLNN    CS,170000       ;YES, ARE WE POINTING AT DEL? (& ! * / + - _)\r
+        001204' 263740  000000          POPJ    PP,             ;YES, EXIT\r
+                                                                ;NO,FALL INTO EVPUSH\r
+\r
+\r\fMACRO V.10                     PAGE 28\r
+        EXPRESSION EVALUATOR\r
+\r
+        001205' 261740  000003  EVPUSH: PUSH    PP,PS           ;STACK VALUES\r
+        001206' 261740  000000          PUSH    PP,CV\r
+        001207' 261740  000011          PUSH    PP,RC\r
+        001210' 261740  000010          PUSH    PP,CS\r
+        001211' 254000  001073'         JRST    EVATOM          ;GET NEXT ATOM\r
+\r
+        001212' 262740  000002  EVXCT:  POP     PP,PR           ;POP PREVIOUS RELOCATABILITY\r
+        001213' 262740  000001          POP     PP,PV           ;AND PREVIOUS VALUE\r
+        001214' 135140  014105'         LDB     PS,[POINT 3,PS,29]      ;TYPE OF OPERATION TO PS\r
+        001215' 254003  001216'         JRST    .+1(PS)         ;PERFORM PROPER OPERATION\r
+        001216' 254000  000104'         JRST    ASSEM1          ;0; SHOULD NEVER GET HERE ;DMN\r
+        001217' 254000  001244'         JRST    XMUL            ;1;\r
+        001220' 254000  001240'         JRST    XDIV            ;2;\r
+        001221' 254000  001235'         JRST    XADD            ;3;\r
+        001222' 254000  001232'         JRST    XSUB            ;4;\r
+        001223' 254000  001255'         JRST    XLRW            ;5; "_"\r
+        001224' 674000  000001          TDOA    CV,PV           ;6; MERGE PV INTO CV\r
+        001225' 404000  000001          AND     CV,PV           ;7; AND PV INTO CV\r
+        001226' 326440  001230'         JUMPN   RC,.+2          ;COMMON RELOCATION TEST\r
+        001227' 322100  001175' EVXCT1: JUMPE   PR,EVNUM\r
+        001230' 660600  004000          TRO     ER,ERRR         ;BOTH MUST BE FIXED\r
+        001231' 254000  001175'         JRST    EVNUM           ;GO TRY AGAIN\r
+\r
+        001232' 276040  000000  XSUB:   SUBM    PV,CV\r
+        001233' 276100  000011          SUBM    PR,RC\r
+        001234' 254000  001175'         JRST    EVNUM\r
+\r
+        001235' 272040  000000  XADD:   ADDM    PV,CV\r
+        001236' 272100  000011          ADDM    PR,RC\r
+        001237' 254000  001175'         JRST    EVNUM\r
+\r
+        001240' 230100  000000  XDIV:   IDIV    PR,CV           ;CORRECT RELOCATABILITY\r
+        001241' 232040  000000          IDIVM   PV,CV\r
+        001242' 250100  000011  XDIV1:  EXCH    PR,RC           ;TAKE RELOCATION OF NUMERATOR\r
+        001243' 254000  001227'         JRST    EVXCT1\r
+\r
+        001244' 322100  001247' XMUL:   JUMPE   PR,XMUL1        ;AT LEAST ONE OPERAND\r
+        001245' 322440  001247'         JUMPE   RC,XMUL1        ;MUST BE FIXED\r
+        001246' 660600  004000          TRO     ER,ERRR\r
+        001247' 436100  000011  XMUL1:  IORM    PR,RC           ;GET RELOCATION TO RC\r
+        001250' 315040  000000          CAMGE   PV,CV           ;FIND THE GREATER\r
+        001251' 250040  000000          EXCH    PV,CV           ;FIX IN CASE CV=0,OR 1\r
+        001252' 222040  000011          IMULM   PV,RC\r
+        001253' 222040  000000          IMULM   PV,CV\r
+        001254' 254000  001175'         JRST    EVNUM\r
+        001255' 250040  000000  XLRW:   EXCH    PV,CV\r
+        001256' 242001  000000          LSH     CV,0(PV)\r
+        001257' 242101  000000          LSH     PR,0(PV)\r
+        001260' 254000  001242'         JRST    XDIV1\r
+\r\fMACRO V.10                     PAGE 29\r
+        LITERAL STORAGE HANDLER\r
+\r
+                                        SUBTTL  LITERAL STORAGE HANDLER\r
+        \r
+        001261'                 STOLER:\r
+        001261' 403000  000011          SETZB   AC0,RC  ;ERROR, NO CODE STORED\r
+        001262' 260740  002665'         PUSHJ   PP,STOW         ;STOW ZERO\r
+        001263' 660600  010000          TRO     ER,ERRL         ;AND FLAG THE ERROR\r
+\r
+        001264' 200140  013104' STOLIT: MOVE    SDEL,STPX\r
+        001265' 274140  013105'         SUB     SDEL,STPY       ;COMPUTE NUMBER OF WORDS\r
+        001266' 322140  001261'         JUMPE   SDEL,STOLER     ;ERROR IF NONE STORED\r
+        001267' 606600  777760          TRNN    ER,ERRORS       ;ANY ERRORS?\r
+        001270' 254000  001274'         JRST    STOL06          ;NO\r
+        001271' 325640  001333'         JUMP2   STOL22          ;YES, NO SEARCH.  BRANCH IF PASS2\r
+        001272' 272140  013036'         ADDM    SDEL,LITCNT     ;PASS ONE, UPDATE COUNT\r
+        001273' 254000  002717'         JRST    STOWI           ;INITIALIZE STOW\r
+\r
+        001274' 201200  013031' STOL06: MOVEI   SX,LITAB        ;PREPARE FOR SEARCH\r
+        001275' 200240  013104'         MOVE    ARG,STPX        ;SAVE IN THE EVENT OF MULTIPLE-WORD\r
+        001276' 504240  013105'         HRL     ARG,STPY\r
+        001277' 200100  013037'         MOVE    AC2,LITNUM\r
+        001300' 201140  000000          MOVEI   SDEL,0\r
+        001301' 260740  002712' STOL08: PUSHJ   PP,DSTOW        ;GET VALUE WFW\r
+\r
+        001302' 361100  001335' STOL10: SOJL    AC2,STOL24      ;TEST FOR END\r
+        001303' 200204  000000          MOVE    SX,0(SX)        ;NO, GET NEXT STORAGE CELL\r
+        001304' 200304  777777          MOVE    V,-1(SX)                ;GET RELOCATION BITS WFW\r
+        001305' 316004  777776          CAMN    AC0,-2(SX)      ;DO CODES COMPARE? WFW\r
+        001306' 312440  000006          CAME    RC,V            ;YES, HOW ABOUT RELOCATION?\r
+        001307' 344140  001302'         AOJA    SDEL,STOL10     ;NO, TRY AGAIN\r
+        001310' 335000  013104'         SKIPGE  STPX            ;YES, MULTI-WORD?\r
+        001311' 254000  001346'         JRST    STOL26          ;NO, JUST RETURN LOCATION\r
+        001312' 202100  013047'         MOVEM   AC2,SAVBLK+AC2  ;YES, SAVE STARTING INFO\r
+        001313' 202200  013051'         MOVEM   SX,SAVBLK+SX\r
+\r
+        001314' 361100  001334' STOL12: SOJL    AC2,STOL23      ;TEST FOR END\r
+        001315' 260740  002712'         PUSHJ   PP,DSTOW        ;GET NEXT WORD WFW\r
+        001316' 200204  000000          MOVE    SX,0(SX)        ;UPDATE POINTER\r
+        001317' 200304  777777          MOVE    V,-1(SX)                ;GET RELOCATION WFW\r
+        001320' 316004  777776          CAMN    AC0,-2(SX)      ;COMPARE VALUE WFW\r
+        001321' 312440  000006          CAME    RC,V            ;AND RELOCATION\r
+        001322' 254000  001326'         JRST    STOL14          ;NO MATCH, TRY AGAIN\r
+        001323' 331000  013104'         SKIPL   STPX            ;MATCH, HAVE WE FINISHED SEARCH?\r
+        001324' 254000  001314'         JRST    STOL12          ;NO, TRY NEXT WORD\r
+        001325' 254000  001346'         JRST    STOL26          ;YES, RETURN LOCATION\r
+\r
+        001326' 200100  013047' STOL14: MOVE    AC2,SAVBLK+AC2  ;RESTORE STOW POINTERS\r
+        001327' 200200  013051'         MOVE    SX,SAVBLK+SX\r
+        001330' 572240  013104'         HRREM   ARG,STPX\r
+        001331' 576240  013105'         HLREM   ARG,STPY\r
+        001332' 344140  001301'         AOJA    SDEL,STOL08     ;BETTER LUCK NEXT TIME\r
+\r\fMACRO V.10                     PAGE 30\r
+        LITERAL STORAGE HANDLER\r
+\r
+\r
+        001333' 200140  013037' STOL22: MOVE    SDEL,LITNUM\r
+        001334' 260740  002712' STOL23: PUSHJ   PP,DSTOW        ;DSTOW AND CONVERT\r
+        001335' 200200  013032' STOL24: MOVE    SX,LITABX       ;GET CURRENT STORAGE\r
+        001336' 260740  003444'         PUSHJ   PP,GETTOP       ;GET NEXT CELL\r
+        001337' 202004  777776          MOVEM   AC0,-2(SX)      ;STORE CODE WFW\r
+        001340' 202444  777777          MOVEM   RC,-1(SX)       ;WFW\r
+        001341' 202200  013032'         MOVEM   SX,LITABX       ;SET POINTER TO CURRENT CELL\r
+        001342' 350000  013037'         AOS     LITNUM          ;INCREMENT NUMBER STORED\r
+        001343' 350000  013036'         AOS     LITCNT          ;INCREMENT NUMBER RESERVED\r
+        001344' 331000  013104'         SKIPL   STPX            ;ANY MORE CODE?\r
+        001345' 254000  001334'         JRST    STOL23          ;YES\r
+        001346' 321640  000446' STOL26: JUMP1   POPOUT          ;EXIT IF PASS ONE\r
+        001347' 200200  013035'         MOVE    SX,LITHDX       ;GET HEADER BLOCK\r
+        001350' 554444  777777          HLRZ    RC,-1(SX)       ;GET BLOCK RELOCATION\r
+        001351' 550004  777777          HRRZ    AC0,-1(SX)\r
+        001352' 271003  000000          ADDI    AC0,0(SDEL)     ;COMPUTE ACTUAL LOCATION\r
+        001353' 263740  000000          POPJ    PP,             ;EXIT\r
+\r
+\r\fMACRO V.10                     PAGE 31\r
+        INPUT ROUTINES\r
+\r
+                                SUBTTL  INPUT ROUTINES\r
+        001354' 260740  001406' GETCHR: PUSHJ   PP,CHARAC       ;GET ASCII CHARACTER\r
+        001355' 301340  000141          CAIL    C,"A"+40        ;CHECK FOR LOWER CASE\r
+        001356' 303340  000172          CAILE   C,"Z"+40\r
+        001357' 254000  001361'         JRST    .+2             ;NOT LOWER CASE\r
+        001360' 624340  000100          TRZA    C,100           ;CONVERT LOWER CASE TO SIXBIT\r
+        001361' 275340  000040          SUBI    C,40            ;CONVERT TO SIXBIT\r
+        001362' 307340  000077          CAIG    C,77            ;CHAR GREATER THAN SIXBIT?\r
+        001363' 325340  001375'         JUMPGE  C,GETCS         ;TEST FOR VALID SIXBIT\r
+        001364' 271340  000040          ADDI    C,40            ;BACK TO ASCII\r
+        001365' 306340  000011          CAIN    C,HT            ;CHECK FOR TAB\r
+        001366' 254000  001374'         JRST    GETCS2          ;MAKE IT LOOK LIKE SPACE\r
+        001367' 307340  000015          CAIG    C,CR            ;GREATER THAN CR\r
+        001370' 307340  000011          CAIG    C,HT            ;GREATER THAN TAB\r
+        001371' 254000  001377'         JRST    GETCS1          ;IS NOT FF,VT,LF OR CR\r
+        001372' 201340  000033          MOVEI   C,EOL           ;LINE OR FORM FEED OR V TAB\r
+        001373' 665600  000004          TLOA    IO,IORPTC       ;REPEAT CHARACTER\r
+        001374' 201340  000000  GETCS2: MOVEI   C,0             ;BUT TREAT AS BLANK\r
+        001375' 200407  001447' GETCS:  MOVE    CS,CSTAT(C)     ;GET STATUS BITS\r
+        001376' 263740  000000          POPJ    PP,             ;EXIT\r
+\r
+        001377' 322340  001375' GETCS1: JUMPE   C,GETCS         ;IGNORE NULS\r
+        001400' 640340  000100          TRC     C,100           ;MAKE CHAR. VISIBLE\r
+        001401' 201400  000136          MOVEI   CS,"^"\r
+        001402' 137400  013003'         DPB     CS,LBUFP        ;PUT ^ IN OUTPUT\r
+        001403' 260740  001414'         PUSHJ   PP,RSW2         ;ALSO MODIFIED CHAR.\r
+        001404' 660600  200000          TRO     ER,ERRQ         ;FLAG Q ERROR\r
+        001405' 254000  001354'         JRST    GETCHR          ;BUT IGNORE CHAR.\r
+\r\fMACRO V.10                     PAGE 32\r
+        INPUT ROUTINES\r
+\r
+\r
+        001406' 623600  000004  CHARAC: TLZE    IO,IORPTC       ;REPEAT REQUESTED?\r
+        001407' 254000  001434'         JRST    CHARAX          ;YES\r
+        001410' 326540  006300' RSW0:   JUMPN   MRP,MREAD       ;BRANCH IF TREE POINTER SET\r
+        001411' 260740  010221'         PUSHJ   PP,READ\r
+        001412' 332000  013350' RSW1:   SKIPE   RPOLVL          ;ARE WE IN "REPEAT ONCE"?\r
+        001413' 254000  005201'         JRST    REPO1           ;YES\r
+        001414' 200400  013002' RSW2:   MOVE    CS,LIMBO        ;GET LAST CHAR.\r
+        001415' 202340  013002'         MOVEM   C,LIMBO ;STORE THIS CHAR. FOR RPTC\r
+        001416' 306340  000012          CAIN    C,LF            ;LF?\r
+        001417' 302400  000015          CAIE    CS,CR           ;YES,LAST CHAR. A CR?\r
+        001420' 254000  001423'         JRST    RSW3            ;NO\r
+        001421' 563000  013002'         HRROS   LIMBO           ;YES,FLAG\r
+        001422' 263740  000000          POPJ    PP,             ;AND EXIT\r
+\r
+        001423' 603600  000001  RSW3:   TLNE    IO,IOSALL       ;MACRO SUPPRESS ALL?\r
+        001424' 326540  003360'         JUMPN   MRP,CPOPJ       ;YES,DON'T LIST IN MACRO\r
+        001425' 377000  013265'         SOSG    CPL             ;ANY ROOM IN THE IMAGE BUFFER?\r
+        001426' 260740  001650'         PUSHJ   PP,OUTPL        ;NO, OUTPUT THE PARTIAL LINE\r
+        001427' 136340  013003'         IDPB    C,LBUFP         ;YES, STORE IN PRINT AREA\r
+        001430' 302340  000011          CAIE    C,HT            ;TAB?\r
+        001431' 263740  000000          POPJ    PP,             ;NO, EXIT\r
+        001432' 201340  000007          MOVEI   C,7\r
+        001433' 412340  013265'         ANDCAM  C,CPL           ;MASK\r
+        001434' 550340  013002' CHARAX: HRRZ    C,LIMBO         ;GET LAST CHARACTER\r
+        001435' 263740  000000          POPJ    PP,             ;EXIT\r
+\r
+        001436' 260740  001406' CHARL:  PUSHJ   PP,CHARAC       ;GET AND TEST 7-BIT ASCII\r
+        001437' 307340  000014          CAIG    C,FF            ;LINE OR FORM FEED OR VT?\r
+        001440' 305340  000012          CAIGE   C,LF\r
+        001441' 263740  000000          POPJ    PP,             ;NO,EXIT\r
+        001442' 332000  013321'         SKIPE   LITLVL          ;IN LITERAL?\r
+        001443' 254000  002011'         JRST    OUTIML          ;YES\r
+        001444' 260740  007211' CHARL1: PUSHJ   PP,SAVEXS       ;SAVE REGISTERS\r
+        001445' 260740  001547'         PUSHJ   PP,OUTLIN       ;DUMP THE LINE\r
+        001446' 254000  007205'         JRST    RSTRXS          ;RESTORE REGISTERS AND EXIT\r
+\r\fMACRO V.10                     PAGE 33\r
+        CHARACTER STATUS TABLE\r
+\r
+                                SUBTTL  CHARACTER STATUS TABLE\r
+\r
+                                        DEFINE  GENCS   (OPLVL,ATOM,AN,SQUOZ,OPTYPE,SEQNO)\r
+                                <BYTE (6)OPLVL (9)ATOM (3)AN (6)SQUOZ,OPTYPE,SEQNO>\r
+\r
+                                        ;OPLVL  PRIORITY OF BINARY OPERATORS\r
+                                        ;ATOM   INDEX TO JUMP TABLE AT CELL1\r
+                                        ;AN     TYPE OF CHARACTER\r
+                                        ;       1=OTHER, 2=ALPHA, 4=NUMERIC\r
+                                        ;SQUOZ  VALUE IN RADIX 50\r
+                                        ;OPTYPE INDEX TO JUMP TABLE AT EVXCT\r
+                                        ;SEQNO  VALUE IN SIXBIT\r
+        001447'                 CSTAT:\r
+        001447' 000001  000000          GENCS   00,00,1,00,00,00        ; ' '\r
+        001450' 040121  000601          GENCS   04,12,1,00,06,01        ; '!'\r
+        001451' 000071  000002          GENCS   00,07,1,00,00,02        ; '"'\r
+        001452' 000121  000003          GENCS   00,12,1,00,00,03        ; '#'\r
+        001453' 000012  460004          GENCS   00,01,2,46,00,04        ; '$'\r
+        001454' 000012  470005          GENCS   00,01,2,47,00,05        ; '%'\r
+        001455' 040121  000706          GENCS   04,12,1,00,07,06        ; '&'\r
+        001456' 000071  000007          GENCS   00,07,1,00,00,07        ; '''\r
+\r
+        001457' 000011  000010          GENCS   00,01,1,00,00,10        ; '('\r
+        001460' 000011  000011          GENCS   00,01,1,00,00,11        ; ')'\r
+        001461' 020121  000112          GENCS   02,12,1,00,01,12        ; '*'\r
+        001462' 010001  000313          GENCS   01,00,1,00,03,13        ; '+'\r
+        001463' 400011  000014          GENCS   40,01,1,00,00,14        ; ','\r
+        001464' 010021  000415          GENCS   01,02,1,00,04,15        ; '-'\r
+        001465' 000112  450016          GENCS   00,11,2,45,00,16        ; '.'\r
+        001466' 020121  000217          GENCS   02,12,1,00,02,17        ; '/'\r
+\r
+        001467' 000044  010020          GENCS   00,04,4,01,00,20        ; '0'\r
+        001470' 000044  020021          GENCS   00,04,4,02,00,21        ; '1'\r
+        001471' 000044  030022          GENCS   00,04,4,03,00,22        ; '2'\r
+        001472' 000044  040023          GENCS   00,04,4,04,00,23        ; '3'\r
+        001473' 000044  050024          GENCS   00,04,4,05,00,24        ; '4'\r
+        001474' 000044  060025          GENCS   00,04,4,06,00,25        ; '5'\r
+        001475' 000044  070026          GENCS   00,04,4,07,00,26        ; '6'\r
+        001476' 000044  100027          GENCS   00,04,4,10,00,27        ; '7'\r
+\r
+        001477' 000044  110030          GENCS   00,04,4,11,00,30        ; '8'\r
+        001500' 000044  120031          GENCS   00,04,4,12,00,31        ; '9'\r
+        001501' 000121  000032          GENCS   00,12,1,00,00,32        ; ':'\r
+        001502' 000011  000033          GENCS   00,01,1,00,00,33        ; ';'\r
+        001503' 000051  000034          GENCS   00,05,1,00,00,34        ; '<'\r
+        001504' 000121  000035          GENCS   00,12,1,00,00,35        ; '='\r
+        001505' 000011  000036          GENCS   00,01,1,00,00,36        ; '>'\r
+        001506' 000121  000037          GENCS   00,12,1,00,00,37        ; '?'\r
+\r\fMACRO V.10                     PAGE 34\r
+        CHARACTER STATUS TABLE\r
+\r
+        001507' 000031  000040          GENCS   00,03,1,00,00,40        ; '@'\r
+        001510' 000012  130041          GENCS   00,01,2,13,00,41        ; 'A'\r
+        001511' 000012  140042          GENCS   00,01,2,14,00,42        ; 'B'\r
+        001512' 000012  150043          GENCS   00,01,2,15,00,43        ; 'C'\r
+        001513' 000012  160044          GENCS   00,01,2,16,00,44        ; 'D'\r
+        001514' 000012  170045          GENCS   00,01,2,17,00,45        ; 'E'\r
+        001515' 000012  200046          GENCS   00,01,2,20,00,46        ; 'F'\r
+        001516' 000012  210047          GENCS   00,01,2,21,00,47        ; 'G'\r
+\r
+        001517' 000012  220050          GENCS   00,01,2,22,00,50        ; 'H'\r
+        001520' 000012  230051          GENCS   00,01,2,23,00,51        ; 'I'\r
+        001521' 000012  240052          GENCS   00,01,2,24,00,52        ; 'J'\r
+        001522' 000012  250053          GENCS   00,01,2,25,00,53        ; 'K'\r
+        001523' 000012  260054          GENCS   00,01,2,26,00,54        ; 'L'\r
+        001524' 000012  270055          GENCS   00,01,2,27,00,55        ; 'M'\r
+        001525' 000012  300056          GENCS   00,01,2,30,00,56        ; 'N'\r
+        001526' 000012  310057          GENCS   00,01,2,31,00,57        ; 'O'\r
+\r
+        001527' 000012  320060          GENCS   00,01,2,32,00,60        ; 'P'\r
+        001530' 000012  330061          GENCS   00,01,2,33,00,61        ; 'Q'\r
+        001531' 000012  340062          GENCS   00,01,2,34,00,62        ; 'R'\r
+        001532' 000012  350063          GENCS   00,01,2,35,00,63        ; 'S'\r
+        001533' 000012  360064          GENCS   00,01,2,36,00,64        ; 'T'\r
+        001534' 000012  370065          GENCS   00,01,2,37,00,65        ; 'U'\r
+        001535' 000012  400066          GENCS   00,01,2,40,00,66        ; 'V'\r
+        001536' 000012  410067          GENCS   00,01,2,41,00,67        ; 'W'\r
+\r
+        001537' 000012  420070          GENCS   00,01,2,42,00,70        ; 'X'\r
+        001540' 000012  430071          GENCS   00,01,2,43,00,71        ; 'Y'\r
+        001541' 000012  440072          GENCS   00,01,2,44,00,72        ; 'Z'\r
+        001542' 000061  000073          GENCS   00,06,1,00,00,73        ; '['\r
+        001543' 000121  000074          GENCS   00,12,1,00,00,74        ; '\'\r
+        001544' 000011  000075          GENCS   00,01,1,00,00,75        ; ']'\r
+        001545' 000101  000076          GENCS   00,10,1,00,00,76        ; '^'\r
+        001546' 100121  000577          GENCS   10,12,1,00,05,77        ; '_'\r
+\r\fMACRO V.10                     PAGE 35\r
+        LISTING ROUTINES\r
+\r
+                                SUBTTL  LISTING ROUTINES\r
+\r
+        001547' 606600  577760  OUTLIN: TRNN    ER,ERRORS-ERRQ  ;ANY ERRORS?\r
+        001550' 603640  000010          TLNE    FR,ERRQSW       ;NO, IGNORE Q ERRORS?\r
+        001551' 620600  200000          TRZ     ER,ERRQ         ;YES, YES, ZERO THE Q ERROR\r
+        001552' 514000  000014          HRLZ    AC0,ER          ;PUT ERROR FLAGS IN AC0 LEFT\r
+        001553' 630600  013256'         TDZ     ER,TYPERR\r
+        001554' 321640  001665'         JUMP1   OUTL30          ;BRANCH IF PASS ONE\r
+        001555' 326000  001567'         JUMPN   AC0,OUTL02      ;JUMP IF ANY ERRORS TO FORCE PRINTING\r
+        001556' 331000  013104'         SKIPL   STPX            ;SKIP IF NO CODE, OTHERWISE\r
+        001557' 254000  001565'         JRST    OUTL01          ;NO\r
+        001560' 607600  000001          TLNN    IO,IOSALL       ;YES,SUPPRESS ALL?\r
+        001561' 254000  001566'         JRST    OUTL03          ;NO\r
+        001562' 326540  003360'         JUMPN   MRP,CPOPJ       ;YES,EXIT IF IN MACRO\r
+        001563' 135340  014106'         LDB     C,[XWD 350700,LBUF]\r
+        001564' 302340  000015          CAIE    C,15            ;FIRST CHAR CR?\r
+        001565' 621600  010000  OUTL01: TLZ     IO,IOMAC        ;FORCE MACRO PRINTING\r
+        001566' 607600  250000  OUTL03: TLNN    IO,IOMSTR!IOPROG!IOMAC\r
+        001567' 434600  013042' OUTL02: IOR     ER,OUTSW        ;FORCE IT.\r
+        001570' 136000  013003'         IDPB    AC0,LBUFP       ;STORE ZERO TERMINATOR AFTER ASCII SRC LINE\r
+        001571' 607640  002000          TLNN    FR,CREFSW       ;CREF?\r
+        001572' 260740  012274'         PUSHJ   PP,CLSCRF       ;YES, WRITE END OF CREF DATA (177,003)\r
+        001573' 322000  001577'         JUMPE   AC0,OUTL20      ;BRANCH IF NO ERRORS\r
+        001574' 623000  000020          TLZE    AC0,ERRM        ;M ERROR?\r
+        001575' 661000  000100          TLO     AC0,ERRP        ;M ERROR SET - SET P ERROR.\r
+        001576' 260740  001712'         PUSHJ   PP,OUTLER       ;PROCESS ERRORS\r
+\r
+        001577' 336440  013323' OUTL20: SKIPN   RC,ASGBLK\r
+        001600' 332400  013324'         SKIPE   CS,LOCBLK       ;\r
+        001601' 331000  013104'         SKIPL   STPX            ;ANY BINARY?\r
+        001602' 254000  001625'         JRST    OUTL23          ;YES, JUMP\r
+        001603' 322440  001621'         JUMPE   RC,OUTL22       ;SEQUENCE BREAK AND NO BINARY JUMPS\r
+        001604' 134340  013226'         ILDB    C,TABP          ;ASSIGNMENT FALLS THROUGH\r
+        001605' 260740  010325'         PUSHJ   PP,OUTL         ;OUTPUT A TAB.\r
+        001606' 134340  013226'         ILDB    C,TABP          ;OUTPUT 2ND TAB, LOCATION FIELD\r
+        001607' 260740  010377'         PUSHJ   PP,OUTC         ;NEXT IS BINARY LISTING FIELD\r
+        001610' 520400  013324'         HLLO    CS,LOCBLK       ;LEFT HALF OF A 36BIT VALUE\r
+        001611' 321440  001613'         JUMPL   RC,.+2          ;SKIP IF LEFT HALF IS NOT RELOC\r
+        001612' 624400  000001          TRZA    CS,1            ;IT IS, SET THE FLAG\r
+        001613' 603400  777777          TLNE    CS,-1           ;SKIP IF ITS A 18BIT VALUE, OTHERWISE\r
+        001614' 260740  002751'         PUSHJ PP,ONC1           ;PRINT LH OF A 36 BIT VALUE IN CS\r
+        001615' 524400  013324'         HRLO    CS,LOCBLK       ;PICK UP THE RIGHT HALF (18BIT VALUE)\r
+        001616' 620411  000000          TRZ     CS,0(RC)        ;\r
+        001617' 260740  002747'         PUSHJ   PP,ONC          ;PRINT IT\r
+        001620' 254000  001625'         JRST    OUTL23          ;SKIP SINGLE QUOTE TEST\r
+\r\fMACRO V.10                     PAGE 36\r
+        LISTING ROUTINES\r
+\r
+        001621' 260740  002747' OUTL22: PUSHJ   PP,ONC          ;TAB TO RH AND PRINT IT\r
+        001622' 201340  000047          MOVEI   C,"'"\r
+        001623' 332000  013332'         SKIPE   MODA\r
+        001624' 260740  010377'         PUSHJ   PP,OUTC\r
+        001625' 331000  013104' OUTL23: SKIPL   STPX            ;ANY BINARY?\r
+        001626' 260740  002434'         PUSHJ   PP,BOUT         ;YES, DUMP IT\r
+        001627' 200420  001774'         MOVE    CS,@OUTLI2      ;[POINT 7,LBUF]\r
+        001630' 134340  000010  OUTL24: ILDB    C,CS\r
+        001631' 322340  001636'         JUMPE   C,OUTL25\r
+        001632' 307340  000040          CAIG    C," "\r
+        001633' 254000  001630'         JRST    OUTL24\r
+        001634' 200400  013226'         MOVE    CS,TABP\r
+        001635' 260740  002775'         PUSHJ   PP,OUTASC       ;OUTPUT TABS\r
+        001636' 201400  013004' OUTL25: MOVEI   CS,LBUF\r
+        001637' 260740  002774'         PUSHJ   PP,OUTAS0       ;DUMP THE LINE\r
+        001640' 603600  000001          TLNE    IO,IOSALL       ;SUPPRESSING ALL\r
+        001641' 326540  001646'         JUMPN   MRP,OUTL27      ;YES,EXTRA CR IF IN MACRO\r
+        001642' 335000  013104' OUTL26: SKIPGE  STPX            ;ANY BINARY?\r
+        001643' 254000  001765'         JRST    OUTLI           ;NO, CLEAN UP AND EXIT\r
+        001644' 260740  001774'         PUSHJ   PP,OUTLI2       ;YES, INITIALIZE FOR NEXT LINE\r
+        001645' 260740  002434'         PUSHJ   PP,BOUT         ;YES, DUMP IT\r
+        001646' 260740  010316' OUTL27: PUSHJ   PP,OUTCR        ;OUTPUT CARRIAGE RETURN\r
+        001647' 254000  001642'         JRST    OUTL26          ;TEST FOR MORE BINARY\r
+\r
+        001650' 336000  013321' OUTPL:  SKIPN   LITLVL          ;IF IN LITERAL\r
+        001651' 331000  013104'         SKIPL   STPX            ;OR CODE GENERATED\r
+        001652' 254000  001737'         JRST    OUTIM           ;JUST OUTPUT THE IMAGE\r
+        001653' 336000  013323'         SKIPN   ASGBLK          ;SKIP IF AN ASSIGNMENT\r
+        001654' 254000  001737'         JRST    OUTIM           ;OTHERWISE OUTPUT IMAGE\r
+        001655' 261740  000007          PUSH    PP,C            ;SAVE CHAR.\r
+        001656' 201340  000015          MOVEI   C,CR\r
+        001657' 136340  013003'         IDPB    C,LBUFP\r
+        001660' 201340  000012          MOVEI   C,LF\r
+        001661' 136340  013003'         IDPB    C,LBUFP         ;FINISH WITH CRLF\r
+        001662' 260740  001547'         PUSHJ   PP,OUTLIN       ;OUTPUT PARTIAL LINE\r
+        001663' 262740  000007          POP     PP,C            ;RESTORE CHAR.\r
+        001664' 254000  001774'         JRST    OUTLI2          ;INITIALISE REST OF LINE\r
+\r\fMACRO V.10                     PAGE 37\r
+        LISTING ROUTINES\r
+\r
+        001665' 350400  013104' OUTL30: AOS     CS,STPX         ;PASS ONE\r
+        001666' 272400  013326'         ADDM    CS,LOCO         ;INCREMENT OUTPUT LOCATION\r
+        001667' 260740  002717'         PUSHJ   PP,STOWI        ;INITIALIZE STOW\r
+        001670' 621000  776640          TLZ     AC0,ERRORS-ERRM-ERRP-ERRV\r
+        001671' 326000  001675'         JUMPN   AC0,OUTL32      ;JUMP IF ERRORS\r
+        001672' 603600  000001          TLNE    IO,IOSALL       ;SUPPRESSING ALL/\r
+        001673' 326540  003360'         JUMPN   MRP,CPOPJ       ;YES,EXIT\r
+        001674' 254000  001773'         JRST    OUTLI1          ;NO,INIT LINE\r
+\r
+        001675' 136000  013003' OUTL32: IDPB    AC0,LBUFP       ;ZERO TERNIMATOR\r
+        001676' 434600  013042'         IOR     ER,OUTSW        ;LIST ERRORS\r
+        001677' 201400  012541'         MOVEI   CS,TAG\r
+        001700' 260740  003001'         PUSHJ   PP,OUTSIX       ;OUTPUT TAG\r
+        001701' 550340  013377'         HRRZ    C,TAGINC\r
+        001702' 260740  002765'         PUSHJ   PP,DNC          ;CONVERT INCREMENT TO DECIMAL\r
+        001703' 260740  010307'         PUSHJ   PP,OUTTAB       ;OUTPUT TAB\r
+        001704' 260740  001712'         PUSHJ   PP,OUTLER       ;OUTPUT ERROR FLAGS\r
+        001705' 260740  010307'         PUSHJ   PP,OUTTAB\r
+        001706' 201400  012544'         MOVEI   CS,SEQNO        ;ADDRESS OF SEQUENCE NO.\r
+        001707' 332000  012544'         SKIPE   SEQNO           ;FILE NOT SEQUENCED\r
+        001710' 260740  002774'         PUSHJ   PP,OUTAS0       ;OUTPUT IT\r
+        001711' 254000  001636'         JRST    OUTL25          ;OUTPUT BASIC LINE\r
+\r
+        001712' 261740  000014  OUTLER: PUSH PP,ER      ;SAVE LISTING SWITCHES FOR LATER\r
+        001713' 602600  000001          TRNE ER,TTYSW   ;IF THIS IS ON, LISTING IS ON TTY\r
+        001714' 620600  777760          TRZ ER,ERRORS   ;SO SUPPRESS ON TTY\r
+        001715' 630600  013042'         TDZ ER,OUTSW    ;BUT THIS SHOULD ONLY GO TO THE TTY\r
+        001716' 200400  012673'         MOVE CS,INDIR   ;GET FILE NAME\r
+        001717' 312400  012537'         CAME CS,LSTFIL  ;AND SEE IF SAME\r
+                                        JRST    [MOVEM CS,LSTFIL        ;SAVE AS LAST ONE\r
+                                                MOVEI CS,LSTFIL\r
+                                                PUSHJ PP,OUTSIX ;LIST NAME\r
+                                                MOVEI C," "\r
+                                                PUSHJ PP,OUTL\r
+                                                MOVE CS,PAGENO  ;PRINT PAGE NUMBER TOO\r
+        001720' 254000  014107'                 JRST OUTLE8]\r
+        001721' 200400  013414'         MOVE CS,PAGENO  ;NOW CHECK PAGE NUMBER\r
+        001722' 312400  013416'         CAME CS,LSTPGN\r
+                                OUTLE8: JRST    [MOVEM CS,LSTPGN\r
+                                                MOVEI CS,[ASCIZ /PAGE /]\r
+                                                PUSHJ PP,OUTAS0\r
+                                                MOVE C,PAGENO\r
+                                                PUSHJ PP,DNC\r
+                                                PUSHJ PP,OUTCR  ;AND NOW FOR THE ERROR LINE\r
+        001723' 254000  014120'                 JRST .+1]\r
+        001724' 502617  000000          HLLM ER,(PP)    ;RESTORE ER BUT NOT IO (LEFT HALF OF AC)\r
+        001725' 262740  000014          POP PP,ER\r
+        001726' 200400  014132'         MOVE    CS,[POINT 7,[ASCII / QXADLRUVNOPEM/]]\r
+        001727' 134340  000010  OUTLE2: ILDB    C,CS            ;GET ERROR MNEMONIC\r
+        001730' 325000  001733'         JUMPGE  AC0,OUTLE4      ;BRANCH IF NOT FLAGGED\r
+        001731' 260740  010325'         PUSHJ   PP,OUTL         ;OUTPUT THE CHARACTER\r
+        001732' 350000  012726'         AOS     ERRCNT          ;INCREMENT ERROR COUNT\r
+        001733' 242000  000001  OUTLE4: LSH     AC0,1           ;SHIFT NEXT FLAG INTO SIGN BIT\r
+\r\fMACRO V.10                     PAGE 38\r
+        LISTING ROUTINES\r
+\r
+        001734' 326000  001727'         JUMPN   AC0,OUTLE2      ;TEST FOR END\r
+        001735' 263740  000000          POPJ    PP,             ;EXIT\r
+\r\fMACRO V.10                     PAGE 39\r
+        LISTING ROUTINES\r
+\r
+        001736' 665640  000001  OUTIM1: TLOA    FR,IOSCR        ;SUPPRESS CRLF AFTER LINE\r
+        001737' 621640  000001  OUTIM:  TLZ     FR,IOSCR        ;DON'T FOR PARTIAL LINE\r
+        001740' 603600  000001          TLNE    IO,IOSALL       ;SUPPRESSING ALL?\r
+        001741' 326540  003360'         JUMPN   MRP,CPOPJ       ;YES ,EXIT IF IN MACRO\r
+        001742' 321640  001773'         JUMP1   OUTLI1          ;BYPASS IF PASS ONE\r
+        001743' 261740  000014          PUSH    PP,ER\r
+        001744' 630600  013256'         TDZ     ER,TYPERR\r
+        001745' 607600  250000          TLNN    IO,IOMSTR!IOPROG!IOMAC\r
+        001746' 434600  013042'         IOR     ER,OUTSW\r
+        001747' 261740  000007          PUSH    PP,C            ;OUTPUT IMAGE\r
+        001750' 607640  002000          TLNN    FR,CREFSW\r
+        001751' 260740  012274'         PUSHJ   PP,CLSCRF\r
+        001752' 200400  013226' OUTIM2: MOVE    CS,TABP\r
+        001753' 260740  002775'         PUSHJ   PP,OUTASC       ;OUTPUT TABS\r
+        001754' 136340  013003'         IDPB    C,LBUFP         ;STORE ZERO TERMINATOR\r
+        001755' 201400  013004'         MOVEI   CS,LBUF\r
+        001756' 260740  002774'         PUSHJ   PP,OUTAS0       ;OUTPUT THE IMAGE\r
+        001757' 627640  000001          TLZN    FR,IOSCR        ;CRLF SUPPRESS?\r
+        001760' 260740  010316'         PUSHJ   PP,OUTCR        ;NO,OUTPUT\r
+        001761' 262740  000007          POP     PP,C\r
+        001762' 502617  000000          HLLM    ER,0(PP)\r
+        001763' 262740  000014          POP     PP,ER\r
+        001764' 254000  001774'         JRST    OUTLI2\r
+\r
+        001765' 603600  000001  OUTLI:  TLNE    IO,IOSALL       ;SUPPRESSING ALL\r
+        001766' 326540  001772'         JUMPN   MRP,OUTLI3      ;YES,SET FLAG IN REPEATS ALSO\r
+        001767' 603600  004000          TLNE    IO,IOPALL       ;MACRO EXPANSION SUPRESS REQUESTED?\r
+        001770' 336000  013406'         SKIPN   MACLVL          ;YES, ARE WE IN MACRO?\r
+        001771' 625600  010000          TLZA    IO,IOMAC        ;NO, CLEAR MAC FLAG\r
+        001772' 661600  010000  OUTLI3: TLO     IO,IOMAC        ;YES, SET FLAG\r
+\r
+        001773' 620600  777763  OUTLI1: TRZ     ER,ERRORS!LPTSW!TTYSW\r
+        001774' 200400  014133' OUTLI2: MOVE    CS,[POINT 7,LBUF]       ;INITIALIZE BUFFERS\r
+        001775' 202400  013003'         MOVEM   CS,LBUFP\r
+        001776' 200400  014134'         MOVE    CS,[POINT 7,TABI,6]\r
+        001777' 202400  013226'         MOVEM   CS,TABP\r
+        002000' 201400  000130          MOVEI   CS,.CPL\r
+        002001' 202400  013265'         MOVEM   CS,CPL\r
+        002002' 205400  044000          MOVSI   CS,(ASCII /     /)\r
+        002003' 332000  012544'         SKIPE   SEQNO           ;HAVE WE SEQUENCE NUMBERS?\r
+        002004' 202400  012544'         MOVEM   CS,SEQNO        ;YES, STORE TAB IN CASE OF MACRO\r
+        002005' 202400  012545'         MOVEM   CS,SEQNO+1      ;STORE TAB AND TERMINATOR\r
+        002006' 402000  013323'         SETZM   ASGBLK\r
+        002007' 402000  013324'         SETZM   LOCBLK\r
+        002010' 263740  000000          POPJ    PP,\r
+\r\fMACRO V.10                     PAGE 40\r
+        LISTING ROUTINES\r
+\r
+        002011' 603600  000001  OUTIML: TLNE    IO,IOSALL       ;SUPPRESSING ALL?\r
+        002012' 326540  003360'         JUMPN   MRP,CPOPJ       ;YES,EXIT IF IN MACRO\r
+        002013' 606600  577760          TRNN ER,ERRORS-ERRQ     ;FOR LITERALS (MULIT-LINE) OUTPUT ERRORS\r
+        002014' 603640  000010          TLNE FR,ERRQSW\r
+        002015' 620600  200000          TRZ ER,ERRQ\r
+        002016' 514400  000014          HRLZ CS,ER\r
+        002017' 321640  002036'         JUMP1 OUTML1    ;CHECK PASS1 ERRORS\r
+        002020' 630600  013256'         TDZ ER,TYPERR\r
+        002021' 322400  001736'         JUMPE CS,OUTIM1\r
+        002022' 261740  014100'         PUSH PP,[0]     ;ERRORS SHOULD BE ZEROED\r
+        002023' 261740  000007          PUSH PP,C\r
+        002024' 261740  000000          PUSH    PP,AC0  ;SAVE AC0 IN CASE CALLED FROM ASCII\r
+        002025' 200000  000010          MOVE    AC0,CS  ;ERROR ROUTINE WANTS FLAGS IN AC0\r
+        002026' 434600  013042'         IOR ER,OUTSW\r
+        002027' 607640  002000          TLNN FR,CREFSW\r
+        002030' 260740  012274'         PUSHJ PP,CLSCRF ;FIX CREF\r
+        002031' 623000  000020          TLZE AC0,ERRM\r
+        002032' 661000  000100          TLO AC0,ERRP\r
+        002033' 260740  001712'         PUSHJ PP,OUTLER ;OUTPUT THEM\r
+        002034' 262740  000000          POP     PP,AC0\r
+        002035' 254000  001752'         JRST OUTIM2     ;AND LINE\r
+        \r
+        002036' 621400  776640  OUTML1: TLZ CS,ERRORS-ERRM-ERRP-ERRV\r
+        002037' 322400  001774'         JUMPE CS,OUTLI2 ;NONE\r
+        002040' 620600  001120          TRZ ER,ERRM!ERRP!ERRV\r
+        002041' 660600  010000          TRO ER,ERRL\r
+        002042' 261740  000014          PUSH PP,ER      ;SAVE\r
+        002043' 261740  000007          PUSH PP,C       ;SAVE THIS\r
+        002044' 261740  000000          PUSH    PP,AC0  ;AS ABOVE\r
+        002045' 200000  000010          MOVE    AC0,CS          ;...\r
+        002046' 630600  013256'         TDZ ER,TYPERR\r
+        002047' 434600  013042'         IOR ER,OUTSW\r
+        002050' 201400  012541'         MOVEI CS,TAG\r
+        002051' 260740  003001'         PUSHJ PP,OUTSIX\r
+        002052' 550340  013377'         HRRZ C,TAGINC\r
+        002053' 260740  002765'         PUSHJ PP,DNC\r
+        002054' 260740  010307'         PUSHJ PP,OUTTAB\r
+        002055' 260740  001712'         PUSHJ PP,OUTLER ;DO NOT FORGET ERRORS\r
+        002056' 260740  010307'         PUSHJ PP,OUTTAB\r
+        002057' 201400  013004'         MOVEI CS,LBUF   ;PRINT REST OF LINE\r
+        002060' 260740  002420'         PUSHJ PP,SOUT20\r
+        002061' 262740  000000          POP     PP,AC0\r
+        002062' 262740  000007          POP PP,C\r
+        002063' 262740  000014          POP PP,ER\r
+        002064' 254000  001774'         JRST OUTLI2\r
+\r\fMACRO V.10                     PAGE 41\r
+        OUTPUT ROUTINES\r
+\r
+                                SUBTTL  OUTPUT ROUTINES\r
+        002065' 260740  003025' UOUT:   PUSHJ   PP,LOOKUP       ;SET FOR TABLE SCAN\r
+        002066' 606240  004000          TRNN ARG,PNTF   ;WFW\r
+        002067' 606240  002000          TRNN    ARG,UNDF\r
+        002070' 254000  002107'         JRST    UOUT13          ;TEST FOR UNDF!EXTF!PNTF ON PASS2\r
+        002071' 325640  002113'         JUMP2   UOUT10\r
+        002072' 607600  000020          TLNN    IO,IOIOPF       ;ANY IOP'S SEEN\r
+        002073' 254000  002103'         JRST    UOUT12          ;NO,MAKE EXTERNAL\r
+        002074' 205400  777700          MOVSI   CS,PRMTBL-PRMEND;YES LOOKUP IN TABLE\r
+        002075' 312010  011720' UOUT1:  CAME    AC0,PRMTBL(CS)  ;HAVE WE A MATCH?\r
+        002076' 253400  002102'         AOBJN   CS,UOUT2        ;NO,INCREMENT AND JUMP\r
+        002077' 200250  011721'         MOVE    ARG,PRMTBL+1(CS);YES,GET VALUE\r
+        002100' 202244  000000          MOVEM   ARG,(SX)        ;UPDATE SYMBOL TABLE\r
+        002101' 263740  000000          POPJ    PP,             ;EXIT\r
+        002102' 253400  002075' UOUT2:  AOBJN   CS,UOUT1        ;TEST FOR END\r
+\r
+        002103' 260740  003726' UOUT12: PUSHJ   PP,EXTER2       ;MAKE IT EXTERNAL\r
+        002104' 205240  002000          MOVSI   ARG,UNDF        ;BUT PUT UNDF BACK ON\r
+        002105' 436244  000000          IORM    ARG,(SX)        ;SO MESSAGE WILL COME OUT\r
+        002106' 263740  000000          POPJ    PP,             ;GET NEXT SYMBOL\r
+\r
+        002107' 321640  003360' UOUT13: JUMP1   CPOPJ   ;RECYCLE ON PASS1\r
+        002110' 640240  007000          TRC ARG,UNDF!EXTF!PNTF  ;CHECK FOR ALL THREE ON\r
+        002111' 642240  007000          TRCE ARG,UNDF!EXTF!PNTF ;ARE THEY?\r
+        002112' 263740  000000          POPJ    PP,             ;NO, RECYCLE\r
+        002113' 260740  010316' UOUT10: PUSHJ PP,OUTCR\r
+        002114' 260740  003010'         PUSHJ   PP,OUTSYM       ;OUTPUT THE SYMBOL\r
+        002115' 201400  014135'         MOVEI   CS,[SIXBIT /UNASSIGNED, DEFINED AS IF EXTERNAL @/]\r
+        002116' 254000  003001'         JRST    OUTSIX          ;POPJ FOR NEXT SYMBOL\r
+\r
+        002117' 260740  002751' UOUT30: PUSHJ   PP,ONC1         ;OUTPUT THE LOCATION\r
+        002120' 254000  004146'         JRST    HIGHQ           ;EXIT THROUGH HIGHQ\r
+\r\fMACRO V.10                     PAGE 42\r
+        OUTPUT ROUTINES\r
+\r
+                                                                ;OUTPUT THE ENTRIES\r
+\r
+        002121' 201340  000000  EOUT:   MOVEI   C,0             ;INITIALIZE THE COUNT\r
+        002122' 200200  013102'         MOVE    SX,SYMBOL\r
+        002123' 200144  000000          MOVE    SDEL,0(SX)\r
+        002124' 361140  002132' EOUT1:  SOJL    SDEL,EOUT2      ;TEST FOR END\r
+        002125' 271200  000002          ADDI    SX,2\r
+        002126' 554244  000000          HLRZ    ARG,0(SX)\r
+        002127' 411240  400600          ANDCAI  ARG,SYMF!INTF!ENTF\r
+        002130' 326240  002124'         JUMPN   ARG,EOUT1       ;IF INVALID, DON'T COUNT\r
+        002131' 344340  002124'         AOJA    C,EOUT1         ;BUMP COUNT\r
+\r
+        002132' 505340  000004  EOUT2:  HRLI    C,4             ;BLOCK TYPE 4\r
+        002133' 260740  010122'         PUSHJ   PP,OUTBIN\r
+        002134' 403340  000005          SETZB   C,ARG\r
+        002135' 260740  010122'         PUSHJ   PP,OUTBIN\r
+        002136' 200200  013102'         MOVE    SX,SYMBOL\r
+        002137' 200144  000000          MOVE    SDEL,0(SX)\r
+        002140' 201300  000022          MOVEI   V,^D18\r
+\r
+        002141' 361140  000446' EOUT3:  SOJL    SDEL,POPOUT\r
+        002142' 271200  000002          ADDI    SX,2\r
+        002143' 554344  000000          HLRZ    C,0(SX)\r
+        002144' 411340  400600          ANDCAI  C,SYMF!INTF!ENTF\r
+        002145' 326340  002141'         JUMPN   C,EOUT3\r
+        002146' 365300  002151'         SOJGE   V,EOUT4         ;TEST END OF BLOCK\r
+        002147' 260740  010122'         PUSHJ   PP,OUTBIN\r
+        002150' 201300  000021          MOVEI   V,^D17  ;WFW\r
+        002151' 200004  777777  EOUT4:  MOVE    AC0,-1(SX)\r
+        002152' 260740  004677'         PUSHJ   PP,SQOZE\r
+        002153' 200340  000000          MOVE    C,AC0\r
+        002154' 260740  010122'         PUSHJ   PP,OUTBIN\r
+        002155' 254000  002141'         JRST    EOUT3\r
+\r\fMACRO V.10                     PAGE 43\r
+        OUTPUT ROUTINES\r
+\r
+                                                                ;OUTPUT THE SYMBOLS\r
+\r
+        002156' 336000  013257' SOUT:   SKIPN   IONSYM          ;SKIP IF NOSYM SEEN\r
+        002157' 606600  000003          TRNN    ER,LPTSW!TTYSW  ;A LISTING REQUIRED?\r
+        002160' 254000  002314'         JRST    SOUT1           ;NO\r
+        002161' 201000  014143'         MOVEI   [ASCIZ /SYMBOL TABLE/]\r
+        002162' 542000  013100'         HRRM    SUBTTX          ;SET NEW SUB-TITLE\r
+        002163' 260740  010417'         PUSHJ   PP,OUTFF        ;FORCE NEW PAGE\r
+        002164' 260740  002166'         PUSHJ PP,LOUT1          ;OUTPUT THEM\r
+        002165' 254000  002314'         JRST    SOUT1           ;NOW FOR BLOCK TYPE 2\r
+\r
+        002166' 260740  002263' LOUT1:  PUSHJ   PP,LLUKUP       ;SET FOR TABLE SCAN\r
+        002167' 606240  400000          TRNN    ARG,SYMF\r
+        002170' 606240  060000          TRNN    ARG,MACF!SYNF\r
+        002171' 634540  000013          TDZA    MRP,MRP         ;SKIP AND CLEAR MRP\r
+        002172' 263740  000000          POPJ    PP,             ;NO, TRY AGAIN\r
+        002173' 602240  000400          TRNE    ARG,INTF\r
+        002174' 201540  000001          MOVEI   MRP,1\r
+        002175' 602240  001000          TRNE    ARG,EXTF\r
+        002176' 211540  000001          MOVNI   MRP,1           ;MRP=-1 FOR EXTERNAL\r
+        002177' 602240  040000          TRNE    ARG,SYNF        ;SYNONYM?\r
+        002200' 321540  000446'         JUMPL   MRP,POPOUT      ;YES, DON'T OUTPUT IF EXTERNAL\r
+        002201' 602240  000004          TRNE ARG,SUPRBT         ;IF SUPRESSED\r
+                                ;       JUMPGE MRP,POPOUT       ;DO NOT OUTPUT UNLESS EXTERNAL\r
+        002202' 263740  000000          POPJ    PP,             ;DO NOT OUTPUT\r
+        002203' 350017  000000          AOS     (PP)            ;SET FOR SKIP RETURN IF SYMBOL IS PRINTED\r
+        002204' 325540  002211'         JUMPGE  MRP,LOUT10      ;BRANCH IF NOT EXTERNAL\r
+        002205' 554440  000006          HLRZ    RC,V            ;PUT POINTER/FLAGS IN RC\r
+        002206' 602440  777776          TRNE    RC,-2           ;POINTER?\r
+        002207' 204451  000000          MOVS    RC,0(RC)        ;YES\r
+        002210' 500300  000011          HLL     V,RC            ;STORE LEFT VALUE\r
+\r
+        002211' 261740  000011  LOUT10: PUSH PP,RC      ;SAVE FOR LATER\r
+        002212' 260740  003010'         PUSHJ   PP,OUTSYM       ;OUTPUT THE NAME\r
+        002213' 200457  000000          MOVE RC,(PP)    ;GET COPY\r
+        002214' 201040  000000          MOVEI   AC1,0\r
+        002215' 323540  002222'         JUMPLE  MRP,LOUT15      ;SET DEFFERRED BITS IF EXTERNAL\r
+        002216' 603440  777776          TLNE    RC,-2           ;CHECK FOR LEFT FIXUP\r
+        002217' 435040  000040          IORI    AC1,40          ;AND SET BITS\r
+        002220' 602440  777776          TRNE    RC,-2           ;CHECK FOR RIGHT FIXUP\r
+        002221' 435040  000020          IORI    AC1,20          ;AND SET BITS\r
+        002222' 603440  777776  LOUT15: TLNE RC,-2      ;FIX RELOC AS 0 IF EXTERNAL\r
+        002223' 553000  000011          HRRZS RC\r
+        002224' 602440  777776          TRNE RC,-2\r
+        002225' 513000  000011          HLLZS RC\r
+        002226' 623440  777777          TLZE RC,-1\r
+        002227' 660440  000002          TRO RC,2\r
+        002230' 504540  000011          HRL MRP,RC\r
+        002231' 201440  000000          MOVEI RC,0\r
+        002232' 602240  000200          TRNE    ARG,ENTF        ;ENTRY DMN\r
+        002233' 541540  777773          HRRI    MRP,-5\r
+        002234' 602240  100000          TRNE ARG,NOOUTF         ;SUPRESS OUTPUT? WFW\r
+        002235' 271540  000003          ADDI MRP,3              ;YES WFW\r
+\r\fMACRO V.10                     PAGE 43-1\r
+        OUTPUT ROUTINES\r
+\r
+        002236' 602240  002000          TRNE    ARG,UNDF        ;UNDEFINED IS EXTERNAL\r
+        002237' 541540  000002          HRRI    MRP,2           ;SO FLAG AS UXT\r
+        002240' 434053  002427'         IOR     AC1,SOUTC(MRP)\r
+        002241' 200240  000001          MOVE ARG,AC1\r
+        002242' 202000  013101'         MOVEM AC0,SVSYM         ;SAVE IT\r
+        002243' 200000  000006          MOVE    AC0,V           ;GET THE VALUE\r
+        002244' 554440  000013          HLRZ    RC,MRP          ;AND THE RELOCATION\r
+        002245' 520400  000006          HLLO    CS,V\r
+        002246' 602440  000002          TRNE    RC,2            ;LEFT HALF RELOCATABLE?\r
+        002247' 624400  000001          TRZA    CS,1            ;NO, FLAG AND PRINT\r
+        002250' 603400  777777          TLNE    CS,-1           ;IS THE LEFT HALF ZERO?\r
+        002251' 260740  002751'         PUSHJ   PP,ONC1         ;NO, OUTPUT IT\r
+        002252' 260740  010307' LOUT11: PUSHJ   PP,OUTTAB\r
+        002253' 524400  000006  LOUT30: HRLO    CS,V\r
+        002254' 630400  000011          TDZ     CS,RC           ;SET RELOCATION\r
+        002255' 260740  002751'         PUSHJ   PP,ONC1\r
+        002256' 260740  010307'         PUSHJ   PP,OUTTAB\r
+        002257' 262740  000011          POP PP,RC               ;GET BACK RELOC AND CHECK EXTERNAL\r
+        002260' 201413  002427' LOUT60: MOVEI   CS,SOUTC(MRP)\r
+        002261' 260740  002774'         PUSHJ   PP,OUTAS0       ;EXT/INT\r
+        002262' 254000  010316' LOUT64: JRST    OUTCR           ;CARRIAGE RETURN AND TRY FOR ANOTHER\r
+\r
+\r
+\r\fMACRO V.10                     PAGE 44\r
+        OUTPUT ROUTINES\r
+\r
+                                        SYN IFBLK,SYMBLK        ;SOMEWHERE TO STORE THE POINTERS\r
+\r
+        002263' 262740  013040' LLUKUP: POP     PP,LOOKX        ;INTERCEPT RETURN POP\r
+        002264' 200200  013102'         MOVE    SX,SYMBOL\r
+        002265' 200144  000000          MOVE    SDEL,(SX)\r
+        002266' 271200  000002          ADDI    SX,2            ;SKIP COUNT OF SYMBOLS\r
+        002267' 202200  012730' LLUKP2: MOVEM   SX,SYMBLK       ;STORE SYMBOL POINTER IN TABLE\r
+        002270' 550200  012730'         HRRZ    SX,SYMBLK\r
+        002271' 254000  002300'         JRST    LLUKP7          ;ENTER LOOP\r
+\r
+        002272' 202200  012730' LLUKP1: MOVEM   SX,SYMBLK       ;SAVE IT \r
+        002273' 200004  777777          MOVE    AC0,-1(SX)\r
+        002274' 260740  012340'         PUSHJ   PP,SRCH7\r
+        002275' 557000  000005          HLRZS   ARG\r
+        002276' 260760  013040'         PUSHJ   PP,@LOOKX\r
+                                        JRST    [MOVEM SX,SYMBLK\r
+        002277' 254000  014146'                 JRST    .+1]\r
+        002300' 361140  000446' LLUKP7: SOJL    SDEL,POPOUT     ;TEST FOR END\r
+        002301' 200200  012730' LLUKP3: MOVE    SX,SYMBLK       ;GET NEXT POINTER\r
+        002302' 252200  002311'         AOBJP   SX,LLUKP4\r
+        002303' 550300  000004          HRRZ    V,SX\r
+        002304' 317300  013103'         CAMG    V,SYMTOP\r
+        002305' 344200  002272'         AOJA    SX,LLUKP1\r
+        002306' 260740  002262' LLUKP6: PUSHJ   PP,LOUT64       ;RESET SYMCNT\r
+        002307' 322140  000446'         JUMPE   SDEL,POPOUT     ;EXIT IF ALL DONE\r
+        002310' 254000  002301'         JRST    LLUKP3\r
+\r
+        002311' 340200  000000  LLUKP4: AOJ     SX,\r
+        002312' 202200  012730'         MOVEM   SX,SYMBLK\r
+        002313' 254000  002301'         JRST    LLUKP3\r
+\r\fMACRO V.10                     PAGE 45\r
+        OUTPUT ROUTINES\r
+\r
+        002314' 260740  003025' SOUT1:  PUSHJ   PP,LOOKUP       ;SET FOR TABLE SCAN\r
+        002315' 606240  400000          TRNN    ARG,SYMF\r
+        002316' 606240  060000          TRNN    ARG,MACF!SYNF\r
+        002317' 634540  000013          TDZA    MRP,MRP         ;SKIP AND CLEAR MRP\r
+        002320' 263740  000000          POPJ    PP,             ;NO, TRY AGAIN\r
+        002321' 602240  000400          TRNE    ARG,INTF\r
+        002322' 201540  000001          MOVEI   MRP,1\r
+        002323' 602240  001000          TRNE    ARG,EXTF\r
+        002324' 211540  000001          MOVNI   MRP,1           ;MRP=-1 FOR EXTERNAL\r
+        002325' 602240  040000          TRNE    ARG,SYNF        ;SYNONYM?\r
+        002326' 321540  000446'         JUMPL   MRP,POPOUT      ;YES, DON'T OUTPUT IF EXTERNAL\r
+        002327' 602240  000004          TRNE ARG,SUPRBT         ;IF SUPRESSED\r
+                                ;       JUMPGE MRP,POPOUT       ;DO NOT OUTPUT UNLESS EXTERNAL\r
+        002330' 263740  000000          POPJ    PP,             ;DO NOT OUTPUT\r
+        002331' 325540  002336'         JUMPGE  MRP,SOUT10      ;BRANCH IF NOT EXTERNAL\r
+        002332' 554440  000006          HLRZ    RC,V            ;PUT POINTER/FLAGS IN RC\r
+        002333' 602440  777776          TRNE    RC,-2           ;POINTER?\r
+        002334' 204451  000000          MOVS    RC,0(RC)        ;YES\r
+        002335' 500300  000011          HLL     V,RC            ;STORE LEFT VALUE\r
+\r
+        002336' 261740  000011  SOUT10: PUSH PP,RC      ;SAVE FOR LATER\r
+        002337' 201040  000000          MOVEI   AC1,0\r
+        002340' 323540  002345'         JUMPLE  MRP,SOUT15      ;SET DEFFERRED BITS IF EXTERNAL\r
+        002341' 603440  777776          TLNE    RC,-2           ;CHECK FOR LEFT FIXUP\r
+        002342' 435040  000040          IORI    AC1,40          ;AND SET BITS\r
+        002343' 602440  777776          TRNE    RC,-2           ;CHECK FOR RIGHT FIXUP\r
+        002344' 435040  000020          IORI    AC1,20          ;AND SET BITS\r
+        002345' 603440  777776  SOUT15: TLNE RC,-2      ;FIX RELOC AS 0 IF EXTERNAL\r
+        002346' 553000  000011          HRRZS RC\r
+        002347' 602440  777776          TRNE RC,-2\r
+        002350' 513000  000011          HLLZS RC\r
+        002351' 623440  777777          TLZE RC,-1\r
+        002352' 660440  000002          TRO RC,2\r
+        002353' 504540  000011          HRL MRP,RC\r
+        002354' 201440  000000          MOVEI RC,0\r
+        002355' 602240  000200          TRNE    ARG,ENTF        ;ENTRY DMN\r
+        002356' 541540  777773          HRRI    MRP,-5\r
+        002357' 602240  100000          TRNE ARG,NOOUTF         ;SUPRESS OUTPUT? WFW\r
+        002360' 271540  000003          ADDI MRP,3              ;YES WFW\r
+        002361' 434053  002427'         IOR     AC1,SOUTC(MRP)\r
+        002362' 200240  000001          MOVE ARG,AC1\r
+        002363' 260740  002624'         PUSHJ   PP,NOUT2        ;SQUOZE AND DUMP THE SYMBOL\r
+        002364' 202000  013101'         MOVEM AC0,SVSYM         ;SAVE IT\r
+        002365' 200000  000006          MOVE    AC0,V           ;GET THE VALUE\r
+        002366' 554440  000013          HLRZ    RC,MRP          ;AND THE RELOCATION\r
+        002367' 260740  002640'         PUSHJ   PP,COUT\r
+        002370' 262740  000011          POP PP,RC               ;GET BACK RELOC AND CHECK EXTERNAL\r
+        002371' 606440  777776          TRNN RC,-2              ;IS IT?\r
+        002372' 254000  002404'         JRST SOUT50             ;NO\r
+        002373' 200011  000001          MOVE AC0,1(RC)          ;GET NAME\r
+        002374' 201240  000060          MOVEI ARG,60            ;EXTERNAL REQ\r
+        002375' 260740  004677'         PUSHJ PP,SQOZE\r
+        002376' 513000  000011          HLLZS RC        ;NO RELOC\r
+\r\fMACRO V.10                     PAGE 45-1\r
+        OUTPUT ROUTINES\r
+\r
+        002377' 260740  002640'         PUSHJ PP,COUT   ;OUTPUT IT\r
+        002400' 200000  013101'         MOVE AC0,SVSYM  ;GET SYMBOL NAME\r
+        002401' 661000  500000          TLO AC0,500000  ;SET AS ADDITIVE SYMBOL\r
+        002402' 621000  200000          TLZ AC0,200000  ;BUT NOT LEFT HALF ETC\r
+        002403' 260740  002640'         PUSHJ PP,COUT\r
+        002404' 207000  000011  SOUT50: MOVSS RC        ;CHECK LEFT HALF\r
+        002405' 606440  777776          TRNN RC,-2\r
+        002406' 254000  002417'         JRST SOUT60\r
+        002407' 200011  000001          MOVE AC0,1(RC)\r
+        002410' 201240  000060          MOVEI ARG,60\r
+        002411' 260740  004677'         PUSHJ PP,SQOZE\r
+        002412' 201440  000000          MOVEI RC,0\r
+        002413' 260740  002640'         PUSHJ PP,COUT\r
+        002414' 200000  013101'         MOVE AC0,SVSYM\r
+        002415' 661000  700000          TLO AC0,700000\r
+        002416' 260740  002640'         PUSHJ PP,COUT\r
+        002417' 263740  000000  SOUT60: POPJ    PP,\r
+\r
+        002420' 260740  002774' SOUT20: PUSHJ PP,OUTAS0\r
+        002421' 254000  010316'         JRST OUTCR\r
+\r
+        002422' 426352  400004          <ASCII /ENT/>!04        ;DMN\r
+        002423' 000000  000000          Z\r
+        002424' 000000  000000          Z\r
+        002425' 516131  600044          <ASCII /SEN/>!44        ;SUPRESSED ENTRY\r
+        002426' 426612  400060          <ASCII /EXT/>!60\r
+        002427' 000000  000010  SOUTC:  EXP     10\r
+        002430' 446352  400004          <ASCII /INT/>!04\r
+        002431' 526612  400060          <ASCII /UXT/>!60        ;UNDEFINED EXTERNAL\r
+        002432' 516410  400050          <ASCII /SPD/>!50\r
+        002433' 516231  600044          <ASCII /SIN/>!44        ;DMN\r
+\r\fMACRO V.10                     PAGE 46\r
+        OUTPUT ROUTINES\r
+\r
+                                                                ;OUTPUT THE BINARY\r
+\r
+        002434' 524400  013326' BOUT:   HRLO    CS,LOCO         ;PICKUP THE LOCATION\r
+        002435' 260740  002747'         PUSHJ   PP,ONC          ;OUTPUT IT TO THE LISTING FILE\r
+        002436' 201340  000047          MOVEI   C,"'"\r
+        002437' 332000  013334'         SKIPE   MODO            ;IF MODE IS NOT ABSOLUTE\r
+        002440' 260740  010377'         PUSHJ   PP,OUTC         ;PRINT A SINGLE QUOTE\r
+        002441' 260740  002712'         PUSHJ   PP,DSTOW        ;GET THE CODE\r
+        002442' 261740  000011          PUSH PP,RC      ;SAVE RELOC\r
+        002443' 261740  000011          PUSH    PP,RC   ;AND AGAIN\r
+        002444' 603440  777776          TLNE RC,-2      ;CHECK LEFT EXTERNAL\r
+        002445' 553000  000011          HRRZS RC        ;MAKE LEFT NON-RELOC\r
+        002446' 606440  777776          TRNN RC,-2      ;RIGHT EXT?\r
+        002447' 254000  002470'         JRST BOUT30     ;NO\r
+        002450' 550040  000000          HRRZ AC1,AC0    ;YES\r
+        002451' 322040  002454'         JUMPE AC1,BOUT20        ;PROCESS IF ZERO CODE THERE\r
+        002452' 513000  000011          HLLZS RC        ;MAKE NON-RELOC\r
+        002453' 254000  002470'         JRST BOUT30     ;PROCESS\r
+\r
+\r\fMACRO V.10                     PAGE 47\r
+        OUTPUT ROUTINES\r
+\r
+        002454'                 BOUT20:\r
+        002454' 542057  777777          HRRM AC1,-1(PP) ;FIX RC IN STACK SO NO CONFUSION WFW (AC1 HAS 0)\r
+        002455' 540011  000000          HRR     AC0,0(RC)       ;NO, SET ADDRESS LINK\r
+        002456' 200040  013326'         MOVE    AC1,LOCO        ;GET CURRENT LOCATION\r
+        002457' 542051  000000          HRRM    AC1,0(RC)       ;SET NEW LINK\r
+        002460' 554051  000000          HLRZ    AC1,0(RC)       ;GET FLAGS/POINTER\r
+        002461' 606040  777776          TRNN    AC1,-2          ;POINTER?\r
+        002462' 540040  000011          HRR     AC1,RC          ;NO, SET TO FLAGS\r
+        002463' 544441  000000          HLR     RC,0(AC1)       ;PUT FLAGS IN RC\r
+        002464' 504040  013334'         HRL     AC1,MODO        ;GET CURRENT MODE\r
+        002465' 622440  777776          TRZE    RC,-2           ;LEFT HALF RELOCATABLE+\r
+        002466' 661040  000002          TLO     AC1,2           ;YES, SET FLAG\r
+        002467' 502041  000000          HLLM    AC1,0(AC1)      ;STORE NEW FLAGS\r
+        002470' 520400  000000  BOUT30: HLLO    CS,AC0\r
+        002471' 623440  000001          TLZE    RC,1            ;PACK RELOCATION BITS\r
+        002472' 660440  000002          TRO     RC,2\r
+        002473' 602440  000002          TRNE    RC,2            ;LEFT HALF RELOCATABLE?\r
+        002474' 620400  000001          TRZ     CS,1            ;YES, RESET BIT\r
+        002475' 261740  000000          PUSH    PP,AC0          ;NEED AN AC\r
+        002476' 554017  777777          HLRZ    AC0,-1(PP)      ;AC0 = LEFT RELOCATION\r
+        002477' 303000  000001          CAILE   AC0,1           ;EXTERNAL?\r
+        002500' 431400  001001          XORI    CS,EXTF!1       ;YES, SET SWITCH\r
+\r\fMACRO V.10                     PAGE 48\r
+        OUTPUT ROUTINES\r
+\r
+        002501' 262740  000000          POP     PP,AC0          ;RESTORE\r
+        002502' 260740  002747'         PUSHJ   PP,ONC\r
+        002503' 524400  000000          HRLO    CS,AC0\r
+        002504' 630400  000011          TDZ     CS,RC           ;SET RELOCATION\r
+        002505' 550357  000000          HRRZ    C,(PP)          ;C = RIGHT RELOCATION\r
+        002506' 303340  000001          CAILE   C,1             ;EXTERNAL\r
+        002507' 431400  001001          XORI    CS,EXTF!1       ;YES, SET SWITCH\r
+        002510' 260740  002747'         PUSHJ   PP,ONC\r
+        002511' 262740  000010  BOUT3I: POP     PP,CS           ;GET RID OF ENTRY ON STACK\r
+        002512' 550400  013326'         HRRZ    CS,LOCO\r
+        002513' 603640  004500          TLNE    FR,RIMSW!RIM1SW!R1BSW   ;RIM OUTPUT?\r
+        002514' 254000  010076'         JRST    ROUT            ;YES, GO PROCESS\r
+\r
+        002515' 504400  013334'         HRL     CS,MODO\r
+        002516' 312400  013333'         CAME    CS,MODLOC       ;SEQUENCE OR RELOCATION BREAK?\r
+        002517' 260740  002645'         PUSHJ   PP,COUTD        ;YES, DUMP THE BUFFER\r
+        002520' 331000  012700'         SKIPL   COUTX           ;NEW BUFFER?\r
+        002521' 254000  002530'         JRST    BOUT40          ;NO, STORE CODE AND EXIT\r
+        002522' 202400  013333'         MOVEM   CS,MODLOC       ;YES, STORE NEW VALUES\r
+        002523' 250000  013326'         EXCH    AC0,LOCO\r
+        002524' 250440  013334'         EXCH    RC,MODO\r
+        002525' 260740  002640'         PUSHJ   PP,COUT         ;STORE BLOCK LOCATION AND MODE\r
+        002526' 250440  013334'         EXCH    RC,MODO         ;RESTORE CURRENT VALUES\r
+        002527' 250000  013326'         EXCH    AC0,LOCO\r
+\r
+\r\fMACRO V.10                     PAGE 49\r
+        OUTPUT ROUTINES\r
+\r
+        002530' 260740  002640' BOUT40: PUSHJ PP,COUT   ;EMIT CODE\r
+        002531' 262740  000011          POP PP,RC       ;RETRIEVE EXTERNAL BITS\r
+        002532' 606440  777776          TRNN RC,-2      ;RIGHT EXTERNAL?\r
+        002533' 254000  002555'         JRST BOUT50     ;TRY FOR LEFT\r
+        002534' 260740  002645'         PUSHJ PP,COUTD\r
+        002535' 261740  012677'         PUSH PP,BLKTYP  ;TERMINATE TYPE AND SAVE\r
+        002536' 201000  000002          MOVEI AC0,2     ;BLOCK TYPE 2\r
+        002537' 202000  012677'         MOVEM AC0,BLKTYP\r
+        002540' 200011  000001          MOVE AC0,1(RC)  ;GET SYMBOL\r
+        002541' 201240  000060          MOVEI ARG,60    ;CODE BITS\r
+        002542' 260740  004677'         PUSHJ PP,SQOZE  ;CONVERT TO RADIX 50\r
+        002543' 513000  000011          HLLZS RC        ;SYMBOL HAS NO RELOCATION\r
+        002544' 260740  002640'         PUSHJ PP,COUT   ;EMIT\r
+        002545' 200000  013326'         MOVE AC0,LOCO   ;GET CURRENT LOC\r
+        002546' 505000  400000          HRLI AC0,400000 ;ADDITIVE REQ\r
+        002547' 540440  013334'         HRR RC,MODO     ;CURRENT MODE\r
+        002550' 260740  002640'         PUSHJ PP,COUT   ;EMIT\r
+        002551' 207000  000011          MOVSS RC        ;NOW FOR LEFT\r
+        002552' 606440  777776          TRNN RC,-2\r
+        002553' 254000  002575'         JRST BOUT60\r
+        002554' 254000  002564'         JRST BOUT70\r
+        002555' 207000  000011  BOUT50: MOVSS RC        ;CHECK OTHER HALF\r
+        002556' 606440  777776          TRNN RC,-2              ;LEFT HALF EXTERNAL?\r
+        002557' 254000  002577'         JRST BOUT80     ;NO, FALSE ALARM\r
+        002560' 260740  002645'         PUSHJ PP,COUTD  ;CHANGE MODE\r
+        002561' 261740  012677'         PUSH PP,BLKTYP\r
+        002562' 201000  000002          MOVEI AC0,2\r
+        002563' 202000  012677'         MOVEM AC0,BLKTYP\r
+        002564' 200011  000001  BOUT70: MOVE AC0,1(RC)\r
+        002565' 201240  000060          MOVEI ARG,60\r
+        002566' 260740  004677'         PUSHJ PP,SQOZE\r
+        002567' 513000  000011          HLLZS RC\r
+        002570' 260740  002640'         PUSHJ PP,COUT\r
+        002571' 200000  013326'         MOVE AC0,LOCO\r
+        002572' 505000  600000          HRLI AC0,600000 ;LEFT HALF ADD\r
+        002573' 540440  013334'         HRR RC,MODO\r
+        002574' 260740  002640'         PUSHJ PP,COUT   ;EMIT\r
+        002575' 260740  002645' BOUT60: PUSHJ PP,COUTD  ;CHANGE MODE\r
+        002576' 262740  012677'         POP PP,BLKTYP   ;TO OLD ONE\r
+        002577' 350000  013326' BOUT80: AOS LOCO\r
+        002600' 350000  013333'         AOS MODLOC\r
+        002601' 263740  000000          POPJ PP,\r
+\r
+\r\fMACRO V.10                     PAGE 50\r
+        OUTPUT ROUTINES\r
+\r
+        002602' 200300  014150' NOUT:   MOVE    V,[POINT 7,TBUF]        ;POINTER TO ASCII LINE\r
+        002603' 205400  440600          MOVSI   CS,(POINT 6,AC0)        ;POINTER TO SIXBIT AC0\r
+        002604' 403240  000000          SETZB   ARG,AC0\r
+        002605' 134340  000006  NOUT1:  ILDB    C,V             ;GET ASCII\r
+        002606' 301340  000141          CAIL C,"A"+40\r
+        002607' 303340  000172          CAILE C,"Z"+40\r
+        002610' 254000  002612'         JRST    .+2\r
+        002611' 624340  000100          TRZA    C,100           ;LOWER CASE TO SIXBIT\r
+        002612' 275340  000040          SUBI    C,40            ;CONVERT TO SIXBIT\r
+        002613' 323340  002621'         JUMPLE  C,NOUT3         ;TEST FORM NON-SIXBIT\r
+        002614' 303340  000077          CAILE   C,77            ;AND NOT GREATER THAN SIXBIT\r
+        002615' 254000  002621'         JRST    NOUT3           ;...\r
+        002616' 136340  000010          IDPB    C,CS            ;DEPOSIT IN AC0\r
+        002617' 603400  770000          TLNE    CS,770000       ;TEST FOR SIX CHARACTERS\r
+        002620' 254000  002605'         JRST    NOUT1           ;NO, GET ANOTHER\r
+        002621'                 NOUT3:\r
+                                IFN UNIVR,<SKIPGE       UNIVSN          ;IF A UNIVERSAL PROG>\r
+        002621' 263740  000000          POPJ    PP,             ;RETURN TO PUT IT IN THE TABLE\r
+\r
+        002622' 607600  000002  IFN CCLSW,<     TLNN IO,IOTLSN  ;AND IF WE HAVE NOT SEEN A TITLE\r
+        002623' 260740  004235'         PUSHJ PP,PRNAM  ;THEN PRINT THE NAME>\r
+        002624' 260740  004677' NOUT2:  PUSHJ   PP,SQOZE        ;CONVERT TO SIXBIT\r
+        002625' 254000  002640'         JRST    COUT            ;DUMP AND EXIT\r
+\r
+        002626'                 HOUT:\r
+        002626' 201440  000001          MOVEI   RC,1            ;RELOCATABLE\r
+                                IFN RENTSW,<\r
+                                        MOVE    AC0,HHIGH       ;GET HIGH SEG IF TWO SEGMENTS\r
+                                        JUMPE   AC0,.+2         ;NOT TWO SEGMENTS\r
+                                        PUSHJ   PP,COUT         ;OUTPUT IT >\r
+        002627' 200000  013263'         MOVE    AC0,HIGH\r
+                                IFN RENTSW,<\r
+                                        SKIPE   HHIGH           ;ANY TWOSEG HIGH STUFF\r
+                                        JRST    COUT            ;YES,SO NO ABS.>\r
+        002630' 260740  002640'         PUSHJ   PP,COUT         ;OUTPUT THE HIGHEST LOCATION\r
+        002631' 200000  013262'         MOVE AC0,ABSHI\r
+                                                                ;PUT OUT ABS PORTION OF PROGRAM BREAK\r
+        002632' 364440  002640'         SOJA    RC,COUT         ;OUTPUT A WORD OF ZERO AND EXIT\r
+\r
+\r\fMACRO V.10                     PAGE 51\r
+        OUTPUT ROUTINES\r
+\r
+                                IFN RENTSW,<\r
+                                HSOUT:  SETZM   HISNSW          ;CLEAR FOR PASS2\r
+                                        MOVE    AC0,SVTYP3      ;GET HISEG ARG\r
+                                        JUMPGE  AC0,.+4         ;JUMP IF ONLY HISEG\r
+                                        HRL     AC0,HIGH1       ;GET BREAK FROM PASS 1\r
+                                        JUMPL   AC0,.+2         ;OK IF GREATER THAN 400000\r
+                                        HRLS    AC0             ;SIGNAL TWO SEGMENT TO LOADER\r
+                                        MOVEI   RC,1            ;ASSUME RELOCATABLE\r
+                                        JRST    COUT            ;OUTPUT THE WORD>\r
+\r
+        002633' 336440  013400' VOUT:   SKIPN   RC,VECREL       ;IS VECTOR ABSOLUTE ZERO?\r
+        002634' 332000  013401'         SKIPE   VECTOR          ;ALSO CHECK RELOCATION\r
+        002635' 254000  002637'         JRST    .+2\r
+        002636' 263740  000000          POPJ    PP,             ;YES, EXIT\r
+        002637' 200000  013401'         MOVE    AC0,VECTOR      ;AC0 SHOULD BE FLAGS\r
+\r
+        002640' 350340  012700' COUT:   AOS     C,COUTX         ;INCREMENT INDEX\r
+        002641' 202007  012704'         MOVEM   AC0,COUTDB(C)   ;STORE CODE\r
+        002642' 136440  012702'         IDPB    RC,COUTP        ;STORE RELOCATION BITS\r
+        002643' 302340  000021          CAIE    C,^D17          ;IS THE BUFFER FULL?\r
+        002644' 263740  000000          POPJ    PP,             ;NO, EXIT\r
+\r
+        002645' 357340  012700' COUTD:  AOSG    C,COUTX         ;DUMP THE BUFFER\r
+        002646' 254000  002657'         JRST    COUTI           ;BUFFER WAS EMPTY\r
+        002647' 504340  012677'         HRL     C,BLKTYP        ;SET BLOCK TYPE\r
+        002650' 260740  010122'         PUSHJ   PP,OUTBIN       ;OUTPUT COUNT AND TYPE\r
+        002651' 477340  012701'         SETOB   C,COUTY         ;INITIALIZE INDEX\r
+\r
+        002652' 200347  012704' COUTD2: MOVE    C,COUTDB(C)     ;GET RELOCATION BITS/CODE\r
+        002653' 260740  010122'         PUSHJ   PP,OUTBIN       ;DUMP IT\r
+        002654' 350340  012701'         AOS     C,COUTY         ;INCREMENT INDEX\r
+        002655' 315340  012700'         CAMGE   C,COUTX         ;TEST FOR END\r
+        002656' 254000  002652'         JRST    COUTD2          ;NO, GET NEXT WORD\r
+\r
+        002657' 476000  012700' COUTI:  SETOM   COUTX           ;INITIALIZE BUFFER INDEX\r
+        002660' 402000  012703'         SETZM   COUTRB          ;ZERO RELOCATION BITS\r
+        002661' 200340  014151'         MOVE    C,[POINT 2,COUTRB]\r
+        002662' 202340  012702'         MOVEM   C,COUTP         ;INITIALIZE BIT POINTER\r
+        002663' 263740  000000          POPJ    PP,             ;EXIT\r
+\r\fMACRO V.10                     PAGE 52\r
+        OUTPUT ROUTINES\r
+\r
+        002664'                 STOWZ1:\r
+        002664' 201440  000000  STOWZ:  MOVEI   RC,0\r
+        002665'                 STOW:\r
+        002665' 321640  002677'         JUMP1   STOW20          ;SKIP TEST IF PASS ONE\r
+        002666' 602440  777776          TRNE    RC,-2           ;RIGHT HALF ZERO OR 1?\r
+        002667' 260740  002735'         PUSHJ   PP,STOWT        ;NO, HANDLE EXTERNAL\r
+        002670' 607440  777776          TLNN    RC,-2           ;LEFT HALF ZERO OR 1? WFW\r
+        002671' 254000  002675'         JRST    STOW10          ;YES, SKIP TEST\r
+        002672' 207000  000011          MOVSS   RC              ;SWAP HALVES\r
+        002673' 260740  002742'         PUSHJ   PP,STOWT1       ;HANDLE EXTERNAL WFW\r
+        002674' 207000  000011          MOVSS   RC              ;RESTORE VALUES\r
+\r
+        002675' 332000  013270' STOW10: SKIPE   EXTPNT          ;ANY EXTERNALS REMAINING?\r
+        002676' 660600  000040          TRO     ER,ERRE         ;YES, SET EXTERNAL ERROR FLAG\r
+\r
+        002677' 350040  013104' STOW20: AOS     AC1,STPX        ;INCREMENT POINTER\r
+        002700' 202001  013106'         MOVEM   AC0,STCODE(AC1) ;STOW CODE\r
+        002701' 202441  013156'         MOVEM   RC,STOWRC(AC1)  ;STOW RELOCATION BITS\r
+        002702' 336000  013321'         SKIPN   LITLVL          ;ARE WE IN LITERAL?\r
+        002703' 350000  013325'         AOS     LOCA            ;NO, INCREMENT ASSEMBLY LOCATION\r
+        002704' 305040  000047          CAIGE   AC1,.STP-1      ;OVERFLOW?\r
+        002705' 263740  000000          POPJ    PP,             ;NO, EXIT\r
+\r
+        002706' 332000  013321'         SKIPE   LITLVL          ;ARE WE IN A LITERAL?\r
+        002707' 664600  010000          TROA    ER,ERRL         ;YES, FLAG ERROR BUT DON'T DUMP\r
+        002710' 254000  001444'         JRST    CHARL1          ;NO, SAVE REGISTERS AND DUMP THE BUFFER\r
+        002711' 254000  002717'         JRST    STOWI           ;INITIALIZE BUFFER\r
+\r
+        002712' 350040  013105' DSTOW:  AOS     AC1,STPY        ;INCREMENT POINTER\r
+        002713' 200001  013106'         MOVE    AC0,STCODE(AC1) ;FETCH CODE\r
+        002714' 200441  013156'         MOVE    RC,STOWRC(AC1)  ;FETCH RELOCATION BITS\r
+        002715' 315040  013104'         CAMGE   AC1,STPX        ;IS THIS THE END?\r
+        002716' 263740  000000          POPJ    PP,             ;NO, EXIT\r
+\r
+        002717' 476000  013104' STOWI:  SETOM   STPX            ;INITIALIZE FOR INPUT\r
+        002720' 476000  013105'         SETOM   STPY            ;INITIALIZE FOR OUTPUT\r
+        002721' 402000  013270'         SETZM   EXTPNT\r
+        002722' 263740  000000          POPJ    PP,             ;EXIT\r
+\r\fMACRO V.10                     PAGE 53\r
+        OUTPUT ROUTINES\r
+\r
+        002723' 350000  013321' SVSTOW: AOS     LITLVL          ;NESTED LITERALS\r
+        002724' 261740  013104'         PUSH    PP,STPX         ;MAKE ROOM FOR ANOTHER\r
+        002725' 261740  013105'         PUSH    PP,STPY\r
+        002726' 200040  013104'         MOVE    AC1,STPX\r
+        002727' 202040  013105'         MOVEM   AC1,STPY\r
+        002730' 254002  000000          JRST    0(AC2)\r
+\r
+        002731' 262740  013105' GTSTOW: POP     PP,STPY         ;BACK UP A LEVEL\r
+        002732' 262740  013104'         POP     PP,STPX\r
+        002733' 370000  013321'         SOS     LITLVL\r
+        002734' 254002  000000          JRST    0(AC2)\r
+\r
+                                        ;EXTERNAL RIGHT\r
+        002735' 550040  013270' STOWT:  HRRZ    AC1,EXTPNT      ;GET RIGHT POINTER\r
+        002736' 302051  000000          CAIE    AC1,(RC)        ;DOES IT MATCH \r
+        002737' 260740  003752'         PUSHJ   PP,QEXT         ;EXTERNAL OR RELOCATION ERROR\r
+        002740' 513000  013270'         HLLZS   EXTPNT\r
+        002741' 263740  000000          POPJ    PP,             ;EXIT\r
+\r
+                                        ;EXTERNAL LEFT\r
+        002742' 554040  013270' STOWT1: HLRZ    AC1,EXTPNT      ;GET LEFT HALF\r
+        002743' 302051  000000          CAIE    AC1,(RC)        ;SEE ABOVE\r
+        002744' 260740  003752'         PUSHJ   PP,QEXT\r
+        002745' 553000  013270'         HRRZS   EXTPNT\r
+        002746' 263740  000000          POPJ    PP,             ;EXIT\r
+\r\fMACRO V.10                     PAGE 54\r
+        OUTPUT ROUTINES\r
+\r
+        002747' 134340  013226' ONC:    ILDB    C,TABP          ;ENTRY TO ADVANCE TAB POINTER\r
+        002750' 260740  010325'         PUSHJ   PP,OUTL         ;OUTPUT A TAB\r
+                                                                ;OUTPUT 6 OCT NUMBERS FROM CS LEFT\r
+        002751' 201340  000006  ONC1:   MOVEI   C,6             ;CONVERT TO ASCII\r
+        002752' 246340  000003          LSHC    C,3             ;SHIFT IN OCTAL\r
+        002753' 260740  010325'         PUSHJ   PP,OUTL         ;OUTPUT ASCII FROM C\r
+        002754' 602400  777777          TRNE    CS,-1           ;ARE WE THROUGH?\r
+        002755' 254000  002751'         JRST    ONC1            ;NO, GET ANOTHER\r
+        002756' 201340  000000          MOVEI   C,0             ;CLEAR C\r
+        002757' 607400  000001          TLNN    CS,1            ;RELOCATABLE?\r
+        002760' 201340  000047          MOVEI   C,"'"           ;YES\r
+        002761' 607400  001000          TLNN    CS,EXTF         ;OR EXTERNAL\r
+        002762' 201340  000052          MOVEI   C,"*"           ;YES\r
+        002763' 326340  010377' ONC2:   JUMPN   C,OUTC          ;OUTPUT IF EXTERN OR RELOCATABLE\r
+        002764' 263740  000000          POPJ    PP,             ;EXIT\r
+\r
+        002765' 231340  000012  DNC:    IDIVI   C,^D10\r
+        002766' 506417  000000          HRLM    CS,0(PP)\r
+        002767' 322340  002771'         JUMPE   C,.+2\r
+        002770' 260740  002765'         PUSHJ   PP,DNC          ;RECURSE IF NON-ZERO\r
+        002771' 554357  000000          HLRZ    C,0(PP)\r
+        002772' 271340  000060          ADDI    C,"0"           ;FORM ASCII\r
+        002773' 254000  010310'         JRST    PRINT           ;DUMP AND TEST FOR END\r
+\r
+        002774' 505400  440700  OUTAS0: HRLI    CS,(POINT 7,,)  ;ENTRY TO SET POINTER\r
+        002775' 134340  000010  OUTASC: ILDB    C,CS            ;GET NEXT BYTE\r
+        002776' 322340  000446'         JUMPE   C,POPOUT        ;EXIT ON ZERO DELIMITER\r
+        002777' 260740  010310'         PUSHJ   PP,PRINT\r
+        003000' 254000  002775'         JRST    OUTASC\r
+\r
+        003001' 505400  440600  OUTSIX: HRLI    CS,(POINT 6,,)  ;OUTPUT SIXBIT\r
+        003002' 134340  000010          ILDB    C,CS            ;GET SIXBIT\r
+        003003' 306340  000040          CAIN    C,40            ;"@" DELIMITER?\r
+        003004' 263740  000000          POPJ    PP,             ;YES, EXIT\r
+        003005' 271340  000040          ADDI    C,40            ;NO, FORM ASCII\r
+        003006' 260740  010325'         PUSHJ   PP,OUTL         ;OUTPUT ASCII CHAR FROM C\r
+        003007' 254000  003002'         JRST    OUTSIX+1\r
+\r
+        003010' 200400  000000  OUTSYM: MOVE    CS,AC0          ;PLACE NAME IN CS\r
+        003011' 201340  000000  OUTSY1: MOVEI   C,0             ;CLEAR C\r
+        003012' 246340  000006          LSHC    C,6             ;MOVE NEXT SIXBIT CHARACTER IN\r
+        003013' 322340  010307'         JUMPE   C,OUTTAB        ;TEST FOR END\r
+        003014' 271340  000040          ADDI    C,40            ;CONVERT TO ASCII\r
+        003015' 260740  010325'         PUSHJ   PP,OUTL         ;OUTPUT\r
+        003016' 254000  003011'         JRST    OUTSY1          ;LOOP\r
+\r\fMACRO V.10                     PAGE 55\r
+        OUTPUT ROUTINES\r
+\r
+        003017' 350217  000000  OUTSET: AOS     SX,0(PP)        ;GET RETURN LOCATION\r
+        003020' 200204  777777          MOVE    SX,-1(SX)       ;GET XWD CODE\r
+        003021' 546200  012677'         HLRM    SX,BLKTYP       ;SET BLOCK TYPE\r
+        003022' 403240  000011          SETZB   ARG,RC\r
+        003023' 260744  000000          PUSHJ   PP,0(SX)        ;GO TO PRESCRIBED ROUTINE\r
+        003024' 254000  002645'         JRST    COUTD           ;TERMINATE BLOCK AND EXIT\r
+\r
+                                        ;LOOKUP SCANS ALL THE SYMBOLS IN THE SYMBOL TABLE\r
+\r
+        003025' 262740  013040' LOOKUP: POP     PP,LOOKX        ;INTERCEPT RETURN POP\r
+        003026' 200200  013102'         MOVE    SX,SYMBOL\r
+        003027' 200144  000000          MOVE    SDEL,0(SX)      ;SET FOR TABLE SCAN\r
+        003030' 361140  000446' LOOKL:  SOJL    SDEL,POPOUT     ;TEST FOR END\r
+        003031' 271200  000002          ADDI    SX,2\r
+        003032' 200004  777777          MOVE    AC0,-1(SX)\r
+        003033' 260740  012340'         PUSHJ   PP,SRCH7        ;LOAD REGISTERS\r
+        003034' 557000  000005          HLRZS   ARG\r
+        003035' 260760  013040'         PUSHJ   PP,@LOOKX       ;RETURN TO CALLING ROUTINE\r
+        003036' 254000  003030'         JRST    LOOKL           ;TRY AGAIN\r
+\r\fMACRO V.10                     PAGE 56\r
+        OUTPUT ROUTINES\r
+\r
+        003037' 260740  001057' END0:   PUSHJ   PP,EVALCM       ;GET A WORD\r
+        003040' 332000  013270'         SKIPE   EXTPNT          ;ANY EXTERNALS?\r
+        003041' 660600  000040          TRO     ER,ERRE         ;YES, ERROR\r
+        003042' 336300  000000          SKIPN   V,AC0           ;NON-ZERO?\r
+        003043' 322440  003045'         JUMPE   RC,.+2          ;OR RELOC?\r
+        003044' 260740  004027'         PUSHJ   PP,ASSIG7       ;YES, LIST THE VALUE\r
+        003045' 202000  013401'         MOVEM   AC0,VECTOR\r
+        003046' 202440  013400'         MOVEM   RC,VECREL\r
+        003047' 260740  003462'         PUSHJ   PP,VARA         ;FILL OUT SELF-DEFINED VARIABLES\r
+        003050' 260740  000227'         PUSHJ   PP,STOUTS       ;DUMP THE LINE\r
+                                ;       PUSH    PP,IO           ;SAVE FLAGS\r
+                                ;       TLO     IO,IOPROG       ;XLIST LITS\r
+        003051' 260740  003367'         PUSHJ   PP,LIT1\r
+                                ;       POP     PP,IO           ;GET FLAG BACK\r
+        003052' 325640  003127'         JUMP2   ENDP2\r
+\r
+        003053' 260740  002065'         PUSHJ   PP,UOUT\r
+        003054' 607600  000010          TLNN    IO,MFLSW        ;SKIP IF ONLY PSEND\r
+        003055' 260740  007155'         PUSHJ   PP,REC2\r
+        003056' 200000  012673'         MOVE    INDIR           ;SET UP FIRST AS LAST\r
+        003057' 202000  012537'         MOVEM   LSTFIL          ;PRINTED\r
+        003060' 402000  013416'         SETZM   LSTPGN\r
+        003061' 260740  003267'         PUSHJ   PP,INZ\r
+        003062' 603600  000010          TLNE    IO,MFLSW        ;IF PSEND\r
+        003063' 263740  000000          POPJ    PP,             ;BACK TO PSEND0\r
+        003064' 332000  013260'         SKIPE   PRGPTR          ;HAVE ANY PRGEND'S BEEN SEEN\r
+        003065' 254000  004730'         JRST    PSEND3          ;YES,GO SET UP AGAIN\r
+\r
+        003066' 402000  013266' PASS20: SETZM   CTLSAV\r
+        003067' 260740  002657'         PUSHJ   PP,COUTI\r
+        003070' 260740  002121'         PUSHJ   PP,EOUT         ;OUTPUT THE ENTRIES\r
+        003071' 260740  003017'         PUSHJ   PP,OUTSET\r
+        003072' 000006  002602'         XWD     6,NOUT          ;OUTPUT THE NAME (BLKTYP-6)\r
+                                IFN RENTSW,<\r
+                                        SKIPN   HISNSW          ;PUT OUT BLOCK TYPE 3?\r
+                                        JRST    PASS21          ;NO\r
+                                        PUSHJ   PP,OUTSET\r
+                                        XWD     3,HSOUT         ;OUTPUT THE HISEG BLOCK\r
+                                PASS21: >\r
+        003073' 201000  000001          MOVEI   1\r
+        003074' 542000  012677'         HRRM    BLKTYP          ;SET FOR TYPE 1 BLOCK\r
+        003075' 621640  400000          TLZ     FR,P1           ;SET FOR PASS 2 AND TURN OFF FLAG\r
+        003076' 661600  004000          TLO     IO,IOPALL       ;PUT THESE BACK\r
+        003077' 621600  040440          TLZ     IO,IOPROG!IOCREF!DEFCRS ;SO LISTINGS WILL BE THE WAY THEY SHOULD\r
+        003100' 607640  004000          TLNN    FR,R1BSW\r
+        003101' 254000  002717'         JRST    STOWI\r
+        \r
+        003102' 200400  014152'         MOVE CS,[XWD $ST-1-$CKSM,R1BLDR]\r
+        003103' 200350  000000          MOVE C,0(CS)\r
+        003104' 260740  010123'         PUSHJ PP,PTPBIN\r
+        003105' 253400  003103'         AOBJN CS,.-2\r
+        003106' 260740  010203'         PUSHJ   PP,R1BI\r
+        003107' 254000  002717'         JRST    STOWI\r
+\r\fMACRO V.10                     PAGE 57\r
+        OUTPUT ROUTINES\r
+\r
+        \r
+        003110'                 R1BLDR:\r
+        000000                          PHASE 0\r
+        003110' 777762  000000          IOWD $ADR,$ST\r
+        003111' 710600  000060  $ST:    CONO PTR,60\r
+        003112' 541400  000004          HRRI $A,$RD+1\r
+        003113' 710740  000010  $RD:    CONSO PTR,10\r
+        003114' 254000  000003          JRST .-1\r
+        003115' 710470  000007          DATAI PTR,@$TBL1-$RD+1($A)\r
+        003116' 256010  000007          XCT $TBL1-$RD+1($A)\r
+        003117' 256010  000012          XCT $TBL2-$RD+1($A)\r
+        003120' 364400  000000  $A:     SOJA $A,\r
+        003121' 312740  000016  $TBL1:  CAME $CKSM,$ADR\r
+        003122' 270756  000001          ADD $CKSM,1($ADR)\r
+        003123' 331740  000016          SKIPL $CKSM,$ADR\r
+        003124' 254200  000001  $TBL2:  JRST 4,$ST\r
+        003125' 253700  000003          AOBJN $ADR,$RD\r
+        003126' 254000  000002  $ADR:   JRST $ST+1\r
+        000017                  $CKSM:  \r
+        003127'                         DEPHASE\r
+\r
+                                IF2,<   PURGE $ST,$RD,$A,$TBL1,$TBL2,$ADR,$CKSM>\r
+\r\fMACRO V.10                     PAGE 58\r
+        OUTPUT ROUTINES\r
+\r
+        003127' 260740  002645' ENDP2:  PUSHJ   PP,COUTD        ;DUMP THE BUFFER\r
+        003130' 200000  013326'         MOVE    AC0,LOCO        ;CHECK TO SEE IF LIT DIFFERED\r
+        003131' 336000  013334'         SKIPN   MODO            ;AND USE SMALLER SINCE AT END\r
+                                        JRST    [CAMN   AC0,ABSHI\r
+                                                HRRZM   AC2,ABSHI\r
+        003132' 254000  014153'                 JRST    ENDP2W]\r
+                                IFN RENTSW,<SKIPE HHIGH         ;SKIP IF NOT TWO SEGMENTS\r
+                                        JRST    [CAMN   AC0,HHIGH\r
+                                                HRRZM   AC2,HHIGH\r
+                                                JRST    ENDP2W]>\r
+        003133' 316000  013263'         CAMN    AC0,HIGH\r
+        003134' 552100  013263'         HRRZM   AC2,HIGH\r
+        003135'                 ENDP2W:\r
+        003135' 603600  000400  REPEAT 1,<TLNE  IO,IOCREF       ;CLOSE CREF IF NECESSARY>\r
+                                REPEAT 0,<TLNE FR,CREFSW        ;IF CREFFING\r
+                                        JRST ENDP2Q\r
+                                        MOVEI SDEL,0\r
+                                        PUSH PP,DBUF+3  ;SO NO PAGE INFO\r
+                                        DPB SDEL,[POINT 7,DBUF+3,13]\r
+                                        IOR ER,OUTSW    ;MAKE SURE OF OUTPUT\r
+                                        PUSHJ PP,CREF\r
+                                        MOVEI C,20      ;CODE FOR TITLE\r
+                                        PUSHJ PP,OUTLST\r
+                                        PUSH PP,IO      ;SAVE THIS\r
+                                        TLZ IO,IOPAGE   ;AND PREVENT PAGE DURING TITLE\r
+                                        MOVEI CS,TBUF\r
+                                        PUSHJ PP,OUTAS0\r
+                                        MOVEI CS,VBUF\r
+                                        PUSHJ PP,OUTAS0\r
+                                        POP PP,IO       ;RESTORE THE IO WORD\r
+                                        POP PP,DBUF+3   >       ;NEEDS FIX TO CREF\r
+        003136' 260740  012276'         PUSHJ   PP,CLSCR2       ;CLOSE IT UP\r
+        003137' 540600  013042' ENDP2Q: HRR     ER,OUTSW        ;SET OUTPUT SWITCH\r
+        003140' 336000  013256'         SKIPN   TYPERR\r
+        003141' 660600  000001          TRO     ER,TTYSW\r
+        003142' 260740  002065'         PUSHJ   PP,UOUT         ;OUTPUT UNDEFINEDS\r
+        003143' 660600  000001          TRO     ER,TTYSW\r
+        003144' 000000  000007          SKPINC  C       ;SEE IF WE CAN INPUT A CHAR.\r
+        003145' 255000  000000            JFCL          ;BUT ONLY TO DEFEAT ^O\r
+        003146' 337340  012726'         SKIPG C,ERRCNT  ;GET ERROR COUNT AND CHECK FOR POSITIVE\r
+        003147' 254000  003165'         JRST NOERW      ;PRINT NO ERROR MESSAGE\r
+        003150' 272340  000000* IFN CCLSW,<ADDM C,JOBERR        ;REMEMBER ERROR COUNT FOR EXECUTION DELETION>\r
+        003151' 260740  010316'         PUSHJ PP,OUTCR\r
+        003152' 200340  012726'         MOVE C,ERRCNT\r
+        003153' 306340  000001          CAIN C,1        ;1 IS A SPECIAL CASE\r
+        003154' 254000  003162'         JRST ONERW      ;PRINT MESSAGE\r
+        003155' 201340  000077          MOVEI   C,"?"           ;? FOR BATCH\r
+        003156' 260740  010325'         PUSHJ   PP,OUTL         ;...\r
+        003157' 200340  012726'         MOVE C,ERRCNT   ;PRINT NUMBER OF ERRORS\r
+        003160' 260740  002765'         PUSHJ PP,DNC\r
+        003161' 334400  014156'         SKIPA CS,[EXP ERRMS1]   ;LOAD TO PRINT\r
+        003162' 201400  007671' ONERW:  MOVEI CS,ERRMS2 ;ONE ERROR DETECTED\r
+        003163' 260740  003001' ONERW1: PUSHJ PP,OUTSIX ;PRINT\r
+\r\fMACRO V.10                     PAGE 58-1\r
+        OUTPUT ROUTINES\r
+\r
+        003164' 254000  003173'         JRST ENDP2A\r
+        003165' 201400  007674' NOERW:  MOVEI CS,ERRMS3\r
+        003166' 603600  001010  IFN CCLSW,<TLNE IO,CRPGSW!MFLSW ;IF RPG, DON'T PRINT MESSAGE>\r
+                                IFE CCLSW,<TLNE IO,MFLSW        ;NOR IF MULTI-FILE MODE>\r
+        003167' 620600  000001          TRZ     ER,TTYSW                ;NO TTY OUTPUT\r
+        003170' 434600  013042'         IOR     ER,OUTSW        ;UNLESS NEEDED FOR LISTING\r
+        003171' 260740  010316'         PUSHJ PP,OUTCR\r
+        003172' 254000  003163'         JRST ONERW1\r
+\r
+\r\fMACRO V.10                     PAGE 59\r
+        OUTPUT ROUTINES\r
+\r
+        003173' 260740  010316' ENDP2A: PUSHJ PP,OUTCR\r
+        003174' 607600  000010          TLNN    IO,MFLSW        ;IN A MULTI-PROG FILE?\r
+        003175' 254000  003201'         JRST    ENDP2D          ;NO\r
+        003176' 332000  012726'         SKIPE   ERRCNT          ;ANY ERROR?\r
+                                        PUSHJ   PP,[MOVEI CS,[ASCIZ /PROGRAM    /]\r
+                                                PUSHJ PP,OUTAS0 ;YES,SO PRINT MESSAGE\r
+                                                MOVEI   CS,TBUF ;AND TITLE\r
+                                                PUSHJ PP,OUTAS0 ;FOR IDENTIFICATION\r
+        003177' 260740  014161'                 JRST    OUTCR]  ;AND A CR-LF\r
+        003200' 624600  000001          TRZA    ER,TTYSW        ;NO MORE OUTPUT NOW\r
+        003201'                 ENDP2D:\r
+        003201' 603600  001000  IFN CCLSW,<TLNE IO,CRPGSW       ;IF RPG, DON'T PRINT PGM BREAK\r
+        003202' 620600  000001          TRZ     ER,TTYSW        ;...>\r
+                                IFE CCLSW,<     SKIPA           ;SO PRGEND CODE CAN WORK>\r
+        003203' 434600  013042'         IOR     ER,OUTSW        ;...\r
+        003204' 260740  010316'         PUSHJ   PP,OUTCR\r
+                                IFN RENTSW,<\r
+                                        MOVEI   CS,[SIXBIT /HI-SEG. BREAK IS @/]\r
+                                        SKIPN   HHIGH           ;DON'T PRINT IF ZERO\r
+                                        JRST    ENDP2C          ;IT WAS\r
+                                        PUSHJ   PP,OUTSIX\r
+                                        HRLO    CS,HHIGH        ;GET THE BREAK\r
+                                        PUSHJ   PP,ONC1\r
+                                        PUSHJ   PP,OUTCR\r
+                                ENDP2C:>\r
+        003205' 201400  014166'         MOVEI   CS,[SIXBIT /PROGRAM BREAK IS @/]\r
+        003206' 260740  003001'         PUSHJ   PP,OUTSIX       ;OUTPUT PROGRAM BREAK\r
+        003207' 550400  013262'         HRRZ    CS,ABSHI        ;GET ABS. BREAK\r
+        003210' 307400  000140          CAIG    CS,140          ;ANY ABS. CODE\r
+                                        JRST    [HRLO CS,HIGH   ;NO\r
+        003211' 254000  014171'                 JRST    ENDP2B] ;SO DON'T PRINT\r
+        003212' 524400  013263'         HRLO    CS,HIGH         ;GET PROGRAM BREAK\r
+        003213' 260740  002751'         PUSHJ   PP,ONC1\r
+        003214' 260740  010316'         PUSHJ   PP,OUTCR\r
+        003215' 201400  014173'         MOVEI   CS,[SIXBIT /ABSLUTE BREAK IS @/]\r
+        003216' 260740  003001'         PUSHJ   PP,OUTSIX\r
+        003217' 524400  013262'         HRLO    CS,ABSHI\r
+        003220' 260740  002751' ENDP2B: PUSHJ   PP,ONC1\r
+        003221' 260740  010316'         PUSHJ PP,OUTCR\r
+        003222' 603640  004400          TLNE    FR,RIMSW!R1BSW  ;RIM MODE?\r
+        003223' 260740  003256'         PUSHJ   PP,RIMFIN       ;YES, FINISH IT\r
+        003224' 607600  001010  IFN CCLSW,<TLNN IO,CRPGSW!MFLSW ;IF NOT IN CCL MODE>\r
+                                IFE CCLSW,<TLNN IO,MFLSW        ;NOR IF IN MULTI-FILE MODE>\r
+        003225' 660600  000001          TRO     ER,TTYSW        ;PRINT SIZE\r
+        003226' 260740  010316'         PUSHJ   PP,OUTCR\r
+        003227' 200340  000012*         MOVE    C,JOBREL\r
+        003230' 242340  777766          LSH     C,-^D10\r
+        003231' 271340  000001          ADDI    C,1\r
+        003232' 260740  002765'         PUSHJ   PP,DNC\r
+        003233' 201400  014176'         MOVEI   CS,[SIXBIT /K CORE USED@/]\r
+        003234' 260740  003001'         PUSHJ   PP,OUTSIX\r
+        003235' 260740  010316'         PUSHJ   PP,OUTCR        \r
+        003236' 540600  013042'         HRR     ER,OUTSW\r
+\r\fMACRO V.10                     PAGE 59-1\r
+        OUTPUT ROUTINES\r
+\r
+        003237' 260740  003017'         PUSHJ   PP,OUTSET\r
+        003240' 000002  002156'         XWD     2,SOUT          ;OUTPUT THE SYMBOLS (BLKTYP-2)\r
+        003241' 260740  003017'         PUSHJ   PP,OUTSET\r
+        003242' 000007  002633'         XWD     7,VOUT          ;OUTPUT TRANSFER VECTOR (..-7)\r
+        003243' 260740  003017'         PUSHJ   PP,OUTSET\r
+        003244' 000005  002626'         XWD     5,HOUT          ;OUTPUT HIGHEST RELOCATABLE (..-5)\r
+        003245' 260740  002645'         PUSHJ   PP,COUTD\r
+        003246' 607600  000010          TLNN    IO,MFLSW        ;IS IT PRGEND?\r
+        003247' 254000  007014'         JRST    FINIS           ;ALAS, FINISHED\r
+        003250' 201400  013057'         MOVEI   CS,SBUF         ;RESET SBUF POINTER\r
+        003251' 542400  013100'         HRRM    CS,SUBTTX       ;TO SUBTTL\r
+        003252' 402000  013262'         SETZM   PASS2I          ;CLEAR PASS2 VARIABLES\r
+        003253' 200000  014200'         MOVE    [XWD PASS2I,PASS2I+1]\r
+        003254' 251000  013412'         BLT     PASS2Z-1        ;BUT NOT ALL OF VARIABLES\r
+        003255' 254000  003267'         JRST    INZ             ;RE-INITIALIZE FOR NEXT PROG\r
+\r\fMACRO V.10                     PAGE 60\r
+        OUTPUT ROUTINES\r
+\r
+\r
+\r
+        003256' 603640  004000  RIMFIN: TLNE FR,R1BSW\r
+        003257' 260740  010165'         PUSHJ PP,R1BDMP\r
+        003260' 336340  013401'         SKIPN   C,VECTOR\r
+        003261' 205340  254200          MOVSI   C,(JRST 4,)\r
+        003262' 607340  777000          TLNN    C,777000\r
+        003263' 661340  254000          TLO     C,(JRST)\r
+        003264' 260740  010123'         PUSHJ   PP,PTPBIN\r
+        003265' 201340  000000          MOVEI   C,0\r
+        003266' 254000  010123'         JRST    PTPBIN\r
+\r\fMACRO V.10                     PAGE 61\r
+        PASS INITIALIZE\r
+\r
+                                SUBTTL  PASS INITIALIZE\r
+        003267' 350000  013332' INZ:    AOS     MODA\r
+        003270' 350000  013334'         AOS     MODO\r
+        003271' 402000  012544'         SETZM   SEQNO\r
+        003272' 402000  012541'         SETZM   TAG\r
+        003273' 541640  000010          HRRI    RX,^D8\r
+        003274' 201000  013027'         MOVEI   VARHD\r
+        003275' 202000  013030'         MOVEM   VARHDX\r
+        003276' 201000  013034'         MOVEI   LITHD\r
+        003277' 202000  013035'         MOVEM   LITHDX\r
+        003300' 260740  003437'         PUSHJ   PP,LITI\r
+        003301' 260740  002717'         PUSHJ   PP,STOWI\r
+        003302' 254000  001765'         JRST    OUTLI\r
+\r
+        003303' 220100  000005  RCPNTR: POINT   1,ARG,^L<RELF>-18       ;POINT 1,ARG,22\r
+\r\fMACRO V.10                     PAGE 62\r
+        PSEUDO-OP HANDLERS\r
+\r
+                                SUBTTL  PSEUDO-OP HANDLERS\r
+\r
+        003304' 260740  000227' TAPE0:  PUSHJ   PP,STOUTS       ;FINISH THIS LINE\r
+        003305' 254000  007165'         JRST    GOTEND          ;AND IGNORE THE REST OF THIS FILE\r
+\r
+        003306' 260740  003745' RADIX0: PUSHJ   PP,EVAL10       ;EVALUATE RADIX D10\r
+        003307' 307000  000012          CAIG    AC0,^D10        ;IF GREATER THAN 10\r
+        003310' 307000  000001          CAIG    AC0,1           ;OR LESS THAN 2,\r
+        003311' 664600  040000  ERRAX:  TROA    ER,ERRA         ;FLAG ERROR AND SKIP\r
+        003312' 540640  000000          HRR     RX,AC0          ;SET NEW RADIX\r
+        003313' 263740  000000          POPJ    PP,\r
+\r
+\r
+        003314' 621600  000001  XALL0:  TLZ     IO,IOSALL       ;TURN OFF MACRO SUPPRESS ALL\r
+        003315' 321640  000446' IOSET:  JUMP1   POPOUT          ;NOSYM (IONSYM), XALL (IOPALL), XLIST (IOPROG)\r
+        003316' 554200  000000          HLRZ    SX,AC0          ;STORE FLAGS\r
+        003317' 260740  000227'         PUSHJ   PP,STOUTS       ;POLISH OFF LINE\r
+        003320' 661604  000000          TLO     IO,0(SX)        ;NOW SUPRESS PRINTING\r
+        003321' 263740  000000          POPJ    PP,\r
+\r
+        003322' 630600  000000  IORSET: TDZ     IO,AC0          ;RESET  FLAG IOPALL/IOPROG\r
+        003323' 603000  002000          TLNE    AC0,IONCRF      ;RESTORING CREFFING?\r
+        003324' 621600  000040          TLZ     IO,DEFCRS       ;YES, CLEAR ANY WAITING DEFINING OCCURENCES\r
+        003325' 263740  000000          POPJ    PP,\r
+\r
+        003326' 260740  004146' BLOCK0: PUSHJ   PP,HIGHQ\r
+        003327' 260740  001070'         PUSHJ   PP,EVALEX       ;EVALUATE\r
+        003330' 622440  777777          TRZE    RC,-1           ;EXTERNAL OR RELOCATABLE?\r
+        003331' 260740  003752'         PUSHJ   PP,QEXT         ;YES, DETERMINE TYPE\r
+        003332' 272000  013326'         ADDM    AC0,LOCO        ;UPDATE ASSEMBLY LOCATION\r
+        003333' 250000  013325' BLOCK1: EXCH    AC0,LOCA        ;SAVE START OF BLOCK\r
+        003334' 272000  013325'         ADDM    AC0,LOCA        ;UPDATE OUTPUT LOCATION\r
+        003335' 526000  013324' BLOCK2: HRLOM   AC0,LOCBLK\r
+        003336' 325640  000446'         JUMP2   POPOUT\r
+        003337' 602600  002000          TRNE    ER,ERRU\r
+        003340' 660600  001000          TRO     ER,ERRV\r
+        003341' 263740  000000          POPJ    PP,\r
+\r\fMACRO V.10                     PAGE 63\r
+        PSEUDO-OP HANDLERS\r
+\r
+\r
+        003342' 660600  000001  PRNTX0: TRO     ER,TTYSW        ;SET OUTPUT TO TTY\r
+        003343' 325640  003345'         JUMP2   PRNTX2          ;PASS1?\r
+        003344' 674600  013042'         TDOA    ER,OUTSW        ;YES,OUTPUT TO LSTDEV ALSO\r
+        003345' 420600  013042' PRNTX2: ANDCM   ER,OUTSW        ;NO,DON'T OUTPUT TO TTY IF IT IS LSTDEV\r
+        003346' 260740  004452'         PUSHJ   PP,BYPASS       ;GET FIRST CHAR.\r
+        003347' 665600  000004          TLOA    IO,IORPTC       ;REPEAT IT AND SKIP\r
+        003350' 260740  010310' PRNTX4: PUSHJ   PP,PRINT        ;PRINT THE CHAR.\r
+        003351' 260740  001406'         PUSHJ   PP,CHARAC       ;GET ASCII CHAR.\r
+        003352' 307340  000015          CAIG    C,CR            ;IF GREATER THAN CR\r
+        003353' 307340  000011          CAIG    C,HT            ;OR LESS THAN LF\r
+        003354' 254000  003350'         JRST    PRNTX4          ;THEN CONTINUE\r
+        003355' 260740  010316'         PUSHJ   PP,OUTCR        ;OUTPUT A CRLF\r
+        003356' 624600  000003          TRZA    ER,TTYSW!LPTSW  ;TURN OF OUTPUT\r
+        003357' 350017  000000  CPOPJ1: AOS     (PP)            ;USEFUL TAG HAS TO GO SOMEWHERE\r
+        003360' 263740  000000  CPOPJ:  POPJ    PP,             ;EXIT\r
+\r
+        003361' 260740  001354' REMAR0: PUSHJ   PP,GETCHR       ;GET A CHARACTER\r
+        003362' 302340  000033          CAIE    C,EOL\r
+        003363' 254000  003361'         JRST    REMAR0\r
+        003364' 263740  000000          POPJ    PP,             ;EXIT\r
+\r\fMACRO V.10                     PAGE 64\r
+        PSEUDO-OP HANDLERS\r
+\r
+        003365' 260740  003333' LIT0:   PUSHJ   PP,BLOCK1\r
+        003366' 260740  000227'         PUSHJ   PP,STOUTS\r
+        003367' 325640  003377' LIT1:   JUMP2   LIT20\r
+\r
+                                ;ON PASS ONE, WE JUST STEP THE LOCATION COUNTER AND CLEAR\r
+\r
+        003370' 200000  013036'         MOVE    AC0,LITCNT\r
+        003371' 200200  013035'         MOVE    SX,LITHDX\r
+        003372' 506004  000000          HRLM    AC0,0(SX)\r
+        003373' 200300  013325'         MOVE    V,LOCA\r
+        003374' 504300  013332'         HRL     V,MODA\r
+        003375' 202304  777777          MOVEM   V,-1(SX)\r
+        003376' 254000  003433'         JRST    LIT24\r
+\r
+        003377' 261740  013325' LIT20:  PUSH    PP,LOCA\r
+        003400' 261740  013326'         PUSH    PP,LOCO\r
+        003401' 336000  013037'         SKIPN   LITNUM\r
+        003402' 254000  003407'         JRST    LIT20A\r
+        003403' 200200  013035'         MOVE    SX,LITHDX\r
+        003404' 550004  777777          HRRZ    AC0,-1(SX)\r
+        003405' 312000  013325'         CAME    AC0,LOCA\r
+        003406' 660600  000100          TRO     ER,ERRP\r
+        003407' 200200  013031' LIT20A: MOVE    SX,LITAB\r
+        003410' 375000  013037' LIT21:  SOSGE   LITNUM\r
+        003411' 254000  003422'         JRST    LIT22\r
+        003412' 200004  777776          MOVE    AC0,-2(SX)      ;WFW\r
+        003413' 200444  777777          MOVE    RC,-1(SX)       ;WFW\r
+        003414' 200204  000000          MOVE SX,(SX)    ;WFW POINTER TO THE NEXT LIT\r
+        003415' 260740  002677'         PUSHJ   PP,STOW20       ;STOW CODE\r
+        003416' 201340  000012          MOVEI   C,12            ;SET LINE FEED\r
+        003417' 136340  013003'         IDPB    C,LBUFP\r
+        003420' 260740  001547'         PUSHJ   PP,OUTLIN       ;OUTPUT THE LINE\r
+        003421' 254000  003410'         JRST    LIT21\r
+\r\fMACRO V.10                     PAGE 65\r
+        PSEUDO-OP HANDLERS\r
+\r
+        003422' 550100  013326' LIT22:  HRRZ    AC2,LOCO\r
+        003423' 262740  013326'         POP     PP,LOCO\r
+        003424' 262740  013325'         POP     PP,LOCA\r
+        003425' 200200  013035'         MOVE    SX,LITHDX\r
+        003426' 554004  000000          HLRZ    AC0,0(SX)\r
+        003427' 274100  013326'         SUB AC2,LOCO    ;COMPUTE LENGTH USED\r
+        003430' 315000  000002          CAMGE AC0,AC2   ;USE LARGER\r
+        003431' 200000  000002          MOVE AC0,AC2\r
+        003432' 270100  013326'         ADD AC2,LOCO\r
+        003433' 272000  013325' LIT24:  ADDM    AC0,LOCA\r
+        003434' 272000  013326'         ADDM    AC0,LOCO\r
+        003435' 260740  003444'         PUSHJ   PP,GETTOP\r
+        003436' 542200  013035'         HRRM    SX,LITHDX\r
+        003437' 402000  013036' LITI:   SETZM   LITCNT\r
+        003440' 402000  013037'         SETZM   LITNUM\r
+        003441' 201000  013031'         MOVEI   LITAB\r
+        003442' 202000  013032'         MOVEM   LITABX\r
+        003443' 254000  004146'         JRST    HIGHQ\r
+\r
+        003444' 550040  000004  GETTOP: HRRZ    AC1,SX          ;VARHD\r
+        003445' 550204  000000          HRRZ    SX,0(SX)\r
+        003446' 326200  000446'         JUMPN   SX,POPOUT\r
+        003447' 201200  000003          MOVEI   SX,3    ;WFW\r
+        003450' 273200  012727'         ADDB    SX,FREE\r
+        003451' 311200  013102'         CAML    SX,SYMBOL\r
+        003452' 260740  010015'         PUSHJ   PP,XCEED\r
+        003453' 275200  000001          SUBI    SX,1            ;MAKE SX POINT TO LINK\r
+        003454' 402004  000000          SETZM   0(SX)           ;CLEAR FORWARD LINK\r
+        003455' 542201  000000          HRRM    SX,0(AC1)       ;STORE ADDRESS IN LAST LINK\r
+        003456' 263740  000000          POPJ    PP,\r
+\r\fMACRO V.10                     PAGE 66\r
+        PSEUDO-OP HANDLERS\r
+\r
+        003457' 260740  003333' VAR0:   PUSHJ   PP,BLOCK1       ;PRINT LOCATION\r
+        003460' 260740  003462'         PUSHJ PP,VARA\r
+        003461' 254000  000227'         JRST STOUTS\r
+\r
+        003462' 200200  013030' VARA:   MOVE    SX,VARHDX\r
+        003463' 200000  013325'         MOVE AC0,LOCA   ;GET LOCATION FOR CHECK\r
+        003464' 321640  003467'         JUMP1 VARB      ;DO NOT CHECK START ON PASS 1\r
+        003465' 312004  777777          CAME AC0,-1(SX) ;CHECK START OF VAR AREA\r
+        003466' 660600  000100          TRO ER,ERRP     ;AND GIVE ERROR\r
+        003467' 202004  777777  VARB:   MOVEM AC0,-1(SX)        ;SAVE START FOR PASS 2\r
+        003470' 554004  000000          HLRZ    AC0,0(SX)\r
+        003471' 272000  013325'         ADDM    AC0,LOCA\r
+        003472' 272000  013326'         ADDM    AC0,LOCO\r
+        003473' 260740  003444'         PUSHJ   PP,GETTOP\r
+        003474' 542200  013030'         HRRM    SX,VARHDX\r
+        003475' 325640  000446'         JUMP2   POPOUT\r
+\r
+        003476' 260740  003025'         PUSHJ   PP,LOOKUP       ;SET FOR TABLE SCAN\r
+        003477' 626240  000100          TRZN    ARG,VARF\r
+        003500' 263740  000000          POPJ    PP,             ;NO, EXIT\r
+        003501' 620240  002000          TRZ ARG,UNDF            ;TURN OFF FLAG NOW\r
+        003502' 205000  000001          MOVSI AC0,1             ;ADD 1\r
+        003503' 272001  000000          ADDM    AC0,0(AC1)      ;UPDATE COUNT\r
+\r
+        003504' 434240  013332'         IOR     ARG,MODA        ;SET TO ASSEMBLY MODE\r
+        003505' 504240  013325'         HRL     ARG,LOCA\r
+        003506' 206244  000000          MOVSM   ARG,0(SX)       ;UPDATE 2ND WRD OF SYM TAB ENTRY\r
+        003507' 350000  013325'         AOS     LOCA\r
+        003510' 350000  013326'         AOS     LOCO\r
+        003511' 254000  004146'         JRST    HIGHQ1\r
+\r\fMACRO V.10                     PAGE 67\r
+        PSEUDO-OP HANDLERS\r
+\r
+        003512' 261740  000000  IF:     PUSH    PP,AC0          ;SAVE AC0\r
+        003513' 261740  000014          PUSH    PP,IO\r
+        003514' 260740  003757'         PUSHJ   PP,EVALXQ       ;EVALUATE AND TEST EXTERNAL\r
+        003515' 262740  000001          POP     PP,AC1\r
+        003516' 321040  003520'         JUMPL   AC1,IFPOP\r
+        003517' 621600  400000          TLZ     IO,FLDSW\r
+        003520' 262740  000001  IFPOP:  POP     PP,AC1          ;RETRIEVE SKIP INSTRUCTION\r
+        003521' 661600  000004  IFSET:  TLO IO,IORPTC           ;REPEAT CHARACTER\r
+        003522' 256000  000001  IFXCT:  XCT     AC1             ;EXECUTE INSTRUCTION\r
+        003523' 634000  000000          TDZA    AC0,AC0         ;FALSE\r
+        003524' 201000  000001          MOVEI   AC0,1           ;TRUE\r
+        003525' 325600  005072' IFEXIT: JUMPOC REPEA1           ;BRANCH IF IN OP-CODE FIELD\r
+        003526' 260740  001354' IFEX1:  PUSHJ PP,GETCHR         ;SEARCH FOR "<"\r
+        003527' 306340  000033          CAIN C,EOL              ;ERROR IF END OF LINE\r
+        003530' 254000  003311'         JRST ERRAX\r
+        003531' 302340  000034          CAIE C,34\r
+        003532' 254000  003526'         JRST IFEX1\r
+        003533' 322000  003664'         JUMPE AC0,IFEX2         ;TEST FOR 0\r
+        003534' 661600  000004          TLO IO,IORPTC           ;NO, PROCESS AS CELL\r
+        003535' 260740  000354'         PUSHJ PP,CELL\r
+        003536' 402000  013275'         SETZM   INCND           ;NOT ANY MORE\r
+        003537' 254000  002665'         JRST STOW               ;STOW CODE AND EXIT\r
+\r
+        003540' 541000  400000  IFPASS: HRRI    AC0,P1          ;MAKE IT TLNX IO,P1\r
+        003541' 200040  000000          MOVE    AC1,AC0         ;PLACE IT IN AC1\r
+        003542' 254000  003521'         JRST    IFSET           ;EXECUTE INSTRUCTION\r
+\r
+        003543' 520040  000000  IFB0:   HLLO    AC1,AC0         ;FORM AND STORE TEST INSTRUCTION\r
+        003544' 260740  001436' IFB1:   PUSHJ   PP,CHARL        ;GET FIRST NON-BLANK\r
+        003545' 302340  000040          CAIE    C," "\r
+        003546' 306340  000011          CAIN    C,"     "\r
+        003547' 254000  003544'         JRST    IFB1            ;SKIP BLANKS AND TABS\r
+        003550' 307340  000015          CAIG    C,CR            ;CHECK FOR CARRET AS DELIM.\r
+        003551' 305340  000012          CAIGE   C,LF\r
+        003552' 334200  013415'         SKIPA   SX,SEQNO2\r
+        003553' 254000  003311'         JRST    ERRAX\r
+        003554' 202200  013312'         MOVEM   SX,CNDSEQ\r
+        003555' 200200  013414'         MOVE    SX,PAGENO\r
+        003556' 202200  013311'         MOVEM   SX,CNDPG\r
+        003557' 476000  013275'         SETOM   INCND           ;SAVE INFO. FOR PASS 1 ERRORS\r
+        003560' 306340  000074          CAIN    C,"<"           ;LEFT BRACKET?\r
+        003561' 403340  000011          SETZB   C,RC            ;YES, PREPARE FOR OLD FORMAT\r
+        003562' 334200  000007          SKIPA   SX,C            ;SAVE FOR COMPARISON\r
+        003563' 660000  000001  IFB3:   TRO     AC0,1           ;SET FLAG\r
+        003564' 260740  001436' IFB2:   PUSHJ   PP,CHARL        ;GET ASCII CHARACTER AND LIST\r
+        003565' 316340  000004          CAMN    C,SX            ;TEST FOR DELIMITER\r
+        003566' 254000  003522'         JRST    IFXCT           ;FOUND\r
+        003567' 302340  000040          CAIE    C," "           ;BLANK?\r
+        003570' 306340  000011          CAIN    C,"     "       ;OR TAB?\r
+        003571' 254000  003564'         JRST    IFB2            ;YES\r
+        003572' 326200  003563'         JUMPN   SX,IFB3         ;JUMP IF NEW FORMAT\r
+        003573' 306340  000074          CAIN    C,"<"           ;<?\r
+        003574' 344440  003564'         AOJA    RC,IFB2         ;YES, INCREMENT COUNT\r
+\r\fMACRO V.10                     PAGE 67-1\r
+        PSEUDO-OP HANDLERS\r
+\r
+        003575' 306340  000076          CAIN    C,">"           ;>?\r
+        003576' 361440  003522'         SOJL    RC,IFXCT        ;YES, DECREMENT AND EXIT IF DONE\r
+        003577' 254000  003563'         JRST    IFB3            ;GET NEXT CHARACTER\r
+\r
+\r\fMACRO V.10                     PAGE 68\r
+        PSEUDO-OP HANDLERS\r
+\r
+        003600' 541000  002000  IFDEF0: HRRI    AC0,UNDF        ;MAKE IT TLNX ARG,UNDF\r
+        003601' 261740  000000          PUSH    PP,AC0          ;STACK IT\r
+        003602' 260740  001034'         PUSHJ   PP,GETSYM       ;TAKES SKIP RETURN IF SYM NAME IS LEGAL\r
+        003603' 664600  040000          TROA    ER,ERRA         ;ILLEGAL!\r
+        003604' 260740  012313'         PUSHJ   PP,SEARCH\r
+                                        JRST    [PUSHJ  PP,OPTSCH\r
+                                                TLO     ARG,UNDF\r
+        003605' 254000  014201'                 JRST    .+1]\r
+        003606' 260740  012220'         PUSHJ PP,SSRCH3         ;EMIT TO CREF ANYWAY\r
+        003607' 254000  003520'         JRST    IFPOP           ;POP AND EXECUTE INSTRUCTION\r
+\r
+\r\fMACRO V.10                     PAGE 69\r
+        PSEUDO-OP HANDLERS\r
+\r
+        003610' 557000  000000  IFIDN0: HLRZS   AC0\r
+        003611' 201300  000047          MOVEI   V,2*.IFBLK-1\r
+        003612' 402006  012730'         SETZM   IFBLK(V)        ;CLEAR COMPARISON BLOCK\r
+        003613' 365300  003612'         SOJGE   V,.-1\r
+        003614' 402000  013402'         SETZM   .TEMP           ;CLEAR STORED DELIMETER\r
+        003615' 201440  012730'         MOVEI   RC,IFBLK        ;SET FOR FIRST BLOCK\r
+        003616' 260740  003630'         PUSHJ   PP,IFCL         ;GET FIRST STRING\r
+        003617' 201440  012754'         MOVEI   RC,IFBLKA\r
+        003620' 260740  003630'         PUSHJ   PP,IFCL         ;GET SECOND STRING\r
+        003621' 201300  000023          MOVEI   V,.IFBLK-1\r
+        003622' 200206  012730'         MOVE    SX,IFBLK(V)     ;GET WORD FROM FIRST STRING\r
+        003623' 316206  012754'         CAMN    SX,IFBLKA(V)    ;COMPARE WITH SECOND STRING\r
+        003624' 365300  003622'         SOJGE   V,.-2           ;EQUAL, TRY NEXT WORD\r
+        003625' 321300  003525'         JUMPL   V,IFEXIT        ;DID WE FINISH STRING\r
+        003626' 431000  000001          XORI    AC0,1           ;NO, TOGGLE REQUEST\r
+        003627' 254000  003525'         JRST    IFEXIT  ;DO NOT TURN ON IORPTC WFW\r
+\r
+        003630' 260740  001406' IFCL:   PUSHJ   PP,CHARAC       ;GET AND LIST CHARACTER\r
+        003631' 302340  000040          CAIE    C," "           ;SKIP SPACES\r
+        003632' 307340  000015          CAIG    C,CR            ;ALSO SKIP CR-LF\r
+        003633' 305340  000011          CAIGE   C,HT            ;AND TAB\r
+        003634' 254000  003636'         JRST    .+2             ;NOT ONE OF THEM\r
+        003635' 254000  003630'         JRST    IFCL            ;SO LONG COMPARISONS WILL WORK\r
+                                ;*** A CROCK SO THAT IFIDN <X>,<X>,<INST.> WILL WORK    ***\r
+        003636' 302340  000054          CAIE    C,","           ;IS IT A COMMA?\r
+        003637' 254000  003642'         JRST    .+3             ;NO\r
+        003640' 336000  013402'         SKIPN   .TEMP           ;YES, WAS PREVIOUS FIELD OLD METHOD?\r
+        003641' 254000  003630'         JRST    IFCL            ;YES, IGNORE COMMA AND SPACES\r
+                                ;       ***\r
+        003642' 306340  000074          CAIN    C,"<"           ;WAS IT LEFT BRACKET?\r
+        003643' 474340  000000          SETO    C,              ;SIGNAL OLD METHOD, LOOK FOR RIGHT BRACKET\r
+        003644' 202340  013402'         MOVEM   C,.TEMP         ;STORE TERMINATOR FOR COMPARISON\r
+        003645' 201200  000143          MOVEI   SX,5*.IFBLK-1   ;LIMIT SEARCH\r
+        003646' 505440  440700          HRLI    RC,(POINT 7,,)  ;SET UP BYTE IN RC\r
+        003647' 260740  001406' IFCLR:  PUSHJ   PP,CHARAC\r
+        003650' 333000  013402'         SKIPLE  .TEMP           ;NEW METHOD?\r
+        003651' 254000  003656'         JRST    IFCLR1          ;YES, IGNORE ANGLE BRACKET COUNTING\r
+        003652' 306340  000074          CAIN    C,"<"           ;ANOTHER LEFT ANGLE?\r
+        003653' 370000  013402'         SOS     .TEMP           ;YES, KEEP COUNT\r
+        003654' 306340  000076          CAIN    C,">"           ;CLOSING ANGLE\r
+        003655' 355000  013402'         AOSGE   .TEMP           ;MATCHING COUNT?\r
+        003656' 316340  013402' IFCLR1: CAMN    C,.TEMP         ;TEST FOR DELIMITER\r
+        003657' 263740  000000          POPJ    PP,             ;EXIT ON RIGHT DELIMITER\r
+        003660' 367200  003662'         SOJG    SX,.+2          ;ANY ROOM IN COMPARISON BLOCK?\r
+        003661' 664600  040000          TROA    ER,ERRA         ;NO, FLAG ERROR BUT KEEP ON GOING\r
+        003662' 136340  000011          IDPB    C,RC            ;DEPOSIT BYTE\r
+        003663' 254000  003647'         JRST    IFCLR\r
+\r
+\r\fMACRO V.10                     PAGE 70\r
+        PSEUDO-OP HANDLERS\r
+\r
+\r
+        003664' 260740  001354' IFEX2:  PUSHJ   PP,GETCHR\r
+        003665' 306340  000033          CAIN    C,EOL           ;EXIT WITH ERROR IF END OF LINE\r
+        003666' 254000  003311'         JRST    ERRAX\r
+        003667' 306340  000034          CAIN    C,34            ;"<"?\r
+        003670' 344000  003664'         AOJA    AC0,IFEX2       ;YES, INCREMENT COUNT\r
+        003671' 302340  000036          CAIE    C,36            ;">"?\r
+        003672' 254000  003664'         JRST    IFEX2           ;NO, TRY AGAIN\r
+        003673' 365000  003664'         SOJGE   AC0,IFEX2       ;YES, TEST FOR MATCH\r
+        003674' 260740  004452'         PUSHJ   PP,BYPASS       ;YES, MOVE TO NEXT DELIMITER\r
+        003675' 402000  013275'         SETZM   INCND           ;OUT OF CONDITIONAL NOW\r
+        003676' 344000  002664'         AOJA    AC0,STOWZ1      ;STOW ZERO\r
+\r
+\r
+        003677' 512000  013271' INTER0: HLLZM   AC0,INTENT      ;AC0 CONTAINS INTF/ENTF FLAGS\r
+\r
+        003700' 260740  001034' INTER1: PUSHJ   PP,GETSYM       ;GET A SYMBOL\r
+        003701' 254000  003710'         JRST    INTER3          ;INVALID, SKIP\r
+        003702' 260740  012210'         PUSHJ   PP,SSRCH        ;SEARCH THE TABLE\r
+        003703' 205240  402400          MOVSI   ARG,SYMF!INTF!UNDF\r
+        003704' 603240  002000          TLNE    ARG,UNDF        ;UNDEFINED?\r
+        003705' 660600  040000          TRO     ER,ERRA         ;YES, FLAG ERROR\r
+        003706' 607240  041000          TLNN    ARG,SYNF!EXTF\r
+        003707' 674240  013271'         TDOA    ARG,INTENT                      ;SET APPROPRIATE FLAGS\r
+        003710' 664600  040000  INTER3: TROA    ER,ERRA         ;FLAG ARG EROR AND SKIP\r
+        003711' 260740  012364'         PUSHJ   PP,INSERQ       ;INSERT/UPDATE\r
+        003712' 321400  003700'         JUMPCM  INTER1\r
+        003713' 402000  013270'         SETZM EXTPNT    ;JUST IN CASE, SO AS NOT TO CONFUSE WORLD\r
+        003714' 263740  000000          POPJ    PP,             ;NO, EXIT\r
+\r\fMACRO V.10                     PAGE 71\r
+        PSEUDO-OP HANDLERS\r
+\r
+        003715' 260740  001034' EXTER0: PUSHJ   PP,GETSYM       ;GET A SYMBOL\r
+        003716' 254000  003741'         JRST    EXTER4          ;INVALID, ERROR\r
+        003717' 661600  000040  EXTER1: TLO     IO,DEFCRS       ;FLAG THIS AS A DEFINITION\r
+        003720' 260740  012210'         PUSHJ   PP,SSRCH        ;OK, SEARCH SYMBOL TABLE\r
+        003721' 254000  003726'         JRST    EXTER2          ;NOT THERE, INSERT IT\r
+        003722' 607240  003100          TLNN    ARG,EXTF!VARF!UNDF\r
+        003723' 664600  000040          TROA    ER,ERRE         ;FLAG ERROR AND BYPASS\r
+        003724' 603240  001000          TLNE    ARG,EXTF        ;VALID, ALREADY DEFINED?\r
+                                        JRST    [JUMP1  EXTER3  ;YES, BYPASS\r
+                                                TLZN ARG,UNDF   ;SKIP IF UNDEFINED ALSO\r
+                                                JRST    EXTER3  ;CONTINUE\r
+                                                ANDM ARG,(SX)   ;CLEAR UNDF ON PASS 2\r
+        003725' 254000  014204'                 JRST    EXTER2] ;SET UP EXTERNAL NOW\r
+        003726' 201300  000002  EXTER2: MOVEI V,2               ;NO, GET 2 CELLS FROM THE TREE\r
+        003727' 273300  012727'         ADDB V,FREE\r
+        003730' 311300  013102'         CAML    V,SYMBOL        ;HAVE WE RUN OUT OF CORE?\r
+        003731' 260740  010014'         PUSHJ   PP,XCEEDS       ;YES, TRY TO BORROW SOME MORE\r
+        003732' 275300  000002          SUBI    V,2             ;GET RIGHT CELL FOR POINTER\r
+        003733' 403446  000000          SETZB   RC,0(V)         ;ALL SET, ZERO VALUES\r
+        003734' 205240  401000          MOVSI   ARG,SYMF!EXTF\r
+        003735' 260740  012366'         PUSHJ   PP,INSERT       ;INSERT/UPDATE IT\r
+        003736' 205240  004000          MOVSI   ARG,PNTF\r
+        003737' 436244  000000          IORM    ARG,0(SX)\r
+        003740' 334244  777777          SKIPA ARG,-1(SX)                ;GET THE SIXBIT FOR THE NAME\r
+        003741' 664600  040000  EXTER4: TROA ER,ERRA    ;FLAG AS ERROR\r
+        003742' 202246  000001          MOVEM ARG,1(V)          ;AND STORE THAT IN CASE SYMBOL TABLE MOVES\r
+        003743' 321400  003715' EXTER3: JUMPCM  EXTER0\r
+        003744' 263740  000000          POPJ    PP,             ;NO, EXIT\r
+\r\fMACRO V.10                     PAGE 72\r
+        PSEUDO-OP HANDLERS\r
+\r
+        003745' 261740  000015  EVAL10: PUSH    PP,RX\r
+        003746' 541640  000012          HRRI    RX,^D10\r
+        003747' 260740  001070'         PUSHJ   PP,EVALEX       ;EVALUATE\r
+        003750' 262740  000015          POP     PP,RX           ;RESET RADIX\r
+        003751' 322440  000446'         JUMPE   RC,POPOUT       ;EXIT IF ABSOLUTE\r
+\r
+        003752' 332000  013270' QEXT:   SKIPE   EXTPNT          ;ANY POSSIBILITIES?\r
+        003753' 664600  000040          TROA    ER,ERRE         ;YES, FLAG EXTERNAL ERROR\r
+        003754' 660600  004000          TRO     ER,ERRR         ;NO, FLAG RELOCATION ERROR\r
+        003755' 513000  000011          HLLZS   RC              ;CLEAR RELOCATION/EXTERNAL\r
+        003756' 263740  000000          POPJ    PP,\r
+\r
+        003757' 260740  001070' EVALXQ: PUSHJ   PP,EVALEX       ;EVALUATE EXPRESSION\r
+        003760' 627440  777776          TLZN RC,-2              ;LEFT HALF EXTERNAL\r
+        003761' 622440  777776          TRZE    RC,-2           ;WAS AN EXTERNAL FOUND?\r
+        003762' 660600  000040          TRO     ER,ERRE         ;YES, FLAG ERROR\r
+        003763' 263740  000000          POPJ    PP,             ;RETURN\r
+\r\fMACRO V.10                     PAGE 73\r
+        PSEUDO-OP HANDLERS\r
+\r
+        003764' 260740  001034' OPDEF0: PUSHJ   PP,GETSYM       ;GET THE FIRST SYMBOL\r
+        003765' 263740  000000          POPJ    PP,             ;ERROR IF INVALID SYMBOL\r
+        003766' 302340  000073          CAIE    C,73            ;"["?\r
+        003767' 254000  003311'         JRST    ERRAX           ;NO, ERROR\r
+        003770' 261740  000000          PUSH    PP,AC0          ;STACK MNEMONIC\r
+        003771' 350000  013321'         AOS     LITLVL          ;SHORT OUT LOCATION INCREMENT\r
+        003772' 260740  000125'         PUSHJ   PP,STMNT        ;EVALUATE STATEMENT\r
+        003773' 335000  013104'         SKIPGE  STPX            ;CODE STORED?\r
+        003774' 664600  040000          TROA    ER,ERRA         ;NO,"A" ERROR\r
+        003775' 260740  002712'         PUSHJ   PP,DSTOW        ;GET AND DECODE VALUE\r
+        003776' 370000  013321'         SOS     LITLVL\r
+        003777' 250017  000000          EXCH    AC0,0(PP)       ;EXCHANGE VALUE FOR MNEMONIC\r
+        004000' 261740  000011          PUSH    PP,RC           ;STACK RELOCATION\r
+        004001' 661600  000040          TLO     IO,DEFCRS       ;SAY WE ARE DEFINING IT\r
+        004002' 260740  012173'         PUSHJ   PP,MSRCH        ;SEARCH SYMBOL TABLE\r
+        004003' 205240  010000          MOVSI   ARG,OPDF        ;NOT FOUND\r
+        004004' 262740  000011          POP     PP,RC           ;RESTORE VALUES\r
+        004005' 262740  000006          POP     PP,V\r
+        004006' 603240  060000          TLNE    ARG,SYNF!MACF\r
+        004007' 660600  040000          TRO     ER,ERRA         ;YES "A" ERROR\r
+        004010' 606600  040000          TRNN    ER,ERRA         ;ERROR?\r
+        004011' 260740  012366'         PUSHJ   PP,INSERT       ;NO, INSERT/UPDATE\r
+        004012' 621600  000040          TLZ IO,DEFCRS           ;JUST IN CASE\r
+        004013' 260740  004452'         PUSHJ   PP,BYPASS\r
+        004014' 254000  002717'         JRST    STOWI           ;BE SURE STOW IS RESET\r
+\r
+\r
+        004015' 200000  013326' DEPHA0: MOVE    AC0,LOCO\r
+        004016' 334440  013334'         SKIPA   RC,MODO         ;SET TO OUTPUT VALUES AND SKIP\r
+        004017' 260740  003757' PHASE0: PUSHJ   PP,EVALXQ       ;EVALUATE AND CHECK FOR EXTERNAL\r
+        004020' 202000  013325'         MOVEM   AC0,LOCA        ;SET ASSEMBLY LOCATION COUNTER\r
+        004021' 202440  013332'         MOVEM   RC,MODA\r
+        004022' 254000  003335'         JRST    BLOCK2\r
+\r\fMACRO V.10                     PAGE 74\r
+        PSEUDO-OP HANDLERS\r
+\r
+        004023' 321600  003311' ASSIGN: JUMPAD  ERRAX           ;NO, ERROR\r
+        004024' 260740  004037'         PUSHJ   PP,ASSIG1\r
+        004025' 603600  000001          TLNE    IO,IOSALL       ;SUPPRESS ALL?\r
+        004026' 326540  003360'         JUMPN   MRP,CPOPJ       ;IF IN MACRO\r
+        004027' 202440  013323' ASSIG7: MOVEM   RC,ASGBLK\r
+        004030' 602440  777776          TRNE    RC,-2           ;EXTERNAL\r
+        004031' 513000  013323'         HLLZS   ASGBLK          ;YES,CLEAR RELOCATION\r
+        004032' 603440  000001          TLNE    RC,1            ;LEFT HALF NOT RELOC?\r
+        004033' 603440  777776          TLNE    RC,-2           ;...\r
+        004034' 563000  013323'         HRROS   ASGBLK          ;YES, SET FLAG\r
+        004035' 202300  013324'         MOVEM   V,LOCBLK\r
+        004036' 263740  000000          POPJ    PP,\r
+\r
+        004037' 261740  000000  ASSIG1: PUSH    PP,AC0          ;SAVE SYMBOL\r
+        004040' 403000  013270'         SETZB AC0,EXTPNT        ;SPECIAL CHECK FOR == WFW\r
+        004041' 260740  006335'         PUSHJ PP,PEEK           ;IS THE NEXT ON =\r
+        004042' 302340  000075          CAIE    C,"="\r
+        004043' 254000  004047'         JRST    ASSIG5\r
+        004044' 661000  100000          TLO     AC0,NOOUTF      ;YES, NOT OUT TO DDT WFW\r
+        004045' 260740  001354'         PUSHJ   PP,GETCHR       ;PROCESS THE CHAR.\r
+        004046' 260740  006335'         PUSHJ   PP,PEEK         ;CHECK FOR ==: DMN\r
+        004047' 302340  000072  ASSIG5: CAIE    C,":"           ;IS IT\r
+        004050' 254000  004053'         JRST    ASSIG6          ;NO\r
+        004051' 661000  000400          TLO     AC0,INTF        ;MAKE INTERNAL\r
+        004052' 260740  001354'         PUSHJ   PP,GETCHR       ;REPEAT IT\r
+        004053' 202000  013417' ASSIG6: MOVEM AC0,HDAS          ;STORE THESE BITS WFW\r
+        004054' 260740  001057'         PUSHJ   PP,EVALCM       ;EVALUATE EXPRESSION\r
+        004055' 250017  000000          EXCH    AC0,0(PP)       ;SWAP VALUE FOR SYMBOL\r
+        004056' 261740  000011          PUSH    PP,RC\r
+        004057' 606440  777776          TRNN RC,-2              ;CHECK EXTERNAL AGREEMENT\r
+        004060' 254000  004065'         JRST ASSIG2\r
+        004061' 553000  000011          HRRZS RC\r
+        004062' 550240  013270'         HRRZ ARG,EXTPNT\r
+        004063' 312440  000005          CAME RC,ARG\r
+        004064' 260740  003752'         PUSHJ   PP,QEXT         ;EXTERNAL OR RELOCATION ERROR\r
+        004065' 554457  000000  ASSIG2: HLRZ RC,(PP)\r
+        004066' 606440  777776          TRNN RC,-2\r
+        004067' 254000  004073'         JRST ASSIG3\r
+        004070' 554240  013270'         HLRZ ARG,EXTPNT\r
+        004071' 312440  000005          CAME RC,ARG\r
+        004072' 260740  003752'         PUSHJ   PP,QEXT\r
+        004073' 661600  000040  ASSIG3: TLO IO,DEFCRS\r
+        004074' 260740  012210'         PUSHJ   PP,SSRCH\r
+        004075' 205240  400000          MOVSI   ARG,SYMF\r
+        004076' 434240  013417'         IOR ARG,HDAS    ;WFW\r
+        004077' 603240  002000          TLNE    ARG,UNDF        ;WAS IT UNDEFINED\r
+        004100' 621240  005000          TLZ     ARG,EXTF!PNTF   ;YES,CLEAR EXTF NOW\r
+        004101' 621240  002100          TLZ     ARG,UNDF!VARF   ;CANCEL UNDEFINED AND VARIABLE FLAGS\r
+        004102' 402000  013270'         SETZM EXTPNT            ;FOR REST OF WORLD\r
+        004103' 262740  000011          POP     PP,RC\r
+        004104' 602600  577760          TRNE    ER,ERRORS-ERRQ\r
+        004105' 400440  000000          SETZ    RC,             ;CLEAR RELOCATION\r
+        004106' 262740  000006          POP     PP,V\r
+\r\fMACRO V.10                     PAGE 74-1\r
+        PSEUDO-OP HANDLERS\r
+\r
+        004107' 602600  002000          TRNE    ER,ERRU         ;WAS VALUE UNDEFINED?\r
+        004110' 661240  002000          TLO     ARG,UNDF        ;YES,SO TURN UNDF ON\r
+        004111' 603240  201000          TLNE    ARG,TAGF!EXTF\r
+        004112' 254000  003311'         JRST    ERRAX\r
+        004113' 254000  012366'         JRST    INSERT\r
+\r
+\r\fMACRO V.10                     PAGE 75\r
+        PSEUDO-OP HANDLERS\r
+\r
+        004114' 260740  004146' LOC0:   PUSHJ   PP,HIGHQ        ;AC0=0,0\r
+        004115' 261740  000000          PUSH    PP,AC0          ;SAVE MODE REQUESTED\r
+        004116' 557000  000000          HLRZS   AC0             ;PUT MODE IN RIGHT HALF\r
+        004117' 326000  004140'         JUMPN   AC0,RELOC0      ;RELOC PSEUDO-OP\r
+        004120' 316000  013334'         CAMN    AC0,MODO        ;SAME AS PRESENT MODE?\r
+                                        JRST    [HRRZ AC0,LOCO  ;YES\r
+                                                EXCH AC0,ABSLOC ;EXCH VALUES\r
+        004121' 254000  014211'                 JRST    LOC01]\r
+        004122' 550000  013326'         HRRZ    AC0,LOCO        ;NO, GET CURRENT VALUE\r
+        004123' 202000  013327'         MOVEM   AC0,RELLOC      ;SAVE IT\r
+        004124' 200000  013330'         MOVE    AC0,ABSLOC      ;GET LAST RELOC VALUE\r
+        004125' 260740  004452' LOC01:  PUSHJ   PP,BYPASS       ;SKIP BLANKS\r
+        004126' 661600  000004          TLO     IO,IORPTC\r
+        004127' 302340  000033          CAIE    C,EOL           ;USE PREVIOUS VALUE IF NULL ARGUMENT\r
+        004130' 260740  003757'         PUSHJ   PP,EVALXQ       ;GET EXPRESSION AND TEST EXTERNAL\r
+        004131' 542017  000000          HRRM    AC0,(PP)        ;STORE NEW VALUE\r
+        004132' 262740  000000          POP     PP,AC0          ;RETRIEVE STORED MODE AND VALUE\r
+        004133' 552000  013325' LOC10:  HRRZM   AC0,LOCA        ;SET ASSEMBLY LOCATION\r
+        004134' 552000  013326'         HRRZM   AC0,LOCO        ;AND OUTPUT LOCATION\r
+        004135' 556000  013332'         HLRZM   AC0,MODA        ;SET MODE\r
+        004136' 556000  013334'         HLRZM   AC0,MODO\r
+        004137' 254000  003335'         JRST    BLOCK2\r
+\r
+        004140' 316000  013334' RELOC0: CAMN    AC0,MODO\r
+                                        JRST    [HRRZ   AC0,LOCO\r
+                                                EXCH    AC0,RELLOC\r
+        004141' 254000  014214'                 JRST    LOC01]\r
+        004142' 550000  013326'         HRRZ    AC0,LOCO\r
+        004143' 202000  013330'         MOVEM   AC0,ABSLOC\r
+        004144' 200000  013327'         MOVE    AC0,RELLOC\r
+        004145' 254000  004125'         JRST    LOC01\r
+\r
+\r\fMACRO V.10                     PAGE 76\r
+        PSEUDO-OP HANDLERS\r
+\r
+                                IFN RENTSW,<\r
+                                HISEG1: PUSHJ   PP,HIGHQ        ;SET CURRENT PROGRAM BREAK\r
+                                        PUSHJ   PP,COUTD        ;DUMP CURRENT TYPE OF BLOCK\r
+                                        SKIPN   HISNSW          ;IF WE HAVE SEEN IT BEFORE\r
+                                        SKIPE   HIGH            ;OR ANY RELOC CODE PUT OUT\r
+                                        TRO     ER,ERRQ         ;FLAG AS AN ERROR\r
+                                        PUSHJ   PP,BYPASS       ;GO GET EXPRESSION\r
+                                        TLO     IO,IORPTC\r
+                                        PUSHJ   PP,EVALXQ       ;CHECK FOR EXTERNAL\r
+                                        ANDCMI  AC0,1777        ;ONLY ALLOWED TO START ON NEW K BOUND\r
+                                        HRRZM   AC0,LOCA        ;SET LOC COUNTERS\r
+                                        HRRZM   AC0,LOCO\r
+                                        MOVEI   RC,1            ;ASSUME RELOCATABLE\r
+                                        POPJ    PP,\r
+                                \r
+                                TWSEG0: PUSHJ   PP,HISEG1       ;COMMON CODE\r
+                                        JUMPN   AC0,.+2         ;ARGUMENT SEEN\r
+                                        MOVEI   AC0,400000      ;ASSUME 400000\r
+                                        HRRZM   AC0,HMIN        ;SET OFSET OF HIGH SEG.\r
+                                        HRRZM   AC0,HHIGH       ;INCASE NO HISEG CODE\r
+                                        TLOA    AC0,(1B0)       ;SIGNAL TWO SEGMENTS AND SKIP\r
+                                \r
+                                HISEG0: PUSHJ   PP,HISEG1       ;COMMON CODE\r
+                                HISEG2: MOVEM   AC0,SVTYP3      ;SAVE THE HISEG ARG\r
+                                        MOVEM   RC,MODA         ;SET MODES\r
+                                        MOVEM   RC,MODO\r
+                                        SETOM   HISNSW          ;WE HAVE ALREADY PUT ONE OUT\r
+                                        JRST    BLOCK2          ;MAKE LISTING HAPPEN RIGHT>\r
+\r
+                                IFE RENTSW,<\r
+                                        SYN     CPOPJ,HISEG0\r
+                                        SYN     CPOPJ,TWSEG0>\r
+\r
+                                        SYN     CPOPJ,ONFORM\r
+                                        SYN     CPOPJ,OFFORM\r
+\r\fMACRO V.10                     PAGE 77\r
+        PSEUDO-OP HANDLERS\r
+\r
+        004146'                 HIGHQ:\r
+        004146' 200300  013326' HIGHQ1: MOVE    V,LOCO  ;GET ASSEMBLY LOCATION\r
+        004147' 336000  013334'         SKIPN   MODO            ;IF ASSEMBLY MODE IS ABSOLUTE\r
+                                        JRST    [CAMLE V,ABSHI  ;RECORED ABS HIGHEST ALSO\r
+                                                MOVEM V,ABSHI\r
+        004150' 254000  014217'                 POPJ PP,]\r
+                                IFN RENTSW,<SKIPE       HMIN    ;IS IT A TWO SEGMENT PROGRAM?\r
+                                        JRST    [CAMGE  V,HMIN  ;YES,IS THIS HIGH SEG.?\r
+                                                JRST    .+1     ;NO,STORE LOW SEGMENT\r
+                                                CAMLE   V,HHIGH ;YES,IS IT GREATER THAN "HHIGH"?\r
+                                                MOVEM   V,HHIGH ;YES,REPLACE WITH LARGER VALUE\r
+                                                POPJ    PP,]>\r
+        004151' 313300  013263'         CAMLE   V,HIGH          ;IS IT GREATER THAN "HIGH"?\r
+        004152' 202300  013263'         MOVEM   V,HIGH          ;YES, REPLACE WITH LARGER VALUE\r
+        004153' 263740  000000          POPJ    PP,\r
+        \r
+        004154' 625640  200000  ONML:   TLZA FR,MWLFLG          ;MULTI-WORD LITERALS OK\r
+        004155' 661640  200000  OFFML:  TLO FR,MWLFLG           ;NO\r
+        004156' 263740  000000          POPJ PP,\r
+\r
+        004157' 476000  013257' OFFSYM: SETOM   IONSYM  ;SUPRESS SYMBOL TABLE LISTING\r
+        004160' 263740  000000          POPJ    PP,\r
+\r
+        004161' 260740  001034' SUPRE0: PUSHJ PP,GETSYM ;GET A SYMBOL TO SUPRES\r
+        004162' 254000  004166'         JRST SUPRE1     ;ERROR\r
+        004163' 260740  012210'         PUSHJ PP,SSRCH  ;SYMBOL ONLY\r
+        004164' 254000  004166'         JRST SUPRE1     ;GIVE ERROR MESSAGE\r
+        004165' 665240  000004          TLOA ARG,SUPRBT ;SET THE SUPRESS BIT\r
+        004166' 664600  040000  SUPRE1: TROA ER,ERRA\r
+        004167' 436244  000000          IORM ARG,(SX)   ;PUT BACK\r
+        004170' 321400  004161'         JUMPCM SUPRE0   ;ANY MORE?\r
+        004171' 254000  004175'         JRST    SUPRS1\r
+\r
+        004172' 260740  003025' SUPRSA: PUSHJ PP,LOOKUP ;SUPRESS ALL\r
+        004173' 205240  000004          MOVSI ARG,SUPRBT\r
+        004174' 436244  000000          IORM ARG,(SX)\r
+        004175' 402000  013270' SUPRS1: SETZM EXTPNT    ;JUST IN CASE WE LOOKED ONE UP\r
+        004176' 263740  000000          POPJ PP,\r
+\r
+        004177' 321640  000446' XPUNG0: JUMP1   POPOUT\r
+        004200' 260740  003025'         PUSHJ   PP,LOOKUP\r
+        004201' 200244  000000          MOVE    ARG,(SX)        ;GET SYMBOL FLAGS\r
+        004202' 607240  001610          TLNN    ARG,INTF!ENTF!EXTF!SPTR\r
+        004203' 665240  000004          TLOA    ARG,SUPRBT      ;LOCAL SYMBOL,SO SUPPRESS IT\r
+        004204' 402000  013270'         SETZM   EXTPNT\r
+        004205' 202244  000000          MOVEM   ARG,(SX)        ;RESTORE FLAGS\r
+        004206' 263740  000000          POPJ    PP,\r
+\r\fMACRO V.10                     PAGE 78\r
+        PSEUDO-OP HANDLERS\r
+\r
+        004207' 325640  003361' TITLE0: JUMP2   REMAR0\r
+        004210' 201200  000120          MOVEI   SX,.TBUF\r
+        004211' 541000  013230'         HRRI    AC0,TBUF\r
+        004212' 260740  004224'         PUSHJ PP,SUBTT1 ;GO READ IT\r
+        004213' 202200  013227'         MOVEM   SX,TCNT         ;SAVE COUNT OF CHARS. WRITTEN\r
+                                IFN UNIVR,<SKIPE        UNIVSN          ;WAS IT A UNIVERSAL?\r
+                                        PUSHJ   PP,ADDUNV       ;YES  ADD TO TABLE>\r
+        004214' 663600  000002          TLOE IO,IOTLSN  ;HAVE WE SEEN ONE\r
+                                IFE CCLSW,<TRO  ER,ERRM         ;YES, COMPLAIN>\r
+        004215' 664600  000020  IFN CCLSW,<TROA ER,ERRM         ;YES, MESSAGE\r
+        004216' 254000  004235'         JRST    PRNAM           ;PRINT NAME IF FIRST ONE>\r
+        004217' 263740  000000          POPJ    PP,             ;EXIT OTHERWISE\r
+\r
+        004220' 332000  013057' SUBTT0: SKIPE   SBUF            ;STORE FIRST SUBTTL ON PASS1\r
+        004221' 321640  003361'         JUMP1   REMAR0          ;OTHERWISE EXIT IF PASS ONE\r
+        004222' 201200  000120          MOVEI   SX,.SBUF\r
+        004223' 541000  013057'         HRRI    AC0,SBUF\r
+\r
+        004224' 260740  004452' SUBTT1: PUSHJ   PP,BYPASS       ;BYPASS LEADING BLANKS\r
+        004225' 661600  000004          TLO     IO,IORPTC\r
+        004226' 260740  001406' SUBTT3: PUSHJ   PP,CHARAC       ;GET ASCII CHARACTER\r
+        004227' 136340  000000          IDPB    C,AC0           ;STORE IN BLOCK\r
+        004230' 305340  000040          CAIGE   C,40            ;TEST FOR TERMINATOR\r
+        004231' 306340  000011          CAIN    C,HT\r
+        004232' 367200  004226'         SOJG    SX,SUBTT3       ;TEST FOR BUFFER FULL\r
+        004233' 137440  000000          DPB     RC,AC0          ;END, STORE TERMINATOR\r
+        004234' 364200  003360'         SOJA    SX,CPOPJ        ;COUNT NUL AND EXIT\r
+\r
+                                IFN CCLSW,<\r
+        004235' 607600  001000  PRNAM:  TLNN IO,CRPGSW  ;NOT IF NOT RPG\r
+        004236' 263740  000000          POPJ PP,\r
+        004237' 261740  000000          PUSH    PP,AC0          ;SAVE AC0 DMN\r
+        004240' 261740  000011          PUSH    PP,RC           ;AND RC\r
+        004241' 200000  014150'         MOVE AC0,[POINT 7,TBUF]\r
+        004242' 200200  014222'         MOVE SX,[POINT 7,OTBUF]\r
+        004243' 201440  000006          MOVEI RC,6      ;MAX OF SIX CHRS\r
+        004244' 134340  000000  PN1:    ILDB C,AC0\r
+        004245' 303340  000040          CAILE C," "     ;CHECK FOR LEGAL\r
+        004246' 303340  000172          CAILE C,"Z"+40  ;CHECK AGAINST LOWER CASE Z\r
+        004247' 254000  004252'         JRST PN2\r
+        004250' 136340  000004          IDPB C,SX       ;PUT IN OUTPUT BUFFER\r
+        004251' 367440  004244'         SOJG RC,PN1     ;GET MORE\r
+        004252' 201340  000000  PN2:    MOVEI C,0\r
+        004253' 136340  000004          IDPB C,SX       ;TERMINATOR\r
+        004254' 051140  013335'         TTCALL  3,OTBUF\r
+                                        TTCALL  3,[ASCIZ /\r
+        004255' 051140  014223' /]\r
+        004256' 262740  000011          POP     PP,RC\r
+        004257' 262740  000000          POP     PP,AC0          ;RESTORE AC0 DMN\r
+        004260' 263740  000000          POPJ PP,\r
+                                >\r
+\r\fMACRO V.10                     PAGE 79\r
+        PSEUDO-OP HANDLERS\r
+\r
+        004261' 260740  001034' SYN0:   PUSHJ   PP,GETSYM       ;GET THE FIRST SYMBOL\r
+        004262' 254000  003311'         JRST    ERRAX           ;ERROR, EXIT\r
+        004263' 260740  012173'         PUSHJ   PP,MSRCH        ;TRY FOR MACRO/OPDEF\r
+        004264' 254000  004302'         JRST    SYN3            ;NO,0THRY FOR OPERAND\r
+        004265' 201200  012173' SYN1:   MOVEI   SX,MSRCH        ;YES, SET FLAG\r
+        004266' 260740  007211' SYN2:   PUSHJ   PP,SAVEXS       ;SAVE REGISTERS\r
+        004267' 325400  003311'         JUMPNC  ERRAX           ;ERROR IF NO COMMA\r
+        004270' 260740  001034'         PUSHJ   PP,GETSYM       ;GET THE SECOND SYMBOL\r
+        004271' 263740  000000          POPJ    PP,\r
+        004272' 260760  013051'         PUSHJ   PP,@SAVBLK+SX   ;SEARCH FOR SECOND SYMBOL\r
+        004273' 255000  000000          JFCL\r
+        004274' 200240  013052'         MOVE    ARG,SAVBLK+ARG  ;GET VALUES\r
+        004275' 200440  013056'         MOVE    RC,SAVBLK+RC\r
+        004276' 200300  013053'         MOVE    V,SAVBLK+V\r
+        004277' 603240  020000          TLNE    ARG,MACF        ;MACRO?\r
+        004300' 260740  006347'         PUSHJ   PP,REFINC       ;YES, INCREMENT REFERENCE\r
+        004301' 254000  012366'         JRST    INSERT          ;INSERT AND EXIT\r
+\r
+        004302' 260740  012210' SYN3:   PUSHJ   PP,SSRCH        ;SEARCH FOR OPERAND\r
+        004303' 254000  004313'         JRST    SYN4            ;NOT FOUND, TRY OP CODE\r
+        004304' 661240  040000          TLO     ARG,SYNF        ;FLAG AS SYNONYM\r
+        004305' 603240  001000          TLNE    ARG,EXTF        ;EXTERNAL?\r
+        004306' 550300  000005          HRRZ    V,ARG           ;YES, RELPACE WITH POINTER\r
+        004307' 201200  012210'         MOVEI   SX,SSRCH        ;SET FLAG\r
+        004310' 607240  000100          TLNN ARG,VARF   ;DO NOT LET HIM SYN A VARIABLE\r
+        004311' 254000  004266'         JRST    SYN2\r
+        004312' 254000  003311'         JRST ERRAX\r
+\r
+        004313' 260740  010470' SYN4:   PUSHJ   PP,OPTSCH       ;SEARCH FOR OP-CODE\r
+        004314' 254000  003311'         JRST    ERRAX           ;NOT FOUND, EXIT WITH ERROR\r
+        004315' 205240  040000          MOVSI   ARG,SYNF        ;FLAG AS SYNONYM\r
+        004316' 254000  004265'         JRST    SYN1\r
+\r\fMACRO V.10                     PAGE 80\r
+        PSEUDO-OP HANDLERS\r
+\r
+        004317' 260740  001034' PURGE0: PUSHJ   PP,GETSYM       ;GET A MNEMONIC\r
+                                        JRST    [TRZ ER,ERRA    ;CLEAR ERROR\r
+        004320' 254000  014224'                 POPJ    PP,]    ;AND RETURN\r
+        004321' 260740  012173'         PUSHJ   PP,MSRCH        ;SEARCH MACRO SYMBOL TABLE\r
+        004322' 254000  004330'         JRST    PURGE2          ;NOT FOUND, TRY SYMBOLS\r
+        004323' 261740  000010          PUSH    PP,CS           ;SAVE CS AS IT MAY GET GARBAGED\r
+        004324' 603240  020000          TLNE    ARG,MACF        ;MACRO?\r
+        004325' 260740  006352'         PUSHJ   PP,REFDEC       ;YES, DECREMENT THE REFERENCE\r
+        004326' 262740  000010          POP     PP,CS\r
+        004327' 254000  004343'         JRST    PURGE4          ;REMOVE SYMBOL FROM TABLE\r
+\r
+        004330' 260740  012210' PURGE2: PUSHJ   PP,SSRCH        ;TRY OPERAND SYMBOL TABLE\r
+        004331' 254000  004344'         JRST    PURGE5          ;NOT FOUND GET NEXT SYMBOL\r
+        004332' 606440  777776          TRNN RC,-2              ;CHECK COMPLEX EXTERNAL\r
+        004333' 603440  777776          TLNE RC,-2\r
+        004334' 603240  040000          TLNE ARG,SYNF\r
+        004335' 254000  004337'         JRST    .+2\r
+        004336' 254000  004342'         JRST PURGE3\r
+        004337' 603240  003000          TLNE    ARG,EXTF!UNDF   ;ERROR IF EXTERNAL OR UNDEFINED\r
+        004340' 603240  040000          TLNE    ARG,SYNF        ;BUT NOT A SYNONYM\r
+        004341' 254000  004343'         JRST    PURGE4\r
+        004342' 664600  040000  PURGE3: TROA    ER,ERRA         ;NOT FOUND, ERROR\r
+        004343' 260740  012445' PURGE4: PUSHJ   PP,REMOVE       ;REMOVE FROM THE SYMBOL TABLE\r
+        004344' 321400  004317' PURGE5: JUMPCM  PURGE0\r
+        004345' 263740  000000          POPJ    PP,             ;EXIT\r
+\r\fMACRO V.10                     PAGE 81\r
+        PSEUDO-OP HANDLERS\r
+\r
+        004346' 603240  002000  OPD1:   TLNE    ARG,UNDF        ;IF OPDEF IS UNDEFINED\r
+        004347' 660600  000200          TRO     ER,ERRO         ;GIVE "O" ERROR\r
+        004350' 200000  000006  OPD:    MOVE    AC0,V           ;PUT VALUE IN AC0\r
+        004351' 254000  004354'         JRST    OP\r
+        004352' 205100  301117  IOP:    MOVSI   AC2,(POINT 9,0(PP),11)\r
+        004353' 665600  000020          TLOA    IO,IOIOPF       ;SET "IOP SEEN" AND SKIP\r
+        004354' 205100  270417  OP:     MOVSI   AC2,(POINT 4,0(PP),12)\r
+        004355' 261740  000011          PUSH    PP,RC\r
+        004356' 261740  000000          PUSH    PP,AC0          ;STACK CODE \r
+        004357' 261740  000002          PUSH    PP,AC2\r
+        004360' 260740  001070'         PUSHJ   PP,EVALEX       ;EVALUATE FIRST EXPRESSION\r
+        004361' 262740  000002          POP     PP,AC2\r
+        004362' 325400  004374'         JUMPNC  OP2\r
+        004363' 260740  001354' OP1B:   PUSHJ   PP,GETCHR       ;GET A CHARACTER\r
+        004364' 321400  004605'         JUMPCM XWD5             ;PROCESS COMMA COMMA IN XWD\r
+        004365' 661600  000004          TLO     IO,IORPTC       ;NOT A COMMA,REPEAT IT\r
+        004366' 135040  000002          LDB     AC1,AC2\r
+        004367' 270040  000000          ADD     AC1,AC0\r
+        004370' 137040  000002          DPB     AC1,AC2\r
+        004371' 322440  004373'         JUMPE   RC,OP1A         ;EXTERNAL OR RELOCATABLE?\r
+        004372' 260740  003752'         PUSHJ   PP,QEXT         ;YES, DETERMINE WHICH AND FLAG AN ERROR\r
+\r
+        004373' 260740  001070' OP1A:   PUSHJ   PP,EVALEX       ;GET ADDRESS PART\r
+        004374' 260740  004403' OP2:    PUSHJ   PP,EVADR        ;EVALUATE STANDARD ADDRESS\r
+        004375' 262740  000000  OP3:    POP     PP,AC0          ;PUT IN AC0\r
+        004376' 262740  000011          POP     PP,RC\r
+        004377' 332017  000000          SKIPE   (PP)            ;CAME FROM EVALCM?\r
+        004400' 254000  002665'         JRST    STOW            ;NO,STOW CODE AND EXIT\r
+        004401' 262740  000001          POP     PP,AC1          ;YES,EXIT IMMEDIATELY\r
+        004402' 263740  000000          POPJ    PP,\r
+\r
+\r\fMACRO V.10                     PAGE 82\r
+        PSEUDO-OP HANDLERS\r
+\r
+        004403'                 EVADR:                          ;EVALUATE STANDARD ADDRESS\r
+        004403' 607000  777777  IFE IIISW,<TLNN AC0,-1          ;OK IF ALL 0'S\r
+        004404' 254000  004410'         JRST    .+4             ;IT WAS\r
+        004405' 641000  777777          TLC     AC0,-1          ;CHANGE ALL ONES TO ZEROS\r
+        004406' 643000  777777          TLCE    AC0,-1          ;OK IF ALL 1'S\r
+        004407' 660600  200000          TRO     ER,ERRQ         ;NO,FLAG Q ERROR>\r
+        004410' 270017  777777          ADD     AC0,-1(PP)      ;ADD ADDRESS PORTIONS\r
+        004411' 500017  777777          HLL     AC0,-1(PP)      ;GET LEFT HALF\r
+        004412' 623640  020000          TLZE    FR,INDSW        ;INDIRECT BIT?\r
+        004413' 661000  000020          TLO     AC0,(Z @)       ;YES, PUT IT IN\r
+        004414' 202017  777777          MOVEM   AC0,-1(PP)      ;RE-STACK CODE\r
+        004415' 270457  777776          ADD     RC,-2(PP)       ;UPDATE RELOCATION\r
+        004416' 542457  777776          HRRM    RC,-2(PP)       ;USE HALF WORD ADD\r
+        004417' 302340  000010          CAIE    C,10            ;"("?\r
+        004420' 263740  000000          POPJ    PP,             ;NO, EXIT\r
+\r
+        004421' 207000  013270'         MOVSS   EXTPNT          ;WFW\r
+        004422' 260740  001057'         PUSHJ   PP,EVALCM       ;EVALUATE\r
+        004423' 207000  013270'         MOVSS   EXTPNT          ;WFW\r
+        004424' 207300  000000          MOVSS   V,AC0           ;SWAP HALVES\r
+        004425' 207200  000011  IFE IIISW,<MOVSS SX,RC\r
+        004426' 434200  000006          IOR     SX,V            ;MERGE RELOCATION\r
+        004427' 606200  777777          TRNN    SX,-1           ;RIGHT HALF ZERO?\r
+        004430' 254000  004442'         JRST    OP2A            ;YES, DO SIMPLE ADD\r
+        004431' 200240  000011          MOVE    ARG,RC          ;NO, SWAP RC INTO ARG>\r
+                                IFN IIISW,<MOVSS ARG,RC>\r
+        004432' 270317  777777          ADD     V,-1(PP)        ;ADD RIGHT HALVES\r
+        004433' 270257  777776          ADD     ARG,-2(PP)\r
+        004434' 542317  777777          HRRM    V,-1(PP)        ;UPDATE WITHOUT CARRY\r
+        004435' 542257  777776          HRRM    ARG,-2(PP)\r
+        004436' 513000  000000          HLLZS   AC0             ;PREPARE LEFT HALVES\r
+        004437' 513000  000011          HLLZS   RC\r
+        004440' 603200  777777  IFE IIISW,<TLNE SX,-1           ;IS LEFT HALF ZERO?\r
+        004441' 660600  200000          TRO     ER,ERRQ         ;NO FLAG FORMAT ERROR\r
+        004442' 603440  777777  OP2A:   TLNE    RC,-1           ;RELOCATION FOR LEFT HALF?\r
+        004443' 260740  004455'         PUSHJ   PP,OP2A1        ;YES,IS IT LEGAL?\r
+        004444' 603000  777000          TLNE    AC0,777000      ;OP CODE FIELD USED?\r
+                                        JRST    [EXCH AC0,-1(PP);YES, GET STORED CODE\r
+                                                TLNE AC0,777000 ;OP CODE FIELD BEEN SET?\r
+                                                TRO ER,ERRQ     ;YES, MOST LIKELY AN ERROR\r
+                                                EXCH AC0,-1(PP)\r
+        004445' 254000  014226'                 JRST    .+1]    ;RETURN TO ADD >\r
+        004446' 272017  777777          ADDM    AC0,-1(PP)      ;MERGE WITH PREVIOUS VALUE\r
+        004447' 272457  777776          ADDM    RC,-2(PP)\r
+        004450' 302340  000011          CAIE    C,11            ;")"?\r
+        004451' 254000  003311'         JRST    ERRAX           ;NO, FLAG ERROR\r
+                                                                ;YES, BYPASS PARENTHESIS\r
+        004452'                 BYPASS:\r
+        004452' 260740  001354' BYPAS1: PUSHJ   PP,GETCHR\r
+        004453' 322340  004452' BYPAS2: JUMPE   C,.-1           ;SKIP TRAILING BLANKS\r
+        004454' 263740  000000          POPJ    PP,             ;EXIT\r
+\r
+\r\fMACRO V.10                     PAGE 83\r
+        PSEUDO-OP HANDLERS\r
+\r
+                                IFE IIISW,<\r
+        004455' 250457  777776  OP2A1:  EXCH    RC,-2(PP)       ;GET STORED CODE\r
+        004456' 607440  777777          TLNN    RC,-1           ;OK IF ALL ZERO\r
+        004457' 254000  004463'         JRST    OP2A2           ;OK SO RETURN\r
+        004460' 641440  777777          TLC     RC,-1           ;CHANGE ALL ONES TO ZEROS\r
+        004461' 643440  777777          TLCE    RC,-1           ;OK IF ALL ONES\r
+        004462' 660600  200000          TRO     ER,ERRQ         ;OTHERWISE A "Q" ERROR\r
+        004463' 250457  777776  OP2A2:  EXCH    RC,-2(PP)       ;GET RC,BACK\r
+        004464' 263740  000000          POPJ    PP,             ;AND RETURN>\r
+\r
+\r
+        004465' 514000  000015  EXPRES: HRLZ    AC0,RX          ;FUDGE FOR OCT0\r
+\r
+        004466' 261740  000015  OCT0:   PUSH    PP,RX\r
+        004467' 544640  000000          HLR     RX,AC0\r
+        004470' 260740  001070' OCT1:   PUSHJ   PP,EVALEX       ;EVALUATE\r
+        004471' 260740  002665'         PUSHJ   PP,STOW         ;STOW CODE\r
+        004472' 321400  004470'         JUMPCM  OCT1\r
+        004473' 262740  000015          POP     PP,RX           ;YES, RESTORE RADIX\r
+        004474' 263740  000000          POPJ    PP,             ;EXIT\r
+\r\fMACRO V.10                     PAGE 84\r
+        PSEUDO-OP HANDLERS\r
+\r
+        004475' 205440  440600  SIXB10: MOVSI   RC,(POINT 6,AC0)        ;SET UP POINTER\r
+        004476' 201000  000000          MOVEI   AC0,0           ;CLEAR WORD\r
+\r
+        004477' 260740  001436' SIXB20: PUSHJ   PP,CHARL        ;GET NEXT CHARACTER\r
+        004500' 316340  000004          CAMN    C,SX            ;IS THIS PRESET DELIMITER?\r
+        004501' 254000  004553'         JRST    ASC60           ;YES\r
+        004502' 301340  000141          CAIL C,"A"+40\r
+        004503' 303340  000172          CAILE C,"Z"+40\r
+        004504' 254000  004506'         JRST    .+2\r
+        004505' 624340  000100          TRZA    C,100           ;CONVERT LOWER CASE TO SIXBIT\r
+        004506' 275340  000040          SUBI    C,40            ;CONVERT TO SIXBIT\r
+        004507' 321340  004550'         JUMPL   C,ASC55         ;TEST FOR INVALID CHARACTER\r
+        004510' 136340  000011          IDPB    C,RC            ;NO, DEPOSIT THE BYTE\r
+        004511' 603440  770000          TLNE    RC,770000       ;IS THE WORD FULL?\r
+        004512' 254000  004477'         JRST    SIXB20          ;NO, GET NEXT CHARACTER\r
+        004513' 260740  002664'         PUSHJ   PP,STOWZ        ;YES, STORE\r
+        004514' 254000  004475'         JRST    SIXB10          ;GET NEXT WORD\r
+\r\fMACRO V.10                     PAGE 85\r
+        PSEUDO-OP HANDLERS\r
+\r
+        004515' 510140  000000  ASCII0: HLLZ    SDEL,AC0        ;STORE ASCII/ASCIZ FLAG\r
+        004516' 260740  001436' ASC10:  PUSHJ   PP,CHARL        ;GET FIRST NON-BLANK\r
+        004517' 302340  000040          CAIE    C," "\r
+        004520' 306340  000011          CAIN    C,HT\r
+        004521' 254000  004516'         JRST    ASC10\r
+        004522' 307340  000015          CAIG C,CR               ;CHECK FOR CRRET AS DELIM\r
+        004523' 305340  000012          CAIGE C,LF\r
+        004524' 334200  013415'         SKIPA   SX,SEQNO2\r
+        004525' 254000  003311'         JRST ERRAX\r
+        004526' 202200  013310'         MOVEM SX,TXTSEQ         ;SAVE SEQ AND PAGE\r
+        004527' 200200  013414'         MOVE SX,PAGENO\r
+        004530' 202200  013307'         MOVEM SX,TXTPG\r
+        004531' 476000  013274'         SETOM INTXT\r
+        004532' 200200  000007          MOVE    SX,C            ;SAVE FOR COMPARISON\r
+        004533' 327140  004475'         JUMPG   SDEL,SIXB10     ;BRANCH IF SIXBIT\r
+\r
+        004534' 205440  440700  ASC20:  MOVSI   RC,(POINT 7,AC0)        ;SET UP POINTER\r
+        004535' 603140  200000          TLNE    SDEL,200000     ;THIS BIT (AND BIT0) IN FOR COMMENT\r
+        004536' 205440  440000          MOVSI RC,440000         ;SO NOTHING WILL BE DEPOSITED\r
+        004537' 201000  000000  IFE IIISW,<MOVEI AC0,0          ;CLEAR WORD>\r
+                                IFN IIISW,<TLNE SDEL,100000     ;ASCID?\r
+                                        TLZA    SDEL,400000     ;YES, ZERO ASCIZ BIT\r
+                                        TDZA    AC0,AC0         ;NO, ZERO WORD\r
+                                        MOVE    AC0,[BYTE (7) 10,10,10,10,10 (1) 1]     ;YES, A WORD FULL OF BACKSPACES\r
+                                >\r
+        004540' 260740  001436' ASC30:  PUSHJ   PP,CHARL        ;GET ASCII CHARACTER AND LIST\r
+        004541' 316340  000004          CAMN    C,SX            ;TEST FOR DELIMITER\r
+        004542' 254000  004551'         JRST    ASC50           ;FOUND\r
+        004543' 136340  000011          IDPB    C,RC            ;DEPOSIT BYTE\r
+        004544' 603440  760000          TLNE    RC,760000       ;HAVE WE FINISHED WORD?\r
+        004545' 254000  004540'         JRST    ASC30           ;NO,GET NEXT CHARACTER\r
+        004546' 260740  002664'         PUSHJ   PP,STOWZ        ;YES, STOW IT\r
+        004547' 254000  004534'         JRST    ASC20           ;GET NEXT WORD\r
+\r
+        004550' 634400  000010  ASC55:  TDZA    CS,CS           ;ZERO CS IN CASE NESTED\r
+        004551' 634440  000003  ASC50:  TDZA    RC,SDEL         ;TEST FOR ASCIIZ\r
+        004552' 664600  040000          TROA    ER,ERRA         ;SIXBIT ERROR EXIT\r
+        004553' 260740  004452' ASC60:  PUSHJ   PP,BYPAS1       ;POLISH OFF TERMINATOR\r
+        004554' 402000  013274'         SETZM INTXT     ;WE ARE OUT OF IT\r
+                                IFN IIISW,<TLNN SDEL,100000     ;NO EXTRA WORDS FOR ASCID>\r
+        004555' 420440  013104'         ANDCM   RC,STPX         ;STORE AT LEAST ONE WORD\r
+        004556' 607140  200000          TLNN SDEL,200000        ;GET OUT WITHOUT STORING\r
+        004557' 325440  002664'         JUMPGE  RC,STOWZ        ;STOW\r
+        004560' 263740  000000          POPJ    PP,             ;ASCII, NO BYTES STORED, SO EXIT\r
+\r\fMACRO V.10                     PAGE 86\r
+        PSEUDO-OP HANDLERS\r
+\r
+        004561'                 POINT0:\r
+        004561' 261740  000011          PUSH    PP,RC           ;STACK REGISTERS\r
+        004562' 261740  000000          PUSH    PP,AC0\r
+        004563' 260740  003745'         PUSHJ   PP,EVAL10       ;EVALUATE RADIX 10\r
+        004564' 137000  014233'         DPB     AC0,[POINT 6,0(PP),11]  ;STORE BYTE SIZE\r
+        004565' 325400  004574'         JUMPNC  POINT2\r
+        004566' 260740  001070'         PUSHJ   PP,EVALEX       ;NO, GET ADDRESS\r
+        004567' 260740  004403'         PUSHJ   PP,EVADR        ;EVALUATE STANDARD ADDRESS\r
+        004570' 325400  004574'         JUMPNC  POINT2\r
+        004571' 260740  003745'         PUSHJ   PP,EVAL10       ;EVALUATE RADIX 10\r
+        004572' 603600  020000          TLNE    IO,NUMSW        ;IF NUMERIC\r
+        004573' 654000  014062'         TDCA    AC0,[-1]        ;POSITION=D35-RHB\r
+        004574' 201000  000000  POINT2: MOVEI   AC0,0           ;OTHERWISE SET TO D36\r
+        004575' 271000  000044          ADDI    AC0,^D36\r
+        004576' 242000  000036          LSH     AC0,^D30\r
+        004577' 272017  000000          ADDM    AC0,0(PP)       ;UPDATE VALUE\r
+        004600' 254000  004375'         JRST    OP3\r
+\r\fMACRO V.10                     PAGE 87\r
+        PSEUDO-OP HANDLERS\r
+\r
+        004601'                 XWD0:\r
+        004601' 261740  000011          PUSH    PP,RC\r
+        004602' 261740  000000          PUSH    PP,AC0          ;STORE ZERO ON STACK\r
+        004603' 260740  001070'         PUSHJ   PP,EVALEX       ;EVALUATE EXPRESSION\r
+        004604' 325400  004374'         JUMPNC  OP2\r
+        004605' 336017  000000  XWD5:   SKIPN   (PP)            ;ANY CODE YET?\r
+        004606' 254000  004613'         JRST    XWD10           ;NO,USE VALUE IN AC0\r
+        004607' 322000  004611'         JUMPE   AC0,.+2         ;ANYTHING IN AC0?\r
+        004610' 660600  200000          TRO     ER,ERRQ         ;YES,FLAG "Q"ERROR\r
+        004611' 200017  000000          MOVE    AC0,(PP)        ;USE PREVIOUS VALUE\r
+        004612' 200457  777777          MOVE    RC,-1(PP)       ;AND RELOCATION\r
+        004613' 516017  000000  XWD10:  HRLZM   AC0,0(PP)       ;SET LEFT HALF\r
+        004614' 516457  777777          HRLZM   RC,-1(PP)\r
+        004615' 207000  013270'         MOVSS EXTPNT    ;WFW\r
+        004616' 254000  004373'         JRST    OP1A            ;EXIT THROUGH OP\r
+\r
+        004617' 260740  003757' IOWD0:  PUSHJ   PP,EVALXQ       ;EVALUATE AND TEST FOR EXTERNAL\r
+        004620' 302340  000014          CAIE    C,14            ;","?\r
+                                        JRST    [SKIPN  AC0     ;IF NZERO AND NO "," SEEN\r
+                                                TRO ER,ERRQ     ;TREAT AS Q ERROR\r
+        004621' 254000  014234'                 SOJA AC0,STOW]  ;NO, TREAT AS RIGHT HALF\r
+        004622' 261740  000000          PUSH    PP,AC0          ;YES, STACK LEFT HALF\r
+        004623' 260740  001070'         PUSHJ   PP,EVALEX       ;WFW\r
+        004624' 275000  000001          SUBI    AC0,1\r
+        004625' 262740  000001          POP     PP,AC1          ;RETRIEVE LEFT HALF\r
+        004626' 213000  000001          MOVNS   AC1\r
+        004627' 504000  000001          HRL     AC0,AC1\r
+        004630' 254000  002665'         JRST    STOW            ;STOW CODE AND EXIT\r
+\r\fMACRO V.10                     PAGE 88\r
+        PSEUDO-OP HANDLERS\r
+\r
+        004631' 260740  004452' BYTE0:  PUSHJ   PP,BYPASS       ;GET FIRST NON-BLANK\r
+        004632' 302340  000010          CAIE    C,10            ;"("?\r
+        004633' 254000  003311'         JRST    ERRAX           ;NO, FLAG ERROR AND EXIT\r
+        004634' 261740  000011          PUSH    PP,RC\r
+        004635' 261740  000000          PUSH    PP,AC0          ;INITIALIZE STACK TO ZERO\r
+        004636' 205240  447717          MOVSI   ARG,(POINT -1,(PP))\r
+\r
+        004637' 261740  000005  BYTE1:  PUSH    PP,ARG\r
+        004640' 260740  003745'         PUSHJ   PP,EVAL10       ;EVALUATE RADIX 10\r
+        004641' 262740  000005          POP     PP,ARG\r
+        004642' 307000  000044          CAIG    AC0,^D36        ;TEST SIZE\r
+        004643' 325000  004645'         JUMPGE  AC0,.+2\r
+        004644' 660600  040000          TRO     ER,ERRA\r
+        004645' 137000  014237'         DPB     AC0,[POINT 6,ARG,11]    ;STORE BYTE SIZE\r
+\r
+        004646' 133000  000005  BYTE2:  IBP     ARG             ;INCREMENT BYTE\r
+        004647' 626240  777777          TRZN    ARG,-1          ;OVERFLOW?\r
+        004650' 254000  004655'         JRST    BYTE3           ;NO\r
+        004651' 403000  000011          SETZB   AC0,RC          ;YES\r
+        004652' 250017  000000          EXCH    AC0,0(PP)       ;GET CURRENT VALUES\r
+        004653' 250457  777777          EXCH    RC,-1(PP)       ;AND STACK ZEROS\r
+        004654' 260740  002665'         PUSHJ   PP,STOW         ;STOW FULL WORD\r
+\r
+        004655' 261740  000005  BYTE3:  PUSH    PP,ARG\r
+        004656' 260740  001070'         PUSHJ   PP,EVALEX       ;COMPUTE NEXT BYTE\r
+        004657' 262740  000005          POP     PP,ARG\r
+        004660' 137000  000005          DPB     AC0,ARG         ;STORE BYTE\r
+        004661' 520000  000005          HLLO    AC0,ARG\r
+        004662' 137440  000000          DPB     RC,AC0          ;STORE RELOCATION\r
+\r
+        004663' 321400  004646'         JUMPCM  BYTE2\r
+        004664' 306340  000010          CAIN    C,10            ;"("?\r
+        004665' 254000  004637'         JRST    BYTE1           ;YES, GET NEW BYTE SIZE\r
+        004666' 254000  004375'         JRST    OP3             ;NO, EXIT\r
+\r\fMACRO V.10                     PAGE 89\r
+        PSEUDO-OP HANDLERS\r
+\r
+        004667' 260740  001070' RADX50: PUSHJ   PP,EVALEX       ;EVALUATE CODE\r
+        004670' 326440  003311'         JUMPN   RC,ERRAX                ;ERROR IF NOT ABSOLUTE\r
+        004671' 200240  000000          MOVE    ARG,AC0\r
+        004672' 325400  003311'         JUMPNC  ERRAX\r
+        004673' 260740  001034'         PUSHJ   PP,GETSYM       ;YES, GET SYMBOL\r
+        004674' 620600  040000          TRZ     ER,ERRA         ;CLEAR ERROR\r
+        004675' 260740  004677'         PUSHJ   PP,SQOZE        ;SQUOZE SIXBIT AND ADD CODE\r
+        004676' 254000  002665'         JRST    STOW            ;STOW CODE AND EXIT\r
+\r
+\r
+        004677' 200100  000000  SQOZE:  MOVE    AC1+1,AC0       ;PUT SIXBIT IN AC1+1\r
+        004700' 201000  000000          MOVEI   AC0,0           ;CLEAR RESULT\r
+        004701' 201040  000000  SQOZ1:  MOVEI   AC1,0\r
+        004702' 246040  000006          LSHC    AC1,6           ;PUT 6-BIT CHARACTER IN AC1\r
+        004703' 135040  014240'         LDB     AC1,[POINT 6,CSTAT(AC1),23]     ;CONVERT TO RADIX50\r
+        004704' 221000  000050          IMULI   AC0,50          ;MULTIPLY PREVIOUS RESULT\r
+        004705' 270000  000001          ADD     AC0,AC1         ;ADD NEW CHARACTER\r
+        004706' 326100  004701'         JUMPN   AC1+1,SQOZ1     ;TEST FOR END\r
+        004707' 242240  000036          LSH     ARG,^D30        ;LEFT-JUSTIFY CODE\r
+        004710' 434000  000005          IOR     AC0,ARG         ;MERGE WITH RESULT\r
+        004711' 263740  000000          POPJ    PP,\r
+\r
+\r\fMACRO V.10                     PAGE 90\r
+        PSEUDO-OP HANDLERS\r
+\r
+                                ; PSEUDO-END STATEMENT FOR MULTI-FILE CAPABILITY\r
+\r
+                                ; HERE IF PRGEND (PASS 1)\r
+        004712' 661600  000010  PSEND0: TLO     IO,MFLSW        ;PSEND SEEN\r
+        004713' 260740  003037'         PUSHJ   PP,END0         ;AS IF END STATEMENT\r
+        004714' 513000  000014          HLLZS   IO              ;CLEAR ER(RH)\r
+        004715' 402000  012726'         SETZM   ERRCNT          ;CLEAR ERROR COUNT FOR EACH PROG.\r
+        004716' 325640  004724'         JUMP2   PSEND2          ;DIFFERENT ON PASS2\r
+                                IFN UNIVR,<SKIPE        UNIVSN          ;SEEN A UNIVERSAL\r
+                                        PUSHJ   PP,UNISYM       ;YES, STORE SYMBOLS>\r
+        004717' 260740  004734'         PUSHJ   PP,PSEND4       ;SAVE SYMBOLS, POINTERS AND TITLE\r
+        004720' 621600  000002          TLZ     IO,IOTLSN       ;CLEAR TITLE SEEN FLAG\r
+        004721' 621600  000010  PSEND1: TLZ     IO,MFLSW         ;FOR NEXT FILE\r
+                                IFN UNIVR,<SETZM        UNISCH          ;CLEAR UNIVERSAL SEARCH TABLE\r
+                                        MOVE    AC0,[UNISCH,,UNISCH+1]\r
+                                        BLT     AC0,UNISCH+.UNIV-1\r
+                                        PUSHJ   PP,OUTFF        ;RESET PAGE COUNT>\r
+        004722' 205000  000001          MOVSI   AC0,1           ;SET SO RELOC 0 WORKS\r
+        004723' 254000  004133'         JRST    LOC10           ;FOR RELOC 0\r
+\r
+                                ; HERE IF PRGEND (PASS 2)\r
+        004724' 402000  013057' PSEND2: SETZM   SBUF            ;SO SUBTTL IS NOT WRONG\r
+        004725' 260740  005016'         PUSHJ   PP,PSEND5       ;PUT TITLE BACK\r
+        004726' 260740  004721'         PUSHJ   PP,PSEND1       ;COMMON  CODE\r
+        004727' 254000  003066'         JRST    PASS20          ;OUTPUT THE ENTRIES\r
+\r
+                                ; HERE IF END (PASS 1)\r
+        004730' 260740  004734' PSEND3: PUSHJ   PP,PSEND4       ;SAVE LAST PROGRAM \r
+        004731' 547000  013260'         HLRS    PRGPTR          ;REINITIALIZE POINTER\r
+        004732' 260740  005016'         PUSHJ   PP,PSEND5       ;READ BACK FIRST PROGRAM\r
+        004733' 254000  003066'         JRST    PASS20\r
+\r\fMACRO V.10                     PAGE 91\r
+        PSEUDO-OP HANDLERS\r
+\r
+                                ;HERE TO SAVE AND RESTORE SYMBOL TABLE, TITLE AND OTHER USEFUL LOCATIONS\r
+                        000004          XTRA==4                 ;NUMBER OF OTHER LOCATIONS TO SAVE\r
+\r
+        004734' 200300  012727' PSEND4: MOVE    V,FREE          ;GET  NEXT FREE LOCATION\r
+        004735' 271300  000030          ADDI    V,LENGTH+.TBUF/5+XTRA\r
+        004736' 311300  013102'         CAML    V,SYMBOL        ;WILL WORST CASE FIT?\r
+        004737' 260740  010015'         PUSHJ   PP,XCEED        ;NO, EXPAND\r
+        004740' 204300  012727'         MOVS    V,FREE\r
+        004741' 540300  013260'         HRR     V,PRGPTR        ;LAST PRGEND BLOCK\r
+        004742' 546306  000000          HLRM    V,(V)           ;LINK THIS BLOCK\r
+        004743' 336000  013260'         SKIPN   PRGPTR          ;IF FIRST TIME\r
+        004744' 512300  013260'         HLLZM   V,PRGPTR        ;SET LINK TO START OF CHAIN\r
+        004745' 546300  013260'         HLRM    V,PRGPTR        ;POINTER TO IT\r
+        004746' 402020  012727'         SETZM   @FREE           ;CLEAR LINK WORD\r
+        004747' 350000  012727'         AOS     FREE            ;THIS LOCATION USED NOW\r
+        004750' 204000  013102'         MOVS    AC0,SYMBOL      ;BOTTOM OF SYMBOL TABLE\r
+        004751' 540000  012727'         HRR     AC0,FREE        ;FREE SPACE\r
+        004752' 200320  013102'         MOVE    V,@SYMBOL       ;GET NUMBER OF SYMBOLS\r
+        004753' 240300  000001          ASH     V,1             ;TWO WORDS PER SYMBOL\r
+        004754' 271300  000001          ADDI    V,1             ;ONE MORE FOR COUNT\r
+        004755' 273300  012727'         ADDB    V,FREE          ;END OF TABLE WHEN MOVED\r
+        004756' 251006  000000          BLT     AC0,(V)         ;MOVE TABLE\r
+        004757' 550000  003227*         HRRZ    AC0,JOBREL      ;TOP OF CORE\r
+        004760' 275000  000001          SUBI    AC0,1\r
+        004761' 202000  013103'         MOVEM   AC0,SYMTOP      ;FOR NEXT SYMBOL TABLE\r
+        004762' 275000  000004          SUBI    AC0,LENGTH      ;LENGTH OF INITIAL SYMBOLS\r
+        004763' 202000  013102'         MOVEM   AC0,SYMBOL      ;SET POINTER TO COUNT OF SYMBOLS\r
+        004764' 505000  011713'         HRLI    AC0,SYMNUM      ;BLT POINTER\r
+        004765' 251020  013103'         BLT     AC0,@SYMTOP     ;SET UP INITIAL SYMBOL TABLE\r
+        004766' 260740  012455'         PUSHJ   PP,SRCHI        ;SET UP SEARCH POINTER\r
+        004767' 201000  000120          MOVEI   AC0,.TBUF       ;MAX NUMBER OF CHARS. IN TITLE\r
+        004770' 274000  013227'         SUB     AC0,TCNT        ;ACTUAL NUMBER\r
+        004771' 231000  000005          IDIVI   AC0,5           ;NUMBER OF WORDS\r
+        004772' 332000  000001          SKIPE   AC1             ;REMAINDER?\r
+        004773' 271000  000001          ADDI    AC0,1           ;YES\r
+        004774' 202020  012727'         MOVEM   AC0,@FREE       ;STORE COUNT\r
+        004775' 350000  012727'         AOS     FREE            ;THIS LOCATION USED NOW\r
+        004776' 250000  012727'         EXCH    AC0,FREE        ;SET UP AC0 FOR BLT\r
+        004777' 272000  012727'         ADDM    AC0,FREE        ;WILL BE AFTER TITLE MOVES\r
+        005000' 505000  013230'         HRLI    AC0,TBUF        ;BLT POINTER\r
+        005001' 251020  012727'         BLT     AC0,@FREE       ;MOVE TITLE\r
+        005002' 200100  013035'         MOVE    AC2,LITHDX      ;POINTER TO LIT INFO.\r
+        005003' 200002  777777          MOVE    AC0,-1(AC2)     ;SIZE OF PASS1 LOCO\r
+        005004' 260740  005061'         PUSHJ   PP,STORIT       ;SAVE IT IN SYMBOL TABLE\r
+        005005' 200100  013030'         MOVE    AC2,VARHDX      ;SAME FOR VARS\r
+        005006' 200002  777777          MOVE    AC0,-1(AC2)\r
+        005007' 260740  005061'         PUSHJ   PP,STORIT\r
+                                IFN RENTSW,<\r
+                                        MOVE    AC0,HISNSW      ;GET TWOSEG/HISEG FLAG\r
+                                        HRR     AC0,HIGH1       ;AND PASS1 BREAK\r
+                                        PUSHJ   PP,STORIT\r
+                                        JUMPGE  AC0,PSEND6      ;NOT TWOSEG\r
+                                        MOVE    AC0,SVTYP3      ;HIGH SEGMENT OFFSET\r
+\r\fMACRO V.10                     PAGE 91-1\r
+        PSEUDO-OP HANDLERS\r
+\r
+                                        PUSHJ   PP,STORIT       ;SAVE IT ALSO>\r
+        005010' 200000  012727' PSEND6: MOVE    AC0,FREE        ;GET NEXT FREE LOCATION\r
+        005011' 275000  000001          SUBI    AC0,1           ;LAST ONE USED\r
+        005012' 550300  013260'         HRRZ    V,PRGPTR        ;POINTER TO START OF DATA BLOCK\r
+        005013' 506006  000000          HRLM    AC0,(V)         ;LINK TO END OF BLOCK\r
+        005014' 263740  000000          POPJ    PP,             ;RETURN\r
+\r
+\r\fMACRO V.10                     PAGE 92\r
+        PSEUDO-OP HANDLERS\r
+\r
+        005015' 260740  010015' PSENDX: PUSHJ   PP,XCEED        ;NEED TO EXPAND CORE FIRST\r
+        005016' 550000  004757* PSEND5: HRRZ    AC0,JOBREL      ;GET TOP OF CORE\r
+        005017' 275000  000001          SUBI    AC0,1\r
+        005020' 202000  013103'         MOVEM   AC0,SYMTOP      ;TOP OF NEW SYMBOL TABLE\r
+        005021' 550300  013260'         HRRZ    V,PRGPTR        ;ADDRESS OF THIS BLOCK\r
+        005022' 322300  005066'         JUMPE   V,PSNDER        ;ERROR LINK NOT SET UP\r
+        005023' 200046  000000          MOVE    AC1,(V)         ;NEXT LINK\r
+        005024' 200306  000001          MOVE    V,1(V)          ;GET ITS SYMBOL COUNT\r
+        005025' 240300  000001          ASH     V,1             ;NUMBER OF WORDS\r
+        005026' 271300  000001          ADDI    V,1             ;PLUS ONE FOR COUNT\r
+        005027' 275006  000000          SUBI    AC0,(V)         ;START OF NEW SYMBOL TABLE\r
+        005030' 317000  012727'         CAMG    AC0,FREE        ;WILL IT FIT\r
+        005031' 254000  005015'         JRST    PSENDX          ;NO, NEED TO EXPAND AND RESET AC0\r
+        005032' 270300  013260'         ADD     V,PRGPTR        ;POINT TO END OF SYMBOL TABLE\r
+        005033' 201306  000001          MOVEI   V,1(V)          ;THEN TO BEG OF TITLE\r
+        005034' 202000  013102'         MOVEM   AC0,SYMBOL      ;BOTTOM OF NEW TABLE\r
+        005035' 504000  013260'         HRL     AC0,PRGPTR      ;ADDRESS OF FIRST WORD OF BLOCK\r
+        005036' 270000  014241'         ADD     AC0,[1,,0]      ;MAKE BLT POINTER\r
+        005037' 542040  013260'         HRRM    AC1,PRGPTR      ;POINT TO NEXT BLOCK\r
+        005040' 251020  013103'         BLT     AC0,@SYMTOP     ;MOVE TABLE\r
+        005041' 260740  012455'         PUSHJ   PP,SRCHI        ;SET UP POINTER\r
+        005042' 200046  000000          MOVE    AC1,(V)         ;NUMBER OF WORDS OF TITLE\r
+        005043' 201006  000001          MOVEI   AC0,1(V)        ;START OF STORED TITLE\r
+        005044' 270300  000001          ADD     V,AC1           ;INCREMENT PAST TITLE\r
+        005045' 271040  013227'         ADDI    AC1,TBUF-1      ;END OF TITLE\r
+        005046' 505000  013230'         HRLI    AC0,TBUF        ;WHERE TO PUT IT\r
+        005047' 207000  000000          MOVSS   AC0             ;BLT POINTER\r
+        005050' 251001  000000          BLT     AC0,(AC1)       ;MOVE TITLE\r
+        005051' 661600  000002          TLO     IO,IOTLSN       ;SET AS IF TITLE SEEN\r
+        005052' 200100  013035'         MOVE    AC2,LITHDX      ;INVERSE OF ABOVE\r
+        005053' 260740  005064'         PUSHJ   PP,GETIT\r
+        005054' 202002  777777          MOVEM   AC0,-1(AC2)\r
+        005055' 200100  013030'         MOVE    AC2,VARHDX      ;SAME FOR VARS\r
+        005056' 260740  005064'         PUSHJ   PP,GETIT\r
+        005057' 202002  777777          MOVEM   AC0,-1(AC2)\r
+                                IFN RENTSW,<\r
+                                        PUSHJ   PP,GETIT        ;GET TWO HALF WORDS\r
+                                        HRRZM   AC0,HIGH1       ;PASS1 BREAK\r
+                                        HLLEM   AC0,HISNSW      ;TWOSEG/HISEG FLAG\r
+                                        JUMPGE  AC0,CPOPJ       ;NOT TWOSEG\r
+                                        PUSHJ   PP,GETIT\r
+                                        MOVEM   AC0,SVTYP3      ;BLOCK 3 WORD>\r
+        005060' 263740  000000          POPJ    PP,\r
+\r
+        005061' 202020  012727' STORIT: MOVEM   AC0,@FREE       ;STORE IT IN DATA BLOCK\r
+        005062' 350000  012727'         AOS     FREE            ;ADVANCE POINTER\r
+        005063' 263740  000000          POPJ    PP,\r
+\r
+        005064' 200006  000001  GETIT:  MOVE    AC0,1(V)        ;FILL AC0 OUT OF PRGEND BLOCK\r
+        005065' 344300  003360'         AOJA    V,CPOPJ         ;INCREMENT AND RETURN\r
+\r
+        005066' 561440  014242' PSNDER: HRROI   RC,[SIXBIT      /PRGEND ERROR @/]\r
+        005067' 254000  007714'         JRST    ERRFIN\r
+\r\fMACRO V.10                     PAGE 93\r
+        PSEUDO-OP HANDLERS\r
+\r
+                                ;MULTIPLE SYMBOL TABLE FEATURE PSEUDO-OPS\r
+\r
+                                IFN UNIVR,<\r
+                                UNIV0:  JUMP2   TITLE0          ;DO IT ALL ON PASS 1\r
+                                        HRRZ    SX,UNIVNO       ;GET NUMBER OF UNIVERSALS SEEN\r
+                                        CAIL    SX,.UNIV        ;ALLOW ONE MORE?\r
+                                        JRST    UNVERR          ;NO, GIVE FATAL ERROR\r
+                                        AOS     UNIVNO          ;ONE MORE NOW\r
+                                        SETOM   UNIVSN          ;AND SET SEEN A UNIVERSAL\r
+                                        JRST    TITLE0          ;CONTINUE AS IF TITLE\r
+                                \r
+                                \r
+                                ADDUNV: PUSH    PP,RC           ;AN AC TO USE\r
+                                        PUSHJ   PP,NOUT         ;CONVERT TO SIXBIT\r
+                                        HRRZ    RC,UNIVNO       ;GET ENTRY INDEX\r
+                                        MOVEM   AC0,UNITBL(RC)  ;STORE SIXBIT NAME IN TABLE\r
+                                        HRRZS   UNIVSN          ;ONLY DO IT ONCE\r
+                                        POP     PP,RC           ;RESTORE RC\r
+                                        POPJ    PP,             ;AND RETURN\r
+                                \r
+                                UNVERR: HRROI   RC,[SIXBIT /TOO MANY UNIVERSALS@/]\r
+                                        JRST    ERRFIN\r
+                                \r
+                                UNISYM: HRRZ    AC0,FREE        ;GET HIGHEST FREE LOCATION\r
+                                        MOVEM   AC0,JOBFF       ;INTO JOBFF\r
+                                        PUSHJ   PP,SUPRSA       ;TURN ON SUPPRESS BIT\r
+                                        PUSH    PP,SYMBOL       ;NEED TO SAVE INCASE PRGEND\r
+                                        MOVE    AC0,SYMTOP      ;TOP OF TABLE\r
+                                        SUB     AC0,SYMBOL      ;GET LENGTH OF TABLE\r
+                                        HRL     ARG,SYMBOL      ;BOTTOM OF TABLE\r
+                                        HRR     ARG,JOBFF       ;WHERE TO GO\r
+                                        HRRZ    RC,UNIVNO       ;GET TABLE INDEX\r
+                                        HRRM    ARG,SYMBOL      ;WILL BE THERE SOON\r
+                                        HRRZM   ARG,UNIPTR(RC)  ;STORE IN CORRESPONDING PLACE\r
+                                        ADDB    AC0,JOBFF       ;WHERE TO END\r
+                                        HRLM    AC0,UNIPTR(RC)  ;SAVE NEW SYMTOP\r
+                                        BLT     ARG,@JOBFF      ;MOVE TABLE\r
+                                        HRRZM   AC0,UNITOP      ;SAVE TOP OF TABLES+1\r
+                                        CAMLE   AC0,MACSIZ      ;IN CASE OVER A K BOUND\r
+                                        MOVEM   AC0,MACSIZ      ;DON'T REDUCE SO FAR NOW\r
+                                        MOVEM   AC0,FREE        ;JUST IN CASE IN MACRO\r
+                                        MOVE    AC0,SRCHX       ;SAVE OLD SEARCH POINTER\r
+                                        PUSHJ   PP,SRCHI        ;GET SEARCH POINTER\r
+                                        EXCH    AC0,SRCHX\r
+                                        MOVEM   AC0,UNISHX(RC)  ;SAVE IT\r
+                                        SETZM   UNIVSN          ;CLEAR FLAG INCASE PRGEND\r
+                                        POP     PP,SYMBOL       ;RESTORE OLD VALUE\r
+                                        POPJ    PP,             ;RETURN\r
+                                \r
+                                \r\fMACRO V.10                     PAGE 94\r
+        PSEUDO-OP HANDLERS\r
+\r
+                                SERCH0: PUSHJ   PP,GETSYM       ;GET A SYMBOL\r
+                                        JRST    ERRAX           ;ERROR IF NOT VALID\r
+                                        MOVEI   RC,1            ;START AT ENTRY ONE\r
+                                        CAIL    RC,.UNIV        ;CHECK FOR CONSISTENCY ERROR\r
+                                        JRST    SCHERR          ;CANNOT FIND THIS ONE\r
+                                        CAME    AC0,UNITBL(RC)  ;LOOK FOR MATCH\r
+                                        AOJA    RC,.-3          ;NOT FOUND YET\r
+                                        MOVE    AC0,RC          ;STORE TABLE ENTRY NUMBER\r
+                                        MOVEI   RC,1            ;START AT ENTRY ONE\r
+                                        CAIL    RC,.UNIV        ;CHECK FOR CONSISTENCY ERROR\r
+                                        JRST    SCHERR          ;SHOULD NEVER HAPPEN!!\r
+                                        SKIPE   UNISCH(RC)      ;LOOK FOR AN EMPTY SLOT\r
+                                        AOJA    RC,.-3          ;NOT FOUND YET\r
+                                        MOVEM   AC0,UNISCH(RC)  ;STORE INDEX IN TABLE\r
+                                        JUMPCM  SERCH0          ;LOOK FOR MORE NAMES\r
+                                        POPJ    PP,             ;FINISHED\r
+                                \r
+                                SCHERR: MOVSI   RC,[SIXBIT /CANNOT FIND UNIVERSAL@/]\r
+                                        JRST    ERRFIN          ;NAME IN AC0\r
+                                \r
+                                ;MESSAGE FOR CASE WHERE FILES AFTER UNIVERSAL USED MORE BUFFER SPACE THAN FIRST UNIVERS\r
+                                AL\r
+                                UNIERR: HRROI   RC,[SIXBIT /UNIVERSAL PROGRAM(S) MUST HAVE SAME OUTPUT SPECIFICATION AS\r
+                                 OTHER FILES@/]\r
+                                        JRST    ERRFIN\r
+                                >\r
+\r\fMACRO V.10                     PAGE 95\r
+        MACRO/REPEAT HANDLERS\r
+\r
+                                SUBTTL  MACRO/REPEAT HANDLERS\r
+\r
+        005070' 260740  003757' REPEA0: PUSHJ   PP,EVALXQ       ;EVALUATE REPEAT EXP, EXTERNS ARE ILL.\r
+        005071' 325400  003311'         JUMPNC  ERRAX\r
+\r
+        005072' 323000  005152' REPEA1: JUMPLE  AC0,REPZ        ;PASS THE EXP., DONT PROCESS\r
+        005073' 362000  005171'         SOJE    AC0,REPO        ;REPEAT ONCE\r
+        005074' 260740  006254' REPEA2: PUSHJ   PP,GCHARQ       ;GET STARTING "<"\r
+        005075' 302340  000074          CAIE    C,"<"\r
+        005076' 254000  005074'         JRST    REPEA2\r
+        005077' 260740  006217'         PUSHJ   PP,SKELI1       ;INITIALIZE SKELETON\r
+        005100' 261700  013346'         PUSH    MP,REPEXP\r
+        005101' 202000  013346'         MOVEM   AC0,REPEXP\r
+        005102' 261700  013347'         PUSH    MP,REPPNT       ;STACK PREVIOUS REPEAT POINTER\r
+        005103' 202240  013347'         MOVEM   ARG,REPPNT      ;STORE NEW POINTER\r
+        005104' 634140  000003          TDZA    SDEL,SDEL       ;YES, INITIALIZE BRACKET COUNT AND SKIP\r
+\r
+        005105' 260740  006262' REPEA4: PUSHJ   PP,WCHARQ       ;WRITE A CHARACTER\r
+        005106' 260740  006254'         PUSHJ   PP,GCHARQ       ;GET A CHARACTER\r
+        005107' 306340  000074          CAIN    C,"<"           ;"<"?\r
+        005110' 344140  005105'         AOJA    SDEL,REPEA4     ;YES, INCREMENT AND WRITE\r
+        005111' 302340  000076          CAIE    C,">"           ;">"?\r
+        005112' 254000  005105'         JRST    REPEA4          ;NO, WRITE THE CHARACTER\r
+        005113' 365140  005105'         SOJGE   SDEL,REPEA4     ;YES, WRITE IF NON-NEGATIVE COUNT\r
+        005114' 205400  774060          MOVSI   CS,(BYTE (7) 177,3)     ;SET "REPEAT" END\r
+        005115' 260740  006272'         PUSHJ   PP,WWRXE        ;WRITE END\r
+        005116' 336000  013321'         SKIPN   LITLVL          ;LITERAL MIGHT END ON LINE\r
+        005117' 332000  013406'         SKIPE   MACLVL          ;IF IN MACRO DARE NOT PROCESS\r
+        005120' 254000  005123'         JRST    .+3             ;REST OF LINE SINCE MACRO MIGHT END ON IT\r
+        005121' 260740  004452'         PUSHJ   PP,BYPASS       ;BYPASS\r
+        005122' 260740  000227'         PUSHJ   PP,STOUTS       ;POLISH OF LINE BEFORE PROCESSING REPEAT\r
+        005123' 261700  000013          PUSH    MP,MRP          ;STACK PREVIOUS READ POINTER\r
+        005124' 261700  013411'         PUSH    MP,RCOUNT       ;SAVE WORD COUNT\r
+        005125' 550540  013347'         HRRZ    MRP,REPPNT      ;SET UP READ POINTER\r
+        005126' 336000  013406'         SKIPN   MACLVL          ;IF IN MACRO GIVE CR-LF FIRST\r
+        005127' 332000  013321'         SKIPE   LITLVL          ;SAME FOR LITERAL\r
+        005130' 254000  005132'         JRST    REPEA7\r
+        005131' 344540  000446'         AOJA    MRP,POPOUT      ;BYPASS ARG COUNT\r
+\r
+        005132' 550540  013347' REPEA7: HRRZ    MRP,REPPNT      ;SET UP READ POINTER\r
+        005133' 271540  000001          ADDI    MRP,1           ;BYPASS ARG COUNT\r
+        005134' 201340  000015  REPEA8: MOVEI   C,CR\r
+        005135' 254000  001412'         JRST    RSW1\r
+\r
+        005136' 371000  013346' REPEND: SOSL    REPEXP\r
+        005137' 254000  005132'         JRST    REPEA7\r
+        005140' 550300  013347'         HRRZ    V,REPPNT        ;GET START OF TREE\r
+        005141' 260740  006352'         PUSHJ   PP,REFDEC       ;DECREMENT REFERENCE\r
+        005142' 262700  013411'         POP     MP,RCOUNT\r
+        005143' 262700  000013          POP     MP,MRP\r
+        005144' 262700  013347'         POP     MP,REPPNT\r
+        005145' 262700  013346'         POP     MP,REPEXP\r
+        005146' 336000  013321'         SKIPN   LITLVL          ;IF IN LITERAL OR\r
+\r\fMACRO V.10                     PAGE 95-1\r
+        MACRO/REPEAT HANDLERS\r
+\r
+        005147' 332000  013406'         SKIPE   MACLVL          ;IF IN MACRO\r
+        005150' 254000  001410'         JRST    RSW0            ;FINISH OF LINE NOW\r
+        005151' 254000  005134'         JRST    REPEA8\r
+\r
+\r\fMACRO V.10                     PAGE 96\r
+        MACRO/REPEAT HANDLERS\r
+\r
+        005152' 200140  013415' REPZ:   MOVE SDEL,SEQNO2        ;SAVE IN CASE OF END OF FILE\r
+        005153' 202140  013306'         MOVEM SDEL,REPSEQ\r
+        005154' 200140  013414'         MOVE SDEL,PAGENO\r
+        005155' 202140  013305'         MOVEM SDEL,REPPG\r
+        005156' 476000  013272'         SETOM INREP\r
+        005157' 201140  000000          MOVEI SDEL,0    ;SET COUNT\r
+        005160' 260740  006255' REPZ1:  PUSHJ   PP,GCHAR        ;GET NEXT CHARACTER\r
+        005161' 306340  000074          CAIN    C,"<"           ;"<"?\r
+        005162' 344140  005160'         AOJA    SDEL,REPZ1      ;YES, INCREMENT COUNT\r
+        005163' 306340  000076          CAIN    C,">"           ;">"?\r
+        005164' 363140  005166'         SOJLE   SDEL,REPZ2      ;YES, EXIT IF MATCHING\r
+        005165' 254000  005160'         JRST    REPZ1           ;NO, RECYCLE\r
+        005166' 402000  013272' REPZ2:  SETZM   INREP   ;FLAG OUT OF IT\r
+        005167' 402000  013275'         SETZM   INCND   ;AND CONDITIONAL ALSO\r
+        005170' 254000  000125'         JRST    STMNT   ;AND EXIT\r
+\r
+        005171' 260740  006255' REPO:   PUSHJ   PP,GCHAR        ;GET "<"\r
+        005172' 302340  000074          CAIE    C,"<"\r
+        005173' 254000  005171'         JRST    REPO\r
+        005174' 332000  013350'         SKIPE   RPOLVL          ;ARE WE NESTED?\r
+        005175' 350000  013350'         AOS     RPOLVL          ;YES, DECREMENT CURRENT\r
+        005176' 261700  013350'         PUSH    MP,RPOLVL\r
+        005177' 476000  013350'         SETOM   RPOLVL\r
+        005200' 254000  000125'         JRST    STMNT\r
+\r
+        005201' 306340  000074  REPO1:  CAIN    C,"<"\r
+        005202' 370000  013350'         SOS     RPOLVL\r
+        005203' 306340  000076          CAIN    C,">"\r
+        005204' 352000  013350'         AOSE    RPOLVL\r
+        005205' 254000  001414'         JRST    RSW2\r
+        005206' 262700  013350'         POP     MP,RPOLVL\r
+        005207' 260740  001414'         PUSHJ   PP,RSW2\r
+        005210' 254000  001410'         JRST    RSW0\r
+\r\fMACRO V.10                     PAGE 97\r
+        MACRO/REPEAT HANDLERS\r
+\r
+        005211' 260740  001034' DEFIN0: PUSHJ   PP,GETSYM       ;GET MACRO NAME\r
+        005212' 254000  003311'         JRST    ERRAX           ;EXIT ON ERROR\r
+        005213' 202740  013343'         MOVEM   PP,PPTMP1       ;SAVE POINTER\r
+        005214' 202000  013344'         MOVEM   AC0,PPTMP2      ;SAVE NAME\r
+        005215' 661600  000004          TLO     IO,IORPTC\r
+        005216' 200200  013415'         MOVE SX,SEQNO2  ;SAVE IN CASE OF EOF\r
+        005217' 202200  013302'         MOVEM SX,DEFSEQ\r
+        005220' 200200  013414'         MOVE SX,PAGENO\r
+        005221' 202200  013301'         MOVEM SX,DEFPG\r
+        005222' 476000  013273'         SETOM INDEF     ;AND FLAG IN DEFINE\r
+                                        SYN     .TEMP,COMSW     ;SAVE SPACE\r
+        005223' 403200  013402'         SETZB   SX,COMSW        ;SET ARGUMENT AND REFERENCE COUNT AND COMMENT SWITCH\r
+        005224' 260740  006255' DEF02:  PUSHJ   PP,GCHAR        ;SEARCH FOR "(" OR "<"\r
+        005225' 307340  000014          CAIG    C,FF            ;SEARCH FOR END OF LINE\r
+        005226' 305340  000012          CAIGE   C,LF            ;LF,VT, OR FF\r
+        005227' 254000  005231'         JRST    .+2             ;WASN'T ANY OF THEM\r
+        005230' 402000  013402'         SETZM   COMSW           ;RESET COMMENT SWITCH\r
+        005231' 306340  000073          CAIN    C,";"           ;COMMENT?\r
+        005232' 476000  013402'         SETOM   COMSW           ;YES, SET COMMENT SWITCH\r
+        005233' 332000  013402'         SKIPE   COMSW           ;INSIDE A COMMENT?\r
+        005234' 254000  005224'         JRST    DEF02           ;YES, IGNORE CHARACTER\r
+        005235' 306340  000074          CAIN    C,"<"           ;"<"?\r
+        005236' 254000  005254'         JRST    DEF20           ;YES\r
+        005237' 302340  000050          CAIE    C,"("           ;"("?\r
+        005240' 254000  005224'         JRST    DEF02           ;NO\r
+        005241' 260740  001034' DEF10:  PUSHJ   PP,GETSYM       ;YES, GET DUMMY SYMBOL\r
+        005242' 660600  040000          TRO     ER,ERRA         ;FLAG ERROR\r
+        005243' 271200  000001          ADDI    SX,1            ;INCREMENT ARG COUNT\r
+        005244' 261740  000000          PUSH    PP,AC0          ;STACK IT\r
+        005245' 306340  000034          CAIN    C,'<'           ;A DEFAULT ARGUMENT COMING UP?\r
+        005246' 254000  005467'         JRST    DEF80           ;YES, STORE IT AWAY\r
+        005247' 302340  000011          CAIE    C,11            ;")"?\r
+        005250' 254000  005241'         JRST    DEF10           ;NO, GET NEXT DUMMY SYMBOL\r
+        005251' 260740  006255' DEF12:  PUSHJ   PP,GCHAR\r
+        005252' 302340  000074          CAIE    C,"<"           ;"<"?\r
+        005253' 254000  005251'         JRST    DEF12           ;NO\r
+        005254' 261740  014100' DEF20:  PUSH    PP,[0]          ;YES, MARK THE LIST\r
+        005255' 242200  000011          LSH     SX,9            ;SHIFT ARG COUNT\r
+        005256' 350240  000004          AOS     ARG,SX\r
+        005257' 260740  006220'         PUSHJ   PP,SKELI        ;INITIALIZE MACRO SKELETON\r
+        005260' 200000  013344'         MOVE    AC0,PPTMP2      ;GET NAME\r
+        005261' 661600  000040          TLO IO,DEFCRS\r
+        005262' 260740  012173'         PUSHJ   PP,MSRCH        ;SEARCH THE TABLE\r
+        005263' 254000  005267'         JRST    DEF24           ;NOT FOUND\r
+        005264' 607240  020000          TLNN    ARG,MACF        ;FOUND, IS IT A MACRO?\r
+        005265' 664600  100000          TROA    ER,ERRX         ;NO, FLAG ERROR AND SKIP\r
+        005266' 260740  006352'         PUSHJ   PP,REFDEC       ;YES, DECREMENT THE REFERENCE\r
+        005267' 550300  013410' DEF24:  HRRZ    V,WWRXX         ;GET START OF TREE\r
+        005270' 336000  013402'         SKIPN   .TEMP           ;ANY DEFAULT ARGUMENTS TO TAKE CARE OF?\r
+        005271' 254000  005317'         JRST    DEF25           ;NO\r
+        005272' 550346  000001          HRRZ    C,1(V)          ;GET SHIFTED ARG COUNT\r
+        005273' 242340  777767          LSH     C,-9            ;GET ARG COUNT BACK\r
+        005274' 271340  000001          ADDI    C,1             ;ONE MORE FOR TERMINAL ZERO\r
+\r\fMACRO V.10                     PAGE 97-1\r
+        MACRO/REPEAT HANDLERS\r
+\r
+        005275' 270340  013402'         ADD     C,.TEMP         ;NUMBER OF ITEMS IN STACK\r
+        005276' 507000  000007          HRLS    C               ;MAKE XWD\r
+        005277' 274740  000007          SUB     PP,C            ;BACK UP STACK\r
+        005300' 200140  013402'         MOVE    SDEL,.TEMP      ;NUMBER OF WORDS NEEDED\r
+        005301' 273140  012727'         ADDB    SDEL,FREE       ;FROM FREE CORE\r
+        005302' 311140  013102'         CAML    SDEL,SYMBOL     ;MORE CORE NEEDED\r
+        005303' 260740  010014'         PUSHJ   PP,XCEEDS       ;YES, TRY TO GET IT\r
+        005304' 274140  013402'         SUB     SDEL,.TEMP      ;FORM POINTER\r
+        005305' 506146  000001          HRLM    SDEL,1(V)       ;STORE IT WITH ARG COUNT IN MACRO\r
+        005306' 275140  000001          SUBI    SDEL,1          ;TO USE FOR PUSHING POINTER INTO STORAGE\r
+        005307' 201357  000001          MOVEI   C,1(PP)         ;POINT TO START OF STACK\r
+        005310' 200247  000000  DEF26:  MOVE    ARG,(C)         ;GET AN ITEM OFF STACK\r
+        005311' 607240  777740          TLNN    ARG,-40         ;A POINTER?\r
+                                        JUMPN   ARG,[PUSH SDEL,ARG      ;YES, STORE IT\r
+                                \r\fMACRO V.10                     PAGE 98\r
+        MACRO/REPEAT HANDLERS\r
+\r
+        005312' 326240  014245'                 AOJA    C,DEF26]        ;GET NEXT\r
+        005313' 261740  000005          PUSH    PP,ARG          ;RESTACK ARGUMENT\r
+        005314' 332000  000005          SKIPE   ARG             ;FINISHED IF ZERO\r
+        005315' 344340  005310'         AOJA    C,DEF26 ;GET NEXT\r
+        005316' 261140  000005          PUSH    SDEL,ARG        ;STORE ZERO IN DEFAULT LIST ALSO\r
+\r\fMACRO V.10                     PAGE 99\r
+        MACRO/REPEAT HANDLERS\r
+\r
+        005317' 205240  020000  DEF25:  MOVSI   ARG,MACF\r
+        005320' 202740  013344'         MOVEM   PP,PPTMP2       ;STORE TEMP STORAGE POINTER\r
+        005321' 260740  012366'         PUSHJ   PP,INSERT       ;INSERT/UPDATE\r
+        005322' 621600  000040          TLZ IO,DEFCRS   ;JUST IN CASE\r
+        005323' 402000  013404'         SETZM   ARGF            ;NO ARGUMENT SEEN\r
+        005324' 402000  013403'         SETZM   SQFLG           ;AND NO ' SEEN\r
+        005325' 634140  000003          TDZA    SDEL,SDEL       ;CLEAR BRACKET COUNT\r
+        005326' 260740  006262' DEF30:  PUSHJ   PP,WCHAR        ;WRITE CHARACTER\r
+        005327' 260740  006255' DEF31:  PUSHJ   PP,GCHAR        ;GET A CHARACTER\r
+        005330' 200400  000007  DEF32:  MOVE    CS,C            ;GET A COPY\r
+        005331' 306340  000073          CAIN    C,";"           ;IS IT A COMMENT\r
+        005332' 254000  005371'         JRST    CPEEK           ;YES CHECK FOR ;;\r
+        005333' 307400  000172  DEF33:  CAIG CS,"Z"+40          ;CONVERT LOWER CASE\r
+        005334' 305400  000141          CAIGE CS,"A"+40\r
+        005335' 254000  005337'         JRST    .+2\r
+        005336' 275400  000040          SUBI CS,40\r
+\r\fMACRO V.10                     PAGE 100\r
+        MACRO/REPEAT HANDLERS\r
+\r
+        005337' 305400  000040          CAIGE CS,40             ;TEST FOR CONTROL CHAR.\r
+                                        JRST    [SKIPN  SQFLG   ;HAS SINGLE QUOTE BEEN SEEN?\r
+                                                JRST    DEF30   ;NO, OUTPUT THIS CHAR.\r
+                                                PUSH    PP,C    ;YES, SAVE CURRENT CHAR\r
+                                                MOVEI   C,47    ;SET UP QUOTE\r
+                                                PUSHJ   PP,WCHAR;WRITE IT\r
+                                                POP     PP,C    ;GET BACK CURRENT CHAR.\r
+                                                SETZM   SQFLG   ;RESET FLAG\r
+        005340' 254000  014247'                 JRST    DEF30]  ;AND CONTINUE \r
+        005341' 303400  000137          CAILE CS,77+40\r
+        005342' 254000  005326'         JRST    DEF30           ;TEST FOR SPECIAL\r
+        005343' 200410  001407'         MOVE    CS,CSTAT-40(CS) ;GET STATUS BITS\r
+\r\fMACRO V.10                     PAGE 101\r
+        MACRO/REPEAT HANDLERS\r
+\r
+        005344' 603400  000006          TLNE    CS,6            ;ALPHA-NUMERIC?\r
+        005345' 254000  005406'         JRST    DEF40           ;YES\r
+        005346' 336000  013403'         SKIPN   SQFLG           ;WAS A ' SEEN?\r
+        005347' 254000  005355'         JRST    DEF36           ;NO, PROCESH\r
+        005350' 261740  000007          PUSH    PP,C            ;YES, SAVE CURRENT CHARACTER\r
+        005351' 201340  000047          MOVEI   C,47            ;AND PUT IN A '\r
+        005352' 260740  006262'         PUSHJ   PP,WCHAR        ;...\r
+        005353' 262740  000007          POP     PP,C            ;RESTORE CURRENT CHARACTER\r
+        005354' 402000  013403'         SETZM   SQFLG           ;AND RESET FLAG\r
+        005355' 302340  000047  DEF36:  CAIE    C,47            ;IS THIS A '?\r
+        005356' 254000  005363'         JRST    DEF35           ;NOPE\r
+        005357' 336000  013404'         SKIPN   ARGF            ;YES, WAS LAST THING SEEN AN ARG?\r
+        005360' 476000  013403'         SETOM   SQFLG           ;IF NOT, SET SNGL QUOT FLAG\r
+        005361' 402000  013404'         SETZM   ARGF            ;BUT NOT ARGUMENT IN ANY CASE\r
+        005362' 254000  005327'         JRST    DEF31           ;GO GET NEXT CHARACTER\r
+\r\fMACRO V.10                     PAGE 102\r
+        MACRO/REPEAT HANDLERS\r
+\r
+        005363' 402000  013404' DEF35:  SETZM   ARGF            ;THIS IS NOT AN ARGUMENT\r
+        005364' 306340  000074          CAIN    C,"<"           ;"<"?\r
+        005365' 344140  005326'         AOJA    SDEL,DEF30      ;YES, INCREMENT COUNT AND WRITE\r
+        005366' 306340  000076          CAIN    C,">"           ;">"?\r
+        005367' 361140  005462'         SOJL    SDEL,DEF70      ;YES, TEST FOR END\r
+        005370' 254000  005326'         JRST    DEF30           ;NO, WRITE IT\r
+\r
+        005371' 607600  004000  CPEEK:  TLNN    IO,IOPALL       ;IF LALL IS ON\r
+        005372' 254000  005333'         JRST    DEF33           ;JUST RETURN\r
+        005373' 260740  006335'         PUSHJ   PP,PEEK         ;LOOK AT NEXT CHAR.\r
+        005374' 306340  000073          CAIN    C,";"           ;IS IT ;;?\r
+        005375' 254000  005400'         JRST    CPEEK1          ;YES\r
+        005376' 200340  000010          MOVE    C,CS            ;RESTORE C\r
+        005377' 254000  005333'         JRST    DEF33           ;AND RETURN\r
+\r
+        005400' 260740  006255' CPEEK1: PUSHJ   PP,GCHAR        ;GET THE CHAR.\r
+        005401' 302340  000076          CAIE    C,">"           ;RETURN IF END OF MACRO\r
+        005402' 307340  000015          CAIG    C,CR            ;IS CHAR ONE OF\r
+        005403' 305340  000012          CAIGE   C,LF            ;LF,VT,FF,CR\r
+        005404' 254000  005400'         JRST    CPEEK1          ;NO,SO GET NEXT CHAR.\r
+        005405' 254000  005330'         JRST    DEF32           ;YES,RETURN AND STORE\r
+\r\fMACRO V.10                     PAGE 103\r
+        MACRO/REPEAT HANDLERS\r
+\r
+        005406' 201000  000000  DEF40:  MOVEI   AC0,0           ;CLEAR ATOM\r
+        005407' 205040  440600          MOVSI   AC1,(POINT 6,AC0)       ;SET POINTER\r
+        005410' 261740  000007  DEF42:  PUSH    PP,C            ;STACK CHARACTER\r
+        005411' 603040  770000          TLNE    AC1,770000      ;HAVE WE STORED 6?\r
+        005412' 136400  000001          IDPB    CS,AC1          ;NO, STORE IN ATOM\r
+        005413' 260740  006255'         PUSHJ   PP,GCHAR        ;GET NEXT CHARACTER\r
+        005414' 200400  000007          MOVE    CS,C\r
+        005415' 307400  000172          CAIG CS,"Z"+40\r
+        005416' 305400  000141          CAIGE CS,"A"+40\r
+        005417' 254000  005421'         JRST    .+2\r
+        005420' 275400  000040          SUBI CS,40              ;CONVERT LOWER TO UPPER\r
+        005421' 301400  000040          CAIL CS,40\r
+        005422' 303400  000137          CAILE CS,77+40\r
+        005423' 254000  005427'         JRST    DEF44           ;TEST SPECIAL\r
+        005424' 200410  001407'         MOVE    CS,CSTAT-40(CS) ;GET STATUS\r
+        005425' 603400  000006          TLNE    CS,6            ;ALPHA-NUMERIC?\r
+        005426' 254000  005410'         JRST    DEF42           ;YES, GET ANOTHER\r
+        005427' 261740  014100' DEF44:  PUSH    PP,[0]          ;NO, MARK THE LIST\r
+        005430' 200200  013343'         MOVE    SX,PPTMP1       ;GET POINTER TO TOP\r
+\r
+        005431' 336004  000001  DEF46:  SKIPN   1(SX)           ;END OF LIST?\r
+        005432' 254000  005451'         JRST    DEF50           ;YES\r
+        005433' 312004  000001          CAME    AC0,1(SX)       ;NO, DO THEY COMPARE?\r
+        005434' 344200  005431'         AOJA    SX,DEF46        ;NO, TRY AGAIN\r
+        005435' 274200  013343'         SUB     SX,PPTMP1       ;YES, GET DUMMY SYMBOL NUMBER\r
+        005436' 242200  000004          LSH SX,4\r
+        005437' 205404  776020          MOVSI   CS,<(BYTE (7) 177,101)>(SX)     ;SET ESCAPE CODE MACEND\r
+        005440' 242000  777742          LSH     AC0,-^D30\r
+        005441' 306000  000005          CAIN    AC0,5           ;"%"?\r
+        005442' 661400  001000          TLO     CS,1000         ;YES, SET CRESYM FLAG\r
+        005443' 260740  006266'         PUSHJ   PP,WWORD        ;WRITE THE WORD\r
+        005444' 476000  013404'         SETOM ARGF              ;SET ARGUMENT SEEN FLAG\r
+        005445' 402000  013403'         SETZM SQFLG             ;AND IGNORE ANY ' WAITING TO GET INTO STRING\r
+        005446' 200740  013344' DEF48:  MOVE    PP,PPTMP2       ;RESET PUSHDOWN POINTER\r
+        005447' 661600  000004          TLO     IO,IORPTC       ;ECHO LAST CHARACTER\r
+        005450' 254000  005327'         JRST    DEF31           ;RECYCLE\r
+\r
+        005451'                 DEF50:\r
+        005451' 336000  013403'         SKIPN   SQFLG           ;HAVE WE SEEN A '?\r
+        005452' 254000  005456'         JRST    DEF51           ;NOPE\r
+        005453' 201340  000047          MOVEI   C,47            ;YES, PUT IT IN\r
+        005454' 260740  006262'         PUSHJ   PP,WCHAR        ;...\r
+        005455' 402000  013403'         SETZM   SQFLG           ;AND CLEAR FLAG\r
+        005456' 200344  000002  DEF51:  MOVE    C,2(SX)         ;GET CHARACTER\r
+        005457' 322340  005446'         JUMPE   C,DEF48         ;CLEAN UP IF END\r
+        005460' 260740  006262'         PUSHJ   PP,WCHAR        ;WRITE THE CHARACTER\r
+        005461' 344200  005456'         AOJA    SX,DEF51        ;GET NEXT\r
+\r
+        005462' 200740  013343' DEF70:  MOVE    PP,PPTMP1       ;RESTORE PUSHDOWN POINTER\r
+        005463' 205400  774020          MOVSI   CS,(BYTE (7) 177,1)\r
+        005464' 260740  006272'         PUSHJ   PP,WWRXE        ;WRITE END\r
+        005465' 402000  013273'         SETZM INDEF     ;OUT OF IT\r
+        005466' 254000  004452'         JRST    BYPASS\r
+\r\fMACRO V.10                     PAGE 104\r
+        MACRO/REPEAT HANDLERS\r
+\r
+                                ; HERE TO STORE DEFAULT ARGUMENTS\r
+\r
+        005467' 350000  013402' DEF80:  AOS     .TEMP           ;COUNT ONE MORE\r
+        005470' 260740  006217'         PUSHJ   PP,SKELI1       ;INITIALIZE SKELETON\r
+        005471' 504300  000004          HRL     V,SX            ;SYMBOL NUMBER\r
+        005472' 261740  000006          PUSH    PP,V            ;STORE POINTER\r
+        005473' 634140  000003          TDZA    SDEL,SDEL       ;ZERO BRACKET COUNT\r
+        005474' 260740  006262' DEF81:  PUSHJ   PP,WCHARQ       ;WRITE A CHARACTER\r
+        005475' 260740  006254'         PUSHJ   PP,GCHARQ       ;GET A CHARACTER\r
+        005476' 306340  000074          CAIN    C,"<"           ;ANOTHER "<"?\r
+        005477' 344140  005474'         AOJA    SDEL,DEF81      ;YES, INCREMENT AND WRITE\r
+        005500' 302340  000076          CAIE    C,">"           ;CLOSING ANGLE?\r
+        005501' 254000  005474'         JRST    DEF81           ;NO, JUST WRITE THE CHAR.\r
+        005502' 365140  005474'         SOJGE   SDEL,DEF81      ;YES, WRITE IF NOT END\r
+        005503' 205400  774040          MOVSI   CS,(BYTE (7) 177,2)\r
+        005504' 260740  006272'         PUSHJ   PP,WWRXE        ;WRITE END OF DUMMY ARGUMENT\r
+        005505' 260740  006255'         PUSHJ   PP,GCHAR        ;READ AT NEXT CHAR.\r
+        005506' 302340  000051          CAIE    C,")"           ;END OF ARGUMENT LIST?\r
+        005507' 254000  005241'         JRST    DEF10           ;NO, GET NEXT SYMBOL\r
+        005510' 254000  005251'         JRST    DEF12           ;YES, LOOK FOR "<"\r
+\r\fMACRO V.10                     PAGE 105\r
+        MACRO CALL PROCESSOR\r
+\r
+                                SUBTTL  MACRO CALL PROCESSOR\r
+        005511' 335000  013405' CALLM:  SKIPGE  MACENL          ;ARE WE TRYING TO RE-ENTER?\r
+        005512' 254000  003311'         JRST    ERRAX           ;YES, BOMB OUT WITH ERROR\r
+        005513' 563000  013405'         HRROS   MACENL          ;FLAG "CALLM IN PROGRESS"\r
+        005514' 250700  012600'         EXCH    MP,RP\r
+        005515' 261700  000006          PUSH    MP,V            ;STACK FOR REFDEC\r
+        005516' 250700  012600'         EXCH    MP,RP\r
+        005517' 202000  013276'         MOVEM   AC0,CALNAM      ;SAVE MACRO NAME INCASE OF ERROR\r
+        005520' 200140  013415'         MOVE SDEL,SEQNO2        ;SAVE IN CASE OF EOF\r
+        005521' 202140  013300'         MOVEM SDEL,CALSEQ\r
+        005522' 200140  013414'         MOVE SDEL,PAGENO\r
+        005523' 202140  013277'         MOVEM SDEL,CALPG\r
+        005524' 271300  000001          ADDI    V,1             ;POINT TO DUMMY SYMBOL COUNT\r
+        005525' 350146  000000          AOS     SDEL,0(V)       ;INCREMENT ARG COUNT\r
+        005526' 512140  013402'         HLLZM   SDEL,.TEMP      ;DEFAULT ARG POINTER IF NON-ZERO\r
+        005527' 246140  777723          LSHC    SDEL,-^D<9+36>  ;ZERO SDEL, GET ARG COUNT IN SX\r
+        005530' 405200  000777          ANDI    SX,777          ;MASK\r
+        005531' 332000  013402'         SKIPE   .TEMP           ;IF AT LEAST ONE DEFAULT ARG\r
+        005532' 542200  013402'         HRRM    SX,.TEMP        ;STORE COUNT OF ARGS\r
+        005533' 261740  000006          PUSH    PP,V            ;STACK FOR MRP\r
+        005534' 261740  012600'         PUSH    PP,RP           ;STACK FOR MACPNT\r
+        005535' 322200  005602'         JUMPE   SX,MAC20        ;TEST FOR NO ARGS\r
+        005536' 260740  001406'         PUSHJ   PP,CHARAC\r
+        005537' 302340  000050          CAIE    C,"("           ;"("\r
+        005540' 664140  777777          TROA    SDEL,-1         ;NO, FUDGE PAREN COUNT AND SKIP\r
+\r
+        005541' 260740  006255' MAC10:  PUSHJ   PP,GCHAR        ;GET A CHARACTER, LOOK FOR AN ARG\r
+        005542' 307340  000015          CAIG C,CR\r
+        005543' 305340  000012          CAIGE C,LF\r
+        005544' 306340  000073          CAIN    C,";"           ;";"?\r
+        005545' 254000  005604'         JRST    MAC21           ;YES, END OF ARGUMENT STRING\r
+\r
+        005546' 260740  006217'         PUSHJ   PP,SKELI1       ;NO, INITIALIZE SKELETON\r
+        005547' 306340  000074          CAIN    C,"<"           ;"<"?\r
+        005550' 254000  005677'         JRST    MAC30           ;YES, PROCESS AS SPECIAL\r
+        005551' 302340  000176          CAIE C,176\r
+        005552' 306340  000134          CAIN    C,134           ;"\"\r
+        005553' 254000  005707'         JRST    MAC40           ;YES, PROCESS SYMBOL\r
+\r
+        005554' 306340  000054  MAC14:  CAIN    C,","           ;","?\r
+        005555' 254000  005573'         JRST    MAC16           ;YES; NULL SYMBOL\r
+        005556' 306340  000050          CAIN    C,"("           ;"("?\r
+        005557' 271140  000001          ADDI    SDEL,1          ;YES, INCREMENT COUNT\r
+        005560' 306340  000051          CAIN    C,")"           ;")"?\r
+        005561' 361140  005573'         SOJL    SDEL,MAC16      ;YES, TEST FOR END\r
+        005562' 260740  006262'         PUSHJ   PP,WCHAR        ;WRITE INTO SKELETON\r
+        005563' 260740  001406' MAC14A: PUSHJ   PP,CHARAC       ;GET NEXT CHARACTER\r
+        005564' 307340  000015          CAIG C,CR\r
+        005565' 305340  000012          CAIGE C,LF\r
+        005566' 254000  005570'         JRST    .+2\r
+        005567' 254000  005572'         JRST    MAC15           ;TEST FOR END OF LINE\r
+        005570' 302340  000073          CAIE    C,";"           ;";"?\r
+        005571' 254000  005554'         JRST    MAC14           ;YES, END OF LINE\r
+\r\fMACRO V.10                     PAGE 105-1\r
+        MACRO CALL PROCESSOR\r
+\r
+\r
+        005572' 661600  000004  MAC15:  TLO     IO,IORPTC\r
+        005573' 205400  774040  MAC16:  MOVSI   CS,(BYTE (7) 177,2)\r
+        005574' 260740  006272'         PUSHJ   PP,WWRXE        ;WRITE END\r
+        005575' 250700  012600'         EXCH    MP,RP\r
+        005576' 261700  013410'         PUSH    MP,WWRXX\r
+        005577' 250700  012600'         EXCH    MP,RP\r
+        005600' 363200  005602'         SOJLE   SX,MAC20        ;BRANCH IF NO MORE ARGS\r
+        005601' 325140  005541'         JUMPGE  SDEL,MAC10      ;HAVEN'T SEEN TERMINAL ")" YET\r
+\r\fMACRO V.10                     PAGE 106\r
+        MACRO CALL PROCESSOR\r
+\r
+        005602' 627600  000004  MAC20:  TLZN    IO,IORPTC\r
+        005603' 260740  001406'         PUSHJ   PP,CHARAC\r
+        005604' 250700  012600' MAC21:  EXCH    MP,RP\r
+        005605' 322200  005627'         JUMPE   SX,MAC21B       ;NO MISSING ARGS\r
+        005606' 261700  014062' MAC21A: PUSH    MP,[-1]         ;FILL IN MISSING ARGS\r
+        005607' 336000  013402'         SKIPN   .TEMP           ;ANY DEFAULT ARGS?\r
+        005610' 254000  005626'         JRST    MAC21C          ;NO\r
+        005611' 550340  013402'         HRRZ    C,.TEMP         ;GET ARG COUNT\r
+        005612' 275344  777777          SUBI    C,-1(SX)        ;ACCOUNT FOR THOSE GIVEN\r
+        005613' 517000  000007          HRLZS   C               ;PUT IN LEFT HALF\r
+        005614' 554140  013402'         HLRZ    SDEL,.TEMP      ;ADDRESS OF TABLE\r
+        005615' 336003  000000  MAC21D: SKIPN   (SDEL)          ;END OF LIST\r
+        005616' 254000  005626'         JRST    MAC21C          ;YES\r
+        005617' 430343  000000          XOR     C,(SDEL)        ;TEST FOR CORRECT ARG\r
+        005620' 607340  777777          TLNN    C,-1            ;WAS IT?\r
+        005621' 254000  005624'         JRST    MAC21E          ;YES\r
+        005622' 430343  000000          XOR     C,(SDEL)        ;BACK THE WAY IT WAS\r
+        005623' 344140  005615'         AOJA    SDEL,MAC21D     ;AND TRY AGAIN\r
+\r
+        005624' 202356  000000  MAC21E: MOVEM   C,(MP)          ;REPLACE -1 WITH TREE POINTER\r
+        005625' 350007  000001          AOS     1(C)            ;INCREMENT REFERENCE\r
+        005626' 367200  005606' MAC21C: SOJG    SX,MAC21A\r
+        005627' 261700  014100' MAC21B: PUSH    MP,[0]          ;SET TERMINAL\r
+        005630' 550340  013002'         HRRZ    C,LIMBO\r
+        005631' 607600  000001          TLNN    IO,IOSALL       ;SUPPRESSING ALL?\r
+        005632' 254000  005651'         JRST    MAC23           ;NO\r
+        005633' 326540  005647'         JUMPN   MRP,MAC27       ;IN MACRO?\r
+        005634' 302340  000073          CAIE    C,";"           ;NO,IN COMMENT?\r
+        005635' 254000  005642'         JRST    MAC26           ;NO\r
+        005636' 260740  001406' MAC22:  PUSHJ   PP,CHARAC       ;YES,GET IT INTO THE LBUF\r
+        005637' 307340  000015          CAIG    C,CR            ;LESS THAN CR?\r
+        005640' 305340  000012          CAIGE   C,LF            ;AND GREATER THAN LF?\r
+        005641' 254000  005636'         JRST    MAC22           ;NO GET ANOTHER\r
+        005642' 515200  070000  MAC26:  HRLZI   SX,70000        ;DECREMENT BYTE POINTER\r
+        005643' 273200  013003'         ADDB    SX,LBUFP\r
+        005644' 325200  005647'         JUMPGE  SX,MAC27\r
+        005645' 525200  347777          HRLOI   SX,347777\r
+        005646' 272200  013003'         ADDM    SX,LBUFP\r
+        005647' 505340  777777  MAC27:  HRLI    C,-1            ;SET FLAG\r
+        005650' 254000  005664'         JRST    MAC25\r
+\r
+        005651' 201200  000136  MAC23:  MOVEI   SX,"^"\r
+        005652' 321600  005663'         JUMPAD  MAC24           ;BRANCH IF ADDRESS FIELD\r
+        005653' 306340  000073          CAIN    C,";"           ;IF SEMI-COLON\r
+        005654' 332000  013321'         SKIPE   LITLVL          ;AND NOT IN A LITERAL\r
+        005655' 254000  005663'         JRST    MAC24           ;NOT BOTH TRUE\r
+        005656' 326540  005663'         JUMPN   MRP,MAC24       ;OR IN A MACRO\r
+        005657' 260740  000230'         PUSHJ   PP,STOUT        ;LIST COMMENT OR CR-LF\r
+        005660' 603600  004000          TLNE    IO,IOPALL       ;MACRO EXPANSION SUPPRESSION?\r
+        005661' 661600  010000          TLO     IO,IOMAC        ;  NO, SET TEMP BIT\r
+        005662' 674340  014062'         TDOA    C,[-1]          ;FLAG LAST CHARACTER\r
+        005663' 137200  013003' MAC24:  DPB     SX,LBUFP        ;SET ^ INTO LINE BUFFER\r
+        005664' 261700  013407' MAC25:  PUSH    MP,MACPNT\r
+\r\fMACRO V.10                     PAGE 106-1\r
+        MACRO CALL PROCESSOR\r
+\r
+        005665' 262740  013407'         POP     PP,MACPNT\r
+        005666' 261700  000007          PUSH    MP,C\r
+        005667' 261700  013411'         PUSH    MP,RCOUNT       ;STACK WORD COUNT\r
+        005670' 261700  000013          PUSH    MP,MRP          ;STACK MACRO POINTER\r
+        005671' 262740  000013          POP     PP,MRP          ;SET NEW READ POINTER\r
+        005672' 250700  012600'         EXCH    MP,RP\r
+        005673' 350000  013406'         AOS     MACLVL\r
+        005674' 553000  013405'         HRRZS   MACENL          ;RESET "CALLM IN PROGRESS"\r
+        005675' 325600  000130'         JUMPOC  STMNT2          ;OP-CODE FIELD\r
+        005676' 254000  001073'         JRST    EVATOM          ;ADDRESS FIELD\r
+\r
+\r\fMACRO V.10                     PAGE 107\r
+        MACRO CALL PROCESSOR\r
+\r
+        005677' 201000  000000  MAC30:  MOVEI   AC0,0           ;INITIALIZE BRACKET COUNTER\r
+        005700' 260740  006255' MAC31:  PUSHJ   PP,GCHAR        ;GET A CHARACTER\r
+        005701' 306340  000074          CAIN    C,"<"           ;"<"?\r
+        005702' 271000  000001          ADDI    AC0,1           ;YES, INCREMENT COUNT\r
+        005703' 306340  000076          CAIN    C,">"           ;">"?\r
+        005704' 361000  005563'         SOJL    AC0,MAC14A      ;YES, EXIT IF MATCHING\r
+        005705' 260740  006262'         PUSHJ   PP,WCHAR        ;WRITE INTO SKELETON\r
+        005706' 254000  005700'         JRST    MAC31           ;GO BACK FOR ANOTHER\r
+\r
+        005707' 261740  000004  MAC40:  PUSH    PP,SX           ;STACK REGISTERS\r
+        005710' 261740  000003          PUSH    PP,SDEL\r
+        005711' 502600  013377'         HLLM    IO,TAGINC       ;SAVE IO FLAGS\r
+        005712' 260740  000354'         PUSHJ   PP,CELL         ;GET AN ATOM\r
+        005713' 200300  000000          MOVE    V,AC0           ;ASSUME NUMERIC\r
+        005714' 603600  020000          TLNE    IO,NUMSW        ;GOOD GUESS?\r
+        005715' 254000  005720'         JRST    MAC41           ;YES\r
+        005716' 260740  012210'         PUSHJ   PP,SSRCH        ;SEARCH THE SYMBOL TABLE\r
+        005717' 664600  100000          TROA    ER,ERRX         ;NOT FOUND, ERROR\r
+        005720' 260740  005726' MAC41:  PUSHJ   PP,MAC42        ;FORM ASCII STRING\r
+        005721' 500600  013377'         HLL     IO,TAGINC       ;RESTORE IO FLAGS\r
+        005722' 262740  000003          POP     PP,SDEL\r
+        005723' 262740  000004          POP     PP,SX\r
+        005724' 661600  000004          TLO     IO,IORPTC       ;REPEAT LAST CHARACTER\r
+        005725' 254000  005563'         JRST    MAC14A          ;RETURN TO MAIN SCAN\r
+\r
+        005726' 200340  000006  MAC42:  MOVE    C,V\r
+        005727' 246340  777735  MAC44:  LSHC    C,-^D35\r
+        005730' 242400  777777          LSH     CS,-1\r
+        005731' 235355  000000          DIVI    C,0(RX)         ;DIVIDE BY CURRENT RADIX\r
+        005732' 506417  000000          HRLM    CS,0(PP)\r
+        005733' 322340  005735'         JUMPE   C,.+2           ;TEST FOR END\r
+        005734' 260740  005727'         PUSHJ   PP,MAC44\r
+        005735' 554357  000000          HLRZ    C,0(PP)\r
+        005736' 271340  000060          ADDI    C,"0"           ;FORM TEXT\r
+        005737' 254000  006262'         JRST    WCHAR           ;WRITE INTO SKELETON\r
+\r\fMACRO V.10                     PAGE 108\r
+        MACRO CALL PROCESSOR\r
+\r
+        005740' 370000  013405' MACEN0: SOS     MACENL\r
+        005741' 335340  013405' MACEND: SKIPGE  C,MACENL        ;TEST "CALLM IN PROGRESS"\r
+        005742' 350000  013405'         AOS     MACENL          ;INCREMENT END LEVEL AND EXIT\r
+        005743' 321340  005134'         JUMPL   C,REPEA8\r
+        005744' 250700  012600'         EXCH    MP,RP\r
+        005745' 262700  000013          POP     MP,MRP          ;RETRIEVE READ POINTER\r
+        005746' 262700  013411'         POP     MP,RCOUNT       ;AND WORD COUNT\r
+        005747' 201340  000136          MOVEI   C,"^"\r
+        005750' 331016  000000          SKIPL   0(MP)           ;TEST FLAG\r
+        005751' 260740  001414'         PUSHJ   PP,RSW2         ;MARK END OF SUBSTITUTION\r
+        005752' 262700  000007          POP     MP,C\r
+        005753' 262700  000005          POP     MP,ARG\r
+        005754' 334700  013407'         SKIPA   MP,MACPNT       ;RESET MP AND SKIP\r
+        005755' 260740  006352' MACEN1: PUSHJ   PP,REFDEC       ;DECREMENT REFERENCE\r
+        005756' 350300  013407' MACEN2: AOS     V,MACPNT        ;GET POINTER\r
+        005757' 200306  000000          MOVE    V,0(V)\r
+        005760' 327300  005755'         JUMPG   V,MACEN1        ;IF >0, DECREMENT REFERENCE\r
+        005761' 321300  005756'         JUMPL   V,MACEN2        ;IF <0, BYPASS\r
+        005762' 262700  000006          POP     MP,V            ;IF=0, RETRIEVE POINTER\r
+        005763' 260740  006352'         PUSHJ   PP,REFDEC       ;DECREMENT REFERENCE\r
+        005764' 202240  013407'         MOVEM   ARG,MACPNT\r
+        005765' 250700  012600'         EXCH    MP,RP\r
+        005766' 370000  013406'         SOS     MACLVL\r
+        005767' 336000  013405'         SKIPN   MACENL          ;CHECK UNPROCESSED END LEVEL\r
+        005770' 254000  005773'         JRST    MACEN3          ;NONE TO PROCESS\r
+        005771' 606540  777777          TRNN    MRP,-1          ;MRP AT END OF TEXT\r
+        005772' 254000  005740'         JRST    MACEN0          ;THEN POP THE MACRO STACK NOW\r
+        005773' 606340  077400  MACEN3: TRNN    C,77400         ;SALL FLAG?\r
+        005774' 505340  000000          HRLI    C,0             ;YES,TURN IT OFF\r
+        005775' 321340  005134'         JUMPL   C,REPEA8        ;IF FLAG SET SUBSTITUTE\r
+        005776' 254000  001412'         JRST    RSW1\r
+\r\fMACRO V.10                     PAGE 109\r
+        MACRO CALL PROCESSOR\r
+\r
+        005777' 336000  013406' IRP0:   SKIPN   MACLVL          ;ARE WE IN A MACRO?\r
+        006000' 254000  003311'         JRST    ERRAX           ;NO, BOMB OUT\r
+        006001' 260740  006322' IRP10:  PUSHJ   PP,MREADS       ;YES, GET DATA SPEC\r
+        006002' 302340  000040          CAIE C,40               ;SKIP LEADING BLANKS\r
+        006003' 306340  000050          CAIN    C,"("           ;"("?\r
+        006004' 254000  006001'         JRST    IRP10           ;YES, BYPASS\r
+        006005' 306340  000011          CAIN C,11\r
+        006006' 254000  006001'         JRST IRP10\r
+        006007' 302340  000177          CAIE    C,177           ;NO, IS IT SPECIAL?\r
+        006010' 254000  003311'         JRST    ERRAX           ;NO, ERROR\r
+        006011' 260740  006322'         PUSHJ   PP,MREADS       ;YES\r
+        006012' 626340  000100          TRZN C,100              ;CREATED?\r
+        006013' 254000  003311'         JRST ERRAX\r
+        006014' 301340  000040          CAIL C,40               ;TOO BIG?\r
+        006015' 254000  003311'         JRST ERRAX\r
+        006016' 270340  013407'         ADD     C,MACPNT        ;NO, FORM POINTER TO STACK\r
+        006017' 261700  013316'         PUSH    MP,IRPCF        ;STACK PREVIOUS POINTERS\r
+        006020' 261700  013320'         PUSH    MP,IRPSW\r
+        006021' 261700  013315'         PUSH    MP,IRPARP\r
+        006022' 261700  013314'         PUSH    MP,IRPARG\r
+        006023' 261700  013313'         PUSH    MP,IRPCNT\r
+        006024' 261707  000000          PUSH    MP,0(C)\r
+        006025' 261700  013317'         PUSH    MP,IRPPOI\r
+\r
+        006026' 552340  013315'         HRRZM   C,IRPARP\r
+        006027' 202000  013316'         MOVEM   AC0,IRPCF       ;IRPC FLAG FOUND IN AC0\r
+        006030' 476000  013320'         SETOM   IRPSW           ;RESET IRP SWITCH\r
+        006031' 200407  000000          MOVE    CS,0(C)\r
+        006032' 202400  013314'         MOVEM   CS,IRPARG\r
+\r
+        006033' 260740  006322'         PUSHJ   PP,MREADS\r
+        006034' 302340  000074          CAIE    C,"<"           ;"<"?\r
+        006035' 254000  006033'         JRST    .-2             ;NO, SEARCH UNTIL FOUND\r
+        006036' 260740  006217'         PUSHJ   PP,SKELI1       ;INITIALIZE NEW STRING\r
+        006037' 202240  013317'         MOVEM   ARG,IRPPOI      ;SET NEW POINTER\r
+\r
+        006040' 634140  000003          TDZA    SDEL,SDEL       ;ZERO BRACKET COUNT AND SKIP\r
+        006041' 260740  006262' IRP20:  PUSHJ   PP,WCHAR1\r
+        006042' 260740  006322'         PUSHJ   PP,MREADS\r
+        006043' 306340  000074          CAIN    C,"<"           ;"<"?\r
+        006044' 344140  006041'         AOJA    SDEL,IRP20      ;YES, INCREMENT COUNT AND WRITE\r
+        006045' 302340  000076          CAIE    C,">"           ;">"?\r
+        006046' 254000  006041'         JRST    IRP20           ;NO, JUST WRITE IT\r
+        006047' 365140  006041'         SOJGE   SDEL,IRP20      ;YES, WRITE IF NOT MATCHING\r
+        006050' 200400  014257'         MOVE    CS,[BYTE (7) 15,177,4]\r
+        006051' 260740  006272'         PUSHJ   PP,WWRXE        ;WRITE END\r
+        006052' 261700  000013          PUSH    MP,MRP          ;STACK PREVIOUS READ POINTER\r
+        006053' 261700  013411'         PUSH    MP,RCOUNT       ;AND WORD COUNT\r
+        006054' 337400  013314'         SKIPG   CS,IRPARG\r
+        006055' 254000  006135'         JRST    IRPPOP          ;EXIT IF NOT VALID ARGUMENT\r
+        006056' 201350  000001          MOVEI   C,1(CS)         ;INITIALIZE POINTER\r
+        006057' 202340  013314'         MOVEM   C,IRPARG\r
+\r\fMACRO V.10                     PAGE 110\r
+        MACRO CALL PROCESSOR\r
+\r
+        006060' 250540  013314' IRPSET: EXCH    MRP,IRPARG      ;SWAP READ POINTERS\r
+        006061' 200200  013411'         MOVE    SX,RCOUNT       ;SWAP COUNT OF WORDS TO READ\r
+        006062' 250200  013313'         EXCH    SX,IRPCNT\r
+        006063' 202200  013411'         MOVEM   SX,RCOUNT\r
+        006064' 260740  006217'         PUSHJ   PP,SKELI1       ;INITIALIZE SKELETON FOR DATA\r
+        006065' 552260  013315'         HRRZM   ARG,@IRPARP     ;STORE NEW DS POINTER\r
+        006066' 403200  000003          SETZB   SX,SDEL         ;ZERO FOUND FLAG AND BRACKET COUNT\r
+        006067' 135340  000013          LDB     C,MRP           ;GET LAST CHAR\r
+        006070' 306340  000054          CAIN    C,","\r
+        006071' 332000  013316'         SKIPE   IRPCF           ;IN IRPC\r
+        006072' 254000  006074'         JRST    IRPSE1          ;NO\r
+        006073' 201200  000001          MOVEI   SX,1            ;FORCE ARGUMENT\r
+        006074' 260740  006322' IRPSE1: PUSHJ   PP,MREADS\r
+        006075' 302340  000177          CAIE    C,177           ;SPECIAL?\r
+        006076' 344200  006103'         AOJA    SX,IRPSE2       ;NO, FLAG AS FOUND\r
+        006077' 260740  006341'         PUSHJ   PP,PEEKM        ;LOOK AT NEXT CHARACTER\r
+        006100' 402000  013320'         SETZM   IRPSW           ;SET IRP SWITCH\r
+        006101' 327200  006116'         JUMPG   SX,IRPSE4       ;IF ARG FOUND, PROCESS IT\r
+        006102' 254000  006135'         JRST    IRPPOP          ;NO, CLEAN UP AND EXIT\r
+\r
+        006103' 332000  013316' IRPSE2: SKIPE   IRPCF           ;IRPC?\r
+        006104' 254000  006113'         JRST    IRPSE3          ;YES, WRITE IT\r
+        006105' 306340  000054          CAIN    C,","           ;NO, IS IT A COMMA?\r
+        006106' 322140  006116'         JUMPE   SDEL,IRPSE4     ;YES, EXIT IF NOT NESTED\r
+        006107' 306340  000074          CAIN    C,"<"           ;"<"?\r
+        006110' 271140  000001          ADDI    SDEL,1          ;YES, INCREMENT COUNT\r
+        006111' 306340  000076          CAIN    C,">"           ;">"?\r
+        006112' 275140  000001          SUBI    SDEL,1          ;YES, DECREMENT COUNT\r
+\r
+        006113' 260740  006262' IRPSE3: PUSHJ   PP,WCHAR\r
+        006114' 336000  013316'         SKIPN   IRPCF           ;IRPC?\r
+        006115' 254000  006074'         JRST    IRPSE1          ;NO, GET NEXT CHARACTER\r
+\r
+        006116' 205400  774040  IRPSE4: MOVSI   CS,(BYTE (7) 177,2)\r
+        006117' 260740  006272'         PUSHJ   PP,WWRXE        ;WRITE END\r
+        006120' 202540  013314'         MOVEM   MRP,IRPARG      ;SAVE POINTER\r
+        006121' 200540  013411'         MOVE    MRP,RCOUNT      ;SAVE COUNT\r
+        006122' 202540  013313'         MOVEM   MRP,IRPCNT\r
+        006123' 550540  013317'         HRRZ    MRP,IRPPOI      ;SET FOR NEW SCAN\r
+        006124' 344540  005134'         AOJA    MRP,REPEA8      ;ON ARG COUNT\r
+\r\fMACRO V.10                     PAGE 111\r
+        MACRO CALL PROCESSOR\r
+\r
+        006125' 336000  013315' STOPI0: SKIPN   IRPARP          ;IRP IN PROGRESS?\r
+        006126' 254000  003311'         JRST    ERRAX           ;NO, ERROR\r
+        006127' 402000  013320'         SETZM   IRPSW           ;YES, SET SWITCH\r
+        006130' 263740  000000          POPJ    PP,\r
+\r
+        006131' 200320  013315' IRPEND: MOVE    V,@IRPARP\r
+        006132' 260740  006352'         PUSHJ   PP,REFDEC\r
+        006133' 332000  013320'         SKIPE   IRPSW           ;MORE TO COME?\r
+        006134' 254000  006060'         JRST    IRPSET          ;YES\r
+\r
+        006135' 200300  013317' IRPPOP: MOVE    V,IRPPOI\r
+        006136' 260740  006352'         PUSHJ   PP,REFDEC       ;DECREMENT REFERENCE\r
+        006137' 262700  013411'         POP     MP,RCOUNT\r
+        006140' 262700  000013          POP     MP,MRP          ;RESTORE CELLS\r
+        006141' 262700  013317'         POP     MP,IRPPOI\r
+        006142' 262720  013315'         POP     MP,@IRPARP\r
+        006143' 262700  013313'         POP     MP,IRPCNT\r
+        006144' 262700  013314'         POP     MP,IRPARG\r
+        006145' 262700  013315'         POP     MP,IRPARP\r
+        006146' 262700  013320'         POP     MP,IRPSW\r
+        006147' 262700  013316'         POP     MP,IRPCF\r
+        006150' 254000  005134'         JRST    REPEA8\r
+\r\fMACRO V.10                     PAGE 112\r
+        MACRO CALL PROCESSOR\r
+\r
+        006151'                 GETDS:                          ;GET DUMMY SYMBOL NUMBER\r
+        006151' 200400  000007          MOVE    CS,C            ;USE CS FOR WORK REGISTER\r
+        006152' 405400  000037          ANDI    CS,37           ;MASK\r
+        006153' 270400  013407'         ADD     CS,MACPNT       ;ADD BASE ADDRESS\r
+        006154' 200310  000000          MOVE    V,0(CS)         ;GET POINTER FLAG\r
+        006155' 327300  006203'         JUMPG   V,GETDS1        ;BRANCH IF POINTER\r
+        006156' 606340  000040          TRNN    C,40            ;NOT POINTER, SHOULD WE CREATE?\r
+        006157' 254000  001410'         JRST    RSW0            ;NO, FORGET THIS ARG\r
+        006160' 261740  013410'         PUSH    PP,WWRXX\r
+        006161' 261740  000012          PUSH    PP,MWP          ;STACK MACRO WRITE POINTER\r
+        006162' 261740  013412'         PUSH    PP,WCOUNT       ;SAVE WORD  COUNT\r
+        006163' 260740  006217'         PUSHJ   PP,SKELI1       ;INITIALIZE SKELETON\r
+        006164' 202250  000000          MOVEM   ARG,0(CS)       ;STORE POINTER\r
+        006165' 200400  014260'         MOVE    CS,[BYTE (7) 0,170,170,170,171] ;CREATE A SYMBOL\r
+        006166' 270400  013413'         ADD     CS,LSTSYM               ;LSTSYM= # OF LAST CREATED\r
+        006167' 630400  014261'         TDZ     CS,[BYTE (7) 0,170,170,170,170]\r
+        006170' 202400  013413'         MOVEM   CS,LSTSYM\r
+        006171' 434400  014262'         IOR     CS,[ASCII /.0000/]\r
+        006172' 201340  000056          MOVEI C,"."\r
+        006173' 260740  006262'         PUSHJ PP,WCHAR\r
+        006174' 260740  006266'         PUSHJ   PP,WWORD        ;WRITE INTO SKELETON\r
+        006175' 205400  774040          MOVSI   CS,(BYTE (7) 177,2)\r
+        006176' 260740  006272'         PUSHJ   PP,WWRXE        ;WRITE END CODE\r
+        006177' 262740  013412'         POP     PP,WCOUNT       ;RESTORE WORD COUNT\r
+        006200' 262740  000012          POP     PP,MWP          ;RESTORE MACRO WRITE POINTER\r
+        006201' 262740  013410'         POP     PP,WWRXX\r
+        006202' 200300  000005          MOVE    V,ARG           ;SET UP FOR REFINC\r
+\r
+        006203' 260740  006347' GETDS1: PUSHJ   PP,REFINC       ;INCREMENT REFERENCE\r
+        006204' 504300  013411'         HRL     V,RCOUNT        ;SAVE WORD COUNT\r
+        006205' 261700  000006          PUSH    MP,V            ;STACK V FOR DECREMENT\r
+        006206' 261700  000013          PUSH    MP,MRP          ;STACK READ POINTER\r
+        006207' 201546  000001          MOVEI   MRP,1(V)        ;FORM READ POINTER\r
+        006210' 254000  001410'         JRST    RSW0            ;EXIT\r
+\r
+        006211' 262700  000013  DSEND:  POP     MP,MRP\r
+        006212' 262700  000006          POP     MP,V\r
+        006213' 576300  013411'         HLREM   V,RCOUNT        ;RESTORE WORD COUNT\r
+        006214' 553000  000006          HRRZS   V               ;CLEAR COUNT\r
+        006215' 260740  006352'         PUSHJ   PP,REFDEC       ;DECREMENT REFERENCE\r
+        006216' 254000  001410'         JRST    RSW0            ;EXIT\r
+\r\fMACRO V.10                     PAGE 113\r
+        MACRO CALL PROCESSOR\r
+\r
+        006217' 201240  000001  SKELI1: MOVEI   ARG,1           ;ENTRY FOR SINGLE ARG\r
+        006220' 400500  000000  SKELI:  SETZ    MWP,            ;SIGNAL FIRST TIME THROUGH\r
+        006221' 260740  006233'         PUSHJ   PP,SKELWL       ;GET POINTER WORD\r
+        006222' 552500  013410'         HRRZM   MWP,WWRXX       ;SAVE FIRST ADDRESS\r
+        006223' 552500  013000'         HRRZM   MWP,LADR        ;SAVE START OF LINKED LIST\r
+        006224' 552252  000001          HRRZM   ARG,1(MWP)      ;STORE COUNT\r
+        006225' 370000  013412'         SOS     WCOUNT          ;ACCOUNT FOR WORD\r
+        006226' 550240  013410'         HRRZ    ARG,WWRXX       ;SET FIRST ADDRESS\r
+        006227' 271500  000002          ADDI    MWP,2           ;BUMP POINTER\r
+        006230' 505500  440700          HRLI    MWP,(POINT 7)   ;SET FOR 5 ASCII BYTES\r
+                                        ;SKELW RETURNS WITH ADR OF NEXT FREE LOC IN V (RIGHT)\r
+\r
+        006231' 373000  013412' SKELW:  SOSLE   WCOUNT          ;STILL SOME SPACE IN LEAF?\r
+        006232' 263740  000000          POPJ    PP,             ;YES, RETURN\r
+        006233' 332300  013041' SKELWL: SKIPE   V,NEXT          ;GET FIRST FREE ADDRESS\r
+        006234' 254000  006243'         JRST    SKELW1          ;IF NON-ZERO, UPDATE FREE\r
+        006235' 200300  012727'         MOVE    V,FREE          ;GET FREE\r
+        006236' 271300  000004          ADDI    V,.LEAF         ;INCREMENT BY LEAF SIZE\r
+        006237' 311300  013102'         CAML    V,SYMBOL        ;OVERFLOW?\r
+        006240' 260740  010015'         PUSHJ   PP,XCEED        ;YES, BOMB OUT\r
+        006241' 250300  012727'         EXCH    V,FREE          ;UPDATE FREE\r
+        006242' 402006  000000          SETZM   (V)             ;CLEAR LINK\r
+\r
+        006243' 500306  000000  SKELW1: HLL     V,0(V)          ;GET ADDRESS\r
+        006244' 546300  013041'         HLRM    V,NEXT          ;UPDATE NEXT\r
+        006245' 332000  000012          SKIPE   MWP             ;IF FIRST TIME\r
+        006246' 506312  777775          HRLM    V,1-.LEAF(MWP)  ;STORE LINK IN FIRST WORD OF LEAF\r
+        006247' 201500  000004          MOVEI   MWP,.LEAF       ;SIZE OF LEAF\r
+        006250' 202500  013412'         MOVEM   MWP,WCOUNT      ;STORE FOR COUNT DOWN\r
+        006251' 201506  000000          MOVEI   MWP,(V)         ;SET UP WRITE POINTER\r
+        006252' 661500  160700          TLO     MWP,(POINT 7,,21)       ;2 ASCII CHARS\r
+        006253' 263740  000000          POPJ    PP,\r
+\r
+                                        ;WWRXX  POINTS TO END OF TREE\r
+                                        ;MWP    IDPB POINTER TO NEXT HOLE\r
+                                        ;NEXT   FIRST OF A LINKED PORTION THAT IS NOT BEING USED (LEAVES)\r
+                                        ;FREE   POINTS TO FREE CORE BETWEEN TREE AND SYM-TABLE\r
+                                        ;LADR   POINTS TO BEG OF LINKED PORTION.\r
+\r\fMACRO V.10                     PAGE 114\r
+        MACRO CALL PROCESSOR\r
+\r
+        006254' 326540  006322' GCHARQ: JUMPN   MRP,MREADS      ;IF GETTING CHAR. FROM TREE\r
+        006255' 260740  001406' GCHAR:  PUSHJ   PP,CHARAC       ;GET ASCII CHARACTER\r
+        006256' 307340  000014          CAIG    C,FF            ;TEST FOR LF, VT OR FF\r
+        006257' 305340  000012          CAIGE   C,LF\r
+        006260' 263740  000000          POPJ    PP,             ;NO\r
+        006261' 254000  001736'         JRST    OUTIM1          ;YES, LIST IT\r
+\r
+        006262'                 WCHARQ:\r
+        006262'                 WCHAR:  \r
+        006262' 607500  760000  WCHAR1: TLNN    MWP,760000      ;END OF WORD?\r
+        006263' 260740  006231'         PUSHJ   PP,SKELW        ;YES, GET ANOTHER\r
+        006264' 136340  000012          IDPB    C,MWP           ;STORE CHARACTER\r
+        006265' 263740  000000          POPJ    PP,\r
+\r
+        006266' 246340  000007  WWORD:  LSHC    C,7             ;MOVE ASCII INTO C\r
+        006267' 260740  006262'         PUSHJ   PP,WCHAR1       ;STORE IT\r
+        006270' 326400  006266'         JUMPN   CS,WWORD        ;TEST FOR END\r
+        006271' 263740  000000          POPJ    PP,             ;YES, EXIT\r
+\r
+        006272' 260740  006266' WWRXE:  PUSHJ   PP,WWORD        ;WRITE LAST WORD\r
+        006273' 270500  013412'         ADD     MWP,WCOUNT      ;GET TO END OF LEAF\r
+        006274' 275500  000004          SUBI    MWP,.LEAF       ;NOW POINT TO START OF IT\r
+        006275' 553012  000000          HRRZS   (MWP)           ;ZERO LEFT HALF OF LAST LEAF\r
+        006276' 542520  013410'         HRRM    MWP,@WWRXX      ;SET POINTER TO END\r
+        006277' 263740  000000          POPJ    PP,\r
+\r\fMACRO V.10                     PAGE 115\r
+        MACRO CALL PROCESSOR\r
+\r
+        006300' 260740  006322' MREAD:  PUSHJ   PP,MREADS       ;READ ONE CHARACTER\r
+        006301' 302340  000177          CAIE    C,177           ;SPECIAL?\r
+        006302' 254000  001412'         JRST    RSW1            ;NO, EXIT\r
+        006303' 260740  006322'         PUSHJ   PP,MREADS       ;YES, GET CODE WORD\r
+        006304' 622340  000100          TRZE C,100              ;SYMBOL?\r
+        006305' 254000  006151'         JRST GETDS              ;YES\r
+        006306' 303340  000004          CAILE C,4               ;POSSIBLY ILLEGAL\r
+        006307' 254000  003311'         JRST ERRAX              ;YUP\r
+        006310' 541540  000000          HRRI    MRP,0           ;NO, SIGNAL END OF TEXT\r
+        006311' 254007  006312'         JRST    .+1(C)\r
+        006312' 260740  010015'         PUSHJ   PP,XCEED\r
+        006313' 254000  005741'         JRST    MACEND          ;1; END OF MACRO\r
+        006314' 254000  006211'         JRST    DSEND           ;2; END OF DUMMY SYMBOL\r
+        006315' 254000  005136'         JRST    REPEND          ;3; END OF REPEAT\r
+        006316' 254000  006131'         JRST    IRPEND          ;4; END OF IRP\r
+\r
+        006317' 505540  000700  MREADI: HRLI    MRP,700         ;SET UP BYTE POINTER\r
+        006320' 201340  000003          MOVEI   C,.LEAF-1       ;NUMBER OF WORDS\r
+        006321' 202340  013411'         MOVEM   C,RCOUNT\r
+        006322' 607540  777777  MREADS: TLNN    MRP,-1          ;FIRST TIME HERE?\r
+        006323' 254000  006317'         JRST    MREADI          ;YES, SET UP MRP AND RCOUNT\r
+        006324' 607540  760000          TLNN    MRP,760000      ;HAVE WE FINISHED WORD?\r
+        006325' 373000  013411'         SOSLE   RCOUNT          ;YES, STILL ROOM IN LEAF?\r
+        006326' 254000  006333'         JRST    MREADC          ;STILL CHAR. IN LEAF\r
+        006327' 554553  777775          HLRZ    MRP,1-.LEAF(MRP);YES, GET LINK\r
+        006330' 505540  160700          HRLI    MRP,(POINT 7,,21)       ;SET POINTER\r
+        006331' 201340  000004          MOVEI   C,.LEAF         ;RESET COUNT\r
+        006332' 202340  013411'         MOVEM   C,RCOUNT\r
+        006333' 134340  000013  MREADC: ILDB    C,MRP           ;GET CHARACTER\r
+        006334' 263740  000000          POPJ    PP,\r
+\r
+        006335' 326540  006341' PEEK:   JUMPN   MRP,PEEKM       ;THIS IS A MACRO READ\r
+        006336' 260740  001406'         PUSHJ   PP,CHARAC       ;READ AN ASCII CHAR.\r
+        006337' 661600  000004          TLO     IO,IORPTC       ;REPEAT  FOR NEXT\r
+        006340' 263740  000000          POPJ    PP,             ;AND RETURN\r
+\r
+        006341' 261740  000013  PEEKM:  PUSH    PP,MRP          ;SAVE MACRO READ POINTER\r
+        006342' 261740  013411'         PUSH    PP,RCOUNT       ;SAVE WORD COUNT\r
+        006343' 260740  006322'         PUSHJ   PP,MREADS       ;READ IN A CHAR.\r
+        006344' 262740  013411'         POP     PP,RCOUNT       ;RESTORE WORD COUNT\r
+        006345' 262740  000013          POP     PP,MRP          ;RESET READ POINTER\r
+        006346' 263740  000000          POPJ    PP,             ;IORPTC IS NOT SET\r
+\r\fMACRO V.10                     PAGE 116\r
+        MACRO CALL PROCESSOR\r
+\r
+        006347' 201406  000001  REFINC: MOVEI   CS,1(V)         ;GET POINTER TO TREE\r
+        006350' 350010  000000          AOS     0(CS)           ;INCREMENT REFERENCE\r
+        006351' 263740  000000          POPJ    PP,\r
+\r
+        006352' 323300  006364' REFDEC: JUMPLE  V,DECERR        ;CATASTROPHIC ERROR SOMEWHERE\r
+        006353' 201406  000001          MOVEI   CS,1(V)         ;GET POINTER TO TREE\r
+        006354' 370410  000000          SOS     CS,0(CS)        ;DECREMENT REFERENCE\r
+        006355' 602400  000777          TRNE    CS,000777       ;IS IT ZERO?\r
+        006356' 263740  000000          POPJ    PP,             ;NO, EXIT\r
+        006357' 550406  000000          HRRZ    CS,0(V)         ;YES, GET POINTER TO END\r
+        006360' 504400  013041'         HRL     CS,NEXT         ;GET POINTER TO NEXT RE-USABLE\r
+        006361' 502410  000000          HLLM    CS,0(CS)        ;SET LINK\r
+        006362' 542300  013041'         HRRM    V,NEXT          ;RESET NEXT\r
+        006363' 263740  000000          POPJ    PP,\r
+\r
+        006364' 200000  013276' DECERR: MOVE    AC0,CALNAM      ;GET MACRO NAME\r
+        006365' 205440  014263'         MOVSI   RC,[SIXBIT /ERROR WHILE EXPANDING@/]\r
+        006366' 260740  007757'         PUSHJ   PP,TYPMSG\r
+        006367' 254000  007656'         JRST    ERRNE2          ;COMMON MESSAGE\r
+\r\fMACRO V.10                     PAGE 117\r
+        MACRO CALL PROCESSOR\r
+\r
+                        000000  A==     0                       ;ASCII MODE\r
+                        000001  AL==    1                       ;ASCII LINE MODE\r
+                        000013  IB==    13                      ;IMAGE BINARY MODE\r
+                        000014  B==     14                      ;BINARY MODE\r
+                        000016  DMP==16         ;DUMP MODE\r
+\r
+                        000000  CTL==   0                       ;CONTROL DEVICE NUMBER\r
+                        000004  IFN CCLSW,<CTL2==4              ;INPUT DEV FOR CCL FILE>\r
+                        000001  BIN==   1                       ;BINARY DEVICE NUMBER\r
+                        000002  CHAR==  2                       ;INPUT DEVICE NUMBER\r
+                        000003  LST==   3                       ;LISTING DEVICE NUMBER\r
+\r
+                                ;       COMMAND STRING ACCUMULATORS\r
+\r
+                        000001  ACDEV== 1                       ;DEVICE\r
+                        000002  ACFILE==2                       ;FILE\r
+                        000003  ACEXT== 3                       ;EXTENSION\r
+                        000004  ACPPN== 4                       ;PPN\r
+                        000004  ACDEL== 4                       ;DELIMITER\r
+                        000005  ACPNTR==5                       ;BYTE POINTER\r
+\r
+                        000006  TIO==   6\r
+\r
+                        001000  TIORW== 1000\r
+                        002000  TIOLE== 2000\r
+                        020000  TIOCLD==20000\r
+\r
+                        000004  DIRBIT==4               ;DIRECTORY DEVICE\r
+                        000010  TTYBIT==10              ;TTY\r
+                        000020  MTABIT==20              ;MTA\r
+                        000100  DTABIT==100             ;DTA\r
+                        002000  DISBIT==2000            ;DISPLAY\r
+                        020000  CONBIT==20000           ;CONTROLING TTY\r
+                        040000  LPTBIT==40000           ;LPT\r
+                        200000  DSKBIT==200000          ;DSK\r
+\r
+                                ;GETSTS ERROR BITS\r
+\r
+                        400000  IOIMPM==400000          ;IMPROPER MODE (WRITE LOCK)\r
+                        200000  IODERR==200000          ;DEVICE DATA ERROR\r
+                        100000  IODTER==100000          ;CHECKSUM OR PARITY ERROR\r
+                        040000  IOBKTL== 40000          ;BLOCK TOO LARGE\r
+                        740000  ERRBIT==IOIMPM!IODERR!IODTER!IOBKTL\r
+\r
+                                SYN     .TEMP,PPN\r
+\r\fMACRO V.10                     PAGE 118\r
+        I/O ROUTINES\r
+\r
+                                SUBTTL  I/O ROUTINES\r
+        006370'                 BEG:\r
+        006370' 625600  100000  IFN CCLSW,<TLZA IO,ARPGSW       ;DON'T ALLOW RAPID PROGRAM GENERATION\r
+        006371' 661600  100000          TLO     IO,ARPGSW       ;ALLOW RAPID PROGRAM GENERATION>\r
+        006372' 550540  005016*         HRRZ    MRP,JOBREL      ;GET LOWSEG SIZE\r
+        006373' 202540  013433'         MOVEM   MRP,MACSIZ      ;SAVE CORE SIZE\r
+                                                                ;DECODE VERSION NUMBER\r
+        006374' 201740  013434'         MOVEI   PP,JOBFFI       ;TEMP PUSH DOWN STACK\r
+        006375' 261740  014100'         PUSH    PP,[0]          ;MARK BOTTOM OF STACK\r
+        006376' 135000  014267'         LDB     0,[POINT 3,JOBVER,2]    ;GET USER BITS\r
+        006377' 322000  006404'         JUMPE   0,GETE          ;NOT SET IF ZERO\r
+        006400' 271000  000060          ADDI    0,"0"           ;FORM NUMBER\r
+        006401' 261740  000000          PUSH    PP,0            ;STACK IT\r
+        006402' 201000  000055          MOVEI   0,"-"           ;SEPARATE BY HYPHEN\r
+        006403' 261740  000000          PUSH    PP,0            ;STACK IT ALSO\r
+        006404' 550000  000137  GETE:   HRRZ    0,JOBVER        ;GET EDIT NUMBER\r
+        006405' 322000  006416'         JUMPE   0,GETU          ;SKIP ALL THIS IF ZERO\r
+        006406' 201040  000051          MOVEI   1,")"           ;ENCLOSE IN PARENS.\r
+        006407' 261740  000001          PUSH    PP,1\r
+        006410' 231000  000010  GETED:  IDIVI   0,8             ;GET OCTAL DIGITS\r
+        006411' 271040  000060          ADDI    1,"0"           ;MAKE ASCII\r
+        006412' 261740  000001          PUSH    PP,1            ;STACK IT\r
+        006413' 326000  006410'         JUMPN   0,GETED         ;LOOP TIL DONE\r
+        006414' 201000  000050          MOVEI   0,"("           ;OTHER PAREN.\r
+        006415' 261740  000000          PUSH    PP,0\r
+        006416' 135000  014270' GETU:   LDB     0,[POINT 6,JOBVER,17]   ;UPDATE NUMBER\r
+        006417' 322000  006424'         JUMPE   0,GETV          ;SKIP IF ZERO\r
+        006420' 231000  000010          IDIVI   0,8             ;MIGHT BE TWO DIGITS\r
+        006421' 271040  000100          ADDI    1,"@"           ;FORM ALPHA\r
+        006422' 261740  000001          PUSH    PP,1\r
+        006423' 326000  006417'         JUMPN   0,GETU+1        ;LOOP IF NOT DONE\r
+        006424' 135000  014271' GETV:   LDB     0,[POINT 9,JOBVER,11]   ;GET VERSION NUMBER\r
+        006425' 231000  000010          IDIVI   0,8             ;GET DIGIT\r
+        006426' 271040  000060          ADDI    1,"0"           ;TO ASCII\r
+        006427' 261740  000001          PUSH    PP,1            ;STACK\r
+        006430' 326000  006425'         JUMPN   0,GETV+1        ;LOOP\r
+        006431' 200040  014272'         MOVE    1,[POINT 7,VBUF+1,13]   ;POINTER TO DEPOSIT IN VBUF\r
+        006432' 262740  000000          POP     PP,0            ;GET CHARACTER\r
+        006433' 136000  000001          IDPB    0,1             ;DEPOSIT IT\r
+        006434' 326000  006432'         JUMPN   0,.-2           ;KEEP GOING IF NOT ZERO\r
+\r\fMACRO V.10                     PAGE 119\r
+        I/O ROUTINES\r
+\r
+                                IFN CCLSW,<\r
+        006435' 625600  001000          TLZA    IO,CRPGSW       ;SET TO INIT NEW COMMAND FILE\r
+        006436' 607600  001000  M:      TLNN    IO,CRPGSW       ;CURRENTLY DOING RPG?>\r
+                                IFE CCLSW,<M:>\r
+        006437' 047000  000000          RESET                   ;INITIALIZE PROGRAM\r
+        006440' 402000  012550'         SETZM   BINDEV          ;CLEAR INCASE NOT USED NEXT TIME\r
+        006441' 402000  012553'         SETZM   LSTDEV          ;SAME REASON\r
+        006442' 402000  012564'         SETZM   INDEV           ;INCASE OF ERROR\r
+        006443' 550540  013433'         HRRZ    MRP,MACSIZ      ;GET INITIAL SIZE\r
+        006444' 047540  000011          CORE    MRP,            ;BACK TO ORIGINAL SIZ4\r
+        006445' 255000  000000          JFCL                    ;SHOULD NEVER FAIL\r
+        006446' 403540  012600'         SETZB   MRP,PASS1I\r
+        006447' 200000  014273'         MOVE    [XWD PASS1I,PASS1I+1]\r
+        006450' 251000  013415'         BLT     PASS2X-1        ;ZERO THE PASS1 AND PASS2 VARIABLES\r
+        006451' 201740  013434'         MOVEI   PP,JOBFFI       ;SET TEMP PUSH-DOWN POINTER\r
+                                ;       MOVE    CS,[POINT 7,DBUF,6]     ;INITIALIZE FOR DATE\r
+                                ;       MSTIME  2,              ;GET TIME FROM MONITOR\r
+                                ;       PUSHJ   PP,TIMOUT       ;TIME FORMAT OUTPUT\r
+                                ;       DATE    1,              ;GET DATE\r
+                                ;       IBP     CS              ;PASS OVER PRESET SPACE\r
+                                ;       PUSHJ   PP,DATOUT       ;DATE FORMAT OUTPUT\r
+        006452' 205640  402000          MOVSI   FR,P1!CREFSW\r
+        006453' 603600  001000  IFN CCLSW,<TLNE IO,CRPGSW       ;RPG IN PROGRESS?\r
+        006454' 254000  006540'         JRST    GOSET           ;YES, GO READ NEXT COMMAND\r
+        006455' 603600  100000          TLNE    IO,ARPGSW       ;NO, RPG ALLOWED?\r
+        006456' 254000  006501'         JRST    RPGSET          ;YES, GO TRY\r
+        006457' 071200  000000  CTLSET: RELEASE CTL2,           ;IN CASE OF LOOKUP FAILURE>\r
+                                IFE CCLSW,<CTLSET:>\r
+        006460' 205600  004000          MOVSI   IO,IOPALL       ;ZERO FLAGS\r
+        006461' 041000  000001          INIT    CTL,AL          ;INITIALIZE USER CONSOLE\r
+        006462' 646471  000000          SIXBIT  /TTY/\r
+        006463' 013430' 013425'         XWD     CTOBUF,CTIBUF\r
+        006464' 047000  000012          EXIT                    ;NO TTY, NO ASSEMBLY\r
+        006465' 205340  646471          MOVSI   C,(SIXBIT /TTY/)\r
+        006466' 047340  000004          DEVCHR  C,              ;GET CHARACTERISTICS\r
+        006467' 607340  000010          TLNN    C,10            ;IS IT REALLY A TTY\r
+        006470' 047000  000012          EXIT                    ;NO\r
+        006471' 064000  000001          INBUF   CTL,1           ;INITIALIZE SINGLE CONTROL\r
+        006472' 065000  000001          OUTBUF  CTL,1           ;BUFFERS\r
+        006473' 260740  007765'         PUSHJ   PP,CRLF         ;OUTPUT CARRIAGE RETURN - LINE FEED\r
+        006474' 201340  000052          MOVEI   C,"*"\r
+        006475' 136340  013431'         IDPB    C,CTOBUF+1\r
+        006476' 067000  000000          OUTPUT  CTL,\r
+        006477' 066000  000000          INPUT   CTL,\r
+\r\fMACRO V.10                     PAGE 120\r
+        I/O ROUTINES\r
+\r
+        006500' 254000  006620' IFN CCLSW,<JRST BINSET          ;BEGIN WITH BINARY FILE\r
+\r
+        006501'                 RPGSET:\r
+        006501' 041200  000001          INIT    CTL2,AL         ;LOOK FOR DISK\r
+        006502' 446353  000000          SIXBIT  /DSK/           ;...\r
+        006503' 000000  013422'         XWD     0,CTLBLK        ;...\r
+        006504' 254000  006457'         JRST    CTLSET          ;DSK NOT THERE\r
+\r
+        006505' 515140  554143          HRLZI   3,(SIXBIT /MAC/)        ;###MAC\r
+        006506' 201000  000003          MOVEI   3                       ;COUNT\r
+        006507' 047040  000030          PJOB    AC1,                    ;RETURNS JOB NO. TO AC1\r
+        006510' 231040  000012  RPGLUP: IDIVI   AC1,12                  ;CONVERT\r
+        006511' 271100  000020          ADDI    AC2,"0"-40              ;SIXBITIZE IT\r
+        006512' 246100  777772          LSHC    AC2,-6                  ;\r
+        006513' 367000  006510'         SOJG    0,RPGLUP                ;3 TIMES\r
+        006514' 202140  012601'         MOVEM   3,CTLBUF                ;###MAC\r
+        006515' 515000  645560          HRLZI   (SIXBIT /TMP/)          ;\r
+        006516' 202000  012602'         MOVEM   CTLBUF+1                ;TMP\r
+        006517' 402000  012604'         SETZM   CTLBUF+3                ;PROG-PRO\r
+        006520' 076200  012601'         LOOKUP  CTL2,CTLBUF             ;COMMAND FILE\r
+        006521' 254000  006457'         JRST    CTLSET                  ;NOT THERE\r
+        006522' 546000  013420'         HLRM    EXTMP                   ;SAVE THE EXTENSION\r
+\r
+        006523' 064200  000001  RPGS2:  INBUF   CTL2,1          ;SINGLE BUFFERED\r
+        006524' 041000  000001  RPGS2A: INIT    CTL,AL          ;TTY FOR CONSOLE MESSAGES\r
+        006525' 646471  000000          SIXBIT  /TTY/           ;...\r
+        006526' 013430' 000000          XWD     CTOBUF,0        ;...\r
+        006527' 047000  000012          EXIT                    ;NO TTY, NO ASSEMBLY\r
+        006530' 065000  000001          OUTBUF  CTL,1           ;SINGLE BUFFERED\r
+        006531' 200000  000000*         MOVE    JOBFF           ;REMEMBER WHERE BINARY BUFFERS BEGIN\r
+        006532' 202000  013421'         MOVEM   SAVFF           ;...\r
+        006533' 550000  006372*         HRRZ    JOBREL          ;TOP OF CORE\r
+        006534' 313000  013433'         CAMLE   MACSIZ          ;SEE IF IT HAS GROWN\r
+        006535' 202000  013433'         MOVEM   MACSIZ          ;PREVENTS ADDRESS CHECK ON EXIT\r
+        006536' 603600  001000          TLNE IO,CRPGSW  ;ARE WE ALREADY IN RPG MODE?\r
+        006537' 254000  006436'         JRST M  ;MUST HAVE COME FROM @ COMMAND, RESET\r
+\r
+\r\fMACRO V.10                     PAGE 121\r
+        I/O ROUTINES\r
+\r
+        006540' 205600  005000  GOSET:  MOVSI   IO,IOPALL!CRPGSW        ;SET INITIAL FLAGS\r
+        006541' 201400  000310          MOVEI   CS,CTLSIZ       ;MAXIMUM CHARS IN A LINE\r
+        006542' 200040  013424'         MOVE    AC1,CTLBLK+2    ;NUMBER OF CHARACTERS\r
+        006543' 202040  013427'         MOVEM   AC1,CTIBUF+2    ;SAVE FOR PASS 2\r
+        006544' 200040  014274'         MOVE    AC1,[POINT 7,CTLBUF]    ;WHERE TO STASH CHARS\r
+        006545' 202040  013426'         MOVEM   AC1,CTIBUF+1    ;...\r
+        006546' 377000  013424' GOSET1: SOSG    CTLBLK+2        ;ANY MORE CHARS?\r
+                                        PUSHJ   PP,[IN CTL2,            ;READ ANOTHER BUFFERFUL\r
+                                                   POPJ PP,             ;EVERYTHING OK, RETURN\r
+                                                   STATO CTL2,20000     ;EOF?\r
+                                                   JRST [HRROI RC,[SIXBIT /ERROR READING COMMAND FILE@/]\r
+                                                        JRST ERRFIN]            ;GO COMPLAIN\r
+                                                   PUSHJ PP,DELETE      ;CMD FILE\r
+        006547' 260740  014304'                    EXIT]                ;EOF AND FINISHED\r
+        006550' 134340  013423'         ILDB    C,CTLBLK+1      ;GET NEXT CHAR\r
+        006551' 200460  013423'         MOVE    RC,@CTLBLK+1    ;CHECK FOR SEQUENCE NUMBERS\r
+        006552' 602440  000001          TRNE    RC,1            ;...\r
+                                        JRST    [AOS    CTLBLK+1        ;SKIP OVER ANOTHER 5 CHARS\r
+                                                MOVNI   RC,5            ;...\r
+                                                ADDM    RC,CTLBLK+2     ;...\r
+        006553' 254000  014312'                 JRST    GOSET1  ]       ;GO READ ANOTHER CHAR\r
+        006554' 322340  006546'         JUMPE   C,GOSET1        ;IGNORE NULLS\r
+        006555' 136340  013426'         IDPB    C,CTIBUF+1      ;STASH AWAY\r
+        006556' 350000  013427'         AOS     CTIBUF+2        ;INCREMENT CHAR. COUNT\r
+        006557' 302340  000012          CAIE    C,12            ;LINE FEED OR\r
+        006560' 306340  000175          CAIN    C,175           ;ALTMODE?\r
+        006561' 254000  006570'         JRST    GOSET2          ;YES, FINISHED WITH COMMAND\r
+        006562' 302340  000176          CAIE    C,176\r
+        006563' 306340  000033          CAIN    C,33\r
+        006564' 254000  006570'         JRST    GOSET2          ;ALTMODE.\r
+        006565' 367400  006546'         SOJG    CS,GOSET1       ;GO READ ANOTHER\r
+        006566' 561440  014316'         HRROI   RC,[SIXBIT /COMMAND LINE TOO LONG@/]\r
+        006567' 254000  007714'         JRST    ERRFIN          ;GO COMPLAIN\r
+        006570' 201340  000012  GOSET2: MOVEI   C,12            ;MAKE SURE THERE'S A LF\r
+        006571' 136340  013426'         IDPB    C,CTIBUF+1      ;...\r
+        006572' 202040  013426'         MOVEM   AC1,CTIBUF+1    ;SET POINTER TO BEGINNING\r
+        006573' 350000  013427'         AOS     CTIBUF+2        ;ADD I TO COUNT\r
+        006574' 200000  013421'         MOVE    SAVFF           ;RESET JOBFF FOR NEW BINARY\r
+        006575' 202000  006531*         MOVEM   JOBFF           ;...\r
+        006576' 254000  006620'         JRST BINSET\r
+\r\fMACRO V.10                     PAGE 122\r
+        I/O ROUTINES\r
+\r
+\r
+        006577' 260740  000066' RPGS1:  PUSHJ   PP,DELETE       ;DELETE COMMAND FILE\r
+        006600' 202040  012561'         MOVEM   ACDEV,RPGDEV    ;GET SET TO INIT\r
+        006601' 050200  012560'         OPEN    CTL2,RPGINI     ;DO IT\r
+        006602' 254000  007700'         JRST    EINIT           ;ERROR\r
+        006603' 202100  012673'         MOVEM   ACFILE,INDIR    ;USE INPUT BLOCK\r
+        006604' 202200  012676'         MOVEM   ACPPN,INDIR+3   ;SET PPN \r
+        006605' 202140  012674'         MOVEM   ACEXT,INDIR+1\r
+        006606' 076200  012673'         LOOKUP  CTL2,INDIR\r
+                                        JRST    [JUMPN  ACEXT,RPGLOS    ;GIVE UP ,EXPLICIT EXTENSION\r
+                                        MOVSI   ACEXT,(SIXBIT /CCL/)    ;IF BLANK TRY CCL\r
+        006607' 254000  014322'                 JRST    .-2     ]\r
+        006610' 546140  013420'         HLRM    ACEXT,EXTMP     ;SAVE THE EXTENSION\r
+        006611' 554000  000062*         HLRZ    JOBSA           ;RESET JOBFF TO ORIGINAL\r
+        006612' 202000  006575*         MOVEM   JOBFF\r
+        006613' 661600  001000          TLO     IO,CRPGSW       ;TURN ON SWITCH SO WE RESET WORLD\r
+        006614' 254000  006523'         JRST    RPGS2           ;AND GO\r
+        006615' 071200  000000  RPGLOS: RELEAS  CTL2,0\r
+        006616' 621600  001000          TLZ     IO,CRPGSW       ;STOPS IO TO UNASGD CHAN\r
+        006617' 254000  007707'         JRST    ERRCF           ;NO FILE FOUND\r
+                                >\r
+\r\fMACRO V.10                     PAGE 123\r
+        I/O ROUTINES\r
+\r
+        006620' 260740  007215' BINSET: PUSHJ   PP,NAME1        ;GET FIRST NAME\r
+        006621' 306340  000041  IFN CCLSW,<CAIN C,"!"           ;WAS THIS AN IMPERATIVE?\r
+        006622' 254000  000017'         JRST    NUNSET          ;GET THEE TO A NUNNERY\r
+        006623' 306340  000100          CAIN C,"@"      ;CHEK FOR A NEW RPG FILE\r
+        006624' 254000  006577'         JRST RPGS1>\r
+        006625' 607640  002000          TLNN    FR,CREFSW       ;CROSS REF REQUESTED?\r
+        006626' 254000  006666'         JRST    LSTSE1          ;YES, SKIP BINARY\r
+        006627' 306340  000054          CAIN    C,","           ;COMMA?\r
+        006630' 322040  006665'         JUMPE   ACDEV,LSTSET    ;YES, SKIP BINARY IF NO DEVICE SPECIFIED\r
+        006631' 306340  000137          CAIN    C,"_"           ;LEFT ARROW?\r
+        006632' 322040  006666'         JUMPE   ACDEV,LSTSE1    ;YES, SKIP BINARY IF NO DEVICE SPECIFIED\r
+        006633' 322040  006436'         JUMPE   ACDEV,M         ;IGNORE IF JUST <CR-LF>\r
+        006634' 661640  001000          TLO     FR,PNCHSW       ;OK, SET SWITCH\r
+        006635' 202040  012550'         MOVEM   ACDEV,BINDEV    ;STORE DEVICE NAME\r
+        006636' 202100  012667'         MOVEM   ACFILE,BINDIR   ;STORE FILE NAME IN DIRECTORY\r
+        006637' 326140  006641'         JUMPN   ACEXT,.+2       ;EXTENSION SPECIFIED?\r
+        006640' 205140  624554          MOVSI   ACEXT,(SIXBIT /REL/)    ;NO, ASSUME RELOCATABLE BINARY\r
+        006641' 202140  012670'         MOVEM   ACEXT,BINDIR+1  ;STORE IN DIRECTORY\r
+        006642' 202200  012672'         MOVEM   ACPPN,BINDIR+3  ;SET PPN\r
+        006643' 050040  012547'         OPEN    BIN,BININI      ;INITIALIZE BINARY\r
+        006644' 254000  007700'         JRST    EINIT           ;ERROR\r
+        006645' 623300  002000          TLZE TIO,TIOLE          ;SKIP TO EOT\r
+        006646' 072040  000010          MTAPE BIN,10\r
+        006647' 623300  001000          TLZE    TIO,TIORW       ;REWIND REQUESTED?\r
+        006650' 072040  000001          MTAPE   BIN,1           ;YES\r
+        006651' 325400  006657'         JUMPGE  CS,BINSE2       ;BRANCH IF NO BACK-SPACE\r
+        006652' 072040  000017          MTAPE   BIN,17          ;BACK-SPACE A FILE\r
+        006653' 341400  006652'         AOJL    CS,.-1          ;TEST FOR END\r
+        006654' 072040  000000          WAIT    BIN,\r
+        006655' 061040  004000          STATO   BIN,1B24        ;LOAD POINT?\r
+        006656' 072040  000016          MTAPE   BIN,16          ;NO, GO FORWARD ONE\r
+        006657' 367400  006656' BINSE2: SOJG    CS,.-1          ;TEST FORWARD SPACING\r
+\r
+        006660' 603300  020000          TLNE    TIO,TIOCLD      ;DIRECTORY CLEAR REQUESTED?\r
+        006661' 047040  000013          UTPCLR  BIN,            ;YES, CLEAR IT\r
+        006662' 065040  000002          OUTBUF  BIN,2           ;SET UP TWO RING BUFFER\r
+        006663' 306340  000137          CAIN    C,"_"\r
+        006664' 254000  006740'         JRST    GETSET          ;NO LISTING\r
+\r\fMACRO V.10                     PAGE 124\r
+        I/O ROUTINES\r
+\r
+        006665' 260740  007215' LSTSET: PUSHJ   PP,NAME1        ;GET NEXT DEVICE\r
+        006666' 302340  000137  LSTSE1: CAIE    C,"_"\r
+        006667' 254000  007321'         JRST    ERRCM\r
+        006670' 603640  002000          TLNE    FR,CREFSW       ;CROSS-REF REQUESTED?\r
+        006671' 254000  006700'         JRST    LSTSE2          ;NO, BRANCH\r
+        006672' 326040  006674'         JUMPN   ACDEV,.+2       ;YES, WAS DEVICE SPECIFIED?\r
+        006673' 205040  446353          MOVSI   ACDEV,(SIXBIT /DSK/)    ;NO, ASSUME DSK\r
+        006674' 326100  006676'         JUMPN   ACFILE,.+2\r
+        006675' 200100  014325'         MOVE    ACFILE,[SIXBIT /CREF/]\r
+        006676' 326140  006700'         JUMPN   ACEXT,.+2\r
+        006677' 205140  436246  MOVSI   ACEXT,(SIXBIT /CRF/)   \r
+        006700' 322040  006740' LSTSE2: JUMPE   ACDEV,GETSET    ;FORGET LISTING IF NO DEVICE SPECIFIED\r
+        006701' 200000  000001          MOVE    AC0,ACDEV\r
+        006702' 047000  000004          DEVCHR  AC0,            ;GET CHARACTERISTICS\r
+        006703' 603000  042010          TLNE    AC0,LPTBIT!DISBIT!TTYBIT\r
+        006704' 603640  002000          TLNE    FR,CREFSW       ; WAS CROSS-REF REQUESTED?\r
+        006705' 354000  013042'         AOSA    OUTSW+0*TTYSW   ;NO, ASSUME TTY\r
+        006706' 254000  007321'         JRST    ERRCM           ;YES, ERROR - CREF DEV MUST NOT BE LPT, DIS, OR TTY\r
+        006707' 603000  020000          TLNE    AC0,CONBIT      ;CONTROLING TELETYPE LISTING?\r
+        006710' 254000  006740'         JRST    GETSET          ;YES, BUFFER ALREADY SET\r
+        006711' 202040  012553'         MOVEM   ACDEV,LSTDEV    ;STORE DEVICE NAME\r
+        006712' 350000  013042'         AOS     OUTSW+0*LPTSW   ;SET FOR LPT\r
+        006713' 202100  012663'         MOVEM   ACFILE,LSTDIR   ;STORE FILE NAME\r
+        006714' 326140  006716'         JUMPN   ACEXT,.+2\r
+        006715' 205140  546364          MOVSI   ACEXT,(SIXBIT /LST/)\r
+        006716' 202140  012664'         MOVEM   ACEXT,LSTDIR+1\r
+        006717' 202200  012666'         MOVEM   ACPPN,LSTDIR+3  ;SET PPN\r
+        006720' 050140  012552'         OPEN    LST,LSTINI      ;INITIALIZE LISTING OUTPUT\r
+        006721' 254000  007700'         JRST    EINIT           ;ERROR\r
+        006722' 623300  002000          TLZE TIO,TIOLE\r
+        006723' 072140  000010          MTAPE LST,10\r
+        006724' 623300  001000          TLZE    TIO,TIORW       ;REWIND REQUESTED?\r
+        006725' 072140  000001          MTAPE   LST,1           ;YES\r
+        006726' 325400  006734'         JUMPGE  CS,LSTSE3\r
+        006727' 072140  000017          MTAPE   LST,17\r
+        006730' 341400  006727'         AOJL    CS,.-1\r
+        006731' 072140  000000          WAIT    LST,\r
+        006732' 061140  004000          STATO   LST,1B24\r
+        006733' 072140  000016          MTAPE   LST,16\r
+        006734' 367400  006733' LSTSE3: SOJG    CS,.-1\r
+        006735' 603300  020000          TLNE    TIO,TIOCLD      ;DIRECTORY CLEAR REQUESTED?\r
+        006736' 047140  000013          UTPCLR  LST,            ;YES, CLEAR IT\r
+        006737' 065140  000002          OUTBUF  LST,2           ;SET UP A TWO RING BUFFER\r
+\r\fMACRO V.10                     PAGE 125\r
+        I/O ROUTINES\r
+\r
+        006740' 201140  010037' GETSET: MOVEI   3,PDPERR\r
+        006741' 542140  000000*         HRRM    3,JOBAPR        ;SET TRAP LOCATION\r
+        006742' 201140  200000          MOVEI   3,1B19          ;SET FOR PUSH-DOWN OVERFLOW\r
+        006743' 047140  000016          APRENB  3,\r
+        006744' 370140  013043'         SOS     3,PDP           ;GET PDP REQUEST MINUS 1\r
+        006745' 221140  000062          IMULI   3,.PDP          ;COMPUTE SIZE (50*<NUMBER OF /P'S +1>)\r
+        006746' 514700  000003          HRLZ    MP,3\r
+        006747' 540700  006612*         HRR     MP,JOBFF        ;SET BASIC POINTER\r
+        006750' 200740  000016          MOVE    PP,MP\r
+        006751' 274740  000003          SUB     PP,3\r
+        006752' 202740  012600'         MOVEM   PP,RP           ;SET RP\r
+        006753' 274740  000003          SUB     PP,3\r
+        006754' 240140  000001          ASH     3,1             ;DOUBLE SIZE OF BASIC POINTER\r
+        006755' 504740  000003          HRL     PP,3\r
+        006756' 276740  000003          SUBM    PP,3            ;COMPUTE TOP LOCATION\r
+                                IFN UNIVR,<SKIPN        UNITOP          ;IF ANY UNIVERSALS HAVE BEEN SEEN\r
+                                        JRST    GETSE0          ;NO\r
+                                        HRRZS   3               ;GET TOP OF BUFFERS AND STACKS\r
+                                        CAMLE   3,UNISIZ        ;HOPE ITS NOT BIGGER THAN UNIVERSAL ONE\r
+                                        JRST    UNIERR          ;IT WAS, YOU LOSE\r
+                                        SKIPA   3,UNITOP        ;DON'T LOSE THEM\r
+                                GETSE0: HRRZM   3,UNISIZ        ;STORE UNTIL A UNIVERSAL IS SEEN>\r
+        006757' 552140  013000'         HRRZM   3,LADR          ;SET START OF MACRO TREE\r
+        006760' 552140  012727'         HRRZM   3,FREE\r
+\r
+        006761' 550000  006533* GETSE1: HRRZ    JOBREL\r
+        006762' 275000  000001          SUBI    1\r
+        006763' 202000  013103'         MOVEM   SYMTOP          ;SET TOP OF SYMBOL TABLE\r
+        006764' 275000  000004          SUBI    LENGTH          ;SET POINTER FOR INITIAL SYMBOLS\r
+        006765' 313000  013000'         CAMLE   LADR            ;HAVE WE ROOM?\r
+        006766' 254000  006774'         JRST    GETSE2          ;YES\r
+\r
+        006767' 550100  006761*         HRRZ    2,JOBREL        ;NO, TRY FOR MORE CORE\r
+        006770' 271100  002000          ADDI    2,2000\r
+        006771' 047100  000011          CORE    2,\r
+        006772' 254000  010035'         JRST    XCEED2  ;NO MORE, INFORM USER\r
+        006773' 254000  006761'         JRST    GETSE1          ;TRY AGAIN\r
+\r
+        006774' 202000  013102' GETSE2: MOVEM   SYMBOL          ;SET START OF SYMBOL TABLE\r
+        006775' 505000  011713'         HRLI    SYMNUM\r
+        006776' 251020  013103'         BLT     @SYMTOP         ;STORE SYMBOLS\r
+        006777' 260740  012455'         PUSHJ   PP,SRCHI        ;INITIALIZE TABLE\r
+        007000' 200000  014326'         MOVE    [XWD CTIBUF+1,CTLSAV]   ;SAVE CONTROL INPUT BUFFER\r
+        007001' 251000  013267'         BLT     CTLS1           ;FOR RESCAN ON PASS 2\r
+        007002' 205000  446353  IFN FTDISK,<MOVSI (SIXBIT /DSK/)        ;SET INPUT TO TAKE DSK AS DEV\r
+        007003' 202000  013264'         MOVEM ACDEVX>\r
+        007004' 260740  002657'         PUSHJ PP,COUTI  ;INIT OUTPUT JUST IN CASE\r
+        007005' 260740  007027'         PUSHJ   PP,INSET        ;GET FIRST INPUT FILE\r
+\r
+        007006' 603600  001000  IFN CCLSW,<TLNE IO,CRPGSW       ;BUT ONLY IF DOING RPG\r
+        007007' 051140  014327'         TTCALL  3,[ASCIZ /MACRO: /]     ;PUBLISH COMPILER NAME>\r
+        007010' 200400  012673'         MOVE CS,INDIR   ;SET UP NAME OF FIRST FILE\r
+        007011' 202400  012537'         MOVEM CS,LSTFIL ;AS LAST PRINTED\r
+\r\fMACRO V.10                     PAGE 125-1\r
+        I/O ROUTINES\r
+\r
+        007012' 402000  013416'         SETZM   LSTPGN\r
+        007013' 254000  000077'         JRST    ASSEMB          ;START ASSEMBLY\r
+\r\fMACRO V.10                     PAGE 126\r
+        I/O ROUTINES\r
+\r
+        007014' 070040  000000  FINIS:  CLOSE   BIN,            ;DUMP BUFFER\r
+        007015' 603640  001000          TLNE    FR,PNCHSW       ;PUNCH REQUESTED?\r
+        007016' 260740  010133'         PUSHJ   PP,TSTBIN       ;YES, TEST FOR ERRORS\r
+        007017' 071040  000000          RELEAS  BIN,\r
+        007020' 070140  000000          CLOSE   LST,\r
+        007021' 373000  013042'         SOSLE   OUTSW+0*LPTSW   ;LPT TYPE OUTPUT?\r
+        007022' 260740  010142'         PUSHJ   PP,TSTLST       ;YES, TEST FOR ERRORS\r
+        007023' 071140  000000          RELEAS  LST,\r
+        007024' 071100  000000          RELEAS  CHAR,\r
+        007025' 067000  000000          OUTPUT CTL,0    ;FLUSH TTY OUTPUT\r
+                                IFN UNIVR,<SKIPE        UNIVSN          ;SKIP IF NOT ASSEMBLING UNIVERSAL\r
+                                        PUSHJ   PP,UNISYM       ;STORE SYMBOLS ETC. FIRST>\r
+        007026' 254000  006436'         JRST    M               ;RETURN FOR NEXT ASSEMBLY\r
+\r\fMACRO V.10                     PAGE 127\r
+        I/O ROUTINES\r
+\r
+        007027' 201000  013434' INSET:  MOVEI   JOBFFI          ;POINTER TO INPUT BUFFER\r
+        007030' 542000  006747*         HRRM    JOBFF           ;INFORM SYSTEM OF BUFFER AREA\r
+        007031' 260740  007216'         PUSHJ   PP,NAME2        ;GET NEXT COMMAND NAME\r
+        007032' 322040  007633'         JUMPE   ACDEV,ERRNE     ;ERROR  IF NONE LEFT\r
+        007033' 202040  012564'         MOVEM   ACDEV,INDEV     ;STORE DEVICE\r
+        007034' 202100  012673'         MOVEM   ACFILE,INDIR    ;STORE FILE IN DIRECTORY\r
+        007035' 202200  012676'         MOVEM   ACPPN,INDIR+3   ;STORE PPN BEFORE WE LOSE IT\r
+        007036' 050100  012563'         OPEN    CHAR,INDEVI\r
+        007037' 254000  007700'         JRST    EINIT           ;ERROR\r
+        007040' 047040  000004          DEVCHR  ACDEV,          ;TEST CHARACTERISTICS\r
+        007041' 607040  000020          TLNN    ACDEV,MTABIT    ;MAG TAPE?\r
+        007042' 254000  007065'         JRST    INSET3          ;NO\r
+        007043' 627640  000004          TLZN    FR,MTAPSW       ;FIRST MAG TAPE IN PASS 2?\r
+        007044' 254000  007047'         JRST    INSET1          ;NO\r
+        007045' 607300  001000          TLNN    TIO,TIORW       ;YES, REWIND REQUESTED?\r
+        007046' 274400  013044'         SUB     CS,RECCNT       ;NO, PREPARE TO BACK-SPACE TAPE\r
+        007047' 350000  013044' INSET1: AOS     RECCNT          ;INCREMENT FILE COUNTER\r
+        007050' 272400  013044'         ADDM    CS,RECCNT       ;UPDATE  COUNT\r
+        007051' 623300  002000          TLZE TIO,TIOLE\r
+        007052' 072100  000010          MTAPE CHAR,10\r
+        007053' 623300  001000          TLZE    TIO,TIORW       ;REWIND?\r
+        007054' 072100  000001          MTAPE   CHAR,1          ;YES\r
+        007055' 325400  007064'         JUMPGE  CS,INSET2\r
+        007056' 072100  000017          MTAPE   CHAR,17\r
+        007057' 072100  000017          MTAPE   CHAR,17\r
+        007060' 341400  007057'         AOJL    CS,.-1\r
+        007061' 072100  000000          WAIT    CHAR,\r
+        007062' 061100  004000          STATO   CHAR,1B24\r
+        007063' 072100  000016          MTAPE   CHAR,16\r
+        007064' 365400  007063' INSET2: SOJGE   CS,.-1\r
+\r
+        007065' 064100  000001  INSET3: INBUF CHAR,1\r
+        007066' 201240  013434'         MOVEI ACPNTR,JOBFFI\r
+        007067' 250240  007030*         EXCH ACPNTR,JOBFF\r
+        007070' 275240  013434'         SUBI ACPNTR,JOBFFI\r
+        007071' 201200  000407          MOVEI ACDEL,NUMBUF*203+1\r
+        007072' 230200  000005          IDIV ACDEL,ACPNTR\r
+        007073' 064104  000000          INBUF CHAR,(ACDEL)\r
+        007074' 326140  007077'         JUMPN   ACEXT,INSET4    ;TAKE USER'S EXTENSION IF NON-BLANK\r
+        007075' 205140  554143          MOVSI   ACEXT,(SIXBIT /MAC/)    ;BLANK, TRY .MAC FIRST\r
+        007076' 260740  007143'         PUSHJ   PP,INSETI\r
+        007077' 260740  007143' INSET4: PUSHJ   PP,INSETI\r
+        007100' 322140  007707'         JUMPE   ACEXT,ERRCF     ;ERROR IF ZERO\r
+        007101' 603040  000010          TLNE    ACDEV,TTYBIT    ;TELETYPE?\r
+        007102' 060100  000001          SETSTS  CHAR,AL         ;YES, CHANGE TO ASCII LINE\r
+\r\fMACRO V.10                     PAGE 128\r
+        I/O ROUTINES\r
+\r
+                                                                ;DO ALL ENTERS HERE FOR LEVEL D\r
+        007103' 332000  013261'         SKIPE   ENTERS          ;HAVE ENTERS BEEN DONE ALREADY?\r
+        007104' 254000  007136'         JRST    ENTRDN          ;YES, DON'T DO TWICE\r
+        007105' 336140  012553'         SKIPN   ACEXT,LSTDEV    ;IS THERE A LIST DEVICE?\r
+        007106' 254000  007127'         JRST    LSTSE5          ;NO SO DON'T DO ENTER\r
+        007107' 336100  012663'         SKIPN   ACFILE,LSTDIR   ;GET FILE NAME INCASE OF ERROR\r
+                                        JRST    [DEVCHR ACEXT,  \r
+                                                TLNE    ACEXT,DIRBIT    ;DOES IT HAVE A DIRECTORY?\r
+                                                JRST    LSTSE4          ;YES, GIVE UP BEFORE HARM IS DONE\r
+                                                SKIPE   ACFILE,INDIR    ;USE INPUT FILE NAME\r
+                                                MOVEM   ACFILE,LSTDIR   ;TOO BAD IF ZERO ALSO\r
+        007110' 254000  014331'                 JRST    LSTSE4]\r
+        007111' 510140  012664'         HLLZ    ACEXT,LSTDIR+1  ;EXT ALSO\r
+        007112' 200200  012666'         MOVE    ACPPN,LSTDIR+3  ;SAVE PPN\r
+        007113' 076140  012663'         LOOKUP  LST,LSTDIR      ;PREVIOUS ONE STILL THERE\r
+        007114' 254000  007125'         JRST    LSTSE4          ;NO\r
+        007115' 402000  012663'         SETZM   LSTDIR          ;YES,CLEAR NAME\r
+        007116' 202200  012666'         MOVEM   ACPPN,LSTDIR+3  ;RESET PPN\r
+        007117' 055140  012663'         RENAME  LST,LSTDIR\r
+        007120' 070140  000000          CLOSE   LST,            ;IGNORE FAILURE\r
+        007121' 202100  012663'         MOVEM   ACFILE,LSTDIR   ;RESTORE NAME\r
+        007122' 513000  012664'         HLLZS   LSTDIR+1        ;BH 11/19/74 FOR DATE75.  CLEAR RH.\r
+        007123' 402000  012665'         SETZM   LSTDIR+2        ;CLEAR PROTECTION AND DATE\r
+        007124' 202200  012666'         MOVEM   ACPPN,LSTDIR+3  ;SET PPN AGAIN\r
+        007125'                 LSTSE4: \r
+        007125' 077140  012663'         ENTER   LST,LSTDIR      ;SET UP DIRECTORY\r
+        007126' 254000  007702'         JRST    ERRCL           ;ERROR\r
+        007127' 336140  012550' LSTSE5: SKIPN   ACEXT,BINDEV    ;A BINARY DEVICE THEN ?\r
+        007130' 254000  007136'         JRST    ENTRDN          ;NO\r
+        007131' 336100  012667'         SKIPN   ACFILE,BINDIR   ;INCASE OF ERROR\r
+                                        JRST    [DEVCHR ACEXT,  \r
+                                                TLNE    ACEXT,DIRBIT    ;DOES IT HAVE A DIRECTORY?\r
+                                                JRST    .+1             ;YES, GIVE UP BEFORE HARM IS DONE\r
+                                                SKIPE   ACFILE,INDIR    ;USE INPUT FILE NAME\r
+                                                MOVEM   ACFILE,BINDIR   ;TOO BAD IF ZERO ALSO\r
+        007132' 254000  014337'                 JRST    .+1]\r
+        007133' 513140  012670'         HLLZS   ACEXT,BINDIR+1  ;BH 11/19/74 DATE75.  WAS HLLZ.\r
+        007134' 077040  012667'         ENTER   BIN,BINDIR      ;ENTER FILE NAME\r
+        007135' 254000  007704'         JRST    ERRCB           ;ERROR\r
+\r
+        007136' 476000  013261' ENTRDN: SETOM   ENTERS          ;MAKE SURE ONLY DONE ONCE\r
+                                REPEAT 0,<\r
+                                        MOVE    CS,[POINT 7,DEVBUF]\r
+                                        PUSH    PP,1            ;SAVE THE ACCS\r
+                                        PUSH    PP,2\r
+                                        PUSH    PP,3\r
+                                        SKIPN   2,INDIR         ;GET INPUT NAME\r
+                                        JRST    FINDEV          ;FINISHED WITH DEVICE\r
+                                        SETZ    1,              ;CLEAR FOR RECEIVING\r
+                                        LSHC    1,6             ;SHIFT ONE CHAR. IN\r
+                                        ADDI    1,40            ;FORM ASCII\r
+                                        IDPB    1,CS            ;STORE CHAR.\r
+                                        JUMPN   2,.-4           ;MORE TO DO?\r
+\r\fMACRO V.10                     PAGE 128-1\r
+        I/O ROUTINES\r
+\r
+                                        MOVEI   1,"     "       ;SEPARATE BY TAB\r
+                                        IDPB    1,CS\r
+                                        HLLZ    2,INDIR+1       ;GET EXT\r
+                                        JUMPE   2,FINEXT        ;NO EXT\r
+                                        SETZ    1,\r
+                                        LSHC    1,6             ;SAME LOOP AS ABOVE\r
+                                        ADDI    1,40\r
+                                        IDPB    1,CS\r
+                                        JUMPN   2,.-4\r
+                                FINEXT: MOVEI   1,"     "\r
+                                        IDPB    1,CS            ;SEPARATE BY TAB\r
+                                        LDB     1,[POINT 12,INDIR+2,35] ;GET DATE\r
+                                        LDB     2,[POINT 3,INDIR+1,20]  ;BH 11/19/74 DATE75.\r
+                                        DPB     2,[POINT 3,1,23]        ;BH 11/19/74 DATE75.\r
+                                        JUMPE   1,FINDEV        ;NO DATE?\r
+                                        PUSHJ   PP,DATOUT       ;STORE IT\r
+                                        LDB     2,[POINT 11,INDIR+2,23] ;GET CREATION TIME\r
+                                        JUMPE   2,FINDEV        ;NO TIME (DECTAPE)\r
+                                        MOVEI   1," "           ;SEPARATE BY SPACE\r
+                                        IDPB    1,CS\r
+                                        PUSHJ   PP,TIMOU1       ;STORE TIME\r
+                                FINDEV: SETZ    1,\r
+                                        MOVEI   2,"     "       ;FINAL TAB\r
+                                        IDPB    2,CS\r
+                                        IDPB    1,CS            ;TERMINATE FOR NOW\r
+                                        POP     PP,3            ;RESTORE ACCS\r
+                                        POP     PP,2\r
+                                        POP     PP,1\r
+                                >\r
+        007137' 336000  013414'         SKIPN   PAGENO          ;IF FIRST TIME THRU\r
+        007140' 254000  010417'         JRST    OUTFF           ;START NEW PAGE\r
+        007141' 402000  013414'         SETZM PAGENO            ;ON NEW FILE, RESET PAGES\r
+        007142' 254000  010420'         JRST    OUTFF2          ;DON'T START NEW PAGE UNLESS FF\r
+\r
+        007143' 512140  012674' INSETI: HLLZM   ACEXT,INDIR+1   ;STORE EXTENSION\r
+        007144' 200200  012676'         MOVE    ACPPN,INDIR+3   ;SAVE PPN\r
+        007145' 076100  012673'         LOOKUP  CHAR,INDIR\r
+        007146' 334140  012674'         SKIPA   ACEXT,INDIR+1   ;GET ERROR CODE\r
+        007147' 254000  003357'         JRST    CPOPJ1          ;SKIP-RETURN IF FOUND\r
+        007150' 602140  777777          TRNE    ACEXT,-1        ;ERROR CODE OF 0 IS FILE NOT FOUND\r
+        007151' 254000  007707'         JRST    ERRCF           ;FILE THERE BUT NOT READABLE\r
+        007152' 400140  000000          SETZ    ACEXT,          ;CLEAR EXT AND TRY AGAIN\r
+        007153' 202200  012676'         MOVEM   ACPPN,INDIR+3   ;RESTORE PPN\r
+        007154' 263740  000000          POPJ    PP,\r
+\r\fMACRO V.10                     PAGE 129\r
+        I/O ROUTINES\r
+\r
+        007155' 204000  014326' REC2:   MOVS    [XWD CTIBUF+1,CTLSAV]   ;RESCAN CONTROL (FROM PASS1 END STMNT)\r
+        007156' 251000  013427'         BLT     CTIBUF+2        ;INPUT BUFFER\r
+        007157' 201000  000137          MOVEI   "_"\r
+        007160' 506000  012677'         HRLM    ACDELX          ;FUDGE PREVIOUS DELIMITER\r
+                                IFN RENTSW,<MOVE HHIGH  ;GET HI-SEG BREAK\r
+                                        MOVEM   HIGH1   ;SAVE THE ONE WE GOT ON PASS1 (FOR HISEG)>\r
+        007161' 402000  013262'         SETZM   PASS2I\r
+        007162' 200000  014200'         MOVE    [XWD PASS2I,PASS2I+1]\r
+        007163' 251000  013415'         BLT     PASS2X-1                ;ZERO PASS2 VARIABLES\r
+        007164' 661640  000024          TLO     FR,MTAPSW!LOADSW        ;SET FLAGS \r
+\r
+        007165' 200000  012564' GOTEND: MOVE    INDEV           ;GET LAST DEVICE\r
+        007166' 047000  000004          DEVCHR                  ;GET ITS CHARACTERISTICS\r
+        007167' 603000  000004          TLNE    4               ;TEST FOR DIRECTORY (DSK OR DTA)\r
+        007170' 254000  007176'         JRST    EOT             ;YES, SO DON'T WASTE TIME\r
+        007171' 254000  007174'         JRST    .+3             ;NO, INPUT BUFFER BY BUFFER\r
+        007172' 056100  000000          IN      CHAR,\r
+        007173' 254000  007172'         JRST    .-1             ;NO ERRORS\r
+        007174' 061100  020000          STATO   CHAR,1B22       ;TEST FOR EOF\r
+        007175' 254000  007172'         JRST    .-3             ;IGNORE ERRORS\r
+\r
+        007176' 260740  007211' EOT:    PUSHJ   PP,SAVEXS       ;SAVE REGISTERS\r
+        007177' 260740  007027'         PUSHJ   PP,INSET        ;GET THE NEXT INPUT DEVICE\r
+        007200' 561440  014345'         HRROI   RC,[SIXBIT /END OF PASS 1@/]    ;ASSUME END OF PASS\r
+        007201' 627640  000020          TLZN    FR,LOADSW       ;ZERO ONLY ON END OF PASS 1\r
+        007202' 561440  014350'         HRROI   RC,[SIXBIT /LOAD THE NEXT FILE@/]       ;NOT END OF PASS\r
+        007203' 607040  000024          TLNN    ACDEV,(1B13!1B15)       ;WAS ALL THAT WORK NECESSARY?\r
+        007204' 260740  007757'         PUSHJ   PP,TYPMSG       ;YES\r
+\r
+        007205' 205440  013045' RSTRXS: MOVSI   RC,SAVBLK       ;SET POINTER\r
+        007206' 251440  000010          BLT     RC,RC-1         ;RESTORE REGISTERS\r
+        007207' 200440  013056'         MOVE    RC,SAVERC       ;RESTORE RC\r
+        007210' 263740  000000          POPJ    PP,             ;EXIT\r
+\r
+        007211' 202440  013056' SAVEXS: MOVEM   RC,SAVERC       ;SAVE RC\r
+        007212' 201440  013045'         MOVEI   RC,SAVBLK       ;SET POINTER\r
+        007213' 251440  013055'         BLT     RC,SAVBLK+RC-1  ;BLT ALL REGISTERS BELOW RC\r
+        007214' 263740  000000          POPJ    PP,             ;EXIT\r
+\r\fMACRO V.10                     PAGE 130\r
+        I/O ROUTINES\r
+\r
+        007215' 402000  013264' NAME1:  SETZM   ACDEVX          ;ENTRY FOR DESTINATION\r
+        007216' 403040  012675' NAME2:  SETZB   ACDEV,INDIR+2   ;ENTRY FOR SOURCE\r
+        007217' 201100  000000          MOVEI   ACFILE,0        ;CLEAR FILE\r
+        007220' 554200  012677'         HLRZ    ACDEL,ACDELX    ;GET PREVIOUS DELIMITER\r
+        007221' 403300  000010          SETZB   TIO,CS\r
+        007222' 403140  012676'         SETZB   ACEXT,INDIR+3   ;RESET EXTENSION AND PROGRAM-NUMBER PAIR\r
+        007223' 402000  013402'         SETZM   PPN             ;CLEAR PPN\r
+        007224' 205240  440600  NAME3:  MOVSI   ACPNTR,(POINT 6,AC0)    ;SET POINTER\r
+        007225' 634000  000000          TDZA    AC0,AC0         ;CLEAR SYMBOL\r
+\r
+        007226' 260740  007346' SLASH:  PUSHJ   PP,SW0\r
+        007227' 260740  007614' GETIOC: PUSHJ   PP,TTYIN        ;GET INPUT CHARACTER\r
+        007230' 306340  000057          CAIN    C,"/"\r
+        007231' 254000  007226'         JRST    SLASH\r
+        007232' 306340  000050          CAIN    C,"("\r
+        007233' 254000  007342'         JRST    SWITCH\r
+        007234' 306340  000072          CAIN    C,":"\r
+        007235' 254000  007267'         JRST    DEVICE\r
+        007236' 306340  000056          CAIN    C,"."\r
+        007237' 254000  007272'         JRST    NAME\r
+        007240' 302340  000041  IFN CCLSW,<CAIE C,"!"           ;IS CHAR AN IMPERATIVE?\r
+        007241' 306340  000100          CAIN    C,"@"\r
+        007242' 254000  007276'         JRST    TERM            ;YES, GO DO IT>\r
+        007243' 302340  000033          CAIE    C,33            ;CHECK FOR THREE FLAVORS OF ALT-MODE\r
+        007244' 306340  000176          CAIN    C,176           ;...\r
+        007245' 254000  007276'         JRST    TERM            ;...\r
+        007246' 307340  000015          CAIG    C,CR            ;LESS THAN CR?\r
+        007247' 305340  000012          CAIGE   C,LF            ;AND GREATER THAN LF?\r
+        007250' 306340  000175          CAIN    C,175           ;OR 3RD ALTMOD\r
+        007251' 254000  007276'         JRST    TERM            ;YES\r
+        007252' 306340  000133  IFN FTDISK,<CAIN C,"["\r
+        007253' 254000  007323'         JRST    PROGNP          ;GET PROGRAMER NUMBER PAIR>\r
+        007254' 306340  000075          CAIN    C,"="           ;EQUALS IS SAME AS LEFT ARROW\r
+        007255' 644340  000142          TRCA    C,142           ;SO MAKE IT A "_" AND SKIP\r
+        007256' 302340  000054          CAIE    C,","\r
+        007257' 306340  000137          CAIN    C,"_"\r
+        007260' 254000  007276'         JRST    TERM\r
+        007261' 305340  000040          CAIGE   C,40            ;VALID AS SIXBIT?\r
+                                        JRST    [CAIN C,"Z"-100 ;NO,IS IT ^Z\r
+                                                EXIT            ;YES,EXIT FOR BATCH\r
+        007262' 254000  014354'                 JRST    GETIOC] ;JUST IGNORE\r
+        007263' 275340  000040          SUBI    C,40            ;CONVERT TO 6-BIT\r
+        007264' 603240  770000          TLNE    ACPNTR,770000   ;HAVE WE STORED SIX BYTES?\r
+        007265' 136340  000005          IDPB    C,ACPNTR        ;NO, STORE IT\r
+        007266' 254000  007227'         JRST    GETIOC          ;GET NEXT CHARACTER\r
+\r
+        007267' 326040  007321' DEVICE: JUMPN   ACDEV,ERRCM     ;ERROR IF ALREADY SET\r
+        007270' 200040  000000          MOVE    ACDEV,AC0       ;DEVICE NAME\r
+        007271' 254000  007274'         JRST    DEVNAM          ;COMMON CODE\r
+\r
+        007272' 326100  007321' NAME:   JUMPN   ACFILE,ERRCM    ;ERROR IF ALREADY SET\r
+        007273' 200100  000000          MOVE    ACFILE,AC0      ;FILE NAME\r
+        007274' 200200  000007  DEVNAM: MOVE    ACDEL,C         ;SET DELIMITER\r
+\r\fMACRO V.10                     PAGE 130-1\r
+        I/O ROUTINES\r
+\r
+        007275' 254000  007224'         JRST    NAME3           ;GET NEXT SYMBOL\r
+\r
+        007276' 322200  007303' TERM:   JUMPE   ACDEL,TERM1     ;IF NO PREVIOUS TERMINATOR, THEN FILENAME\r
+        007277' 306200  000137          CAIN    ACDEL,"_"       ;...\r
+        007300' 254000  007303'         JRST    TERM1           ;...\r
+        007301' 302200  000072          CAIE    ACDEL,":"       ;IF PREVIOUS DELIMITER\r
+        007302' 306200  000054          CAIN    ACDEL,","       ;WAS COLON OR COMMA\r
+        007303' 200100  000000  TERM1:  MOVE    ACFILE,AC0      ;SET FILE\r
+        007304' 306200  000056          CAIN    ACDEL,"."       ;IF PERIOD,\r
+        007305' 510140  000000          HLLZ    ACEXT,AC0       ;SET EXTENSION\r
+        007306' 506340  012677'         HRLM    C,ACDELX        ;SAVE PREVIOUS DELIMITER\r
+        007307' 326040  007311'         JUMPN   ACDEV,.+2       ;IF DEVICE SET USE IT\r
+        007310' 334040  013264'         SKIPA   ACDEV,ACDEVX    ;OTHERWISE USE LAST DEVICE\r
+        007311' 202040  013264'         MOVEM   ACDEV,ACDEVX    ;AND DEVICE\r
+        007312' 200200  013402'         MOVE    ACPPN,PPN       ;PUT PPN IN RIGHT PLACE\r
+        007313' 306340  000041  IFN FTDISK,<CAIN C,"!"          ;IMPERATIVE?\r
+        007314' 263740  000000          POPJ    PP,             ;YES, DON'T ASSUME DEV\r
+        007315' 322100  003360'         JUMPE   ACFILE,CPOPJ    ;IF THERE IS A FILE,\r
+        007316' 326040  007320'         JUMPN   ACDEV,.+2       ;BUT NO DEVICE\r
+        007317' 205040  446353          MOVSI   ACDEV,(SIXBIT /DSK/)    ;THEN ASSUME DISK>\r
+        007320' 263740  000000          POPJ    PP,             ;EXIT\r
+\r\fMACRO V.10                     PAGE 131\r
+        I/O ROUTINES\r
+\r
+        007321' 561440  014357' ERRCM:  HRROI   RC,[SIXBIT /COMMAND ERROR@/]\r
+        007322' 254000  007714'         JRST    ERRFIN\r
+\r
+        007323'                 IFN FTDISK,<PROGNP:\r
+        007323' 516440  013402' PROGN1: HRLZM   RC,PPN          ;COMMA, STORE LEFT HALF\r
+        007324' 201440  000000  PROGN2: MOVEI   RC,0            ;CLEAR AC\r
+        007325' 260740  007614' PROGN3: PUSHJ   PP,TTYIN\r
+        007326' 306340  000054          CAIN    C,","\r
+        007327' 254000  007323'         JRST    PROGN1          ;STORE LEFT HALF\r
+        007330' 542440  013402'         HRRM    RC,PPN          ;ASSUME TERMINAL\r
+        007331' 306340  000135          CAIN    C,"]"\r
+        007332' 254000  007227'         JRST    GETIOC          ;YES, RETURN TO MAIN SCAN\r
+        007333' 301340  000060          CAIL    C,"0"           ;CHECK FOR VALID NUMBERS\r
+        007334' 303340  000067          CAILE   C,"7"\r
+        007335' 254000  007321'         JRST    ERRCM           ;NOT VALID\r
+        007336' 242440  000003          LSH     RC,3            ;SHIFT PREVIOUS RESULT\r
+        007337' 271447  777720          ADDI    RC,-"0"(C)      ;ADD IN NEW NUMBER\r
+        007340' 254000  007325'         JRST    PROGN3          ;GET NEXT CHARACTER>\r
+\r\fMACRO V.10                     PAGE 132\r
+        I/O ROUTINES\r
+\r
+        007341' 260740  007347' SWITC0: PUSHJ   PP,SW1          ;PROCESS CHARACTER\r
+        007342' 260740  007614' SWITCH: PUSHJ   PP,TTYIN        ;GET NEXT CHARACTER\r
+        007343' 302340  000051          CAIE    C,")"           ;END OF STRING?\r
+        007344' 254000  007341'         JRST    SWITC0          ;NO\r
+        007345' 254000  007227'         JRST    GETIOC          ;YES\r
+\r
+        007346' 260740  007614' SW0:    PUSHJ   PP,TTYIN\r
+        007347' 201347  777677  SW1:    MOVEI   C,-"A"(C)       ;CONVERT FROM ASCII TO NUMERIC\r
+        007350' 303340  000031          CAILE   C,"Z"-"A"       ;WITHIN BOUNDS? (IS IT ALPHA?)\r
+        007351' 254000  007321'         JRST    ERRCM           ;NO, ERROR\r
+        007352' 200440  014362'         MOVE    RC,[POINT 4,BYTAB]\r
+        007353' 133000  000011          IBP     RC\r
+        007354' 365340  007353'         SOJGE   C,.-1           ;MOVE TO PROPER BYTE\r
+        007355' 135340  000011          LDB     C,RC            ;PICK UP BYTE\r
+        007356' 322340  007321'         JUMPE   C,ERRCM         ;TEST FOR VALID SWITCH\r
+        007357' 307340  000003          CAIG    C,SWTABT-SWTAB  ;LEGAL ON SOURCE?\r
+        007360' 321740  007321'         JUMPL   PP,ERRCM        ;NO, TEST FOR SOURCE\r
+        007361' 135440  014363'         LDB     RC,[POINT 4,SWTAB-1(C),12]\r
+        007362' 306440  000014          CAIN    RC,IO\r
+        007363' 336000  013266'         SKIPN   CTLSAV          ;IF PASS2 OR IO SWITCH,\r
+        007364' 256007  007570'         XCT     SWTAB-1(C)      ;EXECUTE INSTRUCTION\r
+        007365' 263740  000000          POPJ    PP,             ;EXIT\r
+        007366' 621600  000001          TLZ     IO,IOSALL       ;TAKE CARE OF /X\r
+        007367' 263740  000000          POPJ    PP,\r
+\r
+                                DEFINE HELP (TEXT)<\r
+                                        XLIST\r
+                                        ASCIZ ?TEXT?\r
+                                        LIST>\r
+\r
+                                HLPMES: HELP <\r
+                                Switches are :-\r
+                                */A advance one file\r
+                                */B backspace one file\r
+                                /C produce a cref listing\r
+                                */E list macro expansions (LALL)\r
+                                */F list in new format (.MFRMT)\r
+                                /G list in old format (.HWFRMT)\r
+                                /H type this text\r
+                                */L reinstate listing (LIST)\r
+                                /M suppress ascii in macro and repeat expansion (SALL)\r
+                                */N suppress error printout on tty\r
+                                /O set MLOFF pseudo-op\r
+                                /P increase size of the pushdown stack\r
+                                /Q suppress Q errors on the listing\r
+                                */S suppress listing (XLIST)\r
+                                */T rewind device\r
+                                */X suppress all macro expansions (XALL)\r
+                                */Z zero the directory\r
+                                Switches A,B,C,T,W,X, and Z must immediately follow\r
+                                the device or file to which they refer.\r
+\r\fMACRO V.10                     PAGE 133\r
+        I/O ROUTINES\r
+\r
+                                        DEFINE  SETSW   (LETTER,INSTRUCTION) <  INSTRUCTION\r
+                                J=      <"LETTER"-"A">-^D9*<I=<"LETTER"-"A">/^D9>\r
+                                        SETCOD  \I,J>\r
+\r
+                                        DEFINE  SETCOD          (I,J)\r
+                                        <BYTAB'I=BYTAB'I!<.-SWTAB>B<4*J+3>>\r
+\r
+                        000000  BYTAB0= 0                       ;INITIALIZE TABLE\r
+                        000000  BYTAB1= 0\r
+                        000000  BYTAB2= 0\r
+\r
+        007571'                 SWTAB:\r
+        007571' 661300  020000          SETSW   Z,<TLO  TIO,TIOCLD      >\r
+        007572' 621640  002000          SETSW   C,<TLZ  FR,CREFSW       >\r
+        007573' 370000  013043'         SETSW   P,<SOS  PDP             >\r
+        007574'                 SWTABT:                         ;THE ABOVE SW'S ARE LEGAL ON OUTPUT ONLY\r
+        007574' 271400  000001          SETSW   A,<ADDI CS,1            >\r
+        007575' 275400  000001          SETSW   B,<SUBI CS,1            >\r
+        007576' 621600  004001          SETSW   E,<TLZ  IO,IOPALL!IOSALL        >\r
+        007577' 000000  007370'         SETSW   H,<OUTSTR       HLPMES>\r
+        007600' 621600  200000          SETSW   L,<TLZ  IO,IOMSTR       >\r
+        007601' 661600  004001          SETSW   M,<TLO  IO,IOPALL!IOSALL        >\r
+        007602' 523000  013256'         SETSW   N,<HLLOS   TYPERR       >\r
+        007603' 256000  004155'         SETSW   O,<XCT  OFFML           >\r
+        007604' 661640  000010          SETSW   Q,<TLO  FR,ERRQSW       >\r
+        007605' 661600  200000          SETSW   S,<TLO  IO,IOMSTR       >\r
+        007606' 661300  002000          SETSW   T,<TLO  TIO,TIOLE       >\r
+        007607' 661300  001000          SETSW   W,<TLO  TIO,TIORW       >\r
+        007610' 665600  004000          SETSW   X,<TLOA IO,IOPALL       >\r
+\r
+        007611'                 BYTAB:                          ;BYTAB CONTAINS AN INDEX TO SWTAB\r
+                                                                ;IT CONSIST OF 9 4BIT BYTES/WORD\r
+                                                                ;OR ONE BYTE FOR EACH LETTER\r
+\r
+        007611' 212201  400160          +BYTAB0                 ;A-I    BYTE = 1 THROUGH 17 = INDEX\r
+        007612' 001046  531700          +BYTAB1                 ;J-R    BYTE = 0 = COMMAND ERROR\r
+        007613' 674003  600020          +BYTAB2                 ;S-Z\r
+\r
+                                IF2,<PURGE I,J,BYTAB0,BYTAB1,BYTAB2>\r
+\r\fMACRO V.10                     PAGE 134\r
+        I/O ROUTINES\r
+\r
+        007614' 375000  013427' TTYIN:  SOSGE   CTIBUF+2        ;ENUF CHAR.?\r
+        007615' 254000  007631'         JRST    TTYERR          ;NO\r
+        007616' 134340  013426'         ILDB    C,CTIBUF+1      ;GET CHARACTER\r
+        007617' 302340  000040          CAIE    C," "           ;SKIP BLANKS\r
+        007620' 306340  000011          CAIN    C,HT            ;AND TABS\r
+        007621' 254000  007614'         JRST    TTYIN\r
+        007622' 306340  000015          CAIN    C,15            ;CR?\r
+        007623' 402000  013427'         SETZM   CTIBUF+2        ;YES,IGNORE REST OF LINE\r
+        007624' 307340  000172          CAIG C,"Z"+40           ;CHECK FOR LOWER CASE\r
+        007625' 305340  000141          CAIGE C,"A"+40\r
+        007626' 263740  000000          POPJ    PP,             ;NO,EXIT\r
+        007627' 275340  000040          SUBI C,40\r
+        007630' 263740  000000          POPJ    PP,             ;YES, EXIT\r
+\r
+        007631' 336000  012564' TTYERR: SKIPN   INDEV           ;INPUT DEVICE SEEN?\r
+        007632' 254000  007321'         JRST    ERRCM           ;NO, SO MISSING "_"\r
+        007633' 561440  014364' ERRNE:  HRROI   RC,[SIXBIT /?NO END STATEMENT ENCOUNTERED ON INPUT FILE@/]\r
+        007634' 000000  000006  ERRNE0: SKPINC  V       ;SEE IF WE CAN INPUT A CHAR.\r
+        007635' 255000  000000            JFCL          ;BUT ONLY TO DEFEAT ^O\r
+        007636' 260740  007757'         PUSHJ PP,TYPMSG ;OUTPUT IT\r
+        007637' 332000  013321'         SKIPE LITLVL    ;SEE IF IN LITERAL\r
+        007640' 336000  013303'         SKIPN   LITPG   ;PAGE 0 MEANS NOT IN A LITERAL REALY\r
+        007641' 254000  007644'         JRST ERRNE1     ;NO, TRY OTHERS\r
+        007642' 200300  014376'         MOVE V,[XWD [SIXBIT /IN LITERAL@/],LITPG]\r
+        007643' 260740  010041'         PUSHJ PP,PRNUM  ;GO PRINT INFORMATION\r
+        007644' 201300  000000  ERRNE1: MOVEI V,0       ;CHECK FOR OTHER PLACES\r
+        007645' 332000  013273'         SKIPE INDEF\r
+        007646' 200300  014401'         MOVE V,[XWD [SIXBIT /IN DEFINE@/],DEFPG]\r
+        007647' 332000  013274'         SKIPE INTXT\r
+        007650' 200300  014404'         MOVE V,[XWD [SIXBIT /IN TEXT@/],TXTPG]\r
+        007651' 332000  013272'         SKIPE INREP\r
+        007652' 200300  014412'         MOVE V,[XWD [SIXBIT /IN CONDITIONAL OR REPEAT@/],REPPG]\r
+        007653' 332000  013275'         SKIPE INCND\r
+        007654' 200300  014416'         MOVE V,[XWD [SIXBIT /IN CONDITIONAL@/],CNDPG]\r
+        007655' 335000  013405'         SKIPGE MACENL\r
+        007656' 200300  014422' ERRNE2: MOVE V,[XWD [SIXBIT /IN MACRO CALL@/],CALPG]\r
+        007657' 326300  007663'         JUMPN V,ERRNE3\r
+        007660' 336000  013321'         SKIPN   LITLVL          ;HAD ONE PAGE NUMBER ALREADY\r
+        007661' 334300  014423'         SKIPA   V,[XWD [SIXBIT /@/],PAGENO]     ;BETTER THAN NOTHING\r
+        007662' 254000  007664'         JRST    .+2\r
+        007663' 260740  010041' ERRNE3: PUSHJ PP,PRNUM\r
+        007664' 561440  014353'         HRROI RC,[SIXBIT /@/]   ;WILL GET A RETURN\r
+        007665' 254000  007714'         JRST ERRFIN\r
+\r
+        007666' 004562  625762  ERRMS1: SIXBIT / ERRORS DETECTED@/\r
+        007667' 630044  456445\r
+        007670' 436445  444000\r
+        007671' 372100  456262  ERRMS2: SIXBIT /?1 ERROR DETECTED@/\r
+        007672' 576200  444564\r
+        007673' 454364  454440\r
+        007674' 565700  456262  ERRMS3: SIXBIT /NO ERRORS DETECTED@/\r
+        007675' 576263  004445\r
+        007676' 644543  644544\r
+\r\fMACRO V.10                     PAGE 134-1\r
+        I/O ROUTINES\r
+\r
+        007677' 400000  000000\r
+        007700' 200440  014427' EINIT:  MOVE    RC,[XWD ACDEV,[SIXBIT /NOT AVAILABLE@/]]\r
+        007701' 254000  007714'         JRST    ERRFIN\r
+\r\fMACRO V.10                     PAGE 135\r
+        I/O ROUTINES\r
+\r
+        007702' 550440  012664' ERRCL:  HRRZ    RC,LSTDIR+1     ;GET LST DEV ERROR CODE\r
+        007703' 254000  007705'         JRST    .+2             ;GET ERROR MESSAGE\r
+        007704' 550440  012670' ERRCB:  HRRZ    RC,BINDIR+1     ;GET BIN DEV ERROR CODE\r
+        007705' 326440  007711'         JUMPN   RC,ERRTYP\r
+        007706' 364440  007711'         SOJA    RC,ERRTYP       ;SPECIAL CASE IF ERROR CODE 0\r
+\r
+        007707' 550440  012674' ERRCF:  HRRZ    RC,INDIR+1      ;GET INPUT DEV ERROR CODE\r
+        007710' 510140  012674'         HLLZ    ACEXT,INDIR+1   ;SET UP EXT\r
+\r
+        007711' 301440  000027  ERRTYP: CAIL    RC,TABLND-TABLE ;IS ERROR CODE LEGAL?\r
+        007712' 334440  007756'         SKIPA   RC,TABLND       ;NO, GIVE CATCH ALL MESSAGE\r
+        007713' 200451  007727'         MOVE    RC,TABLE(RC)    ;YES, PICK UP MESSAGE\r
+\r
+        007714' 000000  000007  ERRFIN: SKPINC  C               ;SEE IN WE CAN INPUT A CHAR.\r
+        007715' 255000  000000            JFCL                  ;BUT ONLY TO DEFEAT ^O\r
+        007716' 260740  007765'         PUSHJ   PP,CRLF\r
+        007717' 201340  000077          MOVEI   C,"?"\r
+        007720' 260740  007770'         PUSHJ   PP,TYO\r
+        007721' 260740  007760'         PUSHJ   PP,TYPMS1\r
+        007722' 070140  000000          CLOSE   LST,            ;GIVE USER A PARTIAL LISTING\r
+        007723' 070040  000040          CLOSE   BIN,40          ;BUT NEVER A BUM REL FILE\r
+        007724' 350000  003150* IFN CCLSW,<AOS  JOBERR          ;RECORD ERROR SO EXECUTION DELETED>\r
+        007725' 254000  006436'         JRST    M\r
+\r
+        007726' 014430' 000002          [SIXBIT /(0) ILLEGAL FILE NAME@/],,ACFILE\r
+        007727' 014434' 000002  TABLE:  [SIXBIT /(0) FILE WAS NOT FOUND@/],,ACFILE\r
+        007730' 014440' 000002          [SIXBIT /(1) NO DIRECTORY FOR PROJECT-PROGRAMMER NUMBER@/],,ACFILE\r
+        007731' 014450' 000002          [SIXBIT /(2) PROTECTION FAILURE@/],,ACFILE\r
+        007732' 014454' 000002          [SIXBIT /(3) FILE WAS BEING MODIFIED@/],,ACFILE\r
+        007733' 014461' 000002          [SIXBIT /(4) RENAME FILE NAME ALREADY EXISTS@/],,ACFILE\r
+        007734' 014467' 000002          [SIXBIT /(5) ILLEGAL SEQUENCE OF UUOS@/],,ACFILE\r
+        007735' 014474' 000002          [SIXBIT /(6) BAD UFD OR BAD RIB@/],,ACFILE\r
+        007736' 014500' 000002          [SIXBIT /(7) NOT A SAV FILE@/],,ACFILE\r
+        007737' 014504' 000002          [SIXBIT /(10) NOT ENOUGH CORE@/],,ACFILE\r
+        007740' 014510' 000002          [SIXBIT /(11) DEVICE NOT AVAILABLE@/],,ACFILE\r
+        007741' 014515' 000002          [SIXBIT /(12) NO SUCH DEVICE@/],,ACFILE\r
+        007742' 014521' 000002          [SIXBIT /(13) NOT TWO RELOC REG. CAPABILITY@/],,ACFILE\r
+        007743' 014527' 000002          [SIXBIT /(14) NO ROOM OR QUOTA EXCEEDED@/],,ACFILE\r
+        007744' 014535' 000002          [SIXBIT /(15) WRITE LOCK ERROR@/],,ACFILE\r
+        007745' 014541' 000002          [SIXBIT /(16) NOT ENOUGH MONITOR TABLE SPACE@/],,ACFILE\r
+        007746' 014547' 000002          [SIXBIT /(17) PARTIAL ALLOCATION ONLY@/],,ACFILE\r
+        007747' 014554' 000002          [SIXBIT /(20) BLOCK NOT FREE ON ALLOCATION@/],,ACFILE\r
+        007750' 014562' 000002          [SIXBIT /(21) CAN'T SUPERSEDE (ENTER) AN EXISTING DIRECTORY@/],,ACFILE\r
+        007751' 014573' 000002          [SIXBIT /(22) CAN'T DELETE (RENAME) A NON-EMPTY DIRECTORY@/],,ACFILE\r
+        007752' 014604' 000002          [SIXBIT /(23) SFD NOT FOUND@/],,ACFILE\r
+        007753' 014610' 000002          [SIXBIT /(24) SEARCH LIST EMPTY@/],,ACFILE\r
+        007754' 014614' 000002          [SIXBIT /(25) SFD NESTED TOO DEEPLY@/],,ACFILE\r
+        007755' 014621' 000002          [SIXBIT /(26) NO-CREATE ON FOR SPECIFIED PATH@/],,ACFILE\r
+\r
+        007756' 014630' 000002  TABLND: [SIXBIT /(?) LOOKUP, ENTER, OR RENAME ERROR@/],,ACFILE\r
+\r\fMACRO V.10                     PAGE 136\r
+        I/O ROUTINES\r
+\r
+        007757' 260740  007765' TYPMSG: PUSHJ   PP,CRLF         ;MOVE TO NEXT LINE\r
+        007760' 554400  000011  TYPMS1: HLRZ    CS,RC           ;GET FIRST MESSAGE\r
+        007761' 302400  777777          CAIE    CS,-1           ;SKIP IF MINUS ONE\r
+        007762' 260740  010000'         PUSHJ   PP,TYPM2        ;TYPE MESSAGE\r
+        007763' 550400  000011          HRRZ    CS,RC           ;GET SECOND HALF\r
+        007764' 260740  010000'         PUSHJ   PP,TYPM2\r
+\r
+        007765' 201340  000015  CRLF:   MOVEI   C,CR            ;OUTPUT CARRIAGE RETURN\r
+        007766' 260740  007770'         PUSHJ   PP,TYO\r
+        007767' 201340  000012          MOVEI   C,LF            ;AND LINE FEED\r
+\r
+        007770' 377000  013432' TYO:    SOSG    CTOBUF+2        ;BUFFER FULL?\r
+        007771' 067000  000000          OUTPUT  CTL,0           ;YES, DUMP IT\r
+        007772' 136340  013431'         IDPB    C,CTOBUF+1      ;STORE BYTE\r
+        007773' 307340  000014          CAIG    C,FF            ;FORM FEED?\r
+        007774' 305340  000012          CAIGE   C,LF            ;V TAB OR LINE FEED?\r
+        007775' 263740  000000          POPJ    PP,             ;NO\r
+        007776' 067000  000000          OUTPUT  CTL,0           ;YES\r
+        007777' 263740  000000          POPJ    PP,             ;AND EXIT\r
+\r
+        010000' 205340  400000  TYPM2:  MOVSI   C,(1B0)         ;ANTICIPATE REGISTER WORD\r
+        010001' 306400  000002          CAIN    CS,ACFILE       ;FILE NAME ?\r
+                                        JRST    [JUMPE  ACEXT,.+1       ;YES, TEST FOR EXT\r
+                                                LSH     ACEXT,-6        ;MAKE SPACE FOR "."\r
+                                                IOR     ACEXT,[SIXBIT /.   @/]\r
+        010002' 254000  014637'                 JRST    TYPM2A]\r
+        010003' 307400  000017          CAIG    CS,17           ;IS IT?\r
+        010004' 202350  000001          MOVEM   C,1(CS)\r
+        010005' 505400  440600  TYPM2A: HRLI    CS,(POINT 6,,)  ;FORM BYTE POINTER\r
+\r
+        010006' 134340  000010  TYPM3:  ILDB    C,CS            ;GET A SIXBIT BYTE\r
+        010007' 306340  000040          CAIN    C,40            ;"@"?\r
+        010010' 254000  007770'         JRST    TYO             ;YES, TYPE SPACE AND EXIT\r
+        010011' 271340  000040          ADDI    C,40            ;NO, FORM 7-BIT ASCII\r
+        010012' 260740  007770'         PUSHJ   PP,TYO          ;OUTPUT CHARACTER\r
+        010013' 254000  010006'         JRST    TYPM3\r
+\r
+\r\fMACRO V.10                     PAGE 137\r
+        I/O ROUTINES\r
+\r
+        010014' 271200  002000  XCEEDS: ADDI SX,2000            ;ADJUST SYMBOL POINTER\r
+        010015' 260740  007211' XCEED:  PUSHJ   PP,SAVEXS       ;SAVE THE REGISTERS\r
+        010016' 550040  006767*         HRRZ    1,JOBREL        ;GET CURRENT TOP\r
+        010017' 201001  002000          MOVEI   0,2000(1)\r
+        010020' 047000  000011          CORE    0,              ;REQUEST MORE CORE\r
+        010021' 254000  010035'         JRST    XCEED2          ;ERROR, BOMB OUT\r
+        010022' 550100  010016*         HRRZ    2,JOBREL        ;GET NEW TOP\r
+\r
+        010023' 200001  000000  XCEED1: MOVE    0,0(1)          ;GET ORIGIONAL\r
+        010024' 202002  000000          MOVEM   0,0(2)          ;STORE IN NEW LOCATION\r
+        010025' 275100  000001          SUBI    2,1             ;DECREMENT UPPER\r
+        010026' 313040  013102'         CAMLE   1,SYMBOL        ;HAVE WE ARRIVED?\r
+        010027' 364040  010023'         SOJA    1,XCEED1        ;NO, GET ANOTHER\r
+        010030' 201040  002000          MOVEI   1,2000\r
+        010031' 272040  013102'         ADDM    1,SYMBOL\r
+        010032' 272040  013103'         ADDM    1,SYMTOP\r
+        010033' 260740  012455'         PUSHJ   PP,SRCHI        ;RE-INITIALIZE SYMBOL TABLE\r
+        010034' 254000  007205'         JRST    RSTRXS          ;RESTORE REGISTERS AND EXIT\r
+\r
+        010035' 561440  014643' XCEED2: HRROI   RC,[SIXBIT /INSUFFICIENT CORE@/]\r
+        010036' 254000  007634'         JRST    ERRNE0\r
+        010037' 561440  014646' PDPERR: HRROI   RC,[SIXBIT .PDP OVERFLOW, TRY /P@.]\r
+        010040' 254000  007634'         JRST    ERRNE0\r
+\r
+        010041' 554400  000006  PRNUM:  HLRZ CS,V       ;GET MESSAGE\r
+        010042' 260740  010000'         PUSHJ PP,TYPM2\r
+        010043' 201400  014652'         MOVEI   CS,[SIXBIT /ON PAGE@/]\r
+        010044' 260740  010000'         PUSHJ   PP,TYPM2\r
+        010045' 200006  000000          MOVE AC0,(V)    ;GET PAGE\r
+        010046' 260740  010063'         PUSHJ PP,DP1    ;PRINT NUMBER\r
+        010047' 201340  000040          MOVEI C,40\r
+        010050' 260740  007770'         PUSHJ PP,TYO\r
+        010051' 336046  000001          SKIPN AC1,1(V)  ;GET SEQ NUM IF THERE\r
+        010052' 263740  000000          POPJ PP,        ;NO, RETURN\r
+        010053' 202040  013337'         MOVEM AC1,OUTSQ\r
+        010054' 201400  014654'         MOVEI   CS,[SIXBIT /LINE@/]\r
+        010055' 260740  010000'         PUSHJ   PP,TYPM2\r
+        010056' 201000  013337'         MOVEI AC0,OUTSQ ;PRINT IT\r
+        010057' 067000  000000          OUTPUT CTL,0    ;TO MAKE THINGS PRINT IN RIGHT ORDER\r
+        010060' 047000  000003          DDTOUT AC0,\r
+        010061' 201340  000040          MOVEI C,40\r
+        010062' 254000  007770'         JRST TYO        ;AND RETURN\r
+\r
+        010063' 231000  000012  DP1:    IDIVI AC0,^D10\r
+        010064' 506057  000000          HRLM AC1,(PP)\r
+        010065' 322000  010067'         JUMPE   AC0,.+2\r
+        010066' 260740  010063'         PUSHJ PP,DP1\r
+        010067' 554357  000000          HLRZ C,(PP)\r
+        010070' 271340  000060          ADDI C,"0"\r
+        010071' 254000  007770'         JRST TYO\r
+\r\fMACRO V.10                     PAGE 138\r
+        I/O ROUTINES\r
+\r
+        010072' 670640  000000  RIM0:   TDO     FR,AC0          ;SET RIM/RIM10 FLAG\r
+        010073' 603640  001000          TLNE    FR,PNCHSW       ;FORGET IT IF PUNCH RESET\r
+        010074' 060040  000013          SETSTS  BIN,IB          ;SET TO IMAGE BINARY MODE\r
+        010075' 263740  000000          POPJ    PP,\r
+\r
+        010076' 250400  013376' ROUT:   EXCH CS,RIMLOC\r
+        010077' 274740  014655'         SUB PP,[XWD 1,1]        ;CLEAR OUT STACK WFW\r
+        010100' 603640  004000          TLNE FR,R1BSW\r
+        010101' 254000  010207'         JRST ROUT6\r
+        010102' 607640  000100          TLNN    FR,RIM1SW\r
+        010103' 254000  010113'         JRST    ROUT1\r
+        010104' 322400  010113'         JUMPE   CS,ROUT1        ;RIM10 OUTPUT\r
+        010105' 274400  013376'         SUB     CS,RIMLOC\r
+        010106' 322400  010113'         JUMPE   CS,ROUT1\r
+        010107' 327400  003311'         JUMPG   CS,ERRAX\r
+        010110' 201340  000000          MOVEI   C,0\r
+        010111' 260740  010123'         PUSHJ   PP,PTPBIN\r
+        010112' 341400  010111'         AOJL    CS,.-1\r
+        010113' 205340  710440  ROUT1:  MOVSI   C,(DATAI PTR,)  ;RIM OUTPUT\r
+        010114' 540340  013326'         HRR C,LOCO              ;GET ADDRESS\r
+        010115' 603640  000100          TLNE    FR,RIM1SW       ;NO DATAI IF RIM10\r
+        010116' 354000  013376'         AOSA    RIMLOC\r
+        010117' 260740  010123'         PUSHJ   PP,PTPBIN       ;OUTPUT\r
+        010120' 200340  000000          MOVE    C,AC0           ;CODE\r
+        010121' 354000  013326'         AOSA    LOCO            ;INCREMENT CURRENT LOCATION\r
+\r
+        010122' 607640  004500  OUTBIN: TLNN    FR,RIMSW!RIM1SW!R1BSW   ;EXIT IF RIM MODE\r
+        010123' 607640  001000  PTPBIN: TLNN    FR,PNCHSW       ;EXIT IF PUNCH NOT REQUESTED\r
+        010124' 263740  000000          POPJ    PP,\r
+        010125' 377000  012657'         SOSG    BINBUF+2        ;TEST FOR BUFFER FULL\r
+        010126' 260740  010131'         PUSHJ   PP,DMPBIN       ;YES, DUMP IT\r
+        010127' 136340  012656'         IDPB    C,BINBUF+1      ;DEPOSIT BYTE\r
+        010130' 263740  000000          POPJ    PP,             ;EXIT\r
+\r
+\r\fMACRO V.10                     PAGE 139\r
+        I/O ROUTINES\r
+\r
+        010131' 057040  000000  DMPBIN: OUT     BIN,0           ;DUMP THE BUFFER\r
+        010132' 263740  000000          POPJ    PP,             ;NO ERRORS\r
+        010133' 062040  000007  TSTBIN: GETSTS  BIN,C           ;GET STSTUS BITS\r
+        010134' 606340  740000          TRNN    C,ERRBIT        ;ERROR?\r
+        010135' 263740  000000          POPJ    PP,             ;NO, EXIT\r
+        010136' 200000  012550'         MOVE    AC0,BINDEV      ;YES, GET TAG\r
+        010137' 254000  010146'         JRST    ERRLST          ;TYPE MESSAGE AND ABORT\r
+\r
+        010140' 057140  000000  DMPLST: OUT     LST,0           ;OUTPUT BUFFER\r
+        010141' 263740  000000          POPJ    PP,             ;NO ERRORS\r
+        010142' 062140  000007  TSTLST: GETSTS  LST,C           ;ANY ERRORS?\r
+        010143' 606340  740000          TRNN    C,ERRBIT\r
+        010144' 263740  000000          POPJ    PP,             ;NO, EXIT\r
+        010145' 200000  012553'         MOVE    AC0,LSTDEV\r
+        010146' 205440  014656' ERRLST: MOVSI   RC,[SIXBIT /OUTPUT WRITE-LOCK ERROR DEVICE@/]\r
+        010147' 602340  400000          TRNE    C,IOIMPM        ;IMPROPER MODE?\r
+        010150' 254000  007714'         JRST    ERRFIN          ;YES\r
+        010151' 205440  014664'         MOVSI   RC,[SIXBIT /OUTPUT DATA ERROR DEVICE@/]\r
+        010152' 602340  200000          TRNE    C,IODERR        ;DEVICE DATA ERROR?\r
+        010153' 254000  007714'         JRST    ERRFIN          ;YES\r
+        010154' 205440  014671'         MOVSI   RC,[SIXBIT /OUTPUT CHECKSUM OR PARITY ERROR DEVICE@/]\r
+        010155' 602340  100000          TRNE    C,IODTER        ;IS IT\r
+        010156' 254000  007714'         JRST    ERRFIN          ;YES\r
+        010157' 200400  000000          MOVE    CS,AC0          ;GET DEVICE\r
+        010160' 047400  000004          DEVCHR  CS,             ;FIND OUT WHAT IT IS\r
+        010161' 205440  014700'         MOVSI   RC,[SIXBIT /OUTPUT QUOTA EXCEEDED ON DEVICE@/]\r
+        010162' 607400  200000          TLNN    CS,DSKBIT       ;SKIP IF DSK OUTPUT\r
+        010163' 205440  014706'         MOVSI   RC,[SIXBIT /OUTPUT BLOCK TOO LARGE DEVICE@/]\r
+        010164' 254000  007714'         JRST    ERRFIN\r
+\r\fMACRO V.10                     PAGE 140\r
+        I/O ROUTINES\r
+\r
+        \r
+        010165' 460400  013351' R1BDMP: SETCM CS,R1BCNT\r
+        010166' 322400  010203'         JUMPE CS,R1BI\r
+        010167' 517340  000010          HRLZS C,CS\r
+        010170' 540340  013375'         HRR C,R1BLOC\r
+        010171' 541347  777777          HRRI C,-1(C)\r
+        010172' 202340  013352'         MOVEM C,R1BCHK\r
+        010173' 260740  010123'         PUSHJ PP,PTPBIN\r
+        010174' 541400  013353'         HRRI CS,R1BBLK\r
+        010175' 200350  000000  R1BDM1: MOVE C,0(CS)\r
+        010176' 272340  013352'         ADDM C,R1BCHK\r
+        010177' 260740  010123'         PUSHJ PP,PTPBIN\r
+        010200' 253400  010175'         AOBJN CS,R1BDM1\r
+        010201' 200340  013352'         MOVE C,R1BCHK\r
+        010202' 260740  010123'         PUSHJ PP,PTPBIN\r
+        010203' 476000  013351' R1BI:   SETOM R1BCNT\r
+        010204' 261740  013326'         PUSH PP,LOCO\r
+        010205' 262740  013375'         POP PP,R1BLOC\r
+        010206' 263740  000000          POPJ PP,\r
+\r
+        010207' 312400  013376' ROUT6:  CAME CS,RIMLOC\r
+        010210' 260740  010165'         PUSHJ PP,R1BDMP\r
+        010211' 350340  013351'         AOS C,R1BCNT\r
+        010212' 202007  013353'         MOVEM AC0,R1BBLK(C)\r
+        010213' 350000  013326'         AOS LOCO\r
+        010214' 306340  000021          CAIN C,.R1B-1\r
+        010215' 260740  010165'         PUSHJ PP,R1BDMP\r
+        010216' 350000  013376'         AOS RIMLOC\r
+        010217' 263740  000000          POPJ PP,\r
+        \r
+\r
+\r\fMACRO V.10                     PAGE 141\r
+        I/O ROUTINES\r
+\r
+        010220' 260740  007176' READ0:  PUSHJ   PP,EOT          ;END OF TAPE\r
+\r
+        010221' 375000  012662' READ:   SOSGE   IBUF+2          ;BUFFER EMPTY?\r
+        010222' 254000  010263'         JRST    READ3           ;YES\r
+        010223' 134340  012661' READ1:  ILDB    C,IBUF+1        ;PLACE CHARACTER IN C\r
+        010224' 200420  012661'         MOVE CS,@IBUF+1         ;CHECK FOR SEQUENCE NUMBER\r
+        010225' 606400  000001          TRNN CS,1\r
+        010226' 254000  010243'         JRST READ1A\r
+        010227' 306400  000001          CAIN CS,1               ;CHECK FOR SPECIAL\r
+        010230' 200400  014713'         MOVE CS,[<ASCII/     />+1]\r
+        010231' 202400  012544'         MOVEM CS,SEQNO\r
+        010232' 202400  013415'         MOVEM CS,SEQNO2\r
+        010233' 211400  000004          MOVNI CS,4\r
+        010234' 272400  012662'         ADDM CS,IBUF+2          ;ADJUST WORD COUNT\r
+                                REPEAT 4,<      IBP IBUF+1>     ;SKIP SEQ NO\r
+        010235' 133000  012661'\r
+        010236' 133000  012661'\r
+        010237' 133000  012661'\r
+        010240' 133000  012661'\r
+        010241' 260740  010221'         PUSHJ PP,READ   ;AND THE TAB\r
+        010242' 254000  010221'         JRST    READ            ;GET NEXT CHARACTER\r
+\r
+        010243' 322340  010221' READ1A: JUMPE   C,READ          ;IGNORE NULL\r
+        010244' 306340  000032          CAIN    C,32            ;IF IT'S A "^Z"\r
+        010245' 201340  000012          MOVEI   C,LF            ;TREAT IT AS A "LF"\r
+        010246' 302340  000037          CAIE    C,37            ;CONTROL _\r
+        010247' 263740  000000          POPJ    PP,\r
+        010250' 201340  000136          MOVEI   C,"^"           ;MAKE CONTROL-SHIFT _ VISIBLE\r
+        010251' 260740  001414'         PUSHJ   PP,RSW2\r
+        010252' 201340  000137          MOVEI   C,"_"\r
+        010253' 260740  001414'         PUSHJ   PP,RSW2\r
+        010254' 260740  010221' READ2:  PUSHJ   PP,READ         ;YES, TEST FOR LINE FEED\r
+        010255' 260740  001414'         PUSHJ   PP,RSW2         ;LIST IN ANY EVENT\r
+        010256' 307340  000014          CAIG    C,FF            ;IS IT ONE OF\r
+        010257' 305340  000012          CAIGE   C,LF            ;LF, VT, OR FF?\r
+        010260' 254000  010254'         JRST    READ2           ;NO\r
+        010261' 260740  001736'         PUSHJ   PP,OUTIM1       ;YES, DUMP THE LINE\r
+        010262' 254000  010221'         JRST    READ            ;RETURN NEXT CHARACTER\r
+\r
+        010263' 056100  000000  READ3:  IN      CHAR,0          ;GET NEXT BUFFER\r
+        010264' 254000  010221'         JRST    READ            ;NO ERRORS\r
+        010265' 062100  000007          GETSTS  CHAR,C\r
+        010266' 606340  742000          TRNN    C,ERRBIT!2000   ;ERRORS?\r
+        010267' 254000  010220'         JRST    READ0           ;EOF\r
+        010270' 200000  012564'         MOVE    AC0,INDEV\r
+        010271' 205440  014714'         MOVSI   RC,[SIXBIT/ INPUT PHYSICAL END OF TAPE DEVICE@/]\r
+        010272' 602340  002000          TRNE    C,2000\r
+        010273' 254000  007714'         JRST    ERRFIN          ;E-O-T\r
+        010274' 205440  014722'         MOVSI   RC,[SIXBIT /MONITOR DETECTED SOFTWARE INPUT ERROR DEVICE@/]\r
+        010275' 602340  400000          TRNE    C,IOIMPM        ;IMPROPER MODE?\r
+        010276' 254000  007714'         JRST    ERRFIN          ;YES\r
+        010277' 205440  014732'         MOVSI   RC,[SIXBIT /INPUT DATA ERROR DEVICE@/]\r
+        010300' 602340  200000          TRNE    C,IODERR        ;DEVICE DATA ERROR?\r
+\r\fMACRO V.10                     PAGE 141-1\r
+        I/O ROUTINES\r
+\r
+        010301' 254000  007714'         JRST    ERRFIN          ;YES\r
+        010302' 205440  014736'         MOVSI   RC,[SIXBIT /INPUT CHECKSUM OR PARITY ERROR DEVICE@/]\r
+        010303' 606340  100000          TRNN    C,IODTER\r
+        010304' 205440  014745'         MOVSI   RC,[SIXBIT /INPUT BLOCK TOO LARGE DEVICE@/]\r
+        010305' 254000  007714'         JRST    ERRFIN\r
+\r
+\r\fMACRO V.10                     PAGE 142\r
+        I/O ROUTINES\r
+\r
+        010306' 260740  010307' OUTAB2: PUSHJ   PP,OUTTAB       ;PRINT TWO TABS\r
+        010307' 201340  000011  OUTTAB: MOVEI   C,HT\r
+        010310' 302340  000015  PRINT:  CAIE    C,CR            ;IS THIS A CR?\r
+        010311' 306340  000012          CAIN    C,LF            ;OR LF?\r
+        010312' 254000  010316'         JRST    OUTCR           ;YES, GO PROCESS\r
+        010313' 306340  000014          CAIN    C,FF            ;FORM FEED?\r
+        010314' 254000  010417'         JRST    OUTFF           ;YES, FORCE NEW PAGE\r
+        010315' 254000  010325'         JRST    OUTL\r
+\r
+        010316' 606600  777763  OUTCR:  TRNN    ER,ERRORS!LPTSW!TTYSW\r
+        010317' 263740  000000          POPJ    PP,\r
+        010320' 201340  000015          MOVEI   C,CR            ;CARRIAGE RETURN, LINE FEED\r
+        010321' 260740  010325'         PUSHJ   PP,OUTL\r
+        010322' 375000  013331'         SOSGE   LPP             ;END OF PAGE?\r
+        010323' 661600  000100          TLO     IO,IOPAGE       ;YES, SET FLAG\r
+        010324' 644340  000007          TRCA    C,7             ;FORM LINE FEED AND SKIP\r
+\r
+        010325' 627600  000100  OUTL:   TLZN    IO,IOPAGE       ;NEW PAGE REQUESTED?\r
+        010326' 254000  010377'         JRST    OUTC            ;NO\r
+        010327' 321640  010377'         JUMP1   OUTC            ;YES, BYPASS IF PASS ONE\r
+        010330' 261740  000007          PUSH    PP,C            ;SAVE C AND CS\r
+        010331' 261740  000010          PUSH    PP,CS\r
+        010332' 261740  000014          PUSH    PP,ER\r
+        010333' 607600  240000          TLNN    IO,IOMSTR!IOPROG\r
+        010334' 540600  013042'         HRR     ER,OUTSW\r
+        010335' 603600  000400          TLNE    IO,IOCREF       ;IF DOING CREF OUTPUT NOW\r
+        010336' 603640  002000          TLNE    FR,CREFSW       ;AND CREFFING (JUST IN CASE)\r
+        010337' 254000  010341'         JRST    .+2\r
+        010340' 260740  012274'         PUSHJ   PP,CLSC3        ;CLOSE IT OUT\r
+        010341' 502617  000000          HLLM    IO,(PP)         ;SAVE THIS NEW STATE OF IO\r
+        010342' 201340  000067          MOVEI   C,.LPP\r
+        010343' 202340  013331'         MOVEM   C,LPP           ;SET NEW COUNTER\r
+        010344' 201340  000015          MOVEI   C,CR\r
+        010345' 260740  010377'         PUSHJ   PP,OUTC\r
+        010346' 201340  000014          MOVEI   C,FF\r
+        010347' 260740  010377'         PUSHJ   PP,OUTC         ;OUTPUT FORM FEED\r
+        010350' 201400  013230'         MOVEI   CS,TBUF\r
+        010351' 260740  002774'         PUSHJ   PP,OUTAS0       ;OUTPUT TITLE\r
+                                ;       MOVEI   CS,VBUF\r
+                                ;       PUSHJ   PP,OUTAS0       ;OUTPUT VERSION\r
+        010352' 201400  012566'         MOVEI   CS,DBUF\r
+        010353' 260740  002774'         PUSHJ   PP,OUTAS0       ; AND DATE\r
+        010354' 200340  013414'         MOVE    C,PAGENO\r
+        010355' 260740  002765'         PUSHJ   PP,DNC          ;OUTPUT PAGE NUMBER\r
+        010356' 357000  013341'         AOSG    PAGEN.          ;FIRST PAGE OF THIS NUMBER?\r
+        010357' 254000  010364'         JRST    OUTL1           ;YES\r
+        010360' 201340  000055          MOVEI   C,"-"           ;NO, PUT OUT MODIFIER\r
+        010361' 260740  010377'         PUSHJ   PP,OUTC\r
+        010362' 200340  013341'         MOVE    C,PAGEN.\r
+        010363' 260740  002765'         PUSHJ   PP,DNC\r
+        010364' 260740  010316' OUTL1:  PUSHJ   PP,OUTCR\r
+        010365' 201400  013250'         MOVEI CS,DEVBUF\r
+        010366' 260740  002774'         PUSHJ PP,OUTAS0\r
+\r\fMACRO V.10                     PAGE 142-1\r
+        I/O ROUTINES\r
+\r
+        010367' 550400  013100'         HRRZ    CS,SUBTTX       ;SWITCH FOR SUB-TITLE\r
+        010370' 332010  000000          SKIPE   0(CS)           ;IS THERE A SUB-TITLE?\r
+        010371' 260740  010307'         PUSHJ   PP,OUTTAB       ;YES, OUTPUT A TAB\r
+        010372' 260740  002420'         PUSHJ   PP,SOUT20       ;OUTPUT ASCII WITH CARRIAGE RETURN\r
+        010373' 260740  010316'         PUSHJ   PP,OUTCR\r
+        010374' 262740  000014          POP     PP,ER\r
+        010375' 262740  000010          POP     PP,CS           ;RESTORE REGISTERS\r
+        010376' 262740  000007          POP     PP,C\r
+\r
+        010377' 602600  777761  OUTC:   TRNE    ER,ERRORS!TTYSW\r
+        010400' 260740  007770'         PUSHJ   PP,TYO\r
+        010401' 606600  000002          TRNN    ER,LPTSW\r
+        010402' 263740  000000          POPJ    PP,\r
+        010403' 377000  012654' OUTLST: SOSG    LSTBUF+2        ;BUFFER FULL?\r
+        010404' 260740  010140'         PUSHJ   PP,DMPLST       ;YES, DUMP IT\r
+                                COMMENT $ REG DOESN'T LIKE THIS FEATURE ANY MORE 9-5-72\r
+                                $\r
+        010405' 136340  012653'         IDPB    C,LSTBUF+1      ;STORE BYTE\r
+        010406' 263740  000000          POPJ    PP,             ;EXIT\r
+\r
+\r\fMACRO V.10                     PAGE 143\r
+        I/O ROUTINES\r
+\r
+        010407' 260740  000227' PAGE0:  PUSHJ   PP,STOUTS       ;PAGE PSEUDO-OP\r
+        010410' 603600  000400  OUTFF1: TLNE    IO,IOCREF       ;CURRENTLY DOING CREF?\r
+        010411' 603600  040000          TLNE    IO,IOPROG       ;AND NOT XLISTED?\r
+        010412' 254000  010417'         JRST    OUTFF           ;NO\r
+        010413' 540600  013042'         HRR     ER,OUTSW\r
+        010414' 260740  012274'         PUSHJ   PP,CLSCRF\r
+        010415' 260740  010316'         PUSHJ   PP,OUTCR\r
+        010416' 541600  000000          HRRI    ER,0\r
+        010417' 661600  000100  OUTFF:  TLO     IO,IOPAGE\r
+        010420' 476000  013341' OUTFF2: SETOM   PAGEN.\r
+        010421' 350000  013414'         AOS     PAGENO\r
+        010422' 263740  000000          POPJ    PP,\r
+\r
+        010423' 231100  165140  TIMOUT: IDIVI   2,^D60*^D1000\r
+        010424' 231100  000074  TIMOU1: IDIVI   2,^D60\r
+        010425' 261740  000003          PUSH    PP,3            ;SAVE MINUTES\r
+        010426' 260740  010432'         PUSHJ   PP,OTOD         ;STORE HOURS\r
+        010427' 201140  000072          MOVEI   3,":"           ;SEPARATE BY COLON\r
+        010430' 136140  000010          IDPB    3,CS\r
+        010431' 262740  000002          POP     PP,2            ;STORE MINUTES\r
+        010432' 231100  000012  OTOD:   IDIVI   2,^D10\r
+        010433' 271100  000060          ADDI    2,60            ;FORM ASCII\r
+        010434' 136100  000010          IDPB    2,CS\r
+        010435' 271140  000060          ADDI    3,60\r
+        010436' 136140  000010          IDPB    3,CS\r
+        010437' 263740  000000          POPJ    PP,\r
+\r
+        010440' 231040  000037  DATOUT: IDIVI   1,^D31          ;GET DAY\r
+        010441' 271100  000001          ADDI    2,1\r
+        010442' 307100  000011          CAIG    2,^D9           ;TWO DIGITS?\r
+        010443' 271100  117540          ADDI    2,7760*^D10     ;NO, PUT IN SPACE\r
+        010444' 260740  010432'         PUSHJ   PP,OTOD         ;STORE DAY\r
+        010445' 231040  000014          IDIVI   1,^D12          ;GET MONTH\r
+        010446' 200102  010454'         MOVE    2,DTAB(2)       ;GET MNEMONIC\r
+        010447' 136100  000010          IDPB    2,CS            ;DEPOSIT RIGHT MOST 7 BITS\r
+        010450' 242100  777771          LSH     2,-7            ;SHIFT NEXT IN\r
+        010451' 326100  010447'         JUMPN   2,.-2           ;DEPOSIT IFIT EXISTS\r
+        010452' 201101  000100          MOVEI   2,^D64(1)       ;GET YEAR\r
+        010453' 254000  010432'         JRST    OTOD            ;STORE IT\r
+\r
+        010454' 133164  062455  DTAB:   "-NAJ-"\r
+        010455' 133024  261455          "-BEF-"\r
+        010456' 133224  063255          "-RAM-"\r
+        010457' 133225  020255          "-RPA-"\r
+        010460' 133314  063255          "-YAM-"\r
+        010461' 133165  262455          "-NUJ-"\r
+        010462' 133145  262455          "-LUJ-"\r
+        010463' 133075  260255          "-GUA-"\r
+        010464' 133204  264655          "-PES-"\r
+        010465' 133244  163655          "-TCO-"\r
+        010466' 133264  763455          "-VON-"\r
+        010467' 133034  261055          "-CED-"\r
+\r\fMACRO V.10                     PAGE 144\r
+        MACHINE INSTRUCTION SEARCH ROUTINES\r
+\r
+                                SUBTTL  MACHINE INSTRUCTION SEARCH ROUTINES\r
+                                IFE OPHSH,<\r
+        010470' 201440  000000  OPTSCH: MOVEI   RC,0\r
+        010471' 201240  000400          MOVEI   ARG,1B^L<OP1END-OP1TOP> ;SET UP INDEX\r
+        010472' 201300  000200          MOVEI   V,1B^L<OP1END-OP1TOP>/2 ;SET UP INCREMENT\r
+\r
+        010473' 316005  010526' OPT1A:  CAMN    AC0,OP1TOP(ARG) ;ARE WE POINTING AT SYMBOL?\r
+        010474' 254000  010505'         JRST    OPT1D           ;YES, GET THE CODE\r
+        010475' 322300  000446'         JUMPE   V,POPOUT        ;TEST FOR END\r
+        010476' 311005  010526'         CAML    AC0,OP1TOP(ARG) ;NO, SHOULD WE MOVE DOWN?\r
+        010477' 674240  000006          TDOA    ARG,V           ;NO, INCREMENT\r
+        010500' 274240  000006  OPT1B:  SUB     ARG,V           ;YES, DECREMENT\r
+        010501' 240300  777777          ASH     V,-1            ;HALVE INCREMENT\r
+        010502' 307240  000766          CAIG    ARG,OP1END-OP1TOP       ;ARE WE OUT OF BOUNDS?\r
+        010503' 254000  010473'         JRST    OPT1A           ;NO, TRY AGAIN\r
+        010504' 254000  010500'         JRST    OPT1B           ;YES, BRING IT DOWN A PEG\r
+                                >\r
+\r
+                                IFN OPHSH,<\r
+                                OPTSCH: MOVE    ARG,AC0         ;GET SIXBIT NAME\r
+                                        TLZ     ARG,400000      ;CLEAR SIGN BIT\r
+                                        IDIVI   ARG,PRIME       ;REM. GOES IN V\r
+                                        CAMN    AC0,OP1TOP(V)   ;ARE WE POINTING AT SYMBOL?\r
+                                        JRST    OPT1D           ;YES\r
+                                        SKIPN   OP1TOP(V)       ;TEST FOR END\r
+                                        POPJ    PP,             ;SYMBOL NOT FOUND\r
+                                        HLRZ    RC,ARG          ;SAVE LHS OF QUOTIENT\r
+                                        SKIPA   ARG,RC          ;GET IT BACK\r
+                                OPT1A:  ADDI    ARG,(RC)        ;INCREMENT ARG\r
+                                        ADDI    V,(ARG)         ;QUADRATIC INCREASE TO V\r
+                                        CAIL    V,PRIME         ;V IS MODULO PRIME\r
+                                        JRST    [SUBI   V,PRIME\r
+                                                JRST    .-1]\r
+                                        CAMN    AC0,OP1TOP(V)   ;IS THIS IT?\r
+                                        JRST    OPT1D           ;YES\r
+                                        SKIPE   OP1TOP(V)       ;END?\r
+                                        JRST    OPT1A           ;TRY AGAIN\r
+                                        POPJ    PP,             ;FAILED\r
+                                >\r
+        010505'                 OPT1D:\r
+                                IFN OPHSH,<     SETZ    RC,     ;CLEAR RELOCATION\r
+                                        MOVE    ARG,V           ;GET INDEX IN RIGHT ACC.>\r
+        010505' 231240  000004          IDIVI   ARG,4           ;ARG HAS INDEX USED IN OPTTAB\r
+        010506' 135306  010523'         LDB     V,OPTTAB(V)     ;V HAS INDEX TO OPTTAB\r
+        010507' 301300  000700          CAIL    V,700           ;PSEUDO-OP OR IO INSTRUCTION?\r
+        010510' 254000  010516'         JRST    OPT1G           ;YES\r
+        010511' 241300  777767          ROT     V,-^D9          ;LEFT JUSTIFY\r
+        010512' 541300  004354'         HRRI    V,OP            ;POINT TO BASIC FORMAT\r
+        010513' 350017  000000  OPT1F:  AOS     0(PP)           ;SET FOR SKIP EXIT\r
+        010514' 201140  000003          MOVEI   SDEL,%OP        ;SET OP-CODE CROSS-REF FLAG\r
+        010515' 254000  012221'         JRST    CREF            ;TEST AND OUTPUT, AC0=SYMBOL, V=VALUE\r
+\r
+        010516' 327000  010521' OPT1G:  JUMPG   AC0,.+3         ;IF ".","$",OR "%" USE TABLE 1\r
+\r\fMACRO V.10                     PAGE 144-1\r
+        MACHINE INSTRUCTION SEARCH ROUTINES\r
+\r
+        010517' 607000  200000          TLNN    AC0,200000      ;PSEUDO-OP OR IO INST., TEST FOR PROPER TABLE\r
+        010520' 334306  011164'         SKIPA   V,OP2TAB-700(V) ;2ND TABLE, FIRST LETTER IS "A" TO "O"\r
+        010521' 200306  011120'         MOVE    V,OP1TAB-700(V) ;1ST TABLE, ..."P" TO "Z"\r
+        010522' 254000  010513'         JRST    OPT1F           ;EXIT\r
+\r
+        010523'                 OPTTAB:\r
+        010523' 001105  011514' IFE OPHSH,<     POINT   9,OP1COD-1(ARG),35>\r
+        010524' 331105  011515'         POINT   9,OP1COD  (ARG), 8\r
+        010525' 221105  011515'         POINT   9,OP1COD  (ARG),17\r
+        010526' 111105  011515'         POINT   9,OP1COD  (ARG),26\r
+                                IFN OPHSH,<     POINT   9,OP1COD  (ARG),35>\r
+\r
+\r\fMACRO V.10                     PAGE 145\r
+        MACHINE INSTRUCTION SEARCH ROUTINES\r
+\r
+                                IFDEF .XCREF,<  .XCREF  ;DON'T CREF THIS MESS>\r
+                                IFE OPHSH,<\r
+        010526'                         RELOC   .-1\r
+        010526'                 OP1TOP:\r
+        010527'                         RELOC\r
+\r
+                                        IF1,<N1=0\r
+                                        DEFINE  X  <N1=N1+1 ;>>\r
+\r
+                                        IF2, <\r
+                        000044          N2=^D36\r
+                        000000          CC=0\r
+        011515'                         RELOC   OP1COD\r
+        010527'                         RELOC\r
+                                DEFINE  X (SYMBOL,CODE) \r
+                                <SIXBIT /SYMBOL/\r
+                                CC=CC+CODE_<N2=N2-9>\r
+                                IFE N2, <OUTLIT>>\r
+\r
+                                DEFINE  OUTLIT  <\r
+                                        RELOC\r
+                                        +CC\r
+                                        RELOC\r
+                                N2=^D36+<CC=0>>>\r
+                                        SYN X,XX                ;JUST THE SAME MACRO>\r
+\r\fMACRO V.10                     PAGE 146\r
+        MACHINE INSTRUCTION SEARCH ROUTINES\r
+\r
+\r
+                                IFN OPHSH,<\r
+                                DEFINE XX (SB,CD)<>             ;A NUL MACRO\r
+                                OP1TOP: IF1,<   BLOCK PRIME>\r
+                                IF1,<DEFINE X (SB,CD)<>>\r
+                                IF2,<\r
+                                DEFINE OPSTOR (RM)<.$'RM=.$'RM+<OPCODE_<9*<3-R&3>>>>\r
+                                \r
+                                DEFINE X (SB,CD)<\r
+                                SXB=<SIXBIT /SB/>\r
+                                Q=SXB&-1_-1/PRIME\r
+                                R=SXB&-1_-1-Q*PRIME\r
+                                H=Q_-22&777\r
+                                TRY=1\r
+                                OPCODE=CD\r
+                                ITEM Q,\R\r
+                                IFL PRIME-TRY,<PRINTX HASH FAILURE>>\r
+                                \r
+                                DEFINE ITEM (QT,RM)<\r
+                                IFN .%'RM,<R=R+H\r
+                                IFL PRIME-R,<R=R-R/PRIME*PRIME>\r
+                                H=H+Q_-22&777\r
+                                IFGE PRIME-<TRY=TRY+1>,<ITEM Q,\R>>\r
+                                IFE .%'RM,<.%'RM=SXB\r
+                                OPSTOR \<R/4>>>>\r
+                                IF1,<\r
+                                DEFINE GETSYM (N)<.%'N=0>\r
+                                \r
+                                N=0\r
+                                        XLIST\r
+                                REPEAT PRIME,<GETSYM \N\r
+                                N=N+1>\r
+                                DEFINE GETSYM (N)<.$'N=0>\r
+                                N=0\r
+                                REPEAT <PRIME/4+1>,<GETSYM \N\r
+                                N=N+1>\r
+                                >\r
+                                        LIST>\r
+\r
+\r\fMACRO V.10                     PAGE 147\r
+        MACHINE INSTRUCTION SEARCH ROUTINES\r
+\r
+                                IFN OPHSH,<             ;PUT THE MOST USED OP CODES FIRST\r
+                                X       JRST  , 254\r
+                                X       PUSHJ , 260\r
+                                X       POPJ  , 263\r
+                                X       PUSH  , 261\r
+                                X       POP   , 262\r
+                                X       AOS   , 350\r
+                                X       ASCIZ , 701\r
+                                X       CALLI , 047\r
+                                X       EXTERN, 724\r
+                                X       INTERN, 744\r
+                                X       JFCL  , 255\r
+                                X       JSP   , 265\r
+                                X       MOVE  , 200\r
+                                X       MOVEI , 201\r
+                                X       MOVEM , 202\r
+                                X       SETZM , 402\r
+                                X       SIXBIT, 717\r
+                                X       SOS   , 370\r
+                                X       TLNE  , 603\r
+                                X       TLNN  , 607\r
+                                X       TLO   , 661\r
+                                X       TLZ   , 621\r
+                                X       TLZA  , 625\r
+                                X       TLZE  , 623\r
+                                X       TLZN  , 627\r
+                                X       TRNE  , 602\r
+                                X       TRNN  , 606\r
+                                X       TRZ   , 620\r
+                                >\r
+\r\fMACRO V.10                     PAGE 148\r
+        MACHINE INSTRUCTION SEARCH ROUTINES\r
+\r
+        010527' 414444  000000  X       ADD   , 270\r
+        010530' 414444  420000  X       ADDB  , 273\r
+        010531' 414444  510000  X       ADDI  , 271\r
+        010532' 414444  550000  X       ADDM  , 272\r
+        011515' 270273  271272\r
+\r
+        010533' 415644  000000  X       AND   , 404\r
+        010534' 415644  420000  X       ANDB  , 407\r
+        010535' 415644  434100  X       ANDCA , 410\r
+        010536' 415644  434142  X       ANDCAB, 413\r
+        011516' 404407  410413\r
+        010537' 415644  434151  X       ANDCAI, 411\r
+        010540' 415644  434155  X       ANDCAM, 412\r
+        010541' 415644  434200  X       ANDCB , 440\r
+        010542' 415644  434242  X       ANDCBB, 443\r
+        011517' 411412  440443\r
+        010543' 415644  434251  X       ANDCBI, 441\r
+        010544' 415644  434255  X       ANDCBM, 442\r
+        010545' 415644  435500  X       ANDCM , 420\r
+        010546' 415644  435542  X       ANDCMB, 423\r
+        011520' 441442  420423\r
+        010547' 415644  435551  X       ANDCMI, 421\r
+        010550' 415644  435555  X       ANDCMM, 422\r
+        010551' 415644  510000  X       ANDI  , 405\r
+        010552' 415644  550000  X       ANDM  , 406\r
+        011521' 421422  405406\r
+\r
+        010553' 415742  525600  X       AOBJN , 253\r
+        010554' 415742  526000  X       AOBJP , 252\r
+\r
+        010555' 415752  000000  X       AOJ   , 340\r
+        010556' 415752  410000  X       AOJA  , 344\r
+        011522' 253252  340344\r
+        010557' 415752  450000  X       AOJE  , 342\r
+        010560' 415752  470000  X       AOJG  , 347\r
+        010561' 415752  474500  X       AOJGE , 345\r
+        010562' 415752  540000  X       AOJL  , 341\r
+        011523' 342347  345341\r
+        010563' 415752  544500  X       AOJLE , 343\r
+        010564' 415752  560000  X       AOJN  , 346\r
+\r
+        010565' 415763  000000  XX      AOS   , 350\r
+        010566' 415763  410000  X       AOSA  , 354\r
+        011524' 343346  350354\r
+        010567' 415763  450000  X       AOSE  , 352\r
+        010570' 415763  470000  X       AOSG  , 357\r
+        010571' 415763  474500  X       AOSGE , 355\r
+        010572' 415763  540000  X       AOSL  , 351\r
+        011525' 352357  355351\r
+        010573' 415763  544500  X       AOSLE , 353\r
+        010574' 415763  560000  X       AOSN  , 356\r
+        010575' 416247  000000  X       ARG   , 320\r
+                                IFN IIISW,<X    ASCID , 771>\r
+\r\fMACRO V.10                     PAGE 148-1\r
+        MACHINE INSTRUCTION SEARCH ROUTINES\r
+\r
+        010576' 416343  515100  X       ASCII , 700\r
+        011526' 353356  320700\r
+        010577' 416343  517200  XX      ASCIZ , 701\r
+\r
+        010600' 416350  000000  X       ASH   , 240\r
+        010601' 416350  430000  X       ASHC  , 244\r
+\r
+        010602' 416365  606062  X       ASUPPR, 705\r
+        011527' 701240  244705\r
+        010603' 425453  510000  X       BLKI  , 702\r
+        010604' 425453  570000  X       BLKO  , 703\r
+        010605' 425457  435300  X       BLOCK , 704\r
+\r
+        010606' 425464  000000  X       BLT   , 251\r
+        011530' 702703  704251\r
+\r
+        010607' 427164  450000  X       BYTE  , 707\r
+\r
+        010610' 434151  000000  XX      CAI   , 300\r
+        010611' 434151  410000  X       CAIA  , 304\r
+        010612' 434151  450000  X       CAIE  , 302\r
+        011531' 707300  304302\r
+        010613' 434151  470000  X       CAIG  , 307\r
+        010614' 434151  474500  X       CAIGE , 305\r
+        010615' 434151  540000  X       CAIL  , 301\r
+        010616' 434151  544500  X       CAILE , 303\r
+        011532' 307305  301303\r
+        010617' 434151  560000  X       CAIN  , 306\r
+\r
+        010620' 434154  540000  X       CALL  , 040\r
+        010621' 434154  545100  XX      CALLI , 047\r
+\r
+        010622' 434155  000000  XX      CAM   , 310\r
+        011533' 306040  047310\r
+        010623' 434155  410000  X       CAMA  , 314\r
+        010624' 434155  450000  X       CAME  , 312\r
+        010625' 434155  470000  X       CAMG  , 317\r
+        010626' 434155  474500  X       CAMGE , 315\r
+        011534' 314312  317315\r
+        010627' 434155  540000  X       CAML  , 311\r
+        010630' 434155  544500  X       CAMLE , 313\r
+        010631' 434155  560000  X       CAMN  , 316\r
+\r
+        010632' 435445  416200  XX      CLEAR , 400\r
+        011535' 311313  316400\r
+        010633' 435445  416242  XX      CLEARB, 403\r
+        010634' 435445  416251  XX      CLEARI, 401\r
+        010635' 435445  416255  XX      CLEARM, 402\r
+\r
+        010636' 435457  634500  X       CLOSE , 070\r
+        011536' 403401  402070\r
+        010637' 435755  554556  X       COMMEN, 770\r
+\r
+\r\fMACRO V.10                     PAGE 148-2\r
+        MACHINE INSTRUCTION SEARCH ROUTINES\r
+\r
+\r
+        010640' 435756  510000  X       CONI  , 710\r
+        010641' 435756  570000  X       CONO  , 711\r
+        010642' 435756  635700  X       CONSO , 712\r
+        011537' 770710  711712\r
+        010643' 435756  637200  X       CONSZ , 713\r
+\r
+        010644' 444164  411600  XX      DATA. , 020\r
+\r
+        010645' 444164  415100  X       DATAI , 714\r
+        010646' 444164  415700  X       DATAO , 715\r
+        011540' 713020  714715\r
+        010647' 444543  000000  X       DEC   , 716\r
+        010650' 444546  515645  X       DEFINE, 717\r
+        010651' 444560  504163  X       DEPHAS, 720\r
+\r
+        010652' 444656  000000  X       DFN   , 131\r
+        011541' 716717  720131\r
+\r
+        010653' 445166  000000  X       DIV   , 234\r
+        010654' 445166  420000  X       DIVB  , 237\r
+        010655' 445166  510000  X       DIVI  , 235\r
+        010656' 445166  550000  X       DIVM  , 236\r
+        011542' 234237  235236\r
+\r
+\r
+        010657' 446042  000000  X       DPB   , 137\r
+        010660' 446042  510000  X       DPBI  , 136\r
+\r
+        010661' 455644  000000  X       END   , 721\r
+\r
+        010662' 455664  456200  X       ENTER , 077\r
+        011543' 137136  721077\r
+\r
+        010663' 455664  627100  X       ENTRY , 722\r
+\r
+        010664' 456166  000000  X       EQV   , 444\r
+        010665' 456166  420000  X       EQVB  , 447\r
+        010666' 456166  510000  X       EQVI  , 445\r
+        011544' 722444  447445\r
+        010667' 456166  550000  X       EQVM  , 446\r
+\r
+        010670' 457043  500000  X       EXCH  , 250\r
+\r
+        010671' 457060  000000  X       EXP   , 723\r
+        010672' 457064  456256  XX      EXTERN, 724\r
+        011545' 446250  723724\r
+\r
+        010673' 464144  000000  X       FAD   , 140\r
+        010674' 464144  420000  X       FADB  , 143\r
+        010675' 464144  540000  X       FADL  , 141\r
+        010676' 464144  550000  X       FADM  , 142\r
+        011546' 140143  141142\r
+\r\fMACRO V.10                     PAGE 148-3\r
+        MACHINE INSTRUCTION SEARCH ROUTINES\r
+\r
+\r
+        010677' 464144  620000  X       FADR  , 144\r
+        010700' 464144  624200  X       FADRB , 147\r
+        010701' 464144  625100  X       FADRI , 145\r
+        010702' 464144  625500  X       FADRM , 146\r
+        011547' 144147  145146\r
+\r
+        010703' 464466  000000  X       FDV   , 170\r
+        010704' 464466  420000  X       FDVB  , 173\r
+        010705' 464466  540000  X       FDVL  , 171\r
+        010706' 464466  550000  X       FDVM  , 172\r
+        011550' 170173  171172\r
+\r
+        010707' 464466  620000  X       FDVR  , 174\r
+        010710' 464466  624200  X       FDVRB , 177\r
+        010711' 464466  625100  X       FDVRI , 175\r
+        010712' 464466  625500  X       FDVRM , 176\r
+        011551' 174177  175176\r
+\r
+        010713' 465156  160000  XX      FIN.  , 021\r
+\r
+\r
+        010714' 465560  000000  X       FMP   , 160\r
+        010715' 465560  420000  X       FMPB  , 163\r
+        010716' 465560  540000  X       FMPL  , 161\r
+        011552' 021160  163161\r
+        010717' 465560  550000  X       FMPM  , 162\r
+\r
+\r\fMACRO V.10                     PAGE 149\r
+        MACHINE INSTRUCTION SEARCH ROUTINES\r
+\r
+        010720' 465560  620000  X       FMPR  , 164\r
+        010721' 465560  624200  X       FMPRB , 167\r
+        010722' 465560  625100  X       FMPRI , 165\r
+        011553' 162164  167165\r
+        010723' 465560  625500  X       FMPRM , 166\r
+\r
+        010724' 466342  000000  X       FSB   , 150\r
+        010725' 466342  420000  X       FSBB  , 153\r
+        010726' 466342  540000  X       FSBL  , 151\r
+        011554' 166150  153151\r
+        010727' 466342  550000  X       FSBM  , 152\r
+\r
+        010730' 466342  620000  X       FSBR  , 154\r
+        010731' 466342  624200  X       FSBRB , 157\r
+        010732' 466342  625100  X       FSBRI , 155\r
+        011555' 152154  157155\r
+        010733' 466342  625500  X       FSBRM , 156\r
+\r
+        010734' 466343  000000  X       FSC   , 132\r
+\r
+        010735' 474564  636463  X       GETSTS, 062\r
+\r
+\r\fMACRO V.10                     PAGE 150\r
+        MACHINE INSTRUCTION SEARCH ROUTINES\r
+\r
+        010736' 504154  640000  X       HALT  , 725\r
+        011556' 156132  062725\r
+        010737' 505163  454700  X       HISEG , 706\r
+\r
+        010740' 505454  000000  X       HLL   , 500\r
+        010741' 505454  450000  X       HLLE  , 530\r
+        010742' 505454  455100  X       HLLEI , 531\r
+        011557' 706500  530531\r
+        010743' 505454  455500  X       HLLEM , 532\r
+        010744' 505454  456300  X       HLLES , 533\r
+        010745' 505454  510000  X       HLLI  , 501\r
+        010746' 505454  550000  X       HLLM  , 502\r
+        011560' 532533  501502\r
+        010747' 505454  570000  X       HLLO  , 520\r
+        010750' 505454  575100  X       HLLOI , 521\r
+        010751' 505454  575500  X       HLLOM , 522\r
+        010752' 505454  576300  X       HLLOS , 523\r
+        011561' 520521  522523\r
+        010753' 505454  630000  X       HLLS  , 503\r
+        010754' 505454  720000  X       HLLZ  , 510\r
+        010755' 505454  725100  X       HLLZI , 511\r
+        010756' 505454  725500  X       HLLZM , 512\r
+        011562' 503510  511512\r
+        010757' 505454  726300  X       HLLZS , 513\r
+\r
+        010760' 505462  000000  X       HLR   , 544\r
+        010761' 505462  450000  X       HLRE  , 574\r
+        010762' 505462  455100  X       HLREI , 575\r
+        011563' 513544  574575\r
+        010763' 505462  455500  X       HLREM , 576\r
+        010764' 505462  456300  X       HLRES , 577\r
+        010765' 505462  510000  X       HLRI  , 545\r
+        010766' 505462  550000  X       HLRM  , 546\r
+        011564' 576577  545546\r
+        010767' 505462  570000  X       HLRO  , 564\r
+        010770' 505462  575100  X       HLROI , 565\r
+        010771' 505462  575500  X       HLROM , 566\r
+        010772' 505462  576300  X       HLROS , 567\r
+        011565' 564565  566567\r
+        010773' 505462  630000  X       HLRS  , 547\r
+        010774' 505462  720000  X       HLRZ  , 554\r
+        010775' 505462  725100  X       HLRZI , 555\r
+        010776' 505462  725500  X       HLRZM , 556\r
+        011566' 547554  555556\r
+        010777' 505462  726300  X       HLRZS , 557\r
+\r
+\r\fMACRO V.10                     PAGE 151\r
+        MACHINE INSTRUCTION SEARCH ROUTINES\r
+\r
+        011000' 506254  000000  X       HRL   , 504\r
+        011001' 506254  450000  X       HRLE  , 534\r
+        011002' 506254  455100  X       HRLEI , 535\r
+        011567' 557504  534535\r
+        011003' 506254  455500  X       HRLEM , 536\r
+        011004' 506254  456300  X       HRLES , 537\r
+        011005' 506254  510000  X       HRLI  , 505\r
+        011006' 506254  550000  X       HRLM  , 506\r
+        011570' 536537  505506\r
+        011007' 506254  570000  X       HRLO  , 524\r
+        011010' 506254  575100  X       HRLOI , 525\r
+        011011' 506254  575500  X       HRLOM , 526\r
+        011012' 506254  576300  X       HRLOS , 527\r
+        011571' 524525  526527\r
+        011013' 506254  630000  X       HRLS  , 507\r
+        011014' 506254  720000  X       HRLZ  , 514\r
+        011015' 506254  725100  X       HRLZI , 515\r
+        011016' 506254  725500  X       HRLZM , 516\r
+        011572' 507514  515516\r
+        011017' 506254  726300  X       HRLZS , 517\r
+\r
+        011020' 506262  000000  X       HRR   , 540\r
+        011021' 506262  450000  X       HRRE  , 570\r
+        011022' 506262  455100  X       HRREI , 571\r
+        011573' 517540  570571\r
+        011023' 506262  455500  X       HRREM , 572\r
+        011024' 506262  456300  X       HRRES , 573\r
+        011025' 506262  510000  X       HRRI  , 541\r
+        011026' 506262  550000  X       HRRM  , 542\r
+        011574' 572573  541542\r
+        011027' 506262  570000  X       HRRO  , 560\r
+        011030' 506262  575100  X       HRROI , 561\r
+        011031' 506262  575500  X       HRROM , 562\r
+        011032' 506262  576300  X       HRROS , 563\r
+        011575' 560561  562563\r
+        011033' 506262  630000  X       HRRS  , 543\r
+        011034' 506262  720000  X       HRRZ  , 550\r
+        011035' 506262  725100  X       HRRZI , 551\r
+        011036' 506262  725500  X       HRRZM , 552\r
+        011576' 543550  551552\r
+        011037' 506262  726300  X       HRRZS , 553\r
+\r
+        011040' 514260  000000  X       IBP   , 133\r
+\r
+        011041' 514451  660000  X       IDIV  , 230\r
+        011042' 514451  664200  X       IDIVB , 233\r
+        011577' 553133  230233\r
+        011043' 514451  665100  X       IDIVI , 231\r
+        011044' 514451  665500  X       IDIVM , 232\r
+\r
+        011045' 514460  420000  X       IDPB  , 136\r
+\r
+        011046' 514621  000000  X       IF1   , 726\r
+\r\fMACRO V.10                     PAGE 151-1\r
+        MACHINE INSTRUCTION SEARCH ROUTINES\r
+\r
+        011600' 231232  136726\r
+        011047' 514622  000000  X       IF2   , 727\r
+        011050' 514642  000000  X       IFB   , 730\r
+        011051' 514644  454600  X       IFDEF , 731\r
+        011052' 514644  514600  X       IFDIF , 732\r
+        011601' 727730  731732\r
+        011053' 514645  000000  X       IFE   , 733\r
+        011054' 514647  000000  X       IFG   , 734\r
+        011055' 514647  450000  X       IFGE  , 735\r
+        011056' 514651  445600  X       IFIDN , 736\r
+        011602' 733734  735736\r
+        011057' 514654  000000  X       IFL   , 737\r
+        011060' 514654  450000  X       IFLE  , 740\r
+        011061' 514656  000000  X       IFN   , 741\r
+        011062' 514656  420000  X       IFNB  , 742\r
+        011603' 737740  741742\r
+        011063' 514656  444546  X       IFNDEF, 743\r
+\r
+        011064' 515444  420000  X       ILDB  , 134\r
+\r
+        011065' 515565  540000  X       IMUL  , 220\r
+        011066' 515565  544200  X       IMULB , 223\r
+        011604' 743134  220223\r
+        011067' 515565  545100  X       IMULI , 221\r
+        011070' 515565  545500  X       IMULM , 222\r
+\r
+        011071' 515600  000000  X       IN    , 056\r
+        011072' 515616  000000  XX      IN.   , 016\r
+        011605' 221222  056016\r
+        011073' 515642  654600  X       INBUF , 064\r
+        011074' 515646  160000  XX      INF.  , 026\r
+        011075' 515651  640000  X       INIT  , 041\r
+        011076' 515660  656400  X       INPUT , 066\r
+        011606' 064026  041066\r
+\r
+        011077' 515664  456256  XX      INTERN, 744\r
+\r
+        011100' 515762  000000  X       IOR   , 434\r
+        011101' 515762  420000  X       IORB  , 437\r
+        011102' 515762  510000  X       IORI  , 435\r
+        011607' 744434  437435\r
+        011103' 515762  550000  X       IORM  , 436\r
+\r
+\r
+        011104' 515767  440000  X       IOWD  , 745\r
+        011105' 516260  000000  X       IRP   , 746\r
+        011106' 516260  430000  X       IRPC  , 747\r
+        011610' 436745  746747\r
+        011107' 524362  710000  X       JCRY  , 750\r
+        011110' 524362  712000  X       JCRY0 , 751\r
+        011111' 524362  712100  X       JCRY1 , 752\r
+        011112' 524556  000000  X       JEN   , 753\r
+        011611' 750751  752753\r
+\r\fMACRO V.10                     PAGE 151-2\r
+        MACHINE INSTRUCTION SEARCH ROUTINES\r
+\r
+\r
+        011113' 524643  540000  XX      JFCL  , 255\r
+\r
+        011114' 524646  570000  X       JFFO  , 243\r
+        011115' 524657  660000  X       JFOV  , 765\r
+        011116' 525766  000000  X       JOV   , 754\r
+        011612' 255243  765754\r
+\r
+        011117' 526241  000000  X       JRA   , 267\r
+        011120' 526263  640000  XX      JRST  , 254\r
+\r
+        011121' 526263  644600  X       JRSTF , 755\r
+\r
+        011122' 526341  000000  X       JSA   , 266\r
+        011613' 267254  755266\r
+        011123' 526360  000000  XX      JSP   , 265\r
+        011124' 526362  000000  X       JSR   , 264\r
+\r
+        011125' 526555  600000  XX      JUMP  , 320\r
+        011126' 526555  604100  XX      JUMPA , 324\r
+        011614' 265264  320324\r
+        011127' 526555  604500  X       JUMPE , 322\r
+        011130' 526555  604700  X       JUMPG , 327\r
+        011131' 526555  604745  X       JUMPGE, 325\r
+        011132' 526555  605400  X       JUMPL , 321\r
+        011615' 322327  325321\r
+        011133' 526555  605445  X       JUMPLE, 323\r
+        011134' 526555  605600  X       JUMPN , 326\r
+\r
+        011135' 544154  540000  X       LALL  , 756\r
+\r
+        011136' 544442  000000  X       LDB   , 135\r
+        011616' 323326  756135\r
+        011137' 544442  510000  X       LDBI  , 134\r
+\r
+\r
+        011140' 545163  640000  X       LIST  , 757\r
+        011141' 545164  000000  X       LIT   , 760\r
+        011142' 545743  000000  X       LOC   , 761\r
+        011617' 134757  760761\r
+\r
+        011143' 545757  536560  X       LOOKUP, 076\r
+\r
+        011144' 546350  000000  X       LSH   , 242\r
+        011145' 546350  430000  X       LSHC  , 246\r
+        011146' 555457  464600  X       MLOFF , 767\r
+        011620' 076242  246767\r
+        011147' 555457  560000  X       MLON  , 766\r
+        011150' 555766  450000  XX      MOVE  , 200\r
+        011151' 555766  455100  XX      MOVEI , 201\r
+        011152' 555766  455500  XX      MOVEM , 202\r
+        011621' 766200  201202\r
+        011153' 555766  456300  X       MOVES , 203\r
+\r\fMACRO V.10                     PAGE 151-3\r
+        MACHINE INSTRUCTION SEARCH ROUTINES\r
+\r
+        011154' 555766  550000  X       MOVM  , 214\r
+        011155' 555766  555100  X       MOVMI , 215\r
+        011156' 555766  555500  X       MOVMM , 216\r
+        011622' 203214  215216\r
+        011157' 555766  556300  X       MOVMS , 217\r
+        011160' 555766  560000  X       MOVN  , 210\r
+        011161' 555766  565100  X       MOVNI , 211\r
+        011162' 555766  565500  X       MOVNM , 212\r
+        011623' 217210  211212\r
+        011163' 555766  566300  X       MOVNS , 213\r
+        011164' 555766  630000  X       MOVS  , 204\r
+        011165' 555766  635100  X       MOVSI , 205\r
+        011166' 555766  635500  X       MOVSM , 206\r
+        011624' 213204  205206\r
+        011167' 555766  636300  X       MOVSS , 207\r
+\r
+\r
+        011170' 556441  604500  X       MTAPE , 072\r
+        011171' 556457  601600  XX      MTOP. , 024\r
+\r
+        011172' 556554  000000  X       MUL   , 224\r
+        011625' 207072  024224\r
+        011173' 556554  420000  X       MULB  , 227\r
+        011174' 556554  510000  X       MULI  , 225\r
+        011175' 556554  550000  X       MULM  , 226\r
+        011176' 565451  160000  XX      NLI.  , 031\r
+        011626' 227225  226031\r
+        011177' 565457  160000  XX      NLO.  , 032\r
+\r
+        011200' 565763  715500  X       NOSYM , 762\r
+\r
+\r\fMACRO V.10                     PAGE 152\r
+        MACHINE INSTRUCTION SEARCH ROUTINES\r
+\r
+        011201' 574364  000000  X       OCT   , 763\r
+        011202' 576044  454600  X       OPDEF , 764\r
+        011627' 032762  763764\r
+\r
+        011203' 576045  560000  X       OPEN  , 050\r
+\r
+        011204' 576200  000000  X       OR    , 434\r
+        011205' 576242  000000  X       ORB   , 437\r
+        011206' 576243  410000  X       ORCA  , 454\r
+        011630' 050434  437454\r
+        011207' 576243  414200  X       ORCAB , 457\r
+        011210' 576243  415100  X       ORCAI , 455\r
+        011211' 576243  415500  X       ORCAM , 456\r
+        011212' 576243  420000  X       ORCB  , 470\r
+        011631' 457455  456470\r
+        011213' 576243  424200  X       ORCBB , 473\r
+\r
+        011214' 576243  425100  X       ORCBI , 471\r
+        011215' 576243  425500  X       ORCBM , 472\r
+        011216' 576243  550000  X       ORCM  , 464\r
+        011632' 473471  472464\r
+        011217' 576243  554200  X       ORCMB , 467\r
+        011220' 576243  555100  X       ORCMI , 465\r
+        011221' 576243  555500  X       ORCMM , 466\r
+        011222' 576251  000000  X       ORI   , 435\r
+        011633' 467465  466435\r
+        011223' 576255  000000  X       ORM   , 436\r
+\r
+        011224' 576564  000000  X       OUT   , 057\r
+        011225' 576564  160000  XX      OUT.  , 017\r
+        011226' 576564  426546  X       OUTBUF, 065\r
+        011634' 436057  017065\r
+        011227' 576564  461600  XX      OUTF. , 027\r
+        011230' 576564  606564  X       OUTPUT, 067\r
+\r
+\r\fMACRO V.10                     PAGE 153\r
+        MACHINE INSTRUCTION SEARCH ROUTINES\r
+\r
+        011231' 604147  450000  X       PAGE  , 700\r
+        011232' 604163  632200  X       PASS2 , 701\r
+        011635' 027067  700701\r
+        011233' 605041  634500  X       PHASE , 702\r
+        011234' 605751  566400  X       POINT , 703\r
+\r
+        011235' 605760  000000  XX      POP   , 262\r
+        011236' 605760  520000  XX      POPJ  , 263\r
+        011636' 702703  262263\r
+\r
+        011237' 606247  455644  X       PRGEND, 714\r
+        011240' 606251  566470  X       PRINTX, 704\r
+        011241' 606562  474500  X       PURGE , 705\r
+\r
+        011242' 606563  500000  XX      PUSH  , 261\r
+        011637' 714704  705261\r
+        011243' 606563  505200  XX      PUSHJ , 260\r
+\r
+        011244' 624144  517000  X       RADIX , 706\r
+        011245' 624144  517025  X       RADIX5, 707\r
+\r
+        011246' 624554  454163  X       RELEAS, 071\r
+        011640' 260706  707071\r
+\r
+        011247' 624554  574300  X       RELOC , 710\r
+        011250' 624555  416253  X       REMARK, 711\r
+\r
+        011251' 624556  415545  X       RENAME, 055\r
+\r
+        011252' 624560  454164  X       REPEAT, 712\r
+        011641' 710711  055712\r
+\r
+        011253' 624563  456416  XX      RESET., 015\r
+        011254' 625155  000000  X       RIM   , 715\r
+        011255' 625155  212000  X       RIM10 , 735\r
+        011256' 625155  212042  X       RIM10B, 736\r
+        011642' 015715  735736\r
+\r
+        011257' 625764  000000  X       ROT   , 241\r
+        011260' 625764  430000  X       ROTC  , 245\r
+\r
+        011261' 626367  000000  X       RSW   , 716\r
+        011262' 626442  160000  XX      RTB.  , 022\r
+        011643' 241245  716022\r
+        011263' 634154  540000  X       SALL  , 720\r
+                                IFN UNIVR,<X    SEARCH, 721>\r
+\r
+        011264' 634564  410000  X       SETA  , 424\r
+        011265' 634564  414200  X       SETAB , 427\r
+        011266' 634564  415100  X       SETAI , 425\r
+        011644' 720424  427425\r
+        011267' 634564  415500  X       SETAM , 426\r
+        011270' 634564  434100  X       SETCA , 450\r
+\r\fMACRO V.10                     PAGE 153-1\r
+        MACHINE INSTRUCTION SEARCH ROUTINES\r
+\r
+        011271' 634564  434142  X       SETCAB, 453\r
+        011272' 634564  434151  X       SETCAI, 451\r
+        011645' 426450  453451\r
+        011273' 634564  434155  X       SETCAM, 452\r
+        011274' 634564  435500  X       SETCM , 460\r
+        011275' 634564  435542  X       SETCMB, 463\r
+        011276' 634564  435551  X       SETCMI, 461\r
+        011646' 452460  463461\r
+        011277' 634564  435555  X       SETCMM, 462\r
+        011300' 634564  550000  X       SETM  , 414\r
+        011301' 634564  554200  X       SETMB , 417\r
+        011302' 634564  555100  X       SETMI , 415\r
+        011647' 462414  417415\r
+        011303' 634564  555500  X       SETMM , 416\r
+        011304' 634564  570000  X       SETO  , 474\r
+        011305' 634564  574200  X       SETOB , 477\r
+        011306' 634564  575100  X       SETOI , 475\r
+        011650' 416474  477475\r
+        011307' 634564  575500  X       SETOM , 476\r
+        011310' 634564  636463  X       SETSTS, 060\r
+        011311' 634564  720000  X       SETZ  , 400\r
+        011312' 634564  724200  X       SETZB , 403\r
+        011651' 476060  400403\r
+        011313' 634564  725100  X       SETZI , 401\r
+        011314' 634564  725500  XX      SETZM , 402\r
+\r
+        011315' 635170  425164  XX      SIXBIT, 717\r
+\r
+        011316' 635351  600000  XX      SKIP  , 330\r
+        011652' 401402  717330\r
+        011317' 635351  604100  X       SKIPA , 334\r
+        011320' 635351  604500  X       SKIPE , 332\r
+        011321' 635351  604700  X       SKIPG , 337\r
+        011322' 635351  604745  X       SKIPGE, 335\r
+        011653' 334332  337335\r
+        011323' 635351  605400  X       SKIPL , 331\r
+        011324' 635351  605445  X       SKIPLE, 333\r
+        011325' 635351  605600  X       SKIPN , 336\r
+\r
+        011326' 635451  636416  XX      SLIST., 025\r
+        011654' 331333  336025\r
+\r
+        011327' 635752  000000  X       SOJ   , 360\r
+        011330' 635752  410000  X       SOJA  , 364\r
+        011331' 635752  450000  X       SOJE  , 362\r
+        011332' 635752  470000  X       SOJG  , 367\r
+        011655' 360364  362367\r
+        011333' 635752  474500  X       SOJGE , 365\r
+        011334' 635752  540000  X       SOJL  , 361\r
+        011335' 635752  544500  X       SOJLE , 363\r
+        011336' 635752  560000  X       SOJN  , 366\r
+        011656' 365361  363366\r
+\r
+\r\fMACRO V.10                     PAGE 153-2\r
+        MACHINE INSTRUCTION SEARCH ROUTINES\r
+\r
+        011337' 635763  000000  XX      SOS   , 370\r
+        011340' 635763  410000  X       SOSA  , 374\r
+        011341' 635763  450000  X       SOSE  , 372\r
+        011342' 635763  470000  X       SOSG  , 377\r
+        011657' 370374  372377\r
+        011343' 635763  474500  X       SOSGE , 375\r
+        011344' 635763  540000  X       SOSL  , 371\r
+        011345' 635763  544500  X       SOSLE , 373\r
+        011346' 635763  560000  X       SOSN  , 376\r
+        011660' 375371  373376\r
+\r
+        011347' 636165  577245  X       SQUOZE, 707\r
+\r
+        011350' 636441  645700  X       STATO , 061\r
+        011351' 636441  646563  X       STATUS, 062\r
+        011352' 636441  647200  X       STATZ , 063\r
+        011661' 707061  062063\r
+\r
+        011353' 636457  605100  X       STOPI , 722\r
+\r
+        011354' 636542  000000  X       SUB   , 274\r
+        011355' 636542  420000  X       SUBB  , 277\r
+        011356' 636542  510000  X       SUBI  , 275\r
+        011662' 722274  277275\r
+        011357' 636542  550000  X       SUBM  , 276\r
+\r
+                                IF2,<IFE OPHSH,<SUBTL:>>\r
+        011360' 636542  646454  X       SUBTTL, 723\r
+        011361' 636560  606245  X       SUPPRE, 713\r
+        011362' 637156  000000  X       SYN   , 724\r
+        011663' 276723  713724\r
+        011363' 644160  450000  X       TAPE  , 725\r
+\r
+\r\fMACRO V.10                     PAGE 154\r
+        MACHINE INSTRUCTION SEARCH ROUTINES\r
+\r
+        011364' 644443  000000  X       TDC   , 650\r
+        011365' 644443  410000  X       TDCA  , 654\r
+        011366' 644443  450000  X       TDCE  , 652\r
+        011664' 725650  654652\r
+        011367' 644443  560000  X       TDCN  , 656\r
+        011370' 644456  000000  X       TDN   , 610\r
+        011371' 644456  410000  X       TDNA  , 614\r
+        011372' 644456  450000  X       TDNE  , 612\r
+        011665' 656610  614612\r
+        011373' 644456  560000  X       TDNN  , 616\r
+        011374' 644457  000000  X       TDO   , 670\r
+        011375' 644457  410000  X       TDOA  , 674\r
+        011376' 644457  450000  X       TDOE  , 672\r
+        011666' 616670  674672\r
+        011377' 644457  560000  X       TDON  , 676\r
+        011400' 644472  000000  X       TDZ   , 630\r
+        011401' 644472  410000  X       TDZA  , 634\r
+        011402' 644472  450000  X       TDZE  , 632\r
+        011667' 676630  634632\r
+        011403' 644472  560000  X       TDZN  , 636\r
+\r
+        011404' 645164  544500  X       TITLE , 726\r
+\r
+        011405' 645443  000000  X       TLC   , 641\r
+        011406' 645443  410000  X       TLCA  , 645\r
+        011670' 636726  641645\r
+        011407' 645443  450000  X       TLCE  , 643\r
+        011410' 645443  560000  X       TLCN  , 647\r
+        011411' 645456  000000  X       TLN   , 601\r
+        011412' 645456  410000  X       TLNA  , 605\r
+        011671' 643647  601605\r
+        011413' 645456  450000  XX      TLNE  , 603\r
+        011414' 645456  560000  XX      TLNN  , 607\r
+        011415' 645457  000000  XX      TLO   , 661\r
+        011416' 645457  410000  X       TLOA  , 665\r
+        011672' 603607  661665\r
+        011417' 645457  450000  X       TLOE  , 663\r
+        011420' 645457  560000  X       TLON  , 667\r
+        011421' 645472  000000  XX      TLZ   , 621\r
+        011422' 645472  410000  XX      TLZA  , 625\r
+        011673' 663667  621625\r
+        011423' 645472  450000  XX      TLZE  , 623\r
+        011424' 645472  560000  XX      TLZN  , 627\r
+\r
+\r\fMACRO V.10                     PAGE 155\r
+        MACHINE INSTRUCTION SEARCH ROUTINES\r
+\r
+        011425' 646243  000000  X       TRC   , 640\r
+        011426' 646243  410000  X       TRCA  , 644\r
+        011674' 623627  640644\r
+        011427' 646243  450000  X       TRCE  , 642\r
+        011430' 646243  560000  X       TRCN  , 646\r
+        011431' 646256  000000  X       TRN   , 600\r
+        011432' 646256  410000  X       TRNA  , 604\r
+        011675' 642646  600604\r
+        011433' 646256  450000  XX      TRNE  , 602\r
+        011434' 646256  560000  XX      TRNN  , 606\r
+        011435' 646257  000000  X       TRO   , 660\r
+        011436' 646257  410000  X       TROA  , 664\r
+        011676' 602606  660664\r
+        011437' 646257  450000  X       TROE  , 662\r
+        011440' 646257  560000  X       TRON  , 666\r
+        011441' 646272  000000  XX      TRZ   , 620\r
+        011442' 646272  410000  X       TRZA  , 624\r
+        011677' 662666  620624\r
+        011443' 646272  450000  X       TRZE  , 622\r
+        011444' 646272  560000  X       TRZN  , 626\r
+\r
+        011445' 646343  000000  X       TSC   , 651\r
+        011446' 646343  410000  X       TSCA  , 655\r
+        011700' 622626  651655\r
+        011447' 646343  450000  X       TSCE  , 653\r
+        011450' 646343  560000  X       TSCN  , 657\r
+        011451' 646356  000000  X       TSN   , 611\r
+        011452' 646356  410000  X       TSNA  , 615\r
+        011701' 653657  611615\r
+        011453' 646356  450000  X       TSNE  , 613\r
+\r
+        011454' 646356  560000  X       TSNN  , 617\r
+        011455' 646357  000000  X       TSO   , 671\r
+        011456' 646357  410000  X       TSOA  , 675\r
+        011702' 613617  671675\r
+        011457' 646357  450000  X       TSOE  , 673\r
+        011460' 646357  560000  X       TSON  , 677\r
+        011461' 646372  000000  X       TSZ   , 631\r
+        011462' 646372  410000  X       TSZA  , 635\r
+        011703' 673677  631635\r
+        011463' 646372  450000  X       TSZE  , 633\r
+        011464' 646372  560000  X       TSZN  , 637\r
+        011465' 646443  415454  X       TTCALL, 051\r
+        011466' 646757  634547  X       TWOSEG, 731\r
+        011704' 633637  051731\r
+        011467' 654641  000000  X       UFA   , 130\r
+        011470' 654745  644600  X       UGETF , 073\r
+        011471' 655245  560000  X       UJEN  , 100\r
+                                IFN UNIVR,<X    UNIVER, 737>\r
+        011472' 656345  645100  X       USETI , 074\r
+        011705' 130073  100074\r
+        011473' 656345  645700  X       USETO , 075\r
+\r
+\r\fMACRO V.10                     PAGE 155-1\r
+        MACHINE INSTRUCTION SEARCH ROUTINES\r
+\r
+        011474' 664162  000000  X       VAR   , 727\r
+\r
+        011475' 676442  160000  XX      WTB.  , 023\r
+\r
+        011476' 704154  540000  X       XALL  , 732\r
+        011706' 075727  023732\r
+\r
+        011477' 704364  000000  X       XCT   , 256\r
+\r
+        011500' 705451  636400  X       XLIST , 733\r
+\r
+        011501' 705762  000000  X       XOR   , 430\r
+        011502' 705762  420000  X       XORB  , 433\r
+        011707' 256733  430433\r
+        011503' 705762  510000  X       XORI  , 431\r
+        011504' 705762  550000  X       XORM  , 432\r
+\r
+        011505' 706065  564745  X       XPUNGE, 730\r
+        011506' 706744  000000  X       XWD   , 734\r
+        011710' 431432  730734\r
+\r
+        011507' 720000  000000  X       Z     , 000\r
+\r
+        011510' 164362  454600  X       .CREF , 740\r
+        011511' 165067  466255  X       .HWFRM, 742\r
+        011512' 165546  625564  X       .MFRMT, 743\r
+        011711' 000740  742743\r
+        011513' 167043  624546  X       .XCREF, 741\r
+\r
+\r
+\r\fMACRO V.10                     PAGE 156\r
+        MACHINE INSTRUCTION SEARCH ROUTINES\r
+\r
+                                IFN OPHSH,<             ;NO-OPS, OLD MNEMONICS,F4 UUOS\r
+                                X       CAI   , 300\r
+                                X       CAM   , 310\r
+                                X       CLEAR , 400\r
+                                X       CLEARB, 403\r
+                                X       CLEARI, 401\r
+                                X       CLEARM, 402\r
+                                X       JUMP  , 320\r
+                                X       JUMPA , 324\r
+                                X       SKIP  , 330\r
+                                X       RESET., 015\r
+                                X       IN.   , 016\r
+                                X       OUT.  , 017\r
+                                X       DATA. , 020\r
+                                X       FIN.  , 021\r
+                                X       RTB.  , 022\r
+                                X       WTB.  , 023\r
+                                X       MTOP. , 024\r
+                                X       SLIST., 025\r
+                                X       INF.  , 026\r
+                                X       OUTF. , 027\r
+                                X       NLI.  , 031\r
+                                X       NLO.  , 032\r
+                                >\r
+\r\fMACRO V.10                     PAGE 157\r
+        MACHINE INSTRUCTION SEARCH ROUTINES\r
+\r
+                                IFE OPHSH,<\r
+                                IF1, <  BLOCK   N1>\r
+        011514' 377777  777777  OP1END: -1B36\r
+        011515'                 OP1COD: BLOCK   N1/4\r
+        011712' 000000  000000          CC>\r
+                                IFN OPHSH,<\r
+                                IF2,<\r
+                                DEFINE SETVAL (N)<EXP   .%'N\r
+                                PURGE .%'N>\r
+                                N=0\r
+                                XLIST\r
+                                REPEAT PRIME,<SETVAL \N\r
+                                N=N+1>\r
+                                LIST\r
+                                >\r
+                                OP1COD: IF1,<   BLOCK <PRIME/4+1>>\r
+                                IF2,<\r
+                                DEFINE SETVAL (N)<EXP   .$'N\r
+                                PURGE .$'N>\r
+                                N=0\r
+                                XLIST\r
+                                REPEAT <PRIME/4+1>,<SETVAL      \N\r
+                                N=N+1>\r
+                                >\r
+                                LIST>\r
+\r
+                                IFDEF .CREF,<   .CREF   ;START CREFFING AGAIN>\r
+\r\fMACRO V.10                     PAGE 158\r
+        PERMANENT SYMBOLS\r
+\r
+                                SUBTTL  PERMANENT SYMBOLS\r
+        011713' 000000  000002  SYMNUM: EXP     LENGTH/2        ;NUMBER OF PERMANENT SYMBOLS\r
+                                DEFINE  P       (A,B)<\r
+                                        SIXBIT  /A/\r
+                                        XWD     SYMF!NOOUTF,B>\r
+\r
+        011714' 400000  000000  P       @,      0(SUPRBT)\r
+        011715' 500004  000000\r
+        011716' 373737  373737  P       ??????, 0(SUPRBT)\r
+        011717' 500004  000000\r
+\r
+                        000004  LENGTH= .-SYMNUM-1                      ;LENGTH OF INITIAL SYMBOLS\r
+\r
+        011720'                 PRMTBL:                 ;PERMANENT SYMBOLS\r
+        011720' 414443  000000  P       ADC,    24\r
+        011721' 500000  000024\r
+        011722' 416062  000000  P       APR,    0\r
+        011723' 500000  000000\r
+        011724' 434351  000000  P       CCI,    14\r
+        011725' 500000  000014\r
+        011726' 434460  000000  P       CDP,    110\r
+        011727' 500000  000110\r
+        011730' 434462  000000  P       CDR,    114\r
+        011731' 500000  000114\r
+        011732' 436041  000000  P       CPA,    0\r
+        011733' 500000  000000\r
+        011734' 436200  000000  P       CR,     150\r
+        011735' 500000  000150\r
+        011736' 444300  000000  P       DC,     200\r
+        011737' 500000  000200\r
+        011740' 444363  410000  P       DCSA,   300\r
+        011741' 500000  000300\r
+        011742' 444363  420000  P       DCSB,   304\r
+        011743' 500000  000304\r
+        011744' 444600  000000  P       DF,     270\r
+        011745' 500000  000270\r
+        011746' 445163  000000  P       DIS,    130\r
+        011747' 500000  000130\r
+        011750' 445463  000000  P       DLS,    240\r
+        011751' 500000  000240\r
+        011752' 446043  000000  P       DPC,    250\r
+        011753' 500000  000250\r
+        011754' 446353  000000  P       DSK,    170\r
+        011755' 500000  000170\r
+        011756' 446443  000000  P       DTC,    320\r
+        011757' 500000  000320\r
+        011760' 446463  000000  P       DTS,    324\r
+        011761' 500000  000324\r
+        011762' 546064  000000  P       LPT,    124\r
+        011763' 500000  000124\r
+        011764' 554446  000000  P       MDF,    260\r
+        011765' 500000  000260\r
+        011766' 556443  000000  P       MTC,    220\r
+\r\fMACRO V.10                     PAGE 158-1\r
+        PERMANENT SYMBOLS\r
+\r
+        011767' 500000  000220\r
+        011770' 556455  000000  P       MTM,    230\r
+        011771' 500000  000230\r
+        011772' 556463  000000  P       MTS,    224\r
+        011773' 500000  000224\r
+        011774' 604147  000000  P       PAG,    10\r
+        011775' 500000  000010\r
+        011776' 605100  000000  P       PI,     4\r
+        011777' 500000  000004\r
+        012000' 605464  000000  P       PLT,    140\r
+        012001' 500000  000140\r
+        012002' 606460  000000  P       PTP,    100\r
+        012003' 500000  000100\r
+        012004' 606462  000000  P       PTR,    104\r
+        012005' 500000  000104\r
+\r
+        012006' 645543  000000  P       TMC,    340\r
+        012007' 500000  000340\r
+        012010' 645563  000000  P       TMS,    344\r
+        012011' 500000  000344\r
+        012012' 646471  000000  P       TTY,    120\r
+        012013' 500000  000120\r
+        012014' 656443  000000  P       UTC,    210\r
+        012015' 500000  000210\r
+        012016' 656463  000000  P       UTS,    214\r
+        012017' 500000  000214\r
+                                IFE LNSSW,<     XLIST   >\r
+                                        LIST\r
+        012020'                 PRMEND:                         ;END OF PERMANENT SYMBOLS\r
+\r
+\r\fMACRO V.10                     PAGE 159\r
+        PERMANENT SYMBOLS\r
+\r
+                                        OPDEF   ZL      [Z      LITF]   ;INVALID IN LITERALS\r
+                                        OPDEF   ZA      [Z      ADDF]   ;INVALID IN ADDRESSES\r
+                                        OPDEF   ZAL     [Z      ADDF!LITF]\r
+\r
+        012020'                 OP1TAB:\r
+\r
+        012020' 000000  110407'         ZA      PAGE0                   ;PAGE\r
+        012021' 000000  303066'         ZAL     PASS20                  ;PASS2\r
+        012022' 000000  304017'         ZAL     PHASE0                  ;PHASE\r
+        012023' 000000  004561'         Z       POINT0                  ;POINT\r
+        012024' 000000  103342'         ZA      PRNTX0                  ;PRINTX\r
+        012025' 000000  104317'         ZA      PURGE0                  ;PURGE\r
+        012026' 000000  103306'         ZA      RADIX0                  ;RADIX\r
+        012027' 000000  004667'         Z       RADX50                  ;RADIX50,SQUOZE\r
+        012030' 000001  304114'         ZAL     LOC0    (1)             ;RELOC\r
+        012031' 000000  303361'         ZAL     REMAR0                  ;REMARK\r
+        012032' 000000  105070'         ZA      REPEA0                  ;REPEAT\r
+        012033' 000000  104161'         ZA      SUPRE0                  ;SUPRESS\r
+        012034' 000000  304712'         ZAL     PSEND0                  ;PRGEND\r
+        012035' 000400  310072'         ZAL     RIM0    (RIMSW)         ;RIM\r
+        012036' 700040  004352'         DATAI   0,IOP                   ;RSW\r
+        012037' 000001  004515'         Z       ASCII0  (1)             ;SIXBIT\r
+        012040' 004001  303315'         ZAL     IOSET   (IOPALL!IOSALL) ;SALL\r
+                                IFN UNIVR,<     ZAL     SERCH0                  ;SEARCH>\r
+        012041' 000000  000000  IFE UNIVR,<     Z       0>\r
+        012042' 000000  106125'         ZA      STOPI0                  ;STOPI\r
+        012043' 440700  104220'         ZA      SUBTT0  (Z (POINT 7,,)) ;SUBTTL\r
+        012044' 000000  104261'         ZA      SYN0                    ;SYN\r
+        012045' 000000  303304'         ZAL     TAPE0                   ;TAPE\r
+        012046' 440700  104207'         ZA      TITLE0  (Z (POINT 7,,)) ;TITLE\r
+        012047' 000000  303457'         ZAL     VAR0                    ;VAR\r
+\r
+        012050' 000000  004177'         Z       XPUNG0                  ;XPUNGE\r
+        012051' 000000  303360'         ZAL     TWSEG0                  ;TWOSEGMENTS\r
+        012052' 004000  303314'         ZAL     XALL0   (IOPALL)        ;XALL\r
+        012053' 040000  303315'         ZAL     IOSET   (IOPROG)        ;XLIST\r
+        012054' 000000  004601'         Z       XWD0                    ;XWD\r
+        012055' 000100  310072'         ZAL     RIM0    (RIM1SW)        ;RIM10\r
+        012056' 004000  310072'         ZAL     RIM0    (R1BSW)         ;RIM10B\r
+                                IFN UNIVR,<     ZA      UNIV0   (Z (POINT 7,,)) ;UNIVERSAL>\r
+        012057' 000000  000000  IFE UNIVR,<     Z       0       ;UNIVERSAL>\r
+        012060' 002000  303322'         ZAL     IORSET  (IONCRF)        ;.CREF\r
+        012061' 002000  303315'         ZAL     IOSET   (IONCRF)        ;.XCREF\r
+        012062' 000000  103360'         ZA      OFFORM                  ;.HWFRMT\r
+        012063' 000000  103360'         ZA      ONFORM                  ;.MFRMT\r
+\r\fMACRO V.10                     PAGE 160\r
+        PERMANENT SYMBOLS\r
+\r
+        012064'                 OP2TAB:\r
+\r
+        012064' 000000  004515'         Z       ASCII0  (0)             ;ASCII\r
+        012065' 400000  004515'         Z       ASCII0  (1B18)          ;ASCIZ\r
+        012066' 700000  004352'         BLKI    IOP                     ;BLKI\r
+        012067' 700100  004352'         BLKO    IOP                     ;BLKO\r
+        012070' 000000  303326'         ZAL     BLOCK0                  ;BLOCK\r
+        012071' 000000  104172'         ZA      SUPRSA                  ;ASUPPRESS\r
+        012072' 000000  303360'         ZAL     HISEG0                  ;HISEG\r
+        012073' 000000  004631'         Z       BYTE0                   ;BYTE\r
+        012074' 700240  004352'         CONI    IOP                     ;CONI\r
+        012075' 700200  004352'         CONO    IOP                     ;CONO\r
+        012076' 700340  004352'         CONSO   IOP                     ;CONSO\r
+        012077' 700300  004352'         CONSZ   IOP                     ;CONSZ\r
+        012100' 700040  004352'         DATAI   IOP                     ;DATAI\r
+        012101' 700140  004352'         DATAO   IOP                     ;DATAO\r
+        012102' 000012  004466'         Z       OCT0    (^D10)          ;DEC\r
+        012103' 000000  105211'         ZA      DEFIN0                  ;DEFINE\r
+\r
+        012104' 000000  304015'         ZAL     DEPHA0                  ;DEPHASE\r
+        012105' 000000  303037'         ZAL     END0                    ;END\r
+        012106' 000600  103677'         ZA      INTER0  (INTF!ENTF)     ;ENTRY\r
+        012107' 000000  004465'         Z       EXPRES                  ;EXP\r
+        012110' 000000  103715'         ZA      EXTER0                  ;EXTERN\r
+        012111' 254200  004354'         JRST    4,OP                    ;HALT\r
+        012112' 607640  003540'         TLNN    FR,IFPASS               ;IF1\r
+        012113' 603640  003540'         TLNE    FR,IFPASS               ;IF2\r
+\r
+        012114' 602000  003543'         TRNE    AC0,IFB0                ;IFB\r
+        012115' 603240  003600'         TLNE    ARG,IFDEF0              ;IFDEF\r
+        012116' 000000  003610'         Z       IFIDN0  (0)             ;IFDIF\r
+        012117' 332000  003512'         SKIPE   IF                      ;IFE\r
+        012120' 337000  003512'         SKIPG   IF                      ;IFG\r
+        012121' 335000  003512'         SKIPGE  IF                      ;IFGE\r
+        012122' 000001  003610'         Z       IFIDN0  (1)             ;IFIDN\r
+        012123' 331000  003512'         SKIPL   IF                      ;IFL\r
+\r
+        012124' 333000  003512'         SKIPLE  IF                      ;IFLE\r
+        012125' 336000  003512'         SKIPN   IF                      ;IFN\r
+        012126' 606000  003543'         TRNN    AC0,IFB0                ;IFNB\r
+        012127' 607240  003600'         TLNN    ARG,IFDEF0              ;IFNDEF\r
+        012130' 000400  103677'         ZA      INTER0  (INTF)          ;INTERN\r
+        012131' 000000  004617'         Z       IOWD0                   ;IOWD\r
+        012132' 000000  005777'         Z       IRP0    (0)             ;IRP\r
+        012133' 400000  005777'         Z       IRP0    (400000)        ;IRPC\r
+\r
+        012134' 255300  004354'         JFCL    6,OP                    ;JCRY\r
+        012135' 255200  004354'         JFCL    4,OP                    ;JCRY0\r
+        012136' 255100  004354'         JFCL    2,OP                    ;JCRY1\r
+        012137' 254500  004354'         JRST    12,OP                   ;JEN\r
+        012140' 255400  004354'         JFCL    10,OP                   ;JOV\r
+        012141' 254100  004354'         JRST    2,OP                    ;JRSTF\r
+        012142' 004001  303322'         ZAL     IORSET  (IOPALL!IOSALL) ;LALL\r
+\r\fMACRO V.10                     PAGE 160-1\r
+        PERMANENT SYMBOLS\r
+\r
+        012143' 040000  303322'         ZAL     IORSET  (IOPROG)        ;LIST\r
+        012144' 000000  303365'         ZAL     LIT0                    ;LIT\r
+        012145' 000000  304114'         ZAL     LOC0    (0)             ;LOC\r
+        012146' 000000  104157'         ZA      OFFSYM                  ;NOSYM\r
+        012147' 000010  004466'         Z       OCT0    (^D8)           ;OCT\r
+        012150' 000000  103764'         ZA      OPDEF0                  ;OPDEF\r
+        012151' 255040  004354'         JFCL    1,OP                    ;JFOV\r
+        012152' 000000  104154'         ZA      ONML                    ;MLON\r
+        012153' 000000  104155'         ZA      OFFML                   ;MLOFF\r
+        012154' 600000  004515'         Z       ASCII0  (3B19)          ;COMMENT\r
+                                IFN IIISW,<\r
+                                        Z       ASCII0  (5B20)          ;ASCID>\r
+\r\fMACRO V.10                     PAGE 161\r
+        PERMANENT SYMBOLS\r
+\r
+\r
+                                REPEAT 0,<CALTBL:\r
+                                                                ;USER DEFINED CALLI'S GO HERE\r
+                                        SIXBIT  /LIGHTS/        ;-1\r
+                                CALLI0: SIXBIT  /RESET/         ; 0\r
+                                        SIXBIT  /DDTIN/         ; 1\r
+                                        SIXBIT  /SETDDT/        ; 2\r
+                                        SIXBIT  /DDTOUT/        ; 3\r
+                                        SIXBIT  /DEVCHR/        ; 4\r
+                                        SIXBIT  /DDTGT/         ; 5\r
+                                        SIXBIT  /GETCHR/        ; 6\r
+                                        SIXBIT  /DDTRL/         ; 7\r
+                                        SIXBIT  /WAIT/          ;10\r
+                                        SIXBIT  /CORE/          ;11\r
+                                        SIXBIT  /EXIT/          ;12\r
+                                        SIXBIT  /UTPCLR/        ;13\r
+                                        SIXBIT  /DATE/          ;14\r
+                                        SIXBIT  /LOGIN/         ;15\r
+                                        SIXBIT  /APRENB/        ;16\r
+                                        SIXBIT  /LOGOUT/        ;17\r
+                                        SIXBIT  /SWITCH/        ;20\r
+                                        SIXBIT  /REASSI/        ;21\r
+                                        SIXBIT  /TIMER/         ;22\r
+                                        SIXBIT  /MSTIME/        ;23\r
+                                        SIXBIT  /GETPPN/        ;24\r
+                                        SIXBIT  /TRPSET/        ;25\r
+                                        SIXBIT  /TRPJEN/        ;26\r
+                                        SIXBIT  /RUNTIM/        ;27\r
+                                        SIXBIT  /PJOB/          ;30\r
+                                        SIXBIT  /SLEEP/         ;31\r
+                                        SIXBIT  /SETPOV/        ;32\r
+                                        SIXBIT  /PEEK/          ;33\r
+                                        SIXBIT  /GETLIN/        ;34\r
+                                        SIXBIT  /RUN/           ;35\r
+                                        SIXBIT  /SETUWP/        ;36\r
+                                        SIXBIT  /REMAP/         ;37\r
+                                        SIXBIT  /GETSEG/        ;40\r
+                                        SIXBIT  /GETTAB/        ;41\r
+                                        SIXBIT  /SPY/           ;42\r
+                                        SIXBIT  /SETNAM/        ;43\r
+                                        SIXBIT  /TMPCOR/        ;44\r
+                                        SIXBIT  /DSKCHR/        ;45\r
+                                        SIXBIT  /SYSSTR/        ;46\r
+                                        SIXBIT  /JOBSTR/        ;47\r
+                                        SIXBIT  /STRUUO/        ;50\r
+                                        SIXBIT  /SYSPHY/        ;51\r
+                                        SIXBIT  /FRECHN/        ;52\r
+                                        SIXBIT  /DEVTYP/        ;53\r
+                                        SIXBIT  /DEVSTS/        ;54\r
+                                        SIXBIT  /DEVPPN/        ;55\r
+                                        SIXBIT  /SEEK/          ;56\r
+                                        SIXBIT  /RTTRP/         ;57\r
+                                        SIXBIT  /LOCK/          ;60\r
+\r\fMACRO V.10                     PAGE 161-1\r
+        PERMANENT SYMBOLS\r
+\r
+                                        SIXBIT  /JOBSTS/        ;61\r
+                                        SIXBIT  /LOCATE/        ;62\r
+                                        SIXBIT  /WHERE/         ;63\r
+                                        SIXBIT  /DEVNAM/        ;64\r
+                                        SIXBIT  /CTLJOB/        ;65\r
+                                        SIXBIT  /GOBSTR/        ;66\r
+                                        0                       ;67\r
+                                        0                       ;70\r
+                                        SIXBIT  /HPQ/           ;71\r
+                                        SIXBIT  /HIBER/         ;72\r
+                                        SIXBIT  /WAKE/          ;73\r
+                                        SIXBIT  /CHGPPN/        ;74\r
+                                        SIXBIT  /SETUUO/        ;75\r
+                                        SIXBIT  /DEVGEN/        ;76\r
+                                        SIXBIT  /OTHUSR/        ;77\r
+                                        SIXBIT  /CHKACC/        ;100\r
+                                        SIXBIT  /DEVSIZ/        ;101\r
+                                        SIXBIT  /DAEMON/        ;102\r
+                                        SIXBIT  /JOBPEK/        ;103\r
+                                        SIXBIT  /ATTACH/        ;104\r
+                                        SIXBIT  /DAEFIN/        ;105\r
+                                        SIXBIT  /FRCUUO/        ;106\r
+                                        SIXBIT  /DEVLNM/        ;107\r
+                                        SIXBIT  /PATH./         ;110\r
+                                \r
+                                CALNTH==.-CALTBL\r
+                                NEGCAL==CALLI0-CALTBL           ;NUMBER OF NEGATIVE CALLI'S\r
+                                >\r
+        012155' 515643  506267  TTCTBL: SIXBIT  /INCHRW/        ; 0     INPUT A CHAR. AND WAIT\r
+        012156' 576564  435062          SIXBIT  /OUTCHR/        ; 1     OUTPUT A CHAR.\r
+        012157' 515643  506263          SIXBIT  /INCHRS/        ; 2     INPUT A CHAR. AND SKIP\r
+        012160' 576564  636462          SIXBIT  /OUTSTR/        ; 3     OUTPUT A STRING\r
+        012161' 515643  506754          SIXBIT  /INCHWL/        ; 4     INPUT CHAR., WAIT, LINE MODE\r
+        012162' 515643  506354          SIXBIT  /INCHSL/        ; 5     INPUT CHAR., SKIP, LINE MODE\r
+        012163' 474564  544350          SIXBIT  /GETLCH/        ; 6     GET LINE CHARACTERISTICS\r
+        012164' 634564  544350          SIXBIT  /SETLCH/        ; 7     SET LINE CHARACTERISTICS\r
+        012165' 624563  434156          SIXBIT  /RESCAN/        ;10     RESET INPUT STREAM TO COMMAND\r
+        012166' 435462  424651          SIXBIT  /CLRBFI/        ;11     CLEAR TYPEIN BUFFER\r
+        012167' 435462  424657          SIXBIT  /CLRBFO/        ;12     CLEAR TYPEOUT BUFFER\r
+        012170' 635360  515643          SIXBIT  /SKPINC/        ;13     SKIPS IF A CHAR. CAN BE INPUT\r
+        012171' 635360  515654          SIXBIT  /SKPINL/        ;14     SKIPS IF A LINE CAN BE INPUT\r
+        012172' 515756  455765          SIXBIT  /IONEOU/        ;15     OUTPUT AS AN IMAGE CHAR.\r
+\r
+                        000016  TTCLTH==.-TTCTBL\r
+                                        SUBTTL  USER-DEFINED SYMBOL SEARCH ROUTINES\r
+        012173' 260740  012313' MSRCH:  PUSHJ   PP,SEARCH       ;PERFORM GENERAL SEARCH\r
+        012174' 263740  000000          POPJ    PP,             ;NOT FOUND, EXIT\r
+        012175' 327240  012202'         JUMPG   ARG,MSRCH2      ;SKIP-EXIT AND CROSS-REF IF FOUND\r
+        012176' 312004  000001          CAME    AC0,1(SX)       ;WE ARE LOOKING AT SYMBOL, TRY ONE ABOVE\r
+        012177' 263740  000000          POPJ    PP,             ;NO, EXIT\r
+        012200' 271200  000002          ADDI    SX,2            ;YES, POINT TO IT\r
+        012201' 260740  012336'         PUSHJ   PP,SRCH5        ;LOAD REGISTERS\r
+        012202' 354017  000000  MSRCH2: AOSA    0(PP)           ;SET SKIP-EXIT\r
+\r\fMACRO V.10                     PAGE 161-2\r
+        USER-DEFINED SYMBOL SEARCH ROUTINES\r
+\r
+        012203' 321240  012220' QSRCH:  JUMPL   ARG,SSRCH3      ;BRANCH IF OPERAND\r
+        012204' 201140  000005          MOVEI   SDEL,%MAC       ;SET OPERATOR FLAG\r
+        012205' 623600  000040          TLZE IO,DEFCRS  ;IS IT A DEFINITION?\r
+        012206' 201140  000006          MOVEI SDEL,%DMAC        ;YES\r
+        012207' 254000  012221'         JRST    CREF            ;CROSS-REF AND EXIT\r
+\r
+        012210' 260740  012313' SSRCH:  PUSHJ   PP,SEARCH       ;PERFORM GENERAL SEARCH\r
+        012211' 263740  000000          POPJ    PP,             ;NOT FOUND, EXIT\r
+        012212' 321240  012217'         JUMPL   ARG,SSRCH2      ;SKIP-EXIT AND CROSS-REF IF FOUND\r
+        012213' 312004  777775  SSRCH1: CAME    AC0,-3(SX)      ;WE ARE LOOKING AT MACRO, LOOK ONE SLOT BELOW\r
+        012214' 263740  000000          POPJ    PP,             ;NO DICE, EXIT\r
+        012215' 275200  000002          SUBI    SX,2            ;YES, POINT TO IT\r
+        012216' 260740  012336'         PUSHJ   PP,SRCH5        ;LOAD REGISTERS\r
+        012217' 350017  000000  SSRCH2: AOS     0(PP)           ;SET FOR SKIP-EXIT\r
+        012220' 201140  000001  SSRCH3: MOVEI   SDEL,%SYM       ;SET OPERAND FLAG\r
+\r
+        012221' 607600  002000  CREF:   TLNN    IO,IONCRF       ;NO CREFFING FOR THIS SYMBOL?\r
+        012222' 603640  402000          TLNE    FR,P1!CREFSW    ;PASS ONE OR CROSS-REF SUPPRESSION?\r
+        012223' 263740  000000          POPJ    PP,             ;YES, EXIT\r
+        012224' 250140  000007          EXCH    SDEL,C          ;PUT FLAG IN C, SACE C\r
+        012225' 261740  000010          PUSH    PP,CS\r
+        012226' 603600  000400          TLNE IO,IOCREF          ;HAVE WE PUT OUT THE 177,102\r
+        012227' 254000  012241'         JRST CREF3              ;YES\r
+        012230' 261740  000007          PUSH PP,C               ;START OF CREF DATA\r
+\r
+\r\fMACRO V.10                     PAGE 162\r
+        USER-DEFINED SYMBOL SEARCH ROUTINES\r
+\r
+                                REPEAT 0,<      ;NEEDS CHANGE TO CREF\r
+                                        MOVEI C,177\r
+                                        PUSHJ PP,OUTLST\r
+                                        MOVEI C,102\r
+                                        PUSHJ PP,OUTLST\r
+                                        TLO IO,IOCREF   ;WE NOW ARE IN THAT STATE\r
+                                        POP PP,C        ;WE HAVE NOW\r
+                                CREF3:  JUMPE C,NOFLG           ;JUST CLOSE IT\r
+                                        PUSHJ   PP,OUTLST       ;TYPE OF SYMBOL (%MAC,%DMAC,%SYM)\r
+                                        MOVSI CS,770000         ;COUNT CHRS\r
+                                        TDZA C,C        ;STARTING AT 0\r
+                                        LSH CS,-6       ;TRY NEXT\r
+                                        TDNE AC0,CS     ;IS THAT ONE THERE?\r
+                                        AOJA C,.-2      ;YES\r
+                                        PUSHJ PP,OUTLST         ;PRINT NUMBER OF SYMBOL CONSTITUENTS\r
+                                        MOVE    CS,AC0\r
+                                \r
+                                CREF2:  MOVEI   C,0\r
+                                        LSHC    C,6\r
+                                        ADDI    C,40\r
+                                        PUSHJ   PP,OUTLST       ;THE ASCII SYMBOL\r
+                                        JUMPN   CS,CREF2\r
+                                        MOVEI   C,%DSYM\r
+                                        TLZE    IO,DEFCRS\r
+                                        PUSHJ   PP,OUTLST       ;MARK IT AS A DEFINING OCCURENCE\r
+                                NOFLG:  MOVE    C,SDEL\r
+                                        POP     PP,CS\r
+                                        POPJ    PP,\r
+                                \r
+                                CLSCRF: TRNN ER,LPTSW\r
+                                        POPJ PP,        ;LEAVE IF WE SHOULD NOT BE PRINTING\r
+                                CLSCR2: MOVEI C,177\r
+                                        PUSHJ PP,PRINT\r
+                                        TLZE IO,IOCREF  ;WAS IT OPEN?\r
+                                        JRST CLSCR1     ;YES, JUST CLOSE IT\r
+                                        MOVEI C,102     ;NO, OPEN IT FIRST\r
+                                        PUSHJ PP,OUTLST         ;MARK BEGINNING OF CREF DATA\r
+                                        MOVEI C,177\r
+                                        PUSHJ PP,OUTLST\r
+                                CLSCR1: MOVEI C,103\r
+                                        JRST OUTLST             ;MARK END OF CREF DATA\r
+                                \r
+                                CLSC3:  TLZ IO,IOCREF\r
+                                        MOVEI C,177\r
+                                        PUSHJ PP,OUTLST\r
+                                        MOVEI C,104\r
+                                        JRST OUTLST     ;177,104 CLOSES IT FOR NOW\r
+                                >       ;END OF REPEAT 0\r
+\r\fMACRO V.10                     PAGE 163\r
+        USER-DEFINED SYMBOL SEARCH ROUTINES\r
+\r
+                                REPEAT 1,<                      ;WORKS WITH EXISTING CREF\r
+        012231' 603600  000100          TLNE IO,IOPAGE\r
+        012232' 260740  012264'         PUSHJ PP,CRFHDR         ;GET CORRECT SUBTTL\r
+        012233' 201340  000177          MOVEI C,177\r
+        012234' 260740  010403'         PUSHJ PP,OUTLST\r
+        012235' 201340  000102          MOVEI C,102\r
+        012236' 260740  010403'         PUSHJ PP,OUTLST\r
+        012237' 661600  000400          TLO IO,IOCREF   ;WE NOW ARE IN THAT STATE\r
+        012240' 262740  000007          POP PP,C        ;WE HAVE NOW\r
+        012241' 260740  010403' CREF3:  PUSHJ   PP,OUTLST       ;TYPE OF SYMBOL (%MAC,%DMAC,%SYM)\r
+        012242' 205400  770000          MOVSI CS,770000         ;COUNT CHRS\r
+        012243' 634340  000007          TDZA C,C        ;STARTING AT 0\r
+        012244' 242400  777772          LSH CS,-6       ;TRY NEXT\r
+        012245' 612000  000010          TDNE AC0,CS     ;IS THAT ONE THERE?\r
+        012246' 344340  012244'         AOJA C,.-2      ;YES\r
+        012247' 260740  010403'         PUSHJ PP,OUTLST         ;PRINT NUMBER OF SYMBOL CONSTITUENTS\r
+        012250' 200400  000000          MOVE    CS,AC0\r
+\r
+        012251' 201340  000000  CREF2:  MOVEI   C,0\r
+        012252' 246340  000006          LSHC    C,6\r
+        012253' 271340  000040          ADDI    C,40\r
+        012254' 260740  010403'         PUSHJ   PP,OUTLST       ;THE ASCII SYMBOL\r
+        012255' 326400  012251'         JUMPN   CS,CREF2\r
+        012256' 201340  000002          MOVEI   C,%DSYM\r
+        012257' 623600  000040          TLZE    IO,DEFCRS\r
+        012260' 260740  010403'         PUSHJ   PP,OUTLST       ;MARK IT AS A DEFINING OCCURENCE\r
+        012261' 200340  000003          MOVE    C,SDEL\r
+        012262' 262740  000010          POP     PP,CS\r
+        012263' 263740  000000          POPJ    PP,\r
+\r
+                                IFN OPHSH,<\r
+                                SUBTL:  SIXBIT  /SUBTTL/>\r
+        012264' 312000  011360' CRFHDR: CAME    AC0,SUBTL       ;IS FIRST SYMBOL "SUBTTL"\r
+        012265' 254000  012272'         JRST    CRFHD1          ;NO\r
+        012266' 510000  000006          HLLZ    AC0,V\r
+        012267' 260740  004220'         PUSHJ   PP,SUBTT0       ;UPDATE SUBTTL\r
+        012270' 200000  011360'         MOVE    AC0,SUBTL       ;RESTORE ARG.\r
+        012271' 201300  003360'         MOVEI   V,CPOPJ\r
+        012272' 201340  000000  CRFHD1: MOVEI   C,0\r
+        012273' 254000  010325'         JRST    OUTL\r
+\r
+        012274'                 CLSC3:\r
+        012274' 606600  000002  CLSCRF: TRNN ER,LPTSW\r
+        012275' 263740  000000          POPJ PP,        ;LEAVE IF WE SHOULD NOT BE PRINTING\r
+        012276' 623600  000400  CLSCR2: TLZE IO,IOCREF  ;FINISH UP LINE\r
+        012277' 254000  012307'         JRST CLSCR1\r
+        012300' 201340  000000          MOVEI   C,0\r
+        012301' 603600  000100          TLNE    IO,IOPAGE       ;NEW PAGE?\r
+        012302' 260740  010325'         PUSHJ   PP,OUTL         ;YES,GIVE IT A ROUSING SENDOFF!\r
+        012303' 201340  000177          MOVEI C,177\r
+        012304' 260740  010403'         PUSHJ PP,OUTLST\r
+        012305' 201340  000102          MOVEI C,102\r
+        012306' 260740  010403'         PUSHJ PP,OUTLST         ;MARK BEGINNING OF CREF DATA\r
+\r\fMACRO V.10                     PAGE 163-1\r
+        USER-DEFINED SYMBOL SEARCH ROUTINES\r
+\r
+        012307' 201340  000177  CLSCR1: MOVEI C,177\r
+        012310' 260740  010403'         PUSHJ PP,OUTLST\r
+        012311' 201340  000103          MOVEI C,103\r
+        012312' 254000  010403'         JRST OUTLST             ;MARK END OF CREF DATA\r
+                                >       ;END OF REPEAT 1\r
+\r\fMACRO V.10                     PAGE 164\r
+        USER-DEFINED SYMBOL SEARCH ROUTINES\r
+\r
+        012313' 554200  013077' SEARCH: HLRZ    SX,SRCHX\r
+        012314' 550140  013077'         HRRZ    SDEL,SRCHX\r
+\r
+        012315' 311004  777777  SRCH1:  CAML    AC0,-1(SX)\r
+        012316' 254000  012325'         JRST    SRCH3\r
+        012317' 274200  000003  SRCH2:  SUB     SX,SDEL\r
+        012320' 242140  777777          LSH     SDEL,-1\r
+        012321' 317200  013103'         CAMG    SX,SYMTOP\r
+        012322' 326140  012315'         JUMPN   SDEL,SRCH1\r
+        012323' 326140  012317'         JUMPN   SDEL,SRCH2\r
+        012324' 364200  012361'         SOJA    SX,SRCHNO       ;NOT FOUND\r
+\r
+        012325' 316004  777777  SRCH3:  CAMN    AC0,-1(SX)\r
+        012326' 254000  012335'         JRST    SRCH4           ;NORMAL / FOUND EXIT\r
+        012327' 270200  000003          ADD     SX,SDEL\r
+        012330' 242140  777777          LSH     SDEL,-1\r
+        012331' 317200  013103'         CAMG    SX,SYMTOP\r
+        012332' 326140  012315'         JUMPN   SDEL,SRCH1\r
+        012333' 326140  012317'         JUMPN   SDEL,SRCH2\r
+        012334' 364200  012361'         SOJA    SX,SRCHNO       ;NOT FOUND\r
+\r
+        012335' 350017  000000  SRCH4:  AOS     0(PP)           ;SET FOR SKIP EXIT\r
+        012336' 205240  000004  SRCH5:  MOVSI ARG,SUPRBT        ;HE IS USING IT, TURN OFF BIT\r
+        012337' 412244  000000          ANDCAM ARG,(SX) ; IN THE TABLE\r
+        012340' 200244  000000  SRCH7:  MOVE ARG,0(SX)          ;FLAG AND VALUE TO ARG\r
+        012341' 135440  003303'         LDB     RC,RCPNTR       ;POINT 1,ARG,17\r
+        012342' 603240  000002          TLNE ARG,LELF   ;CHECK LEFT RELOCATE\r
+        012343' 661440  000001          TLO RC,1\r
+        012344' 550300  000005          HRRZ    V,ARG\r
+        012345' 603240  000010          TLNE ARG,SPTR   ;CHECK SPECIAL EXTESN POINTER\r
+        012346' 254000  012352'         JRST SRCH6\r
+        012347' 603240  004000          TLNE    ARG,PNTF\r
+        012350' 200305  000000          MOVE    V,0(ARG)                ;36BIT VALUE TO V\r
+        012351' 254000  012363'         JRST    SRCHOK\r
+        \r
+        012352' 200305  000000  SRCH6:  MOVE V,0(ARG)   ;VALUE\r
+        012353' 200445  000001          MOVE RC,1(ARG)  ;AND RELOC\r
+        012354' 603440  777776          TLNE RC,-2      ;CHECK AND SET EXTPNT\r
+        012355' 502440  013270'         HLLM RC,EXTPNT\r
+        012356' 602440  777776          TRNE RC,-2      \r
+        012357' 542440  013270'         HRRM RC,EXTPNT\r
+        012360' 254000  012363'         JRST    SRCHOK\r
+        012361'                 SRCHNO:IFN UNIVR,<SKIPN UNISCH+1        ;ALLOWED TO SEARCH OTHER TABLES>\r
+        012361' 263740  000000          POPJ    PP,             ;NO, JUST RETURN\r
+                                IFN UNIVR,<AOS  V,UNISCH        ;GET NEXT INDEX TO TABLE\r
+                                        CAIE    V,1             ;FIRST TIME IN\r
+                                        JRST    SRCHN1          ;YES, SAVE SYMBOL INFO\r
+                                        HRLM    SX,UNISCH       ;SAVE SX AND SET FLAG\r
+                                        MOVE    ARG,SRCHX       ;SEARCH POINTER\r
+                                        MOVEM   ARG,UNISHX      ;TO A SAFE PLACE\r
+                                        HRR     ARG,SYMBOL\r
+                                        HRL     ARG,SYMTOP\r
+                                        MOVEM   ARG,UNIPTR      ;STORE ALSO\r
+\r\fMACRO V.10                     PAGE 164-1\r
+        USER-DEFINED SYMBOL SEARCH ROUTINES\r
+\r
+                                SRCHN1: MOVE    V,UNISCH(V)     ;GET TRUE INDEX\r
+                                        JUMPE   V,SRCHKO        ;IF ZERO ALL TABLE SCANNED\r
+                                        MOVE    ARG,UNISHX(V)   ;NEW SRCHX\r
+                                        MOVEM   ARG,SRCHX       ;SET IT UP\r
+                                        MOVE    ARG,UNIPTR(V)   ;SYMTOP,,SYMBOL\r
+                                        HRRZM   ARG,SYMBOL\r
+                                        HLRZM   ARG,SYMTOP\r
+                                        JRST    SEARCH          ;TRY AGAIN>\r
+\r
+        012362' 400240  000000  SRCHKO: SETZ    ARG,            ;CLEAR ARG SO ZERO STORED\r
+        012363'                 SRCHOK: IFN UNIVR,<SKIPN        UNISCH          ;HAVE WE SEARCH OTHER TABLES>\r
+        012363' 263740  000000          POPJ    PP,             ;NO, JUST RETURN\r
+                                IFN UNIVR,<\r
+                                SYMBCK: HLRZ    SX,UNISCH       ;RESTORE SX\r
+                                        SETZM   UNISCH          ;CLEAR SYMBCK FLAG\r
+                                        PUSH    PP,V            ;SAVE AN AC\r
+                                        MOVE    V,UNISHX        ;SRCHX\r
+                                        MOVEM   V,SRCHX         ;RESTORE ORIGINAL\r
+                                        MOVE    V,UNIPTR        ;SYMTOP,,SYMBOL\r
+                                        HRRZM   V,SYMBOL\r
+                                        HLRZM   V,SYMTOP\r
+                                        JUMPE   ARG,SRCHK2      ;TOTALLY UNDEFINED\r
+                                        PUSH    PP,RC           ;SAVE SOME ACCS\r
+                                        PUSH    PP,ARG\r
+                                        PUSH    PP,EXTPNT\r
+                                        SETZB   ARG,EXTPNT      ;CLEAR ALL SYMBOL DATA\r
+                                        SETZB   RC,V\r
+                                        PUSHJ   PP,INSERT       ;INSERT SYMBOL IN TABLE\r
+                                        POP     PP,EXTPNT       ;RESTORE ACCS ETC.\r
+                                        POP     PP,ARG\r
+                                        POP     PP,RC\r
+                                        MOVEM   ARG,(SX)        ;SET FLAGS AND VALUE AS IT SHOULD BE\r
+                                SRCHK2: POP     PP,V\r
+                                        POPJ    PP,             ;RETURN>\r
+\r
+\r\fMACRO V.10                     PAGE 165\r
+        USER-DEFINED SYMBOL SEARCH ROUTINES\r
+\r
+        012364' 603240  002100  INSERQ: TLNE    ARG,UNDF!VARF\r
+        012365' 403440  000006  INSERZ: SETZB   RC,V\r
+        012366' 312004  777777  INSERT: CAME    AC0,-1(SX)      ;ARE WE LOOKING AT MATCHING MNEMONIC?\r
+        012367' 254000  012377'         JRST    INSRT2          ;NO, JUST INSERT\r
+        012370' 321240  012374'         JUMPL   ARG,INSRT1      ;YES, BRANCH IF OPERAND\r
+        012371' 331004  000000          SKIPL   0(SX)           ;OPERATOR, ARE WE LOOKING AT ONE?\r
+        012372' 254000  012467'         JRST    UPDATE          ;YES, UPDATE\r
+        012373' 254000  012377'         JRST    INSRT2          ;NO, INSERT\r
+\r
+        012374' 337004  000000  INSRT1: SKIPG   0(SX)           ;OPERAND, ARE WE LOOKING AT ONE?\r
+        012375' 254000  012467'         JRST    UPDATE          ;YES, UPDATE\r
+        012376' 275200  000002          SUBI    SX,2            ;NO, MOVE UNDER OPERATOR AND INSERT\r
+        012377' 200140  013102' INSRT2: MOVE    SDEL,SYMBOL\r
+        012400' 275140  000002          SUBI    SDEL,2\r
+        012401' 313140  012727'         CAMLE   SDEL,FREE\r
+        012402' 254000  012405'         JRST    INSRT3\r
+        012403' 260740  010014'         PUSHJ   PP,XCEEDS\r
+        012404' 271140  002000          ADDI    SDEL,2000\r
+        012405' 202140  013102' INSRT3: MOVEM   SDEL,SYMBOL     ;MAKE ROOM FOR A TWO WORD ENTRY\r
+        012406' 505143  000002          HRLI    SDEL,2(SDEL)\r
+        012407' 251144  777776          BLT     SDEL,-2(SX)     ;PUSH EVERYONE DOWN TWO LOACTIONS\r
+        012410' 350020  013102'         AOS     @SYMBOL         ;INCREMENT THE SYMBOL COUNT\r
+        012411' 607440  777776          TLNN RC,-2      ;NEED SPECIAL?\r
+        012412' 602440  777776          TRNE RC,-2      ;LEFT OR RIGHT EXTERNAL?\r
+        012413' 254000  012434'         JRST INSRT5     ;YES, JUMP\r
+        012414' 607300  777777          TLNN    V,-1            ;SKIP IF V IS A 36BIT VALUE\r
+        012415' 254000  012424'         JRST    INSRT4          ;JUMP, ITS A 18BIT VALUE\r
+        012416' 350140  012727'         AOS     SDEL,FREE       ;36BIT, SO GET A CELL FROM FREE CORE\r
+        012417' 311140  013102'         CAML    SDEL,SYMBOL     ;MORE CORE NEEDED?\r
+        012420' 260740  010014'         PUSHJ   PP,XCEEDS       ;YES\r
+        012421' 541243  777777          HRRI    ARG,-1(SDEL)    ;POINTER TO ARG\r
+        012422' 202305  000000          MOVEM   V,0(ARG)        ;36BIT VALUE TO FREE CORE\r
+        012423' 665240  004000          TLOA    ARG,PNTF        ;NOTE THAT ARG IS APOINTER, NOT A 18BIT VALUE\r
+\r
+        012424' 540240  000006  INSRT4: HRR     ARG,V           ;18BIT VALUE TO ARG\r
+        012425' 137440  003303'         DPB     RC,RCPNTR       ;FIX RIGHT RELOCATION\r
+        012426' 603440  000001          TLNE RC,1\r
+        012427' 661240  000002          TLO ARG,LELF    ;FIX LEFT RELOCATION\r
+        012430' 202244  000000  INSRT6: MOVEM   ARG,0(SX)       ;INSERT FLAGS AND VALUE.\r
+        012431' 202004  777777          MOVEM   AC0,-1(SX)      ;INSERT SYMBOL NAME.\r
+        012432' 260740  012455'         PUSHJ   PP,SRCHI        ;INITILIAZE SRCHX\r
+        012433' 254000  012203'         JRST    QSRCH           ;EXIT THROUGH CREF\r
+        \r
+        012434' 201140  000002  INSRT5: MOVEI SDEL,2    ;GET TWO CELLS FROM FREE CORE\r
+        012435' 273140  012727'         ADDB SDEL,FREE\r
+        012436' 311140  013102'         CAML SDEL,SYMBOL;MORE CORE NEEDED?\r
+        012437' 260740  010014'         PUSHJ PP,XCEEDS ;YES\r
+        012440' 202443  777777          MOVEM RC,-1(SDEL)\r
+        012441' 541243  777776          HRRI ARG,-2(SDEL)       ;POINTER TO ARG\r
+        012442' 202305  000000          MOVEM V,0(ARG)\r
+        012443' 661240  000010          TLO ARG,SPTR    ;SET SPECIAL POINTER, POINTS TO TWO CELLS\r
+        012444' 254000  012430'         JRST INSRT6\r
+\r\fMACRO V.10                     PAGE 166\r
+        USER-DEFINED SYMBOL SEARCH ROUTINES\r
+\r
+        012445' 275200  000002  REMOVE: SUBI    SX,2            ;MOVE EVERYONE UP TWO LOCATIONS\r
+        012446' 200004  000000  REMOV1: MOVE    0(SX)\r
+        012447' 202004  000002          MOVEM   2(SX)           ;OVERWRITE THE DELETED SYMBOL\r
+        012450' 312200  013102'         CAME    SX,SYMBOL       ;SKIP WHEN DONE\r
+        012451' 364200  012446'         SOJA    SX,REMOV1\r
+        012452' 271200  000002          ADDI    SX,2\r
+        012453' 202200  013102'         MOVEM   SX,SYMBOL\r
+        012454' 370004  000000          SOS     0(SX)           ;DECREMENT THE SYMBOL COUNT\r
+\r
+        012455' 201100  000000  SRCHI:  MOVEI   AC2,0           ;THIS CODE SETS UP SRCHX\r
+        012456' 140120  013102'         FAD     AC2,@SYMBOL\r
+        012457' 242100  777745          LSH     AC2,-^D27\r
+        012460' 201040  001000          MOVEI   AC1,1000\r
+        012461' 242042  777421          LSH     AC1,-357(AC2)\r
+        012462' 542040  013077'         HRRM    AC1,SRCHX\r
+        012463' 242040  000001          LSH     AC1,1\r
+        012464' 270040  013102'         ADD     AC1,SYMBOL\r
+        012465' 506040  013077'         HRLM    AC1,SRCHX\r
+        012466' 263740  000000          POPJ    PP,             ;SRCHX=XWD <SYMTBL+LENGTH/2>,LENGTH/4\r
+\r
+\r\fMACRO V.10                     PAGE 167\r
+        USER-DEFINED SYMBOL SEARCH ROUTINES\r
+\r
+        012467' 137440  003303' UPDATE: DPB     RC,RCPNTR       ;FIX RIGHT RELOCATION\r
+        012470' 603240  000010          TLNE ARG,SPTR   ;SKIP IF THERE IS NO SPECIAL POINTER\r
+        012471' 254000  012521'         JRST UPDAT4     ;YES, USE THE TWO CELLS\r
+        012472' 607440  777776          TLNN RC,-2      ;NEED TO CHANGE\r
+        012473' 602440  777776          TRNE RC,-2      ;ANY CURRENT EXTERNS?\r
+        012474' 254000  012525'         JRST UPDAT5     ;YES ,JUMP\r
+        012475' 621240  000002          TLZ ARG,LELF    ;CLEAR LELF\r
+        012476' 603440  000001          TLNE RC,1       ;LEFT RELOCATABLE?\r
+        012477' 661240  000002          TLO ARG,LELF    ;YES, SET THE FLAG\r
+        012500' 603240  004000          TLNE    ARG,PNTF        ;WAS THERE A 36BIT VALUE?\r
+        012501' 254000  012514'         JRST    UPDAT2          ;YES, USE IT.\r
+        012502' 603300  777777          TLNE    V,-1            ;NO,IS THERE A 36BIT VALUE?\r
+        012503' 254000  012507'         JRST    UPDAT1          ;YES, GET A CELL\r
+        012504' 540240  000006          HRR     ARG,V           ;NO, USE RH OF ARG\r
+        012505' 202244  000000  UPDAT3: MOVEM   ARG,0(SX)       ;OVERWRITE THE ONE IN THE TABLE\r
+        012506' 263740  000000          POPJ    PP,             ;AND EXIT\r
+\r
+        012507' 350140  012727' UPDAT1: AOS     SDEL,FREE       ;GET ONE CELL\r
+        012510' 311140  013102'         CAML    SDEL,SYMBOL     ;NEED MORE CORE?\r
+        012511' 260740  010014'         PUSHJ   PP,XCEEDS       ;YES\r
+        012512' 541243  777777          HRRI    ARG,-1(SDEL)    ;POINTER TO ARG\r
+        012513' 661240  004000          TLO     ARG,PNTF        ;AND NOTE IT.\r
+        012514' 603240  001000  UPDAT2: TLNE ARG,EXTF   ;IS THERE A EXTERNAL?\r
+        012515' 254000  012505'         JRST UPDAT3             ;YES, - JUST SAVE A LOCATION\r
+        012516' 202244  000000          MOVEM   ARG,0(SX)       ;NO, OVERWRITE THE POINTER IN THE TABLE\r
+        012517' 202305  000000          MOVEM   V,0(ARG)        ;STORE VALUE AS A 36BIT VALUE\r
+        012520' 263740  000000          POPJ    PP,             ;AND EXIT\r
+        \r
+        012521' 202244  000000  UPDAT4: MOVEM ARG,0(SX) ;WE HAVE TWO CELLS, WE USE THEM\r
+        012522' 202305  000000          MOVEM V,0(ARG)  ;SAVE AS 36BIT VALUE\r
+        012523' 202445  000001          MOVEM RC,1(ARG) ;SAVE RELOCATION BITS\r
+        012524' 263740  000000          POPJ PP,                ;AND EXIT\r
+\r
+        012525' 201140  000002  UPDAT5: MOVEI SDEL,2            ;THERE IS A EXTERNAL\r
+        012526' 273140  012727'         ADDB SDEL,FREE          ;SO WE NEED TWO LOACTIONS\r
+        012527' 311140  013102'         CAML SDEL,SYMBOL        ;NEED MORE CORE?\r
+        012530' 260740  010014'         PUSHJ PP,XCEEDS         ;YES\r
+        012531' 202443  777777          MOVEM RC,-1(SDEL)       ;SAVE RELOCATION BITS\r
+        012532' 541243  777776          HRRI ARG,-2(SDEL)       ;SAVE THE POINTER IN ARG\r
+        012533' 202305  000000          MOVEM V,0(ARG)          ;SAVE A 36BIT VALUE\r
+        012534' 661240  000010          TLO ARG,SPTR            ;SET SPECIAL PNTR FLAG\r
+        012535' 621240  004000          TLZ ARG,PNTF            ;CLEAR POINTER FLAG\r
+        012536' 254000  012505'         JRST UPDAT3             ;SAVE THE POINTER AND EXIT\r
+\r
+\r\fMACRO V.10                     PAGE 168\r
+        CONSTANTS\r
+\r
+                                        SUBTTL  CONSTANTS\r
+\r
+\r
+\r\fMACRO V.10                     PAGE 169\r
+        PHASED CODE\r
+\r
+                                        SUBTTL PHASED CODE\r
+                                      SUBTTL PHASED CODE\r
+        012537'                 LSTFIL: BLOCK 1\r
+        012540' 400000  000000          SIXBIT /@/      ;SYMBOL TO STOP PRINTING\r
+        012541'                 TAG:    BLOCK   1\r
+        012542' 001300  400000          SIXBIT  / + @/\r
+        012543'                 TABI:\r
+        012543' 000221  104422          BYTE    (7) 0, 11, 11, 11, 11\r
+        012544'                 SEQNO:  BLOCK   1\r
+        012545' 201004  020100          ASCIZ   /       /\r
+        012546' 201000  000000\r
+        012547' 000000  000014  BININI: EXP     B\r
+        012550'                 BINDEV: BLOCK   1\r
+        012551' 012655' 000000          XWD     BINBUF,0\r
+        012552' 000000  000001  LSTINI: EXP     AL\r
+        012553'                 LSTDEV: BLOCK   1\r
+        012554' 012652' 000000          XWD     LSTBUF,0\r
+                                IFN CCLSW,<\r
+        012555' 000000  000016  NUNINI: EXP     DMP\r
+        012556'                 NUNDEV: BLOCK   1\r
+        012557' 000000  000000          XWD     0,0\r
+        012560' 000000  000001  RPGINI: EXP     AL\r
+        012561'                 RPGDEV: BLOCK 1\r
+        012562' 000000  013422'         XWD 0,CTLBLK\r
+                                >\r
+        012563' 000000  000000  INDEVI: EXP     A\r
+        012564'                 INDEV:  BLOCK   1\r
+        012565' 000000  012660'         XWD     0,IBUF\r
+        012566' 201004  020100  DBUF:   ASCIZ   /                 PAGE /\r
+        012567' 201004  020100\r
+        012570' 201004  020100\r
+        012571' 201012  040616\r
+        012572' 425000  000000\r
+        012573' 046330  141644  VBUF:   ASCIZ   /       MACRO / ;MUST BE LAST LOCATIONS IN BLOCK\r
+        012574' 475000  000000\r
+        012575'                         BLOCK   3       ;ALLOW FOR LONG TITLE\r
+\r
+\r\fMACRO V.10                     PAGE 170\r
+        STORAGE CELLS\r
+\r
+                                SUBTTL  STORAGE CELLS\r
+\r
+        012600'                 PASS1I:\r
+\r
+        012600'                 RP:     BLOCK   1\r
+\r
+                                IFE CCLSW,<CTIBUF:      BLOCK   3\r
+                                CTOBUF: BLOCK   3\r
+                                >\r
+        012601'                 IFN CCLSW,<CTLBUF:      BLOCK   <CTLSIZ+5>/5\r
+                                >\r
+        012652'                 LSTBUF: BLOCK   3\r
+        012655'                 BINBUF: BLOCK   3\r
+        012660'                 IBUF:   BLOCK   3\r
+        012663'                 IFN CCLSW,<NUNDIR:>\r
+        012663'                 LSTDIR: BLOCK   4\r
+        012667'                 BINDIR: BLOCK   4\r
+        012673'                 INDIR:  BLOCK   4\r
+\r
+        012677'                 ACDELX:                         ;LEFT HALF\r
+        012677'                 BLKTYP: BLOCK   1               ;RIGHT HALF\r
+\r
+        012700'                 COUTX:  BLOCK   1\r
+        012701'                 COUTY:  BLOCK   1\r
+        012702'                 COUTP:  BLOCK   1\r
+        012703'                 COUTRB: BLOCK   1\r
+        012704'                 COUTDB: BLOCK   ^D18\r
+\r
+        012726'                 ERRCNT: BLOCK   1\r
+        012727'                 FREE:   BLOCK   1\r
+                                IFN RENTSW,<HIGH1:      BLOCK 1\r
+                                HISNSW: BLOCK   1\r
+                                SVTYP3: BLOCK   1\r
+                                HMIN:   BLOCK   1       ;START OF HIGH SEG. IN TWO SEG. PROG.>\r
+        012730'                 IFBLK:  BLOCK   .IFBLK\r
+        012754'                 IFBLKA: BLOCK   .IFBLK\r
+        013000'                 LADR:   BLOCK   1\r
+        013001'                 NCOLLS: BLOCK   1\r
+        013002'                 LIMBO:  BLOCK   1\r
+        013003'                 LBUFP:  BLOCK   1\r
+        013004'                 LBUF:   BLOCK   <.CPL+5>/5\r
+        013026'                         BLOCK 1\r
+        013027'                 VARHD:  BLOCK   1\r
+        013030'                 VARHDX: BLOCK   1\r
+\r
+        013031'                 LITAB:  BLOCK   1\r
+        013032'                 LITABX: BLOCK   1\r
+        013033'                         BLOCK   1\r
+        013034'                 LITHD:  BLOCK   1\r
+        013035'                 LITHDX: BLOCK   1\r
+        013036'                 LITCNT: BLOCK   1\r
+        013037'                 LITNUM: BLOCK   1\r
+\r
+\r\fMACRO V.10                     PAGE 170-1\r
+        STORAGE CELLS\r
+\r
+        013040'                 LOOKX:  BLOCK   1\r
+        013041'                 NEXT:   BLOCK   1\r
+        013042'                 OUTSW:  BLOCK   1\r
+        013043'                 PDP:    BLOCK   1\r
+        013044'                 RECCNT: BLOCK   1\r
+        013045'                 SAVBLK: BLOCK   RC\r
+        013056'                 SAVERC: BLOCK   1\r
+        013057'                 SBUF:   BLOCK   .SBUF/5\r
+        013077'                 SRCHX:  BLOCK   1\r
+        013100'                 SUBTTX: BLOCK   1\r
+        013101'                 SVSYM:  BLOCK   1\r
+        013102'                 SYMBOL: BLOCK   1\r
+        013103'                 SYMTOP: BLOCK   1\r
+\r
+        013104'                 STPX:   BLOCK   1\r
+        013105'                 STPY:   BLOCK   1\r
+        013106'                 STCODE: BLOCK   .STP\r
+        013156'                 STOWRC: BLOCK   .STP\r
+\r
+        013226'                 TABP:   BLOCK   1\r
+        013227'                 TCNT:   BLOCK   1               ;COUNT OF CHARS. LEFT IN TBUF\r
+        013230'                 TBUF:   BLOCK   .TBUF/5\r
+        013250'                 DEVBUF: BLOCK   6               ;STORE NAME.EXT CREATION DATE AND TIME\r
+        013256'                 TYPERR: BLOCK   1\r
+        013257'                 IONSYM: BLOCK   1       ;-1 SUPRESS LISTING OF SYMBOLS\r
+        013260'                 PRGPTR: BLOCK   1       ;POINTER TO CHAIN OF PRGEND BLOCKS\r
+        013261'                 ENTERS: BLOCK   1       ;-1 WHEN ENTERS HAVE BEEN DONE\r
+                                IFN UNIVR,<UNIVSN:      BLOCK   1       ;-1 WHEN A UNIVERSAL SEEN>\r
+\r
+\r\fMACRO V.10                     PAGE 171\r
+        STORAGE CELLS\r
+\r
+        013262'                 PASS2I:\r
+\r
+        013262'                 ABSHI:  BLOCK 1\r
+        013263'                 HIGH:   BLOCK   1\r
+                                IFN RENTSW,<HHIGH: BLOCK 1      ;SAVE BREAK OF HIGH SEG. IN TWO SEG PROG.>\r
+        013264'                 ACDEVX: BLOCK   1\r
+        013265'                 CPL:    BLOCK   1\r
+        013266'                 CTLSAV: BLOCK   1\r
+        013267'                 CTLS1:  BLOCK   1\r
+        013270'                 EXTPNT: BLOCK   1\r
+        013271'                 INTENT: BLOCK   1\r
+        013272'                 INREP:  BLOCK 1\r
+        013273'                 INDEF:  BLOCK 1\r
+        013274'                 INTXT:  BLOCK 1\r
+        013275'                 INCND:  BLOCK   1\r
+        013276'                 CALNAM: BLOCK   1\r
+        013277'                 CALPG:  BLOCK 1\r
+        013300'                 CALSEQ: BLOCK 1\r
+        013301'                 DEFPG:  BLOCK 1\r
+        013302'                 DEFSEQ: BLOCK 1\r
+        013303'                 LITPG:  BLOCK 1\r
+        013304'                 LITSEQ: BLOCK 1\r
+        013305'                 REPPG:  BLOCK 1\r
+        013306'                 REPSEQ: BLOCK 1\r
+        013307'                 TXTPG:  BLOCK 1\r
+        013310'                 TXTSEQ: BLOCK 1\r
+        013311'                 CNDPG:  BLOCK   1\r
+        013312'                 CNDSEQ: BLOCK   1\r
+        013313'                 IRPCNT: BLOCK   1\r
+        013314'                 IRPARG: BLOCK   1\r
+        013315'                 IRPARP: BLOCK   1\r
+        013316'                 IRPCF:  BLOCK   1\r
+        013317'                 IRPPOI: BLOCK   1\r
+        013320'                 IRPSW:  BLOCK   1\r
+        013321'                 LITLVL: BLOCK   1\r
+        013322'                 LITLBL: BLOCK   1               ;NAME OF LABEL DEFINED INSIDE A LITERAL\r
+\r
+        013323'                 ASGBLK: BLOCK   1\r
+        013324'                 LOCBLK: BLOCK   1\r
+\r
+        013325'                 LOCA:   BLOCK   1\r
+        013326'                 LOCO:   BLOCK   1\r
+        013327'                 RELLOC: BLOCK   1\r
+        013330'                 ABSLOC: BLOCK   1\r
+        013331'                 LPP:    BLOCK   1\r
+        013332'                 MODA:   BLOCK   1\r
+        013333'                 MODLOC: BLOCK   1\r
+        013334'                 MODO:   BLOCK   1\r
+        013335'                 IFN CCLSW,<OTBUF:       BLOCK 2>\r
+        013337'                 OUTSQ:  BLOCK 2\r
+        013341'                 PAGEN.: BLOCK   1\r
+        013342'                 PPTEMP: BLOCK   1\r
+        013343'                 PPTMP1: BLOCK   1\r
+\r\fMACRO V.10                     PAGE 171-1\r
+        STORAGE CELLS\r
+\r
+        013344'                 PPTMP2: BLOCK   1\r
+\r
+        013345'                 REPCNT: BLOCK   1\r
+        013346'                 REPEXP: BLOCK   1\r
+        013347'                 REPPNT: BLOCK   1\r
+        013350'                 RPOLVL: BLOCK   1\r
+        013351'                 R1BCNT: BLOCK 1\r
+        013352'                 R1BCHK: BLOCK 1\r
+        013353'                 R1BBLK: BLOCK .R1B\r
+        013375'                 R1BLOC: BLOCK 1\r
+        013376'                 RIMLOC: BLOCK   1\r
+        013377'                 TAGINC: BLOCK   1\r
+        013400'                 VECREL: BLOCK   1\r
+        013401'                 VECTOR: BLOCK   1\r
+        013402'                 .TEMP:  BLOCK   1               ;TEMPORARY STORAGE\r
+                                IFN UNIVR,<UNISCH:      BLOCK   .UNIV           ;SEARCH TABLE FOR UNIVERSALS>\r
+        013403'                 SQFLG:  BLOCK 1\r
+        013404'                 ARGF:   BLOCK   1\r
+        013405'                 MACENL: BLOCK   1\r
+        013406'                 MACLVL: BLOCK   1\r
+        013407'                 MACPNT: BLOCK   1\r
+        013410'                 WWRXX:  BLOCK   1\r
+        013411'                 RCOUNT: BLOCK   1               ;COUNT OF WORDS STILL TO READ IN LEAF\r
+        013412'                 WCOUNT: BLOCK   1               ;COUNT OF WORDS STILL FREE IN LEAF\r
+        013413'                 PASS2Z:                         ;ONLY CLEAR TO HERE ON PRGEND\r
+        013413'                 LSTSYM: BLOCK   1\r
+        013414'                 PAGENO: BLOCK   1\r
+        013415'                 SEQNO2: BLOCK 1\r
+        013416'                 PASS2X:\r
+\r
+\r\fMACRO V.10                     PAGE 172\r
+        MULTI-ASSEMBLY STORAGE CELLS\r
+\r
+                                SUBTTL  MULTI-ASSEMBLY STORAGE CELLS\r
+\r
+        013416'                 LSTPGN: BLOCK 1\r
+        013417'                 HDAS:   BLOCK 1\r
+        013420'                 IFN CCLSW,<EXTMP:       BLOCK 1 ;HOLDS EXT OF COMMAND FILE (RH)\r
+        013421'                 SAVFF:  BLOCK   1\r
+        013422'                 CTLBLK: BLOCK   3\r
+        013425'                 CTIBUF: BLOCK   3\r
+        013430'                 CTOBUF: BLOCK   3>\r
+        013433'                 MACSIZ: BLOCK   1               ;INITIAL SIZE OF LOW SEG\r
+                                IFN UNIVR,<\r
+                                UNISIZ: BLOCK   1               ;TOP OF BUFFERS AND STACKS\r
+                                UNITOP: BLOCK   1               ;TOP OF UNIVERSAL SYMBOL TABLE\r
+                                UNIVNO: BLOCK   1               ;NUMBER OF UNIVERSALS SEEN\r
+                                UNITBL: BLOCK   .UNIV           ;TABLE OF UNIVERSAL NAMES\r
+                                UNIPTR: BLOCK   .UNIV           ;TABLE OF SYMBOL POINTERS\r
+                                UNISHX: BLOCK   .UNIV           ;TABLE OF SRCHX POINTERS>\r
+        013434'                         VAR                     ;CLEAR VARIABLES\r
+\r
+        013434'                 JOBFFI: BLOCK   203*NUMBUF+1            ;INPUT BUFFER PLUS ONE\r
+\r
+                        006370'         END     BEG\r
+        014043' 554140  012664'\r
+        014044' 302140  634166\r
+        014045' 254000  007707'\r
+        014046' 205140  445560\r
+        014047' 254000  000027'\r
+        014050' 565764  004556\r
+        014051' 654600  435762\r
+        014052' 450046  576200\r
+        014053' 545156  534147\r
+        014054' 454000  000000\r
+        014055' 561440  014050'\r
+        014056' 254000  007714'\r
+        014057' 272330  144634\r
+        014060' 360300  000005\r
+        014061' 250407  001447'\r
+        014062' 777777  777777\r
+        014063' 260740  006335'\r
+        014064' 261740  000007\r
+        014065' 260740  000354'\r
+        014066' 262740  000007\r
+        014067' 306300  000004\r
+        014070' 254000  000750'\r
+        014071' 306340  000074\r
+        014072' 254000  000750'\r
+        014073' 336000  000000\r
+        014074' 664600  200000\r
+        014075' 476000  000011\r
+        014076' 254000  000750'\r
+        014077' 204500  000000\r
+        014100' 000000  000000\r
+        014101' 200000  000000\r
+\r\fMACRO V.10                     PAGE 172-1\r
+        MULTI-ASSEMBLY STORAGE CELLS\r
+\r
+        014102' 660600  002000\r
+        014103' 321640  001170'\r
+        014104' 254000  001154'\r
+        014105' 060300  000003\r
+        014106' 350700  013004'\r
+        014107' 202400  012537'\r
+        014110' 201400  012537'\r
+        014111' 260740  003001'\r
+        014112' 201340  000040\r
+        014113' 260740  010325'\r
+        014114' 200400  013414'\r
+        014115' 254000  001723'\r
+        014116' 502030  742500\r
+        014117' 000000  000000\r
+        014120' 202400  013416'\r
+        014121' 201400  014116'\r
+        014122' 260740  002774'\r
+        014123' 200340  013414'\r
+        014124' 260740  002765'\r
+        014125' 260740  010316'\r
+        014126' 254000  001724'\r
+        014127' 202433  040610\r
+        014130' 462452  553234\r
+        014131' 476410  546400\r
+        014132' 440700  014127'\r
+        014133' 440700  013004'\r
+        014134' 350700  012543'\r
+        014135' 655641  636351\r
+        014136' 475645  441400\r
+        014137' 444546  515645\r
+        014140' 440041  630051\r
+        014141' 460045  706445\r
+        014142' 625641  540040\r
+        014143' 516631  541236\r
+        014144' 461012  440604\r
+        014145' 462120  000000\r
+        014146' 202200  012730'\r
+        014147' 254000  002300'\r
+        014150' 440700  013230'\r
+        014151' 440200  012703'\r
+        014152' 777761  003110'\r
+        014153' 316000  013262'\r
+        014154' 552100  013262'\r
+        014155' 254000  003135'\r
+        014156' 000000  007666'\r
+        014157' 502451  743644\r
+        014160' 406321  100000\r
+        014161' 201400  014157'\r
+        014162' 260740  002774'\r
+        014163' 201400  013230'\r
+        014164' 260740  002774'\r
+        014165' 254000  010316'\r
+        014166' 606257  476241\r
+\r\fMACRO V.10                     PAGE 172-2\r
+        MULTI-ASSEMBLY STORAGE CELLS\r
+\r
+        014167' 550042  624541\r
+        014170' 530051  630040\r
+        014171' 524400  013263'\r
+        014172' 254000  003220'\r
+        014173' 414263  546564\r
+        014174' 450042  624541\r
+        014175' 530051  630040\r
+        014176' 530043  576245\r
+        014177' 006563  454440\r
+        014200' 013262' 013263'\r
+        014201' 260740  010470'\r
+        014202' 661240  002000\r
+        014203' 254000  003606'\r
+        014204' 321640  003743'\r
+        014205' 627240  002000\r
+        014206' 254000  003743'\r
+        014207' 406244  000000\r
+        014210' 254000  003726'\r
+        014211' 550000  013326'\r
+        014212' 250000  013330'\r
+        014213' 254000  004125'\r
+        014214' 550000  013326'\r
+        014215' 250000  013327'\r
+        014216' 254000  004125'\r
+        014217' 313300  013262'\r
+        014220' 202300  013262'\r
+        014221' 263740  000000\r
+        014222' 440700  013335'\r
+        014223' 064240  000000\r
+        014224' 620600  040000\r
+        014225' 263740  000000\r
+        014226' 250017  777777\r
+        014227' 603000  777000\r
+        014230' 660600  200000\r
+        014231' 250017  777777\r
+        014232' 254000  004446'\r
+        014233' 300617  000000\r
+        014234' 336000  000000\r
+        014235' 660600  200000\r
+        014236' 364000  002665'\r
+        014237' 300600  000005\r
+        014240' 140601  001447'\r
+        014241' 000001  000000\r
+        014242' 606247  455644\r
+        014243' 004562  625762\r
+        014244' 004000  000000\r
+        014245' 261140  000005\r
+        014246' 344340  005310'\r
+        014247' 336000  013403'\r
+        014250' 254000  005326'\r
+        014251' 261740  000007\r
+        014252' 201340  000047\r
+        014253' 260740  006262'\r
+\r\fMACRO V.10                     PAGE 172-3\r
+        MULTI-ASSEMBLY STORAGE CELLS\r
+\r
+        014254' 262740  000007\r
+        014255' 402000  013403'\r
+        014256' 254000  005326'\r
+        014257' 067760  400000\r
+        014260' 003617  074362\r
+        014261' 003617  074360\r
+        014262' 271406  030140\r
+        014263' 456262  576200\r
+        014264' 675051  544500\r
+        014265' 457060  415644\r
+        014266' 515647  400000\r
+        014267' 410300  000137\r
+        014270' 220600  000137\r
+        014271' 301100  000137\r
+        014272' 260700  012574'\r
+        014273' 012600' 012601'\r
+        014274' 440700  012601'\r
+        014275' 456262  576200\r
+        014276' 624541  445156\r
+        014277' 470043  575555\r
+        014300' 415644  004651\r
+        014301' 544540  000000\r
+        014302' 561440  014275'\r
+        014303' 254000  007714'\r
+        014304' 056200  000000\r
+        014305' 263740  000000\r
+        014306' 061200  020000\r
+        014307' 254000  014302'\r
+        014310' 260740  000066'\r
+        014311' 047000  000012\r
+        014312' 350000  013423'\r
+        014313' 211440  000005\r
+        014314' 272440  013424'\r
+        014315' 254000  006546'\r
+        014316' 435755  554156\r
+        014317' 440054  515645\r
+        014320' 006457  570054\r
+        014321' 575647  400000\r
+        014322' 326140  006615'\r
+        014323' 205140  434354\r
+        014324' 254000  006605'\r
+        014325' 436245  460000\r
+        014326' 013426' 013266'\r
+        014327' 466030  351236\r
+        014330' 351000  000000\r
+        014331' 047140  000004\r
+        014332' 603140  000004\r
+        014333' 254000  007125'\r
+        014334' 332100  012673'\r
+        014335' 202100  012663'\r
+        014336' 254000  007125'\r
+        014337' 047140  000004\r
+        014340' 603140  000004\r
+\r\fMACRO V.10                     PAGE 172-4\r
+        MULTI-ASSEMBLY STORAGE CELLS\r
+\r
+        014341' 254000  007133'\r
+        014342' 332100  012673'\r
+        014343' 202100  012667'\r
+        014344' 254000  007133'\r
+        014345' 455644  005746\r
+        014346' 006041  636300\r
+        014347' 214000  000000\r
+        014350' 545741  440064\r
+        014351' 504500  564570\r
+        014352' 640046  515445\r
+        014353' 400000  000000\r
+        014354' 306340  000032\r
+        014355' 047000  000012\r
+        014356' 254000  007227'\r
+        014357' 435755  554156\r
+        014360' 440045  626257\r
+        014361' 624000  000000\r
+        014362' 440400  007611'\r
+        014363' 270407  007570'\r
+        014364' 375657  004556\r
+        014365' 440063  644164\r
+        014366' 455545  566400\r
+        014367' 455643  576556\r
+        014370' 644562  454400\r
+        014371' 575600  515660\r
+        014372' 656400  465154\r
+        014373' 454000  000000\r
+        014374' 515600  545164\r
+        014375' 456241  544000\r
+        014376' 014374' 013303'\r
+        014377' 515600  444546\r
+        014400' 515645  400000\r
+        014401' 014377' 013301'\r
+        014402' 515600  644570\r
+        014403' 644000  000000\r
+        014404' 014402' 013307'\r
+        014405' 515600  435756\r
+        014406' 445164  515756\r
+        014407' 415400  576200\r
+        014410' 624560  454164\r
+        014411' 400000  000000\r
+        014412' 014405' 013305'\r
+        014413' 515600  435756\r
+        014414' 445164  515756\r
+        014415' 415440  000000\r
+        014416' 014413' 013311'\r
+        014417' 515600  554143\r
+        014420' 625700  434154\r
+        014421' 544000  000000\r
+        014422' 014417' 013277'\r
+        014423' 014353' 013414'\r
+        014424' 565764  004166\r
+        014425' 415154  414254\r
+\r\fMACRO V.10                     PAGE 172-5\r
+        MULTI-ASSEMBLY STORAGE CELLS\r
+\r
+        014426' 454000  000000\r
+        014427' 000001  014424'\r
+        014430' 102011  005154\r
+        014431' 544547  415400\r
+        014432' 465154  450056\r
+        014433' 415545  400000\r
+        014434' 102011  004651\r
+        014435' 544500  674163\r
+        014436' 005657  640046\r
+        014437' 576556  444000\r
+        014440' 102111  005657\r
+        014441' 004451  624543\r
+        014442' 645762  710046\r
+        014443' 576200  606257\r
+        014444' 524543  641560\r
+        014445' 625747  624155\r
+        014446' 554562  005665\r
+        014447' 554245  624000\r
+        014450' 102211  006062\r
+        014451' 576445  436451\r
+        014452' 575600  464151\r
+        014453' 546562  454000\r
+        014454' 102311  004651\r
+        014455' 544500  674163\r
+        014456' 004245  515647\r
+        014457' 005557  445146\r
+        014460' 514544  400000\r
+        014461' 102411  006245\r
+        014462' 564155  450046\r
+        014463' 515445  005641\r
+        014464' 554500  415462\r
+        014465' 454144  710045\r
+        014466' 705163  646340\r
+        014467' 102511  005154\r
+        014470' 544547  415400\r
+        014471' 634561  654556\r
+        014472' 434500  574600\r
+        014473' 656557  634000\r
+        014474' 102611  004241\r
+        014475' 440065  464400\r
+        014476' 576200  424144\r
+        014477' 006251  424000\r
+        014500' 102711  005657\r
+        014501' 640041  006341\r
+        014502' 660046  515445\r
+        014503' 400000  000000\r
+        014504' 102120  110056\r
+        014505' 576400  455657\r
+        014506' 654750  004357\r
+        014507' 624540  000000\r
+        014510' 102121  110044\r
+        014511' 456651  434500\r
+        014512' 565764  004166\r
+\r\fMACRO V.10                     PAGE 172-6\r
+        MULTI-ASSEMBLY STORAGE CELLS\r
+\r
+        014513' 415154  414254\r
+        014514' 454000  000000\r
+        014515' 102122  110056\r
+        014516' 570063  654350\r
+        014517' 004445  665143\r
+        014520' 454000  000000\r
+        014521' 102123  110056\r
+        014522' 576400  646757\r
+        014523' 006245  545743\r
+        014524' 006245  471600\r
+        014525' 434160  414251\r
+        014526' 545164  714000\r
+        014527' 102124  110056\r
+        014530' 570062  575755\r
+        014531' 005762  006165\r
+        014532' 576441  004570\r
+        014533' 434545  444544\r
+        014534' 400000  000000\r
+        014535' 102125  110067\r
+        014536' 625164  450054\r
+        014537' 574353  004562\r
+        014540' 625762  400000\r
+        014541' 102126  110056\r
+        014542' 576400  455657\r
+        014543' 654750  005557\r
+        014544' 565164  576200\r
+        014545' 644142  544500\r
+        014546' 636041  434540\r
+        014547' 102127  110060\r
+        014550' 416264  514154\r
+        014551' 004154  545743\r
+        014552' 416451  575600\r
+        014553' 575654  714000\r
+        014554' 102220  110042\r
+        014555' 545743  530056\r
+        014556' 576400  466245\r
+        014557' 450057  560041\r
+        014560' 545457  434164\r
+        014561' 515756  400000\r
+        014562' 102221  110043\r
+        014563' 415607  640063\r
+        014564' 656045  626345\r
+        014565' 444500  104556\r
+        014566' 644562  110041\r
+        014567' 560045  705163\r
+        014570' 645156  470044\r
+        014571' 516245  436457\r
+        014572' 627140  000000\r
+        014573' 102222  110043\r
+        014574' 415607  640044\r
+        014575' 455445  644500\r
+        014576' 106245  564155\r
+        014577' 451100  410056\r
+\r\fMACRO V.10                     PAGE 172-7\r
+        MULTI-ASSEMBLY STORAGE CELLS\r
+\r
+        014600' 575615  455560\r
+        014601' 647100  445162\r
+        014602' 454364  576271\r
+        014603' 400000  000000\r
+        014604' 102223  110063\r
+        014605' 464400  565764\r
+        014606' 004657  655644\r
+        014607' 400000  000000\r
+        014610' 102224  110063\r
+        014611' 454162  435000\r
+        014612' 545163  640045\r
+        014613' 556064  714000\r
+        014614' 102225  110063\r
+        014615' 464400  564563\r
+        014616' 644544  006457\r
+        014617' 570044  454560\r
+        014620' 547140  000000\r
+        014621' 102226  110056\r
+        014622' 571543  624541\r
+        014623' 644500  575600\r
+        014624' 465762  006360\r
+        014625' 454351  465145\r
+        014626' 440060  416450\r
+        014627' 400000  000000\r
+        014630' 103711  005457\r
+        014631' 575365  601400\r
+        014632' 455664  456214\r
+        014633' 005762  006245\r
+        014634' 564155  450045\r
+        014635' 626257  624000\r
+        014636' 160000  004000\r
+        014637' 322140  010003'\r
+        014640' 242140  777772\r
+        014641' 434140  014636'\r
+        014642' 254000  010005'\r
+        014643' 515663  654646\r
+        014644' 514351  455664\r
+        014645' 004357  624540\r
+        014646' 604460  005766\r
+        014647' 456246  545767\r
+        014650' 140064  627100\r
+        014651' 176040  000000\r
+        014652' 575600  604147\r
+        014653' 454000  000000\r
+        014654' 545156  454000\r
+        014655' 000001  000001\r
+        014656' 576564  606564\r
+        014657' 006762  516445\r
+        014660' 155457  435300\r
+        014661' 456262  576200\r
+        014662' 444566  514345\r
+        014663' 400000  000000\r
+        014664' 576564  606564\r
+\r\fMACRO V.10                     PAGE 172-8\r
+        MULTI-ASSEMBLY STORAGE CELLS\r
+\r
+        014665' 004441  644100\r
+        014666' 456262  576200\r
+        014667' 444566  514345\r
+        014670' 400000  000000\r
+        014671' 576564  606564\r
+        014672' 004350  454353\r
+        014673' 636555  005762\r
+        014674' 006041  625164\r
+        014675' 710045  626257\r
+        014676' 620044  456651\r
+        014677' 434540  000000\r
+        014700' 576564  606564\r
+        014701' 006165  576441\r
+        014702' 004570  434545\r
+        014703' 444544  005756\r
+        014704' 004445  665143\r
+        014705' 454000  000000\r
+        014706' 576564  606564\r
+        014707' 004254  574353\r
+        014710' 006457  570054\r
+        014711' 416247  450044\r
+        014712' 456651  434540\r
+        014713' 201004  020101\r
+        014714' 005156  606564\r
+        014715' 006050  716351\r
+        014716' 434154  004556\r
+        014717' 440057  460064\r
+        014720' 416045  004445\r
+        014721' 665143  454000\r
+        014722' 555756  516457\r
+        014723' 620044  456445\r
+        014724' 436445  440063\r
+        014725' 574664  674162\r
+        014726' 450051  566065\r
+        014727' 640045  626257\r
+        014730' 620044  456651\r
+        014731' 434540  000000\r
+        014732' 515660  656400\r
+        014733' 444164  410045\r
+        014734' 626257  620044\r
+        014735' 456651  434540\r
+        014736' 515660  656400\r
+        014737' 435045  435363\r
+        014740' 655500  576200\r
+        014741' 604162  516471\r
+        014742' 004562  625762\r
+        014743' 004445  665143\r
+        014744' 454000  000000\r
+        014745' 515660  656400\r
+        014746' 425457  435300\r
+        014747' 645757  005441\r
+        014750' 624745  004445\r
+        014751' 665143  454000\r
+\r\fMACRO V.10                     PAGE 172-9\r
+        MULTI-ASSEMBLY STORAGE CELLS\r
+\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 014752\r
+\r
+12K CORE USED\r
+\r\fMACRO V.10                     PAGE 173\r
+        SYMBOL TABLE\r
+\r
+M               002115  \r
+A               000000  SPD\r
+ABSHI           013262' \r
+ABSLOC          013330' \r
+AC0             000000  SPD\r
+AC1             000001  \r
+AC2             000002  \r
+ACDEL           000004  SPD\r
+ACDELX          012677' \r
+ACDEV           000001  SPD\r
+ACDEVX          013264' \r
+ACEXT           000003  SPD\r
+ACFILE          000002  SPD\r
+ACPNTR          000005  SPD\r
+ACPPN           000004  SPD\r
+ADDF            100000  SPD\r
+AL              000001  SPD\r
+ANGLB           000653' \r
+ANGLB1          000664' \r
+ANGLB2          000665' \r
+APRENB  047000  000016  \r
+ARG             000005  \r
+ARGF            013404' \r
+ARPGSW          100000  SPD\r
+ASC10           004516' \r
+ASC20           004534' \r
+ASC30           004540' \r
+ASC50           004551' \r
+ASC55           004550' \r
+ASC60           004553' \r
+ASCII0          004515' \r
+ASGBLK          013323' \r
+ASSEM1          000104' \r
+ASSEM2          000115' \r
+ASSEMB          000077' \r
+ASSIG1          004037' \r
+ASSIG2          004065' \r
+ASSIG3          004073' \r
+ASSIG5          004047' \r
+ASSIG6          004053' \r
+ASSIG7          004027' \r
+ASSIGN          004023' \r
+ATOM            000325' \r
+ATOM1           000327' \r
+B               000014  SPD\r
+BEG             006370' \r
+BIN             000001  SPD\r
+BINBUF          012655' \r
+BINDEV          012550' \r
+BINDIR          012667' \r
+BININI          012547' \r
+BINSE2          006657' \r
+BINSET          006620' \r
+\r\fMACRO V.10                     PAGE 173-1\r
+        SYMBOL TABLE\r
+\r
+BLKTYP          012677' \r
+BLOCK0          003326' \r
+BLOCK1          003333' \r
+BLOCK2          003335' \r
+BOUT            002434' \r
+BOUT20          002454' \r
+BOUT30          002470' \r
+BOUT3I          002511' \r
+BOUT40          002530' \r
+BOUT50          002555' \r
+BOUT60          002575' \r
+BOUT70          002564' \r
+BOUT80          002577' \r
+BYPAS1          004452' \r
+BYPAS2          004453' \r
+BYPASS          004452' \r
+BYTAB           007611' \r
+BYTE0           004631' \r
+BYTE1           004637' \r
+BYTE2           004646' \r
+BYTE3           004655' \r
+C               000007  \r
+CALLM           005511' \r
+CALNAM          013276' \r
+CALPG           013277' \r
+CALSEQ          013300' \r
+CC      741000  000000  \r
+CC              000000  \r
+CCLSW           000001  SPD\r
+CELL            000354' \r
+CELL1           000361' \r
+CELLSF          000353' \r
+CHAR            000002  SPD\r
+CHARAC          001406' \r
+CHARAX          001434' \r
+CHARL           001436' \r
+CHARL1          001444' \r
+CLSC3           012274' \r
+CLSCR1          012307' \r
+CLSCR2          012276' \r
+CLSCRF          012274' \r
+CNDPG           013311' \r
+CNDSEQ          013312' \r
+COMSW           013402' \r
+CONBIT          020000  SPD\r
+CORE    047000  000011  \r
+COUT            002640' \r
+COUTD           002645' \r
+COUTD2          002652' \r
+COUTDB          012704' \r
+COUTI           002657' \r
+COUTP           012702' \r
+COUTRB          012703' \r
+\r\fMACRO V.10                     PAGE 173-2\r
+        SYMBOL TABLE\r
+\r
+COUTX           012700' \r
+COUTY           012701' \r
+CPEEK           005371' \r
+CPEEK1          005400' \r
+CPL             013265' \r
+CPOPJ           003360' \r
+CPOPJ1          003357' \r
+CR              000015  SPD\r
+CREF            012221' \r
+CREF2           012251' \r
+CREF3           012241' \r
+CREFSW          002000  SPD\r
+CRFHD1          012272' \r
+CRFHDR          012264' \r
+CRLF            007765' \r
+CRPGSW          001000  SPD\r
+CS              000010  \r
+CSTAT           001447' \r
+CTIBUF          013425' \r
+CTL             000000  SPD\r
+CTL2            000004  SPD\r
+CTLBLK          013422' \r
+CTLBUF          012601' \r
+CTLS1           013267' \r
+CTLSAV          013266' \r
+CTLSET          006457' \r
+CTLSIZ          000310  SPD\r
+CTOBUF          013430' \r
+CV              000000  SPD\r
+DATE    047000  000014  \r
+DATOUT          010440' \r
+DBUF            012566' \r
+DCFSW           000040  SPD\r
+DDTOUT  047000  000003  \r
+DECERR          006364' \r
+DEF02           005224' \r
+DEF10           005241' \r
+DEF12           005251' \r
+DEF20           005254' \r
+DEF24           005267' \r
+DEF25           005317' \r
+DEF26           005310' \r
+DEF30           005326' \r
+DEF31           005327' \r
+DEF32           005330' \r
+DEF33           005333' \r
+DEF35           005363' \r
+DEF36           005355' \r
+DEF40           005406' \r
+DEF42           005410' \r
+DEF44           005427' \r
+DEF46           005431' \r
+DEF48           005446' \r
+\r\fMACRO V.10                     PAGE 173-3\r
+        SYMBOL TABLE\r
+\r
+DEF50           005451' \r
+DEF51           005456' \r
+DEF70           005462' \r
+DEF80           005467' \r
+DEF81           005474' \r
+DEFCRS          000040  SPD\r
+DEFIN0          005211' \r
+DEFPG           013301' \r
+DEFSEQ          013302' \r
+DELETE          000066' \r
+DEPHA0          004015' \r
+DEVBUF          013250' \r
+DEVCHR  047000  000004  \r
+DEVICE          007267' \r
+DEVNAM          007274' \r
+DIRBIT          000004  SPD\r
+DISBIT          002000  SPD\r
+DMP             000016  SPD\r
+DMPBIN          010131' \r
+DMPLST          010140' \r
+DNC             002765' \r
+DP1             010063' \r
+DSEND           006211' \r
+DSKBIT          200000  SPD\r
+DSTOW           002712' \r
+DTAB            010454' \r
+DTABIT          000100  SPD\r
+EINIT           007700' \r
+END0            003037' \r
+ENDP2           003127' \r
+ENDP2A          003173' \r
+ENDP2B          003220' \r
+ENDP2D          003201' \r
+ENDP2Q          003137' \r
+ENDP2W          003135' \r
+ENTERS          013261' \r
+ENTF            000200  SPD\r
+ENTRDN          007136' \r
+EOL             000033  SPD\r
+EOT             007176' \r
+EOUT            002121' \r
+EOUT1           002124' \r
+EOUT2           002132' \r
+EOUT3           002141' \r
+EOUT4           002151' \r
+ER              000014  SPD\r
+ERRA            040000  SPD\r
+ERRAX           003311' \r
+ERRBIT          740000  SPD\r
+ERRCB           007704' \r
+ERRCF           007707' \r
+ERRCL           007702' \r
+ERRCM           007321' \r
+\r\fMACRO V.10                     PAGE 173-4\r
+        SYMBOL TABLE\r
+\r
+ERRCNT          012726' \r
+ERRD            020000  SPD\r
+ERRE            000040  SPD\r
+ERRFIN          007714' \r
+ERRL            010000  SPD\r
+ERRLST          010146' \r
+ERRM            000020  SPD\r
+ERRMS1          007666' \r
+ERRMS2          007671' \r
+ERRMS3          007674' \r
+ERRN            000400  SPD\r
+ERRNE           007633' \r
+ERRNE0          007634' \r
+ERRNE1          007644' \r
+ERRNE2          007656' \r
+ERRNE3          007663' \r
+ERRO            000200  SPD\r
+ERRORS          777760  SPD\r
+ERRP            000100  SPD\r
+ERRQ            200000  SPD\r
+ERRQSW          000010  SPD\r
+ERRR            004000  SPD\r
+ERRTYP          007711' \r
+ERRU            002000  SPD\r
+ERRV            001000  SPD\r
+ERRX            100000  SPD\r
+EVADR           004403' \r
+EVAL10          003745' \r
+EVALC3          001064' \r
+EVALCM          001057' \r
+EVALEX          001070' \r
+EVALHA          001056' \r
+EVALXQ          003757' \r
+EVATOM          001073' \r
+EVERRU          001150' \r
+EVERRZ          001147' \r
+EVGETD          001170' \r
+EVMAC           001107' \r
+EVNUM           001175' \r
+EVOP            001122' \r
+EVOPD           001132' \r
+EVOPS           001126' \r
+EVOPX           001145' \r
+EVPUSH          001205' \r
+EVTSTR          001164' \r
+EVTSTS          001152' \r
+EVXCT           001212' \r
+EVXCT1          001227' \r
+EXIT    047000  000012  \r
+EXPRES          004465' \r
+EXTER0          003715' \r
+EXTER1          003717' \r
+EXTER2          003726' \r
+\r\fMACRO V.10                     PAGE 173-5\r
+        SYMBOL TABLE\r
+\r
+EXTER3          003743' \r
+EXTER4          003741' \r
+EXTF            001000  SPD\r
+EXTMP           013420' \r
+EXTPNT          013270' \r
+FF              000014  SPD\r
+FINIS           007014' \r
+FLDSW           400000  SPD\r
+FR              000015  \r
+FREE            012727' \r
+FSNSW           100000  SPD\r
+FTDISK          000001  SPD\r
+GCHAR           006255' \r
+GCHARQ          006254' \r
+GETCHR          001354' \r
+GETCS           001375' \r
+GETCS1          001377' \r
+GETCS2          001374' \r
+GETDE1          000434' \r
+GETDE2          000444' \r
+GETDE3          000436' \r
+GETDEL          000433' \r
+GETDS           006151' \r
+GETDS1          006203' \r
+GETE            006404' \r
+GETED           006410' \r
+GETIOC          007227' \r
+GETIT           005064' \r
+GETSE1          006761' \r
+GETSE2          006774' \r
+GETSET          006740' \r
+GETSY1          001046' \r
+GETSY2          001047' \r
+GETSY3          001050' \r
+GETSYM          001034' \r
+GETTOP          003444' \r
+GETU            006416' \r
+GETV            006424' \r
+GOSET           006540' \r
+GOSET1          006546' \r
+GOSET2          006570' \r
+GOTEND          007165' \r
+GTSTOW          002731' \r
+HDAS            013417' \r
+HIGH            013263' \r
+HIGHQ           004146' \r
+HIGHQ1          004146' \r
+HISEG0          003360' \r
+HLPMES          007370' \r
+HOUT            002626' \r
+HT              000011  SPD\r
+IB              000013  SPD\r
+IBUF            012660' \r
+\r\fMACRO V.10                     PAGE 173-6\r
+        SYMBOL TABLE\r
+\r
+IF              003512' \r
+IFB0            003543' \r
+IFB1            003544' \r
+IFB2            003564' \r
+IFB3            003563' \r
+IFBLK           012730' \r
+IFBLKA          012754' \r
+IFCL            003630' \r
+IFCLR           003647' \r
+IFCLR1          003656' \r
+IFDEF0          003600' \r
+IFEX1           003526' \r
+IFEX2           003664' \r
+IFEXIT          003525' \r
+IFIDN0          003610' \r
+IFPASS          003540' \r
+IFPOP           003520' \r
+IFSET           003521' \r
+IFXCT           003522' \r
+IIISW           000000  SPD\r
+INCND           013275' \r
+INDEF           013273' \r
+INDEV           012564' \r
+INDEVI          012563' \r
+INDIR           012673' \r
+INDSW           020000  SPD\r
+INHERE          000017' \r
+INREP           013272' \r
+INSERQ          012364' \r
+INSERT          012366' \r
+INSERZ          012365' \r
+INSET           007027' \r
+INSET1          007047' \r
+INSET2          007064' \r
+INSET3          007065' \r
+INSET4          007077' \r
+INSETI          007143' \r
+INSRT1          012374' \r
+INSRT2          012377' \r
+INSRT3          012405' \r
+INSRT4          012424' \r
+INSRT5          012434' \r
+INSRT6          012430' \r
+INTENT          013271' \r
+INTER0          003677' \r
+INTER1          003700' \r
+INTER3          003710' \r
+INTF            000400  SPD\r
+INTXT           013274' \r
+INZ             003267' \r
+IO              000014  \r
+IOBKTL          040000  SPD\r
+IOCREF          000400  SPD\r
+\r\fMACRO V.10                     PAGE 173-7\r
+        SYMBOL TABLE\r
+\r
+IODERR          200000  SPD\r
+IODTER          100000  SPD\r
+IOENDL          000200  SPD\r
+IOIMPM          400000  SPD\r
+IOIOPF          000020  SPD\r
+IOMAC           010000  SPD\r
+IOMSTR          200000  SPD\r
+IONCRF          002000  SPD\r
+IONSYM          013257' \r
+IOP             004352' \r
+IOPAGE          000100  SPD\r
+IOPALL          004000  SPD\r
+IOPROG          040000  SPD\r
+IORPTC          000004  SPD\r
+IORSET          003322' \r
+IOSALL          000001  SPD\r
+IOSCR           000001  SPD\r
+IOSET           003315' \r
+IOTLSN          000002  SPD\r
+IOWD0           004617' \r
+IRP0            005777' \r
+IRP10           006001' \r
+IRP20           006041' \r
+IRPARG          013314' \r
+IRPARP          013315' \r
+IRPCF           013316' \r
+IRPCNT          013313' \r
+IRPEND          006131' \r
+IRPPOI          013317' \r
+IRPPOP          006135' \r
+IRPSE1          006074' \r
+IRPSE2          006103' \r
+IRPSE3          006113' \r
+IRPSE4          006116' \r
+IRPSET          006060' \r
+IRPSW           013320' \r
+JOB41           000057' EXT\r
+JOBAPR          006741' EXT\r
+JOBDDT          000000  EXT\r
+JOBERR          007724' EXT\r
+JOBFF           007067' EXT\r
+JOBFFI          013434' \r
+JOBREL          010022' EXT\r
+JOBS41          000122  INT\r
+JOBSA           006611' EXT\r
+JOBSYM          000000  EXT\r
+JOBVER          000137  SPD\r
+JUMP1   321640  000000  \r
+JUMP2   325640  000000  \r
+JUMPAD  321600  000000  \r
+JUMPCM  321400  000000  \r
+JUMPNC  325400  000000  \r
+JUMPOC  325600  000000  \r
+\r\fMACRO V.10                     PAGE 173-8\r
+        SYMBOL TABLE\r
+\r
+LABEL           000244' \r
+LABEL0          000257' \r
+LABEL1          000272' \r
+LABEL2          000301' \r
+LABEL3          000304' \r
+LABEL4          000310' \r
+LABEL5          000312' \r
+LABEL6          000276' \r
+LABEL7          000314' \r
+LADR            013000' \r
+LBUF            013004' \r
+LBUFP           013003' \r
+LELF            000002  SPD\r
+LENGTH          000004  \r
+LETTE1          000401' \r
+LETTE2          000405' \r
+LETTE3          000407' \r
+LETTE4          000426' \r
+LETTER          000400' \r
+LF              000012  SPD\r
+LIMBO           013002' \r
+LIT0            003365' \r
+LIT1            003367' \r
+LIT20           003377' \r
+LIT20A          003407' \r
+LIT21           003410' \r
+LIT22           003422' \r
+LIT24           003433' \r
+LITAB           013031' \r
+LITABX          013032' \r
+LITCNT          013036' \r
+LITF            200000  SPD\r
+LITHD           013034' \r
+LITHDX          013035' \r
+LITI            003437' \r
+LITLBL          013322' \r
+LITLVL          013321' \r
+LITNUM          013037' \r
+LITPG           013303' \r
+LITSEQ          013304' \r
+LLUKP1          002272' \r
+LLUKP2          002267' \r
+LLUKP3          002301' \r
+LLUKP4          002311' \r
+LLUKP6          002306' \r
+LLUKP7          002300' \r
+LLUKUP          002263' \r
+LNSSW           000000  SPD\r
+LOADSW          000020  SPD\r
+LOC0            004114' \r
+LOC01           004125' \r
+LOC10           004133' \r
+LOCA            013325' \r
+\r\fMACRO V.10                     PAGE 173-9\r
+        SYMBOL TABLE\r
+\r
+LOCBLK          013324' \r
+LOCO            013326' \r
+LOOKL           003030' \r
+LOOKUP          003025' \r
+LOOKX           013040' \r
+LOUT1           002166' \r
+LOUT10          002211' \r
+LOUT11          002252' \r
+LOUT15          002222' \r
+LOUT30          002253' \r
+LOUT60          002260' \r
+LOUT64          002262' \r
+LPP             013331' \r
+LPTBIT          040000  SPD\r
+LPTSW           000002  SPD\r
+LPTWID          000170  SPD\r
+LST             000003  SPD\r
+LSTBUF          012652' \r
+LSTDEV          012553' \r
+LSTDIR          012663' \r
+LSTFIL          012537' \r
+LSTINI          012552' \r
+LSTPGN          013416' \r
+LSTSE1          006666' \r
+LSTSE2          006700' \r
+LSTSE3          006734' \r
+LSTSE4          007125' \r
+LSTSE5          007127' \r
+LSTSET          006665' \r
+LSTSYM          013413' \r
+M               006436' \r
+MAC10           005541' \r
+MAC14           005554' \r
+MAC14A          005563' \r
+MAC15           005572' \r
+MAC16           005573' \r
+MAC20           005602' \r
+MAC21           005604' \r
+MAC21A          005606' \r
+MAC21B          005627' \r
+MAC21C          005626' \r
+MAC21D          005615' \r
+MAC21E          005624' \r
+MAC22           005636' \r
+MAC23           005651' \r
+MAC24           005663' \r
+MAC25           005664' \r
+MAC26           005642' \r
+MAC27           005647' \r
+MAC30           005677' \r
+MAC31           005700' \r
+MAC40           005707' \r
+MAC41           005720' \r
+\r\fMACRO V.10                     PAGE 173-10\r
+        SYMBOL TABLE\r
+\r
+MAC42           005726' \r
+MAC44           005727' \r
+MACEN0          005740' \r
+MACEN1          005755' \r
+MACEN2          005756' \r
+MACEN3          005773' \r
+MACEND          005741' \r
+MACENL          013405' \r
+MACF            020000  SPD\r
+MACLVL          013406' \r
+MACPNT          013407' \r
+MACSIZ          013433' \r
+MDFF            000020  SPD\r
+MFLSW           000010  SPD\r
+MODA            013332' \r
+MODLOC          013333' \r
+MODO            013334' \r
+MP              000016  \r
+MREAD           006300' \r
+MREADC          006333' \r
+MREADI          006317' \r
+MREADS          006322' \r
+MRP             000013  \r
+MSRCH           012173' \r
+MSRCH2          012202' \r
+MSTIME  047000  000023  \r
+MTABIT          000020  SPD\r
+MTAPSW          000004  SPD\r
+MWLFLG          200000  SPD\r
+MWP             000012  \r
+N1              000765  \r
+N2              000033  \r
+NAME            007272' \r
+NAME1           007215' \r
+NAME2           007216' \r
+NAME3           007224' \r
+NCOLLS          013001' \r
+NCOLS           000001  SPD\r
+NEGSW           000200  SPD\r
+NEXT            013041' \r
+NOERW           003165' \r
+NOOUTF          100000  SPD\r
+NOUT            002602' \r
+NOUT1           002605' \r
+NOUT2           002624' \r
+NOUT3           002621' \r
+NUM             000705' \r
+NUM1            000710' \r
+NUM10           000720' \r
+NUM30           000732' \r
+NUM31           000733' \r
+NUM32           000736' \r
+NUM40           000741' \r
+\r\fMACRO V.10                     PAGE 173-11\r
+        SYMBOL TABLE\r
+\r
+NUM50           000765' \r
+NUM52           000773' \r
+NUM60           001004' \r
+NUM62           001011' \r
+NUMBUF          000002  SPD\r
+NUMDF           000704' \r
+NUMDN           001026' \r
+NUMER1          000431' \r
+NUMER2          000432' \r
+NUMSW           020000  SPD\r
+NUMUP           001020' \r
+NUNAC           000054' \r
+NUNAOS          000006  \r
+NUNBLT          000004  \r
+NUNCOM          000000' \r
+NUNDEV          012556' \r
+NUNDIR          012663' \r
+NUNERM          000006' \r
+NUNERR          000004' \r
+NUNGO2          000002' \r
+NUNGO3          000011' \r
+NUNGO4          000000  \r
+NUNINI          012555' \r
+NUNLAC          000012  \r
+NUNPNT          000010  \r
+NUNSET          000017' \r
+NUNTOP          000011  \r
+OCT0            004466' \r
+OCT1            004470' \r
+OFFML           004155' \r
+OFFORM          003360' \r
+OFFSYM          004157' \r
+ONC             002747' \r
+ONC1            002751' \r
+ONC2            002763' \r
+ONERW           003162' \r
+ONERW1          003163' \r
+ONFORM          003360' \r
+ONML            004154' \r
+OP              004354' \r
+OP1A            004373' \r
+OP1B            004363' \r
+OP1COD          011515' \r
+OP1END          011514' \r
+OP1TAB          012020' \r
+OP1TOP          010526' \r
+OP2             004374' \r
+OP2A            004442' \r
+OP2A1           004455' \r
+OP2A2           004463' \r
+OP2TAB          012064' \r
+OP3             004375' \r
+OPD             004350' \r
+\r\fMACRO V.10                     PAGE 173-12\r
+        SYMBOL TABLE\r
+\r
+OPD1            004346' \r
+OPDEF0          003764' \r
+OPDF            010000  SPD\r
+OPHSH           000000  SPD\r
+OPT1A           010473' \r
+OPT1B           010500' \r
+OPT1D           010505' \r
+OPT1F           010513' \r
+OPT1G           010516' \r
+OPTSCH          010470' \r
+OPTTAB          010523' \r
+OTBUF           013335' \r
+OTOD            010432' \r
+OUTAB2          010306' \r
+OUTAS0          002774' \r
+OUTASC          002775' \r
+OUTBIN          010122' \r
+OUTC            010377' \r
+OUTCR           010316' \r
+OUTFF           010417' \r
+OUTFF1          010410' \r
+OUTFF2          010420' \r
+OUTIM           001737' \r
+OUTIM1          001736' \r
+OUTIM2          001752' \r
+OUTIML          002011' \r
+OUTL            010325' \r
+OUTL01          001565' \r
+OUTL02          001567' \r
+OUTL03          001566' \r
+OUTL1           010364' \r
+OUTL20          001577' \r
+OUTL22          001621' \r
+OUTL23          001625' \r
+OUTL24          001630' \r
+OUTL25          001636' \r
+OUTL26          001642' \r
+OUTL27          001646' \r
+OUTL30          001665' \r
+OUTL32          001675' \r
+OUTLE2          001727' \r
+OUTLE4          001733' \r
+OUTLE8          001723' \r
+OUTLER          001712' \r
+OUTLI           001765' \r
+OUTLI1          001773' \r
+OUTLI2          001774' \r
+OUTLI3          001772' \r
+OUTLIN          001547' \r
+OUTLST          010403' \r
+OUTML1          002036' \r
+OUTPL           001650' \r
+OUTSET          003017' \r
+\r\fMACRO V.10                     PAGE 173-13\r
+        SYMBOL TABLE\r
+\r
+OUTSIX          003001' \r
+OUTSQ           013337' \r
+OUTSTR          000000  \r
+OUTSW           013042' \r
+OUTSY1          003011' \r
+OUTSYM          003010' \r
+OUTTAB          010307' \r
+P1              400000  SPD\r
+PAGE0           010407' \r
+PAGEN.          013341' \r
+PAGENO          013414' \r
+PASS1I          012600' \r
+PASS20          003066' \r
+PASS2I          013262' \r
+PASS2X          013416' \r
+PASS2Z          013413' \r
+PDP             013043' \r
+PDPERR          010037' \r
+PEEK            006335' \r
+PEEKM           006341' \r
+PERIOD          000671' \r
+PERNUM          000677' \r
+PHASE0          004017' \r
+PJOB    047000  000030  \r
+PN1             004244' \r
+PN2             004252' \r
+PNCHSW          001000  SPD\r
+PNTF            004000  SPD\r
+POINT0          004561' \r
+POINT2          004574' \r
+POPOUT          000446' \r
+PP              000017  \r
+PPN             013402' \r
+PPTEMP          013342' \r
+PPTMP1          013343' \r
+PPTMP2          013344' \r
+PR              000002  SPD\r
+PRGPTR          013260' \r
+PRINT           010310' \r
+PRMEND          012020' \r
+PRMTBL          011720' \r
+PRNAM           004235' \r
+PRNTX0          003342' \r
+PRNTX2          003345' \r
+PRNTX4          003350' \r
+PRNUM           010041' \r
+PROGN1          007323' \r
+PROGN2          007324' \r
+PROGN3          007325' \r
+PROGNP          007323' \r
+PS              000003  SPD\r
+PSEND0          004712' \r
+PSEND1          004721' \r
+\r\fMACRO V.10                     PAGE 173-14\r
+        SYMBOL TABLE\r
+\r
+PSEND2          004724' \r
+PSEND3          004730' \r
+PSEND4          004734' \r
+PSEND5          005016' \r
+PSEND6          005010' \r
+PSENDX          005015' \r
+PSNDER          005066' \r
+PTPBIN          010123' \r
+PTR             000104  SPD\r
+PURGE0          004317' \r
+PURGE2          004330' \r
+PURGE3          004342' \r
+PURGE4          004343' \r
+PURGE5          004344' \r
+PV              000001  SPD\r
+QEXT            003752' \r
+QSRCH           012203' \r
+QUAL            000514' \r
+QUAL2           000531' \r
+QUAL2A          000535' \r
+QUAL8           000530' \r
+QUALL           000541' \r
+QUOTE           000456' \r
+QUOTE0          000452' \r
+QUOTE1          000473' \r
+QUOTE2          000472' \r
+QUOTES          000447' \r
+R1BBLK          013353' \r
+R1BCHK          013352' \r
+R1BCNT          013351' \r
+R1BDM1          010175' \r
+R1BDMP          010165' \r
+R1BI            010203' \r
+R1BLDR          003110' \r
+R1BLOC          013375' \r
+R1BSW           004000  SPD\r
+RADIX0          003306' \r
+RADX50          004667' \r
+RADXSW          040000  SPD\r
+RC              000011  SPD\r
+RCOUNT          013411' \r
+RCPNTR          003303' \r
+READ            010221' \r
+READ0           010220' \r
+READ1           010223' \r
+READ1A          010243' \r
+READ2           010254' \r
+READ3           010263' \r
+REC2            007155' \r
+RECCNT          013044' \r
+REFDEC          006352' \r
+REFINC          006347' \r
+RELBL1          000650' \r
+\r\fMACRO V.10                     PAGE 173-15\r
+        SYMBOL TABLE\r
+\r
+RELBLE          000632' \r
+RELF            000001  SPD\r
+RELLOC          013327' \r
+RELOC0          004140' \r
+REMAR0          003361' \r
+REMOV1          012446' \r
+REMOVE          012445' \r
+RENTSW          000000  SPD\r
+REPCNT          013345' \r
+REPEA0          005070' \r
+REPEA1          005072' \r
+REPEA2          005074' \r
+REPEA4          005105' \r
+REPEA7          005132' \r
+REPEA8          005134' \r
+REPEND          005136' \r
+REPEXP          013346' \r
+REPO            005171' \r
+REPO1           005201' \r
+REPPG           013305' \r
+REPPNT          013347' \r
+REPSEQ          013306' \r
+REPZ            005152' \r
+REPZ1           005160' \r
+REPZ2           005166' \r
+RESET   047000  000000  \r
+RIM0            010072' \r
+RIM1SW          000100  SPD\r
+RIMFIN          003256' \r
+RIMLOC          013376' \r
+RIMSW           000400  SPD\r
+ROUT            010076' \r
+ROUT1           010113' \r
+ROUT6           010207' \r
+RP              012600' \r
+RPGDEV          012561' \r
+RPGINI          012560' \r
+RPGLOS          006615' \r
+RPGLUP          006510' \r
+RPGS1           006577' \r
+RPGS2           006523' \r
+RPGS2A          006524' \r
+RPGSET          006501' \r
+RPOLVL          013350' \r
+RSTRXS          007205' \r
+RSW0            001410' \r
+RSW1            001412' \r
+RSW2            001414' \r
+RSW3            001423' \r
+RUN     047000  000035  \r
+RX              000015  SPD\r
+SAVBLK          013045' \r
+SAVERC          013056' \r
+\r\fMACRO V.10                     PAGE 173-16\r
+        SYMBOL TABLE\r
+\r
+SAVEXS          007211' \r
+SAVFF           013421' \r
+SBUF            013057' \r
+SDEL            000003  \r
+SEARCH          012313' \r
+SEQNO           012544' \r
+SEQNO2          013415' \r
+SETDDT  047000  000002  \r
+SIXB10          004475' \r
+SIXB20          004477' \r
+SKELI           006220' \r
+SKELI1          006217' \r
+SKELW           006231' \r
+SKELW1          006243' \r
+SKELWL          006233' \r
+SKPINC          000000  \r
+SLASH           007226' \r
+SOUT            002156' \r
+SOUT1           002314' \r
+SOUT10          002336' \r
+SOUT15          002345' \r
+SOUT20          002420' \r
+SOUT50          002404' \r
+SOUT60          002417' \r
+SOUTC           002427' \r
+SPTR            000010  SPD\r
+SQB1            000620' \r
+SQB2            000621' \r
+SQB3            000562' \r
+SQB4            000574' \r
+SQB4A           000606' \r
+SQB5            000561' \r
+SQB6            000613' \r
+SQBRK           000550' \r
+SQFLG           013403' \r
+SQOZ1           004701' \r
+SQOZE           004677' \r
+SQUOT0          000474' \r
+SQUOTE          000500' \r
+SRCH1           012315' \r
+SRCH2           012317' \r
+SRCH3           012325' \r
+SRCH4           012335' \r
+SRCH5           012336' \r
+SRCH6           012352' \r
+SRCH7           012340' \r
+SRCHI           012455' \r
+SRCHKO          012362' \r
+SRCHNO          012361' \r
+SRCHOK          012363' \r
+SRCHX           013077' \r
+SSRCH           012210' \r
+SSRCH1          012213' \r
+\r\fMACRO V.10                     PAGE 173-17\r
+        SYMBOL TABLE\r
+\r
+SSRCH2          012217' \r
+SSRCH3          012220' \r
+STCODE          013106' \r
+STMN2A          000146' \r
+STMN8A          000222' \r
+STMN8B          000210' \r
+STMN8C          000212' \r
+STMN8D          000207' \r
+STMNT           000125' \r
+STMNT1          000127' \r
+STMNT2          000130' \r
+STMNT3          000157' \r
+STMNT4          000161' \r
+STMNT5          000167' \r
+STMNT7          000200' \r
+STMNT8          000207' \r
+STMNT9          000201' \r
+STOL06          001274' \r
+STOL08          001301' \r
+STOL10          001302' \r
+STOL12          001314' \r
+STOL14          001326' \r
+STOL22          001333' \r
+STOL23          001334' \r
+STOL24          001335' \r
+STOL26          001346' \r
+STOLER          001261' \r
+STOLIT          001264' \r
+STOPI0          006125' \r
+STORIT          005061' \r
+STOUT           000230' \r
+STOUT1          000237' \r
+STOUTS          000227' \r
+STOW            002665' \r
+STOW10          002675' \r
+STOW20          002677' \r
+STOWI           002717' \r
+STOWRC          013156' \r
+STOWT           002735' \r
+STOWT1          002742' \r
+STOWZ           002664' \r
+STOWZ1          002664' \r
+STPX            013104' \r
+STPY            013105' \r
+SUBTL           011360' \r
+SUBTT0          004220' \r
+SUBTT1          004224' \r
+SUBTT3          004226' \r
+SUBTTX          013100' \r
+SUPRBT          000004  SPD\r
+SUPRE0          004161' \r
+SUPRE1          004166' \r
+SUPRS1          004175' \r
+\r\fMACRO V.10                     PAGE 173-18\r
+        SYMBOL TABLE\r
+\r
+SUPRSA          004172' \r
+SVSTOW          002723' \r
+SVSYM           013101' \r
+SW0             007346' \r
+SW1             007347' \r
+SWITC0          007341' \r
+SWITCH          007342' \r
+SWTAB           007571' \r
+SWTABT          007574' \r
+SX              000004  \r
+SYMBLK          012730' \r
+SYMBOL          013102' \r
+SYMF            400000  SPD\r
+SYMNUM          011713' \r
+SYMTOP          013103' \r
+SYN0            004261' \r
+SYN1            004265' \r
+SYN2            004266' \r
+SYN3            004302' \r
+SYN4            004313' \r
+SYNF            040000  SPD\r
+TABI            012543' \r
+TABLE           007727' \r
+TABLND          007756' \r
+TABP            013226' \r
+TAG             012541' \r
+TAGF            200000  SPD\r
+TAGINC          013377' \r
+TAPE0           003304' \r
+TBUF            013230' \r
+TCNT            013227' \r
+TERM            007276' \r
+TERM1           007303' \r
+TIMOU1          010424' \r
+TIMOUT          010423' \r
+TIO             000006  SPD\r
+TIOCLD          020000  SPD\r
+TIOLE           002000  SPD\r
+TIORW           001000  SPD\r
+TITLE0          004207' \r
+TMPCOR  047000  000044  \r
+TMPSW           010000  SPD\r
+TNODE           200000  SPD\r
+TSTBIN          010133' \r
+TSTLST          010142' \r
+TTCLTH          000016  SPD\r
+TTCTBL          012155' \r
+TTYBIT          000010  SPD\r
+TTYERR          007631' \r
+TTYIN           007614' \r
+TTYSW           000001  SPD\r
+TWSEG0          003360' \r
+TXTPG           013307' \r
+\r\fMACRO V.10                     PAGE 173-19\r
+        SYMBOL TABLE\r
+\r
+TXTSEQ          013310' \r
+TYO             007770' \r
+TYPERR          013256' \r
+TYPM2           010000' \r
+TYPM2A          010005' \r
+TYPM3           010006' \r
+TYPMS1          007760' \r
+TYPMSG          007757' \r
+UNDF            002000  SPD\r
+UNIVR           000000  SPD\r
+UOUT            002065' \r
+UOUT1           002075' \r
+UOUT10          002113' \r
+UOUT12          002103' \r
+UOUT13          002107' \r
+UOUT2           002102' \r
+UOUT30          002117' \r
+UPDAT1          012507' \r
+UPDAT2          012514' \r
+UPDAT3          012505' \r
+UPDAT4          012521' \r
+UPDAT5          012525' \r
+UPDATE          012467' \r
+UTPCLR  047000  000013  \r
+V               000006  \r
+VAR0            003457' \r
+VARA            003462' \r
+VARB            003467' \r
+VARF            000100  SPD\r
+VARHD           013027' \r
+VARHDX          013030' \r
+VBUF            012573' \r
+VCUSTO          000000  SPD\r
+VECREL          013400' \r
+VECTOR          013401' \r
+VEDIT           000000  SPD\r
+VMACRO          000010  SPD\r
+VOUT            002633' \r
+VT              000013  SPD\r
+VUPDAT          000000  SPD\r
+WAIT    072000  000000  \r
+WCHAR           006262' \r
+WCHAR1          006262' \r
+WCHARQ          006262' \r
+WCOUNT          013412' \r
+WWORD           006266' \r
+WWRXE           006272' \r
+WWRXX           013410' \r
+XADD            001235' \r
+XALL0           003314' \r
+XCEED           010015' \r
+XCEED1          010023' \r
+XCEED2          010035' \r
+\r\fMACRO V.10                     PAGE 173-20\r
+        SYMBOL TABLE\r
+\r
+XCEEDS          010014' \r
+XDIV            001240' \r
+XDIV1           001242' \r
+XLRW            001255' \r
+XMUL            001244' \r
+XMUL1           001247' \r
+XPUNG0          004177' \r
+XSUB            001232' \r
+XTRA            000004  SPD\r
+XWD0            004601' \r
+XWD10           004613' \r
+XWD5            004605' \r
+ZA              100000  \r
+ZAL             300000  \r
+ZL              200000  \r
+%DMAC           000006  SPD\r
+%DSYM           000002  SPD\r
+%MAC            000005  SPD\r
+%OP             000003  SPD\r
+%SYM            000001  SPD\r
+.CPL            000130  SPD\r
+.IFBLK          000024  SPD\r
+.LEAF           000004  SPD\r
+.LPP            000067  SPD\r
+.LPTWD          000170  SPD\r
+.PDP            000062  SPD\r
+.R1B            000022  SPD\r
+.SBUF           000120  SPD\r
+.STP            000050  SPD\r
+.TBUF           000120  SPD\r
+.TEMP           013402' \r
+.UNIV           000012  SPD\r
+\fEEEEEEEEEEEEEEE      DDDDDDDDDDDD         DDDDDDDDDDDD         TTTTTTTTTTTTTTT                                          \r
+EEEEEEEEEEEEEEE      DDDDDDDDDDDD         DDDDDDDDDDDD         TTTTTTTTTTTTTTT                                          \r
+EEEEEEEEEEEEEEE      DDDDDDDDDDDD         DDDDDDDDDDDD         TTTTTTTTTTTTTTT                                          \r
+EEE                  DDD         DDD      DDD         DDD            TTT                                                \r
+EEE                  DDD         DDD      DDD         DDD            TTT                                                \r
+EEE                  DDD         DDD      DDD         DDD            TTT                                                \r
+EEE                  DDD         DDD      DDD         DDD            TTT                                                \r
+EEE                  DDD         DDD      DDD         DDD            TTT                                                \r
+EEE                  DDD         DDD      DDD         DDD            TTT                                                \r
+EEEEEEEEEEEE         DDD         DDD      DDD         DDD            TTT                                                \r
+EEEEEEEEEEEE         DDD         DDD      DDD         DDD            TTT                                                \r
+EEEEEEEEEEEE         DDD         DDD      DDD         DDD            TTT                                                \r
+EEE                  DDD         DDD      DDD         DDD            TTT                                                \r
+EEE                  DDD         DDD      DDD         DDD            TTT                                                \r
+EEE                  DDD         DDD      DDD         DDD            TTT                                                \r
+EEE                  DDD         DDD      DDD         DDD            TTT                                                \r
+EEE                  DDD         DDD      DDD         DDD            TTT                                                \r
+EEE                  DDD         DDD      DDD         DDD            TTT                                                \r
+EEEEEEEEEEEEEEE      DDDDDDDDDDDD         DDDDDDDDDDDD               TTT                                                \r
+EEEEEEEEEEEEEEE      DDDDDDDDDDDD         DDDDDDDDDDDD               TTT                                                \r
+EEEEEEEEEEEEEEE      DDDDDDDDDDDD         DDDDDDDDDDDD               TTT                                                \r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  11:23:08\r
+File: DSKB1 :EDDT  .LST   [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:28
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:1949 \r
+File will be deleted after printing\r
+\f\rEDDT   V.005A  - EXEC MODE VERSION                 PAGE 1\r
+        OP DECODER\r
+\r
+\r
+\r
+\r
+\r
+\r
+                        000003  00060   EDDT=3          ;THIS CAUSES A RELOCATABLE VERSION OF EXEC DDT WITH THE\r
+                                00070                   ; PAPER TAPE I/O OPTION TO BE ASSEMBLED (AS OPPOSED TO\r
+                                00080                   ; RELOCATABLE AND/OR ABSOLUTE VERSIONS OF USER DDT\r
+                                00090                   ; AND/OR NON-PAPER TAPE I/O EXEC DDT, ALL OF WHICH CAN\r
+                                00100                   ; BE ASSEMBLED FROM THE SAME SOURCE CODE WITH A\r
+                                00110                   ; DIFFERENT DEFINITION OF "EDDT").\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 2\r
+        OP DECODER\r
+\r
+\r
+\r
+                                00150   REPEAT 0,<\r
+                                00160   \r
+                                00170           HOW TO ASSEMBLE DDT\r
+                                00180   \r
+                                00190           THE SOURCE OF DDT WILL ASSEMBLE INTO SEVERAL DIFFERENT\r
+                                00200           VERSIONS; THE ASSEMBLE IS CONTROLED BY THE VALUES\r
+                                00210           ASSIGNED TO THE SYMBOL EDDT. THIS SYMBOL MUST BE\r
+                                00220           DEFINED AS A SEPARATE FILE PRECEDING THE DDT SOURCE FILE.\r
+                                00230           THE SYMBOL EDDT IS DECODED IN THE FOLLOWING MANNER:\r
+                                00240           BIT 35 A ZERO:  ASSEMBLE USER MODE DDT\r
+                                00250           BIT 35 A ONE:   ASSEMBLE AN EXECUTIVE MODE DDT\r
+                                00260           BIT 34 A ZERO:  DO NOT ASSEMBLE THE PAPER TAPE\r
+                                00270                           FEATURE INTO THE DDT\r
+                                00280           BIT 34 A ONE:   THIS IS IGNORED FOR USER DDT.\r
+                                00290                           FOR AN EXEC DDT, ASSEMBLE\r
+                                00300                           THE PAPER TAPE FEATURE\r
+                                00310           BITS 0-17:      IF THESE BITS ARE ALL ZERO THE\r
+                                00320                           ASSEMBLY WILL BE RELOCATABLE\r
+                                00330                           IF THEY ARE NON-ZERO, THE ASSEMBLY IS\r
+                                00340                           ABSOLUTE STARTING AT THE VALUE IN BITS\r
+                                00350                           0-17 (THE LEFT HALF)\r
+                                00360   \r
+                                00370           EXAMPLE:\r
+                                00380           1.) IF EDDT IS NOT DEFINED BY A PARAMETER ASSIGNMENT,\r
+                                00390           DDT WILL ASSIGN EDDT=0 AND A USER MODE RELOCATABLE\r
+                                00400           DDT WILL RESULT.\r
+                                00410   \r
+                                00420           2.) EDDT=1; A RELOCATABLE EXEC DDT WITHOUT PAPER\r
+                                00430           TAPE FEATURE WILL RESULT.\r
+                                00440   \r
+                                00450           3.) EDDT=3; A RELOCATABLE EXEC DDT WITH PAPER\r
+                                00460           TAPE FEATURE WILL RESULT\r
+                                00470   \r
+                                00480           4.) EDDT=<XWD 4000,1>; AN ABSOLUTE DDT (STARTING\r
+                                00490           ADRESS 4000) WITHOUT PAPER TAPE FEATURE WILL RESULT\r
+                                00500   \r
+                                00510           5.) EDDT=<XWD 4000,3>; AN ABSOLUTE DDT\r
+                                00520           (STARTING ADDRESS 4000) WITH ALL THE PAPER TAPE\r
+                                00530           FEATURES WILL RESULT.\r
+                                00540   >\r
+\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 3\r
+        OP DECODER\r
+\r
+\r
+\r
+\r
+                                00600   IFNDEF EDDT,<EDDT=0>\r
+\r
+\r
+\r
+\r
+                                00650   DEFINE XP (X.,Y.),<\r
+                                00660   IF2,<X.=Y.\r
+                                                                        00670   INTERN X.\r
+                                                                        00680   NSYMS=NSYMS+2>>\r
+                        000000  00690   NSYMS=0         ;INITIAL SYMBOL COUNTER\r
+\r
+        000074                  00710   LOC 74\r
+        000074  003610' 000000' 00720   XWD DDTEND,DDT\r
+        000000'                 00730   RELOC 0\r
+\r
+                                00750   IFN EDDT&<XWD -1,0>,<LOC <EDDT>B53>\r
+\r
+                                00770   IFN EDDT&1,<TITLE EDDT   V.005A  - EXEC MODE VERSION\r
+                        000037  00780           JOBREL=37\r
+                        000036  00790           JOBSYM=36\r
+                        000040  00800           ZLOW=40\r
+                        000000' 00810           DDTX=DDT\r
+                                00820           ENTRY DDTX>\r
+\r
+                                00840   IFE EDDT&1,<TITLE UDDT   V.005  - USER MODE DDT\r
+                                00850           EXTERN JOBREL,JOBSYM,JOBSA\r
+                                00860           NSYMS=NSYMS+6\r
+                                00870           ZLOW=140>\r
+                        000000  00880   F=0             ;FLAGS\r
+                        000001  00890   P=1             ;PUSH DOWN\r
+                        000002  00900   R=2             ;POINTERS TO TABLES, CORE, ETC.\r
+                        000003  00910   S=3\r
+                        000004  00920   W=4             ;CONTAINS DISPATCH ADDRESS IN WORD ASSEMBLER\r
+                        000005  00930   T=5             ;TRANSFER DATA\r
+                        000006  00940   W1=6\r
+                        000007  00950   W2=7\r
+                        000010  00960   SCH=10          ;MODE CONTROL SWITCH FOR OUTPUT\r
+                        000011  00970   AR=11           ;MODE CONTROL SWITCH FOR OUTPUT\r
+                        000012  00980   ODF=12          ;MODE CONTROL SWITCH FOR OUTPUT - CURRENT RADIX\r
+                        000002  00990   A=R\r
+                        000003  01000   B=S\r
+                        000004  01010   C=W\r
+\r
+                        000004  01030   PRS=4\r
+                        000120  01040   TTYY=120\r
+                        000104  01050   PTRR=104\r
+                        000100  01060   PTPP=100\r
+\r
+                        000050  01080   LPDL=50         ;MAX LENGTH PUSH DOWN LIST\r
+\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 4\r
+        OP DECODER\r
+\r
+                        100000  01110   TIF=100000              ;TRUNCATE TO 18 BITS -  SET BY SPACE OR COMMA\r
+                        000100  01120   PTF=100         ; +, -, OR * HAS BEEN TYPED\r
+                        000400  01130   CTF=400\r
+                        000004  01140   SF=4            ;SYLLABLE FLAG\r
+                        000001  01150   QF=1            ;QUANTITY TYPED IN TO WORD ASSEMBLER\r
+\r
+                        000040  01170   CF=40           ;  TYPED\r
+                        010000  01180   CCF=10000               ;  TYPED\r
+                        000002  01190   MF=2            ;MINUS SIGN TYPED IN\r
+                        000020  01200   LTF=20          ;LETTER TYPED IN TO CURRENT SYLLABLE\r
+                        000010  01210   ROF=10          ;REGISTER OPEN FLAG\r
+                        004000  01220   STF=4000\r
+                        001000  01230   FAF=1000                ; < TYPED\r
+                        002000  01240   SAF=2000                ; > TYPED\r
+\r
+                        020000  01260   FPF=20000               ; . TYPED IN\r
+                        400000  01270   FEF=400000              ; E FLAG\r
+\r
+                        000200  01290   MLF=200         ;*FLAG\r
+                        040000  01300   DVF=40000               ;DIVIDE FLAG\r
+\r
+                        000000  01320   PID=0           ;=0 IF SYMBOL TABLE POINTER IS IN JOBSYM\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 5\r
+        OP DECODER\r
+\r
+\r
+                                01350   ;RIGHT HALF FLAGS\r
+\r
+                        000002  01370   ITF=2   ;INSTRUCTION TYPED IF ITF=1\r
+                        000004  01380   OUTF=4  ;OUTPUT IF OUTF=1\r
+                        000400  01390   CF1=400         ;OUTPUT 1 REGISTER AS CONSTANT\r
+                        002000  01400   LF1=2000                ;OUTPUT 1 REGISTER AS FORCED SYMBOLIC OR CONSTANT\r
+                        000001  01410   Q2F=1           ;NUMBER TYPED AFTER ALT MODE \r
+                        000020  01420   SBF=20\r
+                        000200  01430   NAF=200         ;NEGATIVE ADDRESSES PERMISSABLE\r
+                        004000  01440   POWF=4000               ;ARGUMENT FOR EXPONENT COMING\r
+                        010000  01450   SLL=10000               ;STOP LOOKING FOR LOCALS\r
+\r
+                        040000  01470   GLOBAL=040000           ;GLOBAL SYMBOL\r
+                        100000  01480   LOCAL=100000\r
+                        740000  01490   PNAME=740000            ;PROGRAM NAME\r
+                        200000  01500   DELI=200000             ;DELETE INPUT\r
+                        400000  01510   DELO=400000             ;DELETE OUTPUT\r
+\r
+        000000'                 01530   DDT:\r
+                                01540   ENTRY DDT\r
+                        000002  01550   NSYMS=NSYMS+2\r
+\r
+\r
+                                01580   RADIX 10\r
+                        000010  01590   NBP=8   ;NUMBER OF BREAKPOINTS\r
+                                01600   DEFINE DBPNT (Z.)<XP $'Z.'B,B1ADR+3*Z.-3>\r
+                        000000  01610   ZZ=0\r
+                                01620   REPEAT NBP,<DBPNT \<ZZ=ZZ+1>>\r
+                                        DBPNT \<ZZ=ZZ+1>^XP $1B,B1ADR+3*1-3^                                    DBPNT \<ZZ=ZZ+1>^XP $2B,B1ADR+3*2-3^                                    DBPNT \<ZZ=ZZ+1>^XP $3B,B1ADR+3*3-3^                                    DBPNT \<ZZ=ZZ+1>^XP $4B,B1ADR+3*4-3^                                    DBPNT \<ZZ=ZZ+1>^XP $5B,B1ADR+3*5-3^                                    DBPNT \<ZZ=ZZ+1>^XP $6B,B1ADR+3*6-3^                                    DBPNT \<ZZ=ZZ+1>^XP $7B,B1ADR+3*7-3^                                    DBPNT \<ZZ=ZZ+1>^XP $8B,B1ADR+3*8-3^                            01630   RADIX 8\r
+\r
+\r
+                                01660   XP $M,MSK^\r
+                                01670   XP $I,SAVPI^\r
+                                01680   XP DDTEND,DDTEND^\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 6\r
+        OP DECODER\r
+\r
+\r
+\r
+                                01720   IFN EDDT&1,<\r
+\r
+                                01740   XP PI,4B11^\r
+                                01750   XP PTP,100B11^\r
+                                01760   XP PTR,104B11^\r
+                                01770   XP CDR,114B11^\r
+                                01780   XP TTY,120B11^\r
+                                01790   XP LPT,124B11^\r
+                                01800   XP DC,200B11^\r
+                                01810   XP DIS,130B11^\r
+                                01820   XP PLT,140B11^\r
+                                01830   XP CR,150B11^\r
+                                01840   XP DSK,170B11^\r
+                                01850   XP DTC,210B11^\r
+                                01860   XP DTS,214B11^\r
+                                01870   XP DCSA,300B11^\r
+                                01880   XP DCSB,304B11^\r
+                                01890   XP DF,270B11^\r
+                                01900   XP MTC,220B11^\r
+                                01910   XP MTS,224B11^\r
+                                01920   XP MTM,230B11^\r
+                                01930   XP DLS,240B11^\r
+                                01940   XP TDC,320B11^\r
+                                01950   XP TDS,324B11^\r
+                                01960   XP TMC,340B11^\r
+                                01970   XP TMS,344B11>^\r
+\r
+                                01990   XP JOV,2554B11^\r
+                                02000   XP JEN,2545B11^\r
+                                02010   XP HALT,2542B11^\r
+\r
+\r
+                777777  777661' 02040   LOW=DDT-NSYMS-1\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 7\r
+        OP DECODER\r
+\r
+\r
+\r
+        000000' 264000  002615' 02180   DDT:    JSR SAVE\r
+        000001' 260040  001307' 02190           PUSHJ P,REMOVB\r
+        000002' 554240  002213' 02200           HLRZ T,ESTU\r
+        000003' 274240  002213' 02210           SUB T,ESTU\r
+        000004' 270260  002230' 02220           ADD T,@SYMP\r
+        000005' 602240  777777  02230           TRNE T,-1\r
+        000006' 254000  003022' 02240           JRST IFIX\r
+        000007' 621000  000010  02250   DD1:    TLZ F,ROF               ;CLOSE ANY OPEN REGISTER\r
+        000010' 260040  002657' 02260           PUSHJ P,CRF\r
+        000011' 200240  003432' 02270   DD1.5:  MOVE T,[XWD SCHM,SCH]\r
+        000012' 251240  000012  02280           BLT T,ODF       ;LOAD ACS\r
+        000013' 402000  002203' 02290   DD2:    CLEARM PRNC             ;PARENTHESES COUNT\r
+        000014' 201040  003540' 02300           MOVEI P,PS\r
+        000015' 200240  002213' 02310   LIS:    MOVE T,ESTU\r
+        000016' 202240  002214' 02320           MOVEM T,ESTUT           ;INIT UNDEFINED SYM ASSEM\r
+        000017' 630000  003433' 02330           TDZ F,[XWD 777777-ROF-STF,LF1+CF1+SBF+2+Q2F]\r
+        000020' 630000  003434' 02340   LIS0:   TDZ F,[XWD 777777-ROF-STF-FAF-SAF,NAF]\r
+        000021' 402000  002201' 02350           CLEARM,WRD\r
+        000022' 402000  002204' 02360   LIS1:   CLEARM,FRASE\r
+        000023' 201240  000001  02370   LIS2:   MOVEI T,1\r
+        000024' 202240  002210' 02380           MOVEM T,FRASE1\r
+        000025' 621000  040200  02390           TLZ F,MLF+DVF\r
+        000026' 621000  030044  02400   L1:     TLZ F,CF+CCF+SF+FPF             ;TURN OFF CONTROL, SYL, PERIOD FLAG\r
+        000027' 402000  002205' 02410           CLEARM,SYL\r
+        000030' 402000  002222' 02420   L1RPR:  CLEARM,SYM\r
+        000031' 201240  000006  02430           MOVEI T,6\r
+        000032' 202240  002313' 02440           MOVEM T,TEM             ;INIT SYMBOL COUNTER\r
+        000033' 402000  002211' 02450           CLEARM,DEN\r
+        000034' 402000  002202' 02460           CLEARM,WRD2\r
+\r
+        000035' 260040  002666' 02480   L2:     PUSHJ P,TIN             ;PICK UP CHARACTER\r
+        000036' 301240  000141  02490           CAIL T,"A"+40           ;LOWER CASE A\r
+        000037' 303240  000172  02500           CAILE T,"Z"+40          ;LOWER CASE Z\r
+        000040' 254000  000042' 02510           JRST .+2\r
+        000041' 640240  000040  02520           TRC T,40                ;CHANGE LOWER CASE TO UPPER CASE\r
+        000042' 603000  000040  02530           TLNE F,CF               ;CONTROL FLAG\r
+        000043' 254000  000050' 02540           JRST L21\r
+        000044' 307240  000132  02550           CAIG T,"Z"              ;Z\r
+        000045' 305240  000101  02560           CAIGE T,"A"             ;A\r
+        000046' 254000  000050' 02570           JRST .+2\r
+        000047' 254000  000221' 02580           JRST LET\r
+        000050' 200100  000005  02590   L21:    MOVE R,T\r
+        000051' 231100  000003  02600           IDIVI R,3\r
+        000052' 135203  002744' 02610           LDB W,BDISP(R+1)\r
+        000053' 305200  000570  02620           CAIGE W,MULT-DDT        ;FIRST EVAL ROUTINE\r
+        000054' 254004  000000' 02630           JRST DDT(W)\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 8\r
+        OP DECODER\r
+\r
+\r
+        000055' 200240  002205' 02660   L211:   MOVE T,SYL\r
+        000056' 627000  000020  02670           TLZN F,LTF\r
+        000057' 254000  000271' 02680           JRST POWER\r
+        000060' 260040  000351' 02690           PUSHJ P,EVAL\r
+        000061' 254000  000137' 02700           JRST UND1\r
+        000062' 623000  000002  02710   L4:     TLZE F,MF\r
+        000063' 210240  000005  02720           MOVN T,T\r
+        000064' 607000  000004  02730           TLNN F,SF\r
+        000065' 302200  000577  02740           CAIE W,LPRN-DDT\r
+        000066' 254000  000070' 02750           JRST .+2\r
+        000067' 254000  000577' 02760           JRST LPRN\r
+\r
+        000070' 250240  002210' 02780           EXCH T,FRASE1\r
+        000071' 607000  040000  02790           TLNN F,DVF\r
+        000072' 223240  002210' 02800           IMULB T,FRASE1\r
+        000073' 623000  040000  02810           TLZE F,DVF\r
+        000074' 233240  002210' 02820           IDIVB T,FRASE1\r
+        000075' 305200  000573  02830           CAIGE W,ASSEM-DDT\r
+        000076' 254004  000000' 02840           JRST DDT(W)             ;MULTIPLY OR DIVIDE\r
+        000077' 273240  002204' 02850           ADDB T,FRASE\r
+        000100' 305200  000623  02860           CAIGE W,SPACE-DDT\r
+        000101' 254004  000000' 02870           JRST DDT(W)             ; + - @ ,\r
+\r
+        000102' 270240  002201' 02890           ADD T,WRD\r
+        000103' 603000  100000  02900           TLNE F,TIF              ;TRUNCATE INDICATOR FLAG\r
+        000104' 500240  002201' 02910           HLL T,WRD               ;TRUNCATE\r
+        000105' 202240  002201' 02920           MOVEM T,WRD\r
+        000106' 607000  000001  02930           TLNN F,QF\r
+        000107' 200240  002206' 02940           MOVE T,LWT\r
+        000110' 402000  000002  02950           CLEARM,R\r
+        000111' 200300  002214' 02960           MOVE W1,ESTUT\r
+        000112' 316300  002213' 02970           CAMN W1,ESTU\r
+        000113' 254000  000116' 02980           JRST L5\r
+        000114' 303200  000700  02990           CAILE W,CARR-DDT\r
+        000115' 254000  000123' 03000           JRST ERR\r
+        000116' 307200  000627  03010   L5:     CAIG W,RPRN-DDT\r
+        000117' 254004  000000' 03020           JRST DDT(W)\r
+        000120' 261040  000445' 03030           PUSH P,KILRET\r
+        000121' 336000  002203' 03040           SKIPN PRNC\r
+        000122' 254004  000000' 03050           JRST DDT(W)\r
+\r
+        000123' 201300  000077  03070   ERR:    MOVEI W1,"?"\r
+        000124' 254000  000130' 03080           JRST WRONG1\r
+        000125' 201300  000125  03090   UNDEF:  MOVEI W1,"U"\r
+        000126' 254000  000130' 03100           JRST WRONG1\r
+        000127' 200300  003435' 03110   WRONG:  MOVE W1,[ASCII /XXX/]\r
+        000130' 201040  003540' 03120   WRONG1: MOVEI P,PS\r
+        000131' 260040  002171' 03130           PUSHJ P,TEXT\r
+        000132' 260040  002714' 03140   IFN EDDT&1,<PUSHJ P,LISTEN\r
+        000133' 255000  000000  03150           JFCL>\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 9\r
+        OP DECODER\r
+\r
+        000134' 201040  003540' 03170   RET:    MOVEI P,PS\r
+        000135' 260040  002662' 03180           PUSHJ P,LCT             ;COMMON RETURN FOR TAB;,JRST LIS\r
+        000136' 254000  000013' 03190           JRST DD2\r
+\r
+        000137' 200100  002214' 03210   UND1:   MOVE R,ESTUT            ;UNDEFINED SYM ASSEMBLER\r
+        000140' 574140  002214' 03220           HLRE S,ESTUT\r
+        000141' 240140  777777  03230           ASH S,-1                ;SETUP EVAL END TEST\r
+        000142' 260040  000357' 03240           PUSHJ P,EVAL2\r
+        000143' 306200  000573  03250           CAIN W,ASSEM-DDT\r
+        000144' 607000  000010  03260           TLNN F,ROF\r
+        000145' 254000  003305' 03270           JRST OPEVAL\r
+        000146' 332000  002203' 03280           SKIPE PRNC\r
+        000147' 254000  003305' 03290           JRST OPEVAL\r
+        000150' 201240  000043  03300           MOVEI T,"#"\r
+        000151' 302200  000573  03310           CAIE W,ASSEM-DDT\r
+        000152' 260040  002676' 03320           PUSHJ P,TOUT\r
+\r
+        000153' 210100  003436' 03340           MOVN R,[XWD 2,2]\r
+        000154' 273100  002214' 03350           ADDB R,ESTUT\r
+        000155' 200240  002222' 03360           MOVE T,SYM\r
+        000156' 661240  040000  03370           TLO T,GLOBAL\r
+        000157' 202242  000000  03380           MOVEM T,(R)\r
+        000160' 550240  002227' 03390           HRRZ T,LLOCO\r
+        000161' 603000  000002  03400           TLNE F,MF\r
+        000162' 661240  400000  03410           TLO T,400000\r
+        000163' 202242  000001  03420           MOVEM T,1(R)\r
+        000164' 201240  000000  03430           MOVEI T,0\r
+        000165' 254000  000062' 03440           JRST L4\r
+\r
+        000166' 260040  002657' 03460   QUESTN: PUSHJ P,CRF             ;LIST UNDEFINED SYMBOLS\r
+        000167' 200100  002213' 03470           MOVE R,ESTU\r
+        000170' 325100  000007' 03480   QUEST1: JUMPGE R,DD1\r
+        000171' 200242  000000  03490           MOVE T, (R)\r
+        000172' 334300  002213' 03500           SKIPA W1,ESTU\r
+\r
+        000173' 270300  003436' 03520   QUEST2: ADD W1,[XWD 2,2]\r
+        000174' 312246  000000  03530           CAME T,(W1)\r
+        000175' 254000  000173' 03540           JRST QUEST2\r
+\r
+        000176' 312100  000006  03560   QUEST3: CAME R,W1\r
+        000177' 254000  000202' 03570           JRST QUEST4\r
+        000200' 260040  002030' 03580           PUSHJ P,SPT\r
+        000201' 260040  002657' 03590           PUSHJ P,CRF\r
+        000202' 270100  003436' 03600   QUEST4: ADD R,[XWD 2,2]\r
+        000203' 254000  000170' 03610           JRST QUEST1\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 10\r
+        OP DECODER\r
+\r
+\r
+        000204' 405240  000017  03640   NUM:    ANDI T,17               ;T HOLDS CHARACTER\r
+        000205' 603000  020040  03650           TLNE F,CF+FPF\r
+        000206' 254000  000251' 03660           JRST NM1\r
+        000207' 200200  002205' 03670           MOVE W,SYL\r
+        000210' 242200  000003  03680           LSH W,3\r
+        000211' 270200  000005  03690           ADD W,T\r
+        000212' 202200  002205' 03700           MOVEM W,SYL\r
+        000213' 200200  002211' 03710           MOVE W,DEN\r
+        000214' 221200  000012  03720           IMULI W,12              ;CONVERT TO DECIMAL\r
+        000215' 270200  000005  03730           ADD W,T\r
+        000216' 202200  002211' 03740           MOVEM W,DEN\r
+        000217' 344240  000235' 03750   LE1:    AOJA T,LE1A\r
+\r
+        000220' 201240  000135  03770   PERC:   MOVEI T,47+101-13       ;PERCENT SIGN\r
+        000221' 641000  020004  03780   LET:    TLC F,SF+FPF            ;EXPONENT IFF LTF'*FEF'*(T=105)*SF*FPF=1\r
+        000222' 627000  420024  03790           TLZN F,LTF+FEF+SF+FPF\r
+        000223' 302240  000105  03800           CAIE T,105              ; E\r
+        000224' 665000  000020  03810           TLOA F,LTF\r
+        000225' 665000  400000  03820           TLOA F,FEF\r
+        000226' 254000  000234' 03830           JRST LET1\r
+        000227' 627000  000002  03840           TLZN F,MF\r
+        000230' 334300  002205' 03850           SKIPA W1,SYL\r
+        000231' 210300  002205' 03860           MOVN W1,SYL\r
+        000232' 202300  002215' 03870           MOVEM W1,FSV\r
+        000233' 402000  002211' 03880           CLEARM DEN\r
+        000234' 275240  000066  03890   LET1:   SUBI T,101-13           ;FORM RADIX 50 SYMBOL\r
+        000235' 661000  000005  03900   LE1A:   TLO F,SF+QF\r
+        000236' 200200  002222' 03910   LE2:    MOVE W,SYM\r
+        000237' 221200  000050  03920           IMULI W,50              ;CONVERT TO RADIX 50\r
+        000240' 270200  000005  03930           ADD W,T\r
+        000241' 371000  002313' 03940           SOSL,TEM                ;IGNORE CHARACS AFTER 6\r
+        000242' 202200  002222' 03950           MOVEM W,SYM\r
+        000243' 254000  000035' 03960           JRST L2\r
+\r
+        000244' 250240  002202' 03980   NUM1:   EXCH T,WRD2             ;FORM NUMBER AFTER $\r
+        000245' 221240  000012  03990           IMULI T,12\r
+        000246' 272240  002202' 04000           ADDM T,WRD2\r
+        000247' 660000  000001  04010           TRO F,Q2F\r
+        000250' 254000  000035' 04020           JRST L2\r
+\r
+        000251' 603000  000040  04040   NM1:    TLNE F,CF\r
+        000252' 254000  000244' 04050           JRST NUM1\r
+        000253' 201300  000006  04060           MOVEI W1,6              ;FORM FLOATING POINT NUMBER\r
+        000254' 350000  000255' 04070           AOS NM1A\r
+        000255' 201340  000000  04080   NM1A:   MOVEI W2,0\r
+        000256' 205100  201400  04090           MOVSI R,201400\r
+        000257' 622340  000001  04100   NM1A1:  TRZE W2,1\r
+        000260' 164106  002154' 04110           FMPR R,FT(W1)\r
+        000261' 322340  000264' 04120           JUMPE W2,NM1B\r
+        000262' 242340  777777  04130           LSH W2,-1\r
+        000263' 367300  000257' 04140           SOJG W1,NM1A1\r
+        000264' 205305  211000  04150   NM1B:   MOVSI W1,211000(T)\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 10-1\r
+        OP DECODER\r
+\r
+        000265' 164100  000006  04160           FMPR    R,W1            ;COMPUTE VALUE OF NEW DIGIT\r
+        000266' 147100  002221' 04170           FADRB   R,FH            ;ADD VALUE INTO FLOATING NO.\r
+        000267' 202100  002205' 04180           MOVEM R,SYL\r
+        000270' 344240  000235' 04190           AOJA T,LE1A\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 11\r
+        OP DECODER\r
+\r
+\r
+        000271' 607000  400000  04220   POWER:  TLNN F,FEF\r
+        000272' 254000  000062' 04230           JRST L4         ;NO EXPONENT\r
+        000273' 302200  000575' 04240           CAIE W,PLUS\r
+        000274' 306200  000574' 04250           CAIN W,MINUS\r
+        000275' 662000  004000  04260           TROE F,POWF\r
+        000276' 624000  004000  04270           TRZA F,POWF\r
+        000277' 254004  000000  04280           JRST (W)                ; E+-\r
+\r
+        000300' 200340  002211' 04300           MOVE W2,DEN\r
+        000301' 402000  002204' 04310           CLEARM FRASE\r
+        000302' 201300  002153' 04320           MOVEI W1,FT-1\r
+        000303' 623000  000002  04330           TLZE F,MF\r
+        000304' 201300  002162' 04340           MOVEI W1,FT01\r
+        000305' 334240  002215' 04350           SKIPA T,FSV\r
+        000306' 242340  777777  04360   POW2:   LSH W2,-1\r
+        000307' 622340  000001  04370           TRZE W2,1\r
+        000310' 164246  000000  04380           FMPR T,(W1)\r
+        000311' 322340  000062' 04390           JUMPE W2,L4\r
+        000312' 364300  000306' 04400           SOJA W1,POW2\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 12\r
+        OP DECODER\r
+\r
+\r
+\r
+        000313' 200240  002226' 04440   PERIOD: MOVE T,LLOC\r
+        000314' 603000  000004  04450           TLNE F,SF               ;SYLLABLE STARTED\r
+        000315' 200240  002211' 04460           MOVE T,DEN\r
+        000316' 202240  002205' 04470           MOVEM T,SYL\r
+        000317' 603000  020000  04480           TLNE    F,FPF           ;HAS A PERIOD BEEN SEEN BEFORE?\r
+        000320' 661000  000020  04490           TLO     F,LTF           ;YES, TWO PERIODS MAKES A SYMBOL\r
+        000321' 667000  020005  04500           TLON F,FPF+SF+QF\r
+        000322' 201240  000000  04510           MOVEI T,0\r
+        000323' 231240  000400  04520           IDIVI T,400\r
+        000324' 332000  000005  04530           SKIPE T\r
+        000325' 641240  243000  04540           TLC T,243000\r
+        000326' 641300  233000  04550           TLC W1,233000\r
+        000327' 140240  003437' 04560           FAD     T,[0]           ;NORMALIZE T AND W1\r
+        000330' 140300  003437' 04570           FAD     W1,[0]\r
+        000331' 144240  000006  04580           FADR    T,W1\r
+        000332' 202240  002221' 04590           MOVEM T,FH\r
+        000333' 513000  000255' 04600           HLLZS NM1A\r
+        000334' 201240  000045  04610           MOVEI T,45              ;RADIX 50 PERIOD\r
+        000335' 254000  000236' 04620           JRST LE2\r
+\r
+        000336' 334240  002206' 04640   QUAN:   SKIPA T,LWT             ;LAST QUANTITY TYPED\r
+        000337' 201240  002231' 04650   PILOC:  MOVEI T, SAVPI\r
+        000340' 202240  002205' 04660   QUAN1:  MOVEM T,SYL\r
+        000341' 661000  000005  04670   QUAN2:  TLO F,SF+QF             ;WRD,SYL STARTED\r
+        000342' 621000  010040  04680           TLZ F,CF+CCF\r
+        000343' 254000  000035' 04690           JRST L2\r
+\r
+        000344'                 04710   CONTRO:                         ;SOME KIND OF ALTMODE\r
+        000344' 201240  000044  04720   IFN EDDT&1,<    MOVEI T,"$"     ;$\r
+        000345' 260040  002676' 04730           PUSHJ P,TOUT            ;TYPE OUT $\r
+                                04740   >\r
+        000346' 663000  000040  04750   DOLLAR: TLOE F,CF\r
+        000347' 661000  010000  04760           TLO F,CCF\r
+        000350' 254000  000035' 04770           JRST L2\r
+\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 13\r
+        OP DECODER\r
+\r
+\r
+        000351' 200100  002212' 04810   EVAL:   MOVE R,PRGM             ;LOOK UP SYMBOL\r
+        000352' 525300  237777  04820   EVAL0:  HRLOI W1,37777+DELI\r
+        000353' 574160  002230' 04830           HLRE S,@SYMP\r
+        000354' 240140  777777  04840           ASH S,-1        ;SETUP END TEST\r
+        000355' 254000  000362' 04850           JRST EVAL3\r
+\r
+        000356' 270100  003436' 04870   EVAL1:  ADD R,[XWD 2,2]\r
+        000357' 331000  000002  04880   EVAL2:  SKIPL R\r
+        000360' 200120  002230' 04890           MOVE R,@SYMP\r
+        000361' 347140  000374' 04900           AOJG S,CPOPJ            ;TRNASFER IF NO SYMBOL FOUND\r
+        000362' 200242  000000  04910   EVAL3:  MOVE T,(R)\r
+        000363' 430240  002222' 04920           XOR T,SYM\r
+        000364' 607240  740000  04930           TLNN T,PNAME\r
+        000365' 665300  100000  04940           TLOA W1,LOCAL\r
+        000366' 612240  000006  04950           TDNE T,W1\r
+        000367' 254000  000356' 04960           JRST EVAL1\r
+        000370' 607240  340000  04970           TLNN T,340000\r
+        000371' 254000  000356' 04980           JRST EVAL1\r
+        000372' 200242  000001  04990           MOVE T,1(R)\r
+        000373' 350001  000000  05000   CPOPJ1: AOS (P)         ;FOUND SYMBOL, SKIP\r
+        000374' 263040  000000  05010   CPOPJ:  POPJ P,\r
+\r
+                                05030   ;BIT 40 - DELETE OUTPUT\r
+                                05040   ; 20 - DELETE INPUT\r
+                                05050   ; 10 - LOCAL\r
+                                05060   ; 04 -GLOBAL\r
+                                05070   ; NO BITS - PROGRAM NAME\r
+\r
+        000375' 260040  002740' 05090   TEXI:   PUSHJ P,TEXIN           ;INPUT TEXT\r
+        000376' 202240  002205' 05100           MOVEM T,SYL\r
+        000377' 201300  000005  05110           MOVEI W1,5\r
+        000400' 201200  000000  05120           MOVEI T-1,0\r
+        000401' 260040  002740' 05130           PUSHJ P,TEXIN\r
+        000402' 306240  000033  05140           CAIN T,33               ;NEW ALT MODE, ESCAPE\r
+        000403' 254000  000341' 05150           JRST QUAN2\r
+        000404' 603000  000040  05160           TLNE F,CF\r
+        000405' 254000  000422' 05170           JRST SIXBIN\r
+        000406' 334000  000000  05180           SKIPA\r
+        000407' 260040  002740' 05190   TEXI2:  PUSHJ P,TEXIN\r
+        000410' 316240  002205' 05200           CAMN T,SYL\r
+        000411' 364300  000415' 05210           SOJA W1,TEXI3\r
+        000412' 241240  777771  05220           ROT T,-7\r
+        000413' 246200  000007  05230           LSHC T-1,7\r
+        000414' 364300  000407' 05240           SOJA W1,TEXI2\r
+\r
+        000415' 246200  777735  05260   TEXI3:  LSHC T-1,-43\r
+        000416' 321300  000340' 05270           JUMPL W1,QUAN1\r
+        000417' 242240  000007  05280           LSH T,7\r
+        000420' 364300  000416' 05290           SOJA W1,.-2\r
+\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 14\r
+        OP DECODER\r
+\r
+        000421' 260040  002740' 05320   SIXBI1: PUSHJ P,TEXIN    ; INPUT TEXT (SIXBIT)\r
+        000422' 316240  002205' 05330   SIXBIN: CAMN T,SYL\r
+        000423' 254000  000431' 05340           JRST SIXBI2\r
+        000424' 405240  000077  05350           ANDI T,77\r
+        000425' 640240  000040  05360           TRC T,40\r
+        000426' 241240  777772  05370           ROT T,-6\r
+        000427' 246200  000006  05380           LSHC T-1,6\r
+        000430' 364300  000421' 05390           SOJA W1,SIXBI1\r
+        000431' 200240  000004  05400   SIXBI2: MOVE T,T-1\r
+        000432' 321300  000340' 05410           JUMPL W1,QUAN1\r
+        000433' 242240  000006  05420           LSH T,6\r
+        000434' 364300  000432' 05430           SOJA W1,.-2\r
+\r
+        000435' 607000  000020  05450   KILL:   TLNN F,LTF              ;DELETE SYMBOLS\r
+        000436' 254000  000446' 05460           JRST KILLA\r
+        000437' 260040  000351' 05470           PUSHJ P,EVAL\r
+        000440' 254000  000462' 05480           JRST KILL1\r
+        000441' 201240  000002  05490           MOVEI T,DELO/200000             ;DELETE OUTPUT\r
+        000442' 603000  010000  05500           TLNE F,CCF\r
+        000443' 201240  000001  05510           MOVEI T,DELI/200000             ;NO INPUT OR OUTPUT\r
+        000444' 137240  003440' 05520           DPB T,[POINT 2,(R),1]   ;LEFT 2 BITS IN SYMBOL\r
+        000445' 254000  000134' 05530   KILRET: JRST RET                ;USED AS A CONSTANT\r
+\r
+        000446' 607000  000001  05550   KILLA:  TLNN F,QF\r
+        000447' 607000  010000  05560           TLNN F,CCF\r
+        000450' 254000  000123' 05570           JRST ERR\r
+        000451' 200100  002200' 05580           MOVE R,KILC\r
+        000452' 202120  002230' 05590           MOVEM R,@SYMP           ;RESTORE INIT SYMS\r
+        000453' 552100  002213' 05600           HRRZM R,ESTU\r
+        000454' 202100  002212' 05610           MOVEM R,PRGM\r
+        000455' 515240  600000  05620           HRLZI T,DELO+DELI\r
+        000456' 412242  000000  05630           ANDCAM T,(R)            ;GET RID OF DELETE BITS IN INITIAL TABLE\r
+        000457' 253100  000460' 05640           AOBJN R,.+1\r
+        000460' 253100  000456' 05650           AOBJN R,.-2\r
+        000461' 254000  000134' 05660           JRST RET\r
+\r
+        000462' 200100  002213' 05680   KILL1:  MOVE R,ESTU             ;REMOVE UNDEFINED SYMS\r
+        000463' 325100  000125' 05690           JUMPGE R,UNDEF\r
+        000464' 260040  000352' 05700   KILL2:  PUSHJ P,EVAL0\r
+        000465' 254000  000134' 05710           JRST RET\r
+        000466' 260040  000470' 05720           PUSHJ P,REMUN\r
+        000467' 254000  000464' 05730           JRST KILL2\r
+\r
+        000470' 200140  003436' 05750   REMUN:  MOVE S,[XWD 2,2]        ;REMOVE ONE UNDEFINED SYMBOL\r
+        000471' 273140  002213' 05760           ADDB S,ESTU\r
+        000472' 200203  777776  05770           MOVE W,-2(S)\r
+        000473' 202202  000000  05780           MOVEM W,(R)\r
+        000474' 200203  777777  05790           MOVE W,-1(S)\r
+        000475' 202202  000001  05800           MOVEM W,1(R)\r
+        000476' 263040  000000  05810           POPJ P,\r
+\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 15\r
+        OP DECODER\r
+\r
+\r
+        000477' 607000  000020  05850   TAG:    TLNN F,LTF   ; NO LETTERS IS ERROR\r
+        000500' 254000  000123' 05860           JRST ERR   ; GO SAY ERROR\r
+        000501' 603000  001000  05870           TLNE F,FAF   ; DEFINE SYMBOLS\r
+        000502' 254000  000507' 05880           JRST DEFIN              ;A<B:\r
+        000503' 603000  000040  05890           TLNE F,CF               ;DEFINE SYMBOL AS OPEN REGISTER\r
+        000504' 254000  000555' 05900           JRST SETNAM\r
+        000505' 200200  002227' 05910           MOVE W,LLOCO\r
+        000506' 552200  002224' 05920           HRRZM W,DEFV\r
+\r
+        000507' 260040  000351' 05940   DEFIN:  PUSHJ P,EVAL\r
+        000510' 254000  000515' 05950           JRST DEF1\r
+        000511' 315100  002200' 05960           CAMGE R,KILC            ;INITIAL SYMBOL?\r
+        000512' 254000  000525' 05970           JRST DEF2               ;NO, REDEFINE\r
+        000513' 201240  000001  05980           MOVEI T,DELI/200000     ;YES, DELETE AND DEFINE NEW ONE\r
+        000514' 137240  003440' 05990           DPB T,[POINT 2,(R),1]   ;LEFT 2 BITS OF SYMBOL\r
+        000515' 210100  003436' 06000   DEF1:   MOVN R,[XWD 2,2]\r
+        000516' 273120  002230' 06010           ADDB R,@SYMP    ;MOVE UNDEFINED TABLE 2 REGISTERS\r
+        000517' 550240  002213' 06020           HRRZ T,ESTU\r
+        000520' 275240  000002  06030           SUBI T,2\r
+        000521' 504240  002213' 06040           HRL T,ESTU\r
+        000522' 542240  002213' 06050           HRRM T,ESTU\r
+        000523' 335000  002213' 06060           SKIPGE ESTU\r
+        000524' 251242  777777  06070           BLT T,-1(R)\r
+        000525' 200240  002224' 06080   DEF2:   MOVE T,DEFV\r
+        000526' 202242  000001  06090           MOVEM T,1(R)            ;PUT IN NEW VALUE\r
+        000527' 205240  040000  06100           MOVSI T,GLOBAL\r
+        000530' 437240  002222' 06110           IORB T,SYM\r
+        000531' 202242  000000  06120           MOVEM T,(R)             ;PUT IN NEW SYM AS GLOBAL\r
+        000532' 200100  002213' 06130           MOVE R,ESTU\r
+\r
+        000533' 325100  000134' 06150   DEF3:   JUMPGE R,RET            ;PATCH IN VALUE FOR UNDEF SYM ENTRY\r
+        000534' 200240  002222' 06160           MOVE T,SYM\r
+        000535' 312242  000000  06170           CAME T,(R)\r
+        000536' 254000  000553' 06180           JRST DEF4\r
+        000537' 200140  002224' 06190           MOVE S,DEFV\r
+        000540' 335002  000001  06200           SKIPGE, 1(R)\r
+        000541' 210140  000003  06210           MOVN S,S\r
+        000542' 261040  000002  06220           PUSH P,R\r
+        000543' 200102  000001  06230           MOVE R,1(R)\r
+        000544' 260040  001404' 06240           PUSHJ P,FETCH\r
+        000545' 254000  000123' 06250           JRST ERR\r
+        000546' 270140  000005  06260           ADD S,T\r
+        000547' 542140  000005  06270           HRRM S,T\r
+        000550' 260040  001376' 06280           PUSHJ P,DEP\r
+        000551' 262040  000002  06290           POP P,R\r
+        000552' 260040  000470' 06300           PUSHJ P,REMUN\r
+        000553' 270100  003436' 06310   DEF4:   ADD R,[XWD 2,2]         ;REMOVE THE NOW DEFINED SYMBOL\r
+        000554' 254000  000533' 06320           JRST DEF3\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 16\r
+        OP DECODER\r
+\r
+\r
+        000555' 200120  002230' 06350   SETNAM: MOVE R,@SYMP            ;SET PROGRAM NAME - DOLLAR COLON\r
+        000556' 200200  000002  06360   SET1:   MOVE W,R\r
+        000557' 325100  000125' 06370   SET2:   JUMPGE R,UNDEF\r
+        000560' 200242  000000  06380           MOVE T,(R)\r
+        000561' 270100  003436' 06390           ADD R,[XWD 2,2]\r
+        000562' 603240  740000  06400           TLNE T,PNAME\r
+        000563' 254000  000557' 06410           JRST SET2\r
+        000564' 312240  002222' 06420           CAME T,SYM\r
+        000565' 254000  000556' 06430           JRST SET1\r
+        000566' 202200  002212' 06440           MOVEM W,PRGM\r
+        000567' 254000  000134' 06450           JRST RET\r
+\r
+        000570' 665000  000300  06470   MULT:   TLOA F,PTF+MLF          ;*\r
+        000571' 661000  040100  06480   DIVD:   TLO F,DVF+PTF           ;SINGLE QUOTE\r
+        000572' 254000  000026' 06490           JRST L1\r
+\r
+        000573' 254000  000575' 06510   ASSEM:  JRST PLUS               ;#\r
+        000574' 661000  000002  06520   MINUS:  TLO F,MF\r
+        000575' 661000  000100  06530   PLUS:   TLO F,PTF\r
+        000576' 254000  000023' 06540           JRST LIS2\r
+\r
+        000577' 311040  003441' 06560   LPRN:   CAML P,[XWD LPDL-4,0]   ;LEFT PARENTHESIS\r
+        000600' 254000  000123' 06570           JRST ERR\r
+        000601' 261040  000000  06580           PUSH P,F                ;RECURSE FOR OPEN PAREN\r
+        000602' 261040  002201' 06590           PUSH P,WRD\r
+        000603' 261040  002204' 06600           PUSH P,FRASE\r
+        000604' 261040  002210' 06610           PUSH P,FRASE1\r
+        000605' 350000  002203' 06620           AOS,PRNC\r
+        000606' 254000  000015' 06630           JRST LIS\r
+\r
+        000607' 515200  000020  06650   INDIRECT:       HRLZI W,20              ;@\r
+        000610' 437200  002201' 06660           IORB W,WRD\r
+        000611' 661000  000001  06670           TLO F,QF\r
+        000612' 254000  000023' 06680           JRST LIS2\r
+\r
+        000613' 200100  000005  06700   ACCF:   MOVE R,T                ;COMMA\r
+        000614' 513000  000005  06710           HLLZS T\r
+        000615' 135300  003442' 06720           LDB W1,[POINT 3,WRD,2]  ;CHECK FOR IO INSTRUCTION\r
+        000616' 231300  000007  06730           IDIVI W1,7\r
+        000617' 242106  000027  06740           LSH R,27(W1)\r
+        000620' 270240  000002  06750           ADD T,R\r
+        000621' 273240  002201' 06760           ADDB T,WRD\r
+        000622' 254000  000624' 06770           JRST SPACE+1\r
+\r
+        000623' 603000  000001  06790   SPACE:  TLNE F,QF\r
+        000624' 661000  100000  06800           TLO F,TIF\r
+        000625' 621000  000102  06810   SPAC1:  TLZ F,MF+PTF\r
+        000626' 254000  000022' 06820           JRST LIS1\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 17\r
+        OP DECODER\r
+\r
+\r
+        000627' 607000  000001  06850   RPRN:   TLNN F,QF               ;)\r
+        000630' 201240  000000  06860           MOVEI T,0\r
+        000631' 204240  000005  06870           MOVS T,T\r
+        000632' 375000  002203' 06880           SOSGE,PRNC\r
+        000633' 254000  000123' 06890           JRST ERR\r
+        000634' 262040  002210' 06900           POP P,FRASE1\r
+        000635' 262040  002204' 06910           POP P,FRASE\r
+        000636' 262040  002201' 06920           POP P,WRD\r
+        000637' 262040  000000  06930           POP P,F\r
+        000640' 603000  000100  06940           TLNE F,PTF\r
+        000641' 603000  000004  06950           TLNE F,SF\r
+        000642' 254000  000646' 06960           JRST RPRN1\r
+        000643' 202240  002205' 06970           MOVEM T,SYL\r
+        000644' 661000  000005  06980           TLO F,QF+SF\r
+        000645' 254000  000030' 06990           JRST L1RPR\r
+        000646' 273240  002201' 07000   RPRN1:  ADDB T,WRD\r
+        000647' 661000  000001  07010           TLO F,QF\r
+        000650' 254000  000027' 07020           JRST L1RPR-1\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 18\r
+        OP DECODER\r
+\r
+\r
+                                07050   ;REGISTER EXAMINATION LOGIC\r
+\r
+        000651' 260040  000725' 07070   LINEF:  PUSHJ P,DEPRA   ;NEXT REGISTER\r
+                                07080   IFE EDDT&1,<PUSHJ P,CRNRB\r
+                                07090           JRST .+2>\r
+        000652' 260040  002657' 07100   LI0:    PUSHJ P,CRF\r
+        000653' 350240  002226' 07110           AOS T,LLOC\r
+        000654' 552240  002226' 07120   LI1:    HRRZM T,LLOC\r
+        000655' 552240  002227' 07130           HRRZM T,LLOCO\r
+        000656' 260040  001543' 07140           PUSHJ P,PAD\r
+        000657' 201240  000057  07150           MOVEI T,"/"\r
+        000660' 603000  004000  07160           TLNE F,STF\r
+        000661' 201240  000041  07170           MOVEI T,"!"\r
+        000662' 260040  002676' 07180           PUSHJ P,TOUT\r
+        000663' 621000  000010  07190   LI2:    TLZ F,ROF\r
+        000664' 260040  002662' 07200           PUSHJ P,LCT\r
+        000665' 200100  002227' 07210           MOVE R,LLOCO\r
+        000666' 260040  001404' 07220           PUSHJ P,FETCH\r
+        000667' 254000  000123' 07230           JRST ERR\r
+        000670' 661000  000010  07240           TLO F,ROF\r
+        000671' 603000  004000  07250           TLNE F,STF\r
+        000672' 254000  000013' 07260           JRST DD2\r
+        000673' 254000  001462' 07270           JRST CONSYM             ;RETURN IS A POPJ\r
+\r
+        000674' 260040  000725' 07290   VARRW:  PUSHJ P,DEPRA           ;^\r
+        000675' 260040  002657' 07300           PUSHJ P,CRF\r
+        000676' 370240  002226' 07310           SOS T,LLOC\r
+        000677' 254000  000654' 07320           JRST LI1\r
+\r
+        000700' 260040  000725' 07340   CARR:   PUSHJ P,DEPRA           ;CLOSE REGISTER\r
+        000701' 254000  000007' 07350           IFN EDDT&1,<JRST DD1>\r
+                                07360           IFE EDDT&1,<    PUSHJ P,TIN\r
+                                07370           CAIN T,15\r
+                                07380           JRST .-2\r
+                                07390           JRST DD1.5>\r
+\r
+        000702' 664000  002400  07410   OCON:   TROA F,LF1+CF1          ;OPEN AS CONSTANT\r
+        000703' 620000  000400  07420   OSYM:   TRZ F,CF1               ;OPEN SYMBOLICALLY\r
+        000704' 664000  002000  07430           TROA F,LF1\r
+        000705' 665000  004000  07440   SUPTYO: TLOA F,STF              ;SUPPRESS TYPEOUT\r
+        000706' 621000  004000  07450   SLASH:  TLZ F,STF               ;TYPE OUT REGISTER\r
+        000707' 603000  000001  07460           TLNE F,QF\r
+        000710' 552240  002226' 07470           HRRZM T,LLOC            ;QUANTITY TYPED\r
+        000711' 552240  002227' 07480   SLAS1:  HRRZM T,LLOCO\r
+        000712' 254000  000663' 07490           JRST LI2\r
+\r
+        000713' 607000  000010  07510   ICON:   TLNN F,ROF      ;REGISTER OPENED OR ERR\r
+        000714' 254000  000123' 07520           JRST ERR\r
+        000715' 260040  001371' 07530           PUSHJ P,DEPRS\r
+        000716' 254000  000711' 07540           JRST SLAS1\r
+\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 19\r
+        OP DECODER\r
+\r
+\r
+        000717' 260040  001371' 07580   TAB:    PUSHJ P,DEPRS   ;OPEN REGISTER OF Q\r
+        000720' 201245  777777  07590           MOVEI T,-1(T)\r
+        000721' 202240  002226' 07600           MOVEM T,LLOC\r
+        000722' 561240  700000  07610           HRROI T,700000  ;3 RUBOUTS\r
+        000723' 260040  002170' 07620           PUSHJ P,TEXTT\r
+        000724' 254000  000652' 07630           JRST LI0\r
+\r
+        000725' 603000  000010  07650   DEPRA:  TLNE F,ROF              ;IF REGISTER IS BEING CHANGED\r
+        000726' 607000  000001  07660           TLNN F,QF               ;REMOVE ALL PREVIOUS UNDEFINED\r
+        000727' 254000  001371' 07670           JRST DEPRS              ;SYMBOL REFERENCES TO IT\r
+        000730' 200100  002213' 07680           MOVE R,ESTU\r
+        000731' 202300  002213' 07690           MOVEM W1,ESTU\r
+        000732' 325100  001371' 07700   DEPRA2: JUMPGE R,DEPRS\r
+        000733' 550202  000001  07710           HRRZ W,1(R)\r
+        000734' 316200  002227' 07720           CAMN W,LLOCO\r
+        000735' 260040  000470' 07730           PUSHJ P,REMUN\r
+        000736' 270100  003436' 07740           ADD R,[XWD 2,2]\r
+        000737' 254000  000732' 07750           JRST DEPRA2\r
+\r
+        000740' 664000  002400  07770   EQUAL:  TROA F,LF1+CF1          ;=\r
+        000741' 620000  000400  07780   PSYM:   TRZ F,CF1               ;@\r
+        000742' 660000  002000  07790           TRO F,LF1\r
+        000743' 260040  001462' 07800           PUSHJ P,CONSYM\r
+        000744' 254000  000134' 07810           JRST RET\r
+\r
+        000745' 242240  777742  07830   R50PNT: LSH T,-36       ;RADIX 50 SYMBOL PRINTER\r
+        000746' 620240  000003  07840           TRZ T,3\r
+        000747' 260040  002003' 07850           PUSHJ P,TOC\r
+        000750' 260040  002664' 07860           PUSHJ P,TSPC\r
+        000751' 201300  002206' 07870           MOVEI W1,LWT    ;SETUP FOR SPT\r
+        000752' 254000  002030' 07880           JRST SPT\r
+\r
+        000753' 211340  000006  07900   SIXBP:  MOVNI W2,6              ;SIXBIT PRINTER\r
+        000754' 200300  002206' 07910           MOVE W1,LWT\r
+        000755' 201240  000000  07920   SIXBP1: MOVEI T,0\r
+        000756' 245240  000006  07930           ROTC T,6\r
+        000757' 271240  000040  07940           ADDI T,40\r
+        000760' 260040  002676' 07950           PUSHJ P,TOUT\r
+        000761' 341340  000755' 07960           AOJL W2,SIXBP1\r
+        000762' 263040  000000  07970           POPJ P,\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 20\r
+        OP DECODER\r
+\r
+\r
+                                08000   ;MODE CONTROL SWITCHES\r
+\r
+        000763' 201100  000432  08020   TEXO:   MOVEI R,TEXTT-HLFW      ;$T ASSUME 7 BIT ASCII\r
+        000764' 200240  002202' 08030           MOVE T,WRD2\r
+        000765' 306240  000006  08040           CAIN T,6                ;CHECK FOR $6T\r
+        000766' 201100  777215  08050           MOVEI R,SIXBP-HLFW      ;SET MODE SWITCH FOR SIXBIT\r
+        000767' 306240  000005  08060           CAIN T,5                ;CHECK FOR $5T\r
+        000770' 201100  777207  08070           MOVEI R,R50PNT-HLFW     ;SET MODE SWITCH FOR RADIX 50\r
+        000771' 271100  777456  08080   HWRDS:  ADDI R,HLFW-TFLOT               ;H\r
+        000772' 271100  000371  08090   SFLOT:  ADDI R,TFLOT-PIN                ;F\r
+        000773' 271100  777464  08100   SYMBOL: ADDI R,PIN-FTOC         ;S\r
+        000774' 271100  002003' 08110   CON:    ADDI R,FTOC             ;C\r
+        000775' 552100  000010  08120           HRRZM R,SCH\r
+        000776' 254000  001011' 08130           JRST BASE1\r
+\r
+        000777' 622000  000001  08150   RELA:   TRZE F,Q2F              ;CHANGE ADDRESS MODE TO RELATIE\r
+        001000' 254000  001005' 08160           JRST BASECH\r
+        001001' 201100  777542  08170           MOVEI R,PADSO-TOC\r
+        001002' 271100  002003' 08180   ABSA:   ADDI R,TOC              ;A\r
+        001003' 552100  000011  08190           HRRZM R,AR\r
+        001004' 254000  001011' 08200           JRST BASE1\r
+\r
+        001005' 200240  002202' 08220   BASECH: MOVE T,WRD2             ;$NR  CHANGE OUTPUT RADIX TO N, N>1\r
+        001006' 305240  000002  08230           CAIGE T,2\r
+        001007' 254000  000123' 08240           JRST ERR\r
+        001010' 552240  000012  08250           HRRZM T,ODF\r
+        001011' 204140  003432' 08260   BASE1:  MOVS S,[XWD SCHM,SCH]\r
+        001012' 607000  010000  08270           TLNN F,CCF\r
+        001013' 254000  000022' 08280           JRST LIS1\r
+        001014' 251140  002311' 08290           BLT S,ODFM      ;WITH $$, MAKE MODES PERMANENT\r
+        001015' 254000  000134' 08300           JRST RET\r
+\r
+        001016' 202240  002206' 08320   SEMIC:  MOVEM T,LWT             ;SEMICOLON TYPES IN CURRENT MODE\r
+        001017' 254020  000010  08330           JRST @SCH\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 21\r
+        OP DECODER\r
+\r
+                                08350   ;GO AND EXECUTE LOGIC\r
+\r
+        001020' 505240  254000  08370   GO:     HRLI T,254000             ;G\r
+        001021' 663000  000001  08380           TLOE F,QF\r
+        001022' 254000  001026' 08390           JRST XEC0\r
+        001023' 332240  002234' 08400           IFN EDDT&1,<    SKIPE T,STARTA> ;LOAD TAPE START ADDRESS\r
+                                08410           IFE EDDT&1,<    HRR T,JOBSA>    ;GET STARTING ADDRESS\r
+\r
+        001024' 607000  000001  08430   XEC:    TLNN F,QF               ;X\r
+        001025' 254000  000123' 08440           JRST ,ERR\r
+        001026' 202240  002313' 08450   XEC0:   MOVEM T,TEM\r
+        001027' 260040  002657' 08460           PUSHJ P,CRF\r
+        001030' 260040  002732' 08470           PUSHJ P,TTYLEV\r
+        001031' 260040  001274' 08480           PUSHJ P,INSRTB\r
+        001032' 265240  002637' 08490           JSP T,RESTORE\r
+        001033' 256000  002313' 08500           XCT,TEM\r
+        001034' 254000  000000' 08510   XEC1:   JRST DDT                ;USED  AT PROC0\r
+        001035' 264000  002615' 08520           JSR,SAVE\r
+        001036' 260040  001307' 08530           PUSHJ P,REMOVB\r
+        001037' 260040  002657' 08540           PUSHJ P,CRF\r
+        001040' 254000  000007' 08550           JRST DD1\r
+\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 22\r
+        OP DECODER\r
+\r
+                                08580   ;BREAK POINT LOGIC\r
+                                08590   BP1:    REPEAT NBP,<    0               ;JSR TO HERE FOR BREAKPOINT\r
+                                08600           JSA T, BCOM\r
+                                08610           0               ;HOLDS INSTRUCTION WHILE BREAKPOINT IS IN PLACE\r
+                                08620   >\r
+        001041' 000000  000000                  0               ;JSR TO HERE FOR BREAKPOINT\r
+        001042' 266240  001071'                 JSA T, BCOM\r
+        001043' 000000  000000                  0               ;HOLDS INSTRUCTION WHILE BREAKPOINT IS IN PLACE\r
+\r
+        001044' 000000  000000                  0               ;JSR TO HERE FOR BREAKPOINT\r
+        001045' 266240  001071'                 JSA T, BCOM\r
+        001046' 000000  000000                  0               ;HOLDS INSTRUCTION WHILE BREAKPOINT IS IN PLACE\r
+\r
+        001047' 000000  000000                  0               ;JSR TO HERE FOR BREAKPOINT\r
+        001050' 266240  001071'                 JSA T, BCOM\r
+        001051' 000000  000000                  0               ;HOLDS INSTRUCTION WHILE BREAKPOINT IS IN PLACE\r
+\r
+        001052' 000000  000000                  0               ;JSR TO HERE FOR BREAKPOINT\r
+        001053' 266240  001071'                 JSA T, BCOM\r
+        001054' 000000  000000                  0               ;HOLDS INSTRUCTION WHILE BREAKPOINT IS IN PLACE\r
+\r
+        001055' 000000  000000                  0               ;JSR TO HERE FOR BREAKPOINT\r
+        001056' 266240  001071'                 JSA T, BCOM\r
+        001057' 000000  000000                  0               ;HOLDS INSTRUCTION WHILE BREAKPOINT IS IN PLACE\r
+\r
+        001060' 000000  000000                  0               ;JSR TO HERE FOR BREAKPOINT\r
+        001061' 266240  001071'                 JSA T, BCOM\r
+        001062' 000000  000000                  0               ;HOLDS INSTRUCTION WHILE BREAKPOINT IS IN PLACE\r
+\r
+        001063' 000000  000000                  0               ;JSR TO HERE FOR BREAKPOINT\r
+        001064' 266240  001071'                 JSA T, BCOM\r
+        001065' 000000  000000                  0               ;HOLDS INSTRUCTION WHILE BREAKPOINT IS IN PLACE\r
+\r
+        001066' 000000  000000                  0               ;JSR TO HERE FOR BREAKPOINT\r
+        001067' 266240  001071'                 JSA T, BCOM\r
+        001070' 000000  000000                  0               ;HOLDS INSTRUCTION WHILE BREAKPOINT IS IN PLACE\r
+\r
+                        001043' 08640   B1INS=BP1+2\r
+                        001066' 08650   BPN=.-3\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 23\r
+        OP DECODER\r
+\r
+\r
+        001071' 000000  000000  08680   BCOM:   0\r
+        001072' 262240  001241' 08690           POP T,LEAV              ;MOVE INSTRUCTION TO LEAV\r
+        001073' 201245  001175  08700           MOVEI T,B1SKP-B1INS+1(T)\r
+        001074' 542240  001103' 08710           HRRM T,BCOM3            ;CONDITIONAL BREAK SETUP\r
+        001075' 201245  000001  08720           MOVEI T,B1CNT-B1SKP(T)\r
+        001076' 542240  001105' 08730           HRRM T,BCOM2            ;PROCEDE COUNTER SETUP\r
+        001077' 200245  776601  08740           MOVE T,BP1-B1CNT(T)\r
+        001100' 621240  010000  08750   IFN EDDT&1,<    TLZ T,010000            ;TURN OFF USER MODE BIT>\r
+        001101' 502240  001122' 08760           HLLM T,LEAV1            ;SAVE FLAGS FOR RESTORING\r
+        001102' 250240  001071' 08770           EXCH T,BCOM\r
+\r
+        001103' 332000  002237' 08790   BCOM3:  SKIPE B1SKP             ;ADDR MOD TO LOOK AT COND. INST.\r
+        001104' 256020  001103' 08800           XCT @.-1\r
+        001105' 377000  002240' 08810   BCOM2:  SOSG B1CNT              ;ADDR MOD TO LOOK AT PROCEED COUNTER\r
+        001106' 254000  001123' 08820           JRST BREAK\r
+\r
+        001107' 202240  002274' 08840           MOVEM T,AC0+T\r
+        001110' 135240  003443' 08850           LDB T,[POINT 9,LEAV,8]  ;GET INSTRUCTION\r
+        001111' 301240  000264  08860           CAIL T,264      ;JSR\r
+        001112' 303240  000266  08870           CAILE T,266     ;JSA,JSP\r
+        001113' 606240  000700  08880           TRNN T,700      ;UUO\r
+        001114' 254000  001175' 08890           JRST PROC1              ;MUST BE INTERPRETED\r
+        001115' 302240  000260  08900           CAIE T,260      ;PUSHJ\r
+        001116' 306240  000256  08910           CAIN T,256      ;XCT\r
+        001117' 254000  001175' 08920           JRST PROC1              ;MUST BE INTERPRETED\r
+        001120' 200240  002274' 08930           MOVE T,AC0+T\r
+        001121' 254120  001122' 08940           JRST 2,@LEAV1           ;RESTORE FLAGS, GO TO LEAV\r
+\r
+        001122' 000000  001241' 08960   LEAV1:  XWD 0,LEAV\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 24\r
+        OP DECODER\r
+\r
+        001123' 264000  002615' 08980   BREAK:  JSR SAVE                ;SAVE THE WORLD\r
+        001124' 260040  001307' 08990           PUSHJ P,REMOVB          ;REMOVE BREAKPOINTS\r
+        001125' 370240  001103' 09000           SOS T,BCOM3\r
+        001126' 553000  000005  09010           HRRZS T                 ;GET ADDR OF BREAKPOINT JUST HIT\r
+        001127' 260040  001545' 09020           PUSHJ P,PADSO           ;PRINT ITS NAME- $NB\r
+        001130' 205300  370000  09030           MOVSI W1,(ASCII />/)            ;TYPE > FOR COND BREAK\r
+        001131' 337020  001105' 09040           SKIPG @BCOM2            ;TEST PROCEED COUNTER\r
+        001132' 205300  371740  09050           MOVSI W1,(ASCII />>/)   ;TYPE >> FOR PROCEED COUNTER BREAK\r
+        001133' 260040  002173' 09060           PUSHJ P,TEXT2\r
+        001134' 200240  001071' 09070           MOVE T,BCOM\r
+        001135' 502240  002231' 09080           HLLM T, SAVPI           ;SAVE PROCESSOR FLAGS\r
+        001136' 201245  777777  09090           MOVEI T,-1(T)\r
+        001137' 260040  001543' 09100           PUSHJ P,PAD             ;TYPE PC AT BREAK\r
+        001140' 550260  001103' 09110           HRRZ T,@BCOM3\r
+        001141' 542240  001167' 09120           HRRM T,PROC0            ;SETUP ADDRESS OF BREAK\r
+        001142' 554260  001103' 09130           HLRZ T,@BCOM3\r
+        001143' 322240  001147' 09140           JUMPE T,BREAK1          ;TEST FOR REGISTER TO EXAMINE\r
+        001144' 260040  002662' 09150           PUSHJ P,LCT             ;PRINT TAB\r
+        001145' 554260  001103' 09160           HLRZ T,@BCOM3\r
+        001146' 260040  000654' 09170           PUSHJ P,LI1             ;EXAMINE REGISTER C($NB)LEFT\r
+        001147' 550100  001103' 09180   BREAK1: HRRZ R,BCOM3\r
+        001150' 275100  002236' 09190           SUBI R,B1ADR\r
+        001151' 231100  000003  09200           IDIVI R,3               ;GET BREAKPOINT NUMBER-1 INTO R\r
+        001152' 201140  000001  09210           MOVEI S,1\r
+        001153' 242142  000000  09220           LSH S,(R)\r
+        001154' 260040  002714' 09230           PUSHJ P,LISTEN          ;DONT PROCEED IF TTY KEY HIT\r
+        001155' 616140  002266' 09240           TDNN S,AUTOPI           ;DONT PROCEED IF NOT AUTOMATIC\r
+        001156' 254000  000134' 09250           JRST RET                ;DONT PROCEED\r
+        001157' 254000  001165' 09260           JRST PROCD1\r
+\r
+        001160' 607000  000001  09280   PROCEDE: TLNN F,QF              ;N$P    ;PROCEED AT A BREAKPOINT\r
+        001161' 201240  000001  09290           MOVEI T,1\r
+        001162' 202260  001105' 09300           MOVEM T,@BCOM2\r
+        001163' 550100  001103' 09310           HRRZ R,BCOM3\r
+        001164' 260040  001361' 09320           PUSHJ P,AUTOP\r
+        001165' 260040  002657' 09330   PROCD1: PUSHJ P,CRF\r
+        001166' 260040  002732' 09340           PUSHJ P,TTYLEV\r
+        001167' 551100  001034' 09350   PROC0:  HRRZI R,XEC1            ;MODIFIED TO ADDR OF BREAKPOINT\r
+        001170' 260040  001404' 09360           PUSHJ P,FETCH\r
+        001171' 254000  001246' 09370           JRST BPLUP1             ;ONLY GET HERE IF MEMORY SHRANK\r
+        001172' 202240  001241' 09380           MOVEM T,LEAV\r
+        001173' 260040  001274' 09390           PUSHJ P,INSRTB\r
+        001174' 254000  001200' 09400           JRST PROC2\r
+\r
+        001175' 200240  002274' 09420   PROC1:  MOVE T,AC0+T\r
+        001176' 264000  002615' 09430           JSR SAVE\r
+        001177' 255000  000000  09440           JFCL\r
+        001200' 201200  000100  09450   PROC2:  MOVEI W,100\r
+        001201' 202200  002314' 09460           MOVEM W,TEM1            ;SETUP MAX LOOP COUNT\r
+        001202' 254000  001211' 09470           JRST IXCT5\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 25\r
+        OP DECODER\r
+\r
+                                09490   IXCT4:  IFE EDDT&1,<    SUBI T,041\r
+                                09500           JUMPE T,BPLUP\r
+                                09510           AOJGE T,IXCT6>                          ;DONT PROCEDE FOR INIT\r
+                                09520                                   ;DONT INTERPRET FOR SYSTEM UUOS\r
+        001203' 202100  000040  09530           MOVEM R,40              ;INTERPRET FOR NON-SYSTEM UUOS\r
+        001204' 201100  000041  09540           MOVEI R,41\r
+        001205' 371000  002314' 09550   IXCT:   SOSL TEM1\r
+        001206' 260040  001404' 09560           PUSHJ P,FETCH\r
+        001207' 254000  001245' 09570           JRST BPLUP              ;BREAKPOINT LOOPING OR FETCH FAILED\r
+        001210' 202240  001241' 09580           MOVEM T,LEAV\r
+        001211'                 09590   IXCT5:  IFN EDDT&1,<\r
+        001211' 135240  003443' 09600           LDB T,[POINT 9,LEAV,8]  ;GET INSTRUCTION\r
+        001212' 306240  000254  09610           CAIN T,254              ;DON'T DO ANYTHING TO JRST IN EXEC MODE\r
+        001213' 254000  001240' 09620           JRST IXCT6>\r
+        001214' 515740  002267' 09630           HRLZI 17,AC0\r
+        001215' 251740  000017  09640           BLT 17,17\r
+        001216' 201260  001241' 09650           MOVEI T,@LEAV\r
+        001217' 137240  003444' 09660           DPB T,[POINT 23,LEAV,35]        ;STORE EFFECTIVE ADDRESS\r
+        001220' 135300  003445' 09670           LDB W1,[POINT 4,LEAV,12]        ;PICK UP AC FIELD\r
+        001221' 135240  003443' 09680           LDB T,[POINT 9,LEAV,8]          ;PICK UP INSTRUCTION FIELD\r
+        001222' 201040  003540' 09690           MOVEI P,PS\r
+        001223' 306240  000260  09700           CAIN T,260\r
+        001224' 254000  001251' 09710           JRST  IPUSHJ            ;INTERPRET PUSHJ\r
+\r
+        001225' 306240  000264  09730           CAIN T,264\r
+        001226' 254000  001261' 09740           JRST IJSR               ;INTERPRET JSR\r
+        001227' 306240  000265  09750           CAIN T,265\r
+        001230' 254000  001270' 09760           JRST IJSP               ;INTERPRET JSP\r
+        001231' 306240  000266  09770           CAIN T,266\r
+        001232' 254000  001255' 09780           JRST IJSA               ;INTERPRET JSA\r
+        001233' 200100  001241' 09790           MOVE R,LEAV\r
+        001234' 606240  000700  09800           TRNN T,700\r
+        001235' 254000  001203' 09810           JRST IXCT4              ;INTERPRET UUO\r
+        001236' 306240  000256  09820           CAIN T,256\r
+        001237' 254000  001205' 09830           JRST IXCT               ;INTERPRET XCT\r
+\r
+        001240' 265240  002637' 09850   IXCT6:  JSP T,RESTORE\r
+        001241' 000000  000000  09860   LEAV:   0                       ;INSTRUCTION MODIFIED\r
+        001242' 254020  001071' 09870           JRST @BCOM\r
+        001243' 350000  001071' 09880           AOS BCOM\r
+        001244' 254020  001071' 09890           JRST @BCOM\r
+\r
+        001245' 260040  001307' 09910   BPLUP:  PUSHJ P,REMOVB          ;BREAKPOINT PROCEED ERROR\r
+        001246' 264000  002615' 09920   BPLUP1: JSR SAVE\r
+        001247' 255000  000000  09930           JFCL\r
+        001250' 254000  000123' 09940           JRST ERR\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 26\r
+        OP DECODER\r
+\r
+\r
+        001251' 137300  003446' 09970   IPUSHJ: DPB W1,[POINT 4,CPUSHP,12]      ;STORE AC FIELD INTO A PUSH\r
+        001252' 402000  002210' 09980           CLEARM,TEM3\r
+        001253' 200240  001241' 09990           MOVE T,LEAV\r
+        001254' 254000  002640' 10000           JRST RESTR1\r
+\r
+        001255' 200240  001071' 10020   IJSA:   MOVE T,BCOM             ;INTERPRET JSA\r
+        001256' 504240  001241' 10030           HRL T,LEAV\r
+        001257' 250246  002267' 10040           EXCH T,AC0(W1)\r
+        001260' 254000  001263' 10050           JRST IJSR2\r
+\r
+        001261' 200240  001071' 10070   IJSR:   MOVE T,BCOM             ;INTERPRET JSR\r
+        001262' 500240  002231' 10080           HLL T,SAVPI\r
+        001263' 200100  001241' 10090   IJSR2:  MOVE R,LEAV\r
+        001264' 260040  001376' 10100           PUSHJ P,DEP\r
+        001265' 354240  001241' 10110           AOSA T,LEAV\r
+        001266' 200240  001241' 10120   IJSR3:  MOVE T,LEAV\r
+        001267' 254000  002637' 10130           JRST RESTORE\r
+\r
+        001270' 200200  001071' 10150   IJSP:   MOVE W,BCOM             ;INTERPRET JSP\r
+        001271' 500240  002231' 10160           HLL T,SAVPI\r
+        001272' 202206  002267' 10170           MOVEM W,AC0(W1)\r
+        001273' 254000  001266' 10180           JRST IJSR3\r
+\r
+                                10200   ;INSERT BREAKPOINTS\r
+\r
+        001274' 200140  003447' 10220   INSRTB: MOVE S,[JSR BP1]\r
+        001275' 332103  001175  10230   INSRT1: SKIPE R,B1ADR-BP1(S)\r
+        001276' 260040  001404' 10240           PUSHJ P,FETCH\r
+        001277' 254000  001303' 10250           JRST INSRT3\r
+        001300' 202243  000002  10260           MOVEM T,B1INS-BP1(S)\r
+        001301' 200240  000003  10270           MOVE T,S\r
+        001302' 260040  001376' 10280           PUSHJ P,DEP\r
+        001303' 271140  000003  10290   INSRT3: ADDI S,3\r
+        001304' 317140  003450' 10300           CAMG S,[JSR BPN]\r
+        001305' 254000  001275' 10310           JRST INSRT1\r
+        001306' 263040  000000  10320           POPJ P,\r
+\r
+                                10340   ;REMOVE BREAKPOINTS\r
+\r
+        001307' 201140  002263' 10360   REMOVB: MOVEI S,BNADR\r
+        001310' 200243  776605  10370   REMOV1: MOVE T,B1INS-B1ADR(S)\r
+        001311' 332103  000000  10380           SKIPE R,(S)\r
+        001312' 260040  001376' 10390           PUSHJ P,DEP\r
+        001313' 275140  000003  10400   REMOV3: SUBI S,3\r
+        001314' 301140  002236' 10410           CAIL S,B1ADR\r
+        001315' 254000  001310' 10420           JRST REMOV1\r
+        001316' 254000  002721' 10430           IFN EDDT&1,<JRST TTYRET>\r
+                                10440           IFE EDDT&1,<POPJ P,>\r
+\r
+                                10460   ;IN EXEC MODE, SAVE UP TTY STATUS\r
+                                10470   ;IN USER MODE, DONE BY SAVE\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 27\r
+        OP DECODER\r
+\r
+\r
+                                10500   ;ALL $B COMMANDS GET HERE IN FORM: <A>$<N>B\r
+\r
+\r
+        001317' 623000  000001  10530   BPS:    TLZE F,QF               ;HAS <A> BEEN TYPED?\r
+        001320' 254000  001327' 10540           JRST BPS1               ;YES\r
+        001321' 622000  000001  10550           TRZE F,Q2F              ;NO, HAS <N> BEEN TYPED?\r
+        001322' 254000  001333' 10560           JRST BPS2               ;YES\r
+        001323' 200240  003451' 10570           MOVE T,[XWD B1ADR,B1ADR+1]      ;NO, COMMAND IS $B - CLEAR ALL BREAKPOINTS\r
+        001324' 402000  002236' 10580           CLEARM B1ADR\r
+        001325' 251240  002266' 10590           BLT T,AUTOPI            ;CLEAR OUT ALL BREAKPOINTS AND AUTO PROCEDE REGESTER\r
+        001326' 254000  000134' 10600           JRST RET\r
+\r
+        001327' 626000  000001  10620   BPS1:   TRZN F,Q2F              ;HAS <N> BEEN TYPED?\r
+        001330' 254000  001345' 10630           JRST BPS3               ;NO\r
+        001331' 200100  000005  10640           MOVE R,T                ;YES, PROCESS THE COMMAND A$NB\r
+        001332' 660000  000002  10650           TRO F,2\r
+        001333' 200240  002202' 10660   BPS2:   MOVE T,WRD2\r
+        001334' 301240  000001  10670           CAIL T,1\r
+        001335' 303240  000010  10680           CAILE T,NBP\r
+        001336' 254000  000123' 10690           JRST ERR\r
+        001337' 221240  000003  10700           IMULI T,3\r
+        001340' 271240  002233' 10710           ADDI T,B1ADR-3\r
+        001341' 626000  000002  10720           TRZN F,2\r
+        001342' 254000  001615' 10730           JRST MASK2\r
+        001343' 250100  000005  10740           EXCH R,T\r
+        001344' 254000  001356' 10750           JRST BPS5\r
+\r
+        001345' 201100  002236' 10770   BPS3:   MOVEI R,B1ADR           ;PROCESS THE COMMAND A$B\r
+        001346' 550202  000000  10780   BPS4:   HRRZ W,(R)\r
+        001347' 302205  000000  10790           CAIE W,(T)\r
+        001350' 336002  000000  10800           SKIPN (R)\r
+        001351' 254000  001356' 10810           JRST BPS5\r
+        001352' 271100  000003  10820           ADDI R,3\r
+        001353' 307100  002263' 10830           CAIG R,BNADR\r
+        001354' 254000  001346' 10840           JRST BPS4\r
+        001355' 254000  000123' 10850           JRST ERR\r
+        001356' 202242  000000  10860   BPS5:   MOVEM T,(R)\r
+        001357' 402002  000001  10870           CLEARM,1(R)\r
+        001360' 402002  000002  10880           CLEARM,2(R)\r
+\r
+        001361' 275100  002236' 10900   AUTOP:  SUBI R,B1ADR            ;AUTO PROCEDE SETUP SUBROUTINE\r
+        001362' 231100  000003  10910           IDIVI R,3\r
+        001363' 201140  000001  10920           MOVEI S,1\r
+        001364' 242142  000000  10930           LSH S,(R)\r
+        001365' 412140  002266' 10940           ANDCAM S,AUTOPI\r
+        001366' 603000  010000  10950           TLNE F,CCF\r
+        001367' 436140  002266' 10960           IORM S,AUTOPI\r
+        001370' 263040  000000  10970           POPJ P,\r
+\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 28\r
+        OP DECODER\r
+\r
+                                11000   ;FETCH AND DEPOSIT INTO MEMORY\r
+\r
+\r
+        001371' 202240  002206' 11030   DEPRS:  MOVEM T,LWT             ;DEPOSIT REGISTER AND SAVE AS LWT\r
+        001372' 200100  002227' 11040   DEPR:   MOVE R,LLOCO    ;QUAN TYPED IN REGIS EXAM\r
+        001373' 623000  000010  11050           TLZE F,ROF\r
+        001374' 607000  000001  11060           TLNN F,QF\r
+        001375' 263040  000000  11070           POPJ P,0\r
+        001376' 606100  777760  11080   DEP:    TRNN R,777760\r
+        001377' 254000  001402' 11090           JRST DEP1\r
+                                11100   IFE EDDT&1,<    HRRZ W,JOBREL\r
+                                11110           CAIL W,(R)>\r
+\r
+        001400' 202242  000000  11130           MOVEM T,0(R)\r
+        001401' 263040  000000  11140           POPJ P,0\r
+        001402' 202242  002267' 11150   DEP1:   MOVEM T,AC0(R)\r
+        001403' 263040  000000  11160           POPJ P,0\r
+\r
+                                11180   FETCH:  IFE EDDT&1,<HRRZ T,JOBREL\r
+                                11190           CAIGE T,(R)\r
+                                11200           POPJ P,>\r
+        001404' 606100  777760  11210           TRNN R,777760\r
+        001405' 334242  002267' 11220           SKIPA T,AC0(R)\r
+        001406' 200242  000000  11230           MOVE T,(R)\r
+        001407' 254000  000373' 11240           JRST CPOPJ1\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 29\r
+        OP DECODER\r
+\r
+        001410' 202240  002224' 11260   FIRARG: MOVEM T,DEFV\r
+        001411' 661000  001000  11270           TLO F,FAF\r
+        001412' 254000  001415' 11280           JRST ULIM1\r
+        001413' 661000  002000  11290   ULIM:   TLO F,SAF\r
+        001414' 552240  002225' 11300           HRRZM T,ULIMIT\r
+        001415' 607000  000001  11310   ULIM1:  TLNN F,QF\r
+        001416' 254000  000123' 11320           JRST ERR\r
+        001417' 254000  000020' 11330           JRST LIS0\r
+\r
+\r
+        001420' 331100  002212' 11360   LOOK:   SKIPL R,PRGM    ;LOOK UP SYMBOL\r
+        001421' 200120  002230' 11370           MOVE R,@SYMP\r
+        001422' 574160  002230' 11380           HLRE S,@SYMP\r
+        001423' 240140  777777  11390           ASH S,-1        ;SETUP COUNT FOR LENGTH OF SYM TABLE\r
+        001424' 621000  400000  11400           TLZ F,400000\r
+        001425' 515340  600000  11410           HRLZI W2,DELO+DELI\r
+        001426' 202240  002313' 11420           MOVEM T,TEM\r
+\r
+        001427' 612342  000000  11440   LOOK1:  TDNE W2,(R)\r
+        001430' 254000  001452' 11450           JRST LOOK3\r
+        001431' 200242  000000  11460           MOVE T,(R)\r
+        001432' 607240  740000  11470           TLNN T,PNAME    ;NAME\r
+        001433' 665340  100000  11480           TLOA W2,LOCAL\r
+        001434' 334240  002313' 11490           SKIPA T,TEM\r
+        001435' 254000  001452' 11500           JRST LOOK3\r
+        001436' 200202  000001  11510           MOVE W,1(R)\r
+        001437' 430200  000005  11520           XOR W,T\r
+        001440' 321200  001452' 11530           JUMPL W,LOOK3\r
+        001441' 274242  000001  11540           SUB T,1(R)\r
+        001442' 321240  001452' 11550           JUMPL T,LOOK3\r
+        001443' 325000  001447' 11560           JUMPGE F,LOOK2\r
+        001444' 200202  000001  11570           MOVE W,1(R)\r
+        001445' 274206  000001  11580           SUB W,1(W1)\r
+        001446' 323200  001452' 11590           JUMPLE W,LOOK3\r
+        001447' 540300  000002  11600   LOOK2:  HRR W1,R                ;POINTER BEST VALUE SO FAR\r
+        001450' 661000  400000  11610           TLO F,400000\r
+        001451' 322240  002027' 11620           JUMPE T,SPT0\r
+        001452' 270100  003436' 11630   LOOK3:  ADD R,[XWD 2,2]\r
+        001453' 331000  000002  11640           SKIPL R\r
+        001454' 200120  002230' 11650           MOVE R, @SYMP\r
+        001455' 343140  001427' 11660           AOJLE S,LOOK1   ;TERMINATING CONDITION\r
+        001456' 200240  002313' 11670           MOVE T,TEM\r
+        001457' 603000  400000  11680           TLNE F,400000\r
+        001460' 274246  000001  11690           SUB T,1(W1)\r
+        001461' 254000  000373' 11700           JRST CPOPJ1\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 30\r
+        OP DECODER\r
+\r
+\r
+        001462' 202240  002206' 11730   CONSYM: MOVEM T,LWT\r
+        001463' 606000  002000  11740   CONSM:  TRNN F,LF1\r
+        001464' 254020  000010  11750   CONS1:  JRST @SCH               ;PIN OR FTOC\r
+        001465' 602000  000400  11760           TRNE F,CF1\r
+        001466' 254000  002003' 11770           JRST  FTOC\r
+\r
+        001467'                 11790   PIN:                            ;PRINT INSTRUCTION\r
+        001467' 641240  700000  11800           TLC T,700000\r
+        001470' 647240  700000  11810           TLCN T,700000\r
+        001471' 254000  001572' 11820           JRST INOUT              ;IN-OUT INSTRUCTION OR NEG NUM\r
+        001472' 404240  003452' 11830           AND T,[XWD 777000,0]\r
+        001473' 322240  001504' 11840           JUMPE T,PI3\r
+        001474' 260040  003315' 11850           PUSHJ P,OPTYPE\r
+        001475' 205240  777000  11860           MOVSI   T,777000\r
+        001476' 404240  002206' 11870           AND     T,LWT\r
+        001477' 606000  000002  11880           TRNN F,ITF              ;HAS INSTRUCTION BEEN TYPED?\r
+        001500' 260040  001420' 11890           PUSHJ P,LOOK            ;NO, LOOK IN SYMBOL TABLE\r
+        001501' 664000  000200  11900           TROA F,NAF              ;INSTRUCTION TYPED, ALOOW NEG ADDRESSES\r
+        001502' 254000  001536' 11910           JRST HLFW               ;NOT FOUND, OUTPUT AS HALFWORDS\r
+        001503' 260040  002664' 11920           PUSHJ P,TSPC\r
+        001504' 135240  003453' 11930   PI3:    LDB T,[XWD 270400,LWT]  ;GET AC FIELD\r
+        001505' 322240  001511' 11940           JUMPE T,PI4\r
+        001506' 260040  001543' 11950           PUSHJ P,PAD\r
+        001507' 201300  000054  11960   PI3A:   MOVEI W1,","\r
+        001510' 260040  002171' 11970   PI3B:   PUSHJ P,TEXT\r
+        001511' 200300  002206' 11980   PI4:    MOVE W1,LWT\r
+        001512' 201240  000100  11990           MOVEI T,"@"\r
+        001513' 603300  000020  12000           TLNE W1,20              ;CHECK FOR INDIRECT BIT\r
+        001514' 260040  002676' 12010           PUSHJ P,TOUT\r
+        001515' 550240  002206' 12020   PI5:    HRRZ T,LWT\r
+        001516' 135300  003454' 12030           LDB W1,[XWD 331100,LWT] ;INSTRUCTION BITS\r
+        001517' 301300  000240  12040           CAIL W1,240\r
+        001520' 303300  000247  12050           CAILE W1,247\r
+        001521' 254000  001534' 12060           JRST PI8\r
+        001522' 260040  001564' 12070           PUSHJ P,PADS3A\r
+        001523' 620000  000200  12080   PI7:    TRZ F,NAF       \r
+        001524' 135100  003455' 12090           LDB R,[XWD 220400,LWT]  ;INDEX REGISTER CHECK\r
+        001525' 322100  001547' 12100           JUMPE R,PADS1           ;EXIT\r
+        001526' 201240  000050  12110           MOVEI T,"("\r
+        001527' 260040  002676' 12120           PUSHJ P,TOUT\r
+        001530' 200240  000002  12130           MOVE T,R\r
+        001531' 260040  001543' 12140   PI7.1:  PUSHJ P,PAD\r
+        001532' 201240  000051  12150           MOVEI T,")"\r
+        001533' 254000  002676' 12160           JRST TOUT               ;EXIT\r
+\r
+        001534' 260040  001543' 12180   PI8:    PUSHJ P,PAD\r
+        001535' 254000  001523' 12190           JRST PI7\r
+\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 31\r
+        OP DECODER\r
+\r
+\r
+        001536' 201240  000050  12230   HLFW:   MOVEI T,"("             ;PRINT AS HALF WORDS\r
+        001537' 260040  002676' 12240           PUSHJ P,TOUT\r
+        001540' 554240  002206' 12250           HLRZ T,LWT\r
+        001541' 260040  001531' 12260           PUSHJ P,PI7.1\r
+        001542' 550240  002206' 12270           HRRZ T,LWT\r
+\r
+        001543' 405240  777777  12290   PAD:    ANDI T,777777           ;PRINT ADDRESS\r
+        001544' 254020  000011  12300           JRST @AR                ;PADSO OR PAD1\r
+        001545' 322240  002015' 12310   PADSO:  JUMPE T,TOC2+1\r
+        001546' 260040  001420' 12320           PUSHJ P,LOOK\r
+        001547' 263040  000000  12330   PADS1:  POPJ P,0\r
+        001550' 200346  000001  12340           MOVE W2,1(W1)\r
+        001551' 305240  000100  12350           CAIGE T,100\r
+        001552' 305340  000060  12360           CAIGE W2,60\r
+        001553' 254000  001563' 12370           JRST PADS3\r
+        001554' 202240  002313' 12380           MOVEM T,TEM\r
+        001555' 325000  001562' 12390           JUMPGE F,PAD1\r
+        001556' 260040  002027' 12400           PUSHJ P,SPT0\r
+        001557' 201240  000053  12410           MOVEI T,"+"\r
+        001560' 260040  002676' 12420   PADS1A: PUSHJ P,TOUT\r
+        001561' 550240  002313' 12430   PADS2:  HRRZ T,TEM\r
+        001562' 254000  002003' 12440   PAD1:   JRST TOC                ;EXIT\r
+\r
+        001563' 200240  002313' 12460   PADS3:  MOVE T,TEM\r
+        001564' 602000  000200  12470   PADS3A: TRNE F,NAF\r
+        001565' 305240  776000  12480           CAIGE T,776000\r
+        001566' 254000  002003' 12490           JRST TOC\r
+        001567' 212240  002313' 12500   PADS3B: MOVNM T,TEM\r
+        001570' 201240  000055  12510   PADS4:  MOVEI T,"-"\r
+        001571' 254000  001560' 12520           JRST PADS1A\r
+\r
+        001572' 650240  003456' 12540   INOUT:  TDC T,[XWD -1,400000]   ;IO INSTRUCTION OR NEG NUM\r
+        001573' 656240  003456' 12550           TDCN T,[XWD -1,400000]\r
+        001574' 254000  001567' 12560           JRST PADS3B             ;TYPE AS NEG NUM\r
+        001575' 135100  003457' 12570           LDB R,[POINT 3,T,12]\r
+        001576' 137100  003460' 12580           DPB R,[POINT 6,T,8]     ;MOVE IO BITS OVER FOR OP DECODER\r
+        001577' 260040  003315' 12590           PUSHJ P,OPTYPE\r
+        001600' 260040  002664' 12600           PUSHJ P,TSPC\r
+        001601' 205240  077400  12610           MOVSI T,077400\r
+        001602' 404240  002206' 12620           AND T,LWT\r
+        001603' 322240  001511' 12630           JUMPE T,PI4\r
+        001604' 260040  001420' 12640           PUSHJ P,LOOK            ;LOOK FOR DEVICE NUMBER\r
+        001605' 254000  001507' 12650           JRST PI3A\r
+        001606' 200240  002313' 12660           MOVE T,TEM\r
+        001607' 242240  777750  12670           LSH T,-30\r
+        001610' 260040  002003' 12680           PUSHJ P,TOC\r
+        001611' 254000  001507' 12690           JRST PI3A\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 32\r
+        OP DECODER\r
+\r
+\r
+        001612' 603000  000001  12720   MASK:   TLNE F,QF\r
+        001613' 254000  001620' 12730           JRST MASK1\r
+        001614' 201240  002235' 12740           MOVEI T,MSK\r
+        001615' 201200  000001  12750   MASK2:  MOVEI W,1\r
+        001616' 202200  002210' 12760           MOVEM W,FRASE1\r
+        001617' 254000  000340' 12770           JRST QUAN1\r
+        001620' 202240  002235' 12780   MASK1:  MOVEM T,MSK\r
+        001621' 254000  000134' 12790           JRST RET\r
+\r
+        001622' 661000  000020  12810   EFFEC:  TLO F,LTF\r
+        001623' 550240  000005  12820           HRRZ T,T\r
+        001624' 201100  774000  12830   WORD:   MOVEI R,322000-326000   ;JUMPE-JUMPN\r
+        001625' 271100  326240  12840   NWORD:  ADDI R,326000+40*T      ;JUMPN T,\r
+        001626' 506100  001650' 12850           HRLM R,SEAR2\r
+\r
+        001627' 627000  000001  12870   SEARC:  TLZN F,QF\r
+        001630' 254000  000123' 12880           JRST ERR\r
+        001631' 452240  002201' 12890           SETCAM T,WRD\r
+        001632' 205240  777772  12900           MOVSI T,FRASE-DEN-1             ;PREVENT TYPE OUT OF DDT PARTS\r
+        001633' 462005  002204' 12910           SETCMM FRASE(T)\r
+        001634' 253240  001633' 12920           AOBJN T,.-1\r
+        001635' 200240  002225' 12930           MOVE T,ULIMIT\r
+        001636' 603000  002000  12940           TLNE F,SAF\r
+        001637' 661000  000001  12950           TLO F,1\r
+        001640' 260040  001723' 12960           PUSHJ P,SETUP1\r
+        001641' 260040  002657' 12970           PUSHJ P,CRF\r
+        001642' 260040  001404' 12980   SEAR1:  PUSHJ P,FETCH\r
+        001643' 254000  001651' 12990           JRST SEAR2A\r
+        001644' 603000  000020  13000           TLNE F,LTF      ;CHECK FOR EFFECTIVE ADDRESS SEARCH\r
+        001645' 254000  001677' 13010           JRST EFFEC0\r
+        001646' 444240  002201' 13020           EQV T,WRD\r
+        001647' 404240  002235' 13030           AND T,MSK\r
+        001650' 322240  001655' 13040   SEAR2:  JUMPE T,SEAR3           ;OR JUMPN T\r
+        001651' 260040  002714' 13050   SEAR2A: PUSHJ P,LISTEN  ;QUIT ON TELETYPE\r
+        001652' 253100  001642' 13060           AOBJN R,SEAR1\r
+        001653' 462000  002206' 13070           SETCMM LWT\r
+        001654' 254000  000007' 13080           JRST DD1\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 33\r
+        OP DECODER\r
+\r
+        001655' 260040  001404' 13100   SEAR3:  PUSHJ P,FETCH\r
+        001656' 254000  000123' 13110           JRST ERR\r
+        001657' 202240  002206' 13120           MOVEM T,LWT\r
+        001660' 202100  002207' 13130           MOVEM R,TEM2\r
+        001661' 202100  000005  13140           MOVEM R,T\r
+        001662' 552100  002226' 13150           HRRZM R,LLOC\r
+        001663' 552100  002227' 13160           HRRZM R,LLOCO\r
+        001664' 260040  001543' 13170           PUSHJ P,PAD\r
+        001665' 201240  000057  13180           MOVEI T,"/"\r
+        001666' 260040  002676' 13190           PUSHJ P,TOUT\r
+        001667' 260040  002662' 13200           PUSHJ P,LCT\r
+        001670' 200240  002206' 13210           MOVE T,LWT\r
+        001671' 260040  001462' 13220           PUSHJ P,CONSYM\r
+        001672' 260040  002657' 13230           PUSHJ P,CRF\r
+        001673' 462000  002206' 13240           SETCMM LWT\r
+        001674' 462000  002313' 13250           SETCMM TEM\r
+        001675' 200100  002207' 13260   SEAR4:  MOVE R,TEM2\r
+        001676' 254000  001651' 13270           JRST  SEAR2A\r
+\r
+        001677' 202100  002207' 13290   EFFEC0: MOVEM R,TEM2\r
+        001700' 201200  000100  13300           MOVEI W,100\r
+        001701' 202200  002313' 13310           MOVEM W,TEM\r
+        001702' 200200  000005  13320   EFFEC1: MOVE W,T\r
+        001703' 135100  003461' 13330           LDB R,[POINT 4,T,17]    ;GET IR FIELD\r
+        001704' 322100  001707' 13340           JUMPE R,EFFEC2\r
+        001705' 550242  002267' 13350           HRRZ T,AC0(R)\r
+        001706' 270240  000004  13360           ADD T,W\r
+        001707' 540100  000005  13370   EFFEC2: HRR R,T\r
+        001710' 607200  000020  13380           TLNN W,20               ;INDIRECT BIT CHECK\r
+        001711' 254000  001716' 13390           JRST EFFEC3\r
+        001712' 372000  002313' 13400           SOSE,TEM\r
+        001713' 260040  001404' 13410           PUSHJ P,FETCH\r
+        001714' 254000  001675' 13420           JRST SEAR4\r
+        001715' 254000  001702' 13430           JRST EFFEC1\r
+        001716' 200100  002207' 13440   EFFEC3: MOVE R,TEM2\r
+        001717' 444240  002201' 13450           EQV T,WRD\r
+        001720' 405240  777777  13460           ANDI T,777777\r
+        001721' 254000  001650' 13470           JRST SEAR2\r
+\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 34\r
+        OP DECODER\r
+\r
+\r
+        001722' 661000  000020  13510   SETUP:  TLO F,20                ;ZERO\r
+        001723' 271240  000001  13520   SETUP1: ADDI T,1                ;YANK,VERIFY,SEARCHES\r
+        001724' 607000  000001  13530           TLNN F,QF\r
+        001725' 200260  002230' 13540   SETUP2: MOVE T,@SYMP\r
+        001726' 550240  000005  13550           HRRZ T,T\r
+        001727' 202240  002225' 13560           MOVEM T,ULIMIT\r
+        001730' 550220  002230' 13570           HRRZ W,@SYMP\r
+        001731' 315200  000005  13580           CAMGE W,T\r
+        001732' 607000  000020  13590           TLNN F,20\r
+                                13600   IFE EDDT&1,<    CAML T,JOBREL>\r
+        001733' 254000  001735' 13610   IFN EDDT&1,<    JRST .+2>\r
+\r
+        001734' 254000  000123' 13630           JRST ERR\r
+        001735' 550100  002224' 13640           HRRZ R,DEFV\r
+        001736' 607000  001000  13650           TLNN F,FAF\r
+        001737' 201100  000000  13660           MOVEI R,0\r
+        001740' 311100  002225' 13670           CAML R,ULIMIT\r
+        001741' 254000  000123' 13680           JRST ERR\r
+        001742' 202100  002224' 13690           MOVEM R,DEFV\r
+        001743' 200200  000002  13700           MOVE W,R\r
+        001744' 274200  002225' 13710           SUB W,ULIMIT\r
+        001745' 506200  000002  13720           HRLM W,R\r
+        001746' 263040  000000  13730           POPJ P,0\r
+\r
+        001747' 607000  010000  13750   ZERO:   TLNN F,CCF\r
+        001750' 254000  000123' 13760           JRST ERR\r
+        001751' 260040  001722' 13770           PUSHJ P,SETUP\r
+        001752' 602100  777760  13780   ZERO1:  TRNE R,777760\r
+        001753' 254000  001757' 13790           JRST ZERO2\r
+        001754' 402002  002267' 13800           CLEARM,AC0(R)\r
+        001755' 253100  001752' 13810           AOBJN R,ZERO1\r
+        001756' 254000  000007' 13820           JRST DD1\r
+        001757' 550100  000002  13830   ZERO2:  HRRZ R, R\r
+        001760' 305100  000040  13840           CAIGE R,ZLOW\r
+        001761' 201100  000040  13850           MOVEI R,ZLOW            ;DON'T ZERO 20-ZLOW\r
+        001762' 550140  000005  13860           HRRZ S,T\r
+        001763' 301140  000000' 13870           CAIL S, DDT\r
+        001764' 201140  000000' 13880           MOVEI S, DDT \r
+        001765' 313140  000002  13890           CAMLE S,R\r
+        001766' 265200  001776' 13900           JSP W,ZEROR\r
+        001767' 550100  000002  13910           HRRZ R,R\r
+        001770' 307100  003610' 13920           CAIG R, DDTEND  ; DON'T ZERO OUT\r
+        001771' 201100  003610' 13930           MOVEI R, DDTEND  ; DDT\r
+        001772' 550140  000005  13940           HRRZ S,T\r
+        001773' 313140  000002  13950           CAMLE S, R\r
+        001774' 265200  001776' 13960           JSP W,ZEROR\r
+        001775' 254000  000007' 13970           JRST DD1\r
+\r
+        001776' 504100  000002  13990   ZEROR:  HRL R,R\r
+        001777' 402002  000000  14000           CLEARM,(R)\r
+        002000' 271100  000001  14010           ADDI  R, 1\r
+        002001' 251103  777777  14020           BLT R, -1(S)\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 34-1\r
+        OP DECODER\r
+\r
+        002002' 254004  000000  14030           JRST (W)\r
+\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 35\r
+        OP DECODER\r
+\r
+\r
+        002003'                 14070   FTOC:           ;NUMERIC OUTPUT SUBROUTINE\r
+        002003' 550300  000012  14080   TOC:    HRRZ W1,ODF\r
+        002004' 306300  000012  14090           CAIN W1,12\r
+        002005' 254000  002017' 14100           JRST  TOC4\r
+        002006' 246240  777735  14110   TOCA:   LSHC T,-43\r
+        002007' 242300  777777  14120           LSH W1,-1               ;W1=T+1\r
+        002010' 235260  000012  14130   TOC1:   DIVI T,@ODF\r
+        002011' 506301  000000  14140           HRLM W1,0(P)\r
+        002012' 322240  002014' 14150   TOC3:   JUMPE T,TOC2\r
+        002013' 260040  002006' 14160           PUSHJ P,TOCA\r
+        002014' 554241  000000  14170   TOC2:   HLRZ T,0(P)\r
+        002015' 271240  000060  14180           ADDI T,"0"\r
+        002016' 254000  002676' 14190   CJTOUT: JRST TOUT       ;DOES POPJ TO TOC2 OR EXIT\r
+\r
+        002017' 214300  000005  14210   TOC4:   MOVM W1,T\r
+        002020' 325240  002023' 14220           JUMPGE T,TOC5\r
+        002021' 201240  000055  14230           MOVEI T,"-"\r
+        002022' 260040  002676' 14240           PUSHJ P,TOUT\r
+        002023' 201240  000000  14250   TOC5:   MOVEI T,0\r
+        002024' 260040  002010' 14260           PUSHJ P,TOC1\r
+        002025' 201240  000056  14270   TOC6:   MOVEI T,"."\r
+        002026' 254000  002676' 14280           JRST TOUT\r
+\r
+                                14300   ;SYMBOL OUTPUT SUBROUTINE\r
+\r
+        002027' 552300  002223' 14320   SPT0:   HRRZM W1,SPSAV          ;SAVE POINTER TO TYPED SYM\r
+        002030' 200240  002016' 14330   SPT:    MOVE T,CJTOUT           ;RADIX 50 SYMBOL PRINT\r
+        002031' 202240  002050' 14340   SPT4:   MOVEM T,SPTX            ;SETUP OUTPUT DESTINATION\r
+        002032' 135240  003462' 14350           LDB T,[POINT 32,0(W1),35]       ;GET SYMBOL\r
+        002033' 231240  000050  14360   SPT1:   IDIVI T,50\r
+        002034' 506301  000000  14370           HRLM W1,0(P)\r
+        002035' 322240  002037' 14380           JUMPE T,SPT2\r
+        002036' 260040  002033' 14390           PUSHJ P,SPT1\r
+        002037' 554241  000000  14400   SPT2:   HLRZ T,0(P)\r
+        002040' 322240  000374' 14410           JUMPE T,CPOPJ           ;FLUSH NULL CHARACTERS\r
+        002041' 271240  000257  14420           ADDI T,260-1\r
+        002042' 303240  000271  14430           CAILE T,271\r
+        002043' 271240  000007  14440           ADDI T,301-272\r
+        002044' 303240  000332  14450           CAILE T,332\r
+        002045' 275240  000070  14460           SUBI T,334-244\r
+        002046' 306240  000243  14470           CAIN T,243\r
+        002047' 201240  000256  14480   SPT3:   MOVEI T,256\r
+        002050' 000000  000000  14490   SPTX:   0               ;JRST TOUT, OR IDPB T,R FROM OPEVAL\r
+        002051' 263040  000000  14500           POPJ P,\r
+\r
+        002052' 201240  000002  14520   SYMD:   MOVEI T,DELO/200000     ;$D ;DELETE LAST SYM & PRINT NEW\r
+        002053' 550100  002223' 14530           HRRZ R,SPSAV            ;PICK UP POINTER TO LAST SYM\r
+        002054' 322100  000123' 14540           JUMPE R,ERR\r
+        002055' 137240  003440' 14550           DPB T,[POINT 2,(R),1]   ;STORE SEMI-DELETE BITS IN SYMBOL\r
+        002056' 200240  002206' 14560           MOVE T,LWT\r
+        002057' 254000  001462' 14570           JRST CONSYM             ;PRINT OUT NEXT BEST SYMBOL\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 36\r
+        OP DECODER\r
+\r
+\r
+                                14600   ;FLOATING POINT OUTPUT\r
+\r
+        002060' 200100  000005  14620   TFLOT:  MOVE A,T\r
+        002061' 327100  002070' 14630           JUMPG A, TFLOT1\r
+        002062' 322100  002100' 14640           JUMPE A,FP1A\r
+        002063' 213000  000002  14650           MOVNS A\r
+        002064' 201240  000055  14660           MOVEI T,"-"\r
+        002065' 260040  002676' 14670           PUSHJ P,TOUT\r
+        002066' 623100  400000  14680           TLZE A,400000\r
+        002067' 254000  002100' 14690           JRST FP1A\r
+        002070' 201240  000043  14700   TFLOT1: MOVEI T,"#"  ; IF UNNORMALIZED FLOATING \r
+        002071' 607100  000400  14710           TLNN A, 400  ; POINT NUMBER, SO INDICATE \r
+        002072' 260040  002676' 14720           PUSHJ P, TOUT ; WITH "#" BEFORE NUMBER\r
+\r
+        002073' 201140  000000  14740   FP1:    MOVEI B,0\r
+        002074' 315100  002162' 14750           CAMGE A,FT01\r
+        002075' 254000  002120' 14760           JRST FP4\r
+        002076' 311100  002150' 14770           CAML A,FT8\r
+        002077' 344140  002120' 14780           AOJA B,FP4\r
+        002100' 201200  000000  14790   FP1A:   MOVEI C,0\r
+\r
+        002101' 225100  000400  14810   FP3:    MULI A,400\r
+        002102' 244142  777535  14820           ASHC B,-243(A)\r
+        002103' 200100  000003  14830           MOVE A,B\r
+        002104' 402000  002314' 14840           CLEARM,TEM1\r
+        002105' 260040  002135' 14850           PUSHJ P,FP7\r
+        002106' 260040  002025' 14860           PUSHJ P,TOC6            ;PRINT DECIMAL POINT\r
+        002107' 211100  000010  14870           MOVNI A,10\r
+        002110' 270100  002314' 14880           ADD A,TEM1\r
+        002111' 200300  000004  14890           MOVE W1,C\r
+        002112' 200240  000006  14900   FP3A:   MOVE T,W1\r
+        002113' 225240  000012  14910           MULI T,12\r
+        002114' 260040  002144' 14920           PUSHJ P,FP7B\r
+        002115' 332000  000006  14930           SKIPE,W1\r
+        002116' 341100  002112' 14940           AOJL A,FP3A\r
+        002117' 263040  000000  14950           POPJ P,\r
+\r
+        002120' 211200  000006  14970   FP4:    MOVNI C,6\r
+        002121' 201340  000000  14980           MOVEI W2,0\r
+        002122' 240340  000001  14990   FP4A:   ASH W2,1\r
+        002123' 256003  002163' 15000           XCT,FCP(B)\r
+        002124' 254000  002127' 15010           JRST FP4B\r
+        002125' 164123  002164' 15020           FMPR A,@FCP+1(B)\r
+        002126' 435340  000001  15030           IORI W2,1\r
+        002127' 346200  002122' 15040   FP4B:   AOJN C,FP4A\r
+        002130' 261043  002166' 15050           PUSH P,FSGN(B)\r
+        002131' 260040  002101' 15060           PUSHJ P,FP3\r
+        002132' 262040  000006  15070           POP P,W1\r
+        002133' 200100  000007  15080           MOVE A,W2\r
+        002134' 260040  002171' 15090           PUSHJ P,TEXT\r
+\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 37\r
+        OP DECODER\r
+\r
+        002135' 322100  002143' 15120   FP7:    JUMPE A,FP7A1\r
+        002136' 231100  000012  15130           IDIVI A,12\r
+        002137' 350000  002314' 15140           AOS,TEM1\r
+        002140' 506141  000000  15150   FP7A:   HRLM B,(P)\r
+        002141' 322100  002143' 15160           JUMPE A,FP7A1\r
+        002142' 260040  002135' 15170           PUSHJ P,FP7\r
+\r
+        002143' 554241  000000  15190   FP7A1:  HLRZ T,(P)\r
+        002144' 271240  000260  15200   FP7B:   ADDI T,260\r
+        002145' 254000  002676' 15210           JRST TOUT\r
+\r
+        002146' 353473  426555  15230           353473426555    ;1.0E32\r
+        002147' 266434  157116  15240           266434157116    ;1.0E16\r
+        002150' 233575  360400  15250   FT8:    233575360400    ;1.0E8\r
+        002151' 216470  400000  15260           216470400000    ;1.0E4\r
+        002152' 207620  000000  15270           207620000000    ;1.0E2\r
+        002153' 204500  000000  15280           204500000000    ;1.0E1\r
+        002154' 201400  000000  15290   FT:     201400000000    ;1.0E0\r
+        002155' 026637  304365  15300           026637304365    ;1.0E-32\r
+        002156' 113715  126246  15310           113715126246    ;1.0E-16\r
+        002157' 146527  461671  15320           146527461671    ;1.0E-8\r
+        002160' 163643  334273  15330           163643334273    ;1.0E-4\r
+        002161' 172507  534122  15340           172507534122    ;1.0E-2\r
+        002162' 175631  463146  15350   FT01:   175631463146    ;1.0E-1\r
+                        002163' 15360   FT0=FT01+1\r
+\r
+        002163' 313104  002163' 15380   FCP:    CAMLE A, FT0(C)\r
+        002164' 315104  002154' 15390           CAMGE A, FT(C)\r
+        002165' 000004  002163' 15400           Z FT0(C)\r
+\r
+        002166' 425320  000000  15420   FSGN:   ASCII .E-.\r
+        002167' 425260  000000  15430           ASCII .E+.\r
+\r
+        002170' 200300  000005  15450   TEXTT:  MOVE W1,T\r
+        002171' 607300  774000  15460   TEXT:   TLNN W1,774000          ;LEFT JUSTIFIED UNLESS LEFT CHAR IS NULL\r
+        002172' 242300  000035  15470           LSH W1,35\r
+        002173' 201240  000000  15480   TEXT2:  MOVEI T,                ;7 BIT ASCII TEXT OUTPUT SUBROUTINE0\r
+        002174' 246240  000007  15490           LSHC T,7\r
+        002175' 260040  002676' 15500           PUSHJ P,TOUT\r
+        002176' 326300  002173' 15510           JUMPN W1,TEXT2\r
+        002177' 263040  000000  15520           POPJ P,\r
+\r
+\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 38\r
+        OP DECODER\r
+\r
+\r
+        002200' 777662  777661' 15570   KILC:   XWD -NSYMS,LOW\r
+\r
+        002201' 000000  000000  15590   WRD:    0\r
+        002202' 000000  000000  15600   WRD2:   0\r
+        002203' 000000  000000  15610   PRNC:   0\r
+\r
+        002204' 000000  000000  15630   FRASE:  0       ;DONT CHANGE ORDER, SEE  SEARC+3\r
+        002205' 000000  000000  15640   SYL:    0\r
+        002206' 000000  000000  15650   LWT:    0\r
+        002207' 000000  000000  15660   TEM2:   0\r
+        002210'                 15670   FRASE1:\r
+        002210' 000000  000000  15680   TEM3:   0\r
+        002211' 000000  000000  15690   DEN:    0\r
+\r
+        002212' 000000  000000  15710   PRGM:   0\r
+        002213' 000000  000000  15720   ESTU:   0\r
+        002214' 000000  000000  15730   ESTUT:  0\r
+        002215' 000000  000000  15740   FSV:    0\r
+        002216' 000000  000000  15750   FRACT:  0\r
+        002217' 000000  000000  15760   FPWR:   0\r
+        002220' 000000  000000  15770   FTERM:  0\r
+        002221' 000000  000000  15780   FH:     0\r
+        002222' 000000  000000  15790   SYM:    0\r
+        002223' 000000  000000  15800   SPSAV:  0       ;POINTER TO LAST SYMBOL TYPED\r
+        002224' 000000  000000  15810   DEFV:   0\r
+        002225' 000000  000000  15820   ULIMIT: 0\r
+        002226' 000000  000000  15830   LLOC:   0\r
+        002227' 000000  000000  15840   LLOCO:  0\r
+        002230' 000000  000036  15850   SYMP:   XWD PID,JOBSYM\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 39\r
+        OP DECODER\r
+\r
+\r
+        002231' 000000  000000  15880   SAVPI:  0\r
+        002232' 000000  001177  15890           1177\r
+        002233' 000000  000000  15900   SAVTTY: 0\r
+        002234' 000000  000000  15910   IFN EDDT&1,<STARTA:     0>      ;START ADR FROM PTR\r
+        002235' 777777  777777  15920   MSK:    XWD -1,-1\r
+        002236' 000000  000000  15930   B1ADR:  0\r
+        002237' 000000  000000  15940   B1SKP:  0\r
+        002240' 000000  000000  15950   B1CNT:  0\r
+\r
+                                15970   REPEAT NBP*3-3, <       0>\r
+        002241' 000000  000000                  0\r
+        002242' 000000  000000                  0\r
+        002243' 000000  000000                  0\r
+        002244' 000000  000000                  0\r
+        002245' 000000  000000                  0\r
+        002246' 000000  000000                  0\r
+        002247' 000000  000000                  0\r
+        002250' 000000  000000                  0\r
+        002251' 000000  000000                  0\r
+        002252' 000000  000000                  0\r
+        002253' 000000  000000                  0\r
+        002254' 000000  000000                  0\r
+        002255' 000000  000000                  0\r
+        002256' 000000  000000                  0\r
+        002257' 000000  000000                  0\r
+        002260' 000000  000000                  0\r
+        002261' 000000  000000                  0\r
+        002262' 000000  000000                  0\r
+        002263' 000000  000000                  0\r
+        002264' 000000  000000                  0\r
+        002265' 000000  000000                  0\r
+                        002263' 15990   BNADR=.-3\r
+        002266' 000000  000000  16000   AUTOPI: 0\r
+\r
+        002267'                 16020   AC0:    BLOCK 17\r
+\r
+        002306' 000000  000000  16040   AC17:   0\r
+\r
+        002307' 000000  001467' 16060   SCHM:   EXP PIN         ;DO NOT CHANGE ORDER\r
+        002310' 000000  001545' 16070   ARM:    EXP PADSO\r
+        002311' 000000  000010  16080   ODFM:   EXP 10\r
+\r
+        002312' 000000  000000  16100   SARS:   0\r
+        002313' 000000  000000  16110   TEM:    0\r
+        002314' 000000  000000  16120   TEM1:   0\r
+\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 40\r
+        OP DECODER\r
+\r
+\r
+                                16160   IFN EDDT&1&<EDDT>B36,<\r
+\r
+\r
+        002315' 607000  000010  16190   PSR:    TLNN F,ROF\r
+        002316' 254000  000123' 16200           JRST ERR\r
+        002317' 202240  002206' 16210           MOVEM T,LWT\r
+        002320' 260040  001371' 16220           PUSHJ P,DEPRS\r
+        002321' 552100  002224' 16230           HRRZM R,DEFV            ;R CONTAINS LLOCO\r
+        002322' 200240  000002  16240           MOVE T,R\r
+        002323' 254000  002327' 16250           JRST PUN2\r
+\r
+        002324' 641000  001001  16270   PUNCH:  TLC F,FAF+QF\r
+        002325' 643000  001001  16280           TLCE F,FAF+QF\r
+        002326' 254000  000123' 16290           JRST ERR                ;ONE ARGUMENT MISSING\r
+        002327' 271240  000001  16300   PUN2:   ADDI T,1\r
+        002330' 552240  002314' 16310           HRRZM T,TEM1\r
+        002331' 274240  002224' 16320           SUB T,DEFV\r
+        002332' 323240  000123' 16330           JUMPLE T,ERR\r
+\r
+        002333' 201240  000004  16350   PUN1:   MOVEI T,4               ;PUNCH 4 FEED HOLES\r
+        002334' 260040  002450' 16360           PUSHJ P,FEED\r
+        002335' 603000  000040  16370           TLNE F,CF               ;PUNCH NON-ZERO BLOCKS?\r
+        002336' 254000  002365' 16380           JRST PUNZ               ;YES\r
+        002337' 550100  002224' 16390           HRRZ R,DEFV\r
+        002340' 435100  000037  16400           IORI R,37\r
+        002341' 271100  000001  16410           ADDI R,1\r
+        002342' 313100  002314' 16420           CAMLE R,TEM1\r
+        002343' 200100  002314' 16430           MOVE R,TEM1\r
+        002344' 250100  002224' 16440           EXCH R,DEFV\r
+        002345' 200240  000002  16450           MOVE T,R\r
+        002346' 274240  002224' 16460           SUB T,DEFV\r
+        002347' 504100  000005  16470           HRL R,T\r
+        002350' 325100  000134' 16480           JUMPGE R,RET            ;EXIT OR PUNCH\r
+\r
+        002351' 200240  000002  16500   PBLK:   MOVE T,R\r
+        002352' 370200  000005  16510           SOS W,T         ;INIT CHECKSUM\r
+        002353' 260040  002440' 16520           PUSHJ P,PWRD\r
+        002354' 260040  001404' 16530   PBLK1:  PUSHJ P,FETCH\r
+        002355' 254000  000123' 16540           JRST ERR\r
+        002356' 270200  000005  16550           ADD W,T\r
+        002357' 260040  002440' 16560           PUSHJ P,PWRD\r
+        002360' 253100  002354' 16570           AOBJN R,PBLK1\r
+        002361' 200240  000004  16580           MOVE T,W\r
+        002362' 260040  002440' 16590           PUSHJ P,PWRD\r
+        002363' 254000  002333' 16600           JRST PUN1\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 41\r
+        OP DECODER\r
+\r
+\r
+                                16630   ;PUNCH NON-ZERO BLOCKS\r
+\r
+        002364' 350000  002224' 16650   PUNZ0:  AOS DEFV                ;LOOK AT NEXT WORD\r
+        002365' 550200  002224' 16660   PUNZ:   HRRZ W,DEFV             ;ENTER HERE - GET STARTING ADDRESS\r
+        002366' 200100  000004  16670           MOVE R,W\r
+        002367' 274200  002314' 16680           SUB W,TEM1              ;CALCULATE NEGATIVE LENGTH\r
+        002370' 504100  000004  16690           HRL R,W                 ;SET UP AOBJN POINTER\r
+        002371' 325100  000134' 16700           JUMPGE R,RET            ;FINISHED?\r
+        002372' 317100  003463' 16710           CAMG R,[XWD -40,0]      ;BLOCK LONGER THAN 40?\r
+        002373' 505100  777740  16720           HRLI R,-40              ;YES, FIX IT UP\r
+        002374' 205300  400000  16730           MOVSI W1,400000         ;W1 NEGATIVE MEANS FLUSH 0 WORDS\r
+        002375' 260040  001404' 16740   PUNZ2:  PUSHJ P,FETCH           ;GET WORD FROM MEMORY\r
+        002376' 254000  000123' 16750           JRST ERR\r
+        002377' 322240  003464' 16760           JUMPE T,[AOJA W1,PUNZ4] ;IF WORD IS 0, INDEX 0 WORD COUNTER\r
+        002400' 201300  000000  16770           MOVEI W1,0              ;CLEAR 0 WORD COUNTER\r
+        002401' 321300  002364' 16780   PUNZ4:  JUMPL W1,PUNZ0          ;FLUSH 0 WORD, GET ANOTHER\r
+        002402' 301300  000003  16790           CAIL W1,3               ; NOSKIP FOR 3RD 0 WORD AFTER NON 0 WORD\r
+        002403' 354000  000002  16800           AOSA R                  ;ADVANCE R TO LAST ADR+1\r
+        002404' 253100  002375' 16810           AOBJN R,PUNZ2\r
+        002405' 270300  002224' 16820           ADD W1,DEFV             ;CALCULATE DEFV-R+W1=-WORD COUNT\r
+        002406' 274300  000002  16830           SUB W1,R\r
+        002407' 506300  002224' 16840           HRLM W1,DEFV            ;PUT -WC IN LEFT HALF OF FA\r
+        002410' 250100  002224' 16850           EXCH R,DEFV             ;SAVE ADR FOR NEXT BLOCK, GET POINTER\r
+        002411' 254000  002351' 16860           JRST PBLK\r
+\r
+                                16880   >\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 42\r
+        OP DECODER\r
+\r
+                                16900   IFN EDDT&1&<EDDT>B36,<\r
+\r
+\r
+        002412' 603000  000001  16930   LOADER: TLNE F,QF\r
+        002413' 254000  000123' 16940           JRST ERR\r
+        002414' 201240  000400  16950           MOVEI T,400\r
+        002415' 260040  002450' 16960           PUSHJ P,FEED\r
+        002416' 200100  002614' 16970           MOVE R,LOADE\r
+        002417' 200242  000000  16980   LOAD1:  MOVE T,0(R)\r
+        002420' 260040  002440' 16990           PUSHJ P,PWRD\r
+        002421' 253100  002417' 17000           AOBJN R,LOAD1\r
+        002422' 201240  000100  17010           MOVEI T,100\r
+        002423' 260040  002450' 17020   LOAD2:  PUSHJ P,FEED\r
+        002424' 254000  000134' 17030           JRST RET\r
+\r
+        002425' 607000  000001  17050   BLKEND: TLNN F,QF               ;BLOCK END\r
+        002426' 200240  003465' 17060           MOVE T,[JRST 4,DDT]\r
+        002427' 661240  254000  17070           TLO T,254000            ;JRST\r
+        002430' 261040  000005  17080           PUSH P,T\r
+        002431' 201240  000100  17090           MOVEI T,100\r
+        002432' 260040  002450' 17100           PUSHJ P,FEED\r
+        002433' 262040  000005  17110           POP P,T\r
+        002434' 260040  002440' 17120           PUSHJ P,PWRD\r
+        002435' 260040  002440' 17130           PUSHJ P,PWRD    ;EXTRA WORD FOR READER TO STOP ON\r
+        002436' 201240  000500  17140           MOVEI T,500\r
+        002437' 254000  002423' 17150           JRST LOAD2\r
+\r
+        002440' 201300  000006  17170   PWRD:   MOVEI W1,6\r
+        002441' 241240  000006  17180   PWRD2:  ROT T,6\r
+        002442' 710300  000020  17190           CONSZ PTPP,20\r
+        002443' 254000  002442' 17200           JRST .-1\r
+        002444' 710200  000050  17210           CONO PTPP,50\r
+        002445' 710140  000005  17220           DATAO PTPP,T\r
+        002446' 367300  002441' 17230           SOJG W1,PWRD2\r
+        002447' 263040  000000  17240           POPJ P,0\r
+\r
+        002450' 710300  000020  17260   FEED:   CONSZ PTPP,20\r
+        002451' 254000  002450' 17270           JRST .-1\r
+        002452' 710200  000010  17280           CONO PTPP,10\r
+        002453' 710140  002455' 17290           DATAO PTPP,FEED1\r
+        002454' 366240  002450' 17300           SOJN T,FEED\r
+        002455' 263040  000000  17310   FEED1:  POPJ P,0        ;ADDRESS USED AS A CONSTANT\r
+\r
+                                17330   >\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 43\r
+        OP DECODER\r
+\r
+                                17350   IFN EDDT&1&<EDDT>B36,<\r
+\r
+\r
+        002456' 661000  000020  17380   VERIFY: TLO F,LTF\r
+        002457' 260040  001723' 17390   CORE:   PUSHJ P,SETUP1          ;LOAD TAPES INTO CORE\r
+        002460' 710600  000060  17400           CONO PTRR,60\r
+        002461' 710740  000010  17410   CORE1:  CONSO PTRR,10\r
+        002462' 254000  002461' 17420           JRST .-1\r
+        002463' 710440  000005  17430           DATAI PTRR,T\r
+        002464' 312240  002613' 17440           CAME T,LOADE-1          ;JRST 1\r
+        002465' 254000  002461' 17450           JRST CORE1\r
+        002466' 260040  002657' 17460           PUSHJ P,CRF\r
+        002467' 260040  002540' 17470           PUSHJ P,BLOCK\r
+\r
+        002470' 260040  002532' 17490   CORE2:  PUSHJ P,GETW\r
+        002471' 311100  002224' 17500           CAML R,DEFV\r
+        002472' 311100  002225' 17510           CAML R,ULIMIT\r
+        002473' 254000  002526' 17520           JRST VER3\r
+        002474' 603000  000020  17530           TLNE F,LTF\r
+        002475' 254000  002500' 17540           JRST VER2\r
+        002476' 260040  001376' 17550           PUSHJ P,DEP\r
+        002477' 254000  002526' 17560           JRST VER3\r
+\r
+        002500' 202240  002207' 17580   VER2:   MOVEM T,TEM2\r
+        002501' 260040  001404' 17590           PUSHJ P,FETCH\r
+        002502' 254000  000123' 17600           JRST ERR\r
+        002503' 202240  002210' 17610           MOVEM T,TEM3\r
+        002504' 430240  002207' 17620           XOR T,TEM2\r
+        002505' 404240  002235' 17630           AND T,MSK\r
+        002506' 322240  002526' 17640           JUMPE T,VER3\r
+        002507' 261040  000003  17650           PUSH P,S\r
+        002510' 261040  000002  17660           PUSH P,R\r
+        002511' 550240  000002  17670           HRRZ T,R\r
+        002512' 260040  001543' 17680           PUSHJ P,PAD\r
+        002513' 201240  000257  17690           MOVEI T,257             ;SLASH\r
+        002514' 260040  002676' 17700           PUSHJ P,TOUT\r
+        002515' 260040  002662' 17710           PUSHJ P,LCT\r
+        002516' 200240  002210' 17720           MOVE T,TEM3             ;CORE CONTENTS\r
+        002517' 260040  001462' 17730           PUSHJ P,CONSYM\r
+        002520' 260040  002662' 17740           PUSHJ P,LCT\r
+        002521' 200240  002207' 17750           MOVE T,TEM2             ;TAPE CONTENTS\r
+        002522' 260040  001462' 17760           PUSHJ P,CONSYM\r
+        002523' 260040  002657' 17770           PUSHJ P,CRF\r
+        002524' 262040  000002  17780           POP P,R\r
+        002525' 262040  000003  17790           POP P,S\r
+        002526' 260040  002714' 17800   VER3:   PUSHJ P,LISTEN\r
+        002527' 344100  002470' 17810           AOJA R,CORE2\r
+        002530' 260040  002540' 17820   RUNEND: PUSHJ P,BLOCK\r
+        002531' 254000  002530' 17830           JRST .-1\r
+\r
+\r
+                                17860   >\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 44\r
+        OP DECODER\r
+\r
+                                17880   IFN EDDT&1&<EDDT>B36,<\r
+\r
+\r
+\r
+        002532' 321140  002534' 17920   GETW:   JUMPL S,GETW1\r
+        002533' 260040  002540' 17930           PUSHJ P,BLOCK\r
+        002534' 200243  000001  17940   GETW1:  MOVE T,1(S)\r
+        002535' 252140  002536' 17950           AOBJP S,.+1\r
+        002536' 263040  000000  17960           POPJ P,0\r
+\r
+        002537' 710600  000060  17980   BLOCKS: CONO PTRR,60            ;READ DATA BLOCKS\r
+        002540' 710740  000010  17990   BLOCK:  CONSO PTRR,10\r
+        002541' 254000  002540' 18000           JRST .-1\r
+        002542' 710440  000004  18010           DATAI PTRR,W\r
+        002543' 321200  002547' 18020           JUMPL W,BLK1\r
+        002544' 202200  002234' 18030           MOVEM W,STARTA\r
+        002545' 710600  000000  18040           CONO PTRR,0             ;TURN OFF READER\r
+        002546' 254000  000007' 18050           JRST DD1\r
+        002547' 202200  000006  18060   BLK1:   MOVEM W,W1              ;INIT CHECKSUM\r
+        002550' 641200  777740  18070           TLC W,777740\r
+        002551' 643200  777740  18080           TLCE W,777740\r
+        002552' 254000  000123' 18090           JRST ERR                ;BLOCK TOO BIG\r
+        002553' 271200  000001  18100           ADDI W,1\r
+        002554' 552200  000002  18110           HRRZM W,R\r
+        002555' 541200  003477' 18120           HRRI W,BUFF-1\r
+        002556' 202200  000003  18130           MOVEM W,S\r
+        002557' 710740  000010  18140   BLK2:   CONSO PTRR,10\r
+        002560' 254000  002557' 18150           JRST .-1\r
+        002561' 710400  000004  18160           BLKI PTRR,W\r
+        002562' 254000  002565' 18170           JRST BLK3\r
+        002563' 270304  000000  18180           ADD W1,0(W)\r
+        002564' 254000  002557' 18190           JRST BLK2\r
+        002565' 270304  000000  18200   BLK3:   ADD W1,0(W)\r
+        002566' 710740  000010  18210           CONSO PTRR,10\r
+        002567' 254000  002566' 18220           JRST .-1\r
+        002570' 710440  000004  18230           DATAI PTRR,W\r
+        002571' 316200  000006  18240           CAMN W,W1\r
+        002572' 263040  000000  18250           POPJ P,0\r
+        002573' 710600  000000  18260           CONO PTRR,0             ;CHECKSUM ERROR\r
+        002574' 254200  002537' 18270           JRST 4,BLOCKS\r
+\r
+                                18290   ;R CONTAINS RIGHT HALF OF FIRST LINE\r
+                                18300   ;S CONTAINS (-WC,BUFF-1)\r
+\r
+\r
+                                18330   >\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 45\r
+        OP DECODER\r
+\r
+                                18350   IFN EDDT&1&<EDDT>B36,<\r
+\r
+\r
+        002575'                 18380   LOADB:\r
+\r
+        000000                  18400   PHASE 0                 ;RIM10B CHECKSUM LOADER\r
+        002575' 777762  000000  18410           XWD -16,0\r
+        002576' 710600  000060  18420   BEG:    CONO PTRR,60\r
+        002577' 541400  000004  18430           HRRI AA,RD+1\r
+        002600' 710740  000010  18440   RD:     CONSO PTRR,10\r
+        002601' 254000  000003  18450           JRST .-1\r
+        002602' 710470  000007  18460           DATAI PTRR,@TBL1-RD+1(AA)\r
+        002603' 256010  000007  18470           XCT     TBL1-RD+1(AA)\r
+        002604' 256010  000012  18480           XCT     TBL2-RD+1(AA)\r
+        002605' 364400  000000  18490   AA:     SOJA AA,\r
+\r
+        002606' 312740  000016  18510   TBL1:   CAME CKSM,ADR\r
+        002607' 270756  000001  18520           ADD CKSM,1(ADR)\r
+        002610' 331740  000016  18530           SKIPL CKSM,ADR\r
+\r
+        002611' 254200  000001  18550   TBL2:   JRST 4,BEG\r
+        002612' 253700  000003  18560           AOBJN ADR,RD\r
+        002613' 254000  000002  18570   ADR:    JRST BEG+1\r
+                        000017  18580   CKSM=ADR+1\r
+\r
+        002614'                 18600   DEPHASE\r
+\r
+        002614' 777761  002575' 18620   LOADE:  XWD LOADB-.,LOADB\r
+                                18630   >\r
+\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 46\r
+        OP DECODER\r
+\r
+\r
+\r
+        002615' 000000  000000  18680   SAVE:   0               ;SAVE THE ACS AND PI SYSTEM\r
+        002616' 336000  002312' 18690           SKIPN SARS\r
+        002617' 254000  002622' 18700           JRST SAV1\r
+        002620' 350000  002615' 18710           AOS SAVE\r
+        002621' 254000  002631' 18720           JRST SAV5\r
+        002622'                 18730   SAV1:   IFN EDDT&1,<\r
+        002622' 700640  002231' 18740           CONI PRS,SAVPI\r
+        002623' 700620  002232' 18750           CONO PRS, @SAVPI+1>\r
+        002624' 202740  002306' 18760           MOVEM 17,AC17\r
+        002625' 551740  002267' 18770           HRRZI 17,AC0\r
+        002626' 251740  002305' 18780           BLT 17,AC0+16\r
+        002627' 200240  002615' 18790           MOVE T, SAVE\r
+        002630' 502240  002231' 18800           HLLM T, SAVPI\r
+        002631' 476000  002312' 18810   SAV5:   SETOM,SARS\r
+        002632' 201040  003540' 18820           MOVEI P,PS\r
+                                18830           IFE EDDT&1,<PUSHJ P,TTYRET>     ;IN USER MODE, GET INTO DDT MODE\r
+        002633' 201000  000000  18840           MOVEI F,0\r
+        002634' 200240  003432' 18850           MOVE T,[XWD SCHM,SCH]\r
+        002635' 251240  000012  18860           BLT T,ODF               ;LOAD THE ACS WITH MODE SWITCHES\r
+        002636' 254020  002615' 18870           JRST @SAVE\r
+\r
+        002637' 476000  002210' 18890   RESTORE: SETOM TEM3     ;RESTORE ACS AND PI SYSTEM\r
+        002640' 542240  002615' 18900   RESTR1: HRRM T,SAVE\r
+        002641' 200240  002231' 18910           MOVE T,SAVPI\r
+        002642' 502240  002615' 18920           HLLM T, SAVE\r
+                                18930   IFN EDDT&1,<\r
+        002643' 404240  002232' 18940           AND T, SAVPI+1\r
+        002644' 435240  002000  18950           IORI T, 2000    ;TURN ON CHANNELS\r
+        002645' 202240  002231' 18960           MOVEM T, SAVPI>\r
+        002646' 515740  002267' 18970   RES1:   HRLZI 17,AC0\r
+        002647' 251740  000017  18980           BLT 17,17\r
+        002650' 402000  002312' 18990           SETZM SARS\r
+        002651' 331000  002210' 19000           SKIPL,TEM3\r
+        002652' 261000  001071' 19010   CPUSHP: PUSH BCOM       ;PROGRAM MODIFIED AT IPUSHJ\r
+        002653' 700620  002231' 19020   IFN EDDT&1,<    CONO PRS,@SAVPI>\r
+        002654' 254120  002615' 19030           JRST 2,@SAVE\r
+\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 47\r
+        OP DECODER\r
+\r
+\r
+        002655' 201240  000015  19070   CRN:    MOVEI T,15              ;CARRIAGE RETURN\r
+        002656' 254000  002676' 19080           JRST TOUT\r
+\r
+                                19100   IFE EDDT&1,<\r
+                                19110   CRNRB:  PUSHJ P,CRN\r
+                                19120           MOVEI T,177\r
+                                19130           JRST TOUT>\r
+\r
+        002657' 260040  002655' 19150   CRF:    PUSHJ P,CRN\r
+        002660' 201240  000012  19160   LF:     MOVEI T,12              ;LINE FEED\r
+        002661' 254000  002676' 19170           JRST TOUT\r
+\r
+        002662' 260040  002664' 19190   LCT:    IFN EDDT&1,<PUSHJ P,TSPC\r
+        002663' 260040  002664' 19200           PUSHJ P,TSPC>\r
+                                19210           IFE EDDT&1,<MOVEI T,11\r
+                                19220           JRST TOUT>              ;TYPE A TAB\r
+\r
+        002664' 201240  000040  19240   TSPC:   MOVEI T,40              ;SPACE\r
+        002665' 254000  002676' 19250           JRST TOUT\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 48\r
+        OP DECODER\r
+\r
+                                19270   IFN EDDT&1,<    ;EXECUTIVE MODE TELETYPE I/O\r
+\r
+        002666' 260040  002714' 19290   TIN:    PUSHJ P,LISTEN          ;TELETYPE CHARACTER INPUT\r
+        002667' 254000  002666' 19300            JRST .-1\r
+        002670' 302240  000175  19310           CAIE T,175\r
+        002671' 306240  000176  19320           CAIN T,176\r
+        002672' 201240  000033  19330           MOVEI T,33      ;CHANGE ALL ALT MODES TO NEW\r
+        002673' 306240  000177  19340           CAIN T,177      ;RUBOUT?\r
+        002674' 254000  000127' 19350           JRST WRONG      ;YES, TYPE XXX\r
+        002675' 602240  000140  19360           TRNE T,140      ;DON'T ECHO CR,LF,ALT,TAB,BACK SPACE,ETC\r
+        002676' 307240  000004  19370   TOUT:   CAIG T,04       ;DON'T TYPE EOT OR LOWER CHARS\r
+        002677' 263040  000000  19380           POPJ P,\r
+        002700' 506241  000000  19390           HRLM T,(P)\r
+        002701' 221240  200401  19400           IMULI T,200401          ;GENERATE PARITY\r
+        002702' 404240  003466' 19410           AND T,[11111111]\r
+        002703' 220240  003466' 19420           IMUL T,[11111111]\r
+        002704' 544241  000000  19430           HLR T,(P)\r
+        002705' 603240  000010  19440           TLNE T,10\r
+        002706' 640240  000200  19450           TRC T,200               ;MAKE PARITY EVEN\r
+        002707' 712300  000020  19460           CONSZ TTYY,20\r
+        002710' 254000  002707' 19470           JRST .-1\r
+        002711' 712140  000005  19480           DATAO TTYY,T\r
+        002712' 405240  000177  19490           ANDI T,177              ;FLUSH PARITY\r
+        002713' 263040  000000  19500           POPJ P,0\r
+\r
+        002714' 712340  000040  19520   LISTEN: CONSO TTYY,40   ;LISTEN FOR TTY\r
+        002715' 263040  000000  19530           POPJ P,\r
+        002716' 712040  000005  19540           DATAI TTYY,T\r
+        002717' 405240  000177  19550           ANDI T,177\r
+        002720' 254000  000373' 19560           JRST CPOPJ1\r
+\r
+        002721' 201240  003410  19580   TTYRET: MOVEI  T,3410\r
+        002722' 201340  040000  19590   TTY1:   MOVEI W2,40000\r
+        002723' 712300  000120  19600           CONSZ TTYY,120\r
+        002724' 367340  002723' 19610           SOJG W2,.-1\r
+        002725' 712240  002233' 19620           CONI TTYY,SAVTTY\r
+        002726' 712040  000007  19630           DATAI TTYY,W2\r
+        002727' 506340  002233' 19640           HRLM W2,SAVTTY\r
+        002730' 712205  000000  19650           CONO TTYY,(T)\r
+        002731' 263040  000000  19660           POPJ P,\r
+        002732' 200240  002233' 19670   TTYLEV: MOVE T,SAVTTY\r
+        002733' 620240  000160  19680           TRZ T,160\r
+        002734' 660240  003600  19690           TRO T,3600\r
+        002735' 602240  000010  19700           TRNE T,10\r
+        002736' 620240  000200  19710           TRZ T,200\r
+        002737' 254000  002722' 19720           JRST TTY1\r
+\r
+\r
+        002740' 260040  002666' 19750   TEXIN:  PUSHJ P,TIN     ;INPUT SUBROUTINE FOR TEXT MODES\r
+        002741' 606240  000140  19760           TRNN T,140\r
+        002742' 254000  002676' 19770           JRST TOUT       ;ECHO CHARACTERS (0-37) NOT ECHOED\r
+        002743' 263040  000000  19780           POPJ P,\r
+                                19790   >\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 49\r
+        OP DECODER\r
+\r
+                                19810   IFE EDDT&1,<    ;USER MODE TELETYPE I/O\r
+                                19820   \r
+                                19830   \r
+                                19840   TIN:    MOVE T,POUTBF           ;GET NEXT CHARACTER ROUTINE\r
+                                19850           CAME T,[POINT 7,INBFF]\r
+                                19860           PUSHJ P,FINOUT\r
+                                19870           ILDB T,PINBFF\r
+                                19880           CAIN T,175\r
+                                19890           MOVEI T,33      ;CHANGE TO NEW ALT MODE\r
+                                19900           CAIN    T,177   ;RUBOUT?\r
+                                19910           JRST    WRONG   ;YES PRINT XXX\r
+                                19920           JUMPN T,CPOPJ\r
+                                19930           MOVE T,[POINT 7,INBFF]\r
+                                19940           MOVEM T,PINBFF\r
+                                19950           CALL T,[SIXBIT /DDTIN/]\r
+                                19960           JRST TIN\r
+                                19970   \r
+                                19980   TOUT:   JUMPE   T,CPOPJ ;OUT PUT A CHARACTER FLUSH NULLS\r
+                                19990           IDPB T,POUTBF\r
+                                20000           CAIE T,12\r
+                                20010           POPJ P,\r
+                                20020   FINOUT: MOVEI T,0\r
+                                20030           IDPB T,POUTBF\r
+                                20040           MOVE T,[POINT 7,INBFF]\r
+                                20050           MOVEM T,PINBFF\r
+                                20060           MOVEM T,POUTBF\r
+                                20070           CALL T,[SIXBIT /DDTOUT/]\r
+                                20080           CLEARM INBFF\r
+                                20090           POPJ P,\r
+                                20100   \r
+                                20110   PINBFF: POINT 7,INBFF\r
+                                20120   POUTBF: POINT 7,INBFF\r
+                                20130   \r
+                                20140   LISTEN=CPOPJ\r
+                                20150   INBFF:  BLOCK 21\r
+                                20160   \r
+                                20170   TTYRET: CALL [SIXBIT /DDTGT/]\r
+                                20180           MOVE T,[POINT 7,INBFF]\r
+                                20190           MOVEM T,POUTBF\r
+                                20200           MOVEM T,PINBFF\r
+                                20210           CLEARM INBFF\r
+                                20220           POPJ P,\r
+                                20230   \r
+                                20240   TTYLEV: PUSHJ P,FINOUT\r
+                                20250           CALL [SIXBIT /DDTRL/]\r
+                                20260           POPJ P,\r
+                                20270   \r
+                                20280   TEXIN=TIN       ;USE NORMAL INPUT FOR TEXT WHEN IN USER MODE\r
+                                20290   >\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 50\r
+        OP DECODER\r
+\r
+\r
+        002744' 301402  002747' 20320   BDISP:  POINT 12,DISP(R),11\r
+        002745' 141402  002747' 20330           POINT 12,DISP(R),23\r
+        002746' 001402  002747' 20340           POINT 12,DISP(R),35\r
+\r
+        002747'                 20360   DISP:   \r
+                                20370   DEFINE D (Z1,Z2,Z3)<XLIST\r
+                                                                        20380           EXP <Z1-DDT>*1B11+<Z2-DDT>*1B23+Z3-DDT\r
+                                                                        20390           LIST>\r
+\r
+                                20410   IFE EDDT&1&<EDDT>B36,<  PUNCH=ERR\r
+                                20420           BLKEND=ERR\r
+                                20430           LOADER=ERR\r
+                                20440           VERIFY=ERR\r
+                                20450           CORE=ERR>\r
+\r
+\r
+\r
+                                20490   D ERR,ERR,ERR^XLIST\r
+                                20500   D ERR,ERR,ERR^XLIST\r
+                                20510   D ERR,ERR,VARRW^XLIST\r
+                                20520   D TAB,LINEF,ERR^XLIST\r
+                                20530   D ERR,CARR,ERR^XLIST\r
+                                20540   D ERR,ERR,ERR^XLIST\r
+                                20550   D PUNCH,ERR,ERR^XLIST\r
+                                20560   D ERR,ERR,ERR^XLIST\r
+                                20570   D ERR,ERR,ERR^XLIST\r
+                                20580   D CONTROL,ERR,ERR^XLIST\r
+                                20590   D ERR,ERR,SPACE^XLIST\r
+                                20600   D SUPTYO,TEXI,ASSEM^XLIST\r
+                                20610   D DOLLAR,PERC,ERR^XLIST\r
+                                20620   D DIVD,LPRN,RPRN^XLIST\r
+                                20630   D MULT,PLUS,ACCF^XLIST\r
+                                20640   D MINUS,PERIOD,SLASH^XLIST\r
+                                20650   D NUM,NUM,NUM^XLIST\r
+                                20660   D NUM,NUM,NUM^XLIST\r
+                                20670   D NUM,NUM,NUM^XLIST\r
+                                20680   D NUM,TAG,SEMIC^XLIST\r
+                                20690   D FIRARG,EQUAL,ULIM^XLIST\r
+                                20700   D QUESTN,INDIRECT,ABSA^XLIST\r
+                                20710   D BPS,CON,SYMD^XLIST\r
+                                20720   D EFFEC,SFLOT,GO^XLIST\r
+                                20730   D HWRDS,PILOC,BLKEND^XLIST\r
+                                20740   D KILL,LOADER,MASK^XLIST\r
+                                20750   D NWORD,BITO,PROCEDE^XLIST\r
+                                20760   D QUAN,RELA,SYMBOL^XLIST\r
+                                20770   D TEXO,ERR,VERIFY^XLIST\r
+                                20780   D WORD,XEC,CORE^XLIST\r
+                                20790   D ZERO,OCON,ICON^XLIST\r
+                                20800   D OSYM,VARRW,PSYM^XLIST\r
+\r
+                                20820   REPEAT 11,<D ERR,ERR,ERR>\r
+                                        D ERR,ERR,ERR^XLIST\r
+                                        D ERR,ERR,ERR^XLIST\r
+                                        D ERR,ERR,ERR^XLIST\r
+                                        D ERR,ERR,ERR^XLIST\r
+                                        D ERR,ERR,ERR^XLIST\r
+                                        D ERR,ERR,ERR^XLIST\r
+                                        D ERR,ERR,ERR^XLIST\r
+                                        D ERR,ERR,ERR^XLIST\r
+                                        D ERR,ERR,ERR^XLIST\r
+                                20840   D ERR,ERR,ERR^XLIST\r
+                                20850   D ERR,WRONG,DDT^XLIST\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 51\r
+        OP DECODER\r
+\r
+\r
+        003022' 200120  002230' 20880   IFIX:   MOVE R,@SYMP            ;DIDDLE SYMBOL TABLE POINTERS\r
+        003023' 552100  002213' 20890           HRRZM R,ESTU\r
+        003024' 554260  002230' 20900           HLRZ T,@SYMP\r
+        003025' 274260  002230' 20910           SUB T,@SYMP\r
+        003026' 271240  000116  20920           ADDI T,NSYMS\r
+        003027' 213000  000005  20930           MOVNS T\r
+        003030' 542240  002200' 20940           HRRM T, KILC\r
+        003031' 200240  002200' 20950           MOVE T, KILC\r
+        003032' 202240  002212' 20960           MOVEM T, PRGM\r
+        003033' 254000  000000' 20970           JRST DDT\r
+\r
+        003034' 201100  003051' 20990   BITO:   MOVEI   R,BITT  ;BYTE OUTPUT SUBROUTINE\r
+        003035' 551440  002003' 21000           HRRZI   AR,TOC\r
+        003036' 626000  000001  21010           TRZN    F,Q2F\r
+        003037' 254000  000123' 21020           JRST    ERR\r
+        003040' 200240  002202' 21030           MOVE    T,WRD2\r
+        003041' 202240  003074' 21040           MOVEM   T,SVBTS\r
+        003042' 201240  000044  21050           MOVEI   T,^D36\r
+        003043' 230240  002202' 21060           IDIV    T,WRD2\r
+        003044' 332000  000006  21070           SKIPE   T+1\r
+        003045' 271240  000001  21080           ADDI    T,1\r
+        003046' 202240  003075' 21090           MOVEM   T,SVBTS2\r
+        003047' 550400  000002  21100           HRRZ    SCH,R\r
+        003050' 254000  001011' 21110           JRST    BASE1\r
+        003051' 200240  003075' 21120   BITT:   MOVE    T,SVBTS2\r
+        003052' 202240  003077' 21130           MOVEM   T,SVBT2\r
+        003053' 200300  002206' 21140           MOVE    T+1,LWT\r
+        003054' 202300  003076' 21150           MOVEM   T+1,SVBT3\r
+        003055' 201240  000000  21160   BITT2:  MOVEI   T,0\r
+        003056' 200340  003074' 21170           MOVE    T+2,SVBTS\r
+        003057' 246247  000000  21180           LSHC    T,(T+2)\r
+        003060' 202240  002206' 21190           MOVEM   T,LWT\r
+        003061' 202300  003076' 21200           MOVEM   T+1,SVBT3\r
+        003062' 302440  001545' 21210           CAIE    AR,PADSO\r
+        003063' 260040  002003' 21220           PUSHJ   P,FTOC\r
+        003064' 302440  002003' 21230           CAIE    AR,TOC\r
+        003065' 260040  001467' 21240           PUSHJ   P,PIN\r
+        003066' 377000  003077' 21250           SOSG    SVBT2\r
+        003067' 263040  000000  21260           POPJ    P,\r
+        003070' 201240  000054  21270           MOVEI   T,","\r
+        003071' 260040  002676' 21280           PUSHJ   P,TOUT\r
+        003072' 200300  003076' 21290           MOVE    T+1,SVBT3\r
+        003073' 254000  003055' 21300           JRST    BITT2\r
+        003074' 000000  000000  21310   SVBTS:  0\r
+        003075' 000000  000000  21320   SVBTS2: 0\r
+        003076' 000000  000000  21330   SVBT3:  0\r
+        003077' 000000  000000  21340   SVBT2:  0\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 52\r
+        OP DECODER\r
+\r
+\r
+                                21370   ;DESCRIPTION OF OP DECODER FOR DDT:\r
+                                21380   ;\r
+                                21390   ;         THE ENTIRE INSTRUCTION SET FOR THE PDP-6 CAN BE COMPACTED INTO\r
+                                21400   ;A SPACE MUCH SMALLER THAN ONE REGISTER FOR EVERY SYMBOL.  THIS OCCURS\r
+                                21410   ;BECAUSE OF THE MACHINE ORGANIZATION AND INSTRUCTION MNEMONICS CHOSEN\r
+                                21420   ;FOR THE PDP-6.  FOR EXAMPLE, IF BITS (0-2) OF AN INSTRUCTION EQUAL\r
+                                21430   ;101(2) THE INSTRUCTION IS A HALF WORD INSTRUCTION AND AN "H" MAY\r
+                                21440   ;BE ASSUMED. "T" MAY BE ASSUMED FOR ALL TEST INSTRUCTIONS (WHICH\r
+                                21450   ;BEGIN WITH 110(2).\r
+                                21460   ;\r
+                                21470   ;       THE TABLE TBL IN DDT CONSISTS OF 9 BIT BYTES, 4 TO A WORD.\r
+                                21480   ;THE NUMBERS IN THE BYTES HAVE THE FOLLOWING SIGNIFICANCE:\r
+                                21490   ;0-37(8):       THIS IS A DISPATCH COMMAND FOR THE OP-DECODER INTERPRETER.\r
+                                21500   ;       LET THE RIGHT MOST TWO BITS EQUAL N; LET THE NEXT 3 BITS\r
+                                21510   ;       EQUAL P.\r
+                                21520   ;\r
+                                21530   ;       THE CONTENTS OF INST (INSTRUCTION) CONTAIN IN THE RIGHT\r
+                                21540   ;       MOST NINE BITS THE BINARY FOR THE MACHINE INSTRUCTION.\r
+                                21550   ;       P AND N REFER TO THE CONTENTS OF INST, AND THE OP DECODER\r
+                                21560   ;       WILL PRODUCE AN ANSWER D GIVEN P, N, AND THE CONTENTS\r
+                                21570   ;       OF INSTX N+1 GIVES THE NUMBER OF BITS IN INST; P GIVES THE\r
+                                21580   ;       POSITION (FROM THE RIGHT EDGE) OF THE N+1 BITS.\r
+                                21590   ;\r
+                                21600   ;       EXAMPLE: P = 6\r
+                                21610   ;                N = 2\r
+                                21620   ;\r
+                                21630   ;;      C(INST) = .010 101 100(2)\r
+                                21640   ;\r
+                                21650   ;       THE RESULT- D = 010(2) = 2(8)\r
+                                21660   ;\r
+                                21670   ;       D IS USED AS A DISPATCH ON THE NEXT BYTES IN THE TABLE.\r
+                                21680   ;       IF D = 5, 5 BYTES IN THE TABLE (DON'T COUNT THE BYTES WHICH\r
+                                21690   ;       PRINT TEXT, 41-72(8)) ARE SKIPPED OVER AND THE 6TH BYTE RESUMES\r
+                                21700   ;       THE INTERPRETATION.\r
+                                21710   ;\r
+                                21720   ;40(8)  THIS IS A STOP CODE; WHEN THIS IS REACHED INTERPRETATION\r
+                                21730   ;       IS FINISHED.\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 53\r
+        OP DECODER\r
+\r
+\r
+                                21760   ;41(8)-72(8)      THE ALPHABET IS ENCODED INTO THIS RANGE.\r
+                                21770   ;               41- A\r
+                                21780   ;               42- B\r
+                                21790   ;               72- Z\r
+                                21800   ;               WHEN A BYTE IN THIS RANGE IS REACHED, ITS CORRESPONDING\r
+                                21810   ;               LETTER IS TYPED.\r
+                                21820   ;\r
+                                21830   ;73(8)-777(8)     THIS IS A TRANSFER BYTE.  IF THE BYTE IN THIS RANGE IS\r
+                                21840   ;               CONSIDERED TO BE A, TRANSFER INTERPRETATION TO THE A-73(8)RD\r
+                                21850   ;               BYTE IN THE TABLE.\r
+                                21860   ;\r
+                                21870   ;MAROS ASSEMBLE THE TABLE TBL:\r
+                                21880   ; 1.   A NUMBER FOLLOWED BY ^ ASSEMBLES A DISPATCH BYTE.  THE FIRST\r
+                                21890   ;      DIGIT IS THE POSITION; THE SECOND DIGIT IS THE SIZE.\r
+                                21900   ; 2.   A POINT (.) ASSEMBLES A STOP CODE.\r
+                                21910   ; 3.   A NAME FOLLOWED BY A SLASH ASSEMBLES A TRANSFER TO THE\r
+                                21920   ;      SYMBOLICALLY NAMED BYTE.\r
+                                21930   ; 4.   A STRING OF LETTERS TERMINATED BY A SPACE, COMMA, OR POINT,\r
+                                21940   ;      ASSEMBLE INTO A STRING OF BYTES, EACH BYTE BEING ONE LETTER.\r
+                                21950   ;\r
+                                21960   ;EXAMPLE OF BINARY TO SYMBOLIC DECODING:\r
+                                21970   ;      THE MACHINE CODE FOR JRST IAS 254\r
+                                21980   ;          INST    0  1  0  1  0  1  1  0  0\r
+                                21990   ;      THE INTERPRETER STARTS WITH THE FIRST BYTE IN THE TABLE (63^).\r
+                                22000   ;      THE RESULT OF APPLYING THIS TO C(INST) GIVES 2.  SKIPPING OVER\r
+                                22010   ;      2 BYTES IN THE TABLE AND INTERPRETING THE THIRD RESULTS IN\r
+                                22020   ;      HAK/ BEING INTERPRETED.  AT HAK:, THERE IS A 33^.  APPLYING\r
+                                22030   ;      THIS TO C(INST) RESULTS IN 5 NON PRINTING BYTES BEING SKIPPED\r
+                                22040   ;      OVER:\r
+                                22050   ;          1.  MV/\r
+                                22060   ;               MOV      PRINTING TEXT\r
+                                22070   ;          2.  MO/\r
+                                22080   ;          3.  ML/\r
+                                22090   ;          4.  DV/\r
+                                22100   ;          5.  SH/\r
+                                22110   ;\r
+                                22120   ;H1/ IS THE NEXT BYTE INTERPRETER.  AT H1: 03^ IS FOUND SO\r
+                                22130   ;4 BYTES ARE SKIPPED OVER:\r
+                                22140   ;              EXC      PRINTING TEXT\r
+                                22150   ;          1.  S3/\r
+                                22160   ;              BL       PRINTING TEXT\r
+                                22170   ;              T        PRINTING TEXT\r
+                                22180   ;          2.  .\r
+                                22190   ;          3.  AO/\r
+                                22200   ;          4.  AOB/\r
+                                22210   ;          THE NEXT LETTERS JRS ARE TYPED OUT.  THEN T/ IS FOUND.  AT\r
+                                22220   ;T; A T IS TYPED OUT; THEN A "." IS FOUND AND EVERYTHING STOPS.\r
+                                22230   ;\r
+                                22240   ;          THE TABLE IS ALSO USED GOING FROM SYMBOLIC TO BINARY BUT A\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 59\r
+        OP DECODER\r
+\r
+                                22310   REPEAT 0,<\r
+                                22320   \r
+                                22330   DEFINE REDEF (XX)<\r
+                                22340   DEFINE INFO (AA,BB)<\r
+                                22350   AA XX'BB>>\r
+                                22360   \r
+                                22370   \r
+                                22380   DEFINE BYT9 (L)<\r
+                                22390   XLIST\r
+                                22400   REDEF %\r
+                                22410    ZZ=0\r
+                                22420    ZZZ=0\r
+                                22430    ZZM=1\r
+                                22440   \r
+                                22450    IRPC L,<\r
+                                22460           Z="L"\r
+                                22470           IFE Z-":",<INFO <>,<=CLOC>\r
+                                22480                   IFNDEF FIR.,<FIR.=CLOC>\r
+                                22490                   IFGE CLOC+73-1000-FIR.,<PRINTX OPTABLE TOO LONG>\r
+                                22500                   Z=0>\r
+                                22510           IFE Z-"/",<IF1 <OUTP 1>\r
+                                22520                   IF2,<INFO OUTP,+73-FIR.>\r
+                                22530                   Z=0>\r
+                                22540    IFE Z-"^",<OUTP <ZZ&70/2+ZZ&7-1>\r
+                                22550           Z=0>\r
+                                22560    IFE <Z-",">*<Z-".">*<Z-40>,<IFN ZZZ,<\r
+                                22570                                   REPEAT 5,<ZZ=ZZZ&77\r
+                                22580                                           IFN ZZ,<OUTP ZZ>\r
+                                22590                                           ZZZ=ZZZ/100>>\r
+                                22600                                   IFE Z-".",<OUTP 40>\r
+                                22610                                   Z=0>\r
+                                22620    IFN Z,<INFO REDEF,L\r
+                                22630           ZZ=ZZ*10+Z&7\r
+                                22640           ZZZ=ZZZ+<Z-40>*ZZM\r
+                                22650           ZZM=ZZM*100>\r
+                                22660    IFE Z,<REDEF %\r
+                                22670           ZZ=0\r
+                                22680           ZZZ=0\r
+                                22690           ZZM=1>>\r
+                                22700   LIST>\r
+                                22710   \r
+                                22720   DEFINE OUTP (A)<\r
+                                22730           BINRY=BINRY*400+BINRY*400+A\r
+                                22740           BINC=BINC-1\r
+                                22750           IFE BINC,<EXP BINRY\r
+                                22760                   BINRY=0\r
+                                22770                   BINC=4>\r
+                                22780           CLOC=CLOC+1>\r
+                                22790   \r
+                                22800   \r
+                                22810   \r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 60\r
+        OP DECODER\r
+\r
+                                22820   \r
+                                22830   TBL:            ;OPDECODER BYTE TABLE\r
+                                22840   \r
+                                22850   BINRY=0\r
+                                22860   CLOC=0          ;SET BYTE LOCATION COUNTER TO 0\r
+                                22870   BINC=4          ;INIT BYTES/WORD COUNTER\r
+                                22880   \r
+                                22890   BYT9 <63^UUO/FLO/HAK/ACCP/BOOLE/H HWT/T ACBM/>\r
+                                22900   \r
+                                22910   ;IO INSTRUCTIONS\r
+                                22920   BYT9 <21^BD/CON,11^OI/S,01^Z/O/>\r
+                                22930   BYT9 <BD:01^BLK,IO/DATA,IO:11^I/O/OI:01^O/I/>\r
+                                22940   \r
+                                22950   ;UUOS\r
+                                22960   BYT9 <UUO:51^.,32^U40/U50/U60/21^U703/11^USET/01^>\r
+                                22970   BYT9 <LOOKU,P/ENTE,R/USET:USET,01^I/O/>\r
+                                22980   BYT9 <U40:03^U47/INI T/.....,U47:CALL,01^.,I/>\r
+                                22990   BYT9 <U60:21^U603/01^IN,BPUT/OUT,BPUT:11^BU,F:F.,PU,T/>\r
+                                23000   BYT9 <U603:01^U6062/STAT,11^O:O.,Z:Z.,U6062:11^S,U62/G,U62:ETST,S/>\r
+                                23010   ;BYTE AND FLOATING INSTRUCTIONS\r
+                                23020   \r
+                                23030   BYT9 <FLO:51^BYTE/F 32^ AD A/SB A/MP A/DV A:>\r
+                                23040   BYT9 <21^LMB/R,IMB/LMB:02^.,L:L.,M:M.,B:B.,BYTE:32^...,03^UF,PA/DF,N/>\r
+                                23050   BYT9 <FS C/IB P:P.,I LD/LD:LD B/I DP/DP:DP B/>\r
+                                23060   \r
+                                23070   ;FWT,FIXED POINT ARITH,MISC.\r
+                                23080   \r
+                                23090   BYT9 <HAK:33^MV/MV:MOV MO/ML/DV/SH/H1/JP/>\r
+                                23100   BYT9 <21^ADD IMB/SU BIMB:B IMB:02^.,I:I.,M/B/MO:22^>\r
+                                23110   BYT9 <EIMS:E IMS/S IMS/N IMS/M IMS:02^.,I/M/S:S.,>\r
+                                23120   BYT9 <ML:21^I ML1/ML1:MUL IMB/DV:21^I DV1/DV1:>\r
+                                23130   BYT9 <DI DV2:V IMB/H1:03^EXC S3/BL T:T.,AO/AO:AOBJ,>\r
+                                23140   BYT9 <AOB/JRS T/JFC L/XC T/CON S/AOB:01^P/N/>\r
+                                23150   BYT9 <JP:03^PU/PU:PUSH PUS/PO/PO:POP POP/JS,R:R.,>\r
+                                23160   BYT9 <JS P/JS PA:A.,JR PA/PUS:01^J:J..,POP:>\r
+                                23170   BYT9 <01^.,J/SH:02^A S2/ROT S1/L S2:S S3:H S1/.,S1:21^.,C:C.,>\r
+                                23180   \r
+                                23190   ;ARITH COMP,SKIP,JUMP\r
+                                23200   \r
+                                23210   BYT9 <ACCP:42^CA CA1/SJ/A JS/S JS:O 31^>\r
+                                23220   BYT9 <J COMP/S COMP/CA1:31^I COMP/M COMP/>\r
+                                23230   BYT9 <SJ:31^JUM PSJ/SKI PSJ:P COMP:>\r
+                                23240   BYT9 <03^.,L/E:E.,L E/PA/G E/N:N.,G.,>\r
+                                23250   \r
+                                23260   \r
+                                23270   ;HALF WORDS\r
+                                23280   \r
+                                23290   BYT9 <HWT:51^HW1/21^R HW2/L HW2:R HW3/HW1:>\r
+                                23300   BYT9 <21^L HW4/R HW4:L HW3:32^IMS/Z IMS/O IMS/EIMS/>\r
+                                23310   \r
+                                23320   ;TEST INSTRUCTIONS\r
+                                23330   \r
+                                23340   BYT9 <ACBM:31^AC1/01^D AC2/S AC2/AC1:01^R AC2/L,>\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 60-1\r
+        OP DECODER\r
+\r
+                                23350   BYT9 <AC2:42^N EAN/Z EAN/C EAN/O EAN:12^.,E/PA/N/>\r
+                                23360   \r
+                                23370   \r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 61\r
+        OP DECODER\r
+\r
+                                23380   \r
+                                23390   ;BOOLEAN\r
+                                23400   \r
+                                23410   BYT9 <BOOLE:24^ST/AN:AND B2/AN/ST/AN/ST/>\r
+                                23420   BYT9 <X OR:OR B2/I OR/AN/EQ DV2/ST/OR/ST/OR/OR/>\r
+                                23430   BYT9 <ST:SET B2:24^Z IMB/IMB/CA:C TA/TM:M IMB/>\r
+                                23440   BYT9 <CM:C TM/TA:A IMB/IMB/IMB/CB:C BIMB/IMB/CA/>\r
+                                23450   BYT9 <CA/CM/CM/CB/O IMB/>\r
+                                23460   \r
+                                23470   ;MORE UUO'S\r
+                                23480   BYT9 <U50:03^OPE,N/....,RENAM,E/I,N/OU,T/>\r
+                                23490   BYT9 <U703:02^CLOS,E/RELEA,S/MTAP,E/UGET,F/>\r
+                                23500   \r
+                                23510   REPEAT BINC,<BINRY=BINRY*400+BINRY*400>\r
+                                23520   IFN BINRY,<EXP BINRY>>\r
+\r
+\r
+\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 62\r
+        OP DECODER\r
+\r
+                                23570   SUBTTL  OP DECODER\r
+\r
+                                23590   IF1,\r
+                                23600   <\r
+                                23610   \r
+                                23620   DEFINE  .COLON  (A) <\r
+                                23630   %'A==   CLOC\r
+                                23640   FIR.==  CLOC\r
+                                23650   DEFINE  .COLON  (AA) <\r
+                                23660   %'AA==  CLOC\r
+                                23670   IFGE    CLOC+73-1000-FIR., <PRINTX OPTABLE TOO LONG>>>\r
+                                23680   \r
+                                23690   DEFINE  .SLASH  <\r
+                                23700   CLOC=   CLOC+1 ;>\r
+                                23710   \r
+                                23720   SYN     .SLASH, .ARROW\r
+                                23730   \r
+                                23740   DEFINE  .COMMA  (A) <\r
+                                23750   IFNB    <A>,    <.REP5 A>>\r
+                                23760   \r
+                                23770   SYN     .COMMA, .SPACE\r
+                                23780   \r
+                                23790   DEFINE  .POINT  (A) <\r
+                                23800   IFNB    <A>,    <.REP5 A>\r
+                                23810   CLOC=   CLOC+1>\r
+                                23820   \r
+                                23830   DEFINE  .REP5   (A) <\r
+                                23840   IRPC    A, <CLOC==CLOC+1>>\r
+                                23850   \r
+                                23860   >\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 63\r
+        OP DECODER\r
+\r
+                                23880   IF2, \r
+                                23890   <\r
+\r
+                                23910   DEFINE  .SLASH  (A) <\r
+                                23920   OUTP    %'A+73-FIR.>\r
+\r
+                                23940   DEFINE  .ARROW  (A) <\r
+                                23950   OUTP    A&70/2+A&7-1>\r
+\r
+                                23970   DEFINE  .COMMA  (A) <\r
+                                23980   IFNB    <A>,    <.REP5 A>>\r
+\r
+                                24000   SYN     .COMMA, .SPACE\r
+\r
+                                24020   DEFINE  .POINT  (A) <\r
+                                24030   IFNB    <A>,    <.REP5 A>\r
+                                24040   OUTP    40>\r
+\r
+                                24060   DEFINE  .REP5   (A) <\r
+                                24070   IRPC    A, <OUTP "A"-40>>\r
+\r
+                                24090   DEFINE OUTP (A)<\r
+                                24100   BINRY== BINRY+<A>_<BINC==BINC-9>\r
+                                24110   IFE BINC, <\r
+                                24120                   +BINRY\r
+                                                                        24130   BINRY==0\r
+                                                                        24140   BINC==^D36>\r
+                                24150   CLOC==CLOC+1>\r
+\r
+                                24170   >\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 64\r
+        OP DECODER\r
+\r
+        003100'                 24190   TBL:            ;OPDECODER BYTE TABLE\r
+\r
+                        000000  24210   BINRY== 0\r
+                        000000  24220   CLOC==  0       ;SET BYTE LOCATION COUNTER TO 0\r
+                        000044  24230   BINC==  ^D36    ;INIT BYTES/WORD COUNTER\r
+\r
+                                24250   .ARROW  63^\r
+                                24260   .SLASH  UUO^\r
+                                24270   .SLASH  FLO^\r
+                                24280   .SLASH  HAK^\r
+        003100' 032112  236325                          +BINRY\r
+                                24290   .SLASH  ACCP^\r
+                                24300   .SLASH  BOOLE^\r
+                                24310   .SPACE  H^\r
+                                24320   .SLASH  HWT^\r
+        003101' 534662  050606                          +BINRY\r
+                                24330   .SPACE  T^\r
+                                24340   .SLASH  ACBM^\r
+\r
+\r
+                                24370   ;IO INSTRUCTIONS\r
+\r
+                                24390   .ARROW  21^\r
+                                24400   .SLASH  BD^\r
+        003102' 064632  010073                          +BINRY\r
+                                24410   .COMMA  CON^\r
+                                24420   .ARROW  11^\r
+        003103' 043057  056004                          +BINRY\r
+                                24430   .SLASH  OI^\r
+                                24440   .COMMA  S^\r
+                                24450   .ARROW  01^\r
+                                24460   .SLASH  Z^\r
+        003104' 107063  000223                          +BINRY\r
+                                24470   .SLASH  O^\r
+\r
+                                24490   .COLON  BD^\r
+                                24500   .ARROW  01^\r
+                                24510   .COMMA  BLK^\r
+        003105' 221000  042054                          +BINRY\r
+                                24520   .SLASH  IO^\r
+                                24530   .COMMA  DATA^\r
+        003106' 053104  044041                          +BINRY\r
+                                24540   .COLON  IO^\r
+                                24550   .ARROW  11^\r
+                                24560   .SLASH  I^\r
+        003107' 064041  004352                          +BINRY\r
+                                24570   .SLASH  O^\r
+                                24580   .COLON  OI^\r
+                                24590   .ARROW  01^\r
+                                24600   .SLASH  O^\r
+                                24610   .SLASH  I^\r
+        003110' 221000  221352                          +BINRY\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 65\r
+        OP DECODER\r
+\r
+                                24630   ;UUOS\r
+\r
+                                24650   .COLON  UUO^\r
+                                24660   .ARROW  51^\r
+                                24670   .POINT  ^\r
+                                24680   .COMMA  ^\r
+                                24690   .ARROW  32^\r
+                                24700   .SLASH  U40^\r
+        003111' 024040  015147                          +BINRY\r
+                                24710   .SLASH  U50^\r
+                                24720   .SLASH  U60^\r
+                                24730   .ARROW  21^\r
+                                24740   .SLASH  U703^\r
+        003112' 746171  010772                          +BINRY\r
+                                24750   .ARROW  11^\r
+                                24760   .SLASH  USET^\r
+                                24770   .ARROW  01^\r
+\r
+                                24790   .COMMA  LOOKU^\r
+        003113' 004140  000054                          +BINRY\r
+        003114' 057057  053065                          +BINRY\r
+                                24800   .SLASH  P^\r
+                                24810   .COMMA  ENTE^\r
+        003115' 311045  056064                          +BINRY\r
+                                24820   .SLASH  R^\r
+                                24830   .COLON  USET^\r
+                                24840   .COMMA  USET^\r
+        003116' 045471  065063                          +BINRY\r
+                                24850   .ARROW  01^\r
+                                24860   .SLASH  I^\r
+        003117' 045064  000352                          +BINRY\r
+                                24870   .SLASH  O^\r
+\r
+                                24890   .COLON  U40^\r
+                                24900   .ARROW  03^\r
+                                24910   .SLASH  U47^\r
+                                24920   .SPACE  INI^\r
+        003120' 221002  162051                          +BINRY\r
+                                24930   .SLASH  T^\r
+                                24940   .POINT  ^\r
+        003121' 056051  421040                          +BINRY\r
+                                24950   .POINT  ^\r
+                                24960   .POINT  ^\r
+                                24970   .POINT  ^\r
+                                24980   .POINT  ^\r
+        003122' 040040  040040                          +BINRY\r
+                                24990   .COMMA  ^\r
+                                25000   .COLON  U47^\r
+                                25010   .COMMA  CALL^\r
+        003123' 043041  054054                          +BINRY\r
+                                25020   .ARROW  01^\r
+                                25030   .POINT  ^\r
+                                25040   .COMMA  ^\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 65-1\r
+        OP DECODER\r
+\r
+                                25050   .SLASH  I^\r
+\r
+                                25070   .COLON  U60^\r
+                                25080   .ARROW  21^\r
+        003124' 000040  352010                          +BINRY\r
+                                25090   .SLASH  U603^\r
+                                25100   .ARROW  01^\r
+                                25110   .COMMA  IN^\r
+        003125' 212000  051056                          +BINRY\r
+                                25120   .SLASH  BPUT^\r
+                                25130   .COMMA  OUT^\r
+        003126' 202057  065064                          +BINRY\r
+                                25140   .COLON  BPUT^\r
+                                25150   .ARROW  11^\r
+                                25160   .COMMA  BU^\r
+                                25170   .COLON  F^\r
+                                25180   .POINT  F^\r
+        003127' 004042  065046                          +BINRY\r
+                                25190   .COMMA  ^\r
+                                25200   .COMMA  PU^\r
+                                25210   .SLASH  T^\r
+        003130' 040060  065421                          +BINRY\r
+\r
+                                25230   .COLON  U603^\r
+                                25240   .ARROW  01^\r
+                                25250   .SLASH  U6062^\r
+                                25260   .COMMA  STAT^\r
+        003131' 000225  063064                          +BINRY\r
+                                25270   .ARROW  11^\r
+                                25280   .COLON  O^\r
+                                25290   .POINT  O^\r
+        003132' 041064  004057                          +BINRY\r
+                                25300   .COMMA  ^\r
+                                25310   .COLON  Z^\r
+                                25320   .POINT  Z^\r
+                                25330   .COMMA  ^\r
+                                25340   .COLON  U6062^\r
+                                25350   .ARROW  11^\r
+        003133' 040072  040004                          +BINRY\r
+                                25360   .COMMA  S^\r
+                                25370   .SLASH  U62^\r
+                                25380   .COMMA  G^\r
+                                25390   .COLON  U62^\r
+                                25400   .COMMA  ETST^\r
+        003134' 063231  047045                          +BINRY\r
+                                25410   .SLASH  S^\r
+        003135' 064063  064372                          +BINRY\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 66\r
+        OP DECODER\r
+\r
+                                25430   ;BYTE AND FLOATING INSTRUCTIONS\r
+\r
+                                25450   .COLON  FLO^\r
+                                25460   .ARROW  51^\r
+                                25470   .SLASH  BYTE^\r
+                                25480   .SPACE  F^\r
+                                25490   .ARROW  32^\r
+        003136' 024271  046015                          +BINRY\r
+                                25500   .SPACE  ^\r
+                                25510   .SPACE  AD^\r
+                                25520   .SLASH  A^\r
+                                25530   .SPACE  SB^\r
+        003137' 041044  255063                          +BINRY\r
+                                25540   .SLASH  A^\r
+                                25550   .SPACE  MP^\r
+        003140' 042255  055060                          +BINRY\r
+                                25560   .SLASH  A^\r
+                                25570   .SPACE  DV^\r
+                                25580   .COLON  A^\r
+                                25590   .ARROW  21^\r
+        003141' 255044  066010                          +BINRY\r
+                                25600   .SLASH  LMB^\r
+                                25610   .COMMA  R^\r
+                                25620   .SLASH  IMB^\r
+                                25630   .COLON  LMB^\r
+                                25640   .ARROW  02^\r
+        003142' 261062  350001                          +BINRY\r
+                                25650   .POINT  ^\r
+                                25660   .COMMA  ^\r
+                                25670   .COLON  L^\r
+                                25680   .POINT  L^\r
+                                25690   .COMMA  ^\r
+                                25700   .COLON  M^\r
+                                25710   .POINT  M^\r
+        003143' 040054  040055                          +BINRY\r
+                                25720   .COMMA  ^\r
+                                25730   .COLON  B^\r
+                                25740   .POINT  B^\r
+                                25750   .COMMA  ^\r
+                                25760   .COLON  BYTE^\r
+                                25770   .ARROW  32^\r
+        003144' 040042  040015                          +BINRY\r
+                                25780   .POINT  ^\r
+                                25790   .POINT  ^\r
+                                25800   .POINT  ^\r
+                                25810   .COMMA  ^\r
+                                25820   .ARROW  03^\r
+        003145' 040040  040002                          +BINRY\r
+                                25830   .COMMA  UF^\r
+                                25840   .SLASH  PA^\r
+                                25850   .COMMA  DF^\r
+        003146' 065046  500044                          +BINRY\r
+                                25860   .SLASH  N^\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 66-1\r
+        OP DECODER\r
+\r
+\r
+                                25880   .SPACE  FS^\r
+        003147' 046602  046063                          +BINRY\r
+                                25890   .SLASH  C^\r
+                                25900   .SPACE  IB^\r
+                                25910   .COLON  P^\r
+                                25920   .POINT  P^\r
+        003150' 532051  042060                          +BINRY\r
+                                25930   .COMMA  ^\r
+                                25940   .SPACE  I^\r
+                                25950   .SLASH  LD^\r
+                                25960   .COLON  LD^\r
+                                25970   .SPACE  LD^\r
+        003151' 040051  315054                          +BINRY\r
+                                25980   .SLASH  B^\r
+                                25990   .SPACE  I^\r
+                                26000   .SLASH  DP^\r
+        003152' 044267  051322                          +BINRY\r
+                                26010   .COLON  DP^\r
+                                26020   .SPACE  DP^\r
+                                26030   .SLASH  B^\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 67\r
+        OP DECODER\r
+\r
+                                26050   ;FWT,FIXED POINT ARITH,MISC\r
+\r
+                                26070   .COLON  HAK^\r
+                                26080   .ARROW  33^\r
+        003153' 044060  267016                          +BINRY\r
+                                26090   .SLASH  MV^\r
+                                26100   .COLON  MV^\r
+                                26110   .SPACE  MOV^\r
+        003154' 327055  057066                          +BINRY\r
+                                26120   .SLASH  MO^\r
+                                26130   .SLASH  ML^\r
+                                26140   .SLASH  DV^\r
+                                26150   .SLASH  SH^\r
+        003155' 356374  403514                          +BINRY\r
+                                26160   .SLASH  H1^\r
+                                26170   .SLASH  JP^\r
+\r
+                                26190   .ARROW  21^\r
+                                26200   .SPACE  ADD^\r
+        003156' 412453  010041                          +BINRY\r
+                                26210   .SLASH  IMB^\r
+                                26220   .SPACE  SU^\r
+        003157' 044044  350063                          +BINRY\r
+                                26230   .COLON  BIMB^\r
+                                26240   .SPACE  B^\r
+                                26250   .COLON  IMB^\r
+                                26260   .ARROW  02^\r
+                                26270   .POINT  ^\r
+        003160' 065042  001040                          +BINRY\r
+                                26280   .COMMA  ^\r
+                                26290   .COLON  I^\r
+                                26300   .POINT  I^\r
+                                26310   .COMMA  ^\r
+                                26320   .SLASH  M^\r
+                                26330   .SLASH  B^\r
+        003161' 051040  265267                          +BINRY\r
+                                26340   .COLON  MO^\r
+                                26350   .ARROW  22^\r
+\r
+                                26370   .COLON  EIMS^\r
+                                26380   .SPACE  E^\r
+                                26390   .SLASH  IMS^\r
+                                26400   .SPACE  S^\r
+        003162' 011045  366063                          +BINRY\r
+                                26410   .SLASH  IMS^\r
+                                26420   .SPACE  N^\r
+                                26430   .SLASH  IMS^\r
+                                26440   .SPACE  M^\r
+        003163' 366056  366055                          +BINRY\r
+                                26450   .COLON  IMS^\r
+                                26460   .ARROW  02^\r
+                                26470   .POINT  ^\r
+                                26480   .COMMA  ^\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 67-1\r
+        OP DECODER\r
+\r
+                                26490   .SLASH  I^\r
+                                26500   .SLASH  M^\r
+        003164' 001040  352265                          +BINRY\r
+                                26510   .COLON  S^\r
+                                26520   .POINT  S^\r
+                                26530   .COMMA  ^\r
+\r
+                                26550   .COLON  ML^\r
+                                26560   .ARROW  21^\r
+                                26570   .SPACE  I^\r
+        003165' 063040  010051                          +BINRY\r
+                                26580   .SLASH  ML1^\r
+                                26590   .COLON  ML1^\r
+                                26600   .SPACE  MUL^\r
+        003166' 377055  065054                          +BINRY\r
+                                26610   .SLASH  IMB^\r
+                                26620   .COLON  DV^\r
+                                26630   .ARROW  21^\r
+                                26640   .SPACE  I^\r
+                                26650   .SLASH  DV1^\r
+        003167' 350010  051406                          +BINRY\r
+                                26660   .COLON  DV1^\r
+                                26670   .SPACE  DI^\r
+                                26680   .COLON  DV2^\r
+                                26690   .SPACE  V^\r
+                                26700   .SLASH  IMB^\r
+        003170' 044051  066350                          +BINRY\r
+                                26710   .COLON  H1^\r
+                                26720   .ARROW  03^\r
+                                26730   .SPACE  EXC^\r
+        003171' 002045  070043                          +BINRY\r
+                                26740   .SLASH  S3^\r
+                                26750   .SPACE  BL^\r
+                                26760   .COLON  T^\r
+                                26770   .POINT  T^\r
+        003172' 525042  054064                          +BINRY\r
+                                26780   .COMMA  ^\r
+                                26790   .SLASH  AO^\r
+                                26800   .COLON  AO^\r
+                                26810   .COMMA  AOBJ^\r
+        003173' 040424  041057                          +BINRY\r
+                                26820   .SLASH  AOB^\r
+                                26830   .SPACE  JRS^\r
+        003174' 042052  450052                          +BINRY\r
+                                26840   .SLASH  T^\r
+                                26850   .SPACE  JFC^\r
+        003175' 062063  421052                          +BINRY\r
+                                26860   .SLASH  L^\r
+                                26870   .SPACE  XC^\r
+        003176' 046043  263070                          +BINRY\r
+                                26880   .SLASH  T^\r
+                                26890   .SPACE  CON^\r
+        003177' 043421  043057                          +BINRY\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 67-2\r
+        OP DECODER\r
+\r
+                                26900   .SLASH  S^\r
+                                26910   .COLON  AOB^\r
+                                26920   .ARROW  01^\r
+                                26930   .SLASH  P^\r
+        003200' 056372  000311                          +BINRY\r
+                                26940   .SLASH  N^\r
+\r
+                                26960   .COLON  JP^\r
+                                26970   .ARROW  03^\r
+                                26980   .SLASH  PU^\r
+                                26990   .COLON  PU^\r
+                                27000   .SPACE  PUSH^\r
+        003201' 602002  455060                          +BINRY\r
+                                27010   .SLASH  PUS^\r
+        003202' 065063  050505                          +BINRY\r
+                                27020   .SLASH  PO^\r
+                                27030   .COLON  PO^\r
+                                27040   .SPACE  POP^\r
+        003203' 463060  057060                          +BINRY\r
+                                27050   .SLASH  POP^\r
+                                27060   .COMMA  JS^\r
+                                27070   .COLON  R^\r
+                                27080   .POINT  R^\r
+        003204' 511052  063062                          +BINRY\r
+                                27090   .COMMA  ^\r
+\r
+                                27110   .SPACE  JS^\r
+                                27120   .SLASH  P^\r
+        003205' 040052  063311                          +BINRY\r
+                                27130   .SPACE  JS^\r
+                                27140   .COLON  PA^\r
+                                27150   .POINT  A^\r
+        003206' 052063  041040                          +BINRY\r
+                                27160   .COMMA  ^\r
+                                27170   .SPACE  JR^\r
+                                27180   .SLASH  PA^\r
+                                27190   .COLON  PUS^\r
+                                27200   .ARROW  01^\r
+        003207' 052062  500000                          +BINRY\r
+                                27210   .COLON  J^\r
+                                27220   .POINT  J^\r
+                                27230   .POINT  ^\r
+                                27240   .COMMA  ^\r
+                                27250   .COLON  POP^\r
+                                27260   .ARROW  01^\r
+        003210' 052040  040000                          +BINRY\r
+                                27270   .POINT  ^\r
+                                27280   .COMMA  ^\r
+                                27290   .SLASH  J^\r
+                                27300   .COLON  SH^\r
+                                27310   .ARROW  02^\r
+                                27320   .SPACE  A^\r
+        003211' 040506  001041                          +BINRY\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 67-3\r
+        OP DECODER\r
+\r
+                                27330   .SLASH  S2^\r
+                                27340   .SPACE  ROT^\r
+        003212' 524062  057064                          +BINRY\r
+                                27350   .SLASH  S1^\r
+                                27360   .SPACE  L^\r
+                                27370   .COLON  S2^\r
+                                27380   .SPACE  S^\r
+                                27390   .COLON  S3^\r
+                                27400   .SPACE  H^\r
+        003213' 530054  063050                          +BINRY\r
+                                27410   .SLASH  S1^\r
+                                27420   .POINT  ^\r
+                                27430   .COMMA  ^\r
+                                27440   .COLON  S1^\r
+                                27450   .ARROW  21^\r
+                                27460   .POINT  ^\r
+        003214' 530040  010040                          +BINRY\r
+                                27470   .COMMA  ^\r
+                                27480   .COLON  C^\r
+                                27490   .POINT  C^\r
+                                27500   .COMMA  ^\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 68\r
+        OP DECODER\r
+\r
+                                27520   ;ARITH COMP,SKIP,JUMP\r
+\r
+                                27540   .COLON  ACCP^\r
+                                27550   .ARROW  42^\r
+                                27560   .SPACE  CA^\r
+        003215' 043040  021043                          +BINRY\r
+                                27570   .SLASH  CA1^\r
+                                27580   .SLASH  SJ^\r
+                                27590   .SPACE  A^\r
+        003216' 041552  557041                          +BINRY\r
+                                27600   .SLASH  JS^\r
+                                27610   .SPACE  S^\r
+                                27620   .COLON  JS^\r
+                                27630   .SPACE  O^\r
+                                27640   .ARROW  31^\r
+        003217' 544063  057014                          +BINRY\r
+\r
+                                27660   .SPACE  J^\r
+                                27670   .SLASH  COMP^\r
+                                27680   .SPACE  S^\r
+                                27690   .SLASH  COMP^\r
+        003220' 052570  063570                          +BINRY\r
+                                27700   .COLON  CA1^\r
+                                27710   .ARROW  31^\r
+                                27720   .SPACE  I^\r
+                                27730   .SLASH  COMP^\r
+                                27740   .SPACE  M^\r
+        003221' 014051  570055                          +BINRY\r
+                                27750   .SLASH  COMP^\r
+\r
+                                27770   .COLON  SJ^\r
+                                27780   .ARROW  31^\r
+                                27790   .SPACE  JUM^\r
+        003222' 570014  052065                          +BINRY\r
+                                27800   .SLASH  PSJ^\r
+                                27810   .SPACE  SKI^\r
+        003223' 055567  063053                          +BINRY\r
+                                27820   .COLON  PSJ^\r
+                                27830   .SPACE  P^\r
+                                27840   .COLON  COMP^\r
+                                27850   .ARROW  03^\r
+                                27860   .POINT  ^\r
+        003224' 051060  002040                          +BINRY\r
+                                27870   .COMMA  ^\r
+                                27880   .SLASH  L^\r
+                                27890   .COLON  E^\r
+                                27900   .POINT  E^\r
+                                27910   .COMMA  ^\r
+                                27920   .SPACE  L^\r
+        003225' 263045  040054                          +BINRY\r
+                                27930   .SLASH  E^\r
+                                27940   .SLASH  PA^\r
+                                27950   .SPACE  G^\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 68-1\r
+        OP DECODER\r
+\r
+                                27960   .SLASH  E^\r
+        003226' 573500  047573                          +BINRY\r
+                                27970   .COLON  N^\r
+                                27980   .POINT  N^\r
+                                27990   .COMMA  ^\r
+                                28000   .POINT  G^\r
+        003227' 056040  047040                          +BINRY\r
+                                28010   .COMMA  ^\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 69\r
+        OP DECODER\r
+\r
+                                28030   ;HALF WORDS\r
+\r
+                                28050   .COLON  HWT^\r
+                                28060   .ARROW  51^\r
+                                28070   .SLASH  HW1^\r
+                                28080   .ARROW  21^\r
+                                28090   .SPACE  R^\r
+        003230' 024616  010062                          +BINRY\r
+                                28100   .SLASH  HW2^\r
+                                28110   .SPACE  L^\r
+                                28120   .COLON  HW2^\r
+                                28130   .SPACE  R^\r
+                                28140   .SLASH  HW3^\r
+        003231' 614054  062623                          +BINRY\r
+                                28150   .COLON  HW1^\r
+                                28160   .ARROW  21^\r
+                                28170   .SPACE  L^\r
+                                28180   .SLASH  HW4^\r
+                                28190   .SPACE  R^\r
+        003232' 010054  622062                          +BINRY\r
+                                28200   .COLON  HW4^\r
+                                28210   .SPACE  L^\r
+                                28220   .COLON  HW3^\r
+                                28230   .ARROW  32^\r
+                                28240   .SLASH  IMS^\r
+                                28250   .SPACE  Z^\r
+        003233' 054015  366072                          +BINRY\r
+                                28260   .SLASH  IMS^\r
+                                28270   .SPACE  O^\r
+                                28280   .SLASH  IMS^\r
+                                28290   .SLASH  EIMS^\r
+        003234' 366057  366357                          +BINRY\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 70\r
+        OP DECODER\r
+\r
+                                28310   ;TEST INSTRUCTIONS\r
+\r
+                                28330   .COLON  ACBM^\r
+                                28340   .ARROW  31^\r
+                                28350   .SLASH  AC1^\r
+                                28360   .ARROW  01^\r
+                                28370   .SPACE  D^\r
+        003235' 014641  000044                          +BINRY\r
+                                28380   .SLASH  AC2^\r
+                                28390   .SPACE  S^\r
+                                28400   .SLASH  AC2^\r
+                                28410   .COLON  AC1^\r
+                                28420   .ARROW  01^\r
+        003236' 645063  645000                          +BINRY\r
+                                28430   .SPACE  R^\r
+                                28440   .SLASH  AC2^\r
+                                28450   .COMMA  L^\r
+                                28460   .COLON  AC2^\r
+                                28470   .ARROW  42^\r
+        003237' 062645  054021                          +BINRY\r
+                                28480   .SPACE  N^\r
+                                28490   .SLASH  EAN^\r
+                                28500   .SPACE  Z^\r
+                                28510   .SLASH  EAN^\r
+        003240' 056655  072655                          +BINRY\r
+                                28520   .SPACE  C^\r
+                                28530   .SLASH  EAN^\r
+                                28540   .SPACE  O^\r
+                                28550   .COLON  EAN^\r
+                                28560   .ARROW  12^\r
+        003241' 043655  057005                          +BINRY\r
+                                28570   .POINT  ^\r
+                                28580   .COMMA  ^\r
+                                28590   .SLASH  E^\r
+                                28600   .SLASH  PA^\r
+                                28610   .SLASH  N^\r
+        003242' 040573  500602                          +BINRY\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 71\r
+        OP DECODER\r
+\r
+                                28630   ;BOOLEAN\r
+\r
+                                28650   .COLON  BOOLE^\r
+                                28660   .ARROW  24^\r
+                                28670   .SLASH  ST^\r
+                                28680   .COLON  AN^\r
+                                28690   .SPACE  AND^\r
+        003243' 013713  041056                          +BINRY\r
+                                28700   .SLASH  B2^\r
+                                28710   .SLASH  AN^\r
+                                28720   .SLASH  ST^\r
+        003244' 044716  664713                          +BINRY\r
+                                28730   .SLASH  AN^\r
+                                28740   .SLASH  ST^\r
+\r
+                                28760   .SPACE  X^\r
+                                28770   .COLON  OR^\r
+                                28780   .SPACE  OR^\r
+        003245' 664713  070057                          +BINRY\r
+                                28790   .SLASH  B2^\r
+                                28800   .SPACE  I^\r
+                                28810   .SLASH  OR^\r
+        003246' 062716  051675                          +BINRY\r
+                                28820   .SLASH  AN^\r
+                                28830   .SPACE  EQ^\r
+                                28840   .SLASH  DV2^\r
+        003247' 664045  061410                          +BINRY\r
+                                28850   .SLASH  ST^\r
+                                28860   .SLASH  OR^\r
+                                28870   .SLASH  ST^\r
+                                28880   .SLASH  OR^\r
+        003250' 713675  713675                          +BINRY\r
+                                28890   .SLASH  OR^\r
+\r
+                                28910   .COLON  ST^\r
+                                28920   .SPACE  SET^\r
+        003251' 675063  045064                          +BINRY\r
+                                28930   .COLON  B2^\r
+                                28940   .ARROW  24^\r
+                                28950   .SPACE  Z^\r
+                                28960   .SLASH  IMB^\r
+                                28970   .SLASH  IMB^\r
+        003252' 013072  350350                          +BINRY\r
+                                28980   .COLON  CA^\r
+                                28990   .SPACE  C^\r
+                                29000   .SLASH  TA^\r
+                                29010   .COLON  TM^\r
+                                29020   .SPACE  M^\r
+                                29030   .SLASH  IMB^\r
+        003253' 043730  055350                          +BINRY\r
+\r
+                                29050   .COLON  CM^\r
+                                29060   .SPACE  C^\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 71-1\r
+        OP DECODER\r
+\r
+                                29070   .SLASH  TM^\r
+                                29080   .COLON  TA^\r
+                                29090   .SPACE  A^\r
+                                29100   .SLASH  IMB^\r
+        003254' 043724  041350                          +BINRY\r
+                                29110   .SLASH  IMB^\r
+                                29120   .SLASH  IMB^\r
+                                29130   .COLON  CB^\r
+                                29140   .SPACE  C^\r
+                                29150   .SLASH  BIMB^\r
+        003255' 350350  043347                          +BINRY\r
+                                29160   .SLASH  IMB^\r
+                                29170   .SLASH  CA^\r
+\r
+                                29190   .SLASH  CA^\r
+                                29200   .SLASH  CM^\r
+        003256' 350722  722726                          +BINRY\r
+                                29210   .SLASH  CM^\r
+                                29220   .SLASH  CB^\r
+                                29230   .SPACE  O^\r
+                                29240   .SLASH  IMB^\r
+        003257' 726734  057350                          +BINRY\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 72\r
+        OP DECODER\r
+\r
+                                29260   ;MORE UUO'S\r
+\r
+                                29280   .COLON  U50^\r
+                                29290   .ARROW  03^\r
+                                29300   .COMMA  OPE^\r
+        003260' 002057  060045                          +BINRY\r
+                                29310   .SLASH  N^\r
+                                29320   .POINT  ^\r
+                                29330   .POINT  ^\r
+                                29340   .POINT  ^\r
+        003261' 602040  040040                          +BINRY\r
+                                29350   .POINT  ^\r
+                                29360   .COMMA  ^\r
+                                29370   .COMMA  RENAM^\r
+        003262' 040062  045056                          +BINRY\r
+                                29380   .SLASH  E^\r
+                                29390   .COMMA  I^\r
+        003263' 041055  573051                          +BINRY\r
+                                29400   .SLASH  N^\r
+                                29410   .COMMA  OU^\r
+                                29420   .SLASH  T^\r
+        003264' 602057  065421                          +BINRY\r
+\r
+                                29440   .COLON  U703^\r
+                                29450   .ARROW  02^\r
+                                29460   .COMMA  CLOS^\r
+        003265' 001043  054057                          +BINRY\r
+                                29470   .SLASH  E^\r
+                                29480   .COMMA  RELEA^\r
+        003266' 063573  062045                          +BINRY\r
+                                29490   .SLASH  S^\r
+        003267' 054045  041372                          +BINRY\r
+                                29500   .COMMA  MTAP^\r
+        003270' 055064  041060                          +BINRY\r
+                                29510   .SLASH  E^\r
+                                29520   .COMMA  UGET^\r
+        003271' 573065  047045                          +BINRY\r
+                                29530   .SLASH  F^\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 73\r
+        OP DECODER\r
+\r
+                                29550   IF1,\r
+                                29560   <\r
+                                29570           BLOCK   <CLOC+3>/4\r
+                                29580   >\r
+\r
+                                29600   IF2,\r
+                                29610   <\r
+                                29620   IFN     BINC-^D36,\r
+                                29630   <\r
+        003272' 064205  000000  29640                   +BINRY\r
+                                29650   >\r
+                                29660   >\r
+\r
+\r
+\r
+                                29700   IFNDEF CLOC.,<CLOC.=CLOC>\r
+                                29710   IFN CLOC.-CLOC,<PRINTX PHASE ERROR IN OPTABLE>\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 74\r
+        OP DECODER\r
+\r
+\r
+        003273' 000000  003274' 29740   PNTR:   EXP INST        ;POINTER TO BITS IN INST\r
+        003274' 000000  000000  29750   INST:   0               ;BINARY FOR INSTRUCTION\r
+        003275' 000000  000000  29760   CHP:    0               ;CHAR POINTER INTO TXT, TXT+1\r
+        003276'                 29770   TXT:    BLOCK 2         ;STORE INPUT TEXT FOR OPEVAL\r
+        003300' 000000  000000  29780   SAVPDL: 0               ;SAVE PUSH DOWN LIST POINTER\r
+\r
+        003301' 441100  003100' 29800   BTAB:   POINT 9,TBL     ;TABLE USED TO GET NEXT BYTE POINTER\r
+        003302' 331100  003100' 29810           POINT 9,TBL,8   ;FOR TRANSFER BYTE\r
+        003303' 221100  003100' 29820           POINT 9,TBL,17\r
+        003304' 111100  003100' 29830           POINT 9,TBL,26\r
+\r
+        003305' 200240  003312' 29850   OPEVAL: MOVE T,OPEV1            ;EVALUATE FOR AN OP CODE\r
+        003306' 201300  002222' 29860           MOVEI W1,SYM\r
+        003307' 200100  003467' 29870           MOVE R,[POINT 7,TXT]\r
+        003310' 260040  002031' 29880           PUSHJ P,SPT4\r
+        003311' 201240  000000  29890           MOVEI T,0\r
+        003312' 136240  000002  29900   OPEV1:  IDPB T,R\r
+        003313' 202040  003300' 29910           MOVEM P,SAVPDL\r
+        003314' 624000  000004  29920           TRZA F,OUTF\r
+        003315' 660000  000004  29930   OPTYPE: TRO F,OUTF              ;TYPE AN OPCODE SYMBOLICALLY\r
+        003316' 242240  777745  29940           LSH T,-33\r
+        003317' 202240  003274' 29950           MOVEM T,INST            ;GET OPCODE INTO RIGHT 9 BITS\r
+        003320' 200240  003467' 29960           MOVE T,[XWD 440700,TXT]\r
+        003321' 202240  003275' 29970           MOVEM T,CHP             ;FOR OPEVAL,SETUP POINTER TO INPUT TEXT\r
+        003322' 620000  000002  29980   DEC:    TRZ F,ITF               ;CLEAR INSTRUCTION TYPED FLAG\r
+        003323' 403100  000006  29990           CLEARB R,W1\r
+        003324' 200340  003301' 30000           MOVE W2,BTAB\r
+        003325' 134240  000007  30010   DC1:    ILDB T,W2               ;GET NEXT BYTE IN TBL\r
+        003326' 303240  000040  30020           CAILE T,40\r
+        003327' 301240  000073  30030           CAIL T,73\r
+        003330' 365100  003325' 30040           SOJGE R,DC1             ;SKIP OVER # BYTES = C(R)\r
+        003331' 327100  003325' 30050           JUMPG R,DC1             ;SKIP OVER ALPHA TEXT WITHOUT COUNTING\r
+        003332' 275240  000040  30060           SUBI T,40\r
+        003333' 322240  003362' 30070           JUMPE T,DECX            ;TRANSFER ON ASTOP CODE\r
+        003334' 327240  003345' 30080           JUMPG T,DC2\r
+        003335' 137240  003470' 30090           DPB T,[XWD 340500,PNTR] ;SETUP R ON A DISPATCH BYTE\r
+        003336' 620240  777774  30100           TRZ T,-4\r
+        003337' 350000  000005  30110           AOS T\r
+        003340' 137240  003471' 30120           DPB T,[XWD 300600,PNTR]\r
+        003341' 606000  000004  30130           TRNN F,OUTF\r
+        003342' 254000  003401' 30140           JRST DC6                ;FOR OPEVAL ONLY\r
+        003343' 135100  003273' 30150           LDB R,PNTR              ;GET # BYTES TO SKIP OVER\r
+        003344' 254000  003325' 30160           JRST DC1\r
+\r
+        003345' 571245  777745  30180   DC2:    HRREI T,-33(T)\r
+        003346' 321240  003354' 30190           JUMPL T,DECT            ;TYPE OUT A LETTER\r
+        003347' 201305  000025  30200           MOVEI W1,FIR.(T)                ;BYTE IS A TRANSFER\r
+        003350' 231300  000004  30210           IDIVI W1,4\r
+        003351' 200347  003301' 30220           MOVE W2,BTAB(W2)        ;CALCULATE POINTER TO NEXT BYTE\r
+        003352' 271346  000000  30230           ADDI W2,(W1)\r
+        003353' 254000  003325' 30240           JRST DC1\r
+\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 75\r
+        OP DECODER\r
+\r
+\r
+        003354' 602000  000004  30280   DECT:   TRNE F,OUTF\r
+        003355' 254000  003425' 30290           JRST DC8        ;TYPE OUT A LETTER\r
+        003356' 134300  003275' 30300           ILDB W1,CHP     ;GET NEXT INPUT LETTER\r
+        003357' 302305  000133  30310           CAIE W1,133(T)  ;COMPARE WITH ASSUMED NEXT LETTER\r
+        003360' 254000  003366' 30320           JRST NOMAT      ;DOESNT MATCH\r
+        003361' 254000  003325' 30330           JRST DC1        ;MATCHES, TRY NEXT\r
+\r
+        003362' 602000  000004  30350   DECX:   TRNE F,OUTF     ;STOP (CODE 40) HAS BEEN SEEN\r
+        003363' 263040  000000  30360           POPJ P,         ;IF FOR OUTPUT, RETURN\r
+        003364' 134300  003275' 30370           ILDB W1,CHP     ;GET NEXT INPUT CHAR IF ANY\r
+        003365' 322300  003415' 30380           JUMPE W1,DC7    ;DOES # OF CHARS MATCH\r
+        003366' 262040  000002  30390   NOMAT:  POP P,R         ;NO, BACK UP AND TRY SOME MORE\r
+        003367' 262040  000007  30400           POP P,W2\r
+        003370' 262040  003273' 30410           POP P,PNTR\r
+        003371' 262040  003275' 30420           POP P,CHP\r
+        003372' 350000  000002  30430   NOMAT1: AOS R           ;ASSUME NEXT NUMBER FOR BIN VALUE\r
+        003373' 137100  003273' 30440           DPB R,PNTR      ;STUFF INTO ANSWER\r
+        003374' 135100  003273' 30450           LDB R,PNTR\r
+        003375' 326100  003403' 30460           JUMPN R,DC6AA   ;IF =0, BYTE WAS TOO BIG\r
+        003376' 312040  003300' 30470           CAME P,SAVPDL\r
+        003377' 254000  003366' 30480           JRST NOMAT      ;NOT AT TOP LEVEL\r
+        003400' 254000  000125' 30490           JRST UNDEF      ;UNDEFINED, FINALLY\r
+\r
+        003401' 201100  000000  30510   DC6:    MOVEI R,0       ;ASSUME 0 FOR INITIAL BINARY VALUE\r
+        003402' 137100  003273' 30520           DPB R,PNTR\r
+        003403' 316040  003300' 30530   DC6AA:  CAMN P,SAVPDL\r
+        003404' 254000  003410' 30540           JRST DC6BB\r
+        003405' 135241  777776  30550           LDB T,-2(P)     ;OLD VALUE OF PNTR\r
+        003406' 312241  000000  30560           CAME T,(P)\r
+        003407' 254000  003372' 30570           JRST NOMAT1\r
+        003410' 261040  003275' 30580   DC6BB:  PUSH P,CHP\r
+        003411' 261040  003273' 30590           PUSH P,PNTR\r
+        003412' 261040  000007  30600           PUSH P,W2\r
+        003413' 261040  000002  30610           PUSH P,R\r
+        003414' 254000  003325' 30620           JRST DC1\r
+\r
+        003415' 200040  003300' 30640   DC7:    MOVE P,SAVPDL           ;RESTORE PUSH DOWN POINTER\r
+        003416' 200240  003274' 30650           MOVE T,INST\r
+        003417' 242240  000033  30660           LSH T,33                ;PUSH BINARY INTO POSITION FOR OPEVAL\r
+        003420' 135100  003472' 30670           LDB R,[POINT 3,T,8]\r
+        003421' 641240  700000  30680           TLC T,700000\r
+        003422' 647240  700000  30690           TLCN T,700000\r
+        003423' 137100  003473' 30700           DPB R,[POINT 10,T,12]   ;ONLY DONE FOR IO INSTRUCTIONS\r
+        003424' 254000  000062' 30710           JRST L4\r
+\r
+        003425' 660000  000002  30730   DC8:    TRO F,ITF               ;SET INSTRUCTION TYPED FLAG\r
+        003426' 201245  000133  30740           MOVEI T,133(T)\r
+        003427' 260040  002676' 30750           PUSHJ P,TOUT            ;OUTPUT A LETTER\r
+        003430' 402000  002223' 30760           CLEARM SPSAV            ;SO $D WONT TRY TO DELETE OP CODES\r
+        003431' 254000  003325' 30770           JRST DC1\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 76\r
+        OP DECODER\r
+\r
+        003432'                 30790   LIT\r
+        003432' 002307' 000010\r
+        003433' 773767  002423\r
+        003434' 770767  000200\r
+        003435' 542613  000000\r
+        003436' 000002  000002\r
+        003437' 000000  000000\r
+        003440' 420202  000000\r
+        003441' 000044  000000\r
+        003442' 410300  002201'\r
+        003443' 331100  001241'\r
+        003444' 002700  001241'\r
+        003445' 270400  001241'\r
+        003446' 270400  002652'\r
+        003447' 264000  001041'\r
+        003450' 264000  001066'\r
+        003451' 002236' 002237'\r
+        003452' 777000  000000\r
+        003453' 270400  002206'\r
+        003454' 331100  002206'\r
+        003455' 220400  002206'\r
+        003456' 777777  400000\r
+        003457' 270300  000005\r
+        003460' 330600  000005\r
+        003461' 220400  000005\r
+        003462' 004006  000000\r
+        003463' 777740  000000\r
+        003464' 344300  002401'\r
+        003465' 254200  000000'\r
+        003466' 000011  111111\r
+        003467' 440700  003276'\r
+        003470' 340500  003273'\r
+        003471' 300600  003273'\r
+        003472' 330300  000005\r
+        003473' 271200  000005\r
+\r
+\r
+        003500'                 30820   IFN EDDT&1&<EDDT>B36,<BUFF:     BLOCK 40>\r
+\r
+        003540'                 30840   PS:     BLOCK LPDL\r
+\r
+                        003610' 30860   DDTEND=.\r
+\r
+                                30880   END\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 003610\r
+\r
+10K CORE USED\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 77\r
+        SYMBOL TABLE\r
+\r
+%ACBM           001126  \r
+A               000002  \r
+AA              000010  \r
+ABSA            001002' \r
+AC0             002267' \r
+AC17            002306' \r
+ACCF            000613' \r
+ADR             000016  \r
+AR              000011  \r
+ARM             002310' \r
+ASSEM           000573' \r
+AUTOP           001361' \r
+AUTOPI          002266' \r
+B               000003  \r
+B1ADR           002236' \r
+B1CNT           002240' \r
+B1INS           001043' \r
+B1SKP           002237' \r
+BASE1           001011' \r
+BASECH          001005' \r
+BCOM            001071' \r
+BCOM2           001105' \r
+BCOM3           001103' \r
+BDISP           002744' \r
+BEG             000001  \r
+BINC            000022  SPD\r
+BINRY   064205  000000  SPD\r
+BITO            003034' \r
+BITT            003051' \r
+BITT2           003055' \r
+BLK1            002547' \r
+BLK2            002557' \r
+BLK3            002565' \r
+BLKEND          002425' \r
+BLOCK           002540' \r
+BLOCKS          002537' \r
+BNADR           002263' \r
+BP1             001041' \r
+BPLUP           001245' \r
+BPLUP1          001246' \r
+BPN             001066' \r
+BPS             001317' \r
+BPS1            001327' \r
+BPS2            001333' \r
+BPS3            001345' \r
+BPS4            001346' \r
+BPS5            001356' \r
+BREAK           001123' \r
+BREAK1          001147' \r
+BTAB            003301' \r
+BUFF            003500' \r
+C               000004  \r
+CARR            000700' \r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 77-1\r
+        SYMBOL TABLE\r
+\r
+CCF             010000  \r
+CDR     011400  000000  INT\r
+CF              000040  \r
+CF1             000400  \r
+CHP             003275' \r
+CJTOUT          002016' \r
+CKSM            000017  \r
+CLOC            000752  SPD\r
+CLOC.           000752  \r
+CON             000774' \r
+CONS1           001464' \r
+CONSM           001463' \r
+CONSYM          001462' \r
+CONTRO          000344' \r
+CORE            002457' \r
+CORE1           002461' \r
+CORE2           002470' \r
+CPOPJ           000374' \r
+CPOPJ1          000373' \r
+CPUSHP          002652' \r
+CR      015000  000000  INT\r
+CRF             002657' \r
+CRN             002655' \r
+CTF             000400  \r
+DC      020000  000000  INT\r
+DC1             003325' \r
+DC2             003345' \r
+DC6             003401' \r
+DC6AA           003403' \r
+DC6BB           003410' \r
+DC7             003415' \r
+DC8             003425' \r
+DCSA    030000  000000  INT\r
+DCSB    030400  000000  INT\r
+DD1             000007' \r
+DD1.5           000011' \r
+DD2             000013' \r
+DDT             000000' ENT\r
+DDTEND          003610' INT\r
+DDTX            000000' ENT\r
+DEC             003322' \r
+DECT            003354' \r
+DECX            003362' \r
+DEF1            000515' \r
+DEF2            000525' \r
+DEF3            000533' \r
+DEF4            000553' \r
+DEFIN           000507' \r
+DEFV            002224' \r
+DELI            200000  \r
+DELO            400000  \r
+DEN             002211' \r
+DEP             001376' \r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 77-2\r
+        SYMBOL TABLE\r
+\r
+DEP1            001402' \r
+DEPR            001372' \r
+DEPRA           000725' \r
+DEPRA2          000732' \r
+DEPRS           001371' \r
+DF      027000  000000  INT\r
+DIS     013000  000000  INT\r
+DISP            002747' \r
+DIVD            000571' \r
+DLS     024000  000000  INT\r
+DOLLAR          000346' \r
+DSK     017000  000000  INT\r
+DTC     021000  000000  INT\r
+DTS     021400  000000  INT\r
+DVF             040000  \r
+EDDT            000003  \r
+EFFEC           001622' \r
+EFFEC0          001677' \r
+EFFEC1          001702' \r
+EFFEC2          001707' \r
+EFFEC3          001716' \r
+EQUAL           000740' \r
+ERR             000123' \r
+ESTU            002213' \r
+ESTUT           002214' \r
+EVAL            000351' \r
+EVAL0           000352' \r
+EVAL1           000356' \r
+EVAL2           000357' \r
+EVAL3           000362' \r
+F               000000  \r
+FAF             001000  \r
+FCP             002163' \r
+FEED            002450' \r
+FEED1           002455' \r
+FEF             400000  \r
+FETCH           001404' \r
+FH              002221' \r
+FIR.            000025  SPD\r
+FIRARG          001410' \r
+FP1             002073' \r
+FP1A            002100' \r
+FP3             002101' \r
+FP3A            002112' \r
+FP4             002120' \r
+FP4A            002122' \r
+FP4B            002127' \r
+FP7             002135' \r
+FP7A            002140' \r
+FP7A1           002143' \r
+FP7B            002144' \r
+FPF             020000  \r
+FPWR            002217' \r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 77-3\r
+        SYMBOL TABLE\r
+\r
+FRACT           002216' \r
+FRASE           002204' \r
+FRASE1          002210' \r
+FSGN            002166' \r
+FSV             002215' \r
+FT              002154' \r
+FT0             002163' \r
+FT01            002162' \r
+FT8             002150' \r
+FTERM           002220' \r
+FTOC            002003' \r
+GETW            002532' \r
+GETW1           002534' \r
+GLOBAL          040000  \r
+GO              001020' \r
+HALT    254200  000000  INT\r
+HLFW            001536' \r
+HWRDS           000771' \r
+ICON            000713' \r
+IFIX            003022' \r
+IJSA            001255' \r
+IJSP            001270' \r
+IJSR            001261' \r
+IJSR2           001263' \r
+IJSR3           001266' \r
+INDIRE          000607' \r
+INOUT           001572' \r
+INSRT1          001275' \r
+INSRT3          001303' \r
+INSRTB          001274' \r
+INST            003274' \r
+IPUSHJ          001251' \r
+ITF             000002  \r
+IXCT            001205' \r
+IXCT4           001203' \r
+IXCT5           001211' \r
+IXCT6           001240' \r
+JEN     254500  000000  INT\r
+JOBREL          000037  \r
+JOBSYM          000036  \r
+JOV     255400  000000  INT\r
+KILC            002200' \r
+KILL            000435' \r
+KILL1           000462' \r
+KILL2           000464' \r
+KILLA           000446' \r
+KILRET          000445' \r
+L1              000026' \r
+L1RPR           000030' \r
+L2              000035' \r
+L21             000050' \r
+L211            000055' \r
+L4              000062' \r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 77-4\r
+        SYMBOL TABLE\r
+\r
+L5              000116' \r
+LCT             002662' \r
+LE1             000217' \r
+LE1A            000235' \r
+LE2             000236' \r
+LEAV            001241' \r
+LEAV1           001122' \r
+LET             000221' \r
+LET1            000234' \r
+LF              002660' \r
+LF1             002000  \r
+LI0             000652' \r
+LI1             000654' \r
+LI2             000663' \r
+LINEF           000651' \r
+LIS             000015' \r
+LIS0            000020' \r
+LIS1            000022' \r
+LIS2            000023' \r
+LISTEN          002714' \r
+LLOC            002226' \r
+LLOCO           002227' \r
+LOAD1           002417' \r
+LOAD2           002423' \r
+LOADB           002575' \r
+LOADE           002614' \r
+LOADER          002412' \r
+LOCAL           100000  \r
+LOOK            001420' \r
+LOOK1           001427' \r
+LOOK2           001447' \r
+LOOK3           001452' \r
+LOW     777777  777661' \r
+LPDL            000050  \r
+LPRN            000577' \r
+LPT     012400  000000  INT\r
+LTF             000020  \r
+LWT             002206' \r
+MASK            001612' \r
+MASK1           001620' \r
+MASK2           001615' \r
+MF              000002  \r
+MINUS           000574' \r
+MLF             000200  \r
+MSK             002235' \r
+MTC     022000  000000  INT\r
+MTM     023000  000000  INT\r
+MTS     022400  000000  INT\r
+MULT            000570' \r
+NAF             000200  \r
+NBP             000010  \r
+NM1             000251' \r
+NM1A            000255' \r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 77-5\r
+        SYMBOL TABLE\r
+\r
+NM1A1           000257' \r
+NM1B            000264' \r
+NOMAT           003366' \r
+NOMAT1          003372' \r
+NSYMS           000116  \r
+NUM             000204' \r
+NUM1            000244' \r
+NWORD           001625' \r
+OCON            000702' \r
+ODF             000012  \r
+ODFM            002311' \r
+OPEV1           003312' \r
+OPEVAL          003305' \r
+OPTYPE          003315' \r
+OSYM            000703' \r
+OUTF            000004  \r
+P               000001  \r
+PAD             001543' \r
+PAD1            001562' \r
+PADS1           001547' \r
+PADS1A          001560' \r
+PADS2           001561' \r
+PADS3           001563' \r
+PADS3A          001564' \r
+PADS3B          001567' \r
+PADS4           001570' \r
+PADSO           001545' \r
+PBLK            002351' \r
+PBLK1           002354' \r
+PERC            000220' \r
+PERIOD          000313' \r
+PI      000400  000000  INT\r
+PI3             001504' \r
+PI3A            001507' \r
+PI3B            001510' \r
+PI4             001511' \r
+PI5             001515' \r
+PI7             001523' \r
+PI7.1           001531' \r
+PI8             001534' \r
+PID             000000  \r
+PILOC           000337' \r
+PIN             001467' \r
+PLT     014000  000000  INT\r
+PLUS            000575' \r
+PNAME           740000  \r
+PNTR            003273' \r
+POW2            000306' \r
+POWER           000271' \r
+POWF            004000  \r
+PRGM            002212' \r
+PRNC            002203' \r
+PROC0           001167' \r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 77-6\r
+        SYMBOL TABLE\r
+\r
+PROC1           001175' \r
+PROC2           001200' \r
+PROCD1          001165' \r
+PROCED          001160' \r
+PRS             000004  \r
+PS              003540' \r
+PSR             002315' \r
+PSYM            000741' \r
+PTF             000100  \r
+PTP     010000  000000  INT\r
+PTPP            000100  \r
+PTR     010400  000000  INT\r
+PTRR            000104  \r
+PUN1            002333' \r
+PUN2            002327' \r
+PUNCH           002324' \r
+PUNZ            002365' \r
+PUNZ0           002364' \r
+PUNZ2           002375' \r
+PUNZ4           002401' \r
+PWRD            002440' \r
+PWRD2           002441' \r
+Q2F             000001  \r
+QF              000001  \r
+QUAN            000336' \r
+QUAN1           000340' \r
+QUAN2           000341' \r
+QUEST1          000170' \r
+QUEST2          000173' \r
+QUEST3          000176' \r
+QUEST4          000202' \r
+QUESTN          000166' \r
+R               000002  \r
+R50PNT          000745' \r
+RD              000003  \r
+RELA            000777' \r
+REMOV1          001310' \r
+REMOV3          001313' \r
+REMOVB          001307' \r
+REMUN           000470' \r
+RES1            002646' \r
+RESTOR          002637' \r
+RESTR1          002640' \r
+RET             000134' \r
+ROF             000010  \r
+RPRN            000627' \r
+RPRN1           000646' \r
+RUNEND          002530' \r
+S               000003  \r
+SAF             002000  \r
+SARS            002312' \r
+SAV1            002622' \r
+SAV5            002631' \r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 77-7\r
+        SYMBOL TABLE\r
+\r
+SAVE            002615' \r
+SAVPDL          003300' \r
+SAVPI           002231' \r
+SAVTTY          002233' \r
+SBF             000020  \r
+SCH             000010  \r
+SCHM            002307' \r
+SEAR1           001642' \r
+SEAR2           001650' \r
+SEAR2A          001651' \r
+SEAR3           001655' \r
+SEAR4           001675' \r
+SEARC           001627' \r
+SEMIC           001016' \r
+SET1            000556' \r
+SET2            000557' \r
+SETNAM          000555' \r
+SETUP           001722' \r
+SETUP1          001723' \r
+SETUP2          001725' \r
+SF              000004  \r
+SFLOT           000772' \r
+SIXBI1          000421' \r
+SIXBI2          000431' \r
+SIXBIN          000422' \r
+SIXBP           000753' \r
+SIXBP1          000755' \r
+SLAS1           000711' \r
+SLASH           000706' \r
+SLL             010000  \r
+SPAC1           000625' \r
+SPACE           000623' \r
+SPSAV           002223' \r
+SPT             002030' \r
+SPT0            002027' \r
+SPT1            002033' \r
+SPT2            002037' \r
+SPT3            002047' \r
+SPT4            002031' \r
+SPTX            002050' \r
+STARTA          002234' \r
+STF             004000  \r
+SUPTYO          000705' \r
+SVBT2           003077' \r
+SVBT3           003076' \r
+SVBTS           003074' \r
+SVBTS2          003075' \r
+SYL             002205' \r
+SYM             002222' \r
+SYMBOL          000773' \r
+SYMD            002052' \r
+SYMP            002230' \r
+T               000005  \r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 77-8\r
+        SYMBOL TABLE\r
+\r
+TAB             000717' \r
+TAG             000477' \r
+TBL             003100' \r
+TBL1            000011  \r
+TBL2            000014  \r
+TDC     032000  000000  INT\r
+TDS     032400  000000  INT\r
+TEM             002313' \r
+TEM1            002314' \r
+TEM2            002207' \r
+TEM3            002210' \r
+TEXI            000375' \r
+TEXI2           000407' \r
+TEXI3           000415' \r
+TEXIN           002740' \r
+TEXO            000763' \r
+TEXT            002171' \r
+TEXT2           002173' \r
+TEXTT           002170' \r
+TFLOT           002060' \r
+TFLOT1          002070' \r
+TIF             100000  \r
+TIN             002666' \r
+TMC     034000  000000  INT\r
+TMS     034400  000000  INT\r
+TOC             002003' \r
+TOC1            002010' \r
+TOC2            002014' \r
+TOC3            002012' \r
+TOC4            002017' \r
+TOC5            002023' \r
+TOC6            002025' \r
+TOCA            002006' \r
+TOUT            002676' \r
+TSPC            002664' \r
+TTY     012000  000000  INT\r
+TTY1            002722' \r
+TTYLEV          002732' \r
+TTYRET          002721' \r
+TTYY            000120  \r
+TXT             003276' \r
+ULIM            001413' \r
+ULIM1           001415' \r
+ULIMIT          002225' \r
+UND1            000137' \r
+UNDEF           000125' \r
+VARRW           000674' \r
+VER2            002500' \r
+VER3            002526' \r
+VERIFY          002456' \r
+W               000004  \r
+W1              000006  \r
+W2              000007  \r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 77-9\r
+        SYMBOL TABLE\r
+\r
+WORD            001624' \r
+WRD             002201' \r
+WRD2            002202' \r
+WRONG           000127' \r
+WRONG1          000130' \r
+XEC             001024' \r
+XEC0            001026' \r
+XEC1            001034' \r
+ZERO            001747' \r
+ZERO1           001752' \r
+ZERO2           001757' \r
+ZEROR           001776' \r
+ZLOW            000040  \r
+ZZ              000010  \r
+$1B             002236' INT\r
+$2B             002241' INT\r
+$3B             002244' INT\r
+$4B             002247' INT\r
+$5B             002252' INT\r
+$6B             002255' INT\r
+$7B             002260' INT\r
+$8B             002263' INT\r
+$I              002231' INT\r
+$M              002235' INT\r
+%A              000207  SPD\r
+%AC1            000573  SPD\r
+%AC2            000577  SPD\r
+%ACBM           000564  SPD\r
+%ACCP           000466  SPD\r
+%AN             000616  SPD\r
+%AO             000356  SPD\r
+%AOB            000402  SPD\r
+%B              000221  SPD\r
+%B2             000650  SPD\r
+%BD             000025  SPD\r
+%BIMB           000301  SPD\r
+%BOOLE          000614  SPD\r
+%BPUT           000134  SPD\r
+%BYTE           000223  SPD\r
+%C              000464  SPD\r
+%CA             000654  SPD\r
+%CA1            000504  SPD\r
+%CB             000666  SPD\r
+%CM             000660  SPD\r
+%COMP           000522  SPD\r
+%DP             000254  SPD\r
+%DV             000335  SPD\r
+%DV1            000340  SPD\r
+%DV2            000342  SPD\r
+%E              000525  SPD\r
+%EAN            000607  SPD\r
+%EIMS           000311  SPD\r
+%F              000137  SPD\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 77-10\r
+        SYMBOL TABLE\r
+\r
+%FLO            000170  SPD\r
+%H1             000344  SPD\r
+%HAK            000257  SPD\r
+%HW1            000550  SPD\r
+%HW2            000546  SPD\r
+%HW3            000555  SPD\r
+%HW4            000554  SPD\r
+%HWT            000540  SPD\r
+%I              000304  SPD\r
+%IMB            000302  SPD\r
+%IMS            000320  SPD\r
+%IO             000036  SPD\r
+%J              000440  SPD\r
+%JP             000405  SPD\r
+%JS             000476  SPD\r
+%L              000215  SPD\r
+%LD             000247  SPD\r
+%LMB            000213  SPD\r
+%M              000217  SPD\r
+%ML             000326  SPD\r
+%ML1            000331  SPD\r
+%MO             000310  SPD\r
+%MV             000261  SPD\r
+%N              000534  SPD\r
+%O              000153  SPD\r
+%OI             000041  SPD\r
+%OR             000627  SPD\r
+%P              000243  SPD\r
+%PA             000432  SPD\r
+%PO             000415  SPD\r
+%POP            000443  SPD\r
+%PSJ            000521  SPD\r
+%PU             000407  SPD\r
+%PUS            000437  SPD\r
+%R              000423  SPD\r
+%S              000324  SPD\r
+%S1             000462  SPD\r
+%S2             000456  SPD\r
+%S3             000457  SPD\r
+%SH             000446  SPD\r
+%SJ             000511  SPD\r
+%ST             000645  SPD\r
+%T              000353  SPD\r
+%TA             000662  SPD\r
+%TM             000656  SPD\r
+%U40            000101  SPD\r
+%U47            000114  SPD\r
+%U50            000700  SPD\r
+%U60            000123  SPD\r
+%U603           000144  SPD\r
+%U6062          000157  SPD\r
+%U62            000163  SPD\r
+%U703           000724  SPD\r
+\r\fEDDT   V.005A  - EXEC MODE VERSION                 PAGE 77-11\r
+        SYMBOL TABLE\r
+\r
+%USET           000072  SPD\r
+%UUO            000044  SPD\r
+%Z              000155  SPD\r
+\fLLL                     OOOOOOOOO            AAAAAAAAA         DDDDDDDDDDDD         EEEEEEEEEEEEEEE      RRRRRRRRRRRR   \r
+LLL                     OOOOOOOOO            AAAAAAAAA         DDDDDDDDDDDD         EEEEEEEEEEEEEEE      RRRRRRRRRRRR   \r
+LLL                     OOOOOOOOO            AAAAAAAAA         DDDDDDDDDDDD         EEEEEEEEEEEEEEE      RRRRRRRRRRRR   \r
+LLL                  OOO         OOO      AAA         AAA      DDD         DDD      EEE                  RRR         RRR\r
+LLL                  OOO         OOO      AAA         AAA      DDD         DDD      EEE                  RRR         RRR\r
+LLL                  OOO         OOO      AAA         AAA      DDD         DDD      EEE                  RRR         RRR\r
+LLL                  OOO         OOO      AAA         AAA      DDD         DDD      EEE                  RRR         RRR\r
+LLL                  OOO         OOO      AAA         AAA      DDD         DDD      EEE                  RRR         RRR\r
+LLL                  OOO         OOO      AAA         AAA      DDD         DDD      EEE                  RRR         RRR\r
+LLL                  OOO         OOO      AAA         AAA      DDD         DDD      EEEEEEEEEEEE         RRRRRRRRRRRR   \r
+LLL                  OOO         OOO      AAA         AAA      DDD         DDD      EEEEEEEEEEEE         RRRRRRRRRRRR   \r
+LLL                  OOO         OOO      AAA         AAA      DDD         DDD      EEEEEEEEEEEE         RRRRRRRRRRRR   \r
+LLL                  OOO         OOO      AAAAAAAAAAAAAAA      DDD         DDD      EEE                  RRR   RRR      \r
+LLL                  OOO         OOO      AAAAAAAAAAAAAAA      DDD         DDD      EEE                  RRR   RRR      \r
+LLL                  OOO         OOO      AAAAAAAAAAAAAAA      DDD         DDD      EEE                  RRR   RRR      \r
+LLL                  OOO         OOO      AAA         AAA      DDD         DDD      EEE                  RRR      RRR   \r
+LLL                  OOO         OOO      AAA         AAA      DDD         DDD      EEE                  RRR      RRR   \r
+LLL                  OOO         OOO      AAA         AAA      DDD         DDD      EEE                  RRR      RRR   \r
+LLLLLLLLLLLLLLL         OOOOOOOOO         AAA         AAA      DDDDDDDDDDDD         EEEEEEEEEEEEEEE      RRR         RRR\r
+LLLLLLLLLLLLLLL         OOOOOOOOO         AAA         AAA      DDDDDDDDDDDD         EEEEEEEEEEEEEEE      RRR         RRR\r
+LLLLLLLLLLLLLLL         OOOOOOOOO         AAA         AAA      DDDDDDDDDDDD         EEEEEEEEEEEEEEE      RRR         RRR\r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  11:23:08\r
+File: DSKB1 :LOADER.LST   [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:29
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:1855 \r
+File will be deleted after printing\r
+\f\rLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 1\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                        SUBTTL  DICK GRUEN: V25 3 AUG 68\r
+\r
+\r
+                                ;K=1                    ;K=1  MEANS 1KLOADER\r
+                                IFNDEF  K,<K=0>         ;K=0  MEANS F4 LOADER\r
+\r
+                                ;RPGSW=1                ;MEANS RPG FEATURE\r
+                                IFNDEF RPGSW,<RPGSW=0>\r
+                                ;LDAC=1                 ;MEANS LOAD CODE INTO ACS\r
+                                IFNDEF LDAC,<LDAC=0>\r
+\r
+                                ;BLTSYM=1               ;MOVE SYMBOL TABLE DOWN TO END OF PROG\r
+                                IFNDEF BLTSYM,<BLTSYM=0>\r
+\r
+                                ;EXPAND=1               ;FOR AUTOMATIC CORE EXPANSION\r
+                                IFNDEF EXPAND,< IFN K,<EXPAND=0>\r
+                                                IFE K,<EXPAND=1>>\r
+\r
+                                ;PP=1                   ;ALLOW PROJ-PROG #\r
+                                IFNDEF PP,<PP=0>\r
+\r
+                                ;CHN5=0                 ;IF CHAIN WHICH DOESN'T SAVES JOB41\r
+                                IFNDEF CHN5,<CHN5=1>\r
+\r
+                                IFE K,< TITLE   LOADER - LOADS MACROX AND SIXTRAN FOUR>\r
+                                IFN K,< TITLE   1KLOAD - LOADS MACROX>\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 2\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                ;ACCUMULATOR ASSIGNMENTS\r
+                        000000          F=0             ;FLAGS IN LH, SA IN RH\r
+                        000001          N=1             ;PROGRAM NAME POINTER\r
+                        000002          X=2             ;LOADER OFFSET\r
+                        000003          H=3             ;HIGHEST LOC LOADED\r
+                        000004          S=4             ;UNDEFINED POINTER\r
+                        000005          R=5             ;RELOCATION CONSTANT\r
+                        000006          B=6             ;SYMBOL TABLE POINTER\r
+                        000007          D=7\r
+                        000010          T=10\r
+                        000011          V=T+1\r
+                        000012          W=12            ;VALUE\r
+                        000013          C=W+1           ;SYMBOL\r
+                        000014          E=C+1           ;DATA WORD COUNTER\r
+                        000015          Q=15            ;RELOCATION BITS\r
+                        000016          A=Q+1           ;SYMBOL SEARCH POINTER\r
+                        000017          P=17            ;PUSHDOWN POINTER\r
+                                ;FLAGS  F(0 - 17)\r
+                        000001          CSW==1                  ;ON - COLON SEEN\r
+                        000002          ESW==2                  ;ON - EXPLICIT EXTENSION IDENT.\r
+                        000004          SKIPSW==4               ;ON - DO NOT LOAD THIS PROGRAM\r
+                        000010          FSW==10                 ;ON - SCAN FORCED TO COMPLETION\r
+                        000020          FCONSW==20              ;ON - FORCE CONSOLE OUTPUT\r
+                        000100          ASW==100                ;ON - LEFT ARROW ILLEGAL\r
+                        000200          FULLSW==200             ;ON - STORAGE EXCEEDED\r
+                        000400          SLIBSW==400             ;ON - LIB SEARCH IN THIS PROG\r
+                        001000          DSYMSW==1000            ;ON - LOAD WITH SYMBOLS FOR DDT\r
+                        002000          REWSW==2000             ;ON - REWIND AFTER INIT\r
+                        004000          LIBSW==4000             ;ON - LIBRARY SEARCH MODE\r
+                        010000          F4LIB==10000            ;ON - F4 LIBRARY SEARCH LOOKUP\r
+                        020000          ISW==20000              ;ON - DO NOT PERFORM INIT\r
+                        040000          SYMSW==40000            ;ON - LOAD LOCAL SYMBOLS\r
+                        100000          DSW==100000             ;ON - CHAR IN IDENTIFIER\r
+                        200000          NSW==200000             ;ON - SUPPRESS LIBRARY SEARCH\r
+                        400000          SSW==400000             ;ON - SWITCH MODE\r
+                                ;FLAGS  N(0 - 17)\r
+                        000001          ALLFLG==1               ;ON - LIST ALL GLOBALS\r
+                        000002          ISAFLG==2               ;ON - IGNORE STARTING ADDRESSES\r
+                        000004          COMFLG==4               ;ON - SIZE OF COMMON SET\r
+                        000010  IFE K,< F4SW==10                ;F4 IN PROGRESS\r
+                        000020          RCF==20                 ;READ DATA COUNT\r
+                        000040          SYDAT==40               ;SYMBOL IN DATA>\r
+                        000100          SLASH==100              ;SLASH SEEN\r
+                        000200  IFE K,< BLKD1==200              ;ON- FIRST BLOCK DATA SEEN\r
+                        000400          PGM1==400               ;ON FIRST F4 PROG SEEN\r
+                        001000          DZER==1000              ;ON - ZERO SECOND DATA WORD>\r
+                        002000          EXEQSW==2000            ;IMMEDIATE EXECUTION\r
+                        004000          DDSW==4000              ;GO TO DDT\r
+                                IFN RPGSW,<RPGF==10000          ;IN RPG MODE>\r
+                        020000          AUXSWI==20000           ;ON - AUX. DEVICE INITIALIZED\r
+                        040000          AUXSWE==40000           ;ON - AUX. DEVICE ENTERED\r
+                                IFN PP,<PPSW==100000            ;ON - READING PROJ-PROG #\r
+                                        PPCSW==200000           ;ON - READING PROJ #>\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 3\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+        000137                  LOC     137\r
+        000137  000000  000025  OCT 25          ;VERSION #\r
+        000000'                 RELOC\r
+                                        MLON\r
+                                        SALL\r
+\r
+\r
+\r
+                                ;MONITOR LOCATIONS IN THE USER AREA\r
+\r
+                        000140          JOBPRO==140             ;PROGRAM ORIGIN\r
+                        000134          JOBBLT==134             ;BLT ORIGIN\r
+                        000131          JOBCHN==131             ;RH = PROG BREAK OF FIRST BLOCK DATA\r
+                                                                ;LH = PROG BREAK OF FIRST F4 PROG\r
+\r
+                                ;CALLI DEFINITIONS\r
+\r
+                        000003  CDDTOUT==3      ;CALLI DDTOUT\r
+                        000012  CEXIT==12       ;CALLI EXIT\r
+                        000005  CDDTGT==5       ;CALLI DDTGT\r
+                        000002  CSETDDT==2      ;CALLI SETDDT\r
+\r
+                                ;LENGTH OF PUSHDOWN LIST FOR POLISH FIXUPS\r
+\r
+                        000060  PPDL==60\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 4\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                IFN RPGSW,<\r
+                                RPGSET: CALLI 0\r
+                                        INIT 17,1       ;SET UP DSK\r
+                                        SIXBIT /DSK/\r
+                                        XWD 0,CTLIN\r
+                                        JRST NUTS\r
+                                        MOVE [SIXBIT /QQLOAD/]  ;NAME OF COMMAND FILE\r
+                                        MOVEM CTLNAM\r
+                                        MOVSI (SIXBIT /RPG/)    ;AND EXT\r
+                                        MOVEM CTLNAM+1\r
+                                        SETZM CTLNAM+3\r
+                                        LOOKUP 17,CTLNAM        ;THERE?\r
+                                        JRST NUTS       ;NO\r
+                                        INIT 16,16      ;GET SET TO DELETE QQLOAD.RPG\r
+                                        SIXBIT /DSK/\r
+                                        0\r
+                                        JRST LD         ;GIVE UP COMPLETELY\r
+                                        SETZM CTLNAM+3\r
+                                        HLLZS CTLNAM+1  ;CLEAR OUT EXTRA JUNK\r
+                                        LOOKUP 16,CTLNAM\r
+                                        JRST LD\r
+                                        RENAME 16,ZEROS ;DELETE IT\r
+                                        JFCL            ;IGNORE IF IT WILL NOT GO\r
+                                        RELEASE 16,0    ;GET RID OF THIS DEVICE\r
+                                        SETZM NONLOD    ;THIS IS NOT A CONTINUATION\r
+                                RPGS3:  MOVEI CTLBUF\r
+                                        MOVEM JOBFF     ;SET UP BUFFER\r
+                                        INBUF 17,1\r
+                                        MOVEI [ASCIZ /\r
+                                LOADING\r
+                                /]              ;PRINT MESSAGE THAT WE ARE STARTING\r
+                                        CALLI CDDTOUT\r
+                                        SKIPE NONLOD    ;CONTINUATION?\r
+                                        JRST RPGS2      ;YES, SPECIAL SETUP\r
+                                        MOVSI R,F.I     ;NOW SO WE CAN SET FLAG\r
+                                        BLT R,R\r
+                                        TLO N,RPGF\r
+                                        JRST CTLSET     ;SET UP TTY\r
+                                RPGS1:  PUSHJ P,[TLNE F,ESW     ;HERE FROM FOO* COMMAND, STORE NAME\r
+                                                JRST LDDT3      ;SAVE EXTENSION\r
+                                                TLZE F,CSW!DSW   ;OR AS NAME\r
+                                                MOVEM W,DTIN\r
+                                                POPJ P,]\r
+                                        MOVEM 0,SVRPG#  ;SAVE 0 JUST IN CASE\r
+                                        SETZM NONLOD#   ;DETERMINE IF CONTINUATION\r
+                                        MOVEI 0,2(B)    ;BY SEEING IF ANY SYMBOLS LOADED\r
+                                        CAME 0,JOBREL\r
+                                        SETOM NONLOD    ;SET TO -1 AND SKIP CALLI\r
+                                        MOVE 0,ILD1\r
+                                        MOVEM 0,RPG1\r
+                                        INIT 17,1\r
+                                RPG1:   0\r
+                                        XWD 0,CTLIN\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 4-1\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                        JSP A,ILD5\r
+                                        LOOKUP 17,DTIN  ;THE FILE NAME\r
+                                        JRST ILD9\r
+                                        JRST RPGS3\r
+                                \r
+                                RPGS2:  MOVSI 0,RPGF    ;SET FLAG\r
+                                        IORM 0,F.C+N\r
+                                        TLO N,RPGF\r
+                                        MOVE 0,SVRPG\r
+                                        JRST LD2Q       ;BACK TO INPUT SCANNING\r
+                                >\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 5\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+\r
+                                ;MONITOR LOADER CONTROL\r
+\r
+        000000'                 BEG:\r
+                                LD:     IFN RPGSW,<SKIPA        ;NORMAL INITIALIZE\r
+                                        JRST RPGSET     ;SPECIAL INIT>\r
+        000000' 513000  000042          HLLZS 42        ;GET RID OF ERROR COUNT IF NOT IN RPG MODE\r
+        000001' 047000  000000          CALLI   0               ;INITIALIZE THIS JOB\r
+        000002' 205240  002031' NUTS:   MOVSI     R,F.I         ;SET UP INITIAL ACCUMULATORS\r
+        000003' 251240  000005          BLT     R,R             \r
+        000004' 041140  000001  CTLSET: INIT    3,1             ;INITIALIZE CONSOLE\r
+        000005' 646471  000000          SIXBIT    /TTY/\r
+        000006' 002040' 002043'         XWD     BUFO,BUFI\r
+        000007' 047000  000012  CALLEX: CALLI   CEXIT           ;DEVICE ERROR, FATAL TO JOB\r
+        000010' 201600  002064'         MOVEI     E,TTY1\r
+        000011' 202600  000000*         MOVEM     E,JOBFF\r
+        000012' 064140  000001          INBUF     3,1\r
+        000013' 065140  000001          OUTBUF    3,1           ;INITIALIZE OUTPUT BUFFERS\r
+        000014' 067140  000000          OUTPUT    3,                    ;DO INITIAL REDUNDANT OUTPUT\r
+        000015' 550300  000000*         HRRZ    B,JOBREL        ;PICK UP CORE BOUND\r
+        000016' 332000  000000*         SKIPE   JOBDDT          ;DOES DDT EXIST?\r
+        000017' 550300  000000*         HRRZ    B,JOBSYM        ;USED BOTTOM OF SYMBOL TABLE INSTEAD\r
+        000020' 274300  001753'         SUB     B,SE3           ;INITIALIZE SYMBOL TABLE POINTER\r
+        000021' 303146  000001          CAILE     H,1(B)                ;TEST CORE ALLOCATION\r
+        000022' 047000  000012          CALLI   CEXIT           ;INSUFFICIENT CORE, FATAL TO JOB\r
+        000023' 204600  000002          MOVS    E,X             ;SET UP BLT POINTER\r
+        000024' 541602  000001          HRRI    E,1(X)\r
+        000025' 402014  777777          SETZM     -1(E)                 ;ZERO FIRST WORD\r
+        000026' 251606  000000          BLT     E,(B)           ;ZERO CORE UP TO THE SYMBOL AREA\r
+        000027' 550200  000006          HRRZ    S,B             ;INITIALIZE UNDEF. POINTER\r
+        000030' 540040  000006          HRR     N,B             ;INITIALIZE PROGRAM NAME POINTER\r
+        000031' 541240  000140          HRRI    R,JOBPRO        ;INITIALIZE THE LOAD ORIGIN\r
+        000032' 200600  001756'         MOVE    E,COMM          ;SET .COMM. AS THE FIRST PROGRAM\r
+        000033' 202606  000001          MOVEM     E,1(B)                ;STORE IN SYMBOL TABLE\r
+        000034' 552246  000002          HRRZM     R,2(B)                ;STORE COMMON ORIGIN\r
+        000035' 201600  002022'         MOVEI     E,F.C         ;INITIALIZE STATE OF THE LOADER\r
+        000036' 251600  002030'         BLT     E,B.C\r
+        000037' 402000  001761'         SETZM   MDG             ;MULTIPLY DEFINED GLOBAL COUNT\r
+        000040' 205500  254200          MOVSI   W,254200        ;STORE HALT IN JOB41\r
+        000041' 202502  000000*         MOVEM   W,JOB41(X)      ;...\r
+                                IFN LDAC!BLTSYM,<MOVEI W,20     ;SET UP SPACE TO SAVE FOR ACS AND\r
+                                        MOVEM W,KORSP#  ;USER DEFINITIONS WITH DDT>\r
+\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 6\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+\r
+                                IFN RPGSW,<JRST LD2Q>\r
+                                LD2:    IFN RPGSW,<MOVSI B,RPGF ;HERE ON ERRORS, TURN OFF RPG\r
+                                        ANDCAM B,F.C+N  ;IN CORE>\r
+                                ;LOADER SCAN FOR FILE NAMES\r
+\r
+        000042' 205300  002022' LD2Q:   MOVSI     B,F.C         ;RESTORE ACCUMULATORS\r
+        000043' 251300  000006          BLT     B,B\r
+        000044' 200740  001755'         MOVE    P,PDLPT         ;INITIALIZE PUSHDOWN LIST\r
+        000045' 402000  002045'         SETZM     BUFI2         ;CLEAR INPUT BUFFER POINTER\r
+        000046' 402000  000616' IFE PP,<        SETZM     ILD1          ;CLEAR INPUT DEVICE NAME>\r
+                                IFN PP,<        MOVSI T,(SIXBIT /DSK/)  ;ASSUME DSK\r
+                                        MOVEM T,ILD1\r
+                                        SETZM OLDDEV#   ;TO MAKE IT GO BACK AFTER /D FOR LIBSR>\r
+        000047' 402000  002054'         SETZM     DTIN          ;CLEAR INPUT FILE NAME\r
+                                IFN PP,<SETZM   PPN#            ;CLEAR INPUT PROJ-PROG #>\r
+\r
+        000050' 071040  000000  LD2B:   RELEAS    1,                    ;RELEASE BINARY INPUT DEVICE\r
+                                IFN RPGSW,<     TLNE N,RPGF     ;NOT IF DOING RPG\r
+                                        JRST LD2BA>\r
+        000051' 201400  000052          MOVEI     T,"*"\r
+        000052' 136400  002041'         IDPB    T,BUFO1         ;OUTPUT ASTERISK TO START INPUT\r
+        000053' 067140  000000          OUTPUT    3,\r
+        000054' 621000  022707  LD2BA:  TLZ     F,FULLSW+ASW+ISW+CSW+ESW+SKIPSW+SLIBSW+REWSW\r
+        000055' 603000  004000          TLNE    F,LIBSW         ;WAS LIBRARY MODE ON?\r
+        000056' 661000  000004          TLO     F,SKIPSW        ;YES, NORMAL MODE IS SKIPPING\r
+\r
+                                LD2D:   IFN PP,<SETZM PPN       ;DO NOT REMEMBER PPNS FOR NOW\r
+                                LD2DB:  SKIPE W,OLDDEV  ;RESET DEVICE IF NEEDED\r
+                                        CAMN W,ILD1     ;IS IT SAME?\r
+                                        JRST LD2DA      ;YES, FORGET IT\r
+                                        TLZ F,ISW+DSW+FSW+REWSW\r
+                                        MOVEM W,ILD1>\r
+        000057'                 LD2DA:\r
+                                IFN RPGSW,<     SETZM DTIN1     ;CLEAR EXTENSION>\r
+        000057' 201500  000000          MOVEI     W,0           ;INITIALIZE IDENTIFIER SCAN\r
+        000060' 201600  000006          MOVEI     E,6           ;INITIALIZE CHARACTER COUNTER\r
+        000061' 200440  001754'         MOVE    V,LSTPT         ;INITIALIZE BYTE POINTER TO W\r
+        000062' 621000  500010          TLZ     F,SSW+DSW+FSW   ;LEAVE SWITCH MODE\r
+                                LD3:    IFN RPGSW,<TLNE N,RPGF  ;CHECK RPG FEATURE\r
+                                        JRST RPGRD>\r
+        000063' 377000  002045'         SOSG BUFI2      ;DECREMENT CHARACTER COUNT\r
+        000064' 066140  000000          INPUT     3,                    ;FILL TTY BUFFER\r
+        000065' 134400  002044'         ILDB    T,BUFI1         ;LOAD T WITH NEXT CHARACTER\r
+        000066' 200640  000010  LD3AA:  MOVE    Q,T\r
+        000067' 231640  000011          IDIVI     Q,11          ;TRANSLATE TO 4 BIT CODE\r
+        000070' 135656  000561'         LDB     Q,LD8(A)                ;LOAD CLASSIFICATION CODE\r
+        000071' 305640  000004          CAIGE     Q,4           ;MODIFY CODE IF .GE. 4\r
+        000072' 607000  400000          TLNN    F,SSW           ;MODIFY CODE IF SWITCH MODE OFF\r
+        000073' 271640  000004          ADDI    Q,4             ;MODIFY CLASS. CODE FOR DISPATCH\r
+        000074' 550715  000100'         HRRZ    A,LD3A(Q)               ;LOAD RH DISPATCH ENTRY\r
+        000075' 301640  000010          CAIL    Q,10            ;SKIP IF CORRECT DISPATCH ENTRY\r
+        000076' 554715  000070'         HLRZ    A,LD3A-10(Q)    ;LOAD LH DISPATCH ENTRY\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 6-1\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+        000077' 254020  000016          JRST    @A                      ;JUMP TO INDICATED LOCATION\r
+\r
+                                ;COMMAND DISPATCH TABLE\r
+\r
+        000100' 000063' 000542' LD3A:   XWD     LD3,LD7B                ;IGNORED CHAR, BAD CHAR (SWITCH)\r
+        000101' 000461' 000466'         XWD     LD6A,LD6                ;</> OR <(>, LETTER (SWITCH)\r
+        000102' 000115' 000524'         XWD     LD5,LD6C                ;<:>, DIGIT (SWITCH ARG.)\r
+        000103' 000127' 000527'         XWD     LD5A,LD6D               ;<.>, ESCAPE SWITCH MODE <)>\r
+        000104' 000145' 000533'         XWD     LD5C,LD7                ;<=> OR <L. ARROW>, BAD CHAR.\r
+        000105' 000134' 000110'         XWD     LD5B,LD4                ;<,>, ALPHABETIC CHAR.\r
+        000106' 000201' 000110'         XWD     LD5D,LD4                ;<CR.>, NUMERIC CHAR.\r
+        000107' 000205' 000533'         XWD     LD5E1,LD7               ;<ALT MODE>, BAD CHAR. <)>\r
+\r
+                                IFN RPGSW,<RPGRD:       SOSG CTLIN+2    ;CHECK CHARACTER COUNT\r
+                                        JRST    [IN 17,0\r
+                                                JRST .+1        ;OK\r
+                                                STATO 17,740000\r
+                                                JRST LD2\r
+                                                JSP A,ERRPT\r
+                                                SIXBIT /ERROR WHILE READING COMMAND FILE%/\r
+                                                JRST LD2]\r
+                                        IBP CTLIN+1     ;ADVANCE POINTER\r
+                                        MOVE T,@CTLIN+1 ;AND CHECK FOR LINE #\r
+                                        TRNE T,1\r
+                                        JRST    [MOVNI T,5\r
+                                                ADDM T,CTLIN+2\r
+                                                AOS CTLIN+1\r
+                                                JRST RPGRD      ];GO READ AGAIN\r
+                                        LDB T,CTLIN+1   ;GET CHR\r
+                                        JRST LD3AA      ;PASS IT ON>\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 7\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                ;ALPHANUMERIC CHARACTER, NORMAL MODE\r
+        000110' 361600  000063' LD4:    SOJL    E,LD3           ;JUMP IF NO SPACE FOR CHAR IN W\r
+        000111' 275400  000040          SUBI    T,40            ;CONVERT FROM ASCII TO SIXBIT\r
+        000112' 136400  000011          IDPB    T,V             ;DEPOSIT CHAR OF IDENTIFIER IN W\r
+        000113' 661000  100000          TLO     F,DSW           ;SET IDENTIFIER FLAG\r
+        000114' 254000  000063'         JRST    LD3             ;RETURN FOR NEXT CHARACTER\r
+\r
+                                ;DEVICE IDENTIFIER DELIMITER <:>\r
+\r
+        000115' 261740  000012  LD5:    PUSH    P,W             ;SAVE W\r
+        000116' 663000  000001          TLOE    F,CSW           ;TEST AND SET COLON FLAG\r
+        000117' 260740  000752'         PUSHJ     P,LDF         ;FORCE LOADING\r
+        000120' 262740  000012          POP     P,W             ;RESTORE W\r
+        000121' 603000  000002          TLNE    F,ESW           ;TEST SYNTAX\r
+        000122' 254000  000536'         JRST    LD7A            ;ERROR, MISSING COMMA ASSUMED\r
+        000123' 322500  000057'         JUMPE     W,LD2D                ;JUMP IF NULL DEVICE IDENTIFIER\r
+        000124' 202500  000616'         MOVEM     W,ILD1                ;STORE DEVICE IDENTIFIER\r
+                                IFN PP,<MOVEM W,OLDDEV  ;WE HAVE A NEW ONE SO IGNORE OLD>\r
+        000125' 621000  122010          TLZ     F,ISW+DSW+FSW+REWSW     ;CLEAR OLD DEVICE FLAGS\r
+                                IFN PP,<SETZM   PPN             ;CLEAR OLD PP #>\r
+        000126' 254000  000057'         JRST    LD2D            ;RETURN FOR NEXT IDENTIFIER\r
+\r
+                                ;FILE NAME EXTENSION IDENTIFIER DELIMITER <.>\r
+\r
+        000127' 663000  000002  LD5A:   TLOE    F,ESW           ;TEST AND SET EXTENSION FLAG\r
+        000130' 254000  000536'         JRST    LD7A            ;ERROR, TOO MANY PERIODS\r
+        000131' 623000  100001          TLZE    F,CSW+DSW       ;SKIP IF NULL IDENT AND NO COLON\r
+        000132' 202500  002054'         MOVEM     W,DTIN        ;STORE FILE IDENTIFIER\r
+        000133' 254000  000057'         JRST    LD2D            ;RETURN FOR NEXT IDENTIFIER\r
+\r
+                                ;INPUT SPECIFICATION DELIMITER <,>\r
+\r
+        000134'                 LD5B:\r
+                                IFN PP,<TLZE    N,PPCSW                 ;READING PP #?\r
+                                        JRST    [\r
+                                                HRLM    D,PPN   ;STORE PROJ #\r
+                                                JRST    LD6A1]  ;GET PROG #\r
+                                        PUSHJ   P,RBRA          ;CHECK FOR MISSING RBRA>\r
+        000134' 627000  000010          TLZN    F,FSW           ;SKIP IF PREV. FORCED LOADING\r
+        000135' 260740  000751'         PUSHJ     P,FSCN2               ;LOAD (FSW NOT SET)\r
+        000136' 254000  000057'         JRST    LD2D            ;RETURN FOR NEXT IDENTIFIER\r
+\r
+        000137' 603000  000002  LD5B1:  TLNE    F,ESW           ;TEST EXTENSION FLAG\r
+        000140' 254000  000723'         JRST    LDDT3           ;EXPLICIT EXTENSION IDENTIFIER\r
+        000141' 627000  100001          TLZN    F,CSW+DSW               ;SKIP IF IDENT. OR COLON\r
+        000142' 263740  000000          POPJ    P,\r
+        000143' 202500  002054'         MOVEM     W,DTIN                ;STORE FILE IDENTIFIER\r
+        000144' 254000  000722'         JRST    LDDT2           ;ASSUME <.REL> IN DEFAULT CASE\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 8\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                ;OUTPUT SPECIFICATION DELIMITER <=> OR <LEFT ARROW>\r
+                                ;OR PROJ-PROG # BRACKETS <[> AND <]>\r
+        000145'                 LD5C:\r
+                                IFN RPGSW,<CAIN T,"@"   ;CHECK  FOR * COMMAND\r
+                                        JRST RPGS1>\r
+                                IFN PP,<CAIN    T,"["                   ;PROJ-PROG #?\r
+                                        JRST    [TLO    N,PPSW+PPCSW    ;SET FLAGS\r
+                                                MOVEM   W,PPNW#         ;SAVE W\r
+                                                MOVEM   E,PPNE#         ;SAVE E\r
+                                                MOVEM   V,PPNV#         ;SAVE V\r
+                                                JRST LD6A1-1]   ;READ NUMBERS AS SWITCHES \r
+                                        CAIN    T,"]"                   ;END OF PP #?\r
+                                        JRST    [PUSHJ  P,RBRA          ;PROCESS RIGHT BRACKET\r
+                                                JRST    LD3             ];READ NEXT IDENT>\r
+        000145' 663000  000100          TLOE    F,ASW                   ;TEST AND SET LEFT ARROW FLAG\r
+        000146' 254000  000536'         JRST    LD7A                    ;ERROR, MISPLACED LEFT ARROW\r
+        000147' 260740  000137'         PUSHJ     P,LD5B1               ;STORE IDENTIFIER\r
+        000150' 627000  000002          TLZN    F,ESW                   ;TEST EXTENSION FLAG\r
+        000151' 205500  554160          MOVSI     W,554160              ;ASSUME <.MAP> IN DEFAULT CASE\r
+        000152' 202500  002061'         MOVEM     W,DTOUT1              ;STORE FILE EXTENSION IDENTIFIER\r
+        000153' 200500  002054'         MOVE    W,DTIN                  ;LOAD INPUT FILE IDENTIFIER\r
+        000154' 202500  002060'         MOVEM     W,DTOUT               ;USE AS OUTPUT FILE IDENTIFIER\r
+                                IFN PP,<MOVE    W,PPN           ;PROJ-PROG #\r
+                                        MOVEM   W,DTOUT+3               ;...>\r
+        000155' 200500  000616'         MOVE    W,ILD1                  ;LOAD INPUT DEVICE IDENTIFIER\r
+        000156' 202500  000165'         MOVEM   W,LD5C1                 ;USE AS OUTPUT DEVICE IDENTIFIER\r
+                                IFN PP,<        SKIPE W,OLDDEV  ;RESTORE OLD\r
+                                        MOVEM W,ILD1>\r
+                                ;INITIALIZE AUXILIARY OUTPUT DEVICE\r
+        000157' 623040  060000          TLZE    N,AUXSWI+AUXSWE         ;FLUSH CURRENT DEVICE\r
+        000160' 071100  000000          RELEASE 2,                      ;...\r
+        000161' 040500  004064'         CALL    W,[SIXBIT ?DEVCHR?]     ;IS DEVICE A TTY?\r
+        000162' 603500  000010          TLNE    W,10                    ;...\r
+        000163' 254000  000057' JRST    LD2D            ;YES, SKIP INIT\r
+        000164' 041100  000001          INIT    2,1                     ;INIT THE AUXILIARY DEVICE\r
+        000165' 000000  000000  LD5C1:  0               ;AUXILIARY OUTPUT DEVICE NAME\r
+        000166' 002046' 000000          XWD     ABUF,0                  ;BUFFER HEADER\r
+        000167' 265700  000643'         JSP     A,ILD5                  ;ERROR RETURN\r
+        000170' 603000  002000          TLNE    F,REWSW                 ;REWIND REQUESTED?\r
+        000171' 040100  004065'         CALL    2,[SIXBIT /UTPCLR/]             ;DECTAPE REWIND\r
+        000172' 623000  002000          TLZE    F,REWSW                 ;SKIP IF NO REWIND REQUESTED\r
+        000173' 072100  000001          MTAPE   2,1                     ;REWIND THE AUX DEV\r
+        000174' 201600  002544'         MOVEI   E,AUX                   ;SET BUFFER ORIGIN\r
+        000175' 202600  000011*         MOVEM     E,JOBFF\r
+        000176' 065100  000001          OUTBUF  2,1                     ;INITIALIZE SINGLE BUFFER\r
+        000177' 661040  020000          TLO     N,AUXSWI                        ;SET INITIALIZED FLAG\r
+        000200' 254000  000057'         JRST    LD2D                    ;RETURN TO CONTINUE SCAN\r
+\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 9\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+\r
+                                ;RIGHT SQUARE BRACKET (PROJ-PROG NUMBERS)\r
+                                IFN PP,<\r
+                                RBRA:   TLZN    N,PPSW          ;READING PP #?\r
+                                        POPJ    P,              ;NOPE, RETURN\r
+                                        TLZE    N,PPCSW         ;COMMA SEEN?\r
+                                        JRST    LD7A            ;NOPE, INDICATE ERROR\r
+                                        HRRM    D,PPN           ;STASH PROG NUMBER\r
+                                        MOVE    W,PPNW#         ;PICKUP OLD IDENT\r
+                                        MOVE    E,PPNE#         ;RESTORE CHAR COUNT\r
+                                        MOVE    V,PPNV#         ;RESTORE BYTE PNTR\r
+                                        POPJ    P,              ;TRA 1,4\r
+                                \r
+                                ;RIGHT JUSTIFY W\r
+                                \r
+                                RJUST:  JUMPE   W,LD7A          ;NOTHING TO RIGHT JUSTIFY\r
+                                        TRNE    W,77            ;IS W RJUSTED YET?\r
+                                        POPJ    P,              ;YES, TRA 1,4\r
+                                        LSH     W,-6            ;NOPE, TRY AGAIN\r
+                                        JRST    .-3             ;...>\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 10\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+\r
+                                ;LINE TERMINATION <CARRIAGE RETURN>\r
+\r
+        000201'                 LD5D:\r
+                                IFN PP,<PUSHJ   P,RBRA          ;CHECK FOR UNTERMINATED PP #>\r
+        000201' 260740  000730'         PUSHJ     P,FSCN                ;FORCE SCAN TO COMPLETION\r
+        000202' 254000  000050'         JRST    LD2B            ;RETURN FOR NEXT LINE\r
+\r
+                                ;TERMINATE LOADING <ALT MODE>\r
+\r
+        000203' 332000  000007  LD5E:   SKIPE     D                     ;ENTER FROM G COMMAND\r
+        000204' 540000  000007          HRR     F,D             ;USE NUMERIC STARTING ADDRESS\r
+        000205'                 LD5E1:\r
+        000205' 260740  001730'         PUSHJ     P,CRLF                ;START A NEW LINE\r
+        000206' 260740  000227'         PUSHJ   P,SASYM         ;SETUP JOBSA,JOBFF,JOBSYM,JOBUSY\r
+                                IFN LDAC!BLTSYM,<HRRZ A,R               ;SET UP BLT OF ACS\r
+                                        ADDI A,(X)              ;END\r
+                                        ADD A,KORSP             ;ADD IN SPACE RESERVED\r
+                                        CAIL A,(S)\r
+                                IFN EXPAND,<JRST        [PUSHJ P,XPAND>\r
+                                                        PUSHJ   P,[\r
+                                IFE EXPAND,<                    JSP     A,ERRPT\r
+                                                                SIXBIT  /MORE CORE NEEDED#/>\r
+                                                                CALLI   CEXIT]\r
+                                IFN EXPAND,<            JRST .-1]>\r
+                                        HRRM R,BOTACS#          ;SAVE FOR LATER\r
+                                        HRRZ A,R                ;SET BLT\r
+                                        ADD A,X\r
+                                        HRL A,X\r
+                                        MOVE Q,A\r
+                                        BLT A,17(Q)>\r
+                                IFN BLTSYM,<HRRZ A,R    ;PLACE TO BLT TO\r
+                                        ADD A,KORSP\r
+                                        MOVE W,A        ;SAVE DEST\r
+                                        ADDI A,(X)      ;AFTER ADJUSTMENT\r
+                                        MOVE Q,S        ;UDEF PNTR\r
+                                        ADD Q,B         ;TOTAL UNDEFS AND DEFS IN LEFT\r
+                                        HLROS Q         ;NOW NEG IN RIGHT\r
+                                        MOVNS Q ;POSITIVE\r
+                                        ADDI Q,-1(A)    ;END OF BLT\r
+                                        HRLI A,1(S)     ;AND GET PLACE TO BLT FROM\r
+                                        SUBI W,1(S)     ;PREST LOC OF SYMBOL TABLE\r
+                                        ADDM W,JOBSYM(X)\r
+                                        ADDM W,JOBUSY(X)        ;ADJUST POINTERS\r
+                                        BLT A,(Q)       ;MOVE IT\r
+                                        SKIPN JOBDDT(X) ;IS DDT THERE?\r
+                                        JRST NODDT\r
+                                        SUBI Q,-1(X)\r
+                                        HRRM Q,JOBFF(X) ;RESTET JOBFF IF DDT IS IN\r
+                                        HRLM Q,JOBSA(X)\r
+                                NODDT:>\r
+        000207' 200500  004066'         MOVE    W,[SIXBIT ?LOADER?]     ;FINAL MESSAGE\r
+        000210' 260740  000251'         PUSHJ P,BLTSET          ;SETUP FOR FINAL BLT\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 10-1\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+        000211' 071100  000000          RELEASE 2,              ;RELEASE AUX. DEV.\r
+                                IFN RPGSW,<RELEASE 17,0 ;RELEASE COMMAND DEVICE>\r
+        000212' 200500  004067' LD5E5:  MOVE    W,[BLT Q,(A)]   ;BLT OF ALL CODE\r
+        000213' 202500  000134          MOVEM   W,JOBBLT        ;STASH IN JOB DATA AREA\r
+        000214' 202502  000134          MOVEM   W,JOBBLT(X)     ;STASH IN RELOCATED JOBDATA AREA\r
+        000215' 200500  000007' LD5E2:  MOVE    W,CALLEX        ;EXIT AFTER BLT\r
+        000216' 627040  002000          TLZN    N,EXEQSW        ;IMMEDIATE EXECUTION REQUESTED?\r
+        000217' 254000  000225'         JRST    LD5E3           ;NOPE, LET USER TYPE START HIMSELF\r
+        000220' 550502  000000*         HRRZ    W,JOBSA(X)      ;PICKUP USUAL STARTING ADDRESS\r
+        000221' 603040  004000          TLNE    N,DDSW          ;DDT EXECUTION?\r
+        000222' 550502  000016*         HRRZ    W,JOBDDT(X)     ;USE DDT SA INSTEAD\r
+        000223' 322500  000215'         JUMPE   W,LD5E2         ;IF SA=0, DON'T EXECUTE\r
+        000224' 505500  254000          HRLI    W,(JRST)        ;INSTRUCTION TO EXECUTE\r
+        000225'                 LD5E3:\r
+        000225' 202502  000135  IFE LDAC,<MOVEM W,JOBBLT+1(X)   ;STASH FOR EXECUTION>\r
+                                IFN LDAC,<MOVEM W,JOBBLT+2(X)   ;STASH FOR EXECUTION\r
+                                        HRLZ    17,JOBFF(X)     ;BUT FIRST BLT ACS\r
+                                        MOVE    W,[BLT 17,17]   ;...\r
+                                        MOVEM   W,JOBBLT+1(X)   ;...>\r
+        000226' 254000  000134          JRST    JOBBLT          ;IF IT WERE DONE, 'TWERE BEST DONE QUICKLY\r
+\r
+\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 11\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+\r
+                                ;SEARCH LIBRARY, PRINT UNDEFS, SETUP JOBSA,JOBFF,JOBSYM,JOBUSY\r
+\r
+        000227' 607000  200000  SASYM:  TLNN    F,NSW           ;SKIP IF NO SEARCH FLAG ON\r
+        000230' 260740  000653'         PUSHJ   P,LIBF          ;SEARCH LIBRARY FILE\r
+        000231' 260740  000730'         PUSHJ   P,FSCN          ;FORCE SCAN TO COMPLETION\r
+        000232' 260740  001460'         PUSHJ   P,PMS           ;PRINT UNDEFINEDS\r
+        000233' 552002  000220*         HRRZM   F,JOBSA(X)      ;RH OF JOBSA :=STARTING ADDRESS\r
+        000234' 550700  000003  SAS1:   HRRZ    A,H             ;COMPUTE PROG BREAK\r
+        000235' 275702  000000          SUBI    A,(X)           ;...\r
+        000236' 305705  000000          CAIGE   A,(R)           ;BUT NO HIGHER THAN RELOC\r
+        000237' 550700  000005          HRRZ    A,R             ;...\r
+        000240' 506702  000233*         HRLM    A,JOBSA(X)      ;LH OR JOBSA IS PROG BREAK\r
+        000241' 552702  000175*         HRRZM   A,JOBFF(X)      ;RH OF JOBFF CONTAINS PROG BREAK\r
+        000242' 200700  000006          MOVE    A,B             ;SET JOBSYM W/ SYMBOL TABLE POINTER\r
+        000243' 350000  000016          AOS     A               ;...\r
+        000244' 202702  000017*         MOVEM   A,JOBSYM(X)     ;...\r
+        000245' 200700  000004          MOVE    A,S             ;SET JOBUSY W/ UNDEFINED SYMBOL POINTER\r
+        000246' 350000  000016          AOS     A               ;...\r
+        000247' 202702  000000*         MOVEM   A,JOBUSY(X)     ;...\r
+        000250' 263740  000000          POPJ    P,              ;RETURN\r
+                                ;PRINT FINAL MESSAGE, SET UP BLT AC'S, SETDDT, RELEAS\r
+\r
+        000251' 260740  001727' BLTSET: PUSHJ   P,FCRLF         ;START FINAL MESSAGE\r
+        000252' 260740  001602'         PUSHJ   P,PWORD         ;PRINT W\r
+        000253' 260740  001557'         PUSHJ   P,SPACE\r
+        000254' 550640  000015*         HRRZ    Q,JOBREL        ;PUBLISH HOW MUCH CORE USED\r
+        000255' 242640  777766          LSH     Q,-12           ;...\r
+        000256' 271640  000001          ADDI    Q,1             ;...\r
+        000257' 260740  001546'         PUSHJ   P,RCNUM         ;PUBLISH THE NUMBER\r
+        000260' 200500  004070'         MOVE    W,[SIXBIT /K CORE/]     ;PUBLISH THE UNITS\r
+        000261' 260740  001602'         PUSHJ   P,PWORD         ;...\r
+        000262' 260740  001730'         PUSHJ   P,CRLF          ;...\r
+        000263' 205642  000020          MOVSI   Q,20(X)         ;HOW MUCH CODE TO BLT\r
+        000264' 541640  000020          HRRI    Q,20            ;...\r
+        000265' 550700  000042          HRRZ A,42               ;CHECK ON ERRORS\r
+        000266' 322700  000275'         JUMPE A,NOEX            ;NONE, GO AHEAD\r
+        000267' 627040  002000          TLZN N,EXEQSW           ;DID HE WANT TO START EXECUTION?\r
+        000270' 254000  000275'         JRST NOEX               ;NO\r
+        000271' 265700  001610'         JSP A ,ERRPT            ;PRINT AN ERROR MESSAGE\r
+        000272' 457045  436564          SIXBIT /EXECUTION DELETED@/\r
+        000273' 515756  004445\r
+        000274' 544564  454440\r
+        000275' 550700  000254* NOEX:   HRRZ    A,JOBREL        ;WHEN TO STOP BLT\r
+        000276' 552702  000275*         HRRZM   A,JOBREL(X)     ;SETUP FOR POSSIBLE IMMED. XEQ\r
+        000277' 275702  000000          SUBI    A,(X)           ;...\r
+        000300' 301704  000000  IFE BLTSYM,<CAIL        A,(S)           ;DON'T BLT OVER SYMBOL TABLE\r
+        000301' 201704  000000          MOVEI   A,(S)           ;OR UNDEFINED TABLE>\r
+        000302' 071040  000000          RELEAS  1,              ;RELEASE DEVICES\r
+        000303' 071140  000000          RELEAS  3,              ;...\r
+        000304' 200242  000222*         MOVE    R,JOBDDT(X)     ;SET NEW DDT\r
+        000305' 047240  000002          CALLI   R,CSETDDT       ;...\r
+        000306' 263740  000000          POPJ    P,              ;RETURN\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 11-1\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 12\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+\r
+                                ;WRITE CHAIN FILES\r
+\r
+        000307' 334702  000131  CHNC:   SKIPA   A,JOBCHN(X)     ;CHAIN FROM BREAK OF FIRST BLOCK DATA\r
+        000310' 544702  000131  CHNR:   HLR     A,JOBCHN(X)     ;CHAIN FROM BREAK OF FIRST F4 PROG\r
+        000311' 553000  000016          HRRZS   A               ;ONLY RIGHT HALF IS SIGNIFICANT\r
+        000312' 322700  000546'         JUMPE   A,LD7C          ;DON'T CHAIN IF ZERO\r
+        000313' 607040  020000          TLNN    N,AUXSWI        ;IS THERE AN AUX DEV?\r
+        000314' 254000  000554'         JRST    LD7D            ;NO, DON'T CHAIN\r
+        000315' 261740  000016          PUSH    P,A             ;SAVE WHEREFROM TO CHAIN\r
+        000316' 332000  000007          SKIPE   D               ;STARTING ADDR SPECIFIED?\r
+        000317' 540000  000007          HRR     F,D             ;USE IT\r
+        000320' 260740  000227'         PUSHJ   P,SASYM         ;DO LIB SEARCH, SETUP JOBSA, ETC.\r
+        000321' 262740  000016          POP     P,A             ;GET WHEREFROM\r
+        000322' 210500  000276*         MOVN    W,JOBREL        ;CALCULATE IOWD FOR DUMP\r
+        000323' 271516  777773          ADDI    W,-1-3-CHN5(A)  ;...\r
+        000324' 505516  777773          HRLI    W,-4-CHN5(A)    ;...\r
+        000325' 206500  000363'         MOVSM   W,IOWDPP        ;...\r
+        000326' 271702  777773          ADDI    A,-4-CHN5(X)    ;ADD IN OFFSET\r
+        000327' 261702  000244* IFN CHN5,<PUSH  A,JOBSYM(X)     ;SETUP FOUR WORD TABLE\r
+        000330' 261702  000041*         PUSH    A,JOB41(X)      ;...>\r
+        000331' 261702  000304*         PUSH    A,JOBDDT(X)     ;JOBDDT IN ALL CASES\r
+                                IFE CHN5,<PUSH  A,JOBSYM(X)     ;JOBDDT, JOBSYM, JOBSA>\r
+        000332' 261702  000240*         PUSH    A,JOBSA(X)      ;JOBRYM ALWAYS LAST\r
+        000333' 070100  000000          CLOSE   2,              ;INSURE END OF MAP FILE\r
+        000334' 060100  000017          SETSTS  2,17            ;SET AUX DEV TO DUMP MODE\r
+        000335' 205500  435056          MOVSI   W,435056        ;USE .CHN AS EXTENSION\r
+        000336' 202500  002061'         MOVEM   W,DTOUT1        ;...\r
+        000337' 260740  001523'         PUSHJ   P,IAD2          ;DO THE ENTER\r
+        000340' 621040  060000          TLZ     N,AUXSWI+AUXSWE ;INSURE NO PRINTED OUTPUT\r
+        000341' 200500  004071'         MOVE    W,[SIXBIT ?CHAIN?]      ;FINAL MESSAGE\r
+        000342' 260740  000251'         PUSHJ   P,BLTSET                ;SETUP BLT PNTR, SETDDT, RELEAS\r
+        000343' 047000  000005          CALLI   CDDTGT          ;START DDT MODE OUTPUT\r
+        000344' 205600  000350'         MOVSI   CHNBLT,CHAIN3   ;BLT CHAIN3 INTO ACS\r
+        000345' 251600  000014          BLT     CHNBLT,CHNBLT   ;...\r
+        000346' 201740  000010          MOVEI   P,CHNERR        ;POINTER TO ERR MESS\r
+        000347' 254000  000000          JRST    0               ;GO DO CHAIN\r
+\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 13\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+\r
+                                ;THE AC SECTION OF CHAIN\r
+\r
+        000350'                 CHAIN3:\r
+        000000                          PHASE   0\r
+        000350' 251656  000000          BLT     Q,(A)           ;USUAL LDRBLT\r
+        000351' 067100  000013          OUTPUT  2,IOWDP         ;WRITE THE CHAIN FILE\r
+        000352' 063100  760000          STATZ   2,IOBAD!IODEND  ;CHECK FOR ERROR OR EOF\r
+        000353' 254000  000006          JRST    LOSEBIG         ;FOUND SAME, GO GRIPE\r
+        000354' 070100  000000          CLOSE   2,              ;FINISH OUTPUT\r
+        000355' 063100  760000          STATZ   2,IOBAD!IODEND  ;CHECK FOR FINAL ERROR\r
+        000356' 047000  000003  LOSEBI: CALLI   CDDTOUT         ;GRIPE ABOUT ERROR\r
+        000357' 047000  000012          CALLI   CEXIT           ;EXIT\r
+        000360' 422132  644606  CHNERR: ASCIZ   ?DEVICE ERROR?  ;ERROR MESSAGE\r
+        000361' 425010  551244\r
+        000362' 476440  000000\r
+        000363' 000000  000000  IOWDP:  Z                       ;STORE IOWD FOR DUMP HERE\r
+        000014                  CHNBLT:                         ;LAST WORD OF AC CHAIN (ZERO OF I/O POINTER)\r
+        000364'                         DEPHASE\r
+                        000363' IOWDPP=.-1                      ;MEMORY LOC OF AC IOWDP\r
+        000364' 000000  000000          Z                       ;TERMINATOR OF DUMP MODE LIST\r
+\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 14\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                ;EXPAND CORE\r
+\r
+                                IFN EXPAND,<\r
+        000365' 261740  000003  XPAND:  PUSH P,H        ;GET SOME REGISTERS TO USE\r
+        000366' 261740  000002          PUSH P,X\r
+        000367' 261740  000001          PUSH P,N\r
+        000370' 550100  000322*         HRRZ X,JOBREL   ;WHAT WE WANT\r
+        000371' 271100  002000          ADDI X,2000\r
+        000372' 047100  000011          CALLI X,11       ;CORE ALLOCATOR CALLS THIS\r
+        000373' 254000  000432'         JRST XPAND6\r
+        000374' 550140  003402' IFE K,<         HRRZ H,MLTP     ;GET LOWEST LOCATION\r
+        000375' 607040  000010          TLNN N,F4SW     ;IS FORTRAN LOADING>\r
+        000376' 550140  000004          HRRZ H,S        ;NO, USE S\r
+        000377' 550100  000370*         HRRZ X,JOBREL   ;NOW MOVE\r
+        000400' 275100  002000          SUBI X,2000\r
+        000401' 200042  000000  XPAND2: MOVE N,(X)\r
+        000402' 202042  002000          MOVEM N,2000(X)\r
+        000403' 313100  000003          CAMLE X,H       ;TEST FOR END\r
+        000404' 364100  000401'         SOJA X,XPAND2;          HAND EYE SYSTEM MOVES TABLE\r
+        000405' 505140  776000          HRLI H,-2000\r
+        000406' 402003  000000          SETZM (H)       ;ZERO NEW CORE\r
+        000407' 253140  000406'         AOBJN H,.-1\r
+        000410' 201140  002000          MOVEI H,2000\r
+        000411' 272140  000004          ADDM H,S\r
+        000412' 272140  000006          ADDM H,B\r
+        000413' 272140  000327*         ADDM H,JOBSYM\r
+        000414' 262740  000001          POP P,N\r
+        000415' 271040  002000          ADDI N,2000\r
+        000416' 607040  000010  IFE K,< TLNN N,F4SW     ;F4?\r
+        000417' 254000  000426'         JRST    XPAND3\r
+        000420' 272140  003401'         ADDM H,PLTP\r
+        000421' 272140  003377'         ADDM H,BITP\r
+        000422' 272140  003404'         ADDM H,SDSTP\r
+        000423' 272140  003402'         ADDM H,MLTP\r
+        000424' 603040  000040          TLNE N,SYDAT\r
+        000425' 272140  000011          ADDM H,V>\r
+        000426'                 XPAND3:\r
+        000426' 262740  000002          POP P,X\r
+        000427' 262740  000003          POP P,H\r
+        000430' 350017  000000          AOS (P)\r
+        000431' 263740  000000          POPJ P,\r
+        000432' 322100  000442' XPAND6: JUMPE X,XPAND4\r
+        000433' 265700  001610'         JSP A,ERRPT\r
+        000434' 435762  450041          SIXBIT /CORE AVAILABLE, BUT NOT TO YOU#/\r
+        000435' 664151  544142\r
+        000436' 544514  004265\r
+        000437' 640056  576400\r
+        000440' 645700  715765\r
+        000441' 030000  000000\r
+        000442' 265700  001610' XPAND4: JSP A,ERRPT\r
+        000443' 555762  450043          SIXBIT /MORE CORE NEEDED#/\r
+        000444' 576245  005645\r
+        000445' 454445  440300\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 14-1\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+        000446' 262740  000001  XPAND5: POP P,N\r
+        000447' 262740  000002          POP P,X\r
+        000450' 262740  000003          POP P,H\r
+        000451' 263740  000000          POPJ P,\r
+\r
+        000452' 260740  000365' XPAND7: PUSHJ   P,XPAND\r
+        000453' 254000  001257'         JRST    SFULLC\r
+        000454' 254000  000456'         JRST    POPJM2\r
+\r
+        000455' 370017  000000  POPJM3: SOS     (P)             ;POPJ TO CALL-2\r
+        000456' 370017  000000  POPJM2: SOS     (P)             ;POPJ TO CALL-1\r
+        000457' 370017  000000          SOS     (P)             ;SAME AS POPJ TO\r
+        000460' 263740  000000          POPJ    P,              ;NORMAL POPJ MINUS TWO\r
+                                        >\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 15\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+\r
+\r
+                                ;ENTER SWITCH MODE\r
+\r
+        000461' 306400  000057  LD6A:   CAIN    T,57            ;WAS CHAR A SLASH?\r
+        000462' 661040  000100          TLO     N,SLASH         ;REMEBER THAT\r
+        000463' 661000  400000          TLO     F,SSW           ;ENTER SWITCH MODE\r
+        000464' 201340  000000  LD6A1:  MOVEI   D,0             ;ZERO THE NUBER REGISTER\r
+        000465' 254000  000063'         JRST    LD3             ;EAT A SWITCH\r
+\r
+                                ;ALPHABETIC CHARACTER, SWITCH MODE\r
+\r
+        000466' 256010  000371' LD6:    XCT     LD6B-101(T)     ;EXECUTE SWITCH FUNCTION\r
+        000467' 623040  000100          TLZE    N,SLASH ;SWITCH MODE ENTERED W/ SLASH?\r
+        000470' 254000  000527'         JRST    LD6D            ;LEAVE SWITCH MODE\r
+        000471' 254000  000464'         JRST    LD6A1           ;STAY IN SWITCH MODE\r
+\r
+                                ;DISPATCH TABLE FOR SWITCHES\r
+\r
+                                ;       THE INSTRUCTION AT THE CHARACTER LOCATION IS EXECUTED\r
+\r
+        000472' 661040  000001  LD6B:   TLO     N,ALLFLG        ;A - LIST ALL GLOBALS\r
+        000473' 254000  000542'         JRST    LD7B            ;B - ERROR\r
+        000474' 260740  000307'         PUSHJ   P,CHNC          ;C - CHAIN, START W/ COMMON\r
+        000475' 260740  000710'         PUSHJ     P,LDDT        ;D - DEBUG OPTION, LOAD DDT\r
+        000476' 661040  002000          TLO     N,EXEQSW        ;E - LOAD AND GO\r
+        000477' 260740  000653'         PUSHJ     P,LIBF        ;F - LIBRARY SEARCH\r
+        000500' 260740  000203'         PUSHJ     P,LD5E        ;G - GO INTO EXECUTION\r
+        000501' 260740  000703'         PUSHJ P,LRAIDX          ;H - LOAD AN START RAID\r
+        000502' 661040  000002          TLO     N,ISAFLG        ;I - IGNORE STARTING ADDRESSES\r
+        000503' 621040  000002          TLZ     N,ISAFLG        ;J - USE STARTING ADDRESSES\r
+        000504' 254000  000542' IFE BLTSYM,<JRST        LD7B            ;K - ERROR>\r
+                                IFN BLTSYM,<PUSHJ P,KORADJ      ;K - RESERVE SPACE FOR SYM DEFS>\r
+        000505' 661000  004004          TLO     F,LIBSW+SKIPSW  ;L - ENTER LIBRARY SEARCH\r
+        000506' 260740  001407'         PUSHJ     P,PRMAP       ;M - PRINT STORAGE MAP\r
+        000507' 621000  004004          TLZ     F,LIBSW+SKIPSW  ;N - LEAVE LIBRARY SEARCH\r
+        000510' 540240  000007          HRR     R,D             ;O - NEW PROGRAM ORIGIN\r
+        000511' 661000  200000          TLO     F,NSW           ;P - PREVENT AUTO. LIB. SEARCH\r
+        000512' 621000  200000          TLZ     F,NSW           ;Q - ALLOW AUTO. LIB. SEARCH\r
+        000513' 260740  000310'         PUSHJ   P,CHNR          ;R - CHAIN, START W/ RESIDENT\r
+        000514' 661000  040000          TLO     F,SYMSW         ;S - LOAD WITH SYMBOLS\r
+        000515' 260740  000707'         PUSHJ   P,LDDTX         ;T - LOAD AND GO TO DDT\r
+        000516' 260740  001460'         PUSHJ     P,PMS         ;U - PRINT UNDEFINED LIST\r
+        000517' 260740  000704'         PUSHJ P,LRAID           ;V - LOAD RAID\r
+        000520' 621000  041000          TLZ     F,SYMSW+DSYMSW  ;W - LOAD WITHOUT SYMBOLS\r
+        000521' 621040  000001          TLZ     N,ALLFLG        ;X - DO NOT LIST ALL GLOBALS\r
+        000522' 661000  002000          TLO     F,REWSW         ;Y - REWIND BEFORE USE\r
+        000523' 254000  000000'         JRST    LD              ;Z - RESTART LOADER\r
+\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 16\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+\r
+                                ;SWITCH MODE NUMERIC ARGUMENT\r
+\r
+        000524' 242340  000003  LD6C:   LSH     D,3             ;BUILD OCTAL NUMERIC ARGUMENT\r
+        000525' 271350  777720          ADDI    D,-60(T)\r
+        000526' 254000  000063'         JRST    LD3\r
+\r
+                                ;EXIT FROM SWITCH MODE\r
+\r
+        000527' 621000  400000  LD6D:   TLZ     F,SSW           ;CLEAR SWITCH MODE FLAG\r
+        000530' 603000  000010          TLNE    F,FSW           ;TEST FORCED SCAN FLAG\r
+        000531' 254000  000057'         JRST    LD2D            ;SCAN FORCED, START NEW IDENT.\r
+        000532' 254000  000063'         JRST    LD3             ;SCAN NOT FORCED, USE PREV IDENT\r
+                                ;ILLEGAL CHARACTER, NORMAL MODE\r
+\r
+        000533' 265700  001654' LD7:    JSP     A,ERRPT8\r
+        000534' 435041  621605          SIXBIT    /CHAR.%/\r
+        000535' 254000  000042'         JRST    LD2\r
+\r
+                                ;SYNTAX ERROR, NORMAL MODE\r
+\r
+        000536' 265700  001654' LD7A:   JSP     A,ERRPT8\r
+        000537' 637156  644170          SIXBIT    /SYNTAX%/\r
+        000540' 050000  000000\r
+        000541' 254000  000042'         JRST    LD2\r
+\r
+                                ;ILLEGAL CHARACTER, SWITCH MODE\r
+\r
+        000542' 265700  001654' LD7B:   JSP     A,ERRPT8\r
+        000543' 636751  644350          SIXBIT    /SWITCH%/\r
+        000544' 050000  000000\r
+        000545' 254000  000042'         JRST    LD2\r
+\r
+                                ;ATTEMPT TO CHAIN WITH SPECIFIED HALF OF JOBCHN = 0\r
+\r
+        000546' 265700  001610' LD7C:   JSP     A,ERRPT         ;GRIPE\r
+        000547' 655643  504151          SIXBIT  ?UNCHAINABLE AS LOADED@?\r
+        000550' 564142  544500\r
+        000551' 416300  545741\r
+        000552' 444544  400000\r
+        000553' 254000  000042'         JRST    LD2\r
+\r
+                                ;ATTEMP TO CHAIN WITHOUT SPECIFYING DEVICE\r
+\r
+        000554' 265700  001610' LD7D:   JSP     A,ERRPT         ;GRIPE\r
+        000555' 565700  435041          SIXBIT  ?NO CHAIN DEVICE@?\r
+        000556' 515600  444566\r
+        000557' 514345  400000\r
+        000560' 254000  000042'         JRST    LD2\r
+\r
+                                IFN BLTSYM,<KORADJ:     CAMLE D,KORSP   ;IF SMALLER IGNORE\r
+                                        MOVEM D,KORSP\r
+                                        POPJ P,>\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 17\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+\r
+                                ;CHARACTER CLASSIFICATION TABLE DESCRIPTION:\r
+\r
+                                ;       EACH CHARACTER HAS ASSOCIATED WITH IT A FOUR BIT BYTE\r
+                                ;       PACKED IN THE CHARACTER CLASSIFICATION TABLE.  THE CHARACTER\r
+                                ;       CLASSIFICATION CODES ARE ORDERED IN SUCH A WAY AS TO GIVE\r
+                                ;       DELIMITERS OF HIGHER PRECEDENCE LOWER CLASSIFICATION NUMBERS.\r
+                                ;       CERTAIN CHARACTERS HAVE NO EFFECT ON THE COMMAND STRING, AND\r
+                                ;       THEREFORE DO NOT EFFECT ORDERING OF DELIMITERS.  FOUR CODES\r
+                                ;       ARE RESERVED FOR ALTERNATE DISPATCHES WHILE THE SWITCH MODE IS\r
+                                ;       IN EFFECT.\r
+\r
+\r
+                                ;CLASSIFICATION BYTE CODES:\r
+\r
+                                ;       BYTE DISP CLASSIFICATION\r
+\r
+                                ;       00 - 00  ILLEGAL CHARACTER, SWITCH MODE\r
+                                ;       01 - 01  ALPHABETIC CHARACTER, SWITCH MODE\r
+                                ;       02 - 02  NUMERIC CHARACTER, SWITCH MODE\r
+                                ;       03 - 03  SWITCH MODE ESCAPE, SWITCH MODE\r
+\r
+                                ;       00 - 04  ILLEGAL CHARACTER, NORMAL MODE\r
+                                ;       01 - 05  ALPHABETIC CHARACTER, NORMAL MODE\r
+                                ;       02 - 06  NUMERIC CHARACTER, NORMAL MODE\r
+                                ;       03 - 07  SWITCH MODE ESCAPE, NORMAL MODE\r
+\r
+                                ;       04 - 10  IGNORED CHARACTER\r
+                                ;       05 - 11  ENTER SWITCH MODE CHARACTER\r
+                                ;       06 - 12  DEVICE IDENTIFIER DELIMITER\r
+                                ;       07 - 13  FILE EXTENSION DELIMITER\r
+                                ;       10 - 14  OUTPUT SPECIFICATION DELIMITER\r
+                                ;       11 - 15  INPUT SPECIFICATION DELIMITER\r
+                                ;       12 - 16  LINE TERMINATION\r
+                                ;       13 - 17  JOB TERMINATION\r
+\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 18\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+\r
+                                ;BYTE POINTERS TO CHARACTER CLASSIFICATION TABLE\r
+\r
+        000561' 400415  000572' LD8:    POINT     4,LD9(Q),3\r
+        000562' 340415  000572'         POINT     4,LD9(Q),7\r
+        000563' 300415  000572'         POINT     4,LD9(Q),11\r
+        000564' 240415  000572'         POINT     4,LD9(Q),15\r
+        000565' 200415  000572'         POINT     4,LD9(Q),19\r
+        000566' 140415  000572'         POINT     4,LD9(Q),23\r
+        000567' 100415  000572'         POINT     4,LD9(Q),27\r
+        000570' 040415  000572'         POINT     4,LD9(Q),31\r
+        000571' 000415  000572'         POINT     4,LD9(Q),35\r
+\r
+                                ;CHARACTER CLASSIFIACTION TABLE\r
+\r
+        000572' 200000  000000  LD9:    BYTE    (4)4,0,0,0,0,0,0,0,0\r
+        000573' 210422  400000          BYTE    (4)4,4,4,4,12,0,0,0,0\r
+        000574' 000000  000000          BYTE    (4)0,0,0,0,0,0,0,0,0\r
+        000575' 540000  040100          BYTE    (4)13,0,0,0,0,4,0,4,0\r
+        000576' 000001  230011          BYTE    (4)0,0,0,0,5,3,0,0,11\r
+        000577' 016510  421042          BYTE    (4)0,7,5,2,2,2,2,2,2\r
+        000600' 104211  400200          BYTE    (4)2,2,2,2,6,0,0,10,0\r
+        000601' 000104  210421  IFE RPGSW,<     BYTE    (4)0,0,1,1,1,1,1,1,1>\r
+                                IFN RPGSW,<     BYTE (4) 0,10,1,1,1,1,1,1,1>\r
+        000602' 042104  210421          BYTE    (4)1,1,1,1,1,1,1,1,1\r
+        000603' 042104  210421          BYTE    (4)1,1,1,1,1,1,1,1,1\r
+        000604' 040000  100000  IFE PP,<BYTE    (4)1,0,0,0,0,10,0,0,0>\r
+                                IFN PP,<BYTE    (4)1,10,0,10,0,10,0,0,0>\r
+        000605' 000000  000000          BYTE    (4)0,0,0,0,0,0,0,0,0\r
+        000606' 000000  000000          BYTE    (4)0,0,0,0,0,0,0,0,0\r
+        000607' 000000  000013          BYTE    (4)0,0,0,0,0,0,0,0,13\r
+        000610' 550000  000000          BYTE    (4)13,4\r
+\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 19\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+\r
+                                ;INITIALIZE LOADING OF A FILE\r
+\r
+        000611' 201500  002136' ILD:    MOVEI     W,BUF1                ;LOAD BUFFER ORIGIN\r
+        000612' 202500  000241*         MOVEM     W,JOBFF\r
+        000613' 663000  020000          TLOE    F,ISW           ;SKIP IF INIT REQUIRED\r
+        000614' 254000  000621'         JRST    ILD6            ;DONT DO INIT\r
+        000615' 041040  000014          INIT    1,14\r
+        000616' 000000  000000  ILD1:   0                               ;LOADER INPUT DEVICE\r
+        000617' 000000  002051'         XWD     0,BUFR\r
+        000620' 265700  000643'         JSP     A,ILD5          ;ERROR RETURN\r
+        000621' 623000  002000  ILD6:   TLZE    F,REWSW         ;SKIP IF NO REWIND\r
+        000622' 072040  000001          MTAPE   1,1             ;REWIND\r
+        000623' 076040  002054' ILD2:   LOOKUP    1,DTIN                ;LOOK UP FILE FROM DIRECTORY\r
+        000624' 254000  000631'         JRST    ILD3            ;FILE NOT IN DIRECTORY\r
+        000625' 064040  000002  IFE K,< INBUF     1,2           ;SET UP BUFFERS>\r
+                                IFN K,< INBUF   1,1             ;SET UP BUFFER>\r
+        000626' 661000  000100          TLO     F,ASW           ;SET LEFT ARROW ILLEGAL FLAG\r
+        000627' 621000  010002          TLZ     F,ESW+F4LIB     ;CLEAR EXTENSION FLAG\r
+        000630' 263740  000000          POPJ    P,\r
+\r
+                                ;       LOOKUP FAILURE\r
+\r
+        000631' 663000  000002  ILD3:   TLOE    F,ESW           ;SKIP IF .REL WAS ASSUMED\r
+        000632' 254000  000635'         JRST    ILD4            ;FATAL LOOKUP FAILURE\r
+        000633' 402000  002055'         SETZM     DTIN1         ;ZERO FILE EXTENSION\r
+        000634' 254000  000623'         JRST    ILD2            ;TRY AGAIN WITH NULL EXTENSION\r
+\r
+        000635' 623000  010000  ILD4:   TLZE    F,F4LIB         ;WAS THIS A TRY FOR F40 LIBRARY?\r
+                                        JRST    [MOVE   W,[SIXBIT /LIB4/]; YES, TRY LIB4\r
+                                                MOVEM   W,DTIN          ;...\r
+                                                PUSHJ   P,LDDT2         ;USE .REL EXTENSION\r
+                                                TLZ     F,ESW           ;...\r
+        000636' 254000  004073'                 JRST    ILD2            ];GO TRY AGAIN\r
+        000637' 265700  001610' ILD9:   JSP     A,ERRPT\r
+        000640' 434156  565764          SIXBIT    /CANNOT FIND#/\r
+        000641' 004651  564403\r
+        000642' 254000  000042'         JRST    LD2\r
+\r
+                                ;       DEVICE SELECTION ERROR\r
+\r
+        000643' 200516  777775  ILD5:   MOVE    W,-3(A)         ;LOAD DEVICE NAME FROM INIT\r
+        000644' 661000  000020          TLO     F,FCONSW        ;INSURE TTY OUTPUT\r
+        000645' 260740  001701'         PUSHJ   P,PRQ           ;START W/ ?\r
+        000646' 260740  001602'         PUSHJ     P,PWORD               ;PRINT DEVICE NAME\r
+        000647' 265700  001667'         JSP     A,ERRPT7\r
+        000650' 655641  664151          SIXBIT    /UNAVAILABLE@/\r
+        000651' 544142  544540\r
+        000652' 254000  000042'         JRST    LD2\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 20\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+\r
+                                ;LIBRARY SEARCH CONTROL AND LOADER CONTROL\r
+\r
+                                ;LIBF ENABLES A LIBRARY SEARCH OF <SYS:LIB4.REL>\r
+\r
+        000653' 260740  000746' LIBF:   PUSHJ     P,FSCN1               ;FORCE SCAN TO COMPLETION\r
+        000654' 260740  000660'         PUSHJ   P,LIBF1                 ;LOAD SYS:JOBDAT.REL\r
+        000655' 661000  010000          TLO     F,F4LIB                 ;INDICATE FORTRAN LIBRARY SEARCH\r
+        000656' 200500  004100'         MOVE    W,[SIXBIT /LIB40/]      ;FIRST TRY AT NAME\r
+        000657' 260740  000661'         PUSHJ   P,LIBF2                 ;LOAD SYS:LIB40.REL\r
+        000660' 200500  004101' LIBF1:  MOVE    W,[SIXBIT /JOBDAT/]     ;LOAD SYS:JOBDAT.REL\r
+        000661' 260740  000716' LIBF2:  PUSHJ     P,LDDT1\r
+        000662' 325200  000727'         JUMPGE    S,EOF2                ;JUMP IF NO UNDEFINED GLOBALS\r
+        000663' 661000  000404          TLO     F,SLIBSW+SKIPSW ;ENABLE LIBRARY SEARCH\r
+        000664' 621000  041000          TLZ     F,SYMSW+DSYMSW  ;DISABLE LOADING WITH SYMBOLS\r
+        000665' 254000  000752'         JRST    LDF             ;INITIALIZE LOADING LIB4\r
+\r
+                                ;       LIB CONTROLS THE LIBRARY SEARCH OF ONE FILE\r
+\r
+        000666' 325200  000726' LIB:    JUMPGE    S,EOF1                ;JUMP IF NO UNDEFINED GLOBALS\r
+        000667' 661000  000004          TLO     F,SKIPSW                ;SET SKIPSW TO IGNORE MODE\r
+        000670' 254000  000753'         JRST    LOAD            ;CONTINUE LIB. SEARCH\r
+\r
+        000671' 302700  000004  LIB1:   CAIE    A,4             ;TEST FOR ENTRY BLOCK\r
+        000672' 254000  000701'         JRST    LIB3            ;NOT AN ENTRY BLOCK, IGNORE IT\r
+        000673' 260740  001371' LIB2:   PUSHJ     P,RWORD               ;READ ONE DATA WORD\r
+        000674' 200540  000012          MOVE    C,W\r
+        000675' 661540  040000          TLO     C,040000                ;SET CODE BITS FOR SEARCH\r
+        000676' 260740  001353'         PUSHJ     P,SREQ\r
+        000677' 625000  000004          TLZA    F,SKIPSW                ;REQUEST MATCHES ENTRY, LOAD\r
+        000700' 254000  000673'         JRST    LIB2            ;NOT FOUND\r
+        000701' 260740  001371' LIB3:   PUSHJ     P,RWORD               ;READ AND IGNORE ONE DATA WORD\r
+        000702' 254000  000701'         JRST    LIB3            ;LOOP TO IGNORE INPUT\r
+\r
+                                ;LDDT LOADS <SYS:DDT.REL> AND SETS DSYMSW\r
+\r
+        000703' 661040  006000  LRAIDX: TLO N,DDSW!EXEQSW       ;H - LOAD AND START RAID\r
+        000704' 260740  000746' LRAID:  PUSHJ P,FSCN1           ;FORCE END OF SCAN\r
+        000705' 200500  004102'         MOVE W,[SIXBIT /RAID/]\r
+        000706' 254000  000712'         JRST LDDT0\r
+        000707' 661040  006000  LDDTX:  TLO     N,DDSW+EXEQSW   ;T - LOAD AND GO TO DDT\r
+        000710' 260740  000746' LDDT:   PUSHJ     P,FSCN1               ;FORCE SCAN TO COMPLETION\r
+        000711' 205500  444464          MOVSI     W,444464              ;FILE IDENTIFIER <DDT>\r
+        000712' 260740  000716' LDDT0:  PUSHJ     P,LDDT1\r
+        000713' 260740  000752'         PUSHJ     P,LDF         ;LOAD <SYS:DDT.REL>\r
+        000714' 661000  001000          TLO     F,DSYMSW                ;ENABLE LOADING WITH SYMBOLS\r
+        000715' 263740  000000          POPJ    P,\r
+\r
+        000716' 202500  002054' LDDT1:  MOVEM     W,DTIN                ;STORE FILE IDENTIFIER\r
+                                IFN PP,<MOVE W,ILD1     ;SAVE OLD DEV\r
+                                        MOVEM W,OLDDEV>\r
+        000717' 205500  637163          MOVSI     W,637163              ;DEVICE IDENTIFIER <SYS>\r
+        000720' 202500  000616'         MOVEM     W,ILD1                ;STORE DEVICE IDENTIFIER\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 20-1\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+        000721' 621000  026004          TLZ     F,ISW+LIBSW+SKIPSW+REWSW        ;CLEAR OLD FLAGS\r
+        000722' 205500  624554  LDDT2:  MOVSI     W,624554              ;EXTENSION IDENTIFIER <.REL>\r
+        000723' 202500  002055' LDDT3:  MOVEM     W,DTIN1               ;STORE EXTENSION IDENTIFIER\r
+                                IFN PP,<MOVE W,PPN      ;GET PROJ-PROG #\r
+                                        MOVEM W,DTIN+3>\r
+        000724' 263740  000000          POPJ    P,\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 21\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                ;EOF TERMINATES LOADING OF A FILE\r
+\r
+        000725' 200740  001757' EOF:    MOVE    P,PDSAV         ;RESTORE PUSHDOWN POINTER\r
+        000726' 621000  000404  EOF1:   TLZ     F,SLIBSW+SKIPSW ;CLEAR ONE FILE LIB. SEARCH FLAG\r
+        000727' 263740  000000  EOF2:   POPJ    P,\r
+\r
+                                ;       FORCE SCAN TO COMPLETION, LOAD IF NECESSARY\r
+\r
+        000730' 260740  000746' FSCN:   PUSHJ     P,FSCN1               ;FORCED LOAD BEFORE TEST\r
+        000731' 607000  000200          TLNN    F,FULLSW                ;TEST FOR OVERLAP\r
+        000732' 263740  000000          POPJ    P,                      ;NO OVERLAP, RETURN\r
+        000733' 200500  000003          MOVE    W,H             ;FETCH CORE SIZE REQUIRED\r
+        000734' 275504  000001          SUBI W,1(S) ; COMPUT DEFICIENCY\r
+        000735' 321500  000727'         JUMPL     W,EOF2                ;JUMP IF NO OVERLAP\r
+        000736' 661000  000020          TLO     F,FCONSW                ;INSURE TTY OUTPUT\r
+        000737' 260740  001701'         PUSHJ   P,PRQ                   ;START WITH ?\r
+        000740' 260740  001536'         PUSHJ     P,PRNUM0              ;INFORM USER\r
+        000741' 265700  001667'         JSP     A,ERRPT7\r
+        000742' 675762  446300          SIXBIT    /WORDS OF OVERLAP#/\r
+        000743' 574600  576645\r
+        000744' 625441  600300\r
+        000745' 254000  000042'         JRST    LD2             ;ERROR RETURN\r
+\r
+        000746' 667000  000010  FSCN1:  TLON    F,FSW           ;SKIP IF NOT FIRST CALL TO FSCN\r
+        000747' 607000  100003          TLNN    F,CSW+DSW+ESW   ;TEST SCAN FOR COMPLETION\r
+        000750' 263740  000000          POPJ    P,\r
+        000751' 260740  000137' FSCN2:  PUSHJ     P,LD5B1               ;STORE FILE OR EXTENSION IDENT.\r
+\r
+                                ;       LOADER CONTROL, NORMAL MODE\r
+\r
+        000752' 260740  000611' LDF:    PUSHJ     P,ILD         ;INITIALIZE LOADING\r
+\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 22\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                ;LOAD SUBROUTINE\r
+\r
+        000753' 202740  001757' LOAD:   MOVEM     P,PDSAV               ;SAVE PUSHDOWN POINTER\r
+        000754' 200740  001757' LOAD1:  MOVE    P,PDSAV         ;RESTORE PUSHDOWN POINTER\r
+        000755' 260740  001710' LOAD1A:   PUSHJ     P,WORD              ;INPUT BLOCK HEADER WORD\r
+        000756' 211612  400000          MOVNI     E,400000(W)   ;WORD COUNT - FROM RH OF HEADER\r
+        000757' 554700  000012          HLRZ    A,W             ;BLOCK TYPE - FROM LH OF HEADER\r
+        000760' 303700  000013          CAILE     A,DISPL*2+1           ;TEST BLOCK TYPE NUMBER\r
+        000761' 254000  001000'         JRST    LOAD4           ;ERROR, ILLEGAL BLOCK TYPE\r
+        000762' 603000  000004          TLNE    F,SKIPSW                ;BLOCK OK - TEST LOAD STATUS\r
+        000763' 254000  000671'         JRST    LIB1            ;RETURN TO LIB. SEARCH CONTROL\r
+        000764' 550416  000772'         HRRZ    T,LOAD2(A)              ;LOAD RH DISPATCH ENTRY\r
+        000765' 303700  000005          CAILE     A,DISPL               ;SKIP IF CORRECT\r
+        000766' 554416  000764'         HLRZ    T,LOAD2-DISPL-1(A)      ;LOAD LH DISPATCH ENTRY\r
+        000767' 603000  000200          TLNE    F,FULLSW                ;TEST CORE OVERLAP INDICATOR\r
+        000770' 367700  001272'         SOJG    A,HIGH0         ;IGNORE BLOCK IF NOT TYPE 1\r
+        000771' 254020  000010          JRST    @T                      ;DISPATCH TO BLOCK SUBROUTINE\r
+\r
+                                ;DISPATCH TABLE - BLOCK TYPES\r
+\r
+        000772' 001311' 000755' LOAD2:  XWD NAME,LOAD1A\r
+        000773' 001306' 001006'         XWD START,PROG\r
+        000774' 001340' 001023'         XWD LOCD,SYM\r
+        000775' 001002' 001002'         XWD LOAD4A,LOAD4A\r
+        000776' 001002' 000701'         XWD LOAD4A,LIB3\r
+        000777' 001002' 001274' LOAD3:  XWD LOAD4A,HIGH\r
+\r
+                        000005          DISPL=LOAD3-LOAD2\r
+\r
+                                ;ERROR EXIT FOR BAD HEADER WORDS\r
+\r
+        001000'                 LOAD4:  IFE K,<\r
+        001000' 306700  000400          CAIN    A,400           ;FORTRAN FOUR BLOCK\r
+        001001' 254000  002753'         JRST    F4LD>\r
+        001002' 265700  001610' LOAD4A:   JSP   A,ERRPT         ;INCORRECT HEADER WORD\r
+        001003' 515454  160046          SIXBIT    /ILL. FORMAT#/\r
+        001004' 576255  416403\r
+        001005' 254000  000042'         JRST    LD2\r
+\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 23\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                ;LOAD PROGRAMS AND DATA (BLOCK TYPE 1)\r
+\r
+        001006' 550440  000012  PROG:   HRRZ    V,W             ;LOAD BLOCK LENGTH\r
+        001007' 260740  001371'         PUSHJ     P,RWORD               ;READ BLOCK ORIGIN\r
+        001010' 270440  000012          ADD     V,W             ;COMPUTE NEW PROG. BREAK\r
+        001011' 307160  000002          CAIG    H,@X            ;COMPARE WITH PREV. PROG. BREAK\r
+        001012' 201160  000002          MOVEI     H,@X          ;UPDATE PROGRAM BREAK\r
+        001013' 603000  000200                  TLNE F,FULLSW\r
+        001014' 254000  001266'                 JRST FULLC      ;NO ERROR MESSAGE\r
+        001015' 303144  000001          CAILE H,1(S)  ; SKIP IF SUFFICIENT CORE AVAILABLE\r
+                                IFN EXPAND,<    JRST    [PUSHJ P,XPAND>\r
+                                                        JRST FULLC\r
+        001016' 254000  004103' IFN EXPAND,<            JRST .-1]>\r
+        001017' 200440  000012          MOVE    V,W\r
+        001020' 260740  001371' PROG1:  PUSHJ     P,RWORD               ;READ DATA WORD\r
+        001021' 202520  000002          MOVEM     W,@X          ;STORE DATA WORD IN PROG. AT LLC\r
+        001022' 344440  001020'         AOJA    V,PROG1         ;ADD ONE TO LOADER LOC. COUNTER\r
+\r
+                                ;LOAD SYMBOLS (BLOCK TYPE 2)\r
+\r
+        001023' 260740  001363' SYM:    PUSHJ     P,PRWORD              ;READ TWO DATA WORDS\r
+        001024' 260740  001026'         PUSHJ   P,SYMPT;                PUT INTO TABLE\r
+        001025' 254000  001023'         JRST    SYM\r
+\r
+                                ; WFW SYMPT:    JUMPL   C,SYM3;         JUMP IF GLOBAL REQUEST\r
+        001026' 603540  200000  SYMPT:  TLNE C,200000   ;GLOBAL REQUEST? WFW\r
+        001027' 321540  001106'         JUMPL C,SYM3    ;CHECK FOR 60 NOT JUST HIGH BIT WFW\r
+        001030' 603540  100000          TLNE    C,100000\r
+        001031' 254000  001053'         JRST    SYM1A           ;LOCAL SYMBOL\r
+        001032' 260740  001353'         PUSHJ     P,SREQ                ;GLOBAL DEF., SEARCH FOR REQUEST\r
+        001033' 254000  001070'         JRST    SYM2            ;REQUEST MATCHES\r
+        001034' 260740  001355'         PUSHJ     P,SDEF                ;SEARCH FOR MULTIPLE DEFINITIONS\r
+        001035' 254000  001037'         JRST    SYM1            ;MULTIPLY DEFINED GLOBAL\r
+        001036' 254000  001055'         JRST    SYM1B\r
+\r
+                                ;       PROCESS MULTIPLY DEFINED GLOBAL\r
+\r
+        001037' 316516  000002  SYM1:   CAMN    W,2(A)          ;COMPARE NEW AND OLD VALUE\r
+        001040' 263740  000000          POPJ    P,;\r
+        001041' 350000  001761'         AOS     MDG             ;COUNT MULTIPLY DEFINED GLOBALS\r
+        001042' 260740  001701'         PUSHJ   P,PRQ           ;START W/ ?\r
+        001043' 260740  001534'         PUSHJ     P,PRNAM               ;PRINT SYMBOL AND VALUE\r
+        001044' 200516  000002          MOVE    W,2(A)          ;LOAD OLD VALUE\r
+        001045' 260740  001535'         PUSHJ     P,PRNUM               ;PRINT OLD VALUE\r
+        001046' 265700  001667'         JSP     A,ERRPT7                ;PRINT MESSAGE\r
+        001047' 556554  160044          SIXBIT    /MUL. DEF. GLOBAL#/\r
+        001050' 454616  004754\r
+        001051' 574241  540300\r
+        001052' 263740  000000          POPJ    P,;     IGNORE MUL. DEF. GLOBAL SYM\r
+\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 24\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                ;       LOCAL SYMBOL\r
+\r
+        001053' 607000  041000  SYM1A:  TLNN    F,SYMSW+DSYMSW  ;SKIP IF LOAD LOCALS SWITCH ON\r
+        001054' 263740  000000          POPJ    P,;             IGNORE LOCAL SYMBOLS\r
+        001055' 301144  000000  SYM1B:  CAIL    H,(S)           ;STORE DEFINED SYMBOL\r
+        001056' 260740  000452' IFN EXPAND,<    PUSHJ P,XPAND7>\r
+                                IFE EXPAND,<    JRST SFULLC>\r
+        001057'                 SYM1C:  IFE K,<\r
+        001057' 603040  000010          TLNE    N,F4SW;         FORTRAN FOUR REQUIRES A BLT\r
+        001060' 260740  001234'         PUSHJ   P,MVDWN;        OF THE TABLES>\r
+        001061' 201704  777776          MOVEI A,-2(S)   ;LOAD A TO SAVE INST. AT SYM2\r
+        001062' 275200  000002  SYM1D:  SUBI    S,2;            UPDATE UNDEFINED POINTER\r
+        001063' 262316  000002          POP     B,2(A)          ;MOVE UNDEFINED VALUE POINTER\r
+        001064' 262316  000001          POP     B,1(A)          ;MOVE UNDEFINED SYMBOL\r
+        001065' 202506  000002          MOVEM     W,2(B)                ;STORE VALUE\r
+        001066' 202546  000001          MOVEM     C,1(B)                ;STORE SYMBOL\r
+        001067' 263740  000000          POPJ    P,;\r
+\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 25\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                ;       GLOBAL DEFINITION MATCHES REQUEST\r
+\r
+        001070' 261740  001100' SYM2:   PUSH P,SYM2C    ;NEXT MUST BE A SUBROUTINE FOR LATER. SET RETURN\r
+        001071' 200456  000002  SYM2B:  MOVE    V,2(A)          ;LOAD REQUEST POINTER\r
+        001072' 260740  001344'         PUSHJ P,REMSYM\r
+        001073' 321440  001221'         JUMPL V,SYM2W   ;ADDITIVE REQUEST? WFW\r
+        001074' 260740  001232'         PUSHJ     P,SYM4A               ;REPLACE CHAIN WITH DEFINITION\r
+                                ;WFW PATCH TO LOOK FOR MORE THAN ONE REQUEST\r
+        001075' 260740  001353' SYM2W1: PUSHJ P,SREQ    ;LOOK FOR MORE REQUESTS FOR THIS SYMBOL\r
+        001076' 254000  001071'         JRST SYM2B      ;FOUND MORE\r
+        001077' 200700  001101'         MOVE A,SVA      ;RESTORE A\r
+                                ;END OF PATCH WFW\r
+        001100' 263740  001062' SYM2C:  POPJ P,SYM1D    ;RETURN, SEE SYM2 FOR USE OF ADDRESS\r
+        001101' 000000  000000  SVA:    0       ;A TEMP CELL WFW\r
+\r
+                                ;       REQUEST MATCHES GLOBAL DEFINITION\r
+\r
+        001102' 200440  000012  SYM2A:  MOVE    V,W             ;LOAD POINTER TO CHAIN\r
+        001103' 200516  000002          MOVE    W,2(A)          ;LOAD VALUE\r
+        001104' 321440  001152'         JUMPL V,FIXWP   ;HANDLE ATTITIVE REQUEST WFW\r
+        001105' 254000  001232'         JRST    SYM4A;          REPLACE CHAIN WITH DEFINITION\r
+\r
+                                ;       PROCESS GLOBAL REQUEST\r
+\r
+        001106' 603540  040000  SYM3:   TLNE    C,040000;               COMMON NAME\r
+        001107' 254000  001055'         JRST    SYM1B\r
+        001110' 641540  640000          TLC     C,640000;               PERMUTE BITS FROM 60 TO 04\r
+        001111' 260740  001355'         PUSHJ     P,SDEF                ;SEARCH FOR GLOBAL DEFINITION\r
+        001112' 254000  001102'         JRST    SYM2A           ;MATCHING GLOBAL DEFINITION\r
+        001113' 321500  001116'         JUMPL W,SYM3X1  ;ADDITIVE FIXUP WFW\r
+        001114' 260740  001353'         PUSHJ     P,SREQ                ;SEARCH FOR EXISTING REQUEST WFW\r
+        001115' 254000  001137'         JRST    SYM3A           ;EXISTING REQUEST FOUND WFW\r
+        001116' 607500  100000  SYM3X1: TLNN W,100000   ;CHECK SYMBOL TABLE FIXUP\r
+        001117' 254000  001127'         JRST SYM3X2     ;NO\r
+        001120' 200446  000001          MOVE V,1(B)     ;MUST BE LAST SYMBOL DEFINED. GET SYMBOL\r
+        001121' 430440  000012          XOR V,W         ;CHECK FOR IDENTITY\r
+        001122' 612440  004106'         TDNE V,[XWD 77777,-1]   ;BUT IGNORE HIGH 3 BITS\r
+        001123' 263740  000000          POPJ P,         ;NOT SAME, ASSUME NOT LOADED LOCAL\r
+        001124' 541506  000002          HRRI W,2(B)     ;GET LOCATION IN RIGHT HALF\r
+        001125' 661500  000001          TLO W,1\r
+        001126' 274500  000377*         SUB W,JOBREL    ;AND MAKE RELATIVE\r
+        001127' 301144  000000  SYM3X2: CAIL    H,(S)           ;STORE REQUEST IN UNDEF. TABLE WFW\r
+        001130' 260740  000452' IFN EXPAND,<    PUSHJ P,XPAND7>\r
+                                IFE EXPAND,<    JRST SFULLC>\r
+        001131'                 SYM3X:  IFE K,<\r
+        001131' 603040  000010          TLNE    N,F4SW;         FORTRAN FOUR\r
+        001132' 260740  001234'         PUSHJ   P,MVDWN;                ADJUST TABLES IF F4>\r
+        001133' 274200  001753'         SUB     S,SE3           ;ADVANCE UNDEFINED POINTER\r
+        001134' 202504  000002          MOVEM     W,2(S)                ;STORE UNDEFINED VALUE POINTER\r
+        001135' 202544  000001          MOVEM     C,1(S)                ;STORE UNDEFINED SYMBOL\r
+        001136' 263740  000000          POPJ    P,;\r
+\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 26\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+\r
+                                ;       COMBINE TWO REQUEST CHAINS\r
+\r
+        001137' 331016  000002  SYM3A:  SKIPL 2(A)      ;IS IT ADDITIVE WFW\r
+        001140' 254000  001144'         JRST SYM3A1     ;NO, PROCESS WFW\r
+        001141' 260740  001360'         PUSHJ P,SDEF2   ;YES, CONTINUE WFW\r
+        001142' 254000  001137'         JRST SYM3A      ;FOUND ANOTHER WFW\r
+        001143' 254000  001127'         JRST SYM3X2     ;REALLY NO CHAIN THERE WFW\r
+        001144' 275702  777776  SYM3A1: SUBI A,-2(X)  ;A=A-(-2+X(18-35)); A RELATIVE TO X WFW\r
+        001145' 550440  000016  SYM3B:  HRRZ V,A       ; SAVE CHAIN ADDRESS FOR HRRM W,@X\r
+        001146' 550720  000002          HRRZ A,@X ; LOAD NEXT ADDRESS IN CHAIN\r
+        001147' 326700  001145'         JUMPN A,SYM3B  ; JUMP IF NOT THE LAST ADDR. IN CHAIN\r
+        001150' 542520  000002          HRRM    W,@X            ;COMBINE CHAINS\r
+        001151' 263740  000000          POPJ    P,;\r
+\r
+                                ;WFW PATCH FOR ADDITIVE GLOBAL REQUESTS\r
+\r
+        001152' 607440  100000  FIXWP:  TLNN V,100000   ;CHECK FOR SYMBOL TABLE FIXUP\r
+        001153' 254000  001162'         JRST FIXW\r
+        001154' 200406  000001          MOVE T,1(B)     ;SYMBOL FIXUP, MUST BE LAST SYMBOL DEFINED\r
+        001155' 430400  000011          XOR T,V         ;CHECK FOR SAME\r
+        001156' 612400  004106'         TDNE T,[XWD 77777,-1]   ;EXCEPT FOR HEGH CODE BITS\r
+        001157' 263740  000000          POPJ P,         ;ASSUME NON-LOADED LOCAL\r
+        001160' 541446  000002          HRRI V,2(B)     ;GET LOCATION\r
+        001161' 275442  000000          SUBI V,(X)      ;SO WE CAN USE @X\r
+        001162' 603440  200000  FIXW:   TLNE V,200000   ;IS IT LEFT HALF\r
+        001163' 254000  001171'         JRST FIXWL\r
+        001164' 200420  000002          MOVE T,@X       ;GET WORD\r
+        001165' 270400  000012          ADD T,W         ;VALUE OF GLOBAL\r
+        001166' 542420  000002          HRRM T,@X       ;FIX WITHOUT CARRY\r
+        001167' 205340  200000          MOVSI D,200000  ;SET UP TO REMOVE DEFERED INTERNAL IF THERE\r
+        001170' 254000  001174'         JRST SYMFIX\r
+        001171' 514400  000012  FIXWL:  HRLZ    T,W             ;UPDATE VALUE OF LEFT HALF\r
+        001172' 272420  000002          ADDM    T,@X            ;BY VALUE OF GLOBAL\r
+        001173' 205340  400000          MOVSI D,400000  ;LEFT DEFERED INTERNAL\r
+        001174' 607440  100000  SYMFIX: TLNN V,100000   ;CHECK FOR SYMBOL TABLE FIXUP\r
+        001175' 263740  000000          POPJ P,         ;NO, RETURN\r
+        001176' 271442  000000          ADDI V,(X)      ;GET THE LOCATION\r
+        001177' 200411  777777          MOVE T,-1(V)    ;GET THE SYMBOL NAME\r
+        001200' 607400  040000          TLNN T,40000    ;CHECK TO SEE IF INTERNAL\r
+        001201' 263740  000000          POPJ P,         ;NO, LEAVE\r
+        001202' 413351  777777          ANDCAB D,-1(V)  ;REMOVE PROPER BIT\r
+        001203' 603340  600000          TLNE D,600000   ;IS IT STILL DEFERED?\r
+        001204' 263740  000000          POPJ P,         ;YES, ALL DONE\r
+        001205' 250540  000007          EXCH C,D        ;NO, CHECK FOR A REQUEST FOR IT\r
+        001206' 260740  001353'         PUSHJ P,SREQ\r
+        001207' 254000  001212'         JRST CHNSYM     ;YES, WILL HAVE TO CALL THE FIXUP ROUTINE\r
+        001210' 200540  000007          MOVE C,D        ;GET C BACK\r
+        001211' 263740  000000          POPJ P,\r
+        001212' 261740  000007  CHNSYM: PUSH P,D        ;HAS THE OLD C IN IT\r
+        001213' 261740  000012          PUSH P,W        ;WE MAY NEED IT LATER\r
+        001214' 200511  000000          MOVE W,(V)      ;GET VALUE\r
+        001215' 260740  001071'         PUSHJ P,SYM2B   ;CALL THE FOUND GLOBAL TO MATCH REQUEST ROUTINE\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 26-1\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+        001216' 262740  000012          POP P,W\r
+        001217' 262740  000013          POP P,C         ;RESTORE FOR CALLER\r
+        001220' 263740  000000          POPJ P,         ;AND GO AWAY\r
+\r
+        001221' 607440  100000  SYM2W:  TLNN V,100000   ;SYMBOL TABLE?\r
+        001222' 254000  001225'         JRST SYM2WA\r
+        001223' 270440  001126*         ADD V,JOBREL    ;MAKE ABSOLUTE\r
+        001224' 275442  000000          SUBI V,(X)      ;GET READY TO ADD X\r
+        001225' 260740  001162'         SYM2WA: PUSHJ P,FIXW    ;DO FIXUP\r
+        001226' 254000  001075'         JRST SYM2W1     ;AND LOOK FOR MORE REQUESTS\r
+\r
+                                ;END WFW PATCH\r
+\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 27\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                ;PATCH VALUES INTO CHAINED REQUEST\r
+        001227'                 SYM4:\r
+        001227' 550420  000002          HRRZ    T,@X            ;LOAD NEXT ADDRESS IN CHAIN\r
+        001230' 542520  000002          HRRM    W,@X            ;INSERT VALUE INTO PROGRAM\r
+        001231' 200440  000010          MOVE    V,T\r
+        001232' 326440  001227' SYM4A:  JUMPN     V,SYM4                ;JUMP IF NOT LAST ADDR. IN CHAIN\r
+        001233' 263740  000000          POPJ    P,\r
+\r
+                                IFE     K,<\r
+        001234' 550400  003402' MVDWN:  HRRZ T,MLTP\r
+        001235' 275400  000002  IFN EXPAND,<    SUBI T,2>\r
+        001236' 307420  000002          CAIG    T,@X;           ANY ROOM LEFT?\r
+                                IFN EXPAND,<    JRST    [PUSHJ P,XPAND>\r
+                                                        TLOA F,FULLSW\r
+                                IFN EXPAND,<            JRST MVDWN\r
+        001237' 254000  004107'                         JRST .+2]>\r
+        001240' 603000  000204          TLNE    F,SKIPSW+FULLSW\r
+        001241' 254000  001256'         JRST    MVABRT; ABORT BLT\r
+        001242' 571400  777776          HRREI   T,-2\r
+        001243' 272400  003401'         ADDM    T,PLTP;         ADJUST PROGRAMMER LABEL POINTER\r
+        001244' 272400  003377'         ADDM    T,BITP;         AND BIT TABLE POINTER\r
+        001245' 272400  003404'         ADDM    T,SDSTP;        FIRST DATA STATEMENT\r
+        001246' 272400  004174'         ADDM    T,LTC\r
+        001247' 272400  004175'         ADDM    T,ITC\r
+        001250' 603040  000040          TLNE    N,SYDAT\r
+        001251' 272400  000011          ADDM    T,V\r
+        001252' 273400  003402'         ADDB    T,MLTP;         AND FINALLY TO MADE LABEL TABLE\r
+        001253' 507000  000010          HRLS    T;              SET UP BLT POINTER\r
+        001254' 270400  004113'         ADD     T,[XWD 2,0]\r
+        001255' 251404  000000          BLT     T,(S)\r
+        001256' 263740  000000  MVABRT: POPJ    P,;\r
+                                >\r
+                                ;HIGHEST RELOCATABLE POINT (BLOCK TYPE 4)\r
+        001257' 663000  000200  SFULLC: TLOE    F,FULLSW        ;PREVIOUS OVERFLOW?\r
+        001260' 254000  001266'         JRST    FULLC           ;YES, DON'T PRINT MESSAGE\r
+        001261' 265700  001610'         JSP     A,ERRPT         ;NO, COMPLAIN ABT OVERFLO\r
+        001262' 637155  425754          SIXBIT  ?SYMBOL TABLE OVERLAP#?\r
+        001263' 006441  425445\r
+        001264' 005766  456254\r
+        001265' 416003  000000\r
+        001266' 661000  000200  FULLC:  TLO     F,FULLSW        ;CORE OVERLAP ERROR RETURN\r
+        001267' 603040  000010  IFE K,< TLNE    N,F4SW\r
+        001270' 263740  000000          POPJ    P,>\r
+        001271' 254000  000701'         JRST    LIB3            ;LOOK FOR MORE\r
+\r
+        001272' 302700  000004  HIGH0:  CAIE A,4  ; TEST FOR END BLOCK (OVERLAP)\r
+        001273' 254000  000701'         JRST    LIB3\r
+        001274' 260740  001363' HIGH:   PUSHJ     P,PRWORD              ;READ TWO DATA WORDS\r
+        001275' 540240  000013          HRR     R,C             ;SET NEW PROGRAM BREAK\r
+        001276' 271540  000002          ADDI    C,X;    BE SURE TO RELOCATE\r
+        001277' 303544  000001          CAILE   C,1(S)          ;TEST PROGRAM BREAK\r
+                                IFN EXPAND,<PUSHJ P,[   PUSHJ P,XPAND\r
+                                                        TLOA F,FULLSW\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 27-1\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                                        JRST POPJM2\r
+        001300' 260740  004114'                         POPJ    P,]>\r
+                                IFE EXPAND,<TLO F,FULLSW>\r
+        001301' 201700  002022' HIGH3:  MOVEI   A,F.C           ;SAVE CURRENT STATE OF LOADER\r
+        001302' 251700  002030'         BLT     A,B.C\r
+        001303' 603000  004400          TLNE    F,SLIBSW+LIBSW  ;NORMAL MODE EXIT THROUGH LOAD1\r
+        001304' 254000  000666'         JRST    LIB             ;LIBRARY SEARCH EXIT\r
+        001305' 254000  000754'         JRST LOAD1\r
+\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 28\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                ;STARTING ADDRESS (BLOCK TYPE 7)\r
+\r
+        001306' 260740  001363' START:  PUSHJ     P,PRWORD              ;READ TWO DATA WORDS\r
+        001307' 607040  000002          TLNN    N,ISAFLG                ;SKIP IF IGNORE SA FLAG ON\r
+        001310' 540000  000013          HRR     F,C             ;SET STARTING ADDRESS\r
+\r
+                                ;PROGRAM NAME (BLOCK TYPE 6)\r
+\r
+        001311' 260740  001363' NAME:   PUSHJ     P,PRWORD              ;READ TWO DATA WORDS\r
+        001312' 663040  000004          TLOE    N,COMFLG                ;SKIP IF COMMON NOT PREV. SET\r
+        001313' 254000  001317'         JRST    NAME1           ;SIZE OF COMMON PREV. SET\r
+        001314' 202500  001760'         MOVEM     W,COMSAV              ;STORE LENGTH OF COMMON\r
+        001315' 322500  001330'         JUMPE     W,NAME2               ;JUMP IF NO COMMON IN THIS JOB\r
+        001316' 541260  000005          HRRI    R,@R            ;FIRST PROGRAM SET LOAD ORIGIN\r
+        001317' 303144  777777  NAME1:  CAILE H,-1(S)           ;TEST FOR AVAIL. SYMBOL SPACE\r
+        001320' 260740  000452' IFN EXPAND,<    PUSHJ P,XPAND7>\r
+                                IFE EXPAND,<    JRST SFULLC>\r
+        001321' 275200  000002          SUBI    S,2             ;UPDATE UNDEF. TABLE POINTER\r
+        001322' 262304  000002          POP     B,2(S)\r
+        001323' 262304  000001          POP     B,1(S)\r
+        001324' 550440  000001          HRRZ    V,N             ;POINTER TO PREVIOUS NAME\r
+        001325' 276300  000011          SUBM    B,V             ;COMPUTE RELATIVE POSITIONS\r
+        001326' 506441  000002          HRLM    V,2(N)          ;STORE FORWARD POINTER\r
+        001327' 540040  000006          HRR     N,B             ;UPDATE NAME POINTER\r
+        001330' 202546  000001  NAME2:  MOVEM     C,1(B)                ;STORE PROGRAM NAME\r
+        001331' 552246  000002          HRRZM   R,2(B)          ;STORE PROGRAM ORIGIN\r
+        001332' 317500  001760'         CAMG    W,COMSAV                ;CHECK COMMON SIZE\r
+        001333' 254000  000701'         JRST    LIB3            ;COMMON OK\r
+        001334' 265700  001610' ILC:    JSP     A,ERRPT\r
+        001335' 515454  160043          SIXBIT    /ILL. COMMON#/\r
+        001336' 575555  575603\r
+        001337' 254000  000042'         JRST    LD2\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 29\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+\r
+                                ;ONE PASS LOCAL DEFINITION (BLOCK TYPE 10)\r
+\r
+                                                        ;PMP PATCH FOR LEFT HALF FIXUPS\r
+                                                        ;END PMP PATCH\r
+        001340' 260740  001371' LOCD:   PUSHJ     P,RWORD               ;READ ONE DATA WORD\r
+        001341' 554440  000012          HLRZ    V,W             ;STORAGE POINTER IN LEFT HALF\r
+        001342' 260740  001232'         PUSHJ     P,SYM4A               ;LINK BACK REFERENCES\r
+        001343' 254000  001340'         JRST    LOCD\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 30\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
\r
+        001344' 200404  000001  REMSYM: MOVE T,1(S)\r
+        001345' 202416  000001          MOVEM T,1(A)\r
+        001346' 200404  000002          MOVE T,2(S)\r
+        001347' 202416  000002          MOVEM T,2(A)\r
+        001350' 270200  001753'         ADD S,SE3\r
+        001351' 202700  001101'         MOVEM A,SVA\r
+        001352' 263740  000000          POPJ P,\r
+\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 31\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                ;SYMBOL TABLE SEARCH SUBROUTINES\r
+\r
+                                ;       ENTERED WITH SYMBOL IN C\r
+                                ;       RETURN IS WITH POINTER IN A IF MATCHING SYMBOL FOUND\r
+                                ;       OTHERWISE, A SKIP ON RETURN OCCURS\r
+\r
+        001353' 325200  003423' SREQ:   JUMPGE    S,CPOPJ1              ;JUMP IF NO UNDEF. SYMBOLS\r
+        001354' 334700  000004          SKIPA     A,S           ;LOAD REQUEST SEARCH POINTER\r
+        001355' 200700  000006  SDEF:   MOVE    A,B             ;LOAD DEF. SYMBOL SEARCH POINTER\r
+        001356' 316556  000001  SDEF1:  CAMN    C,1(A)\r
+        001357' 263740  000000          POPJ    P,                      ;SYMBOLS MATCH, RETURN\r
+        001360' 270700  001753' SDEF2:  ADD     A,SE3\r
+        001361' 321700  001356'         JUMPL     A,SDEF1\r
+        001362' 254000  003423' IFE K,< JRST    CPOPJ1          ;SYMBOL NOT FOUND SKIPS ON RETURN>\r
+                                IFN K,<\r
+                                CPOPJ1: AOS     (P)             ;TRA 2,4\r
+                                        POPJ    P,              ;...>\r
+\r
+                                ;RELOCATION AND BLOCK INPUT\r
+\r
+        001363' 260740  001371' PRWORD:   PUSHJ     P,RWORD             ;READ A WORD PAIR\r
+        001364' 200540  000012          MOVE    C,W             ;LOAD C WITH FIRST DATA WORD\r
+        001365' 602600  377777          TRNE    E,377777                ;TEST FOR END OF BLOCK\r
+        001366' 254000  001373'         JRST    RWORD1          ;INPUT SECOND WORD OF PAIR\r
+        001367' 201500  000000          MOVEI     W,0           ;NO SECOND WORD, ASSUME ZERO\r
+        001370' 263740  000000          POPJ    P,\r
+\r
+        001371' 606600  377777  RWORD:  TRNN    E,377777                ;TEST FOR END OF BLOCK\r
+        001372' 254000  000754'         JRST    LOAD1           ;RETURN TO LOAD THE NEXT BLOCK\r
+        001373' 253600  001377' RWORD1:   AOBJN     E,RWORD2            ;JUMP IF DATA WORD NEXT\r
+        001374' 260740  001710'         PUSHJ     P,WORD                ;READ CONTROL WORD\r
+        001375' 200640  000012          MOVE    Q,W             ;DON'T COUNT RELOCATION WORDS\r
+        001376' 505600  777756          HRLI    E,-22           ;SET RELOCATION WORD BYTE COUNT\r
+        001377' 260740  001710' RWORD2:   PUSHJ     P,WORD              ;READ INPUT WORD\r
+        001400' 325640  001403'         JUMPGE    Q,RWORD3              ;TEST LH RELOCATION BIT\r
+        001401' 514400  000005          HRLZ    T,R\r
+        001402' 270500  000010          ADD     W,T             ;LH RELOCATION\r
+        001403' 603640  200000  RWORD3:   TLNE  Q,200000                ;TEST RH RELOCATION BIT\r
+        001404' 541520  000005          HRRI    W,@R            ;RH RELOCATION\r
+        001405' 242640  000002          LSH     Q,2\r
+        001406' 263740  000000          POPJ    P,\r
+\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 32\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                ;PRINT STORAGE MAP SUBROUTINE\r
+\r
+        001407' 260740  000746' PRMAP:  PUSHJ   P,FSCN1 ;LOAD OTHER FILES FIRST\r
+        001410' 260740  001726'         PUSHJ   P,CRLFLF        ;START NEW PAGE\r
+        001411' 550500  000005          HRRZ    W,R\r
+        001412' 260740  001536'         PUSHJ     P,PRNUM0\r
+        001413' 265700  001667'         JSP     A,ERRPT7\r
+        001414' 516300  645045          SIXBIT  ?IS THE PROGRAM BREAK@?\r
+        001415' 006062  574762\r
+        001416' 415500  426245\r
+        001417' 415340  000000\r
+        001420' 260740  001730'         PUSHJ   P,CRLF          ;START STORAGE MAP\r
+        001421' 265700  001613'         JSP     A,ERRPT0        ;PRINT HEADER\r
+        001422' 636457  624147          SIXBIT  ?STORAGE MAP@?\r
+        001423' 450055  416040\r
+        001424' 574700  000006          HLRE    A,B\r
+        001425' 213000  000016          MOVNS     A\r
+        001426' 271706  000000          ADDI    A,(B)\r
+        001427' 275700  000002  PRMAP1:   SUBI  A,2\r
+        001430' 331556  000001          SKIPL     C,1(A)                ;LOAD SYMBOL, SKIP IF DELETED\r
+        001431' 603540  300000          TLNE    C,300000                ;TEST FOR LOCAL SYMBOL\r
+        001432' 254000  001456'         JRST    PRMAP4          ;IGNORE LOCAL SYMBOLS\r
+        001433' 607540  040000          TLNN    C,040000\r
+        001434' 260740  001730'         PUSHJ     P,CRLF                ;PROGRAM NAME\r
+        001435' 260740  001533'         PUSHJ     P,PRNAM1              ;PRINT SYMBOL AND VALUE\r
+        001436' 603540  040000          TLNE    C,040000\r
+        001437' 254000  001455'         JRST    PRMAP3          ;GLOBAL SYMBOL\r
+        001440' 574540  000012          HLRE    C,W             ;POINTER TO NEXT PROG. NAME\r
+        001441' 325540  001444'         JUMPGE    C,PRMAP2              ;JUMP IF LAST PROGRAM NAME\r
+        001442' 271556  000002          ADDI    C,2(A)          ;COMPUTE LOC. OF FOLLOWING NAME\r
+        001443' 334420  000013          SKIPA     T,@C          ;LOAD ORIGIN OF FOLLOWING PROG.\r
+        001444' 550400  000005  PRMAP2:   HRRZ  T,R             ;LOAD PROGRAM BREAK\r
+        001445' 276400  000012          SUBM    T,W             ;SUBTRACT ORIGIN TO GET LENGTH\r
+        001446' 260740  001535'         PUSHJ     P,PRNUM               ;PRINT PROGRAM LENGTH\r
+        001447' 260740  001730'         PUSHJ     P,CRLF\r
+        001450' 607040  000001          TLNN    N,ALLFLG                ;SKIP IF LIST ALL MODE IS ON\r
+        001451' 602500  777777          TRNE    W,777777                ;SKIP IF ZERO LENGTH PROGRAM\r
+        001452' 254000  001455'         JRST    PRMAP3\r
+        001453' 322540  001460'         JUMPE     C,PRMAP5              ;JUMP IF LAST PROGRAM\r
+        001454' 334700  000013          SKIPA     A,C           ;SKIP GLOBALS, ZERO LENGTH PROG.\r
+        001455' 260740  001730' PRMAP3:   PUSHJ     P,CRLF\r
+        001456' 303706  000000  PRMAP4:   CAILE     A,(B)               ;TEST FOR END OF SYMBOL TABLE\r
+        001457' 254000  001427'         JRST    PRMAP1\r
+        001460'                 PRMAP5:\r
+\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 33\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                ;LIST UNDEFINED GLOBALS\r
+\r
+        001460' 260740  000746' PMS:    PUSHJ   P,FSCN1 ;LOAD FILES FIRST\r
+        001461' 325200  001504'         JUMPGE  S,PMS3          ;JUMP IF NO UNDEFINED GLOBALS\r
+        001462' 523000  000042          HLLOS 42                ;SET SOME ERROR TO ABORT EXECUTION\r
+        001463' 260740  001727'         PUSHJ   P,FCRLF         ;START THE MESSAGE\r
+        001464' 260740  001701'         PUSHJ   P,PRQ           ;PRINT ?\r
+        001465' 574500  000004          HLRE    W,S             ;COMPUTE NO. OF UNDEF. GLOBALS\r
+        001466' 217000  000012          MOVMS     W\r
+        001467' 242500  777777          LSH     W,-1            ;<LENGTH OF LIST>/2\r
+        001470' 260740  001536'         PUSHJ     P,PRNUM0\r
+        001471' 265700  001667'         JSP     A,ERRPT7\r
+        001472' 655644  454651          SIXBIT    /UNDEFINED GLOBALS@/\r
+        001473' 564544  004754\r
+        001474' 574241  546340\r
+        001475' 200700  000004          MOVE    A,S             ;LOAD UNDEF. POINTER\r
+        001476' 260740  001730' PMS2:   PUSHJ     P,CRLF\r
+        001477' 260740  001701'         PUSHJ   P,PRQ           ;PRINT ?\r
+        001500' 260740  001532'         PUSHJ     P,PRNAM0              ;PRINT SYMBOL AND POINTER\r
+        001501' 270700  001753'         ADD     A,SE3\r
+        001502' 321700  001476'         JUMPL     A,PMS2\r
+        001503' 260740  001730'         PUSHJ   P,CRLF          ;SPACE AFTER LISTING\r
+\r
+                                ;LIST NUMBER OF MULTIPLY DEFINED GLOBALS\r
+\r
+        001504' 336500  001761' PMS3:   SKIPN   W,MDG           ;ANY MULTIPLY DEFINED GLOBALS\r
+        001505' 254000  001520'         JRST    PMS4            ;NO, EXCELSIOR\r
+        001506' 523000  000042          HLLOS 42                ;ANOTHER WAY TO LOSE\r
+        001507' 260740  001727'         PUSHJ   P,FCRLF         ;ROOM AT THE TOP\r
+        001510' 260740  001701'         PUSHJ   P,PRQ           ;PRINT ?\r
+        001511' 260740  001536'         PUSHJ   P,PRNUM0        ;NUMBER OF MULTIPLES\r
+        001512' 265700  001667'         JSP     A,ERRPT7        ;REST OF MESSAGE\r
+        001513' 556554  645160          SIXBIT  ?MULTIPLY DEFINED GLOBALS@?\r
+        001514' 547100  444546\r
+        001515' 515645  440047\r
+        001516' 545742  415463\r
+        001517' 400000  000000\r
+        001520' 603040  040000  PMS4:   TLNE    N,AUXSWE        ;AUXILIARY OUTPUT DEVICE?\r
+        001521' 067100  000000          OUTPUT  2,              ;INSURE A COMPLETE BUFFER\r
+        001522' 263740  000000          POPJ    P,              ;RETURN\r
+\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 34\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                ;ENTER FILE ON AUXILIARY OUTPUT DEVICE\r
+\r
+        001523' 077100  002060' IAD2:   ENTER   2,DTOUT         ;WRITE FILE NAME IN DIRECTORY\r
+        001524' 254000  001526'         JRST    IMD3            ;NO MORE DIRECTORY SPACE\r
+        001525' 263740  000000          POPJ    P,\r
+\r
+        001526' 265700  001610' IMD3:   JSP     A,ERRPT         ;DIRECTORY FULL ERROR\r
+        001527' 445162  160046          SIXBIT    /DIR. FULL@/\r
+        001530' 655454  400000\r
+        001531' 254000  000042'         JRST    LD2\r
+\r
+                                ;PRINT THE 6 DIGIT OCTAL ADDRESS IN W\r
+\r
+                                ;       ACCUMULATORS USED: D,T,V\r
+\r
+        001532' 200556  000001  PRNAM0:   MOVE  C,1(A)          ;LOAD SYMBOL\r
+        001533' 200516  000002  PRNAM1:   MOVE  W,2(A)          ;LOAD VALUE\r
+        001534' 260740  001561' PRNAM:  PUSHJ     P,PRNAME\r
+        001535' 260740  001555' PRNUM:  PUSHJ     P,SPACES\r
+        001536' 200440  001545' PRNUM0:   MOVE  V,PRNUM2                ;LOAD BYTE POINTER TO RH. OF W\r
+        001537' 211340  000006          MOVNI     D,6           ;LOAD CHAR. COUNT\r
+        001540' 134400  000011  PRNUM1:   ILDB  T,V             ;LOAD DIGIT TO BE OUTPUT\r
+        001541' 271400  000060          ADDI    T,60            ;CONVERT FROM BINARY TO ASCII\r
+        001542' 260740  001734'         PUSHJ     P,TYPE2\r
+        001543' 341340  001540'         AOJL    D,PRNUM1                ;JUMP IF MORE DIGITS REMAIN\r
+        001544' 263740  000000          POPJ    P,\r
+\r
+        001545' 220300  000012  PRNUM2:   XWD   220300,W\r
+\r
+                                ;YE OLDE RECURSIVE NUMBER PRINTER\r
+                                ;PRINTS Q, WITH LEADING ZEROES SUPPRESSED; USES A AND T\r
+\r
+        001546' 231640  000012  RCNUM:  IDIVI Q,12              ;RADIX DECIMAL\r
+        001547' 271700  000060          ADDI A,"0"\r
+        001550' 506717  000000          HRLM A,(P)\r
+        001551' 332000  000015          SKIPE Q\r
+        001552' 260740  001546'         PUSHJ P,RCNUM\r
+        001553' 554417  000000          HLRZ T,(P)\r
+        001554' 254000  001734'         JRST TYPE2\r
+\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 35\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                ;PRINT FOUR SPACES\r
+\r
+        001555' 260740  001556' SPACES:   PUSHJ     P,SP1\r
+        001556' 260740  001557' SP1:    PUSHJ     P,SPACE\r
+        001557' 201400  000040  SPACE:  MOVEI     T,40\r
+        001560' 254000  001734'         JRST    TYPE2\r
+\r
+                                ;SYMBOL PRINT - RADIX 50\r
+\r
+                                ;       ACCUMULATORS USED: D,T\r
+\r
+        001561' 200400  000013  PRNAME:   MOVE  T,C             ;LOAD SYMBOL\r
+        001562' 621400  740000          TLZ     T,740000                ;ZERO CODE BITS\r
+        001563' 211340  000006          MOVNI     D,6           ;LOAD CHAR. COUNT\r
+        001564' 231400  000050  SPT:    IDIVI     T,50          ;THE REMAINDER IS THE NEXT CHAR.\r
+        001565' 506457  000000          HRLM    V,(P)           ;STORE IN LH. OF PUSHDOWN LIST\r
+        001566' 355000  000007          AOSGE     D                     ;SKIP IF NO CHARS. REMAIN\r
+        001567' 260740  001564'         PUSHJ     P,SPT         ;RECURSIVE CALL FOR NEXT CHAR.\r
+        001570' 554417  000000          HLRZ    T,(P)           ;LOAD FROM LH. OF PUSHDOWN LIST\r
+        001571' 322400  001733'         JUMPE     T,TYPE                ;BLANK\r
+        001572' 271400  000057          ADDI    T,60-1\r
+        001573' 303400  000071          CAILE     T,71\r
+        001574' 271400  000007          ADDI    T,101-72\r
+        001575' 303400  000132          CAILE     T,132\r
+        001576' 275400  000070          SUBI    T,134-44\r
+        001577' 306400  000043          CAIN    T,43\r
+        001600' 201400  000056          MOVEI     T,56\r
+        001601' 254000  001734'         JRST    TYPE2\r
+                                ;PRINT A WORD OF SIXBIT CHARACTERS IN AC W\r
+\r
+                                ;       ACCUMULATORS USED: Q,T,D\r
+\r
+        001602' 211640  000006  PWORD:  MOVNI     Q,6           ;SET CHARACTER COUNT TO SIX\r
+        001603' 200340  001754' PWORD1:   MOVE  D,LSTPT         ;ENTER HERE WITH Q PRESET\r
+        001604' 134400  000007  PWORD2:   ILDB  T,D             ;LOAD NEXT CHAR. TO BE OUTPUT\r
+        001605' 260740  001733'         PUSHJ     P,TYPE                ;OUTPUT CHARACTER\r
+        001606' 341640  001604'         AOJL    Q,PWORD2\r
+        001607' 263740  000000          POPJ    P,\r
+\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 36\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                ;ERROR MESSAGE PRINT SUBROUTINE\r
+\r
+                                ;       FORM OF CALL:\r
+\r
+                                ;       JSP     A,ERRPT\r
+                                ;       SIXBIT    /<MESSAGE>/\r
+\r
+                                ;       ACCUMULATORS USED: T,V,C,W\r
+\r
+        001610' 661000  000020  ERRPT:  TLO     F,FCONSW        ;INSURE TTY OUTPUT\r
+        001611' 260740  001730'         PUSHJ   P,CRLF          ;ROOM AT THE TOP\r
+        001612' 260740  001701'         PUSHJ   P,PRQ           ;START OFF WITH ?\r
+        001613' 261740  000015  ERRPT0:   PUSH  P,Q             ;SAVE Q\r
+        001614' 334440  001652'         SKIPA     V,ERRPT5\r
+        001615' 260740  001733' ERRPT1:   PUSHJ     P,TYPE\r
+        001616' 134400  000011          ILDB    T,V\r
+        001617' 306400  000040          CAIN    T,40\r
+        001620' 254000  001645'         JRST    ERRPT4\r
+        001621' 306400  000005          CAIN    T,5\r
+        001622' 254000  001671'         JRST    ERRPT9\r
+        001623' 302400  000003          CAIE    T,3\r
+        001624' 254000  001615'         JRST    ERRPT1\r
+        001625' 336540  002054'         SKIPN     C,DTIN\r
+        001626' 254000  001645'         JRST    ERRPT4\r
+        001627' 211640  000014          MOVNI     Q,14\r
+        001630' 201500  000077          MOVEI     W,77\r
+        001631' 612540  000012  ERRPT2:   TDNE  C,W\r
+        001632' 254000  001635'         JRST    ERRPT3\r
+        001633' 242500  000006          LSH     W,6\r
+        001634' 341640  001631'         AOJL    Q,ERRPT2\r
+        001635' 200500  001653' ERRPT3:   MOVE  W,ERRPT6\r
+        001636' 260740  001603'         PUSHJ     P,PWORD1\r
+        001637' 336500  002055'         SKIPN     W,DTIN1\r
+        001640' 254000  001645'         JRST    ERRPT4\r
+        001641' 242500  777772          LSH     W,-6\r
+        001642' 661500  160000          TLO     W,160000\r
+        001643' 211640  000004          MOVNI     Q,4\r
+        001644' 260740  001603'         PUSHJ     P,PWORD1\r
+        001645' 260740  001730' ERRPT4:   PUSHJ     P,CRLF\r
+        001646' 262740  000015  ERRP41: POP     P,Q\r
+        001647' 621000  000020          TLZ     F,FCONSW        ;ONE ERROR PER CONSOLE\r
+        001650' 350000  000011          AOS     V               ;PROGRAM BUMMERS BEWARE:\r
+        001651' 254020  000011          JRST    @V              ;V HAS AN INDEX OF A\r
+\r
+        001652' 440616  000000  ERRPT5:   POINT     6,0(A)\r
+        001653' 004651  544500  ERRPT6:   SIXBIT    / FILE /\r
+\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 37\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+        001654' 661000  000020  ERRPT8: TLO     F,FCONSW        ;INSURE TTY OUTPUT\r
+        001655' 260740  001701'         PUSHJ   P,PRQ           ;START WITH ?\r
+        001656' 305400  000140          CAIGE   T,140           ;IS IT A NON-PRINTING CHAR?\r
+        001657' 301400  000040          CAIL    T,40\r
+        001660' 254000  001666'         JRST    ERRP8\r
+        001661' 261740  000010          PUSH    P,T\r
+        001662' 201400  000136          MOVEI     T,136         ;UP ARROW\r
+        001663' 260740  001734'         PUSHJ     P,TYPE2\r
+        001664' 262740  000010          POP     P,T\r
+        001665' 271400  000100          ADDI    T,100           ;CONVERT TO PRINTING CHAR.\r
+        001666' 260740  001734' ERRP8:  PUSHJ     P,TYPE2\r
+        001667' 260740  001557' ERRPT7:   PUSHJ     P,SPACE\r
+        001670' 254000  001613'         JRST    ERRPT0\r
+\r
+        001671' 201460  000011  ERRPT9:   MOVEI     V,@V\r
+        001672' 261740  000011          PUSH    P,V\r
+        001673' 265700  001667'         JSP     A,ERRPT7\r
+        001674' 515454  454741          SIXBIT  ?ILLEGAL -LOADER@?\r
+        001675' 540015  545741\r
+        001676' 444562  400000\r
+        001677' 262740  000011          POP     P,V\r
+        001700' 254000  001646'         JRST    ERRP41\r
+\r
+                                ;PRINT QUESTION MARK\r
+\r
+        001701' 261740  000010  PRQ:    PUSH    P,T             ;SAVE\r
+        001702' 201400  000077          MOVEI   T,"?"           ;PRINT ?\r
+        001703' 260740  001734'         PUSHJ   P,TYPE2         ;...\r
+        001704' 262740  000010          POP     P,T             ;RESTORE\r
+        001705' 263740  000000          POPJ    P,              ;RETURN\r
+\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 38\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                ;INPUT - OUTPUT INTERFACE\r
+\r
+                                ;BINARY INPUT SUBROUTINE - RETURNS A WORD IN W\r
+                                IFE K,<\r
+        001706' 260740  001710' WORDPR: PUSHJ   P,WORD          ;GET FIRST WORD OF PAIR\r
+        001707' 200540  000012          MOVE    C,W             ;KEEP IT HANDY>\r
+        001710' 377000  002053' WORD:   SOSG    BUFR2           ;SKIP IF BUFFER NOT EMPTY\r
+        001711' 254000  001714'         JRST    WORD2\r
+        001712' 134500  002052' WORD1:  ILDB    W,BUFR1         ;PICK UP 36 BIT WORD\r
+        001713' 263740  000000          POPJ    P,\r
+\r
+        001714' 066040  000000  WORD2:  INPUT     1,                    ;GET NEXT BUFFER LOAD\r
+        001715' 062040  000012          STATUS    1,W           ;GET DEVICE STATUS FROM MONITOR\r
+        001716' 602500  020000          TRNE    W,IODEND                ;TEST FOR EOF\r
+        001717' 254000  000725'         JRST    EOF             ;END OF FILE EXIT\r
+        001720' 606500  740000          TRNN    W,IOBAD         ;TEST FOR DATA ERROR\r
+        001721' 254000  001712'         JRST    WORD1           ;DATA OK - CONTINUE LOADING\r
+        001722' 265700  001610'         JSP     A,ERRPT         ;DATA ERROR - PRINT MESSAGE\r
+        001723' 515660  656400          SIXBIT    /INPUT ERROR#/\r
+        001724' 456262  576203\r
+        001725' 254000  000042'         JRST    LD2             ;GO TO ERROR RETURN\r
+                                ;TYPEOUT SUBROUTINE - THE CHARACTER SUPPLIED IN T IS CONVERTED TO ASCII\r
+                                ;AND IS OUTPUT ON THE CONSOLE AND/OR THE SPECIFIED LOADER MAP OUTPUT\r
+                                ;DEVICE\r
+\r
+        001726' 260740  001730' CRLFLF:   PUSHJ     P,CRLF\r
+        001727' 661000  000020  FCRLF:  TLO     F,FCONSW        ;INSURE TTY OUTPUT\r
+        001730' 201400  000015  CRLF:   MOVEI     T,15          ;CARRIAGE RETURN LINE FEED\r
+        001731' 260740  001734'         PUSHJ     P,TYPE2\r
+        001732' 201400  777752          MOVEI     T,12-40               ;LINE FEED IN PSEUDO SIXBIT\r
+        001733' 201410  000040  TYPE:   MOVEI     T,40(T)               ;CONVERT SIXBIT TO ASCII\r
+        001734' 607040  020000  TYPE2:  TLNN    N,AUXSWI        ;IS THER AN AUXILIARY DEVICE?\r
+        001735' 254000  001745'         JRST    TYPE3           ;NO, DONT OUTPUT TO IT\r
+        001736' 667040  040000          TLON    N,AUXSWE        ;IS AUX. DEV. ENTERED?\r
+        001737' 260740  001523'         PUSHJ   P,IAD2          ;NOPE, DO SO!\r
+        001740' 377000  002050'         SOSG    ABUF2           ;SPACE LEFT IN BUFFER?\r
+        001741' 067100  000000          OUTPUT  2,              ;CREATE A NEW BUFFER\r
+        001742' 136400  002047'         IDPB    T,ABUF1         ;DEPOSIT CHARACTER\r
+        001743' 607000  000020          TLNN    F,FCONSW        ;FORCE OUTPUT TO CONSOLE TOO?\r
+        001744' 263740  000000          POPJ    P,              ;NOPE\r
+        001745' 336000  002042' TYPE3:  SKIPN   BUFO2           ;END OF BUFFER\r
+        001746' 067140  000000          OUTPUT  3,              ;FORCE OUTPUT NOW\r
+        001747' 136400  002041'         IDPB    T,BUFO1         ;DEPOSIT CHARACTER\r
+        001750' 306400  000012          CAIN    T,12            ;END OF LINE\r
+        001751' 067140  000000          OUTPUT  3,              ;FORCE AN OUTPUT\r
+        001752' 263740  000000          POPJ    P,\r
+\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 39\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+        001753' 000002  000002  SE3:    XWD     2,2             ;SYMBOL POINTER INCREMENT\r
+        001754' 440600  000012  LSTPT:  POINT     6,W           ;CHARACTER POINTER TO W\r
+        001755' 777737  001761' PDLPT:  XWD     -41,PDLST-1;    INITIAL PUSHDOWN POINTER\r
+        001756' 034372  246575  COMM:   SQUOZE    0,.COMM.\r
+        001757' 000000  000000  PDSAV:  0                               ;SAVED PUSHDOWN POINTER\r
+        001760' 000000  000000  COMSAV:   0                             ;LENGTH OF COMMON\r
+        001761' 000000  000000  MDG:    0                       ;COUNTER FOR MUL DEF GLOBALS\r
+        001762'                 PDLST:  BLOCK   40\r
+\r
+        002022' 000000  000000  F.C:    0\r
+        002023' 000000  000000          0       ;STORE N HERE\r
+        002024' 000000  000000          0       ;STORE X HERE\r
+        002025' 000000  000000          0       ;STORE H HERE\r
+        002026' 000000  000000          0       ;STORE S HERE\r
+        002027' 000000  000000          0       ;STORE R HERE\r
+        002030' 000000  000000  B.C:    0\r
+        002031' 000000  000000  F.I:    0                       ;INITIAL F - FLAGS\r
+        002032' 000000  000000          0                       ;INITIAL N\r
+        002033' 000011  004203'         XWD     V,LDEND         ;INITIAL X - LOAD PROGRAM AFTER LOADER\r
+        002034' 000000  004343'         EXP     LDEND+JOBPRO    ;INITIAL H - INITIAL PROG BREAK\r
+        002035' 000000  000000          0                       ;INITIAL S\r
+        002036' 000012  000140          XWD     W,JOBPRO        ;INITIAL R - INITIAL RELOC\r
+        002037' 000000  000000          0                       ;INITIAL B\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 40\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                ;BUFFER HEADERS AND HEADER HEADERS\r
+\r
+        002040' 000000  000000  BUFO:   0                               ;CONSOLE INPUT HEADER HEADER\r
+        002041' 000000  000000  BUFO1:  0\r
+        002042' 000000  000000  BUFO2:  0\r
+\r
+        002043' 000000  000000  BUFI:   0                               ;CONSOLE OUTPUT HEADER HEADER\r
+        002044' 000000  000000  BUFI1:  0\r
+        002045' 000000  000000  BUFI2:  0\r
+\r
+        002046' 000000  000000  ABUF:   0                       ;AUXILIARY OUTPUT HEADER HEADER\r
+        002047' 000000  000000  ABUF1:  0\r
+        002050' 000000  000000  ABUF2:  0\r
+\r
+        002051' 000000  000000  BUFR:   0                               ;BINARY INPUT HEADER HEADER\r
+        002052' 000000  000000  BUFR1:  0\r
+        002053' 000000  000000  BUFR2:  0\r
+\r
+        002054' 000000  000000  DTIN:   0                               ;DECTAPE INPUT BLOCK\r
+        002055' 000000  000000  DTIN1:  0\r
+        002056' 000000  000000          0\r
+        002057' 000000  000000  DTIN2:  0\r
+\r
+        002060' 000000  000000  DTOUT:  0                               ;DECTAPE OUTPUT BLOCK\r
+        002061' 000000  000000  DTOUT1:   0\r
+        002062' 000000  000000          0\r
+        002063' 000000  000000          0\r
+\r
+                        000052          TTYL=52                 ;TWO TTY BUFFERS\r
+                        000406  IFE K,< BUFL=406                ;TWO DTA BUFFERS FOR LOAD>\r
+                                IFN K,< BUFL=203                ;ONE DTA BUFFER FOR LOAD>\r
+                        000203          ABUFL=203               ;ONE DTA BUFFER FOR AUX DEV\r
+        002064'                 TTY1:   BLOCK     TTYL          ;TTY BUFFER AREA\r
+        002136'                 BUF1:   BLOCK   BUFL            ;LOAD BUFFER AREA\r
+        002544'                 AUX:    BLOCK   ABUFL           ;AUX BUFFER AREA\r
+        002747'                 ZEROS:  REPEAT 4,<0>\r
+        002747' 000000  000000\r
+        002750' 000000  000000\r
+        002751' 000000  000000\r
+        002752' 000000  000000\r
+\r
+                                IFN RPGSW,<CTLIN:       BLOCK 3\r
+                                CTLNAM: BLOCK 3\r
+                                CTLBUF: BLOCK 203+1\r
+                                >\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 41\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                        040000  IOBKTL=40000\r
+                        400000  IOIMPM=400000\r
+                        200000          IODERR=200000\r
+                        100000          IODTER=100000\r
+                        020000          IODEND=20000\r
+\r
+                        740000  IOBAD=IODERR+IODTER+IOBKTL+IOIMPM\r
+\r
+                                        INTERN    PWORD,DTIN,DTOUT,LDEND\r
+                                        INTERN    WORD,LD,BEG,PDLST,LOAD\r
+                                        INTERN    CRLF,TYPE,PMS,PRMAP\r
+                                        INTERN    F,P,X,H,S,R,B,N,T,V,W,C,E,Q,A,D\r
+\r
+                                        EXTERN  JOBDDT,JOBFF,JOBSA,JOBREL,JOBSYM,JOBUSY,JOB41\r
+\r
+                                ;END HERE IF 1K LOADER REQUESTED.\r
+                                IFN K,  <LITS:  LIT\r
+                                        VAR\r
+                                LDEND:  END     LD\r
+                                >\r
+\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 42\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                ;HERE BEGINS FORTRAN FOUR LOADER\r
+\r
+        002753'                 F4LD:\r
+        002753' 550440  000005          HRRZ    V,R;            SET PROG BREAK INTO V\r
+        002754' 202440  003376'         MOVEM   V,LLC;          SAVE FIRST WORD ADDRESS\r
+        002755' 201504  777776          MOVEI   W,-2(S);        GENERATE TABLES\r
+        002756' 661040  000010          TLO     N,F4SW\r
+        002757' 552500  003402'         HRRZM   W,MLTP;         MADE LABELS\r
+        002760' 552500  003401'         HRRZM   W,PLTP;         PROGRAMMER LABELS\r
+        002761' 270500  004120'         ADD     W,[POINT 1,1];  GENERATE BIT-BYTE POINTER\r
+        002762' 202500  003377'         MOVEM   W,BITP\r
+        002763' 202500  003404'         MOVEM   W,SDSTP;        FIRST DATA STATEMENT\r
+        002764' 350000  003404'         AOS     SDSTP;\r
+        002765' 200500  004121'         MOVE    W,[JRST ALLOVE] ;LAST DATA STATEMENT\r
+        002766' 202504  000000          MOVEM   W,(S)\r
+        002767' 571500  777734          HRREI   W,-^D36;        BITS PER WORDUM\r
+        002770' 202500  003400'         MOVEM   W,BITC;         BIT COUNT\r
+        002771' 260740  003062'         PUSHJ P,BITWX+1         ;MAKE SURE OF ENOUGH SPACE\r
+\r
+        002772' 260740  001710' TEXTR:  PUSHJ   P,WORD;         TEXT BY DEFAULT\r
+        002773' 554540  000012          HLRZ    C,W\r
+        002774' 306540  777777          CAIN    C,-1\r
+        002775' 254000  003345'         JRST    HEADER;         HEADER\r
+        002776' 201540  000001          MOVEI   C,1;            RELOCATABLE\r
+        002777' 260740  003037'         PUSHJ   P,BITW;         SHOVE AND STORE\r
+        003000' 254000  002772'         JRST    TEXTR;          LOOP FOR NEXT WORD\r
+\r
+        003001' 377000  003405' ABS:    SOSG    BLKSIZ; MORE TO GET\r
+        003002' 254000  002772'         JRST    TEXTR;          NOPE\r
+        003003' 260740  001710' ABSI:   PUSHJ   P,WORD;\r
+        003004' 201540  000000          MOVEI   C,0;            NON-RELOCATABLE\r
+        003005' 260740  003037'         PUSHJ   P,BITW;         TYPE 0\r
+        003006' 254000  003001'         JRST    ABS\r
+\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 43\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                ;PROCESS TABLE ENTRIES\r
+\r
+        003007' 603000  000204  MDLB:   TLNE    F,FULLSW+SKIPSW;        MADE LABEL PROC\r
+        003010' 254000  003020'         JRST    GLOBDF;         NO ROOM AT THE IN\r
+        003011' 554540  003402'         HLRZ    C,MLTP;         GET PRESENT SIZE\r
+        003012' 315540  003405'         CAMGE   C,BLKSIZ;       IF NEW SIZE BIGGER, STR-R-RETCH\r
+        003013' 260740  003066'         PUSHJ   P,SMLT\r
+        003014' 550540  003402'         HRRZ    C,MLTP;         GET BASE\r
+        003015' 270540  003405' MLPLC:  ADD     C,BLKSIZ;       MAKE INDEX\r
+        003016' 607000  000204          TLNN    F,FULLSW+SKIPSW;        DONT LOAD\r
+        003017' 552453  000000          HRRZM   V,(C);          PUT AWAY DEFINITION\r
+        003020' 260740  001710' GLOBDF: PUSHJ   P,WORD\r
+        003021' 603000  000204          TLNE    F,FULLSW+SKIPSW ;SKIPPING THIS PROG?\r
+        003022' 254000  002772'         JRST    TEXTR           ;YES, DON'T DEFINE\r
+        003023' 201551  000000          MOVEI   C,(V);          AND LOC\r
+        003024' 250500  000013          EXCH    W,C\r
+        003025' 260740  003531'         PUSHJ   P,SYMXX;        PUT IN DDT-SYMBOL TABLE\r
+        003026' 260740  003062'         PUSHJ   P,BITWX+1\r
+        003027' 254000  002772'         JRST    TEXTR\r
+\r
+        003030' 603000  000204  PLB:    TLNE    F,FULLSW+SKIPSW\r
+        003031' 254000  003020'         JRST    GLOBDF\r
+        003032' 554540  003401'         HLRZ    C,PLTP;         PRESENT SIZE\r
+        003033' 315540  003405'         CAMGE   C,BLKSIZ\r
+        003034' 260740  003103'         PUSHJ   P,SPLT\r
+        003035' 550540  003401'         HRRZ    C,PLTP\r
+        003036' 254000  003015'         JRST    MLPLC\r
+\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 44\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                ;STORE WORD AND SET BIT TABLE\r
+\r
+        003037' 603000  000204  BITW:   TLNE    F,FULLSW+SKIPSW;        WE DONT LOAD THIS\r
+        003040' 263740  000000          POPJ    P,;\r
+        003041' 202520  000002          MOVEM   W,@X;           STORE AWAY OFFSET\r
+        003042' 136540  003377'         IDPB    C,BITP;         STORE BIT\r
+        003043' 355000  003400'         AOSGE   BITC;           STEP BIT COUNT\r
+        003044' 254000  003061'         JRST    BITWX;          SOME MORE ROOM LEFT\r
+        003045' 571540  777734          HRREI   C,-^D36;        RESET COUNT\r
+        003046' 202540  003400'         MOVEM   C,BITC\r
+        003047' 370000  003401'         SOS     PLTP\r
+        003050' 370000  003377'         SOS     BITP;           ALL UPDATED\r
+                                IFE EXPAND,<HRL C,MLTP\r
+                                        SOS MLTP\r
+                                        HRR     C,MLTP>\r
+        003051' 550540  003402' IFN EXPAND,<HRRZ        C,MLTP;         TO ADDRESS\r
+        003052' 275540  000001                  SUBI C,1\r
+        003053' 307560  000002                  CAIG C,@X\r
+                                                PUSHJ P,[PUSHJ P,XPAND\r
+                                                        POPJ P,\r
+                                                        ADDI C,2000\r
+        003054' 260740  004122'                         JRST POPJM2]\r
+        003055' 370000  003402'                 SOS MLTP\r
+        003056' 505553  000001                  HRLI C,1(C)>\r
+        003057' 550400  003404'         HRRZ    T,SDSTP;        GET DATA POINTER\r
+        003060' 251550  777777          BLT     C,-1(T);        MOVE DOWN LISTS\r
+        003061' 350000  000011  BITWX:  AOS     V;              STEP LOADER LOCATION\r
+        003062' 550400  003402'         HRRZ    T,MLTP\r
+        003063' 307420  000002          CAIG    T,@X;           OVERFLOW CHECK\r
+                                IFE EXPAND,<TLO F,FULLSW>\r
+                                IFN EXPAND,<PUSHJ P,    [PUSHJ P,XPAND\r
+                                                        TLOA F,FULLSW\r
+                                                        JRST POPJM3\r
+        003064' 260740  004126'                         POPJ P,]>\r
+        003065' 263740  000000          POPJ    P,;\r
+\r
+        003066' 274540  003405' SMLT:   SUB     C,BLKSIZ;       STRETCH\r
+        003067' 204500  003402'         MOVS    W,MLTP          ;LEFT HALF HAS OLD BASE\r
+        003070' 270540  003402'         ADD     C,MLTP          ;RIGHT HALF HAS NEW BASE\r
+        003071' 553000  000013  IFN EXPAND,<    HRRZS C ;GET RID OF COUNT\r
+        003072' 307560  000002                  CAIG C,@X\r
+                                                PUSHJ P,[PUSHJ P,XPAND\r
+                                                        POPJ P,\r
+                                                        ADD W,[XWD 2000,0]\r
+                                                        ADDI C,2000\r
+        003073' 260740  004133'                         JRST POPJM2]>\r
+        003074' 542540  003402'         HRRM C,MLTP             ;PUT IN NEW MLTP\r
+        003075' 500540  000012          HLL     C,W             ;FORM BLT POINTER\r
+        003076' 271513  000000          ADDI    W,(C)           ;LAST ENTRY OF MLTP\r
+        003077' 504500  003405'         HRL     W,BLKSIZ        ;NEW SIZE OF MLTP\r
+        003100' 502500  003402'         HLLM    W,MLTP          ;...\r
+        003101' 251552  000000  SLTC:   BLT     C,0(W);         MOVE DOWN (UP?)\r
+        003102' 263740  000000          POPJ    P,;\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 44-1\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+\r
+        003103' 274540  003405' SPLT:   SUB     C,BLKSIZ\r
+        003104' 204500  003402'         MOVS    W,MLTP;\r
+        003105' 272540  003401'         ADDM    C,PLTP\r
+        003106' 270540  003402'         ADD     C,MLTP\r
+        003107' 553000  000013  IFN EXPAND,<    HRRZS C\r
+        003110' 307560  000002                  CAIG C,@X\r
+                                                PUSHJ P,[PUSHJ P,XPAND\r
+                                                        POPJ P,\r
+                                                        ADD W,[XWD 2000,0]\r
+                                                        ADDI C,2000\r
+        003111' 260740  004133'                         JRST POPJM2]>\r
+        003112' 542540  003402'         HRRM C,MLTP             ;PUT IN NEW MLTP\r
+        003113' 500540  000012          HLL     C,W\r
+        003114' 554500  003401'         HLRZ    W,PLTP          ;OLD SIZE OF PL TABLE\r
+        003115' 270500  003401'         ADD     W,PLTP          ;NEW BASE OF PL TABLE\r
+        003116' 504500  003405'         HRL     W,BLKSIZ        ;NEW SIZE OF PL TABLE\r
+        003117' 502500  003401'         HLLM    W,PLTP          ;INTO POINTER\r
+        003120' 254000  003101'         JRST    SLTC\r
+\r
+        003121' 000000  000000  PT1:    0\r
+\r
+\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 45\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                ;PROCESS END CODE WORD\r
+\r
+        003122' 260740  001710' ENDS:   PUSHJ   P,WORD;         GET STARTING ADDRESS\r
+        003123' 603000  000004          TLNE F,SKIPSW\r
+        003124' 254000  003131'         JRST ENDS1      ;FOOBAZ!!!!!!!!\r
+        003125' 322500  003131'         JUMPE   W,ENDS1;        NOT MAIN\r
+        003126' 271505  000000          ADDI    W,(R);          RELOCATION OFFSET\r
+        003127' 607040  000002          TLNN    N,ISAFLG;       IGNORE STARTING ADDRESS\r
+        003130' 540000  000012          HRR     F,W;            SET SA\r
+        003131' 260740  001706' ENDS1:  PUSHJ   P,WORDPR        ;DATA STORE SIZE\r
+        003132' 552540  003373'         HRRZM   C,PTEMP         ;NUMBER OF PERMANENT TEMPS\r
+        003133' 202440  003372'         MOVEM   V,CCON;         START OF CONSTANTS AREA\r
+        003134' 322500  003143'         JUMPE   W,E1;           NULL\r
+        003135' 202500  003405'         MOVEM   W,BLKSIZ        ;SAVE COUNT\r
+        003136' 201511  000000          MOVEI   W,0(V)          ;DEFINE CONST.\r
+        003137' 200540  003411'         MOVE    C,CNR50         ;...\r
+        003140' 607000  000204          TLNN F,SKIPSW!FULLSW\r
+        003141' 260740  001026'         PUSHJ   P,SYMPT         ;...\r
+        003142' 260740  003254'         PUSHJ   P,GSWD          ;STORE CONSTANT TABLE\r
+        003143' 201511  000000  E1:     MOVEI   W,0(V);         GET LOADER LOC\r
+        003144' 250500  003373'         EXCH    W,PTEMP;        STORE INTO PERM TEMP POINTER\r
+        003145' 270500  003373'         ADD     W,PTEMP;        FORM TEMP TEMP ADDRESS\r
+        003146' 202500  003374'         MOVEM   W,TTEMP;        POINTER\r
+        003147' 202440  003370'         MOVEM   V,GSTAB;        STORE LOADER LOC IN GLOBSUB\r
+        003150' 200540  003407'         MOVE    C,TTR50         ;DEFINE %TEMP.\r
+        003151' 603000  000204          TLNE F,SKIPSW!FULLSW\r
+        003152' 254000  003160'         JRST E1A\r
+        003153' 260740  001026'         PUSHJ   P,SYMPT         ;...\r
+        003154' 200540  003410'         MOVE    C,PTR50         ;DEFINE (IF EXTANT) TEMP.\r
+        003155' 201511  000000          MOVEI   W,0(V)          ;...\r
+        003156' 312500  003374'         CAME    W,TTEMP         ;ANY PERM TEMPS?\r
+        003157' 260740  001026'         PUSHJ   P,SYMPT         ;YES, DEFINE\r
+        003160' 260740  001710' E1A:    PUSHJ   P,WORD;         NUMBER OF GLOBSUBS\r
+        003161' 322500  003164'         JUMPE   W,E11\r
+        003162' 202500  003405'         MOVEM   W,BLKSIZ        ;SIZE OF GLOBSUB\r
+        003163' 260740  003254'         PUSHJ   P,GSWD          ;STORE GLOBSUB TABLE\r
+        003164' 202440  003367' E11:    MOVEM   V,STAB;         SCALARS\r
+        003165' 260740  001710'         PUSHJ   P,WORD;         HOW MANY?\r
+        003166' 322500  003170'         JUMPE   W,E21;          NONE\r
+        003167' 260740  003261'         PUSHJ   P,GSWDPR        ;STORE SCALAR TABLE\r
+        003170' 202440  003366' E21:    MOVEM   V,ATAB;         ARRAY POINTER\r
+        003171' 260740  001710'         PUSHJ   P,WORD;         COMMENTS FOR SCALARS APPLY\r
+        003172' 322500  003174'         JUMPE   W,E31\r
+        003173' 260740  003261'         PUSHJ   P,GSWDPR        ;STORE ARRAY TABLE\r
+        003174' 202440  003371' E31:    MOVEM   V,AOTAB;        ARRAYS OFFSET\r
+        003175' 260740  001710'         PUSHJ   P,WORD;         SAME COMMENTS AS ABOVE\r
+        003176' 322500  003200'         JUMPE   W,E41\r
+        003177' 260740  003261'         PUSHJ   P,GSWDPR        ;STORE ARRAY OFFSET TABLE\r
+        003200' 260740  001710' E41:    PUSHJ   P,WORD;         TEMP, SCALAR, ARRAY SIZE\r
+        003201' 603000  000204          TLNE    F,FULLSW!SKIPSW ;SKIPPING THIS PROG?\r
+        003202' 201500  000000          MOVEI   W,0             ;DON'T ACCEPT GLOB SUBPROG REQUESTS\r
+        003203' 202440  003365'         MOVEM   V,CTAB;         SETUP COMMON TABLE POINTER\r
+        003204' 270500  003370'         ADD     W,GSTAB;        GLOBAL SUBPROG BASE\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 45-1\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+        003205' 202500  003375'         MOVEM   W,COMBAS;       START OF COMMON\r
+        003206' 260740  001710'         PUSHJ   P,WORD;         COMMON BLOCK SIZE\r
+        003207' 552500  003405'         HRRZM   W,BLKSIZ\r
+        003210' 322500  003267'         JUMPE   W,PASS2;        NO COMMON\r
+        003211' 260740  001706' COMTOP: PUSHJ   P,WORDPR        ;GET A COMMON PAIR\r
+        003212' 260740  001355'         PUSHJ   P,SDEF;         SEARCH\r
+        003213' 254000  003234'         JRST    COMYES;         ALREADY THERE\r
+        003214' 507000  000012          HRLS    W\r
+        003215' 540500  003375'         HRR     W,COMBAS;       PICK UP THIS COMMON LOC\r
+        003216' 607000  000204          TLNN F,SKIPSW!FULLSW\r
+        003217' 260740  003531'         PUSHJ   P,SYMXX;        DEFINE IT\r
+        003220' 204500  000012          MOVS    W,W;            SWAP HALFS\r
+        003221' 270500  003375'         ADD     W,COMBAS;       UPDATE COMMON LOC\r
+        003222' 542500  003375'         HRRM    W,COMBAS;       OLD BASE PLUS NEW SIZE\r
+        003223' 557000  000012          HLRZS   W;              RETURN ADDRESS\r
+        003224' 621540  400000          TLZ     C,400000\r
+        003225' 607000  000204          TLNN F,SKIPSW!FULLSW\r
+        003226' 260740  003531'         PUSHJ   P,SYMXX\r
+        003227' 260740  003245' COMCOM: PUSHJ   P,CWSTWX        ;STORE A WORD PAIR\r
+        003230' 370000  003405'         SOS     BLKSIZ\r
+        003231' 373000  003405'         SOSLE   BLKSIZ\r
+        003232' 254000  003211'         JRST    COMTOP\r
+        003233' 254000  003267'         JRST    PASS2\r
+\r
+        003234' 603000  000004  COMYES: TLNE F,SKIPSW\r
+        003235' 254000  003227'         JRST COMCOM     ;NO ERRORS IF SKIPPING\r
+        003236' 554556  000002          HLRZ    C,2(A);         PICK UP DEFINITION\r
+        003237' 313500  000013          CAMLE   W,C;            CHECK SIZE\r
+        003240' 254000  001334'         JRST    ILC;            ILLEGAL COMMON\r
+        003241' 200556  000001          MOVE    C,1(A);         NAME\r
+        003242' 550516  000002          HRRZ    W,2(A); BASE\r
+        003243' 254000  003227'         JRST    COMCOM\r
+\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 46\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+\r
+        003244' 260740  001706' PRSTWX: PUSHJ   P,WORDPR        ;GET A WORD PAIR\r
+        003245' 250540  000012  CWSTWX: EXCH    C,W             ;SPACE TO STORE FIRST WORD OF PAIR?\r
+        003246' 260740  003250'         PUSHJ   P,WSTWX         ;...\r
+        003247' 250540  000012          EXCH    C,W             ;THERE WAS; IT'S STORED\r
+        003250' 603000  000204  WSTWX:  TLNE    F,FULLSW!SKIPSW ;SPACE FOR ANOTHER WORD?\r
+        003251' 263740  000000          POPJ    P,              ;NOPE, RETURN\r
+        003252' 202520  000002          MOVEM   W,@X            ;YES, STORE IT.\r
+        003253' 254000  003061'         JRST    BITWX           ;TELL THE TABLES ABOUT IT; THEN RETURN\r
+\r
+\r
+        003254' 260740  001710' GSWD:   PUSHJ   P,WORD          ;GET WORD FROM TABLE\r
+        003255' 260740  003250'         PUSHJ   P,WSTWX         ;STASH IT\r
+        003256' 372000  003405'         SOSE    BLKSIZ          ;FINISHED?\r
+        003257' 254000  003254'         JRST    GSWD            ;NOPE, LOOP\r
+        003260' 263740  000000          POPJ    P,              ;TRA 1,4\r
+\r
+        003261' 202500  003405' GSWDPR: MOVEM   W,BLKSIZ        ;KEEP COUNT\r
+        003262' 260740  003244' GSWDP1: PUSHJ   P,PRSTWX        ;GET AND STASH A PAIR\r
+        003263' 370000  003405'         SOS     BLKSIZ          ;FINISHED?\r
+        003264' 373000  003405'         SOSLE   BLKSIZ          ;...\r
+        003265' 254000  003262'         JRST    GSWDP1          ;NOPE, LOOP\r
+        003266' 263740  000000          POPJ    P,              ;TRA 1,4\r
+\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 47\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                ;BEGIN HERE PASS2 TEXT PROCESSING\r
+\r
+        003267' 271442  000000  PASS2:  ADDI V,(X)\r
+        003270' 202440  003364'         MOVEM V,TOPTAB  ;SAVE FOR OVERLAP CHECKING\r
+        003271' 603000  000204          TLNE    F,FULLSW+SKIPSW;        ABORT?\r
+        003272' 254000  003546'         JRST    ALLOVE;         YES\r
+        003273' 200440  003376'         MOVE    V,LLC           ;PICK UP PROGRAM ORIGIN\r
+        003274' 311440  003372'         CAML    V,CCON          ;IS THIS A PROGRAM?\r
+        003275' 254000  003612'         JRST    FBLKD           ;NO, GO LOOK FOR FIRST BLK DATA\r
+        003276' 663040  000400          TLOE    N,PGM1          ;YES, IS THIS FIRST F4 PROG?\r
+        003277' 254000  003302'         JRST    NOPRG           ;NO\r
+        003300' 540500  003375'         HRR     W,COMBAS        ;YES, PLACE PROG BREAK IN LH\r
+        003301' 506502  000131          HRLM    W,JOBCHN(X)     ;FOR CHAIN\r
+        003302' 550500  003401' NOPRG:  HRRZ    W,PLTP;         GET PROG TABLE BASE\r
+        003303' 554540  003401'         HLRZ    C,PLTP;         AND SIZE\r
+        003304' 270500  000013          ADD     W,C;            COMPUTE END OF PROG TABLE\r
+        003305' 270500  004120'         ADD     W,[POINT 1,1];  AND BEGINNING OF BIT TABLE\r
+        003306' 250500  003377'         EXCH    W,BITP;         SWAP POINTERS\r
+        003307' 134540  003377' PASS2B: ILDB    C,BITP;         GET A BIT\r
+        003310' 322540  003342'         JUMPE   C,PASS2C;       NO PASS2 PROCESSING\r
+        003311' 260740  003314'         PUSHJ   P,PROC;         PROCESS A TAG\r
+        003312' 254000  003307'         JRST    PASS2B;         MORE TO COME\r
+        003313' 254000  003616'         JRST    ENDTP;\r
+\r
+        003314' 135540  004140' PROC:   LDB     C,[POINT 6,@X,23];      TAG\r
+        003315' 402000  003406'         SETZM   MODIF;          ZERO TO ADDRESS MODIFIER\r
+        003316' 622540  000040          TRZE    C,40;\r
+        003317' 350000  003406'         AOS     MODIF\r
+        003320' 506540  003341'         HRLM    C,ENDTAB;       ERROR SETUP\r
+        003321' 201500  003330'         MOVEI   W,TABDIS;       HEAD OF TABLE\r
+        003322' 554412  000000          HLRZ    T,(W);          GET ENTRY\r
+        003323' 312400  000013          CAME    T,C;            CHECK\r
+        003324' 344500  003322'         AOJA    W,.-2\r
+        003325' 550512  000000          HRRZ    W,(W);          GET DISPATCH\r
+        003326' 135540  004141'         LDB     C,[POINT 12,@X,35]\r
+        003327' 254012  000000          JRST    (W);            DISPATCH\r
+\r
+        003330' 000011  003412' TABDIS: XWD 11,PCONS;           CONSTANTS\r
+        003331' 000006  003500'         XWD 06,PGS;             GLOBAL SUBPROGRAMS\r
+        003332' 000020  003426'         XWD 20,PST;             SCALARS\r
+        003333' 000022  003425'         XWD 22,PAT;             ARRAYS\r
+        003334' 000001  003444'         XWD 01,PATO;            ARRAYS OFFSET\r
+        003335' 000000  003526'         XWD 00,PPLT;            PROGRAMMER LABELS\r
+        003336' 000031  003524'         XWD 31,PMLT;            MADE LABESL\r
+        003337' 000026  003476'         XWD 26,PPT;             PERMANENT TEMPORARYS\r
+        003340' 000027  003474'         XWD 27,PTT;             TEMPORARY TEMPORARYS\r
+        003341' 000000  001002' ENDTAB: XWD 00,LOAD4A;          ERRORS\r
+\r
+        003342' 260740  003421' PASS2C: PUSHJ   P,PASS2A\r
+        003343' 254000  003307'         JRST    PASS2B\r
+        003344' 254000  003616'         JRST    ENDTP\r
+\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 48\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                ;DISPATCH ON A HEADER\r
+\r
+        003345' 316500  004142' HEADER: CAMN    W,[EXP -2];     END OF PASS ONE\r
+        003346' 254000  003122'         JRST    ENDS\r
+        003347' 135540  004143'         LDB     C,[POINT 12,W,35];      GET SIZE\r
+        003350' 202540  003405'         MOVEM   C,BLKSIZ\r
+        003351' 405500  770000          ANDI    W,770000\r
+        003352' 322500  003030'         JUMPE   W,PLB;  PROGRAMMER LABEL\r
+        003353' 306500  500000          CAIN    W,500000;       ABSOLUTE BLOCK\r
+        003354' 254000  003003'         JRST    ABSI;\r
+        003355' 306500  310000          CAIN    W,310000;       MADE LABEL\r
+        003356' 254000  003007'         JRST    MDLB;           MADE LABEL\r
+        003357' 306500  600000          CAIN    W,600000\r
+        003360' 254000  003020'         JRST    GLOBDF\r
+        003361' 306500  700000          CAIN    W,700000;       DATA STATEMENT\r
+        003362' 254000  003563'         JRST    DATAS\r
+        003363' 254000  001002'         JRST    LOAD4A;         DATA STATEMENTS WILL GO HERE\r
+\r
+        003364' 000000  000000  TOPTAB: 0       ;TOP OF TABLES\r
+        003365' 000000  000000  CTAB:   0;      COMMON\r
+        003366' 000000  000000  ATAB:   0;      ARRAYS\r
+        003367' 000000  000000  STAB:   0;      SCALARS\r
+        003370' 000000  000000  GSTAB:  0;      GLOBAL SUBPROGS\r
+        003371' 000000  000000  AOTAB:  0;      OFFSET ARRAYS\r
+        003372' 000000  000000  CCON:   0;      CONSTANTS\r
+        003373' 000000  000000  PTEMP:  0;      PERMANENT TEMPS\r
+        003374' 000000  000000  TTEMP:  0;      TEMPORARY TEMPS\r
+        003375' 000000  000000  COMBAS: 0;      BASE OF COMMON\r
+        003376' 000000  000000  LLC:    0;      PROGRAM ORIGIN\r
+        003377' 000000  000000  BITP:   0;      BIT POINTER\r
+        003400' 000000  000000  BITC:   0;      BIT COUNT\r
+        003401' 000000  000000  PLTP:   0;      PROGRAMMER LABEL TABLE\r
+        003402' 000000  000000  MLTP:   0;      MADE LABEL TABLE\r
+        003403' 000000  000000  SDS:    0       ;START OF DATA STATEMENTS\r
+        003404' 000000  000000  SDSTP:  0       ;START OF DATA STATEMENTS POINTER\r
+        003405' 000000  000000  BLKSIZ: 0;      BLOCK SIZE\r
+        003406' 000000  000000  MODIF:  0;      ADDRESS MODIFICATION +1\r
+        003407' 136253  114765  TTR50:  XWD     136253,114765   ;RADIX 50 %TEMP.\r
+        003410' 100450  614765  PTR50:  XWD     100450,614765   ;RADIX 50 TEMP.\r
+        003411' 112320  235025  CNR50:  XWD     112320,235025   ;RADIX 50 CONST.\r
+\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 49\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                ;ROUTINES TO PROCESS POINTERS\r
+\r
+        003412' 270540  003372' PCONS:  ADD     C,CCON;         GENERATE CONSTANT ADDRESS\r
+        003413' 364540  003417'         SOJA    C,PCOMX         ;ADJUST FOR 1 AS FIRST ENTRY\r
+\r
+        003414' 260740  003535' PSTA:   PUSHJ   P,SWAPSY        ;NON-COMMON SCALARS AND ARRAYS\r
+        003415' 271545  000000          ADDI    C,(R);          RELOCATE\r
+        003416' 260740  003511' PCOM1:  PUSHJ   P,SYDEF         ;...\r
+        003417' 270540  003406' PCOMX:  ADD     C,MODIF         ;ADDR RELOC FOR DP\r
+        003420' 542560  000002          HRRM    C,@X;           REPLACE ADDRESS\r
+        003421' 350000  000011  PASS2A: AOS     V;              STEP READOUT POINTER\r
+        003422' 311440  003372'         CAML    V,CCON          ;END OF PROCESSABLES?\r
+        003423' 350017  000000  CPOPJ1: AOS     (P);            SKIP\r
+        003424' 263740  000000          POPJ    P,;\r
+\r
+        003425' 334500  003366' PAT:    SKIPA   W,ATAB          ;ARRAY TABLE BASE\r
+        003426' 200500  003367' PST:    MOVE    W,STAB          ;SCALAR TABLE  BASE\r
+        003427' 241540  000001          ROT     C,1             ;SCALE BY 2\r
+        003430' 270540  000012          ADD     C,W             ;ADD IN TABLE BASE\r
+        003431' 271542  777776          ADDI    C,-2(X);        TABLE ENTRY\r
+        003432' 554513  000000          HLRZ    W,(C);          CHECK FOR COMMON\r
+        003433' 322500  003414'         JUMPE   W,PSTA;         NO COMMON\r
+        003434' 260740  003436'         PUSHJ   P,COMDID        ;PROCESS COMMON\r
+        003435' 254000  003416'         JRST    PCOM1\r
+\r
+        003436' 242500  000001  COMDID: LSH     W,1             ;PROCESS COMMON TABLE ENTRIES\r
+        003437' 270500  003365'         ADD     W,CTAB;         COMMON TAG\r
+        003440' 271502  777776          ADDI    W,-2(X);        OFFSET\r
+        003441' 260740  003535'         PUSHJ   P,SWAPSY;       GET SYMBOL AND SET TO DEFINED\r
+        003442' 270552  000001          ADD     C,1(W);         BASE OF COMMON\r
+        003443' 263740  000000          POPJ    P,              ;RETURN\r
+\r
+        003444' 241540  000001  PATO:   ROT     C,1\r
+        003445' 270540  003371'         ADD     C,AOTAB;        ARRAY OFFSET\r
+        003446' 271542  777776          ADDI    C,-2(X);        LOADER OFFSET\r
+        003447' 202540  004173'         MOVEM   C,CT1;          SAVE CURRENT POINTER\r
+        003450' 550553  000001          HRRZ    C,1(C);         PICK UP REFERENCE POINTER\r
+        003451' 405540  007777          ANDI    C,7777; MASK TO ADDRESS\r
+        003452' 241540  000001          ROT     C,1;            ALWAYS A ARRAY\r
+        003453' 271542  777776          ADDI    C,-2(X)\r
+        003454' 270540  003366'         ADD     C,ATAB\r
+        003455' 554513  000000          HLRZ    W,(C);          COMMON CHECK\r
+        003456' 322500  003465'         JUMPE   W,NCO\r
+        003457' 260740  003436'         PUSHJ   P,COMDID        ;PROCESS COMMON\r
+        003460' 260740  003511'         PUSHJ   P,SYDEF\r
+        003461' 200540  004173'         MOVE    C,CT1\r
+        003462' 570553  000000          HRRE    C,(C)\r
+        003463' 270552  000001          ADD     C,1(W)\r
+        003464' 254000  003417'         JRST    PCOMX\r
+\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 50\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+        003465' 260740  003535' NCO:    PUSHJ   P,SWAPSY;\r
+        003466' 271545  000000          ADDI    C,(R)           ;DEFINE SYMBOL IN TRUE LOC\r
+        003467' 260740  003511'         PUSHJ   P,SYDEF         ;...\r
+        003470' 200540  004173'         MOVE    C,CT1\r
+        003471' 550553  000000          HRRZ    C,(C)           ;OFFSET ADDRESS PICKUP\r
+        003472' 271545  000000          ADDI    C,(R)           ;WHERE IT WILL BE\r
+        003473' 254000  003417'         JRST    PCOMX           ;STASH ADDR AWAY\r
+\r
+        003474' 270540  003374' PTT:    ADD     C,TTEMP;        TEMPORARY TEMPS\r
+        003475' 364540  003417'         SOJA    C,PCOMX         ;ADJUST FOR 1 AS FIRST ENTRY\r
+\r
+        003476' 270540  003373' PPT:    ADD     C,PTEMP;        PERMANENT TEMPS\r
+        003477' 364540  003417'         SOJA    C,PCOMX         ;ADJUST FOR 1 AS FIRST ENTRY\r
+\r
+        003500' 270540  003370' PGS:    ADD     C,GSTAB;        GLOBSUBS\r
+        003501' 271542  777777          ADDI    C,-1(X);        OFFSET\r
+        003502' 200553  000000          MOVE    C,(C)\r
+        003503' 641540  640000          TLC     C,640000;       MAKE A REQUEST\r
+        003504' 260740  003541'         PUSHJ P,TBLCHK          ;CHECK FOR OVERLAP\r
+        003505' 201511  000000          MOVEI   W,(V);          THIS LOC\r
+        003506' 546520  000002          HLRM    W,@X;           ZERO RIGHT HALF\r
+        003507' 260740  003531'         PUSHJ   P,SYMXX\r
+        003510' 254000  003421'         JRST    PASS2A\r
+\r
+        003511' 603040  000040  SYDEF:  TLNE    N,SYDAT         ;SYMBOL WANTS DEFININITION?\r
+        003512' 263740  000000          POPJ    P,              ;NO, GO AWAY\r
+        003513' 261740  000013          PUSH    P,C             ;SAVE THE WORLD\r
+        003514' 261740  000012          PUSH    P,W\r
+        003515' 260740  003541'         PUSHJ P,TBLCHK  ;CHECK FOR OVERLAP\r
+        003516' 200500  000013          MOVE    W,C\r
+        003517' 332540  000010          SKIPE   C,T     ;PICKUP VALUE\r
+        003520' 260740  003531'         PUSHJ   P,SYMXX\r
+        003521' 262740  000012          POP     P,W\r
+        003522' 262740  000013          POP     P,C\r
+        003523' 263740  000000          POPJ    P,;\r
+\r
+        003524' 270540  003402' PMLT:   ADD     C,MLTP\r
+        003525' 334000  000000          SKIPA\r
+        003526' 270540  003401' PPLT:   ADD     C,PLTP\r
+        003527' 550553  000000          HRRZ    C,(C)\r
+        003530' 254000  003417'         JRST    PCOMX\r
+\r
+        003531' 261740  000011  SYMXX:  PUSH    P,V\r
+        003532' 260740  001026'         PUSHJ   P,SYMPT\r
+        003533' 262740  000011          POP     P,V\r
+        003534' 263740  000000          POPJ    P,;\r
+\r
+        003535' 201400  000000  SWAPSY: MOVEI   T,0;            SET TO EXCHANGE DEFS\r
+        003536' 250413  000001          EXCH    T,1(C);         GET NAME\r
+        003537' 550553  000000          HRRZ    C,(C)           ;GET VALUE\r
+        003540' 263740  000000          POPJ    P,\r
+        003541' 550500  003402' TBLCHK: HRRZ W,MLTP     ;GETT TOP OV TABLES\r
+        003542' 275500  000002          SUBI W,2\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 50-1\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+        003543' 317500  003364'         CAMG W,TOPTAB   ;WILL IT OVERLAP\r
+                                IFE EXPAND,<TLO F,FULLSW>\r
+                                IFN EXPAND,<    JRST    [PUSHJ P,XPAND\r
+                                                        TLOA F,FULLSW\r
+                                                        JRST TBLCHK\r
+        003544' 254000  004144'                         JRST .+1]>\r
+        003545' 263740  000000          POPJ P,\r
+\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 51\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                ;END OF PASS2\r
+\r
+        003546' 621040  000010  ALLOVE: TLZ     N,F4SW          ;END OF F4 PROG\r
+        003547' 603000  000204          TLNE F,FULLSW!SKIPSW\r
+        003550' 254000  001301'         JRST HIGH3\r
+        003551' 540240  003375'         HRR     R,COMBAS        ;TOP OF THE DATA\r
+        003552' 540440  000005          HRR     V,R             ;IS THIS THE HIGHEST LOC YET?\r
+        003553' 307160  000002          CAIG    H,@X            ;...\r
+        003554' 201160  000002          MOVEI   H,@X            ;YES, TELL THE WORLD\r
+        003555' 317140  003403'         CAMG    H,SDS           ;HIGHEST LOC GREATER THAN DATA STATEMENTS?\r
+        003556' 254000  001301'         JRST    HIGH3           ;NO, RETURN\r
+        003557' 271144  000001          ADDI    H,1(S)          ;YES, SET UP MEANINGFUL ERROR COMMENT\r
+        003560' 274140  003403'         SUB     H,SDS           ;...\r
+        003561' 661000  000200          TLO     F,FULLSW        ;INDICATE OVERFLO\r
+        003562' 254000  001301'         JRST    HIGH3           ;RETURN\r
+\r
+        003563' 603000  000204  DATAS:  TLNE    F,FULLSW+SKIPSW\r
+        003564' 254000  003604'         JRST    DAX\r
+        003565' 201544  000000          MOVEI   C,(S)           ;ADDR OF WORD UNDER SYMBOL TABLE\r
+        003566' 210500  003405'         MOVN    W,BLKSIZ        ;HOW FAR DOWN TO BLT\r
+        003567' 272500  003401'         ADDM    W,PLTP          ;UPDATE TABLE POINTERS\r
+        003570' 272500  003377'         ADDM    W,BITP          ;...\r
+        003571' 272500  003404'         ADDM    W,SDSTP         ;...\r
+        003572' 270540  000012          ADD     C,W             ;RH(C):= WHEN TO STOP BLT\r
+        003573' 504540  003402'         HRL     C,MLTP          ;SOURCE OF BLTED DATA\r
+        003574' 270500  003402'         ADD     W,MLTP          ;UPDATE, GET DESTINATION OF BLT DATA\r
+        003575' 553000  000012  IFN EXPAND,<    HRRZS W ;GET RID OF LEFT HALF\r
+        003576' 307520  000002                  CAIG W,@X\r
+                                                PUSHJ P,[PUSHJ P,XPAND\r
+                                                        POPJ P,\r
+                                                        ADDI W,2000\r
+                                                        ADD C,[XWD 2000,2000]\r
+        003577' 260740  004151'                         JRST POPJM2]>\r
+        003600' 542500  003402'         HRRM W,MLTP             ;NO SET THIS SO EXTRA CORE NOT ZEROED\r
+        003601' 500500  000013          HLL     W,C             ;FORM BLT POINTER\r
+        003602' 251513  777777          BLT     W,-1(C)         ;MOVE TABLES DOWN (BUT NOT JRST ALLOVE)\r
+        003603' 260740  003062'         PUSHJ   P,BITWX+1\r
+        003604' 260740  001710' DAX:    PUSHJ   P,WORD;         READ ONE WORD\r
+        003605' 607000  000204          TLNN    F,FULLSW+SKIPSW\r
+        003606' 202513  000000          MOVEM   W,(C)\r
+        003607' 373000  003405'         SOSLE   BLKSIZ          ;COUNT OF DATA SEQUENCE SIZE\r
+        003610' 344540  003604'         AOJA    C,DAX           ;INCREMENT DATA SEQUENCE DEPOSIT LOC\r
+        003611' 254000  002772'         JRST    TEXTR;          DONE\r
+\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 52\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+        003612' 663040  000200  FBLKD:  TLOE    N,BLKD1         ;IS THIS FIRST BLOCK DATA?\r
+        003613' 254000  003616'         JRST    ENDTP           ;NO\r
+        003614' 540440  003375'         HRR     V,COMBAS        ;PLACE PROG BREAK IN RH FOR\r
+        003615' 542442  000131          HRRM    V,JOBCHN(X)     ;CHAIN\r
+        003616' 603000  000204  ENDTP:  TLNE    F,FULLSW+SKIPSW\r
+        003617' 254000  003546'         JRST    ALLOVE\r
+        003620' 540440  003370'         HRR     V,GSTAB\r
+        003621' 311440  003367' ENDTP0: CAML    V,STAB;         ANY MORE GLOBSUBS\r
+        003622' 254000  003636'         JRST    ENDTP2;         NO\r
+        003623' 200560  000002          MOVE    C,@X;           GET SUBPROG NAME\r
+        003624' 260740  001353'         PUSHJ   P,SREQ;         IS IT ALLREADY REQUESTED\r
+        003625' 344440  003621'         AOJA    V,ENDTP0;       YES\r
+        003626' 260740  001355'         PUSHJ   P,SDEF;         OR DEFINED\r
+        003627' 344440  003621'         AOJA    V,ENDTP0;       YES\r
+        003630' 260740  003541'         PUSHJ P,TBLCHK\r
+        003631' 201500  000000          MOVEI W,0               ;PREPARE DUMMY LINK\r
+        003632' 607000  000204          TLNN    F,FULLSW+SKIPSW;        ABORT\r
+        003633' 260740  001131'         PUSHJ   P,SYM3X;        PUT IN DUMMY REQUEST\r
+        003634' 260740  003062'         PUSHJ   P,BITWX+1;      OVERLAP CHECK\r
+        003635' 344440  003621'         AOJA    V,ENDTP0\r
+        003636' 402000  003121' ENDTP2: SETZM   PT1\r
+        003637' 540440  003404'         HRR V,SDSTP\r
+        003640' 275442  000000  IFN EXPAND,<    SUBI V,(X)\r
+        003641' 317440  003375'                 CAMG V,COMBAS\r
+                                                JRST    [PUSHJ P,XPAND\r
+                                                        TLOA F,FULLSW\r
+                                                        JRST .-3\r
+        003642' 254000  004156'                         JRST .+1]\r
+        003643' 540440  003404'                 HRR V,SDSTP>\r
+        003644' 552440  003403'         HRRZM   V,SDS           ;DATA STATEMENT LOC\r
+        003645' 275442  000000  ENDTP1: SUBI    V,(X);          COMPENSATE FOR OFFSET\r
+        003646' 200520  000002          MOVE    W,@X;   GET WORD\r
+        003647' 603500  777777          TLNE    W,-1;           NO LEFT HALF IMPLIES COUNT\r
+        003650' 254000  003774'         JRST    DODON;          DATA DONE\r
+        003651' 270500  004162'         ADD     W,[MOVEI W,3]\r
+        003652' 271520  000002          ADDI    W,@X\r
+        003653' 250520  000002          EXCH    W,@X\r
+        003654' 350000  000011          AOS     V\r
+        003655' 270520  000002          ADD     W,@X;           ITEMS COUNT\r
+        003656' 202500  004175'         MOVEM   W,ITC\r
+        003657' 200500  004163'         MOVE    W,[MOVEM W,LTC]\r
+        003660' 202520  000002          MOVEM   W,@X;           SETUP FOR DATA EXECUTION\r
+        003661' 350000  000011          AOS     V\r
+        003662' 200500  004164'         MOVE    W,[MOVEI W,0]\r
+        003663' 250520  000002          EXCH    W,@X\r
+        003664' 202500  004176'         MOVEM   W,ENC;          END COUNT\r
+        003665' 350000  000011          AOS     V\r
+        003666' 201520  000002          MOVEI   W,@X\r
+        003667' 272500  004175'         ADDM    W,ITC\r
+        003670' 200520  000002  LOOP:   MOVE    W,@X\r
+        003671' 554400  000012          HLRZ    T,W;            LEFT HALF INST.\r
+        003672' 405400  777000          ANDI    T,777000\r
+        003673' 306400  254000          CAIN    T,254000        ;JRST?\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 52-1\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+        003674' 254000  003766'         JRST    WRAP            ;END OF DATA\r
+        003675' 306400  260000          CAIN    T,260000        ;PUSHJ?\r
+        003676' 254012  003731'         JRST    PJTABL(W)       ;DISPATCH VIA TABLE\r
+        003677' 306400  200000          CAIN    T,200000;       MOVE?\r
+        003700' 344440  003707'         AOJA    V,INNER\r
+        003701' 306400  270000          CAIN    T,270000;       ADD?\r
+        003702' 254000  003725'         JRST    ADDOP\r
+        003703' 306400  221000          CAIN    T,221000;       IMULI?\r
+        003704' 344440  003670'         AOJA    V,LOOP\r
+        003705' 302400  220000          CAIE    T,220000;       IMUL?\r
+        003706' 254000  001002'         JRST    LOAD4A;         NOTA\r
+        003707' 550420  000002  INNER:  HRRZ    T,@X;           GET ADDRESS\r
+        003710' 622400  770000          TRZE    T,770000;       ZERO TAG?\r
+        003711' 364400  003722'         SOJA    T,CONPOL;       NO, CONSTANT POOL\r
+        003712' 274400  003121'         SUB     T,PT1;          SUBTRACT INDUCTION NUMBER\r
+        003713' 240400  000001          ASH     T,1\r
+        003714' 370000  000010          SOS     T;              FORM INDUCTION POINTER\r
+        003715' 542420  000002          HRRM    T,@X\r
+        003716' 554420  000002          HLRZ    T,@X\r
+        003717' 271400  000017          ADDI    T,P\r
+        003720' 506420  000002          HRLM    T,@X\r
+        003721' 344440  003670'         AOJA    V,LOOP\r
+\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 53\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+        003722' 270400  004175' CONPOL: ADD     T,ITC;  CONSTANT BASE\r
+        003723' 542420  000002          HRRM    T,@X\r
+        003724' 344440  003670'         AOJA    V,LOOP\r
+\r
+        003725' 550420  000002  ADDOP:  HRRZ    T,@X\r
+        003726' 622400  770000          TRZE    T,770000\r
+        003727' 364400  003722'         SOJA    T,CONPOL\r
+        003730' 344440  003670' SKIPIN: AOJA    V,LOOP\r
+\r
+        003731' 254000  003740' PJTABL: JRST    DWFS            ;PUSHJ 17,0\r
+        003732' 354000  003121'         AOSA    PT1             ;INCREMENT DO COUNT\r
+        003733' 374000  003121'         SOSA    PT1;            DECREMENT DO COUNT\r
+        003734' 334500  004165'         SKIPA   W,[EXP DOINT.]\r
+        003735' 201500  003754'         MOVEI   W,DOEND.\r
+        003736' 542520  000002          HRRM    W,@X\r
+        003737' 344440  003730'         AOJA    V,SKIPIN        ;SKIP A WORD\r
+\r
+        003740' 201500  004044' DWFS:   MOVEI   W,DWFS.\r
+        003741' 542520  000002          HRRM    W,@X\r
+        003742' 350000  000011          AOS     V\r
+        003743' 661040  000040          TLO     N,SYDAT\r
+        003744' 260740  003314'         PUSHJ   P,PROC;         PROCESS THE TAG\r
+        003745' 254000  001002'         JRST    LOAD4A          ;DATA STATEMENT BELOW CODE TOP\r
+        003746' 254000  003670'         JRST    LOOP            ;PROPER RETURN\r
+\r
+        003747' 262740  000011  DOINT.: POP     P,V;            GET ADDRESS OF INITIAL VALUE\r
+        003750' 261751  000000          PUSH    P,(V);          STORE INDUCTION VARIABLE\r
+        003751' 350000  000011          AOS     V\r
+        003752' 261740  000011          PUSH    P,V;            INITIAL ADDRESS\r
+        003753' 254011  000000          JRST    (V)\r
+\r
+        003754' 554437  000000  DOEND.: HLRZ    T,@(P)\r
+        003755' 272417  777776          ADDM    T,-2(P);        INCREMENT\r
+        003756' 550437  000000          HRRZ    T,@(P);         GET FINAL VALUE\r
+        003757' 315417  777776          CAMGE   T,-2(P);        END CHECK\r
+        003760' 254000  003763'         JRST    DODONE;         WRAP IT UP\r
+        003761' 262757  000000          POP     P,(P);          BACK UP POINTER\r
+        003762' 254037  000000          JRST    @(P)\r
+\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 54\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+        003763' 262757  777777  DODONE: POP     P,-1(P);        BACK UP ADDRESS\r
+        003764' 262757  777777          POP     P,-1(P)\r
+        003765' 254000  003423'         JRST    CPOPJ1          ;RETURN\r
+\r
+        003766' 200500  004176' WRAP:   MOVE    W,ENC;          NUMBER OF CONSTANTS\r
+        003767' 270500  004175'         ADD     W,ITC;          CONSTANT BASE\r
+        003770' 201552  000000          MOVEI   C,(W);          CHAIN\r
+        003771' 542560  000002          HRRM    C,@X\r
+        003772' 201452  000000          MOVEI   V,(W);          READY TO GO\r
+        003773' 254000  003645'         JRST    ENDTP1\r
+\r
+        003774' 621040  001060  DODON:  TLZ     N,RCF!SYDAT!DZER        ;DATA STATEMENT FLAGS\r
+        003775' 200500  003373'         MOVE    W,PTEMP         ;TOP OF PROG\r
+        003776' 271502  000000          ADDI    W,(X)           ;+OFFSET\r
+        003777' 200540  003375'         MOVE    C,COMBAS        ;TOP OF DATA\r
+        004000' 271542  000000          ADDI    C,(X)           ;+OFFSET\r
+        004001' 311500  000013  SECZER: CAML    W,C             ;ANY DATA TO ZERO?\r
+        004002' 254020  003403'         JRST    @SDS            ;NO, DO DATA STATEMENTS\r
+        004003' 311500  003403'         CAML    W,SDS           ;IS DATA BELOW DATA STATEMENTS?\r
+        004004' 661000  000200          TLO     F,FULLSW        ;NO, INDICATE OVERFLO\r
+        004005' 607000  000204          TLNN    F,FULLSW+SKIPSW ;SHOULD WE ZERO?\r
+        004006' 402012  000000          SETZM   (W)             ;YES, DO SO\r
+        004007' 667040  001000          TLON    N,DZER          ;GO BACK FOR MORE?\r
+        004010' 344500  004001'         AOJA    W,SECZER        ;YES, PLEASE\r
+        004011' 313540  003403'         CAMLE   C,SDS           ;ALL DATA BELOW DATA STATEMENTS?\r
+        004012' 200540  003403'         MOVE    C,SDS           ;ALL ZEROED DATA MUST BE\r
+        004013' 505512  777777          HRLI    W,-1(W)         ;SET UP BLT POINTER TO ZERO DATA\r
+        004014' 607000  000204          TLNN    F,FULLSW+SKIPSW ;SHOULD WE ZERO?\r
+        004015' 251513  777777          BLT     W,-1(C)         ;YES, DO SO\r
+        004016' 254020  003403'         JRST    @SDS            ;GO DO DATA STATEMENTS\r
+\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 55\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+        004017' 603040  000020  DREAD:  TLNE    N,RCF;          NEW REPEAT COUNT NEEDED\r
+        004020' 254000  004032'         JRST    FETCH;          NO\r
+        004021' 200500  004174'         MOVE    W,LTC\r
+        004022' 202500  004201'         MOVEM   W,LTCTEM\r
+        004023' 200520  004174'         MOVE    W,@LTC;         GET A WORD\r
+        004024' 556500  004200'         HLRZM   W,RCNT;         SET REPEAT COUNT\r
+        004025' 552500  004177'         HRRZM   W,WCNT;         SET WORD COUNT\r
+        004026' 262512  000000          POP     W,(W);          SUBTRACT ONE FROM BOTH HALFS\r
+        004027' 502520  004174'         HLLM    W,@LTC;         DECREMENT REPEAT COUNT\r
+        004030' 350500  004174'         AOS     W,LTC;          STEP READOUT\r
+        004031' 661040  000020          TLO     N,RCF\r
+        004032' 200520  004174' FETCH:  MOVE    W,@LTC\r
+        004033' 350000  004174'         AOS     LTC\r
+        004034' 372000  004177'         SOSE    WCNT\r
+        004035' 263740  000000          POPJ    P,;\r
+        004036' 376000  004200'         SOSN    RCNT\r
+        004037' 254000  004042'         JRST    DOFF.\r
+        004040' 200440  004201'         MOVE    V,LTCTEM;       RESTORE READOUT\r
+        004041' 202440  004174'         MOVEM   V,LTC\r
+        004042' 621040  000020  DOFF.:  TLZ     N,RCF;          RESET DATA REPEAT FLAG\r
+        004043' 263740  000000          POPJ    P,;\r
+\r
+        004044' 200417  000000  DWFS.:  MOVE    T,(P)\r
+        004045' 350017  000000          AOS     (P)\r
+        004046' 200410  000000          MOVE    T,(T);          GET ADDRESS\r
+        004047' 556400  004202'         HLRZM   T,DWCT;         DATA WORD COUNT\r
+        004050' 573000  000010          HRRES   T\r
+        004051' 270400  000012          ADD     T,W;            OFFSET\r
+        004052' 271402  000000          ADDI    T,(X);          LOADER OFFSET\r
+        004053' 260740  004017' DWFS.1: PUSHJ   P,DREAD         ;GET A DATA WORD\r
+        004054' 311400  003403'         CAML    T,SDS           ;BELOW BEGINNING OF DATA STATEMENTS\r
+        004055' 661000  000200          TLO     F,FULLSW        ;YES, INDICATE OVERFLO\r
+        004056' 607000  000204          TLNN    F,FULLSW+SKIPSW ;LOAD THE NEXT DATA ITEM?\r
+        004057' 202510  000000          MOVEM   W,(T)           ;YES, STORE IT\r
+        004060' 350000  000010          AOS     T\r
+        004061' 372500  004202'         SOSE    W,DWCT;         STEP DOWN AND TEST\r
+        004062' 254000  004053'         JRST    DWFS.1          ;ONE MORE TIME, MOZART BABY!\r
+        004063' 263740  000000          POPJ    P,;\r
+\r
+\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 56\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                ;LITERAL TABLE\r
+\r
+        004064'                 LITS:   LIT\r
+        004064' 444566  435062\r
+        004065' 656460  435462\r
+        004066' 545741  444562\r
+        004067' 251656  000000\r
+        004070' 530043  576245\r
+        004071' 435041  515600\r
+        004072' 545142  240000\r
+        004073' 200500  004072'\r
+        004074' 202500  002054'\r
+        004075' 260740  000722'\r
+        004076' 621000  000002\r
+        004077' 254000  000623'\r
+        004100' 545142  242000\r
+        004101' 525742  444164\r
+        004102' 624151  440000\r
+        004103' 260740  000365'\r
+        004104' 254000  001266'\r
+        004105' 254000  001015'\r
+        004106' 077777  777777\r
+        004107' 260740  000365'\r
+        004110' 665000  000200\r
+        004111' 254000  001234'\r
+        004112' 254000  001241'\r
+        004113' 000002  000000\r
+        004114' 260740  000365'\r
+        004115' 665000  000200\r
+        004116' 254000  000456'\r
+        004117' 263740  000000\r
+        004120' 440100  000001\r
+        004121' 254000  003546'\r
+        004122' 260740  000365'\r
+        004123' 263740  000000\r
+        004124' 271540  002000\r
+        004125' 254000  000456'\r
+        004126' 260740  000365'\r
+        004127' 665000  000200\r
+        004130' 254000  000455'\r
+        004131' 263740  000000\r
+        004132' 002000  000000\r
+        004133' 260740  000365'\r
+        004134' 263740  000000\r
+        004135' 270500  004132'\r
+        004136' 271540  002000\r
+        004137' 254000  000456'\r
+        004140' 140620  000002\r
+        004141' 001420  000002\r
+        004142' 777777  777776\r
+        004143' 001400  000012\r
+        004144' 260740  000365'\r
+        004145' 665000  000200\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 56-1\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+        004146' 254000  003541'\r
+        004147' 254000  003545'\r
+        004150' 002000  002000\r
+        004151' 260740  000365'\r
+        004152' 263740  000000\r
+        004153' 271500  002000\r
+        004154' 270540  004150'\r
+        004155' 254000  000456'\r
+        004156' 260740  000365'\r
+        004157' 665000  000200\r
+        004160' 254000  003637'\r
+        004161' 254000  003643'\r
+        004162' 201500  000003\r
+        004163' 202500  004174'\r
+        004164' 201500  000000\r
+        004165' 000000  003747'\r
+        004173'                         VAR\r
+        004173' 000000  000000  CT1:    0               ;TEMP FOR C\r
+        004174' 000000  000000  LTC:    0\r
+        004175' 000000  000000  ITC:    0\r
+        004176' 000000  000000  ENC:    0\r
+        004177' 000000  000000  WCNT:   0               ;DATA WORD COUNT\r
+        004200' 000000  000000  RCNT:   0               ;DATA REPEAT COUNT\r
+\r
+        004201' 000000  000000  LTCTEM: 0               ;TEMP FOR LTC\r
+        004202' 000000  000000  DWCT:   0               ;DATA WORD COUNT\r
+                        000000' LDEND:  END     LD\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 004203\r
+\r
+9K CORE USED\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 57\r
+        SYMBOL TABLE\r
+\r
+                000662  \r
+A               000016  INT\r
+ABS             003001' \r
+ABSI            003003' \r
+ABUF            002046' \r
+ABUF1           002047' \r
+ABUF2           002050' \r
+ABUFL           000203  \r
+ADDOP           003725' \r
+ALLFLG          000001  SPD\r
+ALLOVE          003546' \r
+AOTAB           003371' \r
+ASW             000100  SPD\r
+ATAB            003366' \r
+AUX             002544' \r
+AUXSWE          040000  SPD\r
+AUXSWI          020000  SPD\r
+B               000006  INT\r
+B.C             002030' \r
+BEG             000000' INT\r
+BITC            003400' \r
+BITP            003377' \r
+BITW            003037' \r
+BITWX           003061' \r
+BLKD1           000200  SPD\r
+BLKSIZ          003405' \r
+BLTSET          000251' \r
+BLTSYM          000000  \r
+BUF1            002136' \r
+BUFI            002043' \r
+BUFI1           002044' \r
+BUFI2           002045' \r
+BUFL            000406  \r
+BUFO            002040' \r
+BUFO1           002041' \r
+BUFO2           002042' \r
+BUFR            002051' \r
+BUFR1           002052' \r
+BUFR2           002053' \r
+C               000013  INT\r
+CALLEX          000007' \r
+CCON            003372' \r
+CDDTGT          000005  SPD\r
+CDDTOU          000003  SPD\r
+CEXIT           000012  SPD\r
+CHAIN3          000350' \r
+CHN5            000001  \r
+CHNBLT          000014  \r
+CHNC            000307' \r
+CHNERR          000010  \r
+CHNR            000310' \r
+CHNSYM          001212' \r
+CNR50           003411' \r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 57-1\r
+        SYMBOL TABLE\r
+\r
+COMBAS          003375' \r
+COMCOM          003227' \r
+COMDID          003436' \r
+COMFLG          000004  SPD\r
+COMM            001756' \r
+COMSAV          001760' \r
+COMTOP          003211' \r
+COMYES          003234' \r
+CONPOL          003722' \r
+CPOPJ1          003423' \r
+CRLF            001730' INT\r
+CRLFLF          001726' \r
+CSETDD          000002  SPD\r
+CSW             000001  SPD\r
+CT1             004173' \r
+CTAB            003365' \r
+CTLSET          000004' \r
+CWSTWX          003245' \r
+D               000007  INT\r
+DATAS           003563' \r
+DAX             003604' \r
+DDSW            004000  SPD\r
+DISPL           000005  \r
+DODON           003774' \r
+DODONE          003763' \r
+DOEND.          003754' \r
+DOFF.           004042' \r
+DOINT.          003747' \r
+DREAD           004017' \r
+DSW             100000  SPD\r
+DSYMSW          001000  SPD\r
+DTIN            002054' INT\r
+DTIN1           002055' \r
+DTIN2           002057' \r
+DTOUT           002060' INT\r
+DTOUT1          002061' \r
+DWCT            004202' \r
+DWFS            003740' \r
+DWFS.           004044' \r
+DWFS.1          004053' \r
+DZER            001000  SPD\r
+E               000014  INT\r
+E1              003143' \r
+E11             003164' \r
+E1A             003160' \r
+E21             003170' \r
+E31             003174' \r
+E41             003200' \r
+ENC             004176' \r
+ENDS            003122' \r
+ENDS1           003131' \r
+ENDTAB          003341' \r
+ENDTP           003616' \r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 57-2\r
+        SYMBOL TABLE\r
+\r
+ENDTP0          003621' \r
+ENDTP1          003645' \r
+ENDTP2          003636' \r
+EOF             000725' \r
+EOF1            000726' \r
+EOF2            000727' \r
+ERRP41          001646' \r
+ERRP8           001666' \r
+ERRPT           001610' \r
+ERRPT0          001613' \r
+ERRPT1          001615' \r
+ERRPT2          001631' \r
+ERRPT3          001635' \r
+ERRPT4          001645' \r
+ERRPT5          001652' \r
+ERRPT6          001653' \r
+ERRPT7          001667' \r
+ERRPT8          001654' \r
+ERRPT9          001671' \r
+ESW             000002  SPD\r
+EXEQSW          002000  SPD\r
+EXPAND          000001  \r
+F               000000  INT\r
+F.C             002022' \r
+F.I             002031' \r
+F4LD            002753' \r
+F4LIB           010000  SPD\r
+F4SW            000010  SPD\r
+FBLKD           003612' \r
+FCONSW          000020  SPD\r
+FCRLF           001727' \r
+FETCH           004032' \r
+FIXW            001162' \r
+FIXWL           001171' \r
+FIXWP           001152' \r
+FSCN            000730' \r
+FSCN1           000746' \r
+FSCN2           000751' \r
+FSW             000010  SPD\r
+FULLC           001266' \r
+FULLSW          000200  SPD\r
+GLOBDF          003020' \r
+GSTAB           003370' \r
+GSWD            003254' \r
+GSWDP1          003262' \r
+GSWDPR          003261' \r
+H               000003  INT\r
+HEADER          003345' \r
+HIGH            001274' \r
+HIGH0           001272' \r
+HIGH3           001301' \r
+IAD2            001523' \r
+ILC             001334' \r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 57-3\r
+        SYMBOL TABLE\r
+\r
+ILD             000611' \r
+ILD1            000616' \r
+ILD2            000623' \r
+ILD3            000631' \r
+ILD4            000635' \r
+ILD5            000643' \r
+ILD6            000621' \r
+ILD9            000637' \r
+IMD3            001526' \r
+INNER           003707' \r
+IOBAD           740000  \r
+IOBKTL          040000  \r
+IODEND          020000  \r
+IODERR          200000  \r
+IODTER          100000  \r
+IOIMPM          400000  \r
+IOWDP           000013  \r
+IOWDPP          000363' \r
+ISAFLG          000002  SPD\r
+ISW             020000  SPD\r
+ITC             004175' \r
+JOB41           000330' EXT\r
+JOBBLT          000134  SPD\r
+JOBCHN          000131  SPD\r
+JOBDDT          000331' EXT\r
+JOBFF           000612' EXT\r
+JOBPRO          000140  SPD\r
+JOBREL          001223' EXT\r
+JOBSA           000332' EXT\r
+JOBSYM          000413' EXT\r
+JOBUSY          000247' EXT\r
+K               000000  \r
+LD              000000' INT\r
+LD2             000042' \r
+LD2B            000050' \r
+LD2BA           000054' \r
+LD2D            000057' \r
+LD2DA           000057' \r
+LD2Q            000042' \r
+LD3             000063' \r
+LD3A            000100' \r
+LD3AA           000066' \r
+LD4             000110' \r
+LD5             000115' \r
+LD5A            000127' \r
+LD5B            000134' \r
+LD5B1           000137' \r
+LD5C            000145' \r
+LD5C1           000165' \r
+LD5D            000201' \r
+LD5E            000203' \r
+LD5E1           000205' \r
+LD5E2           000215' \r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 57-4\r
+        SYMBOL TABLE\r
+\r
+LD5E3           000225' \r
+LD5E5           000212' \r
+LD6             000466' \r
+LD6A            000461' \r
+LD6A1           000464' \r
+LD6B            000472' \r
+LD6C            000524' \r
+LD6D            000527' \r
+LD7             000533' \r
+LD7A            000536' \r
+LD7B            000542' \r
+LD7C            000546' \r
+LD7D            000554' \r
+LD8             000561' \r
+LD9             000572' \r
+LDAC            000000  \r
+LDDT            000710' \r
+LDDT0           000712' \r
+LDDT1           000716' \r
+LDDT2           000722' \r
+LDDT3           000723' \r
+LDDTX           000707' \r
+LDEND           004203' INT\r
+LDF             000752' \r
+LIB             000666' \r
+LIB1            000671' \r
+LIB2            000673' \r
+LIB3            000701' \r
+LIBF            000653' \r
+LIBF1           000660' \r
+LIBF2           000661' \r
+LIBSW           004000  SPD\r
+LITS            004064' \r
+LLC             003376' \r
+LOAD            000753' INT\r
+LOAD1           000754' \r
+LOAD1A          000755' \r
+LOAD2           000772' \r
+LOAD3           000777' \r
+LOAD4           001000' \r
+LOAD4A          001002' \r
+LOCD            001340' \r
+LOOP            003670' \r
+LOSEBI          000006  \r
+LRAID           000704' \r
+LRAIDX          000703' \r
+LSTPT           001754' \r
+LTC             004174' \r
+LTCTEM          004201' \r
+MDG             001761' \r
+MDLB            003007' \r
+MLPLC           003015' \r
+MLTP            003402' \r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 57-5\r
+        SYMBOL TABLE\r
+\r
+MODIF           003406' \r
+MVABRT          001256' \r
+MVDWN           001234' \r
+N               000001  INT\r
+NAME            001311' \r
+NAME1           001317' \r
+NAME2           001330' \r
+NCO             003465' \r
+NOEX            000275' \r
+NOPRG           003302' \r
+NSW             200000  SPD\r
+NUTS            000002' \r
+P               000017  INT\r
+PASS2           003267' \r
+PASS2A          003421' \r
+PASS2B          003307' \r
+PASS2C          003342' \r
+PAT             003425' \r
+PATO            003444' \r
+PCOM1           003416' \r
+PCOMX           003417' \r
+PCONS           003412' \r
+PDLPT           001755' \r
+PDLST           001762' INT\r
+PDSAV           001757' \r
+PGM1            000400  SPD\r
+PGS             003500' \r
+PJTABL          003731' \r
+PLB             003030' \r
+PLTP            003401' \r
+PMLT            003524' \r
+PMS             001460' INT\r
+PMS2            001476' \r
+PMS3            001504' \r
+PMS4            001520' \r
+POPJM2          000456' \r
+POPJM3          000455' \r
+PP              000000  \r
+PPDL            000060  SPD\r
+PPLT            003526' \r
+PPT             003476' \r
+PRMAP           001407' INT\r
+PRMAP1          001427' \r
+PRMAP2          001444' \r
+PRMAP3          001455' \r
+PRMAP4          001456' \r
+PRMAP5          001460' \r
+PRNAM           001534' \r
+PRNAM0          001532' \r
+PRNAM1          001533' \r
+PRNAME          001561' \r
+PRNUM           001535' \r
+PRNUM0          001536' \r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 57-6\r
+        SYMBOL TABLE\r
+\r
+PRNUM1          001540' \r
+PRNUM2          001545' \r
+PROC            003314' \r
+PROG            001006' \r
+PROG1           001020' \r
+PRQ             001701' \r
+PRSTWX          003244' \r
+PRWORD          001363' \r
+PST             003426' \r
+PSTA            003414' \r
+PT1             003121' \r
+PTEMP           003373' \r
+PTR50           003410' \r
+PTT             003474' \r
+PWORD           001602' INT\r
+PWORD1          001603' \r
+PWORD2          001604' \r
+Q               000015  INT\r
+R               000005  INT\r
+RCF             000020  SPD\r
+RCNT            004200' \r
+RCNUM           001546' \r
+REMSYM          001344' \r
+REWSW           002000  SPD\r
+RPGSW           000000  \r
+RWORD           001371' \r
+RWORD1          001373' \r
+RWORD2          001377' \r
+RWORD3          001403' \r
+S               000004  INT\r
+SAS1            000234' \r
+SASYM           000227' \r
+SDEF            001355' \r
+SDEF1           001356' \r
+SDEF2           001360' \r
+SDS             003403' \r
+SDSTP           003404' \r
+SE3             001753' \r
+SECZER          004001' \r
+SFULLC          001257' \r
+SKIPIN          003730' \r
+SKIPSW          000004  SPD\r
+SLASH           000100  SPD\r
+SLIBSW          000400  SPD\r
+SLTC            003101' \r
+SMLT            003066' \r
+SP1             001556' \r
+SPACE           001557' \r
+SPACES          001555' \r
+SPLT            003103' \r
+SPT             001564' \r
+SREQ            001353' \r
+SSW             400000  SPD\r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 57-7\r
+        SYMBOL TABLE\r
+\r
+STAB            003367' \r
+START           001306' \r
+SVA             001101' \r
+SWAPSY          003535' \r
+SYDAT           000040  SPD\r
+SYDEF           003511' \r
+SYM             001023' \r
+SYM1            001037' \r
+SYM1A           001053' \r
+SYM1B           001055' \r
+SYM1C           001057' \r
+SYM1D           001062' \r
+SYM2            001070' \r
+SYM2A           001102' \r
+SYM2B           001071' \r
+SYM2C           001100' \r
+SYM2W           001221' \r
+SYM2W1          001075' \r
+SYM2WA          001225' \r
+SYM3            001106' \r
+SYM3A           001137' \r
+SYM3A1          001144' \r
+SYM3B           001145' \r
+SYM3X           001131' \r
+SYM3X1          001116' \r
+SYM3X2          001127' \r
+SYM4            001227' \r
+SYM4A           001232' \r
+SYMFIX          001174' \r
+SYMPT           001026' \r
+SYMSW           040000  SPD\r
+SYMXX           003531' \r
+T               000010  INT\r
+TABDIS          003330' \r
+TBLCHK          003541' \r
+TEXTR           002772' \r
+TOPTAB          003364' \r
+TTEMP           003374' \r
+TTR50           003407' \r
+TTY1            002064' \r
+TTYL            000052  \r
+TYPE            001733' INT\r
+TYPE2           001734' \r
+TYPE3           001745' \r
+V               000011  INT\r
+W               000012  INT\r
+WCNT            004177' \r
+WORD            001710' INT\r
+WORD1           001712' \r
+WORD2           001714' \r
+WORDPR          001706' \r
+WRAP            003766' \r
+WSTWX           003250' \r
+\r\fLOADER - LOADS MACROX AND SIXTRAN FOUR                 PAGE 57-8\r
+        SYMBOL TABLE\r
+\r
+X               000002  INT\r
+XPAND           000365' \r
+XPAND2          000401' \r
+XPAND3          000426' \r
+XPAND4          000442' \r
+XPAND5          000446' \r
+XPAND6          000432' \r
+XPAND7          000452' \r
+ZEROS           002747' \r
+\fLLL                     OOOOOOOOO            AAAAAAAAA         DDDDDDDDDDDD               111            KKK         KKK\r
+LLL                     OOOOOOOOO            AAAAAAAAA         DDDDDDDDDDDD               111            KKK         KKK\r
+LLL                     OOOOOOOOO            AAAAAAAAA         DDDDDDDDDDDD               111            KKK         KKK\r
+LLL                  OOO         OOO      AAA         AAA      DDD         DDD         111111            KKK         KKK\r
+LLL                  OOO         OOO      AAA         AAA      DDD         DDD         111111            KKK         KKK\r
+LLL                  OOO         OOO      AAA         AAA      DDD         DDD         111111            KKK         KKK\r
+LLL                  OOO         OOO      AAA         AAA      DDD         DDD            111            KKK      KKK   \r
+LLL                  OOO         OOO      AAA         AAA      DDD         DDD            111            KKK      KKK   \r
+LLL                  OOO         OOO      AAA         AAA      DDD         DDD            111            KKK      KKK   \r
+LLL                  OOO         OOO      AAA         AAA      DDD         DDD            111            KKKKKKKKK      \r
+LLL                  OOO         OOO      AAA         AAA      DDD         DDD            111            KKKKKKKKK      \r
+LLL                  OOO         OOO      AAA         AAA      DDD         DDD            111            KKKKKKKKK      \r
+LLL                  OOO         OOO      AAAAAAAAAAAAAAA      DDD         DDD            111            KKK      KKK   \r
+LLL                  OOO         OOO      AAAAAAAAAAAAAAA      DDD         DDD            111            KKK      KKK   \r
+LLL                  OOO         OOO      AAAAAAAAAAAAAAA      DDD         DDD            111            KKK      KKK   \r
+LLL                  OOO         OOO      AAA         AAA      DDD         DDD            111            KKK         KKK\r
+LLL                  OOO         OOO      AAA         AAA      DDD         DDD            111            KKK         KKK\r
+LLL                  OOO         OOO      AAA         AAA      DDD         DDD            111            KKK         KKK\r
+LLLLLLLLLLLLLLL         OOOOOOOOO         AAA         AAA      DDDDDDDDDDDD            111111111         KKK         KKK\r
+LLLLLLLLLLLLLLL         OOOOOOOOO         AAA         AAA      DDDDDDDDDDDD            111111111         KKK         KKK\r
+LLLLLLLLLLLLLLL         OOOOOOOOO         AAA         AAA      DDDDDDDDDDDD            111111111         KKK         KKK\r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  11:23:08\r
+File: DSKB1 :LOAD1K.LST   [8,200] Created: 20-April-1967 11:19:00 Printed: 24-April-1978 11:22:30
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:1777 \r
+File will be deleted after printing\r
+\f\r1KLOAD - LOADS MACROX                 PAGE 1\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                        000001  K==1\r
+                                        SUBTTL  DICK GRUEN: V25 3 AUG 68\r
+\r
+\r
+                                ;K=1                    ;K=1  MEANS 1KLOADER\r
+                                IFNDEF  K,<K=0>         ;K=0  MEANS F4 LOADER\r
+\r
+                                ;RPGSW=1                ;MEANS RPG FEATURE\r
+                                IFNDEF RPGSW,<RPGSW=0>\r
+                                ;LDAC=1                 ;MEANS LOAD CODE INTO ACS\r
+                                IFNDEF LDAC,<LDAC=0>\r
+\r
+                                ;BLTSYM=1               ;MOVE SYMBOL TABLE DOWN TO END OF PROG\r
+                                IFNDEF BLTSYM,<BLTSYM=0>\r
+\r
+                                ;EXPAND=1               ;FOR AUTOMATIC CORE EXPANSION\r
+                                IFNDEF EXPAND,< IFN K,<EXPAND=0>\r
+                                                IFE K,<EXPAND=1>>\r
+\r
+                                ;PP=1                   ;ALLOW PROJ-PROG #\r
+                                IFNDEF PP,<PP=0>\r
+\r
+                                ;CHN5=0                 ;IF CHAIN WHICH DOESN'T SAVES JOB41\r
+                                IFNDEF CHN5,<CHN5=1>\r
+\r
+                                IFE K,< TITLE   LOADER - LOADS MACROX AND SIXTRAN FOUR>\r
+                                IFN K,< TITLE   1KLOAD - LOADS MACROX>\r
+\r\f1KLOAD - LOADS MACROX                 PAGE 2\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                ;ACCUMULATOR ASSIGNMENTS\r
+                        000000          F=0             ;FLAGS IN LH, SA IN RH\r
+                        000001          N=1             ;PROGRAM NAME POINTER\r
+                        000002          X=2             ;LOADER OFFSET\r
+                        000003          H=3             ;HIGHEST LOC LOADED\r
+                        000004          S=4             ;UNDEFINED POINTER\r
+                        000005          R=5             ;RELOCATION CONSTANT\r
+                        000006          B=6             ;SYMBOL TABLE POINTER\r
+                        000007          D=7\r
+                        000010          T=10\r
+                        000011          V=T+1\r
+                        000012          W=12            ;VALUE\r
+                        000013          C=W+1           ;SYMBOL\r
+                        000014          E=C+1           ;DATA WORD COUNTER\r
+                        000015          Q=15            ;RELOCATION BITS\r
+                        000016          A=Q+1           ;SYMBOL SEARCH POINTER\r
+                        000017          P=17            ;PUSHDOWN POINTER\r
+                                ;FLAGS  F(0 - 17)\r
+                        000001          CSW==1                  ;ON - COLON SEEN\r
+                        000002          ESW==2                  ;ON - EXPLICIT EXTENSION IDENT.\r
+                        000004          SKIPSW==4               ;ON - DO NOT LOAD THIS PROGRAM\r
+                        000010          FSW==10                 ;ON - SCAN FORCED TO COMPLETION\r
+                        000020          FCONSW==20              ;ON - FORCE CONSOLE OUTPUT\r
+                        000100          ASW==100                ;ON - LEFT ARROW ILLEGAL\r
+                        000200          FULLSW==200             ;ON - STORAGE EXCEEDED\r
+                        000400          SLIBSW==400             ;ON - LIB SEARCH IN THIS PROG\r
+                        001000          DSYMSW==1000            ;ON - LOAD WITH SYMBOLS FOR DDT\r
+                        002000          REWSW==2000             ;ON - REWIND AFTER INIT\r
+                        004000          LIBSW==4000             ;ON - LIBRARY SEARCH MODE\r
+                        010000          F4LIB==10000            ;ON - F4 LIBRARY SEARCH LOOKUP\r
+                        020000          ISW==20000              ;ON - DO NOT PERFORM INIT\r
+                        040000          SYMSW==40000            ;ON - LOAD LOCAL SYMBOLS\r
+                        100000          DSW==100000             ;ON - CHAR IN IDENTIFIER\r
+                        200000          NSW==200000             ;ON - SUPPRESS LIBRARY SEARCH\r
+                        400000          SSW==400000             ;ON - SWITCH MODE\r
+                                ;FLAGS  N(0 - 17)\r
+                        000001          ALLFLG==1               ;ON - LIST ALL GLOBALS\r
+                        000002          ISAFLG==2               ;ON - IGNORE STARTING ADDRESSES\r
+                        000004          COMFLG==4               ;ON - SIZE OF COMMON SET\r
+                                IFE K,< F4SW==10                ;F4 IN PROGRESS\r
+                                        RCF==20                 ;READ DATA COUNT\r
+                                        SYDAT==40               ;SYMBOL IN DATA>\r
+                        000100          SLASH==100              ;SLASH SEEN\r
+                                IFE K,< BLKD1==200              ;ON- FIRST BLOCK DATA SEEN\r
+                                        PGM1==400               ;ON FIRST F4 PROG SEEN\r
+                                        DZER==1000              ;ON - ZERO SECOND DATA WORD>\r
+                        002000          EXEQSW==2000            ;IMMEDIATE EXECUTION\r
+                        004000          DDSW==4000              ;GO TO DDT\r
+                                IFN RPGSW,<RPGF==10000          ;IN RPG MODE>\r
+                        020000          AUXSWI==20000           ;ON - AUX. DEVICE INITIALIZED\r
+                        040000          AUXSWE==40000           ;ON - AUX. DEVICE ENTERED\r
+                                IFN PP,<PPSW==100000            ;ON - READING PROJ-PROG #\r
+                                        PPCSW==200000           ;ON - READING PROJ #>\r
+\r\f1KLOAD - LOADS MACROX                 PAGE 3\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+        000137                  LOC     137\r
+        000137  000000  000025  OCT 25          ;VERSION #\r
+        000000'                 RELOC\r
+                                        MLON\r
+                                        SALL\r
+\r
+\r
+\r
+                                ;MONITOR LOCATIONS IN THE USER AREA\r
+\r
+                        000140          JOBPRO==140             ;PROGRAM ORIGIN\r
+                        000134          JOBBLT==134             ;BLT ORIGIN\r
+                        000131          JOBCHN==131             ;RH = PROG BREAK OF FIRST BLOCK DATA\r
+                                                                ;LH = PROG BREAK OF FIRST F4 PROG\r
+\r
+                                ;CALLI DEFINITIONS\r
+\r
+                        000003  CDDTOUT==3      ;CALLI DDTOUT\r
+                        000012  CEXIT==12       ;CALLI EXIT\r
+                        000005  CDDTGT==5       ;CALLI DDTGT\r
+                        000002  CSETDDT==2      ;CALLI SETDDT\r
+\r
+                                ;LENGTH OF PUSHDOWN LIST FOR POLISH FIXUPS\r
+\r
+                        000060  PPDL==60\r
+\r\f1KLOAD - LOADS MACROX                 PAGE 4\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                IFN RPGSW,<\r
+                                RPGSET: CALLI 0\r
+                                        INIT 17,1       ;SET UP DSK\r
+                                        SIXBIT /DSK/\r
+                                        XWD 0,CTLIN\r
+                                        JRST NUTS\r
+                                        MOVE [SIXBIT /QQLOAD/]  ;NAME OF COMMAND FILE\r
+                                        MOVEM CTLNAM\r
+                                        MOVSI (SIXBIT /RPG/)    ;AND EXT\r
+                                        MOVEM CTLNAM+1\r
+                                        SETZM CTLNAM+3\r
+                                        LOOKUP 17,CTLNAM        ;THERE?\r
+                                        JRST NUTS       ;NO\r
+                                        INIT 16,16      ;GET SET TO DELETE QQLOAD.RPG\r
+                                        SIXBIT /DSK/\r
+                                        0\r
+                                        JRST LD         ;GIVE UP COMPLETELY\r
+                                        SETZM CTLNAM+3\r
+                                        HLLZS CTLNAM+1  ;CLEAR OUT EXTRA JUNK\r
+                                        LOOKUP 16,CTLNAM\r
+                                        JRST LD\r
+                                        RENAME 16,ZEROS ;DELETE IT\r
+                                        JFCL            ;IGNORE IF IT WILL NOT GO\r
+                                        RELEASE 16,0    ;GET RID OF THIS DEVICE\r
+                                        SETZM NONLOD    ;THIS IS NOT A CONTINUATION\r
+                                RPGS3:  MOVEI CTLBUF\r
+                                        MOVEM JOBFF     ;SET UP BUFFER\r
+                                        INBUF 17,1\r
+                                        MOVEI [ASCIZ /\r
+                                LOADING\r
+                                /]              ;PRINT MESSAGE THAT WE ARE STARTING\r
+                                        CALLI CDDTOUT\r
+                                        SKIPE NONLOD    ;CONTINUATION?\r
+                                        JRST RPGS2      ;YES, SPECIAL SETUP\r
+                                        MOVSI R,F.I     ;NOW SO WE CAN SET FLAG\r
+                                        BLT R,R\r
+                                        TLO N,RPGF\r
+                                        JRST CTLSET     ;SET UP TTY\r
+                                RPGS1:  PUSHJ P,[TLNE F,ESW     ;HERE FROM FOO* COMMAND, STORE NAME\r
+                                                JRST LDDT3      ;SAVE EXTENSION\r
+                                                TLZE F,CSW!DSW   ;OR AS NAME\r
+                                                MOVEM W,DTIN\r
+                                                POPJ P,]\r
+                                        MOVEM 0,SVRPG#  ;SAVE 0 JUST IN CASE\r
+                                        SETZM NONLOD#   ;DETERMINE IF CONTINUATION\r
+                                        MOVEI 0,2(B)    ;BY SEEING IF ANY SYMBOLS LOADED\r
+                                        CAME 0,JOBREL\r
+                                        SETOM NONLOD    ;SET TO -1 AND SKIP CALLI\r
+                                        MOVE 0,ILD1\r
+                                        MOVEM 0,RPG1\r
+                                        INIT 17,1\r
+                                RPG1:   0\r
+                                        XWD 0,CTLIN\r
+\r\f1KLOAD - LOADS MACROX                 PAGE 4-1\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                        JSP A,ILD5\r
+                                        LOOKUP 17,DTIN  ;THE FILE NAME\r
+                                        JRST ILD9\r
+                                        JRST RPGS3\r
+                                \r
+                                RPGS2:  MOVSI 0,RPGF    ;SET FLAG\r
+                                        IORM 0,F.C+N\r
+                                        TLO N,RPGF\r
+                                        MOVE 0,SVRPG\r
+                                        JRST LD2Q       ;BACK TO INPUT SCANNING\r
+                                >\r
+\r\f1KLOAD - LOADS MACROX                 PAGE 5\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+\r
+                                ;MONITOR LOADER CONTROL\r
+\r
+        000000'                 BEG:\r
+                                LD:     IFN RPGSW,<SKIPA        ;NORMAL INITIALIZE\r
+                                        JRST RPGSET     ;SPECIAL INIT>\r
+        000000' 513000  000042          HLLZS 42        ;GET RID OF ERROR COUNT IF NOT IN RPG MODE\r
+        000001' 047000  000000          CALLI   0               ;INITIALIZE THIS JOB\r
+        000002' 205240  001701' NUTS:   MOVSI     R,F.I         ;SET UP INITIAL ACCUMULATORS\r
+        000003' 251240  000005          BLT     R,R             \r
+        000004' 041140  000001  CTLSET: INIT    3,1             ;INITIALIZE CONSOLE\r
+        000005' 646471  000000          SIXBIT    /TTY/\r
+        000006' 001710' 001713'         XWD     BUFO,BUFI\r
+        000007' 047000  000012  CALLEX: CALLI   CEXIT           ;DEVICE ERROR, FATAL TO JOB\r
+        000010' 201600  001734'         MOVEI     E,TTY1\r
+        000011' 202600  000000*         MOVEM     E,JOBFF\r
+        000012' 064140  000001          INBUF     3,1\r
+        000013' 065140  000001          OUTBUF    3,1           ;INITIALIZE OUTPUT BUFFERS\r
+        000014' 067140  000000          OUTPUT    3,                    ;DO INITIAL REDUNDANT OUTPUT\r
+        000015' 550300  000000*         HRRZ    B,JOBREL        ;PICK UP CORE BOUND\r
+        000016' 332000  000000*         SKIPE   JOBDDT          ;DOES DDT EXIST?\r
+        000017' 550300  000000*         HRRZ    B,JOBSYM        ;USED BOTTOM OF SYMBOL TABLE INSTEAD\r
+        000020' 274300  001623'         SUB     B,SE3           ;INITIALIZE SYMBOL TABLE POINTER\r
+        000021' 303146  000001          CAILE     H,1(B)                ;TEST CORE ALLOCATION\r
+        000022' 047000  000012          CALLI   CEXIT           ;INSUFFICIENT CORE, FATAL TO JOB\r
+        000023' 204600  000002          MOVS    E,X             ;SET UP BLT POINTER\r
+        000024' 541602  000001          HRRI    E,1(X)\r
+        000025' 402014  777777          SETZM     -1(E)                 ;ZERO FIRST WORD\r
+        000026' 251606  000000          BLT     E,(B)           ;ZERO CORE UP TO THE SYMBOL AREA\r
+        000027' 550200  000006          HRRZ    S,B             ;INITIALIZE UNDEF. POINTER\r
+        000030' 540040  000006          HRR     N,B             ;INITIALIZE PROGRAM NAME POINTER\r
+        000031' 541240  000140          HRRI    R,JOBPRO        ;INITIALIZE THE LOAD ORIGIN\r
+        000032' 200600  001626'         MOVE    E,COMM          ;SET .COMM. AS THE FIRST PROGRAM\r
+        000033' 202606  000001          MOVEM     E,1(B)                ;STORE IN SYMBOL TABLE\r
+        000034' 552246  000002          HRRZM     R,2(B)                ;STORE COMMON ORIGIN\r
+        000035' 201600  001672'         MOVEI     E,F.C         ;INITIALIZE STATE OF THE LOADER\r
+        000036' 251600  001700'         BLT     E,B.C\r
+        000037' 402000  001631'         SETZM   MDG             ;MULTIPLY DEFINED GLOBAL COUNT\r
+        000040' 205500  254200          MOVSI   W,254200        ;STORE HALT IN JOB41\r
+        000041' 202502  000000*         MOVEM   W,JOB41(X)      ;...\r
+                                IFN LDAC!BLTSYM,<MOVEI W,20     ;SET UP SPACE TO SAVE FOR ACS AND\r
+                                        MOVEM W,KORSP#  ;USER DEFINITIONS WITH DDT>\r
+\r
+\r\f1KLOAD - LOADS MACROX                 PAGE 6\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+\r
+                                IFN RPGSW,<JRST LD2Q>\r
+                                LD2:    IFN RPGSW,<MOVSI B,RPGF ;HERE ON ERRORS, TURN OFF RPG\r
+                                        ANDCAM B,F.C+N  ;IN CORE>\r
+                                ;LOADER SCAN FOR FILE NAMES\r
+\r
+        000042' 205300  001672' LD2Q:   MOVSI     B,F.C         ;RESTORE ACCUMULATORS\r
+        000043' 251300  000006          BLT     B,B\r
+        000044' 200740  001625'         MOVE    P,PDLPT         ;INITIALIZE PUSHDOWN LIST\r
+        000045' 402000  001715'         SETZM     BUFI2         ;CLEAR INPUT BUFFER POINTER\r
+        000046' 402000  000522' IFE PP,<        SETZM     ILD1          ;CLEAR INPUT DEVICE NAME>\r
+                                IFN PP,<        MOVSI T,(SIXBIT /DSK/)  ;ASSUME DSK\r
+                                        MOVEM T,ILD1\r
+                                        SETZM OLDDEV#   ;TO MAKE IT GO BACK AFTER /D FOR LIBSR>\r
+        000047' 402000  001724'         SETZM     DTIN          ;CLEAR INPUT FILE NAME\r
+                                IFN PP,<SETZM   PPN#            ;CLEAR INPUT PROJ-PROG #>\r
+\r
+        000050' 071040  000000  LD2B:   RELEAS    1,                    ;RELEASE BINARY INPUT DEVICE\r
+                                IFN RPGSW,<     TLNE N,RPGF     ;NOT IF DOING RPG\r
+                                        JRST LD2BA>\r
+        000051' 201400  000052          MOVEI     T,"*"\r
+        000052' 136400  001711'         IDPB    T,BUFO1         ;OUTPUT ASTERISK TO START INPUT\r
+        000053' 067140  000000          OUTPUT    3,\r
+        000054' 621000  022707  LD2BA:  TLZ     F,FULLSW+ASW+ISW+CSW+ESW+SKIPSW+SLIBSW+REWSW\r
+        000055' 603000  004000          TLNE    F,LIBSW         ;WAS LIBRARY MODE ON?\r
+        000056' 661000  000004          TLO     F,SKIPSW        ;YES, NORMAL MODE IS SKIPPING\r
+\r
+                                LD2D:   IFN PP,<SETZM PPN       ;DO NOT REMEMBER PPNS FOR NOW\r
+                                LD2DB:  SKIPE W,OLDDEV  ;RESET DEVICE IF NEEDED\r
+                                        CAMN W,ILD1     ;IS IT SAME?\r
+                                        JRST LD2DA      ;YES, FORGET IT\r
+                                        TLZ F,ISW+DSW+FSW+REWSW\r
+                                        MOVEM W,ILD1>\r
+        000057'                 LD2DA:\r
+                                IFN RPGSW,<     SETZM DTIN1     ;CLEAR EXTENSION>\r
+        000057' 201500  000000          MOVEI     W,0           ;INITIALIZE IDENTIFIER SCAN\r
+        000060' 201600  000006          MOVEI     E,6           ;INITIALIZE CHARACTER COUNTER\r
+        000061' 200440  001624'         MOVE    V,LSTPT         ;INITIALIZE BYTE POINTER TO W\r
+        000062' 621000  500010          TLZ     F,SSW+DSW+FSW   ;LEAVE SWITCH MODE\r
+                                LD3:    IFN RPGSW,<TLNE N,RPGF  ;CHECK RPG FEATURE\r
+                                        JRST RPGRD>\r
+        000063' 377000  001715'         SOSG BUFI2      ;DECREMENT CHARACTER COUNT\r
+        000064' 066140  000000          INPUT     3,                    ;FILL TTY BUFFER\r
+        000065' 134400  001714'         ILDB    T,BUFI1         ;LOAD T WITH NEXT CHARACTER\r
+        000066' 200640  000010  LD3AA:  MOVE    Q,T\r
+        000067' 231640  000011          IDIVI     Q,11          ;TRANSLATE TO 4 BIT CODE\r
+        000070' 135656  000465'         LDB     Q,LD8(A)                ;LOAD CLASSIFICATION CODE\r
+        000071' 305640  000004          CAIGE     Q,4           ;MODIFY CODE IF .GE. 4\r
+        000072' 607000  400000          TLNN    F,SSW           ;MODIFY CODE IF SWITCH MODE OFF\r
+        000073' 271640  000004          ADDI    Q,4             ;MODIFY CLASS. CODE FOR DISPATCH\r
+        000074' 550715  000100'         HRRZ    A,LD3A(Q)               ;LOAD RH DISPATCH ENTRY\r
+        000075' 301640  000010          CAIL    Q,10            ;SKIP IF CORRECT DISPATCH ENTRY\r
+        000076' 554715  000070'         HLRZ    A,LD3A-10(Q)    ;LOAD LH DISPATCH ENTRY\r
+\r\f1KLOAD - LOADS MACROX                 PAGE 6-1\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+        000077' 254020  000016          JRST    @A                      ;JUMP TO INDICATED LOCATION\r
+\r
+                                ;COMMAND DISPATCH TABLE\r
+\r
+        000100' 000063' 000446' LD3A:   XWD     LD3,LD7B                ;IGNORED CHAR, BAD CHAR (SWITCH)\r
+        000101' 000365' 000372'         XWD     LD6A,LD6                ;</> OR <(>, LETTER (SWITCH)\r
+        000102' 000115' 000430'         XWD     LD5,LD6C                ;<:>, DIGIT (SWITCH ARG.)\r
+        000103' 000127' 000433'         XWD     LD5A,LD6D               ;<.>, ESCAPE SWITCH MODE <)>\r
+        000104' 000145' 000437'         XWD     LD5C,LD7                ;<=> OR <L. ARROW>, BAD CHAR.\r
+        000105' 000134' 000110'         XWD     LD5B,LD4                ;<,>, ALPHABETIC CHAR.\r
+        000106' 000201' 000110'         XWD     LD5D,LD4                ;<CR.>, NUMERIC CHAR.\r
+        000107' 000205' 000437'         XWD     LD5E1,LD7               ;<ALT MODE>, BAD CHAR. <)>\r
+\r
+                                IFN RPGSW,<RPGRD:       SOSG CTLIN+2    ;CHECK CHARACTER COUNT\r
+                                        JRST    [IN 17,0\r
+                                                JRST .+1        ;OK\r
+                                                STATO 17,740000\r
+                                                JRST LD2\r
+                                                JSP A,ERRPT\r
+                                                SIXBIT /ERROR WHILE READING COMMAND FILE%/\r
+                                                JRST LD2]\r
+                                        IBP CTLIN+1     ;ADVANCE POINTER\r
+                                        MOVE T,@CTLIN+1 ;AND CHECK FOR LINE #\r
+                                        TRNE T,1\r
+                                        JRST    [MOVNI T,5\r
+                                                ADDM T,CTLIN+2\r
+                                                AOS CTLIN+1\r
+                                                JRST RPGRD      ];GO READ AGAIN\r
+                                        LDB T,CTLIN+1   ;GET CHR\r
+                                        JRST LD3AA      ;PASS IT ON>\r
+\r\f1KLOAD - LOADS MACROX                 PAGE 7\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                ;ALPHANUMERIC CHARACTER, NORMAL MODE\r
+        000110' 361600  000063' LD4:    SOJL    E,LD3           ;JUMP IF NO SPACE FOR CHAR IN W\r
+        000111' 275400  000040          SUBI    T,40            ;CONVERT FROM ASCII TO SIXBIT\r
+        000112' 136400  000011          IDPB    T,V             ;DEPOSIT CHAR OF IDENTIFIER IN W\r
+        000113' 661000  100000          TLO     F,DSW           ;SET IDENTIFIER FLAG\r
+        000114' 254000  000063'         JRST    LD3             ;RETURN FOR NEXT CHARACTER\r
+\r
+                                ;DEVICE IDENTIFIER DELIMITER <:>\r
+\r
+        000115' 261740  000012  LD5:    PUSH    P,W             ;SAVE W\r
+        000116' 663000  000001          TLOE    F,CSW           ;TEST AND SET COLON FLAG\r
+        000117' 260740  000656'         PUSHJ     P,LDF         ;FORCE LOADING\r
+        000120' 262740  000012          POP     P,W             ;RESTORE W\r
+        000121' 603000  000002          TLNE    F,ESW           ;TEST SYNTAX\r
+        000122' 254000  000442'         JRST    LD7A            ;ERROR, MISSING COMMA ASSUMED\r
+        000123' 322500  000057'         JUMPE     W,LD2D                ;JUMP IF NULL DEVICE IDENTIFIER\r
+        000124' 202500  000522'         MOVEM     W,ILD1                ;STORE DEVICE IDENTIFIER\r
+                                IFN PP,<MOVEM W,OLDDEV  ;WE HAVE A NEW ONE SO IGNORE OLD>\r
+        000125' 621000  122010          TLZ     F,ISW+DSW+FSW+REWSW     ;CLEAR OLD DEVICE FLAGS\r
+                                IFN PP,<SETZM   PPN             ;CLEAR OLD PP #>\r
+        000126' 254000  000057'         JRST    LD2D            ;RETURN FOR NEXT IDENTIFIER\r
+\r
+                                ;FILE NAME EXTENSION IDENTIFIER DELIMITER <.>\r
+\r
+        000127' 663000  000002  LD5A:   TLOE    F,ESW           ;TEST AND SET EXTENSION FLAG\r
+        000130' 254000  000442'         JRST    LD7A            ;ERROR, TOO MANY PERIODS\r
+        000131' 623000  100001          TLZE    F,CSW+DSW       ;SKIP IF NULL IDENT AND NO COLON\r
+        000132' 202500  001724'         MOVEM     W,DTIN        ;STORE FILE IDENTIFIER\r
+        000133' 254000  000057'         JRST    LD2D            ;RETURN FOR NEXT IDENTIFIER\r
+\r
+                                ;INPUT SPECIFICATION DELIMITER <,>\r
+\r
+        000134'                 LD5B:\r
+                                IFN PP,<TLZE    N,PPCSW                 ;READING PP #?\r
+                                        JRST    [\r
+                                                HRLM    D,PPN   ;STORE PROJ #\r
+                                                JRST    LD6A1]  ;GET PROG #\r
+                                        PUSHJ   P,RBRA          ;CHECK FOR MISSING RBRA>\r
+        000134' 627000  000010          TLZN    F,FSW           ;SKIP IF PREV. FORCED LOADING\r
+        000135' 260740  000655'         PUSHJ     P,FSCN2               ;LOAD (FSW NOT SET)\r
+        000136' 254000  000057'         JRST    LD2D            ;RETURN FOR NEXT IDENTIFIER\r
+\r
+        000137' 603000  000002  LD5B1:  TLNE    F,ESW           ;TEST EXTENSION FLAG\r
+        000140' 254000  000627'         JRST    LDDT3           ;EXPLICIT EXTENSION IDENTIFIER\r
+        000141' 627000  100001          TLZN    F,CSW+DSW               ;SKIP IF IDENT. OR COLON\r
+        000142' 263740  000000          POPJ    P,\r
+        000143' 202500  001724'         MOVEM     W,DTIN                ;STORE FILE IDENTIFIER\r
+        000144' 254000  000626'         JRST    LDDT2           ;ASSUME <.REL> IN DEFAULT CASE\r
+\r\f1KLOAD - LOADS MACROX                 PAGE 8\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                ;OUTPUT SPECIFICATION DELIMITER <=> OR <LEFT ARROW>\r
+                                ;OR PROJ-PROG # BRACKETS <[> AND <]>\r
+        000145'                 LD5C:\r
+                                IFN RPGSW,<CAIN T,"@"   ;CHECK  FOR * COMMAND\r
+                                        JRST RPGS1>\r
+                                IFN PP,<CAIN    T,"["                   ;PROJ-PROG #?\r
+                                        JRST    [TLO    N,PPSW+PPCSW    ;SET FLAGS\r
+                                                MOVEM   W,PPNW#         ;SAVE W\r
+                                                MOVEM   E,PPNE#         ;SAVE E\r
+                                                MOVEM   V,PPNV#         ;SAVE V\r
+                                                JRST LD6A1-1]   ;READ NUMBERS AS SWITCHES \r
+                                        CAIN    T,"]"                   ;END OF PP #?\r
+                                        JRST    [PUSHJ  P,RBRA          ;PROCESS RIGHT BRACKET\r
+                                                JRST    LD3             ];READ NEXT IDENT>\r
+        000145' 663000  000100          TLOE    F,ASW                   ;TEST AND SET LEFT ARROW FLAG\r
+        000146' 254000  000442'         JRST    LD7A                    ;ERROR, MISPLACED LEFT ARROW\r
+        000147' 260740  000137'         PUSHJ     P,LD5B1               ;STORE IDENTIFIER\r
+        000150' 627000  000002          TLZN    F,ESW                   ;TEST EXTENSION FLAG\r
+        000151' 205500  554160          MOVSI     W,554160              ;ASSUME <.MAP> IN DEFAULT CASE\r
+        000152' 202500  001731'         MOVEM     W,DTOUT1              ;STORE FILE EXTENSION IDENTIFIER\r
+        000153' 200500  001724'         MOVE    W,DTIN                  ;LOAD INPUT FILE IDENTIFIER\r
+        000154' 202500  001730'         MOVEM     W,DTOUT               ;USE AS OUTPUT FILE IDENTIFIER\r
+                                IFN PP,<MOVE    W,PPN           ;PROJ-PROG #\r
+                                        MOVEM   W,DTOUT+3               ;...>\r
+        000155' 200500  000522'         MOVE    W,ILD1                  ;LOAD INPUT DEVICE IDENTIFIER\r
+        000156' 202500  000165'         MOVEM   W,LD5C1                 ;USE AS OUTPUT DEVICE IDENTIFIER\r
+                                IFN PP,<        SKIPE W,OLDDEV  ;RESTORE OLD\r
+                                        MOVEM W,ILD1>\r
+                                ;INITIALIZE AUXILIARY OUTPUT DEVICE\r
+        000157' 623040  060000          TLZE    N,AUXSWI+AUXSWE         ;FLUSH CURRENT DEVICE\r
+        000160' 071100  000000          RELEASE 2,                      ;...\r
+        000161' 040500  002420'         CALL    W,[SIXBIT ?DEVCHR?]     ;IS DEVICE A TTY?\r
+        000162' 603500  000010          TLNE    W,10                    ;...\r
+        000163' 254000  000057' JRST    LD2D            ;YES, SKIP INIT\r
+        000164' 041100  000001          INIT    2,1                     ;INIT THE AUXILIARY DEVICE\r
+        000165' 000000  000000  LD5C1:  0               ;AUXILIARY OUTPUT DEVICE NAME\r
+        000166' 001716' 000000          XWD     ABUF,0                  ;BUFFER HEADER\r
+        000167' 265700  000547'         JSP     A,ILD5                  ;ERROR RETURN\r
+        000170' 603000  002000          TLNE    F,REWSW                 ;REWIND REQUESTED?\r
+        000171' 040100  002421'         CALL    2,[SIXBIT /UTPCLR/]             ;DECTAPE REWIND\r
+        000172' 623000  002000          TLZE    F,REWSW                 ;SKIP IF NO REWIND REQUESTED\r
+        000173' 072100  000001          MTAPE   2,1                     ;REWIND THE AUX DEV\r
+        000174' 201600  002211'         MOVEI   E,AUX                   ;SET BUFFER ORIGIN\r
+        000175' 202600  000011*         MOVEM     E,JOBFF\r
+        000176' 065100  000001          OUTBUF  2,1                     ;INITIALIZE SINGLE BUFFER\r
+        000177' 661040  020000          TLO     N,AUXSWI                        ;SET INITIALIZED FLAG\r
+        000200' 254000  000057'         JRST    LD2D                    ;RETURN TO CONTINUE SCAN\r
+\r
+\r\f1KLOAD - LOADS MACROX                 PAGE 9\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+\r
+                                ;RIGHT SQUARE BRACKET (PROJ-PROG NUMBERS)\r
+                                IFN PP,<\r
+                                RBRA:   TLZN    N,PPSW          ;READING PP #?\r
+                                        POPJ    P,              ;NOPE, RETURN\r
+                                        TLZE    N,PPCSW         ;COMMA SEEN?\r
+                                        JRST    LD7A            ;NOPE, INDICATE ERROR\r
+                                        HRRM    D,PPN           ;STASH PROG NUMBER\r
+                                        MOVE    W,PPNW#         ;PICKUP OLD IDENT\r
+                                        MOVE    E,PPNE#         ;RESTORE CHAR COUNT\r
+                                        MOVE    V,PPNV#         ;RESTORE BYTE PNTR\r
+                                        POPJ    P,              ;TRA 1,4\r
+                                \r
+                                ;RIGHT JUSTIFY W\r
+                                \r
+                                RJUST:  JUMPE   W,LD7A          ;NOTHING TO RIGHT JUSTIFY\r
+                                        TRNE    W,77            ;IS W RJUSTED YET?\r
+                                        POPJ    P,              ;YES, TRA 1,4\r
+                                        LSH     W,-6            ;NOPE, TRY AGAIN\r
+                                        JRST    .-3             ;...>\r
+\r\f1KLOAD - LOADS MACROX                 PAGE 10\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+\r
+                                ;LINE TERMINATION <CARRIAGE RETURN>\r
+\r
+        000201'                 LD5D:\r
+                                IFN PP,<PUSHJ   P,RBRA          ;CHECK FOR UNTERMINATED PP #>\r
+        000201' 260740  000634'         PUSHJ     P,FSCN                ;FORCE SCAN TO COMPLETION\r
+        000202' 254000  000050'         JRST    LD2B            ;RETURN FOR NEXT LINE\r
+\r
+                                ;TERMINATE LOADING <ALT MODE>\r
+\r
+        000203' 332000  000007  LD5E:   SKIPE     D                     ;ENTER FROM G COMMAND\r
+        000204' 540000  000007          HRR     F,D             ;USE NUMERIC STARTING ADDRESS\r
+        000205'                 LD5E1:\r
+        000205' 260740  001600'         PUSHJ     P,CRLF                ;START A NEW LINE\r
+        000206' 260740  000227'         PUSHJ   P,SASYM         ;SETUP JOBSA,JOBFF,JOBSYM,JOBUSY\r
+                                IFN LDAC!BLTSYM,<HRRZ A,R               ;SET UP BLT OF ACS\r
+                                        ADDI A,(X)              ;END\r
+                                        ADD A,KORSP             ;ADD IN SPACE RESERVED\r
+                                        CAIL A,(S)\r
+                                IFN EXPAND,<JRST        [PUSHJ P,XPAND>\r
+                                                        PUSHJ   P,[\r
+                                IFE EXPAND,<                    JSP     A,ERRPT\r
+                                                                SIXBIT  /MORE CORE NEEDED#/>\r
+                                                                CALLI   CEXIT]\r
+                                IFN EXPAND,<            JRST .-1]>\r
+                                        HRRM R,BOTACS#          ;SAVE FOR LATER\r
+                                        HRRZ A,R                ;SET BLT\r
+                                        ADD A,X\r
+                                        HRL A,X\r
+                                        MOVE Q,A\r
+                                        BLT A,17(Q)>\r
+                                IFN BLTSYM,<HRRZ A,R    ;PLACE TO BLT TO\r
+                                        ADD A,KORSP\r
+                                        MOVE W,A        ;SAVE DEST\r
+                                        ADDI A,(X)      ;AFTER ADJUSTMENT\r
+                                        MOVE Q,S        ;UDEF PNTR\r
+                                        ADD Q,B         ;TOTAL UNDEFS AND DEFS IN LEFT\r
+                                        HLROS Q         ;NOW NEG IN RIGHT\r
+                                        MOVNS Q ;POSITIVE\r
+                                        ADDI Q,-1(A)    ;END OF BLT\r
+                                        HRLI A,1(S)     ;AND GET PLACE TO BLT FROM\r
+                                        SUBI W,1(S)     ;PREST LOC OF SYMBOL TABLE\r
+                                        ADDM W,JOBSYM(X)\r
+                                        ADDM W,JOBUSY(X)        ;ADJUST POINTERS\r
+                                        BLT A,(Q)       ;MOVE IT\r
+                                        SKIPN JOBDDT(X) ;IS DDT THERE?\r
+                                        JRST NODDT\r
+                                        SUBI Q,-1(X)\r
+                                        HRRM Q,JOBFF(X) ;RESTET JOBFF IF DDT IS IN\r
+                                        HRLM Q,JOBSA(X)\r
+                                NODDT:>\r
+        000207' 200500  002422'         MOVE    W,[SIXBIT ?LOADER?]     ;FINAL MESSAGE\r
+        000210' 260740  000251'         PUSHJ P,BLTSET          ;SETUP FOR FINAL BLT\r
+\r\f1KLOAD - LOADS MACROX                 PAGE 10-1\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+        000211' 071100  000000          RELEASE 2,              ;RELEASE AUX. DEV.\r
+                                IFN RPGSW,<RELEASE 17,0 ;RELEASE COMMAND DEVICE>\r
+        000212' 200500  002423' LD5E5:  MOVE    W,[BLT Q,(A)]   ;BLT OF ALL CODE\r
+        000213' 202500  000134          MOVEM   W,JOBBLT        ;STASH IN JOB DATA AREA\r
+        000214' 202502  000134          MOVEM   W,JOBBLT(X)     ;STASH IN RELOCATED JOBDATA AREA\r
+        000215' 200500  000007' LD5E2:  MOVE    W,CALLEX        ;EXIT AFTER BLT\r
+        000216' 627040  002000          TLZN    N,EXEQSW        ;IMMEDIATE EXECUTION REQUESTED?\r
+        000217' 254000  000225'         JRST    LD5E3           ;NOPE, LET USER TYPE START HIMSELF\r
+        000220' 550502  000000*         HRRZ    W,JOBSA(X)      ;PICKUP USUAL STARTING ADDRESS\r
+        000221' 603040  004000          TLNE    N,DDSW          ;DDT EXECUTION?\r
+        000222' 550502  000016*         HRRZ    W,JOBDDT(X)     ;USE DDT SA INSTEAD\r
+        000223' 322500  000215'         JUMPE   W,LD5E2         ;IF SA=0, DON'T EXECUTE\r
+        000224' 505500  254000          HRLI    W,(JRST)        ;INSTRUCTION TO EXECUTE\r
+        000225'                 LD5E3:\r
+        000225' 202502  000135  IFE LDAC,<MOVEM W,JOBBLT+1(X)   ;STASH FOR EXECUTION>\r
+                                IFN LDAC,<MOVEM W,JOBBLT+2(X)   ;STASH FOR EXECUTION\r
+                                        HRLZ    17,JOBFF(X)     ;BUT FIRST BLT ACS\r
+                                        MOVE    W,[BLT 17,17]   ;...\r
+                                        MOVEM   W,JOBBLT+1(X)   ;...>\r
+        000226' 254000  000134          JRST    JOBBLT          ;IF IT WERE DONE, 'TWERE BEST DONE QUICKLY\r
+\r
+\r
+\r\f1KLOAD - LOADS MACROX                 PAGE 11\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+\r
+                                ;SEARCH LIBRARY, PRINT UNDEFS, SETUP JOBSA,JOBFF,JOBSYM,JOBUSY\r
+\r
+        000227' 607000  200000  SASYM:  TLNN    F,NSW           ;SKIP IF NO SEARCH FLAG ON\r
+        000230' 260740  000557'         PUSHJ   P,LIBF          ;SEARCH LIBRARY FILE\r
+        000231' 260740  000634'         PUSHJ   P,FSCN          ;FORCE SCAN TO COMPLETION\r
+        000232' 260740  001332'         PUSHJ   P,PMS           ;PRINT UNDEFINEDS\r
+        000233' 552002  000220*         HRRZM   F,JOBSA(X)      ;RH OF JOBSA :=STARTING ADDRESS\r
+        000234' 550700  000003  SAS1:   HRRZ    A,H             ;COMPUTE PROG BREAK\r
+        000235' 275702  000000          SUBI    A,(X)           ;...\r
+        000236' 305705  000000          CAIGE   A,(R)           ;BUT NO HIGHER THAN RELOC\r
+        000237' 550700  000005          HRRZ    A,R             ;...\r
+        000240' 506702  000233*         HRLM    A,JOBSA(X)      ;LH OR JOBSA IS PROG BREAK\r
+        000241' 552702  000175*         HRRZM   A,JOBFF(X)      ;RH OF JOBFF CONTAINS PROG BREAK\r
+        000242' 200700  000006          MOVE    A,B             ;SET JOBSYM W/ SYMBOL TABLE POINTER\r
+        000243' 350000  000016          AOS     A               ;...\r
+        000244' 202702  000017*         MOVEM   A,JOBSYM(X)     ;...\r
+        000245' 200700  000004          MOVE    A,S             ;SET JOBUSY W/ UNDEFINED SYMBOL POINTER\r
+        000246' 350000  000016          AOS     A               ;...\r
+        000247' 202702  000000*         MOVEM   A,JOBUSY(X)     ;...\r
+        000250' 263740  000000          POPJ    P,              ;RETURN\r
+                                ;PRINT FINAL MESSAGE, SET UP BLT AC'S, SETDDT, RELEAS\r
+\r
+        000251' 260740  001577' BLTSET: PUSHJ   P,FCRLF         ;START FINAL MESSAGE\r
+        000252' 260740  001454'         PUSHJ   P,PWORD         ;PRINT W\r
+        000253' 260740  001431'         PUSHJ   P,SPACE\r
+        000254' 550640  000015*         HRRZ    Q,JOBREL        ;PUBLISH HOW MUCH CORE USED\r
+        000255' 242640  777766          LSH     Q,-12           ;...\r
+        000256' 271640  000001          ADDI    Q,1             ;...\r
+        000257' 260740  001420'         PUSHJ   P,RCNUM         ;PUBLISH THE NUMBER\r
+        000260' 200500  002424'         MOVE    W,[SIXBIT /K CORE/]     ;PUBLISH THE UNITS\r
+        000261' 260740  001454'         PUSHJ   P,PWORD         ;...\r
+        000262' 260740  001600'         PUSHJ   P,CRLF          ;...\r
+        000263' 205642  000020          MOVSI   Q,20(X)         ;HOW MUCH CODE TO BLT\r
+        000264' 541640  000020          HRRI    Q,20            ;...\r
+        000265' 550700  000042          HRRZ A,42               ;CHECK ON ERRORS\r
+        000266' 322700  000275'         JUMPE A,NOEX            ;NONE, GO AHEAD\r
+        000267' 627040  002000          TLZN N,EXEQSW           ;DID HE WANT TO START EXECUTION?\r
+        000270' 254000  000275'         JRST NOEX               ;NO\r
+        000271' 265700  001462'         JSP A ,ERRPT            ;PRINT AN ERROR MESSAGE\r
+        000272' 457045  436564          SIXBIT /EXECUTION DELETED@/\r
+        000273' 515756  004445\r
+        000274' 544564  454440\r
+        000275' 550700  000254* NOEX:   HRRZ    A,JOBREL        ;WHEN TO STOP BLT\r
+        000276' 552702  000275*         HRRZM   A,JOBREL(X)     ;SETUP FOR POSSIBLE IMMED. XEQ\r
+        000277' 275702  000000          SUBI    A,(X)           ;...\r
+        000300' 301704  000000  IFE BLTSYM,<CAIL        A,(S)           ;DON'T BLT OVER SYMBOL TABLE\r
+        000301' 201704  000000          MOVEI   A,(S)           ;OR UNDEFINED TABLE>\r
+        000302' 071040  000000          RELEAS  1,              ;RELEASE DEVICES\r
+        000303' 071140  000000          RELEAS  3,              ;...\r
+        000304' 200242  000222*         MOVE    R,JOBDDT(X)     ;SET NEW DDT\r
+        000305' 047240  000002          CALLI   R,CSETDDT       ;...\r
+        000306' 263740  000000          POPJ    P,              ;RETURN\r
+\r\f1KLOAD - LOADS MACROX                 PAGE 11-1\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+\r
+\r\f1KLOAD - LOADS MACROX                 PAGE 12\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+\r
+                                ;WRITE CHAIN FILES\r
+\r
+        000307' 334702  000131  CHNC:   SKIPA   A,JOBCHN(X)     ;CHAIN FROM BREAK OF FIRST BLOCK DATA\r
+        000310' 544702  000131  CHNR:   HLR     A,JOBCHN(X)     ;CHAIN FROM BREAK OF FIRST F4 PROG\r
+        000311' 553000  000016          HRRZS   A               ;ONLY RIGHT HALF IS SIGNIFICANT\r
+        000312' 322700  000452'         JUMPE   A,LD7C          ;DON'T CHAIN IF ZERO\r
+        000313' 607040  020000          TLNN    N,AUXSWI        ;IS THERE AN AUX DEV?\r
+        000314' 254000  000460'         JRST    LD7D            ;NO, DON'T CHAIN\r
+        000315' 261740  000016          PUSH    P,A             ;SAVE WHEREFROM TO CHAIN\r
+        000316' 332000  000007          SKIPE   D               ;STARTING ADDR SPECIFIED?\r
+        000317' 540000  000007          HRR     F,D             ;USE IT\r
+        000320' 260740  000227'         PUSHJ   P,SASYM         ;DO LIB SEARCH, SETUP JOBSA, ETC.\r
+        000321' 262740  000016          POP     P,A             ;GET WHEREFROM\r
+        000322' 210500  000276*         MOVN    W,JOBREL        ;CALCULATE IOWD FOR DUMP\r
+        000323' 271516  777773          ADDI    W,-1-3-CHN5(A)  ;...\r
+        000324' 505516  777773          HRLI    W,-4-CHN5(A)    ;...\r
+        000325' 206500  000363'         MOVSM   W,IOWDPP        ;...\r
+        000326' 271702  777773          ADDI    A,-4-CHN5(X)    ;ADD IN OFFSET\r
+        000327' 261702  000244* IFN CHN5,<PUSH  A,JOBSYM(X)     ;SETUP FOUR WORD TABLE\r
+        000330' 261702  000041*         PUSH    A,JOB41(X)      ;...>\r
+        000331' 261702  000304*         PUSH    A,JOBDDT(X)     ;JOBDDT IN ALL CASES\r
+                                IFE CHN5,<PUSH  A,JOBSYM(X)     ;JOBDDT, JOBSYM, JOBSA>\r
+        000332' 261702  000240*         PUSH    A,JOBSA(X)      ;JOBRYM ALWAYS LAST\r
+        000333' 070100  000000          CLOSE   2,              ;INSURE END OF MAP FILE\r
+        000334' 060100  000017          SETSTS  2,17            ;SET AUX DEV TO DUMP MODE\r
+        000335' 205500  435056          MOVSI   W,435056        ;USE .CHN AS EXTENSION\r
+        000336' 202500  001731'         MOVEM   W,DTOUT1        ;...\r
+        000337' 260740  001375'         PUSHJ   P,IAD2          ;DO THE ENTER\r
+        000340' 621040  060000          TLZ     N,AUXSWI+AUXSWE ;INSURE NO PRINTED OUTPUT\r
+        000341' 200500  002425'         MOVE    W,[SIXBIT ?CHAIN?]      ;FINAL MESSAGE\r
+        000342' 260740  000251'         PUSHJ   P,BLTSET                ;SETUP BLT PNTR, SETDDT, RELEAS\r
+        000343' 047000  000005          CALLI   CDDTGT          ;START DDT MODE OUTPUT\r
+        000344' 205600  000350'         MOVSI   CHNBLT,CHAIN3   ;BLT CHAIN3 INTO ACS\r
+        000345' 251600  000014          BLT     CHNBLT,CHNBLT   ;...\r
+        000346' 201740  000010          MOVEI   P,CHNERR        ;POINTER TO ERR MESS\r
+        000347' 254000  000000          JRST    0               ;GO DO CHAIN\r
+\r
+\r\f1KLOAD - LOADS MACROX                 PAGE 13\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+\r
+                                ;THE AC SECTION OF CHAIN\r
+\r
+        000350'                 CHAIN3:\r
+        000000                          PHASE   0\r
+        000350' 251656  000000          BLT     Q,(A)           ;USUAL LDRBLT\r
+        000351' 067100  000013          OUTPUT  2,IOWDP         ;WRITE THE CHAIN FILE\r
+        000352' 063100  760000          STATZ   2,IOBAD!IODEND  ;CHECK FOR ERROR OR EOF\r
+        000353' 254000  000006          JRST    LOSEBIG         ;FOUND SAME, GO GRIPE\r
+        000354' 070100  000000          CLOSE   2,              ;FINISH OUTPUT\r
+        000355' 063100  760000          STATZ   2,IOBAD!IODEND  ;CHECK FOR FINAL ERROR\r
+        000356' 047000  000003  LOSEBI: CALLI   CDDTOUT         ;GRIPE ABOUT ERROR\r
+        000357' 047000  000012          CALLI   CEXIT           ;EXIT\r
+        000360' 422132  644606  CHNERR: ASCIZ   ?DEVICE ERROR?  ;ERROR MESSAGE\r
+        000361' 425010  551244\r
+        000362' 476440  000000\r
+        000363' 000000  000000  IOWDP:  Z                       ;STORE IOWD FOR DUMP HERE\r
+        000014                  CHNBLT:                         ;LAST WORD OF AC CHAIN (ZERO OF I/O POINTER)\r
+        000364'                         DEPHASE\r
+                        000363' IOWDPP=.-1                      ;MEMORY LOC OF AC IOWDP\r
+        000364' 000000  000000          Z                       ;TERMINATOR OF DUMP MODE LIST\r
+\r
+\r\f1KLOAD - LOADS MACROX                 PAGE 14\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                ;EXPAND CORE\r
+\r
+                                IFN EXPAND,<\r
+                                XPAND:  PUSH P,H        ;GET SOME REGISTERS TO USE\r
+                                        PUSH P,X\r
+                                        PUSH P,N\r
+                                        HRRZ X,JOBREL   ;WHAT WE WANT\r
+                                        ADDI X,2000\r
+                                        CALLI X,11       ;CORE ALLOCATOR CALLS THIS\r
+                                        JRST XPAND6\r
+                                IFE K,<         HRRZ H,MLTP     ;GET LOWEST LOCATION\r
+                                        TLNN N,F4SW     ;IS FORTRAN LOADING>\r
+                                        HRRZ H,S        ;NO, USE S\r
+                                        HRRZ X,JOBREL   ;NOW MOVE\r
+                                        SUBI X,2000\r
+                                XPAND2: MOVE N,(X)\r
+                                        MOVEM N,2000(X)\r
+                                        CAMLE X,H       ;TEST FOR END\r
+                                        SOJA X,XPAND2;          HAND EYE SYSTEM MOVES TABLE\r
+                                        HRLI H,-2000\r
+                                        SETZM (H)       ;ZERO NEW CORE\r
+                                        AOBJN H,.-1\r
+                                        MOVEI H,2000\r
+                                        ADDM H,S\r
+                                        ADDM H,B\r
+                                        ADDM H,JOBSYM\r
+                                        POP P,N\r
+                                        ADDI N,2000\r
+                                IFE K,< TLNN N,F4SW     ;F4?\r
+                                        JRST    XPAND3\r
+                                        ADDM H,PLTP\r
+                                        ADDM H,BITP\r
+                                        ADDM H,SDSTP\r
+                                        ADDM H,MLTP\r
+                                        TLNE N,SYDAT\r
+                                        ADDM H,V>\r
+                                XPAND3:\r
+                                        POP P,X\r
+                                        POP P,H\r
+                                        AOS (P)\r
+                                        POPJ P,\r
+                                XPAND6: JUMPE X,XPAND4\r
+                                        JSP A,ERRPT\r
+                                        SIXBIT /CORE AVAILABLE, BUT NOT TO YOU#/\r
+                                XPAND4: JSP A,ERRPT\r
+                                        SIXBIT /MORE CORE NEEDED#/\r
+                                XPAND5: POP P,N\r
+                                        POP P,X\r
+                                        POP P,H\r
+                                        POPJ P,\r
+                                \r
+                                XPAND7: PUSHJ   P,XPAND\r
+                                        JRST    SFULLC\r
+\r\f1KLOAD - LOADS MACROX                 PAGE 14-1\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                        JRST    POPJM2\r
+                                \r
+                                POPJM3: SOS     (P)             ;POPJ TO CALL-2\r
+                                POPJM2: SOS     (P)             ;POPJ TO CALL-1\r
+                                        SOS     (P)             ;SAME AS POPJ TO\r
+                                        POPJ    P,              ;NORMAL POPJ MINUS TWO\r
+                                        >\r
+\r\f1KLOAD - LOADS MACROX                 PAGE 15\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+\r
+\r
+                                ;ENTER SWITCH MODE\r
+\r
+        000365' 306400  000057  LD6A:   CAIN    T,57            ;WAS CHAR A SLASH?\r
+        000366' 661040  000100          TLO     N,SLASH         ;REMEBER THAT\r
+        000367' 661000  400000          TLO     F,SSW           ;ENTER SWITCH MODE\r
+        000370' 201340  000000  LD6A1:  MOVEI   D,0             ;ZERO THE NUBER REGISTER\r
+        000371' 254000  000063'         JRST    LD3             ;EAT A SWITCH\r
+\r
+                                ;ALPHABETIC CHARACTER, SWITCH MODE\r
+\r
+        000372' 256010  000275' LD6:    XCT     LD6B-101(T)     ;EXECUTE SWITCH FUNCTION\r
+        000373' 623040  000100          TLZE    N,SLASH ;SWITCH MODE ENTERED W/ SLASH?\r
+        000374' 254000  000433'         JRST    LD6D            ;LEAVE SWITCH MODE\r
+        000375' 254000  000370'         JRST    LD6A1           ;STAY IN SWITCH MODE\r
+\r
+                                ;DISPATCH TABLE FOR SWITCHES\r
+\r
+                                ;       THE INSTRUCTION AT THE CHARACTER LOCATION IS EXECUTED\r
+\r
+        000376' 661040  000001  LD6B:   TLO     N,ALLFLG        ;A - LIST ALL GLOBALS\r
+        000377' 254000  000446'         JRST    LD7B            ;B - ERROR\r
+        000400' 260740  000307'         PUSHJ   P,CHNC          ;C - CHAIN, START W/ COMMON\r
+        000401' 260740  000614'         PUSHJ     P,LDDT        ;D - DEBUG OPTION, LOAD DDT\r
+        000402' 661040  002000          TLO     N,EXEQSW        ;E - LOAD AND GO\r
+        000403' 260740  000557'         PUSHJ     P,LIBF        ;F - LIBRARY SEARCH\r
+        000404' 260740  000203'         PUSHJ     P,LD5E        ;G - GO INTO EXECUTION\r
+        000405' 260740  000607'         PUSHJ P,LRAIDX          ;H - LOAD AN START RAID\r
+        000406' 661040  000002          TLO     N,ISAFLG        ;I - IGNORE STARTING ADDRESSES\r
+        000407' 621040  000002          TLZ     N,ISAFLG        ;J - USE STARTING ADDRESSES\r
+        000410' 254000  000446' IFE BLTSYM,<JRST        LD7B            ;K - ERROR>\r
+                                IFN BLTSYM,<PUSHJ P,KORADJ      ;K - RESERVE SPACE FOR SYM DEFS>\r
+        000411' 661000  004004          TLO     F,LIBSW+SKIPSW  ;L - ENTER LIBRARY SEARCH\r
+        000412' 260740  001261'         PUSHJ     P,PRMAP       ;M - PRINT STORAGE MAP\r
+        000413' 621000  004004          TLZ     F,LIBSW+SKIPSW  ;N - LEAVE LIBRARY SEARCH\r
+        000414' 540240  000007          HRR     R,D             ;O - NEW PROGRAM ORIGIN\r
+        000415' 661000  200000          TLO     F,NSW           ;P - PREVENT AUTO. LIB. SEARCH\r
+        000416' 621000  200000          TLZ     F,NSW           ;Q - ALLOW AUTO. LIB. SEARCH\r
+        000417' 260740  000310'         PUSHJ   P,CHNR          ;R - CHAIN, START W/ RESIDENT\r
+        000420' 661000  040000          TLO     F,SYMSW         ;S - LOAD WITH SYMBOLS\r
+        000421' 260740  000613'         PUSHJ   P,LDDTX         ;T - LOAD AND GO TO DDT\r
+        000422' 260740  001332'         PUSHJ     P,PMS         ;U - PRINT UNDEFINED LIST\r
+        000423' 260740  000610'         PUSHJ P,LRAID           ;V - LOAD RAID\r
+        000424' 621000  041000          TLZ     F,SYMSW+DSYMSW  ;W - LOAD WITHOUT SYMBOLS\r
+        000425' 621040  000001          TLZ     N,ALLFLG        ;X - DO NOT LIST ALL GLOBALS\r
+        000426' 661000  002000          TLO     F,REWSW         ;Y - REWIND BEFORE USE\r
+        000427' 254000  000000'         JRST    LD              ;Z - RESTART LOADER\r
+\r
+\r\f1KLOAD - LOADS MACROX                 PAGE 16\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+\r
+                                ;SWITCH MODE NUMERIC ARGUMENT\r
+\r
+        000430' 242340  000003  LD6C:   LSH     D,3             ;BUILD OCTAL NUMERIC ARGUMENT\r
+        000431' 271350  777720          ADDI    D,-60(T)\r
+        000432' 254000  000063'         JRST    LD3\r
+\r
+                                ;EXIT FROM SWITCH MODE\r
+\r
+        000433' 621000  400000  LD6D:   TLZ     F,SSW           ;CLEAR SWITCH MODE FLAG\r
+        000434' 603000  000010          TLNE    F,FSW           ;TEST FORCED SCAN FLAG\r
+        000435' 254000  000057'         JRST    LD2D            ;SCAN FORCED, START NEW IDENT.\r
+        000436' 254000  000063'         JRST    LD3             ;SCAN NOT FORCED, USE PREV IDENT\r
+                                ;ILLEGAL CHARACTER, NORMAL MODE\r
+\r
+        000437' 265700  001526' LD7:    JSP     A,ERRPT8\r
+        000440' 435041  621605          SIXBIT    /CHAR.%/\r
+        000441' 254000  000042'         JRST    LD2\r
+\r
+                                ;SYNTAX ERROR, NORMAL MODE\r
+\r
+        000442' 265700  001526' LD7A:   JSP     A,ERRPT8\r
+        000443' 637156  644170          SIXBIT    /SYNTAX%/\r
+        000444' 050000  000000\r
+        000445' 254000  000042'         JRST    LD2\r
+\r
+                                ;ILLEGAL CHARACTER, SWITCH MODE\r
+\r
+        000446' 265700  001526' LD7B:   JSP     A,ERRPT8\r
+        000447' 636751  644350          SIXBIT    /SWITCH%/\r
+        000450' 050000  000000\r
+        000451' 254000  000042'         JRST    LD2\r
+\r
+                                ;ATTEMPT TO CHAIN WITH SPECIFIED HALF OF JOBCHN = 0\r
+\r
+        000452' 265700  001462' LD7C:   JSP     A,ERRPT         ;GRIPE\r
+        000453' 655643  504151          SIXBIT  ?UNCHAINABLE AS LOADED@?\r
+        000454' 564142  544500\r
+        000455' 416300  545741\r
+        000456' 444544  400000\r
+        000457' 254000  000042'         JRST    LD2\r
+\r
+                                ;ATTEMP TO CHAIN WITHOUT SPECIFYING DEVICE\r
+\r
+        000460' 265700  001462' LD7D:   JSP     A,ERRPT         ;GRIPE\r
+        000461' 565700  435041          SIXBIT  ?NO CHAIN DEVICE@?\r
+        000462' 515600  444566\r
+        000463' 514345  400000\r
+        000464' 254000  000042'         JRST    LD2\r
+\r
+                                IFN BLTSYM,<KORADJ:     CAMLE D,KORSP   ;IF SMALLER IGNORE\r
+                                        MOVEM D,KORSP\r
+                                        POPJ P,>\r
+\r\f1KLOAD - LOADS MACROX                 PAGE 17\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+\r
+                                ;CHARACTER CLASSIFICATION TABLE DESCRIPTION:\r
+\r
+                                ;       EACH CHARACTER HAS ASSOCIATED WITH IT A FOUR BIT BYTE\r
+                                ;       PACKED IN THE CHARACTER CLASSIFICATION TABLE.  THE CHARACTER\r
+                                ;       CLASSIFICATION CODES ARE ORDERED IN SUCH A WAY AS TO GIVE\r
+                                ;       DELIMITERS OF HIGHER PRECEDENCE LOWER CLASSIFICATION NUMBERS.\r
+                                ;       CERTAIN CHARACTERS HAVE NO EFFECT ON THE COMMAND STRING, AND\r
+                                ;       THEREFORE DO NOT EFFECT ORDERING OF DELIMITERS.  FOUR CODES\r
+                                ;       ARE RESERVED FOR ALTERNATE DISPATCHES WHILE THE SWITCH MODE IS\r
+                                ;       IN EFFECT.\r
+\r
+\r
+                                ;CLASSIFICATION BYTE CODES:\r
+\r
+                                ;       BYTE DISP CLASSIFICATION\r
+\r
+                                ;       00 - 00  ILLEGAL CHARACTER, SWITCH MODE\r
+                                ;       01 - 01  ALPHABETIC CHARACTER, SWITCH MODE\r
+                                ;       02 - 02  NUMERIC CHARACTER, SWITCH MODE\r
+                                ;       03 - 03  SWITCH MODE ESCAPE, SWITCH MODE\r
+\r
+                                ;       00 - 04  ILLEGAL CHARACTER, NORMAL MODE\r
+                                ;       01 - 05  ALPHABETIC CHARACTER, NORMAL MODE\r
+                                ;       02 - 06  NUMERIC CHARACTER, NORMAL MODE\r
+                                ;       03 - 07  SWITCH MODE ESCAPE, NORMAL MODE\r
+\r
+                                ;       04 - 10  IGNORED CHARACTER\r
+                                ;       05 - 11  ENTER SWITCH MODE CHARACTER\r
+                                ;       06 - 12  DEVICE IDENTIFIER DELIMITER\r
+                                ;       07 - 13  FILE EXTENSION DELIMITER\r
+                                ;       10 - 14  OUTPUT SPECIFICATION DELIMITER\r
+                                ;       11 - 15  INPUT SPECIFICATION DELIMITER\r
+                                ;       12 - 16  LINE TERMINATION\r
+                                ;       13 - 17  JOB TERMINATION\r
+\r
+\r\f1KLOAD - LOADS MACROX                 PAGE 18\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+\r
+                                ;BYTE POINTERS TO CHARACTER CLASSIFICATION TABLE\r
+\r
+        000465' 400415  000476' LD8:    POINT     4,LD9(Q),3\r
+        000466' 340415  000476'         POINT     4,LD9(Q),7\r
+        000467' 300415  000476'         POINT     4,LD9(Q),11\r
+        000470' 240415  000476'         POINT     4,LD9(Q),15\r
+        000471' 200415  000476'         POINT     4,LD9(Q),19\r
+        000472' 140415  000476'         POINT     4,LD9(Q),23\r
+        000473' 100415  000476'         POINT     4,LD9(Q),27\r
+        000474' 040415  000476'         POINT     4,LD9(Q),31\r
+        000475' 000415  000476'         POINT     4,LD9(Q),35\r
+\r
+                                ;CHARACTER CLASSIFIACTION TABLE\r
+\r
+        000476' 200000  000000  LD9:    BYTE    (4)4,0,0,0,0,0,0,0,0\r
+        000477' 210422  400000          BYTE    (4)4,4,4,4,12,0,0,0,0\r
+        000500' 000000  000000          BYTE    (4)0,0,0,0,0,0,0,0,0\r
+        000501' 540000  040100          BYTE    (4)13,0,0,0,0,4,0,4,0\r
+        000502' 000001  230011          BYTE    (4)0,0,0,0,5,3,0,0,11\r
+        000503' 016510  421042          BYTE    (4)0,7,5,2,2,2,2,2,2\r
+        000504' 104211  400200          BYTE    (4)2,2,2,2,6,0,0,10,0\r
+        000505' 000104  210421  IFE RPGSW,<     BYTE    (4)0,0,1,1,1,1,1,1,1>\r
+                                IFN RPGSW,<     BYTE (4) 0,10,1,1,1,1,1,1,1>\r
+        000506' 042104  210421          BYTE    (4)1,1,1,1,1,1,1,1,1\r
+        000507' 042104  210421          BYTE    (4)1,1,1,1,1,1,1,1,1\r
+        000510' 040000  100000  IFE PP,<BYTE    (4)1,0,0,0,0,10,0,0,0>\r
+                                IFN PP,<BYTE    (4)1,10,0,10,0,10,0,0,0>\r
+        000511' 000000  000000          BYTE    (4)0,0,0,0,0,0,0,0,0\r
+        000512' 000000  000000          BYTE    (4)0,0,0,0,0,0,0,0,0\r
+        000513' 000000  000013          BYTE    (4)0,0,0,0,0,0,0,0,13\r
+        000514' 550000  000000          BYTE    (4)13,4\r
+\r
+\r\f1KLOAD - LOADS MACROX                 PAGE 19\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+\r
+                                ;INITIALIZE LOADING OF A FILE\r
+\r
+        000515' 201500  002006' ILD:    MOVEI     W,BUF1                ;LOAD BUFFER ORIGIN\r
+        000516' 202500  000241*         MOVEM     W,JOBFF\r
+        000517' 663000  020000          TLOE    F,ISW           ;SKIP IF INIT REQUIRED\r
+        000520' 254000  000525'         JRST    ILD6            ;DONT DO INIT\r
+        000521' 041040  000014          INIT    1,14\r
+        000522' 000000  000000  ILD1:   0                               ;LOADER INPUT DEVICE\r
+        000523' 000000  001721'         XWD     0,BUFR\r
+        000524' 265700  000547'         JSP     A,ILD5          ;ERROR RETURN\r
+        000525' 623000  002000  ILD6:   TLZE    F,REWSW         ;SKIP IF NO REWIND\r
+        000526' 072040  000001          MTAPE   1,1             ;REWIND\r
+        000527' 076040  001724' ILD2:   LOOKUP    1,DTIN                ;LOOK UP FILE FROM DIRECTORY\r
+        000530' 254000  000535'         JRST    ILD3            ;FILE NOT IN DIRECTORY\r
+                                IFE K,< INBUF     1,2           ;SET UP BUFFERS>\r
+        000531' 064040  000001  IFN K,< INBUF   1,1             ;SET UP BUFFER>\r
+        000532' 661000  000100          TLO     F,ASW           ;SET LEFT ARROW ILLEGAL FLAG\r
+        000533' 621000  010002          TLZ     F,ESW+F4LIB     ;CLEAR EXTENSION FLAG\r
+        000534' 263740  000000          POPJ    P,\r
+\r
+                                ;       LOOKUP FAILURE\r
+\r
+        000535' 663000  000002  ILD3:   TLOE    F,ESW           ;SKIP IF .REL WAS ASSUMED\r
+        000536' 254000  000541'         JRST    ILD4            ;FATAL LOOKUP FAILURE\r
+        000537' 402000  001725'         SETZM     DTIN1         ;ZERO FILE EXTENSION\r
+        000540' 254000  000527'         JRST    ILD2            ;TRY AGAIN WITH NULL EXTENSION\r
+\r
+        000541' 623000  010000  ILD4:   TLZE    F,F4LIB         ;WAS THIS A TRY FOR F40 LIBRARY?\r
+                                        JRST    [MOVE   W,[SIXBIT /LIB4/]; YES, TRY LIB4\r
+                                                MOVEM   W,DTIN          ;...\r
+                                                PUSHJ   P,LDDT2         ;USE .REL EXTENSION\r
+                                                TLZ     F,ESW           ;...\r
+        000542' 254000  002427'                 JRST    ILD2            ];GO TRY AGAIN\r
+        000543' 265700  001462' ILD9:   JSP     A,ERRPT\r
+        000544' 434156  565764          SIXBIT    /CANNOT FIND#/\r
+        000545' 004651  564403\r
+        000546' 254000  000042'         JRST    LD2\r
+\r
+                                ;       DEVICE SELECTION ERROR\r
+\r
+        000547' 200516  777775  ILD5:   MOVE    W,-3(A)         ;LOAD DEVICE NAME FROM INIT\r
+        000550' 661000  000020          TLO     F,FCONSW        ;INSURE TTY OUTPUT\r
+        000551' 260740  001553'         PUSHJ   P,PRQ           ;START W/ ?\r
+        000552' 260740  001454'         PUSHJ     P,PWORD               ;PRINT DEVICE NAME\r
+        000553' 265700  001541'         JSP     A,ERRPT7\r
+        000554' 655641  664151          SIXBIT    /UNAVAILABLE@/\r
+        000555' 544142  544540\r
+        000556' 254000  000042'         JRST    LD2\r
+\r\f1KLOAD - LOADS MACROX                 PAGE 20\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+\r
+                                ;LIBRARY SEARCH CONTROL AND LOADER CONTROL\r
+\r
+                                ;LIBF ENABLES A LIBRARY SEARCH OF <SYS:LIB4.REL>\r
+\r
+        000557' 260740  000652' LIBF:   PUSHJ     P,FSCN1               ;FORCE SCAN TO COMPLETION\r
+        000560' 260740  000564'         PUSHJ   P,LIBF1                 ;LOAD SYS:JOBDAT.REL\r
+        000561' 661000  010000          TLO     F,F4LIB                 ;INDICATE FORTRAN LIBRARY SEARCH\r
+        000562' 200500  002434'         MOVE    W,[SIXBIT /LIB40/]      ;FIRST TRY AT NAME\r
+        000563' 260740  000565'         PUSHJ   P,LIBF2                 ;LOAD SYS:LIB40.REL\r
+        000564' 200500  002435' LIBF1:  MOVE    W,[SIXBIT /JOBDAT/]     ;LOAD SYS:JOBDAT.REL\r
+        000565' 260740  000622' LIBF2:  PUSHJ     P,LDDT1\r
+        000566' 325200  000633'         JUMPGE    S,EOF2                ;JUMP IF NO UNDEFINED GLOBALS\r
+        000567' 661000  000404          TLO     F,SLIBSW+SKIPSW ;ENABLE LIBRARY SEARCH\r
+        000570' 621000  041000          TLZ     F,SYMSW+DSYMSW  ;DISABLE LOADING WITH SYMBOLS\r
+        000571' 254000  000656'         JRST    LDF             ;INITIALIZE LOADING LIB4\r
+\r
+                                ;       LIB CONTROLS THE LIBRARY SEARCH OF ONE FILE\r
+\r
+        000572' 325200  000632' LIB:    JUMPGE    S,EOF1                ;JUMP IF NO UNDEFINED GLOBALS\r
+        000573' 661000  000004          TLO     F,SKIPSW                ;SET SKIPSW TO IGNORE MODE\r
+        000574' 254000  000657'         JRST    LOAD            ;CONTINUE LIB. SEARCH\r
+\r
+        000575' 302700  000004  LIB1:   CAIE    A,4             ;TEST FOR ENTRY BLOCK\r
+        000576' 254000  000605'         JRST    LIB3            ;NOT AN ENTRY BLOCK, IGNORE IT\r
+        000577' 260740  001243' LIB2:   PUSHJ     P,RWORD               ;READ ONE DATA WORD\r
+        000600' 200540  000012          MOVE    C,W\r
+        000601' 661540  040000          TLO     C,040000                ;SET CODE BITS FOR SEARCH\r
+        000602' 260740  001224'         PUSHJ     P,SREQ\r
+        000603' 625000  000004          TLZA    F,SKIPSW                ;REQUEST MATCHES ENTRY, LOAD\r
+        000604' 254000  000577'         JRST    LIB2            ;NOT FOUND\r
+        000605' 260740  001243' LIB3:   PUSHJ     P,RWORD               ;READ AND IGNORE ONE DATA WORD\r
+        000606' 254000  000605'         JRST    LIB3            ;LOOP TO IGNORE INPUT\r
+\r
+                                ;LDDT LOADS <SYS:DDT.REL> AND SETS DSYMSW\r
+\r
+        000607' 661040  006000  LRAIDX: TLO N,DDSW!EXEQSW       ;H - LOAD AND START RAID\r
+        000610' 260740  000652' LRAID:  PUSHJ P,FSCN1           ;FORCE END OF SCAN\r
+        000611' 200500  002436'         MOVE W,[SIXBIT /RAID/]\r
+        000612' 254000  000616'         JRST LDDT0\r
+        000613' 661040  006000  LDDTX:  TLO     N,DDSW+EXEQSW   ;T - LOAD AND GO TO DDT\r
+        000614' 260740  000652' LDDT:   PUSHJ     P,FSCN1               ;FORCE SCAN TO COMPLETION\r
+        000615' 205500  444464          MOVSI     W,444464              ;FILE IDENTIFIER <DDT>\r
+        000616' 260740  000622' LDDT0:  PUSHJ     P,LDDT1\r
+        000617' 260740  000656'         PUSHJ     P,LDF         ;LOAD <SYS:DDT.REL>\r
+        000620' 661000  001000          TLO     F,DSYMSW                ;ENABLE LOADING WITH SYMBOLS\r
+        000621' 263740  000000          POPJ    P,\r
+\r
+        000622' 202500  001724' LDDT1:  MOVEM     W,DTIN                ;STORE FILE IDENTIFIER\r
+                                IFN PP,<MOVE W,ILD1     ;SAVE OLD DEV\r
+                                        MOVEM W,OLDDEV>\r
+        000623' 205500  637163          MOVSI     W,637163              ;DEVICE IDENTIFIER <SYS>\r
+        000624' 202500  000522'         MOVEM     W,ILD1                ;STORE DEVICE IDENTIFIER\r
+\r\f1KLOAD - LOADS MACROX                 PAGE 20-1\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+        000625' 621000  026004          TLZ     F,ISW+LIBSW+SKIPSW+REWSW        ;CLEAR OLD FLAGS\r
+        000626' 205500  624554  LDDT2:  MOVSI     W,624554              ;EXTENSION IDENTIFIER <.REL>\r
+        000627' 202500  001725' LDDT3:  MOVEM     W,DTIN1               ;STORE EXTENSION IDENTIFIER\r
+                                IFN PP,<MOVE W,PPN      ;GET PROJ-PROG #\r
+                                        MOVEM W,DTIN+3>\r
+        000630' 263740  000000          POPJ    P,\r
+\r\f1KLOAD - LOADS MACROX                 PAGE 21\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                ;EOF TERMINATES LOADING OF A FILE\r
+\r
+        000631' 200740  001627' EOF:    MOVE    P,PDSAV         ;RESTORE PUSHDOWN POINTER\r
+        000632' 621000  000404  EOF1:   TLZ     F,SLIBSW+SKIPSW ;CLEAR ONE FILE LIB. SEARCH FLAG\r
+        000633' 263740  000000  EOF2:   POPJ    P,\r
+\r
+                                ;       FORCE SCAN TO COMPLETION, LOAD IF NECESSARY\r
+\r
+        000634' 260740  000652' FSCN:   PUSHJ     P,FSCN1               ;FORCED LOAD BEFORE TEST\r
+        000635' 607000  000200          TLNN    F,FULLSW                ;TEST FOR OVERLAP\r
+        000636' 263740  000000          POPJ    P,                      ;NO OVERLAP, RETURN\r
+        000637' 200500  000003          MOVE    W,H             ;FETCH CORE SIZE REQUIRED\r
+        000640' 275504  000001          SUBI W,1(S) ; COMPUT DEFICIENCY\r
+        000641' 321500  000633'         JUMPL     W,EOF2                ;JUMP IF NO OVERLAP\r
+        000642' 661000  000020          TLO     F,FCONSW                ;INSURE TTY OUTPUT\r
+        000643' 260740  001553'         PUSHJ   P,PRQ                   ;START WITH ?\r
+        000644' 260740  001410'         PUSHJ     P,PRNUM0              ;INFORM USER\r
+        000645' 265700  001541'         JSP     A,ERRPT7\r
+        000646' 675762  446300          SIXBIT    /WORDS OF OVERLAP#/\r
+        000647' 574600  576645\r
+        000650' 625441  600300\r
+        000651' 254000  000042'         JRST    LD2             ;ERROR RETURN\r
+\r
+        000652' 667000  000010  FSCN1:  TLON    F,FSW           ;SKIP IF NOT FIRST CALL TO FSCN\r
+        000653' 607000  100003          TLNN    F,CSW+DSW+ESW   ;TEST SCAN FOR COMPLETION\r
+        000654' 263740  000000          POPJ    P,\r
+        000655' 260740  000137' FSCN2:  PUSHJ     P,LD5B1               ;STORE FILE OR EXTENSION IDENT.\r
+\r
+                                ;       LOADER CONTROL, NORMAL MODE\r
+\r
+        000656' 260740  000515' LDF:    PUSHJ     P,ILD         ;INITIALIZE LOADING\r
+\r
+\r\f1KLOAD - LOADS MACROX                 PAGE 22\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                ;LOAD SUBROUTINE\r
+\r
+        000657' 202740  001627' LOAD:   MOVEM     P,PDSAV               ;SAVE PUSHDOWN POINTER\r
+        000660' 200740  001627' LOAD1:  MOVE    P,PDSAV         ;RESTORE PUSHDOWN POINTER\r
+        000661' 260740  001560' LOAD1A:   PUSHJ     P,WORD              ;INPUT BLOCK HEADER WORD\r
+        000662' 211612  400000          MOVNI     E,400000(W)   ;WORD COUNT - FROM RH OF HEADER\r
+        000663' 554700  000012          HLRZ    A,W             ;BLOCK TYPE - FROM LH OF HEADER\r
+        000664' 303700  000013          CAILE     A,DISPL*2+1           ;TEST BLOCK TYPE NUMBER\r
+        000665' 254000  000704'         JRST    LOAD4           ;ERROR, ILLEGAL BLOCK TYPE\r
+        000666' 603000  000004          TLNE    F,SKIPSW                ;BLOCK OK - TEST LOAD STATUS\r
+        000667' 254000  000575'         JRST    LIB1            ;RETURN TO LIB. SEARCH CONTROL\r
+        000670' 550416  000676'         HRRZ    T,LOAD2(A)              ;LOAD RH DISPATCH ENTRY\r
+        000671' 303700  000005          CAILE     A,DISPL               ;SKIP IF CORRECT\r
+        000672' 554416  000670'         HLRZ    T,LOAD2-DISPL-1(A)      ;LOAD LH DISPATCH ENTRY\r
+        000673' 603000  000200          TLNE    F,FULLSW                ;TEST CORE OVERLAP INDICATOR\r
+        000674' 367700  001143'         SOJG    A,HIGH0         ;IGNORE BLOCK IF NOT TYPE 1\r
+        000675' 254020  000010          JRST    @T                      ;DISPATCH TO BLOCK SUBROUTINE\r
+\r
+                                ;DISPATCH TABLE - BLOCK TYPES\r
+\r
+        000676' 001162' 000661' LOAD2:  XWD NAME,LOAD1A\r
+        000677' 001157' 000710'         XWD START,PROG\r
+        000700' 001211' 000725'         XWD LOCD,SYM\r
+        000701' 000704' 000704'         XWD LOAD4A,LOAD4A\r
+        000702' 000704' 000605'         XWD LOAD4A,LIB3\r
+        000703' 000704' 001145' LOAD3:  XWD LOAD4A,HIGH\r
+\r
+                        000005          DISPL=LOAD3-LOAD2\r
+\r
+                                ;ERROR EXIT FOR BAD HEADER WORDS\r
+\r
+                                LOAD4:  IFE K,<\r
+                                        CAIN    A,400           ;FORTRAN FOUR BLOCK\r
+                                        JRST    F4LD>\r
+        000704' 265700  001462' LOAD4A:   JSP   A,ERRPT         ;INCORRECT HEADER WORD\r
+        000705' 515454  160046          SIXBIT    /ILL. FORMAT#/\r
+        000706' 576255  416403\r
+        000707' 254000  000042'         JRST    LD2\r
+\r
+\r\f1KLOAD - LOADS MACROX                 PAGE 23\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                ;LOAD PROGRAMS AND DATA (BLOCK TYPE 1)\r
+\r
+        000710' 550440  000012  PROG:   HRRZ    V,W             ;LOAD BLOCK LENGTH\r
+        000711' 260740  001243'         PUSHJ     P,RWORD               ;READ BLOCK ORIGIN\r
+        000712' 270440  000012          ADD     V,W             ;COMPUTE NEW PROG. BREAK\r
+        000713' 307160  000002          CAIG    H,@X            ;COMPARE WITH PREV. PROG. BREAK\r
+        000714' 201160  000002          MOVEI     H,@X          ;UPDATE PROGRAM BREAK\r
+        000715' 603000  000200                  TLNE F,FULLSW\r
+        000716' 254000  001141'                 JRST FULLC      ;NO ERROR MESSAGE\r
+        000717' 303144  000001          CAILE H,1(S)  ; SKIP IF SUFFICIENT CORE AVAILABLE\r
+                                IFN EXPAND,<    JRST    [PUSHJ P,XPAND>\r
+        000720' 254000  001141'                         JRST FULLC\r
+                                IFN EXPAND,<            JRST .-1]>\r
+        000721' 200440  000012          MOVE    V,W\r
+        000722' 260740  001243' PROG1:  PUSHJ     P,RWORD               ;READ DATA WORD\r
+        000723' 202520  000002          MOVEM     W,@X          ;STORE DATA WORD IN PROG. AT LLC\r
+        000724' 344440  000722'         AOJA    V,PROG1         ;ADD ONE TO LOADER LOC. COUNTER\r
+\r
+                                ;LOAD SYMBOLS (BLOCK TYPE 2)\r
+\r
+        000725' 260740  001235' SYM:    PUSHJ     P,PRWORD              ;READ TWO DATA WORDS\r
+        000726' 260740  000730'         PUSHJ   P,SYMPT;                PUT INTO TABLE\r
+        000727' 254000  000725'         JRST    SYM\r
+\r
+                                ; WFW SYMPT:    JUMPL   C,SYM3;         JUMP IF GLOBAL REQUEST\r
+        000730' 603540  200000  SYMPT:  TLNE C,200000   ;GLOBAL REQUEST? WFW\r
+        000731' 321540  001006'         JUMPL C,SYM3    ;CHECK FOR 60 NOT JUST HIGH BIT WFW\r
+        000732' 603540  100000          TLNE    C,100000\r
+        000733' 254000  000755'         JRST    SYM1A           ;LOCAL SYMBOL\r
+        000734' 260740  001224'         PUSHJ     P,SREQ                ;GLOBAL DEF., SEARCH FOR REQUEST\r
+        000735' 254000  000770'         JRST    SYM2            ;REQUEST MATCHES\r
+        000736' 260740  001226'         PUSHJ     P,SDEF                ;SEARCH FOR MULTIPLE DEFINITIONS\r
+        000737' 254000  000741'         JRST    SYM1            ;MULTIPLY DEFINED GLOBAL\r
+        000740' 254000  000757'         JRST    SYM1B\r
+\r
+                                ;       PROCESS MULTIPLY DEFINED GLOBAL\r
+\r
+        000741' 316516  000002  SYM1:   CAMN    W,2(A)          ;COMPARE NEW AND OLD VALUE\r
+        000742' 263740  000000          POPJ    P,;\r
+        000743' 350000  001631'         AOS     MDG             ;COUNT MULTIPLY DEFINED GLOBALS\r
+        000744' 260740  001553'         PUSHJ   P,PRQ           ;START W/ ?\r
+        000745' 260740  001406'         PUSHJ     P,PRNAM               ;PRINT SYMBOL AND VALUE\r
+        000746' 200516  000002          MOVE    W,2(A)          ;LOAD OLD VALUE\r
+        000747' 260740  001407'         PUSHJ     P,PRNUM               ;PRINT OLD VALUE\r
+        000750' 265700  001541'         JSP     A,ERRPT7                ;PRINT MESSAGE\r
+        000751' 556554  160044          SIXBIT    /MUL. DEF. GLOBAL#/\r
+        000752' 454616  004754\r
+        000753' 574241  540300\r
+        000754' 263740  000000          POPJ    P,;     IGNORE MUL. DEF. GLOBAL SYM\r
+\r
+\r\f1KLOAD - LOADS MACROX                 PAGE 24\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                ;       LOCAL SYMBOL\r
+\r
+        000755' 607000  041000  SYM1A:  TLNN    F,SYMSW+DSYMSW  ;SKIP IF LOAD LOCALS SWITCH ON\r
+        000756' 263740  000000          POPJ    P,;             IGNORE LOCAL SYMBOLS\r
+        000757' 301144  000000  SYM1B:  CAIL    H,(S)           ;STORE DEFINED SYMBOL\r
+                                IFN EXPAND,<    PUSHJ P,XPAND7>\r
+        000760' 254000  001132' IFE EXPAND,<    JRST SFULLC>\r
+                                SYM1C:  IFE K,<\r
+                                        TLNE    N,F4SW;         FORTRAN FOUR REQUIRES A BLT\r
+                                        PUSHJ   P,MVDWN;        OF THE TABLES>\r
+        000761' 201704  777776          MOVEI A,-2(S)   ;LOAD A TO SAVE INST. AT SYM2\r
+        000762' 275200  000002  SYM1D:  SUBI    S,2;            UPDATE UNDEFINED POINTER\r
+        000763' 262316  000002          POP     B,2(A)          ;MOVE UNDEFINED VALUE POINTER\r
+        000764' 262316  000001          POP     B,1(A)          ;MOVE UNDEFINED SYMBOL\r
+        000765' 202506  000002          MOVEM     W,2(B)                ;STORE VALUE\r
+        000766' 202546  000001          MOVEM     C,1(B)                ;STORE SYMBOL\r
+        000767' 263740  000000          POPJ    P,;\r
+\r
+\r\f1KLOAD - LOADS MACROX                 PAGE 25\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                ;       GLOBAL DEFINITION MATCHES REQUEST\r
+\r
+        000770' 261740  001000' SYM2:   PUSH P,SYM2C    ;NEXT MUST BE A SUBROUTINE FOR LATER. SET RETURN\r
+        000771' 200456  000002  SYM2B:  MOVE    V,2(A)          ;LOAD REQUEST POINTER\r
+        000772' 260740  001215'         PUSHJ P,REMSYM\r
+        000773' 321440  001117'         JUMPL V,SYM2W   ;ADDITIVE REQUEST? WFW\r
+        000774' 260740  001130'         PUSHJ     P,SYM4A               ;REPLACE CHAIN WITH DEFINITION\r
+                                ;WFW PATCH TO LOOK FOR MORE THAN ONE REQUEST\r
+        000775' 260740  001224' SYM2W1: PUSHJ P,SREQ    ;LOOK FOR MORE REQUESTS FOR THIS SYMBOL\r
+        000776' 254000  000771'         JRST SYM2B      ;FOUND MORE\r
+        000777' 200700  001001'         MOVE A,SVA      ;RESTORE A\r
+                                ;END OF PATCH WFW\r
+        001000' 263740  000762' SYM2C:  POPJ P,SYM1D    ;RETURN, SEE SYM2 FOR USE OF ADDRESS\r
+        001001' 000000  000000  SVA:    0       ;A TEMP CELL WFW\r
+\r
+                                ;       REQUEST MATCHES GLOBAL DEFINITION\r
+\r
+        001002' 200440  000012  SYM2A:  MOVE    V,W             ;LOAD POINTER TO CHAIN\r
+        001003' 200516  000002          MOVE    W,2(A)          ;LOAD VALUE\r
+        001004' 321440  001050'         JUMPL V,FIXWP   ;HANDLE ATTITIVE REQUEST WFW\r
+        001005' 254000  001130'         JRST    SYM4A;          REPLACE CHAIN WITH DEFINITION\r
+\r
+                                ;       PROCESS GLOBAL REQUEST\r
+\r
+        001006' 603540  040000  SYM3:   TLNE    C,040000;               COMMON NAME\r
+        001007' 254000  000757'         JRST    SYM1B\r
+        001010' 641540  640000          TLC     C,640000;               PERMUTE BITS FROM 60 TO 04\r
+        001011' 260740  001226'         PUSHJ     P,SDEF                ;SEARCH FOR GLOBAL DEFINITION\r
+        001012' 254000  001002'         JRST    SYM2A           ;MATCHING GLOBAL DEFINITION\r
+        001013' 321500  001016'         JUMPL W,SYM3X1  ;ADDITIVE FIXUP WFW\r
+        001014' 260740  001224'         PUSHJ     P,SREQ                ;SEARCH FOR EXISTING REQUEST WFW\r
+        001015' 254000  001035'         JRST    SYM3A           ;EXISTING REQUEST FOUND WFW\r
+        001016' 607500  100000  SYM3X1: TLNN W,100000   ;CHECK SYMBOL TABLE FIXUP\r
+        001017' 254000  001027'         JRST SYM3X2     ;NO\r
+        001020' 200446  000001          MOVE V,1(B)     ;MUST BE LAST SYMBOL DEFINED. GET SYMBOL\r
+        001021' 430440  000012          XOR V,W         ;CHECK FOR IDENTITY\r
+        001022' 612440  002437'         TDNE V,[XWD 77777,-1]   ;BUT IGNORE HIGH 3 BITS\r
+        001023' 263740  000000          POPJ P,         ;NOT SAME, ASSUME NOT LOADED LOCAL\r
+        001024' 541506  000002          HRRI W,2(B)     ;GET LOCATION IN RIGHT HALF\r
+        001025' 661500  000001          TLO W,1\r
+        001026' 274500  000322*         SUB W,JOBREL    ;AND MAKE RELATIVE\r
+        001027' 301144  000000  SYM3X2: CAIL    H,(S)           ;STORE REQUEST IN UNDEF. TABLE WFW\r
+                                IFN EXPAND,<    PUSHJ P,XPAND7>\r
+        001030' 254000  001132' IFE EXPAND,<    JRST SFULLC>\r
+                                SYM3X:  IFE K,<\r
+                                        TLNE    N,F4SW;         FORTRAN FOUR\r
+                                        PUSHJ   P,MVDWN;                ADJUST TABLES IF F4>\r
+        001031' 274200  001623'         SUB     S,SE3           ;ADVANCE UNDEFINED POINTER\r
+        001032' 202504  000002          MOVEM     W,2(S)                ;STORE UNDEFINED VALUE POINTER\r
+        001033' 202544  000001          MOVEM     C,1(S)                ;STORE UNDEFINED SYMBOL\r
+        001034' 263740  000000          POPJ    P,;\r
+\r
+\r\f1KLOAD - LOADS MACROX                 PAGE 26\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+\r
+                                ;       COMBINE TWO REQUEST CHAINS\r
+\r
+        001035' 331016  000002  SYM3A:  SKIPL 2(A)      ;IS IT ADDITIVE WFW\r
+        001036' 254000  001042'         JRST SYM3A1     ;NO, PROCESS WFW\r
+        001037' 260740  001231'         PUSHJ P,SDEF2   ;YES, CONTINUE WFW\r
+        001040' 254000  001035'         JRST SYM3A      ;FOUND ANOTHER WFW\r
+        001041' 254000  001027'         JRST SYM3X2     ;REALLY NO CHAIN THERE WFW\r
+        001042' 275702  777776  SYM3A1: SUBI A,-2(X)  ;A=A-(-2+X(18-35)); A RELATIVE TO X WFW\r
+        001043' 550440  000016  SYM3B:  HRRZ V,A       ; SAVE CHAIN ADDRESS FOR HRRM W,@X\r
+        001044' 550720  000002          HRRZ A,@X ; LOAD NEXT ADDRESS IN CHAIN\r
+        001045' 326700  001043'         JUMPN A,SYM3B  ; JUMP IF NOT THE LAST ADDR. IN CHAIN\r
+        001046' 542520  000002          HRRM    W,@X            ;COMBINE CHAINS\r
+        001047' 263740  000000          POPJ    P,;\r
+\r
+                                ;WFW PATCH FOR ADDITIVE GLOBAL REQUESTS\r
+\r
+        001050' 607440  100000  FIXWP:  TLNN V,100000   ;CHECK FOR SYMBOL TABLE FIXUP\r
+        001051' 254000  001060'         JRST FIXW\r
+        001052' 200406  000001          MOVE T,1(B)     ;SYMBOL FIXUP, MUST BE LAST SYMBOL DEFINED\r
+        001053' 430400  000011          XOR T,V         ;CHECK FOR SAME\r
+        001054' 612400  002437'         TDNE T,[XWD 77777,-1]   ;EXCEPT FOR HEGH CODE BITS\r
+        001055' 263740  000000          POPJ P,         ;ASSUME NON-LOADED LOCAL\r
+        001056' 541446  000002          HRRI V,2(B)     ;GET LOCATION\r
+        001057' 275442  000000          SUBI V,(X)      ;SO WE CAN USE @X\r
+        001060' 603440  200000  FIXW:   TLNE V,200000   ;IS IT LEFT HALF\r
+        001061' 254000  001067'         JRST FIXWL\r
+        001062' 200420  000002          MOVE T,@X       ;GET WORD\r
+        001063' 270400  000012          ADD T,W         ;VALUE OF GLOBAL\r
+        001064' 542420  000002          HRRM T,@X       ;FIX WITHOUT CARRY\r
+        001065' 205340  200000          MOVSI D,200000  ;SET UP TO REMOVE DEFERED INTERNAL IF THERE\r
+        001066' 254000  001072'         JRST SYMFIX\r
+        001067' 514400  000012  FIXWL:  HRLZ    T,W             ;UPDATE VALUE OF LEFT HALF\r
+        001070' 272420  000002          ADDM    T,@X            ;BY VALUE OF GLOBAL\r
+        001071' 205340  400000          MOVSI D,400000  ;LEFT DEFERED INTERNAL\r
+        001072' 607440  100000  SYMFIX: TLNN V,100000   ;CHECK FOR SYMBOL TABLE FIXUP\r
+        001073' 263740  000000          POPJ P,         ;NO, RETURN\r
+        001074' 271442  000000          ADDI V,(X)      ;GET THE LOCATION\r
+        001075' 200411  777777          MOVE T,-1(V)    ;GET THE SYMBOL NAME\r
+        001076' 607400  040000          TLNN T,40000    ;CHECK TO SEE IF INTERNAL\r
+        001077' 263740  000000          POPJ P,         ;NO, LEAVE\r
+        001100' 413351  777777          ANDCAB D,-1(V)  ;REMOVE PROPER BIT\r
+        001101' 603340  600000          TLNE D,600000   ;IS IT STILL DEFERED?\r
+        001102' 263740  000000          POPJ P,         ;YES, ALL DONE\r
+        001103' 250540  000007          EXCH C,D        ;NO, CHECK FOR A REQUEST FOR IT\r
+        001104' 260740  001224'         PUSHJ P,SREQ\r
+        001105' 254000  001110'         JRST CHNSYM     ;YES, WILL HAVE TO CALL THE FIXUP ROUTINE\r
+        001106' 200540  000007          MOVE C,D        ;GET C BACK\r
+        001107' 263740  000000          POPJ P,\r
+        001110' 261740  000007  CHNSYM: PUSH P,D        ;HAS THE OLD C IN IT\r
+        001111' 261740  000012          PUSH P,W        ;WE MAY NEED IT LATER\r
+        001112' 200511  000000          MOVE W,(V)      ;GET VALUE\r
+        001113' 260740  000771'         PUSHJ P,SYM2B   ;CALL THE FOUND GLOBAL TO MATCH REQUEST ROUTINE\r
+\r\f1KLOAD - LOADS MACROX                 PAGE 26-1\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+        001114' 262740  000012          POP P,W\r
+        001115' 262740  000013          POP P,C         ;RESTORE FOR CALLER\r
+        001116' 263740  000000          POPJ P,         ;AND GO AWAY\r
+\r
+        001117' 607440  100000  SYM2W:  TLNN V,100000   ;SYMBOL TABLE?\r
+        001120' 254000  001123'         JRST SYM2WA\r
+        001121' 270440  001026*         ADD V,JOBREL    ;MAKE ABSOLUTE\r
+        001122' 275442  000000          SUBI V,(X)      ;GET READY TO ADD X\r
+        001123' 260740  001060'         SYM2WA: PUSHJ P,FIXW    ;DO FIXUP\r
+        001124' 254000  000775'         JRST SYM2W1     ;AND LOOK FOR MORE REQUESTS\r
+\r
+                                ;END WFW PATCH\r
+\r
+\r\f1KLOAD - LOADS MACROX                 PAGE 27\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                ;PATCH VALUES INTO CHAINED REQUEST\r
+        001125'                 SYM4:\r
+        001125' 550420  000002          HRRZ    T,@X            ;LOAD NEXT ADDRESS IN CHAIN\r
+        001126' 542520  000002          HRRM    W,@X            ;INSERT VALUE INTO PROGRAM\r
+        001127' 200440  000010          MOVE    V,T\r
+        001130' 326440  001125' SYM4A:  JUMPN     V,SYM4                ;JUMP IF NOT LAST ADDR. IN CHAIN\r
+        001131' 263740  000000          POPJ    P,\r
+\r
+                                IFE     K,<\r
+                                MVDWN:  HRRZ T,MLTP\r
+                                IFN EXPAND,<    SUBI T,2>\r
+                                        CAIG    T,@X;           ANY ROOM LEFT?\r
+                                IFN EXPAND,<    JRST    [PUSHJ P,XPAND>\r
+                                                        TLOA F,FULLSW\r
+                                IFN EXPAND,<            JRST MVDWN\r
+                                                        JRST .+2]>\r
+                                        TLNE    F,SKIPSW+FULLSW\r
+                                        JRST    MVABRT; ABORT BLT\r
+                                        HRREI   T,-2\r
+                                        ADDM    T,PLTP;         ADJUST PROGRAMMER LABEL POINTER\r
+                                        ADDM    T,BITP;         AND BIT TABLE POINTER\r
+                                        ADDM    T,SDSTP;        FIRST DATA STATEMENT\r
+                                        ADDM    T,LTC\r
+                                        ADDM    T,ITC\r
+                                        TLNE    N,SYDAT\r
+                                        ADDM    T,V\r
+                                        ADDB    T,MLTP;         AND FINALLY TO MADE LABEL TABLE\r
+                                        HRLS    T;              SET UP BLT POINTER\r
+                                        ADD     T,[XWD 2,0]\r
+                                        BLT     T,(S)\r
+                                MVABRT: POPJ    P,;\r
+                                >\r
+                                ;HIGHEST RELOCATABLE POINT (BLOCK TYPE 4)\r
+        001132' 663000  000200  SFULLC: TLOE    F,FULLSW        ;PREVIOUS OVERFLOW?\r
+        001133' 254000  001141'         JRST    FULLC           ;YES, DON'T PRINT MESSAGE\r
+        001134' 265700  001462'         JSP     A,ERRPT         ;NO, COMPLAIN ABT OVERFLO\r
+        001135' 637155  425754          SIXBIT  ?SYMBOL TABLE OVERLAP#?\r
+        001136' 006441  425445\r
+        001137' 005766  456254\r
+        001140' 416003  000000\r
+        001141' 661000  000200  FULLC:  TLO     F,FULLSW        ;CORE OVERLAP ERROR RETURN\r
+                                IFE K,< TLNE    N,F4SW\r
+                                        POPJ    P,>\r
+        001142' 254000  000605'         JRST    LIB3            ;LOOK FOR MORE\r
+\r
+        001143' 302700  000004  HIGH0:  CAIE A,4  ; TEST FOR END BLOCK (OVERLAP)\r
+        001144' 254000  000605'         JRST    LIB3\r
+        001145' 260740  001235' HIGH:   PUSHJ     P,PRWORD              ;READ TWO DATA WORDS\r
+        001146' 540240  000013          HRR     R,C             ;SET NEW PROGRAM BREAK\r
+        001147' 271540  000002          ADDI    C,X;    BE SURE TO RELOCATE\r
+        001150' 303544  000001          CAILE   C,1(S)          ;TEST PROGRAM BREAK\r
+                                IFN EXPAND,<PUSHJ P,[   PUSHJ P,XPAND\r
+                                                        TLOA F,FULLSW\r
+\r\f1KLOAD - LOADS MACROX                 PAGE 27-1\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                                        JRST POPJM2\r
+                                                        POPJ    P,]>\r
+        001151' 661000  000200  IFE EXPAND,<TLO F,FULLSW>\r
+        001152' 201700  001672' HIGH3:  MOVEI   A,F.C           ;SAVE CURRENT STATE OF LOADER\r
+        001153' 251700  001700'         BLT     A,B.C\r
+        001154' 603000  004400          TLNE    F,SLIBSW+LIBSW  ;NORMAL MODE EXIT THROUGH LOAD1\r
+        001155' 254000  000572'         JRST    LIB             ;LIBRARY SEARCH EXIT\r
+        001156' 254000  000660'         JRST LOAD1\r
+\r
+\r\f1KLOAD - LOADS MACROX                 PAGE 28\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                ;STARTING ADDRESS (BLOCK TYPE 7)\r
+\r
+        001157' 260740  001235' START:  PUSHJ     P,PRWORD              ;READ TWO DATA WORDS\r
+        001160' 607040  000002          TLNN    N,ISAFLG                ;SKIP IF IGNORE SA FLAG ON\r
+        001161' 540000  000013          HRR     F,C             ;SET STARTING ADDRESS\r
+\r
+                                ;PROGRAM NAME (BLOCK TYPE 6)\r
+\r
+        001162' 260740  001235' NAME:   PUSHJ     P,PRWORD              ;READ TWO DATA WORDS\r
+        001163' 663040  000004          TLOE    N,COMFLG                ;SKIP IF COMMON NOT PREV. SET\r
+        001164' 254000  001170'         JRST    NAME1           ;SIZE OF COMMON PREV. SET\r
+        001165' 202500  001630'         MOVEM     W,COMSAV              ;STORE LENGTH OF COMMON\r
+        001166' 322500  001201'         JUMPE     W,NAME2               ;JUMP IF NO COMMON IN THIS JOB\r
+        001167' 541260  000005          HRRI    R,@R            ;FIRST PROGRAM SET LOAD ORIGIN\r
+        001170' 303144  777777  NAME1:  CAILE H,-1(S)           ;TEST FOR AVAIL. SYMBOL SPACE\r
+                                IFN EXPAND,<    PUSHJ P,XPAND7>\r
+        001171' 254000  001132' IFE EXPAND,<    JRST SFULLC>\r
+        001172' 275200  000002          SUBI    S,2             ;UPDATE UNDEF. TABLE POINTER\r
+        001173' 262304  000002          POP     B,2(S)\r
+        001174' 262304  000001          POP     B,1(S)\r
+        001175' 550440  000001          HRRZ    V,N             ;POINTER TO PREVIOUS NAME\r
+        001176' 276300  000011          SUBM    B,V             ;COMPUTE RELATIVE POSITIONS\r
+        001177' 506441  000002          HRLM    V,2(N)          ;STORE FORWARD POINTER\r
+        001200' 540040  000006          HRR     N,B             ;UPDATE NAME POINTER\r
+        001201' 202546  000001  NAME2:  MOVEM     C,1(B)                ;STORE PROGRAM NAME\r
+        001202' 552246  000002          HRRZM   R,2(B)          ;STORE PROGRAM ORIGIN\r
+        001203' 317500  001630'         CAMG    W,COMSAV                ;CHECK COMMON SIZE\r
+        001204' 254000  000605'         JRST    LIB3            ;COMMON OK\r
+        001205' 265700  001462' ILC:    JSP     A,ERRPT\r
+        001206' 515454  160043          SIXBIT    /ILL. COMMON#/\r
+        001207' 575555  575603\r
+        001210' 254000  000042'         JRST    LD2\r
+\r\f1KLOAD - LOADS MACROX                 PAGE 29\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+\r
+                                ;ONE PASS LOCAL DEFINITION (BLOCK TYPE 10)\r
+\r
+                                                        ;PMP PATCH FOR LEFT HALF FIXUPS\r
+                                                        ;END PMP PATCH\r
+        001211' 260740  001243' LOCD:   PUSHJ     P,RWORD               ;READ ONE DATA WORD\r
+        001212' 554440  000012          HLRZ    V,W             ;STORAGE POINTER IN LEFT HALF\r
+        001213' 260740  001130'         PUSHJ     P,SYM4A               ;LINK BACK REFERENCES\r
+        001214' 254000  001211'         JRST    LOCD\r
+\r\f1KLOAD - LOADS MACROX                 PAGE 30\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
\r
+        001215' 200404  000001  REMSYM: MOVE T,1(S)\r
+        001216' 202416  000001          MOVEM T,1(A)\r
+        001217' 200404  000002          MOVE T,2(S)\r
+        001220' 202416  000002          MOVEM T,2(A)\r
+        001221' 270200  001623'         ADD S,SE3\r
+        001222' 202700  001001'         MOVEM A,SVA\r
+        001223' 263740  000000          POPJ P,\r
+\r
+\r\f1KLOAD - LOADS MACROX                 PAGE 31\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                ;SYMBOL TABLE SEARCH SUBROUTINES\r
+\r
+                                ;       ENTERED WITH SYMBOL IN C\r
+                                ;       RETURN IS WITH POINTER IN A IF MATCHING SYMBOL FOUND\r
+                                ;       OTHERWISE, A SKIP ON RETURN OCCURS\r
+\r
+        001224' 325200  001233' SREQ:   JUMPGE    S,CPOPJ1              ;JUMP IF NO UNDEF. SYMBOLS\r
+        001225' 334700  000004          SKIPA     A,S           ;LOAD REQUEST SEARCH POINTER\r
+        001226' 200700  000006  SDEF:   MOVE    A,B             ;LOAD DEF. SYMBOL SEARCH POINTER\r
+        001227' 316556  000001  SDEF1:  CAMN    C,1(A)\r
+        001230' 263740  000000          POPJ    P,                      ;SYMBOLS MATCH, RETURN\r
+        001231' 270700  001623' SDEF2:  ADD     A,SE3\r
+        001232' 321700  001227'         JUMPL     A,SDEF1\r
+                                IFE K,< JRST    CPOPJ1          ;SYMBOL NOT FOUND SKIPS ON RETURN>\r
+                                IFN K,<\r
+        001233' 350017  000000  CPOPJ1: AOS     (P)             ;TRA 2,4\r
+        001234' 263740  000000          POPJ    P,              ;...>\r
+\r
+                                ;RELOCATION AND BLOCK INPUT\r
+\r
+        001235' 260740  001243' PRWORD:   PUSHJ     P,RWORD             ;READ A WORD PAIR\r
+        001236' 200540  000012          MOVE    C,W             ;LOAD C WITH FIRST DATA WORD\r
+        001237' 602600  377777          TRNE    E,377777                ;TEST FOR END OF BLOCK\r
+        001240' 254000  001245'         JRST    RWORD1          ;INPUT SECOND WORD OF PAIR\r
+        001241' 201500  000000          MOVEI     W,0           ;NO SECOND WORD, ASSUME ZERO\r
+        001242' 263740  000000          POPJ    P,\r
+\r
+        001243' 606600  377777  RWORD:  TRNN    E,377777                ;TEST FOR END OF BLOCK\r
+        001244' 254000  000660'         JRST    LOAD1           ;RETURN TO LOAD THE NEXT BLOCK\r
+        001245' 253600  001251' RWORD1:   AOBJN     E,RWORD2            ;JUMP IF DATA WORD NEXT\r
+        001246' 260740  001560'         PUSHJ     P,WORD                ;READ CONTROL WORD\r
+        001247' 200640  000012          MOVE    Q,W             ;DON'T COUNT RELOCATION WORDS\r
+        001250' 505600  777756          HRLI    E,-22           ;SET RELOCATION WORD BYTE COUNT\r
+        001251' 260740  001560' RWORD2:   PUSHJ     P,WORD              ;READ INPUT WORD\r
+        001252' 325640  001255'         JUMPGE    Q,RWORD3              ;TEST LH RELOCATION BIT\r
+        001253' 514400  000005          HRLZ    T,R\r
+        001254' 270500  000010          ADD     W,T             ;LH RELOCATION\r
+        001255' 603640  200000  RWORD3:   TLNE  Q,200000                ;TEST RH RELOCATION BIT\r
+        001256' 541520  000005          HRRI    W,@R            ;RH RELOCATION\r
+        001257' 242640  000002          LSH     Q,2\r
+        001260' 263740  000000          POPJ    P,\r
+\r
+\r\f1KLOAD - LOADS MACROX                 PAGE 32\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                ;PRINT STORAGE MAP SUBROUTINE\r
+\r
+        001261' 260740  000652' PRMAP:  PUSHJ   P,FSCN1 ;LOAD OTHER FILES FIRST\r
+        001262' 260740  001576'         PUSHJ   P,CRLFLF        ;START NEW PAGE\r
+        001263' 550500  000005          HRRZ    W,R\r
+        001264' 260740  001410'         PUSHJ     P,PRNUM0\r
+        001265' 265700  001541'         JSP     A,ERRPT7\r
+        001266' 516300  645045          SIXBIT  ?IS THE PROGRAM BREAK@?\r
+        001267' 006062  574762\r
+        001270' 415500  426245\r
+        001271' 415340  000000\r
+        001272' 260740  001600'         PUSHJ   P,CRLF          ;START STORAGE MAP\r
+        001273' 265700  001465'         JSP     A,ERRPT0        ;PRINT HEADER\r
+        001274' 636457  624147          SIXBIT  ?STORAGE MAP@?\r
+        001275' 450055  416040\r
+        001276' 574700  000006          HLRE    A,B\r
+        001277' 213000  000016          MOVNS     A\r
+        001300' 271706  000000          ADDI    A,(B)\r
+        001301' 275700  000002  PRMAP1:   SUBI  A,2\r
+        001302' 331556  000001          SKIPL     C,1(A)                ;LOAD SYMBOL, SKIP IF DELETED\r
+        001303' 603540  300000          TLNE    C,300000                ;TEST FOR LOCAL SYMBOL\r
+        001304' 254000  001330'         JRST    PRMAP4          ;IGNORE LOCAL SYMBOLS\r
+        001305' 607540  040000          TLNN    C,040000\r
+        001306' 260740  001600'         PUSHJ     P,CRLF                ;PROGRAM NAME\r
+        001307' 260740  001405'         PUSHJ     P,PRNAM1              ;PRINT SYMBOL AND VALUE\r
+        001310' 603540  040000          TLNE    C,040000\r
+        001311' 254000  001327'         JRST    PRMAP3          ;GLOBAL SYMBOL\r
+        001312' 574540  000012          HLRE    C,W             ;POINTER TO NEXT PROG. NAME\r
+        001313' 325540  001316'         JUMPGE    C,PRMAP2              ;JUMP IF LAST PROGRAM NAME\r
+        001314' 271556  000002          ADDI    C,2(A)          ;COMPUTE LOC. OF FOLLOWING NAME\r
+        001315' 334420  000013          SKIPA     T,@C          ;LOAD ORIGIN OF FOLLOWING PROG.\r
+        001316' 550400  000005  PRMAP2:   HRRZ  T,R             ;LOAD PROGRAM BREAK\r
+        001317' 276400  000012          SUBM    T,W             ;SUBTRACT ORIGIN TO GET LENGTH\r
+        001320' 260740  001407'         PUSHJ     P,PRNUM               ;PRINT PROGRAM LENGTH\r
+        001321' 260740  001600'         PUSHJ     P,CRLF\r
+        001322' 607040  000001          TLNN    N,ALLFLG                ;SKIP IF LIST ALL MODE IS ON\r
+        001323' 602500  777777          TRNE    W,777777                ;SKIP IF ZERO LENGTH PROGRAM\r
+        001324' 254000  001327'         JRST    PRMAP3\r
+        001325' 322540  001332'         JUMPE     C,PRMAP5              ;JUMP IF LAST PROGRAM\r
+        001326' 334700  000013          SKIPA     A,C           ;SKIP GLOBALS, ZERO LENGTH PROG.\r
+        001327' 260740  001600' PRMAP3:   PUSHJ     P,CRLF\r
+        001330' 303706  000000  PRMAP4:   CAILE     A,(B)               ;TEST FOR END OF SYMBOL TABLE\r
+        001331' 254000  001301'         JRST    PRMAP1\r
+        001332'                 PRMAP5:\r
+\r
+\r\f1KLOAD - LOADS MACROX                 PAGE 33\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                ;LIST UNDEFINED GLOBALS\r
+\r
+        001332' 260740  000652' PMS:    PUSHJ   P,FSCN1 ;LOAD FILES FIRST\r
+        001333' 325200  001356'         JUMPGE  S,PMS3          ;JUMP IF NO UNDEFINED GLOBALS\r
+        001334' 523000  000042          HLLOS 42                ;SET SOME ERROR TO ABORT EXECUTION\r
+        001335' 260740  001577'         PUSHJ   P,FCRLF         ;START THE MESSAGE\r
+        001336' 260740  001553'         PUSHJ   P,PRQ           ;PRINT ?\r
+        001337' 574500  000004          HLRE    W,S             ;COMPUTE NO. OF UNDEF. GLOBALS\r
+        001340' 217000  000012          MOVMS     W\r
+        001341' 242500  777777          LSH     W,-1            ;<LENGTH OF LIST>/2\r
+        001342' 260740  001410'         PUSHJ     P,PRNUM0\r
+        001343' 265700  001541'         JSP     A,ERRPT7\r
+        001344' 655644  454651          SIXBIT    /UNDEFINED GLOBALS@/\r
+        001345' 564544  004754\r
+        001346' 574241  546340\r
+        001347' 200700  000004          MOVE    A,S             ;LOAD UNDEF. POINTER\r
+        001350' 260740  001600' PMS2:   PUSHJ     P,CRLF\r
+        001351' 260740  001553'         PUSHJ   P,PRQ           ;PRINT ?\r
+        001352' 260740  001404'         PUSHJ     P,PRNAM0              ;PRINT SYMBOL AND POINTER\r
+        001353' 270700  001623'         ADD     A,SE3\r
+        001354' 321700  001350'         JUMPL     A,PMS2\r
+        001355' 260740  001600'         PUSHJ   P,CRLF          ;SPACE AFTER LISTING\r
+\r
+                                ;LIST NUMBER OF MULTIPLY DEFINED GLOBALS\r
+\r
+        001356' 336500  001631' PMS3:   SKIPN   W,MDG           ;ANY MULTIPLY DEFINED GLOBALS\r
+        001357' 254000  001372'         JRST    PMS4            ;NO, EXCELSIOR\r
+        001360' 523000  000042          HLLOS 42                ;ANOTHER WAY TO LOSE\r
+        001361' 260740  001577'         PUSHJ   P,FCRLF         ;ROOM AT THE TOP\r
+        001362' 260740  001553'         PUSHJ   P,PRQ           ;PRINT ?\r
+        001363' 260740  001410'         PUSHJ   P,PRNUM0        ;NUMBER OF MULTIPLES\r
+        001364' 265700  001541'         JSP     A,ERRPT7        ;REST OF MESSAGE\r
+        001365' 556554  645160          SIXBIT  ?MULTIPLY DEFINED GLOBALS@?\r
+        001366' 547100  444546\r
+        001367' 515645  440047\r
+        001370' 545742  415463\r
+        001371' 400000  000000\r
+        001372' 603040  040000  PMS4:   TLNE    N,AUXSWE        ;AUXILIARY OUTPUT DEVICE?\r
+        001373' 067100  000000          OUTPUT  2,              ;INSURE A COMPLETE BUFFER\r
+        001374' 263740  000000          POPJ    P,              ;RETURN\r
+\r
+\r\f1KLOAD - LOADS MACROX                 PAGE 34\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                ;ENTER FILE ON AUXILIARY OUTPUT DEVICE\r
+\r
+        001375' 077100  001730' IAD2:   ENTER   2,DTOUT         ;WRITE FILE NAME IN DIRECTORY\r
+        001376' 254000  001400'         JRST    IMD3            ;NO MORE DIRECTORY SPACE\r
+        001377' 263740  000000          POPJ    P,\r
+\r
+        001400' 265700  001462' IMD3:   JSP     A,ERRPT         ;DIRECTORY FULL ERROR\r
+        001401' 445162  160046          SIXBIT    /DIR. FULL@/\r
+        001402' 655454  400000\r
+        001403' 254000  000042'         JRST    LD2\r
+\r
+                                ;PRINT THE 6 DIGIT OCTAL ADDRESS IN W\r
+\r
+                                ;       ACCUMULATORS USED: D,T,V\r
+\r
+        001404' 200556  000001  PRNAM0:   MOVE  C,1(A)          ;LOAD SYMBOL\r
+        001405' 200516  000002  PRNAM1:   MOVE  W,2(A)          ;LOAD VALUE\r
+        001406' 260740  001433' PRNAM:  PUSHJ     P,PRNAME\r
+        001407' 260740  001427' PRNUM:  PUSHJ     P,SPACES\r
+        001410' 200440  001417' PRNUM0:   MOVE  V,PRNUM2                ;LOAD BYTE POINTER TO RH. OF W\r
+        001411' 211340  000006          MOVNI     D,6           ;LOAD CHAR. COUNT\r
+        001412' 134400  000011  PRNUM1:   ILDB  T,V             ;LOAD DIGIT TO BE OUTPUT\r
+        001413' 271400  000060          ADDI    T,60            ;CONVERT FROM BINARY TO ASCII\r
+        001414' 260740  001604'         PUSHJ     P,TYPE2\r
+        001415' 341340  001412'         AOJL    D,PRNUM1                ;JUMP IF MORE DIGITS REMAIN\r
+        001416' 263740  000000          POPJ    P,\r
+\r
+        001417' 220300  000012  PRNUM2:   XWD   220300,W\r
+\r
+                                ;YE OLDE RECURSIVE NUMBER PRINTER\r
+                                ;PRINTS Q, WITH LEADING ZEROES SUPPRESSED; USES A AND T\r
+\r
+        001420' 231640  000012  RCNUM:  IDIVI Q,12              ;RADIX DECIMAL\r
+        001421' 271700  000060          ADDI A,"0"\r
+        001422' 506717  000000          HRLM A,(P)\r
+        001423' 332000  000015          SKIPE Q\r
+        001424' 260740  001420'         PUSHJ P,RCNUM\r
+        001425' 554417  000000          HLRZ T,(P)\r
+        001426' 254000  001604'         JRST TYPE2\r
+\r
+\r\f1KLOAD - LOADS MACROX                 PAGE 35\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                ;PRINT FOUR SPACES\r
+\r
+        001427' 260740  001430' SPACES:   PUSHJ     P,SP1\r
+        001430' 260740  001431' SP1:    PUSHJ     P,SPACE\r
+        001431' 201400  000040  SPACE:  MOVEI     T,40\r
+        001432' 254000  001604'         JRST    TYPE2\r
+\r
+                                ;SYMBOL PRINT - RADIX 50\r
+\r
+                                ;       ACCUMULATORS USED: D,T\r
+\r
+        001433' 200400  000013  PRNAME:   MOVE  T,C             ;LOAD SYMBOL\r
+        001434' 621400  740000          TLZ     T,740000                ;ZERO CODE BITS\r
+        001435' 211340  000006          MOVNI     D,6           ;LOAD CHAR. COUNT\r
+        001436' 231400  000050  SPT:    IDIVI     T,50          ;THE REMAINDER IS THE NEXT CHAR.\r
+        001437' 506457  000000          HRLM    V,(P)           ;STORE IN LH. OF PUSHDOWN LIST\r
+        001440' 355000  000007          AOSGE     D                     ;SKIP IF NO CHARS. REMAIN\r
+        001441' 260740  001436'         PUSHJ     P,SPT         ;RECURSIVE CALL FOR NEXT CHAR.\r
+        001442' 554417  000000          HLRZ    T,(P)           ;LOAD FROM LH. OF PUSHDOWN LIST\r
+        001443' 322400  001603'         JUMPE     T,TYPE                ;BLANK\r
+        001444' 271400  000057          ADDI    T,60-1\r
+        001445' 303400  000071          CAILE     T,71\r
+        001446' 271400  000007          ADDI    T,101-72\r
+        001447' 303400  000132          CAILE     T,132\r
+        001450' 275400  000070          SUBI    T,134-44\r
+        001451' 306400  000043          CAIN    T,43\r
+        001452' 201400  000056          MOVEI     T,56\r
+        001453' 254000  001604'         JRST    TYPE2\r
+                                ;PRINT A WORD OF SIXBIT CHARACTERS IN AC W\r
+\r
+                                ;       ACCUMULATORS USED: Q,T,D\r
+\r
+        001454' 211640  000006  PWORD:  MOVNI     Q,6           ;SET CHARACTER COUNT TO SIX\r
+        001455' 200340  001624' PWORD1:   MOVE  D,LSTPT         ;ENTER HERE WITH Q PRESET\r
+        001456' 134400  000007  PWORD2:   ILDB  T,D             ;LOAD NEXT CHAR. TO BE OUTPUT\r
+        001457' 260740  001603'         PUSHJ     P,TYPE                ;OUTPUT CHARACTER\r
+        001460' 341640  001456'         AOJL    Q,PWORD2\r
+        001461' 263740  000000          POPJ    P,\r
+\r
+\r\f1KLOAD - LOADS MACROX                 PAGE 36\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                ;ERROR MESSAGE PRINT SUBROUTINE\r
+\r
+                                ;       FORM OF CALL:\r
+\r
+                                ;       JSP     A,ERRPT\r
+                                ;       SIXBIT    /<MESSAGE>/\r
+\r
+                                ;       ACCUMULATORS USED: T,V,C,W\r
+\r
+        001462' 661000  000020  ERRPT:  TLO     F,FCONSW        ;INSURE TTY OUTPUT\r
+        001463' 260740  001600'         PUSHJ   P,CRLF          ;ROOM AT THE TOP\r
+        001464' 260740  001553'         PUSHJ   P,PRQ           ;START OFF WITH ?\r
+        001465' 261740  000015  ERRPT0:   PUSH  P,Q             ;SAVE Q\r
+        001466' 334440  001524'         SKIPA     V,ERRPT5\r
+        001467' 260740  001603' ERRPT1:   PUSHJ     P,TYPE\r
+        001470' 134400  000011          ILDB    T,V\r
+        001471' 306400  000040          CAIN    T,40\r
+        001472' 254000  001517'         JRST    ERRPT4\r
+        001473' 306400  000005          CAIN    T,5\r
+        001474' 254000  001543'         JRST    ERRPT9\r
+        001475' 302400  000003          CAIE    T,3\r
+        001476' 254000  001467'         JRST    ERRPT1\r
+        001477' 336540  001724'         SKIPN     C,DTIN\r
+        001500' 254000  001517'         JRST    ERRPT4\r
+        001501' 211640  000014          MOVNI     Q,14\r
+        001502' 201500  000077          MOVEI     W,77\r
+        001503' 612540  000012  ERRPT2:   TDNE  C,W\r
+        001504' 254000  001507'         JRST    ERRPT3\r
+        001505' 242500  000006          LSH     W,6\r
+        001506' 341640  001503'         AOJL    Q,ERRPT2\r
+        001507' 200500  001525' ERRPT3:   MOVE  W,ERRPT6\r
+        001510' 260740  001455'         PUSHJ     P,PWORD1\r
+        001511' 336500  001725'         SKIPN     W,DTIN1\r
+        001512' 254000  001517'         JRST    ERRPT4\r
+        001513' 242500  777772          LSH     W,-6\r
+        001514' 661500  160000          TLO     W,160000\r
+        001515' 211640  000004          MOVNI     Q,4\r
+        001516' 260740  001455'         PUSHJ     P,PWORD1\r
+        001517' 260740  001600' ERRPT4:   PUSHJ     P,CRLF\r
+        001520' 262740  000015  ERRP41: POP     P,Q\r
+        001521' 621000  000020          TLZ     F,FCONSW        ;ONE ERROR PER CONSOLE\r
+        001522' 350000  000011          AOS     V               ;PROGRAM BUMMERS BEWARE:\r
+        001523' 254020  000011          JRST    @V              ;V HAS AN INDEX OF A\r
+\r
+        001524' 440616  000000  ERRPT5:   POINT     6,0(A)\r
+        001525' 004651  544500  ERRPT6:   SIXBIT    / FILE /\r
+\r
+\r\f1KLOAD - LOADS MACROX                 PAGE 37\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+        001526' 661000  000020  ERRPT8: TLO     F,FCONSW        ;INSURE TTY OUTPUT\r
+        001527' 260740  001553'         PUSHJ   P,PRQ           ;START WITH ?\r
+        001530' 305400  000140          CAIGE   T,140           ;IS IT A NON-PRINTING CHAR?\r
+        001531' 301400  000040          CAIL    T,40\r
+        001532' 254000  001540'         JRST    ERRP8\r
+        001533' 261740  000010          PUSH    P,T\r
+        001534' 201400  000136          MOVEI     T,136         ;UP ARROW\r
+        001535' 260740  001604'         PUSHJ     P,TYPE2\r
+        001536' 262740  000010          POP     P,T\r
+        001537' 271400  000100          ADDI    T,100           ;CONVERT TO PRINTING CHAR.\r
+        001540' 260740  001604' ERRP8:  PUSHJ     P,TYPE2\r
+        001541' 260740  001431' ERRPT7:   PUSHJ     P,SPACE\r
+        001542' 254000  001465'         JRST    ERRPT0\r
+\r
+        001543' 201460  000011  ERRPT9:   MOVEI     V,@V\r
+        001544' 261740  000011          PUSH    P,V\r
+        001545' 265700  001541'         JSP     A,ERRPT7\r
+        001546' 515454  454741          SIXBIT  ?ILLEGAL -LOADER@?\r
+        001547' 540015  545741\r
+        001550' 444562  400000\r
+        001551' 262740  000011          POP     P,V\r
+        001552' 254000  001520'         JRST    ERRP41\r
+\r
+                                ;PRINT QUESTION MARK\r
+\r
+        001553' 261740  000010  PRQ:    PUSH    P,T             ;SAVE\r
+        001554' 201400  000077          MOVEI   T,"?"           ;PRINT ?\r
+        001555' 260740  001604'         PUSHJ   P,TYPE2         ;...\r
+        001556' 262740  000010          POP     P,T             ;RESTORE\r
+        001557' 263740  000000          POPJ    P,              ;RETURN\r
+\r
+\r\f1KLOAD - LOADS MACROX                 PAGE 38\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                ;INPUT - OUTPUT INTERFACE\r
+\r
+                                ;BINARY INPUT SUBROUTINE - RETURNS A WORD IN W\r
+                                IFE K,<\r
+                                WORDPR: PUSHJ   P,WORD          ;GET FIRST WORD OF PAIR\r
+                                        MOVE    C,W             ;KEEP IT HANDY>\r
+        001560' 377000  001723' WORD:   SOSG    BUFR2           ;SKIP IF BUFFER NOT EMPTY\r
+        001561' 254000  001564'         JRST    WORD2\r
+        001562' 134500  001722' WORD1:  ILDB    W,BUFR1         ;PICK UP 36 BIT WORD\r
+        001563' 263740  000000          POPJ    P,\r
+\r
+        001564' 066040  000000  WORD2:  INPUT     1,                    ;GET NEXT BUFFER LOAD\r
+        001565' 062040  000012          STATUS    1,W           ;GET DEVICE STATUS FROM MONITOR\r
+        001566' 602500  020000          TRNE    W,IODEND                ;TEST FOR EOF\r
+        001567' 254000  000631'         JRST    EOF             ;END OF FILE EXIT\r
+        001570' 606500  740000          TRNN    W,IOBAD         ;TEST FOR DATA ERROR\r
+        001571' 254000  001562'         JRST    WORD1           ;DATA OK - CONTINUE LOADING\r
+        001572' 265700  001462'         JSP     A,ERRPT         ;DATA ERROR - PRINT MESSAGE\r
+        001573' 515660  656400          SIXBIT    /INPUT ERROR#/\r
+        001574' 456262  576203\r
+        001575' 254000  000042'         JRST    LD2             ;GO TO ERROR RETURN\r
+                                ;TYPEOUT SUBROUTINE - THE CHARACTER SUPPLIED IN T IS CONVERTED TO ASCII\r
+                                ;AND IS OUTPUT ON THE CONSOLE AND/OR THE SPECIFIED LOADER MAP OUTPUT\r
+                                ;DEVICE\r
+\r
+        001576' 260740  001600' CRLFLF:   PUSHJ     P,CRLF\r
+        001577' 661000  000020  FCRLF:  TLO     F,FCONSW        ;INSURE TTY OUTPUT\r
+        001600' 201400  000015  CRLF:   MOVEI     T,15          ;CARRIAGE RETURN LINE FEED\r
+        001601' 260740  001604'         PUSHJ     P,TYPE2\r
+        001602' 201400  777752          MOVEI     T,12-40               ;LINE FEED IN PSEUDO SIXBIT\r
+        001603' 201410  000040  TYPE:   MOVEI     T,40(T)               ;CONVERT SIXBIT TO ASCII\r
+        001604' 607040  020000  TYPE2:  TLNN    N,AUXSWI        ;IS THER AN AUXILIARY DEVICE?\r
+        001605' 254000  001615'         JRST    TYPE3           ;NO, DONT OUTPUT TO IT\r
+        001606' 667040  040000          TLON    N,AUXSWE        ;IS AUX. DEV. ENTERED?\r
+        001607' 260740  001375'         PUSHJ   P,IAD2          ;NOPE, DO SO!\r
+        001610' 377000  001720'         SOSG    ABUF2           ;SPACE LEFT IN BUFFER?\r
+        001611' 067100  000000          OUTPUT  2,              ;CREATE A NEW BUFFER\r
+        001612' 136400  001717'         IDPB    T,ABUF1         ;DEPOSIT CHARACTER\r
+        001613' 607000  000020          TLNN    F,FCONSW        ;FORCE OUTPUT TO CONSOLE TOO?\r
+        001614' 263740  000000          POPJ    P,              ;NOPE\r
+        001615' 336000  001712' TYPE3:  SKIPN   BUFO2           ;END OF BUFFER\r
+        001616' 067140  000000          OUTPUT  3,              ;FORCE OUTPUT NOW\r
+        001617' 136400  001711'         IDPB    T,BUFO1         ;DEPOSIT CHARACTER\r
+        001620' 306400  000012          CAIN    T,12            ;END OF LINE\r
+        001621' 067140  000000          OUTPUT  3,              ;FORCE AN OUTPUT\r
+        001622' 263740  000000          POPJ    P,\r
+\r
+\r\f1KLOAD - LOADS MACROX                 PAGE 39\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+        001623' 000002  000002  SE3:    XWD     2,2             ;SYMBOL POINTER INCREMENT\r
+        001624' 440600  000012  LSTPT:  POINT     6,W           ;CHARACTER POINTER TO W\r
+        001625' 777737  001631' PDLPT:  XWD     -41,PDLST-1;    INITIAL PUSHDOWN POINTER\r
+        001626' 034372  246575  COMM:   SQUOZE    0,.COMM.\r
+        001627' 000000  000000  PDSAV:  0                               ;SAVED PUSHDOWN POINTER\r
+        001630' 000000  000000  COMSAV:   0                             ;LENGTH OF COMMON\r
+        001631' 000000  000000  MDG:    0                       ;COUNTER FOR MUL DEF GLOBALS\r
+        001632'                 PDLST:  BLOCK   40\r
+\r
+        001672' 000000  000000  F.C:    0\r
+        001673' 000000  000000          0       ;STORE N HERE\r
+        001674' 000000  000000          0       ;STORE X HERE\r
+        001675' 000000  000000          0       ;STORE H HERE\r
+        001676' 000000  000000          0       ;STORE S HERE\r
+        001677' 000000  000000          0       ;STORE R HERE\r
+        001700' 000000  000000  B.C:    0\r
+        001701' 000000  000000  F.I:    0                       ;INITIAL F - FLAGS\r
+        001702' 000000  000000          0                       ;INITIAL N\r
+        001703' 000011  002440'         XWD     V,LDEND         ;INITIAL X - LOAD PROGRAM AFTER LOADER\r
+        001704' 000000  002600'         EXP     LDEND+JOBPRO    ;INITIAL H - INITIAL PROG BREAK\r
+        001705' 000000  000000          0                       ;INITIAL S\r
+        001706' 000012  000140          XWD     W,JOBPRO        ;INITIAL R - INITIAL RELOC\r
+        001707' 000000  000000          0                       ;INITIAL B\r
+\r\f1KLOAD - LOADS MACROX                 PAGE 40\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                                ;BUFFER HEADERS AND HEADER HEADERS\r
+\r
+        001710' 000000  000000  BUFO:   0                               ;CONSOLE INPUT HEADER HEADER\r
+        001711' 000000  000000  BUFO1:  0\r
+        001712' 000000  000000  BUFO2:  0\r
+\r
+        001713' 000000  000000  BUFI:   0                               ;CONSOLE OUTPUT HEADER HEADER\r
+        001714' 000000  000000  BUFI1:  0\r
+        001715' 000000  000000  BUFI2:  0\r
+\r
+        001716' 000000  000000  ABUF:   0                       ;AUXILIARY OUTPUT HEADER HEADER\r
+        001717' 000000  000000  ABUF1:  0\r
+        001720' 000000  000000  ABUF2:  0\r
+\r
+        001721' 000000  000000  BUFR:   0                               ;BINARY INPUT HEADER HEADER\r
+        001722' 000000  000000  BUFR1:  0\r
+        001723' 000000  000000  BUFR2:  0\r
+\r
+        001724' 000000  000000  DTIN:   0                               ;DECTAPE INPUT BLOCK\r
+        001725' 000000  000000  DTIN1:  0\r
+        001726' 000000  000000          0\r
+        001727' 000000  000000  DTIN2:  0\r
+\r
+        001730' 000000  000000  DTOUT:  0                               ;DECTAPE OUTPUT BLOCK\r
+        001731' 000000  000000  DTOUT1:   0\r
+        001732' 000000  000000          0\r
+        001733' 000000  000000          0\r
+\r
+                        000052          TTYL=52                 ;TWO TTY BUFFERS\r
+                                IFE K,< BUFL=406                ;TWO DTA BUFFERS FOR LOAD>\r
+                        000203  IFN K,< BUFL=203                ;ONE DTA BUFFER FOR LOAD>\r
+                        000203          ABUFL=203               ;ONE DTA BUFFER FOR AUX DEV\r
+        001734'                 TTY1:   BLOCK     TTYL          ;TTY BUFFER AREA\r
+        002006'                 BUF1:   BLOCK   BUFL            ;LOAD BUFFER AREA\r
+        002211'                 AUX:    BLOCK   ABUFL           ;AUX BUFFER AREA\r
+        002414'                 ZEROS:  REPEAT 4,<0>\r
+        002414' 000000  000000\r
+        002415' 000000  000000\r
+        002416' 000000  000000\r
+        002417' 000000  000000\r
+\r
+                                IFN RPGSW,<CTLIN:       BLOCK 3\r
+                                CTLNAM: BLOCK 3\r
+                                CTLBUF: BLOCK 203+1\r
+                                >\r
+\r\f1KLOAD - LOADS MACROX                 PAGE 41\r
+        DICK GRUEN: V25 3 AUG 68\r
+\r
+                        040000  IOBKTL=40000\r
+                        400000  IOIMPM=400000\r
+                        200000          IODERR=200000\r
+                        100000          IODTER=100000\r
+                        020000          IODEND=20000\r
+\r
+                        740000  IOBAD=IODERR+IODTER+IOBKTL+IOIMPM\r
+\r
+                                        INTERN    PWORD,DTIN,DTOUT,LDEND\r
+                                        INTERN    WORD,LD,BEG,PDLST,LOAD\r
+                                        INTERN    CRLF,TYPE,PMS,PRMAP\r
+                                        INTERN    F,P,X,H,S,R,B,N,T,V,W,C,E,Q,A,D\r
+\r
+                                        EXTERN  JOBDDT,JOBFF,JOBSA,JOBREL,JOBSYM,JOBUSY,JOB41\r
+\r
+                                ;END HERE IF 1K LOADER REQUESTED.\r
+        002420'                 IFN K,  <LITS:  LIT\r
+        002420' 444566  435062\r
+        002421' 656460  435462\r
+        002422' 545741  444562\r
+        002423' 251656  000000\r
+        002424' 530043  576245\r
+        002425' 435041  515600\r
+        002426' 545142  240000\r
+        002427' 200500  002426'\r
+        002430' 202500  001724'\r
+        002431' 260740  000626'\r
+        002432' 621000  000002\r
+        002433' 254000  000527'\r
+        002434' 545142  242000\r
+        002435' 525742  444164\r
+        002436' 624151  440000\r
+        002437' 077777  777777\r
+        002440'                         VAR\r
+                        000000' LDEND:  END     LD\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 002440\r
+\r
+8K CORE USED\r
+\r\f1KLOAD - LOADS MACROX                 PAGE 42\r
+        SYMBOL TABLE\r
+\r
+                000456  \r
+A               000016  INT\r
+ABUF            001716' \r
+ABUF1           001717' \r
+ABUF2           001720' \r
+ABUFL           000203  \r
+ALLFLG          000001  SPD\r
+ASW             000100  SPD\r
+AUX             002211' \r
+AUXSWE          040000  SPD\r
+AUXSWI          020000  SPD\r
+B               000006  INT\r
+B.C             001700' \r
+BEG             000000' INT\r
+BLTSET          000251' \r
+BLTSYM          000000  \r
+BUF1            002006' \r
+BUFI            001713' \r
+BUFI1           001714' \r
+BUFI2           001715' \r
+BUFL            000203  \r
+BUFO            001710' \r
+BUFO1           001711' \r
+BUFO2           001712' \r
+BUFR            001721' \r
+BUFR1           001722' \r
+BUFR2           001723' \r
+C               000013  INT\r
+CALLEX          000007' \r
+CDDTGT          000005  SPD\r
+CDDTOU          000003  SPD\r
+CEXIT           000012  SPD\r
+CHAIN3          000350' \r
+CHN5            000001  \r
+CHNBLT          000014  \r
+CHNC            000307' \r
+CHNERR          000010  \r
+CHNR            000310' \r
+CHNSYM          001110' \r
+COMFLG          000004  SPD\r
+COMM            001626' \r
+COMSAV          001630' \r
+CPOPJ1          001233' \r
+CRLF            001600' INT\r
+CRLFLF          001576' \r
+CSETDD          000002  SPD\r
+CSW             000001  SPD\r
+CTLSET          000004' \r
+D               000007  INT\r
+DDSW            004000  SPD\r
+DISPL           000005  \r
+DSW             100000  SPD\r
+DSYMSW          001000  SPD\r
+\r\f1KLOAD - LOADS MACROX                 PAGE 42-1\r
+        SYMBOL TABLE\r
+\r
+DTIN            001724' INT\r
+DTIN1           001725' \r
+DTIN2           001727' \r
+DTOUT           001730' INT\r
+DTOUT1          001731' \r
+E               000014  INT\r
+EOF             000631' \r
+EOF1            000632' \r
+EOF2            000633' \r
+ERRP41          001520' \r
+ERRP8           001540' \r
+ERRPT           001462' \r
+ERRPT0          001465' \r
+ERRPT1          001467' \r
+ERRPT2          001503' \r
+ERRPT3          001507' \r
+ERRPT4          001517' \r
+ERRPT5          001524' \r
+ERRPT6          001525' \r
+ERRPT7          001541' \r
+ERRPT8          001526' \r
+ERRPT9          001543' \r
+ESW             000002  SPD\r
+EXEQSW          002000  SPD\r
+EXPAND          000000  \r
+F               000000  INT\r
+F.C             001672' \r
+F.I             001701' \r
+F4LIB           010000  SPD\r
+FCONSW          000020  SPD\r
+FCRLF           001577' \r
+FIXW            001060' \r
+FIXWL           001067' \r
+FIXWP           001050' \r
+FSCN            000634' \r
+FSCN1           000652' \r
+FSCN2           000655' \r
+FSW             000010  SPD\r
+FULLC           001141' \r
+FULLSW          000200  SPD\r
+H               000003  INT\r
+HIGH            001145' \r
+HIGH0           001143' \r
+HIGH3           001152' \r
+IAD2            001375' \r
+ILC             001205' \r
+ILD             000515' \r
+ILD1            000522' \r
+ILD2            000527' \r
+ILD3            000535' \r
+ILD4            000541' \r
+ILD5            000547' \r
+ILD6            000525' \r
+\r\f1KLOAD - LOADS MACROX                 PAGE 42-2\r
+        SYMBOL TABLE\r
+\r
+ILD9            000543' \r
+IMD3            001400' \r
+IOBAD           740000  \r
+IOBKTL          040000  \r
+IODEND          020000  \r
+IODERR          200000  \r
+IODTER          100000  \r
+IOIMPM          400000  \r
+IOWDP           000013  \r
+IOWDPP          000363' \r
+ISAFLG          000002  SPD\r
+ISW             020000  SPD\r
+JOB41           000330' EXT\r
+JOBBLT          000134  SPD\r
+JOBCHN          000131  SPD\r
+JOBDDT          000331' EXT\r
+JOBFF           000516' EXT\r
+JOBPRO          000140  SPD\r
+JOBREL          001121' EXT\r
+JOBSA           000332' EXT\r
+JOBSYM          000327' EXT\r
+JOBUSY          000247' EXT\r
+K               000001  SPD\r
+LD              000000' INT\r
+LD2             000042' \r
+LD2B            000050' \r
+LD2BA           000054' \r
+LD2D            000057' \r
+LD2DA           000057' \r
+LD2Q            000042' \r
+LD3             000063' \r
+LD3A            000100' \r
+LD3AA           000066' \r
+LD4             000110' \r
+LD5             000115' \r
+LD5A            000127' \r
+LD5B            000134' \r
+LD5B1           000137' \r
+LD5C            000145' \r
+LD5C1           000165' \r
+LD5D            000201' \r
+LD5E            000203' \r
+LD5E1           000205' \r
+LD5E2           000215' \r
+LD5E3           000225' \r
+LD5E5           000212' \r
+LD6             000372' \r
+LD6A            000365' \r
+LD6A1           000370' \r
+LD6B            000376' \r
+LD6C            000430' \r
+LD6D            000433' \r
+LD7             000437' \r
+\r\f1KLOAD - LOADS MACROX                 PAGE 42-3\r
+        SYMBOL TABLE\r
+\r
+LD7A            000442' \r
+LD7B            000446' \r
+LD7C            000452' \r
+LD7D            000460' \r
+LD8             000465' \r
+LD9             000476' \r
+LDAC            000000  \r
+LDDT            000614' \r
+LDDT0           000616' \r
+LDDT1           000622' \r
+LDDT2           000626' \r
+LDDT3           000627' \r
+LDDTX           000613' \r
+LDEND           002440' INT\r
+LDF             000656' \r
+LIB             000572' \r
+LIB1            000575' \r
+LIB2            000577' \r
+LIB3            000605' \r
+LIBF            000557' \r
+LIBF1           000564' \r
+LIBF2           000565' \r
+LIBSW           004000  SPD\r
+LITS            002420' \r
+LOAD            000657' INT\r
+LOAD1           000660' \r
+LOAD1A          000661' \r
+LOAD2           000676' \r
+LOAD3           000703' \r
+LOAD4           000704' \r
+LOAD4A          000704' \r
+LOCD            001211' \r
+LOSEBI          000006  \r
+LRAID           000610' \r
+LRAIDX          000607' \r
+LSTPT           001624' \r
+MDG             001631' \r
+N               000001  INT\r
+NAME            001162' \r
+NAME1           001170' \r
+NAME2           001201' \r
+NOEX            000275' \r
+NSW             200000  SPD\r
+NUTS            000002' \r
+P               000017  INT\r
+PDLPT           001625' \r
+PDLST           001632' INT\r
+PDSAV           001627' \r
+PMS             001332' INT\r
+PMS2            001350' \r
+PMS3            001356' \r
+PMS4            001372' \r
+PP              000000  \r
+\r\f1KLOAD - LOADS MACROX                 PAGE 42-4\r
+        SYMBOL TABLE\r
+\r
+PPDL            000060  SPD\r
+PRMAP           001261' INT\r
+PRMAP1          001301' \r
+PRMAP2          001316' \r
+PRMAP3          001327' \r
+PRMAP4          001330' \r
+PRMAP5          001332' \r
+PRNAM           001406' \r
+PRNAM0          001404' \r
+PRNAM1          001405' \r
+PRNAME          001433' \r
+PRNUM           001407' \r
+PRNUM0          001410' \r
+PRNUM1          001412' \r
+PRNUM2          001417' \r
+PROG            000710' \r
+PROG1           000722' \r
+PRQ             001553' \r
+PRWORD          001235' \r
+PWORD           001454' INT\r
+PWORD1          001455' \r
+PWORD2          001456' \r
+Q               000015  INT\r
+R               000005  INT\r
+RCNUM           001420' \r
+REMSYM          001215' \r
+REWSW           002000  SPD\r
+RPGSW           000000  \r
+RWORD           001243' \r
+RWORD1          001245' \r
+RWORD2          001251' \r
+RWORD3          001255' \r
+S               000004  INT\r
+SAS1            000234' \r
+SASYM           000227' \r
+SDEF            001226' \r
+SDEF1           001227' \r
+SDEF2           001231' \r
+SE3             001623' \r
+SFULLC          001132' \r
+SKIPSW          000004  SPD\r
+SLASH           000100  SPD\r
+SLIBSW          000400  SPD\r
+SP1             001430' \r
+SPACE           001431' \r
+SPACES          001427' \r
+SPT             001436' \r
+SREQ            001224' \r
+SSW             400000  SPD\r
+START           001157' \r
+SVA             001001' \r
+SYM             000725' \r
+SYM1            000741' \r
+\r\f1KLOAD - LOADS MACROX                 PAGE 42-5\r
+        SYMBOL TABLE\r
+\r
+SYM1A           000755' \r
+SYM1B           000757' \r
+SYM1C           000761' \r
+SYM1D           000762' \r
+SYM2            000770' \r
+SYM2A           001002' \r
+SYM2B           000771' \r
+SYM2C           001000' \r
+SYM2W           001117' \r
+SYM2W1          000775' \r
+SYM2WA          001123' \r
+SYM3            001006' \r
+SYM3A           001035' \r
+SYM3A1          001042' \r
+SYM3B           001043' \r
+SYM3X           001031' \r
+SYM3X1          001016' \r
+SYM3X2          001027' \r
+SYM4            001125' \r
+SYM4A           001130' \r
+SYMFIX          001072' \r
+SYMPT           000730' \r
+SYMSW           040000  SPD\r
+T               000010  INT\r
+TTY1            001734' \r
+TTYL            000052  \r
+TYPE            001603' INT\r
+TYPE2           001604' \r
+TYPE3           001615' \r
+V               000011  INT\r
+W               000012  INT\r
+WORD            001560' INT\r
+WORD1           001562' \r
+WORD2           001564' \r
+X               000002  INT\r
+ZEROS           002414' \r
+\fPPPPPPPPPPPP            IIIIIIIII         PPPPPPPPPPPP                                                                  \r
+PPPPPPPPPPPP            IIIIIIIII         PPPPPPPPPPPP                                                                  \r
+PPPPPPPPPPPP            IIIIIIIII         PPPPPPPPPPPP                                                                  \r
+PPP         PPP            III            PPP         PPP                                                               \r
+PPP         PPP            III            PPP         PPP                                                               \r
+PPP         PPP            III            PPP         PPP                                                               \r
+PPP         PPP            III            PPP         PPP                                                               \r
+PPP         PPP            III            PPP         PPP                                                               \r
+PPP         PPP            III            PPP         PPP                                                               \r
+PPPPPPPPPPPP               III            PPPPPPPPPPPP                                                                  \r
+PPPPPPPPPPPP               III            PPPPPPPPPPPP                                                                  \r
+PPPPPPPPPPPP               III            PPPPPPPPPPPP                                                                  \r
+PPP                        III            PPP                                                                           \r
+PPP                        III            PPP                                                                           \r
+PPP                        III            PPP                                                                           \r
+PPP                        III            PPP                                                                           \r
+PPP                        III            PPP                                                                           \r
+PPP                        III            PPP                                                                           \r
+PPP                     IIIIIIIII         PPP                                                                           \r
+PPP                     IIIIIIIII         PPP                                                                           \r
+PPP                     IIIIIIIII         PPP                                                                           \r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  11:23:08\r
+File: DSKB1 :PIP   .LST   [8,200] Created: 20-April-1967 11:19:00 Printed: 24-April-1978 11:22:30
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:1722 \r
+File will be deleted after printing\r
+\f\rPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 1\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                                00010   TITLE PIP V.030 MOD SANDERS/DBP 19-AUG-71\r
+                                00020   SUBTTL  VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                                00040   ;PERIPHERAL INTERCHANGE PROGRAM\r
+                                00050   ;"COPYRIGHT 1968, 1969, DIGITAL EQUIPMENT CORP.,MAYNARD,MASS.,U.S.A.\r
+\r
+                        000030  00070   VPIP==30                ;VERSION NUMBER\r
+                        000005  00080   SVER==5         ; SANDERS VERSION\r
+\r
+\r
+                                00110   ;WCH==0  PIP IS ASSEMBLED FOR PDP-10 AND ASSUMES NEW FORMAT DECTAPES.\r
+                                00120   ;WCH==1  PIP IS ASSEMBLED FOR PDP-6 AND ASSUMES OLD FORMAT DECTAPES.\r
+\r
+                                00140   ;DISK30==0 PIP IS ASSEMBLED TO RUN WITH 10/40, 10/50 MONITOR SYSTEMS.\r
+                                00150   ;DISK30==1 PIP IS ASSEMBLED TO RUN WITH 10/30 DISK SYSTEM.\r
+\r
+                                00170   ;BLOC0==0 PIP ALLOWS COPYING OF BLOCK0 (DECTAPE).\r
+                                00180   ;BLOC0==1 PIP WILL NOT ALLOW BLOCK0 TO BE COPIED.\r
+\r
+                                00200   ;RIMSW==0 /Y SWITCH OPTION UNAVAILABLE. (ALSO UNAVAILABLE FOR OLD FORMAT DECTAPES)\r
+                                00210   ;RIMSW==1 /Y SWITCH OPTION AVAILABLE.\r
+\r
+                                00230   ;FTDSK==0       NON DSK SYSTEM.NO CCL.SAVES CORE ON 10/40\r
+                                00240   ;FTDSK==1       10/50 DSK SYSTEM,ALSO 10/30 DSK SYSTEM\r
+\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 2\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+\r
+                                00280   ;CONDITIONAL ASSEMBLY SWITCH SETUP (NORMAL CONFIGURATION)\r
+                                00290   ;---------------------------------\r
+\r
+                                00310   IFNDEF WCH,     <WCH==0>\r
+                                00320   IFNDEF DISK30,  <DISK30==0>\r
+                                00330   IFNDEF BLOC0,   <BLOC0==0>\r
+                                00340   IFNDEF FTDSK,   <FTDSK==0>\r
+                                00350   IFN WCH,        <RIMSW==0>\r
+                                00360   IFNDEF RIMSW,   <RIMSW==0>\r
+                                00370   IFNDEF K,       <K==0>\r
+\r
+\r
+\r
+\r
+        000124                  00420           LOC 124\r
+        000124  000000  000000  00430           PIP1            ;SET REENTER ADDRESS\r
+        000000'                 00440           RELOC\r
+        000137                  00450           LOC 137\r
+        000137  000005  000030  00460           XWD SVER,VPIP\r
+        000000'                 00470           RELOC\r
+\r
+\r
+                                00500           MLON\r
+                                00510   IFDEF SALL,     <SALL>\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 3\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+\r
+                                00540   EXTERN JOBFF,JOBSA,JOBREL\r
+\r
+                                00560   ;FLAG ASSIGNMENTS (RIGHT HALF)\r
+\r
+                        000001  00580   LINE==1         ;ASCII LINE MODE PROCESSING\r
+                        000002  00590   BMOD==2         ;BINARY PROCESSING\r
+                        000004  00600   TBMOD==4        ;SUPPRESS TRAILING SP, CHANGE MULTIPLE SP TO TABS\r
+                        000010  00610   DFLG==10        ;DELETE FILES MODE\r
+                        000020  00620   LFLG==20        ;LIST DIRECTORY\r
+                        000040  00630   NSMOD==40       ;IGNORE INPUT SEQUENCE NUMBERS\r
+                        000100  00640   RFLG==100       ;RENAME FILE MODE\r
+                        000200  00650   SQMOD==200      ;GENERATE SEQUENCE NUMBERS\r
+                        000400  00660   STS==400        ;END OF LINE SEEN, OUTPUT SEQUENCE NUMBER NEXT\r
+                        001000  00670   SPMOD==1000     ;SUPPRESS TRAILING SPACES\r
+                        002000  00680   XFLG==2000      ;COPY DECTAPE MODE\r
+                        004000  00690   ZFLG==4000      ;CLEAR DECTAPE DIRECTORY\r
+                        010000  00700   SUS==10000      ;SEQUENCE NUMBER GENERATION IN PROGRESS\r
+                        020000  00710   SPOK==20000     ;SPACE WAS LAST CHARACTER\r
+                        040000  00720   ESQ==40000      ;STOP OUTPUTTING SEQ NUM, RESUME OUTPUTTING DATA\r
+                        100000  00730   SNI==100000     ;DO NOT INCREMENT SEQUENCE NUMBER\r
+                        200000  00740   MTFLG==200000   ;MTA REQUEST RECEIVED\r
+                        400000  00750   OSFLG==400000   ;GENERATE SEQ. NOS. INCR. BY ONE\r
+\r
+                                00770   ;FLAG ASSIGNMENTS (LEFT HALF)\r
+\r
+                        000001  00790   OFLG==1         ;BLOCK 0 COPY\r
+                        000002  00800   RIMFLG==2       ;RIM FORMAT INPUT /OUT TO DTA. ILLEG IF RIMSW==0,OR WCH==1\r
+                        000004  00810   PFLG==4         ;FORTRAN PROGRAM OUTPUT FORMAT CONVERSION\r
+                        000010  00820   PCONV==10       ;COLUMN 1 CONVERSION IN PROGRESS\r
+                        000020  00830   NEWFIL==20      ;NEW FILE JUST INITIATED\r
+                        000040  00840   CHKFLG==40      ;PARENTHESES CHECK MODE\r
+                        000100  00850   IFLG==100       ;SELECT IMAGE MODE\r
+                        000200  00860   GFLG==200       ;KEEP GOING IF THERE ARE I/O ERRORS\r
+                        000400  00870   IBFLG==400      ;SELECT IMAGE BINARY MODE\r
+                        001000  00880   JFLG==1000      ;NON-STANDARD MODE\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 4\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                                00900   ;AUXFLG ASSIGNMENTS (LEFT HALF)\r
+\r
+                        000001  00920   QFLG==1         ;PLEASE PRINT SWITCH SET\r
+                        000002  00930   NSPROT==2       ;NON-STANDARD DISK OUTPUT PROTECTION\r
+                        000004  00940   SBIN==4         ;36-BIT PR. ON REL. ETC. FILES\r
+                        000020  00950   NOMORE==20      ;IGNORE ANY SWITCHES BUT MTA FROM NOW ON\r
+                        000040  00960   CDRFLG==40      ;CONVERT COLS 73-80 TO SPACES + /C\r
+                        000100  00970   INFOFL==100     ;FLAG USED BY ERR3A:\r
+                        000200  00980   RSDCFL==200     ;USED FOR MERGING FILES, ==1 IF FILE HAS EXTENSION\r
+                                00990                   ;REL,SAV,DMP,CHN OR OTHERWISE == 0\r
+                        000400  01000   FRSTIN==400     ;THIS IS THE FIRST INPUT FILE (USED IN FILE\r
+                                01010                   ;MERGE COMMAND) == 0 FOR FIRST INPUT\r
+\r
+                                01030   ;MTAREQ ASSIGNMENTS (RIGHT HALF)\r
+\r
+                        000001  01050   MTAFLG==1       ;MTA ADVANCE ONE FILE\r
+                        000002  01060   MTBFLG==2       ;MTA BACKSPACE ONE FILE\r
+                        000004  01070   MTTFLG==4       ;MTA SKIP TP LOGICAL EOT\r
+                        000010  01080   MTWFLG==10      ;MTA REWIND\r
+                        000020  01090   MTFFLG==20      ;MTA MARK EOF\r
+                        000040  01100   MTUFLG==40      ;MTA REWIND AND UNLOAD\r
+                        000100  01110   MTDFLG==100     ;MTA ADVANCE ONE RECORD\r
+                        000200  01120   MTPFLG==200     ;MTA BACKSPACE ONE RECORD\r
+                        000400  01130   MT8FLG==400     ;MTA SET 800 B.P.I.\r
+                        001000  01140   MT5FLG==1000    ;MTA SET 556 B.P.I.\r
+                        002000  01150   MT2FLG==2000    ;MTA SET 200 B.P.I.\r
+                        004000  01160   MTEFLG==4000    ;MTA SELECT EVEN PARITY\r
+\r
+                                01180   ;AUXFLG ASSIGNMENTS (RIGHT HALF)\r
+\r
+                        000001  01200   REDFLG==1       ;==1 IF ANY FILES ARE INPUT (OTHER THAN DIRECTORIES)\r
+                        000002  01210   SYSFLG==2       ;DEVICE IS SYS\r
+                        000004  01220   SYSLST==4       ;LAST DEVICE WAS SYS\r
+                        000010  01230   LPTOUT==10      ;LPT OUTPUT\r
+                        000020  01240   FFLG==20        ;LIST SHORT DISK DIRECTORY\r
+                        000040  01250   ONEOUT==40      ;ONE OUTPUT FILE INITIALIZED\r
+                        000100  01260   CDRIN==100      ;CARDS IN\r
+                        000200  01270   MTAOUT==200     ;OUTPUT TO MTA\r
+                        000400  01280   MTAIN==400      ;INPUT FROM MTA\r
+                        001000  01290   TTYIN==1000     ;INPUT FROM TTY\r
+                        002000  01300   READ1==2000     ;LOOK FOUND NEW INPUT FILE, NO READ YET.\r
+                        004000  01310   DTAOUT==4000    ;OUTPUT TO DTA\r
+                        010000  01320   DSKOUT==10000   ;OUTPUT TO DSK\r
+                        020000  01330   DTAIN==20000    ;INPUT FROM DTA\r
+                        040000  01340   DSKIN==40000    ;INPUT FROM DSK\r
+                        100000  01350   TTYOUT==100000  ;OUTPUT TO TTY\r
+                        200000  01360   PPTIN==200000   ;INPUT FROM PTR\r
+                        400000  01370   PPTOUT==400000  ;OUTPUT TO PTP\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 5\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                                01390   ;CALFLG ASSIGNMENTS (RIGHT HALF) FOR DESCRIBING A BLOCK OF INFORMATION\r
+                                01400   ;FOUND BY THE COMMAND SCANNER.\r
+\r
+                        000001  01420   FNEX==1         ;==1 WHEN FN.EX==*.*, *.EXT, FN.* (WHEN MORE\r
+                                01430                   ;THAN ONE FN.EX IS IMPLIED).\r
+                        000002  01440   MATEX==2        ;FILE EXTENSIONS MUST MATCH\r
+                        000004  01450   MATFN==4        ;FILE NAMES MUST MATCH\r
+                        000010  01460   NEWDEV==10      ;A NEW INPUT DEVICE WAS GIVEN\r
+                        000020  01470   NEWPP==20       ;A NEW #P-P WAS GIVEN\r
+                        000040  01480   ASTFLG==40      ;FLAG SET WHEN FILE NAMED IN CS FOUND\r
+                                01490                   ;BY LOOK ROUTINE EVEN IF FN OR EXT =*\r
+                        000100  01500   DEV==100        ;DEVICE NAME INDICATOR\r
+                        000200  01510   DVSWTH==200     ;OUTPUT DEVICE SEEN\r
+                        000400  01520   NSWTCH==400     ;INDICATES NULL NAME\r
+                        001000  01530   SSWTCH==1000    ;LEFT ARROW SEEN\r
+                        002000  01540   LISTTY==2000    ;LIST TO TTY\r
+                        004000  01550   TMPI==4000      ;INPUT DEVICE TMPCOR SEEN\r
+                        010000  01560   TMPO==10000     ;OUTPUT DEVICE TMPCOR\r
+                        020000  01570   RXFLG==20000    ;(RX) SEEN\r
+\r
+                        000037  01590   ALLCLF==FNEX!MATEX!MATFN!NEWDEV!NEWPP\r
+\r
+                                01610   ;DEVICE CHANNEL ASSIGNMENTS\r
+\r
+                        000001  01630   CON==1          ;COMMAND INPUT CHANNEL\r
+                        000002  01640   OUT==2          ;OUTPUT DEVICE\r
+                        000003  01650   IN==3           ;INPUT DEVICE\r
+                        000004  01660   TAPE==4         ;MTA POSITIONING\r
+                        000005  01670   DIR==5          ;DISK DIR. READ\r
+                        000006  01680   BLKIN==6        ;INPUT FOR 10/30 DISK FILES\r
+                        000007  01690   DTDIR==7        ; DECTAPE DIR. READ(FOR PPN)\r
+\r
+                                01710   ;ACCUMULATOR ASSIGNMENTS\r
+\r
+                        000001  01730   T1=1            ;GENERAL PURPOSE\r
+                        000002  01740   T2=2            ;G.P.\r
+                        000003  01750   T3=3            ;G.P.\r
+                        000004  01760   CHR=4           ;INPUT CHARACTER\r
+                        000005  01770   P=5             ;PUSHDOWN POINTER\r
+                        000006  01780   FLAG=6          ;FLAG REGISTER\r
+                        000007  01790   T4=7            ;G.P.\r
+                        000010  01800   IOS=10          ;IO STATUS BITS\r
+                        000011  01810   T5=11           ;G.P.\r
+                        000012  01820   T6=12           ; G.P.\r
+                        000013  01830   AUXFLG=13       ;AUXILIARY FLAG REGISTER\r
+                        000014  01840   T7=14           ;G.P.\r
+                        000015  01850   DOUT=15         ;DIVIDED NO. FOR OUTPUT\r
+                        000016  01860   DOUT1=16        ;REMAINDER, DOUT+1\r
+                        000017  01870   CALFLG=17       ;MORE FLAGS\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 6\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+\r
+                                01900   ;MISCELLANEOUS PARAMETERS\r
+\r
+                        400000  01920   WRTLOK==400000  ;WRITE LOCK (DECTAPE) /IMPROPER I/O\r
+                        040000  01930   BIGBLK==40000   ;BLOCK TOO LARGE\r
+                        000002  01940   INBIT==2        ;DEVCHR BIT FOR DEV CAN DO INPUT\r
+                        000001  01950   OUTBIT==1       ;DEVCHR BIT FOR DEV CAN DO OUTPUT\r
+                        020000  01960   EOFBIT==20000   ;END OF FILE\r
+                        002000  01970   EOTBIT==2000    ;END OF TAPE\r
+                        000004  01980   DTABIT==4       ;DEVCHR BIT FOR DECTAPE IDENTIFICATION\r
+                        000001  01990   INHIB==1        ;OUTPUT RELEASE INHIBIT BIT\r
+                        000010  02000   TABSP==10       ;SPACES PER TAB\r
+                        000200  02010   PTRBIT==200     ;DEVCHR BIT FOR PTR\r
+                        000400  02020   PTPBIT==400     ;DEVCHR BIT FOR PTP\r
+                        200000  02030   DSKBIT==200000  ;DEVCHR BIT FOR DSK\r
+                        000020  02040   MTABIT==20      ;DEVCHR BIT FOR MTA\r
+                        040000  02050   LPTBIT==40000   ;DEVCHR BIT FOR LPT\r
+                        000010  02060   TTYBIT==10      ;DEVCHR BIT FOR TTY\r
+                        100000  02070   CDRBIT==100000  ;DEVCHR FOR CDR\r
+                        000200  02080   DENS2==200      ;MTA 200 BPI\r
+                        000400  02090   DENS5==400      ;MTA 556 BPI\r
+                        000600  02100   DENS8==600      ;MTA 800 BPI\r
+                        001000  02110   PARE==1000      ;MTA EVEN PARITY\r
+                        004000  02120   LDP==4000       ;MTA LOAD POINT STATUS\r
+                        000020  02130   HPAGE==20\r
+\r
+                                02150   ;MACRO DEFINITIONS\r
+\r
+                                02170   DEFINE SKIP (J)<JRST    .+1+'J>\r
+\r
+                                02190   DEFINE  LSTLIN (Z),<\r
+                                02200           SKIPA   T1,[POINT 7,Z]\r
+                                02210           PUSHJ   P,PUT\r
+                                02220           ILDB    CHR,T1\r
+                                02230   IFN WCH,<PUSHJ  P,CCASE>\r
+                                02240           JUMPN   CHR,.-2>\r
+\r
+                                02260   DEFINE  ERRPNT  (X),<\r
+                                02270           JSP     T1,PTEXT\r
+                                02280           ASCIZ   X>\r
+\r
+                                02300   DEFINE  ERRPN2  (X),<\r
+                                02310           JSP     T1,PTEXT2\r
+                                02320           ASCIZ   X>\r
+\r
+                                02340   DEFINE  ERRPNX  (X),<\r
+                                02350           JSP     T1,PRETXT\r
+                                02360           ASCIZ   X>\r
+\r
+\r
+        000000'                 02390   LOW:\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 7\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+\r
+                                02420   ;ASCII CHARACTERS\r
+\r
+                        000015  02440   CR==15          ;CARRIAGE RETURN\r
+                        000012  02450   LF==12          ;LINE FEED\r
+                        000014  02460   FF==14          ;FORM-FEED\r
+                        000033  02470   ALTMOD==33      ;NEWEST ALTMODE\r
+                        000175  02480   ALT175==175     ;OLDEST ALTMODE\r
+                        000176  02490   ALT176==176     ;OLDER ALTMODE\r
+                        000137  02500   LA==137         ;LEFT ARROW\r
+                        000032  02510   CZ==32          ;CONTROL Z\r
+                        000021  02520   XON==21         ;^Q,START TTY PTR\r
+                        000023  02530   XOFF==23        ;^S,STOP TTY PTR MODE\r
+                        000054  02540   COMMA==54\r
+                        000056  02550   PERIOD==56      ;PERIOD\r
+                        000072  02560   COLON==72\r
+                        000040  02570   SPACE==40\r
+                        000177  02580   DEL==177        ;DELETE,RUBOUT,REPEAT MOD.35\r
+                        000011  02590   TAB==11         ;TAB\r
+\r
+\r
+                                02620   ;CALLI DEFINITIONS\r
+\r
+                                02640   OPDEF   RESET   [CALLI   0]\r
+                                02650   OPDEF   DEVCHR  [CALLI   4]\r
+                                02660   OPDEF   CORE    [CALLI  11]\r
+                                02670   OPDEF   EXIT    [CALLI  12]\r
+                                02680   OPDEF   UTPCLR  [CALLI  13]\r
+                                02690   OPDEF   DATE    [CALLI  14]\r
+                                02700   OPDEF   MSTIME  [CALLI  23]\r
+                                02710   OPDEF   GETPPN  [CALLI  24]\r
+                                02720   OPDEF   PJOB    [CALLI  30]\r
+                                02730   OPDEF   RUN     [CALLI  35]\r
+                                02740   OPDEF   GETTAB  [CALLI  41]\r
+                                02750   OPDEF   TMPCOR  [CALLI  44]\r
+                                02760   OPDEF   DSKCHR  [CALLI  45]\r
+                                02770   OPDEF   JOBSTR  [CALLI  47]\r
+                                02780   OPDEF   DEVPPN  [CALLI  55]\r
+                                02790   OPDEF   WAIT    [MTAPE   0]\r
+\r
+                                02810   ;EXTENDED LOOKUP PARAMETERS\r
+\r
+                        000005  02830   RBSIZ==5                ;WRITTEN FILE LENGTH\r
+                        000017  02840   RIBSTS==17              ;STATUS BITS\r
+\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 8\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+\r
+\r
+        000000' 200000  004665' 02890   PIP1:   MOVE    0,[LOW,,LOW+1]\r
+        000001' 402000  000000' 02900           SETZM   LOW\r
+        000002' 251000  004665' 02910           BLT     0,LOWTOP\r
+        000003' 205000  637163  02920           MOVSI   (SIXBIT /SYS/)\r
+        000004' 047000  000055  02930           DEVPPN                  ;FIND PP OF DEVICE SYS\r
+        000005' 200000  003733' 02940           MOVE    PP13            ;ASSUME 1,,3 IF NOT LEVELD\r
+        000006' 202000  004037' 02950           MOVEM   SYSPP           ;SAVE AS SYS PP\r
+                                02960   IFN FTDSK,<\r
+                                02970           MOVE    [XWD 17,11]     ;STATES WORD\r
+                                02980           GETTAB                  ;GET IT\r
+                                02990           SETZ                    ;ERROR RETURN\r
+                                03000           TLNN    (7B9)           ;TEST FOR LEVEL D\r
+                                03010           TDZA                    ;NOT LEVEL D\r
+                                03020           HRROI   -2              ;THIS IS LEVEL D\r
+                                03030           MOVEM   LEVEL           ;SAVE  >\r
+        000007' 554040  000000* 03040   IFE FTDSK,<HLRZ T1,JOBSA        ;NO DSK SO USE JOBFF>\r
+                                03050   IFN FTDSK,<MOVEI T1,DSKDR       ;ASSUME NO DISK FOR TEST, LOC OF DSK RTNS\r
+                                03060           MOVSI   0,(SIXBIT /DSK/)\r
+                                03070           DEVCHR                  ;DEVCHR REQUEST: IS THERE A DSK \r
+                                03080           JUMPE   0,P1            ;0 IF NO DISK: USE DSKDR\r
+                                03090           MOVE    T1,JOBFF        ;DISK: PREPARE TO SAVE C(JOBFF)\r
+                                03100           HRRZ    T2,JOBREL       ;HIGHEST REL LOC AVAILABLE TO USER\r
+                                03110           CAIL    T2,6000         ;CURRENT SIZE 4K\r
+                                03120           JRST    P1              ;YES\r
+                                03130           MOVEI   T2,7777         ;NO. EXPAND TO 4K\r
+                                03140           HRRZM   T1,SVJBFF       ;SAVE JOBFF SO BUFFERS CAN BE CREATED\r
+                                03150           CORE    T2,             ;CORE UUO\r
+                                03160           JRST    DERR7           ;CORE UNAVAILABLE>\r
+        000010' 552040  004016' 03170   P1:     HRRZM   T1,SVJBFF       ;SAVE JOBFF SO BUFFERS CAN BE CREATED\r
+        000011' 254000  000012' 03180           JRST    PIP\r
+\r
+                                03200   IFN FTDSK,<\r
+                                03210   DERR7:  ERRPNT  </?4K needed/>\r
+                                03220           EXIT                    ;EXIT TO MONITOR>\r
+\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 9\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+        000012' 047000  000000  03250   PIP:    RESET           ;REINITIALIZE WHEN RESTARTED MANUALLY\r
+                                03260                           ;NEW COMMAND STRING SCAN STARTS HERE\r
+        000013'                 03270   PIP2:   \r
+        000013' 265440  000541' 03280   PIP2A:  JSP T5,INICN1   ;INITIALIZE THE TTY AND PDL\r
+        000014' 201000  000015  03290           MOVEI 0,CR      ;TYPE CR\r
+        000015' 136000  003757' 03300           IDPB 0,TFO+1\r
+        000016' 201000  000012  03310           MOVEI 0,LF      ;AND LF\r
+        000017' 136000  003757' 03320           IDPB    0,TFO+1\r
+        000020' 201000  000052  03330           MOVEI   0,"*"   ;TYPE ASTERISK******\r
+        000021' 136000  003757' 03340           IDPB 0,TFO+1    ;READY TO ACCEPT\r
+        000022' 067040  000000  03350           OUTPUT CON,     ;COMMAND FROM TTY\r
+        000023' 402000  004026' 03360   PIP2B:  SETZM TOTBRK    ;CLEAR PAREN COUNTER\r
+        000024' 201000  000010  03370           MOVEI 0,TABSP   ;SPACES PER TAB\r
+        000025' 202000  004027' 03380           MOVEM 0,TABCT   ;INITIALIZE TAB COUNT\r
+        000026' 200000  003721' 03390           MOVE 0,ZRO      ;ASCII /00000/\r
+        000027' 202000  004014' 03400           MOVEM 0,SQNUM   ;INITIALIZE SEQUENCE NUMBERS\r
+        000030' 071040  000000  03410           RELEAS CON,     ;RELEASE TTY FOR USE AS IN-OUT DEVICE\r
+\r
+        000031' 403300  004040' 03430   MAINA1: SETZB FLAG,FILNAM   ;INITIALIZE FOR FIRST/NEXT COMMAND STRING\r
+        000032' 403540  004637' 03440           SETZB AUXFLG,DEVICE\r
+                                03450   IFN FTDSK,<HRRZI 0,(SIXBIT /SYS/) ;SYSTEM DIRECT DEV, DSK/DTA\r
+                                03460           HRLZM 0,ADSK            ;PUT IN SYSTEM DEVICE>\r
+        000033' 200000  004666' 03470           MOVE 0,[XWD FILNAM,FILNAM+1]    ;SET PROJECT, PROG NO.\r
+        000034' 251000  004136' 03480           BLT 0,AB        ;ZERO OUT FILNAM - AB\r
+        000035' 400740  000000  03490           SETZ    CALFLG,         ;CLEAR OTHER FLOGS\r
+        000036' 200140  000055' 03500           MOVE T3,COMPTR  ;BYTE POINTER FOR STORING CS IN BUFFER\r
+\r
+                                03520   ;ACCUMULATE CS CHARS IN COMBUF ALLOW LONG CS ONLY FOR TTY COMMAND\r
+\r
+        000037' 260240  001352' 03540   COMSTO: PUSHJ   P,GETTA         ;GET CS CHAR\r
+        000040' 350340  004131' 03550           AOS     T4,COMCNT       ;COUNT CHARS\r
+        000041' 303340  000310  03560           CAILE   T4,^D200        ;ALLOW UP TO 200 CHARS\r
+        000042' 254000  002045' 03570           JRST    ERR6B           ;MORE THAN 200 CHARS\r
+        000043' 306000  000032  03580           CAIN    0,CZ            ;CHECK FOR ^Z\r
+        000044' 260240  001415' 03590   COMASK: PUSHJ   P,GETEN2        ;SET  ^Z IN 0\r
+        000045' 136000  000003  03600           IDPB    0,T3            ;STORE IN COMBUF\r
+        000046' 332000  004057' 03610           SKIPE   COMEOF          ;END-OF-FILE SET?\r
+        000047' 254000  000056' 03620           JRST    COMPRO          ;YES, PROCESS CS IN COMBUF\r
+        000050' 307000  000015  03630           CAIG    0,CR            ;NOT EOF\r
+        000051' 305000  000012  03640           CAIGE   0,LF            ;LF,VT,FF,CR?\r
+        000052' 306000  000033  03650           CAIN    0,ALTMODE       ;NO, $?\r
+        000053' 254000  000044' 03660           JRST    COMASK          ;YES\r
+        000054' 254000  000037' 03670           JRST    COMSTO          ;NO, KEEP STORING\r
+\r
+        000055' 440700  004060' 03690   COMPTR: POINT   7,COMBUF\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 10\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+\r
+                                03720   ;********************************************************************\r
+                                03730   ;BEGIN SCAN OF DESTINATION PORTION OF COMMAND STRING\r
+        000056'                 03740   COMPRO:\r
+                                03750   IFN FTDSK,<\r
+                                03760           MOVSI   0,(SIXBIT/DSK/)\r
+                                03770           DEVCHR                          ;IS THERE A DSK?\r
+                                03780           JUMPE   0,COMPRP\r
+                                03790           MOVSI   0,(SIXBIT /DSK/)        ;MAKE DEFAULT DEVICE\r
+                                03800           MOVEM   0,DEVICE                ;TENTATIVELY DSK>\r
+\r
+        000056' 071040  000000  03820   COMPRP: RELEASE CON,            ;RELEASE TTY\r
+        000057' 200000  000055' 03830           MOVE    0,COMPTR        ;INITIALIZE POINTER\r
+        000060' 202000  004132' 03840           MOVEM 0,COMPTS          ;TO PICK UP CS FROM COMBUF\r
+        000061' 260240  000557' 03850           PUSHJ P,NAME    ;GO SCAN DESTINATION PORTION OF COMMAND STRING\r
+        000062' 332000  004135' 03860           SKIPE XNAME     ;NO SCAN OVERSHOOT ALLOWED\r
+        000063' 254000  002040' 03870           JRST ERR6A\r
+        000064' 331000  004134' 03880           SKIPL   ESWTCH  ;11/25/69  END OF CS ?\r
+        000065' 254000  000073' 03890           JRST    MAINC   ;NO\r
+        000066' 606740  000400  03900           TRNN    CALFLG,NSWTCH   ;NON-NULL DESTINATION\r
+        000067' 602740  001000  03910           TRNE    CALFLG,SSWTCH   ;_ NOT SEEN?\r
+        000070' 332000  004040' 03920           SKIPE   FILNAM          ;OR ANYTHING IN FILENAME\r
+        000071' 254000  002040' 03930           JRST    ERR6A           ;YES, ERROR\r
+        000072' 254000  000013' 03940           JRST    PIP2            ;NO, ALL OK\r
+\r
+        000073' 200000  004637' 03960   MAINC:  MOVE 0,DEVICE   ;GET OUTPUT DEVICE NAME\r
+        000074' 202000  004634' 03970           MOVEM 0,ODEV    ;SAVE DEVICE NAME FOR LATER USAGE\r
+        000075' 260240  000506' 03980           PUSHJ P,DEVTST  ;SAVE DEVICE TYPE, SET XXXOUT.E.G. DTAOUT\r
+        000076' 260240  000466' 03990           PUSHJ P,ABCHK   ;CHECK MTA BACKSPACE/ADV VALUES\r
+        000077' 260240  000476' 04000           PUSHJ P,PROTK   ;CHECK PROTECTION\r
+        000100' 200000  004136' 04010           MOVE 0,AB       ;MTA VALUE SWITCHES\r
+        000101' 202000  004031' 04020           MOVEM 0,ABOUT   ;GET MTA CONTROL NUMBERS FO R OUT\r
+        000102' 200000  004133' 04030           MOVE 0,AUX\r
+        000103' 202000  004032' 04040           MOVEM 0,AUXOUT\r
+        000104' 200000  004667' 04050           MOVE 0,[XWD FILNAM,DTON]\r
+        000105' 251000  004047' 04060           BLT 0,DTON+3    ;SAVE DESTINATION FILE NAME\r
+                                04070   IFN FTDSK,<TRNN AUXFLG,DSKOUT   ;DISK OUTPUT?>\r
+        000106' 402000  004047' 04080           SETZM DTON+3    ;ZERO 4TH WD OF DIRECTORY ENTRY\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 11\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+        000107' 620740  001000  04100   M3:     TRZ     CALFLG,SSWTCH   ;TERMINATE DESTINATION FILE SCAN\r
+        000110' 402000  004637' 04110           SETZM DEVICE    ;DONT CARRY OVER INPUT DEVICE\r
+                                04120   IFN FTDSK,<MOVSI 0,(SIXBIT/DSK/)\r
+                                04130           DEVCHR          ;IS THERE A DISK\r
+                                04140           JUMPE 0,M3A\r
+                                04150           MOVSI 0,(SIXBIT /DSK/)  ;DEFAULT CASE DSK\r
+                                04160           MOVEM 0,DEVICE  ;MUST NOT LET O/DEV. CARRY OVER AS I/DEV.>\r
+        000111' 260240  000451' 04170   M3A:    PUSHJ P,DESCRP  ;GET A UNIT DESCRIPTOR (INPUT).\r
+        000112' 607540  000001  04180           TLNN AUXFLG,QFLG;Q?     ;SCAN INPUT PORTION OF COMMAND STRING\r
+        000113' 254000  000132' 04190           JRST M2         ;NO\r
+        000114' 551000  637163  04200           HRRZI 0,(SIXBIT /SYS/)  ;YES MAKE INPUT DEVICE SYS\r
+        000115' 516000  004637' 04210           HRLZM 0,DEVICE\r
+        000116' 516000  004050' 04220           HRLZM DEVA              ;SAVE COPY OF INPUT DEVICE\r
+        000117' 200000  003727' 04230           MOVE 0,QPIP             ;MAKE INPUT FILENAME QPIP\r
+        000120' 202000  004040' 04240           MOVEM 0,FILNAM\r
+        000121' 205000  120000  04250           MOVSI 0,(SIXBIT /*/)    ;DONT RESTRICT QPIP\r
+        000122' 202000  004041' 04260           MOVEM 0,FILEX   ;EXT TO BEING NULL\r
+        000123' 620740  000002  04270           TRZ     CALFLG,MATEX    ;DON'T MATCH EXTENSIONS\r
+        000124' 660540  000002  04280           TRO     AUXFLG,SYSFLG   ;DEVICE IS SYS\r
+        000125' 200000  004037' 04290           MOVE    0,SYSPP ;GET SYS PP\r
+        000126' 202000  004043' 04300           MOVEM   0,PP    ;AND SET IT\r
+        000127' 370000  004134' 04310           SOS ESWTCH      ;NO MORE COMMAND STRING\r
+        000130' 620540  261500  04320           TRZ AUXFLG,DTAIN+DSKIN+CDRIN+PPTIN+TTYIN+MTAIN\r
+        000131' 260240  002132' 04330           PUSHJ P,CHECK1  ;CHECK INPUT DEVICE\r
+\r
+        000132' 661540  000020  04350   M2:     TLO AUXFLG,NOMORE       ;NO MORE SWITCHES BUT MTA ALLOWED\r
+        000133' 603300  000001  04360           TLNE FLAG,OFLG  ;BLOCK 0 COPY?\r
+        000134' 254000  003451' 04370           JRST BLOCK0     ;YES\r
+        000135' 640300  002100  04380           TRC FLAG,XFLG+RFLG;(RX)\r
+        000136' 646300  002100  04390           TRCN FLAG,XFLG+RFLG\r
+        000137' 260240  000173' 04400           PUSHJ   P,M5    ;YES,(RX)\r
+                                04410   IFN RIMSW,<\r
+                                04420           TLNN FLAG,RIMFLG        ;RIM OUTPUT?\r
+                                04430           JRST M1         ;NO\r
+                                04440   IFE WCH,<       \r
+                                04450           TRNE AUXFLG,PPTOUT      ;RIM IS ONLY DTA TO PTP\r
+                                04460           TRNN AUXFLG,DTAIN!DSKIN!MTAIN\r
+                                04470           JRST ERR5B>\r
+                                04480   IFN WCH,<JRST RIMTB  >>\r
+\r
+        000140' 201340  000001  04500   M1:     MOVEI T4,1      ;ASCII LINE MODE ASSUMED\r
+        000141' 260240  000200' 04510           PUSHJ P,OUTLOOK ;SEE IF OUTPUT DEV MTA\r
+        000142' 260240  000154' 04520           PUSHJ P,M4      ;NOT MTA\r
+        000143' 603300  001000  04530           TLNE    FLAG,JFLG       ;NON STARDARD MODE ?\r
+        000144' 660340  000100  04540           TRO     T4,100          ;TO PUNCH 029 ON CDP\r
+        000145' 552340  004633' 04550           HRRZM T4,OMOD   ;SET MODE OF OUTPUT DEV\r
+        000146' 201340  000001  04560           MOVEI T4,1\r
+        000147' 260240  000204' 04570           PUSHJ P,INLOOK  ;SEE IF INPUT DEV MTA\r
+        000150' 260240  000154' 04580           PUSHJ P,M4      ;NOT MTA\r
+        000151' 552340  004636' 04590           HRRZM T4,ININI1 ;SET MODE OF INPUT DEV\r
+        000152' 260240  002746' 04600           PUSHJ P,FNSET   ;NOW DEVICE, DEVA CORRECT FOR START\r
+        000153' 254000  000251' 04610           JRST OMOD1      ;INIT OUTPUT DEVICE\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 12\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+\r
+                                04640   ;SET MODE IF /I,/B,/H,\r
+\r
+        000154' 607300  000100  04660   M4:     TLNN FLAG,IFLG  ;IMAGE BINARY MODE?\r
+        000155' 254000  000160' 04670           JRST .+3        ;NO\r
+        000156' 660340  000010  04680           TRO T4,10       ;IM. MODE\r
+        000157' 620340  000001  04690           TRZ T4,1        ;CLEAR ASCII LINE MODE\r
+\r
+        000160' 606300  000002  04710           TRNN FLAG,BMOD  ;BINARY MODE?\r
+        000161' 254000  000164' 04720           JRST .+3        ;NO\r
+        000162' 660340  000014  04730           TRO T4,14       ;BIN. MODE\r
+        000163' 620340  000001  04740           TRZ T4,1        ;CLEAR ASCII LINE MODE\r
+\r
+        000164' 603300  000400  04760           TLNE FLAG,IBFLG ;ASCII TO START.  IB MODE?\r
+        000165' 660340  000013  04770           TRO T4,13       ;YES\r
+        000166' 602300  002000  04780           TRNE FLAG,XFLG  ;COPY MODE?\r
+        000167' 263240  000000  04790           POPJ P,         ;YES, DON'T ALTER DATA MODE\r
+\r
+        000170' 602300  000110  04810           TRNE FLAG,DFLG+RFLG     ;DELETE OR RENAME?\r
+        000171' 660340  000020  04820           TRO T4,20       ;DIRECTORY WILL BE WRITTEN, DON'T\r
+        000172' 263240  000000  04830           POPJ P,         ;COMPUTE WORD COUNT MODE NEEDED.\r
+                                04840                           ;FORCE MONITOR TO USE WORD COUNT\r
+                                04850                           ;IN FIRST DATA WORD OF BUFFER\r
+\r
+        000173' 620300  000100  04870   M5:     TRZ     FLAG,RFLG       ;CLEAR /R FLAG\r
+        000174' 660740  020000  04880           TRO     CALFLG,RXFLG    ;SET (RX) FLAG\r
+        000175' 200000  004670' 04890           MOVE    0,[XWD DTON,MATCH]\r
+        000176' 251000  004650' 04900           BLT     0,MATCH+1       ;SAVE NAME AND EXT\r
+        000177' 263240  000000  04910           POPJ    P,              ;RETURN\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 13\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                                04930   ;IF OUTPUT DEVICE IS MTA PERFORM ALL PRE-TRANSFER REQUESTS\r
+                                04940   ;SUCH AS REWIND.  IF OUTPUT DEVICE IS MTA, AND THERE IS NO \r
+                                04950   ;INPUT DEVICE, EXIT.  FOR OTHER MTA OUTPUT, PREPARE INIT\r
+                                04960   ;DENSITY AND PARITY.\r
+\r
+        000200'                 04980   OUTLOOK:\r
+        000200' 200140  004031' 04990           MOVE T3,ABOUT   ;AB FOR OUTPUT DEV\r
+        000201' 200040  004032' 05000           MOVE T1,AUXOUT  ;AUX FOR OUTPUT DEV\r
+        000202' 201500  003666' 05010           MOVEI T6,INOMTA ;SET TO INIT\r
+        000203' 254000  003531' 05020           JRST MT1        ;MTA FOR OUTPUT\r
+\r
+\r
+\r
+\r
+                                05070   ;SAME FOR INPUT DEVICE.\r
+\r
+        000204' 332140  004040' 05090   INLOOK: SKIPE   T3,FILNAM       ;IF NO FILENAME\r
+        000205' 606300  002000  05100           TRNN    FLAG,XFLG       ;OR NOT /X\r
+        000206' 254000  000217' 05110           JRST    INLUK1          ;CONTINUE\r
+        000207' 332000  004044' 05120           SKIPE   DTON            ;IF OUTPUT NAME SET UP\r
+        000210' 254000  000217' 05130           JRST    INLUK1          ;CONTINUE\r
+        000211' 554040  004041' 05140           HLRZ    T1,FILEX        ;GET EXT\r
+        000212' 302040  120000  05150           CAIE    T1,(SIXBIT /*/) ;IF EITHER IS *\r
+        000213' 316140  003730' 05160           CAMN    T3,STAR         ;DON'T SET OUTNAME\r
+        000214' 254000  000217' 05170           JRST    INLUK1          ;BUT JUST CONTINUE\r
+        000215' 202140  004044' 05180           MOVEM   T3,DTON         ;SET OUT NAME\r
+        000216' 516040  004045' 05190           HRLZM   T1,DTON+1       ;AND EXTENSION\r
+        000217' 200140  004136' 05200   INLUK1: MOVE T3,AB      ;ADV OR BKSPACE\r
+        000220' 200040  004133' 05210           MOVE T1,AUX     ;AUX FOR INPUT DEV\r
+        000221' 201500  003667' 05220           MOVEI T6,INIMTA ;SET TO INIT\r
+        000222' 254000  003531' 05230           JRST MT1        ;MTA FOR INPUT\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 14\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                                05250   ;ROUTINE TO INITIALIZE OUTPUT DEVICE\r
+\r
+        000223' 200040  004671' 05270   OMODE:  MOVE T1,[XWD OBF,IBF]\r
+        000224' 202040  004635' 05280           MOVEM T1,ODEV+1\r
+        000225' 200040  004015' 05290           MOVE T1,DTJBFF  ;JOBFF AFTER 2 TTY BUFS\r
+        000226' 202040  000000* 05300           MOVEM T1,JOBFF  ;SET UP\r
+\r
+        000227' 050100  004633' 05320           OPEN OUT,OMOD   ;INITIALIZE OUTPUT DEVICE\r
+        000230' 254000  001767' 05330           JRST ERR1       ;UNAVAILABLE ERROR\r
+        000231' 065100  000001  05340           OUTBUF OUT,1    ;TRY ONE OUTBUFFER FOR SIZE\r
+        000232' 250040  000226* 05350           EXCH T1,JOBFF   ;JOBFF_DTJBFF+BUFSZ\r
+                                05360                           ;NOTE JOBFF RESET TO DTJBFF\r
+        000233' 274040  004015' 05370           SUB T1,DTJBFF   ;T1=BUFSZ\r
+        000234' 550000  000000* 05380           HRRZ 0,JOBREL   ;HIGHEST CORE AVAILABLE\r
+        000235' 274000  004015' 05390           SUB 0,DTJBFF    ;0=TOTAL CORE AVAILABLE\r
+        000236' 240000  777777  05400           ASH 0,-1        ;COMPUTE HOW MANY OUTPUT BUFFERS\r
+        000237' 232000  000001  05410           IDIVM 0,T1      ;FIT IN HALF THE AVAILABLE SPACE\r
+        000240' 201340  000223' 05420           MOVEI T4,OMODE  ;SET RETURN FROM MORCOR\r
+        000241' 305040  000001  05430           CAIGE T1,1      ;1 OR MORE THAN 1 FIT?\r
+        000242' 254000  000262' 05440           JRST MORCOR     ;NO, NEED MORE CORE\r
+        000243' 065101  000000  05450           OUTBUF OUT,(T1) ;SET UP OUTPUT BUFFERS\r
+        000244' 200000  003746' 05460           MOVE 0,OBF+1\r
+        000245' 202000  003741' 05470           MOVEM 0,SVOBF   ;SAVE ORIGINAL MODE SETTING\r
+        000246' 200000  000232* 05480           MOVE 0,JOBFF\r
+        000247' 552000  004017' 05490           HRRZM 0,SVJBF1  ;PREPARE TO RECLAIM INBUFFER SPACE\r
+        000250' 263240  000000  05500           POPJ P,\r
+\r
+        000251' 260240  000223' 05520   OMOD1:  PUSHJ P,OMODE   ;GO INITIALIZE OUTPUT DEVICE\r
+        000252' 626300  004000  05530           TRZN FLAG,ZFLG  ;Z COMMAND TYPED?\r
+        000253' 254000  000275' 05540           JRST MAINA2     ;NO,\r
+        000254' 260240  002212' 05550           PUSHJ P,DTCLR   ;YES, GO CLEAR DIRECTORY\r
+        000255' 071100  000000  05560           RELEASE OUT,\r
+        000256' 071240  000000  05570           RELEASE DIR,\r
+        000257' 606740  000400  05580           TRNN    CALFLG,NSWTCH   ;SEE IF DEVICE WAS TYPED\r
+        000260' 254000  000251' 05590           JRST OMOD1      ;YES\r
+        000261' 254000  000013' 05600           JRST PIP2       ;GET NEXT COMMAND\r
+\r
+        000262' 550000  000234* 05620   MORCOR: HRRZ 0,JOBREL   ;TRY TO GET\r
+        000263' 271000  002000  05630           ADDI 0,2000     ;1K MORE OF CORE\r
+        000264' 047000  000011  05640           CORE            ;ASK MONITOR FOR 1K CORE\r
+        000265' 254000  000267' 05650           JRST OMODER             ;NOT AVAILABLE\r
+        000266' 254007  000000  05660           JRST (T4)       ;GOT IT\r
+\r
+        000267' 265040  002155' 05680   OMODER: ERRPNT</?Not enough core/>\r
+        000270' 376355  772100\r
+        000271' 627355  772716\r
+        000272' 641014  367744\r
+        000273' 624000  000000\r
+        000274' 047000  000012  05690           EXIT\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 15\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                                05710   ;MAIN LOOP TO PROCESS INPUT SIDE OF CS\r
+\r
+\r
+        000275' 602300  000110  05740   MAINA2: TRNE   FLAG,RFLG+DFLG   ;RENAME OR DELETE FILE MODE?\r
+        000276' 254000  002432' 05750           JRST   DTDELE           ;YES./D,/X,OR(DX)\r
+                                05760   IFN RIMSW,<\r
+                                05770           TLNE   FLAG,RIMFLG      ;RIM?\r
+                                05780           JRST   RIMTB            ;YES./Y\r
+                                05790           >\r
+        000277' 602300  002000  05800           TRNE   FLAG,XFLG        ;TRANSFER EVERYTHING MODE?\r
+        000300' 254000  002220' 05810           JRST   PRECOP           ;YES./X\r
+                                05820   ;LOOP TO COPY ALL FILES BEGINS HERE FROM MAIN2\r
+        000301' 606540  000020  05830   MAINA3: TRNN   AUXFLG,FFLG      ;LIST DSK DIR SHORT?\r
+        000302' 602300  000020  05840           TRNE   FLAG,LFLG        ;LIST DIRECTORY?\r
+        000303' 254000  003017' 05850           JRST   DTPDIR           ;YES./F OR /L\r
+        000304' 260240  000426' 05860           PUSHJ  P,ININIT         ;INITIALIZE INPUT FILE\r
+        000305' 602540  020000  05870           TRNE   AUXFLG,DTAIN     ;DEC TAPE INPUT?\r
+        000306' 260240  002701' 05880           PUSHJ  P,DTADIR         ;INIT DTA DIR\r
+\r
+                                05900   IFN FTDSK,<TRNE   AUXFLG,DSKIN  ;NO, DISK INPUT?\r
+                                05910           PUSHJ  P,DSKDIR         ;OR DSK>\r
+        000307' 260240  002566' 05920   MAINA4: PUSHJ  P,LOOK           ;GET A FILE TO COPY\r
+        000310' 254000  000323' 05930           JRST   MAINA5           ;NO MORE\r
+        000311' 076140  004052' 05940           LOOKUP IN,ZRF\r
+        000312' 254000  002003' 05950           JRST   ERR3             ;LOOKUP FAILURE\r
+                                05960   IFN WCH,<\r
+                                05970   MAINA6: TRNN  AUXFLG,DTAIN+DTAOUT\r
+                                05980           JRST  .+5\r
+                                05990           HLRZ  0,ZRF+1\r
+                                06000           CAIE  0,(SIXBIT /DMP/)\r
+                                06010           IFN DISK30,<CAIN 0,(SIXBIT/SVE/)>\r
+                                06020           IFE DISK30,<CAIN 0,(SIXBIT/SAV/)>\r
+                                06030           JRST  MAINA4            ;DONT COPY DMP OR SAV FILES ON DTA>\r
+        000313' 661300  000020  06040           TLO   FLAG,NEWFIL\r
+        000314' 260240  003353' 06050           PUSHJ P,FILTYP\r
+        000315' 602540  000040  06060           TRNE  AUXFLG,ONEOUT\r
+        000316' 254000  000333' 06070           JRST  PSCANA            ;OUT HAS BEEN INITIALIZED\r
+                                06080   IFE WCH,<\r
+        000317' 260240  002412' 06090           PUSHJ P,OKBLKS>\r
+        000320' 077100  004044' 06100           ENTER OUT,DTON          ;CREATE OUTPUT FILE\r
+        000321' 254000  002024' 06110           JRST  ERR4              ;DIR. FULL OR 0 FILE NAME\r
+        000322' 254000  000333' 06120           JRST  PSCANA\r
+\r
+        000323' 626540  000001  06140   MAINA5: TRZN  AUXFLG,REDFLG\r
+        000324' 254000  001107' 06150           JRST  IOERRN            ;NEVER READ A FILE\r
+        000325' 254000  000411' 06160           JRST  MAIN1\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 16\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+        000326' 602540  201500  06180   PSCANB: TRNE AUXFLG,MTAIN!CDRIN!TTYIN!PPTIN     ;ON NON-DIR DEVICE?\r
+        000327' 620740  000037  06190           TRZ     CALFLG,ALLCLF   ;END OF THE ONE OR MANY FILES SPECIFIED\r
+        000330' 666540  000040  06200           TRON AUXFLG,ONEOUT      ;HAS OUT JUST BEEN INIT?\r
+        000331' 067100  000000  06210           OUTPUT OUT,     ;YES, AND FIRST FILE IS EOF ONLY, INIT OUT IN\r
+                                06220                           ;CASE NO MORE SOURCE FILES\r
+        000332' 254000  000407' 06230           JRST PSCAN5     ;EMPTY FILE, CLOSE INPUT, RETURN FOR MORE\r
+\r
+        000333' 660540  000001  06250   PSCANA: TRO   AUXFLG,REDFLG     ;SET FLAG FOR INPUT FILE READ\r
+        000334' 260240  001616' 06260           PUSHJ P,INP             ;GO READ INPUT FILE\r
+        000335' 620540  002000  06270           TRZ   AUXFLG,READ1\r
+        000336' 260240  002376' 06280           PUSHJ P,TTYZ            ;CHECK IF INPUT IS TTY\r
+        000337' 602400  020000  06290           TRNE IOS,EOFBIT         ;EOF FIRST DATA?\r
+        000340' 254000  000326' 06300           JRST PSCANB\r
+        000341' 336000  003744' 06310           SKIPN IBF+2\r
+        000342' 254000  000333' 06320           JRST PSCANA\r
+\r
+        000343' 660540  000040  06340   PSCAN:  TRO AUXFLG,ONEOUT       ;INDICATE ONE OUTPUT FILE INITED\r
+        000344' 200000  003723' 06350           MOVE 0,OPTRA    ;PRESCAN A LINE, INITIALIZE LINE BUFFER PTR\r
+        000345' 202000  004020' 06360           MOVEM 0,OPTR\r
+        000346' 402000  004035' 06370           SETZM CDRCNT\r
+        000347' 260240  000553' 06380           PUSHJ P,CLRBUF  ;CLEAR LINE BUFFER\r
+        000350' 664300  000400  06390           TROA FLAG,STS   ;START A FRESH LINE\r
+        000351' 260240  000756' 06400   PSCAN3: PUSHJ P,PUT     ;HERE FOR BINARY DATA\r
+\r
+        000352' 260240  001462' 06420   PSCAN2: PUSHJ P,GET     ;GET CHARACTER\r
+        000353' 254000  000376' 06430           JRST PSCAN1     ;END OF FILE RETURN\r
+        000354' 616300  004672' 06440           TDNN FLAG,[XWD IFLG+IBFLG,BMOD] ;BIN. OR NO CHAR. PROCESSING\r
+        000355' 603540  000004  06450           TLNE AUXFLG,SBIN\r
+        000356' 254000  000351' 06460           JRST PSCAN3     ;YES\r
+        000357' 200040  004020' 06470           MOVE T1,OPTR\r
+        000360' 306200  000177  06480           CAIN CHR,DEL    ;VJC 4/16/69\r
+        000361' 254000  000352' 06490           JRST PSCAN2     ; STR# 10-2615\r
+        000362' 316040  003722' 06500           CAMN T1,OPTMAX  ;CHECK LENGTH OF LINE\r
+        000363' 254000  001751' 06510           JRST ERR10      ;LINE TOO LONG\r
+        000364' 136200  004020' 06520           IDPB CHR,OPTR   ;DEPOSIT CHAR. IN LINE BUFFER\r
+        000365' 307200  000024  06530           CAIG CHR,24\r
+        000366' 305200  000020  06540           CAIGE   CHR,20  ;LINE PRINTERR CONTROL CHAR\r
+        000367' 254000  000371' 06550           SKIP    1       ;NO\r
+        000370' 254000  000374' 06560           JRST PSCAN4     ;YES, TREAT AS END OF LINE\r
+        000371' 307200  000014  06570           CAIG CHR,14\r
+        000372' 305200  000012  06580           CAIGE CHR,12    ;END OF LINE CHARACTER?\r
+        000373' 254000  000352' 06590           JRST PSCAN2     ;NO, SO CONTINUE\r
+        000374' 260240  000707' 06600   PSCAN4: PUSHJ P,OUTLBF  ;YES, SO DUMP THE LINE BUFFER\r
+        000375' 254000  000343' 06610           JRST PSCAN      ;SCAN THE NEXT LINE\r
+\r
+        000376' 135200  004020' 06630   PSCAN1: LDB     CHR,OPTR        ;PICK UP LAST CHAR.\r
+        000377' 306200  000032  06640           CAIN    CHR,CZ          ;IS IT ^Z\r
+        000400' 606540  001000  06650           TRNN    AUXFLG,TTYIN    ;FROM TTY?\r
+        000401' 254000  000404' 06660           JRST    PSCAN6          ;NO\r
+        000402' 400200  000000  06670           SETZ    CHR,            ;YES,CLEAR CHAR.\r
+        000403' 137200  004020' 06680           DPB     CHR,OPTR        ;AND REMOVE FROM BUFFER\r
+        000404' 260240  000707' 06690   PSCAN6: PUSHJ P,OUTLBF  ;DUMP THE REMAINING BUFFER\r
+        000405' 602300  002000  06700           TRNE FLAG,XFLG  ;COPY MODE?\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 16-1\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+        000406' 254000  002311' 06710           JRST COPY2A     ;YES, GO COPY THE NEXT FILE\r
+        000407' 070140  000000  06720   PSCAN5: CLOSE IN,\r
+        000410' 254000  000307' 06730           JRST MAINA4\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 17\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                                06750   ;COME HERE AFTER /L,/D,/R ON DISK OR THROUGH COPYING\r
+\r
+        000411' 071240  000000  06770   MAIN1:  RELEAS DIR,     ;RELEASE THE DIRECTORY DEVICE\r
+        000412' 071140  000001  06780           RELEAS IN,INHIB ;RELEASE THE INPUT DEVICE\r
+        000413' 331340  004134' 06790           SKIPL T4,ESWTCH ;MORE COMMAND STRING TO PROCESS?\r
+        000414' 254000  000421' 06800           JRST MAIN2      ;YES\r
+\r
+                                06820   ;COME HERE AFTER /D,/R ON DTA. ALSO FROM ABOVE\r
+\r
+        000415' 070100  000000  06840   MAINB:  CLOSE OUT,      ;CLOSE THE OUTPUT FILE\r
+        000416' 260240  000764' 06850           PUSHJ P,OUTP1   ;CHECK THE FINAL ERROR BITS\r
+                                06860   IFN FTDSK,<TLNE AUXFLG,NSPROT   ;NON-ST. PROT?\r
+                                06870           TRNN AUXFLG,DSKOUT+DTAOUT       ;DISK OUT/ OR DTA\r
+                                06880           JRST MAINB1     ;NO\r
+                                06890           LDB 0,PRPTL\r
+                                06900           DPB 0,PRPTD\r
+                                06910           RENAME OUT,DTON ;SET UP RENAME REQUEST\r
+                                06920           JRST DERR6      ;DISK ERROR\r
+                                06930   MAINB1:>\r
+        000417' 071100  000000  06940           RELEAS OUT,     ;RELEASE THE OUTPUT DEVICE\r
+        000420' 254000  000013' 06950           JRST PIP2       ;PROCESS THE NEXT COMMAND\r
+\r
+        000421' 260240  000451' 06970   MAIN2:  PUSHJ P,DESCRP  ;GET THE NEXT INPUT FILE TO PROCESS\r
+        000422' 260240  000204' 06980           PUSHJ P,INLOOK\r
+        000423' 260240  000154' 06990           PUSHJ P,M4\r
+        000424' 552340  004636' 07000           HRRZM T4,ININI1\r
+        000425' 254000  000301' 07010           JRST MAINA3\r
+                                07020   ;END OF LOOP BEGINNING AT MAINA3\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 18\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                                07040   ;SUBROUTINE TO INITIALIZE THE INPUT FILE\r
+\r
+        000426' 200040  004017' 07060   ININIT: MOVE T1,SVJBF1  ;SVJBF1=END OF OUTPUT BUFFERS\r
+\r
+        000427' 202040  000246* 07070           MOVEM T1,JOBFF  ;COMPARE OMODE CODE\r
+        000430' 201000  003742' 07080           MOVEI 0,IBF\r
+        000431' 202000  004640' 07090           MOVEM 0,DEVICE+1\r
+        000432' 050140  004636' 07100           OPEN IN,ININI1\r
+        000433' 254000  001770' 07110           JRST ERR1A      ;NOT AVAILABLE ERROR\r
+        000434' 064140  000001  07120           INBUF IN,1      ;TRY ONE INPUT BUFFER FOR SIZE\r
+        000435' 250040  000427* 07130           EXCH T1,JOBFF   ;HOW MANY INBUFFERS WILL FIT?\r
+        000436' 274040  004017' 07140           SUB T1,SVJBF1\r
+        000437' 550000  000262* 07150           HRRZ 0,JOBREL\r
+        000440' 274000  000435* 07160           SUB 0,JOBFF     ;JOBREL-SVJBF1=TOTAL SPACE LEFT\r
+        000441' 232000  000001  07170           IDIVM 0,T1\r
+        000442' 201340  000426' 07180           MOVEI T4,ININIT ;RETURN FROM MORCOR IS ININIT\r
+        000443' 305040  000001  07190           CAIGE T1,1      ;1 OR MORE THAN 1 FITS?\r
+        000444' 254000  000262' 07200           JRST MORCOR     ;NO, GET MORE CORE\r
+        000445' 064141  000000  07210           INBUF IN,(T1)   ;SET UP AS MANY BUFFS AS FIT\r
+        000446' 200000  003743' 07220           MOVE 0,IBF+1    ;SAVE ORIGINAL MODE\r
+        000447' 202000  003740' 07230           MOVEM 0,SVIBF\r
+        000450' 263240  000000  07240           POPJ P,\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 19\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                                07260   ;THIS ROUTINE GETS AN INPUT UNIT DESCRIPTOR AND, FOR\r
+                                07270   ;ADVANCE FILE AND BSPF ON MTA, ENSURES THE VALUE 1 IF NO\r
+                                07280   ;NUMBER WAS GIVEN.\r
+\r
+        000451' 402000  004133' 07300   DESCRP: SETZM AUX       ;WILL GET ANY MTA REQ. GOING TO AUXFLG.\r
+        000452' 622540  000002  07310           TRZE    AUXFLG,SYSFLG   ;IS THIS DEVICE SYS.?\r
+        000453' 660540  000004  07320           TRO     AUXFLG,SYSLST   ;YES,SET SYS AS LAST DEVICE\r
+        000454' 402000  004136' 07330           SETZM AB        ;MTA VALUE SWITCHES\r
+        000455' 402000  004042' 07340           SETZM PR        ;PROTECTION\r
+        000456' 402000  004043' 07350           SETZM PP        ;PROJ-PROG NUMBER\r
+                                07360   ;********************************************************************\r
+        000457' 260240  000557' 07370           PUSHJ P,NAME    ;GO SCAN INPUT SIDE OF COMMAND STRING\r
+        000460' 200040  004042' 07380           MOVE T1,PR      ;PROTECTION\r
+        000461' 512040  004042' 07390           HLLZM T1,PR     ;IGNORE PR FLAG IN RHS FOR INPUT\r
+        000462' 620540  261500  07400           TRZ AUXFLG,DTAIN+DSKIN+PPTIN+MTAIN+CDRIN+TTYIN\r
+        000463' 260240  002132' 07410           PUSHJ P,CHECK1  ;CHECK UNIT, AND FOR _\r
+\r
+                                07430   IFN FTDSK,<TRNN AUXFLG,DSKIN    ;DSK INPUT?\r
+                                07440           JRST DESCR1     ;NO\r
+                                07450           TRNE    AUXFLG,SYSFLG   ;IS THIS DEVICE SYS?\r
+                                07460           JRST DESCR1     ;YES\r
+                                07470           TRNN    AUXFLG,SYSLST   ;WAS LAST DEVICE?\r
+                                07480           JRST DESCR1     ;NO\r
+                                07490           MOVE T2,FNPPNS  ;YES, SAVE LAST [P,P]\r
+                                07500           SKIPE PP        ;[P,P] ZERO?\r
+                                07510           JRST DESCR1\r
+                                07520           MOVEM T2,PP     ;YES, MAKE OLD [P,P] CURRENT [P,P]\r
+                                07530           MOVEM T2,FNPPN  ;RESERVE [P,P]>\r
+        000464' 332000  004135' 07540   DESCR1: SKIPE XNAME     ;NO OVERSHOOT ALLOWED\r
+        000465' 254000  002040' 07550           JRST ERR6A\r
+\r
+        000466' 554100  004136' 07570   ABCHK:  HLRZ T2,AB      ;NO RECS/FILES TO BACKSPACE\r
+        000467' 326100  000471' 07580           JUMPN T2,.+2    ;IF 0\r
+        000470' 201100  000001  07590           MOVEI T2,1      ;GUARANTEE ONE\r
+        000471' 506100  004136' 07600           HRLM T2,AB      ;SET AB LH\r
+\r
+        000472' 550100  004136' 07620           HRRZ T2,AB      ;NO RECS/FILES TO ADV\r
+        000473' 326100  002746' 07630           JUMPN T2,FNSET  ;IF 0\r
+        000474' 350000  004136' 07640           AOS AB          ;GUARANTEE 1\r
+        000475' 254000  002746' 07650           JRST    FNSET   ;FIND OUT DETAILS OF FILENAME\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 20\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+\r
+                                07680   ;IF A NON-STANDARD OUTPUT PROTECTION IS REQUESTED, SAVE FOR RENAME.\r
+\r
+        000476' 200040  004042' 07700   PROTK:  MOVE T1,PR\r
+        000477' 606040  000001  07710           TRNN T1,1\r
+        000500' 254000  000504' 07720           JRST PROTK1\r
+        000501' 512040  004033' 07730           HLLZM T1,PROTS\r
+        000502' 512040  004042' 07740           HLLZM T1,PR\r
+        000503' 665540  000002  07750           TLOA AUXFLG,NSPROT\r
+        000504' 403040  004042' 07760   PROTK1: SETZB   T1,PR\r
+        000505' 263240  000000  07770           POPJ P,\r
+\r
+                                07790   ;TEST "DEVICE" TO SEE IF DESTINATION DEVICE IS DTA, DSK, PTP, LPT, TTY, MTA\r
+                                07800   ;IF ANY IS TRUE, SET RELEVANT BIT IN AUXFLG.  "0" CONTAINS\r
+                                07810   ;"DEVICE" ON ENTRY.\r
+\r
+        000506' 047000  000004  07830   DEVTST: DEVCHR          ;GET DEVICE CHARACTERISTICS\r
+                                07840   IFN FTDSK,<TLNN 0,DSKBIT        ;IS OUTPUT DEV DSK?\r
+                                07850           JRST DEVTSU     ;NO\r
+                                07860           TRO AUXFLG,DSKOUT       ;YES, SET BIT\r
+                                07870           PUSH    P,DEVICE        ;SAVE DEVICE NAME\r
+                                07880           POP     P,ADSK          ;PUT NAME IN DSK INIT\r
+                                07890           POPJ P,\r
+                                07900   DEVTSU:>\r
+        000507' 322000  000525' 07910           JUMPE   0,DEVER2        ;NON-EXISTENT DEVICE\r
+        000510' 607000  000001  07920           TLNN 0,OUTBIT   ;CAN DEV DO OUTPUT?\r
+        000511' 254000  002040' 07930           JRST ERR6A      ;NO\r
+\r
+        000512' 603000  000004  07950           TLNE 0,DTABIT   ;DECTAPE?\r
+        000513' 660540  004000  07960           TRO AUXFLG,DTAOUT       ;YES\r
+\r
+        000514' 603000  000400  07980           TLNE 0,PTPBIT   ;PAPER TAPE PUNCH?\r
+        000515' 660540  400000  07990           TRO AUXFLG,PPTOUT\r
+\r
+        000516' 603000  040000  08010           TLNE 0,LPTBIT   ;LINE PRINTER?\r
+        000517' 660540  000010  08020           TRO AUXFLG,LPTOUT\r
+\r
+        000520' 603000  000010  08040           TLNE 0,TTYBIT   ;TELETYPE?\r
+        000521' 660540  100000  08050           TRO AUXFLG,TTYOUT\r
+\r
+        000522' 603000  000020  08070           TLNE 0,MTABIT   ;MAGTAPE?\r
+        000523' 660540  000200  08080           TRO AUXFLG,MTAOUT\r
+\r
+        000524' 263240  000000  08100           POPJ P,\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 21\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+\r
+                                08130   ;ROUTINE TO CHECK IF DEVICE SYS AND SET [P,P], IF NONE GIVEN\r
+\r
+                                08150   IFN FTDSK,<\r
+                                08160   PSYSP:  CAME    0,[SIXBIT /SYS/];IS DEVICE SYS?\r
+                                08170           POPJ    P,              ;NO\r
+                                08180           MOVE    T1,SYSPP        ;GET SYS PP\r
+                                08190           MOVEM   T1,PP           ;AND SET IT\r
+                                08200           TRO     AUXFLG,SYSFLG   ;SET FLAG TO INDICATE\r
+                                08210           POPJ    P,              ;CURRENT INPUT DEVICE IS SYS>\r
+\r
+        000525'                 08230   DEVER1: \r
+        000525' 200040  004637' 08240   DEVER2: MOVE    T1,DEVICE\r
+        000526' 202040  004641' 08250   DEVER:  MOVEM   T1,DEVERR\r
+        000527' 265040  002155' 08260           ERRPNT  </?Device />\r
+        000530' 376114  573322\r
+        000531' 617124  000000\r
+        000532' 260240  002201' 08270           PUSHJ   P,P6BIT\r
+        000533' 000000  004641' 08280                   DEVERR\r
+        000534' 265040  002166' 08290           ERRPN2  </does not exist!/>\r
+        000535' 623374  571500\r
+        000536' 673376  420312\r
+        000537' 743236  372102\r
+        000540' 000000  000000\r
+                                08300   ;ROUTINE TO INIT PDL POINTER AND TTY\r
+\r
+        000541' 201240  004153' 08320   INICN1: MOVEI   P,PDL-1         ;INITIALIZE PUSHDOWN POINTER\r
+        000542' 200000  004016' 08330   INICN2: MOVE    0,SVJBFF        ;IS INITIALIZED AT PIP1\r
+        000543' 202000  000440* 08340           MOVEM   0,JOBFF         ;SET JOBFF TO BEGINNING OF BUFFER AREA\r
+        000544' 260240  001410' 08350           PUSHJ   P,INICON        ;INITIALIZE THE TTY\r
+        000545' 064040  000001  08360           INBUF   CON,1           ;ONE INBUFFER\r
+        000546' 065040  000001  08370           OUTBUF  CON,1           ;ONE OUTBUFFER\r
+        000547' 200000  000543* 08380           MOVE    0,JOBFF\r
+        000550' 552000  004015' 08390           HRRZM   0,DTJBFF        ;JOBFF AFTER 2 TTY BUFFERS SET\r
+        000551' 067040  000000  08400           OUTPUT   CON,           ;INITIALIZE BUFFER POINTERS\r
+        000552' 254011  000000  08410           JRST    (T5)\r
+\r
+                                08430   ;ROUTINE TO CLEAR LINE BUFFER\r
+\r
+        000553' 402000  004174' 08450   CLRBUF: SETZM   LBUF            ;SUBR. TO CLEAR LINE BUFFER\r
+        000554' 200000  004673' 08460           MOVE    0,[XWD LBUF,LBUF+1]\r
+        000555' 251000  004377' 08470           BLT     0,LBUFE\r
+        000556' 263240  000000  08480           POPJ    P,\r
+\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 22\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                                08510   ;COMMAND SCANNER ROUTINE\r
+\r
+        000557' 606740  001000  08530   NAME:   TRNN    CALFLG,SSWTCH   ;RETURN NULL IF _ OR END-OF-LINE SEEN\r
+        000560' 335000  004134' 08540           SKIPGE  ESWTCH\r
+        000561' 254000  000666' 08550           JRST    NM13            ;\r
+        000562' 620740  000400  08560           TRZ     CALFLG,NSWTCH\r
+        000563' 332040  004135' 08570           SKIPE   T1,XNAME        ;IF COMMAND SCAN OVERSHOOT PICKED UP\r
+                                08580                                   ;DEVICE NAME, USE IT NOW\r
+        000564' 254000  000640' 08590           JRST    NM7\r
+        000565' 620740  000100  08600           TRZ     CALFLG,DEV\r
+                                08610   ;LOOK FOR FILE NAME, EXT\r
+        000566' 402000  004041' 08620   NM1:    SETZM   FILEX\r
+        000567' 402000  004040' 08630   NM2:    SETZM   FILNAM\r
+        000570' 200040  000672' 08640           MOVE    T1,NM15\r
+                                08650   ;LOOP TO PICK OFF FILENAME, EXT\r
+        000571' 260240  001175' 08660   NM3:    PUSHJ   P,GETCOM        ;GO GET 7 BIT ASCII CHAR. FROM COMMAND STRING\r
+        000572' 302000  000052  08670           CAIE    0,"*"           ;TO ALLOW FN.EX = *.*\r
+        000573' 301000  000101  08680           CAIL    0,"A"           ;ALPHABETIC CHARACTER?\r
+        000574' 303000  000132  08690           CAILE   0,"Z"\r
+        000575' 254000  000602' 08700           JRST    NM4A            ;NO\r
+        000576' 275000  000040  08710   NM4:    SUBI    0,40            ;CONVERT TO SIXBIT\r
+        000577' 603040  770000  08720           TLNE    T1,770000       ;6 CHARS. YET?\r
+        000600' 136000  000001  08730           IDPB    0,T1            ;NO\r
+        000601' 254000  000571' 08740           JRST    NM3             ;GET NEXT CHAR.\r
+        000602' 301000  000060  08750   NM4A:   CAIL    0,"0"           ;NUMERIC?\r
+        000603' 303000  000071  08760           CAILE   0,"9"\r
+        000604' 254000  000606' 08770           JRST    NM5             ;NO\r
+        000605' 254000  000576' 08780           JRST    NM4\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 23\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                                08800   ;CHARACTER NOT *,0-9,A-Z\r
+        000606' 307000  000015  08810   NM5:    CAIG    0,CR            ;CARRIAGE RETURN\r
+        000607' 305000  000012  08820           CAIGE   0,LF            ;LINE FEED\r
+        000610' 306000  000033  08830           CAIN    0,ALTMOD        ;ALTMODE\r
+        000611' 254000  000613' 08840           JRST    NM5A            ;YES\r
+        000612' 306000  000032  08850           CAIN    0,CZ            ;END-OF-FILE(CCL)?\r
+        000613' 374000  004134' 08860   NM5A:   SOSA    ESWTCH          ;YES, OR EOF\r
+        000614' 306000  000054  08870           CAIN    0,COMMA         ;COMMA\r
+        000615' 254000  000633' 08880           JRST    NM6             ;YES\r
+        000616' 306000  000056  08890           CAIN    0,PERIOD        ;PERIOD\r
+        000617' 254000  000654' 08900           JRST    NM10            ;YES\r
+        000620' 306000  000072  08910           CAIN    0,COLON         ;COLON\r
+        000621' 254000  000646' 08920           JRST    NM9             ;YES\r
+        000622' 306000  000073  08930           CAIN    0,";"           ;IS THE REST A COMMENT?\r
+        000623' 254000  000700' 08940           JRST    NM16            ;YES\r
+        000624' 306000  000003  08950           CAIN    0,"C"-100       ;^C\r
+        000625' 047000  000012  08960           EXIT                    ;IN CASE JACCT ON ???\r
+        000626' 302000  000137  08970           CAIE    0,LA            ;LEFT ARROW\r
+        000627' 254000  000673' 08980           JRST    NM5B            ;NO\r
+        000630' 660740  001000  08990           TRO     CALFLG,SSWTCH   ;SET LEFT ARROW SWITCH\r
+        000631' 602740  000100  09000           TRNE    CALFLG,DEV      ;HAS A DEVICE BEEN SEEN?\r
+        000632' 660740  000200  09010           TRO     CALFLG,DVSWTH   ;YES-NEEDED FOR /Z/,/D\r
+\r
+        000633' 336040  004041' 09030   NM6:    SKIPN   T1,FILEX        ;COMMA ROUTINE - FIGURE OUT WHAT WE HAVE\r
+        000634' 254000  000661' 09040           JRST    NM11            ;NO FILE NAME TEMPORARILY IN FILEX\r
+        000635' 250040  004040' 09050           EXCH    T1,FILNAM       ;PUT THE FILE NAME WHERE IT BELONGS\r
+        000636' 512040  004041' 09060           HLLZM   T1,FILEX        ;PUT THE EXTENSION WHERE IT BELONGS\r
+        000637' 263240  000000  09070           POPJ    P,\r
+\r
+        000640' 402000  004135' 09090   NM7:    SETZM   XNAME           ;USE XNAME ONLY ONCE\r
+        000641' 306040  000001  09100           CAIN    T1,1            ;1 FLAGS A NULL OVERSHOOT\r
+        000642' 254000  000666' 09110           JRST    NM13            ;RETURN NULL NAME\r
+        000643' 202040  004637' 09120   NM8:    MOVEM   T1,DEVICE       ;NEW DEVICE\r
+        000644' 660740  000100  09130           TRO     CALFLG,DEV\r
+        000645' 254000  000566' 09140           JRST    NM1             ;LOOK FOR A FILE NAME AND EXTENSION\r
+\r
+        000646' 606740  000100  09160   NM9:    TRNN    CALFLG,DEV      ;COLON ROUTINE - IS DEVICE NAME IN YET?\r
+        000647' 254000  000664' 09170           JRST    NM12            ;NO\r
+        000650' 336040  004040' 09180           SKIPN   T1,FILNAM       ;SCAN OVERSHOOT - NULL OVERSHOOT?\r
+        000651' 201040  000001  09190           MOVEI   T1,1            ;YES - FLAG NULL OVERSHOOT WITH A 1\r
+        000652' 202040  004135' 09200           MOVEM   T1,XNAME        ;XNAME = OVERSHOOT NAME\r
+        000653' 254000  000670' 09210           JRST    NM14\r
+        000654' 332000  004041' 09220   NM10:   SKIPE   FILEX\r
+        000655' 254000  002040' 09230           JRST    ERR6\r
+        000656' 200000  004040' 09240           MOVE    0,FILNAM        ;PERIOD ROUTINE - SAVE FILE NAME\r
+        000657' 202000  004041' 09250           MOVEM   0,FILEX         ;TEMPORARILY IN FILEX\r
+        000660' 254000  000567' 09260           JRST    NM2             ;LOOK FOR EXTENSION\r
+        000661' 336000  004040' 09270   NM11:   SKIPN   FILNAM          ;WAS A FILE NAME SPECIFIED?\r
+        000662' 602740  000100  09280           TRNE    CALFLG,DEV      ;WAS ANYTHING SPECIFIED?\r
+        000663' 263240  000000  09290           POPJ    P,              ;YES\r
+        000664' 332040  004040' 09300   NM12:   SKIPE   T1,FILNAM       ;NULL NAME SPECIFIED?\r
+        000665' 254000  000643' 09310           JRST    NM8             ;NO - SO REMEMBER AND LOOK FOR FILE NAME\r
+\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 23-1\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+        000666' 660740  000400  09330   NM13:   TRO     CALFLG,NSWTCH   ;RETURN A NULL NAME\r
+        000667' 402000  004041' 09340           SETZM   FILEX\r
+        000670' 402000  004040' 09350   NM14:   SETZM   FILNAM\r
+        000671' 263240  000000  09360           POPJ    P,\r
+\r
+        000672' 440600  004040' 09380   NM15:   POINT   6,FILNAM\r
+        000673' 307000  000137  09390   NM5B:   CAIG    0,LA            ;ALLOW ANY SIXBIT CHAR NOT CS DELIMITER\r
+        000674' 307000  000040  09400           CAIG    0,SPACE         ;SPACES IGNORED\r
+        000675' 254000  000571' 09410           JRST    NM3             ;IGNORE NOT LEGAL SIXBIT\r
+        000676' 254000  000576' 09420           JRST    NM4             ;ACCEPT\r
+\r
+        000677' 260240  001404' 09440           PUSHJ   P,GETBUF        ;GET NEXT ASCII CHAR.\r
+        000700' 303000  000012  09450   NM16:   CAILE   0,LF\r
+        000701' 307000  000015  09460           CAIG    0,CR            ;IF LF,FF,VT,OR CR\r
+        000702' 254000  000613' 09470           JRST    NM5A            ;RETURN\r
+        000703' 302000  000033  09480           CAIE    0,ALTMOD        ;SAME IF ALTMOD\r
+        000704' 306000  000032  09490           CAIN    0,CZ            ;OR ^Z\r
+        000705' 254000  000613' 09500           JRST    NM5A\r
+        000706' 254000  000677' 09510           JRST    NM16-1          ;GET NEXT CHARACTER\r
+\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 24\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                                09540   ;ROUTINE TO OUTPUT ONE LINE FROM LBUF\r
+\r
+        000707' 602300  000001  09560   OUTLBF: TRNE FLAG,LINE\r
+        000710' 254000  000717' 09570           JRST OUTLBA     ;OUTPUT LINE-BY-LINE\r
+        000711' 200100  003723' 09580   OUTCH1: MOVE T2,OPTRA   ;OUTPUT CHARACTER-BY-CHARACTER\r
+        000712' 316100  004020' 09590   OUTLB1: CAMN T2,OPTR    ;ARE ALL CHARACTERS OUT?\r
+        000713' 263240  000000  09600           POPJ P,         ;YES\r
+        000714' 134200  000002  09610           ILDB CHR,T2     ;NO\r
+        000715' 260240  000756' 09620           PUSHJ P,PUT     ;GO OUTPUT CHARACTER\r
+        000716' 254000  000712' 09630           JRST OUTLB1\r
+        000717' 603300  000040  09640   OUTLBA: TLNE FLAG,CHKFLG;PAREN COUNTING?\r
+        000720' 254000  003305' 09650           JRST OUTCHK     ;YES, SO DO IT\r
+        000721' 602540  100010  09660           TRNE AUXFLG,TTYOUT+LPTOUT\r
+        000722' 254000  000711' 09670           JRST OUTCH1     ;IF OUTPUT TO TTY OR LPT DO CHR BY CHR  \r
+        000723' 201040  000004  09680           MOVEI T1,4      ;CLEAR UNUSED PORTION OF LAST WORD USED IN LBUF\r
+        000724' 201100  000000  09690           MOVEI T2,0\r
+        000725' 200140  004020' 09700           MOVE T3,OPTR\r
+        000726' 136100  000003  09710           IDPB T2,T3\r
+        000727' 367040  000726' 09720           SOJG T1,.-1\r
+        000730' 201100  000005  09730           MOVEI T2,5\r
+        000731' 550040  004020' 09740           HRRZ T1,OPTR    ;COMPUTE NUMBER OF WORDS FILLED\r
+        000732' 275040  004173' 09750           SUBI T1,LBUF-1\r
+        000733' 322040  000754' 09760           JUMPE T1,OUTLB3 ;DO NOTHING IF BUFFER EMPTY\r
+        000734' 222040  000002  09770           IMULM T1,T2     ;COMPUTE CHARACTER COUNT=5 TIMES WORD CT\r
+                                09780   ;THIS IS WHERE OLD FORTRAN MODE WAS TESTED.\r
+        000735' 317100  003747' 09790           CAMG T2,OBF+2   ;WILL LINE FIT IN THE OUTBUFFER?\r
+        000736' 254000  000745' 09800           JRST OUTLB2     ;YES\r
+        000737' 260240  000762' 09810           PUSHJ P,OUTP    ;NO, SO DUMP BUFFER AND CHECK ERROR BITS\r
+        000740' 201500  000001  09820           MOVEI T6 ,1\r
+        000741' 612500  004174' 09830           TDNE T6,LBUF    ;SEQUENCED?   \r
+        000742' 606540  004000  09840           TRNN AUXFLG,DTAOUT      ;YES, ON DTA?\r
+        000743' 254000  000745' 09850           SKIP    1       ;NO\r
+        000744' 271100  000240  09860           ADDI T2,40*5    ;LEAVE EDITING ROOM\r
+        000745' 213000  000002  09870   OUTLB2: MOVNS T2\r
+        000746' 272100  003747' 09880           ADDM T2,OBF+2   ;UPDATE OUTBUFFER CHARACTER COUNT\r
+        000747' 505100  004174' 09890           HRLI T2,LBUF\r
+        000750' 540100  003746' 09900           HRR T2,OBF+1\r
+        000751' 340100  000000  09910           AOJ T2,\r
+        000752' 273040  003746' 09920           ADDB T1,OBF+1   ;UPDATE OUTBUFFER BYTE POINTER\r
+        000753' 251101  000000  09930           BLT T2,(T1)     ;MOVE DATA TO OUTBUFFER\r
+        000754' 263240  000000  09940   OUTLB3: POPJ P,\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 25\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                                09960   ;ROUTINE TO PUT ONE CHAR INTO OUT BUFFER\r
+\r
+        000755' 201200  000011  09980   TABOUT: MOVEI   CHR,TAB ;OUTPUT A TAB\r
+        000756' 377000  003747' 09990   PUT:    SOSG OBF+2      ;SUBR. TO OUTPUT ONE CHARACTER IN AC CHR\r
+        000757' 260240  000762' 10000           PUSHJ P,OUTP    ;IF BUFFER FULL, DUMP AND CHECK ERR BITS\r
+        000760' 136200  003746' 10010           IDPB CHR,OBF+1  ;PUT CHARACTER IN BUFFER\r
+        000761' 263240  000000  10020           POPJ P,\r
+\r
+                                10040   ;ROUTINE TO DUMP OUT BUFFER WHEN FULL\r
+\r
+        000762' 057100  000000  10060   OUTP:   OUT OUT,        ;SUBR. TO DUMP OUTBUFFER AND CHECK ERR BITS\r
+        000763' 254000  001710' 10070           JRST    CPOPJZ  ;NO ERRERS,BUT CLEAR IOS JUST IN CASE\r
+        000764' 062100  000010  10080   OUTP1:  GETSTS OUT,IOS  ;HERE FOR BIT CHECKING ONLY\r
+        000765' 260240  000770' 10090           PUSHJ P,OUTP4\r
+        000766' 060110  000000  10100           SETSTS OUT,(IOS);ERRORS WERE DETECTED\r
+        000767' 263240  000000  10110           POPJ P,         ;NO ERRORS\r
+\r
+        000770' 606540  000200  10130   OUTP4:  TRNN AUXFLG,MTAOUT\r
+        000771' 254000  000774' 10140           JRST .+3\r
+        000772' 602400  002000  10150   OUTP3:  TRNE IOS,EOTBIT ;EOT?\r
+        000773' 254000  000776' 10160           JRST .+3        ;YES\r
+        000774' 606400  740000  10170           TRNN IOS,740000 ;ANY ERROR BITS ON?\r
+        000775' 254000  001707' 10180           JRST CPOPJ1     ;NO\r
+        000776' 260240  001135' 10190           PUSHJ P,COMERR  ;YES\r
+\r
+        000777' 265440  000542' 10210           JSP T5,INICN2   ;INIT TTY\r
+        001000' 260240  001652' 10220           PUSHJ P,QUEST\r
+        001001' 265040  002166' 10230           ERRPN2  </Output device />\r
+        001002' 477536  470352\r
+        001003' 721014  462754\r
+        001004' 647074  520000\r
+        001005' 260240  002201' 10240           PUSHJ   P,P6BIT\r
+        001006' 000000  004634' 10250                   ODEV\r
+        001007' 336000  004044' 10260           SKIPN   DTON            ;ONLY IF THERE IS A FILE NAME\r
+        001010' 254000  001014' 10270           JRST    .+4             ;DON'T PRINT IF NOT\r
+        001011' 265040  002166' 10280           ERRPN2  </: file />\r
+        001012' 351014  664730\r
+        001013' 625000  000000\r
+        001014' 201140  004044' 10290           MOVEI T3,DTON   ;OUTPUT FILE NAME LOC\r
+        001015' 260240  001146' 10300           PUSHJ P,FN.EX   ;PRINT FILE NAME EXT\r
+        001016' 200100  000013  10310           MOVE T2,AUXFLG\r
+        001017' 405100  014200  10320           ANDI T2,MTAOUT+DSKOUT+DTAOUT\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 26\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+\r
+        001020' 201040  001074' 10350   IOERR:  MOVEI T1,TXTC   ;PHYSICAL END OF TAPE\r
+        001021' 602400  002000  10360           TRNE IOS,EOTBIT\r
+        001022' 254000  002166' 10370           JRST PTEXT2     ;YES\r
+\r
+        001023' 201040  001055' 10390           MOVEI T1,TXTD2  ;7-9 PUNCH MISSING\r
+        001024' 606100  000100  10400           TRNN T2,CDRIN\r
+\r
+                                10420   IFN FTDSK,<\r
+                                10430           MOVEI   T1,TXTD3\r
+                                10440           TRNN    T2,DSKIN!DSKOUT>\r
+\r
+        001025' 201040  001042' 10460           MOVEI T1,TXTD   ;WRITE LOCK ERROR\r
+        001026' 606100  074600  10470           TRNN T2,DSKIN+DSKOUT+DTAIN+DTAOUT+MTAIN+MTAOUT\r
+\r
+        001027' 201040  001047' 10490           MOVEI T1,TXTD1\r
+        001030' 602400  400000  10500           TRNE IOS,WRTLOK\r
+        001031' 254000  002166' 10510           JRST PTEXT2\r
+\r
+        001032' 201040  001062' 10530           MOVEI T1,TXTA   ;DEVICE ERROR\r
+        001033' 602400  200000  10540           TRNE IOS,200000\r
+        001034' 254000  002166' 10550           JRST PTEXT2\r
+\r
+        001035' 201040  001066' 10570           MOVEI T1,TXTB   ;CHECKSUM/PARITY ERROR\r
+        001036' 602400  100000  10580           TRNE IOS,100000\r
+        001037' 254000  002166' 10590           JRST PTEXT2\r
+\r
+                                10610   IFN FTDSK,<\r
+                                10620           HRRZ    T1,TABLE+14\r
+                                10630           TRNN    T2,DSKOUT       ;QUOTA EXCEDED>\r
+\r
+        001040' 201040  001100' 10650           MOVEI T1,TXTC1  ;BLOCK TOO LARGE\r
+        001041' 254000  002166' 10660           JRST PTEXT2\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 27\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                                10680   ;DEVICE ERROR COMMENTS\r
+\r
+        001042' 737455  172312  10700   TXTD:   ASCIZ /write (lock) error/\r
+        001043' 201215  467706\r
+        001044' 655224  062744\r
+        001045' 713376  200000\r
+        001046' 254000  001107' 10710           JRST IOERRN     ;NO RECOVERY\r
+\r
+        001047' 613235  660744  10730   TXTD1:  ASCIZ /binary data incomplete/\r
+        001050' 745014  460750\r
+        001051' 605015  167306\r
+        001052' 677336  066312\r
+        001053' 723120  000000\r
+        001054' 254000  001114' 10740           JRST IOERRG\r
+\r
+        001055' 335327  120340  10760   TXTD2:  ASCIZ /7-9 punch missing/\r
+        001056' 727354  364100\r
+        001057' 667236  371722\r
+        001060' 673160  000000\r
+        001061' 254000  001114' 10770           JRST IOERRG\r
+\r
+        001062' 623136  664706  10790   TXTA:   ASCIZ /device error/\r
+        001063' 625014  571344\r
+        001064' 677440  000000\r
+        001065' 254000  001114' 10800           JRST IOERRG\r
+\r
+        001066' 617214  561726  10820   TXTB:   ASCIZ /checksum or parity error/\r
+        001067' 717535  520336\r
+        001070' 711016  060744\r
+        001071' 647517  120312\r
+        001072' 713455  771000\r
+        001073' 254000  001114' 10830           JRST IOERRG\r
+\r
+        001074' 703217  171722  10850   TXTC:   ASCIZ /physical eot/\r
+        001075' 617035  420312\r
+        001076' 677500  000000\r
+        001077' 254000  001114' 10860           JRST IOERRG\r
+\r
+        001100' 613315  761726  10880   TXTC1:  ASCIZ /block or block number too large/\r
+        001101' 203376  220304\r
+        001102' 663374  365500\r
+        001103' 673535  561312\r
+        001104' 711016  467736\r
+        001105' 203314  171316\r
+        001106' 624000  000000\r
+                                10890           ;FALLS THROUGH TO IOERRN\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 28\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+\r
+        001107' 071200  000000  10920   IOERRN: RELEAS TAPE,    ;NO RECOVERY ERRORS EXIT HERE\r
+        001110' 071240  000000  10930           RELEAS DIR,\r
+        001111' 071100  000000  10940           RELEAS OUT,\r
+        001112' 071140  000000  10950           RELEAS IN,\r
+                                10960   IFN DISK30,<\r
+                                10970           RELEAS BLKIN,>\r
+        001113' 254000  000013' 10980           JRST PIP2       ;GET NEXT COMMAND\r
+\r
+                                11000   IFN FTDSK,<\r
+                                11010   TXTD3:  ASCIZ   /monitor detected software error/>\r
+\r
+                                11030   ;TEST IF /G FLAG(IGNORE ERRORS) SET\r
+\r
+        001114' 607300  000200  11050   IOERRG: TLNN FLAG,GFLG          ;PRINTED CURRENT MESSAGE\r
+        001115' 254000  001107' 11060           JRST IOERRN             ;NO RECOVERY\r
+\r
+                                11080           ERRPN2</\r
+        001116' 265040  002166' 11090   />                              ;PRINT CR, LF DON'T MOVE>\r
+        001117' 064240  000000\r
+\r
+        001120' 071040  000000  11110           RELEAS CON,\r
+        001121' 602540  100000  11120           TRNE AUXFLG,TTYOUT      ;TTY OUTPUT DEVICE?\r
+        001122' 260240  000223' 11130           PUSHJ P,OMODE           ;YES, INIT OUTPUT DEVICE\r
+        001123' 602540  001000  11140           TRNE AUXFLG,TTYIN       ;REINIT TTYIN,TTYOUT\r
+        001124' 260240  000426' 11150           PUSHJ P,ININIT\r
+        001125' 620400  740000  11160           TRZ IOS,740000          ;CLEAR FILE STATUS, I/O ERRORS\r
+        001126' 602100  000600  11170           TRNE T2,MTAIN+MTAOUT\r
+        001127' 620400  002000  11180           TRZ IOS,EOTBIT          ;CLEAR PHYSICAL EOT I/O ERROR\r
+        001130' 204000  004674' 11190           MOVS 0,[XWD 1,SAVAC]\r
+        001131' 251000  000003  11200           BLT 0,3\r
+        001132' 200440  003764' 11210           MOVE T5,SAVAC+3\r
+        001133' 200500  003765' 11220           MOVE T6,SAVAC+4\r
+        001134' 263240  000000  11230           POPJ P,\r
+\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 29\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+        001135' 200000  004674' 11260   COMERR: MOVE 0,[XWD 1,SAVAC]    ;SAVE ACS T1,T2,T3,T5,T6\r
+        001136' 251000  003763' 11270           BLT 0,SAVAC+2\r
+        001137' 202440  003764' 11280           MOVEM T5,SAVAC+3\r
+        001140' 202500  003765' 11290           MOVEM T6,SAVAC+4\r
+        001141' 602540  100000  11300           TRNE AUXFLG,TTYOUT      ;RELEASE ANY TTYIO\r
+        001142' 071100  000000  11310           RELEAS OUT,\r
+        001143' 602540  001000  11320           TRNE AUXFLG,TTYIN\r
+        001144' 071140  000000  11330           RELEAS IN,\r
+        001145' 263240  000000  11340           POPJ P,\r
+                                11350   ;PRINT FILE NAME AND EXTENSION FROM (T3), 1(T3).\r
+\r
+        001146' 200043  000000  11370   FN.EX:  MOVE T1,(T3)    ;T1=FILENAME\r
+        001147' 554503  000001  11380           HLRZ T6,1(T3)   ;T6=FILE EXT\r
+        001150' 306500  654644  11390           CAIN T6,(SIXBIT /UFD/)\r
+        001151' 400040  000000  11400           SETZ T1,        ;UFD FILES ONLY ARE ASSUMED TO HAVE FILENAME\r
+        001152' 202040  004642' 11410           MOVEM T1,DERR2  ;OF NUMERIC FORM (#,# P-P NUMBER).\r
+        001153' 322500  001166' 11420           JUMPE T6,DERR2A ;FILE EXT=0?\r
+        001154' 302500  654644  11430           CAIE T6,(SIXBIT /UFD/)\r
+        001155' 254000  001165' 11440           JRST DERR2B     ;NO\r
+\r
+        001156' 554643  000000  11460           HLRZ DOUT,(T3)  ;YES, GET PROJ. NO.\r
+        001157' 201100  002175' 11470           MOVEI T2,PUTCON ;PRINT PROJ-PROG. NO.\r
+        001160' 260240  003235' 11480           PUSHJ P,OUTDC1  ;CONVERT TO ASCII\r
+\r
+        001161' 201200  000054  11500           MOVEI CHR,COMMA\r
+        001162' 260240  002175' 11510           PUSHJ P,PUTCON\r
+\r
+        001163' 550643  000000  11530           HRRZ DOUT,(T3)  ;GET PROG. NO.\r
+        001164' 260240  003235' 11540           PUSHJ P,OUTDC1  ;CONVERT TO ASCII\r
+\r
+        001165' 661500  000016  11560   DERR2B: TLO     T6,"."-40       ;PUT SIXBIT PERIOD\r
+        001166' 202500  004643' 11570   DERR2A: MOVEM   T6,DERR2+1      ;INTO EXTENSION\r
+        001167' 260240  002201' 11580           PUSHJ   P,P6BIT\r
+        001170' 000000  004642' 11590                   DERR2\r
+        001171' 260240  002201' 11600           PUSHJ   P,P6BIT\r
+        001172' 000000  004643' 11610                   DERR2+1\r
+        001173' 201200  000040  11620           MOVEI   CHR," "\r
+        001174' 254000  002175' 11630           JRST    PUTCON\r
+\r
+\r
+\r
+\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 30\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                                11690   ;THIS ROUTINE GETS A 7 BIT ASCII CHARACTER FROM THE COMMAND STRING\r
+                                11700   ;AND RETURNS IT TO THE COMMAND SCANNER ROUTINE (NAME) IN AC0\r
+\r
+        001175' 260240  001404' 11720   GETCOM: PUSHJ P,GETBUF\r
+        001176' 306000  000057  11730           CAIN 0,"/"      ;SINGLE CHARACTER SWITCH\r
+        001177' 254000  001300' 11740           JRST GETT6\r
+        001200' 306000  000050  11750           CAIN 0,"("      ;LOOK FOR (MULTI-CHAR.) SWITCH\r
+        001201' 254000  001252' 11760           JRST GETT3\r
+        001202' 306000  000074  11770           CAIN 0,"<"      ;GO LOOK FOR PROTECTION\r
+        001203' 254000  001223' 11780           JRST GETT9\r
+        001204' 302000  000133  11790           CAIE 0,"["\r
+        001205' 263240  000000  11800           POPJ P,\r
+\r
+        001206' 260240  001236' 11820   GETT10: PUSHJ P,GETDEC  ;LOOK FOR PROJECT-PROGRAMMER NUMBER\r
+        001207' 303600  777777  11830           CAILE T7,-1     ;GREATER THAN HALF WORD?\r
+        001210' 254000  002107' 11840           JRST ERR2A      ;YES, ERROR\r
+        001211' 302000  000054  11850           CAIE 0,","      ;SEPARATOR?\r
+        001212' 254000  001232' 11860           JRST GETUPJ     ;OR TERMINATOR (NON-NUMERIC)\r
+        001213' 516600  004043' 11870           HRLZM T7,PP\r
+        001214' 260240  001236' 11880           PUSHJ   P,GETDEC\r
+        001215' 303600  777777  11890           CAILE   T7,-1\r
+        001216' 254000  002107' 11900           JRST    ERR2A\r
+\r
+        001217' 542600  004043' 11920   GETT11: HRRM T7,PP\r
+        001220' 306000  000135  11930           CAIN 0,"]"      ;FORCE CORRECT TERMINATOR\r
+        001221' 254000  001175' 11940           JRST GETCOM\r
+        001222' 254000  002076' 11950           JRST ERR2\r
+\r
+        001223' 260240  001235' 11970   GETT9:  PUSHJ P,GETOCT\r
+        001224' 306000  000076  11980           CAIN 0,">"      ;TERMINATE ON RIGHT BRKT ONLY\r
+        001225' 303600  000777  11990           CAILE T7,777    ;PR. IN RANGE?\r
+        001226' 254000  002107' 12000           JRST ERR2A\r
+        001227' 241600  777767  12010           ROT T7,-11\r
+        001230' 522600  004042' 12020           HLLOM T7,PR     ;RHS=1'S MEANS <> SEEN (PR MAY BE 0)\r
+        001231' 254000  001175' 12030           JRST GETCOM\r
+\r
+        001232' 200440  003734' 12050   GETUPJ: MOVE    T5,UPROJ\r
+        001233' 516440  004043' 12060           HRLZM   T5,PP\r
+        001234' 254000  001217' 12070           JRST    GETT11\r
+        001235' 334440  004675' 12080   GETOCT: SKIPA   T5,[EXP 10]\r
+        001236' 201440  000012  12090   GETDEC: MOVEI   T5,12\r
+        001237' 201600  000000  12100   GETNUM: MOVEI T7,0      ;TO PICK UP P-P NUMBER\r
+        001240' 260240  001404' 12110   GETN1:  PUSHJ P,GETBUF  ;AND PROTECTION\r
+        001241' 306000  000040  12120           CAIN 0," "      ;IGNORE SPACES\r
+        001242' 254000  001240' 12130           JRST GETN1\r
+        001243' 301000  000060  12140           CAIL 0,"0"\r
+        001244' 301011  000060  12150           CAIL 0,"0"(T5)\r
+        001245' 263240  000000  12160           POPJ P,         ;GOT A NON-NUMERIC\r
+        001246' 220600  000011  12170           IMUL    T7,T5   ; MULTIPLY BY RADIX\r
+        001247' 275000  000060  12180           SUBI    0,"0"\r
+        001250' 270600  000000  12190           ADD     T7,0    ; ADD DIGIT\r
+        001251' 254000  001240' 12200           JRST GETN1\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 31\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+        001252' 260240  001320' 12220   GETT3:  PUSHJ P,GETT5   ;PROCESS SWITCH CHARACTER\r
+        001253' 306000  000051  12230           CAIN 0,")"      ;CLOSING PAREN?\r
+        001254' 254000  001175' 12240           JRST GETCOM     ;YES\r
+        001255' 306000  000115  12250           CAIN 0,"M"      ;MTA FLAG?\r
+        001256' 660300  200000  12260           TRO FLAG, MTFLG ;SET MTA, LOOK FOR MULTI CHAR. SWITCH\r
+        001257' 302000  000043  12270           CAIE 0,"#"      ;MTA#\r
+        001260' 254000  001252' 12280           JRST GETT3      ;NO\r
+        001261' 606300  200000  12290           TRNN FLAG,MTFLG ;ONLY LOOK AFTER # IF MTFLG IS ON.\r
+        001262' 254000  002040' 12300           JRST ERR6A      ;I.E. IF MT SWITCH IS IN PROGRESS.\r
+        001263' 260240  001305' 12310           PUSHJ P,GETNUD  ;GET A NUMBER\r
+        001264' 302000  000104  12320           CAIE 0,"D"      ;TERMINATED BY D?\r
+        001265' 306000  000101  12330           CAIN 0,"A"      ;TERMINATED BY A?\r
+        001266' 254000  001276' 12340           JRST GETT3A     ;YES, MARK AB UPPER\r
+        001267' 302000  000120  12350           CAIE 0,"P"      ;ONLY A,D,P AND B CAN BE\r
+        001270' 306000  000102  12360           CAIN 0,"B"      ;PRECEDED BY #.\r
+        001271' 254000  001273' 12370           SKIP    1\r
+        001272' 254000  002040' 12380           JRST ERR6A\r
+        001273' 542600  004136' 12390           HRRM T7,AB      ;NO. FILES/RECS TO ADVANCE\r
+                                12400                           ;GOES IN AB (RH)\r
+        001274' 260240  001321' 12410   GETT3B: PUSHJ P,GETT5A\r
+        001275' 254000  001252' 12420           JRST GETT3\r
+\r
+        001276' 506600  004136' 12440   GETT3A: HRLM T7,AB      ;NO. FILES/RECS TO BACK SPACE\r
+        001277' 254000  001274' 12450           JRST GETT3B     ;GOES IN AB (LH)\r
+\r
+        001300' 260240  001320' 12470   GETT6:  PUSHJ P,GETT5   ;PROCESS ONE SWITCH CHAR\r
+        001301' 302000  000115  12480           CAIE 0,"M"\r
+        001302' 306000  000051  12490           CAIN 0,")"      ;THESE ARE ILLEGAL 1-SWITCH CHARS.\r
+        001303' 254000  002040' 12500           JRST ERR6A\r
+        001304' 254000  001175' 12510           JRST GETCOM\r
+\r
+        001305' 201600  000000  12530   GETNUD: MOVEI T7,0      ;GET A DECIMAL NUMBER\r
+        001306' 260240  001404' 12540   GETN2:  PUSHJ P,GETBUF  ;GET CHAR FROM COMMAND STRING\r
+        001307' 306000  000040  12550           CAIN 0,SPACE    ;SPACE?\r
+        001310' 254000  001306' 12560           JRST GETN2      ;YES, IGNORE\r
+        001311' 301000  000060  12570           CAIL 0,"0"      ;NUMBER?\r
+        001312' 303000  000071  12580           CAILE 0,"9"\r
+        001313' 263240  000000  12590           POPJ P,         ;NO\r
+        001314' 221600  000012  12600           IMULI T7,^D10   ;T7*10\r
+        001315' 405000  000017  12610           ANDI 0,17       ;ADD ON LAST DIGIT\r
+        001316' 270600  000000  12620           ADD T7,0        ;+ LOW 4 BITS\r
+        001317' 254000  001306' 12630           JRST GETN2\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 32\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+\r
+                                12660   ;GET NEXT COMMAND STRING CHAR(SWITCH),CHECK WITH TABLE,SET FLAGS\r
+\r
+        001320' 260240  001404' 12680   GETT5:  PUSHJ P,GETBUF  ;GET CHAR FROM COMMAND STRING\r
+        001321' 200100  004676' 12690   GETT5A: MOVE T2,[XWD 350700,DISPTB]     ;SET DISPTB NEXT SEARCH\r
+        001322' 201500  004056' 12700           MOVEI T6,MTAREQ ;SET MTAREQ NEXT SEARCH\r
+\r
+        001323' 606300  200000  12720           TRNN FLAG,MTFLG ;SET UP TABLE TO SEARCH AND FLAG TO SET.\r
+        001324' 541100  001436' 12730           HRRI T2,DISPTA  ;PUT IN BYTE POINTER, NOT MTA REQUEST\r
+\r
+                                12750   ;SET TO LOOK AT NON-MTA LETTERS FIRST\r
+\r
+        001325' 606300  200000  12770           TRNN FLAG,MTFLG ;IF MTFLG SET, START AT DISPTB AND STORE RESULT IN\r
+        001326' 201500  000013  12780           MOVEI T6,AUXFLG ;MTAREQ, ELSE START AT DISPTA AND STORE RESULT IN\r
+                                12790                           ;AUXFLG OR FLAG\r
+                                12800   ;GET FIRST CHAR DISPTA OR DISPTB, LOOK FOR MATCH, SET SWITCH FLAGS.\r
+\r
+        001327' 135140  000002  12820   GETT7:  LDB T3,T2       ;COMPARE WITH LEFT 7 BITS OF\r
+        001330' 326140  001335' 12830           JUMPN T3,GETT8  ;TABLE ENTRIES\r
+        001331' 620300  200000  12840           TRZ FLAG, MTFLG ;SEARCHED TABLE 1 (DISPTB) DROP MTA FLAG\r
+        001332' 201500  000013  12850           MOVEI T6,AUXFLG ;SET AUXFLG NEXT TABLE SEARCH\r
+        001333' 603540  000020  12860           TLNE AUXFLG,NOMORE      ;AFTER FIRST INPUT DEVICE ONLY ACCEPT MTA FLAGS\r
+        001334' 263240  000000  12870           POPJ P,\r
+\r
+        001335' 306140  000001  12890   GETT8:  CAIN T3,1       ;END OF DISPTA 1ST HALF?\r
+        001336' 201500  000006  12900           MOVEI T6,FLAG   ;YES, SEARCH DISPTA 2ND HALF FROM NOW ON\r
+        001337' 306140  000002  12910           CAIN T3,2       ;END OF DISPTA 2ND HALF?\r
+        001340' 254000  002040' 12920           JRST ERR6A      ;SEARCHED TABLE 3, ERROR EXIT\r
+        001341' 312140  000000  12930           CAME T3,0       ;MATCHING CHARACTER?\r
+        001342' 344100  001327' 12940           AOJA T2,GETT7   ;NO, GET NEXT SWITCH IN TABLE.\r
+\r
+        001343' 200442  000000  12960           MOVE T5,(T2)    ;YES, SET FLAG OR AUXFLG OR MTAREQ\r
+        001344' 436452  000000  12970           ORM T5,(T6)     ;FLAG OR AUXFLG\r
+        001345' 602300  200000  12980           TRNE FLAG,MTFLG\r
+        001346' 436440  004133' 12990           ORM T5,AUX      ;MTA REQUESTS SAVED IN AUX\r
+                                13000   IFE RIMSW,<\r
+        001347' 603300  000002  13010           TLNE FLAG,RIMFLG\r
+        001350' 254000  004652' 13020           JRST RIMTB      ;NO RIM IF RIMSW=0\r
+                                13030           >               ;PRINT ERROR MESSAGE\r
+        001351' 263240  000000  13040           POPJ P,         ;EXIT ON MATCHING CHAR\r
+\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 33\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+\r
+                                13070   ;ROUTINE TO GET ONE TTY OR CCL COMMAND STRING CHAR INTO AC 0\r
+\r
+        001352'                 13090   GETTA:\r
+\r
+        001352' 373000  003755' 13110           SOSLE TFI+2     ;SUBR TO GET ONE TTY CHAR IN AC 0\r
+        001353' 254000  001371' 13120           JRST GETT2      ;BUFFER NOT EMPTY\r
+        001354' 200000  003753' 13130           MOVE 0,TFI      ;BUFFER EMPTY, SAVE\r
+        001355' 200440  003756' 13140           MOVE T5,TFO     ;CURRENT BUFFER LOCS\r
+        001356' 260240  001410' 13150           PUSHJ P,INICON  ;BUFFER EMPTY SO RE-ATTACH TTY\r
+        001357' 562000  003753' 13160           HRROM 0,TFI     ;RESTORE OLD BUFFER LOCS\r
+        001360' 562440  003756' 13170           HRROM T5,TFO    ;USE PREVIOUSLY ASSIGNED I/O BUF. FOR TTY\r
+        001361' 200440  004131' 13180           MOVE T5,COMCNT  ;DONT TYPE CR,LF\r
+        001362' 307440  000105  13190           CAIG T5,^D69    ;FOR SHORT LINE\r
+        001363' 254000  001365' 13200           JRST GETTIN\r
+        001364' 260240  002735' 13210           PUSHJ   P,INFO2 ;TYPE CR,LF\r
+        001365' 066040  000000  13220   GETTIN: INPUT CON,      ;GET THE NEXT LINE\r
+        001366' 200440  003755' 13230           MOVE T5,TFI+2   ;SAVE CHAR COUNT\r
+        001367' 071040  000000  13240           RELEAS CON,     ;LET GO OF TTY FOR USE AS IN-OUT DEVICE\r
+        001370' 202440  003755' 13250           MOVEM T5,TFI+2  ;RESTORE CHAR COUNT LOST DURING RELEASE\r
+        001371' 134000  003754' 13260   GETT2:  ILDB 0,TFI+1    ;FETCH CHAR\r
+        001372' 302000  000175  13270   GETT4:  CAIE 0,ALT175   ;OLD ALTMODE?\r
+        001373' 306000  000176  13280           CAIN 0,ALT176\r
+        001374' 201000  000033  13290           MOVEI 0,ALTMOD  ;YES,MAKE NEW ALTMOD\r
+        001375' 322000  001352' 13300           JUMPE   0,GETTA ;IGNORE NULL CHARS\r
+        001376' 301000  000140  13310           CAIL 0,140      ;LOWER CASE?\r
+        001377' 620000  000040  13320           TRZ     0,40    ;YES MAKE UPPER CASE?\r
+        001400' 302000  000021  13330           CAIE    0,XON   ;IGNORE XON,XOFF ONLY FOR\r
+        001401' 306000  000023  13340           CAIN    0,XOFF  ;TTY SERVICE TO SIGNAL TTY\r
+        001402' 254000  001352' 13350           JRST    GETTA   ;PTR READ IN MODE\r
+        001403' 263240  000000  13360           POPJ P,\r
+\r
+                                13380   ;ROUTINE TO GET ONE TTY CHAR FROM COMBUF INTO AC0\r
+\r
+        001404' 375000  004131' 13400   GETBUF: SOSGE COMCNT    ;ANY CHARS LEFT?\r
+        001405' 254000  002045' 13410           JRST ERR6B      ;NO, COMMAND ERROR\r
+        001406' 134000  004132' 13420           ILDB 0,COMPTS   ;PICK UP CHAR FROM COMBUF\r
+        001407' 263240  000000  13430           POPJ P,\r
+\r
+                                13450   ;ROUTINE TO INITIALIZE THE TTY, ASCII LINE MODE\r
+\r
+        001410' 041040  000001  13470   INICON: INIT CON,1      ;SUBR TO INITIALIZE THE TTY\r
+        001411' 646471  000000  13480           SIXBIT /TTY/\r
+        001412' 003756' 003753' 13490           XWD TFO,TFI     ;TTY OUT/IN BUFFER HEADERS\r
+        001413' 047000  000012  13500           EXIT            ;IF TTY NOT AVAILABLE,FATAL.JOB DET?\r
+        001414' 263240  000000  13510           POPJ P,\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 34\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                                13530   ;GET 7 BIT ASCII CHARACTER - INPUT FROM CCL COMMAND FILE\r
+\r
+        001415' 476000  004057' 13550   GETEN2: SETOM   COMEOF          ;INDICATE END OF FILE\r
+        001416' 201000  000032  13560           MOVEI   0,CZ            ;NEEDED TO TERM CCL CS SCAN\r
+        001417' 263240  000000  13570           POPJ    P,\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 35\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                                13590   ;TABLE OF RECOGNIZED COMMAND LETTERS AND CORRESPONDING FLAG BITS\r
+\r
+                                13610   DEFINE DISP (A,B)\r
+                                13620   <       XWD <"A">*4000,B>\r
+                                13630   ;MAGTAPE SWITCHES AND FLAG BITS. TABLE 1 (MTAREQ)\r
+        001420' 404000  000001  13640   DISPTB: DISP A,MTAFLG\r
+        001421' 410000  000002  13650           DISP B,MTBFLG\r
+        001422' 520000  000004  13660           DISP T,MTTFLG\r
+        001423' 534000  000010  13670           DISP W,MTWFLG\r
+        001424' 340000  000400  13680           DISP 8,MT8FLG\r
+        001425' 324000  001000  13690           DISP 5,MT5FLG\r
+        001426' 310000  002000  13700           DISP 2,MT2FLG\r
+        001427' 424000  004000  13710           DISP E,MTEFLG\r
+        001430' 524000  000040  13720           DISP U,MTUFLG\r
+        001431' 430000  000020  13730           DISP F,MTFFLG\r
+        001432' 420000  000100  13740           DISP D,MTDFLG\r
+        001433' 500000  000200  13750           DISP P,MTPFLG\r
+        001434' 214000  000000  13760           DISP #,0\r
+        001435' 000000  000000  13770           OCT 000000000000\r
+                                13780   ;1ST BYTE 0=END OF DISPTB\r
+                                13790   ;------------------------\r
+                                13800   ;COMMAND STRING LETTERS AND FLAG BITS. TABLE 2 (AUXFLG)\r
+        001436' 504001  000000  13810   DISPTA:                 XWD <"Q">*4000+QFLG,0\r
+        001437' 424040  000000  13820                           XWD <"E">*4000+CDRFLG,0\r
+        001440' 430000  000020  13830           DISP F,FFLG\r
+        001441' 004000  000000  13840           OCT 004000000000\r
+                                13850   ;1ST BYTE 1=END OF DISPTA 1ST HALF\r
+                                13860   ;------------------------\r
+                                13870   ;COMMAND STRING LETTERS AND FLAG BITS. TABLE 3 (FLAG)\r
+        001442' 404000  000001  13880           DISP A,LINE\r
+        001443' 410000  000002  13890           DISP B,BMOD\r
+                                13900   IFN,K,< DISP C,TBMOD\r
+                                13910           DISP D,DFLG\r
+                                13920           DISP L,LFLG>\r
+        001444' 464000  000000  13930           DISP M,0\r
+        001445' 244000  000000  13940           DISP ),0\r
+        001446' 470000  000040  13950           DISP N,NSMOD\r
+        001447' 474000  400640  13960           DISP O,SQMOD+NSMOD+STS+OSFLG\r
+        001450' 500014  000000  13970                           XWD <"P">*4000+PFLG+PCONV,0\r
+                                13980   IFN,K<  DISP R,RFLG>\r
+        001451' 514000  000640  13990           DISP S,SQMOD+NSMOD+STS\r
+                                14000   IFN,K<  DISP T,SPMOD\r
+                                14010                           XWD <"V">*4000+CHKFLG,LINE\r
+                                14020           DISP X,XFLG>\r
+        001452' 550000  004000  14030           DISP Z,ZFLG\r
+        001453' 524001  000000  14040                           XWD <"U">*4000+OFLG,0\r
+        001454' 544402  000000  14050                           XWD <"Y">*4000+IBFLG+RIMFLG,0\r
+        001455' 451000  000000  14060                           XWD <"J">*4000+JFLG,0\r
+        001456' 444100  000000  14070                           XWD <"I">*4000+IFLG,0\r
+        001457' 440400  000000  14080                           XWD <"H">*4000+IBFLG,0\r
+        001460' 434200  000000  14090                           XWD <"G">*4000+GFLG,0\r
+        001461' 010000  000000  14100           OCT 010000000000\r
+                                14110   ;FIRST BYTE 2=END OF DISPTA 2ND HALF\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 36\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                                14130   ;SUBR TO GET NEXT CHAR INTO AC CHR\r
+                                14140   ;NO SKIP RETURN IS END OF FILE, SINGLE SKIP IS NORMAL RETURN\r
+\r
+        001462' 607300  000020  14160   GET:    TLNN FLAG,NEWFIL        ;NEW FILE?\r
+        001463' 627300  000030  14170           TLZN FLAG,PCONV+NEWFIL  ;NO,CONVERT THIS CHAR?\r
+        001464' 254000  001506' 14180           JRST GETPC1     ;YES\r
+        001465' 135200  003743' 14190           LDB CHR,IBF+1   ;GET CHAR\r
+        001466' 306200  000040  14200           CAIN CHR," "    ;SPACE?\r
+        001467' 254000  001544' 14210           JRST GETPC2     ;YES, CONVERT TO LINE FEED\r
+        001470' 307200  000063  14220           CAIG CHR,"3"    ;IS THE CHAR A PROPER FORMAT CONTROL CHAR?\r
+        001471' 305200  000052  14230           CAIGE CHR,"*"\r
+        001472' 254000  001542' 14240           JRST GETPC3     ;NO, SO OUTPUT LINE FEED FOLLOWED BY BAD CHAR\r
+        001473' 307200  000056  14250           CAIG CHR,"."    ;USE LEFT HALF OF TABLE?\r
+        001474' 334204  001474' 14260           SKIPA CHR,PCHTAB-<"*">(CHR)\r
+        001475' 204204  001467' 14270           MOVS CHR,PCHTAB-<"/">(CHR)\r
+        001476' 137200  003743' 14280   GETPC4: DPB CHR,IBF+1   ;CLOBBER OLD CHAR, USUALLY BECOMES NULL\r
+        001477' 242200  777771  14290           LSH CHR,-7      ;BUT OTHERWISE BECOMES ANOTHER FORMAT CHAR\r
+        001500' 405200  000377  14300           ANDI CHR,377    ;EXTRACT THE CHAR TO BE OUTPUT\r
+        001501' 622200  000200  14310           TRZE CHR,200    ;=1 FOR GENERATING MULTIPLE LINE FEEDS\r
+        001502' 661300  000010  14320           TLO FLAG,PCONV  ;CONTINUE TO CONVERT\r
+        001503' 326200  001707' 14330           JUMPN CHR,CPOPJ1;OUTPUT THE GENERATED CHAR UNLESS NULL\r
+        001504' 262245  000000  14340           POP     P,(P)   ;IGNORE NULL CHARS\r
+        001505' 254000  000374' 14350           JRST    PSCAN4  ;DUMP THE LINE BUFFER\r
+        001506' 606300  010000  14360   GETPC1: TRNN FLAG,SUS   ;SUPPLYING SEQ. NUM. NOW?\r
+        001507' 254000  001532' 14370           JRST GET2       ;NO\r
+        001510' 134200  004036' 14380           ILDB CHR,PTRPT  ;YES, SO GET CHAR OF SEQ NUM\r
+        001511' 326200  001707' 14390           JUMPN CHR,CPOPJ1;0 MARKS LAST CHAR\r
+        001512' 135040  003743' 14400           LDB T1,IBF+1    ;GET FIRST CHAR OF THIS LINE\r
+        001513' 201200  000015  14410           MOVEI CHR,15\r
+        001514' 307040  000015  14420           CAIG T1,15      ;PREPARE TO OUTPUT A CR,LF\r
+        001515' 305040  000012  14430           CAIGE T1,12     ;IS FIRST CHAR OF LINE AN END OF LINE CHAR?\r
+        001516' 201200  000011  14440           MOVEI   CHR,TAB ;NO, SO OUTPUT A TAB\r
+        001517' 620300  010000  14450           TRZ FLAG,SUS    ;TURN OFF SUS SUPPLY\r
+        001520' 254000  001724' 14460           JRST    GETA5\r
+        001521' 350000  003743' 14470   GET5:   AOS IBF+1       ;HERE IF A SEQ NUM FOUND IN INBUFFER\r
+        001522' 275040  000005  14480           SUBI T1,5       ;IGNORE SEQ NUM, TAB AND DECREMENT CHAR COUNT\r
+        001523' 202040  003744' 14490           MOVEM T1,IBF+2\r
+        001524' 602300  000040  14500           TRNE FLAG,NSMOD ;REMOVE SEQ NUMS MODE?\r
+        001525' 254000  001532' 14510           JRST GET2       ;YES, SO GET NEXT CHAR\r
+        001526' 202100  004014' 14520           MOVEM T2,SQNUM  ;SEQ NUM FROM BUFFER BECOMES NEW SEQ NUM\r
+        001527' 260240  000707' 14530           PUSHJ P,OUTLBF  ;DUMP THE LINE BUFFER (IF REQUIRED)\r
+        001530' 666300  100400  14540           TRON FLAG,STS+SNI       ;TURN ON START OF LINE\r
+                                14550                           ;AND NO-INCREMENT SEQ NUM FLAG\r
+        001531' 260240  000553' 14560           PUSHJ P,CLRBUF  ;CLEAR LBUF IF IN THE MIDDLE OF A LINE\r
+\r
+        001532' 622300  040000  14580   GET2:   TRZE FLAG,ESQ   ;REPROCESS LAST CHAR?\r
+        001533' 254000  001557' 14590           JRST GET1       ;YES\r
+        001534' 371040  003744' 14600           SOSL T1,IBF+2   ;CHARS REMAINING IN INBUFFER?\r
+        001535' 254000  001553' 14610           JRST GET4       ;YES\r
+        001536' 260240  001616' 14620           PUSHJ P,INP     ;NO, SO REFILL AND CHECK ERR BITS\r
+        001537' 602400  020000  14630           TRNE IOS,EOFBIT ;END OF FILE? IOS HAS STATUS BITS\r
+        001540' 263240  000000  14640           POPJ P,         ;YES\r
+        001541' 254000  001532' 14650           JRST GET2       ;NO, SO PROCESS INBUFFER\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 36-1\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+\r
+        001542' 660300  040000  14670   GETPC3: TRO FLAG,ESQ    ;REPROCESS BAD CHAR\r
+        001543' 664200  002400  14680           TROA CHR,12*200 ;PRECEED BAD CHAR WITH LINE FEED\r
+        001544' 201200  002400  14690   GETPC2: MOVEI CHR,12*200;CHANGE SPACE TO LINE FEED\r
+        001545' 254000  001476' 14700           JRST GETPC4\r
+\r
+        001546' 005000  004656  14720   PCHTAB: XWD 24*200,23*200+"."   ;/ *\r
+        001547' 042440  037600  14730           XWD 212*200+" ",177*200 ;0 +   VJC 4/16/49\r
+        001550' 003000  004200  14740           XWD 14*200,21*200       ;1 ,\r
+        001551' 004000  042460  14750           XWD 20*200,212*200+"0"  ;2 -\r
+        001552' 002600  004400  14760           XWD 13*200,22*200       ;3 .\r
+\r
+        001553' 134200  003743' 14780   GET4:   ILDB CHR,IBF+1  ;FETCH CHAR FROM INBUFFER\r
+        001554' 616300  004672' 14790           TDNN FLAG,[XWD IFLG+IBFLG,BMOD] ;BIN, IB, I OR SBIN MODE?\r
+        001555' 603540  000004  14800           TLNE AUXFLG,SBIN\r
+        001556' 254000  001707' 14810           JRST CPOPJ1     ;YES, SO NO PROCESSING REQUIRED\r
+        001557' 135200  003743' 14820   GET1:   LDB CHR,IBF+1   ;AFTER SEQ NUM, HERE FOR 1ST CHAR\r
+        001560' 322200  001532' 14830           JUMPE CHR,GET2  ;IGNORE NULL CHARS\r
+        001561' 306200  000012  14840           CAIN CHR,LF     ;IGNORE LINE FEED IN FORTRAN OUTPUT\r
+        001562' 607300  000004  14850           TLNN FLAG,PFLG  ;/P SWITCH IN EFFECT?\r
+        001563' 254000  001566' 14860           JRST GET1A      ;NO\r
+        001564' 661300  000010  14870           TLO FLAG,PCONV  ;CONVERT THE NEXT LIVE CHAR\r
+        001565' 254000  001532' 14880           JRST GET2       ;GET NEXT CHAR\r
+        001566' 200120  003743' 14890   GET1A:  MOVE T2,@IBF+1  ;BIT 35 OF BUFFER SET?\r
+        001567' 622100  000001  14900           TRZE T2,1\r
+        001570' 254000  001521' 14910           JRST GET5       ;YES, THIS IS A SEQ NUM\r
+        001571' 622300  000400  14920           TRZE FLAG,STS   ;START SEQ (NEW LINE) FLAG ON?\r
+        001572' 606300  100200  14930           TRNN FLAG,SQMOD+SNI     ;YES, SEQ MODE OR SEQ COPY?\r
+        001573' 254000  001666' 14940           JRST GET7       ;NO, SO PROCESS CHAR\r
+        001574' 200100  004014' 14950           MOVE T2,SQNUM   ;NO, SO ADD 10. TO SEQ NUM\r
+        001575' 200040  003724' 14960           MOVE T1,K1\r
+        001576' 602300  400000  14970           TRNE FLAG,OSFLG ;TEST FOR INCR. BY ONE\r
+        001577' 200040  003726' 14980           MOVE T1,K4\r
+        001600' 270100  000001  14990           ADD T2,T1       ;ASCII INCREMENT\r
+        001601' 404100  003725' 15000           AND T2,K3       ;MASK SIGNIFICANT DIGITS\r
+        001602' 200040  000002  15010           MOVE T1,T2\r
+        001603' 404040  003721' 15020           AND T1,ZRO      ;MASK CARRY BITS\r
+        001604' 240040  777775  15030           ASH T1,-3\r
+        001605' 274100  000001  15040           SUB T2,T1       ;ADJUST CARRIES\r
+        001606' 434100  003721' 15050           IOR T2,ZRO\r
+        001607' 626300  100000  15060           TRZN FLAG,SNI   ;NON-INCREMENT SEQ NUM FLAG ON?\r
+        001610' 202100  004014' 15070           MOVEM T2,SQNUM  ;NO, SO SAVE THE RESULT\r
+        001611' 660300  050001  15080           TRO FLAG,LINE+SUS+ESQ   ;TURN ON SUPPLY SEQ, REPROCESS\r
+                                15090                                   ;LAST CHAR, AND LINE-BY-LINE FLAGS\r
+        001612' 350000  004174' 15100           AOS LBUF                ;SET BIT 35 IN LBUF TO MARK SEQ NUM\r
+        001613' 200040  004677' 15110           MOVE T1,[POINT 7,SQNUM]\r
+        001614' 202040  004036' 15120           MOVEM T1,PTRPT  ;INITIALIZE SEQ NUM PICK-UP POINTER\r
+        001615' 254000  001462' 15130           JRST GET        ;GO OUTPUT FIRST CHAR OF SEQ NUM\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 37\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                                15150   ;ROUTINE TO INPUT INPUT FILE\r
+\r
+        001616' 056140  000000  15170   INP:    IN      IN,     ;INPUT DATA\r
+        001617' 254000  001710' 15180           JRST    CPOPJZ  ;NO ERRORS ,BUT CLEAR IOS JUST IN CASE\r
+        001620' 062140  000010  15190   INERR:  GETSTS IN,IOS   ;SUBR TO CHECK INPUT ERR BITS\r
+        001621' 606540  000400  15200           TRNN AUXFLG,MTAIN       ;MTA INPUT?\r
+        001622' 602400  740000  15210           TRNE IOS,740000 ;ANY ERROR BITS SET?\r
+        001623' 606400  742000  15220           TRNN IOS,740000+EOTBIT  ;EOT FOR MTA?\r
+        001624' 263240  000000  15230           POPJ P,         ;NO\r
+\r
+        001625' 260240  001135' 15250           PUSHJ P,COMERR  ;SAVE AC'S RELEASE TTY\r
+        001626' 265440  000542' 15260           JSP T5,INICN2   ;YES SO PRINT OUT COMPLETE FILE DESCRIPTOR\r
+        001627' 260240  001652' 15270           PUSHJ P,QUEST\r
+        001630' 265040  002166' 15280           ERRPN2  </Input device />\r
+        001631' 447356  072750\r
+        001632' 203114  573322\r
+        001633' 617124  000000\r
+        001634' 260240  002201' 15290           PUSHJ   P,P6BIT\r
+        001635' 000000  004637' 15300                   DEVICE\r
+        001636' 336000  004052' 15310           SKIPN   ZRF             ;IS THERE A FILE NAME\r
+        001637' 254000  001643' 15320           JRST    .+4             ;NO,SO DON'T PRINT\r
+        001640' 265040  002166' 15330           ERRPN2  </: file />\r
+        001641' 351014  664730\r
+        001642' 625000  000000\r
+        001643' 201140  004052' 15340           MOVEI T3,ZRF    ;LOC OF INPUT FILE NAME TO T3\r
+        001644' 260240  001146' 15350           PUSHJ P,FN.EX   ;DEPOSIT FILE NAME, EXT INTO TTY OUT BUFFER\r
+        001645' 200100  000013  15360           MOVE T2,AUXFLG\r
+        001646' 405100  060500  15370           ANDI T2,CDRIN+DTAIN+DSKIN+MTAIN\r
+        001647' 260240  001020' 15380           PUSHJ P,IOERR   ;GO PRINT ERROR DESCRIPTOR\r
+        001650' 060150  000000  15390           SETSTS IN,(IOS)\r
+        001651' 263240  000000  15400           POPJ P,\r
+\r
+                                15420   ;ROUTINE TO TEST IF BLOCK TOO LARGE, OR WRITE LOCKED\r
+\r
+        001652' 201200  000077  15440   QUEST:  MOVEI CHR,"?"   ;DEPOSIT "?" IN ERROR MSG\r
+        001653' 607300  000200  15450           TLNN FLAG,GFLG  ;ONLY IF /G NOT ON\r
+        001654' 254000  002175' 15460           JRST PUTCON     ;/G NOT ON, PRINT ?(FATAL) BEFORE ERR MSG\r
+\r
+        001655' 606400  040000  15480           TRNN IOS,BIGBLK ;BLOCK NO. TOO LARGE?\r
+        001656' 254000  001662' 15490           JRST QUEST2     ;NO\r
+        001657' 606540  024000  15500           TRNN AUXFLG,DTAIN+DTAOUT        ;YES\r
+        001660' 263240  000000  15510           POPJ P,         ;BLOCK TOO LARGE\r
+\r
+        001661' 254000  002175' 15530           JRST PUTCON     ;DEPOSIT "?" FATAL EVEN IF /G ON\r
+\r
+        001662' 602400  400000  15550   QUEST2: TRNE IOS,WRTLOK ;WRITE LOCKED?\r
+        001663' 606540  034600  15560           TRNN AUXFLG,DTAIN+DTAOUT+MTAIN+MTAOUT+DSKOUT\r
+        001664' 263240  000000  15570           POPJ P,         ;NO\r
+        001665' 254000  002175' 15580           JRST PUTCON     ;DEPOSIT "?" FATAL EVEN IF /G ON\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 38\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+\r
+        001666' 603300  000010  15610   GET7:   TLNE FLAG,PCONV ;CONVERTING FORTRAN CARRAIGE CONTROL CHAR?\r
+        001667' 254000  001463' 15620           JRST GET+1      ;YES, GO DO IT\r
+        001670' 350040  004035' 15630           AOS T1,CDRCNT\r
+        001671' 603540  000040  15640           TLNE AUXFLG,CDRFLG\r
+        001672' 254000  001712' 15650           JRST GET7B      ;CARD READER INPUT\r
+\r
+        001673' 306200  000040  15670   GET7C:  CAIN CHR,SPACE  ;SPACE?\r
+        001674' 254000  001727' 15680           JRST GETA2      ;YES\r
+        001675' 306200  000015  15690           CAIN CHR,CR     ;CAR. RET.?\r
+        001676' 254000  001717' 15700           JRST GETA3      ;YES\r
+        001677' 620300  020000  15710           TRZ FLAG,SPOK   ;CHAR NOT A SPACE STOP COUNTING CONSEC. SPACES\r
+        001700' 306200  000011  15720           CAIN CHR,TAB    ;TAB?\r
+        001701' 254000  001724' 15730           JRST GETA5      ;KEEP TRACK OF TAB STOPS\r
+        001702' 307200  000137  15740           CAIG CHR,137\r
+        001703' 305200  000040  15750           CAIGE CHR,SPACE ;NON-SPACING CHARACTER?\r
+        001704' 254000  001707' 15760           JRST CPOPJ1     ;YES, SO RETURN IMMEDIATELY\r
+        001705' 377000  004027' 15770           SOSG TABCT      ;COUNT DOWN THE TAB STOP COUNTER\r
+        001706' 254000  001724' 15780           JRST GETA5      ;RESET THE COUNTER IF TAB STOP IS PASSED\r
+        001707' 354005  000000  15790   CPOPJ1: AOSA    (P)     ;SKIP RETURN\r
+        001710' 400400  000000  15800   CPOPJZ: SETZ    IOS,    ;CLEAR IOS JUST IN CASE\r
+        001711' 263240  000000  15810   CPOPJ:  POPJ    P,\r
+\r
+\r
+        001712' 301040  000111  15840   GET7B:  CAIL T1,^D73    ;LT COL 73?\r
+        001713' 303040  000120  15850           CAILE T1,^D80   ;NO, LE COL 80?\r
+        001714' 254000  001673' 15860           JRST    GET7C   ;CANT BE A CARD SEQUENCE NUMBER\r
+        001715' 201200  000040  15870           MOVEI CHR,SPACE ;REPLACE CARD SEQUENCE NOS. BY SPACE\r
+        001716' 254000  001673' 15880           JRST GET7C\r
+\r
+        001717' 622300  020000  15900   GETA3:  TRZE FLAG,SPOK  ;CAR. RET. SEEN, ANY TRAILING SPACES?\r
+        001720' 606300  001004  15910           TRNN FLAG,SPMOD+TBMOD   ;YES, ARE WE FLUSHING TRAILING SPACES\r
+        001721' 254000  001724' 15920           JRST GETA5      ;NO, RESET TAB COUNTER ONLY\r
+        001722' 200000  004023' 15930           MOVE 0,SVPTR1\r
+        001723' 202000  004020' 15940           MOVEM 0,OPTR    ;CLOBBER THE OUTPUT POINTER TO LBUF\r
+        001724' 201000  000010  15950   GETA5:  MOVEI 0,TABSP\r
+        001725' 202000  004027' 15960           MOVEM 0,TABCT   ;RESET THE TAB COUNTER\r
+        001726' 254000  001707' 15970           JRST    CPOPJ1\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 39\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+        001727' 662300  020000  15990   GETA2:  TROE FLAG,SPOK  ;SPACE WAS SEEN, IS THIS ONE OF A SEQUENCE?\r
+        001730' 254000  001735' 16000           JRST GETA7      ;YES\r
+        001731' 200000  004020' 16010           MOVE 0,OPTR     ;THIS IS THE FIRST SPACE SEEN, SAVE LBUF\r
+                                16020                           ;POINTER IN CASE THIS SPACE MUST BE FLUSHED\r
+        001732' 202000  004023' 16030           MOVEM 0,SVPTR1  ;THIS POINTER FOR FLUSHING FINAL SPACES\r
+        001733' 202000  004024' 16040           MOVEM 0,SVPTR2  ;THIS POINTER FOR CHANGING MULT. SPACES TO TABS\r
+        001734' 402000  004030' 16050           SETZM SPCT      ;INITIALIZE THE SPACE COUNTER\r
+        001735' 350040  004030' 16060   GETA7:  AOS T1,SPCT\r
+        001736' 373000  004027' 16070           SOSLE TABCT     ;ARE WE AT THE NEXT TAB STOP?\r
+        001737' 254000  001707' 16080           JRST CPOPJ1     ;NO\r
+        001740' 301040  000002  16090           CAIL T1,2       ;DONT BOTHER CHANGING ONE SPACE TO A TAB\r
+        001741' 606300  000004  16100           TRNN FLAG,TBMOD ;TAB GENERATING MODE?\r
+        001742' 254000  001747' 16110           JRST GETA5A     ;NO, GO RESET TAB COUNTER\r
+        001743' 200000  004024' 16120           MOVE 0,SVPTR2\r
+        001744' 202000  004020' 16130           MOVEM 0,OPTR    ;BACK UP THE OUTPUT POINTER OVER THE LAST\r
+                                16140                           ;GROUP OF SPACES\r
+        001745' 201200  000011  16150           MOVEI CHR,TAB   ;OUTPUT A TAB\r
+        001746' 402000  004030' 16160           SETZM SPCT      ;RESET THE SPACE COUNTER\r
+        001747' 133000  004024' 16170   GETA5A: IBP SVPTR2      ;UPDATE THE CHANGE-SPACES-TO-TABS POINTER\r
+        001750' 254000  001724' 16180           JRST GETA5      ;RESET THE TAB COUNTER\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 40\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                                16200   ;ERROR ROUTINES\r
+\r
+                                16220   IFE WCH,<IFN RIMSW,<\r
+                                16230   ERR8A:  MOVEI   T4,ERR382\r
+                                16240           JRST    E10B\r
+                                16250   ERR3B:  MOVEI   T4,ERR381\r
+                                16260           JRST    E10B>>\r
+\r
+        001751' 201340  002053' 16280   ERR10:  MOVEI   T4,E10A\r
+        001752' 336000  004052' 16290   E10B:   SKIPN   ZRF\r
+        001753' 254000  001757' 16300           SKIP    3\r
+        001754' 265040  002155' 16310           ERRPNT  </?File />\r
+        001755' 376155  166312\r
+        001756' 200000  000000\r
+        001757' 201140  004052' 16320           MOVEI T3,ZRF\r
+        001760' 260240  001146' 16330           PUSHJ P,FN.EX\r
+        001761' 254007  000000  16340           JRST    (T4)\r
+\r
+                                16360   IFE WCH,<IFN RIMSW,<\r
+                                16370   ERR381: ERRPN2  </illegal extension!/>\r
+                                16380   \r
+                                16390   ERR382: ERRPN2  </illegal format!/>\r
+                                16400   \r
+                                16410   ERR5B:  ERRPN2  </? DTA to PTP only!/>>>\r
+\r
+        001762' 265040  002155' 16430   ERR9:   ERRPNT  </?/>\r
+        001763' 374000  000000\r
+        001764' 201140  004044' 16440           MOVEI T3,DTON\r
+        001765' 260240  001146' 16450           PUSHJ P,FN.EX\r
+        001766' 254000  002033' 16460           JRST    ERR4B\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 41\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+        001767' 334100  004634' 16480   ERR1:   SKIPA T2,ODEV   ;OUTPUT UNAVAILABLE\r
+        001770' 200100  004637' 16490   ERR1A:  MOVE T2,DEVICE  ;INPUT UNAVAILABLE\r
+        001771' 265040  002155' 16500   ERR1B:  ERRPNT  </?Device />\r
+        001772' 376114  573322\r
+        001773' 617124  000000\r
+        001774' 260240  002201' 16510           PUSHJ   P,P6BIT\r
+        001775' 000000  000002  16520                   T2\r
+        001776' 265040  002166' 16530           ERRPN2  </ not available!/>\r
+        001777' 203355  772100\r
+        002000' 607554  164730\r
+        002001' 607055  462502\r
+        002002' 000000  000000\r
+        002003'                 16540   ERR3:\r
+                                16550   IFN FTDSK,<TRNE AUXFLG,DSKIN\r
+                                16560           JRST DERR5      ;ERR ON DSK>\r
+        002003' 260240  002005' 16570           PUSHJ P,ERR3A\r
+        002004' 254000  001107' 16580           JRST IOERRN     ;EXIT\r
+        002005' 661540  000100  16590   ERR3A:  TLO AUXFLG,INFOFL       ;SIGNAL RETURN TO ERR3AA\r
+        002006' 254000  002711' 16600           JRST INFO\r
+        002007' 265040  002166' 16610   ERR3AA: ERRPN2  </? No file named />\r
+        002010' 375011  667500\r
+        002011' 633235  462500\r
+        002012' 673035  562710\r
+        002013' 200000  000000\r
+        002014' 201140  004040' 16620           MOVEI   T3,FILNAM\r
+        002015' 260240  001146' 16630           PUSHJ   P,FN.EX ;PRINT NAME OF FILE THAT CANNOT BE FOUND\r
+        002016' 260240  002735' 16640           PUSHJ   P,INFO2         ;OUTPUT MESS. WITH CR-LF\r
+        002017' 606540  101000  16650           TRNN    AUXFLG,TTYIN!TTYOUT     ;WAS TTY IN USE?\r
+        002020' 263240  000000  16660           POPJ    P,              ;NO\r
+        002021' 602540  001000  16670           TRNE    AUXFLG,TTYIN    ;INPUT DEVICE?\r
+        002022' 254000  000426' 16680           JRST    ININIT          ;YES ,RE-INIT\r
+        002023' 254000  000223' 16690           JRST    OMODE           ;MUST BE OUTPUT\r
+\r
+        002024' 336000  004044' 16710   ERR4:   SKIPN DTON\r
+        002025' 254000  002033' 16720           JRST ERR4A\r
+                                16730   IFN FTDSK,<TRNE AUXFLG,DSKOUT   ;ERR ON DSK\r
+                                16740           JRST DERR6>\r
+        002026' 265040  002155' 16750           ERRPNT  </? Directory full!/>\r
+        002027' 375010  464744\r
+        002030' 627076  467744\r
+        002031' 745014  672730\r
+        002032' 661020  000000\r
+        002033'                 16760   ERR4A:\r
+                                16770   IFN FTDSK,<TRNE AUXFLG,DSKOUT\r
+                                16780           JRST ERR4C>\r
+        002033' 265040  002155' 16790   ERR4B:  ERRPNT  </?Illegal file name!/>\r
+        002034' 376235  466312\r
+        002035' 637035  420314\r
+        002036' 647314  520334\r
+        002037' 607334  520400\r
+                                16800   IFN FTDSK,<\r
+                                16810   ERR4C:  ERRPNT  </?(0) Illegal file name!/>>\r
+\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 41-1\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+        002040'                 16830   ERR6:\r
+        002040' 265040  002155' 16840   ERR6A:  ERRPNT  </?PIP command error!/>\r
+        002041' 376411  150100\r
+        002042' 617375  566702\r
+        002043' 673104  062744\r
+        002044' 713376  220400\r
+\r
+        002045' 265040  002155' 16860   ERR6B:  ERRPNT  </?PIP command too long!/>\r
+        002046' 376411  150100\r
+        002047' 617375  566702\r
+        002050' 673104  072336\r
+        002051' 675015  467734\r
+        002052' 635020  000000\r
+\r
+        002053' 265040  002166' 16880   E10A:   ERRPN2  </ line too long!/>\r
+        002054' 203315  167312\r
+        002055' 203515  767500\r
+        002056' 663375  663502\r
+        002057' 000000  000000\r
+        002060' 265040  002155' 16890   ERR5A:  ERRPNT  </?Too many input devices!/>\r
+        002061' 376515  767500\r
+        002062' 667035  674500\r
+        002063' 647356  072750\r
+        002064' 203114  573322\r
+        002065' 617136  320400\r
+                                16900   ;FILE MANIPULATION COMMANDS TO NON-DIRECTORY DEVICES COME HERE\r
+\r
+        002066' 265040  002155' 16920   ERR5:   ERRPNT  </?Disk or DECtape input required!/>\r
+        002067' 376115  171726\r
+        002070' 203376  220210\r
+        002071' 426076  460740\r
+        002072' 625015  167340\r
+        002073' 727504  071312\r
+        002074' 707535  171312\r
+        002075' 621020  000000\r
+        002076' 265040  002155' 16930   ERR2:   ERRPNT </?Incorrect Project-Programmer number!/>\r
+        002077' 376235  661736\r
+        002100' 713454  561750\r
+        002101' 202416  267724\r
+        002102' 627076  426640\r
+        002103' 713374  771302\r
+        002104' 667334  571100\r
+        002105' 673535  561312\r
+        002106' 711020  000000\r
+        002107' 265040  002155' 16940   ERR2A:  ERRPNX  </?Illegal protection!/>\r
+        002110' 376235  466312\r
+        002111' 637035  420340\r
+        002112' 713376  462706\r
+        002113' 723235  767102\r
+        002114' 000000  000000\r
+                                16950   IFE BLOC0,<\r
+        002115' 265040  002155' 16960   ERR7A:  ERRPNT  <Z?DECtape I/O only!Z>>\r
+        002116' 376110  541750\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 41-2\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+        002117' 607414  520222\r
+        002120' 276364  067734\r
+        002121' 663624  100000\r
+\r
+        002122' 265040  002155' 16980   ERR8:   ERRPNT  </?Explicit output device required!/>\r
+        002123' 376137  070330\r
+        002124' 647075  172100\r
+        002125' 677536  470352\r
+        002126' 721014  462754\r
+        002127' 647074  520344\r
+        002130' 627436  564744\r
+        002131' 627104  100000\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 42\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+\r
+                                17010   ;ROUTINE TO CHECK INPUT DEV, SET XXXIN.E.G.DTAIN\r
+\r
+        002132' 200000  004637' 17030   CHECK1: MOVE 0,DEVICE   ;INPUT DEVICE NAME TO AC 0\r
+        002133' 322000  002152' 17040           JUMPE 0,CHECK   ;IGNORE IF NO INPUT DEVICE\r
+                                17050   IFN FTDSK,<PUSHJ        P,PSYSP ; STR# 10-3178>\r
+        002134' 047000  000004  17060           DEVCHR          ;GET INPUT DEVCHR\r
+                                17070   IFN FTDSK,<TLNN 0,DSKBIT ;INPUT DEVICE DISK?\r
+                                17080           JRST CHECK2     ;NO\r
+                                17090           TRO AUXFLG,DSKIN;INPUT DEVICE IS DSK, SET BIT\r
+                                17100           MOVE    T1,DEVICE\r
+                                17110           CAMN    T1,[SIXBIT/SYS/]        ; INIT SYS AS DSK\r
+                                17120           MOVSI   T1,(SIXBIT/DSK/)\r
+                                17130           MOVEM   T1,ADSK\r
+                                17140           JRST    CHECK>\r
+\r
+        002135' 322000  000525' 17160   CHECK2: JUMPE 0,DEVER1  ;NON-EX. DEVICE\r
+\r
+        002136' 607000  000002  17180           TLNN 0,INBIT    ;CAN DEVICE DO INPUT?\r
+        002137' 254000  002040' 17190           JRST ERR6A      ;NO, COMMD ERROR\r
+\r
+        002140' 603000  000200  17210           TLNE 0,PTRBIT   ;PAPER TAPE READER?\r
+        002141' 660540  200000  17220           TRO AUXFLG,PPTIN;YES\r
+\r
+        002142' 603000  000004  17240           TLNE 0,DTABIT   ;DECTAPE?\r
+        002143' 660540  020000  17250           TRO AUXFLG,DTAIN\r
+\r
+        002144' 603000  000020  17270           TLNE 0,MTABIT   ;MAGTAPE?\r
+        002145' 660540  000400  17280           TRO AUXFLG, MTAIN\r
+\r
+        002146' 603000  100000  17300           TLNE CDRBIT     ;CARD READER?\r
+        002147' 660540  000100  17310           TRO AUXFLG,CDRIN\r
+\r
+        002150' 603000  000010  17330           TLNE 0,TTYBIT   ;TELETYPE?\r
+        002151' 660540  001000  17340           TRO AUXFLG,TTYIN\r
+\r
+        002152' 602740  001000  17360   CHECK:  TRNE    CALFLG,SSWTCH   ;_FLAG STILL ON?\r
+        002153' 254000  002040' 17370           JRST ERR6A      ; YES ,COMMAND ERROR\r
+        002154' 263240  000000  17380           POPJ P,         ; NO, RETURN \r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 43\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                                17400   ;SUBR TO PRINT ERROR MESSAGES\r
+                                17410   ;! MARKS THE END OF MESSAGE & SIGNALS GO TO PIP2\r
+                                17420   ;NULL IS A FLAG TO RETURN TO THE NEXT LOCATION\r
+\r
+        002155'                 17440   PRETXT: \r
+        002155' 071240  000000  17450   PTEXT:  RELEAS DIR,     ;RELEASE DIRECTORY DEVICE\r
+\r
+        002156' 071200  000000  17460           RELEAS TAPE,    ;RELEASE MAGTAPE\r
+        002157' 071100  000000  17470           RELEAS OUT,     ;LET GO OF BOTH OUTPUT AND\r
+        002160' 071140  000000  17480           RELEAS IN,      ;INPUT DEVICES\r
+        002161' 265440  000541' 17490           JSP T5,INICN1   ;INITIALIZE THE TTY\r
+        002162' 201000  000015  17500           MOVEI   0,CR\r
+        002163' 136000  003757' 17510           IDPB    0,TFO+1 ;OUTPUT A CR-LF\r
+        002164' 201000  000012  17520           MOVEI   0,LF\r
+        002165' 136000  003757' 17530           IDPB    0,TFO+1 ;FOR BATCH\r
+        002166' 505040  440700  17540   PTEXT2: HRLI T1,440700  ;GET SET TO SCAN 7-BIT DATA\r
+        002167' 134000  000001  17550   PTEXT1: ILDB 0,T1       ;GET CHAR OF ERR MESSAGE\r
+        002170' 322001  000001  17560           JUMPE 0,1(T1)   ;RETURN ON ZERO\r
+        002171' 306000  000041  17570           CAIN 0,"!"      ;!?\r
+        002172' 254000  000013' 17580           JRST PIP2       ;YES, END OF MESSAGE, APPEND CAR.RET., LF\r
+        002173' 136000  003757' 17590           IDPB 0,TFO+1    ;DEPOSIT CHAR IN OUTBUFFER\r
+        002174' 254000  002167' 17600           JRST PTEXT1     ;GET NEXT CHAR\r
+\r
+                                17620   ;ROUTINE TO DEPOSIT CHARACTER IN TTY OUT BUFFER\r
+\r
+        002175' 377000  003760' 17640   PUTCON: SOSG TFO+2      ;STORED MORE THAN BUFFER HOLDS?\r
+        002176' 067040  000000  17650           OUTPUT CON,     ;YES\r
+        002177' 136200  003757' 17660           IDPB CHR,TFO+1\r
+        002200' 263240  000000  17670           POPJ P,\r
+\r
+                                17690   ;ROUTINE TO CONVERT ONE WORD OF SIXBIT\r
+                                17700   ;FROM ADDRESS IN LOCATION AFTER CALL AND DEPOSIT INTO TTY OUT BUFFER\r
+\r
+        002201' 200065  000000  17720   P6BIT:  MOVE T1,@(P)    ;PICK UP WORD OF 6-BIT\r
+        002202' 505040  440600  17730           HRLI T1,440600  ;SET UP POINTER\r
+        002203' 134200  000001  17740   P6BIT1: ILDB CHR,T1\r
+        002204' 322200  002207' 17750           JUMPE CHR,P6BIT2\r
+        002205' 271200  000040  17760           ADDI CHR,40\r
+        002206' 260240  002175' 17770           PUSHJ P,PUTCON  ;DEPOSIT IN TTY\r
+        002207' 603040  770000  17780   P6BIT2: TLNE T1,770000  ;DONE SIX?\r
+        002210' 254000  002203' 17790           JRST P6BIT1     ;NO\r
+        002211' 254000  001707' 17800           JRST CPOPJ1     ;SKIP RETURN\r
+\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 44\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                                17830   ;ROUTINE TO CLEAR DSK OR DTA DIRECTORY (/Z SWITCH)\r
+\r
+        002212' 606740  000200  17850   DTCLR:  TRNN    CALFLG,DVSWTH   ;HAS A DEVICE BEEN SEEN?\r
+        002213' 254000  002122' 17860           JRST    ERR8            ;NO,SO DON'T SCREW USER\r
+                                17870   IFN FTDSK,<TRNE AUXFLG,DSKOUT   ;CLEAR DSK OR DTA DIR.\r
+                                17880           JRST DSKZRO>\r
+        002214' 606540  004000  17890           TRNN AUXFLG,DTAOUT      ;MUST BE DTA\r
+        002215' 254000  002066' 17900           JRST ERR5\r
+        002216' 047100  000013  17910           UTPCLR  OUT,            ;CLEAR DIRECTORY\r
+        002217' 263240  000000  17920           POPJ P,\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 45\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                                17940   ;ROUTINE TO SET UP TO COPY EVERYTHING\r
+\r
+        002220' 260240  000426' 17960   PRECOP: PUSHJ   P,ININIT        ;INIT INPUT FILE\r
+        002221' 606540  020000  17970           TRNN    AUXFLG,DTAIN    ;DECTAPE INPUT\r
+        002222' 254000  002225' 17980           SKIP    2               ;NO\r
+        002223' 260240  003272' 17990           PUSHJ   P,DTCH2         ;YES, GET DIRECT, SET POINTERS TO DIRECT\r
+\r
+        002224' 260240  002702' 18010   DTCOPY: PUSHJ   P,DTADI1        ;START (T5)\r
+                                18020   IFN FTDSK,<TRNE AUXFLG,DSKIN    ;DSK INPUT. ENTER HERE FROM DTD2\r
+                                18030           PUSHJ   P,DSKDIR        ;YES, PREPARE TO LOOKUP FILES>\r
+        002225' 402000  004034' 18040   COPY1A: SETZM   ZCNT            ;CLEAR COUNT FOR DSK ZERO REQUESTS\r
+        002226' 201100  000006  18050           MOVEI   T2,6            ;FILL 0 CHARS. IN DEST-FILE\r
+        002227' 200040  004700' 18060           MOVE    T1,[POINT 6,DTON]       ;NAME WITH X'S. THIS IS\r
+        002230' 134000  000001  18070   XSS:    ILDB    0,T1            ;THEN THE BASE FOR GENERATED\r
+        002231' 326000  002233' 18080           JUMPN   0,.+2           ;DESTINATION FILES FROM\r
+        002232' 201000  000070  18090           MOVEI   0,"X"-40        ;NON-DIR. DEVICES IN /X\r
+        002233' 137000  000001  18100           DPB     0,T1\r
+        002234' 367100  002230' 18110           SOJG    T2,XSS          ;DON'T YET KNOW IF ONE\r
+                                18120                                   ;OF THE INPUT DEV. WILL\r
+        002235' 200000  004044' 18130           MOVE    0,DTON          ;BE NON-DIR\r
+        002236' 202000  004021' 18140           MOVEM   0,DTONSV\r
+        002237' 200000  004045' 18150           MOVE    0,DTON+1\r
+        002240' 202000  004022' 18160           MOVEM   0,DTONSV+1\r
+\r
+        002241' 260240  002371' 18180   COPY1:  PUSHJ   P,SR2           ;SET INIT. COPYING MODE\r
+        002242' 260240  002566' 18190           PUSHJ   P,LOOK          ;GET A FILE TO COPY\r
+        002243' 254000  002317' 18200           JRST    CAL6            ;NO MORE\r
+                                18210   IFN FTDSK<PUSHJ P,XDDSK         ;GOT ONE, CHECK (XD) FROM DSK, NAMTAB\r
+                                18220           JRST    COPY1           ;IN LIST, DON'T COPY>\r
+        002244' 606540  201500  18230           TRNN    AUXFLG,MTAIN+PPTIN+CDRIN+TTYIN  ;OK, COPY FILE\r
+        002245' 254000  002250' 18240           JRST    COPY6A          ;MUST BE DIRECTORY DEVICE\r
+        002246' 260240  002337' 18250           PUSHJ   P,MTPTCR        ;SET UP A DEST. FN.\r
+        002247' 254000  002252' 18260           JRST    COPY6\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 46\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+        002250' 076140  004052' 18280   COPY6A: LOOKUP  IN,ZRF          ;LOOKUP INPUT FILE NAME\r
+        002251' 254000  002315' 18290           JRST    CAL5            ;INPUT FILE FILE PROTECTED\r
+        002252' 260240  003353' 18300   COPY6:  PUSHJ   P,FILTYP        ;CHECK FOR DMP,SAV,REL,CHN\r
+                                18310   IFN WCH,<\r
+                                18320           TRNN    AUXFLG,DTAIN+DTAOUT\r
+                                18330           JRST    .+5\r
+                                18340           HLRZ    0,ZRF+1\r
+                                18350           CAIE    0,(SIXBIT /DMP/)\r
+                                18360   IFN DISK30,<CAIN 0,(SIXBIT/SVE/)>\r
+                                18370   IFE DISK30,<CAIN 0,(SIXBIT/SAV/)>\r
+                                18380           JRST    COPY1>\r
+        002253' 260240  002323' 18390           PUSHJ   P,COPY3\r
+        002254' 200000  004052' 18400   COPY6B: MOVE    0,ZRF           ;INPUT FILE NAME\r
+        002255' 202000  004044' 18410           MOVEM   0,DTON          ;IS OUTPUT FILE NAME\r
+        002256' 510000  004053' 18420           HLLZ    0,ZRF+1         ;LIKEWISE EXT\r
+        002257' 512000  004045' 18430           HLLZM   0,DTON+1\r
+\r
+                                18450   ;THIS CODE OPERATES AS FOLLOWS - FOR E+2, SET = 0\r
+                                18460   ;TO START (ASSUMING /X)\r
+                                18470   ;DSK TO DSK IF EDIT SWITCHES PUT E+2 = 0 IF NO EDITS TRANSFER\r
+                                18480   ;       DATE, TIME, BITS 13-35\r
+                                18490   ;DSK TO DTA FOR EDITS E+2 = 0, NO EDITS TRANSFER 24-35 FOR\r
+                                18500   ;DATE, FOR"SAV" FILES TRANSLATE NO.  1K BLOCKS\r
+                                18510   ;DTA TO DSK FOR NO EDITS XFER BITS 24-35, ELSE E+2 = 0\r
+                                18520   ;DTA TO DTA ALWAYS XFER 18-23, (1K BLOCK) NO EDITS XFER 24-35(DATE)\r
+\r
+        002260' 402000  004046' 18540           SETZM   DTON+2          ;CLEAR DATE. OUTPUT FILE, DSK/DTA\r
+        002261' 135000  003717' 18550           LDB     0,DATE          ;GET DSK/DTA DATE CREATED\r
+        002262' 616300  004701' 18560           TDNN    FLAG,[XWD PFLG,LINE+TBMOD+NSMOD+SQMOD+SPMOD]\r
+        002263' 603540  000040  18570           TLNE    AUXFLG,CDRFLG\r
+        002264' 254000  002266' 18580           JRST    COPY6C\r
+        002265' 137000  003720' 18590           DPB     0,DATED         ;DEPOSIT IF NO EDITS\r
+                                18600   IFN FTDSK,<LDB  0,TIME\r
+                                18610           TRC     AUXFLG,DSKIN+DSKOUT\r
+                                18620           TRCN    AUXFLG,DSKIN+DSKOUT\r
+                                18630           DPB     0,TIMED         ;DSK TO DSK TIME>\r
+        002266'                 18640   COPY6C: IFE WCH,<\r
+        002266' 260240  002412' 18650           PUSHJ   P,OKBLKS        ;SETUP 1K BLOCKS>\r
+        002267' 077100  004044' 18660           ENTER   OUT,DTON        ;GOT DATA, CREATE NEW FILE\r
+        002270' 254000  002024' 18670           JRST    ERR4            ;DIRECTORY FULL\r
+        002271' 200000  003721' 18680           MOVE    0,ZRO           ;GET ASCII/00000/AND\r
+        002272' 202000  004014' 18690           MOVEM   0,SQNUM         ;RESET SEQUENCE NO.\r
+        002273' 661300  000020  18700           TLO     FLAG,NEWFIL     ;SET NEW FILE FLAG\r
+        002274' 402000  004026' 18710           SETZM   TOTBRK          ;CLEAR PAREN COUNTER\r
+        002275' 607540  000044  18720           TLNN    AUXFLG,CDRFLG+SBIN      ;SPECIAL PROCESSING?\r
+        002276' 612300  004702' 18730           TDNE    FLAG,[XWD PFLG+IFLG+IBFLG,LINE+BMOD+TBMOD+NSMOD+SQMOD+SPMOD]    \r
+        002277' 254000  000343' 18740           JRST    PSCAN           ;YES, DO IT\r
+        002300' 375000  003744' 18750   COPY5:  SOSGE   IBF+2           ;INPUT BUFFER EMPTY?\r
+        002301' 254000  002305' 18760           JRST    COPY4           ;YES\r
+        002302' 134200  003743' 18770           ILDB    CHR,IBF+1       ;GET NEXT WORD AND\r
+        002303' 260240  000756' 18780           PUSHJ   P,PUT           ;OUTPUT IT\r
+        002304' 254000  002300' 18790           JRST    COPY5\r
+        002305' 260240  002323' 18800   COPY4:  PUSHJ   P,COPY3         ;GET NEXT FULL SOURCE BLOCK\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 46-1\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+        002306' 260240  000762' 18810           PUSHJ   P,OUTP          ;OUTPUT PREV. BLOCK-DONT ALTER DATA\r
+        002307' 350000  003747' 18820           AOS     OBF+2           ;MAKE PUT HAPPY BECAUSE OF\r
+        002310' 254000  002300' 18830           JRST    COPY5           ;OUTPUT HERE.\r
+        002311' 070140  000000  18840   COPY2A: CLOSE   IN,\r
+        002312' 070100  000000  18850           CLOSE   OUT,\r
+                                18860   IFN FTDSK,<TLNE  AUXFLG,NSPROT  ;NON-STANDARD PROTECTION?\r
+                                18870           TRNN    AUXFLG,DSKOUT   ;RENAME ALL OUTPUT FILES IF\r
+                                18880           JRST    COPY2B          ;NON-STANDARD PROTECTION\r
+                                18890           MOVE    0,PROTS         ;GET NEW PROTECTION\r
+                                18900           MOVEM   0,DTON+2\r
+                                18910   \r
+                                18920           RENAME  OUT,DTON        ;RENAME OUTPUT FILE\r
+                                18930           JRST    DERR6>\r
+        002313' 260240  000764' 18940   COPY2B: PUSHJ   P,OUTP1\r
+        002314' 254000  002241' 18950           JRST    COPY1           ;GO GET NEXT FILE\r
+\r
+        002315' 350000  004034' 18970   CAL5:   AOS     ZCNT            ;INPUT FILE READ PROT.\r
+        002316' 254000  002241' 18980           JRST    COPY1           ;COUNT READ FAILURES\r
+\r
+                                19000   ;NO MORE FILES TO COPY\r
+\r
+        002317' 621540  000002  19020   CAL6:   TLZ     AUXFLG,NSPROT\r
+                                19030   IFN FTDSK,<     SKIPN   ZCNT    ;FILES READ PROTECTED ?>\r
+        002320' 254000  000411' 19040           JRST    MAIN1           ;NO\r
+                                19050   IFN FTDSK,<MOVSI T4,(SIXBIT /X/)        ;YES,PRINT FAILURE DURING\r
+                                19060           JRST    DSKZ5           ;/X REQUEST>\r
+\r
+        002321' 332000  003744' 19080   COPY3B: SKIPE   IBF+2           ;EMPTY BLOCK?\r
+        002322' 263240  000000  19090           POPJ    P,              ;NO, RETURN\r
+\r
+        002323' 260240  001616' 19110   COPY3:  PUSHJ   P,INP           ;READ NEXT BLOCK\r
+        002324' 622540  002000  19120           TRZE    AUXFLG,READ1\r
+        002325' 260240  002376' 19130           PUSHJ   P,TTYZ          ;END OF FILE FROM TTY?\r
+        002326' 606400  020000  19140           TRNN    IOS,EOFBIT      ;END OF FILE? IOS HAS STATUS BITS\r
+        002327' 254000  002321' 19150           JRST    COPY3B          ;NO.\r
+        002330' 262240  000000  19160           POP     P,0             ;FIND WHERE CALLED FROM\r
+        002331' 553000  000000  19170           HRRZS   0\r
+        002332' 602540  201500  19180           TRNE    AUXFLG,MTAIN+CDRIN+TTYIN+PPTIN\r
+        002333' 302000  002254' 19190           CAIE    0,COPY6B        ;DID WE COME FROM COPY6B-1\r
+        002334' 254000  002311' 19200           JRST    COPY2A          ;NO, EOF NOT FIRST DATA IN FILE \r
+        002335' 620740  000037  19210           TRZ   CALFLG,ALLCLF     ;END OF INFO ON NON-DIR. DEVICE\r
+        002336' 254000  002241' 19220           JRST    COPY1\r
+\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 47\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                                19240   ;CREATE DESTINATION FILE NAME. RANGE IS ...001 TO ...999\r
+\r
+        002337' 350040  004051' 19260   MTPTCR: AOS T1,NO.\r
+        002340' 303040  001747  19270           CAILE T1,^D999\r
+        002341' 254000  002350' 19280           JRST MPC2\r
+        002342' 260240  002362' 19290           PUSHJ P,MTPTC1\r
+        002343' 200000  004021' 19300           MOVE 0,DTONSV   ;FILNAM=DTON IS ONLY WAY TO IDENTIFY\r
+        002344' 202000  004052' 19310           MOVEM 0,ZRF     ;INPUT FILE\r
+        002345' 200000  004022' 19320           MOVE 0,DTONSV+1\r
+        002346' 202000  004053' 19330           MOVEM 0,ZRF+1\r
+        002347' 263240  000000  19340           POPJ P,\r
+        002350' 265040  002155' 19350   MPC2:   ERRPNT <Z?Terminate /X, max. of 999 files processed!Z>\r
+        002351' 376514  571332\r
+        002352' 647354  172312\r
+        002353' 201373  026100\r
+        002354' 667037  027100\r
+        002355' 677144  034562\r
+        002356' 345014  664730\r
+        002357' 627464  070344\r
+        002360' 677074  571746\r
+        002361' 627104  100000\r
+\r
+        002362' 201641  001750  19370   MTPTC1: MOVEI DOUT,^D1000(T1)\r
+        002363' 200040  004703' 19380           MOVE T1,[POINT 6,DTONSV,17]\r
+        002364' 265100  003235' 19390           JSP T2,OUTDC1\r
+        002365' 344100  001711' 19400           AOJA T2,CPOPJ\r
+        002366' 275200  000040  19410           SUBI CHR,40\r
+        002367' 136200  000001  19420           IDPB CHR,T1\r
+        002370' 263240  000000  19430           POPJ P,\r
+\r
+                                19450   ;ROUTINE TO RESTORE BYTE POINTERS TO INITED MODE\r
+                                19460   ;FOR INPUT AND OUTPUT DEVICES\r
+\r
+        002371' 200000  003740' 19480   SR2:    MOVE 0,SVIBF\r
+        002372' 502000  003743' 19490           HLLM 0,IBF+1\r
+        002373' 200000  003741' 19500           MOVE 0,SVOBF\r
+        002374' 502000  003746' 19510           HLLM 0,OBF+1\r
+        002375' 263240  000000  19520           POPJ P,\r
+\r
+                                19540   ;ROUTINE TO SEE IF ^Z FIRST CHAR ON TTY\r
+\r
+        002376' 606540  001000  19560   TTYZ:   TRNN AUXFLG,TTYIN       ;SEE IF FIRST CHAR. IS ^Z\r
+        002377' 263240  000000  19570           POPJ P,                 ;NOT TTY INPUT\r
+        002400' 550040  003743' 19580           HRRZ T1,IBF+1           ;ON TTY\r
+        002401' 554001  000001  19590           HLRZ 0,1(T1)            ;GET FIRST CHARACTER\r
+        002402' 620000  003777  19600           TRZ     0,3777          ;CLEAR ANY OTHER CHAR.\r
+        002403' 306000  150000  19610           CAIN    0,(<CZ>B6)      ;IS IT ^Z?\r
+        002404' 664400  020000  19620           TROA    IOS,EOFBIT      ;YES,SET END OF FILE\r
+        002405' 302000  104000  19630           CAIE    0,(<XON>B6)     ;IS IT XON "^Q"\r
+        002406' 263240  000000  19640           POPJ    P,              ;NO\r
+        002407' 205000  774000  19650           MOVSI   0,(<DEL>B6)     ;A RUBOUT\r
+        002410' 436001  000001  19660           IORM    1(T1)           ;CLEAR "^Q" FROM BUFFER\r
+        002411' 263240  000000  19670           POPJ    P,              ;AND RETURN\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 48\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                                19690   IFE     WCH,<\r
+                                19700   ;DTA TO DTA MAINTAIN BITS 18-23 OF E+2 IF SET\r
+                                19710   ;DSK TO DSK NO TRANSLATION (E+2)\r
+                                19720   ;DSK TO DTA TRANSLATE E+3 (LHS) INTO E+2 (18-23)\r
+                                19730   ;DTA TO DSK NO TRANSLATION (E+2)\r
+                                19740   ;THIS ROUTINE ENSURES "SAVE" FILES MAINTAIN\r
+                                19750   ;CORRECT DATA FOR LOADING.  FOR DSK INPUT\r
+                                19760   ;A "SAVE" FILE IS ONE WITH THE EXTENSION\r
+                                19770   ;"SAV". E+3 = (-[(200XN)+NO. WDS IN LAST BLOCK]\r
+                                19780   ;IN LHS TRANSLATE TO NO. 1K BLOCKS NEEDED\r
+                                19790   ;TO LOAD FILE - BEFORE IT IS EXPANDED IN CORE.\r
+\r
+        002412' 606740  020000  19810   OKBLKS: TRNN    CALFLG,RXFLG    ;(RX)?\r
+        002413' 254000  002422' 19820           JRST    OKBLK0          ;NO\r
+        002414' 200000  004647' 19830           MOVE    0,MATCH         ;GET FILE NAME\r
+        002415' 554040  004650' 19840           HLRZ    T1,MATCH+1      ;AND EXT.\r
+        002416' 312000  003730' 19850           CAME    0,STAR          ;SKIP IF NAME IS "*"\r
+        002417' 202000  004044' 19860           MOVEM   0,DTON          ;OTHERWISE REPLACE NAME\r
+        002420' 302040  120000  19870           CAIE    T1,(SIXBIT /*/) ;SAME FOR EXT\r
+        002421' 506040  004045' 19880           HRLM    T1,DTON+1\r
+        002422' 200000  004044' 19890   OKBLK0: MOVE    0,DTON          ;GET OUTPUT FILE NAME\r
+        002423' 554040  004045' 19900           HLRZ    T1,DTON+1       ;AND EXT\r
+        002424' 302040  120000  19910           CAIE    T1,(SIXBIT /*/) ;IS IT "*"\r
+        002425' 316000  003730' 19920           CAMN    0,STAR          ;IS IT "*"\r
+        002426' 254000  002033' 19930           JRST    ERR4B           ;YES, ERROR\r
+\r
+                                19950   REPEAT 0,<                      ;NEEDS FIX TO TENDMP OR MONITOR\r
+                                19960           TRNE    AUXFLG,DTAOUT   ;OUTPUT TO DTA?\r
+                                19970           CAIE    T1,(SIXBIT /SAV/) ;AND A SAV FILE?\r
+                                19980           SKIP    1               ;NO\r
+                                19990           UGETF   OUT,0           ;SET TO FIRST FREE BLOCK\r
+                                20000   >\r
+\r
+                                20020   IFN FTDSK,<TRC  AUXFLG,DSKIN+DSKOUT     ;DSK I/O\r
+                                20030           TRCN    AUXFLG,DSKIN+DSKOUT\r
+                                20040           POPJ    P,                      ;YES, EXIT\r
+                                20050           TRC     AUXFLG,DTAIN+DTAOUT     ;NO\r
+                                20060           TRCE    AUXFLG,DTAIN+DTAOUT     ;DTA I/O\r
+                                20070           JRST    OKBLK1                  ;NO>\r
+        002427' 135000  003716' 20080           LDB     0,OKB                   ;DTA I/O - 1K BLKS\r
+        002430' 137000  003715' 20090           DPB     0,OKBD                  ;DEPOSIT IN DTON\r
+        002431' 263240  000000  20100           POPJ    P,\r
+\r
+                                20120   IFN FTDSK,<\r
+                                20130   OKBLK1: TRC     AUXFLG,DTAIN+DSKOUT     ;DTA-TO-DSK\r
+                                20140           TRCN    AUXFLG,DTAIN+DSKOUT\r
+                                20150           POPJ    P,                      ;YES\r
+                                20160           TRC     AUXFLG,DSKIN+DTAOUT     ;NO,DSK-TO-DTA?\r
+                                20170           TRCE    AUXFLG,DSKIN+DTAOUT     ;NO\r
+                                20180           POPJ    P,\r
+                                20190           HLRZ    0,ZRF+1                 ;YES DSK-TO-DTA\r
+                                20200   IFE DISK30,<\r
+                                20210           CAIE    0,(SIXBIT /SAV/)        ;GET LOOKED UP EXT,(INPUT).\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 48-1\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                                20220           >\r
+                                20230   IFN DISK30,<CAIE 0,SIXBIT /SVE/>\r
+                                20240           POPJ    P,\r
+                                20250           HLRO    T1,ZRF+3                ;EXTENSION=SAV\r
+                                20260           MOVNS   T1                      ;WORD COUNT\r
+                                20270           IDIVI   T1,2000                 ;DIVIDE BY 1K CORE(OCTAL LOCS.)\r
+                                20280           JUMPN   T2,.+2\r
+                                20290           SOJ     T1,                     ;N-1\r
+                                20300           DPB     T1,OKBD\r
+                                20310           POPJ    P,>>\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 49\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+\r
+                                20340   IFN FTDSK,<\r
+                                20350   ;ARE WE DOING (XD) FROM DSK? IF NOT, EXIT.\r
+                                20360   ;SEE IF CURRENT FILE SELECTED IN ZRF IS IN THE\r
+                                20370   ;LIST OF FILES NOT TO BE COPIED. (POPJ IF IT IS)\r
+                                20380   \r
+                                20390   XDDSK:  TRC     FLAG,XFLG+DFLG          ;COMPLEMENT\r
+                                20400           TRCN    FLAG,XFLG+DFLG          ;RESET AND TEST\r
+                                20410           TRNN    AUXFLG,DSKIN            ;/X AND /D WERE SET\r
+                                20420           JRST    CPOPJ1                  ;NOT DSKIN SO COPY FILE\r
+                                20430           HRROI   T1,-12                  ;SET TO LOOP NAMTAB\r
+                                20440   XDDSK2: MOVE    T2,ZRF                  ;GET FILE NAME\r
+                                20450           SKIPN   T3,NAMTAB+12(T1)        ;END OF TABLE ENTRIES?\r
+                                20460           JRST    CPOPJ1                  ;YES, EXIT\r
+                                20470           CAME    T2,T3                   ;FN IS * OR MATCH?\r
+                                20480           CAMN    T3,STAR\r
+                                20490           SKIP    1                       ;YES, * OR MATCH?\r
+                                20500           JRST    XDDSK1                  ;NO MATCH\r
+                                20510           HLLZ    T2,ZRF+1                ;GET EXT\r
+                                20520           SKIPN   T3,NAMTAB+24(T1)        ;NO EXT MATCH WANTED\r
+                                20530           POPJ    P,                      ;EXIT THEN\r
+                                20540           CAME    T2,T3                   ;EXT IS * OR MATCH?\r
+                                20550           CAMN    T3,STAR\r
+                                20560           POPJ    P,                      ;FN EX MATCH, NO COPY\r
+                                20570   XDDSK1: AOJL    T1,XDDSK2               ;TRY ANOTHER FOR MATCH\r
+                                20580           JRST    CPOPJ1                  ;SEARCHED TABLE, NO MATCH>\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 50\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                                20600   ;ROUTINE TO DELETE OR RENAME FILES ON DTA OR DSK OR SET UP NAMTAB\r
+                                20610   ;FOR (DX) (DISK ONLY)\r
+\r
+        002432' 602300  002000  20630   DTDELE: TRNE    FLAG,XFLG       ;/X\r
+        002433' 254000  002443' 20640           JRST    DELE1           ;YES\r
+        002434' 606300  000010  20650           TRNN    FLAG,DFLG       ;/D NEED EXPLICIT DEVICE\r
+        002435' 254000  002440' 20660           SKIP    2\r
+        002436' 606740  000200  20670           TRNN    CALFLG,DVSWTH   ;-1 IF DEVICE SEEN\r
+        002437' 254000  002122' 20680           JRST    ERR8            ;NO, ERROR\r
+        002440' 200000  004634' 20690           MOVE    0,ODEV          ;OUTPUT DEVICE\r
+        002441' 202000  004637' 20700           MOVEM   0,DEVICE        ;NO,SET DEVICE FOR INPUT\r
+        002442' 202000  004050' 20710           MOVEM   0,DEVA\r
+        002443' 620540  261500  20720   DELE1:  TRZ     AUXFLG,DTAIN+CDRIN+TTYIN+PPTIN+MTAIN+DSKIN\r
+        002444' 260240  002132' 20730           PUSHJ   P,CHECK1        ;RESET INPUT DEVICE DESCRP\r
+        002445' 201000  003766' 20740           MOVEI   0,NAMTAB        ;FOR /R GET NEW NAME\r
+        002446' 505000  004044' 20750           HRLI    0,DTON          ;SET TO BLT OUTPUT DIRECT ENTRY\r
+        002447' 251000  003771' 20760           BLT     0,NAMTAB+3      ;TO NAMTAB\r
+\r
+        002450' 606540  060000  20780           TRNN    AUXFLG,DTAIN+DSKIN\r
+        002451' 254000  002066' 20790           JRST    ERR5            ;NOT DTA OR DSK\r
+        002452' 260240  002746' 20800           PUSHJ   P,FNSET         ;SET UP CALFLG CORRECTLY\r
+        002453' 602300  002000  20810           TRNE    FLAG,XFLG       ;/X?\r
+        002454' 254000  002456' 20820           JRST    DTD1            ;YES, (DX). RX ILLEGAL\r
+                                20830   IFN FTDSK,<TRNE AUXFLG,DSKOUT   ;NO, HAS TO BE /D OR /R\r
+                                20840           JRST    DSKDR0          ;ON DSK>\r
+        002455' 254000  002460' 20850           JRST    DTADR           ;OR DTA\r
+\r
+        002456'                 20870   DTD1:\r
+                                20880   IFN FTDSK,<TRNE AUXFLG,DSKIN    ;DSK INPUT?\r
+                                20890           JRST    DTD1A           ;YES>\r
+        002456' 260240  003271' 20900           PUSHJ   P,DTCHECK       ;NO, HAS TO BE DTA, GET DIR\r
+        002457' 254000  002466' 20910           JRST    DELE3           ;DELETE, FILES FROM DIR\r
+                                20920   IFN FTDSK,<\r
+                                20930   DTD1A:  SETZM   NAMTAB          ;COLLECT NAMES FOR DX, DSK SOURCE\r
+                                20940           MOVE    T1,[XWD NAMTAB,NAMTAB+1]\r
+                                20950           BLT     T1,NAMTAB+23    ;FIRST CLEAR TABLE\r
+                                20960           MOVEI   T1,NAMTAB       ;LOCATION OF NAMTAB\r
+                                20970           MOVEM   T1,LOCNAM\r
+                                20980   DTD4:   MOVE    0,FILNAM\r
+                                20990           JUMPE   0,DTD4A         ;FN=0 ILLEGAL\r
+                                21000           MOVE    T1,LOCNAM\r
+                                21010           MOVEM   0,(T1)          ;STORE FILENAME FROM CS\r
+                                21020           MOVE    0,FILEX         ;STORE FILE EXT\r
+                                21030           MOVEM   0,12(T1)        ;TABLE FULL?\r
+                                21040           MOVEI   T2,NAMTAB+11\r
+                                21050           CAMN    T2,T1\r
+                                21060           SOS     ESWTCH          ;YES\r
+                                21070           SKIPE   ESWTCH          ;NO, END OF CS SCAN?\r
+                                21080           JRST    DTD2            ;END OF NAME PROCESSING\r
+                                21090           AOS     T1,LOCNAM       ;SET TO STORE IN NEXT SLOT NAMTAB\r
+                                21100   DTD4B:  PUSHJ   P,DESCRP        ;NO, GET NEXT FILENAME FROM CS\r
+                                21110           TRNE    CALFLG,NEWPP!NEWDEV\r
+                                21120           JRST    ERR5A           ;ERROR, NEW DEV OR# PP\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 50-1\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                                21130           JRST    DTD4\r
+                                21140   DTD4A:  PUSHJ   P,ERR3A\r
+                                21150           JRST    DTD4B\r
+                                21160   \r
+                                21170   ;END OF CS OR NAMTAB FULL\r
+                                21180   DTD2:   PUSHJ   P,ININIT        ;INIT INPUT FILE\r
+                                21190           MOVEI   T1,1            ;SET TO RETURN DTCOPY+1\r
+                                21200           JRST    DTD5>\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 51\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                                21220   ;ROUTINE TO DELETE OR RENAME FILES ON DTA\r
+\r
+        002460' 260240  003271' 21240   DTADR:  PUSHJ   P,DTCHECK       ;GO GET DTA DIRECTORY\r
+        002461' 200040  003742' 21250           MOVE T1,IBF             ;CURRENT INPUT BUFFER\r
+                                21260   IFN WCH,<\r
+                                21270           USETO OUT,1             ;TRY TO WRITE OUTPUT TAPE\r
+                                21280           >                       ;DETERMINE IF WRITE LOCKED\r
+                                21290   IFE WCH,<\r
+        002462' 075100  000144  21300           USETO OUT,144>          ;THIS SHOULD GIVE ERROR MSG\r
+        002463' 067101  000000  21310           OUTPUT OUT,(T1)         ;IF DTA WRITE LOCKED\r
+        002464' 260240  003271' 21320           PUSHJ P,DTCHECK         ;GO GET DTA DIRECTORY\r
+\r
+        002465' 260240  002711' 21340           PUSHJ   P,INFO          ;WRITE "FILES DELETED/RENAME\r
+\r
+                                21360   ;*********************************************************************\r
+\r
+\r
+                                21390   ;LOOP TO DELETE/RENAME. FOR (DX) DELETE FILES FROM DTA DIR\r
+                                21400   ;THEN USE REVISED DIRECTORY TO COPY ALL REMAINING FILES\r
+\r
+\r
+        002466' 260240  002566' 21430   DELE3:  PUSHJ   P,LOOK          ;GET FILE TO DELETE OR RENAME FROM CS\r
+        002467' 254000  002513' 21440           JRST    DELE5           ;NO MORE FILES\r
+        002470' 606300  002000  21450           TRNN    FLAG,XFLG       ;/X?\r
+        002471' 260240  002743' 21460           PUSHJ   P,INFO3         ;PRINT FILENAME-EXT\r
+        002472' 200040  004012' 21470           MOVE    T1,DIRST        ;GOT A MATCH - PROCESS IT\r
+        002473' 602300  000100  21480           TRNE    FLAG,RFLG       ;AND IT IS AT (T5) IN (DTA) DIR\r
+        002474' 254000  002522' 21490           JRST    DTRNAM          ;RENAME\r
+                                21500   IFN WCH,<\r
+                                21510           SKIPA   T2,T1\r
+                                21520           ADDI    T2,4\r
+                                21530           SKIPE   4(T2)\r
+                                21540           JRST    .-2\r
+                                21550           HRLS    T1\r
+                                21560           ADDI    T1,4            ;GET TO END OF NAMES\r
+                                21570           MOVSS   T1              ;BLOCK UP DIR\r
+                                21580           BLT     T1,-1(T2)       ;ZERO OUT LAST 4 WORDS\r
+                                21590           SETZM   (T2)\r
+                                21600           SETZM   1(T2)\r
+                                21610           SETZM   2(T2)\r
+                                21620           SETZM   3(T2)\r
+                                21630           MOVE    T1,DIRST1\r
+                                21640           MOVEM   T1,DIRST\r
+                                21650           JRST    DELE3>\r
+                                21660   IFE WCH,<\r
+        002475' 402001  000000  21670           SETZM   (T1)            ;DELETE FILENAME IN CORE DIRECT\r
+        002476' 402001  000026  21680           SETZM   26(T1)          ;DELETE EXT\r
+        002477' 274040  004013' 21690           SUB     T1,DIRST1       ;GET FILE "NUMBER" (POS IN DIRECT)\r
+        002500' 201140  001102  21700           MOVEI   T3,1102         ;TO LOOK AT ALL BLOCKS\r
+        002501' 205100  440500  21710           MOVSI   T2,(POINT 5,0)\r
+        002502' 540100  004013' 21720           HRR     T2,DIRST1       ;TO CALCULATE ADDRESS OF FIRST WORD\r
+        002503' 275100  000122  21730           SUBI    T2,122          ;OF BLOCK TABLE IN DIRECTORY\r
+        002504' 363140  002466' 21740   DELE2:  SOJLE   T3,DELE3        ;LOOK AT 1101 BLOCKS\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 51-1\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+        002505' 134000  000002  21750           ILDB    0,T2            ;GET BLOCK NUMBER\r
+        002506' 312000  000001  21760           CAME    0,T1            ;IS IT SAME AS FILE "NUMBER"\r
+        002507' 254000  002504' 21770           JRST    DELE2           ;NO IGNORE\r
+        002510' 400000  000000  21780           SETZ    0,              ;FREE THE BLOCKS OF THIS FILE\r
+        002511' 137000  000002  21790           DPB     0,T2            ;CLEAR OUT BLOCK NUMBER\r
+        002512' 254000  002504' 21800           JRST    DELE2>          ;LOOP ON 1102 BLOCKS\r
+        002513' 200040  003742' 21810   DELE5:  MOVE    T1,IBF          ;LOC OF INPUT BUFFER\r
+        002514' 602300  002000  21820           TRNE    FLAG,XFLG       ;DX SWITCH?\r
+        002515' 254000  002543' 21830           JRST    DTD6            ;YES, NOW MUST COPY REMAINING FILES\r
+                                21840   IFN WCH,<\r
+                                21850           USETO   OUT,1>\r
+                                21860   IFE WCH,<\r
+        002516' 075100  000144  21870           USETO   OUT,144>\r
+        002517' 067101  000000  21880           OUTPUT  OUT,(T1)        ;OUTPUT DTA DIRECTORY\r
+        002520' 071040  000000  21890           RELEAS  CON,            ;OUTPUT DELETE OR RENAME INFO TO TTY\r
+        002521' 254000  000415' 21900           JRST    MAINB\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 52\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                                21920   ;ROUTINE TO RENAME FILE ON DECTAPE\r
+\r
+        002522' 260240  002553' 21940   DTRNAM: PUSHJ   P,RENAME\r
+        002523' 402000  004046' 21950           SETZM   DTON+2          ;MAKE MONITOR SUPPLY\r
+        002524' 402000  004047' 21960           SETZM   DTON+3          ;DATE TIME\r
+        002525' 076100  004044' 21970           LOOKUP  OUT,DTON        ;LOOK UP FILENAME-EXT ON OUTPUT DEV\r
+        002526' 254000  002530' 21980           SKIP    1               ;NO FILE ALREADY OF DESTINATION NAME\r
+        002527' 254000  002536' 21990           JRST    DTRNM1\r
+        002530' 200000  004044' 22000           MOVE    0,DTON          ;RENAME, FILENAME\r
+        002531' 322000  002466' 22010           JUMPE   0,DELE3         ;BUT NOT IF ZERO\r
+        002532' 202001  000000  22020           MOVEM   0,(T1)          ;PUT IN DIRECTORY\r
+        002533' 200000  004045' 22030           MOVE    0,DTON+1        ;GET EXT\r
+                                22040   IFE WCH,<\r
+        002534' 502001  000026  22050           HLLM    0,26(T1)>       ;RENAME, EXT\r
+                                22060   IFN WCH,<\r
+                                22070           HLLM    0,1(T1)>\r
+        002535' 254000  002466' 22080           JRST    DELE3\r
+        002536' 550100  003742' 22090   DTRNM1: HRRZ    T2,IBF  ; GET PROTECTION DIR SLOT\r
+        002537' 135000  004704' 22100           LDB     0,[POINT 5,17(T2),14]\r
+        002540' 302000  000036  22110           CAIE    0,36            ; FILE PROTECTION ?\r
+        002541' 254000  001762' 22120           JRST    ERR9            ; NO,ILLEGAL FILE NAME\r
+        002542' 254000  002466' 22130           JRST    DELE3           ; RENAME DONE AT MAINB\r
+\r
+                                22150   ;END OF LOOP\r
+                                22160   ;*********************************************************************\r
+                                22170   ;DX SWITCH ON, COPY ALL BUT SPECIFIED FILES. I.E. THOSE NOT DELETED\r
+\r
+        002543' 201040  000000  22190   DTD6:   MOVEI   T1,0            ;SET TO RETURN TO DTCOPY\r
+        002544' 205000  120000  22200   DTD5:   MOVSI   0,(SIXBIT /*/)\r
+        002545' 202000  004040' 22210           MOVEM   0,FILNAM        ;FORCE COPY-ALL\r
+        002546' 202000  004041' 22220           MOVEM   0,FILEX         ;BY MAKING FILE-EXT=*.*\r
+        002547' 260240  002746' 22230           PUSHJ   P,FNSET         ;FIND DETAILS OF FILE-EXT\r
+        002550' 602540  020000  22240           TRNE    AUXFLG,DTAIN    ;DTA INPUT\r
+        002551' 260240  003277' 22250           PUSHJ   P,DTCH1         ;INIT DIRST,DIRST1\r
+                                22260   IFN RIMSW,      <\r
+                                22270           TLNE    FLAG,RIMFLG     ;NO\r
+                                22280           JRST    RIMTB\r
+                                22290           >\r
+        002552' 254001  002224' 22300           JRST    DTCOPY(T1)\r
+\r
+\r
+                                22330   ;SET UP OUTPUT DIRECTORY ENTRY FOR RENAME\r
+                                22340   ;ONLY ONE FILE NAME ALLOWED, BUT MAY BE *.EXT OR FN.*\r
+\r
+        002553' 331000  004134' 22360   RENAME: SKIPL   ESWTCH          ;SKIP IF CR,LF SEEN IN C.S.\r
+        002554' 254000  002040' 22370           JRST    ERR6A           ;ONLY 1 SOURCE FILE DESCRIPTOR ALLOWED\r
+        002555' 554000  003767' 22380           HLRZ    0,NAMTAB+1      ;GET EXT\r
+        002556' 306000  120000  22390           CAIN    0,(SIXBIT /*/)  ;USE SPEC. EXTENSION, BUT IF\r
+        002557' 554000  004053' 22400           HLRZ    0,ZRF+1         ;EXT.=*, USE SOURCE EXTENSION\r
+        002560' 506000  004045' 22410           HRLM    0,DTON+1        ;USE SPECIFIED EXT\r
+        002561' 200100  003766' 22420           MOVE    T2,NAMTAB       ;USE SPEC. FN, BUT IF\r
+        002562' 316100  003730' 22430           CAMN    T2,STAR         ;FN=* OR 0, USE SOURCE FILENAME\r
+        002563' 200100  004052' 22440           MOVE    T2,ZRF          ;SOURCE FILE NAME=DEST\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 52-1\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+        002564' 202100  004044' 22450           MOVEM   T2,DTON         ;USE SPECIFIED FILENAME\r
+        002565' 263240  000000  22460           POPJ    P,\r
+\r
+\r
+\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 53\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                                22510   ;THIS ROUTINE GETS NEXT FILENAME.EXT FROM CS\r
+                                22520   ;THEN SEES IF ONE IN DIRECTORY MATCHES\r
+                                22530   ;IF IT DOES - EXIT IS CPOPJ1\r
+                                22540   ;NO-MORE-FN.EX-TO-HANDLE-EXIT IS POPJ\r
+                                22550   ;PREPARE ZRF FOR A "LOOKUP" ON THE NEXT REQUESTED FILE.\r
+\r
+        002566' 602740  000001  22570   LOOK:   TRNE    CALFLG,FNEX     ;DOES FILNAM, FILEX CONTAIN\r
+        002567' 254000  002572' 22580           JRST    LOOK6           ;A FILE TO THINK ABOUT? YES\r
+        002570' 260240  002767' 22590   LOOK01: PUSHJ   P,LOOKA         ;GET ONE (NOTE: DEVICE MAY ALTER)\r
+        002571' 263240  000000  22600           POPJ    P,              ;NONE, END OF CS\r
+                                22610                                   ;RETURN SKIP FROM LOOKA\r
+        002572' 200100  004041' 22620   LOOK6:  MOVE    T2,FILEX        ;GET FILE EXT INTO T2\r
+        002573' 336040  004040' 22630           SKIPN   T1,FILNAM       ;FILNAME AND EXT=0?\r
+        002574' 332100  004041' 22640           SKIPE   T2,FILEX\r
+        002575' 254000  002577' 22650           SKIP    1               ;EITHER FN OR EX N.E.0\r
+        002576' 254000  002650' 22660           JRST    LOOK7C          ;FN.EX=0, ONE FILE COPY\r
+        002577' 312040  003730' 22670           CAME    T1,STAR         ;FILNAME OR EXT=*?\r
+        002600' 316100  003730' 22680           CAMN    T2,STAR\r
+        002601' 254000  002640' 22690           JRST    LOOK7A          ;FN OR EX=*, MANY FILES \r
+\r
+        002602' 602540  060000  22710           TRNE    AUXFLG,DTAIN+DSKIN      ;DONT REQUIRE FILENAME\r
+        002603' 322040  002616' 22720           JUMPE   T1,LOOK6C       ;HERE FOR 0.EX,FN.EX OR FN.0,0.EX ILLEGAL\r
+        002604' 620740  000001  22730   LOOK7B: TRZ     CALFLG,FNEX     ;IF HERE, ONLY ONE FILE WAS ENTAILED IN REQUEST.\r
+        002605' 606540  060000  22740           TRNN    AUXFLG,DTAIN+DSKIN\r
+        002606' 254000  002635' 22750           JRST    LOOK4           ;GOT A FILE TO HANDLE\r
+\r
+        002607' 260240  002662' 22770   LOOK8:  PUSHJ   P,PICUP         ;GET A FILE (ANY) FROM DIRECTORY\r
+        002610' 254000  002623' 22780           JRST    LOOK2           ;WE GOT A FILE, DOES IT MATCH?\r
+        002611' 622740  000001  22790           TRZE    CALFLG,FNEX     ;SEE IF A PARTIC. FILE WAS REQUESTED?\r
+        002612' 254000  002620' 22800           JRST    LOOK6D          ;NO\r
+        002613' 254000  002616' 22810           JRST    LOOK6C          ;YES\r
+\r
+        002614' 260240  002005' 22830   LOOK6A: PUSHJ   P,ERR3A\r
+        002615' 254000  001107' 22840           JRST    IOERRN          ;NO RECOVERY\r
+        002616' 260240  002005' 22850   LOOK6C: PUSHJ   P,ERR3A\r
+        002617' 254000  002570' 22860           JRST    LOOK01          ;GET NEXT FILE FROM CS\r
+\r
+        002620' 626740  000040  22880   LOOK6D: TRZN    CALFLG,ASTFLG   ;DID WE FIND AT LEAST ONE\r
+        002621' 260240  002005' 22890           PUSHJ   P,ERR3A         ;NO, PRINT MSG.\r
+        002622' 254000  002566' 22900           JRST    LOOK            ;GET NEXT FILE FROM CS\r
+                                22910   ;CHECK IF FILE.EXT IN DIRECTORY MATCHES FILE TO /D,/R\r
+                                22920   ;NOTE WE MAY HAVE *.EXT,FIL.*, OR *.*\r
+\r
+\r
+        002623' 606740  000004  22950   LOOK2:  TRNN    CALFLG,MATFN    ;SHOULD FILENAMES MATCH\r
+        002624' 254000  002630' 22960           JRST    LOOK3           ;NO\r
+        002625' 200040  004040' 22970           MOVE    T1,FILNAM       ;YES\r
+        002626' 312040  004052' 22980           CAME    T1,ZRF\r
+        002627' 254000  002607' 22990           JRST    LOOK8           ;NO MATCH\r
+\r
+        002630' 606740  000002  23010   LOOK3:  TRNN    CALFLG,MATEX    ;SHOULD EXTENSIONS MATCH\r
+        002631' 254000  002635' 23020           JRST    LOOK5           ;NO\r
+        002632' 200040  004041' 23030           MOVE    T1,FILEX        ;YES\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 53-1\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+        002633' 312040  004053' 23040           CAME    T1,ZRF+1\r
+        002634' 254000  002607' 23050           JRST    LOOK8           ;NO MATCH\r
+                                23060   LOOK5:  IFN DISK30,<\r
+                                23070           TRNN    AUXFLG,DSKIN    ;DSK INPUT?\r
+                                23080           JRST    LOOK4           ;NO\r
+                                23090           LDB     T1,UFDIN+1      ;PICKUP P-P# IN DIRECTORY\r
+                                23100           HRRZM   T1,T2\r
+                                23110           CAME    T2,MASK         ;COMPARE WITH OWN P-P#\r
+                                23120           JRST    LOOK8           ;NO MATCH>\r
+        002635' 660540  002000  23130   LOOK4:  TRO     AUXFLG,READ1    ;READY FOR FIRST READ\r
+        002636' 660740  000040  23140           TRO     CALFLG,ASTFLG   ;FOUND A FILE *.EXT, F.*,*.*\r
+        002637' 254000  001707' 23150           JRST    CPOPJ1          ;MATCH OR NO CARES\r
+\r
+                                23170   ;FILENAME OR EXT=*\r
+        002640' 322100  002642' 23180   LOOK7A: JUMPE   T2,.+2          ;EXT=0?\r
+        002641' 316100  003730' 23190           CAMN    T2,STAR         ;NO,\r
+        002642' 312040  003730' 23200           CAME    T1,STAR\r
+        002643' 254000  002645' 23210           SKIP    1\r
+        002644' 254000  002655' 23220           JRST    LOOK1           ;*.* ALWAYS O.K. AND *\r
+        002645' 606540  060000  23230           TRNN    AUXFLG,DSKIN+DTAIN\r
+        002646' 254000  002614' 23240           JRST LOOK6A     ;*.A OR * ON NON-DIRECT DEV\r
+        002647' 254000  002607' 23250           JRST    LOOK8\r
+\r
+        002650' 602540  060000  23270   LOOK7C: TRNE    AUXFLG,DSKIN+DTAIN\r
+        002651' 254000  002616' 23280           JRST    LOOK6C          ;0.0 ON DIR DEVICE\r
+        002652' 402000  004052' 23290           SETZM   ZRF\r
+        002653' 402000  004053' 23300           SETZM   ZRF+1\r
+        002654' 254000  002604' 23310           JRST    LOOK7B          ;0.0 ON NON-DIR. DEV.\r
+\r
+        002655' 602540  060000  23330   LOOK1:  TRNE    AUXFLG,DTAIN+DSKIN\r
+        002656' 254000  002607' 23340           JRST    LOOK8\r
+        002657' 402000  004052' 23350           SETZM   ZRF\r
+        002660' 402000  004053' 23360           SETZM   ZRF+1\r
+        002661' 254000  002635' 23370           JRST    LOOK4\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 54\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                                23390   ;ROUTINE TO GET NEXT FILE NAME FROM DIRECTORY\r
+                                23400   ;FILNAM, FILEX CONTAIN THE FILE NAME. EXT TO BE\r
+                                23410   ;MATCHED WITH DIR. NAMES. PUT SUGGESTED FILE\r
+                                23420   ;NAME EXT IN ZRF, ZRF+1 AND #P-P IN ZRF+3\r
+                                23430   ;NOTE THAT WE HAVE TO HANDLE *.EXT,FILE.*\r
+\r
+        002662'                 23450   PICUP:\r
+                                23460   IFN FTDSK,<TRNN AUXFLG,DSKIN    ;DSK INPUT?\r
+                                23470           JRST    PICUP2          ;N0, DTA\r
+                                23480           SOSLE   UFDIN+2         ;YES\r
+                                23490           JRST    .+3\r
+                                23500   PICUP1: PUSHJ   P,UIN           ;INPUT USER'S FILE DIRECTORY\r
+                                23510           JRST    CPOPJ1          ;EOF ON DSK\r
+                                23520           ILDB    0,UFDIN+1       ;PICK UP FILENAME\r
+                                23530           JUMPE   0,PICUP1        ;IGNORE NULL\r
+                                23540           MOVEM   0,ZRF           ;SET FILE NAME\r
+                                23550           MOVE    0,FNPPN\r
+                                23560           MOVEM   0,ZRF+3         ;SET DSK #P-P\r
+                                23570           SOS     UFDIN+2         ;COUNT DOWN FOR NEXT TIME\r
+                                23580           ILDB    0,UFDIN+1       ;SET FILE EX\r
+                                23590           HLLZM   0,ZRF+1\r
+                                23600   IFN DISK30,<\r
+                                23610           IBP     UFDIN+1         ;INCREMENT POINTER TO GET PROJ,PROG #\r
+                                23620           IBP     UFDIN+1>\r
+                                23630           POPJ    P,>\r
+\r
+        002662'                 23650   PICUP2:\r
+                                23660   IFN WCH,<\r
+                                23670           MOVE    T5,DIRST        ;DIRST=LOC 4 FIRST TIME THRU\r
+                                23680           ADDI    T5,4            ;CALCULATE FIRST/NEXT FILENAME\r
+                                23690           MOVEM   T5,DIRST\r
+                                23700           MOVE    0,(T5)\r
+                                23710           JUMPE   0,CPOPJ1                ;NO MORE FILENAMES IN DIRECTORY\r
+                                23720           MOVEM   0,ZRF\r
+                                23730           MOVE    0,1(T5)>\r
+                                23740   IFE WCH,<\r
+        002662' 200140  004013' 23750           MOVE    T3,DIRST1       ;SETUP TO CHECK ALL FILENAME SLOTS\r
+        002663' 271140  000026  23760           ADDI    T3,26           ;IN DIRECTORY (22 FILE NAMES)\r
+        002664' 200440  004012' 23770           MOVE    T5,DIRST        ;LOC OF FIRST/NEXT FILE\r
+        002665' 271440  000001  23780   PICUP4: ADDI    T5,1            ;\r
+        002666' 313440  000003  23790           CAMLE   T5,T3           ;END OF FILE SLOTS?\r
+        002667' 254000  001707' 23800           JRST    CPOPJ1          ;END OF FILE NAMES\r
+        002670' 202440  004012' 23810           MOVEM   T5,DIRST        ;NEXT SLOT TO LOOK AT\r
+        002671' 200011  000000  23820           MOVE    0,(T5)          ;GOT FILE NAME FROM DIRECT\r
+        002672' 322000  002665' 23830           JUMPE   0,PICUP4        ;IGNORE IF 0\r
+        002673' 202000  004052' 23840           MOVEM   0,ZRF\r
+        002674' 200011  000026  23850           MOVE    0,26(T5)>       ;GET EXT ETC\r
+        002675' 512000  004053' 23860           HLLZM   0,ZRF+1\r
+        002676' 200000  004043' 23870           MOVE    0,PP\r
+        002677' 202000  004055' 23880           MOVEM   0,ZRF+3\r
+        002700' 263240  000000  23890           POPJ    P,\r
+\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 55\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                                23910   ;READ DTA DIR. AND PREPARE T5 TO PICK UP FIRST ENTRY.\r
+\r
+        002701' 260240  003272' 23930   DTADIR: PUSHJ   P,DTCH2         ;READ DTA DIR INTO INPUT BUF\r
+        002702' 201140  004400' 23940   DTADI1: MOVEI   T3,DBUF         ;SET BLT FROM INBUF TO DBUF\r
+        002703' 504140  000011  23950           HRL     T3,T5           ;FIRST DATA WORD OF DIRECTORY IN T5\r
+                                23960   IFN WCH,<\r
+                                23970           MOVNS   T2\r
+                                23980           BLT     T3,DBUF+176(T2)\r
+                                23990           SETZM   DBUF+177(T2)\r
+                                24000           MOVEI   T5,DBUF-4>\r
+                                24010   IFE WCH,<\r
+        002704' 251140  004576' 24020           BLT     T3,DBUF+176     ;MOVE FROM INBUF TO DBUF\r
+        002705' 201440  004522' 24030           MOVEI   T5,DBUF+123-1>  ;LOC OF FIRST FILE NAME\r
+        002706' 202440  004012' 24040           MOVEM   T5,DIRST        ;T5 POINTS TO FILNAME JUST HANDLED\r
+        002707' 202440  004013' 24050           MOVEM   T5,DIRST1       ;TO RESTORE DIRST\r
+        002710' 263240  000000  24060           POPJ    P,              ;(IE NONE BUT NEXT WILL BE FIRST)\r
+\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 56\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+\r
+                                24100   ;ROUTINE TO OUTPUT FILENAMES THAT WERE DELETED OR RENAMED\r
+                                24110   ;PRINT "FILES DELETED:" OR "FILES RENAMED:"\r
+                                24120   ;ALSO USED TO PRINT "NO FILE NAMED XXX.XXX"\r
+\r
+\r
+        002711' 200040  003756' 24150   INFO:   MOVE    T1,TFO          ;SETUP TTY FOR OUTPUT\r
+        002712' 200100  003753' 24160           MOVE    T2,TFI          ;SAVE BUFFER LOCS\r
+        002713' 260240  001410' 24170           PUSHJ P,INICON          ;INIT TTY\r
+        002714' 562100  003753' 24180           HRROM   T2,TFI          ;SET BUFFER LOCS\r
+        002715' 562040  003756' 24190           HRROM   T1,TFO\r
+        002716' 067040  000000  24200           OUTPUT CON,\r
+        002717' 623540  000100  24210           TLZE    AUXFLG,INFOFL   ;ERROR PRINT ONLY?\r
+        002720' 254000  002007' 24220           JRST    ERR3AA          ;YES\r
+        002721' 606300  000010  24230           TRNN    FLAG,DFLG       ;DELETE?\r
+        002722' 254000  002730' 24240           JRST    INFO1           ;NO, MUST BE RENAME\r
+        002723' 265040  002166' 24250           ERRPN2  </Files deleted:/>\r
+        002724' 433235  462746\r
+        002725' 203114  566312\r
+        002726' 723134  435000\r
+        002727' 254000  002735' 24260           JRST    INFO2\r
+        002730' 476000  004651' 24270   INFO1:  SETOM   RENSN           ;DON'T PRINT IT TWICE\r
+        002731' 265040  002166' 24280           ERRPN2  </Files renamed:/>      ;RENAME (/R)\r
+        002732' 433235  462746\r
+        002733' 203454  567302\r
+        002734' 667134  435000\r
+        002735' 201200  000015  24290   INFO2:  MOVEI   CHR,CR          ;OUTPUT CR/LF\r
+        002736' 260240  002175' 24300           PUSHJ   P,PUTCON        ;ON TTY\r
+        002737' 201200  000012  24310           MOVEI   CHR,LF\r
+        002740' 260240  002175' 24320           PUSHJ   P,PUTCON\r
+        002741' 067040  000000  24330           OUTPUT CON,\r
+        002742' 263240  000000  24340           POPJ    P,\r
+\r
+                                24360   ;**********************************************************************\r
+                                24370   ;PRINT FILENAME.EXT OR [P,P].UFD OF FILE DELETED\r
+\r
+        002743' 201140  004052' 24390   INFO3:  MOVEI   T3,ZRF          ;LOCATION OF FILENAME\r
+        002744' 260240  001146' 24400           PUSHJ   P,FN.EX\r
+        002745' 254000  002735' 24410           JRST    INFO2\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 57\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                                24430   ;/X OR /D. FIND OUT DETAILS OF FILE NAME AND\r
+                                24440   ;EXTENSION (0 FN.EX=*.*) AND ANY CHANGE IN\r
+                                24450   ;SOURCE DEV. SET BITS IN CALFLG.\r
+\r
+        002746' 620740  000037  24470   FNSET:  TRZ     CALFLG,ALLCLF   ;CLEAR FLAGS ON ENTRY\r
+        002747' 660740  000001  24480           TRO     CALFLG,FNEX\r
+        002750' 205000  120000  24490           MOVSI   0,(SIXBIT /*/)  ;* TO AC0\r
+        002751' 312000  004040' 24500           CAME    0,FILNAM        ;FILNAM=* OR 0?\r
+        002752' 336000  004040' 24510           SKIPN   FILNAM\r
+        002753' 254000  002755' 24520           SKIP    1               ;FILENAME = * OR 0\r
+        002754' 660740  000004  24530           TRO     CALFLG,MATFN    ;FILENAME MUST BE MATCHED\r
+        002755' 336000  004041' 24540           SKIPN   FILEX           ;EXT=0?\r
+        002756' 606540  201500  24550           TRNN    AUXFLG, MTAIN+CDRIN+PPTIN+TTYIN ;YES\r
+        002757' 316000  004041' 24560           CAMN    0,FILEX         ;NO, EXT = *?\r
+        002760' 254000  002762' 24570           SKIP    1               ;YES\r
+        002761' 660740  000002  24580           TRO     CALFLG,MATEX    ;FILE EXTENSION MUST BE MATCHED\r
+                                24590   IFN FTDSK,<TRNN    AUXFLG,DSKIN\r
+                                24600           JRST    FNSET1\r
+                                24610           SKIPN   T2,PP\r
+                                24620           JRST    FNSET2          ;IF #P-P=0 IT IS COUNTED AS UNCHANGED\r
+                                24630           CAME    T2,FNPPN\r
+                                24640           TRO     CALFLG,NEWPP    ;CHANGE IN # P-P\r
+                                24650           JRST    FNSET1\r
+                                24660   FNSET2: MOVE    T2,FNPPN        ;IF P-P#=0, SET TO PREVIOUS VALUE\r
+                                24670           MOVEM   T2,PP>\r
+        002762' 200100  004637' 24680   FNSET1: MOVE    T2,DEVICE\r
+        002763' 312100  004050' 24690           CAME    T2,DEVA\r
+        002764' 660740  000010  24700           TRO     CALFLG,NEWDEV   ;CHANGE IN SOURCE DEV.\r
+        002765' 202100  004050' 24710           MOVEM   T2,DEVA         ;SET DEVA=DEVICE\r
+        002766' 263240  000000  24720           POPJ    P,\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 58\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                                24740   ;POPJ EXIT IF END OF COMMAND STRING, OTHERWISE RESET\r
+                                24750   ;POINTER TO START OF DIRECTORY, READING IN NEW DIR.\r
+                                24760   ;IF DEV OR #P-P CHANGED (EXIT CPOPJ1)\r
+                                24770   ;IF DIR. IS ON DSK RESET BY REINIT.\r
+\r
+        002767' 332340  004134' 24790   LOOKA:  SKIPE   T4,ESWTCH               ;MORE C.S.?\r
+        002770' 263240  000000  24800           POPJ    P,                      ;NO\r
+        002771' 260240  000451' 24810           PUSHJ   P,DESCRP                ;YES, GET NEXT FN.EX FROM CS\r
+        002772' 260240  000204' 24820           PUSHJ   P,INLOOK                ;CHECK FOR MTA REQUESTS, MODE\r
+        002773' 260240  000154' 24830           PUSHJ   P,M4                    ;CHECK FOR /I,/B,/H\r
+        002774' 552340  004636' 24840           HRRZM    T4,ININI1              ;SET MODE\r
+        002775' 071240  000000  24850           RELEAS  DIR,\r
+        002776' 606540  201500  24860           TRNN    AUXFLG,MTAIN+CDRIN+PPTIN+TTYIN  ;NON-DIR DEVICE?\r
+        002777' 254000  003002' 24870           JRST    LOOKF\r
+\r
+        003000' 602740  000006  24890           TRNE    CALFLG,MATEX!MATFN      ;YES, NO FN EX BUT *.* OR * ALLOWED\r
+        003001' 254000  002040' 24900           JRST    ERR6A\r
+\r
+        003002' 606300  000010  24920   LOOKF:  TRNN    FLAG,DFLG               ;FOR DELETE, ONE SOURCE FILE\r
+        003003' 254000  003006' 24930           JRST    LOOKB                   ;...\r
+\r
+        003004' 602740  000030  24950           TRNE    CALFLG,NEWDEV!NEWPP     ;ONLY IS PERMITTED\r
+        003005' 254000  002060' 24960           JRST    ERR5A\r
+\r
+        003006' 606740  000030  24980   LOOKB:  TRNN    CALFLG,NEWDEV!NEWPP     ;PREPARE TO LOOK FOR NEW FILE\r
+        003007' 254000  003014' 24990           JRST    LOOKC                   ;NAME AT HEAD OF DIRECTORY\r
+\r
+        003010' 260240  000426' 25010           PUSHJ   P,ININIT                ;INIT INPUT FILE\r
+        003011' 606540  060000  25020           TRNN    AUXFLG,DTAIN+DSKIN\r
+        003012' 254000  001707' 25030           JRST    CPOPJ1\r
+                                25040   IFN FTDSK,<TRNN AUXFLG,DTAIN            ;DTA INPUT?\r
+                                25050           JRST    LOOKD                   ;NO, MUST BE DSK>\r
+        003013' 260240  002701' 25060           PUSHJ   P,DTADIR                ;YES, READ IN DTA DIRECT\r
+\r
+        003014'                 25080   LOOKC:\r
+                                25090   IFN FTDSK,<TRNE    AUXFLG,DSKIN         ;DSK INPUT?\r
+                                25100           JRST    LOOKD                   ;YES>\r
+        003014' 200440  004013' 25110           MOVE    T5,DIRST1               ;NO, RESET DIRECTORY START\r
+        003015' 202440  004012' 25120           MOVEM   T5,DIRST\r
+        003016' 254000  001707' 25130           JRST    CPOPJ1\r
+\r
+                                25150   IFN FTDSK,<\r
+                                25160   LOOKD:  PUSHJ   P,DSKDIR                ;GET USER'S FILE DIRECTORY\r
+                                25170           SETZM   UFDIN+2                 ;DSK DIR BUF EMPTY\r
+                                25180           JRST    CPOPJ1>\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 59\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                                25200   ;ROUTINE TO LIST DTA OR DSK DIRECTORIES\r
+\r
+\r
+        003017' 077100  004044' 25230   DTPDIR: ENTER   OUT,DTON        ;OUTPUT DEV,NROCT ENTRY\r
+        003020' 254000  002024' 25240           JRST    ERR4            ;DIRECTORY FULL\r
+                                25250   IFN FTDSK,<TRNE    AUXFLG,FFLG  ;/F? SHORT FORM?\r
+                                25260           SKIPE   DEVICE          ;INPUT DEVICE SPECIFIED?\r
+                                25270           JRST    PDIR1A          ;YES\r
+                                25280           MOVSI   0,(SIXBIT/DSK/)\r
+                                25290           DEVCHR\r
+                                25300           JUMPE   0,PDIR1A        ;NO DISK\r
+                                25310           HRRZI   0,(SIXBIT /DSK/);ASSUME DSK IF NO DEVICE GIVEN\r
+                                25320           HRLZM   0,DEVICE\r
+                                25330           TROA   AUXFLG,DSKIN     ;SET DSK INPUT\r
+                                25340   PDIR1A: TRNE    AUXFLG,DSKIN    ;DSK INPUT?\r
+                                25350           JRST    DSKLST          ;YES, GO AND TRY TO LIST DSK>\r
+        003021' 606540  020000  25360           TRNN    AUXFLG,DTAIN    ;DECTAPE INPUT?\r
+        003022' 254000  002066' 25370           JRST    ERR5            ;NOT DSK OR DTA. ERROR\r
+\r
+                                25390   ;ROUTINE TO LIST DTA DIRECTORY. /L OR /F SWITCH\r
+\r
+        003023' 260240  003271' 25410   DTALST: PUSHJ   P,DTCHECK       ;CHECK FOR DTA INPUT-MUST BE DECTAPE AND\r
+                                25420                                   ;GET DIRECTORY\r
+        003024' 260240  003205' 25430           PUSHJ   P,CRLF          ;PRINT NO. OF FREE BLOCKS LEFT\r
+        003025' 135040  004705' 25440           LDB     T1,[POINT 5,16(T5),14]\r
+        003026' 302040  000036  25450           CAIE    T1,36           ; SKIP DIR HEADER IF\r
+        003027' 254000  003070' 25460           JRST    PDIR1B          ; DECTAPE HAS NO PROTECTION\r
+U       003030' 334040  004706' 25470           LSTLIN  HEDL1           ; PRINT HEADER\r
+        003031' 260240  000756'\r
+        003032' 134200  000001\r
+        003033' 326200  003031'\r
+        003034' 200100  003736' 25480           MOVE    T2,DTAID\r
+        003035' 322100  003055' 25490           JUMPE   T2,DTALS4\r
+        003036' 201100  000005  25500           MOVEI   T2,5            ; CHARACTER COUNT\r
+        003037' 200000  004707' 25510           MOVE    0,[POINT 6,DTAID]\r
+        003040' 134200  000000  25520           ILDB    CHR,0           ; GET CLASSIFICATION\r
+        003041' 302200  000023  25530           CAIE    CHR,23          ; STD (I.E.=3) ?\r
+        003042' 344100  003052' 25540           AOJA    T2,DTALS3\r
+        003043' 134200  000000  25550   DTALS1: ILDB    CHR,0           ; GET NEXT DIGIT\r
+        003044' 271200  000040  25560           ADDI    CHR,40          ; CONVERT TO ASCII\r
+        003045' 306200  000060  25570           CAIN    CHR,"0"         ; SUPPRESS LEADING ZEROS\r
+        003046' 367100  003043' 25580           SOJG    T2,DTALS1\r
+        003047' 260240  000756' 25590           PUSHJ   P,PUT\r
+        003050' 363100  003055' 25600   DTALS2: SOJLE   T2,DTALS4\r
+        003051' 134200  000000  25610           ILDB    CHR,0\r
+        003052' 271200  000040  25620   DTALS3: ADDI    CHR,40\r
+        003053' 260240  000756' 25630           PUSHJ   P,PUT\r
+        003054' 254000  003050' 25640           JRST    DTALS2\r
+        003055' 201200  000133  25650   DTALS4: MOVEI   CHR,"["\r
+        003056' 260240  000756' 25660           PUSHJ   P,PUT\r
+        003057' 554640  003737' 25670           HLRZ    DOUT,DIRPPN\r
+        003060' 260240  003260' 25680           PUSHJ   P,OUTDEC\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 59-1\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+        003061' 201200  000054  25690           MOVEI   CHR,","\r
+        003062' 260240  000756' 25700           PUSHJ   P,PUT\r
+        003063' 550640  003737' 25710           HRRZ    DOUT,DIRPPN\r
+        003064' 260240  003260' 25720           PUSHJ   P,OUTDEC\r
+        003065' 201200  000135  25730           MOVEI   CHR,"]"\r
+        003066' 260240  000756' 25740           PUSHJ   P,PUT\r
+        003067' 260240  003205' 25750           PUSHJ   P,CRLF\r
+        003070'                 25760   PDIR1B:\r
+\r
+                                25780   IFN WCH,<\r
+                                25790           MOVE    T1,IBF\r
+                                25800           HLRZ    DOUT,1(T1)      ;GET FREE BLOCK POINTER\r
+                                25810           MOVNS   DOUT\r
+                                25820           ADDI    DOUT,1101       ;GET NO. OF FREE BLOCKS LESS FREE BLOCK NO.\r
+                                25830           PUSHJ   P,OUTDEC        ;PRINT RESULT>\r
+                                25840   IFE WCH,<\r
+        003070' 400640  000000  25850           SETZ   DOUT,            ;CLEAR NO. FREE BLOCKS\r
+        003071' 201340  001102  25860           MOVEI   T4,1102         ;OCTAL NO. OF BLOCKS ON DECTAPE\r
+        003072' 205040  440500  25870           MOVSI   T1,(POINT 5,0)  ;5 BIT BYTES\r
+        003073' 550440  003742' 25880           HRRZ    T5,IBF          ;CURRENT INPUT BUFFER\r
+        003074' 271051  000001  25890           ADDI    T1,1(T5)        ;POINTER TO 1ST DATA WORD IN DIRECT\r
+\r
+\r
+        003075' 363340  003101' 25910   PDIR8:  SOJLE   T4,PDIR1        ;ALL THROUGH?\r
+        003076' 134140  000001  25920           ILDB    T3,T1           ;CALCULATE NO. OF FREE BLOCKS\r
+        003077' 326140  003075' 25930           JUMPN   T3,PDIR8\r
+\r
+                                25950                                   ;THIS BLOCK FULL\r
+        003100' 344640  003075' 25960           AOJA    DOUT,PDIR8      ;COUNT NO. WITH ZERO IN\r
+        003101' 260240  003260' 25970   PDIR1:  PUSHJ   P,OUTDEC        ;PRINT RESULT>\r
+        003102' 200000  004710' 25980           MOVE    0,[POINT 6,PDIR7]\r
+        003103' 201100  000022  25990           MOVEI   T2,^D18         ;SET LOOP TO DEPOSIT 18 CHARS\r
+        003104' 260240  003211' 26000           PUSHJ   P,PDIR2         ;PRINT "FREE BLOCKS LEFT" MESSAGE\r
+        003105' 260240  003205' 26010           PUSHJ   P,CRLF          ;CARRIAGE RET, LINEFEED\r
+        003106' 260240  003277' 26020           PUSHJ   P,DTCH1         ;FIX T5, TO POINT AT BEGIN OF DIR\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 60\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                                26040   ;LOOP TO EXAMINE FILE NAMES DTA DIRECTORY\r
+        003107'                 26050   PDIR4:\r
+                                26060   IFE WCH,<\r
+        003107' 336011  000123  26070           SKIPN   123(T5)         ;NULL (=0) FILE NAME?\r
+        003110' 254000  003200' 26080           JRST    PDIR6           ;YES SO LOOK FOR ANOTHER>\r
+                                26090   IFN WCH,<\r
+                                26100           SKIPN   (T5)            ;NULL (=0) FILE NAME?\r
+                                26110           JRST    MAIN1           ;YES, SO END OF DIR.>\r
+        003111' 201100  000006  26120           MOVEI   T2,6            ;TRANSMIT UP TO 6 CHARACTERS\r
+        003112' 205000  440611  26130           MOVSI   0,440600+T5     ;SET UP SOURCE BYTE POINTER\r
+                                26140   IFE WCH,<\r
+        003113' 541000  000123  26150           HRRI    0,123>          ;SET TO PICK UP FILE NAME\r
+        003114' 400340  000000  26160           SETZ   T4,\r
+                                26170   ;FOLLOWING CODE TO OUTPUT PROJ, PROG FILENAME\r
+                                26180   ;*****************************************************************\r
+                                26190   IFE WCH,<\r
+        003115' 554211  000151  26200           HLRZ    CHR,151(T5)     ;GET EXT\r
+        003116' 302200  654644  26210           CAIE    CHR,(SIXBIT/UFD/)       ;UFD?\r
+        003117' 254000  003130' 26220           JRST    PDIR4A          ;NO\r
+\r
+        003120' 554651  000123  26240           HLRZ    DOUT,123(T5)    ;PROJ NO.\r
+        003121' 201100  000756' 26250           MOVEI   T2,PUT\r
+        003122' 260240  003235' 26260           PUSHJ   P,OUTDC1\r
+\r
+        003123' 201200  000054  26280           MOVEI   CHR,COMMA       ;COMMA\r
+        003124' 260240  000756' 26290           PUSHJ   P,PUT\r
+\r
+        003125' 550651  000123  26310           HRRZ    DOUT,123(T5)    ;PROG NO.\r
+        003126' 260240  003235' 26320           PUSHJ   P,OUTDC1\r
+        003127' 254000  003131' 26330           JRST    PDIR4B\r
+                                26340           >\r
+                                26350   ;*********************************************************************\r
+        003130' 260240  003211' 26360   PDIR4A: PUSHJ   P,PDIR2         ;OUTPUT 6-BIT DATA AND INCR DIRECTORY PTR\r
+                                26370   IFE WCH,<\r
+        003131' 510211  000151  26380   PDIR4B: HLLZ    CHR,151(T5)>    ;PICK UP EXTENSION\r
+                                26390   IFN WCH,<\r
+                                26400           HLLZ    CHR,(T5)>\r
+        003132' 205000  440611  26410           MOVSI   0,440600+T5     ;SET BYTE POINTER\r
+                                26420   IFE WCH,<\r
+        003133' 541000  000151  26430           HRRI    0,151>          ;PICK UP EXTENSION\r
+        003134' 201100  000004  26440           MOVEI   T2,4            ;PRINT UP TO 4 CHRS. (PERIOD+3*EXT)\r
+        003135' 326200  003140' 26450           JUMPN   CHR,.+3         ;EXTENSION NULL?\r
+        003136' 260240  003214' 26460           PUSHJ   P,PDIR2A+1      ;YES\r
+        003137' 254000  003142' 26470           SKIP    2               ;NO\r
+        003140' 201200  000016  26480           MOVEI   CHR,PERIOD-40   ;NO, SO PRINT A PERIOD\r
+        003141' 260240  003213' 26490   PDIR3:  PUSHJ   P,PDIR2A        ;OUTPT 6 BIT OR INCR T5\r
+                                26500   IFE WCH,<\r
+        003142' 201200  000040  26510           MOVEI   CHR,SPACE       ;OUTPUT 2 SPACES\r
+        003143' 260240  000756' 26520           PUSHJ   P,PUT\r
+        003144' 260240  000756' 26530           PUSHJ   P,PUT\r
+        003145' 602540  000020  26540           TRNE AUXFLG,FFLG        ;SHORT FORM DIRECT ?\r
+        003146' 254000  003177' 26550           JRST PDIR3A             ;YES VJC 4/16/69\r
+\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 60-1\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+        003147' 400640  000000  26570           SETZ    DOUT,           ;CALCULATE NBR OF BLOCKS PER FILE\r
+        003150' 201340  001101  26580           MOVEI   T4,1101\r
+        003151' 205000  440500  26590           MOVSI   0,(POINT 5,0)\r
+        003152' 550100  003742' 26600           HRRZ    T2,IBF\r
+        003153' 271002  000001  26610           ADDI    0,1(T2)\r
+        003154' 550600  000011  26620           HRRZ    T7,T5\r
+        003155' 275602  000000  26630           SUBI    T7,(T2)\r
+        003156' 134500  000000  26640           ILDB    T6,0            ;LOAD CONTENTS OF S.A.T. BLOCK\r
+        003157' 316500  000014  26650           CAMN    T6,T7           ;COMPARE WITH FILE SLOT NBR\r
+        003160' 271640  000001  26660           ADDI    DOUT,1          ;ADD 1 TO COUNT IF EQUAL\r
+        003161' 367340  003156' 26670           SOJG    T4,.-3\r
+        003162' 260240  003260' 26680           PUSHJ   P,OUTDEC        ;OUTPUT NBR OF BLOCKS PER FILE\r
+        003163' 201200  000011  26690           MOVEI   CHR,TAB\r
+                                26700           >\r
+                                26710   IFN WCH,<\r
+                                26720           AOJ     T5,             ;STEP DIR. POINTER\r
+                                26730           MOVEI   CHR,11\r
+                                26740           PUSHJ   P,PUT           ;OUTPUT A TAB\r
+                                26750           CAIG    T4,7>\r
+        003164' 260240  000756' 26760           PUSHJ   P,PUT\r
+        003165' 135040  004711' 26770           LDB     T1,[POINT 5,DBUF+16,14]\r
+        003166' 302040  000036  26780           CAIE    T1,36\r
+        003167' 254000  003174' 26790           JRST    PDIR3B\r
+        003170' 550040  003742' 26800           HRRZ    T1,IBF\r
+        003171' 276440  000001  26810           SUBM    T5,T1\r
+        003172' 135000  004712' 26820           LDB     0,[POINT 9,DBUF+200(T1),8]\r
+U       003173' 260240  000000* 26830           PUSHJ   P,PROTO         ; OUTPUT PROTECTION\r
+        003174'                 26840   PDIR3B:\r
+                                26850   IFE WCH,<\r
+        003174' 200011  000151  26860           MOVE    0,151(T5)       ;GET ENTRY DATE>\r
+                                26870   IFN WCH,<\r
+                                26880           MOVE    0,-1(T5)        ;GET ENTRY DATE>\r
+        003175' 405000  007777  26890           ANDI    0,7777          ;LEFT BITS ARE IRRELEVENT\r
+        003176' 260240  003224' 26900           PUSHJ   P,DATOUT        ;OUTPUT THE DATE\r
+        003177' 260240  003205' 26910   PDIR3A: PUSHJ   P,CRLF          ;GIVE CR,LF 4/16/69\r
+                                26920   IFN WCH,<\r
+                                26930           AOJA    T5,PDIR4        ;PROCESS NEXT ENTRY>\r
+                                26940   IFE WCH,<\r
+        003200' 550040  003742' 26950   PDIR6:  HRRZ    T1,IBF          ;PROCESS NEXT ENTRY\r
+        003201' 276440  000001  26960           SUBM    T5,T1\r
+        003202' 301040  000026  26970           CAIL    T1,26           ;FILE "NUMBER" OK?\r
+        003203' 254000  000411' 26980           JRST    MAIN1           ;NO, END OF ENTRIES\r
+        003204' 344440  003107' 26990           AOJA    T5,PDIR4        ;END OF LOOP, GET NEXT FILENAME>\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 61\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+\r
+                                27020   IFN FTDSK,<\r
+                                27030   CLRF:   SOS     LIN>\r
+        003205' 201200  000015  27040   CRLF:   MOVEI   CHR,CR          ;OUTPUT CAR. RET.\r
+        003206' 260240  000756' 27050           PUSHJ   P,PUT\r
+        003207' 201200  000012  27060           MOVEI   CHR,LF          ;LINE FEED\r
+        003210' 254000  000756' 27070           JRST    PUT\r
+\r
+        003211' 134200  000000  27090   PDIR2:  ILDB    CHR,0           ;ROUTINE TO OUTPUT 6-BIT DATA\r
+        003212' 606000  777777  27100           TRNN    0,-1            ;PRINT SPACES WHEN PRINTING THE FREE BLOCKS\r
+        003213' 322200  003220' 27110   PDIR2A: JUMPE   CHR,PDIR21      ;TERMINATE ON SPACE\r
+        003214' 271200  000040  27120           ADDI    CHR,40          ;CONVERT TO 7 BIT\r
+        003215' 260240  000756' 27130           PUSHJ   P,PUT           ;OUTPUT CHARACTER\r
+        003216' 271340  000001  27140           ADDI    T4,1\r
+        003217' 367100  003211' 27150           SOJG    T2,PDIR2        ;COUNT DOWN MAX-CHARS COUNTER\r
+                                27160   IFN WCH,<\r
+                                27170   PDIR21: AOJA    T5,CPOPJ        ;STEP AND CONTINUE>\r
+                                27180   IFE WCH,<\r
+        003220' 263240  000000  27190   PDIR21: POPJ    P,              ;CONTINUE>\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 62\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+        003221' 160046  624545  27210   PDIR7:  SIXBIT /. FREE BLOCKS LEFT/\r
+        003222' 004254  574353\r
+        003223' 630054  454664\r
+                                27220   ;OUTPUT THE DATE FOUND IN AC 0.\r
+\r
+        003224' 201100  000756' 27240   DATOUT: MOVEI T2,PUT            ;PUT CHAR IN OUT\r
+        003225' 231000  000037  27250           IDIVI 0,^D31\r
+        003226' 201141  000001  27260           MOVEI T3,1(1)\r
+        003227' 231000  000014  27270           IDIVI 0,^D12\r
+        003230' 200640  000003  27280           MOVE DOUT,T3            ;DOUT=DAY\r
+        003231' 260240  003235' 27290           PUSHJ P,OUTDC1          ;PRINT DAY\r
+        003232' 260240  003262' 27300           PUSHJ P,DATO2           ;PRINT -MONTH-\r
+        003233' 200640  000000  27310           MOVE DOUT,0\r
+        003234' 271640  000100  27320           ADDI DOUT,^D64          ;DOUT=YEAR\r
+        003235' 334700  003731' 27330   OUTDC1: SKIPA DOUT+1,TWL        ;RADIX 10\r
+                                27340   ;*******************************************************************\r
+                                27350   ;ROUTINE TO CONVERT OCTAL TO ASCII\r
+                                27360   ;DOUT CONTAINS OCTAL VALUE ON ENTRY\r
+\r
+        003236' 201700  000010  27380   OUTOCT: MOVEI DOUT+1,10         ;RADIX 8\r
+        003237' 552700  000007  27390   PRNUMA: HRRZM DOUT+1,T4\r
+        003240' 201200  000060  27400           MOVEI CHR,"0"\r
+        003241' 315640  000016  27410           CAMGE DOUT,DOUT+1       ;PRINT AT LEAST 2 DIGITS\r
+        003242' 260242  000000  27420           PUSHJ P,(T2)            ;PUT OR PUTCON\r
+        003243' 231647  000000  27430   PRN:    IDIVI DOUT,(T4)         ;DIVIDE BY RADIX\r
+        003244' 506705  000000  27440           HRLM DOUT+1,(P)         ;SAVE NO. FOR PRINT\r
+        003245' 322640  003247' 27450           JUMPE DOUT,.+2          ;ENUF DIGITS?\r
+        003246' 260240  003243' 27460           PUSHJ P,PRN             ;NO, GET MORE\r
+        003247' 554205  000000  27470           HLRZ CHR,(P)            ;YES, GET LEFTMOST\r
+        003250' 271200  000060  27480           ADDI CHR,60             ;CONVERT TO ASCII\r
+        003251' 254002  000000  27490           JRST (T2)               ;PUT OR PUTCON\r
+\r
+        003252' 201200  000040  27510   OUTDE4: MOVEI   CHR," "         ;SET UP FOR SPACES\r
+        003253' 301640  001750  27520           CAIL    DOUT,^D1000     ;PRINT 4 CHAR.\r
+        003254' 254000  003260' 27530           JRST    OUTDEC          ;AT LEAST 4 SEEN\r
+        003255' 260240  000756' 27540           PUSHJ   P,PUT           ;OUTPUT ONE SPACE\r
+        003256' 305640  000144  27550           CAIGE   DOUT,^D100      ;3 CHAR.?\r
+        003257' 260240  000756' 27560           PUSHJ   P,PUT           ;NO,SO ANOTHER SPACE\r
+        003260' 201100  000756' 27570   OUTDEC: MOVEI T2,PUT            ;PUT CHAR IN OUT BUF\r
+        003261' 254000  003235' 27580           JRST OUTDC1\r
+\r
+        003262' 201340  000005  27600   DATO2:  MOVEI T4,5\r
+        003263' 200500  004153' 27610           MOVE T6,MNPT\r
+        003264' 272040  000012  27620           ADDM 1,T6\r
+        003265' 134200  000012  27630           ILDB CHR,T6\r
+        003266' 260242  000000  27640           PUSHJ P,(T2)            ;PUT OR PUTCON\r
+        003267' 367340  003265' 27650           SOJG T4,.-2\r
+        003270' 263240  000000  27660           POPJ P,\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 63\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+                                27680   ;READ DTA DIRECTORY AND INITIALIZE DIRST AND DIRST1\r
+\r
+        003271' 260240  000426' 27700   DTCHECK:PUSHJ P,ININIT  ;INITIALIZE INPUT DEVICE\r
+        003272'                 27710   DTCH2:\r
+                                27720   IFN WCH,<\r
+                                27730           USETI IN,1      ;GET DTA DIR>\r
+                                27740   IFE WCH,<\r
+        003272' 074140  000144  27750           USETI IN,144    ;GET DTA DIR>\r
+        003273' 260240  001616' 27760           PUSHJ P,INP     ;INPUT DIRECTORY\r
+        003274' 070140  000000  27770           CLOSE   IN,\r
+        003275' 260240  003333' 27780           PUSHJ   P,GETPPN        ; GET PPN OF DECTAPE\r
+        003276' 260240  000426' 27790           PUSHJ   P,ININIT        ; REINITIALIZE INPUT DEVICE\r
+                                27800   IFN WCH,<\r
+                                27810   DTCH1:  MOVE T5,IBF\r
+                                27820           HRRZ T2,1(T5)\r
+                                27830           ADDI T5,1(T2)   ;GET ADD. OF FIRST ENTRY\r
+                                27840           MOVE 0,T5\r
+                                27850           SUBI 0,4>\r
+                                27860   IFE WCH,<\r
+        003277' 550440  003742' 27870   DTCH1:  HRRZ T5,IBF     ;LOC. OF CURRENT BUF, 2ND WORD\r
+        003300' 201011  000123  27880           MOVEI 0,123(T5) ;83 WORDS,7, FIVE-BIT BYTES\r
+        003301' 271440  000001  27890           ADDI T5,1       ;COMPUTE ADD. OF DIR. START>\r
+        003302' 202000  004012' 27900           MOVEM 0,DIRST   ;FIRST FILE NAME LOC\r
+        003303' 202000  004013' 27910           MOVEM 0,DIRST1  ;TO RESTORE DIRST\r
+        003304' 263240  000000  27920           POPJ P,\r
+\r
+                                27940   ;ROUTINE TO CHECK BRACKET COUNT/MATCHING\r
+\r
+        003305' 403140  004025' 27960   OUTCHK: SETZB T3,TLBRKT ;COUNT <> ON THIS LINE, CLEAR THINGS\r
+        003306' 200040  003723' 27970           MOVE T1,OPTRA   ;BYTE POINTER FOR READING OUT THE LINE\r
+        003307' 316040  004020' 27980   OUTCH2: CAMN T1,OPTR    ;LINE DONE?\r
+        003310' 254000  003320' 27990           JRST OUTCH3     ;YES, SO DECIDE WHETHER TO PRINT\r
+        003311' 134100  000001  28000           ILDB T2,T1      ;GET CHAR\r
+        003312' 306100  000074  28010           CAIN T2,"<"     ;LEFT BRACKET?\r
+        003313' 350000  004025' 28020           AOS TLBRKT      ;YES, SO INCREMENT BRACKET COUNT\r
+        003314' 306100  000076  28030           CAIN T2,">"     ;RIGHT BRACKET?\r
+        003315' 371000  004025' 28040           SOSL TLBRKT     ;YES, SUBTRACT BRACKET COUNT, GONE NEG?\r
+        003316' 254000  003307' 28050           JRST OUTCH2     ;NO, SO DO NEXT CHAR\r
+        003317' 344140  003307' 28060           AOJA T3,OUTCH2  ;YES, SO FLAG COUNT GONE NEG.\r
+\r
+        003320' 336100  004025' 28080   OUTCH3: SKIPN T2,TLBRKT ;BRACKET COUNT OFF THIS LINE?\r
+        003321' 322140  001711' 28090           JUMPE T3,CPOPJ  ;NO, WENT NEG.?\r
+        003322' 272100  004026' 28100           ADDM T2,TOTBRK  ;YES, SO ADD INTO CUMULATIVE COUNT\r
+        003323' 201200  000055  28110           MOVEI CHR,"-"   ;PRINT MINUS FOR NEG TOTAL\r
+        003324' 335000  004026' 28120           SKIPGE TOTBRK\r
+        003325' 260240  000756' 28130           PUSHJ P,PUT\r
+        003326' 214640  004026' 28140           MOVM DOUT,TOTBRK;PRINT MAGNITUDE OF TOTAL\r
+        003327' 260240  003260' 28150           PUSHJ P,OUTDEC\r
+        003330' 201200  000011  28160           MOVEI CHR,TAB   ;FOLLOW WITH TAB\r
+        003331' 260240  000756' 28170           PUSHJ P,PUT\r
+        003332' 254000  000711' 28180           JRST OUTCH1     ;AND PRINT THE LINE\r
+\r
+        003333' 201440  000117  28200   GETPPN: MOVEI   T5,117  ; NON STD DUMP MODE\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 63-1\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+U       003334' 202440  000000* 28210           MOVEM   T5,DTBLK\r
+        003335' 200440  004637' 28220           MOVE    T5,DEVICE       ; GET INPUT DEVICE\r
+U       003336' 202440  000000* 28230           MOVEM   T5,DTDEV\r
+U       003337' 050340  003334* 28240           OPEN    DTDIR,DTBLK\r
+        003340' 263240  000000  28250           POPJ    P,\r
+        003341' 074340  000144  28260           USETI   DTDIR,144       ; READ BLOCK 100 AND\r
+        003342' 200440  004713' 28270           MOVE    T5,[IOWD 227,DBUF]\r
+        003343' 201500  000000  28280           MOVEI   T6,0\r
+        003344' 066340  000011  28290           INPUT   DTDIR,T5        ; WORD 1 OF BLOCK 101.\r
+        003345' 200440  004577' 28300           MOVE    T5,177+DBUF\r
+        003346' 202440  003736' 28310           MOVEM   T5,DTAID\r
+        003347' 200440  004600' 28320           MOVE    T5,200+DBUF\r
+        003350' 202440  003737' 28330           MOVEM   T5,DIRPPN       ; SAVE PPN FOR LISTING\r
+        003351' 071340  000000  28340           RELEASE DTDIR,\r
+        003352' 263240  000000  28350           POPJ    P,\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 64\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+        003353' 612300  004672' 28370   FILTYP: TDNE FLAG,[XWD IFLG+IBFLG,BMOD]\r
+        003354' 263240  000000  28380           POPJ P,                 ;BIN MODE DON'T CARE IF DMP, ETC\r
+        003355' 606540  060400  28390           TRNN    AUXFLG,DSKIN!DTAIN!MTAIN        ;BINARY INPUT POSSIBLE?\r
+        003356' 254000  003365' 28400           JRST    FIL11           ;NO\r
+        003357' 606540  014200  28410           TRNN    AUXFLG,DSKOUT!DTAOUT!MTAOUT     ;BINARY OUTPUT?\r
+        003360' 254000  003365' 28420           JRST    FIL11           ;NO\r
+        003361' 616300  004701' 28430           TDNN    FLAG,[XWD PFLG,LINE!TBMOD!NSMOD!SQMOD!SPMOD]\r
+        003362' 603540  000040  28440           TLNE    AUXFLG,CDRFLG   ;/E FROM DSK IS NOT BINARY\r
+        003363' 254000  003365' 28450           JRST    FIL11           ;SO TURN OFF SBIN\r
+        003364' 254000  003414' 28460           JRST    FIL3            ;FORCE BINARY MODE\r
+        003365' 621540  000004  28470   FIL11:  TLZ AUXFLG,SBIN         ;IS\r
+        003366' 554000  004053' 28480           HLRZ 0,ZRF+1            ; INPUT EXTENSION\r
+        003367' 302000  445560  28490           CAIE 0,(SIXBIT /DMP/)   ;DMP?\r
+        003370' 306000  634166  28500   IFE DISK30,<CAIN 0,(SIXBIT /SAV/)       ;SAV?>\r
+                                28510   IFN DISK30,<CAIN 0,(SIXBIT/SVE/)>\r
+        003371' 254000  003414' 28520           JRST FIL3               ;YES\r
+        003372' 302000  435056  28530           CAIE 0,(SIXBIT /CHN/)   ;CHN?\r
+        003373' 306000  624554  28540           CAIN 0,(SIXBIT /REL/)   ;REL?\r
+        003374' 254000  003414' 28550           JRST FIL3               ;YES\r
+        003375' 302000  635062  28560           CAIE    0,(SIXBIT /SHR/)\r
+        003376' 306000  504750  28570           CAIN    0,(SIXBIT /HGH/)\r
+        003377' 254000  003414' 28580           JRST    FIL3\r
+        003400' 302000  425156  28590           CAIE    0,'BIN' ; GENERAL BINARY EXTENSION?\r
+        003401' 306000  545767  28600           CAIN    0,(SIXBIT /LOW/)\r
+        003402' 254000  003414' 28610           JRST    FIL3\r
+        003403' 606300  002000  28620           TRNN FLAG,XFLG          ;DO NORMAL PROCESSING ON ALL\r
+        003404' 254000  003430' 28630           JRST FIL2               ;BUT DMP ETC FILES IF NOT /X\r
+        003405' 607540  000040  28640           TLNN AUXFLG,CDRFLG\r
+        003406' 612300  004701' 28650           TDNE FLAG,[XWD PFLG,LINE+TBMOD+NSMOD+SQMOD+SPMOD]\r
+        003407' 263240  000000  28660           POPJ P,                 ;NO SIGNIFICANT SWITCHES\r
+        003410' 515000  004400  28670   FIL1:   HRLZI 0,004400          ;FORCE 36-BIT.\r
+        003411' 502000  003743' 28680           HLLM 0,IBF+1            ;INPUT BYTE POINTER\r
+        003412' 502000  003746' 28690           HLLM 0,OBF+1            ;OUTPUT BYTE POINTER\r
+        003413' 263240  000000  28700           POPJ P,                 ;CHANGE TO FORCED BINARY\r
+        003414' 661540  000004  28710   FIL3:   TLO AUXFLG,SBIN         ;INPUT EXT = DMP,SAV,CHN,REL\r
+        003415' 602300  002000  28720           TRNE FLAG,XFLG\r
+        003416' 254000  003410' 28730           JRST FIL1\r
+        003417' 667540  000400  28740           TLON AUXFLG,FRSTIN      ;NOT /X TEST FURTHER\r
+        003420' 254000  003443' 28750           JRST FIL4               ;IS THIS FIRST SOURCE, YES\r
+        003421' 663540  000200  28760           TLOE AUXFLG,RSDCFL      ;NOT FIRST, WAS PREVIOS FILE RSCD?\r
+        003422' 254000  003445' 28770           JRST    FIL5            ;YES, NO CHANGE UNLESS DEVICE HAS CHANGED\r
+        003423' 067100  000000  28780           OUTPUT OUT,             ;NO CHANGE TO 36-BIT\r
+        003424' 200000  003747' 28790           MOVE 0,OBF+2            ;CURRENTLY 7-BIT I/O, MUST CHANGE TO 36-BIT\r
+                                28800                                   ;OUTPUT CURRENT BUFFER\r
+        003425' 231000  000005  28810           IDIVI 0,5               ;DIVIDE OBF+2 BY 5 (CHAR. COUNT)\r
+        003426' 202000  003747' 28820           MOVEM 0,OBF+2\r
+        003427' 254000  003410' 28830           JRST FIL1\r
+        003430' 663540  000400  28840   FIL2:   TLOE AUXFLG,FRSTIN      ;NOT A RSCD FILE\r
+        003431' 627540  000200  28850           TLZN AUXFLG,RSDCFL      ;NO, WAS PREV. FILE RSCD?\r
+        003432' 263240  000000  28860           POPJ P,                 ;NO, NO CHANGE\r
+        003433' 067100  000000  28870           OUTPUT OUT,             ;YES, CHANGE 36-BIT TO 7-BIT\r
+        003434' 201000  000005  28880           MOVEI 0,5\r
+        003435' 222000  003747' 28890           IMULM 0,OBF+2\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 64-1\r
+        VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+        003436' 200000  003740' 28900           MOVE 0,SVIBF            ;RESTORE 7-BIT\r
+        003437' 502000  003743' 28910           HLLM 0,IBF+1\r
+        003440' 200000  003741' 28920           MOVE 0,SVOBF\r
+        003441' 502000  003746' 28930           HLLM 0,OBF+1\r
+        003442' 263240  000000  28940           POPJ P,\r
+        003443' 661540  000200  28950   FIL4:   TLO AUXFLG,RSDCFL       ;SET REL,SAV,DMP,CHN FLAG\r
+        003444' 254000  003410' 28960           JRST FIL1\r
+        003445' 515000  004400  28970   FIL5:   HRLZI 0,004400          ;NEW DEVICE, SET 36-BIT INPUT\r
+        003446' 602740  000010  28980           TRNE CALFLG,NEWDEV      ;SOURCE DEVICE CHANGED\r
+        003447' 502000  003743' 28990           HLLM 0,IBF+1\r
+        003450' 263240  000000  29000           POPJ P,                 ;OUTPUT ALREADY SET\r
+\r
+\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 65\r
+        BLOCK 0 CODE\r
+\r
+                                29040   SUBTTL BLOCK 0 CODE\r
+\r
+                                29060   IFE BLOC0,<\r
+                                29070   IFE WCH,<;THIS CODE COPIES BLOCK 0,1,2 ONLY. I/O MUST BE DECTAPE.>\r
+                                29080   IFN WCH,<;THIS CODE COPIES BLOCK 0 ONLY. I/O MUST BE DECTAPE.>\r
+                                29090   ;MODE SELECTED MUST BE BIT 100, 20 AND NOT DUMP MODE (134).\r
+\r
+        003451' 640540  024000  29110   BLOCK0: TRC AUXFLG,DTAIN+DTAOUT\r
+        003452' 642540  024000  29120           TRCE AUXFLG,DTAIN+DTAOUT;FORCE DTA I/O\r
+        003453' 254000  002115' 29130           JRST ERR7A\r
+        003454' 201000  000134  29140           MOVEI 0,134\r
+        003455' 202000  004633' 29150           MOVEM 0,OMOD\r
+        003456' 202000  004636' 29160           MOVEM 0,ININI1\r
+        003457' 205000  003745' 29170           MOVSI 0,OBF\r
+        003460' 202000  004635' 29180           MOVEM 0,ODEV+1\r
+        003461' 201000  003742' 29190           MOVEI 0,IBF\r
+        003462' 202000  004640' 29200           MOVEM 0,DEVICE+1\r
+        003463' 050100  004633' 29210           OPEN OUT,OMOD\r
+        003464' 254000  001767' 29220           JRST ERR1               ;UNAVAILABLE\r
+        003465' 065100  000001  29230           OUTBUF  OUT,1\r
+        003466' 067100  000000  29240           OUTPUT  OUT,\r
+        003467' 050140  004636' 29250           OPEN IN,ININI1\r
+        003470' 254000  001770' 29260           JRST ERR1A\r
+        003471' 064140  000001  29270           INBUF IN,1\r
+        003472' 403040  003735' 29280           SETZB T1,BL0CNT\r
+        003473' 074141  000000  29290   BL4:    USETI IN,(T1)\r
+        003474' 066140  000000  29300           INPUT IN,               ;READ\r
+        003475' 062140  000010  29310           GETSTS IN,IOS\r
+        003476' 606400  740000  29320           TRNN IOS,740000         ;ANY ERRORS\r
+        003477' 254000  003515' 29330           JRST BL1                ;NO\r
+        003500' 265440  000542' 29340           JSP T5,INICN2\r
+        003501' 260240  001652' 29350           PUSHJ P,QUEST\r
+        003502' 265040  002166' 29360           ERRPN2 </Input device />\r
+        003503' 447356  072750\r
+        003504' 203114  573322\r
+        003505' 617124  000000\r
+        003506' 260240  002201' 29370           PUSHJ P,P6BIT\r
+        003507' 000000  004637' 29380                 DEVICE\r
+        003510' 265040  002166' 29390           ERRPN2 </: />\r
+        003511' 351000  000000\r
+        003512' 200100  000013  29400           MOVE T2,AUXFLG          ;DECTAPE FOR ERROR MESSAGE\r
+        003513' 405100  020000  29410           ANDI T2,DTAIN\r
+        003514' 260240  001020' 29420           PUSHJ P,IOERR           ;PRINT ERROR TYPE\r
+        003515' 514440  003743' 29430   BL1:    HRLZ T5,IBF+1\r
+        003516' 540440  003746' 29440           HRR T5,OBF+1\r
+        003517' 201351  000177  29450           MOVEI T4,177(T5)\r
+        003520' 251447  000000  29460           BLT T5,(T4)             ;SHIFT DATA TO OUTPUT BUFFER\r
+        003521' 075120  003735' 29470           USETO   OUT,@BL0CNT\r
+        003522' 067100  000000  29480           OUTPUT OUT,             ;WRITE BLOCK\r
+        003523' 260240  000764' 29490           PUSHJ P, OUTP1          ;CHECK ERRORS\r
+                                29500   IFE WCH,<\r
+        003524' 350040  003735' 29510           AOS T1,BL0CNT\r
+        003525' 305040  000003  29520           CAIGE T1,3\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 65-1\r
+        BLOCK 0 CODE\r
+\r
+        003526' 254000  003473' 29530           JRST BL4>\r
+        003527' 071100  000000  29540   BL3:    RELEASE OUT,            ;IF ANY, PDL IS RESET\r
+        003530' 254000  000013' 29550           JRST PIP2>\r
+\r
+                                29570   IFN BLOC0,<\r
+                                29580   BLOCK0: ERRPNT  </?No block 0 copy!/>\r
+                                29590                   >\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 66\r
+        MAGTAPE ROUTINES\r
+\r
+                                29610   SUBTTL  MAGTAPE ROUTINES\r
+\r
+                                29630   ;TEST TO SEE IF MORE THAN ONE OF THE LOWEST EIGHT MTA FLAGS\r
+                                29640   ;HAVE BEEN SELECTED. IF SO ERROR. OTHERWISE, IMPLEMENT\r
+                                29650   ;REQUEST.  T1, T3, T6 SET AT ENTRY BY INLOOK OR OUTLOOK\r
+                                29660   ;TO EQUAL AUX/AUXOUT, AB/ABOUT,INIMTA/INOMTA\r
+\r
+        003531' 550100  000001  29680   MT1:    HRRZ T2,T1              ;T1 CONTAINS REQUEST\r
+        003532' 405102  777777  29690           ANDI T2,-1(T2)          ;KNOCK OFF RIGHT MOST 1\r
+        003533' 602100  000377  29700           TRNE T2,377\r
+        003534' 254000  003701' 29710           JRST MTR1               ;PRINT ERROR MESSAGE\r
+\r
+        003535' 606040  000377  29730           TRNN T1,MTAFLG+MTBFLG+MTWFLG+MTTFLG+MTFFLG+MTUFLG+MTDFLG+MTPFLG\r
+        003536' 254000  003562' 29740           JRST MTC1\r
+        003537' 260252  000000  29750           PUSHJ P,(T6)            ;THERE IS A  REQUEST\r
+                                29760                                   ;GO TO INIMTA/INOMTA\r
+\r
+                                29780   ;PERFORM POSITIONING REQUESTS\r
+        003540' 602040  000040  29790           TRNE T1,MTUFLG\r
+        003541' 254000  003600' 29800           JRST UNLOAD\r
+\r
+        003542' 602040  000010  29820           TRNE T1,MTWFLG\r
+        003543' 254000  003602' 29830           JRST REWIND\r
+\r
+        003544' 602040  000020  29850           TRNE T1,MTFFLG\r
+        003545' 254000  003605' 29860           JRST MARKEF\r
+\r
+        003546' 602040  000004  29880           TRNE T1,MTTFLG\r
+        003547' 254000  003615' 29890           JRST SLEOT\r
+\r
+        003550' 602040  000202  29910           TRNE T1,MTBFLG+MTPFLG   ;MULTIPLE REQUESTS ALLOWED\r
+        003551' 254000  003617' 29920           JRST BSPF\r
+\r
+        003552' 602040  000101  29940           TRNE T1,MTAFLG+MTDFLG   ;MULTIPLE REQUESTS ALLOWED\r
+        003553' 254000  003653' 29950           JRST ADVF\r
+\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 67\r
+        MAGTAPE ROUTINES\r
+\r
+                                29980   ;T1=AUX,AUXOUT. T3=AB,ABOUT.  T6=INIMTA,INOMTA.\r
+\r
+        003554' 071200  000000  30000   MTCONT: RELEAS TAPE,\r
+        003555' 606040  000040  30010           TRNN T1,MTUFLG          ;UNLOAD?\r
+        003556' 602740  000400  30020           TRNE CALFLG,NSWTCH      ;IS THERE AN INPUT DEVICE?\r
+        003557' 302500  003666' 30030           CAIE T6,INOMTA          ;OUTPUT TAPE?\r
+        003560' 263240  000000  30040           POPJ P,                 ;NO\r
+        003561' 254000  000013' 30050           JRST PIP2               ;YES, END OF COMMAND\r
+\r
+                                30070   ;ROUTINE TO CHECK AND SET DENSITY FOR NEW DEVICE\r
+\r
+        003562' 200340  000001  30090   MTC1:   MOVE T4,T1              ;GET AUX/AUXOUT\r
+        003563' 405340  003400  30100           ANDI T4,MT2FLG+MT5FLG+MT8FLG\r
+        003564' 405347  777777  30110           ANDI T4,-1(T4)          ;REMOVE RIGHT MOST 1\r
+        003565' 326340  003701' 30120           JUMPN T4,MTR1           ;MORE THAN 1 REQ, ERROR\r
+\r
+        003566' 201340  000001  30140           MOVEI T4,1              ;ASCII LINE STANDARD MODE\r
+\r
+        003567' 602040  002000  30160           TRNE T1,MT2FLG\r
+        003570' 660340  000200  30170           TRO T4,DENS2            ;SET 200 BPI\r
+\r
+        003571' 602040  001000  30190           TRNE T1,MT5FLG\r
+        003572' 660340  000400  30200           TRO T4,DENS5            ;SET 556 BPI\r
+\r
+        003573' 602040  000400  30220           TRNE T1,MT8FLG\r
+        003574' 660340  000600  30230           TRO T4,DENS8            ;SET 800 BPI\r
+\r
+        003575' 602040  004000  30250           TRNE T1,MTEFLG\r
+        003576' 660340  001000  30260           TRO T4,PARE             ;EVEN PARITY\r
+\r
+        003577' 263240  000000  30280           POPJ P,\r
+\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 68\r
+        MAGTAPE ROUTINES\r
+\r
+                                30310   ;REWIND AND UNLOAD\r
+\r
+        003600' 072200  000011  30330   UNLOAD: MTAPE TAPE,11\r
+        003601' 254000  003554' 30340           JRST MTCONT\r
+\r
+                                30360   ;REWIND ONLY\r
+\r
+        003602' 072200  000001  30380   REWIND: MTAPE TAPE,1\r
+        003603' 072200  000000  30390   MTWAIT: WAIT TAPE,\r
+        003604' 254000  003554' 30400           JRST MTCONT\r
+\r
+\r
+\r
+\r
+                                30450   ;MARK END OF FILE\r
+\r
+        003605' 200440  004645' 30470   MARKEF: MOVE T5,MTANAM\r
+        003606' 250440  004634' 30480           EXCH T5,ODEV\r
+        003607' 072200  000003  30490           MTAPE TAPE,3\r
+        003610' 062200  000010  30500           GETSTS TAPE,IOS\r
+        003611' 260240  000772' 30510           PUSHJ P,OUTP3\r
+        003612' 060210  000000  30520           SETSTS TAPE,(IOS)\r
+        003613' 202440  004634' 30530           MOVEM T5,ODEV\r
+        003614' 254000  003554' 30540           JRST MTCONT\r
+\r
+\r
+\r
+\r
+                                30590   ;SKIP TO LOGICAL END OF TAPE.\r
+\r
+        003615' 072200  000010  30610   SLEOT:  MTAPE TAPE,10\r
+        003616' 254000  003603' 30620           JRST MTWAIT\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 69\r
+        MAGTAPE ROUTINES\r
+\r
+                                30640   ;BACKSPACE MTA 1 FILE, T3=AB OR ABOUT\r
+                                30650   ;AB/ABOUT = INPUT/OUTPUT DEVICE\r
+\r
+        003617' 550140  000003  30670   BSPF:   HRRZ T3,T3      ;T3=NO. OF FILES/RECORDS TO BACK\r
+        003620' 072200  000000  30680   BSPF2:  WAIT TAPE,      ;WAIT\r
+        003621' 062200  000010  30690           GETSTS TAPE,IOS\r
+        003622' 606400  004000  30700           TRNN IOS,LDP    ;AT LOAD POINT?\r
+        003623' 254000  003637' 30710           JRST BSPF3      ;NO LDP\r
+        003624' 265040  002155' 30720           ERRPNT </?Load point before end of (MB) or (MP) request!/>\r
+        003625' 376315  760710\r
+        003626' 203415  764734\r
+        003627' 721014  262714\r
+        003630' 677454  520312\r
+        003631' 673104  067714\r
+        003632' 201211  541122\r
+        003633' 203376  220120\r
+        003634' 466405  120344\r
+        003635' 627436  562746\r
+        003636' 721020  000000\r
+        003637' 201440  000007  30730   BSPF3:  MOVEI T5,7      ;BSPR\r
+        003640' 606040  000200  30740           TRNN T1,MTPFLG  ;BSPR?\r
+        003641' 201440  000017  30750           MOVEI T5,17     ;BSPF\r
+        003642' 072211  000000  30760           MTAPE TAPE,(T5) ;BACKSPACE FILE/RECORD\r
+        003643' 365140  003620' 30770           SOJGE T3,BSPF2  ;MORE FILES/RECORDS TO BSP?\r
+                                30780                           ;NO, END OF LOOP\r
+        003644' 072200  000000  30790           WAIT TAPE,\r
+        003645' 062200  000010  30800           GETSTS TAPE,IOS\r
+        003646' 606040  000002  30810           TRNN T1,MTBFLG  ;BACKSPACE FILE?\r
+        003647' 254000  003554' 30820           JRST MTCONT     ;NO\r
+        003650' 606400  004000  30830           TRNN IOS,LDP    ;IF AT LOAD POINT\r
+        003651' 072200  000016  30840           MTAPE TAPE,16   ;(MOVE FWD. OVER EOF)\r
+        003652' 254000  003554' 30850           JRST MTCONT     ;DON'T SKIP A RECORD\r
+\r
+\r
+\r
+                                30890   ;ADVANCE MTA 1 FILE, T3=AB OR ABOUT\r
+                                30900   ;AB/ABOUT = INPUT/OUTPUT DEVICE\r
+\r
+        003653' 554140  000003  30920   ADVF:   HLRZ T3,T3      ;T3=NO. FILES (OR REC) TO ADVANCE\r
+        003654' 201440  000006  30930   ADVF2:  MOVEI T5,6      ;ADVR\r
+        003655' 606040  000100  30940           TRNN T1,MTDFLG  ;ADVR ?\r
+        003656' 201440  000016  30950           MOVEI T5,16     ;ADVF\r
+        003657' 072211  000000  30960           MTAPE TAPE,(T5) ;ADVANCE FILE/RECORD\r
+        003660' 367140  003654' 30970           SOJG T3,ADVF2   ;MORE FILES/RECORDS TO ADV?\r
+                                30980                           ;NO, END OF LOOP\r
+        003661' 072200  000000  30990           WAIT TAPE,      ;WAIT...\r
+        003662' 062200  000010  31000           GETSTS TAPE,IOS\r
+        003663' 622400  020000  31010           TRZE IOS,EOFBIT\r
+        003664' 060210  000000  31020           SETSTS TAPE,(IOS)       ;END OF FILE\r
+        003665' 254000  003554' 31030           JRST MTCONT\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 70\r
+        MAGTAPE ROUTINES\r
+\r
+                                31050   ;ROUTINE TO INITIALIZE MAGTAPE FOR INPUT OR OUTPUT\r
+\r
+        003666' 334100  004634' 31070   INOMTA: SKIPA T2,ODEV   ;INIT OUTPUT DEVICE\r
+        003667' 200100  004637' 31080   INIMTA: MOVE T2,DEVICE  ;INIT INPUT DEVICE\r
+        003670' 402000  004646' 31090           SETZM MTANAM+1\r
+        003671' 202100  004645' 31100           MOVEM T2,MTANAM\r
+        003672' 606740  000010  31110           TRNN CALFLG,NEWDEV\r
+        003673' 254000  003676' 31120           JRST INMTA      ;SAME DEVICE\r
+        003674' 260240  003562' 31130           PUSHJ P,MTC1    ;NEW DEVICE\r
+        003675' 552340  004644' 31140           HRRZM   T4,INMTA1       ;SET MODE,DENSITY,PARITY\r
+\r
+        003676' 050200  004644' 31160   INMTA:  OPEN TAPE,INMTA1\r
+        003677' 254000  001771' 31170           JRST ERR1B\r
+        003700' 263240  000000  31180           POPJ P,\r
+\r
+                                31200   ;ROUTINE TO PRINT ERROR MSG IF MORE THAN 1/8 FLAGS SET\r
+\r
+        003701' 200340  004637' 31220   MTR1:   MOVE T4,DEVICE  ;TENTATIVELY SET I/DEV\r
+\r
+        003702' 302500  003667' 31230           CAIE T6,INIMTA  ;INPUT DEVICE?\r
+        003703' 200340  004634' 31240           MOVE T4,ODEV    ;NO, SET O/DEV\r
+        003704' 265040  002155' 31250           ERRPNT </?Too many requests for />\r
+        003705' 376515  767500\r
+        003706' 667035  674500\r
+        003707' 713136  172712\r
+        003710' 717516  320314\r
+        003711' 677444  000000\r
+        003712' 260240  002201' 31260           PUSHJ P,P6BIT\r
+        003713' 000000  000007  31270                   T4\r
+        003714' 254000  000013' 31280           JRST    PIP2\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 71\r
+        CONSTANTS/STORAGE/VARIABLES\r
+\r
+                                31300           SUBTTL  CONSTANTS/STORAGE/VARIABLES\r
+\r
+                                31320   ;CONSTANTS\r
+\r
+                                31340   IFE WCH,<\r
+        003715' 140600  004046' 31350   OKBD:   POINT 6,DTON+2,23       ;FOR NO. 1K BLOCKS\r
+        003716' 140600  004054' 31360   OKB:    POINT 6,ZRF+2,23>\r
+        003717' 001400  004054' 31370   DATE:   POINT 12,ZRF+2,35\r
+        003720' 001400  004046' 31380   DATED:  POINT 12,DTON+2,35      ;CREATION DATE /X\r
+        003721' 301406  030140  31390   ZRO:    ASCII /00000/\r
+        003722' 010700  004376' 31400   OPTMAX: POINT 7,LBUFE-1,34\r
+        003723' 000700  004173' 31410   OPTRA:  XWD 700,LBUF-1          ;INITIAL POINTER TO LINE BUFFER\r
+        003724' 432150  643240  31420   K1:     432150643240            ;MAGIC ASCII INCREMENT BY 10\r
+        003725' 375767  737576  31430   K3:     375767737576            ;CHARACTER MASK 077\r
+        003726' 432150  643216  31440   K4:     432150643216            ;MAGIC ASCII INCREMENT BY 1\r
+        003727' 616051  600000  31450   QPIP:   SIXBIT /QPIP/           ;DATA FOR Q SWITCH\r
+        003730' 120000  000000  31460   STAR:   SIXBIT /*/              ;LOOK FOR *.* FILNAM.EXT\r
+        003731' 000000  000012  31470   TWL:    OCT 12\r
+        003732' 000001  000001  31480   PP11:   XWD 1,1\r
+        003733' 000001  000003  31490   PP13:   XWD 1,3                 ; SANDERS SYS\r
+        003734' 000000  000145  31500   UPROJ:  EXP     ^D101   ; SANDERS UNIVERSAL PROJECT\r
+                                31510   IFN FTDSK,<\r
+                                31520   PRPTL:  POINT 9,PROTS,8         ;PROTECTION FOR RENAME\r
+                                31530   PRPTD:  POINT 9,DTON+2,8\r
+                                31540   PRNM:   POINT 9,ZRF+2,8         ;PROT FOR /R\r
+                                31550   TIME:   POINT 11,ZRF+2,23       ;CREATE TIME /X\r
+                                31560   TIMED:  POINT 11,DTON+2,23      ;DEPOSIT CREATE TIME>\r
+\r
+\r
+\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 72\r
+        CONSTANTS/STORAGE/VARIABLES\r
+\r
+                                31610   ;PROGRAM STORAGE AREA\r
+\r
+                                31630   IFE BLOC0,<\r
+        003735'                 31640   BL0CNT: BLOCK   1               ;COUNT>\r
+        003736'                 31650   DTAID:  BLOCK 1 ; STORE DTA SERIAL NUMBER\r
+        003737'                 31660   DIRPPN: BLOCK 1         ; STORE OWNERSHIP\r
+        003740'                 31670   SVIBF:  BLOCK   1       ;SAVE INIT MODE (INPUT)\r
+        003741'                 31680   SVOBF:  BLOCK   1       ;SAVE INIT MODE (OUTPUT)\r
+        003742'                 31690   IBF:    BLOCK   3       ;INPUT BUFFER HEADER\r
+        003745'                 31700   OBF:    BLOCK   3       ;OUTPUT BUFFER HEADER\r
+        003750'                 31710   OBI:    BLOCK   3       ;OUTPUT BUFFER INPUT HEADER FOR DSK /Z\r
+        003753'                 31720   TFI:    BLOCK   3       ;CONSOLE INPUT HEADER\r
+        003756'                 31730   TFO:    BLOCK   3       ;CONSOLE OUTPUT HEADER\r
+        003761'                 31740   SAVAC:  BLOCK   5       ;SAVE SOME ACS\r
+        003766'                 31750   NAMTAB: BLOCK   24      ;FOR (XD) ON DSK OR RENAME\r
+                                31760   IFN FTDSK,<\r
+                                31770   LOCNAM: BLOCK   1       ;POINTER FOR NAMTAB>\r
+        004012'                 31780   DIRST:  BLOCK   1       ;LOC. OF LAST DIR. FILE NAME REFERENCED\r
+        004013'                 31790   DIRST1: BLOCK   1       ;SAVE INITIAL DIRST\r
+        004014'                 31800   SQNUM:  BLOCK   1       ;CURRENT SEQUENCE NUMBER\r
+        004015'                 31810   DTJBFF: BLOCK   1       ;VALUE OF JOBFF AFTER CONSOLE I/O BUFFERS\r
+        004016'                 31820   SVJBFF: BLOCK   1       ;INITIAL VALUE OF JOBFF\r
+        004017'                 31830   SVJBF1: BLOCK   1       ;VALUE OF JOBFF AFTER OUTBUF UUO\r
+        004020'                 31840   OPTR:   BLOCK   1       ;CURRENT POINTER FOR LINE PRESCAN\r
+        004021'                 31850   DTONSV: BLOCK   2       ;OUTPUT DIRECTORY ENTRY COPY\r
+        004023'                 31860   SVPTR1: BLOCK   1       ;POINTER TO LAST PRINTING CHARACTER\r
+        004024'                 31870   SVPTR2: BLOCK   1       ;POINTER TO LAST GENERATED TAB\r
+        004025'                 31880   TLBRKT: BLOCK   1       ;TOTAL PARENS ON THIS LINE\r
+        004026'                 31890   TOTBRK: BLOCK   1       ;TOTAL CUMULATIVE PARENS\r
+        004027'                 31900   TABCT:  BLOCK   1       ;SPACES TO NEXT TAB STOP\r
+        004030'                 31910   SPCT:   BLOCK   1       ;CONSECUTIVE SPACES COUNTER\r
+        004031'                 31920   ABOUT:  BLOCK   1       ;AB FOR OUTPUT UNIT\r
+        004032'                 31930   AUXOUT: BLOCK   1       ;AUX FOR OUTPUT UNIT\r
+        004033'                 31940   PROTS:  BLOCK   1       ;SAVE PROTECTION\r
+        004034'                 31950   ZCNT:   BLOCK   1       ;COUNT FOR DSK ZRO REQ.\r
+        004035'                 31960   CDRCNT: BLOCK   1       ;COUNT CARD COLS.\r
+        004036'                 31970   PTRPT:  BLOCK   1       ;STORE SEQ. NO. POINTER\r
+        004037'                 31980   SYSPP:  BLOCK   1       ;PP OF DEVICE SYS\r
+\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 73\r
+        CONSTANTS/STORAGE/VARIABLES\r
+\r
+                                32010   ;THIS IS A BLOCK OF VARIABLE LOCATIONS, ZEROED AT THE START OF EACH\r
+                                32020   ;PIP RUN, I.E EACH TIME PIP TYPES *.\r
+\r
+                                32040   ;*****  DO NOT SPLIT THIS BLOCK *****\r
+                                32050   IFN FTDSK,<\r
+                                32060   RIBFIR: BLOCK   1       ;NUMBER OF WORDS IN LOOKUP\r
+                                32070   PPP:    BLOCK   1       ;PROJ-PROG FOR EXTENDED LOOKUP>\r
+        004040'                 32080   FILNAM: BLOCK   1       ;FILE NAME FROM COMMAND SCANNER\r
+        004041'                 32090   FILEX:  BLOCK   1       ;EXTENSION\r
+        004042'                 32100   PR:     BLOCK   1       ;PROTECTION\r
+        004043'                 32110   PP:     BLOCK   1       ;P-P NUMBER TYPED BY USER\r
+                                32120   IFN FTDSK,<BLOCK 20+RIBFIR-.>   ;TOTAL LENGTH OF LOOKUP BLOCK\r
+                                32130   ;*****  END OF BLOCK    *****\r
+        004044'                 32140   DTON:   BLOCK   4       ;OUTPUT DIR. ENTRY\r
+        004050'                 32150   DEVA:   BLOCK   1       ;SAVE INPUT DEV. NAME\r
+        004051'                 32160   NO.:    BLOCK   1       ;GENERATE FILE NAMES\r
+        004052'                 32170   ZRF:    BLOCK   4       ;LOOKUP FILE NAMES\r
+        004056'                 32180   MTAREQ: BLOCK   1       ;STORE MTA REQUESTS\r
+\r
+        004057'                 32200   COMEOF: BLOCK   1       ;EOF INDICATOR\r
+        004060'                 32210   COMBUF: BLOCK   ^D41    ;COMMAND BUFFER. ALLOWS 205 CHARS.\r
+        004131'                 32220   COMCNT: BLOCK   1       ;COMBUF CHARS COUNT\r
+        004132'                 32230   COMPTS: BLOCK   1       ;POINTER FOR STORING/EXTRACTING CS\r
+\r
+\r
+        004133'                 32260   AUX:    BLOCK   1       ;COPT AUXFLG (MTA)\r
+                                32270   IFN FTDSK,<\r
+                                32280   FNPPN:  BLOCK   1       ;RESERVE #P-P\r
+                                32290   FNPPNS: BLOCK   1       ;COPY FNPPN FOR LATEST NON-SYS #P-P>\r
+        004134'                 32300   ESWTCH: BLOCK   1       ;-1 INDICATES END OF LINE\r
+        004135'                 32310   XNAME:  BLOCK   1       ;-1 INDICATES SCAN OVERSHOOT WITH A NULL NAME\r
+                                32320                           ;0  INDICATES NO SCAN OVERSHOOT\r
+                                32330                           ;CONTAINS OVERSHOOT NAME IF NOT NULL\r
+        004136'                 32340   AB:     BLOCK   1       ;MTA VALUE SWITCHES\r
+                                32350                           ;THIS IS THE END OF THE INIT. ZEROED BLOCK.\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 74\r
+        CONSTANTS/STORAGE/VARIABLES\r
+\r
+        004137' 266254  167132  32370   MONTH:  ASCII /-Jan-/\r
+        004140' 266154  561132  32380           ASCII /-Feb-/\r
+        004141' 266334  171132  32390           ASCII /-Mar-/\r
+        004142' 266036  071132  32400           ASCII /-Apr-/\r
+        004143' 266334  174532  32410           ASCII /-May-/\r
+        004144' 266256  567132  32420           ASCII /-Jun-/\r
+        004145' 266256  566132  32430           ASCII /-Jul-/\r
+        004146' 266036  563532  32440           ASCII /-Aug-/\r
+        004147' 266474  570132  32450           ASCII /-Sep-/\r
+        004150' 266374  372132  32460           ASCII /-Oct-/\r
+        004151' 266355  773132  32470           ASCII /-Nov-/\r
+        004152' 266114  561532  32480           ASCII /-Dec-/\r
+\r
+        004153' 440700  004137' 32500   MNPT:   POINT 7,MONTH\r
+\r
+        004154'                 32520   PDL:   BLOCK 20         ;PUSHDOWN LIST\r
+\r
+        004174'                 32540   LBUF:  BLOCK 204        ;LINE BUFFER. ALLOW FOR FORTRAN DATA\r
+                        004377' 32550   LBUFE==.-1\r
+\r
+        004400'                 32570   DBUF:  BLOCK 204        ;DIRECTORY BUFFER\r
+        004604'                 32580           BLOCK   27      ; ALLOW ENOUGH FOR DTA PROT.\r
+\r
+        004633'                 32600   OMOD:   BLOCK 1         ;OUTPUT DEVICE MODE, STATUS\r
+        004634'                 32610   ODEV:   BLOCK 2         ;OUTPUT DEVICE NAME\r
+                                32620                           ;BUFFER HEADER(S) LOC\r
+\r
+        004636'                 32640   ININI1: BLOCK 1         ;INPUT DEVICE\r
+        004637'                 32650   DEVICE: BLOCK 2\r
+\r
+\r
+        004641'                 32680   DEVERR: BLOCK 1\r
+        004642'                 32690   DERR2:  BLOCK 2\r
+\r
+        004644'                 32710   INMTA1: BLOCK 1\r
+        004645'                 32720   MTANAM: BLOCK 2\r
+        004647'                 32730   MATCH:  BLOCK   2       ;NAME AND EXT FOR /L OR (RX)\r
+        004651'                 32740   RENSN:  BLOCK   1       ;-1 IF RENAME MESSAGE SEEN\r
+\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 75\r
+        RIM LOADER\r
+\r
+                                32770   SUBTTL  RIM LOADER\r
+                                32780   IFE RIMSW,<\r
+        004652' 265040  002155' 32790   RIMTB:  ERRPNT  <Z? /Y switch option not available this assembly!Z>\r
+        004653' 375005  754500\r
+        004654' 717575  172306\r
+        004655' 641015  770350\r
+        004656' 647375  620334\r
+        004657' 677504  060754\r
+        004660' 607235  460704\r
+        004661' 663124  072320\r
+        004662' 647464  060746\r
+        004663' 717135  561330\r
+        004664' 745020  000000\r
+                                32800   XLIST>\r
+                                35140   LIST\r
+\r
+                                35160   IFE FTDSK,<     \r
+        004665'                 35170           VAR\r
+        004665'                 35180   LOWTOP:\r
+                        000000' 35190           END     PIP1>\r
+        004665' 000000' 000001'\r
+        004666' 004040' 004041'\r
+        004667' 004040' 004044'\r
+        004670' 004044' 004647'\r
+        004671' 003745' 003742'\r
+        004672' 000500  000002\r
+        004673' 004174' 004175'\r
+        004674' 000001  003761'\r
+        004675' 000000  000010\r
+        004676' 350700  001420'\r
+        004677' 440700  004014'\r
+        004700' 440600  004044'\r
+        004701' 000004  001245\r
+        004702' 000504  001247\r
+        004703' 220600  004021'\r
+        004704' 250502  000017\r
+        004705' 250511  000016\r
+        004706' 440700  000000*\r
+        004707' 440600  003736'\r
+        004710' 440600  003221'\r
+        004711' 250500  004416'\r
+        004712' 331101  004600'\r
+        004713' 777551  004377'\r
+\r
+DTBLK   UNASSIGNED, DEFINED AS IF EXTERNAL \r
+DTDEV   UNASSIGNED, DEFINED AS IF EXTERNAL \r
+HEDL1   UNASSIGNED, DEFINED AS IF EXTERNAL \r
+PROTO   UNASSIGNED, DEFINED AS IF EXTERNAL \r
+?5 ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 004714\r
+\r
+9K CORE USED\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 81\r
+        SYMBOL TABLE\r
+\r
+PSCAN1          001113  \r
+AB              004136' \r
+ABCHK           000466' \r
+ABOUT           004031' \r
+ADVF            003653' \r
+ADVF2           003654' \r
+ALLCLF          000037  SPD\r
+ALT175          000175  SPD\r
+ALT176          000176  SPD\r
+ALTMOD          000033  SPD\r
+ASTFLG          000040  SPD\r
+AUX             004133' \r
+AUXFLG          000013  \r
+AUXOUT          004032' \r
+BIGBLK          040000  SPD\r
+BL0CNT          003735' \r
+BL1             003515' \r
+BL3             003527' \r
+BL4             003473' \r
+BLKIN           000006  SPD\r
+BLOC0           000000  SPD\r
+BLOCK0          003451' \r
+BMOD            000002  SPD\r
+BSPF            003617' \r
+BSPF2           003620' \r
+BSPF3           003637' \r
+CAL5            002315' \r
+CAL6            002317' \r
+CALFLG          000017  \r
+CDRBIT          100000  SPD\r
+CDRCNT          004035' \r
+CDRFLG          000040  SPD\r
+CDRIN           000100  SPD\r
+CHECK           002152' \r
+CHECK1          002132' \r
+CHECK2          002135' \r
+CHKFLG          000040  SPD\r
+CHR             000004  \r
+CLRBUF          000553' \r
+COLON           000072  SPD\r
+COMASK          000044' \r
+COMBUF          004060' \r
+COMCNT          004131' \r
+COMEOF          004057' \r
+COMERR          001135' \r
+COMMA           000054  SPD\r
+COMPRO          000056' \r
+COMPRP          000056' \r
+COMPTR          000055' \r
+COMPTS          004132' \r
+COMSTO          000037' \r
+CON             000001  SPD\r
+COPY1           002241' \r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 81-1\r
+        SYMBOL TABLE\r
+\r
+COPY1A          002225' \r
+COPY2A          002311' \r
+COPY2B          002313' \r
+COPY3           002323' \r
+COPY3B          002321' \r
+COPY4           002305' \r
+COPY5           002300' \r
+COPY6           002252' \r
+COPY6A          002250' \r
+COPY6B          002254' \r
+COPY6C          002266' \r
+CORE    047000  000011  \r
+CPOPJ           001711' \r
+CPOPJ1          001707' \r
+CPOPJZ          001710' \r
+CR              000015  SPD\r
+CRLF            003205' \r
+CZ              000032  SPD\r
+DATE            003717' \r
+DATE    047000  000014  \r
+DATED           003720' \r
+DATO2           003262' \r
+DATOUT          003224' \r
+DBUF            004400' \r
+DEL             000177  SPD\r
+DELE1           002443' \r
+DELE2           002504' \r
+DELE3           002466' \r
+DELE5           002513' \r
+DENS2           000200  SPD\r
+DENS5           000400  SPD\r
+DENS8           000600  SPD\r
+DERR2           004642' \r
+DERR2A          001166' \r
+DERR2B          001165' \r
+DESCR1          000464' \r
+DESCRP          000451' \r
+DEV             000100  SPD\r
+DEVA            004050' \r
+DEVCHR  047000  000004  \r
+DEVER           000526' \r
+DEVER1          000525' \r
+DEVER2          000525' \r
+DEVERR          004641' \r
+DEVICE          004637' \r
+DEVPPN  047000  000055  \r
+DEVTST          000506' \r
+DFLG            000010  SPD\r
+DIR             000005  SPD\r
+DIRPPN          003737' \r
+DIRST           004012' \r
+DIRST1          004013' \r
+DISK30          000000  SPD\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 81-2\r
+        SYMBOL TABLE\r
+\r
+DISPTA          001436' \r
+DISPTB          001420' \r
+DOUT            000015  \r
+DOUT1           000016  \r
+DSKBIT          200000  SPD\r
+DSKCHR  047000  000045  \r
+DSKIN           040000  SPD\r
+DSKOUT          010000  SPD\r
+DTABIT          000004  SPD\r
+DTADI1          002702' \r
+DTADIR          002701' \r
+DTADR           002460' \r
+DTAID           003736' \r
+DTAIN           020000  SPD\r
+DTALS1          003043' \r
+DTALS2          003050' \r
+DTALS3          003052' \r
+DTALS4          003055' \r
+DTALST          003023' \r
+DTAOUT          004000  SPD\r
+DTBLK           003337' UXT\r
+DTCH1           003277' \r
+DTCH2           003272' \r
+DTCHEC          003271' \r
+DTCLR           002212' \r
+DTCOPY          002224' \r
+DTD1            002456' \r
+DTD5            002544' \r
+DTD6            002543' \r
+DTDELE          002432' \r
+DTDEV           003336' UXT\r
+DTDIR           000007  SPD\r
+DTJBFF          004015' \r
+DTON            004044' \r
+DTONSV          004021' \r
+DTPDIR          003017' \r
+DTRNAM          002522' \r
+DTRNM1          002536' \r
+DVSWTH          000200  SPD\r
+E10A            002053' \r
+E10B            001752' \r
+EOFBIT          020000  SPD\r
+EOTBIT          002000  SPD\r
+ERR1            001767' \r
+ERR10           001751' \r
+ERR1A           001770' \r
+ERR1B           001771' \r
+ERR2            002076' \r
+ERR2A           002107' \r
+ERR3            002003' \r
+ERR3A           002005' \r
+ERR3AA          002007' \r
+ERR4            002024' \r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 81-3\r
+        SYMBOL TABLE\r
+\r
+ERR4A           002033' \r
+ERR4B           002033' \r
+ERR5            002066' \r
+ERR5A           002060' \r
+ERR6            002040' \r
+ERR6A           002040' \r
+ERR6B           002045' \r
+ERR7A           002115' \r
+ERR8            002122' \r
+ERR9            001762' \r
+ESQ             040000  SPD\r
+ESWTCH          004134' \r
+EXIT    047000  000012  \r
+FF              000014  SPD\r
+FFLG            000020  SPD\r
+FIL1            003410' \r
+FIL11           003365' \r
+FIL2            003430' \r
+FIL3            003414' \r
+FIL4            003443' \r
+FIL5            003445' \r
+FILEX           004041' \r
+FILNAM          004040' \r
+FILTYP          003353' \r
+FLAG            000006  \r
+FN.EX           001146' \r
+FNEX            000001  SPD\r
+FNSET           002746' \r
+FNSET1          002762' \r
+FRSTIN          000400  SPD\r
+FTDSK           000000  SPD\r
+GET             001462' \r
+GET1            001557' \r
+GET1A           001566' \r
+GET2            001532' \r
+GET4            001553' \r
+GET5            001521' \r
+GET7            001666' \r
+GET7B           001712' \r
+GET7C           001673' \r
+GETA2           001727' \r
+GETA3           001717' \r
+GETA5           001724' \r
+GETA5A          001747' \r
+GETA7           001735' \r
+GETBUF          001404' \r
+GETCOM          001175' \r
+GETDEC          001236' \r
+GETEN2          001415' \r
+GETN1           001240' \r
+GETN2           001306' \r
+GETNUD          001305' \r
+GETNUM          001237' \r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 81-4\r
+        SYMBOL TABLE\r
+\r
+GETOCT          001235' \r
+GETPC1          001506' \r
+GETPC2          001544' \r
+GETPC3          001542' \r
+GETPC4          001476' \r
+GETPPN          003333' \r
+GETPPN  047000  000024  \r
+GETT10          001206' \r
+GETT11          001217' \r
+GETT2           001371' \r
+GETT3           001252' \r
+GETT3A          001276' \r
+GETT3B          001274' \r
+GETT4           001372' \r
+GETT5           001320' \r
+GETT5A          001321' \r
+GETT6           001300' \r
+GETT7           001327' \r
+GETT8           001335' \r
+GETT9           001223' \r
+GETTA           001352' \r
+GETTAB  047000  000041  \r
+GETTIN          001365' \r
+GETUPJ          001232' \r
+GFLG            000200  SPD\r
+HEDL1           004706' UXT\r
+HPAGE           000020  SPD\r
+IBF             003742' \r
+IBFLG           000400  SPD\r
+IFLG            000100  SPD\r
+IN              000003  SPD\r
+INBIT           000002  SPD\r
+INERR           001620' \r
+INFO            002711' \r
+INFO1           002730' \r
+INFO2           002735' \r
+INFO3           002743' \r
+INFOFL          000100  SPD\r
+INHIB           000001  SPD\r
+INICN1          000541' \r
+INICN2          000542' \r
+INICON          001410' \r
+INIMTA          003667' \r
+ININI1          004636' \r
+ININIT          000426' \r
+INLOOK          000204' \r
+INLUK1          000217' \r
+INMTA           003676' \r
+INMTA1          004644' \r
+INOMTA          003666' \r
+INP             001616' \r
+IOERR           001020' \r
+IOERRG          001114' \r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 81-5\r
+        SYMBOL TABLE\r
+\r
+IOERRN          001107' \r
+IOS             000010  \r
+JFLG            001000  SPD\r
+JOBFF           000547' EXT\r
+JOBREL          000437' EXT\r
+JOBSA           000007' EXT\r
+JOBSTR  047000  000047  \r
+K               000000  SPD\r
+K1              003724' \r
+K3              003725' \r
+K4              003726' \r
+LA              000137  SPD\r
+LBUF            004174' \r
+LBUFE           004377' SPD\r
+LDP             004000  SPD\r
+LF              000012  SPD\r
+LFLG            000020  SPD\r
+LINE            000001  SPD\r
+LISTTY          002000  SPD\r
+LOOK            002566' \r
+LOOK01          002570' \r
+LOOK1           002655' \r
+LOOK2           002623' \r
+LOOK3           002630' \r
+LOOK4           002635' \r
+LOOK5           002635' \r
+LOOK6           002572' \r
+LOOK6A          002614' \r
+LOOK6C          002616' \r
+LOOK6D          002620' \r
+LOOK7A          002640' \r
+LOOK7B          002604' \r
+LOOK7C          002650' \r
+LOOK8           002607' \r
+LOOKA           002767' \r
+LOOKB           003006' \r
+LOOKC           003014' \r
+LOOKF           003002' \r
+LOW             000000' \r
+LOWTOP          004665' \r
+LPTBIT          040000  SPD\r
+LPTOUT          000010  SPD\r
+M1              000140' \r
+M2              000132' \r
+M3              000107' \r
+M3A             000111' \r
+M4              000154' \r
+M5              000173' \r
+MAIN1           000411' \r
+MAIN2           000421' \r
+MAINA1          000031' \r
+MAINA2          000275' \r
+MAINA3          000301' \r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 81-6\r
+        SYMBOL TABLE\r
+\r
+MAINA4          000307' \r
+MAINA5          000323' \r
+MAINB           000415' \r
+MAINC           000073' \r
+MARKEF          003605' \r
+MATCH           004647' \r
+MATEX           000002  SPD\r
+MATFN           000004  SPD\r
+MNPT            004153' \r
+MONTH           004137' \r
+MORCOR          000262' \r
+MPC2            002350' \r
+MSTIME  047000  000023  \r
+MT1             003531' \r
+MT2FLG          002000  SPD\r
+MT5FLG          001000  SPD\r
+MT8FLG          000400  SPD\r
+MTABIT          000020  SPD\r
+MTAFLG          000001  SPD\r
+MTAIN           000400  SPD\r
+MTANAM          004645' \r
+MTAOUT          000200  SPD\r
+MTAREQ          004056' \r
+MTBFLG          000002  SPD\r
+MTC1            003562' \r
+MTCONT          003554' \r
+MTDFLG          000100  SPD\r
+MTEFLG          004000  SPD\r
+MTFFLG          000020  SPD\r
+MTFLG           200000  SPD\r
+MTPFLG          000200  SPD\r
+MTPTC1          002362' \r
+MTPTCR          002337' \r
+MTR1            003701' \r
+MTTFLG          000004  SPD\r
+MTUFLG          000040  SPD\r
+MTWAIT          003603' \r
+MTWFLG          000010  SPD\r
+NAME            000557' \r
+NAMTAB          003766' \r
+NEWDEV          000010  SPD\r
+NEWFIL          000020  SPD\r
+NEWPP           000020  SPD\r
+NM1             000566' \r
+NM10            000654' \r
+NM11            000661' \r
+NM12            000664' \r
+NM13            000666' \r
+NM14            000670' \r
+NM15            000672' \r
+NM16            000700' \r
+NM2             000567' \r
+NM3             000571' \r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 81-7\r
+        SYMBOL TABLE\r
+\r
+NM4             000576' \r
+NM4A            000602' \r
+NM5             000606' \r
+NM5A            000613' \r
+NM5B            000673' \r
+NM6             000633' \r
+NM7             000640' \r
+NM8             000643' \r
+NM9             000646' \r
+NO.             004051' \r
+NOMORE          000020  SPD\r
+NSMOD           000040  SPD\r
+NSPROT          000002  SPD\r
+NSWTCH          000400  SPD\r
+OBF             003745' \r
+OBI             003750' \r
+ODEV            004634' \r
+OFLG            000001  SPD\r
+OKB             003716' \r
+OKBD            003715' \r
+OKBLK0          002422' \r
+OKBLKS          002412' \r
+OMOD            004633' \r
+OMOD1           000251' \r
+OMODE           000223' \r
+OMODER          000267' \r
+ONEOUT          000040  SPD\r
+OPTMAX          003722' \r
+OPTR            004020' \r
+OPTRA           003723' \r
+OSFLG           400000  SPD\r
+OUT             000002  SPD\r
+OUTBIT          000001  SPD\r
+OUTCH1          000711' \r
+OUTCH2          003307' \r
+OUTCH3          003320' \r
+OUTCHK          003305' \r
+OUTDC1          003235' \r
+OUTDE4          003252' \r
+OUTDEC          003260' \r
+OUTLB1          000712' \r
+OUTLB2          000745' \r
+OUTLB3          000754' \r
+OUTLBA          000717' \r
+OUTLBF          000707' \r
+OUTLOO          000200' \r
+OUTOCT          003236' \r
+OUTP            000762' \r
+OUTP1           000764' \r
+OUTP3           000772' \r
+OUTP4           000770' \r
+P               000005  \r
+P1              000010' \r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 81-8\r
+        SYMBOL TABLE\r
+\r
+P6BIT           002201' \r
+P6BIT1          002203' \r
+P6BIT2          002207' \r
+PARE            001000  SPD\r
+PCHTAB          001546' \r
+PCONV           000010  SPD\r
+PDIR1           003101' \r
+PDIR1B          003070' \r
+PDIR2           003211' \r
+PDIR21          003220' \r
+PDIR2A          003213' \r
+PDIR3           003141' \r
+PDIR3A          003177' \r
+PDIR3B          003174' \r
+PDIR4           003107' \r
+PDIR4A          003130' \r
+PDIR4B          003131' \r
+PDIR6           003200' \r
+PDIR7           003221' \r
+PDIR8           003075' \r
+PDL             004154' \r
+PERIOD          000056  SPD\r
+PFLG            000004  SPD\r
+PICUP           002662' \r
+PICUP2          002662' \r
+PICUP4          002665' \r
+PIP             000012' \r
+PIP1            000000' \r
+PIP1            000000  \r
+PIP2            000013' \r
+PIP2A           000013' \r
+PIP2B           000023' \r
+PJOB    047000  000030  \r
+PP              004043' \r
+PP11            003732' \r
+PP13            003733' \r
+PPTIN           200000  SPD\r
+PPTOUT          400000  SPD\r
+PR              004042' \r
+PRECOP          002220' \r
+PRETXT          002155' \r
+PRN             003243' \r
+PRNUMA          003237' \r
+PROTK           000476' \r
+PROTK1          000504' \r
+PROTO           003173' UXT\r
+PROTS           004033' \r
+PSCAN           000343' \r
+PSCAN1          000376' \r
+PSCAN2          000352' \r
+PSCAN3          000351' \r
+PSCAN4          000374' \r
+PSCAN5          000407' \r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 81-9\r
+        SYMBOL TABLE\r
+\r
+PSCAN6          000404' \r
+PSCANA          000333' \r
+PSCANB          000326' \r
+PTEXT           002155' \r
+PTEXT1          002167' \r
+PTEXT2          002166' \r
+PTPBIT          000400  SPD\r
+PTRBIT          000200  SPD\r
+PTRPT           004036' \r
+PUT             000756' \r
+PUTCON          002175' \r
+QFLG            000001  SPD\r
+QPIP            003727' \r
+QUEST           001652' \r
+QUEST2          001662' \r
+RBSIZ           000005  SPD\r
+READ1           002000  SPD\r
+REDFLG          000001  SPD\r
+RENAME          002553' \r
+RENSN           004651' \r
+RESET   047000  000000  \r
+REWIND          003602' \r
+RFLG            000100  SPD\r
+RIBSTS          000017  SPD\r
+RIMFLG          000002  SPD\r
+RIMSW           000000  SPD\r
+RIMTB           004652' \r
+RSDCFL          000200  SPD\r
+RUN     047000  000035  \r
+RXFLG           020000  SPD\r
+SAVAC           003761' \r
+SBIN            000004  SPD\r
+SLEOT           003615' \r
+SNI             100000  SPD\r
+SPACE           000040  SPD\r
+SPCT            004030' \r
+SPMOD           001000  SPD\r
+SPOK            020000  SPD\r
+SQMOD           000200  SPD\r
+SQNUM           004014' \r
+SR2             002371' \r
+SSWTCH          001000  SPD\r
+STAR            003730' \r
+STS             000400  SPD\r
+SUS             010000  SPD\r
+SVER            000005  SPD\r
+SVIBF           003740' \r
+SVJBF1          004017' \r
+SVJBFF          004016' \r
+SVOBF           003741' \r
+SVPTR1          004023' \r
+SVPTR2          004024' \r
+SYSFLG          000002  SPD\r
+\r\fPIP V.030 MOD SANDERS/DBP 19-AUG-71                 PAGE 81-10\r
+        SYMBOL TABLE\r
+\r
+SYSLST          000004  SPD\r
+SYSPP           004037' \r
+T1              000001  \r
+T2              000002  \r
+T3              000003  \r
+T4              000007  \r
+T5              000011  \r
+T6              000012  \r
+T7              000014  \r
+TAB             000011  SPD\r
+TABCT           004027' \r
+TABOUT          000755' \r
+TABSP           000010  SPD\r
+TAPE            000004  SPD\r
+TBMOD           000004  SPD\r
+TFI             003753' \r
+TFO             003756' \r
+TLBRKT          004025' \r
+TMPCOR  047000  000044  \r
+TMPI            004000  SPD\r
+TMPO            010000  SPD\r
+TOTBRK          004026' \r
+TTYBIT          000010  SPD\r
+TTYIN           001000  SPD\r
+TTYOUT          100000  SPD\r
+TTYZ            002376' \r
+TWL             003731' \r
+TXTA            001062' \r
+TXTB            001066' \r
+TXTC            001074' \r
+TXTC1           001100' \r
+TXTD            001042' \r
+TXTD1           001047' \r
+TXTD2           001055' \r
+UNLOAD          003600' \r
+UPROJ           003734' \r
+UTPCLR  047000  000013  \r
+VPIP            000030  SPD\r
+WAIT    072000  000000  \r
+WCH             000000  SPD\r
+WRTLOK          400000  SPD\r
+XFLG            002000  SPD\r
+XNAME           004135' \r
+XOFF            000023  SPD\r
+XON             000021  SPD\r
+XSS             002230' \r
+ZCNT            004034' \r
+ZFLG            004000  SPD\r
+ZRF             004052' \r
+ZRO             003721' \r
+\fEEEEEEEEEEEEEEE      DDDDDDDDDDDD            IIIIIIIII         TTTTTTTTTTTTTTT         OOOOOOOOO         RRRRRRRRRRRR   \r
+EEEEEEEEEEEEEEE      DDDDDDDDDDDD            IIIIIIIII         TTTTTTTTTTTTTTT         OOOOOOOOO         RRRRRRRRRRRR   \r
+EEEEEEEEEEEEEEE      DDDDDDDDDDDD            IIIIIIIII         TTTTTTTTTTTTTTT         OOOOOOOOO         RRRRRRRRRRRR   \r
+EEE                  DDD         DDD            III                  TTT            OOO         OOO      RRR         RRR\r
+EEE                  DDD         DDD            III                  TTT            OOO         OOO      RRR         RRR\r
+EEE                  DDD         DDD            III                  TTT            OOO         OOO      RRR         RRR\r
+EEE                  DDD         DDD            III                  TTT            OOO         OOO      RRR         RRR\r
+EEE                  DDD         DDD            III                  TTT            OOO         OOO      RRR         RRR\r
+EEE                  DDD         DDD            III                  TTT            OOO         OOO      RRR         RRR\r
+EEEEEEEEEEEE         DDD         DDD            III                  TTT            OOO         OOO      RRRRRRRRRRRR   \r
+EEEEEEEEEEEE         DDD         DDD            III                  TTT            OOO         OOO      RRRRRRRRRRRR   \r
+EEEEEEEEEEEE         DDD         DDD            III                  TTT            OOO         OOO      RRRRRRRRRRRR   \r
+EEE                  DDD         DDD            III                  TTT            OOO         OOO      RRR   RRR      \r
+EEE                  DDD         DDD            III                  TTT            OOO         OOO      RRR   RRR      \r
+EEE                  DDD         DDD            III                  TTT            OOO         OOO      RRR   RRR      \r
+EEE                  DDD         DDD            III                  TTT            OOO         OOO      RRR      RRR   \r
+EEE                  DDD         DDD            III                  TTT            OOO         OOO      RRR      RRR   \r
+EEE                  DDD         DDD            III                  TTT            OOO         OOO      RRR      RRR   \r
+EEEEEEEEEEEEEEE      DDDDDDDDDDDD            IIIIIIIII               TTT               OOOOOOOOO         RRR         RRR\r
+EEEEEEEEEEEEEEE      DDDDDDDDDDDD            IIIIIIIII               TTT               OOOOOOOOO         RRR         RRR\r
+EEEEEEEEEEEEEEE      DDDDDDDDDDDD            IIIIIIIII               TTT               OOOOOOOOO         RRR         RRR\r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  11:23:08\r
+File: DSKB0 :EDITOR.LST   [8,200] Created: 20-April-1967 11:19:00 Printed: 24-April-1978 11:22:32
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:1620 \r
+File will be deleted after printing\r
+\f\rEDITOR   V.003        1 APRIL 1968                 PAGE 3\r
+        DECEDIT PARAMETERS\r
+\r
+                                00030   TITLE EDITOR   V.003    1 APRIL 1968\r
+                                00040   SUBTTL DECEDIT PARAMETERS\r
+\r
+                                00060   DEFINE ERR (A) <        JSR A,ERRORX>\r
+                                00070   DEFINE TSTRIN (A) <     EXP "A"+"A"+1>\r
+\r
+                        000001  00090   S0=1\r
+                        000002  00100   S1=2\r
+                        000004  00110   S2=4\r
+                        000010  00120   S3=10\r
+                        000040  00130   S4=40\r
+                        000020  00140   S5=20\r
+                        000100  00150   S6=100\r
+                        000200  00160   S7=200\r
+                        000400  00170   S8=400\r
+                        000003  00180   PDP=3\r
+                        000004  00190   FL=4\r
+                        000011  00200   INDEX=11\r
+                        000012  00210   WC=12\r
+                        000013  00220   C=13\r
+                        000014  00230   COTP=14\r
+                        000005  00240   IPT=5\r
+                        000006  00250   TPT=6\r
+                        000010  00260   P=10\r
+                        000015  00270   SINDEX=15\r
+                        000016  00280   CINDEX=16\r
+                        000017  00290   LAST=17\r
+                        000002  00300   TYP=2\r
+                        000003  00310   DT=3\r
+                                00320   OPDEF EXIT [POPJ PDP,]\r
+                                00330   OPDEF CAL [PUSHJ PDP,]\r
+                                00340   OPDEF SAVE [PUSH PDP,]\r
+                                00350   OPDEF UNSAVE [POP PDP,]\r
+                                00360   EXTERNAL JOBFF\r
+\r\fEDITOR   V.003        1 APRIL 1968                 PAGE 4\r
+        DECTAPE IO - AUGUST 25, 1965\r
+\r
+                                00380   SUBTTL DECTAPE IO - AUGUST 25, 1965\r
+\r
+                        001000  00400   FOPEN=1000\r
+                        000001  00410   AC1=1\r
+                        000002  00420   AC2=2\r
+                        000005  00430   AC3=5\r
+                        000006  00440   AC4=6\r
+\r
+        000000' 607200  000001  00460   FILLB:  TLNN FL,1;      IS BUFFER LOADED\r
+        000001' 254000  000041' 00470           JRST FILLB1;    NO, SO LOAD IT\r
+        000002' 200540  001060' 00480           MOVE C,WBC;     GET BUFFER COUNT\r
+        000003' 307540  000177  00490           CAIG C,177;     IS IT GETTIN FULL\r
+        000004' 263140  000000  00500   ATSALL: EXIT;   NO\r
+        000005' 620200  000400  00510           TRZ FL,S8;      SET FIRST BLOCK FLAG TO FALSE\r
+        000006' 660200  000010  00520           TRO FL,S3;      AND MODIFIED FLAG TO TRUE\r
+        000007' 201100  001064' 00530           MOVEI AC2,WB;   GET WORKING BUFFER ADDRESS\r
+        000010' 201240  000001  00540           MOVEI AC3,1;    SEQUENCE NUMBER TEST\r
+        000011' 271100  000125  00550           ADDI AC2,125;   DUMP ABOUT 2/3 OF BUFFER\r
+        000012' 616242  000000  00560           TDNN AC3,0(AC2);        BUT NOT A FRACTIONAL LINE\r
+        000013' 364100  000012' 00570           SOJA AC2,.-1;   HUNT FOR BEGIN OF LINE\r
+        000014' 550400  000135' 00580           HRRZ P,THSBLK;  UPDATE PREVIOUS BLOCK NUMBER\r
+        000015' 073140  000136' 00590           UGETF DT,IAMTEM;        NEXT FREE BLOCK\r
+        000016' 075150  000000  00600           USETO DT,0(P);  PREPARE TO DUMP THIS BLOCK\r
+        000017' 200400  000136' 00610           MOVE P,IAMTEM;  AND PREPARE NEXT BLOCK\r
+        000020' 200240  001050' 00620           MOVE AC3,DTOBUF;        SET UP BLT\r
+        000021' 516405  000001  00630           HRLZM P,1(AC3); LINK TO NEXT DECTAPE BLOCK\r
+        000022' 505240  001064' 00640           HRLI AC3,WB;    SOURCE\r
+        000023' 271240  000002  00650           ADDI AC3,2;     +2\r
+        000024' 200040  000002  00660           MOVE AC1,AC2;   LAST\r
+        000025' 275040  001064' 00670           SUBI AC1,WB;    AND MAKE A COUNT OF IT\r
+        000026' 274540  000001  00680           SUB C,AC1;      TOTAL REMAINING WORDS\r
+        000027' 202540  001060' 00690           MOVEM C,WBC;    SET NEW COUNT\r
+        000030' 271045  777777  00700           ADDI AC1,-1(AC3);       SETUP FOR BLT\r
+        000031' 260140  000122' 00710           CAL DUMX;       TRANSFER AND DUMP BLOCK\r
+        000032' 201240  001064' 00720           MOVEI AC3,WB;   GET DEST FOR MOVE UP\r
+        000033' 504240  000002  00730           HRL AC3,AC2;    AND SOURCE\r
+        000034' 200040  000005  00740           MOVE AC1,AC3;   GENERATE LAST ADDRESS\r
+        000035' 271053  000000  00750           ADDI AC1,(C);   FROM COUNT\r
+        000036' 251241  000000  00760           BLT AC3,(AC1);  ON TOAST\r
+        000037' 250400  000135' 00770           EXCH P,THSBLK;  SET NEW BLOCK\r
+        000040' 254000  000000' 00780           JRST FILLB;     GO AGAIN\r
+\r
+        000041' 607200  001000  00800   FILLB1: TLNN FL,FOPEN;  IS A FILE OPEN\r
+                                00810           ERR 7;          NO, SO *NFO*\r
+        000042' 264340  000162'                 JSR 7,ERRORX\r
+        000043' 661200  000001  00820           TLO FL,1;       SET TO FILLED BUFFER\r
+        000044' 254000  000075' 00830           JRST GETF;      AND GET THE FIRST BLOCK\r
+\r\fEDITOR   V.003        1 APRIL 1968                 PAGE 5\r
+        DECTAPE IO - AUGUST 25, 1965\r
+\r
+        000045' 602200  000001  00850   GET:    TRNE FL,S0;     FORWARD OR REVERSE\r
+        000046' 254000  000073' 00860           JRST GETL;      REVERSE\r
+\r
+        000047' 602200  000020  00880   GETN:   TRNE FL,S5;     IS THERE ANY MORE\r
+        000050' 263140  000000  00890           EXIT;           NO\r
+        000051' 554000  001063' 00900           HLRZ WBF;       GET LINK\r
+        000052' 260140  000106' 00910           CAL DUMPB;      OUTPUT BLOCK\r
+        000053' 200400  000135' 00920           MOVE P,THSBLK;  SAVE PREVIOUS FLOCK NUMBER\r
+        000054' 620200  000400  00930           TRZ FL,S8;      SET FIRST BLOCK FLAG TO FALSE\r
+        000055' 552000  000135' 00940   GET0:   HRRZM THSBLK;   SAVE CURRENT BLOCK NUMBER\r
+        000056' 075160  000135' 00950           USETO DT,@THSBLK;       SER OUTPUT FOR PRESENT BLOCK\r
+\r
+        000057' 066140  000000  00970   SLURP:  INPUT DT,0;     INPUT A NEW BLOCK\r
+        000060' 554000  001063' 00980           HLRZ WBF;       GET LINK\r
+        000061' 336000  000000  00990           SKIPN;          WE DONT LIKE ZERO LINKS\r
+        000062' 660200  000020  01000           TRO FL,S5;      SO WE SET A FLAG TO REMIND US\r
+        000063' 550000  001063' 01010           HRRZ WBF;       GET COUNT\r
+        000064' 202000  001060' 01020           MOVEM WBC;      AND SAVE IT\r
+        000065' 606200  000020  01030           TRNN FL,S5;     WAS IT END OF FILE\r
+        000066' 332000  000000  01040           SKIPE;          EMPTY BLOCK\r
+        000067' 263140  000000  01050           EXIT;           END OF FILE OR NON-EMPTY BLOCK\r
+        000070' 554000  001063' 01060           HLRZ WBF;       EMPTY BLOCK - GET LINK\r
+        000071' 606200  000001  01070           TRNN FL,S0;     DIRECTION CHECK\r
+        000072' 254000  000055' 01080           JRST GET0;      FORWARD\r
+\r
+        000073' 260140  000106' 01100   GETL:   CAL DUMPB;      REVERSE - GET LAST BLOCK-SAVE THIS ONE\r
+        000074' 326400  000100' 01110           JUMPN P,GETL1;  IS LAST BLOCK AVAILABLE\r
+        000075' 550400  001013' 01120   GETF:   HRRZ P,FBNUM;   NO, SO GET FIRST ONE\r
+        000076' 620200  000021  01130           TRZ FL,S0+S5;   SET FORWARD AND END\r
+        000077' 664200  000400  01140           TROA FL,S8;     SET FIRST BLOCK AND SKIP\r
+        000100' 620200  000420  01150   GETL1:  TRZ FL,S5+S8;   SET NON-END AND NON-FIRST\r
+        000101' 074150  000000  01160           USETI DT,(P);   ESTABLISH INPUT BLOCK NUMBER\r
+        000102' 075150  000000  01170           USETO DT,(P);   AND OUTPUT BLOCK NUMBER\r
+        000103' 202400  000135' 01180           MOVEM P,THSBLK; UPDATE CURRENT BLOCK NUMBER\r
+        000104' 402000  000010  01190           SETZM P;        AND ZERO PREVIOUS BLOCK NUMBER\r
+        000105' 254000  000057' 01200           JRST SLURP;     AND INPUT THE BLOCK\r
+\r\fEDITOR   V.003        1 APRIL 1968                 PAGE 6\r
+        DECTAPE IO - AUGUST 25, 1965\r
+\r
+        000106' 260140  000000' 01220   DUMPB:  CAL FILLB;      SPLIT BLOCKS IF THE OVER-RUN\r
+        000107' 626200  000010  01230           TRZN FL,S3;     ANY MODS MADE\r
+        000110' 263140  000000  01240           EXIT;           NO\r
+        000111' 200100  001050' 01250           MOVE AC2,DTOBUF;        POINTER TO BUFFERS\r
+        000112' 201242  000002  01260           MOVEI AC3,2(AC2);       FIRST WORD ADDRESS\r
+        000113' 505240  001064' 01270           HRLI AC3,WB;    FIRST DATA WORD\r
+        000114' 554040  001063' 01280           HLRZ AC1,WBF;   BLOCK NUMBER\r
+        000115' 336000  000001  01290           SKIPN AC1;      LAST BLOCK\r
+        000116' 370000  000001  01300           SOS AC1;        YES, SO EXTEND\r
+        000117' 506042  000001  01310           HRLM AC1,1(AC2);        INTO LINK\r
+        000120' 201042  000001  01320           MOVEI AC1,1(AC2);       PREPARE BLT\r
+        000121' 270040  001060' 01330           ADD AC1,WBC;    SIZE OF BLT\r
+        000122' 251241  000000  01340   DUMX:   BLT AC3,(AC1);  BLOCK UP SUBROUTINE\r
+        000123' 542040  001051' 01350           HRRM AC1,DTOBF1;        LAST ADDRESS\r
+        000124' 067140  000000  01360           OUTPUT DT,0;    DUMP IT\r
+        000125' 061140  740000  01370           STATO DT,740000;        CHECK FOR DEVICE ERROR\r
+        000126' 263140  000000  01380           EXIT;           ALL IS GOOD\r
+        000127' 476000  000004  01390           SETOM FL     ; DDE ERROR\r
+                                01400           ERR 12;         *DDE*\r
+        000130' 264500  000162'                 JSR 12,ERRORX\r
+\r
+        000131' 603200  001000  01420   FINISH: TLNE FL,FOPEN;  IF A FILE IS OPEN\r
+        000132' 260140  000106' 01430           CAL DUMPB;      DUMP IT\r
+        000133' 071140  000000  01440   FINIS2: RELEAS DT,0;    RELEASE THE TAPE\r
+        000134' 254000  001030' 01450           JRST INITIX;    AND GO BACK TO SETUP\r
+\r
+        000135' 000000  000000  01470   THSBLK: 0;              PRESENT BLOCK NUMBER\r
+        000136' 000000  000000  01480   IAMTEM: 0;              TEMPORARY\r
+\r\fEDITOR   V.003        1 APRIL 1968                 PAGE 9\r
+        CONTROL - AUGUST 25, 1965\r
+\r
+                                01520   SUBTTL CONTROL - AUGUST 25, 1965\r
+                                01530                           ;MAIN LISTEN AND DISPATCH FOR EDITOR CONTROL MODE\r
+        000137' 260140  000612' 01540   OUTTER: CAL GETCHR;     GET ONE CHARACTER\r
+        000140' 306540  000015  01550           CAIN C,15;      INITIAL CARRIAGE RETURNS\r
+        000141' 254000  000137' 01560           JRST OUTTER;    ARE IGNORED\r
+        000142' 306540  000111  01570           CAIN C,"I"\r
+        000143' 254000  000205' 01580           JRST INSE\r
+        000144' 306540  000104  01590           CAIN C,"D"\r
+        000145' 254000  000425' 01600           JRST DELETE\r
+        000146' 306540  000120  01610           CAIN C,"P"\r
+        000147' 254000  000471' 01620           JRST PRINT\r
+        000150' 306540  000105  01630           CAIN C,"E"\r
+        000151' 254000  000131' 01640           JRST FINISH\r
+        000152' 302540  000033  01650           CAIE C,33;      ALTERNATE ALTMOD\r
+        000153' 306540  000175  01660           CAIN C,175;     THE REGULAR ALTMOD\r
+        000154' 254000  000522' 01670           JRST PNEXT\r
+        000155' 306540  000123  01680           CAIN C,"S"\r
+        000156' 254000  000657' 01690           JRST DECINI\r
+                                01700           ERR 1;          ILLEGAL COMMAND\r
+        000157' 264040  000162'                 JSR 1,ERRORX\r
+                                01710   ;OUTPUT A CARRIAGE RETURN\r
+        000160' 201440  000171' 01720   CRT:    MOVEI INDEX,CRM;        PICK UP THE POINTER\r
+        000161' 254000  000601' 01730           JRST OTLINE;    OUTPUT CRT-LF-*\r
+\r
+                                01750   ;ERROR PRINT\r
+        000162' 000000  000000  01760   ERRORX: 0;              CALLED BY JSR X,ERRORX\r
+        000163' 550440  000162' 01770           HRRZ INDEX,ERRORX;      WHERE X IS THE ERROR NUMBER\r
+        000164' 135440  000204' 01780           LDB INDEX,EPT;  EXTRACT THE X\r
+        000165' 201451  000171' 01790           MOVEI INDEX,ERT-1(INDEX)\r
+        000166' 201140  001304' 01800   ERROX1: MOVEI PDP,PDSTAK;       INITIALIZE PUSHDOWN\r
+        000167' 260140  000601' 01810   ERROX2: CAL OTLINE;     OUTPUT ERROR MESSAGE\r
+\r\fEDITOR   V.003        1 APRIL 1968                 PAGE 10\r
+        CONTROL - AUGUST 25, 1965\r
+\r
+        000170' 254000  001035' 01830           JRST COMLEV;    AND A CARRIAGE RETURN - EXIT\r
+                                01840   ;ERROR MESSAGES ET.AL.  THESE MUST NOT BE MOVED ABOUT\r
+                                01850   ;SINCE THE PRINT ROUTINE DEPENDS ON THE BIT 35 OF THE\r
+                                01860   ;NEXT MESSAGE TO TERMINATE THE PRESENT ONE\r
+\r
+        000171' 064245  200000  01880   CRM:    OCT 64245200000;        THE CARRIAGE RETURN-LINE FEED-*\r
+        000172'                 01890   ERT:    TSTRIN <*ILC*>; ILLEGAL COMMAND\r
+        000172' 252231  441525                  EXP "*ILC*"+"*ILC*"+1\r
+                                01900           TSTRIN <*NLN*>; NON-EXISTENT LINE\r
+        000173' 252351  447125                  EXP "*NLN*"+"*NLN*"+1\r
+                                01910           TSTRIN <*ILS*>; ILLEGAL SEQUENCE\r
+        000174' 252231  451525                  EXP "*ILS*"+"*ILS*"+1\r
+                                01920           TSTRIN <*ILR*>; ILLEGAL REFERENCE\r
+        000175' 252231  451125                  EXP "*ILR*"+"*ILR*"+1\r
+                                01930           TSTRIN <*UNA*>; UNIT NOT AVAILABLE\r
+        000176' 252531  640525                  EXP "*UNA*"+"*UNA*"+1\r
+                                01940           TSTRIN <*DCE*>; DIRECTORY CAPACITY EXCEEDED\r
+        000177' 252110  342525                  EXP "*DCE*"+"*DCE*"+1\r
+                                01950           TSTRIN <*NFO*>; NO FILE OPEN\r
+        000200' 252350  647525                  EXP "*NFO*"+"*NFO*"+1\r
+                                01960           TSTRIN <*FAU*>; FILE NAME ALREADY IN USE\r
+        000201' 252150  152525                  EXP "*FAU*"+"*FAU*"+1\r
+                                01970           TSTRIN <*NCF*>; NOT A CURRENT FILE\r
+        000202' 252350  343125                  EXP "*NCF*"+"*NCF*"+1\r
+                                01980           TSTRIN <*DDE*>; DEVICE DATA ERROR\r
+        000203' 252110  442525                  EXP "*DDE*"+"*DDE*"+1\r
+        000204' 270411  777777  01990   EPT:    POINT 4,-1(INDEX),12;   THE ERROR PRINT DEPENDS\r
+                                02000                           ;ON THE 1 IN BIT 35 HERE\r
+                                02010   ;COMMUNICATIONS\r
+\r\fEDITOR   V.003        1 APRIL 1968                 PAGE 12\r
+        EDITOR - AUGUST 25, 1965\r
+\r
+                                02040   SUBTTL EDITOR - AUGUST 25, 1965\r
+\r
+                                02060   ;INSERT LINE(S)\r
+        000205' 260140  000616' 02070   INSE:   CAL GETSEQ;     GET THE SEQUENCE NUMBER AND STEP\r
+        000206' 202000  000016  02080           MOVEM CINDEX;   THIS INSTR SKIPED IF ONLY ONE ARG\r
+        000207' 254000  000216' 02090           JRST INSE3;     PROCESS IT\r
+        000210' 260140  000333' 02100   INSE2:  CAL FIND;       TOP OF THE LOOP - SEARCH FOR THE LINE\r
+        000211' 316651  000000  02110           CAMN SINDEX,(INDEX);    EXACT MATCH?\r
+                                02120           ERR 4;          YES, *ILR*\r
+        000212' 264200  000162'                 JSR 4,ERRORX\r
+        000213' 260140  000252' 02130           CAL BACK1;      BACKUP TO LAST LINE\r
+        000214' 312000  000017  02140           CAME LAST;      IS IT INDEED THE LAST ONE WE PUT IN\r
+                                02150           ERR 3;          NO, *ILS*\r
+        000215' 264140  000162'                 JSR 3,ERRORX\r
+        000216' 260140  000333' 02160   INSE3:  CAL FIND;       GET THE LINE\r
+        000217' 260140  000541' 02170           CAL OTSEQ;      OUTPUT THE SEQUENCE NUMBER\r
+        000220' 260140  000547' 02180           CAL GETLIN;     GET THE INPUT LINE\r
+        000221' 254000  000137' 02190           JRST OUTTER;    ALT MODE\r
+        000222' 260140  000227' 02200           CAL INSED;      INSERT AND DELETE\r
+        000223' 202640  000017  02210           MOVEM SINDEX,LAST;      SAVE AWAY THIS LINE NUMBER\r
+        000224' 202640  001056' 02220           MOVEM SINDEX,FIRST\r
+        000225' 260140  000305' 02230           CAL ASCIA;      STEP SEQUENCE\r
+        000226' 254000  000210' 02240           JRST INSE2;     LOOP BACK FOR NEXT LINE\r
+\r
+        000227' 550000  000014  02260   INSED:  HRRZ COTP;      GET THE SIZE OF THE LINE\r
+        000230' 201040  000000  02270           MOVEI 1,0;      SETUP DIRECTION FLAG\r
+        000231' 311000  000012  02280           CAML WC;        IF LINE SIZE IS GREATER-EQUAL THAN NEW\r
+        000232' 201040  000001  02290           MOVEI 1,1;      SET FLAG TO 1\r
+        000233' 312000  000012  02300           CAME WC;        IF OLD LINE IS NON-NULL\r
+        000234' 254000  000264' 02310           JRST INSEG;     DELETE IT\r
+        000235' 322500  000245' 02320   INSE1:  JUMPE WC,INSE16;        NULL SIZE TO INPUT\r
+        000236' 554440  000014  02330           HLRZ INDEX,COTP;        GET LINE ADDRESS\r
+        000237' 270440  000012  02340           ADD INDEX,WC;   AND SIZE\r
+        000240' 547000  000014  02350           HLRS COTP;      AND COUNT\r
+        000241' 505600  001313' 02360           HRLI COTP,TTB;  SET SOURCE\r
+        000242' 200040  000014  02370           MOVE 1,COTP;    READY FOR BLT\r
+        000243' 251611  777777  02380           BLT COTP,-1(INDEX);     MOVE IN THE NEW LINE\r
+        000244' 200600  000001  02390           MOVE COTP,1;    RESTORE COTP\r
+        000245' 660200  000110  02400   INSE16: TRO FL,S3+S6;   SET MOD FLAGS - GENERAL EXIT\r
+        000246' 201040  001064' 02410   CLEARE: MOVEI 1,WB;     CLEAR LAST BUFFER WORD\r
+        000247' 270040  001060' 02420           ADD 1,WBC;      END OF BUFFER\r
+        000250' 402001  000000  02430           SETZM (1);      SET TO ZERO\r
+        000251' 263140  000000  02440           EXIT;           GO AWAY\r
+\r
+                                02460   ;BACK UP LINE POINTER\r
+        000252' 302440  001064' 02470   BACK1:  CAIE INDEX,WB;  IS THIS THE FIRST LINE IN THE BUFFER\r
+        000253' 254000  000262' 02480           JRST BACK;      NO, SO NORMAL PROCESS\r
+        000254' 660200  000001  02490           TRO FL,S0;      WE MUST GET THE PREVIOUS BLOCK\r
+        000255' 260140  000045' 02500           CAL GET;        INPUT IT - THIS WILL ALWAYS WORK\r
+        000256' 270440  001060' 02510           ADD INDEX,WBC;  LAST LINE\r
+        000257' 254000  000262' 02520           JRST BACK;      NOW WE BACK IT UP\r
+        000260' 200011  000000  02530           MOVE (INDEX);   TOP OF LOOP - PICK UP DATA WORD\r
+        000261' 606000  000001  02540           TRNN 1;         BIT ONE MAKES IT A SEQUENCE N\r
+\r\fEDITOR   V.003        1 APRIL 1968                 PAGE 12-1\r
+        EDITOR - AUGUST 25, 1965\r
+\r
+        000262' 364440  000260' 02550   BACK:   SOJA INDEX,.-2; COUNT IT BACK\r
+        000263' 263140  000000  02560           EXIT\r
+\r\fEDITOR   V.003        1 APRIL 1968                 PAGE 13\r
+        EDITOR - AUGUST 25, 1965\r
+\r
+        000264' 260140  000414' 02580   INSEG:  CAL CSIZE;      COMPUTE SIZE OF XFER\r
+        000265' 322000  000276' 02590           JUMPE INSEX;    ZERO SIZE XFER\r
+        000266' 326040  000272' 02600           JUMPN 1,INSER;  FORWARD BLT\r
+        000267' 507000  000000  02610           HRLS 0;         REVERSE XFER\r
+        000270' 270440  000000  02620           ADD INDEX,0;    SET UP POINTER WORD\r
+        000271' 553000  000000  02630           HRRZS 0;        READY TO GO\r
+        000272' 202440  000013  02640   INSER:  MOVEM INDEX,C;  PROTECT XFER WORD\r
+        000273' 251551  000000  02650           BLT C,(INDEX);  XFER ONE WORD\r
+        000274' 256001  000303' 02660           XCT ITAB(1);    STEP UP OR DOWN\r
+        000275' 365000  000272' 02670           SOJGE INSER;    IF NOT DONE, LOOP BACK\r
+        000276' 550000  000014  02680   INSEX:  HRRZ COTP;      SETUP SIZE\r
+        000277' 274000  000012  02690           SUB WC;         OF NEW BLOCK\r
+        000300' 250000  001060' 02700           EXCH WBC;\r
+        000301' 276000  001060' 02710           SUBM WBC;       NOW NEW BLOCK SIZE IS IN WBC\r
+        000302' 254000  000235' 02720           JRST INSE1;     ALL DONE - GO BACK\r
+\r
+        000303' 274440  000332' 02740   ITAB:   SUB INDEX,K5;   SHRINK\r
+        000304' 270440  000332' 02750           ADD INDEX,K5;   GROW\r
+\r
+                                02770   ;THE ASCII ADDER\r
+\r
+        000305' 261140  000016  02790   ASCIA:  SAVE CINDEX;    PROTECT THE STEP\r
+        000306' 200340  000015  02800           MOVE 7,SINDEX\r
+        000307' 404700  000327' 02810           AND CINDEX,K2;  MASK OUT 60S\r
+        000310' 242700  000001  02820           LSH CINDEX,1;\r
+        000311' 434640  000331' 02830           IOR SINDEX,K4;\r
+        000312' 270640  000326' 02840           ADD SINDEX,K1;\r
+        000313' 270700  000015  02850           ADD CINDEX,SINDEX;      EXCESS 166 ADDITION\r
+        000314' 404700  000330' 02860           AND CINDEX,K3;  MASK OUT CARRY BITS\r
+        000315' 200640  000331' 02870           MOVE SINDEX,K4;\r
+        000316' 404640  000016  02880           AND SINDEX,CINDEX;\r
+        000317' 240640  777775  02890           ASH SINDEX,-3;  GIVES 000 WHERE CARRY HAPPENED, 006\r
+        000320' 276700  000015  02900           SUBM CINDEX,SINDEX;     CONVERT TO EXCESS 0 OR 60\r
+        000321' 434640  000331' 02910           IOR SINDEX,K4;  CONVERT TO EXCESS 60\r
+        000322' 262140  000016  02920           UNSAVE CINDEX;  RESTORE THE STEP\r
+        000323' 311340  000015  02930           CAML 7,SINDEX;  IF 99999, DON'T GO TO 00009\r
+        000324' 264140  000162' 02940           ERR 3^  JSR 3,ERRORX^\r
+        000325' 263140  000000  02950           EXIT;           LEAVE\r
+\r
+        000326' 432150  643214  02970   K1:     OCT 432150643214;       106\r
+        000327' 036170  743617  02980   K2:     OCT 036170743617;       017\r
+        000330' 375767  737576  02990   K3:     OCT 375767737576;       077\r
+        000331' 301406  030141  03000   K4:     TSTRIN <00000>^ EXP "00000"+"00000"+1^\r
+        000332' 000001  000001  03010   K5:     XWD 1,1;        +,- ONE TO BOTH HALVES\r
+\r\fEDITOR   V.003        1 APRIL 1968                 PAGE 14\r
+        EDITOR - AUGUST 25, 1965\r
+\r
+        000333' 260140  000000' 03030   FIND:   CAL FILLB;      FILL THE BUFFER\r
+        000334' 620200  000041  03040   FIND1:  TRZ FL,S0+S4;   FORWARD SEARCH AND INITIAL SEARCH\r
+        000335' 550000  001060' 03050   FIND2:  HRRZ WBC;       GET THE BUFFER SIZE\r
+        000336' 322000  000360' 03060           JUMPE FINDA;    EMPTY BLOCK\r
+        000337' 201440  001064' 03070           MOVEI INDEX,WB; GET THE DATA ADDRESS\r
+        000340' 200000  001064' 03080           MOVE WB;        GET THE FIRST DATA WORD\r
+        000341' 313000  000015  03090           CAMLE SINDEX;   ARE WE PAST THE LINE\r
+        000342' 254000  000360' 03100           JRST FINDA;     YES, REVERSE\r
+        000343' 316000  000015  03110           CAMN SINDEX;    EXACT MATCH\r
+        000344' 254000  000402' 03120           JRST FINDEQ;    YES, BE HAPPY\r
+        000345' 270440  001060' 03130           ADD INDEX,WBC;  FORM ADDRESS OF LAST DATA WORD\r
+        000346' 260140  000262' 03140           CAL BACK;       FIND ITS SEQUENCE NUMBER\r
+        000347' 313000  000015  03150           CAMLE SINDEX;   IT THE LINE IN THIS BLOCK\r
+        000350' 254000  000372' 03160           JRST FIND3A;    YES, INVESTIGATE FURTHER\r
+        000351' 316000  000015  03170           CAMN SINDEX;    EXACT MATCH\r
+        000352' 254000  000402' 03180           JRST FINDEQ;    YES\r
+        000353' 602200  000020  03190   FINDX:  TRNE FL,S5;     IS THIS LAST BLOCK\r
+        000354' 254000  000367' 03200           JRST FINDC;     YES, SO EXIT WITH THIS ADDRESS\r
+        000355' 660200  000040  03210           TRO FL,S4;      SCANNING HAS STARTED\r
+        000356' 620200  000001  03220           TRZ FL,S0;      AND GO FORWARD\r
+        000357' 254000  000365' 03230           JRST FIND4;     AWAY WE GO\r
+\r
+        000360' 201440  000000  03250   FINDA:  MOVEI INDEX,0;  SETUP FOR REVERSE\r
+        000361' 606200  000040  03260           TRNN FL,S4;     HAVE WE BEEN HERE BEFORE\r
+        000362' 602200  000400  03270           TRNE FL,S8;     OR IS IT THE FIRST BLOCK\r
+        000363' 254000  000370' 03280           JRST FINDR;     YES, SO USE THIS ADDRESS\r
+        000364' 660200  000001  03290           TRO FL,S0;      OTHERWISE, GO BACK ONE BLOCK\r
+        000365' 260140  000045' 03300   FIND4:  CAL GET;        GET THE BLOCK\r
+        000366' 254000  000335' 03310           JRST FIND2;     SEARCH FOR IT\r
+\r
+        000367' 550440  001060' 03330   FINDC:  HRRZ INDEX,WBC; TAIL OF BLOCK IF ENTERED HERE\r
+        000370' 271440  001064' 03340   FINDR:  ADDI INDEX,WB;  HEAD OF BLOCK IF ENTERED HERE\r
+        000371' 254000  000400' 03350           JRST FIND3;     AND RETURN\r
+\r
+        000372' 201440  001060' 03370   FIND3A: MOVEI INDEX,WBC;        WE WISH TO SCAN THIS BLOCK FOR\r
+        000373' 260140  000406' 03380           CAL FINDES;     THIS LINE - COMPUTE LINE SIZE\r
+        000374' 316000  000015  03390           CAMN SINDEX;    EXACT MATCH\r
+        000375' 254000  000402' 03400           JRST FINDEQ;    YES, WELL, GOOD\r
+        000376' 317000  000015  03410           CAMG SINDEX;    HAVE WE PASSED IT\r
+        000377' 344440  000373' 03420           AOJA INDEX,FIND3A+1;    NO, SO CONTINUE\r
+        000400' 514600  000011  03430   FIND3:  HRLZ COTP,INDEX;        RETURN THE ADDRESS OF THE LINE\r
+        000401' 254000  000246' 03440           JRST CLEARE;    EXIT\r
+\r
+        000402' 514600  000011  03460   FINDEQ: HRLZ COTP,INDEX;        FOUND THE DESIRED LINE\r
+        000403' 260140  000406' 03470           CAL FINDES;     COMPUTE ITS SIZE\r
+        000404' 554440  000014  03480           HLRZ INDEX,COTP;        SET UP INDEX\r
+        000405' 254000  000246' 03490           JRST CLEARE;    AND EXIT\r
+\r\fEDITOR   V.003        1 APRIL 1968                 PAGE 15\r
+        EDITOR - AUGUST 25, 1965\r
+\r
+        000406' 350000  000014  03510   FINDES: AOS COTP;       FIND SIZE OF LINE\r
+        000407' 200011  000001  03520           MOVE 1(INDEX);  FIND NEXT SEQUENCE NUMBER\r
+        000410' 350000  000011  03530           AOS INDEX;\r
+        000411' 606000  000001  03540           TRNN 1;         SEQUENCE NUMBER?\r
+        000412' 326000  000406' 03550           JUMPN FINDES;   NO, BUT ZERO ALSO DENOTES END\r
+        000413' 263140  000000  03560           EXIT;           DONE\r
+\r
+        000414' 550000  000014  03580   CSIZE:  HRRZ COTP;      COMPUTE SIZE OF TRANSFER\r
+        000415' 554440  000014  03590           HLRZ INDEX,COTP;        SIZE OF THIS LINE\r
+        000416' 270000  000011  03600           ADD INDEX;      AND THIS LOCATION\r
+        000417' 270440  000012  03610           ADD INDEX,WC;   PLUS THE NEW LINE SIZE\r
+        000420' 504440  000000  03620           HRL INDEX,0;    IN LEFT HALF IS OLD SIZE\r
+        000421' 275000  001064' 03630           SUBI WB;        AND TURN IT INTO A COUNT\r
+        000422' 550540  001060' 03640           HRRZ C,WBC;     FOR A SUBTRACT\r
+        000423' 276540  000000  03650           SUBM C,0;       AND NOW ZERO HAS THE XFER SIZE\r
+        000424' 263140  000000  03660           EXIT;\r
+\r
+\r
+        000425' 260140  000502' 03690   DELETE: CAL GE2SEQ;     GET THE RANGE TO BE EXCISED\r
+        000426' 550440  001060' 03700   DELOOP: HRRZ INDEX,WBC; GET THE WORD COUNT\r
+        000427' 271440  001064' 03710           ADDI INDEX,WB;  FORM THE END ADDRESS\r
+        000430' 260140  000262' 03720           CAL BACK;       GET THE LAST SEQUENCE IN THE BLOCK\r
+        000431' 316000  000017  03730           CAMN LAST;      IS THE LAST LINE THE END OF THE RANGE\r
+        000432' 254000  000447' 03740           JRST DEQ;       YES\r
+        000433' 311000  000017  03750           CAML LAST;      DO WE WANT TO DELETE THIS ONE TOO\r
+        000434' 254000  000451' 03760           JRST DINB;      NO,DELETE TERMINATES IN THE BUFFER\r
+        000435' 260140  000465' 03770           CAL DREST;      ERASE THE REST OF THE BUFFER\r
+        000436' 602200  000020  03780   EMPT:   TRNE FL,S5;     LAST BLOCK\r
+        000437' 254000  001035' 03790           JRST COMLEV;    YES, DONE\r
+        000440' 620200  000001  03800           TRZ FL,S0;      FORWARD\r
+        000441' 260140  000045' 03810           CAL GET;        INPUT NEXT BLOCK\r
+        000442' 200640  001064' 03820           MOVE SINDEX,WB; GET FIRST LINE\r
+        000443' 606640  000001  03830           TRNN SINDEX,1;  IF NOT A ONE, BLOCK IS EMPTY\r
+        000444' 254000  000436' 03840           JRST EMPT;      SO GET THE NEXT ONE\r
+        000445' 260140  000333' 03850           CAL FIND;       NEW SINDEX IS THE FIRST LINE - THIS CAL\r
+        000446' 254000  000426' 03860           JRST DELOOP;    SETS UP THE COUNTS, ETC.\r
+\r
+        000447' 260140  000465' 03880   DEQ:    CAL DREST;      DELETE THE REST OF THE BUFFER\r
+        000450' 254000  001035' 03890   DEX:    JRST COMLEV;    EXIT\r
+\r\fEDITOR   V.003        1 APRIL 1968                 PAGE 16\r
+        EDITOR - AUGUST 25, 1965\r
+\r
+        000451' 201440  001063' 03910   DINB:   MOVEI INDEX,WBF;        GET INITIAL ADDRESS\r
+        000452' 260140  000406' 03920           CAL FINDES;     SCAN THE LINE\r
+        000453' 322000  000456' 03930           JUMPE .+3;      END OF BUFFER\r
+        000454' 317000  000017  03940           CAMG LAST;      LAST LINE DONE\r
+        000455' 344440  000452' 03950           AOJA INDEX,DINB+1;      NO, GO AGAIN\r
+        000456' 557000  000014  03960           HLRZS COTP;     COMPUTE TOTAL SIZE\r
+        000457' 274440  000014  03970           SUB INDEX,COTP; THIS MUCH SMALLER\r
+        000460' 517000  000014  03980           HRLZS COTP;     RESET LEFT HALF\r
+        000461' 542440  000014  03990           HRRM INDEX,COTP;        AND RIGHT HALF GET DELTA SIZE\r
+        000462' 402000  000012  04000           CLEARM WC;      SET FOR ZERO LENGTH INSERT\r
+        000463' 260140  000227' 04010           CAL INSED;      INSERT THE NULL LINE\r
+        000464' 254000  001035' 04020           JRST COMLEV;    AND EXIT\r
+\r
+        000465' 554440  000014  04040   DREST:  HLRZ INDEX,COTP;        DELETE THE REMAINING BUFFER\r
+        000466' 275440  001064' 04050           SUBI INDEX,WB;  JUST DECREMENT SIZE\r
+        000467' 542440  001060' 04060           HRRM INDEX,WBC; OF THE NEW BUFFER\r
+        000470' 254000  000245' 04070           JRST INSE16;    DONE\r
+\r\fEDITOR   V.003        1 APRIL 1968                 PAGE 17\r
+        EDITOR - AUGUST 25, 1965\r
+\r
+        000471' 260140  000502' 04090   PRINT:  CAL GE2SEQ;     GET THE RANGE\r
+        000472' 200011  000000  04100   PRLOOP: MOVE (INDEX);   GET A LINE\r
+        000473' 322000  000533' 04110           JUMPE GETNEX;   ZERO IMPLIES END OF BUFFER - GET NEXT\r
+        000474' 313000  000017  04120           CAMLE LAST;     ARE WE STILL IN THE BALLPARK\r
+        000475' 254000  001035' 04130           JRST COMLEV;    NO, ALL DONE\r
+        000476' 260140  000516' 04140           CAL STEP;       PREPARE FOR NEXT HUNT\r
+        000477' 260140  000601' 04150           CAL OTLINE;     PRINT THIS LINE\r
+        000500' 260140  000333' 04160           CAL FIND;       FIND THE NEXT LINE\r
+        000501' 254000  000472' 04170           JRST PRLOOP;    LOOK AT IT\r
+\r
+        000502' 260140  000616' 04190   GE2SEQ: CAL GETSEQ;     GET A 2 NUMBER RANGE\r
+        000503' 334000  000000  04200           SKIPA;          THERE WERE TWO\r
+        000504' 254000  000507' 04210           JRST GEX;       ONLY ONE\r
+        000505' 242000  000001  04220           LSH 1;          JUSTIFY IT\r
+        000506' 664000  000001  04230           TROA 1;         AND FLAG IT AS A SEQUENCE NUMBER\r
+        000507' 200000  000015  04240   GEX:    MOVE SINDEX;    DUPLICATE THE INPUT NUMBER IF JUST ONE\r
+        000510' 202000  000017  04250           MOVEM LAST;     STORE THE END OF THE RANGE\r
+        000511' 260140  000333' 04260           CAL FIND;       SEARCH FOR THE FIRST LINE\r
+        000512' 316740  001056' 04270           CAMN LAST,FIRST;        BOTH THE SAME\r
+        000513' 316651  000000  04280           CAMN SINDEX,(INDEX);    BUT NO MATCH FOUNT\r
+        000514' 263140  000000  04290           EXIT;           WILL SKIP THIS ONE\r
+                                04300           ERR 2;          AND *NLN*\r
+        000515' 264100  000162'                 JSR 2,ERRORX\r
+\r
+        000516' 261140  000016  04320   STEP:   SAVE CINDEX     ;PROTECT THE STEP\r
+        000517' 201700  000001  04330           MOVEI CINDEX,1; PREPARE TO ADD ONE TO SINDEX\r
+        000520' 202000  000015  04340           MOVEM SINDEX;   WHICH WE LOAD FROM ZERO\r
+\r\fEDITOR   V.003        1 APRIL 1968                 PAGE 24\r
+        EDITOR - AUGUST 25, 1965\r
+\r
+        000521' 254000  000306' 04420           JRST ASCIA+1;   AWAY\r
+\r
+        000522' 200640  001056' 04440   PNEXT:  MOVE SINDEX,FIRST;      PRINT NEXT LINE\r
+        000523' 200000  000015  04450           MOVE SINDEX;    UPDATE THE LINE POINTER\r
+        000524' 260140  000516' 04460           CAL STEP;       NEXT LINE\r
+        000525' 260140  000333' 04470           CAL FIND;       WHERE IS IT\r
+        000526' 336651  000000  04480           SKIPN SINDEX,(INDEX);   ZERO IS END, ALSO LOAD SINDEX\r
+                                04490           ERR 2;          *NLN*\r
+        000527' 264100  000162'                 JSR 2,ERRORX\r
+        000530' 202640  001056' 04500           MOVEM SINDEX,FIRST;     STEP FIRST POINTER\r
+        000531' 260140  000601' 04510           CAL OTLINE;     PRINT THE LINE\r
+        000532' 254000  000137' 04520           JRST OUTTER;    BACK TO CONTROL\r
+\r
+        000533' 602200  000020  04540   GETNEX: TRNE FL,S5;     END OF FILE\r
+        000534' 254000  001035' 04550           JRST COMLEV;    YES, EXIT\r
+        000535' 620200  000001  04560           TRZ FL,S0;      FORWARD\r
+        000536' 260140  000045' 04570           CAL GET;        INPUT IT\r
+        000537' 201440  001064' 04580           MOVEI INDEX,WB; FIRST ADDRESS\r
+        000540' 254000  000472' 04590           JRST PRLOOP;    RETURN TO PRINT SCAN\r
+\r\fEDITOR   V.003        1 APRIL 1968                 PAGE 26\r
+        TELETYPE IO - AUGUST 25, 1965\r
+\r
+                                04620   SUBTTL TELETYPE IO - AUGUST 25, 1965\r
+\r
+                                04640   ;OUTPUT SEQUENCE NUMBER\r
+        000541' 350000  001043' 04650   OTSEQ:  AOS TYOBF1;     STEP THE WORD POINTER\r
+\r
+\r
+        000542' 202660  001043' 04660           MOVEM SINDEX,@TYOBF1;   PUT THE SEQUENCE NO.\r
+        000543' 201040  000211  04670           MOVEI 1,211;    AND A TAB\r
+        000544' 136040  001043' 04680           IDPB 1,TYOBF1;  INTO THE OUTPUT BUFFER\r
+        000545' 067100  000000  04690   OTSEQ4: OUTPUT TYP,0;   OUTPUT THE TELETYPE BUFFER\r
+        000546' 263140  000000  04700           EXIT\r
+\r
+                                04720   ;INPUT ONE LINE FROM TELETYPE AND CONVERT TO SEQUENCED\r
+\r
+        000547' 066100  000000  04740   GETLIN: INPUT TYP,0;    READ THE LINE\r
+        000550' 201040  001314' 04750           MOVEI 1,TTB1;   PREEPARE TO BLOCK IT UP\r
+        000551' 505040  001313' 04760           HRLI 1,TTB;     DESTINATION\r
+        000552' 402000  001313' 04770           CLEARM TTB\r
+        000553' 251040  001336' 04780           BLT 1,TTB16;    BLOCK IT UP\r
+        000554' 200300  000600' 04790           MOVE TPT,KKK1;  PREPARE THE CONVERSION POINTER\r
+        000555' 200240  001046' 04800           MOVE IPT,TYIBF1;        AND READ POINTER\r
+        000556' 200100  001047' 04810           MOVE 2,TYIBF2;  AND THE COUNT\r
+        000557' 202646  000000  04820           MOVEM SINDEX,(TPT);     PUT IN THE SEQUENCE\r
+        000560' 201040  000211  04830           MOVEI 1,211;    TAB\r
+        000561' 344300  000564' 04840           AOJA TPT,EOMLOP+2;      START CONVERSION\r
+\r
+        000562' 361100  000571' 04860   EOMLOP: SOJL 2,EOMOUT;  IF ALL OUT OF CHARACTERS\r
+        000563' 134040  000005  04870           ILDB 1,IPT;     READ ONE\r
+        000564' 136040  000006  04880           IDPB 1,TPT;     WRITE ONE\r
+        000565' 302040  000033  04890           CAIE 1,33;      ALTERNATE ALTMOD\r
+        000566' 306040  000175  04900           CAIN 1,175;     REGULAR ALTMOD\r
+        000567' 254000  000160' 04910           JRST CRT;               MAKE EXIT\r
+        000570' 254000  000562' 04920           JRST EOMLOP;    GET MORE\r
+\r
+        000571' 200500  000006  04940   EOMOUT: MOVE WC,TPT;    FORM WORD COUNT\r
+        000572' 274500  000600' 04950           SUB WC,KKK1;    INITIAL VALUE\r
+        000573' 553000  000012  04960           HRRZS WC;               CLEAR LEFT\r
+        000574' 306040  000012  04970           CAIN 1,12;      LINE FEED\r
+        000575' 271500  000001  04980           ADDI WC,1;      MEANS STEP COUNT\r
+        000576' 350003  000000  04990   STEPEX: AOS (PDP);      SKIP EXIT\r
+        000577' 263140  000000  05000           EXIT\r
+        000600' 440700  001313' 05010   KKK1:   POINT 7,TTB;    INITIAL POINTER\r
+\r
+                                05030   ;OUTPUT ONE LINE OF TEXT\r
+\r
+        000601' 200011  000000  05050   OTLINE: MOVE (INDEX);   FIRST WORD\r
+        000602' 254000  000607' 05060           JRST OTL1\r
+        000603' 200011  000000  05070           MOVE (INDEX);   SUBSEQUENT WORDS\r
+        000604' 322000  000545' 05080           JUMPE OTSEQ4;   ZERO IMPLIES THE END OF THE WORLD\r
+        000605' 602000  000001  05090           TRNE 1;         ONE IMPLIES THE END OF THE LINE\r
+        000606' 254000  000545' 05100           JRST OTSEQ4\r
+        000607' 350000  001043' 05110   OTL1:   AOS TYOBF1;     PUT IT IN THE OUTPUT BUFFER\r
+        000610' 202020  001043' 05120           MOVEM @TYOBF1\r
+\r\fEDITOR   V.003        1 APRIL 1968                 PAGE 26-1\r
+        TELETYPE IO - AUGUST 25, 1965\r
+\r
+        000611' 344440  000603' 05130           AOJA INDEX,OTLINE+2;    GO FOR MORE\r
+\r\fEDITOR   V.003        1 APRIL 1968                 PAGE 27\r
+        TELETYPE IO - AUGUST 25, 1965\r
+\r
+                                05150   ;GET ONE CHARACTER\r
+\r
+        000612' 066100  000000  05170   GETCHR: INPUT TYP,0;    GET A LINE\r
+        000613' 200240  001046' 05180           MOVE IPT,TYIBF1;        PREPARE INPUT POINTER\r
+        000614' 134540  000005  05190           ILDB C,IPT;     LOAD THE FIRST CHARACTER\r
+        000615' 263140  000000  05200           EXIT\r
+\r
+                                05220   ;GET A SEQUENCE PAIR\r
+\r
+        000616' 403000  000015  05240   GETSEQ: CLEARB 0,SINDEX;        MAKE BOTH ZERO\r
+        000617' 134540  000005  05250           ILDB C,IPT;     GET A CHARACTER\r
+        000620' 301540  000060  05260           CAIL C,60;      IT MUST BE A NUMBER\r
+        000621' 303540  000071  05270           CAILE C,71\r
+        000622' 254000  000626' 05280           JRST ETEST;     OR A DELIMITER\r
+        000623' 242640  000007  05290           LSH SINDEX,7;   NUMBER\r
+        000624' 270640  000013  05300           ADD SINDEX,C;   NEW ONE\r
+        000625' 254000  000617' 05310           JRST GETSEQ+1\r
+\r
+        000626' 306540  000056  05330   ETEST:  CAIN C,56;      POINT?\r
+        000627' 254000  000652' 05340           JRST PER\r
+        000630' 306540  000054  05350           CAIN C,54;      COMMA?\r
+        000631' 254000  000645' 05360           JRST CMMA\r
+        000632' 332000  000015  05370           SKIPE SINDEX;   IF NOTHING INPUT YET\r
+        000633' 302540  000015  05380           CAIE C,15;      OR NOT A CARRET\r
+        000634'                 05390   COMERR: ERR 1;          ILLEGAL COMMAND\r
+        000634' 264040  000162'                 JSR 1,ERRORX\r
+        000635' 434640  000656' 05400           IOR SINDEX,KK4; MAKE IT AN ASCII THING\r
+        000636' 332000  000000  05410           SKIPE 0;                IF TWO ARGS\r
+        000637' 250640  000000  05420           EXCH SINDEX,0;  SWAP EM BACK\r
+        000640' 242640  000001  05430           LSH SINDEX,1;   LEFT JUSTIFY\r
+        000641' 660640  000001  05440           TRO SINDEX,1;   AND FLAG IT\r
+        000642' 202640  001056' 05450           MOVEM SINDEX,FIRST;     SAVE IT FOR .\r
+        000643' 322000  000576' 05460           JUMPE STEPEX;   ONLY ONE ARG\r
+        000644' 263140  000000  05470           EXIT;           TWO ARGS\r
+\r
+        000645' 322640  000634' 05490   CMMA:   JUMPE SINDEX,COMERR;    THREE ARGS?\r
+        000646' 326000  000634' 05500           JUMPN COMERR;   ONE ARG\r
+        000647' 434640  000656' 05510           IOR SINDEX,KK4; ASCII-IZE IT\r
+        000650' 250640  000000  05520           EXCH SINDEX,0;  SWAP EM\r
+        000651' 254000  000617' 05530           JRST GETSEQ+1\r
+\r
+        000652' 326640  000634' 05550   PER:    JUMPN SINDEX,COMERR;    CANT BE THIRD ARG\r
+        000653' 200640  001056' 05560           MOVE SINDEX,FIRST;      RETREIVE POINT\r
+        000654' 242640  777777  05570           LSH SINDEX,-1;  RIGHT JUSTIFY\r
+        000655' 254000  000617' 05580           JRST GETSEQ+1\r
+\r
+        000656' 140603  014060  05600   KK4:    OCT 140603014060;       00000\r
+\r\fEDITOR   V.003        1 APRIL 1968                 PAGE 28\r
+        DECSET - AUGUST 25, 1965\r
+\r
+                                05620   SUBTTL DECSET - AUGUST 25, 1965\r
+\r
+                        001000  05640   FOPEN=1000\r
+\r
+                                05660   ;SET FILE OPEN (*SN,NAME)\r
+\r
+        000657' 603200  001000  05680   DECINI: TLNE FL,FOPEN;  IF A FILE IS NOT ALREADY OPEN\r
+                                05690                           ;       THEN GOTO NORMAL PROCESS\r
+                                05700           ERR 1 ; IF FILE OPEN ,MUST CLOSE W. E\r
+        000660' 264040  000162'                 JSR 1 ,ERRORX\r
+        000661' 403200  001060' 05710   DECIN1: SETZB FL,WBC;   ZERO FLAGS AND WORD COUNT\r
+        000662' 402000  001012' 05720           CLEARM DTNAME;  FILE NAME\r
+        000663' 402000  001013' 05730           CLEARM DTNAME+1;        AND EXTENSION\r
+        000664' 402000  001014' 05740           CLEARM DTNAME+2;        AND DATE\r
+        000665' 260140  000710' 05750           CAL GTCHAR;     GET UNIT NUMBER\r
+        000666' 301000  000060  05760           CAIL 60;                IT MUST BE A NUMBER\r
+        000667' 303000  000070  05770           CAILE 70;\r
+        000670' 254000  000665' 05780           JRST .-3;               IGNORE ANYTHING ELSE\r
+        000671' 137000  001337' 05790           DPB [POINT 5,PLUNK,23]; DUMP INTO INIT COMMAND\r
+        000672' 260140  000710' 05800           CAL GTCHAR;     NEXT CHARACTER\r
+        000673' 302000  000054  05810           CAIE 54;                COMMA?\r
+        000674' 254000  000672' 05820           JRST .-2;               IGNORE ALL ELSE\r
+        000675' 200040  001340' 05830   LOOP0:  MOVE 1,[POINT 6,DTNAME];        INITIALIZE NAME POINTER\r
+        000676' 201540  000006  05840           MOVEI C,6;      MAX NAME LENGTH\r
+        000677' 260140  000710' 05850   LOOP:   CAL GTCHAR;     GET A CHARACTER\r
+        000700' 301000  000060  05860           CAIL "0";               NUMBERS AND LETTERS ONLY COME HERE\r
+        000701' 303000  000071  05870           CAILE "9";      SO HERE FILTER NUMBERS\r
+        000702' 254000  001000' 05880           JRST LOOP1;     IT IS A LETTER\r
+        000703' 640000  000040  05890   LOOP2:  TRC 40; NUMBER - MAKE IT SIXBIT\r
+        000704' 136000  000001  05900           IDPB 1;         STORE INTO NAME (OR EXTENSION)\r
+        000705' 367540  000677' 05910           SOJG C,LOOP;    COUNT DOWN FOR SIZE\r
+        000706' 260140  000710' 05920           CAL GTCHAR;     NEXT CHARACTER\r
+        000707' 254000  000706' 05930           JRST .-1;\r
+\r
+\r\fEDITOR   V.003        1 APRIL 1968                 PAGE 29\r
+        DECSET - AUGUST 25, 1965\r
+\r
+        000710' 134000  000005  05960   GTCHAR: ILDB IPT;               LOAD ONE CHARACTER\r
+        000711' 306000  000015  05970           CAIN 15;                CRT\r
+        000712' 254000  000727' 05980           JRST GET1;      SNEAK EXIT\r
+        000713' 306000  000056  05990           CAIN ".";       AN EXTENSION IS COMMING\r
+        000714' 254000  001004' 06000           JRST GET2;      FIX IT UP\r
+        000715' 302000  000033  06010           CAIE 33;                THE FUNNY ALTMODE\r
+        000716' 306000  000175  06020           CAIN 175;               AND THE REAL ONE\r
+        000717' 254000  000726' 06030           JRST    GET11   ;CAUSE EXIT TO OCCUR\r
+        000720' 306000  000012  06040           CAIN    0,12    ;LF CHAR?\r
+        000721' 254000  000727' 06050           JRST GET1       ; YES TREAT AS CR\r
+        000722' 302000  000001  06060           CAIE 1;         CONTROL A\r
+        000723' 263140  000000  06070           EXIT;           NOTA SO EXIT HAPPY\r
+        000724' 661200  000100  06080           TLO FL,100;     SET CONTROL A FLAG\r
+        000725' 254000  000710' 06090           JRST GTCHAR;    GET ANOTHER CHARACTER\r
+        000726' 661200  000002  06100   GET11:  TLO     FL,2    ;NEW FILE FLAG\r
+\r
+        000727' 262140  000000  06120   GET1:   UNSAVE; POP OFF EXIT\r
+        000730' 201000  001050' 06130   GO:     MOVEI DTOBUF;   THESE TWO INSTRUCTIONS REQUIRED\r
+        000731' 506000  000736' 06140           HRLM PLUNK+1;   REQUIRED TO LINK LEFT HALF\r
+        000732' 200000  001057' 06150           MOVE SJOBFF;    RESET JOB AREA\r
+        000733' 202000  000000* 06160           MOVEM JOBFF;    TO PREVENT STORAGE EAT-UP\r
+        000734' 041140  000000  06170           INIT DT,0;      INITIALIZE DECTAPE\r
+        000735' 446441  000000  06180   PLUNK:  SIXBIT /DTA/;   RIGHT HALF SET ABOVE\r
+        000736' 000000  001053' 06190           XWD 0,DTIBUF;   LEFT HALF SET ABOVE\r
+                                06200           ERR 5;          UNIT NOT AVAILABLE\r
+        000737' 264240  000162'                 JSR 5,ERRORX\r
+        000740' 205000  400000  06210           MOVSI 400000;   USE BIT\r
+        000741' 412000  001062' 06220           ANDCAM DTB;     CLEAR IT\r
+        000742' 541000  001062' 06230           HRRI DTB;               HEAD OF BUFFER\r
+        000743' 202000  001053' 06240           MOVEM DTIBUF;   SETUP IN HEADER\r
+        000744' 065140  000001  06250           OUTBUF DT,1;    SET UP SINGLE BUFFER\r
+        000745' 623200  000100  06260           TLZE FL,100;    NEW DIRECTORY?\r
+        000746' 047140  000013  06270           CALLI DT,13;    YES, ZONK IT (UTPCLR)\r
+        000747' 336000  001012' 06280           SKIPN DTNAME;   NO NAME MEANS JUST CLEAR, PROB\r
+        000750' 254000  000133' 06290           JRST FINIS2;    SO EXIT AND CLOSE FILE\r
+        000751' 076140  001012' 06300           LOOKUP DT,DTNAME;       IS THE NAME ALRRADY THERE\r
+        000752' 254000  000772' 06310           JRST NEWFIL;    NO, SO WE ENTER IT\r
+        000753' 603200  000002  06320           TLNE FL,2;      ARE WE ASKING FOR A NEW FILE\r
+                                06330           ERR 10;         YES, FAU\r
+        000754' 264400  000162'                 JSR 10,ERRORX\r
+\r
+        000755' 200100  001013' 06350   DOIT:   MOVE 2,DTNAME+1;        GET LINK\r
+        000756' 074142  000000  06360           USETI DT,(2);   SET IT UP\r
+        000757' 067140  000000  06370           OUTPUT DT,;     MAKE SYSTEM HAPPY\r
+        000760' 075142  000000  06380           USETO DT,(2);   SET UP OUTPUT ALSO\r
+        000761' 627200  000010  06390           TLZN FL,10;     NEW FILE?\r
+        000762' 254000  000767' 06400           JRST DOIT1;     NO, ALMOST DONE\r
+        000763' 402000  001063' 06410           SETZM WBF;      WE MUST FORCE AN EMPTY BLOCK\r
+        000764' 661200  000001  06420           TLO FL,1;               SET BUFFER FULL FLAG\r
+        000765' 402000  001060' 06430           SETZM WBC;      ZERO LENGTH\r
+        000766' 660200  000530  06440           TRO FL,S3+S5+S6+S8;     INITIAL STATE, FIRST BLOCK MODIFIED\r
+        000767' 202100  000135' 06450   DOIT1:  MOVEM 2,THSBLK; SETUP CURRENT BLOCK NUMBER\r
+        000770' 661200  001000  06460           TLO FL,FOPEN;   SET FILE STATUS TO OPEN\r
+\r\fEDITOR   V.003        1 APRIL 1968                 PAGE 29-1\r
+        DECSET - AUGUST 25, 1965\r
+\r
+        000771' 254000  001035' 06470           JRST COMLEV;    ALL DONE\r
+\r\fEDITOR   V.003        1 APRIL 1968                 PAGE 30\r
+        DECSET - AUGUST 25, 1965\r
+\r
+        000772' 607200  000002  06490   NEWFIL: TLNN FL,2;      WAS ALTMOD STRUCK\r
+                                06500           ERR 11;         NO, NCF\r
+        000773' 264440  000162'                 JSR 11,ERRORX\r
+        000774' 077140  001012' 06510           ENTER DT,DTNAME;        PUT IN DI\r
+                                06520           ERR 6;          DCE\r
+        000775' 264300  000162'                 JSR 6,ERRORX\r
+        000776' 661200  000010  06530           TLO FL,10;      SET NEW FILE FLAG\r
+        000777' 254000  000755' 06540           JRST DOIT;\r
+\r
+        001000' 301000  000101  06560   LOOP1:  CAIL "A";       LETTER CHECK\r
+        001001' 303000  000132  06570           CAILE "Z";      IT MUST VERILY BE A LETTER\r
+        001002' 254000  000677' 06580           JRST LOOP;      WE IGNORE IT\r
+        001003' 254000  000703' 06590           JRST LOOP2;     WE PROCESS IT\r
+\r
+        001004' 332000  001013' 06610   GET2:   SKIPE DTEXTN;   EXTENSION?\r
+                                06620           ERR 1;          ALREADY GOT ONE, CANT HAVE TWO\r
+        001005' 264040  000162'                 JSR 1,ERRORX\r
+        001006' 621040  770000  06630           TLZ 1,770000;   MAGIC TO BYTE POINTER TO POINT TO NEXT\r
+        001007' 201540  000003  06640           MOVEI C,3;      ONLY 3 LETTERS IN EXTENSION\r
+        001010' 262140  000000  06650           UNSAVE;         POP OF SOME GARBAGE\r
+        001011' 254000  000677' 06660           JRST LOOP;      RETURN TO LISTEN\r
+\r
+        001012' 000000  000000  06680   DTNAME: 0;      FILE NAME\r
+        001013' 000000  000000  06690   DTEXTN: 0;      FILE EXTENSION\r
+        001014' 000000  000000  06700   DTDATE: 0;      DATE\r
+        001015' 000000  000000  06710           0;              DUMMY\r
+\r
+                        001013' 06730   FBNUM=DTEXTN\r
+\r
+\r\fEDITOR   V.003        1 APRIL 1968                 PAGE 31\r
+        INITIA - AUGUST 25, 1965\r
+\r
+                                06760   SUBTTL INITIA - AUGUST 25, 1965\r
+                        000001  06770   AL=1\r
+        001016' 047000  000000  06780   INITIA: CALLI 0,0;      RESET SYSTEM\r
+        001017' 041100  000001  06790           INIT TYP,AL;    RESET CONCOLE\r
+        001020' 646471  000000  06800           SIXBIT /TTY/\r
+        001021' 001042' 001045' 06810           XWD TYOBUF,TYIBUF\r
+        001022' 254200  000000  06820           HALT\r
+        001023' 064100  000001  06830           INBUF TYP,1;    SET UP ONE INPUT BUFFER\r
+        001024' 065100  000002  06840           OUTBUF TYP,2;   AND TWO OUTPUT BUFFERS\r
+        001025' 200000  000733* 06850           MOVE JOBFF;     SAVE FIRST FREE\r
+        001026' 202000  001057' 06860           MOVEM SJOBFF;   FOR LATER RESTART\r
+        001027' 067100  000000  06870           OUTPUT TYP,0;   MAKE SYSTEM HAPPY\r
+        001030' 200700  001041' 06880   INITIX: MOVE CINDEX,KK1;        INITIALIZE STEP TO 10\r
+        001031' 201140  001303' 06890           MOVEI PDP,PDSTAK-1;     INITIALIZE PUSHDOWN POINTER\r
+        001032' 403640  000004  06900           CLEARB SINDEX,FL;       FLAGS AND SEQUENCE INDEX\r
+        001033' 211400  000001  06910           MOVNI P,1;      AND FIRST BLOCK POINTER\r
+        001034' 402000  001060' 06920           CLEARM WBC;     WORD COUNT\r
+        001035' 260140  000160' 06930   COMLEV: CAL CRT;        A COMMON RETURN\r
+        001036' 301200  000000  06940           CAIL FL,0 ; DDE ERROR\r
+        001037' 254000  000137' 06950           JRST OUTTER    ; NO, SO OFF TO LISTEN CONTROL\r
+        001040' 254000  001016' 06960           JRST INITIA   ; YES GO RESET WORLD\r
+\r
+                                06980   ;BUFFERS, ET. AL.\r
+        001041' 140603  014260  06990   KK1:    OCT 140603014260;       00010\r
+        001042'                 07000   TYOBUF: BLOCK 3\r
+        001045'                 07010   TYIBUF: BLOCK 3\r
+\r
+        001050'                 07030   DTOBUF: BLOCK 3\r
+        001053' 000000  000000  07040   DTIBUF: 0\r
+        001054' 000700  000000  07050           XWD 700,0;      SELF ASSIGNED BUFFERS, ETC.\r
+        001055' 000000  000000  07060           0\r
+\r
+        001056' 000000  000000  07080   FIRST:  0\r
+        001057' 000000  000000  07090   SJOBFF: 0\r
+\r
+        001060' 000000  000000  07110   WBC:    0;              WORKING BUFFER COUNT\r
+        001061' 000000  000000  07120           0\r
+        001062' 000200  001062' 07130   DTB:    XWD 200,DTB;    DECTAPE HEADER\r
+        001063' 000000  000000  07140   WBF:    0\r
+        001064'                 07150   WB:     BLOCK 217;      THE WORKING BUFFER\r
+        001303' 624563  456400  07160   RESTT:  SIXBIT .RESET.\r
+\r
+        001304'                 07180   PDSTAK: BLOCK 7;        PUSHDOWN STAK\r
+        001313'                 07190   TTB:    BLOCK 23;       TELETYPE BUFFER-BUFFER\r
+        001336' 000000  000000  07200   TTB16:  0\r
+\r
+                        001314' 07220   TTB1=TTB+1\r
+                        001046' 07230   TYIBF1=TYIBUF+1\r
+                        001047' 07240   TYIBF2=TYIBUF+2\r
+                        001043' 07250   TYOBF1=TYOBUF+1\r
+                        001051' 07260   DTOBF1=DTOBUF+1\r
+\r
+                                07280   EXTERNAL JOBFF\r
+\r\fEDITOR   V.003        1 APRIL 1968                 PAGE 31-1\r
+        INITIA - AUGUST 25, 1965\r
+\r
+        001337'                 07290   EDEND:\r
+\r
+                        001016' 07310   END INITIA\r
+        001337' 140500  000735'\r
+        001340' 440600  001012'\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 001341\r
+\r
+8K CORE USED\r
+\r\fEDITOR   V.003        1 APRIL 1968                 PAGE 32\r
+        SYMBOL TABLE\r
+\r
+                000247  \r
+AC1             000001  \r
+AC2             000002  \r
+AC3             000005  \r
+AC4             000006  \r
+AL              000001  \r
+ASCIA           000305' \r
+ATSALL          000004' \r
+BACK            000262' \r
+BACK1           000252' \r
+C               000013  \r
+CAL     260140  000000  \r
+CINDEX          000016  \r
+CLEARE          000246' \r
+CMMA            000645' \r
+COMERR          000634' \r
+COMLEV          001035' \r
+COTP            000014  \r
+CRM             000171' \r
+CRT             000160' \r
+CSIZE           000414' \r
+DECIN1          000661' \r
+DECINI          000657' \r
+DELETE          000425' \r
+DELOOP          000426' \r
+DEQ             000447' \r
+DEX             000450' \r
+DINB            000451' \r
+DOIT            000755' \r
+DOIT1           000767' \r
+DREST           000465' \r
+DT              000003  \r
+DTB             001062' \r
+DTDATE          001014' \r
+DTEXTN          001013' \r
+DTIBUF          001053' \r
+DTNAME          001012' \r
+DTOBF1          001051' \r
+DTOBUF          001050' \r
+DUMPB           000106' \r
+DUMX            000122' \r
+EDEND           001337' \r
+EMPT            000436' \r
+EOMLOP          000562' \r
+EOMOUT          000571' \r
+EPT             000204' \r
+ERRORX          000162' \r
+ERROX1          000166' \r
+ERROX2          000167' \r
+ERT             000172' \r
+ETEST           000626' \r
+EXIT    263140  000000  \r
+FBNUM           001013' \r
+\r\fEDITOR   V.003        1 APRIL 1968                 PAGE 32-1\r
+        SYMBOL TABLE\r
+\r
+FILLB           000000' \r
+FILLB1          000041' \r
+FIND            000333' \r
+FIND1           000334' \r
+FIND2           000335' \r
+FIND3           000400' \r
+FIND3A          000372' \r
+FIND4           000365' \r
+FINDA           000360' \r
+FINDC           000367' \r
+FINDEQ          000402' \r
+FINDES          000406' \r
+FINDR           000370' \r
+FINDX           000353' \r
+FINIS2          000133' \r
+FINISH          000131' \r
+FIRST           001056' \r
+FL              000004  \r
+FOPEN           001000  \r
+GE2SEQ          000502' \r
+GET             000045' \r
+GET0            000055' \r
+GET1            000727' \r
+GET11           000726' \r
+GET2            001004' \r
+GETCHR          000612' \r
+GETF            000075' \r
+GETL            000073' \r
+GETL1           000100' \r
+GETLIN          000547' \r
+GETN            000047' \r
+GETNEX          000533' \r
+GETSEQ          000616' \r
+GEX             000507' \r
+GO              000730' \r
+GTCHAR          000710' \r
+IAMTEM          000136' \r
+INDEX           000011  \r
+INITIA          001016' \r
+INITIX          001030' \r
+INSE            000205' \r
+INSE1           000235' \r
+INSE16          000245' \r
+INSE2           000210' \r
+INSE3           000216' \r
+INSED           000227' \r
+INSEG           000264' \r
+INSER           000272' \r
+INSEX           000276' \r
+IPT             000005  \r
+ITAB            000303' \r
+JOBFF           001025' EXT\r
+K1              000326' \r
+\r\fEDITOR   V.003        1 APRIL 1968                 PAGE 32-2\r
+        SYMBOL TABLE\r
+\r
+K2              000327' \r
+K3              000330' \r
+K4              000331' \r
+K5              000332' \r
+KK1             001041' \r
+KK4             000656' \r
+KKK1            000600' \r
+LAST            000017  \r
+LOOP            000677' \r
+LOOP0           000675' \r
+LOOP1           001000' \r
+LOOP2           000703' \r
+NEWFIL          000772' \r
+OTL1            000607' \r
+OTLINE          000601' \r
+OTSEQ           000541' \r
+OTSEQ4          000545' \r
+OUTTER          000137' \r
+P               000010  \r
+PDP             000003  \r
+PDSTAK          001304' \r
+PER             000652' \r
+PLUNK           000735' \r
+PNEXT           000522' \r
+PRINT           000471' \r
+PRLOOP          000472' \r
+RESTT           001303' \r
+S0              000001  \r
+S1              000002  \r
+S2              000004  \r
+S3              000010  \r
+S4              000040  \r
+S5              000020  \r
+S6              000100  \r
+S7              000200  \r
+S8              000400  \r
+SAVE    261140  000000  \r
+SINDEX          000015  \r
+SJOBFF          001057' \r
+SLURP           000057' \r
+STEP            000516' \r
+STEPEX          000576' \r
+THSBLK          000135' \r
+TPT             000006  \r
+TTB             001313' \r
+TTB1            001314' \r
+TTB16           001336' \r
+TYIBF1          001046' \r
+TYIBF2          001047' \r
+TYIBUF          001045' \r
+TYOBF1          001043' \r
+TYOBUF          001042' \r
+TYP             000002  \r
+\r\fEDITOR   V.003        1 APRIL 1968                 PAGE 32-3\r
+        SYMBOL TABLE\r
+\r
+UNSAVE  262140  000000  \r
+WB              001064' \r
+WBC             001060' \r
+WBF             001063' \r
+WC              000012  \r
+\fFFFFFFFFFFFFFFF      UUU         UUU      DDDDDDDDDDDD            GGGGGGGGGGGG      EEEEEEEEEEEEEEE         222222222   \r
+FFFFFFFFFFFFFFF      UUU         UUU      DDDDDDDDDDDD            GGGGGGGGGGGG      EEEEEEEEEEEEEEE         222222222   \r
+FFFFFFFFFFFFFFF      UUU         UUU      DDDDDDDDDDDD            GGGGGGGGGGGG      EEEEEEEEEEEEEEE         222222222   \r
+FFF                  UUU         UUU      DDD         DDD      GGG                  EEE                  222         222\r
+FFF                  UUU         UUU      DDD         DDD      GGG                  EEE                  222         222\r
+FFF                  UUU         UUU      DDD         DDD      GGG                  EEE                  222         222\r
+FFF                  UUU         UUU      DDD         DDD      GGG                  EEE                              222\r
+FFF                  UUU         UUU      DDD         DDD      GGG                  EEE                              222\r
+FFF                  UUU         UUU      DDD         DDD      GGG                  EEE                              222\r
+FFFFFFFFFFFF         UUU         UUU      DDD         DDD      GGG                  EEEEEEEEEEEE                  222   \r
+FFFFFFFFFFFF         UUU         UUU      DDD         DDD      GGG                  EEEEEEEEEEEE                  222   \r
+FFFFFFFFFFFF         UUU         UUU      DDD         DDD      GGG                  EEEEEEEEEEEE                  222   \r
+FFF                  UUU         UUU      DDD         DDD      GGG   GGGGGGGGG      EEE                        222      \r
+FFF                  UUU         UUU      DDD         DDD      GGG   GGGGGGGGG      EEE                        222      \r
+FFF                  UUU         UUU      DDD         DDD      GGG   GGGGGGGGG      EEE                        222      \r
+FFF                  UUU         UUU      DDD         DDD      GGG         GGG      EEE                     222         \r
+FFF                  UUU         UUU      DDD         DDD      GGG         GGG      EEE                     222         \r
+FFF                  UUU         UUU      DDD         DDD      GGG         GGG      EEE                     222         \r
+FFF                  UUUUUUUUUUUUUUU      DDDDDDDDDDDD            GGGGGGGGG         EEEEEEEEEEEEEEE      222222222222222\r
+FFF                  UUUUUUUUUUUUUUU      DDDDDDDDDDDD            GGGGGGGGG         EEEEEEEEEEEEEEE      222222222222222\r
+FFF                  UUUUUUUUUUUUUUU      DDDDDDDDDDDD            GGGGGGGGG         EEEEEEEEEEEEEEE      222222222222222\r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  11:23:08\r
+File: DSKB0 :FUDGE2.LST   [8,200] Created: 20-April-1967 11:20:00 Printed: 24-April-1978 11:22:32
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:1593 \r
+File will be deleted after printing\r
+\f\rFUDGE2  V.011                 PAGE 1\r
+        2-OCT-70        ED YOURDON/VJC/DMN\r
+\r
+                                00010   TITLE   FUDGE2  V.011\r
+                                00020   SUBTTL  2-OCT-70        ED YOURDON/VJC/DMN\r
+                                00030   ;FILE UPDATE GENERATOR\r
+                                00040   ;"COPYRIGHT 1968,1969,DIGITAL EQUIPMENT CORP. MAYNARD,MASS. U.S.A."\r
+\r
+                        000011  00060           VFUDGE==11              ;VERSION NUMBER\r
+                        000000  00070           VPATCH==0               ;DEC PATCH LEVEL\r
+                        000000  00080           VCUSTOM==0              ;NON-DEC PATCH LEVEL\r
+\r
+                        000137  00100           JOBVER==137\r
+        000137                  00110           LOC     JOBVER\r
+        000137  000000  000011  00120           XWD VCUSTOM,VFUDGE+VPATCH*1000\r
+        000000'                 00130           RELOC\r
+                                00140           MLON\r
+\r
+                                00160   ;FUDGE ACCUMULATOR DEFINITIONS\r
+\r
+                        000001  00180           A=      1               ;GENERAL COMMUNICATION AC\r
+                        000002  00190           B=      2               ;SCRATCH ACCUMULATOR\r
+                        000003  00200           T=      3               ;USED IN /C AND /X ONLY\r
+                        000004  00210           C=      4               ;SCRATCH ACCUMULATOR\r
+                        000005  00220           D=      5               ;IO DEVICE NUMBER ACCUMULATOR\r
+                        000006  00230           E=      6               ;SCRATCH ACCUMULATOR\r
+                        000007  00240           F=      7               ;FLAG ACCUMULATOR\r
+                        000010  00250           G=      10              ;DEVICE CHARACTERISTICS AC\r
+                        000011  00260           H=      11              ;USED IN GETCHR AND GETCMN\r
+                        000012  00270           P=      12              ;PUSHDOWN POINTER AC\r
+                        000013  00280           R=      13              ;PROGRAM NAME-USED IN READ,WRITE\r
+                        000014  00290           S=      14              ;SIXBIT SYMBOL ACCUMULATOR\r
+                        000015  00300           DIS=    15              ;DISPATCH ACCUMULATOR\r
+                        000016  00310           EXT=    16              ;FILE NAME EXTENSION ACCUMULATOR\r
+                        000017  00320           SW=     17              ;SWITCH UUO AC\r
+\r
+\r\fFUDGE2  V.011                 PAGE 2\r
+        2-OCT-70        ED YOURDON/VJC/DMN\r
+\r
+                                00350   ;FUDGE FLAG DEFINITIONS (RIGHT HALF OF ACCUMULATOR F)\r
+\r
+                        000001  00370           DESTB== 1               ;1-DESTINATION DEVICE SEEN\r
+                        000002  00380           SAVEB== 2               ;1-SWITCH SEEN,BUT NOT EXECUTED\r
+                        000004  00390           SWTB==  4               ;1-SWITCH MODE ENTERED IN GETCHR\r
+                        000010  00400           SLSHB== 10              ;1-SWITCH MODE ENTERED WITH </>\r
+                        000020  00410           TTYOB== 20              ;1-NON-TTY OUTPUT;USED BY IO\r
+                        000040  00420           TTYCB== 40              ;1-NON-TTY OUTPUT;USED BY COMMAND\r
+                        000100  00430           PROGB== 100             ;1-PROGRAM NAME SEEN IN SPECIFICATION\r
+                        000200  00440           NOLOCB==200             ;1-DELETE LOCAL SYMBOLS ***VJC\r
+                        000400  00450           DEVB==  400             ;1-DEVICE NAME SEEN IN SPEC.\r
+                        001000  00460           EXTB==  1000            ;1-EXPLICIT FILE NAME EXTENSION\r
+                        002000  00470           ERRB==  2000            ;1-ERROR IN ENTRY BLOCK CHECK\r
+                        004000  00480           INFOB== 4000            ;1-VALID INFORMATION IN COMMAND\r
+                        010000  00490           CONB==  10000           ;1-CONTEXT OF <.> IS PROGRAM NAME\r
+                                00500                                   ;0-CONTEXT OF <.> IS FILE NAME\r
+                        020000  00510           F4IB==  20000           ;1-IGNORE F4 OUTPUT\r
+                        040000  00520           CRLFTY==40000           ;1-CR,LF TYPED (FOR ERROR MSG)\r
+                        100000  00530           POPBAK==100000          ;1-XCT POPJ P,  ;TO RETURN TO CALLING SEQ.\r
+                        200000  00540           XFLG==  200000          ;1-INDEX THIS FILE\r
+                        400000  00550           DTAFLG==400000          ;1-OUTPUT DEVICE IS DTA (SPECIAL INDEX)\r
+\r\fFUDGE2  V.011                 PAGE 3\r
+        2-OCT-70        ED YOURDON/VJC/DMN\r
+\r
+\r
+\r
+\r
+                                00600   ;HANDY BITS FOR CALLS TO DEVCHR FOR DEVICE CHARACTERISTICS\r
+                        000001  00610           OUTBIT==1               ;1-DEVICE CAN DO OUTPUT\r
+                        000002  00620           INBIT== 2               ;1-DEVICE CAN DO INPUT\r
+                        000004  00630           DRCTRB==4               ;1-DEVICE HAS A DIRECTORY\r
+                        000010  00640           TTYBIT==10              ;1-DEVICE IS A TTY\r
+                        000100  00650           DTABIT==100             ;1-DEVICE IS A DTA\r
+                        040000  00660           LPTBIT==40000           ;1-DEVICE IS LPT\r
+                        200000  00670           DSKBIT==200000          ;1-DEVICE IS DSK\r
+\r
+                                00690   ;OTHER USEFUL PARAMETER ASSIGNMENTS\r
+                        000200  00700           N==     200             ;SIZE OF MASTER AND TRAN BUFFERS\r
+                        000020  00710           XP==    20              ;SIZE OF PUSHDOWN LIST\r
+                        000500  00720           SIZE==  500             ;SIZE OF PURE ENTRY BLOCK\r
+                        000505  00730           X==     SIZE+5          ;SIZE OF ENTRY AND SAVE BLOCKS\r
+                        020000  00740           IOEOF== 20000           ;1-END-OF-FILE HAS BEEN SEEN\r
+                        040000  00750           IOBKTL==40000           ;1-BLOCK-TOO-LARGE ERROR\r
+                        100000  00760           IODATA==100000          ;1-DATA ERROR\r
+                        200000  00770           IODEV== 200000          ;1-DEVICE ERROR\r
+                        004000  00780           IOBOT== 4000            ;1-MAG TAPE IS AT BEGINNING OF TAPE\r
+\r
+                        000011  00800           RIBALC==11              ;NUMBER OF BLOCKS ALLOCATED\r
+\r
+                                00820   ;EXTERNAL SYMBOLS\r
+                                00830           EXTERN  JOBFF, JOBREL, JOBSYM, JOBSA\r
+\r
+                                00850   OPDEF   JSR     [PUSHJ  P,]     ;PURE FOR RE-ENTRANT FUDGE\r
+\r
+\r\fFUDGE2  V.011                 PAGE 4\r
+        INITIALIZE AND SETUP OF FUDGE2\r
+\r
+                                00880   SUBTTL INITIALIZE AND SETUP OF FUDGE2\r
+                                00890   ;THIS SECTION OF CODING DOES THE FOLLOWING THINGS\r
+                                00900   ;       1.RESETS ALL IO DEVICES BY CALLING [SIXBIT /RESET/]\r
+                                00910   ;       2.INITIALIZES THE TELETYPE IN ASCII-LINE MODE\r
+                                00920   ;       3.TYPES A * TO SIGNIFY READINESS FOR INPUT FROM USER\r
+                                00930   ;       4.SETS UP A PUSHDOWN LIST\r
+                                00940   ;       5.INITIALIZES VARIOUS ACCUMULATORS, CLEARS THE FLAGS,\r
+                                00950   ;         AND INITIALIZES THE MSTBUF AND TRNBUF COUNTERS\r
+\r
+        000000' 255000  000000  00970   FUDGE2: JFCL                    ;INCASE OF CCL ENTRY\r
+        000001' 000000  000000  00980           RESET                   ;RESET I/O DEVICES   \r
+        000002' 200000  005126' 00990           MOVE    [XWD LOW,LOW+1]\r
+        000003' 402000  002515' 01000           SETZM   LOW             ;CLEAR DATA AREA\r
+        000004' 251000  005116' 01010           BLT     LOWTOP-1\r
+        000005' 200000  005127' 01020           MOVE    [XWD 17,11]     ;TEST FOR LEVEL D\r
+        000006' 400000  000000  01030           SETZ                    ;FAILED, NOT LEVEL D\r
+        000007' 607000  003400  01040           TLNN    (7B9)           ;IS IT LEVEL D OR LATER?\r
+        000010' 634000  000000  01050           TDZA                    ;NO\r
+        000011' 561000  777776  01060           HRROI   -2              ;THIS IS LEVEL D\r
+        000012' 202000  005111' 01070           MOVEM   LEVEL           ;STORE STATE\r
+        000013' 400000  000000  01080           SETZ                    ;CLEAR ACC'S\r
+        000014' 201740  000001  01090           MOVEI   17,1            ;WITH A BLT OF ZERO\r
+        000015' 251740  000017  01100           BLT     17,17           ;FROM 0-17\r
+        000016' 041000  000001  01110           INIT    0,1             ;INITIALIZE TTY, CHANNEL 0\r
+        000017' 646471  000000  01120           SIXBIT  /TTY/           ;TTY\r
+        000020' 004602' 004610' 01130           XWD     OBUF, IBUF      ;ADDRESSES FOR BUFFER HEADERS\r
+        000021' 254200  000021' 01140           HALT    .               ;ILLEGAL INSTRUCTION IF NO TTY\r
+        000022' 067000  000000  01150           OUTPUT  0,              ;DUMMY OUTPUT ON TTY\r
+        000023' 201040  000052  01160           MOVEI   A, "*"          ;PICK UP A <*>\r
+        000024' 136040  004603' 01170           IDPB    A, OBUF+1       ;TYPE IT OUT\r
+        000025' 067000  000000  01180           OUTPUT  0,              ;EMPTY THE BUFFER\r
+        000026' 200500  005125' 01190           MOVE    P, XPDLST       ;SET UP A PUSHDOWN POINTER\r
+        000027' 561240  000001  01200           HRROI   D,1             ;INITIALIZE DEVICE BUFFER\r
+        000030' 202240  003324' 01210           MOVEM   D, DEVBUF       ;...\r
+        000031' 205040  777600  01220           MOVSI   A, -N           ;GET COUNT OF MSTBUF AND TRNBUF\r
+        000032' 541040  002525' 01230           HRRI    A, FILBUF+1     ;INITIALIZE POINTER IN FILBUF\r
+        000033' 202040  002524' 01240           MOVEM   A, FILBUF       ;SET UP COUNT IN FILE BUFFER\r
+        000034' 541040  002725' 01250           HRRI    A, PRGBUF+1     ;INITIALIZE POINTER IN PRGBUF\r
+        000035' 202040  002724' 01260           MOVEM   A, PRGBUF       ;...\r
+        000036' 541040  003124' 01270           HRRI    A,PPNBUF        ;INITIAL POINTER IN PPNBUF\r
+        000037' 202040  003124' 01280           MOVEM   A,PPNBUF\r
+\r\fFUDGE2  V.011                 PAGE 5\r
+        FUDGE2 COMMAND STRING DISPATCHING\r
+\r
+                                01300   SUBTTL FUDGE2 COMMAND STRING DISPATCHING\r
+                                01310   ;THIS ROUTINE PICKS UP CHARACTERS FROM THE TELETYPE BUFFER AND\r
+                                01320   ;DISPATCHES TO THE PROPER ROUTINE DEPENDING ON THE TYPE OF\r
+                                01330   ;CHARACTER.A TABLE OF BYTES AND BYTE POINTERS ALLOWS EACH\r
+                                01340   ;CHARACTER IN THE ASCII SET TO BE TREATED INDIVIDUALLY. THE\r
+                                01350   ;ROUTINE MAY BE ENTERED AT GETCHR IF IT IS DESIRED TO ACCUMULATE\r
+                                01360   ;A 6-LETTER SIXBIT SYMBOL IN AC S. SYMBOLS OF DIFFERENT LENGTHS\r
+                                01370   ;MAY BE ACCUMULATED IN DIFFERENT REGISTERS BY SETTING THE CONTENTS\r
+                                01380   ;OF AC B TO THE DESIRED LENGTH, AND PUTTING A BYTE POINTER IN E\r
+                                01390   ;AND ENTERING THE ROUTINE AT GETCHR+4.\r
+\r
+        000040' 622340  100000  01410   GETCHR: TRZE    F,POPBAK        ;IMMEDIATE RETURN?\r
+        000041' 263500  000000  01420           POPJ    P,              ;YES\r
+        000042' 201100  000006  01430           MOVEI   B, 6            ;SET COUNT OF SYMBOL TO 6\r
+        000043' 200300  005117' 01440           MOVE    E, SYMPTR       ;SET UP A BYTE POINTER FOR AC S\r
+        000044' 201600  000000  01450           MOVEI   S, 0            ;INITIALIZE SYMBOL ACCUMULATOR\r
+        000045' 377000  004612' 01460   GETCMN: SOSG    IBUF+2          ;IS TTY BUFFER EMPTY?\r
+        000046' 066000  000000  01470           INPUT   0,              ;YES, FILL IT UP\r
+        000047' 134040  004611' 01480           ILDB    A, IBUF+1       ;GET A CHARACTER\r
+        000050' 200400  000001  01490           MOVE    G, A            ;GET A COPY OF IT IN AC G\r
+        000051' 200000  005100' 01500           MOVE    0, CURCHR       ;SAVE PREVIOUS CHAR\r
+        000052' 202000  005101' 01510           MOVEM   0, LSTCHR       ;AS LAST CHAR\r
+        000053' 202040  005100' 01520           MOVEM   A, CURCHR       ;SAVE CURRENT CHAR\r
+        000054' 231400  000011  01530           IDIVI   G, 11           ;TRANSLATE TO 4-BIT CODE\r
+        000055' 135411  000077' 01540           LDB     G, TABLE(H)     ;USE PROPER BYTE POINTER\r
+        000056' 305400  000004  01550           CAIGE   G, 4            ;MODIFY CODE IF .GE. 4\r
+        000057' 606340  000004  01560           TRNN    F, SWTB         ;MODIFY CODE IF IN SWITCH MODE\r
+        000060' 271400  000004  01570           ADDI    G, 4            ;CHANGE DISPATCH BY ADDING 4\r
+        000061' 550450  000065' 01580           HRRZ    H, DSPTCH(G)    ;GET PROPER DISPATCH ADDRESS\r
+        000062' 301400  000010  01590           CAIL    G, 10           ;BUT CHANGE IF NOT CORRECT\r
+        000063' 554450  000055' 01600           HLRZ    H, DSPTCH-10(G) ;TO A LEFT HALF DISPATCH\r
+        000064' 254011  000000  01610           JRST    (H)             ;EXIT TO APPROPRIATE ROUTINE\r
+\r
+\r\fFUDGE2  V.011                 PAGE 6\r
+        COMMAND DISPATCH TABLE AND BYTE POINTERS\r
+\r
+                                01640   SUBTTL COMMAND DISPATCH TABLE AND BYTE POINTERS\r
+        000065' 000045' 002136' 01650   DSPTCH: XWD     GETCMN,ERR16    ;IGNORED CHAR, BAD CHAR(SWITCH)\r
+        000066' 000145' 000135' 01660           XWD     SWTCH, SWTCHA   ;<(>, LETTER(SWITCH MODE)\r
+        000067' 000317' 002136' 01670           XWD     COLON, ERR16    ;<:>, NUMBER(SWITCH MODE)\r
+        000070' 000257' 000146' 01680           XWD     PERIOD,SWTCHE   ;<.>, <)>ESCAPE SWITCH MODE\r
+        000071' 000156' 002147' 01690           XWD     LFTARW,ERR17    ;<?>OR<=>, BAD CHAR (NORMAL MODE)\r
+        000072' 000310' 000127' 01700           XWD     COMMA, STORE    ;<,>, ALPHABETIC CHARACTER(NORMAL)\r
+        000073' 000521' 000127' 01710           XWD     ALTMOD,STORE    ;<$>,NUMERIC CHARACTER(NORMAL)\r
+        000074' 000144' 002147' 01720           XWD     SLASH, ERR17    ;</>, <)> ILLEGAL ESCAPE\r
+        000075' 000265' 000000  01730           XWD     LBRACK, 0       ;LEFT ANGLE BRACKET, OR "["\r
+        000076' 000303' 000000  01740           XWD     RBRACK, 0       ;RIGHT ANGLE BRACKET\r
+\r
+        000077' 400410  000110' 01760   TABLE:  POINT   4, BITE(G), 3\r
+        000100' 340410  000110' 01770           POINT   4, BITE(G), 7\r
+        000101' 300410  000110' 01780           POINT   4, BITE(G), 11\r
+        000102' 240410  000110' 01790           POINT   4, BITE(G), 15\r
+        000103' 200410  000110' 01800           POINT   4, BITE(G), 19\r
+        000104' 140410  000110' 01810           POINT   4, BITE(G), 23\r
+        000105' 100410  000110' 01820           POINT   4, BITE(G), 27\r
+        000106' 040410  000110' 01830           POINT   4, BITE(G), 31\r
+        000107' 000410  000110' 01840           POINT   4, BITE(G), 35\r
+\r\fFUDGE2  V.011                 PAGE 7\r
+        BYTE TABLE FOR DISPATCHING\r
+\r
+                                01860    SUBTTL BYTE TABLE FOR DISPATCHING\r
+                                01870   ;CLASSIFICATION BYTE CODES\r
+                                01880   ;       BYTE    DISP    CLASSIFICATION\r
+\r
+                                01900   ;       00      00      ILLEGAL CHARACTER, SWITCH MODE\r
+                                01910   ;       01      01      ALPHABETIC CHARACTER, SWITCH MODE\r
+                                01920   ;       02      02      NUMERIC CHARACTER, SWITCH MODE\r
+                                01930   ;       03      03      SWITCH MODE ESCAPE, SWITCH MODE\r
+\r
+                                01950   ;       00      04      ILLEGAL CHARACTER, NORMAL MODE\r
+                                01960   ;       01      05      ALPHABETIC CHARACTER, NORMAL MODE\r
+                                01970   ;       02      06      NUMERIC CHARACTER, NORMAL MODE\r
+                                01980   ;       03      07      SWITCH MODE ESCAPE, SWITCH MODE\r
+\r
+                                02000   ;       04      10      IGNORED CHARACTER\r
+                                02010   ;       05      11      ENTER SWITCH MODE WITH A <(>\r
+                                02020   ;       06      12      DEVICE DELIMITER, <:>\r
+                                02030   ;       07      13      FILE EXTENSION DELIMITER, <.>\r
+                                02040   ;                       (CAN ALSO BE PART OF A PROGRAM NAME)\r
+                                02050   ;       10      14      OUTPUT SPECIFICATION, <LFT ARW> OR <=>\r
+                                02060   ;       11      15      FILE DELIMITER, <,>\r
+                                02070   ;       12      16      COMMAND TERMINATOR, <ALT MODE>=33,175,176\r
+                                02080   ;       13      17      ENTER SWITCH MODE WITH A </>\r
+                                02090   ;       14      20      CHANGE CONTEXT OF PERIOD TO PROG NAME, <<> ,OR "["\r
+                                02100   ;       15      21      CHANGE CONTEXT OF PERIOD TO FILE NAME, <>>\r
+\r
+                                02120   ;BYTE TABLE CORRESPONDING TO 128 ASCII CHARS\r
+\r
+        000110' 200000  000000  02140   BITE:   BYTE    (4)     4,0,0,0,0,0,0,0,0       ;NUL\r
+        000111' 210421  000000  02150           BYTE    (4)     4,4,4,4,4,0,0,0,0\r
+        000112' 000000  000012  02160           BYTE    (4)     0,0,0,0,0,0,0,0,12      ;?Z=$\r
+        000113' 500000  110100  02170           BYTE    (4)     12,0,0,0,0,11,0,4,0     ;$\r
+        000114' 000001  230411  02180           BYTE    (4)     0,0,0,0,5,3,1,0,11      ;***DMN\r
+        000115' 017310  421042  02190           BYTE    (4)     0,7,13,2,2,2,2,2,2      ;-,.,/,0,1,2,3,4,5\r
+        000116' 104211  406215  02200           BYTE    (4)     2,2,2,2,6,0,14,10,15    ;6,7,8,9,:,;,<,=,>\r
+        000117' 000104  210421  02210           BYTE    (4)     0,0,1,1,1,1,1,1,1       ; , , ,B,C,D,E,F,G\r
+        000120' 042104  210421  02220           BYTE    (4)     1,1,1,1,1,1,1,1,1       ;H,I,J,K,L,M,N,O,P\r
+        000121' 042104  210421  02230           BYTE    (4)     1,1,1,1,1,1,1,1,1       ;Q,R,S,T,U,V,W,X,Y\r
+        000122' 070000  100021  02240           BYTE    (4)     1,14,0,0,0,10,0,1,1     ;Z,[, ,], ,?, ,A,B\r
+        000123' 042104  210421  02250           BYTE    (4)     1,1,1,1,1,1,1,1,1       ;C,D,E,F,G,H,I,J,K\r
+        000124' 042104  210421  02260           BYTE    (4)     1,1,1,1,1,1,1,1,1       ;L,M,N,O,P,Q,R,S,T\r
+        000125' 042104  210012  02270           BYTE    (4)     1,1,1,1,1,1,0,0,12      ;U,V,W,X,Y,Z, , ,$\r
+        000126' 510000  000000  02280           BYTE    (4)     12,4                    ;$,DEL\r
+\r
+\r\fFUDGE2  V.011                 PAGE 8\r
+        ROUTINES TO HANDLE 0-9,A-Z,. CHARACTERS\r
+\r
+                                02310   SUBTTL ROUTINES TO HANDLE 0-9,A-Z,. CHARACTERS\r
+                                02320   ;IN THE COMMAND STRING. IN NORMAL MODE, THE CHARACTER IS\r
+                                02330   ;DEPOSITED TO FORM A SIXBIT SYMBOL. NOTE THAT "." IS LEGAL IN A PROGRAM NAME.\r
+                                02340   ;E.G. <EXP.1,ALLIO.>, IF ENCLOSED IN< >. IN SWITCH MODE, THE PROPER\r
+                                02350   ;INSTRUCTION IS EXECUTED WITH THE AID OF A DISPATCH TABLE.\r
+                                02360   ;THEN, IF SWITCH MODE WAS ENTERED WITH A SLASH, FUDGE2 EXITS\r
+                                02370   ;FROM SWITCH MODE.\r
+\r
+        000127' 660340  004000  02390   STORE:  TRO     F,INFOB         ; INDICATE VALID INFO SEEN\r
+        000130' 361100  000045' 02400           SOJL    B, GETCMN       ; JUMP IF NO ROOM FOR CHARACTER\r
+        000131' 305040  000141  02410           CAIGE   A,141           ;WORRY ABOUT LOWER CASE LETTERS\r
+        000132' 275040  000040  02420           SUBI    A, 40           ;CONVERT FROM ASCII TO SIXBIT\r
+        000133' 136040  000006  02430           IDPB    A, E            ;STORE CHARACTER ACCORDING TO BYTE\r
+        000134' 254000  000045' 02440           JRST    GETCMN          ;RETURN FOR NEXT CHARACTER\r
+\r
+        000135' 205740  072000  02460   SWTCHA: MOVSI   SW, 072000      ;GET AN MTAPE OPCODE\r
+        000136' 301040  000141  02470           CAIL    A,141           ;ACCEPT LOWER CASE SWITCHES\r
+        000137' 275040  000040  02480           SUBI    A,40\r
+        000140' 256001  000115' 02490           XCT     SLIST-101(A)    ;EXECUTE PROPER SWITCH INSTRUCTION\r
+        000141' 622340  000010  02500           TRZE    F, SLSHB        ;SWITCH MODE ENTERED WITH A </>?\r
+        000142' 620340  000004  02510           TRZ     F, SWTB         ;YES, EXIT FROM SWITCH MODE\r
+        000143' 254000  000045' 02520           JRST    GETCMN          ;RETURN FOR MORE CHARACTERS\r
+\r
+\r
+                                02550   ;THE FOLLOWING THREE ROUTINES HANDLE THE CONTROL CHARACTERS IN\r
+                                02560   ;THE COMMAND STRING WHICH CAUSE FUDGE2 TO ENTER INTO AND EXIT\r
+                                02570   ;FROM SWITCH MODE. THERE ARE TWO TYPES OF SWITCH MODE, DEPENDING\r
+                                02580   ;ON WHETHER THE IT IS ENTERED WITH A </> OR A <(>.\r
+\r
+        000144' 660340  000010  02600   SLASH:  TRO     F, SLSHB        ;ENTER SWITCH MODE WITH A </>\r
+        000145' 664340  000004  02610   SWTCH:  TROA    F, SWTB         ;ENTER SWITCH MODE WITH A <(>\r
+        000146' 620340  000004  02620   SWTCHE: TRZ     F, SWTB         ;EXIT FROM SWITCH MODE WITH A <)>\r
+        000147' 254000  000045' 02630           JRST    GETCMN          ;RETURN FOR MORE CHARACTERS\r
+\r
+\r\fFUDGE2  V.011                 PAGE 9\r
+        LEFT ARROW PROCESSOR\r
+\r
+                                02660   SUBTTL LEFT ARROW PROCESSOR\r
+                                02670   ;THE LEFT ARROW PROCESSOR IS ENTERED BY A DISPATCH FROM THE\r
+                                02680   ;COMMAND STRING. IT SIGNALS THE END OF THE DESTINGATION DEVICE\r
+                                02690   ;SPECIFICATION. IF THE SIXBIT SYMBOL ACCUMULATOR S IS NON-\r
+                                02700   ;ZERO, IT ASSUMES THAT THE USER HAS OMITTED THE FILE NAME DE-\r
+                                02710   ;LIMITER, AND CALLS THE FILE NAME ROUTINE. A PROGRAM NAME \r
+                                02720   ;SPECIFICATION IN THE OUTPUT DEVICE IS ILLEGAL.\r
+                                02730   ;FLAG SETTINGS: THE DESTINATION FLAG (DESTB) IS SET TO ONE,\r
+                                02740   ;THE DEVICE FLAG IS SET TO ZERO, AND THE PROGR?M NAME FLAG (PROGB)\r
+                                02750   ;IS SET TO ONE SO THAT THE FIRST DEVICE AFTER THE LEFT ARROW\r
+                                02760   ;WILL NOT RESULT IN A CALL TO PUTDEV.\r
+                                02770   ;IF NO OUTPUT DEVICE IS SEEN DSK IS ASSUMED.\r
+                                02780   ;POPBAK IS SET SO CONTROL RETURNS FRON COLON VIA GETCHR\r
+\r
+        000150' 261500  000014  02800   NODEV:  PUSH    P,S             ;SAVE FILE NAME\r
+        000151' 205600  446353  02810           MOVSI   S,(SIXBIT /DSK/);DSK IS DEFAULT DEVICE\r
+        000152' 660340  100000  02820           TRO     F,POPBAK        ;RETURN FROM GETCHR\r
+        000153' 260500  000317' 02830           PUSHJ   P,COLON         ;FAKE A DEVICE SEEN\r
+        000154' 262500  000014  02840           POP     P,S             ;RESTORE FILE NAME\r
+        000155' 263500  000000  02850           POPJ    P,              ;RETURN\r
+\r
+\r
+        000156' 260500  000407' 02880   LFTARW: PUSHJ   P, SEMICP       ;DO A LOOKUP IF NECESSARY\r
+        000157' 620340  000400  02890           TRZ     F, DEVB         ;SET THE DEVICE FLAG TO ZERO\r
+        000160' 660340  000101  02900           TRO     F, PROGB+DESTB  ;SET PROGRAM AND DESTINATION FLAGS\r
+        000161' 254000  000040' 02910           JRST    GETCHR          ;RETURN FOR NEXT SYMBOL\r
+\r
+\r
+\r\fFUDGE2  V.011                 PAGE 10\r
+        THIS CODE PROCESSES PROJECT-PROGRAMMER NUMBERS\r
+\r
+                                02950   SUBTTL  THIS CODE PROCESSES PROJECT-PROGRAMMER NUMBERS\r
+\r
+        000162' 400140  000000  02970   LSQB:   SETZ    T,              ;START WITH ZERO\r
+        000163' 261500  000003  02980           PUSH    P,T             ;AND STORE IT\r
+        000164' 260500  000210' 02990   LSQB1:  PUSHJ   P,TTYIN         ;GET NEXT CHAR.\r
+        000165' 306040  000135  03000           CAIN    A,"]"           ;MATCHING SQB.?\r
+        000166' 254000  000202' 03010           JRST    RSQB            ;YES\r
+        000167' 306040  000054  03020           CAIN    A,","           ;COMMA?\r
+        000170' 254000  000177' 03030           JRST    SQBCMA          ;YES,SORT OUT XWD\r
+        000171' 301040  000060  03040           CAIL    A,"0"           ;IS IT AN OCTAL NUMBER?\r
+        000172' 303040  000071  03050           CAILE   A,"9"           ;...\r
+        000173' 254000  000214' 03060           JRST    ERRISQ          ;NO,ERROR\r
+        000174' 242140  000003  03070           LSH     T,3             ;MAKE SPACE FOR NEXT CHAR.\r
+        000175' 271141  777720  03080           ADDI    T,-60(A)        ;ADDI IN NEW DIGIT\r
+\r
+\r
+        000176' 254000  000164' 03110           JRST    LSQB1           ;BACK FOR MORE\r
+\r
+        000177' 516152  000000  03130   SQBCMA: HRLZM   T,(P)           ;STORE LEFT HALF ON STACK\r
+        000200' 400140  000000  03140           SETZ    T,              ;START AFRESH\r
+        000201' 254000  000164' 03150           JRST    LSQB1           ;AND GET RIGHT HALF\r
+\r
+        000202' 542152  000000  03170   RSQB:   HRRM    T,(P)           ;PUT RIGHT HALF ON STACK\r
+        000203' 262500  000003  03180           POP     P,T             ;AND POP XWD OFF\r
+        000204' 202140  005113' 03190           MOVEM   T,PRJPRG        ;SAVE DEFAULT PROJ-PROG\r
+        000205' 326600  000045' 03200           JUMPN   S,GETCMN        ;AFTER A FILE NAME IS ONLY TEMP.\r
+        000206' 202140  005112' 03210           MOVEM   T,DEFPPN        ;PERMANENT DEFAULT PPN\r
+        000207' 254000  000045' 03220           JRST    GETCMN          ;GET NEXT CHAR.\r
+\r
+        000210' 377000  004612' 03240   TTYIN:  SOSG    IBUF+2          ;BUFFER EMPTY\r
+        000211' 066000  000000  03250           INPUT   0,              ;YES, FILL IT UP\r
+        000212' 134040  004611' 03260           ILDB    A,IBUF+1        ;GET A CHARACTER\r
+        000213' 263500  000000  03270           POPJ    P,              ;AND RETURN\r
+\r
+        000214' 201100  005130' 03290   ERRISQ: MOVEI   B,[ASCIZ /?Illegal project-programmer number/]\r
+        000215' 254000  002247' 03300           JRST    ERROR\r
+\r\fFUDGE2  V.011                 PAGE 11\r
+        DISPATCH TABLE FOR SWITCHES\r
+\r
+                                03320   SUBTTL DISPATCH TABLE FOR SWITCHES\r
+\r
+        000216' 201640  000711' 03340   SLIST:  MOVEI   DIS, APPEND     ;A - APPEND INSTRUCTION\r
+        000217' 260500  000250' 03350           PUSHJ   P, BSWTCH       ;B - BACKSPACE ONE FILE\r
+        000220' 201640  000730' 03360           MOVEI   DIS, DELCPY     ;C - COPY AND DELETE LOCAL SYMBOLS ***VJC\r
+        000221' 201640  000701' 03370           MOVEI   DIS, DELETE     ;D - DELETE INSTRUCTION\r
+        000222' 201640  000660' 03380           MOVEI   DIS, EXTRCT     ;E - EXTRACT INSTRUCTION\r
+        000223' 254000  002136' 03390           JRST    ERR16           ;F - ERROR\r
+        000224' 254000  002136' 03400           JRST    ERR16           ;G - ERROR\r
+        000225' 254000  002136' 03410           JRST    ERR16           ;H - ERROR\r
+        000226' 201640  000632' 03420           MOVEI   DIS, INSERT     ;I - INSERT INSTRUCTION\r
+        000227' 254000  002136' 03430           JRST    ERR16           ;J - ERROR\r
+        000230' 260500  000251' 03440           PUSHJ   P, KSWTCH       ;K - SKIPFILE\r
+        000231' 201640  000600' 03450           MOVEI   DIS, LIST       ;L - LIST COMMAND\r
+        000232' 254000  002136' 03460           JRST    ERR16           ;M - ERROR\r
+        000233' 254000  002136' 03470           JRST    ERR16           ;N - ERROR\r
+        000234' 254000  002136' 03480           JRST    ERR16           ;O - ERROR\r
+        000235' 254000  002136' 03490           JRST    ERR16           ;P - ERROR\r
+        000236' 254000  002136' 03500           JRST    ERR16           ;Q - ERROR\r
+        000237' 201640  000621' 03510           MOVEI   DIS, REPLCE     ;R - REPLACE INSTRUCTION\r
+        000240' 254000  002136' 03520           JRST    ERR16           ;S - ERROR\r
+        000241' 260500  000252' 03530           PUSHJ   P, TSWTCH       ;T - SKIP TO LOGICAL END OF TAPE\r
+        000242' 254000  002136' 03540           JRST    ERR16           ;U - ERROR\r
+        000243' 254000  002136' 03550           JRST    ERR16           ;V - ERROR\r
+        000244' 260500  000253' 03560           PUSHJ   P, WSWTCH       ;W - REWIND MAG TAPE\r
+        000245' 201640  000722' 03570           MOVEI   DIS,INDEX       ;X - INDEX THIS LIBRARY\r
+        000246' 254000  002136' 03580           JRST    ERR16           ;Y - ERROR\r
+        000247' 260500  000254' 03590           PUSHJ   P, ZSWTCH       ;Z - CLEAR DIRECTORY ON DECTAPE\r
+\r
+\r
+                                03620   ;MAGTAPE AND DECTAPE DEVICE SWITCH HANDLERS\r
+                                03630   ;THE FOLLOWING ROUTINES HANDLE THE B,K,T,W, AND Z SWITCHES\r
+                                03640   ;BY ASSEMBLING THE PROPER CALL OR UUO INSTRUCTION. IF A \r
+                                03650   ;DEVICE HAS ALREADY BEEN SEEN, THE CHANNEL NUMBER IS LOADED\r
+                                03660   ;INTO THE COMMAND, AND THE INSTRUCTION IS EXECUTED. OTHER-\r
+                                03670   ;WISE, EXECUTION IS DEFERRED BY SETTING A FLAG AND STORING\r
+                                03680   ;THE PARTIALLY ASSEMBLED INSTRUCTION. THE INSTRUCTION IS\r
+                                03690   ;EXECUTED LATER, AFTER THE DEVICE HAS BEEN SEEN.\r
+\r
+        000250' 271740  000001  03710   BSWTCH: ADDI    SW, 1           ;CODE FOR BACKSPACE IS 17\r
+        000251' 271740  000006  03720   KSWTCH: ADDI    SW, 6           ;CODE FOR SKIPFILE IS 16\r
+        000252' 271740  000007  03730   TSWTCH: ADDI    SW, 7           ;CODE FOR SKIP TO L.E.O.T. IS 10\r
+        000253' 344740  000255' 03740   WSWTCH: AOJA    SW,.+2          ;CODE FOR REWIND IS 1\r
+        000254' 200740  005123' 03750   ZSWTCH: MOVE    SW, DTCLR       ;DIFFERENT UUO FOR /Z\r
+        000255' 660340  000002  03760           TRO     F, SAVEB        ;TURN ON THE SWITCH BIT\r
+        000256' 263500  000000  03770           POPJ    P,              ;EXIT\r
+\r\fFUDGE2  V.011                 PAGE 12\r
+        PERIOD PROCESSOR\r
+\r
+                                03790   SUBTTL PERIOD PROCESSOR\r
+                                03800   ;THE PERIOD PROCESSOR IS CALLED BY A DISPATCH FROM GETCHR. IT \r
+                                03810   ;PRECEDES A FILE NAME EXTENSION, UNLESS THE CONTEXT BIT CONB IS\r
+                                03820   ;A ONE (CONB=1), IN WHICH CASE, THE PERIOD WAS FOUND INSIDE AN\r
+                                03830   ;ANGLE BRACKET, INDICATING THAT IT IS PART OF A PROGRAM NAME.\r
+                                03840   ;THE EXTENSION NAME IS GOTTEN BY ENTERING THE GETCHR ROUTINE\r
+                                03850   ;WITH THE LENGTH SET TO THREE CHARACTERS, AND A BYTE POINTER\r
+                                03860   ;SET TO STORE THE SYMOL IN ACCUMULATOR EXT. THE EXTENSION\r
+                                03870   ;FLAG IS SET BY THIS ROUTINE.\r
+\r
+        000257' 602340  010000  03890   PERIOD: TRNE    F, CONB         ;IS PERIOD PART OF A PROGRAM NAME?\r
+        000260' 254000  000127' 03900           JRST    STORE           ;YES, STORE IT IN SYMBOL\r
+        000261' 660340  001000  03910           TRO     F, EXTB         ;NO, SET EXTENSION FLAG\r
+        000262' 200300  005120' 03920           MOVE    E, EXTPTR       ;GET ANOTHER BYTE POINTER\r
+        000263' 201100  000003  03930           MOVEI   B, 3            ;ASSEMBLE A 3-CHARACTER WORD\r
+        000264' 254000  000045' 03940           JRST    GETCMN          ;BUT DONT DESTROY S\r
+\r
+\r\fFUDGE2  V.011                 PAGE 13\r
+        ROUTINES TO PROCESS ANGLE BRACKETS\r
+\r
+                                03970   SUBTTL ROUTINES TO PROCESS ANGLE BRACKETS\r
+                                03980   ;THE FOLLOWING ROUTINES PROCESS THE LEFT ANGLE BRACKET "<"\r
+                                03990   ;AND RIGHT ANGLE BRACKET ">" CHARACTERS. THEY ARE ENTERED BY\r
+                                04000   ;A DISPATCH FROM THE GETCHR ROUTINE. THE ANGLE BRACKETS\r
+                                04010   ;CAN ACT AS FILE NAME OR PROGRAM NAME DELIMITERS, SO A CHECK\r
+                                04020   ;IS MADE TO SEE IF THE SYMBOL ACCUMULATOR IS NON-ZERO. THE\r
+                                04030   ;MAIN FUNCTION OF THE ROUTINES IS TO SET OR CLEAR THE CONTEXT\r
+                                04040   ;BIT CONB, WHOSE INTERPRETATION IS AS FOLLOWS:\r
+                                04050   ;SETTING OF BIT MEANING\r
+                                04060   ;       0               COMMAS DELIMIT FILE NAMES, AND PERIODS\r
+                                04070   ;                       DELIMIT FILE NAME EXTENSIONS\r
+                                04080   ;       1               COMMAS DELIMIT PROGRAM NAMES, AND PERIODS\r
+                                04090   ;                       ARE PART OF A PROGRAM NAME\r
+\r
+        000265' 606340  000001  04110   LBRACK: TRNN    F, DESTB        ;IS THIS THE OUTPUT DEVICE?\r
+        000266' 254000  002007' 04120           JRST    ERROR1          ;YES, SYNTAX ERROR\r
+        000267' 306040  000133  04130           CAIN    A,"["           ;PROJECT-PROGRAMMER PAIR?\r
+        000270' 254000  000162' 04140           JRST    LSQB            ;YES, HANDLE IT\r
+        000271' 200000  005102' 04150           MOVE    0,SDEVCHR       ;GET SAVED DEV CHRSTCS\r
+        000272' 607000  200100  04160           TLNN    0,DTABIT+DSKBIT ;LAST DEVICE DSK OR DTA?\r
+        000273' 254000  000277' 04170           JRST    LBRACA          ;NO\r
+        000274' 200000  005101' 04180           MOVE    0,LSTCHR        ;GET LAST CHAR\r
+        000275' 306000  000072  04190           CAIN    0,72            ;WAS IT COLON?\r
+        000276' 254000  002007' 04200           JRST    ERROR1          ;YES,:< ILLEGAL\r
+        000277'                 04210   LBRACA:                         ;NO CONTINUE\r
+        000277' 260500  000407' 04220           PUSHJ   P, SEMICP       ;PROCESS THE FILE NAME\r
+        000300' 660340  010000  04230           TRO     F, CONB         ;SET CONTEXT TO PROGRAM NAMES\r
+        000301' 350000  005077' 04240           AOS     MATCH           ;ADD ONE FOR EACH LEFT < ***VJC\r
+        000302' 254000  000040' 04250           JRST    GETCHR          ;RETURN FOR MORE CHARACTERS\r
+\r
+        000303' 322600  000305' 04270   RBRACK: JUMPE   S,.+2           ;IS THERE A SYMBOL TO HANDLE?\r
+        000304' 260500  000470' 04280           PUSHJ   P,COMMAP        ;YES,PROCESS THE FILE NAME\r
+        000305' 620340  010000  04290           TRZ     F,CONB          ;SET CONTEXT TO FILE NAMES\r
+        000306' 370000  005077' 04300           SOS     MATCH           ;SUBTRACT ONE FOR EACH RIGHT > ***VJC\r
+        000307' 254000  000040' 04310           JRST    GETCHR          ;RETURN FOR MORE CHARACTERS\r
+\r
+\r\fFUDGE2  V.011                 PAGE 14\r
+        COMMA PROCESSOR\r
+\r
+                                04340   SUBTTL COMMA PROCESSOR\r
+                                04350   ;THE COMMA ROUTINE IS ENTERED BY A DISPATCH FROM GETCHR.\r
+                                04360   ;IT DETERMINES WHETHER THE COMMA DELIMITS A FILE NAME OR A\r
+                                04370   ;PROGRAM NAME, AND TRANSFERS CONTROL EITHER TO SEMICP OR TO\r
+                                04380   ;COMMAP.\r
+\r
+        000310' 606340  010000  04400   COMMA:  TRNN    F, CONB         ;FILE NAME OR PRGRAM NAME?\r
+        000311' 254000  000314' 04410           JRST    COMMAX          ;FILE NAME\r
+        000312' 260500  000470' 04420           PUSHJ   P, COMMAP       ;PROGRAM NAME\r
+        000313' 254000  000040' 04430           JRST    GETCHR          ;RETURN FOR MORE CHARACTERS\r
+\r
+        000314' 260500  000407' 04450   COMMAX: PUSHJ   P, SEMICP       ;FILE NAME, DO A LOOKUP\r
+        000315' 402000  005113' 04460           SETZM   PRJPRG          ;CLEAR TEMP. PPN\r
+        000316' 254000  000040' 04470           JRST    GETCHR          ;RETURN FOR MORE CHARACTERS\r
+\r
+\r\fFUDGE2  V.011                 PAGE 15\r
+        COLON PROCESSOR\r
+\r
+                                04500   SUBTTL COLON PROCESSOR\r
+                                04510   ;THIS ROUTINE IS ENTERED BY A DISPATCH FROM THE GETCHR\r
+                                04520   ;ITS PURPOSE IS TO INITIALIZE DEVICES USED BY FUDGE2 AND\r
+                                04530   ;ASSIGN THEM A CHANNEL NUMBER. IF THE DEVICE IS THE TTY, THE\r
+                                04540   ;ROUTINE EXITS IMMEDIATELY, SINCE THE TTY HAS ALREADY BEEN\r
+                                04550   ;INITIALIZED. IF A PROGRAM WAS NOT SEEN IN THE PREVIOUS DEVICE\r
+                                04560   ;SPECIFICATION, THEN THE PRECEDING FILE HAD NO PROGRAMS\r
+                                04570   ;FOLLOWING IT, AND A ZERO IS PLACED IN THE LIST STRUCTURE IN\r
+                                04580   ;THE 3-WORD FILE BLOCK, SO THAT THE GETDEV ROUTINE WILL\r
+                                04590   ;KNOW THAT THE ENTIRE FILE IS DESIRED. IF THE COLON ROUTINE\r
+                                04600   ;IS CALLED WITH 0 IN ACCUMULATOR S, THE ROUTINE ASSUMES\r
+                                04610   ;THAT SOMETHING LIKE "DTA3:FOO?DTA4:BAR<X,Y,Z>,MTA0:::/R"\r
+                                04620   ;WAS TYPED, AND IT PUTS A PHONY FILE NAME IN FILBUF TO KEEP\r
+                                04630   ;THE BOOK-KEEPING STRAIGHT.\r
+\r
+        000317' 660340  000400  04650   COLON:  TRO     F, DEVB         ;DEVICE WAS SEEN IN THIS SPEC.\r
+        000320' 602340  100000  04660           TRNE    F,POPBAK        ;DEFAULT "DSK" BEING SET\r
+        000321' 254000  000324' 04670           JRST    .+3             ;SO DON'T CLEAR PROJ-PROG\r
+        000322' 402000  005112' 04680           SETZM   DEFPPN          ;CLEAR PERMANENT PPN\r
+        000323' 402000  005113' 04690           SETZM   PRJPRG          ;AND TEMP. ALSO\r
+        000324' 322600  000373' 04700           JUMPE   S, COLONC       ;NULL S IMPLIES FILES ON MTA,PTR\r
+        000325' 202600  002522' 04710           MOVEM   S, COLON2       ;SAVE DEVICE FOR INIT\r
+        000326' 200400  000014  04720           MOVE    G, S            ;GET A COPY OF THE DEVICE NAME\r
+        000327' 000400  000000  04730           DEVCHR  G,              ;GET ITS CHARACTERISTICS\r
+        000330' 202400  005102' 04740           MOVEM   G,SDEVCHR       ;SAVE DEV CHRSTCS ***VJC\r
+        000331' 603400  040010  04750           TLNE    G,TTYBIT!LPTBIT ;IF EITHER TTY OR LPT\r
+        000332' 402000  005111' 04760           SETZM   LEVEL           ;DON'T DO EXTENDED LOOKUPS EVER\r
+        000333' 603400  000010  04770           TLNE    G, TTYBIT       ;IS THE DEVICE A TTY?\r
+        000334' 254000  000040' 04780           JRST    GETCHR          ;YES, RETURN IMMEDIATELY\r
+        000335' 606340  000001  04790           TRNN    F, DESTB        ;IS THIS THE OUTPUT DEVICE?\r
+        000336' 254000  000375' 04800           JRST    COLON4          ;YES, GO CHECK SEPARATE THINGS\r
+        000337' 200240  003324' 04810           MOVE    D, DEVBUF       ;GET POINTER TO DEVICE NAME TABLE\r
+        000340' 252240  000344' 04820   COLON6: AOBJP   D, COLON7       ;MORE DEVICES TO CHECK?\r
+        000341' 316605  003324' 04830           CAMN    S, DEVBUF(D)    ;HAS DEVICE ALREADY BEEN INITTED?\r
+        000342' 254000  000040' 04840           JRST    GETCHR          ;YES, DON'T RE-INIT IT\r
+        000343' 254000  000340' 04850           JRST    COLON6          ;CHECK SOME MORE\r
+\r\fFUDGE2  V.011                 PAGE 16\r
+        COLON PROCESSOR\r
+\r
+\r
+        000344' 202605  003324' 04880   COLON7: MOVEM   S, DEVBUF(D)    ;STORE THE NEW DEVICE NAME\r
+        000345' 205040  777777  04890           MOVSI   A, -1           ;FIX UP THE COUNT IN THE BUFFER\r
+        000346' 272040  003324' 04900           ADDM    A, DEVBUF       ;...\r
+        000347' 607400  000002  04910           TLNN    G, INBIT        ;CAN DEVICE DO INPUT?\r
+        000350' 254000  002015' 04920           JRST    ERROR4          ;NO, ERROR\r
+        000351' 201600  000000  04930           MOVEI   S, 0            ;CLEAR OUT THE SYMBOL WORD\r
+        000352' 666340  000100  04940           TRON    F, PROGB        ;WAS A PROGRAM NAME SEEN?\r
+        000353' 260500  000444' 04950           PUSHJ   P, STNULL       ;NO, STORE A NULL IN FILE BLOCK\r
+        000354' 200040  000005  04960           MOVE    A, D            ;CALCULATE BUFFER HEADER POSITION\r
+        000355' 221040  000003  04970           IMULI   A, 3            ;3 WORDS PER BUFFER HEADER\r
+        000356' 271040  004610' 04980           ADDI    A, IBUF         ;ALL BUFFER HEADERS IN IBUF BLOCK\r
+        000357' 350000  005103' 04990   COLON8: AOS     NUMDEV          ;ONE MORE DEVICE SEEN\r
+        000360' 202040  002523' 05000           MOVEM   A, COLON3       ;SAVE WORD FOR INIT\r
+        000361' 201040  000014  05010           MOVEI   A, 14           ;SET MODE TO BINARY\r
+        000362' 603400  040000  05020           TLNE    G,LPTBIT        ;IS DEVICE THE LPT?\r
+        000363' 201040  000000  05030           MOVEI   A, 0            ;YES, RESTORE MODE TO ASCII\r
+        000364' 542040  002521' 05040           HRRM    A, COLON0       ;SAVE MODE FOR INIT\r
+        000365' 137240  005137' 05050           DPB     D, [POINT 4,COLON1,12]\r
+        000366' 256000  002462' 05060           XCT     COLON1          ;DO OPEN ON DEVICE\r
+        000367' 254000  002061' 05070           JRST    ERROR9          ;DEVICE NOT AVAILABLE\r
+        000370' 606340  000001  05080           TRNN    F, DESTB        ;IS THIS THE OUTPUT DEVICE?\r
+        000371' 254000  000040' 05090           JRST    GETCHR          ;YES, NO MORE CHECKING - EXIT\r
+        000372' 607400  000004  05100           TLNN    G, DRCTRB       ;DOES DEVICE HAVE A DIRECTORY?\r
+        000373' 260500  000406' 05110   COLONC: PUSHJ   P, COLONB       ;NO, GIVE IT A PHONY FILE NAME\r
+        000374' 254000  000040' 05120           JRST    GETCHR          ;RETURN FOR MORE CHARACTERS\r
+\r
+                                05140   ;OUTPUT DEVICE ONLY\r
+\r
+        000375' 202600  003325' 05160   COLON4: MOVEM   S, DEVBUF+1     ;SAVE THE DEVICE NAME\r
+        000376' 201240  000001  05170           MOVEI   D, 1            ;SET DEVICE NUMBER TO 1\r
+        000377' 607400  000001  05180           TLNN    G, OUTBIT       ;CAN DEVICE DO OUTPUT?\r
+        000400' 254000  002015' 05190           JRST    ERROR4          ;NO, ERROR\r
+        000401' 603400  000100  05200           TLNE    G,DTABIT        ;IS DEVICE DTA?\r
+        000402' 660340  400000  05210           TRO     F,DTAFLG        ;YES, SET IN CASE INDEXING\r
+        000403' 205040  004605' 05220           MOVSI   A, OBUF+3       ;CALCULATE BUFFER HEADER ADDRESS\r
+        000404' 660340  000040  05230           TRO     F, TTYCB        ;INDICATE NON-TTY IO\r
+        000405' 254000  000357' 05240           JRST    COLON8          ;ENTER MAIN PROCESSING LOOP\r
+\r
+        000406' 201600  465757  05260   COLONB: MOVEI   S, 465757       ;FILE NAME OF "FOO"\r
+                                05270                                   ;FALLS THROUGH TO SEMICP ROUTINE\r
+\r\fFUDGE2  V.011                 PAGE 17\r
+        FILE NAME PROCESSOR\r
+\r
+                                05290   SUBTTL FILE NAME PROCESSOR\r
+                                05300   ;THIS ROUTINE IS CALLED BY THE COMMA ROUTINE WHEN IT HAS\r
+                                05310   ;BEEN DETERMINED THAT THE CONTEXT OF THE COMMA IS THAT OF A\r
+                                05320   ;FILE NAME. NULL FILES ARE IGNORED BY THE ROUTINE, AND CAUSE\r
+                                05330   ;AN IMMEDIATE RETURN TO GETCHR. FOR OUTPUT DEVICES, AN ENTER\r
+                                05340   ;IS PERFORMED, WHILE FOR INPUT DEVICES, THE FLOW OF CONTROL IS\r
+                                05350   ;AS FOLLOWS:\r
+                                05360   ;       1. IF THE PREVIOUS FILE HAD NO PROGRAMS, A ZERO IS\r
+                                05370   ;          STORED IN THE 3RD WORD OF THE FILE BLOCK OF THAT\r
+                                05380   ;          FILE - THE WORD THAT ORDINARILY POINTS TO THE \r
+                                05390   ;          PROGRAM SUBLIST.\r
+                                05400   ;       2. THE PROGRAM LIST FOR THE PREVIOUS FILE IS TERMINATED\r
+                                05410   ;          BY PUTTING A ZERO IN THE PROGRAM BUFFER, AND PUTTING\r
+                                05420   ;          A POINTER TO THE ZERO IN THE 3RD WORD OF THIS FILE\r
+                                05430   ;          BLOCK (NOT THE PREVIOUS BLOCK)\r
+                                05440   ;       3. THE FILE NAME AND FILE NAME EXTENSION AND THE DEVICE\r
+                                05450   ;          CHANNEL NUMBER OF THE CURRENT FILE ARE STORED.\r
+\r
+        000407' 606340  000400  05470   SEMICP: TRNN    F,DEVB          ;HAS A DEVICE BEEN SEEN?\r
+        000410' 260500  000150' 05480           PUSHJ   P,NODEV         ;NO, SO ASSUME "DSK"\r
+        000411' 312740  005123' 05490           CAME    SW,DTCLR        ;Z SWITCH? YES, OPERATE ON OUTPUT ONLY\r
+        000412' 137240  005140' 05500           DPB     D, [POINT 4,SW,12]\r
+        000413' 622340  000002  05510           TRZE    F, SAVEB        ;IS THERE A SWITCH TO PROCESS?\r
+        000414' 256000  000017  05520           XCT     SW              ;YES, EXECUTE IT\r
+        000415' 322600  000462' 05530           JUMPE   S, SEMIC3       ;IGNORE NULL FILES\r
+\r
+        000416' 626340  001000  05550   SEMICA: TRZN    F, EXTB         ;EXPLICIT EXTENSION SEEN?\r
+        000417' 505700  624554  05560           HRLI    EXT, 624554     ;NO, REPLACE WITH REL"\r
+        000420' 606340  000001  05570           TRNN    F, DESTB        ;OUTPUT DEVICE?\r
+        000421' 254000  000447' 05580           JRST    SEMIC2          ;YES, PROCESS SEPARATELY\r
+        000422' 261500  000014  05590           PUSH    P, S            ;SAVE FILE NAME\r
+        000423' 201600  000000  05600           MOVEI   S, 0            ;PUT IN A ZERO\r
+        000424' 626340  000100  05610           TRZN    F, PROGB        ;WAS A PROGRAM SEEN IN PREVIOUS?\r
+        000425' 260500  000444' 05620           PUSHJ   P, STNULL       ;NO, CLOSE OUT PREVIOUS FILE\r
+        000426' 260500  001144' 05630           PUSHJ   P, PUTPRG       ;YES, CLOSE OUT PREVIOUS PRGLST\r
+        000427' 262500  000014  05640   SEMIC4: POP     P, S            ;RESTORE FILE NAME\r
+        000430' 316600  005141' 05650           CAMN    S,[12B5]        ;IS IT * ?***DMN\r
+        000431' 254000  001675' 05660           JRST    ASTRSK          ;YES ***DMN\r
+        000432' 260500  001137' 05670           PUSHJ   P, PUTFIL       ;NO, STORE FILENAME\r
+        000433' 200600  005112' 05680           MOVE    S,DEFPPN        ;GET GLOBAL PPN\r
+        000434' 260500  001151' 05690           PUSHJ   P,PUTPPN        ;SAVE IT\r
+        000435' 200600  000016  05700           MOVE    S, EXT          ;GET FILE NAME EXTENSION\r
+        000436' 260500  001137' 05710           PUSHJ   P, PUTFIL       ;STORE IT\r
+        000437' 542241  000000  05720           HRRM    D, (A)          ;STORE CHANNEL NUMBER, ALSO\r
+        000440' 200600  005113' 05730           MOVE    S,PRJPRG        ;GET TEMP. PPN\r
+        000441' 260500  001151' 05740           PUSHJ   P,PUTPPN        ;SAVE IT ALSO\r
+        000442' 550600  002724' 05750           HRRZ    S, PRGBUF       ;GET A POINTER TO PROGRAM LIST\r
+        000443' 254000  001137' 05760           JRST    PUTFIL          ;STORE IT AND EXIT\r
+\r
+        000444' 550040  002524' 05780   STNULL: HRRZ    A, FILBUF       ;GET ADDRESS OF CURRENT BLOCK\r
+        000445' 402001  000000  05790           SETZM   (A)             ;CLOSE OUT THE FILE\r
+        000446' 263500  000000  05800           POPJ    P,              ;EXIT\r
+\r
+\r\fFUDGE2  V.011                 PAGE 18\r
+        ENTER ON OUTPUT DEVICE DIRECTORY\r
+\r
+                                05830   SUBTTL ENTER ON OUTPUT DEVICE DIRECTORY\r
+\r
+        000447' 202600  004572' 05850   SEMIC2: MOVEM   S, EBLOCK       ;SAVE FILE NAME FOR ENTER\r
+        000450' 202700  004573' 05860           MOVEM   EXT, EBLOCK+1   ;SAVE FILE NAME EXTENSION\r
+        000451' 137240  005142' 05870           DPB     D, [POINT 4,SEMIC1,12]\r
+        000452' 402000  004574' 05880           SETZM   EBLOCK+2        ;CLEAR DATA AND PROTECTION\r
+        000453' 200140  005102' 05890           MOVE    T,SDEVCHR       ;GET CHARACTERISTICS\r
+        000454' 607140  200000  05900           TLNN    T,DSKBIT        ;IF NOT A DSK\r
+        000455' 402000  005111' 05910           SETZM   LEVEL           ;CLEAR LEVEL D FLAG\r
+        000456' 332140  005111' 05920           SKIPE   T,LEVEL         ;EITHER -2 OR 0\r
+        000457' 254000  000463' 05930           JRST    DEFENT          ;SAVE ENTRY BLOCK\r
+        000460' 256000  002463' 05940           XCT     SEMIC1          ;DO AN ENTER ON THE OUTPUT DEVICE\r
+        000461' 254000  002076' 05950           JRST    ERR14           ;DIRECTORY FULL\r
+        000462' 263500  000000  05960   SEMIC3: POPJ    P,              ;EXIT\r
+\r
+        000463' 200140  005143' 05980   DEFENT: MOVE    T,[XWD EBLOCK,SVENTR]\r
+        000464' 251140  005115' 05990           BLT     T,SVENTR+1      ;SAVE EBLOCK\r
+        000465' 201140  000011  06000           MOVEI   T,RIBALC        ;SET FOR 11 WORD LOOKUP\r
+        000466' 202140  004570' 06010           MOVEM   T,EBLOCK-2      ;IN EXTENDED LOOKUP\r
+        000467' 254000  000462' 06020           JRST    SEMIC3          ;DEFER ENTRY TIL AFTER LOOKUP\r
+\r\fFUDGE2  V.011                 PAGE 19\r
+        THE PROGRAM NAME PROCESSOR\r
+\r
+                                06040   SUBTTL THE PROGRAM NAME PROCESSOR\r
+                                06050   ;THE COMMAP ROUTINE IS ENTERED BY A CALL FROM THE COMMA\r
+                                06060   ;ROUTINE WHEN THE CONTEXT OF A COMMA IS THAT OF A PROGRAM NAME\r
+                                06070   ;DELIMITER. ITS PURPOSE IS TO SAVE UP THE PROGRAM NAMES IT SEES\r
+                                06080   ;IN THE PROGRAM BUFFER PRGBUF. THE PROGRAM NAMES ARE CONVERTED\r
+                                06090   ;TO RADIX 50 REPRESENTATION, AND A CALL TO PUTPRG STORES THE\r
+                                06100   ;PROGRAM NAME FOR LATER REFERENCE BY THE VARIOUS FUDGE SUBROUTINES\r
+                                06110   ;------------------------------------------------------------------\r
+                                06120   ;RADIX50 - SIXBIT CODE CONVERSION TABLE\r
+\r
+                                06140   ;CHARACTER      SIXBIT          RADIX50\r
+\r
+                                06160   ;0-9            20-31           01-12\r
+                                06170   ;A-Z            41-72           13-44\r
+                                06180   ;BLANK          00              00\r
+                                06190   ;PERIOD         16              45\r
+                                06200   ;$              04              46\r
+                                06210   ;-------------------------------------------------------------------\r
+                                06220   ;THE SYMBOL IS ASSUMED TO LEFT-JUSTIFIED UPON ENTERING, AND\r
+                                06230   ;IS RIGHT-JUSTIFIED BEFORE CONVERSION TO RADIX 50.\r
+\r
+                                06250   ;FLAG SETTINGS: THE PROGRAM BIT PROGB IS SET TO 1, AND THE FILE\r
+                                06260   ;BIT FILEB IS SET TO 0.\r
+        000470' 660340  000100  06270   COMMAP: TRO     F, PROGB        ;SET PROGRAM BIT\r
+        000471' 606340  000001  06280           TRNN    F, DESTB        ;IS THIS THE OUTPUT DEVICE?\r
+        000472' 254000  002007' 06290           JRST    ERROR1          ;YES, SYNTAX ERROR\r
+        000473' 200300  005117' 06300           MOVE    E, SYMPTR       ;SET UP A BYTE POINTER TO S\r
+        000474' 201100  000006  06310           MOVEI   B, 6            ;SET COUNTER TO SIX\r
+        000475' 201200  000000  06320           MOVEI   C, 0\r
+        000476' 322600  000503' 06330           JUMPE   S, COMMA1       ;NULL SYMBOL?\r
+        000477' 602600  000077  06340   COMMA3: TRNE    S, 77           ;IS SYMBOL RIGHT-JUSTIFIED YET?\r
+        000500' 254000  000503' 06350           JRST    COMMA1          ;YES, GO CONVERT TO RADIX 50\r
+        000501' 241600  777772  06360           ROT     S, -6           ;NO, SHIFT IT ONE PLACE RIGHT\r
+        000502' 254000  000477' 06370           JRST    COMMA3          ;CHECK AGAIN\r
+        000503' 221200  000050  06380   COMMA1: IMULI   C, 50           ;CONVERT TO RADIX50\r
+        000504' 134040  000006  06390           ILDB    A, E            ;PICK UP NEXT CHARACTER IN S\r
+        000505' 322040  000516' 06400           JUMPE   A, COMMA4       ;A BLANK IS A BLANK IS A BLANK!\r
+        000506' 306040  000004  06410           CAIN    A, 4            ;IS IT A <$>?\r
+        000507' 271040  000070  06420           ADDI    A, 70           ;YES, COMPENSATE FOR SUBTRACTION\r
+        000510' 306040  000016  06430           CAIN    A, 16           ;IS IT A <.>?\r
+        000511' 271040  000055  06440           ADDI    A, 55           ;YES, COMPENSATE FOR SUBTRACTION\r
+        000512' 303040  000031  06450           CAILE   A, 31           ;TRANSLATE TO RADIX 50 CODE\r
+        000513' 275040  000007  06460           SUBI    A, 7            ;LETTER - SUBTRACT 26\r
+        000514' 275040  000017  06470           SUBI    A, 17           ;NUMBER - SUBTRACT 17\r
+        000515' 270200  000001  06480           ADD     C, A            ;COMBINE WITH PARTIAL WORD\r
+        000516' 367100  000503' 06490   COMMA4: SOJG    B, COMMA1       ;LOOP FOR SIX CHARACTERS\r
+        000517' 200600  000004  06500           MOVE    S, C            ;PUT SYMBOL BACK IN S\r
+        000520' 254000  001144' 06510           JRST    PUTPRG          ;STORE IT AND EXIT\r
+\r
+\r\fFUDGE2  V.011                 PAGE 20\r
+        THE ALTMODE PROCESSOR\r
+\r
+                                06540   SUBTTL THE ALTMODE PROCESSOR\r
+                                06550   ;THE ALTMODE SUBROUTINE IS CALLED BY A DISPATCH FROM THE\r
+                                06560   ;GETCHR ROUTINE WHEN A $ IS SEEN IN THE COMMAND STRING. IT SIGNALS\r
+                                06570   ;THE END OF THE COMMAND STRING. A CHECK IS MADE ON THE SYNTAX\r
+                                06580   ;OF THE COMMAND STRING, TO SEE IF AN OUTPUT DEVICE WAS SPEC-\r
+                                06590   ;IFIED, AND TO SEE IF A COMMAND WAS GIVEN. THE LIST\r
+                                06600   ;STRUCTURE FOR THE FILE NAMES AND PROGRAM NAMES IS TERMINATED\r
+                                06610   ;BY TWO CALLS TO SEMICP, THE LAST OF WHICH HAS A FILE NAME OF 0.\r
+                                06620   ;THE POINTERS AT THE TOP OF THE FILBUF,PRGBUF AND DEVBUF BUFFERS\r
+                                06630   ;ARE RESET FOR LATER USER BY THE VARIOUS SUBROUTINES.\r
+\r
+        000521' 606340  004000  06650   ALTMOD: TRNN    F,INFOB         ; IS THERE A COMMAND?\r
+        000522' 254000  000000' 06660           JRST    FUDGE2          ; NO, RESTART\r
+        000523' 260500  002243' 06670           PUSHJ   P,CRLF          ; ACKNOWLEDGE WITH A CR LF\r
+        000524' 660340  040000  06680           TRO     F,CRLFTY        ;INDICATE CR,LF TYPED\r
+        000525' 260500  000407' 06690           PUSHJ   P, SEMICP       ;STORE THIS FILE NAME\r
+        000526' 201600  000000  06700           MOVEI   S, 0            ;MAKE A NULL FILE NAME\r
+        000527' 260500  000416' 06710           PUSHJ   P, SEMICA       ;TERMINATE THE LIST STRUCTURE\r
+        000530' 200040  005124' 06720           MOVE    A, FILXWD       ;SET UP A BLT POINTER TO FIX\r
+        000531' 251040  002527' 06730           BLT     A, FILBUF+3     ;THE MASTER FILE PART,1ST WORD OF\r
+        000532' 402000  002530' 06740           SETZM   FILBUF+4        ;FILBUF WAS JUNK,NOW 4TH WORD=0\r
+        000533' 201040  002531' 06750           MOVEI   A, FILBUF+5     ;RESET POINTER TO TRANS. FILES\r
+        000534' 202040  002524' 06760           MOVEM   A, FILBUF       ;...\r
+        000535' 201040  003125' 06770           MOVEI   A,PPNBUF+1      ;RESET PPNBUF\r
+        000536' 202040  003124' 06780           MOVEM   A,PPNBUF        ;AS IT WAS AT START\r
+        000537' 322640  002007' 06790           JUMPE   DIS, ERROR1     ;NO COMMAND SEEN?\r
+        000540' 606340  000001  06800           TRNN    F, DESTB        ;NO OUTPUT FILE MENTIONED?\r
+        000541' 254000  002007' 06810           JRST    ERROR1          ;SYNTAX ERROR\r
+        000542' 332000  005077' 06820           SKIPE   MATCH           ;LEFT < EQU RIGHT > ?***VJC\r
+        000543' 254000  002007' 06830           JRST    ERROR1          ;SYNTAX ERROR ***VJC\r
+        000544' 602340  000040  06840           TRNE    F, TTYCB        ;CHANGE OUTPUT IF ON TTY\r
+        000545' 660340  000020  06850           TRO     F, TTYOB        ;...\r
+                                06860                                   ;AND FALL INTO INBUF0\r
+\r
+\r\fFUDGE2  V.011                 PAGE 21\r
+        THE ALTMODE PROCESSOR\r
+\r
+\r
+                                06900   ;SEE HOW MANY 204(8) WORD BLOCKS FIT IN JOBREL-JOBFF.\r
+                                06910   ;DIVIDE THIS NUMBER BY THE NUMBER OF DEVICES\r
+                                06920   ;IN DEVBUF TABLE. THIS GIVES THE NO. OF BLOCKS\r
+                                06930   ;THAT CAN BE ASSIGNED TO EACH DEVICE, IF ZERO,\r
+                                06940   ;NEED MORE CORE. THE REMAINDER OF THE DIVISION\r
+                                06950   ;INDICATES EXTRA BLOCKS THAT MAY BE\r
+                                06960   ;ALLOCATED TO OUTPUT OR INPUT DEVICES\r
+\r
+        000546' 550040  000000* 06980   INBUF0: HRRZ    A, JOBREL       ;GET TOP OF JOB AREA\r
+        000547' 274040  000000* 06990           SUB     A,JOBFF         ;BUFFER AREA AVAILABLE\r
+        000550' 231040  000204  07000           IDIVI   A, 204          ;NUMBER OF DECTAPE BLOCKS\r
+        000551' 230040  005103' 07010           IDIV    A,NUMDEV        ;DIVIDED BY NUMBER OF DEVICES\r
+        000552' 322040  000573' 07020           JUMPE   A,INBUFG        ;NOT ENOUGH CORE\r
+        000553' 201300  000002  07030           MOVEI   E,2             ;START INBUFS ON DEVICE #2\r
+        000554' 602340  000040  07040           TRNE    F, TTYCB        ;IS OUTPUT ON TTY?\r
+        000555' 254000  000566' 07050           JRST    INBUF1          ;NO, DO AN OUTBUF\r
+        000556' 200200  000001  07060   INBUF2: MOVE    C, A            ;PICK UP NUMBER OF BLOCKS\r
+        000557' 361100  000561' 07070           SOJL    A+1,.+2         ;ANY EXTRA BLOCKS? (REMAINDER)\r
+        000560' 340200  000000  07080           AOJ     C,              ;YES, USE THEM\r
+        000561' 137300  005144' 07090           DPB     E, [POINT 4, INBUF3,12]\r
+        000562' 256000  002464' 07100           XCT     INBUF3          ;PERFORM THE INBUF\r
+        000563' 315300  000005  07110           CAMGE   E, D            ;MORE DEVICES TO TAKE CARE OF?\r
+        000564' 344300  000556' 07120           AOJA    E, INBUF2       ;YES, PROCESS THEM\r
+        000565' 254015  000000  07130           JRST    (DIS)           ;NO, GO TO APPROPRIATE SUBROUTINE\r
+\r
+\r
+        000566' 200200  000001  07160   INBUF1: MOVE    C, A            ;PICK UP NUMBER OF BLOCKS\r
+        000567' 361100  000571' 07170           SOJL    A+1,.+2         ;ANY EXTRA BLOCKS?\r
+        000570' 340200  000000  07180           AOJ     C,              ;YES, GIVE ONE TO OUTPUT\r
+        000571' 065044  000000  07190   INBUF4: OUTBUF  1,(C)           ;OUTBUF ON DEVICE #1\r
+        000572' 254000  000556' 07200           JRST    INBUF2          ;GO DO SOME INBUFS\r
+                                07210   ;ASK FOR MORE CORE\r
+\r
+        000573' 550040  000546* 07230   INBUFG: HRRZ    A,JOBREL        ;GET ANOTHER K OF CORE\r
+        000574' 271040  002000  07240           ADDI    A,2000\r
+        000575' 000040  000000  07250           CORE    A,\r
+        000576' 254000  002170' 07260           JRST    ERR22           ;NOT AVAILABLE\r
+        000577' 254000  000546' 07270           JRST    INBUF0          ;TRY TO SET UP BUFFERS\r
+\r\fFUDGE2  V.011                 PAGE 22\r
+        FUDGE2 COMMAND PROCESSORS\r
+\r
+                                07290   SUBTTL  FUDGE2 COMMAND PROCESSORS\r
+\r
+                                07310   ;LIST PROCESSOR\r
+                                07320   ;THIS ROUTINE PROCESSES THE L COMMAND IN FUDGE2. BINARY\r
+                                07330   ;PROGRAMS ARE READ, AND THEIR NAMES OUTPUT, UNTIL AN END\r
+                                07340   ;OF FILE IS REACHED.\r
+\r
+        000600' 606340  000020  07360   LIST:   TRNN    F,TTYOB         ;OUTPUT TO TTY?\r
+        000601' 254000  000610' 07370           JRST    LIST1           ;MODE MUST BE ASCII\r
+        000602' 062040  000003  07380           GETSTS  1,T             ;GET STATUS\r
+        000603' 626140  000014  07390           TRZN    T,14            ;BINARY MODE SET?\r
+        000604' 254000  000610' 07400           JRST    LIST1           ;NO, MUST BE ASCII\r
+        000605' 060043  000000  07410           SETSTS  1,(T)           ;CHANGE MODE TO ASCII\r
+        000606' 205140  000700  07420           MOVSI   T,700           ;SET UP NEW BYTE POINTER\r
+        000607' 202140  004606' 07430           MOVEM   T,OBUF+4        ;SO WORD COUNT WILL BE CORRECT\r
+        000610' 260500  000772' 07440   LIST1:  PUSHJ   P, MSTGET       ;GET THE MASTER DEVICE\r
+        000611' 254000  002024' 07450           JRST    ERROR6          ;NOT ENOUGH ARGUMENTS\r
+        000612' 476000  005116' 07460           SETOM   NOWARN          ;DON'T GIVE WARNING MESSAGE IF INDEX SEEN\r
+        000613' 260500  001156' 07470   LIST2:  PUSHJ   P, READ         ;READ A PROGRAM NAME\r
+        000614' 254000  002257' 07480           JRST    EXIT            ;ALL DONE\r
+        000615' 200100  000001  07490           MOVE    B, A            ;GET THE PROGRAM NAME IN B\r
+        000616' 260500  002220' 07500           PUSHJ   P, PTYPO        ;TYPE IT OUT\r
+        000617' 260500  002243' 07510           PUSHJ   P, CRLF         ;TYPE A CRLF\r
+        000620' 254000  000613' 07520           JRST    LIST2           ;RETURN FOR MORE PROGRAM NAMES\r
+\r
+\r
+                                07550   ;REPLACE PROCESSOR\r
+                                07560   ;THIS ROUTINE PROCESSES THE R COMMAND IN FUDGE2. THE TOTAL\r
+                                07570   ;COMMAND STRING IS BROKEN INTO A LIST OF PROGRAMS FOR THE MASTER\r
+                                07580   ;DEVICE, AND A LIST OF PROGRAMS FOR THE TRANSACTION DEVICES.\r
+                                07590   ;THE ROUTINE READS THE MASTER FILE UNTIL ONE OF THE DESIRED\r
+                                07600   ;REPLACEMENT PROGRAMS IS REACHED, THEN SWITCHES TO THE \r
+                                07610   ;TRANSACTION DEVICE TO FIND THE PROGRAM WHICH IS TO REPLACE THE\r
+                                07620   ;PROGRAM IN THE MASTER FILE. AFTER THE REPLACEMENT HAS BEEN\r
+                                07630   ;EFFECTED, RESET IS CALLED TO RESTORE THE MASTER DEVICE TO ITS\r
+                                07640   ;OLD POSITION.\r
+\r
+        000621' 260500  000772' 07660   REPLCE: PUSHJ   P, MSTGET       ;GET A PROGRAM FROM MASTER DEVICE\r
+        000622' 254000  000656' 07670           JRST    IPROC7          ;NO MORE, COPY REST OF MASTER\r
+        000623' 260500  000743' 07680           PUSHJ   P, COPYTO       ;COPY UP TO THE PROGRAM NAME\r
+        000624' 260500  000777' 07690           PUSHJ   P, TRNGET       ;GET A PROGRAM FROM TRANSACTION\r
+        000625' 254000  002022' 07700           JRST    ERROR5          ;USER DID NOT SUPPLY ENOUGH\r
+        000626' 260500  000751' 07710           PUSHJ   P, FINDCP       ;FIND THE PROGRAM AND COPY IT\r
+        000627' 306240  000002  07720           CAIN    D, 2            ;HAS THE MASTER DEVICE BEEN MOVED?\r
+        000630' 260500  001002' 07730           PUSHJ   P, RESET        ;YES, RESET IT\r
+        000631' 254000  000621' 07740           JRST    REPLCE          ;LOOK FOR MORE REPLACEMENTS\r
+\r\fFUDGE2  V.011                 PAGE 23\r
+        INSERT PROCESSOR\r
+\r
+                                07760   SUBTTL INSERT PROCESSOR\r
+                                07770   ;THIS SUBROUTINE PROCESSES THE I COMMAND IN FUDGE. IT READS AND\r
+                                07780   ;WRITES PROGRAMS FROM THE MASTER FILE UNTIL IT FINDS THE\r
+                                07790   ;PROGRAM NAME CURRENTLY POINTED TO, AT WHICH TIME IT STARTS READING\r
+                                07800   ;FROM THE TRANSACTION DEVICE, MAKING AN INSERTION AT THE\r
+                                07810   ;PROPER PLACE.\r
+\r
+        000632' 260500  000772' 07830   INSERT: PUSHJ   P, MSTGET       ;GET A PROGRAM FROM MASTER FILE\r
+        000633' 254000  000656' 07840           JRST    IPROC7          ;NO MORE, COPY REST OF MASTER\r
+        000634' 260500  000743' 07850           PUSHJ   P, COPYTO       ;COPY UP TO A PROGRAM NAME\r
+        000635' 202200  002517' 07860           MOVEM   C, SAVEAC       ;SAVE SPECIAL ACCUMULATOR\r
+        000636' 200240  005145' 07870           MOVE    D, [XWD ENTBLK,SVEBLK]\r
+        000637' 251244  000506  07880           BLT     D, X+1(C)       ;MOVE ENTRY BLOCK INTO SAFE PLACE\r
+        000640' 260500  000777' 07890           PUSHJ   P, TRNGET       ;GET NEXT TRANSACTION FILE\r
+        000641' 254000  002022' 07900           JRST    ERROR5          ;NOT ENOUGH TRANSACTION FILES\r
+        000642' 260500  000751' 07910           PUSHJ   P, FINDCP       ;FIND TRANSACTION FILE AND COPY\r
+        000643' 302240  000002  07920           CAIE    D, 2            ;HAS MASTER FILE BEEN JIGGLED?\r
+        000644' 254000  000647' 07930           JRST    FIXUP           ;NO, RESTORE THE ENTRY BLOCK\r
+        000645' 260500  001002' 07940           PUSHJ   P, RESET        ;YES, RESET IT\r
+        000646' 254000  000654' 07950           JRST    INSER1          ;WRITE OUTGO BACK FOR MORE INSERTIONS\r
+\r
+        000647' 200200  002517' 07970   FIXUP:  MOVE    C, SAVEAC       ;RESTORE SPECIAL AC\r
+        000650' 204240  005145' 07980           MOVS    D, [XWD ENTBLK,SVEBLK]\r
+        000651' 251244  000000  07990           BLT     D, (C)          ;RESTORE ENTRY BLOCK\r
+        000652' 201240  000002  08000           MOVEI   D, 2            ;SET UP CHANNEL AC\r
+        000653' 201640  000006  08010           MOVEI   DIS, 6          ;SET UP BUFFER HEADER INDEX\r
+        000654' 260500  001305' 08020   INSER1: PUSHJ   P, WRITE        ;WRITE OUT THE CURRENT FILE\r
+        000655' 254000  000632' 08030           JRST    INSERT          ;GO BACK FOR MORE INSERTIONS\r
+\r
+        000656' 260500  000737' 08050   IPROC7: PUSHJ   P, COPY         ;COPY REST OF MASTER FILE\r
+        000657' 254000  002257' 08060           JRST    EXIT            ;EXIT\r
+\r\fFUDGE2  V.011                 PAGE 24\r
+        EXTRACT PROCESSOR\r
+\r
+                                08080    SUBTTL EXTRACT PROCESSOR\r
+                                08090   ;THIS ROUTINE PROCESSES THE E COMMAND IN FUDGE. RATHER THAN\r
+                                08100   ;ONE MASTER AND SEVERAL TRANSACTION FILES, ALL FILES ARE\r
+                                08110   ;TREATED THE SAME. AFTER A CALL TO EITHER MSTGET OR TRNGET\r
+                                08120   ;PROGRAMS ARE SEARCHED FOR AND WRITTEN ON THE OUTPUT DEVICE.\r
+\r
+        000660' 476000  005116' 08140   EXTRCT: SETOM   NOWARN          ;NO WARNING MESSAGE\r
+        000661' 260500  000772' 08150           PUSHJ   P, MSTGET       ;GET A PROGRAM FROM MASTER DEVICE\r
+        000662' 254000  000670' 08160           JRST    EPROC1          ;ALL DONE WITH MASTER DEVICE\r
+        000663' 326540  000666' 08170           JUMPN   R,.+3           ;ANY PROGRAMS THIS FILE? **VJC\r
+        000664' 260500  000737' 08180           PUSHJ   P,COPY          ;NO, COPY ENTIRE FILE ***VJC\r
+        000665' 254000  000670' 08190           JRST    EPROC1          ; ***VJC\r
+        000666' 260500  000751' 08200           PUSHJ   P, FINDCP       ;FIND THE PROGRAM AND COPY IT\r
+        000667' 254000  000660' 08210           JRST    EXTRCT          ;RETURN FOR MORE MASTER PROGRAMS\r
+        000670' 201040  002531' 08220   EPROC1: MOVEI   A, FILBUF+5     ;GET PROGRAM FROM TRANS BUFFER\r
+        000671' 202040  002524' 08230           MOVEM   A, FILBUF       ;INITIALIZE POINTER FIRST\r
+        000672' 260500  001031' 08240   EPROC2: PUSHJ   P, GETDEV       ;...\r
+        000673' 254000  002257' 08250           JRST    EXIT            ;ALL DONE\r
+        000674' 326540  000677' 08260           JUMPN   R,.+3           ;ANY PROGRAMS THIS FILE?  ***VJC\r
+        000675' 260500  000737' 08270           PUSHJ   P,COPY          ;NO, COPY ENTIRE FILE ***VJC\r
+        000676' 254000  000672' 08280           JRST    EPROC2          ; ***VJC\r
+        000677' 260500  000751' 08290           PUSHJ   P, FINDCP       ;FIND THE PROGRAM AND COPY IT\r
+        000700' 254000  000672' 08300           JRST    EPROC2          ;RETURN FOR MORE TRANS FILES\r
+\r\fFUDGE2  V.011                 PAGE 25\r
+        DELETE PROCESSOR\r
+\r
+                                08320   SUBTTL DELETE PROCESSOR\r
+                                08330   ;THIS ROUTINE PROCESSES THE D COMMAND IN FUDGE2.  ONLY ONE\r
+                                08340   ;INPUT FILE WILL BE READ, AND THE PROGRAM NAMES ASSOCIATED\r
+                                08350   ;WITH ITS LIST WILL BE DELETED.\r
+\r
+        000701' 260500  000772' 08370   DELETE: PUSHJ   P, MSTGET       ;GET A PROGRAM TO BE DELETED\r
+        000702' 254000  000656' 08380           JRST    IPROC7          ;FINISH OFF THE MASTER FILE\r
+        000703' 260500  001156' 08390   DPROC1: PUSHJ   P, READ         ;READ A PROGRAM\r
+        000704' 254000  002026' 08400           JRST    ERROR7          ;EOF - CANT FIND IT\r
+        000705' 316540  000001  08410           CAMN    R, A            ;CORRECT PROGRAM?\r
+        000706' 254000  000701' 08420           JRST    DELETE          ;YES, GET THE NEXT ONE\r
+        000707' 260500  001305' 08430           PUSHJ   P, WRITE        ;NO, WRITE THIS ONE OUT\r
+        000710' 254000  000703' 08440           JRST    DPROC1          ;TRY AGAIN\r
+\r
+                                08460   ;APPEND PROCESSOR\r
+                                08470   ;THIS ROUTINE HANDLES THE A COMMAND IN FUDGE2. IT WILL COPY\r
+                                08480   ;THE ENTIRE MASTER FILE, THEN START OBTAINING TRANSACTION\r
+                                08490   ;DEVICES WITH CALLS TO TRNGET, APPENDING ONE OR MORE\r
+                                08500   ;PROGRAMS FROM EACH FILE.\r
+\r
+        000711' 260500  000772' 08520   APPEND: PUSHJ   P, MSTGET       ;GET A PROGRAM FROM MASTER FILE\r
+        000712' 254000  002024' 08530           JRST    ERROR6          ;NOT ENOUGH ARGUMENTS\r
+        000713' 260500  000737' 08540           PUSHJ   P, COPY         ;COPY ENTIRE FILE\r
+        000714' 201040  002531' 08550           MOVEI   A, FILBUF+5     ;INITIALIZE POINTER FOR TRANS\r
+        000715' 202040  002524' 08560           MOVEM   A, FILBUF       ;...\r
+        000716' 260500  001031' 08570   APROC3: PUSHJ   P, GETDEV       ;GET A PROGRAM NAME\r
+        000717' 254000  002257' 08580           JRST    EXIT            ;ALL DONE\r
+        000720' 260500  000751' 08590           PUSHJ   P, FINDCP       ;FIND THE PROGRAM AND COPY IT\r
+        000721' 254000  000716' 08600           JRST    APROC3          ;GET NEXT APPENDATION\r
+\r\fFUDGE2  V.011                 PAGE 26\r
+        DELETE PROCESSOR\r
+\r
+\r
+                                08630   ;THIS ROUTINE PROCESSES THE X COMMAND (INDEX LIBRARY)\r
+                                08640   ;AND FALLS INTO DELETE LOCAL SYMBOLS CODE.\r
+                                08650   ;IF NOT DESIRED SKIP TO DELCPY+1\r
+\r
+        000722' 200040  003325' 08670   INDEX:  MOVE    A,DEVBUF+1      ;GET OUTPUT DEVICE\r
+        000723' 000040  000000  08680           DEVCHR  A,              ;GET ITS CHARACTERISTICS\r
+        000724' 607040  200100  08690           TLNN    A,DSKBIT!DTABIT ;ONLY ALLOW DSK AND DTA AS LIBRARY DEVICES\r
+        000725' 254000  002172' 08700           JRST    ERR23           ;GIVE ERROR MESSAGE\r
+        000726' 476000  005116' 08710           SETOM   NOWARN          ;NO WARNING MESSAGE IF /X\r
+        000727' 660340  200000  08720           TRO     F,XFLG          ;SET INDEX FLAG\r
+                                08730   ;       TROA    F,XFLG          ;SET /X BUT NOT /C\r
+\r
+                                08750   ;DELETE LOCAL SYMBOLS AND COPY PROCESSOR\r
+                                08760   ;THIS ROUTINE PROCESSES THE C COMMAND\r
+                                08770   ;ONLY THE MASTER FILE IS HANDLED\r
+\r
+        000730' 660340  000200  08790   DELCPY: TRO     F, NOLOCB       ;SET FLAG TO DELETE LOCAL SYMBOLS\r
+        000731' 260500  000772' 08800           PUSHJ   P, MSTGET       ;GET A PROGRAM FROM MASTER FILE\r
+        000732' 254000  002024' 08810           JRST    ERROR6          ;NOT ENOUGH ARGUMENTS\r
+        000733' 260500  000737' 08820           PUSHJ   P, COPY         ;COPY ENTIRE FILE\r
+        000734' 606340  200000  08830           TRNN    F,XFLG          ;INDEX FLAG ON?\r
+        000735' 254000  002257' 08840           JRST    EXIT            ;ALL DONE\r
+        000736' 254000  001571' 08850           JRST    INDEX3          ;YES DO PASS 2\r
+\r\fFUDGE2  V.011                 PAGE 27\r
+        FUDGE2 IO SUBROUTINES\r
+\r
+                                08870   SUBTTL  FUDGE2 IO SUBROUTINES\r
+\r
+                                08890   ;ROUTINES TO COPY FILES, COPY UP TO A GIVEN PROGRAM IN A FILE\r
+                                08900   ;AND TO FIND A GIVEN PROGRAM IN A FILE AND COPY IT.\r
+\r
+                                08920   ;THE COPY ROUTINE WILL COPY BINARY PROGRAMS FROM WHEREVER THE\r
+                                08930   ;INPUT DEVICE HAPPENS TO BE WHEN IT IS CALLED, UP TO THE\r
+                                08940   ;END OF FILE. SINCE COPY IS CALLED WITH A PUSHJ, THE END-OF-\r
+                                08950   ;FILE EXIT IN INGET WILL EXIT TO THE PLACE THAT CALLED COPY.\r
+\r
+        000737' 260500  001156' 08970   COPY:   PUSHJ   P, READ         ;READ A PROGRAM\r
+        000740' 263500  000000  08980           POPJ    P,              ;EXIT WHEN ALL THROUGH FILE\r
+        000741' 260500  001305' 08990           PUSHJ   P, WRITE        ;WRITE OUT THE PROGRAM\r
+        000742' 254000  000737' 09000           JRST    COPY            ;RETURN FOR MORE PROGRAMS\r
+\r
+                                09020   ;THE COPYTO ROUTINE WILL READ AND WRITE PROGRAMS FROM THE\r
+                                09030   ;INPUT DEVICE UNTIL THE PROGRAM WHOSE NAME IS IN ACCUMULATOR\r
+                                09040   ;R IS FOUND, AT WHICH TIME IT EXITS\r
+\r
+        000743' 260500  001156' 09060   COPYTO: PUSHJ   P, READ         ;READ A PROGRAM\r
+        000744' 254000  002026' 09070           JRST    ERROR7          ;EOF - CANT FIND IT\r
+        000745' 316540  000001  09080           CAMN    R, A            ;IS IT THE CORRECT PROGRAM?\r
+        000746' 263500  000000  09090           POPJ    P,              ;YES, EXIT\r
+        000747' 260500  001305' 09100           PUSHJ   P, WRITE        ;NO, WRITE IT OUT\r
+        000750' 254000  000743' 09110           JRST    COPYTO          ;READ SOME MORE PROGRAMS\r
+\r\fFUDGE2  V.011                 PAGE 28\r
+        FUDGE2 IO SUBROUTINES\r
+\r
+\r
+                                09140   ;THE FINDCP ROUTINE WILL SEARCH THE INPUT FILE FOR A PROGRAM\r
+                                09150   ;WHOSE NAME IS IN ACCUMULATOR R, AND HAVING FOUND IT, WILL\r
+                                09160   ;WRITE IT OUT. IF THE CONTENTS OF AC R ARE ZERO, THE ENTIRE\r
+                                09170   ;FILE IS COPIED.\r
+\r
+        000751' 322540  000737' 09190   FINDCP: JUMPE   R, COPY         ;COPY ENTIRE FILE?\r
+        000752' 260500  001156' 09200   FIND1:  PUSHJ   P, READ         ;READ A PROGRAM FROM INPUT FILE\r
+        000753' 254000  000757' 09210           JRST    FIND2           ;EOF, TRY REWINDING AND TRYING AGAIN\r
+        000754' 312540  000001  09220           CAME    R, A            ;IS THIS THE RIGHT ONE?\r
+        000755' 254000  000752' 09230           JRST    FIND1           ;NO, TRY AGAIN\r
+        000756' 254000  001305' 09240           JRST    WRITE           ;YES, WRITE IT OUT AND EXIT\r
+\r
+        000757' 322040  002026' 09260   FIND2:  JUMPE   A,ERROR7        ;V3 IF EOF OUTPUT ERROR MESSAGE\r
+        000760' 260500  001024' 09270           PUSHJ   P, BACKSP       ;BACKSPACE THE MAG TAPE\r
+        000761' 550040  002524' 09280           HRRZ    A, FILBUF       ;PICK UP THE FILE POINTER\r
+        000762' 502041  000003  09290           HLLM    A, 3(A)         ;CLEAR THE LOOKUP FLAG FOR DECTAPE\r
+        000763' 260500  001031' 09300           PUSHJ   P, GETDEV       ;SET UP THE PROGRAM AGAIN\r
+        000764' 254000  002013' 09310           JRST    ERROR3          ;IMPOSSIBLE ERROR RETURN\r
+        000765' 260500  001156' 09320   FIND3:  PUSHJ   P, READ         ;READ A PROGRAM FROM INPUT FILE\r
+        000766' 254000  002026' 09330           JRST    ERROR7          ;EOF - REALLY CANT FIND IT\r
+        000767' 312540  000001  09340           CAME    R, A            ;IS THIS THE RIGHT ONE?\r
+        000770' 254000  000765' 09350           JRST    FIND3           ;NO, TRY AGAIN\r
+        000771' 254000  001305' 09360           JRST    WRITE           ;YES, WRITE IT OUT AND EXIT\r
+\r\fFUDGE2  V.011                 PAGE 29\r
+        FUDGE2 IO SUBROUTINES\r
+\r
+                                09380   ;ROUTINE MSTGET RETRIEVES A PROGRAM NAME FROM THE MASTER\r
+                                09390   ;DEVICE SPECIFICATIONS. IT SAVES THE POINTER IN FILBUF, \r
+                                09400   ;CHANGES IT TO POINT TO ITS OWN BLOCK, THEN CALLS GETDEV\r
+\r
+        000772' 200040  002524' 09420   MSTGET: MOVE    A, FILBUF       ;GET THE POINTER TO CURRENT FILE\r
+        000773' 202040  002515' 09430           MOVEM   A, FILSAV       ;SAVE THE CURRENT POINTER\r
+        000774' 201040  002525' 09440           MOVEI   A, FILBUF+1     ;CHANGE IT TO POINT TO MASTER\r
+        000775' 202040  002524' 09450           MOVEM   A, FILBUF       ;...\r
+        000776' 254000  001031' 09460           JRST    GETDEV          ;CALL COMMON ROUTINE\r
+\r
+\r
+                                09490   ;ROUTINE TRNGET RETRIEVES A PROGRAM NAME FROM THE TRANSACTION\r
+                                09500   ;FILES. IT RESETS THE POINTER THAT MSTGET WIPED OUT, AND CALLS\r
+                                09510   ;THE COMMON PROGRAM RETRIEVAL PROGRAM GETDEV.\r
+\r
+        000777' 200040  002515' 09530   TRNGET: MOVE    A, FILSAV       ;GET SAVED POINTER\r
+        001000' 202040  002524' 09540           MOVEM   A, FILBUF       ;RESTORE IT TO ITS PLACE\r
+        001001' 254000  001031' 09550           JRST    GETDEV          ;CALL COMMON ROUTINE\r
+\r
+                                09570   ;ROUTINE RESET RESTORES THE STATE OF THE MASTER DEVICE TO\r
+                                09580   ;WHAT IT WAS JUST AFTER THE LAST TIME MSTGET WAS CALLED. IT\r
+                                09590   ;SETS THE POINTER OF THE MASTER FILE BACK TO THE PREVIOUS\r
+                                09600   ;PROGRAM, CALLS MSTGET, AND FINDS THE PROGRAM AGAIN\r
+\r
+        001002' 201040  002531' 09620   RESET:  MOVEI   A,FILBUF+5      ;START OF TRANSACTION LIST  ***DMN\r
+        001003' 502040  002527' 09630           HLLM    A, FILBUF+3     ;NOW CLEAR LOOKUP FLAG ON MASTER\r
+        001004' 370000  002527' 09640           SOS     FILBUF+3        ;MOVE POINTER BACK ONE PROGRAM\r
+        001005' 336001  000000  09650   RESET2: SKIPN   (A)             ;ANY TRANSACTION FILES ?    ***DMN\r
+        001006' 254000  001012' 09660           JRST    RESET3          ;NO-ALL DONE                ***DMN\r
+        001007' 502041  000002  09670           HLLM    A,2(A)          ;CLEAR LOOKUP FLAG ON IT    ***DMN\r
+        001010' 271040  000003  09680           ADDI    A,3             ;NEXT FILE                  ***DMN\r
+        001011' 254000  001005' 09690           JRST    RESET2          ;GO BACK FOR MORE           ***DMN\r
+        001012' 260500  000772' 09700   RESET3: PUSHJ   P, MSTGET       ;SET UP THE MASTER DEVICE\r
+        001013' 254000  002013' 09710           JRST    ERROR3          ;FUDGE ERROR-NO MASTER!\r
+        001014' 260500  001024' 09720           PUSHJ   P, BACKSP       ;BACKSPACE IN CASE ITS A MAG TAPE\r
+        001015' 200040  002515' 09730           MOVE    A, FILSAV       ;DIDDLE THE POINTERS, BECAUSE MSTGET\r
+        001016' 202040  002524' 09740           MOVEM   A, FILBUF       ;WILL BE CALLED AGAIN IMMEDIATELY\r
+        001017' 260500  001156' 09750   RESET1: PUSHJ   P, READ         ;READ A PROGRAM FROM MASTER FILE\r
+        001020' 254000  002013' 09760           JRST    ERROR3          ;FUDGE ERROR-CANT FIND PROGRAM\r
+        001021' 312540  000001  09770           CAME    R, A            ;IS IT THE RIGHT PROGRAM NAME?\r
+        001022' 254000  001017' 09780           JRST    RESET1          ;NO, LOOK AGAIN\r
+        001023' 263500  000000  09790           POPJ    P,              ;YES, EXIT\r
+        001024' 137240  005146' 09800   BACKSP: DPB     D, [POINT 4, BACK0,12]\r
+        001025' 137240  005147' 09810           DPB     D, [POINT 4, BACK1, 12]\r
+        001026' 137240  005150' 09820           DPB     D, [POINT 4, BACK2,12]\r
+        001027' 137240  005151' 09830           DPB     D, [POINT 4,BACK3,12]\r
+        001030' 254000  002465' 09840           JRST    BACK0           ;GO TO POSITION MAGTAPE\r
+\r\fFUDGE2  V.011                 PAGE 30\r
+        COMMON PROGRAM RETRIEVAL PROGRAM GETDEV.\r
+\r
+                                09860   SUBTTL COMMON PROGRAM RETRIEVAL PROGRAM GETDEV.\r
+                                09870   ;THIS PROGRAM USES VARIOUS POINTERS AND BITS OF INFORMATION\r
+                                09880   ;IN FILBUF AND PRG BUF TO RETURN TO THE USER A RADIX 50\r
+                                09890   ;PROGRAM NAME AS SEEN IN THE COMMAND STRING. THE STRUCTURE\r
+                                09900   ;OF INFORMATION IN THESE TWO BUFFERS IS AS FOLLOWS:\r
+\r
+                                09920   ;FILBUF IS A LIST OF 3-WORD BLOCKS OF DATA ABOUT EACH FILE.\r
+                                09930   ;THE FIRST WORD IN FILBUF IS A POINTER WHICH POINTS TO THE\r
+                                09940   ;FIRST WORD OF THE BLOCK CURRENTLY BEING WORKED ON BY\r
+                                09950   ;THE VARIOUS SUBROUTINES OF FUDGE. WHEN THE COMMAND STRING\r
+                                09960   ;IS BEING PROCESSED AND INFORMATION IS BEING STORED IN FILBUF,\r
+                                09970   ;THIS POINTER IS IN THE FORM OF AN AOBJN WORD SO THAT A CHECK\r
+                                09980   ;CAN BE MADE FOR BUFFER OVERFLOW. THE CONTENTS OF THE 3-WORD\r
+                                09990   ;FILE BLOCK IS AS FOLLOWS:\r
+                                10000   ;       1ST WORD - SIXBIT FILE NAME, OR ZERO IF THIS IS THE\r
+                                10010   ;                  END OF THE LIST .\r
+                                10020   ;       2ND WORD - LEFT HALF CONTAINS A SIXBIT FILE NAME EXTENSION\r
+                                10030   ;                  RIGHT HALF CONTAINS THE CHANNEL NUMBER FOR\r
+                                10040   ;                  THIS FILE.\r
+                                10050   ;       3RD WORD - LEFT HALF IS ZERO IS A LOOKUP HAS NOT BEEN\r
+                                10060   ;                  DONE ON THIS FILE NAME, AND -1 IF IT HAS. A\r
+                                10070   ;                  LOOKUP CAN THUS BE FORECED BY ZEROING OUT THE\r
+                                10080   ;                  LEFT HALF OF THE WORD.\r
+                                10090   ;                  RIGHT HALF CONTAINS A POINTER TO THE LAST\r
+                                10100   ;                  PROGRAM NAME IN PRGBUF THAT WAS REFERENCED. THE\r
+                                10110   ;                  RIGHT HALF IS ZERO IF THERE ARE NO PROGRAM\r
+                                10120   ;                  NAMES ASSOCIATED WITH THE FILE.\r
+\r
+                                10140   ;PRGBUF IS A LIST OF PROGRAM NAMES USED BY THE FILES IN FILBUF.\r
+                                10150   ;THE FIRST WORD OF PRGBUF IS A POINTER WORD WHOSE USE IS THE\r
+                                10160   ;SAME AS THE FIRST WORD OF FILBUF.THE ENTRIES IN PRGBUF CONSIST\r
+                                10170   ;OF A LIST OF RADIX50 SYMBOLS, ONE TO A WORD, TERMINATED BY\r
+                                10180   ;A ZERO WORD.\r
+\r
+                                10200   ;FUDGE2 WORKS WITH FILBUF AND PRGBUF IN TWO DISTINCTLY \r
+                                10210   ;DIFFERENT WAYS: ONCE WHEN IT IS PROCESSING THE COMMAND STRING\r
+                                10220   ;AND STORING THE VARIOUS FILE NAMES AND PROGRAM NAMES, AND\r
+                                10230   ;ONCE WHEN IT IS USING THE INFORMATION IN THE FILES TO PROCESS\r
+                                10240   ;A FUDGE COMMAND. WHEN A FILE NAME IS SEEN IN THE COMMAND STRING,\r
+                                10250   ;THE STATUS OF THE PREVIOUS FILE IS CHECKED. IF THE PREVIOUS\r
+                                10260   ;FILE HAD NO PROGRAM NAMES, THEN ITS POINTER WORD (3RD WORD) IS\r
+                                10270   ;ZEROED OUT TO INDICATE THE ABSCENCE OF ANY PROGRAMS IN PRGBUF.\r
+                                10280   ;OTHERWISE, PROCESSING BEGINS ON THE CURRENT FILE: THE FILE\r
+                                10290   ;NAME, FILE NAME EXTENSION, AND CHANNEL NUMBER ARE STORED. THE\r
+                                10300   ;CONTENTS OF THE POINTER WORD IN PRGBUF ARE STORED IN THE\r
+                                10310   ;POINTER WORD OF THE FILE BLOCK\r
+                                10320   ;ROOM IS LEFT IN FILBUF SO THAT WHEN THE CARRIAGE RETURN IS\r
+                                10330   ;SEEN, FUDGE2 CAN SHUFFLE THE FIRST FILE BLOCK UP ONE WORD AND\r
+                                10340   ;INSERT ANOTHER NULL. THE EFFECT OF THIS KLUDGE IS THAT WE NOW\r
+                                10350   ;HAVE TWO SEPARATE LISTS IN FILBUF, A MASTER LIST, AND A \r
+                                10360   ;TRANSACTION LIST.\r
+\r\fFUDGE2  V.011                 PAGE 31\r
+        COMMON PROGRAM RETRIEVAL PROGRAM GETDEV.\r
+\r
+        001031' 200100  002524' 10380   GETDEV: MOVE    B, FILBUF       ;GET POINTER TO FILE BLOCK\r
+        001032' 336002  000000  10390           SKIPN   (B)             ;END OF LIST? (ZERO TERMINATES)\r
+        001033' 263500  000000  10400           POPJ    P,              ;YES, EXIT\r
+        001034' 200040  003124' 10410           MOVE    A,PPNBUF        ;GET POINTER TO PPN'S\r
+        001035' 200241  000000  10420           MOVE    D,(A)           ;GET GLOBAL PPN\r
+        001036' 202240  005112' 10430           MOVEM   D,DEFPPN        ;SAVE AS DEFAULT PPN\r
+        001037' 200241  000001  10440           MOVE    D,1(A)          ;GET TEMP. PPN\r
+        001040' 202240  005113' 10450           MOVEM   D,PRJPRG        ;SAVE AS TEMP. PPN\r
+        001041' 271040  000002  10460           ADDI    A,2             ;INCREMENT POINTER\r
+        001042' 202040  003124' 10470           MOVEM   A,PPNBUF        ;SAVE NEW POINTER\r
+        001043' 550242  000001  10480           HRRZ    D, 1(B)         ;GET DEVICE NUMBER FOR THIS DEVICE\r
+        001044' 331002  000002  10490           SKIPL   2(B)            ;HAS A LOOKUUP BEEN DONE?\r
+        001045' 254000  001066' 10500           JRST    GET3            ;NO, GO DO LOOKUP\r
+        001046' 201640  000003  10510   GET0:   MOVEI   DIS, 3          ;SET UP AC DIS\r
+        001047' 220640  000005  10520           IMUL    DIS, D          ;C(DIS) = 3*C(D)\r
+        001050' 550042  000002  10530           HRRZ    A, 2(B)         ;GET  POINTER TO  PROGRAM NAMES\r
+        001051' 322040  001060' 10540           JUMPE   A, GET1         ;NULL PROGRAM LIST (NO POINTER)?\r
+        001052' 350042  000002  10550           AOS     A, 2(B)         ;NO, INCREMENT POINTER BY ONE\r
+        001053' 200541  000000  10560           MOVE    R, (A)          ;GET A PROGRAM NAME\r
+        001054' 326540  001063' 10570           JUMPN   R, CPOPJ1       ;END OF PROGRAM LIST?\r
+        001055' 271100  000003  10580           ADDI    B, 3            ;YES, INCREMENT FILBUF POINTER\r
+        001056' 202100  002524' 10590           MOVEM   B, FILBUF       ;SAVE NEW POINTER\r
+        001057' 254000  001031' 10600           JRST    GETDEV          ;TRY NEXT FILE BLOCK\r
+\r
+        001060' 201540  000000  10620   GET1:   MOVEI   R, 0            ;NO PROGRAMS, RETURN ZERO\r
+        001061' 271100  000003  10630           ADDI    B, 3            ;MOVE FILBUF POINTER TO NEXT BLOCK\r
+        001062' 202100  002524' 10640           MOVEM   B, FILBUF       ;SAVE THE POINTER\r
+        001063' 354012  000000  10650   CPOPJ1: AOSA    (P)             ;GOOD RETURN\r
+        001064' 262512  000000  10660   POPOUT: POP     P,(P)           ;POP UP ONE LEVEL\r
+        001065' 263500  000000  10670   CPOPJ:  POPJ    P,              ;EXIT\r
+\r\fFUDGE2  V.011                 PAGE 32\r
+        COMMON PROGRAM RETRIEVAL PROGRAM GETDEV.\r
+\r
+\r
+        001066' 137240  005152' 10700   GET3:   DPB     D, [POINT 4,GET3A,12]\r
+        001067' 256000  002472' 10710           XCT     GET3A           ;CLOSE CURRENT FILE BEFORE DOING...\r
+        001070' 200042  000000  10720           MOVE    A, (B)          ;GET FILE NAME OF NEXT FILE\r
+        001071' 202040  004572' 10730           MOVEM   A, EBLOCK       ;SET UP FOR LOOKUP\r
+        001072' 510042  000001  10740           HLLZ    A, 1(B)         ;GET FILE NAME EXTENSION\r
+        001073' 202040  004573' 10750           MOVEM   A, EBLOCK+1     ;SAVE IT FOR LOOKUP\r
+        001074' 563042  000002  10760           HRROS   A, 2(B)         ;SET FLAG IN LEFT HALF OF 3RD WORD\r
+        001075' 137240  005153' 10770           DPB     D, [POINT 4,GET4A,12]\r
+        001076' 336040  005113' 10780           SKIPN   A,PRJPRG        ;GET TEMP. PPN\r
+        001077' 200040  005112' 10790           MOVE    A,DEFPPN        ;USE PERMANENT IF NO TEMP.\r
+        001100' 202040  004575' 10800           MOVEM   A,EBLOCK+3      ;SAVE IT\r
+        001101' 202040  004571' 10810           MOVEM   A,EBLOCK-1      ;FOR LEVEL D ALSO\r
+        001102' 200045  003324' 10820           MOVE    A,DEVBUF(D)     ;GET DEVICE\r
+        001103' 000040  000000  10830           DEVCHR  A,              ;GET ITS CHARACTERISTICS\r
+        001104' 607040  200000  10840           TLNN    A,DSKBIT        ;IF NOT A DSK\r
+        001105' 634140  000003  10850           TDZA    T,T             ;NO EXTENDED LOOKUP\r
+        001106' 200140  005111' 10860           MOVE    T,LEVEL         ;GET LEVEL\r
+        001107' 256000  002473' 10870   GET4:   XCT     GET4A           ;DO A LOOKUP ON NEW FILE\r
+        001110' 254000  001113' 10880           JRST    .+3             ;NOT FOUND, TRY WITH BLANKS EXT.\r
+        001111' 402000  004575' 10890           SETZM   EBLOCK+3        ;CLEAR PROJ-PROG\r
+        001112' 254000  001121' 10900           JRST    DOENTR          ;SUCCESSFUL RETURN FROM LOOKUP\r
+        001113' 554042  000001  10910           HLRZ    A, 1(B)         ;GET THE FILE NAME EXTENSION\r
+        001114' 302040  624554  10920           CAIE    A, 624554       ;IS IT "REL" ?\r
+        001115' 254000  002043' 10930           JRST    ERROR8          ;NO,  DON'T GIVE HIM ANOTHER CHANCE\r
+        001116' 502042  000001  10940           HLLM    A, 1(B)         ;YES, TRY LOOKUP WITH 0 EXTENSION\r
+        001117' 402000  004573' 10950           SETZM   EBLOCK+1        ;CLEAR EXTENSION IN LOOKUP BLOCK\r
+        001120' 254000  001107' 10960           JRST    GET4            ;TRY AGAIN\r
+\r
+        001121' 336000  005111' 10980   DOENTR: SKIPN   LEVEL           ;IF NOT LEVEL D\r
+        001122' 254000  001134' 10990           JRST    DOXSWT          ;ENTER DONE ALREADY\r
+        001123' 204140  005143' 11000           MOVS    T,[XWD EBLOCK,SVENTR]\r
+        001124' 251140  004573' 11010           BLT     T,EBLOCK+1      ;RESTORE EBLOCK\r
+        001125' 205140  777000  11020           MOVSI   T,777000        ;MASK FOR PROTECTION\r
+        001126' 406140  004574' 11030           ANDM    T,EBLOCK+2      ;CLEAR DATE AND TIME\r
+        001127' 402000  004571' 11040           SETZM   EBLOCK-1        ;CLEAR PPN\r
+        001130' 200140  005111' 11050           MOVE    T,LEVEL\r
+        001131' 256000  002463' 11060           XCT     SEMIC1          ;DO ENTER\r
+                                11070           JRST    [HRRZ T,EBLOCK+1 ;GET ERROR CODE\r
+                                11080                   CAIN    T,17    ;PARTIAL ALLOCATION ONLY?\r
+                                11090                   JRST    .+1     ;YES, JUST CONTINUE\r
+        001132' 254000  005154' 11100                   JRST    ERR14]  ;ERROR\r
+        001133' 402000  005111' 11110           SETZM   LEVEL           ;NEVER AGAIN\r
+        001134' 602340  200000  11120   DOXSWT: TRNE    F,XFLG          ;INDEX FLAG ON?\r
+        001135' 260500  001467' 11130           PUSHJ   P,INDEX0        ;YES, SET UP POINTERS AND CORE\r
+        001136' 254000  001046' 11140           JRST    GET0            ;AND CONTINUE\r
+\r\fFUDGE2  V.011                 PAGE 33\r
+        COMMON PROGRAM RETRIEVAL PROGRAM GETDEV.\r
+\r
+\r
+                                11170   ;SHORT ROUTINES TO STORE WORDS IN THE FILE BUFFER AND PROGRAM\r
+                                11180   ;BUFFER\r
+                                11190   ;ROUTINE PUTFIL STORES THE CONTENTS OF ACCUMULATOR S IN THE\r
+                                11200   ;NEXT FREE LOCATION IN FILBUF. IT CHECKS FOR OVERFLOW.\r
+\r
+        001137' 200040  002524' 11220   PUTFIL: MOVE    A, FILBUF       ;GET POINTER WORD FOR FILBUF\r
+        001140' 252040  002011' 11230           AOBJP   A, ERROR2       ;INCREMENT, CHECK FOR OVERFLOW\r
+        001141' 202040  002524' 11240           MOVEM   A, FILBUF       ;SAVE NEW POINTER\r
+        001142' 202601  000000  11250           MOVEM   S, (A)          ;SAVE FILE NAME ENTRY\r
+        001143' 263500  000000  11260           POPJ    P,              ;EXIT\r
+\r
+\r
+                                11290   ;ROUTINE PUTPRG STORES THE CONENTS OF ACCUMULATOR S IN THE\r
+                                11300   ;NEXT FREE LOCATION IN PRGBUF. IT CHECKS FOR OVERFLOW.\r
+\r
+        001144' 200040  002724' 11320   PUTPRG: MOVE    A, PRGBUF       ;GET POINTER WORD FOR BUFFER\r
+        001145' 252040  002011' 11330           AOBJP   A, ERROR2       ;INCREMENT, CHECK FOR OVERFLOW\r
+        001146' 202040  002724' 11340           MOVEM   A, PRGBUF       ;SAVE NEW POINTER WORD\r
+        001147' 202601  000000  11350           MOVEM   S, (A)          ;SAVE PROGRAM NAME\r
+        001150' 263500  000000  11360           POPJ    P,              ;EXIT\r
+\r
+                                11380   ;ROUTINE PUTPPN STORE THE TWO PPPN NUMBER IN PPNBUF\r
+\r
+        001151' 200040  003124' 11400   PUTPPN: MOVE    A,PPNBUF        ;GET POINTER WORD FOR BUFFER\r
+        001152' 252040  002011' 11410           AOBJP   A,ERROR2\r
+        001153' 202040  003124' 11420           MOVEM   A,PPNBUF        ;SAVE NEW POINTER WORD\r
+        001154' 202601  000000  11430           MOVEM   S,(A)           ;SAVE PPN\r
+        001155' 263500  000000  11440           POPJ    P,              ;EXIT\r
+\r\fFUDGE2  V.011                 PAGE 34\r
+        ROUTINE TO INPUT ONE PROGRAM AT A TIME\r
+\r
+                                11460   SUBTTL ROUTINE TO INPUT ONE PROGRAM AT A TIME\r
+                                11470   ;THE FIRST WORD THAT THE PROGRAM READS WILL BE A BLOCK HEADER.\r
+                                11480   ;BLOCKS ARE READ UNTIL AN ENTRY BLOCK IS FOUND, AND THE ENTIRE\r
+                                11490   ;ENTRY BLOCK IS STORED IN AN INTERNAL BUFFER,SIZE PERMITTING.\r
+                                11500   ;FOLLOWING THAT, THE NAME BLOCK IS READ, AND THE NAME OF THE \r
+                                11510   ;PROGRAM IS RETURNED IN ACCUMULATOR A. PROVISION IS MADE FOR\r
+                                11520   ;BLOCKS OF WORD COUNT ZERO. THE SECTION OF CODING AROUND READ2\r
+                                11530   ;DELIBERATELY OMITS THIS CHECK IN ORDER TO READ IN THE NEXT\r
+                                11540   ;BLOCK HEADER WITH A MINIMUM OF INSTRUCTIONS. ORDINARILY, EACH\r
+                                11550   ;PROGRAM WILL BEGIN WITH AN ENTRY BLOCK, BUT THE ROUTINE WILL\r
+                                11560   ;ALSO ALLOW THE PROGRAM TO BEGIN WITH A NAME BLOCK IF NO\r
+                                11570   ;ENTRY BLOCK IS SEEN.\r
+\r
+        001156' 201200  003334' 11590   READ:   MOVEI   C, ENTBLK       ;SET UP POINTER TO BUFFER\r
+        001157' 260500  001647' 11600   READ6:  JSR     GETIN           ;GET A BLOCK HEADER\r
+        001160' 554100  000001  11610           HLRZ    B, A            ;GET THE BLOCK CODE\r
+        001161' 306100  000014  11620           CAIN    B,14            ;IS IT AN INDEX BLOCK?\r
+        001162' 254000  001276' 11630           JRST    READX           ;YES, GET RID OF IT\r
+        001163' 306100  000004  11640           CAIN    B, 4            ;IS IT AN ENTRY BLOCK?\r
+        001164' 254000  001206' 11650           JRST    READ1           ;YES, PROCESS IT\r
+        001165' 306100  000006  11660           CAIN    B, 6            ;IS IT A NAME BLOCK?\r
+        001166' 254000  001266' 11670           JRST    READ7           ;YES, PROCESS IT\r
+        001167' 306100  000400  11680           CAIN    B,400           ;F4 SIGNAL WORD?\r
+        001170' 254000  001270' 11690           JRST    F4I             ;YES, PROCESS F4 BLOCKS\r
+        001171' 260500  001337' 11700           PUSHJ   P, COUNT        ;CALCULATE SIZE OF BLOCK\r
+        001172' 322100  001157' 11710           JUMPE   B, READ6        ;WORD COUNT OF ZERO?\r
+        001173' 311115  004612' 11720   READ6A: CAML    B, IBUF+2(DIS)  ;DOES BLOCK OVERLAP IO BUFFERS?\r
+        001174' 254000  001202' 11730           JRST    READ6B          ;ADJUST B AND GET ANOTHER BUFFER\r
+        001175' 200055  004612' 11740           MOVE    A, IBUF+2(DIS)  ;NO, DIDDLE BUFFER HEADER COUNT\r
+        001176' 274040  000002  11750           SUB     A, B            ;ELIMINATE BLOCK OF LENGTH C(B)\r
+        001177' 202055  004612' 11760           MOVEM   A, IBUF+2(DIS)  ;PUT NEW WORD COUNT BACK\r
+        001200' 272115  004611' 11770           ADDM    B, IBUF+1(DIS)  ;MOVE BYTE POINTER PAST BLOCK\r
+        001201' 254000  001157' 11780           JRST    READ6           ;GET NEXT BLOCK\r
+        001202' 274115  004612' 11790   READ6B: SUB     B, IBUF+2(DIS)  ;ACCOUNT FOR REST OF THIS BUFFER\r
+        001203' 402015  004612' 11800           SETZM   IBUF+2(DIS)     ;FORCE ANOTHER INBUF\r
+        001204' 260500  001647' 11810           JSR     GETIN           ;GET ANOTHER BUFFER OF INPUT\r
+        001205' 254000  001173' 11820           JRST    READ6A          ;CHECK AGAIN\r
+\r
+\r
+                                11850   ; THIS CODE MODIFIED 3-21-71 BY DCS (STANFORD) TO HANDLE\r
+                                11860   ;  MORE THAN ONE ENTRY BLOCK (FAIL AND SAIL BOTH ISSUE\r
+                                11870   ;  MULTIPLE ENTRY BLOCKS).\r
+\r
+                        000452  11890   SIZZ==SIZE-<<SIZE+21>/22>-4     ;ACCOUNT FOR HDR BLKS, RELOC WRDS, PROGNAME\r
+        001206' 402000  003334' 11900   READ1:  SETZM   ENTBLK          ;SAME AS (C) AT PRESENT\r
+        001207' 505200  777777  11910           HRLI    C,-1            ;AOBJN WILL OVERFLOW FIRST TIME\r
+\r
+                                11930   ; BACK HERE FOR EACH NEW ENTRY BLOCK\r
+\r
+        001210' 211101  400000  11950   READ2:  MOVNI   B,400000(A)     ;-1 IN LH, 377777-CT IN RH\r
+        001211' 553000  000001  11960           HRRZS   A\r
+        001212' 270040  003334' 11970           ADD     A,ENTBLK        ;NEW COUNT IF IT FITS\r
+        001213' 303040  000452  11980           CAILE   A,SIZZ          ;TOO MUCH NOW?\r
+\r\fFUDGE2  V.011                 PAGE 34-1\r
+        ROUTINE TO INPUT ONE PROGRAM AT A TIME\r
+\r
+        001214' 664340  002000  11990            TROA    F,ERRB         ; YES, MARK ENTRY BLOCK TOO BIG\r
+        001215' 202040  003334' 12000           MOVEM   A,ENTBLK        ;NO, UPDATE USED COUNT\r
+                                12010   ; HERE FOR EACH NEW WORD\r
+        001216' 606100  377777  12020   READ23: TRNN    B,377777        ;END THIS LOADER BLOCK?\r
+        001217' 254000  001233' 12030            JRST    READ55         ; YES, CHECK NEXT\r
+        001220' 253100  001223' 12040           AOBJN   B,NXTWRD        ;TIME FOR SOME RELOC BITS?\r
+        001221' 260500  001647' 12050           JSR     GETIN           ;YES, GET THEM AND TOSS THEM\r
+        001222' 505100  777756  12060           HRLI    B,-22           ;AND RESET COUNT\r
+        001223' 260500  001647' 12070   NXTWRD: JSR     GETIN           ;GET A DATA WORD\r
+                                12080   ; (ROUTINE COURTESY OF DEC LOADER)\r
+\r
+        001224' 253200  001230' 12100           AOBJN   C,READ22        ;NEED TO INSERT RELOC WORD?\r
+        001225' 606340  002000  12110           TRNN    F,ERRB          ;YES, UNLESS NOT INSERTING\r
+        001226' 402004  000000  12120            SETZM   (C)            ; ALL ENTRY RELOCS ARE 0\r
+        001227' 270200  005160' 12130           ADD     C,[XWD -22,1]   ;LH 0 BEFORE ADD, SET UP NEXT\r
+        001230' 606340  002000  12140   READ22: TRNN    F,ERRB          ;ARE WE INSERTING?\r
+        001231' 202044  000000  12150            MOVEM   A,(C)          ; YES, PUT IT AWAY\r
+        001232' 254000  001216' 12160           JRST    READ23          ;LOOP\r
+\r
+\r
+        001233' 260500  001647' 12190   READ55: JSR     GETIN           ;GET NEXT HEADER WORD\r
+        001234' 554100  000001  12200           HLRZ    B,A             ;TYPE\r
+        001235' 306100  000004  12210           CAIN    B,4             ;ANOTHER ENTRY?\r
+        001236' 254000  001210' 12220            JRST    READ2          ; YES, STORE IT\r
+\r
+                                12240   ; PROGRAM NAME -- FINISH ENTRY BLOCK OUT\r
+        001237' 201100  000004  12250           MOVEI   B,4             ;ENTRY BLOCK TYPE\r
+        001240' 506100  003334' 12260           HRLM    B,ENTBLK        ;NOW CORRECT TYPE,,COUNT\r
+        001241' 505200  000000  12270           HRLI    C,0             ;CLEAR LH COUNT\r
+        001242' 344200  001266' 12280           AOJA    C,READ7         ;STORE NAME BLOCK HEADER AND CONTINUE\r
+                                12290   ; END OF DCS PATCH 3-21-71\r
+\r\fFUDGE2  V.011                 PAGE 35\r
+        ROUTINE TO INPUT ONE PROGRAM AT A TIME\r
+\r
+        001243' 260500  001337' 12310   READ5:  PUSHJ   P, COUNT        ;CALCULATE SIZE OF BLOCK\r
+        001244' 322100  001261' 12320           JUMPE   B, READ9        ;WORD COUNT OF ZERO?\r
+        001245' 260500  001647' 12330   READ3:  JSR     GETIN           ;GET A WORD\r
+        001246' 202044  000000  12340           MOVEM   A, (C)          ;STORE IT\r
+        001247' 340200  000000  12350           AOJ     C,              ;INCREMENT BUFFER POINTER\r
+        001250' 367100  001245' 12360           SOJG    B, READ3        ;DONE READING YET?\r
+        001251' 306440  000002  12370           CAIN    G+1, 2          ;IS THERE A COMMON WORD?\r
+        001252' 200044  777776  12380           MOVE    A, -2(C)        ;GET PROGRAM NAME IN A\r
+        001253' 322040  001261' 12390           JUMPE   A, READ9        ;IGNORE WORD OF ZERO\r
+        001254' 200100  000001  12400           MOVE    B, A            ;GET RID OF EXTRA BLANKS\r
+        001255' 231100  000050  12410   READ8:  IDIVI   B, 50           ;TRY DIVIDING IT BY 50\r
+        001256' 326140  001261' 12420           JUMPN   B+1, READ9      ;FILTERED OUT ALL THE BLANKS?\r
+        001257' 200040  000002  12430           MOVE    A, B            ;NO, STORE SYMBOL AGAIN\r
+        001260' 254000  001255' 12440           JRST    READ8           ;TRY ANOTHER DIVISION\r
+\r
+        001261' 602340  002000  12460   READ9:  TRNE    F, ERRB         ;ERROR CONDITION?\r
+        001262' 254000  002064' 12470           JRST    ERR10           ;YES\r
+        001263' 606340  200000  12480           TRNN    F,XFLG          ;INDEX FLAG ON?\r
+        001264' 254000  001063' 12490           JRST    CPOPJ1          ;NO, SKIP EXIT\r
+        001265' 254000  001514' 12500           JRST    INDEX1          ;YES SAVE ENTRIES\r
+\r
+        001266' 202044  000000  12520   READ7:  MOVEM   A, (C)          ;STORE NAME BLOCK HEADER\r
+        001267' 344200  001243' 12530           AOJA    C, READ5        ;GO READ NAME BLOCK\r
+\r
+        001270' 660340  020000  12550   F4I:    TRO     F,F4IB          ;DONT OUTPUT DURING F4 SEARCH\r
+        001271' 261500  000004  12560           PUSH    P,C             ;SAVE ENTRY BLOCK\r
+        001272' 260500  001346' 12570           PUSHJ   P,F4            ;PASS F4 BLOCKS\r
+        001273' 262500  000004  12580           POP     P,C             ;RESTORE ENTRY BLOCK\r
+        001274' 620340  020000  12590           TRZ     F,F4IB          ;TURN OFF IGNORE BIT\r
+        001275' 254000  001157' 12600           JRST    READ6           ;GO PROCESS NEXT PROGRAM\r
+\r
+        001276' 336000  005116' 12620   READX:  SKIPN   NOWARN          ;DO WE WANT A MESSAGE?\r
+                                12630           TTCALL  3,[ASCIZ /WARNING NO INDEX ON OUTPUT FILE - CONTINUING\r
+        001277' 051140  005161' 12640   /]\r
+        001300' 476000  005116' 12650           SETOM   NOWARN          ;ONCE IS ENOUGH\r
+        001301' 402015  004612' 12660           SETZM   IBUF+2(DIS)     ;FORCE ANOTHER INBUF\r
+        001302' 260500  001647' 12670           JSR     GETIN           ;INPUT THE NEXT BLOCK\r
+        001303' 370015  004612' 12680           SOS     IBUF+2(DIS)     ;WORD COUNT OUT BY ONE\r
+        001304' 254000  001160' 12690           JRST    READ6+1         ;AND RETURN TO CODE\r
+\r\fFUDGE2  V.011                 PAGE 36\r
+        ROUTINE TO OUTPUT ONE PROGRAM AT A TIME\r
+\r
+                                12710   SUBTTL ROUTINE TO OUTPUT ONE PROGRAM AT A TIME\r
+                                12720   ;THE WRITE SUBROUTINE WILL OUTPUT AN ENTIRE BINARY RE-\r
+                                12730   ;LOCATABLE PROGRAM AS WRITTEN BY MACRO6. IT ASSUMES THAT THE\r
+                                12740   ;ENTRY BLOCK AND NAME BLOCK FOR THE PROGRAM ARE IN THE\r
+                                12750   ;INTERNAL BUFFER ENTBLK, AND OUTPUTS THESE BEFORE PICKING UP\r
+                                12760   ;MORE BLOCKS FROM THE CURRENT INPUT DEVICE. BLOCKS ARE READ\r
+                                12770   ;AND WRITTEN UNTIL THE END BLOCK HAS BEEN PROCESSED. PROVISION I\r
+                                12780   ;IS MADE FOR BLOCKS WITH A WORD COUNT OF ZERO.\r
+\r
+        001305' 275200  003334' 12800   WRITE:  SUBI    C, ENTBLK       ;GET COUNT OF ENTRY BLOCK\r
+        001306' 322200  001314' 12810           JUMPE   C, WRITE3       ;NOTHING TO OUTPUT?\r
+        001307' 201100  003334' 12820           MOVEI   B, ENTBLK       ;GET A POINTER IN B\r
+        001310' 200042  000000  12830   WRITE2: MOVE    A, (B)          ;GET A BINARY WORD\r
+        001311' 260500  001656' 12840           PUSHJ   P, OUT          ;OUTPUT IT\r
+        001312' 340100  000000  12850           AOJ     B,              ;INCREMENT POINTER\r
+        001313' 367200  001310' 12860           SOJG    C, WRITE2       ;KEEP GOING UNTIL BUFFER EMPTY\r
+        001314' 260500  001647' 12870   WRITE3: JSR     GETIN           ;GET A BLOCK HEADER\r
+        001315' 554100  000001  12880           HLRZ    B,A             ;GET THE BLOCK TYPE CODE ***VJC\r
+        001316' 606340  000200  12890           TRNN    F,NOLOCB        ;DELETE LOCAL SYMBOLS? ***VJC\r
+        001317' 254000  001322' 12900           JRST    .+3             ;NO\r
+        001320' 306100  000002  12910           CAIN    B,2             ;IS IT A SYMBOL BLOCK? ***VJC\r
+        001321' 254000  001410' 12920           JRST    DELLOC          ;GO DELETE LOCAL SYMBOL ***VJC\r
+                                12930                                   ;COME BACK TO WRITE3 ***VJC\r
+                                12940                                   ;UNLESS EXIT ON END-OF-FILE ***VJC\r
+\r
+        001322' 260500  001656' 12960           PUSHJ   P, OUT          ;OUTPUT IT\r
+        001323' 306100  000400  12970           CAIN    B, 400          ;IS THIS A FORTRAN IV SIGNAL WORD?\r
+        001324' 254000  001346' 12980           JRST    F4              ;YES, PROCESS F4 OUTPUT\r
+        001325' 202100  002520' 12990           MOVEM   B, SAVEBT       ;SAVE THE BLOCK TYPE\r
+        001326' 260500  001337' 13000           PUSHJ   P, COUNT        ;NO, GET SIZE OF BLOCK\r
+        001327' 322100  001314' 13010           JUMPE   B, WRITE3       ;WORD COUNT OF ZERO?\r
+        001330' 260500  001647' 13020   WRITE4: JSR     GETIN           ;OUTPUT THE BLOCK\r
+        001331' 260500  001656' 13030           PUSHJ   P, OUT          ;...\r
+        001332' 367100  001330' 13040           SOJG    B, WRITE4       ;LOOP BACK UNTIL DONE\r
+        001333' 200040  002520' 13050           MOVE    A, SAVEBT       ;RETRIEVE THE BLOCK TYPE\r
+        001334' 302040  000005  13060           CAIE    A, 5            ;WAS IT AN END BLOCK?\r
+        001335' 254000  001314' 13070           JRST    WRITE3          ;NO, RETURN FOR MORE BLOCKS\r
+        001336' 263500  000000  13080           POPJ    P,              ;YES, EXIT\r
+\r\fFUDGE2  V.011                 PAGE 37\r
+        ROUTINE TO OUTPUT ONE PROGRAM AT A TIME\r
+\r
+\r
+                                13110   ;THE COUNT SUBROUTINE CALCULATES THE LENGTH OF THE VARIOUS \r
+                                13120   ;BLOCKS READ BY THE WRITE AND READ SUBROUTINES. THE POSITIVE\r
+                                13130   ;WORD COUNT IS FOUND IN THE RIGHT HALF OF THE ENTRY BLOCK \r
+                                13140   ;HEADER, WHICH IS ASSUMED TO BE IN AC A UPON ENTERING. THE\r
+                                13150   ;LENGTH WILL BE RETURNED IN AC B, AND INCLUDES THE DATA WORDS\r
+                                13160   ;(SYMBOLS, ENTRY WORDS, ETC.) AND THE SUBHEADERS, OF WHICH\r
+                                13170   ;THERE IS ONE FOR EVERY 18 (DECIMIAL) DATA WORDS. THE BLOCK\r
+                                13180   ;HEADER IS DESTROYED, AND IS NOT INCLUDED IN THE LENGTH.\r
+\r
+        001337' 550400  000001  13200   COUNT:  HRRZ    G, A            ;GET NUMBER OF WORDS\r
+        001340' 231400  000022  13210           IDIVI   G, 22           ;1SUBHEADER/18 DATA WORDS\r
+        001341' 271401  000000  13220           ADDI    G,(A)           ;ADD INTO WORD COUNT\r
+        001342' 322440  001344' 13230           JUMPE   G+1,.+2         ;1 EXTRA SUBHEADER FOR\r
+        001343' 340400  000000  13240           AOJ     G,              ;STRAY ONES\r
+        001344' 200100  000010  13250           MOVE    B, G            ;RESULTS IN AC B\r
+        001345' 263500  000000  13260           POPJ    P,              ;EXIT\r
+\r\fFUDGE2  V.011                 PAGE 38\r
+        ROUTINE TO HANDLE FORTRAN OUTPUT\r
+\r
+                                13280   SUBTTL ROUTINE TO HANDLE FORTRAN OUTPUT\r
+\r
+                                13300   ;SUBSECTION OF THE WRITE ROUTINE TO HANDLE OUTPUT FROM THE\r
+                                13310   ;FORTRAN IV COMPILER. THE MAIN OBJECT OF THE ROUTINE IS TO\r
+                                13320   ;LOOK FOR THE END BLOCK. OTHER BLOCKS ARE MERELY COPIED OUT.\r
+                                13330   ;THE BLOCK TYPES ARE GIVEN BY THE FOLLOWING TABLE\r
+                                13340   ;----------------------------------------------------------------\r
+                                13350           ;BITS 0-17      BITS18-23       BITS 24-35              TYPE\r
+\r
+                                13370   ;777777         70              N                  DATA STATEMENT\r
+                                13380   ;777777         50              N           ABSOLUTE MACHINE CODE\r
+                                13390   ;777777         0               -           PROGRAMMER LABELS\r
+                                13400   ;777777         31              -           MADE LABELS\r
+                                13410   ;777777         60              -           ENTRY LABELS\r
+                                13420   ;777777                 777776              END BLOCK\r
+                                13430   ;-----------------------------------------------------------------\r
+        001346' 260500  001647' 13440   F4:     JSR     GETIN           ;GET A FORTRAN IV BLOCK HEADER\r
+        001347' 260500  001405' 13450           PUSHJ   P, OUT4         ;OUTPUT IT\r
+        001350' 641040  777777  13460           TLC     A, -1           ;TURN ONES TO ZEROES IN LEFT HALF\r
+        001351' 603040  777777  13470           TLNE    A, -1           ;NO, WAS LEFT HALF ALL ONES?\r
+        001352' 254000  001346' 13480           JRST    F4              ;NO, IT WAS CALCULATED MACHINE CODE\r
+        001353' 306040  777776  13490           CAIN    A, -2           ;YES, IS RIGHT HALF = 777776?\r
+        001354' 254000  001372' 13500           JRST    ENDST           ;YES, PROCESS F4 END BLOCK\r
+        001355' 135100  005173' 13510           LDB     B, [POINT 6,A,23];GET CODE BITS FROM BITS 18-23\r
+        001356' 620040  770000  13520           TRZ     A, 770000       ;THEN WIPE THEM OUT\r
+        001357' 302100  000070  13530           CAIE    B, 70           ;IS IT A DATA STATEMENT?\r
+        001360' 306100  000050  13540           CAIN    B, 50           ;IS IT ABSOLUTE MACHINE CODE?\r
+        001361' 254000  001365' 13550           JRST    MACHCD          ;YES, TREAT IT LIKE DATA STATEMENTS\r
+        001362' 260500  001647' 13560           JSR     GETIN           ;NO, ITS A LABEL OF SOME SORT\r
+        001363' 260500  001405' 13570           PUSHJ   P, OUT4         ;WHICH CONSISTS OF ONE WORD\r
+        001364' 254000  001346' 13580           JRST    F4              ;LOOK FOR NEXT BLOCK HEADER\r
+\r
+        001365' 550100  000001  13600   MACHCD: HRRZ    B, A            ;GET THE WORD COUNT IN AC B\r
+        001366' 260500  001647' 13610           JSR     GETIN           ;INPUT A WORD\r
+        001367' 260500  001405' 13620           PUSHJ   P, OUT4         ;OUTPUT IT\r
+        001370' 367100  001365' 13630           SOJG    B, MACHCD       ;LOOP BACK FOR REST OF THE BLOCK\r
+        001371' 254000  001346' 13640           JRST    F4              ;GO LOOK FOR NEXT BLOCK\r
+\r
+        001372' 201100  000001  13660   ENDST:  MOVEI   B,1             ;TWO WORDS, FIVE TABLES, ONE WORD, ONE TABLE\r
+        001373' 201200  000006  13670           MOVEI   C,6             ;TO GO\r
+        001374' 260500  001647' 13680   F4LUP1: JSR     GETIN           ;GET TABLE MEMBER\r
+        001375' 260500  001405' 13690   F4LUP3: PUSHJ   P,OUT4          ;OUTPUT WORD\r
+        001376' 365100  001374' 13700           SOJGE   B,F4LUP1        ;LOOP WITHIN A TABLE\r
+        001377' 321200  001065' 13710           JUMPL   C,CPOPJ         ;LAST TABLE - RETURN\r
+        001400' 367200  001402' 13720           SOJG    C,F4LUP2        ;FIRST TWO WORDS AND FIVE TABLES\r
+        001401' 322200  001374' 13730           JUMPE   C,F4LUP1        ;COMMON LENGTH WORD\r
+        001402' 260500  001647' 13740   F4LUP2: JSR     GETIN           ;READ HEADER WORD\r
+        001403' 200100  000001  13750           MOVE    B,A             ;COUNT TO COUNTER\r
+        001404' 254000  001375' 13760           JRST    F4LUP3          ;STASH\r
+\r
+        001405' 606340  020000  13780   OUT4:   TRNN    F,F4IB          ;DONT DO OUTPUT?\r
+        001406' 260500  001656' 13790           PUSHJ   P,OUT           ;YES, DO OUTPUT\r
+        001407' 263500  000000  13800           POPJ    P,              ;RETURN\r
+\r\fFUDGE2  V.011                 PAGE 39\r
+        ROUTINE TO DELETE LOCAL SYMBOLS FROM SYMBOL BLOCK\r
+\r
+                                13820   SUBTTL ROUTINE TO DELETE LOCAL SYMBOLS FROM SYMBOL BLOCK\r
+\r
+                                13840   ;ALL LOCAL AND SUPPRESSED LOCAL SYMBOLS ARE DELETED\r
+                                13850   ;EXTERNALS,INTERNAL AND SUPPRESSED INTERNALS ARE NOT DELETED.\r
+\r
+        001410' 552040  005047' 13870   DELLOC: HRRZM   A,BSZ           ;SIZE OF SYMBOL BBLE\r
+        001411' 260500  001461' 13880           PUSHJ   P,DELINI        ;CLEAR NEW HEADER & RELOC WORDS\r
+                                13890                                   ;SET PB = SYMBLK+2\r
+        001412' 260500  001647' 13900   DELGTR: JSR     GETIN           ;GET RELOCATION WORD\r
+        001413' 202040  005052' 13910           MOVEM   A,RELOCS        ;SAVE IT\r
+        001414' 200040  005122' 13920           MOVE    A,PTGR          ;INIT POINTER TO GET\r
+        001415' 202040  005050' 13930           MOVEM   A,PTGRS         ;RELOCATION WORD\r
+\r
+        001416' 260500  001647' 13950   DELGT1: JSR     GETIN           ;GET FIRST WORD OF PAIR\r
+        001417' 134000  005050' 13960           ILDB    0,PTGRS         ;GET RELOCATION BITS & HOLD\r
+        001420' 603040  100000  13970           TLNE    A,(1B2)         ;IS SYMBOL  LOCAL?\r
+        001421' 254000  001435' 13980           JRST    DELDEC          ;YES, DON'T COPY\r
+        001422' 202043  000000  13990           MOVEM   A,0(T)          ;STORE FIRST WORD\r
+        001423' 260500  001647' 14000           JSR     GETIN           ;GET SECOND WORD INTO A\r
+        001424' 202043  000001  14010           MOVEM   A,1(T)          ;STORE SECOND WORD\r
+        001425' 136000  005051' 14020           IDPB    0,PTSRS         ;STORE RELOCATION BITS\r
+        001426' 201040  000002  14030           MOVEI   A,2             ;COUNT WORDS STORED\r
+        001427' 272040  005053' 14040           ADDM    A,SYMBLK        ;I.E. UPDATE WORD COUNT\r
+        001430' 271140  000002  14050           ADDI    T,2             ;UPDATE NEXT LOCATION TO STORE\r
+        001431' 200040  005051' 14060           MOVE    A,PTSRS         ;HAVE WE STORED 9\r
+        001432' 607040  770000  14070           TLNN    A,770000        ;SYMBOL PAIRS?\r
+        001433' 260500  001447' 14080           PUSHJ   P,DELWRT        ;YES, WRITE IT OUT\r
+        001434' 254000  001436' 14090           JRST    DELDEC+1        ;ALREADY HAVE 2ND WORD\r
+\r
+        001435' 260500  001647' 14110   DELDEC: JSR     GETIN           ;GET SECOND WORD INTO A\r
+        001436' 370000  005047' 14120           SOS     BSZ             ;HAVE WE EXHAUSTED\r
+        001437' 377000  005047' 14130           SOSG    BSZ             ;ALL WORDS IN BLOCK?\r
+        001440' 254000  001445' 14140           JRST    DELFIN          ;YES, NONE LEFT\r
+        001441' 200040  005050' 14150           MOVE    A,PTGRS         ;HAVE WE GOT 9\r
+        001442' 603040  770000  14160           TLNE    A,770000        ;SYMBOL PAIRS YET?\r
+        001443' 254000  001416' 14170           JRST    DELGT1          ;NO, GET NEXT PAIR\r
+        001444' 254000  001412' 14180           JRST    DELGTR          ;YES, GET RELOCATION\r
+\r
+        001445' 260500  001447' 14200   DELFIN: PUSHJ   P,DELWRT        ;ORIGINAL BLOCK EMPTY NOW\r
+        001446' 254000  001314' 14210           JRST    WRITE3          ;GET NEXT BLOCK\r
+\r
+\r
+\r\fFUDGE2  V.011                 PAGE 40\r
+        ROUTINE TO WRITE OUT NEW SYMBOL BBLE\r
+\r
+                                14250   SUBTTL ROUTINE TO WRITE OUT NEW SYMBOL BBLE\r
+\r
+        001447' 336040  005053' 14270   DELWRT: SKIPN   A,SYMBLK        ;ANYTHING TO WRITE\r
+        001450' 254000  001461' 14280           JRST    DELINI          ;NO, CAN LEAVE\r
+        001451' 550000  000001  14290           HRRZ    0,A             ;GET WORD COUNT\r
+        001452' 505040  000002  14300           HRLI    A,2             ;PUT IN BLOCK TYPE\r
+        001453' 260500  001656' 14310           PUSHJ   P,OUT           ;WRITE BLOCK HEADER\r
+        001454' 201100  005053' 14320           MOVEI   B,SYMBLK        ;LOC OF FIRST WORD\r
+        001455' 271100  000001  14330   DELWRU: ADDI    B,1             ;LOC OF RELOC WORD\r
+        001456' 200042  000000  14340           MOVE    A,0(B)          ;GET WORD\r
+        001457' 260500  001656' 14350           PUSHJ   P,OUT           ;OUTPUT\r
+        001460' 365000  001455' 14360           SOJGE   0,DELWRU        ;ALL THROUGH?\r
+\r
+                                14380   ;ROUTINE TO INITIALIZE NEW SYMBOL BBLE\r
+        001461' 402000  005053' 14390   DELINI: SETZM   SYMBLK          ;YES, CLEAR COUNT\r
+        001462' 402000  005054' 14400           SETZM   SYMBLK+1        ;CLEAR RELOCATION\r
+        001463' 200040  005121' 14410           MOVE    A,PTSR          ;INIT POINTER\r
+        001464' 202040  005051' 14420           MOVEM   A,PTSRS         ;FOR STORING NEW RELOC\r
+        001465' 201140  005055' 14430           MOVEI   T,SYMBLK+2      ;SET TO STORE FIRST GLOBAL\r
+        001466' 263500  000000  14440           POPJ    P,\r
+\r\fFUDGE2  V.011                 PAGE 41\r
+        ROUTINES TO INDEX THE LIBRARY\r
+\r
+                                14460   SUBTTL ROUTINES TO INDEX THE LIBRARY\r
+\r
+                                14480   COMMENT *       THE INDEXING OF LIBRARY FILES IS DONE IN TWO PASSES.\r
+                                14490           ON PASS 1 THE LIBRARY FILE IS COPIED AND ALL ENTRIES STORED\r
+                                14500           IN CORE ALLONG WITH A POINTER TO THE BEGINING OF THE BLOCK.\r
+                                14510           A DUMMY INDEX BLOCK (TYPE 14) IS OUTPUT AT THE BEGINING OF THE\r
+                                14520           NEW LIBRARY AND ONE IS OUTPUT WHENEVER THE CURRENT INDEX BLOCK\r
+                                14530           FILLS A BUFFER.\r
+                                14540           ON PASS 2 THE DUMMY INDEX BLOCKS ARE REPLACED BY REAL ONES.\r
+                                14550           FUDGE2 USED USETO'S AND DUMP MODE.\r
+                                14560           IF THE OUTPUT DEVICE IS DTA FUDGE2 USES UGETF UUO'S TO FIND\r
+                                14570           THE NEXT BLOCK AND NON-STANDARD DUMP MODE TO WRITE THE INDICES.\r
+                                14580           DESIGN AND CODING BY D.M.NIXON JULY 1970\r
+                                14590   *\r
+\r
+        001467' 200040  001646' 14610   INDEX0: MOVE    A,INDEXH        ;BLOCK HEADER\r
+        001470' 350000  002516' 14620           AOS     BLKCNT          ;START ON BLOCK #1\r
+        001471' 260500  001660' 14630           PUSHJ   P,OUT1          ;OUTPUT IT\r
+        001472' 067040  000000  14640           OUTPUT  1,              ;FORCE OUTPUT\r
+        001473' 200140  004607' 14650           MOVE    T,OBUF+5        ;BUFFER SIZE\r
+        001474' 202140  005104' 14660           MOVEM   T,XCOUNT\r
+        001475' 202140  005106' 14670           MOVEM   T,BUFSIZ        ;SAVE IT AWAY\r
+        001476' 350140  000573* 14680           AOS     T,JOBREL        ;TO GET 1K MORE\r
+        001477' 202140  005105' 14690           MOVEM   T,XPNTR\r
+        001500' 202140  005107' 14700           MOVEM   T,XBEG          ;START OF INDEX BUFFERS\r
+        001501' 000140  000000  14710           CORE    T,\r
+        001502' 254000  002170' 14720           JRST    ERR22           ;NOT ENUF CORE\r
+        001503' 201040  000001  14730           MOVEI   A,1             ;START ON BLOCK #1 (IF DSK)\r
+        001504' 202060  005105' 14740           MOVEM   A,@XPNTR        ;STORE FIRST BLOCK #\r
+        001505' 350000  005105' 14750           AOS     XPNTR\r
+        001506' 200040  001646' 14760           MOVE    A,INDEXH\r
+        001507' 202060  005105' 14770           MOVEM   A,@XPNTR\r
+        001510' 350000  005105' 14780           AOS     XPNTR\r
+        001511' 370000  005104' 14790           SOS     XCOUNT\r
+        001512' 370000  005104' 14800           SOS     XCOUNT          ;RESERVE SPACE FOR NEXT LINK WORD\r
+        001513' 263500  000000  14810           POPJ    P,              ;RETURN\r
+\r\fFUDGE2  V.011                 PAGE 42\r
+        ROUTINES TO INDEX THE LIBRARY\r
+\r
+                                14830   ;HERE ON PASS 1 TO STORE ENTRIES AND POINTERS.\r
+\r
+        001514' 350012  000000  14850   INDEX1: AOS     (P)             ;SET SKIP RETURN\r
+        001515' 550140  003334' 14860           HRRZ    T,ENTBLK        ;GET SIZE OF BLOCK\r
+        001516' 210040  000003  14870           MOVN    A,T\r
+        001517' 271140  000001  14880           ADDI    T,1             ;WORD OF INFO\r
+        001520' 311140  005104' 14890           CAML    T,XCOUNT        ;ENUF ROOM IN BLOCK?\r
+        001521' 254000  001546' 14900           JRST    NOROOM          ;NO\r
+        001522' 200140  003334' 14910           MOVE    T,ENTBLK        ;GET HEADER WORD\r
+        001523' 202160  005105' 14920           MOVEM   T,@XPNTR\r
+        001524' 350000  005105' 14930           AOS     XPNTR\r
+        001525' 370000  005104' 14940           SOS     XCOUNT\r
+        001526' 507000  000001  14950           HRLS    A\r
+        001527' 541040  003335' 14960           HRRI    A,ENTBLK+1\r
+        001530' 336141  000000  14970   INDEXA: SKIPN   T,(A)\r
+        001531' 344040  001530' 14980           AOJA    A,.-1\r
+        001532' 202160  005105' 14990           MOVEM   T,@XPNTR\r
+        001533' 370000  005104' 15000           SOS     XCOUNT\r
+        001534' 350000  005105' 15010           AOS     XPNTR\r
+        001535' 253040  001530' 15020           AOBJN   A,INDEXA\r
+        001536' 200140  005106' 15030   INDEX2: MOVE    T,BUFSIZ\r
+        001537' 274140  004607' 15040           SUB     T,OBUF+5\r
+        001540' 207000  000003  15050           MOVSS   T\r
+        001541' 540140  002516' 15060           HRR     T,BLKCNT\r
+        001542' 202160  005105' 15070           MOVEM   T,@XPNTR\r
+        001543' 370000  005104' 15080           SOS     XCOUNT\r
+        001544' 350000  005105' 15090           AOS     XPNTR\r
+        001545' 263500  000000  15100           POPJ    P,\r
+\r
+                                15120   ;HERE WHEN CURRENT INDEX BLOCK IS FULL.\r
+\r
+        001546' 200040  001646' 15140   NOROOM: MOVE    A,INDEXH        ;HEADER BLOCK OF INDEX FOR LOADER\r
+        001547' 260500  001664' 15150           PUSHJ   P,OUTGO\r
+        001550' 067040  000000  15160           OUTPUT  1,\r
+        001551' 200140  002516' 15170           MOVE    T,BLKCNT        ;GET INDEX BLOCK #\r
+        001552' 562160  005105' 15180           HRROM   T,@XPNTR        ;STORE IT WITH -1 IN LEFT HALF\r
+        001553' 200040  005104' 15190           MOVE    A,XCOUNT\r
+        001554' 272040  005105' 15200           ADDM    A,XPNTR\r
+        001555' 200040  005106' 15210           MOVE    A,BUFSIZ\r
+        001556' 202040  005104' 15220           MOVEM   A,XCOUNT\r
+                                15230                                   ;MARK IT AS AN INDEX INCASE BLOCK FULL\r
+        001557' 562160  005105' 15240           HRROM   T,@XPNTR        ;SAVE BLOCK # FOR PASS 2\r
+        001560' 350000  005105' 15250           AOS     XPNTR\r
+        001561' 606340  400000  15260           TRNN    F,DTAFLG        ;NOT IF DTA\r
+        001562' 350000  002516' 15270           AOS     BLKCNT          ;ONE FOR OUTPUT\r
+        001563' 200040  001646' 15280           MOVE    A,INDEXH\r
+        001564' 202060  005105' 15290           MOVEM   A,@XPNTR\r
+        001565' 350000  005105' 15300           AOS     XPNTR\r
+        001566' 370000  005104' 15310           SOS     XCOUNT\r
+        001567' 370000  005104' 15320           SOS     XCOUNT          ;SPACE FOR LINK WORD TO NEXT INDEX\r
+        001570' 254000  001515' 15330           JRST    INDEX1+1\r
+\r
+\r\fFUDGE2  V.011                 PAGE 43\r
+        ROUTINES TO INDEX THE LIBRARY\r
+\r
+                                15360   ;HERE FOR PASS 2. WRITE OUT THE INDEX BLOCKS\r
+\r
+        001571' 476020  005105' 15380   INDEX3: SETOM   @XPNTR          ;TERMINATE WITH END OF INDEX MARKER\r
+        001572' 067040  000000  15390           OUTPUT  1,              ;SO LAST BLOCK IS WRITTEN\r
+        001573' 602340  400000  15400           TRNE    F,DTAFLG        ;IS IT DTA?\r
+        001574' 254000  001614' 15410           JRST    INDEX5          ;YES, TREAT DIFFERENTLY\r
+        001575' 060040  000016  15420           SETSTS  1,16\r
+        001576' 211040  000200  15430           MOVNI   A,200\r
+        001577' 506040  005107' 15440           HRLM    A,XBEG\r
+        001600' 402000  005110' 15450   INDEX4: SETZM   XBEG+1\r
+        001601' 200060  005107' 15460           MOVE    A,@XBEG\r
+        001602' 075041  000000  15470           USETO   1,(A)\r
+        001603' 067040  005107' 15480           OUTPUT  1,XBEG\r
+        001604' 063040  760000  15490           STATZ   1,760000\r
+        001605' 254000  002132' 15500           JRST    ERR15\r
+        001606' 201040  000200  15510           MOVEI   A,200\r
+        001607' 273040  005107' 15520           ADDB    A,XBEG\r
+        001610' 553000  000001  15530           HRRZS   A\r
+        001611' 317040  005105' 15540           CAMG    A,XPNTR\r
+        001612' 254000  001600' 15550           JRST    INDEX4\r
+        001613' 254000  002257' 15560           JRST    EXIT\r
+\r
+        001614' 070040  000000  15580   INDEX5: CLOSE   1,              ;AND A SEPARATE EOF BLOCK\r
+        001615' 060040  000116  15590           SETSTS  1,116           ;NONE STANDARD MODE\r
+        001616' 211040  000200  15600           MOVNI   A,200           ;IOWD COUNT\r
+        001617' 506040  005107' 15610           HRLM    A,XBEG          ;SET IT UP FOR OUTPUT\r
+        001620' 074060  002516' 15620           USETI   1,@BLKCNT       ;SET ON LAST BLOCK\r
+        001621' 066040  002513' 15630           INPUT   1,DIRIOW        ;READ IT IN\r
+        001622' 135040  005174' 15640           LDB     A,[POINT 10,DIRBLK,27]  ;GET FIRST BLOCK #\r
+        001623' 542060  005107' 15650           HRRM    A,@XBEG         ;STORE IT FOR COMMON LOOP\r
+        001624' 402000  005110' 15660           SETZM   XBEG+1          ;MAKE SURE IT'S ZERO\r
+        001625' 200060  005107' 15670   INDEX6: MOVE    A,@XBEG         ;GET BLOCK NUMBER\r
+        001626' 074041  000000  15680           USETI   1,(A)           ;SET FOR INPUT\r
+        001627' 066040  002513' 15690           INPUT   1,DIRIOW        ;INPUT BLOCK\r
+        001630' 200140  004647' 15700           MOVE    T,DIRBLK        ;TO FIND LINK WORD\r
+        001631' 250160  005107' 15710           EXCH    T,@XBEG         ;PUT IT IN OUTPUT BLOCK\r
+        001632' 370000  005107' 15720           SOS     XBEG            ;BACK UP POINTER\r
+        001633' 075041  000000  15730           USETO   1,(A)           ;NOW FOR OUTPUT\r
+        001634' 067040  005107' 15740           OUTPUT  1,XBEG          ;OUT IT GOES\r
+        001635' 063040  760000  15750           STATZ   1,760000        ;UNLESS IN ERROR\r
+        001636' 254000  002132' 15760           JRST    ERR15           ;DEVICE ERROR\r
+        001637' 201040  000200  15770           MOVEI   A,200           ;GET TO NEXT DUMP BLOCK\r
+        001640' 273040  005107' 15780           ADDB    A,XBEG          ;ADVANCE POINTER\r
+        001641' 553000  000001  15790           HRRZS   A               ;JUST WORD LOCATION\r
+        001642' 317040  005105' 15800           CAMG    A,XPNTR         ;ALL DONE?\r
+        001643' 254000  001625' 15810           JRST    INDEX6          ;NO, LOOP\r
+        001644' 060040  000016  15820           SETSTS  1,16            ;BACK TO STANDARD MODE TO UPDATE DIR.\r
+        001645' 254000  002257' 15830           JRST    EXIT            ;YES, FINISH UP\r
+\r
+        001646' 000014  000177  15850   INDEXH: XWD     14,177          ;USED TO SIGNAL INDEX BLOCK TO LOADER\r
+\r
+\r\fFUDGE2  V.011                 PAGE 44\r
+        INPUT SERVICE ROUTINE\r
+\r
+                                15880   SUBTTL INPUT SERVICE ROUTINE\r
+                                15890   ;THE INPUT ROUTINE GETS CHARACTERS FROM THE DEVICE WHOSE\r
+                                15900   ;CHANNEL NUMBER IS IN ACCUMULATOR D. IT CALCULATES THE POSITION\r
+                                15910   ;OF THE BUFFER HEADER OF THE DEVICE, THEN EITHER LOADS AC A\r
+                                15920   ;FROM THE BYTE POINTER, OR DOES AN INPUT. IF AN END OF FILE\r
+                                15930   ;IS FOUND, THE ROUTINE EXITS WITH A POPJ, SINCE THE READ ROUTINE\r
+                                15940   ;IS CALLED WITH A PUSHJ, FOLLOWED BY AN EOF RETURN. THE NORMAL\r
+                                15950   ;EXIT FROM GETIN IS BY A JRST @GETIN.\r
+\r
+        001647' 377015  004612' 15970   GETIN:  SOSG    IBUF+2(DIS)     ;IS APPROPRIATE BUFFER EMPTY?\r
+        001650' 254000  001653' 15980           JRST    INGET           ;YES, GET ANOTHER BUFFER\r
+        001651' 134055  004611' 15990   GETIN1: ILDB    A, IBUF+1(DIS)  ;LOAD AC A WITH A CHARACTER\r
+        001652' 263500  000000  16000           POPJ    P,\r
+\r
+        001653' 137240  005175' 16020   INGET:  DPB     D,[POINT 4,INGET2,12]\r
+        001654' 137240  005176' 16030           DPB     D,[POINT 4,INGET3,12]\r
+        001655' 254000  002474' 16040           JRST    INGET2          ;INPUT A BUFFER OF DATA\r
+\r
+\r
+                                16070   ;OUTPUT SERVICE ROUTINE\r
+                                16080   ;THE OUT ROUTINE CHECKS THE TTYOB FLAG TO SEE IF THE OUTPUT\r
+                                16090   ;SHOULD BE ON THE TTY. IF SO, IT TRANSFERS CONTROL IMMEDIATELY.\r
+                                16100   ;OTHERWISE, IT ASSUMES OUTPUT IS ON DEVICE #1.\r
+\r
+        001656' 606340  000020  16120   OUT:    TRNN    F, TTYOB        ;SHOULD OUTPUT BE ON TTY?\r
+        001657' 254000  002237' 16130           JRST    TYPO            ;YES\r
+        001660' 377000  004607' 16140   OUT1:   SOSG    OBUF+5          ;IS OUTPUT BUFFER EMPTY?\r
+        001661' 254000  001664' 16150           JRST    OUTGO           ;YES, OUTPUT A BUFFER\r
+        001662' 136040  004606' 16160   OUT2:   IDPB    A, OBUF+4       ;DEPOSIT CHARACTER\r
+        001663' 263500  000000  16170           POPJ    P,              ;EXIT\r
+\r
+        001664' 606340  200000  16190   OUTGO:  TRNN    F,XFLG          ;IF NOT INDEXING\r
+        001665' 254000  001671' 16200           JRST    OUTG            ;DON'T WASTE TIME\r
+        001666' 606340  400000  16210           TRNN    F,DTAFLG        ;IF DTA SKIP\r
+        001667' 354000  002516' 16220           AOSA    BLKCNT          ;INCR. COUNT IF DSK\r
+        001670' 073040  002516' 16230           UGETF   1,BLKCNT        ;GET NEXT BLOCK IF DTA\r
+        001671' 057040  000000  16240   OUTG:   OUT     1,              ;OUTPUT A BUFFER\r
+        001672' 254000  001662' 16250           JRST    OUT2            ;NO ERRORS\r
+        001673' 201240  000001  16260           MOVEI   D, 1            ;YES, SET CHANNEL TO OUTPUT\r
+        001674' 254000  002132' 16270           JRST    ERR15           ;GO TO ERROR ROUTINE\r
+\r
+\r\fFUDGE2  V.011                 PAGE 45\r
+        ROUTINE TO HANDLE ASTERISK FILE NAME *.EXT\r
+\r
+                                16300   SUBTTL ROUTINE TO HANDLE ASTERISK FILE NAME *.EXT\r
+                                16310   ;THE DIRECTORY IS SEARCHED FOR FILE NAMES WITH GIVEN EXTENSION OR\r
+                                16320   ;EXTENSION REL IF NONE SPECIFIED. THESE ARE STORED IN FILBUF\r
+                                16330   ;ENTERED BY JRST FROM SEMICP\r
+                                16340   ;EXIT BY POPJ\r
+                                16350   ;DMN 23 MAY 1969\r
+\r
+\r
+        001675' 200100  002522' 16380   ASTRSK: MOVE    B,COLON2        ;GET DEVICE LAST SEEN\r
+        001676' 202100  002511' 16390           MOVEM   B,DSKINI+1      ;SAVE IT IN CASE DSK\r
+        001677' 000100  000000  16400           DEVCHR  B,              ;GET ITS CHARACTERISTICS\r
+        001700' 603100  000100  16410           TLNE    B,DTABIT        ;IS IT A DTA\r
+        001701' 254000  001760' 16420           JRST    DTAAST          ;YES\r
+        001702' 607100  200000  16430           TLNN    B,DSKBIT        ;IS IT THE DSK?\r
+        001703' 254000  002160' 16440           JRST    ERR18           ;MUST BE ONE OR THE OTHER\r
+                                16450                                   ;FALL INTO DSKAST IF OK\r
+\r
+        001704' 261500  000547* 16470   DSKAST: PUSH    P,JOBFF         ;SAVE OLD JOBFF\r
+        001705' 201100  004645' 16480           MOVEI   B,DSKHDR        ;WHERE BUFFER WILL GO\r
+        001706' 202100  001704* 16490           MOVEM   B,JOBFF         ;SET IT UP\r
+\r
+        001707' 050440  002510' 16510           OPEN    11,DSKINI       ;11 IS SAFE CH.NO.\r
+        001710' 254000  002162' 16520           JRST    ERR19           ;CONNOT INIT DSK\r
+        001711' 064440  000001  16530           INBUF   11,1            ;FORCE SINGLE BUFFERING\r
+        001712' 200100  002522' 16540           MOVE    B,COLON2        ;GET DEVICE\r
+        001713' 000100  000000  16550           DEVPPN  B,              ;GET PROJ-PROG INCASE SYS: ETC.\r
+        001714' 000100  000000  16560           GETPPN  B,              ;FAILED, GET USER PROJ,PROG PAIR\r
+        001715' 202100  004572' 16570           MOVEM   B,EBLOCK        ;SAVE IT FOR LOOKUP OF UFD\r
+        001716' 205100  654644  16580           MOVSI   B,(SIXBIT/UFD/) ;EXTENSION\r
+        001717' 202100  004573' 16590           MOVEM   B,EBLOCK+1\r
+        001720' 200100  005177' 16600           MOVE    B,[XWD 1,1]     ;TO GET UFD ***VJC\r
+        001721' 202100  004575' 16610           MOVEM   B,EBLOCK+3      ;ENTRY BLOCK SET UP\r
+        001722' 076440  004572' 16620           LOOKUP  11,EBLOCK       ;DO LOOKUP\r
+        001723' 254000  002164' 16630           JRST    ERR20           ;CANNOT DO IT\r
+\r
+        001724' 260500  001745' 16650   DSKLUP: PUSHJ   P,DSKINP        ;INPUT A WORD\r
+        001725' 202600  004640' 16660           MOVEM   S,SAVNAM        ;SAVE NAME FOR LATER\r
+        001726' 260500  001745' 16670           PUSHJ   P,DSKINP        ;GET EXT AS WELL\r
+        001727' 512600  004641' 16680           HLLZM   S,SAVEXT        ;SAVE EXT, CLEAR RH ***VJC\r
+        001730' 336000  004640' 16690           SKIPN   SAVNAM          ;IS THERE A NAME\r
+        001731' 254000  001724' 16700           JRST    DSKLUP          ;NO GET NEXT PAIR\r
+        001732' 312700  004641' 16710           CAME    EXT,SAVEXT      ;EXTENSIONS MATCH\r
+        001733' 254000  001724' 16720           JRST    DSKLUP          ;NO GET NEXT PAIR\r
+        001734' 260500  000444' 16730           PUSHJ   P,STNULL        ;CLOSE OUT OLD FILE\r
+        001735' 200600  004640' 16740           MOVE    S,SAVNAM        ;RECALL NAME\r
+        001736' 260500  001137' 16750           PUSHJ   P,PUTFIL        ;STORE IT IN FILBUF\r
+        001737' 200600  004641' 16760           MOVE    S,SAVEXT        ;RECALL EXTENSION\r
+        001740' 260500  001137' 16770           PUSHJ   P,PUTFIL\r
+        001741' 542241  000000  16780           HRRM    D,(A)           ;GET CHANNEL\r
+        001742' 550600  002724' 16790           HRRZ    S,PRGBUF        ;POINTER TO PRGBUF\r
+        001743' 260500  001137' 16800           PUSHJ   P,PUTFIL        ;SAVE IT AS 3RD WORD\r
+        001744' 254000  001724' 16810           JRST    DSKLUP          ;GO LOOP ROUND ALL\r
+\r
+\r\fFUDGE2  V.011                 PAGE 46\r
+        ROUTINE TO HANDLE ASTERISK FILE NAME *.EXT\r
+\r
+                                16840   ;ROUTINE TO GET NEXT WORD FROM UFD\r
+\r
+        001745' 375000  004644' 16860   DSKINP: SOSGE   DIRBUF+2        ;USUAL INPUT ROUTINE\r
+        001746' 254000  001751' 16870           JRST    DSKIN1          ;GET ANOTHER BUFFER\r
+        001747' 134600  004643' 16880           ILDB    S,DIRBUF+1      ;GET A WORD \r
+        001750' 263500  000000  16890           POPJ    P,              ;RETURN\r
+\r
+        001751' 056440  000000  16910   DSKIN1: IN      11,0            ;DO INPUT\r
+        001752' 254000  001745' 16920           JRST    DSKINP          ;NO ERRORS\r
+        001753' 061440  020000  16930           STATO   11,20000        ;END OF FILE?\r
+        001754' 254000  002166' 16940           JRST    ERR21           ;NO, READ ERROR\r
+\r
+        001755' 262500  001706* 16960   FIN:    POP     P,JOBFF         ;POP UP ONE LEVEL\r
+        001756' 262500  001755* 16970           POP     P,JOBFF         ;RESTORE JOBFF\r
+        001757' 263500  000000  16980           POPJ    P,              ;RETURN TO COMMAND SCAN\r
+\r
+\r
+        001760' 135100  005137' 17010   DTAAST: LDB     B,[POINT 4,COLON1,12]   ;GET CHANNEL\r
+        001761' 137100  005200' 17020           DPB     B,[POINT 4,DP+0,12]     ;DEPOSIT IT\r
+        001762' 137100  005201' 17030           DPB     B,[POINT 4,DP+1,12]\r
+        001763' 137100  005202' 17040           DPB     B,[POINT 4,DP+2,12]\r
+        001764' 137100  005203' 17050           DPB     B,[POINT 4,DP+3,12]\r
+        001765' 137100  005204' 17060           DPB     B,[POINT 4,DP+5,12]\r
+        001766' 400100  000000  17070           SETZ    B,              ;INITIAL CONDITION\r
+        001767' 254000  002501' 17080           JRST    DP              ;INPUT DIRECTORY\r
+\r
+        001770' 301100  000026  17100   DTALUP: CAIL    B,26            ;END OF DIRECTORY\r
+        001771' 263500  000000  17110           POPJ    P,              ;YES- FINISHED\r
+        001772' 510602  005020' 17120           HLLZ    S,DIREXT(B)     ;GET EXTENSION\r
+        001773' 332002  004772' 17130           SKIPE   DIRNAM(B)       ;IF NAME ZERO DON'T BOTHER\r
+        001774' 312600  000016  17140           CAME    S,EXT           ;IS EXTENSION SAME\r
+        001775' 344100  001770' 17150           AOJA    B,DTALUP        ;NO GET NEXT ENTRY\r
+        001776' 260500  000444' 17160           PUSHJ   P,STNULL        ;TERMINATE LAST ENTRY\r
+        001777' 200602  004772' 17170           MOVE    S,DIRNAM(B)     ;GET NAME\r
+        002000' 260500  001137' 17180           PUSHJ   P,PUTFIL        ;STORE IT IN FILBUF\r
+        002001' 510602  005020' 17190           HLLZ    S,DIREXT(B)     ;AND EXTENSION\r
+        002002' 260500  001137' 17200           PUSHJ   P,PUTFIL        ;STORE IT\r
+        002003' 542241  000000  17210           HRRM    D,(A)           ;SAVECH.\r
+        002004' 550600  002724' 17220           HRRZ    S,PRGBUF        ;SAVE PRGBUF POINTER\r
+        002005' 260500  001137' 17230           PUSHJ   P,PUTFIL        ;STORE IT\r
+        002006' 344100  001770' 17240           AOJA    B,DTALUP        ;GET NEXT ENTRY\r
+\r
+\r\fFUDGE2  V.011                 PAGE 47\r
+        ERROR ROUTINES\r
+\r
+                                17270   SUBTTL ERROR ROUTINES\r
+\r
+        002007' 201100  002261' 17290   ERROR1: MOVEI   B, EMES1        ;FUDGE COMMAND ERROR\r
+        002010' 254000  002247' 17300           JRST    ERROR           ;TYPE IT AND EXIT\r
+\r
+        002011' 201100  002266' 17320   ERROR2: MOVEI   B, EMES2        ;TOO MANY PROGRAM NAMES\r
+        002012' 254000  002247' 17330           JRST    ERROR           ;TYPE IT AND EXIT\r
+\r
+        002013' 201100  002276' 17350   ERROR3: MOVEI   B, EMES3        ;FUDGE SYSTEM ERROR\r
+        002014' 254000  002247' 17360           JRST    ERROR           ;TYPE A MESSAGE AND EXIT\r
+\r
+        002015' 260500  002201' 17380   ERROR4: PUSHJ   P, DTYPOQ       ;TYPE DEVICE NAME\r
+        002016' 201100  002307' 17390           MOVEI   B, EMES4        ;"CANNOT DO IO AS REQUESTED"\r
+        002017' 326400  002247' 17400           JUMPN   G,ERROR         ;TYPE IT\r
+        002020' 201100  002456' 17410           MOVEI   B,EMES24        ;NO SUCH DEVICE IF G=0\r
+        002021' 254000  002247' 17420           JRST    ERROR           ;TYPE IT AND EXIT\r
+\r
+        002022' 201100  002315' 17440   ERROR5: MOVEI   B, EMES5        ;UNEQUAL NUMBER OF MASTER AND TR.\r
+        002023' 254000  002247' 17450           JRST    ERROR           ;TYPE IT AND EXIT\r
+\r
+        002024' 201100  002330' 17470   ERROR6: MOVEI   B, EMES6        ;NOT ENOUGH ARGUMENTS\r
+        002025' 254000  002247' 17480           JRST    ERROR           ;TYPE IT AND EXIT\r
+\r
+        002026' 260500  002201' 17500   ERROR7: PUSHJ   P, DTYPOQ       ;TYPE OUT THE DEVICE NAME\r
+        002027' 201040  000072  17510           MOVEI   A, 72           ;ASCII COLON\r
+        002030' 260500  002237' 17520           PUSHJ   P, TYPO         ;TYPE IT OUT\r
+        002031' 260500  002216' 17530           PUSHJ   P, FTYPO        ;TYPE  OUT THE FILE NAME\r
+        002032' 201040  000074  17540           MOVEI   A, 74           ;ASCII LEFT ANGLE BRACKET\r
+        002033' 260500  002237' 17550           PUSHJ   P, TYPO         ;TYPE IT  OUT\r
+        002034' 200100  000013  17560           MOVE    B, R            ;GET PROGRAM NAME\r
+        002035' 620340  000020  17570           TRZ     F, TTYOB        ;SET IO BACK TO TTY\r
+        002036' 260500  002220' 17580           PUSHJ   P, PTYPO        ;TYPE  OUT THE PROGRAM NAME\r
+        002037' 201040  000076  17590           MOVEI   A, 76           ;ASCII RIGHT ANGLE BRACKET\r
+        002040' 260500  002237' 17600           PUSHJ   P, TYPO         ;TYPE IT OUT\r
+        002041' 201100  002335' 17610           MOVEI   B, EMES7        ;GET AN ERROR MESSAGE\r
+        002042' 254000  002247' 17620           JRST    ERROR           ;TYPE IT OUT AND EXIT\r
+\r
+        002043' 260500  002201' 17640   ERROR8: PUSHJ   P, DTYPOQ       ;TYPE OUT THE DEVICE NAME\r
+        002044' 201040  000072  17650           MOVEI   A, 72           ;ASCII COLON\r
+        002045' 260500  002237' 17660           PUSHJ   P, TYPO         ;TYPE IT OUT\r
+        002046' 260500  002216' 17670           PUSHJ   P, FTYPO        ;TYPE  OUT FILE NAME\r
+        002047' 201040  000056  17680           MOVEI   A, 56           ;ASCII PERIOD\r
+        002050' 260500  002237' 17690           PUSHJ   P, TYPO         ;TYPE IT OUT\r
+        002051' 550040  002524' 17700           HRRZ    A, FILBUF       ;GET THE POINTER TO CURRENT FILE\r
+        002052' 554601  000001  17710           HLRZ    S, 1(A)         ;GET FILE NAME EXTENSION\r
+        002053' 260500  002206' 17720           PUSHJ   P, DTYPO1       ;TYPE IT OUT\r
+        002054' 200140  005102' 17730           MOVE    T,SDEVCHR       ;GET CHARACTERISTICS\r
+        002055' 603140  200000  17740           TLNE    T,DSKBIT        ;IS IT A DSK?\r
+        002056' 254000  002103' 17750           JRST    ERR8A           ;YES\r
+        002057' 201100  002335' 17760           MOVEI   B, EMES7        ;GET ERROR MESSAGE "NOT FOUND"\r
+        002060' 254000  002247' 17770           JRST    ERROR           ;TYPE IT OUT AND EXIT\r
+\r\fFUDGE2  V.011                 PAGE 48\r
+        ERROR ROUTINES\r
+\r
+        002061' 260500  002201' 17790   ERROR9: PUSHJ   P, DTYPOQ       ;TYPE DEVICE NAME\r
+        002062' 201100  002340' 17800           MOVEI   B, EMES9B       ;GET REMAINDER OF MESSAGE\r
+        002063' 254000  002247' 17810           JRST    ERROR           ;TYPE IT AND EXIT\r
+\r
+        002064' 200200  000001  17830   ERR10:  MOVE    C, A            ;SAVE PROGRAM NAME IN C\r
+        002065' 201100  002343' 17840           MOVEI   B, EMES10       ;"ENTRY BLOCK TOO LARGE, PROGRAM"\r
+        002066' 260500  002174' 17850           PUSHJ   P, ETYPO        ;TYPE BEGINNING OF MESSAGE\r
+        002067' 200100  000004  17860           MOVE    B, C            ;GET PROGRAM NAME IN B\r
+        002070' 260500  002220' 17870           PUSHJ   P, PTYPO        ;TYPE IT OUT\r
+        002071' 254000  002253' 17880           JRST    EXIT1           ;EXIT\r
+\r
+        002072' 201100  002352' 17900   ERR11:  MOVEI   B, EMES11       ;TRANSMISSION ERROR ON INPUT\r
+        002073' 260500  002174' 17910           PUSHJ   P, ETYPO        ;TYPE THE MESSAGE\r
+        002074' 260500  002205' 17920           PUSHJ   P, DTYPO        ;TYPE NAME OF OFFENDIN DEVICE\r
+        002075' 254000  002253' 17930           JRST    EXIT1           ;EXIT\r
+\r
+        002076' 200140  005102' 17950   ERR14:  MOVE    T,SDEVCHR       ;GET DEVICE CHARACTERISTICS\r
+        002077' 603140  200000  17960           TLNE    T,DSKBIT        ;IS IT A DSK\r
+        002100' 254000  002043' 17970           JRST    ERROR8          ;YES\r
+        002101' 201100  002362' 17980           MOVEI   B, EMES14       ;DIRECTORY FULL ON OUTPUT\r
+        002102' 254000  002247' 17990           JRST    ERROR           ;TYPE IT AND EXIT\r
+\r
+        002103' 550140  004573' 18010   ERR8A:  HRRZ    T,EBLOCK+1      ;GET ERROR CODE\r
+        002104' 301140  000021  18020           CAIL    T,TABLND-ETABLE ;LEGAL ERROR?\r
+        002105' 334100  002131' 18030           SKIPA   B,TABLND        ;NO, USE CATCH ALL MESSAGE\r
+        002106' 200103  002110' 18040           MOVE    B,ETABLE(T)     ;PICK UP MESSAGE\r
+        002107' 254000  002247' 18050           JRST    ERROR\r
+\r
+\r\fFUDGE2  V.011                 PAGE 49\r
+        ERROR ROUTINES\r
+\r
+        002110' 000000  005205' 18080   ETABLE: [ASCIZ /(0) file was not found/]\r
+        002111' 000000  005212' 18090           [ASCIZ /(1) no such project-programmer number/]\r
+        002112' 000000  005222' 18100           [ASCIZ /(2) protection failure/]\r
+        002113' 000000  005227' 18110           [ASCIZ /(3) file was being modified/]\r
+        002114' 000000  005235' 18120           [ASCIZ /(4) rename file name already exists/]\r
+        002115' 000000  005245' 18130           [ASCIZ /(5) illegal sequence of UUOs/]\r
+        002116' 000000  005253' 18140           [ASCIZ /(6) bad UFD or bad RIB/]\r
+        002117' 000000  005260' 18150           [ASCIZ /(7) not a SAV file/]\r
+        002120' 000000  005264' 18160           [ASCIZ /(10) not enough core/]\r
+        002121' 000000  005271' 18170           [ASCIZ /(11) device not available/]\r
+        002122' 000000  005277' 18180           [ASCIZ /(12) no such device/]\r
+        002123' 000000  005303' 18190           [ASCIZ /(13) not two reloc reg. capability/]\r
+        002124' 000000  005312' 18200           [ASCIZ /(14) no room or quota exceeded/]\r
+        002125' 000000  005321' 18210           [ASCIZ /(15) write lock error/]\r
+        002126' 000000  005326' 18220           [ASCIZ /(16) not enough monitor table space/]\r
+        002127' 000000  005336' 18230           [ASCIZ /(17) partial allocation only/]\r
+        002130' 000000  005344' 18240           [ASCIZ /(20) block not free on allocation/]\r
+\r
+        002131' 000000  005353' 18260   TABLND: [ASCIZ /(?) lookup,enter,or rename error/]\r
+\r\fFUDGE2  V.011                 PAGE 50\r
+        ERROR ROUTINES\r
+\r
+        002132' 201100  002371' 18280   ERR15:  MOVEI   B, EMES15       ;DEVICE ERROR ON OUTPUT\r
+        002133' 260500  002174' 18290           PUSHJ   P, ETYPO        ;TYPE THE MESSAGE\r
+        002134' 260500  002205' 18300           PUSHJ   P, DTYPO        ;TYPE NAME OF OFFENDING DEVICE\r
+        002135' 254000  002253' 18310           JRST    EXIT1           ;GO AWAY\r
+\r
+        002136' 200100  000001  18330   ERR16:  MOVE    B,A             ;SAVE OFFENDING LETTER\r
+        002137' 260500  002243' 18340           PUSHJ   P,CRLF\r
+        002140' 201040  000077  18350           MOVEI   A,77            ;TYPE OUT "?"\r
+        002141' 260500  001656' 18360           PUSHJ   P, OUT\r
+        002142' 200040  000002  18370           MOVE    A, B            ;GET BACK OFFENDING LETTER\r
+        002143' 260500  001656' 18380           PUSHJ   P, OUT          ;TYPE OFFENDING LETTER\r
+        002144' 201100  002400' 18390           MOVEI   B, EMES16       ;"X" IS AN ILLEGAL SWITCH\r
+        002145' 660340  040000  18400           TRO     F,CRLFTY\r
+        002146' 254000  002247' 18410           JRST    ERROR           ;TYPE IT AND EXIT\r
+\r
+        002147' 200100  000001  18430   ERR17:  MOVE    B, A\r
+        002150' 260500  002243' 18440           PUSHJ   P,CRLF\r
+        002151' 201040  000077  18450           MOVEI   A, 77\r
+        002152' 260500  001656' 18460           PUSHJ   P, OUT\r
+        002153' 200040  000002  18470           MOVE    A, B\r
+        002154' 260500  001656' 18480           PUSHJ   P, OUT          ;TYPE OFFENDING LETTER\r
+        002155' 201100  002405' 18490           MOVEI   B, EMES17       ;"X" IS AN ILLEGAL CHARACTER\r
+        002156' 660340  040000  18500           TRO     F,CRLFTY\r
+        002157' 254000  002247' 18510           JRST    ERROR           ;TYPE IT AND EXIT\r
+\r
+        002160' 201100  002412' 18530   ERR18:  MOVEI   B,EMES18\r
+        002161' 254000  002247' 18540           JRST    ERROR\r
+\r
+        002162' 201100  002423' 18560   ERR19:  MOVEI   B,EMES19\r
+        002163' 254000  002247' 18570           JRST    ERROR\r
+\r
+        002164' 201100  002427' 18590   ERR20:  MOVEI   B,EMES20\r
+        002165' 254000  002247' 18600           JRST    ERROR\r
+\r
+        002166' 201100  002434' 18620   ERR21:  MOVEI   B,EMES21\r
+        002167' 254000  002247' 18630           JRST    ERROR\r
+\r
+        002170' 201100  002441' 18650   ERR22:  MOVEI   B,EMES22\r
+        002171' 254000  002247' 18660           JRST    ERROR\r
+\r
+        002172' 201100  002447' 18680   ERR23:  MOVEI   B,EMES23\r
+        002173' 254000  002247' 18690           JRST    ERROR\r
+\r\fFUDGE2  V.011                 PAGE 51\r
+        VARIOUS ERROR ROUTINES AND SMALL TYPE-OUT ROUTINES\r
+\r
+                                18710   SUBTTL VARIOUS ERROR ROUTINES AND SMALL TYPE-OUT ROUTINES\r
+\r
+        002174' 505100  440700  18730   ETYPO:  HRLI    B, 440700       ;MAKE A BYTE POINTER\r
+        002175' 134040  000002  18740   ETYPO2: ILDB    A, B            ;GET A CHARACTER\r
+        002176' 322040  001065' 18750           JUMPE   A,CPOPJ         ;EXIT IF NULL\r
+        002177' 260500  002237' 18760           PUSHJ   P, TYPO         ;NO, TYPE IT\r
+        002200' 254000  002175' 18770           JRST    ETYPO2          ;RETURN FOR MORE CHARACTERS\r
+\r
+        002201' 666340  040000  18790   DTYPOQ: TRON    F,CRLFTY        ;IS CR,LF TYPED OUT?\r
+        002202' 260500  002243' 18800           PUSHJ   P,CRLF          ;YES\r
+        002203' 201040  000077  18810           MOVEI   A,77            ;TYPE OUT ? FOR BATCH\r
+        002204' 260500  002237' 18820           PUSHJ   P,TYPO\r
+\r
+\r
+        002205' 200605  003324' 18850   DTYPO:  MOVE    S, DEVBUF(D)    ;GET DEVICE NAME FROM BUFFER\r
+        002206' 200200  005117' 18860   DTYPO1: MOVE    C, SYMPTR       ;BYTE POINTER TO SYMBOL NAME\r
+        002207' 201100  000006  18870           MOVEI   B, 6            ;LOOP COUNTER FOR 6 CHARACTERS\r
+        002210' 134040  000004  18880   DTYPO2: ILDB    A, C            ;GET A CHARACTER\r
+        002211' 322040  002214' 18890           JUMPE   A, DTYPO3       ;IGNORE BLANKS\r
+        002212' 271040  000040  18900           ADDI    A, 40           ;CONVERT TO 7-BIT ASCII\r
+        002213' 260500  002237' 18910           PUSHJ   P, TYPO         ;TYPE IT\r
+        002214' 367100  002210' 18920   DTYPO3: SOJG    B, DTYPO2       ;ALL DONE?\r
+        002215' 263500  000000  18930           POPJ    P,              ;EXIT\r
+\r
+        002216' 200620  002524' 18950   FTYPO:  MOVE    S, @FILBUF      ;PICK UP THE FILE NAME\r
+        002217' 254000  002206' 18960           JRST    DTYPO1          ;JUMP INTO DTYPO ROUTINE\r
+\r
+        002220' 201040  000006  18980   PTYPO:  MOVEI   A, 6            ;SIX CHARACTERS TO GET\r
+        002221' 231100  000050  18990   PTYPO2: IDIVI   B, 50           ;CONVERT TO SIXBIT CODE\r
+        002222' 506152  000000  19000           HRLM    B+1, (P)        ;STORE CHARACTER ON PD LIST\r
+        002223' 363040  002225' 19010           SOJLE   A,.+2           ;ALL DONE?\r
+        002224' 260500  002221' 19020           PUSHJ   P, PTYPO2       ;NO, DIVIDE SOME MORE\r
+        002225' 554052  000000  19030           HLRZ    A, (P)          ;POP CHARACTERS OFF STACK\r
+        002226' 322040  001065' 19040           JUMPE   A, CPOPJ        ;IGNORE BLANKS\r
+        002227' 303040  000012  19050           CAILE   A, 12           ;LETTER OR NUMBER?\r
+        002230' 271040  000007  19060           ADDI    A, 7            ;LETTER - ADD 66\r
+        002231' 271040  000057  19070           ADDI    A, 57           ;NUMBER - ADD 57\r
+        002232' 306040  000134  19080           CAIN    A, 134          ;DOLLAR SIGN?\r
+        002233' 275040  000070  19090           SUBI    A, 70           ;YES, SPECIAL CASE\r
+        002234' 306040  000133  19100           CAIN    A, 133          ;PERIOD?\r
+        002235' 275040  000055  19110           SUBI    A, 55           ;YES, SPECIAL CASE\r
+        002236' 254000  001656' 19120           JRST    OUT             ;RECURSIVE EXIT FOR MORE CHARS\r
+\r
+        002237' 136040  004603' 19140   TYPO:   IDPB    A, OBUF+1       ;STORE CHARACTER IN BUFFER\r
+        002240' 306040  000012  19150           CAIN    A, 12           ;LINE FEED?\r
+        002241' 067000  000000  19160           OUTPUT  0,              ;YES, EMPTY BUFFER\r
+        002242' 263500  000000  19170           POPJ    P,              ;EXIT\r
+\r\fFUDGE2  V.011                 PAGE 52\r
+        VARIOUS ERROR ROUTINES AND SMALL TYPE-OUT ROUTINES\r
+\r
+        002243' 201040  000015  19190   CRLF:   MOVEI   A, 15           ;CARRIAGE RETURN\r
+        002244' 260500  001656' 19200           PUSHJ   P, OUT          ;OUTPUT IT\r
+        002245' 201040  000012  19210           MOVEI   A, 12           ;LINE FEED\r
+        002246' 254000  001656' 19220           JRST    OUT             ;OUTPUT IT AND EXIT\r
+\r
+        002247' 620340  000020  19240   ERROR:  TRZ     F,TTYOB         ;JUST IN CASE , SET OUTPUT TO TTY\r
+        002250' 666340  040000  19250           TRON    F,CRLFTY\r
+        002251' 260500  002243' 19260           PUSHJ   P,CRLF\r
+        002252' 260500  002174' 19270           PUSHJ   P, ETYPO        ;TYPE LAST MESSAGE OF ERROR\r
+        002253' 620340  000020  19280   EXIT1:  TRZ     F,TTYOB         ;ENSURE TTY OUTPUT OF CR-LF\r
+        002254' 260500  002243' 19290           PUSHJ   P,CRLF          ;FINISH WITH CR-LF\r
+        002255' 070000  000000  19300           CLOSE   0,              ;FORCE OUTPUT OF LAST LINE\r
+        002256' 254000  000000' 19310           JRST    FUDGE2          ;START AGAIN\r
+\r
+        002257' 070040  000000  19330   EXIT:   CLOSE   1,              ;CLOSE OUT THE OUTPUT CHANNEL\r
+        002260' 254000  000000' 19340           JRST    FUDGE2          ;RESTART\r
+\r
+\r\fFUDGE2  V.011                 PAGE 53\r
+        ERROR MESSAGES\r
+\r
+                                19370   SUBTTL ERROR MESSAGES\r
+        002261' 376152  542216  19380   EMES1:  ASCIZ   "?FUDGE2 SYNTAX ERROR"\r
+        002262' 425444  051662\r
+        002263' 472510  154100\r
+        002264' 426452  247644\r
+        002265' 000000  000000\r
+        002266' 376511  747500  19390   EMES2:  ASCIZ   "?TOO MANY FILE NAMES OR PROGRAM NAMES"\r
+        002267' 466031  654500\r
+        002270' 432231  442500\r
+        002271' 472031  542646\r
+        002272' 202372  220240\r
+        002273' 512370  751202\r
+        002274' 465011  640632\r
+        002275' 426460  000000\r
+        002276' 376412  247616  19400   EMES3:  ASCIZ   "?PROGRAM ERROR WHILE RESETTING MASTER DEVICE"\r
+        002277' 512031  520212\r
+        002300' 512451  751100\r
+        002301' 536211  146212\r
+        002302' 202450  551612\r
+        002303' 522511  147216\r
+        002304' 202330  151650\r
+        002305' 426444  042212\r
+        002306' 532230  342400\r
+        002307' 202070  147234  19410   EMES4:  ASCIZ   " CANNOT DO IO AS REQUESTED"\r
+        002310' 476504  042236\r
+        002311' 202231  720202\r
+        002312' 515012  242642\r
+        002313' 526132  352212\r
+        002314' 420000  000000\r
+        002315' 376531  642642  19420   EMES5:  ASCIZ   "?UNEQUAL NUMBER OF MASTER AND TRANSACTION PROGRAMS"\r
+        002316' 526031  420234\r
+        002317' 526330  242644\r
+        002320' 202370  620232\r
+        002321' 406472  442644\r
+        002322' 202031  642100\r
+        002323' 522450  147246\r
+        002324' 406072  444636\r
+        002325' 471012  051236\r
+        002326' 436450  146646\r
+        002327' 000000  000000\r
+        002330' 376351  752100  19430   EMES6:  ASCIZ   "?NOT ENOUGH ARGUMENTS"\r
+        002331' 426351  752616\r
+        002332' 441010  151216\r
+        002333' 526330  547250\r
+        002334' 514000  000000\r
+        002335' 202351  752100  19440   EMES7:  ASCIZ   " NOT FOUND"\r
+        002336' 432372  547210\r
+        002337' 000000  000000\r
+        002340' 202351  752100  19450   EMES9B: ASCIZ   " NOT AVAILABLE"\r
+        002341' 406550  144630\r
+        002342' 406051  442400\r
+        002343' 376131  652244  19460   EMES10: ASCIZ   "?ENTRY BLOCK TOO LARGE, PROGRAM "\r
+        002344' 545010  246236\r
+\r\fFUDGE2  V.011                 PAGE 53-1\r
+        ERROR MESSAGES\r
+\r
+        002345' 416264  052236\r
+        002346' 475011  440644\r
+        002347' 436125  420240\r
+        002350' 512370  751202\r
+        002351' 465000  000000\r
+        002352' 376512  240634  19470   EMES11: ASCIZ   "?TRANSMISSION ERROR ON INPUT DEVICE "\r
+        002353' 516331  151646\r
+        002354' 446371  620212\r
+        002355' 512451  751100\r
+        002356' 476344  044634\r
+        002357' 502532  420210\r
+        002360' 426551  141612\r
+        002361' 200000  000000\r
+        002362' 376111  151212  19480   EMES14: ASCIZ   "?DIRECTORY FULL ON OUTPUT DEVICE "\r
+        002363' 416511  751262\r
+        002364' 202152  546230\r
+        002365' 202371  620236\r
+        002366' 526512  052650\r
+        002367' 202110  553222\r
+        002370' 416124  000000\r
+        002371' 376110  553222  19490   EMES15: ASCIZ   "?DEVICE ERROR ON OUTPUT DEVICE "\r
+        002372' 416124  042644\r
+        002373' 512372  220236\r
+        002374' 471011  752650\r
+        002375' 502532  420210\r
+        002376' 426551  141612\r
+        002377' 200000  000000\r
+        002400' 202232  320202  19500   EMES16: ASCIZ   " IS AN ILLEGAL SWITCH"\r
+        002401' 471011  146230\r
+        002402' 426170  146100\r
+        002403' 516571  152206\r
+        002404' 440000  000000\r
+        002405' 202232  320202  19510   EMES17: ASCIZ   " IS AN ILLEGAL CHARACTER"\r
+        002406' 471011  146230\r
+        002407' 426170  146100\r
+        002410' 416210  151202\r
+        002411' 416510  551000\r
+        002412' 376110  553222  19520   EMES18: ASCIZ "?DEVICE FOR * COMMAND MUST BE DSK OR DTA"\r
+        002413' 416124  043236\r
+        002414' 511005  220206\r
+        002415' 476331  540634\r
+        002416' 421011  552646\r
+        002417' 521010  242500\r
+        002420' 422471  320236\r
+        002421' 511010  452202\r
+        002422' 000000  000000\r
+        002423' 376070  147234  19530   EMES19: ASCIZ "?CANNOT INIT DSK"\r
+        002424' 476504  044634\r
+        002425' 446504  042246\r
+        002426' 454000  000000\r
+        002427' 376311  747626  19540   EMES20: ASCIZ "?LOOKUP FAILURE ON DSK"\r
+        002430' 526404  043202\r
+        002431' 446312  551212\r
+\r\fFUDGE2  V.011                 PAGE 53-2\r
+        ERROR MESSAGES\r
+\r
+        002432' 202371  620210\r
+        002433' 516260  000000\r
+        002434' 376132  251236  19550   EMES21: ASCIZ "?ERROR WHILE READING UFD"\r
+        002435' 511012  744222\r
+        002436' 462124  051212\r
+        002437' 406111  147216\r
+        002440' 202530  642000\r
+        002441' 376351  752100  19560   EMES22: ASCIZ "?NOT ENOUGH CORE AVAILABLE "\r
+        002442' 426351  752616\r
+        002443' 441010  347644\r
+        002444' 425010  153202\r
+        002445' 446310  141230\r
+        002446' 425000  000000\r
+        002447' 376372  552240  19570   EMES23: ASCIZ   "?OUTPUT DEVICE MUST BE DSK OR DTA"\r
+        002450' 526504  042212\r
+        002451' 532230  342500\r
+        002452' 466532  352100\r
+        002453' 412124  042246\r
+        002454' 455011  751100\r
+        002455' 422510  100000\r
+        002456' 202111  742646  19580   EMES24: ASCIZ   " DOES NOT EXIST"\r
+        002457' 202351  752100\r
+        002460' 426611  151650\r
+        002461' 000000  000000\r
+\r\fFUDGE2  V.011                 PAGE 54\r
+        IMPURE CODE\r
+\r
+                                19600   SUBTTL IMPURE CODE\r
+\r
+\r
+        002462' 050000  002521' 19630   COLON1: OPEN    ,COLON0         ;INITIALIZATION SEQUENCE\r
+        002463' 077003  004572' 19640   SEMIC1: ENTER   , EBLOCK(T)\r
+        002464' 064004  000000  19650   INBUF3: INBUF   ,(C)\r
+\r
+        002465' 072000  000017  19670   BACK0:  MTAPE   , 17            ;BACKSPACE MAG TAPE ONE FILE\r
+        002466' 072000  000000  19680   BACK3:  MTAPE   ,0              ;WAIT FOR BACKSPACE TO FIN.\r
+        002467' 061000  004000  19690   BACK1:  STATO   , IOBOT         ;ARE WE AT BEGINNING OF TAPE\r
+        002470' 072000  000016  19700   BACK2:  MTAPE   , 16            ;NO, SKIP FILE\r
+        002471' 263500  000000  19710           POPJ    P,              ;EXIT\r
+\r
+        002472' 070000  000000  19730   GET3A:  CLOSE   ,\r
+        002473' 076003  004572' 19740   GET4A:  LOOKUP  , EBLOCK(T)\r
+\r
+        002474' 056000  000000  19760   INGET2: IN      0,              ;INPUT A BUFFER OF DATA\r
+        002475' 254000  001651' 19770           JRST    GETIN1          ;NO ERRORS\r
+        002476' 063000  020000  19780   INGET3: STATZ   , IOEOF         ;END OF FILE?\r
+        002477' 254000  001064' 19790           JRST    POPOUT          ;YES, HIGH LEVEL EXIT\r
+        002500' 254000  002072' 19800           JRST    ERR11           ;ERROR\r
+\r
+        002501' 060000  000117  19820   DP:     SETSTS  ,117            ;DUMP MODE NON-STANDARD\r
+        002502' 074000  000144  19830           USETI   ,144            ;DIRECTORY BLOCK\r
+        002503' 066000  002513' 19840           INPUT   ,DIRIOW         ;ONE BLOCK ONLY\r
+        002504' 063000  760000  19850           STATZ   ,760000         ;CHECK ERRORS\r
+        002505' 254000  002501' 19860           JRST    DP              ;TRY AGAIN\r
+        002506' 060000  000014  19870           SETSTS  ,14             ;BACK TO BINARY\r
+        002507' 254000  001770' 19880           JRST    DTALUP\r
+\r
+        002510' 000000  000014  19900   DSKINI: EXP     14\r
+        002511' 446353  000000  19910           SIXBIT  /DSK/           ;MAY GET MODIFIED\r
+        002512' 000000  004642' 19920           EXP     DIRBUF\r
+\r
+        002513' 777600  004646' 19940   DIRIOW: IOWD    200,DIRBLK      ;IOWD FOR DIRECTORY INPUT\r
+        002514' 000000  000000  19950           0                       ;MUST BE IN LOW SEGMENT\r
+\r
+\r\fFUDGE2  V.011                 PAGE 55\r
+        STORAGE AND BUFFERS\r
+\r
+                                19980   SUBTTL STORAGE AND BUFFERS\r
+\r
+        002515'                 20000   LOW:\r
+\r
+        002515'                 20020   FILSAV: BLOCK   1\r
+        002516'                 20030   BLKCNT: BLOCK   1               ;NUMBER OF BUFFERS OUTPUT\r
+        002517'                 20040   SAVEAC: BLOCK   1\r
+        002520'                 20050   SAVEBT: BLOCK   1\r
+        002521'                 20060   COLON0: BLOCK   1               ;MODE\r
+        002522'                 20070   COLON2: BLOCK   1               ;DEVICE NAME\r
+        002523'                 20080   COLON3: BLOCK   1               ;BUFFER HEADER\r
+        002524'                 20090   FILBUF: BLOCK   N\r
+        002724'                 20100   PRGBUF: BLOCK   N\r
+        003124'                 20110   PPNBUF: BLOCK   N\r
+        003324'                 20120   DEVBUF: BLOCK   10\r
+        003334'                 20130   ENTBLK: BLOCK   X+1\r
+        004042'                 20140   SVEBLK: BLOCK   X+1\r
+        004550'                 20150   PDLIST: BLOCK   XP\r
+        004570'                 20160           BLOCK   2               ;FOR EXTENDED LOOKUP AND ENTERS\r
+        004572'                 20170   EBLOCK: BLOCK   4\r
+        004576'                 20180           BLOCK   <RIBALC-6+1>    ;MORE EXTENDED STUFF\r
+        004602'                 20190   OBUF:   BLOCK   6               ;TTY:, OUTPUT DEV:\r
+        004610'                 20200   IBUF:   BLOCK   30              ;INPUT DEVICES (10)\r
+\r
+        004640'                 20220   SAVNAM: BLOCK   1       ;SAVED FILE NAME FROM UFD\r
+        004641'                 20230   SAVEXT: BLOCK   1       ;SAVED EXT NAME FROM UFD\r
+        004642'                 20240   DIRBUF: BLOCK 3         ;DIRECTORY BUFFER HEADER\r
+        004645'                 20250   DSKHDR: BLOCK N+2       ;TWO WORDS OF OVERHEAD [P,P]+EXT\r
+                        004647' 20260   DIRBLK=DSKHDR+2\r
+                        004772' 20270   DIRNAM=DIRBLK+123       ;FILENAMES IN DTA DIRECTORY START HERE\r
+                        005020' 20280   DIREXT=DIRNAM+26        ;EXTENSIONS IN DTA DIRECTORY START HERE\r
+\r
+        005047'                 20300   BSZ:    BLOCK   1               ;SIZE OF OLD SYMBOL BLOCK\r
+        005050'                 20310   PTGRS:  BLOCK   1               ;PTGR SAVED\r
+        005051'                 20320   PTSRS:  BLOCK   1               ;PTSR SAVED\r
+        005052'                 20330   RELOCS: BLOCK   1               ;ORIGINAL RELOC\r
+        005053'                 20340   SYMBLK: BLOCK   ^D20            ;NEW SYMBOL BLOCK\r
+\r
+        005077'                 20360   MATCH:  BLOCK   1               ;COUNT OF <'S - >'S ***VJC\r
+\r
+        005100'                 20380   CURCHR: BLOCK   1               ;SAVED CURRENT CHAR OF CS\r
+        005101'                 20390   LSTCHR: BLOCK   1               ;SAVED LAST CHAR OF CS\r
+        005102'                 20400   SDEVCH: BLOCK   1       ;SAVED DEVICE CHARACTERS\r
+        005103'                 20410   NUMDEV: BLOCK   1       ;NUMBER OF DEVICES\r
+        005104'                 20420   XCOUNT: BLOCK   1\r
+        005105'                 20430   XPNTR:  BLOCK   1\r
+        005106'                 20440   BUFSIZ: BLOCK   1\r
+        005107'                 20450   XBEG:   BLOCK   2\r
+        005111'                 20460   LEVEL:  BLOCK   1       ;-2 IF LEVEL D\r
+        005112'                 20470   DEFPPN: BLOCK   1       ;DEFAULT PROJ-PROG\r
+        005113'                 20480   PRJPRG: BLOCK   1       ;TEMP. PROJ-PROG\r
+        005114'                 20490   SVENTR: BLOCK   2       ;PLACE TO SAVE EBLOCK,+1\r
+        005116'                 20500   NOWARN: BLOCK   1       ;SIGNAL TO PRINT MESSAGE ABOUT INDEX\r
+\r\fFUDGE2  V.011                 PAGE 55-1\r
+        STORAGE AND BUFFERS\r
+\r
+        005117'                 20510           VAR             ;JUST IN CASE\r
+\r
+        005117'                 20530   LOWTOP:\r
+\r\fFUDGE2  V.011                 PAGE 56\r
+        CONSTANTS,POINTERS AND LITERALS\r
+\r
+                                20550   SUBTTL CONSTANTS,POINTERS AND LITERALS\r
+\r
+        005117' 440600  000014  20570   SYMPTR: POINT   6, S\r
+        005120' 440600  000016  20580   EXTPTR: POINT   6, EXT\r
+        005121' 440400  005054' 20590   PTSR:   POINT   4,SYMBLK+1      ;TO STORE RELOCATION\r
+        005122' 440400  005052' 20600   PTGR:   POINT   4,RELOCS        ;TO GET RELOCATION\r
+        005123' 000040  000000  20610   DTCLR:  UTPCLR  1,\r
+        005124' 002526' 002525' 20620   FILXWD: XWD     FILBUF+2, FILBUF+1\r
+        005125' 777760  004547' 20630   XPDLST: XWD     -XP,PDLIST-1\r
+\r
+                        000000' 20650           END     FUDGE2\r
+        005126' 002515' 002516'\r
+        005127' 000017  000011\r
+        005130' 376235  466312\r
+        005131' 637035  420340\r
+        005132' 713375  262706\r
+        005133' 721336  071336\r
+        005134' 637454  166732\r
+        005135' 627444  067352\r
+        005136' 667054  571000\r
+        005137' 270400  002462'\r
+        005140' 270400  000017\r
+        005141' 120000  000000\r
+        005142' 270400  002463'\r
+        005143' 004572' 005114'\r
+        005144' 270400  002464'\r
+        005145' 003334' 004042'\r
+        005146' 270400  002465'\r
+        005147' 270400  002467'\r
+        005150' 270400  002470'\r
+        005151' 270400  002466'\r
+        005152' 270400  002472'\r
+        005153' 270400  002473'\r
+        005154' 550140  004573'\r
+        005155' 306140  000017\r
+        005156' 254000  001133'\r
+        005157' 254000  002076'\r
+        005160' 777756  000001\r
+        005161' 536032  247222\r
+        005162' 472164  047236\r
+        005163' 202231  642212\r
+        005164' 541011  747100\r
+        005165' 476532  450252\r
+        005166' 521010  644630\r
+        005167' 425005  520206\r
+        005170' 476352  444634\r
+        005171' 526231  643432\r
+        005172' 050000  000000\r
+        005173' 140600  000001\r
+        005174' 101200  004647'\r
+        005175' 270400  002474'\r
+        005176' 270400  002476'\r
+        005177' 000001  000001\r
+\r\fFUDGE2  V.011                 PAGE 56-1\r
+        CONSTANTS,POINTERS AND LITERALS\r
+\r
+        005200' 270400  002501'\r
+        005201' 270400  002502'\r
+        005202' 270400  002503'\r
+        005203' 270400  002504'\r
+        005204' 270400  002506'\r
+        005205' 241405  120314\r
+        005206' 647314  520356\r
+        005207' 607464  067336\r
+        005210' 721014  667752\r
+        005211' 673100  000000\r
+        005212' 241425  120334\r
+        005213' 675016  372706\r
+        005214' 641016  071336\r
+        005215' 653134  372132\r
+        005216' 703455  763744\r
+        005217' 607335  562744\r
+        005220' 203356  566704\r
+        005221' 627440  000000\r
+        005222' 241445  120340\r
+        005223' 713376  462706\r
+        005224' 723235  767100\r
+        005225' 633035  166352\r
+        005226' 713120  000000\r
+        005227' 241465  120314\r
+        005230' 647314  520356\r
+        005231' 607464  061312\r
+        005232' 647354  720332\r
+        005233' 677115  163322\r
+        005234' 627100  000000\r
+        005235' 241505  120344\r
+        005236' 627354  166712\r
+        005237' 203155  166312\r
+        005240' 203354  166712\r
+        005241' 203035  471312\r
+        005242' 607117  120312\r
+        005243' 743236  372346\r
+        005244' 000000  000000\r
+        005245' 241525  120322\r
+        005246' 663314  563702\r
+        005247' 661016  362742\r
+        005250' 727135  661712\r
+        005251' 203374  620252\r
+        005252' 526376  300000\r
+        005253' 241545  120304\r
+        005254' 607104  052614\r
+        005255' 421015  771100\r
+        005256' 613034  420244\r
+        005257' 446040  000000\r
+        005260' 241565  120334\r
+        005261' 677504  060500\r
+        005262' 516032  620314\r
+        005263' 647314  500000\r
+        005264' 241426  024500\r
+\r\fFUDGE2  V.011                 PAGE 56-2\r
+        CONSTANTS,POINTERS AND LITERALS\r
+\r
+        005265' 673376  420312\r
+        005266' 673376  563720\r
+        005267' 203075  771312\r
+        005270' 000000  000000\r
+        005271' 241426  124500\r
+        005272' 623136  664706\r
+        005273' 625015  667750\r
+        005274' 203036  660722\r
+        005275' 663034  266312\r
+        005276' 000000  000000\r
+        005277' 241426  224500\r
+        005300' 673364  071752\r
+        005301' 617204  062312\r
+        005302' 733234  362400\r
+        005303' 241426  324500\r
+        005304' 673376  420350\r
+        005305' 737364  071312\r
+        005306' 663374  320344\r
+        005307' 627165  620306\r
+        005310' 607414  161322\r
+        005311' 663236  474400\r
+        005312' 241426  424500\r
+        005313' 673364  071336\r
+        005314' 677324  067744\r
+        005315' 203436  567750\r
+        005316' 605014  574306\r
+        005317' 627134  462710\r
+        005320' 000000  000000\r
+        005321' 241426  524500\r
+        005322' 737455  172312\r
+        005323' 203315  761726\r
+        005324' 203136  271336\r
+        005325' 710000  000000\r
+        005326' 241426  624500\r
+        005327' 673376  420312\r
+        005330' 673376  563720\r
+        005331' 203335  767322\r
+        005332' 723376  220350\r
+        005333' 607055  462500\r
+        005334' 717414  161712\r
+        005335' 000000  000000\r
+        005336' 241426  724500\r
+        005337' 703036  272322\r
+        005340' 607304  060730\r
+        005341' 663374  360750\r
+        005342' 647375  620336\r
+        005343' 673317  100000\r
+        005344' 241446  024500\r
+        005345' 613315  761726\r
+        005346' 203355  772100\r
+        005347' 633454  562500\r
+        005350' 677344  060730\r
+        005351' 663374  360750\r
+\r\fFUDGE2  V.011                 PAGE 56-3\r
+        CONSTANTS,POINTERS AND LITERALS\r
+\r
+        005352' 647375  600000\r
+        005353' 241765  120330\r
+        005354' 677375  372740\r
+        005355' 263135  672312\r
+        005356' 711315  771100\r
+        005357' 713135  660732\r
+        005360' 625014  571344\r
+        005361' 677440  000000\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 005362\r
+\r
+9K CORE USED\r
+\r\fFUDGE2  V.011                 PAGE 57\r
+        SYMBOL TABLE\r
+\r
+                000543  \r
+A               000001  \r
+ALTMOD          000521' \r
+APPEND          000711' \r
+APROC3          000716' \r
+ASTRSK          001675' \r
+B               000002  \r
+BACK0           002465' \r
+BACK1           002467' \r
+BACK2           002470' \r
+BACK3           002466' \r
+BACKSP          001024' \r
+BITE            000110' \r
+BLKCNT          002516' \r
+BSWTCH          000250' \r
+BSZ             005047' \r
+BUFSIZ          005106' \r
+C               000004  \r
+COLON           000317' \r
+COLON0          002521' \r
+COLON1          002462' \r
+COLON2          002522' \r
+COLON3          002523' \r
+COLON4          000375' \r
+COLON6          000340' \r
+COLON7          000344' \r
+COLON8          000357' \r
+COLONB          000406' \r
+COLONC          000373' \r
+COMMA           000310' \r
+COMMA1          000503' \r
+COMMA3          000477' \r
+COMMA4          000516' \r
+COMMAP          000470' \r
+COMMAX          000314' \r
+CONB            010000  SPD\r
+COPY            000737' \r
+COPYTO          000743' \r
+CORE            000000  \r
+COUNT           001337' \r
+CPOPJ           001065' \r
+CPOPJ1          001063' \r
+CRLF            002243' \r
+CRLFTY          040000  SPD\r
+CURCHR          005100' \r
+D               000005  \r
+DEFENT          000463' \r
+DEFPPN          005112' \r
+DELCPY          000730' \r
+DELDEC          001435' \r
+DELETE          000701' \r
+DELFIN          001445' \r
+DELGT1          001416' \r
+\r\fFUDGE2  V.011                 PAGE 57-1\r
+        SYMBOL TABLE\r
+\r
+DELGTR          001412' \r
+DELINI          001461' \r
+DELLOC          001410' \r
+DELWRT          001447' \r
+DELWRU          001455' \r
+DESTB           000001  SPD\r
+DEVB            000400  SPD\r
+DEVBUF          003324' \r
+DEVCHR          000000  \r
+DEVPPN          000000  \r
+DIRBLK          004647' \r
+DIRBUF          004642' \r
+DIREXT          005020' \r
+DIRIOW          002513' \r
+DIRNAM          004772' \r
+DIS             000015  \r
+DOENTR          001121' \r
+DOXSWT          001134' \r
+DP              002501' \r
+DPROC1          000703' \r
+DRCTRB          000004  SPD\r
+DSKAST          001704' \r
+DSKBIT          200000  SPD\r
+DSKHDR          004645' \r
+DSKIN1          001751' \r
+DSKINI          002510' \r
+DSKINP          001745' \r
+DSKLUP          001724' \r
+DSPTCH          000065' \r
+DTAAST          001760' \r
+DTABIT          000100  SPD\r
+DTAFLG          400000  SPD\r
+DTALUP          001770' \r
+DTCLR           005123' \r
+DTYPO           002205' \r
+DTYPO1          002206' \r
+DTYPO2          002210' \r
+DTYPO3          002214' \r
+DTYPOQ          002201' \r
+E               000006  \r
+EBLOCK          004572' \r
+EMES1           002261' \r
+EMES10          002343' \r
+EMES11          002352' \r
+EMES14          002362' \r
+EMES15          002371' \r
+EMES16          002400' \r
+EMES17          002405' \r
+EMES18          002412' \r
+EMES19          002423' \r
+EMES2           002266' \r
+EMES20          002427' \r
+EMES21          002434' \r
+\r\fFUDGE2  V.011                 PAGE 57-2\r
+        SYMBOL TABLE\r
+\r
+EMES22          002441' \r
+EMES23          002447' \r
+EMES24          002456' \r
+EMES3           002276' \r
+EMES4           002307' \r
+EMES5           002315' \r
+EMES6           002330' \r
+EMES7           002335' \r
+EMES9B          002340' \r
+ENDST           001372' \r
+ENTBLK          003334' \r
+EPROC1          000670' \r
+EPROC2          000672' \r
+ERR10           002064' \r
+ERR11           002072' \r
+ERR14           002076' \r
+ERR15           002132' \r
+ERR16           002136' \r
+ERR17           002147' \r
+ERR18           002160' \r
+ERR19           002162' \r
+ERR20           002164' \r
+ERR21           002166' \r
+ERR22           002170' \r
+ERR23           002172' \r
+ERR8A           002103' \r
+ERRB            002000  SPD\r
+ERRISQ          000214' \r
+ERROR           002247' \r
+ERROR1          002007' \r
+ERROR2          002011' \r
+ERROR3          002013' \r
+ERROR4          002015' \r
+ERROR5          002022' \r
+ERROR6          002024' \r
+ERROR7          002026' \r
+ERROR8          002043' \r
+ERROR9          002061' \r
+ETABLE          002110' \r
+ETYPO           002174' \r
+ETYPO2          002175' \r
+EXIT            002257' \r
+EXIT1           002253' \r
+EXT             000016  \r
+EXTB            001000  SPD\r
+EXTPTR          005120' \r
+EXTRCT          000660' \r
+F               000007  \r
+F4              001346' \r
+F4I             001270' \r
+F4IB            020000  SPD\r
+F4LUP1          001374' \r
+F4LUP2          001402' \r
+\r\fFUDGE2  V.011                 PAGE 57-3\r
+        SYMBOL TABLE\r
+\r
+F4LUP3          001375' \r
+FILBUF          002524' \r
+FILSAV          002515' \r
+FILXWD          005124' \r
+FIN             001755' \r
+FIND1           000752' \r
+FIND2           000757' \r
+FIND3           000765' \r
+FINDCP          000751' \r
+FIXUP           000647' \r
+FTYPO           002216' \r
+FUDGE2          000000' \r
+G               000010  \r
+GET0            001046' \r
+GET1            001060' \r
+GET3            001066' \r
+GET3A           002472' \r
+GET4            001107' \r
+GET4A           002473' \r
+GETCHR          000040' \r
+GETCMN          000045' \r
+GETDEV          001031' \r
+GETIN           001647' \r
+GETIN1          001651' \r
+GETPPN          000000  \r
+H               000011  \r
+IBUF            004610' \r
+INBIT           000002  SPD\r
+INBUF0          000546' \r
+INBUF1          000566' \r
+INBUF2          000556' \r
+INBUF3          002464' \r
+INBUF4          000571' \r
+INBUFG          000573' \r
+INDEX           000722' \r
+INDEX0          001467' \r
+INDEX1          001514' \r
+INDEX2          001536' \r
+INDEX3          001571' \r
+INDEX4          001600' \r
+INDEX5          001614' \r
+INDEX6          001625' \r
+INDEXA          001530' \r
+INDEXH          001646' \r
+INFOB           004000  SPD\r
+INGET           001653' \r
+INGET2          002474' \r
+INGET3          002476' \r
+INSER1          000654' \r
+INSERT          000632' \r
+IOBKTL          040000  SPD\r
+IOBOT           004000  SPD\r
+IODATA          100000  SPD\r
+\r\fFUDGE2  V.011                 PAGE 57-4\r
+        SYMBOL TABLE\r
+\r
+IODEV           200000  SPD\r
+IOEOF           020000  SPD\r
+IPROC7          000656' \r
+JOBFF           001756' EXT\r
+JOBREL          001476' EXT\r
+JOBSA           000000  EXT\r
+JOBSYM          000000  EXT\r
+JOBVER          000137  SPD\r
+JSR     260500  000000  \r
+KSWTCH          000251' \r
+LBRACA          000277' \r
+LBRACK          000265' \r
+LEVEL           005111' \r
+LFTARW          000156' \r
+LIST            000600' \r
+LIST1           000610' \r
+LIST2           000613' \r
+LOW             002515' \r
+LOWTOP          005117' \r
+LPTBIT          040000  SPD\r
+LSQB            000162' \r
+LSQB1           000164' \r
+LSTCHR          005101' \r
+MACHCD          001365' \r
+MATCH           005077' \r
+MSTGET          000772' \r
+N               000200  SPD\r
+NODEV           000150' \r
+NOLOCB          000200  SPD\r
+NOROOM          001546' \r
+NOWARN          005116' \r
+NUMDEV          005103' \r
+NXTWRD          001223' \r
+OBUF            004602' \r
+OUT             001656' \r
+OUT1            001660' \r
+OUT2            001662' \r
+OUT4            001405' \r
+OUTBIT          000001  SPD\r
+OUTG            001671' \r
+OUTGO           001664' \r
+P               000012  \r
+PDLIST          004550' \r
+PERIOD          000257' \r
+POPBAK          100000  SPD\r
+POPOUT          001064' \r
+PPNBUF          003124' \r
+PRGBUF          002724' \r
+PRJPRG          005113' \r
+PROGB           000100  SPD\r
+PTGR            005122' \r
+PTGRS           005050' \r
+PTSR            005121' \r
+\r\fFUDGE2  V.011                 PAGE 57-5\r
+        SYMBOL TABLE\r
+\r
+PTSRS           005051' \r
+PTYPO           002220' \r
+PTYPO2          002221' \r
+PUTFIL          001137' \r
+PUTPPN          001151' \r
+PUTPRG          001144' \r
+R               000013  \r
+RBRACK          000303' \r
+READ            001156' \r
+READ1           001206' \r
+READ2           001210' \r
+READ22          001230' \r
+READ23          001216' \r
+READ3           001245' \r
+READ5           001243' \r
+READ55          001233' \r
+READ6           001157' \r
+READ6A          001173' \r
+READ6B          001202' \r
+READ7           001266' \r
+READ8           001255' \r
+READ9           001261' \r
+READX           001276' \r
+RELOCS          005052' \r
+REPLCE          000621' \r
+RESET           001002' \r
+RESET           000000  \r
+RESET1          001017' \r
+RESET2          001005' \r
+RESET3          001012' \r
+RIBALC          000011  SPD\r
+RSQB            000202' \r
+S               000014  \r
+SAVEAC          002517' \r
+SAVEB           000002  SPD\r
+SAVEBT          002520' \r
+SAVEXT          004641' \r
+SAVNAM          004640' \r
+SDEVCH          005102' \r
+SEMIC1          002463' \r
+SEMIC2          000447' \r
+SEMIC3          000462' \r
+SEMIC4          000427' \r
+SEMICA          000416' \r
+SEMICP          000407' \r
+SIZE            000500  SPD\r
+SIZZ            000452  SPD\r
+SLASH           000144' \r
+SLIST           000216' \r
+SLSHB           000010  SPD\r
+SQBCMA          000177' \r
+STNULL          000444' \r
+STORE           000127' \r
+\r\fFUDGE2  V.011                 PAGE 57-6\r
+        SYMBOL TABLE\r
+\r
+SVEBLK          004042' \r
+SVENTR          005114' \r
+SW              000017  \r
+SWTB            000004  SPD\r
+SWTCH           000145' \r
+SWTCHA          000135' \r
+SWTCHE          000146' \r
+SYMBLK          005053' \r
+SYMPTR          005117' \r
+T               000003  \r
+TABLE           000077' \r
+TABLND          002131' \r
+TRNGET          000777' \r
+TSWTCH          000252' \r
+TTYBIT          000010  SPD\r
+TTYCB           000040  SPD\r
+TTYIN           000210' \r
+TTYOB           000020  SPD\r
+TYPO            002237' \r
+UTPCLR          000000  \r
+VCUSTO          000000  SPD\r
+VFUDGE          000011  SPD\r
+VPATCH          000000  SPD\r
+WRITE           001305' \r
+WRITE2          001310' \r
+WRITE3          001314' \r
+WRITE4          001330' \r
+WSWTCH          000253' \r
+X               000505  SPD\r
+XBEG            005107' \r
+XCOUNT          005104' \r
+XFLG            200000  SPD\r
+XP              000020  SPD\r
+XPDLST          005125' \r
+XPNTR           005105' \r
+ZSWTCH          000254' \r
+\fTTTTTTTTTTTTTTT      EEEEEEEEEEEEEEE      NNN         NNN      DDDDDDDDDDDD         MMM         MMM      PPPPPPPPPPPP   \r
+TTTTTTTTTTTTTTT      EEEEEEEEEEEEEEE      NNN         NNN      DDDDDDDDDDDD         MMM         MMM      PPPPPPPPPPPP   \r
+TTTTTTTTTTTTTTT      EEEEEEEEEEEEEEE      NNN         NNN      DDDDDDDDDDDD         MMM         MMM      PPPPPPPPPPPP   \r
+      TTT            EEE                  NNN         NNN      DDD         DDD      MMMMMM   MMMMMM      PPP         PPP\r
+      TTT            EEE                  NNN         NNN      DDD         DDD      MMMMMM   MMMMMM      PPP         PPP\r
+      TTT            EEE                  NNN         NNN      DDD         DDD      MMMMMM   MMMMMM      PPP         PPP\r
+      TTT            EEE                  NNNNNN      NNN      DDD         DDD      MMM   MMM   MMM      PPP         PPP\r
+      TTT            EEE                  NNNNNN      NNN      DDD         DDD      MMM   MMM   MMM      PPP         PPP\r
+      TTT            EEE                  NNNNNN      NNN      DDD         DDD      MMM   MMM   MMM      PPP         PPP\r
+      TTT            EEEEEEEEEEEE         NNN   NNN   NNN      DDD         DDD      MMM         MMM      PPPPPPPPPPPP   \r
+      TTT            EEEEEEEEEEEE         NNN   NNN   NNN      DDD         DDD      MMM         MMM      PPPPPPPPPPPP   \r
+      TTT            EEEEEEEEEEEE         NNN   NNN   NNN      DDD         DDD      MMM         MMM      PPPPPPPPPPPP   \r
+      TTT            EEE                  NNN      NNNNNN      DDD         DDD      MMM         MMM      PPP            \r
+      TTT            EEE                  NNN      NNNNNN      DDD         DDD      MMM         MMM      PPP            \r
+      TTT            EEE                  NNN      NNNNNN      DDD         DDD      MMM         MMM      PPP            \r
+      TTT            EEE                  NNN         NNN      DDD         DDD      MMM         MMM      PPP            \r
+      TTT            EEE                  NNN         NNN      DDD         DDD      MMM         MMM      PPP            \r
+      TTT            EEE                  NNN         NNN      DDD         DDD      MMM         MMM      PPP            \r
+      TTT            EEEEEEEEEEEEEEE      NNN         NNN      DDDDDDDDDDDD         MMM         MMM      PPP            \r
+      TTT            EEEEEEEEEEEEEEE      NNN         NNN      DDDDDDDDDDDD         MMM         MMM      PPP            \r
+      TTT            EEEEEEEEEEEEEEE      NNN         NNN      DDDDDDDDDDDD         MMM         MMM      PPP            \r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  11:23:08\r
+File: DSKB0 :TENDMP.LST   [8,200] Created: 20-April-1967 11:20:00 Printed: 24-April-1978 11:22:33
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:1523 \r
+File will be deleted after printing\r
+\f\rTENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032                 PAGE 1\r
+        TD10 VERSION\r
+\r
+                                00010   TITLE TENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032\r
+                                00020           IFNDEF REL,<REL=0>      ;0 PAPER TAPE, 1 RELOCATABLE BINARY\r
+                                00030           IFNDEF MAGT,<MAGT=0>    ;0 DTAPE, 1 MTAPE\r
+                                00040           IFN MAGT,<\r
+                                00050   ; MAGTAPE UTILITY ROUTINE - COURTSEY DATALINE SYSTEMS J HANCOCK\r
+                                00060           >\r
+                                00070           IFNDEF MODE,<MODE=0>    ;0 IS TD10, 1 IS 551/136\r
+                                00080           IFNDEF CORE,<CORE=4>    ;NUMBER OF 8K MEMORY BLOCKS\r
+\r
+                                00100           IFE MODE,<SUBTTL TD10 VERSION>\r
+                                00110           IFN MODE,<SUBTTL 551/136 VERSION>\r
+\r
+                                00130   IFE REL,<\r
+                                00140   IFE MAGT,<RIM10B>\r
+                                00150   IFN MAGT,<RIM10>>\r
+                        000210  00160           UTC=210\r
+                        000214  00170           UTS=214\r
+                        000200  00180           DC=200\r
+                        000320  00190           DTC=320\r
+                        000324  00200           DTS=324\r
+\r
+                        000000  00220   F=0     ;MUST BE 0. USED BY JRA'S\r
+                        000002  00230   A=2     ;MISC TEMP. HOLDS 136 CONO INDEX IN UWAIT\r
+                        000001  00240   B=1     ;TEMP. HOLDS BLOCK # COMPUTATION IN SEARCH\r
+                        000003  00250   C=3     ;HOLDS BITS FOR DECTAPE CONO DURING I/O\r
+                        000004  00260   D=4     ;HOLDS POINTERS FOR AOBJN'S THROUGH CORE\r
+                        000005  00270   E=5     ;HOLDS COUNT OF WORDS IN CURRENT DT BLOCK\r
+                        000006  00280   P=6     ;PC FOR JSP'S\r
+                        000007  00290   CKS=7   ;HAD BEEN CHECKSUM IN MACDMP\r
+                        000010  00300   FILN=10 ;NUMBER OF FILE IN DIRECTORY, 1 TO 26 OCTAL\r
+                        000011  00310   BLKNO=11        ;BLOCK NUMBER SEARCHED FOR ON TAPE\r
+                        000012  00320   WRITE=12        ;MULTI-STATE FLAG FOR DEFINING I/O OPERATION\r
+                                00330                   ;1=D 0=K -1=ELSE\r
+                        000013  00340   PNTR=13 ;POINTER TO BYTE TABLE IN DIRECTORY\r
+                        000014  00350   CH=14   ;HOLDS 6BIT CHARACTER OF COMMAND, OR -1\r
+                        000015  00360   Q=15    ;ANOTHER JSP AC\r
+                        000016  00370   G=16    ;RARELY USED VERY TEMP\r
+                        000017  00380   CT=17   ;COUNT OF WORDS TO DUMP\r
+\r
+                        077777  00400   COMPTR=BEGR+377 ;COMMAND POINTER, IF SUPPLIED\r
+                        077175  00410           LOZAD=BEGR-203  ;WHEN CORE IS CLEARED, IT\r
+                                00420                           ;IS FROM 40 THRU LOZAD\r
+                        000020  00430           LOW=20  ;FIRST LOCATION CONSIDERED FOR DUMPING\r
+                        077175  00440           HIGH=BEGR-203   ;LAST LOCATION CONSIDERED FOR DUMPING\r
+                                00450                           ;ZEROED AT BEG THESE DAYS\r
+                        077176  00460           FOOF=BEGR-202   ;NEEDED FOR ZERO CORE SEARCH, ZEROED AT BEG1\r
+                        077177  00470   TAB=BEGR-201            ;FILE DIRECTORY\r
+                        077377  00480   LINK=BEGR-1             ;0-17=LINK, 18-27=FBN, 29-35=WC\r
+        077400                  00490   IFE REL,<IFE MAGT,<LOC 17400+<<CORE-1>*20000>>\r
+                                00500            IFN MAGT,<LOC 17377+<<CORE-1>*20000>\r
+                                00510           IOWD    LAST-BEGR+1,BEGR>>\r
+\r\fTENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032                 PAGE 2\r
+        TD10 VERSION\r
+\r
+                                00530   ;INITIAL ENTRY IS AT BEGR, UNLESS A COMMAND POINTER IS\r
+                                00540   ;SUPPLIED IN COMPTR. IN THAT CASE, ENTRY IS AT BEGR+1\r
+\r
+        077400  402000  077777  00560   BEGR:   SETZM COMPTR    ;CLEAR ANY JUNK IN COMMAND POINTER\r
+        077401  700200  635550  00570           CONO 635550     ;I/O RESET, ETC.\r
+        077402  265300  077467  00580   BEG:    JSP P,CRR       ;TYPE A CR-LF\r
+        077403  201200  077750  00590           MOVEI D,SPNT-2  ;PREPARE TO REMOVE AOBJN POINTERS\r
+        077404  403100  077176  00600   BEG1:   SETZB A,FOOF    ;CLEAR A TO PUT IN CORE, CLEAR\r
+                                00610                           ;FOOF FOR  THE NEXT ZERO CORE SEARCH\r
+        077405  250104  000002  00620           EXCH A,2(D)     ;REMOVE HEADER LIST\r
+        077406  253100  077406  00630           AOBJN A,.       ;COUNT THROUGH TO NEXT HEADER\r
+        077407  201202  777777  00640           MOVEI D,-1(A)   ;ACCOUNT FOR OVERSHOOT IN AOBJN\r
+        077410  326200  077404  00650           JUMPN D,BEG1    ;IF WE DIDNT AOBJN A 0, GO FOR NEXT HDR\r
+        077411  200540  077753  00660           MOVE PNTR,[XWD 500,TAB-1]       ;5 BIT BYTES IN DIRECTORY\r
+        077412  403600  000000  00670           SETZB CH,F\r
+        077413  475500  000215  00680   CRCH:   SETOI WRITE,215 ;USED FOR CARRET TYPEOUT\r
+        077414  403140  077175  00690   TYI:    SETZB C,HIGH    ;HOPEFULLY HIGH IS TEMPORARY\r
+        077415  403040  000005  00700           SETZB B,E       ;NAME INITIALIZING\r
+        077416  665040  400000  00710           TLOA B,400000   ;NULL NAME IS "@. "\r
+        077417  201240  000002  00720   SPACE:  MOVEI E,C-1     ;EXTENSION INTO C\r
+        077420  505240  020600  00730           HRLI E,20600    ;FAKE OUT END TEST OF BYTE PTR\r
+                                00740   ;STOP TAPE DRIVE\r
+                                00750   IFN MODE,<CONO UTC,0>\r
+        077421  732200  400000  00760   IFE MODE,<CONO DTC,400000>\r
+        077422  134120  077400  00770   NEXT:   ILDB A,@BEGR    ;GIVES A 0 UNLESS COMMAND POINTER SUPPLIED\r
+                                00780                           ;RH OF NEXT IS USED AS A CONSTANT\r
+        077423  475400  000207  00790   BELL:   SETOI FILN,207  ;INITIALIZATION FOR SEARCH\r
+        077424  403440  000017  00800           SETZB BLKNO,CT  ; "\r
+        077425  402000  077377  00810           SETZM LINK\r
+        077426  326100  077433  00820           JUMPN A,RCH     ;JUMP IF COMMAND READ FROM CORE\r
+        077427  712340  000040  00830           CONSO TTY,40    ;TYPEIN FLAG?\r
+        077430  254000  077427  00840           JRST .-1        ;NO,WAIT\r
+        077431  712040  000002  00850           DATAI TTY,A     ;GET TYPED IN CHARACTER\r
+        077432  265300  077471  00860           JSP P,TYO       ;ECHO IT (WITH PARITY)\r
+        077433  405100  000177  00870   RCH:    ANDI A,177      ;STRIP OFF PARITY\r
+        077434  306100  000177  00880           CAIN A,177      ;RUBOUT?\r
+        077435  254000  077400  00890           JRST BEGR       ;YES. RESTART TENDMP\r
+        077436  302100  000033  00900           CAIE A,33       ;NEW ALTMODE?\r
+        077437  301100  000175  00910           CAIL A,175      ;OR 175 OR 176 ALTMODES?\r
+        077440  254000  077501  00920           JRST ALTTST     ;YES, SOME ALTMODE.\r
+        077441  301100  000140  00930           CAIL A,140      ;LOWER CASE CHARACTER?\r
+        077442  620100  000040  00940           TRZ A,40        ;YES. CHANGE TO UPPER CASE\r
+        077443  275100  000040  00950           SUBI A,40       ;CONVERT TO SIXBIT\r
+        077444  321100  077504  00960           JUMPL A,CARRET  ;ANY CONTROL CHARACTER\r
+        077445  322100  077417  00970           JUMPE A,SPACE   ;CHAR WAS 40\r
+        077446  603240  770000  00980   NEXT1:  TLNE E,770000   ;NO MORE THAN SIX CHARS\r
+        077447  136100  000005  00990           IDPB A,E        ;GOES INTO AC1 = B\r
+        077450  254000  077422  01000           JRST NEXT       ;GET ANOTHER CHARACTER\r
+\r
+\r\fTENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032                 PAGE 3\r
+        TD10 VERSION\r
+\r
+\r
+                                01040   ;HERE ON JUMP BLOCK DURING LOADS, OR NUMBER>7 ALT\r
+        077451                  01050   JBLK:\r
+                                01060   ;STOP TAPE DRIVE\r
+                                01070   IFN MODE,<CONO UTC,0>\r
+        077451  732200  400000  01080   IFE MODE,<CONO DTC,400000>\r
+        077452  542200  077454  01090           HRRM D,SADR     ;SAVE STARTING ADDRESS\r
+        077453  326600  077402  01100           JUMPN CH,BEG    ;IF NOT LOADGO COMMAND\r
+        077454  254000  077402  01110   SADR:   JRST BEG        ;CURRENT S.A.\r
+        077455                  01120   LOADS:                  ;HERE TO LOAD TAPE TO CORE\r
+        077455  201200  077176  01130           MOVEI D,LOZAD+1 ;FIRST LOC NOT TO ZERO\r
+        077456  402000  000040  01140           SETZM 40        ;A "FEATURE"\r
+        077457  200140  077754  01150           MOVE C,[XWD 40,41]      ;PREPARE TO CLEAR CORE.\r
+        077460  606600  000003  01160           TRNN CH,3       ;SKIP ON M,N   NOT ON L,T,@\r
+        077461  251144  777777  01170           BLT C,-1(D)     ;ZERO CORE\r
+        077462  265640  077557  01180   LOAD:   JSP Q,LODUMP    ;START READING FILE. LODUMP PROCESSES\r
+                                01190                           ;ONE HEADER AND ITS DATA\r
+        077463  254000  077462  01200           JRST LOAD       ;IF OK, GET NEXT BLOCK.(IF NONE, \r
+                                01210                           ;LODUMP RETURNS TO JBLK.)\r
+        077464  336240  000012  01220   DELE:   SKIPN E,WRITE   ;SKIP IF NOT IN THE K PHASE OF A D COMMAND.\r
+                                01230                           ;OR A K COMMAND\r
+                                01240                           ;ALSO, SET E =0, SO SEARCH HAPPENS IN RBLK\r
+        077465  344500  077713  01250   CLS1:   AOJA WRITE,CLSTP        ; 0 TO 1. GO DUMP OUT DIRECTORY.\r
+        077466  334300  077422  01260   ERR:    SKIPA P,NEXT    ;SET TO RETURN TO BEGR\r
+        077467  334100  077413  01270   CRR:    SKIPA A,CRCH    ;LIKE HRROI A,215 AND SKIPA\r
+        077470  334100  077423  01280           SKIPA A,BELL    ;GET A BELL CHARACTER\r
+        077471  336000  077777  01290   TYO:    SKIPN COMPTR    ;DONT TYO IF NO TYI, UNLESS ERR\r
+        077472  712140  000002  01300           DATAO TTY,A     ;TYPE OUT\r
+        077473  712300  000020  01310           CONSZ TTY,20    ;WAIT FOR TTY TO FINISH\r
+        077474  254000  077473  01320           JRST .-1        ;NOT YET\r
+        077475  302100  000215  01330           CAIE A,215      ;IF CR TYPED IN,\r
+        077476  325106  000000  01340           JUMPGE A,(P)    ;OR SIGN BIT OF CHAR ON,(SEE CRR)\r
+        077477  201100  000012  01350           MOVEI A,12      ;APPEND A LINEFEED\r
+        077500  254000  077471  01360           JRST TYO        ;GO TYPE LF\r
+\r
+\r\fTENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032                 PAGE 4\r
+        TD10 VERSION\r
+\r
+        077501  607040  004040  01390   ALTTST: TLNN B,4040     ;IF ALPHA CHARACTERS, DONT GET CH\r
+        077502  135600  000005  01400           LDB CH,E        ;LAST CH BEFORE ALT, -40\r
+        077503  326600  077667  01410           JUMPN CH,ALTMD  ;IF CH NOT NULL, GOT PROCESS ALTMODE\r
+        077504  205400  777752  01420   CARRET: MOVSI FILN,-26  ;FILE NAME SPECIFIED. FIRST THING TO\r
+                                01430                           ;DO IS LOOK IT UP IN DIRECTORY\r
+        077505  336010  077322  01440   LUP:    SKIPN TAB+123(FILN)     ;SEARCH FOR FREE FILE\r
+        077506  332450  077350  01450           SKIPE BLKNO,TAB+151(FILN)       ;CHECK BOTH WORDS\r
+        077507  634440  000011  01460           TDZA BLKNO,BLKNO        ;ENSURE CLEAR BLOCK NUMBER\r
+        077510  542400  077517  01470           HRRM FILN,FREE  ;SAVE NUMBER OF A FREE FILE\r
+        077511  510710  077350  01480           HLLZ G,TAB+151(FILN)    ;ONLY CHECK LEFT OF 2ND WD\r
+        077512  316050  077322  01490           CAMN B,TAB+123(FILN)    ;SEARCH FOR TYPED-IN FILE\r
+        077513  312140  000016  01500           CAME C,G                ;BOTH WORDS\r
+        077514  253400  077505  01510           AOBJN FILN,LUP  ;NOT THIS ONE. KEEP LOOKING\r
+        077515  321400  077522  01520           JUMPL FILN,BEG69        ;IF FILE FOUND, JUMP\r
+        077516  323500  077466  01530           JUMPLE WRITE,ERR        ;IF NOT FOUND, BETTER BE DUMP\r
+        077517  201400  077517  01540   FREE:   MOVEI FILN,.    ;DUMP & NOT FOUND, MAKE ENTRY WHERE FREE\r
+                                01550                           ;(ADDRESS MODIFIED ABOVE)\r
+        077520  332010  077322  01560           SKIPE TAB+123(FILN)     ;MAKE SURE HOLE AVAILABLE\r
+        077521  254000  077466  01570           JRST ERR        ;NO FREE SLOTS\r
+\r
+        077522  201410  000001  01590   BEG69:  MOVEI FILN,1(FILN)      ;FILN IS FILE #+1; CLR LH\r
+        077523  321500  077455  01600           JUMPL WRITE,LOADS       ;ALL LOAD INSTRUCTIONS\r
+                                01610   IFE MAGT,<\r
+        077524  336000  000012  01620           SKIPN WRITE     ;DELETE? (K COMMAND)\r
+        077525  403040  000003  01630           SETZB B,C       ;YES, KILL FILE\r
+        077526  202050  077321  01640           MOVEM B,TAB+122(FILN)   ;CLEAR IF DELE, ENTER IF NEW DUMP\r
+        077527  512150  077347  01650           HLLZM C,TAB+150(FILN)   ;BOTH WORDS\r
+                                01660                                   ;FALL INTO DUMP ROUTINE\r
+                                01670                                   ;WHICH IS A NO-OP FOR K\r
+\r
+\r\fTENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032                 PAGE 5\r
+        TD10 VERSION\r
+\r
+\r
+                                01710   ;DUMP WRITES OUT CORE ONTO TAPE\r
+\r
+                                01730   ;DUMP THRU DUMP2-1 SETS UP POINTERS TO NON-ZERO CORE AREAS. THESE\r
+                                01740   ;AOBJN POINTERS ARE CALLED  "HEADERS", AND PRECEDE THE DATA WHEN\r
+                                01750   ;THE TAPE IS WRITTEN.\r
+                                01760   ;THE FIRST HEADER IS KEPT IN SPNT. SUCCESIVE HEADERS GO INTO THE FIRST\r
+                                01770   ;ZERO WORD FOLLOWING THE BLOCK CORRESPONDING TO THE PREVIOUS HEADER.\r
+                                01780   ;AFTER THE LAST NON-ZERO BLOCK IS (BY DEFINITION) A ZERO, WHICH\r
+                                01790   ;TERMINATES THE HEADER LIST. THIS WORD MAY BE LOCATION FOOF (37176) IF\r
+                                01800   ;CORE WAS FILLED UP TO THE BASE OF TENDMP.\r
+\r
+        077530                  01820   DUMP:                   ;HERE ON D,K. (BLKN)=0, FILN SET UP\r
+        077530  210100  077755  01830           MOVN A,[XWD HIGH-LOW-1,-LOW+1]  ;COUNTER TO EXAMINE \r
+                                01840                                           ;CORE FOR BLOCKS OF 0\r
+        077531  201340  077751  01850           MOVEI CKS,SPNT-1        ;FIRST HEADER GOES INTO SPNT\r
+        077532  336002  000001  01860   DMP1:   SKIPN 1(A)      ;FIND SOME NON-ZERO CORE\r
+        077533  253100  077532  01870           AOBJN A,.-1     ;ZERO. KEEP LOOKING.\r
+        077534  202100  000004  01880           MOVEM A,D       ;SAVE ADR\r
+        077535  336002  000001  01890           SKIPN 1(A)      ;FIND SOME ZERO CORE\r
+        077536  332002  000002  01900           SKIPE 2(A)      ;DON'T MAKE NEW BLOCK FOR 1 ZERO\r
+        077537  253100  077535  01910           AOBJN A,.-2     ;NON-ZERO. KEEP LOOKING\r
+        077540  274200  000002  01920           SUB D,A         ;GET -COUNT IN BOTH HALVES OF D\r
+        077541  275744  777777  01930           SUBI CT,-1(D)   ;COUNT N WORDS DATA, 1 HDR\r
+        077542  271202  000000  01940           ADDI D,(A)      ;GET F.A.-1 IN RH OF D\r
+        077543  202207  000001  01950           MOVEM D,1(CKS)  ;SAVE HEADER\r
+        077544  325200  077546  01960           JUMPGE D,.+2    ;ON DATA GROUPS,\r
+        077545  200340  000002  01970           MOVE CKS,A      ;GET THE HEADER\r
+                                01980                           ;F.A.+W.C. IS ADR OF NEXT HEADER\r
+                                01990                           ;I.E., FIRST 0 AFTER NON-ZERO BLOCK\r
+        077546  321100  077532  02000           JUMPL A,DMP1    ;LOOP IF MORE CORE\r
+        077547  242340  000002  02010           LSH CKS,2       ;SHIFT CORE SIZ FOR DIR\r
+        077550  333000  000012  02020           SKIPLE WRITE    ;IF DUMPING, SET JOBREL\r
+        077551  542350  077347  02030           HRRM CKS,TAB+150(FILN)  ;PUT IN DIR\r
+        077552  201200  077751  02040   DMP2:   MOVEI D,SPNT-1  ;SET UP TO FOLLOW THE HEADERS.\r
+        077553  201757  000001  02050           MOVEI CT,1(CT)  ;CLR LH, COUNT JBLK\r
+        077554  200204  000001  02060   DMP3:   MOVE D,1(D)     ;GET HEADER\r
+        077555  325200  077566  02070           JUMPGE D,THRU   ;IF NULL HEADER FOUND\r
+        077556  201640  077554  02080           MOVEI Q,DMP3    ;Q:= DMP3 AS A RETURN AFTER AOBJN\r
+                                02090           >\r
+\r
+                                02110   IFN MAGT,<\r
+                                02120           JRST    ERR             ;HOW DID WE GET HERE?  DLS***\r
+                                02130   ;DUMP WRITES OUT CORE ONTO MAGNETIC TAPE\r
+                                02140   ;DUMP WRITES OUT A CORE IMAGE ON MAGNETIC TAPE WITHOUT\r
+                                02150   ;ZERO COMPRESSION. THE RECORDS ARE 200(OCTAL) WORDS IN LENGTH\r
+                                02160   ;AND BEGIN WITH WORD ZERO. BEFORE STARTING THE TAPE IS REWOUND.\r
+                                02170   ;IT ASSUMES MTA0, AT LEAST FOR NOW.\r
+                                02180    \r
+                                02190           MTC=    340\r
+                                02200           MTS=    344\r
+                                02210   DUMP:   CONO    MTC,1000        ;REWIND\r
+                                02220           CONSO   MTS,300000      ;WAIT FOR BOT OR REWINDING\r
+\r\fTENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032                 PAGE 5-1\r
+        TD10 VERSION\r
+\r
+                                02230           JRST    .-1\r
+                                02240           CONSO   MTS,40          ;TRANSPORT READY?\r
+                                02250           JRST    .-1\r
+                                02260           SETZ    A,\r
+                                02270   DUMP1:  HRLI    A,-200          ;WORDS PER BLOCK\r
+                                02280           CONO    MTC,64100       ;START WRITE OPERATION\r
+                                02290   DUMP2:  CONSO   MTS,1           ;TD10 READY FOR DATA?\r
+                                02300           JRST    .-1\r
+                                02310           DATAO   MTC,(A)         ;SEND OUT DATA\r
+                                02320           AOBJN   A,DUMP2         ;POINT TO NEXT WORD AND LOOP\r
+                                02330           CONO    MTS,1           ;STOP THE DRIVE\r
+                                02340           CONSO   MTS,100         ;WAIT TILL STOPPED\r
+                                02350           JRST    .-1\r
+                                02360           CONSZ   MTS,464610      ;ANY ERRORS?\r
+                                02370           JRST    ERR             ;YES, GO RING BELL\r
+                                02380           AOSE    [-CORE*20000/200+2]     ;ALL CORE DUMPED?\r
+                                02390           JRST    DUMP1           ;NO\r
+                                02400           CONO    MTC,65100       ;WRITE END OF FILE\r
+                                02410           CONSO   MTS,100         ;DONE?\r
+                                02420           JRST    .-1\r
+                                02430           CONO    MTC,65100\r
+                                02440           CONSO   MTS,100\r
+                                02450           JRST    .-1\r
+                                02460           JRST    BEGR            ;ALL DONE\r
+                                02470           >\r
+\r
+\r
+        077557  265300  077572  02500   LODUMP: JSP P,UWAIT\r
+        077560  255000  000004  02510           JFCL D          ;IN/OUTPUT HEADER\r
+        077561  325200  077451  02520           JUMPGE D,JBLK   ;IF JRST BLOCK READ. CANT HAPPEN ON WRITE\r
+        077562  265300  077572  02530   DMP5:   JSP P,UWAIT\r
+        077563  255004  000001  02540           JFCL 1(D)       ;IN/OUTPUT DATA WORD\r
+        077564  253200  077562  02550           AOBJN D,DMP5    ;COUNT DOWN THE HEADER\r
+        077565  254015  000000  02560           JRST (Q)        ;END OF HEADER. TO DMP3 OR LOAD+1\r
+                                02570   ;WRITE:  1=D  0=K  -1=ELSE\r
+\r
+        077566  265300  077572  02590   THRU:   JSP P,UWAIT     ;WRITE OUT JRST BLOCK\r
+        077567  255000  077454  02600           JFCL SADR       ;FROM LOC SADR\r
+        077570  341240  077627  02610   IFE MODE,<      AOJL E,UWAIT1   ;FILL OUT BLOCK, TO GET CKSM OUT>\r
+        077571  624500  777777  02620           TRZA WRITE,-1   ;THEN SET WRITE TO 0, AND GO CLOBBER\r
+                                02630                           ;ANY FURTHER BLOCKS WITH THIS FILN\r
+        077572  341240  077627  02640   UWAIT:  AOJL E,UWAIT1   ;RETURN ADDR = (P)      DATA ADDR = @(P)\r
+                                02650                           ;E IS -WD COUNT IN BLOCK OR POSITIVE\r
+                                02660                           ;BYTE POINTER FIRST TIME THRU\r
+        077573  554440  077377  02670           HLRZ BLKNO,LINK         ;SET TO FOLLOW LINK\r
+        077574  325500  077576  02680   MNLUP0: JUMPGE WRITE,MNLUP      ;WRITING OR DELETING\r
+        077575  326440  077620  02690           JUMPN BLKNO,RBLK\r
+        077576  354000  000011  02700   MNLUP:  AOSA BLKNO      ;NEXT BLOCK IN THE DIRECTORY\r
+        077577  137040  000013  02710   MNLUP1: DPB B,PNTR      ;FOR DELETE, 0 FILE NAME AND NUMBER\r
+        077600  134100  000013  02720           ILDB A,PNTR     ;SEARCH FILE DIR\r
+        077601  306100  000037  02730           CAIN A,37\r
+        077602  254000  077464  02740           JRST DELE       ;END OF TAB MARKER, DELE GOES TO\r
+                                02750                           ;CLSTP ON A "D" TO DUMP DIRECTORY\r
+\r\fTENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032                 PAGE 5-2\r
+        TD10 VERSION\r
+\r
+        077603  661112  777777  02760           TLO A,-1(WRITE) ;0 ON D, -1 ON K OR K PHASE OF D\r
+        077604  302402  000000  02770           CAIE FILN,(A)   ;IS THIS BLOCK ASSIGNED TO CURRENT FILE?\r
+        077605  326100  077576  02780           JUMPN A,MNLUP   ;OR MAYBE FREE? JUMP IF IN USE BY\r
+                                02790                           ;ANOTHER FILE.\r
+        077606  137400  000013  02800           DPB FILN,PNTR   ;SMASH AWAY WRITE BLOCK ON D OR K. BUT\r
+                                02810                           ;SEE MNLUP1 ON K.\r
+        077607  322500  077577  02820           JUMPE WRITE,MNLUP1      ;K COMMAND\r
+        077610  336140  077377  02830           SKIPN C,LINK            ;HAS LINK BEEN SET UP?\r
+        077611  137440  077756  02840           DPB BLKNO,[XWD 101200,LINK]     ;NO. PUT BLOCK IN AS FIRST BLK NO\r
+        077612  506440  077377  02850           HRLM BLKNO,LINK ;PUT BLOCK IN AS LINK\r
+        077613  322140  077574  02860           JUMPE C,MNLUP0          ;JUMP IF THIS IS THE FIRST PASS THRU DIRECTORY\r
+        077614  554440  000003  02870           HLRZ BLKNO,C            ;GET LINKED BLOCK CHOSEN BEFORE\r
+        077615  201140  000177  02880           MOVEI C,177             ;PUT IN A WORD COUNT FOR PIP\r
+        077616  436140  077377  02890           IORM C,LINK             ;AND PUT ALL THAT INTO LINK WORD\r
+        077617  275740  000177  02900           SUBI CT,177             ;DECREMENT WORDS LEFT TO GO\r
+\r
+\r\fTENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032                 PAGE 6\r
+        TD10 VERSION\r
+\r
+\r
+                                02940   ;RBLK SEARCHES FOR THE BLOCK IN BLKNO, ENTERS IT GOING FORWARD,\r
+                                02950   ;AND THEN READS INTO CORE, DUMPS CORE, OR COMPARES CORE AS\r
+                                02960   ;DETERMINED BY CONTENTS OF WRITE.\r
+\r
+        077620  560140  077744  02980   RBLK:   HRRO C,TAPENO   ;CURRENT TAPE NO.\r
+                                02990                           ;SET LH TO  PREPARE FOR JUMPN IN DELE\r
+                                03000   IFE MODE,<\r
+        077621  660040  777777  03010           TRO B,-1        ;ENSURE GOING FORWARD WHEN FIRST SEARCH\r
+        077622  732340  300000  03020           CONSO DTC,300000        ;IS A DIRECTION ASSERTED?\r
+        077623  660140  210000  03030           TRO C,210000    ;NO. GO FORWARD\r
+        077624  606040  400001  03040   RB1:    TRNN B,400001   ;DECIDE WHETHER TO TURN AROUND\r
+        077625  660140  300000  03050           TRO C,300000    ;TURN AROUND\r
+        077626  732203  020200  03060   RBG:    CONO DTC,20200(C)       ;ISSUE THE COMMAND TO TD10.\r
+                                03070                                   ;200=SEARCH, 300=READ, 700=WRITE.\r
+        077627  732700  672700  03080   UWAIT1: CONSZ DTS,672700        ;ANY ERRORS?\r
+        077630  254000  077466  03090           JRST ERR        ;YES. GO DING AND THEN TYI\r
+        077631  732740  000001  03100           CONSO DTS,1     ;DATA READY?\r
+        077632  254000  077627  03110           JRST .-3        ;NO. GO WAIT SOME MORE\r
+        077633  321252  077660  03120           JUMPL E,INOUT(WRITE)    ;IF IN MIDST OF A DT BLOCK, DISPATCH\r
+        077634  732040  000001  03130           DATAI DTC,B     ;NO. SEARCHING. GET BLOCK NO.\r
+        077635  620140  310000  03140           TRZ C,310000    ;CLOBBER DIRECTION BITS IN CONO\r
+        077636  275051  000000  03150           SUBI B,(BLKNO)  ;COMPARE WITH DESIRED BLOCK\r
+        077637  732300  100000  03160           CONSZ DTC,100000        ;COMPLEMENT DECISION IF GOING REVERSE\r
+        077640  640040  777776  03170           TRC B,-2        ;BIT 35 IS FOR  TURNAROUND SPACE.\r
+                                03180   >\r
+\r\fTENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032                 PAGE 7\r
+        TD10 VERSION\r
+\r
+\r
+                                03210   IFN MODE,<\r
+                                03220           SETOB A,B       ;GO FORWARD, SET DC FOR SEARCH\r
+                                03230           CONSZ UTS,40    ;IS CHECKSUM BEING WRITTEN?\r
+                                03240           JRST .-1        ;WAIT\r
+                                03250   RB1:    TRNN B,400001   ;DECIDE WHETHER TO TURN AROUND\r
+                                03260           TRCA C,10000    ;CHANGE DIRECTION AND DELAY\r
+                                03270           CONSO UTC,200000        ;UNIT SELECTED?\r
+                                03280           TRO C,2000      ;INVOKE STARTUP DELAY\r
+                                03290   RBG:    CONO UTC,220200(C)      ;COMMAND TO THE  551.\r
+                                03300                                   ;200=SEARCH, 300=READ, 700=WRITE.\r
+                                03310           CONO DC,4011(A) ;COMMAND TO THE 136.\r
+                                03320   UWAIT1: CONSZ UTS,6     ;ANY ERRORS?\r
+                                03330           JRST ERR        ;YES. GO DING AND THEN TYI\r
+                                03340           CONSO DC,1000   ;DATA READY?\r
+                                03350           JRST .-3        ;NO. WAIT SOME MORE\r
+                                03360           JUMPL E,INOUT(WRITE)    ;IF IN MIDST OF A DT BLOCK, DISPATCH\r
+                                03370           DATAI DC,B      ;NO. SEARCHING. GET BLOCK NUMBER\r
+                                03380           TRZ C,2000      ;DONT DELAY ANY MORE\r
+                                03390           SUBI B,(BLKNO)  ;COMPARE WITH DESIRED BLOCK\r
+                                03400           TRNE C,10000    ;COMPLEMENT IF GOING REVERSE\r
+                                03410           TRC B,-2        ;BIT 35 IS FOR TURNAROUND SPACE.\r
+                                03420   >\r
+        077641  326040  077624  03430           JUMPN B,RB1     ;JUMP IF NOT GOING FORWARD INTO (BLKNO)\r
+        077642  211240  000200  03440           MOVNI E,200     ;WORDS PER BLOCK\r
+        077643  202300  000000  03450           MOVEM P,F       ;SAVE RETURN IN AC0\r
+        077644  660140  000100  03460           TRO C,100       ;READ COMMAND, MAYBE\r
+        077645  323500  077652  03470           JUMPLE WRITE,RB2        ;JUMP IF READ\r
+        077646  660140  000400  03480           TRO C,400       ;CHANGE TO WRITE COMMAND\r
+                                03490   IFN MODE,<MOVNI A,401   ;SET 136 TO OUTPUT>\r
+        077647  327740  077652  03500           JUMPG CT,.+3\r
+        077650  553000  077377  03510           HRRZS LINK      ;IF LAST BLK, KILL LINK\r
+        077651  137240  000013  03520           DPB E,PNTR              ;AND THE DIR BYTE ? 0\r
+        077652  302440  000144  03530   RB2:    CAIE BLKNO,^D100        ;IF NOT DIRECTORY BLOCK\r
+        077653  201300  077655  03540           MOVEI P,.+2     ;SETUP NEW RETURN\r
+        077654  254000  077626  03550           JRST RBG\r
+        077655  340240  077377  03560           AOJ E,LINK      ;IN/OUTPUT LINK\r
+        077656  267300  077627  03570           JRA P,UWAIT1    ;RESTORE CALLER ADR\r
+                                03580                           ;AND PROCESS DATA WORDS\r
+\r\fTENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032                 PAGE 8\r
+        TD10 VERSION\r
+\r
+\r
+                                03610   IFE MODE,<\r
+        077657  732066  000000  03620           DATAI DTC,@(P)  ;READ COMMANDS. GET WORD TO CORE\r
+        077660  254000  077662  03630   INOUT:  JRST UWAIT2     ;INOUT-1 TO INOUT +1 ARE DISPATCHED TO.\r
+        077661  732166  000000  03640           DATAO DTC,@(P)  ;OUTPUT TO TAPE\r
+        077662  346240  077666  03650   UWAIT2: AOJN E,UWAIT3   ;WAS THAT THE LAST WORD IN THE DT BLOCK?\r
+        077663  732600  000001  03660           CONO DTS,1      ;YES. GIVE FUNCTION STOP TO TD10\r
+        077664  732740  100000  03670           CONSO DTS,100000        ;AND WAIT FOR CHECKSUM TO BE DONE\r
+        077665  254000  077664  03680           JRST .-1        ;NOT YET. WAIT\r
+        077666  364246  000000  03690   UWAIT3: SOJA E,0(P)     ;DONE. COMPENSATE FOR THE AOJN ABOVE, AND\r
+                                03700                           ;RETURN TO CALLER OF UWAIT OR RBLK\r
+                                03710   >\r
+\r
+                                03730   IFN MODE,<\r
+                                03740           DATAI DC,@(P)   ;READ COMMANDS. GET WORD TO CORE\r
+                                03750   INOUT:  JRST UWAIT2     ;INOUT-1 THRU INOUT+1 ARE DISPATCHED TO.\r
+                                03760           DATAO DC,@(P)   ;OUTPUT TO TAPE\r
+                                03770   UWAIT2: JRST 0(P)       ;RETURN TO CALLER OF UWAIT OR RBLK.\r
+                                03780   >\r
+\r\fTENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032                 PAGE 9\r
+        TD10 VERSION\r
+\r
+\r
+        077667  201100  000044  03810   ALTMD:  MOVEI A,"$"\r
+        077670  265300  077471  03820           JSP P,TYO       ;ALTMODE IS PRINTED AS "$"\r
+\r
+                                03840   IFE MAGT,<\r
+        077671  302600  000053  03850           CAIE CH,"K"-40  ;FOR K, WRITE := 0\r
+        077672  306600  000044  03860           CAIN CH,"D"-40  ;FOR D, WRITE :=1\r
+        077673  343500  077672  03870           AOJLE WRITE,.-1 ;COUNT (WRITE)\r
+                                03880           >\r
+\r
+                                03900   IFN MAGT,<\r
+                                03910           CAIN CH,"D"-40  ;FOR D, WRITE :=1\r
+                                03920           AOJLE WRITE,.-1 ;COUNT (WRITE)\r
+                                03930           JUMPG WRITE,DUMP        ;D MEANS GO DUMP ON MAG TAPE\r
+                                03940           >\r
+\r
+        077674  306600  000047  03960           CAIN CH,"G"-40  ;GO TO PROGRAM?\r
+        077675  254020  077454  03970           JRST @SADR      ;YES. JUMP OUT\r
+        077676  306600  000046  03980           CAIN CH,"F"-40  ;FILE DIR PRINT?\r
+        077677  254000  077732  03990           JRST FDIR       ;YES. PRINT FILE DIR OF THIS TAPE\r
+        077700  306600  000072  04000           CAIN CH,"Z"-40  ;ZERO DIRECTORY?\r
+        077701  254000  077721  04010           JRST ZDIR       ;DISPATCH\r
+        077702  303600  000027  04020           CAILE CH,27     ;SKIP IF OCTAL NUMBER\r
+        077703  254000  077414  04030           JRST TYI        ;NO. GO PROCESS FILE NAME\r
+        077704  242040  000003  04040           LSH B,3 ;CONVERT SIXBIT TO OCTAL\r
+        077705  246000  000003  04050           LSHC F,3        ;F+1=B\r
+        077706  326040  077704  04060           JUMPN B,.-2     ;MAY BE MORE THAN 1 DIGIT (START ADR)\r
+        077707  303000  000007  04070           CAILE F,7       ;SKIP IF ONE DIGIT\r
+        077710  267200  077451  04080           JRA D,JBLK      ;D:=SADR. DISPATCH TO JBLK WHICH SAVES SADR.\r
+        077711                  04090   OPNTP:                  ;SHIFT UNIT NUMBER LEFT FOR CONO\r
+        077711  242000  000011  04100   IFE MODE,<LSH F,11>\r
+                                04110   IFN MODE,<LSH F,3>\r
+        077712  542000  077744  04120           HRRM F,TAPENO   ;SAVE IN CORE\r
+        077713  201440  000144  04130   CLSTP:  MOVEI BLKNO,^D100       ;BLK NO OF FILE DIR\r
+        077714  401540  000000  04140           SETZI PNTR,0    ;DONT CLOBBER DIRECTORY BYTE\r
+        077715  265300  077620  04150           JSP P,RBLK      ;MOVE TO BLOCK 100\r
+        077716  255005  077377  04160           JFCL TAB+200(E) ;READ OR WRITE DIR TAB AS DETERMINED BY WRITE\r
+        077717  341240  077627  04170           AOJL E,UWAIT1   ;COUNT THE 200 WORDS\r
+        077720  254000  077402  04180           JRST BEG        ;GO ASK FOR NEXT COMMAND\r
+\r
+        077721  200100  077757  04200   ZDIR:   MOVE A,[XWD FOOF,TAB]   ;FOOF IS CLEAR\r
+        077722  251100  077375  04210           BLT A,TAB+176   ;CLEAR DIRECTORY, EXCEPT LAST WORD FOR ID\r
+        077723  205100  757000  04220           MOVSI A,(36B4+36B9)     ;RESERVE BLOCKS 1 & 2\r
+        077724  202100  077177  04230           MOVEM A,TAB     ;IN DIRECTORY\r
+        077725  205100  017000  04240           MOVSI A,(36B9)\r
+        077726  202100  077215  04250           MOVEM A,TAB+16  ;BLK 100 (DIR) IS RESERVED TOO\r
+        077727  525100  000007  04260           HRLOI A,7       ;AND BLOCKS >1100 ARE EOT\r
+        077730  202100  077321  04270           MOVEM A,TAB+122 ;END OF BYTE TAB\r
+        077731  344500  077465  04280           AOJA WRITE,CLS1 ;SET WRITE TO OUTPUT\r
+                                04290                                   ;AND DUMP BLK 100.\r
+\r\fTENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032                 PAGE 10\r
+        TD10 VERSION\r
+\r
+        077732  211400  000026  04310   FDIR:   MOVNI FILN,26   ;26 FILES (OCTAL)\r
+        077733  265300  077467  04320   FD2:    JSP P,CRR       ;CR-LF\r
+        077734  336150  077350  04330   FD3:    SKIPN C,TAB+123+26(FILN)        ;FIRST WORD OF NAME. IS IT BLANK?\r
+        077735  344140  077741  04340           AOJA C,FD1      ;YES. SET C=1 AND LOOP\r
+        077736  265700  077743  04350           JSP G,SIXBP     ;PRINT FIRST WORD AND A SPACE\r
+        077737  510150  077376  04360           HLLZ C,TAB+151+26(FILN) ;SECOND WORD OF FILE NAME\r
+        077740  265700  077743  04370           JSP G,SIXBP     ;PRINT AND CLEAR C\r
+        077741  341403  077733  04380   FD1:    AOJL FILN,FD2(C)        ;CAN JUMP TO FD2 OR FD3. COUNT FILES.\r
+        077742  254000  077402  04390           JRST BEG        ;ALL FILES PRINTED OR BLANK. RETURN.\r
+\r
+        077743  201040  000007  04410   SIXBP:  MOVEI B,7       ;SIXBP PRINTS C(C) IN 6BIT\r
+                                04420                           ;AND ADDS A TRAILING SPACE\r
+                                04430                           ;AND LEAVES (C)=0\r
+\r
+        077744                  04450   TAPENO:                 ;USE ADR AS TEMP FOR CURRENT UNIT\r
+        077744  401100  000000  04460   SIXBP1: SETZI A,.-.     ;CLEAR A\r
+        077745  246100  000006  04470           LSHC A,6\r
+        077746  271100  000040  04480           ADDI A,40       ;SIXBIT TO ASCII\r
+        077747  265300  077471  04490           JSP P,TYO       ;TYPE OUT CHARACTER\r
+        077750  367040  077744  04500           SOJG B,SIXBP1   ;LOOP IF MORE CHARACTERS\r
+        077751  254016  000000  04510           JRST 0(G)       ;RETURN\r
+\r
+        077752  000000  000000  04530   SPNT:   0               ;POINTER TO HEADERS IN CORE.\r
+\r
+        077753                  04550           LIT\r
+        077753  000500  077176\r
+        077754  000040  000041\r
+        077755  077154  777761\r
+        077756  101200  077377\r
+        077757  077176  077177\r
+\r
+\r
+                                04580   IFN MAGT,<\r
+                                04590   SLOP:   MOVE    .+3\r
+                                04600           MOVEM   COMPTR\r
+                                04610           JRST    BEGR+1\r
+                                04620           XWD     440700,.+1\r
+                                04630           BYTE    (7) "0",33,177\r
+                                04640   LAST:   JRST    SLOP\r
+                                04650           >\r
+                                04660   IFE MAGT,<\r
+                        000000  04670           SLOP=COMPTR-17-.        ;THIS MANY WORDS BEFORE RESERVED AREA\r
+                                04680                                   ;FOR COMMAND STRINGS.\r
+                                04690   ;!!!!!  NOTE: ABOVE PARAMETER MUST COME OUT POSITIVE IN\r
+                                04700   ;       ORDER TO MEET THE DOCUMENTATION OF RESERVED COMMAND STRING AREA.\r
+                                04710   ;\r
+                                04720   ;       THIS MEANS ANY CODE ADDED MUST BE COMPENSATED FOR BY\r
+                                04730   ;       A CORRESPONDING TIGHTENING SOMEWHERE. GOOD LUCK.\r
+                                04740   ;       TENDMP IS VERY TIGHT ALREADY.\r
+                                04750           >\r
+\r
+                        077400  04770           END BEGR\r
+\r
+\r\fTENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032                 PAGE 10-1\r
+        TD10 VERSION\r
+\r
+NO ERRORS DETECTED\r
+\r
+PROGRAM BREAK IS 000000\r
+ABSLUTE BREAK IS 077760\r
+\r
+8K CORE USED\r
+\r\fTENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032                 PAGE 11\r
+        SYMBOL TABLE\r
+\r
+                000133  \r
+A               000002  \r
+ALTMD           077667  \r
+ALTTST          077501  \r
+B               000001  \r
+BEG             077402  \r
+BEG1            077404  \r
+BEG69           077522  \r
+BEGR            077400  \r
+BELL            077423  \r
+BLKNO           000011  \r
+C               000003  \r
+CARRET          077504  \r
+CH              000014  \r
+CKS             000007  \r
+CLS1            077465  \r
+CLSTP           077713  \r
+COMPTR          077777  \r
+CORE            000004  \r
+CRCH            077413  \r
+CRR             077467  \r
+CT              000017  \r
+D               000004  \r
+DC              000200  \r
+DELE            077464  \r
+DMP1            077532  \r
+DMP2            077552  \r
+DMP3            077554  \r
+DMP5            077562  \r
+DTC             000320  \r
+DTS             000324  \r
+DUMP            077530  \r
+E               000005  \r
+ERR             077466  \r
+F               000000  \r
+FD1             077741  \r
+FD2             077733  \r
+FD3             077734  \r
+FDIR            077732  \r
+FILN            000010  \r
+FOOF            077176  \r
+FREE            077517  \r
+G               000016  \r
+HIGH            077175  \r
+INOUT           077660  \r
+JBLK            077451  \r
+LINK            077377  \r
+LOAD            077462  \r
+LOADS           077455  \r
+LODUMP          077557  \r
+LOW             000020  \r
+LOZAD           077175  \r
+LUP             077505  \r
+\r\fTENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032                 PAGE 11-1\r
+        SYMBOL TABLE\r
+\r
+MAGT            000000  \r
+MNLUP           077576  \r
+MNLUP0          077574  \r
+MNLUP1          077577  \r
+MODE            000000  \r
+NEXT            077422  \r
+NEXT1           077446  \r
+OPNTP           077711  \r
+P               000006  \r
+PNTR            000013  \r
+Q               000015  \r
+RB1             077624  \r
+RB2             077652  \r
+RBG             077626  \r
+RBLK            077620  \r
+RCH             077433  \r
+REL             000000  \r
+SADR            077454  \r
+SIXBP           077743  \r
+SIXBP1          077744  \r
+SLOP            000000  \r
+SPACE           077417  \r
+SPNT            077752  \r
+TAB             077177  \r
+TAPENO          077744  \r
+THRU            077566  \r
+TTY             000120  SPD\r
+TYI             077414  \r
+TYO             077471  \r
+UTC             000210  \r
+UTS             000214  \r
+UWAIT           077572  \r
+UWAIT1          077627  \r
+UWAIT2          077662  \r
+UWAIT3          077666  \r
+WRITE           000012  \r
+ZDIR            077721  \r
+\fRRRRRRRRRRRR            IIIIIIIII         MMM         MMM            111               000000000         BBBBBBBBBBBB   \r
+RRRRRRRRRRRR            IIIIIIIII         MMM         MMM            111               000000000         BBBBBBBBBBBB   \r
+RRRRRRRRRRRR            IIIIIIIII         MMM         MMM            111               000000000         BBBBBBBBBBBB   \r
+RRR         RRR            III            MMMMMM   MMMMMM         111111            000         000      BBB         BBB\r
+RRR         RRR            III            MMMMMM   MMMMMM         111111            000         000      BBB         BBB\r
+RRR         RRR            III            MMMMMM   MMMMMM         111111            000         000      BBB         BBB\r
+RRR         RRR            III            MMM   MMM   MMM            111            000      000000      BBB         BBB\r
+RRR         RRR            III            MMM   MMM   MMM            111            000      000000      BBB         BBB\r
+RRR         RRR            III            MMM   MMM   MMM            111            000      000000      BBB         BBB\r
+RRRRRRRRRRRR               III            MMM         MMM            111            000   000   000      BBBBBBBBBBBB   \r
+RRRRRRRRRRRR               III            MMM         MMM            111            000   000   000      BBBBBBBBBBBB   \r
+RRRRRRRRRRRR               III            MMM         MMM            111            000   000   000      BBBBBBBBBBBB   \r
+RRR   RRR                  III            MMM         MMM            111            000000      000      BBB         BBB\r
+RRR   RRR                  III            MMM         MMM            111            000000      000      BBB         BBB\r
+RRR   RRR                  III            MMM         MMM            111            000000      000      BBB         BBB\r
+RRR      RRR               III            MMM         MMM            111            000         000      BBB         BBB\r
+RRR      RRR               III            MMM         MMM            111            000         000      BBB         BBB\r
+RRR      RRR               III            MMM         MMM            111            000         000      BBB         BBB\r
+RRR         RRR         IIIIIIIII         MMM         MMM         111111111            000000000         BBBBBBBBBBBB   \r
+RRR         RRR         IIIIIIIII         MMM         MMM         111111111            000000000         BBBBBBBBBBBB   \r
+RRR         RRR         IIIIIIIII         MMM         MMM         111111111            000000000         BBBBBBBBBBBB   \r
+\r
+\r
+\r
+\r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                     SSSSSSSSSSSS      TTTTTTTTTTTTTTT                                                               \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                  SSS                        TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                     SSSSSSSSS               TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLL                              SSS            TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+LLLLLLLLLLLLLLL      SSSSSSSSSSSS               TTT                                                                     \r
+\r
+\r
+\r
+\r
+Request created: 24-April-1978  11:23:08\r
+File: DSKB0 :RIM10B.LST   [8,200] Created: 20-April-1967 11:21:00 Printed: 24-April-1978 11:22:33
+QUEUE Switches:  /PRINT:ARROW  /FILE:ASCII  /COPIES:1 /SPACING:1 /LIMIT:1508 \r
+File will be deleted after printing\r
+\f\rRIMIO                 PAGE 2\r
+\r
+\r
+                                00020           TITLE   RIMIO\r
+\r
+                                00040   ;CONVERTS RIM10B PAPER TAPES TO DMP FILES AND VICE-VERSA\r
+\r
+                                00060   EXTERN JOBSA,JOBREL,JOBSYM,JOBS41\r
+\r
+                        000001  00080   A=1\r
+                        000002  00090   B=2\r
+                        000003  00100   C=3\r
+                        000004  00110   D=4\r
+                        000013  00120   CHK=13\r
+                        000014  00130   BLK=14\r
+                        000015  00140   LNG=15\r
+                        000016  00150   R=16\r
+                        000017  00160   P=17\r
+\r
+                        000040  00180   PDLEN==40\r
+\r
+        000000'                 00200   PDLIST: BLOCK   PDLEN\r
+\r
+        000040'                 00220   OFILE:  BLOCK   5                       ;OFILE+4 IS THE DEVICE.\r
+        000045'                 00230   IFILE:  BLOCK   5                       ;IFILE+4 IS THE DEVICE\r
+        000052'                 00240   OBUF:   BLOCK   3\r
+        000055'                 00250   IBUF:   BLOCK   3\r
+\r
+        000060'                 00270   DMPBUF: BLOCK   200                     ;RANDOM ACCESS DUMP IO BUFFER.\r
+        000260' 000000  000000  00280   HILOC:  0\r
+\r\fRIMIO                 PAGE 3\r
+\r
+\r
+                                00300   ;ERRORS:\r
+\r
+                                00320   NOENT:  OUTSTR  [ASCIZ/Enter to create output file failed.\r
+        000261' 000000  000551' 00330   /]\r
+        000262' 254000  000273' 00340           JRST    BEGIN\r
+\r
+                                00360   NOLALT: OUTSTR  [ASCIZ/Lookup to read-alter the output file failed.\r
+        000263' 000000  000561' 00370   /]\r
+        000264' 254000  000273' 00380           JRST    BEGIN\r
+\r
+                                00400   NOALT:  OUTSTR  [ASCIZ/Enter to read-alter the output file failed.\r
+        000265' 000000  000573' 00410   /]\r
+        000266' 254000  000273' 00420           JRST    BEGIN\r
+\r
+                                00440   NOPTR:  OUTSTR  [ASCIZ/OPEN of device PTR: failed.\r
+        000267' 000000  000605' 00450   /]\r
+        000270' 254000  000273' 00460           JRST    BEGIN\r
+\r
+                                00480   NOOPEN: OUTSTR  [ASCIZ/OPEN failed\r
+        000271' 000000  000613' 00490   /]\r
+        000272' 254000  000273' 00500           JRST    BEGIN\r
+\r
+\r\fRIMIO                 PAGE 4\r
+\r
+\r
+                                00530   ;INITIALIZATION, DISPATCH\r
+\r
+        000273' 000000  000000  00550   BEGIN:  RESET\r
+        000274' 200740  000616' 00560           MOVE    P,[IOWD PDLEN,PDLIST]\r
+        000275' 000000  000617' 00570   RORP:   OUTSTR  [ASCIZ/Read tape or Punch tape?  (Type R or P)  /]\r
+        000276' 000000  000001  00580           INCHWL  A\r
+        000277' 260740  000307' 00590           PUSHJ   P,CLRIN\r
+        000300' 620040  000040  00600           TRZ     A,40                    ;MAKE SURE IT'S UPPERCASE\r
+        000301' 306040  000122  00610           CAIN    A,"R"\r
+        000302' 254000  000334' 00620           JRST    RTAPE\r
+        000303' 306040  000120  00630           CAIN    A,"P"\r
+        000304' 254000  000547' 00640           JRST    PTAPE\r
+                                00650           OUTSTR  [ASCIZ/?\r
+        000305' 000000  000630' 00660   /]\r
+        000306' 254000  000275' 00670           JRST    RORP\r
+\r
+        000307' 261740  000001  00690   CLRIN:  PUSH    P,A\r
+        000310' 302040  000175  00700   CLRIN1: CAIE    A,175\r
+        000311' 306040  000012  00710           CAIN    A,12\r
+        000312' 254000  000533' 00720           JRST    APOPJ\r
+        000313' 000000  000001  00730           INCHWL  A\r
+        000314' 254000  000310' 00740           JRST    CLRIN1\r
+\r
+                                00760   ;HERE'S HOW THE RIM10B LOADER LOOKS ON THE TAPE:\r
+                        000104  00770   PTR==104\r
+                                00780   ;AC 10 CONTAINS (WHEN 5 IS EXECUTED):\r
+                                00790   ;       SOJA    10,4 - INITIAL POINTER OR JRST WORD\r
+                                00800   ;       SOJA    10,3 - MIDDLE OF DATA BLOCK\r
+                                00810   ;       SOJA    10,2 - WHEN READING THE CHECKSUM WORD\r
+                                00820   ;\r
+        000315' 777762  000000  00830   RIM10B: -16,,0                          ; 0  INITIAL BLKI WORD\r
+        000316' 710600  000060  00840           CONO    PTR,60                  ; 1  START PTR IN BINARY MODE\r
+        000317' 541400  000004  00850           HRRI    10,4                    ; 2  INITIALIZE 10 (FOR INDEX AND JUMP ADDR)\r
+        000320' 710740  000010  00860           CONSO   PTR,10                  ; 3  SKIP IF DONE\r
+        000321' 254000  000003  00870           JRST    3                       ; 4  WAIT FOR DONE\r
+        000322' 710470  000007  00880           DATAI   PTR,@7(10)              ; 5  STORE DATA INDIRECT (13 OR 12 OR 11)\r
+        000323' 256010  000007  00890           XCT     7(10)                   ; 6  EXECUTES 13 OR 12 OR 11\r
+        000324' 256010  000012  00900           XCT     12(10)                  ; 7  EXECUTES 16 OR 15 OR 14\r
+        000325' 364400  000000  00910           SOJA    10,0                    ;10  RH IS CLOBBERED TO 4 OR 3 OR 1\r
+        000326' 312740  000016  00920           CAME    17,16                   ;11  XCTED TO CHECK CHECKSUM\r
+        000327' 270756  000001  00930           ADD     17,1(16)                ;12  XCTED TO COMPUTE CHECKSUM\r
+        000330' 331740  000016  00940           SKIPL   17,16                   ;13  XCT TO INITIALIZE CHECKSUM AND\r
+                                00950                                           ;    SKIP IF THIS IS AN AOBJN WORD\r
+        000331' 254200  000001  00960           JRST    4,1                     ;14  XCT TO HALT IF CHECKSUM FAILS\r
+        000332' 253700  000003  00970           AOBJN   16,3                    ;15  XCT WHILE READING MIDDLE OF DATA BLOCK\r
+        000333' 254000  000002  00980           JRST    2                       ;16  XCTED BY READIN MODE. XCT TO START PRGM\r
+                                00990                                           ;17  CHECKSUM IS STORED HERE.\r
+\r
+Q       000334'                 01010   RIMPTR: RIM10B-.,,RIM10B-1              ;IOWD POINTER TO THE RIM10B LOADER\r
+\r\fRIMIO                 PAGE 5\r
+\r
+\r
+                                01030   ;RTAPE\r
+\r
+        000334' 000000  000631' 01050   RTAPE:  OUTSTR  [ASCIZ/Output file name: /]\r
+        000335' 201700  000040' 01060           MOVEI   R,OFILE\r
+        000336' 200040  000635' 01070           MOVE    A,[OFILE,,OFILE+1]\r
+        000337' 402000  000040' 01080           SETZM   OFILE\r
+        000340' 251040  000044' 01090           BLT     A,OFILE+4\r
+        000341' 205040  445560  01100           MOVSI   A,'DMP'\r
+        000342' 202040  000041' 01110           MOVEM   A,OFILE+1\r
+        000343' 260740  000543' 01120           PUSHJ   P,GETFIL                        ;READ FILE NAME FROM USER.\r
+\r
+        000344' 201040  000017  01140           MOVEI   A,17                            ;OPEN CHANNEL\r
+        000345' 336100  000044' 01150           SKIPN   B,OFILE+4\r
+        000346' 205100  446353  01160           MOVSI   B,'DSK'\r
+        000347' 201140  000000  01170           MOVEI   C,0\r
+        000350' 050040  000001  01180           OPEN    1,A\r
+        000351' 254000  000271' 01190           JRST    NOOPEN\r
+        000352' 200200  000636' 01200           MOVE    D,[OFILE,,A]\r
+        000353' 251200  000004  01210           BLT     D,D\r
+        000354' 077040  000001  01220           ENTER   1,A                             ;SELECT OUTPUT FILE.\r
+        000355' 254000  000261' 01230           JRST    NOENT   \r
+        000356' 070040  000000  01240           CLOSE   1,                              ;WRITE 0 LENGTH FILE.\r
+        000357' 071040  000000  01250           RELEAS  1,\r
+        000360' 201040  000017  01260           MOVEI   A,17                            ;RE-OPEN CHANNEL\r
+        000361' 336100  000044' 01270           SKIPN   B,OFILE+4\r
+        000362' 205100  446353  01280           MOVSI   B,'DSK'\r
+        000363' 201140  000000  01290           MOVEI   C,0\r
+        000364' 050040  000001  01300           OPEN    1,A\r
+        000365' 254000  000271' 01310           JRST    NOOPEN\r
+        000366' 200200  000636' 01320           MOVE    D,[OFILE,,A]\r
+        000367' 251200  000004  01330           BLT     D,D\r
+        000370' 076040  000001  01340           LOOKUP  1,A                             ;SEEK FILE WE JUST WROTE\r
+        000371' 254000  000263' 01350           JRST    NOLALT                          ;I JUST WROTE ONE. WHERE IS IT?\r
+        000372' 200200  000636' 01360           MOVE    D,[OFILE,,A]\r
+        000373' 251200  000004  01370           BLT     D,D\r
+        000374' 077040  000001  01380           ENTER   1,A                             ;ENTER READ-ALTER MODE\r
+        000375' 254000  000265' 01390           JRST    NOALT   \r
+\r
+        000376' 041000  000013  01410           INIT    0,13                            ;PTR IN BINARY MODE.\r
+        000377' 606462  000000  01420           'PTR   '\r
+        000400' 000000  000055' 01430           IBUF\r
+        000401' 254000  000267' 01440           JRST    NOPTR\r
+\r
+                                01460           OUTSTR  [ASCIZ/Mount paper tape and type return when ready:\r
+        000402' 000000  000637' 01470   /]\r
+        000403' 201040  000000  01480           MOVEI   A,0\r
+        000404' 260740  000307' 01490           PUSHJ   P,CLRIN\r
+\r
+        000405' 200100  000334' 01510           MOVE    B,RIMPTR\r
+        000406' 260740  000462' 01520           PUSHJ   P,TREAD                         ;READ IOWD FOR TAPE'S LOADER\r
+        000407' 313042  000001  01530           CAMLE   A,1(B)                          ;OK IF TAPE'S LOADER IS LONGER\r
+        000410' 254000  000454' 01540           JRST    BADRIM                          ;BUT NOT IF SHORTER.\r
+        000411' 200140  000001  01550           MOVE    C,A                             ;IOWD FOR TAPE'S LOADER\r
+\r\fRIMIO                 PAGE 5-1\r
+\r
+\r
+        000412' 270100  000651' 01560           ADD     B,[1,,1]\r
+        000413' 260740  000462' 01570   RIMCHK: PUSHJ   P,TREAD                         ;\r
+        000414' 312042  000001  01580           CAME    A,1(B)\r
+        000415' 254000  000454' 01590           JRST    BADRIM                          ;TAPE ISN'T IN RIM FORMAT.\r
+        000416' 270140  000651' 01600           ADD     C,[1,,1]\r
+        000417' 253100  000413' 01610           AOBJN   B,RIMCHK                        ;LOOP, GOBBLING THE RIM10B LOADER.\r
+        000420' 327140  000423' 01620           JUMPG   C,RIMOK                         ;JUMP IF TAPE'S IOWD IS COUNTED OUT\r
+        000421' 260740  000462' 01630           PUSHJ   P,TREAD                         ;READ AND THROW OUT EXTRA WORDS\r
+        000422' 253140  000421' 01640           AOBJN   C,.-1                           ;FROM THE TAPE'S LOADER.\r
+        000423' 260740  000524' 01650   RIMOK:  PUSHJ   P,FILINI\r
+        000424' 260740  000462' 01660   GETBLK: PUSHJ   P,TREAD\r
+        000425' 331100  000001  01670           SKIPL   B,A                             ;SKIP IF THIS IS A POINTER WORD\r
+        000426' 254000  000443' 01680           JRST    SSTART                          ;SET STARTING ADDRESS\r
+        000427' 200540  000002  01690           MOVE    CHK,B                           ;INITIALIZE CHECKSUM\r
+        000430' 260740  000462' 01700   RIMLP:  PUSHJ   P,TREAD\r
+        000431' 270540  000001  01710           ADD     CHK,A\r
+        000432' 260740  000473' 01720           PUSHJ   P,FILSTR                        ;STORE IN FILE. DATA A IN LOC 1(B)\r
+        000433' 253100  000430' 01730           AOBJN   B,RIMLP                         ;LOOP\r
+        000434' 260740  000462' 01740           PUSHJ   P,TREAD                         ;READ CHECKSUM WORD\r
+        000435' 316040  000013  01750           CAMN    A,CHK\r
+        000436' 254000  000424' 01760           JRST    GETBLK                          ;GET ANOTHER IOWD.\r
+                                01770           OUTSTR  [ASCIZ/Checksum failure.\r
+        000437' 000000  000652' 01780   /]\r
+        000440' 254200  000424' 01790           HALT    GETBLK\r
+\r
+                                01810   UNEOF:  OUTSTR  [ASCIZ/Unexpected End of File from PTR:\r
+        000441' 000000  000656' 01820   /]\r
+        000442' 201040  000000  01830           MOVEI   A,0                             ;STORE ZERO FOR THE STARTING ADDRE.\r
+        000443' 200100  000260' 01840   SSTART: MOVE    B,HILOC                         ;GET HIGHEST LOC LOADED.\r
+        000444' 505042  000001  01850           HRLI    A,1(B)                          ;ONE BEYOND IS INITIAL JOBFF\r
+        000445' 201100  777777* 01860           MOVEI   B,JOBSA-1\r
+        000446' 260740  000473' 01870           PUSHJ   P,FILSTR\r
+        000447' 260740  000535' 01880           PUSHJ   P,FILFRC\r
+        000450' 070040  000000  01890           CLOSE   1,\r
+        000451' 071040  000000  01900           RELEAS  1,\r
+        000452' 071000  000000  01910           RELEAS  0,\r
+        000453' 254000  000273' 01920           JRST    BEGIN\r
+\r
+                                01940   BADRIM: OUTSTR  [ASCIZ/Bad format RIM10B loader at the front of the tape?\r
+        000454' 000000  000665' 01950   /]\r
+        000455' 254000  000273' 01960           JRST    BEGIN\r
+\r
+                                01980   PTRERR: OUTSTR  [ASCIZ/PTR input error\r
+        000456' 000000  000700' 01990   /]\r
+        000457' 062000  000001  02000           GETSTS  0,A\r
+        000460' 254200  000461' 02010           HALT    .+1\r
+        000461' 060000  000010  02020           SETSTS  0,10\r
+        000462' 373000  000057' 02030   TREAD:  SOSLE   IBUF+2\r
+        000463' 254000  000471' 02040           JRST    TRED1\r
+        000464' 066000  000000  02050           INPUT   0,\r
+        000465' 063000  020000  02060           STATZ   0,20000\r
+                                02070           JRST    [POP P,(P)\r
+        000466' 254000  000704' 02080                   JRST UNEOF]\r
+\r\fRIMIO                 PAGE 5-2\r
+\r
+\r
+        000467' 063000  740000  02090           STATZ   0,740000\r
+        000470' 254000  000456' 02100           JRST    PTRERR\r
+        000471' 134040  000056' 02110   TRED1:  ILDB    A,IBUF+1\r
+        000472' 263740  000000  02120           POPJ    P,\r
+\r
+        000473' 201142  000001  02140   FILSTR: MOVEI   C,1(B)                  ;C?ABSOLUTE ADDRESS.\r
+        000474' 306140  000036  02150           CAIN    C,36                    ;EXEC MODE JOBSYM?\r
+        000475' 201140  000000* 02160           MOVEI   C,JOBSYM\r
+        000476' 306140  000041  02170           CAIN    C,41                    ;UUO TRAP?\r
+        000477' 201140  000000* 02180           MOVEI   C,JOBS41                ;YES.  HERE'S WHERE IT BELONGS IN DMP FORMAT\r
+        000500' 313140  000260' 02190           CAMLE   C,HILOC                 ;IS THIS HIGHEST LOC LOADED THUS FAR?\r
+        000501' 202140  000260' 02200           MOVEM   C,HILOC                 ;YES.  SAVE HIGHEST LOC LOADED.\r
+        000502' 275140  000074  02210           SUBI    C,74                    ;OFFSET TO DMP FILE ORIGIN=WORD # IN FILE.\r
+        000503' 321140  000534' 02220           JUMPL   C,CPOPJ                 ;RETURN IF OFF THE FRONT.\r
+        000504' 231140  000200  02230           IDIVI   C,200                   ;BLOCK NUMBER-1 IN C, WORD NUMBER IN D.\r
+        000505' 271140  000001  02240           ADDI    C,1                     ;THIS IS THE USET POINTER\r
+        000506' 306154  000000  02250           CAIN    C,(BLK)                 ;SAME AS WHAT'S IN CORE?\r
+        000507' 254000  000522' 02260           JRST    FILST2                  ;YES. - THIS IS THE EASY CASE.\r
+        000510' 260740  000535' 02270   FILST0: PUSHJ   P,FILFRC                ;FORCE CURRENT RECORD OUT.  ADVANCE TO NEXT\r
+        000511' 307155  000000  02280           CAIG    C,(LNG)                 ;IS DESIRED RECORD WITHIN EXISTING FILE?\r
+        000512' 254000  000515' 02290           JRST    FILST1                  ;YES.  READ IT (UNLESS THE LAST RECORD)\r
+        000513' 201615  000000  02300           MOVEI   BLK,(LNG)               ;SET TO APPEND A ZERO RECORD TO THE FILE.\r
+        000514' 254000  000510' 02310           JRST    FILST0\r
+\r
+        000515' 201603  000000  02330   FILST1: MOVEI   BLK,(C)                 ;MAKE DESIRED RECORD THE CURRENT RECORD\r
+        000516' 301615  000000  02340           CAIL    BLK,(LNG)               ;IS THIS THE NON-EX RECORD AT END OF FILE?\r
+        000517' 254000  000522' 02350           JRST    FILST2                  ;YES.  WE CAN'T (AND DON'T NEED TO) READ IT.\r
+        000520' 074054  000000  02360           USETI   1,(BLK)\r
+                                02370           INPUT   1,[-200,,DMPBUF-1\r
+        000521' 066040  000706' 02380                   0]\r
+        000522' 202044  000060' 02390   FILST2: MOVEM   A,DMPBUF(D)             ;STORE DATA\r
+        000523' 263740  000000  02400           POPJ    P,\r
+\r
+        000524' 201600  000001  02420   FILINI: MOVEI   BLK,1                           ;REC # THAT IS "IN CORE".\r
+        000525' 201640  000001  02430           MOVEI   LNG,1                           ;RECORD NUMBER OF EOF\r
+        000526' 402000  000260' 02440           SETZM   HILOC                           ;HIGHEST LOCATION LOADED\r
+        000527' 402000  000060' 02450   FILCLR: SETZM   DMPBUF\r
+        000530' 261740  000001  02460           PUSH    P,A\r
+        000531' 200040  000710' 02470           MOVE    A,[DMPBUF,,DMPBUF+1]\r
+        000532' 251040  000257' 02480           BLT     A,DMPBUF+177\r
+        000533' 262740  000001  02490   APOPJ:  POP     P,A\r
+        000534' 263740  000000  02500   CPOPJ:  POPJ    P,\r
+\r
+        000535' 075054  000000  02520   FILFRC: USETO   1,(BLK)                         ;SELECT OUTPUT RECORD ALWAYS\r
+                                02530           OUTPUT  1,[-200,,DMPBUF-1               ;WRITE CURRENT RECORD.\r
+        000536' 067040  000706' 02540                           0]\r
+        000537' 271600  000001  02550           ADDI    BLK,1\r
+        000540' 315640  000014  02560           CAMGE   LNG,BLK \r
+        000541' 200640  000014  02570           MOVE    LNG,BLK                         ;INCREASE LNG IF INCREASING FILE.\r
+        000542' 254000  000527' 02580           JRST    FILCLR                          ;NEXT RECORD NUMBER\r
+\r\fRIMIO                 PAGE 6\r
+\r
+\r
+                                02600   ;THINGS TO WRITE LATER:\r
+\r
+        000543' 200040  000711' 02620   GETFIL: MOVE    A,['RIMOUT']\r
+        000544' 202056  000000  02630           MOVEM   A,(R)\r
+                                02640           OUTSTR  [ASCIZ/RIMOUT.DMP\r
+        000545' 000000  000712' 02650   /]\r
+        000546' 263740  000000  02660           POPJ    P,\r
+\r
+                                02680   PTAPE:  OUTSTR  [ASCIZ/Not ready.\r
+        000547' 000000  000715' 02690   /]\r
+        000550' 254000  000273' 02700           jrst    begin\r
+\r
+                        000273' 02720   END BEGIN\r
+        000551' 427356  462744\r
+        000552' 203515  720306\r
+        000553' 713134  172312\r
+        000554' 203376  572340\r
+        000555' 727504  063322\r
+        000556' 663124  063302\r
+        000557' 647314  562134\r
+        000560' 064240  000000\r
+        000561' 463375  765752\r
+        000562' 701016  467500\r
+        000563' 713134  162132\r
+        000564' 607316  462744\r
+        000565' 203515  062500\r
+        000566' 677536  470352\r
+        000567' 721014  664730\r
+        000570' 625014  660722\r
+        000571' 663134  427032\r
+        000572' 050000  000000\r
+        000573' 427356  462744\r
+        000574' 203515  720344\r
+        000575' 627034  426702\r
+        000576' 663514  571100\r
+        000577' 723214  520336\r
+        000600' 727516  072750\r
+        000601' 203155  166312\r
+        000602' 203154  164730\r
+        000603' 627105  606424\r
+        000604' 000000  000000\r
+        000605' 476410  547100\r
+        000606' 677144  062312\r
+        000607' 733234  362500\r
+        000610' 502512  235100\r
+        000611' 633035  166312\r
+        000612' 621341  505000\r
+        000613' 476410  547100\r
+        000614' 633035  166312\r
+        000615' 620321  200000\r
+        000616' 777740  777777'\r
+        000617' 513134  162100\r
+        000620' 723036  062500\r
+\r\fRIMIO                 PAGE 6-1\r
+\r
+\r
+        000621' 677444  050352\r
+        000622' 673075  020350\r
+        000623' 607414  537500\r
+        000624' 201212  474740\r
+        000625' 625012  220336\r
+        000626' 711012  024500\r
+        000627' 200000  000000\r
+        000630' 374321  200000\r
+        000631' 477536  470352\r
+        000632' 721014  664730\r
+        000633' 625015  660732\r
+        000634' 625644  000000\r
+        000635' 000040' 000041'\r
+        000636' 000040' 000001\r
+        000637' 467376  567350\r
+        000640' 203414  170312\r
+        000641' 711016  460740\r
+        000642' 625014  167310\r
+        000643' 203517  170312\r
+        000644' 203454  572352\r
+        000645' 713344  073720\r
+        000646' 627344  071312\r
+        000647' 607117  135032\r
+        000650' 050000  000000\r
+        000651' 000001  000001\r
+        000652' 417214  561726\r
+        000653' 717535  520314\r
+        000654' 607235  472744\r
+        000655' 625341  505000\r
+        000656' 527354  574340\r
+        000657' 627076  462710\r
+        000660' 202135  662100\r
+        000661' 677144  043322\r
+        000662' 663124  063344\r
+        000663' 677324  050250\r
+        000664' 511641  505000\r
+        000665' 413034  420314\r
+\fSpooler runtime 0 Seconds, 0 KCS, 2734 disk reads, 85 disk writes, 1132 pages\r
+ ***END*** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 ***END*** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 ***END*** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 ***END*** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 ***END*** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 ***END*** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 ***END*** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 ***END*** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 ***END*** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 ***END*** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 ***END*** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 ***END*** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 ***END*** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 ***END*** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 ***END*** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 ***END*** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 ***END*** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 ***END*** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 ***END*** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 ***END*** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 ***END*** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 ***END*** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 ***END*** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 ***END*** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 ***END*** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 ***END*** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 ***END*** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 ***END*** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 ***END*** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13 ***END*** Name: M310         Address: **** UNKNOWN ****  CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****    \r\13   \r\13   \r\13   \r\13\f
\ No newline at end of file
diff --git a/src/macro.10 b/src/macro.10
new file mode 100644 (file)
index 0000000..52e7bdb
--- /dev/null
@@ -0,0 +1,7053 @@
+;STANFORD ASSEMBLY:\r
+       LPTWID==^D120   ;120 CHARACTERS/LINE ON LPT AT STANFORD\r
+TITLE  MACRO V.10      \r
+SUBTTL  RPG/CMF/JF/PMH/DMN     7-SEPT-71\r
+;COPYRIGHT 1968,1969,1970,1971, DIGITAL EQUIPMENT CORP., MAYNARD, MASS.\r
+\r
+       VMACRO==10              ;VERSION NUMBER\r
+       VUPDATE==0              ;DEC UPDATE LEVEL\r
+       VEDIT==0                ;EDIT NUMBER\r
+       VCUSTOM==0              ;NON-DEC UPDATE LEVEL\r
+\r
+\r
+       LOC     <JOBVER==137>\r
+       <VCUSTOM>B2+<VMACRO>B11+<VUPDATE>B17+VEDIT\r
+       RELOC\r
+       MLON\r
+\r
+COMMENT        *       ASSEMBLY FEATURE SWITCHES (ACTION WHEN NON-ZERO)\r
+\r
+       SWITCHES ON (NON-ZERO) IN DEC VERSION\r
+CCLSW          GIVES RAPID PROGRAM GENERATION FEATURE\r
+FTDISK         GIVES DISK FEATURES\r
+RENTSW         ASSEMBLE REENTRANT PROGRAMS\r
+\r
+       SWITCHES OFF (ZERO) IN DEC VERSION\r
+LNSSW          GIVES LNS VERSION\r
+IIISW          GIVES III FEATURES\r
+OPHSH          GIVES HASH SEARCH OF OPCODES\r
+*\r
+\fSUBTTL        DEFAULT ASSEMBLY SWITCH SETTINGS\r
+\r
+\r
+IFNDEF RENTSW,<RENTSW==0>\r
+\r
+IFNDEF LNSSW,<LNSSW==0>\r
+IFN LNSSW,<FTDISK==0>\r
+\r
+IFNDEF CCLSW,<CCLSW==1>\r
+IFN CCLSW,<FTDISK==1>\r
+\r
+IFNDEF UNIVR,<UNIVR==0>\r
+\r
+IFNDEF FTDISK,<FTDISK==0>\r
+\r
+IFNDEF IIISW,<IIISW==0>\r
+\r
+IFNDEF OPHSH,<OPHSH==0>\r
+\r
+\fSUBTTL        OTHER PARAMETERS\r
+\r
+.PDP== ^D50            ;BASIC PUSH-DOWN POINTER\r
+IFNDEF LPTWID,<LPTWID==^D132>  ;DEFAULT WIDTH OF PRINTER\r
+.LPTWD==8*<LPTWID/8>           ;USEFUL WIDTH IN MAIN LISTING\r
+.CPL== .LPTWD-^D32             ;WIDTH AVAIABLE FOR TEXT WHEN\r
+                               ;BINARY IS IN HALFWORD FORMAT\r
+.LPP==^D55     ;LINES/PAGE\r
+.STP== ^D40            ;STOW SIZE\r
+.TBUF==        ^D80            ;TITLE BUFFER\r
+.SBUF==        ^D80            ;SUB-TITLE BUFFER\r
+.IFBLK==^D20           ;IFIDN COMPARISON BLOCK SIZE\r
+.R1B==^D18\r
+.UNIV==^D10            ;NUMBER OF UNIVERSAL DEFINITIONS\r
+.LEAF==4               ;SIZE OF BLOCKS IN MACRO TREE\r
+\r
+NCOLS==1               ;NUMBER OF COLUMNS IN SYMBOL TABLE\r
+IFN CCLSW,<IFNDEF CTLSIZ,<CTLSIZ==^D200>>\r
+IFN OPHSH,<IFNDEF PRIME,<PRIME==^D701>>\r
+IFNDEF NUMBUF,<\r
+IFE LNSSW,<NUMBUF==2   ;NUMBER OF INPUT BUFFERS>\r
+IFN LNSSW,<NUMBUF==4   ;DOUBLE BUFFER FOR DOUBLE SIZE DEVICES>\r
+>\r
+\r
+EXTERN JOBREL,JOBSYM,JOBDDT,JOBFF,JOBAPR,JOBSA\r
+IFN CCLSW,<    EXTERN  JOBERR>\r
+\r
+       SALL            ;SUPPRESS ALL MACROS\r
+\r
+;SOME ASCII CHARACTERS\r
+\r
+HT==11\r
+LF==12\r
+VT==13\r
+FF==14\r
+CR==15\r
+EOL==33\r
+\f                      ;ACCUMULATORS\r
+AC0==  0\r
+AC1=   AC0+1\r
+AC2=   AC1+1\r
+SDEL=  3               ;SEARCH INCREMENT\r
+SX=    SDEL+1          ;SEARCH INDEX\r
+ARG=   5               ;ARGUMENT\r
+V=     6               ;VALUE\r
+C=     7               ;CURRENT CHARACTER\r
+CS=    C+1             ;CHARACTER STATUS BITS\r
+RC=    11              ;RELOCATION BITS\r
+MWP=   12              ;MACRO WRITE POINTER\r
+MRP=   13              ;MACRO READ POINTER\r
+IO=    14              ;IO REGISTER (LEFT)\r
+ER==   IO              ;ERROR REGISTER (RIGHT)\r
+FR=    15              ;FLAG REGISTER (LEFT)\r
+RX==   FR              ;CURRENT RADIX (RIGHT)\r
+MP=    16              ;MACRO PUSHDOWN POINTER\r
+PP=    17              ;BASIC PUSHDOWN POINTER\r
+\r
+%OP==  3\r
+%MAC== 5\r
+%DSYM==        2\r
+%SYM== 1\r
+%DMAC==        %MAC+1\r
+\r
+OPDEF  RESET   [CALLI   0]\r
+OPDEF  SETDDT  [CALLI   2]\r
+OPDEF  DDTOUT  [CALLI   3]\r
+OPDEF  DEVCHR  [CALLI   4]\r
+OPDEF  WAIT    [MTAPE   0]\r
+OPDEF  CORE    [CALLI  11]\r
+OPDEF  EXIT    [CALLI  12]\r
+OPDEF  UTPCLR  [CALLI  13]\r
+OPDEF  DATE    [CALLI  14]\r
+OPDEF  APRENB  [CALLI  16]\r
+OPDEF  MSTIME  [CALLI  23]\r
+OPDEF  PJOB    [CALLI  30]\r
+OPDEF  RUN     [CALLI  35]\r
+OPDEF  TMPCOR  [CALLI  44]\r
+\r
+\f                      ;FR  FLAG REGISTER (FR/RX)\r
+IOSCR== 000001         ;NO CR AFTER LINE\r
+MTAPSW==000004         ;MAG TAPE\r
+ERRQSW==000010         ;IGNORE Q ERRORS\r
+LOADSW==000020         ;END OF PASS1 & NO EOF YET\r
+DCFSW==        000040          ;DECIMAL FRACTION\r
+RIM1SW==000100         ;RIM10 MODE\r
+NEGSW==        000200          ;NEGATIVE ATOM\r
+RIMSW==        000400          ;RIM OUTPUT\r
+PNCHSW==001000         ;RIM/BIN OUTPUT WANTED\r
+CREFSW==002000\r
+R1BSW== 004000         ;RIM10 BINARY OUTPUT\r
+TMPSW==        010000          ;EVALUATE CURRENT ATOM\r
+INDSW==        020000          ;INDIRECT ADDRESSING WANTED\r
+RADXSW==040000         ;RADIX ERROR SWITCH\r
+FSNSW== 100000         ;NON BLANK FIELD SEEN\r
+MWLFLG==200000         ;ON FOR DON'T ALLOW MULTI-WORD LITERALS\r
+P1==   400000          ;PASS1\r
+\r
+                       ;IO FLAG REGISTER (IO/ER)\r
+FLDSW==        400000          ;ADDRESS FIELD\r
+IOMSTR==200000\r
+ARPGSW==100000         ;ALLOW RAPID PROGRAM GENERATION\r
+IOPROG==040000         ;SUPRESS LISTING (LIST/XLIST PSEUDO OP)\r
+NUMSW==        020000\r
+IOMAC==        010000          ;MACRO EXPANSION IN PROGRESS\r
+IOPALL==004000         ;SUPRESS LISTING OF MACRO EXPANSIONS\r
+IONCRF==002000         ;SUPRESS OUTPUT OF CREF INFORMATION\r
+CRPGSW==001000         ;CURRENTLY IN PROGRESS ON RPG\r
+IOCREF==000400         ;WE ARE NOW OUTPUTTING CREF INFO\r
+IOENDL==000200         ;BEEN TO STOUT\r
+IOPAGE==000100\r
+DEFCRS==000040         ;THIS IS A DEFINING OCCURANCE (MACROS)\r
+IOIOPF==000020         ;IOP INSTRUCTION SEEN\r
+MFLSW== 000010         ;MULTI-FILE MODE,PRGEND SEEN\r
+IORPTC==000004         ;REPEAT CURRENT CHARACTER\r
+IOTLSN==000002         ;TITLE SEEN\r
+IOSALL==000001         ;SUPPRESS MACRO LISTING EVEN IF BINARY IS GENERATED\r
+\r
+OPDEF  JUMP1   [JUMPL  FR,  ]  ;JUMP IF PASS 1\r
+OPDEF  JUMP2   [JUMPGE FR,  ]  ;JUMP IF PASS 2\r
+\r
+OPDEF  JUMPOC  [JUMPGE IO,  ]  ;JUMP IF IN OP-CODE FIELD\r
+OPDEF  JUMPAD  [JUMPL  IO,  ]  ;JUMP IF IN ADDRESS FIELD\r
+\r
+OPDEF  JUMPCM  [JUMPL  CS,  ]  ;JUMP IF CURRENT CHAR IS COMMA\r
+OPDEF  JUMPNC  [JUMPGE CS,  ]  ;JUMP IF CURRENT CHAR IS NON-COMMA\r
+\r
+\f                      ;ER ERROR REGISTERS (IO/ER)\r
+ERRM== 000020          ;MULTIPLY DEFINED SYMBOL\r
+ERRE== 000040          ;ILLEGAL USE OF EXTERNAL\r
+ERRP== 000100          ;PHASE DISCREPANCY\r
+ERRO== 000200          ;UNDEFINED OP CODE\r
+ERRN== 000400          ;NUMBER ERROR\r
+ERRV== 001000          ;VALUE PREVIOUSLY UNDEFINED\r
+ERRU== 002000          ;UNDEFINED SYMBOL\r
+ERRR== 004000          ;RELOCATION ERROR\r
+ERRL== 010000          ;LITERAL ERROR\r
+ERRD== 020000          ;REFERENCE TO MULTIPLY DEFINED SYMBOL\r
+ERRA== 040000          ;PECULIAR ARGUMENT\r
+ERRX== 100000          ;MACRO DEFINITION ERROR\r
+ERRQ== 200000          ;QUESTIONABLE, NON-FATAL ERROR\r
+ERRORS==777760\r
+LPTSW==        000002\r
+TTYSW==        000001\r
+\r
+                       ;SYMBOL TABLE FLAGS\r
+SYMF== 400000          ;SYMBOL\r
+TAGF== 200000          ;TAG\r
+NOOUTF==100000         ;NO DDT OUTPUT WFW\r
+SYNF== 040000          ;SYNONYM\r
+MACF== SYNF_-1         ;MACRO\r
+OPDF== SYNF_-2         ;OPDEF\r
+PNTF== 004000          ;"VALUE" IN SYMBOL TBL IS PNTR TO 36BIT VALUE\r
+UNDF== 002000          ;UNDEFINED\r
+EXTF== 001000          ;EXTERNAL\r
+INTF== 000400          ;INTERNAL\r
+ENTF== 000200          ;ENTRY\r
+VARF== 000100          ;VARIABLE\r
+MDFF== 000020          ;MULTIPLY DEFINED\r
+SPTR== 000010          ;SPECIAL EXTERNAL POINTER\r
+SUPRBT==000004         ;SUPRESS OUTPUT TO DDT\r
+LELF== 000002          ;LEFT HAND RELOCATABLE\r
+RELF== 000001          ;RIGHT HAND RELOCATABLE\r
+\r
+LITF==  200000         ;FLAG FOR PSEUDO-OPS INVALID IN LIT'S\r
+ADDF==  100000         ;FLAG FOR PSEUDO-OPS INVALID IN ADDRESSES\r
+\r
+TNODE==        200000          ;TERMINAL NODE FOR EVALEX\r
+\fSUBTTL        RUN UUO\r
+\r
+IFN CCLSW,<\r
+;THIS CODE MUST BE IN FIRST 1K TO ALLOW MAXIMUM SPACE\r
+; FOR OVERWRITING\r
+; 74 APPEARS BECAUSE ONLY LOCS 74 AND BEYOND ARE SAVED BY "SAVE"\r
+\r
+IFN CCLSW,<NUNCOM:     IOWD    0,INHERE        ;WHERE TO DO IO\r
+       0                       ;TERMINATE COMMAND LIST\r
+NUNGO2:        IN      BIN,NUNCOM      ;READ FILE\r
+       JRST    NUNGO3          ;THERE ARE NO ERRORS\r
+NUNERR:        DDTOUT  NUNPNT,         ;COMPLAIN\r
+       EXIT                    ;GIVE UP\r
+NUNERM:        ASCIZ   /?LINKAGE ERROR/\r
+NUNGO3:        SKIPE   12,INHERE+133-74 ;LOOK AT JOBCOR\r
+                               ;DOES JOB WANT TO RUN IN MORE CORE?\r
+       CAMG    12,JOBREL       ;MORE CORE THAN CURRENTLY USED?\r
+       JRST    NUNGO4          ;NO, GO BLT PROG\r
+       CORE    12,             ;ASK FOR MORE CORE\r
+       JRST    NUNERR          ;NOT AVAILABLE\r
+       JRST    NUNGO4          ;GO BLT PROGRAM\r
+INHERE:\r
+\f;THIS CODE MUST BE IN FIRST 1K\r
+NUNSET:        JUMPN   ACDEV,.+2               ;DEVICE SPECIFIED?\r
+       MOVSI   ACDEV,(SIXBIT /SYS/)    ;NO, USE SYSTEM DEVICE\r
+       JUMPN   ACEXT,.+2               ;EXT SPECIFIED?\r
+       MOVSI   ACEXT,(SIXBIT /SAV/)    ;NO, USE "SAV"\r
+       MOVEM   ACDEV,NUNDEV            ;DEVICE NAME TO USE\r
+       OPEN    BIN,NUNINI              ;INIT THE DEVICE\r
+       JRST    EINIT                   ;ERROR\r
+       MOVEM   ACFILE,NUNDIR           ;IS THE FILE AVAILABLE?\r
+       HLLZM   ACEXT,NUNDIR+1          ;STASH EXTENSION\r
+       SETZM   NUNDIR+3                ;CLEAR PPN\r
+       LOOKUP  BIN,NUNDIR              ;LOOK FOR FILE\r
+       JRST    [HLRZ   ACEXT,NUNDIR+1          ;WAS EXTENSION "SAV"?\r
+               CAIE    ACEXT,(SIXBIT /SAV/)    ;...\r
+               JRST    ERRCF                   ;GO COMPLAIN\r
+               MOVSI   ACEXT,(SIXBIT /DMP/)    ;TRY "DMP" EXTENSION\r
+               JRST    .-3     ]               ;TRA -3,4\r
+       PUSHJ PP,DELETE         ;COMMAND FILE\r
+       MOVE 15,NUNDIR          ;GET THE NAME\r
+       CALLI 15,43     ;TELL SYSTEM "SETNAM"\r
+       HLRO    15,NUNDIR+3     ;GET WORD COUNT\r
+       HRLM    15,NUNCOM       ;STASH COUNT\r
+       MOVNS   15              ;NEGATIVE COUNT\r
+       MOVEI   16,73(15)       ;WHERE TO STOP BLT\r
+       ADDI    15,INHERE       ;HOW BIG TO MAKE CORE\r
+       IORI    15,1777         ;AN EVEN MULTIPLE OF 1K\r
+       CORE    15,             ;ASK TS EXEC FOR CORE\r
+       JRST    [HRROI RC,[SIXBIT /NOT ENUF CORE FOR LINKAGE@/]\r
+               JRST ERRFIN     ];GO COMPLAIN\r
+       MOVSI   NUNTOP,NUNAC\r
+       BLT     NUNTOP,NUNTOP   ;SET ACS\r
+       HRR     NUNBLT,16       ;...\r
+       TLNN    IO,CRPGSW       ;WAS RPG IN PROGRESS?\r
+       TLZ     NUNAOS,577000   ;NO, DON'T MAKE NEXT AN RPG\r
+       JRST    NUNGO2\r
+\r
+NUNAC: PHASE   0\r
+NUNGO4:        MOVE    NUNLAC,INHERE+74-74     ;SETUP FOR NEW DDT\r
+       SETDDT  NUNLAC,         ;...\r
+INTERN JOBS41\r
+JOBS41=122             ;LOADER WILL GIVE MUL. DEF. GLOBAL IF CHANGED\r
+\r
+EXTERN JOB41\r
+       MOVE    NUNLAC,JOBS41+INHERE-74 ;RESTORE LOC 41\r
+       MOVEM   NUNLAC,JOB41    ;...\r
+NUNBLT:        BLT     NUNTOP,.-.      ;MOVE PRGM TO WHERE IT BELONGS\r
+       RESET                   ;RESET ALL I/O\r
+NUNAOS:        AOS     1,JOBSA         ;GET STARTING ADDR FOR RPG\r
+       JRST    0(1)            ;GET ON WITH THE GAME\r
+NUNPNT:        NUNERM                  ;ERROR MESSAGE POINTER\r
+NUNTOP:        XWD     INHERE+1,75\r
+NUNLAC=.\r
+       DEPHASE\r
+>   \r
+       LIST\r
+\r
+\fDELETE:       HRRZ    EXTMP           ;IF THE EXTENSION\r
+       CAIE    (SIXBIT/TMP/)   ;IS  .TMP\r
+       POPJ    PP,             ;RETURN.\r
+       CLOSE   CTL2,           ;DELETE\r
+       SETZB   4,5             ;THE COMMAND FILE.\r
+       SETZB   6,7\r
+       RENAME  CTL2,4          ;\r
+       JFCL\r
+       POPJ    PP,\r
+>\r
+\fSUBTTL        START ASSEMBLING\r
+\r
+ASSEMB:        PUSHJ   PP,INZ          ;INITIALIZE FOR PASS\r
+       MOVE    [ASCII /.MAIN/]\r
+       MOVEM   TBUF\r
+       MOVEI   SBUF\r
+       HRRM    SUBTTX\r
+\r
+ASSEM1:        PUSHJ   PP,CHARAC       ;TEST FOR FORM FEED\r
+       SKIPGE  LIMBO           ;CRLF FLAG?\r
+       JRST    ASSEM1          ;YES ,IGNORE LF\r
+       CAIN    C,14\r
+       SKIPE   SEQNO\r
+       JRST    ASSEM2\r
+       PUSHJ   PP,OUTFF1\r
+       PUSHJ   PP,OUTLI\r
+       JRST    ASSEM1\r
+\r
+ASSEM2:        AOS     TAGINC\r
+       CAIN    C,"\"           ;BACK-SLASH?\r
+       TLZA    IO,IOMAC        ;YES, LIST IF IN MACRO\r
+       TLO     IO,IORPTC\r
+       PUSHJ   PP,STMNT        ;OFF WE GO\r
+       TLZN    IO,IOENDL       ;WAS STOUT PRE-EMPTED?\r
+       PUSHJ   PP,STOUT        ;NO, POLISH OFF LINE\r
+       JRST    ASSEM1\r
+\r
+\fSUBTTL        STATEMENT PROCESSOR\r
+\r
+STMNT: TLZ     FR,INDSW!FSNSW\r
+       TLZA    IO,FLDSW\r
+STMNT1:        PUSHJ   PP,LABEL\r
+STMNT2:        PUSHJ   PP,ATOM         ;GET THE FIRST ATOM\r
+       CAIN    C,35            ;"="?\r
+       JRST    ASSIGN          ;YES\r
+       CAIN    C,32            ;":"?\r
+       JRST    STMNT1          ;YES\r
+       JUMPAD  STMNT7          ;NUMERIC EXPRESSION\r
+       JUMPN   AC0,STMN2A      ;JUMP IF NON NULL FIELD\r
+       SKIPN   LITLVL          ;ALLOW COMMA IN LITERALS\r
+       CAIE    C,14            ;NULL, COMMA?\r
+       CAIN    C,EOL           ;OR END OF LINE?\r
+       POPJ    PP,             ;YES,EXIT\r
+       CAIN    C,"]"           ;CLOSING LITERAL?\r
+       POPJ    PP,             ;YES\r
+       JRST    STMNT9          ;NO,AT LEAST SKIP ALL THIS NONSENSE\r
+\r
+STMN2A:        JUMPE   C,.+2\r
+       TLO     IO,IORPTC\r
+       PUSHJ   PP,MSRCH        ;SEARCH FOR MACRO/OPDEF/SYN\r
+       JRST    STMNT3          ;NOT FOUND, TRY OP CODE\r
+       LDB     SDEL,[POINT 3,ARG,5]\r
+       JUMPE   SDEL,ERRAX      ;ERROR IF NO FLAGS\r
+       SOJE    SDEL,OPD1       ;OPDEF IF 1\r
+       SOJE    SDEL,CALLM      ;MACRO IF 2\r
+       JRST    STMNT4          ;SYNONYM, PROCESS WITH OP-CODES\r
+\r
+STMNT3:        PUSHJ   PP,OPTSCH       ;SEARCH OP CODE TABLE\r
+       JRST    STMNT5          ;NOT FOUND\r
+STMNT4:        HLLZ    AC0,V           ;PUT CODE IN AC0\r
+       TRZ     V,ADDF          ;CLEAR ADDRESS NON-VALID FLAG\r
+       TRZE    V,LITF          ;VALID IN LITERAL?\r
+       SKIPN   LITLVL          ;NO, ARE WE IN A LITERAL?\r
+       JRST    0(V)            ;NO, GO TO APPROPRIATE PROCESSOR\r
+       POPJ    PP,             ;YES,EXIT\r
+\r
+STMNT5:        PUSHJ   PP,SSRCH        ;TRY SYMBOLS\r
+       JRST    STMNT8          ;NOT FOUND\r
+       TLNE    ARG,EXTF!UNDF   ;EXTERNAL OR UNDEFINED?\r
+       JRST    STMNT7          ;YES, PROCESS IN EVALEX\r
+       TLNN RC,-2              ;CHECK FOR EXTERNAL\r
+       TRNE RC,-2\r
+       JRST STMNT7\r
+       MOVE    AC0,V           ;FOUND, PUT VALUE IN AC0\r
+       TLO     IO,NUMSW        ;FLAG AS NUMERIC\r
+STMNT7:        TLZ     IO,IORPTC\r
+STMNT9:        PUSHJ   PP,EVALHA       ;EVALUATE EXPRESSION\r
+       TLNE    FR,FSNSW        ;FIELD SEEN?\r
+       JRST    STOW            ;YES,STOW THE CODE AND EXIT\r
+       CAIE    C,"]"-40        ;CLOSING LITERAL?\r
+       TRO     ER,ERRQ         ;NO, GIVE "Q" ERROR\r
+       POPJ    PP,             ;EXIT\r
+\r
+\fSTMNT8:repeat 0,<MOVEI        V,0             ;ALWAYS START SCAN WITH 0\r
+       CAIL    V,CALNTH        ;END OF TABLE?\r
+       JRST    STMN8C          ;YES, TRY TTCALLS\r
+       CAME    AC0,CALTBL(V)   ;FOUND IT?\r
+       AOJA    V,.-3           ;NO,TRY AGAIN\r
+       SUBI    V,NEGCAL        ;CALLI'S START AT -1\r
+       HRLI    V,(CALLI)       ;PUT IN UUO>\r
+STMN8D:        MOVSI   ARG,OPDF        ;SET FLAG FOR OPDEF\r
+STMN8B:        PUSHJ   PP,INSERT       ;PUT OPDEF IN TABLE\r
+       JRST    OPD             ;AND TREAT AS OPDEF\r
+\r
+STMN8C:        SETZ    V,              ;START WITH ZERO\r
+       CAIL    V,TTCLTH        ;END OF TABLE?\r
+       JRST    STMN8A          ;YES, ERROR\r
+       CAME    AC0,TTCTBL(V)   ;MATCH?\r
+       AOJA    V,.-3           ;NO, KEEP TRYING\r
+       LSH     V,5             ;PUT IN AC FIELD (RIGHT HALF)\r
+       HRLZI   V,<(TTCALL)>(V) ;PUT UUO IN LEFT HALF\r
+       JRST    STMN8D          ;SET OPDEF FLAG\r
+\r
+STMN8A:        SETZB   V,RC            ;CLEAR VALUE AND RELOCATION\r
+       TRO     ER,ERRO         ;FLAG AS UNDEFINED OP-CODE\r
+       JUMP1   OPD             ;TREAT AS STANDARD OP ON PASS1\r
+       MOVSI   ARG,OPDF!UNDF!EXTF      ;SET A FEW FLAGS\r
+       JRST    STMN8B          ;TO FORCE OUT A MESSAGE\r
+\r
+               ;STATEMENT OUT PASSES REMAINDER OF LINE (CMNT)\r
+                       ;UNTIL A LINE TERMINATOR IS SEEN.\r
+STOUTS:        TLOA    IO,IOENDL!IORPTC\r
+STOUT: TLO     IO,IORPTC\r
+       PUSHJ   PP,BYPAS1\r
+       CAIN    C,14            ;COMMA?\r
+       SKIPL   STPX            ;YES, ERROR IF CODE STORED\r
+       CAIN    C,EOL\r
+       TLOA    IO,IORPTC\r
+       TRO     ER,ERRQ\r
+STOUT1:        PUSHJ   PP,CHARAC\r
+       CAIG    C,CR\r
+       CAIG    C,HT\r
+       JRST    STOUT1\r
+       JRST    OUTLIN          ;OUTPUT THE LINE (BIN AND LST)\r
+\f      SUBTTL  LABEL PROCESSOR\r
+       \r
+LABEL: JUMPAD  LABEL4          ;COMPARE IF NON-SYMBOLIC\r
+       JUMPE   AC0,LABEL5      ;ERROR IF BLANK\r
+       TLO IO,DEFCRS           ;THIS IS A DEFINITION\r
+       PUSHJ   PP,SSRCH        ;SEARCH FOR OPERAND\r
+       MOVSI   ARG,SYMF!UNDF!TAGF      ;NOT FOUND\r
+       TLNN    ARG,EXTF        ;OPERAND FOUND (SKIP EXIT)\r
+       JRST    LABEL0\r
+       JUMP1   LABEL3          ;ERROR ON PASS1\r
+       TLNN    ARG,UNDF        ;UNDEFINED ON PASS1\r
+       JRST    LABEL3          ;NO, FLAG ERROR\r
+       TLZ     ARG,EXTF!PNTF   ;TURN OFF EXT FLAG NOW\r
+LABEL0:        TLZN    ARG,UNDF!VARF   ;WAS IT PREVIOUSLY DEFINED?\r
+       JRST    LABEL2          ;YES, CHECK EQUALITY\r
+       MOVE    V,LOCA  ;WFW\r
+       MOVE    RC,MODA\r
+       TLO     ARG,TAGF\r
+       PUSHJ   PP,PEEK         ;GET NEXT CHAR.\r
+       CAIE    C,":"           ;SPECIAL CHECK FOR  ::\r
+       JRST    LABEL1          ;NO MATCH\r
+       TLO     ARG,INTF        ;MAKE IT INTERNAL\r
+       PUSHJ   PP,GETCHR       ;PROCESS NEXT CHAR.\r
+       PUSHJ   PP,PEEK         ;PREVIEW NEXT CHAR.\r
+LABEL1:        CAIE    C,"!"           ;HALF-KILL SIGN\r
+       JRST    LABEL6          ;NO\r
+       TLO     ARG,NOOUTF      ;YES, SUPPRESS IT\r
+       PUSHJ   PP,GETCHR       ;AND GET RID OF IT\r
+LABEL6:        MOVEM   AC0,TAG         ;SAVE FOR PASS 1 ERRORS\r
+       HLLZS   TAGINC          ;ZERO INCREMENT\r
+       JRST    INSERT          ;INSERT/UPDATE AND EXIT\r
+\r
+LABEL2:        HRLOM   V,LOCBLK        ;SAVE LIST LOCATION\r
+       CAMN    V,LOCA          ;DOES IT COMPARE WITH PREVIOUS? WFW\r
+       CAME    RC,MODA\r
+LABEL3:        TLOA    ARG,MDFF        ;NO, FLAG MULTIPLY DEFINED AND SKIP\r
+       JRST    LABEL7          ;YES, GET RID OF EXTRA CHARS.\r
+       TRO     ER,ERRM         ;FLAG MULTIPLY DEFINED ERROR \r
+       JRST    UPDATE          ;UPDATE AND EXIT\r
+\r
+LABEL4:        CAMN    AC0,LOCA        ;DO THEY COMPARE?\r
+       CAME    RC,MODA\r
+LABEL5:        TRO     ER,ERRP         ;NO, FLAG PHASE ERROR\r
+       POPJ    PP,\r
+\r
+LABEL7:        SKIPE   LITLVL          ;LABEL IN A LITERAL?\r
+       MOVEM   AC0,LITLBL      ;YES, SAVE LABEL NAME FOR LATER\r
+       PUSHJ   PP,PEEK         ;INSPECT A CHAR.\r
+       CAIN    C,":"           ;COLON?\r
+       PUSHJ   PP,GETCHR       ;YES, DISPOSE OF IT\r
+       PUSHJ   PP,PEEK         ;EXAMINE ONE MORE CHAR.\r
+       CAIN    C,"!"           ;EXCLAMATION?\r
+       JRST    GETCHR          ;YES, INDEED\r
+\f      POPJ    PP,\r
+\fSUBTTL        ATOM PROCESSOR\r
+ATOM:  PUSHJ   PP,CELL         ;GET FIRST CELL\r
+       TLNE    IO,NUMSW        ;IF NON-NUMERIC\r
+ATOM1: CAIE    C,42            ;OR NOT A BINARY SHIFT,\r
+       POPJ    PP,             ;EXIT\r
+\r
+       PUSH    PP,AC0          ;STACK REGISTERS, ITS A BINARY SHIFT\r
+       PUSH    PP,AC1\r
+       PUSH    PP,RC\r
+       PUSH    PP,RX\r
+       HRRI    RX,^D10         ;COMPUTE SHIFT RADIX 10\r
+       PUSHJ   PP,CELLSF       ;GET SHIFT\r
+       MOVE    ARG,RC          ;SAVE RELOCATION\r
+       POP     PP,RX           ;RESTORE REGISTERS\r
+       POP     PP,RC\r
+       POP     PP,AC1\r
+       MOVN    SX,AC0          ;USE NEGATIVE OF SHIFT\r
+       POP     PP,AC0\r
+       JUMPN   ARG,NUMER2      ;IF NOT ABSOLUTE\r
+       TLNN    IO,NUMSW        ;AND NUMERIC,\r
+       JRST    NUMER2          ;FLAG ERROR\r
+       LSHC    AC0,^D35(SX)\r
+       LSH     RC,^D35(SX)\r
+       JRST    ATOM1           ;TEST FOR ANOTHER\r
+\fCELLSF:       TLO     IO,FLDSW\r
+CELL:  SETZB   AC0,RC          ;CLEAR RESULT AND RELOCATION\r
+       SETZB   AC1,AC2         ;CLEAR WORK REGISTERS\r
+       MOVEM   PP,PPTEMP       ;SAVE PUSHDOWN POINTER\r
+       TLZ     IO,NUMSW\r
+       TLZA    FR,NEGSW!DCFSW!RADXSW\r
+\r
+CELL1: TLO     IO,FLDSW\r
+       PUSHJ   PP,BYPASS\r
+       LDB     V,[POINT 4,CSTAT(C),14] ;GET CODE\r
+       XCT     .+1(V)          ;EXECUTE, INDEX VIA BITS 11,12,13,14 OF CSTAT TABLE\r
+       JRST    CELL1           ;0; BLANK, (TAB OR "+")\r
+       JRST    LETTER          ;1; LETTER  ] $ % ( ) , ; >\r
+       TLC     FR,NEGSW        ;2; "-"\r
+       TLO     FR,INDSW        ;3; "@"\r
+       JRST    NUM1            ;4; NUMERIC   0 - 9\r
+       JRST    ANGLB           ;5; "<"\r
+       JRST    SQBRK           ;6; "["\r
+       JRST    QUOTES          ;7; ""","'" \r
+       JRST    QUAL            ;10; "^"\r
+       JRST    PERIOD          ;11; "."\r
+       TROA    ER,ERRQ         ;12; ERROR, FLAG AND TREAT AS DELIMITER\r
+                               ;12;    ! # & * / : = ? \ _\r
+\fLETTER:       TLOA    AC2,(POINT 6,AC0,)      ;SET BYTE POINTER\r
+LETTE1:        PUSHJ   PP,GETCHR       ;GET CHARACTER\r
+       TLNN    CS,6            ;ALPHA-NUMERIC?\r
+       JRST    LETTE3          ;NO,TEST FOR VARIABLE\r
+       TLNE    AC2,770000      ;STORE ONLY SIX BYTES\r
+LETTE2:        IDPB    C,AC2           ;RETURN FROM PERIOD\r
+       JRST    LETTE1\r
+\r
+LETTE3:        CAIE    C,03            ;"#"?\r
+       POPJ    PP,\r
+       JUMPE   AC0,POPOUT      ;TEST FOR NULL\r
+       PUSHJ   PP,PEEK         ;PEEK AT NEXT CHAR.\r
+       CAIN    C,"#"           ;IS IT 2ND #?\r
+       JRST    LETTE4          ;YES, THEN IT'S AN EXTERN\r
+       TLO     IO,DEFCRS\r
+       PUSHJ   PP,SSRCH        ;YES, SEARCH FOR SYMBOL (OPERAND)\r
+       MOVSI   ARG,SYMF!UNDF   ;NOT FOUND, FLAGAS UNDEFINED SYM.\r
+       TLNN    ARG,UNDF        ;UNDEFINED?\r
+       JRST    GETCHR          ;NO, GET NEXT CHAR AND RETURN\r
+       TLO     ARG,VARF        ;YES, FLAG AS A VARIABLE\r
+       TRO     ER,ERRU         ;SET UNDEFINED ERROR FLAG\r
+       PUSHJ   PP,INSERZ       ;INSERT IT WITH A ZERO VALUE\r
+       JRST    GETDEL\r
+\r
+LETTE4:        PUSHJ   PP,GETCHR       ;AND SCAN PAST IT\r
+       PUSHJ   PP,GETCHR       ;GET RID OF #\r
+       JRST    EXTER1          ;PUT IN SYMBOL TABLE\r
+\r
+NUMER1:        SETZB   AC0,RC          ;RETURN ZERO\r
+NUMER2:        TRO     ER,ERRN         ;FLAG ERROR\r
+\r
+GETDEL:        PUSHJ   PP,BYPASS\r
+GETDE1:        JUMPE   C,.-1\r
+       MOVEI   AC1,0\r
+GETDE3:        TLO     IO,NUMSW!FLDSW  ;FLAG NUMERIC\r
+       TLNN    FR,NEGSW        ;IS ATOM NEGATIVE?\r
+       POPJ    PP,             ;NO, EXIT\r
+       JUMPE   AC1,GETDE2\r
+       MOVNS   AC1\r
+       TDCA    AC0,[-1]\r
+GETDE2:        MOVNS   AC0             ;YES, NEGATE VALUE\r
+       MOVNS   RC              ;AND RELOCATION\r
+POPOUT:        POPJ    PP,             ;EXIT\r
+\fQUOTES:       CAIE    C,"'"-40        ;IS IT  "'"\r
+       JRST    QUOTE           ;NO MUST BE """\r
+       JRST    SQUOTE          ;YES\r
+\r
+QUOTE0:        TLNE    AC0,376000      ;5 CHARACTERS STORED ALREADY?\r
+       TRO     ER,ERRQ         ;YES, GIVE WARNING\r
+       ASH     AC0,7\r
+       IOR     AC0,C\r
+QUOTE: PUSHJ   PP,CHARAC       ;GET 7-BIT ASCII\r
+       CAIG    C,15            ;TEST FOR LF, VT, FF OR CR\r
+       CAIGE   C,12\r
+       JRST    .+2             ;NO, SO ALL IS WELL\r
+       JRST    QUOTE2          ;ESCAPE WITH Q ERROR\r
+       CAIE    C,42\r
+       JRST    QUOTE0\r
+       PUSHJ   PP,PEEK         ;LOOK AT NEXT CHAR.\r
+       CAIE    C,42\r
+       JRST    QUOTE1          ;RESTORE REPEAT LEVEL AND QUIT\r
+       PUSHJ   PP,CHARAC       ;GET NEXT CHAR.\r
+       JRST    QUOTE0          ;USE IT\r
+\r
+QUOTE2:        TRO     ER,ERRQ         ;SET Q ERROR\r
+QUOTE1:        JRST    GETDEL\r
+\r
+SQUOT0:        TLNE    AC0,770000      ;SIX CHARS. STORED ALREADY ?\r
+       TRO     ER,ERRQ         ;YES\r
+       LSH     AC0,6\r
+       IORI    AC0,-40(C)      ;OR IN SIXBIT CHAR.\r
+\r
+SQUOTE:        PUSHJ   PP,CHARAC\r
+       CAIG    C,CR\r
+       CAIGE   C,LF\r
+       JRST    .+2\r
+       JRST    QUOTE1\r
+       CAIE    C,"'"\r
+       JRST    SQUOT0\r
+       PUSHJ   PP,PEEK\r
+       CAIE    C,"'"\r
+       JRST    QUOTE1\r
+       PUSHJ   PP,CHARAC\r
+       JRST    SQUOT0\r
+\r
+\fQUAL: PUSHJ   PP,BYPAS1       ;SKIP BLANKS, GET NEXT CHARACTER\r
+       CAIN    C,42            ;"B"?\r
+       JRST    QUAL2           ;YES, RADIX=D2\r
+       CAIN    C,57            ;"O"?\r
+       JRST    QUAL8           ;YES, RADIX=D8\r
+       CAIN    C,46            ;"F"?\r
+       JRST    NUMDF           ;YES, PROCESS DECIMAL FRACTION\r
+       CAIN    C,54            ;"L"?\r
+       JRST    QUALL           ;YES\r
+       CAIE    C,44            ;"D"?\r
+       JRST    NUMER1          ;NO, FLAG NUMERIC ERROR\r
+       ADDI    AC2,2\r
+QUAL8: ADDI    AC2,6\r
+QUAL2: ADDI    AC2,2\r
+       PUSH    PP,RX\r
+       HRR     RX,AC2\r
+       PUSHJ   PP,CELLSF\r
+QUAL2A:        POP     PP,RX\r
+       TLNN    IO,NUMSW\r
+       JRST    NUMER1\r
+       JRST    GETDE1\r
+\r
+QUALL: PUSH    PP,FR\r
+       PUSHJ   PP,CELLSF\r
+       MOVE    AC2,AC0\r
+       MOVEI   AC0,^D36\r
+       JUMPE   AC2,QUAL2A\r
+       LSH     AC2,-1\r
+       SOJA    AC0,.-2\r
+\fSUBTTL        LITERAL PROCESSOR\r
+\r
+SQBRK: PUSH    PP,FR\r
+       PUSH    PP,EXTPNT       ;ALLOW EXTERN TO PRECEDE LIT IN XWD\r
+       SETZM   EXTPNT\r
+       SKIPE LITLVL    ;SAVE SEQNO AND PAGE IF NOT IN LIT ALREADY\r
+       JRST SQB5\r
+       MOVE C,SEQNO2\r
+       MOVEM C,LITSEQ\r
+       MOVE C,PAGENO\r
+       MOVEM C,LITPG\r
+SQB5:  JSP     AC2,SVSTOW\r
+SQB3:  PUSHJ   PP,STMNT\r
+       CAIN C,75       ;CHECK FOR ]\r
+       JRST SQB1\r
+       TLO IO,IORPTC\r
+       TLNE    FR,MWLFLG       ;CALL IT ] IF NOT MULTI-WORD FLAG\r
+       JRST    SQB2            ;BUT REPEAT LAST CHARACTER\r
+       PUSHJ PP,BYPAS1\r
+       CAIN C,EOL\r
+       TLOA IO,IORPTC\r
+       TRO ER,ERRQ\r
+SQB4:  PUSHJ PP,CHARAC\r
+       CAIN    C,";"           ;COMMENT?\r
+       JRST    SQB6            ;YES, IGNORE SQUARE BRACKETS\r
+       CAIN    C,"]"           ;LOOK FOR TERMINAL SQB\r
+       TRNN    ER,ERRORS       ;IN CASE OF ERROR IN LITERAL\r
+       JRST    .+2             ;NO ALL IS WELL\r
+       JRST    SQB1            ;FINISH THE LITERAL NOW!!\r
+       CAIG    C,CR            ;LOOK FOR END OF LINE\r
+       CAIN    C,HT\r
+       JRST    SQB4\r
+SQB4A: PUSHJ   PP,OUTIML       ;DUMP\r
+       PUSHJ   PP,CHARAC       ;GET ANOTHER CHAR.\r
+       SKIPL   LIMBO           ;CRLF FLAG\r
+       TLO     IO,IORPTC       ;NO REPEAT\r
+       JRST    SQB3\r
+\r
+SQB6:  PUSHJ   PP,CHARAC       ;GET A CHARACTER\r
+       CAIG    C,CR\r
+       CAIN    C,HT            ;LOOK FOR END OF LINE CHAR.\r
+       JRST    SQB6            ;NOT YET\r
+       JRST    SQB4A           ;GOT IT\r
+\r
+SQB1:  TLZ     IO,IORPTC\r
+SQB2:  PUSHJ   PP,STOLIT\r
+       JSP     AC2,GTSTOW\r
+       SKIPE   LITLBL          ;NEED TO FIXUP A LABEL?\r
+       PUSHJ   PP,RELBLE       ;YES, USE LOC OF LITERAL\r
+       POP     PP,EXTPNT\r
+       POP     PP,FR\r
+       SKIPE   LITLVL          ;WERE WE NESTED?\r
+       JUMP1   NUMER2          ;YES, FORCE ERROR IF PASS 1\r
+       JRST    GETDEL\r
+\r
+RELBLE:        PUSH    PP,AC0          ;SAVE LOCATION COUNTER\r
+       PUSH    PP,RC           ;AND RELOCATION\r
+       MOVE    AC0,LITLBL      ;SYMBOL WE NEED\r
+       SETZM   LITLBL          ;ZERO INDICATOR\r
+       PUSHJ   PP,SSRCH        ;SEARCH FOR OPERAND\r
+       JRST    RELBL1          ;SHOULD NEVER HAPPEN\r
+       TLNN    ARG,TAGF        ;IT BETTER BE A LABEL\r
+       JRST    RELBL1          ;IT WASN'T , GIVE UP BEFORE SOME HARM IS DONE\r
+       TLZ     ARG,UNDF!EXTF!PNTF      ;CLEAR FLAGS NOW\r
+       POP     PP,RC           ;GET LITERAL RELOCATION\r
+       MOVE    V,(PP)          ;GET VALUE (LOC COUNTER)\r
+       PUSHJ   PP,UPDATE       ;UPDATE VALUE\r
+       POP     PP,AC0          ;RESTORE LITERAL COUNT\r
+       POPJ    PP,             ;RETURN\r
+       \r
+RELBL1:        POP     PP,RC           ;RESTORE RC\r
+       POP     PP,AC0  ;AND AC0\r
+       POPJ    PP,             ;JUST RETURN\r
+\fANGLB:        PUSH    PP,FR\r
+       TLZ     FR,INDSW\r
+       PUSHJ   PP,ATOM\r
+       TLNN    IO,NUMSW\r
+       CAIE    C,35\r
+       JRST    ANGLB1\r
+       PUSHJ   PP,ASSIG1\r
+       MOVE    AC0,V\r
+       JRST    ANGLB2\r
+\r
+ANGLB1:        PUSHJ   PP,EVALHA\r
+ANGLB2:        POP     PP,FR\r
+       CAIE    C,36\r
+       TRO     ER,ERRN\r
+       JRST    GETDEL\r
+\r
+PERIOD:        PUSHJ   PP,GETCHR       ;LOOK AT NEXT CHARACTER\r
+       TLNN    CS,2            ;ALPHABETIC?\r
+       JRST    PERNUM          ;NO, TEST NUMERIC\r
+       MOVSI   AC0,(SIXBIT /./)        ;YES, PUT PERIOD IN AC0\r
+       MOVSI   AC2,(POINT 6,AC0,5)     ;SET BYTE POINTER\r
+       JRST    LETTE2          ;AND TREAT AS SYMBOL\r
+\r
+PERNUM:        TLNE    CS,4            ;IS IT A NUMBER\r
+       JRST    NUM32           ;YES\r
+       MOVE    AC0,LOCA        ;NO. CURRENT LOC SYMBOL (.)\r
+       MOVE    RC,MODA         ;SET TO CURRENT ASSEMBLY MODE\r
+       JRST    GETDE1          ;GET DELIMITER\r
+NUMDF: TLO     FR,DCFSW        ;SET DECIMAL FRACTION FLAG\r
+NUM:   PUSHJ   PP,GETCHR       ;GET A CHARACTER\r
+       TLNN    CS,4            ;NUMERIC?\r
+       JRST    NUM10           ;NO\r
+NUM1:  SUBI    C,20            ;CONVERT TO OCTAL\r
+       PUSH    PP,C            ;STACK FOR FLOATING POINT\r
+       MOVE    AC0,AC1\r
+       MULI    AC0,0(RX)\r
+       ADD     AC1,C           ;ADD IN LAST VALUE\r
+       CAIL    C,0(RX)         ;IS NUMBER LESS THAN CURRENT RADIX?\r
+       TLO     FR,RADXSW       ;NO, SET FLAG\r
+       AOJA    AC2,NUM         ;YES, AC2=NO. OF DECIMAL PLACES\r
+\r
+\fNUM10:        CAIE    C,16            ;PERIOD?\r
+       TLNE    FR,DCFSW        ;OR DECIMAL FRACTION?\r
+       JRST    NUM30           ;YES, PROCESS FLOATING POINT\r
+       LSH     AC1,1           ;NO, CLEAR THE SIGN BIT\r
+       LSHC    AC0,^D35        ;AND SHIFT INTO AC0\r
+       MOVE    PP,PPTEMP       ;RESTORE PP\r
+       SOJE    AC2,GETDE1      ;NO RADIX ERROR TEST IF ONE DIGIT\r
+       TLNE    FR,RADXSW       ;WAS ILLEGAL NUMBER ENCOUNTERED?\r
+       TRO     ER,ERRN         ;YES, FLAG N ERROR\r
+       JRST    GETDE1\r
+\r
+NUM30: CAIE    C,"B"-40        ;IF "B" THEN MISSING  "."\r
+NUM31: PUSHJ   PP,GETCHR\r
+       TLNN    CS,4            ;NUMERIC?\r
+       JRST    NUM40           ;NO\r
+NUM32: SUBI    C,20\r
+       PUSH    PP,C\r
+       JRST    NUM31\r
+\r
+NUM40: PUSH    PP,FR           ;STACK VALUES\r
+       HRRI    RX,^D10\r
+       PUSH    PP,AC2\r
+       PUSH    PP,PPTEMP\r
+       CAIN    C,45            ;"E"?\r
+       JRST    [PUSHJ PP,PEEK  ;GET NEXT CHAR\r
+               PUSH PP,C       ;SAVE NEXT CHAR\r
+               PUSHJ PP,CELL   ;YES, GET EXPONENT\r
+               POP PP,C        ;GET FIRST CHAR. AFTER E\r
+               CAIN V,4        ;MUST HAVE NUMERICAL STATUS\r
+               JRST    .+2     ;SKIP RETURN\r
+               CAIN C,"<"      ;ALLOW <EXP>\r
+               JRST    .+2     ;SKIP RETURN\r
+               SKIPN   AC0     ;ERROR IF NON-ZERO EXPRESSION\r
+               TROA ER,ERRQ    ;ALLOW E+,E-\r
+               SETOM   RC      ;FORCE NUMERICAL ERROR\r
+               JRST    .+2]    ;SKIP RETURN\r
+       MOVEI   AC0,0           ;NO, ZERO EXPONENT\r
+       POP     PP,PPTEMP\r
+       POP     PP,SX\r
+       POP     PP,FR\r
+       HRRZ    V,PP\r
+       MOVE    PP,PPTEMP\r
+       JUMPN   RC,NUMER1       ;EXPONENT MUST BE ABSOLUTE\r
+       ADD     SX,AC0\r
+       HRRZ    ARG,PP\r
+       ADD     SX,ARG\r
+       SETZB   AC0,AC2\r
+       TLNE    FR,DCFSW\r
+       JRST    NUM60\r
+       JOV     NUM50           ;CLEAR OVERFLOW FLAG\r
+\f\r
+NUM50: JSP     SDEL,NUMUP      ;FLOATING POINT\r
+       JRST    NUM52           ;END OF WHOLE NUMBERS\r
+       FMPR    AC0,[10.0]      ;MULTIPLY BY 10\r
+       TLO     AC1,233000      ;CONVERT TO FLOATING POINT\r
+       FADR    AC0,AC1         ;ADD IT IN\r
+       JRST    NUM50\r
+\r
+NUM52: JSP     SDEL,NUMDN      ;PROCESS FRACTION\r
+       FADR    AC0,AC2\r
+       JOV     NUMER1          ;TEST FOR OVERFLOW\r
+       JRST    GETDE1\r
+\r
+       TLO     AC1,233000\r
+       TRNE    AC1,-1\r
+       FADR    AC2,AC1         ;ACCUMULATE FRACTION\r
+       FDVR    AC2,[10.0]\r
+       JRST    NUM52\r
+\r
+NUM60: JSP     SDEL,NUMUP\r
+       JRST    NUM62\r
+       IMULI   AC0,^D10\r
+       ADD     AC0,AC1\r
+       JRST    NUM60\r
+\r
+NUM62: LSHC    AC1,-^D36\r
+       JSP     SDEL,NUMDN\r
+       LSHC    AC1,^D37\r
+       PUSHJ   PP,BYPAS2\r
+       JRST    GETDE3\r
+\r
+       DIVI    AC1,^D10\r
+       JRST    NUM62\r
+\r
+NUMUP: MOVEI   AC1,0\r
+       CAML    ARG,SX\r
+       JRST    0(SDEL)\r
+       CAMGE   ARG,V\r
+       MOVE    AC1,1(ARG)\r
+       AOJA    ARG,1(SDEL)\r
+\r
+NUMDN: MOVEI   AC1,0\r
+       CAMG    V,SX\r
+       JRST    0(SDEL)\r
+       CAMLE   V,ARG\r
+       MOVE    AC1,0(V)\r
+       SOJA    V,3(SDEL)\r
+\fSUBTTL        GETSYM\r
+GETSYM:        MOVEI   AC0,0           ;CLEAR AC0\r
+       MOVSI   AC1,(POINT 6,AC0)       ;PUT POINTER IN AC1\r
+       PUSHJ   PP,BYPASS       ;SKIP LEADING BLANKS\r
+       TLNN    CS,2            ;ALPHABETIC?\r
+       JRST    GETSY1          ;NO, ERROR\r
+       CAIE    C,16            ;PERIOD?\r
+       JRST    GETSY2          ;NO, A VALID SYMBOL\r
+       IDPB    C,AC1           ;STORE THE CHARACTER\r
+       PUSHJ   PP,GETCHR       ;YES, TEST NEXT CHARACTER\r
+       TLNN    CS,2            ;ALPHABETIC?\r
+GETSY1:        TROA    ER,ERRA\r
+GETSY2:        AOS     0(PP)           ;YES, SET SKIP EXIT\r
+GETSY3:        TLNN    CS,6            ;ALPHA-NUMERIC?\r
+       JRST    BYPAS2          ;NO, GET DELIMITER\r
+       TLNE    AC1,770000      ;YES, HAVE WE STORED SIX?\r
+       IDPB    C,AC1           ;NO, STORE IT\r
+       PUSHJ   PP,GETCHR\r
+       JRST    GETSY3\r
+\r
+\fSUBTTL        EXPRESSION EVALUATOR\r
+CV==   AC0                     ;CURRENT VALUE\r
+PV==   AC1                     ;PREVIOUS VALUE\r
+RC==   RC                      ;CURRENT RELOCATABILITY\r
+PR==   AC2                     ;PREVIOUS RELOCATABILITY\r
+CS=    CS                      ;CURRENT STATUS\r
+PS==   SDEL                    ;PREVIOUS STATUS\r
+\r
+EVALHA:        TLO     FR,TMPSW\r
+EVALCM:        PUSHJ   PP,EVALEX       ;EVALUATE FIRST EXPRESSION\r
+       PUSH    PP,[0]          ;MARK PDL\r
+       JUMPCM  EVALC3          ;JUMP IF COMMA\r
+       TLO     IO,IORPTC       ;IT'S NOT,SO REPEAT\r
+       JRST    OP              ;PROCESS IN OP\r
+EVALC3:\r
+       PUSH    PP,[0]          ;STORE ZERO'S ON PDL\r
+       PUSH    PP,[0]          ;.......\r
+       MOVSI   AC2,(POINT 4,(PP),12)\r
+       JRST    OP1B            ;PROCESS IN OP\r
+\r
+EVALEX:        TLO     IO,FLDSW\r
+       PUSH    PP,[XWD TNODE,0]        ;MARK THE LIST 200000,,0\r
+       TLZN    FR,TMPSW\r
+EVATOM:        PUSHJ   PP,ATOM         ;GET THE NEXT ATOM\r
+       JUMPE   AC0,EVGETD      ;TEST FOR NULL/ZERO\r
+       TLOE    IO,NUMSW        ;SET NUMERIC, WAS IT PREVIOUSLY?\r
+       JRST    EVGETD+1        ;YES, TREAT ACCORDINGLY\r
+       PUSHJ   PP,SEARCH       ;SEARCH FOR MACRO OR SYMBOL\r
+       JRST    EVOP            ;NOT FOUND, TRY FOR OP-CODE\r
+       JUMPL   ARG,.+2         ;SKIP IF OPERAND\r
+       PUSHJ   PP,SSRCH1       ;OPERATOR, TRY FOR SYMBOL (OPERAND)\r
+       PUSHJ   PP,QSRCH        ;PERFORM CROSS-REFERENCE\r
+       JUMPG   ARG,EVMAC       ;BRANCH IF OPERATOR\r
+       MOVE    AC0,V           ;SYMBOL, SET VALUE\r
+       JRST    EVTSTS          ;TEST STATUS\r
+\r
+EVMAC: TLNE    FR,NEGSW        ;UNARY MINUS?\r
+       JRST    EVERRZ          ;YES, INVALID BEFORE OPERATOR\r
+       LDB     SDEL,[POINT 3,ARG,5]    ;GET MACF/OPDF/SYNF\r
+       SOJL    SDEL,EVERRZ     ;ERROR IF NO FLAGS\r
+\r
+       JUMPE   C,.+2           ;NON-BLANK?\r
+       TLO     IO,IORPTC       ;YES, REPEAT CHARACTER\r
+       SOJE    SDEL,CALLM      ;MACRO IF 2\r
+       JUMPG   SDEL,EVOPS      ;SYNONYM IF 4\r
+\r
+       MOVE    AC0,V           ;OPDEF\r
+       MOVEI   V,OP            ;SET TRANSFER VECTOR\r
+       JRST    EVOPD\r
+\fEVOP: TLNE    FR,NEGSW        ;OPCODE, UNARY MINUS?\r
+       JRST    EVERRZ          ;YES, ERROR\r
+\r
+       PUSHJ   PP,OPTSCH       ;SEARCH SYMBOL TABLE\r
+       JRST    EVOPX           ;NOT FOUND\r
+EVOPS: TRZ     V,LITF          ;CLEAR LIT INVALID FLAG\r
+       TRZE    V,ADDF          ;SYNONYM\r
+       JRST    EVOPX           ;PSEUDO-OP THAT GENERATES NO DATA JUMPS\r
+       HLLZ    AC0,V\r
+EVOPD: JUMPE   C,.+2           ;OPDEF, NON-BLANK DELIMITER?\r
+       TLO     IO,IORPTC       ;YES, REPEAT CHARACTER\r
+       JSP     AC2,SVSTOW\r
+       PUSHJ   PP,0(V)\r
+       PUSHJ   PP,DSTOW\r
+       JSP     AC2,GTSTOW\r
+       TRNE    RC,-2\r
+       HRRM    RC,EXTPNT\r
+       TLNE RC,-2\r
+       HLLM RC,EXTPNT\r
+       JRST    EVNUM\r
+\r
+EVOPX: MOVSI   ARG,SYMF!UNDF\r
+       PUSHJ   PP,INSERZ\r
+EVERRZ:        SETZB   AC0,RC          ;CLEAR CODE AND RELOCATION\r
+EVERRU:        TRO     ER,ERRU\r
+       JRST    EVGETD\r
+\fEVTSTS:       TLNE    ARG,UNDF\r
+       JRST    [TRO    ER,ERRU ;SET UNDEF ERROR\r
+               JUMP1   EVGETD  ;TREAT AS UNDF ON PASS1\r
+               JRST    .+1]    ;TREAT AS EXTERNAL ON PASS2\r
+       TLNN    ARG,EXTF\r
+       JRST    EVTSTR\r
+       HRRZ RC,ARG     ;GET ADRES WFW\r
+       HRRZ ARG,EXTPNT ;SAVE IT WFW\r
+       HRRM RC,EXTPNT  ;WFW\r
+       TRNE ARG,-1     ;WFW\r
+       TRO     ER,ERRE\r
+       SETZB   AC0,ARG\r
+\r
+EVTSTR:        TLNE    ARG,MDFF        ;MULTIPLY DEFINED?\r
+       TRO     ER,ERRD         ;YES, FLAG IT\r
+       TLNE    FR,NEGSW        ;NEGATIVE ATOM?\r
+       PUSHJ   PP,GETDE2       ;YES, NEGATE AC0 AND RC\r
+\r
+EVGETD:        TLNE    IO,NUMSW        ;NON BLANK FIELD\r
+       TLO     FR,FSNSW        ;YES,SET FLAG\r
+       PUSHJ   PP,BYPAS2\r
+       TLNE    CS,6            ;ALPHA-NUMERIC?\r
+       TLO     IO,IORPTC       ;YES, REPEAT IT\r
+EVNUM: POP     PP,PS           ;POP THE PREVIOUS DELIMITER/TNODE\r
+       TLO     PS,4000\r
+       CAMGE   PS,CS           ;OPERATION REQUIRED?\r
+       JRST    EVPUSH          ;NO, PUT VALUES BACK ON STACK\r
+       TLNN    PS,TNODE        ;YES, HAVE WE REACHED TERMINAL NODE?\r
+       JRST    EVXCT           ;NO, EXECUTION REQUIRED\r
+       TLNN    CS,170000       ;YES, ARE WE POINTING AT DEL? (& ! * / + - _)\r
+       POPJ    PP,             ;YES, EXIT\r
+                               ;NO,FALL INTO EVPUSH\r
+\r
+\fEVPUSH:       PUSH    PP,PS           ;STACK VALUES\r
+       PUSH    PP,CV\r
+       PUSH    PP,RC\r
+       PUSH    PP,CS\r
+       JRST    EVATOM          ;GET NEXT ATOM\r
+\r
+EVXCT: POP     PP,PR           ;POP PREVIOUS RELOCATABILITY\r
+       POP     PP,PV           ;AND PREVIOUS VALUE\r
+       LDB     PS,[POINT 3,PS,29]      ;TYPE OF OPERATION TO PS\r
+       JRST    .+1(PS)         ;PERFORM PROPER OPERATION\r
+       JRST    ASSEM1          ;0; SHOULD NEVER GET HERE ;DMN\r
+       JRST    XMUL            ;1;\r
+       JRST    XDIV            ;2;\r
+       JRST    XADD            ;3;\r
+       JRST    XSUB            ;4;\r
+       JRST    XLRW            ;5; "_"\r
+       TDOA    CV,PV           ;6; MERGE PV INTO CV\r
+       AND     CV,PV           ;7; AND PV INTO CV\r
+       JUMPN   RC,.+2          ;COMMON RELOCATION TEST\r
+EVXCT1:        JUMPE   PR,EVNUM\r
+       TRO     ER,ERRR         ;BOTH MUST BE FIXED\r
+       JRST    EVNUM           ;GO TRY AGAIN\r
+\r
+XSUB:  SUBM    PV,CV\r
+       SUBM    PR,RC\r
+       JRST    EVNUM\r
+\r
+XADD:  ADDM    PV,CV\r
+       ADDM    PR,RC\r
+       JRST    EVNUM\r
+\r
+XDIV:  IDIV    PR,CV           ;CORRECT RELOCATABILITY\r
+       IDIVM   PV,CV\r
+XDIV1: EXCH    PR,RC           ;TAKE RELOCATION OF NUMERATOR\r
+       JRST    EVXCT1\r
+\r
+XMUL:  JUMPE   PR,XMUL1        ;AT LEAST ONE OPERAND\r
+       JUMPE   RC,XMUL1        ;MUST BE FIXED\r
+       TRO     ER,ERRR\r
+XMUL1: IORM    PR,RC           ;GET RELOCATION TO RC\r
+       CAMGE   PV,CV           ;FIND THE GREATER\r
+       EXCH    PV,CV           ;FIX IN CASE CV=0,OR 1\r
+       IMULM   PV,RC\r
+       IMULM   PV,CV\r
+       JRST    EVNUM\r
+XLRW:  EXCH    PV,CV\r
+       LSH     CV,0(PV)\r
+       LSH     PR,0(PV)\r
+       JRST    XDIV1\r
+\f      SUBTTL  LITERAL STORAGE HANDLER\r
+       \r
+STOLER:\r
+       SETZB   AC0,RC  ;ERROR, NO CODE STORED\r
+       PUSHJ   PP,STOW         ;STOW ZERO\r
+       TRO     ER,ERRL         ;AND FLAG THE ERROR\r
+\r
+STOLIT:        MOVE    SDEL,STPX\r
+       SUB     SDEL,STPY       ;COMPUTE NUMBER OF WORDS\r
+       JUMPE   SDEL,STOLER     ;ERROR IF NONE STORED\r
+       TRNN    ER,ERRORS       ;ANY ERRORS?\r
+       JRST    STOL06          ;NO\r
+       JUMP2   STOL22          ;YES, NO SEARCH.  BRANCH IF PASS2\r
+       ADDM    SDEL,LITCNT     ;PASS ONE, UPDATE COUNT\r
+       JRST    STOWI           ;INITIALIZE STOW\r
+\r
+STOL06:        MOVEI   SX,LITAB        ;PREPARE FOR SEARCH\r
+       MOVE    ARG,STPX        ;SAVE IN THE EVENT OF MULTIPLE-WORD\r
+       HRL     ARG,STPY\r
+       MOVE    AC2,LITNUM\r
+       MOVEI   SDEL,0\r
+STOL08:        PUSHJ   PP,DSTOW        ;GET VALUE WFW\r
+\r
+STOL10:        SOJL    AC2,STOL24      ;TEST FOR END\r
+       MOVE    SX,0(SX)        ;NO, GET NEXT STORAGE CELL\r
+       MOVE    V,-1(SX)                ;GET RELOCATION BITS WFW\r
+       CAMN    AC0,-2(SX)      ;DO CODES COMPARE? WFW\r
+       CAME    RC,V            ;YES, HOW ABOUT RELOCATION?\r
+       AOJA    SDEL,STOL10     ;NO, TRY AGAIN\r
+       SKIPGE  STPX            ;YES, MULTI-WORD?\r
+       JRST    STOL26          ;NO, JUST RETURN LOCATION\r
+       MOVEM   AC2,SAVBLK+AC2  ;YES, SAVE STARTING INFO\r
+       MOVEM   SX,SAVBLK+SX\r
+\r
+STOL12:        SOJL    AC2,STOL23      ;TEST FOR END\r
+       PUSHJ   PP,DSTOW        ;GET NEXT WORD WFW\r
+       MOVE    SX,0(SX)        ;UPDATE POINTER\r
+       MOVE    V,-1(SX)                ;GET RELOCATION WFW\r
+       CAMN    AC0,-2(SX)      ;COMPARE VALUE WFW\r
+       CAME    RC,V            ;AND RELOCATION\r
+       JRST    STOL14          ;NO MATCH, TRY AGAIN\r
+       SKIPL   STPX            ;MATCH, HAVE WE FINISHED SEARCH?\r
+       JRST    STOL12          ;NO, TRY NEXT WORD\r
+       JRST    STOL26          ;YES, RETURN LOCATION\r
+\r
+STOL14:        MOVE    AC2,SAVBLK+AC2  ;RESTORE STOW POINTERS\r
+       MOVE    SX,SAVBLK+SX\r
+       HRREM   ARG,STPX\r
+       HLREM   ARG,STPY\r
+       AOJA    SDEL,STOL08     ;BETTER LUCK NEXT TIME\r
+\f\r
+STOL22:        MOVE    SDEL,LITNUM\r
+STOL23:        PUSHJ   PP,DSTOW        ;DSTOW AND CONVERT\r
+STOL24:        MOVE    SX,LITABX       ;GET CURRENT STORAGE\r
+       PUSHJ   PP,GETTOP       ;GET NEXT CELL\r
+       MOVEM   AC0,-2(SX)      ;STORE CODE WFW\r
+       MOVEM   RC,-1(SX)       ;WFW\r
+       MOVEM   SX,LITABX       ;SET POINTER TO CURRENT CELL\r
+       AOS     LITNUM          ;INCREMENT NUMBER STORED\r
+       AOS     LITCNT          ;INCREMENT NUMBER RESERVED\r
+       SKIPL   STPX            ;ANY MORE CODE?\r
+       JRST    STOL23          ;YES\r
+STOL26:        JUMP1   POPOUT          ;EXIT IF PASS ONE\r
+       MOVE    SX,LITHDX       ;GET HEADER BLOCK\r
+       HLRZ    RC,-1(SX)       ;GET BLOCK RELOCATION\r
+       HRRZ    AC0,-1(SX)\r
+       ADDI    AC0,0(SDEL)     ;COMPUTE ACTUAL LOCATION\r
+       POPJ    PP,             ;EXIT\r
+\r
+\fSUBTTL        INPUT ROUTINES\r
+GETCHR:        PUSHJ   PP,CHARAC       ;GET ASCII CHARACTER\r
+       CAIL    C,"A"+40        ;CHECK FOR LOWER CASE\r
+       CAILE   C,"Z"+40\r
+       JRST    .+2             ;NOT LOWER CASE\r
+       TRZA    C,100           ;CONVERT LOWER CASE TO SIXBIT\r
+       SUBI    C,40            ;CONVERT TO SIXBIT\r
+       CAIG    C,77            ;CHAR GREATER THAN SIXBIT?\r
+       JUMPGE  C,GETCS         ;TEST FOR VALID SIXBIT\r
+       ADDI    C,40            ;BACK TO ASCII\r
+       CAIN    C,HT            ;CHECK FOR TAB\r
+       JRST    GETCS2          ;MAKE IT LOOK LIKE SPACE\r
+       CAIG    C,CR            ;GREATER THAN CR\r
+       CAIG    C,HT            ;GREATER THAN TAB\r
+       JRST    GETCS1          ;IS NOT FF,VT,LF OR CR\r
+       MOVEI   C,EOL           ;LINE OR FORM FEED OR V TAB\r
+       TLOA    IO,IORPTC       ;REPEAT CHARACTER\r
+GETCS2:        MOVEI   C,0             ;BUT TREAT AS BLANK\r
+GETCS: MOVE    CS,CSTAT(C)     ;GET STATUS BITS\r
+       POPJ    PP,             ;EXIT\r
+\r
+GETCS1:        JUMPE   C,GETCS         ;IGNORE NULS\r
+       TRC     C,100           ;MAKE CHAR. VISIBLE\r
+       MOVEI   CS,"^"\r
+       DPB     CS,LBUFP        ;PUT ^ IN OUTPUT\r
+       PUSHJ   PP,RSW2         ;ALSO MODIFIED CHAR.\r
+       TRO     ER,ERRQ         ;FLAG Q ERROR\r
+       JRST    GETCHR          ;BUT IGNORE CHAR.\r
+\f\r
+CHARAC:        TLZE    IO,IORPTC       ;REPEAT REQUESTED?\r
+       JRST    CHARAX          ;YES\r
+RSW0:  JUMPN   MRP,MREAD       ;BRANCH IF TREE POINTER SET\r
+       PUSHJ   PP,READ\r
+RSW1:  SKIPE   RPOLVL          ;ARE WE IN "REPEAT ONCE"?\r
+       JRST    REPO1           ;YES\r
+RSW2:  MOVE    CS,LIMBO        ;GET LAST CHAR.\r
+       MOVEM   C,LIMBO ;STORE THIS CHAR. FOR RPTC\r
+       CAIN    C,LF            ;LF?\r
+       CAIE    CS,CR           ;YES,LAST CHAR. A CR?\r
+       JRST    RSW3            ;NO\r
+       HRROS   LIMBO           ;YES,FLAG\r
+       POPJ    PP,             ;AND EXIT\r
+\r
+RSW3:  TLNE    IO,IOSALL       ;MACRO SUPPRESS ALL?\r
+       JUMPN   MRP,CPOPJ       ;YES,DON'T LIST IN MACRO\r
+       SOSG    CPL             ;ANY ROOM IN THE IMAGE BUFFER?\r
+       PUSHJ   PP,OUTPL        ;NO, OUTPUT THE PARTIAL LINE\r
+       IDPB    C,LBUFP         ;YES, STORE IN PRINT AREA\r
+       CAIE    C,HT            ;TAB?\r
+       POPJ    PP,             ;NO, EXIT\r
+       MOVEI   C,7\r
+       ANDCAM  C,CPL           ;MASK\r
+CHARAX:        HRRZ    C,LIMBO         ;GET LAST CHARACTER\r
+       POPJ    PP,             ;EXIT\r
+\r
+CHARL: PUSHJ   PP,CHARAC       ;GET AND TEST 7-BIT ASCII\r
+       CAIG    C,FF            ;LINE OR FORM FEED OR VT?\r
+       CAIGE   C,LF\r
+       POPJ    PP,             ;NO,EXIT\r
+       SKIPE   LITLVL          ;IN LITERAL?\r
+       JRST    OUTIML          ;YES\r
+CHARL1:        PUSHJ   PP,SAVEXS       ;SAVE REGISTERS\r
+       PUSHJ   PP,OUTLIN       ;DUMP THE LINE\r
+       JRST    RSTRXS          ;RESTORE REGISTERS AND EXIT\r
+\fSUBTTL        CHARACTER STATUS TABLE\r
+\r
+       DEFINE  GENCS   (OPLVL,ATOM,AN,SQUOZ,OPTYPE,SEQNO)\r
+<BYTE (6)OPLVL (9)ATOM (3)AN (6)SQUOZ,OPTYPE,SEQNO>\r
+\r
+       ;OPLVL  PRIORITY OF BINARY OPERATORS\r
+       ;ATOM   INDEX TO JUMP TABLE AT CELL1\r
+       ;AN     TYPE OF CHARACTER\r
+       ;       1=OTHER, 2=ALPHA, 4=NUMERIC\r
+       ;SQUOZ  VALUE IN RADIX 50\r
+       ;OPTYPE INDEX TO JUMP TABLE AT EVXCT\r
+       ;SEQNO  VALUE IN SIXBIT\r
+CSTAT:\r
+       GENCS   00,00,1,00,00,00        ; ' '\r
+       GENCS   04,12,1,00,06,01        ; '!'\r
+       GENCS   00,07,1,00,00,02        ; '"'\r
+       GENCS   00,12,1,00,00,03        ; '#'\r
+       GENCS   00,01,2,46,00,04        ; '$'\r
+       GENCS   00,01,2,47,00,05        ; '%'\r
+       GENCS   04,12,1,00,07,06        ; '&'\r
+       GENCS   00,07,1,00,00,07        ; '''\r
+\r
+       GENCS   00,01,1,00,00,10        ; '('\r
+       GENCS   00,01,1,00,00,11        ; ')'\r
+       GENCS   02,12,1,00,01,12        ; '*'\r
+       GENCS   01,00,1,00,03,13        ; '+'\r
+       GENCS   40,01,1,00,00,14        ; ','\r
+       GENCS   01,02,1,00,04,15        ; '-'\r
+       GENCS   00,11,2,45,00,16        ; '.'\r
+       GENCS   02,12,1,00,02,17        ; '/'\r
+\r
+       GENCS   00,04,4,01,00,20        ; '0'\r
+       GENCS   00,04,4,02,00,21        ; '1'\r
+       GENCS   00,04,4,03,00,22        ; '2'\r
+       GENCS   00,04,4,04,00,23        ; '3'\r
+       GENCS   00,04,4,05,00,24        ; '4'\r
+       GENCS   00,04,4,06,00,25        ; '5'\r
+       GENCS   00,04,4,07,00,26        ; '6'\r
+       GENCS   00,04,4,10,00,27        ; '7'\r
+\r
+       GENCS   00,04,4,11,00,30        ; '8'\r
+       GENCS   00,04,4,12,00,31        ; '9'\r
+       GENCS   00,12,1,00,00,32        ; ':'\r
+       GENCS   00,01,1,00,00,33        ; ';'\r
+       GENCS   00,05,1,00,00,34        ; '<'\r
+       GENCS   00,12,1,00,00,35        ; '='\r
+       GENCS   00,01,1,00,00,36        ; '>'\r
+       GENCS   00,12,1,00,00,37        ; '?'\r
+\f      GENCS   00,03,1,00,00,40        ; '@'\r
+       GENCS   00,01,2,13,00,41        ; 'A'\r
+       GENCS   00,01,2,14,00,42        ; 'B'\r
+       GENCS   00,01,2,15,00,43        ; 'C'\r
+       GENCS   00,01,2,16,00,44        ; 'D'\r
+       GENCS   00,01,2,17,00,45        ; 'E'\r
+       GENCS   00,01,2,20,00,46        ; 'F'\r
+       GENCS   00,01,2,21,00,47        ; 'G'\r
+\r
+       GENCS   00,01,2,22,00,50        ; 'H'\r
+       GENCS   00,01,2,23,00,51        ; 'I'\r
+       GENCS   00,01,2,24,00,52        ; 'J'\r
+       GENCS   00,01,2,25,00,53        ; 'K'\r
+       GENCS   00,01,2,26,00,54        ; 'L'\r
+       GENCS   00,01,2,27,00,55        ; 'M'\r
+       GENCS   00,01,2,30,00,56        ; 'N'\r
+       GENCS   00,01,2,31,00,57        ; 'O'\r
+\r
+       GENCS   00,01,2,32,00,60        ; 'P'\r
+       GENCS   00,01,2,33,00,61        ; 'Q'\r
+       GENCS   00,01,2,34,00,62        ; 'R'\r
+       GENCS   00,01,2,35,00,63        ; 'S'\r
+       GENCS   00,01,2,36,00,64        ; 'T'\r
+       GENCS   00,01,2,37,00,65        ; 'U'\r
+       GENCS   00,01,2,40,00,66        ; 'V'\r
+       GENCS   00,01,2,41,00,67        ; 'W'\r
+\r
+       GENCS   00,01,2,42,00,70        ; 'X'\r
+       GENCS   00,01,2,43,00,71        ; 'Y'\r
+       GENCS   00,01,2,44,00,72        ; 'Z'\r
+       GENCS   00,06,1,00,00,73        ; '['\r
+       GENCS   00,12,1,00,00,74        ; '\'\r
+       GENCS   00,01,1,00,00,75        ; ']'\r
+       GENCS   00,10,1,00,00,76        ; '^'\r
+       GENCS   10,12,1,00,05,77        ; '_'\r
+\fSUBTTL        LISTING ROUTINES\r
+\r
+OUTLIN:        TRNN    ER,ERRORS-ERRQ  ;ANY ERRORS?\r
+       TLNE    FR,ERRQSW       ;NO, IGNORE Q ERRORS?\r
+       TRZ     ER,ERRQ         ;YES, YES, ZERO THE Q ERROR\r
+       HRLZ    AC0,ER          ;PUT ERROR FLAGS IN AC0 LEFT\r
+       TDZ     ER,TYPERR\r
+       JUMP1   OUTL30          ;BRANCH IF PASS ONE\r
+       JUMPN   AC0,OUTL02      ;JUMP IF ANY ERRORS TO FORCE PRINTING\r
+       SKIPL   STPX            ;SKIP IF NO CODE, OTHERWISE\r
+       JRST    OUTL01          ;NO\r
+       TLNN    IO,IOSALL       ;YES,SUPPRESS ALL?\r
+       JRST    OUTL03          ;NO\r
+       JUMPN   MRP,CPOPJ       ;YES,EXIT IF IN MACRO\r
+       LDB     C,[XWD 350700,LBUF]\r
+       CAIE    C,15            ;FIRST CHAR CR?\r
+OUTL01:        TLZ     IO,IOMAC        ;FORCE MACRO PRINTING\r
+OUTL03:        TLNN    IO,IOMSTR!IOPROG!IOMAC\r
+OUTL02:        IOR     ER,OUTSW        ;FORCE IT.\r
+       IDPB    AC0,LBUFP       ;STORE ZERO TERMINATOR AFTER ASCII SRC LINE\r
+       TLNN    FR,CREFSW       ;CREF?\r
+       PUSHJ   PP,CLSCRF       ;YES, WRITE END OF CREF DATA (177,003)\r
+       JUMPE   AC0,OUTL20      ;BRANCH IF NO ERRORS\r
+       TLZE    AC0,ERRM        ;M ERROR?\r
+       TLO     AC0,ERRP        ;M ERROR SET - SET P ERROR.\r
+       PUSHJ   PP,OUTLER       ;PROCESS ERRORS\r
+\r
+OUTL20:        SKIPN   RC,ASGBLK\r
+       SKIPE   CS,LOCBLK       ;\r
+       SKIPL   STPX            ;ANY BINARY?\r
+       JRST    OUTL23          ;YES, JUMP\r
+       JUMPE   RC,OUTL22       ;SEQUENCE BREAK AND NO BINARY JUMPS\r
+       ILDB    C,TABP          ;ASSIGNMENT FALLS THROUGH\r
+       PUSHJ   PP,OUTL         ;OUTPUT A TAB.\r
+       ILDB    C,TABP          ;OUTPUT 2ND TAB, LOCATION FIELD\r
+       PUSHJ   PP,OUTC         ;NEXT IS BINARY LISTING FIELD\r
+       HLLO    CS,LOCBLK       ;LEFT HALF OF A 36BIT VALUE\r
+       JUMPL   RC,.+2          ;SKIP IF LEFT HALF IS NOT RELOC\r
+       TRZA    CS,1            ;IT IS, SET THE FLAG\r
+       TLNE    CS,-1           ;SKIP IF ITS A 18BIT VALUE, OTHERWISE\r
+       PUSHJ PP,ONC1           ;PRINT LH OF A 36 BIT VALUE IN CS\r
+       HRLO    CS,LOCBLK       ;PICK UP THE RIGHT HALF (18BIT VALUE)\r
+       TRZ     CS,0(RC)        ;\r
+       PUSHJ   PP,ONC          ;PRINT IT\r
+       JRST    OUTL23          ;SKIP SINGLE QUOTE TEST\r
+\fOUTL22:       PUSHJ   PP,ONC          ;TAB TO RH AND PRINT IT\r
+       MOVEI   C,"'"\r
+       SKIPE   MODA\r
+       PUSHJ   PP,OUTC\r
+OUTL23:        SKIPL   STPX            ;ANY BINARY?\r
+       PUSHJ   PP,BOUT         ;YES, DUMP IT\r
+       MOVE    CS,@OUTLI2      ;[POINT 7,LBUF]\r
+OUTL24:        ILDB    C,CS\r
+       JUMPE   C,OUTL25\r
+       CAIG    C," "\r
+       JRST    OUTL24\r
+       MOVE    CS,TABP\r
+       PUSHJ   PP,OUTASC       ;OUTPUT TABS\r
+OUTL25:        MOVEI   CS,LBUF\r
+       PUSHJ   PP,OUTAS0       ;DUMP THE LINE\r
+       TLNE    IO,IOSALL       ;SUPPRESSING ALL\r
+       JUMPN   MRP,OUTL27      ;YES,EXTRA CR IF IN MACRO\r
+OUTL26:        SKIPGE  STPX            ;ANY BINARY?\r
+       JRST    OUTLI           ;NO, CLEAN UP AND EXIT\r
+       PUSHJ   PP,OUTLI2       ;YES, INITIALIZE FOR NEXT LINE\r
+       PUSHJ   PP,BOUT         ;YES, DUMP IT\r
+OUTL27:        PUSHJ   PP,OUTCR        ;OUTPUT CARRIAGE RETURN\r
+       JRST    OUTL26          ;TEST FOR MORE BINARY\r
+\r
+OUTPL: SKIPN   LITLVL          ;IF IN LITERAL\r
+       SKIPL   STPX            ;OR CODE GENERATED\r
+       JRST    OUTIM           ;JUST OUTPUT THE IMAGE\r
+       SKIPN   ASGBLK          ;SKIP IF AN ASSIGNMENT\r
+       JRST    OUTIM           ;OTHERWISE OUTPUT IMAGE\r
+       PUSH    PP,C            ;SAVE CHAR.\r
+       MOVEI   C,CR\r
+       IDPB    C,LBUFP\r
+       MOVEI   C,LF\r
+       IDPB    C,LBUFP         ;FINISH WITH CRLF\r
+       PUSHJ   PP,OUTLIN       ;OUTPUT PARTIAL LINE\r
+       POP     PP,C            ;RESTORE CHAR.\r
+       JRST    OUTLI2          ;INITIALISE REST OF LINE\r
+\fOUTL30:       AOS     CS,STPX         ;PASS ONE\r
+       ADDM    CS,LOCO         ;INCREMENT OUTPUT LOCATION\r
+       PUSHJ   PP,STOWI        ;INITIALIZE STOW\r
+       TLZ     AC0,ERRORS-ERRM-ERRP-ERRV\r
+       JUMPN   AC0,OUTL32      ;JUMP IF ERRORS\r
+       TLNE    IO,IOSALL       ;SUPPRESSING ALL/\r
+       JUMPN   MRP,CPOPJ       ;YES,EXIT\r
+       JRST    OUTLI1          ;NO,INIT LINE\r
+\r
+OUTL32:        IDPB    AC0,LBUFP       ;ZERO TERNIMATOR\r
+       IOR     ER,OUTSW        ;LIST ERRORS\r
+       MOVEI   CS,TAG\r
+       PUSHJ   PP,OUTSIX       ;OUTPUT TAG\r
+       HRRZ    C,TAGINC\r
+       PUSHJ   PP,DNC          ;CONVERT INCREMENT TO DECIMAL\r
+       PUSHJ   PP,OUTTAB       ;OUTPUT TAB\r
+       PUSHJ   PP,OUTLER       ;OUTPUT ERROR FLAGS\r
+       PUSHJ   PP,OUTTAB\r
+       MOVEI   CS,SEQNO        ;ADDRESS OF SEQUENCE NO.\r
+       SKIPE   SEQNO           ;FILE NOT SEQUENCED\r
+       PUSHJ   PP,OUTAS0       ;OUTPUT IT\r
+       JRST    OUTL25          ;OUTPUT BASIC LINE\r
+\r
+OUTLER:        PUSH PP,ER      ;SAVE LISTING SWITCHES FOR LATER\r
+       TRNE ER,TTYSW   ;IF THIS IS ON, LISTING IS ON TTY\r
+       TRZ ER,ERRORS   ;SO SUPPRESS ON TTY\r
+       TDZ ER,OUTSW    ;BUT THIS SHOULD ONLY GO TO THE TTY\r
+       MOVE CS,INDIR   ;GET FILE NAME\r
+       CAME CS,LSTFIL  ;AND SEE IF SAME\r
+       JRST    [MOVEM CS,LSTFIL        ;SAVE AS LAST ONE\r
+               MOVEI CS,LSTFIL\r
+               PUSHJ PP,OUTSIX ;LIST NAME\r
+               MOVEI C," "\r
+               PUSHJ PP,OUTL\r
+               MOVE CS,PAGENO  ;PRINT PAGE NUMBER TOO\r
+               JRST OUTLE8]\r
+       MOVE CS,PAGENO  ;NOW CHECK PAGE NUMBER\r
+       CAME CS,LSTPGN\r
+OUTLE8:        JRST    [MOVEM CS,LSTPGN\r
+               MOVEI CS,[ASCIZ /PAGE /]\r
+               PUSHJ PP,OUTAS0\r
+               MOVE C,PAGENO\r
+               PUSHJ PP,DNC\r
+               PUSHJ PP,OUTCR  ;AND NOW FOR THE ERROR LINE\r
+               JRST .+1]\r
+       HLLM ER,(PP)    ;RESTORE ER BUT NOT IO (LEFT HALF OF AC)\r
+       POP PP,ER\r
+       MOVE    CS,[POINT 7,[ASCII / QXADLRUVNOPEM/]]\r
+OUTLE2:        ILDB    C,CS            ;GET ERROR MNEMONIC\r
+       JUMPGE  AC0,OUTLE4      ;BRANCH IF NOT FLAGGED\r
+       PUSHJ   PP,OUTL         ;OUTPUT THE CHARACTER\r
+       AOS     ERRCNT          ;INCREMENT ERROR COUNT\r
+OUTLE4:        LSH     AC0,1           ;SHIFT NEXT FLAG INTO SIGN BIT\r
+\f      JUMPN   AC0,OUTLE2      ;TEST FOR END\r
+       POPJ    PP,             ;EXIT\r
+\fOUTIM1:       TLOA    FR,IOSCR        ;SUPPRESS CRLF AFTER LINE\r
+OUTIM: TLZ     FR,IOSCR        ;DON'T FOR PARTIAL LINE\r
+       TLNE    IO,IOSALL       ;SUPPRESSING ALL?\r
+       JUMPN   MRP,CPOPJ       ;YES ,EXIT IF IN MACRO\r
+       JUMP1   OUTLI1          ;BYPASS IF PASS ONE\r
+       PUSH    PP,ER\r
+       TDZ     ER,TYPERR\r
+       TLNN    IO,IOMSTR!IOPROG!IOMAC\r
+       IOR     ER,OUTSW\r
+       PUSH    PP,C            ;OUTPUT IMAGE\r
+       TLNN    FR,CREFSW\r
+       PUSHJ   PP,CLSCRF\r
+OUTIM2:        MOVE    CS,TABP\r
+       PUSHJ   PP,OUTASC       ;OUTPUT TABS\r
+       IDPB    C,LBUFP         ;STORE ZERO TERMINATOR\r
+       MOVEI   CS,LBUF\r
+       PUSHJ   PP,OUTAS0       ;OUTPUT THE IMAGE\r
+       TLZN    FR,IOSCR        ;CRLF SUPPRESS?\r
+       PUSHJ   PP,OUTCR        ;NO,OUTPUT\r
+       POP     PP,C\r
+       HLLM    ER,0(PP)\r
+       POP     PP,ER\r
+       JRST    OUTLI2\r
+\r
+OUTLI: TLNE    IO,IOSALL       ;SUPPRESSING ALL\r
+       JUMPN   MRP,OUTLI3      ;YES,SET FLAG IN REPEATS ALSO\r
+       TLNE    IO,IOPALL       ;MACRO EXPANSION SUPRESS REQUESTED?\r
+       SKIPN   MACLVL          ;YES, ARE WE IN MACRO?\r
+       TLZA    IO,IOMAC        ;NO, CLEAR MAC FLAG\r
+OUTLI3:        TLO     IO,IOMAC        ;YES, SET FLAG\r
+\r
+OUTLI1:        TRZ     ER,ERRORS!LPTSW!TTYSW\r
+OUTLI2:        MOVE    CS,[POINT 7,LBUF]       ;INITIALIZE BUFFERS\r
+       MOVEM   CS,LBUFP\r
+       MOVE    CS,[POINT 7,TABI,6]\r
+       MOVEM   CS,TABP\r
+       MOVEI   CS,.CPL\r
+       MOVEM   CS,CPL\r
+       MOVSI   CS,(ASCII /     /)\r
+       SKIPE   SEQNO           ;HAVE WE SEQUENCE NUMBERS?\r
+       MOVEM   CS,SEQNO        ;YES, STORE TAB IN CASE OF MACRO\r
+       MOVEM   CS,SEQNO+1      ;STORE TAB AND TERMINATOR\r
+       SETZM   ASGBLK\r
+       SETZM   LOCBLK\r
+       POPJ    PP,\r
+\fOUTIML:       TLNE    IO,IOSALL       ;SUPPRESSING ALL?\r
+       JUMPN   MRP,CPOPJ       ;YES,EXIT IF IN MACRO\r
+       TRNN ER,ERRORS-ERRQ     ;FOR LITERALS (MULIT-LINE) OUTPUT ERRORS\r
+       TLNE FR,ERRQSW\r
+       TRZ ER,ERRQ\r
+       HRLZ CS,ER\r
+       JUMP1 OUTML1    ;CHECK PASS1 ERRORS\r
+       TDZ ER,TYPERR\r
+       JUMPE CS,OUTIM1\r
+       PUSH PP,[0]     ;ERRORS SHOULD BE ZEROED\r
+       PUSH PP,C\r
+       PUSH    PP,AC0  ;SAVE AC0 IN CASE CALLED FROM ASCII\r
+       MOVE    AC0,CS  ;ERROR ROUTINE WANTS FLAGS IN AC0\r
+       IOR ER,OUTSW\r
+       TLNN FR,CREFSW\r
+       PUSHJ PP,CLSCRF ;FIX CREF\r
+       TLZE AC0,ERRM\r
+       TLO AC0,ERRP\r
+       PUSHJ PP,OUTLER ;OUTPUT THEM\r
+       POP     PP,AC0\r
+       JRST OUTIM2     ;AND LINE\r
+       \r
+OUTML1:        TLZ CS,ERRORS-ERRM-ERRP-ERRV\r
+       JUMPE CS,OUTLI2 ;NONE\r
+       TRZ ER,ERRM!ERRP!ERRV\r
+       TRO ER,ERRL\r
+       PUSH PP,ER      ;SAVE\r
+       PUSH PP,C       ;SAVE THIS\r
+       PUSH    PP,AC0  ;AS ABOVE\r
+       MOVE    AC0,CS          ;...\r
+       TDZ ER,TYPERR\r
+       IOR ER,OUTSW\r
+       MOVEI CS,TAG\r
+       PUSHJ PP,OUTSIX\r
+       HRRZ C,TAGINC\r
+       PUSHJ PP,DNC\r
+       PUSHJ PP,OUTTAB\r
+       PUSHJ PP,OUTLER ;DO NOT FORGET ERRORS\r
+       PUSHJ PP,OUTTAB\r
+       MOVEI CS,LBUF   ;PRINT REST OF LINE\r
+       PUSHJ PP,SOUT20\r
+       POP     PP,AC0\r
+       POP PP,C\r
+       POP PP,ER\r
+       JRST OUTLI2\r
+\fSUBTTL        OUTPUT ROUTINES\r
+UOUT:  PUSHJ   PP,LOOKUP       ;SET FOR TABLE SCAN\r
+       TRNN ARG,PNTF   ;WFW\r
+       TRNN    ARG,UNDF\r
+       JRST    UOUT13          ;TEST FOR UNDF!EXTF!PNTF ON PASS2\r
+       JUMP2   UOUT10\r
+       TLNN    IO,IOIOPF       ;ANY IOP'S SEEN\r
+       JRST    UOUT12          ;NO,MAKE EXTERNAL\r
+       MOVSI   CS,PRMTBL-PRMEND;YES LOOKUP IN TABLE\r
+UOUT1: CAME    AC0,PRMTBL(CS)  ;HAVE WE A MATCH?\r
+       AOBJN   CS,UOUT2        ;NO,INCREMENT AND JUMP\r
+       MOVE    ARG,PRMTBL+1(CS);YES,GET VALUE\r
+       MOVEM   ARG,(SX)        ;UPDATE SYMBOL TABLE\r
+       POPJ    PP,             ;EXIT\r
+UOUT2: AOBJN   CS,UOUT1        ;TEST FOR END\r
+\r
+UOUT12:        PUSHJ   PP,EXTER2       ;MAKE IT EXTERNAL\r
+       MOVSI   ARG,UNDF        ;BUT PUT UNDF BACK ON\r
+       IORM    ARG,(SX)        ;SO MESSAGE WILL COME OUT\r
+       POPJ    PP,             ;GET NEXT SYMBOL\r
+\r
+UOUT13:        JUMP1   CPOPJ   ;RECYCLE ON PASS1\r
+       TRC ARG,UNDF!EXTF!PNTF  ;CHECK FOR ALL THREE ON\r
+       TRCE ARG,UNDF!EXTF!PNTF ;ARE THEY?\r
+       POPJ    PP,             ;NO, RECYCLE\r
+UOUT10:        PUSHJ PP,OUTCR\r
+       PUSHJ   PP,OUTSYM       ;OUTPUT THE SYMBOL\r
+       MOVEI   CS,[SIXBIT /UNASSIGNED, DEFINED AS IF EXTERNAL @/]\r
+       JRST    OUTSIX          ;POPJ FOR NEXT SYMBOL\r
+\r
+UOUT30:        PUSHJ   PP,ONC1         ;OUTPUT THE LOCATION\r
+       JRST    HIGHQ           ;EXIT THROUGH HIGHQ\r
+\f                              ;OUTPUT THE ENTRIES\r
+\r
+EOUT:  MOVEI   C,0             ;INITIALIZE THE COUNT\r
+       MOVE    SX,SYMBOL\r
+       MOVE    SDEL,0(SX)\r
+EOUT1: SOJL    SDEL,EOUT2      ;TEST FOR END\r
+       ADDI    SX,2\r
+       HLRZ    ARG,0(SX)\r
+       ANDCAI  ARG,SYMF!INTF!ENTF\r
+       JUMPN   ARG,EOUT1       ;IF INVALID, DON'T COUNT\r
+       AOJA    C,EOUT1         ;BUMP COUNT\r
+\r
+EOUT2: HRLI    C,4             ;BLOCK TYPE 4\r
+       PUSHJ   PP,OUTBIN\r
+       SETZB   C,ARG\r
+       PUSHJ   PP,OUTBIN\r
+       MOVE    SX,SYMBOL\r
+       MOVE    SDEL,0(SX)\r
+       MOVEI   V,^D18\r
+\r
+EOUT3: SOJL    SDEL,POPOUT\r
+       ADDI    SX,2\r
+       HLRZ    C,0(SX)\r
+       ANDCAI  C,SYMF!INTF!ENTF\r
+       JUMPN   C,EOUT3\r
+       SOJGE   V,EOUT4         ;TEST END OF BLOCK\r
+       PUSHJ   PP,OUTBIN\r
+       MOVEI   V,^D17  ;WFW\r
+EOUT4: MOVE    AC0,-1(SX)\r
+       PUSHJ   PP,SQOZE\r
+       MOVE    C,AC0\r
+       PUSHJ   PP,OUTBIN\r
+       JRST    EOUT3\r
+\f                              ;OUTPUT THE SYMBOLS\r
+\r
+SOUT:  SKIPN   IONSYM          ;SKIP IF NOSYM SEEN\r
+       TRNN    ER,LPTSW!TTYSW  ;A LISTING REQUIRED?\r
+       JRST    SOUT1           ;NO\r
+       MOVEI   [ASCIZ /SYMBOL TABLE/]\r
+       HRRM    SUBTTX          ;SET NEW SUB-TITLE\r
+       PUSHJ   PP,OUTFF        ;FORCE NEW PAGE\r
+       PUSHJ PP,LOUT1          ;OUTPUT THEM\r
+       JRST    SOUT1           ;NOW FOR BLOCK TYPE 2\r
+\r
+LOUT1: PUSHJ   PP,LLUKUP       ;SET FOR TABLE SCAN\r
+       TRNN    ARG,SYMF\r
+       TRNN    ARG,MACF!SYNF\r
+       TDZA    MRP,MRP         ;SKIP AND CLEAR MRP\r
+       POPJ    PP,             ;NO, TRY AGAIN\r
+       TRNE    ARG,INTF\r
+       MOVEI   MRP,1\r
+       TRNE    ARG,EXTF\r
+       MOVNI   MRP,1           ;MRP=-1 FOR EXTERNAL\r
+       TRNE    ARG,SYNF        ;SYNONYM?\r
+       JUMPL   MRP,POPOUT      ;YES, DON'T OUTPUT IF EXTERNAL\r
+       TRNE ARG,SUPRBT         ;IF SUPRESSED\r
+;      JUMPGE MRP,POPOUT       ;DO NOT OUTPUT UNLESS EXTERNAL\r
+       POPJ    PP,             ;DO NOT OUTPUT\r
+       AOS     (PP)            ;SET FOR SKIP RETURN IF SYMBOL IS PRINTED\r
+       JUMPGE  MRP,LOUT10      ;BRANCH IF NOT EXTERNAL\r
+       HLRZ    RC,V            ;PUT POINTER/FLAGS IN RC\r
+       TRNE    RC,-2           ;POINTER?\r
+       MOVS    RC,0(RC)        ;YES\r
+       HLL     V,RC            ;STORE LEFT VALUE\r
+\r
+LOUT10:        PUSH PP,RC      ;SAVE FOR LATER\r
+       PUSHJ   PP,OUTSYM       ;OUTPUT THE NAME\r
+       MOVE RC,(PP)    ;GET COPY\r
+       MOVEI   AC1,0\r
+       JUMPLE  MRP,LOUT15      ;SET DEFFERRED BITS IF EXTERNAL\r
+       TLNE    RC,-2           ;CHECK FOR LEFT FIXUP\r
+       IORI    AC1,40          ;AND SET BITS\r
+       TRNE    RC,-2           ;CHECK FOR RIGHT FIXUP\r
+       IORI    AC1,20          ;AND SET BITS\r
+LOUT15:        TLNE RC,-2      ;FIX RELOC AS 0 IF EXTERNAL\r
+       HRRZS RC\r
+       TRNE RC,-2\r
+       HLLZS RC\r
+       TLZE RC,-1\r
+       TRO RC,2\r
+       HRL MRP,RC\r
+       MOVEI RC,0\r
+       TRNE    ARG,ENTF        ;ENTRY DMN\r
+       HRRI    MRP,-5\r
+       TRNE ARG,NOOUTF         ;SUPRESS OUTPUT? WFW\r
+       ADDI MRP,3              ;YES WFW\r
+       TRNE    ARG,UNDF        ;UNDEFINED IS EXTERNAL\r
+       HRRI    MRP,2           ;SO FLAG AS UXT\r
+       IOR     AC1,SOUTC(MRP)\r
+       MOVE ARG,AC1\r
+       MOVEM AC0,SVSYM         ;SAVE IT\r
+       MOVE    AC0,V           ;GET THE VALUE\r
+       HLRZ    RC,MRP          ;AND THE RELOCATION\r
+       HLLO    CS,V\r
+       TRNE    RC,2            ;LEFT HALF RELOCATABLE?\r
+       TRZA    CS,1            ;NO, FLAG AND PRINT\r
+       TLNE    CS,-1           ;IS THE LEFT HALF ZERO?\r
+       PUSHJ   PP,ONC1         ;NO, OUTPUT IT\r
+LOUT11:        PUSHJ   PP,OUTTAB\r
+LOUT30:        HRLO    CS,V\r
+       TDZ     CS,RC           ;SET RELOCATION\r
+       PUSHJ   PP,ONC1\r
+       PUSHJ   PP,OUTTAB\r
+       POP PP,RC               ;GET BACK RELOC AND CHECK EXTERNAL\r
+LOUT60:        MOVEI   CS,SOUTC(MRP)\r
+       PUSHJ   PP,OUTAS0       ;EXT/INT\r
+LOUT64:        JRST    OUTCR           ;CARRIAGE RETURN AND TRY FOR ANOTHER\r
+\r
+\r
+\f      SYN IFBLK,SYMBLK        ;SOMEWHERE TO STORE THE POINTERS\r
+\r
+LLUKUP:        POP     PP,LOOKX        ;INTERCEPT RETURN POP\r
+       MOVE    SX,SYMBOL\r
+       MOVE    SDEL,(SX)\r
+       ADDI    SX,2            ;SKIP COUNT OF SYMBOLS\r
+LLUKP2:        MOVEM   SX,SYMBLK       ;STORE SYMBOL POINTER IN TABLE\r
+       HRRZ    SX,SYMBLK\r
+       JRST    LLUKP7          ;ENTER LOOP\r
+\r
+LLUKP1:        MOVEM   SX,SYMBLK       ;SAVE IT \r
+       MOVE    AC0,-1(SX)\r
+       PUSHJ   PP,SRCH7\r
+       HLRZS   ARG\r
+       PUSHJ   PP,@LOOKX\r
+       JRST    [MOVEM SX,SYMBLK\r
+               JRST    .+1]\r
+LLUKP7:        SOJL    SDEL,POPOUT     ;TEST FOR END\r
+LLUKP3:        MOVE    SX,SYMBLK       ;GET NEXT POINTER\r
+       AOBJP   SX,LLUKP4\r
+       HRRZ    V,SX\r
+       CAMG    V,SYMTOP\r
+       AOJA    SX,LLUKP1\r
+LLUKP6:        PUSHJ   PP,LOUT64       ;RESET SYMCNT\r
+       JUMPE   SDEL,POPOUT     ;EXIT IF ALL DONE\r
+       JRST    LLUKP3\r
+\r
+LLUKP4:        AOJ     SX,\r
+       MOVEM   SX,SYMBLK\r
+       JRST    LLUKP3\r
+\fSOUT1:        PUSHJ   PP,LOOKUP       ;SET FOR TABLE SCAN\r
+       TRNN    ARG,SYMF\r
+       TRNN    ARG,MACF!SYNF\r
+       TDZA    MRP,MRP         ;SKIP AND CLEAR MRP\r
+       POPJ    PP,             ;NO, TRY AGAIN\r
+       TRNE    ARG,INTF\r
+       MOVEI   MRP,1\r
+       TRNE    ARG,EXTF\r
+       MOVNI   MRP,1           ;MRP=-1 FOR EXTERNAL\r
+       TRNE    ARG,SYNF        ;SYNONYM?\r
+       JUMPL   MRP,POPOUT      ;YES, DON'T OUTPUT IF EXTERNAL\r
+       TRNE ARG,SUPRBT         ;IF SUPRESSED\r
+;      JUMPGE MRP,POPOUT       ;DO NOT OUTPUT UNLESS EXTERNAL\r
+       POPJ    PP,             ;DO NOT OUTPUT\r
+       JUMPGE  MRP,SOUT10      ;BRANCH IF NOT EXTERNAL\r
+       HLRZ    RC,V            ;PUT POINTER/FLAGS IN RC\r
+       TRNE    RC,-2           ;POINTER?\r
+       MOVS    RC,0(RC)        ;YES\r
+       HLL     V,RC            ;STORE LEFT VALUE\r
+\r
+SOUT10:        PUSH PP,RC      ;SAVE FOR LATER\r
+       MOVEI   AC1,0\r
+       JUMPLE  MRP,SOUT15      ;SET DEFFERRED BITS IF EXTERNAL\r
+       TLNE    RC,-2           ;CHECK FOR LEFT FIXUP\r
+       IORI    AC1,40          ;AND SET BITS\r
+       TRNE    RC,-2           ;CHECK FOR RIGHT FIXUP\r
+       IORI    AC1,20          ;AND SET BITS\r
+SOUT15:        TLNE RC,-2      ;FIX RELOC AS 0 IF EXTERNAL\r
+       HRRZS RC\r
+       TRNE RC,-2\r
+       HLLZS RC\r
+       TLZE RC,-1\r
+       TRO RC,2\r
+       HRL MRP,RC\r
+       MOVEI RC,0\r
+       TRNE    ARG,ENTF        ;ENTRY DMN\r
+       HRRI    MRP,-5\r
+       TRNE ARG,NOOUTF         ;SUPRESS OUTPUT? WFW\r
+       ADDI MRP,3              ;YES WFW\r
+       IOR     AC1,SOUTC(MRP)\r
+       MOVE ARG,AC1\r
+       PUSHJ   PP,NOUT2        ;SQUOZE AND DUMP THE SYMBOL\r
+       MOVEM AC0,SVSYM         ;SAVE IT\r
+       MOVE    AC0,V           ;GET THE VALUE\r
+       HLRZ    RC,MRP          ;AND THE RELOCATION\r
+       PUSHJ   PP,COUT\r
+       POP PP,RC               ;GET BACK RELOC AND CHECK EXTERNAL\r
+       TRNN RC,-2              ;IS IT?\r
+       JRST SOUT50             ;NO\r
+       MOVE AC0,1(RC)          ;GET NAME\r
+       MOVEI ARG,60            ;EXTERNAL REQ\r
+       PUSHJ PP,SQOZE\r
+       HLLZS RC        ;NO RELOC\r
+       PUSHJ PP,COUT   ;OUTPUT IT\r
+       MOVE AC0,SVSYM  ;GET SYMBOL NAME\r
+       TLO AC0,500000  ;SET AS ADDITIVE SYMBOL\r
+       TLZ AC0,200000  ;BUT NOT LEFT HALF ETC\r
+       PUSHJ PP,COUT\r
+SOUT50:        MOVSS RC        ;CHECK LEFT HALF\r
+       TRNN RC,-2\r
+       JRST SOUT60\r
+       MOVE AC0,1(RC)\r
+       MOVEI ARG,60\r
+       PUSHJ PP,SQOZE\r
+       MOVEI RC,0\r
+       PUSHJ PP,COUT\r
+       MOVE AC0,SVSYM\r
+       TLO AC0,700000\r
+       PUSHJ PP,COUT\r
+SOUT60:        POPJ    PP,\r
+\r
+SOUT20:        PUSHJ PP,OUTAS0\r
+       JRST OUTCR\r
+\r
+       <ASCII /ENT/>!04        ;DMN\r
+       Z\r
+       Z\r
+       <ASCII /SEN/>!44        ;SUPRESSED ENTRY\r
+       <ASCII /EXT/>!60\r
+SOUTC: EXP     10\r
+       <ASCII /INT/>!04\r
+       <ASCII /UXT/>!60        ;UNDEFINED EXTERNAL\r
+       <ASCII /SPD/>!50\r
+       <ASCII /SIN/>!44        ;DMN\r
+\f                              ;OUTPUT THE BINARY\r
+\r
+BOUT:  HRLO    CS,LOCO         ;PICKUP THE LOCATION\r
+       PUSHJ   PP,ONC          ;OUTPUT IT TO THE LISTING FILE\r
+       MOVEI   C,"'"\r
+       SKIPE   MODO            ;IF MODE IS NOT ABSOLUTE\r
+       PUSHJ   PP,OUTC         ;PRINT A SINGLE QUOTE\r
+       PUSHJ   PP,DSTOW        ;GET THE CODE\r
+       PUSH PP,RC      ;SAVE RELOC\r
+       PUSH    PP,RC   ;AND AGAIN\r
+       TLNE RC,-2      ;CHECK LEFT EXTERNAL\r
+       HRRZS RC        ;MAKE LEFT NON-RELOC\r
+       TRNN RC,-2      ;RIGHT EXT?\r
+       JRST BOUT30     ;NO\r
+       HRRZ AC1,AC0    ;YES\r
+       JUMPE AC1,BOUT20        ;PROCESS IF ZERO CODE THERE\r
+       HLLZS RC        ;MAKE NON-RELOC\r
+       JRST BOUT30     ;PROCESS\r
+\r
+\fBOUT20:\r
+       HRRM AC1,-1(PP) ;FIX RC IN STACK SO NO CONFUSION WFW (AC1 HAS 0)\r
+       HRR     AC0,0(RC)       ;NO, SET ADDRESS LINK\r
+       MOVE    AC1,LOCO        ;GET CURRENT LOCATION\r
+       HRRM    AC1,0(RC)       ;SET NEW LINK\r
+       HLRZ    AC1,0(RC)       ;GET FLAGS/POINTER\r
+       TRNN    AC1,-2          ;POINTER?\r
+       HRR     AC1,RC          ;NO, SET TO FLAGS\r
+       HLR     RC,0(AC1)       ;PUT FLAGS IN RC\r
+       HRL     AC1,MODO        ;GET CURRENT MODE\r
+       TRZE    RC,-2           ;LEFT HALF RELOCATABLE+\r
+       TLO     AC1,2           ;YES, SET FLAG\r
+       HLLM    AC1,0(AC1)      ;STORE NEW FLAGS\r
+BOUT30:        HLLO    CS,AC0\r
+       TLZE    RC,1            ;PACK RELOCATION BITS\r
+       TRO     RC,2\r
+       TRNE    RC,2            ;LEFT HALF RELOCATABLE?\r
+       TRZ     CS,1            ;YES, RESET BIT\r
+       PUSH    PP,AC0          ;NEED AN AC\r
+       HLRZ    AC0,-1(PP)      ;AC0 = LEFT RELOCATION\r
+       CAILE   AC0,1           ;EXTERNAL?\r
+       XORI    CS,EXTF!1       ;YES, SET SWITCH\r
+\f      POP     PP,AC0          ;RESTORE\r
+       PUSHJ   PP,ONC\r
+       HRLO    CS,AC0\r
+       TDZ     CS,RC           ;SET RELOCATION\r
+       HRRZ    C,(PP)          ;C = RIGHT RELOCATION\r
+       CAILE   C,1             ;EXTERNAL\r
+       XORI    CS,EXTF!1       ;YES, SET SWITCH\r
+       PUSHJ   PP,ONC\r
+BOUT3I:        POP     PP,CS           ;GET RID OF ENTRY ON STACK\r
+       HRRZ    CS,LOCO\r
+       TLNE    FR,RIMSW!RIM1SW!R1BSW   ;RIM OUTPUT?\r
+       JRST    ROUT            ;YES, GO PROCESS\r
+\r
+       HRL     CS,MODO\r
+       CAME    CS,MODLOC       ;SEQUENCE OR RELOCATION BREAK?\r
+       PUSHJ   PP,COUTD        ;YES, DUMP THE BUFFER\r
+       SKIPL   COUTX           ;NEW BUFFER?\r
+       JRST    BOUT40          ;NO, STORE CODE AND EXIT\r
+       MOVEM   CS,MODLOC       ;YES, STORE NEW VALUES\r
+       EXCH    AC0,LOCO\r
+       EXCH    RC,MODO\r
+       PUSHJ   PP,COUT         ;STORE BLOCK LOCATION AND MODE\r
+       EXCH    RC,MODO         ;RESTORE CURRENT VALUES\r
+       EXCH    AC0,LOCO\r
+\r
+\fBOUT40:       PUSHJ PP,COUT   ;EMIT CODE\r
+       POP PP,RC       ;RETRIEVE EXTERNAL BITS\r
+       TRNN RC,-2      ;RIGHT EXTERNAL?\r
+       JRST BOUT50     ;TRY FOR LEFT\r
+       PUSHJ PP,COUTD\r
+       PUSH PP,BLKTYP  ;TERMINATE TYPE AND SAVE\r
+       MOVEI AC0,2     ;BLOCK TYPE 2\r
+       MOVEM AC0,BLKTYP\r
+       MOVE AC0,1(RC)  ;GET SYMBOL\r
+       MOVEI ARG,60    ;CODE BITS\r
+       PUSHJ PP,SQOZE  ;CONVERT TO RADIX 50\r
+       HLLZS RC        ;SYMBOL HAS NO RELOCATION\r
+       PUSHJ PP,COUT   ;EMIT\r
+       MOVE AC0,LOCO   ;GET CURRENT LOC\r
+       HRLI AC0,400000 ;ADDITIVE REQ\r
+       HRR RC,MODO     ;CURRENT MODE\r
+       PUSHJ PP,COUT   ;EMIT\r
+       MOVSS RC        ;NOW FOR LEFT\r
+       TRNN RC,-2\r
+       JRST BOUT60\r
+       JRST BOUT70\r
+BOUT50:        MOVSS RC        ;CHECK OTHER HALF\r
+       TRNN RC,-2              ;LEFT HALF EXTERNAL?\r
+       JRST BOUT80     ;NO, FALSE ALARM\r
+       PUSHJ PP,COUTD  ;CHANGE MODE\r
+       PUSH PP,BLKTYP\r
+       MOVEI AC0,2\r
+       MOVEM AC0,BLKTYP\r
+BOUT70:        MOVE AC0,1(RC)\r
+       MOVEI ARG,60\r
+       PUSHJ PP,SQOZE\r
+       HLLZS RC\r
+       PUSHJ PP,COUT\r
+       MOVE AC0,LOCO\r
+       HRLI AC0,600000 ;LEFT HALF ADD\r
+       HRR RC,MODO\r
+       PUSHJ PP,COUT   ;EMIT\r
+BOUT60:        PUSHJ PP,COUTD  ;CHANGE MODE\r
+       POP PP,BLKTYP   ;TO OLD ONE\r
+BOUT80:        AOS LOCO\r
+       AOS MODLOC\r
+       POPJ PP,\r
+\r
+\fNOUT: MOVE    V,[POINT 7,TBUF]        ;POINTER TO ASCII LINE\r
+       MOVSI   CS,(POINT 6,AC0)        ;POINTER TO SIXBIT AC0\r
+       SETZB   ARG,AC0\r
+NOUT1: ILDB    C,V             ;GET ASCII\r
+       CAIL C,"A"+40\r
+       CAILE C,"Z"+40\r
+       JRST    .+2\r
+       TRZA    C,100           ;LOWER CASE TO SIXBIT\r
+       SUBI    C,40            ;CONVERT TO SIXBIT\r
+       JUMPLE  C,NOUT3         ;TEST FORM NON-SIXBIT\r
+       CAILE   C,77            ;AND NOT GREATER THAN SIXBIT\r
+       JRST    NOUT3           ;...\r
+       IDPB    C,CS            ;DEPOSIT IN AC0\r
+       TLNE    CS,770000       ;TEST FOR SIX CHARACTERS\r
+       JRST    NOUT1           ;NO, GET ANOTHER\r
+NOUT3:\r
+IFN UNIVR,<SKIPGE      UNIVSN          ;IF A UNIVERSAL PROG>\r
+       POPJ    PP,             ;RETURN TO PUT IT IN THE TABLE\r
+\r
+IFN CCLSW,<    TLNN IO,IOTLSN  ;AND IF WE HAVE NOT SEEN A TITLE\r
+       PUSHJ PP,PRNAM  ;THEN PRINT THE NAME>\r
+NOUT2: PUSHJ   PP,SQOZE        ;CONVERT TO SIXBIT\r
+       JRST    COUT            ;DUMP AND EXIT\r
+\r
+HOUT:\r
+       MOVEI   RC,1            ;RELOCATABLE\r
+IFN RENTSW,<\r
+       MOVE    AC0,HHIGH       ;GET HIGH SEG IF TWO SEGMENTS\r
+       JUMPE   AC0,.+2         ;NOT TWO SEGMENTS\r
+       PUSHJ   PP,COUT         ;OUTPUT IT >\r
+       MOVE    AC0,HIGH\r
+IFN RENTSW,<\r
+       SKIPE   HHIGH           ;ANY TWOSEG HIGH STUFF\r
+       JRST    COUT            ;YES,SO NO ABS.>\r
+       PUSHJ   PP,COUT         ;OUTPUT THE HIGHEST LOCATION\r
+       MOVE AC0,ABSHI\r
+                               ;PUT OUT ABS PORTION OF PROGRAM BREAK\r
+       SOJA    RC,COUT         ;OUTPUT A WORD OF ZERO AND EXIT\r
+\r
+\fIFN RENTSW,<\r
+HSOUT: SETZM   HISNSW          ;CLEAR FOR PASS2\r
+       MOVE    AC0,SVTYP3      ;GET HISEG ARG\r
+       JUMPGE  AC0,.+4         ;JUMP IF ONLY HISEG\r
+       HRL     AC0,HIGH1       ;GET BREAK FROM PASS 1\r
+       JUMPL   AC0,.+2         ;OK IF GREATER THAN 400000\r
+       HRLS    AC0             ;SIGNAL TWO SEGMENT TO LOADER\r
+       MOVEI   RC,1            ;ASSUME RELOCATABLE\r
+       JRST    COUT            ;OUTPUT THE WORD>\r
+\r
+VOUT:  SKIPN   RC,VECREL       ;IS VECTOR ABSOLUTE ZERO?\r
+       SKIPE   VECTOR          ;ALSO CHECK RELOCATION\r
+       JRST    .+2\r
+       POPJ    PP,             ;YES, EXIT\r
+       MOVE    AC0,VECTOR      ;AC0 SHOULD BE FLAGS\r
+\r
+COUT:  AOS     C,COUTX         ;INCREMENT INDEX\r
+       MOVEM   AC0,COUTDB(C)   ;STORE CODE\r
+       IDPB    RC,COUTP        ;STORE RELOCATION BITS\r
+       CAIE    C,^D17          ;IS THE BUFFER FULL?\r
+       POPJ    PP,             ;NO, EXIT\r
+\r
+COUTD: AOSG    C,COUTX         ;DUMP THE BUFFER\r
+       JRST    COUTI           ;BUFFER WAS EMPTY\r
+       HRL     C,BLKTYP        ;SET BLOCK TYPE\r
+       PUSHJ   PP,OUTBIN       ;OUTPUT COUNT AND TYPE\r
+       SETOB   C,COUTY         ;INITIALIZE INDEX\r
+\r
+COUTD2:        MOVE    C,COUTDB(C)     ;GET RELOCATION BITS/CODE\r
+       PUSHJ   PP,OUTBIN       ;DUMP IT\r
+       AOS     C,COUTY         ;INCREMENT INDEX\r
+       CAMGE   C,COUTX         ;TEST FOR END\r
+       JRST    COUTD2          ;NO, GET NEXT WORD\r
+\r
+COUTI: SETOM   COUTX           ;INITIALIZE BUFFER INDEX\r
+       SETZM   COUTRB          ;ZERO RELOCATION BITS\r
+       MOVE    C,[POINT 2,COUTRB]\r
+       MOVEM   C,COUTP         ;INITIALIZE BIT POINTER\r
+       POPJ    PP,             ;EXIT\r
+\fSTOWZ1:\r
+STOWZ: MOVEI   RC,0\r
+STOW:\r
+       JUMP1   STOW20          ;SKIP TEST IF PASS ONE\r
+       TRNE    RC,-2           ;RIGHT HALF ZERO OR 1?\r
+       PUSHJ   PP,STOWT        ;NO, HANDLE EXTERNAL\r
+       TLNN    RC,-2           ;LEFT HALF ZERO OR 1? WFW\r
+       JRST    STOW10          ;YES, SKIP TEST\r
+       MOVSS   RC              ;SWAP HALVES\r
+       PUSHJ   PP,STOWT1       ;HANDLE EXTERNAL WFW\r
+       MOVSS   RC              ;RESTORE VALUES\r
+\r
+STOW10:        SKIPE   EXTPNT          ;ANY EXTERNALS REMAINING?\r
+       TRO     ER,ERRE         ;YES, SET EXTERNAL ERROR FLAG\r
+\r
+STOW20:        AOS     AC1,STPX        ;INCREMENT POINTER\r
+       MOVEM   AC0,STCODE(AC1) ;STOW CODE\r
+       MOVEM   RC,STOWRC(AC1)  ;STOW RELOCATION BITS\r
+       SKIPN   LITLVL          ;ARE WE IN LITERAL?\r
+       AOS     LOCA            ;NO, INCREMENT ASSEMBLY LOCATION\r
+       CAIGE   AC1,.STP-1      ;OVERFLOW?\r
+       POPJ    PP,             ;NO, EXIT\r
+\r
+       SKIPE   LITLVL          ;ARE WE IN A LITERAL?\r
+       TROA    ER,ERRL         ;YES, FLAG ERROR BUT DON'T DUMP\r
+       JRST    CHARL1          ;NO, SAVE REGISTERS AND DUMP THE BUFFER\r
+       JRST    STOWI           ;INITIALIZE BUFFER\r
+\r
+DSTOW: AOS     AC1,STPY        ;INCREMENT POINTER\r
+       MOVE    AC0,STCODE(AC1) ;FETCH CODE\r
+       MOVE    RC,STOWRC(AC1)  ;FETCH RELOCATION BITS\r
+       CAMGE   AC1,STPX        ;IS THIS THE END?\r
+       POPJ    PP,             ;NO, EXIT\r
+\r
+STOWI: SETOM   STPX            ;INITIALIZE FOR INPUT\r
+       SETOM   STPY            ;INITIALIZE FOR OUTPUT\r
+       SETZM   EXTPNT\r
+       POPJ    PP,             ;EXIT\r
+\fSVSTOW:       AOS     LITLVL          ;NESTED LITERALS\r
+       PUSH    PP,STPX         ;MAKE ROOM FOR ANOTHER\r
+       PUSH    PP,STPY\r
+       MOVE    AC1,STPX\r
+       MOVEM   AC1,STPY\r
+       JRST    0(AC2)\r
+\r
+GTSTOW:        POP     PP,STPY         ;BACK UP A LEVEL\r
+       POP     PP,STPX\r
+       SOS     LITLVL\r
+       JRST    0(AC2)\r
+\r
+       ;EXTERNAL RIGHT\r
+STOWT: HRRZ    AC1,EXTPNT      ;GET RIGHT POINTER\r
+       CAIE    AC1,(RC)        ;DOES IT MATCH \r
+       PUSHJ   PP,QEXT         ;EXTERNAL OR RELOCATION ERROR\r
+       HLLZS   EXTPNT\r
+       POPJ    PP,             ;EXIT\r
+\r
+       ;EXTERNAL LEFT\r
+STOWT1:        HLRZ    AC1,EXTPNT      ;GET LEFT HALF\r
+       CAIE    AC1,(RC)        ;SEE ABOVE\r
+       PUSHJ   PP,QEXT\r
+       HRRZS   EXTPNT\r
+       POPJ    PP,             ;EXIT\r
+\fONC:  ILDB    C,TABP          ;ENTRY TO ADVANCE TAB POINTER\r
+       PUSHJ   PP,OUTL         ;OUTPUT A TAB\r
+                               ;OUTPUT 6 OCT NUMBERS FROM CS LEFT\r
+ONC1:  MOVEI   C,6             ;CONVERT TO ASCII\r
+       LSHC    C,3             ;SHIFT IN OCTAL\r
+       PUSHJ   PP,OUTL         ;OUTPUT ASCII FROM C\r
+       TRNE    CS,-1           ;ARE WE THROUGH?\r
+       JRST    ONC1            ;NO, GET ANOTHER\r
+       MOVEI   C,0             ;CLEAR C\r
+       TLNN    CS,1            ;RELOCATABLE?\r
+       MOVEI   C,"'"           ;YES\r
+       TLNN    CS,EXTF         ;OR EXTERNAL\r
+       MOVEI   C,"*"           ;YES\r
+ONC2:  JUMPN   C,OUTC          ;OUTPUT IF EXTERN OR RELOCATABLE\r
+       POPJ    PP,             ;EXIT\r
+\r
+DNC:   IDIVI   C,^D10\r
+       HRLM    CS,0(PP)\r
+       JUMPE   C,.+2\r
+       PUSHJ   PP,DNC          ;RECURSE IF NON-ZERO\r
+       HLRZ    C,0(PP)\r
+       ADDI    C,"0"           ;FORM ASCII\r
+       JRST    PRINT           ;DUMP AND TEST FOR END\r
+\r
+OUTAS0:        HRLI    CS,(POINT 7,,)  ;ENTRY TO SET POINTER\r
+OUTASC:        ILDB    C,CS            ;GET NEXT BYTE\r
+       JUMPE   C,POPOUT        ;EXIT ON ZERO DELIMITER\r
+       PUSHJ   PP,PRINT\r
+       JRST    OUTASC\r
+\r
+OUTSIX:        HRLI    CS,(POINT 6,,)  ;OUTPUT SIXBIT\r
+       ILDB    C,CS            ;GET SIXBIT\r
+       CAIN    C,40            ;"@" DELIMITER?\r
+       POPJ    PP,             ;YES, EXIT\r
+       ADDI    C,40            ;NO, FORM ASCII\r
+       PUSHJ   PP,OUTL         ;OUTPUT ASCII CHAR FROM C\r
+       JRST    OUTSIX+1\r
+\r
+OUTSYM:        MOVE    CS,AC0          ;PLACE NAME IN CS\r
+OUTSY1:        MOVEI   C,0             ;CLEAR C\r
+       LSHC    C,6             ;MOVE NEXT SIXBIT CHARACTER IN\r
+       JUMPE   C,OUTTAB        ;TEST FOR END\r
+       ADDI    C,40            ;CONVERT TO ASCII\r
+       PUSHJ   PP,OUTL         ;OUTPUT\r
+       JRST    OUTSY1          ;LOOP\r
+\fOUTSET:       AOS     SX,0(PP)        ;GET RETURN LOCATION\r
+       MOVE    SX,-1(SX)       ;GET XWD CODE\r
+       HLRM    SX,BLKTYP       ;SET BLOCK TYPE\r
+       SETZB   ARG,RC\r
+       PUSHJ   PP,0(SX)        ;GO TO PRESCRIBED ROUTINE\r
+       JRST    COUTD           ;TERMINATE BLOCK AND EXIT\r
+\r
+       ;LOOKUP SCANS ALL THE SYMBOLS IN THE SYMBOL TABLE\r
+\r
+LOOKUP:        POP     PP,LOOKX        ;INTERCEPT RETURN POP\r
+       MOVE    SX,SYMBOL\r
+       MOVE    SDEL,0(SX)      ;SET FOR TABLE SCAN\r
+LOOKL: SOJL    SDEL,POPOUT     ;TEST FOR END\r
+       ADDI    SX,2\r
+       MOVE    AC0,-1(SX)\r
+       PUSHJ   PP,SRCH7        ;LOAD REGISTERS\r
+       HLRZS   ARG\r
+       PUSHJ   PP,@LOOKX       ;RETURN TO CALLING ROUTINE\r
+       JRST    LOOKL           ;TRY AGAIN\r
+\fEND0: PUSHJ   PP,EVALCM       ;GET A WORD\r
+       SKIPE   EXTPNT          ;ANY EXTERNALS?\r
+       TRO     ER,ERRE         ;YES, ERROR\r
+       SKIPN   V,AC0           ;NON-ZERO?\r
+       JUMPE   RC,.+2          ;OR RELOC?\r
+       PUSHJ   PP,ASSIG7       ;YES, LIST THE VALUE\r
+       MOVEM   AC0,VECTOR\r
+       MOVEM   RC,VECREL\r
+       PUSHJ   PP,VARA         ;FILL OUT SELF-DEFINED VARIABLES\r
+       PUSHJ   PP,STOUTS       ;DUMP THE LINE\r
+;      PUSH    PP,IO           ;SAVE FLAGS\r
+;      TLO     IO,IOPROG       ;XLIST LITS\r
+       PUSHJ   PP,LIT1\r
+;      POP     PP,IO           ;GET FLAG BACK\r
+       JUMP2   ENDP2\r
+\r
+       PUSHJ   PP,UOUT\r
+       TLNN    IO,MFLSW        ;SKIP IF ONLY PSEND\r
+       PUSHJ   PP,REC2\r
+       MOVE    INDIR           ;SET UP FIRST AS LAST\r
+       MOVEM   LSTFIL          ;PRINTED\r
+       SETZM   LSTPGN\r
+       PUSHJ   PP,INZ\r
+       TLNE    IO,MFLSW        ;IF PSEND\r
+       POPJ    PP,             ;BACK TO PSEND0\r
+       SKIPE   PRGPTR          ;HAVE ANY PRGEND'S BEEN SEEN\r
+       JRST    PSEND3          ;YES,GO SET UP AGAIN\r
+\r
+PASS20:        SETZM   CTLSAV\r
+       PUSHJ   PP,COUTI\r
+       PUSHJ   PP,EOUT         ;OUTPUT THE ENTRIES\r
+       PUSHJ   PP,OUTSET\r
+       XWD     6,NOUT          ;OUTPUT THE NAME (BLKTYP-6)\r
+IFN RENTSW,<\r
+       SKIPN   HISNSW          ;PUT OUT BLOCK TYPE 3?\r
+       JRST    PASS21          ;NO\r
+       PUSHJ   PP,OUTSET\r
+       XWD     3,HSOUT         ;OUTPUT THE HISEG BLOCK\r
+PASS21:        >\r
+       MOVEI   1\r
+       HRRM    BLKTYP          ;SET FOR TYPE 1 BLOCK\r
+       TLZ     FR,P1           ;SET FOR PASS 2 AND TURN OFF FLAG\r
+       TLO     IO,IOPALL       ;PUT THESE BACK\r
+       TLZ     IO,IOPROG!IOCREF!DEFCRS ;SO LISTINGS WILL BE THE WAY THEY SHOULD\r
+       TLNN    FR,R1BSW\r
+       JRST    STOWI\r
+       \r
+       MOVE CS,[XWD $ST-1-$CKSM,R1BLDR]\r
+       MOVE C,0(CS)\r
+       PUSHJ PP,PTPBIN\r
+       AOBJN CS,.-2\r
+       PUSHJ   PP,R1BI\r
+       JRST    STOWI\r
+\f      \r
+R1BLDR:\r
+       PHASE 0\r
+       IOWD $ADR,$ST\r
+$ST:   CONO PTR,60\r
+       HRRI $A,$RD+1\r
+$RD:   CONSO PTR,10\r
+       JRST .-1\r
+       DATAI PTR,@$TBL1-$RD+1($A)\r
+       XCT $TBL1-$RD+1($A)\r
+       XCT $TBL2-$RD+1($A)\r
+$A:    SOJA $A,\r
+$TBL1: CAME $CKSM,$ADR\r
+       ADD $CKSM,1($ADR)\r
+       SKIPL $CKSM,$ADR\r
+$TBL2: JRST 4,$ST\r
+       AOBJN $ADR,$RD\r
+$ADR:  JRST $ST+1\r
+$CKSM: \r
+       DEPHASE\r
+\r
+IF2,<  PURGE $ST,$RD,$A,$TBL1,$TBL2,$ADR,$CKSM>\r
+\fENDP2:        PUSHJ   PP,COUTD        ;DUMP THE BUFFER\r
+       MOVE    AC0,LOCO        ;CHECK TO SEE IF LIT DIFFERED\r
+       SKIPN   MODO            ;AND USE SMALLER SINCE AT END\r
+       JRST    [CAMN   AC0,ABSHI\r
+               HRRZM   AC2,ABSHI\r
+               JRST    ENDP2W]\r
+IFN RENTSW,<SKIPE HHIGH                ;SKIP IF NOT TWO SEGMENTS\r
+       JRST    [CAMN   AC0,HHIGH\r
+               HRRZM   AC2,HHIGH\r
+               JRST    ENDP2W]>\r
+       CAMN    AC0,HIGH\r
+       HRRZM   AC2,HIGH\r
+ENDP2W:\r
+REPEAT 1,<TLNE IO,IOCREF       ;CLOSE CREF IF NECESSARY>\r
+REPEAT 0,<TLNE FR,CREFSW       ;IF CREFFING\r
+       JRST ENDP2Q\r
+       MOVEI SDEL,0\r
+       PUSH PP,DBUF+3  ;SO NO PAGE INFO\r
+       DPB SDEL,[POINT 7,DBUF+3,13]\r
+       IOR ER,OUTSW    ;MAKE SURE OF OUTPUT\r
+       PUSHJ PP,CREF\r
+       MOVEI C,20      ;CODE FOR TITLE\r
+       PUSHJ PP,OUTLST\r
+       PUSH PP,IO      ;SAVE THIS\r
+       TLZ IO,IOPAGE   ;AND PREVENT PAGE DURING TITLE\r
+       MOVEI CS,TBUF\r
+       PUSHJ PP,OUTAS0\r
+       MOVEI CS,VBUF\r
+       PUSHJ PP,OUTAS0\r
+       POP PP,IO       ;RESTORE THE IO WORD\r
+       POP PP,DBUF+3   >       ;NEEDS FIX TO CREF\r
+       PUSHJ   PP,CLSCR2       ;CLOSE IT UP\r
+ENDP2Q:        HRR     ER,OUTSW        ;SET OUTPUT SWITCH\r
+       SKIPN   TYPERR\r
+       TRO     ER,TTYSW\r
+       PUSHJ   PP,UOUT         ;OUTPUT UNDEFINEDS\r
+       TRO     ER,TTYSW\r
+       SKPINC  C       ;SEE IF WE CAN INPUT A CHAR.\r
+         JFCL          ;BUT ONLY TO DEFEAT ^O\r
+       SKIPG C,ERRCNT  ;GET ERROR COUNT AND CHECK FOR POSITIVE\r
+       JRST NOERW      ;PRINT NO ERROR MESSAGE\r
+IFN CCLSW,<ADDM C,JOBERR       ;REMEMBER ERROR COUNT FOR EXECUTION DELETION>\r
+       PUSHJ PP,OUTCR\r
+       MOVE C,ERRCNT\r
+       CAIN C,1        ;1 IS A SPECIAL CASE\r
+       JRST ONERW      ;PRINT MESSAGE\r
+       MOVEI   C,"?"           ;? FOR BATCH\r
+       PUSHJ   PP,OUTL         ;...\r
+       MOVE C,ERRCNT   ;PRINT NUMBER OF ERRORS\r
+       PUSHJ PP,DNC\r
+       SKIPA CS,[EXP ERRMS1]   ;LOAD TO PRINT\r
+ONERW: MOVEI CS,ERRMS2 ;ONE ERROR DETECTED\r
+ONERW1:        PUSHJ PP,OUTSIX ;PRINT\r
+       JRST ENDP2A\r
+NOERW: MOVEI CS,ERRMS3\r
+IFN CCLSW,<TLNE IO,CRPGSW!MFLSW        ;IF RPG, DON'T PRINT MESSAGE>\r
+IFE CCLSW,<TLNE        IO,MFLSW        ;NOR IF MULTI-FILE MODE>\r
+       TRZ     ER,TTYSW                ;NO TTY OUTPUT\r
+       IOR     ER,OUTSW        ;UNLESS NEEDED FOR LISTING\r
+       PUSHJ PP,OUTCR\r
+       JRST ONERW1\r
+\r
+\fENDP2A:       PUSHJ PP,OUTCR\r
+       TLNN    IO,MFLSW        ;IN A MULTI-PROG FILE?\r
+       JRST    ENDP2D          ;NO\r
+       SKIPE   ERRCNT          ;ANY ERROR?\r
+       PUSHJ   PP,[MOVEI CS,[ASCIZ /PROGRAM    /]\r
+               PUSHJ PP,OUTAS0 ;YES,SO PRINT MESSAGE\r
+               MOVEI   CS,TBUF ;AND TITLE\r
+               PUSHJ PP,OUTAS0 ;FOR IDENTIFICATION\r
+               JRST    OUTCR]  ;AND A CR-LF\r
+       TRZA    ER,TTYSW        ;NO MORE OUTPUT NOW\r
+ENDP2D:\r
+IFN CCLSW,<TLNE IO,CRPGSW      ;IF RPG, DON'T PRINT PGM BREAK\r
+       TRZ     ER,TTYSW        ;...>\r
+IFE CCLSW,<    SKIPA           ;SO PRGEND CODE CAN WORK>\r
+       IOR     ER,OUTSW        ;...\r
+       PUSHJ   PP,OUTCR\r
+IFN RENTSW,<\r
+       MOVEI   CS,[SIXBIT /HI-SEG. BREAK IS @/]\r
+       SKIPN   HHIGH           ;DON'T PRINT IF ZERO\r
+       JRST    ENDP2C          ;IT WAS\r
+       PUSHJ   PP,OUTSIX\r
+       HRLO    CS,HHIGH        ;GET THE BREAK\r
+       PUSHJ   PP,ONC1\r
+       PUSHJ   PP,OUTCR\r
+ENDP2C:>\r
+       MOVEI   CS,[SIXBIT /PROGRAM BREAK IS @/]\r
+       PUSHJ   PP,OUTSIX       ;OUTPUT PROGRAM BREAK\r
+       HRRZ    CS,ABSHI        ;GET ABS. BREAK\r
+       CAIG    CS,140          ;ANY ABS. CODE\r
+       JRST    [HRLO CS,HIGH   ;NO\r
+               JRST    ENDP2B] ;SO DON'T PRINT\r
+       HRLO    CS,HIGH         ;GET PROGRAM BREAK\r
+       PUSHJ   PP,ONC1\r
+       PUSHJ   PP,OUTCR\r
+       MOVEI   CS,[SIXBIT /ABSLUTE BREAK IS @/]\r
+       PUSHJ   PP,OUTSIX\r
+       HRLO    CS,ABSHI\r
+ENDP2B:        PUSHJ   PP,ONC1\r
+       PUSHJ PP,OUTCR\r
+       TLNE    FR,RIMSW!R1BSW  ;RIM MODE?\r
+       PUSHJ   PP,RIMFIN       ;YES, FINISH IT\r
+IFN CCLSW,<TLNN        IO,CRPGSW!MFLSW ;IF NOT IN CCL MODE>\r
+IFE CCLSW,<TLNN        IO,MFLSW        ;NOR IF IN MULTI-FILE MODE>\r
+       TRO     ER,TTYSW        ;PRINT SIZE\r
+       PUSHJ   PP,OUTCR\r
+       MOVE    C,JOBREL\r
+       LSH     C,-^D10\r
+       ADDI    C,1\r
+       PUSHJ   PP,DNC\r
+       MOVEI   CS,[SIXBIT /K CORE USED@/]\r
+       PUSHJ   PP,OUTSIX\r
+       PUSHJ   PP,OUTCR        \r
+       HRR     ER,OUTSW\r
+       PUSHJ   PP,OUTSET\r
+       XWD     2,SOUT          ;OUTPUT THE SYMBOLS (BLKTYP-2)\r
+       PUSHJ   PP,OUTSET\r
+       XWD     7,VOUT          ;OUTPUT TRANSFER VECTOR (..-7)\r
+       PUSHJ   PP,OUTSET\r
+       XWD     5,HOUT          ;OUTPUT HIGHEST RELOCATABLE (..-5)\r
+       PUSHJ   PP,COUTD\r
+       TLNN    IO,MFLSW        ;IS IT PRGEND?\r
+       JRST    FINIS           ;ALAS, FINISHED\r
+       MOVEI   CS,SBUF         ;RESET SBUF POINTER\r
+       HRRM    CS,SUBTTX       ;TO SUBTTL\r
+       SETZM   PASS2I          ;CLEAR PASS2 VARIABLES\r
+       MOVE    [XWD PASS2I,PASS2I+1]\r
+       BLT     PASS2Z-1        ;BUT NOT ALL OF VARIABLES\r
+       JRST    INZ             ;RE-INITIALIZE FOR NEXT PROG\r
+\f\r
+\r
+RIMFIN:        TLNE FR,R1BSW\r
+       PUSHJ PP,R1BDMP\r
+       SKIPN   C,VECTOR\r
+       MOVSI   C,(JRST 4,)\r
+       TLNN    C,777000\r
+       TLO     C,(JRST)\r
+       PUSHJ   PP,PTPBIN\r
+       MOVEI   C,0\r
+       JRST    PTPBIN\r
+\fSUBTTL        PASS INITIALIZE\r
+INZ:   AOS     MODA\r
+       AOS     MODO\r
+       SETZM   SEQNO\r
+       SETZM   TAG\r
+       HRRI    RX,^D8\r
+       MOVEI   VARHD\r
+       MOVEM   VARHDX\r
+       MOVEI   LITHD\r
+       MOVEM   LITHDX\r
+       PUSHJ   PP,LITI\r
+       PUSHJ   PP,STOWI\r
+       JRST    OUTLI\r
+\r
+RCPNTR:        POINT   1,ARG,^L<RELF>-18       ;POINT 1,ARG,22\r
+\fSUBTTL        PSEUDO-OP HANDLERS\r
+\r
+TAPE0: PUSHJ   PP,STOUTS       ;FINISH THIS LINE\r
+       JRST    GOTEND          ;AND IGNORE THE REST OF THIS FILE\r
+\r
+RADIX0:        PUSHJ   PP,EVAL10       ;EVALUATE RADIX D10\r
+       CAIG    AC0,^D10        ;IF GREATER THAN 10\r
+       CAIG    AC0,1           ;OR LESS THAN 2,\r
+ERRAX: TROA    ER,ERRA         ;FLAG ERROR AND SKIP\r
+       HRR     RX,AC0          ;SET NEW RADIX\r
+       POPJ    PP,\r
+\r
+\r
+XALL0: TLZ     IO,IOSALL       ;TURN OFF MACRO SUPPRESS ALL\r
+IOSET: JUMP1   POPOUT          ;NOSYM (IONSYM), XALL (IOPALL), XLIST (IOPROG)\r
+       HLRZ    SX,AC0          ;STORE FLAGS\r
+       PUSHJ   PP,STOUTS       ;POLISH OFF LINE\r
+       TLO     IO,0(SX)        ;NOW SUPRESS PRINTING\r
+       POPJ    PP,\r
+\r
+IORSET:        TDZ     IO,AC0          ;RESET  FLAG IOPALL/IOPROG\r
+       TLNE    AC0,IONCRF      ;RESTORING CREFFING?\r
+       TLZ     IO,DEFCRS       ;YES, CLEAR ANY WAITING DEFINING OCCURENCES\r
+       POPJ    PP,\r
+\r
+BLOCK0:        PUSHJ   PP,HIGHQ\r
+       PUSHJ   PP,EVALEX       ;EVALUATE\r
+       TRZE    RC,-1           ;EXTERNAL OR RELOCATABLE?\r
+       PUSHJ   PP,QEXT         ;YES, DETERMINE TYPE\r
+       ADDM    AC0,LOCO        ;UPDATE ASSEMBLY LOCATION\r
+BLOCK1:        EXCH    AC0,LOCA        ;SAVE START OF BLOCK\r
+       ADDM    AC0,LOCA        ;UPDATE OUTPUT LOCATION\r
+BLOCK2:        HRLOM   AC0,LOCBLK\r
+       JUMP2   POPOUT\r
+       TRNE    ER,ERRU\r
+       TRO     ER,ERRV\r
+       POPJ    PP,\r
+\f\r
+PRNTX0:        TRO     ER,TTYSW        ;SET OUTPUT TO TTY\r
+       JUMP2   PRNTX2          ;PASS1?\r
+       TDOA    ER,OUTSW        ;YES,OUTPUT TO LSTDEV ALSO\r
+PRNTX2:        ANDCM   ER,OUTSW        ;NO,DON'T OUTPUT TO TTY IF IT IS LSTDEV\r
+       PUSHJ   PP,BYPASS       ;GET FIRST CHAR.\r
+       TLOA    IO,IORPTC       ;REPEAT IT AND SKIP\r
+PRNTX4:        PUSHJ   PP,PRINT        ;PRINT THE CHAR.\r
+       PUSHJ   PP,CHARAC       ;GET ASCII CHAR.\r
+       CAIG    C,CR            ;IF GREATER THAN CR\r
+       CAIG    C,HT            ;OR LESS THAN LF\r
+       JRST    PRNTX4          ;THEN CONTINUE\r
+       PUSHJ   PP,OUTCR        ;OUTPUT A CRLF\r
+       TRZA    ER,TTYSW!LPTSW  ;TURN OF OUTPUT\r
+CPOPJ1:        AOS     (PP)            ;USEFUL TAG HAS TO GO SOMEWHERE\r
+CPOPJ: POPJ    PP,             ;EXIT\r
+\r
+REMAR0:        PUSHJ   PP,GETCHR       ;GET A CHARACTER\r
+       CAIE    C,EOL\r
+       JRST    REMAR0\r
+       POPJ    PP,             ;EXIT\r
+\fLIT0: PUSHJ   PP,BLOCK1\r
+       PUSHJ   PP,STOUTS\r
+LIT1:  JUMP2   LIT20\r
+\r
+;ON PASS ONE, WE JUST STEP THE LOCATION COUNTER AND CLEAR\r
+\r
+       MOVE    AC0,LITCNT\r
+       MOVE    SX,LITHDX\r
+       HRLM    AC0,0(SX)\r
+       MOVE    V,LOCA\r
+       HRL     V,MODA\r
+       MOVEM   V,-1(SX)\r
+       JRST    LIT24\r
+\r
+LIT20: PUSH    PP,LOCA\r
+       PUSH    PP,LOCO\r
+       SKIPN   LITNUM\r
+       JRST    LIT20A\r
+       MOVE    SX,LITHDX\r
+       HRRZ    AC0,-1(SX)\r
+       CAME    AC0,LOCA\r
+       TRO     ER,ERRP\r
+LIT20A:        MOVE    SX,LITAB\r
+LIT21: SOSGE   LITNUM\r
+       JRST    LIT22\r
+       MOVE    AC0,-2(SX)      ;WFW\r
+       MOVE    RC,-1(SX)       ;WFW\r
+       MOVE SX,(SX)    ;WFW POINTER TO THE NEXT LIT\r
+       PUSHJ   PP,STOW20       ;STOW CODE\r
+       MOVEI   C,12            ;SET LINE FEED\r
+       IDPB    C,LBUFP\r
+       PUSHJ   PP,OUTLIN       ;OUTPUT THE LINE\r
+       JRST    LIT21\r
+\fLIT22:        HRRZ    AC2,LOCO\r
+       POP     PP,LOCO\r
+       POP     PP,LOCA\r
+       MOVE    SX,LITHDX\r
+       HLRZ    AC0,0(SX)\r
+       SUB AC2,LOCO    ;COMPUTE LENGTH USED\r
+       CAMGE AC0,AC2   ;USE LARGER\r
+       MOVE AC0,AC2\r
+       ADD AC2,LOCO\r
+LIT24: ADDM    AC0,LOCA\r
+       ADDM    AC0,LOCO\r
+       PUSHJ   PP,GETTOP\r
+       HRRM    SX,LITHDX\r
+LITI:  SETZM   LITCNT\r
+       SETZM   LITNUM\r
+       MOVEI   LITAB\r
+       MOVEM   LITABX\r
+       JRST    HIGHQ\r
+\r
+GETTOP:        HRRZ    AC1,SX          ;VARHD\r
+       HRRZ    SX,0(SX)\r
+       JUMPN   SX,POPOUT\r
+       MOVEI   SX,3    ;WFW\r
+       ADDB    SX,FREE\r
+       CAML    SX,SYMBOL\r
+       PUSHJ   PP,XCEED\r
+       SUBI    SX,1            ;MAKE SX POINT TO LINK\r
+       SETZM   0(SX)           ;CLEAR FORWARD LINK\r
+       HRRM    SX,0(AC1)       ;STORE ADDRESS IN LAST LINK\r
+       POPJ    PP,\r
+\fVAR0: PUSHJ   PP,BLOCK1       ;PRINT LOCATION\r
+       PUSHJ PP,VARA\r
+       JRST STOUTS\r
+\r
+VARA:  MOVE    SX,VARHDX\r
+       MOVE AC0,LOCA   ;GET LOCATION FOR CHECK\r
+       JUMP1 VARB      ;DO NOT CHECK START ON PASS 1\r
+       CAME AC0,-1(SX) ;CHECK START OF VAR AREA\r
+       TRO ER,ERRP     ;AND GIVE ERROR\r
+VARB:  MOVEM AC0,-1(SX)        ;SAVE START FOR PASS 2\r
+       HLRZ    AC0,0(SX)\r
+       ADDM    AC0,LOCA\r
+       ADDM    AC0,LOCO\r
+       PUSHJ   PP,GETTOP\r
+       HRRM    SX,VARHDX\r
+       JUMP2   POPOUT\r
+\r
+       PUSHJ   PP,LOOKUP       ;SET FOR TABLE SCAN\r
+       TRZN    ARG,VARF\r
+       POPJ    PP,             ;NO, EXIT\r
+       TRZ ARG,UNDF            ;TURN OFF FLAG NOW\r
+       MOVSI AC0,1             ;ADD 1\r
+       ADDM    AC0,0(AC1)      ;UPDATE COUNT\r
+\r
+       IOR     ARG,MODA        ;SET TO ASSEMBLY MODE\r
+       HRL     ARG,LOCA\r
+       MOVSM   ARG,0(SX)       ;UPDATE 2ND WRD OF SYM TAB ENTRY\r
+       AOS     LOCA\r
+       AOS     LOCO\r
+       JRST    HIGHQ1\r
+\fIF:   PUSH    PP,AC0          ;SAVE AC0\r
+       PUSH    PP,IO\r
+       PUSHJ   PP,EVALXQ       ;EVALUATE AND TEST EXTERNAL\r
+       POP     PP,AC1\r
+       JUMPL   AC1,IFPOP\r
+       TLZ     IO,FLDSW\r
+IFPOP: POP     PP,AC1          ;RETRIEVE SKIP INSTRUCTION\r
+IFSET: TLO IO,IORPTC           ;REPEAT CHARACTER\r
+IFXCT: XCT     AC1             ;EXECUTE INSTRUCTION\r
+       TDZA    AC0,AC0         ;FALSE\r
+       MOVEI   AC0,1           ;TRUE\r
+IFEXIT:        JUMPOC REPEA1           ;BRANCH IF IN OP-CODE FIELD\r
+IFEX1: PUSHJ PP,GETCHR         ;SEARCH FOR "<"\r
+       CAIN C,EOL              ;ERROR IF END OF LINE\r
+       JRST ERRAX\r
+       CAIE C,34\r
+       JRST IFEX1\r
+       JUMPE AC0,IFEX2         ;TEST FOR 0\r
+       TLO IO,IORPTC           ;NO, PROCESS AS CELL\r
+       PUSHJ PP,CELL\r
+       SETZM   INCND           ;NOT ANY MORE\r
+       JRST STOW               ;STOW CODE AND EXIT\r
+\r
+IFPASS:        HRRI    AC0,P1          ;MAKE IT TLNX IO,P1\r
+       MOVE    AC1,AC0         ;PLACE IT IN AC1\r
+       JRST    IFSET           ;EXECUTE INSTRUCTION\r
+\r
+IFB0:  HLLO    AC1,AC0         ;FORM AND STORE TEST INSTRUCTION\r
+IFB1:  PUSHJ   PP,CHARL        ;GET FIRST NON-BLANK\r
+       CAIE    C," "\r
+       CAIN    C,"     "\r
+       JRST    IFB1            ;SKIP BLANKS AND TABS\r
+       CAIG    C,CR            ;CHECK FOR CARRET AS DELIM.\r
+       CAIGE   C,LF\r
+       SKIPA   SX,SEQNO2\r
+       JRST    ERRAX\r
+       MOVEM   SX,CNDSEQ\r
+       MOVE    SX,PAGENO\r
+       MOVEM   SX,CNDPG\r
+       SETOM   INCND           ;SAVE INFO. FOR PASS 1 ERRORS\r
+       CAIN    C,"<"           ;LEFT BRACKET?\r
+       SETZB   C,RC            ;YES, PREPARE FOR OLD FORMAT\r
+       SKIPA   SX,C            ;SAVE FOR COMPARISON\r
+IFB3:  TRO     AC0,1           ;SET FLAG\r
+IFB2:  PUSHJ   PP,CHARL        ;GET ASCII CHARACTER AND LIST\r
+       CAMN    C,SX            ;TEST FOR DELIMITER\r
+       JRST    IFXCT           ;FOUND\r
+       CAIE    C," "           ;BLANK?\r
+       CAIN    C,"     "       ;OR TAB?\r
+       JRST    IFB2            ;YES\r
+       JUMPN   SX,IFB3         ;JUMP IF NEW FORMAT\r
+       CAIN    C,"<"           ;<?\r
+       AOJA    RC,IFB2         ;YES, INCREMENT COUNT\r
+       CAIN    C,">"           ;>?\r
+       SOJL    RC,IFXCT        ;YES, DECREMENT AND EXIT IF DONE\r
+       JRST    IFB3            ;GET NEXT CHARACTER\r
+\r
+\fIFDEF0:       HRRI    AC0,UNDF        ;MAKE IT TLNX ARG,UNDF\r
+       PUSH    PP,AC0          ;STACK IT\r
+       PUSHJ   PP,GETSYM       ;TAKES SKIP RETURN IF SYM NAME IS LEGAL\r
+       TROA    ER,ERRA         ;ILLEGAL!\r
+       PUSHJ   PP,SEARCH\r
+       JRST    [PUSHJ  PP,OPTSCH\r
+               TLO     ARG,UNDF\r
+               JRST    .+1]\r
+       PUSHJ PP,SSRCH3         ;EMIT TO CREF ANYWAY\r
+       JRST    IFPOP           ;POP AND EXECUTE INSTRUCTION\r
+\r
+\fIFIDN0:       HLRZS   AC0\r
+       MOVEI   V,2*.IFBLK-1\r
+       SETZM   IFBLK(V)        ;CLEAR COMPARISON BLOCK\r
+       SOJGE   V,.-1\r
+       SETZM   .TEMP           ;CLEAR STORED DELIMETER\r
+       MOVEI   RC,IFBLK        ;SET FOR FIRST BLOCK\r
+       PUSHJ   PP,IFCL         ;GET FIRST STRING\r
+       MOVEI   RC,IFBLKA\r
+       PUSHJ   PP,IFCL         ;GET SECOND STRING\r
+       MOVEI   V,.IFBLK-1\r
+       MOVE    SX,IFBLK(V)     ;GET WORD FROM FIRST STRING\r
+       CAMN    SX,IFBLKA(V)    ;COMPARE WITH SECOND STRING\r
+       SOJGE   V,.-2           ;EQUAL, TRY NEXT WORD\r
+       JUMPL   V,IFEXIT        ;DID WE FINISH STRING\r
+       XORI    AC0,1           ;NO, TOGGLE REQUEST\r
+       JRST    IFEXIT  ;DO NOT TURN ON IORPTC WFW\r
+\r
+IFCL:  PUSHJ   PP,CHARAC       ;GET AND LIST CHARACTER\r
+       CAIE    C," "           ;SKIP SPACES\r
+       CAIG    C,CR            ;ALSO SKIP CR-LF\r
+       CAIGE   C,HT            ;AND TAB\r
+       JRST    .+2             ;NOT ONE OF THEM\r
+       JRST    IFCL            ;SO LONG COMPARISONS WILL WORK\r
+;*** A CROCK SO THAT IFIDN <X>,<X>,<INST.> WILL WORK   ***\r
+       CAIE    C,","           ;IS IT A COMMA?\r
+       JRST    .+3             ;NO\r
+       SKIPN   .TEMP           ;YES, WAS PREVIOUS FIELD OLD METHOD?\r
+       JRST    IFCL            ;YES, IGNORE COMMA AND SPACES\r
+;      ***\r
+       CAIN    C,"<"           ;WAS IT LEFT BRACKET?\r
+       SETO    C,              ;SIGNAL OLD METHOD, LOOK FOR RIGHT BRACKET\r
+       MOVEM   C,.TEMP         ;STORE TERMINATOR FOR COMPARISON\r
+       MOVEI   SX,5*.IFBLK-1   ;LIMIT SEARCH\r
+       HRLI    RC,(POINT 7,,)  ;SET UP BYTE IN RC\r
+IFCLR: PUSHJ   PP,CHARAC\r
+       SKIPLE  .TEMP           ;NEW METHOD?\r
+       JRST    IFCLR1          ;YES, IGNORE ANGLE BRACKET COUNTING\r
+       CAIN    C,"<"           ;ANOTHER LEFT ANGLE?\r
+       SOS     .TEMP           ;YES, KEEP COUNT\r
+       CAIN    C,">"           ;CLOSING ANGLE\r
+       AOSGE   .TEMP           ;MATCHING COUNT?\r
+IFCLR1:        CAMN    C,.TEMP         ;TEST FOR DELIMITER\r
+       POPJ    PP,             ;EXIT ON RIGHT DELIMITER\r
+       SOJG    SX,.+2          ;ANY ROOM IN COMPARISON BLOCK?\r
+       TROA    ER,ERRA         ;NO, FLAG ERROR BUT KEEP ON GOING\r
+       IDPB    C,RC            ;DEPOSIT BYTE\r
+       JRST    IFCLR\r
+\r
+\f\r
+IFEX2: PUSHJ   PP,GETCHR\r
+       CAIN    C,EOL           ;EXIT WITH ERROR IF END OF LINE\r
+       JRST    ERRAX\r
+       CAIN    C,34            ;"<"?\r
+       AOJA    AC0,IFEX2       ;YES, INCREMENT COUNT\r
+       CAIE    C,36            ;">"?\r
+       JRST    IFEX2           ;NO, TRY AGAIN\r
+       SOJGE   AC0,IFEX2       ;YES, TEST FOR MATCH\r
+       PUSHJ   PP,BYPASS       ;YES, MOVE TO NEXT DELIMITER\r
+       SETZM   INCND           ;OUT OF CONDITIONAL NOW\r
+       AOJA    AC0,STOWZ1      ;STOW ZERO\r
+\r
+\r
+INTER0:        HLLZM   AC0,INTENT      ;AC0 CONTAINS INTF/ENTF FLAGS\r
+\r
+INTER1:        PUSHJ   PP,GETSYM       ;GET A SYMBOL\r
+       JRST    INTER3          ;INVALID, SKIP\r
+       PUSHJ   PP,SSRCH        ;SEARCH THE TABLE\r
+       MOVSI   ARG,SYMF!INTF!UNDF\r
+       TLNE    ARG,UNDF        ;UNDEFINED?\r
+       TRO     ER,ERRA         ;YES, FLAG ERROR\r
+       TLNN    ARG,SYNF!EXTF\r
+       TDOA    ARG,INTENT                      ;SET APPROPRIATE FLAGS\r
+INTER3:        TROA    ER,ERRA         ;FLAG ARG EROR AND SKIP\r
+       PUSHJ   PP,INSERQ       ;INSERT/UPDATE\r
+       JUMPCM  INTER1\r
+       SETZM EXTPNT    ;JUST IN CASE, SO AS NOT TO CONFUSE WORLD\r
+       POPJ    PP,             ;NO, EXIT\r
+\fEXTER0:       PUSHJ   PP,GETSYM       ;GET A SYMBOL\r
+       JRST    EXTER4          ;INVALID, ERROR\r
+EXTER1:        TLO     IO,DEFCRS       ;FLAG THIS AS A DEFINITION\r
+       PUSHJ   PP,SSRCH        ;OK, SEARCH SYMBOL TABLE\r
+       JRST    EXTER2          ;NOT THERE, INSERT IT\r
+       TLNN    ARG,EXTF!VARF!UNDF\r
+       TROA    ER,ERRE         ;FLAG ERROR AND BYPASS\r
+       TLNE    ARG,EXTF        ;VALID, ALREADY DEFINED?\r
+       JRST    [JUMP1  EXTER3  ;YES, BYPASS\r
+               TLZN ARG,UNDF   ;SKIP IF UNDEFINED ALSO\r
+               JRST    EXTER3  ;CONTINUE\r
+               ANDM ARG,(SX)   ;CLEAR UNDF ON PASS 2\r
+               JRST    EXTER2] ;SET UP EXTERNAL NOW\r
+EXTER2:        MOVEI V,2               ;NO, GET 2 CELLS FROM THE TREE\r
+       ADDB V,FREE\r
+       CAML    V,SYMBOL        ;HAVE WE RUN OUT OF CORE?\r
+       PUSHJ   PP,XCEEDS       ;YES, TRY TO BORROW SOME MORE\r
+       SUBI    V,2             ;GET RIGHT CELL FOR POINTER\r
+       SETZB   RC,0(V)         ;ALL SET, ZERO VALUES\r
+       MOVSI   ARG,SYMF!EXTF\r
+       PUSHJ   PP,INSERT       ;INSERT/UPDATE IT\r
+       MOVSI   ARG,PNTF\r
+       IORM    ARG,0(SX)\r
+       SKIPA ARG,-1(SX)                ;GET THE SIXBIT FOR THE NAME\r
+EXTER4:        TROA ER,ERRA    ;FLAG AS ERROR\r
+       MOVEM ARG,1(V)          ;AND STORE THAT IN CASE SYMBOL TABLE MOVES\r
+EXTER3:        JUMPCM  EXTER0\r
+       POPJ    PP,             ;NO, EXIT\r
+\fEVAL10:       PUSH    PP,RX\r
+       HRRI    RX,^D10\r
+       PUSHJ   PP,EVALEX       ;EVALUATE\r
+       POP     PP,RX           ;RESET RADIX\r
+       JUMPE   RC,POPOUT       ;EXIT IF ABSOLUTE\r
+\r
+QEXT:  SKIPE   EXTPNT          ;ANY POSSIBILITIES?\r
+       TROA    ER,ERRE         ;YES, FLAG EXTERNAL ERROR\r
+       TRO     ER,ERRR         ;NO, FLAG RELOCATION ERROR\r
+       HLLZS   RC              ;CLEAR RELOCATION/EXTERNAL\r
+       POPJ    PP,\r
+\r
+EVALXQ:        PUSHJ   PP,EVALEX       ;EVALUATE EXPRESSION\r
+       TLZN RC,-2              ;LEFT HALF EXTERNAL\r
+       TRZE    RC,-2           ;WAS AN EXTERNAL FOUND?\r
+       TRO     ER,ERRE         ;YES, FLAG ERROR\r
+       POPJ    PP,             ;RETURN\r
+\fOPDEF0:       PUSHJ   PP,GETSYM       ;GET THE FIRST SYMBOL\r
+       POPJ    PP,             ;ERROR IF INVALID SYMBOL\r
+       CAIE    C,73            ;"["?\r
+       JRST    ERRAX           ;NO, ERROR\r
+       PUSH    PP,AC0          ;STACK MNEMONIC\r
+       AOS     LITLVL          ;SHORT OUT LOCATION INCREMENT\r
+       PUSHJ   PP,STMNT        ;EVALUATE STATEMENT\r
+       SKIPGE  STPX            ;CODE STORED?\r
+       TROA    ER,ERRA         ;NO,"A" ERROR\r
+       PUSHJ   PP,DSTOW        ;GET AND DECODE VALUE\r
+       SOS     LITLVL\r
+       EXCH    AC0,0(PP)       ;EXCHANGE VALUE FOR MNEMONIC\r
+       PUSH    PP,RC           ;STACK RELOCATION\r
+       TLO     IO,DEFCRS       ;SAY WE ARE DEFINING IT\r
+       PUSHJ   PP,MSRCH        ;SEARCH SYMBOL TABLE\r
+       MOVSI   ARG,OPDF        ;NOT FOUND\r
+       POP     PP,RC           ;RESTORE VALUES\r
+       POP     PP,V\r
+       TLNE    ARG,SYNF!MACF\r
+       TRO     ER,ERRA         ;YES "A" ERROR\r
+       TRNN    ER,ERRA         ;ERROR?\r
+       PUSHJ   PP,INSERT       ;NO, INSERT/UPDATE\r
+       TLZ IO,DEFCRS           ;JUST IN CASE\r
+       PUSHJ   PP,BYPASS\r
+       JRST    STOWI           ;BE SURE STOW IS RESET\r
+\r
+\r
+DEPHA0:        MOVE    AC0,LOCO\r
+       SKIPA   RC,MODO         ;SET TO OUTPUT VALUES AND SKIP\r
+PHASE0:        PUSHJ   PP,EVALXQ       ;EVALUATE AND CHECK FOR EXTERNAL\r
+       MOVEM   AC0,LOCA        ;SET ASSEMBLY LOCATION COUNTER\r
+       MOVEM   RC,MODA\r
+       JRST    BLOCK2\r
+\fASSIGN:       JUMPAD  ERRAX           ;NO, ERROR\r
+       PUSHJ   PP,ASSIG1\r
+       TLNE    IO,IOSALL       ;SUPPRESS ALL?\r
+       JUMPN   MRP,CPOPJ       ;IF IN MACRO\r
+ASSIG7:        MOVEM   RC,ASGBLK\r
+       TRNE    RC,-2           ;EXTERNAL\r
+       HLLZS   ASGBLK          ;YES,CLEAR RELOCATION\r
+       TLNE    RC,1            ;LEFT HALF NOT RELOC?\r
+       TLNE    RC,-2           ;...\r
+       HRROS   ASGBLK          ;YES, SET FLAG\r
+       MOVEM   V,LOCBLK\r
+       POPJ    PP,\r
+\r
+ASSIG1:        PUSH    PP,AC0          ;SAVE SYMBOL\r
+       SETZB AC0,EXTPNT        ;SPECIAL CHECK FOR == WFW\r
+       PUSHJ PP,PEEK           ;IS THE NEXT ON =\r
+       CAIE    C,"="\r
+       JRST    ASSIG5\r
+       TLO     AC0,NOOUTF      ;YES, NOT OUT TO DDT WFW\r
+       PUSHJ   PP,GETCHR       ;PROCESS THE CHAR.\r
+       PUSHJ   PP,PEEK         ;CHECK FOR ==: DMN\r
+ASSIG5:        CAIE    C,":"           ;IS IT\r
+       JRST    ASSIG6          ;NO\r
+       TLO     AC0,INTF        ;MAKE INTERNAL\r
+       PUSHJ   PP,GETCHR       ;REPEAT IT\r
+ASSIG6:        MOVEM AC0,HDAS          ;STORE THESE BITS WFW\r
+       PUSHJ   PP,EVALCM       ;EVALUATE EXPRESSION\r
+       EXCH    AC0,0(PP)       ;SWAP VALUE FOR SYMBOL\r
+       PUSH    PP,RC\r
+       TRNN RC,-2              ;CHECK EXTERNAL AGREEMENT\r
+       JRST ASSIG2\r
+       HRRZS RC\r
+       HRRZ ARG,EXTPNT\r
+       CAME RC,ARG\r
+       PUSHJ   PP,QEXT         ;EXTERNAL OR RELOCATION ERROR\r
+ASSIG2:        HLRZ RC,(PP)\r
+       TRNN RC,-2\r
+       JRST ASSIG3\r
+       HLRZ ARG,EXTPNT\r
+       CAME RC,ARG\r
+       PUSHJ   PP,QEXT\r
+ASSIG3:        TLO IO,DEFCRS\r
+       PUSHJ   PP,SSRCH\r
+       MOVSI   ARG,SYMF\r
+       IOR ARG,HDAS    ;WFW\r
+       TLNE    ARG,UNDF        ;WAS IT UNDEFINED\r
+       TLZ     ARG,EXTF!PNTF   ;YES,CLEAR EXTF NOW\r
+       TLZ     ARG,UNDF!VARF   ;CANCEL UNDEFINED AND VARIABLE FLAGS\r
+       SETZM EXTPNT            ;FOR REST OF WORLD\r
+       POP     PP,RC\r
+       TRNE    ER,ERRORS-ERRQ\r
+       SETZ    RC,             ;CLEAR RELOCATION\r
+       POP     PP,V\r
+       TRNE    ER,ERRU         ;WAS VALUE UNDEFINED?\r
+       TLO     ARG,UNDF        ;YES,SO TURN UNDF ON\r
+       TLNE    ARG,TAGF!EXTF\r
+       JRST    ERRAX\r
+       JRST    INSERT\r
+\r
+\fLOC0: PUSHJ   PP,HIGHQ        ;AC0=0,0\r
+       PUSH    PP,AC0          ;SAVE MODE REQUESTED\r
+       HLRZS   AC0             ;PUT MODE IN RIGHT HALF\r
+       JUMPN   AC0,RELOC0      ;RELOC PSEUDO-OP\r
+       CAMN    AC0,MODO        ;SAME AS PRESENT MODE?\r
+       JRST    [HRRZ AC0,LOCO  ;YES\r
+               EXCH AC0,ABSLOC ;EXCH VALUES\r
+               JRST    LOC01]\r
+       HRRZ    AC0,LOCO        ;NO, GET CURRENT VALUE\r
+       MOVEM   AC0,RELLOC      ;SAVE IT\r
+       MOVE    AC0,ABSLOC      ;GET LAST RELOC VALUE\r
+LOC01: PUSHJ   PP,BYPASS       ;SKIP BLANKS\r
+       TLO     IO,IORPTC\r
+       CAIE    C,EOL           ;USE PREVIOUS VALUE IF NULL ARGUMENT\r
+       PUSHJ   PP,EVALXQ       ;GET EXPRESSION AND TEST EXTERNAL\r
+       HRRM    AC0,(PP)        ;STORE NEW VALUE\r
+       POP     PP,AC0          ;RETRIEVE STORED MODE AND VALUE\r
+LOC10: HRRZM   AC0,LOCA        ;SET ASSEMBLY LOCATION\r
+       HRRZM   AC0,LOCO        ;AND OUTPUT LOCATION\r
+       HLRZM   AC0,MODA        ;SET MODE\r
+       HLRZM   AC0,MODO\r
+       JRST    BLOCK2\r
+\r
+RELOC0:        CAMN    AC0,MODO\r
+       JRST    [HRRZ   AC0,LOCO\r
+               EXCH    AC0,RELLOC\r
+               JRST    LOC01]\r
+       HRRZ    AC0,LOCO\r
+       MOVEM   AC0,ABSLOC\r
+       MOVE    AC0,RELLOC\r
+       JRST    LOC01\r
+\r
+\fIFN RENTSW,<\r
+HISEG1:        PUSHJ   PP,HIGHQ        ;SET CURRENT PROGRAM BREAK\r
+       PUSHJ   PP,COUTD        ;DUMP CURRENT TYPE OF BLOCK\r
+       SKIPN   HISNSW          ;IF WE HAVE SEEN IT BEFORE\r
+       SKIPE   HIGH            ;OR ANY RELOC CODE PUT OUT\r
+       TRO     ER,ERRQ         ;FLAG AS AN ERROR\r
+       PUSHJ   PP,BYPASS       ;GO GET EXPRESSION\r
+       TLO     IO,IORPTC\r
+       PUSHJ   PP,EVALXQ       ;CHECK FOR EXTERNAL\r
+       ANDCMI  AC0,1777        ;ONLY ALLOWED TO START ON NEW K BOUND\r
+       HRRZM   AC0,LOCA        ;SET LOC COUNTERS\r
+       HRRZM   AC0,LOCO\r
+       MOVEI   RC,1            ;ASSUME RELOCATABLE\r
+       POPJ    PP,\r
+\r
+TWSEG0:        PUSHJ   PP,HISEG1       ;COMMON CODE\r
+       JUMPN   AC0,.+2         ;ARGUMENT SEEN\r
+       MOVEI   AC0,400000      ;ASSUME 400000\r
+       HRRZM   AC0,HMIN        ;SET OFSET OF HIGH SEG.\r
+       HRRZM   AC0,HHIGH       ;INCASE NO HISEG CODE\r
+       TLOA    AC0,(1B0)       ;SIGNAL TWO SEGMENTS AND SKIP\r
+\r
+HISEG0:        PUSHJ   PP,HISEG1       ;COMMON CODE\r
+HISEG2:        MOVEM   AC0,SVTYP3      ;SAVE THE HISEG ARG\r
+       MOVEM   RC,MODA         ;SET MODES\r
+       MOVEM   RC,MODO\r
+       SETOM   HISNSW          ;WE HAVE ALREADY PUT ONE OUT\r
+       JRST    BLOCK2          ;MAKE LISTING HAPPEN RIGHT>\r
+\r
+IFE RENTSW,<\r
+       SYN     CPOPJ,HISEG0\r
+       SYN     CPOPJ,TWSEG0>\r
+\r
+       SYN     CPOPJ,ONFORM\r
+       SYN     CPOPJ,OFFORM\r
+\fHIGHQ:\r
+HIGHQ1:        MOVE    V,LOCO  ;GET ASSEMBLY LOCATION\r
+       SKIPN   MODO            ;IF ASSEMBLY MODE IS ABSOLUTE\r
+       JRST    [CAMLE V,ABSHI  ;RECORED ABS HIGHEST ALSO\r
+               MOVEM V,ABSHI\r
+               POPJ PP,]\r
+IFN RENTSW,<SKIPE      HMIN    ;IS IT A TWO SEGMENT PROGRAM?\r
+       JRST    [CAMGE  V,HMIN  ;YES,IS THIS HIGH SEG.?\r
+               JRST    .+1     ;NO,STORE LOW SEGMENT\r
+               CAMLE   V,HHIGH ;YES,IS IT GREATER THAN "HHIGH"?\r
+               MOVEM   V,HHIGH ;YES,REPLACE WITH LARGER VALUE\r
+               POPJ    PP,]>\r
+       CAMLE   V,HIGH          ;IS IT GREATER THAN "HIGH"?\r
+       MOVEM   V,HIGH          ;YES, REPLACE WITH LARGER VALUE\r
+       POPJ    PP,\r
+       \r
+ONML:  TLZA FR,MWLFLG          ;MULTI-WORD LITERALS OK\r
+OFFML: TLO FR,MWLFLG           ;NO\r
+       POPJ PP,\r
+\r
+OFFSYM:        SETOM   IONSYM  ;SUPRESS SYMBOL TABLE LISTING\r
+       POPJ    PP,\r
+\r
+SUPRE0:        PUSHJ PP,GETSYM ;GET A SYMBOL TO SUPRES\r
+       JRST SUPRE1     ;ERROR\r
+       PUSHJ PP,SSRCH  ;SYMBOL ONLY\r
+       JRST SUPRE1     ;GIVE ERROR MESSAGE\r
+       TLOA ARG,SUPRBT ;SET THE SUPRESS BIT\r
+SUPRE1:        TROA ER,ERRA\r
+       IORM ARG,(SX)   ;PUT BACK\r
+       JUMPCM SUPRE0   ;ANY MORE?\r
+       JRST    SUPRS1\r
+\r
+SUPRSA:        PUSHJ PP,LOOKUP ;SUPRESS ALL\r
+       MOVSI ARG,SUPRBT\r
+       IORM ARG,(SX)\r
+SUPRS1:        SETZM EXTPNT    ;JUST IN CASE WE LOOKED ONE UP\r
+       POPJ PP,\r
+\r
+XPUNG0:        JUMP1   POPOUT\r
+       PUSHJ   PP,LOOKUP\r
+       MOVE    ARG,(SX)        ;GET SYMBOL FLAGS\r
+       TLNN    ARG,INTF!ENTF!EXTF!SPTR\r
+       TLOA    ARG,SUPRBT      ;LOCAL SYMBOL,SO SUPPRESS IT\r
+       SETZM   EXTPNT\r
+       MOVEM   ARG,(SX)        ;RESTORE FLAGS\r
+       POPJ    PP,\r
+\fTITLE0:       JUMP2   REMAR0\r
+       MOVEI   SX,.TBUF\r
+       HRRI    AC0,TBUF\r
+       PUSHJ PP,SUBTT1 ;GO READ IT\r
+       MOVEM   SX,TCNT         ;SAVE COUNT OF CHARS. WRITTEN\r
+IFN UNIVR,<SKIPE       UNIVSN          ;WAS IT A UNIVERSAL?\r
+       PUSHJ   PP,ADDUNV       ;YES  ADD TO TABLE>\r
+       TLOE IO,IOTLSN  ;HAVE WE SEEN ONE\r
+IFE CCLSW,<TRO ER,ERRM         ;YES, COMPLAIN>\r
+IFN CCLSW,<TROA        ER,ERRM         ;YES, MESSAGE\r
+       JRST    PRNAM           ;PRINT NAME IF FIRST ONE>\r
+       POPJ    PP,             ;EXIT OTHERWISE\r
+\r
+SUBTT0:        SKIPE   SBUF            ;STORE FIRST SUBTTL ON PASS1\r
+       JUMP1   REMAR0          ;OTHERWISE EXIT IF PASS ONE\r
+       MOVEI   SX,.SBUF\r
+       HRRI    AC0,SBUF\r
+\r
+SUBTT1:        PUSHJ   PP,BYPASS       ;BYPASS LEADING BLANKS\r
+       TLO     IO,IORPTC\r
+SUBTT3:        PUSHJ   PP,CHARAC       ;GET ASCII CHARACTER\r
+       IDPB    C,AC0           ;STORE IN BLOCK\r
+       CAIGE   C,40            ;TEST FOR TERMINATOR\r
+       CAIN    C,HT\r
+       SOJG    SX,SUBTT3       ;TEST FOR BUFFER FULL\r
+       DPB     RC,AC0          ;END, STORE TERMINATOR\r
+       SOJA    SX,CPOPJ        ;COUNT NUL AND EXIT\r
+\r
+IFN CCLSW,<\r
+PRNAM: TLNN IO,CRPGSW  ;NOT IF NOT RPG\r
+       POPJ PP,\r
+       PUSH    PP,AC0          ;SAVE AC0 DMN\r
+       PUSH    PP,RC           ;AND RC\r
+       MOVE AC0,[POINT 7,TBUF]\r
+       MOVE SX,[POINT 7,OTBUF]\r
+       MOVEI RC,6      ;MAX OF SIX CHRS\r
+PN1:   ILDB C,AC0\r
+       CAILE C," "     ;CHECK FOR LEGAL\r
+       CAILE C,"Z"+40  ;CHECK AGAINST LOWER CASE Z\r
+       JRST PN2\r
+       IDPB C,SX       ;PUT IN OUTPUT BUFFER\r
+       SOJG RC,PN1     ;GET MORE\r
+PN2:   MOVEI C,0\r
+       IDPB C,SX       ;TERMINATOR\r
+       TTCALL  3,OTBUF\r
+       TTCALL  3,[ASCIZ /\r
+/]\r
+       POP     PP,RC\r
+       POP     PP,AC0          ;RESTORE AC0 DMN\r
+       POPJ PP,\r
+>\r
+\fSYN0: PUSHJ   PP,GETSYM       ;GET THE FIRST SYMBOL\r
+       JRST    ERRAX           ;ERROR, EXIT\r
+       PUSHJ   PP,MSRCH        ;TRY FOR MACRO/OPDEF\r
+       JRST    SYN3            ;NO,0THRY FOR OPERAND\r
+SYN1:  MOVEI   SX,MSRCH        ;YES, SET FLAG\r
+SYN2:  PUSHJ   PP,SAVEXS       ;SAVE REGISTERS\r
+       JUMPNC  ERRAX           ;ERROR IF NO COMMA\r
+       PUSHJ   PP,GETSYM       ;GET THE SECOND SYMBOL\r
+       POPJ    PP,\r
+       PUSHJ   PP,@SAVBLK+SX   ;SEARCH FOR SECOND SYMBOL\r
+       JFCL\r
+       MOVE    ARG,SAVBLK+ARG  ;GET VALUES\r
+       MOVE    RC,SAVBLK+RC\r
+       MOVE    V,SAVBLK+V\r
+       TLNE    ARG,MACF        ;MACRO?\r
+       PUSHJ   PP,REFINC       ;YES, INCREMENT REFERENCE\r
+       JRST    INSERT          ;INSERT AND EXIT\r
+\r
+SYN3:  PUSHJ   PP,SSRCH        ;SEARCH FOR OPERAND\r
+       JRST    SYN4            ;NOT FOUND, TRY OP CODE\r
+       TLO     ARG,SYNF        ;FLAG AS SYNONYM\r
+       TLNE    ARG,EXTF        ;EXTERNAL?\r
+       HRRZ    V,ARG           ;YES, RELPACE WITH POINTER\r
+       MOVEI   SX,SSRCH        ;SET FLAG\r
+       TLNN ARG,VARF   ;DO NOT LET HIM SYN A VARIABLE\r
+       JRST    SYN2\r
+       JRST ERRAX\r
+\r
+SYN4:  PUSHJ   PP,OPTSCH       ;SEARCH FOR OP-CODE\r
+       JRST    ERRAX           ;NOT FOUND, EXIT WITH ERROR\r
+       MOVSI   ARG,SYNF        ;FLAG AS SYNONYM\r
+       JRST    SYN1\r
+\fPURGE0:       PUSHJ   PP,GETSYM       ;GET A MNEMONIC\r
+       JRST    [TRZ ER,ERRA    ;CLEAR ERROR\r
+               POPJ    PP,]    ;AND RETURN\r
+       PUSHJ   PP,MSRCH        ;SEARCH MACRO SYMBOL TABLE\r
+       JRST    PURGE2          ;NOT FOUND, TRY SYMBOLS\r
+       PUSH    PP,CS           ;SAVE CS AS IT MAY GET GARBAGED\r
+       TLNE    ARG,MACF        ;MACRO?\r
+       PUSHJ   PP,REFDEC       ;YES, DECREMENT THE REFERENCE\r
+       POP     PP,CS\r
+       JRST    PURGE4          ;REMOVE SYMBOL FROM TABLE\r
+\r
+PURGE2:        PUSHJ   PP,SSRCH        ;TRY OPERAND SYMBOL TABLE\r
+       JRST    PURGE5          ;NOT FOUND GET NEXT SYMBOL\r
+       TRNN RC,-2              ;CHECK COMPLEX EXTERNAL\r
+       TLNE RC,-2\r
+       TLNE ARG,SYNF\r
+       JRST    .+2\r
+       JRST PURGE3\r
+       TLNE    ARG,EXTF!UNDF   ;ERROR IF EXTERNAL OR UNDEFINED\r
+       TLNE    ARG,SYNF        ;BUT NOT A SYNONYM\r
+       JRST    PURGE4\r
+PURGE3:        TROA    ER,ERRA         ;NOT FOUND, ERROR\r
+PURGE4:        PUSHJ   PP,REMOVE       ;REMOVE FROM THE SYMBOL TABLE\r
+PURGE5:        JUMPCM  PURGE0\r
+       POPJ    PP,             ;EXIT\r
+\fOPD1: TLNE    ARG,UNDF        ;IF OPDEF IS UNDEFINED\r
+       TRO     ER,ERRO         ;GIVE "O" ERROR\r
+OPD:   MOVE    AC0,V           ;PUT VALUE IN AC0\r
+       JRST    OP\r
+IOP:   MOVSI   AC2,(POINT 9,0(PP),11)\r
+       TLOA    IO,IOIOPF       ;SET "IOP SEEN" AND SKIP\r
+OP:    MOVSI   AC2,(POINT 4,0(PP),12)\r
+       PUSH    PP,RC\r
+       PUSH    PP,AC0          ;STACK CODE \r
+       PUSH    PP,AC2\r
+       PUSHJ   PP,EVALEX       ;EVALUATE FIRST EXPRESSION\r
+       POP     PP,AC2\r
+       JUMPNC  OP2\r
+OP1B:  PUSHJ   PP,GETCHR       ;GET A CHARACTER\r
+       JUMPCM XWD5             ;PROCESS COMMA COMMA IN XWD\r
+       TLO     IO,IORPTC       ;NOT A COMMA,REPEAT IT\r
+       LDB     AC1,AC2\r
+       ADD     AC1,AC0\r
+       DPB     AC1,AC2\r
+       JUMPE   RC,OP1A         ;EXTERNAL OR RELOCATABLE?\r
+       PUSHJ   PP,QEXT         ;YES, DETERMINE WHICH AND FLAG AN ERROR\r
+\r
+OP1A:  PUSHJ   PP,EVALEX       ;GET ADDRESS PART\r
+OP2:   PUSHJ   PP,EVADR        ;EVALUATE STANDARD ADDRESS\r
+OP3:   POP     PP,AC0          ;PUT IN AC0\r
+       POP     PP,RC\r
+       SKIPE   (PP)            ;CAME FROM EVALCM?\r
+       JRST    STOW            ;NO,STOW CODE AND EXIT\r
+       POP     PP,AC1          ;YES,EXIT IMMEDIATELY\r
+       POPJ    PP,\r
+\r
+\fEVADR:                                ;EVALUATE STANDARD ADDRESS\r
+IFE IIISW,<TLNN        AC0,-1          ;OK IF ALL 0'S\r
+       JRST    .+4             ;IT WAS\r
+       TLC     AC0,-1          ;CHANGE ALL ONES TO ZEROS\r
+       TLCE    AC0,-1          ;OK IF ALL 1'S\r
+       TRO     ER,ERRQ         ;NO,FLAG Q ERROR>\r
+       ADD     AC0,-1(PP)      ;ADD ADDRESS PORTIONS\r
+       HLL     AC0,-1(PP)      ;GET LEFT HALF\r
+       TLZE    FR,INDSW        ;INDIRECT BIT?\r
+       TLO     AC0,(Z @)       ;YES, PUT IT IN\r
+       MOVEM   AC0,-1(PP)      ;RE-STACK CODE\r
+       ADD     RC,-2(PP)       ;UPDATE RELOCATION\r
+       HRRM    RC,-2(PP)       ;USE HALF WORD ADD\r
+       CAIE    C,10            ;"("?\r
+       POPJ    PP,             ;NO, EXIT\r
+\r
+       MOVSS   EXTPNT          ;WFW\r
+       PUSHJ   PP,EVALCM       ;EVALUATE\r
+       MOVSS   EXTPNT          ;WFW\r
+       MOVSS   V,AC0           ;SWAP HALVES\r
+IFE IIISW,<MOVSS SX,RC\r
+       IOR     SX,V            ;MERGE RELOCATION\r
+       TRNN    SX,-1           ;RIGHT HALF ZERO?\r
+       JRST    OP2A            ;YES, DO SIMPLE ADD\r
+       MOVE    ARG,RC          ;NO, SWAP RC INTO ARG>\r
+IFN IIISW,<MOVSS ARG,RC>\r
+       ADD     V,-1(PP)        ;ADD RIGHT HALVES\r
+       ADD     ARG,-2(PP)\r
+       HRRM    V,-1(PP)        ;UPDATE WITHOUT CARRY\r
+       HRRM    ARG,-2(PP)\r
+       HLLZS   AC0             ;PREPARE LEFT HALVES\r
+       HLLZS   RC\r
+IFE IIISW,<TLNE        SX,-1           ;IS LEFT HALF ZERO?\r
+       TRO     ER,ERRQ         ;NO FLAG FORMAT ERROR\r
+OP2A:  TLNE    RC,-1           ;RELOCATION FOR LEFT HALF?\r
+       PUSHJ   PP,OP2A1        ;YES,IS IT LEGAL?\r
+       TLNE    AC0,777000      ;OP CODE FIELD USED?\r
+       JRST    [EXCH AC0,-1(PP);YES, GET STORED CODE\r
+               TLNE AC0,777000 ;OP CODE FIELD BEEN SET?\r
+               TRO ER,ERRQ     ;YES, MOST LIKELY AN ERROR\r
+               EXCH AC0,-1(PP)\r
+               JRST    .+1]    ;RETURN TO ADD >\r
+       ADDM    AC0,-1(PP)      ;MERGE WITH PREVIOUS VALUE\r
+       ADDM    RC,-2(PP)\r
+       CAIE    C,11            ;")"?\r
+       JRST    ERRAX           ;NO, FLAG ERROR\r
+                               ;YES, BYPASS PARENTHESIS\r
+BYPASS:\r
+BYPAS1:        PUSHJ   PP,GETCHR\r
+BYPAS2:        JUMPE   C,.-1           ;SKIP TRAILING BLANKS\r
+       POPJ    PP,             ;EXIT\r
+\r
+\fIFE IIISW,<\r
+OP2A1: EXCH    RC,-2(PP)       ;GET STORED CODE\r
+       TLNN    RC,-1           ;OK IF ALL ZERO\r
+       JRST    OP2A2           ;OK SO RETURN\r
+       TLC     RC,-1           ;CHANGE ALL ONES TO ZEROS\r
+       TLCE    RC,-1           ;OK IF ALL ONES\r
+       TRO     ER,ERRQ         ;OTHERWISE A "Q" ERROR\r
+OP2A2: EXCH    RC,-2(PP)       ;GET RC,BACK\r
+       POPJ    PP,             ;AND RETURN>\r
+\r
+\r
+EXPRES:        HRLZ    AC0,RX          ;FUDGE FOR OCT0\r
+\r
+OCT0:  PUSH    PP,RX\r
+       HLR     RX,AC0\r
+OCT1:  PUSHJ   PP,EVALEX       ;EVALUATE\r
+       PUSHJ   PP,STOW         ;STOW CODE\r
+       JUMPCM  OCT1\r
+       POP     PP,RX           ;YES, RESTORE RADIX\r
+       POPJ    PP,             ;EXIT\r
+\fSIXB10:       MOVSI   RC,(POINT 6,AC0)        ;SET UP POINTER\r
+       MOVEI   AC0,0           ;CLEAR WORD\r
+\r
+SIXB20:        PUSHJ   PP,CHARL        ;GET NEXT CHARACTER\r
+       CAMN    C,SX            ;IS THIS PRESET DELIMITER?\r
+       JRST    ASC60           ;YES\r
+       CAIL C,"A"+40\r
+       CAILE C,"Z"+40\r
+       JRST    .+2\r
+       TRZA    C,100           ;CONVERT LOWER CASE TO SIXBIT\r
+       SUBI    C,40            ;CONVERT TO SIXBIT\r
+       JUMPL   C,ASC55         ;TEST FOR INVALID CHARACTER\r
+       IDPB    C,RC            ;NO, DEPOSIT THE BYTE\r
+       TLNE    RC,770000       ;IS THE WORD FULL?\r
+       JRST    SIXB20          ;NO, GET NEXT CHARACTER\r
+       PUSHJ   PP,STOWZ        ;YES, STORE\r
+       JRST    SIXB10          ;GET NEXT WORD\r
+\fASCII0:       HLLZ    SDEL,AC0        ;STORE ASCII/ASCIZ FLAG\r
+ASC10: PUSHJ   PP,CHARL        ;GET FIRST NON-BLANK\r
+       CAIE    C," "\r
+       CAIN    C,HT\r
+       JRST    ASC10\r
+       CAIG C,CR               ;CHECK FOR CRRET AS DELIM\r
+       CAIGE C,LF\r
+       SKIPA   SX,SEQNO2\r
+       JRST ERRAX\r
+       MOVEM SX,TXTSEQ         ;SAVE SEQ AND PAGE\r
+       MOVE SX,PAGENO\r
+       MOVEM SX,TXTPG\r
+       SETOM INTXT\r
+       MOVE    SX,C            ;SAVE FOR COMPARISON\r
+       JUMPG   SDEL,SIXB10     ;BRANCH IF SIXBIT\r
+\r
+ASC20: MOVSI   RC,(POINT 7,AC0)        ;SET UP POINTER\r
+       TLNE    SDEL,200000     ;THIS BIT (AND BIT0) IN FOR COMMENT\r
+       MOVSI RC,440000         ;SO NOTHING WILL BE DEPOSITED\r
+IFE IIISW,<MOVEI AC0,0         ;CLEAR WORD>\r
+IFN IIISW,<TLNE        SDEL,100000     ;ASCID?\r
+       TLZA    SDEL,400000     ;YES, ZERO ASCIZ BIT\r
+       TDZA    AC0,AC0         ;NO, ZERO WORD\r
+       MOVE    AC0,[BYTE (7) 10,10,10,10,10 (1) 1]     ;YES, A WORD FULL OF BACKSPACES>\r
+ASC30: PUSHJ   PP,CHARL        ;GET ASCII CHARACTER AND LIST\r
+       CAMN    C,SX            ;TEST FOR DELIMITER\r
+       JRST    ASC50           ;FOUND\r
+       IDPB    C,RC            ;DEPOSIT BYTE\r
+       TLNE    RC,760000       ;HAVE WE FINISHED WORD?\r
+       JRST    ASC30           ;NO,GET NEXT CHARACTER\r
+       PUSHJ   PP,STOWZ        ;YES, STOW IT\r
+       JRST    ASC20           ;GET NEXT WORD\r
+\r
+ASC55: TDZA    CS,CS           ;ZERO CS IN CASE NESTED\r
+ASC50: TDZA    RC,SDEL         ;TEST FOR ASCIIZ\r
+       TROA    ER,ERRA         ;SIXBIT ERROR EXIT\r
+ASC60: PUSHJ   PP,BYPAS1       ;POLISH OFF TERMINATOR\r
+       SETZM INTXT     ;WE ARE OUT OF IT\r
+IFN IIISW,<TLNN        SDEL,100000     ;NO EXTRA WORDS FOR ASCID>\r
+       ANDCM   RC,STPX         ;STORE AT LEAST ONE WORD\r
+       TLNN SDEL,200000        ;GET OUT WITHOUT STORING\r
+       JUMPGE  RC,STOWZ        ;STOW\r
+       POPJ    PP,             ;ASCII, NO BYTES STORED, SO EXIT\r
+\fPOINT0:\r
+       PUSH    PP,RC           ;STACK REGISTERS\r
+       PUSH    PP,AC0\r
+       PUSHJ   PP,EVAL10       ;EVALUATE RADIX 10\r
+       DPB     AC0,[POINT 6,0(PP),11]  ;STORE BYTE SIZE\r
+       JUMPNC  POINT2\r
+       PUSHJ   PP,EVALEX       ;NO, GET ADDRESS\r
+       PUSHJ   PP,EVADR        ;EVALUATE STANDARD ADDRESS\r
+       JUMPNC  POINT2\r
+       PUSHJ   PP,EVAL10       ;EVALUATE RADIX 10\r
+       TLNE    IO,NUMSW        ;IF NUMERIC\r
+       TDCA    AC0,[-1]        ;POSITION=D35-RHB\r
+POINT2:        MOVEI   AC0,0           ;OTHERWISE SET TO D36\r
+       ADDI    AC0,^D36\r
+       LSH     AC0,^D30\r
+       ADDM    AC0,0(PP)       ;UPDATE VALUE\r
+       JRST    OP3\r
+\fXWD0:\r
+       PUSH    PP,RC\r
+       PUSH    PP,AC0          ;STORE ZERO ON STACK\r
+       PUSHJ   PP,EVALEX       ;EVALUATE EXPRESSION\r
+       JUMPNC  OP2\r
+XWD5:  SKIPN   (PP)            ;ANY CODE YET?\r
+       JRST    XWD10           ;NO,USE VALUE IN AC0\r
+       JUMPE   AC0,.+2         ;ANYTHING IN AC0?\r
+       TRO     ER,ERRQ         ;YES,FLAG "Q"ERROR\r
+       MOVE    AC0,(PP)        ;USE PREVIOUS VALUE\r
+       MOVE    RC,-1(PP)       ;AND RELOCATION\r
+XWD10: HRLZM   AC0,0(PP)       ;SET LEFT HALF\r
+       HRLZM   RC,-1(PP)\r
+       MOVSS EXTPNT    ;WFW\r
+       JRST    OP1A            ;EXIT THROUGH OP\r
+\r
+IOWD0: PUSHJ   PP,EVALXQ       ;EVALUATE AND TEST FOR EXTERNAL\r
+       CAIE    C,14            ;","?\r
+       JRST    [SKIPN  AC0     ;IF NZERO AND NO "," SEEN\r
+               TRO ER,ERRQ     ;TREAT AS Q ERROR\r
+               SOJA AC0,STOW]  ;NO, TREAT AS RIGHT HALF\r
+       PUSH    PP,AC0          ;YES, STACK LEFT HALF\r
+       PUSHJ   PP,EVALEX       ;WFW\r
+       SUBI    AC0,1\r
+       POP     PP,AC1          ;RETRIEVE LEFT HALF\r
+       MOVNS   AC1\r
+       HRL     AC0,AC1\r
+       JRST    STOW            ;STOW CODE AND EXIT\r
+\fBYTE0:        PUSHJ   PP,BYPASS       ;GET FIRST NON-BLANK\r
+       CAIE    C,10            ;"("?\r
+       JRST    ERRAX           ;NO, FLAG ERROR AND EXIT\r
+       PUSH    PP,RC\r
+       PUSH    PP,AC0          ;INITIALIZE STACK TO ZERO\r
+       MOVSI   ARG,(POINT -1,(PP))\r
+\r
+BYTE1: PUSH    PP,ARG\r
+       PUSHJ   PP,EVAL10       ;EVALUATE RADIX 10\r
+       POP     PP,ARG\r
+       CAIG    AC0,^D36        ;TEST SIZE\r
+       JUMPGE  AC0,.+2\r
+       TRO     ER,ERRA\r
+       DPB     AC0,[POINT 6,ARG,11]    ;STORE BYTE SIZE\r
+\r
+BYTE2: IBP     ARG             ;INCREMENT BYTE\r
+       TRZN    ARG,-1          ;OVERFLOW?\r
+       JRST    BYTE3           ;NO\r
+       SETZB   AC0,RC          ;YES\r
+       EXCH    AC0,0(PP)       ;GET CURRENT VALUES\r
+       EXCH    RC,-1(PP)       ;AND STACK ZEROS\r
+       PUSHJ   PP,STOW         ;STOW FULL WORD\r
+\r
+BYTE3: PUSH    PP,ARG\r
+       PUSHJ   PP,EVALEX       ;COMPUTE NEXT BYTE\r
+       POP     PP,ARG\r
+       DPB     AC0,ARG         ;STORE BYTE\r
+       HLLO    AC0,ARG\r
+       DPB     RC,AC0          ;STORE RELOCATION\r
+\r
+       JUMPCM  BYTE2\r
+       CAIN    C,10            ;"("?\r
+       JRST    BYTE1           ;YES, GET NEW BYTE SIZE\r
+       JRST    OP3             ;NO, EXIT\r
+\fRADX50:       PUSHJ   PP,EVALEX       ;EVALUATE CODE\r
+       JUMPN   RC,ERRAX                ;ERROR IF NOT ABSOLUTE\r
+       MOVE    ARG,AC0\r
+       JUMPNC  ERRAX\r
+       PUSHJ   PP,GETSYM       ;YES, GET SYMBOL\r
+       TRZ     ER,ERRA         ;CLEAR ERROR\r
+       PUSHJ   PP,SQOZE        ;SQUOZE SIXBIT AND ADD CODE\r
+       JRST    STOW            ;STOW CODE AND EXIT\r
+\r
+\r
+SQOZE: MOVE    AC1+1,AC0       ;PUT SIXBIT IN AC1+1\r
+       MOVEI   AC0,0           ;CLEAR RESULT\r
+SQOZ1: MOVEI   AC1,0\r
+       LSHC    AC1,6           ;PUT 6-BIT CHARACTER IN AC1\r
+       LDB     AC1,[POINT 6,CSTAT(AC1),23]     ;CONVERT TO RADIX50\r
+       IMULI   AC0,50          ;MULTIPLY PREVIOUS RESULT\r
+       ADD     AC0,AC1         ;ADD NEW CHARACTER\r
+       JUMPN   AC1+1,SQOZ1     ;TEST FOR END\r
+       LSH     ARG,^D30        ;LEFT-JUSTIFY CODE\r
+       IOR     AC0,ARG         ;MERGE WITH RESULT\r
+       POPJ    PP,\r
+\r
+\f; PSEUDO-END STATEMENT FOR MULTI-FILE CAPABILITY\r
+\r
+; HERE IF PRGEND (PASS 1)\r
+PSEND0:        TLO     IO,MFLSW        ;PSEND SEEN\r
+       PUSHJ   PP,END0         ;AS IF END STATEMENT\r
+       HLLZS   IO              ;CLEAR ER(RH)\r
+       SETZM   ERRCNT          ;CLEAR ERROR COUNT FOR EACH PROG.\r
+       JUMP2   PSEND2          ;DIFFERENT ON PASS2\r
+IFN UNIVR,<SKIPE       UNIVSN          ;SEEN A UNIVERSAL\r
+       PUSHJ   PP,UNISYM       ;YES, STORE SYMBOLS>\r
+       PUSHJ   PP,PSEND4       ;SAVE SYMBOLS, POINTERS AND TITLE\r
+       TLZ     IO,IOTLSN       ;CLEAR TITLE SEEN FLAG\r
+PSEND1:        TLZ     IO,MFLSW         ;FOR NEXT FILE\r
+IFN UNIVR,<SETZM       UNISCH          ;CLEAR UNIVERSAL SEARCH TABLE\r
+       MOVE    AC0,[UNISCH,,UNISCH+1]\r
+       BLT     AC0,UNISCH+.UNIV-1\r
+       PUSHJ   PP,OUTFF        ;RESET PAGE COUNT>\r
+       MOVSI   AC0,1           ;SET SO RELOC 0 WORKS\r
+       JRST    LOC10           ;FOR RELOC 0\r
+\r
+; HERE IF PRGEND (PASS 2)\r
+PSEND2:        SETZM   SBUF            ;SO SUBTTL IS NOT WRONG\r
+       PUSHJ   PP,PSEND5       ;PUT TITLE BACK\r
+       PUSHJ   PP,PSEND1       ;COMMON  CODE\r
+       JRST    PASS20          ;OUTPUT THE ENTRIES\r
+\r
+; HERE IF END (PASS 1)\r
+PSEND3:        PUSHJ   PP,PSEND4       ;SAVE LAST PROGRAM \r
+       HLRS    PRGPTR          ;REINITIALIZE POINTER\r
+       PUSHJ   PP,PSEND5       ;READ BACK FIRST PROGRAM\r
+       JRST    PASS20\r
+\f;HERE TO SAVE AND RESTORE SYMBOL TABLE, TITLE AND OTHER USEFUL LOCATIONS\r
+       XTRA==4                 ;NUMBER OF OTHER LOCATIONS TO SAVE\r
+\r
+PSEND4:        MOVE    V,FREE          ;GET  NEXT FREE LOCATION\r
+       ADDI    V,LENGTH+.TBUF/5+XTRA\r
+       CAML    V,SYMBOL        ;WILL WORST CASE FIT?\r
+       PUSHJ   PP,XCEED        ;NO, EXPAND\r
+       MOVS    V,FREE\r
+       HRR     V,PRGPTR        ;LAST PRGEND BLOCK\r
+       HLRM    V,(V)           ;LINK THIS BLOCK\r
+       SKIPN   PRGPTR          ;IF FIRST TIME\r
+       HLLZM   V,PRGPTR        ;SET LINK TO START OF CHAIN\r
+       HLRM    V,PRGPTR        ;POINTER TO IT\r
+       SETZM   @FREE           ;CLEAR LINK WORD\r
+       AOS     FREE            ;THIS LOCATION USED NOW\r
+       MOVS    AC0,SYMBOL      ;BOTTOM OF SYMBOL TABLE\r
+       HRR     AC0,FREE        ;FREE SPACE\r
+       MOVE    V,@SYMBOL       ;GET NUMBER OF SYMBOLS\r
+       ASH     V,1             ;TWO WORDS PER SYMBOL\r
+       ADDI    V,1             ;ONE MORE FOR COUNT\r
+       ADDB    V,FREE          ;END OF TABLE WHEN MOVED\r
+       BLT     AC0,(V)         ;MOVE TABLE\r
+       HRRZ    AC0,JOBREL      ;TOP OF CORE\r
+       SUBI    AC0,1\r
+       MOVEM   AC0,SYMTOP      ;FOR NEXT SYMBOL TABLE\r
+       SUBI    AC0,LENGTH      ;LENGTH OF INITIAL SYMBOLS\r
+       MOVEM   AC0,SYMBOL      ;SET POINTER TO COUNT OF SYMBOLS\r
+       HRLI    AC0,SYMNUM      ;BLT POINTER\r
+       BLT     AC0,@SYMTOP     ;SET UP INITIAL SYMBOL TABLE\r
+       PUSHJ   PP,SRCHI        ;SET UP SEARCH POINTER\r
+       MOVEI   AC0,.TBUF       ;MAX NUMBER OF CHARS. IN TITLE\r
+       SUB     AC0,TCNT        ;ACTUAL NUMBER\r
+       IDIVI   AC0,5           ;NUMBER OF WORDS\r
+       SKIPE   AC1             ;REMAINDER?\r
+       ADDI    AC0,1           ;YES\r
+       MOVEM   AC0,@FREE       ;STORE COUNT\r
+       AOS     FREE            ;THIS LOCATION USED NOW\r
+       EXCH    AC0,FREE        ;SET UP AC0 FOR BLT\r
+       ADDM    AC0,FREE        ;WILL BE AFTER TITLE MOVES\r
+       HRLI    AC0,TBUF        ;BLT POINTER\r
+       BLT     AC0,@FREE       ;MOVE TITLE\r
+       MOVE    AC2,LITHDX      ;POINTER TO LIT INFO.\r
+       MOVE    AC0,-1(AC2)     ;SIZE OF PASS1 LOCO\r
+       PUSHJ   PP,STORIT       ;SAVE IT IN SYMBOL TABLE\r
+       MOVE    AC2,VARHDX      ;SAME FOR VARS\r
+       MOVE    AC0,-1(AC2)\r
+       PUSHJ   PP,STORIT\r
+IFN RENTSW,<\r
+       MOVE    AC0,HISNSW      ;GET TWOSEG/HISEG FLAG\r
+       HRR     AC0,HIGH1       ;AND PASS1 BREAK\r
+       PUSHJ   PP,STORIT\r
+       JUMPGE  AC0,PSEND6      ;NOT TWOSEG\r
+       MOVE    AC0,SVTYP3      ;HIGH SEGMENT OFFSET\r
+       PUSHJ   PP,STORIT       ;SAVE IT ALSO>\r
+PSEND6:        MOVE    AC0,FREE        ;GET NEXT FREE LOCATION\r
+       SUBI    AC0,1           ;LAST ONE USED\r
+       HRRZ    V,PRGPTR        ;POINTER TO START OF DATA BLOCK\r
+       HRLM    AC0,(V)         ;LINK TO END OF BLOCK\r
+       POPJ    PP,             ;RETURN\r
+\r
+\fPSENDX:       PUSHJ   PP,XCEED        ;NEED TO EXPAND CORE FIRST\r
+PSEND5:        HRRZ    AC0,JOBREL      ;GET TOP OF CORE\r
+       SUBI    AC0,1\r
+       MOVEM   AC0,SYMTOP      ;TOP OF NEW SYMBOL TABLE\r
+       HRRZ    V,PRGPTR        ;ADDRESS OF THIS BLOCK\r
+       JUMPE   V,PSNDER        ;ERROR LINK NOT SET UP\r
+       MOVE    AC1,(V)         ;NEXT LINK\r
+       MOVE    V,1(V)          ;GET ITS SYMBOL COUNT\r
+       ASH     V,1             ;NUMBER OF WORDS\r
+       ADDI    V,1             ;PLUS ONE FOR COUNT\r
+       SUBI    AC0,(V)         ;START OF NEW SYMBOL TABLE\r
+       CAMG    AC0,FREE        ;WILL IT FIT\r
+       JRST    PSENDX          ;NO, NEED TO EXPAND AND RESET AC0\r
+       ADD     V,PRGPTR        ;POINT TO END OF SYMBOL TABLE\r
+       MOVEI   V,1(V)          ;THEN TO BEG OF TITLE\r
+       MOVEM   AC0,SYMBOL      ;BOTTOM OF NEW TABLE\r
+       HRL     AC0,PRGPTR      ;ADDRESS OF FIRST WORD OF BLOCK\r
+       ADD     AC0,[1,,0]      ;MAKE BLT POINTER\r
+       HRRM    AC1,PRGPTR      ;POINT TO NEXT BLOCK\r
+       BLT     AC0,@SYMTOP     ;MOVE TABLE\r
+       PUSHJ   PP,SRCHI        ;SET UP POINTER\r
+       MOVE    AC1,(V)         ;NUMBER OF WORDS OF TITLE\r
+       MOVEI   AC0,1(V)        ;START OF STORED TITLE\r
+       ADD     V,AC1           ;INCREMENT PAST TITLE\r
+       ADDI    AC1,TBUF-1      ;END OF TITLE\r
+       HRLI    AC0,TBUF        ;WHERE TO PUT IT\r
+       MOVSS   AC0             ;BLT POINTER\r
+       BLT     AC0,(AC1)       ;MOVE TITLE\r
+       TLO     IO,IOTLSN       ;SET AS IF TITLE SEEN\r
+       MOVE    AC2,LITHDX      ;INVERSE OF ABOVE\r
+       PUSHJ   PP,GETIT\r
+       MOVEM   AC0,-1(AC2)\r
+       MOVE    AC2,VARHDX      ;SAME FOR VARS\r
+       PUSHJ   PP,GETIT\r
+       MOVEM   AC0,-1(AC2)\r
+IFN RENTSW,<\r
+       PUSHJ   PP,GETIT        ;GET TWO HALF WORDS\r
+       HRRZM   AC0,HIGH1       ;PASS1 BREAK\r
+       HLLEM   AC0,HISNSW      ;TWOSEG/HISEG FLAG\r
+       JUMPGE  AC0,CPOPJ       ;NOT TWOSEG\r
+       PUSHJ   PP,GETIT\r
+       MOVEM   AC0,SVTYP3      ;BLOCK 3 WORD>\r
+       POPJ    PP,\r
+\r
+STORIT:        MOVEM   AC0,@FREE       ;STORE IT IN DATA BLOCK\r
+       AOS     FREE            ;ADVANCE POINTER\r
+       POPJ    PP,\r
+\r
+GETIT: MOVE    AC0,1(V)        ;FILL AC0 OUT OF PRGEND BLOCK\r
+       AOJA    V,CPOPJ         ;INCREMENT AND RETURN\r
+\r
+PSNDER:        HRROI   RC,[SIXBIT      /PRGEND ERROR @/]\r
+       JRST    ERRFIN\r
+\f;MULTIPLE SYMBOL TABLE FEATURE PSEUDO-OPS\r
+\r
+IFN UNIVR,<\r
+UNIV0: JUMP2   TITLE0          ;DO IT ALL ON PASS 1\r
+       HRRZ    SX,UNIVNO       ;GET NUMBER OF UNIVERSALS SEEN\r
+       CAIL    SX,.UNIV        ;ALLOW ONE MORE?\r
+       JRST    UNVERR          ;NO, GIVE FATAL ERROR\r
+       AOS     UNIVNO          ;ONE MORE NOW\r
+       SETOM   UNIVSN          ;AND SET SEEN A UNIVERSAL\r
+       JRST    TITLE0          ;CONTINUE AS IF TITLE\r
+\r
+\r
+ADDUNV:        PUSH    PP,RC           ;AN AC TO USE\r
+       PUSHJ   PP,NOUT         ;CONVERT TO SIXBIT\r
+       HRRZ    RC,UNIVNO       ;GET ENTRY INDEX\r
+       MOVEM   AC0,UNITBL(RC)  ;STORE SIXBIT NAME IN TABLE\r
+       HRRZS   UNIVSN          ;ONLY DO IT ONCE\r
+       POP     PP,RC           ;RESTORE RC\r
+       POPJ    PP,             ;AND RETURN\r
+\r
+UNVERR:        HRROI   RC,[SIXBIT /TOO MANY UNIVERSALS@/]\r
+       JRST    ERRFIN\r
+\r
+UNISYM:        HRRZ    AC0,FREE        ;GET HIGHEST FREE LOCATION\r
+       MOVEM   AC0,JOBFF       ;INTO JOBFF\r
+       PUSHJ   PP,SUPRSA       ;TURN ON SUPPRESS BIT\r
+       PUSH    PP,SYMBOL       ;NEED TO SAVE INCASE PRGEND\r
+       MOVE    AC0,SYMTOP      ;TOP OF TABLE\r
+       SUB     AC0,SYMBOL      ;GET LENGTH OF TABLE\r
+       HRL     ARG,SYMBOL      ;BOTTOM OF TABLE\r
+       HRR     ARG,JOBFF       ;WHERE TO GO\r
+       HRRZ    RC,UNIVNO       ;GET TABLE INDEX\r
+       HRRM    ARG,SYMBOL      ;WILL BE THERE SOON\r
+       HRRZM   ARG,UNIPTR(RC)  ;STORE IN CORRESPONDING PLACE\r
+       ADDB    AC0,JOBFF       ;WHERE TO END\r
+       HRLM    AC0,UNIPTR(RC)  ;SAVE NEW SYMTOP\r
+       BLT     ARG,@JOBFF      ;MOVE TABLE\r
+       HRRZM   AC0,UNITOP      ;SAVE TOP OF TABLES+1\r
+       CAMLE   AC0,MACSIZ      ;IN CASE OVER A K BOUND\r
+       MOVEM   AC0,MACSIZ      ;DON'T REDUCE SO FAR NOW\r
+       MOVEM   AC0,FREE        ;JUST IN CASE IN MACRO\r
+       MOVE    AC0,SRCHX       ;SAVE OLD SEARCH POINTER\r
+       PUSHJ   PP,SRCHI        ;GET SEARCH POINTER\r
+       EXCH    AC0,SRCHX\r
+       MOVEM   AC0,UNISHX(RC)  ;SAVE IT\r
+       SETZM   UNIVSN          ;CLEAR FLAG INCASE PRGEND\r
+       POP     PP,SYMBOL       ;RESTORE OLD VALUE\r
+       POPJ    PP,             ;RETURN\r
+\r
+\fSERCH0:       PUSHJ   PP,GETSYM       ;GET A SYMBOL\r
+       JRST    ERRAX           ;ERROR IF NOT VALID\r
+       MOVEI   RC,1            ;START AT ENTRY ONE\r
+       CAIL    RC,.UNIV        ;CHECK FOR CONSISTENCY ERROR\r
+       JRST    SCHERR          ;CANNOT FIND THIS ONE\r
+       CAME    AC0,UNITBL(RC)  ;LOOK FOR MATCH\r
+       AOJA    RC,.-3          ;NOT FOUND YET\r
+       MOVE    AC0,RC          ;STORE TABLE ENTRY NUMBER\r
+       MOVEI   RC,1            ;START AT ENTRY ONE\r
+       CAIL    RC,.UNIV        ;CHECK FOR CONSISTENCY ERROR\r
+       JRST    SCHERR          ;SHOULD NEVER HAPPEN!!\r
+       SKIPE   UNISCH(RC)      ;LOOK FOR AN EMPTY SLOT\r
+       AOJA    RC,.-3          ;NOT FOUND YET\r
+       MOVEM   AC0,UNISCH(RC)  ;STORE INDEX IN TABLE\r
+       JUMPCM  SERCH0          ;LOOK FOR MORE NAMES\r
+       POPJ    PP,             ;FINISHED\r
+\r
+SCHERR:        MOVSI   RC,[SIXBIT /CANNOT FIND UNIVERSAL@/]\r
+       JRST    ERRFIN          ;NAME IN AC0\r
+\r
+;MESSAGE FOR CASE WHERE FILES AFTER UNIVERSAL USED MORE BUFFER SPACE THAN FIRST UNIVERSAL\r
+UNIERR:        HRROI   RC,[SIXBIT /UNIVERSAL PROGRAM(S) MUST HAVE SAME OUTPUT SPECIFICATION AS OTHER FILES@/]\r
+       JRST    ERRFIN\r
+>\r
+\fSUBTTL        MACRO/REPEAT HANDLERS\r
+\r
+REPEA0:        PUSHJ   PP,EVALXQ       ;EVALUATE REPEAT EXP, EXTERNS ARE ILL.\r
+       JUMPNC  ERRAX\r
+\r
+REPEA1:        JUMPLE  AC0,REPZ        ;PASS THE EXP., DONT PROCESS\r
+       SOJE    AC0,REPO        ;REPEAT ONCE\r
+REPEA2:        PUSHJ   PP,GCHARQ       ;GET STARTING "<"\r
+       CAIE    C,"<"\r
+       JRST    REPEA2\r
+       PUSHJ   PP,SKELI1       ;INITIALIZE SKELETON\r
+       PUSH    MP,REPEXP\r
+       MOVEM   AC0,REPEXP\r
+       PUSH    MP,REPPNT       ;STACK PREVIOUS REPEAT POINTER\r
+       MOVEM   ARG,REPPNT      ;STORE NEW POINTER\r
+       TDZA    SDEL,SDEL       ;YES, INITIALIZE BRACKET COUNT AND SKIP\r
+\r
+REPEA4:        PUSHJ   PP,WCHARQ       ;WRITE A CHARACTER\r
+       PUSHJ   PP,GCHARQ       ;GET A CHARACTER\r
+       CAIN    C,"<"           ;"<"?\r
+       AOJA    SDEL,REPEA4     ;YES, INCREMENT AND WRITE\r
+       CAIE    C,">"           ;">"?\r
+       JRST    REPEA4          ;NO, WRITE THE CHARACTER\r
+       SOJGE   SDEL,REPEA4     ;YES, WRITE IF NON-NEGATIVE COUNT\r
+       MOVSI   CS,(BYTE (7) 177,3)     ;SET "REPEAT" END\r
+       PUSHJ   PP,WWRXE        ;WRITE END\r
+       SKIPN   LITLVL          ;LITERAL MIGHT END ON LINE\r
+       SKIPE   MACLVL          ;IF IN MACRO DARE NOT PROCESS\r
+       JRST    .+3             ;REST OF LINE SINCE MACRO MIGHT END ON IT\r
+       PUSHJ   PP,BYPASS       ;BYPASS\r
+       PUSHJ   PP,STOUTS       ;POLISH OF LINE BEFORE PROCESSING REPEAT\r
+       PUSH    MP,MRP          ;STACK PREVIOUS READ POINTER\r
+       PUSH    MP,RCOUNT       ;SAVE WORD COUNT\r
+       HRRZ    MRP,REPPNT      ;SET UP READ POINTER\r
+       SKIPN   MACLVL          ;IF IN MACRO GIVE CR-LF FIRST\r
+       SKIPE   LITLVL          ;SAME FOR LITERAL\r
+       JRST    REPEA7\r
+       AOJA    MRP,POPOUT      ;BYPASS ARG COUNT\r
+\r
+REPEA7:        HRRZ    MRP,REPPNT      ;SET UP READ POINTER\r
+       ADDI    MRP,1           ;BYPASS ARG COUNT\r
+REPEA8:        MOVEI   C,CR\r
+       JRST    RSW1\r
+\r
+REPEND:        SOSL    REPEXP\r
+       JRST    REPEA7\r
+       HRRZ    V,REPPNT        ;GET START OF TREE\r
+       PUSHJ   PP,REFDEC       ;DECREMENT REFERENCE\r
+       POP     MP,RCOUNT\r
+       POP     MP,MRP\r
+       POP     MP,REPPNT\r
+       POP     MP,REPEXP\r
+       SKIPN   LITLVL          ;IF IN LITERAL OR\r
+       SKIPE   MACLVL          ;IF IN MACRO\r
+       JRST    RSW0            ;FINISH OF LINE NOW\r
+       JRST    REPEA8\r
+\r
+\fREPZ: MOVE SDEL,SEQNO2        ;SAVE IN CASE OF END OF FILE\r
+       MOVEM SDEL,REPSEQ\r
+       MOVE SDEL,PAGENO\r
+       MOVEM SDEL,REPPG\r
+       SETOM INREP\r
+       MOVEI SDEL,0    ;SET COUNT\r
+REPZ1: PUSHJ   PP,GCHAR        ;GET NEXT CHARACTER\r
+       CAIN    C,"<"           ;"<"?\r
+       AOJA    SDEL,REPZ1      ;YES, INCREMENT COUNT\r
+       CAIN    C,">"           ;">"?\r
+       SOJLE   SDEL,REPZ2      ;YES, EXIT IF MATCHING\r
+       JRST    REPZ1           ;NO, RECYCLE\r
+REPZ2: SETZM   INREP   ;FLAG OUT OF IT\r
+       SETZM   INCND   ;AND CONDITIONAL ALSO\r
+       JRST    STMNT   ;AND EXIT\r
+\r
+REPO:  PUSHJ   PP,GCHAR        ;GET "<"\r
+       CAIE    C,"<"\r
+       JRST    REPO\r
+       SKIPE   RPOLVL          ;ARE WE NESTED?\r
+       AOS     RPOLVL          ;YES, DECREMENT CURRENT\r
+       PUSH    MP,RPOLVL\r
+       SETOM   RPOLVL\r
+       JRST    STMNT\r
+\r
+REPO1: CAIN    C,"<"\r
+       SOS     RPOLVL\r
+       CAIN    C,">"\r
+       AOSE    RPOLVL\r
+       JRST    RSW2\r
+       POP     MP,RPOLVL\r
+       PUSHJ   PP,RSW2\r
+       JRST    RSW0\r
+\fDEFIN0:       PUSHJ   PP,GETSYM       ;GET MACRO NAME\r
+       JRST    ERRAX           ;EXIT ON ERROR\r
+       MOVEM   PP,PPTMP1       ;SAVE POINTER\r
+       MOVEM   AC0,PPTMP2      ;SAVE NAME\r
+       TLO     IO,IORPTC\r
+       MOVE SX,SEQNO2  ;SAVE IN CASE OF EOF\r
+       MOVEM SX,DEFSEQ\r
+       MOVE SX,PAGENO\r
+       MOVEM SX,DEFPG\r
+       SETOM INDEF     ;AND FLAG IN DEFINE\r
+       SYN     .TEMP,COMSW     ;SAVE SPACE\r
+       SETZB   SX,COMSW        ;SET ARGUMENT AND REFERENCE COUNT AND COMMENT SWITCH\r
+DEF02: PUSHJ   PP,GCHAR        ;SEARCH FOR "(" OR "<"\r
+       CAIG    C,FF            ;SEARCH FOR END OF LINE\r
+       CAIGE   C,LF            ;LF,VT, OR FF\r
+       JRST    .+2             ;WASN'T ANY OF THEM\r
+       SETZM   COMSW           ;RESET COMMENT SWITCH\r
+       CAIN    C,";"           ;COMMENT?\r
+       SETOM   COMSW           ;YES, SET COMMENT SWITCH\r
+       SKIPE   COMSW           ;INSIDE A COMMENT?\r
+       JRST    DEF02           ;YES, IGNORE CHARACTER\r
+       CAIN    C,"<"           ;"<"?\r
+       JRST    DEF20           ;YES\r
+       CAIE    C,"("           ;"("?\r
+       JRST    DEF02           ;NO\r
+DEF10: PUSHJ   PP,GETSYM       ;YES, GET DUMMY SYMBOL\r
+       TRO     ER,ERRA         ;FLAG ERROR\r
+       ADDI    SX,1            ;INCREMENT ARG COUNT\r
+       PUSH    PP,AC0          ;STACK IT\r
+       CAIN    C,'<'           ;A DEFAULT ARGUMENT COMING UP?\r
+       JRST    DEF80           ;YES, STORE IT AWAY\r
+       CAIE    C,11            ;")"?\r
+       JRST    DEF10           ;NO, GET NEXT DUMMY SYMBOL\r
+DEF12: PUSHJ   PP,GCHAR\r
+       CAIE    C,"<"           ;"<"?\r
+       JRST    DEF12           ;NO\r
+DEF20: PUSH    PP,[0]          ;YES, MARK THE LIST\r
+       LSH     SX,9            ;SHIFT ARG COUNT\r
+       AOS     ARG,SX\r
+       PUSHJ   PP,SKELI        ;INITIALIZE MACRO SKELETON\r
+       MOVE    AC0,PPTMP2      ;GET NAME\r
+       TLO IO,DEFCRS\r
+       PUSHJ   PP,MSRCH        ;SEARCH THE TABLE\r
+       JRST    DEF24           ;NOT FOUND\r
+       TLNN    ARG,MACF        ;FOUND, IS IT A MACRO?\r
+       TROA    ER,ERRX         ;NO, FLAG ERROR AND SKIP\r
+       PUSHJ   PP,REFDEC       ;YES, DECREMENT THE REFERENCE\r
+DEF24: HRRZ    V,WWRXX         ;GET START OF TREE\r
+       SKIPN   .TEMP           ;ANY DEFAULT ARGUMENTS TO TAKE CARE OF?\r
+       JRST    DEF25           ;NO\r
+       HRRZ    C,1(V)          ;GET SHIFTED ARG COUNT\r
+       LSH     C,-9            ;GET ARG COUNT BACK\r
+       ADDI    C,1             ;ONE MORE FOR TERMINAL ZERO\r
+       ADD     C,.TEMP         ;NUMBER OF ITEMS IN STACK\r
+       HRLS    C               ;MAKE XWD\r
+       SUB     PP,C            ;BACK UP STACK\r
+       MOVE    SDEL,.TEMP      ;NUMBER OF WORDS NEEDED\r
+       ADDB    SDEL,FREE       ;FROM FREE CORE\r
+       CAML    SDEL,SYMBOL     ;MORE CORE NEEDED\r
+       PUSHJ   PP,XCEEDS       ;YES, TRY TO GET IT\r
+       SUB     SDEL,.TEMP      ;FORM POINTER\r
+       HRLM    SDEL,1(V)       ;STORE IT WITH ARG COUNT IN MACRO\r
+       SUBI    SDEL,1          ;TO USE FOR PUSHING POINTER INTO STORAGE\r
+       MOVEI   C,1(PP)         ;POINT TO START OF STACK\r
+DEF26: MOVE    ARG,(C)         ;GET AN ITEM OFF STACK\r
+       TLNN    ARG,-40         ;A POINTER?\r
+       JUMPN   ARG,[PUSH SDEL,ARG      ;YES, STORE IT\r
+\f              AOJA    C,DEF26]        ;GET NEXT\r
+       PUSH    PP,ARG          ;RESTACK ARGUMENT\r
+       SKIPE   ARG             ;FINISHED IF ZERO\r
+       AOJA    C,DEF26 ;GET NEXT\r
+       PUSH    SDEL,ARG        ;STORE ZERO IN DEFAULT LIST ALSO\r
+\fDEF25:        MOVSI   ARG,MACF\r
+       MOVEM   PP,PPTMP2       ;STORE TEMP STORAGE POINTER\r
+       PUSHJ   PP,INSERT       ;INSERT/UPDATE\r
+       TLZ IO,DEFCRS   ;JUST IN CASE\r
+       SETZM   ARGF            ;NO ARGUMENT SEEN\r
+       SETZM   SQFLG           ;AND NO ' SEEN\r
+       TDZA    SDEL,SDEL       ;CLEAR BRACKET COUNT\r
+DEF30: PUSHJ   PP,WCHAR        ;WRITE CHARACTER\r
+DEF31: PUSHJ   PP,GCHAR        ;GET A CHARACTER\r
+DEF32: MOVE    CS,C            ;GET A COPY\r
+       CAIN    C,";"           ;IS IT A COMMENT\r
+       JRST    CPEEK           ;YES CHECK FOR ;;\r
+DEF33: CAIG CS,"Z"+40          ;CONVERT LOWER CASE\r
+       CAIGE CS,"A"+40\r
+       JRST    .+2\r
+       SUBI CS,40\r
+\f      CAIGE CS,40             ;TEST FOR CONTROL CHAR.\r
+       JRST    [SKIPN  SQFLG   ;HAS SINGLE QUOTE BEEN SEEN?\r
+               JRST    DEF30   ;NO, OUTPUT THIS CHAR.\r
+               PUSH    PP,C    ;YES, SAVE CURRENT CHAR\r
+               MOVEI   C,47    ;SET UP QUOTE\r
+               PUSHJ   PP,WCHAR;WRITE IT\r
+               POP     PP,C    ;GET BACK CURRENT CHAR.\r
+               SETZM   SQFLG   ;RESET FLAG\r
+               JRST    DEF30]  ;AND CONTINUE \r
+       CAILE CS,77+40\r
+       JRST    DEF30           ;TEST FOR SPECIAL\r
+       MOVE    CS,CSTAT-40(CS) ;GET STATUS BITS\r
+\f      TLNE    CS,6            ;ALPHA-NUMERIC?\r
+       JRST    DEF40           ;YES\r
+       SKIPN   SQFLG           ;WAS A ' SEEN?\r
+       JRST    DEF36           ;NO, PROCESH\r
+       PUSH    PP,C            ;YES, SAVE CURRENT CHARACTER\r
+       MOVEI   C,47            ;AND PUT IN A '\r
+       PUSHJ   PP,WCHAR        ;...\r
+       POP     PP,C            ;RESTORE CURRENT CHARACTER\r
+       SETZM   SQFLG           ;AND RESET FLAG\r
+DEF36: CAIE    C,47            ;IS THIS A '?\r
+       JRST    DEF35           ;NOPE\r
+       SKIPN   ARGF            ;YES, WAS LAST THING SEEN AN ARG?\r
+       SETOM   SQFLG           ;IF NOT, SET SNGL QUOT FLAG\r
+       SETZM   ARGF            ;BUT NOT ARGUMENT IN ANY CASE\r
+       JRST    DEF31           ;GO GET NEXT CHARACTER\r
+\fDEF35:        SETZM   ARGF            ;THIS IS NOT AN ARGUMENT\r
+       CAIN    C,"<"           ;"<"?\r
+       AOJA    SDEL,DEF30      ;YES, INCREMENT COUNT AND WRITE\r
+       CAIN    C,">"           ;">"?\r
+       SOJL    SDEL,DEF70      ;YES, TEST FOR END\r
+       JRST    DEF30           ;NO, WRITE IT\r
+\r
+CPEEK: TLNN    IO,IOPALL       ;IF LALL IS ON\r
+       JRST    DEF33           ;JUST RETURN\r
+       PUSHJ   PP,PEEK         ;LOOK AT NEXT CHAR.\r
+       CAIN    C,";"           ;IS IT ;;?\r
+       JRST    CPEEK1          ;YES\r
+       MOVE    C,CS            ;RESTORE C\r
+       JRST    DEF33           ;AND RETURN\r
+\r
+CPEEK1:        PUSHJ   PP,GCHAR        ;GET THE CHAR.\r
+       CAIE    C,">"           ;RETURN IF END OF MACRO\r
+       CAIG    C,CR            ;IS CHAR ONE OF\r
+       CAIGE   C,LF            ;LF,VT,FF,CR\r
+       JRST    CPEEK1          ;NO,SO GET NEXT CHAR.\r
+       JRST    DEF32           ;YES,RETURN AND STORE\r
+\fDEF40:        MOVEI   AC0,0           ;CLEAR ATOM\r
+       MOVSI   AC1,(POINT 6,AC0)       ;SET POINTER\r
+DEF42: PUSH    PP,C            ;STACK CHARACTER\r
+       TLNE    AC1,770000      ;HAVE WE STORED 6?\r
+       IDPB    CS,AC1          ;NO, STORE IN ATOM\r
+       PUSHJ   PP,GCHAR        ;GET NEXT CHARACTER\r
+       MOVE    CS,C\r
+       CAIG CS,"Z"+40\r
+       CAIGE CS,"A"+40\r
+       JRST    .+2\r
+       SUBI CS,40              ;CONVERT LOWER TO UPPER\r
+       CAIL CS,40\r
+       CAILE CS,77+40\r
+       JRST    DEF44           ;TEST SPECIAL\r
+       MOVE    CS,CSTAT-40(CS) ;GET STATUS\r
+       TLNE    CS,6            ;ALPHA-NUMERIC?\r
+       JRST    DEF42           ;YES, GET ANOTHER\r
+DEF44: PUSH    PP,[0]          ;NO, MARK THE LIST\r
+       MOVE    SX,PPTMP1       ;GET POINTER TO TOP\r
+\r
+DEF46: SKIPN   1(SX)           ;END OF LIST?\r
+       JRST    DEF50           ;YES\r
+       CAME    AC0,1(SX)       ;NO, DO THEY COMPARE?\r
+       AOJA    SX,DEF46        ;NO, TRY AGAIN\r
+       SUB     SX,PPTMP1       ;YES, GET DUMMY SYMBOL NUMBER\r
+       LSH SX,4\r
+       MOVSI   CS,<(BYTE (7) 177,101)>(SX)     ;SET ESCAPE CODE MACEND\r
+       LSH     AC0,-^D30\r
+       CAIN    AC0,5           ;"%"?\r
+       TLO     CS,1000         ;YES, SET CRESYM FLAG\r
+       PUSHJ   PP,WWORD        ;WRITE THE WORD\r
+       SETOM ARGF              ;SET ARGUMENT SEEN FLAG\r
+       SETZM SQFLG             ;AND IGNORE ANY ' WAITING TO GET INTO STRING\r
+DEF48: MOVE    PP,PPTMP2       ;RESET PUSHDOWN POINTER\r
+       TLO     IO,IORPTC       ;ECHO LAST CHARACTER\r
+       JRST    DEF31           ;RECYCLE\r
+\r
+DEF50:\r
+       SKIPN   SQFLG           ;HAVE WE SEEN A '?\r
+       JRST    DEF51           ;NOPE\r
+       MOVEI   C,47            ;YES, PUT IT IN\r
+       PUSHJ   PP,WCHAR        ;...\r
+       SETZM   SQFLG           ;AND CLEAR FLAG\r
+DEF51: MOVE    C,2(SX)         ;GET CHARACTER\r
+       JUMPE   C,DEF48         ;CLEAN UP IF END\r
+       PUSHJ   PP,WCHAR        ;WRITE THE CHARACTER\r
+       AOJA    SX,DEF51        ;GET NEXT\r
+\r
+DEF70: MOVE    PP,PPTMP1       ;RESTORE PUSHDOWN POINTER\r
+       MOVSI   CS,(BYTE (7) 177,1)\r
+       PUSHJ   PP,WWRXE        ;WRITE END\r
+       SETZM INDEF     ;OUT OF IT\r
+       JRST    BYPASS\r
+\f; HERE TO STORE DEFAULT ARGUMENTS\r
+\r
+DEF80: AOS     .TEMP           ;COUNT ONE MORE\r
+       PUSHJ   PP,SKELI1       ;INITIALIZE SKELETON\r
+       HRL     V,SX            ;SYMBOL NUMBER\r
+       PUSH    PP,V            ;STORE POINTER\r
+       TDZA    SDEL,SDEL       ;ZERO BRACKET COUNT\r
+DEF81: PUSHJ   PP,WCHARQ       ;WRITE A CHARACTER\r
+       PUSHJ   PP,GCHARQ       ;GET A CHARACTER\r
+       CAIN    C,"<"           ;ANOTHER "<"?\r
+       AOJA    SDEL,DEF81      ;YES, INCREMENT AND WRITE\r
+       CAIE    C,">"           ;CLOSING ANGLE?\r
+       JRST    DEF81           ;NO, JUST WRITE THE CHAR.\r
+       SOJGE   SDEL,DEF81      ;YES, WRITE IF NOT END\r
+       MOVSI   CS,(BYTE (7) 177,2)\r
+       PUSHJ   PP,WWRXE        ;WRITE END OF DUMMY ARGUMENT\r
+       PUSHJ   PP,GCHAR        ;READ AT NEXT CHAR.\r
+       CAIE    C,")"           ;END OF ARGUMENT LIST?\r
+       JRST    DEF10           ;NO, GET NEXT SYMBOL\r
+       JRST    DEF12           ;YES, LOOK FOR "<"\r
+\fSUBTTL        MACRO CALL PROCESSOR\r
+CALLM: SKIPGE  MACENL          ;ARE WE TRYING TO RE-ENTER?\r
+       JRST    ERRAX           ;YES, BOMB OUT WITH ERROR\r
+       HRROS   MACENL          ;FLAG "CALLM IN PROGRESS"\r
+       EXCH    MP,RP\r
+       PUSH    MP,V            ;STACK FOR REFDEC\r
+       EXCH    MP,RP\r
+       MOVEM   AC0,CALNAM      ;SAVE MACRO NAME INCASE OF ERROR\r
+       MOVE SDEL,SEQNO2        ;SAVE IN CASE OF EOF\r
+       MOVEM SDEL,CALSEQ\r
+       MOVE SDEL,PAGENO\r
+       MOVEM SDEL,CALPG\r
+       ADDI    V,1             ;POINT TO DUMMY SYMBOL COUNT\r
+       AOS     SDEL,0(V)       ;INCREMENT ARG COUNT\r
+       HLLZM   SDEL,.TEMP      ;DEFAULT ARG POINTER IF NON-ZERO\r
+       LSHC    SDEL,-^D<9+36>  ;ZERO SDEL, GET ARG COUNT IN SX\r
+       ANDI    SX,777          ;MASK\r
+       SKIPE   .TEMP           ;IF AT LEAST ONE DEFAULT ARG\r
+       HRRM    SX,.TEMP        ;STORE COUNT OF ARGS\r
+       PUSH    PP,V            ;STACK FOR MRP\r
+       PUSH    PP,RP           ;STACK FOR MACPNT\r
+       JUMPE   SX,MAC20        ;TEST FOR NO ARGS\r
+       PUSHJ   PP,CHARAC\r
+       CAIE    C,"("           ;"("\r
+       TROA    SDEL,-1         ;NO, FUDGE PAREN COUNT AND SKIP\r
+\r
+MAC10: PUSHJ   PP,GCHAR        ;GET A CHARACTER, LOOK FOR AN ARG\r
+       CAIG C,CR\r
+       CAIGE C,LF\r
+       CAIN    C,";"           ;";"?\r
+       JRST    MAC21           ;YES, END OF ARGUMENT STRING\r
+\r
+       PUSHJ   PP,SKELI1       ;NO, INITIALIZE SKELETON\r
+       CAIN    C,"<"           ;"<"?\r
+       JRST    MAC30           ;YES, PROCESS AS SPECIAL\r
+       CAIE C,176\r
+       CAIN    C,134           ;"\"\r
+       JRST    MAC40           ;YES, PROCESS SYMBOL\r
+\r
+MAC14: CAIN    C,","           ;","?\r
+       JRST    MAC16           ;YES; NULL SYMBOL\r
+       CAIN    C,"("           ;"("?\r
+       ADDI    SDEL,1          ;YES, INCREMENT COUNT\r
+       CAIN    C,")"           ;")"?\r
+       SOJL    SDEL,MAC16      ;YES, TEST FOR END\r
+       PUSHJ   PP,WCHAR        ;WRITE INTO SKELETON\r
+MAC14A:        PUSHJ   PP,CHARAC       ;GET NEXT CHARACTER\r
+       CAIG C,CR\r
+       CAIGE C,LF\r
+       JRST    .+2\r
+       JRST    MAC15           ;TEST FOR END OF LINE\r
+       CAIE    C,";"           ;";"?\r
+       JRST    MAC14           ;YES, END OF LINE\r
+\r
+MAC15: TLO     IO,IORPTC\r
+MAC16: MOVSI   CS,(BYTE (7) 177,2)\r
+       PUSHJ   PP,WWRXE        ;WRITE END\r
+       EXCH    MP,RP\r
+       PUSH    MP,WWRXX\r
+       EXCH    MP,RP\r
+       SOJLE   SX,MAC20        ;BRANCH IF NO MORE ARGS\r
+       JUMPGE  SDEL,MAC10      ;HAVEN'T SEEN TERMINAL ")" YET\r
+\fMAC20:        TLZN    IO,IORPTC\r
+       PUSHJ   PP,CHARAC\r
+MAC21: EXCH    MP,RP\r
+       JUMPE   SX,MAC21B       ;NO MISSING ARGS\r
+MAC21A:        PUSH    MP,[-1]         ;FILL IN MISSING ARGS\r
+       SKIPN   .TEMP           ;ANY DEFAULT ARGS?\r
+       JRST    MAC21C          ;NO\r
+       HRRZ    C,.TEMP         ;GET ARG COUNT\r
+       SUBI    C,-1(SX)        ;ACCOUNT FOR THOSE GIVEN\r
+       HRLZS   C               ;PUT IN LEFT HALF\r
+       HLRZ    SDEL,.TEMP      ;ADDRESS OF TABLE\r
+MAC21D:        SKIPN   (SDEL)          ;END OF LIST\r
+       JRST    MAC21C          ;YES\r
+       XOR     C,(SDEL)        ;TEST FOR CORRECT ARG\r
+       TLNN    C,-1            ;WAS IT?\r
+       JRST    MAC21E          ;YES\r
+       XOR     C,(SDEL)        ;BACK THE WAY IT WAS\r
+       AOJA    SDEL,MAC21D     ;AND TRY AGAIN\r
+\r
+MAC21E:        MOVEM   C,(MP)          ;REPLACE -1 WITH TREE POINTER\r
+       AOS     1(C)            ;INCREMENT REFERENCE\r
+MAC21C:        SOJG    SX,MAC21A\r
+MAC21B:        PUSH    MP,[0]          ;SET TERMINAL\r
+       HRRZ    C,LIMBO\r
+       TLNN    IO,IOSALL       ;SUPPRESSING ALL?\r
+       JRST    MAC23           ;NO\r
+       JUMPN   MRP,MAC27       ;IN MACRO?\r
+       CAIE    C,";"           ;NO,IN COMMENT?\r
+       JRST    MAC26           ;NO\r
+MAC22: PUSHJ   PP,CHARAC       ;YES,GET IT INTO THE LBUF\r
+       CAIG    C,CR            ;LESS THAN CR?\r
+       CAIGE   C,LF            ;AND GREATER THAN LF?\r
+       JRST    MAC22           ;NO GET ANOTHER\r
+MAC26: HRLZI   SX,70000        ;DECREMENT BYTE POINTER\r
+       ADDB    SX,LBUFP\r
+       JUMPGE  SX,MAC27\r
+       HRLOI   SX,347777\r
+       ADDM    SX,LBUFP\r
+MAC27: HRLI    C,-1            ;SET FLAG\r
+       JRST    MAC25\r
+\r
+MAC23: MOVEI   SX,"^"\r
+       JUMPAD  MAC24           ;BRANCH IF ADDRESS FIELD\r
+       CAIN    C,";"           ;IF SEMI-COLON\r
+       SKIPE   LITLVL          ;AND NOT IN A LITERAL\r
+       JRST    MAC24           ;NOT BOTH TRUE\r
+       JUMPN   MRP,MAC24       ;OR IN A MACRO\r
+       PUSHJ   PP,STOUT        ;LIST COMMENT OR CR-LF\r
+       TLNE    IO,IOPALL       ;MACRO EXPANSION SUPPRESSION?\r
+       TLO     IO,IOMAC        ;  NO, SET TEMP BIT\r
+       TDOA    C,[-1]          ;FLAG LAST CHARACTER\r
+MAC24: DPB     SX,LBUFP        ;SET ^ INTO LINE BUFFER\r
+MAC25: PUSH    MP,MACPNT\r
+       POP     PP,MACPNT\r
+       PUSH    MP,C\r
+       PUSH    MP,RCOUNT       ;STACK WORD COUNT\r
+       PUSH    MP,MRP          ;STACK MACRO POINTER\r
+       POP     PP,MRP          ;SET NEW READ POINTER\r
+       EXCH    MP,RP\r
+       AOS     MACLVL\r
+       HRRZS   MACENL          ;RESET "CALLM IN PROGRESS"\r
+       JUMPOC  STMNT2          ;OP-CODE FIELD\r
+       JRST    EVATOM          ;ADDRESS FIELD\r
+\r
+\fMAC30:        MOVEI   AC0,0           ;INITIALIZE BRACKET COUNTER\r
+MAC31: PUSHJ   PP,GCHAR        ;GET A CHARACTER\r
+       CAIN    C,"<"           ;"<"?\r
+       ADDI    AC0,1           ;YES, INCREMENT COUNT\r
+       CAIN    C,">"           ;">"?\r
+       SOJL    AC0,MAC14A      ;YES, EXIT IF MATCHING\r
+       PUSHJ   PP,WCHAR        ;WRITE INTO SKELETON\r
+       JRST    MAC31           ;GO BACK FOR ANOTHER\r
+\r
+MAC40: PUSH    PP,SX           ;STACK REGISTERS\r
+       PUSH    PP,SDEL\r
+       HLLM    IO,TAGINC       ;SAVE IO FLAGS\r
+       PUSHJ   PP,CELL         ;GET AN ATOM\r
+       MOVE    V,AC0           ;ASSUME NUMERIC\r
+       TLNE    IO,NUMSW        ;GOOD GUESS?\r
+       JRST    MAC41           ;YES\r
+       PUSHJ   PP,SSRCH        ;SEARCH THE SYMBOL TABLE\r
+       TROA    ER,ERRX         ;NOT FOUND, ERROR\r
+MAC41: PUSHJ   PP,MAC42        ;FORM ASCII STRING\r
+       HLL     IO,TAGINC       ;RESTORE IO FLAGS\r
+       POP     PP,SDEL\r
+       POP     PP,SX\r
+       TLO     IO,IORPTC       ;REPEAT LAST CHARACTER\r
+       JRST    MAC14A          ;RETURN TO MAIN SCAN\r
+\r
+MAC42: MOVE    C,V\r
+MAC44: LSHC    C,-^D35\r
+       LSH     CS,-1\r
+       DIVI    C,0(RX)         ;DIVIDE BY CURRENT RADIX\r
+       HRLM    CS,0(PP)\r
+       JUMPE   C,.+2           ;TEST FOR END\r
+       PUSHJ   PP,MAC44\r
+       HLRZ    C,0(PP)\r
+       ADDI    C,"0"           ;FORM TEXT\r
+       JRST    WCHAR           ;WRITE INTO SKELETON\r
+\fMACEN0:       SOS     MACENL\r
+MACEND:        SKIPGE  C,MACENL        ;TEST "CALLM IN PROGRESS"\r
+       AOS     MACENL          ;INCREMENT END LEVEL AND EXIT\r
+       JUMPL   C,REPEA8\r
+       EXCH    MP,RP\r
+       POP     MP,MRP          ;RETRIEVE READ POINTER\r
+       POP     MP,RCOUNT       ;AND WORD COUNT\r
+       MOVEI   C,"^"\r
+       SKIPL   0(MP)           ;TEST FLAG\r
+       PUSHJ   PP,RSW2         ;MARK END OF SUBSTITUTION\r
+       POP     MP,C\r
+       POP     MP,ARG\r
+       SKIPA   MP,MACPNT       ;RESET MP AND SKIP\r
+MACEN1:        PUSHJ   PP,REFDEC       ;DECREMENT REFERENCE\r
+MACEN2:        AOS     V,MACPNT        ;GET POINTER\r
+       MOVE    V,0(V)\r
+       JUMPG   V,MACEN1        ;IF >0, DECREMENT REFERENCE\r
+       JUMPL   V,MACEN2        ;IF <0, BYPASS\r
+       POP     MP,V            ;IF=0, RETRIEVE POINTER\r
+       PUSHJ   PP,REFDEC       ;DECREMENT REFERENCE\r
+       MOVEM   ARG,MACPNT\r
+       EXCH    MP,RP\r
+       SOS     MACLVL\r
+       SKIPN   MACENL          ;CHECK UNPROCESSED END LEVEL\r
+       JRST    MACEN3          ;NONE TO PROCESS\r
+       TRNN    MRP,-1          ;MRP AT END OF TEXT\r
+       JRST    MACEN0          ;THEN POP THE MACRO STACK NOW\r
+MACEN3:        TRNN    C,77400         ;SALL FLAG?\r
+       HRLI    C,0             ;YES,TURN IT OFF\r
+       JUMPL   C,REPEA8        ;IF FLAG SET SUBSTITUTE\r
+       JRST    RSW1\r
+\fIRP0: SKIPN   MACLVL          ;ARE WE IN A MACRO?\r
+       JRST    ERRAX           ;NO, BOMB OUT\r
+IRP10: PUSHJ   PP,MREADS       ;YES, GET DATA SPEC\r
+       CAIE C,40               ;SKIP LEADING BLANKS\r
+       CAIN    C,"("           ;"("?\r
+       JRST    IRP10           ;YES, BYPASS\r
+       CAIN C,11\r
+       JRST IRP10\r
+       CAIE    C,177           ;NO, IS IT SPECIAL?\r
+       JRST    ERRAX           ;NO, ERROR\r
+       PUSHJ   PP,MREADS       ;YES\r
+       TRZN C,100              ;CREATED?\r
+       JRST ERRAX\r
+       CAIL C,40               ;TOO BIG?\r
+       JRST ERRAX\r
+       ADD     C,MACPNT        ;NO, FORM POINTER TO STACK\r
+       PUSH    MP,IRPCF        ;STACK PREVIOUS POINTERS\r
+       PUSH    MP,IRPSW\r
+       PUSH    MP,IRPARP\r
+       PUSH    MP,IRPARG\r
+       PUSH    MP,IRPCNT\r
+       PUSH    MP,0(C)\r
+       PUSH    MP,IRPPOI\r
+\r
+       HRRZM   C,IRPARP\r
+       MOVEM   AC0,IRPCF       ;IRPC FLAG FOUND IN AC0\r
+       SETOM   IRPSW           ;RESET IRP SWITCH\r
+       MOVE    CS,0(C)\r
+       MOVEM   CS,IRPARG\r
+\r
+       PUSHJ   PP,MREADS\r
+       CAIE    C,"<"           ;"<"?\r
+       JRST    .-2             ;NO, SEARCH UNTIL FOUND\r
+       PUSHJ   PP,SKELI1       ;INITIALIZE NEW STRING\r
+       MOVEM   ARG,IRPPOI      ;SET NEW POINTER\r
+\r
+       TDZA    SDEL,SDEL       ;ZERO BRACKET COUNT AND SKIP\r
+IRP20: PUSHJ   PP,WCHAR1\r
+       PUSHJ   PP,MREADS\r
+       CAIN    C,"<"           ;"<"?\r
+       AOJA    SDEL,IRP20      ;YES, INCREMENT COUNT AND WRITE\r
+       CAIE    C,">"           ;">"?\r
+       JRST    IRP20           ;NO, JUST WRITE IT\r
+       SOJGE   SDEL,IRP20      ;YES, WRITE IF NOT MATCHING\r
+       MOVE    CS,[BYTE (7) 15,177,4]\r
+       PUSHJ   PP,WWRXE        ;WRITE END\r
+       PUSH    MP,MRP          ;STACK PREVIOUS READ POINTER\r
+       PUSH    MP,RCOUNT       ;AND WORD COUNT\r
+       SKIPG   CS,IRPARG\r
+       JRST    IRPPOP          ;EXIT IF NOT VALID ARGUMENT\r
+       MOVEI   C,1(CS)         ;INITIALIZE POINTER\r
+       MOVEM   C,IRPARG\r
+\fIRPSET:       EXCH    MRP,IRPARG      ;SWAP READ POINTERS\r
+       MOVE    SX,RCOUNT       ;SWAP COUNT OF WORDS TO READ\r
+       EXCH    SX,IRPCNT\r
+       MOVEM   SX,RCOUNT\r
+       PUSHJ   PP,SKELI1       ;INITIALIZE SKELETON FOR DATA\r
+       HRRZM   ARG,@IRPARP     ;STORE NEW DS POINTER\r
+       SETZB   SX,SDEL         ;ZERO FOUND FLAG AND BRACKET COUNT\r
+       LDB     C,MRP           ;GET LAST CHAR\r
+       CAIN    C,","\r
+       SKIPE   IRPCF           ;IN IRPC\r
+       JRST    IRPSE1          ;NO\r
+       MOVEI   SX,1            ;FORCE ARGUMENT\r
+IRPSE1:        PUSHJ   PP,MREADS\r
+       CAIE    C,177           ;SPECIAL?\r
+       AOJA    SX,IRPSE2       ;NO, FLAG AS FOUND\r
+       PUSHJ   PP,PEEKM        ;LOOK AT NEXT CHARACTER\r
+       SETZM   IRPSW           ;SET IRP SWITCH\r
+       JUMPG   SX,IRPSE4       ;IF ARG FOUND, PROCESS IT\r
+       JRST    IRPPOP          ;NO, CLEAN UP AND EXIT\r
+\r
+IRPSE2:        SKIPE   IRPCF           ;IRPC?\r
+       JRST    IRPSE3          ;YES, WRITE IT\r
+       CAIN    C,","           ;NO, IS IT A COMMA?\r
+       JUMPE   SDEL,IRPSE4     ;YES, EXIT IF NOT NESTED\r
+       CAIN    C,"<"           ;"<"?\r
+       ADDI    SDEL,1          ;YES, INCREMENT COUNT\r
+       CAIN    C,">"           ;">"?\r
+       SUBI    SDEL,1          ;YES, DECREMENT COUNT\r
+\r
+IRPSE3:        PUSHJ   PP,WCHAR\r
+       SKIPN   IRPCF           ;IRPC?\r
+       JRST    IRPSE1          ;NO, GET NEXT CHARACTER\r
+\r
+IRPSE4:        MOVSI   CS,(BYTE (7) 177,2)\r
+       PUSHJ   PP,WWRXE        ;WRITE END\r
+       MOVEM   MRP,IRPARG      ;SAVE POINTER\r
+       MOVE    MRP,RCOUNT      ;SAVE COUNT\r
+       MOVEM   MRP,IRPCNT\r
+       HRRZ    MRP,IRPPOI      ;SET FOR NEW SCAN\r
+       AOJA    MRP,REPEA8      ;ON ARG COUNT\r
+\fSTOPI0:       SKIPN   IRPARP          ;IRP IN PROGRESS?\r
+       JRST    ERRAX           ;NO, ERROR\r
+       SETZM   IRPSW           ;YES, SET SWITCH\r
+       POPJ    PP,\r
+\r
+IRPEND:        MOVE    V,@IRPARP\r
+       PUSHJ   PP,REFDEC\r
+       SKIPE   IRPSW           ;MORE TO COME?\r
+       JRST    IRPSET          ;YES\r
+\r
+IRPPOP:        MOVE    V,IRPPOI\r
+       PUSHJ   PP,REFDEC       ;DECREMENT REFERENCE\r
+       POP     MP,RCOUNT\r
+       POP     MP,MRP          ;RESTORE CELLS\r
+       POP     MP,IRPPOI\r
+       POP     MP,@IRPARP\r
+       POP     MP,IRPCNT\r
+       POP     MP,IRPARG\r
+       POP     MP,IRPARP\r
+       POP     MP,IRPSW\r
+       POP     MP,IRPCF\r
+       JRST    REPEA8\r
+\fGETDS:                                ;GET DUMMY SYMBOL NUMBER\r
+       MOVE    CS,C            ;USE CS FOR WORK REGISTER\r
+       ANDI    CS,37           ;MASK\r
+       ADD     CS,MACPNT       ;ADD BASE ADDRESS\r
+       MOVE    V,0(CS)         ;GET POINTER FLAG\r
+       JUMPG   V,GETDS1        ;BRANCH IF POINTER\r
+       TRNN    C,40            ;NOT POINTER, SHOULD WE CREATE?\r
+       JRST    RSW0            ;NO, FORGET THIS ARG\r
+       PUSH    PP,WWRXX\r
+       PUSH    PP,MWP          ;STACK MACRO WRITE POINTER\r
+       PUSH    PP,WCOUNT       ;SAVE WORD  COUNT\r
+       PUSHJ   PP,SKELI1       ;INITIALIZE SKELETON\r
+       MOVEM   ARG,0(CS)       ;STORE POINTER\r
+       MOVE    CS,[BYTE (7) 0,170,170,170,171] ;CREATE A SYMBOL\r
+       ADD     CS,LSTSYM               ;LSTSYM= # OF LAST CREATED\r
+       TDZ     CS,[BYTE (7) 0,170,170,170,170]\r
+       MOVEM   CS,LSTSYM\r
+       IOR     CS,[ASCII /.0000/]\r
+       MOVEI C,"."\r
+       PUSHJ PP,WCHAR\r
+       PUSHJ   PP,WWORD        ;WRITE INTO SKELETON\r
+       MOVSI   CS,(BYTE (7) 177,2)\r
+       PUSHJ   PP,WWRXE        ;WRITE END CODE\r
+       POP     PP,WCOUNT       ;RESTORE WORD COUNT\r
+       POP     PP,MWP          ;RESTORE MACRO WRITE POINTER\r
+       POP     PP,WWRXX\r
+       MOVE    V,ARG           ;SET UP FOR REFINC\r
+\r
+GETDS1:        PUSHJ   PP,REFINC       ;INCREMENT REFERENCE\r
+       HRL     V,RCOUNT        ;SAVE WORD COUNT\r
+       PUSH    MP,V            ;STACK V FOR DECREMENT\r
+       PUSH    MP,MRP          ;STACK READ POINTER\r
+       MOVEI   MRP,1(V)        ;FORM READ POINTER\r
+       JRST    RSW0            ;EXIT\r
+\r
+DSEND: POP     MP,MRP\r
+       POP     MP,V\r
+       HLREM   V,RCOUNT        ;RESTORE WORD COUNT\r
+       HRRZS   V               ;CLEAR COUNT\r
+       PUSHJ   PP,REFDEC       ;DECREMENT REFERENCE\r
+       JRST    RSW0            ;EXIT\r
+\fSKELI1:       MOVEI   ARG,1           ;ENTRY FOR SINGLE ARG\r
+SKELI: SETZ    MWP,            ;SIGNAL FIRST TIME THROUGH\r
+       PUSHJ   PP,SKELWL       ;GET POINTER WORD\r
+       HRRZM   MWP,WWRXX       ;SAVE FIRST ADDRESS\r
+       HRRZM   MWP,LADR        ;SAVE START OF LINKED LIST\r
+       HRRZM   ARG,1(MWP)      ;STORE COUNT\r
+       SOS     WCOUNT          ;ACCOUNT FOR WORD\r
+       HRRZ    ARG,WWRXX       ;SET FIRST ADDRESS\r
+       ADDI    MWP,2           ;BUMP POINTER\r
+       HRLI    MWP,(POINT 7)   ;SET FOR 5 ASCII BYTES\r
+       ;SKELW RETURNS WITH ADR OF NEXT FREE LOC IN V (RIGHT)\r
+\r
+SKELW: SOSLE   WCOUNT          ;STILL SOME SPACE IN LEAF?\r
+       POPJ    PP,             ;YES, RETURN\r
+SKELWL:        SKIPE   V,NEXT          ;GET FIRST FREE ADDRESS\r
+       JRST    SKELW1          ;IF NON-ZERO, UPDATE FREE\r
+       MOVE    V,FREE          ;GET FREE\r
+       ADDI    V,.LEAF         ;INCREMENT BY LEAF SIZE\r
+       CAML    V,SYMBOL        ;OVERFLOW?\r
+       PUSHJ   PP,XCEED        ;YES, BOMB OUT\r
+       EXCH    V,FREE          ;UPDATE FREE\r
+       SETZM   (V)             ;CLEAR LINK\r
+\r
+SKELW1:        HLL     V,0(V)          ;GET ADDRESS\r
+       HLRM    V,NEXT          ;UPDATE NEXT\r
+       SKIPE   MWP             ;IF FIRST TIME\r
+       HRLM    V,1-.LEAF(MWP)  ;STORE LINK IN FIRST WORD OF LEAF\r
+       MOVEI   MWP,.LEAF       ;SIZE OF LEAF\r
+       MOVEM   MWP,WCOUNT      ;STORE FOR COUNT DOWN\r
+       MOVEI   MWP,(V)         ;SET UP WRITE POINTER\r
+       TLO     MWP,(POINT 7,,21)       ;2 ASCII CHARS\r
+       POPJ    PP,\r
+\r
+       ;WWRXX  POINTS TO END OF TREE\r
+       ;MWP    IDPB POINTER TO NEXT HOLE\r
+       ;NEXT   FIRST OF A LINKED PORTION THAT IS NOT BEING USED (LEAVES)\r
+       ;FREE   POINTS TO FREE CORE BETWEEN TREE AND SYM-TABLE\r
+       ;LADR   POINTS TO BEG OF LINKED PORTION.\r
+\fGCHARQ:       JUMPN   MRP,MREADS      ;IF GETTING CHAR. FROM TREE\r
+GCHAR: PUSHJ   PP,CHARAC       ;GET ASCII CHARACTER\r
+       CAIG    C,FF            ;TEST FOR LF, VT OR FF\r
+       CAIGE   C,LF\r
+       POPJ    PP,             ;NO\r
+       JRST    OUTIM1          ;YES, LIST IT\r
+\r
+WCHARQ:\r
+WCHAR: \r
+WCHAR1:        TLNN    MWP,760000      ;END OF WORD?\r
+       PUSHJ   PP,SKELW        ;YES, GET ANOTHER\r
+       IDPB    C,MWP           ;STORE CHARACTER\r
+       POPJ    PP,\r
+\r
+WWORD: LSHC    C,7             ;MOVE ASCII INTO C\r
+       PUSHJ   PP,WCHAR1       ;STORE IT\r
+       JUMPN   CS,WWORD        ;TEST FOR END\r
+       POPJ    PP,             ;YES, EXIT\r
+\r
+WWRXE: PUSHJ   PP,WWORD        ;WRITE LAST WORD\r
+       ADD     MWP,WCOUNT      ;GET TO END OF LEAF\r
+       SUBI    MWP,.LEAF       ;NOW POINT TO START OF IT\r
+       HRRZS   (MWP)           ;ZERO LEFT HALF OF LAST LEAF\r
+       HRRM    MWP,@WWRXX      ;SET POINTER TO END\r
+       POPJ    PP,\r
+\fMREAD:        PUSHJ   PP,MREADS       ;READ ONE CHARACTER\r
+       CAIE    C,177           ;SPECIAL?\r
+       JRST    RSW1            ;NO, EXIT\r
+       PUSHJ   PP,MREADS       ;YES, GET CODE WORD\r
+       TRZE C,100              ;SYMBOL?\r
+       JRST GETDS              ;YES\r
+       CAILE C,4               ;POSSIBLY ILLEGAL\r
+       JRST ERRAX              ;YUP\r
+       HRRI    MRP,0           ;NO, SIGNAL END OF TEXT\r
+       JRST    .+1(C)\r
+       PUSHJ   PP,XCEED\r
+       JRST    MACEND          ;1; END OF MACRO\r
+       JRST    DSEND           ;2; END OF DUMMY SYMBOL\r
+       JRST    REPEND          ;3; END OF REPEAT\r
+       JRST    IRPEND          ;4; END OF IRP\r
+\r
+MREADI:        HRLI    MRP,700         ;SET UP BYTE POINTER\r
+       MOVEI   C,.LEAF-1       ;NUMBER OF WORDS\r
+       MOVEM   C,RCOUNT\r
+MREADS:        TLNN    MRP,-1          ;FIRST TIME HERE?\r
+       JRST    MREADI          ;YES, SET UP MRP AND RCOUNT\r
+       TLNN    MRP,760000      ;HAVE WE FINISHED WORD?\r
+       SOSLE   RCOUNT          ;YES, STILL ROOM IN LEAF?\r
+       JRST    MREADC          ;STILL CHAR. IN LEAF\r
+       HLRZ    MRP,1-.LEAF(MRP);YES, GET LINK\r
+       HRLI    MRP,(POINT 7,,21)       ;SET POINTER\r
+       MOVEI   C,.LEAF         ;RESET COUNT\r
+       MOVEM   C,RCOUNT\r
+MREADC:        ILDB    C,MRP           ;GET CHARACTER\r
+       POPJ    PP,\r
+\r
+PEEK:  JUMPN   MRP,PEEKM       ;THIS IS A MACRO READ\r
+       PUSHJ   PP,CHARAC       ;READ AN ASCII CHAR.\r
+       TLO     IO,IORPTC       ;REPEAT  FOR NEXT\r
+       POPJ    PP,             ;AND RETURN\r
+\r
+PEEKM: PUSH    PP,MRP          ;SAVE MACRO READ POINTER\r
+       PUSH    PP,RCOUNT       ;SAVE WORD COUNT\r
+       PUSHJ   PP,MREADS       ;READ IN A CHAR.\r
+       POP     PP,RCOUNT       ;RESTORE WORD COUNT\r
+       POP     PP,MRP          ;RESET READ POINTER\r
+       POPJ    PP,             ;IORPTC IS NOT SET\r
+\fREFINC:       MOVEI   CS,1(V)         ;GET POINTER TO TREE\r
+       AOS     0(CS)           ;INCREMENT REFERENCE\r
+       POPJ    PP,\r
+\r
+REFDEC:        JUMPLE  V,DECERR        ;CATASTROPHIC ERROR SOMEWHERE\r
+       MOVEI   CS,1(V)         ;GET POINTER TO TREE\r
+       SOS     CS,0(CS)        ;DECREMENT REFERENCE\r
+       TRNE    CS,000777       ;IS IT ZERO?\r
+       POPJ    PP,             ;NO, EXIT\r
+       HRRZ    CS,0(V)         ;YES, GET POINTER TO END\r
+       HRL     CS,NEXT         ;GET POINTER TO NEXT RE-USABLE\r
+       HLLM    CS,0(CS)        ;SET LINK\r
+       HRRM    V,NEXT          ;RESET NEXT\r
+       POPJ    PP,\r
+\r
+DECERR:        MOVE    AC0,CALNAM      ;GET MACRO NAME\r
+       MOVSI   RC,[SIXBIT /ERROR WHILE EXPANDING@/]\r
+       PUSHJ   PP,TYPMSG\r
+       JRST    ERRNE2          ;COMMON MESSAGE\r
+\fA==   0                       ;ASCII MODE\r
+AL==   1                       ;ASCII LINE MODE\r
+IB==   13                      ;IMAGE BINARY MODE\r
+B==    14                      ;BINARY MODE\r
+DMP==16                ;DUMP MODE\r
+\r
+CTL==  0                       ;CONTROL DEVICE NUMBER\r
+IFN CCLSW,<CTL2==4             ;INPUT DEV FOR CCL FILE>\r
+BIN==  1                       ;BINARY DEVICE NUMBER\r
+CHAR== 2                       ;INPUT DEVICE NUMBER\r
+LST==  3                       ;LISTING DEVICE NUMBER\r
+\r
+;      COMMAND STRING ACCUMULATORS\r
+\r
+ACDEV==        1                       ;DEVICE\r
+ACFILE==2                      ;FILE\r
+ACEXT==        3                       ;EXTENSION\r
+ACPPN== 4                      ;PPN\r
+ACDEL==        4                       ;DELIMITER\r
+ACPNTR==5                      ;BYTE POINTER\r
+\r
+TIO==  6\r
+\r
+TIORW==        1000\r
+TIOLE==        2000\r
+TIOCLD==20000\r
+\r
+DIRBIT==4              ;DIRECTORY DEVICE\r
+TTYBIT==10             ;TTY\r
+MTABIT==20             ;MTA\r
+DTABIT==100            ;DTA\r
+DISBIT==2000           ;DISPLAY\r
+CONBIT==20000          ;CONTROLING TTY\r
+LPTBIT==40000          ;LPT\r
+DSKBIT==200000         ;DSK\r
+\r
+;GETSTS ERROR BITS\r
+\r
+IOIMPM==400000         ;IMPROPER MODE (WRITE LOCK)\r
+IODERR==200000         ;DEVICE DATA ERROR\r
+IODTER==100000         ;CHECKSUM OR PARITY ERROR\r
+IOBKTL== 40000         ;BLOCK TOO LARGE\r
+ERRBIT==IOIMPM!IODERR!IODTER!IOBKTL\r
+\r
+SYN    .TEMP,PPN\r
+\fSUBTTL        I/O ROUTINES\r
+BEG:\r
+IFN CCLSW,<TLZA        IO,ARPGSW       ;DON'T ALLOW RAPID PROGRAM GENERATION\r
+       TLO     IO,ARPGSW       ;ALLOW RAPID PROGRAM GENERATION>\r
+       HRRZ    MRP,JOBREL      ;GET LOWSEG SIZE\r
+       MOVEM   MRP,MACSIZ      ;SAVE CORE SIZE\r
+                               ;DECODE VERSION NUMBER\r
+       MOVEI   PP,JOBFFI       ;TEMP PUSH DOWN STACK\r
+       PUSH    PP,[0]          ;MARK BOTTOM OF STACK\r
+       LDB     0,[POINT 3,JOBVER,2]    ;GET USER BITS\r
+       JUMPE   0,GETE          ;NOT SET IF ZERO\r
+       ADDI    0,"0"           ;FORM NUMBER\r
+       PUSH    PP,0            ;STACK IT\r
+       MOVEI   0,"-"           ;SEPARATE BY HYPHEN\r
+       PUSH    PP,0            ;STACK IT ALSO\r
+GETE:  HRRZ    0,JOBVER        ;GET EDIT NUMBER\r
+       JUMPE   0,GETU          ;SKIP ALL THIS IF ZERO\r
+       MOVEI   1,")"           ;ENCLOSE IN PARENS.\r
+       PUSH    PP,1\r
+GETED: IDIVI   0,8             ;GET OCTAL DIGITS\r
+       ADDI    1,"0"           ;MAKE ASCII\r
+       PUSH    PP,1            ;STACK IT\r
+       JUMPN   0,GETED         ;LOOP TIL DONE\r
+       MOVEI   0,"("           ;OTHER PAREN.\r
+       PUSH    PP,0\r
+GETU:  LDB     0,[POINT 6,JOBVER,17]   ;UPDATE NUMBER\r
+       JUMPE   0,GETV          ;SKIP IF ZERO\r
+       IDIVI   0,8             ;MIGHT BE TWO DIGITS\r
+       ADDI    1,"@"           ;FORM ALPHA\r
+       PUSH    PP,1\r
+       JUMPN   0,GETU+1        ;LOOP IF NOT DONE\r
+GETV:  LDB     0,[POINT 9,JOBVER,11]   ;GET VERSION NUMBER\r
+       IDIVI   0,8             ;GET DIGIT\r
+       ADDI    1,"0"           ;TO ASCII\r
+       PUSH    PP,1            ;STACK\r
+       JUMPN   0,GETV+1        ;LOOP\r
+       MOVE    1,[POINT 7,VBUF+1,13]   ;POINTER TO DEPOSIT IN VBUF\r
+       POP     PP,0            ;GET CHARACTER\r
+       IDPB    0,1             ;DEPOSIT IT\r
+       JUMPN   0,.-2           ;KEEP GOING IF NOT ZERO\r
+\fIFN CCLSW,<\r
+       TLZA    IO,CRPGSW       ;SET TO INIT NEW COMMAND FILE\r
+M:     TLNN    IO,CRPGSW       ;CURRENTLY DOING RPG?>\r
+IFE CCLSW,<M:>\r
+       RESET                   ;INITIALIZE PROGRAM\r
+       SETZM   BINDEV          ;CLEAR INCASE NOT USED NEXT TIME\r
+       SETZM   LSTDEV          ;SAME REASON\r
+       SETZM   INDEV           ;INCASE OF ERROR\r
+       HRRZ    MRP,MACSIZ      ;GET INITIAL SIZE\r
+       CORE    MRP,            ;BACK TO ORIGINAL SIZ4\r
+       JFCL                    ;SHOULD NEVER FAIL\r
+       SETZB   MRP,PASS1I\r
+       MOVE    [XWD PASS1I,PASS1I+1]\r
+       BLT     PASS2X-1        ;ZERO THE PASS1 AND PASS2 VARIABLES\r
+       MOVEI   PP,JOBFFI       ;SET TEMP PUSH-DOWN POINTER\r
+;      MOVE    CS,[POINT 7,DBUF,6]     ;INITIALIZE FOR DATE\r
+;      MSTIME  2,              ;GET TIME FROM MONITOR\r
+;      PUSHJ   PP,TIMOUT       ;TIME FORMAT OUTPUT\r
+;      DATE    1,              ;GET DATE\r
+;      IBP     CS              ;PASS OVER PRESET SPACE\r
+;      PUSHJ   PP,DATOUT       ;DATE FORMAT OUTPUT\r
+       MOVSI   FR,P1!CREFSW\r
+IFN CCLSW,<TLNE        IO,CRPGSW       ;RPG IN PROGRESS?\r
+       JRST    GOSET           ;YES, GO READ NEXT COMMAND\r
+       TLNE    IO,ARPGSW       ;NO, RPG ALLOWED?\r
+       JRST    RPGSET          ;YES, GO TRY\r
+CTLSET:        RELEASE CTL2,           ;IN CASE OF LOOKUP FAILURE>\r
+IFE CCLSW,<CTLSET:>\r
+       MOVSI   IO,IOPALL       ;ZERO FLAGS\r
+       INIT    CTL,AL          ;INITIALIZE USER CONSOLE\r
+       SIXBIT  /TTY/\r
+       XWD     CTOBUF,CTIBUF\r
+       EXIT                    ;NO TTY, NO ASSEMBLY\r
+       MOVSI   C,(SIXBIT /TTY/)\r
+       DEVCHR  C,              ;GET CHARACTERISTICS\r
+       TLNN    C,10            ;IS IT REALLY A TTY\r
+       EXIT                    ;NO\r
+       INBUF   CTL,1           ;INITIALIZE SINGLE CONTROL\r
+       OUTBUF  CTL,1           ;BUFFERS\r
+       PUSHJ   PP,CRLF         ;OUTPUT CARRIAGE RETURN - LINE FEED\r
+       MOVEI   C,"*"\r
+       IDPB    C,CTOBUF+1\r
+       OUTPUT  CTL,\r
+       INPUT   CTL,\r
+\fIFN CCLSW,<JRST BINSET                ;BEGIN WITH BINARY FILE\r
+\r
+RPGSET:\r
+       INIT    CTL2,AL         ;LOOK FOR DISK\r
+       SIXBIT  /DSK/           ;...\r
+       XWD     0,CTLBLK        ;...\r
+       JRST    CTLSET          ;DSK NOT THERE\r
+\r
+       HRLZI   3,(SIXBIT /MAC/)        ;###MAC\r
+       MOVEI   3                       ;COUNT\r
+       PJOB    AC1,                    ;RETURNS JOB NO. TO AC1\r
+RPGLUP:        IDIVI   AC1,12                  ;CONVERT\r
+       ADDI    AC2,"0"-40              ;SIXBITIZE IT\r
+       LSHC    AC2,-6                  ;\r
+       SOJG    0,RPGLUP                ;3 TIMES\r
+       MOVEM   3,CTLBUF                ;###MAC\r
+       HRLZI   (SIXBIT /TMP/)          ;\r
+       MOVEM   CTLBUF+1                ;TMP\r
+       SETZM   CTLBUF+3                ;PROG-PRO\r
+       LOOKUP  CTL2,CTLBUF             ;COMMAND FILE\r
+       JRST    CTLSET                  ;NOT THERE\r
+       HLRM    EXTMP                   ;SAVE THE EXTENSION\r
+\r
+RPGS2: INBUF   CTL2,1          ;SINGLE BUFFERED\r
+RPGS2A:        INIT    CTL,AL          ;TTY FOR CONSOLE MESSAGES\r
+       SIXBIT  /TTY/           ;...\r
+       XWD     CTOBUF,0        ;...\r
+       EXIT                    ;NO TTY, NO ASSEMBLY\r
+       OUTBUF  CTL,1           ;SINGLE BUFFERED\r
+       MOVE    JOBFF           ;REMEMBER WHERE BINARY BUFFERS BEGIN\r
+       MOVEM   SAVFF           ;...\r
+       HRRZ    JOBREL          ;TOP OF CORE\r
+       CAMLE   MACSIZ          ;SEE IF IT HAS GROWN\r
+       MOVEM   MACSIZ          ;PREVENTS ADDRESS CHECK ON EXIT\r
+       TLNE IO,CRPGSW  ;ARE WE ALREADY IN RPG MODE?\r
+       JRST M  ;MUST HAVE COME FROM @ COMMAND, RESET\r
+\r
+\fGOSET:        MOVSI   IO,IOPALL!CRPGSW        ;SET INITIAL FLAGS\r
+       MOVEI   CS,CTLSIZ       ;MAXIMUM CHARS IN A LINE\r
+       MOVE    AC1,CTLBLK+2    ;NUMBER OF CHARACTERS\r
+       MOVEM   AC1,CTIBUF+2    ;SAVE FOR PASS 2\r
+       MOVE    AC1,[POINT 7,CTLBUF]    ;WHERE TO STASH CHARS\r
+       MOVEM   AC1,CTIBUF+1    ;...\r
+GOSET1:        SOSG    CTLBLK+2        ;ANY MORE CHARS?\r
+       PUSHJ   PP,[IN CTL2,            ;READ ANOTHER BUFFERFUL\r
+                  POPJ PP,             ;EVERYTHING OK, RETURN\r
+                  STATO CTL2,20000     ;EOF?\r
+                  JRST [HRROI RC,[SIXBIT /ERROR READING COMMAND FILE@/]\r
+                       JRST ERRFIN]            ;GO COMPLAIN\r
+                  PUSHJ PP,DELETE      ;CMD FILE\r
+                  EXIT]                ;EOF AND FINISHED\r
+       ILDB    C,CTLBLK+1      ;GET NEXT CHAR\r
+       MOVE    RC,@CTLBLK+1    ;CHECK FOR SEQUENCE NUMBERS\r
+       TRNE    RC,1            ;...\r
+       JRST    [AOS    CTLBLK+1        ;SKIP OVER ANOTHER 5 CHARS\r
+               MOVNI   RC,5            ;...\r
+               ADDM    RC,CTLBLK+2     ;...\r
+               JRST    GOSET1  ]       ;GO READ ANOTHER CHAR\r
+       JUMPE   C,GOSET1        ;IGNORE NULLS\r
+       IDPB    C,CTIBUF+1      ;STASH AWAY\r
+       AOS     CTIBUF+2        ;INCREMENT CHAR. COUNT\r
+       CAIE    C,12            ;LINE FEED OR\r
+       CAIN    C,175           ;ALTMODE?\r
+       JRST    GOSET2          ;YES, FINISHED WITH COMMAND\r
+       CAIE    C,176\r
+       CAIN    C,33\r
+       JRST    GOSET2          ;ALTMODE.\r
+       SOJG    CS,GOSET1       ;GO READ ANOTHER\r
+       HRROI   RC,[SIXBIT /COMMAND LINE TOO LONG@/]\r
+       JRST    ERRFIN          ;GO COMPLAIN\r
+GOSET2:        MOVEI   C,12            ;MAKE SURE THERE'S A LF\r
+       IDPB    C,CTIBUF+1      ;...\r
+       MOVEM   AC1,CTIBUF+1    ;SET POINTER TO BEGINNING\r
+       AOS     CTIBUF+2        ;ADD I TO COUNT\r
+       MOVE    SAVFF           ;RESET JOBFF FOR NEW BINARY\r
+       MOVEM   JOBFF           ;...\r
+       JRST BINSET\r
+\f\r
+RPGS1: PUSHJ   PP,DELETE       ;DELETE COMMAND FILE\r
+       MOVEM   ACDEV,RPGDEV    ;GET SET TO INIT\r
+       OPEN    CTL2,RPGINI     ;DO IT\r
+       JRST    EINIT           ;ERROR\r
+       MOVEM   ACFILE,INDIR    ;USE INPUT BLOCK\r
+       MOVEM   ACPPN,INDIR+3   ;SET PPN \r
+       MOVEM   ACEXT,INDIR+1\r
+       LOOKUP  CTL2,INDIR\r
+       JRST    [JUMPN  ACEXT,RPGLOS    ;GIVE UP ,EXPLICIT EXTENSION\r
+       MOVSI   ACEXT,(SIXBIT /CCL/)    ;IF BLANK TRY CCL\r
+               JRST    .-2     ]\r
+       HLRM    ACEXT,EXTMP     ;SAVE THE EXTENSION\r
+       HLRZ    JOBSA           ;RESET JOBFF TO ORIGINAL\r
+       MOVEM   JOBFF\r
+       TLO     IO,CRPGSW       ;TURN ON SWITCH SO WE RESET WORLD\r
+       JRST    RPGS2           ;AND GO\r
+RPGLOS:        RELEAS  CTL2,0\r
+       TLZ     IO,CRPGSW       ;STOPS IO TO UNASGD CHAN\r
+       JRST    ERRCF           ;NO FILE FOUND\r
+>\r
+\fBINSET:       PUSHJ   PP,NAME1        ;GET FIRST NAME\r
+IFN CCLSW,<CAIN        C,"!"           ;WAS THIS AN IMPERATIVE?\r
+       JRST    NUNSET          ;GET THEE TO A NUNNERY\r
+       CAIN C,"@"      ;CHEK FOR A NEW RPG FILE\r
+       JRST RPGS1>\r
+       TLNN    FR,CREFSW       ;CROSS REF REQUESTED?\r
+       JRST    LSTSE1          ;YES, SKIP BINARY\r
+       CAIN    C,","           ;COMMA?\r
+       JUMPE   ACDEV,LSTSET    ;YES, SKIP BINARY IF NO DEVICE SPECIFIED\r
+       CAIN    C,"_"           ;LEFT ARROW?\r
+       JUMPE   ACDEV,LSTSE1    ;YES, SKIP BINARY IF NO DEVICE SPECIFIED\r
+       JUMPE   ACDEV,M         ;IGNORE IF JUST <CR-LF>\r
+       TLO     FR,PNCHSW       ;OK, SET SWITCH\r
+       MOVEM   ACDEV,BINDEV    ;STORE DEVICE NAME\r
+       MOVEM   ACFILE,BINDIR   ;STORE FILE NAME IN DIRECTORY\r
+       JUMPN   ACEXT,.+2       ;EXTENSION SPECIFIED?\r
+       MOVSI   ACEXT,(SIXBIT /REL/)    ;NO, ASSUME RELOCATABLE BINARY\r
+       MOVEM   ACEXT,BINDIR+1  ;STORE IN DIRECTORY\r
+       MOVEM   ACPPN,BINDIR+3  ;SET PPN\r
+       OPEN    BIN,BININI      ;INITIALIZE BINARY\r
+       JRST    EINIT           ;ERROR\r
+       TLZE TIO,TIOLE          ;SKIP TO EOT\r
+       MTAPE BIN,10\r
+       TLZE    TIO,TIORW       ;REWIND REQUESTED?\r
+       MTAPE   BIN,1           ;YES\r
+       JUMPGE  CS,BINSE2       ;BRANCH IF NO BACK-SPACE\r
+       MTAPE   BIN,17          ;BACK-SPACE A FILE\r
+       AOJL    CS,.-1          ;TEST FOR END\r
+       WAIT    BIN,\r
+       STATO   BIN,1B24        ;LOAD POINT?\r
+       MTAPE   BIN,16          ;NO, GO FORWARD ONE\r
+BINSE2:        SOJG    CS,.-1          ;TEST FORWARD SPACING\r
+\r
+       TLNE    TIO,TIOCLD      ;DIRECTORY CLEAR REQUESTED?\r
+       UTPCLR  BIN,            ;YES, CLEAR IT\r
+       OUTBUF  BIN,2           ;SET UP TWO RING BUFFER\r
+       CAIN    C,"_"\r
+       JRST    GETSET          ;NO LISTING\r
+\fLSTSET:       PUSHJ   PP,NAME1        ;GET NEXT DEVICE\r
+LSTSE1:        CAIE    C,"_"\r
+       JRST    ERRCM\r
+       TLNE    FR,CREFSW       ;CROSS-REF REQUESTED?\r
+       JRST    LSTSE2          ;NO, BRANCH\r
+       JUMPN   ACDEV,.+2       ;YES, WAS DEVICE SPECIFIED?\r
+       MOVSI   ACDEV,(SIXBIT /DSK/)    ;NO, ASSUME DSK\r
+       JUMPN   ACFILE,.+2\r
+       MOVE    ACFILE,[SIXBIT /CREF/]\r
+       JUMPN   ACEXT,.+2\r
+MOVSI  ACEXT,(SIXBIT /CRF/)   \r
+LSTSE2:        JUMPE   ACDEV,GETSET    ;FORGET LISTING IF NO DEVICE SPECIFIED\r
+       MOVE    AC0,ACDEV\r
+       DEVCHR  AC0,            ;GET CHARACTERISTICS\r
+       TLNE    AC0,LPTBIT!DISBIT!TTYBIT\r
+       TLNE    FR,CREFSW       ; WAS CROSS-REF REQUESTED?\r
+       AOSA    OUTSW+0*TTYSW   ;NO, ASSUME TTY\r
+       JRST    ERRCM           ;YES, ERROR - CREF DEV MUST NOT BE LPT, DIS, OR TTY\r
+       TLNE    AC0,CONBIT      ;CONTROLING TELETYPE LISTING?\r
+       JRST    GETSET          ;YES, BUFFER ALREADY SET\r
+       MOVEM   ACDEV,LSTDEV    ;STORE DEVICE NAME\r
+       AOS     OUTSW+0*LPTSW   ;SET FOR LPT\r
+       MOVEM   ACFILE,LSTDIR   ;STORE FILE NAME\r
+       JUMPN   ACEXT,.+2\r
+       MOVSI   ACEXT,(SIXBIT /LST/)\r
+       MOVEM   ACEXT,LSTDIR+1\r
+       MOVEM   ACPPN,LSTDIR+3  ;SET PPN\r
+       OPEN    LST,LSTINI      ;INITIALIZE LISTING OUTPUT\r
+       JRST    EINIT           ;ERROR\r
+       TLZE TIO,TIOLE\r
+       MTAPE LST,10\r
+       TLZE    TIO,TIORW       ;REWIND REQUESTED?\r
+       MTAPE   LST,1           ;YES\r
+       JUMPGE  CS,LSTSE3\r
+       MTAPE   LST,17\r
+       AOJL    CS,.-1\r
+       WAIT    LST,\r
+       STATO   LST,1B24\r
+       MTAPE   LST,16\r
+LSTSE3:        SOJG    CS,.-1\r
+       TLNE    TIO,TIOCLD      ;DIRECTORY CLEAR REQUESTED?\r
+       UTPCLR  LST,            ;YES, CLEAR IT\r
+       OUTBUF  LST,2           ;SET UP A TWO RING BUFFER\r
+\fGETSET:       MOVEI   3,PDPERR\r
+       HRRM    3,JOBAPR        ;SET TRAP LOCATION\r
+       MOVEI   3,1B19          ;SET FOR PUSH-DOWN OVERFLOW\r
+       APRENB  3,\r
+       SOS     3,PDP           ;GET PDP REQUEST MINUS 1\r
+       IMULI   3,.PDP          ;COMPUTE SIZE (50*<NUMBER OF /P'S +1>)\r
+       HRLZ    MP,3\r
+       HRR     MP,JOBFF        ;SET BASIC POINTER\r
+       MOVE    PP,MP\r
+       SUB     PP,3\r
+       MOVEM   PP,RP           ;SET RP\r
+       SUB     PP,3\r
+       ASH     3,1             ;DOUBLE SIZE OF BASIC POINTER\r
+       HRL     PP,3\r
+       SUBM    PP,3            ;COMPUTE TOP LOCATION\r
+IFN UNIVR,<SKIPN       UNITOP          ;IF ANY UNIVERSALS HAVE BEEN SEEN\r
+       JRST    GETSE0          ;NO\r
+       HRRZS   3               ;GET TOP OF BUFFERS AND STACKS\r
+       CAMLE   3,UNISIZ        ;HOPE ITS NOT BIGGER THAN UNIVERSAL ONE\r
+       JRST    UNIERR          ;IT WAS, YOU LOSE\r
+       SKIPA   3,UNITOP        ;DON'T LOSE THEM\r
+GETSE0:        HRRZM   3,UNISIZ        ;STORE UNTIL A UNIVERSAL IS SEEN>\r
+       HRRZM   3,LADR          ;SET START OF MACRO TREE\r
+       HRRZM   3,FREE\r
+\r
+GETSE1:        HRRZ    JOBREL\r
+       SUBI    1\r
+       MOVEM   SYMTOP          ;SET TOP OF SYMBOL TABLE\r
+       SUBI    LENGTH          ;SET POINTER FOR INITIAL SYMBOLS\r
+       CAMLE   LADR            ;HAVE WE ROOM?\r
+       JRST    GETSE2          ;YES\r
+\r
+       HRRZ    2,JOBREL        ;NO, TRY FOR MORE CORE\r
+       ADDI    2,2000\r
+       CORE    2,\r
+       JRST    XCEED2  ;NO MORE, INFORM USER\r
+       JRST    GETSE1          ;TRY AGAIN\r
+\r
+GETSE2:        MOVEM   SYMBOL          ;SET START OF SYMBOL TABLE\r
+       HRLI    SYMNUM\r
+       BLT     @SYMTOP         ;STORE SYMBOLS\r
+       PUSHJ   PP,SRCHI        ;INITIALIZE TABLE\r
+       MOVE    [XWD CTIBUF+1,CTLSAV]   ;SAVE CONTROL INPUT BUFFER\r
+       BLT     CTLS1           ;FOR RESCAN ON PASS 2\r
+IFN FTDISK,<MOVSI (SIXBIT /DSK/)       ;SET INPUT TO TAKE DSK AS DEV\r
+       MOVEM ACDEVX>\r
+       PUSHJ PP,COUTI  ;INIT OUTPUT JUST IN CASE\r
+       PUSHJ   PP,INSET        ;GET FIRST INPUT FILE\r
+\r
+IFN CCLSW,<TLNE        IO,CRPGSW       ;BUT ONLY IF DOING RPG\r
+       TTCALL  3,[ASCIZ /MACRO: /]     ;PUBLISH COMPILER NAME>\r
+       MOVE CS,INDIR   ;SET UP NAME OF FIRST FILE\r
+       MOVEM CS,LSTFIL ;AS LAST PRINTED\r
+       SETZM   LSTPGN\r
+       JRST    ASSEMB          ;START ASSEMBLY\r
+\fFINIS:        CLOSE   BIN,            ;DUMP BUFFER\r
+       TLNE    FR,PNCHSW       ;PUNCH REQUESTED?\r
+       PUSHJ   PP,TSTBIN       ;YES, TEST FOR ERRORS\r
+       RELEAS  BIN,\r
+       CLOSE   LST,\r
+       SOSLE   OUTSW+0*LPTSW   ;LPT TYPE OUTPUT?\r
+       PUSHJ   PP,TSTLST       ;YES, TEST FOR ERRORS\r
+       RELEAS  LST,\r
+       RELEAS  CHAR,\r
+       OUTPUT CTL,0    ;FLUSH TTY OUTPUT\r
+IFN UNIVR,<SKIPE       UNIVSN          ;SKIP IF NOT ASSEMBLING UNIVERSAL\r
+       PUSHJ   PP,UNISYM       ;STORE SYMBOLS ETC. FIRST>\r
+       JRST    M               ;RETURN FOR NEXT ASSEMBLY\r
+\fINSET:        MOVEI   JOBFFI          ;POINTER TO INPUT BUFFER\r
+       HRRM    JOBFF           ;INFORM SYSTEM OF BUFFER AREA\r
+       PUSHJ   PP,NAME2        ;GET NEXT COMMAND NAME\r
+       JUMPE   ACDEV,ERRNE     ;ERROR  IF NONE LEFT\r
+       MOVEM   ACDEV,INDEV     ;STORE DEVICE\r
+       MOVEM   ACFILE,INDIR    ;STORE FILE IN DIRECTORY\r
+       MOVEM   ACPPN,INDIR+3   ;STORE PPN BEFORE WE LOSE IT\r
+       OPEN    CHAR,INDEVI\r
+       JRST    EINIT           ;ERROR\r
+       DEVCHR  ACDEV,          ;TEST CHARACTERISTICS\r
+       TLNN    ACDEV,MTABIT    ;MAG TAPE?\r
+       JRST    INSET3          ;NO\r
+       TLZN    FR,MTAPSW       ;FIRST MAG TAPE IN PASS 2?\r
+       JRST    INSET1          ;NO\r
+       TLNN    TIO,TIORW       ;YES, REWIND REQUESTED?\r
+       SUB     CS,RECCNT       ;NO, PREPARE TO BACK-SPACE TAPE\r
+INSET1:        AOS     RECCNT          ;INCREMENT FILE COUNTER\r
+       ADDM    CS,RECCNT       ;UPDATE  COUNT\r
+       TLZE TIO,TIOLE\r
+       MTAPE CHAR,10\r
+       TLZE    TIO,TIORW       ;REWIND?\r
+       MTAPE   CHAR,1          ;YES\r
+       JUMPGE  CS,INSET2\r
+       MTAPE   CHAR,17\r
+       MTAPE   CHAR,17\r
+       AOJL    CS,.-1\r
+       WAIT    CHAR,\r
+       STATO   CHAR,1B24\r
+       MTAPE   CHAR,16\r
+INSET2:        SOJGE   CS,.-1\r
+\r
+INSET3:        INBUF CHAR,1\r
+       MOVEI ACPNTR,JOBFFI\r
+       EXCH ACPNTR,JOBFF\r
+       SUBI ACPNTR,JOBFFI\r
+       MOVEI ACDEL,NUMBUF*203+1\r
+       IDIV ACDEL,ACPNTR\r
+       INBUF CHAR,(ACDEL)\r
+       JUMPN   ACEXT,INSET4    ;TAKE USER'S EXTENSION IF NON-BLANK\r
+       MOVSI   ACEXT,(SIXBIT /MAC/)    ;BLANK, TRY .MAC FIRST\r
+       PUSHJ   PP,INSETI\r
+INSET4:        PUSHJ   PP,INSETI\r
+       JUMPE   ACEXT,ERRCF     ;ERROR IF ZERO\r
+       TLNE    ACDEV,TTYBIT    ;TELETYPE?\r
+       SETSTS  CHAR,AL         ;YES, CHANGE TO ASCII LINE\r
+\f                              ;DO ALL ENTERS HERE FOR LEVEL D\r
+       SKIPE   ENTERS          ;HAVE ENTERS BEEN DONE ALREADY?\r
+       JRST    ENTRDN          ;YES, DON'T DO TWICE\r
+       SKIPN   ACEXT,LSTDEV    ;IS THERE A LIST DEVICE?\r
+       JRST    LSTSE5          ;NO SO DON'T DO ENTER\r
+       SKIPN   ACFILE,LSTDIR   ;GET FILE NAME INCASE OF ERROR\r
+       JRST    [DEVCHR ACEXT,  \r
+               TLNE    ACEXT,DIRBIT    ;DOES IT HAVE A DIRECTORY?\r
+               JRST    LSTSE4          ;YES, GIVE UP BEFORE HARM IS DONE\r
+               SKIPE   ACFILE,INDIR    ;USE INPUT FILE NAME\r
+               MOVEM   ACFILE,LSTDIR   ;TOO BAD IF ZERO ALSO\r
+               JRST    LSTSE4]\r
+       HLLZ    ACEXT,LSTDIR+1  ;EXT ALSO\r
+       MOVE    ACPPN,LSTDIR+3  ;SAVE PPN\r
+       LOOKUP  LST,LSTDIR      ;PREVIOUS ONE STILL THERE\r
+       JRST    LSTSE4          ;NO\r
+       SETZM   LSTDIR          ;YES,CLEAR NAME\r
+       MOVEM   ACPPN,LSTDIR+3  ;RESET PPN\r
+       RENAME  LST,LSTDIR\r
+       CLOSE   LST,            ;IGNORE FAILURE\r
+       MOVEM   ACFILE,LSTDIR   ;RESTORE NAME\r
+       HLLZS   LSTDIR+1        ;BH 11/19/74 FOR DATE75.  CLEAR RH.\r
+       SETZM   LSTDIR+2        ;CLEAR PROTECTION AND DATE\r
+       MOVEM   ACPPN,LSTDIR+3  ;SET PPN AGAIN\r
+LSTSE4:        \r
+       ENTER   LST,LSTDIR      ;SET UP DIRECTORY\r
+       JRST    ERRCL           ;ERROR\r
+LSTSE5:        SKIPN   ACEXT,BINDEV    ;A BINARY DEVICE THEN ?\r
+       JRST    ENTRDN          ;NO\r
+       SKIPN   ACFILE,BINDIR   ;INCASE OF ERROR\r
+       JRST    [DEVCHR ACEXT,  \r
+               TLNE    ACEXT,DIRBIT    ;DOES IT HAVE A DIRECTORY?\r
+               JRST    .+1             ;YES, GIVE UP BEFORE HARM IS DONE\r
+               SKIPE   ACFILE,INDIR    ;USE INPUT FILE NAME\r
+               MOVEM   ACFILE,BINDIR   ;TOO BAD IF ZERO ALSO\r
+               JRST    .+1]\r
+       HLLZS   ACEXT,BINDIR+1  ;BH 11/19/74 DATE75.  WAS HLLZ.\r
+       ENTER   BIN,BINDIR      ;ENTER FILE NAME\r
+       JRST    ERRCB           ;ERROR\r
+\r
+ENTRDN:        SETOM   ENTERS          ;MAKE SURE ONLY DONE ONCE\r
+REPEAT 0,<\r
+       MOVE    CS,[POINT 7,DEVBUF]\r
+       PUSH    PP,1            ;SAVE THE ACCS\r
+       PUSH    PP,2\r
+       PUSH    PP,3\r
+       SKIPN   2,INDIR         ;GET INPUT NAME\r
+       JRST    FINDEV          ;FINISHED WITH DEVICE\r
+       SETZ    1,              ;CLEAR FOR RECEIVING\r
+       LSHC    1,6             ;SHIFT ONE CHAR. IN\r
+       ADDI    1,40            ;FORM ASCII\r
+       IDPB    1,CS            ;STORE CHAR.\r
+       JUMPN   2,.-4           ;MORE TO DO?\r
+       MOVEI   1,"     "       ;SEPARATE BY TAB\r
+       IDPB    1,CS\r
+       HLLZ    2,INDIR+1       ;GET EXT\r
+       JUMPE   2,FINEXT        ;NO EXT\r
+       SETZ    1,\r
+       LSHC    1,6             ;SAME LOOP AS ABOVE\r
+       ADDI    1,40\r
+       IDPB    1,CS\r
+       JUMPN   2,.-4\r
+FINEXT:        MOVEI   1,"     "\r
+       IDPB    1,CS            ;SEPARATE BY TAB\r
+       LDB     1,[POINT 12,INDIR+2,35] ;GET DATE\r
+       LDB     2,[POINT 3,INDIR+1,20]  ;BH 11/19/74 DATE75.\r
+       DPB     2,[POINT 3,1,23]        ;BH 11/19/74 DATE75.\r
+       JUMPE   1,FINDEV        ;NO DATE?\r
+       PUSHJ   PP,DATOUT       ;STORE IT\r
+       LDB     2,[POINT 11,INDIR+2,23] ;GET CREATION TIME\r
+       JUMPE   2,FINDEV        ;NO TIME (DECTAPE)\r
+       MOVEI   1," "           ;SEPARATE BY SPACE\r
+       IDPB    1,CS\r
+       PUSHJ   PP,TIMOU1       ;STORE TIME\r
+FINDEV:        SETZ    1,\r
+       MOVEI   2,"     "       ;FINAL TAB\r
+       IDPB    2,CS\r
+       IDPB    1,CS            ;TERMINATE FOR NOW\r
+       POP     PP,3            ;RESTORE ACCS\r
+       POP     PP,2\r
+       POP     PP,1\r
+>\r
+       SKIPN   PAGENO          ;IF FIRST TIME THRU\r
+       JRST    OUTFF           ;START NEW PAGE\r
+       SETZM PAGENO            ;ON NEW FILE, RESET PAGES\r
+       JRST    OUTFF2          ;DON'T START NEW PAGE UNLESS FF\r
+\r
+INSETI:        HLLZM   ACEXT,INDIR+1   ;STORE EXTENSION\r
+       MOVE    ACPPN,INDIR+3   ;SAVE PPN\r
+       LOOKUP  CHAR,INDIR\r
+       SKIPA   ACEXT,INDIR+1   ;GET ERROR CODE\r
+       JRST    CPOPJ1          ;SKIP-RETURN IF FOUND\r
+       TRNE    ACEXT,-1        ;ERROR CODE OF 0 IS FILE NOT FOUND\r
+       JRST    ERRCF           ;FILE THERE BUT NOT READABLE\r
+       SETZ    ACEXT,          ;CLEAR EXT AND TRY AGAIN\r
+       MOVEM   ACPPN,INDIR+3   ;RESTORE PPN\r
+       POPJ    PP,\r
+\fREC2: MOVS    [XWD CTIBUF+1,CTLSAV]   ;RESCAN CONTROL (FROM PASS1 END STMNT)\r
+       BLT     CTIBUF+2        ;INPUT BUFFER\r
+       MOVEI   "_"\r
+       HRLM    ACDELX          ;FUDGE PREVIOUS DELIMITER\r
+IFN RENTSW,<MOVE HHIGH ;GET HI-SEG BREAK\r
+       MOVEM   HIGH1   ;SAVE THE ONE WE GOT ON PASS1 (FOR HISEG)>\r
+       SETZM   PASS2I\r
+       MOVE    [XWD PASS2I,PASS2I+1]\r
+       BLT     PASS2X-1                ;ZERO PASS2 VARIABLES\r
+       TLO     FR,MTAPSW!LOADSW        ;SET FLAGS \r
+\r
+GOTEND:        MOVE    INDEV           ;GET LAST DEVICE\r
+       DEVCHR                  ;GET ITS CHARACTERISTICS\r
+       TLNE    4               ;TEST FOR DIRECTORY (DSK OR DTA)\r
+       JRST    EOT             ;YES, SO DON'T WASTE TIME\r
+       JRST    .+3             ;NO, INPUT BUFFER BY BUFFER\r
+       IN      CHAR,\r
+       JRST    .-1             ;NO ERRORS\r
+       STATO   CHAR,1B22       ;TEST FOR EOF\r
+       JRST    .-3             ;IGNORE ERRORS\r
+\r
+EOT:   PUSHJ   PP,SAVEXS       ;SAVE REGISTERS\r
+       PUSHJ   PP,INSET        ;GET THE NEXT INPUT DEVICE\r
+       HRROI   RC,[SIXBIT /END OF PASS 1@/]    ;ASSUME END OF PASS\r
+       TLZN    FR,LOADSW       ;ZERO ONLY ON END OF PASS 1\r
+       HRROI   RC,[SIXBIT /LOAD THE NEXT FILE@/]       ;NOT END OF PASS\r
+       TLNN    ACDEV,(1B13!1B15)       ;WAS ALL THAT WORK NECESSARY?\r
+       PUSHJ   PP,TYPMSG       ;YES\r
+\r
+RSTRXS:        MOVSI   RC,SAVBLK       ;SET POINTER\r
+       BLT     RC,RC-1         ;RESTORE REGISTERS\r
+       MOVE    RC,SAVERC       ;RESTORE RC\r
+       POPJ    PP,             ;EXIT\r
+\r
+SAVEXS:        MOVEM   RC,SAVERC       ;SAVE RC\r
+       MOVEI   RC,SAVBLK       ;SET POINTER\r
+       BLT     RC,SAVBLK+RC-1  ;BLT ALL REGISTERS BELOW RC\r
+       POPJ    PP,             ;EXIT\r
+\fNAME1:        SETZM   ACDEVX          ;ENTRY FOR DESTINATION\r
+NAME2: SETZB   ACDEV,INDIR+2   ;ENTRY FOR SOURCE\r
+       MOVEI   ACFILE,0        ;CLEAR FILE\r
+       HLRZ    ACDEL,ACDELX    ;GET PREVIOUS DELIMITER\r
+       SETZB   TIO,CS\r
+       SETZB   ACEXT,INDIR+3   ;RESET EXTENSION AND PROGRAM-NUMBER PAIR\r
+       SETZM   PPN             ;CLEAR PPN\r
+NAME3: MOVSI   ACPNTR,(POINT 6,AC0)    ;SET POINTER\r
+       TDZA    AC0,AC0         ;CLEAR SYMBOL\r
+\r
+SLASH: PUSHJ   PP,SW0\r
+GETIOC:        PUSHJ   PP,TTYIN        ;GET INPUT CHARACTER\r
+       CAIN    C,"/"\r
+       JRST    SLASH\r
+       CAIN    C,"("\r
+       JRST    SWITCH\r
+       CAIN    C,":"\r
+       JRST    DEVICE\r
+       CAIN    C,"."\r
+       JRST    NAME\r
+IFN CCLSW,<CAIE        C,"!"           ;IS CHAR AN IMPERATIVE?\r
+       CAIN    C,"@"\r
+       JRST    TERM            ;YES, GO DO IT>\r
+       CAIE    C,33            ;CHECK FOR THREE FLAVORS OF ALT-MODE\r
+       CAIN    C,176           ;...\r
+       JRST    TERM            ;...\r
+       CAIG    C,CR            ;LESS THAN CR?\r
+       CAIGE   C,LF            ;AND GREATER THAN LF?\r
+       CAIN    C,175           ;OR 3RD ALTMOD\r
+       JRST    TERM            ;YES\r
+IFN FTDISK,<CAIN C,"["\r
+       JRST    PROGNP          ;GET PROGRAMER NUMBER PAIR>\r
+       CAIN    C,"="           ;EQUALS IS SAME AS LEFT ARROW\r
+       TRCA    C,142           ;SO MAKE IT A "_" AND SKIP\r
+       CAIE    C,","\r
+       CAIN    C,"_"\r
+       JRST    TERM\r
+       CAIGE   C,40            ;VALID AS SIXBIT?\r
+       JRST    [CAIN C,"Z"-100 ;NO,IS IT ^Z\r
+               EXIT            ;YES,EXIT FOR BATCH\r
+               JRST    GETIOC] ;JUST IGNORE\r
+       SUBI    C,40            ;CONVERT TO 6-BIT\r
+       TLNE    ACPNTR,770000   ;HAVE WE STORED SIX BYTES?\r
+       IDPB    C,ACPNTR        ;NO, STORE IT\r
+       JRST    GETIOC          ;GET NEXT CHARACTER\r
+\r
+DEVICE:        JUMPN   ACDEV,ERRCM     ;ERROR IF ALREADY SET\r
+       MOVE    ACDEV,AC0       ;DEVICE NAME\r
+       JRST    DEVNAM          ;COMMON CODE\r
+\r
+NAME:  JUMPN   ACFILE,ERRCM    ;ERROR IF ALREADY SET\r
+       MOVE    ACFILE,AC0      ;FILE NAME\r
+DEVNAM:        MOVE    ACDEL,C         ;SET DELIMITER\r
+       JRST    NAME3           ;GET NEXT SYMBOL\r
+\r
+TERM:  JUMPE   ACDEL,TERM1     ;IF NO PREVIOUS TERMINATOR, THEN FILENAME\r
+       CAIN    ACDEL,"_"       ;...\r
+       JRST    TERM1           ;...\r
+       CAIE    ACDEL,":"       ;IF PREVIOUS DELIMITER\r
+       CAIN    ACDEL,","       ;WAS COLON OR COMMA\r
+TERM1: MOVE    ACFILE,AC0      ;SET FILE\r
+       CAIN    ACDEL,"."       ;IF PERIOD,\r
+       HLLZ    ACEXT,AC0       ;SET EXTENSION\r
+       HRLM    C,ACDELX        ;SAVE PREVIOUS DELIMITER\r
+       JUMPN   ACDEV,.+2       ;IF DEVICE SET USE IT\r
+       SKIPA   ACDEV,ACDEVX    ;OTHERWISE USE LAST DEVICE\r
+       MOVEM   ACDEV,ACDEVX    ;AND DEVICE\r
+       MOVE    ACPPN,PPN       ;PUT PPN IN RIGHT PLACE\r
+IFN FTDISK,<CAIN C,"!"         ;IMPERATIVE?\r
+       POPJ    PP,             ;YES, DON'T ASSUME DEV\r
+       JUMPE   ACFILE,CPOPJ    ;IF THERE IS A FILE,\r
+       JUMPN   ACDEV,.+2       ;BUT NO DEVICE\r
+       MOVSI   ACDEV,(SIXBIT /DSK/)    ;THEN ASSUME DISK>\r
+       POPJ    PP,             ;EXIT\r
+\fERRCM:        HRROI   RC,[SIXBIT /COMMAND ERROR@/]\r
+       JRST    ERRFIN\r
+\r
+IFN FTDISK,<PROGNP:\r
+PROGN1:        HRLZM   RC,PPN          ;COMMA, STORE LEFT HALF\r
+PROGN2:        MOVEI   RC,0            ;CLEAR AC\r
+PROGN3:        PUSHJ   PP,TTYIN\r
+       CAIN    C,","\r
+       JRST    PROGN1          ;STORE LEFT HALF\r
+       HRRM    RC,PPN          ;ASSUME TERMINAL\r
+       CAIN    C,"]"\r
+       JRST    GETIOC          ;YES, RETURN TO MAIN SCAN\r
+       CAIL    C,"0"           ;CHECK FOR VALID NUMBERS\r
+       CAILE   C,"7"\r
+       JRST    ERRCM           ;NOT VALID\r
+       LSH     RC,3            ;SHIFT PREVIOUS RESULT\r
+       ADDI    RC,-"0"(C)      ;ADD IN NEW NUMBER\r
+       JRST    PROGN3          ;GET NEXT CHARACTER>\r
+\fSWITC0:       PUSHJ   PP,SW1          ;PROCESS CHARACTER\r
+SWITCH:        PUSHJ   PP,TTYIN        ;GET NEXT CHARACTER\r
+       CAIE    C,")"           ;END OF STRING?\r
+       JRST    SWITC0          ;NO\r
+       JRST    GETIOC          ;YES\r
+\r
+SW0:   PUSHJ   PP,TTYIN\r
+SW1:   MOVEI   C,-"A"(C)       ;CONVERT FROM ASCII TO NUMERIC\r
+       CAILE   C,"Z"-"A"       ;WITHIN BOUNDS? (IS IT ALPHA?)\r
+       JRST    ERRCM           ;NO, ERROR\r
+       MOVE    RC,[POINT 4,BYTAB]\r
+       IBP     RC\r
+       SOJGE   C,.-1           ;MOVE TO PROPER BYTE\r
+       LDB     C,RC            ;PICK UP BYTE\r
+       JUMPE   C,ERRCM         ;TEST FOR VALID SWITCH\r
+       CAIG    C,SWTABT-SWTAB  ;LEGAL ON SOURCE?\r
+       JUMPL   PP,ERRCM        ;NO, TEST FOR SOURCE\r
+       LDB     RC,[POINT 4,SWTAB-1(C),12]\r
+       CAIN    RC,IO\r
+       SKIPN   CTLSAV          ;IF PASS2 OR IO SWITCH,\r
+       XCT     SWTAB-1(C)      ;EXECUTE INSTRUCTION\r
+       POPJ    PP,             ;EXIT\r
+       TLZ     IO,IOSALL       ;TAKE CARE OF /X\r
+       POPJ    PP,\r
+\r
+DEFINE HELP (TEXT)<\r
+       XLIST\r
+       ASCIZ ?TEXT?\r
+       LIST>\r
+\r
+HLPMES:        HELP <\r
+Switches are :-\r
+*/A advance one file\r
+*/B backspace one file\r
+/C produce a cref listing\r
+*/E list macro expansions (LALL)\r
+*/F list in new format (.MFRMT)\r
+/G list in old format (.HWFRMT)\r
+/H type this text\r
+*/L reinstate listing (LIST)\r
+/M suppress ascii in macro and repeat expansion (SALL)\r
+*/N suppress error printout on tty\r
+/O set MLOFF pseudo-op\r
+/P increase size of the pushdown stack\r
+/Q suppress Q errors on the listing\r
+*/S suppress listing (XLIST)\r
+*/T rewind device\r
+*/X suppress all macro expansions (XALL)\r
+*/Z zero the directory\r
+Switches A,B,C,T,W,X, and Z must immediately follow\r
+the device or file to which they refer.\r
+>\r
+\f      DEFINE  SETSW   (LETTER,INSTRUCTION) <  INSTRUCTION\r
+J=     <"LETTER"-"A">-^D9*<I=<"LETTER"-"A">/^D9>\r
+       SETCOD  \I,J>\r
+\r
+       DEFINE  SETCOD          (I,J)\r
+       <BYTAB'I=BYTAB'I!<.-SWTAB>B<4*J+3>>\r
+\r
+BYTAB0=        0                       ;INITIALIZE TABLE\r
+BYTAB1=        0\r
+BYTAB2=        0\r
+\r
+SWTAB:\r
+       SETSW   Z,<TLO  TIO,TIOCLD      >\r
+       SETSW   C,<TLZ  FR,CREFSW       >\r
+       SETSW   P,<SOS  PDP             >\r
+SWTABT:                                ;THE ABOVE SW'S ARE LEGAL ON OUTPUT ONLY\r
+       SETSW   A,<ADDI CS,1            >\r
+       SETSW   B,<SUBI CS,1            >\r
+       SETSW   E,<TLZ  IO,IOPALL!IOSALL        >\r
+       SETSW   H,<OUTSTR       HLPMES>\r
+       SETSW   L,<TLZ  IO,IOMSTR       >\r
+       SETSW   M,<TLO  IO,IOPALL!IOSALL        >\r
+       SETSW   N,<HLLOS   TYPERR       >\r
+       SETSW   O,<XCT  OFFML           >\r
+       SETSW   Q,<TLO  FR,ERRQSW       >\r
+       SETSW   S,<TLO  IO,IOMSTR       >\r
+       SETSW   T,<TLO  TIO,TIOLE       >\r
+       SETSW   W,<TLO  TIO,TIORW       >\r
+       SETSW   X,<TLOA IO,IOPALL       >\r
+\r
+BYTAB:                         ;BYTAB CONTAINS AN INDEX TO SWTAB\r
+                               ;IT CONSIST OF 9 4BIT BYTES/WORD\r
+                               ;OR ONE BYTE FOR EACH LETTER\r
+\r
+       +BYTAB0                 ;A-I    BYTE = 1 THROUGH 17 = INDEX\r
+       +BYTAB1                 ;J-R    BYTE = 0 = COMMAND ERROR\r
+       +BYTAB2                 ;S-Z\r
+\r
+IF2,<PURGE I,J,BYTAB0,BYTAB1,BYTAB2>\r
+\fTTYIN:        SOSGE   CTIBUF+2        ;ENUF CHAR.?\r
+       JRST    TTYERR          ;NO\r
+       ILDB    C,CTIBUF+1      ;GET CHARACTER\r
+       CAIE    C," "           ;SKIP BLANKS\r
+       CAIN    C,HT            ;AND TABS\r
+       JRST    TTYIN\r
+       CAIN    C,15            ;CR?\r
+       SETZM   CTIBUF+2        ;YES,IGNORE REST OF LINE\r
+       CAIG C,"Z"+40           ;CHECK FOR LOWER CASE\r
+       CAIGE C,"A"+40\r
+       POPJ    PP,             ;NO,EXIT\r
+       SUBI C,40\r
+       POPJ    PP,             ;YES, EXIT\r
+\r
+TTYERR:        SKIPN   INDEV           ;INPUT DEVICE SEEN?\r
+       JRST    ERRCM           ;NO, SO MISSING "_"\r
+ERRNE: HRROI   RC,[SIXBIT /?NO END STATEMENT ENCOUNTERED ON INPUT FILE@/]\r
+ERRNE0:        SKPINC  V       ;SEE IF WE CAN INPUT A CHAR.\r
+         JFCL          ;BUT ONLY TO DEFEAT ^O\r
+       PUSHJ PP,TYPMSG ;OUTPUT IT\r
+       SKIPE LITLVL    ;SEE IF IN LITERAL\r
+       SKIPN   LITPG   ;PAGE 0 MEANS NOT IN A LITERAL REALY\r
+       JRST ERRNE1     ;NO, TRY OTHERS\r
+       MOVE V,[XWD [SIXBIT /IN LITERAL@/],LITPG]\r
+       PUSHJ PP,PRNUM  ;GO PRINT INFORMATION\r
+ERRNE1:        MOVEI V,0       ;CHECK FOR OTHER PLACES\r
+       SKIPE INDEF\r
+       MOVE V,[XWD [SIXBIT /IN DEFINE@/],DEFPG]\r
+       SKIPE INTXT\r
+       MOVE V,[XWD [SIXBIT /IN TEXT@/],TXTPG]\r
+       SKIPE INREP\r
+       MOVE V,[XWD [SIXBIT /IN CONDITIONAL OR REPEAT@/],REPPG]\r
+       SKIPE INCND\r
+       MOVE V,[XWD [SIXBIT /IN CONDITIONAL@/],CNDPG]\r
+       SKIPGE MACENL\r
+ERRNE2:        MOVE V,[XWD [SIXBIT /IN MACRO CALL@/],CALPG]\r
+       JUMPN V,ERRNE3\r
+       SKIPN   LITLVL          ;HAD ONE PAGE NUMBER ALREADY\r
+       SKIPA   V,[XWD [SIXBIT /@/],PAGENO]     ;BETTER THAN NOTHING\r
+       JRST    .+2\r
+ERRNE3:        PUSHJ PP,PRNUM\r
+       HRROI RC,[SIXBIT /@/]   ;WILL GET A RETURN\r
+       JRST ERRFIN\r
+\r
+ERRMS1:        SIXBIT / ERRORS DETECTED@/\r
+ERRMS2:        SIXBIT /?1 ERROR DETECTED@/\r
+ERRMS3:        SIXBIT /NO ERRORS DETECTED@/\r
+EINIT: MOVE    RC,[XWD ACDEV,[SIXBIT /NOT AVAILABLE@/]]\r
+       JRST    ERRFIN\r
+\fERRCL:        HRRZ    RC,LSTDIR+1     ;GET LST DEV ERROR CODE\r
+       JRST    .+2             ;GET ERROR MESSAGE\r
+ERRCB: HRRZ    RC,BINDIR+1     ;GET BIN DEV ERROR CODE\r
+       JUMPN   RC,ERRTYP\r
+       SOJA    RC,ERRTYP       ;SPECIAL CASE IF ERROR CODE 0\r
+\r
+ERRCF: HRRZ    RC,INDIR+1      ;GET INPUT DEV ERROR CODE\r
+       HLLZ    ACEXT,INDIR+1   ;SET UP EXT\r
+\r
+ERRTYP:        CAIL    RC,TABLND-TABLE ;IS ERROR CODE LEGAL?\r
+       SKIPA   RC,TABLND       ;NO, GIVE CATCH ALL MESSAGE\r
+       MOVE    RC,TABLE(RC)    ;YES, PICK UP MESSAGE\r
+\r
+ERRFIN:        SKPINC  C               ;SEE IN WE CAN INPUT A CHAR.\r
+         JFCL                  ;BUT ONLY TO DEFEAT ^O\r
+       PUSHJ   PP,CRLF\r
+       MOVEI   C,"?"\r
+       PUSHJ   PP,TYO\r
+       PUSHJ   PP,TYPMS1\r
+       CLOSE   LST,            ;GIVE USER A PARTIAL LISTING\r
+       CLOSE   BIN,40          ;BUT NEVER A BUM REL FILE\r
+IFN CCLSW,<AOS JOBERR          ;RECORD ERROR SO EXECUTION DELETED>\r
+       JRST    M\r
+\r
+       [SIXBIT /(0) ILLEGAL FILE NAME@/],,ACFILE\r
+TABLE: [SIXBIT /(0) FILE WAS NOT FOUND@/],,ACFILE\r
+       [SIXBIT /(1) NO DIRECTORY FOR PROJECT-PROGRAMMER NUMBER@/],,ACFILE\r
+       [SIXBIT /(2) PROTECTION FAILURE@/],,ACFILE\r
+       [SIXBIT /(3) FILE WAS BEING MODIFIED@/],,ACFILE\r
+       [SIXBIT /(4) RENAME FILE NAME ALREADY EXISTS@/],,ACFILE\r
+       [SIXBIT /(5) ILLEGAL SEQUENCE OF UUOS@/],,ACFILE\r
+       [SIXBIT /(6) BAD UFD OR BAD RIB@/],,ACFILE\r
+       [SIXBIT /(7) NOT A SAV FILE@/],,ACFILE\r
+       [SIXBIT /(10) NOT ENOUGH CORE@/],,ACFILE\r
+       [SIXBIT /(11) DEVICE NOT AVAILABLE@/],,ACFILE\r
+       [SIXBIT /(12) NO SUCH DEVICE@/],,ACFILE\r
+       [SIXBIT /(13) NOT TWO RELOC REG. CAPABILITY@/],,ACFILE\r
+       [SIXBIT /(14) NO ROOM OR QUOTA EXCEEDED@/],,ACFILE\r
+       [SIXBIT /(15) WRITE LOCK ERROR@/],,ACFILE\r
+       [SIXBIT /(16) NOT ENOUGH MONITOR TABLE SPACE@/],,ACFILE\r
+       [SIXBIT /(17) PARTIAL ALLOCATION ONLY@/],,ACFILE\r
+       [SIXBIT /(20) BLOCK NOT FREE ON ALLOCATION@/],,ACFILE\r
+       [SIXBIT /(21) CAN'T SUPERSEDE (ENTER) AN EXISTING DIRECTORY@/],,ACFILE\r
+       [SIXBIT /(22) CAN'T DELETE (RENAME) A NON-EMPTY DIRECTORY@/],,ACFILE\r
+       [SIXBIT /(23) SFD NOT FOUND@/],,ACFILE\r
+       [SIXBIT /(24) SEARCH LIST EMPTY@/],,ACFILE\r
+       [SIXBIT /(25) SFD NESTED TOO DEEPLY@/],,ACFILE\r
+       [SIXBIT /(26) NO-CREATE ON FOR SPECIFIED PATH@/],,ACFILE\r
+\r
+TABLND:        [SIXBIT /(?) LOOKUP, ENTER, OR RENAME ERROR@/],,ACFILE\r
+\fTYPMSG:       PUSHJ   PP,CRLF         ;MOVE TO NEXT LINE\r
+TYPMS1:        HLRZ    CS,RC           ;GET FIRST MESSAGE\r
+       CAIE    CS,-1           ;SKIP IF MINUS ONE\r
+       PUSHJ   PP,TYPM2        ;TYPE MESSAGE\r
+       HRRZ    CS,RC           ;GET SECOND HALF\r
+       PUSHJ   PP,TYPM2\r
+\r
+CRLF:  MOVEI   C,CR            ;OUTPUT CARRIAGE RETURN\r
+       PUSHJ   PP,TYO\r
+       MOVEI   C,LF            ;AND LINE FEED\r
+\r
+TYO:   SOSG    CTOBUF+2        ;BUFFER FULL?\r
+       OUTPUT  CTL,0           ;YES, DUMP IT\r
+       IDPB    C,CTOBUF+1      ;STORE BYTE\r
+       CAIG    C,FF            ;FORM FEED?\r
+       CAIGE   C,LF            ;V TAB OR LINE FEED?\r
+       POPJ    PP,             ;NO\r
+       OUTPUT  CTL,0           ;YES\r
+       POPJ    PP,             ;AND EXIT\r
+\r
+TYPM2: MOVSI   C,(1B0)         ;ANTICIPATE REGISTER WORD\r
+       CAIN    CS,ACFILE       ;FILE NAME ?\r
+       JRST    [JUMPE  ACEXT,.+1       ;YES, TEST FOR EXT\r
+               LSH     ACEXT,-6        ;MAKE SPACE FOR "."\r
+               IOR     ACEXT,[SIXBIT /.   @/]\r
+               JRST    TYPM2A]\r
+       CAIG    CS,17           ;IS IT?\r
+       MOVEM   C,1(CS)\r
+TYPM2A:        HRLI    CS,(POINT 6,,)  ;FORM BYTE POINTER\r
+\r
+TYPM3: ILDB    C,CS            ;GET A SIXBIT BYTE\r
+       CAIN    C,40            ;"@"?\r
+       JRST    TYO             ;YES, TYPE SPACE AND EXIT\r
+       ADDI    C,40            ;NO, FORM 7-BIT ASCII\r
+       PUSHJ   PP,TYO          ;OUTPUT CHARACTER\r
+       JRST    TYPM3\r
+\r
+\fXCEEDS:       ADDI SX,2000            ;ADJUST SYMBOL POINTER\r
+XCEED: PUSHJ   PP,SAVEXS       ;SAVE THE REGISTERS\r
+       HRRZ    1,JOBREL        ;GET CURRENT TOP\r
+       MOVEI   0,2000(1)\r
+       CORE    0,              ;REQUEST MORE CORE\r
+       JRST    XCEED2          ;ERROR, BOMB OUT\r
+       HRRZ    2,JOBREL        ;GET NEW TOP\r
+\r
+XCEED1:        MOVE    0,0(1)          ;GET ORIGIONAL\r
+       MOVEM   0,0(2)          ;STORE IN NEW LOCATION\r
+       SUBI    2,1             ;DECREMENT UPPER\r
+       CAMLE   1,SYMBOL        ;HAVE WE ARRIVED?\r
+       SOJA    1,XCEED1        ;NO, GET ANOTHER\r
+       MOVEI   1,2000\r
+       ADDM    1,SYMBOL\r
+       ADDM    1,SYMTOP\r
+       PUSHJ   PP,SRCHI        ;RE-INITIALIZE SYMBOL TABLE\r
+       JRST    RSTRXS          ;RESTORE REGISTERS AND EXIT\r
+\r
+XCEED2:        HRROI   RC,[SIXBIT /INSUFFICIENT CORE@/]\r
+       JRST    ERRNE0\r
+PDPERR:        HRROI   RC,[SIXBIT .PDP OVERFLOW, TRY /P@.]\r
+       JRST    ERRNE0\r
+\r
+PRNUM: HLRZ CS,V       ;GET MESSAGE\r
+       PUSHJ PP,TYPM2\r
+       MOVEI   CS,[SIXBIT /ON PAGE@/]\r
+       PUSHJ   PP,TYPM2\r
+       MOVE AC0,(V)    ;GET PAGE\r
+       PUSHJ PP,DP1    ;PRINT NUMBER\r
+       MOVEI C,40\r
+       PUSHJ PP,TYO\r
+       SKIPN AC1,1(V)  ;GET SEQ NUM IF THERE\r
+       POPJ PP,        ;NO, RETURN\r
+       MOVEM AC1,OUTSQ\r
+       MOVEI   CS,[SIXBIT /LINE@/]\r
+       PUSHJ   PP,TYPM2\r
+       MOVEI AC0,OUTSQ ;PRINT IT\r
+       OUTPUT CTL,0    ;TO MAKE THINGS PRINT IN RIGHT ORDER\r
+       DDTOUT AC0,\r
+       MOVEI C,40\r
+       JRST TYO        ;AND RETURN\r
+\r
+DP1:   IDIVI AC0,^D10\r
+       HRLM AC1,(PP)\r
+       JUMPE   AC0,.+2\r
+       PUSHJ PP,DP1\r
+       HLRZ C,(PP)\r
+       ADDI C,"0"\r
+       JRST TYO\r
+\fRIM0: TDO     FR,AC0          ;SET RIM/RIM10 FLAG\r
+       TLNE    FR,PNCHSW       ;FORGET IT IF PUNCH RESET\r
+       SETSTS  BIN,IB          ;SET TO IMAGE BINARY MODE\r
+       POPJ    PP,\r
+\r
+ROUT:  EXCH CS,RIMLOC\r
+       SUB PP,[XWD 1,1]        ;CLEAR OUT STACK WFW\r
+       TLNE FR,R1BSW\r
+       JRST ROUT6\r
+       TLNN    FR,RIM1SW\r
+       JRST    ROUT1\r
+       JUMPE   CS,ROUT1        ;RIM10 OUTPUT\r
+       SUB     CS,RIMLOC\r
+       JUMPE   CS,ROUT1\r
+       JUMPG   CS,ERRAX\r
+       MOVEI   C,0\r
+       PUSHJ   PP,PTPBIN\r
+       AOJL    CS,.-1\r
+ROUT1: MOVSI   C,(DATAI PTR,)  ;RIM OUTPUT\r
+       HRR C,LOCO              ;GET ADDRESS\r
+       TLNE    FR,RIM1SW       ;NO DATAI IF RIM10\r
+       AOSA    RIMLOC\r
+       PUSHJ   PP,PTPBIN       ;OUTPUT\r
+       MOVE    C,AC0           ;CODE\r
+       AOSA    LOCO            ;INCREMENT CURRENT LOCATION\r
+\r
+OUTBIN:        TLNN    FR,RIMSW!RIM1SW!R1BSW   ;EXIT IF RIM MODE\r
+PTPBIN:        TLNN    FR,PNCHSW       ;EXIT IF PUNCH NOT REQUESTED\r
+       POPJ    PP,\r
+       SOSG    BINBUF+2        ;TEST FOR BUFFER FULL\r
+       PUSHJ   PP,DMPBIN       ;YES, DUMP IT\r
+       IDPB    C,BINBUF+1      ;DEPOSIT BYTE\r
+       POPJ    PP,             ;EXIT\r
+\r
+\fDMPBIN:       OUT     BIN,0           ;DUMP THE BUFFER\r
+       POPJ    PP,             ;NO ERRORS\r
+TSTBIN:        GETSTS  BIN,C           ;GET STSTUS BITS\r
+       TRNN    C,ERRBIT        ;ERROR?\r
+       POPJ    PP,             ;NO, EXIT\r
+       MOVE    AC0,BINDEV      ;YES, GET TAG\r
+       JRST    ERRLST          ;TYPE MESSAGE AND ABORT\r
+\r
+DMPLST:        OUT     LST,0           ;OUTPUT BUFFER\r
+       POPJ    PP,             ;NO ERRORS\r
+TSTLST:        GETSTS  LST,C           ;ANY ERRORS?\r
+       TRNN    C,ERRBIT\r
+       POPJ    PP,             ;NO, EXIT\r
+       MOVE    AC0,LSTDEV\r
+ERRLST:        MOVSI   RC,[SIXBIT /OUTPUT WRITE-LOCK ERROR DEVICE@/]\r
+       TRNE    C,IOIMPM        ;IMPROPER MODE?\r
+       JRST    ERRFIN          ;YES\r
+       MOVSI   RC,[SIXBIT /OUTPUT DATA ERROR DEVICE@/]\r
+       TRNE    C,IODERR        ;DEVICE DATA ERROR?\r
+       JRST    ERRFIN          ;YES\r
+       MOVSI   RC,[SIXBIT /OUTPUT CHECKSUM OR PARITY ERROR DEVICE@/]\r
+       TRNE    C,IODTER        ;IS IT\r
+       JRST    ERRFIN          ;YES\r
+       MOVE    CS,AC0          ;GET DEVICE\r
+       DEVCHR  CS,             ;FIND OUT WHAT IT IS\r
+       MOVSI   RC,[SIXBIT /OUTPUT QUOTA EXCEEDED ON DEVICE@/]\r
+       TLNN    CS,DSKBIT       ;SKIP IF DSK OUTPUT\r
+       MOVSI   RC,[SIXBIT /OUTPUT BLOCK TOO LARGE DEVICE@/]\r
+       JRST    ERRFIN\r
+\f      \r
+R1BDMP:        SETCM CS,R1BCNT\r
+       JUMPE CS,R1BI\r
+       HRLZS C,CS\r
+       HRR C,R1BLOC\r
+       HRRI C,-1(C)\r
+       MOVEM C,R1BCHK\r
+       PUSHJ PP,PTPBIN\r
+       HRRI CS,R1BBLK\r
+R1BDM1:        MOVE C,0(CS)\r
+       ADDM C,R1BCHK\r
+       PUSHJ PP,PTPBIN\r
+       AOBJN CS,R1BDM1\r
+       MOVE C,R1BCHK\r
+       PUSHJ PP,PTPBIN\r
+R1BI:  SETOM R1BCNT\r
+       PUSH PP,LOCO\r
+       POP PP,R1BLOC\r
+       POPJ PP,\r
+\r
+ROUT6: CAME CS,RIMLOC\r
+       PUSHJ PP,R1BDMP\r
+       AOS C,R1BCNT\r
+       MOVEM AC0,R1BBLK(C)\r
+       AOS LOCO\r
+       CAIN C,.R1B-1\r
+       PUSHJ PP,R1BDMP\r
+       AOS RIMLOC\r
+       POPJ PP,\r
+       \r
+\r
+\fREAD0:        PUSHJ   PP,EOT          ;END OF TAPE\r
+\r
+READ:  SOSGE   IBUF+2          ;BUFFER EMPTY?\r
+       JRST    READ3           ;YES\r
+READ1: ILDB    C,IBUF+1        ;PLACE CHARACTER IN C\r
+       MOVE CS,@IBUF+1         ;CHECK FOR SEQUENCE NUMBER\r
+       TRNN CS,1\r
+       JRST READ1A\r
+       CAIN CS,1               ;CHECK FOR SPECIAL\r
+       MOVE CS,[<ASCII/     />+1]\r
+       MOVEM CS,SEQNO\r
+       MOVEM CS,SEQNO2\r
+       MOVNI CS,4\r
+       ADDM CS,IBUF+2          ;ADJUST WORD COUNT\r
+REPEAT 4,<     IBP IBUF+1>     ;SKIP SEQ NO\r
+       PUSHJ PP,READ   ;AND THE TAB\r
+       JRST    READ            ;GET NEXT CHARACTER\r
+\r
+READ1A:        JUMPE   C,READ          ;IGNORE NULL\r
+       CAIN    C,32            ;IF IT'S A "^Z"\r
+       MOVEI   C,LF            ;TREAT IT AS A "LF"\r
+       CAIE    C,37            ;CONTROL _\r
+       POPJ    PP,\r
+       MOVEI   C,"^"           ;MAKE CONTROL-SHIFT _ VISIBLE\r
+       PUSHJ   PP,RSW2\r
+       MOVEI   C,"_"\r
+       PUSHJ   PP,RSW2\r
+READ2: PUSHJ   PP,READ         ;YES, TEST FOR LINE FEED\r
+       PUSHJ   PP,RSW2         ;LIST IN ANY EVENT\r
+       CAIG    C,FF            ;IS IT ONE OF\r
+       CAIGE   C,LF            ;LF, VT, OR FF?\r
+       JRST    READ2           ;NO\r
+       PUSHJ   PP,OUTIM1       ;YES, DUMP THE LINE\r
+       JRST    READ            ;RETURN NEXT CHARACTER\r
+\r
+READ3: IN      CHAR,0          ;GET NEXT BUFFER\r
+       JRST    READ            ;NO ERRORS\r
+       GETSTS  CHAR,C\r
+       TRNN    C,ERRBIT!2000   ;ERRORS?\r
+       JRST    READ0           ;EOF\r
+       MOVE    AC0,INDEV\r
+       MOVSI   RC,[SIXBIT/ INPUT PHYSICAL END OF TAPE DEVICE@/]\r
+       TRNE    C,2000\r
+       JRST    ERRFIN          ;E-O-T\r
+       MOVSI   RC,[SIXBIT /MONITOR DETECTED SOFTWARE INPUT ERROR DEVICE@/]\r
+       TRNE    C,IOIMPM        ;IMPROPER MODE?\r
+       JRST    ERRFIN          ;YES\r
+       MOVSI   RC,[SIXBIT /INPUT DATA ERROR DEVICE@/]\r
+       TRNE    C,IODERR        ;DEVICE DATA ERROR?\r
+       JRST    ERRFIN          ;YES\r
+       MOVSI   RC,[SIXBIT /INPUT CHECKSUM OR PARITY ERROR DEVICE@/]\r
+       TRNN    C,IODTER\r
+       MOVSI   RC,[SIXBIT /INPUT BLOCK TOO LARGE DEVICE@/]\r
+       JRST    ERRFIN\r
+\r
+\fOUTAB2:       PUSHJ   PP,OUTTAB       ;PRINT TWO TABS\r
+OUTTAB:        MOVEI   C,HT\r
+PRINT: CAIE    C,CR            ;IS THIS A CR?\r
+       CAIN    C,LF            ;OR LF?\r
+       JRST    OUTCR           ;YES, GO PROCESS\r
+       CAIN    C,FF            ;FORM FEED?\r
+       JRST    OUTFF           ;YES, FORCE NEW PAGE\r
+       JRST    OUTL\r
+\r
+OUTCR: TRNN    ER,ERRORS!LPTSW!TTYSW\r
+       POPJ    PP,\r
+       MOVEI   C,CR            ;CARRIAGE RETURN, LINE FEED\r
+       PUSHJ   PP,OUTL\r
+       SOSGE   LPP             ;END OF PAGE?\r
+       TLO     IO,IOPAGE       ;YES, SET FLAG\r
+       TRCA    C,7             ;FORM LINE FEED AND SKIP\r
+\r
+OUTL:  TLZN    IO,IOPAGE       ;NEW PAGE REQUESTED?\r
+       JRST    OUTC            ;NO\r
+       JUMP1   OUTC            ;YES, BYPASS IF PASS ONE\r
+       PUSH    PP,C            ;SAVE C AND CS\r
+       PUSH    PP,CS\r
+       PUSH    PP,ER\r
+       TLNN    IO,IOMSTR!IOPROG\r
+       HRR     ER,OUTSW\r
+       TLNE    IO,IOCREF       ;IF DOING CREF OUTPUT NOW\r
+       TLNE    FR,CREFSW       ;AND CREFFING (JUST IN CASE)\r
+       JRST    .+2\r
+       PUSHJ   PP,CLSC3        ;CLOSE IT OUT\r
+       HLLM    IO,(PP)         ;SAVE THIS NEW STATE OF IO\r
+       MOVEI   C,.LPP\r
+       MOVEM   C,LPP           ;SET NEW COUNTER\r
+       MOVEI   C,CR\r
+       PUSHJ   PP,OUTC\r
+       MOVEI   C,FF\r
+       PUSHJ   PP,OUTC         ;OUTPUT FORM FEED\r
+       MOVEI   CS,TBUF\r
+       PUSHJ   PP,OUTAS0       ;OUTPUT TITLE\r
+;      MOVEI   CS,VBUF\r
+;      PUSHJ   PP,OUTAS0       ;OUTPUT VERSION\r
+       MOVEI   CS,DBUF\r
+       PUSHJ   PP,OUTAS0       ; AND DATE\r
+       MOVE    C,PAGENO\r
+       PUSHJ   PP,DNC          ;OUTPUT PAGE NUMBER\r
+       AOSG    PAGEN.          ;FIRST PAGE OF THIS NUMBER?\r
+       JRST    OUTL1           ;YES\r
+       MOVEI   C,"-"           ;NO, PUT OUT MODIFIER\r
+       PUSHJ   PP,OUTC\r
+       MOVE    C,PAGEN.\r
+       PUSHJ   PP,DNC\r
+OUTL1: PUSHJ   PP,OUTCR\r
+       MOVEI CS,DEVBUF\r
+       PUSHJ PP,OUTAS0\r
+       HRRZ    CS,SUBTTX       ;SWITCH FOR SUB-TITLE\r
+       SKIPE   0(CS)           ;IS THERE A SUB-TITLE?\r
+       PUSHJ   PP,OUTTAB       ;YES, OUTPUT A TAB\r
+       PUSHJ   PP,SOUT20       ;OUTPUT ASCII WITH CARRIAGE RETURN\r
+       PUSHJ   PP,OUTCR\r
+       POP     PP,ER\r
+       POP     PP,CS           ;RESTORE REGISTERS\r
+       POP     PP,C\r
+\r
+OUTC:  TRNE    ER,ERRORS!TTYSW\r
+       PUSHJ   PP,TYO\r
+       TRNN    ER,LPTSW\r
+       POPJ    PP,\r
+OUTLST:        SOSG    LSTBUF+2        ;BUFFER FULL?\r
+       PUSHJ   PP,DMPLST       ;YES, DUMP IT\r
+COMMENT $ REG DOESN'T LIKE THIS FEATURE ANY MORE 9-5-72\r
+$\r
+       IDPB    C,LSTBUF+1      ;STORE BYTE\r
+       POPJ    PP,             ;EXIT\r
+\r
+\fPAGE0:        PUSHJ   PP,STOUTS       ;PAGE PSEUDO-OP\r
+OUTFF1:        TLNE    IO,IOCREF       ;CURRENTLY DOING CREF?\r
+       TLNE    IO,IOPROG       ;AND NOT XLISTED?\r
+       JRST    OUTFF           ;NO\r
+       HRR     ER,OUTSW\r
+       PUSHJ   PP,CLSCRF\r
+       PUSHJ   PP,OUTCR\r
+       HRRI    ER,0\r
+OUTFF: TLO     IO,IOPAGE\r
+OUTFF2:        SETOM   PAGEN.\r
+       AOS     PAGENO\r
+       POPJ    PP,\r
+\r
+TIMOUT:        IDIVI   2,^D60*^D1000\r
+TIMOU1:        IDIVI   2,^D60\r
+       PUSH    PP,3            ;SAVE MINUTES\r
+       PUSHJ   PP,OTOD         ;STORE HOURS\r
+       MOVEI   3,":"           ;SEPARATE BY COLON\r
+       IDPB    3,CS\r
+       POP     PP,2            ;STORE MINUTES\r
+OTOD:  IDIVI   2,^D10\r
+       ADDI    2,60            ;FORM ASCII\r
+       IDPB    2,CS\r
+       ADDI    3,60\r
+       IDPB    3,CS\r
+       POPJ    PP,\r
+\r
+DATOUT:        IDIVI   1,^D31          ;GET DAY\r
+       ADDI    2,1\r
+       CAIG    2,^D9           ;TWO DIGITS?\r
+       ADDI    2,7760*^D10     ;NO, PUT IN SPACE\r
+       PUSHJ   PP,OTOD         ;STORE DAY\r
+       IDIVI   1,^D12          ;GET MONTH\r
+       MOVE    2,DTAB(2)       ;GET MNEMONIC\r
+       IDPB    2,CS            ;DEPOSIT RIGHT MOST 7 BITS\r
+       LSH     2,-7            ;SHIFT NEXT IN\r
+       JUMPN   2,.-2           ;DEPOSIT IFIT EXISTS\r
+       MOVEI   2,^D64(1)       ;GET YEAR\r
+       JRST    OTOD            ;STORE IT\r
+\r
+DTAB:  "-NAJ-"\r
+       "-BEF-"\r
+       "-RAM-"\r
+       "-RPA-"\r
+       "-YAM-"\r
+       "-NUJ-"\r
+       "-LUJ-"\r
+       "-GUA-"\r
+       "-PES-"\r
+       "-TCO-"\r
+       "-VON-"\r
+       "-CED-"\r
+\fSUBTTL        MACHINE INSTRUCTION SEARCH ROUTINES\r
+IFE OPHSH,<\r
+OPTSCH:        MOVEI   RC,0\r
+       MOVEI   ARG,1B^L<OP1END-OP1TOP> ;SET UP INDEX\r
+       MOVEI   V,1B^L<OP1END-OP1TOP>/2 ;SET UP INCREMENT\r
+\r
+OPT1A: CAMN    AC0,OP1TOP(ARG) ;ARE WE POINTING AT SYMBOL?\r
+       JRST    OPT1D           ;YES, GET THE CODE\r
+       JUMPE   V,POPOUT        ;TEST FOR END\r
+       CAML    AC0,OP1TOP(ARG) ;NO, SHOULD WE MOVE DOWN?\r
+       TDOA    ARG,V           ;NO, INCREMENT\r
+OPT1B: SUB     ARG,V           ;YES, DECREMENT\r
+       ASH     V,-1            ;HALVE INCREMENT\r
+       CAIG    ARG,OP1END-OP1TOP       ;ARE WE OUT OF BOUNDS?\r
+       JRST    OPT1A           ;NO, TRY AGAIN\r
+       JRST    OPT1B           ;YES, BRING IT DOWN A PEG\r
+>\r
+\r
+IFN OPHSH,<\r
+OPTSCH:        MOVE    ARG,AC0         ;GET SIXBIT NAME\r
+       TLZ     ARG,400000      ;CLEAR SIGN BIT\r
+       IDIVI   ARG,PRIME       ;REM. GOES IN V\r
+       CAMN    AC0,OP1TOP(V)   ;ARE WE POINTING AT SYMBOL?\r
+       JRST    OPT1D           ;YES\r
+       SKIPN   OP1TOP(V)       ;TEST FOR END\r
+       POPJ    PP,             ;SYMBOL NOT FOUND\r
+       HLRZ    RC,ARG          ;SAVE LHS OF QUOTIENT\r
+       SKIPA   ARG,RC          ;GET IT BACK\r
+OPT1A: ADDI    ARG,(RC)        ;INCREMENT ARG\r
+       ADDI    V,(ARG)         ;QUADRATIC INCREASE TO V\r
+       CAIL    V,PRIME         ;V IS MODULO PRIME\r
+       JRST    [SUBI   V,PRIME\r
+               JRST    .-1]\r
+       CAMN    AC0,OP1TOP(V)   ;IS THIS IT?\r
+       JRST    OPT1D           ;YES\r
+       SKIPE   OP1TOP(V)       ;END?\r
+       JRST    OPT1A           ;TRY AGAIN\r
+       POPJ    PP,             ;FAILED\r
+>\r
+OPT1D:\r
+IFN OPHSH,<    SETZ    RC,     ;CLEAR RELOCATION\r
+       MOVE    ARG,V           ;GET INDEX IN RIGHT ACC.>\r
+       IDIVI   ARG,4           ;ARG HAS INDEX USED IN OPTTAB\r
+       LDB     V,OPTTAB(V)     ;V HAS INDEX TO OPTTAB\r
+       CAIL    V,700           ;PSEUDO-OP OR IO INSTRUCTION?\r
+       JRST    OPT1G           ;YES\r
+       ROT     V,-^D9          ;LEFT JUSTIFY\r
+       HRRI    V,OP            ;POINT TO BASIC FORMAT\r
+OPT1F: AOS     0(PP)           ;SET FOR SKIP EXIT\r
+       MOVEI   SDEL,%OP        ;SET OP-CODE CROSS-REF FLAG\r
+       JRST    CREF            ;TEST AND OUTPUT, AC0=SYMBOL, V=VALUE\r
+\r
+OPT1G: JUMPG   AC0,.+3         ;IF ".","$",OR "%" USE TABLE 1\r
+       TLNN    AC0,200000      ;PSEUDO-OP OR IO INST., TEST FOR PROPER TABLE\r
+       SKIPA   V,OP2TAB-700(V) ;2ND TABLE, FIRST LETTER IS "A" TO "O"\r
+       MOVE    V,OP1TAB-700(V) ;1ST TABLE, ..."P" TO "Z"\r
+       JRST    OPT1F           ;EXIT\r
+\r
+OPTTAB:\r
+IFE OPHSH,<    POINT   9,OP1COD-1(ARG),35>\r
+       POINT   9,OP1COD  (ARG), 8\r
+       POINT   9,OP1COD  (ARG),17\r
+       POINT   9,OP1COD  (ARG),26\r
+IFN OPHSH,<    POINT   9,OP1COD  (ARG),35>\r
+\r
+\fIFDEF .XCREF,<        .XCREF  ;DON'T CREF THIS MESS>\r
+IFE OPHSH,<\r
+       RELOC   .-1\r
+OP1TOP:\r
+       RELOC\r
+\r
+       IF1,<N1=0\r
+       DEFINE  X  <N1=N1+1 ;>>\r
+\r
+       IF2, <\r
+       N2=^D36\r
+       CC=0\r
+       RELOC   OP1COD\r
+       RELOC\r
+DEFINE X (SYMBOL,CODE) \r
+<SIXBIT /SYMBOL/\r
+CC=CC+CODE_<N2=N2-9>\r
+IFE N2, <OUTLIT>>\r
+\r
+DEFINE OUTLIT  <\r
+       RELOC\r
+       +CC\r
+       RELOC\r
+N2=^D36+<CC=0>>>\r
+       SYN X,XX                ;JUST THE SAME MACRO>\r
+\f\r
+IFN OPHSH,<\r
+DEFINE XX (SB,CD)<>            ;A NUL MACRO\r
+OP1TOP:        IF1,<   BLOCK PRIME>\r
+IF1,<DEFINE X (SB,CD)<>>\r
+IF2,<\r
+DEFINE OPSTOR (RM)<.$'RM=.$'RM+<OPCODE_<9*<3-R&3>>>>\r
+\r
+DEFINE X (SB,CD)<\r
+SXB=<SIXBIT /SB/>\r
+Q=SXB&-1_-1/PRIME\r
+R=SXB&-1_-1-Q*PRIME\r
+H=Q_-22&777\r
+TRY=1\r
+OPCODE=CD\r
+ITEM Q,\R\r
+IFL PRIME-TRY,<PRINTX HASH FAILURE>>\r
+\r
+DEFINE ITEM (QT,RM)<\r
+IFN .%'RM,<R=R+H\r
+IFL PRIME-R,<R=R-R/PRIME*PRIME>\r
+H=H+Q_-22&777\r
+IFGE PRIME-<TRY=TRY+1>,<ITEM Q,\R>>\r
+IFE .%'RM,<.%'RM=SXB\r
+OPSTOR \<R/4>>>>\r
+IF1,<\r
+DEFINE GETSYM (N)<.%'N=0>\r
+\r
+N=0\r
+       XLIST\r
+REPEAT PRIME,<GETSYM \N\r
+N=N+1>\r
+DEFINE GETSYM (N)<.$'N=0>\r
+N=0\r
+REPEAT <PRIME/4+1>,<GETSYM \N\r
+N=N+1>\r
+>\r
+       LIST>\r
+\r
+\fIFN OPHSH,<           ;PUT THE MOST USED OP CODES FIRST\r
+X      JRST  , 254\r
+X      PUSHJ , 260\r
+X      POPJ  , 263\r
+X      PUSH  , 261\r
+X      POP   , 262\r
+X      AOS   , 350\r
+X      ASCIZ , 701\r
+X      CALLI , 047\r
+X      EXTERN, 724\r
+X      INTERN, 744\r
+X      JFCL  , 255\r
+X      JSP   , 265\r
+X      MOVE  , 200\r
+X      MOVEI , 201\r
+X      MOVEM , 202\r
+X      SETZM , 402\r
+X      SIXBIT, 717\r
+X      SOS   , 370\r
+X      TLNE  , 603\r
+X      TLNN  , 607\r
+X      TLO   , 661\r
+X      TLZ   , 621\r
+X      TLZA  , 625\r
+X      TLZE  , 623\r
+X      TLZN  , 627\r
+X      TRNE  , 602\r
+X      TRNN  , 606\r
+X      TRZ   , 620\r
+>\r
+\fX     ADD   , 270\r
+X      ADDB  , 273\r
+X      ADDI  , 271\r
+X      ADDM  , 272\r
+\r
+X      AND   , 404\r
+X      ANDB  , 407\r
+X      ANDCA , 410\r
+X      ANDCAB, 413\r
+X      ANDCAI, 411\r
+X      ANDCAM, 412\r
+X      ANDCB , 440\r
+X      ANDCBB, 443\r
+X      ANDCBI, 441\r
+X      ANDCBM, 442\r
+X      ANDCM , 420\r
+X      ANDCMB, 423\r
+X      ANDCMI, 421\r
+X      ANDCMM, 422\r
+X      ANDI  , 405\r
+X      ANDM  , 406\r
+\r
+X      AOBJN , 253\r
+X      AOBJP , 252\r
+\r
+X      AOJ   , 340\r
+X      AOJA  , 344\r
+X      AOJE  , 342\r
+X      AOJG  , 347\r
+X      AOJGE , 345\r
+X      AOJL  , 341\r
+X      AOJLE , 343\r
+X      AOJN  , 346\r
+\r
+XX     AOS   , 350\r
+X      AOSA  , 354\r
+X      AOSE  , 352\r
+X      AOSG  , 357\r
+X      AOSGE , 355\r
+X      AOSL  , 351\r
+X      AOSLE , 353\r
+X      AOSN  , 356\r
+X      ARG   , 320\r
+IFN IIISW,<X   ASCID , 771>\r
+X      ASCII , 700\r
+XX     ASCIZ , 701\r
+\r
+X      ASH   , 240\r
+X      ASHC  , 244\r
+\r
+X      ASUPPR, 705\r
+X      BLKI  , 702\r
+X      BLKO  , 703\r
+X      BLOCK , 704\r
+\r
+X      BLT   , 251\r
+\r
+X      BYTE  , 707\r
+\r
+XX     CAI   , 300\r
+X      CAIA  , 304\r
+X      CAIE  , 302\r
+X      CAIG  , 307\r
+X      CAIGE , 305\r
+X      CAIL  , 301\r
+X      CAILE , 303\r
+X      CAIN  , 306\r
+\r
+X      CALL  , 040\r
+XX     CALLI , 047\r
+\r
+XX     CAM   , 310\r
+X      CAMA  , 314\r
+X      CAME  , 312\r
+X      CAMG  , 317\r
+X      CAMGE , 315\r
+X      CAML  , 311\r
+X      CAMLE , 313\r
+X      CAMN  , 316\r
+\r
+XX     CLEAR , 400\r
+XX     CLEARB, 403\r
+XX     CLEARI, 401\r
+XX     CLEARM, 402\r
+\r
+X      CLOSE , 070\r
+X      COMMEN, 770\r
+\r
+\r
+X      CONI  , 710\r
+X      CONO  , 711\r
+X      CONSO , 712\r
+X      CONSZ , 713\r
+\r
+XX     DATA. , 020\r
+\r
+X      DATAI , 714\r
+X      DATAO , 715\r
+X      DEC   , 716\r
+X      DEFINE, 717\r
+X      DEPHAS, 720\r
+\r
+X      DFN   , 131\r
+\r
+X      DIV   , 234\r
+X      DIVB  , 237\r
+X      DIVI  , 235\r
+X      DIVM  , 236\r
+\r
+\r
+X      DPB   , 137\r
+X      DPBI  , 136\r
+\r
+X      END   , 721\r
+\r
+X      ENTER , 077\r
+\r
+X      ENTRY , 722\r
+\r
+X      EQV   , 444\r
+X      EQVB  , 447\r
+X      EQVI  , 445\r
+X      EQVM  , 446\r
+\r
+X      EXCH  , 250\r
+\r
+X      EXP   , 723\r
+XX     EXTERN, 724\r
+\r
+X      FAD   , 140\r
+X      FADB  , 143\r
+X      FADL  , 141\r
+X      FADM  , 142\r
+\r
+X      FADR  , 144\r
+X      FADRB , 147\r
+X      FADRI , 145\r
+X      FADRM , 146\r
+\r
+X      FDV   , 170\r
+X      FDVB  , 173\r
+X      FDVL  , 171\r
+X      FDVM  , 172\r
+\r
+X      FDVR  , 174\r
+X      FDVRB , 177\r
+X      FDVRI , 175\r
+X      FDVRM , 176\r
+\r
+XX     FIN.  , 021\r
+\r
+\r
+X      FMP   , 160\r
+X      FMPB  , 163\r
+X      FMPL  , 161\r
+X      FMPM  , 162\r
+\r
+\fX     FMPR  , 164\r
+X      FMPRB , 167\r
+X      FMPRI , 165\r
+X      FMPRM , 166\r
+\r
+X      FSB   , 150\r
+X      FSBB  , 153\r
+X      FSBL  , 151\r
+X      FSBM  , 152\r
+\r
+X      FSBR  , 154\r
+X      FSBRB , 157\r
+X      FSBRI , 155\r
+X      FSBRM , 156\r
+\r
+X      FSC   , 132\r
+\r
+X      GETSTS, 062\r
+\r
+\fX     HALT  , 725\r
+X      HISEG , 706\r
+\r
+X      HLL   , 500\r
+X      HLLE  , 530\r
+X      HLLEI , 531\r
+X      HLLEM , 532\r
+X      HLLES , 533\r
+X      HLLI  , 501\r
+X      HLLM  , 502\r
+X      HLLO  , 520\r
+X      HLLOI , 521\r
+X      HLLOM , 522\r
+X      HLLOS , 523\r
+X      HLLS  , 503\r
+X      HLLZ  , 510\r
+X      HLLZI , 511\r
+X      HLLZM , 512\r
+X      HLLZS , 513\r
+\r
+X      HLR   , 544\r
+X      HLRE  , 574\r
+X      HLREI , 575\r
+X      HLREM , 576\r
+X      HLRES , 577\r
+X      HLRI  , 545\r
+X      HLRM  , 546\r
+X      HLRO  , 564\r
+X      HLROI , 565\r
+X      HLROM , 566\r
+X      HLROS , 567\r
+X      HLRS  , 547\r
+X      HLRZ  , 554\r
+X      HLRZI , 555\r
+X      HLRZM , 556\r
+X      HLRZS , 557\r
+\r
+\fX     HRL   , 504\r
+X      HRLE  , 534\r
+X      HRLEI , 535\r
+X      HRLEM , 536\r
+X      HRLES , 537\r
+X      HRLI  , 505\r
+X      HRLM  , 506\r
+X      HRLO  , 524\r
+X      HRLOI , 525\r
+X      HRLOM , 526\r
+X      HRLOS , 527\r
+X      HRLS  , 507\r
+X      HRLZ  , 514\r
+X      HRLZI , 515\r
+X      HRLZM , 516\r
+X      HRLZS , 517\r
+\r
+X      HRR   , 540\r
+X      HRRE  , 570\r
+X      HRREI , 571\r
+X      HRREM , 572\r
+X      HRRES , 573\r
+X      HRRI  , 541\r
+X      HRRM  , 542\r
+X      HRRO  , 560\r
+X      HRROI , 561\r
+X      HRROM , 562\r
+X      HRROS , 563\r
+X      HRRS  , 543\r
+X      HRRZ  , 550\r
+X      HRRZI , 551\r
+X      HRRZM , 552\r
+X      HRRZS , 553\r
+\r
+X      IBP   , 133\r
+\r
+X      IDIV  , 230\r
+X      IDIVB , 233\r
+X      IDIVI , 231\r
+X      IDIVM , 232\r
+\r
+X      IDPB  , 136\r
+\r
+X      IF1   , 726\r
+X      IF2   , 727\r
+X      IFB   , 730\r
+X      IFDEF , 731\r
+X      IFDIF , 732\r
+X      IFE   , 733\r
+X      IFG   , 734\r
+X      IFGE  , 735\r
+X      IFIDN , 736\r
+X      IFL   , 737\r
+X      IFLE  , 740\r
+X      IFN   , 741\r
+X      IFNB  , 742\r
+X      IFNDEF, 743\r
+\r
+X      ILDB  , 134\r
+\r
+X      IMUL  , 220\r
+X      IMULB , 223\r
+X      IMULI , 221\r
+X      IMULM , 222\r
+\r
+X      IN    , 056\r
+XX     IN.   , 016\r
+X      INBUF , 064\r
+XX     INF.  , 026\r
+X      INIT  , 041\r
+X      INPUT , 066\r
+\r
+XX     INTERN, 744\r
+\r
+X      IOR   , 434\r
+X      IORB  , 437\r
+X      IORI  , 435\r
+X      IORM  , 436\r
+\r
+\r
+X      IOWD  , 745\r
+X      IRP   , 746\r
+X      IRPC  , 747\r
+X      JCRY  , 750\r
+X      JCRY0 , 751\r
+X      JCRY1 , 752\r
+X      JEN   , 753\r
+\r
+XX     JFCL  , 255\r
+\r
+X      JFFO  , 243\r
+X      JFOV  , 765\r
+X      JOV   , 754\r
+\r
+X      JRA   , 267\r
+XX     JRST  , 254\r
+\r
+X      JRSTF , 755\r
+\r
+X      JSA   , 266\r
+XX     JSP   , 265\r
+X      JSR   , 264\r
+\r
+XX     JUMP  , 320\r
+XX     JUMPA , 324\r
+X      JUMPE , 322\r
+X      JUMPG , 327\r
+X      JUMPGE, 325\r
+X      JUMPL , 321\r
+X      JUMPLE, 323\r
+X      JUMPN , 326\r
+\r
+X      LALL  , 756\r
+\r
+X      LDB   , 135\r
+X      LDBI  , 134\r
+\r
+\r
+X      LIST  , 757\r
+X      LIT   , 760\r
+X      LOC   , 761\r
+\r
+X      LOOKUP, 076\r
+\r
+X      LSH   , 242\r
+X      LSHC  , 246\r
+X      MLOFF , 767\r
+X      MLON  , 766\r
+XX     MOVE  , 200\r
+XX     MOVEI , 201\r
+XX     MOVEM , 202\r
+X      MOVES , 203\r
+X      MOVM  , 214\r
+X      MOVMI , 215\r
+X      MOVMM , 216\r
+X      MOVMS , 217\r
+X      MOVN  , 210\r
+X      MOVNI , 211\r
+X      MOVNM , 212\r
+X      MOVNS , 213\r
+X      MOVS  , 204\r
+X      MOVSI , 205\r
+X      MOVSM , 206\r
+X      MOVSS , 207\r
+\r
+\r
+X      MTAPE , 072\r
+XX     MTOP. , 024\r
+\r
+X      MUL   , 224\r
+X      MULB  , 227\r
+X      MULI  , 225\r
+X      MULM  , 226\r
+XX     NLI.  , 031\r
+XX     NLO.  , 032\r
+\r
+X      NOSYM , 762\r
+\r
+\fX     OCT   , 763\r
+X      OPDEF , 764\r
+\r
+X      OPEN  , 050\r
+\r
+X      OR    , 434\r
+X      ORB   , 437\r
+X      ORCA  , 454\r
+X      ORCAB , 457\r
+X      ORCAI , 455\r
+X      ORCAM , 456\r
+X      ORCB  , 470\r
+X      ORCBB , 473\r
+\r
+X      ORCBI , 471\r
+X      ORCBM , 472\r
+X      ORCM  , 464\r
+X      ORCMB , 467\r
+X      ORCMI , 465\r
+X      ORCMM , 466\r
+X      ORI   , 435\r
+X      ORM   , 436\r
+\r
+X      OUT   , 057\r
+XX     OUT.  , 017\r
+X      OUTBUF, 065\r
+XX     OUTF. , 027\r
+X      OUTPUT, 067\r
+\r
+\fX     PAGE  , 700\r
+X      PASS2 , 701\r
+X      PHASE , 702\r
+X      POINT , 703\r
+\r
+XX     POP   , 262\r
+XX     POPJ  , 263\r
+\r
+X      PRGEND, 714\r
+X      PRINTX, 704\r
+X      PURGE , 705\r
+\r
+XX     PUSH  , 261\r
+XX     PUSHJ , 260\r
+\r
+X      RADIX , 706\r
+X      RADIX5, 707\r
+\r
+X      RELEAS, 071\r
+\r
+X      RELOC , 710\r
+X      REMARK, 711\r
+\r
+X      RENAME, 055\r
+\r
+X      REPEAT, 712\r
+\r
+XX     RESET., 015\r
+X      RIM   , 715\r
+X      RIM10 , 735\r
+X      RIM10B, 736\r
+\r
+X      ROT   , 241\r
+X      ROTC  , 245\r
+\r
+X      RSW   , 716\r
+XX     RTB.  , 022\r
+X      SALL  , 720\r
+IFN UNIVR,<X   SEARCH, 721>\r
+\r
+X      SETA  , 424\r
+X      SETAB , 427\r
+X      SETAI , 425\r
+X      SETAM , 426\r
+X      SETCA , 450\r
+X      SETCAB, 453\r
+X      SETCAI, 451\r
+X      SETCAM, 452\r
+X      SETCM , 460\r
+X      SETCMB, 463\r
+X      SETCMI, 461\r
+X      SETCMM, 462\r
+X      SETM  , 414\r
+X      SETMB , 417\r
+X      SETMI , 415\r
+X      SETMM , 416\r
+X      SETO  , 474\r
+X      SETOB , 477\r
+X      SETOI , 475\r
+X      SETOM , 476\r
+X      SETSTS, 060\r
+X      SETZ  , 400\r
+X      SETZB , 403\r
+X      SETZI , 401\r
+XX     SETZM , 402\r
+\r
+XX     SIXBIT, 717\r
+\r
+XX     SKIP  , 330\r
+X      SKIPA , 334\r
+X      SKIPE , 332\r
+X      SKIPG , 337\r
+X      SKIPGE, 335\r
+X      SKIPL , 331\r
+X      SKIPLE, 333\r
+X      SKIPN , 336\r
+\r
+XX     SLIST., 025\r
+\r
+X      SOJ   , 360\r
+X      SOJA  , 364\r
+X      SOJE  , 362\r
+X      SOJG  , 367\r
+X      SOJGE , 365\r
+X      SOJL  , 361\r
+X      SOJLE , 363\r
+X      SOJN  , 366\r
+\r
+XX     SOS   , 370\r
+X      SOSA  , 374\r
+X      SOSE  , 372\r
+X      SOSG  , 377\r
+X      SOSGE , 375\r
+X      SOSL  , 371\r
+X      SOSLE , 373\r
+X      SOSN  , 376\r
+\r
+X      SQUOZE, 707\r
+\r
+X      STATO , 061\r
+X      STATUS, 062\r
+X      STATZ , 063\r
+\r
+X      STOPI , 722\r
+\r
+X      SUB   , 274\r
+X      SUBB  , 277\r
+X      SUBI  , 275\r
+X      SUBM  , 276\r
+\r
+IF2,<IFE OPHSH,<SUBTL:>>\r
+X      SUBTTL, 723\r
+X      SUPPRE, 713\r
+X      SYN   , 724\r
+X      TAPE  , 725\r
+\r
+\fX     TDC   , 650\r
+X      TDCA  , 654\r
+X      TDCE  , 652\r
+X      TDCN  , 656\r
+X      TDN   , 610\r
+X      TDNA  , 614\r
+X      TDNE  , 612\r
+X      TDNN  , 616\r
+X      TDO   , 670\r
+X      TDOA  , 674\r
+X      TDOE  , 672\r
+X      TDON  , 676\r
+X      TDZ   , 630\r
+X      TDZA  , 634\r
+X      TDZE  , 632\r
+X      TDZN  , 636\r
+\r
+X      TITLE , 726\r
+\r
+X      TLC   , 641\r
+X      TLCA  , 645\r
+X      TLCE  , 643\r
+X      TLCN  , 647\r
+X      TLN   , 601\r
+X      TLNA  , 605\r
+XX     TLNE  , 603\r
+XX     TLNN  , 607\r
+XX     TLO   , 661\r
+X      TLOA  , 665\r
+X      TLOE  , 663\r
+X      TLON  , 667\r
+XX     TLZ   , 621\r
+XX     TLZA  , 625\r
+XX     TLZE  , 623\r
+XX     TLZN  , 627\r
+\r
+\fX     TRC   , 640\r
+X      TRCA  , 644\r
+X      TRCE  , 642\r
+X      TRCN  , 646\r
+X      TRN   , 600\r
+X      TRNA  , 604\r
+XX     TRNE  , 602\r
+XX     TRNN  , 606\r
+X      TRO   , 660\r
+X      TROA  , 664\r
+X      TROE  , 662\r
+X      TRON  , 666\r
+XX     TRZ   , 620\r
+X      TRZA  , 624\r
+X      TRZE  , 622\r
+X      TRZN  , 626\r
+\r
+X      TSC   , 651\r
+X      TSCA  , 655\r
+X      TSCE  , 653\r
+X      TSCN  , 657\r
+X      TSN   , 611\r
+X      TSNA  , 615\r
+X      TSNE  , 613\r
+\r
+X      TSNN  , 617\r
+X      TSO   , 671\r
+X      TSOA  , 675\r
+X      TSOE  , 673\r
+X      TSON  , 677\r
+X      TSZ   , 631\r
+X      TSZA  , 635\r
+X      TSZE  , 633\r
+X      TSZN  , 637\r
+X      TTCALL, 051\r
+X      TWOSEG, 731\r
+X      UFA   , 130\r
+X      UGETF , 073\r
+X      UJEN  , 100\r
+IFN UNIVR,<X   UNIVER, 737>\r
+X      USETI , 074\r
+X      USETO , 075\r
+\r
+X      VAR   , 727\r
+\r
+XX     WTB.  , 023\r
+\r
+X      XALL  , 732\r
+\r
+X      XCT   , 256\r
+\r
+X      XLIST , 733\r
+\r
+X      XOR   , 430\r
+X      XORB  , 433\r
+X      XORI  , 431\r
+X      XORM  , 432\r
+\r
+X      XPUNGE, 730\r
+X      XWD   , 734\r
+\r
+X      Z     , 000\r
+\r
+X      .CREF , 740\r
+X      .HWFRM, 742\r
+X      .MFRMT, 743\r
+X      .XCREF, 741\r
+\r
+\r
+\fIFN OPHSH,<           ;NO-OPS, OLD MNEMONICS,F4 UUOS\r
+X      CAI   , 300\r
+X      CAM   , 310\r
+X      CLEAR , 400\r
+X      CLEARB, 403\r
+X      CLEARI, 401\r
+X      CLEARM, 402\r
+X      JUMP  , 320\r
+X      JUMPA , 324\r
+X      SKIP  , 330\r
+X      RESET., 015\r
+X      IN.   , 016\r
+X      OUT.  , 017\r
+X      DATA. , 020\r
+X      FIN.  , 021\r
+X      RTB.  , 022\r
+X      WTB.  , 023\r
+X      MTOP. , 024\r
+X      SLIST., 025\r
+X      INF.  , 026\r
+X      OUTF. , 027\r
+X      NLI.  , 031\r
+X      NLO.  , 032\r
+>\r
+\fIFE OPHSH,<\r
+IF1, < BLOCK   N1>\r
+OP1END:        -1B36\r
+OP1COD:        BLOCK   N1/4\r
+       CC>\r
+IFN OPHSH,<\r
+IF2,<\r
+DEFINE SETVAL (N)<EXP  .%'N\r
+PURGE .%'N>\r
+N=0\r
+XLIST\r
+REPEAT PRIME,<SETVAL \N\r
+N=N+1>\r
+LIST\r
+>\r
+OP1COD:        IF1,<   BLOCK <PRIME/4+1>>\r
+IF2,<\r
+DEFINE SETVAL (N)<EXP  .$'N\r
+PURGE .$'N>\r
+N=0\r
+XLIST\r
+REPEAT <PRIME/4+1>,<SETVAL     \N\r
+N=N+1>\r
+>\r
+LIST>\r
+\r
+IFDEF .CREF,<  .CREF   ;START CREFFING AGAIN>\r
+\fSUBTTL        PERMANENT SYMBOLS\r
+SYMNUM:        EXP     LENGTH/2        ;NUMBER OF PERMANENT SYMBOLS\r
+DEFINE P       (A,B)<\r
+       SIXBIT  /A/\r
+       XWD     SYMF!NOOUTF,B>\r
+\r
+P      @,      0(SUPRBT)\r
+P      ??????, 0(SUPRBT)\r
+\r
+LENGTH= .-SYMNUM-1                     ;LENGTH OF INITIAL SYMBOLS\r
+\r
+PRMTBL:                        ;PERMANENT SYMBOLS\r
+P      ADC,    24\r
+P      APR,    0\r
+P      CCI,    14\r
+P      CDP,    110\r
+P      CDR,    114\r
+P      CPA,    0\r
+P      CR,     150\r
+P      DC,     200\r
+P      DCSA,   300\r
+P      DCSB,   304\r
+P      DF,     270\r
+P      DIS,    130\r
+P      DLS,    240\r
+P      DPC,    250\r
+P      DSK,    170\r
+P      DTC,    320\r
+P      DTS,    324\r
+P      LPT,    124\r
+P      MDF,    260\r
+P      MTC,    220\r
+P      MTM,    230\r
+P      MTS,    224\r
+P      PAG,    10\r
+P      PI,     4\r
+P      PLT,    140\r
+P      PTP,    100\r
+P      PTR,    104\r
+\r
+P      TMC,    340\r
+P      TMS,    344\r
+P      TTY,    120\r
+P      UTC,    210\r
+P      UTS,    214\r
+IFE LNSSW,<    XLIST   >\r
+IFN LNSSW,<    ;SPECIAL DEVICES FOR PEPR\r
+P .A,550\r
+P .AB,434\r
+P .ANG,440\r
+P .B,554\r
+P .BITE,470\r
+P .FA,564\r
+P .GAIN,520\r
+P .GATE,444\r
+P .IA,560\r
+P .INC,514\r
+P .LC,474\r
+P .LG,570\r
+P .PEPR,400\r
+P .RG,574\r
+P .SCON,430\r
+P .STAT,410\r
+P .TC,500\r
+P .TED,540\r
+P .THR,544\r
+P .TRK,404\r
+P .VIEW,524>\r
+       LIST\r
+PRMEND:                                ;END OF PERMANENT SYMBOLS\r
+\r
+\f      OPDEF   ZL      [Z      LITF]   ;INVALID IN LITERALS\r
+       OPDEF   ZA      [Z      ADDF]   ;INVALID IN ADDRESSES\r
+       OPDEF   ZAL     [Z      ADDF!LITF]\r
+\r
+OP1TAB:\r
+\r
+       ZA      PAGE0                   ;PAGE\r
+       ZAL     PASS20                  ;PASS2\r
+       ZAL     PHASE0                  ;PHASE\r
+       Z       POINT0                  ;POINT\r
+       ZA      PRNTX0                  ;PRINTX\r
+       ZA      PURGE0                  ;PURGE\r
+       ZA      RADIX0                  ;RADIX\r
+       Z       RADX50                  ;RADIX50,SQUOZE\r
+       ZAL     LOC0    (1)             ;RELOC\r
+       ZAL     REMAR0                  ;REMARK\r
+       ZA      REPEA0                  ;REPEAT\r
+       ZA      SUPRE0                  ;SUPRESS\r
+       ZAL     PSEND0                  ;PRGEND\r
+       ZAL     RIM0    (RIMSW)         ;RIM\r
+       DATAI   0,IOP                   ;RSW\r
+       Z       ASCII0  (1)             ;SIXBIT\r
+       ZAL     IOSET   (IOPALL!IOSALL) ;SALL\r
+IFN UNIVR,<    ZAL     SERCH0                  ;SEARCH>\r
+IFE UNIVR,<    Z       0>\r
+       ZA      STOPI0                  ;STOPI\r
+       ZA      SUBTT0  (Z (POINT 7,,)) ;SUBTTL\r
+       ZA      SYN0                    ;SYN\r
+       ZAL     TAPE0                   ;TAPE\r
+       ZA      TITLE0  (Z (POINT 7,,)) ;TITLE\r
+       ZAL     VAR0                    ;VAR\r
+\r
+       Z       XPUNG0                  ;XPUNGE\r
+       ZAL     TWSEG0                  ;TWOSEGMENTS\r
+       ZAL     XALL0   (IOPALL)        ;XALL\r
+       ZAL     IOSET   (IOPROG)        ;XLIST\r
+       Z       XWD0                    ;XWD\r
+       ZAL     RIM0    (RIM1SW)        ;RIM10\r
+       ZAL     RIM0    (R1BSW)         ;RIM10B\r
+IFN UNIVR,<    ZA      UNIV0   (Z (POINT 7,,)) ;UNIVERSAL>\r
+IFE UNIVR,<    Z       0       ;UNIVERSAL>\r
+       ZAL     IORSET  (IONCRF)        ;.CREF\r
+       ZAL     IOSET   (IONCRF)        ;.XCREF\r
+       ZA      OFFORM                  ;.HWFRMT\r
+       ZA      ONFORM                  ;.MFRMT\r
+\fOP2TAB:\r
+\r
+       Z       ASCII0  (0)             ;ASCII\r
+       Z       ASCII0  (1B18)          ;ASCIZ\r
+       BLKI    IOP                     ;BLKI\r
+       BLKO    IOP                     ;BLKO\r
+       ZAL     BLOCK0                  ;BLOCK\r
+       ZA      SUPRSA                  ;ASUPPRESS\r
+       ZAL     HISEG0                  ;HISEG\r
+       Z       BYTE0                   ;BYTE\r
+       CONI    IOP                     ;CONI\r
+       CONO    IOP                     ;CONO\r
+       CONSO   IOP                     ;CONSO\r
+       CONSZ   IOP                     ;CONSZ\r
+       DATAI   IOP                     ;DATAI\r
+       DATAO   IOP                     ;DATAO\r
+       Z       OCT0    (^D10)          ;DEC\r
+       ZA      DEFIN0                  ;DEFINE\r
+\r
+       ZAL     DEPHA0                  ;DEPHASE\r
+       ZAL     END0                    ;END\r
+       ZA      INTER0  (INTF!ENTF)     ;ENTRY\r
+       Z       EXPRES                  ;EXP\r
+       ZA      EXTER0                  ;EXTERN\r
+       JRST    4,OP                    ;HALT\r
+       TLNN    FR,IFPASS               ;IF1\r
+       TLNE    FR,IFPASS               ;IF2\r
+\r
+       TRNE    AC0,IFB0                ;IFB\r
+       TLNE    ARG,IFDEF0              ;IFDEF\r
+       Z       IFIDN0  (0)             ;IFDIF\r
+       SKIPE   IF                      ;IFE\r
+       SKIPG   IF                      ;IFG\r
+       SKIPGE  IF                      ;IFGE\r
+       Z       IFIDN0  (1)             ;IFIDN\r
+       SKIPL   IF                      ;IFL\r
+\r
+       SKIPLE  IF                      ;IFLE\r
+       SKIPN   IF                      ;IFN\r
+       TRNN    AC0,IFB0                ;IFNB\r
+       TLNN    ARG,IFDEF0              ;IFNDEF\r
+       ZA      INTER0  (INTF)          ;INTERN\r
+       Z       IOWD0                   ;IOWD\r
+       Z       IRP0    (0)             ;IRP\r
+       Z       IRP0    (400000)        ;IRPC\r
+\r
+       JFCL    6,OP                    ;JCRY\r
+       JFCL    4,OP                    ;JCRY0\r
+       JFCL    2,OP                    ;JCRY1\r
+       JRST    12,OP                   ;JEN\r
+       JFCL    10,OP                   ;JOV\r
+       JRST    2,OP                    ;JRSTF\r
+       ZAL     IORSET  (IOPALL!IOSALL) ;LALL\r
+       ZAL     IORSET  (IOPROG)        ;LIST\r
+       ZAL     LIT0                    ;LIT\r
+       ZAL     LOC0    (0)             ;LOC\r
+       ZA      OFFSYM                  ;NOSYM\r
+       Z       OCT0    (^D8)           ;OCT\r
+       ZA      OPDEF0                  ;OPDEF\r
+       JFCL    1,OP                    ;JFOV\r
+       ZA      ONML                    ;MLON\r
+       ZA      OFFML                   ;MLOFF\r
+       Z       ASCII0  (3B19)          ;COMMENT\r
+IFN IIISW,<\r
+       Z       ASCII0  (5B20)          ;ASCID>\r
+\f\r
+REPEAT 0,<CALTBL:\r
+                               ;USER DEFINED CALLI'S GO HERE\r
+       SIXBIT  /LIGHTS/        ;-1\r
+CALLI0:        SIXBIT  /RESET/         ; 0\r
+       SIXBIT  /DDTIN/         ; 1\r
+       SIXBIT  /SETDDT/        ; 2\r
+       SIXBIT  /DDTOUT/        ; 3\r
+       SIXBIT  /DEVCHR/        ; 4\r
+       SIXBIT  /DDTGT/         ; 5\r
+       SIXBIT  /GETCHR/        ; 6\r
+       SIXBIT  /DDTRL/         ; 7\r
+       SIXBIT  /WAIT/          ;10\r
+       SIXBIT  /CORE/          ;11\r
+       SIXBIT  /EXIT/          ;12\r
+       SIXBIT  /UTPCLR/        ;13\r
+       SIXBIT  /DATE/          ;14\r
+       SIXBIT  /LOGIN/         ;15\r
+       SIXBIT  /APRENB/        ;16\r
+       SIXBIT  /LOGOUT/        ;17\r
+       SIXBIT  /SWITCH/        ;20\r
+       SIXBIT  /REASSI/        ;21\r
+       SIXBIT  /TIMER/         ;22\r
+       SIXBIT  /MSTIME/        ;23\r
+       SIXBIT  /GETPPN/        ;24\r
+       SIXBIT  /TRPSET/        ;25\r
+       SIXBIT  /TRPJEN/        ;26\r
+       SIXBIT  /RUNTIM/        ;27\r
+       SIXBIT  /PJOB/          ;30\r
+       SIXBIT  /SLEEP/         ;31\r
+       SIXBIT  /SETPOV/        ;32\r
+       SIXBIT  /PEEK/          ;33\r
+       SIXBIT  /GETLIN/        ;34\r
+       SIXBIT  /RUN/           ;35\r
+       SIXBIT  /SETUWP/        ;36\r
+       SIXBIT  /REMAP/         ;37\r
+       SIXBIT  /GETSEG/        ;40\r
+       SIXBIT  /GETTAB/        ;41\r
+       SIXBIT  /SPY/           ;42\r
+       SIXBIT  /SETNAM/        ;43\r
+       SIXBIT  /TMPCOR/        ;44\r
+       SIXBIT  /DSKCHR/        ;45\r
+       SIXBIT  /SYSSTR/        ;46\r
+       SIXBIT  /JOBSTR/        ;47\r
+       SIXBIT  /STRUUO/        ;50\r
+       SIXBIT  /SYSPHY/        ;51\r
+       SIXBIT  /FRECHN/        ;52\r
+       SIXBIT  /DEVTYP/        ;53\r
+       SIXBIT  /DEVSTS/        ;54\r
+       SIXBIT  /DEVPPN/        ;55\r
+       SIXBIT  /SEEK/          ;56\r
+       SIXBIT  /RTTRP/         ;57\r
+       SIXBIT  /LOCK/          ;60\r
+       SIXBIT  /JOBSTS/        ;61\r
+       SIXBIT  /LOCATE/        ;62\r
+       SIXBIT  /WHERE/         ;63\r
+       SIXBIT  /DEVNAM/        ;64\r
+       SIXBIT  /CTLJOB/        ;65\r
+       SIXBIT  /GOBSTR/        ;66\r
+       0                       ;67\r
+       0                       ;70\r
+       SIXBIT  /HPQ/           ;71\r
+       SIXBIT  /HIBER/         ;72\r
+       SIXBIT  /WAKE/          ;73\r
+       SIXBIT  /CHGPPN/        ;74\r
+       SIXBIT  /SETUUO/        ;75\r
+       SIXBIT  /DEVGEN/        ;76\r
+       SIXBIT  /OTHUSR/        ;77\r
+       SIXBIT  /CHKACC/        ;100\r
+       SIXBIT  /DEVSIZ/        ;101\r
+       SIXBIT  /DAEMON/        ;102\r
+       SIXBIT  /JOBPEK/        ;103\r
+       SIXBIT  /ATTACH/        ;104\r
+       SIXBIT  /DAEFIN/        ;105\r
+       SIXBIT  /FRCUUO/        ;106\r
+       SIXBIT  /DEVLNM/        ;107\r
+       SIXBIT  /PATH./         ;110\r
+\r
+CALNTH==.-CALTBL\r
+NEGCAL==CALLI0-CALTBL          ;NUMBER OF NEGATIVE CALLI'S\r
+>\r
+TTCTBL:        SIXBIT  /INCHRW/        ; 0     INPUT A CHAR. AND WAIT\r
+       SIXBIT  /OUTCHR/        ; 1     OUTPUT A CHAR.\r
+       SIXBIT  /INCHRS/        ; 2     INPUT A CHAR. AND SKIP\r
+       SIXBIT  /OUTSTR/        ; 3     OUTPUT A STRING\r
+       SIXBIT  /INCHWL/        ; 4     INPUT CHAR., WAIT, LINE MODE\r
+       SIXBIT  /INCHSL/        ; 5     INPUT CHAR., SKIP, LINE MODE\r
+       SIXBIT  /GETLCH/        ; 6     GET LINE CHARACTERISTICS\r
+       SIXBIT  /SETLCH/        ; 7     SET LINE CHARACTERISTICS\r
+       SIXBIT  /RESCAN/        ;10     RESET INPUT STREAM TO COMMAND\r
+       SIXBIT  /CLRBFI/        ;11     CLEAR TYPEIN BUFFER\r
+       SIXBIT  /CLRBFO/        ;12     CLEAR TYPEOUT BUFFER\r
+       SIXBIT  /SKPINC/        ;13     SKIPS IF A CHAR. CAN BE INPUT\r
+       SIXBIT  /SKPINL/        ;14     SKIPS IF A LINE CAN BE INPUT\r
+       SIXBIT  /IONEOU/        ;15     OUTPUT AS AN IMAGE CHAR.\r
+\r
+TTCLTH==.-TTCTBL\r
+       SUBTTL  USER-DEFINED SYMBOL SEARCH ROUTINES\r
+MSRCH: PUSHJ   PP,SEARCH       ;PERFORM GENERAL SEARCH\r
+       POPJ    PP,             ;NOT FOUND, EXIT\r
+       JUMPG   ARG,MSRCH2      ;SKIP-EXIT AND CROSS-REF IF FOUND\r
+       CAME    AC0,1(SX)       ;WE ARE LOOKING AT SYMBOL, TRY ONE ABOVE\r
+       POPJ    PP,             ;NO, EXIT\r
+       ADDI    SX,2            ;YES, POINT TO IT\r
+       PUSHJ   PP,SRCH5        ;LOAD REGISTERS\r
+MSRCH2:        AOSA    0(PP)           ;SET SKIP-EXIT\r
+QSRCH: JUMPL   ARG,SSRCH3      ;BRANCH IF OPERAND\r
+       MOVEI   SDEL,%MAC       ;SET OPERATOR FLAG\r
+       TLZE IO,DEFCRS  ;IS IT A DEFINITION?\r
+       MOVEI SDEL,%DMAC        ;YES\r
+       JRST    CREF            ;CROSS-REF AND EXIT\r
+\r
+SSRCH: PUSHJ   PP,SEARCH       ;PERFORM GENERAL SEARCH\r
+       POPJ    PP,             ;NOT FOUND, EXIT\r
+       JUMPL   ARG,SSRCH2      ;SKIP-EXIT AND CROSS-REF IF FOUND\r
+SSRCH1:        CAME    AC0,-3(SX)      ;WE ARE LOOKING AT MACRO, LOOK ONE SLOT BELOW\r
+       POPJ    PP,             ;NO DICE, EXIT\r
+       SUBI    SX,2            ;YES, POINT TO IT\r
+       PUSHJ   PP,SRCH5        ;LOAD REGISTERS\r
+SSRCH2:        AOS     0(PP)           ;SET FOR SKIP-EXIT\r
+SSRCH3:        MOVEI   SDEL,%SYM       ;SET OPERAND FLAG\r
+\r
+CREF:  TLNN    IO,IONCRF       ;NO CREFFING FOR THIS SYMBOL?\r
+       TLNE    FR,P1!CREFSW    ;PASS ONE OR CROSS-REF SUPPRESSION?\r
+       POPJ    PP,             ;YES, EXIT\r
+       EXCH    SDEL,C          ;PUT FLAG IN C, SACE C\r
+       PUSH    PP,CS\r
+       TLNE IO,IOCREF          ;HAVE WE PUT OUT THE 177,102\r
+       JRST CREF3              ;YES\r
+       PUSH PP,C               ;START OF CREF DATA\r
+\r
+\fREPEAT 0,<    ;NEEDS CHANGE TO CREF\r
+       MOVEI C,177\r
+       PUSHJ PP,OUTLST\r
+       MOVEI C,102\r
+       PUSHJ PP,OUTLST\r
+       TLO IO,IOCREF   ;WE NOW ARE IN THAT STATE\r
+       POP PP,C        ;WE HAVE NOW\r
+CREF3: JUMPE C,NOFLG           ;JUST CLOSE IT\r
+       PUSHJ   PP,OUTLST       ;TYPE OF SYMBOL (%MAC,%DMAC,%SYM)\r
+       MOVSI CS,770000         ;COUNT CHRS\r
+       TDZA C,C        ;STARTING AT 0\r
+       LSH CS,-6       ;TRY NEXT\r
+       TDNE AC0,CS     ;IS THAT ONE THERE?\r
+       AOJA C,.-2      ;YES\r
+       PUSHJ PP,OUTLST         ;PRINT NUMBER OF SYMBOL CONSTITUENTS\r
+       MOVE    CS,AC0\r
+\r
+CREF2: MOVEI   C,0\r
+       LSHC    C,6\r
+       ADDI    C,40\r
+       PUSHJ   PP,OUTLST       ;THE ASCII SYMBOL\r
+       JUMPN   CS,CREF2\r
+       MOVEI   C,%DSYM\r
+       TLZE    IO,DEFCRS\r
+       PUSHJ   PP,OUTLST       ;MARK IT AS A DEFINING OCCURENCE\r
+NOFLG: MOVE    C,SDEL\r
+       POP     PP,CS\r
+       POPJ    PP,\r
+\r
+CLSCRF:        TRNN ER,LPTSW\r
+       POPJ PP,        ;LEAVE IF WE SHOULD NOT BE PRINTING\r
+CLSCR2:        MOVEI C,177\r
+       PUSHJ PP,PRINT\r
+       TLZE IO,IOCREF  ;WAS IT OPEN?\r
+       JRST CLSCR1     ;YES, JUST CLOSE IT\r
+       MOVEI C,102     ;NO, OPEN IT FIRST\r
+       PUSHJ PP,OUTLST         ;MARK BEGINNING OF CREF DATA\r
+       MOVEI C,177\r
+       PUSHJ PP,OUTLST\r
+CLSCR1:        MOVEI C,103\r
+       JRST OUTLST             ;MARK END OF CREF DATA\r
+\r
+CLSC3: TLZ IO,IOCREF\r
+       MOVEI C,177\r
+       PUSHJ PP,OUTLST\r
+       MOVEI C,104\r
+       JRST OUTLST     ;177,104 CLOSES IT FOR NOW\r
+>      ;END OF REPEAT 0\r
+\fREPEAT 1,<                    ;WORKS WITH EXISTING CREF\r
+       TLNE IO,IOPAGE\r
+       PUSHJ PP,CRFHDR         ;GET CORRECT SUBTTL\r
+       MOVEI C,177\r
+       PUSHJ PP,OUTLST\r
+       MOVEI C,102\r
+       PUSHJ PP,OUTLST\r
+       TLO IO,IOCREF   ;WE NOW ARE IN THAT STATE\r
+       POP PP,C        ;WE HAVE NOW\r
+CREF3: PUSHJ   PP,OUTLST       ;TYPE OF SYMBOL (%MAC,%DMAC,%SYM)\r
+       MOVSI CS,770000         ;COUNT CHRS\r
+       TDZA C,C        ;STARTING AT 0\r
+       LSH CS,-6       ;TRY NEXT\r
+       TDNE AC0,CS     ;IS THAT ONE THERE?\r
+       AOJA C,.-2      ;YES\r
+       PUSHJ PP,OUTLST         ;PRINT NUMBER OF SYMBOL CONSTITUENTS\r
+       MOVE    CS,AC0\r
+\r
+CREF2: MOVEI   C,0\r
+       LSHC    C,6\r
+       ADDI    C,40\r
+       PUSHJ   PP,OUTLST       ;THE ASCII SYMBOL\r
+       JUMPN   CS,CREF2\r
+       MOVEI   C,%DSYM\r
+       TLZE    IO,DEFCRS\r
+       PUSHJ   PP,OUTLST       ;MARK IT AS A DEFINING OCCURENCE\r
+       MOVE    C,SDEL\r
+       POP     PP,CS\r
+       POPJ    PP,\r
+\r
+IFN OPHSH,<\r
+SUBTL: SIXBIT  /SUBTTL/>\r
+CRFHDR:        CAME    AC0,SUBTL       ;IS FIRST SYMBOL "SUBTTL"\r
+       JRST    CRFHD1          ;NO\r
+       HLLZ    AC0,V\r
+       PUSHJ   PP,SUBTT0       ;UPDATE SUBTTL\r
+       MOVE    AC0,SUBTL       ;RESTORE ARG.\r
+       MOVEI   V,CPOPJ\r
+CRFHD1:        MOVEI   C,0\r
+       JRST    OUTL\r
+\r
+CLSC3:\r
+CLSCRF:        TRNN ER,LPTSW\r
+       POPJ PP,        ;LEAVE IF WE SHOULD NOT BE PRINTING\r
+CLSCR2:        TLZE IO,IOCREF  ;FINISH UP LINE\r
+       JRST CLSCR1\r
+       MOVEI   C,0\r
+       TLNE    IO,IOPAGE       ;NEW PAGE?\r
+       PUSHJ   PP,OUTL         ;YES,GIVE IT A ROUSING SENDOFF!\r
+       MOVEI C,177\r
+       PUSHJ PP,OUTLST\r
+       MOVEI C,102\r
+       PUSHJ PP,OUTLST         ;MARK BEGINNING OF CREF DATA\r
+CLSCR1:        MOVEI C,177\r
+       PUSHJ PP,OUTLST\r
+       MOVEI C,103\r
+       JRST OUTLST             ;MARK END OF CREF DATA\r
+>      ;END OF REPEAT 1\r
+\fSEARCH:       HLRZ    SX,SRCHX\r
+       HRRZ    SDEL,SRCHX\r
+\r
+SRCH1: CAML    AC0,-1(SX)\r
+       JRST    SRCH3\r
+SRCH2: SUB     SX,SDEL\r
+       LSH     SDEL,-1\r
+       CAMG    SX,SYMTOP\r
+       JUMPN   SDEL,SRCH1\r
+       JUMPN   SDEL,SRCH2\r
+       SOJA    SX,SRCHNO       ;NOT FOUND\r
+\r
+SRCH3: CAMN    AC0,-1(SX)\r
+       JRST    SRCH4           ;NORMAL / FOUND EXIT\r
+       ADD     SX,SDEL\r
+       LSH     SDEL,-1\r
+       CAMG    SX,SYMTOP\r
+       JUMPN   SDEL,SRCH1\r
+       JUMPN   SDEL,SRCH2\r
+       SOJA    SX,SRCHNO       ;NOT FOUND\r
+\r
+SRCH4: AOS     0(PP)           ;SET FOR SKIP EXIT\r
+SRCH5: MOVSI ARG,SUPRBT        ;HE IS USING IT, TURN OFF BIT\r
+       ANDCAM ARG,(SX) ; IN THE TABLE\r
+SRCH7: MOVE ARG,0(SX)          ;FLAG AND VALUE TO ARG\r
+       LDB     RC,RCPNTR       ;POINT 1,ARG,17\r
+       TLNE ARG,LELF   ;CHECK LEFT RELOCATE\r
+       TLO RC,1\r
+       HRRZ    V,ARG\r
+       TLNE ARG,SPTR   ;CHECK SPECIAL EXTESN POINTER\r
+       JRST SRCH6\r
+       TLNE    ARG,PNTF\r
+       MOVE    V,0(ARG)                ;36BIT VALUE TO V\r
+       JRST    SRCHOK\r
+       \r
+SRCH6: MOVE V,0(ARG)   ;VALUE\r
+       MOVE RC,1(ARG)  ;AND RELOC\r
+       TLNE RC,-2      ;CHECK AND SET EXTPNT\r
+       HLLM RC,EXTPNT\r
+       TRNE RC,-2      \r
+       HRRM RC,EXTPNT\r
+       JRST    SRCHOK\r
+SRCHNO:IFN UNIVR,<SKIPN        UNISCH+1        ;ALLOWED TO SEARCH OTHER TABLES>\r
+       POPJ    PP,             ;NO, JUST RETURN\r
+IFN UNIVR,<AOS V,UNISCH        ;GET NEXT INDEX TO TABLE\r
+       CAIE    V,1             ;FIRST TIME IN\r
+       JRST    SRCHN1          ;YES, SAVE SYMBOL INFO\r
+       HRLM    SX,UNISCH       ;SAVE SX AND SET FLAG\r
+       MOVE    ARG,SRCHX       ;SEARCH POINTER\r
+       MOVEM   ARG,UNISHX      ;TO A SAFE PLACE\r
+       HRR     ARG,SYMBOL\r
+       HRL     ARG,SYMTOP\r
+       MOVEM   ARG,UNIPTR      ;STORE ALSO\r
+SRCHN1:        MOVE    V,UNISCH(V)     ;GET TRUE INDEX\r
+       JUMPE   V,SRCHKO        ;IF ZERO ALL TABLE SCANNED\r
+       MOVE    ARG,UNISHX(V)   ;NEW SRCHX\r
+       MOVEM   ARG,SRCHX       ;SET IT UP\r
+       MOVE    ARG,UNIPTR(V)   ;SYMTOP,,SYMBOL\r
+       HRRZM   ARG,SYMBOL\r
+       HLRZM   ARG,SYMTOP\r
+       JRST    SEARCH          ;TRY AGAIN>\r
+\r
+SRCHKO:        SETZ    ARG,            ;CLEAR ARG SO ZERO STORED\r
+SRCHOK:        IFN UNIVR,<SKIPN        UNISCH          ;HAVE WE SEARCH OTHER TABLES>\r
+       POPJ    PP,             ;NO, JUST RETURN\r
+IFN UNIVR,<\r
+SYMBCK:        HLRZ    SX,UNISCH       ;RESTORE SX\r
+       SETZM   UNISCH          ;CLEAR SYMBCK FLAG\r
+       PUSH    PP,V            ;SAVE AN AC\r
+       MOVE    V,UNISHX        ;SRCHX\r
+       MOVEM   V,SRCHX         ;RESTORE ORIGINAL\r
+       MOVE    V,UNIPTR        ;SYMTOP,,SYMBOL\r
+       HRRZM   V,SYMBOL\r
+       HLRZM   V,SYMTOP\r
+       JUMPE   ARG,SRCHK2      ;TOTALLY UNDEFINED\r
+       PUSH    PP,RC           ;SAVE SOME ACCS\r
+       PUSH    PP,ARG\r
+       PUSH    PP,EXTPNT\r
+       SETZB   ARG,EXTPNT      ;CLEAR ALL SYMBOL DATA\r
+       SETZB   RC,V\r
+       PUSHJ   PP,INSERT       ;INSERT SYMBOL IN TABLE\r
+       POP     PP,EXTPNT       ;RESTORE ACCS ETC.\r
+       POP     PP,ARG\r
+       POP     PP,RC\r
+       MOVEM   ARG,(SX)        ;SET FLAGS AND VALUE AS IT SHOULD BE\r
+SRCHK2:        POP     PP,V\r
+       POPJ    PP,             ;RETURN>\r
+\r
+\fINSERQ:       TLNE    ARG,UNDF!VARF\r
+INSERZ:        SETZB   RC,V\r
+INSERT:        CAME    AC0,-1(SX)      ;ARE WE LOOKING AT MATCHING MNEMONIC?\r
+       JRST    INSRT2          ;NO, JUST INSERT\r
+       JUMPL   ARG,INSRT1      ;YES, BRANCH IF OPERAND\r
+       SKIPL   0(SX)           ;OPERATOR, ARE WE LOOKING AT ONE?\r
+       JRST    UPDATE          ;YES, UPDATE\r
+       JRST    INSRT2          ;NO, INSERT\r
+\r
+INSRT1:        SKIPG   0(SX)           ;OPERAND, ARE WE LOOKING AT ONE?\r
+       JRST    UPDATE          ;YES, UPDATE\r
+       SUBI    SX,2            ;NO, MOVE UNDER OPERATOR AND INSERT\r
+INSRT2:        MOVE    SDEL,SYMBOL\r
+       SUBI    SDEL,2\r
+       CAMLE   SDEL,FREE\r
+       JRST    INSRT3\r
+       PUSHJ   PP,XCEEDS\r
+       ADDI    SDEL,2000\r
+INSRT3:        MOVEM   SDEL,SYMBOL     ;MAKE ROOM FOR A TWO WORD ENTRY\r
+       HRLI    SDEL,2(SDEL)\r
+       BLT     SDEL,-2(SX)     ;PUSH EVERYONE DOWN TWO LOACTIONS\r
+       AOS     @SYMBOL         ;INCREMENT THE SYMBOL COUNT\r
+       TLNN RC,-2      ;NEED SPECIAL?\r
+       TRNE RC,-2      ;LEFT OR RIGHT EXTERNAL?\r
+       JRST INSRT5     ;YES, JUMP\r
+       TLNN    V,-1            ;SKIP IF V IS A 36BIT VALUE\r
+       JRST    INSRT4          ;JUMP, ITS A 18BIT VALUE\r
+       AOS     SDEL,FREE       ;36BIT, SO GET A CELL FROM FREE CORE\r
+       CAML    SDEL,SYMBOL     ;MORE CORE NEEDED?\r
+       PUSHJ   PP,XCEEDS       ;YES\r
+       HRRI    ARG,-1(SDEL)    ;POINTER TO ARG\r
+       MOVEM   V,0(ARG)        ;36BIT VALUE TO FREE CORE\r
+       TLOA    ARG,PNTF        ;NOTE THAT ARG IS APOINTER, NOT A 18BIT VALUE\r
+\r
+INSRT4:        HRR     ARG,V           ;18BIT VALUE TO ARG\r
+       DPB     RC,RCPNTR       ;FIX RIGHT RELOCATION\r
+       TLNE RC,1\r
+       TLO ARG,LELF    ;FIX LEFT RELOCATION\r
+INSRT6:        MOVEM   ARG,0(SX)       ;INSERT FLAGS AND VALUE.\r
+       MOVEM   AC0,-1(SX)      ;INSERT SYMBOL NAME.\r
+       PUSHJ   PP,SRCHI        ;INITILIAZE SRCHX\r
+       JRST    QSRCH           ;EXIT THROUGH CREF\r
+       \r
+INSRT5:        MOVEI SDEL,2    ;GET TWO CELLS FROM FREE CORE\r
+       ADDB SDEL,FREE\r
+       CAML SDEL,SYMBOL;MORE CORE NEEDED?\r
+       PUSHJ PP,XCEEDS ;YES\r
+       MOVEM RC,-1(SDEL)\r
+       HRRI ARG,-2(SDEL)       ;POINTER TO ARG\r
+       MOVEM V,0(ARG)\r
+       TLO ARG,SPTR    ;SET SPECIAL POINTER, POINTS TO TWO CELLS\r
+       JRST INSRT6\r
+\fREMOVE:       SUBI    SX,2            ;MOVE EVERYONE UP TWO LOCATIONS\r
+REMOV1:        MOVE    0(SX)\r
+       MOVEM   2(SX)           ;OVERWRITE THE DELETED SYMBOL\r
+       CAME    SX,SYMBOL       ;SKIP WHEN DONE\r
+       SOJA    SX,REMOV1\r
+       ADDI    SX,2\r
+       MOVEM   SX,SYMBOL\r
+       SOS     0(SX)           ;DECREMENT THE SYMBOL COUNT\r
+\r
+SRCHI: MOVEI   AC2,0           ;THIS CODE SETS UP SRCHX\r
+       FAD     AC2,@SYMBOL\r
+       LSH     AC2,-^D27\r
+       MOVEI   AC1,1000\r
+       LSH     AC1,-357(AC2)\r
+       HRRM    AC1,SRCHX\r
+       LSH     AC1,1\r
+       ADD     AC1,SYMBOL\r
+       HRLM    AC1,SRCHX\r
+       POPJ    PP,             ;SRCHX=XWD <SYMTBL+LENGTH/2>,LENGTH/4\r
+\r
+\fUPDATE:       DPB     RC,RCPNTR       ;FIX RIGHT RELOCATION\r
+       TLNE ARG,SPTR   ;SKIP IF THERE IS NO SPECIAL POINTER\r
+       JRST UPDAT4     ;YES, USE THE TWO CELLS\r
+       TLNN RC,-2      ;NEED TO CHANGE\r
+       TRNE RC,-2      ;ANY CURRENT EXTERNS?\r
+       JRST UPDAT5     ;YES ,JUMP\r
+       TLZ ARG,LELF    ;CLEAR LELF\r
+       TLNE RC,1       ;LEFT RELOCATABLE?\r
+       TLO ARG,LELF    ;YES, SET THE FLAG\r
+       TLNE    ARG,PNTF        ;WAS THERE A 36BIT VALUE?\r
+       JRST    UPDAT2          ;YES, USE IT.\r
+       TLNE    V,-1            ;NO,IS THERE A 36BIT VALUE?\r
+       JRST    UPDAT1          ;YES, GET A CELL\r
+       HRR     ARG,V           ;NO, USE RH OF ARG\r
+UPDAT3:        MOVEM   ARG,0(SX)       ;OVERWRITE THE ONE IN THE TABLE\r
+       POPJ    PP,             ;AND EXIT\r
+\r
+UPDAT1:        AOS     SDEL,FREE       ;GET ONE CELL\r
+       CAML    SDEL,SYMBOL     ;NEED MORE CORE?\r
+       PUSHJ   PP,XCEEDS       ;YES\r
+       HRRI    ARG,-1(SDEL)    ;POINTER TO ARG\r
+       TLO     ARG,PNTF        ;AND NOTE IT.\r
+UPDAT2:        TLNE ARG,EXTF   ;IS THERE A EXTERNAL?\r
+       JRST UPDAT3             ;YES, - JUST SAVE A LOCATION\r
+       MOVEM   ARG,0(SX)       ;NO, OVERWRITE THE POINTER IN THE TABLE\r
+       MOVEM   V,0(ARG)        ;STORE VALUE AS A 36BIT VALUE\r
+       POPJ    PP,             ;AND EXIT\r
+       \r
+UPDAT4:        MOVEM ARG,0(SX) ;WE HAVE TWO CELLS, WE USE THEM\r
+       MOVEM V,0(ARG)  ;SAVE AS 36BIT VALUE\r
+       MOVEM RC,1(ARG) ;SAVE RELOCATION BITS\r
+       POPJ PP,                ;AND EXIT\r
+\r
+UPDAT5:        MOVEI SDEL,2            ;THERE IS A EXTERNAL\r
+       ADDB SDEL,FREE          ;SO WE NEED TWO LOACTIONS\r
+       CAML SDEL,SYMBOL        ;NEED MORE CORE?\r
+       PUSHJ PP,XCEEDS         ;YES\r
+       MOVEM RC,-1(SDEL)       ;SAVE RELOCATION BITS\r
+       HRRI ARG,-2(SDEL)       ;SAVE THE POINTER IN ARG\r
+       MOVEM V,0(ARG)          ;SAVE A 36BIT VALUE\r
+       TLO ARG,SPTR            ;SET SPECIAL PNTR FLAG\r
+       TLZ ARG,PNTF            ;CLEAR POINTER FLAG\r
+       JRST UPDAT3             ;SAVE THE POINTER AND EXIT\r
+\r
+\f      SUBTTL  CONSTANTS\r
+\r
+\r
+\f      SUBTTL PHASED CODE\r
+      SUBTTL PHASED CODE\r
+LSTFIL: BLOCK 1\r
+        SIXBIT /@/      ;SYMBOL TO STOP PRINTING\r
+TAG:    BLOCK   1\r
+        SIXBIT  / + @/\r
+TABI:\r
+       BYTE    (7) 0, 11, 11, 11, 11\r
+SEQNO:  BLOCK   1\r
+        ASCIZ   /       /\r
+BININI: EXP     B\r
+BINDEV: BLOCK   1\r
+        XWD     BINBUF,0\r
+LSTINI: EXP     AL\r
+LSTDEV: BLOCK   1\r
+        XWD     LSTBUF,0\r
+IFN CCLSW,<\r
+NUNINI: EXP     DMP\r
+NUNDEV: BLOCK   1\r
+        XWD     0,0\r
+RPGINI: EXP     AL\r
+RPGDEV: BLOCK 1\r
+        XWD 0,CTLBLK\r
+>\r
+INDEVI:        EXP     A\r
+INDEV: BLOCK   1\r
+       XWD     0,IBUF\r
+DBUF:  ASCIZ   /                 PAGE /\r
+VBUF:  ASCIZ   /       MACRO / ;MUST BE LAST LOCATIONS IN BLOCK\r
+       BLOCK   3       ;ALLOW FOR LONG TITLE\r
+\r
+\fSUBTTL        STORAGE CELLS\r
+\r
+PASS1I:\r
+\r
+RP:    BLOCK   1\r
+\r
+IFE CCLSW,<CTIBUF:     BLOCK   3\r
+CTOBUF:        BLOCK   3\r
+>\r
+IFN CCLSW,<CTLBUF:     BLOCK   <CTLSIZ+5>/5\r
+>\r
+LSTBUF:        BLOCK   3\r
+BINBUF:        BLOCK   3\r
+IBUF:  BLOCK   3\r
+IFN CCLSW,<NUNDIR:>\r
+LSTDIR:        BLOCK   4\r
+BINDIR:        BLOCK   4\r
+INDIR: BLOCK   4\r
+\r
+ACDELX:                                ;LEFT HALF\r
+BLKTYP:        BLOCK   1               ;RIGHT HALF\r
+\r
+COUTX: BLOCK   1\r
+COUTY: BLOCK   1\r
+COUTP: BLOCK   1\r
+COUTRB:        BLOCK   1\r
+COUTDB:        BLOCK   ^D18\r
+\r
+ERRCNT:        BLOCK   1\r
+FREE:  BLOCK   1\r
+IFN RENTSW,<HIGH1:     BLOCK 1\r
+HISNSW:        BLOCK   1\r
+SVTYP3:        BLOCK   1\r
+HMIN:  BLOCK   1       ;START OF HIGH SEG. IN TWO SEG. PROG.>\r
+IFBLK: BLOCK   .IFBLK\r
+IFBLKA:        BLOCK   .IFBLK\r
+LADR:  BLOCK   1\r
+NCOLLS:        BLOCK   1\r
+LIMBO: BLOCK   1\r
+LBUFP: BLOCK   1\r
+LBUF:  BLOCK   <.CPL+5>/5\r
+       BLOCK 1\r
+VARHD: BLOCK   1\r
+VARHDX:        BLOCK   1\r
+\r
+LITAB: BLOCK   1\r
+LITABX:        BLOCK   1\r
+       BLOCK   1\r
+LITHD: BLOCK   1\r
+LITHDX:        BLOCK   1\r
+LITCNT:        BLOCK   1\r
+LITNUM:        BLOCK   1\r
+\r
+LOOKX: BLOCK   1\r
+NEXT:  BLOCK   1\r
+OUTSW: BLOCK   1\r
+PDP:   BLOCK   1\r
+RECCNT:        BLOCK   1\r
+SAVBLK:        BLOCK   RC\r
+SAVERC:        BLOCK   1\r
+SBUF:  BLOCK   .SBUF/5\r
+SRCHX: BLOCK   1\r
+SUBTTX:        BLOCK   1\r
+SVSYM: BLOCK   1\r
+SYMBOL:        BLOCK   1\r
+SYMTOP:        BLOCK   1\r
+\r
+STPX:  BLOCK   1\r
+STPY:  BLOCK   1\r
+STCODE:        BLOCK   .STP\r
+STOWRC:        BLOCK   .STP\r
+\r
+TABP:  BLOCK   1\r
+TCNT:  BLOCK   1               ;COUNT OF CHARS. LEFT IN TBUF\r
+TBUF:  BLOCK   .TBUF/5\r
+DEVBUF:        BLOCK   6               ;STORE NAME.EXT CREATION DATE AND TIME\r
+TYPERR:        BLOCK   1\r
+IONSYM:        BLOCK   1       ;-1 SUPRESS LISTING OF SYMBOLS\r
+PRGPTR:        BLOCK   1       ;POINTER TO CHAIN OF PRGEND BLOCKS\r
+ENTERS:        BLOCK   1       ;-1 WHEN ENTERS HAVE BEEN DONE\r
+IFN UNIVR,<UNIVSN:     BLOCK   1       ;-1 WHEN A UNIVERSAL SEEN>\r
+\r
+\fPASS2I:\r
+\r
+ABSHI: BLOCK 1\r
+HIGH:  BLOCK   1\r
+IFN RENTSW,<HHIGH: BLOCK 1     ;SAVE BREAK OF HIGH SEG. IN TWO SEG PROG.>\r
+ACDEVX:        BLOCK   1\r
+CPL:   BLOCK   1\r
+CTLSAV:        BLOCK   1\r
+CTLS1: BLOCK   1\r
+EXTPNT:        BLOCK   1\r
+INTENT:        BLOCK   1\r
+INREP: BLOCK 1\r
+INDEF: BLOCK 1\r
+INTXT: BLOCK 1\r
+INCND: BLOCK   1\r
+CALNAM:        BLOCK   1\r
+CALPG: BLOCK 1\r
+CALSEQ:        BLOCK 1\r
+DEFPG: BLOCK 1\r
+DEFSEQ:        BLOCK 1\r
+LITPG: BLOCK 1\r
+LITSEQ:        BLOCK 1\r
+REPPG: BLOCK 1\r
+REPSEQ:        BLOCK 1\r
+TXTPG: BLOCK 1\r
+TXTSEQ:        BLOCK 1\r
+CNDPG: BLOCK   1\r
+CNDSEQ:        BLOCK   1\r
+IRPCNT:        BLOCK   1\r
+IRPARG:        BLOCK   1\r
+IRPARP:        BLOCK   1\r
+IRPCF: BLOCK   1\r
+IRPPOI:        BLOCK   1\r
+IRPSW: BLOCK   1\r
+LITLVL:        BLOCK   1\r
+LITLBL:        BLOCK   1               ;NAME OF LABEL DEFINED INSIDE A LITERAL\r
+\r
+ASGBLK:        BLOCK   1\r
+LOCBLK:        BLOCK   1\r
+\r
+LOCA:  BLOCK   1\r
+LOCO:  BLOCK   1\r
+RELLOC:        BLOCK   1\r
+ABSLOC:        BLOCK   1\r
+LPP:   BLOCK   1\r
+MODA:  BLOCK   1\r
+MODLOC:        BLOCK   1\r
+MODO:  BLOCK   1\r
+IFN CCLSW,<OTBUF:      BLOCK 2>\r
+OUTSQ: BLOCK 2\r
+PAGEN.:        BLOCK   1\r
+PPTEMP:        BLOCK   1\r
+PPTMP1:        BLOCK   1\r
+PPTMP2:        BLOCK   1\r
+\r
+REPCNT:        BLOCK   1\r
+REPEXP:        BLOCK   1\r
+REPPNT:        BLOCK   1\r
+RPOLVL:        BLOCK   1\r
+R1BCNT:        BLOCK 1\r
+R1BCHK:        BLOCK 1\r
+R1BBLK:        BLOCK .R1B\r
+R1BLOC:        BLOCK 1\r
+RIMLOC:        BLOCK   1\r
+TAGINC:        BLOCK   1\r
+VECREL:        BLOCK   1\r
+VECTOR:        BLOCK   1\r
+.TEMP: BLOCK   1               ;TEMPORARY STORAGE\r
+IFN UNIVR,<UNISCH:     BLOCK   .UNIV           ;SEARCH TABLE FOR UNIVERSALS>\r
+SQFLG: BLOCK 1\r
+ARGF:  BLOCK   1\r
+MACENL:        BLOCK   1\r
+MACLVL:        BLOCK   1\r
+MACPNT:        BLOCK   1\r
+WWRXX: BLOCK   1\r
+RCOUNT:        BLOCK   1               ;COUNT OF WORDS STILL TO READ IN LEAF\r
+WCOUNT:        BLOCK   1               ;COUNT OF WORDS STILL FREE IN LEAF\r
+PASS2Z:                                ;ONLY CLEAR TO HERE ON PRGEND\r
+LSTSYM:        BLOCK   1\r
+PAGENO:        BLOCK   1\r
+SEQNO2:        BLOCK 1\r
+PASS2X:\r
+\r
+\fSUBTTL        MULTI-ASSEMBLY STORAGE CELLS\r
+\r
+LSTPGN:        BLOCK 1\r
+HDAS:  BLOCK 1\r
+IFN CCLSW,<EXTMP:      BLOCK 1 ;HOLDS EXT OF COMMAND FILE (RH)\r
+SAVFF: BLOCK   1\r
+CTLBLK:        BLOCK   3\r
+CTIBUF:        BLOCK   3\r
+CTOBUF:        BLOCK   3>\r
+MACSIZ:        BLOCK   1               ;INITIAL SIZE OF LOW SEG\r
+IFN UNIVR,<\r
+UNISIZ:        BLOCK   1               ;TOP OF BUFFERS AND STACKS\r
+UNITOP:        BLOCK   1               ;TOP OF UNIVERSAL SYMBOL TABLE\r
+UNIVNO:        BLOCK   1               ;NUMBER OF UNIVERSALS SEEN\r
+UNITBL:        BLOCK   .UNIV           ;TABLE OF UNIVERSAL NAMES\r
+UNIPTR:        BLOCK   .UNIV           ;TABLE OF SYMBOL POINTERS\r
+UNISHX:        BLOCK   .UNIV           ;TABLE OF SRCHX POINTERS>\r
+       VAR                     ;CLEAR VARIABLES\r
+\r
+JOBFFI:        BLOCK   203*NUMBUF+1            ;INPUT BUFFER PLUS ONE\r
+\r
+       END     BEG\r
+\f\r
diff --git a/src/macro.25 b/src/macro.25
new file mode 100644 (file)
index 0000000..16d9ecf
--- /dev/null
@@ -0,0 +1,7051 @@
+;STANFORD ASSEMBLY:\r
+       LPTWID==^D120   ;120 CHARACTERS/LINE ON LPT AT STANFORD\r
+TITLE  MACRO V.10      \r
+SUBTTL  RPG/CMF/JF/PMH/DMN     7-SEPT-71\r
+;COPYRIGHT 1968,1969,1970,1971, DIGITAL EQUIPMENT CORP., MAYNARD, MASS.\r
+\r
+       VMACRO==10              ;VERSION NUMBER\r
+       VUPDATE==0              ;DEC UPDATE LEVEL\r
+       VEDIT==0                ;EDIT NUMBER\r
+       VCUSTOM==0              ;NON-DEC UPDATE LEVEL\r
+\r
+\r
+       LOC     <JOBVER==137>\r
+       <VCUSTOM>B2+<VMACRO>B11+<VUPDATE>B17+VEDIT\r
+       RELOC\r
+       MLON\r
+\r
+COMMENT        *       ASSEMBLY FEATURE SWITCHES (ACTION WHEN NON-ZERO)\r
+\r
+       SWITCHES ON (NON-ZERO) IN DEC VERSION\r
+CCLSW          GIVES RAPID PROGRAM GENERATION FEATURE\r
+FTDISK         GIVES DISK FEATURES\r
+RENTSW         ASSEMBLE REENTRANT PROGRAMS\r
+\r
+       SWITCHES OFF (ZERO) IN DEC VERSION\r
+LNSSW          GIVES LNS VERSION\r
+IIISW          GIVES III FEATURES\r
+OPHSH          GIVES HASH SEARCH OF OPCODES\r
+*\r
+\fSUBTTL        DEFAULT ASSEMBLY SWITCH SETTINGS\r
+\r
+\r
+IFNDEF RENTSW,<RENTSW==0>\r
+\r
+IFNDEF LNSSW,<LNSSW==0>\r
+IFN LNSSW,<FTDISK==0>\r
+\r
+IFNDEF CCLSW,<CCLSW==1>\r
+IFN CCLSW,<FTDISK==1>\r
+\r
+IFNDEF UNIVR,<UNIVR==0>\r
+\r
+IFNDEF FTDISK,<FTDISK==0>\r
+\r
+IFNDEF IIISW,<IIISW==0>\r
+\r
+IFNDEF OPHSH,<OPHSH==0>\r
+\r
+\fSUBTTL        OTHER PARAMETERS\r
+\r
+.PDP== ^D50            ;BASIC PUSH-DOWN POINTER\r
+IFNDEF LPTWID,<LPTWID==^D132>  ;DEFAULT WIDTH OF PRINTER\r
+.LPTWD==8*<LPTWID/8>           ;USEFUL WIDTH IN MAIN LISTING\r
+.CPL== .LPTWD-^D32             ;WIDTH AVAIABLE FOR TEXT WHEN\r
+                               ;BINARY IS IN HALFWORD FORMAT\r
+.LPP==^D55     ;LINES/PAGE\r
+.STP== ^D40            ;STOW SIZE\r
+.TBUF==        ^D80            ;TITLE BUFFER\r
+.SBUF==        ^D80            ;SUB-TITLE BUFFER\r
+.IFBLK==^D20           ;IFIDN COMPARISON BLOCK SIZE\r
+.R1B==^D18\r
+.UNIV==^D10            ;NUMBER OF UNIVERSAL DEFINITIONS\r
+.LEAF==4               ;SIZE OF BLOCKS IN MACRO TREE\r
+\r
+NCOLS==1               ;NUMBER OF COLUMNS IN SYMBOL TABLE\r
+IFN CCLSW,<IFNDEF CTLSIZ,<CTLSIZ==^D200>>\r
+IFN OPHSH,<IFNDEF PRIME,<PRIME==^D701>>\r
+IFNDEF NUMBUF,<\r
+IFE LNSSW,<NUMBUF==2   ;NUMBER OF INPUT BUFFERS>\r
+IFN LNSSW,<NUMBUF==4   ;DOUBLE BUFFER FOR DOUBLE SIZE DEVICES>\r
+>\r
+\r
+EXTERN JOBREL,JOBSYM,JOBDDT,JOBFF,JOBAPR,JOBSA\r
+IFN CCLSW,<    EXTERN  JOBERR>\r
+\r
+       SALL            ;SUPPRESS ALL MACROS\r
+\r
+;SOME ASCII CHARACTERS\r
+\r
+HT==11\r
+LF==12\r
+VT==13\r
+FF==14\r
+CR==15\r
+EOL==33\r
+\f                      ;ACCUMULATORS\r
+AC0==  0\r
+AC1=   AC0+1\r
+AC2=   AC1+1\r
+SDEL=  3               ;SEARCH INCREMENT\r
+SX=    SDEL+1          ;SEARCH INDEX\r
+ARG=   5               ;ARGUMENT\r
+V=     6               ;VALUE\r
+C=     7               ;CURRENT CHARACTER\r
+CS=    C+1             ;CHARACTER STATUS BITS\r
+RC=    11              ;RELOCATION BITS\r
+MWP=   12              ;MACRO WRITE POINTER\r
+MRP=   13              ;MACRO READ POINTER\r
+IO=    14              ;IO REGISTER (LEFT)\r
+ER==   IO              ;ERROR REGISTER (RIGHT)\r
+FR=    15              ;FLAG REGISTER (LEFT)\r
+RX==   FR              ;CURRENT RADIX (RIGHT)\r
+MP=    16              ;MACRO PUSHDOWN POINTER\r
+PP=    17              ;BASIC PUSHDOWN POINTER\r
+\r
+%OP==  3\r
+%MAC== 5\r
+%DSYM==        2\r
+%SYM== 1\r
+%DMAC==        %MAC+1\r
+\r
+OPDEF  RESET   [CALLI   0]\r
+OPDEF  SETDDT  [CALLI   2]\r
+OPDEF  DDTOUT  [CALLI   3]\r
+OPDEF  DEVCHR  [CALLI   4]\r
+OPDEF  WAIT    [MTAPE   0]\r
+OPDEF  CORE    [CALLI  11]\r
+OPDEF  EXIT    [CALLI  12]\r
+OPDEF  UTPCLR  [CALLI  13]\r
+OPDEF  DATE    [CALLI  14]\r
+OPDEF  APRENB  [CALLI  16]\r
+OPDEF  MSTIME  [CALLI  23]\r
+OPDEF  PJOB    [CALLI  30]\r
+OPDEF  RUN     [CALLI  35]\r
+OPDEF  TMPCOR  [CALLI  44]\r
+\r
+\f                      ;FR  FLAG REGISTER (FR/RX)\r
+IOSCR== 000001         ;NO CR AFTER LINE\r
+MTAPSW==000004         ;MAG TAPE\r
+ERRQSW==000010         ;IGNORE Q ERRORS\r
+LOADSW==000020         ;END OF PASS1 & NO EOF YET\r
+DCFSW==        000040          ;DECIMAL FRACTION\r
+RIM1SW==000100         ;RIM10 MODE\r
+NEGSW==        000200          ;NEGATIVE ATOM\r
+RIMSW==        000400          ;RIM OUTPUT\r
+PNCHSW==001000         ;RIM/BIN OUTPUT WANTED\r
+CREFSW==002000\r
+R1BSW== 004000         ;RIM10 BINARY OUTPUT\r
+TMPSW==        010000          ;EVALUATE CURRENT ATOM\r
+INDSW==        020000          ;INDIRECT ADDRESSING WANTED\r
+RADXSW==040000         ;RADIX ERROR SWITCH\r
+FSNSW== 100000         ;NON BLANK FIELD SEEN\r
+MWLFLG==200000         ;ON FOR DON'T ALLOW MULTI-WORD LITERALS\r
+P1==   400000          ;PASS1\r
+\r
+                       ;IO FLAG REGISTER (IO/ER)\r
+FLDSW==        400000          ;ADDRESS FIELD\r
+IOMSTR==200000\r
+ARPGSW==100000         ;ALLOW RAPID PROGRAM GENERATION\r
+IOPROG==040000         ;SUPRESS LISTING (LIST/XLIST PSEUDO OP)\r
+NUMSW==        020000\r
+IOMAC==        010000          ;MACRO EXPANSION IN PROGRESS\r
+IOPALL==004000         ;SUPRESS LISTING OF MACRO EXPANSIONS\r
+IONCRF==002000         ;SUPRESS OUTPUT OF CREF INFORMATION\r
+CRPGSW==001000         ;CURRENTLY IN PROGRESS ON RPG\r
+IOCREF==000400         ;WE ARE NOW OUTPUTTING CREF INFO\r
+IOENDL==000200         ;BEEN TO STOUT\r
+IOPAGE==000100\r
+DEFCRS==000040         ;THIS IS A DEFINING OCCURANCE (MACROS)\r
+IOIOPF==000020         ;IOP INSTRUCTION SEEN\r
+MFLSW== 000010         ;MULTI-FILE MODE,PRGEND SEEN\r
+IORPTC==000004         ;REPEAT CURRENT CHARACTER\r
+IOTLSN==000002         ;TITLE SEEN\r
+IOSALL==000001         ;SUPPRESS MACRO LISTING EVEN IF BINARY IS GENERATED\r
+\r
+OPDEF  JUMP1   [JUMPL  FR,  ]  ;JUMP IF PASS 1\r
+OPDEF  JUMP2   [JUMPGE FR,  ]  ;JUMP IF PASS 2\r
+\r
+OPDEF  JUMPOC  [JUMPGE IO,  ]  ;JUMP IF IN OP-CODE FIELD\r
+OPDEF  JUMPAD  [JUMPL  IO,  ]  ;JUMP IF IN ADDRESS FIELD\r
+\r
+OPDEF  JUMPCM  [JUMPL  CS,  ]  ;JUMP IF CURRENT CHAR IS COMMA\r
+OPDEF  JUMPNC  [JUMPGE CS,  ]  ;JUMP IF CURRENT CHAR IS NON-COMMA\r
+\r
+\f                      ;ER ERROR REGISTERS (IO/ER)\r
+ERRM== 000020          ;MULTIPLY DEFINED SYMBOL\r
+ERRE== 000040          ;ILLEGAL USE OF EXTERNAL\r
+ERRP== 000100          ;PHASE DISCREPANCY\r
+ERRO== 000200          ;UNDEFINED OP CODE\r
+ERRN== 000400          ;NUMBER ERROR\r
+ERRV== 001000          ;VALUE PREVIOUSLY UNDEFINED\r
+ERRU== 002000          ;UNDEFINED SYMBOL\r
+ERRR== 004000          ;RELOCATION ERROR\r
+ERRL== 010000          ;LITERAL ERROR\r
+ERRD== 020000          ;REFERENCE TO MULTIPLY DEFINED SYMBOL\r
+ERRA== 040000          ;PECULIAR ARGUMENT\r
+ERRX== 100000          ;MACRO DEFINITION ERROR\r
+ERRQ== 200000          ;QUESTIONABLE, NON-FATAL ERROR\r
+ERRORS==777760\r
+LPTSW==        000002\r
+TTYSW==        000001\r
+\r
+                       ;SYMBOL TABLE FLAGS\r
+SYMF== 400000          ;SYMBOL\r
+TAGF== 200000          ;TAG\r
+NOOUTF==100000         ;NO DDT OUTPUT WFW\r
+SYNF== 040000          ;SYNONYM\r
+MACF== SYNF_-1         ;MACRO\r
+OPDF== SYNF_-2         ;OPDEF\r
+PNTF== 004000          ;"VALUE" IN SYMBOL TBL IS PNTR TO 36BIT VALUE\r
+UNDF== 002000          ;UNDEFINED\r
+EXTF== 001000          ;EXTERNAL\r
+INTF== 000400          ;INTERNAL\r
+ENTF== 000200          ;ENTRY\r
+VARF== 000100          ;VARIABLE\r
+MDFF== 000020          ;MULTIPLY DEFINED\r
+SPTR== 000010          ;SPECIAL EXTERNAL POINTER\r
+SUPRBT==000004         ;SUPRESS OUTPUT TO DDT\r
+LELF== 000002          ;LEFT HAND RELOCATABLE\r
+RELF== 000001          ;RIGHT HAND RELOCATABLE\r
+\r
+LITF==  200000         ;FLAG FOR PSEUDO-OPS INVALID IN LIT'S\r
+ADDF==  100000         ;FLAG FOR PSEUDO-OPS INVALID IN ADDRESSES\r
+\r
+TNODE==        200000          ;TERMINAL NODE FOR EVALEX\r
+\fSUBTTL        RUN UUO\r
+\r
+IFN CCLSW,<\r
+;THIS CODE MUST BE IN FIRST 1K TO ALLOW MAXIMUM SPACE\r
+; FOR OVERWRITING\r
+; 74 APPEARS BECAUSE ONLY LOCS 74 AND BEYOND ARE SAVED BY "SAVE"\r
+\r
+IFN CCLSW,<NUNCOM:     IOWD    0,INHERE        ;WHERE TO DO IO\r
+       0                       ;TERMINATE COMMAND LIST\r
+NUNGO2:        IN      BIN,NUNCOM      ;READ FILE\r
+       JRST    NUNGO3          ;THERE ARE NO ERRORS\r
+NUNERR:        DDTOUT  NUNPNT,         ;COMPLAIN\r
+       EXIT                    ;GIVE UP\r
+NUNERM:        ASCIZ   /?LINKAGE ERROR/\r
+NUNGO3:        SKIPE   12,INHERE+133-74 ;LOOK AT JOBCOR\r
+                               ;DOES JOB WANT TO RUN IN MORE CORE?\r
+       CAMG    12,JOBREL       ;MORE CORE THAN CURRENTLY USED?\r
+       JRST    NUNGO4          ;NO, GO BLT PROG\r
+       CORE    12,             ;ASK FOR MORE CORE\r
+       JRST    NUNERR          ;NOT AVAILABLE\r
+       JRST    NUNGO4          ;GO BLT PROGRAM\r
+INHERE:\r
+\f;THIS CODE MUST BE IN FIRST 1K\r
+NUNSET:        JUMPN   ACDEV,.+2               ;DEVICE SPECIFIED?\r
+       MOVSI   ACDEV,(SIXBIT /SYS/)    ;NO, USE SYSTEM DEVICE\r
+       JUMPN   ACEXT,.+2               ;EXT SPECIFIED?\r
+       MOVSI   ACEXT,(SIXBIT /SAV/)    ;NO, USE "SAV"\r
+       MOVEM   ACDEV,NUNDEV            ;DEVICE NAME TO USE\r
+       OPEN    BIN,NUNINI              ;INIT THE DEVICE\r
+       JRST    EINIT                   ;ERROR\r
+       MOVEM   ACFILE,NUNDIR           ;IS THE FILE AVAILABLE?\r
+       HLLZM   ACEXT,NUNDIR+1          ;STASH EXTENSION\r
+       SETZM   NUNDIR+3                ;CLEAR PPN\r
+       LOOKUP  BIN,NUNDIR              ;LOOK FOR FILE\r
+       JRST    [HLRZ   ACEXT,NUNDIR+1          ;WAS EXTENSION "SAV"?\r
+               CAIE    ACEXT,(SIXBIT /SAV/)    ;...\r
+               JRST    ERRCF                   ;GO COMPLAIN\r
+               MOVSI   ACEXT,(SIXBIT /DMP/)    ;TRY "DMP" EXTENSION\r
+               JRST    .-3     ]               ;TRA -3,4\r
+       PUSHJ PP,DELETE         ;COMMAND FILE\r
+       MOVE 15,NUNDIR          ;GET THE NAME\r
+       CALLI 15,43     ;TELL SYSTEM "SETNAM"\r
+       HLRO    15,NUNDIR+3     ;GET WORD COUNT\r
+       HRLM    15,NUNCOM       ;STASH COUNT\r
+       MOVNS   15              ;NEGATIVE COUNT\r
+       MOVEI   16,73(15)       ;WHERE TO STOP BLT\r
+       ADDI    15,INHERE       ;HOW BIG TO MAKE CORE\r
+       IORI    15,1777         ;AN EVEN MULTIPLE OF 1K\r
+       CORE    15,             ;ASK TS EXEC FOR CORE\r
+       JRST    [HRROI RC,[SIXBIT /NOT ENUF CORE FOR LINKAGE@/]\r
+               JRST ERRFIN     ];GO COMPLAIN\r
+       MOVSI   NUNTOP,NUNAC\r
+       BLT     NUNTOP,NUNTOP   ;SET ACS\r
+       HRR     NUNBLT,16       ;...\r
+       TLNN    IO,CRPGSW       ;WAS RPG IN PROGRESS?\r
+       TLZ     NUNAOS,577000   ;NO, DON'T MAKE NEXT AN RPG\r
+       JRST    NUNGO2\r
+\r
+NUNAC: PHASE   0\r
+NUNGO4:        MOVE    NUNLAC,INHERE+74-74     ;SETUP FOR NEW DDT\r
+       SETDDT  NUNLAC,         ;...\r
+INTERN JOBS41\r
+JOBS41=122             ;LOADER WILL GIVE MUL. DEF. GLOBAL IF CHANGED\r
+\r
+EXTERN JOB41\r
+       MOVE    NUNLAC,JOBS41+INHERE-74 ;RESTORE LOC 41\r
+       MOVEM   NUNLAC,JOB41    ;...\r
+NUNBLT:        BLT     NUNTOP,.-.      ;MOVE PRGM TO WHERE IT BELONGS\r
+       RESET                   ;RESET ALL I/O\r
+NUNAOS:        AOS     1,JOBSA         ;GET STARTING ADDR FOR RPG\r
+       JRST    0(1)            ;GET ON WITH THE GAME\r
+NUNPNT:        NUNERM                  ;ERROR MESSAGE POINTER\r
+NUNTOP:        XWD     INHERE+1,75\r
+NUNLAC=.\r
+       DEPHASE\r
+>   \r
+       LIST\r
+\r
+\fDELETE:       HRRZ    EXTMP           ;IF THE EXTENSION\r
+       CAIE    (SIXBIT/TMP/)   ;IS  .TMP\r
+       POPJ    PP,             ;RETURN.\r
+       CLOSE   CTL2,           ;DELETE\r
+       SETZB   4,5             ;THE COMMAND FILE.\r
+       SETZB   6,7\r
+       RENAME  CTL2,4          ;\r
+       JFCL\r
+       POPJ    PP,\r
+>\r
+\fSUBTTL        START ASSEMBLING\r
+\r
+ASSEMB:        PUSHJ   PP,INZ          ;INITIALIZE FOR PASS\r
+       MOVE    [ASCII /.MAIN/]\r
+       MOVEM   TBUF\r
+       MOVEI   SBUF\r
+       HRRM    SUBTTX\r
+\r
+ASSEM1:        PUSHJ   PP,CHARAC       ;TEST FOR FORM FEED\r
+       SKIPGE  LIMBO           ;CRLF FLAG?\r
+       JRST    ASSEM1          ;YES ,IGNORE LF\r
+       CAIN    C,14\r
+       SKIPE   SEQNO\r
+       JRST    ASSEM2\r
+       PUSHJ   PP,OUTFF1\r
+       PUSHJ   PP,OUTLI\r
+       JRST    ASSEM1\r
+\r
+ASSEM2:        AOS     TAGINC\r
+       CAIN    C,"\"           ;BACK-SLASH?\r
+       TLZA    IO,IOMAC        ;YES, LIST IF IN MACRO\r
+       TLO     IO,IORPTC\r
+       PUSHJ   PP,STMNT        ;OFF WE GO\r
+       TLZN    IO,IOENDL       ;WAS STOUT PRE-EMPTED?\r
+       PUSHJ   PP,STOUT        ;NO, POLISH OFF LINE\r
+       JRST    ASSEM1\r
+\r
+\fSUBTTL        STATEMENT PROCESSOR\r
+\r
+STMNT: TLZ     FR,INDSW!FSNSW\r
+       TLZA    IO,FLDSW\r
+STMNT1:        PUSHJ   PP,LABEL\r
+STMNT2:        PUSHJ   PP,ATOM         ;GET THE FIRST ATOM\r
+       CAIN    C,35            ;"="?\r
+       JRST    ASSIGN          ;YES\r
+       CAIN    C,32            ;":"?\r
+       JRST    STMNT1          ;YES\r
+       JUMPAD  STMNT7          ;NUMERIC EXPRESSION\r
+       JUMPN   AC0,STMN2A      ;JUMP IF NON NULL FIELD\r
+       SKIPN   LITLVL          ;ALLOW COMMA IN LITERALS\r
+       CAIE    C,14            ;NULL, COMMA?\r
+       CAIN    C,EOL           ;OR END OF LINE?\r
+       POPJ    PP,             ;YES,EXIT\r
+       CAIN    C,"]"           ;CLOSING LITERAL?\r
+       POPJ    PP,             ;YES\r
+       JRST    STMNT9          ;NO,AT LEAST SKIP ALL THIS NONSENSE\r
+\r
+STMN2A:        JUMPE   C,.+2\r
+       TLO     IO,IORPTC\r
+       PUSHJ   PP,MSRCH        ;SEARCH FOR MACRO/OPDEF/SYN\r
+       JRST    STMNT3          ;NOT FOUND, TRY OP CODE\r
+       LDB     SDEL,[POINT 3,ARG,5]\r
+       JUMPE   SDEL,ERRAX      ;ERROR IF NO FLAGS\r
+       SOJE    SDEL,OPD1       ;OPDEF IF 1\r
+       SOJE    SDEL,CALLM      ;MACRO IF 2\r
+       JRST    STMNT4          ;SYNONYM, PROCESS WITH OP-CODES\r
+\r
+STMNT3:        PUSHJ   PP,OPTSCH       ;SEARCH OP CODE TABLE\r
+       JRST    STMNT5          ;NOT FOUND\r
+STMNT4:        HLLZ    AC0,V           ;PUT CODE IN AC0\r
+       TRZ     V,ADDF          ;CLEAR ADDRESS NON-VALID FLAG\r
+       TRZE    V,LITF          ;VALID IN LITERAL?\r
+       SKIPN   LITLVL          ;NO, ARE WE IN A LITERAL?\r
+       JRST    0(V)            ;NO, GO TO APPROPRIATE PROCESSOR\r
+       POPJ    PP,             ;YES,EXIT\r
+\r
+STMNT5:        PUSHJ   PP,SSRCH        ;TRY SYMBOLS\r
+       JRST    STMNT8          ;NOT FOUND\r
+       TLNE    ARG,EXTF!UNDF   ;EXTERNAL OR UNDEFINED?\r
+       JRST    STMNT7          ;YES, PROCESS IN EVALEX\r
+       TLNN RC,-2              ;CHECK FOR EXTERNAL\r
+       TRNE RC,-2\r
+       JRST STMNT7\r
+       MOVE    AC0,V           ;FOUND, PUT VALUE IN AC0\r
+       TLO     IO,NUMSW        ;FLAG AS NUMERIC\r
+STMNT7:        TLZ     IO,IORPTC\r
+STMNT9:        PUSHJ   PP,EVALHA       ;EVALUATE EXPRESSION\r
+       TLNE    FR,FSNSW        ;FIELD SEEN?\r
+       JRST    STOW            ;YES,STOW THE CODE AND EXIT\r
+       CAIE    C,"]"-40        ;CLOSING LITERAL?\r
+       TRO     ER,ERRQ         ;NO, GIVE "Q" ERROR\r
+       POPJ    PP,             ;EXIT\r
+\r
+\fSTMNT8:       MOVEI   V,0             ;ALWAYS START SCAN WITH 0\r
+       CAIL    V,CALNTH        ;END OF TABLE?\r
+       JRST    STMN8C          ;YES, TRY TTCALLS\r
+       CAME    AC0,CALTBL(V)   ;FOUND IT?\r
+       AOJA    V,.-3           ;NO,TRY AGAIN\r
+       SUBI    V,NEGCAL        ;CALLI'S START AT -1\r
+       HRLI    V,(CALLI)       ;PUT IN UUO\r
+STMN8D:        MOVSI   ARG,OPDF        ;SET FLAG FOR OPDEF\r
+STMN8B:        PUSHJ   PP,INSERT       ;PUT OPDEF IN TABLE\r
+       JRST    OPD             ;AND TREAT AS OPDEF\r
+\r
+STMN8C:        SETZ    V,              ;START WITH ZERO\r
+       CAIL    V,TTCLTH        ;END OF TABLE?\r
+       JRST    STMN8A          ;YES, ERROR\r
+       CAME    AC0,TTCTBL(V)   ;MATCH?\r
+       AOJA    V,.-3           ;NO, KEEP TRYING\r
+       LSH     V,5             ;PUT IN AC FIELD (RIGHT HALF)\r
+       HRLZI   V,<(TTCALL)>(V) ;PUT UUO IN LEFT HALF\r
+       JRST    STMN8D          ;SET OPDEF FLAG\r
+\r
+STMN8A:        SETZB   V,RC            ;CLEAR VALUE AND RELOCATION\r
+       TRO     ER,ERRO         ;FLAG AS UNDEFINED OP-CODE\r
+       JUMP1   OPD             ;TREAT AS STANDARD OP ON PASS1\r
+       MOVSI   ARG,OPDF!UNDF!EXTF      ;SET A FEW FLAGS\r
+       JRST    STMN8B          ;TO FORCE OUT A MESSAGE\r
+\r
+               ;STATEMENT OUT PASSES REMAINDER OF LINE (CMNT)\r
+                       ;UNTIL A LINE TERMINATOR IS SEEN.\r
+STOUTS:        TLOA    IO,IOENDL!IORPTC\r
+STOUT: TLO     IO,IORPTC\r
+       PUSHJ   PP,BYPAS1\r
+       CAIN    C,14            ;COMMA?\r
+       SKIPL   STPX            ;YES, ERROR IF CODE STORED\r
+       CAIN    C,EOL\r
+       TLOA    IO,IORPTC\r
+       TRO     ER,ERRQ\r
+STOUT1:        PUSHJ   PP,CHARAC\r
+       CAIG    C,CR\r
+       CAIG    C,HT\r
+       JRST    STOUT1\r
+       JRST    OUTLIN          ;OUTPUT THE LINE (BIN AND LST)\r
+\f      SUBTTL  LABEL PROCESSOR\r
+       \r
+LABEL: JUMPAD  LABEL4          ;COMPARE IF NON-SYMBOLIC\r
+       JUMPE   AC0,LABEL5      ;ERROR IF BLANK\r
+       TLO IO,DEFCRS           ;THIS IS A DEFINITION\r
+       PUSHJ   PP,SSRCH        ;SEARCH FOR OPERAND\r
+       MOVSI   ARG,SYMF!UNDF!TAGF      ;NOT FOUND\r
+       TLNN    ARG,EXTF        ;OPERAND FOUND (SKIP EXIT)\r
+       JRST    LABEL0\r
+       JUMP1   LABEL3          ;ERROR ON PASS1\r
+       TLNN    ARG,UNDF        ;UNDEFINED ON PASS1\r
+       JRST    LABEL3          ;NO, FLAG ERROR\r
+       TLZ     ARG,EXTF!PNTF   ;TURN OFF EXT FLAG NOW\r
+LABEL0:        TLZN    ARG,UNDF!VARF   ;WAS IT PREVIOUSLY DEFINED?\r
+       JRST    LABEL2          ;YES, CHECK EQUALITY\r
+       MOVE    V,LOCA  ;WFW\r
+       MOVE    RC,MODA\r
+       TLO     ARG,TAGF\r
+       PUSHJ   PP,PEEK         ;GET NEXT CHAR.\r
+       CAIE    C,":"           ;SPECIAL CHECK FOR  ::\r
+       JRST    LABEL1          ;NO MATCH\r
+       TLO     ARG,INTF        ;MAKE IT INTERNAL\r
+       PUSHJ   PP,GETCHR       ;PROCESS NEXT CHAR.\r
+       PUSHJ   PP,PEEK         ;PREVIEW NEXT CHAR.\r
+LABEL1:        CAIE    C,"!"           ;HALF-KILL SIGN\r
+       JRST    LABEL6          ;NO\r
+       TLO     ARG,NOOUTF      ;YES, SUPPRESS IT\r
+       PUSHJ   PP,GETCHR       ;AND GET RID OF IT\r
+LABEL6:        MOVEM   AC0,TAG         ;SAVE FOR PASS 1 ERRORS\r
+       HLLZS   TAGINC          ;ZERO INCREMENT\r
+       JRST    INSERT          ;INSERT/UPDATE AND EXIT\r
+\r
+LABEL2:        HRLOM   V,LOCBLK        ;SAVE LIST LOCATION\r
+       CAMN    V,LOCA          ;DOES IT COMPARE WITH PREVIOUS? WFW\r
+       CAME    RC,MODA\r
+LABEL3:        TLOA    ARG,MDFF        ;NO, FLAG MULTIPLY DEFINED AND SKIP\r
+       JRST    LABEL7          ;YES, GET RID OF EXTRA CHARS.\r
+       TRO     ER,ERRM         ;FLAG MULTIPLY DEFINED ERROR \r
+       JRST    UPDATE          ;UPDATE AND EXIT\r
+\r
+LABEL4:        CAMN    AC0,LOCA        ;DO THEY COMPARE?\r
+       CAME    RC,MODA\r
+LABEL5:        TRO     ER,ERRP         ;NO, FLAG PHASE ERROR\r
+       POPJ    PP,\r
+\r
+LABEL7:        SKIPE   LITLVL          ;LABEL IN A LITERAL?\r
+       MOVEM   AC0,LITLBL      ;YES, SAVE LABEL NAME FOR LATER\r
+       PUSHJ   PP,PEEK         ;INSPECT A CHAR.\r
+       CAIN    C,":"           ;COLON?\r
+       PUSHJ   PP,GETCHR       ;YES, DISPOSE OF IT\r
+       PUSHJ   PP,PEEK         ;EXAMINE ONE MORE CHAR.\r
+       CAIN    C,"!"           ;EXCLAMATION?\r
+       JRST    GETCHR          ;YES, INDEED\r
+\f      POPJ    PP,\r
+\fSUBTTL        ATOM PROCESSOR\r
+ATOM:  PUSHJ   PP,CELL         ;GET FIRST CELL\r
+       TLNE    IO,NUMSW        ;IF NON-NUMERIC\r
+ATOM1: CAIE    C,42            ;OR NOT A BINARY SHIFT,\r
+       POPJ    PP,             ;EXIT\r
+\r
+       PUSH    PP,AC0          ;STACK REGISTERS, ITS A BINARY SHIFT\r
+       PUSH    PP,AC1\r
+       PUSH    PP,RC\r
+       PUSH    PP,RX\r
+       HRRI    RX,^D10         ;COMPUTE SHIFT RADIX 10\r
+       PUSHJ   PP,CELLSF       ;GET SHIFT\r
+       MOVE    ARG,RC          ;SAVE RELOCATION\r
+       POP     PP,RX           ;RESTORE REGISTERS\r
+       POP     PP,RC\r
+       POP     PP,AC1\r
+       MOVN    SX,AC0          ;USE NEGATIVE OF SHIFT\r
+       POP     PP,AC0\r
+       JUMPN   ARG,NUMER2      ;IF NOT ABSOLUTE\r
+       TLNN    IO,NUMSW        ;AND NUMERIC,\r
+       JRST    NUMER2          ;FLAG ERROR\r
+       LSHC    AC0,^D35(SX)\r
+       LSH     RC,^D35(SX)\r
+       JRST    ATOM1           ;TEST FOR ANOTHER\r
+\fCELLSF:       TLO     IO,FLDSW\r
+CELL:  SETZB   AC0,RC          ;CLEAR RESULT AND RELOCATION\r
+       SETZB   AC1,AC2         ;CLEAR WORK REGISTERS\r
+       MOVEM   PP,PPTEMP       ;SAVE PUSHDOWN POINTER\r
+       TLZ     IO,NUMSW\r
+       TLZA    FR,NEGSW!DCFSW!RADXSW\r
+\r
+CELL1: TLO     IO,FLDSW\r
+       PUSHJ   PP,BYPASS\r
+       LDB     V,[POINT 4,CSTAT(C),14] ;GET CODE\r
+       XCT     .+1(V)          ;EXECUTE, INDEX VIA BITS 11,12,13,14 OF CSTAT TABLE\r
+       JRST    CELL1           ;0; BLANK, (TAB OR "+")\r
+       JRST    LETTER          ;1; LETTER  ] $ % ( ) , ; >\r
+       TLC     FR,NEGSW        ;2; "-"\r
+       TLO     FR,INDSW        ;3; "@"\r
+       JRST    NUM1            ;4; NUMERIC   0 - 9\r
+       JRST    ANGLB           ;5; "<"\r
+       JRST    SQBRK           ;6; "["\r
+       JRST    QUOTES          ;7; ""","'" \r
+       JRST    QUAL            ;10; "^"\r
+       JRST    PERIOD          ;11; "."\r
+       TROA    ER,ERRQ         ;12; ERROR, FLAG AND TREAT AS DELIMITER\r
+                               ;12;    ! # & * / : = ? \ _\r
+\fLETTER:       TLOA    AC2,(POINT 6,AC0,)      ;SET BYTE POINTER\r
+LETTE1:        PUSHJ   PP,GETCHR       ;GET CHARACTER\r
+       TLNN    CS,6            ;ALPHA-NUMERIC?\r
+       JRST    LETTE3          ;NO,TEST FOR VARIABLE\r
+       TLNE    AC2,770000      ;STORE ONLY SIX BYTES\r
+LETTE2:        IDPB    C,AC2           ;RETURN FROM PERIOD\r
+       JRST    LETTE1\r
+\r
+LETTE3:        CAIE    C,03            ;"#"?\r
+       POPJ    PP,\r
+       JUMPE   AC0,POPOUT      ;TEST FOR NULL\r
+       PUSHJ   PP,PEEK         ;PEEK AT NEXT CHAR.\r
+       CAIN    C,"#"           ;IS IT 2ND #?\r
+       JRST    LETTE4          ;YES, THEN IT'S AN EXTERN\r
+       TLO     IO,DEFCRS\r
+       PUSHJ   PP,SSRCH        ;YES, SEARCH FOR SYMBOL (OPERAND)\r
+       MOVSI   ARG,SYMF!UNDF   ;NOT FOUND, FLAGAS UNDEFINED SYM.\r
+       TLNN    ARG,UNDF        ;UNDEFINED?\r
+       JRST    GETCHR          ;NO, GET NEXT CHAR AND RETURN\r
+       TLO     ARG,VARF        ;YES, FLAG AS A VARIABLE\r
+       TRO     ER,ERRU         ;SET UNDEFINED ERROR FLAG\r
+       PUSHJ   PP,INSERZ       ;INSERT IT WITH A ZERO VALUE\r
+       JRST    GETDEL\r
+\r
+LETTE4:        PUSHJ   PP,GETCHR       ;AND SCAN PAST IT\r
+       PUSHJ   PP,GETCHR       ;GET RID OF #\r
+       JRST    EXTER1          ;PUT IN SYMBOL TABLE\r
+\r
+NUMER1:        SETZB   AC0,RC          ;RETURN ZERO\r
+NUMER2:        TRO     ER,ERRN         ;FLAG ERROR\r
+\r
+GETDEL:        PUSHJ   PP,BYPASS\r
+GETDE1:        JUMPE   C,.-1\r
+       MOVEI   AC1,0\r
+GETDE3:        TLO     IO,NUMSW!FLDSW  ;FLAG NUMERIC\r
+       TLNN    FR,NEGSW        ;IS ATOM NEGATIVE?\r
+       POPJ    PP,             ;NO, EXIT\r
+       JUMPE   AC1,GETDE2\r
+       MOVNS   AC1\r
+       TDCA    AC0,[-1]\r
+GETDE2:        MOVNS   AC0             ;YES, NEGATE VALUE\r
+       MOVNS   RC              ;AND RELOCATION\r
+POPOUT:        POPJ    PP,             ;EXIT\r
+\fQUOTES:       CAIE    C,"'"-40        ;IS IT  "'"\r
+       JRST    QUOTE           ;NO MUST BE """\r
+       JRST    SQUOTE          ;YES\r
+\r
+QUOTE0:        TLNE    AC0,376000      ;5 CHARACTERS STORED ALREADY?\r
+       TRO     ER,ERRQ         ;YES, GIVE WARNING\r
+       ASH     AC0,7\r
+       IOR     AC0,C\r
+QUOTE: PUSHJ   PP,CHARAC       ;GET 7-BIT ASCII\r
+       CAIG    C,15            ;TEST FOR LF, VT, FF OR CR\r
+       CAIGE   C,12\r
+       JRST    .+2             ;NO, SO ALL IS WELL\r
+       JRST    QUOTE2          ;ESCAPE WITH Q ERROR\r
+       CAIE    C,42\r
+       JRST    QUOTE0\r
+       PUSHJ   PP,PEEK         ;LOOK AT NEXT CHAR.\r
+       CAIE    C,42\r
+       JRST    QUOTE1          ;RESTORE REPEAT LEVEL AND QUIT\r
+       PUSHJ   PP,CHARAC       ;GET NEXT CHAR.\r
+       JRST    QUOTE0          ;USE IT\r
+\r
+QUOTE2:        TRO     ER,ERRQ         ;SET Q ERROR\r
+QUOTE1:        JRST    GETDEL\r
+\r
+SQUOT0:        TLNE    AC0,770000      ;SIX CHARS. STORED ALREADY ?\r
+       TRO     ER,ERRQ         ;YES\r
+       LSH     AC0,6\r
+       IORI    AC0,-40(C)      ;OR IN SIXBIT CHAR.\r
+\r
+SQUOTE:        PUSHJ   PP,CHARAC\r
+       CAIG    C,CR\r
+       CAIGE   C,LF\r
+       JRST    .+2\r
+       JRST    QUOTE1\r
+       CAIE    C,"'"\r
+       JRST    SQUOT0\r
+       PUSHJ   PP,PEEK\r
+       CAIE    C,"'"\r
+       JRST    QUOTE1\r
+       PUSHJ   PP,CHARAC\r
+       JRST    SQUOT0\r
+\r
+\fQUAL: PUSHJ   PP,BYPAS1       ;SKIP BLANKS, GET NEXT CHARACTER\r
+       CAIN    C,42            ;"B"?\r
+       JRST    QUAL2           ;YES, RADIX=D2\r
+       CAIN    C,57            ;"O"?\r
+       JRST    QUAL8           ;YES, RADIX=D8\r
+       CAIN    C,46            ;"F"?\r
+       JRST    NUMDF           ;YES, PROCESS DECIMAL FRACTION\r
+       CAIN    C,54            ;"L"?\r
+       JRST    QUALL           ;YES\r
+       CAIE    C,44            ;"D"?\r
+       JRST    NUMER1          ;NO, FLAG NUMERIC ERROR\r
+       ADDI    AC2,2\r
+QUAL8: ADDI    AC2,6\r
+QUAL2: ADDI    AC2,2\r
+       PUSH    PP,RX\r
+       HRR     RX,AC2\r
+       PUSHJ   PP,CELLSF\r
+QUAL2A:        POP     PP,RX\r
+       TLNN    IO,NUMSW\r
+       JRST    NUMER1\r
+       JRST    GETDE1\r
+\r
+QUALL: PUSH    PP,FR\r
+       PUSHJ   PP,CELLSF\r
+       MOVE    AC2,AC0\r
+       MOVEI   AC0,^D36\r
+       JUMPE   AC2,QUAL2A\r
+       LSH     AC2,-1\r
+       SOJA    AC0,.-2\r
+\fSUBTTL        LITERAL PROCESSOR\r
+\r
+SQBRK: PUSH    PP,FR\r
+       PUSH    PP,EXTPNT       ;ALLOW EXTERN TO PRECEDE LIT IN XWD\r
+       SETZM   EXTPNT\r
+       SKIPE LITLVL    ;SAVE SEQNO AND PAGE IF NOT IN LIT ALREADY\r
+       JRST SQB5\r
+       MOVE C,SEQNO2\r
+       MOVEM C,LITSEQ\r
+       MOVE C,PAGENO\r
+       MOVEM C,LITPG\r
+SQB5:  JSP     AC2,SVSTOW\r
+SQB3:  PUSHJ   PP,STMNT\r
+       CAIN C,75       ;CHECK FOR ]\r
+       JRST SQB1\r
+       TLO IO,IORPTC\r
+       TLNE    FR,MWLFLG       ;CALL IT ] IF NOT MULTI-WORD FLAG\r
+       JRST    SQB2            ;BUT REPEAT LAST CHARACTER\r
+       PUSHJ PP,BYPAS1\r
+       CAIN C,EOL\r
+       TLOA IO,IORPTC\r
+       TRO ER,ERRQ\r
+SQB4:  PUSHJ PP,CHARAC\r
+       CAIN    C,";"           ;COMMENT?\r
+       JRST    SQB6            ;YES, IGNORE SQUARE BRACKETS\r
+       CAIN    C,"]"           ;LOOK FOR TERMINAL SQB\r
+       TRNN    ER,ERRORS       ;IN CASE OF ERROR IN LITERAL\r
+       JRST    .+2             ;NO ALL IS WELL\r
+       JRST    SQB1            ;FINISH THE LITERAL NOW!!\r
+       CAIG    C,CR            ;LOOK FOR END OF LINE\r
+       CAIN    C,HT\r
+       JRST    SQB4\r
+SQB4A: PUSHJ   PP,OUTIML       ;DUMP\r
+       PUSHJ   PP,CHARAC       ;GET ANOTHER CHAR.\r
+       SKIPL   LIMBO           ;CRLF FLAG\r
+       TLO     IO,IORPTC       ;NO REPEAT\r
+       JRST    SQB3\r
+\r
+SQB6:  PUSHJ   PP,CHARAC       ;GET A CHARACTER\r
+       CAIG    C,CR\r
+       CAIN    C,HT            ;LOOK FOR END OF LINE CHAR.\r
+       JRST    SQB6            ;NOT YET\r
+       JRST    SQB4A           ;GOT IT\r
+\r
+SQB1:  TLZ     IO,IORPTC\r
+SQB2:  PUSHJ   PP,STOLIT\r
+       JSP     AC2,GTSTOW\r
+       SKIPE   LITLBL          ;NEED TO FIXUP A LABEL?\r
+       PUSHJ   PP,RELBLE       ;YES, USE LOC OF LITERAL\r
+       POP     PP,EXTPNT\r
+       POP     PP,FR\r
+       SKIPE   LITLVL          ;WERE WE NESTED?\r
+       JUMP1   NUMER2          ;YES, FORCE ERROR IF PASS 1\r
+       JRST    GETDEL\r
+\r
+RELBLE:        PUSH    PP,AC0          ;SAVE LOCATION COUNTER\r
+       PUSH    PP,RC           ;AND RELOCATION\r
+       MOVE    AC0,LITLBL      ;SYMBOL WE NEED\r
+       SETZM   LITLBL          ;ZERO INDICATOR\r
+       PUSHJ   PP,SSRCH        ;SEARCH FOR OPERAND\r
+       JRST    RELBL1          ;SHOULD NEVER HAPPEN\r
+       TLNN    ARG,TAGF        ;IT BETTER BE A LABEL\r
+       JRST    RELBL1          ;IT WASN'T , GIVE UP BEFORE SOME HARM IS DONE\r
+       TLZ     ARG,UNDF!EXTF!PNTF      ;CLEAR FLAGS NOW\r
+       POP     PP,RC           ;GET LITERAL RELOCATION\r
+       MOVE    V,(PP)          ;GET VALUE (LOC COUNTER)\r
+       PUSHJ   PP,UPDATE       ;UPDATE VALUE\r
+       POP     PP,AC0          ;RESTORE LITERAL COUNT\r
+       POPJ    PP,             ;RETURN\r
+       \r
+RELBL1:        POP     PP,RC           ;RESTORE RC\r
+       POP     PP,AC0  ;AND AC0\r
+       POPJ    PP,             ;JUST RETURN\r
+\fANGLB:        PUSH    PP,FR\r
+       TLZ     FR,INDSW\r
+       PUSHJ   PP,ATOM\r
+       TLNN    IO,NUMSW\r
+       CAIE    C,35\r
+       JRST    ANGLB1\r
+       PUSHJ   PP,ASSIG1\r
+       MOVE    AC0,V\r
+       JRST    ANGLB2\r
+\r
+ANGLB1:        PUSHJ   PP,EVALHA\r
+ANGLB2:        POP     PP,FR\r
+       CAIE    C,36\r
+       TRO     ER,ERRN\r
+       JRST    GETDEL\r
+\r
+PERIOD:        PUSHJ   PP,GETCHR       ;LOOK AT NEXT CHARACTER\r
+       TLNN    CS,2            ;ALPHABETIC?\r
+       JRST    PERNUM          ;NO, TEST NUMERIC\r
+       MOVSI   AC0,(SIXBIT /./)        ;YES, PUT PERIOD IN AC0\r
+       MOVSI   AC2,(POINT 6,AC0,5)     ;SET BYTE POINTER\r
+       JRST    LETTE2          ;AND TREAT AS SYMBOL\r
+\r
+PERNUM:        TLNE    CS,4            ;IS IT A NUMBER\r
+       JRST    NUM32           ;YES\r
+       MOVE    AC0,LOCA        ;NO. CURRENT LOC SYMBOL (.)\r
+       MOVE    RC,MODA         ;SET TO CURRENT ASSEMBLY MODE\r
+       JRST    GETDE1          ;GET DELIMITER\r
+NUMDF: TLO     FR,DCFSW        ;SET DECIMAL FRACTION FLAG\r
+NUM:   PUSHJ   PP,GETCHR       ;GET A CHARACTER\r
+       TLNN    CS,4            ;NUMERIC?\r
+       JRST    NUM10           ;NO\r
+NUM1:  SUBI    C,20            ;CONVERT TO OCTAL\r
+       PUSH    PP,C            ;STACK FOR FLOATING POINT\r
+       MOVE    AC0,AC1\r
+       MULI    AC0,0(RX)\r
+       ADD     AC1,C           ;ADD IN LAST VALUE\r
+       CAIL    C,0(RX)         ;IS NUMBER LESS THAN CURRENT RADIX?\r
+       TLO     FR,RADXSW       ;NO, SET FLAG\r
+       AOJA    AC2,NUM         ;YES, AC2=NO. OF DECIMAL PLACES\r
+\r
+\fNUM10:        CAIE    C,16            ;PERIOD?\r
+       TLNE    FR,DCFSW        ;OR DECIMAL FRACTION?\r
+       JRST    NUM30           ;YES, PROCESS FLOATING POINT\r
+       LSH     AC1,1           ;NO, CLEAR THE SIGN BIT\r
+       LSHC    AC0,^D35        ;AND SHIFT INTO AC0\r
+       MOVE    PP,PPTEMP       ;RESTORE PP\r
+       SOJE    AC2,GETDE1      ;NO RADIX ERROR TEST IF ONE DIGIT\r
+       TLNE    FR,RADXSW       ;WAS ILLEGAL NUMBER ENCOUNTERED?\r
+       TRO     ER,ERRN         ;YES, FLAG N ERROR\r
+       JRST    GETDE1\r
+\r
+NUM30: CAIE    C,"B"-40        ;IF "B" THEN MISSING  "."\r
+NUM31: PUSHJ   PP,GETCHR\r
+       TLNN    CS,4            ;NUMERIC?\r
+       JRST    NUM40           ;NO\r
+NUM32: SUBI    C,20\r
+       PUSH    PP,C\r
+       JRST    NUM31\r
+\r
+NUM40: PUSH    PP,FR           ;STACK VALUES\r
+       HRRI    RX,^D10\r
+       PUSH    PP,AC2\r
+       PUSH    PP,PPTEMP\r
+       CAIN    C,45            ;"E"?\r
+       JRST    [PUSHJ PP,PEEK  ;GET NEXT CHAR\r
+               PUSH PP,C       ;SAVE NEXT CHAR\r
+               PUSHJ PP,CELL   ;YES, GET EXPONENT\r
+               POP PP,C        ;GET FIRST CHAR. AFTER E\r
+               CAIN V,4        ;MUST HAVE NUMERICAL STATUS\r
+               JRST    .+2     ;SKIP RETURN\r
+               CAIN C,"<"      ;ALLOW <EXP>\r
+               JRST    .+2     ;SKIP RETURN\r
+               SKIPN   AC0     ;ERROR IF NON-ZERO EXPRESSION\r
+               TROA ER,ERRQ    ;ALLOW E+,E-\r
+               SETOM   RC      ;FORCE NUMERICAL ERROR\r
+               JRST    .+2]    ;SKIP RETURN\r
+       MOVEI   AC0,0           ;NO, ZERO EXPONENT\r
+       POP     PP,PPTEMP\r
+       POP     PP,SX\r
+       POP     PP,FR\r
+       HRRZ    V,PP\r
+       MOVE    PP,PPTEMP\r
+       JUMPN   RC,NUMER1       ;EXPONENT MUST BE ABSOLUTE\r
+       ADD     SX,AC0\r
+       HRRZ    ARG,PP\r
+       ADD     SX,ARG\r
+       SETZB   AC0,AC2\r
+       TLNE    FR,DCFSW\r
+       JRST    NUM60\r
+       JOV     NUM50           ;CLEAR OVERFLOW FLAG\r
+\f\r
+NUM50: JSP     SDEL,NUMUP      ;FLOATING POINT\r
+       JRST    NUM52           ;END OF WHOLE NUMBERS\r
+       FMPR    AC0,[10.0]      ;MULTIPLY BY 10\r
+       TLO     AC1,233000      ;CONVERT TO FLOATING POINT\r
+       FADR    AC0,AC1         ;ADD IT IN\r
+       JRST    NUM50\r
+\r
+NUM52: JSP     SDEL,NUMDN      ;PROCESS FRACTION\r
+       FADR    AC0,AC2\r
+       JOV     NUMER1          ;TEST FOR OVERFLOW\r
+       JRST    GETDE1\r
+\r
+       TLO     AC1,233000\r
+       TRNE    AC1,-1\r
+       FADR    AC2,AC1         ;ACCUMULATE FRACTION\r
+       FDVR    AC2,[10.0]\r
+       JRST    NUM52\r
+\r
+NUM60: JSP     SDEL,NUMUP\r
+       JRST    NUM62\r
+       IMULI   AC0,^D10\r
+       ADD     AC0,AC1\r
+       JRST    NUM60\r
+\r
+NUM62: LSHC    AC1,-^D36\r
+       JSP     SDEL,NUMDN\r
+       LSHC    AC1,^D37\r
+       PUSHJ   PP,BYPAS2\r
+       JRST    GETDE3\r
+\r
+       DIVI    AC1,^D10\r
+       JRST    NUM62\r
+\r
+NUMUP: MOVEI   AC1,0\r
+       CAML    ARG,SX\r
+       JRST    0(SDEL)\r
+       CAMGE   ARG,V\r
+       MOVE    AC1,1(ARG)\r
+       AOJA    ARG,1(SDEL)\r
+\r
+NUMDN: MOVEI   AC1,0\r
+       CAMG    V,SX\r
+       JRST    0(SDEL)\r
+       CAMLE   V,ARG\r
+       MOVE    AC1,0(V)\r
+       SOJA    V,3(SDEL)\r
+\fSUBTTL        GETSYM\r
+GETSYM:        MOVEI   AC0,0           ;CLEAR AC0\r
+       MOVSI   AC1,(POINT 6,AC0)       ;PUT POINTER IN AC1\r
+       PUSHJ   PP,BYPASS       ;SKIP LEADING BLANKS\r
+       TLNN    CS,2            ;ALPHABETIC?\r
+       JRST    GETSY1          ;NO, ERROR\r
+       CAIE    C,16            ;PERIOD?\r
+       JRST    GETSY2          ;NO, A VALID SYMBOL\r
+       IDPB    C,AC1           ;STORE THE CHARACTER\r
+       PUSHJ   PP,GETCHR       ;YES, TEST NEXT CHARACTER\r
+       TLNN    CS,2            ;ALPHABETIC?\r
+GETSY1:        TROA    ER,ERRA\r
+GETSY2:        AOS     0(PP)           ;YES, SET SKIP EXIT\r
+GETSY3:        TLNN    CS,6            ;ALPHA-NUMERIC?\r
+       JRST    BYPAS2          ;NO, GET DELIMITER\r
+       TLNE    AC1,770000      ;YES, HAVE WE STORED SIX?\r
+       IDPB    C,AC1           ;NO, STORE IT\r
+       PUSHJ   PP,GETCHR\r
+       JRST    GETSY3\r
+\r
+\fSUBTTL        EXPRESSION EVALUATOR\r
+CV==   AC0                     ;CURRENT VALUE\r
+PV==   AC1                     ;PREVIOUS VALUE\r
+RC==   RC                      ;CURRENT RELOCATABILITY\r
+PR==   AC2                     ;PREVIOUS RELOCATABILITY\r
+CS=    CS                      ;CURRENT STATUS\r
+PS==   SDEL                    ;PREVIOUS STATUS\r
+\r
+EVALHA:        TLO     FR,TMPSW\r
+EVALCM:        PUSHJ   PP,EVALEX       ;EVALUATE FIRST EXPRESSION\r
+       PUSH    PP,[0]          ;MARK PDL\r
+       JUMPCM  EVALC3          ;JUMP IF COMMA\r
+       TLO     IO,IORPTC       ;IT'S NOT,SO REPEAT\r
+       JRST    OP              ;PROCESS IN OP\r
+EVALC3:\r
+       PUSH    PP,[0]          ;STORE ZERO'S ON PDL\r
+       PUSH    PP,[0]          ;.......\r
+       MOVSI   AC2,(POINT 4,(PP),12)\r
+       JRST    OP1B            ;PROCESS IN OP\r
+\r
+EVALEX:        TLO     IO,FLDSW\r
+       PUSH    PP,[XWD TNODE,0]        ;MARK THE LIST 200000,,0\r
+       TLZN    FR,TMPSW\r
+EVATOM:        PUSHJ   PP,ATOM         ;GET THE NEXT ATOM\r
+       JUMPE   AC0,EVGETD      ;TEST FOR NULL/ZERO\r
+       TLOE    IO,NUMSW        ;SET NUMERIC, WAS IT PREVIOUSLY?\r
+       JRST    EVGETD+1        ;YES, TREAT ACCORDINGLY\r
+       PUSHJ   PP,SEARCH       ;SEARCH FOR MACRO OR SYMBOL\r
+       JRST    EVOP            ;NOT FOUND, TRY FOR OP-CODE\r
+       JUMPL   ARG,.+2         ;SKIP IF OPERAND\r
+       PUSHJ   PP,SSRCH1       ;OPERATOR, TRY FOR SYMBOL (OPERAND)\r
+       PUSHJ   PP,QSRCH        ;PERFORM CROSS-REFERENCE\r
+       JUMPG   ARG,EVMAC       ;BRANCH IF OPERATOR\r
+       MOVE    AC0,V           ;SYMBOL, SET VALUE\r
+       JRST    EVTSTS          ;TEST STATUS\r
+\r
+EVMAC: TLNE    FR,NEGSW        ;UNARY MINUS?\r
+       JRST    EVERRZ          ;YES, INVALID BEFORE OPERATOR\r
+       LDB     SDEL,[POINT 3,ARG,5]    ;GET MACF/OPDF/SYNF\r
+       SOJL    SDEL,EVERRZ     ;ERROR IF NO FLAGS\r
+\r
+       JUMPE   C,.+2           ;NON-BLANK?\r
+       TLO     IO,IORPTC       ;YES, REPEAT CHARACTER\r
+       SOJE    SDEL,CALLM      ;MACRO IF 2\r
+       JUMPG   SDEL,EVOPS      ;SYNONYM IF 4\r
+\r
+       MOVE    AC0,V           ;OPDEF\r
+       MOVEI   V,OP            ;SET TRANSFER VECTOR\r
+       JRST    EVOPD\r
+\fEVOP: TLNE    FR,NEGSW        ;OPCODE, UNARY MINUS?\r
+       JRST    EVERRZ          ;YES, ERROR\r
+\r
+       PUSHJ   PP,OPTSCH       ;SEARCH SYMBOL TABLE\r
+       JRST    EVOPX           ;NOT FOUND\r
+EVOPS: TRZ     V,LITF          ;CLEAR LIT INVALID FLAG\r
+       TRZE    V,ADDF          ;SYNONYM\r
+       JRST    EVOPX           ;PSEUDO-OP THAT GENERATES NO DATA JUMPS\r
+       HLLZ    AC0,V\r
+EVOPD: JUMPE   C,.+2           ;OPDEF, NON-BLANK DELIMITER?\r
+       TLO     IO,IORPTC       ;YES, REPEAT CHARACTER\r
+       JSP     AC2,SVSTOW\r
+       PUSHJ   PP,0(V)\r
+       PUSHJ   PP,DSTOW\r
+       JSP     AC2,GTSTOW\r
+       TRNE    RC,-2\r
+       HRRM    RC,EXTPNT\r
+       TLNE RC,-2\r
+       HLLM RC,EXTPNT\r
+       JRST    EVNUM\r
+\r
+EVOPX: MOVSI   ARG,SYMF!UNDF\r
+       PUSHJ   PP,INSERZ\r
+EVERRZ:        SETZB   AC0,RC          ;CLEAR CODE AND RELOCATION\r
+EVERRU:        TRO     ER,ERRU\r
+       JRST    EVGETD\r
+\fEVTSTS:       TLNE    ARG,UNDF\r
+       JRST    [TRO    ER,ERRU ;SET UNDEF ERROR\r
+               JUMP1   EVGETD  ;TREAT AS UNDF ON PASS1\r
+               JRST    .+1]    ;TREAT AS EXTERNAL ON PASS2\r
+       TLNN    ARG,EXTF\r
+       JRST    EVTSTR\r
+       HRRZ RC,ARG     ;GET ADRES WFW\r
+       HRRZ ARG,EXTPNT ;SAVE IT WFW\r
+       HRRM RC,EXTPNT  ;WFW\r
+       TRNE ARG,-1     ;WFW\r
+       TRO     ER,ERRE\r
+       SETZB   AC0,ARG\r
+\r
+EVTSTR:        TLNE    ARG,MDFF        ;MULTIPLY DEFINED?\r
+       TRO     ER,ERRD         ;YES, FLAG IT\r
+       TLNE    FR,NEGSW        ;NEGATIVE ATOM?\r
+       PUSHJ   PP,GETDE2       ;YES, NEGATE AC0 AND RC\r
+\r
+EVGETD:        TLNE    IO,NUMSW        ;NON BLANK FIELD\r
+       TLO     FR,FSNSW        ;YES,SET FLAG\r
+       PUSHJ   PP,BYPAS2\r
+       TLNE    CS,6            ;ALPHA-NUMERIC?\r
+       TLO     IO,IORPTC       ;YES, REPEAT IT\r
+EVNUM: POP     PP,PS           ;POP THE PREVIOUS DELIMITER/TNODE\r
+       TLO     PS,4000\r
+       CAMGE   PS,CS           ;OPERATION REQUIRED?\r
+       JRST    EVPUSH          ;NO, PUT VALUES BACK ON STACK\r
+       TLNN    PS,TNODE        ;YES, HAVE WE REACHED TERMINAL NODE?\r
+       JRST    EVXCT           ;NO, EXECUTION REQUIRED\r
+       TLNN    CS,170000       ;YES, ARE WE POINTING AT DEL? (& ! * / + - _)\r
+       POPJ    PP,             ;YES, EXIT\r
+                               ;NO,FALL INTO EVPUSH\r
+\r
+\fEVPUSH:       PUSH    PP,PS           ;STACK VALUES\r
+       PUSH    PP,CV\r
+       PUSH    PP,RC\r
+       PUSH    PP,CS\r
+       JRST    EVATOM          ;GET NEXT ATOM\r
+\r
+EVXCT: POP     PP,PR           ;POP PREVIOUS RELOCATABILITY\r
+       POP     PP,PV           ;AND PREVIOUS VALUE\r
+       LDB     PS,[POINT 3,PS,29]      ;TYPE OF OPERATION TO PS\r
+       JRST    .+1(PS)         ;PERFORM PROPER OPERATION\r
+       JRST    ASSEM1          ;0; SHOULD NEVER GET HERE ;DMN\r
+       JRST    XMUL            ;1;\r
+       JRST    XDIV            ;2;\r
+       JRST    XADD            ;3;\r
+       JRST    XSUB            ;4;\r
+       JRST    XLRW            ;5; "_"\r
+       TDOA    CV,PV           ;6; MERGE PV INTO CV\r
+       AND     CV,PV           ;7; AND PV INTO CV\r
+       JUMPN   RC,.+2          ;COMMON RELOCATION TEST\r
+EVXCT1:        JUMPE   PR,EVNUM\r
+       TRO     ER,ERRR         ;BOTH MUST BE FIXED\r
+       JRST    EVNUM           ;GO TRY AGAIN\r
+\r
+XSUB:  SUBM    PV,CV\r
+       SUBM    PR,RC\r
+       JRST    EVNUM\r
+\r
+XADD:  ADDM    PV,CV\r
+       ADDM    PR,RC\r
+       JRST    EVNUM\r
+\r
+XDIV:  IDIV    PR,CV           ;CORRECT RELOCATABILITY\r
+       IDIVM   PV,CV\r
+XDIV1: EXCH    PR,RC           ;TAKE RELOCATION OF NUMERATOR\r
+       JRST    EVXCT1\r
+\r
+XMUL:  JUMPE   PR,XMUL1        ;AT LEAST ONE OPERAND\r
+       JUMPE   RC,XMUL1        ;MUST BE FIXED\r
+       TRO     ER,ERRR\r
+XMUL1: IORM    PR,RC           ;GET RELOCATION TO RC\r
+       CAMGE   PV,CV           ;FIND THE GREATER\r
+       EXCH    PV,CV           ;FIX IN CASE CV=0,OR 1\r
+       IMULM   PV,RC\r
+       IMULM   PV,CV\r
+       JRST    EVNUM\r
+XLRW:  EXCH    PV,CV\r
+       LSH     CV,0(PV)\r
+       LSH     PR,0(PV)\r
+       JRST    XDIV1\r
+\f      SUBTTL  LITERAL STORAGE HANDLER\r
+       \r
+STOLER:\r
+       SETZB   AC0,RC  ;ERROR, NO CODE STORED\r
+       PUSHJ   PP,STOW         ;STOW ZERO\r
+       TRO     ER,ERRL         ;AND FLAG THE ERROR\r
+\r
+STOLIT:        MOVE    SDEL,STPX\r
+       SUB     SDEL,STPY       ;COMPUTE NUMBER OF WORDS\r
+       JUMPE   SDEL,STOLER     ;ERROR IF NONE STORED\r
+       TRNN    ER,ERRORS       ;ANY ERRORS?\r
+       JRST    STOL06          ;NO\r
+       JUMP2   STOL22          ;YES, NO SEARCH.  BRANCH IF PASS2\r
+       ADDM    SDEL,LITCNT     ;PASS ONE, UPDATE COUNT\r
+       JRST    STOWI           ;INITIALIZE STOW\r
+\r
+STOL06:        MOVEI   SX,LITAB        ;PREPARE FOR SEARCH\r
+       MOVE    ARG,STPX        ;SAVE IN THE EVENT OF MULTIPLE-WORD\r
+       HRL     ARG,STPY\r
+       MOVE    AC2,LITNUM\r
+       MOVEI   SDEL,0\r
+STOL08:        PUSHJ   PP,DSTOW        ;GET VALUE WFW\r
+\r
+STOL10:        SOJL    AC2,STOL24      ;TEST FOR END\r
+       MOVE    SX,0(SX)        ;NO, GET NEXT STORAGE CELL\r
+       MOVE    V,-1(SX)                ;GET RELOCATION BITS WFW\r
+       CAMN    AC0,-2(SX)      ;DO CODES COMPARE? WFW\r
+       CAME    RC,V            ;YES, HOW ABOUT RELOCATION?\r
+       AOJA    SDEL,STOL10     ;NO, TRY AGAIN\r
+       SKIPGE  STPX            ;YES, MULTI-WORD?\r
+       JRST    STOL26          ;NO, JUST RETURN LOCATION\r
+       MOVEM   AC2,SAVBLK+AC2  ;YES, SAVE STARTING INFO\r
+       MOVEM   SX,SAVBLK+SX\r
+\r
+STOL12:        SOJL    AC2,STOL23      ;TEST FOR END\r
+       PUSHJ   PP,DSTOW        ;GET NEXT WORD WFW\r
+       MOVE    SX,0(SX)        ;UPDATE POINTER\r
+       MOVE    V,-1(SX)                ;GET RELOCATION WFW\r
+       CAMN    AC0,-2(SX)      ;COMPARE VALUE WFW\r
+       CAME    RC,V            ;AND RELOCATION\r
+       JRST    STOL14          ;NO MATCH, TRY AGAIN\r
+       SKIPL   STPX            ;MATCH, HAVE WE FINISHED SEARCH?\r
+       JRST    STOL12          ;NO, TRY NEXT WORD\r
+       JRST    STOL26          ;YES, RETURN LOCATION\r
+\r
+STOL14:        MOVE    AC2,SAVBLK+AC2  ;RESTORE STOW POINTERS\r
+       MOVE    SX,SAVBLK+SX\r
+       HRREM   ARG,STPX\r
+       HLREM   ARG,STPY\r
+       AOJA    SDEL,STOL08     ;BETTER LUCK NEXT TIME\r
+\f\r
+STOL22:        MOVE    SDEL,LITNUM\r
+STOL23:        PUSHJ   PP,DSTOW        ;DSTOW AND CONVERT\r
+STOL24:        MOVE    SX,LITABX       ;GET CURRENT STORAGE\r
+       PUSHJ   PP,GETTOP       ;GET NEXT CELL\r
+       MOVEM   AC0,-2(SX)      ;STORE CODE WFW\r
+       MOVEM   RC,-1(SX)       ;WFW\r
+       MOVEM   SX,LITABX       ;SET POINTER TO CURRENT CELL\r
+       AOS     LITNUM          ;INCREMENT NUMBER STORED\r
+       AOS     LITCNT          ;INCREMENT NUMBER RESERVED\r
+       SKIPL   STPX            ;ANY MORE CODE?\r
+       JRST    STOL23          ;YES\r
+STOL26:        JUMP1   POPOUT          ;EXIT IF PASS ONE\r
+       MOVE    SX,LITHDX       ;GET HEADER BLOCK\r
+       HLRZ    RC,-1(SX)       ;GET BLOCK RELOCATION\r
+       HRRZ    AC0,-1(SX)\r
+       ADDI    AC0,0(SDEL)     ;COMPUTE ACTUAL LOCATION\r
+       POPJ    PP,             ;EXIT\r
+\r
+\fSUBTTL        INPUT ROUTINES\r
+GETCHR:        PUSHJ   PP,CHARAC       ;GET ASCII CHARACTER\r
+       CAIL    C,"A"+40        ;CHECK FOR LOWER CASE\r
+       CAILE   C,"Z"+40\r
+       JRST    .+2             ;NOT LOWER CASE\r
+       TRZA    C,100           ;CONVERT LOWER CASE TO SIXBIT\r
+       SUBI    C,40            ;CONVERT TO SIXBIT\r
+       CAIG    C,77            ;CHAR GREATER THAN SIXBIT?\r
+       JUMPGE  C,GETCS         ;TEST FOR VALID SIXBIT\r
+       ADDI    C,40            ;BACK TO ASCII\r
+       CAIN    C,HT            ;CHECK FOR TAB\r
+       JRST    GETCS2          ;MAKE IT LOOK LIKE SPACE\r
+       CAIG    C,CR            ;GREATER THAN CR\r
+       CAIG    C,HT            ;GREATER THAN TAB\r
+       JRST    GETCS1          ;IS NOT FF,VT,LF OR CR\r
+       MOVEI   C,EOL           ;LINE OR FORM FEED OR V TAB\r
+       TLOA    IO,IORPTC       ;REPEAT CHARACTER\r
+GETCS2:        MOVEI   C,0             ;BUT TREAT AS BLANK\r
+GETCS: MOVE    CS,CSTAT(C)     ;GET STATUS BITS\r
+       POPJ    PP,             ;EXIT\r
+\r
+GETCS1:        JUMPE   C,GETCS         ;IGNORE NULS\r
+       TRC     C,100           ;MAKE CHAR. VISIBLE\r
+       MOVEI   CS,"^"\r
+       DPB     CS,LBUFP        ;PUT ^ IN OUTPUT\r
+       PUSHJ   PP,RSW2         ;ALSO MODIFIED CHAR.\r
+       TRO     ER,ERRQ         ;FLAG Q ERROR\r
+       JRST    GETCHR          ;BUT IGNORE CHAR.\r
+\f\r
+CHARAC:        TLZE    IO,IORPTC       ;REPEAT REQUESTED?\r
+       JRST    CHARAX          ;YES\r
+RSW0:  JUMPN   MRP,MREAD       ;BRANCH IF TREE POINTER SET\r
+       PUSHJ   PP,READ\r
+RSW1:  SKIPE   RPOLVL          ;ARE WE IN "REPEAT ONCE"?\r
+       JRST    REPO1           ;YES\r
+RSW2:  MOVE    CS,LIMBO        ;GET LAST CHAR.\r
+       MOVEM   C,LIMBO ;STORE THIS CHAR. FOR RPTC\r
+       CAIN    C,LF            ;LF?\r
+       CAIE    CS,CR           ;YES,LAST CHAR. A CR?\r
+       JRST    RSW3            ;NO\r
+       HRROS   LIMBO           ;YES,FLAG\r
+       POPJ    PP,             ;AND EXIT\r
+\r
+RSW3:  TLNE    IO,IOSALL       ;MACRO SUPPRESS ALL?\r
+       JUMPN   MRP,CPOPJ       ;YES,DON'T LIST IN MACRO\r
+       SOSG    CPL             ;ANY ROOM IN THE IMAGE BUFFER?\r
+       PUSHJ   PP,OUTPL        ;NO, OUTPUT THE PARTIAL LINE\r
+       IDPB    C,LBUFP         ;YES, STORE IN PRINT AREA\r
+       CAIE    C,HT            ;TAB?\r
+       POPJ    PP,             ;NO, EXIT\r
+       MOVEI   C,7\r
+       ANDCAM  C,CPL           ;MASK\r
+CHARAX:        HRRZ    C,LIMBO         ;GET LAST CHARACTER\r
+       POPJ    PP,             ;EXIT\r
+\r
+CHARL: PUSHJ   PP,CHARAC       ;GET AND TEST 7-BIT ASCII\r
+       CAIG    C,FF            ;LINE OR FORM FEED OR VT?\r
+       CAIGE   C,LF\r
+       POPJ    PP,             ;NO,EXIT\r
+       SKIPE   LITLVL          ;IN LITERAL?\r
+       JRST    OUTIML          ;YES\r
+CHARL1:        PUSHJ   PP,SAVEXS       ;SAVE REGISTERS\r
+       PUSHJ   PP,OUTLIN       ;DUMP THE LINE\r
+       JRST    RSTRXS          ;RESTORE REGISTERS AND EXIT\r
+\fSUBTTL        CHARACTER STATUS TABLE\r
+\r
+       DEFINE  GENCS   (OPLVL,ATOM,AN,SQUOZ,OPTYPE,SEQNO)\r
+<BYTE (6)OPLVL (9)ATOM (3)AN (6)SQUOZ,OPTYPE,SEQNO>\r
+\r
+       ;OPLVL  PRIORITY OF BINARY OPERATORS\r
+       ;ATOM   INDEX TO JUMP TABLE AT CELL1\r
+       ;AN     TYPE OF CHARACTER\r
+       ;       1=OTHER, 2=ALPHA, 4=NUMERIC\r
+       ;SQUOZ  VALUE IN RADIX 50\r
+       ;OPTYPE INDEX TO JUMP TABLE AT EVXCT\r
+       ;SEQNO  VALUE IN SIXBIT\r
+CSTAT:\r
+       GENCS   00,00,1,00,00,00        ; ' '\r
+       GENCS   04,12,1,00,06,01        ; '!'\r
+       GENCS   00,07,1,00,00,02        ; '"'\r
+       GENCS   00,12,1,00,00,03        ; '#'\r
+       GENCS   00,01,2,46,00,04        ; '$'\r
+       GENCS   00,01,2,47,00,05        ; '%'\r
+       GENCS   04,12,1,00,07,06        ; '&'\r
+       GENCS   00,07,1,00,00,07        ; '''\r
+\r
+       GENCS   00,01,1,00,00,10        ; '('\r
+       GENCS   00,01,1,00,00,11        ; ')'\r
+       GENCS   02,12,1,00,01,12        ; '*'\r
+       GENCS   01,00,1,00,03,13        ; '+'\r
+       GENCS   40,01,1,00,00,14        ; ','\r
+       GENCS   01,02,1,00,04,15        ; '-'\r
+       GENCS   00,11,2,45,00,16        ; '.'\r
+       GENCS   02,12,1,00,02,17        ; '/'\r
+\r
+       GENCS   00,04,4,01,00,20        ; '0'\r
+       GENCS   00,04,4,02,00,21        ; '1'\r
+       GENCS   00,04,4,03,00,22        ; '2'\r
+       GENCS   00,04,4,04,00,23        ; '3'\r
+       GENCS   00,04,4,05,00,24        ; '4'\r
+       GENCS   00,04,4,06,00,25        ; '5'\r
+       GENCS   00,04,4,07,00,26        ; '6'\r
+       GENCS   00,04,4,10,00,27        ; '7'\r
+\r
+       GENCS   00,04,4,11,00,30        ; '8'\r
+       GENCS   00,04,4,12,00,31        ; '9'\r
+       GENCS   00,12,1,00,00,32        ; ':'\r
+       GENCS   00,01,1,00,00,33        ; ';'\r
+       GENCS   00,05,1,00,00,34        ; '<'\r
+       GENCS   00,12,1,00,00,35        ; '='\r
+       GENCS   00,01,1,00,00,36        ; '>'\r
+       GENCS   00,12,1,00,00,37        ; '?'\r
+\f      GENCS   00,03,1,00,00,40        ; '@'\r
+       GENCS   00,01,2,13,00,41        ; 'A'\r
+       GENCS   00,01,2,14,00,42        ; 'B'\r
+       GENCS   00,01,2,15,00,43        ; 'C'\r
+       GENCS   00,01,2,16,00,44        ; 'D'\r
+       GENCS   00,01,2,17,00,45        ; 'E'\r
+       GENCS   00,01,2,20,00,46        ; 'F'\r
+       GENCS   00,01,2,21,00,47        ; 'G'\r
+\r
+       GENCS   00,01,2,22,00,50        ; 'H'\r
+       GENCS   00,01,2,23,00,51        ; 'I'\r
+       GENCS   00,01,2,24,00,52        ; 'J'\r
+       GENCS   00,01,2,25,00,53        ; 'K'\r
+       GENCS   00,01,2,26,00,54        ; 'L'\r
+       GENCS   00,01,2,27,00,55        ; 'M'\r
+       GENCS   00,01,2,30,00,56        ; 'N'\r
+       GENCS   00,01,2,31,00,57        ; 'O'\r
+\r
+       GENCS   00,01,2,32,00,60        ; 'P'\r
+       GENCS   00,01,2,33,00,61        ; 'Q'\r
+       GENCS   00,01,2,34,00,62        ; 'R'\r
+       GENCS   00,01,2,35,00,63        ; 'S'\r
+       GENCS   00,01,2,36,00,64        ; 'T'\r
+       GENCS   00,01,2,37,00,65        ; 'U'\r
+       GENCS   00,01,2,40,00,66        ; 'V'\r
+       GENCS   00,01,2,41,00,67        ; 'W'\r
+\r
+       GENCS   00,01,2,42,00,70        ; 'X'\r
+       GENCS   00,01,2,43,00,71        ; 'Y'\r
+       GENCS   00,01,2,44,00,72        ; 'Z'\r
+       GENCS   00,06,1,00,00,73        ; '['\r
+       GENCS   00,12,1,00,00,74        ; '\'\r
+       GENCS   00,01,1,00,00,75        ; ']'\r
+       GENCS   00,10,1,00,00,76        ; '^'\r
+       GENCS   10,12,1,00,05,77        ; '_'\r
+\fSUBTTL        LISTING ROUTINES\r
+\r
+OUTLIN:        TRNN    ER,ERRORS-ERRQ  ;ANY ERRORS?\r
+       TLNE    FR,ERRQSW       ;NO, IGNORE Q ERRORS?\r
+       TRZ     ER,ERRQ         ;YES, YES, ZERO THE Q ERROR\r
+       HRLZ    AC0,ER          ;PUT ERROR FLAGS IN AC0 LEFT\r
+       TDZ     ER,TYPERR\r
+       JUMP1   OUTL30          ;BRANCH IF PASS ONE\r
+       JUMPN   AC0,OUTL02      ;JUMP IF ANY ERRORS TO FORCE PRINTING\r
+       SKIPL   STPX            ;SKIP IF NO CODE, OTHERWISE\r
+       JRST    OUTL01          ;NO\r
+       TLNN    IO,IOSALL       ;YES,SUPPRESS ALL?\r
+       JRST    OUTL03          ;NO\r
+       JUMPN   MRP,CPOPJ       ;YES,EXIT IF IN MACRO\r
+       LDB     C,[XWD 350700,LBUF]\r
+       CAIE    C,15            ;FIRST CHAR CR?\r
+OUTL01:        TLZ     IO,IOMAC        ;FORCE MACRO PRINTING\r
+OUTL03:        TLNN    IO,IOMSTR!IOPROG!IOMAC\r
+OUTL02:        IOR     ER,OUTSW        ;FORCE IT.\r
+       IDPB    AC0,LBUFP       ;STORE ZERO TERMINATOR AFTER ASCII SRC LINE\r
+       TLNN    FR,CREFSW       ;CREF?\r
+       PUSHJ   PP,CLSCRF       ;YES, WRITE END OF CREF DATA (177,003)\r
+       JUMPE   AC0,OUTL20      ;BRANCH IF NO ERRORS\r
+       TLZE    AC0,ERRM        ;M ERROR?\r
+       TLO     AC0,ERRP        ;M ERROR SET - SET P ERROR.\r
+       PUSHJ   PP,OUTLER       ;PROCESS ERRORS\r
+\r
+OUTL20:        SKIPN   RC,ASGBLK\r
+       SKIPE   CS,LOCBLK       ;\r
+       SKIPL   STPX            ;ANY BINARY?\r
+       JRST    OUTL23          ;YES, JUMP\r
+       JUMPE   RC,OUTL22       ;SEQUENCE BREAK AND NO BINARY JUMPS\r
+       ILDB    C,TABP          ;ASSIGNMENT FALLS THROUGH\r
+       PUSHJ   PP,OUTL         ;OUTPUT A TAB.\r
+       ILDB    C,TABP          ;OUTPUT 2ND TAB, LOCATION FIELD\r
+       PUSHJ   PP,OUTC         ;NEXT IS BINARY LISTING FIELD\r
+       HLLO    CS,LOCBLK       ;LEFT HALF OF A 36BIT VALUE\r
+       JUMPL   RC,.+2          ;SKIP IF LEFT HALF IS NOT RELOC\r
+       TRZA    CS,1            ;IT IS, SET THE FLAG\r
+       TLNE    CS,-1           ;SKIP IF ITS A 18BIT VALUE, OTHERWISE\r
+       PUSHJ PP,ONC1           ;PRINT LH OF A 36 BIT VALUE IN CS\r
+       HRLO    CS,LOCBLK       ;PICK UP THE RIGHT HALF (18BIT VALUE)\r
+       TRZ     CS,0(RC)        ;\r
+       PUSHJ   PP,ONC          ;PRINT IT\r
+       JRST    OUTL23          ;SKIP SINGLE QUOTE TEST\r
+\fOUTL22:       PUSHJ   PP,ONC          ;TAB TO RH AND PRINT IT\r
+       MOVEI   C,"'"\r
+       SKIPE   MODA\r
+       PUSHJ   PP,OUTC\r
+OUTL23:        SKIPL   STPX            ;ANY BINARY?\r
+       PUSHJ   PP,BOUT         ;YES, DUMP IT\r
+       MOVE    CS,@OUTLI2      ;[POINT 7,LBUF]\r
+OUTL24:        ILDB    C,CS\r
+       JUMPE   C,OUTL25\r
+       CAIG    C," "\r
+       JRST    OUTL24\r
+       MOVE    CS,TABP\r
+       PUSHJ   PP,OUTASC       ;OUTPUT TABS\r
+OUTL25:        MOVEI   CS,LBUF\r
+       PUSHJ   PP,OUTAS0       ;DUMP THE LINE\r
+       TLNE    IO,IOSALL       ;SUPPRESSING ALL\r
+       JUMPN   MRP,OUTL27      ;YES,EXTRA CR IF IN MACRO\r
+OUTL26:        SKIPGE  STPX            ;ANY BINARY?\r
+       JRST    OUTLI           ;NO, CLEAN UP AND EXIT\r
+       PUSHJ   PP,OUTLI2       ;YES, INITIALIZE FOR NEXT LINE\r
+       PUSHJ   PP,BOUT         ;YES, DUMP IT\r
+OUTL27:        PUSHJ   PP,OUTCR        ;OUTPUT CARRIAGE RETURN\r
+       JRST    OUTL26          ;TEST FOR MORE BINARY\r
+\r
+OUTPL: SKIPN   LITLVL          ;IF IN LITERAL\r
+       SKIPL   STPX            ;OR CODE GENERATED\r
+       JRST    OUTIM           ;JUST OUTPUT THE IMAGE\r
+       SKIPN   ASGBLK          ;SKIP IF AN ASSIGNMENT\r
+       JRST    OUTIM           ;OTHERWISE OUTPUT IMAGE\r
+       PUSH    PP,C            ;SAVE CHAR.\r
+       MOVEI   C,CR\r
+       IDPB    C,LBUFP\r
+       MOVEI   C,LF\r
+       IDPB    C,LBUFP         ;FINISH WITH CRLF\r
+       PUSHJ   PP,OUTLIN       ;OUTPUT PARTIAL LINE\r
+       POP     PP,C            ;RESTORE CHAR.\r
+       JRST    OUTLI2          ;INITIALISE REST OF LINE\r
+\fOUTL30:       AOS     CS,STPX         ;PASS ONE\r
+       ADDM    CS,LOCO         ;INCREMENT OUTPUT LOCATION\r
+       PUSHJ   PP,STOWI        ;INITIALIZE STOW\r
+       TLZ     AC0,ERRORS-ERRM-ERRP-ERRV\r
+       JUMPN   AC0,OUTL32      ;JUMP IF ERRORS\r
+       TLNE    IO,IOSALL       ;SUPPRESSING ALL/\r
+       JUMPN   MRP,CPOPJ       ;YES,EXIT\r
+       JRST    OUTLI1          ;NO,INIT LINE\r
+\r
+OUTL32:        IDPB    AC0,LBUFP       ;ZERO TERNIMATOR\r
+       IOR     ER,OUTSW        ;LIST ERRORS\r
+       MOVEI   CS,TAG\r
+       PUSHJ   PP,OUTSIX       ;OUTPUT TAG\r
+       HRRZ    C,TAGINC\r
+       PUSHJ   PP,DNC          ;CONVERT INCREMENT TO DECIMAL\r
+       PUSHJ   PP,OUTTAB       ;OUTPUT TAB\r
+       PUSHJ   PP,OUTLER       ;OUTPUT ERROR FLAGS\r
+       PUSHJ   PP,OUTTAB\r
+       MOVEI   CS,SEQNO        ;ADDRESS OF SEQUENCE NO.\r
+       SKIPE   SEQNO           ;FILE NOT SEQUENCED\r
+       PUSHJ   PP,OUTAS0       ;OUTPUT IT\r
+       JRST    OUTL25          ;OUTPUT BASIC LINE\r
+\r
+OUTLER:        PUSH PP,ER      ;SAVE LISTING SWITCHES FOR LATER\r
+       TRNE ER,TTYSW   ;IF THIS IS ON, LISTING IS ON TTY\r
+       TRZ ER,ERRORS   ;SO SUPPRESS ON TTY\r
+       TDZ ER,OUTSW    ;BUT THIS SHOULD ONLY GO TO THE TTY\r
+       MOVE CS,INDIR   ;GET FILE NAME\r
+       CAME CS,LSTFIL  ;AND SEE IF SAME\r
+       JRST    [MOVEM CS,LSTFIL        ;SAVE AS LAST ONE\r
+               MOVEI CS,LSTFIL\r
+               PUSHJ PP,OUTSIX ;LIST NAME\r
+               MOVEI C," "\r
+               PUSHJ PP,OUTL\r
+               MOVE CS,PAGENO  ;PRINT PAGE NUMBER TOO\r
+               JRST OUTLE8]\r
+       MOVE CS,PAGENO  ;NOW CHECK PAGE NUMBER\r
+       CAME CS,LSTPGN\r
+OUTLE8:        JRST    [MOVEM CS,LSTPGN\r
+               MOVEI CS,[ASCIZ /PAGE /]\r
+               PUSHJ PP,OUTAS0\r
+               MOVE C,PAGENO\r
+               PUSHJ PP,DNC\r
+               PUSHJ PP,OUTCR  ;AND NOW FOR THE ERROR LINE\r
+               JRST .+1]\r
+       HLLM ER,(PP)    ;RESTORE ER BUT NOT IO (LEFT HALF OF AC)\r
+       POP PP,ER\r
+       MOVE    CS,[POINT 7,[ASCII / QXADLRUVNOPEM/]]\r
+OUTLE2:        ILDB    C,CS            ;GET ERROR MNEMONIC\r
+       JUMPGE  AC0,OUTLE4      ;BRANCH IF NOT FLAGGED\r
+       PUSHJ   PP,OUTL         ;OUTPUT THE CHARACTER\r
+       AOS     ERRCNT          ;INCREMENT ERROR COUNT\r
+OUTLE4:        LSH     AC0,1           ;SHIFT NEXT FLAG INTO SIGN BIT\r
+\f      JUMPN   AC0,OUTLE2      ;TEST FOR END\r
+       POPJ    PP,             ;EXIT\r
+\fOUTIM1:       TLOA    FR,IOSCR        ;SUPPRESS CRLF AFTER LINE\r
+OUTIM: TLZ     FR,IOSCR        ;DON'T FOR PARTIAL LINE\r
+       TLNE    IO,IOSALL       ;SUPPRESSING ALL?\r
+       JUMPN   MRP,CPOPJ       ;YES ,EXIT IF IN MACRO\r
+       JUMP1   OUTLI1          ;BYPASS IF PASS ONE\r
+       PUSH    PP,ER\r
+       TDZ     ER,TYPERR\r
+       TLNN    IO,IOMSTR!IOPROG!IOMAC\r
+       IOR     ER,OUTSW\r
+       PUSH    PP,C            ;OUTPUT IMAGE\r
+       TLNN    FR,CREFSW\r
+       PUSHJ   PP,CLSCRF\r
+OUTIM2:        MOVE    CS,TABP\r
+       PUSHJ   PP,OUTASC       ;OUTPUT TABS\r
+       IDPB    C,LBUFP         ;STORE ZERO TERMINATOR\r
+       MOVEI   CS,LBUF\r
+       PUSHJ   PP,OUTAS0       ;OUTPUT THE IMAGE\r
+       TLZN    FR,IOSCR        ;CRLF SUPPRESS?\r
+       PUSHJ   PP,OUTCR        ;NO,OUTPUT\r
+       POP     PP,C\r
+       HLLM    ER,0(PP)\r
+       POP     PP,ER\r
+       JRST    OUTLI2\r
+\r
+OUTLI: TLNE    IO,IOSALL       ;SUPPRESSING ALL\r
+       JUMPN   MRP,OUTLI3      ;YES,SET FLAG IN REPEATS ALSO\r
+       TLNE    IO,IOPALL       ;MACRO EXPANSION SUPRESS REQUESTED?\r
+       SKIPN   MACLVL          ;YES, ARE WE IN MACRO?\r
+       TLZA    IO,IOMAC        ;NO, CLEAR MAC FLAG\r
+OUTLI3:        TLO     IO,IOMAC        ;YES, SET FLAG\r
+\r
+OUTLI1:        TRZ     ER,ERRORS!LPTSW!TTYSW\r
+OUTLI2:        MOVE    CS,[POINT 7,LBUF]       ;INITIALIZE BUFFERS\r
+       MOVEM   CS,LBUFP\r
+       MOVE    CS,[POINT 7,TABI,6]\r
+       MOVEM   CS,TABP\r
+       MOVEI   CS,.CPL\r
+       MOVEM   CS,CPL\r
+       MOVSI   CS,(ASCII /     /)\r
+       SKIPE   SEQNO           ;HAVE WE SEQUENCE NUMBERS?\r
+       MOVEM   CS,SEQNO        ;YES, STORE TAB IN CASE OF MACRO\r
+       MOVEM   CS,SEQNO+1      ;STORE TAB AND TERMINATOR\r
+       SETZM   ASGBLK\r
+       SETZM   LOCBLK\r
+       POPJ    PP,\r
+\fOUTIML:       TLNE    IO,IOSALL       ;SUPPRESSING ALL?\r
+       JUMPN   MRP,CPOPJ       ;YES,EXIT IF IN MACRO\r
+       TRNN ER,ERRORS-ERRQ     ;FOR LITERALS (MULIT-LINE) OUTPUT ERRORS\r
+       TLNE FR,ERRQSW\r
+       TRZ ER,ERRQ\r
+       HRLZ CS,ER\r
+       JUMP1 OUTML1    ;CHECK PASS1 ERRORS\r
+       TDZ ER,TYPERR\r
+       JUMPE CS,OUTIM1\r
+       PUSH PP,[0]     ;ERRORS SHOULD BE ZEROED\r
+       PUSH PP,C\r
+       PUSH    PP,AC0  ;SAVE AC0 IN CASE CALLED FROM ASCII\r
+       MOVE    AC0,CS  ;ERROR ROUTINE WANTS FLAGS IN AC0\r
+       IOR ER,OUTSW\r
+       TLNN FR,CREFSW\r
+       PUSHJ PP,CLSCRF ;FIX CREF\r
+       TLZE AC0,ERRM\r
+       TLO AC0,ERRP\r
+       PUSHJ PP,OUTLER ;OUTPUT THEM\r
+       POP     PP,AC0\r
+       JRST OUTIM2     ;AND LINE\r
+       \r
+OUTML1:        TLZ CS,ERRORS-ERRM-ERRP-ERRV\r
+       JUMPE CS,OUTLI2 ;NONE\r
+       TRZ ER,ERRM!ERRP!ERRV\r
+       TRO ER,ERRL\r
+       PUSH PP,ER      ;SAVE\r
+       PUSH PP,C       ;SAVE THIS\r
+       PUSH    PP,AC0  ;AS ABOVE\r
+       MOVE    AC0,CS          ;...\r
+       TDZ ER,TYPERR\r
+       IOR ER,OUTSW\r
+       MOVEI CS,TAG\r
+       PUSHJ PP,OUTSIX\r
+       HRRZ C,TAGINC\r
+       PUSHJ PP,DNC\r
+       PUSHJ PP,OUTTAB\r
+       PUSHJ PP,OUTLER ;DO NOT FORGET ERRORS\r
+       PUSHJ PP,OUTTAB\r
+       MOVEI CS,LBUF   ;PRINT REST OF LINE\r
+       PUSHJ PP,SOUT20\r
+       POP     PP,AC0\r
+       POP PP,C\r
+       POP PP,ER\r
+       JRST OUTLI2\r
+\fSUBTTL        OUTPUT ROUTINES\r
+UOUT:  PUSHJ   PP,LOOKUP       ;SET FOR TABLE SCAN\r
+       TRNN ARG,PNTF   ;WFW\r
+       TRNN    ARG,UNDF\r
+       JRST    UOUT13          ;TEST FOR UNDF!EXTF!PNTF ON PASS2\r
+       JUMP2   UOUT10\r
+       TLNN    IO,IOIOPF       ;ANY IOP'S SEEN\r
+       JRST    UOUT12          ;NO,MAKE EXTERNAL\r
+       MOVSI   CS,PRMTBL-PRMEND;YES LOOKUP IN TABLE\r
+UOUT1: CAME    AC0,PRMTBL(CS)  ;HAVE WE A MATCH?\r
+       AOBJN   CS,UOUT2        ;NO,INCREMENT AND JUMP\r
+       MOVE    ARG,PRMTBL+1(CS);YES,GET VALUE\r
+       MOVEM   ARG,(SX)        ;UPDATE SYMBOL TABLE\r
+       POPJ    PP,             ;EXIT\r
+UOUT2: AOBJN   CS,UOUT1        ;TEST FOR END\r
+\r
+UOUT12:        PUSHJ   PP,EXTER2       ;MAKE IT EXTERNAL\r
+       MOVSI   ARG,UNDF        ;BUT PUT UNDF BACK ON\r
+       IORM    ARG,(SX)        ;SO MESSAGE WILL COME OUT\r
+       POPJ    PP,             ;GET NEXT SYMBOL\r
+\r
+UOUT13:        JUMP1   CPOPJ   ;RECYCLE ON PASS1\r
+       TRC ARG,UNDF!EXTF!PNTF  ;CHECK FOR ALL THREE ON\r
+       TRCE ARG,UNDF!EXTF!PNTF ;ARE THEY?\r
+       POPJ    PP,             ;NO, RECYCLE\r
+UOUT10:        PUSHJ PP,OUTCR\r
+       PUSHJ   PP,OUTSYM       ;OUTPUT THE SYMBOL\r
+       MOVEI   CS,[SIXBIT /UNASSIGNED, DEFINED AS IF EXTERNAL @/]\r
+       JRST    OUTSIX          ;POPJ FOR NEXT SYMBOL\r
+\r
+UOUT30:        PUSHJ   PP,ONC1         ;OUTPUT THE LOCATION\r
+       JRST    HIGHQ           ;EXIT THROUGH HIGHQ\r
+\f                              ;OUTPUT THE ENTRIES\r
+\r
+EOUT:  MOVEI   C,0             ;INITIALIZE THE COUNT\r
+       MOVE    SX,SYMBOL\r
+       MOVE    SDEL,0(SX)\r
+EOUT1: SOJL    SDEL,EOUT2      ;TEST FOR END\r
+       ADDI    SX,2\r
+       HLRZ    ARG,0(SX)\r
+       ANDCAI  ARG,SYMF!INTF!ENTF\r
+       JUMPN   ARG,EOUT1       ;IF INVALID, DON'T COUNT\r
+       AOJA    C,EOUT1         ;BUMP COUNT\r
+\r
+EOUT2: HRLI    C,4             ;BLOCK TYPE 4\r
+       PUSHJ   PP,OUTBIN\r
+       SETZB   C,ARG\r
+       PUSHJ   PP,OUTBIN\r
+       MOVE    SX,SYMBOL\r
+       MOVE    SDEL,0(SX)\r
+       MOVEI   V,^D18\r
+\r
+EOUT3: SOJL    SDEL,POPOUT\r
+       ADDI    SX,2\r
+       HLRZ    C,0(SX)\r
+       ANDCAI  C,SYMF!INTF!ENTF\r
+       JUMPN   C,EOUT3\r
+       SOJGE   V,EOUT4         ;TEST END OF BLOCK\r
+       PUSHJ   PP,OUTBIN\r
+       MOVEI   V,^D17  ;WFW\r
+EOUT4: MOVE    AC0,-1(SX)\r
+       PUSHJ   PP,SQOZE\r
+       MOVE    C,AC0\r
+       PUSHJ   PP,OUTBIN\r
+       JRST    EOUT3\r
+\f                              ;OUTPUT THE SYMBOLS\r
+\r
+SOUT:  SKIPN   IONSYM          ;SKIP IF NOSYM SEEN\r
+       TRNN    ER,LPTSW!TTYSW  ;A LISTING REQUIRED?\r
+       JRST    SOUT1           ;NO\r
+       MOVEI   [ASCIZ /SYMBOL TABLE/]\r
+       HRRM    SUBTTX          ;SET NEW SUB-TITLE\r
+       PUSHJ   PP,OUTFF        ;FORCE NEW PAGE\r
+       PUSHJ PP,LOUT1          ;OUTPUT THEM\r
+       JRST    SOUT1           ;NOW FOR BLOCK TYPE 2\r
+\r
+LOUT1: PUSHJ   PP,LLUKUP       ;SET FOR TABLE SCAN\r
+       TRNN    ARG,SYMF\r
+       TRNN    ARG,MACF!SYNF\r
+       TDZA    MRP,MRP         ;SKIP AND CLEAR MRP\r
+       POPJ    PP,             ;NO, TRY AGAIN\r
+       TRNE    ARG,INTF\r
+       MOVEI   MRP,1\r
+       TRNE    ARG,EXTF\r
+       MOVNI   MRP,1           ;MRP=-1 FOR EXTERNAL\r
+       TRNE    ARG,SYNF        ;SYNONYM?\r
+       JUMPL   MRP,POPOUT      ;YES, DON'T OUTPUT IF EXTERNAL\r
+       TRNE ARG,SUPRBT         ;IF SUPRESSED\r
+;      JUMPGE MRP,POPOUT       ;DO NOT OUTPUT UNLESS EXTERNAL\r
+       POPJ    PP,             ;DO NOT OUTPUT\r
+       AOS     (PP)            ;SET FOR SKIP RETURN IF SYMBOL IS PRINTED\r
+       JUMPGE  MRP,LOUT10      ;BRANCH IF NOT EXTERNAL\r
+       HLRZ    RC,V            ;PUT POINTER/FLAGS IN RC\r
+       TRNE    RC,-2           ;POINTER?\r
+       MOVS    RC,0(RC)        ;YES\r
+       HLL     V,RC            ;STORE LEFT VALUE\r
+\r
+LOUT10:        PUSH PP,RC      ;SAVE FOR LATER\r
+       PUSHJ   PP,OUTSYM       ;OUTPUT THE NAME\r
+       MOVE RC,(PP)    ;GET COPY\r
+       MOVEI   AC1,0\r
+       JUMPLE  MRP,LOUT15      ;SET DEFFERRED BITS IF EXTERNAL\r
+       TLNE    RC,-2           ;CHECK FOR LEFT FIXUP\r
+       IORI    AC1,40          ;AND SET BITS\r
+       TRNE    RC,-2           ;CHECK FOR RIGHT FIXUP\r
+       IORI    AC1,20          ;AND SET BITS\r
+LOUT15:        TLNE RC,-2      ;FIX RELOC AS 0 IF EXTERNAL\r
+       HRRZS RC\r
+       TRNE RC,-2\r
+       HLLZS RC\r
+       TLZE RC,-1\r
+       TRO RC,2\r
+       HRL MRP,RC\r
+       MOVEI RC,0\r
+       TRNE    ARG,ENTF        ;ENTRY DMN\r
+       HRRI    MRP,-5\r
+       TRNE ARG,NOOUTF         ;SUPRESS OUTPUT? WFW\r
+       ADDI MRP,3              ;YES WFW\r
+       TRNE    ARG,UNDF        ;UNDEFINED IS EXTERNAL\r
+       HRRI    MRP,2           ;SO FLAG AS UXT\r
+       IOR     AC1,SOUTC(MRP)\r
+       MOVE ARG,AC1\r
+       MOVEM AC0,SVSYM         ;SAVE IT\r
+       MOVE    AC0,V           ;GET THE VALUE\r
+       HLRZ    RC,MRP          ;AND THE RELOCATION\r
+       HLLO    CS,V\r
+       TRNE    RC,2            ;LEFT HALF RELOCATABLE?\r
+       TRZA    CS,1            ;NO, FLAG AND PRINT\r
+       TLNE    CS,-1           ;IS THE LEFT HALF ZERO?\r
+       PUSHJ   PP,ONC1         ;NO, OUTPUT IT\r
+LOUT11:        PUSHJ   PP,OUTTAB\r
+LOUT30:        HRLO    CS,V\r
+       TDZ     CS,RC           ;SET RELOCATION\r
+       PUSHJ   PP,ONC1\r
+       PUSHJ   PP,OUTTAB\r
+       POP PP,RC               ;GET BACK RELOC AND CHECK EXTERNAL\r
+LOUT60:        MOVEI   CS,SOUTC(MRP)\r
+       PUSHJ   PP,OUTAS0       ;EXT/INT\r
+LOUT64:        JRST    OUTCR           ;CARRIAGE RETURN AND TRY FOR ANOTHER\r
+\r
+\r
+\f      SYN IFBLK,SYMBLK        ;SOMEWHERE TO STORE THE POINTERS\r
+\r
+LLUKUP:        POP     PP,LOOKX        ;INTERCEPT RETURN POP\r
+       MOVE    SX,SYMBOL\r
+       MOVE    SDEL,(SX)\r
+       ADDI    SX,2            ;SKIP COUNT OF SYMBOLS\r
+LLUKP2:        MOVEM   SX,SYMBLK       ;STORE SYMBOL POINTER IN TABLE\r
+       HRRZ    SX,SYMBLK\r
+       JRST    LLUKP7          ;ENTER LOOP\r
+\r
+LLUKP1:        MOVEM   SX,SYMBLK       ;SAVE IT \r
+       MOVE    AC0,-1(SX)\r
+       PUSHJ   PP,SRCH7\r
+       HLRZS   ARG\r
+       PUSHJ   PP,@LOOKX\r
+       JRST    [MOVEM SX,SYMBLK\r
+               JRST    .+1]\r
+LLUKP7:        SOJL    SDEL,POPOUT     ;TEST FOR END\r
+LLUKP3:        MOVE    SX,SYMBLK       ;GET NEXT POINTER\r
+       AOBJP   SX,LLUKP4\r
+       HRRZ    V,SX\r
+       CAMG    V,SYMTOP\r
+       AOJA    SX,LLUKP1\r
+LLUKP6:        PUSHJ   PP,LOUT64       ;RESET SYMCNT\r
+       JUMPE   SDEL,POPOUT     ;EXIT IF ALL DONE\r
+       JRST    LLUKP3\r
+\r
+LLUKP4:        AOJ     SX,\r
+       MOVEM   SX,SYMBLK\r
+       JRST    LLUKP3\r
+\fSOUT1:        PUSHJ   PP,LOOKUP       ;SET FOR TABLE SCAN\r
+       TRNN    ARG,SYMF\r
+       TRNN    ARG,MACF!SYNF\r
+       TDZA    MRP,MRP         ;SKIP AND CLEAR MRP\r
+       POPJ    PP,             ;NO, TRY AGAIN\r
+       TRNE    ARG,INTF\r
+       MOVEI   MRP,1\r
+       TRNE    ARG,EXTF\r
+       MOVNI   MRP,1           ;MRP=-1 FOR EXTERNAL\r
+       TRNE    ARG,SYNF        ;SYNONYM?\r
+       JUMPL   MRP,POPOUT      ;YES, DON'T OUTPUT IF EXTERNAL\r
+       TRNE ARG,SUPRBT         ;IF SUPRESSED\r
+;      JUMPGE MRP,POPOUT       ;DO NOT OUTPUT UNLESS EXTERNAL\r
+       POPJ    PP,             ;DO NOT OUTPUT\r
+       JUMPGE  MRP,SOUT10      ;BRANCH IF NOT EXTERNAL\r
+       HLRZ    RC,V            ;PUT POINTER/FLAGS IN RC\r
+       TRNE    RC,-2           ;POINTER?\r
+       MOVS    RC,0(RC)        ;YES\r
+       HLL     V,RC            ;STORE LEFT VALUE\r
+\r
+SOUT10:        PUSH PP,RC      ;SAVE FOR LATER\r
+       MOVEI   AC1,0\r
+       JUMPLE  MRP,SOUT15      ;SET DEFFERRED BITS IF EXTERNAL\r
+       TLNE    RC,-2           ;CHECK FOR LEFT FIXUP\r
+       IORI    AC1,40          ;AND SET BITS\r
+       TRNE    RC,-2           ;CHECK FOR RIGHT FIXUP\r
+       IORI    AC1,20          ;AND SET BITS\r
+SOUT15:        TLNE RC,-2      ;FIX RELOC AS 0 IF EXTERNAL\r
+       HRRZS RC\r
+       TRNE RC,-2\r
+       HLLZS RC\r
+       TLZE RC,-1\r
+       TRO RC,2\r
+       HRL MRP,RC\r
+       MOVEI RC,0\r
+       TRNE    ARG,ENTF        ;ENTRY DMN\r
+       HRRI    MRP,-5\r
+       TRNE ARG,NOOUTF         ;SUPRESS OUTPUT? WFW\r
+       ADDI MRP,3              ;YES WFW\r
+       IOR     AC1,SOUTC(MRP)\r
+       MOVE ARG,AC1\r
+       PUSHJ   PP,NOUT2        ;SQUOZE AND DUMP THE SYMBOL\r
+       MOVEM AC0,SVSYM         ;SAVE IT\r
+       MOVE    AC0,V           ;GET THE VALUE\r
+       HLRZ    RC,MRP          ;AND THE RELOCATION\r
+       PUSHJ   PP,COUT\r
+       POP PP,RC               ;GET BACK RELOC AND CHECK EXTERNAL\r
+       TRNN RC,-2              ;IS IT?\r
+       JRST SOUT50             ;NO\r
+       MOVE AC0,1(RC)          ;GET NAME\r
+       MOVEI ARG,60            ;EXTERNAL REQ\r
+       PUSHJ PP,SQOZE\r
+       HLLZS RC        ;NO RELOC\r
+       PUSHJ PP,COUT   ;OUTPUT IT\r
+       MOVE AC0,SVSYM  ;GET SYMBOL NAME\r
+       TLO AC0,500000  ;SET AS ADDITIVE SYMBOL\r
+       TLZ AC0,200000  ;BUT NOT LEFT HALF ETC\r
+       PUSHJ PP,COUT\r
+SOUT50:        MOVSS RC        ;CHECK LEFT HALF\r
+       TRNN RC,-2\r
+       JRST SOUT60\r
+       MOVE AC0,1(RC)\r
+       MOVEI ARG,60\r
+       PUSHJ PP,SQOZE\r
+       MOVEI RC,0\r
+       PUSHJ PP,COUT\r
+       MOVE AC0,SVSYM\r
+       TLO AC0,700000\r
+       PUSHJ PP,COUT\r
+SOUT60:        POPJ    PP,\r
+\r
+SOUT20:        PUSHJ PP,OUTAS0\r
+       JRST OUTCR\r
+\r
+       <ASCII /ENT/>!04        ;DMN\r
+       Z\r
+       Z\r
+       <ASCII /SEN/>!44        ;SUPRESSED ENTRY\r
+       <ASCII /EXT/>!60\r
+SOUTC: EXP     10\r
+       <ASCII /INT/>!04\r
+       <ASCII /UXT/>!60        ;UNDEFINED EXTERNAL\r
+       <ASCII /SPD/>!50\r
+       <ASCII /SIN/>!44        ;DMN\r
+\f                              ;OUTPUT THE BINARY\r
+\r
+BOUT:  HRLO    CS,LOCO         ;PICKUP THE LOCATION\r
+       PUSHJ   PP,ONC          ;OUTPUT IT TO THE LISTING FILE\r
+       MOVEI   C,"'"\r
+       SKIPE   MODO            ;IF MODE IS NOT ABSOLUTE\r
+       PUSHJ   PP,OUTC         ;PRINT A SINGLE QUOTE\r
+       PUSHJ   PP,DSTOW        ;GET THE CODE\r
+       PUSH PP,RC      ;SAVE RELOC\r
+       PUSH    PP,RC   ;AND AGAIN\r
+       TLNE RC,-2      ;CHECK LEFT EXTERNAL\r
+       HRRZS RC        ;MAKE LEFT NON-RELOC\r
+       TRNN RC,-2      ;RIGHT EXT?\r
+       JRST BOUT30     ;NO\r
+       HRRZ AC1,AC0    ;YES\r
+       JUMPE AC1,BOUT20        ;PROCESS IF ZERO CODE THERE\r
+       HLLZS RC        ;MAKE NON-RELOC\r
+       JRST BOUT30     ;PROCESS\r
+\r
+\fBOUT20:\r
+       HRRM AC1,-1(PP) ;FIX RC IN STACK SO NO CONFUSION WFW (AC1 HAS 0)\r
+       HRR     AC0,0(RC)       ;NO, SET ADDRESS LINK\r
+       MOVE    AC1,LOCO        ;GET CURRENT LOCATION\r
+       HRRM    AC1,0(RC)       ;SET NEW LINK\r
+       HLRZ    AC1,0(RC)       ;GET FLAGS/POINTER\r
+       TRNN    AC1,-2          ;POINTER?\r
+       HRR     AC1,RC          ;NO, SET TO FLAGS\r
+       HLR     RC,0(AC1)       ;PUT FLAGS IN RC\r
+       HRL     AC1,MODO        ;GET CURRENT MODE\r
+       TRZE    RC,-2           ;LEFT HALF RELOCATABLE+\r
+       TLO     AC1,2           ;YES, SET FLAG\r
+       HLLM    AC1,0(AC1)      ;STORE NEW FLAGS\r
+BOUT30:        HLLO    CS,AC0\r
+       TLZE    RC,1            ;PACK RELOCATION BITS\r
+       TRO     RC,2\r
+       TRNE    RC,2            ;LEFT HALF RELOCATABLE?\r
+       TRZ     CS,1            ;YES, RESET BIT\r
+       PUSH    PP,AC0          ;NEED AN AC\r
+       HLRZ    AC0,-1(PP)      ;AC0 = LEFT RELOCATION\r
+       CAILE   AC0,1           ;EXTERNAL?\r
+       XORI    CS,EXTF!1       ;YES, SET SWITCH\r
+\f      POP     PP,AC0          ;RESTORE\r
+       PUSHJ   PP,ONC\r
+       HRLO    CS,AC0\r
+       TDZ     CS,RC           ;SET RELOCATION\r
+       HRRZ    C,(PP)          ;C = RIGHT RELOCATION\r
+       CAILE   C,1             ;EXTERNAL\r
+       XORI    CS,EXTF!1       ;YES, SET SWITCH\r
+       PUSHJ   PP,ONC\r
+BOUT3I:        POP     PP,CS           ;GET RID OF ENTRY ON STACK\r
+       HRRZ    CS,LOCO\r
+       TLNE    FR,RIMSW!RIM1SW!R1BSW   ;RIM OUTPUT?\r
+       JRST    ROUT            ;YES, GO PROCESS\r
+\r
+       HRL     CS,MODO\r
+       CAME    CS,MODLOC       ;SEQUENCE OR RELOCATION BREAK?\r
+       PUSHJ   PP,COUTD        ;YES, DUMP THE BUFFER\r
+       SKIPL   COUTX           ;NEW BUFFER?\r
+       JRST    BOUT40          ;NO, STORE CODE AND EXIT\r
+       MOVEM   CS,MODLOC       ;YES, STORE NEW VALUES\r
+       EXCH    AC0,LOCO\r
+       EXCH    RC,MODO\r
+       PUSHJ   PP,COUT         ;STORE BLOCK LOCATION AND MODE\r
+       EXCH    RC,MODO         ;RESTORE CURRENT VALUES\r
+       EXCH    AC0,LOCO\r
+\r
+\fBOUT40:       PUSHJ PP,COUT   ;EMIT CODE\r
+       POP PP,RC       ;RETRIEVE EXTERNAL BITS\r
+       TRNN RC,-2      ;RIGHT EXTERNAL?\r
+       JRST BOUT50     ;TRY FOR LEFT\r
+       PUSHJ PP,COUTD\r
+       PUSH PP,BLKTYP  ;TERMINATE TYPE AND SAVE\r
+       MOVEI AC0,2     ;BLOCK TYPE 2\r
+       MOVEM AC0,BLKTYP\r
+       MOVE AC0,1(RC)  ;GET SYMBOL\r
+       MOVEI ARG,60    ;CODE BITS\r
+       PUSHJ PP,SQOZE  ;CONVERT TO RADIX 50\r
+       HLLZS RC        ;SYMBOL HAS NO RELOCATION\r
+       PUSHJ PP,COUT   ;EMIT\r
+       MOVE AC0,LOCO   ;GET CURRENT LOC\r
+       HRLI AC0,400000 ;ADDITIVE REQ\r
+       HRR RC,MODO     ;CURRENT MODE\r
+       PUSHJ PP,COUT   ;EMIT\r
+       MOVSS RC        ;NOW FOR LEFT\r
+       TRNN RC,-2\r
+       JRST BOUT60\r
+       JRST BOUT70\r
+BOUT50:        MOVSS RC        ;CHECK OTHER HALF\r
+       TRNN RC,-2              ;LEFT HALF EXTERNAL?\r
+       JRST BOUT80     ;NO, FALSE ALARM\r
+       PUSHJ PP,COUTD  ;CHANGE MODE\r
+       PUSH PP,BLKTYP\r
+       MOVEI AC0,2\r
+       MOVEM AC0,BLKTYP\r
+BOUT70:        MOVE AC0,1(RC)\r
+       MOVEI ARG,60\r
+       PUSHJ PP,SQOZE\r
+       HLLZS RC\r
+       PUSHJ PP,COUT\r
+       MOVE AC0,LOCO\r
+       HRLI AC0,600000 ;LEFT HALF ADD\r
+       HRR RC,MODO\r
+       PUSHJ PP,COUT   ;EMIT\r
+BOUT60:        PUSHJ PP,COUTD  ;CHANGE MODE\r
+       POP PP,BLKTYP   ;TO OLD ONE\r
+BOUT80:        AOS LOCO\r
+       AOS MODLOC\r
+       POPJ PP,\r
+\r
+\fNOUT: MOVE    V,[POINT 7,TBUF]        ;POINTER TO ASCII LINE\r
+       MOVSI   CS,(POINT 6,AC0)        ;POINTER TO SIXBIT AC0\r
+       SETZB   ARG,AC0\r
+NOUT1: ILDB    C,V             ;GET ASCII\r
+       CAIL C,"A"+40\r
+       CAILE C,"Z"+40\r
+       JRST    .+2\r
+       TRZA    C,100           ;LOWER CASE TO SIXBIT\r
+       SUBI    C,40            ;CONVERT TO SIXBIT\r
+       JUMPLE  C,NOUT3         ;TEST FORM NON-SIXBIT\r
+       CAILE   C,77            ;AND NOT GREATER THAN SIXBIT\r
+       JRST    NOUT3           ;...\r
+       IDPB    C,CS            ;DEPOSIT IN AC0\r
+       TLNE    CS,770000       ;TEST FOR SIX CHARACTERS\r
+       JRST    NOUT1           ;NO, GET ANOTHER\r
+NOUT3:\r
+IFN UNIVR,<SKIPGE      UNIVSN          ;IF A UNIVERSAL PROG>\r
+       POPJ    PP,             ;RETURN TO PUT IT IN THE TABLE\r
+\r
+IFN CCLSW,<    TLNN IO,IOTLSN  ;AND IF WE HAVE NOT SEEN A TITLE\r
+       PUSHJ PP,PRNAM  ;THEN PRINT THE NAME>\r
+NOUT2: PUSHJ   PP,SQOZE        ;CONVERT TO SIXBIT\r
+       JRST    COUT            ;DUMP AND EXIT\r
+\r
+HOUT:\r
+       MOVEI   RC,1            ;RELOCATABLE\r
+IFN RENTSW,<\r
+       MOVE    AC0,HHIGH       ;GET HIGH SEG IF TWO SEGMENTS\r
+       JUMPE   AC0,.+2         ;NOT TWO SEGMENTS\r
+       PUSHJ   PP,COUT         ;OUTPUT IT >\r
+       MOVE    AC0,HIGH\r
+IFN RENTSW,<\r
+       SKIPE   HHIGH           ;ANY TWOSEG HIGH STUFF\r
+       JRST    COUT            ;YES,SO NO ABS.>\r
+       PUSHJ   PP,COUT         ;OUTPUT THE HIGHEST LOCATION\r
+       MOVE AC0,ABSHI\r
+                               ;PUT OUT ABS PORTION OF PROGRAM BREAK\r
+       SOJA    RC,COUT         ;OUTPUT A WORD OF ZERO AND EXIT\r
+\r
+\fIFN RENTSW,<\r
+HSOUT: SETZM   HISNSW          ;CLEAR FOR PASS2\r
+       MOVE    AC0,SVTYP3      ;GET HISEG ARG\r
+       JUMPGE  AC0,.+4         ;JUMP IF ONLY HISEG\r
+       HRL     AC0,HIGH1       ;GET BREAK FROM PASS 1\r
+       JUMPL   AC0,.+2         ;OK IF GREATER THAN 400000\r
+       HRLS    AC0             ;SIGNAL TWO SEGMENT TO LOADER\r
+       MOVEI   RC,1            ;ASSUME RELOCATABLE\r
+       JRST    COUT            ;OUTPUT THE WORD>\r
+\r
+VOUT:  SKIPN   RC,VECREL       ;IS VECTOR ABSOLUTE ZERO?\r
+       SKIPE   VECTOR          ;ALSO CHECK RELOCATION\r
+       JRST    .+2\r
+       POPJ    PP,             ;YES, EXIT\r
+       MOVE    AC0,VECTOR      ;AC0 SHOULD BE FLAGS\r
+\r
+COUT:  AOS     C,COUTX         ;INCREMENT INDEX\r
+       MOVEM   AC0,COUTDB(C)   ;STORE CODE\r
+       IDPB    RC,COUTP        ;STORE RELOCATION BITS\r
+       CAIE    C,^D17          ;IS THE BUFFER FULL?\r
+       POPJ    PP,             ;NO, EXIT\r
+\r
+COUTD: AOSG    C,COUTX         ;DUMP THE BUFFER\r
+       JRST    COUTI           ;BUFFER WAS EMPTY\r
+       HRL     C,BLKTYP        ;SET BLOCK TYPE\r
+       PUSHJ   PP,OUTBIN       ;OUTPUT COUNT AND TYPE\r
+       SETOB   C,COUTY         ;INITIALIZE INDEX\r
+\r
+COUTD2:        MOVE    C,COUTDB(C)     ;GET RELOCATION BITS/CODE\r
+       PUSHJ   PP,OUTBIN       ;DUMP IT\r
+       AOS     C,COUTY         ;INCREMENT INDEX\r
+       CAMGE   C,COUTX         ;TEST FOR END\r
+       JRST    COUTD2          ;NO, GET NEXT WORD\r
+\r
+COUTI: SETOM   COUTX           ;INITIALIZE BUFFER INDEX\r
+       SETZM   COUTRB          ;ZERO RELOCATION BITS\r
+       MOVE    C,[POINT 2,COUTRB]\r
+       MOVEM   C,COUTP         ;INITIALIZE BIT POINTER\r
+       POPJ    PP,             ;EXIT\r
+\fSTOWZ1:\r
+STOWZ: MOVEI   RC,0\r
+STOW:\r
+       JUMP1   STOW20          ;SKIP TEST IF PASS ONE\r
+       TRNE    RC,-2           ;RIGHT HALF ZERO OR 1?\r
+       PUSHJ   PP,STOWT        ;NO, HANDLE EXTERNAL\r
+       TLNN    RC,-2           ;LEFT HALF ZERO OR 1? WFW\r
+       JRST    STOW10          ;YES, SKIP TEST\r
+       MOVSS   RC              ;SWAP HALVES\r
+       PUSHJ   PP,STOWT1       ;HANDLE EXTERNAL WFW\r
+       MOVSS   RC              ;RESTORE VALUES\r
+\r
+STOW10:        SKIPE   EXTPNT          ;ANY EXTERNALS REMAINING?\r
+       TRO     ER,ERRE         ;YES, SET EXTERNAL ERROR FLAG\r
+\r
+STOW20:        AOS     AC1,STPX        ;INCREMENT POINTER\r
+       MOVEM   AC0,STCODE(AC1) ;STOW CODE\r
+       MOVEM   RC,STOWRC(AC1)  ;STOW RELOCATION BITS\r
+       SKIPN   LITLVL          ;ARE WE IN LITERAL?\r
+       AOS     LOCA            ;NO, INCREMENT ASSEMBLY LOCATION\r
+       CAIGE   AC1,.STP-1      ;OVERFLOW?\r
+       POPJ    PP,             ;NO, EXIT\r
+\r
+       SKIPE   LITLVL          ;ARE WE IN A LITERAL?\r
+       TROA    ER,ERRL         ;YES, FLAG ERROR BUT DON'T DUMP\r
+       JRST    CHARL1          ;NO, SAVE REGISTERS AND DUMP THE BUFFER\r
+       JRST    STOWI           ;INITIALIZE BUFFER\r
+\r
+DSTOW: AOS     AC1,STPY        ;INCREMENT POINTER\r
+       MOVE    AC0,STCODE(AC1) ;FETCH CODE\r
+       MOVE    RC,STOWRC(AC1)  ;FETCH RELOCATION BITS\r
+       CAMGE   AC1,STPX        ;IS THIS THE END?\r
+       POPJ    PP,             ;NO, EXIT\r
+\r
+STOWI: SETOM   STPX            ;INITIALIZE FOR INPUT\r
+       SETOM   STPY            ;INITIALIZE FOR OUTPUT\r
+       SETZM   EXTPNT\r
+       POPJ    PP,             ;EXIT\r
+\fSVSTOW:       AOS     LITLVL          ;NESTED LITERALS\r
+       PUSH    PP,STPX         ;MAKE ROOM FOR ANOTHER\r
+       PUSH    PP,STPY\r
+       MOVE    AC1,STPX\r
+       MOVEM   AC1,STPY\r
+       JRST    0(AC2)\r
+\r
+GTSTOW:        POP     PP,STPY         ;BACK UP A LEVEL\r
+       POP     PP,STPX\r
+       SOS     LITLVL\r
+       JRST    0(AC2)\r
+\r
+       ;EXTERNAL RIGHT\r
+STOWT: HRRZ    AC1,EXTPNT      ;GET RIGHT POINTER\r
+       CAIE    AC1,(RC)        ;DOES IT MATCH \r
+       PUSHJ   PP,QEXT         ;EXTERNAL OR RELOCATION ERROR\r
+       HLLZS   EXTPNT\r
+       POPJ    PP,             ;EXIT\r
+\r
+       ;EXTERNAL LEFT\r
+STOWT1:        HLRZ    AC1,EXTPNT      ;GET LEFT HALF\r
+       CAIE    AC1,(RC)        ;SEE ABOVE\r
+       PUSHJ   PP,QEXT\r
+       HRRZS   EXTPNT\r
+       POPJ    PP,             ;EXIT\r
+\fONC:  ILDB    C,TABP          ;ENTRY TO ADVANCE TAB POINTER\r
+       PUSHJ   PP,OUTL         ;OUTPUT A TAB\r
+                               ;OUTPUT 6 OCT NUMBERS FROM CS LEFT\r
+ONC1:  MOVEI   C,6             ;CONVERT TO ASCII\r
+       LSHC    C,3             ;SHIFT IN OCTAL\r
+       PUSHJ   PP,OUTL         ;OUTPUT ASCII FROM C\r
+       TRNE    CS,-1           ;ARE WE THROUGH?\r
+       JRST    ONC1            ;NO, GET ANOTHER\r
+       MOVEI   C,0             ;CLEAR C\r
+       TLNN    CS,1            ;RELOCATABLE?\r
+       MOVEI   C,"'"           ;YES\r
+       TLNN    CS,EXTF         ;OR EXTERNAL\r
+       MOVEI   C,"*"           ;YES\r
+ONC2:  JUMPN   C,OUTC          ;OUTPUT IF EXTERN OR RELOCATABLE\r
+       POPJ    PP,             ;EXIT\r
+\r
+DNC:   IDIVI   C,^D10\r
+       HRLM    CS,0(PP)\r
+       JUMPE   C,.+2\r
+       PUSHJ   PP,DNC          ;RECURSE IF NON-ZERO\r
+       HLRZ    C,0(PP)\r
+       ADDI    C,"0"           ;FORM ASCII\r
+       JRST    PRINT           ;DUMP AND TEST FOR END\r
+\r
+OUTAS0:        HRLI    CS,(POINT 7,,)  ;ENTRY TO SET POINTER\r
+OUTASC:        ILDB    C,CS            ;GET NEXT BYTE\r
+       JUMPE   C,POPOUT        ;EXIT ON ZERO DELIMITER\r
+       PUSHJ   PP,PRINT\r
+       JRST    OUTASC\r
+\r
+OUTSIX:        HRLI    CS,(POINT 6,,)  ;OUTPUT SIXBIT\r
+       ILDB    C,CS            ;GET SIXBIT\r
+       CAIN    C,40            ;"@" DELIMITER?\r
+       POPJ    PP,             ;YES, EXIT\r
+       ADDI    C,40            ;NO, FORM ASCII\r
+       PUSHJ   PP,OUTL         ;OUTPUT ASCII CHAR FROM C\r
+       JRST    OUTSIX+1\r
+\r
+OUTSYM:        MOVE    CS,AC0          ;PLACE NAME IN CS\r
+OUTSY1:        MOVEI   C,0             ;CLEAR C\r
+       LSHC    C,6             ;MOVE NEXT SIXBIT CHARACTER IN\r
+       JUMPE   C,OUTTAB        ;TEST FOR END\r
+       ADDI    C,40            ;CONVERT TO ASCII\r
+       PUSHJ   PP,OUTL         ;OUTPUT\r
+       JRST    OUTSY1          ;LOOP\r
+\fOUTSET:       AOS     SX,0(PP)        ;GET RETURN LOCATION\r
+       MOVE    SX,-1(SX)       ;GET XWD CODE\r
+       HLRM    SX,BLKTYP       ;SET BLOCK TYPE\r
+       SETZB   ARG,RC\r
+       PUSHJ   PP,0(SX)        ;GO TO PRESCRIBED ROUTINE\r
+       JRST    COUTD           ;TERMINATE BLOCK AND EXIT\r
+\r
+       ;LOOKUP SCANS ALL THE SYMBOLS IN THE SYMBOL TABLE\r
+\r
+LOOKUP:        POP     PP,LOOKX        ;INTERCEPT RETURN POP\r
+       MOVE    SX,SYMBOL\r
+       MOVE    SDEL,0(SX)      ;SET FOR TABLE SCAN\r
+LOOKL: SOJL    SDEL,POPOUT     ;TEST FOR END\r
+       ADDI    SX,2\r
+       MOVE    AC0,-1(SX)\r
+       PUSHJ   PP,SRCH7        ;LOAD REGISTERS\r
+       HLRZS   ARG\r
+       PUSHJ   PP,@LOOKX       ;RETURN TO CALLING ROUTINE\r
+       JRST    LOOKL           ;TRY AGAIN\r
+\fEND0: PUSHJ   PP,EVALCM       ;GET A WORD\r
+       SKIPE   EXTPNT          ;ANY EXTERNALS?\r
+       TRO     ER,ERRE         ;YES, ERROR\r
+       SKIPN   V,AC0           ;NON-ZERO?\r
+       JUMPE   RC,.+2          ;OR RELOC?\r
+       PUSHJ   PP,ASSIG7       ;YES, LIST THE VALUE\r
+       MOVEM   AC0,VECTOR\r
+       MOVEM   RC,VECREL\r
+       PUSHJ   PP,VARA         ;FILL OUT SELF-DEFINED VARIABLES\r
+       PUSHJ   PP,STOUTS       ;DUMP THE LINE\r
+       PUSH    PP,IO           ;SAVE FLAGS\r
+       TLO     IO,IOPROG       ;XLIST LITS\r
+       PUSHJ   PP,LIT1\r
+       POP     PP,IO           ;GET FLAG BACK\r
+       JUMP2   ENDP2\r
+\r
+       PUSHJ   PP,UOUT\r
+       TLNN    IO,MFLSW        ;SKIP IF ONLY PSEND\r
+       PUSHJ   PP,REC2\r
+       MOVE    INDIR           ;SET UP FIRST AS LAST\r
+       MOVEM   LSTFIL          ;PRINTED\r
+       SETZM   LSTPGN\r
+       PUSHJ   PP,INZ\r
+       TLNE    IO,MFLSW        ;IF PSEND\r
+       POPJ    PP,             ;BACK TO PSEND0\r
+       SKIPE   PRGPTR          ;HAVE ANY PRGEND'S BEEN SEEN\r
+       JRST    PSEND3          ;YES,GO SET UP AGAIN\r
+\r
+PASS20:        SETZM   CTLSAV\r
+       PUSHJ   PP,COUTI\r
+       PUSHJ   PP,EOUT         ;OUTPUT THE ENTRIES\r
+       PUSHJ   PP,OUTSET\r
+       XWD     6,NOUT          ;OUTPUT THE NAME (BLKTYP-6)\r
+IFN RENTSW,<\r
+       SKIPN   HISNSW          ;PUT OUT BLOCK TYPE 3?\r
+       JRST    PASS21          ;NO\r
+       PUSHJ   PP,OUTSET\r
+       XWD     3,HSOUT         ;OUTPUT THE HISEG BLOCK\r
+PASS21:        >\r
+       MOVEI   1\r
+       HRRM    BLKTYP          ;SET FOR TYPE 1 BLOCK\r
+       TLZ     FR,P1           ;SET FOR PASS 2 AND TURN OFF FLAG\r
+       TLO     IO,IOPALL       ;PUT THESE BACK\r
+       TLZ     IO,IOPROG!IOCREF!DEFCRS ;SO LISTINGS WILL BE THE WAY THEY SHOULD\r
+       TLNN    FR,R1BSW\r
+       JRST    STOWI\r
+       \r
+       MOVE CS,[XWD $ST-1-$CKSM,R1BLDR]\r
+       MOVE C,0(CS)\r
+       PUSHJ PP,PTPBIN\r
+       AOBJN CS,.-2\r
+       PUSHJ   PP,R1BI\r
+       JRST    STOWI\r
+\f      \r
+R1BLDR:\r
+       PHASE 0\r
+       IOWD $ADR,$ST\r
+$ST:   CONO PTR,60\r
+       HRRI $A,$RD+1\r
+$RD:   CONSO PTR,10\r
+       JRST .-1\r
+       DATAI PTR,@$TBL1-$RD+1($A)\r
+       XCT $TBL1-$RD+1($A)\r
+       XCT $TBL2-$RD+1($A)\r
+$A:    SOJA $A,\r
+$TBL1: CAME $CKSM,$ADR\r
+       ADD $CKSM,1($ADR)\r
+       SKIPL $CKSM,$ADR\r
+$TBL2: JRST 4,$ST\r
+       AOBJN $ADR,$RD\r
+$ADR:  JRST $ST+1\r
+$CKSM: \r
+       DEPHASE\r
+\r
+IF2,<  PURGE $ST,$RD,$A,$TBL1,$TBL2,$ADR,$CKSM>\r
+\fENDP2:        PUSHJ   PP,COUTD        ;DUMP THE BUFFER\r
+       MOVE    AC0,LOCO        ;CHECK TO SEE IF LIT DIFFERED\r
+       SKIPN   MODO            ;AND USE SMALLER SINCE AT END\r
+       JRST    [CAMN   AC0,ABSHI\r
+               HRRZM   AC2,ABSHI\r
+               JRST    ENDP2W]\r
+IFN RENTSW,<SKIPE HHIGH                ;SKIP IF NOT TWO SEGMENTS\r
+       JRST    [CAMN   AC0,HHIGH\r
+               HRRZM   AC2,HHIGH\r
+               JRST    ENDP2W]>\r
+       CAMN    AC0,HIGH\r
+       HRRZM   AC2,HIGH\r
+ENDP2W:\r
+REPEAT 1,<TLNE IO,IOCREF       ;CLOSE CREF IF NECESSARY>\r
+REPEAT 0,<TLNE FR,CREFSW       ;IF CREFFING\r
+       JRST ENDP2Q\r
+       MOVEI SDEL,0\r
+       PUSH PP,DBUF+3  ;SO NO PAGE INFO\r
+       DPB SDEL,[POINT 7,DBUF+3,13]\r
+       IOR ER,OUTSW    ;MAKE SURE OF OUTPUT\r
+       PUSHJ PP,CREF\r
+       MOVEI C,20      ;CODE FOR TITLE\r
+       PUSHJ PP,OUTLST\r
+       PUSH PP,IO      ;SAVE THIS\r
+       TLZ IO,IOPAGE   ;AND PREVENT PAGE DURING TITLE\r
+       MOVEI CS,TBUF\r
+       PUSHJ PP,OUTAS0\r
+       MOVEI CS,VBUF\r
+       PUSHJ PP,OUTAS0\r
+       POP PP,IO       ;RESTORE THE IO WORD\r
+       POP PP,DBUF+3   >       ;NEEDS FIX TO CREF\r
+       PUSHJ   PP,CLSCR2       ;CLOSE IT UP\r
+ENDP2Q:        HRR     ER,OUTSW        ;SET OUTPUT SWITCH\r
+       SKIPN   TYPERR\r
+       TRO     ER,TTYSW\r
+       PUSHJ   PP,UOUT         ;OUTPUT UNDEFINEDS\r
+       TRO     ER,TTYSW\r
+       SKPINC  C       ;SEE IF WE CAN INPUT A CHAR.\r
+         JFCL          ;BUT ONLY TO DEFEAT ^O\r
+       SKIPG C,ERRCNT  ;GET ERROR COUNT AND CHECK FOR POSITIVE\r
+       JRST NOERW      ;PRINT NO ERROR MESSAGE\r
+IFN CCLSW,<ADDM C,JOBERR       ;REMEMBER ERROR COUNT FOR EXECUTION DELETION>\r
+       PUSHJ PP,OUTCR\r
+       MOVE C,ERRCNT\r
+       CAIN C,1        ;1 IS A SPECIAL CASE\r
+       JRST ONERW      ;PRINT MESSAGE\r
+       MOVEI   C,"?"           ;? FOR BATCH\r
+       PUSHJ   PP,OUTL         ;...\r
+       MOVE C,ERRCNT   ;PRINT NUMBER OF ERRORS\r
+       PUSHJ PP,DNC\r
+       SKIPA CS,[EXP ERRMS1]   ;LOAD TO PRINT\r
+ONERW: MOVEI CS,ERRMS2 ;ONE ERROR DETECTED\r
+ONERW1:        PUSHJ PP,OUTSIX ;PRINT\r
+       JRST ENDP2A\r
+NOERW: MOVEI CS,ERRMS3\r
+IFN CCLSW,<TLNE IO,CRPGSW!MFLSW        ;IF RPG, DON'T PRINT MESSAGE>\r
+IFE CCLSW,<TLNE        IO,MFLSW        ;NOR IF MULTI-FILE MODE>\r
+       TRZ     ER,TTYSW                ;NO TTY OUTPUT\r
+       IOR     ER,OUTSW        ;UNLESS NEEDED FOR LISTING\r
+       PUSHJ PP,OUTCR\r
+       JRST ONERW1\r
+\r
+\fENDP2A:       PUSHJ PP,OUTCR\r
+       TLNN    IO,MFLSW        ;IN A MULTI-PROG FILE?\r
+       JRST    ENDP2D          ;NO\r
+       SKIPE   ERRCNT          ;ANY ERROR?\r
+       PUSHJ   PP,[MOVEI CS,[ASCIZ /PROGRAM    /]\r
+               PUSHJ PP,OUTAS0 ;YES,SO PRINT MESSAGE\r
+               MOVEI   CS,TBUF ;AND TITLE\r
+               PUSHJ PP,OUTAS0 ;FOR IDENTIFICATION\r
+               JRST    OUTCR]  ;AND A CR-LF\r
+       TRZA    ER,TTYSW        ;NO MORE OUTPUT NOW\r
+ENDP2D:\r
+IFN CCLSW,<TLNE IO,CRPGSW      ;IF RPG, DON'T PRINT PGM BREAK\r
+       TRZ     ER,TTYSW        ;...>\r
+IFE CCLSW,<    SKIPA           ;SO PRGEND CODE CAN WORK>\r
+       IOR     ER,OUTSW        ;...\r
+       PUSHJ   PP,OUTCR\r
+IFN RENTSW,<\r
+       MOVEI   CS,[SIXBIT /HI-SEG. BREAK IS @/]\r
+       SKIPN   HHIGH           ;DON'T PRINT IF ZERO\r
+       JRST    ENDP2C          ;IT WAS\r
+       PUSHJ   PP,OUTSIX\r
+       HRLO    CS,HHIGH        ;GET THE BREAK\r
+       PUSHJ   PP,ONC1\r
+       PUSHJ   PP,OUTCR\r
+ENDP2C:>\r
+       MOVEI   CS,[SIXBIT /PROGRAM BREAK IS @/]\r
+       PUSHJ   PP,OUTSIX       ;OUTPUT PROGRAM BREAK\r
+       HRRZ    CS,ABSHI        ;GET ABS. BREAK\r
+       CAIG    CS,140          ;ANY ABS. CODE\r
+       JRST    [HRLO CS,HIGH   ;NO\r
+               JRST    ENDP2B] ;SO DON'T PRINT\r
+       HRLO    CS,HIGH         ;GET PROGRAM BREAK\r
+       PUSHJ   PP,ONC1\r
+       PUSHJ   PP,OUTCR\r
+       MOVEI   CS,[SIXBIT /ABSLUTE BREAK IS @/]\r
+       PUSHJ   PP,OUTSIX\r
+       HRLO    CS,ABSHI\r
+ENDP2B:        PUSHJ   PP,ONC1\r
+       PUSHJ PP,OUTCR\r
+       TLNE    FR,RIMSW!R1BSW  ;RIM MODE?\r
+       PUSHJ   PP,RIMFIN       ;YES, FINISH IT\r
+IFN CCLSW,<TLNN        IO,CRPGSW!MFLSW ;IF NOT IN CCL MODE>\r
+IFE CCLSW,<TLNN        IO,MFLSW        ;NOR IF IN MULTI-FILE MODE>\r
+       TRO     ER,TTYSW        ;PRINT SIZE\r
+       PUSHJ   PP,OUTCR\r
+       MOVE    C,JOBREL\r
+       LSH     C,-^D10\r
+       ADDI    C,1\r
+       PUSHJ   PP,DNC\r
+       MOVEI   CS,[SIXBIT /K CORE USED@/]\r
+       PUSHJ   PP,OUTSIX\r
+       PUSHJ   PP,OUTCR        \r
+       HRR     ER,OUTSW\r
+       PUSHJ   PP,OUTSET\r
+       XWD     2,SOUT          ;OUTPUT THE SYMBOLS (BLKTYP-2)\r
+       PUSHJ   PP,OUTSET\r
+       XWD     7,VOUT          ;OUTPUT TRANSFER VECTOR (..-7)\r
+       PUSHJ   PP,OUTSET\r
+       XWD     5,HOUT          ;OUTPUT HIGHEST RELOCATABLE (..-5)\r
+       PUSHJ   PP,COUTD\r
+       TLNN    IO,MFLSW        ;IS IT PRGEND?\r
+       JRST    FINIS           ;ALAS, FINISHED\r
+       MOVEI   CS,SBUF         ;RESET SBUF POINTER\r
+       HRRM    CS,SUBTTX       ;TO SUBTTL\r
+       SETZM   PASS2I          ;CLEAR PASS2 VARIABLES\r
+       MOVE    [XWD PASS2I,PASS2I+1]\r
+       BLT     PASS2Z-1        ;BUT NOT ALL OF VARIABLES\r
+       JRST    INZ             ;RE-INITIALIZE FOR NEXT PROG\r
+\f\r
+\r
+RIMFIN:        TLNE FR,R1BSW\r
+       PUSHJ PP,R1BDMP\r
+       SKIPN   C,VECTOR\r
+       MOVSI   C,(JRST 4,)\r
+       TLNN    C,777000\r
+       TLO     C,(JRST)\r
+       PUSHJ   PP,PTPBIN\r
+       MOVEI   C,0\r
+       JRST    PTPBIN\r
+\fSUBTTL        PASS INITIALIZE\r
+INZ:   AOS     MODA\r
+       AOS     MODO\r
+       SETZM   SEQNO\r
+       SETZM   TAG\r
+       HRRI    RX,^D8\r
+       MOVEI   VARHD\r
+       MOVEM   VARHDX\r
+       MOVEI   LITHD\r
+       MOVEM   LITHDX\r
+       PUSHJ   PP,LITI\r
+       PUSHJ   PP,STOWI\r
+       JRST    OUTLI\r
+\r
+RCPNTR:        POINT   1,ARG,^L<RELF>-18       ;POINT 1,ARG,22\r
+\fSUBTTL        PSEUDO-OP HANDLERS\r
+\r
+TAPE0: PUSHJ   PP,STOUTS       ;FINISH THIS LINE\r
+       JRST    GOTEND          ;AND IGNORE THE REST OF THIS FILE\r
+\r
+RADIX0:        PUSHJ   PP,EVAL10       ;EVALUATE RADIX D10\r
+       CAIG    AC0,^D10        ;IF GREATER THAN 10\r
+       CAIG    AC0,1           ;OR LESS THAN 2,\r
+ERRAX: TROA    ER,ERRA         ;FLAG ERROR AND SKIP\r
+       HRR     RX,AC0          ;SET NEW RADIX\r
+       POPJ    PP,\r
+\r
+\r
+XALL0: TLZ     IO,IOSALL       ;TURN OFF MACRO SUPPRESS ALL\r
+IOSET: JUMP1   POPOUT          ;NOSYM (IONSYM), XALL (IOPALL), XLIST (IOPROG)\r
+       HLRZ    SX,AC0          ;STORE FLAGS\r
+       PUSHJ   PP,STOUTS       ;POLISH OFF LINE\r
+       TLO     IO,0(SX)        ;NOW SUPRESS PRINTING\r
+       POPJ    PP,\r
+\r
+IORSET:        TDZ     IO,AC0          ;RESET  FLAG IOPALL/IOPROG\r
+       TLNE    AC0,IONCRF      ;RESTORING CREFFING?\r
+       TLZ     IO,DEFCRS       ;YES, CLEAR ANY WAITING DEFINING OCCURENCES\r
+       POPJ    PP,\r
+\r
+BLOCK0:        PUSHJ   PP,HIGHQ\r
+       PUSHJ   PP,EVALEX       ;EVALUATE\r
+       TRZE    RC,-1           ;EXTERNAL OR RELOCATABLE?\r
+       PUSHJ   PP,QEXT         ;YES, DETERMINE TYPE\r
+       ADDM    AC0,LOCO        ;UPDATE ASSEMBLY LOCATION\r
+BLOCK1:        EXCH    AC0,LOCA        ;SAVE START OF BLOCK\r
+       ADDM    AC0,LOCA        ;UPDATE OUTPUT LOCATION\r
+BLOCK2:        HRLOM   AC0,LOCBLK\r
+       JUMP2   POPOUT\r
+       TRNE    ER,ERRU\r
+       TRO     ER,ERRV\r
+       POPJ    PP,\r
+\f\r
+PRNTX0:        TRO     ER,TTYSW        ;SET OUTPUT TO TTY\r
+       JUMP2   PRNTX2          ;PASS1?\r
+       TDOA    ER,OUTSW        ;YES,OUTPUT TO LSTDEV ALSO\r
+PRNTX2:        ANDCM   ER,OUTSW        ;NO,DON'T OUTPUT TO TTY IF IT IS LSTDEV\r
+       PUSHJ   PP,BYPASS       ;GET FIRST CHAR.\r
+       TLOA    IO,IORPTC       ;REPEAT IT AND SKIP\r
+PRNTX4:        PUSHJ   PP,PRINT        ;PRINT THE CHAR.\r
+       PUSHJ   PP,CHARAC       ;GET ASCII CHAR.\r
+       CAIG    C,CR            ;IF GREATER THAN CR\r
+       CAIG    C,HT            ;OR LESS THAN LF\r
+       JRST    PRNTX4          ;THEN CONTINUE\r
+       PUSHJ   PP,OUTCR        ;OUTPUT A CRLF\r
+       TRZA    ER,TTYSW!LPTSW  ;TURN OF OUTPUT\r
+CPOPJ1:        AOS     (PP)            ;USEFUL TAG HAS TO GO SOMEWHERE\r
+CPOPJ: POPJ    PP,             ;EXIT\r
+\r
+REMAR0:        PUSHJ   PP,GETCHR       ;GET A CHARACTER\r
+       CAIE    C,EOL\r
+       JRST    REMAR0\r
+       POPJ    PP,             ;EXIT\r
+\fLIT0: PUSHJ   PP,BLOCK1\r
+       PUSHJ   PP,STOUTS\r
+LIT1:  JUMP2   LIT20\r
+\r
+;ON PASS ONE, WE JUST STEP THE LOCATION COUNTER AND CLEAR\r
+\r
+       MOVE    AC0,LITCNT\r
+       MOVE    SX,LITHDX\r
+       HRLM    AC0,0(SX)\r
+       MOVE    V,LOCA\r
+       HRL     V,MODA\r
+       MOVEM   V,-1(SX)\r
+       JRST    LIT24\r
+\r
+LIT20: PUSH    PP,LOCA\r
+       PUSH    PP,LOCO\r
+       SKIPN   LITNUM\r
+       JRST    LIT20A\r
+       MOVE    SX,LITHDX\r
+       HRRZ    AC0,-1(SX)\r
+       CAME    AC0,LOCA\r
+       TRO     ER,ERRP\r
+LIT20A:        MOVE    SX,LITAB\r
+LIT21: SOSGE   LITNUM\r
+       JRST    LIT22\r
+       MOVE    AC0,-2(SX)      ;WFW\r
+       MOVE    RC,-1(SX)       ;WFW\r
+       MOVE SX,(SX)    ;WFW POINTER TO THE NEXT LIT\r
+       PUSHJ   PP,STOW20       ;STOW CODE\r
+       MOVEI   C,12            ;SET LINE FEED\r
+       IDPB    C,LBUFP\r
+       PUSHJ   PP,OUTLIN       ;OUTPUT THE LINE\r
+       JRST    LIT21\r
+\fLIT22:        HRRZ    AC2,LOCO\r
+       POP     PP,LOCO\r
+       POP     PP,LOCA\r
+       MOVE    SX,LITHDX\r
+       HLRZ    AC0,0(SX)\r
+       SUB AC2,LOCO    ;COMPUTE LENGTH USED\r
+       CAMGE AC0,AC2   ;USE LARGER\r
+       MOVE AC0,AC2\r
+       ADD AC2,LOCO\r
+LIT24: ADDM    AC0,LOCA\r
+       ADDM    AC0,LOCO\r
+       PUSHJ   PP,GETTOP\r
+       HRRM    SX,LITHDX\r
+LITI:  SETZM   LITCNT\r
+       SETZM   LITNUM\r
+       MOVEI   LITAB\r
+       MOVEM   LITABX\r
+       JRST    HIGHQ\r
+\r
+GETTOP:        HRRZ    AC1,SX          ;VARHD\r
+       HRRZ    SX,0(SX)\r
+       JUMPN   SX,POPOUT\r
+       MOVEI   SX,3    ;WFW\r
+       ADDB    SX,FREE\r
+       CAML    SX,SYMBOL\r
+       PUSHJ   PP,XCEED\r
+       SUBI    SX,1            ;MAKE SX POINT TO LINK\r
+       SETZM   0(SX)           ;CLEAR FORWARD LINK\r
+       HRRM    SX,0(AC1)       ;STORE ADDRESS IN LAST LINK\r
+       POPJ    PP,\r
+\fVAR0: PUSHJ   PP,BLOCK1       ;PRINT LOCATION\r
+       PUSHJ PP,VARA\r
+       JRST STOUTS\r
+\r
+VARA:  MOVE    SX,VARHDX\r
+       MOVE AC0,LOCA   ;GET LOCATION FOR CHECK\r
+       JUMP1 VARB      ;DO NOT CHECK START ON PASS 1\r
+       CAME AC0,-1(SX) ;CHECK START OF VAR AREA\r
+       TRO ER,ERRP     ;AND GIVE ERROR\r
+VARB:  MOVEM AC0,-1(SX)        ;SAVE START FOR PASS 2\r
+       HLRZ    AC0,0(SX)\r
+       ADDM    AC0,LOCA\r
+       ADDM    AC0,LOCO\r
+       PUSHJ   PP,GETTOP\r
+       HRRM    SX,VARHDX\r
+       JUMP2   POPOUT\r
+\r
+       PUSHJ   PP,LOOKUP       ;SET FOR TABLE SCAN\r
+       TRZN    ARG,VARF\r
+       POPJ    PP,             ;NO, EXIT\r
+       TRZ ARG,UNDF            ;TURN OFF FLAG NOW\r
+       MOVSI AC0,1             ;ADD 1\r
+       ADDM    AC0,0(AC1)      ;UPDATE COUNT\r
+\r
+       IOR     ARG,MODA        ;SET TO ASSEMBLY MODE\r
+       HRL     ARG,LOCA\r
+       MOVSM   ARG,0(SX)       ;UPDATE 2ND WRD OF SYM TAB ENTRY\r
+       AOS     LOCA\r
+       AOS     LOCO\r
+       JRST    HIGHQ1\r
+\fIF:   PUSH    PP,AC0          ;SAVE AC0\r
+       PUSH    PP,IO\r
+       PUSHJ   PP,EVALXQ       ;EVALUATE AND TEST EXTERNAL\r
+       POP     PP,AC1\r
+       JUMPL   AC1,IFPOP\r
+       TLZ     IO,FLDSW\r
+IFPOP: POP     PP,AC1          ;RETRIEVE SKIP INSTRUCTION\r
+IFSET: TLO IO,IORPTC           ;REPEAT CHARACTER\r
+IFXCT: XCT     AC1             ;EXECUTE INSTRUCTION\r
+       TDZA    AC0,AC0         ;FALSE\r
+       MOVEI   AC0,1           ;TRUE\r
+IFEXIT:        JUMPOC REPEA1           ;BRANCH IF IN OP-CODE FIELD\r
+IFEX1: PUSHJ PP,GETCHR         ;SEARCH FOR "<"\r
+       CAIN C,EOL              ;ERROR IF END OF LINE\r
+       JRST ERRAX\r
+       CAIE C,34\r
+       JRST IFEX1\r
+       JUMPE AC0,IFEX2         ;TEST FOR 0\r
+       TLO IO,IORPTC           ;NO, PROCESS AS CELL\r
+       PUSHJ PP,CELL\r
+       SETZM   INCND           ;NOT ANY MORE\r
+       JRST STOW               ;STOW CODE AND EXIT\r
+\r
+IFPASS:        HRRI    AC0,P1          ;MAKE IT TLNX IO,P1\r
+       MOVE    AC1,AC0         ;PLACE IT IN AC1\r
+       JRST    IFSET           ;EXECUTE INSTRUCTION\r
+\r
+IFB0:  HLLO    AC1,AC0         ;FORM AND STORE TEST INSTRUCTION\r
+IFB1:  PUSHJ   PP,CHARL        ;GET FIRST NON-BLANK\r
+       CAIE    C," "\r
+       CAIN    C,"     "\r
+       JRST    IFB1            ;SKIP BLANKS AND TABS\r
+       CAIG    C,CR            ;CHECK FOR CARRET AS DELIM.\r
+       CAIGE   C,LF\r
+       SKIPA   SX,SEQNO2\r
+       JRST    ERRAX\r
+       MOVEM   SX,CNDSEQ\r
+       MOVE    SX,PAGENO\r
+       MOVEM   SX,CNDPG\r
+       SETOM   INCND           ;SAVE INFO. FOR PASS 1 ERRORS\r
+       CAIN    C,"<"           ;LEFT BRACKET?\r
+       SETZB   C,RC            ;YES, PREPARE FOR OLD FORMAT\r
+       SKIPA   SX,C            ;SAVE FOR COMPARISON\r
+IFB3:  TRO     AC0,1           ;SET FLAG\r
+IFB2:  PUSHJ   PP,CHARL        ;GET ASCII CHARACTER AND LIST\r
+       CAMN    C,SX            ;TEST FOR DELIMITER\r
+       JRST    IFXCT           ;FOUND\r
+       CAIE    C," "           ;BLANK?\r
+       CAIN    C,"     "       ;OR TAB?\r
+       JRST    IFB2            ;YES\r
+       JUMPN   SX,IFB3         ;JUMP IF NEW FORMAT\r
+       CAIN    C,"<"           ;<?\r
+       AOJA    RC,IFB2         ;YES, INCREMENT COUNT\r
+       CAIN    C,">"           ;>?\r
+       SOJL    RC,IFXCT        ;YES, DECREMENT AND EXIT IF DONE\r
+       JRST    IFB3            ;GET NEXT CHARACTER\r
+\r
+\fIFDEF0:       HRRI    AC0,UNDF        ;MAKE IT TLNX ARG,UNDF\r
+       PUSH    PP,AC0          ;STACK IT\r
+       PUSHJ   PP,GETSYM       ;TAKES SKIP RETURN IF SYM NAME IS LEGAL\r
+       TROA    ER,ERRA         ;ILLEGAL!\r
+       PUSHJ   PP,SEARCH\r
+       JRST    [PUSHJ  PP,OPTSCH\r
+               TLO     ARG,UNDF\r
+               JRST    .+1]\r
+       PUSHJ PP,SSRCH3         ;EMIT TO CREF ANYWAY\r
+       JRST    IFPOP           ;POP AND EXECUTE INSTRUCTION\r
+\r
+\fIFIDN0:       HLRZS   AC0\r
+       MOVEI   V,2*.IFBLK-1\r
+       SETZM   IFBLK(V)        ;CLEAR COMPARISON BLOCK\r
+       SOJGE   V,.-1\r
+       SETZM   .TEMP           ;CLEAR STORED DELIMETER\r
+       MOVEI   RC,IFBLK        ;SET FOR FIRST BLOCK\r
+       PUSHJ   PP,IFCL         ;GET FIRST STRING\r
+       MOVEI   RC,IFBLKA\r
+       PUSHJ   PP,IFCL         ;GET SECOND STRING\r
+       MOVEI   V,.IFBLK-1\r
+       MOVE    SX,IFBLK(V)     ;GET WORD FROM FIRST STRING\r
+       CAMN    SX,IFBLKA(V)    ;COMPARE WITH SECOND STRING\r
+       SOJGE   V,.-2           ;EQUAL, TRY NEXT WORD\r
+       JUMPL   V,IFEXIT        ;DID WE FINISH STRING\r
+       XORI    AC0,1           ;NO, TOGGLE REQUEST\r
+       JRST    IFEXIT  ;DO NOT TURN ON IORPTC WFW\r
+\r
+IFCL:  PUSHJ   PP,CHARAC       ;GET AND LIST CHARACTER\r
+       CAIE    C," "           ;SKIP SPACES\r
+       CAIG    C,CR            ;ALSO SKIP CR-LF\r
+       CAIGE   C,HT            ;AND TAB\r
+       JRST    .+2             ;NOT ONE OF THEM\r
+       JRST    IFCL            ;SO LONG COMPARISONS WILL WORK\r
+;*** A CROCK SO THAT IFIDN <X>,<X>,<INST.> WILL WORK   ***\r
+       CAIE    C,","           ;IS IT A COMMA?\r
+       JRST    .+3             ;NO\r
+       SKIPN   .TEMP           ;YES, WAS PREVIOUS FIELD OLD METHOD?\r
+       JRST    IFCL            ;YES, IGNORE COMMA AND SPACES\r
+;      ***\r
+       CAIN    C,"<"           ;WAS IT LEFT BRACKET?\r
+       SETO    C,              ;SIGNAL OLD METHOD, LOOK FOR RIGHT BRACKET\r
+       MOVEM   C,.TEMP         ;STORE TERMINATOR FOR COMPARISON\r
+       MOVEI   SX,5*.IFBLK-1   ;LIMIT SEARCH\r
+       HRLI    RC,(POINT 7,,)  ;SET UP BYTE IN RC\r
+IFCLR: PUSHJ   PP,CHARAC\r
+       SKIPLE  .TEMP           ;NEW METHOD?\r
+       JRST    IFCLR1          ;YES, IGNORE ANGLE BRACKET COUNTING\r
+       CAIN    C,"<"           ;ANOTHER LEFT ANGLE?\r
+       SOS     .TEMP           ;YES, KEEP COUNT\r
+       CAIN    C,">"           ;CLOSING ANGLE\r
+       AOSGE   .TEMP           ;MATCHING COUNT?\r
+IFCLR1:        CAMN    C,.TEMP         ;TEST FOR DELIMITER\r
+       POPJ    PP,             ;EXIT ON RIGHT DELIMITER\r
+       SOJG    SX,.+2          ;ANY ROOM IN COMPARISON BLOCK?\r
+       TROA    ER,ERRA         ;NO, FLAG ERROR BUT KEEP ON GOING\r
+       IDPB    C,RC            ;DEPOSIT BYTE\r
+       JRST    IFCLR\r
+\r
+\f\r
+IFEX2: PUSHJ   PP,GETCHR\r
+       CAIN    C,EOL           ;EXIT WITH ERROR IF END OF LINE\r
+       JRST    ERRAX\r
+       CAIN    C,34            ;"<"?\r
+       AOJA    AC0,IFEX2       ;YES, INCREMENT COUNT\r
+       CAIE    C,36            ;">"?\r
+       JRST    IFEX2           ;NO, TRY AGAIN\r
+       SOJGE   AC0,IFEX2       ;YES, TEST FOR MATCH\r
+       PUSHJ   PP,BYPASS       ;YES, MOVE TO NEXT DELIMITER\r
+       SETZM   INCND           ;OUT OF CONDITIONAL NOW\r
+       AOJA    AC0,STOWZ1      ;STOW ZERO\r
+\r
+\r
+INTER0:        HLLZM   AC0,INTENT      ;AC0 CONTAINS INTF/ENTF FLAGS\r
+\r
+INTER1:        PUSHJ   PP,GETSYM       ;GET A SYMBOL\r
+       JRST    INTER3          ;INVALID, SKIP\r
+       PUSHJ   PP,SSRCH        ;SEARCH THE TABLE\r
+       MOVSI   ARG,SYMF!INTF!UNDF\r
+       TLNE    ARG,UNDF        ;UNDEFINED?\r
+       TRO     ER,ERRA         ;YES, FLAG ERROR\r
+       TLNN    ARG,SYNF!EXTF\r
+       TDOA    ARG,INTENT                      ;SET APPROPRIATE FLAGS\r
+INTER3:        TROA    ER,ERRA         ;FLAG ARG EROR AND SKIP\r
+       PUSHJ   PP,INSERQ       ;INSERT/UPDATE\r
+       JUMPCM  INTER1\r
+       SETZM EXTPNT    ;JUST IN CASE, SO AS NOT TO CONFUSE WORLD\r
+       POPJ    PP,             ;NO, EXIT\r
+\fEXTER0:       PUSHJ   PP,GETSYM       ;GET A SYMBOL\r
+       JRST    EXTER4          ;INVALID, ERROR\r
+EXTER1:        TLO     IO,DEFCRS       ;FLAG THIS AS A DEFINITION\r
+       PUSHJ   PP,SSRCH        ;OK, SEARCH SYMBOL TABLE\r
+       JRST    EXTER2          ;NOT THERE, INSERT IT\r
+       TLNN    ARG,EXTF!VARF!UNDF\r
+       TROA    ER,ERRE         ;FLAG ERROR AND BYPASS\r
+       TLNE    ARG,EXTF        ;VALID, ALREADY DEFINED?\r
+       JRST    [JUMP1  EXTER3  ;YES, BYPASS\r
+               TLZN ARG,UNDF   ;SKIP IF UNDEFINED ALSO\r
+               JRST    EXTER3  ;CONTINUE\r
+               ANDM ARG,(SX)   ;CLEAR UNDF ON PASS 2\r
+               JRST    EXTER2] ;SET UP EXTERNAL NOW\r
+EXTER2:        MOVEI V,2               ;NO, GET 2 CELLS FROM THE TREE\r
+       ADDB V,FREE\r
+       CAML    V,SYMBOL        ;HAVE WE RUN OUT OF CORE?\r
+       PUSHJ   PP,XCEEDS       ;YES, TRY TO BORROW SOME MORE\r
+       SUBI    V,2             ;GET RIGHT CELL FOR POINTER\r
+       SETZB   RC,0(V)         ;ALL SET, ZERO VALUES\r
+       MOVSI   ARG,SYMF!EXTF\r
+       PUSHJ   PP,INSERT       ;INSERT/UPDATE IT\r
+       MOVSI   ARG,PNTF\r
+       IORM    ARG,0(SX)\r
+       SKIPA ARG,-1(SX)                ;GET THE SIXBIT FOR THE NAME\r
+EXTER4:        TROA ER,ERRA    ;FLAG AS ERROR\r
+       MOVEM ARG,1(V)          ;AND STORE THAT IN CASE SYMBOL TABLE MOVES\r
+EXTER3:        JUMPCM  EXTER0\r
+       POPJ    PP,             ;NO, EXIT\r
+\fEVAL10:       PUSH    PP,RX\r
+       HRRI    RX,^D10\r
+       PUSHJ   PP,EVALEX       ;EVALUATE\r
+       POP     PP,RX           ;RESET RADIX\r
+       JUMPE   RC,POPOUT       ;EXIT IF ABSOLUTE\r
+\r
+QEXT:  SKIPE   EXTPNT          ;ANY POSSIBILITIES?\r
+       TROA    ER,ERRE         ;YES, FLAG EXTERNAL ERROR\r
+       TRO     ER,ERRR         ;NO, FLAG RELOCATION ERROR\r
+       HLLZS   RC              ;CLEAR RELOCATION/EXTERNAL\r
+       POPJ    PP,\r
+\r
+EVALXQ:        PUSHJ   PP,EVALEX       ;EVALUATE EXPRESSION\r
+       TLZN RC,-2              ;LEFT HALF EXTERNAL\r
+       TRZE    RC,-2           ;WAS AN EXTERNAL FOUND?\r
+       TRO     ER,ERRE         ;YES, FLAG ERROR\r
+       POPJ    PP,             ;RETURN\r
+\fOPDEF0:       PUSHJ   PP,GETSYM       ;GET THE FIRST SYMBOL\r
+       POPJ    PP,             ;ERROR IF INVALID SYMBOL\r
+       CAIE    C,73            ;"["?\r
+       JRST    ERRAX           ;NO, ERROR\r
+       PUSH    PP,AC0          ;STACK MNEMONIC\r
+       AOS     LITLVL          ;SHORT OUT LOCATION INCREMENT\r
+       PUSHJ   PP,STMNT        ;EVALUATE STATEMENT\r
+       SKIPGE  STPX            ;CODE STORED?\r
+       TROA    ER,ERRA         ;NO,"A" ERROR\r
+       PUSHJ   PP,DSTOW        ;GET AND DECODE VALUE\r
+       SOS     LITLVL\r
+       EXCH    AC0,0(PP)       ;EXCHANGE VALUE FOR MNEMONIC\r
+       PUSH    PP,RC           ;STACK RELOCATION\r
+       TLO     IO,DEFCRS       ;SAY WE ARE DEFINING IT\r
+       PUSHJ   PP,MSRCH        ;SEARCH SYMBOL TABLE\r
+       MOVSI   ARG,OPDF        ;NOT FOUND\r
+       POP     PP,RC           ;RESTORE VALUES\r
+       POP     PP,V\r
+       TLNE    ARG,SYNF!MACF\r
+       TRO     ER,ERRA         ;YES "A" ERROR\r
+       TRNN    ER,ERRA         ;ERROR?\r
+       PUSHJ   PP,INSERT       ;NO, INSERT/UPDATE\r
+       TLZ IO,DEFCRS           ;JUST IN CASE\r
+       PUSHJ   PP,BYPASS\r
+       JRST    STOWI           ;BE SURE STOW IS RESET\r
+\r
+\r
+DEPHA0:        MOVE    AC0,LOCO\r
+       SKIPA   RC,MODO         ;SET TO OUTPUT VALUES AND SKIP\r
+PHASE0:        PUSHJ   PP,EVALXQ       ;EVALUATE AND CHECK FOR EXTERNAL\r
+       MOVEM   AC0,LOCA        ;SET ASSEMBLY LOCATION COUNTER\r
+       MOVEM   RC,MODA\r
+       JRST    BLOCK2\r
+\fASSIGN:       JUMPAD  ERRAX           ;NO, ERROR\r
+       PUSHJ   PP,ASSIG1\r
+       TLNE    IO,IOSALL       ;SUPPRESS ALL?\r
+       JUMPN   MRP,CPOPJ       ;IF IN MACRO\r
+ASSIG7:        MOVEM   RC,ASGBLK\r
+       TRNE    RC,-2           ;EXTERNAL\r
+       HLLZS   ASGBLK          ;YES,CLEAR RELOCATION\r
+       TLNE    RC,1            ;LEFT HALF NOT RELOC?\r
+       TLNE    RC,-2           ;...\r
+       HRROS   ASGBLK          ;YES, SET FLAG\r
+       MOVEM   V,LOCBLK\r
+       POPJ    PP,\r
+\r
+ASSIG1:        PUSH    PP,AC0          ;SAVE SYMBOL\r
+       SETZB AC0,EXTPNT        ;SPECIAL CHECK FOR == WFW\r
+       PUSHJ PP,PEEK           ;IS THE NEXT ON =\r
+       CAIE    C,"="\r
+       JRST    ASSIG5\r
+       TLO     AC0,NOOUTF      ;YES, NOT OUT TO DDT WFW\r
+       PUSHJ   PP,GETCHR       ;PROCESS THE CHAR.\r
+       PUSHJ   PP,PEEK         ;CHECK FOR ==: DMN\r
+ASSIG5:        CAIE    C,":"           ;IS IT\r
+       JRST    ASSIG6          ;NO\r
+       TLO     AC0,INTF        ;MAKE INTERNAL\r
+       PUSHJ   PP,GETCHR       ;REPEAT IT\r
+ASSIG6:        MOVEM AC0,HDAS          ;STORE THESE BITS WFW\r
+       PUSHJ   PP,EVALCM       ;EVALUATE EXPRESSION\r
+       EXCH    AC0,0(PP)       ;SWAP VALUE FOR SYMBOL\r
+       PUSH    PP,RC\r
+       TRNN RC,-2              ;CHECK EXTERNAL AGREEMENT\r
+       JRST ASSIG2\r
+       HRRZS RC\r
+       HRRZ ARG,EXTPNT\r
+       CAME RC,ARG\r
+       PUSHJ   PP,QEXT         ;EXTERNAL OR RELOCATION ERROR\r
+ASSIG2:        HLRZ RC,(PP)\r
+       TRNN RC,-2\r
+       JRST ASSIG3\r
+       HLRZ ARG,EXTPNT\r
+       CAME RC,ARG\r
+       PUSHJ   PP,QEXT\r
+ASSIG3:        TLO IO,DEFCRS\r
+       PUSHJ   PP,SSRCH\r
+       MOVSI   ARG,SYMF\r
+       IOR ARG,HDAS    ;WFW\r
+       TLNE    ARG,UNDF        ;WAS IT UNDEFINED\r
+       TLZ     ARG,EXTF!PNTF   ;YES,CLEAR EXTF NOW\r
+       TLZ     ARG,UNDF!VARF   ;CANCEL UNDEFINED AND VARIABLE FLAGS\r
+       SETZM EXTPNT            ;FOR REST OF WORLD\r
+       POP     PP,RC\r
+       TRNE    ER,ERRORS-ERRQ\r
+       SETZ    RC,             ;CLEAR RELOCATION\r
+       POP     PP,V\r
+       TRNE    ER,ERRU         ;WAS VALUE UNDEFINED?\r
+       TLO     ARG,UNDF        ;YES,SO TURN UNDF ON\r
+       TLNE    ARG,TAGF!EXTF\r
+       JRST    ERRAX\r
+       JRST    INSERT\r
+\r
+\fLOC0: PUSHJ   PP,HIGHQ        ;AC0=0,0\r
+       PUSH    PP,AC0          ;SAVE MODE REQUESTED\r
+       HLRZS   AC0             ;PUT MODE IN RIGHT HALF\r
+       JUMPN   AC0,RELOC0      ;RELOC PSEUDO-OP\r
+       CAMN    AC0,MODO        ;SAME AS PRESENT MODE?\r
+       JRST    [HRRZ AC0,LOCO  ;YES\r
+               EXCH AC0,ABSLOC ;EXCH VALUES\r
+               JRST    LOC01]\r
+       HRRZ    AC0,LOCO        ;NO, GET CURRENT VALUE\r
+       MOVEM   AC0,RELLOC      ;SAVE IT\r
+       MOVE    AC0,ABSLOC      ;GET LAST RELOC VALUE\r
+LOC01: PUSHJ   PP,BYPASS       ;SKIP BLANKS\r
+       TLO     IO,IORPTC\r
+       CAIE    C,EOL           ;USE PREVIOUS VALUE IF NULL ARGUMENT\r
+       PUSHJ   PP,EVALXQ       ;GET EXPRESSION AND TEST EXTERNAL\r
+       HRRM    AC0,(PP)        ;STORE NEW VALUE\r
+       POP     PP,AC0          ;RETRIEVE STORED MODE AND VALUE\r
+LOC10: HRRZM   AC0,LOCA        ;SET ASSEMBLY LOCATION\r
+       HRRZM   AC0,LOCO        ;AND OUTPUT LOCATION\r
+       HLRZM   AC0,MODA        ;SET MODE\r
+       HLRZM   AC0,MODO\r
+       JRST    BLOCK2\r
+\r
+RELOC0:        CAMN    AC0,MODO\r
+       JRST    [HRRZ   AC0,LOCO\r
+               EXCH    AC0,RELLOC\r
+               JRST    LOC01]\r
+       HRRZ    AC0,LOCO\r
+       MOVEM   AC0,ABSLOC\r
+       MOVE    AC0,RELLOC\r
+       JRST    LOC01\r
+\r
+\fIFN RENTSW,<\r
+HISEG1:        PUSHJ   PP,HIGHQ        ;SET CURRENT PROGRAM BREAK\r
+       PUSHJ   PP,COUTD        ;DUMP CURRENT TYPE OF BLOCK\r
+       SKIPN   HISNSW          ;IF WE HAVE SEEN IT BEFORE\r
+       SKIPE   HIGH            ;OR ANY RELOC CODE PUT OUT\r
+       TRO     ER,ERRQ         ;FLAG AS AN ERROR\r
+       PUSHJ   PP,BYPASS       ;GO GET EXPRESSION\r
+       TLO     IO,IORPTC\r
+       PUSHJ   PP,EVALXQ       ;CHECK FOR EXTERNAL\r
+       ANDCMI  AC0,1777        ;ONLY ALLOWED TO START ON NEW K BOUND\r
+       HRRZM   AC0,LOCA        ;SET LOC COUNTERS\r
+       HRRZM   AC0,LOCO\r
+       MOVEI   RC,1            ;ASSUME RELOCATABLE\r
+       POPJ    PP,\r
+\r
+TWSEG0:        PUSHJ   PP,HISEG1       ;COMMON CODE\r
+       JUMPN   AC0,.+2         ;ARGUMENT SEEN\r
+       MOVEI   AC0,400000      ;ASSUME 400000\r
+       HRRZM   AC0,HMIN        ;SET OFSET OF HIGH SEG.\r
+       HRRZM   AC0,HHIGH       ;INCASE NO HISEG CODE\r
+       TLOA    AC0,(1B0)       ;SIGNAL TWO SEGMENTS AND SKIP\r
+\r
+HISEG0:        PUSHJ   PP,HISEG1       ;COMMON CODE\r
+HISEG2:        MOVEM   AC0,SVTYP3      ;SAVE THE HISEG ARG\r
+       MOVEM   RC,MODA         ;SET MODES\r
+       MOVEM   RC,MODO\r
+       SETOM   HISNSW          ;WE HAVE ALREADY PUT ONE OUT\r
+       JRST    BLOCK2          ;MAKE LISTING HAPPEN RIGHT>\r
+\r
+IFE RENTSW,<\r
+       SYN     CPOPJ,HISEG0\r
+       SYN     CPOPJ,TWSEG0>\r
+\r
+       SYN     CPOPJ,ONFORM\r
+       SYN     CPOPJ,OFFORM\r
+\fHIGHQ:\r
+HIGHQ1:        MOVE    V,LOCO  ;GET ASSEMBLY LOCATION\r
+       SKIPN   MODO            ;IF ASSEMBLY MODE IS ABSOLUTE\r
+       JRST    [CAMLE V,ABSHI  ;RECORED ABS HIGHEST ALSO\r
+               MOVEM V,ABSHI\r
+               POPJ PP,]\r
+IFN RENTSW,<SKIPE      HMIN    ;IS IT A TWO SEGMENT PROGRAM?\r
+       JRST    [CAMGE  V,HMIN  ;YES,IS THIS HIGH SEG.?\r
+               JRST    .+1     ;NO,STORE LOW SEGMENT\r
+               CAMLE   V,HHIGH ;YES,IS IT GREATER THAN "HHIGH"?\r
+               MOVEM   V,HHIGH ;YES,REPLACE WITH LARGER VALUE\r
+               POPJ    PP,]>\r
+       CAMLE   V,HIGH          ;IS IT GREATER THAN "HIGH"?\r
+       MOVEM   V,HIGH          ;YES, REPLACE WITH LARGER VALUE\r
+       POPJ    PP,\r
+       \r
+ONML:  TLZA FR,MWLFLG          ;MULTI-WORD LITERALS OK\r
+OFFML: TLO FR,MWLFLG           ;NO\r
+       POPJ PP,\r
+\r
+OFFSYM:        SETOM   IONSYM  ;SUPRESS SYMBOL TABLE LISTING\r
+       POPJ    PP,\r
+\r
+SUPRE0:        PUSHJ PP,GETSYM ;GET A SYMBOL TO SUPRES\r
+       JRST SUPRE1     ;ERROR\r
+       PUSHJ PP,SSRCH  ;SYMBOL ONLY\r
+       JRST SUPRE1     ;GIVE ERROR MESSAGE\r
+       TLOA ARG,SUPRBT ;SET THE SUPRESS BIT\r
+SUPRE1:        TROA ER,ERRA\r
+       IORM ARG,(SX)   ;PUT BACK\r
+       JUMPCM SUPRE0   ;ANY MORE?\r
+       JRST    SUPRS1\r
+\r
+SUPRSA:        PUSHJ PP,LOOKUP ;SUPRESS ALL\r
+       MOVSI ARG,SUPRBT\r
+       IORM ARG,(SX)\r
+SUPRS1:        SETZM EXTPNT    ;JUST IN CASE WE LOOKED ONE UP\r
+       POPJ PP,\r
+\r
+XPUNG0:        JUMP1   POPOUT\r
+       PUSHJ   PP,LOOKUP\r
+       MOVE    ARG,(SX)        ;GET SYMBOL FLAGS\r
+       TLNN    ARG,INTF!ENTF!EXTF!SPTR\r
+       TLOA    ARG,SUPRBT      ;LOCAL SYMBOL,SO SUPPRESS IT\r
+       SETZM   EXTPNT\r
+       MOVEM   ARG,(SX)        ;RESTORE FLAGS\r
+       POPJ    PP,\r
+\fTITLE0:       JUMP2   REMAR0\r
+       MOVEI   SX,.TBUF\r
+       HRRI    AC0,TBUF\r
+       PUSHJ PP,SUBTT1 ;GO READ IT\r
+       MOVEM   SX,TCNT         ;SAVE COUNT OF CHARS. WRITTEN\r
+IFN UNIVR,<SKIPE       UNIVSN          ;WAS IT A UNIVERSAL?\r
+       PUSHJ   PP,ADDUNV       ;YES  ADD TO TABLE>\r
+       TLOE IO,IOTLSN  ;HAVE WE SEEN ONE\r
+IFE CCLSW,<TRO ER,ERRM         ;YES, COMPLAIN>\r
+IFN CCLSW,<TROA        ER,ERRM         ;YES, MESSAGE\r
+       JRST    PRNAM           ;PRINT NAME IF FIRST ONE>\r
+       POPJ    PP,             ;EXIT OTHERWISE\r
+\r
+SUBTT0:        SKIPE   SBUF            ;STORE FIRST SUBTTL ON PASS1\r
+       JUMP1   REMAR0          ;OTHERWISE EXIT IF PASS ONE\r
+       MOVEI   SX,.SBUF\r
+       HRRI    AC0,SBUF\r
+\r
+SUBTT1:        PUSHJ   PP,BYPASS       ;BYPASS LEADING BLANKS\r
+       TLO     IO,IORPTC\r
+SUBTT3:        PUSHJ   PP,CHARAC       ;GET ASCII CHARACTER\r
+       IDPB    C,AC0           ;STORE IN BLOCK\r
+       CAIGE   C,40            ;TEST FOR TERMINATOR\r
+       CAIN    C,HT\r
+       SOJG    SX,SUBTT3       ;TEST FOR BUFFER FULL\r
+       DPB     RC,AC0          ;END, STORE TERMINATOR\r
+       SOJA    SX,CPOPJ        ;COUNT NUL AND EXIT\r
+\r
+IFN CCLSW,<\r
+PRNAM: TLNN IO,CRPGSW  ;NOT IF NOT RPG\r
+       POPJ PP,\r
+       PUSH    PP,AC0          ;SAVE AC0 DMN\r
+       PUSH    PP,RC           ;AND RC\r
+       MOVE AC0,[POINT 7,TBUF]\r
+       MOVE SX,[POINT 7,OTBUF]\r
+       MOVEI RC,6      ;MAX OF SIX CHRS\r
+PN1:   ILDB C,AC0\r
+       CAILE C," "     ;CHECK FOR LEGAL\r
+       CAILE C,"Z"+40  ;CHECK AGAINST LOWER CASE Z\r
+       JRST PN2\r
+       IDPB C,SX       ;PUT IN OUTPUT BUFFER\r
+       SOJG RC,PN1     ;GET MORE\r
+PN2:   MOVEI C,0\r
+       IDPB C,SX       ;TERMINATOR\r
+       TTCALL  3,OTBUF\r
+       TTCALL  3,[ASCIZ /\r
+/]\r
+       POP     PP,RC\r
+       POP     PP,AC0          ;RESTORE AC0 DMN\r
+       POPJ PP,\r
+>\r
+\fSYN0: PUSHJ   PP,GETSYM       ;GET THE FIRST SYMBOL\r
+       JRST    ERRAX           ;ERROR, EXIT\r
+       PUSHJ   PP,MSRCH        ;TRY FOR MACRO/OPDEF\r
+       JRST    SYN3            ;NO,0THRY FOR OPERAND\r
+SYN1:  MOVEI   SX,MSRCH        ;YES, SET FLAG\r
+SYN2:  PUSHJ   PP,SAVEXS       ;SAVE REGISTERS\r
+       JUMPNC  ERRAX           ;ERROR IF NO COMMA\r
+       PUSHJ   PP,GETSYM       ;GET THE SECOND SYMBOL\r
+       POPJ    PP,\r
+       PUSHJ   PP,@SAVBLK+SX   ;SEARCH FOR SECOND SYMBOL\r
+       JFCL\r
+       MOVE    ARG,SAVBLK+ARG  ;GET VALUES\r
+       MOVE    RC,SAVBLK+RC\r
+       MOVE    V,SAVBLK+V\r
+       TLNE    ARG,MACF        ;MACRO?\r
+       PUSHJ   PP,REFINC       ;YES, INCREMENT REFERENCE\r
+       JRST    INSERT          ;INSERT AND EXIT\r
+\r
+SYN3:  PUSHJ   PP,SSRCH        ;SEARCH FOR OPERAND\r
+       JRST    SYN4            ;NOT FOUND, TRY OP CODE\r
+       TLO     ARG,SYNF        ;FLAG AS SYNONYM\r
+       TLNE    ARG,EXTF        ;EXTERNAL?\r
+       HRRZ    V,ARG           ;YES, RELPACE WITH POINTER\r
+       MOVEI   SX,SSRCH        ;SET FLAG\r
+       TLNN ARG,VARF   ;DO NOT LET HIM SYN A VARIABLE\r
+       JRST    SYN2\r
+       JRST ERRAX\r
+\r
+SYN4:  PUSHJ   PP,OPTSCH       ;SEARCH FOR OP-CODE\r
+       JRST    ERRAX           ;NOT FOUND, EXIT WITH ERROR\r
+       MOVSI   ARG,SYNF        ;FLAG AS SYNONYM\r
+       JRST    SYN1\r
+\fPURGE0:       PUSHJ   PP,GETSYM       ;GET A MNEMONIC\r
+       JRST    [TRZ ER,ERRA    ;CLEAR ERROR\r
+               POPJ    PP,]    ;AND RETURN\r
+       PUSHJ   PP,MSRCH        ;SEARCH MACRO SYMBOL TABLE\r
+       JRST    PURGE2          ;NOT FOUND, TRY SYMBOLS\r
+       PUSH    PP,CS           ;SAVE CS AS IT MAY GET GARBAGED\r
+       TLNE    ARG,MACF        ;MACRO?\r
+       PUSHJ   PP,REFDEC       ;YES, DECREMENT THE REFERENCE\r
+       POP     PP,CS\r
+       JRST    PURGE4          ;REMOVE SYMBOL FROM TABLE\r
+\r
+PURGE2:        PUSHJ   PP,SSRCH        ;TRY OPERAND SYMBOL TABLE\r
+       JRST    PURGE5          ;NOT FOUND GET NEXT SYMBOL\r
+       TRNN RC,-2              ;CHECK COMPLEX EXTERNAL\r
+       TLNE RC,-2\r
+       TLNE ARG,SYNF\r
+       JRST    .+2\r
+       JRST PURGE3\r
+       TLNE    ARG,EXTF!UNDF   ;ERROR IF EXTERNAL OR UNDEFINED\r
+       TLNE    ARG,SYNF        ;BUT NOT A SYNONYM\r
+       JRST    PURGE4\r
+PURGE3:        TROA    ER,ERRA         ;NOT FOUND, ERROR\r
+PURGE4:        PUSHJ   PP,REMOVE       ;REMOVE FROM THE SYMBOL TABLE\r
+PURGE5:        JUMPCM  PURGE0\r
+       POPJ    PP,             ;EXIT\r
+\fOPD1: TLNE    ARG,UNDF        ;IF OPDEF IS UNDEFINED\r
+       TRO     ER,ERRO         ;GIVE "O" ERROR\r
+OPD:   MOVE    AC0,V           ;PUT VALUE IN AC0\r
+       JRST    OP\r
+IOP:   MOVSI   AC2,(POINT 9,0(PP),11)\r
+       TLOA    IO,IOIOPF       ;SET "IOP SEEN" AND SKIP\r
+OP:    MOVSI   AC2,(POINT 4,0(PP),12)\r
+       PUSH    PP,RC\r
+       PUSH    PP,AC0          ;STACK CODE \r
+       PUSH    PP,AC2\r
+       PUSHJ   PP,EVALEX       ;EVALUATE FIRST EXPRESSION\r
+       POP     PP,AC2\r
+       JUMPNC  OP2\r
+OP1B:  PUSHJ   PP,GETCHR       ;GET A CHARACTER\r
+       JUMPCM XWD5             ;PROCESS COMMA COMMA IN XWD\r
+       TLO     IO,IORPTC       ;NOT A COMMA,REPEAT IT\r
+       LDB     AC1,AC2\r
+       ADD     AC1,AC0\r
+       DPB     AC1,AC2\r
+       JUMPE   RC,OP1A         ;EXTERNAL OR RELOCATABLE?\r
+       PUSHJ   PP,QEXT         ;YES, DETERMINE WHICH AND FLAG AN ERROR\r
+\r
+OP1A:  PUSHJ   PP,EVALEX       ;GET ADDRESS PART\r
+OP2:   PUSHJ   PP,EVADR        ;EVALUATE STANDARD ADDRESS\r
+OP3:   POP     PP,AC0          ;PUT IN AC0\r
+       POP     PP,RC\r
+       SKIPE   (PP)            ;CAME FROM EVALCM?\r
+       JRST    STOW            ;NO,STOW CODE AND EXIT\r
+       POP     PP,AC1          ;YES,EXIT IMMEDIATELY\r
+       POPJ    PP,\r
+\r
+\fEVADR:                                ;EVALUATE STANDARD ADDRESS\r
+IFE IIISW,<TLNN        AC0,-1          ;OK IF ALL 0'S\r
+       JRST    .+4             ;IT WAS\r
+       TLC     AC0,-1          ;CHANGE ALL ONES TO ZEROS\r
+       TLCE    AC0,-1          ;OK IF ALL 1'S\r
+       TRO     ER,ERRQ         ;NO,FLAG Q ERROR>\r
+       ADD     AC0,-1(PP)      ;ADD ADDRESS PORTIONS\r
+       HLL     AC0,-1(PP)      ;GET LEFT HALF\r
+       TLZE    FR,INDSW        ;INDIRECT BIT?\r
+       TLO     AC0,(Z @)       ;YES, PUT IT IN\r
+       MOVEM   AC0,-1(PP)      ;RE-STACK CODE\r
+       ADD     RC,-2(PP)       ;UPDATE RELOCATION\r
+       HRRM    RC,-2(PP)       ;USE HALF WORD ADD\r
+       CAIE    C,10            ;"("?\r
+       POPJ    PP,             ;NO, EXIT\r
+\r
+       MOVSS   EXTPNT          ;WFW\r
+       PUSHJ   PP,EVALCM       ;EVALUATE\r
+       MOVSS   EXTPNT          ;WFW\r
+       MOVSS   V,AC0           ;SWAP HALVES\r
+IFE IIISW,<MOVSS SX,RC\r
+       IOR     SX,V            ;MERGE RELOCATION\r
+       TRNN    SX,-1           ;RIGHT HALF ZERO?\r
+       JRST    OP2A            ;YES, DO SIMPLE ADD\r
+       MOVE    ARG,RC          ;NO, SWAP RC INTO ARG>\r
+IFN IIISW,<MOVSS ARG,RC>\r
+       ADD     V,-1(PP)        ;ADD RIGHT HALVES\r
+       ADD     ARG,-2(PP)\r
+       HRRM    V,-1(PP)        ;UPDATE WITHOUT CARRY\r
+       HRRM    ARG,-2(PP)\r
+       HLLZS   AC0             ;PREPARE LEFT HALVES\r
+       HLLZS   RC\r
+IFE IIISW,<TLNE        SX,-1           ;IS LEFT HALF ZERO?\r
+       TRO     ER,ERRQ         ;NO FLAG FORMAT ERROR\r
+OP2A:  TLNE    RC,-1           ;RELOCATION FOR LEFT HALF?\r
+       PUSHJ   PP,OP2A1        ;YES,IS IT LEGAL?\r
+       TLNE    AC0,777000      ;OP CODE FIELD USED?\r
+       JRST    [EXCH AC0,-1(PP);YES, GET STORED CODE\r
+               TLNE AC0,777000 ;OP CODE FIELD BEEN SET?\r
+               TRO ER,ERRQ     ;YES, MOST LIKELY AN ERROR\r
+               EXCH AC0,-1(PP)\r
+               JRST    .+1]    ;RETURN TO ADD >\r
+       ADDM    AC0,-1(PP)      ;MERGE WITH PREVIOUS VALUE\r
+       ADDM    RC,-2(PP)\r
+       CAIE    C,11            ;")"?\r
+       JRST    ERRAX           ;NO, FLAG ERROR\r
+                               ;YES, BYPASS PARENTHESIS\r
+BYPASS:\r
+BYPAS1:        PUSHJ   PP,GETCHR\r
+BYPAS2:        JUMPE   C,.-1           ;SKIP TRAILING BLANKS\r
+       POPJ    PP,             ;EXIT\r
+\r
+\fIFE IIISW,<\r
+OP2A1: EXCH    RC,-2(PP)       ;GET STORED CODE\r
+       TLNN    RC,-1           ;OK IF ALL ZERO\r
+       JRST    OP2A2           ;OK SO RETURN\r
+       TLC     RC,-1           ;CHANGE ALL ONES TO ZEROS\r
+       TLCE    RC,-1           ;OK IF ALL ONES\r
+       TRO     ER,ERRQ         ;OTHERWISE A "Q" ERROR\r
+OP2A2: EXCH    RC,-2(PP)       ;GET RC,BACK\r
+       POPJ    PP,             ;AND RETURN>\r
+\r
+\r
+EXPRES:        HRLZ    AC0,RX          ;FUDGE FOR OCT0\r
+\r
+OCT0:  PUSH    PP,RX\r
+       HLR     RX,AC0\r
+OCT1:  PUSHJ   PP,EVALEX       ;EVALUATE\r
+       PUSHJ   PP,STOW         ;STOW CODE\r
+       JUMPCM  OCT1\r
+       POP     PP,RX           ;YES, RESTORE RADIX\r
+       POPJ    PP,             ;EXIT\r
+\fSIXB10:       MOVSI   RC,(POINT 6,AC0)        ;SET UP POINTER\r
+       MOVEI   AC0,0           ;CLEAR WORD\r
+\r
+SIXB20:        PUSHJ   PP,CHARL        ;GET NEXT CHARACTER\r
+       CAMN    C,SX            ;IS THIS PRESET DELIMITER?\r
+       JRST    ASC60           ;YES\r
+       CAIL C,"A"+40\r
+       CAILE C,"Z"+40\r
+       JRST    .+2\r
+       TRZA    C,100           ;CONVERT LOWER CASE TO SIXBIT\r
+       SUBI    C,40            ;CONVERT TO SIXBIT\r
+       JUMPL   C,ASC55         ;TEST FOR INVALID CHARACTER\r
+       IDPB    C,RC            ;NO, DEPOSIT THE BYTE\r
+       TLNE    RC,770000       ;IS THE WORD FULL?\r
+       JRST    SIXB20          ;NO, GET NEXT CHARACTER\r
+       PUSHJ   PP,STOWZ        ;YES, STORE\r
+       JRST    SIXB10          ;GET NEXT WORD\r
+\fASCII0:       HLLZ    SDEL,AC0        ;STORE ASCII/ASCIZ FLAG\r
+ASC10: PUSHJ   PP,CHARL        ;GET FIRST NON-BLANK\r
+       CAIE    C," "\r
+       CAIN    C,HT\r
+       JRST    ASC10\r
+       CAIG C,CR               ;CHECK FOR CRRET AS DELIM\r
+       CAIGE C,LF\r
+       SKIPA   SX,SEQNO2\r
+       JRST ERRAX\r
+       MOVEM SX,TXTSEQ         ;SAVE SEQ AND PAGE\r
+       MOVE SX,PAGENO\r
+       MOVEM SX,TXTPG\r
+       SETOM INTXT\r
+       MOVE    SX,C            ;SAVE FOR COMPARISON\r
+       JUMPG   SDEL,SIXB10     ;BRANCH IF SIXBIT\r
+\r
+ASC20: MOVSI   RC,(POINT 7,AC0)        ;SET UP POINTER\r
+       TLNE    SDEL,200000     ;THIS BIT (AND BIT0) IN FOR COMMENT\r
+       MOVSI RC,440000         ;SO NOTHING WILL BE DEPOSITED\r
+IFE IIISW,<MOVEI AC0,0         ;CLEAR WORD>\r
+IFN IIISW,<TLNE        SDEL,100000     ;ASCID?\r
+       TLZA    SDEL,400000     ;YES, ZERO ASCIZ BIT\r
+       TDZA    AC0,AC0         ;NO, ZERO WORD\r
+       MOVE    AC0,[BYTE (7) 10,10,10,10,10 (1) 1]     ;YES, A WORD FULL OF BACKSPACES>\r
+ASC30: PUSHJ   PP,CHARL        ;GET ASCII CHARACTER AND LIST\r
+       CAMN    C,SX            ;TEST FOR DELIMITER\r
+       JRST    ASC50           ;FOUND\r
+       IDPB    C,RC            ;DEPOSIT BYTE\r
+       TLNE    RC,760000       ;HAVE WE FINISHED WORD?\r
+       JRST    ASC30           ;NO,GET NEXT CHARACTER\r
+       PUSHJ   PP,STOWZ        ;YES, STOW IT\r
+       JRST    ASC20           ;GET NEXT WORD\r
+\r
+ASC55: TDZA    CS,CS           ;ZERO CS IN CASE NESTED\r
+ASC50: TDZA    RC,SDEL         ;TEST FOR ASCIIZ\r
+       TROA    ER,ERRA         ;SIXBIT ERROR EXIT\r
+ASC60: PUSHJ   PP,BYPAS1       ;POLISH OFF TERMINATOR\r
+       SETZM INTXT     ;WE ARE OUT OF IT\r
+IFN IIISW,<TLNN        SDEL,100000     ;NO EXTRA WORDS FOR ASCID>\r
+       ANDCM   RC,STPX         ;STORE AT LEAST ONE WORD\r
+       TLNN SDEL,200000        ;GET OUT WITHOUT STORING\r
+       JUMPGE  RC,STOWZ        ;STOW\r
+       POPJ    PP,             ;ASCII, NO BYTES STORED, SO EXIT\r
+\fPOINT0:\r
+       PUSH    PP,RC           ;STACK REGISTERS\r
+       PUSH    PP,AC0\r
+       PUSHJ   PP,EVAL10       ;EVALUATE RADIX 10\r
+       DPB     AC0,[POINT 6,0(PP),11]  ;STORE BYTE SIZE\r
+       JUMPNC  POINT2\r
+       PUSHJ   PP,EVALEX       ;NO, GET ADDRESS\r
+       PUSHJ   PP,EVADR        ;EVALUATE STANDARD ADDRESS\r
+       JUMPNC  POINT2\r
+       PUSHJ   PP,EVAL10       ;EVALUATE RADIX 10\r
+       TLNE    IO,NUMSW        ;IF NUMERIC\r
+       TDCA    AC0,[-1]        ;POSITION=D35-RHB\r
+POINT2:        MOVEI   AC0,0           ;OTHERWISE SET TO D36\r
+       ADDI    AC0,^D36\r
+       LSH     AC0,^D30\r
+       ADDM    AC0,0(PP)       ;UPDATE VALUE\r
+       JRST    OP3\r
+\fXWD0:\r
+       PUSH    PP,RC\r
+       PUSH    PP,AC0          ;STORE ZERO ON STACK\r
+       PUSHJ   PP,EVALEX       ;EVALUATE EXPRESSION\r
+       JUMPNC  OP2\r
+XWD5:  SKIPN   (PP)            ;ANY CODE YET?\r
+       JRST    XWD10           ;NO,USE VALUE IN AC0\r
+       JUMPE   AC0,.+2         ;ANYTHING IN AC0?\r
+       TRO     ER,ERRQ         ;YES,FLAG "Q"ERROR\r
+       MOVE    AC0,(PP)        ;USE PREVIOUS VALUE\r
+       MOVE    RC,-1(PP)       ;AND RELOCATION\r
+XWD10: HRLZM   AC0,0(PP)       ;SET LEFT HALF\r
+       HRLZM   RC,-1(PP)\r
+       MOVSS EXTPNT    ;WFW\r
+       JRST    OP1A            ;EXIT THROUGH OP\r
+\r
+IOWD0: PUSHJ   PP,EVALXQ       ;EVALUATE AND TEST FOR EXTERNAL\r
+       CAIE    C,14            ;","?\r
+       JRST    [SKIPN  AC0     ;IF NZERO AND NO "," SEEN\r
+               TRO ER,ERRQ     ;TREAT AS Q ERROR\r
+               SOJA AC0,STOW]  ;NO, TREAT AS RIGHT HALF\r
+       PUSH    PP,AC0          ;YES, STACK LEFT HALF\r
+       PUSHJ   PP,EVALEX       ;WFW\r
+       SUBI    AC0,1\r
+       POP     PP,AC1          ;RETRIEVE LEFT HALF\r
+       MOVNS   AC1\r
+       HRL     AC0,AC1\r
+       JRST    STOW            ;STOW CODE AND EXIT\r
+\fBYTE0:        PUSHJ   PP,BYPASS       ;GET FIRST NON-BLANK\r
+       CAIE    C,10            ;"("?\r
+       JRST    ERRAX           ;NO, FLAG ERROR AND EXIT\r
+       PUSH    PP,RC\r
+       PUSH    PP,AC0          ;INITIALIZE STACK TO ZERO\r
+       MOVSI   ARG,(POINT -1,(PP))\r
+\r
+BYTE1: PUSH    PP,ARG\r
+       PUSHJ   PP,EVAL10       ;EVALUATE RADIX 10\r
+       POP     PP,ARG\r
+       CAIG    AC0,^D36        ;TEST SIZE\r
+       JUMPGE  AC0,.+2\r
+       TRO     ER,ERRA\r
+       DPB     AC0,[POINT 6,ARG,11]    ;STORE BYTE SIZE\r
+\r
+BYTE2: IBP     ARG             ;INCREMENT BYTE\r
+       TRZN    ARG,-1          ;OVERFLOW?\r
+       JRST    BYTE3           ;NO\r
+       SETZB   AC0,RC          ;YES\r
+       EXCH    AC0,0(PP)       ;GET CURRENT VALUES\r
+       EXCH    RC,-1(PP)       ;AND STACK ZEROS\r
+       PUSHJ   PP,STOW         ;STOW FULL WORD\r
+\r
+BYTE3: PUSH    PP,ARG\r
+       PUSHJ   PP,EVALEX       ;COMPUTE NEXT BYTE\r
+       POP     PP,ARG\r
+       DPB     AC0,ARG         ;STORE BYTE\r
+       HLLO    AC0,ARG\r
+       DPB     RC,AC0          ;STORE RELOCATION\r
+\r
+       JUMPCM  BYTE2\r
+       CAIN    C,10            ;"("?\r
+       JRST    BYTE1           ;YES, GET NEW BYTE SIZE\r
+       JRST    OP3             ;NO, EXIT\r
+\fRADX50:       PUSHJ   PP,EVALEX       ;EVALUATE CODE\r
+       JUMPN   RC,ERRAX                ;ERROR IF NOT ABSOLUTE\r
+       MOVE    ARG,AC0\r
+       JUMPNC  ERRAX\r
+       PUSHJ   PP,GETSYM       ;YES, GET SYMBOL\r
+       TRZ     ER,ERRA         ;CLEAR ERROR\r
+       PUSHJ   PP,SQOZE        ;SQUOZE SIXBIT AND ADD CODE\r
+       JRST    STOW            ;STOW CODE AND EXIT\r
+\r
+\r
+SQOZE: MOVE    AC1+1,AC0       ;PUT SIXBIT IN AC1+1\r
+       MOVEI   AC0,0           ;CLEAR RESULT\r
+SQOZ1: MOVEI   AC1,0\r
+       LSHC    AC1,6           ;PUT 6-BIT CHARACTER IN AC1\r
+       LDB     AC1,[POINT 6,CSTAT(AC1),23]     ;CONVERT TO RADIX50\r
+       IMULI   AC0,50          ;MULTIPLY PREVIOUS RESULT\r
+       ADD     AC0,AC1         ;ADD NEW CHARACTER\r
+       JUMPN   AC1+1,SQOZ1     ;TEST FOR END\r
+       LSH     ARG,^D30        ;LEFT-JUSTIFY CODE\r
+       IOR     AC0,ARG         ;MERGE WITH RESULT\r
+       POPJ    PP,\r
+\r
+\f; PSEUDO-END STATEMENT FOR MULTI-FILE CAPABILITY\r
+\r
+; HERE IF PRGEND (PASS 1)\r
+PSEND0:        TLO     IO,MFLSW        ;PSEND SEEN\r
+       PUSHJ   PP,END0         ;AS IF END STATEMENT\r
+       HLLZS   IO              ;CLEAR ER(RH)\r
+       SETZM   ERRCNT          ;CLEAR ERROR COUNT FOR EACH PROG.\r
+       JUMP2   PSEND2          ;DIFFERENT ON PASS2\r
+IFN UNIVR,<SKIPE       UNIVSN          ;SEEN A UNIVERSAL\r
+       PUSHJ   PP,UNISYM       ;YES, STORE SYMBOLS>\r
+       PUSHJ   PP,PSEND4       ;SAVE SYMBOLS, POINTERS AND TITLE\r
+       TLZ     IO,IOTLSN       ;CLEAR TITLE SEEN FLAG\r
+PSEND1:        TLZ     IO,MFLSW         ;FOR NEXT FILE\r
+IFN UNIVR,<SETZM       UNISCH          ;CLEAR UNIVERSAL SEARCH TABLE\r
+       MOVE    AC0,[UNISCH,,UNISCH+1]\r
+       BLT     AC0,UNISCH+.UNIV-1\r
+       PUSHJ   PP,OUTFF        ;RESET PAGE COUNT>\r
+       MOVSI   AC0,1           ;SET SO RELOC 0 WORKS\r
+       JRST    LOC10           ;FOR RELOC 0\r
+\r
+; HERE IF PRGEND (PASS 2)\r
+PSEND2:        SETZM   SBUF            ;SO SUBTTL IS NOT WRONG\r
+       PUSHJ   PP,PSEND5       ;PUT TITLE BACK\r
+       PUSHJ   PP,PSEND1       ;COMMON  CODE\r
+       JRST    PASS20          ;OUTPUT THE ENTRIES\r
+\r
+; HERE IF END (PASS 1)\r
+PSEND3:        PUSHJ   PP,PSEND4       ;SAVE LAST PROGRAM \r
+       HLRS    PRGPTR          ;REINITIALIZE POINTER\r
+       PUSHJ   PP,PSEND5       ;READ BACK FIRST PROGRAM\r
+       JRST    PASS20\r
+\f;HERE TO SAVE AND RESTORE SYMBOL TABLE, TITLE AND OTHER USEFUL LOCATIONS\r
+       XTRA==4                 ;NUMBER OF OTHER LOCATIONS TO SAVE\r
+\r
+PSEND4:        MOVE    V,FREE          ;GET  NEXT FREE LOCATION\r
+       ADDI    V,LENGTH+.TBUF/5+XTRA\r
+       CAML    V,SYMBOL        ;WILL WORST CASE FIT?\r
+       PUSHJ   PP,XCEED        ;NO, EXPAND\r
+       MOVS    V,FREE\r
+       HRR     V,PRGPTR        ;LAST PRGEND BLOCK\r
+       HLRM    V,(V)           ;LINK THIS BLOCK\r
+       SKIPN   PRGPTR          ;IF FIRST TIME\r
+       HLLZM   V,PRGPTR        ;SET LINK TO START OF CHAIN\r
+       HLRM    V,PRGPTR        ;POINTER TO IT\r
+       SETZM   @FREE           ;CLEAR LINK WORD\r
+       AOS     FREE            ;THIS LOCATION USED NOW\r
+       MOVS    AC0,SYMBOL      ;BOTTOM OF SYMBOL TABLE\r
+       HRR     AC0,FREE        ;FREE SPACE\r
+       MOVE    V,@SYMBOL       ;GET NUMBER OF SYMBOLS\r
+       ASH     V,1             ;TWO WORDS PER SYMBOL\r
+       ADDI    V,1             ;ONE MORE FOR COUNT\r
+       ADDB    V,FREE          ;END OF TABLE WHEN MOVED\r
+       BLT     AC0,(V)         ;MOVE TABLE\r
+       HRRZ    AC0,JOBREL      ;TOP OF CORE\r
+       SUBI    AC0,1\r
+       MOVEM   AC0,SYMTOP      ;FOR NEXT SYMBOL TABLE\r
+       SUBI    AC0,LENGTH      ;LENGTH OF INITIAL SYMBOLS\r
+       MOVEM   AC0,SYMBOL      ;SET POINTER TO COUNT OF SYMBOLS\r
+       HRLI    AC0,SYMNUM      ;BLT POINTER\r
+       BLT     AC0,@SYMTOP     ;SET UP INITIAL SYMBOL TABLE\r
+       PUSHJ   PP,SRCHI        ;SET UP SEARCH POINTER\r
+       MOVEI   AC0,.TBUF       ;MAX NUMBER OF CHARS. IN TITLE\r
+       SUB     AC0,TCNT        ;ACTUAL NUMBER\r
+       IDIVI   AC0,5           ;NUMBER OF WORDS\r
+       SKIPE   AC1             ;REMAINDER?\r
+       ADDI    AC0,1           ;YES\r
+       MOVEM   AC0,@FREE       ;STORE COUNT\r
+       AOS     FREE            ;THIS LOCATION USED NOW\r
+       EXCH    AC0,FREE        ;SET UP AC0 FOR BLT\r
+       ADDM    AC0,FREE        ;WILL BE AFTER TITLE MOVES\r
+       HRLI    AC0,TBUF        ;BLT POINTER\r
+       BLT     AC0,@FREE       ;MOVE TITLE\r
+       MOVE    AC2,LITHDX      ;POINTER TO LIT INFO.\r
+       MOVE    AC0,-1(AC2)     ;SIZE OF PASS1 LOCO\r
+       PUSHJ   PP,STORIT       ;SAVE IT IN SYMBOL TABLE\r
+       MOVE    AC2,VARHDX      ;SAME FOR VARS\r
+       MOVE    AC0,-1(AC2)\r
+       PUSHJ   PP,STORIT\r
+IFN RENTSW,<\r
+       MOVE    AC0,HISNSW      ;GET TWOSEG/HISEG FLAG\r
+       HRR     AC0,HIGH1       ;AND PASS1 BREAK\r
+       PUSHJ   PP,STORIT\r
+       JUMPGE  AC0,PSEND6      ;NOT TWOSEG\r
+       MOVE    AC0,SVTYP3      ;HIGH SEGMENT OFFSET\r
+       PUSHJ   PP,STORIT       ;SAVE IT ALSO>\r
+PSEND6:        MOVE    AC0,FREE        ;GET NEXT FREE LOCATION\r
+       SUBI    AC0,1           ;LAST ONE USED\r
+       HRRZ    V,PRGPTR        ;POINTER TO START OF DATA BLOCK\r
+       HRLM    AC0,(V)         ;LINK TO END OF BLOCK\r
+       POPJ    PP,             ;RETURN\r
+\r
+\fPSENDX:       PUSHJ   PP,XCEED        ;NEED TO EXPAND CORE FIRST\r
+PSEND5:        HRRZ    AC0,JOBREL      ;GET TOP OF CORE\r
+       SUBI    AC0,1\r
+       MOVEM   AC0,SYMTOP      ;TOP OF NEW SYMBOL TABLE\r
+       HRRZ    V,PRGPTR        ;ADDRESS OF THIS BLOCK\r
+       JUMPE   V,PSNDER        ;ERROR LINK NOT SET UP\r
+       MOVE    AC1,(V)         ;NEXT LINK\r
+       MOVE    V,1(V)          ;GET ITS SYMBOL COUNT\r
+       ASH     V,1             ;NUMBER OF WORDS\r
+       ADDI    V,1             ;PLUS ONE FOR COUNT\r
+       SUBI    AC0,(V)         ;START OF NEW SYMBOL TABLE\r
+       CAMG    AC0,FREE        ;WILL IT FIT\r
+       JRST    PSENDX          ;NO, NEED TO EXPAND AND RESET AC0\r
+       ADD     V,PRGPTR        ;POINT TO END OF SYMBOL TABLE\r
+       MOVEI   V,1(V)          ;THEN TO BEG OF TITLE\r
+       MOVEM   AC0,SYMBOL      ;BOTTOM OF NEW TABLE\r
+       HRL     AC0,PRGPTR      ;ADDRESS OF FIRST WORD OF BLOCK\r
+       ADD     AC0,[1,,0]      ;MAKE BLT POINTER\r
+       HRRM    AC1,PRGPTR      ;POINT TO NEXT BLOCK\r
+       BLT     AC0,@SYMTOP     ;MOVE TABLE\r
+       PUSHJ   PP,SRCHI        ;SET UP POINTER\r
+       MOVE    AC1,(V)         ;NUMBER OF WORDS OF TITLE\r
+       MOVEI   AC0,1(V)        ;START OF STORED TITLE\r
+       ADD     V,AC1           ;INCREMENT PAST TITLE\r
+       ADDI    AC1,TBUF-1      ;END OF TITLE\r
+       HRLI    AC0,TBUF        ;WHERE TO PUT IT\r
+       MOVSS   AC0             ;BLT POINTER\r
+       BLT     AC0,(AC1)       ;MOVE TITLE\r
+       TLO     IO,IOTLSN       ;SET AS IF TITLE SEEN\r
+       MOVE    AC2,LITHDX      ;INVERSE OF ABOVE\r
+       PUSHJ   PP,GETIT\r
+       MOVEM   AC0,-1(AC2)\r
+       MOVE    AC2,VARHDX      ;SAME FOR VARS\r
+       PUSHJ   PP,GETIT\r
+       MOVEM   AC0,-1(AC2)\r
+IFN RENTSW,<\r
+       PUSHJ   PP,GETIT        ;GET TWO HALF WORDS\r
+       HRRZM   AC0,HIGH1       ;PASS1 BREAK\r
+       HLLEM   AC0,HISNSW      ;TWOSEG/HISEG FLAG\r
+       JUMPGE  AC0,CPOPJ       ;NOT TWOSEG\r
+       PUSHJ   PP,GETIT\r
+       MOVEM   AC0,SVTYP3      ;BLOCK 3 WORD>\r
+       POPJ    PP,\r
+\r
+STORIT:        MOVEM   AC0,@FREE       ;STORE IT IN DATA BLOCK\r
+       AOS     FREE            ;ADVANCE POINTER\r
+       POPJ    PP,\r
+\r
+GETIT: MOVE    AC0,1(V)        ;FILL AC0 OUT OF PRGEND BLOCK\r
+       AOJA    V,CPOPJ         ;INCREMENT AND RETURN\r
+\r
+PSNDER:        HRROI   RC,[SIXBIT      /PRGEND ERROR @/]\r
+       JRST    ERRFIN\r
+\f;MULTIPLE SYMBOL TABLE FEATURE PSEUDO-OPS\r
+\r
+IFN UNIVR,<\r
+UNIV0: JUMP2   TITLE0          ;DO IT ALL ON PASS 1\r
+       HRRZ    SX,UNIVNO       ;GET NUMBER OF UNIVERSALS SEEN\r
+       CAIL    SX,.UNIV        ;ALLOW ONE MORE?\r
+       JRST    UNVERR          ;NO, GIVE FATAL ERROR\r
+       AOS     UNIVNO          ;ONE MORE NOW\r
+       SETOM   UNIVSN          ;AND SET SEEN A UNIVERSAL\r
+       JRST    TITLE0          ;CONTINUE AS IF TITLE\r
+\r
+\r
+ADDUNV:        PUSH    PP,RC           ;AN AC TO USE\r
+       PUSHJ   PP,NOUT         ;CONVERT TO SIXBIT\r
+       HRRZ    RC,UNIVNO       ;GET ENTRY INDEX\r
+       MOVEM   AC0,UNITBL(RC)  ;STORE SIXBIT NAME IN TABLE\r
+       HRRZS   UNIVSN          ;ONLY DO IT ONCE\r
+       POP     PP,RC           ;RESTORE RC\r
+       POPJ    PP,             ;AND RETURN\r
+\r
+UNVERR:        HRROI   RC,[SIXBIT /TOO MANY UNIVERSALS@/]\r
+       JRST    ERRFIN\r
+\r
+UNISYM:        HRRZ    AC0,FREE        ;GET HIGHEST FREE LOCATION\r
+       MOVEM   AC0,JOBFF       ;INTO JOBFF\r
+       PUSHJ   PP,SUPRSA       ;TURN ON SUPPRESS BIT\r
+       PUSH    PP,SYMBOL       ;NEED TO SAVE INCASE PRGEND\r
+       MOVE    AC0,SYMTOP      ;TOP OF TABLE\r
+       SUB     AC0,SYMBOL      ;GET LENGTH OF TABLE\r
+       HRL     ARG,SYMBOL      ;BOTTOM OF TABLE\r
+       HRR     ARG,JOBFF       ;WHERE TO GO\r
+       HRRZ    RC,UNIVNO       ;GET TABLE INDEX\r
+       HRRM    ARG,SYMBOL      ;WILL BE THERE SOON\r
+       HRRZM   ARG,UNIPTR(RC)  ;STORE IN CORRESPONDING PLACE\r
+       ADDB    AC0,JOBFF       ;WHERE TO END\r
+       HRLM    AC0,UNIPTR(RC)  ;SAVE NEW SYMTOP\r
+       BLT     ARG,@JOBFF      ;MOVE TABLE\r
+       HRRZM   AC0,UNITOP      ;SAVE TOP OF TABLES+1\r
+       CAMLE   AC0,MACSIZ      ;IN CASE OVER A K BOUND\r
+       MOVEM   AC0,MACSIZ      ;DON'T REDUCE SO FAR NOW\r
+       MOVEM   AC0,FREE        ;JUST IN CASE IN MACRO\r
+       MOVE    AC0,SRCHX       ;SAVE OLD SEARCH POINTER\r
+       PUSHJ   PP,SRCHI        ;GET SEARCH POINTER\r
+       EXCH    AC0,SRCHX\r
+       MOVEM   AC0,UNISHX(RC)  ;SAVE IT\r
+       SETZM   UNIVSN          ;CLEAR FLAG INCASE PRGEND\r
+       POP     PP,SYMBOL       ;RESTORE OLD VALUE\r
+       POPJ    PP,             ;RETURN\r
+\r
+\fSERCH0:       PUSHJ   PP,GETSYM       ;GET A SYMBOL\r
+       JRST    ERRAX           ;ERROR IF NOT VALID\r
+       MOVEI   RC,1            ;START AT ENTRY ONE\r
+       CAIL    RC,.UNIV        ;CHECK FOR CONSISTENCY ERROR\r
+       JRST    SCHERR          ;CANNOT FIND THIS ONE\r
+       CAME    AC0,UNITBL(RC)  ;LOOK FOR MATCH\r
+       AOJA    RC,.-3          ;NOT FOUND YET\r
+       MOVE    AC0,RC          ;STORE TABLE ENTRY NUMBER\r
+       MOVEI   RC,1            ;START AT ENTRY ONE\r
+       CAIL    RC,.UNIV        ;CHECK FOR CONSISTENCY ERROR\r
+       JRST    SCHERR          ;SHOULD NEVER HAPPEN!!\r
+       SKIPE   UNISCH(RC)      ;LOOK FOR AN EMPTY SLOT\r
+       AOJA    RC,.-3          ;NOT FOUND YET\r
+       MOVEM   AC0,UNISCH(RC)  ;STORE INDEX IN TABLE\r
+       JUMPCM  SERCH0          ;LOOK FOR MORE NAMES\r
+       POPJ    PP,             ;FINISHED\r
+\r
+SCHERR:        MOVSI   RC,[SIXBIT /CANNOT FIND UNIVERSAL@/]\r
+       JRST    ERRFIN          ;NAME IN AC0\r
+\r
+;MESSAGE FOR CASE WHERE FILES AFTER UNIVERSAL USED MORE BUFFER SPACE THAN FIRST UNIVERSAL\r
+UNIERR:        HRROI   RC,[SIXBIT /UNIVERSAL PROGRAM(S) MUST HAVE SAME OUTPUT SPECIFICATION AS OTHER FILES@/]\r
+       JRST    ERRFIN\r
+>\r
+\fSUBTTL        MACRO/REPEAT HANDLERS\r
+\r
+REPEA0:        PUSHJ   PP,EVALXQ       ;EVALUATE REPEAT EXP, EXTERNS ARE ILL.\r
+       JUMPNC  ERRAX\r
+\r
+REPEA1:        JUMPLE  AC0,REPZ        ;PASS THE EXP., DONT PROCESS\r
+       SOJE    AC0,REPO        ;REPEAT ONCE\r
+REPEA2:        PUSHJ   PP,GCHARQ       ;GET STARTING "<"\r
+       CAIE    C,"<"\r
+       JRST    REPEA2\r
+       PUSHJ   PP,SKELI1       ;INITIALIZE SKELETON\r
+       PUSH    MP,REPEXP\r
+       MOVEM   AC0,REPEXP\r
+       PUSH    MP,REPPNT       ;STACK PREVIOUS REPEAT POINTER\r
+       MOVEM   ARG,REPPNT      ;STORE NEW POINTER\r
+       TDZA    SDEL,SDEL       ;YES, INITIALIZE BRACKET COUNT AND SKIP\r
+\r
+REPEA4:        PUSHJ   PP,WCHARQ       ;WRITE A CHARACTER\r
+       PUSHJ   PP,GCHARQ       ;GET A CHARACTER\r
+       CAIN    C,"<"           ;"<"?\r
+       AOJA    SDEL,REPEA4     ;YES, INCREMENT AND WRITE\r
+       CAIE    C,">"           ;">"?\r
+       JRST    REPEA4          ;NO, WRITE THE CHARACTER\r
+       SOJGE   SDEL,REPEA4     ;YES, WRITE IF NON-NEGATIVE COUNT\r
+       MOVSI   CS,(BYTE (7) 177,3)     ;SET "REPEAT" END\r
+       PUSHJ   PP,WWRXE        ;WRITE END\r
+       SKIPN   LITLVL          ;LITERAL MIGHT END ON LINE\r
+       SKIPE   MACLVL          ;IF IN MACRO DARE NOT PROCESS\r
+       JRST    .+3             ;REST OF LINE SINCE MACRO MIGHT END ON IT\r
+       PUSHJ   PP,BYPASS       ;BYPASS\r
+       PUSHJ   PP,STOUTS       ;POLISH OF LINE BEFORE PROCESSING REPEAT\r
+       PUSH    MP,MRP          ;STACK PREVIOUS READ POINTER\r
+       PUSH    MP,RCOUNT       ;SAVE WORD COUNT\r
+       HRRZ    MRP,REPPNT      ;SET UP READ POINTER\r
+       SKIPN   MACLVL          ;IF IN MACRO GIVE CR-LF FIRST\r
+       SKIPE   LITLVL          ;SAME FOR LITERAL\r
+       JRST    REPEA7\r
+       AOJA    MRP,POPOUT      ;BYPASS ARG COUNT\r
+\r
+REPEA7:        HRRZ    MRP,REPPNT      ;SET UP READ POINTER\r
+       ADDI    MRP,1           ;BYPASS ARG COUNT\r
+REPEA8:        MOVEI   C,CR\r
+       JRST    RSW1\r
+\r
+REPEND:        SOSL    REPEXP\r
+       JRST    REPEA7\r
+       HRRZ    V,REPPNT        ;GET START OF TREE\r
+       PUSHJ   PP,REFDEC       ;DECREMENT REFERENCE\r
+       POP     MP,RCOUNT\r
+       POP     MP,MRP\r
+       POP     MP,REPPNT\r
+       POP     MP,REPEXP\r
+       SKIPN   LITLVL          ;IF IN LITERAL OR\r
+       SKIPE   MACLVL          ;IF IN MACRO\r
+       JRST    RSW0            ;FINISH OF LINE NOW\r
+       JRST    REPEA8\r
+\r
+\fREPZ: MOVE SDEL,SEQNO2        ;SAVE IN CASE OF END OF FILE\r
+       MOVEM SDEL,REPSEQ\r
+       MOVE SDEL,PAGENO\r
+       MOVEM SDEL,REPPG\r
+       SETOM INREP\r
+       MOVEI SDEL,0    ;SET COUNT\r
+REPZ1: PUSHJ   PP,GCHAR        ;GET NEXT CHARACTER\r
+       CAIN    C,"<"           ;"<"?\r
+       AOJA    SDEL,REPZ1      ;YES, INCREMENT COUNT\r
+       CAIN    C,">"           ;">"?\r
+       SOJLE   SDEL,REPZ2      ;YES, EXIT IF MATCHING\r
+       JRST    REPZ1           ;NO, RECYCLE\r
+REPZ2: SETZM   INREP   ;FLAG OUT OF IT\r
+       SETZM   INCND   ;AND CONDITIONAL ALSO\r
+       JRST    STMNT   ;AND EXIT\r
+\r
+REPO:  PUSHJ   PP,GCHAR        ;GET "<"\r
+       CAIE    C,"<"\r
+       JRST    REPO\r
+       SKIPE   RPOLVL          ;ARE WE NESTED?\r
+       AOS     RPOLVL          ;YES, DECREMENT CURRENT\r
+       PUSH    MP,RPOLVL\r
+       SETOM   RPOLVL\r
+       JRST    STMNT\r
+\r
+REPO1: CAIN    C,"<"\r
+       SOS     RPOLVL\r
+       CAIN    C,">"\r
+       AOSE    RPOLVL\r
+       JRST    RSW2\r
+       POP     MP,RPOLVL\r
+       PUSHJ   PP,RSW2\r
+       JRST    RSW0\r
+\fDEFIN0:       PUSHJ   PP,GETSYM       ;GET MACRO NAME\r
+       JRST    ERRAX           ;EXIT ON ERROR\r
+       MOVEM   PP,PPTMP1       ;SAVE POINTER\r
+       MOVEM   AC0,PPTMP2      ;SAVE NAME\r
+       TLO     IO,IORPTC\r
+       MOVE SX,SEQNO2  ;SAVE IN CASE OF EOF\r
+       MOVEM SX,DEFSEQ\r
+       MOVE SX,PAGENO\r
+       MOVEM SX,DEFPG\r
+       SETOM INDEF     ;AND FLAG IN DEFINE\r
+       SYN     .TEMP,COMSW     ;SAVE SPACE\r
+       SETZB   SX,COMSW        ;SET ARGUMENT AND REFERENCE COUNT AND COMMENT SWITCH\r
+DEF02: PUSHJ   PP,GCHAR        ;SEARCH FOR "(" OR "<"\r
+       CAIG    C,FF            ;SEARCH FOR END OF LINE\r
+       CAIGE   C,LF            ;LF,VT, OR FF\r
+       JRST    .+2             ;WASN'T ANY OF THEM\r
+       SETZM   COMSW           ;RESET COMMENT SWITCH\r
+       CAIN    C,";"           ;COMMENT?\r
+       SETOM   COMSW           ;YES, SET COMMENT SWITCH\r
+       SKIPE   COMSW           ;INSIDE A COMMENT?\r
+       JRST    DEF02           ;YES, IGNORE CHARACTER\r
+       CAIN    C,"<"           ;"<"?\r
+       JRST    DEF20           ;YES\r
+       CAIE    C,"("           ;"("?\r
+       JRST    DEF02           ;NO\r
+DEF10: PUSHJ   PP,GETSYM       ;YES, GET DUMMY SYMBOL\r
+       TRO     ER,ERRA         ;FLAG ERROR\r
+       ADDI    SX,1            ;INCREMENT ARG COUNT\r
+       PUSH    PP,AC0          ;STACK IT\r
+       CAIN    C,'<'           ;A DEFAULT ARGUMENT COMING UP?\r
+       JRST    DEF80           ;YES, STORE IT AWAY\r
+       CAIE    C,11            ;")"?\r
+       JRST    DEF10           ;NO, GET NEXT DUMMY SYMBOL\r
+DEF12: PUSHJ   PP,GCHAR\r
+       CAIE    C,"<"           ;"<"?\r
+       JRST    DEF12           ;NO\r
+DEF20: PUSH    PP,[0]          ;YES, MARK THE LIST\r
+       LSH     SX,9            ;SHIFT ARG COUNT\r
+       AOS     ARG,SX\r
+       PUSHJ   PP,SKELI        ;INITIALIZE MACRO SKELETON\r
+       MOVE    AC0,PPTMP2      ;GET NAME\r
+       TLO IO,DEFCRS\r
+       PUSHJ   PP,MSRCH        ;SEARCH THE TABLE\r
+       JRST    DEF24           ;NOT FOUND\r
+       TLNN    ARG,MACF        ;FOUND, IS IT A MACRO?\r
+       TROA    ER,ERRX         ;NO, FLAG ERROR AND SKIP\r
+       PUSHJ   PP,REFDEC       ;YES, DECREMENT THE REFERENCE\r
+DEF24: HRRZ    V,WWRXX         ;GET START OF TREE\r
+       SKIPN   .TEMP           ;ANY DEFAULT ARGUMENTS TO TAKE CARE OF?\r
+       JRST    DEF25           ;NO\r
+       HRRZ    C,1(V)          ;GET SHIFTED ARG COUNT\r
+       LSH     C,-9            ;GET ARG COUNT BACK\r
+       ADDI    C,1             ;ONE MORE FOR TERMINAL ZERO\r
+       ADD     C,.TEMP         ;NUMBER OF ITEMS IN STACK\r
+       HRLS    C               ;MAKE XWD\r
+       SUB     PP,C            ;BACK UP STACK\r
+       MOVE    SDEL,.TEMP      ;NUMBER OF WORDS NEEDED\r
+       ADDB    SDEL,FREE       ;FROM FREE CORE\r
+       CAML    SDEL,SYMBOL     ;MORE CORE NEEDED\r
+       PUSHJ   PP,XCEEDS       ;YES, TRY TO GET IT\r
+       SUB     SDEL,.TEMP      ;FORM POINTER\r
+       HRLM    SDEL,1(V)       ;STORE IT WITH ARG COUNT IN MACRO\r
+       SUBI    SDEL,1          ;TO USE FOR PUSHING POINTER INTO STORAGE\r
+       MOVEI   C,1(PP)         ;POINT TO START OF STACK\r
+DEF26: MOVE    ARG,(C)         ;GET AN ITEM OFF STACK\r
+       TLNN    ARG,-40         ;A POINTER?\r
+       JUMPN   ARG,[PUSH SDEL,ARG      ;YES, STORE IT\r
+\f              AOJA    C,DEF26]        ;GET NEXT\r
+       PUSH    PP,ARG          ;RESTACK ARGUMENT\r
+       SKIPE   ARG             ;FINISHED IF ZERO\r
+       AOJA    C,DEF26 ;GET NEXT\r
+       PUSH    SDEL,ARG        ;STORE ZERO IN DEFAULT LIST ALSO\r
+\fDEF25:        MOVSI   ARG,MACF\r
+       MOVEM   PP,PPTMP2       ;STORE TEMP STORAGE POINTER\r
+       PUSHJ   PP,INSERT       ;INSERT/UPDATE\r
+       TLZ IO,DEFCRS   ;JUST IN CASE\r
+       SETZM   ARGF            ;NO ARGUMENT SEEN\r
+       SETZM   SQFLG           ;AND NO ' SEEN\r
+       TDZA    SDEL,SDEL       ;CLEAR BRACKET COUNT\r
+DEF30: PUSHJ   PP,WCHAR        ;WRITE CHARACTER\r
+DEF31: PUSHJ   PP,GCHAR        ;GET A CHARACTER\r
+DEF32: MOVE    CS,C            ;GET A COPY\r
+       CAIN    C,";"           ;IS IT A COMMENT\r
+       JRST    CPEEK           ;YES CHECK FOR ;;\r
+DEF33: CAIG CS,"Z"+40          ;CONVERT LOWER CASE\r
+       CAIGE CS,"A"+40\r
+       JRST    .+2\r
+       SUBI CS,40\r
+\f      CAIGE CS,40             ;TEST FOR CONTROL CHAR.\r
+       JRST    [SKIPN  SQFLG   ;HAS SINGLE QUOTE BEEN SEEN?\r
+               JRST    DEF30   ;NO, OUTPUT THIS CHAR.\r
+               PUSH    PP,C    ;YES, SAVE CURRENT CHAR\r
+               MOVEI   C,47    ;SET UP QUOTE\r
+               PUSHJ   PP,WCHAR;WRITE IT\r
+               POP     PP,C    ;GET BACK CURRENT CHAR.\r
+               SETZM   SQFLG   ;RESET FLAG\r
+               JRST    DEF30]  ;AND CONTINUE \r
+       CAILE CS,77+40\r
+       JRST    DEF30           ;TEST FOR SPECIAL\r
+       MOVE    CS,CSTAT-40(CS) ;GET STATUS BITS\r
+\f      TLNE    CS,6            ;ALPHA-NUMERIC?\r
+       JRST    DEF40           ;YES\r
+       SKIPN   SQFLG           ;WAS A ' SEEN?\r
+       JRST    DEF36           ;NO, PROCESH\r
+       PUSH    PP,C            ;YES, SAVE CURRENT CHARACTER\r
+       MOVEI   C,47            ;AND PUT IN A '\r
+       PUSHJ   PP,WCHAR        ;...\r
+       POP     PP,C            ;RESTORE CURRENT CHARACTER\r
+       SETZM   SQFLG           ;AND RESET FLAG\r
+DEF36: CAIE    C,47            ;IS THIS A '?\r
+       JRST    DEF35           ;NOPE\r
+       SKIPN   ARGF            ;YES, WAS LAST THING SEEN AN ARG?\r
+       SETOM   SQFLG           ;IF NOT, SET SNGL QUOT FLAG\r
+       SETZM   ARGF            ;BUT NOT ARGUMENT IN ANY CASE\r
+       JRST    DEF31           ;GO GET NEXT CHARACTER\r
+\fDEF35:        SETZM   ARGF            ;THIS IS NOT AN ARGUMENT\r
+       CAIN    C,"<"           ;"<"?\r
+       AOJA    SDEL,DEF30      ;YES, INCREMENT COUNT AND WRITE\r
+       CAIN    C,">"           ;">"?\r
+       SOJL    SDEL,DEF70      ;YES, TEST FOR END\r
+       JRST    DEF30           ;NO, WRITE IT\r
+\r
+CPEEK: TLNN    IO,IOPALL       ;IF LALL IS ON\r
+       JRST    DEF33           ;JUST RETURN\r
+       PUSHJ   PP,PEEK         ;LOOK AT NEXT CHAR.\r
+       CAIN    C,";"           ;IS IT ;;?\r
+       JRST    CPEEK1          ;YES\r
+       MOVE    C,CS            ;RESTORE C\r
+       JRST    DEF33           ;AND RETURN\r
+\r
+CPEEK1:        PUSHJ   PP,GCHAR        ;GET THE CHAR.\r
+       CAIE    C,">"           ;RETURN IF END OF MACRO\r
+       CAIG    C,CR            ;IS CHAR ONE OF\r
+       CAIGE   C,LF            ;LF,VT,FF,CR\r
+       JRST    CPEEK1          ;NO,SO GET NEXT CHAR.\r
+       JRST    DEF32           ;YES,RETURN AND STORE\r
+\fDEF40:        MOVEI   AC0,0           ;CLEAR ATOM\r
+       MOVSI   AC1,(POINT 6,AC0)       ;SET POINTER\r
+DEF42: PUSH    PP,C            ;STACK CHARACTER\r
+       TLNE    AC1,770000      ;HAVE WE STORED 6?\r
+       IDPB    CS,AC1          ;NO, STORE IN ATOM\r
+       PUSHJ   PP,GCHAR        ;GET NEXT CHARACTER\r
+       MOVE    CS,C\r
+       CAIG CS,"Z"+40\r
+       CAIGE CS,"A"+40\r
+       JRST    .+2\r
+       SUBI CS,40              ;CONVERT LOWER TO UPPER\r
+       CAIL CS,40\r
+       CAILE CS,77+40\r
+       JRST    DEF44           ;TEST SPECIAL\r
+       MOVE    CS,CSTAT-40(CS) ;GET STATUS\r
+       TLNE    CS,6            ;ALPHA-NUMERIC?\r
+       JRST    DEF42           ;YES, GET ANOTHER\r
+DEF44: PUSH    PP,[0]          ;NO, MARK THE LIST\r
+       MOVE    SX,PPTMP1       ;GET POINTER TO TOP\r
+\r
+DEF46: SKIPN   1(SX)           ;END OF LIST?\r
+       JRST    DEF50           ;YES\r
+       CAME    AC0,1(SX)       ;NO, DO THEY COMPARE?\r
+       AOJA    SX,DEF46        ;NO, TRY AGAIN\r
+       SUB     SX,PPTMP1       ;YES, GET DUMMY SYMBOL NUMBER\r
+       LSH SX,4\r
+       MOVSI   CS,<(BYTE (7) 177,101)>(SX)     ;SET ESCAPE CODE MACEND\r
+       LSH     AC0,-^D30\r
+       CAIN    AC0,5           ;"%"?\r
+       TLO     CS,1000         ;YES, SET CRESYM FLAG\r
+       PUSHJ   PP,WWORD        ;WRITE THE WORD\r
+       SETOM ARGF              ;SET ARGUMENT SEEN FLAG\r
+       SETZM SQFLG             ;AND IGNORE ANY ' WAITING TO GET INTO STRING\r
+DEF48: MOVE    PP,PPTMP2       ;RESET PUSHDOWN POINTER\r
+       TLO     IO,IORPTC       ;ECHO LAST CHARACTER\r
+       JRST    DEF31           ;RECYCLE\r
+\r
+DEF50:\r
+       SKIPN   SQFLG           ;HAVE WE SEEN A '?\r
+       JRST    DEF51           ;NOPE\r
+       MOVEI   C,47            ;YES, PUT IT IN\r
+       PUSHJ   PP,WCHAR        ;...\r
+       SETZM   SQFLG           ;AND CLEAR FLAG\r
+DEF51: MOVE    C,2(SX)         ;GET CHARACTER\r
+       JUMPE   C,DEF48         ;CLEAN UP IF END\r
+       PUSHJ   PP,WCHAR        ;WRITE THE CHARACTER\r
+       AOJA    SX,DEF51        ;GET NEXT\r
+\r
+DEF70: MOVE    PP,PPTMP1       ;RESTORE PUSHDOWN POINTER\r
+       MOVSI   CS,(BYTE (7) 177,1)\r
+       PUSHJ   PP,WWRXE        ;WRITE END\r
+       SETZM INDEF     ;OUT OF IT\r
+       JRST    BYPASS\r
+\f; HERE TO STORE DEFAULT ARGUMENTS\r
+\r
+DEF80: AOS     .TEMP           ;COUNT ONE MORE\r
+       PUSHJ   PP,SKELI1       ;INITIALIZE SKELETON\r
+       HRL     V,SX            ;SYMBOL NUMBER\r
+       PUSH    PP,V            ;STORE POINTER\r
+       TDZA    SDEL,SDEL       ;ZERO BRACKET COUNT\r
+DEF81: PUSHJ   PP,WCHARQ       ;WRITE A CHARACTER\r
+       PUSHJ   PP,GCHARQ       ;GET A CHARACTER\r
+       CAIN    C,"<"           ;ANOTHER "<"?\r
+       AOJA    SDEL,DEF81      ;YES, INCREMENT AND WRITE\r
+       CAIE    C,">"           ;CLOSING ANGLE?\r
+       JRST    DEF81           ;NO, JUST WRITE THE CHAR.\r
+       SOJGE   SDEL,DEF81      ;YES, WRITE IF NOT END\r
+       MOVSI   CS,(BYTE (7) 177,2)\r
+       PUSHJ   PP,WWRXE        ;WRITE END OF DUMMY ARGUMENT\r
+       PUSHJ   PP,GCHAR        ;READ AT NEXT CHAR.\r
+       CAIE    C,")"           ;END OF ARGUMENT LIST?\r
+       JRST    DEF10           ;NO, GET NEXT SYMBOL\r
+       JRST    DEF12           ;YES, LOOK FOR "<"\r
+\fSUBTTL        MACRO CALL PROCESSOR\r
+CALLM: SKIPGE  MACENL          ;ARE WE TRYING TO RE-ENTER?\r
+       JRST    ERRAX           ;YES, BOMB OUT WITH ERROR\r
+       HRROS   MACENL          ;FLAG "CALLM IN PROGRESS"\r
+       EXCH    MP,RP\r
+       PUSH    MP,V            ;STACK FOR REFDEC\r
+       EXCH    MP,RP\r
+       MOVEM   AC0,CALNAM      ;SAVE MACRO NAME INCASE OF ERROR\r
+       MOVE SDEL,SEQNO2        ;SAVE IN CASE OF EOF\r
+       MOVEM SDEL,CALSEQ\r
+       MOVE SDEL,PAGENO\r
+       MOVEM SDEL,CALPG\r
+       ADDI    V,1             ;POINT TO DUMMY SYMBOL COUNT\r
+       AOS     SDEL,0(V)       ;INCREMENT ARG COUNT\r
+       HLLZM   SDEL,.TEMP      ;DEFAULT ARG POINTER IF NON-ZERO\r
+       LSHC    SDEL,-^D<9+36>  ;ZERO SDEL, GET ARG COUNT IN SX\r
+       ANDI    SX,777          ;MASK\r
+       SKIPE   .TEMP           ;IF AT LEAST ONE DEFAULT ARG\r
+       HRRM    SX,.TEMP        ;STORE COUNT OF ARGS\r
+       PUSH    PP,V            ;STACK FOR MRP\r
+       PUSH    PP,RP           ;STACK FOR MACPNT\r
+       JUMPE   SX,MAC20        ;TEST FOR NO ARGS\r
+       PUSHJ   PP,CHARAC\r
+       CAIE    C,"("           ;"("\r
+       TROA    SDEL,-1         ;NO, FUDGE PAREN COUNT AND SKIP\r
+\r
+MAC10: PUSHJ   PP,GCHAR        ;GET A CHARACTER, LOOK FOR AN ARG\r
+       CAIG C,CR\r
+       CAIGE C,LF\r
+       CAIN    C,";"           ;";"?\r
+       JRST    MAC21           ;YES, END OF ARGUMENT STRING\r
+\r
+       PUSHJ   PP,SKELI1       ;NO, INITIALIZE SKELETON\r
+       CAIN    C,"<"           ;"<"?\r
+       JRST    MAC30           ;YES, PROCESS AS SPECIAL\r
+       CAIE C,176\r
+       CAIN    C,134           ;"\"\r
+       JRST    MAC40           ;YES, PROCESS SYMBOL\r
+\r
+MAC14: CAIN    C,","           ;","?\r
+       JRST    MAC16           ;YES; NULL SYMBOL\r
+       CAIN    C,"("           ;"("?\r
+       ADDI    SDEL,1          ;YES, INCREMENT COUNT\r
+       CAIN    C,")"           ;")"?\r
+       SOJL    SDEL,MAC16      ;YES, TEST FOR END\r
+       PUSHJ   PP,WCHAR        ;WRITE INTO SKELETON\r
+MAC14A:        PUSHJ   PP,CHARAC       ;GET NEXT CHARACTER\r
+       CAIG C,CR\r
+       CAIGE C,LF\r
+       JRST    .+2\r
+       JRST    MAC15           ;TEST FOR END OF LINE\r
+       CAIE    C,";"           ;";"?\r
+       JRST    MAC14           ;YES, END OF LINE\r
+\r
+MAC15: TLO     IO,IORPTC\r
+MAC16: MOVSI   CS,(BYTE (7) 177,2)\r
+       PUSHJ   PP,WWRXE        ;WRITE END\r
+       EXCH    MP,RP\r
+       PUSH    MP,WWRXX\r
+       EXCH    MP,RP\r
+       SOJLE   SX,MAC20        ;BRANCH IF NO MORE ARGS\r
+       JUMPGE  SDEL,MAC10      ;HAVEN'T SEEN TERMINAL ")" YET\r
+\fMAC20:        TLZN    IO,IORPTC\r
+       PUSHJ   PP,CHARAC\r
+MAC21: EXCH    MP,RP\r
+       JUMPE   SX,MAC21B       ;NO MISSING ARGS\r
+MAC21A:        PUSH    MP,[-1]         ;FILL IN MISSING ARGS\r
+       SKIPN   .TEMP           ;ANY DEFAULT ARGS?\r
+       JRST    MAC21C          ;NO\r
+       HRRZ    C,.TEMP         ;GET ARG COUNT\r
+       SUBI    C,-1(SX)        ;ACCOUNT FOR THOSE GIVEN\r
+       HRLZS   C               ;PUT IN LEFT HALF\r
+       HLRZ    SDEL,.TEMP      ;ADDRESS OF TABLE\r
+MAC21D:        SKIPN   (SDEL)          ;END OF LIST\r
+       JRST    MAC21C          ;YES\r
+       XOR     C,(SDEL)        ;TEST FOR CORRECT ARG\r
+       TLNN    C,-1            ;WAS IT?\r
+       JRST    MAC21E          ;YES\r
+       XOR     C,(SDEL)        ;BACK THE WAY IT WAS\r
+       AOJA    SDEL,MAC21D     ;AND TRY AGAIN\r
+\r
+MAC21E:        MOVEM   C,(MP)          ;REPLACE -1 WITH TREE POINTER\r
+       AOS     1(C)            ;INCREMENT REFERENCE\r
+MAC21C:        SOJG    SX,MAC21A\r
+MAC21B:        PUSH    MP,[0]          ;SET TERMINAL\r
+       HRRZ    C,LIMBO\r
+       TLNN    IO,IOSALL       ;SUPPRESSING ALL?\r
+       JRST    MAC23           ;NO\r
+       JUMPN   MRP,MAC27       ;IN MACRO?\r
+       CAIE    C,";"           ;NO,IN COMMENT?\r
+       JRST    MAC26           ;NO\r
+MAC22: PUSHJ   PP,CHARAC       ;YES,GET IT INTO THE LBUF\r
+       CAIG    C,CR            ;LESS THAN CR?\r
+       CAIGE   C,LF            ;AND GREATER THAN LF?\r
+       JRST    MAC22           ;NO GET ANOTHER\r
+MAC26: HRLZI   SX,70000        ;DECREMENT BYTE POINTER\r
+       ADDB    SX,LBUFP\r
+       JUMPGE  SX,MAC27\r
+       HRLOI   SX,347777\r
+       ADDM    SX,LBUFP\r
+MAC27: HRLI    C,-1            ;SET FLAG\r
+       JRST    MAC25\r
+\r
+MAC23: MOVEI   SX,"^"\r
+       JUMPAD  MAC24           ;BRANCH IF ADDRESS FIELD\r
+       CAIN    C,";"           ;IF SEMI-COLON\r
+       SKIPE   LITLVL          ;AND NOT IN A LITERAL\r
+       JRST    MAC24           ;NOT BOTH TRUE\r
+       JUMPN   MRP,MAC24       ;OR IN A MACRO\r
+       PUSHJ   PP,STOUT        ;LIST COMMENT OR CR-LF\r
+       TLNE    IO,IOPALL       ;MACRO EXPANSION SUPPRESSION?\r
+       TLO     IO,IOMAC        ;  NO, SET TEMP BIT\r
+       TDOA    C,[-1]          ;FLAG LAST CHARACTER\r
+MAC24: DPB     SX,LBUFP        ;SET ^ INTO LINE BUFFER\r
+MAC25: PUSH    MP,MACPNT\r
+       POP     PP,MACPNT\r
+       PUSH    MP,C\r
+       PUSH    MP,RCOUNT       ;STACK WORD COUNT\r
+       PUSH    MP,MRP          ;STACK MACRO POINTER\r
+       POP     PP,MRP          ;SET NEW READ POINTER\r
+       EXCH    MP,RP\r
+       AOS     MACLVL\r
+       HRRZS   MACENL          ;RESET "CALLM IN PROGRESS"\r
+       JUMPOC  STMNT2          ;OP-CODE FIELD\r
+       JRST    EVATOM          ;ADDRESS FIELD\r
+\r
+\fMAC30:        MOVEI   AC0,0           ;INITIALIZE BRACKET COUNTER\r
+MAC31: PUSHJ   PP,GCHAR        ;GET A CHARACTER\r
+       CAIN    C,"<"           ;"<"?\r
+       ADDI    AC0,1           ;YES, INCREMENT COUNT\r
+       CAIN    C,">"           ;">"?\r
+       SOJL    AC0,MAC14A      ;YES, EXIT IF MATCHING\r
+       PUSHJ   PP,WCHAR        ;WRITE INTO SKELETON\r
+       JRST    MAC31           ;GO BACK FOR ANOTHER\r
+\r
+MAC40: PUSH    PP,SX           ;STACK REGISTERS\r
+       PUSH    PP,SDEL\r
+       HLLM    IO,TAGINC       ;SAVE IO FLAGS\r
+       PUSHJ   PP,CELL         ;GET AN ATOM\r
+       MOVE    V,AC0           ;ASSUME NUMERIC\r
+       TLNE    IO,NUMSW        ;GOOD GUESS?\r
+       JRST    MAC41           ;YES\r
+       PUSHJ   PP,SSRCH        ;SEARCH THE SYMBOL TABLE\r
+       TROA    ER,ERRX         ;NOT FOUND, ERROR\r
+MAC41: PUSHJ   PP,MAC42        ;FORM ASCII STRING\r
+       HLL     IO,TAGINC       ;RESTORE IO FLAGS\r
+       POP     PP,SDEL\r
+       POP     PP,SX\r
+       TLO     IO,IORPTC       ;REPEAT LAST CHARACTER\r
+       JRST    MAC14A          ;RETURN TO MAIN SCAN\r
+\r
+MAC42: MOVE    C,V\r
+MAC44: LSHC    C,-^D35\r
+       LSH     CS,-1\r
+       DIVI    C,0(RX)         ;DIVIDE BY CURRENT RADIX\r
+       HRLM    CS,0(PP)\r
+       JUMPE   C,.+2           ;TEST FOR END\r
+       PUSHJ   PP,MAC44\r
+       HLRZ    C,0(PP)\r
+       ADDI    C,"0"           ;FORM TEXT\r
+       JRST    WCHAR           ;WRITE INTO SKELETON\r
+\fMACEN0:       SOS     MACENL\r
+MACEND:        SKIPGE  C,MACENL        ;TEST "CALLM IN PROGRESS"\r
+       AOS     MACENL          ;INCREMENT END LEVEL AND EXIT\r
+       JUMPL   C,REPEA8\r
+       EXCH    MP,RP\r
+       POP     MP,MRP          ;RETRIEVE READ POINTER\r
+       POP     MP,RCOUNT       ;AND WORD COUNT\r
+       MOVEI   C,"^"\r
+       SKIPL   0(MP)           ;TEST FLAG\r
+       PUSHJ   PP,RSW2         ;MARK END OF SUBSTITUTION\r
+       POP     MP,C\r
+       POP     MP,ARG\r
+       SKIPA   MP,MACPNT       ;RESET MP AND SKIP\r
+MACEN1:        PUSHJ   PP,REFDEC       ;DECREMENT REFERENCE\r
+MACEN2:        AOS     V,MACPNT        ;GET POINTER\r
+       MOVE    V,0(V)\r
+       JUMPG   V,MACEN1        ;IF >0, DECREMENT REFERENCE\r
+       JUMPL   V,MACEN2        ;IF <0, BYPASS\r
+       POP     MP,V            ;IF=0, RETRIEVE POINTER\r
+       PUSHJ   PP,REFDEC       ;DECREMENT REFERENCE\r
+       MOVEM   ARG,MACPNT\r
+       EXCH    MP,RP\r
+       SOS     MACLVL\r
+       SKIPN   MACENL          ;CHECK UNPROCESSED END LEVEL\r
+       JRST    MACEN3          ;NONE TO PROCESS\r
+       TRNN    MRP,-1          ;MRP AT END OF TEXT\r
+       JRST    MACEN0          ;THEN POP THE MACRO STACK NOW\r
+MACEN3:        TRNN    C,77400         ;SALL FLAG?\r
+       HRLI    C,0             ;YES,TURN IT OFF\r
+       JUMPL   C,REPEA8        ;IF FLAG SET SUBSTITUTE\r
+       JRST    RSW1\r
+\fIRP0: SKIPN   MACLVL          ;ARE WE IN A MACRO?\r
+       JRST    ERRAX           ;NO, BOMB OUT\r
+IRP10: PUSHJ   PP,MREADS       ;YES, GET DATA SPEC\r
+       CAIE C,40               ;SKIP LEADING BLANKS\r
+       CAIN    C,"("           ;"("?\r
+       JRST    IRP10           ;YES, BYPASS\r
+       CAIN C,11\r
+       JRST IRP10\r
+       CAIE    C,177           ;NO, IS IT SPECIAL?\r
+       JRST    ERRAX           ;NO, ERROR\r
+       PUSHJ   PP,MREADS       ;YES\r
+       TRZN C,100              ;CREATED?\r
+       JRST ERRAX\r
+       CAIL C,40               ;TOO BIG?\r
+       JRST ERRAX\r
+       ADD     C,MACPNT        ;NO, FORM POINTER TO STACK\r
+       PUSH    MP,IRPCF        ;STACK PREVIOUS POINTERS\r
+       PUSH    MP,IRPSW\r
+       PUSH    MP,IRPARP\r
+       PUSH    MP,IRPARG\r
+       PUSH    MP,IRPCNT\r
+       PUSH    MP,0(C)\r
+       PUSH    MP,IRPPOI\r
+\r
+       HRRZM   C,IRPARP\r
+       MOVEM   AC0,IRPCF       ;IRPC FLAG FOUND IN AC0\r
+       SETOM   IRPSW           ;RESET IRP SWITCH\r
+       MOVE    CS,0(C)\r
+       MOVEM   CS,IRPARG\r
+\r
+       PUSHJ   PP,MREADS\r
+       CAIE    C,"<"           ;"<"?\r
+       JRST    .-2             ;NO, SEARCH UNTIL FOUND\r
+       PUSHJ   PP,SKELI1       ;INITIALIZE NEW STRING\r
+       MOVEM   ARG,IRPPOI      ;SET NEW POINTER\r
+\r
+       TDZA    SDEL,SDEL       ;ZERO BRACKET COUNT AND SKIP\r
+IRP20: PUSHJ   PP,WCHAR1\r
+       PUSHJ   PP,MREADS\r
+       CAIN    C,"<"           ;"<"?\r
+       AOJA    SDEL,IRP20      ;YES, INCREMENT COUNT AND WRITE\r
+       CAIE    C,">"           ;">"?\r
+       JRST    IRP20           ;NO, JUST WRITE IT\r
+       SOJGE   SDEL,IRP20      ;YES, WRITE IF NOT MATCHING\r
+       MOVE    CS,[BYTE (7) 15,177,4]\r
+       PUSHJ   PP,WWRXE        ;WRITE END\r
+       PUSH    MP,MRP          ;STACK PREVIOUS READ POINTER\r
+       PUSH    MP,RCOUNT       ;AND WORD COUNT\r
+       SKIPG   CS,IRPARG\r
+       JRST    IRPPOP          ;EXIT IF NOT VALID ARGUMENT\r
+       MOVEI   C,1(CS)         ;INITIALIZE POINTER\r
+       MOVEM   C,IRPARG\r
+\fIRPSET:       EXCH    MRP,IRPARG      ;SWAP READ POINTERS\r
+       MOVE    SX,RCOUNT       ;SWAP COUNT OF WORDS TO READ\r
+       EXCH    SX,IRPCNT\r
+       MOVEM   SX,RCOUNT\r
+       PUSHJ   PP,SKELI1       ;INITIALIZE SKELETON FOR DATA\r
+       HRRZM   ARG,@IRPARP     ;STORE NEW DS POINTER\r
+       SETZB   SX,SDEL         ;ZERO FOUND FLAG AND BRACKET COUNT\r
+       LDB     C,MRP           ;GET LAST CHAR\r
+       CAIN    C,","\r
+       SKIPE   IRPCF           ;IN IRPC\r
+       JRST    IRPSE1          ;NO\r
+       MOVEI   SX,1            ;FORCE ARGUMENT\r
+IRPSE1:        PUSHJ   PP,MREADS\r
+       CAIE    C,177           ;SPECIAL?\r
+       AOJA    SX,IRPSE2       ;NO, FLAG AS FOUND\r
+       PUSHJ   PP,PEEKM        ;LOOK AT NEXT CHARACTER\r
+       SETZM   IRPSW           ;SET IRP SWITCH\r
+       JUMPG   SX,IRPSE4       ;IF ARG FOUND, PROCESS IT\r
+       JRST    IRPPOP          ;NO, CLEAN UP AND EXIT\r
+\r
+IRPSE2:        SKIPE   IRPCF           ;IRPC?\r
+       JRST    IRPSE3          ;YES, WRITE IT\r
+       CAIN    C,","           ;NO, IS IT A COMMA?\r
+       JUMPE   SDEL,IRPSE4     ;YES, EXIT IF NOT NESTED\r
+       CAIN    C,"<"           ;"<"?\r
+       ADDI    SDEL,1          ;YES, INCREMENT COUNT\r
+       CAIN    C,">"           ;">"?\r
+       SUBI    SDEL,1          ;YES, DECREMENT COUNT\r
+\r
+IRPSE3:        PUSHJ   PP,WCHAR\r
+       SKIPN   IRPCF           ;IRPC?\r
+       JRST    IRPSE1          ;NO, GET NEXT CHARACTER\r
+\r
+IRPSE4:        MOVSI   CS,(BYTE (7) 177,2)\r
+       PUSHJ   PP,WWRXE        ;WRITE END\r
+       MOVEM   MRP,IRPARG      ;SAVE POINTER\r
+       MOVE    MRP,RCOUNT      ;SAVE COUNT\r
+       MOVEM   MRP,IRPCNT\r
+       HRRZ    MRP,IRPPOI      ;SET FOR NEW SCAN\r
+       AOJA    MRP,REPEA8      ;ON ARG COUNT\r
+\fSTOPI0:       SKIPN   IRPARP          ;IRP IN PROGRESS?\r
+       JRST    ERRAX           ;NO, ERROR\r
+       SETZM   IRPSW           ;YES, SET SWITCH\r
+       POPJ    PP,\r
+\r
+IRPEND:        MOVE    V,@IRPARP\r
+       PUSHJ   PP,REFDEC\r
+       SKIPE   IRPSW           ;MORE TO COME?\r
+       JRST    IRPSET          ;YES\r
+\r
+IRPPOP:        MOVE    V,IRPPOI\r
+       PUSHJ   PP,REFDEC       ;DECREMENT REFERENCE\r
+       POP     MP,RCOUNT\r
+       POP     MP,MRP          ;RESTORE CELLS\r
+       POP     MP,IRPPOI\r
+       POP     MP,@IRPARP\r
+       POP     MP,IRPCNT\r
+       POP     MP,IRPARG\r
+       POP     MP,IRPARP\r
+       POP     MP,IRPSW\r
+       POP     MP,IRPCF\r
+       JRST    REPEA8\r
+\fGETDS:                                ;GET DUMMY SYMBOL NUMBER\r
+       MOVE    CS,C            ;USE CS FOR WORK REGISTER\r
+       ANDI    CS,37           ;MASK\r
+       ADD     CS,MACPNT       ;ADD BASE ADDRESS\r
+       MOVE    V,0(CS)         ;GET POINTER FLAG\r
+       JUMPG   V,GETDS1        ;BRANCH IF POINTER\r
+       TRNN    C,40            ;NOT POINTER, SHOULD WE CREATE?\r
+       JRST    RSW0            ;NO, FORGET THIS ARG\r
+       PUSH    PP,WWRXX\r
+       PUSH    PP,MWP          ;STACK MACRO WRITE POINTER\r
+       PUSH    PP,WCOUNT       ;SAVE WORD  COUNT\r
+       PUSHJ   PP,SKELI1       ;INITIALIZE SKELETON\r
+       MOVEM   ARG,0(CS)       ;STORE POINTER\r
+       MOVE    CS,[BYTE (7) 0,170,170,170,171] ;CREATE A SYMBOL\r
+       ADD     CS,LSTSYM               ;LSTSYM= # OF LAST CREATED\r
+       TDZ     CS,[BYTE (7) 0,170,170,170,170]\r
+       MOVEM   CS,LSTSYM\r
+       IOR     CS,[ASCII /.0000/]\r
+       MOVEI C,"."\r
+       PUSHJ PP,WCHAR\r
+       PUSHJ   PP,WWORD        ;WRITE INTO SKELETON\r
+       MOVSI   CS,(BYTE (7) 177,2)\r
+       PUSHJ   PP,WWRXE        ;WRITE END CODE\r
+       POP     PP,WCOUNT       ;RESTORE WORD COUNT\r
+       POP     PP,MWP          ;RESTORE MACRO WRITE POINTER\r
+       POP     PP,WWRXX\r
+       MOVE    V,ARG           ;SET UP FOR REFINC\r
+\r
+GETDS1:        PUSHJ   PP,REFINC       ;INCREMENT REFERENCE\r
+       HRL     V,RCOUNT        ;SAVE WORD COUNT\r
+       PUSH    MP,V            ;STACK V FOR DECREMENT\r
+       PUSH    MP,MRP          ;STACK READ POINTER\r
+       MOVEI   MRP,1(V)        ;FORM READ POINTER\r
+       JRST    RSW0            ;EXIT\r
+\r
+DSEND: POP     MP,MRP\r
+       POP     MP,V\r
+       HLREM   V,RCOUNT        ;RESTORE WORD COUNT\r
+       HRRZS   V               ;CLEAR COUNT\r
+       PUSHJ   PP,REFDEC       ;DECREMENT REFERENCE\r
+       JRST    RSW0            ;EXIT\r
+\fSKELI1:       MOVEI   ARG,1           ;ENTRY FOR SINGLE ARG\r
+SKELI: SETZ    MWP,            ;SIGNAL FIRST TIME THROUGH\r
+       PUSHJ   PP,SKELWL       ;GET POINTER WORD\r
+       HRRZM   MWP,WWRXX       ;SAVE FIRST ADDRESS\r
+       HRRZM   MWP,LADR        ;SAVE START OF LINKED LIST\r
+       HRRZM   ARG,1(MWP)      ;STORE COUNT\r
+       SOS     WCOUNT          ;ACCOUNT FOR WORD\r
+       HRRZ    ARG,WWRXX       ;SET FIRST ADDRESS\r
+       ADDI    MWP,2           ;BUMP POINTER\r
+       HRLI    MWP,(POINT 7)   ;SET FOR 5 ASCII BYTES\r
+       ;SKELW RETURNS WITH ADR OF NEXT FREE LOC IN V (RIGHT)\r
+\r
+SKELW: SOSLE   WCOUNT          ;STILL SOME SPACE IN LEAF?\r
+       POPJ    PP,             ;YES, RETURN\r
+SKELWL:        SKIPE   V,NEXT          ;GET FIRST FREE ADDRESS\r
+       JRST    SKELW1          ;IF NON-ZERO, UPDATE FREE\r
+       MOVE    V,FREE          ;GET FREE\r
+       ADDI    V,.LEAF         ;INCREMENT BY LEAF SIZE\r
+       CAML    V,SYMBOL        ;OVERFLOW?\r
+       PUSHJ   PP,XCEED        ;YES, BOMB OUT\r
+       EXCH    V,FREE          ;UPDATE FREE\r
+       SETZM   (V)             ;CLEAR LINK\r
+\r
+SKELW1:        HLL     V,0(V)          ;GET ADDRESS\r
+       HLRM    V,NEXT          ;UPDATE NEXT\r
+       SKIPE   MWP             ;IF FIRST TIME\r
+       HRLM    V,1-.LEAF(MWP)  ;STORE LINK IN FIRST WORD OF LEAF\r
+       MOVEI   MWP,.LEAF       ;SIZE OF LEAF\r
+       MOVEM   MWP,WCOUNT      ;STORE FOR COUNT DOWN\r
+       MOVEI   MWP,(V)         ;SET UP WRITE POINTER\r
+       TLO     MWP,(POINT 7,,21)       ;2 ASCII CHARS\r
+       POPJ    PP,\r
+\r
+       ;WWRXX  POINTS TO END OF TREE\r
+       ;MWP    IDPB POINTER TO NEXT HOLE\r
+       ;NEXT   FIRST OF A LINKED PORTION THAT IS NOT BEING USED (LEAVES)\r
+       ;FREE   POINTS TO FREE CORE BETWEEN TREE AND SYM-TABLE\r
+       ;LADR   POINTS TO BEG OF LINKED PORTION.\r
+\fGCHARQ:       JUMPN   MRP,MREADS      ;IF GETTING CHAR. FROM TREE\r
+GCHAR: PUSHJ   PP,CHARAC       ;GET ASCII CHARACTER\r
+       CAIG    C,FF            ;TEST FOR LF, VT OR FF\r
+       CAIGE   C,LF\r
+       POPJ    PP,             ;NO\r
+       JRST    OUTIM1          ;YES, LIST IT\r
+\r
+WCHARQ:\r
+WCHAR: \r
+WCHAR1:        TLNN    MWP,760000      ;END OF WORD?\r
+       PUSHJ   PP,SKELW        ;YES, GET ANOTHER\r
+       IDPB    C,MWP           ;STORE CHARACTER\r
+       POPJ    PP,\r
+\r
+WWORD: LSHC    C,7             ;MOVE ASCII INTO C\r
+       PUSHJ   PP,WCHAR1       ;STORE IT\r
+       JUMPN   CS,WWORD        ;TEST FOR END\r
+       POPJ    PP,             ;YES, EXIT\r
+\r
+WWRXE: PUSHJ   PP,WWORD        ;WRITE LAST WORD\r
+       ADD     MWP,WCOUNT      ;GET TO END OF LEAF\r
+       SUBI    MWP,.LEAF       ;NOW POINT TO START OF IT\r
+       HRRZS   (MWP)           ;ZERO LEFT HALF OF LAST LEAF\r
+       HRRM    MWP,@WWRXX      ;SET POINTER TO END\r
+       POPJ    PP,\r
+\fMREAD:        PUSHJ   PP,MREADS       ;READ ONE CHARACTER\r
+       CAIE    C,177           ;SPECIAL?\r
+       JRST    RSW1            ;NO, EXIT\r
+       PUSHJ   PP,MREADS       ;YES, GET CODE WORD\r
+       TRZE C,100              ;SYMBOL?\r
+       JRST GETDS              ;YES\r
+       CAILE C,4               ;POSSIBLY ILLEGAL\r
+       JRST ERRAX              ;YUP\r
+       HRRI    MRP,0           ;NO, SIGNAL END OF TEXT\r
+       JRST    .+1(C)\r
+       PUSHJ   PP,XCEED\r
+       JRST    MACEND          ;1; END OF MACRO\r
+       JRST    DSEND           ;2; END OF DUMMY SYMBOL\r
+       JRST    REPEND          ;3; END OF REPEAT\r
+       JRST    IRPEND          ;4; END OF IRP\r
+\r
+MREADI:        HRLI    MRP,700         ;SET UP BYTE POINTER\r
+       MOVEI   C,.LEAF-1       ;NUMBER OF WORDS\r
+       MOVEM   C,RCOUNT\r
+MREADS:        TLNN    MRP,-1          ;FIRST TIME HERE?\r
+       JRST    MREADI          ;YES, SET UP MRP AND RCOUNT\r
+       TLNN    MRP,760000      ;HAVE WE FINISHED WORD?\r
+       SOSLE   RCOUNT          ;YES, STILL ROOM IN LEAF?\r
+       JRST    MREADC          ;STILL CHAR. IN LEAF\r
+       HLRZ    MRP,1-.LEAF(MRP);YES, GET LINK\r
+       HRLI    MRP,(POINT 7,,21)       ;SET POINTER\r
+       MOVEI   C,.LEAF         ;RESET COUNT\r
+       MOVEM   C,RCOUNT\r
+MREADC:        ILDB    C,MRP           ;GET CHARACTER\r
+       POPJ    PP,\r
+\r
+PEEK:  JUMPN   MRP,PEEKM       ;THIS IS A MACRO READ\r
+       PUSHJ   PP,CHARAC       ;READ AN ASCII CHAR.\r
+       TLO     IO,IORPTC       ;REPEAT  FOR NEXT\r
+       POPJ    PP,             ;AND RETURN\r
+\r
+PEEKM: PUSH    PP,MRP          ;SAVE MACRO READ POINTER\r
+       PUSH    PP,RCOUNT       ;SAVE WORD COUNT\r
+       PUSHJ   PP,MREADS       ;READ IN A CHAR.\r
+       POP     PP,RCOUNT       ;RESTORE WORD COUNT\r
+       POP     PP,MRP          ;RESET READ POINTER\r
+       POPJ    PP,             ;IORPTC IS NOT SET\r
+\fREFINC:       MOVEI   CS,1(V)         ;GET POINTER TO TREE\r
+       AOS     0(CS)           ;INCREMENT REFERENCE\r
+       POPJ    PP,\r
+\r
+REFDEC:        JUMPLE  V,DECERR        ;CATASTROPHIC ERROR SOMEWHERE\r
+       MOVEI   CS,1(V)         ;GET POINTER TO TREE\r
+       SOS     CS,0(CS)        ;DECREMENT REFERENCE\r
+       TRNE    CS,000777       ;IS IT ZERO?\r
+       POPJ    PP,             ;NO, EXIT\r
+       HRRZ    CS,0(V)         ;YES, GET POINTER TO END\r
+       HRL     CS,NEXT         ;GET POINTER TO NEXT RE-USABLE\r
+       HLLM    CS,0(CS)        ;SET LINK\r
+       HRRM    V,NEXT          ;RESET NEXT\r
+       POPJ    PP,\r
+\r
+DECERR:        MOVE    AC0,CALNAM      ;GET MACRO NAME\r
+       MOVSI   RC,[SIXBIT /ERROR WHILE EXPANDING@/]\r
+       PUSHJ   PP,TYPMSG\r
+       JRST    ERRNE2          ;COMMON MESSAGE\r
+\fA==   0                       ;ASCII MODE\r
+AL==   1                       ;ASCII LINE MODE\r
+IB==   13                      ;IMAGE BINARY MODE\r
+B==    14                      ;BINARY MODE\r
+DMP==16                ;DUMP MODE\r
+\r
+CTL==  0                       ;CONTROL DEVICE NUMBER\r
+IFN CCLSW,<CTL2==4             ;INPUT DEV FOR CCL FILE>\r
+BIN==  1                       ;BINARY DEVICE NUMBER\r
+CHAR== 2                       ;INPUT DEVICE NUMBER\r
+LST==  3                       ;LISTING DEVICE NUMBER\r
+\r
+;      COMMAND STRING ACCUMULATORS\r
+\r
+ACDEV==        1                       ;DEVICE\r
+ACFILE==2                      ;FILE\r
+ACEXT==        3                       ;EXTENSION\r
+ACPPN== 4                      ;PPN\r
+ACDEL==        4                       ;DELIMITER\r
+ACPNTR==5                      ;BYTE POINTER\r
+\r
+TIO==  6\r
+\r
+TIORW==        1000\r
+TIOLE==        2000\r
+TIOCLD==20000\r
+\r
+DIRBIT==4              ;DIRECTORY DEVICE\r
+TTYBIT==10             ;TTY\r
+MTABIT==20             ;MTA\r
+DTABIT==100            ;DTA\r
+DISBIT==2000           ;DISPLAY\r
+CONBIT==20000          ;CONTROLING TTY\r
+LPTBIT==40000          ;LPT\r
+DSKBIT==200000         ;DSK\r
+\r
+;GETSTS ERROR BITS\r
+\r
+IOIMPM==400000         ;IMPROPER MODE (WRITE LOCK)\r
+IODERR==200000         ;DEVICE DATA ERROR\r
+IODTER==100000         ;CHECKSUM OR PARITY ERROR\r
+IOBKTL== 40000         ;BLOCK TOO LARGE\r
+ERRBIT==IOIMPM!IODERR!IODTER!IOBKTL\r
+\r
+SYN    .TEMP,PPN\r
+\fSUBTTL        I/O ROUTINES\r
+BEG:\r
+IFN CCLSW,<TLZA        IO,ARPGSW       ;DON'T ALLOW RAPID PROGRAM GENERATION\r
+       TLO     IO,ARPGSW       ;ALLOW RAPID PROGRAM GENERATION>\r
+       HRRZ    MRP,JOBREL      ;GET LOWSEG SIZE\r
+       MOVEM   MRP,MACSIZ      ;SAVE CORE SIZE\r
+                               ;DECODE VERSION NUMBER\r
+       MOVEI   PP,JOBFFI       ;TEMP PUSH DOWN STACK\r
+       PUSH    PP,[0]          ;MARK BOTTOM OF STACK\r
+       LDB     0,[POINT 3,JOBVER,2]    ;GET USER BITS\r
+       JUMPE   0,GETE          ;NOT SET IF ZERO\r
+       ADDI    0,"0"           ;FORM NUMBER\r
+       PUSH    PP,0            ;STACK IT\r
+       MOVEI   0,"-"           ;SEPARATE BY HYPHEN\r
+       PUSH    PP,0            ;STACK IT ALSO\r
+GETE:  HRRZ    0,JOBVER        ;GET EDIT NUMBER\r
+       JUMPE   0,GETU          ;SKIP ALL THIS IF ZERO\r
+       MOVEI   1,")"           ;ENCLOSE IN PARENS.\r
+       PUSH    PP,1\r
+GETED: IDIVI   0,8             ;GET OCTAL DIGITS\r
+       ADDI    1,"0"           ;MAKE ASCII\r
+       PUSH    PP,1            ;STACK IT\r
+       JUMPN   0,GETED         ;LOOP TIL DONE\r
+       MOVEI   0,"("           ;OTHER PAREN.\r
+       PUSH    PP,0\r
+GETU:  LDB     0,[POINT 6,JOBVER,17]   ;UPDATE NUMBER\r
+       JUMPE   0,GETV          ;SKIP IF ZERO\r
+       IDIVI   0,8             ;MIGHT BE TWO DIGITS\r
+       ADDI    1,"@"           ;FORM ALPHA\r
+       PUSH    PP,1\r
+       JUMPN   0,GETU+1        ;LOOP IF NOT DONE\r
+GETV:  LDB     0,[POINT 9,JOBVER,11]   ;GET VERSION NUMBER\r
+       IDIVI   0,8             ;GET DIGIT\r
+       ADDI    1,"0"           ;TO ASCII\r
+       PUSH    PP,1            ;STACK\r
+       JUMPN   0,GETV+1        ;LOOP\r
+       MOVE    1,[POINT 7,VBUF+1,13]   ;POINTER TO DEPOSIT IN VBUF\r
+       POP     PP,0            ;GET CHARACTER\r
+       IDPB    0,1             ;DEPOSIT IT\r
+       JUMPN   0,.-2           ;KEEP GOING IF NOT ZERO\r
+\fIFN CCLSW,<\r
+       TLZA    IO,CRPGSW       ;SET TO INIT NEW COMMAND FILE\r
+M:     TLNN    IO,CRPGSW       ;CURRENTLY DOING RPG?>\r
+IFE CCLSW,<M:>\r
+       RESET                   ;INITIALIZE PROGRAM\r
+       SETZM   BINDEV          ;CLEAR INCASE NOT USED NEXT TIME\r
+       SETZM   LSTDEV          ;SAME REASON\r
+       SETZM   INDEV           ;INCASE OF ERROR\r
+       HRRZ    MRP,MACSIZ      ;GET INITIAL SIZE\r
+       CORE    MRP,            ;BACK TO ORIGINAL SIZ4\r
+       JFCL                    ;SHOULD NEVER FAIL\r
+       SETZB   MRP,PASS1I\r
+       MOVE    [XWD PASS1I,PASS1I+1]\r
+       BLT     PASS2X-1        ;ZERO THE PASS1 AND PASS2 VARIABLES\r
+       MOVEI   PP,JOBFFI       ;SET TEMP PUSH-DOWN POINTER\r
+       MOVE    CS,[POINT 7,DBUF,6]     ;INITIALIZE FOR DATE\r
+       MSTIME  2,              ;GET TIME FROM MONITOR\r
+       PUSHJ   PP,TIMOUT       ;TIME FORMAT OUTPUT\r
+       DATE    1,              ;GET DATE\r
+       IBP     CS              ;PASS OVER PRESET SPACE\r
+       PUSHJ   PP,DATOUT       ;DATE FORMAT OUTPUT\r
+       MOVSI   FR,P1!CREFSW\r
+IFN CCLSW,<TLNE        IO,CRPGSW       ;RPG IN PROGRESS?\r
+       JRST    GOSET           ;YES, GO READ NEXT COMMAND\r
+       TLNE    IO,ARPGSW       ;NO, RPG ALLOWED?\r
+       JRST    RPGSET          ;YES, GO TRY\r
+CTLSET:        RELEASE CTL2,           ;IN CASE OF LOOKUP FAILURE>\r
+IFE CCLSW,<CTLSET:>\r
+       MOVSI   IO,IOPALL       ;ZERO FLAGS\r
+       INIT    CTL,AL          ;INITIALIZE USER CONSOLE\r
+       SIXBIT  /TTY/\r
+       XWD     CTOBUF,CTIBUF\r
+       EXIT                    ;NO TTY, NO ASSEMBLY\r
+       MOVSI   C,(SIXBIT /TTY/)\r
+       DEVCHR  C,              ;GET CHARACTERISTICS\r
+       TLNN    C,10            ;IS IT REALLY A TTY\r
+       EXIT                    ;NO\r
+       INBUF   CTL,1           ;INITIALIZE SINGLE CONTROL\r
+       OUTBUF  CTL,1           ;BUFFERS\r
+       PUSHJ   PP,CRLF         ;OUTPUT CARRIAGE RETURN - LINE FEED\r
+       MOVEI   C,"*"\r
+       IDPB    C,CTOBUF+1\r
+       OUTPUT  CTL,\r
+       INPUT   CTL,\r
+\fIFN CCLSW,<JRST BINSET                ;BEGIN WITH BINARY FILE\r
+\r
+RPGSET:\r
+       INIT    CTL2,AL         ;LOOK FOR DISK\r
+       SIXBIT  /DSK/           ;...\r
+       XWD     0,CTLBLK        ;...\r
+       JRST    CTLSET          ;DSK NOT THERE\r
+\r
+       HRLZI   3,(SIXBIT /MAC/)        ;###MAC\r
+       MOVEI   3                       ;COUNT\r
+       PJOB    AC1,                    ;RETURNS JOB NO. TO AC1\r
+RPGLUP:        IDIVI   AC1,12                  ;CONVERT\r
+       ADDI    AC2,"0"-40              ;SIXBITIZE IT\r
+       LSHC    AC2,-6                  ;\r
+       SOJG    0,RPGLUP                ;3 TIMES\r
+       MOVEM   3,CTLBUF                ;###MAC\r
+       HRLZI   (SIXBIT /TMP/)          ;\r
+       MOVEM   CTLBUF+1                ;TMP\r
+       SETZM   CTLBUF+3                ;PROG-PRO\r
+       LOOKUP  CTL2,CTLBUF             ;COMMAND FILE\r
+       JRST    CTLSET                  ;NOT THERE\r
+       HLRM    EXTMP                   ;SAVE THE EXTENSION\r
+\r
+RPGS2: INBUF   CTL2,1          ;SINGLE BUFFERED\r
+RPGS2A:        INIT    CTL,AL          ;TTY FOR CONSOLE MESSAGES\r
+       SIXBIT  /TTY/           ;...\r
+       XWD     CTOBUF,0        ;...\r
+       EXIT                    ;NO TTY, NO ASSEMBLY\r
+       OUTBUF  CTL,1           ;SINGLE BUFFERED\r
+       MOVE    JOBFF           ;REMEMBER WHERE BINARY BUFFERS BEGIN\r
+       MOVEM   SAVFF           ;...\r
+       HRRZ    JOBREL          ;TOP OF CORE\r
+       CAMLE   MACSIZ          ;SEE IF IT HAS GROWN\r
+       MOVEM   MACSIZ          ;PREVENTS ADDRESS CHECK ON EXIT\r
+       TLNE IO,CRPGSW  ;ARE WE ALREADY IN RPG MODE?\r
+       JRST M  ;MUST HAVE COME FROM @ COMMAND, RESET\r
+\r
+\fGOSET:        MOVSI   IO,IOPALL!CRPGSW        ;SET INITIAL FLAGS\r
+       MOVEI   CS,CTLSIZ       ;MAXIMUM CHARS IN A LINE\r
+       MOVE    AC1,CTLBLK+2    ;NUMBER OF CHARACTERS\r
+       MOVEM   AC1,CTIBUF+2    ;SAVE FOR PASS 2\r
+       MOVE    AC1,[POINT 7,CTLBUF]    ;WHERE TO STASH CHARS\r
+       MOVEM   AC1,CTIBUF+1    ;...\r
+GOSET1:        SOSG    CTLBLK+2        ;ANY MORE CHARS?\r
+       PUSHJ   PP,[IN CTL2,            ;READ ANOTHER BUFFERFUL\r
+                  POPJ PP,             ;EVERYTHING OK, RETURN\r
+                  STATO CTL2,20000     ;EOF?\r
+                  JRST [HRROI RC,[SIXBIT /ERROR READING COMMAND FILE@/]\r
+                       JRST ERRFIN]            ;GO COMPLAIN\r
+                  PUSHJ PP,DELETE      ;CMD FILE\r
+                  EXIT]                ;EOF AND FINISHED\r
+       ILDB    C,CTLBLK+1      ;GET NEXT CHAR\r
+       MOVE    RC,@CTLBLK+1    ;CHECK FOR SEQUENCE NUMBERS\r
+       TRNE    RC,1            ;...\r
+       JRST    [AOS    CTLBLK+1        ;SKIP OVER ANOTHER 5 CHARS\r
+               MOVNI   RC,5            ;...\r
+               ADDM    RC,CTLBLK+2     ;...\r
+               JRST    GOSET1  ]       ;GO READ ANOTHER CHAR\r
+       JUMPE   C,GOSET1        ;IGNORE NULLS\r
+       IDPB    C,CTIBUF+1      ;STASH AWAY\r
+       AOS     CTIBUF+2        ;INCREMENT CHAR. COUNT\r
+       CAIE    C,12            ;LINE FEED OR\r
+       CAIN    C,175           ;ALTMODE?\r
+       JRST    GOSET2          ;YES, FINISHED WITH COMMAND\r
+       CAIE    C,176\r
+       CAIN    C,33\r
+       JRST    GOSET2          ;ALTMODE.\r
+       SOJG    CS,GOSET1       ;GO READ ANOTHER\r
+       HRROI   RC,[SIXBIT /COMMAND LINE TOO LONG@/]\r
+       JRST    ERRFIN          ;GO COMPLAIN\r
+GOSET2:        MOVEI   C,12            ;MAKE SURE THERE'S A LF\r
+       IDPB    C,CTIBUF+1      ;...\r
+       MOVEM   AC1,CTIBUF+1    ;SET POINTER TO BEGINNING\r
+       AOS     CTIBUF+2        ;ADD I TO COUNT\r
+       MOVE    SAVFF           ;RESET JOBFF FOR NEW BINARY\r
+       MOVEM   JOBFF           ;...\r
+       JRST BINSET\r
+\f\r
+RPGS1: PUSHJ   PP,DELETE       ;DELETE COMMAND FILE\r
+       MOVEM   ACDEV,RPGDEV    ;GET SET TO INIT\r
+       OPEN    CTL2,RPGINI     ;DO IT\r
+       JRST    EINIT           ;ERROR\r
+       MOVEM   ACFILE,INDIR    ;USE INPUT BLOCK\r
+       MOVEM   ACPPN,INDIR+3   ;SET PPN \r
+       MOVEM   ACEXT,INDIR+1\r
+       LOOKUP  CTL2,INDIR\r
+       JRST    [JUMPN  ACEXT,RPGLOS    ;GIVE UP ,EXPLICIT EXTENSION\r
+       MOVSI   ACEXT,(SIXBIT /CCL/)    ;IF BLANK TRY CCL\r
+               JRST    .-2     ]\r
+       HLRM    ACEXT,EXTMP     ;SAVE THE EXTENSION\r
+       HLRZ    JOBSA           ;RESET JOBFF TO ORIGINAL\r
+       MOVEM   JOBFF\r
+       TLO     IO,CRPGSW       ;TURN ON SWITCH SO WE RESET WORLD\r
+       JRST    RPGS2           ;AND GO\r
+RPGLOS:        RELEAS  CTL2,0\r
+       TLZ     IO,CRPGSW       ;STOPS IO TO UNASGD CHAN\r
+       JRST    ERRCF           ;NO FILE FOUND\r
+>\r
+\fBINSET:       PUSHJ   PP,NAME1        ;GET FIRST NAME\r
+IFN CCLSW,<CAIN        C,"!"           ;WAS THIS AN IMPERATIVE?\r
+       JRST    NUNSET          ;GET THEE TO A NUNNERY\r
+       CAIN C,"@"      ;CHEK FOR A NEW RPG FILE\r
+       JRST RPGS1>\r
+       TLNN    FR,CREFSW       ;CROSS REF REQUESTED?\r
+       JRST    LSTSE1          ;YES, SKIP BINARY\r
+       CAIN    C,","           ;COMMA?\r
+       JUMPE   ACDEV,LSTSET    ;YES, SKIP BINARY IF NO DEVICE SPECIFIED\r
+       CAIN    C,"_"           ;LEFT ARROW?\r
+       JUMPE   ACDEV,LSTSE1    ;YES, SKIP BINARY IF NO DEVICE SPECIFIED\r
+       JUMPE   ACDEV,M         ;IGNORE IF JUST <CR-LF>\r
+       TLO     FR,PNCHSW       ;OK, SET SWITCH\r
+       MOVEM   ACDEV,BINDEV    ;STORE DEVICE NAME\r
+       MOVEM   ACFILE,BINDIR   ;STORE FILE NAME IN DIRECTORY\r
+       JUMPN   ACEXT,.+2       ;EXTENSION SPECIFIED?\r
+       MOVSI   ACEXT,(SIXBIT /REL/)    ;NO, ASSUME RELOCATABLE BINARY\r
+       MOVEM   ACEXT,BINDIR+1  ;STORE IN DIRECTORY\r
+       MOVEM   ACPPN,BINDIR+3  ;SET PPN\r
+       OPEN    BIN,BININI      ;INITIALIZE BINARY\r
+       JRST    EINIT           ;ERROR\r
+       TLZE TIO,TIOLE          ;SKIP TO EOT\r
+       MTAPE BIN,10\r
+       TLZE    TIO,TIORW       ;REWIND REQUESTED?\r
+       MTAPE   BIN,1           ;YES\r
+       JUMPGE  CS,BINSE2       ;BRANCH IF NO BACK-SPACE\r
+       MTAPE   BIN,17          ;BACK-SPACE A FILE\r
+       AOJL    CS,.-1          ;TEST FOR END\r
+       WAIT    BIN,\r
+       STATO   BIN,1B24        ;LOAD POINT?\r
+       MTAPE   BIN,16          ;NO, GO FORWARD ONE\r
+BINSE2:        SOJG    CS,.-1          ;TEST FORWARD SPACING\r
+\r
+       TLNE    TIO,TIOCLD      ;DIRECTORY CLEAR REQUESTED?\r
+       UTPCLR  BIN,            ;YES, CLEAR IT\r
+       OUTBUF  BIN,2           ;SET UP TWO RING BUFFER\r
+       CAIN    C,"_"\r
+       JRST    GETSET          ;NO LISTING\r
+\fLSTSET:       PUSHJ   PP,NAME1        ;GET NEXT DEVICE\r
+LSTSE1:        CAIE    C,"_"\r
+       JRST    ERRCM\r
+       TLNE    FR,CREFSW       ;CROSS-REF REQUESTED?\r
+       JRST    LSTSE2          ;NO, BRANCH\r
+       JUMPN   ACDEV,.+2       ;YES, WAS DEVICE SPECIFIED?\r
+       MOVSI   ACDEV,(SIXBIT /DSK/)    ;NO, ASSUME DSK\r
+       JUMPN   ACFILE,.+2\r
+       MOVE    ACFILE,[SIXBIT /CREF/]\r
+       JUMPN   ACEXT,.+2\r
+MOVSI  ACEXT,(SIXBIT /CRF/)   \r
+LSTSE2:        JUMPE   ACDEV,GETSET    ;FORGET LISTING IF NO DEVICE SPECIFIED\r
+       MOVE    AC0,ACDEV\r
+       DEVCHR  AC0,            ;GET CHARACTERISTICS\r
+       TLNE    AC0,LPTBIT!DISBIT!TTYBIT\r
+       TLNE    FR,CREFSW       ; WAS CROSS-REF REQUESTED?\r
+       AOSA    OUTSW+0*TTYSW   ;NO, ASSUME TTY\r
+       JRST    ERRCM           ;YES, ERROR - CREF DEV MUST NOT BE LPT, DIS, OR TTY\r
+       TLNE    AC0,CONBIT      ;CONTROLING TELETYPE LISTING?\r
+       JRST    GETSET          ;YES, BUFFER ALREADY SET\r
+       MOVEM   ACDEV,LSTDEV    ;STORE DEVICE NAME\r
+       AOS     OUTSW+0*LPTSW   ;SET FOR LPT\r
+       MOVEM   ACFILE,LSTDIR   ;STORE FILE NAME\r
+       JUMPN   ACEXT,.+2\r
+       MOVSI   ACEXT,(SIXBIT /LST/)\r
+       MOVEM   ACEXT,LSTDIR+1\r
+       MOVEM   ACPPN,LSTDIR+3  ;SET PPN\r
+       OPEN    LST,LSTINI      ;INITIALIZE LISTING OUTPUT\r
+       JRST    EINIT           ;ERROR\r
+       TLZE TIO,TIOLE\r
+       MTAPE LST,10\r
+       TLZE    TIO,TIORW       ;REWIND REQUESTED?\r
+       MTAPE   LST,1           ;YES\r
+       JUMPGE  CS,LSTSE3\r
+       MTAPE   LST,17\r
+       AOJL    CS,.-1\r
+       WAIT    LST,\r
+       STATO   LST,1B24\r
+       MTAPE   LST,16\r
+LSTSE3:        SOJG    CS,.-1\r
+       TLNE    TIO,TIOCLD      ;DIRECTORY CLEAR REQUESTED?\r
+       UTPCLR  LST,            ;YES, CLEAR IT\r
+       OUTBUF  LST,2           ;SET UP A TWO RING BUFFER\r
+\fGETSET:       MOVEI   3,PDPERR\r
+       HRRM    3,JOBAPR        ;SET TRAP LOCATION\r
+       MOVEI   3,1B19          ;SET FOR PUSH-DOWN OVERFLOW\r
+       APRENB  3,\r
+       SOS     3,PDP           ;GET PDP REQUEST MINUS 1\r
+       IMULI   3,.PDP          ;COMPUTE SIZE (50*<NUMBER OF /P'S +1>)\r
+       HRLZ    MP,3\r
+       HRR     MP,JOBFF        ;SET BASIC POINTER\r
+       MOVE    PP,MP\r
+       SUB     PP,3\r
+       MOVEM   PP,RP           ;SET RP\r
+       SUB     PP,3\r
+       ASH     3,1             ;DOUBLE SIZE OF BASIC POINTER\r
+       HRL     PP,3\r
+       SUBM    PP,3            ;COMPUTE TOP LOCATION\r
+IFN UNIVR,<SKIPN       UNITOP          ;IF ANY UNIVERSALS HAVE BEEN SEEN\r
+       JRST    GETSE0          ;NO\r
+       HRRZS   3               ;GET TOP OF BUFFERS AND STACKS\r
+       CAMLE   3,UNISIZ        ;HOPE ITS NOT BIGGER THAN UNIVERSAL ONE\r
+       JRST    UNIERR          ;IT WAS, YOU LOSE\r
+       SKIPA   3,UNITOP        ;DON'T LOSE THEM\r
+GETSE0:        HRRZM   3,UNISIZ        ;STORE UNTIL A UNIVERSAL IS SEEN>\r
+       HRRZM   3,LADR          ;SET START OF MACRO TREE\r
+       HRRZM   3,FREE\r
+\r
+GETSE1:        HRRZ    JOBREL\r
+       SUBI    1\r
+       MOVEM   SYMTOP          ;SET TOP OF SYMBOL TABLE\r
+       SUBI    LENGTH          ;SET POINTER FOR INITIAL SYMBOLS\r
+       CAMLE   LADR            ;HAVE WE ROOM?\r
+       JRST    GETSE2          ;YES\r
+\r
+       HRRZ    2,JOBREL        ;NO, TRY FOR MORE CORE\r
+       ADDI    2,2000\r
+       CORE    2,\r
+       JRST    XCEED2  ;NO MORE, INFORM USER\r
+       JRST    GETSE1          ;TRY AGAIN\r
+\r
+GETSE2:        MOVEM   SYMBOL          ;SET START OF SYMBOL TABLE\r
+       HRLI    SYMNUM\r
+       BLT     @SYMTOP         ;STORE SYMBOLS\r
+       PUSHJ   PP,SRCHI        ;INITIALIZE TABLE\r
+       MOVE    [XWD CTIBUF+1,CTLSAV]   ;SAVE CONTROL INPUT BUFFER\r
+       BLT     CTLS1           ;FOR RESCAN ON PASS 2\r
+IFN FTDISK,<MOVSI (SIXBIT /DSK/)       ;SET INPUT TO TAKE DSK AS DEV\r
+       MOVEM ACDEVX>\r
+       PUSHJ PP,COUTI  ;INIT OUTPUT JUST IN CASE\r
+       PUSHJ   PP,INSET        ;GET FIRST INPUT FILE\r
+\r
+IFN CCLSW,<TLNE        IO,CRPGSW       ;BUT ONLY IF DOING RPG\r
+       TTCALL  3,[ASCIZ /MACRO: /]     ;PUBLISH COMPILER NAME>\r
+       MOVE CS,INDIR   ;SET UP NAME OF FIRST FILE\r
+       MOVEM CS,LSTFIL ;AS LAST PRINTED\r
+       SETZM   LSTPGN\r
+       JRST    ASSEMB          ;START ASSEMBLY\r
+\fFINIS:        CLOSE   BIN,            ;DUMP BUFFER\r
+       TLNE    FR,PNCHSW       ;PUNCH REQUESTED?\r
+       PUSHJ   PP,TSTBIN       ;YES, TEST FOR ERRORS\r
+       RELEAS  BIN,\r
+       CLOSE   LST,\r
+       SOSLE   OUTSW+0*LPTSW   ;LPT TYPE OUTPUT?\r
+       PUSHJ   PP,TSTLST       ;YES, TEST FOR ERRORS\r
+       RELEAS  LST,\r
+       RELEAS  CHAR,\r
+       OUTPUT CTL,0    ;FLUSH TTY OUTPUT\r
+IFN UNIVR,<SKIPE       UNIVSN          ;SKIP IF NOT ASSEMBLING UNIVERSAL\r
+       PUSHJ   PP,UNISYM       ;STORE SYMBOLS ETC. FIRST>\r
+       JRST    M               ;RETURN FOR NEXT ASSEMBLY\r
+\fINSET:        MOVEI   JOBFFI          ;POINTER TO INPUT BUFFER\r
+       HRRM    JOBFF           ;INFORM SYSTEM OF BUFFER AREA\r
+       PUSHJ   PP,NAME2        ;GET NEXT COMMAND NAME\r
+       JUMPE   ACDEV,ERRNE     ;ERROR  IF NONE LEFT\r
+       MOVEM   ACDEV,INDEV     ;STORE DEVICE\r
+       MOVEM   ACFILE,INDIR    ;STORE FILE IN DIRECTORY\r
+       MOVEM   ACPPN,INDIR+3   ;STORE PPN BEFORE WE LOSE IT\r
+       OPEN    CHAR,INDEVI\r
+       JRST    EINIT           ;ERROR\r
+       DEVCHR  ACDEV,          ;TEST CHARACTERISTICS\r
+       TLNN    ACDEV,MTABIT    ;MAG TAPE?\r
+       JRST    INSET3          ;NO\r
+       TLZN    FR,MTAPSW       ;FIRST MAG TAPE IN PASS 2?\r
+       JRST    INSET1          ;NO\r
+       TLNN    TIO,TIORW       ;YES, REWIND REQUESTED?\r
+       SUB     CS,RECCNT       ;NO, PREPARE TO BACK-SPACE TAPE\r
+INSET1:        AOS     RECCNT          ;INCREMENT FILE COUNTER\r
+       ADDM    CS,RECCNT       ;UPDATE  COUNT\r
+       TLZE TIO,TIOLE\r
+       MTAPE CHAR,10\r
+       TLZE    TIO,TIORW       ;REWIND?\r
+       MTAPE   CHAR,1          ;YES\r
+       JUMPGE  CS,INSET2\r
+       MTAPE   CHAR,17\r
+       MTAPE   CHAR,17\r
+       AOJL    CS,.-1\r
+       WAIT    CHAR,\r
+       STATO   CHAR,1B24\r
+       MTAPE   CHAR,16\r
+INSET2:        SOJGE   CS,.-1\r
+\r
+INSET3:        INBUF CHAR,1\r
+       MOVEI ACPNTR,JOBFFI\r
+       EXCH ACPNTR,JOBFF\r
+       SUBI ACPNTR,JOBFFI\r
+       MOVEI ACDEL,NUMBUF*203+1\r
+       IDIV ACDEL,ACPNTR\r
+       INBUF CHAR,(ACDEL)\r
+       JUMPN   ACEXT,INSET4    ;TAKE USER'S EXTENSION IF NON-BLANK\r
+       MOVSI   ACEXT,(SIXBIT /MAC/)    ;BLANK, TRY .MAC FIRST\r
+       PUSHJ   PP,INSETI\r
+INSET4:        PUSHJ   PP,INSETI\r
+       JUMPE   ACEXT,ERRCF     ;ERROR IF ZERO\r
+       TLNE    ACDEV,TTYBIT    ;TELETYPE?\r
+       SETSTS  CHAR,AL         ;YES, CHANGE TO ASCII LINE\r
+\f                              ;DO ALL ENTERS HERE FOR LEVEL D\r
+       SKIPE   ENTERS          ;HAVE ENTERS BEEN DONE ALREADY?\r
+       JRST    ENTRDN          ;YES, DON'T DO TWICE\r
+       SKIPN   ACEXT,LSTDEV    ;IS THERE A LIST DEVICE?\r
+       JRST    LSTSE5          ;NO SO DON'T DO ENTER\r
+       SKIPN   ACFILE,LSTDIR   ;GET FILE NAME INCASE OF ERROR\r
+       JRST    [DEVCHR ACEXT,  \r
+               TLNE    ACEXT,DIRBIT    ;DOES IT HAVE A DIRECTORY?\r
+               JRST    LSTSE4          ;YES, GIVE UP BEFORE HARM IS DONE\r
+               SKIPE   ACFILE,INDIR    ;USE INPUT FILE NAME\r
+               MOVEM   ACFILE,LSTDIR   ;TOO BAD IF ZERO ALSO\r
+               JRST    LSTSE4]\r
+       HLLZ    ACEXT,LSTDIR+1  ;EXT ALSO\r
+       MOVE    ACPPN,LSTDIR+3  ;SAVE PPN\r
+       LOOKUP  LST,LSTDIR      ;PREVIOUS ONE STILL THERE\r
+       JRST    LSTSE4          ;NO\r
+       SETZM   LSTDIR          ;YES,CLEAR NAME\r
+       MOVEM   ACPPN,LSTDIR+3  ;RESET PPN\r
+       RENAME  LST,LSTDIR\r
+       CLOSE   LST,            ;IGNORE FAILURE\r
+       MOVEM   ACFILE,LSTDIR   ;RESTORE NAME\r
+       HLLZS   LSTDIR+1        ;BH 11/19/74 FOR DATE75.  CLEAR RH.\r
+       SETZM   LSTDIR+2        ;CLEAR PROTECTION AND DATE\r
+       MOVEM   ACPPN,LSTDIR+3  ;SET PPN AGAIN\r
+LSTSE4:        \r
+       ENTER   LST,LSTDIR      ;SET UP DIRECTORY\r
+       JRST    ERRCL           ;ERROR\r
+LSTSE5:        SKIPN   ACEXT,BINDEV    ;A BINARY DEVICE THEN ?\r
+       JRST    ENTRDN          ;NO\r
+       SKIPN   ACFILE,BINDIR   ;INCASE OF ERROR\r
+       JRST    [DEVCHR ACEXT,  \r
+               TLNE    ACEXT,DIRBIT    ;DOES IT HAVE A DIRECTORY?\r
+               JRST    .+1             ;YES, GIVE UP BEFORE HARM IS DONE\r
+               SKIPE   ACFILE,INDIR    ;USE INPUT FILE NAME\r
+               MOVEM   ACFILE,BINDIR   ;TOO BAD IF ZERO ALSO\r
+               JRST    .+1]\r
+       HLLZS   ACEXT,BINDIR+1  ;BH 11/19/74 DATE75.  WAS HLLZ.\r
+       ENTER   BIN,BINDIR      ;ENTER FILE NAME\r
+       JRST    ERRCB           ;ERROR\r
+\r
+ENTRDN:        SETOM   ENTERS          ;MAKE SURE ONLY DONE ONCE\r
+       MOVE    CS,[POINT 7,DEVBUF]\r
+       PUSH    PP,1            ;SAVE THE ACCS\r
+       PUSH    PP,2\r
+       PUSH    PP,3\r
+       SKIPN   2,INDIR         ;GET INPUT NAME\r
+       JRST    FINDEV          ;FINISHED WITH DEVICE\r
+       SETZ    1,              ;CLEAR FOR RECEIVING\r
+       LSHC    1,6             ;SHIFT ONE CHAR. IN\r
+       ADDI    1,40            ;FORM ASCII\r
+       IDPB    1,CS            ;STORE CHAR.\r
+       JUMPN   2,.-4           ;MORE TO DO?\r
+       MOVEI   1,"     "       ;SEPARATE BY TAB\r
+       IDPB    1,CS\r
+       HLLZ    2,INDIR+1       ;GET EXT\r
+       JUMPE   2,FINEXT        ;NO EXT\r
+       SETZ    1,\r
+       LSHC    1,6             ;SAME LOOP AS ABOVE\r
+       ADDI    1,40\r
+       IDPB    1,CS\r
+       JUMPN   2,.-4\r
+FINEXT:        MOVEI   1,"     "\r
+       IDPB    1,CS            ;SEPARATE BY TAB\r
+       LDB     1,[POINT 12,INDIR+2,35] ;GET DATE\r
+       LDB     2,[POINT 3,INDIR+1,20]  ;BH 11/19/74 DATE75.\r
+       DPB     2,[POINT 3,1,23]        ;BH 11/19/74 DATE75.\r
+       JUMPE   1,FINDEV        ;NO DATE?\r
+       PUSHJ   PP,DATOUT       ;STORE IT\r
+       LDB     2,[POINT 11,INDIR+2,23] ;GET CREATION TIME\r
+       JUMPE   2,FINDEV        ;NO TIME (DECTAPE)\r
+       MOVEI   1," "           ;SEPARATE BY SPACE\r
+       IDPB    1,CS\r
+       PUSHJ   PP,TIMOU1       ;STORE TIME\r
+FINDEV:        SETZ    1,\r
+       MOVEI   2,"     "       ;FINAL TAB\r
+       IDPB    2,CS\r
+       IDPB    1,CS            ;TERMINATE FOR NOW\r
+       POP     PP,3            ;RESTORE ACCS\r
+       POP     PP,2\r
+       POP     PP,1\r
+       SKIPN   PAGENO          ;IF FIRST TIME THRU\r
+       JRST    OUTFF           ;START NEW PAGE\r
+       SETZM PAGENO            ;ON NEW FILE, RESET PAGES\r
+       JRST    OUTFF2          ;DON'T START NEW PAGE UNLESS FF\r
+\r
+INSETI:        HLLZM   ACEXT,INDIR+1   ;STORE EXTENSION\r
+       MOVE    ACPPN,INDIR+3   ;SAVE PPN\r
+       LOOKUP  CHAR,INDIR\r
+       SKIPA   ACEXT,INDIR+1   ;GET ERROR CODE\r
+       JRST    CPOPJ1          ;SKIP-RETURN IF FOUND\r
+       TRNE    ACEXT,-1        ;ERROR CODE OF 0 IS FILE NOT FOUND\r
+       JRST    ERRCF           ;FILE THERE BUT NOT READABLE\r
+       SETZ    ACEXT,          ;CLEAR EXT AND TRY AGAIN\r
+       MOVEM   ACPPN,INDIR+3   ;RESTORE PPN\r
+       POPJ    PP,\r
+\fREC2: MOVS    [XWD CTIBUF+1,CTLSAV]   ;RESCAN CONTROL (FROM PASS1 END STMNT)\r
+       BLT     CTIBUF+2        ;INPUT BUFFER\r
+       MOVEI   "_"\r
+       HRLM    ACDELX          ;FUDGE PREVIOUS DELIMITER\r
+IFN RENTSW,<MOVE HHIGH ;GET HI-SEG BREAK\r
+       MOVEM   HIGH1   ;SAVE THE ONE WE GOT ON PASS1 (FOR HISEG)>\r
+       SETZM   PASS2I\r
+       MOVE    [XWD PASS2I,PASS2I+1]\r
+       BLT     PASS2X-1                ;ZERO PASS2 VARIABLES\r
+       TLO     FR,MTAPSW!LOADSW        ;SET FLAGS \r
+\r
+GOTEND:        MOVE    INDEV           ;GET LAST DEVICE\r
+       DEVCHR                  ;GET ITS CHARACTERISTICS\r
+       TLNE    4               ;TEST FOR DIRECTORY (DSK OR DTA)\r
+       JRST    EOT             ;YES, SO DON'T WASTE TIME\r
+       JRST    .+3             ;NO, INPUT BUFFER BY BUFFER\r
+       IN      CHAR,\r
+       JRST    .-1             ;NO ERRORS\r
+       STATO   CHAR,1B22       ;TEST FOR EOF\r
+       JRST    .-3             ;IGNORE ERRORS\r
+\r
+EOT:   PUSHJ   PP,SAVEXS       ;SAVE REGISTERS\r
+       PUSHJ   PP,INSET        ;GET THE NEXT INPUT DEVICE\r
+       HRROI   RC,[SIXBIT /END OF PASS 1@/]    ;ASSUME END OF PASS\r
+       TLZN    FR,LOADSW       ;ZERO ONLY ON END OF PASS 1\r
+       HRROI   RC,[SIXBIT /LOAD THE NEXT FILE@/]       ;NOT END OF PASS\r
+       TLNN    ACDEV,(1B13!1B15)       ;WAS ALL THAT WORK NECESSARY?\r
+       PUSHJ   PP,TYPMSG       ;YES\r
+\r
+RSTRXS:        MOVSI   RC,SAVBLK       ;SET POINTER\r
+       BLT     RC,RC-1         ;RESTORE REGISTERS\r
+       MOVE    RC,SAVERC       ;RESTORE RC\r
+       POPJ    PP,             ;EXIT\r
+\r
+SAVEXS:        MOVEM   RC,SAVERC       ;SAVE RC\r
+       MOVEI   RC,SAVBLK       ;SET POINTER\r
+       BLT     RC,SAVBLK+RC-1  ;BLT ALL REGISTERS BELOW RC\r
+       POPJ    PP,             ;EXIT\r
+\fNAME1:        SETZM   ACDEVX          ;ENTRY FOR DESTINATION\r
+NAME2: SETZB   ACDEV,INDIR+2   ;ENTRY FOR SOURCE\r
+       MOVEI   ACFILE,0        ;CLEAR FILE\r
+       HLRZ    ACDEL,ACDELX    ;GET PREVIOUS DELIMITER\r
+       SETZB   TIO,CS\r
+       SETZB   ACEXT,INDIR+3   ;RESET EXTENSION AND PROGRAM-NUMBER PAIR\r
+       SETZM   PPN             ;CLEAR PPN\r
+NAME3: MOVSI   ACPNTR,(POINT 6,AC0)    ;SET POINTER\r
+       TDZA    AC0,AC0         ;CLEAR SYMBOL\r
+\r
+SLASH: PUSHJ   PP,SW0\r
+GETIOC:        PUSHJ   PP,TTYIN        ;GET INPUT CHARACTER\r
+       CAIN    C,"/"\r
+       JRST    SLASH\r
+       CAIN    C,"("\r
+       JRST    SWITCH\r
+       CAIN    C,":"\r
+       JRST    DEVICE\r
+       CAIN    C,"."\r
+       JRST    NAME\r
+IFN CCLSW,<CAIE        C,"!"           ;IS CHAR AN IMPERATIVE?\r
+       CAIN    C,"@"\r
+       JRST    TERM            ;YES, GO DO IT>\r
+       CAIE    C,33            ;CHECK FOR THREE FLAVORS OF ALT-MODE\r
+       CAIN    C,176           ;...\r
+       JRST    TERM            ;...\r
+       CAIG    C,CR            ;LESS THAN CR?\r
+       CAIGE   C,LF            ;AND GREATER THAN LF?\r
+       CAIN    C,175           ;OR 3RD ALTMOD\r
+       JRST    TERM            ;YES\r
+IFN FTDISK,<CAIN C,"["\r
+       JRST    PROGNP          ;GET PROGRAMER NUMBER PAIR>\r
+       CAIN    C,"="           ;EQUALS IS SAME AS LEFT ARROW\r
+       TRCA    C,142           ;SO MAKE IT A "_" AND SKIP\r
+       CAIE    C,","\r
+       CAIN    C,"_"\r
+       JRST    TERM\r
+       CAIGE   C,40            ;VALID AS SIXBIT?\r
+       JRST    [CAIN C,"Z"-100 ;NO,IS IT ^Z\r
+               EXIT            ;YES,EXIT FOR BATCH\r
+               JRST    GETIOC] ;JUST IGNORE\r
+       SUBI    C,40            ;CONVERT TO 6-BIT\r
+       TLNE    ACPNTR,770000   ;HAVE WE STORED SIX BYTES?\r
+       IDPB    C,ACPNTR        ;NO, STORE IT\r
+       JRST    GETIOC          ;GET NEXT CHARACTER\r
+\r
+DEVICE:        JUMPN   ACDEV,ERRCM     ;ERROR IF ALREADY SET\r
+       MOVE    ACDEV,AC0       ;DEVICE NAME\r
+       JRST    DEVNAM          ;COMMON CODE\r
+\r
+NAME:  JUMPN   ACFILE,ERRCM    ;ERROR IF ALREADY SET\r
+       MOVE    ACFILE,AC0      ;FILE NAME\r
+DEVNAM:        MOVE    ACDEL,C         ;SET DELIMITER\r
+       JRST    NAME3           ;GET NEXT SYMBOL\r
+\r
+TERM:  JUMPE   ACDEL,TERM1     ;IF NO PREVIOUS TERMINATOR, THEN FILENAME\r
+       CAIN    ACDEL,"_"       ;...\r
+       JRST    TERM1           ;...\r
+       CAIE    ACDEL,":"       ;IF PREVIOUS DELIMITER\r
+       CAIN    ACDEL,","       ;WAS COLON OR COMMA\r
+TERM1: MOVE    ACFILE,AC0      ;SET FILE\r
+       CAIN    ACDEL,"."       ;IF PERIOD,\r
+       HLLZ    ACEXT,AC0       ;SET EXTENSION\r
+       HRLM    C,ACDELX        ;SAVE PREVIOUS DELIMITER\r
+       JUMPN   ACDEV,.+2       ;IF DEVICE SET USE IT\r
+       SKIPA   ACDEV,ACDEVX    ;OTHERWISE USE LAST DEVICE\r
+       MOVEM   ACDEV,ACDEVX    ;AND DEVICE\r
+       MOVE    ACPPN,PPN       ;PUT PPN IN RIGHT PLACE\r
+IFN FTDISK,<CAIN C,"!"         ;IMPERATIVE?\r
+       POPJ    PP,             ;YES, DON'T ASSUME DEV\r
+       JUMPE   ACFILE,CPOPJ    ;IF THERE IS A FILE,\r
+       JUMPN   ACDEV,.+2       ;BUT NO DEVICE\r
+       MOVSI   ACDEV,(SIXBIT /DSK/)    ;THEN ASSUME DISK>\r
+       POPJ    PP,             ;EXIT\r
+\fERRCM:        HRROI   RC,[SIXBIT /COMMAND ERROR@/]\r
+       JRST    ERRFIN\r
+\r
+IFN FTDISK,<PROGNP:\r
+PROGN1:        HRLZM   RC,PPN          ;COMMA, STORE LEFT HALF\r
+PROGN2:        MOVEI   RC,0            ;CLEAR AC\r
+PROGN3:        PUSHJ   PP,TTYIN\r
+       CAIN    C,","\r
+       JRST    PROGN1          ;STORE LEFT HALF\r
+       HRRM    RC,PPN          ;ASSUME TERMINAL\r
+       CAIN    C,"]"\r
+       JRST    GETIOC          ;YES, RETURN TO MAIN SCAN\r
+       CAIL    C,"0"           ;CHECK FOR VALID NUMBERS\r
+       CAILE   C,"7"\r
+       JRST    ERRCM           ;NOT VALID\r
+       LSH     RC,3            ;SHIFT PREVIOUS RESULT\r
+       ADDI    RC,-"0"(C)      ;ADD IN NEW NUMBER\r
+       JRST    PROGN3          ;GET NEXT CHARACTER>\r
+\fSWITC0:       PUSHJ   PP,SW1          ;PROCESS CHARACTER\r
+SWITCH:        PUSHJ   PP,TTYIN        ;GET NEXT CHARACTER\r
+       CAIE    C,")"           ;END OF STRING?\r
+       JRST    SWITC0          ;NO\r
+       JRST    GETIOC          ;YES\r
+\r
+SW0:   PUSHJ   PP,TTYIN\r
+SW1:   MOVEI   C,-"A"(C)       ;CONVERT FROM ASCII TO NUMERIC\r
+       CAILE   C,"Z"-"A"       ;WITHIN BOUNDS? (IS IT ALPHA?)\r
+       JRST    ERRCM           ;NO, ERROR\r
+       MOVE    RC,[POINT 4,BYTAB]\r
+       IBP     RC\r
+       SOJGE   C,.-1           ;MOVE TO PROPER BYTE\r
+       LDB     C,RC            ;PICK UP BYTE\r
+       JUMPE   C,ERRCM         ;TEST FOR VALID SWITCH\r
+       CAIG    C,SWTABT-SWTAB  ;LEGAL ON SOURCE?\r
+       JUMPL   PP,ERRCM        ;NO, TEST FOR SOURCE\r
+       LDB     RC,[POINT 4,SWTAB-1(C),12]\r
+       CAIN    RC,IO\r
+       SKIPN   CTLSAV          ;IF PASS2 OR IO SWITCH,\r
+       XCT     SWTAB-1(C)      ;EXECUTE INSTRUCTION\r
+       POPJ    PP,             ;EXIT\r
+       TLZ     IO,IOSALL       ;TAKE CARE OF /X\r
+       POPJ    PP,\r
+\r
+DEFINE HELP (TEXT)<\r
+       XLIST\r
+       ASCIZ ?TEXT?\r
+       LIST>\r
+\r
+HLPMES:        HELP <\r
+Switches are :-\r
+*/A advance one file\r
+*/B backspace one file\r
+/C produce a cref listing\r
+*/E list macro expansions (LALL)\r
+*/F list in new format (.MFRMT)\r
+/G list in old format (.HWFRMT)\r
+/H type this text\r
+*/L reinstate listing (LIST)\r
+/M suppress ascii in macro and repeat expansion (SALL)\r
+*/N suppress error printout on tty\r
+/O set MLOFF pseudo-op\r
+/P increase size of the pushdown stack\r
+/Q suppress Q errors on the listing\r
+*/S suppress listing (XLIST)\r
+*/T rewind device\r
+*/X suppress all macro expansions (XALL)\r
+*/Z zero the directory\r
+Switches A,B,C,T,W,X, and Z must immediately follow\r
+the device or file to which they refer.\r
+>\r
+\f      DEFINE  SETSW   (LETTER,INSTRUCTION) <  INSTRUCTION\r
+J=     <"LETTER"-"A">-^D9*<I=<"LETTER"-"A">/^D9>\r
+       SETCOD  \I,J>\r
+\r
+       DEFINE  SETCOD          (I,J)\r
+       <BYTAB'I=BYTAB'I!<.-SWTAB>B<4*J+3>>\r
+\r
+BYTAB0=        0                       ;INITIALIZE TABLE\r
+BYTAB1=        0\r
+BYTAB2=        0\r
+\r
+SWTAB:\r
+       SETSW   Z,<TLO  TIO,TIOCLD      >\r
+       SETSW   C,<TLZ  FR,CREFSW       >\r
+       SETSW   P,<SOS  PDP             >\r
+SWTABT:                                ;THE ABOVE SW'S ARE LEGAL ON OUTPUT ONLY\r
+       SETSW   A,<ADDI CS,1            >\r
+       SETSW   B,<SUBI CS,1            >\r
+       SETSW   E,<TLZ  IO,IOPALL!IOSALL        >\r
+       SETSW   H,<OUTSTR       HLPMES>\r
+       SETSW   L,<TLZ  IO,IOMSTR       >\r
+       SETSW   M,<TLO  IO,IOPALL!IOSALL        >\r
+       SETSW   N,<HLLOS   TYPERR       >\r
+       SETSW   O,<XCT  OFFML           >\r
+       SETSW   Q,<TLO  FR,ERRQSW       >\r
+       SETSW   S,<TLO  IO,IOMSTR       >\r
+       SETSW   T,<TLO  TIO,TIOLE       >\r
+       SETSW   W,<TLO  TIO,TIORW       >\r
+       SETSW   X,<TLOA IO,IOPALL       >\r
+\r
+BYTAB:                         ;BYTAB CONTAINS AN INDEX TO SWTAB\r
+                               ;IT CONSIST OF 9 4BIT BYTES/WORD\r
+                               ;OR ONE BYTE FOR EACH LETTER\r
+\r
+       +BYTAB0                 ;A-I    BYTE = 1 THROUGH 17 = INDEX\r
+       +BYTAB1                 ;J-R    BYTE = 0 = COMMAND ERROR\r
+       +BYTAB2                 ;S-Z\r
+\r
+IF2,<PURGE I,J,BYTAB0,BYTAB1,BYTAB2>\r
+\fTTYIN:        SOSGE   CTIBUF+2        ;ENUF CHAR.?\r
+       JRST    TTYERR          ;NO\r
+       ILDB    C,CTIBUF+1      ;GET CHARACTER\r
+       CAIE    C," "           ;SKIP BLANKS\r
+       CAIN    C,HT            ;AND TABS\r
+       JRST    TTYIN\r
+       CAIN    C,15            ;CR?\r
+       SETZM   CTIBUF+2        ;YES,IGNORE REST OF LINE\r
+       CAIG C,"Z"+40           ;CHECK FOR LOWER CASE\r
+       CAIGE C,"A"+40\r
+       POPJ    PP,             ;NO,EXIT\r
+       SUBI C,40\r
+       POPJ    PP,             ;YES, EXIT\r
+\r
+TTYERR:        SKIPN   INDEV           ;INPUT DEVICE SEEN?\r
+       JRST    ERRCM           ;NO, SO MISSING "_"\r
+ERRNE: HRROI   RC,[SIXBIT /?NO END STATEMENT ENCOUNTERED ON INPUT FILE@/]\r
+ERRNE0:        SKPINC  V       ;SEE IF WE CAN INPUT A CHAR.\r
+         JFCL          ;BUT ONLY TO DEFEAT ^O\r
+       PUSHJ PP,TYPMSG ;OUTPUT IT\r
+       SKIPE LITLVL    ;SEE IF IN LITERAL\r
+       SKIPN   LITPG   ;PAGE 0 MEANS NOT IN A LITERAL REALY\r
+       JRST ERRNE1     ;NO, TRY OTHERS\r
+       MOVE V,[XWD [SIXBIT /IN LITERAL@/],LITPG]\r
+       PUSHJ PP,PRNUM  ;GO PRINT INFORMATION\r
+ERRNE1:        MOVEI V,0       ;CHECK FOR OTHER PLACES\r
+       SKIPE INDEF\r
+       MOVE V,[XWD [SIXBIT /IN DEFINE@/],DEFPG]\r
+       SKIPE INTXT\r
+       MOVE V,[XWD [SIXBIT /IN TEXT@/],TXTPG]\r
+       SKIPE INREP\r
+       MOVE V,[XWD [SIXBIT /IN CONDITIONAL OR REPEAT@/],REPPG]\r
+       SKIPE INCND\r
+       MOVE V,[XWD [SIXBIT /IN CONDITIONAL@/],CNDPG]\r
+       SKIPGE MACENL\r
+ERRNE2:        MOVE V,[XWD [SIXBIT /IN MACRO CALL@/],CALPG]\r
+       JUMPN V,ERRNE3\r
+       SKIPN   LITLVL          ;HAD ONE PAGE NUMBER ALREADY\r
+       SKIPA   V,[XWD [SIXBIT /@/],PAGENO]     ;BETTER THAN NOTHING\r
+       JRST    .+2\r
+ERRNE3:        PUSHJ PP,PRNUM\r
+       HRROI RC,[SIXBIT /@/]   ;WILL GET A RETURN\r
+       JRST ERRFIN\r
+\r
+ERRMS1:        SIXBIT / ERRORS DETECTED@/\r
+ERRMS2:        SIXBIT /?1 ERROR DETECTED@/\r
+ERRMS3:        SIXBIT /NO ERRORS DETECTED@/\r
+EINIT: MOVE    RC,[XWD ACDEV,[SIXBIT /NOT AVAILABLE@/]]\r
+       JRST    ERRFIN\r
+\fERRCL:        HRRZ    RC,LSTDIR+1     ;GET LST DEV ERROR CODE\r
+       JRST    .+2             ;GET ERROR MESSAGE\r
+ERRCB: HRRZ    RC,BINDIR+1     ;GET BIN DEV ERROR CODE\r
+       JUMPN   RC,ERRTYP\r
+       SOJA    RC,ERRTYP       ;SPECIAL CASE IF ERROR CODE 0\r
+\r
+ERRCF: HRRZ    RC,INDIR+1      ;GET INPUT DEV ERROR CODE\r
+       HLLZ    ACEXT,INDIR+1   ;SET UP EXT\r
+\r
+ERRTYP:        CAIL    RC,TABLND-TABLE ;IS ERROR CODE LEGAL?\r
+       SKIPA   RC,TABLND       ;NO, GIVE CATCH ALL MESSAGE\r
+       MOVE    RC,TABLE(RC)    ;YES, PICK UP MESSAGE\r
+\r
+ERRFIN:        SKPINC  C               ;SEE IN WE CAN INPUT A CHAR.\r
+         JFCL                  ;BUT ONLY TO DEFEAT ^O\r
+       PUSHJ   PP,CRLF\r
+       MOVEI   C,"?"\r
+       PUSHJ   PP,TYO\r
+       PUSHJ   PP,TYPMS1\r
+       CLOSE   LST,            ;GIVE USER A PARTIAL LISTING\r
+       CLOSE   BIN,40          ;BUT NEVER A BUM REL FILE\r
+IFN CCLSW,<AOS JOBERR          ;RECORD ERROR SO EXECUTION DELETED>\r
+       JRST    M\r
+\r
+       [SIXBIT /(0) ILLEGAL FILE NAME@/],,ACFILE\r
+TABLE: [SIXBIT /(0) FILE WAS NOT FOUND@/],,ACFILE\r
+       [SIXBIT /(1) NO DIRECTORY FOR PROJECT-PROGRAMMER NUMBER@/],,ACFILE\r
+       [SIXBIT /(2) PROTECTION FAILURE@/],,ACFILE\r
+       [SIXBIT /(3) FILE WAS BEING MODIFIED@/],,ACFILE\r
+       [SIXBIT /(4) RENAME FILE NAME ALREADY EXISTS@/],,ACFILE\r
+       [SIXBIT /(5) ILLEGAL SEQUENCE OF UUOS@/],,ACFILE\r
+       [SIXBIT /(6) BAD UFD OR BAD RIB@/],,ACFILE\r
+       [SIXBIT /(7) NOT A SAV FILE@/],,ACFILE\r
+       [SIXBIT /(10) NOT ENOUGH CORE@/],,ACFILE\r
+       [SIXBIT /(11) DEVICE NOT AVAILABLE@/],,ACFILE\r
+       [SIXBIT /(12) NO SUCH DEVICE@/],,ACFILE\r
+       [SIXBIT /(13) NOT TWO RELOC REG. CAPABILITY@/],,ACFILE\r
+       [SIXBIT /(14) NO ROOM OR QUOTA EXCEEDED@/],,ACFILE\r
+       [SIXBIT /(15) WRITE LOCK ERROR@/],,ACFILE\r
+       [SIXBIT /(16) NOT ENOUGH MONITOR TABLE SPACE@/],,ACFILE\r
+       [SIXBIT /(17) PARTIAL ALLOCATION ONLY@/],,ACFILE\r
+       [SIXBIT /(20) BLOCK NOT FREE ON ALLOCATION@/],,ACFILE\r
+       [SIXBIT /(21) CAN'T SUPERSEDE (ENTER) AN EXISTING DIRECTORY@/],,ACFILE\r
+       [SIXBIT /(22) CAN'T DELETE (RENAME) A NON-EMPTY DIRECTORY@/],,ACFILE\r
+       [SIXBIT /(23) SFD NOT FOUND@/],,ACFILE\r
+       [SIXBIT /(24) SEARCH LIST EMPTY@/],,ACFILE\r
+       [SIXBIT /(25) SFD NESTED TOO DEEPLY@/],,ACFILE\r
+       [SIXBIT /(26) NO-CREATE ON FOR SPECIFIED PATH@/],,ACFILE\r
+\r
+TABLND:        [SIXBIT /(?) LOOKUP, ENTER, OR RENAME ERROR@/],,ACFILE\r
+\fTYPMSG:       PUSHJ   PP,CRLF         ;MOVE TO NEXT LINE\r
+TYPMS1:        HLRZ    CS,RC           ;GET FIRST MESSAGE\r
+       CAIE    CS,-1           ;SKIP IF MINUS ONE\r
+       PUSHJ   PP,TYPM2        ;TYPE MESSAGE\r
+       HRRZ    CS,RC           ;GET SECOND HALF\r
+       PUSHJ   PP,TYPM2\r
+\r
+CRLF:  MOVEI   C,CR            ;OUTPUT CARRIAGE RETURN\r
+       PUSHJ   PP,TYO\r
+       MOVEI   C,LF            ;AND LINE FEED\r
+\r
+TYO:   SOSG    CTOBUF+2        ;BUFFER FULL?\r
+       OUTPUT  CTL,0           ;YES, DUMP IT\r
+       IDPB    C,CTOBUF+1      ;STORE BYTE\r
+       CAIG    C,FF            ;FORM FEED?\r
+       CAIGE   C,LF            ;V TAB OR LINE FEED?\r
+       POPJ    PP,             ;NO\r
+       OUTPUT  CTL,0           ;YES\r
+       POPJ    PP,             ;AND EXIT\r
+\r
+TYPM2: MOVSI   C,(1B0)         ;ANTICIPATE REGISTER WORD\r
+       CAIN    CS,ACFILE       ;FILE NAME ?\r
+       JRST    [JUMPE  ACEXT,.+1       ;YES, TEST FOR EXT\r
+               LSH     ACEXT,-6        ;MAKE SPACE FOR "."\r
+               IOR     ACEXT,[SIXBIT /.   @/]\r
+               JRST    TYPM2A]\r
+       CAIG    CS,17           ;IS IT?\r
+       MOVEM   C,1(CS)\r
+TYPM2A:        HRLI    CS,(POINT 6,,)  ;FORM BYTE POINTER\r
+\r
+TYPM3: ILDB    C,CS            ;GET A SIXBIT BYTE\r
+       CAIN    C,40            ;"@"?\r
+       JRST    TYO             ;YES, TYPE SPACE AND EXIT\r
+       ADDI    C,40            ;NO, FORM 7-BIT ASCII\r
+       PUSHJ   PP,TYO          ;OUTPUT CHARACTER\r
+       JRST    TYPM3\r
+\r
+\fXCEEDS:       ADDI SX,2000            ;ADJUST SYMBOL POINTER\r
+XCEED: PUSHJ   PP,SAVEXS       ;SAVE THE REGISTERS\r
+       HRRZ    1,JOBREL        ;GET CURRENT TOP\r
+       MOVEI   0,2000(1)\r
+       CORE    0,              ;REQUEST MORE CORE\r
+       JRST    XCEED2          ;ERROR, BOMB OUT\r
+       HRRZ    2,JOBREL        ;GET NEW TOP\r
+\r
+XCEED1:        MOVE    0,0(1)          ;GET ORIGIONAL\r
+       MOVEM   0,0(2)          ;STORE IN NEW LOCATION\r
+       SUBI    2,1             ;DECREMENT UPPER\r
+       CAMLE   1,SYMBOL        ;HAVE WE ARRIVED?\r
+       SOJA    1,XCEED1        ;NO, GET ANOTHER\r
+       MOVEI   1,2000\r
+       ADDM    1,SYMBOL\r
+       ADDM    1,SYMTOP\r
+       PUSHJ   PP,SRCHI        ;RE-INITIALIZE SYMBOL TABLE\r
+       JRST    RSTRXS          ;RESTORE REGISTERS AND EXIT\r
+\r
+XCEED2:        HRROI   RC,[SIXBIT /INSUFFICIENT CORE@/]\r
+       JRST    ERRNE0\r
+PDPERR:        HRROI   RC,[SIXBIT .PDP OVERFLOW, TRY /P@.]\r
+       JRST    ERRNE0\r
+\r
+PRNUM: HLRZ CS,V       ;GET MESSAGE\r
+       PUSHJ PP,TYPM2\r
+       MOVEI   CS,[SIXBIT /ON PAGE@/]\r
+       PUSHJ   PP,TYPM2\r
+       MOVE AC0,(V)    ;GET PAGE\r
+       PUSHJ PP,DP1    ;PRINT NUMBER\r
+       MOVEI C,40\r
+       PUSHJ PP,TYO\r
+       SKIPN AC1,1(V)  ;GET SEQ NUM IF THERE\r
+       POPJ PP,        ;NO, RETURN\r
+       MOVEM AC1,OUTSQ\r
+       MOVEI   CS,[SIXBIT /LINE@/]\r
+       PUSHJ   PP,TYPM2\r
+       MOVEI AC0,OUTSQ ;PRINT IT\r
+       OUTPUT CTL,0    ;TO MAKE THINGS PRINT IN RIGHT ORDER\r
+       DDTOUT AC0,\r
+       MOVEI C,40\r
+       JRST TYO        ;AND RETURN\r
+\r
+DP1:   IDIVI AC0,^D10\r
+       HRLM AC1,(PP)\r
+       JUMPE   AC0,.+2\r
+       PUSHJ PP,DP1\r
+       HLRZ C,(PP)\r
+       ADDI C,"0"\r
+       JRST TYO\r
+\fRIM0: TDO     FR,AC0          ;SET RIM/RIM10 FLAG\r
+       TLNE    FR,PNCHSW       ;FORGET IT IF PUNCH RESET\r
+       SETSTS  BIN,IB          ;SET TO IMAGE BINARY MODE\r
+       POPJ    PP,\r
+\r
+ROUT:  EXCH CS,RIMLOC\r
+       SUB PP,[XWD 1,1]        ;CLEAR OUT STACK WFW\r
+       TLNE FR,R1BSW\r
+       JRST ROUT6\r
+       TLNN    FR,RIM1SW\r
+       JRST    ROUT1\r
+       JUMPE   CS,ROUT1        ;RIM10 OUTPUT\r
+       SUB     CS,RIMLOC\r
+       JUMPE   CS,ROUT1\r
+       JUMPG   CS,ERRAX\r
+       MOVEI   C,0\r
+       PUSHJ   PP,PTPBIN\r
+       AOJL    CS,.-1\r
+ROUT1: MOVSI   C,(DATAI PTR,)  ;RIM OUTPUT\r
+       HRR C,LOCO              ;GET ADDRESS\r
+       TLNE    FR,RIM1SW       ;NO DATAI IF RIM10\r
+       AOSA    RIMLOC\r
+       PUSHJ   PP,PTPBIN       ;OUTPUT\r
+       MOVE    C,AC0           ;CODE\r
+       AOSA    LOCO            ;INCREMENT CURRENT LOCATION\r
+\r
+OUTBIN:        TLNN    FR,RIMSW!RIM1SW!R1BSW   ;EXIT IF RIM MODE\r
+PTPBIN:        TLNN    FR,PNCHSW       ;EXIT IF PUNCH NOT REQUESTED\r
+       POPJ    PP,\r
+       SOSG    BINBUF+2        ;TEST FOR BUFFER FULL\r
+       PUSHJ   PP,DMPBIN       ;YES, DUMP IT\r
+       IDPB    C,BINBUF+1      ;DEPOSIT BYTE\r
+       POPJ    PP,             ;EXIT\r
+\r
+\fDMPBIN:       OUT     BIN,0           ;DUMP THE BUFFER\r
+       POPJ    PP,             ;NO ERRORS\r
+TSTBIN:        GETSTS  BIN,C           ;GET STSTUS BITS\r
+       TRNN    C,ERRBIT        ;ERROR?\r
+       POPJ    PP,             ;NO, EXIT\r
+       MOVE    AC0,BINDEV      ;YES, GET TAG\r
+       JRST    ERRLST          ;TYPE MESSAGE AND ABORT\r
+\r
+DMPLST:        OUT     LST,0           ;OUTPUT BUFFER\r
+       POPJ    PP,             ;NO ERRORS\r
+TSTLST:        GETSTS  LST,C           ;ANY ERRORS?\r
+       TRNN    C,ERRBIT\r
+       POPJ    PP,             ;NO, EXIT\r
+       MOVE    AC0,LSTDEV\r
+ERRLST:        MOVSI   RC,[SIXBIT /OUTPUT WRITE-LOCK ERROR DEVICE@/]\r
+       TRNE    C,IOIMPM        ;IMPROPER MODE?\r
+       JRST    ERRFIN          ;YES\r
+       MOVSI   RC,[SIXBIT /OUTPUT DATA ERROR DEVICE@/]\r
+       TRNE    C,IODERR        ;DEVICE DATA ERROR?\r
+       JRST    ERRFIN          ;YES\r
+       MOVSI   RC,[SIXBIT /OUTPUT CHECKSUM OR PARITY ERROR DEVICE@/]\r
+       TRNE    C,IODTER        ;IS IT\r
+       JRST    ERRFIN          ;YES\r
+       MOVE    CS,AC0          ;GET DEVICE\r
+       DEVCHR  CS,             ;FIND OUT WHAT IT IS\r
+       MOVSI   RC,[SIXBIT /OUTPUT QUOTA EXCEEDED ON DEVICE@/]\r
+       TLNN    CS,DSKBIT       ;SKIP IF DSK OUTPUT\r
+       MOVSI   RC,[SIXBIT /OUTPUT BLOCK TOO LARGE DEVICE@/]\r
+       JRST    ERRFIN\r
+\f      \r
+R1BDMP:        SETCM CS,R1BCNT\r
+       JUMPE CS,R1BI\r
+       HRLZS C,CS\r
+       HRR C,R1BLOC\r
+       HRRI C,-1(C)\r
+       MOVEM C,R1BCHK\r
+       PUSHJ PP,PTPBIN\r
+       HRRI CS,R1BBLK\r
+R1BDM1:        MOVE C,0(CS)\r
+       ADDM C,R1BCHK\r
+       PUSHJ PP,PTPBIN\r
+       AOBJN CS,R1BDM1\r
+       MOVE C,R1BCHK\r
+       PUSHJ PP,PTPBIN\r
+R1BI:  SETOM R1BCNT\r
+       PUSH PP,LOCO\r
+       POP PP,R1BLOC\r
+       POPJ PP,\r
+\r
+ROUT6: CAME CS,RIMLOC\r
+       PUSHJ PP,R1BDMP\r
+       AOS C,R1BCNT\r
+       MOVEM AC0,R1BBLK(C)\r
+       AOS LOCO\r
+       CAIN C,.R1B-1\r
+       PUSHJ PP,R1BDMP\r
+       AOS RIMLOC\r
+       POPJ PP,\r
+       \r
+\r
+\fREAD0:        PUSHJ   PP,EOT          ;END OF TAPE\r
+\r
+READ:  SOSGE   IBUF+2          ;BUFFER EMPTY?\r
+       JRST    READ3           ;YES\r
+READ1: ILDB    C,IBUF+1        ;PLACE CHARACTER IN C\r
+       MOVE CS,@IBUF+1         ;CHECK FOR SEQUENCE NUMBER\r
+       TRNN CS,1\r
+       JRST READ1A\r
+       CAIN CS,1               ;CHECK FOR SPECIAL\r
+       MOVE CS,[<ASCII/     />+1]\r
+       MOVEM CS,SEQNO\r
+       MOVEM CS,SEQNO2\r
+       MOVNI CS,4\r
+       ADDM CS,IBUF+2          ;ADJUST WORD COUNT\r
+REPEAT 4,<     IBP IBUF+1>     ;SKIP SEQ NO\r
+       PUSHJ PP,READ   ;AND THE TAB\r
+       JRST    READ            ;GET NEXT CHARACTER\r
+\r
+READ1A:        JUMPE   C,READ          ;IGNORE NULL\r
+       CAIN    C,32            ;IF IT'S A "^Z"\r
+       MOVEI   C,LF            ;TREAT IT AS A "LF"\r
+       CAIE    C,37            ;CONTROL _\r
+       POPJ    PP,\r
+       MOVEI   C,"^"           ;MAKE CONTROL-SHIFT _ VISIBLE\r
+       PUSHJ   PP,RSW2\r
+       MOVEI   C,"_"\r
+       PUSHJ   PP,RSW2\r
+READ2: PUSHJ   PP,READ         ;YES, TEST FOR LINE FEED\r
+       PUSHJ   PP,RSW2         ;LIST IN ANY EVENT\r
+       CAIG    C,FF            ;IS IT ONE OF\r
+       CAIGE   C,LF            ;LF, VT, OR FF?\r
+       JRST    READ2           ;NO\r
+       PUSHJ   PP,OUTIM1       ;YES, DUMP THE LINE\r
+       JRST    READ            ;RETURN NEXT CHARACTER\r
+\r
+READ3: IN      CHAR,0          ;GET NEXT BUFFER\r
+       JRST    READ            ;NO ERRORS\r
+       GETSTS  CHAR,C\r
+       TRNN    C,ERRBIT!2000   ;ERRORS?\r
+       JRST    READ0           ;EOF\r
+       MOVE    AC0,INDEV\r
+       MOVSI   RC,[SIXBIT/ INPUT PHYSICAL END OF TAPE DEVICE@/]\r
+       TRNE    C,2000\r
+       JRST    ERRFIN          ;E-O-T\r
+       MOVSI   RC,[SIXBIT /MONITOR DETECTED SOFTWARE INPUT ERROR DEVICE@/]\r
+       TRNE    C,IOIMPM        ;IMPROPER MODE?\r
+       JRST    ERRFIN          ;YES\r
+       MOVSI   RC,[SIXBIT /INPUT DATA ERROR DEVICE@/]\r
+       TRNE    C,IODERR        ;DEVICE DATA ERROR?\r
+       JRST    ERRFIN          ;YES\r
+       MOVSI   RC,[SIXBIT /INPUT CHECKSUM OR PARITY ERROR DEVICE@/]\r
+       TRNN    C,IODTER\r
+       MOVSI   RC,[SIXBIT /INPUT BLOCK TOO LARGE DEVICE@/]\r
+       JRST    ERRFIN\r
+\r
+\fOUTAB2:       PUSHJ   PP,OUTTAB       ;PRINT TWO TABS\r
+OUTTAB:        MOVEI   C,HT\r
+PRINT: CAIE    C,CR            ;IS THIS A CR?\r
+       CAIN    C,LF            ;OR LF?\r
+       JRST    OUTCR           ;YES, GO PROCESS\r
+       CAIN    C,FF            ;FORM FEED?\r
+       JRST    OUTFF           ;YES, FORCE NEW PAGE\r
+       JRST    OUTL\r
+\r
+OUTCR: TRNN    ER,ERRORS!LPTSW!TTYSW\r
+       POPJ    PP,\r
+       MOVEI   C,CR            ;CARRIAGE RETURN, LINE FEED\r
+       PUSHJ   PP,OUTL\r
+       SOSGE   LPP             ;END OF PAGE?\r
+       TLO     IO,IOPAGE       ;YES, SET FLAG\r
+       TRCA    C,7             ;FORM LINE FEED AND SKIP\r
+\r
+OUTL:  TLZN    IO,IOPAGE       ;NEW PAGE REQUESTED?\r
+       JRST    OUTC            ;NO\r
+       JUMP1   OUTC            ;YES, BYPASS IF PASS ONE\r
+       PUSH    PP,C            ;SAVE C AND CS\r
+       PUSH    PP,CS\r
+       PUSH    PP,ER\r
+       TLNN    IO,IOMSTR!IOPROG\r
+       HRR     ER,OUTSW\r
+       TLNE    IO,IOCREF       ;IF DOING CREF OUTPUT NOW\r
+       TLNE    FR,CREFSW       ;AND CREFFING (JUST IN CASE)\r
+       JRST    .+2\r
+       PUSHJ   PP,CLSC3        ;CLOSE IT OUT\r
+       HLLM    IO,(PP)         ;SAVE THIS NEW STATE OF IO\r
+       MOVEI   C,.LPP\r
+       MOVEM   C,LPP           ;SET NEW COUNTER\r
+       MOVEI   C,CR\r
+       PUSHJ   PP,OUTC\r
+       MOVEI   C,FF\r
+       PUSHJ   PP,OUTC         ;OUTPUT FORM FEED\r
+       MOVEI   CS,TBUF\r
+       PUSHJ   PP,OUTAS0       ;OUTPUT TITLE\r
+       MOVEI   CS,VBUF\r
+       PUSHJ   PP,OUTAS0       ;OUTPUT VERSION\r
+       MOVEI   CS,DBUF\r
+       PUSHJ   PP,OUTAS0       ; AND DATE\r
+       MOVE    C,PAGENO\r
+       PUSHJ   PP,DNC          ;OUTPUT PAGE NUMBER\r
+       AOSG    PAGEN.          ;FIRST PAGE OF THIS NUMBER?\r
+       JRST    OUTL1           ;YES\r
+       MOVEI   C,"-"           ;NO, PUT OUT MODIFIER\r
+       PUSHJ   PP,OUTC\r
+       MOVE    C,PAGEN.\r
+       PUSHJ   PP,DNC\r
+OUTL1: PUSHJ   PP,OUTCR\r
+       MOVEI CS,DEVBUF\r
+       PUSHJ PP,OUTAS0\r
+       HRRZ    CS,SUBTTX       ;SWITCH FOR SUB-TITLE\r
+       SKIPE   0(CS)           ;IS THERE A SUB-TITLE?\r
+       PUSHJ   PP,OUTTAB       ;YES, OUTPUT A TAB\r
+       PUSHJ   PP,SOUT20       ;OUTPUT ASCII WITH CARRIAGE RETURN\r
+       PUSHJ   PP,OUTCR\r
+       POP     PP,ER\r
+       POP     PP,CS           ;RESTORE REGISTERS\r
+       POP     PP,C\r
+\r
+OUTC:  TRNE    ER,ERRORS!TTYSW\r
+       PUSHJ   PP,TYO\r
+       TRNN    ER,LPTSW\r
+       POPJ    PP,\r
+OUTLST:        SOSG    LSTBUF+2        ;BUFFER FULL?\r
+       PUSHJ   PP,DMPLST       ;YES, DUMP IT\r
+COMMENT $ REG DOESN'T LIKE THIS FEATURE ANY MORE 9-5-72\r
+$\r
+       IDPB    C,LSTBUF+1      ;STORE BYTE\r
+       POPJ    PP,             ;EXIT\r
+\r
+\fPAGE0:        PUSHJ   PP,STOUTS       ;PAGE PSEUDO-OP\r
+OUTFF1:        TLNE    IO,IOCREF       ;CURRENTLY DOING CREF?\r
+       TLNE    IO,IOPROG       ;AND NOT XLISTED?\r
+       JRST    OUTFF           ;NO\r
+       HRR     ER,OUTSW\r
+       PUSHJ   PP,CLSCRF\r
+       PUSHJ   PP,OUTCR\r
+       HRRI    ER,0\r
+OUTFF: TLO     IO,IOPAGE\r
+OUTFF2:        SETOM   PAGEN.\r
+       AOS     PAGENO\r
+       POPJ    PP,\r
+\r
+TIMOUT:        IDIVI   2,^D60*^D1000\r
+TIMOU1:        IDIVI   2,^D60\r
+       PUSH    PP,3            ;SAVE MINUTES\r
+       PUSHJ   PP,OTOD         ;STORE HOURS\r
+       MOVEI   3,":"           ;SEPARATE BY COLON\r
+       IDPB    3,CS\r
+       POP     PP,2            ;STORE MINUTES\r
+OTOD:  IDIVI   2,^D10\r
+       ADDI    2,60            ;FORM ASCII\r
+       IDPB    2,CS\r
+       ADDI    3,60\r
+       IDPB    3,CS\r
+       POPJ    PP,\r
+\r
+DATOUT:        IDIVI   1,^D31          ;GET DAY\r
+       ADDI    2,1\r
+       CAIG    2,^D9           ;TWO DIGITS?\r
+       ADDI    2,7760*^D10     ;NO, PUT IN SPACE\r
+       PUSHJ   PP,OTOD         ;STORE DAY\r
+       IDIVI   1,^D12          ;GET MONTH\r
+       MOVE    2,DTAB(2)       ;GET MNEMONIC\r
+       IDPB    2,CS            ;DEPOSIT RIGHT MOST 7 BITS\r
+       LSH     2,-7            ;SHIFT NEXT IN\r
+       JUMPN   2,.-2           ;DEPOSIT IFIT EXISTS\r
+       MOVEI   2,^D64(1)       ;GET YEAR\r
+       JRST    OTOD            ;STORE IT\r
+\r
+DTAB:  "-NAJ-"\r
+       "-BEF-"\r
+       "-RAM-"\r
+       "-RPA-"\r
+       "-YAM-"\r
+       "-NUJ-"\r
+       "-LUJ-"\r
+       "-GUA-"\r
+       "-PES-"\r
+       "-TCO-"\r
+       "-VON-"\r
+       "-CED-"\r
+\fSUBTTL        MACHINE INSTRUCTION SEARCH ROUTINES\r
+IFE OPHSH,<\r
+OPTSCH:        MOVEI   RC,0\r
+       MOVEI   ARG,1B^L<OP1END-OP1TOP> ;SET UP INDEX\r
+       MOVEI   V,1B^L<OP1END-OP1TOP>/2 ;SET UP INCREMENT\r
+\r
+OPT1A: CAMN    AC0,OP1TOP(ARG) ;ARE WE POINTING AT SYMBOL?\r
+       JRST    OPT1D           ;YES, GET THE CODE\r
+       JUMPE   V,POPOUT        ;TEST FOR END\r
+       CAML    AC0,OP1TOP(ARG) ;NO, SHOULD WE MOVE DOWN?\r
+       TDOA    ARG,V           ;NO, INCREMENT\r
+OPT1B: SUB     ARG,V           ;YES, DECREMENT\r
+       ASH     V,-1            ;HALVE INCREMENT\r
+       CAIG    ARG,OP1END-OP1TOP       ;ARE WE OUT OF BOUNDS?\r
+       JRST    OPT1A           ;NO, TRY AGAIN\r
+       JRST    OPT1B           ;YES, BRING IT DOWN A PEG\r
+>\r
+\r
+IFN OPHSH,<\r
+OPTSCH:        MOVE    ARG,AC0         ;GET SIXBIT NAME\r
+       TLZ     ARG,400000      ;CLEAR SIGN BIT\r
+       IDIVI   ARG,PRIME       ;REM. GOES IN V\r
+       CAMN    AC0,OP1TOP(V)   ;ARE WE POINTING AT SYMBOL?\r
+       JRST    OPT1D           ;YES\r
+       SKIPN   OP1TOP(V)       ;TEST FOR END\r
+       POPJ    PP,             ;SYMBOL NOT FOUND\r
+       HLRZ    RC,ARG          ;SAVE LHS OF QUOTIENT\r
+       SKIPA   ARG,RC          ;GET IT BACK\r
+OPT1A: ADDI    ARG,(RC)        ;INCREMENT ARG\r
+       ADDI    V,(ARG)         ;QUADRATIC INCREASE TO V\r
+       CAIL    V,PRIME         ;V IS MODULO PRIME\r
+       JRST    [SUBI   V,PRIME\r
+               JRST    .-1]\r
+       CAMN    AC0,OP1TOP(V)   ;IS THIS IT?\r
+       JRST    OPT1D           ;YES\r
+       SKIPE   OP1TOP(V)       ;END?\r
+       JRST    OPT1A           ;TRY AGAIN\r
+       POPJ    PP,             ;FAILED\r
+>\r
+OPT1D:\r
+IFN OPHSH,<    SETZ    RC,     ;CLEAR RELOCATION\r
+       MOVE    ARG,V           ;GET INDEX IN RIGHT ACC.>\r
+       IDIVI   ARG,4           ;ARG HAS INDEX USED IN OPTTAB\r
+       LDB     V,OPTTAB(V)     ;V HAS INDEX TO OPTTAB\r
+       CAIL    V,700           ;PSEUDO-OP OR IO INSTRUCTION?\r
+       JRST    OPT1G           ;YES\r
+       ROT     V,-^D9          ;LEFT JUSTIFY\r
+       HRRI    V,OP            ;POINT TO BASIC FORMAT\r
+OPT1F: AOS     0(PP)           ;SET FOR SKIP EXIT\r
+       MOVEI   SDEL,%OP        ;SET OP-CODE CROSS-REF FLAG\r
+       JRST    CREF            ;TEST AND OUTPUT, AC0=SYMBOL, V=VALUE\r
+\r
+OPT1G: JUMPG   AC0,.+3         ;IF ".","$",OR "%" USE TABLE 1\r
+       TLNN    AC0,200000      ;PSEUDO-OP OR IO INST., TEST FOR PROPER TABLE\r
+       SKIPA   V,OP2TAB-700(V) ;2ND TABLE, FIRST LETTER IS "A" TO "O"\r
+       MOVE    V,OP1TAB-700(V) ;1ST TABLE, ..."P" TO "Z"\r
+       JRST    OPT1F           ;EXIT\r
+\r
+OPTTAB:\r
+IFE OPHSH,<    POINT   9,OP1COD-1(ARG),35>\r
+       POINT   9,OP1COD  (ARG), 8\r
+       POINT   9,OP1COD  (ARG),17\r
+       POINT   9,OP1COD  (ARG),26\r
+IFN OPHSH,<    POINT   9,OP1COD  (ARG),35>\r
+\r
+\fIFDEF .XCREF,<        .XCREF  ;DON'T CREF THIS MESS>\r
+IFE OPHSH,<\r
+       RELOC   .-1\r
+OP1TOP:\r
+       RELOC\r
+\r
+       IF1,<N1=0\r
+       DEFINE  X  <N1=N1+1 ;>>\r
+\r
+       IF2, <\r
+       N2=^D36\r
+       CC=0\r
+       RELOC   OP1COD\r
+       RELOC\r
+DEFINE X (SYMBOL,CODE) \r
+<SIXBIT /SYMBOL/\r
+CC=CC+CODE_<N2=N2-9>\r
+IFE N2, <OUTLIT>>\r
+\r
+DEFINE OUTLIT  <\r
+       RELOC\r
+       +CC\r
+       RELOC\r
+N2=^D36+<CC=0>>>\r
+       SYN X,XX                ;JUST THE SAME MACRO>\r
+\f\r
+IFN OPHSH,<\r
+DEFINE XX (SB,CD)<>            ;A NUL MACRO\r
+OP1TOP:        IF1,<   BLOCK PRIME>\r
+IF1,<DEFINE X (SB,CD)<>>\r
+IF2,<\r
+DEFINE OPSTOR (RM)<.$'RM=.$'RM+<OPCODE_<9*<3-R&3>>>>\r
+\r
+DEFINE X (SB,CD)<\r
+SXB=<SIXBIT /SB/>\r
+Q=SXB&-1_-1/PRIME\r
+R=SXB&-1_-1-Q*PRIME\r
+H=Q_-22&777\r
+TRY=1\r
+OPCODE=CD\r
+ITEM Q,\R\r
+IFL PRIME-TRY,<PRINTX HASH FAILURE>>\r
+\r
+DEFINE ITEM (QT,RM)<\r
+IFN .%'RM,<R=R+H\r
+IFL PRIME-R,<R=R-R/PRIME*PRIME>\r
+H=H+Q_-22&777\r
+IFGE PRIME-<TRY=TRY+1>,<ITEM Q,\R>>\r
+IFE .%'RM,<.%'RM=SXB\r
+OPSTOR \<R/4>>>>\r
+IF1,<\r
+DEFINE GETSYM (N)<.%'N=0>\r
+\r
+N=0\r
+       XLIST\r
+REPEAT PRIME,<GETSYM \N\r
+N=N+1>\r
+DEFINE GETSYM (N)<.$'N=0>\r
+N=0\r
+REPEAT <PRIME/4+1>,<GETSYM \N\r
+N=N+1>\r
+>\r
+       LIST>\r
+\r
+\fIFN OPHSH,<           ;PUT THE MOST USED OP CODES FIRST\r
+X      JRST  , 254\r
+X      PUSHJ , 260\r
+X      POPJ  , 263\r
+X      PUSH  , 261\r
+X      POP   , 262\r
+X      AOS   , 350\r
+X      ASCIZ , 701\r
+X      CALLI , 047\r
+X      EXTERN, 724\r
+X      INTERN, 744\r
+X      JFCL  , 255\r
+X      JSP   , 265\r
+X      MOVE  , 200\r
+X      MOVEI , 201\r
+X      MOVEM , 202\r
+X      SETZM , 402\r
+X      SIXBIT, 717\r
+X      SOS   , 370\r
+X      TLNE  , 603\r
+X      TLNN  , 607\r
+X      TLO   , 661\r
+X      TLZ   , 621\r
+X      TLZA  , 625\r
+X      TLZE  , 623\r
+X      TLZN  , 627\r
+X      TRNE  , 602\r
+X      TRNN  , 606\r
+X      TRZ   , 620\r
+>\r
+\fX     ADD   , 270\r
+X      ADDB  , 273\r
+X      ADDI  , 271\r
+X      ADDM  , 272\r
+\r
+X      AND   , 404\r
+X      ANDB  , 407\r
+X      ANDCA , 410\r
+X      ANDCAB, 413\r
+X      ANDCAI, 411\r
+X      ANDCAM, 412\r
+X      ANDCB , 440\r
+X      ANDCBB, 443\r
+X      ANDCBI, 441\r
+X      ANDCBM, 442\r
+X      ANDCM , 420\r
+X      ANDCMB, 423\r
+X      ANDCMI, 421\r
+X      ANDCMM, 422\r
+X      ANDI  , 405\r
+X      ANDM  , 406\r
+\r
+X      AOBJN , 253\r
+X      AOBJP , 252\r
+\r
+X      AOJ   , 340\r
+X      AOJA  , 344\r
+X      AOJE  , 342\r
+X      AOJG  , 347\r
+X      AOJGE , 345\r
+X      AOJL  , 341\r
+X      AOJLE , 343\r
+X      AOJN  , 346\r
+\r
+XX     AOS   , 350\r
+X      AOSA  , 354\r
+X      AOSE  , 352\r
+X      AOSG  , 357\r
+X      AOSGE , 355\r
+X      AOSL  , 351\r
+X      AOSLE , 353\r
+X      AOSN  , 356\r
+X      ARG   , 320\r
+IFN IIISW,<X   ASCID , 771>\r
+X      ASCII , 700\r
+XX     ASCIZ , 701\r
+\r
+X      ASH   , 240\r
+X      ASHC  , 244\r
+\r
+X      ASUPPR, 705\r
+X      BLKI  , 702\r
+X      BLKO  , 703\r
+X      BLOCK , 704\r
+\r
+X      BLT   , 251\r
+\r
+X      BYTE  , 707\r
+\r
+XX     CAI   , 300\r
+X      CAIA  , 304\r
+X      CAIE  , 302\r
+X      CAIG  , 307\r
+X      CAIGE , 305\r
+X      CAIL  , 301\r
+X      CAILE , 303\r
+X      CAIN  , 306\r
+\r
+X      CALL  , 040\r
+XX     CALLI , 047\r
+\r
+XX     CAM   , 310\r
+X      CAMA  , 314\r
+X      CAME  , 312\r
+X      CAMG  , 317\r
+X      CAMGE , 315\r
+X      CAML  , 311\r
+X      CAMLE , 313\r
+X      CAMN  , 316\r
+\r
+XX     CLEAR , 400\r
+XX     CLEARB, 403\r
+XX     CLEARI, 401\r
+XX     CLEARM, 402\r
+\r
+X      CLOSE , 070\r
+X      COMMEN, 770\r
+\r
+\r
+X      CONI  , 710\r
+X      CONO  , 711\r
+X      CONSO , 712\r
+X      CONSZ , 713\r
+\r
+XX     DATA. , 020\r
+\r
+X      DATAI , 714\r
+X      DATAO , 715\r
+X      DEC   , 716\r
+X      DEFINE, 717\r
+X      DEPHAS, 720\r
+\r
+X      DFN   , 131\r
+\r
+X      DIV   , 234\r
+X      DIVB  , 237\r
+X      DIVI  , 235\r
+X      DIVM  , 236\r
+\r
+\r
+X      DPB   , 137\r
+X      DPBI  , 136\r
+\r
+X      END   , 721\r
+\r
+X      ENTER , 077\r
+\r
+X      ENTRY , 722\r
+\r
+X      EQV   , 444\r
+X      EQVB  , 447\r
+X      EQVI  , 445\r
+X      EQVM  , 446\r
+\r
+X      EXCH  , 250\r
+\r
+X      EXP   , 723\r
+XX     EXTERN, 724\r
+\r
+X      FAD   , 140\r
+X      FADB  , 143\r
+X      FADL  , 141\r
+X      FADM  , 142\r
+\r
+X      FADR  , 144\r
+X      FADRB , 147\r
+X      FADRI , 145\r
+X      FADRM , 146\r
+\r
+X      FDV   , 170\r
+X      FDVB  , 173\r
+X      FDVL  , 171\r
+X      FDVM  , 172\r
+\r
+X      FDVR  , 174\r
+X      FDVRB , 177\r
+X      FDVRI , 175\r
+X      FDVRM , 176\r
+\r
+XX     FIN.  , 021\r
+\r
+\r
+X      FMP   , 160\r
+X      FMPB  , 163\r
+X      FMPL  , 161\r
+X      FMPM  , 162\r
+\r
+\fX     FMPR  , 164\r
+X      FMPRB , 167\r
+X      FMPRI , 165\r
+X      FMPRM , 166\r
+\r
+X      FSB   , 150\r
+X      FSBB  , 153\r
+X      FSBL  , 151\r
+X      FSBM  , 152\r
+\r
+X      FSBR  , 154\r
+X      FSBRB , 157\r
+X      FSBRI , 155\r
+X      FSBRM , 156\r
+\r
+X      FSC   , 132\r
+\r
+X      GETSTS, 062\r
+\r
+\fX     HALT  , 725\r
+X      HISEG , 706\r
+\r
+X      HLL   , 500\r
+X      HLLE  , 530\r
+X      HLLEI , 531\r
+X      HLLEM , 532\r
+X      HLLES , 533\r
+X      HLLI  , 501\r
+X      HLLM  , 502\r
+X      HLLO  , 520\r
+X      HLLOI , 521\r
+X      HLLOM , 522\r
+X      HLLOS , 523\r
+X      HLLS  , 503\r
+X      HLLZ  , 510\r
+X      HLLZI , 511\r
+X      HLLZM , 512\r
+X      HLLZS , 513\r
+\r
+X      HLR   , 544\r
+X      HLRE  , 574\r
+X      HLREI , 575\r
+X      HLREM , 576\r
+X      HLRES , 577\r
+X      HLRI  , 545\r
+X      HLRM  , 546\r
+X      HLRO  , 564\r
+X      HLROI , 565\r
+X      HLROM , 566\r
+X      HLROS , 567\r
+X      HLRS  , 547\r
+X      HLRZ  , 554\r
+X      HLRZI , 555\r
+X      HLRZM , 556\r
+X      HLRZS , 557\r
+\r
+\fX     HRL   , 504\r
+X      HRLE  , 534\r
+X      HRLEI , 535\r
+X      HRLEM , 536\r
+X      HRLES , 537\r
+X      HRLI  , 505\r
+X      HRLM  , 506\r
+X      HRLO  , 524\r
+X      HRLOI , 525\r
+X      HRLOM , 526\r
+X      HRLOS , 527\r
+X      HRLS  , 507\r
+X      HRLZ  , 514\r
+X      HRLZI , 515\r
+X      HRLZM , 516\r
+X      HRLZS , 517\r
+\r
+X      HRR   , 540\r
+X      HRRE  , 570\r
+X      HRREI , 571\r
+X      HRREM , 572\r
+X      HRRES , 573\r
+X      HRRI  , 541\r
+X      HRRM  , 542\r
+X      HRRO  , 560\r
+X      HRROI , 561\r
+X      HRROM , 562\r
+X      HRROS , 563\r
+X      HRRS  , 543\r
+X      HRRZ  , 550\r
+X      HRRZI , 551\r
+X      HRRZM , 552\r
+X      HRRZS , 553\r
+\r
+X      IBP   , 133\r
+\r
+X      IDIV  , 230\r
+X      IDIVB , 233\r
+X      IDIVI , 231\r
+X      IDIVM , 232\r
+\r
+X      IDPB  , 136\r
+\r
+X      IF1   , 726\r
+X      IF2   , 727\r
+X      IFB   , 730\r
+X      IFDEF , 731\r
+X      IFDIF , 732\r
+X      IFE   , 733\r
+X      IFG   , 734\r
+X      IFGE  , 735\r
+X      IFIDN , 736\r
+X      IFL   , 737\r
+X      IFLE  , 740\r
+X      IFN   , 741\r
+X      IFNB  , 742\r
+X      IFNDEF, 743\r
+\r
+X      ILDB  , 134\r
+\r
+X      IMUL  , 220\r
+X      IMULB , 223\r
+X      IMULI , 221\r
+X      IMULM , 222\r
+\r
+X      IN    , 056\r
+XX     IN.   , 016\r
+X      INBUF , 064\r
+XX     INF.  , 026\r
+X      INIT  , 041\r
+X      INPUT , 066\r
+\r
+XX     INTERN, 744\r
+\r
+X      IOR   , 434\r
+X      IORB  , 437\r
+X      IORI  , 435\r
+X      IORM  , 436\r
+\r
+\r
+X      IOWD  , 745\r
+X      IRP   , 746\r
+X      IRPC  , 747\r
+X      JCRY  , 750\r
+X      JCRY0 , 751\r
+X      JCRY1 , 752\r
+X      JEN   , 753\r
+\r
+XX     JFCL  , 255\r
+\r
+X      JFFO  , 243\r
+X      JFOV  , 765\r
+X      JOV   , 754\r
+\r
+X      JRA   , 267\r
+XX     JRST  , 254\r
+\r
+X      JRSTF , 755\r
+\r
+X      JSA   , 266\r
+XX     JSP   , 265\r
+X      JSR   , 264\r
+\r
+XX     JUMP  , 320\r
+XX     JUMPA , 324\r
+X      JUMPE , 322\r
+X      JUMPG , 327\r
+X      JUMPGE, 325\r
+X      JUMPL , 321\r
+X      JUMPLE, 323\r
+X      JUMPN , 326\r
+\r
+X      LALL  , 756\r
+\r
+X      LDB   , 135\r
+X      LDBI  , 134\r
+\r
+\r
+X      LIST  , 757\r
+X      LIT   , 760\r
+X      LOC   , 761\r
+\r
+X      LOOKUP, 076\r
+\r
+X      LSH   , 242\r
+X      LSHC  , 246\r
+X      MLOFF , 767\r
+X      MLON  , 766\r
+XX     MOVE  , 200\r
+XX     MOVEI , 201\r
+XX     MOVEM , 202\r
+X      MOVES , 203\r
+X      MOVM  , 214\r
+X      MOVMI , 215\r
+X      MOVMM , 216\r
+X      MOVMS , 217\r
+X      MOVN  , 210\r
+X      MOVNI , 211\r
+X      MOVNM , 212\r
+X      MOVNS , 213\r
+X      MOVS  , 204\r
+X      MOVSI , 205\r
+X      MOVSM , 206\r
+X      MOVSS , 207\r
+\r
+\r
+X      MTAPE , 072\r
+XX     MTOP. , 024\r
+\r
+X      MUL   , 224\r
+X      MULB  , 227\r
+X      MULI  , 225\r
+X      MULM  , 226\r
+XX     NLI.  , 031\r
+XX     NLO.  , 032\r
+\r
+X      NOSYM , 762\r
+\r
+\fX     OCT   , 763\r
+X      OPDEF , 764\r
+\r
+X      OPEN  , 050\r
+\r
+X      OR    , 434\r
+X      ORB   , 437\r
+X      ORCA  , 454\r
+X      ORCAB , 457\r
+X      ORCAI , 455\r
+X      ORCAM , 456\r
+X      ORCB  , 470\r
+X      ORCBB , 473\r
+\r
+X      ORCBI , 471\r
+X      ORCBM , 472\r
+X      ORCM  , 464\r
+X      ORCMB , 467\r
+X      ORCMI , 465\r
+X      ORCMM , 466\r
+X      ORI   , 435\r
+X      ORM   , 436\r
+\r
+X      OUT   , 057\r
+XX     OUT.  , 017\r
+X      OUTBUF, 065\r
+XX     OUTF. , 027\r
+X      OUTPUT, 067\r
+\r
+\fX     PAGE  , 700\r
+X      PASS2 , 701\r
+X      PHASE , 702\r
+X      POINT , 703\r
+\r
+XX     POP   , 262\r
+XX     POPJ  , 263\r
+\r
+X      PRGEND, 714\r
+X      PRINTX, 704\r
+X      PURGE , 705\r
+\r
+XX     PUSH  , 261\r
+XX     PUSHJ , 260\r
+\r
+X      RADIX , 706\r
+X      RADIX5, 707\r
+\r
+X      RELEAS, 071\r
+\r
+X      RELOC , 710\r
+X      REMARK, 711\r
+\r
+X      RENAME, 055\r
+\r
+X      REPEAT, 712\r
+\r
+XX     RESET., 015\r
+X      RIM   , 715\r
+X      RIM10 , 735\r
+X      RIM10B, 736\r
+\r
+X      ROT   , 241\r
+X      ROTC  , 245\r
+\r
+X      RSW   , 716\r
+XX     RTB.  , 022\r
+X      SALL  , 720\r
+IFN UNIVR,<X   SEARCH, 721>\r
+\r
+X      SETA  , 424\r
+X      SETAB , 427\r
+X      SETAI , 425\r
+X      SETAM , 426\r
+X      SETCA , 450\r
+X      SETCAB, 453\r
+X      SETCAI, 451\r
+X      SETCAM, 452\r
+X      SETCM , 460\r
+X      SETCMB, 463\r
+X      SETCMI, 461\r
+X      SETCMM, 462\r
+X      SETM  , 414\r
+X      SETMB , 417\r
+X      SETMI , 415\r
+X      SETMM , 416\r
+X      SETO  , 474\r
+X      SETOB , 477\r
+X      SETOI , 475\r
+X      SETOM , 476\r
+X      SETSTS, 060\r
+X      SETZ  , 400\r
+X      SETZB , 403\r
+X      SETZI , 401\r
+XX     SETZM , 402\r
+\r
+XX     SIXBIT, 717\r
+\r
+XX     SKIP  , 330\r
+X      SKIPA , 334\r
+X      SKIPE , 332\r
+X      SKIPG , 337\r
+X      SKIPGE, 335\r
+X      SKIPL , 331\r
+X      SKIPLE, 333\r
+X      SKIPN , 336\r
+\r
+XX     SLIST., 025\r
+\r
+X      SOJ   , 360\r
+X      SOJA  , 364\r
+X      SOJE  , 362\r
+X      SOJG  , 367\r
+X      SOJGE , 365\r
+X      SOJL  , 361\r
+X      SOJLE , 363\r
+X      SOJN  , 366\r
+\r
+XX     SOS   , 370\r
+X      SOSA  , 374\r
+X      SOSE  , 372\r
+X      SOSG  , 377\r
+X      SOSGE , 375\r
+X      SOSL  , 371\r
+X      SOSLE , 373\r
+X      SOSN  , 376\r
+\r
+X      SQUOZE, 707\r
+\r
+X      STATO , 061\r
+X      STATUS, 062\r
+X      STATZ , 063\r
+\r
+X      STOPI , 722\r
+\r
+X      SUB   , 274\r
+X      SUBB  , 277\r
+X      SUBI  , 275\r
+X      SUBM  , 276\r
+\r
+IF2,<IFE OPHSH,<SUBTL:>>\r
+X      SUBTTL, 723\r
+X      SUPPRE, 713\r
+X      SYN   , 724\r
+X      TAPE  , 725\r
+\r
+\fX     TDC   , 650\r
+X      TDCA  , 654\r
+X      TDCE  , 652\r
+X      TDCN  , 656\r
+X      TDN   , 610\r
+X      TDNA  , 614\r
+X      TDNE  , 612\r
+X      TDNN  , 616\r
+X      TDO   , 670\r
+X      TDOA  , 674\r
+X      TDOE  , 672\r
+X      TDON  , 676\r
+X      TDZ   , 630\r
+X      TDZA  , 634\r
+X      TDZE  , 632\r
+X      TDZN  , 636\r
+\r
+X      TITLE , 726\r
+\r
+X      TLC   , 641\r
+X      TLCA  , 645\r
+X      TLCE  , 643\r
+X      TLCN  , 647\r
+X      TLN   , 601\r
+X      TLNA  , 605\r
+XX     TLNE  , 603\r
+XX     TLNN  , 607\r
+XX     TLO   , 661\r
+X      TLOA  , 665\r
+X      TLOE  , 663\r
+X      TLON  , 667\r
+XX     TLZ   , 621\r
+XX     TLZA  , 625\r
+XX     TLZE  , 623\r
+XX     TLZN  , 627\r
+\r
+\fX     TRC   , 640\r
+X      TRCA  , 644\r
+X      TRCE  , 642\r
+X      TRCN  , 646\r
+X      TRN   , 600\r
+X      TRNA  , 604\r
+XX     TRNE  , 602\r
+XX     TRNN  , 606\r
+X      TRO   , 660\r
+X      TROA  , 664\r
+X      TROE  , 662\r
+X      TRON  , 666\r
+XX     TRZ   , 620\r
+X      TRZA  , 624\r
+X      TRZE  , 622\r
+X      TRZN  , 626\r
+\r
+X      TSC   , 651\r
+X      TSCA  , 655\r
+X      TSCE  , 653\r
+X      TSCN  , 657\r
+X      TSN   , 611\r
+X      TSNA  , 615\r
+X      TSNE  , 613\r
+\r
+X      TSNN  , 617\r
+X      TSO   , 671\r
+X      TSOA  , 675\r
+X      TSOE  , 673\r
+X      TSON  , 677\r
+X      TSZ   , 631\r
+X      TSZA  , 635\r
+X      TSZE  , 633\r
+X      TSZN  , 637\r
+X      TTCALL, 051\r
+X      TWOSEG, 731\r
+X      UFA   , 130\r
+X      UGETF , 073\r
+X      UJEN  , 100\r
+IFN UNIVR,<X   UNIVER, 737>\r
+X      USETI , 074\r
+X      USETO , 075\r
+\r
+X      VAR   , 727\r
+\r
+XX     WTB.  , 023\r
+\r
+X      XALL  , 732\r
+\r
+X      XCT   , 256\r
+\r
+X      XLIST , 733\r
+\r
+X      XOR   , 430\r
+X      XORB  , 433\r
+X      XORI  , 431\r
+X      XORM  , 432\r
+\r
+X      XPUNGE, 730\r
+X      XWD   , 734\r
+\r
+X      Z     , 000\r
+\r
+X      .CREF , 740\r
+X      .HWFRM, 742\r
+X      .MFRMT, 743\r
+X      .XCREF, 741\r
+\r
+\r
+\fIFN OPHSH,<           ;NO-OPS, OLD MNEMONICS,F4 UUOS\r
+X      CAI   , 300\r
+X      CAM   , 310\r
+X      CLEAR , 400\r
+X      CLEARB, 403\r
+X      CLEARI, 401\r
+X      CLEARM, 402\r
+X      JUMP  , 320\r
+X      JUMPA , 324\r
+X      SKIP  , 330\r
+X      RESET., 015\r
+X      IN.   , 016\r
+X      OUT.  , 017\r
+X      DATA. , 020\r
+X      FIN.  , 021\r
+X      RTB.  , 022\r
+X      WTB.  , 023\r
+X      MTOP. , 024\r
+X      SLIST., 025\r
+X      INF.  , 026\r
+X      OUTF. , 027\r
+X      NLI.  , 031\r
+X      NLO.  , 032\r
+>\r
+\fIFE OPHSH,<\r
+IF1, < BLOCK   N1>\r
+OP1END:        -1B36\r
+OP1COD:        BLOCK   N1/4\r
+       CC>\r
+IFN OPHSH,<\r
+IF2,<\r
+DEFINE SETVAL (N)<EXP  .%'N\r
+PURGE .%'N>\r
+N=0\r
+XLIST\r
+REPEAT PRIME,<SETVAL \N\r
+N=N+1>\r
+LIST\r
+>\r
+OP1COD:        IF1,<   BLOCK <PRIME/4+1>>\r
+IF2,<\r
+DEFINE SETVAL (N)<EXP  .$'N\r
+PURGE .$'N>\r
+N=0\r
+XLIST\r
+REPEAT <PRIME/4+1>,<SETVAL     \N\r
+N=N+1>\r
+>\r
+LIST>\r
+\r
+IFDEF .CREF,<  .CREF   ;START CREFFING AGAIN>\r
+\fSUBTTL        PERMANENT SYMBOLS\r
+SYMNUM:        EXP     LENGTH/2        ;NUMBER OF PERMANENT SYMBOLS\r
+DEFINE P       (A,B)<\r
+       SIXBIT  /A/\r
+       XWD     SYMF!NOOUTF,B>\r
+\r
+P      @,      0(SUPRBT)\r
+P      ??????, 0(SUPRBT)\r
+\r
+LENGTH= .-SYMNUM-1                     ;LENGTH OF INITIAL SYMBOLS\r
+\r
+PRMTBL:                        ;PERMANENT SYMBOLS\r
+P      ADC,    24\r
+P      APR,    0\r
+P      CCI,    14\r
+P      CDP,    110\r
+P      CDR,    114\r
+P      CPA,    0\r
+P      CR,     150\r
+P      DC,     200\r
+P      DCSA,   300\r
+P      DCSB,   304\r
+P      DF,     270\r
+P      DIS,    130\r
+P      DLS,    240\r
+P      DPC,    250\r
+P      DSK,    170\r
+P      DTC,    320\r
+P      DTS,    324\r
+P      LPT,    124\r
+P      MDF,    260\r
+P      MTC,    220\r
+P      MTM,    230\r
+P      MTS,    224\r
+P      PAG,    10\r
+P      PI,     4\r
+P      PLT,    140\r
+P      PTP,    100\r
+P      PTR,    104\r
+\r
+P      TMC,    340\r
+P      TMS,    344\r
+P      TTY,    120\r
+P      UTC,    210\r
+P      UTS,    214\r
+IFE LNSSW,<    XLIST   >\r
+IFN LNSSW,<    ;SPECIAL DEVICES FOR PEPR\r
+P .A,550\r
+P .AB,434\r
+P .ANG,440\r
+P .B,554\r
+P .BITE,470\r
+P .FA,564\r
+P .GAIN,520\r
+P .GATE,444\r
+P .IA,560\r
+P .INC,514\r
+P .LC,474\r
+P .LG,570\r
+P .PEPR,400\r
+P .RG,574\r
+P .SCON,430\r
+P .STAT,410\r
+P .TC,500\r
+P .TED,540\r
+P .THR,544\r
+P .TRK,404\r
+P .VIEW,524>\r
+       LIST\r
+PRMEND:                                ;END OF PERMANENT SYMBOLS\r
+\r
+\f      OPDEF   ZL      [Z      LITF]   ;INVALID IN LITERALS\r
+       OPDEF   ZA      [Z      ADDF]   ;INVALID IN ADDRESSES\r
+       OPDEF   ZAL     [Z      ADDF!LITF]\r
+\r
+OP1TAB:\r
+\r
+       ZA      PAGE0                   ;PAGE\r
+       ZAL     PASS20                  ;PASS2\r
+       ZAL     PHASE0                  ;PHASE\r
+       Z       POINT0                  ;POINT\r
+       ZA      PRNTX0                  ;PRINTX\r
+       ZA      PURGE0                  ;PURGE\r
+       ZA      RADIX0                  ;RADIX\r
+       Z       RADX50                  ;RADIX50,SQUOZE\r
+       ZAL     LOC0    (1)             ;RELOC\r
+       ZAL     REMAR0                  ;REMARK\r
+       ZA      REPEA0                  ;REPEAT\r
+       ZA      SUPRE0                  ;SUPRESS\r
+       ZAL     PSEND0                  ;PRGEND\r
+       ZAL     RIM0    (RIMSW)         ;RIM\r
+       DATAI   0,IOP                   ;RSW\r
+       Z       ASCII0  (1)             ;SIXBIT\r
+       ZAL     IOSET   (IOPALL!IOSALL) ;SALL\r
+IFN UNIVR,<    ZAL     SERCH0                  ;SEARCH>\r
+IFE UNIVR,<    Z       0>\r
+       ZA      STOPI0                  ;STOPI\r
+       ZA      SUBTT0  (Z (POINT 7,,)) ;SUBTTL\r
+       ZA      SYN0                    ;SYN\r
+       ZAL     TAPE0                   ;TAPE\r
+       ZA      TITLE0  (Z (POINT 7,,)) ;TITLE\r
+       ZAL     VAR0                    ;VAR\r
+\r
+       Z       XPUNG0                  ;XPUNGE\r
+       ZAL     TWSEG0                  ;TWOSEGMENTS\r
+       ZAL     XALL0   (IOPALL)        ;XALL\r
+       ZAL     IOSET   (IOPROG)        ;XLIST\r
+       Z       XWD0                    ;XWD\r
+       ZAL     RIM0    (RIM1SW)        ;RIM10\r
+       ZAL     RIM0    (R1BSW)         ;RIM10B\r
+IFN UNIVR,<    ZA      UNIV0   (Z (POINT 7,,)) ;UNIVERSAL>\r
+IFE UNIVR,<    Z       0       ;UNIVERSAL>\r
+       ZAL     IORSET  (IONCRF)        ;.CREF\r
+       ZAL     IOSET   (IONCRF)        ;.XCREF\r
+       ZA      OFFORM                  ;.HWFRMT\r
+       ZA      ONFORM                  ;.MFRMT\r
+\fOP2TAB:\r
+\r
+       Z       ASCII0  (0)             ;ASCII\r
+       Z       ASCII0  (1B18)          ;ASCIZ\r
+       BLKI    IOP                     ;BLKI\r
+       BLKO    IOP                     ;BLKO\r
+       ZAL     BLOCK0                  ;BLOCK\r
+       ZA      SUPRSA                  ;ASUPPRESS\r
+       ZAL     HISEG0                  ;HISEG\r
+       Z       BYTE0                   ;BYTE\r
+       CONI    IOP                     ;CONI\r
+       CONO    IOP                     ;CONO\r
+       CONSO   IOP                     ;CONSO\r
+       CONSZ   IOP                     ;CONSZ\r
+       DATAI   IOP                     ;DATAI\r
+       DATAO   IOP                     ;DATAO\r
+       Z       OCT0    (^D10)          ;DEC\r
+       ZA      DEFIN0                  ;DEFINE\r
+\r
+       ZAL     DEPHA0                  ;DEPHASE\r
+       ZAL     END0                    ;END\r
+       ZA      INTER0  (INTF!ENTF)     ;ENTRY\r
+       Z       EXPRES                  ;EXP\r
+       ZA      EXTER0                  ;EXTERN\r
+       JRST    4,OP                    ;HALT\r
+       TLNN    FR,IFPASS               ;IF1\r
+       TLNE    FR,IFPASS               ;IF2\r
+\r
+       TRNE    AC0,IFB0                ;IFB\r
+       TLNE    ARG,IFDEF0              ;IFDEF\r
+       Z       IFIDN0  (0)             ;IFDIF\r
+       SKIPE   IF                      ;IFE\r
+       SKIPG   IF                      ;IFG\r
+       SKIPGE  IF                      ;IFGE\r
+       Z       IFIDN0  (1)             ;IFIDN\r
+       SKIPL   IF                      ;IFL\r
+\r
+       SKIPLE  IF                      ;IFLE\r
+       SKIPN   IF                      ;IFN\r
+       TRNN    AC0,IFB0                ;IFNB\r
+       TLNN    ARG,IFDEF0              ;IFNDEF\r
+       ZA      INTER0  (INTF)          ;INTERN\r
+       Z       IOWD0                   ;IOWD\r
+       Z       IRP0    (0)             ;IRP\r
+       Z       IRP0    (400000)        ;IRPC\r
+\r
+       JFCL    6,OP                    ;JCRY\r
+       JFCL    4,OP                    ;JCRY0\r
+       JFCL    2,OP                    ;JCRY1\r
+       JRST    12,OP                   ;JEN\r
+       JFCL    10,OP                   ;JOV\r
+       JRST    2,OP                    ;JRSTF\r
+       ZAL     IORSET  (IOPALL!IOSALL) ;LALL\r
+       ZAL     IORSET  (IOPROG)        ;LIST\r
+       ZAL     LIT0                    ;LIT\r
+       ZAL     LOC0    (0)             ;LOC\r
+       ZA      OFFSYM                  ;NOSYM\r
+       Z       OCT0    (^D8)           ;OCT\r
+       ZA      OPDEF0                  ;OPDEF\r
+       JFCL    1,OP                    ;JFOV\r
+       ZA      ONML                    ;MLON\r
+       ZA      OFFML                   ;MLOFF\r
+       Z       ASCII0  (3B19)          ;COMMENT\r
+IFN IIISW,<\r
+       Z       ASCII0  (5B20)          ;ASCID>\r
+\f\r
+CALTBL:\r
+                               ;USER DEFINED CALLI'S GO HERE\r
+       SIXBIT  /LIGHTS/        ;-1\r
+CALLI0:        SIXBIT  /RESET/         ; 0\r
+       SIXBIT  /DDTIN/         ; 1\r
+       SIXBIT  /SETDDT/        ; 2\r
+       SIXBIT  /DDTOUT/        ; 3\r
+       SIXBIT  /DEVCHR/        ; 4\r
+       SIXBIT  /DDTGT/         ; 5\r
+       SIXBIT  /GETCHR/        ; 6\r
+       SIXBIT  /DDTRL/         ; 7\r
+       SIXBIT  /WAIT/          ;10\r
+       SIXBIT  /CORE/          ;11\r
+       SIXBIT  /EXIT/          ;12\r
+       SIXBIT  /UTPCLR/        ;13\r
+       SIXBIT  /DATE/          ;14\r
+       SIXBIT  /LOGIN/         ;15\r
+       SIXBIT  /APRENB/        ;16\r
+       SIXBIT  /LOGOUT/        ;17\r
+       SIXBIT  /SWITCH/        ;20\r
+       SIXBIT  /REASSI/        ;21\r
+       SIXBIT  /TIMER/         ;22\r
+       SIXBIT  /MSTIME/        ;23\r
+       SIXBIT  /GETPPN/        ;24\r
+       SIXBIT  /TRPSET/        ;25\r
+       SIXBIT  /TRPJEN/        ;26\r
+       SIXBIT  /RUNTIM/        ;27\r
+       SIXBIT  /PJOB/          ;30\r
+       SIXBIT  /SLEEP/         ;31\r
+       SIXBIT  /SETPOV/        ;32\r
+       SIXBIT  /PEEK/          ;33\r
+       SIXBIT  /GETLIN/        ;34\r
+       SIXBIT  /RUN/           ;35\r
+       SIXBIT  /SETUWP/        ;36\r
+       SIXBIT  /REMAP/         ;37\r
+       SIXBIT  /GETSEG/        ;40\r
+       SIXBIT  /GETTAB/        ;41\r
+       SIXBIT  /SPY/           ;42\r
+       SIXBIT  /SETNAM/        ;43\r
+       SIXBIT  /TMPCOR/        ;44\r
+       SIXBIT  /DSKCHR/        ;45\r
+       SIXBIT  /SYSSTR/        ;46\r
+       SIXBIT  /JOBSTR/        ;47\r
+       SIXBIT  /STRUUO/        ;50\r
+       SIXBIT  /SYSPHY/        ;51\r
+       SIXBIT  /FRECHN/        ;52\r
+       SIXBIT  /DEVTYP/        ;53\r
+       SIXBIT  /DEVSTS/        ;54\r
+       SIXBIT  /DEVPPN/        ;55\r
+       SIXBIT  /SEEK/          ;56\r
+       SIXBIT  /RTTRP/         ;57\r
+       SIXBIT  /LOCK/          ;60\r
+       SIXBIT  /JOBSTS/        ;61\r
+       SIXBIT  /LOCATE/        ;62\r
+       SIXBIT  /WHERE/         ;63\r
+       SIXBIT  /DEVNAM/        ;64\r
+       SIXBIT  /CTLJOB/        ;65\r
+       SIXBIT  /GOBSTR/        ;66\r
+       0                       ;67\r
+       0                       ;70\r
+       SIXBIT  /HPQ/           ;71\r
+       SIXBIT  /HIBER/         ;72\r
+       SIXBIT  /WAKE/          ;73\r
+       SIXBIT  /CHGPPN/        ;74\r
+       SIXBIT  /SETUUO/        ;75\r
+       SIXBIT  /DEVGEN/        ;76\r
+       SIXBIT  /OTHUSR/        ;77\r
+       SIXBIT  /CHKACC/        ;100\r
+       SIXBIT  /DEVSIZ/        ;101\r
+       SIXBIT  /DAEMON/        ;102\r
+       SIXBIT  /JOBPEK/        ;103\r
+       SIXBIT  /ATTACH/        ;104\r
+       SIXBIT  /DAEFIN/        ;105\r
+       SIXBIT  /FRCUUO/        ;106\r
+       SIXBIT  /DEVLNM/        ;107\r
+       SIXBIT  /PATH./         ;110\r
+\r
+CALNTH==.-CALTBL\r
+NEGCAL==CALLI0-CALTBL          ;NUMBER OF NEGATIVE CALLI'S\r
+\r
+TTCTBL:        SIXBIT  /INCHRW/        ; 0     INPUT A CHAR. AND WAIT\r
+       SIXBIT  /OUTCHR/        ; 1     OUTPUT A CHAR.\r
+       SIXBIT  /INCHRS/        ; 2     INPUT A CHAR. AND SKIP\r
+       SIXBIT  /OUTSTR/        ; 3     OUTPUT A STRING\r
+       SIXBIT  /INCHWL/        ; 4     INPUT CHAR., WAIT, LINE MODE\r
+       SIXBIT  /INCHSL/        ; 5     INPUT CHAR., SKIP, LINE MODE\r
+       SIXBIT  /GETLCH/        ; 6     GET LINE CHARACTERISTICS\r
+       SIXBIT  /SETLCH/        ; 7     SET LINE CHARACTERISTICS\r
+       SIXBIT  /RESCAN/        ;10     RESET INPUT STREAM TO COMMAND\r
+       SIXBIT  /CLRBFI/        ;11     CLEAR TYPEIN BUFFER\r
+       SIXBIT  /CLRBFO/        ;12     CLEAR TYPEOUT BUFFER\r
+       SIXBIT  /SKPINC/        ;13     SKIPS IF A CHAR. CAN BE INPUT\r
+       SIXBIT  /SKPINL/        ;14     SKIPS IF A LINE CAN BE INPUT\r
+       SIXBIT  /IONEOU/        ;15     OUTPUT AS AN IMAGE CHAR.\r
+\r
+TTCLTH==.-TTCTBL\r
+       SUBTTL  USER-DEFINED SYMBOL SEARCH ROUTINES\r
+MSRCH: PUSHJ   PP,SEARCH       ;PERFORM GENERAL SEARCH\r
+       POPJ    PP,             ;NOT FOUND, EXIT\r
+       JUMPG   ARG,MSRCH2      ;SKIP-EXIT AND CROSS-REF IF FOUND\r
+       CAME    AC0,1(SX)       ;WE ARE LOOKING AT SYMBOL, TRY ONE ABOVE\r
+       POPJ    PP,             ;NO, EXIT\r
+       ADDI    SX,2            ;YES, POINT TO IT\r
+       PUSHJ   PP,SRCH5        ;LOAD REGISTERS\r
+MSRCH2:        AOSA    0(PP)           ;SET SKIP-EXIT\r
+QSRCH: JUMPL   ARG,SSRCH3      ;BRANCH IF OPERAND\r
+       MOVEI   SDEL,%MAC       ;SET OPERATOR FLAG\r
+       TLZE IO,DEFCRS  ;IS IT A DEFINITION?\r
+       MOVEI SDEL,%DMAC        ;YES\r
+       JRST    CREF            ;CROSS-REF AND EXIT\r
+\r
+SSRCH: PUSHJ   PP,SEARCH       ;PERFORM GENERAL SEARCH\r
+       POPJ    PP,             ;NOT FOUND, EXIT\r
+       JUMPL   ARG,SSRCH2      ;SKIP-EXIT AND CROSS-REF IF FOUND\r
+SSRCH1:        CAME    AC0,-3(SX)      ;WE ARE LOOKING AT MACRO, LOOK ONE SLOT BELOW\r
+       POPJ    PP,             ;NO DICE, EXIT\r
+       SUBI    SX,2            ;YES, POINT TO IT\r
+       PUSHJ   PP,SRCH5        ;LOAD REGISTERS\r
+SSRCH2:        AOS     0(PP)           ;SET FOR SKIP-EXIT\r
+SSRCH3:        MOVEI   SDEL,%SYM       ;SET OPERAND FLAG\r
+\r
+CREF:  TLNN    IO,IONCRF       ;NO CREFFING FOR THIS SYMBOL?\r
+       TLNE    FR,P1!CREFSW    ;PASS ONE OR CROSS-REF SUPPRESSION?\r
+       POPJ    PP,             ;YES, EXIT\r
+       EXCH    SDEL,C          ;PUT FLAG IN C, SACE C\r
+       PUSH    PP,CS\r
+       TLNE IO,IOCREF          ;HAVE WE PUT OUT THE 177,102\r
+       JRST CREF3              ;YES\r
+       PUSH PP,C               ;START OF CREF DATA\r
+\r
+\fREPEAT 0,<    ;NEEDS CHANGE TO CREF\r
+       MOVEI C,177\r
+       PUSHJ PP,OUTLST\r
+       MOVEI C,102\r
+       PUSHJ PP,OUTLST\r
+       TLO IO,IOCREF   ;WE NOW ARE IN THAT STATE\r
+       POP PP,C        ;WE HAVE NOW\r
+CREF3: JUMPE C,NOFLG           ;JUST CLOSE IT\r
+       PUSHJ   PP,OUTLST       ;TYPE OF SYMBOL (%MAC,%DMAC,%SYM)\r
+       MOVSI CS,770000         ;COUNT CHRS\r
+       TDZA C,C        ;STARTING AT 0\r
+       LSH CS,-6       ;TRY NEXT\r
+       TDNE AC0,CS     ;IS THAT ONE THERE?\r
+       AOJA C,.-2      ;YES\r
+       PUSHJ PP,OUTLST         ;PRINT NUMBER OF SYMBOL CONSTITUENTS\r
+       MOVE    CS,AC0\r
+\r
+CREF2: MOVEI   C,0\r
+       LSHC    C,6\r
+       ADDI    C,40\r
+       PUSHJ   PP,OUTLST       ;THE ASCII SYMBOL\r
+       JUMPN   CS,CREF2\r
+       MOVEI   C,%DSYM\r
+       TLZE    IO,DEFCRS\r
+       PUSHJ   PP,OUTLST       ;MARK IT AS A DEFINING OCCURENCE\r
+NOFLG: MOVE    C,SDEL\r
+       POP     PP,CS\r
+       POPJ    PP,\r
+\r
+CLSCRF:        TRNN ER,LPTSW\r
+       POPJ PP,        ;LEAVE IF WE SHOULD NOT BE PRINTING\r
+CLSCR2:        MOVEI C,177\r
+       PUSHJ PP,PRINT\r
+       TLZE IO,IOCREF  ;WAS IT OPEN?\r
+       JRST CLSCR1     ;YES, JUST CLOSE IT\r
+       MOVEI C,102     ;NO, OPEN IT FIRST\r
+       PUSHJ PP,OUTLST         ;MARK BEGINNING OF CREF DATA\r
+       MOVEI C,177\r
+       PUSHJ PP,OUTLST\r
+CLSCR1:        MOVEI C,103\r
+       JRST OUTLST             ;MARK END OF CREF DATA\r
+\r
+CLSC3: TLZ IO,IOCREF\r
+       MOVEI C,177\r
+       PUSHJ PP,OUTLST\r
+       MOVEI C,104\r
+       JRST OUTLST     ;177,104 CLOSES IT FOR NOW\r
+>      ;END OF REPEAT 0\r
+\fREPEAT 1,<                    ;WORKS WITH EXISTING CREF\r
+       TLNE IO,IOPAGE\r
+       PUSHJ PP,CRFHDR         ;GET CORRECT SUBTTL\r
+       MOVEI C,177\r
+       PUSHJ PP,OUTLST\r
+       MOVEI C,102\r
+       PUSHJ PP,OUTLST\r
+       TLO IO,IOCREF   ;WE NOW ARE IN THAT STATE\r
+       POP PP,C        ;WE HAVE NOW\r
+CREF3: PUSHJ   PP,OUTLST       ;TYPE OF SYMBOL (%MAC,%DMAC,%SYM)\r
+       MOVSI CS,770000         ;COUNT CHRS\r
+       TDZA C,C        ;STARTING AT 0\r
+       LSH CS,-6       ;TRY NEXT\r
+       TDNE AC0,CS     ;IS THAT ONE THERE?\r
+       AOJA C,.-2      ;YES\r
+       PUSHJ PP,OUTLST         ;PRINT NUMBER OF SYMBOL CONSTITUENTS\r
+       MOVE    CS,AC0\r
+\r
+CREF2: MOVEI   C,0\r
+       LSHC    C,6\r
+       ADDI    C,40\r
+       PUSHJ   PP,OUTLST       ;THE ASCII SYMBOL\r
+       JUMPN   CS,CREF2\r
+       MOVEI   C,%DSYM\r
+       TLZE    IO,DEFCRS\r
+       PUSHJ   PP,OUTLST       ;MARK IT AS A DEFINING OCCURENCE\r
+       MOVE    C,SDEL\r
+       POP     PP,CS\r
+       POPJ    PP,\r
+\r
+IFN OPHSH,<\r
+SUBTL: SIXBIT  /SUBTTL/>\r
+CRFHDR:        CAME    AC0,SUBTL       ;IS FIRST SYMBOL "SUBTTL"\r
+       JRST    CRFHD1          ;NO\r
+       HLLZ    AC0,V\r
+       PUSHJ   PP,SUBTT0       ;UPDATE SUBTTL\r
+       MOVE    AC0,SUBTL       ;RESTORE ARG.\r
+       MOVEI   V,CPOPJ\r
+CRFHD1:        MOVEI   C,0\r
+       JRST    OUTL\r
+\r
+CLSC3:\r
+CLSCRF:        TRNN ER,LPTSW\r
+       POPJ PP,        ;LEAVE IF WE SHOULD NOT BE PRINTING\r
+CLSCR2:        TLZE IO,IOCREF  ;FINISH UP LINE\r
+       JRST CLSCR1\r
+       MOVEI   C,0\r
+       TLNE    IO,IOPAGE       ;NEW PAGE?\r
+       PUSHJ   PP,OUTL         ;YES,GIVE IT A ROUSING SENDOFF!\r
+       MOVEI C,177\r
+       PUSHJ PP,OUTLST\r
+       MOVEI C,102\r
+       PUSHJ PP,OUTLST         ;MARK BEGINNING OF CREF DATA\r
+CLSCR1:        MOVEI C,177\r
+       PUSHJ PP,OUTLST\r
+       MOVEI C,103\r
+       JRST OUTLST             ;MARK END OF CREF DATA\r
+>      ;END OF REPEAT 1\r
+\fSEARCH:       HLRZ    SX,SRCHX\r
+       HRRZ    SDEL,SRCHX\r
+\r
+SRCH1: CAML    AC0,-1(SX)\r
+       JRST    SRCH3\r
+SRCH2: SUB     SX,SDEL\r
+       LSH     SDEL,-1\r
+       CAMG    SX,SYMTOP\r
+       JUMPN   SDEL,SRCH1\r
+       JUMPN   SDEL,SRCH2\r
+       SOJA    SX,SRCHNO       ;NOT FOUND\r
+\r
+SRCH3: CAMN    AC0,-1(SX)\r
+       JRST    SRCH4           ;NORMAL / FOUND EXIT\r
+       ADD     SX,SDEL\r
+       LSH     SDEL,-1\r
+       CAMG    SX,SYMTOP\r
+       JUMPN   SDEL,SRCH1\r
+       JUMPN   SDEL,SRCH2\r
+       SOJA    SX,SRCHNO       ;NOT FOUND\r
+\r
+SRCH4: AOS     0(PP)           ;SET FOR SKIP EXIT\r
+SRCH5: MOVSI ARG,SUPRBT        ;HE IS USING IT, TURN OFF BIT\r
+       ANDCAM ARG,(SX) ; IN THE TABLE\r
+SRCH7: MOVE ARG,0(SX)          ;FLAG AND VALUE TO ARG\r
+       LDB     RC,RCPNTR       ;POINT 1,ARG,17\r
+       TLNE ARG,LELF   ;CHECK LEFT RELOCATE\r
+       TLO RC,1\r
+       HRRZ    V,ARG\r
+       TLNE ARG,SPTR   ;CHECK SPECIAL EXTESN POINTER\r
+       JRST SRCH6\r
+       TLNE    ARG,PNTF\r
+       MOVE    V,0(ARG)                ;36BIT VALUE TO V\r
+       JRST    SRCHOK\r
+       \r
+SRCH6: MOVE V,0(ARG)   ;VALUE\r
+       MOVE RC,1(ARG)  ;AND RELOC\r
+       TLNE RC,-2      ;CHECK AND SET EXTPNT\r
+       HLLM RC,EXTPNT\r
+       TRNE RC,-2      \r
+       HRRM RC,EXTPNT\r
+       JRST    SRCHOK\r
+SRCHNO:IFN UNIVR,<SKIPN        UNISCH+1        ;ALLOWED TO SEARCH OTHER TABLES>\r
+       POPJ    PP,             ;NO, JUST RETURN\r
+IFN UNIVR,<AOS V,UNISCH        ;GET NEXT INDEX TO TABLE\r
+       CAIE    V,1             ;FIRST TIME IN\r
+       JRST    SRCHN1          ;YES, SAVE SYMBOL INFO\r
+       HRLM    SX,UNISCH       ;SAVE SX AND SET FLAG\r
+       MOVE    ARG,SRCHX       ;SEARCH POINTER\r
+       MOVEM   ARG,UNISHX      ;TO A SAFE PLACE\r
+       HRR     ARG,SYMBOL\r
+       HRL     ARG,SYMTOP\r
+       MOVEM   ARG,UNIPTR      ;STORE ALSO\r
+SRCHN1:        MOVE    V,UNISCH(V)     ;GET TRUE INDEX\r
+       JUMPE   V,SRCHKO        ;IF ZERO ALL TABLE SCANNED\r
+       MOVE    ARG,UNISHX(V)   ;NEW SRCHX\r
+       MOVEM   ARG,SRCHX       ;SET IT UP\r
+       MOVE    ARG,UNIPTR(V)   ;SYMTOP,,SYMBOL\r
+       HRRZM   ARG,SYMBOL\r
+       HLRZM   ARG,SYMTOP\r
+       JRST    SEARCH          ;TRY AGAIN>\r
+\r
+SRCHKO:        SETZ    ARG,            ;CLEAR ARG SO ZERO STORED\r
+SRCHOK:        IFN UNIVR,<SKIPN        UNISCH          ;HAVE WE SEARCH OTHER TABLES>\r
+       POPJ    PP,             ;NO, JUST RETURN\r
+IFN UNIVR,<\r
+SYMBCK:        HLRZ    SX,UNISCH       ;RESTORE SX\r
+       SETZM   UNISCH          ;CLEAR SYMBCK FLAG\r
+       PUSH    PP,V            ;SAVE AN AC\r
+       MOVE    V,UNISHX        ;SRCHX\r
+       MOVEM   V,SRCHX         ;RESTORE ORIGINAL\r
+       MOVE    V,UNIPTR        ;SYMTOP,,SYMBOL\r
+       HRRZM   V,SYMBOL\r
+       HLRZM   V,SYMTOP\r
+       JUMPE   ARG,SRCHK2      ;TOTALLY UNDEFINED\r
+       PUSH    PP,RC           ;SAVE SOME ACCS\r
+       PUSH    PP,ARG\r
+       PUSH    PP,EXTPNT\r
+       SETZB   ARG,EXTPNT      ;CLEAR ALL SYMBOL DATA\r
+       SETZB   RC,V\r
+       PUSHJ   PP,INSERT       ;INSERT SYMBOL IN TABLE\r
+       POP     PP,EXTPNT       ;RESTORE ACCS ETC.\r
+       POP     PP,ARG\r
+       POP     PP,RC\r
+       MOVEM   ARG,(SX)        ;SET FLAGS AND VALUE AS IT SHOULD BE\r
+SRCHK2:        POP     PP,V\r
+       POPJ    PP,             ;RETURN>\r
+\r
+\fINSERQ:       TLNE    ARG,UNDF!VARF\r
+INSERZ:        SETZB   RC,V\r
+INSERT:        CAME    AC0,-1(SX)      ;ARE WE LOOKING AT MATCHING MNEMONIC?\r
+       JRST    INSRT2          ;NO, JUST INSERT\r
+       JUMPL   ARG,INSRT1      ;YES, BRANCH IF OPERAND\r
+       SKIPL   0(SX)           ;OPERATOR, ARE WE LOOKING AT ONE?\r
+       JRST    UPDATE          ;YES, UPDATE\r
+       JRST    INSRT2          ;NO, INSERT\r
+\r
+INSRT1:        SKIPG   0(SX)           ;OPERAND, ARE WE LOOKING AT ONE?\r
+       JRST    UPDATE          ;YES, UPDATE\r
+       SUBI    SX,2            ;NO, MOVE UNDER OPERATOR AND INSERT\r
+INSRT2:        MOVE    SDEL,SYMBOL\r
+       SUBI    SDEL,2\r
+       CAMLE   SDEL,FREE\r
+       JRST    INSRT3\r
+       PUSHJ   PP,XCEEDS\r
+       ADDI    SDEL,2000\r
+INSRT3:        MOVEM   SDEL,SYMBOL     ;MAKE ROOM FOR A TWO WORD ENTRY\r
+       HRLI    SDEL,2(SDEL)\r
+       BLT     SDEL,-2(SX)     ;PUSH EVERYONE DOWN TWO LOACTIONS\r
+       AOS     @SYMBOL         ;INCREMENT THE SYMBOL COUNT\r
+       TLNN RC,-2      ;NEED SPECIAL?\r
+       TRNE RC,-2      ;LEFT OR RIGHT EXTERNAL?\r
+       JRST INSRT5     ;YES, JUMP\r
+       TLNN    V,-1            ;SKIP IF V IS A 36BIT VALUE\r
+       JRST    INSRT4          ;JUMP, ITS A 18BIT VALUE\r
+       AOS     SDEL,FREE       ;36BIT, SO GET A CELL FROM FREE CORE\r
+       CAML    SDEL,SYMBOL     ;MORE CORE NEEDED?\r
+       PUSHJ   PP,XCEEDS       ;YES\r
+       HRRI    ARG,-1(SDEL)    ;POINTER TO ARG\r
+       MOVEM   V,0(ARG)        ;36BIT VALUE TO FREE CORE\r
+       TLOA    ARG,PNTF        ;NOTE THAT ARG IS APOINTER, NOT A 18BIT VALUE\r
+\r
+INSRT4:        HRR     ARG,V           ;18BIT VALUE TO ARG\r
+       DPB     RC,RCPNTR       ;FIX RIGHT RELOCATION\r
+       TLNE RC,1\r
+       TLO ARG,LELF    ;FIX LEFT RELOCATION\r
+INSRT6:        MOVEM   ARG,0(SX)       ;INSERT FLAGS AND VALUE.\r
+       MOVEM   AC0,-1(SX)      ;INSERT SYMBOL NAME.\r
+       PUSHJ   PP,SRCHI        ;INITILIAZE SRCHX\r
+       JRST    QSRCH           ;EXIT THROUGH CREF\r
+       \r
+INSRT5:        MOVEI SDEL,2    ;GET TWO CELLS FROM FREE CORE\r
+       ADDB SDEL,FREE\r
+       CAML SDEL,SYMBOL;MORE CORE NEEDED?\r
+       PUSHJ PP,XCEEDS ;YES\r
+       MOVEM RC,-1(SDEL)\r
+       HRRI ARG,-2(SDEL)       ;POINTER TO ARG\r
+       MOVEM V,0(ARG)\r
+       TLO ARG,SPTR    ;SET SPECIAL POINTER, POINTS TO TWO CELLS\r
+       JRST INSRT6\r
+\fREMOVE:       SUBI    SX,2            ;MOVE EVERYONE UP TWO LOCATIONS\r
+REMOV1:        MOVE    0(SX)\r
+       MOVEM   2(SX)           ;OVERWRITE THE DELETED SYMBOL\r
+       CAME    SX,SYMBOL       ;SKIP WHEN DONE\r
+       SOJA    SX,REMOV1\r
+       ADDI    SX,2\r
+       MOVEM   SX,SYMBOL\r
+       SOS     0(SX)           ;DECREMENT THE SYMBOL COUNT\r
+\r
+SRCHI: MOVEI   AC2,0           ;THIS CODE SETS UP SRCHX\r
+       FAD     AC2,@SYMBOL\r
+       LSH     AC2,-^D27\r
+       MOVEI   AC1,1000\r
+       LSH     AC1,-357(AC2)\r
+       HRRM    AC1,SRCHX\r
+       LSH     AC1,1\r
+       ADD     AC1,SYMBOL\r
+       HRLM    AC1,SRCHX\r
+       POPJ    PP,             ;SRCHX=XWD <SYMTBL+LENGTH/2>,LENGTH/4\r
+\r
+\fUPDATE:       DPB     RC,RCPNTR       ;FIX RIGHT RELOCATION\r
+       TLNE ARG,SPTR   ;SKIP IF THERE IS NO SPECIAL POINTER\r
+       JRST UPDAT4     ;YES, USE THE TWO CELLS\r
+       TLNN RC,-2      ;NEED TO CHANGE\r
+       TRNE RC,-2      ;ANY CURRENT EXTERNS?\r
+       JRST UPDAT5     ;YES ,JUMP\r
+       TLZ ARG,LELF    ;CLEAR LELF\r
+       TLNE RC,1       ;LEFT RELOCATABLE?\r
+       TLO ARG,LELF    ;YES, SET THE FLAG\r
+       TLNE    ARG,PNTF        ;WAS THERE A 36BIT VALUE?\r
+       JRST    UPDAT2          ;YES, USE IT.\r
+       TLNE    V,-1            ;NO,IS THERE A 36BIT VALUE?\r
+       JRST    UPDAT1          ;YES, GET A CELL\r
+       HRR     ARG,V           ;NO, USE RH OF ARG\r
+UPDAT3:        MOVEM   ARG,0(SX)       ;OVERWRITE THE ONE IN THE TABLE\r
+       POPJ    PP,             ;AND EXIT\r
+\r
+UPDAT1:        AOS     SDEL,FREE       ;GET ONE CELL\r
+       CAML    SDEL,SYMBOL     ;NEED MORE CORE?\r
+       PUSHJ   PP,XCEEDS       ;YES\r
+       HRRI    ARG,-1(SDEL)    ;POINTER TO ARG\r
+       TLO     ARG,PNTF        ;AND NOTE IT.\r
+UPDAT2:        TLNE ARG,EXTF   ;IS THERE A EXTERNAL?\r
+       JRST UPDAT3             ;YES, - JUST SAVE A LOCATION\r
+       MOVEM   ARG,0(SX)       ;NO, OVERWRITE THE POINTER IN THE TABLE\r
+       MOVEM   V,0(ARG)        ;STORE VALUE AS A 36BIT VALUE\r
+       POPJ    PP,             ;AND EXIT\r
+       \r
+UPDAT4:        MOVEM ARG,0(SX) ;WE HAVE TWO CELLS, WE USE THEM\r
+       MOVEM V,0(ARG)  ;SAVE AS 36BIT VALUE\r
+       MOVEM RC,1(ARG) ;SAVE RELOCATION BITS\r
+       POPJ PP,                ;AND EXIT\r
+\r
+UPDAT5:        MOVEI SDEL,2            ;THERE IS A EXTERNAL\r
+       ADDB SDEL,FREE          ;SO WE NEED TWO LOACTIONS\r
+       CAML SDEL,SYMBOL        ;NEED MORE CORE?\r
+       PUSHJ PP,XCEEDS         ;YES\r
+       MOVEM RC,-1(SDEL)       ;SAVE RELOCATION BITS\r
+       HRRI ARG,-2(SDEL)       ;SAVE THE POINTER IN ARG\r
+       MOVEM V,0(ARG)          ;SAVE A 36BIT VALUE\r
+       TLO ARG,SPTR            ;SET SPECIAL PNTR FLAG\r
+       TLZ ARG,PNTF            ;CLEAR POINTER FLAG\r
+       JRST UPDAT3             ;SAVE THE POINTER AND EXIT\r
+\r
+\f      SUBTTL  CONSTANTS\r
+\r
+\r
+\f      SUBTTL PHASED CODE\r
+      SUBTTL PHASED CODE\r
+LSTFIL: BLOCK 1\r
+        SIXBIT /@/      ;SYMBOL TO STOP PRINTING\r
+TAG:    BLOCK   1\r
+        SIXBIT  / + @/\r
+TABI:\r
+       BYTE    (7) 0, 11, 11, 11, 11\r
+SEQNO:  BLOCK   1\r
+        ASCIZ   /       /\r
+BININI: EXP     B\r
+BINDEV: BLOCK   1\r
+        XWD     BINBUF,0\r
+LSTINI: EXP     AL\r
+LSTDEV: BLOCK   1\r
+        XWD     LSTBUF,0\r
+IFN CCLSW,<\r
+NUNINI: EXP     DMP\r
+NUNDEV: BLOCK   1\r
+        XWD     0,0\r
+RPGINI: EXP     AL\r
+RPGDEV: BLOCK 1\r
+        XWD 0,CTLBLK\r
+>\r
+INDEVI:        EXP     A\r
+INDEV: BLOCK   1\r
+       XWD     0,IBUF\r
+DBUF:  ASCIZ   / TI:ME DY-MON-YR PAGE /\r
+VBUF:  ASCIZ   /       MACRO / ;MUST BE LAST LOCATIONS IN BLOCK\r
+       BLOCK   3       ;ALLOW FOR LONG TITLE\r
+\r
+\fSUBTTL        STORAGE CELLS\r
+\r
+PASS1I:\r
+\r
+RP:    BLOCK   1\r
+\r
+IFE CCLSW,<CTIBUF:     BLOCK   3\r
+CTOBUF:        BLOCK   3\r
+>\r
+IFN CCLSW,<CTLBUF:     BLOCK   <CTLSIZ+5>/5\r
+>\r
+LSTBUF:        BLOCK   3\r
+BINBUF:        BLOCK   3\r
+IBUF:  BLOCK   3\r
+IFN CCLSW,<NUNDIR:>\r
+LSTDIR:        BLOCK   4\r
+BINDIR:        BLOCK   4\r
+INDIR: BLOCK   4\r
+\r
+ACDELX:                                ;LEFT HALF\r
+BLKTYP:        BLOCK   1               ;RIGHT HALF\r
+\r
+COUTX: BLOCK   1\r
+COUTY: BLOCK   1\r
+COUTP: BLOCK   1\r
+COUTRB:        BLOCK   1\r
+COUTDB:        BLOCK   ^D18\r
+\r
+ERRCNT:        BLOCK   1\r
+FREE:  BLOCK   1\r
+IFN RENTSW,<HIGH1:     BLOCK 1\r
+HISNSW:        BLOCK   1\r
+SVTYP3:        BLOCK   1\r
+HMIN:  BLOCK   1       ;START OF HIGH SEG. IN TWO SEG. PROG.>\r
+IFBLK: BLOCK   .IFBLK\r
+IFBLKA:        BLOCK   .IFBLK\r
+LADR:  BLOCK   1\r
+NCOLLS:        BLOCK   1\r
+LIMBO: BLOCK   1\r
+LBUFP: BLOCK   1\r
+LBUF:  BLOCK   <.CPL+5>/5\r
+       BLOCK 1\r
+VARHD: BLOCK   1\r
+VARHDX:        BLOCK   1\r
+\r
+LITAB: BLOCK   1\r
+LITABX:        BLOCK   1\r
+       BLOCK   1\r
+LITHD: BLOCK   1\r
+LITHDX:        BLOCK   1\r
+LITCNT:        BLOCK   1\r
+LITNUM:        BLOCK   1\r
+\r
+LOOKX: BLOCK   1\r
+NEXT:  BLOCK   1\r
+OUTSW: BLOCK   1\r
+PDP:   BLOCK   1\r
+RECCNT:        BLOCK   1\r
+SAVBLK:        BLOCK   RC\r
+SAVERC:        BLOCK   1\r
+SBUF:  BLOCK   .SBUF/5\r
+SRCHX: BLOCK   1\r
+SUBTTX:        BLOCK   1\r
+SVSYM: BLOCK   1\r
+SYMBOL:        BLOCK   1\r
+SYMTOP:        BLOCK   1\r
+\r
+STPX:  BLOCK   1\r
+STPY:  BLOCK   1\r
+STCODE:        BLOCK   .STP\r
+STOWRC:        BLOCK   .STP\r
+\r
+TABP:  BLOCK   1\r
+TCNT:  BLOCK   1               ;COUNT OF CHARS. LEFT IN TBUF\r
+TBUF:  BLOCK   .TBUF/5\r
+DEVBUF:        BLOCK   6               ;STORE NAME.EXT CREATION DATE AND TIME\r
+TYPERR:        BLOCK   1\r
+IONSYM:        BLOCK   1       ;-1 SUPRESS LISTING OF SYMBOLS\r
+PRGPTR:        BLOCK   1       ;POINTER TO CHAIN OF PRGEND BLOCKS\r
+ENTERS:        BLOCK   1       ;-1 WHEN ENTERS HAVE BEEN DONE\r
+IFN UNIVR,<UNIVSN:     BLOCK   1       ;-1 WHEN A UNIVERSAL SEEN>\r
+\r
+\fPASS2I:\r
+\r
+ABSHI: BLOCK 1\r
+HIGH:  BLOCK   1\r
+IFN RENTSW,<HHIGH: BLOCK 1     ;SAVE BREAK OF HIGH SEG. IN TWO SEG PROG.>\r
+ACDEVX:        BLOCK   1\r
+CPL:   BLOCK   1\r
+CTLSAV:        BLOCK   1\r
+CTLS1: BLOCK   1\r
+EXTPNT:        BLOCK   1\r
+INTENT:        BLOCK   1\r
+INREP: BLOCK 1\r
+INDEF: BLOCK 1\r
+INTXT: BLOCK 1\r
+INCND: BLOCK   1\r
+CALNAM:        BLOCK   1\r
+CALPG: BLOCK 1\r
+CALSEQ:        BLOCK 1\r
+DEFPG: BLOCK 1\r
+DEFSEQ:        BLOCK 1\r
+LITPG: BLOCK 1\r
+LITSEQ:        BLOCK 1\r
+REPPG: BLOCK 1\r
+REPSEQ:        BLOCK 1\r
+TXTPG: BLOCK 1\r
+TXTSEQ:        BLOCK 1\r
+CNDPG: BLOCK   1\r
+CNDSEQ:        BLOCK   1\r
+IRPCNT:        BLOCK   1\r
+IRPARG:        BLOCK   1\r
+IRPARP:        BLOCK   1\r
+IRPCF: BLOCK   1\r
+IRPPOI:        BLOCK   1\r
+IRPSW: BLOCK   1\r
+LITLVL:        BLOCK   1\r
+LITLBL:        BLOCK   1               ;NAME OF LABEL DEFINED INSIDE A LITERAL\r
+\r
+ASGBLK:        BLOCK   1\r
+LOCBLK:        BLOCK   1\r
+\r
+LOCA:  BLOCK   1\r
+LOCO:  BLOCK   1\r
+RELLOC:        BLOCK   1\r
+ABSLOC:        BLOCK   1\r
+LPP:   BLOCK   1\r
+MODA:  BLOCK   1\r
+MODLOC:        BLOCK   1\r
+MODO:  BLOCK   1\r
+IFN CCLSW,<OTBUF:      BLOCK 2>\r
+OUTSQ: BLOCK 2\r
+PAGEN.:        BLOCK   1\r
+PPTEMP:        BLOCK   1\r
+PPTMP1:        BLOCK   1\r
+PPTMP2:        BLOCK   1\r
+\r
+REPCNT:        BLOCK   1\r
+REPEXP:        BLOCK   1\r
+REPPNT:        BLOCK   1\r
+RPOLVL:        BLOCK   1\r
+R1BCNT:        BLOCK 1\r
+R1BCHK:        BLOCK 1\r
+R1BBLK:        BLOCK .R1B\r
+R1BLOC:        BLOCK 1\r
+RIMLOC:        BLOCK   1\r
+TAGINC:        BLOCK   1\r
+VECREL:        BLOCK   1\r
+VECTOR:        BLOCK   1\r
+.TEMP: BLOCK   1               ;TEMPORARY STORAGE\r
+IFN UNIVR,<UNISCH:     BLOCK   .UNIV           ;SEARCH TABLE FOR UNIVERSALS>\r
+SQFLG: BLOCK 1\r
+ARGF:  BLOCK   1\r
+MACENL:        BLOCK   1\r
+MACLVL:        BLOCK   1\r
+MACPNT:        BLOCK   1\r
+WWRXX: BLOCK   1\r
+RCOUNT:        BLOCK   1               ;COUNT OF WORDS STILL TO READ IN LEAF\r
+WCOUNT:        BLOCK   1               ;COUNT OF WORDS STILL FREE IN LEAF\r
+PASS2Z:                                ;ONLY CLEAR TO HERE ON PRGEND\r
+LSTSYM:        BLOCK   1\r
+PAGENO:        BLOCK   1\r
+SEQNO2:        BLOCK 1\r
+PASS2X:\r
+\r
+\fSUBTTL        MULTI-ASSEMBLY STORAGE CELLS\r
+\r
+LSTPGN:        BLOCK 1\r
+HDAS:  BLOCK 1\r
+IFN CCLSW,<EXTMP:      BLOCK 1 ;HOLDS EXT OF COMMAND FILE (RH)\r
+SAVFF: BLOCK   1\r
+CTLBLK:        BLOCK   3\r
+CTIBUF:        BLOCK   3\r
+CTOBUF:        BLOCK   3>\r
+MACSIZ:        BLOCK   1               ;INITIAL SIZE OF LOW SEG\r
+IFN UNIVR,<\r
+UNISIZ:        BLOCK   1               ;TOP OF BUFFERS AND STACKS\r
+UNITOP:        BLOCK   1               ;TOP OF UNIVERSAL SYMBOL TABLE\r
+UNIVNO:        BLOCK   1               ;NUMBER OF UNIVERSALS SEEN\r
+UNITBL:        BLOCK   .UNIV           ;TABLE OF UNIVERSAL NAMES\r
+UNIPTR:        BLOCK   .UNIV           ;TABLE OF SYMBOL POINTERS\r
+UNISHX:        BLOCK   .UNIV           ;TABLE OF SRCHX POINTERS>\r
+       VAR                     ;CLEAR VARIABLES\r
+\r
+JOBFFI:        BLOCK   203*NUMBUF+1            ;INPUT BUFFER PLUS ONE\r
+\r
+       END     BEG\r
+\f\r
diff --git a/src/macro.30 b/src/macro.30
new file mode 100644 (file)
index 0000000..d59873a
--- /dev/null
@@ -0,0 +1,7003 @@
+TITLE  MACRO V.30(52)  \r
+SUBTTL  RPG/CMF/JF/PMH/DMN     7-SEPT-71\r
+;COPYRIGHT 1968,1969,1970,1971, DIGITAL EQUIPMENT CORP., MAYNARD, MASS.\r
+\r
+       VMACRO==30              ;VERSION NUMBER\r
+       VUPDATE==0              ;DEC UPDATE LEVEL\r
+       VEDIT==30               ;EDIT NUMBER\r
+       VCUSTOM==0              ;NON-DEC UPDATE LEVEL\r
+\r
+\r
+       LOC     <JOBVER==137>\r
+       <VCUSTOM>B2+<VMACRO>B11+<VUPDATE>B17+VEDIT\r
+       RELOC\r
+       MLON\r
+\r
+COMMENT        *       ASSEMBLY FEATURE SWITCHES (ACTION WHEN NON-ZERO)\r
+\r
+       SWITCHES ON (NON-ZERO) IN DEC VERSION\r
+FTDISK         GIVES DISK FEATURES\r
+RUNSW          USE RUN UUO FOR "DEV:NAME!"\r
+FORMSW         USE MORE READABLE FORMATS FOR LISTING (ICCSW)\r
+DFRMSW         DEFAULT CONDITION OF FORMAT PRINTING (MULTI-FORM IF ON)\r
+\r
+       SWITCHES OFF (ZERO) IN DEC VERSION\r
+IIISW          GIVES III FEATURES\r
+OPHSH          GIVES HASH SEARCH OF OPCODES\r
+*\r
+\fSUBTTL        DEFAULT ASSEMBLY SWITCH SETTINGS\r
+\r
+IFNDEF RUNSW,<RUNSW==1>\r
+IFNDEF FTDISK,<FTDISK==0>\r
+IFNDEF DFRMSW,<DFRMSW==0>\r
+IFN DFRMSW,<FORMSW==1>\r
+IFDEF ICCSW,<FORMSW==ICCSW>    ;SAME SWITCH\r
+IFNDEF FORMSW,<FORMSW==0>\r
+\r
+IFNDEF IIISW,<IIISW==0>\r
+\r
+IFNDEF OPHSH,<OPHSH==0>\r
+\r
+\fSUBTTL        OTHER PARAMETERS\r
+\r
+.PDP== ?D50            ;BASIC PUSH-DOWN POINTER\r
+IFNDEF LPTWID,<LPTWID==?D132>  ;DEFAULT WIDTH OF PRINTER\r
+.LPTWD==8*<LPTWID/8>           ;USEFUL WIDTH IN MAIN LISTING\r
+.CPL== .LPTWD-?D32             ;WIDTH AVAIABLE FOR TEXT WHEN\r
+                               ;BINARY IS IN HALFWORD FORMAT\r
+.LPP==?D55     ;LINES/PAGE\r
+.STP== ?D40            ;STOW SIZE\r
+.TBUF==        ?D80            ;TITLE BUFFER\r
+.SBUF==        ?D80            ;SUB-TITLE BUFFER\r
+.IFBLK==?D20           ;IFIDN COMPARISON BLOCK SIZE\r
+.R1B==?D18\r
+.UNIV==?D10            ;NUMBER OF UNIVERSAL DEFINITIONS\r
+.LEAF==4               ;SIZE OF BLOCKS IN MACRO TREE\r
+\r
+NCOLS==LPTWID/?D32             ;NUMBER OF COLUMNS IN SYMBOL TABLE\r
+IFN OPHSH,<IFNDEF PRIME,<PRIME==?D701>>\r
+IFNDEF NUMBUF,<\r
+NUMBUF==2      ;NUMBER OF INPUT BUFFERS\r
+\r
+EXTERN JOBREL,JOBSYM,JOBDDT,JOBFF,JOBAPR,JOBSA\r
+\r
+       SALL            ;SUPPRESS ALL MACROS\r
+\r
+;SOME ASCII CHARACTERS\r
+\r
+HT==11\r
+LF==12\r
+VT==13\r
+FF==14\r
+CR==15\r
+EOL==33\r
+\f                      ;ACCUMULATORS\r
+AC0==  0\r
+AC1=   AC0+1\r
+AC2=   AC1+1\r
+SDEL=  3               ;SEARCH INCREMENT\r
+SX=    SDEL+1          ;SEARCH INDEX\r
+ARG=   5               ;ARGUMENT\r
+V=     6               ;VALUE\r
+C=     7               ;CURRENT CHARACTER\r
+CS=    C+1             ;CHARACTER STATUS BITS\r
+RC=    11              ;RELOCATION BITS\r
+MWP=   12              ;MACRO WRITE POINTER\r
+MRP=   13              ;MACRO READ POINTER\r
+IO=    14              ;IO REGISTER (LEFT)\r
+ER==   IO              ;ERROR REGISTER (RIGHT)\r
+FR=    15              ;FLAG REGISTER (LEFT)\r
+RX==   FR              ;CURRENT RADIX (RIGHT)\r
+MP=    16              ;MACRO PUSHDOWN POINTER\r
+PP=    17              ;BASIC PUSHDOWN POINTER\r
+\r
+%OP==  3\r
+%MAC== 5\r
+%DSYM==        2\r
+%SYM== 1\r
+%DMAC==        %MAC+1\r
+\r
+OPDEF  RESET   [CALLI   0]\r
+OPDEF  SETDDT  [CALLI   2]\r
+OPDEF  DDTOUT  [CALLI   3]\r
+OPDEF  DEVCHR  [CALLI   4]\r
+OPDEF  WAIT    [MTAPE   0]\r
+OPDEF  CORE    [CALLI  11]\r
+OPDEF  EXIT    [CALLI  12]\r
+OPDEF  UTPCLR  [CALLI  13]\r
+OPDEF  DATE    [CALLI  14]\r
+OPDEF  APRENB  [CALLI  16]\r
+OPDEF  MSTIME  [CALLI  23]\r
+OPDEF  PJOB    [CALLI  30]\r
+OPDEF  RUN     [CALLI  35]\r
+\r
+\f                      ;FR  FLAG REGISTER (FR/RX)\r
+IOSCR== 000001         ;NO CR AFTER LINE\r
+MTAPSW==000004         ;MAG TAPE\r
+ERRQSW==000010         ;IGNORE Q ERRORS\r
+LOADSW==000020         ;END OF PASS1 & NO EOF YET\r
+DCFSW==        000040          ;DECIMAL FRACTION\r
+RIM1SW==000100         ;RIM10 MODE\r
+NEGSW==        000200          ;NEGATIVE ATOM\r
+RIMSW==        000400          ;RIM OUTPUT\r
+PNCHSW==001000         ;RIM/BIN OUTPUT WANTED\r
+CREFSW==002000\r
+R1BSW== 004000         ;RIM10 BINARY OUTPUT\r
+TMPSW==        010000          ;EVALUATE CURRENT ATOM\r
+INDSW==        020000          ;INDIRECT ADDRESSING WANTED\r
+RADXSW==040000         ;RADIX ERROR SWITCH\r
+FSNSW== 100000         ;NON BLANK FIELD SEEN\r
+MWLFLG==200000         ;ON FOR DON'T ALLOW MULTI-WORD LITERALS\r
+P1==   400000          ;PASS1\r
+\r
+                       ;IO FLAG REGISTER (IO/ER)\r
+FLDSW==        400000          ;ADDRESS FIELD\r
+IOMSTR==200000\r
+ARPGSW==100000         ;ALLOW RAPID PROGRAM GENERATION\r
+IOPROG==040000         ;SUPRESS LISTING (LIST/XLIST PSEUDO OP)\r
+NUMSW==        020000\r
+IOMAC==        010000          ;MACRO EXPANSION IN PROGRESS\r
+IOPALL==004000         ;SUPRESS LISTING OF MACRO EXPANSIONS\r
+IONCRF==002000         ;SUPRESS OUTPUT OF CREF INFORMATION\r
+CRPGSW==001000         ;CURRENTLY IN PROGRESS ON RPG\r
+IOCREF==000400         ;WE ARE NOW OUTPUTTING CREF INFO\r
+IOENDL==000200         ;BEEN TO STOUT\r
+IOPAGE==000100\r
+DEFCRS==000040         ;THIS IS A DEFINING OCCURANCE (MACROS)\r
+IOIOPF==000020         ;IOP INSTRUCTION SEEN\r
+MFLSW== 000010         ;MULTI-FILE MODE,PRGEND SEEN\r
+IORPTC==000004         ;REPEAT CURRENT CHARACTER\r
+IOTLSN==000002         ;TITLE SEEN\r
+IOSALL==000001         ;SUPPRESS MACRO LISTING EVEN IF BINARY IS GENERATED\r
+\r
+OPDEF  JUMP1   [JUMPL  FR,  ]  ;JUMP IF PASS 1\r
+OPDEF  JUMP2   [JUMPGE FR,  ]  ;JUMP IF PASS 2\r
+\r
+OPDEF  JUMPOC  [JUMPGE IO,  ]  ;JUMP IF IN OP-CODE FIELD\r
+OPDEF  JUMPAD  [JUMPL  IO,  ]  ;JUMP IF IN ADDRESS FIELD\r
+\r
+OPDEF  JUMPCM  [JUMPL  CS,  ]  ;JUMP IF CURRENT CHAR IS COMMA\r
+OPDEF  JUMPNC  [JUMPGE CS,  ]  ;JUMP IF CURRENT CHAR IS NON-COMMA\r
+\r
+\f                      ;ER ERROR REGISTERS (IO/ER)\r
+ERRM== 000020          ;MULTIPLY DEFINED SYMBOL\r
+ERRE== 000040          ;ILLEGAL USE OF EXTERNAL\r
+ERRP== 000100          ;PHASE DISCREPANCY\r
+ERRO== 000200          ;UNDEFINED OP CODE\r
+ERRN== 000400          ;NUMBER ERROR\r
+ERRV== 001000          ;VALUE PREVIOUSLY UNDEFINED\r
+ERRU== 002000          ;UNDEFINED SYMBOL\r
+ERRR== 004000          ;RELOCATION ERROR\r
+ERRL== 010000          ;LITERAL ERROR\r
+ERRD== 020000          ;REFERENCE TO MULTIPLY DEFINED SYMBOL\r
+ERRA== 040000          ;PECULIAR ARGUMENT\r
+ERRX== 100000          ;MACRO DEFINITION ERROR\r
+ERRQ== 200000          ;QUESTIONABLE, NON-FATAL ERROR\r
+ERRORS==777760\r
+LPTSW==        000002\r
+TTYSW==        000001\r
+\r
+                       ;SYMBOL TABLE FLAGS\r
+SYMF== 400000          ;SYMBOL\r
+TAGF== 200000          ;TAG\r
+NOOUTF==100000         ;NO DDT OUTPUT WFW\r
+SYNF== 040000          ;SYNONYM\r
+MACF== SYNF?-1         ;MACRO\r
+OPDF== SYNF?-2         ;OPDEF\r
+PNTF== 004000          ;"VALUE" IN SYMBOL TBL IS PNTR TO 36BIT VALUE\r
+UNDF== 002000          ;UNDEFINED\r
+EXTF== 001000          ;EXTERNAL\r
+INTF== 000400          ;INTERNAL\r
+ENTF== 000200          ;ENTRY\r
+VARF== 000100          ;VARIABLE\r
+MDFF== 000020          ;MULTIPLY DEFINED\r
+SPTR== 000010          ;SPECIAL EXTERNAL POINTER\r
+SUPRBT==000004         ;SUPRESS OUTPUT TO DDT\r
+LELF== 000002          ;LEFT HAND RELOCATABLE\r
+RELF== 000001          ;RIGHT HAND RELOCATABLE\r
+\r
+LITF==  200000         ;FLAG FOR PSEUDO-OPS INVALID IN LIT'S\r
+ADDF==  100000         ;FLAG FOR PSEUDO-OPS INVALID IN ADDRESSES\r
+\r
+TNODE==        200000          ;TERMINAL NODE FOR EVALEX\r
+\fSUBTTL        RUN UUO\r
+\r
+\r
+       LIST\r
+\r
+\fIFN RUNSW,<   ;ASSEMBLE IF RUN UUO IMPLEMENTED\r
+NUNSET:        JUMPN   ACDEV,.+2\r
+       MOVSI   ACDEV,(SIXBIT /SYS/)    ;USE SYS IF NONE SPECIFIED\r
+       MOVEM ACDEV,RUNDEV\r
+\r
+       MOVEM ACFILE,RUNFIL     ;STORE FILE NAME\r
+       PUSHJ PP,DELETE         ;COMMAND FILE\r
+       SETZM RUNPP\r
+       MOVEI 16,RUNDEV ;XWD 0,RUNDEV\r
+       TLNE IO,CRPGSW  ;WAS RPG IN PROGRESS?\r
+       HRLI 16,1       ;YES. START NEXT AT C(JOBSA)+1\r
+       RUN 16,         ;DO "RUN DEV:NAME"\r
+       HALT            ;SHOULDN'T RETURN. HALT IF IT DOES\r
+>\r
+\r
+DELETE:        HRRZ    EXTMP           ;IF THE EXTENSION\r
+       CAIE    (SIXBIT/TMP/)   ;IS  .TMP\r
+       POPJ    PP,             ;RETURN.\r
+       CLOSE   CTL2,           ;DELETE\r
+       SETZB   4,5             ;THE COMMAND FILE.\r
+       SETZB   6,7\r
+       RENAME  CTL2,4          ;\r
+       JFCL\r
+       POPJ    PP,\r
+>\r
+\fSUBTTL        START ASSEMBLING\r
+\r
+ASSEMB:        PUSHJ   PP,INZ          ;INITIALIZE FOR PASS\r
+       MOVE    [ASCII /.MAIN/]\r
+       MOVEM   TBUF\r
+       MOVEI   SBUF\r
+       HRRM    SUBTTX\r
+\r
+ASSEM1:        PUSHJ   PP,CHARAC       ;TEST FOR FORM FEED\r
+       SKIPGE  LIMBO           ;CRLF FLAG?\r
+       JRST    ASSEM1          ;YES ,IGNORE LF\r
+       CAIN    C,14\r
+       SKIPE   SEQNO\r
+       JRST    ASSEM2\r
+       PUSHJ   PP,OUTFF1\r
+       PUSHJ   PP,OUTLI\r
+       JRST    ASSEM1\r
+\r
+ASSEM2:        AOS     TAGINC\r
+       CAIN    C,"\"           ;BACK-SLASH?\r
+       TLZA    IO,IOMAC        ;YES, LIST IF IN MACRO\r
+       TLO     IO,IORPTC\r
+       PUSHJ   PP,STMNT        ;OFF WE GO\r
+       TLZN    IO,IOENDL       ;WAS STOUT PRE-EMPTED?\r
+       PUSHJ   PP,STOUT        ;NO, POLISH OFF LINE\r
+       JRST    ASSEM1\r
+\r
+\fSUBTTL        STATEMENT PROCESSOR\r
+\r
+STMNT: TLZ     FR,INDSW!FSNSW\r
+       TLZA    IO,FLDSW\r
+STMNT1:        PUSHJ   PP,LABEL\r
+STMNT2:        PUSHJ   PP,ATOM         ;GET THE FIRST ATOM\r
+       CAIN    C,35            ;"="?\r
+       JRST    ASSIGN          ;YES\r
+       CAIN    C,32            ;":"?\r
+       JRST    STMNT1          ;YES\r
+       JUMPAD  STMNT7          ;NUMERIC EXPRESSION\r
+       JUMPN   AC0,STMN2A      ;JUMP IF NON NULL FIELD\r
+       SKIPN   LITLVL          ;ALLOW COMMA IN LITERALS\r
+       CAIE    C,14            ;NULL, COMMA?\r
+       CAIN    C,EOL           ;OR END OF LINE?\r
+       POPJ    PP,             ;YES,EXIT\r
+       CAIN    C,"]"           ;CLOSING LITERAL?\r
+       POPJ    PP,             ;YES\r
+       JRST    STMNT9          ;NO,AT LEAST SKIP ALL THIS NONSENSE\r
+\r
+STMN2A:        JUMPE   C,.+2\r
+       TLO     IO,IORPTC\r
+       PUSHJ   PP,MSRCH        ;SEARCH FOR MACRO/OPDEF/SYN\r
+       JRST    STMNT3          ;NOT FOUND, TRY OP CODE\r
+       LDB     SDEL,[POINT 3,ARG,5]\r
+       JUMPE   SDEL,ERRAX      ;ERROR IF NO FLAGS\r
+       SOJE    SDEL,OPD1       ;OPDEF IF 1\r
+       SOJE    SDEL,CALLM      ;MACRO IF 2\r
+       JRST    STMNT4          ;SYNONYM, PROCESS WITH OP-CODES\r
+\r
+STMNT3:        PUSHJ   PP,OPTSCH       ;SEARCH OP CODE TABLE\r
+       JRST    STMNT5          ;NOT FOUND\r
+STMNT4:        HLLZ    AC0,V           ;PUT CODE IN AC0\r
+       TRZ     V,ADDF          ;CLEAR ADDRESS NON-VALID FLAG\r
+       TRZE    V,LITF          ;VALID IN LITERAL?\r
+       SKIPN   LITLVL          ;NO, ARE WE IN A LITERAL?\r
+       JRST    0(V)            ;NO, GO TO APPROPRIATE PROCESSOR\r
+       POPJ    PP,             ;YES,EXIT\r
+\r
+STMNT5:        PUSHJ   PP,SSRCH        ;TRY SYMBOLS\r
+       JRST    STMNT8          ;NOT FOUND\r
+       TLNE    ARG,EXTF!UNDF   ;EXTERNAL OR UNDEFINED?\r
+       JRST    STMNT7          ;YES, PROCESS IN EVALEX\r
+       TLNN RC,-2              ;CHECK FOR EXTERNAL\r
+       TRNE RC,-2\r
+       JRST STMNT7\r
+       MOVE    AC0,V           ;FOUND, PUT VALUE IN AC0\r
+       TLO     IO,NUMSW        ;FLAG AS NUMERIC\r
+STMNT7:        TLZ     IO,IORPTC\r
+STMNT9:        PUSHJ   PP,EVALHA       ;EVALUATE EXPRESSION\r
+IFN FORMSW,<   MOVE    AC1,HWFORM      ;USE STANDARD FORM>\r
+       TLNE    FR,FSNSW        ;FIELD SEEN?\r
+       JRST    STOW            ;YES,STOW THE CODE AND EXIT\r
+       CAIE    C,"]"-40        ;CLOSING LITERAL?\r
+       TRO     ER,ERRQ         ;NO, GIVE "Q" ERROR\r
+       POPJ    PP,             ;EXIT\r
+\r
+\fSTMNT8:       MOVEI   V,0             ;ALWAYS START SCAN WITH 0\r
+       CAIL    V,CALNTH        ;END OF TABLE?\r
+       JRST    STMN8C          ;YES, TRY TTCALLS\r
+       CAME    AC0,CALTBL(V)   ;FOUND IT?\r
+       AOJA    V,.-3           ;NO,TRY AGAIN\r
+       SUBI    V,NEGCAL        ;CALLI'S START AT -1\r
+       HRLI    V,(CALLI)       ;PUT IN UUO\r
+STMN8D:        MOVSI   ARG,OPDF        ;SET FLAG FOR OPDEF\r
+STMN8B:        PUSHJ   PP,INSERT       ;PUT OPDEF IN TABLE\r
+       JRST    OPD             ;AND TREAT AS OPDEF\r
+\r
+STMN8C:        SETZ    V,              ;START WITH ZERO\r
+       CAIL    V,TTCLTH        ;END OF TABLE?\r
+       JRST    STMN8A          ;YES, ERROR\r
+       CAME    AC0,TTCTBL(V)   ;MATCH?\r
+       AOJA    V,.-3           ;NO, KEEP TRYING\r
+       LSH     V,5             ;PUT IN AC FIELD (RIGHT HALF)\r
+       HRLZI   V,<(TTCALL)>(V) ;PUT UUO IN LEFT HALF\r
+       JRST    STMN8D          ;SET OPDEF FLAG\r
+\r
+STMN8A:        SETZB   V,RC            ;CLEAR VALUE AND RELOCATION\r
+       TRO     ER,ERRO         ;FLAG AS UNDEFINED OP-CODE\r
+       JUMP1   OPD             ;TREAT AS STANDARD OP ON PASS1\r
+       MOVSI   ARG,OPDF!UNDF!EXTF      ;SET A FEW FLAGS\r
+       JRST    STMN8B          ;TO FORCE OUT A MESSAGE\r
+\r
+               ;STATEMENT OUT PASSES REMAINDER OF LINE (CMNT)\r
+                       ;UNTIL A LINE TERMINATOR IS SEEN.\r
+STOUTS:        TLOA    IO,IOENDL!IORPTC\r
+STOUT: TLO     IO,IORPTC\r
+       PUSHJ   PP,BYPAS1\r
+       CAIN    C,14            ;COMMA?\r
+       SKIPL   STPX            ;YES, ERROR IF CODE STORED\r
+       CAIN    C,EOL\r
+       TLOA    IO,IORPTC\r
+       TRO     ER,ERRQ\r
+STOUT1:        PUSHJ   PP,CHARAC\r
+       CAIG    C,CR\r
+       CAIG    C,HT\r
+       JRST    STOUT1\r
+       JRST    OUTLIN          ;OUTPUT THE LINE (BIN AND LST)\r
+\f      SUBTTL  LABEL PROCESSOR\r
+       \r
+LABEL: JUMPAD  LABEL4          ;COMPARE IF NON-SYMBOLIC\r
+       JUMPE   AC0,LABEL5      ;ERROR IF BLANK\r
+       TLO IO,DEFCRS           ;THIS IS A DEFINITION\r
+       PUSHJ   PP,SSRCH        ;SEARCH FOR OPERAND\r
+       MOVSI   ARG,SYMF!UNDF!TAGF      ;NOT FOUND\r
+       TLNN    ARG,EXTF        ;OPERAND FOUND (SKIP EXIT)\r
+       JRST    LABEL0\r
+       JUMP1   LABEL3          ;ERROR ON PASS1\r
+       TLNN    ARG,UNDF        ;UNDEFINED ON PASS1\r
+       JRST    LABEL3          ;NO, FLAG ERROR\r
+       TLZ     ARG,EXTF!PNTF   ;TURN OFF EXT FLAG NOW\r
+LABEL0:        TLZN    ARG,UNDF!VARF   ;WAS IT PREVIOUSLY DEFINED?\r
+       JRST    LABEL2          ;YES, CHECK EQUALITY\r
+       MOVE    V,LOCA  ;WFW\r
+       MOVE    RC,MODA\r
+       TLO     ARG,TAGF\r
+       PUSHJ   PP,PEEK         ;GET NEXT CHAR.\r
+       CAIE    C,":"           ;SPECIAL CHECK FOR  ::\r
+       JRST    LABEL1          ;NO MATCH\r
+       TLO     ARG,INTF        ;MAKE IT INTERNAL\r
+       PUSHJ   PP,GETCHR       ;PROCESS NEXT CHAR.\r
+       PUSHJ   PP,PEEK         ;PREVIEW NEXT CHAR.\r
+LABEL1:        CAIE    C,"!"           ;HALF-KILL SIGN\r
+       JRST    LABEL6          ;NO\r
+       TLO     ARG,NOOUTF      ;YES, SUPPRESS IT\r
+       PUSHJ   PP,GETCHR       ;AND GET RID OF IT\r
+LABEL6:        MOVEM   AC0,TAG         ;SAVE FOR PASS 1 ERRORS\r
+       HLLZS   TAGINC          ;ZERO INCREMENT\r
+       JRST    INSERT          ;INSERT/UPDATE AND EXIT\r
+\r
+LABEL2:        HRLOM   V,LOCBLK        ;SAVE LIST LOCATION\r
+       CAMN    V,LOCA          ;DOES IT COMPARE WITH PREVIOUS? WFW\r
+       CAME    RC,MODA\r
+LABEL3:        TLOA    ARG,MDFF        ;NO, FLAG MULTIPLY DEFINED AND SKIP\r
+       JRST    LABEL7          ;YES, GET RID OF EXTRA CHARS.\r
+       TRO     ER,ERRM         ;FLAG MULTIPLY DEFINED ERROR \r
+       JRST    UPDATE          ;UPDATE AND EXIT\r
+\r
+LABEL4:        CAMN    AC0,LOCA        ;DO THEY COMPARE?\r
+       CAME    RC,MODA\r
+LABEL5:        TRO     ER,ERRP         ;NO, FLAG PHASE ERROR\r
+       POPJ    PP,\r
+\r
+LABEL7:        SKIPE   LITLVL          ;LABEL IN A LITERAL?\r
+       MOVEM   AC0,LITLBL      ;YES, SAVE LABEL NAME FOR LATER\r
+       PUSHJ   PP,PEEK         ;INSPECT A CHAR.\r
+       CAIN    C,":"           ;COLON?\r
+       PUSHJ   PP,GETCHR       ;YES, DISPOSE OF IT\r
+       PUSHJ   PP,PEEK         ;EXAMINE ONE MORE CHAR.\r
+       CAIN    C,"!"           ;EXCLAMATION?\r
+       JRST    GETCHR          ;YES, INDEED\r
+\f      POPJ    PP,\r
+\fSUBTTL        ATOM PROCESSOR\r
+ATOM:  PUSHJ   PP,CELL         ;GET FIRST CELL\r
+       TLNE    IO,NUMSW        ;IF NON-NUMERIC\r
+ATOM1: CAIE    C,42            ;OR NOT A BINARY SHIFT,\r
+       POPJ    PP,             ;EXIT\r
+\r
+       PUSH    PP,AC0          ;STACK REGISTERS, ITS A BINARY SHIFT\r
+       PUSH    PP,AC1\r
+       PUSH    PP,RC\r
+       PUSH    PP,RX\r
+       HRRI    RX,?D10         ;COMPUTE SHIFT RADIX 10\r
+       PUSHJ   PP,CELLSF       ;GET SHIFT\r
+       MOVE    ARG,RC          ;SAVE RELOCATION\r
+       POP     PP,RX           ;RESTORE REGISTERS\r
+       POP     PP,RC\r
+       POP     PP,AC1\r
+       MOVN    SX,AC0          ;USE NEGATIVE OF SHIFT\r
+       POP     PP,AC0\r
+       JUMPN   ARG,NUMER2      ;IF NOT ABSOLUTE\r
+       TLNN    IO,NUMSW        ;AND NUMERIC,\r
+       JRST    NUMER2          ;FLAG ERROR\r
+       LSHC    AC0,?D35(SX)\r
+       LSH     RC,?D35(SX)\r
+       JRST    ATOM1           ;TEST FOR ANOTHER\r
+\fCELLSF:       TLO     IO,FLDSW\r
+CELL:  SETZB   AC0,RC          ;CLEAR RESULT AND RELOCATION\r
+       SETZB   AC1,AC2         ;CLEAR WORK REGISTERS\r
+       MOVEM   PP,PPTEMP       ;SAVE PUSHDOWN POINTER\r
+       TLZ     IO,NUMSW\r
+       TLZA    FR,NEGSW!DCFSW!RADXSW\r
+\r
+CELL1: TLO     IO,FLDSW\r
+       PUSHJ   PP,BYPASS\r
+       LDB     V,[POINT 4,CSTAT(C),14] ;GET CODE\r
+       XCT     .+1(V)          ;EXECUTE, INDEX VIA BITS 11,12,13,14 OF CSTAT TABLE\r
+       JRST    CELL1           ;0; BLANK, (TAB OR "+")\r
+       JRST    LETTER          ;1; LETTER  ] $ % ( ) , ; >\r
+       TLC     FR,NEGSW        ;2; "-"\r
+       TLO     FR,INDSW        ;3; "@"\r
+       JRST    NUM1            ;4; NUMERIC   0 - 9\r
+       JRST    ANGLB           ;5; "<"\r
+       JRST    SQBRK           ;6; "["\r
+       JRST    QUOTES          ;7; ""","'" \r
+       JRST    QUAL            ;10; "?"\r
+       JRST    PERIOD          ;11; "."\r
+       TROA    ER,ERRQ         ;12; ERROR, FLAG AND TREAT AS DELIMITER\r
+                               ;12;    ! # & * / : = ? \ ?\r
+\fLETTER:       TLOA    AC2,(POINT 6,AC0,)      ;SET BYTE POINTER\r
+LETTE1:        PUSHJ   PP,GETCHR       ;GET CHARACTER\r
+       TLNN    CS,6            ;ALPHA-NUMERIC?\r
+       JRST    LETTE3          ;NO,TEST FOR VARIABLE\r
+       TLNE    AC2,770000      ;STORE ONLY SIX BYTES\r
+LETTE2:        IDPB    C,AC2           ;RETURN FROM PERIOD\r
+       JRST    LETTE1\r
+\r
+LETTE3:        CAIE    C,03            ;"#"?\r
+       POPJ    PP,\r
+       JUMPE   AC0,POPOUT      ;TEST FOR NULL\r
+       PUSHJ   PP,PEEK         ;PEEK AT NEXT CHAR.\r
+       CAIN    C,"#"           ;IS IT 2ND #?\r
+       JRST    LETTE4          ;YES, THEN IT'S AN EXTERN\r
+       TLO     IO,DEFCRS\r
+       PUSHJ   PP,SSRCH        ;YES, SEARCH FOR SYMBOL (OPERAND)\r
+       MOVSI   ARG,SYMF!UNDF   ;NOT FOUND, FLAGAS UNDEFINED SYM.\r
+       TLNN    ARG,UNDF        ;UNDEFINED?\r
+       JRST    GETCHR          ;NO, GET NEXT CHAR AND RETURN\r
+       TLO     ARG,VARF        ;YES, FLAG AS A VARIABLE\r
+       TRO     ER,ERRU         ;SET UNDEFINED ERROR FLAG\r
+       PUSHJ   PP,INSERZ       ;INSERT IT WITH A ZERO VALUE\r
+       JRST    GETDEL\r
+\r
+LETTE4:        PUSHJ   PP,GETCHR       ;AND SCAN PAST IT\r
+       PUSHJ   PP,GETCHR       ;GET RID OF #\r
+       JRST    EXTER1          ;PUT IN SYMBOL TABLE\r
+\r
+NUMER1:        SETZB   AC0,RC          ;RETURN ZERO\r
+NUMER2:        TRO     ER,ERRN         ;FLAG ERROR\r
+\r
+GETDEL:        PUSHJ   PP,BYPASS\r
+GETDE1:        JUMPE   C,.-1\r
+       MOVEI   AC1,0\r
+GETDE3:        TLO     IO,NUMSW!FLDSW  ;FLAG NUMERIC\r
+       TLNN    FR,NEGSW        ;IS ATOM NEGATIVE?\r
+       POPJ    PP,             ;NO, EXIT\r
+       JUMPE   AC1,GETDE2\r
+       MOVNS   AC1\r
+       TDCA    AC0,[-1]\r
+GETDE2:        MOVNS   AC0             ;YES, NEGATE VALUE\r
+       MOVNS   RC              ;AND RELOCATION\r
+POPOUT:        POPJ    PP,             ;EXIT\r
+\fQUOTES:       CAIE    C,"'"-40        ;IS IT  "'"\r
+       JRST    QUOTE           ;NO MUST BE """\r
+       JRST    SQUOTE          ;YES\r
+\r
+QUOTE0:        TLNE    AC0,376000      ;5 CHARACTERS STORED ALREADY?\r
+       TRO     ER,ERRQ         ;YES, GIVE WARNING\r
+       ASH     AC0,7\r
+       IOR     AC0,C\r
+QUOTE: PUSHJ   PP,CHARAC       ;GET 7-BIT ASCII\r
+       CAIG    C,15            ;TEST FOR LF, VT, FF OR CR\r
+       CAIGE   C,12\r
+       JRST    .+2             ;NO, SO ALL IS WELL\r
+       JRST    QUOTE2          ;ESCAPE WITH Q ERROR\r
+       CAIE    C,42\r
+       JRST    QUOTE0\r
+       PUSHJ   PP,PEEK         ;LOOK AT NEXT CHAR.\r
+       CAIE    C,42\r
+       JRST    QUOTE1          ;RESTORE REPEAT LEVEL AND QUIT\r
+       PUSHJ   PP,CHARAC       ;GET NEXT CHAR.\r
+       JRST    QUOTE0          ;USE IT\r
+\r
+QUOTE2:        TRO     ER,ERRQ         ;SET Q ERROR\r
+QUOTE1:        JRST    GETDEL\r
+\r
+SQUOT0:        TLNE    AC0,770000      ;SIX CHARS. STORED ALREADY ?\r
+       TRO     ER,ERRQ         ;YES\r
+       LSH     AC0,6\r
+       IORI    AC0,-40(C)      ;OR IN SIXBIT CHAR.\r
+\r
+SQUOTE:        PUSHJ   PP,CHARAC\r
+       CAIG    C,CR\r
+       CAIGE   C,LF\r
+       JRST    .+2\r
+       JRST    QUOTE1\r
+       CAIE    C,"'"\r
+       JRST    SQUOT0\r
+       PUSHJ   PP,PEEK\r
+       CAIE    C,"'"\r
+       JRST    QUOTE1\r
+       PUSHJ   PP,CHARAC\r
+       JRST    SQUOT0\r
+\r
+\fQUAL: PUSHJ   PP,BYPAS1       ;SKIP BLANKS, GET NEXT CHARACTER\r
+       CAIN    C,42            ;"B"?\r
+       JRST    QUAL2           ;YES, RADIX=D2\r
+       CAIN    C,57            ;"O"?\r
+       JRST    QUAL8           ;YES, RADIX=D8\r
+       CAIN    C,46            ;"F"?\r
+       JRST    NUMDF           ;YES, PROCESS DECIMAL FRACTION\r
+       CAIN    C,54            ;"L"?\r
+       JRST    QUALL           ;YES\r
+       CAIE    C,44            ;"D"?\r
+       JRST    NUMER1          ;NO, FLAG NUMERIC ERROR\r
+       ADDI    AC2,2\r
+QUAL8: ADDI    AC2,6\r
+QUAL2: ADDI    AC2,2\r
+       PUSH    PP,RX\r
+       HRR     RX,AC2\r
+       PUSHJ   PP,CELLSF\r
+QUAL2A:        POP     PP,RX\r
+       TLNN    IO,NUMSW\r
+       JRST    NUMER1\r
+       JRST    GETDE1\r
+\r
+QUALL: PUSH    PP,FR\r
+       PUSHJ   PP,CELLSF\r
+       MOVE    AC2,AC0\r
+       MOVEI   AC0,?D36\r
+       JUMPE   AC2,QUAL2A\r
+       LSH     AC2,-1\r
+       SOJA    AC0,.-2\r
+\fSUBTTL        LITERAL PROCESSOR\r
+\r
+SQBRK: PUSH    PP,FR\r
+       PUSH    PP,EXTPNT       ;ALLOW EXTERN TO PRECEDE LIT IN XWD\r
+       SETZM   EXTPNT\r
+       SKIPE LITLVL    ;SAVE SEQNO AND PAGE IF NOT IN LIT ALREADY\r
+       JRST SQB5\r
+       MOVE C,SEQNO2\r
+       MOVEM C,LITSEQ\r
+       MOVE C,PAGENO\r
+       MOVEM C,LITPG\r
+SQB5:  JSP     AC2,SVSTOW\r
+SQB3:  PUSHJ   PP,STMNT\r
+       CAIN C,75       ;CHECK FOR ]\r
+       JRST SQB1\r
+       TLO IO,IORPTC\r
+       TLNE    FR,MWLFLG       ;CALL IT ] IF NOT MULTI-WORD FLAG\r
+       JRST    SQB2            ;BUT REPEAT LAST CHARACTER\r
+       PUSHJ PP,BYPAS1\r
+       CAIN C,EOL\r
+       TLOA IO,IORPTC\r
+       TRO ER,ERRQ\r
+SQB4:  PUSHJ PP,CHARAC\r
+       CAIN    C,";"           ;COMMENT?\r
+       JRST    SQB6            ;YES, IGNORE SQUARE BRACKETS\r
+       CAIN    C,"]"           ;LOOK FOR TERMINAL SQB\r
+       TRNN    ER,ERRORS       ;IN CASE OF ERROR IN LITERAL\r
+       JRST    .+2             ;NO ALL IS WELL\r
+       JRST    SQB1            ;FINISH THE LITERAL NOW!!\r
+       CAIG    C,CR            ;LOOK FOR END OF LINE\r
+       CAIN    C,HT\r
+       JRST    SQB4\r
+SQB4A: PUSHJ   PP,OUTIML       ;DUMP\r
+       PUSHJ   PP,CHARAC       ;GET ANOTHER CHAR.\r
+       SKIPL   LIMBO           ;CRLF FLAG\r
+       TLO     IO,IORPTC       ;NO REPEAT\r
+       JRST    SQB3\r
+\r
+SQB6:  PUSHJ   PP,CHARAC       ;GET A CHARACTER\r
+       CAIG    C,CR\r
+       CAIN    C,HT            ;LOOK FOR END OF LINE CHAR.\r
+       JRST    SQB6            ;NOT YET\r
+       JRST    SQB4A           ;GOT IT\r
+\r
+SQB1:  TLZ     IO,IORPTC\r
+SQB2:  PUSHJ   PP,STOLIT\r
+       JSP     AC2,GTSTOW\r
+       SKIPE   LITLBL          ;NEED TO FIXUP A LABEL?\r
+       PUSHJ   PP,RELBLE       ;YES, USE LOC OF LITERAL\r
+       POP     PP,EXTPNT\r
+       POP     PP,FR\r
+       SKIPE   LITLVL          ;WERE WE NESTED?\r
+       JUMP1   NUMER2          ;YES, FORCE ERROR IF PASS 1\r
+       JRST    GETDEL\r
+\r
+RELBLE:        PUSH    PP,AC0          ;SAVE LOCATION COUNTER\r
+       PUSH    PP,RC           ;AND RELOCATION\r
+       MOVE    AC0,LITLBL      ;SYMBOL WE NEED\r
+       SETZM   LITLBL          ;ZERO INDICATOR\r
+       PUSHJ   PP,SSRCH        ;SEARCH FOR OPERAND\r
+       JRST    RELBL1          ;SHOULD NEVER HAPPEN\r
+       TLNN    ARG,TAGF        ;IT BETTER BE A LABEL\r
+       JRST    RELBL1          ;IT WASN'T , GIVE UP BEFORE SOME HARM IS DONE\r
+       TLZ     ARG,UNDF!EXTF!PNTF      ;CLEAR FLAGS NOW\r
+       POP     PP,RC           ;GET LITERAL RELOCATION\r
+       MOVE    V,(PP)          ;GET VALUE (LOC COUNTER)\r
+       PUSHJ   PP,UPDATE       ;UPDATE VALUE\r
+       POP     PP,AC0          ;RESTORE LITERAL COUNT\r
+       POPJ    PP,             ;RETURN\r
+       \r
+RELBL1:        POP     PP,RC           ;RESTORE RC\r
+       POP     PP,AC0  ;AND AC0\r
+       POPJ    PP,             ;JUST RETURN\r
+\fANGLB:        PUSH    PP,FR\r
+       TLZ     FR,INDSW\r
+       PUSHJ   PP,ATOM\r
+       TLNN    IO,NUMSW\r
+       CAIE    C,35\r
+       JRST    ANGLB1\r
+       PUSHJ   PP,ASSIG1\r
+       MOVE    AC0,V\r
+       JRST    ANGLB2\r
+\r
+ANGLB1:        PUSHJ   PP,EVALHA\r
+ANGLB2:        POP     PP,FR\r
+       CAIE    C,36\r
+       TRO     ER,ERRN\r
+       JRST    GETDEL\r
+\r
+PERIOD:        PUSHJ   PP,GETCHR       ;LOOK AT NEXT CHARACTER\r
+       TLNN    CS,2            ;ALPHABETIC?\r
+       JRST    PERNUM          ;NO, TEST NUMERIC\r
+       MOVSI   AC0,(SIXBIT /./)        ;YES, PUT PERIOD IN AC0\r
+       MOVSI   AC2,(POINT 6,AC0,5)     ;SET BYTE POINTER\r
+       JRST    LETTE2          ;AND TREAT AS SYMBOL\r
+\r
+PERNUM:        TLNE    CS,4            ;IS IT A NUMBER\r
+       JRST    NUM32           ;YES\r
+       MOVE    AC0,LOCA        ;NO. CURRENT LOC SYMBOL (.)\r
+       MOVE    RC,MODA         ;SET TO CURRENT ASSEMBLY MODE\r
+       JRST    GETDE1          ;GET DELIMITER\r
+NUMDF: TLO     FR,DCFSW        ;SET DECIMAL FRACTION FLAG\r
+NUM:   PUSHJ   PP,GETCHR       ;GET A CHARACTER\r
+       TLNN    CS,4            ;NUMERIC?\r
+       JRST    NUM10           ;NO\r
+NUM1:  SUBI    C,20            ;CONVERT TO OCTAL\r
+       PUSH    PP,C            ;STACK FOR FLOATING POINT\r
+       MOVE    AC0,AC1\r
+       MULI    AC0,0(RX)\r
+       ADD     AC1,C           ;ADD IN LAST VALUE\r
+       CAIL    C,0(RX)         ;IS NUMBER LESS THAN CURRENT RADIX?\r
+       TLO     FR,RADXSW       ;NO, SET FLAG\r
+       AOJA    AC2,NUM         ;YES, AC2=NO. OF DECIMAL PLACES\r
+\r
+\fNUM10:        CAIE    C,16            ;PERIOD?\r
+       TLNE    FR,DCFSW        ;OR DECIMAL FRACTION?\r
+       JRST    NUM30           ;YES, PROCESS FLOATING POINT\r
+       LSH     AC1,1           ;NO, CLEAR THE SIGN BIT\r
+       LSHC    AC0,?D35        ;AND SHIFT INTO AC0\r
+       MOVE    PP,PPTEMP       ;RESTORE PP\r
+       SOJE    AC2,GETDE1      ;NO RADIX ERROR TEST IF ONE DIGIT\r
+       TLNE    FR,RADXSW       ;WAS ILLEGAL NUMBER ENCOUNTERED?\r
+       TRO     ER,ERRN         ;YES, FLAG N ERROR\r
+       JRST    GETDE1\r
+\r
+NUM30: CAIE    C,"B"-40        ;IF "B" THEN MISSING  "."\r
+NUM31: PUSHJ   PP,GETCHR\r
+       TLNN    CS,4            ;NUMERIC?\r
+       JRST    NUM40           ;NO\r
+NUM32: SUBI    C,20\r
+       PUSH    PP,C\r
+       JRST    NUM31\r
+\r
+NUM40: PUSH    PP,FR           ;STACK VALUES\r
+       HRRI    RX,?D10\r
+       PUSH    PP,AC2\r
+       PUSH    PP,PPTEMP\r
+       CAIN    C,45            ;"E"?\r
+       JRST    [PUSHJ PP,PEEK  ;GET NEXT CHAR\r
+               PUSH PP,C       ;SAVE NEXT CHAR\r
+               PUSHJ PP,CELL   ;YES, GET EXPONENT\r
+               POP PP,C        ;GET FIRST CHAR. AFTER E\r
+               CAIN V,4        ;MUST HAVE NUMERICAL STATUS\r
+               JRST    .+2     ;SKIP RETURN\r
+               CAIN C,"<"      ;ALLOW <EXP>\r
+               JRST    .+2     ;SKIP RETURN\r
+               SKIPN   AC0     ;ERROR IF NON-ZERO EXPRESSION\r
+               TROA ER,ERRQ    ;ALLOW E+,E-\r
+               SETOM   RC      ;FORCE NUMERICAL ERROR\r
+               JRST    .+2]    ;SKIP RETURN\r
+       MOVEI   AC0,0           ;NO, ZERO EXPONENT\r
+       POP     PP,PPTEMP\r
+       POP     PP,SX\r
+       POP     PP,FR\r
+       HRRZ    V,PP\r
+       MOVE    PP,PPTEMP\r
+       JUMPN   RC,NUMER1       ;EXPONENT MUST BE ABSOLUTE\r
+       ADD     SX,AC0\r
+       HRRZ    ARG,PP\r
+       ADD     SX,ARG\r
+       SETZB   AC0,AC2\r
+       TLNE    FR,DCFSW\r
+       JRST    NUM60\r
+       JOV     NUM50           ;CLEAR OVERFLOW FLAG\r
+\f\r
+NUM50: JSP     SDEL,NUMUP      ;FLOATING POINT\r
+       JRST    NUM52           ;END OF WHOLE NUMBERS\r
+       FMPR    AC0,[10.0]      ;MULTIPLY BY 10\r
+       TLO     AC1,233000      ;CONVERT TO FLOATING POINT\r
+       FADR    AC0,AC1         ;ADD IT IN\r
+       JRST    NUM50\r
+\r
+NUM52: JSP     SDEL,NUMDN      ;PROCESS FRACTION\r
+       FADR    AC0,AC2\r
+       JOV     NUMER1          ;TEST FOR OVERFLOW\r
+       JRST    GETDE1\r
+\r
+       TLO     AC1,233000\r
+       TRNE    AC1,-1\r
+       FADR    AC2,AC1         ;ACCUMULATE FRACTION\r
+       FDVR    AC2,[10.0]\r
+       JRST    NUM52\r
+\r
+NUM60: JSP     SDEL,NUMUP\r
+       JRST    NUM62\r
+       IMULI   AC0,?D10\r
+       ADD     AC0,AC1\r
+       JRST    NUM60\r
+\r
+NUM62: LSHC    AC1,-?D36\r
+       JSP     SDEL,NUMDN\r
+       LSHC    AC1,?D37\r
+       PUSHJ   PP,BYPAS2\r
+       JRST    GETDE3\r
+\r
+       DIVI    AC1,?D10\r
+       JRST    NUM62\r
+\r
+NUMUP: MOVEI   AC1,0\r
+       CAML    ARG,SX\r
+       JRST    0(SDEL)\r
+       CAMGE   ARG,V\r
+       MOVE    AC1,1(ARG)\r
+       AOJA    ARG,1(SDEL)\r
+\r
+NUMDN: MOVEI   AC1,0\r
+       CAMG    V,SX\r
+       JRST    0(SDEL)\r
+       CAMLE   V,ARG\r
+       MOVE    AC1,0(V)\r
+       SOJA    V,3(SDEL)\r
+\fSUBTTL        GETSYM\r
+GETSYM:        MOVEI   AC0,0           ;CLEAR AC0\r
+       MOVSI   AC1,(POINT 6,AC0)       ;PUT POINTER IN AC1\r
+       PUSHJ   PP,BYPASS       ;SKIP LEADING BLANKS\r
+       TLNN    CS,2            ;ALPHABETIC?\r
+       JRST    GETSY1          ;NO, ERROR\r
+       CAIE    C,16            ;PERIOD?\r
+       JRST    GETSY2          ;NO, A VALID SYMBOL\r
+       IDPB    C,AC1           ;STORE THE CHARACTER\r
+       PUSHJ   PP,GETCHR       ;YES, TEST NEXT CHARACTER\r
+       TLNN    CS,2            ;ALPHABETIC?\r
+GETSY1:        TROA    ER,ERRA\r
+GETSY2:        AOS     0(PP)           ;YES, SET SKIP EXIT\r
+GETSY3:        TLNN    CS,6            ;ALPHA-NUMERIC?\r
+       JRST    BYPAS2          ;NO, GET DELIMITER\r
+       TLNE    AC1,770000      ;YES, HAVE WE STORED SIX?\r
+       IDPB    C,AC1           ;NO, STORE IT\r
+       PUSHJ   PP,GETCHR\r
+       JRST    GETSY3\r
+\r
+\fSUBTTL        EXPRESSION EVALUATOR\r
+CV==   AC0                     ;CURRENT VALUE\r
+PV==   AC1                     ;PREVIOUS VALUE\r
+RC==   RC                      ;CURRENT RELOCATABILITY\r
+PR==   AC2                     ;PREVIOUS RELOCATABILITY\r
+CS=    CS                      ;CURRENT STATUS\r
+PS==   SDEL                    ;PREVIOUS STATUS\r
+\r
+EVALHA:        TLO     FR,TMPSW\r
+EVALCM:        PUSHJ   PP,EVALEX       ;EVALUATE FIRST EXPRESSION\r
+       PUSH    PP,[0]          ;MARK PDL\r
+       JUMPCM  EVALC3          ;JUMP IF COMMA\r
+       TLO     IO,IORPTC       ;IT'S NOT,SO REPEAT\r
+       JRST    OP              ;PROCESS IN OP\r
+EVALC3:\r
+IFN FORMSW,<PUSH PP,INFORM     ;PUT FORM WORD ON STACK>\r
+       PUSH    PP,[0]          ;STORE ZERO'S ON PDL\r
+       PUSH    PP,[0]          ;.......\r
+       MOVSI   AC2,(POINT 4,(PP),12)\r
+       JRST    OP1B            ;PROCESS IN OP\r
+\r
+EVALEX:        TLO     IO,FLDSW\r
+       PUSH    PP,[XWD TNODE,0]        ;MARK THE LIST 200000,,0\r
+       TLZN    FR,TMPSW\r
+EVATOM:        PUSHJ   PP,ATOM         ;GET THE NEXT ATOM\r
+       JUMPE   AC0,EVGETD      ;TEST FOR NULL/ZERO\r
+       TLOE    IO,NUMSW        ;SET NUMERIC, WAS IT PREVIOUSLY?\r
+       JRST    EVGETD+1        ;YES, TREAT ACCORDINGLY\r
+       PUSHJ   PP,SEARCH       ;SEARCH FOR MACRO OR SYMBOL\r
+       JRST    EVOP            ;NOT FOUND, TRY FOR OP-CODE\r
+       JUMPL   ARG,.+2         ;SKIP IF OPERAND\r
+       PUSHJ   PP,SSRCH1       ;OPERATOR, TRY FOR SYMBOL (OPERAND)\r
+       PUSHJ   PP,QSRCH        ;PERFORM CROSS-REFERENCE\r
+       JUMPG   ARG,EVMAC       ;BRANCH IF OPERATOR\r
+       MOVE    AC0,V           ;SYMBOL, SET VALUE\r
+       JRST    EVTSTS          ;TEST STATUS\r
+\r
+EVMAC: TLNE    FR,NEGSW        ;UNARY MINUS?\r
+       JRST    EVERRZ          ;YES, INVALID BEFORE OPERATOR\r
+       LDB     SDEL,[POINT 3,ARG,5]    ;GET MACF/OPDF/SYNF\r
+       SOJL    SDEL,EVERRZ     ;ERROR IF NO FLAGS\r
+\r
+       JUMPE   C,.+2           ;NON-BLANK?\r
+       TLO     IO,IORPTC       ;YES, REPEAT CHARACTER\r
+       SOJE    SDEL,CALLM      ;MACRO IF 2\r
+       JUMPG   SDEL,EVOPS      ;SYNONYM IF 4\r
+\r
+       MOVE    AC0,V           ;OPDEF\r
+       MOVEI   V,OP            ;SET TRANSFER VECTOR\r
+       JRST    EVOPD\r
+\fEVOP: TLNE    FR,NEGSW        ;OPCODE, UNARY MINUS?\r
+       JRST    EVERRZ          ;YES, ERROR\r
+\r
+       PUSHJ   PP,OPTSCH       ;SEARCH SYMBOL TABLE\r
+       JRST    EVOPX           ;NOT FOUND\r
+EVOPS: TRZ     V,LITF          ;CLEAR LIT INVALID FLAG\r
+       TRZE    V,ADDF          ;SYNONYM\r
+       JRST    EVOPX           ;PSEUDO-OP THAT GENERATES NO DATA JUMPS\r
+       HLLZ    AC0,V\r
+EVOPD: JUMPE   C,.+2           ;OPDEF, NON-BLANK DELIMITER?\r
+       TLO     IO,IORPTC       ;YES, REPEAT CHARACTER\r
+       JSP     AC2,SVSTOW\r
+       PUSHJ   PP,0(V)\r
+       PUSHJ   PP,DSTOW\r
+       JSP     AC2,GTSTOW\r
+       TRNE    RC,-2\r
+       HRRM    RC,EXTPNT\r
+       TLNE RC,-2\r
+       HLLM RC,EXTPNT\r
+       JRST    EVNUM\r
+\r
+EVOPX: MOVSI   ARG,SYMF!UNDF\r
+       PUSHJ   PP,INSERZ\r
+EVERRZ:        SETZB   AC0,RC          ;CLEAR CODE AND RELOCATION\r
+EVERRU:        TRO     ER,ERRU\r
+       JRST    EVGETD\r
+\fEVTSTS:       TLNE    ARG,UNDF\r
+       JRST    [TRO    ER,ERRU ;SET UNDEF ERROR\r
+               JUMP1   EVGETD  ;TREAT AS UNDF ON PASS1\r
+               JRST    .+1]    ;TREAT AS EXTERNAL ON PASS2\r
+       TLNN    ARG,EXTF\r
+       JRST    EVTSTR\r
+       HRRZ RC,ARG     ;GET ADRES WFW\r
+       HRRZ ARG,EXTPNT ;SAVE IT WFW\r
+       HRRM RC,EXTPNT  ;WFW\r
+       TRNE ARG,-1     ;WFW\r
+       TRO     ER,ERRE\r
+       SETZB   AC0,ARG\r
+\r
+EVTSTR:        TLNE    ARG,MDFF        ;MULTIPLY DEFINED?\r
+       TRO     ER,ERRD         ;YES, FLAG IT\r
+       TLNE    FR,NEGSW        ;NEGATIVE ATOM?\r
+       PUSHJ   PP,GETDE2       ;YES, NEGATE AC0 AND RC\r
+\r
+EVGETD:        TLNE    IO,NUMSW        ;NON BLANK FIELD\r
+       TLO     FR,FSNSW        ;YES,SET FLAG\r
+       PUSHJ   PP,BYPAS2\r
+       TLNE    CS,6            ;ALPHA-NUMERIC?\r
+       TLO     IO,IORPTC       ;YES, REPEAT IT\r
+EVNUM: POP     PP,PS           ;POP THE PREVIOUS DELIMITER/TNODE\r
+       TLO     PS,4000\r
+       CAMGE   PS,CS           ;OPERATION REQUIRED?\r
+       JRST    EVPUSH          ;NO, PUT VALUES BACK ON STACK\r
+       TLNN    PS,TNODE        ;YES, HAVE WE REACHED TERMINAL NODE?\r
+       JRST    EVXCT           ;NO, EXECUTION REQUIRED\r
+       TLNN    CS,170000       ;YES, ARE WE POINTING AT DEL? (& ! * / + - ?)\r
+       POPJ    PP,             ;YES, EXIT\r
+                               ;NO,FALL INTO EVPUSH\r
+\r
+\fEVPUSH:       PUSH    PP,PS           ;STACK VALUES\r
+       PUSH    PP,CV\r
+       PUSH    PP,RC\r
+       PUSH    PP,CS\r
+       JRST    EVATOM          ;GET NEXT ATOM\r
+\r
+EVXCT: POP     PP,PR           ;POP PREVIOUS RELOCATABILITY\r
+       POP     PP,PV           ;AND PREVIOUS VALUE\r
+       LDB     PS,[POINT 3,PS,29]      ;TYPE OF OPERATION TO PS\r
+       JRST    .+1(PS)         ;PERFORM PROPER OPERATION\r
+       JRST    ASSEM1          ;0; SHOULD NEVER GET HERE ;DMN\r
+       JRST    XMUL            ;1;\r
+       JRST    XDIV            ;2;\r
+       JRST    XADD            ;3;\r
+       JRST    XSUB            ;4;\r
+       JRST    XLRW            ;5; "?"\r
+       TDOA    CV,PV           ;6; MERGE PV INTO CV\r
+       AND     CV,PV           ;7; AND PV INTO CV\r
+       JUMPN   RC,.+2          ;COMMON RELOCATION TEST\r
+EVXCT1:        JUMPE   PR,EVNUM\r
+       TRO     ER,ERRR         ;BOTH MUST BE FIXED\r
+       JRST    EVNUM           ;GO TRY AGAIN\r
+\r
+XSUB:  SUBM    PV,CV\r
+       SUBM    PR,RC\r
+       JRST    EVNUM\r
+\r
+XADD:  ADDM    PV,CV\r
+       ADDM    PR,RC\r
+       JRST    EVNUM\r
+\r
+XDIV:  IDIV    PR,CV           ;CORRECT RELOCATABILITY\r
+       IDIVM   PV,CV\r
+XDIV1: EXCH    PR,RC           ;TAKE RELOCATION OF NUMERATOR\r
+       JRST    EVXCT1\r
+\r
+XMUL:  JUMPE   PR,XMUL1        ;AT LEAST ONE OPERAND\r
+       JUMPE   RC,XMUL1        ;MUST BE FIXED\r
+       TRO     ER,ERRR\r
+XMUL1: IORM    PR,RC           ;GET RELOCATION TO RC\r
+       CAMGE   PV,CV           ;FIND THE GREATER\r
+       EXCH    PV,CV           ;FIX IN CASE CV=0,OR 1\r
+       IMULM   PV,RC\r
+       IMULM   PV,CV\r
+       JRST    EVNUM\r
+XLRW:  EXCH    PV,CV\r
+       LSH     CV,0(PV)\r
+       LSH     PR,0(PV)\r
+       JRST    XDIV1\r
+\f      SUBTTL  LITERAL STORAGE HANDLER\r
+       \r
+STOLER:\r
+IFE FORMSW,<   SETZB   AC0,RC  ;ERROR, NO CODE STORED\r
+       PUSHJ   PP,STOW         ;STOW ZERO>\r
+IFN FORMSW,<   MOVEI   AC0,0\r
+       PUSHJ   PP,STOWZ1>\r
+       TRO     ER,ERRL         ;AND FLAG THE ERROR\r
+\r
+STOLIT:        MOVE    SDEL,STPX\r
+       SUB     SDEL,STPY       ;COMPUTE NUMBER OF WORDS\r
+       JUMPE   SDEL,STOLER     ;ERROR IF NONE STORED\r
+       TRNN    ER,ERRORS       ;ANY ERRORS?\r
+       JRST    STOL06          ;NO\r
+       JUMP2   STOL22          ;YES, NO SEARCH.  BRANCH IF PASS2\r
+       ADDM    SDEL,LITCNT     ;PASS ONE, UPDATE COUNT\r
+       JRST    STOWI           ;INITIALIZE STOW\r
+\r
+STOL06:        MOVEI   SX,LITAB        ;PREPARE FOR SEARCH\r
+       MOVE    ARG,STPX        ;SAVE IN THE EVENT OF MULTIPLE-WORD\r
+       HRL     ARG,STPY\r
+       MOVE    AC2,LITNUM\r
+       MOVEI   SDEL,0\r
+STOL08:        PUSHJ   PP,DSTOW        ;GET VALUE WFW\r
+\r
+STOL10:        SOJL    AC2,STOL24      ;TEST FOR END\r
+       MOVE    SX,0(SX)        ;NO, GET NEXT STORAGE CELL\r
+       MOVE    V,-1(SX)                ;GET RELOCATION BITS WFW\r
+       CAMN    AC0,-2(SX)      ;DO CODES COMPARE? WFW\r
+       CAME    RC,V            ;YES, HOW ABOUT RELOCATION?\r
+       AOJA    SDEL,STOL10     ;NO, TRY AGAIN\r
+       SKIPGE  STPX            ;YES, MULTI-WORD?\r
+       JRST    STOL26          ;NO, JUST RETURN LOCATION\r
+       MOVEM   AC2,SAVBLK+AC2  ;YES, SAVE STARTING INFO\r
+       MOVEM   SX,SAVBLK+SX\r
+\r
+STOL12:        SOJL    AC2,STOL23      ;TEST FOR END\r
+       PUSHJ   PP,DSTOW        ;GET NEXT WORD WFW\r
+       MOVE    SX,0(SX)        ;UPDATE POINTER\r
+       MOVE    V,-1(SX)                ;GET RELOCATION WFW\r
+       CAMN    AC0,-2(SX)      ;COMPARE VALUE WFW\r
+       CAME    RC,V            ;AND RELOCATION\r
+       JRST    STOL14          ;NO MATCH, TRY AGAIN\r
+       SKIPL   STPX            ;MATCH, HAVE WE FINISHED SEARCH?\r
+       JRST    STOL12          ;NO, TRY NEXT WORD\r
+       JRST    STOL26          ;YES, RETURN LOCATION\r
+\r
+STOL14:        MOVE    AC2,SAVBLK+AC2  ;RESTORE STOW POINTERS\r
+       MOVE    SX,SAVBLK+SX\r
+       HRREM   ARG,STPX\r
+       HLREM   ARG,STPY\r
+       AOJA    SDEL,STOL08     ;BETTER LUCK NEXT TIME\r
+\f\r
+STOL22:        MOVE    SDEL,LITNUM\r
+STOL23:        PUSHJ   PP,DSTOW        ;DSTOW AND CONVERT\r
+STOL24:        MOVE    SX,LITABX       ;GET CURRENT STORAGE\r
+       PUSHJ   PP,GETTOP       ;GET NEXT CELL\r
+       MOVEM   AC0,-2(SX)      ;STORE CODE WFW\r
+       MOVEM   RC,-1(SX)       ;WFW\r
+IFN FORMSW,<\r
+       MOVE    AC0,FORM\r
+       MOVEM   AC0,-3(SX)>\r
+       MOVEM   SX,LITABX       ;SET POINTER TO CURRENT CELL\r
+       AOS     LITNUM          ;INCREMENT NUMBER STORED\r
+       AOS     LITCNT          ;INCREMENT NUMBER RESERVED\r
+       SKIPL   STPX            ;ANY MORE CODE?\r
+       JRST    STOL23          ;YES\r
+STOL26:        JUMP1   POPOUT          ;EXIT IF PASS ONE\r
+       MOVE    SX,LITHDX       ;GET HEADER BLOCK\r
+       HLRZ    RC,-1(SX)       ;GET BLOCK RELOCATION\r
+       HRRZ    AC0,-1(SX)\r
+       ADDI    AC0,0(SDEL)     ;COMPUTE ACTUAL LOCATION\r
+       POPJ    PP,             ;EXIT\r
+\r
+\fSUBTTL        INPUT ROUTINES\r
+GETCHR:        PUSHJ   PP,CHARAC       ;GET ASCII CHARACTER\r
+       CAIL    C,"A"+40        ;CHECK FOR LOWER CASE\r
+       CAILE   C,"Z"+40\r
+       JRST    .+2             ;NOT LOWER CASE\r
+       MOVEI C,100             ;@>\r
+       TRZA    C,100           ;CONVERT LOWER CASE TO SIXBIT\r
+       SUBI    C,40            ;CONVERT TO SIXBIT\r
+       CAIG    C,77            ;CHAR GREATER THAN SIXBIT?\r
+       JUMPGE  C,GETCS         ;TEST FOR VALID SIXBIT\r
+       ADDI    C,40            ;BACK TO ASCII\r
+       CAIN    C,HT            ;CHECK FOR TAB\r
+       JRST    GETCS2          ;MAKE IT LOOK LIKE SPACE\r
+       CAIG    C,CR            ;GREATER THAN CR\r
+       CAIG    C,HT            ;GREATER THAN TAB\r
+       JRST    GETCS1          ;IS NOT FF,VT,LF OR CR\r
+       MOVEI   C,EOL           ;LINE OR FORM FEED OR V TAB\r
+       TLOA    IO,IORPTC       ;REPEAT CHARACTER\r
+GETCS2:        MOVEI   C,0             ;BUT TREAT AS BLANK\r
+GETCS: MOVE    CS,CSTAT(C)     ;GET STATUS BITS\r
+       POPJ    PP,             ;EXIT\r
+\r
+GETCS1:        JUMPE   C,GETCS         ;IGNORE NULS\r
+       TRC     C,100           ;MAKE CHAR. VISIBLE\r
+       MOVEI   CS,"?"\r
+       DPB     CS,LBUFP        ;PUT ? IN OUTPUT\r
+       PUSHJ   PP,RSW2         ;ALSO MODIFIED CHAR.\r
+       TRO     ER,ERRQ         ;FLAG Q ERROR\r
+       JRST    GETCHR          ;BUT IGNORE CHAR.\r
+\f\r
+CHARAC:        TLZE    IO,IORPTC       ;REPEAT REQUESTED?\r
+       JRST    CHARAX          ;YES\r
+RSW0:  JUMPN   MRP,MREAD       ;BRANCH IF TREE POINTER SET\r
+       PUSHJ   PP,READ\r
+RSW1:  SKIPE   RPOLVL          ;ARE WE IN "REPEAT ONCE"?\r
+       JRST    REPO1           ;YES\r
+RSW2:  MOVE    CS,LIMBO        ;GET LAST CHAR.\r
+       MOVEM   C,LIMBO ;STORE THIS CHAR. FOR RPTC\r
+       CAIN    C,LF            ;LF?\r
+       CAIE    CS,CR           ;YES,LAST CHAR. A CR?\r
+       JRST    RSW3            ;NO\r
+       HRROS   LIMBO           ;YES,FLAG\r
+       POPJ    PP,             ;AND EXIT\r
+\r
+RSW3:  TLNE    IO,IOSALL       ;MACRO SUPPRESS ALL?\r
+       JUMPN   MRP,CPOPJ       ;YES,DON'T LIST IN MACRO\r
+       SOSG    CPL             ;ANY ROOM IN THE IMAGE BUFFER?\r
+       PUSHJ   PP,OUTPL        ;NO, OUTPUT THE PARTIAL LINE\r
+       IDPB    C,LBUFP         ;YES, STORE IN PRINT AREA\r
+       CAIE    C,HT            ;TAB?\r
+       POPJ    PP,             ;NO, EXIT\r
+       MOVEI   C,7\r
+       ANDCAM  C,CPL           ;MASK\r
+CHARAX:        HRRZ    C,LIMBO         ;GET LAST CHARACTER\r
+       POPJ    PP,             ;EXIT\r
+\r
+CHARL: PUSHJ   PP,CHARAC       ;GET AND TEST 7-BIT ASCII\r
+       CAIG    C,FF            ;LINE OR FORM FEED OR VT?\r
+       CAIGE   C,LF\r
+       POPJ    PP,             ;NO,EXIT\r
+       SKIPE   LITLVL          ;IN LITERAL?\r
+       JRST    OUTIML          ;YES\r
+CHARL1:        PUSHJ   PP,SAVEXS       ;SAVE REGISTERS\r
+       PUSHJ   PP,OUTLIN       ;DUMP THE LINE\r
+       JRST    RSTRXS          ;RESTORE REGISTERS AND EXIT\r
+\fSUBTTL        CHARACTER STATUS TABLE\r
+\r
+       DEFINE  GENCS   (OPLVL,ATOM,AN,SQUOZ,OPTYPE,SEQNO)\r
+<BYTE (6)OPLVL (9)ATOM (3)AN (6)SQUOZ,OPTYPE,SEQNO>\r
+\r
+       ;OPLVL  PRIORITY OF BINARY OPERATORS\r
+       ;ATOM   INDEX TO JUMP TABLE AT CELL1\r
+       ;AN     TYPE OF CHARACTER\r
+       ;       1=OTHER, 2=ALPHA, 4=NUMERIC\r
+       ;SQUOZ  VALUE IN RADIX 50\r
+       ;OPTYPE INDEX TO JUMP TABLE AT EVXCT\r
+       ;SEQNO  VALUE IN SIXBIT\r
+CSTAT:\r
+       GENCS   00,00,1,00,00,00        ; ' '\r
+       GENCS   04,12,1,00,06,01        ; '!'\r
+       GENCS   00,07,1,00,00,02        ; '"'\r
+       GENCS   00,12,1,00,00,03        ; '#'\r
+       GENCS   00,01,2,46,00,04        ; '$'\r
+       GENCS   00,01,2,47,00,05        ; '%'\r
+       GENCS   04,12,1,00,07,06        ; '&'\r
+       GENCS   00,07,1,00,00,07        ; '''\r
+\r
+       GENCS   00,01,1,00,00,10        ; '('\r
+       GENCS   00,01,1,00,00,11        ; ')'\r
+       GENCS   02,12,1,00,01,12        ; '*'\r
+       GENCS   01,00,1,00,03,13        ; '+'\r
+       GENCS   40,01,1,00,00,14        ; ','\r
+       GENCS   01,02,1,00,04,15        ; '-'\r
+       GENCS   00,11,2,45,00,16        ; '.'\r
+       GENCS   02,12,1,00,02,17        ; '/'\r
+\r
+       GENCS   00,04,4,01,00,20        ; '0'\r
+       GENCS   00,04,4,02,00,21        ; '1'\r
+       GENCS   00,04,4,03,00,22        ; '2'\r
+       GENCS   00,04,4,04,00,23        ; '3'\r
+       GENCS   00,04,4,05,00,24        ; '4'\r
+       GENCS   00,04,4,06,00,25        ; '5'\r
+       GENCS   00,04,4,07,00,26        ; '6'\r
+       GENCS   00,04,4,10,00,27        ; '7'\r
+\r
+       GENCS   00,04,4,11,00,30        ; '8'\r
+       GENCS   00,04,4,12,00,31        ; '9'\r
+       GENCS   00,12,1,00,00,32        ; ':'\r
+       GENCS   00,01,1,00,00,33        ; ';'\r
+       GENCS   00,05,1,00,00,34        ; '<'\r
+       GENCS   00,12,1,00,00,35        ; '='\r
+       GENCS   00,01,1,00,00,36        ; '>'\r
+       GENCS   00,12,1,00,00,37        ; '?'\r
+\f      GENCS   00,03,1,00,00,40        ; '@'\r
+       GENCS   00,01,2,13,00,41        ; 'A'\r
+       GENCS   00,01,2,14,00,42        ; 'B'\r
+       GENCS   00,01,2,15,00,43        ; 'C'\r
+       GENCS   00,01,2,16,00,44        ; 'D'\r
+       GENCS   00,01,2,17,00,45        ; 'E'\r
+       GENCS   00,01,2,20,00,46        ; 'F'\r
+       GENCS   00,01,2,21,00,47        ; 'G'\r
+\r
+       GENCS   00,01,2,22,00,50        ; 'H'\r
+       GENCS   00,01,2,23,00,51        ; 'I'\r
+       GENCS   00,01,2,24,00,52        ; 'J'\r
+       GENCS   00,01,2,25,00,53        ; 'K'\r
+       GENCS   00,01,2,26,00,54        ; 'L'\r
+       GENCS   00,01,2,27,00,55        ; 'M'\r
+       GENCS   00,01,2,30,00,56        ; 'N'\r
+       GENCS   00,01,2,31,00,57        ; 'O'\r
+\r
+       GENCS   00,01,2,32,00,60        ; 'P'\r
+       GENCS   00,01,2,33,00,61        ; 'Q'\r
+       GENCS   00,01,2,34,00,62        ; 'R'\r
+       GENCS   00,01,2,35,00,63        ; 'S'\r
+       GENCS   00,01,2,36,00,64        ; 'T'\r
+       GENCS   00,01,2,37,00,65        ; 'U'\r
+       GENCS   00,01,2,40,00,66        ; 'V'\r
+       GENCS   00,01,2,41,00,67        ; 'W'\r
+\r
+       GENCS   00,01,2,42,00,70        ; 'X'\r
+       GENCS   00,01,2,43,00,71        ; 'Y'\r
+       GENCS   00,01,2,44,00,72        ; 'Z'\r
+       GENCS   00,06,1,00,00,73        ; '['\r
+       GENCS   00,12,1,00,00,74        ; '\'\r
+       GENCS   00,01,1,00,00,75        ; ']'\r
+       GENCS   00,10,1,00,00,76        ; '?'\r
+       GENCS   10,12,1,00,05,77        ; '?'\r
+\fSUBTTL        LISTING ROUTINES\r
+\r
+OUTLIN:        TRNN    ER,ERRORS-ERRQ  ;ANY ERRORS?\r
+       TLNE    FR,ERRQSW       ;NO, IGNORE Q ERRORS?\r
+       TRZ     ER,ERRQ         ;YES, YES, ZERO THE Q ERROR\r
+       HRLZ    AC0,ER          ;PUT ERROR FLAGS IN AC0 LEFT\r
+       TDZ     ER,TYPERR\r
+       JUMP1   OUTL30          ;BRANCH IF PASS ONE\r
+       JUMPN   AC0,OUTL02      ;JUMP IF ANY ERRORS TO FORCE PRINTING\r
+       SKIPL   STPX            ;SKIP IF NO CODE, OTHERWISE\r
+       JRST    OUTL01          ;NO\r
+       TLNN    IO,IOSALL       ;YES,SUPPRESS ALL?\r
+       JRST    OUTL03          ;NO\r
+       JUMPN   MRP,CPOPJ       ;YES,EXIT IF IN MACRO\r
+       LDB     C,[XWD 350700,LBUF]\r
+       CAIE    C,15            ;FIRST CHAR CR?\r
+OUTL01:        TLZ     IO,IOMAC        ;FORCE MACRO PRINTING\r
+OUTL03:        TLNN    IO,IOMSTR!IOPROG!IOMAC\r
+OUTL02:        IOR     ER,OUTSW        ;FORCE IT.\r
+       IDPB    AC0,LBUFP       ;STORE ZERO TERMINATOR AFTER ASCII SRC LINE\r
+       TLNN    FR,CREFSW       ;CREF?\r
+       PUSHJ   PP,CLSCRF       ;YES, WRITE END OF CREF DATA (177,003)\r
+       JUMPE   AC0,OUTL20      ;BRANCH IF NO ERRORS\r
+       TLZE    AC0,ERRM        ;M ERROR?\r
+       TLO     AC0,ERRP        ;M ERROR SET - SET P ERROR.\r
+       PUSHJ   PP,OUTLER       ;PROCESS ERRORS\r
+\r
+OUTL20:        SKIPN   RC,ASGBLK\r
+       SKIPE   CS,LOCBLK       ;\r
+       SKIPL   STPX            ;ANY BINARY?\r
+       JRST    OUTL23          ;YES, JUMP\r
+       JUMPE   RC,OUTL22       ;SEQUENCE BREAK AND NO BINARY JUMPS\r
+       ILDB    C,TABP          ;ASSIGNMENT FALLS THROUGH\r
+       PUSHJ   PP,OUTL         ;OUTPUT A TAB.\r
+       ILDB    C,TABP          ;OUTPUT 2ND TAB, LOCATION FIELD\r
+       PUSHJ   PP,OUTC         ;NEXT IS BINARY LISTING FIELD\r
+       HLLO    CS,LOCBLK       ;LEFT HALF OF A 36BIT VALUE\r
+       JUMPL   RC,.+2          ;SKIP IF LEFT HALF IS NOT RELOC\r
+       TRZA    CS,1            ;IT IS, SET THE FLAG\r
+       TLNE    CS,-1           ;SKIP IF ITS A 18BIT VALUE, OTHERWISE\r
+       PUSHJ PP,ONC1           ;PRINT LH OF A 36 BIT VALUE IN CS\r
+       HRLO    CS,LOCBLK       ;PICK UP THE RIGHT HALF (18BIT VALUE)\r
+       TRZ     CS,0(RC)        ;\r
+       PUSHJ   PP,ONC          ;PRINT IT\r
+       JRST    OUTL23          ;SKIP SINGLE QUOTE TEST\r
+\fOUTL22:       PUSHJ   PP,ONC          ;TAB TO RH AND PRINT IT\r
+       MOVEI   C,"'"\r
+       SKIPE   MODA\r
+       PUSHJ   PP,OUTC\r
+OUTL23:        SKIPL   STPX            ;ANY BINARY?\r
+       PUSHJ   PP,BOUT         ;YES, DUMP IT\r
+       MOVE    CS,@OUTLI2      ;[POINT 7,LBUF]\r
+OUTL24:        ILDB    C,CS\r
+       JUMPE   C,OUTL25\r
+       CAIG    C," "\r
+       JRST    OUTL24\r
+       MOVE    CS,TABP\r
+       PUSHJ   PP,OUTASC       ;OUTPUT TABS\r
+OUTL25:        MOVEI   CS,LBUF\r
+       PUSHJ   PP,OUTAS0       ;DUMP THE LINE\r
+       TLNE    IO,IOSALL       ;SUPPRESSING ALL\r
+       JUMPN   MRP,OUTL27      ;YES,EXTRA CR IF IN MACRO\r
+OUTL26:        SKIPGE  STPX            ;ANY BINARY?\r
+       JRST    OUTLI           ;NO, CLEAN UP AND EXIT\r
+       PUSHJ   PP,OUTLI2       ;YES, INITIALIZE FOR NEXT LINE\r
+       PUSHJ   PP,BOUT         ;YES, DUMP IT\r
+OUTL27:        PUSHJ   PP,OUTCR        ;OUTPUT CARRIAGE RETURN\r
+       JRST    OUTL26          ;TEST FOR MORE BINARY\r
+\r
+OUTPL: SKIPN   LITLVL          ;IF IN LITERAL\r
+       SKIPL   STPX            ;OR CODE GENERATED\r
+       JRST    OUTIM           ;JUST OUTPUT THE IMAGE\r
+       SKIPN   ASGBLK          ;SKIP IF AN ASSIGNMENT\r
+       JRST    OUTIM           ;OTHERWISE OUTPUT IMAGE\r
+       PUSH    PP,C            ;SAVE CHAR.\r
+       MOVEI   C,CR\r
+       IDPB    C,LBUFP\r
+       MOVEI   C,LF\r
+       IDPB    C,LBUFP         ;FINISH WITH CRLF\r
+       PUSHJ   PP,OUTLIN       ;OUTPUT PARTIAL LINE\r
+       POP     PP,C            ;RESTORE CHAR.\r
+       JRST    OUTLI2          ;INITIALISE REST OF LINE\r
+\fOUTL30:       AOS     CS,STPX         ;PASS ONE\r
+       ADDM    CS,LOCO         ;INCREMENT OUTPUT LOCATION\r
+       PUSHJ   PP,STOWI        ;INITIALIZE STOW\r
+       TLZ     AC0,ERRORS-ERRM-ERRP-ERRV\r
+       JUMPN   AC0,OUTL32      ;JUMP IF ERRORS\r
+       TLNE    IO,IOSALL       ;SUPPRESSING ALL/\r
+       JUMPN   MRP,CPOPJ       ;YES,EXIT\r
+       JRST    OUTLI1          ;NO,INIT LINE\r
+\r
+OUTL32:        IDPB    AC0,LBUFP       ;ZERO TERNIMATOR\r
+       IOR     ER,OUTSW        ;LIST ERRORS\r
+       MOVEI   CS,TAG\r
+       PUSHJ   PP,OUTSIX       ;OUTPUT TAG\r
+       HRRZ    C,TAGINC\r
+       PUSHJ   PP,DNC          ;CONVERT INCREMENT TO DECIMAL\r
+       PUSHJ   PP,OUTTAB       ;OUTPUT TAB\r
+       PUSHJ   PP,OUTLER       ;OUTPUT ERROR FLAGS\r
+       PUSHJ   PP,OUTTAB\r
+       MOVEI   CS,SEQNO        ;ADDRESS OF SEQUENCE NO.\r
+       SKIPE   SEQNO           ;FILE NOT SEQUENCED\r
+       PUSHJ   PP,OUTAS0       ;OUTPUT IT\r
+       JRST    OUTL25          ;OUTPUT BASIC LINE\r
+\r
+OUTLER:        PUSH PP,ER      ;SAVE LISTING SWITCHES FOR LATER\r
+       TRNE ER,TTYSW   ;IF THIS IS ON, LISTING IS ON TTY\r
+       TRZ ER,ERRORS   ;SO SUPPRESS ON TTY\r
+       TDZ ER,OUTSW    ;BUT THIS SHOULD ONLY GO TO THE TTY\r
+       MOVE CS,INDIR   ;GET FILE NAME\r
+       CAME CS,LSTFIL  ;AND SEE IF SAME\r
+       JRST    [MOVEM CS,LSTFIL        ;SAVE AS LAST ONE\r
+               MOVEI CS,LSTFIL\r
+               PUSHJ PP,OUTSIX ;LIST NAME\r
+               MOVEI C," "\r
+               PUSHJ PP,OUTL\r
+               MOVE CS,PAGENO  ;PRINT PAGE NUMBER TOO\r
+               JRST OUTLE8]\r
+       MOVE CS,PAGENO  ;NOW CHECK PAGE NUMBER\r
+       CAME CS,LSTPGN\r
+OUTLE8:        JRST    [MOVEM CS,LSTPGN\r
+               MOVEI CS,[ASCIZ /PAGE /]\r
+               PUSHJ PP,OUTAS0\r
+               MOVE C,PAGENO\r
+               PUSHJ PP,DNC\r
+               PUSHJ PP,OUTCR  ;AND NOW FOR THE ERROR LINE\r
+               JRST .+1]\r
+       HLLM ER,(PP)    ;RESTORE ER BUT NOT IO (LEFT HALF OF AC)\r
+       POP PP,ER\r
+       MOVE    CS,[POINT 7,[ASCII / QXADLRUVNOPEM/]]\r
+OUTLE2:        ILDB    C,CS            ;GET ERROR MNEMONIC\r
+       JUMPGE  AC0,OUTLE4      ;BRANCH IF NOT FLAGGED\r
+       PUSHJ   PP,OUTL         ;OUTPUT THE CHARACTER\r
+       AOS     ERRCNT          ;INCREMENT ERROR COUNT\r
+OUTLE4:        LSH     AC0,1           ;SHIFT NEXT FLAG INTO SIGN BIT\r
+\f      JUMPN   AC0,OUTLE2      ;TEST FOR END\r
+       POPJ    PP,             ;EXIT\r
+\fOUTIM1:       TLOA    FR,IOSCR        ;SUPPRESS CRLF AFTER LINE\r
+OUTIM: TLZ     FR,IOSCR        ;DON'T FOR PARTIAL LINE\r
+       TLNE    IO,IOSALL       ;SUPPRESSING ALL?\r
+       JUMPN   MRP,CPOPJ       ;YES ,EXIT IF IN MACRO\r
+       JUMP1   OUTLI1          ;BYPASS IF PASS ONE\r
+       PUSH    PP,ER\r
+       TDZ     ER,TYPERR\r
+       TLNN    IO,IOMSTR!IOPROG!IOMAC\r
+       IOR     ER,OUTSW\r
+       PUSH    PP,C            ;OUTPUT IMAGE\r
+       TLNN    FR,CREFSW\r
+       PUSHJ   PP,CLSCRF\r
+OUTIM2:        MOVE    CS,TABP\r
+       PUSHJ   PP,OUTASC       ;OUTPUT TABS\r
+       IDPB    C,LBUFP         ;STORE ZERO TERMINATOR\r
+       MOVEI   CS,LBUF\r
+       PUSHJ   PP,OUTAS0       ;OUTPUT THE IMAGE\r
+       TLZN    FR,IOSCR        ;CRLF SUPPRESS?\r
+       PUSHJ   PP,OUTCR        ;NO,OUTPUT\r
+       POP     PP,C\r
+       HLLM    ER,0(PP)\r
+       POP     PP,ER\r
+       JRST    OUTLI2\r
+\r
+OUTLI: TLNE    IO,IOSALL       ;SUPPRESSING ALL\r
+       JUMPN   MRP,OUTLI3      ;YES,SET FLAG IN REPEATS ALSO\r
+       TLNE    IO,IOPALL       ;MACRO EXPANSION SUPRESS REQUESTED?\r
+       SKIPN   MACLVL          ;YES, ARE WE IN MACRO?\r
+       TLZA    IO,IOMAC        ;NO, CLEAR MAC FLAG\r
+OUTLI3:        TLO     IO,IOMAC        ;YES, SET FLAG\r
+\r
+OUTLI1:        TRZ     ER,ERRORS!LPTSW!TTYSW\r
+OUTLI2:        MOVE    CS,[POINT 7,LBUF]       ;INITIALIZE BUFFERS\r
+       MOVEM   CS,LBUFP\r
+IFN FORMSW,<MOVE CS,[POINT 7,TABI]\r
+       MOVSS   HWFMT           ;PUT FLAG IN LEFT HALF\r
+       SKIPGE  HWFMT           ;BUT IF ONLY HALF-WORD FORMAT>\r
+       MOVE    CS,[POINT 7,TABI,6]\r
+       MOVEM   CS,TABP\r
+       MOVEI   CS,.CPL\r
+IFN FORMSW,<SKIPL HWFMT                ;IF MULTI-FORMAT\r
+       SUBI    CS,8            ;LINE IS ONE TAB SHORTER\r
+       MOVSS   HWFMT           ;BACK AS IT WAS>\r
+       MOVEM   CS,CPL\r
+       MOVSI   CS,(ASCII /     /)\r
+       SKIPE   SEQNO           ;HAVE WE SEQUENCE NUMBERS?\r
+       MOVEM   CS,SEQNO        ;YES, STORE TAB IN CASE OF MACRO\r
+       MOVEM   CS,SEQNO+1      ;STORE TAB AND TERMINATOR\r
+       SETZM   ASGBLK\r
+       SETZM   LOCBLK\r
+       POPJ    PP,\r
+\fOUTIML:       TLNE    IO,IOSALL       ;SUPPRESSING ALL?\r
+       JUMPN   MRP,CPOPJ       ;YES,EXIT IF IN MACRO\r
+       TRNN ER,ERRORS-ERRQ     ;FOR LITERALS (MULIT-LINE) OUTPUT ERRORS\r
+       TLNE FR,ERRQSW\r
+       TRZ ER,ERRQ\r
+       HRLZ CS,ER\r
+       JUMP1 OUTML1    ;CHECK PASS1 ERRORS\r
+       TDZ ER,TYPERR\r
+       JUMPE CS,OUTIM1\r
+       PUSH PP,[0]     ;ERRORS SHOULD BE ZEROED\r
+       PUSH PP,C\r
+       PUSH    PP,AC0  ;SAVE AC0 IN CASE CALLED FROM ASCII\r
+       MOVE    AC0,CS  ;ERROR ROUTINE WANTS FLAGS IN AC0\r
+       IOR ER,OUTSW\r
+       TLNN FR,CREFSW\r
+       PUSHJ PP,CLSCRF ;FIX CREF\r
+       TLZE AC0,ERRM\r
+       TLO AC0,ERRP\r
+       PUSHJ PP,OUTLER ;OUTPUT THEM\r
+       POP     PP,AC0\r
+       JRST OUTIM2     ;AND LINE\r
+       \r
+OUTML1:        TLZ CS,ERRORS-ERRM-ERRP-ERRV\r
+       JUMPE CS,OUTLI2 ;NONE\r
+       TRZ ER,ERRM!ERRP!ERRV\r
+       TRO ER,ERRL\r
+       PUSH PP,ER      ;SAVE\r
+       PUSH PP,C       ;SAVE THIS\r
+       PUSH    PP,AC0  ;AS ABOVE\r
+       MOVE    AC0,CS          ;...\r
+       TDZ ER,TYPERR\r
+       IOR ER,OUTSW\r
+       MOVEI CS,TAG\r
+       PUSHJ PP,OUTSIX\r
+       HRRZ C,TAGINC\r
+       PUSHJ PP,DNC\r
+       PUSHJ PP,OUTTAB\r
+       PUSHJ PP,OUTLER ;DO NOT FORGET ERRORS\r
+       PUSHJ PP,OUTTAB\r
+       MOVEI CS,LBUF   ;PRINT REST OF LINE\r
+       PUSHJ PP,SOUT20\r
+       POP     PP,AC0\r
+       POP PP,C\r
+       POP PP,ER\r
+       JRST OUTLI2\r
+\fSUBTTL        OUTPUT ROUTINES\r
+UOUT:  PUSHJ   PP,LOOKUP       ;SET FOR TABLE SCAN\r
+       TRNN ARG,PNTF   ;WFW\r
+       TRNN    ARG,UNDF\r
+       JRST    UOUT13          ;TEST FOR UNDF!EXTF!PNTF ON PASS2\r
+       JUMP2   UOUT10\r
+       TLNN    IO,IOIOPF       ;ANY IOP'S SEEN\r
+       JRST    UOUT12          ;NO,MAKE EXTERNAL\r
+       MOVSI   CS,PRMTBL-PRMEND;YES LOOKUP IN TABLE\r
+UOUT1: CAME    AC0,PRMTBL(CS)  ;HAVE WE A MATCH?\r
+       AOBJN   CS,UOUT2        ;NO,INCREMENT AND JUMP\r
+       MOVE    ARG,PRMTBL+1(CS);YES,GET VALUE\r
+       MOVEM   ARG,(SX)        ;UPDATE SYMBOL TABLE\r
+       POPJ    PP,             ;EXIT\r
+UOUT2: AOBJN   CS,UOUT1        ;TEST FOR END\r
+\r
+UOUT12:        PUSHJ   PP,EXTER2       ;MAKE IT EXTERNAL\r
+       MOVSI   ARG,UNDF        ;BUT PUT UNDF BACK ON\r
+       IORM    ARG,(SX)        ;SO MESSAGE WILL COME OUT\r
+       POPJ    PP,             ;GET NEXT SYMBOL\r
+\r
+UOUT13:        JUMP1   CPOPJ   ;RECYCLE ON PASS1\r
+       TRC ARG,UNDF!EXTF!PNTF  ;CHECK FOR ALL THREE ON\r
+       TRCE ARG,UNDF!EXTF!PNTF ;ARE THEY?\r
+       POPJ    PP,             ;NO, RECYCLE\r
+UOUT10:        PUSHJ PP,OUTCR\r
+       PUSHJ   PP,OUTSYM       ;OUTPUT THE SYMBOL\r
+       MOVEI   CS,[SIXBIT /UNASSIGNED, DEFINED AS IF EXTERNAL @/]\r
+       JRST    OUTSIX          ;POPJ FOR NEXT SYMBOL\r
+\r
+UOUT30:        PUSHJ   PP,ONC1         ;OUTPUT THE LOCATION\r
+       JRST    HIGHQ           ;EXIT THROUGH HIGHQ\r
+\f                              ;OUTPUT THE ENTRIES\r
+\r
+EOUT:  MOVEI   C,0             ;INITIALIZE THE COUNT\r
+       MOVE    SX,SYMBOL\r
+       MOVE    SDEL,0(SX)\r
+EOUT1: SOJL    SDEL,EOUT2      ;TEST FOR END\r
+       ADDI    SX,2\r
+       HLRZ    ARG,0(SX)\r
+       ANDCAI  ARG,SYMF!INTF!ENTF\r
+       JUMPN   ARG,EOUT1       ;IF INVALID, DON'T COUNT\r
+       AOJA    C,EOUT1         ;BUMP COUNT\r
+\r
+EOUT2: HRLI    C,4             ;BLOCK TYPE 4\r
+       PUSHJ   PP,OUTBIN\r
+       SETZB   C,ARG\r
+       PUSHJ   PP,OUTBIN\r
+       MOVE    SX,SYMBOL\r
+       MOVE    SDEL,0(SX)\r
+       MOVEI   V,?D18\r
+\r
+EOUT3: SOJL    SDEL,POPOUT\r
+       ADDI    SX,2\r
+       HLRZ    C,0(SX)\r
+       ANDCAI  C,SYMF!INTF!ENTF\r
+       JUMPN   C,EOUT3\r
+       SOJGE   V,EOUT4         ;TEST END OF BLOCK\r
+       PUSHJ   PP,OUTBIN\r
+       MOVEI   V,?D17  ;WFW\r
+EOUT4: MOVE    AC0,-1(SX)\r
+       PUSHJ   PP,SQOZE\r
+       MOVE    C,AC0\r
+       PUSHJ   PP,OUTBIN\r
+       JRST    EOUT3\r
+\f                              ;OUTPUT THE SYMBOLS\r
+\r
+SOUT:  SKIPN   IONSYM          ;SKIP IF NOSYM SEEN\r
+       TRNN    ER,LPTSW!TTYSW  ;A LISTING REQUIRED?\r
+       JRST    SOUT1           ;NO\r
+       MOVEI   [ASCIZ /SYMBOL TABLE/]\r
+       HRRM    SUBTTX          ;SET NEW SUB-TITLE\r
+       PUSHJ   PP,OUTFF        ;FORCE NEW PAGE\r
+       MOVEI   ARG,NCOLS       ;SET UP FOR NCOLS ACROSS SYMBOL TABLE\r
+       TRNE    ER,TTYSW        ;IS TTY LISTING DEVICE?\r
+       MOVEI   ARG,2           ;YES,ONLY 2 COLLUMNS\r
+       MOVEM   ARG,NCOLLS      ;STORE ANSWER\r
+       MOVEM ARG,SYMCNT\r
+       PUSHJ PP,LOUT1          ;OUTPUT THEM\r
+       MOVE ARG,SYMCNT         ;SEE IF WE ENDED EVEN\r
+       CAME ARG,NCOLLS\r
+       PUSHJ   PP,OUTCR        ;NO, NEED CR\r
+       JRST    SOUT1           ;NOW FOR BLOCK TYPE 2\r
+\r
+LOUT1: PUSHJ   PP,LLUKUP       ;SET FOR TABLE SCAN\r
+       TRNN    ARG,SYMF\r
+       TRNN    ARG,MACF!SYNF\r
+       TDZA    MRP,MRP         ;SKIP AND CLEAR MRP\r
+       POPJ    PP,             ;NO, TRY AGAIN\r
+       TRNE    ARG,INTF\r
+       MOVEI   MRP,1\r
+       TRNE    ARG,EXTF\r
+       MOVNI   MRP,1           ;MRP=-1 FOR EXTERNAL\r
+       TRNE    ARG,SYNF        ;SYNONYM?\r
+       JUMPL   MRP,POPOUT      ;YES, DON'T OUTPUT IF EXTERNAL\r
+       TRNE ARG,SUPRBT         ;IF SUPRESSED\r
+;      JUMPGE MRP,POPOUT       ;DO NOT OUTPUT UNLESS EXTERNAL\r
+       POPJ    PP,             ;DO NOT OUTPUT\r
+       AOS     (PP)            ;SET FOR SKIP RETURN IF SYMBOL IS PRINTED\r
+       JUMPGE  MRP,LOUT10      ;BRANCH IF NOT EXTERNAL\r
+       HLRZ    RC,V            ;PUT POINTER/FLAGS IN RC\r
+       TRNE    RC,-2           ;POINTER?\r
+       MOVS    RC,0(RC)        ;YES\r
+       HLL     V,RC            ;STORE LEFT VALUE\r
+\r
+LOUT10:        PUSH PP,RC      ;SAVE FOR LATER\r
+       PUSHJ   PP,OUTSYM       ;OUTPUT THE NAME\r
+       MOVE RC,(PP)    ;GET COPY\r
+       MOVEI   AC1,0\r
+       JUMPLE  MRP,LOUT15      ;SET DEFFERRED BITS IF EXTERNAL\r
+       TLNE    RC,-2           ;CHECK FOR LEFT FIXUP\r
+       IORI    AC1,40          ;AND SET BITS\r
+       TRNE    RC,-2           ;CHECK FOR RIGHT FIXUP\r
+       IORI    AC1,20          ;AND SET BITS\r
+LOUT15:        TLNE RC,-2      ;FIX RELOC AS 0 IF EXTERNAL\r
+       HRRZS RC\r
+       TRNE RC,-2\r
+       HLLZS RC\r
+       TLZE RC,-1\r
+       TRO RC,2\r
+       HRL MRP,RC\r
+       MOVEI RC,0\r
+       TRNE    ARG,ENTF        ;ENTRY DMN\r
+       HRRI    MRP,-5\r
+       TRNE ARG,NOOUTF         ;SUPRESS OUTPUT? WFW\r
+       ADDI MRP,3              ;YES WFW\r
+       TRNE    ARG,UNDF        ;UNDEFINED IS EXTERNAL\r
+       HRRI    MRP,2           ;SO FLAG AS UXT\r
+       IOR     AC1,SOUTC(MRP)\r
+       MOVE ARG,AC1\r
+       MOVEM AC0,SVSYM         ;SAVE IT\r
+       MOVE    AC0,V           ;GET THE VALUE\r
+       HLRZ    RC,MRP          ;AND THE RELOCATION\r
+       HLLO    CS,V\r
+       TRNE    RC,2            ;LEFT HALF RELOCATABLE?\r
+       TRZA    CS,1            ;NO, FLAG AND PRINT\r
+       TLNE    CS,-1           ;IS THE LEFT HALF ZERO?\r
+       PUSHJ   PP,ONC1         ;NO, OUTPUT IT\r
+LOUT11:        PUSHJ   PP,OUTTAB\r
+LOUT30:        HRLO    CS,V\r
+       TDZ     CS,RC           ;SET RELOCATION\r
+       PUSHJ   PP,ONC1\r
+       PUSHJ   PP,OUTTAB\r
+       POP PP,RC               ;GET BACK RELOC AND CHECK EXTERNAL\r
+LOUT60:        MOVEI   CS,SOUTC(MRP)\r
+       PUSHJ   PP,OUTAS0       ;EXT/INT\r
+       SOSLE SYMCNT    ;SEE IF WE HAVE RUN OUT\r
+       JRST    OUTTAB          ;NOT YET, PRINT ONE TAB\r
+LOUT64:        MOVE CS,NCOLLS          ;YES, RESET\r
+\f      MOVEM CS,SYMCNT\r
+       JRST    OUTCR           ;CARRIAGE RETURN AND TRY FOR ANOTHER\r
+\r
+\r
+\f      SYN IFBLK,SYMBLK        ;SOMEWHERE TO STORE THE POINTERS\r
+\r
+LLUKUP:        POP     PP,LOOKX        ;INTERCEPT RETURN POP\r
+       MOVE    SX,SYMBOL\r
+       MOVE    SDEL,(SX)\r
+       ADDI    SX,2            ;SKIP COUNT OF SYMBOLS\r
+LLUKP2:        HRLI    SX,-<.LPP-1>    ;LENGTH OF PAGE\r
+       MOVE    V,ARG           ;COPY OF ARG\r
+       MOVEM   SX,SYMBLK(V)    ;STORE SYMBOL POINTER IN TABLE\r
+       ADDI    SX,2*<.LPP-2>   ;SYMBOLS PER PAGE\r
+       SOJG    V,.-2           ;FOR ALL COLUMNS\r
+       MOVE    V,SYMCNT\r
+       HRRZ    SX,SYMBLK(V)\r
+       CAMGE   SX,SYMTOP\r
+       SOJG    V,.-2\r
+       ADDI    V,1\r
+       MOVEM   V,SYMBLK\r
+       JRST    LLUKP7          ;ENTER LOOP\r
+\r
+LLUKP1:        MOVEM   SX,SYMBLK(ARG)  ;SAVE IT \r
+       MOVE    AC0,-1(SX)\r
+       PUSHJ   PP,SRCH7\r
+       HLRZS   ARG\r
+       PUSHJ   PP,@LOOKX\r
+       JRST    [MOVE   ARG,SYMCNT\r
+               MOVEM SX,SYMBLK(ARG)\r
+               JRST    .+1]\r
+LLUKP7:        SOJL    SDEL,POPOUT     ;TEST FOR END\r
+LLUKP3:        MOVE    ARG,SYMCNT      ;GET PAGE POSITION\r
+       MOVE    SX,SYMBLK(ARG)  ;GET NEXT POINTER\r
+       AOBJP   SX,LLUKP4\r
+       HRRZ    V,SX\r
+       CAMG    V,SYMTOP\r
+       AOJA    SX,LLUKP1\r
+LLUKP6:        PUSHJ   PP,LOUT64       ;RESET SYMCNT\r
+       JUMPE   SDEL,POPOUT     ;EXIT IF ALL DONE\r
+       JRST    LLUKP3\r
+\r
+LLUKP4:        AOJ     SX,\r
+       MOVEM   SX,SYMBLK(ARG)\r
+       MOVE    V,NCOLLS\r
+       SKIPGE  SYMBLK(V)       ;TEST IF ALL FINISHED\r
+       JRST    LLUKP5          ;NO\r
+       SOJG    V,.-2           ;KEEP GOING\r
+       MOVE    SX,SYMBLK\r
+       MOVE    SX,SYMBLK(SX)\r
+       HLRZ    V,SX            ;GET NUMBER ADVANCED\r
+       LSH     V,1             ;2 WORDS PER SYMBOL\r
+       SUBI    SX,2(V)         ;BACK UP ONE SYMBOL\r
+       SKIPGE  LPP             ;IF PAGE FULL\r
+       JRST    .+3             ;DON'T FINISH WITH EXTRA CR-LF\r
+       SETZM   LPP             ;ENSURE END OF PAGE\r
+       PUSHJ   PP,LOUT64\r
+       MOVE    ARG,NCOLLS\r
+       MOVEM   ARG,SYMCNT      ;JUST IN CASE\r
+       JRST    LLUKP2\r
+\r
+LLUKP5:        SOSG    SYMCNT  ;ON LAST COL?\r
+       JRST    LLUKP6\r
+       SKIPGE  LPP             ;IF PAGE FULL\r
+       JRST    LLUKP3          ;NO MORE OUTPUT \r
+REPEAT 2,<PUSHJ PP,OUTAB2>     ;NO, TAB OUT TO NEXT COLUMN\r
+       JRST    LLUKP3\r
+\fSOUT1:        PUSHJ   PP,LOOKUP       ;SET FOR TABLE SCAN\r
+       TRNN    ARG,SYMF\r
+       TRNN    ARG,MACF!SYNF\r
+       TDZA    MRP,MRP         ;SKIP AND CLEAR MRP\r
+       POPJ    PP,             ;NO, TRY AGAIN\r
+       TRNE    ARG,INTF\r
+       MOVEI   MRP,1\r
+       TRNE    ARG,EXTF\r
+       MOVNI   MRP,1           ;MRP=-1 FOR EXTERNAL\r
+       TRNE    ARG,SYNF        ;SYNONYM?\r
+       JUMPL   MRP,POPOUT      ;YES, DON'T OUTPUT IF EXTERNAL\r
+       TRNE ARG,SUPRBT         ;IF SUPRESSED\r
+;      JUMPGE MRP,POPOUT       ;DO NOT OUTPUT UNLESS EXTERNAL\r
+       POPJ    PP,             ;DO NOT OUTPUT\r
+       JUMPGE  MRP,SOUT10      ;BRANCH IF NOT EXTERNAL\r
+       HLRZ    RC,V            ;PUT POINTER/FLAGS IN RC\r
+       TRNE    RC,-2           ;POINTER?\r
+       MOVS    RC,0(RC)        ;YES\r
+       HLL     V,RC            ;STORE LEFT VALUE\r
+\r
+SOUT10:        PUSH PP,RC      ;SAVE FOR LATER\r
+       MOVEI   AC1,0\r
+       JUMPLE  MRP,SOUT15      ;SET DEFFERRED BITS IF EXTERNAL\r
+       TLNE    RC,-2           ;CHECK FOR LEFT FIXUP\r
+       IORI    AC1,40          ;AND SET BITS\r
+       TRNE    RC,-2           ;CHECK FOR RIGHT FIXUP\r
+       IORI    AC1,20          ;AND SET BITS\r
+SOUT15:        TLNE RC,-2      ;FIX RELOC AS 0 IF EXTERNAL\r
+       HRRZS RC\r
+       TRNE RC,-2\r
+       HLLZS RC\r
+       TLZE RC,-1\r
+       TRO RC,2\r
+       HRL MRP,RC\r
+       MOVEI RC,0\r
+       TRNE    ARG,ENTF        ;ENTRY DMN\r
+       HRRI    MRP,-5\r
+       TRNE ARG,NOOUTF         ;SUPRESS OUTPUT? WFW\r
+       ADDI MRP,3              ;YES WFW\r
+       IOR     AC1,SOUTC(MRP)\r
+       MOVE ARG,AC1\r
+       PUSHJ   PP,NOUT2        ;SQUOZE AND DUMP THE SYMBOL\r
+       MOVEM AC0,SVSYM         ;SAVE IT\r
+       MOVE    AC0,V           ;GET THE VALUE\r
+       HLRZ    RC,MRP          ;AND THE RELOCATION\r
+       PUSHJ   PP,COUT\r
+       POP PP,RC               ;GET BACK RELOC AND CHECK EXTERNAL\r
+       TRNN RC,-2              ;IS IT?\r
+       JRST SOUT50             ;NO\r
+       MOVE AC0,1(RC)          ;GET NAME\r
+       MOVEI ARG,60            ;EXTERNAL REQ\r
+       PUSHJ PP,SQOZE\r
+       HLLZS RC        ;NO RELOC\r
+       PUSHJ PP,COUT   ;OUTPUT IT\r
+       MOVE AC0,SVSYM  ;GET SYMBOL NAME\r
+       TLO AC0,500000  ;SET AS ADDITIVE SYMBOL\r
+       TLZ AC0,200000  ;BUT NOT LEFT HALF ETC\r
+       PUSHJ PP,COUT\r
+SOUT50:        MOVSS RC        ;CHECK LEFT HALF\r
+       TRNN RC,-2\r
+       JRST SOUT60\r
+       MOVE AC0,1(RC)\r
+       MOVEI ARG,60\r
+       PUSHJ PP,SQOZE\r
+       MOVEI RC,0\r
+       PUSHJ PP,COUT\r
+       MOVE AC0,SVSYM\r
+       TLO AC0,700000\r
+       PUSHJ PP,COUT\r
+SOUT60:        POPJ    PP,\r
+\r
+SOUT20:        PUSHJ PP,OUTAS0\r
+       JRST OUTCR\r
+\r
+       <ASCII /ENT/>!04        ;DMN\r
+       Z\r
+       Z\r
+       <ASCII /SEN/>!44        ;SUPRESSED ENTRY\r
+       <ASCII /EXT/>!60\r
+SOUTC: EXP     10\r
+       <ASCII /INT/>!04\r
+       <ASCII /UXT/>!60        ;UNDEFINED EXTERNAL\r
+       <ASCII /SPD/>!50\r
+       <ASCII /SIN/>!44        ;DMN\r
+\f                              ;OUTPUT THE BINARY\r
+\r
+BOUT:  HRLO    CS,LOCO         ;PICKUP THE LOCATION\r
+       PUSHJ   PP,ONC          ;OUTPUT IT TO THE LISTING FILE\r
+       MOVEI   C,"'"\r
+       SKIPE   MODO            ;IF MODE IS NOT ABSOLUTE\r
+       PUSHJ   PP,OUTC         ;PRINT A SINGLE QUOTE\r
+       PUSHJ   PP,DSTOW        ;GET THE CODE\r
+       PUSH PP,RC      ;SAVE RELOC\r
+       PUSH    PP,RC   ;AND AGAIN\r
+       TLNE RC,-2      ;CHECK LEFT EXTERNAL\r
+       HRRZS RC        ;MAKE LEFT NON-RELOC\r
+       TRNN RC,-2      ;RIGHT EXT?\r
+       JRST BOUT30     ;NO\r
+       HRRZ AC1,AC0    ;YES\r
+       JUMPE AC1,BOUT20        ;PROCESS IF ZERO CODE THERE\r
+       HLLZS RC        ;MAKE NON-RELOC\r
+       JRST BOUT30     ;PROCESS\r
+\r
+\fBOUT20:\r
+       HRRM AC1,-1(PP) ;FIX RC IN STACK SO NO CONFUSION WFW (AC1 HAS 0)\r
+       HRR     AC0,0(RC)       ;NO, SET ADDRESS LINK\r
+       MOVE    AC1,LOCO        ;GET CURRENT LOCATION\r
+       HRRM    AC1,0(RC)       ;SET NEW LINK\r
+       HLRZ    AC1,0(RC)       ;GET FLAGS/POINTER\r
+       TRNN    AC1,-2          ;POINTER?\r
+       HRR     AC1,RC          ;NO, SET TO FLAGS\r
+       HLR     RC,0(AC1)       ;PUT FLAGS IN RC\r
+       HRL     AC1,MODO        ;GET CURRENT MODE\r
+       TRZE    RC,-2           ;LEFT HALF RELOCATABLE+\r
+       TLO     AC1,2           ;YES, SET FLAG\r
+       HLLM    AC1,0(AC1)      ;STORE NEW FLAGS\r
+BOUT30:        HLLO    CS,AC0\r
+       TLZE    RC,1            ;PACK RELOCATION BITS\r
+       TRO     RC,2\r
+       TRNE    RC,2            ;LEFT HALF RELOCATABLE?\r
+       TRZ     CS,1            ;YES, RESET BIT\r
+       PUSH    PP,AC0          ;NEED AN AC\r
+       HLRZ    AC0,-1(PP)      ;AC0 = LEFT RELOCATION\r
+       CAILE   AC0,1           ;EXTERNAL?\r
+       XORI    CS,EXTF!1       ;YES, SET SWITCH\r
+\fIFN FORMSW,<\r
+       OR      AC0,HWFMT\r
+       JUMPN   AC0,BOUT3H      ;EDIT IN HALF WORD FORMAT IF NOT 0\r
+       MOVE    AC0,FORM        ;GET FORM WORD\r
+       MOVEI   C,0             ;ZERO FIELD SIZE\r
+BOUT3A:        JFFO    AC0,BOUT3B      ;AC1 = FIELD SIZE -1\r
+       JRST    BOUT3C          ;NO FIELDS LEFT, JUMP\r
+BOUT3B:        LSH     AC0,1(AC1)      ;SHIFT OFF FORM FIELD\r
+       MOVEI   AC1,6(AC1)\r
+       IDIVI   AC1,3           ;AC1 = COLUMNS USED + 1\r
+       ADDI    C,(AC1)         ;INCREMENT FIELD SIZE\r
+       CAIG    C,?D23          ;IS FIELD SIZE GTR 23?\r
+       JRST    BOUT3A          ;NO.  CONTINUE\r
+       MOVE    AC1,HWFORM      ;USE STANDARD FORM\r
+       MOVEM   AC1,FORM\r
+       MOVEI   C,?D13          ;SET FIELD SIZE TO 13\r
+BOUT3C:        MOVEM   C,FLDSIZ        ;STORE FIELD SIZE\r
+       MOVE    AC0,FORM        ;AC0 = FORM WORD\r
+       TRNN    RC,2            ;IS LEFT HALF RELOCATED?\r
+       CAMN    AC0,HWFORM      ;NO.  IS FORM HALF WORD?\r
+       JRST    BOUT3H          ;YES.  EDIT IN OLD WAY\r
+       CAMN    AC0,IOFORM      ;IS IT I/O WORD\r
+       SETOM   IOSEEN          ;YES,NEED MORE WORK\r
+       IBP     TABP\r
+       CAIL    C,?D16\r
+       IBP     TABP\r
+       ILDB    C,TABP          ;GET A TAB\r
+       PUSHJ   PP,OUTL         ;OUTPUT IT\r
+       MOVE    AC2,(PP)        ;AC2 = INFO TO BE EDITED\r
+       PUSH    PP,CS           ;SAVE CS = C+1\r
+BOUT3D:        JFFO    AC0,BOUT3E      ;AC1 = FIELD LENGTH - 1\r
+BOUT3E:        LSH     AC0,1(AC1)      ;SHIFT OFF FORM FIELD\r
+       MOVEI   C,3(AC1)\r
+       MOVEI   AC1,0\r
+       LSHC    AC1,-2(C)       ;AC1 = FIELD INFO\r
+       IDIVI   C,3             ;C = # OF OCTAL DIGITS\r
+       MOVE    C+1,AC0         ;SAVE AC0\r
+       SKIPE   IOSEEN          ;IS THIS A I/O INST.\r
+       PUSHJ   PP,BOUT3J       ;YES,SET FIELDS CORRECTLY\r
+       MOVNS   C\r
+       ROT     AC1,(C)\r
+       ROT     AC1,(C)\r
+       ROT     AC1,(C)\r
+       MOVNS   C\r
+\fBOUT3F:       MOVEI   AC0,6           ;EDIT A DIGIT\r
+       LSHC    AC0,3\r
+       EXCH    AC0,C\r
+       PUSHJ   PP,OUTC         ;OUTPUT IT\r
+       MOVE    C,AC0\r
+       SOJG    C,BOUT3F        ;IF MORE DIGITS,  GO BACK\r
+       JUMPE   C+1,BOUT3G      ;JUMP IF END OF WORD\r
+       MOVE    AC0,C+1         ;RESTORE AC0\r
+       MOVEI   C," "\r
+       PUSHJ   PP,OUTC         ;OUTPUT A SPACE\r
+       JRST    BOUT3D          ;PROCESS NEXT FIELD\r
+\r
+BOUT3G:        POP     PP,CS           ;RESTORE CS = C+1\r
+       MOVEI   C,0\r
+       TRNE    RC,1            ;RELOCATABLE?\r
+       MOVEI   C,"'"           ;YES\r
+       HRRZ    AC0,-1(PP)      ;AC0 = RIGHT RELOCATION\r
+       CAILE   AC0,1           ;EXTERNAL?\r
+       MOVEI   C,"*"           ;YES\r
+       PUSHJ   PP,ONC2         ;STORE POSSIBLE INDICATOR\r
+       POP     PP,AC0\r
+       JRST    BOUT3I          ;CONTINUE\r
+\r
+BOUT3H:        MOVEI   C,?D15          ;SET SIZE TO 15\r
+       MOVEM   C,FLDSIZ\r
+>\r
+       POP     PP,AC0          ;RESTORE\r
+       PUSHJ   PP,ONC\r
+       HRLO    CS,AC0\r
+       TDZ     CS,RC           ;SET RELOCATION\r
+       HRRZ    C,(PP)          ;C = RIGHT RELOCATION\r
+       CAILE   C,1             ;EXTERNAL\r
+       XORI    CS,EXTF!1       ;YES, SET SWITCH\r
+       PUSHJ   PP,ONC\r
+BOUT3I:        POP     PP,CS           ;GET RID OF ENTRY ON STACK\r
+       HRRZ    CS,LOCO\r
+       TLNE    FR,RIMSW!RIM1SW!R1BSW   ;RIM OUTPUT?\r
+       JRST    ROUT            ;YES, GO PROCESS\r
+\r
+       HRL     CS,MODO\r
+       CAME    CS,MODLOC       ;SEQUENCE OR RELOCATION BREAK?\r
+       PUSHJ   PP,COUTD        ;YES, DUMP THE BUFFER\r
+       SKIPL   COUTX           ;NEW BUFFER?\r
+       JRST    BOUT40          ;NO, STORE CODE AND EXIT\r
+       MOVEM   CS,MODLOC       ;YES, STORE NEW VALUES\r
+       EXCH    AC0,LOCO\r
+       EXCH    RC,MODO\r
+       PUSHJ   PP,COUT         ;STORE BLOCK LOCATION AND MODE\r
+       EXCH    RC,MODO         ;RESTORE CURRENT VALUES\r
+       EXCH    AC0,LOCO\r
+\r
+\fBOUT40:       PUSHJ PP,COUT   ;EMIT CODE\r
+       POP PP,RC       ;RETRIEVE EXTERNAL BITS\r
+       TRNN RC,-2      ;RIGHT EXTERNAL?\r
+       JRST BOUT50     ;TRY FOR LEFT\r
+       PUSHJ PP,COUTD\r
+       PUSH PP,BLKTYP  ;TERMINATE TYPE AND SAVE\r
+       MOVEI AC0,2     ;BLOCK TYPE 2\r
+       MOVEM AC0,BLKTYP\r
+       MOVE AC0,1(RC)  ;GET SYMBOL\r
+       MOVEI ARG,60    ;CODE BITS\r
+       PUSHJ PP,SQOZE  ;CONVERT TO RADIX 50\r
+       HLLZS RC        ;SYMBOL HAS NO RELOCATION\r
+       PUSHJ PP,COUT   ;EMIT\r
+       MOVE AC0,LOCO   ;GET CURRENT LOC\r
+       HRLI AC0,400000 ;ADDITIVE REQ\r
+       HRR RC,MODO     ;CURRENT MODE\r
+       PUSHJ PP,COUT   ;EMIT\r
+       MOVSS RC        ;NOW FOR LEFT\r
+       TRNN RC,-2\r
+       JRST BOUT60\r
+       JRST BOUT70\r
+BOUT50:        MOVSS RC        ;CHECK OTHER HALF\r
+       TRNN RC,-2              ;LEFT HALF EXTERNAL?\r
+       JRST BOUT80     ;NO, FALSE ALARM\r
+       PUSHJ PP,COUTD  ;CHANGE MODE\r
+       PUSH PP,BLKTYP\r
+       MOVEI AC0,2\r
+       MOVEM AC0,BLKTYP\r
+BOUT70:        MOVE AC0,1(RC)\r
+       MOVEI ARG,60\r
+       PUSHJ PP,SQOZE\r
+       HLLZS RC\r
+       PUSHJ PP,COUT\r
+       MOVE AC0,LOCO\r
+       HRLI AC0,600000 ;LEFT HALF ADD\r
+       HRR RC,MODO\r
+       PUSHJ PP,COUT   ;EMIT\r
+BOUT60:        PUSHJ PP,COUTD  ;CHANGE MODE\r
+       POP PP,BLKTYP   ;TO OLD ONE\r
+BOUT80:        AOS LOCO\r
+       AOS MODLOC\r
+       POPJ PP,\r
+\fIFN FORMSW,<\r
+BOUT3J:        MOVSS   IOSEEN          ;SWAP\r
+       SKIPGE  IOSEEN          ;SKIP IF NOT FIRST FIELD\r
+       JRST    [HLLZS IOSEEN   ;CLEAR RIGHT HALF\r
+               POPJ    PP,]    ;AND RETURN\r
+       MOVSS   IOSEEN          ;SWAP BACK\r
+       LSH     AC1,2           ;CORRECT  MNEMONIC AND OP CODE\r
+       CAIE    C,1             ;IS IT OP CODE?\r
+       POPJ    PP,             ;NO,JUST RETURN\r
+       MOVEI   C,2             ;TWO CHAR. WIDE NOW\r
+       SETZM   IOSEEN          ;DON'T COME AGAIN\r
+       POPJ    PP,             ;RETURN\r
+>\r
+\fNOUT: MOVE    V,[POINT 7,TBUF]        ;POINTER TO ASCII LINE\r
+       MOVSI   CS,(POINT 6,AC0)        ;POINTER TO SIXBIT AC0\r
+       SETZB   ARG,AC0\r
+NOUT1: ILDB    C,V             ;GET ASCII\r
+       CAIL C,"A"+40\r
+       CAILE C,"Z"+40\r
+       JRST    .+2\r
+       TRZA    C,100           ;LOWER CASE TO SIXBIT\r
+       SUBI    C,40            ;CONVERT TO SIXBIT\r
+       JUMPLE  C,NOUT3         ;TEST FORM NON-SIXBIT\r
+       CAILE   C,77            ;AND NOT GREATER THAN SIXBIT\r
+       JRST    NOUT3           ;...\r
+       IDPB    C,CS            ;DEPOSIT IN AC0\r
+       TLNE    CS,770000       ;TEST FOR SIX CHARACTERS\r
+       JRST    NOUT1           ;NO, GET ANOTHER\r
+NOUT3: SKIPGE  UNIVSN          ;IF A UNIVERSAL PROG\r
+       POPJ    PP,             ;RETURN TO PUT IT IN THE TABLE\r
+\r
+\r
+NOUT2: PUSHJ   PP,SQOZE        ;CONVERT TO SIXBIT\r
+       JRST    COUT            ;DUMP AND EXIT\r
+\r
+HOUT:\r
+       MOVEI   RC,1            ;RELOCATABLE\r
+       MOVE    AC0,HIGH\r
+       PUSHJ   PP,COUT         ;OUTPUT THE HIGHEST LOCATION\r
+       MOVE AC0,ABSHI\r
+                               ;PUT OUT ABS PORTION OF PROGRAM BREAK\r
+       SOJA    RC,COUT         ;OUTPUT A WORD OF ZERO AND EXIT\r
+\r
+VOUT:  SKIPN   RC,VECREL       ;IS VECTOR ABSOLUTE ZERO?\r
+       SKIPE   VECTOR          ;ALSO CHECK RELOCATION\r
+       JRST    .+2\r
+       POPJ    PP,             ;YES, EXIT\r
+       MOVE    AC0,VECTOR      ;AC0 SHOULD BE FLAGS\r
+\r
+COUT:  AOS     C,COUTX         ;INCREMENT INDEX\r
+       MOVEM   AC0,COUTDB(C)   ;STORE CODE\r
+       IDPB    RC,COUTP        ;STORE RELOCATION BITS\r
+       CAIE    C,?D17          ;IS THE BUFFER FULL?\r
+       POPJ    PP,             ;NO, EXIT\r
+\r
+COUTD: AOSG    C,COUTX         ;DUMP THE BUFFER\r
+       JRST    COUTI           ;BUFFER WAS EMPTY\r
+       HRL     C,BLKTYP        ;SET BLOCK TYPE\r
+       PUSHJ   PP,OUTBIN       ;OUTPUT COUNT AND TYPE\r
+       SETOB   C,COUTY         ;INITIALIZE INDEX\r
+\r
+COUTD2:        MOVE    C,COUTDB(C)     ;GET RELOCATION BITS/CODE\r
+       PUSHJ   PP,OUTBIN       ;DUMP IT\r
+       AOS     C,COUTY         ;INCREMENT INDEX\r
+       CAMGE   C,COUTX         ;TEST FOR END\r
+       JRST    COUTD2          ;NO, GET NEXT WORD\r
+\r
+COUTI: SETOM   COUTX           ;INITIALIZE BUFFER INDEX\r
+       SETZM   COUTRB          ;ZERO RELOCATION BITS\r
+       MOVE    C,[POINT 2,COUTRB]\r
+       MOVEM   C,COUTP         ;INITIALIZE BIT POINTER\r
+       POPJ    PP,             ;EXIT\r
+\fSTOWZ1:\r
+IFN FORMSW,<   MOVE    AC1,HWFORM      ;USE STANDARD FORM>\r
+STOWZ: MOVEI   RC,0\r
+STOW:\r
+IFN FORMSW,<   MOVEM   AC1,FORM        ;STORE FORM WORD>\r
+       JUMP1   STOW20          ;SKIP TEST IF PASS ONE\r
+       TRNE    RC,-2           ;RIGHT HALF ZERO OR 1?\r
+       PUSHJ   PP,STOWT        ;NO, HANDLE EXTERNAL\r
+       TLNN    RC,-2           ;LEFT HALF ZERO OR 1? WFW\r
+       JRST    STOW10          ;YES, SKIP TEST\r
+       MOVSS   RC              ;SWAP HALVES\r
+       PUSHJ   PP,STOWT1       ;HANDLE EXTERNAL WFW\r
+       MOVSS   RC              ;RESTORE VALUES\r
+\r
+STOW10:        SKIPE   EXTPNT          ;ANY EXTERNALS REMAINING?\r
+       TRO     ER,ERRE         ;YES, SET EXTERNAL ERROR FLAG\r
+\r
+STOW20:        AOS     AC1,STPX        ;INCREMENT POINTER\r
+       MOVEM   AC0,STCODE(AC1) ;STOW CODE\r
+       MOVEM   RC,STOWRC(AC1)  ;STOW RELOCATION BITS\r
+IFN FORMSW,<\r
+       PUSH    PP,FORM\r
+       POP     PP,STFORM(AC1)  ;STORE FORM WORD\r
+>\r
+       SKIPN   LITLVL          ;ARE WE IN LITERAL?\r
+       AOS     LOCA            ;NO, INCREMENT ASSEMBLY LOCATION\r
+       CAIGE   AC1,.STP-1      ;OVERFLOW?\r
+       POPJ    PP,             ;NO, EXIT\r
+\r
+       SKIPE   LITLVL          ;ARE WE IN A LITERAL?\r
+       TROA    ER,ERRL         ;YES, FLAG ERROR BUT DON'T DUMP\r
+       JRST    CHARL1          ;NO, SAVE REGISTERS AND DUMP THE BUFFER\r
+       JRST    STOWI           ;INITIALIZE BUFFER\r
+\r
+DSTOW: AOS     AC1,STPY        ;INCREMENT POINTER\r
+       MOVE    AC0,STCODE(AC1) ;FETCH CODE\r
+       MOVE    RC,STOWRC(AC1)  ;FETCH RELOCATION BITS\r
+IFN FORMSW,<\r
+       PUSH    PP,STFORM(AC1)\r
+       POP     PP,FORM         ;GET FORM WORD\r
+>\r
+       CAMGE   AC1,STPX        ;IS THIS THE END?\r
+       POPJ    PP,             ;NO, EXIT\r
+\r
+STOWI: SETOM   STPX            ;INITIALIZE FOR INPUT\r
+       SETOM   STPY            ;INITIALIZE FOR OUTPUT\r
+       SETZM   EXTPNT\r
+       POPJ    PP,             ;EXIT\r
+\fSVSTOW:       AOS     LITLVL          ;NESTED LITERALS\r
+       PUSH    PP,STPX         ;MAKE ROOM FOR ANOTHER\r
+       PUSH    PP,STPY\r
+       MOVE    AC1,STPX\r
+       MOVEM   AC1,STPY\r
+       JRST    0(AC2)\r
+\r
+GTSTOW:        POP     PP,STPY         ;BACK UP A LEVEL\r
+       POP     PP,STPX\r
+       SOS     LITLVL\r
+       JRST    0(AC2)\r
+\r
+       ;EXTERNAL RIGHT\r
+STOWT: HRRZ    AC1,EXTPNT      ;GET RIGHT POINTER\r
+       CAIE    AC1,(RC)        ;DOES IT MATCH \r
+       PUSHJ   PP,QEXT         ;EXTERNAL OR RELOCATION ERROR\r
+       HLLZS   EXTPNT\r
+       POPJ    PP,             ;EXIT\r
+\r
+       ;EXTERNAL LEFT\r
+STOWT1:        HLRZ    AC1,EXTPNT      ;GET LEFT HALF\r
+       CAIE    AC1,(RC)        ;SEE ABOVE\r
+       PUSHJ   PP,QEXT\r
+       HRRZS   EXTPNT\r
+       POPJ    PP,             ;EXIT\r
+\fONC:  ILDB    C,TABP          ;ENTRY TO ADVANCE TAB POINTER\r
+       PUSHJ   PP,OUTL         ;OUTPUT A TAB\r
+                               ;OUTPUT 6 OCT NUMBERS FROM CS LEFT\r
+ONC1:  MOVEI   C,6             ;CONVERT TO ASCII\r
+       LSHC    C,3             ;SHIFT IN OCTAL\r
+       PUSHJ   PP,OUTL         ;OUTPUT ASCII FROM C\r
+       TRNE    CS,-1           ;ARE WE THROUGH?\r
+       JRST    ONC1            ;NO, GET ANOTHER\r
+       MOVEI   C,0             ;CLEAR C\r
+       TLNN    CS,1            ;RELOCATABLE?\r
+       MOVEI   C,"'"           ;YES\r
+       TLNN    CS,EXTF         ;OR EXTERNAL\r
+       MOVEI   C,"*"           ;YES\r
+ONC2:  JUMPN   C,OUTC          ;OUTPUT IF EXTERN OR RELOCATABLE\r
+IFN FORMSW,<   SOS     FLDSIZ  ;DECREMENT FIELD SIZE>\r
+       POPJ    PP,             ;EXIT\r
+\r
+DNC:   IDIVI   C,?D10\r
+       HRLM    CS,0(PP)\r
+       JUMPE   C,.+2\r
+       PUSHJ   PP,DNC          ;RECURSE IF NON-ZERO\r
+       HLRZ    C,0(PP)\r
+       ADDI    C,"0"           ;FORM ASCII\r
+       JRST    PRINT           ;DUMP AND TEST FOR END\r
+\r
+OUTAS0:        HRLI    CS,(POINT 7,,)  ;ENTRY TO SET POINTER\r
+OUTASC:        ILDB    C,CS            ;GET NEXT BYTE\r
+       JUMPE   C,POPOUT        ;EXIT ON ZERO DELIMITER\r
+       PUSHJ   PP,PRINT\r
+       JRST    OUTASC\r
+\r
+OUTSIX:        HRLI    CS,(POINT 6,,)  ;OUTPUT SIXBIT\r
+       ILDB    C,CS            ;GET SIXBIT\r
+       CAIN    C,40            ;"@" DELIMITER?\r
+       POPJ    PP,             ;YES, EXIT\r
+       ADDI    C,40            ;NO, FORM ASCII\r
+       PUSHJ   PP,OUTL         ;OUTPUT ASCII CHAR FROM C\r
+       JRST    OUTSIX+1\r
+\r
+OUTSYM:        MOVE    CS,AC0          ;PLACE NAME IN CS\r
+OUTSY1:        MOVEI   C,0             ;CLEAR C\r
+       LSHC    C,6             ;MOVE NEXT SIXBIT CHARACTER IN\r
+       JUMPE   C,OUTTAB        ;TEST FOR END\r
+       ADDI    C,40            ;CONVERT TO ASCII\r
+       PUSHJ   PP,OUTL         ;OUTPUT\r
+       JRST    OUTSY1          ;LOOP\r
+\fOUTSET:       AOS     SX,0(PP)        ;GET RETURN LOCATION\r
+       MOVE    SX,-1(SX)       ;GET XWD CODE\r
+       HLRM    SX,BLKTYP       ;SET BLOCK TYPE\r
+       SETZB   ARG,RC\r
+       PUSHJ   PP,0(SX)        ;GO TO PRESCRIBED ROUTINE\r
+       JRST    COUTD           ;TERMINATE BLOCK AND EXIT\r
+\r
+       ;LOOKUP SCANS ALL THE SYMBOLS IN THE SYMBOL TABLE\r
+\r
+LOOKUP:        POP     PP,LOOKX        ;INTERCEPT RETURN POP\r
+       MOVE    SX,SYMBOL\r
+       MOVE    SDEL,0(SX)      ;SET FOR TABLE SCAN\r
+LOOKL: SOJL    SDEL,POPOUT     ;TEST FOR END\r
+       ADDI    SX,2\r
+       MOVE    AC0,-1(SX)\r
+       PUSHJ   PP,SRCH7        ;LOAD REGISTERS\r
+       HLRZS   ARG\r
+       PUSHJ   PP,@LOOKX       ;RETURN TO CALLING ROUTINE\r
+       JRST    LOOKL           ;TRY AGAIN\r
+\fEND0: PUSHJ   PP,EVALCM       ;GET A WORD\r
+       SKIPE   EXTPNT          ;ANY EXTERNALS?\r
+       TRO     ER,ERRE         ;YES, ERROR\r
+       SKIPN   V,AC0           ;NON-ZERO?\r
+       JUMPE   RC,.+2          ;OR RELOC?\r
+       PUSHJ   PP,ASSIG7       ;YES, LIST THE VALUE\r
+       MOVEM   AC0,VECTOR\r
+       MOVEM   RC,VECREL\r
+       PUSHJ   PP,VARA         ;FILL OUT SELF-DEFINED VARIABLES\r
+       PUSHJ   PP,STOUTS       ;DUMP THE LINE\r
+       PUSH    PP,IO           ;SAVE FLAGS\r
+       TLO     IO,IOPROG       ;XLIST LITS\r
+       PUSHJ   PP,LIT1\r
+       POP     PP,IO           ;GET FLAG BACK\r
+       JUMP2   ENDP2\r
+\r
+       PUSHJ   PP,UOUT\r
+       TLNN    IO,MFLSW        ;SKIP IF ONLY PSEND\r
+       PUSHJ   PP,REC2\r
+       MOVE    INDIR           ;SET UP FIRST AS LAST\r
+       MOVEM   LSTFIL          ;PRINTED\r
+       SETZM   LSTPGN\r
+       PUSHJ   PP,INZ\r
+       TLNE    IO,MFLSW        ;IF PSEND\r
+       POPJ    PP,             ;BACK TO PSEND0\r
+       SKIPE   PRGPTR          ;HAVE ANY PRGEND'S BEEN SEEN\r
+       JRST    PSEND3          ;YES,GO SET UP AGAIN\r
+\r
+PASS20:        SETZM   CTLSAV\r
+       PUSHJ   PP,COUTI\r
+       PUSHJ   PP,EOUT         ;OUTPUT THE ENTRIES\r
+       PUSHJ   PP,OUTSET\r
+       XWD     6,NOUT          ;OUTPUT THE NAME (BLKTYP-6)\r
+       MOVEI   1\r
+       HRRM    BLKTYP          ;SET FOR TYPE 1 BLOCK\r
+       TLZ     FR,P1           ;SET FOR PASS 2 AND TURN OFF FLAG\r
+       TLO     IO,IOPALL       ;PUT THESE BACK\r
+       TLZ     IO,IOPROG!IOCREF!DEFCRS ;SO LISTINGS WILL BE THE WAY THEY SHOULD\r
+       TLNN    FR,R1BSW\r
+       JRST    STOWI\r
+       \r
+       MOVE CS,[XWD $ST-1-$CKSM,R1BLDR]\r
+       MOVE C,0(CS)\r
+       PUSHJ PP,PTPBIN\r
+       AOBJN CS,.-2\r
+       PUSHJ   PP,R1BI\r
+       JRST    STOWI\r
+\f      \r
+R1BLDR:\r
+       PHASE 0\r
+       IOWD $ADR,$ST\r
+$ST:   CONO PTR,60\r
+       HRRI $A,$RD+1\r
+$RD:   CONSO PTR,10\r
+       JRST .-1\r
+       DATAI PTR,@$TBL1-$RD+1($A)\r
+       XCT $TBL1-$RD+1($A)\r
+       XCT $TBL2-$RD+1($A)\r
+$A:    SOJA $A,\r
+$TBL1: CAME $CKSM,$ADR\r
+       ADD $CKSM,1($ADR)\r
+       SKIPL $CKSM,$ADR\r
+$TBL2: JRST 4,$ST\r
+       AOBJN $ADR,$RD\r
+$ADR:  JRST $ST+1\r
+$CKSM: \r
+       DEPHASE\r
+\r
+IF2,<  PURGE $ST,$RD,$A,$TBL1,$TBL2,$ADR,$CKSM>\r
+\fENDP2:        PUSHJ   PP,COUTD        ;DUMP THE BUFFER\r
+       MOVE    AC0,LOCO        ;CHECK TO SEE IF LIT DIFFERED\r
+       SKIPN   MODO            ;AND USE SMALLER SINCE AT END\r
+       JRST    [CAMN   AC0,ABSHI\r
+               HRRZM   AC2,ABSHI\r
+               JRST    ENDP2W]\r
+       CAMN    AC0,HIGH\r
+       HRRZM   AC2,HIGH\r
+ENDP2W:\r
+REPEAT 1,<TLNE IO,IOCREF       ;CLOSE CREF IF NECESSARY>\r
+REPEAT 0,<TLNE FR,CREFSW       ;IF CREFFING\r
+       JRST ENDP2Q\r
+       MOVEI SDEL,0\r
+       PUSH PP,DBUF+3  ;SO NO PAGE INFO\r
+       DPB SDEL,[POINT 7,DBUF+3,13]\r
+       IOR ER,OUTSW    ;MAKE SURE OF OUTPUT\r
+       PUSHJ PP,CREF\r
+       MOVEI C,20      ;CODE FOR TITLE\r
+       PUSHJ PP,OUTLST\r
+       PUSH PP,IO      ;SAVE THIS\r
+       TLZ IO,IOPAGE   ;AND PREVENT PAGE DURING TITLE\r
+       MOVEI CS,TBUF\r
+       PUSHJ PP,OUTAS0\r
+       MOVEI CS,VBUF\r
+       PUSHJ PP,OUTAS0\r
+       POP PP,IO       ;RESTORE THE IO WORD\r
+       POP PP,DBUF+3   >       ;NEEDS FIX TO CREF\r
+       PUSHJ   PP,CLSCR2       ;CLOSE IT UP\r
+ENDP2Q:        HRR     ER,OUTSW        ;SET OUTPUT SWITCH\r
+       SKIPN   TYPERR\r
+       TRO     ER,TTYSW\r
+       PUSHJ   PP,UOUT         ;OUTPUT UNDEFINEDS\r
+       TRO     ER,TTYSW\r
+       SKPINC  C       ;SEE IF WE CAN INPUT A CHAR.\r
+         JFCL          ;BUT ONLY TO DEFEAT ?O\r
+       SKIPG C,ERRCNT  ;GET ERROR COUNT AND CHECK FOR POSITIVE\r
+       JRST NOERW      ;PRINT NO ERROR MESSAGE\r
+       PUSHJ PP,OUTCR\r
+       MOVE C,ERRCNT\r
+       CAIN C,1        ;1 IS A SPECIAL CASE\r
+       JRST ONERW      ;PRINT MESSAGE\r
+       MOVEI   C,"?"           ;? FOR BATCH\r
+       PUSHJ   PP,OUTL         ;...\r
+       MOVE C,ERRCNT   ;PRINT NUMBER OF ERRORS\r
+       PUSHJ PP,DNC\r
+       SKIPA CS,[EXP ERRMS1]   ;LOAD TO PRINT\r
+ONERW: MOVEI CS,ERRMS2 ;ONE ERROR DETECTED\r
+ONERW1:        PUSHJ PP,OUTSIX ;PRINT\r
+       JRST ENDP2A\r
+NOERW: MOVEI CS,ERRMS3\r
+       TLNE    IO,MFLSW        ;NOR IF MULTI-FILE MODE\r
+       TRZ     ER,TTYSW                ;NO TTY OUTPUT\r
+       IOR     ER,OUTSW        ;UNLESS NEEDED FOR LISTING\r
+       PUSHJ PP,OUTCR\r
+       JRST ONERW1\r
+\r
+\fENDP2A:       PUSHJ PP,OUTCR\r
+       TLNN    IO,MFLSW        ;IN A MULTI-PROG FILE?\r
+       JRST    ENDP2D          ;NO\r
+       SKIPE   ERRCNT          ;ANY ERROR?\r
+       PUSHJ   PP,[MOVEI CS,[ASCIZ /PROGRAM    /]\r
+               PUSHJ PP,OUTAS0 ;YES,SO PRINT MESSAGE\r
+               MOVEI   CS,TBUF ;AND TITLE\r
+               PUSHJ PP,OUTAS0 ;FOR IDENTIFICATION\r
+               JRST    OUTCR]  ;AND A CR-LF\r
+       TRZA    ER,TTYSW        ;NO MORE OUTPUT NOW\r
+ENDP2D:\r
+       SKIPA           ;SO PRGEND CODE CAN WORK\r
+       IOR     ER,OUTSW        ;...\r
+       PUSHJ   PP,OUTCR\r
+       MOVEI   CS,[SIXBIT /PROGRAM BREAK IS @/]\r
+       PUSHJ   PP,OUTSIX       ;OUTPUT PROGRAM BREAK\r
+       HRRZ    CS,ABSHI        ;GET ABS. BREAK\r
+       CAIG    CS,140          ;ANY ABS. CODE\r
+       JRST    [HRLO CS,HIGH   ;NO\r
+               JRST    ENDP2B] ;SO DON'T PRINT\r
+       HRLO    CS,HIGH         ;GET PROGRAM BREAK\r
+       PUSHJ   PP,ONC1\r
+       PUSHJ   PP,OUTCR\r
+       MOVEI   CS,[SIXBIT /ABSLUTE BREAK IS @/]\r
+       PUSHJ   PP,OUTSIX\r
+       HRLO    CS,ABSHI\r
+ENDP2B:        PUSHJ   PP,ONC1\r
+       PUSHJ PP,OUTCR\r
+       TLNE    FR,RIMSW!R1BSW  ;RIM MODE?\r
+       PUSHJ   PP,RIMFIN       ;YES, FINISH IT\r
+       TLNN    IO,MFLSW        ;NOR IF IN MULTI-FILE MODE\r
+       TRO     ER,TTYSW        ;PRINT SIZE\r
+       PUSHJ   PP,OUTCR\r
+       MOVE    C,JOBREL\r
+       LSH     C,-?D10\r
+       ADDI    C,1\r
+       PUSHJ   PP,DNC\r
+       MOVEI   CS,[SIXBIT /K CORE USED@/]\r
+       PUSHJ   PP,OUTSIX\r
+       PUSHJ   PP,OUTCR        \r
+       HRR     ER,OUTSW\r
+       PUSHJ   PP,OUTSET\r
+       XWD     2,SOUT          ;OUTPUT THE SYMBOLS (BLKTYP-2)\r
+       PUSHJ   PP,OUTSET\r
+       XWD     7,VOUT          ;OUTPUT TRANSFER VECTOR (..-7)\r
+       PUSHJ   PP,OUTSET\r
+       XWD     5,HOUT          ;OUTPUT HIGHEST RELOCATABLE (..-5)\r
+       PUSHJ   PP,COUTD\r
+       TLNN    IO,MFLSW        ;IS IT PRGEND?\r
+       JRST    FINIS           ;ALAS, FINISHED\r
+       MOVEI   CS,SBUF         ;RESET SBUF POINTER\r
+       HRRM    CS,SUBTTX       ;TO SUBTTL\r
+       SETZM   PASS2I          ;CLEAR PASS2 VARIABLES\r
+       MOVE    [XWD PASS2I,PASS2I+1]\r
+       BLT     PASS2Z-1        ;BUT NOT ALL OF VARIABLES\r
+       JRST    INZ             ;RE-INITIALIZE FOR NEXT PROG\r
+\r
+RIMFIN:        TLNE FR,R1BSW\r
+       PUSHJ PP,R1BDMP\r
+       SKIPN   C,VECTOR\r
+       MOVSI   C,(JRST 4,)\r
+       TLNN    C,777000\r
+       TLO     C,(JRST)\r
+       PUSHJ   PP,PTPBIN\r
+       MOVEI   C,0\r
+       JRST    PTPBIN\r
+\fSUBTTL        PASS INITIALIZE\r
+INZ:   AOS     MODA\r
+       AOS     MODO\r
+       SETZM   SEQNO\r
+       SETZM   TAG\r
+       HRRI    RX,?D8\r
+       MOVEI   VARHD\r
+       MOVEM   VARHDX\r
+       MOVEI   LITHD\r
+       MOVEM   LITHDX\r
+       PUSHJ   PP,LITI\r
+       PUSHJ   PP,STOWI\r
+IFN FORMSW,<\r
+       HRRES   HWFMT           ;SET DEFAULT VALUE BACK>\r
+       JRST    OUTLI\r
+\r
+RCPNTR:        POINT   1,ARG,?L<RELF>-18       ;POINT 1,ARG,22\r
+\fSUBTTL        PSEUDO-OP HANDLERS\r
+\r
+TAPE0: PUSHJ   PP,STOUTS       ;FINISH THIS LINE\r
+       JRST    GOTEND          ;AND IGNORE THE REST OF THIS FILE\r
+\r
+RADIX0:        PUSHJ   PP,EVAL10       ;EVALUATE RADIX D10\r
+       CAIG    AC0,?D10        ;IF GREATER THAN 10\r
+       CAIG    AC0,1           ;OR LESS THAN 2,\r
+ERRAX: TROA    ER,ERRA         ;FLAG ERROR AND SKIP\r
+       HRR     RX,AC0          ;SET NEW RADIX\r
+       POPJ    PP,\r
+\r
+\r
+XALL0: TLZ     IO,IOSALL       ;TURN OFF MACRO SUPPRESS ALL\r
+IOSET: JUMP1   POPOUT          ;NOSYM (IONSYM), XALL (IOPALL), XLIST (IOPROG)\r
+       HLRZ    SX,AC0          ;STORE FLAGS\r
+       PUSHJ   PP,STOUTS       ;POLISH OFF LINE\r
+       TLO     IO,0(SX)        ;NOW SUPRESS PRINTING\r
+       POPJ    PP,\r
+\r
+IORSET:        TDZ     IO,AC0          ;RESET  FLAG IOPALL/IOPROG\r
+       TLNE    AC0,IONCRF      ;RESTORING CREFFING?\r
+       TLZ     IO,DEFCRS       ;YES, CLEAR ANY WAITING DEFINING OCCURENCES\r
+       POPJ    PP,\r
+\r
+BLOCK0:        PUSHJ   PP,HIGHQ\r
+       PUSHJ   PP,EVALEX       ;EVALUATE\r
+       TRZE    RC,-1           ;EXTERNAL OR RELOCATABLE?\r
+       PUSHJ   PP,QEXT         ;YES, DETERMINE TYPE\r
+       ADDM    AC0,LOCO        ;UPDATE ASSEMBLY LOCATION\r
+BLOCK1:        EXCH    AC0,LOCA        ;SAVE START OF BLOCK\r
+       ADDM    AC0,LOCA        ;UPDATE OUTPUT LOCATION\r
+BLOCK2:        HRLOM   AC0,LOCBLK\r
+       JUMP2   POPOUT\r
+       TRNE    ER,ERRU\r
+       TRO     ER,ERRV\r
+       POPJ    PP,\r
+\f\r
+PRNTX0:        TRO     ER,TTYSW        ;SET OUTPUT TO TTY\r
+       JUMP2   PRNTX2          ;PASS1?\r
+       TDOA    ER,OUTSW        ;YES,OUTPUT TO LSTDEV ALSO\r
+PRNTX2:        ANDCM   ER,OUTSW        ;NO,DON'T OUTPUT TO TTY IF IT IS LSTDEV\r
+       PUSHJ   PP,BYPASS       ;GET FIRST CHAR.\r
+       TLOA    IO,IORPTC       ;REPEAT IT AND SKIP\r
+PRNTX4:        PUSHJ   PP,PRINT        ;PRINT THE CHAR.\r
+       PUSHJ   PP,CHARAC       ;GET ASCII CHAR.\r
+       CAIG    C,CR            ;IF GREATER THAN CR\r
+       CAIG    C,HT            ;OR LESS THAN LF\r
+       JRST    PRNTX4          ;THEN CONTINUE\r
+       PUSHJ   PP,OUTCR        ;OUTPUT A CRLF\r
+       TRZA    ER,TTYSW!LPTSW  ;TURN OF OUTPUT\r
+CPOPJ1:        AOS     (PP)            ;USEFUL TAG HAS TO GO SOMEWHERE\r
+CPOPJ: POPJ    PP,             ;EXIT\r
+\r
+REMAR0:        PUSHJ   PP,GETCHR       ;GET A CHARACTER\r
+       CAIE    C,EOL\r
+       JRST    REMAR0\r
+       POPJ    PP,             ;EXIT\r
+\fLIT0: PUSHJ   PP,BLOCK1\r
+       PUSHJ   PP,STOUTS\r
+LIT1:  JUMP2   LIT20\r
+\r
+;ON PASS ONE, WE JUST STEP THE LOCATION COUNTER AND CLEAR\r
+\r
+       MOVE    AC0,LITCNT\r
+       MOVE    SX,LITHDX\r
+       HRLM    AC0,0(SX)\r
+       MOVE    V,LOCA\r
+       HRL     V,MODA\r
+       MOVEM   V,-1(SX)\r
+       JRST    LIT24\r
+\r
+LIT20: PUSH    PP,LOCA\r
+       PUSH    PP,LOCO\r
+       SKIPN   LITNUM\r
+       JRST    LIT20A\r
+       MOVE    SX,LITHDX\r
+       HRRZ    AC0,-1(SX)\r
+       CAME    AC0,LOCA\r
+       TRO     ER,ERRP\r
+LIT20A:        MOVE    SX,LITAB\r
+LIT21: SOSGE   LITNUM\r
+       JRST    LIT22\r
+IFN FORMSW,<\r
+       MOVE    AC0,-3(SX)\r
+       MOVEM   AC0,FORM\r
+>\r
+       MOVE    AC0,-2(SX)      ;WFW\r
+       MOVE    RC,-1(SX)       ;WFW\r
+       MOVE SX,(SX)    ;WFW POINTER TO THE NEXT LIT\r
+       PUSHJ   PP,STOW20       ;STOW CODE\r
+       MOVEI   C,12            ;SET LINE FEED\r
+       IDPB    C,LBUFP\r
+       PUSHJ   PP,OUTLIN       ;OUTPUT THE LINE\r
+       JRST    LIT21\r
+\fLIT22:        HRRZ    AC2,LOCO\r
+       POP     PP,LOCO\r
+       POP     PP,LOCA\r
+       MOVE    SX,LITHDX\r
+       HLRZ    AC0,0(SX)\r
+       SUB AC2,LOCO    ;COMPUTE LENGTH USED\r
+       CAMGE AC0,AC2   ;USE LARGER\r
+       MOVE AC0,AC2\r
+       ADD AC2,LOCO\r
+LIT24: ADDM    AC0,LOCA\r
+       ADDM    AC0,LOCO\r
+       PUSHJ   PP,GETTOP\r
+       HRRM    SX,LITHDX\r
+LITI:  SETZM   LITCNT\r
+       SETZM   LITNUM\r
+       MOVEI   LITAB\r
+       MOVEM   LITABX\r
+       JRST    HIGHQ\r
+\r
+GETTOP:        HRRZ    AC1,SX          ;VARHD\r
+       HRRZ    SX,0(SX)\r
+       JUMPN   SX,POPOUT\r
+IFE FORMSW,<   MOVEI   SX,3    ;WFW>\r
+IFN FORMSW,<   MOVEI   SX,4    ;ICC>\r
+       ADDB    SX,FREE\r
+       CAML    SX,SYMBOL\r
+       PUSHJ   PP,XCEED\r
+       SUBI    SX,1            ;MAKE SX POINT TO LINK\r
+       SETZM   0(SX)           ;CLEAR FORWARD LINK\r
+       HRRM    SX,0(AC1)       ;STORE ADDRESS IN LAST LINK\r
+       POPJ    PP,\r
+\fVAR0: PUSHJ   PP,BLOCK1       ;PRINT LOCATION\r
+       PUSHJ PP,VARA\r
+       JRST STOUTS\r
+\r
+VARA:  MOVE    SX,VARHDX\r
+       MOVE AC0,LOCA   ;GET LOCATION FOR CHECK\r
+       JUMP1 VARB      ;DO NOT CHECK START ON PASS 1\r
+       CAME AC0,-1(SX) ;CHECK START OF VAR AREA\r
+       TRO ER,ERRP     ;AND GIVE ERROR\r
+VARB:  MOVEM AC0,-1(SX)        ;SAVE START FOR PASS 2\r
+       HLRZ    AC0,0(SX)\r
+       ADDM    AC0,LOCA\r
+       ADDM    AC0,LOCO\r
+       PUSHJ   PP,GETTOP\r
+       HRRM    SX,VARHDX\r
+       JUMP2   POPOUT\r
+\r
+       PUSHJ   PP,LOOKUP       ;SET FOR TABLE SCAN\r
+       TRZN    ARG,VARF\r
+       POPJ    PP,             ;NO, EXIT\r
+       TRZ ARG,UNDF            ;TURN OFF FLAG NOW\r
+       MOVSI AC0,1             ;ADD 1\r
+       ADDM    AC0,0(AC1)      ;UPDATE COUNT\r
+\r
+       IOR     ARG,MODA        ;SET TO ASSEMBLY MODE\r
+       HRL     ARG,LOCA\r
+       MOVSM   ARG,0(SX)       ;UPDATE 2ND WRD OF SYM TAB ENTRY\r
+       AOS     LOCA\r
+       AOS     LOCO\r
+       JRST    HIGHQ1\r
+\fIF:   PUSH    PP,AC0          ;SAVE AC0\r
+       PUSH    PP,IO\r
+       PUSHJ   PP,EVALXQ       ;EVALUATE AND TEST EXTERNAL\r
+       POP     PP,AC1\r
+       JUMPL   AC1,IFPOP\r
+       TLZ     IO,FLDSW\r
+IFPOP: POP     PP,AC1          ;RETRIEVE SKIP INSTRUCTION\r
+IFSET: TLO IO,IORPTC           ;REPEAT CHARACTER\r
+IFXCT: XCT     AC1             ;EXECUTE INSTRUCTION\r
+       TDZA    AC0,AC0         ;FALSE\r
+       MOVEI   AC0,1           ;TRUE\r
+IFEXIT:        JUMPOC REPEA1           ;BRANCH IF IN OP-CODE FIELD\r
+IFEX1: PUSHJ PP,GETCHR         ;SEARCH FOR "<"\r
+       CAIN C,EOL              ;ERROR IF END OF LINE\r
+       JRST ERRAX\r
+       CAIE C,34\r
+       JRST IFEX1\r
+       JUMPE AC0,IFEX2         ;TEST FOR 0\r
+       TLO IO,IORPTC           ;NO, PROCESS AS CELL\r
+       PUSHJ PP,CELL\r
+IFN FORMSW,<   MOVE    AC1,HWFORM      ;USE STANDARD FORM>\r
+       SETZM   INCND           ;NOT ANY MORE\r
+       JRST STOW               ;STOW CODE AND EXIT\r
+\r
+IFPASS:        HRRI    AC0,P1          ;MAKE IT TLNX IO,P1\r
+       MOVE    AC1,AC0         ;PLACE IT IN AC1\r
+       JRST    IFSET           ;EXECUTE INSTRUCTION\r
+\r
+IFB0:  HLLO    AC1,AC0         ;FORM AND STORE TEST INSTRUCTION\r
+IFB1:  PUSHJ   PP,CHARL        ;GET FIRST NON-BLANK\r
+       CAIE    C," "\r
+       CAIN    C,"     "\r
+       JRST    IFB1            ;SKIP BLANKS AND TABS\r
+       CAIG    C,CR            ;CHECK FOR CARRET AS DELIM.\r
+       CAIGE   C,LF\r
+       SKIPA   SX,SEQNO2\r
+       JRST    ERRAX\r
+       MOVEM   SX,CNDSEQ\r
+       MOVE    SX,PAGENO\r
+       MOVEM   SX,CNDPG\r
+       SETOM   INCND           ;SAVE INFO. FOR PASS 1 ERRORS\r
+       CAIN    C,"<"           ;LEFT BRACKET?\r
+       SETZB   C,RC            ;YES, PREPARE FOR OLD FORMAT\r
+       SKIPA   SX,C            ;SAVE FOR COMPARISON\r
+IFB3:  TRO     AC0,1           ;SET FLAG\r
+IFB2:  PUSHJ   PP,CHARL        ;GET ASCII CHARACTER AND LIST\r
+       CAMN    C,SX            ;TEST FOR DELIMITER\r
+       JRST    IFXCT           ;FOUND\r
+       CAIE    C," "           ;BLANK?\r
+       CAIN    C,"     "       ;OR TAB?\r
+       JRST    IFB2            ;YES\r
+       JUMPN   SX,IFB3         ;JUMP IF NEW FORMAT\r
+       CAIN    C,"<"           ;<?\r
+       AOJA    RC,IFB2         ;YES, INCREMENT COUNT\r
+       CAIN    C,">"           ;>?\r
+       SOJL    RC,IFXCT        ;YES, DECREMENT AND EXIT IF DONE\r
+       JRST    IFB3            ;GET NEXT CHARACTER\r
+\r
+\fIFDEF0:       HRRI    AC0,UNDF        ;MAKE IT TLNX ARG,UNDF\r
+       PUSH    PP,AC0          ;STACK IT\r
+       PUSHJ   PP,GETSYM       ;TAKES SKIP RETURN IF SYM NAME IS LEGAL\r
+       TROA    ER,ERRA         ;ILLEGAL!\r
+       PUSHJ   PP,SEARCH\r
+       JRST    [PUSHJ  PP,OPTSCH\r
+               TLO     ARG,UNDF\r
+               JRST    .+1]\r
+       PUSHJ PP,SSRCH3         ;EMIT TO CREF ANYWAY\r
+       JRST    IFPOP           ;POP AND EXECUTE INSTRUCTION\r
+\r
+\fIFIDN0:       HLRZS   AC0\r
+       MOVEI   V,2*.IFBLK-1\r
+       SETZM   IFBLK(V)        ;CLEAR COMPARISON BLOCK\r
+       SOJGE   V,.-1\r
+       SETZM   .TEMP           ;CLEAR STORED DELIMETER\r
+       MOVEI   RC,IFBLK        ;SET FOR FIRST BLOCK\r
+       PUSHJ   PP,IFCL         ;GET FIRST STRING\r
+       MOVEI   RC,IFBLKA\r
+       PUSHJ   PP,IFCL         ;GET SECOND STRING\r
+       MOVEI   V,.IFBLK-1\r
+       MOVE    SX,IFBLK(V)     ;GET WORD FROM FIRST STRING\r
+       CAMN    SX,IFBLKA(V)    ;COMPARE WITH SECOND STRING\r
+       SOJGE   V,.-2           ;EQUAL, TRY NEXT WORD\r
+       JUMPL   V,IFEXIT        ;DID WE FINISH STRING\r
+       XORI    AC0,1           ;NO, TOGGLE REQUEST\r
+       JRST    IFEXIT  ;DO NOT TURN ON IORPTC WFW\r
+\r
+IFCL:  PUSHJ   PP,CHARAC       ;GET AND LIST CHARACTER\r
+       CAIE    C," "           ;SKIP SPACES\r
+       CAIG    C,CR            ;ALSO SKIP CR-LF\r
+       CAIGE   C,HT            ;AND TAB\r
+       JRST    .+2             ;NOT ONE OF THEM\r
+       JRST    IFCL            ;SO LONG COMPARISONS WILL WORK\r
+;*** A CROCK SO THAT IFIDN <X>,<X>,<INST.> WILL WORK   ***\r
+       CAIE    C,","           ;IS IT A COMMA?\r
+       JRST    .+3             ;NO\r
+       SKIPN   .TEMP           ;YES, WAS PREVIOUS FIELD OLD METHOD?\r
+       JRST    IFCL            ;YES, IGNORE COMMA AND SPACES\r
+;      ***\r
+       CAIN    C,"<"           ;WAS IT LEFT BRACKET?\r
+       SETO    C,              ;SIGNAL OLD METHOD, LOOK FOR RIGHT BRACKET\r
+       MOVEM   C,.TEMP         ;STORE TERMINATOR FOR COMPARISON\r
+       MOVEI   SX,5*.IFBLK-1   ;LIMIT SEARCH\r
+       HRLI    RC,(POINT 7,,)  ;SET UP BYTE IN RC\r
+IFCLR: PUSHJ   PP,CHARAC\r
+       SKIPLE  .TEMP           ;NEW METHOD?\r
+       JRST    IFCLR1          ;YES, IGNORE ANGLE BRACKET COUNTING\r
+       CAIN    C,"<"           ;ANOTHER LEFT ANGLE?\r
+       SOS     .TEMP           ;YES, KEEP COUNT\r
+       CAIN    C,">"           ;CLOSING ANGLE\r
+       AOSGE   .TEMP           ;MATCHING COUNT?\r
+IFCLR1:        CAMN    C,.TEMP         ;TEST FOR DELIMITER\r
+       POPJ    PP,             ;EXIT ON RIGHT DELIMITER\r
+       SOJG    SX,.+2          ;ANY ROOM IN COMPARISON BLOCK?\r
+       TROA    ER,ERRA         ;NO, FLAG ERROR BUT KEEP ON GOING\r
+       IDPB    C,RC            ;DEPOSIT BYTE\r
+       JRST    IFCLR\r
+\r
+\f\r
+IFEX2: PUSHJ   PP,GETCHR\r
+       CAIN    C,EOL           ;EXIT WITH ERROR IF END OF LINE\r
+       JRST    ERRAX\r
+       CAIN    C,34            ;"<"?\r
+       AOJA    AC0,IFEX2       ;YES, INCREMENT COUNT\r
+       CAIE    C,36            ;">"?\r
+       JRST    IFEX2           ;NO, TRY AGAIN\r
+       SOJGE   AC0,IFEX2       ;YES, TEST FOR MATCH\r
+       PUSHJ   PP,BYPASS       ;YES, MOVE TO NEXT DELIMITER\r
+       SETZM   INCND           ;OUT OF CONDITIONAL NOW\r
+       AOJA    AC0,STOWZ1      ;STOW ZERO\r
+\r
+\r
+INTER0:        HLLZM   AC0,INTENT      ;AC0 CONTAINS INTF/ENTF FLAGS\r
+\r
+INTER1:        PUSHJ   PP,GETSYM       ;GET A SYMBOL\r
+       JRST    INTER3          ;INVALID, SKIP\r
+       PUSHJ   PP,SSRCH        ;SEARCH THE TABLE\r
+       MOVSI   ARG,SYMF!INTF!UNDF\r
+       TLNE    ARG,UNDF        ;UNDEFINED?\r
+       TRO     ER,ERRA         ;YES, FLAG ERROR\r
+       TLNN    ARG,SYNF!EXTF\r
+       TDOA    ARG,INTENT                      ;SET APPROPRIATE FLAGS\r
+INTER3:        TROA    ER,ERRA         ;FLAG ARG EROR AND SKIP\r
+       PUSHJ   PP,INSERQ       ;INSERT/UPDATE\r
+       JUMPCM  INTER1\r
+       SETZM EXTPNT    ;JUST IN CASE, SO AS NOT TO CONFUSE WORLD\r
+       POPJ    PP,             ;NO, EXIT\r
+\fEXTER0:       PUSHJ   PP,GETSYM       ;GET A SYMBOL\r
+       JRST    EXTER4          ;INVALID, ERROR\r
+EXTER1:        TLO     IO,DEFCRS       ;FLAG THIS AS A DEFINITION\r
+       PUSHJ   PP,SSRCH        ;OK, SEARCH SYMBOL TABLE\r
+       JRST    EXTER2          ;NOT THERE, INSERT IT\r
+       TLNN    ARG,EXTF!VARF!UNDF\r
+       TROA    ER,ERRE         ;FLAG ERROR AND BYPASS\r
+       TLNE    ARG,EXTF        ;VALID, ALREADY DEFINED?\r
+       JRST    [JUMP1  EXTER3  ;YES, BYPASS\r
+               TLZN ARG,UNDF   ;SKIP IF UNDEFINED ALSO\r
+               JRST    EXTER3  ;CONTINUE\r
+               ANDM ARG,(SX)   ;CLEAR UNDF ON PASS 2\r
+               JRST    EXTER2] ;SET UP EXTERNAL NOW\r
+EXTER2:        MOVEI V,2               ;NO, GET 2 CELLS FROM THE TREE\r
+       ADDB V,FREE\r
+       CAML    V,SYMBOL        ;HAVE WE RUN OUT OF CORE?\r
+       PUSHJ   PP,XCEEDS       ;YES, TRY TO BORROW SOME MORE\r
+       SUBI    V,2             ;GET RIGHT CELL FOR POINTER\r
+       SETZB   RC,0(V)         ;ALL SET, ZERO VALUES\r
+       MOVSI   ARG,SYMF!EXTF\r
+       PUSHJ   PP,INSERT       ;INSERT/UPDATE IT\r
+       MOVSI   ARG,PNTF\r
+       IORM    ARG,0(SX)\r
+       SKIPA ARG,-1(SX)                ;GET THE SIXBIT FOR THE NAME\r
+EXTER4:        TROA ER,ERRA    ;FLAG AS ERROR\r
+       MOVEM ARG,1(V)          ;AND STORE THAT IN CASE SYMBOL TABLE MOVES\r
+EXTER3:        JUMPCM  EXTER0\r
+       POPJ    PP,             ;NO, EXIT\r
+\fEVAL10:       PUSH    PP,RX\r
+       HRRI    RX,?D10\r
+       PUSHJ   PP,EVALEX       ;EVALUATE\r
+       POP     PP,RX           ;RESET RADIX\r
+       JUMPE   RC,POPOUT       ;EXIT IF ABSOLUTE\r
+\r
+QEXT:  SKIPE   EXTPNT          ;ANY POSSIBILITIES?\r
+       TROA    ER,ERRE         ;YES, FLAG EXTERNAL ERROR\r
+       TRO     ER,ERRR         ;NO, FLAG RELOCATION ERROR\r
+       HLLZS   RC              ;CLEAR RELOCATION/EXTERNAL\r
+       POPJ    PP,\r
+\r
+EVALXQ:        PUSHJ   PP,EVALEX       ;EVALUATE EXPRESSION\r
+       TLZN RC,-2              ;LEFT HALF EXTERNAL\r
+       TRZE    RC,-2           ;WAS AN EXTERNAL FOUND?\r
+       TRO     ER,ERRE         ;YES, FLAG ERROR\r
+       POPJ    PP,             ;RETURN\r
+\fOPDEF0:       PUSHJ   PP,GETSYM       ;GET THE FIRST SYMBOL\r
+       POPJ    PP,             ;ERROR IF INVALID SYMBOL\r
+       CAIE    C,73            ;"["?\r
+       JRST    ERRAX           ;NO, ERROR\r
+       PUSH    PP,AC0          ;STACK MNEMONIC\r
+       AOS     LITLVL          ;SHORT OUT LOCATION INCREMENT\r
+       PUSHJ   PP,STMNT        ;EVALUATE STATEMENT\r
+       SKIPGE  STPX            ;CODE STORED?\r
+       TROA    ER,ERRA         ;NO,"A" ERROR\r
+       PUSHJ   PP,DSTOW        ;GET AND DECODE VALUE\r
+       SOS     LITLVL\r
+       EXCH    AC0,0(PP)       ;EXCHANGE VALUE FOR MNEMONIC\r
+       PUSH    PP,RC           ;STACK RELOCATION\r
+       TLO     IO,DEFCRS       ;SAY WE ARE DEFINING IT\r
+       PUSHJ   PP,MSRCH        ;SEARCH SYMBOL TABLE\r
+       MOVSI   ARG,OPDF        ;NOT FOUND\r
+       POP     PP,RC           ;RESTORE VALUES\r
+       POP     PP,V\r
+       TLNE    ARG,SYNF!MACF\r
+       TRO     ER,ERRA         ;YES "A" ERROR\r
+       TRNN    ER,ERRA         ;ERROR?\r
+       PUSHJ   PP,INSERT       ;NO, INSERT/UPDATE\r
+       TLZ IO,DEFCRS           ;JUST IN CASE\r
+       PUSHJ   PP,BYPASS\r
+       JRST    STOWI           ;BE SURE STOW IS RESET\r
+\r
+\r
+DEPHA0:        MOVE    AC0,LOCO\r
+       SKIPA   RC,MODO         ;SET TO OUTPUT VALUES AND SKIP\r
+PHASE0:        PUSHJ   PP,EVALXQ       ;EVALUATE AND CHECK FOR EXTERNAL\r
+       MOVEM   AC0,LOCA        ;SET ASSEMBLY LOCATION COUNTER\r
+       MOVEM   RC,MODA\r
+       JRST    BLOCK2\r
+\fASSIGN:       JUMPAD  ERRAX           ;NO, ERROR\r
+       PUSHJ   PP,ASSIG1\r
+       TLNE    IO,IOSALL       ;SUPPRESS ALL?\r
+       JUMPN   MRP,CPOPJ       ;IF IN MACRO\r
+ASSIG7:        MOVEM   RC,ASGBLK\r
+       TRNE    RC,-2           ;EXTERNAL\r
+       HLLZS   ASGBLK          ;YES,CLEAR RELOCATION\r
+       TLNE    RC,1            ;LEFT HALF NOT RELOC?\r
+       TLNE    RC,-2           ;...\r
+       HRROS   ASGBLK          ;YES, SET FLAG\r
+       MOVEM   V,LOCBLK\r
+       POPJ    PP,\r
+\r
+ASSIG1:        PUSH    PP,AC0          ;SAVE SYMBOL\r
+       SETZB AC0,EXTPNT        ;SPECIAL CHECK FOR == WFW\r
+       PUSHJ PP,PEEK           ;IS THE NEXT ON =\r
+       CAIE    C,"="\r
+       JRST    ASSIG5\r
+       TLO     AC0,NOOUTF      ;YES, NOT OUT TO DDT WFW\r
+       PUSHJ   PP,GETCHR       ;PROCESS THE CHAR.\r
+       PUSHJ   PP,PEEK         ;CHECK FOR ==: DMN\r
+ASSIG5:        CAIE    C,":"           ;IS IT\r
+       JRST    ASSIG6          ;NO\r
+       TLO     AC0,INTF        ;MAKE INTERNAL\r
+       PUSHJ   PP,GETCHR       ;REPEAT IT\r
+ASSIG6:        MOVEM AC0,HDAS          ;STORE THESE BITS WFW\r
+       PUSHJ   PP,EVALCM       ;EVALUATE EXPRESSION\r
+       EXCH    AC0,0(PP)       ;SWAP VALUE FOR SYMBOL\r
+       PUSH    PP,RC\r
+       TRNN RC,-2              ;CHECK EXTERNAL AGREEMENT\r
+       JRST ASSIG2\r
+       HRRZS RC\r
+       HRRZ ARG,EXTPNT\r
+       CAME RC,ARG\r
+       PUSHJ   PP,QEXT         ;EXTERNAL OR RELOCATION ERROR\r
+ASSIG2:        HLRZ RC,(PP)\r
+       TRNN RC,-2\r
+       JRST ASSIG3\r
+       HLRZ ARG,EXTPNT\r
+       CAME RC,ARG\r
+       PUSHJ   PP,QEXT\r
+ASSIG3:        TLO IO,DEFCRS\r
+       PUSHJ   PP,SSRCH\r
+       MOVSI   ARG,SYMF\r
+       IOR ARG,HDAS    ;WFW\r
+       TLNE    ARG,UNDF        ;WAS IT UNDEFINED\r
+       TLZ     ARG,EXTF!PNTF   ;YES,CLEAR EXTF NOW\r
+       TLZ     ARG,UNDF!VARF   ;CANCEL UNDEFINED AND VARIABLE FLAGS\r
+       SETZM EXTPNT            ;FOR REST OF WORLD\r
+       POP     PP,RC\r
+       TRNE    ER,ERRORS-ERRQ\r
+       SETZ    RC,             ;CLEAR RELOCATION\r
+       POP     PP,V\r
+       TRNE    ER,ERRU         ;WAS VALUE UNDEFINED?\r
+       TLO     ARG,UNDF        ;YES,SO TURN UNDF ON\r
+       TLNE    ARG,TAGF!EXTF\r
+       JRST    ERRAX\r
+       JRST    INSERT\r
+\r
+\fLOC0: PUSHJ   PP,HIGHQ        ;AC0=0,0\r
+       PUSH    PP,AC0          ;SAVE MODE REQUESTED\r
+       HLRZS   AC0             ;PUT MODE IN RIGHT HALF\r
+       JUMPN   AC0,RELOC0      ;RELOC PSEUDO-OP\r
+       CAMN    AC0,MODO        ;SAME AS PRESENT MODE?\r
+       JRST    [HRRZ AC0,LOCO  ;YES\r
+               EXCH AC0,ABSLOC ;EXCH VALUES\r
+               JRST    LOC01]\r
+       HRRZ    AC0,LOCO        ;NO, GET CURRENT VALUE\r
+       MOVEM   AC0,RELLOC      ;SAVE IT\r
+       MOVE    AC0,ABSLOC      ;GET LAST RELOC VALUE\r
+LOC01: PUSHJ   PP,BYPASS       ;SKIP BLANKS\r
+       TLO     IO,IORPTC\r
+       CAIE    C,EOL           ;USE PREVIOUS VALUE IF NULL ARGUMENT\r
+       PUSHJ   PP,EVALXQ       ;GET EXPRESSION AND TEST EXTERNAL\r
+       HRRM    AC0,(PP)        ;STORE NEW VALUE\r
+       POP     PP,AC0          ;RETRIEVE STORED MODE AND VALUE\r
+LOC10: HRRZM   AC0,LOCA        ;SET ASSEMBLY LOCATION\r
+       HRRZM   AC0,LOCO        ;AND OUTPUT LOCATION\r
+       HLRZM   AC0,MODA        ;SET MODE\r
+       HLRZM   AC0,MODO\r
+       JRST    BLOCK2\r
+\r
+RELOC0:        CAMN    AC0,MODO\r
+       JRST    [HRRZ   AC0,LOCO\r
+               EXCH    AC0,RELLOC\r
+               JRST    LOC01]\r
+       HRRZ    AC0,LOCO\r
+       MOVEM   AC0,ABSLOC\r
+       MOVE    AC0,RELLOC\r
+       JRST    LOC01\r
+\r
+       SYN     CPOPJ,HISEG0\r
+       SYN     CPOPJ,TWSEG0\r
+\r
+IFN FORMSW,<\r
+ONFORM:        HRRES   HWFMT           ;ALLOW MULTI-FORMAT LISTING\r
+       POPJ    PP,\r
+OFFORM:        HRROS   HWFMT           ;HALF-WORD FORMAT ONLY\r
+       POPJ    PP,     >\r
+\r
+IFE FORMSW,<\r
+       SYN     CPOPJ,ONFORM\r
+       SYN     CPOPJ,OFFORM>\r
+\fHIGHQ:\r
+HIGHQ1:        MOVE    V,LOCO  ;GET ASSEMBLY LOCATION\r
+       SKIPN   MODO            ;IF ASSEMBLY MODE IS ABSOLUTE\r
+       JRST    [CAMLE V,ABSHI  ;RECORED ABS HIGHEST ALSO\r
+               MOVEM V,ABSHI\r
+               POPJ PP,]\r
+       CAMLE   V,HIGH          ;IS IT GREATER THAN "HIGH"?\r
+       MOVEM   V,HIGH          ;YES, REPLACE WITH LARGER VALUE\r
+       POPJ    PP,\r
+       \r
+ONML:  TLZA FR,MWLFLG          ;MULTI-WORD LITERALS OK\r
+OFFML: TLO FR,MWLFLG           ;NO\r
+       POPJ PP,\r
+\r
+OFFSYM:        SETOM   IONSYM  ;SUPRESS SYMBOL TABLE LISTING\r
+       POPJ    PP,\r
+\r
+SUPRE0:        PUSHJ PP,GETSYM ;GET A SYMBOL TO SUPRES\r
+       JRST SUPRE1     ;ERROR\r
+       PUSHJ PP,SSRCH  ;SYMBOL ONLY\r
+       JRST SUPRE1     ;GIVE ERROR MESSAGE\r
+       TLOA ARG,SUPRBT ;SET THE SUPRESS BIT\r
+SUPRE1:        TROA ER,ERRA\r
+       IORM ARG,(SX)   ;PUT BACK\r
+       JUMPCM SUPRE0   ;ANY MORE?\r
+       JRST    SUPRS1\r
+\r
+SUPRSA:        PUSHJ PP,LOOKUP ;SUPRESS ALL\r
+       MOVSI ARG,SUPRBT\r
+       IORM ARG,(SX)\r
+SUPRS1:        SETZM EXTPNT    ;JUST IN CASE WE LOOKED ONE UP\r
+       POPJ PP,\r
+\r
+XPUNG0:        JUMP1   POPOUT\r
+       PUSHJ   PP,LOOKUP\r
+       MOVE    ARG,(SX)        ;GET SYMBOL FLAGS\r
+       TLNN    ARG,INTF!ENTF!EXTF!SPTR\r
+       TLOA    ARG,SUPRBT      ;LOCAL SYMBOL,SO SUPPRESS IT\r
+       SETZM   EXTPNT\r
+       MOVEM   ARG,(SX)        ;RESTORE FLAGS\r
+       POPJ    PP,\r
+\fTITLE0:       JUMP2   REMAR0\r
+       MOVEI   SX,.TBUF\r
+       HRRI    AC0,TBUF\r
+       PUSHJ PP,SUBTT1 ;GO READ IT\r
+       MOVEM   SX,TCNT         ;SAVE COUNT OF CHARS. WRITTEN\r
+       SKIPE   UNIVSN          ;WAS IT A UNIVERSAL?\r
+       PUSHJ   PP,ADDUNV       ;YES  ADD TO TABLE\r
+       TLOE IO,IOTLSN  ;HAVE WE SEEN ONE\r
+       TRO     ER,ERRM         ;YES, COMPLAIN\r
+       POPJ    PP,             ;EXIT OTHERWISE\r
+\r
+SUBTT0:        SKIPE   SBUF            ;STORE FIRST SUBTTL ON PASS1\r
+       JUMP1   REMAR0          ;OTHERWISE EXIT IF PASS ONE\r
+       MOVEI   SX,.SBUF\r
+       HRRI    AC0,SBUF\r
+\r
+SUBTT1:        PUSHJ   PP,BYPASS       ;BYPASS LEADING BLANKS\r
+       TLO     IO,IORPTC\r
+SUBTT3:        PUSHJ   PP,CHARAC       ;GET ASCII CHARACTER\r
+       IDPB    C,AC0           ;STORE IN BLOCK\r
+       CAIGE   C,40            ;TEST FOR TERMINATOR\r
+       CAIN    C,HT\r
+       SOJG    SX,SUBTT3       ;TEST FOR BUFFER FULL\r
+       DPB     RC,AC0          ;END, STORE TERMINATOR\r
+       SOJA    SX,CPOPJ        ;COUNT NUL AND EXIT\r
+\r
+\r
+\fSYN0: PUSHJ   PP,GETSYM       ;GET THE FIRST SYMBOL\r
+       JRST    ERRAX           ;ERROR, EXIT\r
+       PUSHJ   PP,MSRCH        ;TRY FOR MACRO/OPDEF\r
+       JRST    SYN3            ;NO,0THRY FOR OPERAND\r
+SYN1:  MOVEI   SX,MSRCH        ;YES, SET FLAG\r
+SYN2:  PUSHJ   PP,SAVEXS       ;SAVE REGISTERS\r
+       JUMPNC  ERRAX           ;ERROR IF NO COMMA\r
+       PUSHJ   PP,GETSYM       ;GET THE SECOND SYMBOL\r
+       POPJ    PP,\r
+       PUSHJ   PP,@SAVBLK+SX   ;SEARCH FOR SECOND SYMBOL\r
+       JFCL\r
+       MOVE    ARG,SAVBLK+ARG  ;GET VALUES\r
+       MOVE    RC,SAVBLK+RC\r
+       MOVE    V,SAVBLK+V\r
+       TLNE    ARG,MACF        ;MACRO?\r
+       PUSHJ   PP,REFINC       ;YES, INCREMENT REFERENCE\r
+       JRST    INSERT          ;INSERT AND EXIT\r
+\r
+SYN3:  PUSHJ   PP,SSRCH        ;SEARCH FOR OPERAND\r
+       JRST    SYN4            ;NOT FOUND, TRY OP CODE\r
+       TLO     ARG,SYNF        ;FLAG AS SYNONYM\r
+       TLNE    ARG,EXTF        ;EXTERNAL?\r
+       HRRZ    V,ARG           ;YES, RELPACE WITH POINTER\r
+       MOVEI   SX,SSRCH        ;SET FLAG\r
+       TLNN ARG,VARF   ;DO NOT LET HIM SYN A VARIABLE\r
+       JRST    SYN2\r
+       JRST ERRAX\r
+\r
+SYN4:  PUSHJ   PP,OPTSCH       ;SEARCH FOR OP-CODE\r
+       JRST    ERRAX           ;NOT FOUND, EXIT WITH ERROR\r
+       MOVSI   ARG,SYNF        ;FLAG AS SYNONYM\r
+       JRST    SYN1\r
+\fPURGE0:       PUSHJ   PP,GETSYM       ;GET A MNEMONIC\r
+       JRST    [TRZ ER,ERRA    ;CLEAR ERROR\r
+               POPJ    PP,]    ;AND RETURN\r
+       PUSHJ   PP,MSRCH        ;SEARCH MACRO SYMBOL TABLE\r
+       JRST    PURGE2          ;NOT FOUND, TRY SYMBOLS\r
+       PUSH    PP,CS           ;SAVE CS AS IT MAY GET GARBAGED\r
+       TLNE    ARG,MACF        ;MACRO?\r
+       PUSHJ   PP,REFDEC       ;YES, DECREMENT THE REFERENCE\r
+       POP     PP,CS\r
+       JRST    PURGE4          ;REMOVE SYMBOL FROM TABLE\r
+\r
+PURGE2:        PUSHJ   PP,SSRCH        ;TRY OPERAND SYMBOL TABLE\r
+       JRST    PURGE5          ;NOT FOUND GET NEXT SYMBOL\r
+       TRNN RC,-2              ;CHECK COMPLEX EXTERNAL\r
+       TLNE RC,-2\r
+       TLNE ARG,SYNF\r
+       JRST    .+2\r
+       JRST PURGE3\r
+       TLNE    ARG,EXTF!UNDF   ;ERROR IF EXTERNAL OR UNDEFINED\r
+       TLNE    ARG,SYNF        ;BUT NOT A SYNONYM\r
+       JRST    PURGE4\r
+PURGE3:        TROA    ER,ERRA         ;NOT FOUND, ERROR\r
+PURGE4:        PUSHJ   PP,REMOVE       ;REMOVE FROM THE SYMBOL TABLE\r
+PURGE5:        JUMPCM  PURGE0\r
+       POPJ    PP,             ;EXIT\r
+\fOPD1: TLNE    ARG,UNDF        ;IF OPDEF IS UNDEFINED\r
+       TRO     ER,ERRO         ;GIVE "O" ERROR\r
+OPD:   MOVE    AC0,V           ;PUT VALUE IN AC0\r
+       JRST    OP\r
+IOP:   MOVSI   AC2,(POINT 9,0(PP),11)\r
+IFE FORMSW,<   TLOA    IO,IOIOPF       ;SET "IOP SEEN" AND SKIP>\r
+IFN FORMSW,<   PUSH    PP,IOFORM       ;USE I/O FORM\r
+       TLO     IO,IOIOPF       ;SET "IOP" SEEN\r
+       JRST    OP+2>\r
+OP:    MOVSI   AC2,(POINT 4,0(PP),12)\r
+IFN FORMSW,<   PUSH    PP,INFORM       ;USE INST. FORM>\r
+       PUSH    PP,RC\r
+       PUSH    PP,AC0          ;STACK CODE \r
+       PUSH    PP,AC2\r
+       PUSHJ   PP,EVALEX       ;EVALUATE FIRST EXPRESSION\r
+       POP     PP,AC2\r
+       JUMPNC  OP2\r
+OP1B:  PUSHJ   PP,GETCHR       ;GET A CHARACTER\r
+IFE FORMSW,<JUMPCM XWD5                ;PROCESS COMMA COMMA IN XWD>\r
+IFN FORMSW,<JUMPNC .+4         ;JUMP IF NO COMMA\r
+       MOVE    AC2,HWFORM      ;GET FORM WORD FOR XWD\r
+       MOVEM   AC2,-2(PP)      ;REPLACE INSTRUCTION FORM\r
+       JRST    XWD5            ;PROCESS COMMA COMMA IN XWD>\r
+       TLO     IO,IORPTC       ;NOT A COMMA,REPEAT IT\r
+       LDB     AC1,AC2\r
+       ADD     AC1,AC0\r
+       DPB     AC1,AC2\r
+       JUMPE   RC,OP1A         ;EXTERNAL OR RELOCATABLE?\r
+       PUSHJ   PP,QEXT         ;YES, DETERMINE WHICH AND FLAG AN ERROR\r
+\r
+OP1A:  PUSHJ   PP,EVALEX       ;GET ADDRESS PART\r
+OP2:   PUSHJ   PP,EVADR        ;EVALUATE STANDARD ADDRESS\r
+OP3:   POP     PP,AC0          ;PUT IN AC0\r
+       POP     PP,RC\r
+IFN FORMSW,<   POP     PP,AC1  ;GET FORM WORD>\r
+       SKIPE   (PP)            ;CAME FROM EVALCM?\r
+       JRST    STOW            ;NO,STOW CODE AND EXIT\r
+       POP     PP,AC1          ;YES,EXIT IMMEDIATELY\r
+       POPJ    PP,\r
+\r
+\fEVADR:                                ;EVALUATE STANDARD ADDRESS\r
+IFE IIISW,<TLNN        AC0,-1          ;OK IF ALL 0'S\r
+       JRST    .+4             ;IT WAS\r
+       TLC     AC0,-1          ;CHANGE ALL ONES TO ZEROS\r
+       TLCE    AC0,-1          ;OK IF ALL 1'S\r
+       TRO     ER,ERRQ         ;NO,FLAG Q ERROR>\r
+       ADD     AC0,-1(PP)      ;ADD ADDRESS PORTIONS\r
+       HLL     AC0,-1(PP)      ;GET LEFT HALF\r
+       TLZE    FR,INDSW        ;INDIRECT BIT?\r
+       TLO     AC0,(Z @)       ;YES, PUT IT IN\r
+       MOVEM   AC0,-1(PP)      ;RE-STACK CODE\r
+       ADD     RC,-2(PP)       ;UPDATE RELOCATION\r
+       HRRM    RC,-2(PP)       ;USE HALF WORD ADD\r
+       CAIE    C,10            ;"("?\r
+       POPJ    PP,             ;NO, EXIT\r
+\r
+       MOVSS   EXTPNT          ;WFW\r
+       PUSHJ   PP,EVALCM       ;EVALUATE\r
+       MOVSS   EXTPNT          ;WFW\r
+       MOVSS   V,AC0           ;SWAP HALVES\r
+IFE IIISW,<MOVSS SX,RC\r
+       IOR     SX,V            ;MERGE RELOCATION\r
+       TRNN    SX,-1           ;RIGHT HALF ZERO?\r
+       JRST    OP2A            ;YES, DO SIMPLE ADD\r
+       MOVE    ARG,RC          ;NO, SWAP RC INTO ARG>\r
+IFN IIISW,<MOVSS ARG,RC>\r
+       ADD     V,-1(PP)        ;ADD RIGHT HALVES\r
+       ADD     ARG,-2(PP)\r
+       HRRM    V,-1(PP)        ;UPDATE WITHOUT CARRY\r
+       HRRM    ARG,-2(PP)\r
+       HLLZS   AC0             ;PREPARE LEFT HALVES\r
+       HLLZS   RC\r
+IFE IIISW,<TLNE        SX,-1           ;IS LEFT HALF ZERO?\r
+       TRO     ER,ERRQ         ;NO FLAG FORMAT ERROR\r
+OP2A:  TLNE    RC,-1           ;RELOCATION FOR LEFT HALF?\r
+       PUSHJ   PP,OP2A1        ;YES,IS IT LEGAL?\r
+       TLNE    AC0,777000      ;OP CODE FIELD USED?\r
+       JRST    [EXCH AC0,-1(PP);YES, GET STORED CODE\r
+               TLNE AC0,777000 ;OP CODE FIELD BEEN SET?\r
+               TRO ER,ERRQ     ;YES, MOST LIKELY AN ERROR\r
+               EXCH AC0,-1(PP)\r
+               JRST    .+1]    ;RETURN TO ADD >\r
+       ADDM    AC0,-1(PP)      ;MERGE WITH PREVIOUS VALUE\r
+       ADDM    RC,-2(PP)\r
+       CAIE    C,11            ;")"?\r
+       JRST    ERRAX           ;NO, FLAG ERROR\r
+                               ;YES, BYPASS PARENTHESIS\r
+BYPASS:\r
+BYPAS1:        PUSHJ   PP,GETCHR\r
+BYPAS2:        JUMPE   C,.-1           ;SKIP TRAILING BLANKS\r
+       POPJ    PP,             ;EXIT\r
+\r
+\fIFE IIISW,<\r
+OP2A1: EXCH    RC,-2(PP)       ;GET STORED CODE\r
+       TLNN    RC,-1           ;OK IF ALL ZERO\r
+       JRST    OP2A2           ;OK SO RETURN\r
+       TLC     RC,-1           ;CHANGE ALL ONES TO ZEROS\r
+       TLCE    RC,-1           ;OK IF ALL ONES\r
+       TRO     ER,ERRQ         ;OTHERWISE A "Q" ERROR\r
+OP2A2: EXCH    RC,-2(PP)       ;GET RC,BACK\r
+       POPJ    PP,             ;AND RETURN>\r
+\r
+\r
+EXPRES:        HRLZ    AC0,RX          ;FUDGE FOR OCT0\r
+\r
+OCT0:  PUSH    PP,RX\r
+       HLR     RX,AC0\r
+OCT1:  PUSHJ   PP,EVALEX       ;EVALUATE\r
+IFN FORMSW,<   MOVE    AC1,HWFORM>\r
+       PUSHJ   PP,STOW         ;STOW CODE\r
+       JUMPCM  OCT1\r
+       POP     PP,RX           ;YES, RESTORE RADIX\r
+       POPJ    PP,             ;EXIT\r
+\fSIXB10:       MOVSI   RC,(POINT 6,AC0)        ;SET UP POINTER\r
+       MOVEI   AC0,0           ;CLEAR WORD\r
+\r
+SIXB20:        PUSHJ   PP,CHARL        ;GET NEXT CHARACTER\r
+       CAMN    C,SX            ;IS THIS PRESET DELIMITER?\r
+IFE FORMSW,<   JRST    ASC60           ;YES>\r
+IFN FORMSW,<\r
+       JRST    [PUSHJ  PP,BYPAS1\r
+               ANDCM   RC,STPX\r
+               MOVE    AC1,SXFORM\r
+               JUMPGE  RC,STOWZ\r
+               POPJ    PP,]>\r
+       CAIL C,"A"+40\r
+       CAILE C,"Z"+40\r
+       JRST    .+2\r
+       TRZA    C,100           ;CONVERT LOWER CASE TO SIXBIT\r
+       SUBI    C,40            ;CONVERT TO SIXBIT\r
+       JUMPL   C,ASC55         ;TEST FOR INVALID CHARACTER\r
+       IDPB    C,RC            ;NO, DEPOSIT THE BYTE\r
+       TLNE    RC,770000       ;IS THE WORD FULL?\r
+       JRST    SIXB20          ;NO, GET NEXT CHARACTER\r
+IFN FORMSW,<   MOVE    AC1,SXFORM      ;SIXBIT FORM>\r
+       PUSHJ   PP,STOWZ        ;YES, STORE\r
+       JRST    SIXB10          ;GET NEXT WORD\r
+\fASCII0:       HLLZ    SDEL,AC0        ;STORE ASCII/ASCIZ FLAG\r
+ASC10: PUSHJ   PP,CHARL        ;GET FIRST NON-BLANK\r
+       CAIE    C," "\r
+       CAIN    C,HT\r
+       JRST    ASC10\r
+       CAIG C,CR               ;CHECK FOR CRRET AS DELIM\r
+       CAIGE C,LF\r
+       SKIPA   SX,SEQNO2\r
+       JRST ERRAX\r
+       MOVEM SX,TXTSEQ         ;SAVE SEQ AND PAGE\r
+       MOVE SX,PAGENO\r
+       MOVEM SX,TXTPG\r
+       SETOM INTXT\r
+       MOVE    SX,C            ;SAVE FOR COMPARISON\r
+       JUMPG   SDEL,SIXB10     ;BRANCH IF SIXBIT\r
+\r
+ASC20: MOVSI   RC,(POINT 7,AC0)        ;SET UP POINTER\r
+       TLNE    SDEL,200000     ;THIS BIT (AND BIT0) IN FOR COMMENT\r
+       MOVSI RC,440000         ;SO NOTHING WILL BE DEPOSITED\r
+IFE IIISW,<MOVEI AC0,0         ;CLEAR WORD>\r
+IFN IIISW,<TLNE        SDEL,100000     ;ASCID?\r
+       TLZA    SDEL,400000     ;YES, ZERO ASCIZ BIT\r
+       TDZA    AC0,AC0         ;NO, ZERO WORD\r
+       MOVE    AC0,[BYTE (7) 10,10,10,10,10 (1) 1]     ;YES, A WORD FULL OF BACKSPACES>\r
+ASC30: PUSHJ   PP,CHARL        ;GET ASCII CHARACTER AND LIST\r
+       CAMN    C,SX            ;TEST FOR DELIMITER\r
+       JRST    ASC50           ;FOUND\r
+       IDPB    C,RC            ;DEPOSIT BYTE\r
+       TLNE    RC,760000       ;HAVE WE FINISHED WORD?\r
+       JRST    ASC30           ;NO,GET NEXT CHARACTER\r
+IFN FORMSW,<   MOVE    AC1,ASCIIF      ;USE ASCII FORM WORD>\r
+       PUSHJ   PP,STOWZ        ;YES, STOW IT\r
+       JRST    ASC20           ;GET NEXT WORD\r
+\r
+ASC55: TDZA    CS,CS           ;ZERO CS IN CASE NESTED\r
+ASC50: TDZA    RC,SDEL         ;TEST FOR ASCIIZ\r
+       TROA    ER,ERRA         ;SIXBIT ERROR EXIT\r
+ASC60: PUSHJ   PP,BYPAS1       ;POLISH OFF TERMINATOR\r
+       SETZM INTXT     ;WE ARE OUT OF IT\r
+IFN FORMSW,<   MOVE    AC1,ASCIIF      ;USE ASCII FORM WORD>\r
+IFN IIISW,<TLNN        SDEL,100000     ;NO EXTRA WORDS FOR ASCID>\r
+       ANDCM   RC,STPX         ;STORE AT LEAST ONE WORD\r
+       TLNN SDEL,200000        ;GET OUT WITHOUT STORING\r
+       JUMPGE  RC,STOWZ        ;STOW\r
+       POPJ    PP,             ;ASCII, NO BYTES STORED, SO EXIT\r
+\fPOINT0:\r
+IFN FORMSW,<   PUSH    PP,BPFORM       ;USE BYTE POINTER FORM WORD>\r
+       PUSH    PP,RC           ;STACK REGISTERS\r
+       PUSH    PP,AC0\r
+       PUSHJ   PP,EVAL10       ;EVALUATE RADIX 10\r
+       DPB     AC0,[POINT 6,0(PP),11]  ;STORE BYTE SIZE\r
+       JUMPNC  POINT2\r
+       PUSHJ   PP,EVALEX       ;NO, GET ADDRESS\r
+       PUSHJ   PP,EVADR        ;EVALUATE STANDARD ADDRESS\r
+       JUMPNC  POINT2\r
+       PUSHJ   PP,EVAL10       ;EVALUATE RADIX 10\r
+       TLNE    IO,NUMSW        ;IF NUMERIC\r
+       TDCA    AC0,[-1]        ;POSITION=D35-RHB\r
+POINT2:        MOVEI   AC0,0           ;OTHERWISE SET TO D36\r
+       ADDI    AC0,?D36\r
+       LSH     AC0,?D30\r
+       ADDM    AC0,0(PP)       ;UPDATE VALUE\r
+       JRST    OP3\r
+\fXWD0:\r
+IFN FORMSW,<   PUSH    PP,HWFORM       ;USE HALF WORD FORM>\r
+       PUSH    PP,RC\r
+       PUSH    PP,AC0          ;STORE ZERO ON STACK\r
+       PUSHJ   PP,EVALEX       ;EVALUATE EXPRESSION\r
+       JUMPNC  OP2\r
+XWD5:  SKIPN   (PP)            ;ANY CODE YET?\r
+       JRST    XWD10           ;NO,USE VALUE IN AC0\r
+       JUMPE   AC0,.+2         ;ANYTHING IN AC0?\r
+       TRO     ER,ERRQ         ;YES,FLAG "Q"ERROR\r
+       MOVE    AC0,(PP)        ;USE PREVIOUS VALUE\r
+       MOVE    RC,-1(PP)       ;AND RELOCATION\r
+XWD10: HRLZM   AC0,0(PP)       ;SET LEFT HALF\r
+       HRLZM   RC,-1(PP)\r
+       MOVSS EXTPNT    ;WFW\r
+       JRST    OP1A            ;EXIT THROUGH OP\r
+\r
+IOWD0: PUSHJ   PP,EVALXQ       ;EVALUATE AND TEST FOR EXTERNAL\r
+       CAIE    C,14            ;","?\r
+       JRST    [SKIPN  AC0     ;IF NZERO AND NO "," SEEN\r
+               TRO ER,ERRQ     ;TREAT AS Q ERROR\r
+IFN FORMSW,<   MOVE    AC1,HWFORM      ;USE HALF WORD FORM>\r
+               SOJA AC0,STOW]  ;NO, TREAT AS RIGHT HALF\r
+       PUSH    PP,AC0          ;YES, STACK LEFT HALF\r
+       PUSHJ   PP,EVALEX       ;WFW\r
+       SUBI    AC0,1\r
+       POP     PP,AC1          ;RETRIEVE LEFT HALF\r
+       MOVNS   AC1\r
+       HRL     AC0,AC1\r
+IFN FORMSW,<   MOVE    AC1,HWFORM      ;USE HALF WORD FORM>\r
+       JRST    STOW            ;STOW CODE AND EXIT\r
+\fBYTE0:        PUSHJ   PP,BYPASS       ;GET FIRST NON-BLANK\r
+       CAIE    C,10            ;"("?\r
+       JRST    ERRAX           ;NO, FLAG ERROR AND EXIT\r
+IFN FORMSW,<\r
+       PUSH    PP,[1]\r
+       MOVEI   AC0,0\r
+>\r
+       PUSH    PP,RC\r
+       PUSH    PP,AC0          ;INITIALIZE STACK TO ZERO\r
+       MOVSI   ARG,(POINT -1,(PP))\r
+\r
+BYTE1: PUSH    PP,ARG\r
+       PUSHJ   PP,EVAL10       ;EVALUATE RADIX 10\r
+       POP     PP,ARG\r
+       CAIG    AC0,?D36        ;TEST SIZE\r
+       JUMPGE  AC0,.+2\r
+       TRO     ER,ERRA\r
+       DPB     AC0,[POINT 6,ARG,11]    ;STORE BYTE SIZE\r
+\r
+BYTE2: IBP     ARG             ;INCREMENT BYTE\r
+       TRZN    ARG,-1          ;OVERFLOW?\r
+       JRST    BYTE3           ;NO\r
+       SETZB   AC0,RC          ;YES\r
+       EXCH    AC0,0(PP)       ;GET CURRENT VALUES\r
+       EXCH    RC,-1(PP)       ;AND STACK ZEROS\r
+IFN FORMSW,<\r
+       MOVE    AC1,HWFORM      ;USE STANDARD FORM\r
+       EXCH    AC1,-2(PP)      ;GET FORM WORD\r
+>\r
+       PUSHJ   PP,STOW         ;STOW FULL WORD\r
+\r
+BYTE3: PUSH    PP,ARG\r
+       PUSHJ   PP,EVALEX       ;COMPUTE NEXT BYTE\r
+       POP     PP,ARG\r
+       DPB     AC0,ARG         ;STORE BYTE\r
+       HLLO    AC0,ARG\r
+       DPB     RC,AC0          ;STORE RELOCATION\r
+\r
+IFN FORMSW,<\r
+       MOVEI   AC0,1\r
+       HRRI    ARG,-2\r
+       DPB     AC0,ARG         ;STORE FORM BYTE\r
+       HRRI    ARG,0\r
+>\r
+       JUMPCM  BYTE2\r
+       CAIN    C,10            ;"("?\r
+       JRST    BYTE1           ;YES, GET NEW BYTE SIZE\r
+       JRST    OP3             ;NO, EXIT\r
+\fRADX50:       PUSHJ   PP,EVALEX       ;EVALUATE CODE\r
+       JUMPN   RC,ERRAX                ;ERROR IF NOT ABSOLUTE\r
+       MOVE    ARG,AC0\r
+       JUMPNC  ERRAX\r
+       PUSHJ   PP,GETSYM       ;YES, GET SYMBOL\r
+       TRZ     ER,ERRA         ;CLEAR ERROR\r
+       PUSHJ   PP,SQOZE        ;SQUOZE SIXBIT AND ADD CODE\r
+IFN FORMSW,<   MOVE    AC1,HWFORM      ;USE STANDARD FORM>\r
+       JRST    STOW            ;STOW CODE AND EXIT\r
+\r
+\r
+SQOZE: MOVE    AC1+1,AC0       ;PUT SIXBIT IN AC1+1\r
+       MOVEI   AC0,0           ;CLEAR RESULT\r
+SQOZ1: MOVEI   AC1,0\r
+       LSHC    AC1,6           ;PUT 6-BIT CHARACTER IN AC1\r
+       LDB     AC1,[POINT 6,CSTAT(AC1),23]     ;CONVERT TO RADIX50\r
+       IMULI   AC0,50          ;MULTIPLY PREVIOUS RESULT\r
+       ADD     AC0,AC1         ;ADD NEW CHARACTER\r
+       JUMPN   AC1+1,SQOZ1     ;TEST FOR END\r
+       LSH     ARG,?D30        ;LEFT-JUSTIFY CODE\r
+       IOR     AC0,ARG         ;MERGE WITH RESULT\r
+       POPJ    PP,\r
+\fREPEAT 0,<    EXPLANATION OF ARRAY AND LVAR FEATURES\r
+\r
+WHEN A VARIABLE IS SEEN EITHER BY #, INTEGER OR ARRAY\r
+THE VALUE PORTION OF THE SYMBOL TABLE ENTRY (RH OF 2ND WORD)\r
+IS USE TO HOLD THE DESIRED SIZE-1. THE CORRECT VALUE IS\r
+ASSIGNED BY THE VAR PSEUDO OP.\r
+\r
+WHEN LVAR IS SEEN, A SEARCH OF THE SYMBOL TABLE IS MADE\r
+FOR ALL VARIABLES. THE VARF (VARIABLE) FLAG IS\r
+LEFT ON AND EXTF AND PNTF ARE TURNED ON SO THAT THE\r
+VARIABLE LOOKS LIKE AN EXTERNAL. THE POINTER\r
+(RH OF 2ND WORD OF THE SYMBOL TABLE ENTRY) POINTS\r
+TO THE HEADER BLOCK. THE HEADER BLOCK IS FORMATTED AS FOLLOWS:\r
+WORD 1:        LEFT HALF IS A POINTER TO SYMBOL TABLE FIXUP BLOCKS\r
+       RIGHT HALF IS A POINTER TO CODE FIXUP BLOCKS\r
+WORD 2:        0 THIS IS USED TO DISTINGUISH IT FROM NORMAL EXTERNALS\r
+               WHICH HAVE THE SYMBOL NAME HERE\r
+WORD 3:        THE LOCATION RELATIVE TO THE START OF THE LOW CORE\r
+               VARIABLES\r
+\r
+CORE FIXUP BLOCKS ARE SET UP BY BOUT\r
+\r
+WORD1: RH LINK TO NEXT CORE FIXUP BLOCK 0 IF END OF CHAIN\r
+       LH OFFSET. NUMBER TO BE ADDED TO SYMBOL VALUE BEFORE\r
+       FIXUP IS DONE\r
+WORD 2:        POINTER TO A FIXUP CHAIN FOR RIGHT HALVES\r
+       LEFT HALF IS RELOCATION RH IS ADDRESS\r
+WORD 3:        SAME AS WORD 2 BUT FOR LEFT HALF FIXUPS\r
+\r
+NOTE ALL THESE FIXUPS ARE CHAINED EVEN IF IN LEFT HALF.\r
+SIMILARY ALL REFERENCES TO SAY A+1 ARE CHAINED\r
+\r
+SYMBOL TABLE FIXUP BLOCKS. THESE ARE GENERATED BY SOUT\r
+AS THE SYMBOL TABLE IS PUT OUT. THESE FIXUPS ARE ADDITIVE\r
+NOT CHAINED.\r
+\r
+WORD 1:        RH LINK TO NEXT BLOCK\r
+       LH 0\r
+WORD 2:        RADIX50 FOR THE SYMBOL\r
+WORD 3:        200000,,0 IF RH FIXUP\r
+       600000,,0 IF LH FIXUP\r
+\r
+SOUT ALSO SETS UP FIXLNK. FIXLNK POINTS TO THE CHAIN OF\r
+ALL LVAR FIXUPS TO BE DONE. IT POINTS TO THE SECOND WORD\r
+\fOF A 2 WORD BLOCK\r
+\r
+WORD 1:        LINK TO 2ND WORD OF NEXT BLOCK 0 IF END\r
+WORD 2:        RH POINTER TO A HEADER BLOCK\r
+       LH GARBAGE\r
+\r
+FIXUPS ARE BLOCK TYPE 13 AS FOLLOWS\r
+WORD 1:        THE PROGRAM BREAK (AS BLOCK TYPE 5)\r
+WORD 2:        THE NUMBER OF LOCATION USED FOR VARIABLES IN THE\r
+       LOW SEGMENT+1\r
+\r
+REMAINING WORDS COME IN PAIRS AS FOLLOWS:\r
+1ST WORD       BIT 0=0 RH FIXUP\r
+               BIT 0=1 LH FIXUP\r
+               BIT 1=0 CORE FIXUP\r
+                       WORD 2 LH POINTER TO CHAIN\r
+                       WORD 2 RH VALUE\r
+               BIT 1=1 SYMBOL FIXUP\r
+                       WORD 1 RH VALUE\r
+                       WORD 2 SYMBOL\r
+>\r
+\r
+REPEAT 0,<     EXPLANATION OF ICC FEATURES\r
+\r
+       IF FORMSW IS SET NON ZERO THE FORM OF THE OCTAL LISTING OUTPUT\r
+       IS CHANGED FROM STANDARD HALF WORD FORM TO THE FOLLOWING:-\r
+\r
+       IF INSTRUCTION          BYTE 9,4,1,4,18\r
+       IF I/O INSTRUCTION      BYTE 3,7,3,1,4,18\r
+       IF BYTE POINTER         BYTE 6,6,2,4,18\r
+       IF ASCII                BYTE 7,7,7,7,7\r
+       IF SIXBIT               BYTE 6,6,6,6,6,6\r
+\r
+       ALL OTHERS ARE STANDARD HALF WORD\r
+\r
+       THIS FEATURE CAN BE OVER RIDDEN BY USE OF /H SWITCH\r
+       STANDARD HALF WORD FORM IS THEN USED.\r
+       HOWEVER BECAUSE OF EXTRA SPACING THE OUTPUT IS PUSHED MORE\r
+       TO THE RIGHT AND LONG COMMENTS OVERFLOW THE LINE\r
+       >\r
+\f; PSEUDO-END STATEMENT FOR MULTI-FILE CAPABILITY\r
+\r
+; HERE IF PRGEND (PASS 1)\r
+PSEND0:        TLO     IO,MFLSW        ;PSEND SEEN\r
+       PUSHJ   PP,END0         ;AS IF END STATEMENT\r
+       HLLZS   IO              ;CLEAR ER(RH)\r
+       SETZM   ERRCNT          ;CLEAR ERROR COUNT FOR EACH PROG.\r
+       JUMP2   PSEND2          ;DIFFERENT ON PASS2\r
+       SKIPE   UNIVSN          ;SEEN A UNIVERSAL\r
+       PUSHJ   PP,UNISYM       ;YES, STORE SYMBOLS\r
+       PUSHJ   PP,PSEND4       ;SAVE SYMBOLS, POINTERS AND TITLE\r
+       TLZ     IO,IOTLSN       ;CLEAR TITLE SEEN FLAG\r
+PSEND1:        TLZ     IO,MFLSW         ;FOR NEXT FILE\r
+       SETZM   UNISCH          ;CLEAR UNIVERSAL SEARCH TABLE\r
+       MOVE    AC0,[UNISCH,,UNISCH+1]\r
+       BLT     AC0,UNISCH+.UNIV-1\r
+       PUSHJ   PP,OUTFF        ;RESET PAGE COUNT\r
+       MOVSI   AC0,1           ;SET SO RELOC 0 WORKS\r
+       JRST    LOC10           ;FOR RELOC 0\r
+\r
+; HERE IF PRGEND (PASS 2)\r
+PSEND2:        SETZM   SBUF            ;SO SUBTTL IS NOT WRONG\r
+       PUSHJ   PP,PSEND5       ;PUT TITLE BACK\r
+       PUSHJ   PP,PSEND1       ;COMMON  CODE\r
+       JRST    PASS20          ;OUTPUT THE ENTRIES\r
+\r
+; HERE IF END (PASS 1)\r
+PSEND3:        PUSHJ   PP,PSEND4       ;SAVE LAST PROGRAM \r
+       HLRS    PRGPTR          ;REINITIALIZE POINTER\r
+       PUSHJ   PP,PSEND5       ;READ BACK FIRST PROGRAM\r
+       JRST    PASS20\r
+\f;HERE TO SAVE AND RESTORE SYMBOL TABLE, TITLE AND OTHER USEFUL LOCATIONS\r
+       XTRA==4                 ;NUMBER OF OTHER LOCATIONS TO SAVE\r
+\r
+PSEND4:        MOVE    V,FREE          ;GET  NEXT FREE LOCATION\r
+       ADDI    V,LENGTH+.TBUF/5+XTRA\r
+       CAML    V,SYMBOL        ;WILL WORST CASE FIT?\r
+       PUSHJ   PP,XCEED        ;NO, EXPAND\r
+       MOVS    V,FREE\r
+       HRR     V,PRGPTR        ;LAST PRGEND BLOCK\r
+       HLRM    V,(V)           ;LINK THIS BLOCK\r
+       SKIPN   PRGPTR          ;IF FIRST TIME\r
+       HLLZM   V,PRGPTR        ;SET LINK TO START OF CHAIN\r
+       HLRM    V,PRGPTR        ;POINTER TO IT\r
+       SETZM   @FREE           ;CLEAR LINK WORD\r
+       AOS     FREE            ;THIS LOCATION USED NOW\r
+       MOVS    AC0,SYMBOL      ;BOTTOM OF SYMBOL TABLE\r
+       HRR     AC0,FREE        ;FREE SPACE\r
+       MOVE    V,@SYMBOL       ;GET NUMBER OF SYMBOLS\r
+       ASH     V,1             ;TWO WORDS PER SYMBOL\r
+       ADDI    V,1             ;ONE MORE FOR COUNT\r
+       ADDB    V,FREE          ;END OF TABLE WHEN MOVED\r
+       BLT     AC0,(V)         ;MOVE TABLE\r
+       HRRZ    AC0,JOBREL      ;TOP OF CORE\r
+       SUBI    AC0,1\r
+       MOVEM   AC0,SYMTOP      ;FOR NEXT SYMBOL TABLE\r
+       SUBI    AC0,LENGTH      ;LENGTH OF INITIAL SYMBOLS\r
+       MOVEM   AC0,SYMBOL      ;SET POINTER TO COUNT OF SYMBOLS\r
+       HRLI    AC0,SYMNUM      ;BLT POINTER\r
+       BLT     AC0,@SYMTOP     ;SET UP INITIAL SYMBOL TABLE\r
+       PUSHJ   PP,SRCHI        ;SET UP SEARCH POINTER\r
+       MOVEI   AC0,.TBUF       ;MAX NUMBER OF CHARS. IN TITLE\r
+       SUB     AC0,TCNT        ;ACTUAL NUMBER\r
+       IDIVI   AC0,5           ;NUMBER OF WORDS\r
+       SKIPE   AC1             ;REMAINDER?\r
+       ADDI    AC0,1           ;YES\r
+       MOVEM   AC0,@FREE       ;STORE COUNT\r
+       AOS     FREE            ;THIS LOCATION USED NOW\r
+       EXCH    AC0,FREE        ;SET UP AC0 FOR BLT\r
+       ADDM    AC0,FREE        ;WILL BE AFTER TITLE MOVES\r
+       HRLI    AC0,TBUF        ;BLT POINTER\r
+       BLT     AC0,@FREE       ;MOVE TITLE\r
+       MOVE    AC2,LITHDX      ;POINTER TO LIT INFO.\r
+       MOVE    AC0,-1(AC2)     ;SIZE OF PASS1 LOCO\r
+       PUSHJ   PP,STORIT       ;SAVE IT IN SYMBOL TABLE\r
+       MOVE    AC2,VARHDX      ;SAME FOR VARS\r
+       MOVE    AC0,-1(AC2)\r
+       PUSHJ   PP,STORIT\r
+PSEND6:        MOVE    AC0,FREE        ;GET NEXT FREE LOCATION\r
+       SUBI    AC0,1           ;LAST ONE USED\r
+       HRRZ    V,PRGPTR        ;POINTER TO START OF DATA BLOCK\r
+       HRLM    AC0,(V)         ;LINK TO END OF BLOCK\r
+       POPJ    PP,             ;RETURN\r
+\r
+\fPSENDX:       PUSHJ   PP,XCEED        ;NEED TO EXPAND CORE FIRST\r
+PSEND5:        HRRZ    AC0,JOBREL      ;GET TOP OF CORE\r
+       SUBI    AC0,1\r
+       MOVEM   AC0,SYMTOP      ;TOP OF NEW SYMBOL TABLE\r
+       HRRZ    V,PRGPTR        ;ADDRESS OF THIS BLOCK\r
+       JUMPE   V,PSNDER        ;ERROR LINK NOT SET UP\r
+       MOVE    AC1,(V)         ;NEXT LINK\r
+       MOVE    V,1(V)          ;GET ITS SYMBOL COUNT\r
+       ASH     V,1             ;NUMBER OF WORDS\r
+       ADDI    V,1             ;PLUS ONE FOR COUNT\r
+       SUBI    AC0,(V)         ;START OF NEW SYMBOL TABLE\r
+       CAMG    AC0,FREE        ;WILL IT FIT\r
+       JRST    PSENDX          ;NO, NEED TO EXPAND AND RESET AC0\r
+       ADD     V,PRGPTR        ;POINT TO END OF SYMBOL TABLE\r
+       MOVEI   V,1(V)          ;THEN TO BEG OF TITLE\r
+       MOVEM   AC0,SYMBOL      ;BOTTOM OF NEW TABLE\r
+       HRL     AC0,PRGPTR      ;ADDRESS OF FIRST WORD OF BLOCK\r
+       ADD     AC0,[1,,0]      ;MAKE BLT POINTER\r
+       HRRM    AC1,PRGPTR      ;POINT TO NEXT BLOCK\r
+       BLT     AC0,@SYMTOP     ;MOVE TABLE\r
+       PUSHJ   PP,SRCHI        ;SET UP POINTER\r
+       MOVE    AC1,(V)         ;NUMBER OF WORDS OF TITLE\r
+       MOVEI   AC0,1(V)        ;START OF STORED TITLE\r
+       ADD     V,AC1           ;INCREMENT PAST TITLE\r
+       ADDI    AC1,TBUF-1      ;END OF TITLE\r
+       HRLI    AC0,TBUF        ;WHERE TO PUT IT\r
+       MOVSS   AC0             ;BLT POINTER\r
+       BLT     AC0,(AC1)       ;MOVE TITLE\r
+       TLO     IO,IOTLSN       ;SET AS IF TITLE SEEN\r
+       MOVE    AC2,LITHDX      ;INVERSE OF ABOVE\r
+       PUSHJ   PP,GETIT\r
+       MOVEM   AC0,-1(AC2)\r
+       MOVE    AC2,VARHDX      ;SAME FOR VARS\r
+       PUSHJ   PP,GETIT\r
+       MOVEM   AC0,-1(AC2)\r
+       POPJ    PP,\r
+\r
+STORIT:        MOVEM   AC0,@FREE       ;STORE IT IN DATA BLOCK\r
+       AOS     FREE            ;ADVANCE POINTER\r
+       POPJ    PP,\r
+\r
+GETIT: MOVE    AC0,1(V)        ;FILL AC0 OUT OF PRGEND BLOCK\r
+       AOJA    V,CPOPJ         ;INCREMENT AND RETURN\r
+\r
+PSNDER:        HRROI   RC,[SIXBIT      /PRGEND ERROR @/]\r
+       JRST    ERRFIN\r
+\f;MULTIPLE SYMBOL TABLE FEATURE PSEUDO-OPS\r
+\r
+UNIV0: JUMP2   TITLE0          ;DO IT ALL ON PASS 1\r
+       HRRZ    SX,UNIVNO       ;GET NUMBER OF UNIVERSALS SEEN\r
+       CAIL    SX,.UNIV        ;ALLOW ONE MORE?\r
+       JRST    UNVERR          ;NO, GIVE FATAL ERROR\r
+       AOS     UNIVNO          ;ONE MORE NOW\r
+       SETOM   UNIVSN          ;AND SET SEEN A UNIVERSAL\r
+       JRST    TITLE0          ;CONTINUE AS IF TITLE\r
+\r
+\r
+ADDUNV:        PUSH    PP,RC           ;AN AC TO USE\r
+       PUSHJ   PP,NOUT         ;CONVERT TO SIXBIT\r
+       HRRZ    RC,UNIVNO       ;GET ENTRY INDEX\r
+       MOVEM   AC0,UNITBL(RC)  ;STORE SIXBIT NAME IN TABLE\r
+       HRRZS   UNIVSN          ;ONLY DO IT ONCE\r
+       POP     PP,RC           ;RESTORE RC\r
+       POPJ    PP,             ;AND RETURN\r
+\r
+UNVERR:        HRROI   RC,[SIXBIT /TOO MANY UNIVERSALS@/]\r
+       JRST    ERRFIN\r
+\r
+UNISYM:        HRRZ    AC0,FREE        ;GET HIGHEST FREE LOCATION\r
+       MOVEM   AC0,JOBFF       ;INTO JOBFF\r
+       PUSHJ   PP,SUPRSA       ;TURN ON SUPPRESS BIT\r
+       PUSH    PP,SYMBOL       ;NEED TO SAVE INCASE PRGEND\r
+       MOVE    AC0,SYMTOP      ;TOP OF TABLE\r
+       SUB     AC0,SYMBOL      ;GET LENGTH OF TABLE\r
+       HRL     ARG,SYMBOL      ;BOTTOM OF TABLE\r
+       HRR     ARG,JOBFF       ;WHERE TO GO\r
+       HRRZ    RC,UNIVNO       ;GET TABLE INDEX\r
+       HRRM    ARG,SYMBOL      ;WILL BE THERE SOON\r
+       HRRZM   ARG,UNIPTR(RC)  ;STORE IN CORRESPONDING PLACE\r
+       ADDB    AC0,JOBFF       ;WHERE TO END\r
+       HRLM    AC0,UNIPTR(RC)  ;SAVE NEW SYMTOP\r
+       BLT     ARG,@JOBFF      ;MOVE TABLE\r
+       HRRZM   AC0,UNITOP      ;SAVE TOP OF TABLES+1\r
+       CAMLE   AC0,MACSIZ      ;IN CASE OVER A K BOUND\r
+       MOVEM   AC0,MACSIZ      ;DON'T REDUCE SO FAR NOW\r
+       MOVEM   AC0,FREE        ;JUST IN CASE IN MACRO\r
+       MOVE    AC0,SRCHX       ;SAVE OLD SEARCH POINTER\r
+       PUSHJ   PP,SRCHI        ;GET SEARCH POINTER\r
+       EXCH    AC0,SRCHX\r
+       MOVEM   AC0,UNISHX(RC)  ;SAVE IT\r
+       SETZM   UNIVSN          ;CLEAR FLAG INCASE PRGEND\r
+       POP     PP,SYMBOL       ;RESTORE OLD VALUE\r
+       POPJ    PP,             ;RETURN\r
+\r
+\fSERCH0:       PUSHJ   PP,GETSYM       ;GET A SYMBOL\r
+       JRST    ERRAX           ;ERROR IF NOT VALID\r
+       MOVEI   RC,1            ;START AT ENTRY ONE\r
+       CAIL    RC,.UNIV        ;CHECK FOR CONSISTENCY ERROR\r
+       JRST    SCHERR          ;CANNOT FIND THIS ONE\r
+       CAME    AC0,UNITBL(RC)  ;LOOK FOR MATCH\r
+       AOJA    RC,.-3          ;NOT FOUND YET\r
+       MOVE    AC0,RC          ;STORE TABLE ENTRY NUMBER\r
+       MOVEI   RC,1            ;START AT ENTRY ONE\r
+       CAIL    RC,.UNIV        ;CHECK FOR CONSISTENCY ERROR\r
+       JRST    SCHERR          ;SHOULD NEVER HAPPEN!!\r
+       SKIPE   UNISCH(RC)      ;LOOK FOR AN EMPTY SLOT\r
+       AOJA    RC,.-3          ;NOT FOUND YET\r
+       MOVEM   AC0,UNISCH(RC)  ;STORE INDEX IN TABLE\r
+       JUMPCM  SERCH0          ;LOOK FOR MORE NAMES\r
+       POPJ    PP,             ;FINISHED\r
+\r
+SCHERR:        MOVSI   RC,[SIXBIT /CANNOT FIND UNIVERSAL@/]\r
+       JRST    ERRFIN          ;NAME IN AC0\r
+\r
+;MESSAGE FOR CASE WHERE FILES AFTER UNIVERSAL USED MORE BUFFER SPACE THAN FIRST UNIVERSAL\r
+UNIERR:        HRROI   RC,[SIXBIT /UNIVERSAL PROGRAM(S) MUST HAVE SAME OUTPUT SPECIFICATION AS OTHER FILES@/]\r
+       JRST    ERRFIN\r
+\fSUBTTL        MACRO/REPEAT HANDLERS\r
+\r
+REPEA0:        PUSHJ   PP,EVALXQ       ;EVALUATE REPEAT EXP, EXTERNS ARE ILL.\r
+       JUMPNC  ERRAX\r
+\r
+REPEA1:        JUMPLE  AC0,REPZ        ;PASS THE EXP., DONT PROCESS\r
+       SOJE    AC0,REPO        ;REPEAT ONCE\r
+REPEA2:        PUSHJ   PP,GCHARQ       ;GET STARTING "<"\r
+       CAIE    C,"<"\r
+       JRST    REPEA2\r
+       PUSHJ   PP,SKELI1       ;INITIALIZE SKELETON\r
+       PUSH    MP,REPEXP\r
+       MOVEM   AC0,REPEXP\r
+       PUSH    MP,REPPNT       ;STACK PREVIOUS REPEAT POINTER\r
+       MOVEM   ARG,REPPNT      ;STORE NEW POINTER\r
+       TDZA    SDEL,SDEL       ;YES, INITIALIZE BRACKET COUNT AND SKIP\r
+\r
+REPEA4:        PUSHJ   PP,WCHARQ       ;WRITE A CHARACTER\r
+       PUSHJ   PP,GCHARQ       ;GET A CHARACTER\r
+       CAIN    C,"<"           ;"<"?\r
+       AOJA    SDEL,REPEA4     ;YES, INCREMENT AND WRITE\r
+       CAIE    C,">"           ;">"?\r
+       JRST    REPEA4          ;NO, WRITE THE CHARACTER\r
+       SOJGE   SDEL,REPEA4     ;YES, WRITE IF NON-NEGATIVE COUNT\r
+       MOVSI   CS,(BYTE (7) 177,3)     ;SET "REPEAT" END\r
+       PUSHJ   PP,WWRXE        ;WRITE END\r
+       SKIPN   LITLVL          ;LITERAL MIGHT END ON LINE\r
+       SKIPE   MACLVL          ;IF IN MACRO DARE NOT PROCESS\r
+       JRST    .+3             ;REST OF LINE SINCE MACRO MIGHT END ON IT\r
+       PUSHJ   PP,BYPASS       ;BYPASS\r
+       PUSHJ   PP,STOUTS       ;POLISH OF LINE BEFORE PROCESSING REPEAT\r
+       PUSH    MP,MRP          ;STACK PREVIOUS READ POINTER\r
+       PUSH    MP,RCOUNT       ;SAVE WORD COUNT\r
+       HRRZ    MRP,REPPNT      ;SET UP READ POINTER\r
+       SKIPN   MACLVL          ;IF IN MACRO GIVE CR-LF FIRST\r
+       SKIPE   LITLVL          ;SAME FOR LITERAL\r
+       JRST    REPEA7\r
+       AOJA    MRP,POPOUT      ;BYPASS ARG COUNT\r
+\r
+REPEA7:        HRRZ    MRP,REPPNT      ;SET UP READ POINTER\r
+       ADDI    MRP,1           ;BYPASS ARG COUNT\r
+REPEA8:        MOVEI   C,CR\r
+       JRST    RSW1\r
+\r
+REPEND:        SOSL    REPEXP\r
+       JRST    REPEA7\r
+       HRRZ    V,REPPNT        ;GET START OF TREE\r
+       PUSHJ   PP,REFDEC       ;DECREMENT REFERENCE\r
+       POP     MP,RCOUNT\r
+       POP     MP,MRP\r
+       POP     MP,REPPNT\r
+       POP     MP,REPEXP\r
+       SKIPN   LITLVL          ;IF IN LITERAL OR\r
+       SKIPE   MACLVL          ;IF IN MACRO\r
+       JRST    RSW0            ;FINISH OF LINE NOW\r
+       JRST    REPEA8\r
+\r
+\fREPZ: MOVE SDEL,SEQNO2        ;SAVE IN CASE OF END OF FILE\r
+       MOVEM SDEL,REPSEQ\r
+       MOVE SDEL,PAGENO\r
+       MOVEM SDEL,REPPG\r
+       SETOM INREP\r
+       MOVEI SDEL,0    ;SET COUNT\r
+REPZ1: PUSHJ   PP,GCHAR        ;GET NEXT CHARACTER\r
+       CAIN    C,"<"           ;"<"?\r
+       AOJA    SDEL,REPZ1      ;YES, INCREMENT COUNT\r
+       CAIN    C,">"           ;">"?\r
+       SOJLE   SDEL,REPZ2      ;YES, EXIT IF MATCHING\r
+       JRST    REPZ1           ;NO, RECYCLE\r
+REPZ2: SETZM   INREP   ;FLAG OUT OF IT\r
+       SETZM   INCND   ;AND CONDITIONAL ALSO\r
+       JRST    STMNT   ;AND EXIT\r
+\r
+REPO:  PUSHJ   PP,GCHAR        ;GET "<"\r
+       CAIE    C,"<"\r
+       JRST    REPO\r
+       SKIPE   RPOLVL          ;ARE WE NESTED?\r
+       AOS     RPOLVL          ;YES, DECREMENT CURRENT\r
+       PUSH    MP,RPOLVL\r
+       SETOM   RPOLVL\r
+       JRST    STMNT\r
+\r
+REPO1: CAIN    C,"<"\r
+       SOS     RPOLVL\r
+       CAIN    C,">"\r
+       AOSE    RPOLVL\r
+       JRST    RSW2\r
+       POP     MP,RPOLVL\r
+       PUSHJ   PP,RSW2\r
+       JRST    RSW0\r
+\fDEFIN0:       PUSHJ   PP,GETSYM       ;GET MACRO NAME\r
+       JRST    ERRAX           ;EXIT ON ERROR\r
+       MOVEM   PP,PPTMP1       ;SAVE POINTER\r
+       MOVEM   AC0,PPTMP2      ;SAVE NAME\r
+       TLO     IO,IORPTC\r
+       MOVE SX,SEQNO2  ;SAVE IN CASE OF EOF\r
+       MOVEM SX,DEFSEQ\r
+       MOVE SX,PAGENO\r
+       MOVEM SX,DEFPG\r
+       SETOM INDEF     ;AND FLAG IN DEFINE\r
+       SYN     .TEMP,COMSW     ;SAVE SPACE\r
+       SETZB   SX,COMSW        ;SET ARGUMENT AND REFERENCE COUNT AND COMMENT SWITCH\r
+DEF02: PUSHJ   PP,GCHAR        ;SEARCH FOR "(" OR "<"\r
+       CAIG    C,FF            ;SEARCH FOR END OF LINE\r
+       CAIGE   C,LF            ;LF,VT, OR FF\r
+       JRST    .+2             ;WASN'T ANY OF THEM\r
+       SETZM   COMSW           ;RESET COMMENT SWITCH\r
+       CAIN    C,";"           ;COMMENT?\r
+       SETOM   COMSW           ;YES, SET COMMENT SWITCH\r
+       SKIPE   COMSW           ;INSIDE A COMMENT?\r
+       JRST    DEF02           ;YES, IGNORE CHARACTER\r
+       CAIN    C,"<"           ;"<"?\r
+       JRST    DEF20           ;YES\r
+       CAIE    C,"("           ;"("?\r
+       JRST    DEF02           ;NO\r
+DEF10: PUSHJ   PP,GETSYM       ;YES, GET DUMMY SYMBOL\r
+       TRO     ER,ERRA         ;FLAG ERROR\r
+       ADDI    SX,1            ;INCREMENT ARG COUNT\r
+       PUSH    PP,AC0          ;STACK IT\r
+       CAIN    C,'<'           ;A DEFAULT ARGUMENT COMING UP?\r
+       JRST    DEF80           ;YES, STORE IT AWAY\r
+       CAIE    C,11            ;")"?\r
+       JRST    DEF10           ;NO, GET NEXT DUMMY SYMBOL\r
+DEF12: PUSHJ   PP,GCHAR\r
+       CAIE    C,"<"           ;"<"?\r
+       JRST    DEF12           ;NO\r
+DEF20: PUSH    PP,[0]          ;YES, MARK THE LIST\r
+       LSH     SX,9            ;SHIFT ARG COUNT\r
+       AOS     ARG,SX\r
+       PUSHJ   PP,SKELI        ;INITIALIZE MACRO SKELETON\r
+       MOVE    AC0,PPTMP2      ;GET NAME\r
+       TLO IO,DEFCRS\r
+       PUSHJ   PP,MSRCH        ;SEARCH THE TABLE\r
+       JRST    DEF24           ;NOT FOUND\r
+       TLNN    ARG,MACF        ;FOUND, IS IT A MACRO?\r
+       TROA    ER,ERRX         ;NO, FLAG ERROR AND SKIP\r
+       PUSHJ   PP,REFDEC       ;YES, DECREMENT THE REFERENCE\r
+DEF24: HRRZ    V,WWRXX         ;GET START OF TREE\r
+       SKIPN   .TEMP           ;ANY DEFAULT ARGUMENTS TO TAKE CARE OF?\r
+       JRST    DEF25           ;NO\r
+       HRRZ    C,1(V)          ;GET SHIFTED ARG COUNT\r
+       LSH     C,-9            ;GET ARG COUNT BACK\r
+       ADDI    C,1             ;ONE MORE FOR TERMINAL ZERO\r
+       ADD     C,.TEMP         ;NUMBER OF ITEMS IN STACK\r
+       HRLS    C               ;MAKE XWD\r
+       SUB     PP,C            ;BACK UP STACK\r
+       MOVE    SDEL,.TEMP      ;NUMBER OF WORDS NEEDED\r
+       ADDB    SDEL,FREE       ;FROM FREE CORE\r
+       CAML    SDEL,SYMBOL     ;MORE CORE NEEDED\r
+       PUSHJ   PP,XCEEDS       ;YES, TRY TO GET IT\r
+       SUB     SDEL,.TEMP      ;FORM POINTER\r
+       HRLM    SDEL,1(V)       ;STORE IT WITH ARG COUNT IN MACRO\r
+       SUBI    SDEL,1          ;TO USE FOR PUSHING POINTER INTO STORAGE\r
+       MOVEI   C,1(PP)         ;POINT TO START OF STACK\r
+DEF26: MOVE    ARG,(C)         ;GET AN ITEM OFF STACK\r
+       TLNN    ARG,-40         ;A POINTER?\r
+       JUMPN   ARG,[PUSH SDEL,ARG      ;YES, STORE IT\r
+\f              AOJA    C,DEF26]        ;GET NEXT\r
+       PUSH    PP,ARG          ;RESTACK ARGUMENT\r
+       SKIPE   ARG             ;FINISHED IF ZERO\r
+       AOJA    C,DEF26 ;GET NEXT\r
+       PUSH    SDEL,ARG        ;STORE ZERO IN DEFAULT LIST ALSO\r
+\fDEF25:        MOVSI   ARG,MACF\r
+       MOVEM   PP,PPTMP2       ;STORE TEMP STORAGE POINTER\r
+       PUSHJ   PP,INSERT       ;INSERT/UPDATE\r
+       TLZ IO,DEFCRS   ;JUST IN CASE\r
+       SETZM   ARGF            ;NO ARGUMENT SEEN\r
+       SETZM   SQFLG           ;AND NO ' SEEN\r
+       TDZA    SDEL,SDEL       ;CLEAR BRACKET COUNT\r
+DEF30: PUSHJ   PP,WCHAR        ;WRITE CHARACTER\r
+DEF31: PUSHJ   PP,GCHAR        ;GET A CHARACTER\r
+DEF32: MOVE    CS,C            ;GET A COPY\r
+       CAIN    C,";"           ;IS IT A COMMENT\r
+       JRST    CPEEK           ;YES CHECK FOR ;;\r
+DEF33: CAIG CS,"Z"+40          ;CONVERT LOWER CASE\r
+       CAIGE CS,"A"+40\r
+       JRST    .+2\r
+       SUBI CS,40\r
+\f      CAIGE CS,40             ;TEST FOR CONTROL CHAR.\r
+       JRST    [SKIPN  SQFLG   ;HAS SINGLE QUOTE BEEN SEEN?\r
+               JRST    DEF30   ;NO, OUTPUT THIS CHAR.\r
+               PUSH    PP,C    ;YES, SAVE CURRENT CHAR\r
+               MOVEI   C,47    ;SET UP QUOTE\r
+               PUSHJ   PP,WCHAR;WRITE IT\r
+               POP     PP,C    ;GET BACK CURRENT CHAR.\r
+               SETZM   SQFLG   ;RESET FLAG\r
+               JRST    DEF30]  ;AND CONTINUE \r
+       CAILE CS,77+40\r
+       JRST    DEF30           ;TEST FOR SPECIAL\r
+       MOVE    CS,CSTAT-40(CS) ;GET STATUS BITS\r
+\f      TLNE    CS,6            ;ALPHA-NUMERIC?\r
+       JRST    DEF40           ;YES\r
+       SKIPN   SQFLG           ;WAS A ' SEEN?\r
+       JRST    DEF36           ;NO, PROCESH\r
+       PUSH    PP,C            ;YES, SAVE CURRENT CHARACTER\r
+       MOVEI   C,47            ;AND PUT IN A '\r
+       PUSHJ   PP,WCHAR        ;...\r
+       POP     PP,C            ;RESTORE CURRENT CHARACTER\r
+       SETZM   SQFLG           ;AND RESET FLAG\r
+DEF36: CAIE    C,47            ;IS THIS A '?\r
+       JRST    DEF35           ;NOPE\r
+       SKIPN   ARGF            ;YES, WAS LAST THING SEEN AN ARG?\r
+       SETOM   SQFLG           ;IF NOT, SET SNGL QUOT FLAG\r
+       SETZM   ARGF            ;BUT NOT ARGUMENT IN ANY CASE\r
+       JRST    DEF31           ;GO GET NEXT CHARACTER\r
+\fDEF35:        SETZM   ARGF            ;THIS IS NOT AN ARGUMENT\r
+       CAIN    C,"<"           ;"<"?\r
+       AOJA    SDEL,DEF30      ;YES, INCREMENT COUNT AND WRITE\r
+       CAIN    C,">"           ;">"?\r
+       SOJL    SDEL,DEF70      ;YES, TEST FOR END\r
+       JRST    DEF30           ;NO, WRITE IT\r
+\r
+CPEEK: TLNN    IO,IOPALL       ;IF LALL IS ON\r
+       JRST    DEF33           ;JUST RETURN\r
+       PUSHJ   PP,PEEK         ;LOOK AT NEXT CHAR.\r
+       CAIN    C,";"           ;IS IT ;;?\r
+       JRST    CPEEK1          ;YES\r
+       MOVE    C,CS            ;RESTORE C\r
+       JRST    DEF33           ;AND RETURN\r
+\r
+CPEEK1:        PUSHJ   PP,GCHAR        ;GET THE CHAR.\r
+       CAIE    C,">"           ;RETURN IF END OF MACRO\r
+       CAIG    C,CR            ;IS CHAR ONE OF\r
+       CAIGE   C,LF            ;LF,VT,FF,CR\r
+       JRST    CPEEK1          ;NO,SO GET NEXT CHAR.\r
+       JRST    DEF32           ;YES,RETURN AND STORE\r
+\fDEF40:        MOVEI   AC0,0           ;CLEAR ATOM\r
+       MOVSI   AC1,(POINT 6,AC0)       ;SET POINTER\r
+DEF42: PUSH    PP,C            ;STACK CHARACTER\r
+       TLNE    AC1,770000      ;HAVE WE STORED 6?\r
+       IDPB    CS,AC1          ;NO, STORE IN ATOM\r
+       PUSHJ   PP,GCHAR        ;GET NEXT CHARACTER\r
+       MOVE    CS,C\r
+       CAIG CS,"Z"+40\r
+       CAIGE CS,"A"+40\r
+       JRST    .+2\r
+       SUBI CS,40              ;CONVERT LOWER TO UPPER\r
+       CAIL CS,40\r
+       CAILE CS,77+40\r
+       JRST    DEF44           ;TEST SPECIAL\r
+       MOVE    CS,CSTAT-40(CS) ;GET STATUS\r
+       TLNE    CS,6            ;ALPHA-NUMERIC?\r
+       JRST    DEF42           ;YES, GET ANOTHER\r
+DEF44: PUSH    PP,[0]          ;NO, MARK THE LIST\r
+       MOVE    SX,PPTMP1       ;GET POINTER TO TOP\r
+\r
+DEF46: SKIPN   1(SX)           ;END OF LIST?\r
+       JRST    DEF50           ;YES\r
+       CAME    AC0,1(SX)       ;NO, DO THEY COMPARE?\r
+       AOJA    SX,DEF46        ;NO, TRY AGAIN\r
+       SUB     SX,PPTMP1       ;YES, GET DUMMY SYMBOL NUMBER\r
+       LSH SX,4\r
+       MOVSI   CS,<(BYTE (7) 177,101)>(SX)     ;SET ESCAPE CODE MACEND\r
+       LSH     AC0,-?D30\r
+       CAIN    AC0,5           ;"%"?\r
+       TLO     CS,1000         ;YES, SET CRESYM FLAG\r
+       PUSHJ   PP,WWORD        ;WRITE THE WORD\r
+       SETOM ARGF              ;SET ARGUMENT SEEN FLAG\r
+       SETZM SQFLG             ;AND IGNORE ANY ' WAITING TO GET INTO STRING\r
+DEF48: MOVE    PP,PPTMP2       ;RESET PUSHDOWN POINTER\r
+       TLO     IO,IORPTC       ;ECHO LAST CHARACTER\r
+       JRST    DEF31           ;RECYCLE\r
+\r
+DEF50:\r
+       SKIPN   SQFLG           ;HAVE WE SEEN A '?\r
+       JRST    DEF51           ;NOPE\r
+       MOVEI   C,47            ;YES, PUT IT IN\r
+       PUSHJ   PP,WCHAR        ;...\r
+       SETZM   SQFLG           ;AND CLEAR FLAG\r
+DEF51: MOVE    C,2(SX)         ;GET CHARACTER\r
+       JUMPE   C,DEF48         ;CLEAN UP IF END\r
+       PUSHJ   PP,WCHAR        ;WRITE THE CHARACTER\r
+       AOJA    SX,DEF51        ;GET NEXT\r
+\r
+DEF70: MOVE    PP,PPTMP1       ;RESTORE PUSHDOWN POINTER\r
+       MOVSI   CS,(BYTE (7) 177,1)\r
+       PUSHJ   PP,WWRXE        ;WRITE END\r
+       SETZM INDEF     ;OUT OF IT\r
+       JRST    BYPASS\r
+\f; HERE TO STORE DEFAULT ARGUMENTS\r
+\r
+DEF80: AOS     .TEMP           ;COUNT ONE MORE\r
+       PUSHJ   PP,SKELI1       ;INITIALIZE SKELETON\r
+       HRL     V,SX            ;SYMBOL NUMBER\r
+       PUSH    PP,V            ;STORE POINTER\r
+       TDZA    SDEL,SDEL       ;ZERO BRACKET COUNT\r
+DEF81: PUSHJ   PP,WCHARQ       ;WRITE A CHARACTER\r
+       PUSHJ   PP,GCHARQ       ;GET A CHARACTER\r
+       CAIN    C,"<"           ;ANOTHER "<"?\r
+       AOJA    SDEL,DEF81      ;YES, INCREMENT AND WRITE\r
+       CAIE    C,">"           ;CLOSING ANGLE?\r
+       JRST    DEF81           ;NO, JUST WRITE THE CHAR.\r
+       SOJGE   SDEL,DEF81      ;YES, WRITE IF NOT END\r
+       MOVSI   CS,(BYTE (7) 177,2)\r
+       PUSHJ   PP,WWRXE        ;WRITE END OF DUMMY ARGUMENT\r
+       PUSHJ   PP,GCHAR        ;READ AT NEXT CHAR.\r
+       CAIE    C,")"           ;END OF ARGUMENT LIST?\r
+       JRST    DEF10           ;NO, GET NEXT SYMBOL\r
+       JRST    DEF12           ;YES, LOOK FOR "<"\r
+\fSUBTTL        MACRO CALL PROCESSOR\r
+CALLM: SKIPGE  MACENL          ;ARE WE TRYING TO RE-ENTER?\r
+       JRST    ERRAX           ;YES, BOMB OUT WITH ERROR\r
+       HRROS   MACENL          ;FLAG "CALLM IN PROGRESS"\r
+       EXCH    MP,RP\r
+       PUSH    MP,V            ;STACK FOR REFDEC\r
+       EXCH    MP,RP\r
+       MOVEM   AC0,CALNAM      ;SAVE MACRO NAME INCASE OF ERROR\r
+       MOVE SDEL,SEQNO2        ;SAVE IN CASE OF EOF\r
+       MOVEM SDEL,CALSEQ\r
+       MOVE SDEL,PAGENO\r
+       MOVEM SDEL,CALPG\r
+       ADDI    V,1             ;POINT TO DUMMY SYMBOL COUNT\r
+       AOS     SDEL,0(V)       ;INCREMENT ARG COUNT\r
+       HLLZM   SDEL,.TEMP      ;DEFAULT ARG POINTER IF NON-ZERO\r
+       LSHC    SDEL,-?D<9+36>  ;ZERO SDEL, GET ARG COUNT IN SX\r
+       ANDI    SX,777          ;MASK\r
+       SKIPE   .TEMP           ;IF AT LEAST ONE DEFAULT ARG\r
+       HRRM    SX,.TEMP        ;STORE COUNT OF ARGS\r
+       PUSH    PP,V            ;STACK FOR MRP\r
+       PUSH    PP,RP           ;STACK FOR MACPNT\r
+       JUMPE   SX,MAC20        ;TEST FOR NO ARGS\r
+       PUSHJ   PP,CHARAC\r
+       CAIE    C,"("           ;"("\r
+       TROA    SDEL,-1         ;NO, FUDGE PAREN COUNT AND SKIP\r
+\r
+MAC10: PUSHJ   PP,GCHAR        ;GET A CHARACTER, LOOK FOR AN ARG\r
+       CAIG C,CR\r
+       CAIGE C,LF\r
+       CAIN    C,";"           ;";"?\r
+       JRST    MAC21           ;YES, END OF ARGUMENT STRING\r
+\r
+       PUSHJ   PP,SKELI1       ;NO, INITIALIZE SKELETON\r
+       CAIN    C,"<"           ;"<"?\r
+       JRST    MAC30           ;YES, PROCESS AS SPECIAL\r
+       CAIE C,176\r
+       CAIN    C,134           ;"\"\r
+       JRST    MAC40           ;YES, PROCESS SYMBOL\r
+\r
+MAC14: CAIN    C,","           ;","?\r
+       JRST    MAC16           ;YES; NULL SYMBOL\r
+       CAIN    C,"("           ;"("?\r
+       ADDI    SDEL,1          ;YES, INCREMENT COUNT\r
+       CAIN    C,")"           ;")"?\r
+       SOJL    SDEL,MAC16      ;YES, TEST FOR END\r
+       PUSHJ   PP,WCHAR        ;WRITE INTO SKELETON\r
+MAC14A:        PUSHJ   PP,CHARAC       ;GET NEXT CHARACTER\r
+       CAIG C,CR\r
+       CAIGE C,LF\r
+       JRST    .+2\r
+       JRST    MAC15           ;TEST FOR END OF LINE\r
+       CAIE    C,";"           ;";"?\r
+       JRST    MAC14           ;YES, END OF LINE\r
+\r
+MAC15: TLO     IO,IORPTC\r
+MAC16: MOVSI   CS,(BYTE (7) 177,2)\r
+       PUSHJ   PP,WWRXE        ;WRITE END\r
+       EXCH    MP,RP\r
+       PUSH    MP,WWRXX\r
+       EXCH    MP,RP\r
+       SOJLE   SX,MAC20        ;BRANCH IF NO MORE ARGS\r
+       JUMPGE  SDEL,MAC10      ;HAVEN'T SEEN TERMINAL ")" YET\r
+\fMAC20:        TLZN    IO,IORPTC\r
+       PUSHJ   PP,CHARAC\r
+MAC21: EXCH    MP,RP\r
+       JUMPE   SX,MAC21B       ;NO MISSING ARGS\r
+MAC21A:        PUSH    MP,[-1]         ;FILL IN MISSING ARGS\r
+       SKIPN   .TEMP           ;ANY DEFAULT ARGS?\r
+       JRST    MAC21C          ;NO\r
+       HRRZ    C,.TEMP         ;GET ARG COUNT\r
+       SUBI    C,-1(SX)        ;ACCOUNT FOR THOSE GIVEN\r
+       HRLZS   C               ;PUT IN LEFT HALF\r
+       HLRZ    SDEL,.TEMP      ;ADDRESS OF TABLE\r
+MAC21D:        SKIPN   (SDEL)          ;END OF LIST\r
+       JRST    MAC21C          ;YES\r
+       XOR     C,(SDEL)        ;TEST FOR CORRECT ARG\r
+       TLNN    C,-1            ;WAS IT?\r
+       JRST    MAC21E          ;YES\r
+       XOR     C,(SDEL)        ;BACK THE WAY IT WAS\r
+       AOJA    SDEL,MAC21D     ;AND TRY AGAIN\r
+\r
+MAC21E:        MOVEM   C,(MP)          ;REPLACE -1 WITH TREE POINTER\r
+       AOS     1(C)            ;INCREMENT REFERENCE\r
+MAC21C:        SOJG    SX,MAC21A\r
+MAC21B:        PUSH    MP,[0]          ;SET TERMINAL\r
+       HRRZ    C,LIMBO\r
+       TLNN    IO,IOSALL       ;SUPPRESSING ALL?\r
+       JRST    MAC23           ;NO\r
+       JUMPN   MRP,MAC27       ;IN MACRO?\r
+       CAIE    C,";"           ;NO,IN COMMENT?\r
+       JRST    MAC26           ;NO\r
+MAC22: PUSHJ   PP,CHARAC       ;YES,GET IT INTO THE LBUF\r
+       CAIG    C,CR            ;LESS THAN CR?\r
+       CAIGE   C,LF            ;AND GREATER THAN LF?\r
+       JRST    MAC22           ;NO GET ANOTHER\r
+MAC26: HRLZI   SX,70000        ;DECREMENT BYTE POINTER\r
+       ADDB    SX,LBUFP\r
+       JUMPGE  SX,MAC27\r
+       HRLOI   SX,347777\r
+       ADDM    SX,LBUFP\r
+MAC27: HRLI    C,-1            ;SET FLAG\r
+       JRST    MAC25\r
+\r
+MAC23: MOVEI   SX,"?"\r
+       JUMPAD  MAC24           ;BRANCH IF ADDRESS FIELD\r
+       CAIN    C,";"           ;IF SEMI-COLON\r
+       SKIPE   LITLVL          ;AND NOT IN A LITERAL\r
+       JRST    MAC24           ;NOT BOTH TRUE\r
+       JUMPN   MRP,MAC24       ;OR IN A MACRO\r
+       PUSHJ   PP,STOUT        ;LIST COMMENT OR CR-LF\r
+       TLNE    IO,IOPALL       ;MACRO EXPANSION SUPPRESSION?\r
+       TLO     IO,IOMAC        ;  NO, SET TEMP BIT\r
+       TDOA    C,[-1]          ;FLAG LAST CHARACTER\r
+MAC24: DPB     SX,LBUFP        ;SET ? INTO LINE BUFFER\r
+MAC25: PUSH    MP,MACPNT\r
+       POP     PP,MACPNT\r
+       PUSH    MP,C\r
+       PUSH    MP,RCOUNT       ;STACK WORD COUNT\r
+       PUSH    MP,MRP          ;STACK MACRO POINTER\r
+       POP     PP,MRP          ;SET NEW READ POINTER\r
+       EXCH    MP,RP\r
+       AOS     MACLVL\r
+       HRRZS   MACENL          ;RESET "CALLM IN PROGRESS"\r
+       JUMPOC  STMNT2          ;OP-CODE FIELD\r
+       JRST    EVATOM          ;ADDRESS FIELD\r
+\r
+\fMAC30:        MOVEI   AC0,0           ;INITIALIZE BRACKET COUNTER\r
+MAC31: PUSHJ   PP,GCHAR        ;GET A CHARACTER\r
+       CAIN    C,"<"           ;"<"?\r
+       ADDI    AC0,1           ;YES, INCREMENT COUNT\r
+       CAIN    C,">"           ;">"?\r
+       SOJL    AC0,MAC14A      ;YES, EXIT IF MATCHING\r
+       PUSHJ   PP,WCHAR        ;WRITE INTO SKELETON\r
+       JRST    MAC31           ;GO BACK FOR ANOTHER\r
+\r
+MAC40: PUSH    PP,SX           ;STACK REGISTERS\r
+       PUSH    PP,SDEL\r
+       HLLM    IO,TAGINC       ;SAVE IO FLAGS\r
+       PUSHJ   PP,CELL         ;GET AN ATOM\r
+       MOVE    V,AC0           ;ASSUME NUMERIC\r
+       TLNE    IO,NUMSW        ;GOOD GUESS?\r
+       JRST    MAC41           ;YES\r
+       PUSHJ   PP,SSRCH        ;SEARCH THE SYMBOL TABLE\r
+       TROA    ER,ERRX         ;NOT FOUND, ERROR\r
+MAC41: PUSHJ   PP,MAC42        ;FORM ASCII STRING\r
+       HLL     IO,TAGINC       ;RESTORE IO FLAGS\r
+       POP     PP,SDEL\r
+       POP     PP,SX\r
+       TLO     IO,IORPTC       ;REPEAT LAST CHARACTER\r
+       JRST    MAC14A          ;RETURN TO MAIN SCAN\r
+\r
+MAC42: MOVE    C,V\r
+MAC44: LSHC    C,-?D35\r
+       LSH     CS,-1\r
+       DIVI    C,0(RX)         ;DIVIDE BY CURRENT RADIX\r
+       HRLM    CS,0(PP)\r
+       JUMPE   C,.+2           ;TEST FOR END\r
+       PUSHJ   PP,MAC44\r
+       HLRZ    C,0(PP)\r
+       ADDI    C,"0"           ;FORM TEXT\r
+       JRST    WCHAR           ;WRITE INTO SKELETON\r
+\fMACEN0:       SOS     MACENL\r
+MACEND:        SKIPGE  C,MACENL        ;TEST "CALLM IN PROGRESS"\r
+       AOS     MACENL          ;INCREMENT END LEVEL AND EXIT\r
+       JUMPL   C,REPEA8\r
+       EXCH    MP,RP\r
+       POP     MP,MRP          ;RETRIEVE READ POINTER\r
+       POP     MP,RCOUNT       ;AND WORD COUNT\r
+       MOVEI   C,"?"\r
+       SKIPL   0(MP)           ;TEST FLAG\r
+       PUSHJ   PP,RSW2         ;MARK END OF SUBSTITUTION\r
+       POP     MP,C\r
+       POP     MP,ARG\r
+       SKIPA   MP,MACPNT       ;RESET MP AND SKIP\r
+MACEN1:        PUSHJ   PP,REFDEC       ;DECREMENT REFERENCE\r
+MACEN2:        AOS     V,MACPNT        ;GET POINTER\r
+       MOVE    V,0(V)\r
+       JUMPG   V,MACEN1        ;IF >0, DECREMENT REFERENCE\r
+       JUMPL   V,MACEN2        ;IF <0, BYPASS\r
+       POP     MP,V            ;IF=0, RETRIEVE POINTER\r
+       PUSHJ   PP,REFDEC       ;DECREMENT REFERENCE\r
+       MOVEM   ARG,MACPNT\r
+       EXCH    MP,RP\r
+       SOS     MACLVL\r
+       SKIPN   MACENL          ;CHECK UNPROCESSED END LEVEL\r
+       JRST    MACEN3          ;NONE TO PROCESS\r
+       TRNN    MRP,-1          ;MRP AT END OF TEXT\r
+       JRST    MACEN0          ;THEN POP THE MACRO STACK NOW\r
+MACEN3:        TRNN    C,77400         ;SALL FLAG?\r
+       HRLI    C,0             ;YES,TURN IT OFF\r
+       JUMPL   C,REPEA8        ;IF FLAG SET SUBSTITUTE\r
+       JRST    RSW1\r
+\fIRP0: SKIPN   MACLVL          ;ARE WE IN A MACRO?\r
+       JRST    ERRAX           ;NO, BOMB OUT\r
+IRP10: PUSHJ   PP,MREADS       ;YES, GET DATA SPEC\r
+       CAIE C,40               ;SKIP LEADING BLANKS\r
+       CAIN    C,"("           ;"("?\r
+       JRST    IRP10           ;YES, BYPASS\r
+       CAIN C,11\r
+       JRST IRP10\r
+       CAIE    C,177           ;NO, IS IT SPECIAL?\r
+       JRST    ERRAX           ;NO, ERROR\r
+       PUSHJ   PP,MREADS       ;YES\r
+       TRZN C,100              ;CREATED?\r
+       JRST ERRAX\r
+       CAIL C,40               ;TOO BIG?\r
+       JRST ERRAX\r
+       ADD     C,MACPNT        ;NO, FORM POINTER TO STACK\r
+       PUSH    MP,IRPCF        ;STACK PREVIOUS POINTERS\r
+       PUSH    MP,IRPSW\r
+       PUSH    MP,IRPARP\r
+       PUSH    MP,IRPARG\r
+       PUSH    MP,IRPCNT\r
+       PUSH    MP,0(C)\r
+       PUSH    MP,IRPPOI\r
+\r
+       HRRZM   C,IRPARP\r
+       MOVEM   AC0,IRPCF       ;IRPC FLAG FOUND IN AC0\r
+       SETOM   IRPSW           ;RESET IRP SWITCH\r
+       MOVE    CS,0(C)\r
+       MOVEM   CS,IRPARG\r
+\r
+       PUSHJ   PP,MREADS\r
+       CAIE    C,"<"           ;"<"?\r
+       JRST    .-2             ;NO, SEARCH UNTIL FOUND\r
+       PUSHJ   PP,SKELI1       ;INITIALIZE NEW STRING\r
+       MOVEM   ARG,IRPPOI      ;SET NEW POINTER\r
+\r
+       TDZA    SDEL,SDEL       ;ZERO BRACKET COUNT AND SKIP\r
+IRP20: PUSHJ   PP,WCHAR1\r
+       PUSHJ   PP,MREADS\r
+       CAIN    C,"<"           ;"<"?\r
+       AOJA    SDEL,IRP20      ;YES, INCREMENT COUNT AND WRITE\r
+       CAIE    C,">"           ;">"?\r
+       JRST    IRP20           ;NO, JUST WRITE IT\r
+       SOJGE   SDEL,IRP20      ;YES, WRITE IF NOT MATCHING\r
+       MOVE    CS,[BYTE (7) 15,177,4]\r
+       PUSHJ   PP,WWRXE        ;WRITE END\r
+       PUSH    MP,MRP          ;STACK PREVIOUS READ POINTER\r
+       PUSH    MP,RCOUNT       ;AND WORD COUNT\r
+       SKIPG   CS,IRPARG\r
+       JRST    IRPPOP          ;EXIT IF NOT VALID ARGUMENT\r
+       MOVEI   C,1(CS)         ;INITIALIZE POINTER\r
+       MOVEM   C,IRPARG\r
+\fIRPSET:       EXCH    MRP,IRPARG      ;SWAP READ POINTERS\r
+       MOVE    SX,RCOUNT       ;SWAP COUNT OF WORDS TO READ\r
+       EXCH    SX,IRPCNT\r
+       MOVEM   SX,RCOUNT\r
+       PUSHJ   PP,SKELI1       ;INITIALIZE SKELETON FOR DATA\r
+       HRRZM   ARG,@IRPARP     ;STORE NEW DS POINTER\r
+       SETZB   SX,SDEL         ;ZERO FOUND FLAG AND BRACKET COUNT\r
+       LDB     C,MRP           ;GET LAST CHAR\r
+       CAIN    C,","\r
+       SKIPE   IRPCF           ;IN IRPC\r
+       JRST    IRPSE1          ;NO\r
+       MOVEI   SX,1            ;FORCE ARGUMENT\r
+IRPSE1:        PUSHJ   PP,MREADS\r
+       CAIE    C,177           ;SPECIAL?\r
+       AOJA    SX,IRPSE2       ;NO, FLAG AS FOUND\r
+       PUSHJ   PP,PEEKM        ;LOOK AT NEXT CHARACTER\r
+       SETZM   IRPSW           ;SET IRP SWITCH\r
+       JUMPG   SX,IRPSE4       ;IF ARG FOUND, PROCESS IT\r
+       JRST    IRPPOP          ;NO, CLEAN UP AND EXIT\r
+\r
+IRPSE2:        SKIPE   IRPCF           ;IRPC?\r
+       JRST    IRPSE3          ;YES, WRITE IT\r
+       CAIN    C,","           ;NO, IS IT A COMMA?\r
+       JUMPE   SDEL,IRPSE4     ;YES, EXIT IF NOT NESTED\r
+       CAIN    C,"<"           ;"<"?\r
+       ADDI    SDEL,1          ;YES, INCREMENT COUNT\r
+       CAIN    C,">"           ;">"?\r
+       SUBI    SDEL,1          ;YES, DECREMENT COUNT\r
+\r
+IRPSE3:        PUSHJ   PP,WCHAR\r
+       SKIPN   IRPCF           ;IRPC?\r
+       JRST    IRPSE1          ;NO, GET NEXT CHARACTER\r
+\r
+IRPSE4:        MOVSI   CS,(BYTE (7) 177,2)\r
+       PUSHJ   PP,WWRXE        ;WRITE END\r
+       MOVEM   MRP,IRPARG      ;SAVE POINTER\r
+       MOVE    MRP,RCOUNT      ;SAVE COUNT\r
+       MOVEM   MRP,IRPCNT\r
+       HRRZ    MRP,IRPPOI      ;SET FOR NEW SCAN\r
+       AOJA    MRP,REPEA8      ;ON ARG COUNT\r
+\fSTOPI0:       SKIPN   IRPARP          ;IRP IN PROGRESS?\r
+       JRST    ERRAX           ;NO, ERROR\r
+       SETZM   IRPSW           ;YES, SET SWITCH\r
+       POPJ    PP,\r
+\r
+IRPEND:        MOVE    V,@IRPARP\r
+       PUSHJ   PP,REFDEC\r
+       SKIPE   IRPSW           ;MORE TO COME?\r
+       JRST    IRPSET          ;YES\r
+\r
+IRPPOP:        MOVE    V,IRPPOI\r
+       PUSHJ   PP,REFDEC       ;DECREMENT REFERENCE\r
+       POP     MP,RCOUNT\r
+       POP     MP,MRP          ;RESTORE CELLS\r
+       POP     MP,IRPPOI\r
+       POP     MP,@IRPARP\r
+       POP     MP,IRPCNT\r
+       POP     MP,IRPARG\r
+       POP     MP,IRPARP\r
+       POP     MP,IRPSW\r
+       POP     MP,IRPCF\r
+       JRST    REPEA8\r
+\fGETDS:                                ;GET DUMMY SYMBOL NUMBER\r
+       MOVE    CS,C            ;USE CS FOR WORK REGISTER\r
+       ANDI    CS,37           ;MASK\r
+       ADD     CS,MACPNT       ;ADD BASE ADDRESS\r
+       MOVE    V,0(CS)         ;GET POINTER FLAG\r
+       JUMPG   V,GETDS1        ;BRANCH IF POINTER\r
+       TRNN    C,40            ;NOT POINTER, SHOULD WE CREATE?\r
+       JRST    RSW0            ;NO, FORGET THIS ARG\r
+       PUSH    PP,WWRXX\r
+       PUSH    PP,MWP          ;STACK MACRO WRITE POINTER\r
+       PUSH    PP,WCOUNT       ;SAVE WORD  COUNT\r
+       PUSHJ   PP,SKELI1       ;INITIALIZE SKELETON\r
+       MOVEM   ARG,0(CS)       ;STORE POINTER\r
+       MOVE    CS,[BYTE (7) 0,170,170,170,171] ;CREATE A SYMBOL\r
+       ADD     CS,LSTSYM               ;LSTSYM= # OF LAST CREATED\r
+       TDZ     CS,[BYTE (7) 0,170,170,170,170]\r
+       MOVEM   CS,LSTSYM\r
+       IOR     CS,[ASCII /.0000/]\r
+       MOVEI C,"."\r
+       PUSHJ PP,WCHAR\r
+       PUSHJ   PP,WWORD        ;WRITE INTO SKELETON\r
+       MOVSI   CS,(BYTE (7) 177,2)\r
+       PUSHJ   PP,WWRXE        ;WRITE END CODE\r
+       POP     PP,WCOUNT       ;RESTORE WORD COUNT\r
+       POP     PP,MWP          ;RESTORE MACRO WRITE POINTER\r
+       POP     PP,WWRXX\r
+       MOVE    V,ARG           ;SET UP FOR REFINC\r
+\r
+GETDS1:        PUSHJ   PP,REFINC       ;INCREMENT REFERENCE\r
+       HRL     V,RCOUNT        ;SAVE WORD COUNT\r
+       PUSH    MP,V            ;STACK V FOR DECREMENT\r
+       PUSH    MP,MRP          ;STACK READ POINTER\r
+       MOVEI   MRP,1(V)        ;FORM READ POINTER\r
+       JRST    RSW0            ;EXIT\r
+\r
+DSEND: POP     MP,MRP\r
+       POP     MP,V\r
+       HLREM   V,RCOUNT        ;RESTORE WORD COUNT\r
+       HRRZS   V               ;CLEAR COUNT\r
+       PUSHJ   PP,REFDEC       ;DECREMENT REFERENCE\r
+       JRST    RSW0            ;EXIT\r
+\fSKELI1:       MOVEI   ARG,1           ;ENTRY FOR SINGLE ARG\r
+SKELI: SETZ    MWP,            ;SIGNAL FIRST TIME THROUGH\r
+       PUSHJ   PP,SKELWL       ;GET POINTER WORD\r
+       HRRZM   MWP,WWRXX       ;SAVE FIRST ADDRESS\r
+       HRRZM   MWP,LADR        ;SAVE START OF LINKED LIST\r
+       HRRZM   ARG,1(MWP)      ;STORE COUNT\r
+       SOS     WCOUNT          ;ACCOUNT FOR WORD\r
+       HRRZ    ARG,WWRXX       ;SET FIRST ADDRESS\r
+       ADDI    MWP,2           ;BUMP POINTER\r
+       HRLI    MWP,(POINT 7)   ;SET FOR 5 ASCII BYTES\r
+       ;SKELW RETURNS WITH ADR OF NEXT FREE LOC IN V (RIGHT)\r
+\r
+SKELW: SOSLE   WCOUNT          ;STILL SOME SPACE IN LEAF?\r
+       POPJ    PP,             ;YES, RETURN\r
+SKELWL:        SKIPE   V,NEXT          ;GET FIRST FREE ADDRESS\r
+       JRST    SKELW1          ;IF NON-ZERO, UPDATE FREE\r
+       MOVE    V,FREE          ;GET FREE\r
+       ADDI    V,.LEAF         ;INCREMENT BY LEAF SIZE\r
+       CAML    V,SYMBOL        ;OVERFLOW?\r
+       PUSHJ   PP,XCEED        ;YES, BOMB OUT\r
+       EXCH    V,FREE          ;UPDATE FREE\r
+       SETZM   (V)             ;CLEAR LINK\r
+\r
+SKELW1:        HLL     V,0(V)          ;GET ADDRESS\r
+       HLRM    V,NEXT          ;UPDATE NEXT\r
+       SKIPE   MWP             ;IF FIRST TIME\r
+       HRLM    V,1-.LEAF(MWP)  ;STORE LINK IN FIRST WORD OF LEAF\r
+       MOVEI   MWP,.LEAF       ;SIZE OF LEAF\r
+       MOVEM   MWP,WCOUNT      ;STORE FOR COUNT DOWN\r
+       MOVEI   MWP,(V)         ;SET UP WRITE POINTER\r
+       TLO     MWP,(POINT 7,,21)       ;2 ASCII CHARS\r
+       POPJ    PP,\r
+\r
+       ;WWRXX  POINTS TO END OF TREE\r
+       ;MWP    IDPB POINTER TO NEXT HOLE\r
+       ;NEXT   FIRST OF A LINKED PORTION THAT IS NOT BEING USED (LEAVES)\r
+       ;FREE   POINTS TO FREE CORE BETWEEN TREE AND SYM-TABLE\r
+       ;LADR   POINTS TO BEG OF LINKED PORTION.\r
+\fGCHARQ:       JUMPN   MRP,MREADS      ;IF GETTING CHAR. FROM TREE\r
+GCHAR: PUSHJ   PP,CHARAC       ;GET ASCII CHARACTER\r
+       CAIG    C,FF            ;TEST FOR LF, VT OR FF\r
+       CAIGE   C,LF\r
+       POPJ    PP,             ;NO\r
+       JRST    OUTIM1          ;YES, LIST IT\r
+\r
+WCHARQ:\r
+WCHAR: \r
+WCHAR1:        TLNN    MWP,760000      ;END OF WORD?\r
+       PUSHJ   PP,SKELW        ;YES, GET ANOTHER\r
+       IDPB    C,MWP           ;STORE CHARACTER\r
+       POPJ    PP,\r
+\r
+WWORD: LSHC    C,7             ;MOVE ASCII INTO C\r
+       PUSHJ   PP,WCHAR1       ;STORE IT\r
+       JUMPN   CS,WWORD        ;TEST FOR END\r
+       POPJ    PP,             ;YES, EXIT\r
+\r
+WWRXE: PUSHJ   PP,WWORD        ;WRITE LAST WORD\r
+       ADD     MWP,WCOUNT      ;GET TO END OF LEAF\r
+       SUBI    MWP,.LEAF       ;NOW POINT TO START OF IT\r
+       HRRZS   (MWP)           ;ZERO LEFT HALF OF LAST LEAF\r
+       HRRM    MWP,@WWRXX      ;SET POINTER TO END\r
+       POPJ    PP,\r
+\fMREAD:        PUSHJ   PP,MREADS       ;READ ONE CHARACTER\r
+       CAIE    C,177           ;SPECIAL?\r
+       JRST    RSW1            ;NO, EXIT\r
+       PUSHJ   PP,MREADS       ;YES, GET CODE WORD\r
+       TRZE C,100              ;SYMBOL?\r
+       JRST GETDS              ;YES\r
+       CAILE C,4               ;POSSIBLY ILLEGAL\r
+       JRST ERRAX              ;YUP\r
+       HRRI    MRP,0           ;NO, SIGNAL END OF TEXT\r
+       JRST    .+1(C)\r
+       PUSHJ   PP,XCEED\r
+       JRST    MACEND          ;1; END OF MACRO\r
+       JRST    DSEND           ;2; END OF DUMMY SYMBOL\r
+       JRST    REPEND          ;3; END OF REPEAT\r
+       JRST    IRPEND          ;4; END OF IRP\r
+\r
+MREADI:        HRLI    MRP,700         ;SET UP BYTE POINTER\r
+       MOVEI   C,.LEAF-1       ;NUMBER OF WORDS\r
+       MOVEM   C,RCOUNT\r
+MREADS:        TLNN    MRP,-1          ;FIRST TIME HERE?\r
+       JRST    MREADI          ;YES, SET UP MRP AND RCOUNT\r
+       TLNN    MRP,760000      ;HAVE WE FINISHED WORD?\r
+       SOSLE   RCOUNT          ;YES, STILL ROOM IN LEAF?\r
+       JRST    MREADC          ;STILL CHAR. IN LEAF\r
+       HLRZ    MRP,1-.LEAF(MRP);YES, GET LINK\r
+       HRLI    MRP,(POINT 7,,21)       ;SET POINTER\r
+       MOVEI   C,.LEAF         ;RESET COUNT\r
+       MOVEM   C,RCOUNT\r
+MREADC:        ILDB    C,MRP           ;GET CHARACTER\r
+       POPJ    PP,\r
+\r
+PEEK:  JUMPN   MRP,PEEKM       ;THIS IS A MACRO READ\r
+       PUSHJ   PP,CHARAC       ;READ AN ASCII CHAR.\r
+       TLO     IO,IORPTC       ;REPEAT  FOR NEXT\r
+       POPJ    PP,             ;AND RETURN\r
+\r
+PEEKM: PUSH    PP,MRP          ;SAVE MACRO READ POINTER\r
+       PUSH    PP,RCOUNT       ;SAVE WORD COUNT\r
+       PUSHJ   PP,MREADS       ;READ IN A CHAR.\r
+       POP     PP,RCOUNT       ;RESTORE WORD COUNT\r
+       POP     PP,MRP          ;RESET READ POINTER\r
+       POPJ    PP,             ;IORPTC IS NOT SET\r
+\fREFINC:       MOVEI   CS,1(V)         ;GET POINTER TO TREE\r
+       AOS     0(CS)           ;INCREMENT REFERENCE\r
+       POPJ    PP,\r
+\r
+REFDEC:        JUMPLE  V,DECERR        ;CATASTROPHIC ERROR SOMEWHERE\r
+       MOVEI   CS,1(V)         ;GET POINTER TO TREE\r
+       SOS     CS,0(CS)        ;DECREMENT REFERENCE\r
+       TRNE    CS,000777       ;IS IT ZERO?\r
+       POPJ    PP,             ;NO, EXIT\r
+       HRRZ    CS,0(V)         ;YES, GET POINTER TO END\r
+       HRL     CS,NEXT         ;GET POINTER TO NEXT RE-USABLE\r
+       HLLM    CS,0(CS)        ;SET LINK\r
+       HRRM    V,NEXT          ;RESET NEXT\r
+       POPJ    PP,\r
+\r
+DECERR:        MOVE    AC0,CALNAM      ;GET MACRO NAME\r
+       MOVSI   RC,[SIXBIT /ERROR WHILE EXPANDING@/]\r
+       PUSHJ   PP,TYPMSG\r
+       JRST    ERRNE2          ;COMMON MESSAGE\r
+\fA==   0                       ;ASCII MODE\r
+AL==   1                       ;ASCII LINE MODE\r
+IB==   13                      ;IMAGE BINARY MODE\r
+B==    14                      ;BINARY MODE\r
+IFE RUNSW,<DMP==16             ;DUMP MODE>\r
+\r
+CTL==  0                       ;CONTROL DEVICE NUMBER\r
+BIN==  1                       ;BINARY DEVICE NUMBER\r
+CHAR== 2                       ;INPUT DEVICE NUMBER\r
+LST==  3                       ;LISTING DEVICE NUMBER\r
+\r
+;      COMMAND STRING ACCUMULATORS\r
+\r
+ACDEV==        1                       ;DEVICE\r
+ACFILE==2                      ;FILE\r
+ACEXT==        3                       ;EXTENSION\r
+ACPPN== 4                      ;PPN\r
+ACDEL==        4                       ;DELIMITER\r
+ACPNTR==5                      ;BYTE POINTER\r
+\r
+TIO==  6\r
+\r
+TIORW==        1000\r
+TIOLE==        2000\r
+TIOCLD==20000\r
+\r
+DIRBIT==4              ;DIRECTORY DEVICE\r
+TTYBIT==10             ;TTY\r
+MTABIT==20             ;MTA\r
+DTABIT==100            ;DTA\r
+DISBIT==2000           ;DISPLAY\r
+CONBIT==20000          ;CONTROLING TTY\r
+LPTBIT==40000          ;LPT\r
+DSKBIT==200000         ;DSK\r
+\r
+;GETSTS ERROR BITS\r
+\r
+IOIMPM==400000         ;IMPROPER MODE (WRITE LOCK)\r
+IODERR==200000         ;DEVICE DATA ERROR\r
+IODTER==100000         ;CHECKSUM OR PARITY ERROR\r
+IOBKTL== 40000         ;BLOCK TOO LARGE\r
+ERRBIT==IOIMPM!IODERR!IODTER!IOBKTL\r
+\r
+SYN    .TEMP,PPN\r
+\fSUBTTL        I/O ROUTINES\r
+BEG:\r
+       HRRZ    MRP,JOBREL      ;GET LOWSEG SIZE\r
+       MOVEM   MRP,MACSIZ      ;SAVE CORE SIZE\r
+                               ;DECODE VERSION NUMBER\r
+       MOVEI   PP,JOBFFI       ;TEMP PUSH DOWN STACK\r
+       PUSH    PP,[0]          ;MARK BOTTOM OF STACK\r
+       LDB     0,[POINT 3,JOBVER,2]    ;GET USER BITS\r
+       JUMPE   0,GETE          ;NOT SET IF ZERO\r
+       ADDI    0,"0"           ;FORM NUMBER\r
+       PUSH    PP,0            ;STACK IT\r
+       MOVEI   0,"-"           ;SEPARATE BY HYPHEN\r
+       PUSH    PP,0            ;STACK IT ALSO\r
+GETE:  HRRZ    0,JOBVER        ;GET EDIT NUMBER\r
+       JUMPE   0,GETU          ;SKIP ALL THIS IF ZERO\r
+       MOVEI   1,")"           ;ENCLOSE IN PARENS.\r
+       PUSH    PP,1\r
+GETED: IDIVI   0,8             ;GET OCTAL DIGITS\r
+       ADDI    1,"0"           ;MAKE ASCII\r
+       PUSH    PP,1            ;STACK IT\r
+       JUMPN   0,GETED         ;LOOP TIL DONE\r
+       MOVEI   0,"("           ;OTHER PAREN.\r
+       PUSH    PP,0\r
+GETU:  LDB     0,[POINT 6,JOBVER,17]   ;UPDATE NUMBER\r
+       JUMPE   0,GETV          ;SKIP IF ZERO\r
+       IDIVI   0,8             ;MIGHT BE TWO DIGITS\r
+       ADDI    1,"@"           ;FORM ALPHA\r
+       PUSH    PP,1\r
+       JUMPN   0,GETU+1        ;LOOP IF NOT DONE\r
+GETV:  LDB     0,[POINT 9,JOBVER,11]   ;GET VERSION NUMBER\r
+       IDIVI   0,8             ;GET DIGIT\r
+       ADDI    1,"0"           ;TO ASCII\r
+       PUSH    PP,1            ;STACK\r
+       JUMPN   0,GETV+1        ;LOOP\r
+       MOVE    1,[POINT 7,VBUF+1,13]   ;POINTER TO DEPOSIT IN VBUF\r
+       POP     PP,0            ;GET CHARACTER\r
+       IDPB    0,1             ;DEPOSIT IT\r
+       JUMPN   0,.-2           ;KEEP GOING IF NOT ZERO\r
+IFN FORMSW,<IFE DFRMSW,<\r
+       SETOM   PHWFMT          ;HALF WORD UNLESS CHANGED BY SWITCH>>\r
+\f\r
+M:\r
+       RESET                   ;INITIALIZE PROGRAM\r
+       SETZM   BINDEV          ;CLEAR INCASE NOT USED NEXT TIME\r
+       SETZM   LSTDEV          ;SAME REASON\r
+       SETZM   INDEV           ;INCASE OF ERROR\r
+       HRRZ    MRP,MACSIZ      ;GET INITIAL SIZE\r
+       CORE    MRP,            ;BACK TO ORIGINAL SIZ4\r
+       JFCL                    ;SHOULD NEVER FAIL\r
+       SETZB   MRP,PASS1I\r
+       MOVE    [XWD PASS1I,PASS1I+1]\r
+       BLT     PASS2X-1        ;ZERO THE PASS1 AND PASS2 VARIABLES\r
+       MOVEI   PP,JOBFFI       ;SET TEMP PUSH-DOWN POINTER\r
+       MOVE    CS,[POINT 7,DBUF,6]     ;INITIALIZE FOR DATE\r
+       MSTIME  2,              ;GET TIME FROM MONITOR\r
+       PUSHJ   PP,TIMOUT       ;TIME FORMAT OUTPUT\r
+       DATE    1,              ;GET DATE\r
+       IBP     CS              ;PASS OVER PRESET SPACE\r
+       PUSHJ   PP,DATOUT       ;DATE FORMAT OUTPUT\r
+       MOVSI   FR,P1!CREFSW\r
+CTLSET:\r
+       MOVSI   IO,IOPALL       ;ZERO FLAGS\r
+       INIT    CTL,AL          ;INITIALIZE USER CONSOLE\r
+       SIXBIT  /TTY/\r
+       XWD     CTOBUF,CTIBUF\r
+       EXIT                    ;NO TTY, NO ASSEMBLY\r
+       MOVSI   C,(SIXBIT /TTY/)\r
+       DEVCHR  C,              ;GET CHARACTERISTICS\r
+       TLNN    C,10            ;IS IT REALLY A TTY\r
+       EXIT                    ;NO\r
+       INBUF   CTL,1           ;INITIALIZE SINGLE CONTROL\r
+       OUTBUF  CTL,1           ;BUFFERS\r
+       PUSHJ   PP,CRLF         ;OUTPUT CARRIAGE RETURN - LINE FEED\r
+       MOVEI   C,"*"\r
+       IDPB    C,CTOBUF+1\r
+       OUTPUT  CTL,\r
+       INPUT   CTL,\r
+\r
+\fBINSET:       PUSHJ   PP,NAME1        ;GET FIRST NAME\r
+       TLNN    FR,CREFSW       ;CROSS REF REQUESTED?\r
+       JRST    LSTSE1          ;YES, SKIP BINARY\r
+       CAIN    C,","           ;COMMA?\r
+       JUMPE   ACDEV,LSTSET    ;YES, SKIP BINARY IF NO DEVICE SPECIFIED\r
+       CAIN    C,"?"           ;LEFT ARROW?\r
+       JUMPE   ACDEV,LSTSE1    ;YES, SKIP BINARY IF NO DEVICE SPECIFIED\r
+       JUMPE   ACDEV,M         ;IGNORE IF JUST <CR-LF>\r
+       TLO     FR,PNCHSW       ;OK, SET SWITCH\r
+       MOVEM   ACDEV,BINDEV    ;STORE DEVICE NAME\r
+       MOVEM   ACFILE,BINDIR   ;STORE FILE NAME IN DIRECTORY\r
+       JUMPN   ACEXT,.+2       ;EXTENSION SPECIFIED?\r
+       MOVSI   ACEXT,(SIXBIT /REL/)    ;NO, ASSUME RELOCATABLE BINARY\r
+       MOVEM   ACEXT,BINDIR+1  ;STORE IN DIRECTORY\r
+       MOVEM   ACPPN,BINDIR+3  ;SET PPN\r
+       OPEN    BIN,BININI      ;INITIALIZE BINARY\r
+       JRST    EINIT           ;ERROR\r
+       TLZE TIO,TIOLE          ;SKIP TO EOT\r
+       MTAPE BIN,10\r
+       TLZE    TIO,TIORW       ;REWIND REQUESTED?\r
+       MTAPE   BIN,1           ;YES\r
+       JUMPGE  CS,BINSE2       ;BRANCH IF NO BACK-SPACE\r
+       MTAPE   BIN,17          ;BACK-SPACE A FILE\r
+       AOJL    CS,.-1          ;TEST FOR END\r
+       WAIT    BIN,\r
+       STATO   BIN,1B24        ;LOAD POINT?\r
+       MTAPE   BIN,16          ;NO, GO FORWARD ONE\r
+BINSE2:        SOJG    CS,.-1          ;TEST FORWARD SPACING\r
+\r
+       TLNE    TIO,TIOCLD      ;DIRECTORY CLEAR REQUESTED?\r
+       UTPCLR  BIN,            ;YES, CLEAR IT\r
+       OUTBUF  BIN,2           ;SET UP TWO RING BUFFER\r
+       CAIN    C,"?"\r
+       JRST    GETSET          ;NO LISTING\r
+\fLSTSET:       PUSHJ   PP,NAME1        ;GET NEXT DEVICE\r
+LSTSE1:        CAIE    C,"?"\r
+       JRST    ERRCM\r
+       TLNE    FR,CREFSW       ;CROSS-REF REQUESTED?\r
+       JRST    LSTSE2          ;NO, BRANCH\r
+       JUMPN   ACDEV,.+2       ;YES, WAS DEVICE SPECIFIED?\r
+       MOVSI   ACDEV,(SIXBIT /DSK/)    ;NO, ASSUME DSK\r
+       JUMPN   ACFILE,.+2\r
+       MOVE    ACFILE,[SIXBIT /CREF/]\r
+       JUMPN   ACEXT,.+2\r
+       MOVSI   ACEXT,(SIXBIT /CRF/)   \r
+LSTSE2:        JUMPE   ACDEV,GETSET    ;FORGET LISTING IF NO DEVICE SPECIFIED\r
+       MOVE    AC0,ACDEV\r
+       DEVCHR  AC0,            ;GET CHARACTERISTICS\r
+       TLNE    AC0,LPTBIT!DISBIT!TTYBIT\r
+       TLNE    FR,CREFSW       ; WAS CROSS-REF REQUESTED?\r
+       AOSA    OUTSW+0*TTYSW   ;NO, ASSUME TTY\r
+       JRST    ERRCM           ;YES, ERROR - CREF DEV MUST NOT BE LPT, DIS, OR TTY\r
+       TLNE    AC0,CONBIT      ;CONTROLING TELETYPE LISTING?\r
+       JRST    GETSET          ;YES, BUFFER ALREADY SET\r
+       MOVEM   ACDEV,LSTDEV    ;STORE DEVICE NAME\r
+       AOS     OUTSW+0*LPTSW   ;SET FOR LPT\r
+       MOVEM   ACFILE,LSTDIR   ;STORE FILE NAME\r
+       JUMPN   ACEXT,.+2\r
+       MOVSI   ACEXT,(SIXBIT /LST/)\r
+       MOVEM   ACEXT,LSTDIR+1\r
+       MOVEM   ACPPN,LSTDIR+3  ;SET PPN\r
+       OPEN    LST,LSTINI      ;INITIALIZE LISTING OUTPUT\r
+       JRST    EINIT           ;ERROR\r
+       TLZE TIO,TIOLE\r
+       MTAPE LST,10\r
+       TLZE    TIO,TIORW       ;REWIND REQUESTED?\r
+       MTAPE   LST,1           ;YES\r
+       JUMPGE  CS,LSTSE3\r
+       MTAPE   LST,17\r
+       AOJL    CS,.-1\r
+       WAIT    LST,\r
+       STATO   LST,1B24\r
+       MTAPE   LST,16\r
+LSTSE3:        SOJG    CS,.-1\r
+       TLNE    TIO,TIOCLD      ;DIRECTORY CLEAR REQUESTED?\r
+       UTPCLR  LST,            ;YES, CLEAR IT\r
+       OUTBUF  LST,2           ;SET UP A TWO RING BUFFER\r
+\fGETSET:       MOVEI   3,PDPERR\r
+       HRRM    3,JOBAPR        ;SET TRAP LOCATION\r
+       MOVEI   3,1B19          ;SET FOR PUSH-DOWN OVERFLOW\r
+       APRENB  3,\r
+       SOS     3,PDP           ;GET PDP REQUEST MINUS 1\r
+       IMULI   3,.PDP          ;COMPUTE SIZE (50*<NUMBER OF /P'S +1>)\r
+       HRLZ    MP,3\r
+       HRR     MP,JOBFF        ;SET BASIC POINTER\r
+       MOVE    PP,MP\r
+       SUB     PP,3\r
+       MOVEM   PP,RP           ;SET RP\r
+       SUB     PP,3\r
+       ASH     3,1             ;DOUBLE SIZE OF BASIC POINTER\r
+       HRL     PP,3\r
+       SUBM    PP,3            ;COMPUTE TOP LOCATION\r
+       SKIPN   UNITOP          ;IF ANY UNIVERSALS HAVE BEEN SEEN\r
+       JRST    GETSE0          ;NO\r
+       HRRZS   3               ;GET TOP OF BUFFERS AND STACKS\r
+       CAMLE   3,UNISIZ        ;HOPE ITS NOT BIGGER THAN UNIVERSAL ONE\r
+       JRST    UNIERR          ;IT WAS, YOU LOSE\r
+       SKIPA   3,UNITOP        ;DON'T LOSE THEM\r
+GETSE0:        HRRZM   3,UNISIZ        ;STORE UNTIL A UNIVERSAL IS SEEN\r
+       HRRZM   3,LADR          ;SET START OF MACRO TREE\r
+       HRRZM   3,FREE\r
+\r
+GETSE1:        HRRZ    JOBREL\r
+       SUBI    1\r
+       MOVEM   SYMTOP          ;SET TOP OF SYMBOL TABLE\r
+       SUBI    LENGTH          ;SET POINTER FOR INITIAL SYMBOLS\r
+       CAMLE   LADR            ;HAVE WE ROOM?\r
+       JRST    GETSE2          ;YES\r
+\r
+       HRRZ    2,JOBREL        ;NO, TRY FOR MORE CORE\r
+       ADDI    2,2000\r
+       CORE    2,\r
+       JRST    XCEED2  ;NO MORE, INFORM USER\r
+       JRST    GETSE1          ;TRY AGAIN\r
+\r
+GETSE2:        MOVEM   SYMBOL          ;SET START OF SYMBOL TABLE\r
+       HRLI    SYMNUM\r
+       BLT     @SYMTOP         ;STORE SYMBOLS\r
+       PUSHJ   PP,SRCHI        ;INITIALIZE TABLE\r
+       MOVE    [XWD CTIBUF+1,CTLSAV]   ;SAVE CONTROL INPUT BUFFER\r
+       BLT     CTLS1           ;FOR RESCAN ON PASS 2\r
+IFN FTDISK,<MOVSI (SIXBIT /DSK/)       ;SET INPUT TO TAKE DSK AS DEV\r
+       MOVEM ACDEVX>\r
+       PUSHJ PP,COUTI  ;INIT OUTPUT JUST IN CASE\r
+       PUSHJ   PP,INSET        ;GET FIRST INPUT FILE\r
+\r
+       MOVE CS,INDIR   ;SET UP NAME OF FIRST FILE\r
+       MOVEM CS,LSTFIL ;AS LAST PRINTED\r
+       SETZM   LSTPGN\r
+       JRST    ASSEMB          ;START ASSEMBLY\r
+\fFINIS:        CLOSE   BIN,            ;DUMP BUFFER\r
+       TLNE    FR,PNCHSW       ;PUNCH REQUESTED?\r
+       PUSHJ   PP,TSTBIN       ;YES, TEST FOR ERRORS\r
+       RELEAS  BIN,\r
+       CLOSE   LST,\r
+       SOSLE   OUTSW+0*LPTSW   ;LPT TYPE OUTPUT?\r
+       PUSHJ   PP,TSTLST       ;YES, TEST FOR ERRORS\r
+       RELEAS  LST,\r
+       RELEAS  CHAR,\r
+       OUTPUT CTL,0    ;FLUSH TTY OUTPUT\r
+       SKIPE   UNIVSN          ;SKIP IF NOT ASSEMBLING UNIVERSAL\r
+       PUSHJ   PP,UNISYM       ;STORE SYMBOLS ETC. FIRST\r
+       JRST    M               ;RETURN FOR NEXT ASSEMBLY\r
+\fINSET:        MOVEI   JOBFFI          ;POINTER TO INPUT BUFFER\r
+       HRRM    JOBFF           ;INFORM SYSTEM OF BUFFER AREA\r
+       PUSHJ   PP,NAME2        ;GET NEXT COMMAND NAME\r
+       JUMPE   ACDEV,ERRNE     ;ERROR  IF NONE LEFT\r
+       MOVEM   ACDEV,INDEV     ;STORE DEVICE\r
+       MOVEM   ACFILE,INDIR    ;STORE FILE IN DIRECTORY\r
+       MOVEM   ACPPN,INDIR+3   ;STORE PPN BEFORE WE LOSE IT\r
+       OPEN    CHAR,INDEVI\r
+       JRST    EINIT           ;ERROR\r
+       DEVCHR  ACDEV,          ;TEST CHARACTERISTICS\r
+       TLNN    ACDEV,MTABIT    ;MAG TAPE?\r
+       JRST    INSET3          ;NO\r
+       TLZN    FR,MTAPSW       ;FIRST MAG TAPE IN PASS 2?\r
+       JRST    INSET1          ;NO\r
+       TLNN    TIO,TIORW       ;YES, REWIND REQUESTED?\r
+       SUB     CS,RECCNT       ;NO, PREPARE TO BACK-SPACE TAPE\r
+INSET1:        AOS     RECCNT          ;INCREMENT FILE COUNTER\r
+       ADDM    CS,RECCNT       ;UPDATE  COUNT\r
+       TLZE TIO,TIOLE\r
+       MTAPE CHAR,10\r
+       TLZE    TIO,TIORW       ;REWIND?\r
+       MTAPE   CHAR,1          ;YES\r
+       JUMPGE  CS,INSET2\r
+       MTAPE   CHAR,17\r
+       MTAPE   CHAR,17\r
+       AOJL    CS,.-1\r
+       WAIT    CHAR,\r
+       STATO   CHAR,1B24\r
+       MTAPE   CHAR,16\r
+INSET2:        SOJGE   CS,.-1\r
+\r
+INSET3:        INBUF CHAR,1\r
+       MOVEI ACPNTR,JOBFFI\r
+       EXCH ACPNTR,JOBFF\r
+       SUBI ACPNTR,JOBFFI\r
+       MOVEI ACDEL,NUMBUF*203+1\r
+       IDIV ACDEL,ACPNTR\r
+       INBUF CHAR,(ACDEL)\r
+       JUMPN   ACEXT,INSET4    ;TAKE USER'S EXTENSION IF NON-BLANK\r
+       MOVSI   ACEXT,(SIXBIT /MAC/)    ;BLANK, TRY .MAC FIRST\r
+       PUSHJ   PP,INSETI\r
+INSET4:        PUSHJ   PP,INSETI\r
+       JUMPE   ACEXT,ERRCF     ;ERROR IF ZERO\r
+       TLNE    ACDEV,TTYBIT    ;TELETYPE?\r
+       SETSTS  CHAR,AL         ;YES, CHANGE TO ASCII LINE\r
+\f                              ;DO ALL ENTERS HERE FOR LEVEL D\r
+       SKIPE   ENTERS          ;HAVE ENTERS BEEN DONE ALREADY?\r
+       JRST    ENTRDN          ;YES, DON'T DO TWICE\r
+       SKIPN   ACEXT,LSTDEV    ;IS THERE A LIST DEVICE?\r
+       JRST    LSTSE5          ;NO SO DON'T DO ENTER\r
+       SKIPN   ACFILE,LSTDIR   ;GET FILE NAME INCASE OF ERROR\r
+       JRST    [DEVCHR ACEXT,  \r
+               TLNE    ACEXT,DIRBIT    ;DOES IT HAVE A DIRECTORY?\r
+               JRST    LSTSE4          ;YES, GIVE UP BEFORE HARM IS DONE\r
+               SKIPE   ACFILE,INDIR    ;USE INPUT FILE NAME\r
+               MOVEM   ACFILE,LSTDIR   ;TOO BAD IF ZERO ALSO\r
+               JRST    LSTSE4]\r
+       HLLZ    ACEXT,LSTDIR+1  ;EXT ALSO\r
+       MOVE    ACPPN,LSTDIR+3  ;SAVE PPN\r
+       LOOKUP  LST,LSTDIR      ;PREVIOUS ONE STILL THERE\r
+       JRST    LSTSE4          ;NO\r
+       SETZM   LSTDIR          ;YES,CLEAR NAME\r
+       MOVEM   ACPPN,LSTDIR+3  ;RESET PPN\r
+       RENAME  LST,LSTDIR\r
+       CLOSE   LST,            ;IGNORE FAILURE\r
+       MOVEM   ACFILE,LSTDIR   ;RESTORE NAME\r
+       HLLZS   LSTDIR+1        ;BH 11/19/74 FOR DATE75.  CLEAR RH.\r
+       SETZM   LSTDIR+2        ;CLEAR PROTECTION AND DATE\r
+       MOVEM   ACPPN,LSTDIR+3  ;SET PPN AGAIN\r
+LSTSE4:        \r
+\r
+       ENTER   LST,LSTDIR      ;SET UP DIRECTORY\r
+       JRST    ERRCL           ;ERROR\r
+LSTSE5:        SKIPN   ACEXT,BINDEV    ;A BINARY DEVICE THEN ?\r
+       JRST    ENTRDN          ;NO\r
+       SKIPN   ACFILE,BINDIR   ;INCASE OF ERROR\r
+       JRST    [DEVCHR ACEXT,  \r
+               TLNE    ACEXT,DIRBIT    ;DOES IT HAVE A DIRECTORY?\r
+               JRST    .+1             ;YES, GIVE UP BEFORE HARM IS DONE\r
+               SKIPE   ACFILE,INDIR    ;USE INPUT FILE NAME\r
+               MOVEM   ACFILE,BINDIR   ;TOO BAD IF ZERO ALSO\r
+               JRST    .+1]\r
+\r
+       HLLZS   ACEXT,BINDIR+1  ;BH 11/19/74 DATE75.  WAS HLLZ.\r
+       ENTER   BIN,BINDIR      ;ENTER FILE NAME\r
+       JRST    ERRCB           ;ERROR\r
+\r
+ENTRDN:        SETOM   ENTERS          ;MAKE SURE ONLY DONE ONCE\r
+       MOVE    CS,[POINT 7,DEVBUF]\r
+       PUSH    PP,1            ;SAVE THE ACCS\r
+       PUSH    PP,2\r
+       PUSH    PP,3\r
+       SKIPN   2,INDIR         ;GET INPUT NAME\r
+       JRST    FINDEV          ;FINISHED WITH DEVICE\r
+       SETZ    1,              ;CLEAR FOR RECEIVING\r
+       LSHC    1,6             ;SHIFT ONE CHAR. IN\r
+       ADDI    1,40            ;FORM ASCII\r
+       IDPB    1,CS            ;STORE CHAR.\r
+       JUMPN   2,.-4           ;MORE TO DO?\r
+       MOVEI   1,"     "       ;SEPARATE BY TAB\r
+       IDPB    1,CS\r
+       HLLZ    2,INDIR+1       ;GET EXT\r
+       JUMPE   2,FINEXT        ;NO EXT\r
+       SETZ    1,\r
+       LSHC    1,6             ;SAME LOOP AS ABOVE\r
+       ADDI    1,40\r
+       IDPB    1,CS\r
+       JUMPN   2,.-4\r
+FINEXT:        MOVEI   1,"     "\r
+       IDPB    1,CS            ;SEPARATE BY TAB\r
+       LDB     1,[POINT 12,INDIR+2,35] ;GET DATE\r
+       LDB     2,[POINT 3,INDIR+1,20]  ;BH 11/19/74 DATE75.\r
+       DPB     2,[POINT 3,1,23]        ;BH 11/19/74 DATE75.\r
+       JUMPE   1,FINDEV        ;NO DATE?\r
+       PUSHJ   PP,DATOUT       ;STORE IT\r
+       LDB     2,[POINT 11,INDIR+2,23] ;GET CREATION TIME\r
+       JUMPE   2,FINDEV        ;NO TIME (DECTAPE)\r
+       MOVEI   1," "           ;SEPARATE BY SPACE\r
+       IDPB    1,CS\r
+       PUSHJ   PP,TIMOU1       ;STORE TIME\r
+FINDEV:        SETZ    1,\r
+       MOVEI   2,"     "       ;FINAL TAB\r
+       IDPB    2,CS\r
+       IDPB    1,CS            ;TERMINATE FOR NOW\r
+       POP     PP,3            ;RESTORE ACCS\r
+       POP     PP,2\r
+       POP     PP,1\r
+       SKIPN   PAGENO          ;IF FIRST TIME THRU\r
+       JRST    OUTFF           ;START NEW PAGE\r
+       SETZM PAGENO            ;ON NEW FILE, RESET PAGES\r
+       JRST    OUTFF2          ;DON'T START NEW PAGE UNLESS FF\r
+\r
+INSETI:        HLLZM   ACEXT,INDIR+1   ;STORE EXTENSION\r
+       MOVE    ACPPN,INDIR+3   ;SAVE PPN\r
+       LOOKUP  CHAR,INDIR\r
+       SKIPA   ACEXT,INDIR+1   ;GET ERROR CODE\r
+       JRST    CPOPJ1          ;SKIP-RETURN IF FOUND\r
+       TRNE    ACEXT,-1        ;ERROR CODE OF 0 IS FILE NOT FOUND\r
+       JRST    ERRCF           ;FILE THERE BUT NOT READABLE\r
+       SETZ    ACEXT,          ;CLEAR EXT AND TRY AGAIN\r
+       MOVEM   ACPPN,INDIR+3   ;RESTORE PPN\r
+       POPJ    PP,\r
+\fREC2: MOVS    [XWD CTIBUF+1,CTLSAV]   ;RESCAN CONTROL (FROM PASS1 END STMNT)\r
+       BLT     CTIBUF+2        ;INPUT BUFFER\r
+       MOVEI   "?"\r
+       HRLM    ACDELX          ;FUDGE PREVIOUS DELIMITER\r
+       SETZM   PASS2I\r
+       MOVE    [XWD PASS2I,PASS2I+1]\r
+       BLT     PASS2X-1                ;ZERO PASS2 VARIABLES\r
+       TLO     FR,MTAPSW!LOADSW        ;SET FLAGS \r
+\r
+GOTEND:        MOVE    INDEV           ;GET LAST DEVICE\r
+       DEVCHR                  ;GET ITS CHARACTERISTICS\r
+       TLNE    4               ;TEST FOR DIRECTORY (DSK OR DTA)\r
+       JRST    EOT             ;YES, SO DON'T WASTE TIME\r
+       JRST    .+3             ;NO, INPUT BUFFER BY BUFFER\r
+       IN      CHAR,\r
+       JRST    .-1             ;NO ERRORS\r
+       STATO   CHAR,1B22       ;TEST FOR EOF\r
+       JRST    .-3             ;IGNORE ERRORS\r
+\r
+EOT:   PUSHJ   PP,SAVEXS       ;SAVE REGISTERS\r
+       PUSHJ   PP,INSET        ;GET THE NEXT INPUT DEVICE\r
+       HRROI   RC,[SIXBIT /END OF PASS 1@/]    ;ASSUME END OF PASS\r
+       TLZN    FR,LOADSW       ;ZERO ONLY ON END OF PASS 1\r
+       HRROI   RC,[SIXBIT /LOAD THE NEXT FILE@/]       ;NOT END OF PASS\r
+       TLNN    ACDEV,(1B13!1B15)       ;WAS ALL THAT WORK NECESSARY?\r
+       PUSHJ   PP,TYPMSG       ;YES\r
+\r
+RSTRXS:        MOVSI   RC,SAVBLK       ;SET POINTER\r
+       BLT     RC,RC-1         ;RESTORE REGISTERS\r
+       MOVE    RC,SAVERC       ;RESTORE RC\r
+       POPJ    PP,             ;EXIT\r
+\r
+SAVEXS:        MOVEM   RC,SAVERC       ;SAVE RC\r
+       MOVEI   RC,SAVBLK       ;SET POINTER\r
+       BLT     RC,SAVBLK+RC-1  ;BLT ALL REGISTERS BELOW RC\r
+       POPJ    PP,             ;EXIT\r
+\fNAME1:        SETZM   ACDEVX          ;ENTRY FOR DESTINATION\r
+NAME2: SETZB   ACDEV,INDIR+2   ;ENTRY FOR SOURCE\r
+       MOVEI   ACFILE,0        ;CLEAR FILE\r
+       HLRZ    ACDEL,ACDELX    ;GET PREVIOUS DELIMITER\r
+       SETZB   TIO,CS\r
+       SETZB   ACEXT,INDIR+3   ;RESET EXTENSION AND PROGRAM-NUMBER PAIR\r
+       SETZM   PPN             ;CLEAR PPN\r
+NAME3: MOVSI   ACPNTR,(POINT 6,AC0)    ;SET POINTER\r
+       TDZA    AC0,AC0         ;CLEAR SYMBOL\r
+\r
+SLASH: PUSHJ   PP,SW0\r
+GETIOC:        PUSHJ   PP,TTYIN        ;GET INPUT CHARACTER\r
+       CAIN    C,"/"\r
+       JRST    SLASH\r
+       CAIN    C,"("\r
+       JRST    SWITCH\r
+       CAIN    C,":"\r
+       JRST    DEVICE\r
+       CAIN    C,"."\r
+       JRST    NAME\r
+       CAIE    C,33            ;CHECK FOR THREE FLAVORS OF ALT-MODE\r
+       CAIN    C,176           ;...\r
+       JRST    TERM            ;...\r
+       CAIG    C,CR            ;LESS THAN CR?\r
+       CAIGE   C,LF            ;AND GREATER THAN LF?\r
+       CAIN    C,175           ;OR 3RD ALTMOD\r
+       JRST    TERM            ;YES\r
+IFN FTDISK,<CAIN C,"["\r
+       JRST    PROGNP          ;GET PROGRAMER NUMBER PAIR>\r
+       CAIN    C,"="           ;EQUALS IS SAME AS LEFT ARROW\r
+       TRCA    C,142           ;SO MAKE IT A "?" AND SKIP\r
+       CAIE    C,","\r
+       CAIN    C,"?"\r
+       JRST    TERM\r
+       CAIGE   C,40            ;VALID AS SIXBIT?\r
+       JRST    [CAIN C,"Z"-100 ;NO,IS IT ?Z\r
+               EXIT            ;YES,EXIT FOR BATCH\r
+               JRST    GETIOC] ;JUST IGNORE\r
+       SUBI    C,40            ;CONVERT TO 6-BIT\r
+       TLNE    ACPNTR,770000   ;HAVE WE STORED SIX BYTES?\r
+       IDPB    C,ACPNTR        ;NO, STORE IT\r
+       JRST    GETIOC          ;GET NEXT CHARACTER\r
+\r
+DEVICE:        JUMPN   ACDEV,ERRCM     ;ERROR IF ALREADY SET\r
+       MOVE    ACDEV,AC0       ;DEVICE NAME\r
+       JRST    DEVNAM          ;COMMON CODE\r
+\r
+NAME:  JUMPN   ACFILE,ERRCM    ;ERROR IF ALREADY SET\r
+       MOVE    ACFILE,AC0      ;FILE NAME\r
+DEVNAM:        MOVE    ACDEL,C         ;SET DELIMITER\r
+       JRST    NAME3           ;GET NEXT SYMBOL\r
+\r
+TERM:  JUMPE   ACDEL,TERM1     ;IF NO PREVIOUS TERMINATOR, THEN FILENAME\r
+       CAIN    ACDEL,"?"       ;...\r
+       JRST    TERM1           ;...\r
+       CAIE    ACDEL,":"       ;IF PREVIOUS DELIMITER\r
+       CAIN    ACDEL,","       ;WAS COLON OR COMMA\r
+TERM1: MOVE    ACFILE,AC0      ;SET FILE\r
+       CAIN    ACDEL,"."       ;IF PERIOD,\r
+       HLLZ    ACEXT,AC0       ;SET EXTENSION\r
+       HRLM    C,ACDELX        ;SAVE PREVIOUS DELIMITER\r
+       JUMPN   ACDEV,.+2       ;IF DEVICE SET USE IT\r
+       SKIPA   ACDEV,ACDEVX    ;OTHERWISE USE LAST DEVICE\r
+       MOVEM   ACDEV,ACDEVX    ;AND DEVICE\r
+       MOVE    ACPPN,PPN       ;PUT PPN IN RIGHT PLACE\r
+IFN FTDISK,<CAIN C,"!"         ;IMPERATIVE?\r
+       POPJ    PP,             ;YES, DON'T ASSUME DEV\r
+       JUMPE   ACFILE,CPOPJ    ;IF THERE IS A FILE,\r
+       JUMPN   ACDEV,.+2       ;BUT NO DEVICE\r
+       MOVSI   ACDEV,(SIXBIT /DSK/)    ;THEN ASSUME DISK>\r
+       POPJ    PP,             ;EXIT\r
+\fERRCM:        HRROI   RC,[SIXBIT /COMMAND ERROR@/]\r
+       JRST    ERRFIN\r
+\r
+IFN FTDISK,<PROGNP:\r
+PROGN1:        HRLZM   RC,PPN          ;COMMA, STORE LEFT HALF\r
+PROGN2:        MOVEI   RC,0            ;CLEAR AC\r
+PROGN3:        PUSHJ   PP,TTYIN\r
+       CAIN    C,","\r
+       JRST    PROGN1          ;STORE LEFT HALF\r
+       HRRM    RC,PPN          ;ASSUME TERMINAL\r
+       CAIN    C,"]"\r
+       JRST    GETIOC          ;YES, RETURN TO MAIN SCAN\r
+       CAIL    C,"0"           ;CHECK FOR VALID NUMBERS\r
+       CAILE   C,"7"\r
+       JRST    ERRCM           ;NOT VALID\r
+       LSH     RC,3            ;SHIFT PREVIOUS RESULT\r
+       ADDI    RC,-"0"(C)      ;ADD IN NEW NUMBER\r
+       JRST    PROGN3          ;GET NEXT CHARACTER>\r
+\fSWITC0:       PUSHJ   PP,SW1          ;PROCESS CHARACTER\r
+SWITCH:        PUSHJ   PP,TTYIN        ;GET NEXT CHARACTER\r
+       CAIE    C,")"           ;END OF STRING?\r
+       JRST    SWITC0          ;NO\r
+       JRST    GETIOC          ;YES\r
+\r
+SW0:   PUSHJ   PP,TTYIN\r
+SW1:   MOVEI   C,-"A"(C)       ;CONVERT FROM ASCII TO NUMERIC\r
+       CAILE   C,"Z"-"A"       ;WITHIN BOUNDS? (IS IT ALPHA?)\r
+       JRST    ERRCM           ;NO, ERROR\r
+       MOVE    RC,[POINT 4,BYTAB]\r
+       IBP     RC\r
+       SOJGE   C,.-1           ;MOVE TO PROPER BYTE\r
+       LDB     C,RC            ;PICK UP BYTE\r
+       JUMPE   C,ERRCM         ;TEST FOR VALID SWITCH\r
+       CAIG    C,SWTABT-SWTAB  ;LEGAL ON SOURCE?\r
+       JUMPL   PP,ERRCM        ;NO, TEST FOR SOURCE\r
+       LDB     RC,[POINT 4,SWTAB-1(C),12]\r
+       CAIN    RC,IO\r
+       SKIPN   CTLSAV          ;IF PASS2 OR IO SWITCH,\r
+       XCT     SWTAB-1(C)      ;EXECUTE INSTRUCTION\r
+       POPJ    PP,             ;EXIT\r
+       TLZ     IO,IOSALL       ;TAKE CARE OF /X\r
+       POPJ    PP,\r
+\r
+DEFINE HELP (TEXT)<\r
+       XLIST\r
+       ASCIZ ?TEXT?\r
+       LIST>\r
+\r
+HLPMES:        HELP <\r
+Switches are :-\r
+/A advance one file\r
+/B backspace one file\r
+/C produce a cref listing\r
+/E list macro expansions (LALL)\r
+/F list in new format (.MFRMT)\r
+/G list in old format (.HWFRMT)\r
+/H type this text\r
+/L reinstate listing (LIST)\r
+/M suppress ascii in macro and repeat expansion (SALL)\r
+/N suppress error printout on tty\r
+/O set MLOFF pseudo-op\r
+/P increase size of the pushdown stack\r
+/Q suppress Q errors on the listing\r
+/S suppress listing (XLIST)\r
+/T rewind device\r
+/X suppress all macro expansions (XALL)\r
+/Z zero the directory\r
+Switches A,B,C,T,W,X, and Z must immediately follow\r
+the device or file to which they refer.\r
+>\r
+\f      DEFINE  SETSW   (LETTER,INSTRUCTION) <  INSTRUCTION\r
+J=     <"LETTER"-"A">-?D9*<I=<"LETTER"-"A">/?D9>\r
+       SETCOD  \I,J>\r
+\r
+       DEFINE  SETCOD          (I,J)\r
+       <BYTAB'I=BYTAB'I!<.-SWTAB>B<4*J+3>>\r
+\r
+BYTAB0=        0                       ;INITIALIZE TABLE\r
+BYTAB1=        0\r
+BYTAB2=        0\r
+\r
+SWTAB:\r
+       SETSW   Z,<TLO  TIO,TIOCLD      >\r
+       SETSW   C,<TLZ  FR,CREFSW       >\r
+       SETSW   P,<SOS  PDP             >\r
+SWTABT:                                ;THE ABOVE SW'S ARE LEGAL ON OUTPUT ONLY\r
+       SETSW   A,<ADDI CS,1            >\r
+       SETSW   B,<SUBI CS,1            >\r
+       SETSW   E,<TLZ  IO,IOPALL!IOSALL        >\r
+IFN FORMSW,<   SETSW   F,<SETZM        HWFMT>\r
+               SETSW   G,<SETOM        HWFMT>>\r
+       SETSW   H,<OUTSTR       HLPMES>\r
+       SETSW   L,<TLZ  IO,IOMSTR       >\r
+       SETSW   M,<TLO  IO,IOPALL!IOSALL        >\r
+       SETSW   N,<HLLOS   TYPERR       >\r
+       SETSW   O,<XCT  OFFML           >\r
+       SETSW   Q,<TLO  FR,ERRQSW       >\r
+       SETSW   S,<TLO  IO,IOMSTR       >\r
+       SETSW   T,<TLO  TIO,TIOLE       >\r
+       SETSW   W,<TLO  TIO,TIORW       >\r
+       SETSW   X,<TLOA IO,IOPALL       >\r
+\r
+BYTAB:                         ;BYTAB CONTAINS AN INDEX TO SWTAB\r
+                               ;IT CONSIST OF 9 4BIT BYTES/WORD\r
+                               ;OR ONE BYTE FOR EACH LETTER\r
+\r
+       +BYTAB0                 ;A-I    BYTE = 1 THROUGH 17 = INDEX\r
+       +BYTAB1                 ;J-R    BYTE = 0 = COMMAND ERROR\r
+       +BYTAB2                 ;S-Z\r
+\r
+IF2,<PURGE I,J,BYTAB0,BYTAB1,BYTAB2>\r
+\fTTYIN:        SOSGE   CTIBUF+2        ;ENUF CHAR.?\r
+       JRST    TTYERR          ;NO\r
+       ILDB    C,CTIBUF+1      ;GET CHARACTER\r
+       CAIE    C," "           ;SKIP BLANKS\r
+       CAIN    C,HT            ;AND TABS\r
+       JRST    TTYIN\r
+       CAIN    C,15            ;CR?\r
+       SETZM   CTIBUF+2        ;YES,IGNORE REST OF LINE\r
+       CAIG C,"Z"+40           ;CHECK FOR LOWER CASE\r
+       CAIGE C,"A"+40\r
+       POPJ    PP,             ;NO,EXIT\r
+       SUBI C,40\r
+       POPJ    PP,             ;YES, EXIT\r
+\r
+TTYERR:        SKIPN   INDEV           ;INPUT DEVICE SEEN?\r
+       JRST    ERRCM           ;NO, SO MISSING "?"\r
+ERRNE: HRROI   RC,[SIXBIT /?NO END STATEMENT ENCOUNTERED ON INPUT FILE@/]\r
+ERRNE0:        SKPINC  V       ;SEE IF WE CAN INPUT A CHAR.\r
+         JFCL          ;BUT ONLY TO DEFEAT ?O\r
+       PUSHJ PP,TYPMSG ;OUTPUT IT\r
+       SKIPE LITLVL    ;SEE IF IN LITERAL\r
+       SKIPN   LITPG   ;PAGE 0 MEANS NOT IN A LITERAL REALY\r
+       JRST ERRNE1     ;NO, TRY OTHERS\r
+       MOVE V,[XWD [SIXBIT /IN LITERAL@/],LITPG]\r
+       PUSHJ PP,PRNUM  ;GO PRINT INFORMATION\r
+ERRNE1:        MOVEI V,0       ;CHECK FOR OTHER PLACES\r
+       SKIPE INDEF\r
+       MOVE V,[XWD [SIXBIT /IN DEFINE@/],DEFPG]\r
+       SKIPE INTXT\r
+       MOVE V,[XWD [SIXBIT /IN TEXT@/],TXTPG]\r
+       SKIPE INREP\r
+       MOVE V,[XWD [SIXBIT /IN CONDITIONAL OR REPEAT@/],REPPG]\r
+       SKIPE INCND\r
+       MOVE V,[XWD [SIXBIT /IN CONDITIONAL@/],CNDPG]\r
+       SKIPGE MACENL\r
+ERRNE2:        MOVE V,[XWD [SIXBIT /IN MACRO CALL@/],CALPG]\r
+       JUMPN V,ERRNE3\r
+       SKIPN   LITLVL          ;HAD ONE PAGE NUMBER ALREADY\r
+       SKIPA   V,[XWD [SIXBIT /@/],PAGENO]     ;BETTER THAN NOTHING\r
+       JRST    .+2\r
+ERRNE3:        PUSHJ PP,PRNUM\r
+       HRROI RC,[SIXBIT /@/]   ;WILL GET A RETURN\r
+       JRST ERRFIN\r
+\r
+ERRMS1:        SIXBIT / ERRORS DETECTED@/\r
+ERRMS2:        SIXBIT /?1 ERROR DETECTED@/\r
+ERRMS3:        SIXBIT /NO ERRORS DETECTED@/\r
+EINIT: MOVE    RC,[XWD ACDEV,[SIXBIT /NOT AVAILABLE@/]]\r
+       JRST    ERRFIN\r
+\fERRCL:        HRRZ    RC,LSTDIR+1     ;GET LST DEV ERROR CODE\r
+       JRST    .+2             ;GET ERROR MESSAGE\r
+ERRCB: HRRZ    RC,BINDIR+1     ;GET BIN DEV ERROR CODE\r
+       JUMPN   RC,ERRTYP\r
+       SOJA    RC,ERRTYP       ;SPECIAL CASE IF ERROR CODE 0\r
+\r
+ERRCF: HRRZ    RC,INDIR+1      ;GET INPUT DEV ERROR CODE\r
+       HLLZ    ACEXT,INDIR+1   ;SET UP EXT\r
+\r
+ERRTYP:        CAIL    RC,TABLND-TABLE ;IS ERROR CODE LEGAL?\r
+       SKIPA   RC,TABLND       ;NO, GIVE CATCH ALL MESSAGE\r
+       MOVE    RC,TABLE(RC)    ;YES, PICK UP MESSAGE\r
+\r
+ERRFIN:        SKPINC  C               ;SEE IN WE CAN INPUT A CHAR.\r
+         JFCL                  ;BUT ONLY TO DEFEAT ?O\r
+       PUSHJ   PP,CRLF\r
+       MOVEI   C,"?"\r
+       PUSHJ   PP,TYO\r
+       PUSHJ   PP,TYPMS1\r
+       CLOSE   LST,            ;GIVE USER A PARTIAL LISTING\r
+       CLOSE   BIN,40          ;BUT NEVER A BUM REL FILE\r
+       JRST    M\r
+\r
+       [SIXBIT /(0) ILLEGAL FILE NAME@/],,ACFILE\r
+TABLE: [SIXBIT /(0) FILE WAS NOT FOUND@/],,ACFILE\r
+       [SIXBIT /(1) NO DIRECTORY FOR PROJECT-PROGRAMMER NUMBER@/],,ACFILE\r
+       [SIXBIT /(2) PROTECTION FAILURE@/],,ACFILE\r
+       [SIXBIT /(3) FILE WAS BEING MODIFIED@/],,ACFILE\r
+       [SIXBIT /(4) RENAME FILE NAME ALREADY EXISTS@/],,ACFILE\r
+       [SIXBIT /(5) ILLEGAL SEQUENCE OF UUOS@/],,ACFILE\r
+       [SIXBIT /(6) BAD UFD OR BAD RIB@/],,ACFILE\r
+       [SIXBIT /(7) NOT A SAV FILE@/],,ACFILE\r
+       [SIXBIT /(10) NOT ENOUGH CORE@/],,ACFILE\r
+       [SIXBIT /(11) DEVICE NOT AVAILABLE@/],,ACFILE\r
+       [SIXBIT /(12) NO SUCH DEVICE@/],,ACFILE\r
+       [SIXBIT /(13) NOT TWO RELOC REG. CAPABILITY@/],,ACFILE\r
+       [SIXBIT /(14) NO ROOM OR QUOTA EXCEEDED@/],,ACFILE\r
+       [SIXBIT /(15) WRITE LOCK ERROR@/],,ACFILE\r
+       [SIXBIT /(16) NOT ENOUGH MONITOR TABLE SPACE@/],,ACFILE\r
+       [SIXBIT /(17) PARTIAL ALLOCATION ONLY@/],,ACFILE\r
+       [SIXBIT /(20) BLOCK NOT FREE ON ALLOCATION@/],,ACFILE\r
+       [SIXBIT /(21) CAN'T SUPERSEDE (ENTER) AN EXISTING DIRECTORY@/],,ACFILE\r
+       [SIXBIT /(22) CAN'T DELETE (RENAME) A NON-EMPTY DIRECTORY@/],,ACFILE\r
+       [SIXBIT /(23) SFD NOT FOUND@/],,ACFILE\r
+       [SIXBIT /(24) SEARCH LIST EMPTY@/],,ACFILE\r
+       [SIXBIT /(25) SFD NESTED TOO DEEPLY@/],,ACFILE\r
+       [SIXBIT /(26) NO-CREATE ON FOR SPECIFIED PATH@/],,ACFILE\r
+\r
+TABLND:        [SIXBIT /(?) LOOKUP, ENTER, OR RENAME ERROR@/],,ACFILE\r
+\fTYPMSG:       PUSHJ   PP,CRLF         ;MOVE TO NEXT LINE\r
+TYPMS1:        HLRZ    CS,RC           ;GET FIRST MESSAGE\r
+       CAIE    CS,-1           ;SKIP IF MINUS ONE\r
+       PUSHJ   PP,TYPM2        ;TYPE MESSAGE\r
+       HRRZ    CS,RC           ;GET SECOND HALF\r
+       PUSHJ   PP,TYPM2\r
+\r
+CRLF:  MOVEI   C,CR            ;OUTPUT CARRIAGE RETURN\r
+       PUSHJ   PP,TYO\r
+       MOVEI   C,LF            ;AND LINE FEED\r
+\r
+TYO:   SOSG    CTOBUF+2        ;BUFFER FULL?\r
+       OUTPUT  CTL,0           ;YES, DUMP IT\r
+       IDPB    C,CTOBUF+1      ;STORE BYTE\r
+       CAIG    C,FF            ;FORM FEED?\r
+       CAIGE   C,LF            ;V TAB OR LINE FEED?\r
+       POPJ    PP,             ;NO\r
+       OUTPUT  CTL,0           ;YES\r
+       POPJ    PP,             ;AND EXIT\r
+\r
+TYPM2: MOVSI   C,(1B0)         ;ANTICIPATE REGISTER WORD\r
+       CAIN    CS,ACFILE       ;FILE NAME ?\r
+       JRST    [JUMPE  ACEXT,.+1       ;YES, TEST FOR EXT\r
+               LSH     ACEXT,-6        ;MAKE SPACE FOR "."\r
+               IOR     ACEXT,[SIXBIT /.   @/]\r
+               JRST    TYPM2A]\r
+       CAIG    CS,17           ;IS IT?\r
+       MOVEM   C,1(CS)\r
+TYPM2A:        HRLI    CS,(POINT 6,,)  ;FORM BYTE POINTER\r
+\r
+TYPM3: ILDB    C,CS            ;GET A SIXBIT BYTE\r
+       CAIN    C,40            ;"@"?\r
+       JRST    TYO             ;YES, TYPE SPACE AND EXIT\r
+       ADDI    C,40            ;NO, FORM 7-BIT ASCII\r
+       PUSHJ   PP,TYO          ;OUTPUT CHARACTER\r
+       JRST    TYPM3\r
+\r
+\fXCEEDS:       ADDI SX,2000            ;ADJUST SYMBOL POINTER\r
+XCEED: PUSHJ   PP,SAVEXS       ;SAVE THE REGISTERS\r
+       HRRZ    1,JOBREL        ;GET CURRENT TOP\r
+       MOVEI   0,2000(1)\r
+       CORE    0,              ;REQUEST MORE CORE\r
+       JRST    XCEED2          ;ERROR, BOMB OUT\r
+       HRRZ    2,JOBREL        ;GET NEW TOP\r
+\r
+XCEED1:        MOVE    0,0(1)          ;GET ORIGIONAL\r
+       MOVEM   0,0(2)          ;STORE IN NEW LOCATION\r
+       SUBI    2,1             ;DECREMENT UPPER\r
+       CAMLE   1,SYMBOL        ;HAVE WE ARRIVED?\r
+       SOJA    1,XCEED1        ;NO, GET ANOTHER\r
+       MOVEI   1,2000\r
+       ADDM    1,SYMBOL\r
+       ADDM    1,SYMTOP\r
+       PUSHJ   PP,SRCHI        ;RE-INITIALIZE SYMBOL TABLE\r
+       JRST    RSTRXS          ;RESTORE REGISTERS AND EXIT\r
+\r
+XCEED2:        HRROI   RC,[SIXBIT /INSUFFICIENT CORE@/]\r
+       JRST    ERRNE0\r
+PDPERR:        HRROI   RC,[SIXBIT .PDP OVERFLOW, TRY /P@.]\r
+       JRST    ERRNE0\r
+\r
+PRNUM: HLRZ CS,V       ;GET MESSAGE\r
+       PUSHJ PP,TYPM2\r
+       MOVEI   CS,[SIXBIT /ON PAGE@/]\r
+       PUSHJ   PP,TYPM2\r
+       MOVE AC0,(V)    ;GET PAGE\r
+       PUSHJ PP,DP1    ;PRINT NUMBER\r
+       MOVEI C,40\r
+       PUSHJ PP,TYO\r
+       SKIPN AC1,1(V)  ;GET SEQ NUM IF THERE\r
+       POPJ PP,        ;NO, RETURN\r
+       MOVEM AC1,OUTSQ\r
+       MOVEI   CS,[SIXBIT /LINE@/]\r
+       PUSHJ   PP,TYPM2\r
+       MOVEI AC0,OUTSQ ;PRINT IT\r
+       OUTPUT CTL,0    ;TO MAKE THINGS PRINT IN RIGHT ORDER\r
+       DDTOUT AC0,\r
+       MOVEI C,40\r
+       JRST TYO        ;AND RETURN\r
+\r
+DP1:   IDIVI AC0,?D10\r
+       HRLM AC1,(PP)\r
+       JUMPE   AC0,.+2\r
+       PUSHJ PP,DP1\r
+       HLRZ C,(PP)\r
+       ADDI C,"0"\r
+       JRST TYO\r
+\fRIM0: TDO     FR,AC0          ;SET RIM/RIM10 FLAG\r
+       TLNE    FR,PNCHSW       ;FORGET IT IF PUNCH RESET\r
+       SETSTS  BIN,IB          ;SET TO IMAGE BINARY MODE\r
+       POPJ    PP,\r
+\r
+ROUT:  EXCH CS,RIMLOC\r
+       SUB PP,[XWD 1,1]        ;CLEAR OUT STACK WFW\r
+       TLNE FR,R1BSW\r
+       JRST ROUT6\r
+       TLNN    FR,RIM1SW\r
+       JRST    ROUT1\r
+       JUMPE   CS,ROUT1        ;RIM10 OUTPUT\r
+       SUB     CS,RIMLOC\r
+       JUMPE   CS,ROUT1\r
+       JUMPG   CS,ERRAX\r
+       MOVEI   C,0\r
+       PUSHJ   PP,PTPBIN\r
+       AOJL    CS,.-1\r
+ROUT1: MOVSI   C,(DATAI PTR,)  ;RIM OUTPUT\r
+       HRR C,LOCO              ;GET ADDRESS\r
+       TLNE    FR,RIM1SW       ;NO DATAI IF RIM10\r
+       AOSA    RIMLOC\r
+       PUSHJ   PP,PTPBIN       ;OUTPUT\r
+       MOVE    C,AC0           ;CODE\r
+       AOSA    LOCO            ;INCREMENT CURRENT LOCATION\r
+\r
+OUTBIN:        TLNN    FR,RIMSW!RIM1SW!R1BSW   ;EXIT IF RIM MODE\r
+PTPBIN:        TLNN    FR,PNCHSW       ;EXIT IF PUNCH NOT REQUESTED\r
+       POPJ    PP,\r
+       SOSG    BINBUF+2        ;TEST FOR BUFFER FULL\r
+       PUSHJ   PP,DMPBIN       ;YES, DUMP IT\r
+       IDPB    C,BINBUF+1      ;DEPOSIT BYTE\r
+       POPJ    PP,             ;EXIT\r
+\r
+\fDMPBIN:       OUT     BIN,0           ;DUMP THE BUFFER\r
+       POPJ    PP,             ;NO ERRORS\r
+TSTBIN:        GETSTS  BIN,C           ;GET STSTUS BITS\r
+       TRNN    C,ERRBIT        ;ERROR?\r
+       POPJ    PP,             ;NO, EXIT\r
+       MOVE    AC0,BINDEV      ;YES, GET TAG\r
+       JRST    ERRLST          ;TYPE MESSAGE AND ABORT\r
+\r
+DMPLST:        OUT     LST,0           ;OUTPUT BUFFER\r
+       POPJ    PP,             ;NO ERRORS\r
+TSTLST:        GETSTS  LST,C           ;ANY ERRORS?\r
+       TRNN    C,ERRBIT\r
+       POPJ    PP,             ;NO, EXIT\r
+       MOVE    AC0,LSTDEV\r
+ERRLST:        MOVSI   RC,[SIXBIT /OUTPUT WRITE-LOCK ERROR DEVICE@/]\r
+       TRNE    C,IOIMPM        ;IMPROPER MODE?\r
+       JRST    ERRFIN          ;YES\r
+       MOVSI   RC,[SIXBIT /OUTPUT DATA ERROR DEVICE@/]\r
+       TRNE    C,IODERR        ;DEVICE DATA ERROR?\r
+       JRST    ERRFIN          ;YES\r
+       MOVSI   RC,[SIXBIT /OUTPUT CHECKSUM OR PARITY ERROR DEVICE@/]\r
+       TRNE    C,IODTER        ;IS IT\r
+       JRST    ERRFIN          ;YES\r
+       MOVE    CS,AC0          ;GET DEVICE\r
+       DEVCHR  CS,             ;FIND OUT WHAT IT IS\r
+       MOVSI   RC,[SIXBIT /OUTPUT QUOTA EXCEEDED ON DEVICE@/]\r
+       TLNN    CS,DSKBIT       ;SKIP IF DSK OUTPUT\r
+       MOVSI   RC,[SIXBIT /OUTPUT BLOCK TOO LARGE DEVICE@/]\r
+       JRST    ERRFIN\r
+\f      \r
+R1BDMP:        SETCM CS,R1BCNT\r
+       JUMPE CS,R1BI\r
+       HRLZS C,CS\r
+       HRR C,R1BLOC\r
+       HRRI C,-1(C)\r
+       MOVEM C,R1BCHK\r
+       PUSHJ PP,PTPBIN\r
+       HRRI CS,R1BBLK\r
+R1BDM1:        MOVE C,0(CS)\r
+       ADDM C,R1BCHK\r
+       PUSHJ PP,PTPBIN\r
+       AOBJN CS,R1BDM1\r
+       MOVE C,R1BCHK\r
+       PUSHJ PP,PTPBIN\r
+R1BI:  SETOM R1BCNT\r
+       PUSH PP,LOCO\r
+       POP PP,R1BLOC\r
+       POPJ PP,\r
+\r
+ROUT6: CAME CS,RIMLOC\r
+       PUSHJ PP,R1BDMP\r
+       AOS C,R1BCNT\r
+       MOVEM AC0,R1BBLK(C)\r
+       AOS LOCO\r
+       CAIN C,.R1B-1\r
+       PUSHJ PP,R1BDMP\r
+       AOS RIMLOC\r
+       POPJ PP,\r
+       \r
+\r
+\fREAD0:        PUSHJ   PP,EOT          ;END OF TAPE\r
+\r
+READ:  SOSGE   IBUF+2          ;BUFFER EMPTY?\r
+       JRST    READ3           ;YES\r
+READ1: ILDB    C,IBUF+1        ;PLACE CHARACTER IN C\r
+       MOVE CS,@IBUF+1         ;CHECK FOR SEQUENCE NUMBER\r
+       TRNN CS,1\r
+       JRST READ1A\r
+       CAIN CS,1               ;CHECK FOR SPECIAL\r
+       MOVE CS,[<ASCII/     />+1]\r
+       MOVEM CS,SEQNO\r
+       MOVEM CS,SEQNO2\r
+       MOVNI CS,4\r
+       ADDM CS,IBUF+2          ;ADJUST WORD COUNT\r
+REPEAT 4,<     IBP IBUF+1>     ;SKIP SEQ NO\r
+       PUSHJ PP,READ   ;AND THE TAB\r
+       JRST    READ            ;GET NEXT CHARACTER\r
+\r
+READ1A:        JUMPE   C,READ          ;IGNORE NULL\r
+       CAIN    C,32            ;IF IT'S A "?Z"\r
+       MOVEI   C,LF            ;TREAT IT AS A "LF"\r
+       CAIE    C,37            ;CONTROL ?\r
+       POPJ    PP,\r
+       MOVEI   C,"?"           ;MAKE CONTROL-SHIFT ? VISIBLE\r
+       PUSHJ   PP,RSW2\r
+       MOVEI   C,"?"\r
+       PUSHJ   PP,RSW2\r
+READ2: PUSHJ   PP,READ         ;YES, TEST FOR LINE FEED\r
+       PUSHJ   PP,RSW2         ;LIST IN ANY EVENT\r
+       CAIG    C,FF            ;IS IT ONE OF\r
+       CAIGE   C,LF            ;LF, VT, OR FF?\r
+       JRST    READ2           ;NO\r
+       PUSHJ   PP,OUTIM1       ;YES, DUMP THE LINE\r
+       JRST    READ            ;RETURN NEXT CHARACTER\r
+\r
+READ3: IN      CHAR,0          ;GET NEXT BUFFER\r
+       JRST    READ            ;NO ERRORS\r
+       GETSTS  CHAR,C\r
+       TRNN    C,ERRBIT!2000   ;ERRORS?\r
+       JRST    READ0           ;EOF\r
+       MOVE    AC0,INDEV\r
+       MOVSI   RC,[SIXBIT/ INPUT PHYSICAL END OF TAPE DEVICE@/]\r
+       TRNE    C,2000\r
+       JRST    ERRFIN          ;E-O-T\r
+       MOVSI   RC,[SIXBIT /MONITOR DETECTED SOFTWARE INPUT ERROR DEVICE@/]\r
+       TRNE    C,IOIMPM        ;IMPROPER MODE?\r
+       JRST    ERRFIN          ;YES\r
+       MOVSI   RC,[SIXBIT /INPUT DATA ERROR DEVICE@/]\r
+       TRNE    C,IODERR        ;DEVICE DATA ERROR?\r
+       JRST    ERRFIN          ;YES\r
+       MOVSI   RC,[SIXBIT /INPUT CHECKSUM OR PARITY ERROR DEVICE@/]\r
+       TRNN    C,IODTER\r
+       MOVSI   RC,[SIXBIT /INPUT BLOCK TOO LARGE DEVICE@/]\r
+       JRST    ERRFIN\r
+\r
+\fOUTAB2:       PUSHJ   PP,OUTTAB       ;PRINT TWO TABS\r
+OUTTAB:        MOVEI   C,HT\r
+PRINT: CAIE    C,CR            ;IS THIS A CR?\r
+       CAIN    C,LF            ;OR LF?\r
+       JRST    OUTCR           ;YES, GO PROCESS\r
+       CAIN    C,FF            ;FORM FEED?\r
+       JRST    OUTFF           ;YES, FORCE NEW PAGE\r
+       JRST    OUTL\r
+\r
+OUTCR: TRNN    ER,ERRORS!LPTSW!TTYSW\r
+       POPJ    PP,\r
+       MOVEI   C,CR            ;CARRIAGE RETURN, LINE FEED\r
+       PUSHJ   PP,OUTL\r
+       SOSGE   LPP             ;END OF PAGE?\r
+       TLO     IO,IOPAGE       ;YES, SET FLAG\r
+       TRCA    C,7             ;FORM LINE FEED AND SKIP\r
+\r
+OUTL:  TLZN    IO,IOPAGE       ;NEW PAGE REQUESTED?\r
+       JRST    OUTC            ;NO\r
+       JUMP1   OUTC            ;YES, BYPASS IF PASS ONE\r
+       PUSH    PP,C            ;SAVE C AND CS\r
+       PUSH    PP,CS\r
+       PUSH    PP,ER\r
+       TLNN    IO,IOMSTR!IOPROG\r
+       HRR     ER,OUTSW\r
+       TLNE    IO,IOCREF       ;IF DOING CREF OUTPUT NOW\r
+       TLNE    FR,CREFSW       ;AND CREFFING (JUST IN CASE)\r
+       JRST    .+2\r
+       PUSHJ   PP,CLSC3        ;CLOSE IT OUT\r
+       HLLM    IO,(PP)         ;SAVE THIS NEW STATE OF IO\r
+       MOVEI   C,.LPP\r
+       MOVEM   C,LPP           ;SET NEW COUNTER\r
+       MOVEI   C,CR\r
+       PUSHJ   PP,OUTC\r
+       MOVEI   C,FF\r
+       PUSHJ   PP,OUTC         ;OUTPUT FORM FEED\r
+       MOVEI   CS,TBUF\r
+       PUSHJ   PP,OUTAS0       ;OUTPUT TITLE\r
+       MOVEI   CS,VBUF\r
+       PUSHJ   PP,OUTAS0       ;OUTPUT VERSION\r
+       MOVEI   CS,DBUF\r
+       PUSHJ   PP,OUTAS0       ; AND DATE\r
+       MOVE    C,PAGENO\r
+       PUSHJ   PP,DNC          ;OUTPUT PAGE NUMBER\r
+       AOSG    PAGEN.          ;FIRST PAGE OF THIS NUMBER?\r
+       JRST    OUTL1           ;YES\r
+       MOVEI   C,"-"           ;NO, PUT OUT MODIFIER\r
+       PUSHJ   PP,OUTC\r
+       MOVE    C,PAGEN.\r
+       PUSHJ   PP,DNC\r
+OUTL1: PUSHJ   PP,OUTCR\r
+       MOVEI CS,DEVBUF\r
+       PUSHJ PP,OUTAS0\r
+       HRRZ    CS,SUBTTX       ;SWITCH FOR SUB-TITLE\r
+       SKIPE   0(CS)           ;IS THERE A SUB-TITLE?\r
+       PUSHJ   PP,OUTTAB       ;YES, OUTPUT A TAB\r
+       PUSHJ   PP,SOUT20       ;OUTPUT ASCII WITH CARRIAGE RETURN\r
+       PUSHJ   PP,OUTCR\r
+       POP     PP,ER\r
+       POP     PP,CS           ;RESTORE REGISTERS\r
+       POP     PP,C\r
+\r
+OUTC:  TRNE    ER,ERRORS!TTYSW\r
+       PUSHJ   PP,TYO\r
+       TRNN    ER,LPTSW\r
+       POPJ    PP,\r
+OUTLST:        SOSG    LSTBUF+2        ;BUFFER FULL?\r
+       PUSHJ   PP,DMPLST       ;YES, DUMP IT\r
+COMMENT $ REG DOESN'T LIKE THIS FEATURE ANY MORE 9-5-72\r
+$\r
+       IDPB    C,LSTBUF+1      ;STORE BYTE\r
+       POPJ    PP,             ;EXIT\r
+\r
+\fPAGE0:        PUSHJ   PP,STOUTS       ;PAGE PSEUDO-OP\r
+OUTFF1:        TLNE    IO,IOCREF       ;CURRENTLY DOING CREF?\r
+       TLNE    IO,IOPROG       ;AND NOT XLISTED?\r
+       JRST    OUTFF           ;NO\r
+       HRR     ER,OUTSW\r
+       PUSHJ   PP,CLSCRF\r
+       PUSHJ   PP,OUTCR\r
+       HRRI    ER,0\r
+OUTFF: TLO     IO,IOPAGE\r
+OUTFF2:        SETOM   PAGEN.\r
+       AOS     PAGENO\r
+       POPJ    PP,\r
+\r
+TIMOUT:        IDIVI   2,?D60*?D1000\r
+TIMOU1:        IDIVI   2,?D60\r
+       PUSH    PP,3            ;SAVE MINUTES\r
+       PUSHJ   PP,OTOD         ;STORE HOURS\r
+       MOVEI   3,":"           ;SEPARATE BY COLON\r
+       IDPB    3,CS\r
+       POP     PP,2            ;STORE MINUTES\r
+OTOD:  IDIVI   2,?D10\r
+       ADDI    2,60            ;FORM ASCII\r
+       IDPB    2,CS\r
+       ADDI    3,60\r
+       IDPB    3,CS\r
+       POPJ    PP,\r
+\r
+DATOUT:        IDIVI   1,?D31          ;GET DAY\r
+       ADDI    2,1\r
+       CAIG    2,?D9           ;TWO DIGITS?\r
+       ADDI    2,7760*?D10     ;NO, PUT IN SPACE\r
+       PUSHJ   PP,OTOD         ;STORE DAY\r
+       IDIVI   1,?D12          ;GET MONTH\r
+       MOVE    2,DTAB(2)       ;GET MNEMONIC\r
+       IDPB    2,CS            ;DEPOSIT RIGHT MOST 7 BITS\r
+       LSH     2,-7            ;SHIFT NEXT IN\r
+       JUMPN   2,.-2           ;DEPOSIT IFIT EXISTS\r
+       MOVEI   2,?D64(1)       ;GET YEAR\r
+       JRST    OTOD            ;STORE IT\r
+\r
+DTAB:  "-NAJ-"\r
+       "-BEF-"\r
+       "-RAM-"\r
+       "-RPA-"\r
+       "-YAM-"\r
+       "-NUJ-"\r
+       "-LUJ-"\r
+       "-GUA-"\r
+       "-PES-"\r
+       "-TCO-"\r
+       "-VON-"\r
+       "-CED-"\r
+\fSUBTTL        MACHINE INSTRUCTION SEARCH ROUTINES\r
+IFE OPHSH,<\r
+OPTSCH:        MOVEI   RC,0\r
+       MOVEI   ARG,1B?L<OP1END-OP1TOP> ;SET UP INDEX\r
+       MOVEI   V,1B?L<OP1END-OP1TOP>/2 ;SET UP INCREMENT\r
+\r
+OPT1A: CAMN    AC0,OP1TOP(ARG) ;ARE WE POINTING AT SYMBOL?\r
+       JRST    OPT1D           ;YES, GET THE CODE\r
+       JUMPE   V,POPOUT        ;TEST FOR END\r
+       CAML    AC0,OP1TOP(ARG) ;NO, SHOULD WE MOVE DOWN?\r
+       TDOA    ARG,V           ;NO, INCREMENT\r
+OPT1B: SUB     ARG,V           ;YES, DECREMENT\r
+       ASH     V,-1            ;HALVE INCREMENT\r
+       CAIG    ARG,OP1END-OP1TOP       ;ARE WE OUT OF BOUNDS?\r
+       JRST    OPT1A           ;NO, TRY AGAIN\r
+       JRST    OPT1B           ;YES, BRING IT DOWN A PEG\r
+>\r
+\r
+IFN OPHSH,<\r
+OPTSCH:        MOVE    ARG,AC0         ;GET SIXBIT NAME\r
+       TLZ     ARG,400000      ;CLEAR SIGN BIT\r
+       IDIVI   ARG,PRIME       ;REM. GOES IN V\r
+       CAMN    AC0,OP1TOP(V)   ;ARE WE POINTING AT SYMBOL?\r
+       JRST    OPT1D           ;YES\r
+       SKIPN   OP1TOP(V)       ;TEST FOR END\r
+       POPJ    PP,             ;SYMBOL NOT FOUND\r
+       HLRZ    RC,ARG          ;SAVE LHS OF QUOTIENT\r
+       SKIPA   ARG,RC          ;GET IT BACK\r
+OPT1A: ADDI    ARG,(RC)        ;INCREMENT ARG\r
+       ADDI    V,(ARG)         ;QUADRATIC INCREASE TO V\r
+       CAIL    V,PRIME         ;V IS MODULO PRIME\r
+       JRST    [SUBI   V,PRIME\r
+               JRST    .-1]\r
+       CAMN    AC0,OP1TOP(V)   ;IS THIS IT?\r
+       JRST    OPT1D           ;YES\r
+       SKIPE   OP1TOP(V)       ;END?\r
+       JRST    OPT1A           ;TRY AGAIN\r
+       POPJ    PP,             ;FAILED\r
+>\r
+OPT1D:\r
+IFN OPHSH,<    SETZ    RC,     ;CLEAR RELOCATION\r
+       MOVE    ARG,V           ;GET INDEX IN RIGHT ACC.>\r
+       IDIVI   ARG,4           ;ARG HAS INDEX USED IN OPTTAB\r
+       LDB     V,OPTTAB(V)     ;V HAS INDEX TO OPTTAB\r
+       CAIL    V,700           ;PSEUDO-OP OR IO INSTRUCTION?\r
+       JRST    OPT1G           ;YES\r
+       ROT     V,-?D9          ;LEFT JUSTIFY\r
+       HRRI    V,OP            ;POINT TO BASIC FORMAT\r
+OPT1F: AOS     0(PP)           ;SET FOR SKIP EXIT\r
+       MOVEI   SDEL,%OP        ;SET OP-CODE CROSS-REF FLAG\r
+       JRST    CREF            ;TEST AND OUTPUT, AC0=SYMBOL, V=VALUE\r
+\r
+OPT1G: JUMPG   AC0,.+3         ;IF ".","$",OR "%" USE TABLE 1\r
+       TLNN    AC0,200000      ;PSEUDO-OP OR IO INST., TEST FOR PROPER TABLE\r
+       SKIPA   V,OP2TAB-700(V) ;2ND TABLE, FIRST LETTER IS "A" TO "O"\r
+       MOVE    V,OP1TAB-700(V) ;1ST TABLE, ..."P" TO "Z"\r
+       JRST    OPT1F           ;EXIT\r
+\r
+OPTTAB:\r
+IFE OPHSH,<    POINT   9,OP1COD-1(ARG),35>\r
+       POINT   9,OP1COD  (ARG), 8\r
+       POINT   9,OP1COD  (ARG),17\r
+       POINT   9,OP1COD  (ARG),26\r
+IFN OPHSH,<    POINT   9,OP1COD  (ARG),35>\r
+\r
+\fIFDEF .XCREF,<        .XCREF  ;DON'T CREF THIS MESS>\r
+IFE OPHSH,<\r
+       RELOC   .-1\r
+OP1TOP:\r
+       RELOC\r
+\r
+       IF1,<N1=0\r
+       DEFINE  X  <N1=N1+1 ;>>\r
+\r
+       IF2, <\r
+       N2=?D36\r
+       CC=0\r
+       RELOC   OP1COD\r
+       RELOC\r
+DEFINE X (SYMBOL,CODE) \r
+<SIXBIT /SYMBOL/\r
+CC=CC+CODE?<N2=N2-9>\r
+IFE N2, <OUTLIT>>\r
+\r
+DEFINE OUTLIT  <\r
+       RELOC\r
+       +CC\r
+       RELOC\r
+N2=?D36+<CC=0>>>\r
+       SYN X,XX                ;JUST THE SAME MACRO>\r
+\f\r
+IFN OPHSH,<\r
+DEFINE XX (SB,CD)<>            ;A NUL MACRO\r
+OP1TOP:        IF1,<   BLOCK PRIME>\r
+IF1,<DEFINE X (SB,CD)<>>\r
+IF2,<\r
+DEFINE OPSTOR (RM)<.$'RM=.$'RM+<OPCODE?<9*<3-R&3>>>>\r
+\r
+DEFINE X (SB,CD)<\r
+SXB=<SIXBIT /SB/>\r
+Q=SXB&-1?-1/PRIME\r
+R=SXB&-1?-1-Q*PRIME\r
+H=Q?-22&777\r
+TRY=1\r
+OPCODE=CD\r
+ITEM Q,\R\r
+IFL PRIME-TRY,<PRINTX HASH FAILURE>>\r
+\r
+DEFINE ITEM (QT,RM)<\r
+IFN .%'RM,<R=R+H\r
+IFL PRIME-R,<R=R-R/PRIME*PRIME>\r
+H=H+Q?-22&777\r
+IFGE PRIME-<TRY=TRY+1>,<ITEM Q,\R>>\r
+IFE .%'RM,<.%'RM=SXB\r
+OPSTOR \<R/4>>>>\r
+IF1,<\r
+DEFINE GETSYM (N)<.%'N=0>\r
+\r
+N=0\r
+       XLIST\r
+REPEAT PRIME,<GETSYM \N\r
+N=N+1>\r
+DEFINE GETSYM (N)<.$'N=0>\r
+N=0\r
+REPEAT <PRIME/4+1>,<GETSYM \N\r
+N=N+1>\r
+>\r
+       LIST>\r
+\r
+;MACRO TO HANDLE KI10 OP-CODES\r
+DEFINE XK (SB,CD) <>           ;NUL MACRO\r
+\fIFN OPHSH,<           ;PUT THE MOST USED OP CODES FIRST\r
+X      JRST  , 254\r
+X      PUSHJ , 260\r
+X      POPJ  , 263\r
+X      PUSH  , 261\r
+X      POP   , 262\r
+X      AOS   , 350\r
+X      ASCIZ , 701\r
+X      CALLI , 047\r
+X      EXTERN, 724\r
+X      INTERN, 744\r
+X      JFCL  , 255\r
+X      JSP   , 265\r
+X      MOVE  , 200\r
+X      MOVEI , 201\r
+X      MOVEM , 202\r
+X      SETZM , 402\r
+X      SIXBIT, 717\r
+X      SOS   , 370\r
+X      TLNE  , 603\r
+X      TLNN  , 607\r
+X      TLO   , 661\r
+X      TLZ   , 621\r
+X      TLZA  , 625\r
+X      TLZE  , 623\r
+X      TLZN  , 627\r
+X      TRNE  , 602\r
+X      TRNN  , 606\r
+X      TRZ   , 620\r
+>\r
+\fX     ADD   , 270\r
+X      ADDB  , 273\r
+X      ADDI  , 271\r
+X      ADDM  , 272\r
+\r
+X      AND   , 404\r
+X      ANDB  , 407\r
+X      ANDCA , 410\r
+X      ANDCAB, 413\r
+X      ANDCAI, 411\r
+X      ANDCAM, 412\r
+X      ANDCB , 440\r
+X      ANDCBB, 443\r
+X      ANDCBI, 441\r
+X      ANDCBM, 442\r
+X      ANDCM , 420\r
+X      ANDCMB, 423\r
+X      ANDCMI, 421\r
+X      ANDCMM, 422\r
+X      ANDI  , 405\r
+X      ANDM  , 406\r
+\r
+X      AOBJN , 253\r
+X      AOBJP , 252\r
+\r
+X      AOJ   , 340\r
+X      AOJA  , 344\r
+X      AOJE  , 342\r
+X      AOJG  , 347\r
+X      AOJGE , 345\r
+X      AOJL  , 341\r
+X      AOJLE , 343\r
+X      AOJN  , 346\r
+\r
+XX     AOS   , 350\r
+X      AOSA  , 354\r
+X      AOSE  , 352\r
+X      AOSG  , 357\r
+X      AOSGE , 355\r
+X      AOSL  , 351\r
+X      AOSLE , 353\r
+X      AOSN  , 356\r
+X      ARG   , 320\r
+IFN IIISW,<X   ASCID , 771>\r
+X      ASCII , 700\r
+XX     ASCIZ , 701\r
+\r
+X      ASH   , 240\r
+X      ASHC  , 244\r
+\r
+X      ASUPPR, 705\r
+X      BLKI  , 702\r
+X      BLKO  , 703\r
+X      BLOCK , 704\r
+\r
+X      BLT   , 251\r
+\r
+X      BYTE  , 707\r
+\r
+XX     CAI   , 300\r
+X      CAIA  , 304\r
+X      CAIE  , 302\r
+X      CAIG  , 307\r
+X      CAIGE , 305\r
+X      CAIL  , 301\r
+X      CAILE , 303\r
+X      CAIN  , 306\r
+\r
+X      CALL  , 040\r
+XX     CALLI , 047\r
+\r
+XX     CAM   , 310\r
+X      CAMA  , 314\r
+X      CAME  , 312\r
+X      CAMG  , 317\r
+X      CAMGE , 315\r
+X      CAML  , 311\r
+X      CAMLE , 313\r
+X      CAMN  , 316\r
+\r
+XX     CLEAR , 400\r
+XX     CLEARB, 403\r
+XX     CLEARI, 401\r
+XX     CLEARM, 402\r
+\r
+X      CLOSE , 070\r
+X      COMMEN, 770\r
+\r
+\r
+X      CONI  , 710\r
+X      CONO  , 711\r
+X      CONSO , 712\r
+X      CONSZ , 713\r
+\r
+XX     DATA. , 020\r
+\r
+X      DATAI , 714\r
+X      DATAO , 715\r
+X      DEC   , 716\r
+X      DEFINE, 717\r
+X      DEPHAS, 720\r
+\r
+X      DFN   , 131\r
+\r
+X      DIV   , 234\r
+X      DIVB  , 237\r
+X      DIVI  , 235\r
+X      DIVM  , 236\r
+\r
+X      DPB   , 137\r
+\r
+X      END   , 721\r
+\r
+X      ENTER , 077\r
+\r
+X      ENTRY , 722\r
+\r
+X      EQV   , 444\r
+X      EQVB  , 447\r
+X      EQVI  , 445\r
+X      EQVM  , 446\r
+\r
+X      EXCH  , 250\r
+\r
+X      EXP   , 723\r
+XX     EXTERN, 724\r
+\r
+X      FAD   , 140\r
+X      FADB  , 143\r
+X      FADL  , 141\r
+X      FADM  , 142\r
+\r
+X      FADR  , 144\r
+X      FADRB , 147\r
+X      FADRI , 145\r
+X      FADRM , 146\r
+\r
+X      FDV   , 170\r
+X      FDVB  , 173\r
+X      FDVL  , 171\r
+X      FDVM  , 172\r
+\r
+X      FDVR  , 174\r
+X      FDVRB , 177\r
+X      FDVRI , 175\r
+X      FDVRM , 176\r
+\r
+XX     FIN.  , 021\r
+\r
+X      FMP   , 160\r
+X      FMPB  , 163\r
+X      FMPL  , 161\r
+X      FMPM  , 162\r
+\r
+\fX     FMPR  , 164\r
+X      FMPRB , 167\r
+X      FMPRI , 165\r
+X      FMPRM , 166\r
+\r
+X      FSB   , 150\r
+X      FSBB  , 153\r
+X      FSBL  , 151\r
+X      FSBM  , 152\r
+\r
+X      FSBR  , 154\r
+X      FSBRB , 157\r
+X      FSBRI , 155\r
+X      FSBRM , 156\r
+\r
+X      FSC   , 132\r
+\r
+X      GETSTS, 062\r
+\r
+\fX     HALT  , 725\r
+X      HISEG , 706\r
+\r
+X      HLL   , 500\r
+X      HLLE  , 530\r
+X      HLLEI , 531\r
+X      HLLEM , 532\r
+X      HLLES , 533\r
+X      HLLI  , 501\r
+X      HLLM  , 502\r
+X      HLLO  , 520\r
+X      HLLOI , 521\r
+X      HLLOM , 522\r
+X      HLLOS , 523\r
+X      HLLS  , 503\r
+X      HLLZ  , 510\r
+X      HLLZI , 511\r
+X      HLLZM , 512\r
+X      HLLZS , 513\r
+\r
+X      HLR   , 544\r
+X      HLRE  , 574\r
+X      HLREI , 575\r
+X      HLREM , 576\r
+X      HLRES , 577\r
+X      HLRI  , 545\r
+X      HLRM  , 546\r
+X      HLRO  , 564\r
+X      HLROI , 565\r
+X      HLROM , 566\r
+X      HLROS , 567\r
+X      HLRS  , 547\r
+X      HLRZ  , 554\r
+X      HLRZI , 555\r
+X      HLRZM , 556\r
+X      HLRZS , 557\r
+\r
+\fX     HRL   , 504\r
+X      HRLE  , 534\r
+X      HRLEI , 535\r
+X      HRLEM , 536\r
+X      HRLES , 537\r
+X      HRLI  , 505\r
+X      HRLM  , 506\r
+X      HRLO  , 524\r
+X      HRLOI , 525\r
+X      HRLOM , 526\r
+X      HRLOS , 527\r
+X      HRLS  , 507\r
+X      HRLZ  , 514\r
+X      HRLZI , 515\r
+X      HRLZM , 516\r
+X      HRLZS , 517\r
+\r
+X      HRR   , 540\r
+X      HRRE  , 570\r
+X      HRREI , 571\r
+X      HRREM , 572\r
+X      HRRES , 573\r
+X      HRRI  , 541\r
+X      HRRM  , 542\r
+X      HRRO  , 560\r
+X      HRROI , 561\r
+X      HRROM , 562\r
+X      HRROS , 563\r
+X      HRRS  , 543\r
+X      HRRZ  , 550\r
+X      HRRZI , 551\r
+X      HRRZM , 552\r
+X      HRRZS , 553\r
+\r
+X      IBP   , 133\r
+\r
+X      IDIV  , 230\r
+X      IDIVB , 233\r
+X      IDIVI , 231\r
+X      IDIVM , 232\r
+\r
+X      IDPB  , 136\r
+\r
+X      IF1   , 726\r
+X      IF2   , 727\r
+X      IFB   , 730\r
+X      IFDEF , 731\r
+X      IFDIF , 732\r
+X      IFE   , 733\r
+X      IFG   , 734\r
+X      IFGE  , 735\r
+X      IFIDN , 736\r
+X      IFL   , 737\r
+X      IFLE  , 740\r
+X      IFN   , 741\r
+X      IFNB  , 742\r
+X      IFNDEF, 743\r
+\r
+X      ILDB  , 134\r
+\r
+X      IMUL  , 220\r
+X      IMULB , 223\r
+X      IMULI , 221\r
+X      IMULM , 222\r
+\r
+X      IN    , 056\r
+XX     IN.   , 016\r
+X      INBUF , 064\r
+XX     INF.  , 026\r
+X      INIT  , 041\r
+X      INPUT , 066\r
+\r
+XX     INTERN, 744\r
+\r
+X      IOR   , 434\r
+X      IORB  , 437\r
+X      IORI  , 435\r
+X      IORM  , 436\r
+\r
+\r
+X      IOWD  , 745\r
+X      IRP   , 746\r
+X      IRPC  , 747\r
+X      JCRY  , 750\r
+X      JCRY0 , 751\r
+X      JCRY1 , 752\r
+X      JEN   , 753\r
+\r
+XX     JFCL  , 255\r
+\r
+X      JFFO  , 243\r
+X      JFOV  , 765\r
+X      JOV   , 754\r
+\r
+X      JRA   , 267\r
+XX     JRST  , 254\r
+\r
+X      JRSTF , 755\r
+\r
+X      JSA   , 266\r
+XX     JSP   , 265\r
+X      JSR   , 264\r
+\r
+XX     JUMP  , 320\r
+XX     JUMPA , 324\r
+X      JUMPE , 322\r
+X      JUMPG , 327\r
+X      JUMPGE, 325\r
+X      JUMPL , 321\r
+X      JUMPLE, 323\r
+X      JUMPN , 326\r
+\r
+X      LALL  , 756\r
+\r
+X      LDB   , 135\r
+\r
+X      LIST  , 757\r
+X      LIT   , 760\r
+X      LOC   , 761\r
+\r
+X      LOOKUP, 076\r
+\r
+X      LSH   , 242\r
+X      LSHC  , 246\r
+XK     MAP   , 257\r
+X      MLOFF , 767\r
+X      MLON  , 766\r
+XX     MOVE  , 200\r
+XX     MOVEI , 201\r
+XX     MOVEM , 202\r
+X      MOVES , 203\r
+X      MOVM  , 214\r
+X      MOVMI , 215\r
+X      MOVMM , 216\r
+X      MOVMS , 217\r
+X      MOVN  , 210\r
+X      MOVNI , 211\r
+X      MOVNM , 212\r
+X      MOVNS , 213\r
+X      MOVS  , 204\r
+X      MOVSI , 205\r
+X      MOVSM , 206\r
+X      MOVSS , 207\r
+\r
+\r
+X      MTAPE , 072\r
+XX     MTOP. , 024\r
+\r
+X      MUL   , 224\r
+X      MULB  , 227\r
+X      MULI  , 225\r
+X      MULM  , 226\r
+XX     NLI.  , 031\r
+XX     NLO.  , 032\r
+\r
+X      NOSYM , 762\r
+\r
+\fX     OCT   , 763\r
+X      OPDEF , 764\r
+\r
+X      OPEN  , 050\r
+\r
+X      OR    , 434\r
+X      ORB   , 437\r
+X      ORCA  , 454\r
+X      ORCAB , 457\r
+X      ORCAI , 455\r
+X      ORCAM , 456\r
+X      ORCB  , 470\r
+X      ORCBB , 473\r
+\r
+X      ORCBI , 471\r
+X      ORCBM , 472\r
+X      ORCM  , 464\r
+X      ORCMB , 467\r
+X      ORCMI , 465\r
+X      ORCMM , 466\r
+X      ORI   , 435\r
+X      ORM   , 436\r
+\r
+X      OUT   , 057\r
+XX     OUT.  , 017\r
+X      OUTBUF, 065\r
+XX     OUTF. , 027\r
+X      OUTPUT, 067\r
+\r
+\fX     PAGE  , 700\r
+X      PASS2 , 701\r
+X      PHASE , 702\r
+X      POINT , 703\r
+\r
+XX     POP   , 262\r
+XX     POPJ  , 263\r
+\r
+X      PRGEND, 714\r
+X      PRINTX, 704\r
+X      PURGE , 705\r
+\r
+XX     PUSH  , 261\r
+XX     PUSHJ , 260\r
+\r
+X      RADIX , 706\r
+X      RADIX5, 707\r
+\r
+X      RELEAS, 071\r
+\r
+X      RELOC , 710\r
+X      REMARK, 711\r
+\r
+X      RENAME, 055\r
+\r
+X      REPEAT, 712\r
+\r
+XX     RESET., 015\r
+X      RIM   , 715\r
+X      RIM10 , 735\r
+X      RIM10B, 736\r
+\r
+X      ROT   , 241\r
+X      ROTC  , 245\r
+\r
+X      RSW   , 716\r
+XX     RTB.  , 022\r
+X      SALL  , 720\r
+X      SEARCH, 721\r
+\r
+X      SETA  , 424\r
+X      SETAB , 427\r
+X      SETAI , 425\r
+X      SETAM , 426\r
+X      SETCA , 450\r
+X      SETCAB, 453\r
+X      SETCAI, 451\r
+X      SETCAM, 452\r
+X      SETCM , 460\r
+X      SETCMB, 463\r
+X      SETCMI, 461\r
+X      SETCMM, 462\r
+X      SETM  , 414\r
+X      SETMB , 417\r
+X      SETMI , 415\r
+X      SETMM , 416\r
+X      SETO  , 474\r
+X      SETOB , 477\r
+X      SETOI , 475\r
+X      SETOM , 476\r
+X      SETSTS, 060\r
+X      SETZ  , 400\r
+X      SETZB , 403\r
+X      SETZI , 401\r
+XX     SETZM , 402\r
+\r
+XX     SIXBIT, 717\r
+\r
+XX     SKIP  , 330\r
+X      SKIPA , 334\r
+X      SKIPE , 332\r
+X      SKIPG , 337\r
+X      SKIPGE, 335\r
+X      SKIPL , 331\r
+X      SKIPLE, 333\r
+X      SKIPN , 336\r
+\r
+XX     SLIST., 025\r
+\r
+X      SOJ   , 360\r
+X      SOJA  , 364\r
+X      SOJE  , 362\r
+X      SOJG  , 367\r
+X      SOJGE , 365\r
+X      SOJL  , 361\r
+X      SOJLE , 363\r
+X      SOJN  , 366\r
+\r
+XX     SOS   , 370\r
+X      SOSA  , 374\r
+X      SOSE  , 372\r
+X      SOSG  , 377\r
+X      SOSGE , 375\r
+X      SOSL  , 371\r
+X      SOSLE , 373\r
+X      SOSN  , 376\r
+\r
+X      SQUOZE, 707\r
+\r
+X      STATO , 061\r
+X      STATUS, 062\r
+X      STATZ , 063\r
+\r
+X      STOPI , 722\r
+\r
+X      SUB   , 274\r
+X      SUBB  , 277\r
+X      SUBI  , 275\r
+X      SUBM  , 276\r
+\r
+IF2,<IFE OPHSH,<SUBTL:>>\r
+X      SUBTTL, 723\r
+X      SUPPRE, 713\r
+X      SYN   , 724\r
+X      TAPE  , 725\r
+\r
+\fX     TDC   , 650\r
+X      TDCA  , 654\r
+X      TDCE  , 652\r
+X      TDCN  , 656\r
+X      TDN   , 610\r
+X      TDNA  , 614\r
+X      TDNE  , 612\r
+X      TDNN  , 616\r
+X      TDO   , 670\r
+X      TDOA  , 674\r
+X      TDOE  , 672\r
+X      TDON  , 676\r
+X      TDZ   , 630\r
+X      TDZA  , 634\r
+X      TDZE  , 632\r
+X      TDZN  , 636\r
+\r
+X      TITLE , 726\r
+\r
+X      TLC   , 641\r
+X      TLCA  , 645\r
+X      TLCE  , 643\r
+X      TLCN  , 647\r
+X      TLN   , 601\r
+X      TLNA  , 605\r
+XX     TLNE  , 603\r
+XX     TLNN  , 607\r
+XX     TLO   , 661\r
+X      TLOA  , 665\r
+X      TLOE  , 663\r
+X      TLON  , 667\r
+XX     TLZ   , 621\r
+XX     TLZA  , 625\r
+XX     TLZE  , 623\r
+XX     TLZN  , 627\r
+\r
+\fX     TRC   , 640\r
+X      TRCA  , 644\r
+X      TRCE  , 642\r
+X      TRCN  , 646\r
+X      TRN   , 600\r
+X      TRNA  , 604\r
+XX     TRNE  , 602\r
+XX     TRNN  , 606\r
+X      TRO   , 660\r
+X      TROA  , 664\r
+X      TROE  , 662\r
+X      TRON  , 666\r
+XX     TRZ   , 620\r
+X      TRZA  , 624\r
+X      TRZE  , 622\r
+X      TRZN  , 626\r
+\r
+X      TSC   , 651\r
+X      TSCA  , 655\r
+X      TSCE  , 653\r
+X      TSCN  , 657\r
+X      TSN   , 611\r
+X      TSNA  , 615\r
+X      TSNE  , 613\r
+\r
+X      TSNN  , 617\r
+X      TSO   , 671\r
+X      TSOA  , 675\r
+X      TSOE  , 673\r
+X      TSON  , 677\r
+X      TSZ   , 631\r
+X      TSZA  , 635\r
+X      TSZE  , 633\r
+X      TSZN  , 637\r
+X      TTCALL, 051\r
+X      TWOSEG, 731\r
+X      UFA   , 130\r
+X      UGETF , 073\r
+X      UJEN  , 100\r
+X      UNIVER, 737\r
+X      USETI , 074\r
+X      USETO , 075\r
+\r
+X      VAR   , 727\r
+\r
+XX     WTB.  , 023\r
+\r
+X      XALL  , 732\r
+\r
+X      XCT   , 256\r
+\r
+X      XLIST , 733\r
+\r
+X      XOR   , 430\r
+X      XORB  , 433\r
+X      XORI  , 431\r
+X      XORM  , 432\r
+\r
+X      XPUNGE, 730\r
+X      XWD   , 734\r
+\r
+X      Z     , 000\r
+\r
+X      .CREF , 740\r
+X      .HWFRM, 742\r
+X      .MFRMT, 743\r
+X      .XCREF, 741\r
+\r
+\r
+\fIFN OPHSH,<           ;NO-OPS, OLD MNEMONICS,F4 UUOS\r
+X      CAI   , 300\r
+X      CAM   , 310\r
+X      CLEAR , 400\r
+X      CLEARB, 403\r
+X      CLEARI, 401\r
+X      CLEARM, 402\r
+X      JUMP  , 320\r
+X      JUMPA , 324\r
+X      SKIP  , 330\r
+X      RESET., 015\r
+X      IN.   , 016\r
+X      OUT.  , 017\r
+X      DATA. , 020\r
+X      FIN.  , 021\r
+X      RTB.  , 022\r
+X      WTB.  , 023\r
+X      MTOP. , 024\r
+X      SLIST., 025\r
+X      INF.  , 026\r
+X      OUTF. , 027\r
+X      NLI.  , 031\r
+X      NLO.  , 032\r
+>\r
+\fIFE OPHSH,<\r
+IF1, < BLOCK   N1>\r
+OP1END:        -1B36\r
+OP1COD:        BLOCK   N1/4\r
+       CC>\r
+IFN OPHSH,<\r
+IF2,<\r
+DEFINE SETVAL (N)<EXP  .%'N\r
+PURGE .%'N>\r
+N=0\r
+XLIST\r
+REPEAT PRIME,<SETVAL \N\r
+N=N+1>\r
+LIST\r
+>\r
+OP1COD:        IF1,<   BLOCK <PRIME/4+1>>\r
+IF2,<\r
+DEFINE SETVAL (N)<EXP  .$'N\r
+PURGE .$'N>\r
+N=0\r
+XLIST\r
+REPEAT <PRIME/4+1>,<SETVAL     \N\r
+N=N+1>\r
+>\r
+LIST>\r
+\r
+IFDEF .CREF,<  .CREF   ;START CREFFING AGAIN>\r
+\fSUBTTL        PERMANENT SYMBOLS\r
+SYMNUM:        EXP     LENGTH/2        ;NUMBER OF PERMANENT SYMBOLS\r
+DEFINE P       (A,B)<\r
+       SIXBIT  /A/\r
+       XWD     SYMF!NOOUTF,B>\r
+\r
+P      @,      0(SUPRBT)\r
+P      ??????, 0(SUPRBT)\r
+\r
+LENGTH= .-SYMNUM-1                     ;LENGTH OF INITIAL SYMBOLS\r
+\r
+PRMTBL:                        ;PERMANENT SYMBOLS\r
+P      ADC,    24\r
+P      APR,    0\r
+P      CCI,    14\r
+P      CDP,    110\r
+P      CDR,    114\r
+P      CPA,    0\r
+P      CR,     150\r
+P      DC,     200\r
+P      DCSA,   300\r
+P      DCSB,   304\r
+P      DF,     270\r
+P      DIS,    130\r
+P      DLS,    240\r
+P      DPC,    250\r
+P      DSK,    170\r
+P      DTC,    320\r
+P      DTS,    324\r
+P      LPT,    124\r
+P      MDF,    260\r
+P      MTC,    220\r
+P      MTM,    230\r
+P      MTS,    224\r
+P      PAG,    10\r
+P      PI,     4\r
+P      PLT,    140\r
+P      PTP,    100\r
+P      PTR,    104\r
+\r
+P      TMC,    340\r
+P      TMS,    344\r
+P      TTY,    120\r
+P      UTC,    210\r
+P      UTS,    214\r
+       XLIST   \r
+       LIST\r
+PRMEND:                                ;END OF PERMANENT SYMBOLS\r
+\r
+\f      OPDEF   ZL      [Z      LITF]   ;INVALID IN LITERALS\r
+       OPDEF   ZA      [Z      ADDF]   ;INVALID IN ADDRESSES\r
+       OPDEF   ZAL     [Z      ADDF!LITF]\r
+\r
+OP1TAB:\r
+\r
+       ZA      PAGE0                   ;PAGE\r
+       ZAL     PASS20                  ;PASS2\r
+       ZAL     PHASE0                  ;PHASE\r
+       Z       POINT0                  ;POINT\r
+       ZA      PRNTX0                  ;PRINTX\r
+       ZA      PURGE0                  ;PURGE\r
+       ZA      RADIX0                  ;RADIX\r
+       Z       RADX50                  ;RADIX50,SQUOZE\r
+       ZAL     LOC0    (1)             ;RELOC\r
+       ZAL     REMAR0                  ;REMARK\r
+       ZA      REPEA0                  ;REPEAT\r
+       ZA      SUPRE0                  ;SUPRESS\r
+       ZAL     PSEND0                  ;PRGEND\r
+       ZAL     RIM0    (RIMSW)         ;RIM\r
+       DATAI   0,IOP                   ;RSW\r
+       Z       ASCII0  (1)             ;SIXBIT\r
+       ZAL     IOSET   (IOPALL!IOSALL) ;SALL\r
+       ZAL     SERCH0                  ;SEARCH\r
+       ZA      STOPI0                  ;STOPI\r
+       ZA      SUBTT0  (Z (POINT 7,,)) ;SUBTTL\r
+       ZA      SYN0                    ;SYN\r
+       ZAL     TAPE0                   ;TAPE\r
+       ZA      TITLE0  (Z (POINT 7,,)) ;TITLE\r
+       ZAL     VAR0                    ;VAR\r
+\r
+       Z       XPUNG0                  ;XPUNGE\r
+       ZAL     TWSEG0                  ;TWOSEGMENTS\r
+       ZAL     XALL0   (IOPALL)        ;XALL\r
+       ZAL     IOSET   (IOPROG)        ;XLIST\r
+       Z       XWD0                    ;XWD\r
+       ZAL     RIM0    (RIM1SW)        ;RIM10\r
+       ZAL     RIM0    (R1BSW)         ;RIM10B\r
+       ZA      UNIV0   (Z (POINT 7,,)) ;UNIVERSAL\r
+       ZAL     IORSET  (IONCRF)        ;.CREF\r
+       ZAL     IOSET   (IONCRF)        ;.XCREF\r
+       ZA      OFFORM                  ;.HWFRMT\r
+       ZA      ONFORM                  ;.MFRMT\r
+\fOP2TAB:\r
+\r
+       Z       ASCII0  (0)             ;ASCII\r
+       Z       ASCII0  (1B18)          ;ASCIZ\r
+       BLKI    IOP                     ;BLKI\r
+       BLKO    IOP                     ;BLKO\r
+       ZAL     BLOCK0                  ;BLOCK\r
+       ZA      SUPRSA                  ;ASUPPRESS\r
+       ZAL     HISEG0                  ;HISEG\r
+       Z       BYTE0                   ;BYTE\r
+       CONI    IOP                     ;CONI\r
+       CONO    IOP                     ;CONO\r
+       CONSO   IOP                     ;CONSO\r
+       CONSZ   IOP                     ;CONSZ\r
+       DATAI   IOP                     ;DATAI\r
+       DATAO   IOP                     ;DATAO\r
+       Z       OCT0    (?D10)          ;DEC\r
+       ZA      DEFIN0                  ;DEFINE\r
+\r
+       ZAL     DEPHA0                  ;DEPHASE\r
+       ZAL     END0                    ;END\r
+       ZA      INTER0  (INTF!ENTF)     ;ENTRY\r
+       Z       EXPRES                  ;EXP\r
+       ZA      EXTER0                  ;EXTERN\r
+       JRST    4,OP                    ;HALT\r
+       TLNN    FR,IFPASS               ;IF1\r
+       TLNE    FR,IFPASS               ;IF2\r
+\r
+       TRNE    AC0,IFB0                ;IFB\r
+       TLNE    ARG,IFDEF0              ;IFDEF\r
+       Z       IFIDN0  (0)             ;IFDIF\r
+       SKIPE   IF                      ;IFE\r
+       SKIPG   IF                      ;IFG\r
+       SKIPGE  IF                      ;IFGE\r
+       Z       IFIDN0  (1)             ;IFIDN\r
+       SKIPL   IF                      ;IFL\r
+\r
+       SKIPLE  IF                      ;IFLE\r
+       SKIPN   IF                      ;IFN\r
+       TRNN    AC0,IFB0                ;IFNB\r
+       TLNN    ARG,IFDEF0              ;IFNDEF\r
+       ZA      INTER0  (INTF)          ;INTERN\r
+       Z       IOWD0                   ;IOWD\r
+       Z       IRP0    (0)             ;IRP\r
+       Z       IRP0    (400000)        ;IRPC\r
+\r
+       JFCL    6,OP                    ;JCRY\r
+       JFCL    4,OP                    ;JCRY0\r
+       JFCL    2,OP                    ;JCRY1\r
+       JRST    12,OP                   ;JEN\r
+       JFCL    10,OP                   ;JOV\r
+       JRST    2,OP                    ;JRSTF\r
+       ZAL     IORSET  (IOPALL!IOSALL) ;LALL\r
+       ZAL     IORSET  (IOPROG)        ;LIST\r
+       ZAL     LIT0                    ;LIT\r
+       ZAL     LOC0    (0)             ;LOC\r
+       ZA      OFFSYM                  ;NOSYM\r
+       Z       OCT0    (?D8)           ;OCT\r
+       ZA      OPDEF0                  ;OPDEF\r
+       JFCL    1,OP                    ;JFOV\r
+       ZA      ONML                    ;MLON\r
+       ZA      OFFML                   ;MLOFF\r
+       Z       ASCII0  (3B19)          ;COMMENT\r
+       Z       ASCII0  (5B20)          ;ASCID\r
+\f\r
+CALTBL:\r
+                               ;USER DEFINED CALLI'S GO HERE\r
+       SIXBIT  /LIGHTS/        ;-1\r
+CALLI0:        SIXBIT  /RESET/         ; 0\r
+       SIXBIT  /DDTIN/         ; 1\r
+       SIXBIT  /SETDDT/        ; 2\r
+       SIXBIT  /DDTOUT/        ; 3\r
+       SIXBIT  /DEVCHR/        ; 4\r
+       SIXBIT  /DDTGT/         ; 5\r
+       SIXBIT  /GETCHR/        ; 6\r
+       SIXBIT  /DDTRL/         ; 7\r
+       SIXBIT  /WAIT/          ;10\r
+       SIXBIT  /CORE/          ;11\r
+       SIXBIT  /EXIT/          ;12\r
+       SIXBIT  /UTPCLR/        ;13\r
+       SIXBIT  /DATE/          ;14\r
+       SIXBIT  /LOGIN/         ;15\r
+       SIXBIT  /APRENB/        ;16\r
+       SIXBIT  /LOGOUT/        ;17\r
+       SIXBIT  /SWITCH/        ;20\r
+       SIXBIT  /REASSI/        ;21\r
+       SIXBIT  /TIMER/         ;22\r
+       SIXBIT  /MSTIME/        ;23\r
+       SIXBIT  /GETPPN/        ;24\r
+       SIXBIT  /TRPSET/        ;25\r
+       SIXBIT  /TRPJEN/        ;26\r
+       SIXBIT  /RUNTIM/        ;27\r
+       SIXBIT  /PJOB/          ;30\r
+       SIXBIT  /SLEEP/         ;31\r
+       SIXBIT  /SETPOV/        ;32\r
+       SIXBIT  /PEEK/          ;33\r
+       SIXBIT  /GETLIN/        ;34\r
+       SIXBIT  /RUN/           ;35\r
+       SIXBIT  /SETUWP/        ;36\r
+       SIXBIT  /REMAP/         ;37\r
+       SIXBIT  /GETSEG/        ;40\r
+       SIXBIT  /GETTAB/        ;41\r
+       SIXBIT  /SPY/           ;42\r
+       SIXBIT  /SETNAM/        ;43\r
+       SIXBIT  /TMPCOR/        ;44\r
+       SIXBIT  /DSKCHR/        ;45\r
+       SIXBIT  /SYSSTR/        ;46\r
+       SIXBIT  /JOBSTR/        ;47\r
+       SIXBIT  /STRUUO/        ;50\r
+       SIXBIT  /SYSPHY/        ;51\r
+       SIXBIT  /FRECHN/        ;52\r
+       SIXBIT  /DEVTYP/        ;53\r
+       SIXBIT  /DEVSTS/        ;54\r
+       SIXBIT  /DEVPPN/        ;55\r
+       SIXBIT  /SEEK/          ;56\r
+       SIXBIT  /RTTRP/         ;57\r
+       SIXBIT  /LOCK/          ;60\r
+       SIXBIT  /JOBSTS/        ;61\r
+       SIXBIT  /LOCATE/        ;62\r
+       SIXBIT  /WHERE/         ;63\r
+       SIXBIT  /DEVNAM/        ;64\r
+       SIXBIT  /CTLJOB/        ;65\r
+       SIXBIT  /GOBSTR/        ;66\r
+       0                       ;67\r
+       0                       ;70\r
+       SIXBIT  /HPQ/           ;71\r
+       SIXBIT  /HIBER/         ;72\r
+       SIXBIT  /WAKE/          ;73\r
+       SIXBIT  /CHGPPN/        ;74\r
+       SIXBIT  /SETUUO/        ;75\r
+       SIXBIT  /DEVGEN/        ;76\r
+       SIXBIT  /OTHUSR/        ;77\r
+       SIXBIT  /CHKACC/        ;100\r
+       SIXBIT  /DEVSIZ/        ;101\r
+       SIXBIT  /DAEMON/        ;102\r
+       SIXBIT  /JOBPEK/        ;103\r
+       SIXBIT  /ATTACH/        ;104\r
+       SIXBIT  /DAEFIN/        ;105\r
+       SIXBIT  /FRCUUO/        ;106\r
+       SIXBIT  /DEVLNM/        ;107\r
+       SIXBIT  /PATH./         ;110\r
+\r
+CALNTH==.-CALTBL\r
+NEGCAL==CALLI0-CALTBL          ;NUMBER OF NEGATIVE CALLI'S\r
+\r
+TTCTBL:        SIXBIT  /INCHRW/        ; 0     INPUT A CHAR. AND WAIT\r
+       SIXBIT  /OUTCHR/        ; 1     OUTPUT A CHAR.\r
+       SIXBIT  /INCHRS/        ; 2     INPUT A CHAR. AND SKIP\r
+       SIXBIT  /OUTSTR/        ; 3     OUTPUT A STRING\r
+       SIXBIT  /INCHWL/        ; 4     INPUT CHAR., WAIT, LINE MODE\r
+       SIXBIT  /INCHSL/        ; 5     INPUT CHAR., SKIP, LINE MODE\r
+       SIXBIT  /GETLCH/        ; 6     GET LINE CHARACTERISTICS\r
+       SIXBIT  /SETLCH/        ; 7     SET LINE CHARACTERISTICS\r
+       SIXBIT  /RESCAN/        ;10     RESET INPUT STREAM TO COMMAND\r
+       SIXBIT  /CLRBFI/        ;11     CLEAR TYPEIN BUFFER\r
+       SIXBIT  /CLRBFO/        ;12     CLEAR TYPEOUT BUFFER\r
+       SIXBIT  /SKPINC/        ;13     SKIPS IF A CHAR. CAN BE INPUT\r
+       SIXBIT  /SKPINL/        ;14     SKIPS IF A LINE CAN BE INPUT\r
+       SIXBIT  /IONEOU/        ;15     OUTPUT AS AN IMAGE CHAR.\r
+\r
+TTCLTH==.-TTCTBL\r
+       SUBTTL  USER-DEFINED SYMBOL SEARCH ROUTINES\r
+MSRCH: PUSHJ   PP,SEARCH       ;PERFORM GENERAL SEARCH\r
+       POPJ    PP,             ;NOT FOUND, EXIT\r
+       JUMPG   ARG,MSRCH2      ;SKIP-EXIT AND CROSS-REF IF FOUND\r
+       CAME    AC0,1(SX)       ;WE ARE LOOKING AT SYMBOL, TRY ONE ABOVE\r
+       POPJ    PP,             ;NO, EXIT\r
+       ADDI    SX,2            ;YES, POINT TO IT\r
+       PUSHJ   PP,SRCH5        ;LOAD REGISTERS\r
+MSRCH2:        AOSA    0(PP)           ;SET SKIP-EXIT\r
+QSRCH: JUMPL   ARG,SSRCH3      ;BRANCH IF OPERAND\r
+       MOVEI   SDEL,%MAC       ;SET OPERATOR FLAG\r
+       TLZE IO,DEFCRS  ;IS IT A DEFINITION?\r
+       MOVEI SDEL,%DMAC        ;YES\r
+       JRST    CREF            ;CROSS-REF AND EXIT\r
+\r
+SSRCH: PUSHJ   PP,SEARCH       ;PERFORM GENERAL SEARCH\r
+       POPJ    PP,             ;NOT FOUND, EXIT\r
+       JUMPL   ARG,SSRCH2      ;SKIP-EXIT AND CROSS-REF IF FOUND\r
+SSRCH1:        CAME    AC0,-3(SX)      ;WE ARE LOOKING AT MACRO, LOOK ONE SLOT BELOW\r
+       POPJ    PP,             ;NO DICE, EXIT\r
+       SUBI    SX,2            ;YES, POINT TO IT\r
+       PUSHJ   PP,SRCH5        ;LOAD REGISTERS\r
+SSRCH2:        AOS     0(PP)           ;SET FOR SKIP-EXIT\r
+SSRCH3:        MOVEI   SDEL,%SYM       ;SET OPERAND FLAG\r
+\r
+CREF:  TLNN    IO,IONCRF       ;NO CREFFING FOR THIS SYMBOL?\r
+       TLNE    FR,P1!CREFSW    ;PASS ONE OR CROSS-REF SUPPRESSION?\r
+       POPJ    PP,             ;YES, EXIT\r
+       EXCH    SDEL,C          ;PUT FLAG IN C, SACE C\r
+       PUSH    PP,CS\r
+       TLNE IO,IOCREF          ;HAVE WE PUT OUT THE 177,102\r
+       JRST CREF3              ;YES\r
+       PUSH PP,C               ;START OF CREF DATA\r
+\r
+\fREPEAT 0,<    ;NEEDS CHANGE TO CREF\r
+       MOVEI C,177\r
+       PUSHJ PP,OUTLST\r
+       MOVEI C,102\r
+       PUSHJ PP,OUTLST\r
+       TLO IO,IOCREF   ;WE NOW ARE IN THAT STATE\r
+       POP PP,C        ;WE HAVE NOW\r
+CREF3: JUMPE C,NOFLG           ;JUST CLOSE IT\r
+       PUSHJ   PP,OUTLST       ;TYPE OF SYMBOL (%MAC,%DMAC,%SYM)\r
+       MOVSI CS,770000         ;COUNT CHRS\r
+       TDZA C,C        ;STARTING AT 0\r
+       LSH CS,-6       ;TRY NEXT\r
+       TDNE AC0,CS     ;IS THAT ONE THERE?\r
+       AOJA C,.-2      ;YES\r
+       PUSHJ PP,OUTLST         ;PRINT NUMBER OF SYMBOL CONSTITUENTS\r
+       MOVE    CS,AC0\r
+\r
+CREF2: MOVEI   C,0\r
+       LSHC    C,6\r
+       ADDI    C,40\r
+       PUSHJ   PP,OUTLST       ;THE ASCII SYMBOL\r
+       JUMPN   CS,CREF2\r
+       MOVEI   C,%DSYM\r
+       TLZE    IO,DEFCRS\r
+       PUSHJ   PP,OUTLST       ;MARK IT AS A DEFINING OCCURENCE\r
+NOFLG: MOVE    C,SDEL\r
+       POP     PP,CS\r
+       POPJ    PP,\r
+\r
+CLSCRF:        TRNN ER,LPTSW\r
+       POPJ PP,        ;LEAVE IF WE SHOULD NOT BE PRINTING\r
+CLSCR2:        MOVEI C,177\r
+       PUSHJ PP,PRINT\r
+       TLZE IO,IOCREF  ;WAS IT OPEN?\r
+       JRST CLSCR1     ;YES, JUST CLOSE IT\r
+       MOVEI C,102     ;NO, OPEN IT FIRST\r
+       PUSHJ PP,OUTLST         ;MARK BEGINNING OF CREF DATA\r
+       MOVEI C,177\r
+       PUSHJ PP,OUTLST\r
+CLSCR1:        MOVEI C,103\r
+       JRST OUTLST             ;MARK END OF CREF DATA\r
+\r
+CLSC3: TLZ IO,IOCREF\r
+       MOVEI C,177\r
+       PUSHJ PP,OUTLST\r
+       MOVEI C,104\r
+       JRST OUTLST     ;177,104 CLOSES IT FOR NOW\r
+>      ;END OF REPEAT 0\r
+\fREPEAT 1,<                    ;WORKS WITH EXISTING CREF\r
+       TLNE IO,IOPAGE\r
+       PUSHJ PP,CRFHDR         ;GET CORRECT SUBTTL\r
+       MOVEI C,177\r
+       PUSHJ PP,OUTLST\r
+       MOVEI C,102\r
+       PUSHJ PP,OUTLST\r
+       TLO IO,IOCREF   ;WE NOW ARE IN THAT STATE\r
+       POP PP,C        ;WE HAVE NOW\r
+CREF3: PUSHJ   PP,OUTLST       ;TYPE OF SYMBOL (%MAC,%DMAC,%SYM)\r
+       MOVSI CS,770000         ;COUNT CHRS\r
+       TDZA C,C        ;STARTING AT 0\r
+       LSH CS,-6       ;TRY NEXT\r
+       TDNE AC0,CS     ;IS THAT ONE THERE?\r
+       AOJA C,.-2      ;YES\r
+       PUSHJ PP,OUTLST         ;PRINT NUMBER OF SYMBOL CONSTITUENTS\r
+       MOVE    CS,AC0\r
+\r
+CREF2: MOVEI   C,0\r
+       LSHC    C,6\r
+       ADDI    C,40\r
+       PUSHJ   PP,OUTLST       ;THE ASCII SYMBOL\r
+       JUMPN   CS,CREF2\r
+       MOVEI   C,%DSYM\r
+       TLZE    IO,DEFCRS\r
+       PUSHJ   PP,OUTLST       ;MARK IT AS A DEFINING OCCURENCE\r
+       MOVE    C,SDEL\r
+       POP     PP,CS\r
+       POPJ    PP,\r
+\r
+IFN OPHSH,<\r
+SUBTL: SIXBIT  /SUBTTL/>\r
+CRFHDR:        CAME    AC0,SUBTL       ;IS FIRST SYMBOL "SUBTTL"\r
+       JRST    CRFHD1          ;NO\r
+       HLLZ    AC0,V\r
+       PUSHJ   PP,SUBTT0       ;UPDATE SUBTTL\r
+       MOVE    AC0,SUBTL       ;RESTORE ARG.\r
+       MOVEI   V,CPOPJ\r
+CRFHD1:        MOVEI   C,0\r
+       JRST    OUTL\r
+\r
+CLSC3:\r
+CLSCRF:        TRNN ER,LPTSW\r
+       POPJ PP,        ;LEAVE IF WE SHOULD NOT BE PRINTING\r
+CLSCR2:        TLZE IO,IOCREF  ;FINISH UP LINE\r
+       JRST CLSCR1\r
+       MOVEI   C,0\r
+       TLNE    IO,IOPAGE       ;NEW PAGE?\r
+       PUSHJ   PP,OUTL         ;YES,GIVE IT A ROUSING SENDOFF!\r
+       MOVEI C,177\r
+       PUSHJ PP,OUTLST\r
+       MOVEI C,102\r
+       PUSHJ PP,OUTLST         ;MARK BEGINNING OF CREF DATA\r
+CLSCR1:        MOVEI C,177\r
+       PUSHJ PP,OUTLST\r
+       MOVEI C,103\r
+       JRST OUTLST             ;MARK END OF CREF DATA\r
+>      ;END OF REPEAT 1\r
+\fSEARCH:       HLRZ    SX,SRCHX\r
+       HRRZ    SDEL,SRCHX\r
+\r
+SRCH1: CAML    AC0,-1(SX)\r
+       JRST    SRCH3\r
+SRCH2: SUB     SX,SDEL\r
+       LSH     SDEL,-1\r
+       CAMG    SX,SYMTOP\r
+       JUMPN   SDEL,SRCH1\r
+       JUMPN   SDEL,SRCH2\r
+       SOJA    SX,SRCHNO       ;NOT FOUND\r
+\r
+SRCH3: CAMN    AC0,-1(SX)\r
+       JRST    SRCH4           ;NORMAL / FOUND EXIT\r
+       ADD     SX,SDEL\r
+       LSH     SDEL,-1\r
+       CAMG    SX,SYMTOP\r
+       JUMPN   SDEL,SRCH1\r
+       JUMPN   SDEL,SRCH2\r
+       SOJA    SX,SRCHNO       ;NOT FOUND\r
+\r
+SRCH4: AOS     0(PP)           ;SET FOR SKIP EXIT\r
+SRCH5: MOVSI ARG,SUPRBT        ;HE IS USING IT, TURN OFF BIT\r
+       ANDCAM ARG,(SX) ; IN THE TABLE\r
+SRCH7: MOVE ARG,0(SX)          ;FLAG AND VALUE TO ARG\r
+       LDB     RC,RCPNTR       ;POINT 1,ARG,17\r
+       TLNE ARG,LELF   ;CHECK LEFT RELOCATE\r
+       TLO RC,1\r
+       HRRZ    V,ARG\r
+       TLNE ARG,SPTR   ;CHECK SPECIAL EXTESN POINTER\r
+       JRST SRCH6\r
+       TLNE    ARG,PNTF\r
+       MOVE    V,0(ARG)                ;36BIT VALUE TO V\r
+       JRST    SRCHOK\r
+       \r
+SRCH6: MOVE V,0(ARG)   ;VALUE\r
+       MOVE RC,1(ARG)  ;AND RELOC\r
+       TLNE RC,-2      ;CHECK AND SET EXTPNT\r
+       HLLM RC,EXTPNT\r
+       TRNE RC,-2      \r
+       HRRM RC,EXTPNT\r
+       JRST    SRCHOK\r
+SRCHNO:        SKIPN   UNISCH+1        ;ALLOWED TO SEARCH OTHER TABLES\r
+       POPJ    PP,             ;NO, JUST RETURN\r
+       AOS     V,UNISCH        ;GET NEXT INDEX TO TABLE\r
+       CAIE    V,1             ;FIRST TIME IN\r
+       JRST    SRCHN1          ;YES, SAVE SYMBOL INFO\r
+       HRLM    SX,UNISCH       ;SAVE SX AND SET FLAG\r
+       MOVE    ARG,SRCHX       ;SEARCH POINTER\r
+       MOVEM   ARG,UNISHX      ;TO A SAFE PLACE\r
+       HRR     ARG,SYMBOL\r
+       HRL     ARG,SYMTOP\r
+       MOVEM   ARG,UNIPTR      ;STORE ALSO\r
+SRCHN1:        MOVE    V,UNISCH(V)     ;GET TRUE INDEX\r
+       JUMPE   V,SRCHKO        ;IF ZERO ALL TABLE SCANNED\r
+       MOVE    ARG,UNISHX(V)   ;NEW SRCHX\r
+       MOVEM   ARG,SRCHX       ;SET IT UP\r
+       MOVE    ARG,UNIPTR(V)   ;SYMTOP,,SYMBOL\r
+       HRRZM   ARG,SYMBOL\r
+       HLRZM   ARG,SYMTOP\r
+       JRST    SEARCH          ;TRY AGAIN\r
+\r
+SRCHKO:        SETZ    ARG,            ;CLEAR ARG SO ZERO STORED\r
+SRCHOK:        SKIPN   UNISCH          ;HAVE WE SEARCH OTHER TABLES\r
+       POPJ    PP,             ;NO, JUST RETURN\r
+SYMBCK:        HLRZ    SX,UNISCH       ;RESTORE SX\r
+       SETZM   UNISCH          ;CLEAR SYMBCK FLAG\r
+       PUSH    PP,V            ;SAVE AN AC\r
+       MOVE    V,UNISHX        ;SRCHX\r
+       MOVEM   V,SRCHX         ;RESTORE ORIGINAL\r
+       MOVE    V,UNIPTR        ;SYMTOP,,SYMBOL\r
+       HRRZM   V,SYMBOL\r
+       HLRZM   V,SYMTOP\r
+       JUMPE   ARG,SRCHK2      ;TOTALLY UNDEFINED\r
+       PUSH    PP,RC           ;SAVE SOME ACCS\r
+       PUSH    PP,ARG\r
+       PUSH    PP,EXTPNT\r
+       SETZB   ARG,EXTPNT      ;CLEAR ALL SYMBOL DATA\r
+       SETZB   RC,V\r
+       PUSHJ   PP,INSERT       ;INSERT SYMBOL IN TABLE\r
+       POP     PP,EXTPNT       ;RESTORE ACCS ETC.\r
+       POP     PP,ARG\r
+       POP     PP,RC\r
+       MOVEM   ARG,(SX)        ;SET FLAGS AND VALUE AS IT SHOULD BE\r
+SRCHK2:        POP     PP,V\r
+       POPJ    PP,             ;RETURN\r
+\r
+\fINSERQ:       TLNE    ARG,UNDF!VARF\r
+INSERZ:        SETZB   RC,V\r
+INSERT:        CAME    AC0,-1(SX)      ;ARE WE LOOKING AT MATCHING MNEMONIC?\r
+       JRST    INSRT2          ;NO, JUST INSERT\r
+       JUMPL   ARG,INSRT1      ;YES, BRANCH IF OPERAND\r
+       SKIPL   0(SX)           ;OPERATOR, ARE WE LOOKING AT ONE?\r
+       JRST    UPDATE          ;YES, UPDATE\r
+       JRST    INSRT2          ;NO, INSERT\r
+\r
+INSRT1:        SKIPG   0(SX)           ;OPERAND, ARE WE LOOKING AT ONE?\r
+       JRST    UPDATE          ;YES, UPDATE\r
+       SUBI    SX,2            ;NO, MOVE UNDER OPERATOR AND INSERT\r
+INSRT2:        MOVE    SDEL,SYMBOL\r
+       SUBI    SDEL,2\r
+       CAMLE   SDEL,FREE\r
+       JRST    INSRT3\r
+       PUSHJ   PP,XCEEDS\r
+       ADDI    SDEL,2000\r
+INSRT3:        MOVEM   SDEL,SYMBOL     ;MAKE ROOM FOR A TWO WORD ENTRY\r
+       HRLI    SDEL,2(SDEL)\r
+       BLT     SDEL,-2(SX)     ;PUSH EVERYONE DOWN TWO LOACTIONS\r
+       AOS     @SYMBOL         ;INCREMENT THE SYMBOL COUNT\r
+       TLNN RC,-2      ;NEED SPECIAL?\r
+       TRNE RC,-2      ;LEFT OR RIGHT EXTERNAL?\r
+       JRST INSRT5     ;YES, JUMP\r
+       TLNN    V,-1            ;SKIP IF V IS A 36BIT VALUE\r
+       JRST    INSRT4          ;JUMP, ITS A 18BIT VALUE\r
+       AOS     SDEL,FREE       ;36BIT, SO GET A CELL FROM FREE CORE\r
+       CAML    SDEL,SYMBOL     ;MORE CORE NEEDED?\r
+       PUSHJ   PP,XCEEDS       ;YES\r
+       HRRI    ARG,-1(SDEL)    ;POINTER TO ARG\r
+       MOVEM   V,0(ARG)        ;36BIT VALUE TO FREE CORE\r
+       TLOA    ARG,PNTF        ;NOTE THAT ARG IS APOINTER, NOT A 18BIT VALUE\r
+\r
+INSRT4:        HRR     ARG,V           ;18BIT VALUE TO ARG\r
+       DPB     RC,RCPNTR       ;FIX RIGHT RELOCATION\r
+       TLNE RC,1\r
+       TLO ARG,LELF    ;FIX LEFT RELOCATION\r
+INSRT6:        MOVEM   ARG,0(SX)       ;INSERT FLAGS AND VALUE.\r
+       MOVEM   AC0,-1(SX)      ;INSERT SYMBOL NAME.\r
+       PUSHJ   PP,SRCHI        ;INITILIAZE SRCHX\r
+       JRST    QSRCH           ;EXIT THROUGH CREF\r
+       \r
+INSRT5:        MOVEI SDEL,2    ;GET TWO CELLS FROM FREE CORE\r
+       ADDB SDEL,FREE\r
+       CAML SDEL,SYMBOL;MORE CORE NEEDED?\r
+       PUSHJ PP,XCEEDS ;YES\r
+       MOVEM RC,-1(SDEL)\r
+       HRRI ARG,-2(SDEL)       ;POINTER TO ARG\r
+       MOVEM V,0(ARG)\r
+       TLO ARG,SPTR    ;SET SPECIAL POINTER, POINTS TO TWO CELLS\r
+       JRST INSRT6\r
+\fREMOVE:       SUBI    SX,2            ;MOVE EVERYONE UP TWO LOCATIONS\r
+REMOV1:        MOVE    0(SX)\r
+       MOVEM   2(SX)           ;OVERWRITE THE DELETED SYMBOL\r
+       CAME    SX,SYMBOL       ;SKIP WHEN DONE\r
+       SOJA    SX,REMOV1\r
+       ADDI    SX,2\r
+       MOVEM   SX,SYMBOL\r
+       SOS     0(SX)           ;DECREMENT THE SYMBOL COUNT\r
+\r
+SRCHI: MOVEI   AC2,0           ;THIS CODE SETS UP SRCHX\r
+       FAD     AC2,@SYMBOL\r
+       LSH     AC2,-?D27\r
+       MOVEI   AC1,1000\r
+       LSH     AC1,-357(AC2)\r
+       HRRM    AC1,SRCHX\r
+       LSH     AC1,1\r
+       ADD     AC1,SYMBOL\r
+       HRLM    AC1,SRCHX\r
+       POPJ    PP,             ;SRCHX=XWD <SYMTBL+LENGTH/2>,LENGTH/4\r
+\r
+\fUPDATE:       DPB     RC,RCPNTR       ;FIX RIGHT RELOCATION\r
+       TLNE ARG,SPTR   ;SKIP IF THERE IS NO SPECIAL POINTER\r
+       JRST UPDAT4     ;YES, USE THE TWO CELLS\r
+       TLNN RC,-2      ;NEED TO CHANGE\r
+       TRNE RC,-2      ;ANY CURRENT EXTERNS?\r
+       JRST UPDAT5     ;YES ,JUMP\r
+       TLZ ARG,LELF    ;CLEAR LELF\r
+       TLNE RC,1       ;LEFT RELOCATABLE?\r
+       TLO ARG,LELF    ;YES, SET THE FLAG\r
+       TLNE    ARG,PNTF        ;WAS THERE A 36BIT VALUE?\r
+       JRST    UPDAT2          ;YES, USE IT.\r
+       TLNE    V,-1            ;NO,IS THERE A 36BIT VALUE?\r
+       JRST    UPDAT1          ;YES, GET A CELL\r
+       HRR     ARG,V           ;NO, USE RH OF ARG\r
+UPDAT3:        MOVEM   ARG,0(SX)       ;OVERWRITE THE ONE IN THE TABLE\r
+       POPJ    PP,             ;AND EXIT\r
+\r
+UPDAT1:        AOS     SDEL,FREE       ;GET ONE CELL\r
+       CAML    SDEL,SYMBOL     ;NEED MORE CORE?\r
+       PUSHJ   PP,XCEEDS       ;YES\r
+       HRRI    ARG,-1(SDEL)    ;POINTER TO ARG\r
+       TLO     ARG,PNTF        ;AND NOTE IT.\r
+UPDAT2:        TLNE ARG,EXTF   ;IS THERE A EXTERNAL?\r
+       JRST UPDAT3             ;YES, - JUST SAVE A LOCATION\r
+       MOVEM   ARG,0(SX)       ;NO, OVERWRITE THE POINTER IN THE TABLE\r
+       MOVEM   V,0(ARG)        ;STORE VALUE AS A 36BIT VALUE\r
+       POPJ    PP,             ;AND EXIT\r
+       \r
+UPDAT4:        MOVEM ARG,0(SX) ;WE HAVE TWO CELLS, WE USE THEM\r
+       MOVEM V,0(ARG)  ;SAVE AS 36BIT VALUE\r
+       MOVEM RC,1(ARG) ;SAVE RELOCATION BITS\r
+       POPJ PP,                ;AND EXIT\r
+\r
+UPDAT5:        MOVEI SDEL,2            ;THERE IS A EXTERNAL\r
+       ADDB SDEL,FREE          ;SO WE NEED TWO LOACTIONS\r
+       CAML SDEL,SYMBOL        ;NEED MORE CORE?\r
+       PUSHJ PP,XCEEDS         ;YES\r
+       MOVEM RC,-1(SDEL)       ;SAVE RELOCATION BITS\r
+       HRRI ARG,-2(SDEL)       ;SAVE THE POINTER IN ARG\r
+       MOVEM V,0(ARG)          ;SAVE A 36BIT VALUE\r
+       TLO ARG,SPTR            ;SET SPECIAL PNTR FLAG\r
+       TLZ ARG,PNTF            ;CLEAR POINTER FLAG\r
+       JRST UPDAT3             ;SAVE THE POINTER AND EXIT\r
+\r
+\f      SUBTTL  CONSTANTS\r
+\r
+\r
+IFN FORMSW,<\r
+HWFORM:        BYTE    (18) 1,1\r
+INFORM:        BYTE    (9) 1 (4) 1 (1) 1 (4) 1 (18) 1\r
+IOFORM:        BYTE    (3) 1 (7) 1 (3) 1 (1) 1 (4) 1 (18) 1\r
+BPFORM:        BYTE    (6) 1,1 (2) 1 (4) 1 (18) 1\r
+ASCIIF:        BYTE    (7) 1,1,1,1,1\r
+SXFORM:        BYTE    (6) 1,1,1,1,1,1\r
+>\r
+\r
+\f      SUBTTL PHASED CODE\r
+LSTFIL:        BLOCK 1\r
+       SIXBIT /@/      ;SYMBOL TO STOP PRINTING\r
+TAG:   BLOCK   1\r
+       SIXBIT  / + @/\r
+TABI:\r
+IFE FORMSW,<   BYTE    (7) 0, 11, 11, 11, 11>\r
+IFN FORMSW,<   BYTE    (7) 11,11, 11, 11, 11>\r
+SEQNO: BLOCK   1\r
+       ASCIZ   /       /\r
+BININI:        EXP     B\r
+BINDEV:        BLOCK   1\r
+       XWD     BINBUF,0\r
+LSTINI:        EXP     AL\r
+LSTDEV:        BLOCK   1\r
+       XWD     LSTBUF,0\r
+INDEVI:        EXP     A\r
+INDEV: BLOCK   1\r
+       XWD     0,IBUF\r
+DBUF:  ASCIZ   / TI:ME DY-MON-YR PAGE /\r
+VBUF:  ASCIZ   /       MACRO / ;MUST BE LAST LOCATIONS IN BLOCK\r
+       BLOCK   3       ;ALLOW FOR LONG TITLE\r
+\r
+\r
+\fSUBTTL        STORAGE CELLS\r
+\r
+PASS1I:\r
+\r
+RP:    BLOCK   1\r
+\r
+CTIBUF:        BLOCK   3\r
+CTOBUF:        BLOCK   3\r
+LSTBUF:        BLOCK   3\r
+BINBUF:        BLOCK   3\r
+IBUF:  BLOCK   3\r
+LSTDIR:        BLOCK   4\r
+BINDIR:        BLOCK   4\r
+INDIR: BLOCK   4\r
+\r
+ACDELX:                                ;LEFT HALF\r
+BLKTYP:        BLOCK   1               ;RIGHT HALF\r
+\r
+COUTX: BLOCK   1\r
+COUTY: BLOCK   1\r
+COUTP: BLOCK   1\r
+COUTRB:        BLOCK   1\r
+COUTDB:        BLOCK   ?D18\r
+\r
+ERRCNT:        BLOCK   1\r
+FREE:  BLOCK   1\r
+IFBLK: BLOCK   .IFBLK\r
+IFBLKA:        BLOCK   .IFBLK\r
+LADR:  BLOCK   1\r
+NCOLLS:        BLOCK   1\r
+LIMBO: BLOCK   1\r
+LBUFP: BLOCK   1\r
+LBUF:  BLOCK   <.CPL+5>/5\r
+       BLOCK 1\r
+VARHD: BLOCK   1\r
+VARHDX:        BLOCK   1\r
+\r
+LITAB: BLOCK   1\r
+LITABX:        BLOCK   1\r
+       BLOCK   1\r
+LITHD: BLOCK   1\r
+LITHDX:        BLOCK   1\r
+LITCNT:        BLOCK   1\r
+LITNUM:        BLOCK   1\r
+\r
+LOOKX: BLOCK   1\r
+NEXT:  BLOCK   1\r
+OUTSW: BLOCK   1\r
+PDP:   BLOCK   1\r
+RECCNT:        BLOCK   1\r
+SAVBLK:        BLOCK   RC\r
+SAVERC:        BLOCK   1\r
+SBUF:  BLOCK   .SBUF/5\r
+SRCHX: BLOCK   1\r
+SUBTTX:        BLOCK   1\r
+SVSYM: BLOCK   1\r
+SYMBOL:        BLOCK   1\r
+SYMTOP:        BLOCK   1\r
+SYMCNT:        BLOCK 1\r
+\r
+STPX:  BLOCK   1\r
+STPY:  BLOCK   1\r
+STCODE:        BLOCK   .STP\r
+STOWRC:        BLOCK   .STP\r
+\r
+IFN FORMSW,<\r
+STFORM:        BLOCK   .STP\r
+FORM:  BLOCK   1\r
+HWFMT: BLOCK   1\r
+FLDSIZ:        BLOCK   1\r
+IOSEEN:        BLOCK   1\r
+>\r
+TABP:  BLOCK   1\r
+TCNT:  BLOCK   1               ;COUNT OF CHARS. LEFT IN TBUF\r
+TBUF:  BLOCK   .TBUF/5\r
+DEVBUF:        BLOCK   6               ;STORE NAME.EXT CREATION DATE AND TIME\r
+TYPERR:        BLOCK   1\r
+IONSYM:        BLOCK   1       ;-1 SUPRESS LISTING OF SYMBOLS\r
+PRGPTR:        BLOCK   1       ;POINTER TO CHAIN OF PRGEND BLOCKS\r
+ENTERS:        BLOCK   1       ;-1 WHEN ENTERS HAVE BEEN DONE\r
+UNIVSN:        BLOCK   1       ;-1 WHEN A UNIVERSAL SEEN\r
+\r
+\fPASS2I:\r
+\r
+ABSHI: BLOCK 1\r
+HIGH:  BLOCK   1\r
+ACDEVX:        BLOCK   1\r
+CPL:   BLOCK   1\r
+CTLSAV:        BLOCK   1\r
+CTLS1: BLOCK   1\r
+EXTPNT:        BLOCK   1\r
+INTENT:        BLOCK   1\r
+INREP: BLOCK 1\r
+INDEF: BLOCK 1\r
+INTXT: BLOCK 1\r
+INCND: BLOCK   1\r
+CALNAM:        BLOCK   1\r
+CALPG: BLOCK 1\r
+CALSEQ:        BLOCK 1\r
+DEFPG: BLOCK 1\r
+DEFSEQ:        BLOCK 1\r
+LITPG: BLOCK 1\r
+LITSEQ:        BLOCK 1\r
+REPPG: BLOCK 1\r
+REPSEQ:        BLOCK 1\r
+TXTPG: BLOCK 1\r
+TXTSEQ:        BLOCK 1\r
+CNDPG: BLOCK   1\r
+CNDSEQ:        BLOCK   1\r
+IRPCNT:        BLOCK   1\r
+IRPARG:        BLOCK   1\r
+IRPARP:        BLOCK   1\r
+IRPCF: BLOCK   1\r
+IRPPOI:        BLOCK   1\r
+IRPSW: BLOCK   1\r
+LITLVL:        BLOCK   1\r
+LITLBL:        BLOCK   1               ;NAME OF LABEL DEFINED INSIDE A LITERAL\r
+\r
+ASGBLK:        BLOCK   1\r
+LOCBLK:        BLOCK   1\r
+\r
+LOCA:  BLOCK   1\r
+LOCO:  BLOCK   1\r
+RELLOC:        BLOCK   1\r
+ABSLOC:        BLOCK   1\r
+LPP:   BLOCK   1\r
+MODA:  BLOCK   1\r
+MODLOC:        BLOCK   1\r
+MODO:  BLOCK   1\r
+OUTSQ: BLOCK 2\r
+PAGEN.:        BLOCK   1\r
+PPTEMP:        BLOCK   1\r
+PPTMP1:        BLOCK   1\r
+PPTMP2:        BLOCK   1\r
+\r
+REPCNT:        BLOCK   1\r
+REPEXP:        BLOCK   1\r
+REPPNT:        BLOCK   1\r
+RPOLVL:        BLOCK   1\r
+R1BCNT:        BLOCK 1\r
+R1BCHK:        BLOCK 1\r
+R1BBLK:        BLOCK .R1B\r
+R1BLOC:        BLOCK 1\r
+RIMLOC:        BLOCK   1\r
+TAGINC:        BLOCK   1\r
+VECREL:        BLOCK   1\r
+VECTOR:        BLOCK   1\r
+.TEMP: BLOCK   1               ;TEMPORARY STORAGE\r
+UNISCH:        BLOCK   .UNIV           ;SEARCH TABLE FOR UNIVERSALS\r
+SQFLG: BLOCK 1\r
+ARGF:  BLOCK   1\r
+MACENL:        BLOCK   1\r
+MACLVL:        BLOCK   1\r
+MACPNT:        BLOCK   1\r
+WWRXX: BLOCK   1\r
+RCOUNT:        BLOCK   1               ;COUNT OF WORDS STILL TO READ IN LEAF\r
+WCOUNT:        BLOCK   1               ;COUNT OF WORDS STILL FREE IN LEAF\r
+PASS2Z:                                ;ONLY CLEAR TO HERE ON PRGEND\r
+LSTSYM:        BLOCK   1\r
+PAGENO:        BLOCK   1\r
+SEQNO2:        BLOCK 1\r
+PASS2X:\r
+\r
+\fSUBTTL        MULTI-ASSEMBLY STORAGE CELLS\r
+\r
+LSTPGN:        BLOCK 1\r
+HDAS:  BLOCK 1\r
+IFN FORMSW,<PHWFMT:    BLOCK 1>\r
+MACSIZ:        BLOCK   1               ;INITIAL SIZE OF LOW SEG\r
+UNISIZ:        BLOCK   1               ;TOP OF BUFFERS AND STACKS\r
+UNITOP:        BLOCK   1               ;TOP OF UNIVERSAL SYMBOL TABLE\r
+UNIVNO:        BLOCK   1               ;NUMBER OF UNIVERSALS SEEN\r
+UNITBL:        BLOCK   .UNIV           ;TABLE OF UNIVERSAL NAMES\r
+UNIPTR:        BLOCK   .UNIV           ;TABLE OF SYMBOL POINTERS\r
+UNISHX:        BLOCK   .UNIV           ;TABLE OF SRCHX POINTERS\r
+       VAR                     ;CLEAR VARIABLES\r
+\r
+JOBFFI:        BLOCK   203*NUMBUF+1            ;INPUT BUFFER PLUS ONE\r
+\r
+       END     BEG\r
+\f\r
+\r
diff --git a/src/mtpser.mac b/src/mtpser.mac
new file mode 100644 (file)
index 0000000..92a276f
--- /dev/null
@@ -0,0 +1,409 @@
+         TITLE MTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES\r
+         SUBTTL L. HANTMAN 8-9-65\r
+         T=ITEM\r
+; MAG TAPE SERVICE SUBROUTINES\r
+\r
+MTAPE1:          PUSHJ PDP,WAIT1\r
+         HRRZI IOS,776000\r
+         ANDCAB IOS,DEVIOS(DEVDAT)\r
+         MOVEI T,(UUO)\r
+         PUSHJ PDP,MTAPE+1\r
+         JRST UXIT\r
+\r
+MTAPE:   PUSHJ PDP,WAIT1\r
+         TLZ IOS,IODT\r
+         TRO IOS, IOACT                ;SET ACTIVE\r
+         PUSHJ PDP,MTCHK2              ;CHECK IF MAG TAPE CONTROL AV\r
+         LSH T,^D8 ;MOVE TO FUNCTION\r
+         ANDI T,7400           ;MODE BITS\r
+         CAIN T,4000           ;LOGICAL EOT?\r
+         JRST MTLEOT\r
+         CAIE T,400            ;RWD?\r
+         JRST .+3\r
+         CONSZ 224,4000        ;AT LOAD POINT?\r
+         JRST MTDMP4\r
+         MOVEI TAC, TCF                ;LOOK FOR TAPE CONTROL FREE 0\r
+MTGO1:   HRRM TAC, MTCONO\r
+         HRRM TAC, MTCINT\r
+MTGO1A:          LDB TAC,PUNIT         ;UNIT\r
+         DPB TAC,[POINT 3,T,31]        ;UNIT\r
+         LDB TAC, [POINT 3, IOS,28]    ;DENSITY PARITY\r
+         XORI TAC, 5                   ;ODD, 556\r
+         DPB TAC,[POINT 3,T,23]\r
+         MOVEI TAC,MTCCHN(T) ;CHANNEL\r
+\r
+MTGO:    CONO 224, 0                   ;DISABLE ALL INTERRUPTS\r
+         TRO TAC, 200                  ;INHIBIT RETURN TO POOL\r
+         CONO 220,(TAC)                ;COMMAND\r
+         SETZM MTEOFF#                 ;CLEAR EOF FLAG\r
+         HRRM DEVDAT,MTDEV#    ;COMMAND, DVDB\r
+         HRLM TAC,MTDEV\r
+         TLNE IOS,IODT\r
+         CONO PI,2000+DCB\r
+         MOVEI TAC,MTPDUN\r
+MTCONO:          CONO 224,TCF+ERF              ;ENABLE FLAGS\r
+         POPJ PDP,\r
+\r
+;READ\r
+MTIN:    TLZ IOS, IO                   ;READING\r
+         PUSHJ PDP,MTCHEK              ;IS SYSTEM AVAILABLE?\r
+         SETCM TAC,@DEVIAD(DEVDAT)     ;-SIZE-1\r
+MTIN1:   HRRI TAC,@DEVIAD(DEVDAT)      ;BUFFER ADDRESS, PROG INCLUDE\r
+         ADD TAC,[XWD 2,1]             ;-SIZE+1,BUFFER+1\r
+         MOVEI T,2400          ;READ\r
+MTIN2:   MOVE TAC1,[BLKI DC,4000+DCN+MTDC*10]\r
+         JRST MTINDC\r
+\f\r
+;IS SYSTEM AVAILABLE\r
+MTCHEK:          TRO IOS, IOACT                ;SET ACTIVE\r
+         TLO IOS, IODT                 ;SET FOR DATA TRANSFER\r
+         MOVEM IOS, DEVIOS(DEVDAT)\r
+MTCHK1:          AOSE DCREQ\r
+         PUSHJ PDP,DCWAIT\r
+MTCHK2:          TLZ IOS, IOSEOF+IOBEG                 ;CLEAR SPACE TO EOF\r
+         MOVEM IOS, DEVIOS(DEVDAT)             ;STORE BITS\r
+         AOSE MTREQ\r
+         PUSHJ PDP,MTWAIT\r
+         XCT MTGO1A                    ;UNIT\r
+         ROT TAC, 4                    ;PUT IN UNIT POSITION\r
+         CONO 220, 200(TAC)    ;HAS UNIT ONLY\r
+         CONO 224, SEL                 ;JAM UNIT INTO COMMAND BUFFER\r
+         CONSZ 224, SEL                ;UNIT NOT READY?\r
+         POPJ PDP, 0                   ;EXIT\r
+         ROT TAC, -4                   ;UNIT IN TAC\r
+         HRRM DEVDAT, MTSTAK(TAC)      ;PUT IN STACK\r
+         MOVE TAC1, [XWD MTCLOK,^D32]  ;HALF SECOND\r
+         DPB TAC, [POINT 3,TAC1,23]    ;STORE UNIT NUMBER\r
+         HRLM TAC1, MTSTAK(TAC)        ;SAVE ACTUAL CLOCK REQUEST\r
+         CONO PI, 400                  ;TURN OFF PI\r
+         IDPB TAC1, CLOCK              ;REQUEST CLOCK RETURN TO MTCL\r
+         CONO PI, 200                  ;TURN PI ON\r
+         SOSL MTREQ            ;DECREMENT REQUEST COUNT, ANYONE LEFT W\r
+         SETOM MTAVAL                  ;YES,SET MAG TAPE AVAL\r
+         TLNN IOS, IODT                ;NON-DATA TRANSFER?\r
+         JRST MTCHK3           ;YES\r
+         SOSL DCREQ            ;NO,DECREMENT REQUEST COUNT,ANYONE LEFT\r
+         SETOM DCAVAL                  ;YES,SET DATA CONTROL AVAILAB\r
+MTCHK3:          PUSHJ PDP, WSYNC              ;REQUEST WAIT\r
+         MOVE IOS, DEVIOS(DEVDAT)      ;LOAD STATUS\r
+         TLNN IOS, IODT                ;DATA TRANFER?\r
+         JRST MTCHK2+2                 ;CHECK FOR MT AVAILABLE ONLY\r
+         JRST MTCHK1                   ;CHECK FOR MT AND DC AVAIALABL\r
+\f\r
+;WRITE\r
+MTOUT:   TLO IOS, IO                   ;WRITING\r
+         PUSHJ PDP,MTCHEK\r
+         CONSZ 224,200         ;IS FILE PROTECT RING IN?\r
+         JRST MTOUTE           ;NO, ERROR CANT WRITE. CROCK!!\r
+MTOUT1:          MOVEI TAC,@DEVOAD(DEVDAT)     ;BUFFER ADDRESS, PROG INCLUDE\r
+         MOVN TAC1,1(TAC)      ;-WD COUNT\r
+         HRL TAC,TAC1          ;-WD CMT,BUFFER\r
+         AOJG TAC,MTNOTI       ;BUFFER+1, TEST FOR ZERO WORD COUNT\r
+MTOUT2:          MOVE TAC,[BLKO DC,3400+DCN+MTDC*10]\r
+         MOVEI T,1000          ;WRITE\r
+MTINDC:          MOVEM TAC,MTDCCN#             ;BLKO POINTER\r
+         MOVEM TAC,DCWRD#\r
+         HRRZM TAC1, MDCSAV#           ;SAVE DC COMMAND\r
+         HRRI TAC1,DCWRD\r
+         MOVEM TAC1,40+<2*DCN>         ;BLK COMMAND\r
+         MOVE TAC1,[JSR MTDCND]\r
+         MOVEM TAC1,41+<2*DCN>\r
+         CONO PI,1100\r
+         CONO DC, @MDCSAV              ;DATA CONTROL COMMAND\r
+         MOVEI TAC, ERF\r
+         JRST MTGO1\r
+\r
+MTOUTE:          TRO IOS,IODERR        ;WRITE LOCK, DEVICE ERROR\r
+         PUSHJ PDP,MTEND1\r
+         JRST UXIT\r
+\r
+MTCLS:   LDB TAC,PIOMOD        ;MODE\r
+         CAIG TAC, 16                  ;DUMP MODE\r
+         JRST MTCLS1                   ;CLOSE OUTPUT\r
+         TLNE IOS,IO                   ;INPUT?\r
+         JRST MTCLS1+1                 ;WRITE EOFS\r
+         MOVEI T,16            ;SPACE TO EOF\r
+         JRST MTAPE                    ;GOES BACK TO UUO LEVEL\r
+MTCLS1:          PUSHJ PDP,OUT\r
+         MOVEI T,3  ;WRITE IOF\r
+         PUSHJ PDP, MTAPE\r
+         MOVEI T,3  ;WRITE EOF\r
+         PUSHJ PDP, MTAPE\r
+         MOVEI T,7  ;BSP\r
+         JRST MTAPE\r
+MTDISP:          POPJ PDP,                     ;RELEASE\r
+         JRST MTCLS                    ;CLOSE\r
+         JRST MTOUT                    ;WRITE\r
+         JRST MTIN                     ;READ\r
+         JRST CUXIT1           ;ENTER IN DIRECTORY\r
+         JRST CUXIT1           ;LOOKUP IN DIRECTORY\r
+         JRST MTDMPO                   ;DUMP OUT\r
+         JRST MTDMPI                   ;DUMP IN\r
+         JRST UXIT                     ;SETO\r
+         JRST UXIT                     ;SETI\r
+         JRST UXIT                     ;GETF\r
+\r
+MTCINI:          MOVN TAC, MTREDO              ;REPEAT COUNTER\r
+         HRREM TAC, MTERCN             ;RESET ERROR CNTR\r
+         CONO 224,0                    ;CLEAR ENABLES\r
+         HLLZS MTCINT                  ;CLEAR CONSO\r
+         POPJ PDP,\r
+\r
+\f\r
+\r
+\r
+;BLK COUNTED OUT\r
+\r
+MTDCND:          0\r
+         CONO PI,DCB+1000              ;SHUT OF DC CHANNEL\r
+         JEN @MTDCND\r
+\f\r
+\r
+;FLAG FROM TAPE CONTROL.  SET UP BY INSERT MACRO\r
+MTCINT:          CONSO 224,TCF+ERF\r
+         JRST .\r
+         JSR MTCSAV                    ;SAVE ACS\r
+         HRRZ DEVDAT,MTDEV             ;DVBD\r
+         LDB PROG,PJOBN;               JOB NUMBER\r
+         HRRZ PROG, JBTADR(PROG)\r
+         MOVE IOS, DEVIOS(DEVDAT)\r
+         CONSO 224,TCF                 ;TAPE CONTROL FREE\r
+         JRST MTEOR\r
+MTIDSP:          JRST MTPDUN                   ;POINTS TO MTERR FOR ERROR\r
+         JRST MTBSP                    ;AFTER BACKSPACE\r
+         JRST MTERR                    ;IF ERROR FOUND\r
+MTPDUN:          TLNN IOS,IODT\r
+         JRST MTNIO2\r
+         LDB TAC,PIOMOD\r
+         CAIL TAC,16\r
+         JRST MTEND1                   ;DUMP\r
+         TLNE IOS,IO\r
+         JRST MTNOTI                   ;WRITING\r
+         SKIPE MTEOFF                  ;NOT EOF?\r
+         JRST MTEOF\r
+MTINDN:          MOVEI TAC,@DEVIAD(DEVDAT)     ;BUFFER ADDRESS\r
+         MOVN TAC1,MTDCCN              ;WD CNT-1\r
+         AOBJN TAC1, .+1               ;WD CNT\r
+         HLLZS TAC1                    ;CLR RT HALF\r
+         ADD TAC1,DCWRD                ;ADD CURRENT COUNT=NO. OF WDS\r
+         HLRM TAC1,1(TAC)              ;STORE AT WORD COUNT\r
+         PUSHJ PDP,ADVBFF\r
+         JRST .+2  ;NEXT BUFFER FULL\r
+         JRST MTCON                            ;CONTINUE MODE\r
+MTEND1:          CONO DC, 0                    ;TURN OFF DATA CONTROL\r
+         SOSL DCREQ            ;DECREMENT REQUEST COUNT, ANYONE LEFT?\r
+         SETOM DCAVAL                  ;YES, SET FLAG FOR CLOCK\r
+MTNIO:   SOSL MTREQ\r
+         SETOM MTAVAL                  ;YES, SET FLAG FOR CLOCK\r
+         CONSZ 224,10000               ;END OF TAPE?\r
+         TRO IOS, IOTEND               ;SET END OF TAPE INDICATION\r
+         TRZ IOS, IOBOT                ;CLR LOAD POINT INDICATION\r
+         CONSZ 224, 4000               ;LOAD POINT?\r
+         TRO IOS, IOBOT                ;SET LOAD POINT INDICATION\r
+         CONSZ 224, 20000              ;TAPE REWINDING?\r
+         TRO IOS, IOBOT                ;SET LOAD POINT INDICATION\r
+         TLZE IOS, IOW                 ;CLEAR WAIT\r
+         PUSHJ PDP, SETIOD             ;REQUEST WAIT SATISFIED\r
+         TRZ IOS, IOACT                ;CLEAR ACTIVE\r
+         MOVEM IOS, DEVIOS(DEVDAT)     ;RESTORE BITS\r
+         CONO 224,0                    ;CLEAR MAG TAPE ENABLES\r
+         HLLZS MTCINT                  ;CLEAR CONSO\r
+         MOVN TAC, MTREDO              ;REPEAT COUNTER\r
+         HRREM TAC, MTERCN#\r
+         POPJ PDP,             ;DISMISS INTERRUPT OR RETURN TO CALLER\r
+\f\r
+MTNOTI:          PUSHJ PDP,ADVBFE              ;WRITING\r
+         JRST MTEND1\r
+MTCON:   TRNE IOS,IOCON                ;CONTINUOUS?\r
+         JRST MTEND1                   ;STOP TAPE\r
+         CONSZ 224,10000               ;END OF TAPE?\r
+         JRST MTEND1                   ;STOP TAPE\r
+         CONO DC,0             ;CLEAR DATA CONTROL\r
+         TLZE IOS,IOW\r
+         PUSHJ PDP,SETIOD\r
+         MOVEM IOS,DEVIOS(DEVDAT)\r
+         MOVN TAC,MTREDO\r
+         HRREM TAC,MTERCN\r
+         TLNN IOS,IO           ;INPUT OR OUTPUT?\r
+         JRST MTIN1            ;CALL INPUT SUBROUTINE\r
+         JRST MTOUT1           ;CALL OUTPUT SUBROUTINE\r
+MTNIO2:          HLRZ TAC,MTDEV                ;COMMAND\r
+         ANDI TAC,7400\r
+         CAIE TAC, 3000                ;SPACE ONE RECORD\r
+         JRST MTNIO                    ;EXIT\r
+         CONSZ 224, 400                ;EOF?\r
+         TLO IOS, IOSEOF               ;SET EOF DETECTED\r
+         JRST MTNIO                    ;EXIT\r
+MTEOF:   TLO IOS, IOEND\r
+         JRST MTEND1\r
+MTEOR:   CONSZ 224,LPE+CPE             ;IF END OF RECORD CHECK PARIT\r
+         SOS MTIDSP                    ;IF ERROR CAUSE INTERRUPT TO\r
+                                       ;ERROR ROUTIE VIA TCF\r
+         CONSZ 224, 400                ;EOF?\r
+         SETOM MTEOFF                  ;SET EOF FLAG\r
+MTIGN:   CONO 224, TCF                 ;IF ERF, CAUSE INTERRUPT TO D\r
+                                       ;PATCH TABLE, DISABLE ERF FLA\r
+         MOVEM TAC, MTDCND             ;SAVE TAC\r
+         MOVEI TAC, TCF                ;LOOK FOR TCF ONLY\r
+         HRRM TAC, MTCINT              ;SET CONSO\r
+         MOVE TAC,MTDCND               ;RESTORE TAC\r
+         JRST MTCRET                   ;DISMISS AND RETURN VIA TCF\r
+\f\r
+MTERR:   HLRZ TAC,MTDEV                ;COMMAND\r
+         ANDI TAC,7400\r
+         CAIN TAC,2400                 ;READ?\r
+         JRST .+3\r
+         CAIN TAC,1000                 ;WRITE\r
+         JRST MTIGN2                   ;IGNORE IF NOT RD OR WRITE\r
+         TRNN IOS, IONRCK              ;RE-DO?\r
+         AOSL MTERCN                   ;THIRD ERROR?\r
+         JRST MTERR2                   ;TRIPLE ERROR\r
+         HLRZ TAC,MTDEV                ;COMMAND\r
+         ANDI TAC,770377\r
+         CONO 220,3400(TAC)    ;BSP\r
+         SOS MTIDSP\r
+         JRST MTIGN\r
+\r
+MTERR2:          TRO IOS, IODERR               ;DEVICE ERROR\r
+         JRST MTPDUN\r
+\r
+MTBSP:   MOVE TAC,MTDCCN               ;POINTER\r
+         MOVEM TAC,DCWRD               ;RESET POINTER WORD\r
+         CONI DC,TAC                   ;SAVE IN/OUT, PACK MD. DEV NU\r
+                                       ;PRIORITY\r
+         ANDI TAC,777\r
+         ADDI TAC,3000                 ;MAKE WRITE\r
+         TRNN TAC,400                  ;WAS IT WRITING?\r
+         ADDI TAC,1000                 ;MAKE READ\r
+         CONO DC,(TAC)                 ;REISSUE CONO\r
+         HLRZ TAC,MTDEV                ;COMMAND\r
+         CONSO 224,XNC                 ;WAIT FOR XNC\r
+         JRST .-1  ;SHOULD ADD A COUNT(RUNAWAY TAPE TURNED\r
+         CONO 220,(TAC)                ;REISSUE RD OR WRITE\r
+         SETZM MTEOFF                  ;CLR EOF FLAG\r
+         CONO PI,2000+DCB              ;TURN ON CHANNEL\r
+         MOVEI TAC,MTPDUN              ;RESET SWITCH\r
+         HRRM TAC,MTIDSP\r
+         MOVEI TAC, ERF\r
+         HRRM TAC, MTCINT\r
+         CONO 224, ERF\r
+         JRST MTCRET                   ;ENABLE PROPER FLAGS\r
+MTIGN2:          AOS MTIDSP                    ;RESET DISPATCH SWITCH\r
+         JRST MTIGN\r
+\r
+;NEED TO TRY WRITING LONG RECORD GAP ON OUTPUT(ONLY) AND TRY\r
+;ONCE MORE AT NEW SPOT ON TAPE IF TRIPLE ERROR\r
+\f\r
+\r
+XNC=40000              ;TRANSFER NEW COMMAND\r
+MTDC=2                 ;MAG TAPE DATA CONTROL DEVICE NO.\r
+TCF=1                  ;TAPE CONTROL FREE\r
+ERF=4                  ;END OF RECORD FLAG\r
+LPE=20                 ;LONG. PARITY ERROR\r
+CPE=10                 ;CHAR. PARITY ERROR\r
+DCB=100                        ;DATA CHANNEL NUMBER\r
+DCN=1                  ;DATA CHANNEL NUMBER\r
+SEL=2                  ;UNIT TO COMMAND BUFFER\r
+IOSEOF=4000            ;SPACING ONE RECORD FORWARD FOUND EOF\r
+IOTEND=2000            ;EOT INDICATION\r
+IONRCK=100             ;DO NOT RE-TRY ON ERRORS\r
+IOBOT=4000             ;TAPE AT LOAD POINT\r
+IODT=10000             ;A 1 FOR A DATA TRANFER TYPE COMMAND\r
+EXTERNAL UXIT, ADVBFF, ADVBFE, DCREQ, DCWAIT, MTCSAV\r
+EXTERNAL MTCRET, DCAVAL, MTAVAL, MTCCHN, MTCCHL, MTREQ\r
+EXTERNAL MTWAIT,OUT,SETIOD,CLOCK,CUXIT1\r
+EXTERNAL WSYNC,USRREL,WAIT1,ADRERR,PUNIT,PIOMOD,PJOBN\r
+EXTERNAL JBTADR\r
+ENTRY MTDISP\r
+INTERNAL MTCINT,MTAPE1,MTCINI\r
+;CLOCK INTERRUPT, UNIT IN TAC\r
+MTCLOK:          HRRZ DEVDAT, MTSTAK(TAC)      ;DVDB\r
+         ROT TAC, 4                    ;PUT UNIT IN SEL BITS\r
+         CONO 220, 200(TAC)    ;UNIT ONLY\r
+         CONO 224, SEL                 ;SEL UNIT\r
+         CONSZ 224, SEL                ;UNIT NOT READY?\r
+         JRST MTCLK2                   ;UNIT READY\r
+         ROT TAC, -4                   ;FOR INDEXING PURPOSES\r
+         HLR TAC1, MTSTAK(TAC)         ;CLOCK REQUEST\r
+         HRLI TAC1, MTCLOK             ;GET CLOCK REQUEST\r
+         CONO PI, 400                  ;TURN OFF PI\r
+         IDPB TAC1, CLOCK              ;STORE CLOCK REQUESTED\r
+         CONO PI, 200                  ;TURN ON PI\r
+         POPJ PDP, 0                   ;EXIT\r
+MTCLK2:          MOVE IOS, DEVIOS(DEVDAT)\r
+         TLZE IOS,IOW\r
+         PUSHJ PDP, SETIOD\r
+         MOVEM IOS, DEVIOS(DEVDAT)\r
+         POPJ PDP, 0\r
+MTSTAK:          BLOCK ^D8\r
+\f\r
+\r
+;LOGICAL END OF TAPE LOOP\r
+MTLEOT:          CONSZ 224, 4000               ;TAPE NOT AT LOAD POINT?\r
+         JRST MTEOT2                   ;AVOID BACKSPACE IFAT LOAD P\r
+         MOVEI T,3400          ;BACKSPACE\r
+         PUSHJ PDP, MTGO1-1\r
+MTEOT2:          MOVEI T,16            ;SPACE ONE FILE\r
+         PUSHJ PDP, MTAPE\r
+         MOVEI T,6 ;SPACE ONE RECORD\r
+         PUSHJ PDP, MTAPE\r
+         PUSHJ PDP, WAIT1              ;WAIT UNTIL SPACING IS COMPLE\r
+         MOVE IOS, DEVIOS(DEVDAT)\r
+         TLNN IOS, IOSEOF              ;WAS EOF DETECTED?\r
+         JRST MTEOT2                   ;RESUME SPACING\r
+         MOVEI T,7 ;BACKSPACE, LOGICAL EOF FOUND\r
+         JRST MTAPE                    ;RETURN BACK TO MAIN PROGRAM\r
+MTREDO:          12        ;NUMBER OF TIMES TO RE-EXECUTE\r
+\f\r
+\r
+;DEVICE DEPENDENT DUMP MODES. MODE 16.\r
+;OUTPUT\r
+MTDMPO:          TLO IOS, IO                   ;WRITING\r
+         HRRZ T,UUO\r
+         PUSHJ PDP, MTCHEK             ;IS SYSTEM AVAILABLE?\r
+         MOVE TAC1, @MTOUT2    ;BLK0 AND DATA CONTROL COMMAN\r
+         MOVE TAC,T                    ;COMMAND LIST POINTER\r
+         MOVEI T,1000          ;WRITING COMMAND\r
+MTDMP1:          HRLI TAC, PROG                ;ACTUAL ADDRESS OF COMMAND LI\r
+         MOVEM TAC, MTCMDP#    ;COMMAND POINTER\r
+         SKIPN TAC,@TAC                ;COMMAND WORD\r
+         JRST MTDMP3                   ;NOTHING TO DO\r
+         JUMPGE TAC, MTDMP1    ;CHANGE COMMAND SEQUENCE\r
+         HLREM TAC, SVCNTR#    ;SAVE COUNTER\r
+         HRRZS TAC                     ;GET ADDRESS ALONE\r
+         SUB TAC, SVCNTR               ;GET LAST ADDRESS\r
+         CAMLE TAC, USRREL             ;LESS THAN END?\r
+         JRST MTDMP2                   ;OUT OF BOUNDS\r
+         MOVE TAC, @MTCMDP             ;PICK UP POINTER AGAIN\r
+         ADD TAC, PROG                 ;GET ACTUAL ADDRESS\r
+         PUSHJ PDP, MTINDC             ;MOVE TAPE\r
+         PUSHJ PDP,WAIT1\r
+         AOS T,MTCMDP          ;UPDATE COMMAND POINTER\r
+         TLNN IOS, IO                  ;WRITING?\r
+         JRST MTDMPI+2                 ;READING\r
+         JRST MTDMPO+2                 ;WRITING\r
+;INPUT\r
+MTDMPI:          TLZ IOS, IO                   ;READING\r
+         HRRZ T,UUO\r
+         PUSHJ PDP, MTCHEK             ;IS SYSTEM AVAILABLE\r
+         MOVE TAC1,@MTIN2              ;BLKI AND DATA CONTROL COMMAN\r
+         MOVE TAC,T                    ;COMMAND LIST POINTER\r
+         MOVEI T,2400          ;READ COMMAND\r
+         JRST MTDMP1                   ;DUMP\r
+;ADDRESS ERROR\r
+\r
+MTDMP2:          PUSHJ PDP,MTDMP3\r
+         JRST ADRERR\r
+;CLEAR ALL USE BITS. NOTHING IN COMMAND LIST\r
+\r
+MTDMP3:          SOSL DCREQ\r
+         SETOM DCAVAL\r
+MTDMP4:          SOSL MTREQ\r
+         SETOM MTAVAL\r
+         TRZ IOS,IOACT\r
+         TLZE IOS,IOW\r
+         PUSHJ PDP,SETIOD\r
+         MOVEM IOS,DEVIOS(DEVDAT)\r
+         POPJ PDP,\r
+\r
+         END,\r
diff --git a/src/once.mac b/src/once.mac
new file mode 100644 (file)
index 0000000..02b2de1
--- /dev/null
@@ -0,0 +1,351 @@
+         TITLE ONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE\r
+         SUBTTL THIS IS ONLY CODE PLACED AT THE END OF IOINIT\r
+;WHICH SHOULD BE THE LAST LOADED PROGRAM BEFORE SYSMAK AND DDT\r
+;THUS IF IT OVERFLOWS INTO THE USER AREA NO HARM IS DONE\r
+;INITIALIZE PRIORITY CHANNELS AND SETUP INTERRUPT SERVICE ROUTINE CHA\r
+\r
+XP SYSFIN,.-1          ;LAST LOC. IN SYSTEM\r
+NXM=10000 ;NON EX-MEM\r
+\r
+INTERNAL PATCH\r
+\r
+PATCH:   BLOCK 100 ;PATCH SPACE\r
+                   ;C(SYSSIZE) SHOULD BE UPDATED AS PATCHES ARE MADE\r
+\r
+T=TAC    ;SOME ACS\r
+C=TAC1\r
+INT=DAT          ;INTERRUPT SERVICE ENTRY POINT(USUALLY A CONSO INSTR.)\r
+CHL=DEVDAT         ;THE PLACE WHERE PC IS STORED FOR THAT CHANNEL\r
+\r
+;LINK TO SERVICE ROUTINES\r
+\r
+INTERNAL LINKSR\r
+EXTERNAL NDEVM1            ;=NDOV-1 (DEFINED IN IOINI1)\r
+EXTERNAL DEVINT,JOBSYM\r
+\r
+LINKSR:          0                     ;CALLED WITH JSR FROM SYSINI\r
+                               ;CHAIN INTERUPT SERVICE ROUTINES TOGETH\r
+         HRLZI INT, 254000     ;FORM JRST INSTR.\r
+         MOVEI C, NDEVM1       ;NO. OV DEV. SERV. ROUTINES TO CHAIN\r
+DEV1:    HLRZ CHL, DEVINT(C)   ;LOC. WHERE PC IS STORED\r
+         HRR INT, DEVINT(C)    ;INTERRUPT SERVICE ROUTINE ENTRY POINT\r
+         MOVE T, 1(CHL)        ;INSERT THIS ROUTINE AT FRONT OF CHAIN\r
+         MOVEM T, 1(INT)\r
+         MOVEM INT, 1(CHL)\r
+         SOJGE C, DEV1\r
+\f\r
+\r
+;MOVE SYMBOL TABLE UP IN MEMORY\r
+;EXEC MUST BE LOADED IN 15K OR LESS IF GOING INTO 16K MACHINE\r
+\r
+         SETZM DAT             ;FIND FIRST NON EX MEM\r
+         CONO APR,NXM          ;CLEAR NON-EX MEM FLAG\r
+         ADDI DAT,2000         ;TRY NEXT 1K BLOCK\r
+         MOVE TAC1,(DAT)       ;REFERENCE THIS LOCATION\r
+         CONSO APR,NXM         ;NON-EXISTENT?\r
+         JRST .-3              ;NO\r
+         SUBI DAT,1            ;YES, HIGHEST LEGAL LOC\r
+         MOVEM DAT,DDTMEM      ;FOR DDT\r
+         SUBI DAT,200-1        ;MAKE ROOM FOR DECDUMP\r
+         HLRE TAC1,JOBSYM      ;-LENGTH OF S. T.\r
+         JUMPE TAC1,JRSTI1     ;0 IF NON S. T. TO MOVE UP\r
+         MOVNS TAC1            ;+LENGTH\r
+         HRRZ TAC,JOBSYM       ;FIRST ADDRESS\r
+          ADDI TAC,(TAC1)\r
+         HRL TAC,TAC1          ;XWD LENGTH,LENGTH+FIRST ADDRESS\r
+         SUBI DAT,1(TAC)       ;NEW LAST+1-OLD LAST+1\r
+         HRRM DAT,STO1         ;DIST. TO MOVE\r
+         MOVE TAC1,JOBSYM      ;-N,FIRST ADD.\r
+         ADDI TAC,1(DAT)       ;FORM NEW S.T. POINTER\r
+         MOVEM TAC1,JOBSYM\r
+         MOVEI TAC1,JOBSYM\r
+         MOVEM TAC1,DDTSYM\r
+         MOVE TAC1,-1(TAC)\r
+STO1:    MOVEM TAC1,.(TAC)\r
+         SUB TAC,[XWD 1,1]\r
+         JUMPGE TAC,.-3\r
+\f\r
+\r
+;SETUP LOCATIONS 40 THRU 57\r
+\r
+JRSTI1:          MOVE TAC,[XWD LOC40,40]\r
+         BLT TAC,57\r
+         MOVE TAC,JRSTI\r
+         MOVEM TAC,LINKSR+1    ;DO ONCE ONLY\r
+JRSTI:   JRST @LINKSR\r
+\r
+EXTERN UUO0,ERROR\r
+EXTERN CH1,CH2,CH3,CH4,CH5,CH6,CH7\r
+\r
+LOC40:   0             ;UUO PC\r
+         JSR UUO0      ;TO UUO HANDLER\r
+         JSR CH1\r
+         JSP DAT,ERROR\r
+         JSR CH2\r
+         JSP DAT,ERROR\r
+         JSR CH3\r
+         JSP DAT,ERROR\r
+         JSR CH4\r
+         JSP DAT,ERROR\r
+         JSR CH5\r
+         JSP DAT,ERROR\r
+         JSR CH6\r
+         JSP DAT,ERROR\r
+         JSR CH7\r
+         JSP DAT,ERROR\r
+\f\r
+\r
+\r
+;ONCE ONLY CODE - OPERATOR SETUP DIALOGUE\r
+\r
+INTERNAL ONCE\r
+EXTERNAL CONMES,RADX10,CRLF,DECIN,DECIN1\r
+EXTERNAL THSDAT,MAKEND,JOBFF\r
+EXTERNAL ERNAM,OCTPNT,SYSSIZ,CONFIG,SYSNUM,SYSDAT\r
+\r
+ONCE:    0\r
+         MOVEI TAC,SYSFIN      ;SET SIZE OF MONITOR\r
+         MOVEM TAC,SYSSIZ\r
+         MOVE DAT,LINEP        ;SETUP LINE BYTE POINTER\r
+         MOVE PDP,[XWD ONCEPN,ONCEPD]\r
+         PUSHJ PDP,CRLF\r
+         MOVEI TAC,CONFIG\r
+         PUSHJ PDP,CONMES\r
+         MOVEI TAC,TSEXEC\r
+         PUSHJ PDP,CONMES\r
+         HLRZ TAC,SYSNUM\r
+         PUSHJ PDP,RADX10\r
+         MOVEI TAC,[ASCIZ /./]\r
+         PUSHJ PDP,CONMES\r
+         HRRZ TAC,SYSNUM\r
+         PUSHJ PDP,RADX10\r
+         MOVEI TAC,[ASCIZ / /]\r
+         PUSHJ PDP,CONMES\r
+         MOVEI TAC,SYSDAT\r
+         PUSHJ PDP,CONMES\r
+         PUSHJ PDP,CRLF\r
+         PUSHJ PDP,OPOUT\r
+\f\r
+\r
+;ASK FOR TODAYS DATE AND CONVERT\r
+;DATE STORED AS ((Y-64)*12.+M-1)*31.+D-1\r
+\r
+DATLOP:          SETZM THSDAT\r
+         MOVE DAT,LINEP\r
+         MOVEI TAC,TODATE\r
+         PUSHJ PDP,CONMES\r
+         PUSHJ PDP,OPOUT\r
+         PUSHJ PDP,GETLIN\r
+         JRST DATLOP           ;JUST CR\r
+         PUSHJ PDP,DECIN1      ;MONTH\r
+         JRST DATLOP           ;ERROR\r
+         SKIPE TAC1\r
+         CAILE TAC1,^D12\r
+         JRST DATLOP\r
+         SUBI TAC1,1\r
+         IMULI TAC1,^D31\r
+         ADDM TAC1,THSDAT\r
+         PUSHJ PDP,DECIN1      ;DAY\r
+         JRST DATLOP\r
+         SKIPE TAC1\r
+         CAILE TAC,^D31\r
+         JRST DATLOP\r
+         SUBI TAC1,1\r
+         ADDM TAC1,THSDAT\r
+         PUSHJ PDP,DECIN1      ;YEAR\r
+         JRST DATLOP\r
+         CAIL TAC1,^D65\r
+         CAILE TAC1,^D99\r
+         JRST DATLOP\r
+         SUBI TAC1,^D64        ;YEAR ZERO\r
+         IMULI TAC1,^D12*^D31\r
+         ADDM TAC1,THSDAT\r
+\f\r
+\r
+;GET TIME OF DAY\r
+\r
+EXTERN TIME\r
+\r
+TIMLOP:          SETZM TIME\r
+         MOVE DAT,LINEP\r
+         MOVEI TAC,TIMEM\r
+         PUSHJ PDP,CONMES\r
+         PUSHJ PDP,OPOUT\r
+         PUSHJ PDP,GETLIN\r
+         JRST TIMLOP           ;JUST A CR\r
+         ILDB TAC1,TAC\r
+         SUBI TAC1,60\r
+         SKIPL TAC1            ;CHECK FIRST DIGIT OF HOUR\r
+         CAILE TAC1,2\r
+         JRST TIMLOP\r
+         IMUL TAC1,[^D60*^D60*^D60*^D10]\r
+         ADDM TAC1,TIME\r
+         ILDB TAC1,TAC\r
+         SUBI TAC1,60          ;CONVERT TO BINARY\r
+         SKIPL TAC1\r
+         CAILE TAC1,^D9\r
+         JRST TIMLOP\r
+         IMULI TAC1,^D60*^D60*^D60\r
+         ADDM TAC1,TIME\r
+         PUSHJ PDP,DECIN1\r
+         JRST TIMLOP\r
+         CAILE TAC1,^D59\r
+         JRST TIMLOP\r
+         IMULI TAC1,^D60*^D60\r
+         ADDM TAC1,TIME\r
+\f\r
+\r
+;PRINT IO CONFIGURATION\r
+\r
+EXTERN DEVLST\r
+\r
+          MOVE DAT,LINEP\r
+          MOVEI TAC,IOCONF\r
+          PUSHJ PDP,CONMES\r
+          HLRZ DEVDAT,DEVLST\r
+          MOVEI TAC,ITEM\r
+          PUSH PDP,TAC\r
+ONCE5:    MOVEI TAC,1\r
+          HLLZ ITEM,DEVNAM(DEVDAT)\r
+ONCE4:    HLRZ DEVDAT,DEVSER(DEVDAT)\r
+          JUMPE DEVDAT,ONCE6\r
+          HLLZ TAC1,DEVNAM(DEVDAT)\r
+          CAMN TAC1,ITEM\r
+          AOJA TAC,ONCE4\r
+ONCE6:    MOVE PROG,TAC        ;SAVE NO.\r
+          PUSHJ PDP,RADX10\r
+          MOVEI UUO," "\r
+          IDPB UUO,DAT\r
+          MOVEI UUO,3\r
+          MOVE JDAT,[POINT 6,ITEM]\r
+ONCE7:    ILDB TAC1,JDAT\r
+          ADDI TAC1,240\r
+          IDPB TAC1,DAT\r
+          SOJG UUO,ONCE7\r
+          MOVEI TAC,[ASCIZ /'S/]\r
+          CAILE PROG,1\r
+          PUSHJ PDP,CONMES\r
+          PUSHJ PDP,CRLF\r
+          JUMPN DEVDAT,ONCE5\r
+          POP PDP,TAC1\r
+          PUSHJ PDP,OPOUT\r
+\f\r
+\r
+;ASK IF SYSMAK IS WANTED\r
+\r
+         MOVE DAT,LINEP\r
+         MOVEI TAC,SYSM\r
+         PUSHJ PDP,CONMES\r
+         PUSHJ PDP,OPOUT\r
+         PUSHJ PDP,GETLIN\r
+         JRST ONCE2            ;NO SYSMAK\r
+         MOVEI TAC,MAKEND      ;YES\r
+         MOVEM TAC,SYSSIZ\r
+\r
+;IS EXEC DDT WANTED?\r
+\r
+ONCE2:   MOVE DAT,LINEP\r
+         MOVEI TAC,SYSDM\r
+         PUSHJ PDP,CONMES\r
+         PUSHJ PDP,OPOUT\r
+         PUSHJ PDP,GETLIN\r
+         JRST ONCE3            ;NO \r
+         MOVEI TAC,JOBFF       ;FIRST FREE LOCATION\r
+         HRRZM TAC,SYSSIZ\r
+\f\r
+\r
+;PRINT OCTAL SIZE OF MONITOR\r
+\r
+ONCE3:   MOVE DAT,LINEP\r
+         MOVEI TAC,EXECIS\r
+         PUSHJ PDP,CONMES\r
+         MOVE TAC,SYSSIZ\r
+         PUSHJ PDP,OCTPNT\r
+         MOVEI TAC,LENGTH\r
+         PUSHJ PDP,CONMES\r
+         PUSHJ PDP,OPOUT\r
+         JRST @ONCE\r
+\f\r
+\r
+;ROUTINE TO READ A LINE FROM OPERATORS CONSOLE\r
+;CALL:   PUSHJ PDP,GETLIN\r
+;        JUST A CR TYPED IN\r
+;        A LINE TYPED IN,TAC SET AS BYTE POINTER\r
+\r
+EXTERN CPOPJ, CPOPJ1\r
+\r
+GETLIN:          MOVE TAC,LINEP\r
+         MOVEI ITEM,0\r
+GET1:    CONSO TTY,40\r
+         JRST .-1\r
+         DATAI TTY,TAC1\r
+         DATAO TTY,TAC1\r
+         IDPB TAC1,TAC\r
+         ANDI TAC1,177\r
+         CAIN TAC1,177         ;RUBOUT\r
+         JRST CPOPJ\r
+         CAIE TAC1,15\r
+         AOJA ITEM,GET1\r
+         CONSO TTY,20\r
+         JRST .-1\r
+         MOVEI TAC1,12\r
+         DATAO TTY,TAC1\r
+         MOVE TAC,LINEP\r
+         JUMPN ITEM,CPOPJ1\r
+         POPJ PDP,\r
+\f\r
+\r
+;ROUTINE TO TYPE A LINE ON OPERATORS CONSOLE\r
+;ECHO CHECK STOPS LINE AND RETURNS\r
+;CALL:   DAT SET TO END OF MESSAGE\r
+\r
+OPOUT:   MOVE TAC,LINEP\r
+         DATAI TTY,TAC1\r
+OPOUT1:          CAMN TAC,DAT\r
+         POP PDP,\r
+         CONSZ TTY,40\r
+         JRST OPOUT2           ;ECHO CHECK\r
+         CONSZ TTY,20\r
+         JRST .-1\r
+         ILDB TAC1,TAC\r
+         DATAO TTY,TAC1\r
+         JRST OPOUT1\r
+OPOUT2:          CONSZ TTY,20\r
+         JRST .-1\r
+         DATAO TTY,[15]\r
+         CONSZ TTY,20\r
+         JRST .-1\r
+         DATAO TTY,[12]\r
+         POPJ PDP,\r
+\r
+LINEP:   POINT 7,LINBUF\r
+LINBUF:          BLOCK 20\r
+ONCEPN=10\r
+ONCEPD:          BLOCK ONCEPN\r
+\f\r
+\r
+;MESSAGES\r
+\r
+TSEXEC:          ASCIZ / T. S. EXEC-/\r
+TODATE:          ASCIZ /\r
+TYPE TODAY'S DATE AS ABOVE.\r
+/\r
+TIMEM:   ASCIZ /\r
+TYPE 4 DIGIT NAVY TIME(0953 IS 9:53 AM).\r
+/\r
+IOCONF:          ASCIZ /\r
+IO CONFIGURATION\r
+/\r
+\r
+SYSM:    ASCIZ /\r
+DO YOU WANT SYSMAK(TYPE Y IF YES,CR IF NO)?\r
+/\r
+\r
+SYSDM:   ASCIZ /\r
+EXEC DDT?\r
+/\r
+EXECIS:          ASCIZ /\r
+EXEC IS /\r
+LENGTH:          ASCIZ /OCTAL LOCATIONS LONG.\r
+/\r
+         END,\r
diff --git a/src/pip.mac b/src/pip.mac
new file mode 100644 (file)
index 0000000..d789804
--- /dev/null
@@ -0,0 +1,4050 @@
+TITLE PIP V.030 MOD SANDERS/DBP 19-AUG-71\r
+SUBTTL VJC/PMH/AK-DAG/DMN      8-JUL-70\r
+\r
+;PERIPHERAL INTERCHANGE PROGRAM\r
+;"COPYRIGHT 1968, 1969, DIGITAL EQUIPMENT CORP.,MAYNARD,MASS.,U.S.A.\r
+\r
+VPIP==30               ;VERSION NUMBER\r
+SVER==5                ; SANDERS VERSION\r
+\r
+\r
+;WCH==0  PIP IS ASSEMBLED FOR PDP-10 AND ASSUMES NEW FORMAT DECTAPES.\r
+;WCH==1  PIP IS ASSEMBLED FOR PDP-6 AND ASSUMES OLD FORMAT DECTAPES.\r
+\r
+;DISK30==0 PIP IS ASSEMBLED TO RUN WITH 10/40, 10/50 MONITOR SYSTEMS.\r
+;DISK30==1 PIP IS ASSEMBLED TO RUN WITH 10/30 DISK SYSTEM.\r
+\r
+;BLOC0==0 PIP ALLOWS COPYING OF BLOCK0 (DECTAPE).\r
+;BLOC0==1 PIP WILL NOT ALLOW BLOCK0 TO BE COPIED.\r
+\r
+;RIMSW==0 /Y SWITCH OPTION UNAVAILABLE. (ALSO UNAVAILABLE FOR OLD FORMAT DECTAPES)\r
+;RIMSW==1 /Y SWITCH OPTION AVAILABLE.\r
+\r
+;FTDSK==0      NON DSK SYSTEM.NO CCL.SAVES CORE ON 10/40\r
+;FTDSK==1      10/50 DSK SYSTEM,ALSO 10/30 DSK SYSTEM\r
+\r
+\f\r
+;CONDITIONAL ASSEMBLY SWITCH SETUP (NORMAL CONFIGURATION)\r
+;---------------------------------\r
+\r
+IFNDEF WCH,    <WCH==0>\r
+IFNDEF DISK30, <DISK30==0>\r
+IFNDEF BLOC0,  <BLOC0==0>\r
+IFNDEF FTDSK,  <FTDSK==0>\r
+IFN WCH,       <RIMSW==0>\r
+IFNDEF RIMSW,  <RIMSW==0>\r
+IFNDEF K,       <K==0>\r
+\r
+\r
+\r
+\r
+       LOC 124\r
+       PIP1            ;SET REENTER ADDRESS\r
+       RELOC\r
+       LOC 137\r
+       XWD SVER,VPIP\r
+       RELOC\r
+\r
+\r
+       MLON\r
+IFDEF SALL,    <SALL>\r
+\f\r
+EXTERN JOBFF,JOBSA,JOBREL\r
+\r
+;FLAG ASSIGNMENTS (RIGHT HALF)\r
+\r
+LINE==1                ;ASCII LINE MODE PROCESSING\r
+BMOD==2                ;BINARY PROCESSING\r
+TBMOD==4       ;SUPPRESS TRAILING SP, CHANGE MULTIPLE SP TO TABS\r
+DFLG==10       ;DELETE FILES MODE\r
+LFLG==20       ;LIST DIRECTORY\r
+NSMOD==40      ;IGNORE INPUT SEQUENCE NUMBERS\r
+RFLG==100      ;RENAME FILE MODE\r
+SQMOD==200     ;GENERATE SEQUENCE NUMBERS\r
+STS==400       ;END OF LINE SEEN, OUTPUT SEQUENCE NUMBER NEXT\r
+SPMOD==1000    ;SUPPRESS TRAILING SPACES\r
+XFLG==2000     ;COPY DECTAPE MODE\r
+ZFLG==4000     ;CLEAR DECTAPE DIRECTORY\r
+SUS==10000     ;SEQUENCE NUMBER GENERATION IN PROGRESS\r
+SPOK==20000    ;SPACE WAS LAST CHARACTER\r
+ESQ==40000     ;STOP OUTPUTTING SEQ NUM, RESUME OUTPUTTING DATA\r
+SNI==100000    ;DO NOT INCREMENT SEQUENCE NUMBER\r
+MTFLG==200000  ;MTA REQUEST RECEIVED\r
+OSFLG==400000  ;GENERATE SEQ. NOS. INCR. BY ONE\r
+\r
+;FLAG ASSIGNMENTS (LEFT HALF)\r
+\r
+OFLG==1                ;BLOCK 0 COPY\r
+RIMFLG==2      ;RIM FORMAT INPUT /OUT TO DTA. ILLEG IF RIMSW==0,OR WCH==1\r
+PFLG==4                ;FORTRAN PROGRAM OUTPUT FORMAT CONVERSION\r
+PCONV==10      ;COLUMN 1 CONVERSION IN PROGRESS\r
+NEWFIL==20     ;NEW FILE JUST INITIATED\r
+CHKFLG==40     ;PARENTHESES CHECK MODE\r
+IFLG==100      ;SELECT IMAGE MODE\r
+GFLG==200      ;KEEP GOING IF THERE ARE I/O ERRORS\r
+IBFLG==400     ;SELECT IMAGE BINARY MODE\r
+JFLG==1000     ;NON-STANDARD MODE\r
+\f;AUXFLG ASSIGNMENTS (LEFT HALF)\r
+\r
+QFLG==1                ;PLEASE PRINT SWITCH SET\r
+NSPROT==2      ;NON-STANDARD DISK OUTPUT PROTECTION\r
+SBIN==4                ;36-BIT PR. ON REL. ETC. FILES\r
+NOMORE==20     ;IGNORE ANY SWITCHES BUT MTA FROM NOW ON\r
+CDRFLG==40     ;CONVERT COLS 73-80 TO SPACES + /C\r
+INFOFL==100    ;FLAG USED BY ERR3A:\r
+RSDCFL==200    ;USED FOR MERGING FILES, ==1 IF FILE HAS EXTENSION\r
+               ;REL,SAV,DMP,CHN OR OTHERWISE == 0\r
+FRSTIN==400    ;THIS IS THE FIRST INPUT FILE (USED IN FILE\r
+               ;MERGE COMMAND) == 0 FOR FIRST INPUT\r
+\r
+;MTAREQ ASSIGNMENTS (RIGHT HALF)\r
+\r
+MTAFLG==1      ;MTA ADVANCE ONE FILE\r
+MTBFLG==2      ;MTA BACKSPACE ONE FILE\r
+MTTFLG==4      ;MTA SKIP TP LOGICAL EOT\r
+MTWFLG==10     ;MTA REWIND\r
+MTFFLG==20     ;MTA MARK EOF\r
+MTUFLG==40     ;MTA REWIND AND UNLOAD\r
+MTDFLG==100    ;MTA ADVANCE ONE RECORD\r
+MTPFLG==200    ;MTA BACKSPACE ONE RECORD\r
+MT8FLG==400    ;MTA SET 800 B.P.I.\r
+MT5FLG==1000   ;MTA SET 556 B.P.I.\r
+MT2FLG==2000   ;MTA SET 200 B.P.I.\r
+MTEFLG==4000   ;MTA SELECT EVEN PARITY\r
+\r
+;AUXFLG ASSIGNMENTS (RIGHT HALF)\r
+\r
+REDFLG==1      ;==1 IF ANY FILES ARE INPUT (OTHER THAN DIRECTORIES)\r
+SYSFLG==2      ;DEVICE IS SYS\r
+SYSLST==4      ;LAST DEVICE WAS SYS\r
+LPTOUT==10     ;LPT OUTPUT\r
+FFLG==20       ;LIST SHORT DISK DIRECTORY\r
+ONEOUT==40     ;ONE OUTPUT FILE INITIALIZED\r
+CDRIN==100     ;CARDS IN\r
+MTAOUT==200    ;OUTPUT TO MTA\r
+MTAIN==400     ;INPUT FROM MTA\r
+TTYIN==1000    ;INPUT FROM TTY\r
+READ1==2000    ;LOOK FOUND NEW INPUT FILE, NO READ YET.\r
+DTAOUT==4000   ;OUTPUT TO DTA\r
+DSKOUT==10000  ;OUTPUT TO DSK\r
+DTAIN==20000   ;INPUT FROM DTA\r
+DSKIN==40000   ;INPUT FROM DSK\r
+TTYOUT==100000 ;OUTPUT TO TTY\r
+PPTIN==200000  ;INPUT FROM PTR\r
+PPTOUT==400000 ;OUTPUT TO PTP\r
+\f;CALFLG ASSIGNMENTS (RIGHT HALF) FOR DESCRIBING A BLOCK OF INFORMATION\r
+;FOUND BY THE COMMAND SCANNER.\r
+\r
+FNEX==1                ;==1 WHEN FN.EX==*.*, *.EXT, FN.* (WHEN MORE\r
+               ;THAN ONE FN.EX IS IMPLIED).\r
+MATEX==2       ;FILE EXTENSIONS MUST MATCH\r
+MATFN==4       ;FILE NAMES MUST MATCH\r
+NEWDEV==10     ;A NEW INPUT DEVICE WAS GIVEN\r
+NEWPP==20      ;A NEW #P-P WAS GIVEN\r
+ASTFLG==40     ;FLAG SET WHEN FILE NAMED IN CS FOUND\r
+               ;BY LOOK ROUTINE EVEN IF FN OR EXT =*\r
+DEV==100       ;DEVICE NAME INDICATOR\r
+DVSWTH==200    ;OUTPUT DEVICE SEEN\r
+NSWTCH==400    ;INDICATES NULL NAME\r
+SSWTCH==1000   ;LEFT ARROW SEEN\r
+LISTTY==2000   ;LIST TO TTY\r
+TMPI==4000     ;INPUT DEVICE TMPCOR SEEN\r
+TMPO==10000    ;OUTPUT DEVICE TMPCOR\r
+RXFLG==20000   ;(RX) SEEN\r
+\r
+ALLCLF==FNEX!MATEX!MATFN!NEWDEV!NEWPP\r
+\r
+;DEVICE CHANNEL ASSIGNMENTS\r
+\r
+CON==1         ;COMMAND INPUT CHANNEL\r
+OUT==2         ;OUTPUT DEVICE\r
+IN==3          ;INPUT DEVICE\r
+TAPE==4                ;MTA POSITIONING\r
+DIR==5         ;DISK DIR. READ\r
+BLKIN==6       ;INPUT FOR 10/30 DISK FILES\r
+DTDIR==7       ; DECTAPE DIR. READ(FOR PPN)\r
+\r
+;ACCUMULATOR ASSIGNMENTS\r
+\r
+T1=1           ;GENERAL PURPOSE\r
+T2=2           ;G.P.\r
+T3=3           ;G.P.\r
+CHR=4          ;INPUT CHARACTER\r
+P=5            ;PUSHDOWN POINTER\r
+FLAG=6         ;FLAG REGISTER\r
+T4=7           ;G.P.\r
+IOS=10         ;IO STATUS BITS\r
+T5=11          ;G.P.\r
+T6=12          ; G.P.\r
+AUXFLG=13      ;AUXILIARY FLAG REGISTER\r
+T7=14          ;G.P.\r
+DOUT=15                ;DIVIDED NO. FOR OUTPUT\r
+DOUT1=16       ;REMAINDER, DOUT+1\r
+CALFLG=17      ;MORE FLAGS\r
+\f\r
+;MISCELLANEOUS PARAMETERS\r
+\r
+WRTLOK==400000 ;WRITE LOCK (DECTAPE) /IMPROPER I/O\r
+BIGBLK==40000  ;BLOCK TOO LARGE\r
+INBIT==2       ;DEVCHR BIT FOR DEV CAN DO INPUT\r
+OUTBIT==1      ;DEVCHR BIT FOR DEV CAN DO OUTPUT\r
+EOFBIT==20000  ;END OF FILE\r
+EOTBIT==2000   ;END OF TAPE\r
+DTABIT==4      ;DEVCHR BIT FOR DECTAPE IDENTIFICATION\r
+INHIB==1       ;OUTPUT RELEASE INHIBIT BIT\r
+TABSP==10      ;SPACES PER TAB\r
+PTRBIT==200    ;DEVCHR BIT FOR PTR\r
+PTPBIT==400    ;DEVCHR BIT FOR PTP\r
+DSKBIT==200000 ;DEVCHR BIT FOR DSK\r
+MTABIT==20     ;DEVCHR BIT FOR MTA\r
+LPTBIT==40000  ;DEVCHR BIT FOR LPT\r
+TTYBIT==10     ;DEVCHR BIT FOR TTY\r
+CDRBIT==100000 ;DEVCHR FOR CDR\r
+DENS2==200     ;MTA 200 BPI\r
+DENS5==400     ;MTA 556 BPI\r
+DENS8==600     ;MTA 800 BPI\r
+PARE==1000     ;MTA EVEN PARITY\r
+LDP==4000      ;MTA LOAD POINT STATUS\r
+HPAGE==20\r
+\r
+;MACRO DEFINITIONS\r
+\r
+DEFINE SKIP (J)<JRST   .+1+'J>\r
+\r
+DEFINE LSTLIN (Z),<\r
+       SKIPA   T1,[POINT 7,Z]\r
+       PUSHJ   P,PUT\r
+       ILDB    CHR,T1\r
+IFN WCH,<PUSHJ P,CCASE>\r
+       JUMPN   CHR,.-2>\r
+\r
+DEFINE ERRPNT  (X),<\r
+       JSP     T1,PTEXT\r
+       ASCIZ   X>\r
+\r
+DEFINE ERRPN2  (X),<\r
+       JSP     T1,PTEXT2\r
+       ASCIZ   X>\r
+\r
+DEFINE ERRPNX  (X),<\r
+       JSP     T1,PRETXT\r
+       ASCIZ   X>\r
+\r
+\r
+LOW:\r
+\f\r
+;ASCII CHARACTERS\r
+\r
+CR==15         ;CARRIAGE RETURN\r
+LF==12         ;LINE FEED\r
+FF==14         ;FORM-FEED\r
+ALTMOD==33     ;NEWEST ALTMODE\r
+ALT175==175    ;OLDEST ALTMODE\r
+ALT176==176    ;OLDER ALTMODE\r
+LA==137                ;LEFT ARROW\r
+CZ==32         ;CONTROL Z\r
+XON==21                ;^Q,START TTY PTR\r
+XOFF==23       ;^S,STOP TTY PTR MODE\r
+COMMA==54\r
+PERIOD==56     ;PERIOD\r
+COLON==72\r
+SPACE==40\r
+DEL==177       ;DELETE,RUBOUT,REPEAT MOD.35\r
+TAB==11                ;TAB\r
+\r
+\r
+;CALLI DEFINITIONS\r
+\r
+OPDEF  RESET   [CALLI   0]\r
+OPDEF  DEVCHR  [CALLI   4]\r
+OPDEF  CORE    [CALLI  11]\r
+OPDEF  EXIT    [CALLI  12]\r
+OPDEF  UTPCLR  [CALLI  13]\r
+OPDEF  DATE    [CALLI  14]\r
+OPDEF  MSTIME  [CALLI  23]\r
+OPDEF  GETPPN  [CALLI  24]\r
+OPDEF  PJOB    [CALLI  30]\r
+OPDEF  RUN     [CALLI  35]\r
+OPDEF  GETTAB  [CALLI  41]\r
+OPDEF  TMPCOR  [CALLI  44]\r
+OPDEF  DSKCHR  [CALLI  45]\r
+OPDEF  JOBSTR  [CALLI  47]\r
+OPDEF  DEVPPN  [CALLI  55]\r
+OPDEF  WAIT    [MTAPE   0]\r
+\r
+;EXTENDED LOOKUP PARAMETERS\r
+\r
+RBSIZ==5               ;WRITTEN FILE LENGTH\r
+RIBSTS==17             ;STATUS BITS\r
+\r
+\f
+\r
+PIP1:  MOVE    0,[LOW,,LOW+1]\r
+       SETZM   LOW\r
+       BLT     0,LOWTOP\r
+       MOVSI   (SIXBIT /SYS/)\r
+       DEVPPN                  ;FIND PP OF DEVICE SYS\r
+       MOVE    PP13            ;ASSUME 1,,3 IF NOT LEVELD\r
+       MOVEM   SYSPP           ;SAVE AS SYS PP\r
+IFN FTDSK,<\r
+       MOVE    [XWD 17,11]     ;STATES WORD\r
+       GETTAB                  ;GET IT\r
+       SETZ                    ;ERROR RETURN\r
+       TLNN    (7B9)           ;TEST FOR LEVEL D\r
+       TDZA                    ;NOT LEVEL D\r
+       HRROI   -2              ;THIS IS LEVEL D\r
+       MOVEM   LEVEL           ;SAVE  >\r
+IFE FTDSK,<HLRZ        T1,JOBSA        ;NO DSK SO USE JOBFF>\r
+IFN FTDSK,<MOVEI T1,DSKDR      ;ASSUME NO DISK FOR TEST, LOC OF DSK RTNS\r
+       MOVSI   0,(SIXBIT /DSK/)\r
+       DEVCHR                  ;DEVCHR REQUEST: IS THERE A DSK \r
+       JUMPE   0,P1            ;0 IF NO DISK: USE DSKDR\r
+       MOVE    T1,JOBFF        ;DISK: PREPARE TO SAVE C(JOBFF)\r
+       HRRZ    T2,JOBREL       ;HIGHEST REL LOC AVAILABLE TO USER\r
+       CAIL    T2,6000         ;CURRENT SIZE 4K\r
+       JRST    P1              ;YES\r
+       MOVEI   T2,7777         ;NO. EXPAND TO 4K\r
+       HRRZM   T1,SVJBFF       ;SAVE JOBFF SO BUFFERS CAN BE CREATED\r
+       CORE    T2,             ;CORE UUO\r
+       JRST    DERR7           ;CORE UNAVAILABLE>\r
+P1:    HRRZM   T1,SVJBFF       ;SAVE JOBFF SO BUFFERS CAN BE CREATED\r
+       JRST    PIP\r
+\r
+IFN FTDSK,<\r
+DERR7: ERRPNT  </?4K needed/>\r
+       EXIT                    ;EXIT TO MONITOR>\r
+\r
+\fPIP:  RESET           ;REINITIALIZE WHEN RESTARTED MANUALLY\r
+                       ;NEW COMMAND STRING SCAN STARTS HERE\r
+PIP2:  \r
+PIP2A: JSP T5,INICN1   ;INITIALIZE THE TTY AND PDL\r
+       MOVEI 0,CR      ;TYPE CR\r
+       IDPB 0,TFO+1\r
+       MOVEI 0,LF      ;AND LF\r
+       IDPB    0,TFO+1\r
+       MOVEI   0,"*"   ;TYPE ASTERISK******\r
+       IDPB 0,TFO+1    ;READY TO ACCEPT\r
+       OUTPUT CON,     ;COMMAND FROM TTY\r
+PIP2B: SETZM TOTBRK    ;CLEAR PAREN COUNTER\r
+       MOVEI 0,TABSP   ;SPACES PER TAB\r
+       MOVEM 0,TABCT   ;INITIALIZE TAB COUNT\r
+       MOVE 0,ZRO      ;ASCII /00000/\r
+       MOVEM 0,SQNUM   ;INITIALIZE SEQUENCE NUMBERS\r
+       RELEAS CON,     ;RELEASE TTY FOR USE AS IN-OUT DEVICE\r
+\r
+MAINA1:        SETZB FLAG,FILNAM   ;INITIALIZE FOR FIRST/NEXT COMMAND STRING\r
+       SETZB AUXFLG,DEVICE\r
+IFN FTDSK,<HRRZI 0,(SIXBIT /SYS/) ;SYSTEM DIRECT DEV, DSK/DTA\r
+       HRLZM 0,ADSK            ;PUT IN SYSTEM DEVICE>\r
+       MOVE 0,[XWD FILNAM,FILNAM+1]    ;SET PROJECT, PROG NO.\r
+       BLT 0,AB        ;ZERO OUT FILNAM - AB\r
+       SETZ    CALFLG,         ;CLEAR OTHER FLOGS\r
+       MOVE T3,COMPTR  ;BYTE POINTER FOR STORING CS IN BUFFER\r
+\r
+;ACCUMULATE CS CHARS IN COMBUF ALLOW LONG CS ONLY FOR TTY COMMAND\r
+\r
+COMSTO:        PUSHJ   P,GETTA         ;GET CS CHAR\r
+       AOS     T4,COMCNT       ;COUNT CHARS\r
+       CAILE   T4,^D200        ;ALLOW UP TO 200 CHARS\r
+       JRST    ERR6B           ;MORE THAN 200 CHARS\r
+       CAIN    0,CZ            ;CHECK FOR ^Z\r
+COMASK:        PUSHJ   P,GETEN2        ;SET  ^Z IN 0\r
+       IDPB    0,T3            ;STORE IN COMBUF\r
+       SKIPE   COMEOF          ;END-OF-FILE SET?\r
+       JRST    COMPRO          ;YES, PROCESS CS IN COMBUF\r
+       CAIG    0,CR            ;NOT EOF\r
+       CAIGE   0,LF            ;LF,VT,FF,CR?\r
+       CAIN    0,ALTMODE       ;NO, $?\r
+       JRST    COMASK          ;YES\r
+       JRST    COMSTO          ;NO, KEEP STORING\r
+\r
+COMPTR:        POINT   7,COMBUF\r
+\f\r
+;********************************************************************\r
+;BEGIN SCAN OF DESTINATION PORTION OF COMMAND STRING\r
+COMPRO:\r
+IFN FTDSK,<\r
+       MOVSI   0,(SIXBIT/DSK/)\r
+       DEVCHR                          ;IS THERE A DSK?\r
+       JUMPE   0,COMPRP\r
+       MOVSI   0,(SIXBIT /DSK/)        ;MAKE DEFAULT DEVICE\r
+       MOVEM   0,DEVICE                ;TENTATIVELY DSK>\r
+\r
+COMPRP:        RELEASE CON,            ;RELEASE TTY\r
+       MOVE    0,COMPTR        ;INITIALIZE POINTER\r
+       MOVEM 0,COMPTS          ;TO PICK UP CS FROM COMBUF\r
+       PUSHJ P,NAME    ;GO SCAN DESTINATION PORTION OF COMMAND STRING\r
+       SKIPE XNAME     ;NO SCAN OVERSHOOT ALLOWED\r
+       JRST ERR6A\r
+       SKIPL   ESWTCH  ;11/25/69  END OF CS ?\r
+       JRST    MAINC   ;NO\r
+       TRNN    CALFLG,NSWTCH   ;NON-NULL DESTINATION\r
+       TRNE    CALFLG,SSWTCH   ;_ NOT SEEN?\r
+       SKIPE   FILNAM          ;OR ANYTHING IN FILENAME\r
+       JRST    ERR6A           ;YES, ERROR\r
+       JRST    PIP2            ;NO, ALL OK\r
+\r
+MAINC: MOVE 0,DEVICE   ;GET OUTPUT DEVICE NAME\r
+       MOVEM 0,ODEV    ;SAVE DEVICE NAME FOR LATER USAGE\r
+       PUSHJ P,DEVTST  ;SAVE DEVICE TYPE, SET XXXOUT.E.G. DTAOUT\r
+       PUSHJ P,ABCHK   ;CHECK MTA BACKSPACE/ADV VALUES\r
+       PUSHJ P,PROTK   ;CHECK PROTECTION\r
+       MOVE 0,AB       ;MTA VALUE SWITCHES\r
+       MOVEM 0,ABOUT   ;GET MTA CONTROL NUMBERS FO R OUT\r
+       MOVE 0,AUX\r
+       MOVEM 0,AUXOUT\r
+       MOVE 0,[XWD FILNAM,DTON]\r
+       BLT 0,DTON+3    ;SAVE DESTINATION FILE NAME\r
+IFN FTDSK,<TRNN AUXFLG,DSKOUT  ;DISK OUTPUT?>\r
+       SETZM DTON+3    ;ZERO 4TH WD OF DIRECTORY ENTRY\r
+\fM3:   TRZ     CALFLG,SSWTCH   ;TERMINATE DESTINATION FILE SCAN\r
+       SETZM DEVICE    ;DONT CARRY OVER INPUT DEVICE\r
+IFN FTDSK,<MOVSI 0,(SIXBIT/DSK/)\r
+       DEVCHR          ;IS THERE A DISK\r
+       JUMPE 0,M3A\r
+       MOVSI 0,(SIXBIT /DSK/)  ;DEFAULT CASE DSK\r
+       MOVEM 0,DEVICE  ;MUST NOT LET O/DEV. CARRY OVER AS I/DEV.>\r
+M3A:   PUSHJ P,DESCRP  ;GET A UNIT DESCRIPTOR (INPUT).\r
+       TLNN AUXFLG,QFLG;Q?     ;SCAN INPUT PORTION OF COMMAND STRING\r
+       JRST M2         ;NO\r
+       HRRZI 0,(SIXBIT /SYS/)  ;YES MAKE INPUT DEVICE SYS\r
+       HRLZM 0,DEVICE\r
+       HRLZM DEVA              ;SAVE COPY OF INPUT DEVICE\r
+       MOVE 0,QPIP             ;MAKE INPUT FILENAME QPIP\r
+       MOVEM 0,FILNAM\r
+       MOVSI 0,(SIXBIT /*/)    ;DONT RESTRICT QPIP\r
+       MOVEM 0,FILEX   ;EXT TO BEING NULL\r
+       TRZ     CALFLG,MATEX    ;DON'T MATCH EXTENSIONS\r
+       TRO     AUXFLG,SYSFLG   ;DEVICE IS SYS\r
+       MOVE    0,SYSPP ;GET SYS PP\r
+       MOVEM   0,PP    ;AND SET IT\r
+       SOS ESWTCH      ;NO MORE COMMAND STRING\r
+       TRZ AUXFLG,DTAIN+DSKIN+CDRIN+PPTIN+TTYIN+MTAIN\r
+       PUSHJ P,CHECK1  ;CHECK INPUT DEVICE\r
+\r
+M2:    TLO AUXFLG,NOMORE       ;NO MORE SWITCHES BUT MTA ALLOWED\r
+       TLNE FLAG,OFLG  ;BLOCK 0 COPY?\r
+       JRST BLOCK0     ;YES\r
+       TRC FLAG,XFLG+RFLG;(RX)\r
+       TRCN FLAG,XFLG+RFLG\r
+       PUSHJ   P,M5    ;YES,(RX)\r
+IFN RIMSW,<\r
+       TLNN FLAG,RIMFLG        ;RIM OUTPUT?\r
+       JRST M1         ;NO\r
+IFE WCH,<      \r
+       TRNE AUXFLG,PPTOUT      ;RIM IS ONLY DTA TO PTP\r
+       TRNN AUXFLG,DTAIN!DSKIN!MTAIN\r
+       JRST ERR5B>\r
+IFN WCH,<JRST RIMTB  >>\r
+\r
+M1:    MOVEI T4,1      ;ASCII LINE MODE ASSUMED\r
+       PUSHJ P,OUTLOOK ;SEE IF OUTPUT DEV MTA\r
+       PUSHJ P,M4      ;NOT MTA\r
+       TLNE    FLAG,JFLG       ;NON STARDARD MODE ?\r
+       TRO     T4,100          ;TO PUNCH 029 ON CDP\r
+       HRRZM T4,OMOD   ;SET MODE OF OUTPUT DEV\r
+       MOVEI T4,1\r
+       PUSHJ P,INLOOK  ;SEE IF INPUT DEV MTA\r
+       PUSHJ P,M4      ;NOT MTA\r
+       HRRZM T4,ININI1 ;SET MODE OF INPUT DEV\r
+       PUSHJ P,FNSET   ;NOW DEVICE, DEVA CORRECT FOR START\r
+       JRST OMOD1      ;INIT OUTPUT DEVICE\r
+\f\r
+;SET MODE IF /I,/B,/H,\r
+\r
+M4:    TLNN FLAG,IFLG  ;IMAGE BINARY MODE?\r
+       JRST .+3        ;NO\r
+       TRO T4,10       ;IM. MODE\r
+       TRZ T4,1        ;CLEAR ASCII LINE MODE\r
+\r
+       TRNN FLAG,BMOD  ;BINARY MODE?\r
+       JRST .+3        ;NO\r
+       TRO T4,14       ;BIN. MODE\r
+       TRZ T4,1        ;CLEAR ASCII LINE MODE\r
+\r
+       TLNE FLAG,IBFLG ;ASCII TO START.  IB MODE?\r
+       TRO T4,13       ;YES\r
+       TRNE FLAG,XFLG  ;COPY MODE?\r
+       POPJ P,         ;YES, DON'T ALTER DATA MODE\r
+\r
+       TRNE FLAG,DFLG+RFLG     ;DELETE OR RENAME?\r
+       TRO T4,20       ;DIRECTORY WILL BE WRITTEN, DON'T\r
+       POPJ P,         ;COMPUTE WORD COUNT MODE NEEDED.\r
+                       ;FORCE MONITOR TO USE WORD COUNT\r
+                       ;IN FIRST DATA WORD OF BUFFER\r
+\r
+M5:    TRZ     FLAG,RFLG       ;CLEAR /R FLAG\r
+       TRO     CALFLG,RXFLG    ;SET (RX) FLAG\r
+       MOVE    0,[XWD DTON,MATCH]\r
+       BLT     0,MATCH+1       ;SAVE NAME AND EXT\r
+       POPJ    P,              ;RETURN\r
+\f;IF OUTPUT DEVICE IS MTA PERFORM ALL PRE-TRANSFER REQUESTS\r
+;SUCH AS REWIND.  IF OUTPUT DEVICE IS MTA, AND THERE IS NO \r
+;INPUT DEVICE, EXIT.  FOR OTHER MTA OUTPUT, PREPARE INIT\r
+;DENSITY AND PARITY.\r
+\r
+OUTLOOK:\r
+       MOVE T3,ABOUT   ;AB FOR OUTPUT DEV\r
+       MOVE T1,AUXOUT  ;AUX FOR OUTPUT DEV\r
+       MOVEI T6,INOMTA ;SET TO INIT\r
+       JRST MT1        ;MTA FOR OUTPUT\r
+\r
+\r
+\r
+\r
+;SAME FOR INPUT DEVICE.\r
+\r
+INLOOK:        SKIPE   T3,FILNAM       ;IF NO FILENAME\r
+       TRNN    FLAG,XFLG       ;OR NOT /X\r
+       JRST    INLUK1          ;CONTINUE\r
+       SKIPE   DTON            ;IF OUTPUT NAME SET UP\r
+       JRST    INLUK1          ;CONTINUE\r
+       HLRZ    T1,FILEX        ;GET EXT\r
+       CAIE    T1,(SIXBIT /*/) ;IF EITHER IS *\r
+       CAMN    T3,STAR         ;DON'T SET OUTNAME\r
+       JRST    INLUK1          ;BUT JUST CONTINUE\r
+       MOVEM   T3,DTON         ;SET OUT NAME\r
+       HRLZM   T1,DTON+1       ;AND EXTENSION\r
+INLUK1:        MOVE T3,AB      ;ADV OR BKSPACE\r
+       MOVE T1,AUX     ;AUX FOR INPUT DEV\r
+       MOVEI T6,INIMTA ;SET TO INIT\r
+       JRST MT1        ;MTA FOR INPUT\r
+\f;ROUTINE TO INITIALIZE OUTPUT DEVICE\r
+\r
+OMODE: MOVE T1,[XWD OBF,IBF]\r
+       MOVEM T1,ODEV+1\r
+       MOVE T1,DTJBFF  ;JOBFF AFTER 2 TTY BUFS\r
+       MOVEM T1,JOBFF  ;SET UP\r
+\r
+       OPEN OUT,OMOD   ;INITIALIZE OUTPUT DEVICE\r
+       JRST ERR1       ;UNAVAILABLE ERROR\r
+       OUTBUF OUT,1    ;TRY ONE OUTBUFFER FOR SIZE\r
+       EXCH T1,JOBFF   ;JOBFF_DTJBFF+BUFSZ\r
+                       ;NOTE JOBFF RESET TO DTJBFF\r
+       SUB T1,DTJBFF   ;T1=BUFSZ\r
+       HRRZ 0,JOBREL   ;HIGHEST CORE AVAILABLE\r
+       SUB 0,DTJBFF    ;0=TOTAL CORE AVAILABLE\r
+       ASH 0,-1        ;COMPUTE HOW MANY OUTPUT BUFFERS\r
+       IDIVM 0,T1      ;FIT IN HALF THE AVAILABLE SPACE\r
+       MOVEI T4,OMODE  ;SET RETURN FROM MORCOR\r
+       CAIGE T1,1      ;1 OR MORE THAN 1 FIT?\r
+       JRST MORCOR     ;NO, NEED MORE CORE\r
+       OUTBUF OUT,(T1) ;SET UP OUTPUT BUFFERS\r
+       MOVE 0,OBF+1\r
+       MOVEM 0,SVOBF   ;SAVE ORIGINAL MODE SETTING\r
+       MOVE 0,JOBFF\r
+       HRRZM 0,SVJBF1  ;PREPARE TO RECLAIM INBUFFER SPACE\r
+       POPJ P,\r
+\r
+OMOD1: PUSHJ P,OMODE   ;GO INITIALIZE OUTPUT DEVICE\r
+       TRZN FLAG,ZFLG  ;Z COMMAND TYPED?\r
+       JRST MAINA2     ;NO,\r
+       PUSHJ P,DTCLR   ;YES, GO CLEAR DIRECTORY\r
+       RELEASE OUT,\r
+       RELEASE DIR,\r
+       TRNN    CALFLG,NSWTCH   ;SEE IF DEVICE WAS TYPED\r
+       JRST OMOD1      ;YES\r
+       JRST PIP2       ;GET NEXT COMMAND\r
+\r
+MORCOR:        HRRZ 0,JOBREL   ;TRY TO GET\r
+       ADDI 0,2000     ;1K MORE OF CORE\r
+       CORE            ;ASK MONITOR FOR 1K CORE\r
+       JRST OMODER             ;NOT AVAILABLE\r
+       JRST (T4)       ;GOT IT\r
+\r
+OMODER: ERRPNT</?Not enough core/>\r
+       EXIT\r
+\f;MAIN LOOP TO PROCESS INPUT SIDE OF CS\r
+\r
+\r
+MAINA2:        TRNE   FLAG,RFLG+DFLG   ;RENAME OR DELETE FILE MODE?\r
+       JRST   DTDELE           ;YES./D,/X,OR(DX)\r
+IFN RIMSW,<\r
+       TLNE   FLAG,RIMFLG      ;RIM?\r
+       JRST   RIMTB            ;YES./Y\r
+       >\r
+       TRNE   FLAG,XFLG        ;TRANSFER EVERYTHING MODE?\r
+       JRST   PRECOP           ;YES./X\r
+;LOOP TO COPY ALL FILES BEGINS HERE FROM MAIN2\r
+MAINA3:        TRNN   AUXFLG,FFLG      ;LIST DSK DIR SHORT?\r
+       TRNE   FLAG,LFLG        ;LIST DIRECTORY?\r
+       JRST   DTPDIR           ;YES./F OR /L\r
+       PUSHJ  P,ININIT         ;INITIALIZE INPUT FILE\r
+       TRNE   AUXFLG,DTAIN     ;DEC TAPE INPUT?\r
+       PUSHJ  P,DTADIR         ;INIT DTA DIR\r
+\r
+IFN FTDSK,<TRNE   AUXFLG,DSKIN ;NO, DISK INPUT?\r
+       PUSHJ  P,DSKDIR         ;OR DSK>\r
+MAINA4:        PUSHJ  P,LOOK           ;GET A FILE TO COPY\r
+       JRST   MAINA5           ;NO MORE\r
+       LOOKUP IN,ZRF\r
+       JRST   ERR3             ;LOOKUP FAILURE\r
+IFN WCH,<\r
+MAINA6:        TRNN  AUXFLG,DTAIN+DTAOUT\r
+       JRST  .+5\r
+       HLRZ  0,ZRF+1\r
+       CAIE  0,(SIXBIT /DMP/)\r
+       IFN DISK30,<CAIN 0,(SIXBIT/SVE/)>\r
+       IFE DISK30,<CAIN 0,(SIXBIT/SAV/)>\r
+       JRST  MAINA4            ;DONT COPY DMP OR SAV FILES ON DTA>\r
+       TLO   FLAG,NEWFIL\r
+       PUSHJ P,FILTYP\r
+       TRNE  AUXFLG,ONEOUT\r
+       JRST  PSCANA            ;OUT HAS BEEN INITIALIZED\r
+IFE WCH,<\r
+       PUSHJ P,OKBLKS>\r
+       ENTER OUT,DTON          ;CREATE OUTPUT FILE\r
+       JRST  ERR4              ;DIR. FULL OR 0 FILE NAME\r
+       JRST  PSCANA\r
+\r
+MAINA5: TRZN  AUXFLG,REDFLG\r
+       JRST  IOERRN            ;NEVER READ A FILE\r
+       JRST  MAIN1\r
+\fPSCANB:       TRNE AUXFLG,MTAIN!CDRIN!TTYIN!PPTIN     ;ON NON-DIR DEVICE?\r
+       TRZ     CALFLG,ALLCLF   ;END OF THE ONE OR MANY FILES SPECIFIED\r
+       TRON AUXFLG,ONEOUT      ;HAS OUT JUST BEEN INIT?\r
+       OUTPUT OUT,     ;YES, AND FIRST FILE IS EOF ONLY, INIT OUT IN\r
+                       ;CASE NO MORE SOURCE FILES\r
+       JRST PSCAN5     ;EMPTY FILE, CLOSE INPUT, RETURN FOR MORE\r
+\r
+PSCANA:        TRO   AUXFLG,REDFLG     ;SET FLAG FOR INPUT FILE READ\r
+       PUSHJ P,INP             ;GO READ INPUT FILE\r
+       TRZ   AUXFLG,READ1\r
+       PUSHJ P,TTYZ            ;CHECK IF INPUT IS TTY\r
+       TRNE IOS,EOFBIT         ;EOF FIRST DATA?\r
+       JRST PSCANB\r
+       SKIPN IBF+2\r
+       JRST PSCANA\r
+\r
+PSCAN: TRO AUXFLG,ONEOUT       ;INDICATE ONE OUTPUT FILE INITED\r
+       MOVE 0,OPTRA    ;PRESCAN A LINE, INITIALIZE LINE BUFFER PTR\r
+       MOVEM 0,OPTR\r
+       SETZM CDRCNT\r
+       PUSHJ P,CLRBUF  ;CLEAR LINE BUFFER\r
+       TROA FLAG,STS   ;START A FRESH LINE\r
+PSCAN3:        PUSHJ P,PUT     ;HERE FOR BINARY DATA\r
+\r
+PSCAN2:        PUSHJ P,GET     ;GET CHARACTER\r
+       JRST PSCAN1     ;END OF FILE RETURN\r
+       TDNN FLAG,[XWD IFLG+IBFLG,BMOD] ;BIN. OR NO CHAR. PROCESSING\r
+       TLNE AUXFLG,SBIN\r
+       JRST PSCAN3     ;YES\r
+       MOVE T1,OPTR\r
+       CAIN CHR,DEL    ;VJC 4/16/69\r
+       JRST PSCAN2     ; STR# 10-2615\r
+       CAMN T1,OPTMAX  ;CHECK LENGTH OF LINE\r
+       JRST ERR10      ;LINE TOO LONG\r
+       IDPB CHR,OPTR   ;DEPOSIT CHAR. IN LINE BUFFER\r
+       CAIG CHR,24\r
+       CAIGE   CHR,20  ;LINE PRINTERR CONTROL CHAR\r
+       SKIP    1       ;NO\r
+       JRST PSCAN4     ;YES, TREAT AS END OF LINE\r
+       CAIG CHR,14\r
+       CAIGE CHR,12    ;END OF LINE CHARACTER?\r
+       JRST PSCAN2     ;NO, SO CONTINUE\r
+PSCAN4:        PUSHJ P,OUTLBF  ;YES, SO DUMP THE LINE BUFFER\r
+       JRST PSCAN      ;SCAN THE NEXT LINE\r
+\r
+PSCAN1:        LDB     CHR,OPTR        ;PICK UP LAST CHAR.\r
+       CAIN    CHR,CZ          ;IS IT ^Z\r
+       TRNN    AUXFLG,TTYIN    ;FROM TTY?\r
+       JRST    PSCAN6          ;NO\r
+       SETZ    CHR,            ;YES,CLEAR CHAR.\r
+       DPB     CHR,OPTR        ;AND REMOVE FROM BUFFER\r
+PSCAN6:        PUSHJ P,OUTLBF  ;DUMP THE REMAINING BUFFER\r
+       TRNE FLAG,XFLG  ;COPY MODE?\r
+       JRST COPY2A     ;YES, GO COPY THE NEXT FILE\r
+PSCAN5: CLOSE IN,\r
+       JRST MAINA4\r
+\f;COME HERE AFTER /L,/D,/R ON DISK OR THROUGH COPYING\r
+\r
+MAIN1: RELEAS DIR,     ;RELEASE THE DIRECTORY DEVICE\r
+       RELEAS IN,INHIB ;RELEASE THE INPUT DEVICE\r
+       SKIPL T4,ESWTCH ;MORE COMMAND STRING TO PROCESS?\r
+       JRST MAIN2      ;YES\r
+\r
+;COME HERE AFTER /D,/R ON DTA. ALSO FROM ABOVE\r
+\r
+MAINB: CLOSE OUT,      ;CLOSE THE OUTPUT FILE\r
+       PUSHJ P,OUTP1   ;CHECK THE FINAL ERROR BITS\r
+IFN FTDSK,<TLNE AUXFLG,NSPROT  ;NON-ST. PROT?\r
+       TRNN AUXFLG,DSKOUT+DTAOUT       ;DISK OUT/ OR DTA\r
+       JRST MAINB1     ;NO\r
+       LDB 0,PRPTL\r
+       DPB 0,PRPTD\r
+       RENAME OUT,DTON ;SET UP RENAME REQUEST\r
+       JRST DERR6      ;DISK ERROR\r
+MAINB1:>\r
+       RELEAS OUT,     ;RELEASE THE OUTPUT DEVICE\r
+       JRST PIP2       ;PROCESS THE NEXT COMMAND\r
+\r
+MAIN2: PUSHJ P,DESCRP  ;GET THE NEXT INPUT FILE TO PROCESS\r
+       PUSHJ P,INLOOK\r
+       PUSHJ P,M4\r
+       HRRZM T4,ININI1\r
+       JRST MAINA3\r
+;END OF LOOP BEGINNING AT MAINA3\r
+\f;SUBROUTINE TO INITIALIZE THE INPUT FILE\r
+\r
+ININIT:        MOVE T1,SVJBF1  ;SVJBF1=END OF OUTPUT BUFFERS\r\r
+       MOVEM T1,JOBFF  ;COMPARE OMODE CODE\r
+       MOVEI 0,IBF\r
+       MOVEM 0,DEVICE+1\r
+       OPEN IN,ININI1\r
+       JRST ERR1A      ;NOT AVAILABLE ERROR\r
+       INBUF IN,1      ;TRY ONE INPUT BUFFER FOR SIZE\r
+       EXCH T1,JOBFF   ;HOW MANY INBUFFERS WILL FIT?\r
+       SUB T1,SVJBF1\r
+       HRRZ 0,JOBREL\r
+       SUB 0,JOBFF     ;JOBREL-SVJBF1=TOTAL SPACE LEFT\r
+       IDIVM 0,T1\r
+       MOVEI T4,ININIT ;RETURN FROM MORCOR IS ININIT\r
+       CAIGE T1,1      ;1 OR MORE THAN 1 FITS?\r
+       JRST MORCOR     ;NO, GET MORE CORE\r
+       INBUF IN,(T1)   ;SET UP AS MANY BUFFS AS FIT\r
+       MOVE 0,IBF+1    ;SAVE ORIGINAL MODE\r
+       MOVEM 0,SVIBF\r
+       POPJ P,\r
+\f;THIS ROUTINE GETS AN INPUT UNIT DESCRIPTOR AND, FOR\r
+;ADVANCE FILE AND BSPF ON MTA, ENSURES THE VALUE 1 IF NO\r
+;NUMBER WAS GIVEN.\r
+\r
+DESCRP:        SETZM AUX       ;WILL GET ANY MTA REQ. GOING TO AUXFLG.\r
+       TRZE    AUXFLG,SYSFLG   ;IS THIS DEVICE SYS.?\r
+       TRO     AUXFLG,SYSLST   ;YES,SET SYS AS LAST DEVICE\r
+       SETZM AB        ;MTA VALUE SWITCHES\r
+       SETZM PR        ;PROTECTION\r
+       SETZM PP        ;PROJ-PROG NUMBER\r
+;********************************************************************\r
+       PUSHJ P,NAME    ;GO SCAN INPUT SIDE OF COMMAND STRING\r
+       MOVE T1,PR      ;PROTECTION\r
+       HLLZM T1,PR     ;IGNORE PR FLAG IN RHS FOR INPUT\r
+       TRZ AUXFLG,DTAIN+DSKIN+PPTIN+MTAIN+CDRIN+TTYIN\r
+       PUSHJ P,CHECK1  ;CHECK UNIT, AND FOR _\r
+\r
+IFN FTDSK,<TRNN AUXFLG,DSKIN   ;DSK INPUT?\r
+       JRST DESCR1     ;NO\r
+       TRNE    AUXFLG,SYSFLG   ;IS THIS DEVICE SYS?\r
+       JRST DESCR1     ;YES\r
+       TRNN    AUXFLG,SYSLST   ;WAS LAST DEVICE?\r
+       JRST DESCR1     ;NO\r
+       MOVE T2,FNPPNS  ;YES, SAVE LAST [P,P]\r
+       SKIPE PP        ;[P,P] ZERO?\r
+       JRST DESCR1\r
+       MOVEM T2,PP     ;YES, MAKE OLD [P,P] CURRENT [P,P]\r
+       MOVEM T2,FNPPN  ;RESERVE [P,P]>\r
+DESCR1:        SKIPE XNAME     ;NO OVERSHOOT ALLOWED\r
+       JRST ERR6A\r
+\r
+ABCHK: HLRZ T2,AB      ;NO RECS/FILES TO BACKSPACE\r
+       JUMPN T2,.+2    ;IF 0\r
+       MOVEI T2,1      ;GUARANTEE ONE\r
+       HRLM T2,AB      ;SET AB LH\r
+\r
+       HRRZ T2,AB      ;NO RECS/FILES TO ADV\r
+       JUMPN T2,FNSET  ;IF 0\r
+       AOS AB          ;GUARANTEE 1\r
+       JRST    FNSET   ;FIND OUT DETAILS OF FILENAME\r
+\f\r
+;IF A NON-STANDARD OUTPUT PROTECTION IS REQUESTED, SAVE FOR RENAME.\r
+\r
+PROTK: MOVE T1,PR\r
+       TRNN T1,1\r
+       JRST PROTK1\r
+       HLLZM T1,PROTS\r
+       HLLZM T1,PR\r
+       TLOA AUXFLG,NSPROT\r
+PROTK1:        SETZB   T1,PR\r
+       POPJ P,\r
+\r
+;TEST "DEVICE" TO SEE IF DESTINATION DEVICE IS DTA, DSK, PTP, LPT, TTY, MTA\r
+;IF ANY IS TRUE, SET RELEVANT BIT IN AUXFLG.  "0" CONTAINS\r
+;"DEVICE" ON ENTRY.\r
+\r
+DEVTST:        DEVCHR          ;GET DEVICE CHARACTERISTICS\r
+IFN FTDSK,<TLNN 0,DSKBIT       ;IS OUTPUT DEV DSK?\r
+       JRST DEVTSU     ;NO\r
+       TRO AUXFLG,DSKOUT       ;YES, SET BIT\r
+       PUSH    P,DEVICE        ;SAVE DEVICE NAME\r
+       POP     P,ADSK          ;PUT NAME IN DSK INIT\r
+       POPJ P,\r
+DEVTSU:>\r
+       JUMPE   0,DEVER2        ;NON-EXISTENT DEVICE\r
+       TLNN 0,OUTBIT   ;CAN DEV DO OUTPUT?\r
+       JRST ERR6A      ;NO\r
+\r
+       TLNE 0,DTABIT   ;DECTAPE?\r
+       TRO AUXFLG,DTAOUT       ;YES\r
+\r
+       TLNE 0,PTPBIT   ;PAPER TAPE PUNCH?\r
+       TRO AUXFLG,PPTOUT\r
+\r
+       TLNE 0,LPTBIT   ;LINE PRINTER?\r
+       TRO AUXFLG,LPTOUT\r
+\r
+       TLNE 0,TTYBIT   ;TELETYPE?\r
+       TRO AUXFLG,TTYOUT\r
+\r
+       TLNE 0,MTABIT   ;MAGTAPE?\r
+       TRO AUXFLG,MTAOUT\r
+\r
+       POPJ P,\r
+\f\r
+;ROUTINE TO CHECK IF DEVICE SYS AND SET [P,P], IF NONE GIVEN\r
+\r
+IFN FTDSK,<\r
+PSYSP: CAME    0,[SIXBIT /SYS/];IS DEVICE SYS?\r
+       POPJ    P,              ;NO\r
+       MOVE    T1,SYSPP        ;GET SYS PP\r
+       MOVEM   T1,PP           ;AND SET IT\r
+       TRO     AUXFLG,SYSFLG   ;SET FLAG TO INDICATE\r
+       POPJ    P,              ;CURRENT INPUT DEVICE IS SYS>\r
+\r
+DEVER1:        \r
+DEVER2:        MOVE    T1,DEVICE\r
+DEVER: MOVEM   T1,DEVERR\r
+       ERRPNT  </?Device />\r
+       PUSHJ   P,P6BIT\r
+               DEVERR\r
+       ERRPN2  </does not exist!/>\r
+;ROUTINE TO INIT PDL POINTER AND TTY\r
+\r
+INICN1:        MOVEI   P,PDL-1         ;INITIALIZE PUSHDOWN POINTER\r
+INICN2: MOVE   0,SVJBFF        ;IS INITIALIZED AT PIP1\r
+       MOVEM   0,JOBFF         ;SET JOBFF TO BEGINNING OF BUFFER AREA\r
+       PUSHJ   P,INICON        ;INITIALIZE THE TTY\r
+       INBUF   CON,1           ;ONE INBUFFER\r
+       OUTBUF  CON,1           ;ONE OUTBUFFER\r
+       MOVE    0,JOBFF\r
+       HRRZM   0,DTJBFF        ;JOBFF AFTER 2 TTY BUFFERS SET\r
+       OUTPUT   CON,           ;INITIALIZE BUFFER POINTERS\r
+       JRST    (T5)\r
+\r
+;ROUTINE TO CLEAR LINE BUFFER\r
+\r
+CLRBUF:        SETZM   LBUF            ;SUBR. TO CLEAR LINE BUFFER\r
+       MOVE    0,[XWD LBUF,LBUF+1]\r
+       BLT     0,LBUFE\r
+       POPJ    P,\r
+\r
+\f;COMMAND SCANNER ROUTINE\r
+\r
+NAME:  TRNN    CALFLG,SSWTCH   ;RETURN NULL IF _ OR END-OF-LINE SEEN\r
+       SKIPGE  ESWTCH\r
+       JRST    NM13            ;\r
+       TRZ     CALFLG,NSWTCH\r
+       SKIPE   T1,XNAME        ;IF COMMAND SCAN OVERSHOOT PICKED UP\r
+                               ;DEVICE NAME, USE IT NOW\r
+       JRST    NM7\r
+       TRZ     CALFLG,DEV\r
+;LOOK FOR FILE NAME, EXT\r
+NM1:   SETZM   FILEX\r
+NM2:   SETZM   FILNAM\r
+       MOVE    T1,NM15\r
+;LOOP TO PICK OFF FILENAME, EXT\r
+NM3:   PUSHJ   P,GETCOM        ;GO GET 7 BIT ASCII CHAR. FROM COMMAND STRING\r
+       CAIE    0,"*"           ;TO ALLOW FN.EX = *.*\r
+       CAIL    0,"A"           ;ALPHABETIC CHARACTER?\r
+       CAILE   0,"Z"\r
+       JRST    NM4A            ;NO\r
+NM4:   SUBI    0,40            ;CONVERT TO SIXBIT\r
+       TLNE    T1,770000       ;6 CHARS. YET?\r
+       IDPB    0,T1            ;NO\r
+       JRST    NM3             ;GET NEXT CHAR.\r
+NM4A:  CAIL    0,"0"           ;NUMERIC?\r
+       CAILE   0,"9"\r
+       JRST    NM5             ;NO\r
+       JRST    NM4\r
+\f;CHARACTER NOT *,0-9,A-Z\r
+NM5:   CAIG    0,CR            ;CARRIAGE RETURN\r
+       CAIGE   0,LF            ;LINE FEED\r
+       CAIN    0,ALTMOD        ;ALTMODE\r
+       JRST    NM5A            ;YES\r
+       CAIN    0,CZ            ;END-OF-FILE(CCL)?\r
+NM5A:  SOSA    ESWTCH          ;YES, OR EOF\r
+       CAIN    0,COMMA         ;COMMA\r
+       JRST    NM6             ;YES\r
+       CAIN    0,PERIOD        ;PERIOD\r
+       JRST    NM10            ;YES\r
+       CAIN    0,COLON         ;COLON\r
+       JRST    NM9             ;YES\r
+       CAIN    0,";"           ;IS THE REST A COMMENT?\r
+       JRST    NM16            ;YES\r
+       CAIN    0,"C"-100       ;^C\r
+       EXIT                    ;IN CASE JACCT ON ???\r
+       CAIE    0,LA            ;LEFT ARROW\r
+       JRST    NM5B            ;NO\r
+       TRO     CALFLG,SSWTCH   ;SET LEFT ARROW SWITCH\r
+       TRNE    CALFLG,DEV      ;HAS A DEVICE BEEN SEEN?\r
+       TRO     CALFLG,DVSWTH   ;YES-NEEDED FOR /Z/,/D\r
+\r
+NM6:   SKIPN   T1,FILEX        ;COMMA ROUTINE - FIGURE OUT WHAT WE HAVE\r
+       JRST    NM11            ;NO FILE NAME TEMPORARILY IN FILEX\r
+       EXCH    T1,FILNAM       ;PUT THE FILE NAME WHERE IT BELONGS\r
+       HLLZM   T1,FILEX        ;PUT THE EXTENSION WHERE IT BELONGS\r
+       POPJ    P,\r
+\r
+NM7:   SETZM   XNAME           ;USE XNAME ONLY ONCE\r
+       CAIN    T1,1            ;1 FLAGS A NULL OVERSHOOT\r
+       JRST    NM13            ;RETURN NULL NAME\r
+NM8:   MOVEM   T1,DEVICE       ;NEW DEVICE\r
+       TRO     CALFLG,DEV\r
+       JRST    NM1             ;LOOK FOR A FILE NAME AND EXTENSION\r
+\r
+NM9:   TRNN    CALFLG,DEV      ;COLON ROUTINE - IS DEVICE NAME IN YET?\r
+       JRST    NM12            ;NO\r
+       SKIPN   T1,FILNAM       ;SCAN OVERSHOOT - NULL OVERSHOOT?\r
+       MOVEI   T1,1            ;YES - FLAG NULL OVERSHOOT WITH A 1\r
+       MOVEM   T1,XNAME        ;XNAME = OVERSHOOT NAME\r
+       JRST    NM14\r
+NM10:  SKIPE   FILEX\r
+       JRST    ERR6\r
+       MOVE    0,FILNAM        ;PERIOD ROUTINE - SAVE FILE NAME\r
+       MOVEM   0,FILEX         ;TEMPORARILY IN FILEX\r
+       JRST    NM2             ;LOOK FOR EXTENSION\r
+NM11:  SKIPN   FILNAM          ;WAS A FILE NAME SPECIFIED?\r
+       TRNE    CALFLG,DEV      ;WAS ANYTHING SPECIFIED?\r
+       POPJ    P,              ;YES\r
+NM12:  SKIPE   T1,FILNAM       ;NULL NAME SPECIFIED?\r
+       JRST    NM8             ;NO - SO REMEMBER AND LOOK FOR FILE NAME\r
+\r
+NM13:  TRO     CALFLG,NSWTCH   ;RETURN A NULL NAME\r
+       SETZM   FILEX\r
+NM14:  SETZM   FILNAM\r
+       POPJ    P,\r
+\r
+NM15:  POINT   6,FILNAM\r
+NM5B:  CAIG    0,LA            ;ALLOW ANY SIXBIT CHAR NOT CS DELIMITER\r
+       CAIG    0,SPACE         ;SPACES IGNORED\r
+       JRST    NM3             ;IGNORE NOT LEGAL SIXBIT\r
+       JRST    NM4             ;ACCEPT\r
+\r
+       PUSHJ   P,GETBUF        ;GET NEXT ASCII CHAR.\r
+NM16:  CAILE   0,LF\r
+       CAIG    0,CR            ;IF LF,FF,VT,OR CR\r
+       JRST    NM5A            ;RETURN\r
+       CAIE    0,ALTMOD        ;SAME IF ALTMOD\r
+       CAIN    0,CZ            ;OR ^Z\r
+       JRST    NM5A\r
+       JRST    NM16-1          ;GET NEXT CHARACTER\r
+\r
+\f;ROUTINE TO OUTPUT ONE LINE FROM LBUF\r
+\r
+OUTLBF:        TRNE FLAG,LINE\r
+       JRST OUTLBA     ;OUTPUT LINE-BY-LINE\r
+OUTCH1:        MOVE T2,OPTRA   ;OUTPUT CHARACTER-BY-CHARACTER\r
+OUTLB1:        CAMN T2,OPTR    ;ARE ALL CHARACTERS OUT?\r
+       POPJ P,         ;YES\r
+       ILDB CHR,T2     ;NO\r
+       PUSHJ P,PUT     ;GO OUTPUT CHARACTER\r
+       JRST OUTLB1\r
+OUTLBA:        TLNE FLAG,CHKFLG;PAREN COUNTING?\r
+       JRST OUTCHK     ;YES, SO DO IT\r
+       TRNE AUXFLG,TTYOUT+LPTOUT\r
+       JRST OUTCH1     ;IF OUTPUT TO TTY OR LPT DO CHR BY CHR  \r
+       MOVEI T1,4      ;CLEAR UNUSED PORTION OF LAST WORD USED IN LBUF\r
+       MOVEI T2,0\r
+       MOVE T3,OPTR\r
+       IDPB T2,T3\r
+       SOJG T1,.-1\r
+       MOVEI T2,5\r
+       HRRZ T1,OPTR    ;COMPUTE NUMBER OF WORDS FILLED\r
+       SUBI T1,LBUF-1\r
+       JUMPE T1,OUTLB3 ;DO NOTHING IF BUFFER EMPTY\r
+       IMULM T1,T2     ;COMPUTE CHARACTER COUNT=5 TIMES WORD CT\r
+;THIS IS WHERE OLD FORTRAN MODE WAS TESTED.\r
+       CAMG T2,OBF+2   ;WILL LINE FIT IN THE OUTBUFFER?\r
+       JRST OUTLB2     ;YES\r
+       PUSHJ P,OUTP    ;NO, SO DUMP BUFFER AND CHECK ERROR BITS\r
+       MOVEI T6 ,1\r
+       TDNE T6,LBUF    ;SEQUENCED?   \r
+       TRNN AUXFLG,DTAOUT      ;YES, ON DTA?\r
+       SKIP    1       ;NO\r
+       ADDI T2,40*5    ;LEAVE EDITING ROOM\r
+OUTLB2:        MOVNS T2\r
+       ADDM T2,OBF+2   ;UPDATE OUTBUFFER CHARACTER COUNT\r
+       HRLI T2,LBUF\r
+       HRR T2,OBF+1\r
+       AOJ T2,\r
+       ADDB T1,OBF+1   ;UPDATE OUTBUFFER BYTE POINTER\r
+       BLT T2,(T1)     ;MOVE DATA TO OUTBUFFER\r
+OUTLB3:        POPJ P,\r
+\f;ROUTINE TO PUT ONE CHAR INTO OUT BUFFER\r
+\r
+TABOUT:        MOVEI   CHR,TAB ;OUTPUT A TAB\r
+PUT:   SOSG OBF+2      ;SUBR. TO OUTPUT ONE CHARACTER IN AC CHR\r
+       PUSHJ P,OUTP    ;IF BUFFER FULL, DUMP AND CHECK ERR BITS\r
+       IDPB CHR,OBF+1  ;PUT CHARACTER IN BUFFER\r
+       POPJ P,\r
+\r
+;ROUTINE TO DUMP OUT BUFFER WHEN FULL\r
+\r
+OUTP:  OUT OUT,        ;SUBR. TO DUMP OUTBUFFER AND CHECK ERR BITS\r
+       JRST    CPOPJZ  ;NO ERRERS,BUT CLEAR IOS JUST IN CASE\r
+OUTP1: GETSTS OUT,IOS  ;HERE FOR BIT CHECKING ONLY\r
+       PUSHJ P,OUTP4\r
+       SETSTS OUT,(IOS);ERRORS WERE DETECTED\r
+       POPJ P,         ;NO ERRORS\r
+\r
+OUTP4: TRNN AUXFLG,MTAOUT\r
+       JRST .+3\r
+OUTP3: TRNE IOS,EOTBIT ;EOT?\r
+       JRST .+3        ;YES\r
+       TRNN IOS,740000 ;ANY ERROR BITS ON?\r
+       JRST CPOPJ1     ;NO\r
+       PUSHJ P,COMERR  ;YES\r
+\r
+       JSP T5,INICN2   ;INIT TTY\r
+       PUSHJ P,QUEST\r
+       ERRPN2  </Output device />\r
+       PUSHJ   P,P6BIT\r
+               ODEV\r
+       SKIPN   DTON            ;ONLY IF THERE IS A FILE NAME\r
+       JRST    .+4             ;DON'T PRINT IF NOT\r
+       ERRPN2  </: file />\r
+       MOVEI T3,DTON   ;OUTPUT FILE NAME LOC\r
+       PUSHJ P,FN.EX   ;PRINT FILE NAME EXT\r
+       MOVE T2,AUXFLG\r
+       ANDI T2,MTAOUT+DSKOUT+DTAOUT\r
+\f\r
+IOERR: MOVEI T1,TXTC   ;PHYSICAL END OF TAPE\r
+       TRNE IOS,EOTBIT\r
+       JRST PTEXT2     ;YES\r
+\r
+       MOVEI T1,TXTD2  ;7-9 PUNCH MISSING\r
+       TRNN T2,CDRIN\r
+\r
+IFN FTDSK,<\r
+       MOVEI   T1,TXTD3\r
+       TRNN    T2,DSKIN!DSKOUT>\r
+\r
+       MOVEI T1,TXTD   ;WRITE LOCK ERROR\r
+       TRNN T2,DSKIN+DSKOUT+DTAIN+DTAOUT+MTAIN+MTAOUT\r
+\r
+       MOVEI T1,TXTD1\r
+       TRNE IOS,WRTLOK\r
+       JRST PTEXT2\r
+\r
+       MOVEI T1,TXTA   ;DEVICE ERROR\r
+       TRNE IOS,200000\r
+       JRST PTEXT2\r
+\r
+       MOVEI T1,TXTB   ;CHECKSUM/PARITY ERROR\r
+       TRNE IOS,100000\r
+       JRST PTEXT2\r
+\r
+IFN FTDSK,<\r
+       HRRZ    T1,TABLE+14\r
+       TRNN    T2,DSKOUT       ;QUOTA EXCEDED>\r
+\r
+       MOVEI T1,TXTC1  ;BLOCK TOO LARGE\r
+       JRST PTEXT2\r
+\f;DEVICE ERROR COMMENTS\r
+\r
+TXTD:  ASCIZ /write (lock) error/\r
+       JRST IOERRN     ;NO RECOVERY\r
+\r
+TXTD1: ASCIZ /binary data incomplete/\r
+       JRST IOERRG\r
+\r
+TXTD2: ASCIZ /7-9 punch missing/\r
+       JRST IOERRG\r
+\r
+TXTA:  ASCIZ /device error/\r
+       JRST IOERRG\r
+\r
+TXTB:  ASCIZ /checksum or parity error/\r
+       JRST IOERRG\r
+\r
+TXTC:  ASCIZ /physical eot/\r
+       JRST IOERRG\r
+\r
+TXTC1: ASCIZ /block or block number too large/\r
+       ;FALLS THROUGH TO IOERRN\r
+\f\r
+IOERRN:        RELEAS TAPE,    ;NO RECOVERY ERRORS EXIT HERE\r
+       RELEAS DIR,\r
+       RELEAS OUT,\r
+       RELEAS IN,\r
+IFN DISK30,<\r
+       RELEAS BLKIN,>\r
+       JRST PIP2       ;GET NEXT COMMAND\r
+\r
+IFN FTDSK,<\r
+TXTD3: ASCIZ   /monitor detected software error/>\r
+\r
+;TEST IF /G FLAG(IGNORE ERRORS) SET\r
+\r
+IOERRG:        TLNN FLAG,GFLG          ;PRINTED CURRENT MESSAGE\r
+       JRST IOERRN             ;NO RECOVERY\r
+\r
+       ERRPN2</\r
+/>                             ;PRINT CR, LF DON'T MOVE>\r
+\r
+       RELEAS CON,\r
+       TRNE AUXFLG,TTYOUT      ;TTY OUTPUT DEVICE?\r
+       PUSHJ P,OMODE           ;YES, INIT OUTPUT DEVICE\r
+       TRNE AUXFLG,TTYIN       ;REINIT TTYIN,TTYOUT\r
+       PUSHJ P,ININIT\r
+       TRZ IOS,740000          ;CLEAR FILE STATUS, I/O ERRORS\r
+       TRNE T2,MTAIN+MTAOUT\r
+       TRZ IOS,EOTBIT          ;CLEAR PHYSICAL EOT I/O ERROR\r
+       MOVS 0,[XWD 1,SAVAC]\r
+       BLT 0,3\r
+       MOVE T5,SAVAC+3\r
+       MOVE T6,SAVAC+4\r
+       POPJ P,\r
+\r
+\fCOMERR:       MOVE 0,[XWD 1,SAVAC]    ;SAVE ACS T1,T2,T3,T5,T6\r
+       BLT 0,SAVAC+2\r
+       MOVEM T5,SAVAC+3\r
+       MOVEM T6,SAVAC+4\r
+       TRNE AUXFLG,TTYOUT      ;RELEASE ANY TTYIO\r
+       RELEAS OUT,\r
+       TRNE AUXFLG,TTYIN\r
+       RELEAS IN,\r
+       POPJ P,\r
+;PRINT FILE NAME AND EXTENSION FROM (T3), 1(T3).\r
+\r
+FN.EX: MOVE T1,(T3)    ;T1=FILENAME\r
+       HLRZ T6,1(T3)   ;T6=FILE EXT\r
+       CAIN T6,(SIXBIT /UFD/)\r
+       SETZ T1,        ;UFD FILES ONLY ARE ASSUMED TO HAVE FILENAME\r
+       MOVEM T1,DERR2  ;OF NUMERIC FORM (#,# P-P NUMBER).\r
+       JUMPE T6,DERR2A ;FILE EXT=0?\r
+       CAIE T6,(SIXBIT /UFD/)\r
+       JRST DERR2B     ;NO\r
+\r
+       HLRZ DOUT,(T3)  ;YES, GET PROJ. NO.\r
+       MOVEI T2,PUTCON ;PRINT PROJ-PROG. NO.\r
+       PUSHJ P,OUTDC1  ;CONVERT TO ASCII\r
+\r
+       MOVEI CHR,COMMA\r
+       PUSHJ P,PUTCON\r
+\r
+       HRRZ DOUT,(T3)  ;GET PROG. NO.\r
+       PUSHJ P,OUTDC1  ;CONVERT TO ASCII\r
+\r
+DERR2B:        TLO     T6,"."-40       ;PUT SIXBIT PERIOD\r
+DERR2A:        MOVEM   T6,DERR2+1      ;INTO EXTENSION\r
+       PUSHJ   P,P6BIT\r
+               DERR2\r
+       PUSHJ   P,P6BIT\r
+               DERR2+1\r
+       MOVEI   CHR," "\r
+       JRST    PUTCON\r
+\r
+\r
+\r
+\r
+\f;THIS ROUTINE GETS A 7 BIT ASCII CHARACTER FROM THE COMMAND STRING\r
+;AND RETURNS IT TO THE COMMAND SCANNER ROUTINE (NAME) IN AC0\r
+\r
+GETCOM:        PUSHJ P,GETBUF\r
+       CAIN 0,"/"      ;SINGLE CHARACTER SWITCH\r
+       JRST GETT6\r
+       CAIN 0,"("      ;LOOK FOR (MULTI-CHAR.) SWITCH\r
+       JRST GETT3\r
+       CAIN 0,"<"      ;GO LOOK FOR PROTECTION\r
+       JRST GETT9\r
+       CAIE 0,"["\r
+       POPJ P,\r
+\r
+GETT10:        PUSHJ P,GETDEC  ;LOOK FOR PROJECT-PROGRAMMER NUMBER\r
+       CAILE T7,-1     ;GREATER THAN HALF WORD?\r
+       JRST ERR2A      ;YES, ERROR\r
+       CAIE 0,","      ;SEPARATOR?\r
+       JRST GETUPJ     ;OR TERMINATOR (NON-NUMERIC)\r
+       HRLZM T7,PP\r
+       PUSHJ   P,GETDEC\r
+       CAILE   T7,-1\r
+       JRST    ERR2A\r
+\r
+GETT11:        HRRM T7,PP\r
+       CAIN 0,"]"      ;FORCE CORRECT TERMINATOR\r
+       JRST GETCOM\r
+       JRST ERR2\r
+\r
+GETT9: PUSHJ P,GETOCT\r
+       CAIN 0,">"      ;TERMINATE ON RIGHT BRKT ONLY\r
+       CAILE T7,777    ;PR. IN RANGE?\r
+       JRST ERR2A\r
+       ROT T7,-11\r
+       HLLOM T7,PR     ;RHS=1'S MEANS <> SEEN (PR MAY BE 0)\r
+       JRST GETCOM\r
+\r
+GETUPJ:        MOVE    T5,UPROJ\r
+       HRLZM   T5,PP\r
+       JRST    GETT11\r
+GETOCT:        SKIPA   T5,[EXP 10]\r
+GETDEC:        MOVEI   T5,12\r
+GETNUM:        MOVEI T7,0      ;TO PICK UP P-P NUMBER\r
+GETN1: PUSHJ P,GETBUF  ;AND PROTECTION\r
+       CAIN 0," "      ;IGNORE SPACES\r
+       JRST GETN1\r
+       CAIL 0,"0"\r
+       CAIL 0,"0"(T5)\r
+       POPJ P,         ;GOT A NON-NUMERIC\r
+       IMUL    T7,T5   ; MULTIPLY BY RADIX\r
+       SUBI    0,"0"\r
+       ADD     T7,0    ; ADD DIGIT\r
+       JRST GETN1\r
+\fGETT3:        PUSHJ P,GETT5   ;PROCESS SWITCH CHARACTER\r
+       CAIN 0,")"      ;CLOSING PAREN?\r
+       JRST GETCOM     ;YES\r
+       CAIN 0,"M"      ;MTA FLAG?\r
+       TRO FLAG, MTFLG ;SET MTA, LOOK FOR MULTI CHAR. SWITCH\r
+       CAIE 0,"#"      ;MTA#\r
+       JRST GETT3      ;NO\r
+       TRNN FLAG,MTFLG ;ONLY LOOK AFTER # IF MTFLG IS ON.\r
+       JRST ERR6A      ;I.E. IF MT SWITCH IS IN PROGRESS.\r
+       PUSHJ P,GETNUD  ;GET A NUMBER\r
+       CAIE 0,"D"      ;TERMINATED BY D?\r
+       CAIN 0,"A"      ;TERMINATED BY A?\r
+       JRST GETT3A     ;YES, MARK AB UPPER\r
+       CAIE 0,"P"      ;ONLY A,D,P AND B CAN BE\r
+       CAIN 0,"B"      ;PRECEDED BY #.\r
+       SKIP    1\r
+       JRST ERR6A\r
+       HRRM T7,AB      ;NO. FILES/RECS TO ADVANCE\r
+                       ;GOES IN AB (RH)\r
+GETT3B:        PUSHJ P,GETT5A\r
+       JRST GETT3\r
+\r
+GETT3A:        HRLM T7,AB      ;NO. FILES/RECS TO BACK SPACE\r
+       JRST GETT3B     ;GOES IN AB (LH)\r
+\r
+GETT6: PUSHJ P,GETT5   ;PROCESS ONE SWITCH CHAR\r
+       CAIE 0,"M"\r
+       CAIN 0,")"      ;THESE ARE ILLEGAL 1-SWITCH CHARS.\r
+       JRST ERR6A\r
+       JRST GETCOM\r
+\r
+GETNUD:        MOVEI T7,0      ;GET A DECIMAL NUMBER\r
+GETN2: PUSHJ P,GETBUF  ;GET CHAR FROM COMMAND STRING\r
+       CAIN 0,SPACE    ;SPACE?\r
+       JRST GETN2      ;YES, IGNORE\r
+       CAIL 0,"0"      ;NUMBER?\r
+       CAILE 0,"9"\r
+       POPJ P,         ;NO\r
+       IMULI T7,^D10   ;T7*10\r
+       ANDI 0,17       ;ADD ON LAST DIGIT\r
+       ADD T7,0        ;+ LOW 4 BITS\r
+       JRST GETN2\r
+\f\r
+;GET NEXT COMMAND STRING CHAR(SWITCH),CHECK WITH TABLE,SET FLAGS\r
+\r
+GETT5: PUSHJ P,GETBUF  ;GET CHAR FROM COMMAND STRING\r
+GETT5A:        MOVE T2,[XWD 350700,DISPTB]     ;SET DISPTB NEXT SEARCH\r
+       MOVEI T6,MTAREQ ;SET MTAREQ NEXT SEARCH\r
+\r
+       TRNN FLAG,MTFLG ;SET UP TABLE TO SEARCH AND FLAG TO SET.\r
+       HRRI T2,DISPTA  ;PUT IN BYTE POINTER, NOT MTA REQUEST\r
+\r
+;SET TO LOOK AT NON-MTA LETTERS FIRST\r
+\r
+       TRNN FLAG,MTFLG ;IF MTFLG SET, START AT DISPTB AND STORE RESULT IN\r
+       MOVEI T6,AUXFLG ;MTAREQ, ELSE START AT DISPTA AND STORE RESULT IN\r
+                       ;AUXFLG OR FLAG\r
+;GET FIRST CHAR DISPTA OR DISPTB, LOOK FOR MATCH, SET SWITCH FLAGS.\r
+\r
+GETT7: LDB T3,T2       ;COMPARE WITH LEFT 7 BITS OF\r
+       JUMPN T3,GETT8  ;TABLE ENTRIES\r
+       TRZ FLAG, MTFLG ;SEARCHED TABLE 1 (DISPTB) DROP MTA FLAG\r
+       MOVEI T6,AUXFLG ;SET AUXFLG NEXT TABLE SEARCH\r
+       TLNE AUXFLG,NOMORE      ;AFTER FIRST INPUT DEVICE ONLY ACCEPT MTA FLAGS\r
+       POPJ P,\r
+\r
+GETT8: CAIN T3,1       ;END OF DISPTA 1ST HALF?\r
+       MOVEI T6,FLAG   ;YES, SEARCH DISPTA 2ND HALF FROM NOW ON\r
+       CAIN T3,2       ;END OF DISPTA 2ND HALF?\r
+       JRST ERR6A      ;SEARCHED TABLE 3, ERROR EXIT\r
+       CAME T3,0       ;MATCHING CHARACTER?\r
+       AOJA T2,GETT7   ;NO, GET NEXT SWITCH IN TABLE.\r
+\r
+       MOVE T5,(T2)    ;YES, SET FLAG OR AUXFLG OR MTAREQ\r
+       ORM T5,(T6)     ;FLAG OR AUXFLG\r
+       TRNE FLAG,MTFLG\r
+       ORM T5,AUX      ;MTA REQUESTS SAVED IN AUX\r
+IFE RIMSW,<\r
+       TLNE FLAG,RIMFLG\r
+       JRST RIMTB      ;NO RIM IF RIMSW=0\r
+       >               ;PRINT ERROR MESSAGE\r
+       POPJ P,         ;EXIT ON MATCHING CHAR\r
+\r\f\r
+;ROUTINE TO GET ONE TTY OR CCL COMMAND STRING CHAR INTO AC 0\r
+\r
+GETTA:\r
+\r
+       SOSLE TFI+2     ;SUBR TO GET ONE TTY CHAR IN AC 0\r
+       JRST GETT2      ;BUFFER NOT EMPTY\r
+       MOVE 0,TFI      ;BUFFER EMPTY, SAVE\r
+       MOVE T5,TFO     ;CURRENT BUFFER LOCS\r
+       PUSHJ P,INICON  ;BUFFER EMPTY SO RE-ATTACH TTY\r
+       HRROM 0,TFI     ;RESTORE OLD BUFFER LOCS\r
+       HRROM T5,TFO    ;USE PREVIOUSLY ASSIGNED I/O BUF. FOR TTY\r
+       MOVE T5,COMCNT  ;DONT TYPE CR,LF\r
+       CAIG T5,^D69    ;FOR SHORT LINE\r
+       JRST GETTIN\r
+       PUSHJ   P,INFO2 ;TYPE CR,LF\r
+GETTIN:        INPUT CON,      ;GET THE NEXT LINE\r
+       MOVE T5,TFI+2   ;SAVE CHAR COUNT\r
+       RELEAS CON,     ;LET GO OF TTY FOR USE AS IN-OUT DEVICE\r
+       MOVEM T5,TFI+2  ;RESTORE CHAR COUNT LOST DURING RELEASE\r
+GETT2: ILDB 0,TFI+1    ;FETCH CHAR\r
+GETT4: CAIE 0,ALT175   ;OLD ALTMODE?\r
+       CAIN 0,ALT176\r
+       MOVEI 0,ALTMOD  ;YES,MAKE NEW ALTMOD\r
+       JUMPE   0,GETTA ;IGNORE NULL CHARS\r
+       CAIL 0,140      ;LOWER CASE?\r
+       TRZ     0,40    ;YES MAKE UPPER CASE?\r
+       CAIE    0,XON   ;IGNORE XON,XOFF ONLY FOR\r
+       CAIN    0,XOFF  ;TTY SERVICE TO SIGNAL TTY\r
+       JRST    GETTA   ;PTR READ IN MODE\r
+       POPJ P,\r
+\r
+;ROUTINE TO GET ONE TTY CHAR FROM COMBUF INTO AC0\r
+\r
+GETBUF:        SOSGE COMCNT    ;ANY CHARS LEFT?\r
+       JRST ERR6B      ;NO, COMMAND ERROR\r
+       ILDB 0,COMPTS   ;PICK UP CHAR FROM COMBUF\r
+       POPJ P,\r
+\r
+;ROUTINE TO INITIALIZE THE TTY, ASCII LINE MODE\r
+\r
+INICON:        INIT CON,1      ;SUBR TO INITIALIZE THE TTY\r
+       SIXBIT /TTY/\r
+       XWD TFO,TFI     ;TTY OUT/IN BUFFER HEADERS\r
+       EXIT            ;IF TTY NOT AVAILABLE,FATAL.JOB DET?\r
+       POPJ P,\r
+\f;GET 7 BIT ASCII CHARACTER - INPUT FROM CCL COMMAND FILE\r
+\r
+GETEN2:        SETOM   COMEOF          ;INDICATE END OF FILE\r
+       MOVEI   0,CZ            ;NEEDED TO TERM CCL CS SCAN\r
+       POPJ    P,\r
+\f;TABLE OF RECOGNIZED COMMAND LETTERS AND CORRESPONDING FLAG BITS\r
+\r
+DEFINE DISP (A,B)\r
+<      XWD <"A">*4000,B>\r
+;MAGTAPE SWITCHES AND FLAG BITS. TABLE 1 (MTAREQ)\r
+DISPTB:        DISP A,MTAFLG\r
+       DISP B,MTBFLG\r
+       DISP T,MTTFLG\r
+       DISP W,MTWFLG\r
+       DISP 8,MT8FLG\r
+       DISP 5,MT5FLG\r
+       DISP 2,MT2FLG\r
+       DISP E,MTEFLG\r
+       DISP U,MTUFLG\r
+       DISP F,MTFFLG\r
+       DISP D,MTDFLG\r
+       DISP P,MTPFLG\r
+       DISP #,0\r
+       OCT 000000000000\r
+;1ST BYTE 0=END OF DISPTB\r
+;------------------------\r
+;COMMAND STRING LETTERS AND FLAG BITS. TABLE 2 (AUXFLG)\r
+DISPTA:                        XWD <"Q">*4000+QFLG,0\r
+                       XWD <"E">*4000+CDRFLG,0\r
+       DISP F,FFLG\r
+       OCT 004000000000\r
+;1ST BYTE 1=END OF DISPTA 1ST HALF\r
+;------------------------\r
+;COMMAND STRING LETTERS AND FLAG BITS. TABLE 3 (FLAG)\r
+       DISP A,LINE\r
+       DISP B,BMOD\r
+IFN,K,<        DISP C,TBMOD\r
+       DISP D,DFLG\r
+       DISP L,LFLG>\r
+       DISP M,0\r
+       DISP ),0\r
+       DISP N,NSMOD\r
+       DISP O,SQMOD+NSMOD+STS+OSFLG\r
+                       XWD <"P">*4000+PFLG+PCONV,0\r
+IFN,K< DISP R,RFLG>\r
+       DISP S,SQMOD+NSMOD+STS\r
+IFN,K< DISP T,SPMOD\r
+                       XWD <"V">*4000+CHKFLG,LINE\r
+       DISP X,XFLG>\r
+       DISP Z,ZFLG\r
+                       XWD <"U">*4000+OFLG,0\r
+                       XWD <"Y">*4000+IBFLG+RIMFLG,0\r
+                       XWD <"J">*4000+JFLG,0\r
+                       XWD <"I">*4000+IFLG,0\r
+                       XWD <"H">*4000+IBFLG,0\r
+                       XWD <"G">*4000+GFLG,0\r
+       OCT 010000000000\r
+;FIRST BYTE 2=END OF DISPTA 2ND HALF\r
+\f;SUBR TO GET NEXT CHAR INTO AC CHR\r
+;NO SKIP RETURN IS END OF FILE, SINGLE SKIP IS NORMAL RETURN\r
+\r
+GET:   TLNN FLAG,NEWFIL        ;NEW FILE?\r
+       TLZN FLAG,PCONV+NEWFIL  ;NO,CONVERT THIS CHAR?\r
+       JRST GETPC1     ;YES\r
+       LDB CHR,IBF+1   ;GET CHAR\r
+       CAIN CHR," "    ;SPACE?\r
+       JRST GETPC2     ;YES, CONVERT TO LINE FEED\r
+       CAIG CHR,"3"    ;IS THE CHAR A PROPER FORMAT CONTROL CHAR?\r
+       CAIGE CHR,"*"\r
+       JRST GETPC3     ;NO, SO OUTPUT LINE FEED FOLLOWED BY BAD CHAR\r
+       CAIG CHR,"."    ;USE LEFT HALF OF TABLE?\r
+       SKIPA CHR,PCHTAB-<"*">(CHR)\r
+       MOVS CHR,PCHTAB-<"/">(CHR)\r
+GETPC4:        DPB CHR,IBF+1   ;CLOBBER OLD CHAR, USUALLY BECOMES NULL\r
+       LSH CHR,-7      ;BUT OTHERWISE BECOMES ANOTHER FORMAT CHAR\r
+       ANDI CHR,377    ;EXTRACT THE CHAR TO BE OUTPUT\r
+       TRZE CHR,200    ;=1 FOR GENERATING MULTIPLE LINE FEEDS\r
+       TLO FLAG,PCONV  ;CONTINUE TO CONVERT\r
+       JUMPN CHR,CPOPJ1;OUTPUT THE GENERATED CHAR UNLESS NULL\r
+       POP     P,(P)   ;IGNORE NULL CHARS\r
+       JRST    PSCAN4  ;DUMP THE LINE BUFFER\r
+GETPC1:        TRNN FLAG,SUS   ;SUPPLYING SEQ. NUM. NOW?\r
+       JRST GET2       ;NO\r
+       ILDB CHR,PTRPT  ;YES, SO GET CHAR OF SEQ NUM\r
+       JUMPN CHR,CPOPJ1;0 MARKS LAST CHAR\r
+       LDB T1,IBF+1    ;GET FIRST CHAR OF THIS LINE\r
+       MOVEI CHR,15\r
+       CAIG T1,15      ;PREPARE TO OUTPUT A CR,LF\r
+       CAIGE T1,12     ;IS FIRST CHAR OF LINE AN END OF LINE CHAR?\r
+       MOVEI   CHR,TAB ;NO, SO OUTPUT A TAB\r
+       TRZ FLAG,SUS    ;TURN OFF SUS SUPPLY\r
+       JRST    GETA5\r
+GET5:  AOS IBF+1       ;HERE IF A SEQ NUM FOUND IN INBUFFER\r
+       SUBI T1,5       ;IGNORE SEQ NUM, TAB AND DECREMENT CHAR COUNT\r
+       MOVEM T1,IBF+2\r
+       TRNE FLAG,NSMOD ;REMOVE SEQ NUMS MODE?\r
+       JRST GET2       ;YES, SO GET NEXT CHAR\r
+       MOVEM T2,SQNUM  ;SEQ NUM FROM BUFFER BECOMES NEW SEQ NUM\r
+       PUSHJ P,OUTLBF  ;DUMP THE LINE BUFFER (IF REQUIRED)\r
+       TRON FLAG,STS+SNI       ;TURN ON START OF LINE\r
+                       ;AND NO-INCREMENT SEQ NUM FLAG\r
+       PUSHJ P,CLRBUF  ;CLEAR LBUF IF IN THE MIDDLE OF A LINE\r
+\r
+GET2:  TRZE FLAG,ESQ   ;REPROCESS LAST CHAR?\r
+       JRST GET1       ;YES\r
+       SOSL T1,IBF+2   ;CHARS REMAINING IN INBUFFER?\r
+       JRST GET4       ;YES\r
+       PUSHJ P,INP     ;NO, SO REFILL AND CHECK ERR BITS\r
+       TRNE IOS,EOFBIT ;END OF FILE? IOS HAS STATUS BITS\r
+       POPJ P,         ;YES\r
+       JRST GET2       ;NO, SO PROCESS INBUFFER\r
+\r
+GETPC3:        TRO FLAG,ESQ    ;REPROCESS BAD CHAR\r
+       TROA CHR,12*200 ;PRECEED BAD CHAR WITH LINE FEED\r
+GETPC2:        MOVEI CHR,12*200;CHANGE SPACE TO LINE FEED\r
+       JRST GETPC4\r
+\r
+PCHTAB:        XWD 24*200,23*200+"."   ;/ *\r
+       XWD 212*200+" ",177*200 ;0 +   VJC 4/16/49\r
+       XWD 14*200,21*200       ;1 ,\r
+       XWD 20*200,212*200+"0"  ;2 -\r
+       XWD 13*200,22*200       ;3 .\r
+\r
+GET4:  ILDB CHR,IBF+1  ;FETCH CHAR FROM INBUFFER\r
+       TDNN FLAG,[XWD IFLG+IBFLG,BMOD] ;BIN, IB, I OR SBIN MODE?\r
+       TLNE AUXFLG,SBIN\r
+       JRST CPOPJ1     ;YES, SO NO PROCESSING REQUIRED\r
+GET1:  LDB CHR,IBF+1   ;AFTER SEQ NUM, HERE FOR 1ST CHAR\r
+       JUMPE CHR,GET2  ;IGNORE NULL CHARS\r
+       CAIN CHR,LF     ;IGNORE LINE FEED IN FORTRAN OUTPUT\r
+       TLNN FLAG,PFLG  ;/P SWITCH IN EFFECT?\r
+       JRST GET1A      ;NO\r
+       TLO FLAG,PCONV  ;CONVERT THE NEXT LIVE CHAR\r
+       JRST GET2       ;GET NEXT CHAR\r
+GET1A: MOVE T2,@IBF+1  ;BIT 35 OF BUFFER SET?\r
+       TRZE T2,1\r
+       JRST GET5       ;YES, THIS IS A SEQ NUM\r
+       TRZE FLAG,STS   ;START SEQ (NEW LINE) FLAG ON?\r
+       TRNN FLAG,SQMOD+SNI     ;YES, SEQ MODE OR SEQ COPY?\r
+       JRST GET7       ;NO, SO PROCESS CHAR\r
+       MOVE T2,SQNUM   ;NO, SO ADD 10. TO SEQ NUM\r
+       MOVE T1,K1\r
+       TRNE FLAG,OSFLG ;TEST FOR INCR. BY ONE\r
+       MOVE T1,K4\r
+       ADD T2,T1       ;ASCII INCREMENT\r
+       AND T2,K3       ;MASK SIGNIFICANT DIGITS\r
+       MOVE T1,T2\r
+       AND T1,ZRO      ;MASK CARRY BITS\r
+       ASH T1,-3\r
+       SUB T2,T1       ;ADJUST CARRIES\r
+       IOR T2,ZRO\r
+       TRZN FLAG,SNI   ;NON-INCREMENT SEQ NUM FLAG ON?\r
+       MOVEM T2,SQNUM  ;NO, SO SAVE THE RESULT\r
+       TRO FLAG,LINE+SUS+ESQ   ;TURN ON SUPPLY SEQ, REPROCESS\r
+                               ;LAST CHAR, AND LINE-BY-LINE FLAGS\r
+       AOS LBUF                ;SET BIT 35 IN LBUF TO MARK SEQ NUM\r
+       MOVE T1,[POINT 7,SQNUM]\r
+       MOVEM T1,PTRPT  ;INITIALIZE SEQ NUM PICK-UP POINTER\r
+       JRST GET        ;GO OUTPUT FIRST CHAR OF SEQ NUM\r
+\f;ROUTINE TO INPUT INPUT FILE\r
+\r
+INP:   IN      IN,     ;INPUT DATA\r
+       JRST    CPOPJZ  ;NO ERRORS ,BUT CLEAR IOS JUST IN CASE\r
+INERR: GETSTS IN,IOS   ;SUBR TO CHECK INPUT ERR BITS\r
+       TRNN AUXFLG,MTAIN       ;MTA INPUT?\r
+       TRNE IOS,740000 ;ANY ERROR BITS SET?\r
+       TRNN IOS,740000+EOTBIT  ;EOT FOR MTA?\r
+       POPJ P,         ;NO\r
+\r
+       PUSHJ P,COMERR  ;SAVE AC'S RELEASE TTY\r
+       JSP T5,INICN2   ;YES SO PRINT OUT COMPLETE FILE DESCRIPTOR\r
+       PUSHJ P,QUEST\r
+       ERRPN2  </Input device />\r
+       PUSHJ   P,P6BIT\r
+               DEVICE\r
+       SKIPN   ZRF             ;IS THERE A FILE NAME\r
+       JRST    .+4             ;NO,SO DON'T PRINT\r
+       ERRPN2  </: file />\r
+       MOVEI T3,ZRF    ;LOC OF INPUT FILE NAME TO T3\r
+       PUSHJ P,FN.EX   ;DEPOSIT FILE NAME, EXT INTO TTY OUT BUFFER\r
+       MOVE T2,AUXFLG\r
+       ANDI T2,CDRIN+DTAIN+DSKIN+MTAIN\r
+       PUSHJ P,IOERR   ;GO PRINT ERROR DESCRIPTOR\r
+       SETSTS IN,(IOS)\r
+       POPJ P,\r
+\r
+;ROUTINE TO TEST IF BLOCK TOO LARGE, OR WRITE LOCKED\r
+\r
+QUEST: MOVEI CHR,"?"   ;DEPOSIT "?" IN ERROR MSG\r
+       TLNN FLAG,GFLG  ;ONLY IF /G NOT ON\r
+       JRST PUTCON     ;/G NOT ON, PRINT ?(FATAL) BEFORE ERR MSG\r
+\r
+       TRNN IOS,BIGBLK ;BLOCK NO. TOO LARGE?\r
+       JRST QUEST2     ;NO\r
+       TRNN AUXFLG,DTAIN+DTAOUT        ;YES\r
+       POPJ P,         ;BLOCK TOO LARGE\r
+\r
+       JRST PUTCON     ;DEPOSIT "?" FATAL EVEN IF /G ON\r
+\r
+QUEST2:        TRNE IOS,WRTLOK ;WRITE LOCKED?\r
+       TRNN AUXFLG,DTAIN+DTAOUT+MTAIN+MTAOUT+DSKOUT\r
+       POPJ P,         ;NO\r
+       JRST PUTCON     ;DEPOSIT "?" FATAL EVEN IF /G ON\r
+\f\r
+GET7:  TLNE FLAG,PCONV ;CONVERTING FORTRAN CARRAIGE CONTROL CHAR?\r
+       JRST GET+1      ;YES, GO DO IT\r
+       AOS T1,CDRCNT\r
+       TLNE AUXFLG,CDRFLG\r
+       JRST GET7B      ;CARD READER INPUT\r
+\r
+GET7C: CAIN CHR,SPACE  ;SPACE?\r
+       JRST GETA2      ;YES\r
+       CAIN CHR,CR     ;CAR. RET.?\r
+       JRST GETA3      ;YES\r
+       TRZ FLAG,SPOK   ;CHAR NOT A SPACE STOP COUNTING CONSEC. SPACES\r
+       CAIN CHR,TAB    ;TAB?\r
+       JRST GETA5      ;KEEP TRACK OF TAB STOPS\r
+       CAIG CHR,137\r
+       CAIGE CHR,SPACE ;NON-SPACING CHARACTER?\r
+       JRST CPOPJ1     ;YES, SO RETURN IMMEDIATELY\r
+       SOSG TABCT      ;COUNT DOWN THE TAB STOP COUNTER\r
+       JRST GETA5      ;RESET THE COUNTER IF TAB STOP IS PASSED\r
+CPOPJ1:        AOSA    (P)     ;SKIP RETURN\r
+CPOPJZ:        SETZ    IOS,    ;CLEAR IOS JUST IN CASE\r
+CPOPJ: POPJ    P,\r
+\r
+\r
+GET7B: CAIL T1,^D73    ;LT COL 73?\r
+       CAILE T1,^D80   ;NO, LE COL 80?\r
+       JRST    GET7C   ;CANT BE A CARD SEQUENCE NUMBER\r
+       MOVEI CHR,SPACE ;REPLACE CARD SEQUENCE NOS. BY SPACE\r
+       JRST GET7C\r
+\r
+GETA3: TRZE FLAG,SPOK  ;CAR. RET. SEEN, ANY TRAILING SPACES?\r
+       TRNN FLAG,SPMOD+TBMOD   ;YES, ARE WE FLUSHING TRAILING SPACES\r
+       JRST GETA5      ;NO, RESET TAB COUNTER ONLY\r
+       MOVE 0,SVPTR1\r
+       MOVEM 0,OPTR    ;CLOBBER THE OUTPUT POINTER TO LBUF\r
+GETA5: MOVEI 0,TABSP\r
+       MOVEM 0,TABCT   ;RESET THE TAB COUNTER\r
+       JRST    CPOPJ1\r
+\fGETA2:        TROE FLAG,SPOK  ;SPACE WAS SEEN, IS THIS ONE OF A SEQUENCE?\r
+       JRST GETA7      ;YES\r
+       MOVE 0,OPTR     ;THIS IS THE FIRST SPACE SEEN, SAVE LBUF\r
+                       ;POINTER IN CASE THIS SPACE MUST BE FLUSHED\r
+       MOVEM 0,SVPTR1  ;THIS POINTER FOR FLUSHING FINAL SPACES\r
+       MOVEM 0,SVPTR2  ;THIS POINTER FOR CHANGING MULT. SPACES TO TABS\r
+       SETZM SPCT      ;INITIALIZE THE SPACE COUNTER\r
+GETA7: AOS T1,SPCT\r
+       SOSLE TABCT     ;ARE WE AT THE NEXT TAB STOP?\r
+       JRST CPOPJ1     ;NO\r
+       CAIL T1,2       ;DONT BOTHER CHANGING ONE SPACE TO A TAB\r
+       TRNN FLAG,TBMOD ;TAB GENERATING MODE?\r
+       JRST GETA5A     ;NO, GO RESET TAB COUNTER\r
+       MOVE 0,SVPTR2\r
+       MOVEM 0,OPTR    ;BACK UP THE OUTPUT POINTER OVER THE LAST\r
+                       ;GROUP OF SPACES\r
+       MOVEI CHR,TAB   ;OUTPUT A TAB\r
+       SETZM SPCT      ;RESET THE SPACE COUNTER\r
+GETA5A:        IBP SVPTR2      ;UPDATE THE CHANGE-SPACES-TO-TABS POINTER\r
+       JRST GETA5      ;RESET THE TAB COUNTER\r
+\f;ERROR ROUTINES\r
+\r
+IFE WCH,<IFN RIMSW,<\r
+ERR8A: MOVEI   T4,ERR382\r
+       JRST    E10B\r
+ERR3B: MOVEI   T4,ERR381\r
+       JRST    E10B>>\r
+\r
+ERR10: MOVEI   T4,E10A\r
+E10B:  SKIPN   ZRF\r
+       SKIP    3\r
+       ERRPNT  </?File />\r
+       MOVEI T3,ZRF\r
+       PUSHJ P,FN.EX\r
+       JRST    (T4)\r
+\r
+IFE WCH,<IFN RIMSW,<\r
+ERR381:        ERRPN2  </illegal extension!/>\r
+\r
+ERR382:        ERRPN2  </illegal format!/>\r
+\r
+ERR5B: ERRPN2  </? DTA to PTP only!/>>>\r
+\r
+ERR9:  ERRPNT  </?/>\r
+       MOVEI T3,DTON\r
+       PUSHJ P,FN.EX\r
+       JRST    ERR4B\r
+\fERR1: SKIPA T2,ODEV   ;OUTPUT UNAVAILABLE\r
+ERR1A: MOVE T2,DEVICE  ;INPUT UNAVAILABLE\r
+ERR1B: ERRPNT  </?Device />\r
+       PUSHJ   P,P6BIT\r
+               T2\r
+       ERRPN2  </ not available!/>\r
+ERR3:\r
+IFN FTDSK,<TRNE AUXFLG,DSKIN\r
+       JRST DERR5      ;ERR ON DSK>\r
+       PUSHJ P,ERR3A\r
+       JRST IOERRN     ;EXIT\r
+ERR3A: TLO AUXFLG,INFOFL       ;SIGNAL RETURN TO ERR3AA\r
+       JRST INFO\r
+ERR3AA:        ERRPN2  </? No file named />\r
+       MOVEI   T3,FILNAM\r
+       PUSHJ   P,FN.EX ;PRINT NAME OF FILE THAT CANNOT BE FOUND\r
+       PUSHJ   P,INFO2         ;OUTPUT MESS. WITH CR-LF\r
+       TRNN    AUXFLG,TTYIN!TTYOUT     ;WAS TTY IN USE?\r
+       POPJ    P,              ;NO\r
+       TRNE    AUXFLG,TTYIN    ;INPUT DEVICE?\r
+       JRST    ININIT          ;YES ,RE-INIT\r
+       JRST    OMODE           ;MUST BE OUTPUT\r
+\r
+ERR4:  SKIPN DTON\r
+       JRST ERR4A\r
+IFN FTDSK,<TRNE AUXFLG,DSKOUT  ;ERR ON DSK\r
+       JRST DERR6>\r
+       ERRPNT  </? Directory full!/>\r
+ERR4A:\r
+IFN FTDSK,<TRNE AUXFLG,DSKOUT\r
+       JRST ERR4C>\r
+ERR4B: ERRPNT  </?Illegal file name!/>\r
+IFN FTDSK,<\r
+ERR4C: ERRPNT  </?(0) Illegal file name!/>>\r
+\r
+ERR6:\r
+ERR6A: ERRPNT  </?PIP command error!/>\r
+\r
+ERR6B: ERRPNT  </?PIP command too long!/>\r
+\r
+E10A:  ERRPN2  </ line too long!/>\r
+ERR5A: ERRPNT  </?Too many input devices!/>\r
+;FILE MANIPULATION COMMANDS TO NON-DIRECTORY DEVICES COME HERE\r
+\r
+ERR5:  ERRPNT  </?Disk or DECtape input required!/>\r
+ERR2:  ERRPNT </?Incorrect Project-Programmer number!/>\r
+ERR2A: ERRPNX  </?Illegal protection!/>\r
+IFE BLOC0,<\r
+ERR7A: ERRPNT  <Z?DECtape I/O only!Z>>\r
+\r
+ERR8:  ERRPNT  </?Explicit output device required!/>\r
+\f\r
+;ROUTINE TO CHECK INPUT DEV, SET XXXIN.E.G.DTAIN\r
+\r
+CHECK1:        MOVE 0,DEVICE   ;INPUT DEVICE NAME TO AC 0\r
+       JUMPE 0,CHECK   ;IGNORE IF NO INPUT DEVICE\r
+IFN FTDSK,<PUSHJ       P,PSYSP ; STR# 10-3178>\r
+       DEVCHR          ;GET INPUT DEVCHR\r
+IFN FTDSK,<TLNN 0,DSKBIT ;INPUT DEVICE DISK?\r
+       JRST CHECK2     ;NO\r
+       TRO AUXFLG,DSKIN;INPUT DEVICE IS DSK, SET BIT\r
+       MOVE    T1,DEVICE\r
+       CAMN    T1,[SIXBIT/SYS/]        ; INIT SYS AS DSK\r
+       MOVSI   T1,(SIXBIT/DSK/)\r
+       MOVEM   T1,ADSK\r
+       JRST    CHECK>\r
+\r
+CHECK2:        JUMPE 0,DEVER1  ;NON-EX. DEVICE\r
+\r
+       TLNN 0,INBIT    ;CAN DEVICE DO INPUT?\r
+       JRST ERR6A      ;NO, COMMD ERROR\r
+\r
+       TLNE 0,PTRBIT   ;PAPER TAPE READER?\r
+       TRO AUXFLG,PPTIN;YES\r
+\r
+       TLNE 0,DTABIT   ;DECTAPE?\r
+       TRO AUXFLG,DTAIN\r
+\r
+       TLNE 0,MTABIT   ;MAGTAPE?\r
+       TRO AUXFLG, MTAIN\r
+\r
+       TLNE CDRBIT     ;CARD READER?\r
+       TRO AUXFLG,CDRIN\r
+\r
+       TLNE 0,TTYBIT   ;TELETYPE?\r
+       TRO AUXFLG,TTYIN\r
+\r
+CHECK: TRNE    CALFLG,SSWTCH   ;_FLAG STILL ON?\r
+       JRST ERR6A      ; YES ,COMMAND ERROR\r
+       POPJ P,         ; NO, RETURN \r
+\f;SUBR TO PRINT ERROR MESSAGES\r
+;! MARKS THE END OF MESSAGE & SIGNALS GO TO PIP2\r
+;NULL IS A FLAG TO RETURN TO THE NEXT LOCATION\r
+\r
+PRETXT:        
+PTEXT: RELEAS DIR,     ;RELEASE DIRECTORY DEVICE\r\r
+       RELEAS TAPE,    ;RELEASE MAGTAPE\r
+       RELEAS OUT,     ;LET GO OF BOTH OUTPUT AND\r
+       RELEAS IN,      ;INPUT DEVICES\r
+       JSP T5,INICN1   ;INITIALIZE THE TTY\r
+       MOVEI   0,CR\r
+       IDPB    0,TFO+1 ;OUTPUT A CR-LF\r
+       MOVEI   0,LF\r
+       IDPB    0,TFO+1 ;FOR BATCH\r
+PTEXT2:        HRLI T1,440700  ;GET SET TO SCAN 7-BIT DATA\r
+PTEXT1:        ILDB 0,T1       ;GET CHAR OF ERR MESSAGE\r
+       JUMPE 0,1(T1)   ;RETURN ON ZERO\r
+       CAIN 0,"!"      ;!?\r
+       JRST PIP2       ;YES, END OF MESSAGE, APPEND CAR.RET., LF\r
+       IDPB 0,TFO+1    ;DEPOSIT CHAR IN OUTBUFFER\r
+       JRST PTEXT1     ;GET NEXT CHAR\r
+\r
+;ROUTINE TO DEPOSIT CHARACTER IN TTY OUT BUFFER\r
+\r
+PUTCON:        SOSG TFO+2      ;STORED MORE THAN BUFFER HOLDS?\r
+       OUTPUT CON,     ;YES\r
+       IDPB CHR,TFO+1\r
+       POPJ P,\r
+\r
+;ROUTINE TO CONVERT ONE WORD OF SIXBIT\r
+;FROM ADDRESS IN LOCATION AFTER CALL AND DEPOSIT INTO TTY OUT BUFFER\r
+\r
+P6BIT: MOVE T1,@(P)    ;PICK UP WORD OF 6-BIT\r
+       HRLI T1,440600  ;SET UP POINTER\r
+P6BIT1:        ILDB CHR,T1\r
+       JUMPE CHR,P6BIT2\r
+       ADDI CHR,40\r
+       PUSHJ P,PUTCON  ;DEPOSIT IN TTY\r
+P6BIT2:        TLNE T1,770000  ;DONE SIX?\r
+       JRST P6BIT1     ;NO\r
+       JRST CPOPJ1     ;SKIP RETURN\r
+\r
+\f;ROUTINE TO CLEAR DSK OR DTA DIRECTORY (/Z SWITCH)\r
+\r
+DTCLR: TRNN    CALFLG,DVSWTH   ;HAS A DEVICE BEEN SEEN?\r
+       JRST    ERR8            ;NO,SO DON'T SCREW USER\r
+IFN FTDSK,<TRNE AUXFLG,DSKOUT  ;CLEAR DSK OR DTA DIR.\r
+       JRST DSKZRO>\r
+       TRNN AUXFLG,DTAOUT      ;MUST BE DTA\r
+       JRST ERR5\r
+       UTPCLR  OUT,            ;CLEAR DIRECTORY\r
+       POPJ P,\r
+\f;ROUTINE TO SET UP TO COPY EVERYTHING\r
+\r
+PRECOP:        PUSHJ   P,ININIT        ;INIT INPUT FILE\r
+       TRNN    AUXFLG,DTAIN    ;DECTAPE INPUT\r
+       SKIP    2               ;NO\r
+       PUSHJ   P,DTCH2         ;YES, GET DIRECT, SET POINTERS TO DIRECT\r
+\r
+DTCOPY:        PUSHJ   P,DTADI1        ;START (T5)\r
+IFN FTDSK,<TRNE        AUXFLG,DSKIN    ;DSK INPUT. ENTER HERE FROM DTD2\r
+       PUSHJ   P,DSKDIR        ;YES, PREPARE TO LOOKUP FILES>\r
+COPY1A:        SETZM   ZCNT            ;CLEAR COUNT FOR DSK ZERO REQUESTS\r
+       MOVEI   T2,6            ;FILL 0 CHARS. IN DEST-FILE\r
+       MOVE    T1,[POINT 6,DTON]       ;NAME WITH X'S. THIS IS\r
+XSS:   ILDB    0,T1            ;THEN THE BASE FOR GENERATED\r
+       JUMPN   0,.+2           ;DESTINATION FILES FROM\r
+       MOVEI   0,"X"-40        ;NON-DIR. DEVICES IN /X\r
+       DPB     0,T1\r
+       SOJG    T2,XSS          ;DON'T YET KNOW IF ONE\r
+                               ;OF THE INPUT DEV. WILL\r
+       MOVE    0,DTON          ;BE NON-DIR\r
+       MOVEM   0,DTONSV\r
+       MOVE    0,DTON+1\r
+       MOVEM   0,DTONSV+1\r
+\r
+COPY1: PUSHJ   P,SR2           ;SET INIT. COPYING MODE\r
+       PUSHJ   P,LOOK          ;GET A FILE TO COPY\r
+       JRST    CAL6            ;NO MORE\r
+IFN FTDSK<PUSHJ        P,XDDSK         ;GOT ONE, CHECK (XD) FROM DSK, NAMTAB\r
+       JRST    COPY1           ;IN LIST, DON'T COPY>\r
+       TRNN    AUXFLG,MTAIN+PPTIN+CDRIN+TTYIN  ;OK, COPY FILE\r
+       JRST    COPY6A          ;MUST BE DIRECTORY DEVICE\r
+       PUSHJ   P,MTPTCR        ;SET UP A DEST. FN.\r
+       JRST    COPY6\r
+\fCOPY6A:       LOOKUP  IN,ZRF          ;LOOKUP INPUT FILE NAME\r
+       JRST    CAL5            ;INPUT FILE FILE PROTECTED\r
+COPY6: PUSHJ   P,FILTYP        ;CHECK FOR DMP,SAV,REL,CHN\r
+IFN WCH,<\r
+       TRNN    AUXFLG,DTAIN+DTAOUT\r
+       JRST    .+5\r
+       HLRZ    0,ZRF+1\r
+       CAIE    0,(SIXBIT /DMP/)\r
+IFN DISK30,<CAIN 0,(SIXBIT/SVE/)>\r
+IFE DISK30,<CAIN 0,(SIXBIT/SAV/)>\r
+       JRST    COPY1>\r
+       PUSHJ   P,COPY3\r
+COPY6B:        MOVE    0,ZRF           ;INPUT FILE NAME\r
+       MOVEM   0,DTON          ;IS OUTPUT FILE NAME\r
+       HLLZ    0,ZRF+1         ;LIKEWISE EXT\r
+       HLLZM   0,DTON+1\r
+\r
+;THIS CODE OPERATES AS FOLLOWS - FOR E+2, SET = 0\r
+;TO START (ASSUMING /X)\r
+;DSK TO DSK IF EDIT SWITCHES PUT E+2 = 0 IF NO EDITS TRANSFER\r
+;      DATE, TIME, BITS 13-35\r
+;DSK TO DTA FOR EDITS E+2 = 0, NO EDITS TRANSFER 24-35 FOR\r
+;DATE, FOR"SAV" FILES TRANSLATE NO.  1K BLOCKS\r
+;DTA TO DSK FOR NO EDITS XFER BITS 24-35, ELSE E+2 = 0\r
+;DTA TO DTA ALWAYS XFER 18-23, (1K BLOCK) NO EDITS XFER 24-35(DATE)\r
+\r
+       SETZM   DTON+2          ;CLEAR DATE. OUTPUT FILE, DSK/DTA\r
+       LDB     0,DATE          ;GET DSK/DTA DATE CREATED\r
+       TDNN    FLAG,[XWD PFLG,LINE+TBMOD+NSMOD+SQMOD+SPMOD]\r
+       TLNE    AUXFLG,CDRFLG\r
+       JRST    COPY6C\r
+       DPB     0,DATED         ;DEPOSIT IF NO EDITS\r
+IFN FTDSK,<LDB 0,TIME\r
+       TRC     AUXFLG,DSKIN+DSKOUT\r
+       TRCN    AUXFLG,DSKIN+DSKOUT\r
+       DPB     0,TIMED         ;DSK TO DSK TIME>\r
+COPY6C: IFE WCH,<\r
+       PUSHJ   P,OKBLKS        ;SETUP 1K BLOCKS>\r
+       ENTER   OUT,DTON        ;GOT DATA, CREATE NEW FILE\r
+       JRST    ERR4            ;DIRECTORY FULL\r
+       MOVE    0,ZRO           ;GET ASCII/00000/AND\r
+       MOVEM   0,SQNUM         ;RESET SEQUENCE NO.\r
+       TLO     FLAG,NEWFIL     ;SET NEW FILE FLAG\r
+       SETZM   TOTBRK          ;CLEAR PAREN COUNTER\r
+       TLNN    AUXFLG,CDRFLG+SBIN      ;SPECIAL PROCESSING?\r
+       TDNE    FLAG,[XWD PFLG+IFLG+IBFLG,LINE+BMOD+TBMOD+NSMOD+SQMOD+SPMOD]    \r
+       JRST    PSCAN           ;YES, DO IT\r
+COPY5: SOSGE   IBF+2           ;INPUT BUFFER EMPTY?\r
+       JRST    COPY4           ;YES\r
+       ILDB    CHR,IBF+1       ;GET NEXT WORD AND\r
+       PUSHJ   P,PUT           ;OUTPUT IT\r
+       JRST    COPY5\r
+COPY4: PUSHJ   P,COPY3         ;GET NEXT FULL SOURCE BLOCK\r
+       PUSHJ   P,OUTP          ;OUTPUT PREV. BLOCK-DONT ALTER DATA\r
+       AOS     OBF+2           ;MAKE PUT HAPPY BECAUSE OF\r
+       JRST    COPY5           ;OUTPUT HERE.\r
+COPY2A:        CLOSE   IN,\r
+       CLOSE   OUT,\r
+IFN FTDSK,<TLNE  AUXFLG,NSPROT ;NON-STANDARD PROTECTION?\r
+       TRNN    AUXFLG,DSKOUT   ;RENAME ALL OUTPUT FILES IF\r
+       JRST    COPY2B          ;NON-STANDARD PROTECTION\r
+       MOVE    0,PROTS         ;GET NEW PROTECTION\r
+       MOVEM   0,DTON+2\r
+\r
+       RENAME  OUT,DTON        ;RENAME OUTPUT FILE\r
+       JRST    DERR6>\r
+COPY2B:        PUSHJ   P,OUTP1\r
+       JRST    COPY1           ;GO GET NEXT FILE\r
+\r
+CAL5:  AOS     ZCNT            ;INPUT FILE READ PROT.\r
+       JRST    COPY1           ;COUNT READ FAILURES\r
+\r
+;NO MORE FILES TO COPY\r
+\r
+CAL6:  TLZ     AUXFLG,NSPROT\r
+IFN FTDSK,<    SKIPN   ZCNT    ;FILES READ PROTECTED ?>\r
+       JRST    MAIN1           ;NO\r
+IFN FTDSK,<MOVSI T4,(SIXBIT /X/)       ;YES,PRINT FAILURE DURING\r
+       JRST    DSKZ5           ;/X REQUEST>\r
+\r
+COPY3B:        SKIPE   IBF+2           ;EMPTY BLOCK?\r
+       POPJ    P,              ;NO, RETURN\r
+\r
+COPY3: PUSHJ   P,INP           ;READ NEXT BLOCK\r
+       TRZE    AUXFLG,READ1\r
+       PUSHJ   P,TTYZ          ;END OF FILE FROM TTY?\r
+       TRNN    IOS,EOFBIT      ;END OF FILE? IOS HAS STATUS BITS\r
+       JRST    COPY3B          ;NO.\r
+       POP     P,0             ;FIND WHERE CALLED FROM\r
+       HRRZS   0\r
+       TRNE    AUXFLG,MTAIN+CDRIN+TTYIN+PPTIN\r
+       CAIE    0,COPY6B        ;DID WE COME FROM COPY6B-1\r
+       JRST    COPY2A          ;NO, EOF NOT FIRST DATA IN FILE \r
+       TRZ   CALFLG,ALLCLF     ;END OF INFO ON NON-DIR. DEVICE\r
+       JRST    COPY1\r
+\r\f;CREATE DESTINATION FILE NAME. RANGE IS ...001 TO ...999\r
+\r
+MTPTCR:        AOS T1,NO.\r
+       CAILE T1,^D999\r
+       JRST MPC2\r
+       PUSHJ P,MTPTC1\r
+       MOVE 0,DTONSV   ;FILNAM=DTON IS ONLY WAY TO IDENTIFY\r
+       MOVEM 0,ZRF     ;INPUT FILE\r
+       MOVE 0,DTONSV+1\r
+       MOVEM 0,ZRF+1\r
+       POPJ P,\r
+MPC2:  ERRPNT <Z?Terminate /X, max. of 999 files processed!Z>\r
+\r
+MTPTC1:        MOVEI DOUT,^D1000(T1)\r
+       MOVE T1,[POINT 6,DTONSV,17]\r
+       JSP T2,OUTDC1\r
+       AOJA T2,CPOPJ\r
+       SUBI CHR,40\r
+       IDPB CHR,T1\r
+       POPJ P,\r
+\r
+;ROUTINE TO RESTORE BYTE POINTERS TO INITED MODE\r
+;FOR INPUT AND OUTPUT DEVICES\r
+\r
+SR2:   MOVE 0,SVIBF\r
+       HLLM 0,IBF+1\r
+       MOVE 0,SVOBF\r
+       HLLM 0,OBF+1\r
+       POPJ P,\r
+\r
+;ROUTINE TO SEE IF ^Z FIRST CHAR ON TTY\r
+\r
+TTYZ:  TRNN AUXFLG,TTYIN       ;SEE IF FIRST CHAR. IS ^Z\r
+       POPJ P,                 ;NOT TTY INPUT\r
+       HRRZ T1,IBF+1           ;ON TTY\r
+       HLRZ 0,1(T1)            ;GET FIRST CHARACTER\r
+       TRZ     0,3777          ;CLEAR ANY OTHER CHAR.\r
+       CAIN    0,(<CZ>B6)      ;IS IT ^Z?\r
+       TROA    IOS,EOFBIT      ;YES,SET END OF FILE\r
+       CAIE    0,(<XON>B6)     ;IS IT XON "^Q"\r
+       POPJ    P,              ;NO\r
+       MOVSI   0,(<DEL>B6)     ;A RUBOUT\r
+       IORM    1(T1)           ;CLEAR "^Q" FROM BUFFER\r
+       POPJ    P,              ;AND RETURN\r
+\fIFE   WCH,<\r
+;DTA TO DTA MAINTAIN BITS 18-23 OF E+2 IF SET\r
+;DSK TO DSK NO TRANSLATION (E+2)\r
+;DSK TO DTA TRANSLATE E+3 (LHS) INTO E+2 (18-23)\r
+;DTA TO DSK NO TRANSLATION (E+2)\r
+;THIS ROUTINE ENSURES "SAVE" FILES MAINTAIN\r
+;CORRECT DATA FOR LOADING.  FOR DSK INPUT\r
+;A "SAVE" FILE IS ONE WITH THE EXTENSION\r
+;"SAV". E+3 = (-[(200XN)+NO. WDS IN LAST BLOCK]\r
+;IN LHS TRANSLATE TO NO. 1K BLOCKS NEEDED\r
+;TO LOAD FILE - BEFORE IT IS EXPANDED IN CORE.\r
+\r
+OKBLKS:        TRNN    CALFLG,RXFLG    ;(RX)?\r
+       JRST    OKBLK0          ;NO\r
+       MOVE    0,MATCH         ;GET FILE NAME\r
+       HLRZ    T1,MATCH+1      ;AND EXT.\r
+       CAME    0,STAR          ;SKIP IF NAME IS "*"\r
+       MOVEM   0,DTON          ;OTHERWISE REPLACE NAME\r
+       CAIE    T1,(SIXBIT /*/) ;SAME FOR EXT\r
+       HRLM    T1,DTON+1\r
+OKBLK0:        MOVE    0,DTON          ;GET OUTPUT FILE NAME\r
+       HLRZ    T1,DTON+1       ;AND EXT\r
+       CAIE    T1,(SIXBIT /*/) ;IS IT "*"\r
+       CAMN    0,STAR          ;IS IT "*"\r
+       JRST    ERR4B           ;YES, ERROR\r
+\r
+REPEAT 0,<                     ;NEEDS FIX TO TENDMP OR MONITOR\r
+       TRNE    AUXFLG,DTAOUT   ;OUTPUT TO DTA?\r
+       CAIE    T1,(SIXBIT /SAV/) ;AND A SAV FILE?\r
+       SKIP    1               ;NO\r
+       UGETF   OUT,0           ;SET TO FIRST FREE BLOCK\r
+>\r
+\r
+IFN FTDSK,<TRC AUXFLG,DSKIN+DSKOUT     ;DSK I/O\r
+       TRCN    AUXFLG,DSKIN+DSKOUT\r
+       POPJ    P,                      ;YES, EXIT\r
+       TRC     AUXFLG,DTAIN+DTAOUT     ;NO\r
+       TRCE    AUXFLG,DTAIN+DTAOUT     ;DTA I/O\r
+       JRST    OKBLK1                  ;NO>\r
+       LDB     0,OKB                   ;DTA I/O - 1K BLKS\r
+       DPB     0,OKBD                  ;DEPOSIT IN DTON\r
+       POPJ    P,\r
+\r
+IFN FTDSK,<\r
+OKBLK1:        TRC     AUXFLG,DTAIN+DSKOUT     ;DTA-TO-DSK\r
+       TRCN    AUXFLG,DTAIN+DSKOUT\r
+       POPJ    P,                      ;YES\r
+       TRC     AUXFLG,DSKIN+DTAOUT     ;NO,DSK-TO-DTA?\r
+       TRCE    AUXFLG,DSKIN+DTAOUT     ;NO\r
+       POPJ    P,\r
+       HLRZ    0,ZRF+1                 ;YES DSK-TO-DTA\r
+IFE DISK30,<\r
+       CAIE    0,(SIXBIT /SAV/)        ;GET LOOKED UP EXT,(INPUT).\r
+       >\r
+IFN DISK30,<CAIE 0,SIXBIT /SVE/>\r
+       POPJ    P,\r
+       HLRO    T1,ZRF+3                ;EXTENSION=SAV\r
+       MOVNS   T1                      ;WORD COUNT\r
+       IDIVI   T1,2000                 ;DIVIDE BY 1K CORE(OCTAL LOCS.)\r
+       JUMPN   T2,.+2\r
+       SOJ     T1,                     ;N-1\r
+       DPB     T1,OKBD\r
+       POPJ    P,>>\r
+\f\r
+IFN FTDSK,<\r
+;ARE WE DOING (XD) FROM DSK? IF NOT, EXIT.\r
+;SEE IF CURRENT FILE SELECTED IN ZRF IS IN THE\r
+;LIST OF FILES NOT TO BE COPIED. (POPJ IF IT IS)\r
+\r
+XDDSK: TRC     FLAG,XFLG+DFLG          ;COMPLEMENT\r
+       TRCN    FLAG,XFLG+DFLG          ;RESET AND TEST\r
+       TRNN    AUXFLG,DSKIN            ;/X AND /D WERE SET\r
+       JRST    CPOPJ1                  ;NOT DSKIN SO COPY FILE\r
+       HRROI   T1,-12                  ;SET TO LOOP NAMTAB\r
+XDDSK2:        MOVE    T2,ZRF                  ;GET FILE NAME\r
+       SKIPN   T3,NAMTAB+12(T1)        ;END OF TABLE ENTRIES?\r
+       JRST    CPOPJ1                  ;YES, EXIT\r
+       CAME    T2,T3                   ;FN IS * OR MATCH?\r
+       CAMN    T3,STAR\r
+       SKIP    1                       ;YES, * OR MATCH?\r
+       JRST    XDDSK1                  ;NO MATCH\r
+       HLLZ    T2,ZRF+1                ;GET EXT\r
+       SKIPN   T3,NAMTAB+24(T1)        ;NO EXT MATCH WANTED\r
+       POPJ    P,                      ;EXIT THEN\r
+       CAME    T2,T3                   ;EXT IS * OR MATCH?\r
+       CAMN    T3,STAR\r
+       POPJ    P,                      ;FN EX MATCH, NO COPY\r
+XDDSK1:        AOJL    T1,XDDSK2               ;TRY ANOTHER FOR MATCH\r
+       JRST    CPOPJ1                  ;SEARCHED TABLE, NO MATCH>\r
+\f;ROUTINE TO DELETE OR RENAME FILES ON DTA OR DSK OR SET UP NAMTAB\r
+;FOR (DX) (DISK ONLY)\r
+\r
+DTDELE:        TRNE    FLAG,XFLG       ;/X\r
+       JRST    DELE1           ;YES\r
+       TRNN    FLAG,DFLG       ;/D NEED EXPLICIT DEVICE\r
+       SKIP    2\r
+       TRNN    CALFLG,DVSWTH   ;-1 IF DEVICE SEEN\r
+       JRST    ERR8            ;NO, ERROR\r
+       MOVE    0,ODEV          ;OUTPUT DEVICE\r
+       MOVEM   0,DEVICE        ;NO,SET DEVICE FOR INPUT\r
+       MOVEM   0,DEVA\r
+DELE1: TRZ     AUXFLG,DTAIN+CDRIN+TTYIN+PPTIN+MTAIN+DSKIN\r
+       PUSHJ   P,CHECK1        ;RESET INPUT DEVICE DESCRP\r
+       MOVEI   0,NAMTAB        ;FOR /R GET NEW NAME\r
+       HRLI    0,DTON          ;SET TO BLT OUTPUT DIRECT ENTRY\r
+       BLT     0,NAMTAB+3      ;TO NAMTAB\r
+\r
+       TRNN    AUXFLG,DTAIN+DSKIN\r
+       JRST    ERR5            ;NOT DTA OR DSK\r
+       PUSHJ   P,FNSET         ;SET UP CALFLG CORRECTLY\r
+       TRNE    FLAG,XFLG       ;/X?\r
+       JRST    DTD1            ;YES, (DX). RX ILLEGAL\r
+IFN FTDSK,<TRNE AUXFLG,DSKOUT  ;NO, HAS TO BE /D OR /R\r
+       JRST    DSKDR0          ;ON DSK>\r
+       JRST    DTADR           ;OR DTA\r
+\r
+DTD1:\r
+IFN FTDSK,<TRNE        AUXFLG,DSKIN    ;DSK INPUT?\r
+       JRST    DTD1A           ;YES>\r
+       PUSHJ   P,DTCHECK       ;NO, HAS TO BE DTA, GET DIR\r
+       JRST    DELE3           ;DELETE, FILES FROM DIR\r
+IFN FTDSK,<\r
+DTD1A: SETZM   NAMTAB          ;COLLECT NAMES FOR DX, DSK SOURCE\r
+       MOVE    T1,[XWD NAMTAB,NAMTAB+1]\r
+       BLT     T1,NAMTAB+23    ;FIRST CLEAR TABLE\r
+       MOVEI   T1,NAMTAB       ;LOCATION OF NAMTAB\r
+       MOVEM   T1,LOCNAM\r
+DTD4:  MOVE    0,FILNAM\r
+       JUMPE   0,DTD4A         ;FN=0 ILLEGAL\r
+       MOVE    T1,LOCNAM\r
+       MOVEM   0,(T1)          ;STORE FILENAME FROM CS\r
+       MOVE    0,FILEX         ;STORE FILE EXT\r
+       MOVEM   0,12(T1)        ;TABLE FULL?\r
+       MOVEI   T2,NAMTAB+11\r
+       CAMN    T2,T1\r
+       SOS     ESWTCH          ;YES\r
+       SKIPE   ESWTCH          ;NO, END OF CS SCAN?\r
+       JRST    DTD2            ;END OF NAME PROCESSING\r
+       AOS     T1,LOCNAM       ;SET TO STORE IN NEXT SLOT NAMTAB\r
+DTD4B: PUSHJ   P,DESCRP        ;NO, GET NEXT FILENAME FROM CS\r
+       TRNE    CALFLG,NEWPP!NEWDEV\r
+       JRST    ERR5A           ;ERROR, NEW DEV OR# PP\r
+       JRST    DTD4\r
+DTD4A: PUSHJ   P,ERR3A\r
+       JRST    DTD4B\r
+\r
+;END OF CS OR NAMTAB FULL\r
+DTD2:  PUSHJ   P,ININIT        ;INIT INPUT FILE\r
+       MOVEI   T1,1            ;SET TO RETURN DTCOPY+1\r
+       JRST    DTD5>\r
+\f;ROUTINE TO DELETE OR RENAME FILES ON DTA\r
+\r
+DTADR: PUSHJ   P,DTCHECK       ;GO GET DTA DIRECTORY\r
+       MOVE T1,IBF             ;CURRENT INPUT BUFFER\r
+IFN WCH,<\r
+       USETO OUT,1             ;TRY TO WRITE OUTPUT TAPE\r
+       >                       ;DETERMINE IF WRITE LOCKED\r
+IFE WCH,<\r
+       USETO OUT,144>          ;THIS SHOULD GIVE ERROR MSG\r
+       OUTPUT OUT,(T1)         ;IF DTA WRITE LOCKED\r
+       PUSHJ P,DTCHECK         ;GO GET DTA DIRECTORY\r
+\r
+       PUSHJ   P,INFO          ;WRITE "FILES DELETED/RENAME\r
+\r
+;*********************************************************************\r
+\r
+\r
+;LOOP TO DELETE/RENAME. FOR (DX) DELETE FILES FROM DTA DIR\r
+;THEN USE REVISED DIRECTORY TO COPY ALL REMAINING FILES\r
+\r
+\r
+DELE3: PUSHJ   P,LOOK          ;GET FILE TO DELETE OR RENAME FROM CS\r
+       JRST    DELE5           ;NO MORE FILES\r
+       TRNN    FLAG,XFLG       ;/X?\r
+       PUSHJ   P,INFO3         ;PRINT FILENAME-EXT\r
+       MOVE    T1,DIRST        ;GOT A MATCH - PROCESS IT\r
+       TRNE    FLAG,RFLG       ;AND IT IS AT (T5) IN (DTA) DIR\r
+       JRST    DTRNAM          ;RENAME\r
+IFN WCH,<\r
+       SKIPA   T2,T1\r
+       ADDI    T2,4\r
+       SKIPE   4(T2)\r
+       JRST    .-2\r
+       HRLS    T1\r
+       ADDI    T1,4            ;GET TO END OF NAMES\r
+       MOVSS   T1              ;BLOCK UP DIR\r
+       BLT     T1,-1(T2)       ;ZERO OUT LAST 4 WORDS\r
+       SETZM   (T2)\r
+       SETZM   1(T2)\r
+       SETZM   2(T2)\r
+       SETZM   3(T2)\r
+       MOVE    T1,DIRST1\r
+       MOVEM   T1,DIRST\r
+       JRST    DELE3>\r
+IFE WCH,<\r
+       SETZM   (T1)            ;DELETE FILENAME IN CORE DIRECT\r
+       SETZM   26(T1)          ;DELETE EXT\r
+       SUB     T1,DIRST1       ;GET FILE "NUMBER" (POS IN DIRECT)\r
+       MOVEI   T3,1102         ;TO LOOK AT ALL BLOCKS\r
+       MOVSI   T2,(POINT 5,0)\r
+       HRR     T2,DIRST1       ;TO CALCULATE ADDRESS OF FIRST WORD\r
+       SUBI    T2,122          ;OF BLOCK TABLE IN DIRECTORY\r
+DELE2: SOJLE   T3,DELE3        ;LOOK AT 1101 BLOCKS\r
+       ILDB    0,T2            ;GET BLOCK NUMBER\r
+       CAME    0,T1            ;IS IT SAME AS FILE "NUMBER"\r
+       JRST    DELE2           ;NO IGNORE\r
+       SETZ    0,              ;FREE THE BLOCKS OF THIS FILE\r
+       DPB     0,T2            ;CLEAR OUT BLOCK NUMBER\r
+       JRST    DELE2>          ;LOOP ON 1102 BLOCKS\r
+DELE5: MOVE    T1,IBF          ;LOC OF INPUT BUFFER\r
+       TRNE    FLAG,XFLG       ;DX SWITCH?\r
+       JRST    DTD6            ;YES, NOW MUST COPY REMAINING FILES\r
+IFN WCH,<\r
+       USETO   OUT,1>\r
+IFE WCH,<\r
+       USETO   OUT,144>\r
+       OUTPUT  OUT,(T1)        ;OUTPUT DTA DIRECTORY\r
+       RELEAS  CON,            ;OUTPUT DELETE OR RENAME INFO TO TTY\r
+       JRST    MAINB\r
+\f;ROUTINE TO RENAME FILE ON DECTAPE\r
+\r
+DTRNAM:        PUSHJ   P,RENAME\r
+       SETZM   DTON+2          ;MAKE MONITOR SUPPLY\r
+       SETZM   DTON+3          ;DATE TIME\r
+       LOOKUP  OUT,DTON        ;LOOK UP FILENAME-EXT ON OUTPUT DEV\r
+       SKIP    1               ;NO FILE ALREADY OF DESTINATION NAME\r
+       JRST    DTRNM1\r
+       MOVE    0,DTON          ;RENAME, FILENAME\r
+       JUMPE   0,DELE3         ;BUT NOT IF ZERO\r
+       MOVEM   0,(T1)          ;PUT IN DIRECTORY\r
+       MOVE    0,DTON+1        ;GET EXT\r
+IFE WCH,<\r
+       HLLM    0,26(T1)>       ;RENAME, EXT\r
+IFN WCH,<\r
+       HLLM    0,1(T1)>\r
+       JRST    DELE3\r
+DTRNM1:        HRRZ    T2,IBF  ; GET PROTECTION DIR SLOT\r
+       LDB     0,[POINT 5,17(T2),14]\r
+       CAIE    0,36            ; FILE PROTECTION ?\r
+       JRST    ERR9            ; NO,ILLEGAL FILE NAME\r
+       JRST    DELE3           ; RENAME DONE AT MAINB\r
+\r
+;END OF LOOP\r
+;*********************************************************************\r
+;DX SWITCH ON, COPY ALL BUT SPECIFIED FILES. I.E. THOSE NOT DELETED\r
+\r
+DTD6:  MOVEI   T1,0            ;SET TO RETURN TO DTCOPY\r
+DTD5:  MOVSI   0,(SIXBIT /*/)\r
+       MOVEM   0,FILNAM        ;FORCE COPY-ALL\r
+       MOVEM   0,FILEX         ;BY MAKING FILE-EXT=*.*\r
+       PUSHJ   P,FNSET         ;FIND DETAILS OF FILE-EXT\r
+       TRNE    AUXFLG,DTAIN    ;DTA INPUT\r
+       PUSHJ   P,DTCH1         ;INIT DIRST,DIRST1\r
+IFN RIMSW,     <\r
+       TLNE    FLAG,RIMFLG     ;NO\r
+       JRST    RIMTB\r
+       >\r
+       JRST    DTCOPY(T1)\r
+\r
+\r
+;SET UP OUTPUT DIRECTORY ENTRY FOR RENAME\r
+;ONLY ONE FILE NAME ALLOWED, BUT MAY BE *.EXT OR FN.*\r
+\r
+RENAME:        SKIPL   ESWTCH          ;SKIP IF CR,LF SEEN IN C.S.\r
+       JRST    ERR6A           ;ONLY 1 SOURCE FILE DESCRIPTOR ALLOWED\r
+       HLRZ    0,NAMTAB+1      ;GET EXT\r
+       CAIN    0,(SIXBIT /*/)  ;USE SPEC. EXTENSION, BUT IF\r
+       HLRZ    0,ZRF+1         ;EXT.=*, USE SOURCE EXTENSION\r
+       HRLM    0,DTON+1        ;USE SPECIFIED EXT\r
+       MOVE    T2,NAMTAB       ;USE SPEC. FN, BUT IF\r
+       CAMN    T2,STAR         ;FN=* OR 0, USE SOURCE FILENAME\r
+       MOVE    T2,ZRF          ;SOURCE FILE NAME=DEST\r
+       MOVEM   T2,DTON         ;USE SPECIFIED FILENAME\r
+       POPJ    P,\r
+\r
+\r
+\r
+\f;THIS ROUTINE GETS NEXT FILENAME.EXT FROM CS\r
+;THEN SEES IF ONE IN DIRECTORY MATCHES\r
+;IF IT DOES - EXIT IS CPOPJ1\r
+;NO-MORE-FN.EX-TO-HANDLE-EXIT IS POPJ\r
+;PREPARE ZRF FOR A "LOOKUP" ON THE NEXT REQUESTED FILE.\r
+\r
+LOOK:  TRNE    CALFLG,FNEX     ;DOES FILNAM, FILEX CONTAIN\r
+       JRST    LOOK6           ;A FILE TO THINK ABOUT? YES\r
+LOOK01:        PUSHJ   P,LOOKA         ;GET ONE (NOTE: DEVICE MAY ALTER)\r
+       POPJ    P,              ;NONE, END OF CS\r
+                               ;RETURN SKIP FROM LOOKA\r
+LOOK6: MOVE    T2,FILEX        ;GET FILE EXT INTO T2\r
+       SKIPN   T1,FILNAM       ;FILNAME AND EXT=0?\r
+       SKIPE   T2,FILEX\r
+       SKIP    1               ;EITHER FN OR EX N.E.0\r
+       JRST    LOOK7C          ;FN.EX=0, ONE FILE COPY\r
+       CAME    T1,STAR         ;FILNAME OR EXT=*?\r
+       CAMN    T2,STAR\r
+       JRST    LOOK7A          ;FN OR EX=*, MANY FILES \r
+\r
+       TRNE    AUXFLG,DTAIN+DSKIN      ;DONT REQUIRE FILENAME\r
+       JUMPE   T1,LOOK6C       ;HERE FOR 0.EX,FN.EX OR FN.0,0.EX ILLEGAL\r
+LOOK7B:        TRZ     CALFLG,FNEX     ;IF HERE, ONLY ONE FILE WAS ENTAILED IN REQUEST.\r
+       TRNN    AUXFLG,DTAIN+DSKIN\r
+       JRST    LOOK4           ;GOT A FILE TO HANDLE\r
+\r
+LOOK8: PUSHJ   P,PICUP         ;GET A FILE (ANY) FROM DIRECTORY\r
+       JRST    LOOK2           ;WE GOT A FILE, DOES IT MATCH?\r
+       TRZE    CALFLG,FNEX     ;SEE IF A PARTIC. FILE WAS REQUESTED?\r
+       JRST    LOOK6D          ;NO\r
+       JRST    LOOK6C          ;YES\r
+\r
+LOOK6A:        PUSHJ   P,ERR3A\r
+       JRST    IOERRN          ;NO RECOVERY\r
+LOOK6C:        PUSHJ   P,ERR3A\r
+       JRST    LOOK01          ;GET NEXT FILE FROM CS\r
+\r
+LOOK6D:        TRZN    CALFLG,ASTFLG   ;DID WE FIND AT LEAST ONE\r
+       PUSHJ   P,ERR3A         ;NO, PRINT MSG.\r
+       JRST    LOOK            ;GET NEXT FILE FROM CS\r
+;CHECK IF FILE.EXT IN DIRECTORY MATCHES FILE TO /D,/R\r
+;NOTE WE MAY HAVE *.EXT,FIL.*, OR *.*\r
+\r
+\r
+LOOK2: TRNN    CALFLG,MATFN    ;SHOULD FILENAMES MATCH\r
+       JRST    LOOK3           ;NO\r
+       MOVE    T1,FILNAM       ;YES\r
+       CAME    T1,ZRF\r
+       JRST    LOOK8           ;NO MATCH\r
+\r
+LOOK3: TRNN    CALFLG,MATEX    ;SHOULD EXTENSIONS MATCH\r
+       JRST    LOOK5           ;NO\r
+       MOVE    T1,FILEX        ;YES\r
+       CAME    T1,ZRF+1\r
+       JRST    LOOK8           ;NO MATCH\r
+LOOK5: IFN DISK30,<\r
+       TRNN    AUXFLG,DSKIN    ;DSK INPUT?\r
+       JRST    LOOK4           ;NO\r
+       LDB     T1,UFDIN+1      ;PICKUP P-P# IN DIRECTORY\r
+       HRRZM   T1,T2\r
+       CAME    T2,MASK         ;COMPARE WITH OWN P-P#\r
+       JRST    LOOK8           ;NO MATCH>\r
+LOOK4: TRO     AUXFLG,READ1    ;READY FOR FIRST READ\r
+       TRO     CALFLG,ASTFLG   ;FOUND A FILE *.EXT, F.*,*.*\r
+       JRST    CPOPJ1          ;MATCH OR NO CARES\r
+\r
+;FILENAME OR EXT=*\r
+LOOK7A:        JUMPE   T2,.+2          ;EXT=0?\r
+       CAMN    T2,STAR         ;NO,\r
+       CAME    T1,STAR\r
+       SKIP    1\r
+       JRST    LOOK1           ;*.* ALWAYS O.K. AND *\r
+       TRNN    AUXFLG,DSKIN+DTAIN\r
+       JRST LOOK6A     ;*.A OR * ON NON-DIRECT DEV\r
+       JRST    LOOK8\r
+\r
+LOOK7C:        TRNE    AUXFLG,DSKIN+DTAIN\r
+       JRST    LOOK6C          ;0.0 ON DIR DEVICE\r
+       SETZM   ZRF\r
+       SETZM   ZRF+1\r
+       JRST    LOOK7B          ;0.0 ON NON-DIR. DEV.\r
+\r
+LOOK1: TRNE    AUXFLG,DTAIN+DSKIN\r
+       JRST    LOOK8\r
+       SETZM   ZRF\r
+       SETZM   ZRF+1\r
+       JRST    LOOK4\r
+\f;ROUTINE TO GET NEXT FILE NAME FROM DIRECTORY\r
+;FILNAM, FILEX CONTAIN THE FILE NAME. EXT TO BE\r
+;MATCHED WITH DIR. NAMES. PUT SUGGESTED FILE\r
+;NAME EXT IN ZRF, ZRF+1 AND #P-P IN ZRF+3\r
+;NOTE THAT WE HAVE TO HANDLE *.EXT,FILE.*\r
+\r
+PICUP:\r
+IFN FTDSK,<TRNN        AUXFLG,DSKIN    ;DSK INPUT?\r
+       JRST    PICUP2          ;N0, DTA\r
+       SOSLE   UFDIN+2         ;YES\r
+       JRST    .+3\r
+PICUP1:        PUSHJ   P,UIN           ;INPUT USER'S FILE DIRECTORY\r
+       JRST    CPOPJ1          ;EOF ON DSK\r
+       ILDB    0,UFDIN+1       ;PICK UP FILENAME\r
+       JUMPE   0,PICUP1        ;IGNORE NULL\r
+       MOVEM   0,ZRF           ;SET FILE NAME\r
+       MOVE    0,FNPPN\r
+       MOVEM   0,ZRF+3         ;SET DSK #P-P\r
+       SOS     UFDIN+2         ;COUNT DOWN FOR NEXT TIME\r
+       ILDB    0,UFDIN+1       ;SET FILE EX\r
+       HLLZM   0,ZRF+1\r
+IFN DISK30,<\r
+       IBP     UFDIN+1         ;INCREMENT POINTER TO GET PROJ,PROG #\r
+       IBP     UFDIN+1>\r
+       POPJ    P,>\r
+\r
+PICUP2:\r
+IFN WCH,<\r
+       MOVE    T5,DIRST        ;DIRST=LOC 4 FIRST TIME THRU\r
+       ADDI    T5,4            ;CALCULATE FIRST/NEXT FILENAME\r
+       MOVEM   T5,DIRST\r
+       MOVE    0,(T5)\r
+       JUMPE   0,CPOPJ1                ;NO MORE FILENAMES IN DIRECTORY\r
+       MOVEM   0,ZRF\r
+       MOVE    0,1(T5)>\r
+IFE WCH,<\r
+       MOVE    T3,DIRST1       ;SETUP TO CHECK ALL FILENAME SLOTS\r
+       ADDI    T3,26           ;IN DIRECTORY (22 FILE NAMES)\r
+       MOVE    T5,DIRST        ;LOC OF FIRST/NEXT FILE\r
+PICUP4:        ADDI    T5,1            ;\r
+       CAMLE   T5,T3           ;END OF FILE SLOTS?\r
+       JRST    CPOPJ1          ;END OF FILE NAMES\r
+       MOVEM   T5,DIRST        ;NEXT SLOT TO LOOK AT\r
+       MOVE    0,(T5)          ;GOT FILE NAME FROM DIRECT\r
+       JUMPE   0,PICUP4        ;IGNORE IF 0\r
+       MOVEM   0,ZRF\r
+       MOVE    0,26(T5)>       ;GET EXT ETC\r
+       HLLZM   0,ZRF+1\r
+       MOVE    0,PP\r
+       MOVEM   0,ZRF+3\r
+       POPJ    P,\r
+\r\f;READ DTA DIR. AND PREPARE T5 TO PICK UP FIRST ENTRY.\r
+\r
+DTADIR:        PUSHJ   P,DTCH2         ;READ DTA DIR INTO INPUT BUF\r
+DTADI1:        MOVEI   T3,DBUF         ;SET BLT FROM INBUF TO DBUF\r
+       HRL     T3,T5           ;FIRST DATA WORD OF DIRECTORY IN T5\r
+IFN WCH,<\r
+       MOVNS   T2\r
+       BLT     T3,DBUF+176(T2)\r
+       SETZM   DBUF+177(T2)\r
+       MOVEI   T5,DBUF-4>\r
+IFE WCH,<\r
+       BLT     T3,DBUF+176     ;MOVE FROM INBUF TO DBUF\r
+       MOVEI   T5,DBUF+123-1>  ;LOC OF FIRST FILE NAME\r
+       MOVEM   T5,DIRST        ;T5 POINTS TO FILNAME JUST HANDLED\r
+       MOVEM   T5,DIRST1       ;TO RESTORE DIRST\r
+       POPJ    P,              ;(IE NONE BUT NEXT WILL BE FIRST)\r
+\r
+\f\r
+;ROUTINE TO OUTPUT FILENAMES THAT WERE DELETED OR RENAMED\r
+;PRINT "FILES DELETED:" OR "FILES RENAMED:"\r
+;ALSO USED TO PRINT "NO FILE NAMED XXX.XXX"\r
+\r
+\r
+INFO:  MOVE    T1,TFO          ;SETUP TTY FOR OUTPUT\r
+       MOVE    T2,TFI          ;SAVE BUFFER LOCS\r
+       PUSHJ P,INICON          ;INIT TTY\r
+       HRROM   T2,TFI          ;SET BUFFER LOCS\r
+       HRROM   T1,TFO\r
+       OUTPUT CON,\r
+       TLZE    AUXFLG,INFOFL   ;ERROR PRINT ONLY?\r
+       JRST    ERR3AA          ;YES\r
+       TRNN    FLAG,DFLG       ;DELETE?\r
+       JRST    INFO1           ;NO, MUST BE RENAME\r
+       ERRPN2  </Files deleted:/>\r
+       JRST    INFO2\r
+INFO1: SETOM   RENSN           ;DON'T PRINT IT TWICE\r
+       ERRPN2  </Files renamed:/>      ;RENAME (/R)\r
+INFO2: MOVEI   CHR,CR          ;OUTPUT CR/LF\r
+       PUSHJ   P,PUTCON        ;ON TTY\r
+       MOVEI   CHR,LF\r
+       PUSHJ   P,PUTCON\r
+       OUTPUT CON,\r
+       POPJ    P,\r
+\r
+;**********************************************************************\r
+;PRINT FILENAME.EXT OR [P,P].UFD OF FILE DELETED\r
+\r
+INFO3: MOVEI   T3,ZRF          ;LOCATION OF FILENAME\r
+       PUSHJ   P,FN.EX\r
+       JRST    INFO2\r
+\f;/X OR /D. FIND OUT DETAILS OF FILE NAME AND\r
+;EXTENSION (0 FN.EX=*.*) AND ANY CHANGE IN\r
+;SOURCE DEV. SET BITS IN CALFLG.\r
+\r
+FNSET: TRZ     CALFLG,ALLCLF   ;CLEAR FLAGS ON ENTRY\r
+       TRO     CALFLG,FNEX\r
+       MOVSI   0,(SIXBIT /*/)  ;* TO AC0\r
+       CAME    0,FILNAM        ;FILNAM=* OR 0?\r
+       SKIPN   FILNAM\r
+       SKIP    1               ;FILENAME = * OR 0\r
+       TRO     CALFLG,MATFN    ;FILENAME MUST BE MATCHED\r
+       SKIPN   FILEX           ;EXT=0?\r
+       TRNN    AUXFLG, MTAIN+CDRIN+PPTIN+TTYIN ;YES\r
+       CAMN    0,FILEX         ;NO, EXT = *?\r
+       SKIP    1               ;YES\r
+       TRO     CALFLG,MATEX    ;FILE EXTENSION MUST BE MATCHED\r
+IFN FTDSK,<TRNN    AUXFLG,DSKIN\r
+       JRST    FNSET1\r
+       SKIPN   T2,PP\r
+       JRST    FNSET2          ;IF #P-P=0 IT IS COUNTED AS UNCHANGED\r
+       CAME    T2,FNPPN\r
+       TRO     CALFLG,NEWPP    ;CHANGE IN # P-P\r
+       JRST    FNSET1\r
+FNSET2:        MOVE    T2,FNPPN        ;IF P-P#=0, SET TO PREVIOUS VALUE\r
+       MOVEM   T2,PP>\r
+FNSET1:        MOVE    T2,DEVICE\r
+       CAME    T2,DEVA\r
+       TRO     CALFLG,NEWDEV   ;CHANGE IN SOURCE DEV.\r
+       MOVEM   T2,DEVA         ;SET DEVA=DEVICE\r
+       POPJ    P,\r
+\f;POPJ EXIT IF END OF COMMAND STRING, OTHERWISE RESET\r
+;POINTER TO START OF DIRECTORY, READING IN NEW DIR.\r
+;IF DEV OR #P-P CHANGED (EXIT CPOPJ1)\r
+;IF DIR. IS ON DSK RESET BY REINIT.\r
+\r
+LOOKA: SKIPE   T4,ESWTCH               ;MORE C.S.?\r
+       POPJ    P,                      ;NO\r
+       PUSHJ   P,DESCRP                ;YES, GET NEXT FN.EX FROM CS\r
+       PUSHJ   P,INLOOK                ;CHECK FOR MTA REQUESTS, MODE\r
+       PUSHJ   P,M4                    ;CHECK FOR /I,/B,/H\r
+       HRRZM    T4,ININI1              ;SET MODE\r
+       RELEAS  DIR,\r
+       TRNN    AUXFLG,MTAIN+CDRIN+PPTIN+TTYIN  ;NON-DIR DEVICE?\r
+       JRST    LOOKF\r
+\r
+       TRNE    CALFLG,MATEX!MATFN      ;YES, NO FN EX BUT *.* OR * ALLOWED\r
+       JRST    ERR6A\r
+\r
+LOOKF: TRNN    FLAG,DFLG               ;FOR DELETE, ONE SOURCE FILE\r
+       JRST    LOOKB                   ;...\r
+\r
+       TRNE    CALFLG,NEWDEV!NEWPP     ;ONLY IS PERMITTED\r
+       JRST    ERR5A\r
+\r
+LOOKB: TRNN    CALFLG,NEWDEV!NEWPP     ;PREPARE TO LOOK FOR NEW FILE\r
+       JRST    LOOKC                   ;NAME AT HEAD OF DIRECTORY\r
+\r
+       PUSHJ   P,ININIT                ;INIT INPUT FILE\r
+       TRNN    AUXFLG,DTAIN+DSKIN\r
+       JRST    CPOPJ1\r
+IFN FTDSK,<TRNN        AUXFLG,DTAIN            ;DTA INPUT?\r
+       JRST    LOOKD                   ;NO, MUST BE DSK>\r
+       PUSHJ   P,DTADIR                ;YES, READ IN DTA DIRECT\r
+\r
+LOOKC:\r
+IFN FTDSK,<TRNE    AUXFLG,DSKIN                ;DSK INPUT?\r
+       JRST    LOOKD                   ;YES>\r
+       MOVE    T5,DIRST1               ;NO, RESET DIRECTORY START\r
+       MOVEM   T5,DIRST\r
+       JRST    CPOPJ1\r
+\r
+IFN FTDSK,<\r
+LOOKD: PUSHJ   P,DSKDIR                ;GET USER'S FILE DIRECTORY\r
+       SETZM   UFDIN+2                 ;DSK DIR BUF EMPTY\r
+       JRST    CPOPJ1>\r
+\f;ROUTINE TO LIST DTA OR DSK DIRECTORIES\r
+\r
+\r
+DTPDIR:        ENTER   OUT,DTON        ;OUTPUT DEV,NROCT ENTRY\r
+       JRST    ERR4            ;DIRECTORY FULL\r
+IFN FTDSK,<TRNE    AUXFLG,FFLG ;/F? SHORT FORM?\r
+       SKIPE   DEVICE          ;INPUT DEVICE SPECIFIED?\r
+       JRST    PDIR1A          ;YES\r
+       MOVSI   0,(SIXBIT/DSK/)\r
+       DEVCHR\r
+       JUMPE   0,PDIR1A        ;NO DISK\r
+       HRRZI   0,(SIXBIT /DSK/);ASSUME DSK IF NO DEVICE GIVEN\r
+       HRLZM   0,DEVICE\r
+       TROA   AUXFLG,DSKIN     ;SET DSK INPUT\r
+PDIR1A:        TRNE    AUXFLG,DSKIN    ;DSK INPUT?\r
+       JRST    DSKLST          ;YES, GO AND TRY TO LIST DSK>\r
+       TRNN    AUXFLG,DTAIN    ;DECTAPE INPUT?\r
+       JRST    ERR5            ;NOT DSK OR DTA. ERROR\r
+\r
+;ROUTINE TO LIST DTA DIRECTORY. /L OR /F SWITCH\r
+\r
+DTALST:        PUSHJ   P,DTCHECK       ;CHECK FOR DTA INPUT-MUST BE DECTAPE AND\r
+                               ;GET DIRECTORY\r
+       PUSHJ   P,CRLF          ;PRINT NO. OF FREE BLOCKS LEFT\r
+       LDB     T1,[POINT 5,16(T5),14]\r
+       CAIE    T1,36           ; SKIP DIR HEADER IF\r
+       JRST    PDIR1B          ; DECTAPE HAS NO PROTECTION\r
+       LSTLIN  HEDL1           ; PRINT HEADER\r
+       MOVE    T2,DTAID\r
+       JUMPE   T2,DTALS4\r
+       MOVEI   T2,5            ; CHARACTER COUNT\r
+       MOVE    0,[POINT 6,DTAID]\r
+       ILDB    CHR,0           ; GET CLASSIFICATION\r
+       CAIE    CHR,23          ; STD (I.E.=3) ?\r
+       AOJA    T2,DTALS3\r
+DTALS1:        ILDB    CHR,0           ; GET NEXT DIGIT\r
+       ADDI    CHR,40          ; CONVERT TO ASCII\r
+       CAIN    CHR,"0"         ; SUPPRESS LEADING ZEROS\r
+       SOJG    T2,DTALS1\r
+       PUSHJ   P,PUT\r
+DTALS2:        SOJLE   T2,DTALS4\r
+       ILDB    CHR,0\r
+DTALS3:        ADDI    CHR,40\r
+       PUSHJ   P,PUT\r
+       JRST    DTALS2\r
+DTALS4:        MOVEI   CHR,"["\r
+       PUSHJ   P,PUT\r
+       HLRZ    DOUT,DIRPPN\r
+       PUSHJ   P,OUTDEC\r
+       MOVEI   CHR,","\r
+       PUSHJ   P,PUT\r
+       HRRZ    DOUT,DIRPPN\r
+       PUSHJ   P,OUTDEC\r
+       MOVEI   CHR,"]"\r
+       PUSHJ   P,PUT\r
+       PUSHJ   P,CRLF\r
+PDIR1B:\r
+\r
+IFN WCH,<\r
+       MOVE    T1,IBF\r
+       HLRZ    DOUT,1(T1)      ;GET FREE BLOCK POINTER\r
+       MOVNS   DOUT\r
+       ADDI    DOUT,1101       ;GET NO. OF FREE BLOCKS LESS FREE BLOCK NO.\r
+       PUSHJ   P,OUTDEC        ;PRINT RESULT>\r
+IFE WCH,<\r
+       SETZ   DOUT,            ;CLEAR NO. FREE BLOCKS\r
+       MOVEI   T4,1102         ;OCTAL NO. OF BLOCKS ON DECTAPE\r
+       MOVSI   T1,(POINT 5,0)  ;5 BIT BYTES\r
+       HRRZ    T5,IBF          ;CURRENT INPUT BUFFER\r
+       ADDI    T1,1(T5)        ;POINTER TO 1ST DATA WORD IN DIRECT\r
+\r\r
+PDIR8: SOJLE   T4,PDIR1        ;ALL THROUGH?\r
+       ILDB    T3,T1           ;CALCULATE NO. OF FREE BLOCKS\r
+       JUMPN   T3,PDIR8\r
+\r
+                               ;THIS BLOCK FULL\r
+       AOJA    DOUT,PDIR8      ;COUNT NO. WITH ZERO IN\r
+PDIR1: PUSHJ   P,OUTDEC        ;PRINT RESULT>\r
+       MOVE    0,[POINT 6,PDIR7]\r
+       MOVEI   T2,^D18         ;SET LOOP TO DEPOSIT 18 CHARS\r
+       PUSHJ   P,PDIR2         ;PRINT "FREE BLOCKS LEFT" MESSAGE\r
+       PUSHJ   P,CRLF          ;CARRIAGE RET, LINEFEED\r
+       PUSHJ   P,DTCH1         ;FIX T5, TO POINT AT BEGIN OF DIR\r
+\f;LOOP TO EXAMINE FILE NAMES DTA DIRECTORY\r
+PDIR4:\r
+IFE WCH,<\r
+       SKIPN   123(T5)         ;NULL (=0) FILE NAME?\r
+       JRST    PDIR6           ;YES SO LOOK FOR ANOTHER>\r
+IFN WCH,<\r
+       SKIPN   (T5)            ;NULL (=0) FILE NAME?\r
+       JRST    MAIN1           ;YES, SO END OF DIR.>\r
+       MOVEI   T2,6            ;TRANSMIT UP TO 6 CHARACTERS\r
+       MOVSI   0,440600+T5     ;SET UP SOURCE BYTE POINTER\r
+IFE WCH,<\r
+       HRRI    0,123>          ;SET TO PICK UP FILE NAME\r
+       SETZ   T4,\r
+;FOLLOWING CODE TO OUTPUT PROJ, PROG FILENAME\r
+;*****************************************************************\r
+IFE WCH,<\r
+       HLRZ    CHR,151(T5)     ;GET EXT\r
+       CAIE    CHR,(SIXBIT/UFD/)       ;UFD?\r
+       JRST    PDIR4A          ;NO\r
+\r
+       HLRZ    DOUT,123(T5)    ;PROJ NO.\r
+       MOVEI   T2,PUT\r
+       PUSHJ   P,OUTDC1\r
+\r
+       MOVEI   CHR,COMMA       ;COMMA\r
+       PUSHJ   P,PUT\r
+\r
+       HRRZ    DOUT,123(T5)    ;PROG NO.\r
+       PUSHJ   P,OUTDC1\r
+       JRST    PDIR4B\r
+       >\r
+;*********************************************************************\r
+PDIR4A:        PUSHJ   P,PDIR2         ;OUTPUT 6-BIT DATA AND INCR DIRECTORY PTR\r
+IFE WCH,<\r
+PDIR4B:        HLLZ    CHR,151(T5)>    ;PICK UP EXTENSION\r
+IFN WCH,<\r
+       HLLZ    CHR,(T5)>\r
+       MOVSI   0,440600+T5     ;SET BYTE POINTER\r
+IFE WCH,<\r
+       HRRI    0,151>          ;PICK UP EXTENSION\r
+       MOVEI   T2,4            ;PRINT UP TO 4 CHRS. (PERIOD+3*EXT)\r
+       JUMPN   CHR,.+3         ;EXTENSION NULL?\r
+       PUSHJ   P,PDIR2A+1      ;YES\r
+       SKIP    2               ;NO\r
+       MOVEI   CHR,PERIOD-40   ;NO, SO PRINT A PERIOD\r
+PDIR3: PUSHJ   P,PDIR2A        ;OUTPT 6 BIT OR INCR T5\r
+IFE WCH,<\r
+       MOVEI   CHR,SPACE       ;OUTPUT 2 SPACES\r
+       PUSHJ   P,PUT\r
+       PUSHJ   P,PUT\r
+       TRNE AUXFLG,FFLG        ;SHORT FORM DIRECT ?\r
+       JRST PDIR3A             ;YES VJC 4/16/69\r
+\r
+       SETZ    DOUT,           ;CALCULATE NBR OF BLOCKS PER FILE\r
+       MOVEI   T4,1101\r
+       MOVSI   0,(POINT 5,0)\r
+       HRRZ    T2,IBF\r
+       ADDI    0,1(T2)\r
+       HRRZ    T7,T5\r
+       SUBI    T7,(T2)\r
+       ILDB    T6,0            ;LOAD CONTENTS OF S.A.T. BLOCK\r
+       CAMN    T6,T7           ;COMPARE WITH FILE SLOT NBR\r
+       ADDI    DOUT,1          ;ADD 1 TO COUNT IF EQUAL\r
+       SOJG    T4,.-3\r
+       PUSHJ   P,OUTDEC        ;OUTPUT NBR OF BLOCKS PER FILE\r
+       MOVEI   CHR,TAB\r
+       >\r
+IFN WCH,<\r
+       AOJ     T5,             ;STEP DIR. POINTER\r
+       MOVEI   CHR,11\r
+       PUSHJ   P,PUT           ;OUTPUT A TAB\r
+       CAIG    T4,7>\r
+       PUSHJ   P,PUT\r
+       LDB     T1,[POINT 5,DBUF+16,14]\r
+       CAIE    T1,36\r
+       JRST    PDIR3B\r
+       HRRZ    T1,IBF\r
+       SUBM    T5,T1\r
+       LDB     0,[POINT 9,DBUF+200(T1),8]\r
+       PUSHJ   P,PROTO         ; OUTPUT PROTECTION\r
+PDIR3B:\r
+IFE WCH,<\r
+       MOVE    0,151(T5)       ;GET ENTRY DATE>\r
+IFN WCH,<\r
+       MOVE    0,-1(T5)        ;GET ENTRY DATE>\r
+       ANDI    0,7777          ;LEFT BITS ARE IRRELEVENT\r
+       PUSHJ   P,DATOUT        ;OUTPUT THE DATE\r
+PDIR3A:        PUSHJ   P,CRLF          ;GIVE CR,LF 4/16/69\r
+IFN WCH,<\r
+       AOJA    T5,PDIR4        ;PROCESS NEXT ENTRY>\r
+IFE WCH,<\r
+PDIR6: HRRZ    T1,IBF          ;PROCESS NEXT ENTRY\r
+       SUBM    T5,T1\r
+       CAIL    T1,26           ;FILE "NUMBER" OK?\r
+       JRST    MAIN1           ;NO, END OF ENTRIES\r
+       AOJA    T5,PDIR4        ;END OF LOOP, GET NEXT FILENAME>\r
+\f\r
+IFN FTDSK,<\r
+CLRF:  SOS     LIN>\r
+CRLF:  MOVEI   CHR,CR          ;OUTPUT CAR. RET.\r
+       PUSHJ   P,PUT\r
+       MOVEI   CHR,LF          ;LINE FEED\r
+       JRST    PUT\r
+\r
+PDIR2: ILDB    CHR,0           ;ROUTINE TO OUTPUT 6-BIT DATA\r
+       TRNN    0,-1            ;PRINT SPACES WHEN PRINTING THE FREE BLOCKS\r
+PDIR2A:        JUMPE   CHR,PDIR21      ;TERMINATE ON SPACE\r
+       ADDI    CHR,40          ;CONVERT TO 7 BIT\r
+       PUSHJ   P,PUT           ;OUTPUT CHARACTER\r
+       ADDI    T4,1\r
+       SOJG    T2,PDIR2        ;COUNT DOWN MAX-CHARS COUNTER\r
+IFN WCH,<\r
+PDIR21:        AOJA    T5,CPOPJ        ;STEP AND CONTINUE>\r
+IFE WCH,<\r
+PDIR21:        POPJ    P,              ;CONTINUE>\r
+\fPDIR7:        SIXBIT /. FREE BLOCKS LEFT/\r
+;OUTPUT THE DATE FOUND IN AC 0.\r
+\r
+DATOUT:        MOVEI T2,PUT            ;PUT CHAR IN OUT\r
+       IDIVI 0,^D31\r
+       MOVEI T3,1(1)\r
+       IDIVI 0,^D12\r
+       MOVE DOUT,T3            ;DOUT=DAY\r
+       PUSHJ P,OUTDC1          ;PRINT DAY\r
+       PUSHJ P,DATO2           ;PRINT -MONTH-\r
+       MOVE DOUT,0\r
+       ADDI DOUT,^D64          ;DOUT=YEAR\r
+OUTDC1:        SKIPA DOUT+1,TWL        ;RADIX 10\r
+;*******************************************************************\r
+;ROUTINE TO CONVERT OCTAL TO ASCII\r
+;DOUT CONTAINS OCTAL VALUE ON ENTRY\r
+\r
+OUTOCT:        MOVEI DOUT+1,10         ;RADIX 8\r
+PRNUMA:        HRRZM DOUT+1,T4\r
+       MOVEI CHR,"0"\r
+       CAMGE DOUT,DOUT+1       ;PRINT AT LEAST 2 DIGITS\r
+       PUSHJ P,(T2)            ;PUT OR PUTCON\r
+PRN:   IDIVI DOUT,(T4)         ;DIVIDE BY RADIX\r
+       HRLM DOUT+1,(P)         ;SAVE NO. FOR PRINT\r
+       JUMPE DOUT,.+2          ;ENUF DIGITS?\r
+       PUSHJ P,PRN             ;NO, GET MORE\r
+       HLRZ CHR,(P)            ;YES, GET LEFTMOST\r
+       ADDI CHR,60             ;CONVERT TO ASCII\r
+       JRST (T2)               ;PUT OR PUTCON\r
+\r
+OUTDE4:        MOVEI   CHR," "         ;SET UP FOR SPACES\r
+       CAIL    DOUT,^D1000     ;PRINT 4 CHAR.\r
+       JRST    OUTDEC          ;AT LEAST 4 SEEN\r
+       PUSHJ   P,PUT           ;OUTPUT ONE SPACE\r
+       CAIGE   DOUT,^D100      ;3 CHAR.?\r
+       PUSHJ   P,PUT           ;NO,SO ANOTHER SPACE\r
+OUTDEC:        MOVEI T2,PUT            ;PUT CHAR IN OUT BUF\r
+       JRST OUTDC1\r
+\r
+DATO2: MOVEI T4,5\r
+       MOVE T6,MNPT\r
+       ADDM 1,T6\r
+       ILDB CHR,T6\r
+       PUSHJ P,(T2)            ;PUT OR PUTCON\r
+       SOJG T4,.-2\r
+       POPJ P,\r
+\f;READ DTA DIRECTORY AND INITIALIZE DIRST AND DIRST1\r
+\r
+DTCHECK:PUSHJ P,ININIT ;INITIALIZE INPUT DEVICE\r
+DTCH2:\r
+IFN WCH,<\r
+       USETI IN,1      ;GET DTA DIR>\r
+IFE WCH,<\r
+       USETI IN,144    ;GET DTA DIR>\r
+       PUSHJ P,INP     ;INPUT DIRECTORY\r
+       CLOSE   IN,\r
+       PUSHJ   P,GETPPN        ; GET PPN OF DECTAPE\r
+       PUSHJ   P,ININIT        ; REINITIALIZE INPUT DEVICE\r
+IFN WCH,<\r
+DTCH1: MOVE T5,IBF\r
+       HRRZ T2,1(T5)\r
+       ADDI T5,1(T2)   ;GET ADD. OF FIRST ENTRY\r
+       MOVE 0,T5\r
+       SUBI 0,4>\r
+IFE WCH,<\r
+DTCH1: HRRZ T5,IBF     ;LOC. OF CURRENT BUF, 2ND WORD\r
+       MOVEI 0,123(T5) ;83 WORDS,7, FIVE-BIT BYTES\r
+       ADDI T5,1       ;COMPUTE ADD. OF DIR. START>\r
+       MOVEM 0,DIRST   ;FIRST FILE NAME LOC\r
+       MOVEM 0,DIRST1  ;TO RESTORE DIRST\r
+       POPJ P,\r
+\r
+;ROUTINE TO CHECK BRACKET COUNT/MATCHING\r
+\r
+OUTCHK:        SETZB T3,TLBRKT ;COUNT <> ON THIS LINE, CLEAR THINGS\r
+       MOVE T1,OPTRA   ;BYTE POINTER FOR READING OUT THE LINE\r
+OUTCH2:        CAMN T1,OPTR    ;LINE DONE?\r
+       JRST OUTCH3     ;YES, SO DECIDE WHETHER TO PRINT\r
+       ILDB T2,T1      ;GET CHAR\r
+       CAIN T2,"<"     ;LEFT BRACKET?\r
+       AOS TLBRKT      ;YES, SO INCREMENT BRACKET COUNT\r
+       CAIN T2,">"     ;RIGHT BRACKET?\r
+       SOSL TLBRKT     ;YES, SUBTRACT BRACKET COUNT, GONE NEG?\r
+       JRST OUTCH2     ;NO, SO DO NEXT CHAR\r
+       AOJA T3,OUTCH2  ;YES, SO FLAG COUNT GONE NEG.\r
+\r
+OUTCH3:        SKIPN T2,TLBRKT ;BRACKET COUNT OFF THIS LINE?\r
+       JUMPE T3,CPOPJ  ;NO, WENT NEG.?\r
+       ADDM T2,TOTBRK  ;YES, SO ADD INTO CUMULATIVE COUNT\r
+       MOVEI CHR,"-"   ;PRINT MINUS FOR NEG TOTAL\r
+       SKIPGE TOTBRK\r
+       PUSHJ P,PUT\r
+       MOVM DOUT,TOTBRK;PRINT MAGNITUDE OF TOTAL\r
+       PUSHJ P,OUTDEC\r
+       MOVEI CHR,TAB   ;FOLLOW WITH TAB\r
+       PUSHJ P,PUT\r
+       JRST OUTCH1     ;AND PRINT THE LINE\r
+\r
+GETPPN:        MOVEI   T5,117  ; NON STD DUMP MODE\r
+       MOVEM   T5,DTBLK\r
+       MOVE    T5,DEVICE       ; GET INPUT DEVICE\r
+       MOVEM   T5,DTDEV\r
+       OPEN    DTDIR,DTBLK\r
+       POPJ    P,\r
+       USETI   DTDIR,144       ; READ BLOCK 100 AND\r
+       MOVE    T5,[IOWD 227,DBUF]\r
+       MOVEI   T6,0\r
+       INPUT   DTDIR,T5        ; WORD 1 OF BLOCK 101.\r
+       MOVE    T5,177+DBUF\r
+       MOVEM   T5,DTAID\r
+       MOVE    T5,200+DBUF\r
+       MOVEM   T5,DIRPPN       ; SAVE PPN FOR LISTING\r
+       RELEASE DTDIR,\r
+       POPJ    P,\r
+\fFILTYP:       TDNE FLAG,[XWD IFLG+IBFLG,BMOD]\r
+       POPJ P,                 ;BIN MODE DON'T CARE IF DMP, ETC\r
+       TRNN    AUXFLG,DSKIN!DTAIN!MTAIN        ;BINARY INPUT POSSIBLE?\r
+       JRST    FIL11           ;NO\r
+       TRNN    AUXFLG,DSKOUT!DTAOUT!MTAOUT     ;BINARY OUTPUT?\r
+       JRST    FIL11           ;NO\r
+       TDNN    FLAG,[XWD PFLG,LINE!TBMOD!NSMOD!SQMOD!SPMOD]\r
+       TLNE    AUXFLG,CDRFLG   ;/E FROM DSK IS NOT BINARY\r
+       JRST    FIL11           ;SO TURN OFF SBIN\r
+       JRST    FIL3            ;FORCE BINARY MODE\r
+FIL11: TLZ AUXFLG,SBIN         ;IS\r
+       HLRZ 0,ZRF+1            ; INPUT EXTENSION\r
+       CAIE 0,(SIXBIT /DMP/)   ;DMP?\r
+IFE DISK30,<CAIN 0,(SIXBIT /SAV/)      ;SAV?>\r
+IFN DISK30,<CAIN 0,(SIXBIT/SVE/)>\r
+       JRST FIL3               ;YES\r
+       CAIE 0,(SIXBIT /CHN/)   ;CHN?\r
+       CAIN 0,(SIXBIT /REL/)   ;REL?\r
+       JRST FIL3               ;YES\r
+       CAIE    0,(SIXBIT /SHR/)\r
+       CAIN    0,(SIXBIT /HGH/)\r
+       JRST    FIL3\r
+       CAIE    0,'BIN' ; GENERAL BINARY EXTENSION?\r
+       CAIN    0,(SIXBIT /LOW/)\r
+       JRST    FIL3\r
+       TRNN FLAG,XFLG          ;DO NORMAL PROCESSING ON ALL\r
+       JRST FIL2               ;BUT DMP ETC FILES IF NOT /X\r
+       TLNN AUXFLG,CDRFLG\r
+       TDNE FLAG,[XWD PFLG,LINE+TBMOD+NSMOD+SQMOD+SPMOD]\r
+       POPJ P,                 ;NO SIGNIFICANT SWITCHES\r
+FIL1:  HRLZI 0,004400          ;FORCE 36-BIT.\r
+       HLLM 0,IBF+1            ;INPUT BYTE POINTER\r
+       HLLM 0,OBF+1            ;OUTPUT BYTE POINTER\r
+       POPJ P,                 ;CHANGE TO FORCED BINARY\r
+FIL3:  TLO AUXFLG,SBIN         ;INPUT EXT = DMP,SAV,CHN,REL\r
+       TRNE FLAG,XFLG\r
+       JRST FIL1\r
+       TLON AUXFLG,FRSTIN      ;NOT /X TEST FURTHER\r
+       JRST FIL4               ;IS THIS FIRST SOURCE, YES\r
+       TLOE AUXFLG,RSDCFL      ;NOT FIRST, WAS PREVIOS FILE RSCD?\r
+       JRST    FIL5            ;YES, NO CHANGE UNLESS DEVICE HAS CHANGED\r
+       OUTPUT OUT,             ;NO CHANGE TO 36-BIT\r
+       MOVE 0,OBF+2            ;CURRENTLY 7-BIT I/O, MUST CHANGE TO 36-BIT\r
+                               ;OUTPUT CURRENT BUFFER\r
+       IDIVI 0,5               ;DIVIDE OBF+2 BY 5 (CHAR. COUNT)\r
+       MOVEM 0,OBF+2\r
+       JRST FIL1\r
+FIL2:  TLOE AUXFLG,FRSTIN      ;NOT A RSCD FILE\r
+       TLZN AUXFLG,RSDCFL      ;NO, WAS PREV. FILE RSCD?\r
+       POPJ P,                 ;NO, NO CHANGE\r
+       OUTPUT OUT,             ;YES, CHANGE 36-BIT TO 7-BIT\r
+       MOVEI 0,5\r
+       IMULM 0,OBF+2\r
+       MOVE 0,SVIBF            ;RESTORE 7-BIT\r
+       HLLM 0,IBF+1\r
+       MOVE 0,SVOBF\r
+       HLLM 0,OBF+1\r
+       POPJ P,\r
+FIL4:  TLO AUXFLG,RSDCFL       ;SET REL,SAV,DMP,CHN FLAG\r
+       JRST FIL1\r
+FIL5:  HRLZI 0,004400          ;NEW DEVICE, SET 36-BIT INPUT\r
+       TRNE CALFLG,NEWDEV      ;SOURCE DEVICE CHANGED\r
+       HLLM 0,IBF+1\r
+       POPJ P,                 ;OUTPUT ALREADY SET\r
+\r
+\r
+\fSUBTTL BLOCK 0 CODE\r
+\r
+IFE BLOC0,<\r
+IFE WCH,<;THIS CODE COPIES BLOCK 0,1,2 ONLY. I/O MUST BE DECTAPE.>\r
+IFN WCH,<;THIS CODE COPIES BLOCK 0 ONLY. I/O MUST BE DECTAPE.>\r
+;MODE SELECTED MUST BE BIT 100, 20 AND NOT DUMP MODE (134).\r
+\r
+BLOCK0:        TRC AUXFLG,DTAIN+DTAOUT\r
+       TRCE AUXFLG,DTAIN+DTAOUT;FORCE DTA I/O\r
+       JRST ERR7A\r
+       MOVEI 0,134\r
+       MOVEM 0,OMOD\r
+       MOVEM 0,ININI1\r
+       MOVSI 0,OBF\r
+       MOVEM 0,ODEV+1\r
+       MOVEI 0,IBF\r
+       MOVEM 0,DEVICE+1\r
+       OPEN OUT,OMOD\r
+       JRST ERR1               ;UNAVAILABLE\r
+       OUTBUF  OUT,1\r
+       OUTPUT  OUT,\r
+       OPEN IN,ININI1\r
+       JRST ERR1A\r
+       INBUF IN,1\r
+       SETZB T1,BL0CNT\r
+BL4:   USETI IN,(T1)\r
+       INPUT IN,               ;READ\r
+       GETSTS IN,IOS\r
+       TRNN IOS,740000         ;ANY ERRORS\r
+       JRST BL1                ;NO\r
+       JSP T5,INICN2\r
+       PUSHJ P,QUEST\r
+       ERRPN2 </Input device />\r
+       PUSHJ P,P6BIT\r
+             DEVICE\r
+       ERRPN2 </: />\r
+       MOVE T2,AUXFLG          ;DECTAPE FOR ERROR MESSAGE\r
+       ANDI T2,DTAIN\r
+       PUSHJ P,IOERR           ;PRINT ERROR TYPE\r
+BL1:   HRLZ T5,IBF+1\r
+       HRR T5,OBF+1\r
+       MOVEI T4,177(T5)\r
+       BLT T5,(T4)             ;SHIFT DATA TO OUTPUT BUFFER\r
+       USETO   OUT,@BL0CNT\r
+       OUTPUT OUT,             ;WRITE BLOCK\r
+       PUSHJ P, OUTP1          ;CHECK ERRORS\r
+IFE WCH,<\r
+       AOS T1,BL0CNT\r
+       CAIGE T1,3\r
+       JRST BL4>\r
+BL3:   RELEASE OUT,            ;IF ANY, PDL IS RESET\r
+       JRST PIP2>\r
+\r
+IFN BLOC0,<\r
+BLOCK0:        ERRPNT  </?No block 0 copy!/>\r
+               >\r
+\fSUBTTL        MAGTAPE ROUTINES\r
+\r
+;TEST TO SEE IF MORE THAN ONE OF THE LOWEST EIGHT MTA FLAGS\r
+;HAVE BEEN SELECTED. IF SO ERROR. OTHERWISE, IMPLEMENT\r
+;REQUEST.  T1, T3, T6 SET AT ENTRY BY INLOOK OR OUTLOOK\r
+;TO EQUAL AUX/AUXOUT, AB/ABOUT,INIMTA/INOMTA\r
+\r
+MT1:   HRRZ T2,T1              ;T1 CONTAINS REQUEST\r
+       ANDI T2,-1(T2)          ;KNOCK OFF RIGHT MOST 1\r
+       TRNE T2,377\r
+       JRST MTR1               ;PRINT ERROR MESSAGE\r
+\r
+       TRNN T1,MTAFLG+MTBFLG+MTWFLG+MTTFLG+MTFFLG+MTUFLG+MTDFLG+MTPFLG\r
+       JRST MTC1\r
+       PUSHJ P,(T6)            ;THERE IS A  REQUEST\r
+                               ;GO TO INIMTA/INOMTA\r
+\r
+;PERFORM POSITIONING REQUESTS\r
+       TRNE T1,MTUFLG\r
+       JRST UNLOAD\r
+\r
+       TRNE T1,MTWFLG\r
+       JRST REWIND\r
+\r
+       TRNE T1,MTFFLG\r
+       JRST MARKEF\r
+\r
+       TRNE T1,MTTFLG\r
+       JRST SLEOT\r
+\r
+       TRNE T1,MTBFLG+MTPFLG   ;MULTIPLE REQUESTS ALLOWED\r
+       JRST BSPF\r
+\r
+       TRNE T1,MTAFLG+MTDFLG   ;MULTIPLE REQUESTS ALLOWED\r
+       JRST ADVF\r
+\r
+\f;T1=AUX,AUXOUT. T3=AB,ABOUT.  T6=INIMTA,INOMTA.\r
+\r
+MTCONT:        RELEAS TAPE,\r
+       TRNN T1,MTUFLG          ;UNLOAD?\r
+       TRNE CALFLG,NSWTCH      ;IS THERE AN INPUT DEVICE?\r
+       CAIE T6,INOMTA          ;OUTPUT TAPE?\r
+       POPJ P,                 ;NO\r
+       JRST PIP2               ;YES, END OF COMMAND\r
+\r
+;ROUTINE TO CHECK AND SET DENSITY FOR NEW DEVICE\r
+\r
+MTC1:  MOVE T4,T1              ;GET AUX/AUXOUT\r
+       ANDI T4,MT2FLG+MT5FLG+MT8FLG\r
+       ANDI T4,-1(T4)          ;REMOVE RIGHT MOST 1\r
+       JUMPN T4,MTR1           ;MORE THAN 1 REQ, ERROR\r
+\r
+       MOVEI T4,1              ;ASCII LINE STANDARD MODE\r
+\r
+       TRNE T1,MT2FLG\r
+       TRO T4,DENS2            ;SET 200 BPI\r
+\r
+       TRNE T1,MT5FLG\r
+       TRO T4,DENS5            ;SET 556 BPI\r
+\r
+       TRNE T1,MT8FLG\r
+       TRO T4,DENS8            ;SET 800 BPI\r
+\r
+       TRNE T1,MTEFLG\r
+       TRO T4,PARE             ;EVEN PARITY\r
+\r
+       POPJ P,\r
+\r
+\f;REWIND AND UNLOAD\r
+\r
+UNLOAD:        MTAPE TAPE,11\r
+       JRST MTCONT\r
+\r
+;REWIND ONLY\r
+\r
+REWIND: MTAPE TAPE,1\r
+MTWAIT:        WAIT TAPE,\r
+       JRST MTCONT\r
+\r
+\r
+\r
+\r
+;MARK END OF FILE\r
+\r
+MARKEF:        MOVE T5,MTANAM\r
+       EXCH T5,ODEV\r
+       MTAPE TAPE,3\r
+       GETSTS TAPE,IOS\r
+       PUSHJ P,OUTP3\r
+       SETSTS TAPE,(IOS)\r
+       MOVEM T5,ODEV\r
+       JRST MTCONT\r
+\r
+\r
+\r
+\r
+;SKIP TO LOGICAL END OF TAPE.\r
+\r
+SLEOT: MTAPE TAPE,10\r
+       JRST MTWAIT\r
+\f;BACKSPACE MTA 1 FILE, T3=AB OR ABOUT\r
+;AB/ABOUT = INPUT/OUTPUT DEVICE\r
+\r
+BSPF:  HRRZ T3,T3      ;T3=NO. OF FILES/RECORDS TO BACK\r
+BSPF2: WAIT TAPE,      ;WAIT\r
+       GETSTS TAPE,IOS\r
+       TRNN IOS,LDP    ;AT LOAD POINT?\r
+       JRST BSPF3      ;NO LDP\r
+       ERRPNT </?Load point before end of (MB) or (MP) request!/>\r
+BSPF3: MOVEI T5,7      ;BSPR\r
+       TRNN T1,MTPFLG  ;BSPR?\r
+       MOVEI T5,17     ;BSPF\r
+       MTAPE TAPE,(T5) ;BACKSPACE FILE/RECORD\r
+       SOJGE T3,BSPF2  ;MORE FILES/RECORDS TO BSP?\r
+                       ;NO, END OF LOOP\r
+       WAIT TAPE,\r
+       GETSTS TAPE,IOS\r
+       TRNN T1,MTBFLG  ;BACKSPACE FILE?\r
+       JRST MTCONT     ;NO\r
+       TRNN IOS,LDP    ;IF AT LOAD POINT\r
+       MTAPE TAPE,16   ;(MOVE FWD. OVER EOF)\r
+       JRST MTCONT     ;DON'T SKIP A RECORD\r
+\r
+\r
+\r
+;ADVANCE MTA 1 FILE, T3=AB OR ABOUT\r
+;AB/ABOUT = INPUT/OUTPUT DEVICE\r
+\r
+ADVF:  HLRZ T3,T3      ;T3=NO. FILES (OR REC) TO ADVANCE\r
+ADVF2: MOVEI T5,6      ;ADVR\r
+       TRNN T1,MTDFLG  ;ADVR ?\r
+       MOVEI T5,16     ;ADVF\r
+       MTAPE TAPE,(T5) ;ADVANCE FILE/RECORD\r
+       SOJG T3,ADVF2   ;MORE FILES/RECORDS TO ADV?\r
+                       ;NO, END OF LOOP\r
+       WAIT TAPE,      ;WAIT...\r
+       GETSTS TAPE,IOS\r
+       TRZE IOS,EOFBIT\r
+       SETSTS TAPE,(IOS)       ;END OF FILE\r
+       JRST MTCONT\r
+\f;ROUTINE TO INITIALIZE MAGTAPE FOR INPUT OR OUTPUT\r
+\r
+INOMTA:        SKIPA T2,ODEV   ;INIT OUTPUT DEVICE\r
+INIMTA:        MOVE T2,DEVICE  ;INIT INPUT DEVICE\r
+       SETZM MTANAM+1\r
+       MOVEM T2,MTANAM\r
+       TRNN CALFLG,NEWDEV\r
+       JRST INMTA      ;SAME DEVICE\r
+       PUSHJ P,MTC1    ;NEW DEVICE\r
+       HRRZM   T4,INMTA1       ;SET MODE,DENSITY,PARITY\r
+\r
+INMTA: OPEN TAPE,INMTA1\r
+       JRST ERR1B\r
+       POPJ P,\r
+\r
+;ROUTINE TO PRINT ERROR MSG IF MORE THAN 1/8 FLAGS SET\r
+\r
+MTR1:  MOVE T4,DEVICE  ;TENTATIVELY SET I/DEV\r\r
+       CAIE T6,INIMTA  ;INPUT DEVICE?\r
+       MOVE T4,ODEV    ;NO, SET O/DEV\r
+       ERRPNT </?Too many requests for />\r
+       PUSHJ P,P6BIT\r
+               T4\r
+       JRST    PIP2\r
+\f      SUBTTL  CONSTANTS/STORAGE/VARIABLES\r
+\r
+;CONSTANTS\r
+\r
+IFE WCH,<\r
+OKBD:  POINT 6,DTON+2,23       ;FOR NO. 1K BLOCKS\r
+OKB:   POINT 6,ZRF+2,23>\r
+DATE:  POINT 12,ZRF+2,35\r
+DATED: POINT 12,DTON+2,35      ;CREATION DATE /X\r
+ZRO:   ASCII /00000/\r
+OPTMAX:        POINT 7,LBUFE-1,34\r
+OPTRA: XWD 700,LBUF-1          ;INITIAL POINTER TO LINE BUFFER\r
+K1:    432150643240            ;MAGIC ASCII INCREMENT BY 10\r
+K3:    375767737576            ;CHARACTER MASK 077\r
+K4:    432150643216            ;MAGIC ASCII INCREMENT BY 1\r
+QPIP:  SIXBIT /QPIP/           ;DATA FOR Q SWITCH\r
+STAR:  SIXBIT /*/              ;LOOK FOR *.* FILNAM.EXT\r
+TWL:   OCT 12\r
+PP11:  XWD 1,1\r
+PP13:  XWD 1,3                 ; SANDERS SYS\r
+UPROJ: EXP     ^D101   ; SANDERS UNIVERSAL PROJECT\r
+IFN FTDSK,<\r
+PRPTL: POINT 9,PROTS,8         ;PROTECTION FOR RENAME\r
+PRPTD: POINT 9,DTON+2,8\r
+PRNM:  POINT 9,ZRF+2,8         ;PROT FOR /R\r
+TIME:  POINT 11,ZRF+2,23       ;CREATE TIME /X\r
+TIMED: POINT 11,DTON+2,23      ;DEPOSIT CREATE TIME>\r
+\r
+\r
+\r
+\f;PROGRAM STORAGE AREA\r
+\r
+IFE BLOC0,<\r
+BL0CNT:        BLOCK   1               ;COUNT>\r
+DTAID: BLOCK 1 ; STORE DTA SERIAL NUMBER\r
+DIRPPN:        BLOCK 1         ; STORE OWNERSHIP\r
+SVIBF: BLOCK   1       ;SAVE INIT MODE (INPUT)\r
+SVOBF: BLOCK   1       ;SAVE INIT MODE (OUTPUT)\r
+IBF:   BLOCK   3       ;INPUT BUFFER HEADER\r
+OBF:   BLOCK   3       ;OUTPUT BUFFER HEADER\r
+OBI:   BLOCK   3       ;OUTPUT BUFFER INPUT HEADER FOR DSK /Z\r
+TFI:   BLOCK   3       ;CONSOLE INPUT HEADER\r
+TFO:   BLOCK   3       ;CONSOLE OUTPUT HEADER\r
+SAVAC: BLOCK   5       ;SAVE SOME ACS\r
+NAMTAB:        BLOCK   24      ;FOR (XD) ON DSK OR RENAME\r
+IFN FTDSK,<\r
+LOCNAM:        BLOCK   1       ;POINTER FOR NAMTAB>\r
+DIRST: BLOCK   1       ;LOC. OF LAST DIR. FILE NAME REFERENCED\r
+DIRST1:        BLOCK   1       ;SAVE INITIAL DIRST\r
+SQNUM: BLOCK   1       ;CURRENT SEQUENCE NUMBER\r
+DTJBFF:        BLOCK   1       ;VALUE OF JOBFF AFTER CONSOLE I/O BUFFERS\r
+SVJBFF:        BLOCK   1       ;INITIAL VALUE OF JOBFF\r
+SVJBF1:        BLOCK   1       ;VALUE OF JOBFF AFTER OUTBUF UUO\r
+OPTR:  BLOCK   1       ;CURRENT POINTER FOR LINE PRESCAN\r
+DTONSV:        BLOCK   2       ;OUTPUT DIRECTORY ENTRY COPY\r
+SVPTR1:        BLOCK   1       ;POINTER TO LAST PRINTING CHARACTER\r
+SVPTR2:        BLOCK   1       ;POINTER TO LAST GENERATED TAB\r
+TLBRKT:        BLOCK   1       ;TOTAL PARENS ON THIS LINE\r
+TOTBRK:        BLOCK   1       ;TOTAL CUMULATIVE PARENS\r
+TABCT: BLOCK   1       ;SPACES TO NEXT TAB STOP\r
+SPCT:  BLOCK   1       ;CONSECUTIVE SPACES COUNTER\r
+ABOUT: BLOCK   1       ;AB FOR OUTPUT UNIT\r
+AUXOUT:        BLOCK   1       ;AUX FOR OUTPUT UNIT\r
+PROTS: BLOCK   1       ;SAVE PROTECTION\r
+ZCNT:  BLOCK   1       ;COUNT FOR DSK ZRO REQ.\r
+CDRCNT:        BLOCK   1       ;COUNT CARD COLS.\r
+PTRPT: BLOCK   1       ;STORE SEQ. NO. POINTER\r
+SYSPP: BLOCK   1       ;PP OF DEVICE SYS\r
+\r
+\f;THIS IS A BLOCK OF VARIABLE LOCATIONS, ZEROED AT THE START OF EACH\r
+;PIP RUN, I.E EACH TIME PIP TYPES *.\r
+\r
+;***** DO NOT SPLIT THIS BLOCK *****\r
+IFN FTDSK,<\r
+RIBFIR:        BLOCK   1       ;NUMBER OF WORDS IN LOOKUP\r
+PPP:   BLOCK   1       ;PROJ-PROG FOR EXTENDED LOOKUP>\r
+FILNAM:        BLOCK   1       ;FILE NAME FROM COMMAND SCANNER\r
+FILEX: BLOCK   1       ;EXTENSION\r
+PR:    BLOCK   1       ;PROTECTION\r
+PP:    BLOCK   1       ;P-P NUMBER TYPED BY USER\r
+IFN FTDSK,<BLOCK 20+RIBFIR-.>  ;TOTAL LENGTH OF LOOKUP BLOCK\r
+;***** END OF BLOCK    *****\r
+DTON:  BLOCK   4       ;OUTPUT DIR. ENTRY\r
+DEVA:  BLOCK   1       ;SAVE INPUT DEV. NAME\r
+NO.:   BLOCK   1       ;GENERATE FILE NAMES\r
+ZRF:   BLOCK   4       ;LOOKUP FILE NAMES\r
+MTAREQ:        BLOCK   1       ;STORE MTA REQUESTS\r
+\r
+COMEOF:        BLOCK   1       ;EOF INDICATOR\r
+COMBUF:        BLOCK   ^D41    ;COMMAND BUFFER. ALLOWS 205 CHARS.\r
+COMCNT:        BLOCK   1       ;COMBUF CHARS COUNT\r
+COMPTS:        BLOCK   1       ;POINTER FOR STORING/EXTRACTING CS\r
+\r
+\r
+AUX:   BLOCK   1       ;COPT AUXFLG (MTA)\r
+IFN FTDSK,<\r
+FNPPN: BLOCK   1       ;RESERVE #P-P\r
+FNPPNS:        BLOCK   1       ;COPY FNPPN FOR LATEST NON-SYS #P-P>\r
+ESWTCH:        BLOCK   1       ;-1 INDICATES END OF LINE\r
+XNAME: BLOCK   1       ;-1 INDICATES SCAN OVERSHOOT WITH A NULL NAME\r
+                       ;0  INDICATES NO SCAN OVERSHOOT\r
+                       ;CONTAINS OVERSHOOT NAME IF NOT NULL\r
+AB:    BLOCK   1       ;MTA VALUE SWITCHES\r
+                       ;THIS IS THE END OF THE INIT. ZEROED BLOCK.\r
+\fMONTH:        ASCII /-Jan-/\r
+       ASCII /-Feb-/\r
+       ASCII /-Mar-/\r
+       ASCII /-Apr-/\r
+       ASCII /-May-/\r
+       ASCII /-Jun-/\r
+       ASCII /-Jul-/\r
+       ASCII /-Aug-/\r
+       ASCII /-Sep-/\r
+       ASCII /-Oct-/\r
+       ASCII /-Nov-/\r
+       ASCII /-Dec-/\r
+\r
+MNPT:  POINT 7,MONTH\r
+\r
+PDL:   BLOCK 20                ;PUSHDOWN LIST\r
+\r
+LBUF:  BLOCK 204       ;LINE BUFFER. ALLOW FOR FORTRAN DATA\r
+LBUFE==.-1\r
+\r
+DBUF:  BLOCK 204       ;DIRECTORY BUFFER\r
+       BLOCK   27      ; ALLOW ENOUGH FOR DTA PROT.\r
+\r
+OMOD:  BLOCK 1         ;OUTPUT DEVICE MODE, STATUS\r
+ODEV:  BLOCK 2         ;OUTPUT DEVICE NAME\r
+                       ;BUFFER HEADER(S) LOC\r
+\r
+ININI1:        BLOCK 1         ;INPUT DEVICE\r
+DEVICE:        BLOCK 2\r
+\r
+\r
+DEVERR:        BLOCK 1\r
+DERR2: BLOCK 2\r
+\r
+INMTA1:        BLOCK 1\r
+MTANAM:        BLOCK 2\r
+MATCH: BLOCK   2       ;NAME AND EXT FOR /L OR (RX)\r
+RENSN: BLOCK   1       ;-1 IF RENAME MESSAGE SEEN\r
+\r
+\fSUBTTL        RIM LOADER\r
+IFE RIMSW,<\r
+RIMTB: ERRPNT  <Z? /Y switch option not available this assembly!Z>\r
+XLIST>\r
+IFN RIMSW,<\r
+LODAL==16                      ;LENGTH OF RIM LOADER\r
+HLTBIT==200                    ;CHANGES JRST TO HALT\r
+BLKSZ==17                      ;NORMAL BLOCK LENGTH IN RIM10B\r
+JOBDA==140                     ;START OF USER AREA\r
+CHKSM: BLOCK   1               ;CHECKSUM ACCUMULATED (RIM10B)\r
+POINTA:        BLOCK   1               ;SAVE POINTER FOR RIM10B BLOCK\r
+LENGTH:        BLOCK   1               ;CALC. LENGTH OF RIM10 FILE\r
+ZERO:  BLOCK   1               ;NO OF 0'S NEEDED TO FILL SPACES IN\r
+COUNT: BLOCK   1               ;RIM10B COUNT WORDS OUT\r
+XFERWD:        BLOCK   1               ;RIM-10-B XFER WD. ;FILE.\r
+\r
+RIMTB: TRNN    AUXFLG,DTAIN!DSKIN!MTAIN\r
+       JRST    ERR5B\r
+       PUSHJ   P,ININIT\r
+       OUTPUT  OUT,\r
+       TRNE    AUXFLG,DTAIN\r
+       PUSHJ   P,DTADIR\r
+IFN FTDSK,<\r
+       TRNE    AUXFLG,DSKIN\r
+       PUSHJ   P,DSKDIR>\r
+       PUSHJ   P,FNSET\r
+RIMTB0:        MOVEI   0,254000\r
+       HRLM    0,XFERWD        ;ASSUME JRST\r
+       PUSHJ   P,LOOK          ;GET FILE TO CONVERT\r
+       JRST    MAIN1           ;NONE LEFT\r
+       LOOKUP  IN,ZRF\r
+       JRST    ERR3\r
+       HLRZ    0,ZRF+1\r
+       CAIN    0,(SIXBIT ,RTB,)\r
+       JRST    RIMTB1\r
+       CAIE    0,(SIXBIT ,SAV,)\r
+       CAIN    0,(SIXBIT ,RMT,)\r
+       JRST    RIMTB2\r
+       JRST    ERR3B           ;NO LEGAL EXTENSION - SAVE JOBFF TOO\r
+\fRIMTB1:       MOVE    T1,OBF+1        ;PUNCH RIM10B LOADER\r
+       HRLI    T1,RMLODA\r
+       AOS     T2,T1           ;XFER IT TO OUTPUT BUFFER\r
+       BLT     T1,LODAL(T2)\r
+       ADDI    T2,LODAL\r
+       HRRM    T2,OBF+1        ;FIX BUFFER POINTER\r
+       MOVNI   T2,LODAL\r
+       ADDM    T2,OBF+2        ;AND COUNTER\r
+       CLOSE   OUT,            ;BLANK TAPE\r
+RIMTB2:        PUSHJ   P,RINP          ;GET FIRST BUFFER\r
+       JRST    ERR8A           ;FILE OF ZERO LENGTH\r
+       JUMPGE  CHR,ERR8A       ;FIRST WORD MUST BE POINTER\r
+       HLRZ    0,ZRF+1\r
+       CAIN    0,(SIXBIT ,SAV,)\r
+       JRST    RIMTB4          ;"SAV" FILE\r
+       MOVEI   T2,^D126(CHR)   ;FIND VALUE OF JOBSA\r
+       MOVEI   T3,JOBDA-1\r
+       CAMGE   T2,T3           ;(JOBDA) IS FIRST LOC. OF USER PROF,\r
+       JRST    ERR8A           ;NO, ERROR\r
+       MOVE    T1,IBF+1\r
+       MOVEI   T3,JOBSA\r
+       PUSHJ   P,RMS1\r
+       HRRM    CHR,XFERWD      ;SAVE TRANSFER WORD\r
+       MOVEI   T3,JOBFF\r
+       MOVE    T1,IBF+1\r
+       PUSHJ   P,RMS1\r
+       HRRZM   CHR,LENGTH      ;SAVE (JOBFF)\r
+       HLRZ    0,ZRF+1\r
+       CAIN    0,(SIXBIT .RTB.);RIM 10B CONVERSION\r
+       JRST    RIMTB4\r
+\f;RIM10 1ST WD IS -N,X X IS 1ST WORD IN DATA BLOCK\r
+;CONTAINING FIRST NON-ZERO WORD AFTER END\r
+;OF JOBDATA AREA, FROM THERE TO JOBFF GIVES\r
+;VALUE OF N. XFER ADD. COMES FROM JOBSA.\r
+\r
+RMT1:  MOVEI   T1,JOBDA        ;FIRST LOC. AVAILABLE TO USER\r
+       LDB     CHR,IBF+1\r
+       SUBI    T1,1(CHR)\r
+       JUMPLE  T1,RMT2 ;CURRENT "X" GT OR EQ JOBDA\r
+       HLRO    T2,CHR\r
+       MOVNS   T2              ;GET "N"\r
+       AOJ     T1,             ;GET REL. LOC. OF JOBDA IN BLOCK\r
+       CAMG    T1,T2\r
+       JRST    RMT2\r
+       AOJ     T2,             ;NOT IN BLOCK, TRY NEXT\r
+       ADDM    T2,IBF+1\r
+       MOVNS   T2\r
+       ADDM    T2,IBF+2        ;READY TO GET NEXT POINTER\r
+       JRST    RMT1\r
+RMT2:  LDB     CHR,IBF+1       ;POINTS TO FIRST USEFUL I/O WORD\r
+       MOVNI   T1,(CHR)\r
+       ADDB    T1,LENGTH\r
+       MOVNS   T1              ; -N\r
+       HRLM    T1,POINTA\r
+       HRRM    CHR,POINTA      ;(-N,X) IN POINTA\r
+       SETZM   ZERO\r\r
+\f;NOW OUTPUT RIM10 FILE.  IBF+1 POINTS TO FIRST I/O WORD.  POINTA HAS I/O\r
+;WORD FOR FILE.  LENGTH = NO. WDS TO GO OUT INCLUDING XFER WD.\r
+;COUNT COUNTS NO. WDS IN CURRENT LOGICAL BLOCK\r
+;ZERO COUNTS ZERO FILL\r
+\r
+       MOVE    CHR,POINTA\r
+       PUSHJ   P,PUT           ;PUNCH I/O WORD\r
+RMT8:  LDB     CHR,IBF+1       ;-N,X\r
+       MOVEM   CHR,POINTA\r
+       HLRO    T1,CHR\r
+       MOVNM   T1,COUNT\r
+RMT6:  SETZ    CHR,            ;PUNCH ZERO IF NECESSARY\r
+       SOSL    ZERO\r
+       JRST    RMT4            ;DEPOSIT ZERO\r
+       SOSGE   COUNT\r
+       JRST    RMT5            ;GET NEW LOGICAL BLOCK\r
+       PUSHJ   P,RINP1\r
+       JRST    ERR8A\r
+RMT4:   SOSG   LENGTH\r
+       JRST    RIMTB8\r
+       PUSHJ   P,PUT\r
+       JRST    RMT6\r
+RMT5:   HRRZ   T1,POINTA\r
+       HLRO    T2,POINTA\r
+       SUBM    T1,T2\r
+       PUSHJ   P,RINP1\r
+       JRST    RMT9\r
+       JUMPGE  CHR,ERR8A\r
+       HRRZ    CHR,CHR\r
+       SUB     CHR,T2\r
+       JUMPL   CHR,ERR8A\r
+       MOVEM   CHR,ZERO\r
+       JRST    RMT8\r
+RMT9:   MOVE   CHR,LENGTH\r
+       SOJ     CHR,\r
+       MOVEM   CHR,ZERO\r
+       SETZ    CHR,\r
+RMT10:  SOSGE  ZERO\r
+       JRST    RIMTB8\r
+       PUSHJ   P,PUT\r
+       JRST    RMT10\r
+\f;RIM10B: COMES FROM RTB AND SAV FILES. SAV=RTB EXCEPT IT HAS NO\r
+;RIM LOADER AND NO TRANSFER WORD\r
+\r
+RIMTB3:        PUSHJ   P,RINP1         ;NONE, GET NEW POINTER\r
+       JRST    RIMTB8          ;EOF\r
+       JUMPL   CHR,RIMTB4      ;POINTER WORD\r
+       CAME    CHR,XFERWD      ;IS IT FINAL JRST XXX\r
+       JRST    ERR8A           ;NO,ERROR\r
+       JRST    RIMTB8          ;YES,OUTPUT IT\r
+\r
+RIMTB4:        LDB     CHR,IBF+1\r
+       HRRZM   CHR,POINTA      ;LOAD WORDS HERE\r
+       HLROM   CHR,COUNT\r
+       MOVNS   COUNT           ;NO. WDS IN THIS BLOCK\r
+RIMTB7:        SKIPN   T1,COUNT        ;ANY WORDS LEFT IN BLOCK?\r
+       JRST    RIMTB3          ;NONE\r
+       SETZM   CHKSM           ;INITIALIZE CHECKSUM\r
+       CAIL    T1,BLKSZ\r
+       MOVEI   T1,17\r
+       MOVN    T2,T1           ;T1 HAS NO. OF WDS TO GO OUT\r
+       ADDM    T2,COUNT        ;ADJUST COUNT\r
+       HRL     CHR,T2\r
+       HRR     CHR,POINTA      ;I/O WD IN CHR\r
+       ADDM    T1,POINTA       ;SET POINTA FOR NEXT TIME\r
+       ADDM    CHR,CHKSM       ;ADD I/O WD TO CHECKSUM\r
+RIMTB5:        PUSHJ   P,PUT           ;PUTPUT I/O WORD\r
+       SOJL    T1,RIMTB6               ;FINISHED THIS BLOCK\r
+       PUSHJ   P,RINP1         ;GET DATA\r
+       JRST    ERR8A           ;EOF (ILLEGAL)\r
+       ADDM    CHR,CHKSM       ;CHECKSUM\r
+       JRST    RIMTB5\r
+RIMTB6: MOVE    CHR,CHKSM\r
+       PUSHJ   P,PUT\r
+       OUTPUT  OUT,\r
+       JRST    RIMTB7\r
+RIMTB8:        MOVE    CHR,XFERWD      ;EOF HERE, XFERWD=JOBSA\r
+       TRNN    CHR,-1\r
+       TLO     CHR,HLTBIT\r
+       HLRZ    0,ZRF+1\r
+       CAIN    0,(SIXBIT .SAV.);NO XFER WD FOR "SAV" FILES\r
+       JRST    RIMA\r
+       PUSHJ   P,PUT\r
+       SETZ    CHR,\r
+       PUSHJ   P,PUT           ;TRAILING ZERO\r
+       OUTPUT  OUT,\r
+RIMA:  CLOSE   IN,\r
+       TRNE    FLAG,XFLG\r
+       CLOSE   OUT,\r
+       JRST    RIMTB0\r
+\r
+\f;THIS IS THE I/O SECTION\r
+\r
+RINP:  PUSHJ   P,INP\r
+       TRNE    IOS,EOFBIT      ;EOF?\r
+       POPJ    P,              ;EOF EXIT\r
+RINP1: SOSGE   IBF+2\r
+       JRST    RINP\r
+       ILDB    CHR,IBF+1\r
+       JRST    CPOPJ1\r
+\r
+RMS2:  SUB     T1,T4           ;(IBF+1)+N\r
+       AOJ     T1,\r
+RMS1:  LDB     CHR,T1          ;GET POINTER\r
+       HRRZ    T2,CHR          ;X\r
+       HLRO    T4,CHR          ;-N\r
+       SUB     T2,T4           ;X+N IN T2\r
+       CAMGE   T2,T3\r
+       JRST    RMS2\r
+       SUBI    T3,(CHR)        ;HOW FAR FROM POINTER?\r
+       ADD     T1,T3           ;INCREMENT POINTER\r
+       LDB     CHR,T1          ;(JOBSA/FF)\r
+       POPJ    P,\r
+\r
+;THIS IS THE RIM LOADER FOR THE PDP-10\r
+\r
+RMLODA:        PHASE   0\r
+\r
+       XWD     -16,0\r
+ST:    CONO    PTR,60\r
+ST1:   HRRI    A,RD+1\r
+RD:    CONSO   PTR,10\r
+       JRST    .-1\r
+       DATAI   PTR,@TBL1-RD+1(A)\r
+       XCT     TBL1-RD+1(A)\r
+       XCT     TBL2-RD+1(A)\r
+A:     SOJA    A,\r
+TBL1:  CAME    CKSM,ADR\r
+       ADD     CKSM,1(ADR)\r
+       SKIPL   CKSM,ADR\r
+TBL2:  JRST    4,ST\r
+       AOBJN   ADR,RD\r
+ADR:   JRST    ST1\r
+CKSM:  BLOCK   0\r
+\r
+IF2,<  PURGE ST,ST1,RD,A,TBL1,TBL2,ADR,CKSM>\r
+DEPHASE>\r
+LIST\r
+\r
+IFE FTDSK,<    \r
+       VAR\r
+LOWTOP:\r
+       END     PIP1>\r
+\fSUBTTL        DISK ROUTINES\r
+;* * * ALL THE FOLLOWING ARE DISK ROUTINES * * *\r
+\r
+;DISK DELETE AND RENAME ROUTINES\r
+\r
+DSKDR0:        MOVE    T1,DTON+3       ;GET OUTPUT PPN\r
+       SKIPN   PP              ;ALREADY SET?\r
+       MOVEM   T1,PP           ;OUTPUT=INPUT FOR /D,/R\r
+DSKDR: PUSHJ   P,ININIT        ;GET DSK AS INPUT DEVICE\r
+       PUSHJ   P,DSKDIR        ;GET USER'S FILE DIRECTORY\r
+       PUSHJ   P,INFO          ;PRINT FILES DELETED:/RENAMED:\r
+       SETZM   ZCNT            ;COUNT OF FAILURES\r
+DSKDR5:        PUSHJ   P,LOOK          ;PREPARE FOR LOOKUP/ENTER\r
+                               ;OF FILE TO /D OR /R\r
+       JRST    DSKDR1          ;ALL THROUGH WITH UFD\r
+       LOOKUP  IN,ZRF          ;IS SOURCE FILE THERE?\r
+       JRST    DERR5           ;ERROR\r
+       CLOSE   IN,             ;YES\r
+       TRNN    FLAG,DFLG       ;DELETE?\r
+       JRST    DSKDR4          ;NO, RENAME\r
+       SETZM   DTON            ;YES\r
+       MOVE    0,FNPPN         ;SET DEST. DEVICE SAME AS SOURCE FOR DELETE,\r
+       MOVEM   0,DTON+3        ;I.E. PROJ-PROG NUMBER\r
+       JRST    DSKDR7\r
+\r
+DSKDR4:        PUSHJ   P,RENAME\r
+       JUMPN   T2,.+3          ;JUMP IF FILE NAME SEEN\r
+       MOVE    0,[XWD ZRF,DTON];NO NAME SET SO USE LOOKUP NAME\r
+       BLT     0,DTON+1        ;AND EXT SO FILE NOT DELETED\r
+       MOVE    0,ZRF+2         ;GET DATE,MODE,PROT ETC.\r
+       MOVEM   0,DTON+2        ;SAVE AS BEFORE\r
+       MOVE    0,NAMTAB+3      ;GET PROJ-PROG\r
+       MOVEM   0,DTON+3\r
+       LDB     0,[POINT 9,NAMTAB+2,8]\r
+       TLNE    AUXFLG,NSPROT   ;USE THE CURRENT PROTECTION\r
+       DPB     0,PRPTD         ;UNLESS NEW PROT. SPECIFIED\r
+DSKDR7:        RENAME  IN,DTON\r
+       AOSA     ZCNT           ;RENAME (OR DELETE) FAILS\r
+       PUSHJ   P,INFO3         ;PRINT FILENAME DELETED/RENAMED\r
+       JRST    DSKDR5\r
+\r
+DSKDR1:        TLZ     AUXFLG,NSPROT   ;NON-ST. PROT FIXED\r
+       SKIPE   ZCNT            ;SKIP IF NO FAILURES\r
+       JRST    DSKDR6          ;ERROR\r
+       SOS     ESWTCH          ;ENSURE ESWTCH NEGATIVE\r
+       RELEAS  CON,\r
+       JRST    MAIN1\r
+\f;ZERO DSK DIRECTORY OF ALL POSSIBLE FILES.  IF ANY ARE PROTECTED, GIVE\r
+;A MESSAGE AND DO NOT PROCESS ANY OTHER SWITCHES.\r
+\r
+DSKZRO:        SKIPE   T1,ODEV         ; STR# 10-2892\r
+       MOVEM   T1,ADSK\r
+       PUSHJ   P,DIRSK1\r
+       SETZM   ZCNT\r
+       INBUF   OUT,1           ;FOR LOOKUPS ON OUT\r
+DSKZ1: SOSLE   UFDIN+2\r
+       SKIP    2\r
+DSKZ3: PUSHJ   P,UIN\r
+       JRST    DSKZ2\r
+       ILDB    0,UFDIN+1\r
+       JUMPE   0,DSKZ3\r
+       MOVEM   0,ZRF\r
+       SOS     UFDIN+2\r
+       ILDB    0,UFDIN+1\r
+       HLLZM   0,ZRF+1         ;EXTENSION\r
+       MOVE    0,FNPPN\r
+       MOVEM   0,ZRF+3\r
+       LOOKUP  OUT,ZRF\r
+       AOS     ZCNT            ;COUTN REJECTS,TRY MORE FILES\r
+       CLOSE   OUT,\r
+       SETZM   ZRF\r
+       MOVE    0,FNPPN\r
+       MOVEM   0,ZRF+3\r
+       RENAME  OUT,ZRF\r
+       AOS     ZCNT\r
+       JRST    DSKZ1           ;REPEAT\r
+DSKZ2: SKIPN   ZCNT            ;ANY FAILURES?\r
+       POPJ    P,              ;NO\r
+                               ;PRINT ERROR MESSAGE\r
+       MOVSI   T4,(SIXBIT /Z/)\r
+       JRST    DSKZ5\r
+DSKDR6:        MOVSI   T4,(SIXBIT /D/)\r
+       TRNN    FLAG,DFLG\r
+       MOVSI   T4,(SIXBIT /R/)\r
+DSKZ5: ERRPNT  <X?Failure(s) during /X>\r
+       PUSHJ   P,P6BIT\r
+               T4\r
+       ERRPN2  </ request!/>\r
+\f;PREPARE TO LOOKUP FILES IN PARTICULAR DISK DIRECTORY\r
+\r
+DIRSK1:        SKIPA   T1,DTON+3\r
+DSKDIR:        MOVE    T1,PP           ;GET [P,P] INTO T1\r
+       JUMPN   T1,.+2          ;IS IT ZERO?\r
+       GETPPN   T1,            ;YES, GET USER'S [P,P]\r
+       TRNE    AUXFLG,SYSFLG   ;DEVICE SYS\r
+       MOVE    T1,SYSPP        ;GET SYS  [PP]\r
+       MOVEM   T1,FNPPN\r
+       MOVE    0,[XWD FILNAM,UFD]\r
+       BLT     0,UFD+3         ;SAVE LOOKUP BLOCK\r
+IFE DISK30,<\r
+       MOVEM   T1,FILNAM       ;[P,P] TO UFD\r
+       MOVSI   0,(SIXBIT /UFD/)\r
+       MOVEM   0,FILEX         ;USER HAS SPECIFIED [P,P]>\r
+IFN DISK30,<\r
+       HRRZM   T1,T2           ;SAVE PROGRAMMER NBR.\r
+       LSH     T1,-14          ;SHIFT PROJECT NBR.\r
+       IOR     T1,T2           ;REPLACE PROGRAMMER NBR\r
+       MOVEM   T1,MASK\r
+       MOVE    0,[SIXBIT /*FD*/]\r
+       MOVEM   0,FILNAM\r
+       MOVSI   0,(SIXBIT /SYS/)\r
+       MOVEM   0,FILEX>\r
+       TRNN    CALFLG,SYSFLG   ;CURRENT DEVICE SYS?\r
+       MOVEM   T1,FNPPNS       ;SAVE LATEST NON-SYS #P-P\r
+       MOVE    0,PP11          ;MAKE [P,P]=[1,1]\r
+       MOVEM   0,PP\r
+       MOVEM   0,PPP           ;SAVE FOR EXTENDED LOOKUP\r
+       PUSHJ   P,DSKDST        ;INIT TO READ DIRECTORY\r
+       MOVEI   T1,RIBSTS       ;NO. OF WORDS FOR EXTENDED LOOKUP\r
+       MOVEM   T1,RIBFIR\r
+       MOVE    T1,LEVEL        ;LEVEL D = -2\r
+       LOOKUP  DIR,FILNAM(T1)  ;GET USERS FILE DIRECTORY\r
+       JRST    DERR5A          ;ONE OF 8 LOOKUP ERRORS\r
+       JUMPE   T1,DIRSK2       ;IF LEVEL C\r
+       HRRZ    T1,RIBFIR+RIBSTS\r
+       ANDI    T1,777          ;GET ERROR BITS\r
+       JUMPN   T1,DIRSK2       ;JUMP IF ERRORS IN UFD\r
+       MOVEI   T1,RBSIZ        ;SET LOOKUP\r
+       MOVEM   T1,RIBFIR       ;FOR SHORT EXTENDED\r
+DIRSK2:        MOVS    T1,[XWD FILNAM,UFD]\r
+       BLT     T1,PP           ;RESTORE LOOKUP BLOCK\r
+       POPJ    P,              ;LOOKUP OK\r
+\f;SETUP BUFFER TO READ 10/30 DISK BLOCKS\r
+\r
+IFN DISK30,<\r
+BLKSET:                                ;MAKE MONITOR USE BLKBUF\r
+       MOVEI   T1,BLKBUF       ;FOR 10/30 DISK BLOCKS\r
+       EXCH    T1,JOBFF\r
+       INIT    BLKIN,14\r
+       SIXBIT  /SYS/\r
+       XWD     0,BLKHD\r
+       JRST    ERR1A\r
+       INBUF   BLKIN,1\r
+       MOVEM   T1,JOBFF\r
+       POPJ    P,\r
+\r
+BLKBUF:        BLOCK 204               ;10/30 DISK BLOCK BUFFER\r
+\r
+;ROUTINE TO READ 10/30 DISK\r
+\r
+BLKRD: SETZM   FILNAM+2\r
+       SETZB   BLKTMP\r
+       INPUT   BLKIN,          ;INPUT 10/30 DISK BLOCKS\r
+       STATUS  BLKIN,IOS\r
+       TRNN    IOS,760000\r
+       JRST    BLKRD1\r
+       TRZN    IOS,20000       ;EOF\r
+       JRST    BLKERR          ;ERROR\r
+       SETSTS  BLKIN,(IOS)\r
+       MOVEM   0,BLKTMP\r
+       ADDM    0,BLKSUM\r
+       POPJ    P,\r
+BLKRD1:        AOJA    0,BLKRD+2       ;COUNT BLOCKS PER FILE\r
+BLKERR:        PUSHJ   P,COMERR\r
+       JSP     T5,INICN2\r
+       TRNN    IOS,400000      ;CHECK FOR WRITE LOCK\r
+       JRST    BLKER2          ;NO\r
+       ERRPN2  </?/>\r
+BLKER2:        ERRPN2  </Input device DSK file />\r
+       MOVEI   T6,FILNAM\r
+       PUSHJ   P,FN.EX\r
+       MOVE    T2,AUXFLG\r
+       ANDI    T2,DSKIN\r
+       PUSHJ   P,IOERR\r
+       SETSTS  BLKIN,(IOS)\r
+       POPJ    P,>\r
+\f;ROUTINE TO LIST DISK DIRECTORY. /L OR /F SWITCH\r
+\r
+DSKLST:        PUSH    P,DEVICE\r
+       PUSHJ   P,ININIT        ;ASSIGN "IN" FOR RETRIEVAL INFO\r
+       SETZM   BLKSUM          ;CLEAR TOTAL BLOCKS FOR ALL FILES\r
+IFN DISK30,<TRNN AUXFLG,FFLG   ;SHORT LISTING\r
+       PUSHJ   P,BLKSET        ;NO>\r
+       SETZM   LIN             ;SET UP APPROPRIATE CONTROLS\r
+       MOVS    T1,ODEV         ;FOR THIS LISTING DEVICE\r
+       CAIN    T1,(SIXBIT/TTY/);IF ODEV IS TTY\r
+       TRO     CALFLG,LISTTY   ;SET LISTTY=1 (TTY)\r
+       SKIPN   FILNAM          ;IF NO FILNAM GIVEN\r
+       TRZ     CALFLG,MATFN!MATEX      ;LIST ALL OF DIRECTORY\r
+       MOVE    T1,FILNAM\r
+       MOVEM   T1,MATCH\r
+       HLRZ    T1,FILEX\r
+       MOVEM   T1,MATCH+1\r
+       PUSHJ   P,DSKDIR\r
+       PUSHJ   P,CRLF          ;GIVE A BLANK LINE\r
+       TRNN    AUXFLG,FFLG     ;SHORT LISTING\r
+       PUSHJ   P,HEADER        ;PUT OUT HEADER LINES\r
+       SKIPN   LEVEL           ;ONLY IF LEVEL D\r
+       JRST    LSTU0A          ;LEVEL C\r
+       MOVEI   T1,ADSK         ;ADDRESS OF DEVICE\r
+       DSKCHR  T1,             ;SEE IF DSK\r
+       TDZA    T1,T1           ;NOT LEVEL D DSK\r
+       TLNE    T1,(7B17)       ;GENERIC DEVICE DSK\r
+       TDZA    T1,T1           ;NO\r
+       SETO    T1,             ;YES\r
+       MOVEM   T1,GENERI       ;SAVE IT\r
+       JUMPE   T1,LSTU0A       ;LEVEL C\r
+LSTU0: MOVEI   T1,GENERI       ;GET ADDRESS\r
+       JOBSTR  T1,             ;GET FILE STRUCTURE\r
+       TDZA    T1,T1           ;ERROR\r
+       SKIPN   T1,GENERI       ;GET DEVICE\r
+       JRST    DIRFIN          ;FINISHED\r
+       MOVEM   T1,ADSK         ;FOR DIR INIT\r
+       MOVEM   T1,DEVICE       ;FOR RETRIEVAL INFO\r
+       PUSHJ   P,ININIT        ;INIT\r
+       MOVE    0,GENERI        ;YES, GET IT\r
+       PUSHJ   P,SIXOUT        ;PRINT IT\r
+       MOVEI   CHR,":"         ;FOLLOW WITH COLON\r
+       PUSHJ   P,PUT\r
+       PUSHJ   P,DSKDIR        ;LOOKUP UFD\r
+       PUSHJ   P,CRLF          ;AND A CR-LF\r
+LSTU0A:        MOVE    T1,PP           ;GET PROJ-PROG\r
+       MOVEM   T1,PPP          ;SAVE FOR EXTENDED LOOKUP\r
+LSTU1: SOSLE   UFDIN+2\r
+       SKIP    2\r
+LSTU2: PUSHJ   P,UIN           ;GO READ DIRECTORY\r
+       JRST    BLKLST          ;(EOF) - OUTPUT BLOCKS USED\r
+       ILDB    0,UFDIN+1\r
+       JUMPE   0,LSTU2\r
+       MOVEM   0,FILNAM        ;PREPARE TO GET RETRIEVAL INFO\r
+       MOVE    T1,FNPPN        ;EACH LOOKUP DESTROYS P-P NO.\r
+       MOVEM   T1,FILNAM+3     ;RESTORE P-P NO.\r
+       SKIPG   LIN\r
+       PUSHJ   P,HEDR3         ;YES, PUT OUT HEADER LINES\r
+       SOS     UFDIN+2\r
+       ILDB    DOUT,UFDIN+1    ;PICK UP EXTENSION\r
+       HLRZS   DOUT            ;CLEAR RIGHT HALF\r
+       HRLZM   DOUT,FILNAM+1   ;KEEP FOR LOOKUP\r
+       TRNN    CALFLG,MATEX    ;MATCH EXTENSIONS?\r
+       SKIP    2               ;NO,TRY MATFN\r
+       CAME    DOUT,MATCH+1    ;MATCH?\r
+       JRST    LSTU1           ;NO,GET NEXT FILE\r
+       TRNN    CALFLG,MATFN    ;MATCH FILENAME?\r
+       JRST    LSTU2A          ;NO\r
+       CAME    0,MATCH         ;FILNAM MATCH?\r
+       JRST    LSTU1           ;NO\r
+LSTU2A:        IFE DISK30,<\r
+       CAIE    DOUT,(SIXBIT ?UFD?)     ;IS FILE MFD\r
+       JRST    LSTU3           ;GO PRINT NAME HELD IN 0.\r
+       HLRZ    DOUT,FILNAM     ;HERE FOR MFD ONLY\r
+       MOVEI   T2,PUT\r
+       PUSHJ   P,OUTDC1        ;PRINT #,#. PROJ. NO.\r
+       MOVEI   CHR,COMMA       ;","\r
+       PUSHJ   P,PUT           ;...\r
+       HRRZ    DOUT,FILNAM     ;PROG. NO.\r
+       PUSHJ   P,OUTDC1\r
+       JRST    LSTU3A  ;...>\r
+\fIFN DISK30,<\r
+       ILDB    0,UFDIN+1       ;PICKUP THIRD AND FOURTH WORD\r
+       MOVEM   0,FILNAM+2      ;IN 10/30 DISK FILE DIRECTORY\r
+       ILDB    0,UFDIN+1\r
+       TDC     0,MASK\r
+       TRNE    0,3777\r
+       JRST    LSTU1>\r
+LSTU3: MOVE    0,FILNAM\r
+       PUSHJ   P,SIXOUT        ;OUPUT FILENAME\r
+LSTU3A:        MOVEI   T4,4            ;SET LOOP FOR OUTPT EXT\r
+       MOVE    0,FILEX\r
+       JUMPE   0,LSTU4\r
+       PUSHJ   P,TABOUT\r
+       PUSHJ   P,SIXOUT        ;OUTPUT EXTENSION\r
+LSTU4: TRNN    AUXFLG,FFLG     ;SHORTEST LISTING?\r
+       SKIP    2\r
+       PUSHJ   P,CLRF          ;YES\r
+       JRST    LSTU1\r
+       SKIPN   FILEX\r
+       PUSHJ   P,TABOUT\r
+       PUSHJ   P,SPACES\r
+IFE DISK30,<\r
+       MOVE    T4,LEVEL        ;-2 IF LEVEL D,0 IF LEVEL C\r
+       LOOKUP  IN,FILNAM(T4)   ;GET RETRIEVAL INFO.\r
+       JRST    LSTU5           ;NOT AVAILABLE\r
+       JUMPE   T4,LSTU4A       ;LEVEL C OR NO UFD ERRORS\r
+       HRRZ    DOUT,RIBFIR+RIBSTS      ;FILE ERROR STATUS\r
+       ANDI    DOUT,777                ;ONLY ERROR BITS\r
+       JUMPE   DOUT,LSTU4A     ;NO ERRORS\r
+       MOVEI   CHR,"("         ;PUT ERROR CODE IN PARENS\r
+       PUSHJ   P,PUT\r
+       SKIPA   T4,[POINT 7,[ASCII /a*cm**rwf*/]]\r
+       LSH     DOUT,-1         ;SHIFT ERROR BIT TOWARDS BIT 35\r
+       ILDB    CHR,T4          ;GET AN ERROR CHARACTER\r
+       TRNN    DOUT,1          ;IS IT THIS ERROR?\r
+       JRST    .-3             ;NO\r
+       PUSHJ   P,PUT           ;YES,OUT IT GOES\r
+       MOVEI   CHR,")"\r
+       PUSHJ   P,PUT\r
+LSTU4A:        >\r
+IFN DISK30,<\r
+       MOVE    DOUT,FILNAM+2   ;SAVE\r
+       LOOKUP  BLKIN,FILNAM\r
+       JRST    LSTU5\r
+       PUSHJ   P,BLKRD\r
+       MOVEM   DOUT,FILNAM+2>\r
+       PUSHJ   P,TABOUT\r
+IFE DISK30,<\r
+       PUSHJ   P,BLKS>         ;DETERMINE NO. BLK IN FILE\r
+                               ;AND TOTAL FOR UFD\r
+IFN DISK30,<\r
+       PUSHJ   P,BLKOUT>\r
+\f      LDB     0,PROT          ;GET PROTECTION BITS\r
+       PUSHJ   P,PROTO         ;PRINT OCTAL NUMBERS\r
+       TRNE    CALFLG,LISTTY   ;OUTPUT DEVICE A TTY?\r
+       JRST    LSTU7           ;YES, SKIP LONG DIRECTORY\r
+       LDB     0,ADATE         ;PRINT ACCESS DATE\r
+       PUSHJ   P,DATOUT\r
+       PUSHJ   P,TABOUT\r
+       LDB     0,CTIME         ;PRINT CREATION TIME\r
+       PUSHJ   P,TIMOUT\r
+       LDB     0,CDATE\r
+       PUSHJ   P,DATOUT        ;PRINT CREATION DATE\r
+       PUSHJ   P,TABOUT\r
+       LDB     0,MODE          ;PRINT MODE\r
+       PUSHJ   P,OCTLS2\r
+       JRST    LSTU8\r
+\r
+LSTU5: PUSHJ   P,TABOUT        ;THE FILE WAS PROTECTED\r
+       HRRZ    T7,FILEX        ;GET PARTICULAR ERROR TYPE\r
+       CAIL    T7,TABLND-TABLE ;IS IT LEGAL ERROR\r
+       SKIPA   T1,TABLND       ;NO,PICK UP CATCH ALL MESSAGE\r
+       MOVE    T1,TABLE(T7)    ;PICK UP POINTER FOR ERROR MSG\r
+LSTU6: ILDB    CHR,T1          ;PICK UP CHAR FROM ERROR MSG\r
+       JUMPE   CHR,LSTU8       ;PRINT ERROR MESSAGE, END SEEN\r
+       CAIN    CHR,"!"\r
+       JRST    LSTU8           ;ALTERNATE END SEEN (!)\r
+       PUSHJ   P,CCASE         ;DEPOSIT CHARACTER\r
+       PUSHJ   P,PUT\r
+       JRST    LSTU6\r
+\r
+\r
+LSTU7: LDB     0,CDATE\r
+       PUSHJ   P,DATOUT        ;PRINT CREATION DATE ONLY FOR TTY\r
+LSTU8: IFE DISK30,<\r
+       CLOSE   IN,>\r
+       PUSHJ   P,CLRF\r
+       JRST    LSTU1\r
+\r\f\r
+\r
+;ROUTINE TO OUTPUT SPACES, T4=NO. TO OUTPUT\r
+\r
+SPACES:        MOVEI   CHR,SPACE\r
+       PUSHJ   P,PUT\r
+       SOJG    T4,.-1\r
+       POPJ    P,\r
+\r
+;ROUTINE TO DEPOSIT T4.SIXBIT CHARACTERS\r
+;FROM AC0 INTO OUTPUT BUFFER\r
+SIXOUT:        MOVSI   T2,(POINT 6,0)\r
+       JUMPE   0,SIXO1         ;ZERO WORD\r
+       TLNE    0,770000        ;LEADING SPACE\r
+       JRST    LSTO0           ;NO\r
+       LSH     0,6             ;GET NEXT CHAR.\r
+       MOVEI   CHR," "         ;BUT OUTPUT SPACE\r
+       SKIP    3\r
+LSTO0: ILDB    CHR,T2\r
+       JUMPE   CHR,SIXO1\r
+       ADDI    CHR,40          ;MAKE ASCII\r
+       PUSHJ   P,PUT\r
+       SOJ     T4,\r
+       TLNN    T2,770000\r
+SIXO1: POPJ    P,\r
+       JRST    SIXOUT+2\r
+\f;DETERMINE NUMBER OF BLOCKS PER FILE AND TOTAL NUMBER OF\r
+;BLOCKS USED BY USERS PROJECT,PROGRAMMER NUMBER\r
+\r
+BLKS:  MOVE    DOUT,RIBFIR+RBSIZ\r
+       SKIPE   LEVEL           ;SKIP IF LEVEL C\r
+       SKIP    3               ;LEVEL D WORD COUNT\r
+       HLRE    DOUT,PP         ;GET WORD COUNT OF FILE\r
+       JUMPGE  DOUT,BLKADD     ;IF POS = NO. OF BLOCKS\r
+       MOVNS   DOUT            ;MAKE POSITIVE\r
+       TRZE    DOUT,177        ;TAKE CARE OF PARTIAL BLOCKS\r
+       ADDI    DOUT,200\r
+       IDIVI   DOUT,200        ;CALCULATE BLOCK COUNT\r
+BLKADD:        ADDM    DOUT,BLKSUM     ;CALCULATE TOTAL FOR ALL FILES\r
+       PUSHJ   P,OUTDE4        ;OUTPUT NUMBER OF BLOCKS IN DECIMAL\r
+       JRST    TABOUT          ;OUTPUT TAB\r
+\r
+;END OF FILE ON UFD OUTPUT TOTAL BLOCKS XXX\r
+\r
+BLKLST:        SKIPN   BLKSUM          ;ANY INFORMATION TO OUTPUT\r
+       JRST    BLKLS1          ;NO - FINISHED\r
+       LSTLIN  TOTAL           ;OUTPUT CR,LF "TOTAL BLOCKS"\r
+       MOVE    DOUT,BLKSUM\r
+       PUSHJ   P,OUTDE4        ;PRINT TOTALS\r
+       PUSHJ   P,CRLF          ;BONUS CR-LF\r
+BLKLS1:        SKIPN   GENERI          ;MORE FILE STRUCTURES?\r
+DIRFIN:        JRST    [POP    P,DEVICE\r
+               JRST    MAIN1]\r
+       SETZM   BLKSUM          ;START AFFRESH\r
+       MOVE    T1,PPP          ;RESTORE PP\r
+       MOVEM   T1,PP\r
+       JRST    LSTU0           ;YES\r
+\r
+TOTAL: ASCIZ   /\r
+Total Blocks    /\r
+\r
+CCASE: CAIL    CHR,"a" ;FLUSH LOWER CASE LETTERS\r
+       CAILE   CHR,"z" ;FROM OUTPUT IN CASE PDP-6 LPT\r
+       POPJ    P,\r
+       SUBI    CHR,40\r
+       POPJ    P,\r
+\f;INPUT USERS FILE DIRECTORY\r
+\r
+UIN:   SETZ    IOS,            ;JUST IN CASE\r
+       IN      DIR,\r
+       JRST    CPOPJ1          ;NO ERRORS\r
+       STATUS  DIR,IOS\r
+       TRZN    IOS,EOFBIT\r
+       JRST    UIN2            ;ERROR PRINT\r
+       POPJ    P,\r
+\r
+;INIT DIRECTORY DEVICE\r
+\r
+DSKDST:        MOVE    T2,JOBFF        ;SAVE JOBFF IN T2\r
+\r
+       MOVEI   T1,DBUF\r
+       MOVEM   T1,JOBFF        ;MAKE MONITOR USE DBUF FOR DISK DIR.\r
+\r
+       MOVEI   T1,14           ;BINARY MODE\r
+       MOVEM   T1,ADSK1\r
+\r
+       MOVEI   T1,UFDIN        ;LOC OF DIRECTORY ENTRY\r
+       MOVEM   T1,ADSK+1       ;FOR UFD\r
+\r
+       OPEN    DIR,ADSK1\r
+       JRST    ERR1A\r
+       INBUF   DIR,1           ;RESET JOBFF SAME AS ENTRY\r
+       MOVEM   T2,JOBFF\r
+       POPJ    P,\r
+\f;OUTPUT THE DIRECTORY LISTING HEADER\r
+\r
+HEADER:        PUSHJ   P,HEDR4\r
+HEDR1: LSTLIN  HEDL1\r
+       HLRZ    DOUT,FNPPN\r
+       PUSHJ   P,OUTDEC        ;PROJ, PROG\r
+       MOVEI   CHR,","\r
+       PUSHJ   P,PUT\r
+       HRRZ    DOUT,FNPPN\r
+       PUSHJ   P,OUTDEC\r
+       PUSHJ   P,TABOUT\r
+       PUSHJ   P,NOWOUT        ;PRINT CURRENT TIME, DATE\r
+       DATE                    ;DATE REQ.\r
+       PUSHJ   P,DATOUT\r
+       PUSHJ   P,CLRF\r
+       TRNE    CALFLG,LISTTY\r
+       JRST    HEDR2           ;JUMP IF LISTING TO CONSOLE\r
+       SOS     LIN\r
+       LSTLIN  HEDLIN\r
+HEDR2: JRST    CLRF\r
+\r
+HEDR3: TRNN    AUXFLG,FFLG     ;POP BACK IF SHORT LISTING\r
+       TRNE    CALFLG,LISTTY\r
+       POPJ    P,\r
+       PUSHJ   P,HEDR4\r
+       LSTLIN  HEDL2\r
+       JRST    HEDR1\r
+\fHEDLIN: ASCIZ /\r
+    File            Protection   Access        Creation    \r
+ Name  Ext     Blks               Date         Time    Date            Mode\r
+/\r
+HEDL1: ASCIZ   /Directory     /\r
+HEDL2: ASCIZ   /Continuation of /\r
+\f\r
+UIN2:  PUSHJ   P,COMERR\r
+       JSP     T5,INICN2\r
+       ERRPN2  </?Disk directory read />\r
+       MOVEI   T3,UFD  ;LOCATION OF FILENAME(AND EXT)\r
+       PUSHJ   P,FN.EX ;PRINT FILE NAME EXTENSION\r
+       MOVE    T2,AUXFLG\r
+       ANDI    T2,DSKIN\r
+       PUSHJ   P,IOERR\r
+       SETSTS  DIR,(IOS)\r
+       JRST    CPOPJ1\r
+
+;OUTPUT THE TIME FOUND IN AC 0\r
+\r
+NOWOUT:        MSTIME                  ;CALL MILLISEC TIMER\r
+       IDIVI   0,^D60000       ;CONVERT TO MINUTES\r
+TIMOUT:        IDIVI   0,^D60\r
+       MOVE    DOUT,0\r
+       PUSHJ   P,OUTDEC\r
+       MOVEI   CHR,":"         ;SEPARATE BY A COLON\r
+       PUSHJ   P,PUT\r
+       MOVE    DOUT,1\r
+       PUSHJ   P,OUTDEC\r
+       JRST    TABOUT\r
+\f;SKIP TO HEAD OF FORM OR NEXT HALF PAGE, RESET COUNT\r
+\r
+HEDR4: TRNE    CALFLG,LISTTY\r
+       POPJ    P,              ;EXIT IF TTY\r
+       SKIPLE  LIN\r
+       JRST    HEDR6           ;ANYTHING ON THIS PAGE?\r
+HEDR5: MOVEI   CHR,FF          ;FORM FEED IF FULL OR\r
+       MOVEI   T2,^D50\r
+HEDR5A:        MOVEM   T2,LIN          ;ALMOST FULL\r
+       PUSHJ   P,PUT\r
+       MOVEI   CHR,LF\r
+       PUSHJ   P,PUT\r
+       PUSHJ   P,PUT\r
+       JRST    PUT             ;PRINT LINEFEEDS AND EXIT\r
+HEDR6: CAIGE   T2,^D25\r
+       JRST    HEDR5\r
+       MOVEI   CHR,HPAGE\r
+       MOVEI   T2,^D16\r
+       JRST    HEDR5A\r
+\r
+;OUTPUT OCTAL WORD FOUND IN AC 0\r
+\r
+OCTLS2:        MOVEI   CHR," "\r
+       CAIGE   0,10            ;AT LEAST 2 CHAR.?\r
+       PUSHJ   P,PUT           ;NO,SO OUTPUT A BLANK\r
+OCTLST:        MOVSI   T1,(POINT 3,0)\r
+       ILDB    CHR,T1\r
+       TLNE    T1,770000       ;ALLOW UPTO 12 OCTAL NOS\r
+       JUMPE   CHR,.-2         ;GET MOST SIG. NUMBER\r
+OCTL1: ADDI    CHR,60          ;CONVERT TO ASCII\r
+       PUSHJ   P,PUT           ;OUTPUT CHAR\r
+       ILDB    CHR,T1          ;GET SUCCEEDING CHARS\r
+       TLNN    T1,400000       ;WAIT TILL POINTING TO NEW\r
+       JRST    OCTL1           ;WORD, THEN EXIT. MEAN WHILE\r
+       POPJ    P,              ;PRINT OCTAL NUMBERS\r
+\r
+;OUTPUT PROTECTION BITS FOUND IN AC 0\r
+\r
+PROTO: MOVEI   CHR,"<"\r
+       MOVSI   T1,(POINT 3,,26)\r
+       PUSHJ   P,OCTL1+1\r
+       MOVEI   CHR,">"\r
+       PUSHJ   P,PUT\r
+       JRST    TABOUT          ;EXIT\r
+\r\f;THIS IS THE DISK ERROR ROUTINE.  CALL DERR4 WITH T3=FIRST WORD ADDRESS\r
+;OF LOOKUP OR ENTER. USE T7 FOR SAVING THE ERROR CODE.\r
+\r
+DERR5A:        MOVEI   T3,FILNAM       ;LOCATION OF FILENAME\r
+       HRRZ    T7,1(T3)        ;GET ERROR CODE\r
+       SKIPE   GENERI          ;FATAL IF NOT GENERIC "DSK"\r
+       CAILE   T7,1            ;NO UFD IF 0 OR 1\r
+       JRST    DERR4           ;ANY OTHER ERROR\r
+       LSTLIN  NOUFD\r
+       MOVEI   T1,LSTU0        ;RETURN ADDRESS\r
+       HRRM    T1,(P)          ;OF POPJ\r
+       JRST    DIRSK2          ;GET NEXT FILE STRUCTURE\r
+NOUFD: ASCIZ   /       no UFD created\r
+/\r
+\r
+DERR6: MOVEI   T3,DTON         ;LOCATION OF FILENAME (OUTPUT)\r
+       SKIP    1\r
+DERR5: MOVEI   T3,ZRF          ;LOCATION OF FILENAME (INPUT)\r
+       HRRZ    T7,1(T3)        ;ERROR TYPE\r
+DERR4: ERRPNT  </? />\r
+       PUSHJ   P,FN.EX         ;PRINT FILE NAME .EXT\r
+       CAIL    T7,TABLND-TABLE ;LEGAL ERROR?\r
+       SKIPA   T1,TABLND       ;NO,USE CATCH ALL MESSAGE\r
+       MOVE    T1,TABLE(T7)    ;PICK UP BYTE POINTER\r
+       JRST    PTEXT1          ;AND PRINT MESSAGE\r
+\r
+TABLE: POINT   7,[ASCII /(0) file was not found!/]\r
+       POINT   7,[ASCII /(1) no such project-programmer number!/]\r
+       POINT   7,[ASCII /(2) protection failure!/]\r
+       POINT   7,[ASCII /(3) file was being modified!/]\r
+       POINT   7,[ASCII /(4) rename file name already exists!/]\r
+       POINT   7,[ASCII /(5) illegal sequence of UUOs!/]\r
+       POINT   7,[ASCII /(6) bad UFD or bad RIB!/]\r
+       POINT   7,[ASCII /(7) not a SAV file!/]\r
+       POINT   7,[ASCII /(10) not enough core!/]\r
+       POINT   7,[ASCII /(11) device not available!/]\r
+       POINT   7,[ASCII /(12) no such device!/]\r
+       POINT   7,[ASCII /(13) not two reloc reg. capability!/]\r
+       POINT   7,[ASCII /(14) no room or quota exceeded!/]\r
+       POINT   7,[ASCII /(15) write lock error!/]\r
+       POINT   7,[ASCII /(16) not enough monitor table space!/]\r
+       POINT   7,[ASCII /(17) partial allocation only!/]\r
+       POINT   7,[ASCII /(20) block not free on allocation!/]\r
+\r
+TABLND:        POINT   7,[ASCII /(?) lookup,enter,or rename error!/]\r
+\f\r
+ADATE: POINT 12,FILNAM+1,35    ;ACCESS DATE\r
+CTIME: POINT 11,FILNAM+2,23    ;CREATION TIME\r
+CDATE: POINT 12,FILNAM+2,35    ;CREATION DATE\r
+PROT:  POINT 9,FILNAM+2,8      ;PROTECTION\r
+MODE:  POINT 4,FILNAM+2,12     ;RECORDING MODE\r
+ADSK1: BLOCK   1               ;OPEN DIRECTORY, MODE\r
+ADSK:  BLOCK   2               ;FILENAME, EXT\r
+LIN:   BLOCK 1                 ;COUNT FOR DSK DIR LIST\r
+UFDIN: BLOCK 3                 ;HEADER FOR READING DISK DIRECTORY\r
+UFD:   BLOCK 4                 ;[P,P] OR *FD*\r
+                               ;UFD OR SYS\r
+DTBLK: BLOCK 1         ; OPEN DTA DIRECTORY BLOCK\r
+DTDEV: BLOCK 2         ; SIXBIT /DTAN/\r
+IFN DISK30,<\r
+BLKHD: BLOCK 3                 ;HEADER FOR READING BLOCKS OFF 10/30 DISK\r
+MASK:   BLOCK 1                        ;PROJ,PROG # 10/30 DISK>\r
+BLKSUM:        BLOCK 1                 ;TOTAL NBR BLOCKS PER PROJ. PROG NBR\r
+LEVEL: BLOCK   1               ;-2 IF LEVEL D DISK SERVICE\r
+GENERI:        BLOCK   1               ;FILE STRUCTURE NAMES IF GENERIC DSK\r
+\r
+       VAR\r
+LOWTOP:\r
+PIPEND:        END PIP1          \r
+\f
diff --git a/src/pip.opr b/src/pip.opr
new file mode 100644 (file)
index 0000000..4f052e9
--- /dev/null
@@ -0,0 +1,8 @@
+\r
+PIP ASSEMBLY AND LOADING INSTRUCTIONS\r
+SEE PAGE ONE OF PIP SOURCE FOR SPECIAL SWITCH SETTING\r
+\r
+THE FOLLOWING IS THE VERSION SUPPLIED BY DEC\r
+       .LOAD /MACRO PIP.NN\r
+       .SSAVE DSK PIP\r
+\f
\ No newline at end of file
diff --git a/src/ptpser.mac b/src/ptpser.mac
new file mode 100644 (file)
index 0000000..2e56121
--- /dev/null
@@ -0,0 +1,242 @@
+TITLE PTPSER - PAPER TAPE PUNCH SERVICE ROUTINE\r
+SUBTTL 8-15-65\r
+EXTERNAL PTPCHN, PTPSAV, ADVBFE, ITMCT1, SETIOD, SETBYT, IOSET, CKS12\r
+EXTERNAL ILLINP,  OUT, WAIT1, PTPRET,PTPCHL,PIOMOD\r
+INTERNAL PTPINT\r
+\r
+;PTP DEVICE DATA BLOCK LINKAGE\r
+\r
+EXTERNAL PTPDB,PTPDAT,PTPCHR,PTPIOS,PTPSER,PTPMOD,PTPBUF\r
+EXTERNAL PTPPTR,PTPADR,PTPCTR,PTPCNT,PTPCHA,PTPSIO\r
+ENTRY PTPDSP\r
+\f\r
+\r
+, PARAMETER ASSIGNMENTS\r
+\r
+\r
+,   PTP CONTROL REGISTER\r
+         PTPDON=10\r
+\r
+,   FORMAT CONTROL\r
+         PTPFDN=200\r
+\r
+,   SPECIAL IO STATUS WORD ASSIGNMENTS\r
+         PTPFED=200000\r
+         PTPSSQ=40000\r
+         PTPEOL=20000\r
+         PTPSEQ=10000\r
+         PTPBIN=4000           ;CHECKSUM BINARY\r
+         PTPIB=2000            ;IMAGE BINARY\r
+\r
+,   SPECIAL ASCII CHARACTERS\r
+         NULL=200\r
+         RUBOUT=377\r
+         HORTAB=211\r
+         VERTAB=213\r
+         FORMFD=214\r
+\r
+REPEAT 0,<\r
+,PTP DATA BLOCK\r
+\r
+PTPDAT:          SIXBIT "PTP"\r
+PTPCHR:          41\r
+PTPIOS:          0\r
+PTPSER:          EXP PTPDSP\r
+PTPMOD:          XWD 1000+PROG.14403\r
+ 0\r
+PTPBUF:          0\r
+PTPPTR:          0\r
+PTPADR:          XWD PROG,0\r
+PTPCTR:          0\r
+PTPCNT:          0\r
+PTPCHA:          0\r
+PTPSIO:          0\r
+>\r
+\r
+,PTP SERVICE DISPATCH TABLE\r
+\r
+PTPDSP:          JRST PTPREL           ;RELEASE\r
+         JRST PTPCLS           ;CLOSE\r
+         JRST PTPOUT           ;OUTPUT\r
+         JRST ILLINP           ;INPUT\r
+\f\r
+\r
+         INTERNAL PTPINI\r
+PTPINI:\r
+PTPREL:          CONO PTP,0\r
+         HLLZS PTPINT          ;CLEAR CONSO FLAG BITS\r
+         POPJ PDP,             ;RETURN\r
+\r
+PTPCLS:          PUSHJ PDP,OUT;        OUTPUT REMAINING BUFFERS\r
+         PUSHJ PDP,WAIT1;      WAIT FOR IOACT=0.\r
+         MOVE IOS,PTPIOS;      C(IOS):=C(PTPIOS)\r
+         TLO IOS,IODISC+PTPFED+IOW;    IODISC:=IOW:=PTPFED:=1\r
+         TRO IOS,IOACT;        IOACT:=1\r
+         MOVEM IOS,PTPIOS;     C(PTPIOS):=C(IOS)\r
+         MOVEI TAC,200\r
+         MOVEM TAC,PTPCNT;     PTPCNT:=400\r
+         MOVEI TAC,PTPDON      ;SET CONSO FLAG\r
+         HRRM TAC,PTPINT\r
+         MOVEI TAC,PTPCHN;     TAC:=PTPCHN,PI CHANNEL ASSIGNMENT\r
+         CONO PTP,PTPDON(TAC);         DONE FLAG:=1, ASSIGN PI CHANN\r
+         JRST WAIT1            ;WAIT FOR IOACT=0, ALL BUFFERS FINISHED\r
+\f\r
+\r
+PTPOUT:          TLZE IOS,IOBEG        ;VIRGIN DEVICE? (IOBEG:=0)\r
+         JRST PTPIN2           ;YES\r
+\r
+PTPIN1:          TRO IOS,IOACT         ;IOACT:=1\r
+         TLZ IOS,IODISC        ;CLEAR DISCONNECT BIT\r
+         MOVEM IOS,PTPIOS      ;PTPIOS:=C(IOS)\r
+         MOVEI TAC,PTPDON      ;SET CONSO FLAG BIT\r
+         HRRM TAC,PTPINT\r
+         MOVEI TAC, PTPCHN\r
+         CONO PTP,PTPDON (TAC);        DONE FLAG:=1, ASSIGN PI CHAN\r
+         POPJ PDP,             ;RETURN\r
+\r
+PTPIN2:          LDB TAC,PIOMOD\r
+         TLO IOS, IOFST+PTPFED+IO      ;IOFST:=PTPFED:=IO:=1\r
+         TLZ IOS,PTPBIN+PTPIB          ;CLEAR BINARY AND IMAGE BINAR\r
+         CAIN TAC,IB           ;IMAGE BINARY?\r
+         TLO IOS,PTPIB         ;YES\r
+         CAIN TAC,B                    ;MODE:=BINARY?\r
+         TLO IOS,PTPBIN        ;YES, PTPBIN:=1\r
+         MOVEI TAC,PTPFDN      ;PTPCNT:=PTPFDN\r
+         MOVEM TAC,PTPCNT\r
+         PUSHJ PDP,SETBYT      ;SETBYT\r
+         HLLM TAC,PTPPTR       ;PTPPTR0-5:=PTPPTR12-13:=0,PTPPTR6-11:=\r
+                               ;SIZE; PTPPTR14-17:=PROG\r
+         JRST PTPIN1\r
+\f\r
+\r
+,PUNCH INTERRUPT SERVICE\r
+\r
+PTPINT:          CONSO PTP,PTPDON;     DONE FLAG=1?\r
+         JRST PTPINT           ;NO. IF PTP IS IN FLAG LIST GO TO ERROR\r
+         MOVEM IOS,PTPSIO      ;PTPSIO:=C(IOS)  SAVE IOS\r
+         MOVE IOS,PTPIOS       ;IOS:=C(PTPIOS)\r
+         TLNE IOS,PTPFED       ;FEED REQUEST? (PTPFED=1?)\r
+         JRST PTPS2            ;YES\r
+         MOVE IOS,PTPSIO       ;RESTORE IOS\r
+         JSR PTPSAV            ;SAVE ACS AND ESTABLISH PDP\r
+         MOVEI DEVDAT,PTPDAT\r
+         PUSHJ PDP,IOSET       ;PROG:=(JBTADR 18-35),ITEM:=C(DEVCTR)\r
+         MOVE IOS,PTPIOS\r
+         TLZE IOS,IODISC       ;DISCONNECT?  (IODISC=1?)\r
+         JRST PTPADV           ;YES\r
+         TLZE IOS,IOFST        ;IOFST=1?  IOFST:=0\r
+         JRST PTP9             ;YES\r
+         TLNN IOS,PTPBIN+PTPIB         ;BINARY PUNCH MODE?\r
+         JRST PTP3             ;NO\r
+\r
+PTPB0:   MOVE TAC,PTPCHA;      BINARY OUTPUT BYTE SIZE=36\r
+         ROT TAC,6\r
+         MOVEM TAC,PTPCHA\r
+         ANDI TAC,77;          TAC:=XX, SIXBIT SUB-BYTE\r
+         ADDI TAC,200\r
+         DATAO PTP,TAC;        PUNCH 2XX\r
+         SOSL PTPCNT;          C(PTPCNT):=C(PTPCNT)-1.   WORD DONE?\r
+         JRST PTPXIT;          NO\r
+         SOSL PTPCTR;          C(PTPCTR):=C(PTPCTR)-1.   ITEM COUNT < 0\r
+         JRST PTPB1;           NO\r
+         TLNE IOS,PTPIB        ;IMAGE BINARY?\r
+         TLOA IOS,IODISC       ;YES, SUPPRESS TAPE FEED.\r
+         TLO IOS,IODISC+PTPFED         ;IODIS:=PTPFED:=1\r
+         MOVEI TAC,10\r
+         MOVEM TAC,PTPCNT;     PTPCNT:=10\r
+         JRST PTPXIT\r
+\r
+PTPB1:   MOVEI TAC,5           ;PTPCNT:=5\r
+         MOVEM TAC,PTPCNT\r
+         MOVE DAT,@PTPPTR;     PTPCHA:=OUTPUT DATA WORD\r
+         AOS PTPPTR;           PTPPTR:=C(PTPPTR)+1.  ADVANCE ITEM POIN\r
+         MOVEM DAT,PTPCHA\r
+         JRST PTPXIT\r
+\f\r
+\r
+PTP3:    DATAO PTP,PTPCHA;     PUNCH CHARACTER\r
+         TRNE IOS,14;          IS MODE AN ALPHA MODE\r
+         JRST PTP1;            NO\r
+         MOVE DAT,PTPCHA\r
+         CAIE DAT,HORTAB;      HORIZONTAL OR VERTICAL TAB?\r
+         CAIN DAT,VERTAB\r
+         JRST PTPP1;           YES\r
+         CAIE DAT,FORMFD;      FORM FEED?\r
+         JRST PTP1;            NO\r
+         TLO IOS,PTPFED+PTPEOL;        PTPFED:=PTPEOL:=1\r
+         MOVEI DAT,20\r
+         MOVEM DAT,PTPCNT;     PTPCNT:=20\r
+         JRST PTPXIT\r
+\f\r
+\r
+PTP1:    SOSGE     PTPCTR;     C(PTPCTR:=C(PTPCTR)-1.  IS C(PTPCTR)<0\r
+         JRST PTP5             ;YES\r
+         LDBI DAT,PTPPTR       ;DAT:=OUTPUT ITEM\r
+         LDB TAC,PIOMOD\r
+         CAIN TAC,I;           MODE=IMAGE?\r
+         JRST PTP6             ;YES\r
+         IORI DAT,200;         NO, INSERT EIGHTH HOLD\r
+         CAIN DAT,NULL;        NULL?\r
+         JRST PTP1;            YES\r
+\r
+PTP6:    MOVEM DAT,PTPCHA;     PTPCHA:=OUTPUT ITEM\r
+         JRST PTPXIT\r
+\r
+PTPS2:   CLEARM    PTPCHA;     PUNCH FEED\r
+         DATAO PTP,PTPCHA\r
+         SOSG PTPCNT;          COUNT FEED LINES\r
+         TLZ IOS,PTPFED;       PTPFED:=0\r
+         MOVEM IOS,PTPIOS;     PTPIOS:=C(IOS)\r
+         MOVE IOS,PTPSIO       ;RESTORE IOS\r
+         JEN @PTPCHL           ;DISMISS\r
+\r
+PTP5:    TLO IOS,IODISC;       IODISC:=1\r
+         JRST PTPXIT\r
+\r
+PTPBN:   HRRZ TAC1,PTPADR;     TAC1:=BUFFER ADDRESS\r
+         PUSHJ PDP,CKS12;      TAC:=CALCULATE CHECKSUM\r
+         ADD TAC1, PTPADR\r
+         HLLM TAC,@TAC1;       STORE CHECKSUM IN LEFT HALF OF FIRST BU\r
+         JRST PTPB1\r
+\f\r
+\r
+PTPADV:          PUSHJ PDP,ADVBFE;     ADVANCE BUFFER\r
+         JRST PTPDSC;          EXIT1.  NEXT BUFFER EMPTY\r
+         TRNE IOS,IOCON;       CONTINUOUS? (IOCON=1?)\r
+         JRST PTPDSC;          YES\r
+         TLZE IOS,IOW;         IN A WAIT?  IOW:=0\r
+         PUSHJ PDP,SETIOD;     YES.  IOWS:=1\r
+PTP9:    TLZ IOS,IOFST;        IOFST:=0\r
+         MOVE TAC,PTPADR\r
+         AOS TAC\r
+         HRRM TAC,PTPPTR;      PTPPTR18-35:=C(PTPADR18-25)+1\r
+         HRRZ ITEM,@TAC;       ITEM:=WORD COUNT\r
+         LDB TAC1,PTP91                ;PICK UP BYTE SIZE\r
+         PUSHJ PDP,ITMCT1;     ITEM:=WORD COUNT*[36/BYTE SIZE]\r
+         MOVEM ITEM,PTPCTR;    PTPCTR:=C(ITEM)\r
+         JUMPE ITEM,PTPADV     ;       IS ITEM COUNT=0?\r
+         TLNE IOS,PTPBIN;      BINARY PUNCH MODE?\r
+         JRST PTPBN;           YES\r
+         TLNN IOS,PTPIB        ;IMAGE BINARY?\r
+         JRST PTP1\r
+         AOS PTPPTR            ;YES\r
+         SOS PTPCTR\r
+         JRST PTPB1\r
+\r
+PTP91:   POINT 6,PTPPTR,11\r
+\r
+PTPP1:   MOVEI DAT,RUBOUT;     PTPCHA:=RUBOUT\r
+         MOVEM DAT,PTPCHA\r
+         TLO IOS,PTPEOL;       PTPEOL:=1\r
+         JRST PTPXIT\r
+\r
+PTPDSC:          PUSHJ PDP,PTPREL      ;CLEAR PTP CONTROL REG AND CONSO BITS\r
+         TRZ IOS,IOACT;        IOACT:=0\r
+         TLO IOS,IOFST;        IOFST:=1\r
+         TLZE IOS,IOW;         IN A WAIT?  IOW:=0\r
+         PUSHJ PDP,SETIOD;     YES.  IOSW:=1\r
+\r
+PTPXIT:          MOVEM IOS,PTPIOS;     PTPIOS:=C(IOS)\r
+         JRST PTPRET;          NO\r
+\r
+END,\r
diff --git a/src/ptrser.mac b/src/ptrser.mac
new file mode 100644 (file)
index 0000000..0340f7d
--- /dev/null
@@ -0,0 +1,170 @@
+TITLE PTRSER - PAPER TAPE READER SERVICE ROUTINE\r
+SUBTTL 8-15-65\r
+EXTERNAL WSYNC, STOSQD, ILLOUT\r
+EXTERNAL STODAT, IOSET, SETBYT, CKS12, ADVBFF\r
+EXTERNAL SETIOD, PTRSAV, PTRCHN, PTRRET,PIOMOD\r
+INTERNAL PTRINT\r
+\r
+;PTR DEVICE DATA BLOCK LINKAGE\r
+\r
+EXTERNAL PTRDB,PTRDAT,PTRCHR,PTRIOS,PTRSER,PTRMOD,PTRBUF\r
+EXTERNAL PTRADR,PTRPTR,PTRCTR,PTRSVC,PTRSV1\r
+ENTRY PTRDSP\r
+\f\r
+\r
+,PARAMETER ASSIGNMENTS\r
+,   PTR CONTROL REGISTER \r
+         PTRDON=10;            DONE FLAG\r
+         PTRBSY=20;            BUSY FLAG\r
+         PTRBIN=40;            BINARY READ MODE\r
+         POW=400;   POWER.  ON=1\r
+\r
+,   SPECIAL IO STATUS WORD ASSIGMENTS\r
+         PTRERR=2000\r
+         PTRFCI=200000\r
+         PTRPOW=100000\r
+,   SPECIAL ASCII CHARACTERS\r
+         NULL=200\r
+         RUBOUT=377\r
+         S2EOF=232;            END OF FILE\r
+,   PI CONTROL REGISTER\r
+         PION=200\r
+         PIOFF=400\r
+\r
+REPEAT 0,<P\r
+,PTR DATA BLOCK\r
+PTRDAT:          SIXBIT "PTR"\r
+PTRCHR:          41\r
+PTRIOS:          0\r
+PTRSER:          EXP PTRDSP\r
+PTRMOD:          XWD 1000+PROG,10403\r
+ 0\r
+PTRBUF:          0\r
+PTRADR:          XWD PROG,0\r
+PTRPTR:          0\r
+PTRCTR:          0\r
+PTRSVC:          0\r
+PTRSV1:          0\r
+>\r
+\r
+,PTR SERVICE DISPATCH TABLE\r
+\r
+PTRDSP:          JRST PTRREL           ;RELEASE\r
+         POPJ PDP,;            CLOSE\r
+         JRST ILLOUT           ;OUTPUT\r
+         JRST PTRINP;          INPUT\r
+\f\r
+\r
+PTRINP:          TLNN IOS,IOBEG;       VIRGIN DEVICE? (IOBEG=1?)\r
+         JRST PTRIN1;          NO\r
+         TLO IOS,IOFST;    IOFST:=1. NEXT ITEM WILL BE FIRST ITEM\r
+         PUSHJ PDP,SETBYT; TAC0-5:=TAC12-13:=0,TAC6-11:=BYTE SIZE\r
+,                              TAC14-17:=PROG\r
+         MOVEM TAC,PTRPTR;     PTRPTR:=C(TAC)\r
+         CONSZ PTR,POW;        IS POWER ON?\r
+         TLO IOS,PTRPOW;       YES. PTRPOW:=1\r
+PTRIN1:          TRO IOS,IOACT;        IOACT:=1\r
+         LDB TAC,PIOMOD\r
+         MOVEI TAC1, PTRCHN;   TAC1:=PTR PI CHANNEL ASSIGNME\r
+         CAIN TAC,B;           MODE=BINARY?\r
+         ADDI TAC1,PTRBIN;     YES.  ALPHA/BINARY:=BINARY\r
+         MOVEI TAC,PTRDON  ;SET CONSO INTERRUPT FLAG\r
+         HRRM TAC,PTRINT\r
+         TLZN IOS,IOBEG;       VIRGIN DEVICE? (IOBEG=1?)\r
+         JRST PTRIN4;          NO\r
+         MOVEM IOS,PTRIOS;     PTRIOS:=C(IOS)\r
+         CONO PTR,PTRBSY(TAC1);        PTR BUSY FLAG:=1,ASSIGN INTER\r
+         POPJ PDP,;            INPUT RETURN-VIRGIN DEVICE\r
+\r
+PTRIN4:          MOVEM IOS,PTRIOS;     PTRIOS:=C(IOS)\r
+         CONO PTR,PTRDON(TAC1);        PTR DONE FLAG:=1,ASSIGN INTER\r
+         POPJ PDP,\r
+\f\r
+\r
+PTRINT:          CONSO PTR,PTRDON      ;INTERRUPT.  IS DONE FLAG = 1?\r
+         JRST PTRINT           ;NO. IF PTR IS IN FLAG LIST, THIS LOC\r
+         SKIPL PTRIOS          ;DISCONNECT REQUEST? (IODISC=1?)\r
+         DATAI PTR,PTRSV1      ;PTRSV1: = DATA WORD\r
+         JSR PTRSAV            ;SAVE ACCUMULATORS AND ESTABLISH PDP\r
+         MOVEI DEVDAT,PTRDAT   ;DEVDAT: = PTR SIXBIT\r
+         PUSHJ PDP,IOSET       ;PROG:=C(JBTADR18-35),ITEM:=C(DEVCTR)\r
+         MOVE IOS,PTRIOS       ;IOS:=C(PTRIOS)\r
+         MOVE DAT,PTRSV1       ;DAT:=C(PTRSV1)\r
+         CONSO PTR,POW         ;PTR POWER ON?\r
+         JRST PTREND           ;NO\r
+         TLON IOS,PTRPOW       ;PTRPOW=1? PTRPOW:=1\r
+         JRST PTREX1           ;NO\r
+         TLZE IOS,IODISC\r
+         JRST PTREX\r
+         TLZE IOS,PTRFCI       ;IS PTRFCI=1?\r
+         MOVE DAT,PTRSVC       ;YES.  DAT:=C(PTRSVC)\r
+PTRIN0:          TRNE IOS,B            ;MODE=BINARY?\r
+         JRST PTRI0            ;YES\r
+         CAIE DAT,NULL         ;LAST CHARACTER NULL OR RUBOUT\r
+         CAIN DAT,RUBOUT\r
+         JRST PTREX1           ;YES\r
+         JUMPE DAT,PTREX1      ;DAT=0?\r
+\r
+PTRI0:   PUSHJ PDP,STODAT      ;NO STORE DATA WORD.\r
+         JFCL      ;CHECKSUM ERROR\r
+         JRST PTRI1            ;BLOCK FULL OR BLOCK COMPLETE\r
+         JRST PTREX1           ;DATA STORED CORRECTLY.\r
+\r
+PTRI1:   PUSHJ PDP,ADVBFF      ;ADVANCE BUFFER\r
+         TLO IOS,IODISC;       NEXT BUFFER IS FULL. IODISC:=1\r
+         TRNE IOS,IOCON;       NEXT BUFFER IS EMPTY.  CONTINUOUS? (IOC\r
+         TLO IOS,IODISC;       NON-CONT. OPERATION. IODISC:=1\r
+PTRI2:   TLO IOS,IOFST;        IOFST:=1.  NEXT ITEM IS FIRST ITEM OF A\r
+         TLZE IOS,IOW;         IN A WAIT?  IOW:=0\r
+         PUSHJ PDP,SETIOD;     IOWS:=1\r
+         JRST PTREX1\r
+\f\r
+\r
+,COME HERE WHEN THE READER IS SHUT OFF\r
+\r
+PTREND:          TDZ IOS,[XWD PTRPOW,IOACT]    ;PTRPOW:=0,IOACT:=0\r
+         PUSHJ PDP,PTRREL      ;CLEAR PTR AND CONSO FLAG\r
+         LDB TAC,PIOMOD\r
+         TLO IOS,IOEND         ;IOEND:=1\r
+         TRNE TAC,B            ;MODE=A,AL\r
+         JRST PTREIB           ;NO\r
+         MOVEI DAT,S2EOF;      EOF CHAR\r
+         PUSHJ PDP,STODAT      ;STORE DATA WORD\r
+         JRST PTRI0+1          ;CHECKSUM ERROR\r
+         JRST .+3      ;BLOCK FULL OF BLOCK COMPLETE\r
+PTREI:   PUSHJ PDP,STOSQD;     FINISH THIS BUFFER, STORE WORD COUNT\r
+         SKIP\r
+         PUSHJ PDP,ADVBFF      ;ADVANCE BUFFER\r
+         SKIP\r
+         JRST PTRI2\r
+\r
+PTREIB:          CAIE TAC,B            ;MODE=BINARY?\r
+         JRST PTREI            ;NO\r
+         TLNN IOS,IOFST        ;IOFST=1?\r
+         TRO IOS,PTRERR        ;NO.  PTRERR:=1.  BINARY BLOCK INCOMPLE\r
+         JRST PTRI2\r
+\f\r
+\r
+,DISCONNECT PTR\r
+PTREX:   SKIPG @PTRADR         ;IOUSE=1?\r
+         JRST PTREX0           ;YES.\r
+         DATAI PTR,PTRSV1\r
+         JRST PTRIN0\r
+\r
+PTREX0:          DATAI PTR,PTRSVC      ;SAVE LAST DATA WORD FROM PTR\r
+         PUSHJ PDP,PTRREL      ;CLEAR PTR AND CONSO FLAG\r
+         TLO IOS,PTRFCI        ;PTRFCI:=1\r
+         TRZ IOS,IOACT         ;IOACT:=0\r
+\r
+PTREX1:          MOVEM ITEM,PTRCTR     ;PTRCTR:=C(ITEM)\r
+         MOVEM IOS,PTRIOS      ;PTRIOS:=C(IOS)\r
+         JRST PTRRET           ;RESTORE ACCUMULATORS AND DISMISS INTER\r
+\r
+         INTERNAL PTRINI\r
+\r
+PTRINI:\r
+PTRREL:          CONO PTR,0            ;CLEAR PTR CONTROL\r
+         HLLZS PTRINT          ;CLEAR CONSO FLAG\r
+         POPJ PDP,\r
+\r
+         END,\r
diff --git a/src/rim10b.mac b/src/rim10b.mac
new file mode 100644 (file)
index 0000000..b2d0d7b
--- /dev/null
@@ -0,0 +1,267 @@
+\f      TITLE   RIMIO\r
+\r
+;CONVERTS RIM10B PAPER TAPES TO DMP FILES AND VICE-VERSA\r
+\r
+EXTERN JOBSA,JOBREL,JOBSYM,JOBS41\r
+\r
+A=1\r
+B=2\r
+C=3\r
+D=4\r
+CHK=13\r
+BLK=14\r
+LNG=15\r
+R=16\r
+P=17\r
+\r
+PDLEN==40\r
+\r
+PDLIST:        BLOCK   PDLEN\r
+\r
+OFILE: BLOCK   5                       ;OFILE+4 IS THE DEVICE.\r
+IFILE: BLOCK   5                       ;IFILE+4 IS THE DEVICE\r
+OBUF:  BLOCK   3\r
+IBUF:  BLOCK   3\r
+\r
+DMPBUF:        BLOCK   200                     ;RANDOM ACCESS DUMP IO BUFFER.\r
+HILOC: 0\r
+\f;ERRORS:\r
+\r
+NOENT: OUTSTR  [ASCIZ/Enter to create output file failed.\r
+/]\r
+       JRST    BEGIN\r
+\r
+NOLALT:        OUTSTR  [ASCIZ/Lookup to read-alter the output file failed.\r
+/]\r
+       JRST    BEGIN\r
+\r
+NOALT: OUTSTR  [ASCIZ/Enter to read-alter the output file failed.\r
+/]\r
+       JRST    BEGIN\r
+\r
+NOPTR: OUTSTR  [ASCIZ/OPEN of device PTR: failed.\r
+/]\r
+       JRST    BEGIN\r
+\r
+NOOPEN:        OUTSTR  [ASCIZ/OPEN failed\r
+/]\r
+       JRST    BEGIN\r
+\r
+\f;INITIALIZATION, DISPATCH\r
+\r
+BEGIN: RESET\r
+       MOVE    P,[IOWD PDLEN,PDLIST]\r
+RORP:  OUTSTR  [ASCIZ/Read tape or Punch tape?  (Type R or P)  /]\r
+       INCHWL  A\r
+       PUSHJ   P,CLRIN\r
+       TRZ     A,40                    ;MAKE SURE IT'S UPPERCASE\r
+       CAIN    A,"R"\r
+       JRST    RTAPE\r
+       CAIN    A,"P"\r
+       JRST    PTAPE\r
+       OUTSTR  [ASCIZ/?\r
+/]\r
+       JRST    RORP\r
+\r
+CLRIN: PUSH    P,A\r
+CLRIN1:        CAIE    A,175\r
+       CAIN    A,12\r
+       JRST    APOPJ\r
+       INCHWL  A\r
+       JRST    CLRIN1\r
+\r
+;HERE'S HOW THE RIM10B LOADER LOOKS ON THE TAPE:\r
+PTR??104\r
+;AC 10 CONTAINS (WHEN 5 IS EXECUTED):\r
+;      SOJA    10,4 - INITIAL POINTER OR JRST WORD\r
+;      SOJA    10,3 - MIDDLE OF DATA BLOCK\r
+;      SOJA    10,2 - WHEN READING THE CHECKSUM WORD\r
+;\r
+RIM10B:        -16,,0                          ; 0  INITIAL BLKI WORD\r
+       CONO    PTR,60                  ; 1  START PTR IN BINARY MODE\r
+       HRRI    10,4                    ; 2  INITIALIZE 10 (FOR INDEX AND JUMP ADDR)\r
+       CONSO   PTR,10                  ; 3  SKIP IF DONE\r
+       JRST    3                       ; 4  WAIT FOR DONE\r
+       DATAI   PTR,@7(10)              ; 5  STORE DATA INDIRECT (13 OR 12 OR 11)\r
+       XCT     7(10)                   ; 6  EXECUTES 13 OR 12 OR 11\r
+       XCT     12(10)                  ; 7  EXECUTES 16 OR 15 OR 14\r
+       SOJA    10,0                    ;10  RH IS CLOBBERED TO 4 OR 3 OR 1\r
+       CAME    17,16                   ;11  XCTED TO CHECK CHECKSUM\r
+       ADD     17,1(16)                ;12  XCTED TO COMPUTE CHECKSUM\r
+       SKIPL   17,16                   ;13  XCT TO INITIALIZE CHECKSUM AND\r
+                                       ;    SKIP IF THIS IS AN AOBJN WORD\r
+       JRST    4,1                     ;14  XCT TO HALT IF CHECKSUM FAILS\r
+       AOBJN   16,3                    ;15  XCT WHILE READING MIDDLE OF DATA BLOCK\r
+       JRST    2                       ;16  XCTED BY READIN MODE. XCT TO START PRGM\r
+                                       ;17  CHECKSUM IS STORED HERE.\r
+\r
+RIMPTR:        RIM10B-.,,RIM10B-1              ;IOWD POINTER TO THE RIM10B LOADER\r
+\f;RTAPE\r
+\r
+RTAPE: OUTSTR  [ASCIZ/Output file name: /]\r
+       MOVEI   R,OFILE\r
+       MOVE    A,[OFILE,,OFILE+1]\r
+       SETZM   OFILE\r
+       BLT     A,OFILE+4\r
+       MOVSI   A,'DMP'\r
+       MOVEM   A,OFILE+1\r
+       PUSHJ   P,GETFIL                        ;READ FILE NAME FROM USER.\r
+\r
+       MOVEI   A,17                            ;OPEN CHANNEL\r
+       SKIPN   B,OFILE+4\r
+       MOVSI   B,'DSK'\r
+       MOVEI   C,0\r
+       OPEN    1,A\r
+       JRST    NOOPEN\r
+       MOVE    D,[OFILE,,A]\r
+       BLT     D,D\r
+       ENTER   1,A                             ;SELECT OUTPUT FILE.\r
+       JRST    NOENT   \r
+       CLOSE   1,                              ;WRITE 0 LENGTH FILE.\r
+       RELEAS  1,\r
+       MOVEI   A,17                            ;RE-OPEN CHANNEL\r
+       SKIPN   B,OFILE+4\r
+       MOVSI   B,'DSK'\r
+       MOVEI   C,0\r
+       OPEN    1,A\r
+       JRST    NOOPEN\r
+       MOVE    D,[OFILE,,A]\r
+       BLT     D,D\r
+       LOOKUP  1,A                             ;SEEK FILE WE JUST WROTE\r
+       JRST    NOLALT                          ;I JUST WROTE ONE. WHERE IS IT?\r
+       MOVE    D,[OFILE,,A]\r
+       BLT     D,D\r
+       ENTER   1,A                             ;ENTER READ-ALTER MODE\r
+       JRST    NOALT   \r
+\r
+       INIT    0,13                            ;PTR IN BINARY MODE.\r
+       'PTR   '\r
+       IBUF\r
+       JRST    NOPTR\r
+\r
+       OUTSTR  [ASCIZ/Mount paper tape and type return when ready:\r
+/]\r
+       MOVEI   A,0\r
+       PUSHJ   P,CLRIN\r
+\r
+       MOVE    B,RIMPTR\r
+       PUSHJ   P,TREAD                         ;READ IOWD FOR TAPE'S LOADER\r
+       CAMLE   A,1(B)                          ;OK IF TAPE'S LOADER IS LONGER\r
+       JRST    BADRIM                          ;BUT NOT IF SHORTER.\r
+       MOVE    C,A                             ;IOWD FOR TAPE'S LOADER\r
+       ADD     B,[1,,1]\r
+RIMCHK:        PUSHJ   P,TREAD                         ;\r
+       CAME    A,1(B)\r
+       JRST    BADRIM                          ;TAPE ISN'T IN RIM FORMAT.\r
+       ADD     C,[1,,1]\r
+       AOBJN   B,RIMCHK                        ;LOOP, GOBBLING THE RIM10B LOADER.\r
+       JUMPG   C,RIMOK                         ;JUMP IF TAPE'S IOWD IS COUNTED OUT\r
+       PUSHJ   P,TREAD                         ;READ AND THROW OUT EXTRA WORDS\r
+       AOBJN   C,.-1                           ;FROM THE TAPE'S LOADER.\r
+RIMOK: PUSHJ   P,FILINI\r
+GETBLK:        PUSHJ   P,TREAD\r
+       SKIPL   B,A                             ;SKIP IF THIS IS A POINTER WORD\r
+       JRST    SSTART                          ;SET STARTING ADDRESS\r
+       MOVE    CHK,B                           ;INITIALIZE CHECKSUM\r
+RIMLP: PUSHJ   P,TREAD\r
+       ADD     CHK,A\r
+       PUSHJ   P,FILSTR                        ;STORE IN FILE. DATA A IN LOC 1(B)\r
+       AOBJN   B,RIMLP                         ;LOOP\r
+       PUSHJ   P,TREAD                         ;READ CHECKSUM WORD\r
+       CAMN    A,CHK\r
+       JRST    GETBLK                          ;GET ANOTHER IOWD.\r
+       OUTSTR  [ASCIZ/Checksum failure.\r
+/]\r
+       HALT    GETBLK\r
+\r
+UNEOF: OUTSTR  [ASCIZ/Unexpected End of File from PTR:\r
+/]\r
+       MOVEI   A,0                             ;STORE ZERO FOR THE STARTING ADDRE.\r
+SSTART:        MOVE    B,HILOC                         ;GET HIGHEST LOC LOADED.\r
+       HRLI    A,1(B)                          ;ONE BEYOND IS INITIAL JOBFF\r
+       MOVEI   B,JOBSA-1\r
+       PUSHJ   P,FILSTR\r
+       PUSHJ   P,FILFRC\r
+       CLOSE   1,\r
+       RELEAS  1,\r
+       RELEAS  0,\r
+       JRST    BEGIN\r
+\r
+BADRIM:        OUTSTR  [ASCIZ/Bad format RIM10B loader at the front of the tape?\r
+/]\r
+       JRST    BEGIN\r
+\r
+PTRERR:        OUTSTR  [ASCIZ/PTR input error\r
+/]\r
+       GETSTS  0,A\r
+       HALT    .+1\r
+       SETSTS  0,10\r
+TREAD: SOSLE   IBUF+2\r
+       JRST    TRED1\r
+       INPUT   0,\r
+       STATZ   0,20000\r
+       JRST    [POP P,(P)\r
+               JRST UNEOF]\r
+       STATZ   0,740000\r
+       JRST    PTRERR\r
+TRED1: ILDB    A,IBUF+1\r
+       POPJ    P,\r
+\r
+FILSTR:        MOVEI   C,1(B)                  ;C?ABSOLUTE ADDRESS.\r
+       CAIN    C,36                    ;EXEC MODE JOBSYM?\r
+       MOVEI   C,JOBSYM\r
+       CAIN    C,41                    ;UUO TRAP?\r
+       MOVEI   C,JOBS41                ;YES.  HERE'S WHERE IT BELONGS IN DMP FORMAT\r
+       CAMLE   C,HILOC                 ;IS THIS HIGHEST LOC LOADED THUS FAR?\r
+       MOVEM   C,HILOC                 ;YES.  SAVE HIGHEST LOC LOADED.\r
+       SUBI    C,74                    ;OFFSET TO DMP FILE ORIGIN=WORD # IN FILE.\r
+       JUMPL   C,CPOPJ                 ;RETURN IF OFF THE FRONT.\r
+       IDIVI   C,200                   ;BLOCK NUMBER-1 IN C, WORD NUMBER IN D.\r
+       ADDI    C,1                     ;THIS IS THE USET POINTER\r
+       CAIN    C,(BLK)                 ;SAME AS WHAT'S IN CORE?\r
+       JRST    FILST2                  ;YES. - THIS IS THE EASY CASE.\r
+FILST0:        PUSHJ   P,FILFRC                ;FORCE CURRENT RECORD OUT.  ADVANCE TO NEXT\r
+       CAIG    C,(LNG)                 ;IS DESIRED RECORD WITHIN EXISTING FILE?\r
+       JRST    FILST1                  ;YES.  READ IT (UNLESS THE LAST RECORD)\r
+       MOVEI   BLK,(LNG)               ;SET TO APPEND A ZERO RECORD TO THE FILE.\r
+       JRST    FILST0\r
+\r
+FILST1:        MOVEI   BLK,(C)                 ;MAKE DESIRED RECORD THE CURRENT RECORD\r
+       CAIL    BLK,(LNG)               ;IS THIS THE NON-EX RECORD AT END OF FILE?\r
+       JRST    FILST2                  ;YES.  WE CAN'T (AND DON'T NEED TO) READ IT.\r
+       USETI   1,(BLK)\r
+       INPUT   1,[-200,,DMPBUF-1\r
+               0]\r
+FILST2:        MOVEM   A,DMPBUF(D)             ;STORE DATA\r
+       POPJ    P,\r
+\r
+FILINI:        MOVEI   BLK,1                           ;REC # THAT IS "IN CORE".\r
+       MOVEI   LNG,1                           ;RECORD NUMBER OF EOF\r
+       SETZM   HILOC                           ;HIGHEST LOCATION LOADED\r
+FILCLR:        SETZM   DMPBUF\r
+       PUSH    P,A\r
+       MOVE    A,[DMPBUF,,DMPBUF+1]\r
+       BLT     A,DMPBUF+177\r
+APOPJ: POP     P,A\r
+CPOPJ: POPJ    P,\r
+\r
+FILFRC:        USETO   1,(BLK)                         ;SELECT OUTPUT RECORD ALWAYS\r
+       OUTPUT  1,[-200,,DMPBUF-1               ;WRITE CURRENT RECORD.\r
+                       0]\r
+       ADDI    BLK,1\r
+       CAMGE   LNG,BLK \r
+       MOVE    LNG,BLK                         ;INCREASE LNG IF INCREASING FILE.\r
+       JRST    FILCLR                          ;NEXT RECORD NUMBER\r
+\f;THINGS TO WRITE LATER:\r
+\r
+GETFIL:        MOVE    A,['RIMOUT']\r
+       MOVEM   A,(R)\r
+       OUTSTR  [ASCIZ/RIMOUT.DMP\r
+/]\r
+       POPJ    P,\r
+\r
+PTAPE: OUTSTR  [ASCIZ/Not ready.\r
+/]\r
+       jrst    begin\r
+\r
+END BEGIN\r
diff --git a/src/runcss.mac b/src/runcss.mac
new file mode 100644 (file)
index 0000000..f2060fd
--- /dev/null
@@ -0,0 +1,428 @@
+TITLE RUNCSS - RUN CONTROL SUBROUTINES\r
+SUBTTL T. HASTINGS   8-16-65\r
+EXTERNAL APRCHN,APRCHL,CH6SAC,JBTADR,JOB,JOBAC,JOBDAT,JOBN\r
+EXTERNAL JOBPDP,USRDDT,USRPDP,JOBDDT\r
+EXTERNAL IORELS,JBTSTS,JOBADR,JOBCDP,JOBPC,JOBREL,JOBSA,JOBSYM\r
+EXTERNAL MESPNT,QUANT1,JOBDAC,TTYSTR,STOPU,SCHEDF\r
+EXTERNAL UXIT,IOCOMP,DCREQ,DCAVAL,DTREQ,DTAVAL,MTREQ,MTAVAL\r
+EXTERNAL CH1XIT,CH2XIT,CH3XIT,CH4XIT,CH5XIT,CH6XIT,CH7XIT\r
+EXTERNAL JOBFF,MJOBPD,JOBPDL,IOCOMP,PJOBN,USRLO,USRLO1,USRHI\r
+EXTERNAL TTYFNU,RSCHED\r
+\f\r
+;EXIT UUO ROUTINE\r
+\r
+         INTERNAL EXIT\r
+EXTERNAL IORELS,TTYFNU,MESPNT,IOKILL\r
+\r
+EXIT:    PUSHJ PDP,IORELS      ;RELEASE ALL DEVICES\r
+         PUSHJ PDP,TTYFNU\r
+         MOVEI TAC1,EXMESS\r
+         PUSHJ PDP,MESPNT\r
+         JRST HOLD ;STOP THIS USER IMMEDIATELY\r
+\r
+EXMESS:          ASCIZ /\r
+EXIT\r
+/\r
+;RESET UUO ROUTINE\r
+\r
+         INTERNAL RESET\r
+\r
+RESET:   PUSHJ PDP,IOKILL      ;RELEASE ALL DEVICES\r
+         PUSHJ PDP,SETUSR      ;CLEAR PART OF JOB DATA AREA\r
+         JRST UXIT             ;AND RETURN TO CALLER\r
+\f\r
+\r
+;COMMON ERROR HANDLING ROUTINES\r
+;DEVDAT MUST BE SET UP TO TTY DDB ON WHICH TO PRINT ERROR MESSAGE\r
+\r
+;HERE ON ERROR DETECTED AT INTERRUPT SERVICE LEVEL\r
+;0(PDP) CONTAINS ADR. OF DEVICE DATA BLOCK CAUSING ERROR\r
+\r
+;CALL    MOVE TAC, PI CHANNEL NO DETECTING ERROR\r
+;        JRST HOLDI\r
+\r
+INTERNAL HOLDI,HOLD,HOLDI1\r
+\r
+HOLDI:   MOVE TAC1, 0(PDP)     ;DEVICE DATA BLOCK\r
+         LDB ITEM, [POINT 9, DEVCHR(TAC1), 8]          ;GET JOB NUMBER\r
+HOLDI1:          PUSH PDP, TAC         ;SAVE PI CHANNEL NO.\r
+         PUSHJ PDP, HOLDSB\r
+         POP PDP, TAC\r
+         JRST CHNTAB(TAC)      ;GO RESTORE ACS AND DISMISS CHANNEL\r
+\r
+CHNTAB:          JRST RSCHED           ;INTERRUPT ON CLOCK CHANNEL,RESCHEDULE\r
+         JRST CH1XIT\r
+         JRST CH2XIT\r
+         JRST CH3XIT\r
+         JRST CH4XIT\r
+         JRST CH5XIT\r
+         JRST CH6XIT\r
+         JRST CH7XIT\r
+\r
+;HERE ON ERROR FROM UUO LEVEL. ERROR MESSAGE ALREADY IN TTY BUFFER\r
+\r
+;DAT=BYTE POINTER TO END OF MESSAGE; DEVDAT=TTY DEV. DATA BLOCK\r
+HOLD:    MOVE ITEM, JOB                ;NO. OF THIS JOB\r
+         PUSHJ PDP,WAIT1               ;WAIT UNTIL TTY FINISHED\r
+\r
+HOLDSB:          PUSHJ PDP,CRLF\r
+         PUSHJ PDP, TTYSTR     ;START UP TTY TO PRINT ERROR MESSAGE\r
+EXTERNAL CRLF\r
+\r
+;ROUTINE TO STOP USER AND FLAG AS ERROR STOP\r
+;CALL:   MOVE ITEM, JOB NUMBER\r
+;        PUSHJ PDP,ESTOP\r
+\r
+\r
+INTERNAL ESTOP\r
+\r
+ESTOP:   MOVSI TAC,JERR                ;SET ERROR BIT IN JOB STATUS\r
+         IORM TAC, JBTSTS(ITEM)\r
+         JRST STOP1\r
+\f\r
+\r
+,BLOCK TRANSFER PROGRAM OVER LOADER\r
+\r
+         INTERNAL LDRBLT\r
+         EXTERNAL USRREL\r
+\r
+         PGADR=2               ;AC CONTAINING BEGINNING OF PROGRAM(LOA\r
+\r
+LDRBLT:          PUSHJ PDP,IORELS\r
+         HRRZ TAC, PGADR (JDAT)        ;ADD OFFSET TO SYMBOL TABLE P\r
+         SETZM PGADR(JDAT)     ;THEN CLEAR SO SYSMAK WILL STILL WORK\r
+         HRRZ DAT,PROG\r
+         ADD DAT,TAC\r
+         ADDM TAC,JOBSYM(DAT)\r
+         HRL DAT,PROG\r
+         HLRZ TAC,JOBSA(DAT)\r
+         CAMLE TAC,USRREL      ;IS HIGHEST DESTINATION STILL IN USER A\r
+         MOVE TAC,USRREL       ;NO. MAKE SURE IT IS.\r
+         MOVSS DAT\r
+         ADD TAC,DAT\r
+         ADD DAT,[XWD 30,30]   ;MOVE PROGRAM DOWN\r
+         BLT DAT,(TAC)\r
+         MOVE TAC,JOBDDT(JDAT)\r
+         MOVEM TAC,USRDDT\r
+         PUSHJ PDP,SETUSR\r
+         PUSHJ PDP,TTYFNU\r
+         MOVEI TAC1,LDRMES\r
+         PUSHJ PDP,MESPNT\r
+         JRST HOLD\r
+\r
+LDRMES:          ASCIZ /\r
+LOADER FINISHED\r
+/\r
+\f\r
+\r
+INTERNAL STOP1, STOP2, CONT1, START1\r
+\r
+PION=200\r
+PIOFF=400\r
+\r
+;ROUTINE TO PUT CURRENT JOB IN IO WAIT\r
+;ROUTINE TO STOP CURRENT JOB\r
+;MAY BE CALLED FROM ANY LEVEL\r
+;CALL;   PUSHJ PDP,STOP0\r
+;        RETURN                ;RETURN HERE IMMEDIATELY, IF CALLED FRO\r
+;PRIORITY CHANNEL THAN CLOCK. OTHERWISE RETURN WHEN JOB IS RUNABLE AG\r
+\r
+INTERNAL STOP0\r
+\r
+STOP0:   MOVE ITEM, JOB                ;CURRENT JOB NUMBER\r
+\r
+;ROUTINE TO STOP ANY JOB FROM BEING SCHEDULED\r
+;CALL:\r
+;         MOVE ITEM, JOB NUMBER\r
+;         PUSHJ PDP, STOP1\r
+;         EXIT     ;RETURN HERE IMMEDIATELY, IF CALLED FROM HIGHER\r
+;PRIORITY CHANNEL THAN CLOCK, OTHERWISE RETURN WHEN JOB IC RUNABLE\r
+;CALLED WHEN CONTROL C TYPED OR ON ERROR MESSAGES\r
+\r
+STOP1:    MOVSI TAC, RUN\r
+          CONO PI, PIOFF       ;DONE AT INTERUPT LEVEL HIGHER THAN DT\r
+          TDNN TAC, JBTSTS(ITEM)               ;IS RUN BIT ON IN JOB STATUS\r
+          JRST STOPA           ;NO\r
+          ANDCAB TAC, JBTSTS(ITEM)             ;YES, SO CLEAR IT\r
+          CONO PI, PION\r
+          TLNE TAC, DTW        ;WAITING TO USE DECTAPE\r
+          SOS DTREQ ;YES, REDUCE REQUEST COUNT\r
+          TLNE TAC, DCW        ;DATA CONTROL\r
+          SOS DCREQ\r
+          TLNE TAC,MTW         ;MAG TAPE\r
+          SOS MTREQ\r
+STOPA:    CONO PI, PION        ;MAKE SURE PI ON\r
+          SKIPE SCHEDF         ;IS CLOCK IN THE MIDDLE OF SCHEDULING\r
+          JRST STOP2           ;YES, MAKE SURE THIS JOB WONT RUN\r
+          CAME ITEM, JOB       ;NO, IS THIS JOB CURRENT USER\r
+          POPJ PDP,            ;NO\r
+                               ;YES, MAKE CLOCK RESCHEDULE\r
+\r
+;ROUTINE TO CAUSE CLOCK TO RESCHEDULE\r
+;CALL :\r
+;         PUSHJ PDP, STOP2\r
+;         EXIT         ;RETURN WHEN JOB RUNABLE AGAIN\r
+\r
+EXTERNAL PICLK\r
+\r
+STOP2:    CONO PI, PIOFF       ;PREVENT CLOCK INTERRUPT\r
+          SETOM STOPU          ;SET FLAG FOR CLOCK ROUTINE\r
+          CONO PI,PICLK        ;REQUEST CLOCK INTERRUPT AND TURN PI ON\r
+                               ;CLOCK WILL TRAP IMMEDIATELY IF AT UUO\r
+          POPJ PDP,            ;RETURN HERE WHEN JOB RUNABLE AGAIN\r
+\f\r
+\r
+;SUBROUTINE TO SETUP A MONITOR JOB TO BE RUN\r
+;JOB MUST HAVE CORE ASSIGNED\r
+;CALL:   MOVE ITEM, JOB NUMBER\r
+;        HRRI TAC1, ADDRESS OF MONITOR JOB(A SUBROUTINE)\r
+;        HRLI TAC1, RETURN ADDRESS WHEN JOB FINISHED\r
+;        PUSHJ PDP, MONJOB\r
+;        RETURN IMMEDIATELY IF CALLED FROM CLOCK LEV OR HIGHER\r
+\r
+;ALL ACS WILL BE SAVED FOR THE MONITOR JOB\r
+\r
+INTERNAL MONJOB\r
+EXTERNAL JOBDAC,JOBDHI,JOBPDP,MJOBPD,JOBPDL,JBTADR\r
+\r
+MONJOB:          PUSH PDP, TAC1        ;SAVE ARG.\r
+         HRRZ JDAT,JBTADR(ITEM)        ;ADDRESS OF JOBS DATA AREA\r
+         MOVEI TAC1, JOBDAC(JDAT)      ;SAVE 0-17 IN DUMP ACS\r
+         BLT TAC1, JOBDHI(JDAT)        ;IN JOB DATA AREA\r
+         MOVSI TAC1,MJOBPD     ;SET UP PD LIST IN JOB DATA AREA\r
+         HRRI TAC1, JOBPDL(JDAT)\r
+         HLRZ TAC, (PDP)       ;WITH RETURN AS FIRST ITEM\r
+         PUSH TAC1, TAC\r
+         MOVEI TAC, JOBDAC(JDAT)\r
+         MOVEM TAC1,PDP(TAC)\r
+         POP PDP, TAC1         ;SET TO RUN\r
+         ANDI TAC1, 777777     ;FALL INTO STARTU\r
+\r
+;ROUTINE TO START A JOB AND LEAVE CONSOLE IN COMMAND MODE\r
+;CALL:   MOVE TAC1, START PC\r
+;        MOVE ITEM, JOB NUMBER\r
+;        PUSHJ PDP, STARTU\r
+;        RETURN IMMEDIATELY\r
+INTERNAL STARTM\r
+EXTERNAL TTYURC\r
+\r
+STARTM:          PUSHJ PDP, START1\r
+         JRST TTYURC\r
+\r
+;START WITH TTY IN USER MODE\r
+\r
+INTERNAL STARTU\r
+EXTERNAL TTYSET\r
+\r
+STARTU:          PUSHJ PDP,START1\r
+         JRST TTYSET           ;SET SCANNER TO CALL SETRUN WHEN\r
+                               ;CR-LF AND INITIALIZE TTY\r
+\r
+INTERNAL CONTM\r
+EXTERNAL TTYURC\r
+\r
+CONTM:   JRST TTYURC\r
+\r
+;ROUTINE TO CONTINUE A JOB FROM COMMAND MODE\r
+;CALL:   MOVE ITEM, JOB NUMBER\r
+;        PUSHJ PDP, CONTU\r
+;        RETURN IMMEDIATELY\r
+INTERNAL CONTU\r
+EXTERNAL TTYURC\r
+\r
+CONTU:   JRST TTYURC           ;SET SCANNER TO CALL SETRUN WHEN CR-LF\r
+\f\r
+\r
+;ROUTINE TO SET JOB STATE TO BE SCHEDULED TO RUN\r
+;WITH SPECIFIED STARTING ADDRESS INCLUDING PC FLAGS\r
+;CALL:   MOVE TAC1,STARTING PC\r
+;        MOVE ITEM, JOB NUMBER\r
+;        MOVE JDAT, ADDRESS OF JOBS DATA AREA(THERE MUST BE ONE)\r
+;        PUSHJ PDP, START1\r
+         ;         EXIT        RETURN HERE IMMEDIATELY\r
+\r
+START1:          MOVE TAC,JOBPC(JDAT)          ;GET OLD PC\r
+         MOVEM TAC1,JOBPC(JDAT)        ;STORE NEW PC\r
+         TLNE TAC1,USRMOD              ;IS NEW PC IN USER AREA?\r
+         TLNE TAC,USRMOD               ;YES, WAS OLD PC IN USER AREA\r
+         JRST START2                   ;YES,DUMP ACS ARE HIS\r
+         MOVSI TAC1,(JDAT)             ;NO, UUO ACS ARE HIS\r
+         HRRI TAC1,JOBDAC(JDAT)        ;MOVE THEM TO DUMP ACS\r
+         BLT TAC1,JOBDHI(JDAT)\r
+START2:          MOVSI TAC1,JERR+DCW+DTW+MTW+JIOW      ;CLEAR WAIT BITS\r
+         ANDCAM TAC, JBTSTS(ITEM)      ;IN JOB STATUS WORD\r
+\r
+;ROUTINE TO CONTINUE ANY JOB AT CURRENT PC\r
+;CALL:\r
+;        MOVE ITEM, JOB NUMBER\r
+;        PUSHJ PDP, CONT1\r
+;        EXIT      RETURN IMMEDIATELY\r
+\r
+CONT1:   POPJ PDP,\r
+\f\r
+\r
+;ROUTINE TO SET JOB STATUS RUN BIT\r
+;CALL:   MOVE ITEM,JOB NUMBER\r
+;        PUSHJ PDP,SETRUN\r
+\r
+         INTERNAL SETRUN\r
+SETRUN:          MOVSI TAC,RUN\r
+         IORB TAC,JBTSTS(ITEM)\r
+         TLNN TAC,DCW          ;IS JOB WAITING FOR DATA CONTROL?\r
+         JRST CONT2            ;NO\r
+         AOSG DCREQ            ;YES, INCREMENT REQUEST COUNT\r
+         SETOM DCAVAL          ;AND SET DC AS AVAIL IF NOT IN USE\r
+CONT2:   TLNN TAC,DTW          ;DECTAPE?\r
+         JRST CONT3            ;NO\r
+         AOSG DTREQ\r
+         SETOM DTAVAL\r
+CONT3:   TLNN TAC,MTW          ;MAG TAPE?\r
+         JRST CONT4\r
+         AOSG MTREQ\r
+         SETOM MTAVAL\r
+CONT4:   TLNE TAC,IOWS         ;IO WAIT SATISFIED?\r
+         AOS IOCOMP            ;YES\r
+         MOVEI TAC,QUANT1      ;SET TIME TO RUN FOR STRAIGHT QUEUE COM\r
+         HRRM TAC,JBTSTS(ITEM)         ;RESPONSE IS FINISHED\r
+         SKIPE JOB ;IS NULL JOB RUNNING?\r
+         POPJ PDP,             ;NO\r
+         JRST STOP2                    ;YES, RESCHEDULE\r
+\f\r
+\r
+,ROUTINE TO INIATE A WAIT FOR MAG TAPE. DECTAPE, AND DATA CONTROL AC\r
+         INTERNAL MTWAIT\r
+MTWAIT:          PUSH PDP,TAC1\r
+         HRLZI TAC1,MTW\r
+DVWAIT:          PUSH PDP, TAC\r
+         MOVE TAC,JOB\r
+         IORM TAC1,JBTSTS(TAC)\r
+         PUSHJ PDP,STOP2\r
+         POP PDP,TAC\r
+         POP PDP,TAC1\r
+         POPJ PDP,\r
+         INTERNAL DTWAIT\r
+DTWAIT:          PUSH PDP,TAC1\r
+         HRLZI TAC1,DTW\r
+         JRST DVWAIT\r
+         INTERNAL DCWAIT\r
+DCWAIT:          PUSH PDP,TAC1\r
+         HRLZI TAC1,DCW\r
+         JRST DVWAIT\r
+         INTERNAL DVWAIT\r
+\f\r
+\r
+\r
+,DEC 06 00 EX JOB L PT PRE 02 SETIOD\r
+,H.R. MORSE    64-12-26\r
+,CALLING SEQUENCE\r
+,     PUSHJ PDP, SETIOD\r
+,     EXIT             ALWAYS RETURNS HERE\r
+,SETS THEBIT (IOWS:=1) IN THE JOB STATUS WORD (JBTSTS)\r
+,INFORMING THE SYSTEM THAT AN I/O WAIT HAS BEEN COMPLETED\r
+,AND THE JOB IS READY TO RUN AGAIN.\r
+,MONITOR INTERFACE\r
+,     STORAGE: 6\r
+,     SYMBOLS SET/USED:\r
+,         ACCUMULATORS:   DEVDAT U      TAC S/U\r
+,                         PDP U         TAC1 S/U\r
+,         DEVICE DATA BLOCK: DEVCHR U\r
+,         SYSTEM DATA STORAGE: JBTSTS S/U\r
+,         JOB STATUS WORD:    IOWS S\r
+         INTERNAL SETIOD\r
+\r
+SETIOD:          AOS IOCOMP\r
+         LDB TAC,PJOBN\r
+         MOVSI TAC1, IOWS      ;SET IO-WAIT SATISFIED BIT\r
+         IORM TAC1, JBTSTS(TAC)\r
+         MOVSI TAC1, JIOW              ;CLEAR JOB IO-WAIT BIT\r
+         ANDCAM TAC1, JBTSTS(TAC)\r
+         SKIPN JOB             ;IS NULL JOB RUNNING\r
+         JRST STOP2                    ;YES, FORCE CLOCK TO RE-SCHED\r
+         POPJ PDP,;                        RETURN\r
+\f\r
+\r
+\r
+;SET CURRENT JOB AREA IN SYSTEM AREA\r
+\r
+         INTERNAL SETUSR\r
+\r
+SETUSR:          HRRI TAC,USRLO1\r
+         HRLI TAC,USRLO\r
+         SETZM USRLO\r
+         BLT TAC,USRHI\r
+         MOVSI TAC,MJOBPD\r
+         HRRI TAC,JOBPDL\r
+         MOVEM TAC,USRPDP\r
+         MOVE JDAT,JOBDAT\r
+         HLR TAC,JOBSA(JDAT)\r
+         HRRM TAC,JOBFF(JDAT)\r
+         POPJ PDP,\r
+\f\r
+\r
+,DEC 06 00 EX COM L PT PRE 02 WAIT1,WSYNC\r
+,H.R. MORSE   64-12-26\r
+,CALLING SEQUENCE\r
+,     PUSHJ PDP, WAIT1\r
+,     EXIT             ALWAYS RETURNS HERE\r
+\r
+,IF THE DEVICE IS INACTIVE (IOACT=0), RETURNS TO EXIT. OTHERWISE, SET\r
+,IOW:=1 AND ENTERS WAIT UNLESS IOACT BECOMES ZERO BEFORE THE\r
+,JUMP IS MADE, IN WHICH CHASEIT SETS IOW:=0 AND RETURNS TO EXIT.\r
+,ON LEAVING THE WAIT STAT, RETURNS TO EXIT.\r
+,THIS ROUTINE PREVENTS THE STATE IOACT=0 AND IOW=1 FROM OCCURING\r
+,CALLING SEQUENCE\r
+,     PUSHJ PDP, WSYNC\r
+,     EXIT             ALWAYS RETURNS HERE\r
+,SETS IOW:=1 AND ENTERS WAIT ROUTINE. RETURNS TO EXIT WHEN IOACT=0.\r
+,MONITOR INTERFACE\r
+,     STORAGE:                 13\r
+,     ROUTINES CALLED: WAIT\r
+,     SYMBOLS SET/USED:        \r
+,       ACCUMULATORS:     DEVDAT U     PDP U\r
+,                         IOS S/U      TAC S/U\r
+,     DEVICE DATA BLOCK:   DEVIOS S/U\r
+,     IO STATUS WORD:     IOACT U\r
+,                         IOW S/U\r
+\f\r
+\r
+         INTERN WAIT1, WSYNC\r
+\r
+; WAIT1 WAITS UNTIL DEVICE IS COMPLETELY INACTIVE BEFORE RETURNING\r
+WAIT1:   MOVE IOS,DEVIOS(DEVDAT)\r
+         TRNN IOS, IOACT               ;IS DEVICE ACTIVE? (IOACT=1?)\r
+         POPJ PDP,;                    RETURN\r
+         PUSHJ PDP,WSYNC;              WAIT\r
+         JRST WAIT1\r
+\r
+;WSYNC IS CALLED TO WAIT UNTIL SETIOD IS CALLED BY INTERRUPT SERVICE\r
+;IE  UNTIL CURRENT BUFFER ACTIVITY IS COMPLETED\r
+;DEVDAT MUST BE SET UP\r
+\r
+PION=200\r
+PIOFF=400\r
+\r
+WSYNC:   REPEAT 0,< PUSH PDP, TAC      ;MUST THESE BE SAVED?\r
+ PUSH PDP, TAC1\r
+ PUSH PDP, DAT>\r
+       \r
+         MOVSI IOS, IOW\r
+         MOVSI AC1, JIOW\r
+         MOVE AC2, JOB\r
+         MOVEI AC3, IOACT\r
+         CONO PI, PIOFF                ;TURN PI OFF\r
+         TDNN AC3, DEVIOS(DEVDAT)      ;IS THE DEVICE ACTIVE?\r
+         JRST WSYNC1                   ;NO\r
+         IORM IOS, DEVIOS(DEVDAT)      ;YES, SET DEVICE IO-WAIT BIT\r
+         IORM AC1, JBTSTS(AC2)         ;AND JOB IO-WAIT BIT\r
+         CONO PI, PION                 ;TURN PI ON\r
+         PUSHJ PDP, STOP2              ;STOP THIS USER BY FORCING CL\r
+                               ;RETURN WHEN IO-WAIT FINISHED\r
+WSYNC1:          CONO PI, PION\r
+         ANDCAB IOS, DEVIOS(DEVDAT)    ;CLEAR DEVICE IO-WAIT BIT\r
+REPEAT 0,< POP PDP, DAT\r
+ POP PDP, TAC1\r
+ POP PDP, TAC>\r
+\r
+         POPJ PDP,\r
+\r
+         END,\r
diff --git a/src/s.mac b/src/s.mac
new file mode 100644 (file)
index 0000000..5649e63
--- /dev/null
+++ b/src/s.mac
@@ -0,0 +1,189 @@
+       XLIST\r
+\r
+DEFINE XP(A,B)               ;SYSTEM PARAMETER\r
+       <A=B\r
+       INTERNAL A\r
+>\r
+,ACCUMULATORS\r
+       XP IOS,0;             IO STATUS WORD\r
+       XP TAC,1;             TEMPORARY\r
+       XP TAC1,2;                      TEMPORARY\r
+       XP PDP,3;             C(LH)=NUMBER OF LOCATIONS LEFT IN PD LIST\r
+,                            C(RH)=PUSHDOWN POINTER\r
+REPEAT 0,<     XP SUB,10             RETURN (PC) FOR ONE LEVEL SUBROUTINES\r
+>\r
+       XP TEM,10\r
+       XP ITEM,4;            BYTE OR WORD POINTER.  ITEM COUNT\r
+       XP DAT,5;             DATA OR TEMPORARY\r
+       XP DEVDAT,6;          C(LH)=UNUSED.\r
+,                            C(RH)=ADDRESS OF DEVICE DATA BLOCK\r
+       XP JBUF,DAT;          ADDRESS OF JOB BUFFER AREA=JBFADR\r
+       XP PROG,7;            C(LH)=UNUSED\r
+,                            C(RH)=ADDRES OF USER'S PROGRAM AREA\r
+       XP JDAT,11;           C(RH)=ADDRESS OF JOB DATA\r
+,ONLY 0 TO 10 NORMALLY REQUIRED\r
+,FOR INTERRUPT SERVICE\r
+       XP BUFPNT,12;   C(JBFADR 18-35)\r
+       XP BUFWRD,13;   BIT 0=IOUSE\r
+,                      BITS 1-17=BUFFER SIZE\r
+,                      BITS 18-35=NEXT BUFFER ADDRESS\r
+       XP UUO,14;      LAST UUO PROCESSED\r
+       XP AC1,15       ;TEMPORARY ACS(MORE TEMPORARY\r
+       XP AC2,16       ;THEN TAC,TAC1)\r
+       XP AC3,17       ;\r
+\f, DEVICE DATA BLOCK NAMES\r
+       XP DEVNAM,0;    NAME IN SIX BIT ASCII\r
+,                      C(LH)=DEVICE MNEMONIC\r
+,                      C(RH)=DEVICE NUMBER, LEFT JUSTIFIED\r
+       XP DEVCHR,1;    CHARACTERISTIC\r
+,                      BITS 0-8=JOB NUMBER\r
+,                           ZERO VALUE IMPLIES NOT ASSIGNED\r
+,                      BITS 9-11=PRIORITY CHANNEL FOR DEVICE\r
+       XP PICHN,100    ;RIGHTMOST BIT OF PI CHAN. FIELD\r
+,                      BIT 12=UNUSED\r
+,                      BIT 13=IORET. 0 IF DEVICE HAS A SHORT\r
+,                          DISPATCH TABLE.  1 IF LONG\r
+       XP IORET,20     ;FOR RETRIEVABLE DEVICES.\r
+               ;SHORT DISPATCH TABLE =0. LONG = 1\r
+,                      BITS 14-17=JOB DEVICE CHANNEL NUMBER\r
+,                      BITS 18-23=DEVICE NUMBER, BINARY\r
+,                      BITS 24-35=BUFFER SIZE\r
+       XP DEVIOS,2;    STATUS WORD.  SEE BELOW\r
+       XP DEVSER,3;    C(LH)=NEXT DEVICE DATA BLOCK\r
+,                      C(RH)=DEVICE SERVICE DISPATCH TABLE\r
+,    DEVICE SERVICE DISPATCH TABLE ASSIGNMENTS\r
+       XP DRL,0;                   XXXDSP   :  RELEASE\r
+       XP DCL,1;                   XXXDSP +1:  CLOSE\r
+       ;IMMEDIATE ADDRESS PART OF CLOSE UUO\r
+               XP CLSOUT,1     ;INHIBIT CLOSING OUTPUT\r
+               XP CLSIN,2      ;INHIBIT CLOSING INPUT\r
+       XP DOU,2;                   XXDSP +2:  OUTPUT\r
+       XP DIN,3;                   XXXDSP +3:  INPUT;SHORT DISPATCH TABLE\r
+       XP DEN,4;                   XXXDSP +4:  ENTER\r
+       XP DLK,5;                   XXXDSP +5:  LOOKUP\r
+       XP DDO,6;                   XXXDSP +6:  DMPO\r
+       XP DDI,7;                   XXXDSP +7:  DMPI\r
+       XP DSO,10;          XXXDSP+10:  SETO\r
+       XP DSI,11;          XXXDSP+11:  SETI\r
+       XP DGF,12;          XXXDSP+12:  GETF;LOGN DISPATCH TABLE\r
+       XP DEVMOD,4     ;BITS 6-11=LEFT HALF OF IMAGE MODE BYTE POINTER\r
+                       ;BIT 35-J=1 IF MODE J IS LEGAL FOR THIS DEVICE\r
+                       ;BIT 18 DEVICE ASSIGNED BY CONSOLE COMMAND\r
+                       ;BIT 19 DEVICE ASSGINED BY PROGRAM (INIT)\r
+;IRGHT HALT OF DEVICE MODE WORD\r
+       XP ASSCON,400000        ;ASSIGNED BY CONSOLE COMMAND ASSIGN\r
+       XP ASSPRG,200000        ;ASSIGNED BY PROGRAM(INIT UUO)\r
+;LEFT HALF DEVICE CHARACTERISTICS(DEVCHR UUO)\r
+       XP DVOUT,1      ;OUTPUT DEVICE\r
+       XP DVIN,2       ;INPUT DEVICE\r
+       XP DVDIR,4      ;HAS A DIRECTORY\r
+       XP DVTTY,10     ;IS A TTY\r
+       XP DVMTA,20     ;IS A MAG TAPE(REWIND)\r
+       XP DVAVAL,40    ;1 IF DEVICE IS AVAILABLE TO THIS JOB\r
+                       ;SET BY DEVCHR UUO\r
+       XP TTYUSE,10000 ;TTY DDB IN USE FLAG\r
+       XP TTYATC,20000 ;TTY ATTACHED TO JOB IF 1\r
+       XP DVLPT,40000  ;IS A LPT (CARRIAGE CONTROL IN FORTRAN)\r
+       XP DVCDR,100000 ;IS A CARD READER(TRAILING SPACES FOR MACRO)\r
+       XP DVDIRIN,400000       ;DIRECTORY IN CORE IF 1\r
+\r
+       XP DEVLOG,5;    LOGICAL NAME FOR JOB DEVICE\r
+       XP DEVBUF,6;    C(LH)=OUTPUT BUFFER AREA DDRESS\r
+,                      C(RH)=INPUT BUFFER AREA ADDRESS (JBFADR)\r
+       XP DEVIAD,7;    C(LH)=PROG IN INDEX FIELD\r
+       XP DEVADR,DEVIAD\r
+,                      C(RH)=CURRENT INPUT BUFFER ADDRESS\r
+       XP DEVOAD,10;   C(LH)=PROG IN INDEX FIELD\r
+       XP DEVPTR,DEVOAD\r
+,                      C(RH)=CURRENT OUTPUT BUFFER ADDRESS\r
+       XP DEVCTR,11;\r
+\f, I/O STATUS WORD ASSIGNMENTS\r
+,DATA MODES;  BITS 32-35\r
+       XP A,0;         ASCII\r
+       XP AL,1;                ASCII LINE\r
+       XP I,10;                IMAGE\r
+       XP IB,13;       IMAGE BINARY\r
+       XP B,14;                BINARY\r
+       XP DR,16                ;DUMP BY RECORDS\r
+       XP D,17         ;DUMP ACROSS RECORDS\r
+, STATUS BITS\r
+,RIGHT HALF (USER)\r
+       XP IOWC,20;     DON'T COMPUTE WORD COUNT\r
+       XP IOCON,40;    CONTINUOUS (CONT=0)\r
+       XP IORDEL,100;  READ AND DELETE\r
+       XP IONRCK,100;  READ WITH NO. REREAD CHECK\r
+       XP IODEND,20000;        DATA END ENCOUNTERED\r
+       XP IODERR,200000;       DEVICE ERROR\r
+       XP IODTER,100000;       DATA ERROR\r
+       XP IOIMPM,400000;       IMPROPER MODE REQUESTED\r
+       XP IOBKTL,40000;        BLOCK TOO LARGE\r
+       XP IOACT,10000; DEVICE ACTIVE\r
+, LEFT HALFF (SYSTEM)\r
+       XP IOW,1;               I/O WAIT\r
+       XP IOBEG,2;     VIRGIN DEVICE\r
+       XP IODISC,400000;       DISCONNECT REQUEST\r
+       XP IOFST,4;     NEXT ITEM WILL BE THE FIRST ITEM OF A BUFFER\r
+       XP IOSTRT,10;   IO READY TO START\r
+       XP IO,20;               OUT=1, IN=0\r
+       XP IOEND,40;    SERVICE ROUTINE HAS TRANSMITTED LAST DATA\r
+\r
+\r
+;LEFT HALF USRJDA (JOB DEVICE ASSIGNMENTS) UUO'S FOR THIS CHANNEL SINCE LAST INIT\r
+       XP INITB,400000;        INIT\r
+       XP IBUFB,200000;        INIT WITH INPUT BUFFER SPECIFIED\r
+       XP OBUFB,100000;        INIT WITH OUTPUT BUFFER SPECIFIED\r
+       XP LOOKB,40000; LOOKUP\r
+       XP ENTRB,20000; ENTER\r
+       XP INPB,10000;  INPUT\r
+       XP OUTPB,4000;  OUTPUT\r
+       XP CLOSB,2000;  CLOSE\r
+                               ;RELEASE CLEARS THEM ALL\r
+;CLOSE UUO BITS\r
+       XP CLSOUT,1     ;INHIBIT CLOSING OUTPUT\r
+       XP CLSIN,2      ;INHIBIT CLOSING INPUT\r
+\f, JOB BUFFER AREA HEADER\r
+       XP JBFADR,0;    BIT 0=1 IF THIS BUFFER RING HAS NEVER BEEN\r
+,                          REFERENCED FROM THE USER'S PROGRAM BY\r
+,                          AN INPUT OR OUTPUT COMMAND. \r
+,                      BITS 1-17=UNUSED\r
+,                      BITS 18-35=CURENT BUFFER ADDRESS\r
+       XP JBFPTR,1;    BYTE POINTER TO NEXT BYTE -1\r
+       XP JBFCTR,2;    POSITIVE ITEM COUNT\r
+, JOB BUFFER HEADER            BIT 0=IOUSE\r
+       XP IOUSE,400000;            1 IF BUFFER IS FULL (OR BEING EMPTIED)\r
+,                      BITS 1-17=BUFFER SIZE\r
+,                      BITS 18-35=NEXT BUFFER ADDRESS\r
+\f,SYSTEM PARAMETERS\r
+       XP USRMOD,10000;        USER MODE BIT IN APR FLAGS, PC WORD\r
+       XP IODONE,400000;\r
+,JOB STATUS WORD (JBTSTS)\r
+       XP IOWS,400000; IO WAIT SATISFIED\r
+       XP RUN,200000;  READY TO RUN OR IS RUNNING\r
+       XP JIOW,100000; JOB IN IO-WAIT STATE\r
+       XP DTW,40000;   DECTAPE CONTROL WAIT\r
+       XP DCW,20000;   DATA CONTROL WAIT\r
+       XP MTW,10000;   MAG TAPE CONTROL WIAT\r
+       XP JNA,4000;    JOB NUMBER ASSIGNED\r
+       XP JERR,2000;   JOB ERROR(ILLEGAL MEM. ETC.)\r
+\r
+       XP RUNABLE,RUN+JNA;     STATUS BIT PATTERN FOR A JOB TO STAY RUNABLE\r
+\f;SPECIAL ABSOLUTE LOCATIONS IN LOWER MEMORY\r
+;THESE ARE INTENDED TO BE EXAMINED AND CHANGED BY\r
+;USING THE DATA SWITCHES BEFORE SYSTEM IS STARTED AFTER BEING LOADED\r
+;ONLY TODAY AND BOOTIM NEED BE SET\r
+;ALL OTHERS ARE ASSEMBLED IN AND SHOULD BE SET ONLY IF A CHANGE IS DESIRED\r
+\r
+XP DDTMEM,37   ;MEMORY SIZE FOR SYSTEM DDT AND SYSMAK ONLY\r
+XP DDTSYM,36   ;SYSTEM DDT SYMBOL TABLE POINTER (USED TO BE 77)\r
+, SYSTEM MACROS\r
+DEFINE ADRCHK (A)\r
+<      EXTERNAL ADRCK\r
+DEFINE ADRCHK (B)\r
+       <PUSHJ PDP,ADRCK\r
+       HRRZ TAC,B>\r
+       PUSHJ PDP,ADRCK\r
+       HRRZ TAC,A>\r
+\r
+\r
+       LIST\r
+\f\r
diff --git a/src/savget.mac b/src/savget.mac
new file mode 100644 (file)
index 0000000..30d33fe
--- /dev/null
@@ -0,0 +1,178 @@
+\r
+TITLE SAVGET- SAVE AND GET COMMANDS\r
+SUBTTL T.HASTINGS 8-4-64\r
+;ROUTINE TO SET UP SAVE-GET DEVICE FILE-NAME TABLE\r
+;CALLED BY COMMAND SETUP ROUTINES AND SAVE GET\r
+\r
+INTERNAL SGSET\r
+EXTERNAL CTEXT1,SETUSR,HOLD,MONJOB\r
+EXTERNAL CONMES,NOTENF,CPOPJ1\r
+\r
+SGSET:   PUSH PDP, TAC1        ;SAVE STARTTING ADDRESS(SAVJOB OR GETJOB)\r
+         PUSHJ PDP, CTEXT1     ;GET DEVICE NAME FROM COMMAND STRING\r
+         JUMPE TAC1,SGSET1\r
+         MOVEM TAC1, 17(PROG)          ;SAVE IN UUO AC AREA\r
+         PUSHJ PDP, CTEXT1     ;GET FILE NAME FROM COMMAND STRING\r
+         JUMPE TAC1,SGSET1\r
+         MOVEM TAC1, 14(PROG)\r
+         POP PDP, TAC1         ;SCHEDULE MONITOR JOB\r
+         PUSHJ PDP, MONJOB\r
+         JRST CPOPJ1           ;SUPPRESS CR-LF PRINTED BY COMINI\r
+\r
+SGSET1:          POP PDP,TAC1\r
+         JRST NOTENF\r
+\f\r
+\r
+;THIS JOB SAVES A JOB AREA ON RETRIEVABLE STORAGE\r
+;THIS JOB RUNS IN EXEC. MODE AND CALLS IO ROUTINES DIRECTLY\r
+;NO ATTTEMPT IS MADE TO SAVE STATUS OF IO DEVICES, JOBPDP, OR ACS\r
+;IN FACT THE ONLY USEFUL THING WHICH MAY BE DONE WITH A JOB AREA\r
+;AFTER IT HAS BEEN SAVED IS TO START EXECUTION OVER AT THE STARTING \r
+;ADDRESS\r
+\r
+INTERNAL SAVJOB\r
+EXTERNAL USRPDP, OUT, USRREL,JOBPFI,JOB41,JOBS41,THSDAT\r
+\r
+T=BUFPNT   ;TEMPORARY ACS\r
+T1=BUFWRD\r
+\r
+SAVJOB:          JSP TAC,  SG1   ;SET UP ACS AND ASSIGN DEVICE\r
+         MOVE T1,JOB41(JDAT) ;SAVE USR UUOI HANDLING JSR\r
+         MOVEM T1,JOBS41(JDAT)\r
+         MOVE T1,THSDAT      ;SET DATE IN THIRD WORD\r
+         MOVEM T1,16(PROG)\r
+         PUSHJ PDP, DEN(T)   ;ENTER FILE NAME IN DIRECTORY\r
+         JRST SAV4           ;DIRECTORY FULL\r
+         PUSHJ PDP, SETLST   ;SET DUMP COMMAND LIST IN USER ARE\r
+         PUSHJ PDP, OUT      ;DO AN OUTPUT\r
+         JSP TAC,SG2\r
+\r
+         ASCIZ /JOB SAVED\r
+/\r
+SAV4:    JSP TAC,SG2\r
+\r
+         ASCIZ /DIRECTORY FULL\r
+/\r
+\f\r
+\r
+\r
+;THIS JOB GETS A JOB AREA FROM RETRIEVABLE DEVICE\r
+;THIS JOB RUNS IN EXEC. MODE AND CALLS IO ROUTINES DIRECTLY\r
+;NO ATTEMPT IS MADE TO RESTORE STATUS OF IO DEVICES, PC, OR ACS\r
+;JOBPC IS SET TO STARTING ADDRESS OF JOB\r
+;CORE MUST ALREADY HAVE BEEN ASSIGNED AND THE FOLLOWING LOC. SETUP IN \r
+;JOB DATA AREA:\r
+;JOBPDP, JOBREL\r
+\r
+INTERNAL GETJOB\r
+EXTERNAL USRREL, IN\r
+\r
+GETJOB:          JSP TAC, SG1  ;SETUP ACS AND ASSIGN DEVICE\r
+         PUSHJ PDP, DLK(T)     ;LOOKUP FILE NAME IN DIRECTORY\r
+         JRST GET2             ;NOT FOUND\r
+         PUSHJ PDP, SETLST     ;SET DUMP COMMAND LIST IN USER ARE\r
+         PUSHJ PDP, IN         ;DO AN INPUT\r
+         JSP TAC,SG2\r
+\r
+         ASCIZ /JOB SETUP\r
+/\r
+\r
+GET2:    JSP TAC,SG2\r
+\r
+         ASCIZ /FILE NOT FOUND\r
+/\r
+\f\r
+\r
+;ROUTINE TERMINATES SAVJOB AND GETJOB\r
+;CLOSE, RELEASE, CHECK FOR ERRORS AND PRINT MESSAGE AND STOP JOB\r
+;ADDRESS OF MESSAGE IN AC TAC\r
+\r
+EXTERNAL RELEA2, SETUSR, TTYFNU, WAIT1,JOBS41,JOB41\r
+\r
+ERRORS=1B18+1B19+1B20+1B21     ;ERRORS CHECKED FOR IN IO TRANSMISSION\r
+\r
+SG2:     PUSHJ PDP, WAIT1\r
+         TRNE IOS, ERRORS      ;ANY ERRORS?\r
+         JRST SG2A             ;AN ERROR\r
+         PUSH PDP,TAC          ;SAVE PRINT ADDRESS\r
+         PUSHJ PDP,RELEA2      ;RELEASE DEVICE\r
+         PUSHJ PDP,SETUSR      ;SETUP COPY OF JOB AREA STORED IN SYSTE\r
+         MOVE TAC,JOBS41(JDAT)\r
+         ;RESTORE USER LOCATION 41\r
+         MOVEM TAC,JOB41(JDAT)\r
+SG4:     PUSHJ PDP,TTYFNU      ;FIND TELETYPE\r
+         POP PDP,TAC           ;RESTORE PRINT MESSAGE ADDRESS\r
+SG5:     PUSHJ PDP,CONMES\r
+         JRST HOLD\r
+\r
+SG2A:    JSP TAC,SG4\r
+\r
+         ASCIZ /TRANSMISSION ERROR\r
+/\r
+\f\r
+\r
+;ROUTINE CALED BY SAVJOB AND GETJOBTO SETUP ACS\r
+;AND ASSIGN DEVICE\r
+;CALL     JSP TAC, SG1\r
+\r
+EXTERNAL JOBDAT, JOB, UINIT1, WAIT1, JOBADR, RESET\r
+\r
+SG1:     HRLI PDP, -15         ;SET UP PD LIST IN UUO ACS\r
+         HRRI PDP, -1(PROG)\r
+         PUSH PDP, TAC         ;SAVE RETURN ADDRESS\r
+         PUSHJ PDP, RESET      ;DO RESET UUO\r
+         MOVEI UUO, D          ;DUMP MODE\r
+         MOVE TAC, 17(PROG)    ;DEVICE NAME\r
+         MOVEI PROG, 0         ;PRETEND RELOC. IS 0\r
+         PUSHJ PDP, UINIT1     ;ASSIGN DEVICE\r
+         0                     ;IBF,OBF\r
+         JRST SGERRA           ;NOT AVAILABLE\r
+         MOVE IOS, DEVIOS(DEVDAT)      ;SETUP IOS\r
+         MOVEI UUO,14          ;REL.ADDRESS OF 4 WORD DIRECTORY ENTRY\r
+         MOVE PROG, JOBADR     ;RESTORE PROG\r
+         MOVSI T,445560        ;SET FILE EXTENSION TO DMP\r
+         MOVEM T, 15(PROG)\r
+         SETZM 16(PROG)\r
+         MOVN T1,USRREL        ;SET NEG. WORD COUNT FROM JOBREL\r
+         ADDI T1,JOBPFI        ;DONT DUMP LOC. 0-JOBPFI\r
+         HRLI T1,JOBPFI\r
+         MOVSM T1,17(PROG)     ;STORE IN 4TH WORD OF DICECTORY\r
+         MOVE T, DEVSER(DEVDAT)        ;SETUP FOR DOING ENTRY OF LOO\r
+         POPJ PDP,\r
+\r
+SGERRA:          MOVEI TAC,SGNAVL\r
+         PUSH PDP,TAC\r
+         JRST SG5\r
+\r
+SGNAVL:          ASCIZ /DEVICE NOT AVAILABLE\r
+/\r
+\f\r
+\r
+\r
+;ROUTINE TO SET DUMP MODE COMMAND LIST IN USER AREA\r
+\r
+EXTERNAL ANYRDX,RELEA2,TTYFNU\r
+\r
+SETLST:          MOVE T, 17(PROG)      ;4TH WORD FROM DIRECTORY\r
+         MOVEM T, 16(PROG)\r
+         SETZM 17(PROG)\r
+         HLRE T, T\r
+         ADD T, USRREL\r
+         JUMPL T, NOROOM\r
+         MOVEI UUO,16          ;DUMP MODE\r
+         POPJ PDP,\r
+\r
+NOROOM:          PUSHJ PDP,RELEA2\r
+         PUSHJ PDP,TTYFNU\r
+         JFCL\r
+         HLRE TAC, 16(PROG)  ;PRINT NO. OF BLOCKS NEEDED\r
+         MOVNS TAC\r
+         LSH TAC, -12\r
+         ADDI TAC, 1\r
+         MOVEI TAC1, 12\r
+         PUSHJ PDP, ANYRDX\r
+         JSP TAC,SG5\r
+\r
+         ASCIZ / 1K BLOCKS OF CORE NEEDED\r
+/\r
+         END,\r
diff --git a/src/scnser.mac b/src/scnser.mac
new file mode 100644 (file)
index 0000000..b5c756f
--- /dev/null
@@ -0,0 +1,818 @@
+TITLE SCNSER - SCANNER SERVICE\r
+SUBTTL TOM EGGERS     8-9-65\r
+EXTERN SETIOD, ADVBFE, ADVBFF, JBTADR, CLRBYT,STTYB1\r
+EXTERN SCNCHN, COMCNT, SCNSAV, SCNRET,STOP1, DEVLST,TTYTAB\r
+INTERN SCNINI\r
+\r
+;TTYPTR=DEVOAD+1\r
+;TTYCTR=TTYPTR+1\r
+;TTYBUF=TTYCTR+1\r
+PION=200   ;TURN PI ON BIT\r
+PIOFF=400              ;TURN PI OFF BIT\r
+;SCNDDB                        ;NUMBER OF DEVICE DATA BLOCKS\r
+;STTYBF7   ;SIZE OF TELETYPE BUFFER\r
+CHREC=TEM              ;AC FOR CHARACTER\r
+VPOS=ITEM              ;VERITICAL POSITION OF TELETYPE\r
+HPOS=VPOS+1            ;               HORIZONTAL POS.\r
+DDB=DEVDAT\r
+LINE=TAC1              ;AC THAT HOLDS SCANNER LINE NUMBER\r
+SYNC=40000             ;1 WHEN A BUFFER IS READY TO TRANSFER\r
+DETH=10000             ;1 IF TTY DETACHED AND OUTPUT WAITING\r
+NIO=20000              ;STOP ALL IO\r
+TOUT=IO                        ;OUTPUT IN PROGRESS\r
+NCERR=IOBKTL           ;CHARACTER LOST ON TYPE IN\r
+DCHAR=177              ;DELETE CHARACTER\r
+ECHOF=IODTER           ;ECHO FAILURE OCCURED\r
+TPMON=1000             ;IO IS FROM MONITOR\r
+SP=2000                        ;SPECIAL TELETYPE CHAR. IS BEING INTERPRETED\r
+DDTM=100000            ;DDT MODE\r
+T35=4000   ;TELETYPE HAS TAB,FF,VT,ETC. MECHANISM\r
+USRB=100   ;TURN OFF TPMON WHEN OUTPUT IS FINISHED     \r
+USRBC=20000            ;RT HALF MONITOR IOS WORD. REMAIN IN MONITOR MODE\r
+INTERNAL SCNINT,CTYINT,TTYUSR,TTYURC\r
+ENTRY TTYDSP\r
+EXTERN TSCNLN,TCONLN,MTTYLN,CPOPJ1\r
+EXTERN CPOPJ\r
+EXTERN FSNCHN,SCNCHL,OUT,PUUOAC,PJOBN,PUNIT,PIOMOD\r
+INTERNAL DDTGT,DDTRL,DDTIN,DDTOUT,TTYFND,TTYSTR,TTYFNU\r
+EXTERNAL WAIT1,WSYNC,CLRBYT,JOB,CLDS,CLEN,TTYBFE,TTYBM1\r
+EXTERNAL UXIT,ADRCK,TTYSAV,DEVPHY,DEVOPR\r
+EXTERNAL TTYCTR,TTYPTR,TTYBUF,TTYLST,MLTTYL,SETRUN,STTYBF,TTY0DB\r
+\r
+PHPOS: POINT 7,DEVIAD(DEVDAT),12       ;POINTER HORIZONTAL POSITION\r
+PVPOS: POINT 5,DEVOAD(DEVDAT),12       ;POINTER VERITICAL POSITION\r
+PLASTC:        POINT 7,DEVOAD(DEVDAT),7        ;POINTER TO LAST CHARACTER OU\r
+PSCHAR:        POINT 6,DEVIAD(DEVDAT),5        ;POINTER TO ^C OR ^O\r
+\r
+TPCJOBN:       POINT 9,TTYTAB(LINE),9  ;CONSOLE NUMBER FOR TTY\r
+\f\r
+SCNINI:        MOVEI TAC,100000\r
+       CONO TTY,0              ;SHUT DOWN CONSOLE TTY\r
+       CONO DCSA,4010          ;RELEASE XMITTER,RECEIVER\r
+       CONSZ DCSA, 1000\r
+       CONO DCSA, 4000\r
+       CONSZ DCSA, 10\r
+       DATAI DCSB, TAC1\r
+       SOJG TAC,.-4\r
+       MOVEI TAC,SCNCHN\r
+       CONO TTY,3600(TAC)      ;CLEAR TTY, ASSIGN CHANNEL\r
+       CONO DCSA,FSNCHN        ;ASSIGN INTERRUPT CHANNELS\r
+       MOVSI TAC,MLTTYL        ;NO. OF TTY DEV. DATA BLOCKS\r
+       MOVSI DAT,TTYUSE        ;TTY DDB IN USE BIT\r
+       MOVSI IOS,TPMON+IOFST           ;VIRGIN STATUS\r
+       MOVEI DDB,TTYLST        ;FIRST TTY DDB ADDRESS\r
+SCN1:  TDNN DAT,DEVMOD(DDB)            ;IS THIS TTY DDB IN USE?\r
+       SETZM DEVNAM(DDB)       ;NO. SET NAME TO 0\r
+       MOVEM IOS,DEVIOS(DDB)\r
+       SETZM TTYSAV(DDB)       ;CLEAR USER MODE TTY STATUS WORD\r
+       ANDCAM DAT,DEVMOD(DDB)          ;CLEAR USE BIT\r
+       HLRZ DDB,DEVSER(DDB)            ;GET NEXT TTY DDB\r
+       AOBJN TAC,SCN1\r
+       MOVSI TAC,MTTYLN        ;SET DDB USE BITS FROM TRANSLATOR TABLE\r
+       MOVSI TAC1,TTYUSE\r
+SCN2:  SKIPE DDB,TTYTAB(TAC)\r
+       IORM TAC1,DEVMOD(DDB)\r
+       AOBJN TAC,SCN2\r
+       POPJ PDP,\r
+\f\r
+;ROUTINE TO RETURN TTY TO VIRGIN STATE\r
+;CALL:   MOVE DDB, ADDRESS OF DEVICE DATA BLOCK\r
+;        PUSHJ PDP,TTYKIL\r
+\r
+INTERNAL TTYKIL\r
+\r
+TTYKIL:        MOVE TAC,[XWD TTYUSE+TTYATC,ASSCON+ASSPRG]\r
+       ANDCAM TAC,DEVMOD(DEVDAT)       ;CLEAR DDB USE BIT\r
+       SETZM DEVNAM(DEVDAT)            ;CLEAR PHYSICAL NAME\r
+       SETZM DEVLOG(DEVDAT)            ;CLEAR LOGICAL NAME\r
+       JRST TTYDT1\r
+\r
+;ROUTINE TO DETACH TTY FROM JOB\r
+;CALL:   MOVE DEVDAT,ADDRESS OF TTY DDB TO BE DETACHED\r
+\r
+INTERNAL TTYDET\r
+\r
+TTYDET:        MOVE TAC,DEVMOD(DEVDAT)\r
+       TLZN TAC,TTYATC      ;WAS TTY ATTACHED?\r
+       JRST TTYKIL          ;NO, SO RETURN DDB TO POOL\r
+       MOVEM TAC,DEVMOD(DEVDAT)        ;YES, JUST CLEAR ATTACH BIT\r
+TTYDT1:        LDB LINE,PUNIT\r
+       SETM TTYTAB(LINE)\r
+       POPJ PDP,\r
+\r
+\r
+CCHAR: 0          ;HOLDS CHARACTER FOR CONSOLE TELETYPE\r
+;CONTROL C - GO BACK TO MONITOR\r
+;CONTROL 0 - SUPPRESS OUTPUT\r
+\r
+TTYURC:        SKIPA TAC,[XWD USRB,USRBC]      ;START JOB BUT REMAIN IN MON1\r
+TTYUSR:        MOVSI TAC,USRB          ;CAUSE TTY TO GO INTO\r
+       IORM TAC,DEVIOS(DEVDAT)         ;USER MODE WHEN\r
+       POPJ PDP, ;OUTPUT FINISHES\r
+\r
+INTERNAL TTYSET\r
+\r
+TTYSET:        MOVSI TAC,IOFST         ;INITIALIZE USER TTY IOS WORD\r
+       MOVEM TAC,TTYSAV(DEVDAT)        ;FOR START COMMAND\r
+       JRST TTYUSR\r
+\f\r
+\r
+;ROUTINE TO ATTACH TTY TO A JOB\r
+;CALL:   MOVE DEVDAT,ADDRESS OF TTY DEVICE DATA BLOCK\r
+;        MOVE ITEM,JOB NUMBER\r
+;        PUSHJ PDP,TTYATT\r
+;        ERROR     ;DEVDAT=DDB ADR OF OTHER TTY\r
+                   ;IF ANOTHER ALREADY IS ATTACHED.\r
+;        OK RETURN ;DEVDAT, DAT AND TRANSLATOR TABLE SET\r
+\r
+INTERNAL TTYATT\r
+\r
+TTYATT:        LDB LINE,PUNIT  ;LINE NO. OF THIS TTY\r
+       MOVEI DEVDAT,TTYLST ;SEARCH FOR DDB THAT IS ATTACHED\r
+       SKIPA\r
+TTYAT2:        HLRZ DEVDAT,DEVSER(DEVDAT)\r
+       JUMPE DEVDAT,TTYAT4\r
+       LDB TAC,PJOBN       ;JOB NUMBER\r
+       HLL TAC,DEVMOD(DEVDAT)          ;ATTACH AND USE BITS\r
+       TLNN TAC,DVTTY       ;IS THIS STILL A TTY DDB?\r
+       JRST TTYAT4          ;NO, THIS MUST BE IJOB\r
+       CAIN ITEM,(TAC)      ;JOB NUMBER THE ONE TO ATTACH?\r
+       TLNN TAC,TTYUSE      ;YES, IS IT THE DETACHED ONE?\r
+       JRST TTYAT2          ;NO, KEEP LOOKING\r
+       TLNE TAC,TTYATC         ;IS SOME TTY ALREADY ATTACHED?\r
+       POPJ PDP,               ;YES, ERROR RETURN WITH DEVDAT SET\r
+       PUSH PDP,DEVDAT         ;SAVE NEW DDB ADDRESS\r
+       MOVE DEVDAT,TTYTAB(LINE)\r
+       MOVE TAC,DEVMOD(DEVDAT)\r
+       PUSHJ PDP,TTYDET        ;DETACH DDB FROM TTY\r
+       POP PDP,DEVDAT\r
+TTYAT3:        DPB ITEM,TPCJOBN        ;STORE ATTACHED JOB NO.\r
+       DPB ITEM,PJOBN          ;SET JOB NUMBER\r
+       MOVSI TAC,TTYATC        ;SET ATTACHED BIT\r
+       PUSHJ PDP,TTYDAT        ;SETUP OUTPUT BYTE\r
+       JRST SCNIN              ;GO INITIALIZE DDB\r
+\r
+TTYAT4:        MOVE DEVDAT,TTYTAB(LINE)        ;RESTORE OLD DDB ADDRESS\r
+       JRST TTYAT3\r
+\f\r
+\r
+;ROUTINE TO SETUP AC DEVDAT TO ADDRESS OF TTY WHICH HAS TYPED A COMMA\r
+;AC DAT TO BYTE POINTER TO OUTPUT BUFFER FOR COMMAND MESSAGE\r
+;AC TAC TO BYTE POINTER TO COMMAND STRING\r
+;AC ITEM TO JOB NUNMBER TTY IS ATTACHED TO\r
+;CALL:    PUSHJ PDP,TTYCOM\r
+;         NONE FOUND\r
+;         ACS SETUP\r
+\r
+INTERNAL TTYCOM\r
+\r
+TTYCOM:        MOVSI LINE,MTTYLN\r
+       SKIPL TTYTAB(LINE)\r
+       AOBJN LINE,.-1\r
+       JUMPG LINE,CPOPJ\r
+       MOVSI DEVDAT,400000\r
+       ANDCAB DEVDAT,TTYTAB(LINE)\r
+       MOVSI DAT,440700\r
+       ADDI DAT,TTYBUF(DEVDAT)\r
+       MOVE TAC,DAT\r
+\r
+;FALL INTO TTYJOB\r
+\r
+;ROUTINE TO RETURN IN AC ITEM JOB NUMBER WHICH TTY IS ATTACHED TO\r
+;CALL:    MOVE DEVDAT,ADDRESS OF TTY DEVICE DATA BLOCK\r
+\r
+INTERNAL TTYJOB\r
+\r
+TTYJOB:        LDB LINE, PUNIT\r
+       LDB ITEM,TPCJOBN\r
+       JRST CPOPJ1\r
+\f\r
+\r
+;TELETYPE SCANNER UUO ROUTINES\r
+;FOR DDT\r
+\r
+;DDTGT WAITS FOR OUTPUT TO COMPLETE THEN PUTS\r
+;TELETYPE INTO DDT MODE\r
+\r
+DDTGT: PUSHJ PDP,TTYSR1        ;FIND DEVICE DATA BLOCK\r
+       MOVE IOS,DEVIOS(DEVDAT)\r
+       TLNN IOS,DDTM\r
+       TLNN IOS,IO             ;OUTPUT IN PROGRESS\r
+       JRST DDTGT2             ;NO\r
+;      PUSHJ PDP,OUT           ;MAKE SURE OUTPUT STARTED\r
+       PUSHJ PDP,WAIT1         ;WAIT FOR OUTPUT TO FINISH\r
+DDTGT2:        TLO IOS,DDTM            ;SET DDT MODE BIT\r
+       MOVEM IOS,DEVIOS(DEVDAT)\r
+       JRST UXIT\r
+\r
+;RELEASE TELETYPE FROM DDT MODE\r
+;MAKE SURE OUPUT IS FINISHED FIRST\r
+\r
+DDTRL: PUSHJ PDP,TTYSR1        ;FIND DEVICE DATA BLOCK\r
+       MOVE IOS,DEVIOS(DEVDAT)\r
+       TLNE IOS,IO             ;OUTPUT IN PROGRESS?\r
+       PUSHJ PDP,WAIT1         ;YES, WAIT\r
+       MOVSI IOS,DDTM+SYNC\r
+       ANDCAM IOS,DEVIOS(DEVDAT)       ;TURN OFF DDT BIT\r
+       JRST UXIT\r
+\f\r
+\r
+;INPUT TO DDT\r
+;CALL AC,[SIXBIT /DDTIN/]     AC CONTAINS POINTER TO BUFFER AREA\r
+;BUFFER AREA MUST BE 21 WORDS LONG\r
+\r
+DDTIN: PUSHJ PDP,TTYSR1                ;SET UP DEVDAT\r
+       MOVE IOS,DEVIOS(DEVDAT)\r
+       TLNE IOS,IO                     ;OUTPUT IN PROGRESS\r
+       PUSHJ PDP,WAIT1                 ;YES, WAIT\r
+DDTIN2:        MOVE IOS,DEVIOS(DEVDAT)\r
+       TLNE IOS,IOEND                  ;BUFFER ALREADY?\r
+       JRST DDTIN3                     ;YES\r
+       MOVEI IOS,IOACT\r
+       IORM IOS,DEVIOS(DDB)\r
+       PUSHJ PDP,WSYNC                 ;NO, WAIT\r
+       JRST DDTIN2\r
+\r
+DDTIN3:        MOVSI TAC,NIO+IOFST+DDTM\r
+       IORM TAC,DEVIOS(DEVDAT)         ;STOP ALL IO\r
+       MOVE TAC,TTYPTR(DEVDAT)\r
+       PUSHJ PDP,CLRBYT                ;CLEAR OUT REMAINING BYTES\r
+       SUBI TAC,TTYBM1(DEVDAT)         ;NUMBER OF WORDS\r
+       LDB TAC1,PUUOAC       ;PICK UP AC NUMBER\r
+       ADDI TAC1,(PROG)                ;FIND REAL ADDRESS\r
+       MOVE TAC1,(TAC1)                ;PICK UP POINTER\r
+       ADDI TAC1,(PROG)                ;FIND REAL ADDRESS OF BUFFER\r
+       HRLI TAC1,TTYBUF(DEVDAT)\r
+       ADDI TAC,(TAC1)\r
+       BLT TAC1,(TAC)                  ;TRANSFER MONITOR BUFFER TO U\r
+       CLEARM 1(TAC)                   ;MAKE SURE THERE ARE SOME NUL\r
+       MOVSI TAC,NIO+IOEND\r
+       ANDCAM TAC,DEVIOS(DEVDAT)\r
+       JRST UXIT\r
+\f\r
+\r
+;OUTPUT FROM DDT\r
+;CALL AC,[SIXBIT /DDTOUT/]      AC HAS POINTER TO DDT OUTPUT BUFFER\r
+\r
+DDTOUT:        PUSHJ PDP,TTYSR1\r
+       MOVE IOS,DEVIOS(DEVDAT)\r
+       TLNE IOS,IO                     ;OUTPUT IN PROGRESS?\r
+       PUSHJ PDP,WAIT1                 ;YES, WAIT\r
+       MOVE IOS,[XWD NIO+TOUT+DDTM,IOACT]\r
+       IORB IOS,DEVIOS(DEVDAT)\r
+       LDB TAC,PUUOAC          ;PICK UP AC NUMBER\r
+       HRLI TAC,JDAT           ;CALC REAL ADDRESS OF AC\r
+       HRR TAC,@TAC            ;PICK UP AC\r
+       HRLI TAC,@TAC           ;CALC REAL ADDRESS OF DDT BUF\r
+       HRRI TAC,TTYBUF(DEVDAT)\r
+       HRRZM TAC,TTYCTR(DDB)           ;A SUITABLY LARGE NUMBER\r
+       MOVE TAC1,TAC\r
+       BLT TAC,20(TAC1)                ;MOVE DDT BUFFER TO MONITOR\r
+       HRLI TAC1,440700\r
+\r
+       MOVEM TAC1,TTYPTR(DEVDAT)\r
+       TLZ IOS,IOS+IOFST\r
+       PUSHJ PDP,TTYOU0\r
+       JRST UXIT\r
+\f\r
+\r
+TTYSR1:        MOVE ITEM,JOB\r
+TTYSRC:        MOVSI LINE,MTTYLN\r
+               HRRZ DEVDAT,TTYTAB(LINE)\r
+               JUMPE DEVDAT,TTYF0\r
+               LDB TAC,TPCJOBN\r
+               CAIN TAC,(ITEM)\r
+               POPJ PDP,               ;FOUND\r
+       TTYF0:  AOBJN LINE,TTYSRC+1\r
+               MOVSI TAC,576062        ;SIXBIT /OPR/\r
+               JRST DEVPHY             ;SEARCH PHYSICAL DEVICE NAMES\r
+                                       ;AND RETURN OPERATOR TTY.\r
+\r
+       ;ROUTINE TO FIND A TTY FOR A JOB\r
+       ;CALL:  MOVE ITEM,JOB NUMBER\r
+       ;       PUSHJ PDP, TTYFND\r
+       ;       ERROR RETURN\r
+       ;       RETURN WITH DEVDAT SET TO ADR OF DDB\r
+       ;       AND DAT SET TO BYTE POINTER TO MONITOR OUTPUT BUFFER\r
+\r
+       TTYFNU: MOVE ITEM,JOB\r
+       TTYFND: PUSHJ PDP,TTYSRC                ;CALLED BY PUSHJ PDP,TTYFND\r
+       ;       PUSHJ PDP,WSYNC\r
+               MOVSI TAC,NIO                   ;JOB NUMBER IN TAC1\r
+               IORM TAC,DEVIOS(DEVDAT) \r
+       TTYDAT: MOVEI DAT,TTYBUF(DEVDAT)        ;SETUP OUTPUT BYTE POINTER\r
+               HRLI DAT,440700\r
+               POPJ PDP,\r
+\r
+       TTYSTR: MOVE TAC,DAT\r
+               PUSHJ PDP,CLRBYT\r
+               SUBI TAC,TTYBM1(DEVDAT)\r
+               ANDI TAC,-1\r
+               IMULI TAC,5\r
+               MOVEM TAC,TTYCTR(DEVDAT)\r
+               MOVEI TAC,TTYBUF(DEVDAT)\r
+               HRLI TAC,440700\r
+               MOVEM TAC,TTYPTR(DEVDAT)\r
+               MOVE IOS,DEVIOS(DEVDAT)\r
+               IOR IOS,[XWD NIO+IOFST,IODTER+IOBKTL]\r
+               ANDCM IOS,[XWD NIO+IOFST,IODTER+IOBKTL]\r
+               PUSHJ PDP,GCHAR\r
+               POPJ PDP, ;NOTHING TO TYPE\r
+               JRST TTYOU2             ;START OUTPUT\r
+\r
+       ;DISPATCH TABLE;\r
+\r
+       TTYDSP: POPJ PDP, ;RELEASE\r
+               JRST OUT        ;CLOSE\r
+               JRST TTYOUT\r
+               TDZ IOS,[XWD TPMON,ECHOF+NCERR]         ;INPUT\r
+               TRO IOS,IOACT\r
+               TLZE IOS, IOBEG\r
+               TLO IOS, IOFST\r
+               JRST MIS1\r
+\r
+       TTYOUT: TDO IOS,[XWD TOUT+IOFST,IOACT]\r
+               TDZ IOS,[XWD TPMON,ECHOF+NCERR]\r
+       TTYOU0: LDB HPOS,PHPOS\r
+               LDB VPOS,PVPOS\r
+               PUSHJ PDP, GCHAR\r
+               POPJ PDP,\r
+               DPB HPOS,PHPOS\r
+               DPB VPOS,PVPOS\r
+       TTYOU2: LDB LINE,PUNIT\r
+               CONO CLDS               ;DISABLE CLOCK\r
+               CAIN LINE,TCONLN\r
+               JRST CTYOUT\r
+               CONO DCSA,0             ;DISABLE SCANNER\r
+               CONO DCSB, (LINE)\r
+               DATAO DCSA, CHREC\r
+               CONO DCSA,FSNCHN\r
+               DPB CHREC,PLASTC\r
+       TTYOU1: CONO CLEN               ;RE-ENABLE CLOCK\r
+               MOVEM IOS,DEVIOS(DEVDAT)\r
+               POPJ PDP,\r
+\r
+       CTYOUT: CONO TTY,0              ;DISABLE TTY\r
+               DATAO TTY,CHREC\r
+               MOVEM CHREC,CCHAR\r
+               CONO TTY,SCNCHN         ;RE-ENABLE\r
+               JRST TTYOUT1\r
+\r
+       CTYINT: CONSO TTY,50\r
+               JRST .\r
+               CONSO TTY,40\r
+               JRST CTYOU1\r
+               MOVEM TAC, CCHAR        ;DONT ECHO RUBOUT\r
+               DATAI TTY, TAC\r
+               ANDI TAC, 177\r
+               CAIN TAC, 177\r
+               JRST CTYRUB             ;IS A RUBOUT\r
+               DATAO TTY, TAC          ;NOT, SO ECHO\r
+               EXCH TAC, CCHAR\r
+               JRST 12,@SCNCHL                 ;DISMISS INTERRUP\r
+\r
+       CTYRUB: EXCH TAC, CCHAR\r
+       CTYOU1: JSR SCNSAV\r
+               MOVEI CHREC,SCNCHN\r
+               CONO TTY,200(CHREC)\r
+               MOVE CHREC,CCHAR\r
+               MOVEI LINE,TCONLN\r
+               JRST TCOMM\r
+\r
+       SCNINT: CONSO DCSA,1010\r
+               JRST .\r
+               JSR SCNSAV\r
+               CONSO DCSA,10           ;RECEIVER FLAG?\r
+               JRST SCNIN1             ;NO,XMITTER FLAG\r
+               CONI DCSB, LINE\r
+               DATAI DCSB, CHREC\r
+       TCOMM:  ANDI CHREC, 177\r
+               CAILE LINE,TCONLN       ;CTY LINE OR LESS\r
+               JRST TYPX               ;NO\r
+               SKIPE DDB,TTYTAB(LINE)  ;DATA BLOCK ASSIGNED?\r
+               JRST INUSE              ;YES\r
+               PUSHJ PDP,DDBSRC        ;SEARCH FOR FREE TTY DEV. DATA BLOCK\r
+               JRST TYPX               ;NONE FOUND, TYPE X\r
+               CLEARB HPOS,VPOS        ;ASSUME TTY IS AT BEGIN OF FORM\r
+               CONSZ DCSA,700          ;FULL DUPLEX?\r
+               CAIN LINE,TCONLN        ;CTY?\r
+               JRST INJEST             ;NO, SWALLOW CHAR\r
+               JRST TYP1\r
+\f\r
+\r
+;ROUTINE TO SEARCH FOR FREE TTY DEV DATA BLOCK\r
+;CALL:   MOVE LINE,TTY LINE NO\r
+;        PUSHJ PDP,DDBSRC\r
+;        NONE FOUND\r
+;        RETURN DEVDAT, LINE SET\r
+\r
+DDBSRC:          MOVSI IOS,MLTTYL      ;NO. OF TTY DDB\r
+         MOVEI DEVDAT,TTYLST   ;ADDRESS OF FIRST DDB\r
+         SKIPA TAC,[XWD TTYUSE+TTYATC,ASSPRG+ASSCON]\r
+         HLRZ DEVDAT,DEVSER(DEVDAT)\r
+         TDNE TAC,DEVMOD(DEVDAT)       ;USE.ATTACH, AND BOTH ASSIGN\r
+         AOBJN IOS,.-2\r
+         JUMPGE IOS,CPOPJ      ;DDB FOUND?\r
+         MOVE IOS,[XWD TPMON+IOFST,IOACT]\r
+         MOVE TAC,[XWD TTYUSE,ASSCON]\r
+\r
+;INITIALIZE TTY DEVICE DATA BLOCK(CALLED FROM TTYATT TOO)\r
+\r
+SCNIN:   IORM TAC,DEVMOD(DEVDAT)\r
+         DPB LINE,PUNIT        ;SET LINE NO. IN DDB\r
+         MOVSI TAC,646471      ;SIXBIT /TTY/\r
+         MOVEM TAC,DEVNAM(DEVDAT)\r
+         MOVE TAC,[POINT 6,DEVNAM(DEVDAT),17]\r
+         PUSH PDP,LINE         ;SAVE LINE NO.\r
+         TRNN LINE,70          ;IS THERE A HIGH ORDER OCTAL DIGIT?\r
+         JRST SCNIN0           ;NO\r
+         ROT LINE,-3           ;YES,CONVERT TO SIXBIT\r
+         ADDI LINE,20\r
+         IDPB LINE,TAC         ;STORE HIGH ORDER SIXBIT DIGIT\r
+         LSH LINE,20           ;IN PHYSICAL NAME\r
+SCNIN0:   ADDI LINE,20\r
+         IDPB LINE,TAC         ;STORE LOW ORDER DIGIT\r
+         POP PDP,LINE\r
+\r
+         HRRM DEVDAT,TTYTAB(LINE)      ;SET LINE NO. IN TRANSLATOR T\r
+         MOVSI TAC,436471      ;SIXBIT /CTY/\r
+         CAIN LINE,TCONLN      ;IS THIS CONSOLE TTY?\r
+         MOVEM TAC,DEVNAM(DEVDAT)      ;YES, SET NAME TO CTY\r
+         MOVE TAC,DEVNAM(DEVDAT)\r
+         SKIPN DEVOPR          ;IS THIS FIRST CHAR. TYPED BY ANYONE?\r
+         MOVEM TAC,DEVOPR      ;YES,SET THIS TTY AS OPERATOR TTY\r
+         JRST CPOPJ1           ;SUCCESSFUL RETURN\r
+\r
+SCNIN1:          DATAI DCSA,LINE       ;GET LINE NO. FROM FULL DUPLEX\r
+         MOVEI TAC,FSNCHN\r
+         CONO DCSA,4000(TAC)   ;RELEASE XMITTER SCANNER\r
+         SKIPE DDB,TTYTAB(LINE)        ;DATA BLOCK ASSIGNED?\r
+         CAIL LINE,TCONLN      ;LINE NO. TOO LARGE?\r
+         JRST SCNRET                   ;GO AWAY\r
+         LDB CHREC,PLASTC\r
+         JRST INUS1\r
+\f\r
+\r
+TYPX:    CAIN CHREC,"X"                ;CHARACTER RECEIVED AN X?\r
+         JRST SCNRET                 ;YES, GO AWAY\r
+         MOVEI CHREC,"X"\r
+         CAIE LINE,TCONLN\r
+         JRST TYPX1\r
+         DATAO TTY,CHREC\r
+         JRST SCNRET\r
+TYPX1:   CONSO DCSB,(LINE)\r
+         DATAO DCSA,CHREC              ;TYPE AN X\r
+         JRST SCNRET\r
+\r
+INUSE:   CONSZ DCSA,700        ;FULL DUPLEX?\r
+         CAIN LINE,TCONLN\r
+         JRST INUS1\r
+         CONO DCSB,(LINE)\r
+         DATAO DCSA,CHREC\r
+         DPB CHREC,PLASTC\r
+         JRST SCNRET\r
+\r
+INUS1:   MOVE IOS,DEVIOS(DDB)\r
+         LDB PROG,PJOBN\r
+         HRRZ PROG,JBTADR(PROG)\r
+         LDB HPOS,PHPOS\r
+         LDB VPOS,PVPOS\r
+         LDB TAC, TTYPTR(DDB)\r
+         TLNE IOS, SP\r
+         JRST SIM35\r
+INUS2:   TLNN IOS,TOUT\r
+         JRST INJEST\r
+         CAME TAC, CHREC\r
+         JRST ECHO\r
+INUS3:   PUSHJ PDP, GCHAR\r
+         JRST LEAV0\r
+TYPE:    CAIN LINE,TCONLN\r
+         JRST CTSER3\r
+TYP1:    CONO DCSB,(LINE)\r
+         DATAO DCSA, CHREC\r
+         DPB CHREC,PLASTC      ;SAVE CHARACTER FOR FULL DUPLEX\r
+LEAVE:   MOVEM IOS, DEVIOS(DDB)\r
+LEAV1:   DPB HPOS,PHPOS\r
+         DPB VPOS,PVPOS\r
+         JRST SCNRET\r
+LEAV0:   MOVEM TAC,DEVMOD(DEVDAT)      ;IS TTY ATTCHED?\r
+         TLNN TAC,TTYATC\r
+         PUSHJ PDP,TTYKIL              ;NO,RETURN TO POOL\r
+         JRST LEAV1\r
+\r
+CTSER3:          DATAO TTY,CHREC\r
+         MOVEM CHREC,CCHAR\r
+         JRST LEAVE\r
+\f\r
+\r
+ECHO:    TDO IOS,[XWD SP,ECHOF]\r
+         TLZ IOS,TOUT\r
+         MOVEI CHREC,177               ;SEND A RUBOUT AFTER ECHO CHE\r
+         JRST TYPE\r
+\r
+SIM35:   MOVSI TAC,-SCTABL\r
+         MOVE HPOS, SCTAB(TAC)\r
+         CAIE CHREC,(HPOS)\r
+         AOBJN TAC, .-2\r
+         LDB HPOS,PHPOS\r
+         JUMPGE TAC, ECHO\r
+         MOVS TAC, SCTAB(TAC)\r
+         TLNE TAC, 140         ;SPACING CHARACTER\r
+         AOJA HPOS,(TAC)       ;YES\r
+         JRST (TAC)            ;NO\r
+\r
+SCTAB:   XWD SPACE," "\r
+         XWD SIMLF,12\r
+         XWD SIMRO,177         ;RUBOUT\r
+         XWD SIMRO,134         ;BACK SLASH\r
+         XWD ASC3,15           ;CR\r
+         XWD SIMVA,"^"\r
+         XWD DELET1,"C"\r
+         XWD DELET1,"O"\r
+         XWD SIM4,"Z"\r
+         XWD DELET1,"U"\r
+SCTABL=.-SCTAB\r
+\r
+SPACE:   TRNN HPOS,7           ;FINISHED SIMULATING TABS(8)\r
+         JRST SIM4             ;YES\r
+         JRST TYPE             ;NO, SEND ANOTHER SPACE\r
+\r
+SIMVA:   LDB CHREC,PSCHAR\r
+         TRO CHREC, 100\r
+         JRST TYPE\r
+\r
+SIMLF:   SOJG VPOS,TYPE        ;SEND ANOTHER LINE-FEED\r
+SIM4:    TLZ IOS,SP\r
+         TLNN IOS,TOUT\r
+         JRST INJ4\r
+         JRST INUS3\r
+\r
+SIMRO:   TLZA IOS, SP\r
+MOD35:   TRC IOS,T35\r
+         JRST LEAVE\r
+\f\r
+\r
+INJEST:          CAIN CHREC,3          ;CONTROL C?\r
+         JRST INJ5\r
+         TLZE IOS,IOFST        ;IF FIRST CHARACTER IN, INITIALIZE\r
+         PUSHJ PDP,SETMB1\r
+         TLNE IOS,DDTM         ;1 DDT CHAR RESTARTS PROGRAM\r
+         TLO IOS,SYNC+IOEND    ;YES, TERMINATE BUFFER\r
+         CAIN CHREC,17                 ;COTNROL O?\r
+         JRST INJ6                     ;YES, FLUSH OUTPUT\r
+         TRZE IOS,ECHOF                ;ECHO HAS OCCURRED?\r
+         JRST INJ7                     ;YES, NOW RESUME OUTPUT\r
+         TRNE IOS,NCERR\r
+         JRST LEAVE\r
+         CAIE CHREC,033        ;NEW NEW ALT-MODE?\r
+         CAIN CHREC,176        ;NEW ALT-MODE?\r
+         MOVEI CHREC,175       ;CHANGE TO OLD\r
+         CAIN CHREC,20         ;CONTROL P TAB SIMULATION FLIP FLOP SWI\r
+         JRST MOD35\r
+         TLNE IOS,DDTM\r
+         JRST INJ25            ;SENT RUBOUTS ON TO DDT\r
+         CAIN CHREC,177        ;RUBOUT\r
+         JRST DELET\r
+INJ25:   DPBI CHREC, TTYPTR(DDB)\r
+         SOS TAC, TTYCTR(DDB)\r
+         CAIL CHREC, 40\r
+         CAILE CHREC, 137\r
+         JRST SPCIN\r
+         ADDI HPOS,1\r
+INJ4:    PUSHJ PDP, MOVBUF\r
+         JRST LEAVE\r
+\r
+SETMB1:          HRRI TAC, TTYBUF(DDB)\r
+         HRLI TAC, 440700\r
+         MOVEM TAC, TTYPTR(DDB)\r
+         HRLS TAC\r
+         AOS TAC\r
+         SETZM TTYBUF(DDB)\r
+         BLT TAC,TTYBFE(DDB) ;CLEAR OUT MONITOR BUFFER\r
+         MOVEI TAC, 111\r
+         MOVEM TAC, TTYCTR(DDB)\r
+         POPJ PDP,\r
+\f\r
+\r
+INJ5:    PUSHJ PDP,SETMB1\r
+         PUSH PDP,ITEM         ;^C\r
+         LDB ITEM,TPCJOBN      ;YES, GET USER CONSOLE NUMBER\r
+         SKIPE ITEM\r
+         PUSHJ PDP,STOP1                 ;SHUT OFF JOB\r
+         POP PDP,ITEM\r
+         TLNN IOS,TPMON        ;SAVE STATUS OF TTY\r
+         MOVEM IOS,TTYSAV(DDB)         ;WHEN IT WAS IN USER MODE\r
+         MOVE IOS,[XWD TPMON+IOFST,IOACT]\r
+         MOVEI TAC,"C"\r
+         JRST INJ61\r
+\r
+INJ6:    PUSH PDP,TAC1         ;^O\r
+         TLZE IOS,IOW\r
+         PUSHJ PDP,SETIOD\r
+         POP PDP,TAC1\r
+         TLNE IOS,TPMON+DDTM\r
+         JRST INJ6A\r
+         TLNE IOS,TOUT\r
+         PUSHJ PDP,ADVBFE\r
+INJ6A:   TLOA IOS,IOFST\r
+         JRST .-2\r
+         TRZ IOS,ECHOF\r
+         TRO IOS,IODEND\r
+         MOVEI TAC,"0"\r
+INJ61:   DPB TAC,PSCHAR\r
+         MOVEI CHREC,"^"\r
+         JRST SPC21\r
+\r
+INJ7:    TLO IOS,TOUT\r
+         JRST INUS3\r
+\f\r
+\r
+SPCIN:   MOVSI TAC,-SCITL      ;SEARCH FOR SPECIAL INPUT CHAR\r
+         MOVE TAC1,SCITAB(TAC)\r
+         CAIE CHREC,(TAC1)     ;FOUND?\r
+         AOBJN TAC,.-2         ;NO\r
+         HLR TAC,TAC1          ;SAVE DISPATCH ADDRESS\r
+         LDB LINE,PUNIT        ;RESTORE TAC1\r
+         JUMPL TAC,(TAC)       \r
+         JRST INJ4             ;CHARACTER NOT FOUND\r
+\r
+SCITAB:          XWD SPCCR,15          ;CR\r
+         XWD ASC1,12           ;LF\r
+         XWD SPC2,11           ;HORIZ TAB\r
+         XWD SPVT,13           ;VT\r
+         XWD SPFF,14           ;FF\r
+         XWD SPC4A,25          ;^U\r
+         XWD SPC7,32           ;^Z\r
+         XWD ASC1, 175         ;ALT MODE\r
+SCITL=.-SCITAB\r
+\r
+SPCCR:   MOVEI HPOS,0\r
+         JRST ASC3\r
+\r
+SPFF:    SKIPA VPOS,[10]\r
+SPVT:    MOVEI VPOS,4\r
+         TLNN IOS,T35          ;DONT SIMULATE FOR A MOD 35\r
+         TLO IOS,SP\r
+ASC1:    LDB TAC,PIOMOD\r
+         TLNN IOS,TPMON\r
+         CAIN TAC,AL\r
+          TLO IOS,SYNC\r
+ASC2:    TLNN IOS,SP\r
+         JRST INJ4\r
+ASC3:    MOVEI CHREC,12        ;LINE FEED\r
+         JRST TYPE\r
+\r
+SPC4A:   PUSHJ PDP,SETMB1\r
+         MOVEI TAC,"U"\r
+         JRST INJ61\r
+\r
+SPC2:    TRNE IOS,T35\r
+         JRST LEAVE\r
+         MOVEI CHREC," "\r
+SPC21:   TLO IOS,SP\r
+         JRST TYPE\r
+\r
+SPC7:    TLO IOS,SYNC+IOEND+SP         ;^Z\r
+         MOVEI TAC,"Z"\r
+         JRST INJ61            ;ECHO ^Z\r
+\f\r
+\r
+DELET:   MOVE TAC,TTYCTR(DDB)\r
+         CAIL TAC,111\r
+         JRST DELET1\r
+\r
+         MOVSI TAC,070000\r
+         ADD TAC,TTYPTR(DDB)\r
+         TLNE TAC,400000\r
+         ADD TAC,[XWD 347777,-1]\r
+         MOVEM TAC,TTYPTR(DDB)\r
+         AOS TTYCTR(DDB)\r
+\r
+         MOVEI CHREC,334               ;BACK SLASH\r
+DELET2:          TLO IOS,SP\r
+         JRST TYPE\r
+\r
+DELET1:          MOVEI VPOS,1\r
+         MOVEI CHREC,15\r
+         JRST DELET2\r
+\f\r
+\r
+;ROUTINE TO GET NEXT CHARACTER FROM OUTPUT BUFFER\r
+;CALL:   PUSHJ PDP,GCHAR\r
+;        NO MORE LEFT\r
+;        RETURN WITH CHAR. IN CHREC\r
+\r
+GCHAR:   TLZN IOS, IOFST\r
+         JRST GCHAR3\r
+GCHAR1:          HRRZ TAC,DEVOAD(DDB)\r
+         ADD TAC, [XWD 000700+PROG,1]\r
+         MOVEM TAC, TTYPTR(DDB)\r
+         HRRZ TAC, @TAC\r
+         IMULI TAC, 5\r
+         MOVEM TAC,TTYCTR(DDB)\r
+GCHAR3:          SOSGE TTYCTR(DDB)\r
+         JRST GCHAR5\r
+         LDBI CHREC, TTYPTR(DDB)\r
+         JUMPE CHREC, GCHAR7\r
+         CAIN CHREC, 11\r
+         JRST HT\r
+         CAIN CHREC, 12\r
+         AOJA VPOS,GCH3\r
+         CAIE CHREC, 13\r
+         CAIN CHREC, 14\r
+         JRST VTFF\r
+         ADDI HPOS,1\r
+         CAIN CHREC,15\r
+         MOVEI HPOS,0\r
+GCH3:    AOSA (PDP)\r
+GCH3A:   MOVE IOS,TTYSAV(DDB)          ;RESTORE STATUS TO USER\r
+GCHAR4:          MOVEM IOS,DEVIOS(DDB)\r
+         POPJ PDP,\r
+\r
+GCHAR7:          TLNN IOS,DDTM         ;DDT BUFFER TERMINATED WITH NULL\r
+         JRST GCHAR3\r
+GCHAR5:          PUSH PDP,TAC1\r
+         TLZE IOS, IOW\r
+         PUSHJ PDP, SETIOD\r
+         POP PDP,TAC1\r
+         TLNN IOS,TPMON+DDTM\r
+         PUSHJ PDP, ADVBFE\r
+         TLOA IOS,IOFST\r
+         JRST GCHAR1\r
+         TDZ IOS,[XWD IO,IOACT]\r
+         TLZN IOS,USRB\r
+         JRST GCHAR4\r
+         TLZ IOS,TPMON\r
+         LDB LINE,PUNIT        ;GET LINE NO.\r
+         PUSH PDP,ITEM\r
+         LDB ITEM,TPCJOB\r
+         PUSHJ PDP,SETRUN\r
+         POP PDP,ITEM\r
+         TRZN IOS,USRBC\r
+         JRST GCH3A\r
+         MOVSI IOS,TPMON+IOFST\r
+         JRST GCHAR4\r
+HT:      TRNE IOS,T35\r
+         AOJA HPOS,GCH3\r
+         TLO IOS,SP\r
+SPOUT:   MOVEI CHREC,240\r
+         JRST GCH3\r
+\r
+VTFF:    TRNE IOS,T35\r
+         AOJA VPOS,GCH3\r
+         MOVEI CHREC,12\r
+         TLO IOS,SP\r
+         JRST GCH3\r
+\f\r
+MOVBUF:          TLNE IOS,DDTM\r
+         JRST MOV3 ;DONT ADVANCE BUFFERS FOR DDT MODE\r
+         TLZN IOS,SYNC\r
+         SKIPG TTYCTR(DDB)\r
+         JRST .+2\r
+         JRST MIS1\r
+         TLNE IOS, TPMON\r
+         JRST MOVMON\r
+         MOVE TAC,DEVIAD(DDB)          ;IS TTY EXPECTING INPUT?\r
+         TRNE TAC,-1   \r
+         SKIPGE @TAC                   ;OR IS NEXT BUFFER READY?\r
+         JRST MIS  ;NO\r
+         PUSH PDP,TAC1\r
+         MOVE TAC,TTYPTR(DDB)\r
+         PUSHJ PDP,CLRBYT\r
+         MOVE TAC,DEVIAD(DDB)\r
+         PUSHJ PDP,ADRCK    ;MAKE SURE BUFFER WILL FIT\r
+         HRRZI TAC,STTYB1(TAC)         ;LENGTH+1\r
+\r
+         MOVEI TAC,@DEVIAD(DDB)\r
+         ADDI TAC,2\r
+         HRR CHREC,TAC\r
+         ADDI TAC,STTYBF\r
+         HRLI CHREC,TTYBUF(DDB)\r
+         BLT CHREC,-1 (TAC)\r
+       \r
+         MOVEI TAC,111\r
+         SUB TAC, TTYCTR(DDB)\r
+         ADDI TAC,4\r
+         IDIVI TAC,5\r
+         MOVEI CHREC,@DEVIAD(DDB)\r
+         MOVEM TAC,1(CHREC)\r
+         PUSHJ PDP, ADVBFF\r
+         JRST .+1\r
+         TLOA IOS,IOFST\r
+MOV3:    PUSH PDP,TAC1\r
+         TLZE IOS, IOW\r
+         PUSHJ PDP, SETIOD\r
+         POP PDP,TAC1\r
+         TRZA IOS,NCERR+IOACT\r
+MIS:     TRO IOS, NCERR\r
+MIS1:    MOVEM IOS, DEVIOS(DDB)\r
+         POPJ PDP,\r
+MOVMON:          MOVSI TAC,400000\r
+         IORM TAC,TTYTAB(LINE)         ;SET BIT FOR MONITOR\r
+         TLO IOS,IOFST\r
+         MOVEI TAC,15\r
+         DPB TAC,TTYPTR(DDB) ;FORCE A CARRIAGE RET INTO MONITOR COMM\r
+         AOS COMCNT\r
+         POPJ PDP,\r
+\r
+         END,\r
diff --git a/src/syscon.mac b/src/syscon.mac
new file mode 100644 (file)
index 0000000..43edf8d
--- /dev/null
@@ -0,0 +1,286 @@
+TITLE SYSCON - UUO HANDLER\r
+SUBTTL 8-9-65\r
+EXTERNAL CLOSE1,ILLINS,IN,JOBAC,JOBADR,JOBDAT\r
+EXTERNAL MTAPE1,OUT,RELEA1,UINBF,UINIT,UOUTBF\r
+EXTERNAL USRJDA,USRSAV,USTATO,USTATS,USTATZ\r
+EXTERNAL ERROR,UUOERR,CLDS,CLEN\r
+EXTERNAL IOIERR,MJOBPD,JOBPDL,WAIT1,USRREL,PUUOAC\r
+EXTERNAL JOBPDL,MJOBPD,USETST\r
+\f\r
+\r
+\r
+, DEC 06 00 EX UUO L PT PRE 06 UUO HANDLER\r
+, 3/10/65\r
+,   ALL UUOS DROP THEMSELVE IN REAL LOCATION 40, AND TRAP\r
+, TO 41. THE UUO HANDLER SHUFFLES THE UUO OFF TO THE USERS\r
+, 40,41, IF IT IS NOT A SYSTEM UUO.\r
+, SYSTEM UUOS FALL INTO THREE CLASSES, HANDLED DIFFERENTLY\r
+, (1) SYSTEM FUNCTIONS: LOAD ACS PDP, PROG, AND DISPATCH TO THE\r
+, FUNCTION.\r
+, (2) DEVICE INDEPENDENT I/O UUO: ALSO LOAD ACS DEVDAT AND IOS\r
+, AND GO THE THE SYSTEM FUNCTION.\r
+, (3) DEVICE DEPENDENT I/O UUOS: DO (1) AND (2), THEN DISPATCH\r
+, THROUGH THE TABLE WHOSE ADDRESS IS IN THE RIGHT HALF OF DEVSER(DEVD\r
+, CONTROL MAY ALWAYS BE RETURNED BY EXECUTING A\r
+,    JRST UXIT\r
+, WHICH WILL RESTORE THE ACS, ARP BITS, AND RETURN.\r
+, THE UUO HANDLER IS PURE IF THE FOLLOWING RESTRICTIONS ARE OBSERVED.\r
+, RESTRICTIONS: UUOS CANNOT BE CALLED BY INTERRUPT SERVICE ROUTINES.\r
+, MONITOR INTERFACE\r
+,        STORAGE: 89\r
+,        ROUTINES CALLED: ILLINS, ADRCK, EXCLK, UUOH, SETIOS,UUOUSR\r
+,           UUOS CALLED: CALL, INIT, RELEAS, CLOSE, OUTBUF, INBUF\r
+,                        STATS, STATO, STATZ, OUTPUT, INPUT\r
+,           DEVICE DEPENDENT:          DEN, DLK, DSO, DSI, DGF\r
+,        SYMBOLS SET/USED:     \r
+,                  ACCUMULATORS:       POP  S/U  TAC  S/U\r
+,                                      PROG S/U  TAC1 S/U\r
+,                                      SUB  S\r
+,                  SYSTEM PARAMETERS:  UIO   U\r
+,                                      USYS  U\r
+,                                      USYSN U\r
+,                  JOB AREA:           JOBAC  U  JOBDAT U\r
+,                                      JOBPDP U\r
+,                  SYSTEM ADDRESSES:   CLK    S/U\r
+,                                      JOBADR U\r
+,                                      USRLEV S/U\r
+,                  DEVICE DATA BLOCK:  DEVSER U\r
+,                  INTERNAL ADDRESSES: 40     S/U\r
+,                                      UUO0   S/U\r
+,                                      UUSAV  S/U\r
+\f\r
+\r
+\r
+INTERNAL UUO0\r
+\r
+UUO0:    0\r
+         EXCH TAC,40           ;SAVE TAC; PICK UP UUO\r
+         MOVEM 17,USRSAV       ;SAVE 17\r
+         TLNE TAC,77000        ;0 UUO IS ILLEGAL\r
+         TLNE TAC,740000       ;UUO FOR SYSTEM?\r
+         JRST UUOSYS           ;YES\r
+         MOVE 17,JOBADR        ;GET JOB AREA ADDRESS\r
+         MOVEM TAC,40(17)      ;STORE UUO IN USERS 40\r
+         HRRZ TAC,41(17)       ;PICK UP ADR OF USERS JSR\r
+         JUMPE TAC,UUOSYS      ;IF ADDRESS=0,ILLEGAL USER UU\r
+         HLL TAC,UUO0          ;PICK UP PROCESSOR FLAGS FOR\r
+         TLNN TAC,USRMOD       ;WAS UUO FROM USER?\r
+         JRST UUOSYS           ;NO, ILLEGAL NUUO FROM SYSTEM\r
+         MOVEI 17,(TAC)        ;17 NOW HAS REL. ADR. OF USER\r
+         CAMG 17,USRREL        ;DONT INCREMENT RETURN IF PC\r
+         HRRI TAC,1(TAC)       ;INCREMENT PC\r
+         EXCH TAC,UUO0         ;SET UP RETURN  TO USER, PICK\r
+                               ;UP USERS FLAGS,PC\r
+         CAMLE 17,USRREL       ;LEGAL MEMORY?\r
+         JRST .+3  ;NO. DONT STORE PC\r
+         ADD 17,JOBADR         ;MAKE REL. ADR. INTO ABS. ADR\r
+         MOVEM TAC,(17)        ;STORE FLAGS AND PC LIKE JSR\r
+         MOVE TAC,40           ;RESTORE TAC\r
+         MOVE 17,USRSAV        ;RESTORE 17\r
+         JRST 2,@UUO0          ;RETURN TO USER\r
+\f\r
+\r
+\r
+UUOSYS:          EXCH TAC,40                   ;RESTORE TA. RESTORE THE UUO\r
+         MOVE 17,UUO0                  ;PICK UP PROCESSOR FLAG\r
+         TLNN 17,USRMOD                ;SYSTEM UUO FROM SYSTEM?\r
+         JRST UUOSY1                   ;YES\r
+         MOVE 17,JOBADR                ;NO. PICK UP ADR. OF USER PRO\r
+         MOVEM 16,16(17)               ;STORE AC16 IN USER 16\r
+         HRRZ 16,17                    ;SET UP BLP POINTER\r
+         BLT 16,15(17)                 ;MOVE REAL ACS TO USER AREA\r
+         MOVE 0,USRSAV                 ;MOVE USER 17 TO USERS AREA\r
+         MOVEM 0,17(17)\r
+       \r
+         MOVE JDAT,JOBDAT              ;LOAD UP JOB DAT AREA ADDRES\r
+         MOVSI PDP,MJOBPD              ;LOAD UP PUSH DOWN AC AND\r
+         HRRI PDP,JOBPDL(JDAT)                   ;MAKE ABSOLUTE PATH\r
+         SKIPA PROG,17       ;PROGRAM BASE ADDRESS\r
+UUOSY1:          MOVE 17,USRSAV                ;RESTORE AC17 IF UUO FROM SYS\r
+         PUSH PDP,UUO0                 ;SAVE RETURN ON PUSH DOWN LIS\r
+         MOVE UUO,40                   ;GET THE UUO INTO AC(UUO)\r
+         LDB TAC1,[POINT 9,UUO,8]                ;PICK UP UUO OP COD\r
+         CAIL TAC1,100                 ;ILLEGAL INSTRUCTION?\r
+         JRST ILLINS                   ;YES\r
+         CAIGE TAC1,40                 ;SYSTEM UUO?\r
+         JRST UUOERR                   ;NO. ILLEGAL\r
+         LDB TAC,PUUOAC\r
+         MOVE DEVDAT,USRJDA(TAC)       ;GET DDB\r
+         CAIGE TAC1,100-UUOT2L                   ;AN IO UUO?\r
+         JRST UUODSP                   ;NO\r
+         CAIE TAC1,70          ;CLOSE AND RELEASE ARE ALWAYS LEGAL\r
+         CAIN TAC1,71\r
+         JUMPE DEVDAT,UXIT\r
+         JUMPE DEVDAT,IOIERR ;CHANNEL MUST BE ASSIGNED\r
+         MOVE IOS,DEVIOS(DEVDAT)                 ;GET DATA BLOCK STA\r
+         JRST UUOT2-77+UUOT2L-1(TAC1)  ;DISPATCH\r
+\r
+UUODSP:          CAIGE TAC1,40+UUOT1L          ;LEGAL SYSTEM UUO?\r
+         JRST UUOT1-40(TAC1)           ;YES. DISPATCH\r
+         JRST UUOERR\r
+\f\r
+\r
+UUOT1:   JRST UCALL            ;40\r
+         JRST UINIT\r
+;ADD NON IO UUOS HERE\r
+\r
+UUOT1L=.-UUOT1\r
+\r
+UUOT2:\r
+;ADD IO UUOS HERE\r
+         JRST USETST\r
+         JRST USTATO\r
+         JRST USTATS\r
+         JRST USTATZ\r
+         JRST UINBF\r
+         JRST UOUTBF\r
+         JRST IN\r
+         JRST OUT\r
+         JRST CLOSE1\r
+         JRST RELEA1\r
+         JRST MTAPE1\r
+         JRST UDGF\r
+         JRST UDSI\r
+         JRST UDSO\r
+         JRST UDLK\r
+         JRST UDEN             ;77\r
+UUOT2L=.-UUOT2\r
+\f\r
+\r
+,DISPATCH TO SPECIAL ROUTINE\r
+DEFINE DSPT(A)\r
+<U'A:    PUSHJ PDP,UDSP\r
+JRST A(TAC)\r
+>\r
+UDSP:    MOVE TAC,DEVSER(DEVDAT)\r
+         MOVE TAC1,DEVCHR(DEVDAT)\r
+         TLNN TAC1,IORET\r
+         MOVEI TAC,NRTOSP-4    ;IGNORE THESE CALLS FOR NON-\r
+         POPJ PDP,\r
+NRTOSP:          JRST CUXIT1           ;SKIP RETURN\r
+         JRST CUXIT1           ;SKIP RETURN\r
+         JSP DAT,ERROR         ;DUMP0\r
+         JSP DAT,ERROR         ;DUMP1\r
+         JRST UUOERR                   ;USETO\r
+         JRST UUOERR                   ;USETI\r
+         JRST UUOERR                   ;GETF\r
+UDEN:    PUSHJ PDP,WAIT1\r
+         TLO IOS,IOBEG\r
+         TRZ IOS,776000\r
+         MOVEM IOS,DEVIOS(DEVDAT)\r
+         LDB TAC,PUUOAC\r
+         TLO DEVDAT,ENTRB\r
+         TLZ DEVDAT,CLOSB\r
+         HLLM DEVDAT,USRJDA(TAC)\r
+         PUSHJ PDP,UDSP\r
+         JRST DEN(TAC)\r
+\r
+UDLK:    PUSHJ PDP,WAIT1\r
+         TDZ IOS,[XWD IOEND,776000]\r
+         MOVEM IOS,DEVIOS(DEVDAT)\r
+         LDB TAC,PUUOAC\r
+         TLO DEVDAT,LOOKB\r
+         TLZ DEVDAT,CLOSB\r
+         HLLM DEVDAT,USRJDA(TAC)\r
+         PUSHJ PDP,UDSP\r
+         JRST DLK(TAC)\r
+\r
+         DSPT(DSO)\r
+\r
+         DSPT(DSI)\r
+\r
+         DSPT(DGF)\r
+\r
+\f\r
+\r
+, 6-CSS-DEC-CALL-PL-PRE2\r
+, H. R. MORSE       64-11-17\r
+, CALLING SEQUENCE\r
+,        CALL 0,[SIXBIT/NAME/]\r
+, WHERE NAME IS THE NAME OF A SYSTEM ROUTINE.\r
+, IF NO SYSTEM ROUTINE WITH THE SPECIFIED NAME IF FOUND, THIS ROUTINE\r
+, EXISTS TO ERROR.\r
+, MONITOR INTERFACE\r
+,        ROUTINES CALLED: ERROR, HASH, SYSTEM ROUTINES DEFINED BY\r
+,                            USE OF UCALIN.\r
+,        SYMBOLS SET/USED:\r
+,                  ACCUMULATORS:       DAT S/U         PROG U\r
+,                                      PDP U           UUO  S/U\r
+;CONTENTS OF USER AC PLACED IN AC TAC\r
+\r
+UCALL:   TLO UUO,JDAT          ;RELATIVIZE UUO ADDRESS\r
+         MOVE DAT,@UUO;                  DAT:=NAME OF SYSTEM ROUTINE C\r
+         MOVSI TAC1,-UCLLEN\r
+         CAME DAT,UCLTAB(TAC1);          SEARCH SYSTEM TOUTINE NAME TA\r
+         AOBJN TAC1,.-1\r
+         LDB DAT,PUUOAC        ;USER UUO AC FIELD\r
+         HRLI DAT,JDAT\r
+         MOVE TAC,@DAT         ;PICK UP CONTENTS OF USER AC\r
+         JUMPL TAC1,@UCLJMP(TAC1)\r
+         JRST UUOERR\r
+\r
+DEFINE NAMES\r
+<        X DDTIN,DDTIN\r
+ X DDTOUT,DDTOUT\r
+ X DDTGT,DDTGT\r
+ X DDTRL,DDTRL\r
+ X SETDDT,SETDDT\r
+ X DEVCHR,DVCHR\r
+X GETCHR,DVCHR\r
+X WAIT,WAIT\r
+ X RESET,RESET\r
+ X EXIT,EXIT\r
+ X LDRBLT,LDRBLT\r
+ X UTPCLR,UTPCLR\r
+ X DATE,DATE\r
+ X SETPOV,SETPOV\r
+ X SWITCH,SWITCH\r
+ X TIMER,TIMER\r
+>\r
+DEFINE X (A,B)\r
+<        SIXBIT /A/\r
+>\r
+UCLTAB:   NAMES\r
+UCLLEN=.-UCLTAB\r
+\r
+DEFINE X(A,B)\r
+<        JRST B\r
+EXTERNAL B\r
+>\r
+UCLJMP:          NAMES\r
+\f\r
+\r
+, DEV 06 00 EX COM L PT PRE 02 UXIT\r
+, H. R. MORSE       64-12-26\r
+, CALLING SEQUENCE\r
+,        ANY TRANSFER OF CONTROL TO UXIT\r
+, EXITS THIS UUO CALL.\r
+, MONITOR INTERFACE\r
+,        SYMBOLS SET/USED:\r
+,                  ACCUMULATORS:       MAY RESTORE ALL ACCUMULATORS\r
+,                                      JDAT U\r
+,                                      PDP U\r
+,                                      17  S/U\r
+,                  JOB AREA:           JOBAC U\r
+,                  SYSTEM ADDRESSES:   USRUXT U\r
+,                                      USRLEV S/U\r
+\f\r
+\r
+\r
+         INTERN UXIT,CUXIT1,CUXIT2\r
+\r
+CUXIT2:          AOS (PDP)\r
+CUXIT1:          AOS (PDP)\r
+UXIT:    POP PDP,USRSAV                ;RESTORE UUO EXIT ADDRESS FRO\r
+         EXCH TAC,USRSAV\r
+         TLNN TAC,USRMOD               ;WAS ENTRY FROM USER MODE?\r
+         JRST UXIT2\r
+         MOVEM TAC,USRSAV              ;SET UP RETURN\r
+         MOVSI 17, JOBAC(JDAT)                   ;RESTORE ACCUMULATO\r
+         BLT 17,17\r
+UXIT1:   JRST 2,@USRSAV                ;RETURN TO USERS PROGRAM\r
+\r
+UXIT2:   EXCH TAC,USRSAV\r
+         JRST 2,@USRSAV\r
+\r
+         END,\r
diff --git a/src/syscss.mac b/src/syscss.mac
new file mode 100644 (file)
index 0000000..ac37e2d
--- /dev/null
@@ -0,0 +1,101 @@
+TITLE SYSCSS - COMMON SYSTEM SUBROUTINES\r
+SUBTTL 8-9-65\r
+EXTERNAL UXIT,ERROR,USRDDT,USRPOV,PUUOAC,USRREL\r
+\r
+;RETURN THE DATE TO THE USER\r
+\r
+\r
+         INTERNAL DATE,THSDAT\r
+\r
+DATE:    MOVE DAT, THSDAT\r
+         JRST STOAC\r
+\r
+THSDAT:          0             ;CONTAINS THE DATE\r
+\r
+;RETURN TIME SYSTEM HAS RUN IN 60THS OF A SECOND\r
+\r
+INTERNAL TIMER\r
+EXTERNAL TIME\r
+\r
+TIMER:   SKIPA DAT, TIME  ;FALL INTO STOAC\r
+\r
+;RETURN DATA SWITCHES\r
+\r
+INTERNAL SWITCH\r
+\r
+SWITCH:          DATAI DAT\r
+\r
+;STORE DAT IN USER AC\r
+\r
+INTERNAL STOAC\r
+\r
+STOAC:   LDB TAC, PUUOAC\r
+         HRLI TAC, PROG\r
+         MOVEM DAT,@TAC\r
+         JRST UXIT\r
+\r
+;RETURN DEVICE CHARACTERISTICS\r
+\r
+INTERNAL DVCHR\r
+EXTERNAL JOB,DEVSRC,PJOBN\r
+\r
+DVCHR:   MOVE ITEM,JOB\r
+         PUSHJ PDP,DEVSRC      ;SEARCH FOR DEVICE\r
+         SKIPA DAT,[0]         ;NOT A DEVICE\r
+         SKIPA DAT,DEVMOD(DEVDAT)\r
+         JRST STOAC\r
+         LDB TAC,PJOBN         ;GET JOB NUMBER\r
+         CAME TAC,JOB          ;DOES USER ALREADY HAVE THIS DEVICE?\r
+         TRNN DAT,ASSCON+ASSPRG        ;NO\r
+         TLO DAT,DVAVAL        ;NO, BUT HE CAN GET IT\r
+         JRST STOAC\r
+\f\r
+\r
+, CALLING SEQUENCE\r
+,        PUSHJ PDP,HASH\r
+,        EXIT;L                ALWAYS RETURNS HERE\r
+, COMPUTES XOR HASH TYPE INDEX FROM NAME (SIXBIT CODE) IN AC DAT\r
+, AND LEAVES THE RESULT (00<OR= INDEX <OR=77) AS AN INTEGER IN TAC.\r
+, THE ALGORITHM IS AS FOLLOWS: (V = EXCLUSIVE OR)\r
+, BIT    35:=8V17V26V35\r
+,        34:=7V16V25V34\r
+,        33:=6V15V24V33\r
+,        32:=5V11V23V29\r
+,        31:=4V10V22V28\r
+,        30:=3V9V21V27\r
+, MONITOR INTERFACE\r
+,        SYMBOLS SET/USED:\r
+,                  ACCUMULATORS:       DAT U           TAC S/U\r
+,                                      PDP S/U         TAC1 S/U\r
+;        INTERN HASH\r
+\r
+;HASH:   HLR TAC,DAT\r
+;        MOVE TAC1,DAT\r
+;        XORB TAC1,TAC\r
+;        ROT TAC1,-11\r
+;        XOR TAC,TAC1\r
+;        ANDI TAC,UTBNM1\r
+;        POPJ PDP,             ;       RETURN\r
+\f\r
+         INTERNAL SETDDT\r
+\r
+SETDDT:          HLRI TAC,10000\r
+         MOVEM TAC,USRDDT\r
+         JRST UXIT\r
+\r
+\r
+         INTERNAL SETPOV\r
+\r
+SETPOV:          HLRI TAC,10000\r
+         MOVEM TAC,USRPOV\r
+         JRST UXIT\r
+\r
+;WAIT FOR IO TO BECOME INACTIVE ON CHANNEL AC\r
+\r
+INTERNAL WAIT\r
+EXTERNAL IOIERR,WAIT1\r
+\r
+WAIT:    JUMPE DEVDAT,IOIERR ;CHANNEL ASSIGNED?\r
+         PUSHJ PDP,WAIT1     ;WAIT TILL INACTIVE\r
+         JRST UXIT\r
+         END,\r
diff --git a/src/sysini.mac b/src/sysini.mac
new file mode 100644 (file)
index 0000000..0bb086a
--- /dev/null
@@ -0,0 +1,101 @@
+TITLE SYSINI - SYSTEM INITIALIZATION\r
+SUBTTL 8-9-65\r
+EXTERNAL APRCHN,ERROR,IOINI\r
+EXTERNAL DDT,NULJOB,SYSMAK,ONCE,SYSBEG,SYSBG1,SYSEND\r
+EXTERNAL CORTAB,CORLST,CORTAL,CORBLK,SYSSIZ,LINKSR\r
+\r
+;SYSTEM INITIALIZATION DISPATCHTABLE, STARTING AT LOC. 140\r
+;THIS SUBROUTINE MUST BE LOADED FIRST\r
+;ROUTINE ONCE IS ONCE ONLY CODE. IT CONVERTS THE DATE\r
+;AND SETS UP IO SERVICE CHAIN.\r
+\r
+\r
+\r
+INTERNAL SYSDSP\r
+\r
+SYSDSP:          JRST SYSINI           ;INITIALIZE SYSTEM VARIABLES ONCE ONLY\r
+         JRST DDT      ;EXEC DDT\r
+         JRST SYSMAK           ;MAKE NEW SYSTEM\r
+         JRST SYSINI           ;INITIALIZE SYSTEM VARIABLES ALWAYS\r
+         JEN  NULJOB           ;ERROR RECOVERY\r
+         JRST SYSONE           ;DO ONCE ONLY CODE OVER AGAIN\r
+         JRST JSR2 ;BYPASS ONCE ONLY OPERATOR DIALOG\r
+                   ;(IN CASE CONSOLE TTY DOWN)\r
+\f\r
+\r
+;INITIALIZE SYSTEM DATA STORAGE\r
+\r
+INTERNAL SYSINI\r
+NXM=10000 ;NON EX MEM FLAG\r
+\r
+SYSONE:          JSR ONCE  ;ONCE ONLY CODE\r
+SYSINI:          CONO APR,200000       ;IO RESET\r
+JSR1:    JSR ONCE  ;DO ONCE ONLY CODE ONCE\r
+JSR2:    JSR LINKSR            ;LINK IO SERVICE ROUTINES\r
+         MOVS TAC,.+1\r
+         SETZB TAC1,SYSBEG\r
+         MOVSM TAC,JSR1\r
+         MOVSM TAC,JSR2\r
+         HRRI TAC,SYSBG1       ;CLEAR SYSTEM DATA STORAGE\r
+         BLT TAC,SYSEND\r
+         MOVSI TAC, DVDIRIN+TTYATC+TTYUSE\r
+         HRRI TAC,ASSCON+ASSPRG\r
+         HLRZ DEVDAT,DEVLST   ;SCAN ALL DEVICES\r
+SYS1:    ANDCAM TAC, DEVMOD(DEVDAT)    ;CLEAR DIRECTORY IN CORE BIT,\r
+               ;ASSIGNED BY CONSOLE & PROGRAM\r
+         SETZM DEVLOG(DEVDAT)          ;CLEAR LOGICAL NAME\r
+         HLRZ DEVDAT, DEVSER(DEVDAT)\r
+         JUMPN DEVDAT, SYS1\r
+         MOVE JDAT,COREP       ;SET UP CORE USE BIT TABLE\r
+         MOVEM JDAT,CORLST\r
+         MOVEI TAC,CORBLK      ;NO. OF 1K BLOCKS IN TABLE\r
+SYS2:    CONO APR,NXM          ;CLEAR NON EX MEM\r
+         IBP JDAT      ;MOVE BYTE POINTER\r
+         HLLZ DAT,(TAC1)       ;REFERENCE MEMORY, CLEAR RT. OF DAT\r
+         CAMLE TAC1,SYSSIZ     ;HIGHEST LOC IN EXEC.\r
+         CONSZ APR,NXM         ;CAN MEMORY BE USED FOR USER PROG?\r
+         AOJA DAT,SYS3         ;NO, MARK AS INACCESIBLE (1 BIT)\r
+         AOS CORTAL\r
+         MOVEM JDAT,CORLST     ;AND SET LAST FREE BLOCK POINTER\r
+SYS3:    DPB DAT,JDAT          ;STORE 0 OR 1 IN TABLE\r
+         ADDI TAC1,2000        ;INCREMENT MEMORY REF\r
+         SOJG TAC,SYS2\r
+         IBP CORLST            ;SET TO FIRST UNAVAILABLE BLOCK\r
+         HRRI 1,IOGO\r
+         HRRM 1,SYSDSP         ;FALINTO IOGO\r
+\f\r
+\r
+;INITIALIZE ALL IODEVICES\r
+\r
+         INTERNAL IOGO\r
+         EXTERNAL DEVLST, MJOBN, JBTADR,JBTSTS,IOINI\r
+EXTERNAL DCREQ,MTREQ,DTREQ\r
+\r
+IOGO:    MOVEI TAC,APRCHN\r
+         CONO APR,633440(TAC)\r
+         HLRZ TAC, DEVLST       ;CHAIN OF DEVICE DATA BLOKS\r
+IOG0:    MOVEI TAC1,ASSPRG      ;CLEAR ASSIGNED BY PROGRAM BIT\r
+         ANDCAB TAC1,DEVMOD(TAC)\r
+         HRLOI ITEM,IORET+7*PICHN      ;CLEAR JOB NO., USER CHANNEL\r
+         TRNE TAC1,ASSCON\r
+         TLO ITEM,777000\r
+         ANDM ITEM,DEVCHR(TAC)         ;BUT NOT IORET BIT OR PII CHA\r
+         SETZM DEVIOS(TAC)     ;CLEAR IO STATUS WORD\r
+         SETZM DEVBUF(TAC)     ;CLEAR BUFFER ADDRESS\r
+         HLRZ TAC, DEVSER(TAC)\r
+         JUMPN TAC, IOG0\r
+         SETOM DCREQ           ;CLEAR DEVICE REQUEST COUNTS\r
+         SETOM MTREQ   \r
+         SETOM DTREQ\r
+         MOVEI PDP,IOPDL-1\r
+         PUSHJ PDP,IOINI       ;INITIALIZE IO DEVICES\r
+         MOVSI DAT,MJOBN       ;JOB NUMBER ASSIGNED BIT\r
+         MOVE TAC,[XWD JERR,1]         ;SET ERROR BIT, CLEAR ALL 0TH\r
+IOG1:    MOVEM TAC,JBTSTS(DAT)\r
+         AOBJN DAT,IOG1\r
+         CONO PI,12377\r
+         JRST NULJOB           ;START THE NULL JOB\r
+IOPDL:   BLOCK 4\r
+COREP:   POINT 1,CORTAB        ;1 BIT BYTE POINTER TO CORE USE TABLE\r
+\r
+         END SYSINI\r
diff --git a/src/sysmak.mac b/src/sysmak.mac
new file mode 100644 (file)
index 0000000..59de6f8
--- /dev/null
@@ -0,0 +1,54 @@
+TITLE SYSMAK - MAKE NEW SYSTEM WITH THE OLD\r
+SUBTTL 7-21-65\r
+,SYSMAK ASSUMES AN EXISTING SYSTEM WITH A LOADER IN CORE FOR JOB 1\r
+,AND HIGHEST EMORY ADDRESS IN REAL 37.  TO CREATE A NEW SYSTEM, SET\r
+,37 AS DESIRED, LOAD NEW SYSTEM (WITHOUT GOING INTO EXECUTION), AND\r
+,START AT REAL 62.  THE COMPUTE WILL HALT AFTER THE NEW SYSTEM\r
+,HAS BEEN BLOCKED DOWN.  TO START, PRESS CONTINUE OR START AT REAL\r
+,60.  EXEC DDT (IF LOADED WITH THE NEW SYSTEM) STARTS AT REAL 141.\r
+;FROM REL. LOC. 30 ON UP IS BLOCKED DOWN\r
+\r
+,WHEN LOADING A NEW SYSTEM, LOAD SYSINI FIRST.\r
+;SYSINI CONTAINS A DISPATCH TABLE  DOCUMENTED TO BE AT LOC. 60\r
+;ALSO LOAD IOINI LAST SINCE IT CONTAINS SOME ONCE ONLY CODE AT END\r
+;THEN LOAD SYSMAK FOLLOWED BY DDT(EXEC)\r
+;BE SURE THAT LOC SYSSIZ(SIZ OF SYSTEM) IS GREATER THAN\r
+;LAST LOC IN SYSMAK BEFORE STARTING TO LOAD.\r
+;LOC SYSSIZ IS IN LOWER CORE AND MAY HAVE TO BE PATCHED\r
+;USING CONSOLE SWITCHES.\r
+\r
+INTERNAL SYSMAK,MAKEND\r
+EXTERNAL JBTADR,JBTAD1\r
+\r
+SYSMAK:          MOVE 1,JBTAD1         ;LOADER BLOCK ADDRESS FROM JOB ADDRESS\r
+         MOVE 6,2(1)           ;LOADER OFFSET\r
+         ADDI 6,(1)            ;BLOCK ADDRESS+OFFSET\r
+         MOVE 2,6(1);          SYSMBOL TABLE POINTER:  -N,L = LOWEST AD\r
+         ADDI 2(1)\r
+         HLRO 3,2\r
+         MOVNS 3       ;N = SYMBOL TABLE LENGTH\r
+         MOVE 4,DDTMEM         ;MEMORY SIZE(LOC 37)\r
+         MOVEM 4,DDTMEM(6)     ;STORE IN NEW DDTMEM\r
+         SUBI 4,200            ;ROOM FOR DECDUMP\r
+         MOVEM 4,DDTSYM(6)     ;ALSO STORE IN WHAT WILL BECOME DDTSYM\r
+         MOVE 5,2  ;LEAVES ROOM FOR DECDMP\r
+         ADD 5,3\r
+         HRL 5,3   ;C(5):=N,L+N\r
+         SUB 4,5\r
+         HRRZS 4   ;C(4):=0,C(37)-200-(L+N)\r
+         ADD 2,4   ;C(2):=-N,C(37)-200-N\r
+         MOVEM 2,(5)\r
+         HRRM 4,.+1\r
+         POP 5,(5) ;MOVE SYMOBOL TABLE TO TOP OF MEMORY\r
+         JUMPGE 5,.-1\r
+         MOVE 10,[BLT 3,(2)]\r
+         MOVE 11,[JRST 4,]\r
+         HRRI 3,30\r
+         HRLI 3,30(6)          ;C(3):=LOADER OFFSET+LOADER BLOCK ADDRE\r
+         HRRZ 2,6(1)           ;C(2):=LOWEST LOCATION IN SYMBOL TABLE\r
+         HRR 11,(1)            ;C(11):=JRST 4,START ADDRESS\r
+         JRST 10       ;MOVE SYSTEM TO BOTTOM OF MEMORY AND HALT\r
+\r
+         LIT\r
+\r
+MAKEND:          END,\r
diff --git a/src/tendmp.mac b/src/tendmp.mac
new file mode 100644 (file)
index 0000000..7c17154
--- /dev/null
@@ -0,0 +1,470 @@
+TITLE TENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032\r
+       IFNDEF REL,<REL=0>      ;0 PAPER TAPE, 1 RELOCATABLE BINARY\r
+       IFNDEF MAGT,<MAGT=0>    ;0 DTAPE, 1 MTAPE\r
+       IFN MAGT,<\r
+; MAGTAPE UTILITY ROUTINE - COURTSEY DATALINE SYSTEMS J HANCOCK\r
+       >\r
+       IFNDEF MODE,<MODE=0>    ;0 IS TD10, 1 IS 551/136\r
+       IFNDEF CORE,<CORE=4>    ;NUMBER OF 8K MEMORY BLOCKS\r
+\r
+       IFE MODE,<SUBTTL TD10 VERSION>\r
+       IFN MODE,<SUBTTL 551/136 VERSION>\r
+\r
+IFE REL,<\r
+IFE MAGT,<RIM10B>\r
+IFN MAGT,<RIM10>>\r
+       UTC=210\r
+       UTS=214\r
+       DC=200\r
+       DTC=320\r
+       DTS=324\r
+\r
+F=0    ;MUST BE 0. USED BY JRA'S\r
+A=2    ;MISC TEMP. HOLDS 136 CONO INDEX IN UWAIT\r
+B=1    ;TEMP. HOLDS BLOCK # COMPUTATION IN SEARCH\r
+C=3    ;HOLDS BITS FOR DECTAPE CONO DURING I/O\r
+D=4    ;HOLDS POINTERS FOR AOBJN'S THROUGH CORE\r
+E=5    ;HOLDS COUNT OF WORDS IN CURRENT DT BLOCK\r
+P=6    ;PC FOR JSP'S\r
+CKS=7  ;HAD BEEN CHECKSUM IN MACDMP\r
+FILN=10        ;NUMBER OF FILE IN DIRECTORY, 1 TO 26 OCTAL\r
+BLKNO=11       ;BLOCK NUMBER SEARCHED FOR ON TAPE\r
+WRITE=12       ;MULTI-STATE FLAG FOR DEFINING I/O OPERATION\r
+               ;1=D 0=K -1=ELSE\r
+PNTR=13        ;POINTER TO BYTE TABLE IN DIRECTORY\r
+CH=14  ;HOLDS 6BIT CHARACTER OF COMMAND, OR -1\r
+Q=15   ;ANOTHER JSP AC\r
+G=16   ;RARELY USED VERY TEMP\r
+CT=17  ;COUNT OF WORDS TO DUMP\r
+\r
+COMPTR=BEGR+377        ;COMMAND POINTER, IF SUPPLIED\r
+       LOZAD=BEGR-203  ;WHEN CORE IS CLEARED, IT\r
+                       ;IS FROM 40 THRU LOZAD\r
+       LOW=20  ;FIRST LOCATION CONSIDERED FOR DUMPING\r
+       HIGH=BEGR-203   ;LAST LOCATION CONSIDERED FOR DUMPING\r
+                       ;ZEROED AT BEG THESE DAYS\r
+       FOOF=BEGR-202   ;NEEDED FOR ZERO CORE SEARCH, ZEROED AT BEG1\r
+TAB=BEGR-201           ;FILE DIRECTORY\r
+LINK=BEGR-1            ;0-17=LINK, 18-27=FBN, 29-35=WC\r
+IFE REL,<IFE MAGT,<LOC 17400+<<CORE-1>*20000>>\r
+        IFN MAGT,<LOC 17377+<<CORE-1>*20000>\r
+       IOWD    LAST-BEGR+1,BEGR>>\r
+\f;INITIAL ENTRY IS AT BEGR, UNLESS A COMMAND POINTER IS\r
+;SUPPLIED IN COMPTR. IN THAT CASE, ENTRY IS AT BEGR+1\r
+\r
+BEGR:  SETZM COMPTR    ;CLEAR ANY JUNK IN COMMAND POINTER\r
+       CONO 635550     ;I/O RESET, ETC.\r
+BEG:   JSP P,CRR       ;TYPE A CR-LF\r
+       MOVEI D,SPNT-2  ;PREPARE TO REMOVE AOBJN POINTERS\r
+BEG1:  SETZB A,FOOF    ;CLEAR A TO PUT IN CORE, CLEAR\r
+                       ;FOOF FOR  THE NEXT ZERO CORE SEARCH\r
+       EXCH A,2(D)     ;REMOVE HEADER LIST\r
+       AOBJN A,.       ;COUNT THROUGH TO NEXT HEADER\r
+       MOVEI D,-1(A)   ;ACCOUNT FOR OVERSHOOT IN AOBJN\r
+       JUMPN D,BEG1    ;IF WE DIDNT AOBJN A 0, GO FOR NEXT HDR\r
+       MOVE PNTR,[XWD 500,TAB-1]       ;5 BIT BYTES IN DIRECTORY\r
+       SETZB CH,F\r
+CRCH:  SETOI WRITE,215 ;USED FOR CARRET TYPEOUT\r
+TYI:   SETZB C,HIGH    ;HOPEFULLY HIGH IS TEMPORARY\r
+       SETZB B,E       ;NAME INITIALIZING\r
+       TLOA B,400000   ;NULL NAME IS "@. "\r
+SPACE: MOVEI E,C-1     ;EXTENSION INTO C\r
+       HRLI E,20600    ;FAKE OUT END TEST OF BYTE PTR\r
+;STOP TAPE DRIVE\r
+IFN MODE,<CONO UTC,0>\r
+IFE MODE,<CONO DTC,400000>\r
+NEXT:  ILDB A,@BEGR    ;GIVES A 0 UNLESS COMMAND POINTER SUPPLIED\r
+                       ;RH OF NEXT IS USED AS A CONSTANT\r
+BELL:  SETOI FILN,207  ;INITIALIZATION FOR SEARCH\r
+       SETZB BLKNO,CT  ; "\r
+       SETZM LINK\r
+       JUMPN A,RCH     ;JUMP IF COMMAND READ FROM CORE\r
+       CONSO TTY,40    ;TYPEIN FLAG?\r
+       JRST .-1        ;NO,WAIT\r
+       DATAI TTY,A     ;GET TYPED IN CHARACTER\r
+       JSP P,TYO       ;ECHO IT (WITH PARITY)\r
+RCH:   ANDI A,177      ;STRIP OFF PARITY\r
+       CAIN A,177      ;RUBOUT?\r
+       JRST BEGR       ;YES. RESTART TENDMP\r
+       CAIE A,33       ;NEW ALTMODE?\r
+       CAIL A,175      ;OR 175 OR 176 ALTMODES?\r
+       JRST ALTTST     ;YES, SOME ALTMODE.\r
+       CAIL A,140      ;LOWER CASE CHARACTER?\r
+       TRZ A,40        ;YES. CHANGE TO UPPER CASE\r
+       SUBI A,40       ;CONVERT TO SIXBIT\r
+       JUMPL A,CARRET  ;ANY CONTROL CHARACTER\r
+       JUMPE A,SPACE   ;CHAR WAS 40\r
+NEXT1: TLNE E,770000   ;NO MORE THAN SIX CHARS\r
+       IDPB A,E        ;GOES INTO AC1 = B\r
+       JRST NEXT       ;GET ANOTHER CHARACTER\r
+\r
+\f\r
+;HERE ON JUMP BLOCK DURING LOADS, OR NUMBER>7 ALT\r
+JBLK:\r
+;STOP TAPE DRIVE\r
+IFN MODE,<CONO UTC,0>\r
+IFE MODE,<CONO DTC,400000>\r
+       HRRM D,SADR     ;SAVE STARTING ADDRESS\r
+       JUMPN CH,BEG    ;IF NOT LOADGO COMMAND\r
+SADR:  JRST BEG        ;CURRENT S.A.\r
+LOADS:                 ;HERE TO LOAD TAPE TO CORE\r
+       MOVEI D,LOZAD+1 ;FIRST LOC NOT TO ZERO\r
+       SETZM 40        ;A "FEATURE"\r
+       MOVE C,[XWD 40,41]      ;PREPARE TO CLEAR CORE.\r
+       TRNN CH,3       ;SKIP ON M,N   NOT ON L,T,@\r
+       BLT C,-1(D)     ;ZERO CORE\r
+LOAD:  JSP Q,LODUMP    ;START READING FILE. LODUMP PROCESSES\r
+                       ;ONE HEADER AND ITS DATA\r
+       JRST LOAD       ;IF OK, GET NEXT BLOCK.(IF NONE, \r
+                       ;LODUMP RETURNS TO JBLK.)\r
+DELE:  SKIPN E,WRITE   ;SKIP IF NOT IN THE K PHASE OF A D COMMAND.\r
+                       ;OR A K COMMAND\r
+                       ;ALSO, SET E =0, SO SEARCH HAPPENS IN RBLK\r
+CLS1:  AOJA WRITE,CLSTP        ; 0 TO 1. GO DUMP OUT DIRECTORY.\r
+ERR:   SKIPA P,NEXT    ;SET TO RETURN TO BEGR\r
+CRR:   SKIPA A,CRCH    ;LIKE HRROI A,215 AND SKIPA\r
+       SKIPA A,BELL    ;GET A BELL CHARACTER\r
+TYO:   SKIPN COMPTR    ;DONT TYO IF NO TYI, UNLESS ERR\r
+       DATAO TTY,A     ;TYPE OUT\r
+       CONSZ TTY,20    ;WAIT FOR TTY TO FINISH\r
+       JRST .-1        ;NOT YET\r
+       CAIE A,215      ;IF CR TYPED IN,\r
+       JUMPGE A,(P)    ;OR SIGN BIT OF CHAR ON,(SEE CRR)\r
+       MOVEI A,12      ;APPEND A LINEFEED\r
+       JRST TYO        ;GO TYPE LF\r
+\r
+\fALTTST:       TLNN B,4040     ;IF ALPHA CHARACTERS, DONT GET CH\r
+       LDB CH,E        ;LAST CH BEFORE ALT, -40\r
+       JUMPN CH,ALTMD  ;IF CH NOT NULL, GOT PROCESS ALTMODE\r
+CARRET:        MOVSI FILN,-26  ;FILE NAME SPECIFIED. FIRST THING TO\r
+                       ;DO IS LOOK IT UP IN DIRECTORY\r
+LUP:   SKIPN TAB+123(FILN)     ;SEARCH FOR FREE FILE\r
+       SKIPE BLKNO,TAB+151(FILN)       ;CHECK BOTH WORDS\r
+       TDZA BLKNO,BLKNO        ;ENSURE CLEAR BLOCK NUMBER\r
+       HRRM FILN,FREE  ;SAVE NUMBER OF A FREE FILE\r
+       HLLZ G,TAB+151(FILN)    ;ONLY CHECK LEFT OF 2ND WD\r
+       CAMN B,TAB+123(FILN)    ;SEARCH FOR TYPED-IN FILE\r
+       CAME C,G                ;BOTH WORDS\r
+       AOBJN FILN,LUP  ;NOT THIS ONE. KEEP LOOKING\r
+       JUMPL FILN,BEG69        ;IF FILE FOUND, JUMP\r
+       JUMPLE WRITE,ERR        ;IF NOT FOUND, BETTER BE DUMP\r
+FREE:  MOVEI FILN,.    ;DUMP & NOT FOUND, MAKE ENTRY WHERE FREE\r
+                       ;(ADDRESS MODIFIED ABOVE)\r
+       SKIPE TAB+123(FILN)     ;MAKE SURE HOLE AVAILABLE\r
+       JRST ERR        ;NO FREE SLOTS\r
+\r
+BEG69: MOVEI FILN,1(FILN)      ;FILN IS FILE #+1; CLR LH\r
+       JUMPL WRITE,LOADS       ;ALL LOAD INSTRUCTIONS\r
+IFE MAGT,<\r
+       SKIPN WRITE     ;DELETE? (K COMMAND)\r
+       SETZB B,C       ;YES, KILL FILE\r
+       MOVEM B,TAB+122(FILN)   ;CLEAR IF DELE, ENTER IF NEW DUMP\r
+       HLLZM C,TAB+150(FILN)   ;BOTH WORDS\r
+                               ;FALL INTO DUMP ROUTINE\r
+                               ;WHICH IS A NO-OP FOR K\r
+\r
+\f\r
+;DUMP WRITES OUT CORE ONTO TAPE\r
+\r
+;DUMP THRU DUMP2-1 SETS UP POINTERS TO NON-ZERO CORE AREAS. THESE\r
+;AOBJN POINTERS ARE CALLED  "HEADERS", AND PRECEDE THE DATA WHEN\r
+;THE TAPE IS WRITTEN.\r
+;THE FIRST HEADER IS KEPT IN SPNT. SUCCESIVE HEADERS GO INTO THE FIRST\r
+;ZERO WORD FOLLOWING THE BLOCK CORRESPONDING TO THE PREVIOUS HEADER.\r
+;AFTER THE LAST NON-ZERO BLOCK IS (BY DEFINITION) A ZERO, WHICH\r
+;TERMINATES THE HEADER LIST. THIS WORD MAY BE LOCATION FOOF (37176) IF\r
+;CORE WAS FILLED UP TO THE BASE OF TENDMP.\r
+\r
+DUMP:                  ;HERE ON D,K. (BLKN)=0, FILN SET UP\r
+       MOVN A,[XWD HIGH-LOW-1,-LOW+1]  ;COUNTER TO EXAMINE \r
+                                       ;CORE FOR BLOCKS OF 0\r
+       MOVEI CKS,SPNT-1        ;FIRST HEADER GOES INTO SPNT\r
+DMP1:  SKIPN 1(A)      ;FIND SOME NON-ZERO CORE\r
+       AOBJN A,.-1     ;ZERO. KEEP LOOKING.\r
+       MOVEM A,D       ;SAVE ADR\r
+       SKIPN 1(A)      ;FIND SOME ZERO CORE\r
+       SKIPE 2(A)      ;DON'T MAKE NEW BLOCK FOR 1 ZERO\r
+       AOBJN A,.-2     ;NON-ZERO. KEEP LOOKING\r
+       SUB D,A         ;GET -COUNT IN BOTH HALVES OF D\r
+       SUBI CT,-1(D)   ;COUNT N WORDS DATA, 1 HDR\r
+       ADDI D,(A)      ;GET F.A.-1 IN RH OF D\r
+       MOVEM D,1(CKS)  ;SAVE HEADER\r
+       JUMPGE D,.+2    ;ON DATA GROUPS,\r
+       MOVE CKS,A      ;GET THE HEADER\r
+                       ;F.A.+W.C. IS ADR OF NEXT HEADER\r
+                       ;I.E., FIRST 0 AFTER NON-ZERO BLOCK\r
+       JUMPL A,DMP1    ;LOOP IF MORE CORE\r
+       LSH CKS,2       ;SHIFT CORE SIZ FOR DIR\r
+       SKIPLE WRITE    ;IF DUMPING, SET JOBREL\r
+       HRRM CKS,TAB+150(FILN)  ;PUT IN DIR\r
+DMP2:  MOVEI D,SPNT-1  ;SET UP TO FOLLOW THE HEADERS.\r
+       MOVEI CT,1(CT)  ;CLR LH, COUNT JBLK\r
+DMP3:  MOVE D,1(D)     ;GET HEADER\r
+       JUMPGE D,THRU   ;IF NULL HEADER FOUND\r
+       MOVEI Q,DMP3    ;Q:= DMP3 AS A RETURN AFTER AOBJN\r
+       >\r
+\r
+IFN MAGT,<\r
+       JRST    ERR             ;HOW DID WE GET HERE?  DLS***\r
+;DUMP WRITES OUT CORE ONTO MAGNETIC TAPE\r
+;DUMP WRITES OUT A CORE IMAGE ON MAGNETIC TAPE WITHOUT\r
+;ZERO COMPRESSION. THE RECORDS ARE 200(OCTAL) WORDS IN LENGTH\r
+;AND BEGIN WITH WORD ZERO. BEFORE STARTING THE TAPE IS REWOUND.\r
+;IT ASSUMES MTA0, AT LEAST FOR NOW.\r
\r
+       MTC=    340\r
+       MTS=    344\r
+DUMP:  CONO    MTC,1000        ;REWIND\r
+       CONSO   MTS,300000      ;WAIT FOR BOT OR REWINDING\r
+       JRST    .-1\r
+       CONSO   MTS,40          ;TRANSPORT READY?\r
+       JRST    .-1\r
+       SETZ    A,\r
+DUMP1: HRLI    A,-200          ;WORDS PER BLOCK\r
+       CONO    MTC,64100       ;START WRITE OPERATION\r
+DUMP2: CONSO   MTS,1           ;TD10 READY FOR DATA?\r
+       JRST    .-1\r
+       DATAO   MTC,(A)         ;SEND OUT DATA\r
+       AOBJN   A,DUMP2         ;POINT TO NEXT WORD AND LOOP\r
+       CONO    MTS,1           ;STOP THE DRIVE\r
+       CONSO   MTS,100         ;WAIT TILL STOPPED\r
+       JRST    .-1\r
+       CONSZ   MTS,464610      ;ANY ERRORS?\r
+       JRST    ERR             ;YES, GO RING BELL\r
+       AOSE    [-CORE*20000/200+2]     ;ALL CORE DUMPED?\r
+       JRST    DUMP1           ;NO\r
+       CONO    MTC,65100       ;WRITE END OF FILE\r
+       CONSO   MTS,100         ;DONE?\r
+       JRST    .-1\r
+       CONO    MTC,65100\r
+       CONSO   MTS,100\r
+       JRST    .-1\r
+       JRST    BEGR            ;ALL DONE\r
+       >\r
+\r
+\r
+LODUMP:        JSP P,UWAIT\r
+       JFCL D          ;IN/OUTPUT HEADER\r
+       JUMPGE D,JBLK   ;IF JRST BLOCK READ. CANT HAPPEN ON WRITE\r
+DMP5:  JSP P,UWAIT\r
+       JFCL 1(D)       ;IN/OUTPUT DATA WORD\r
+       AOBJN D,DMP5    ;COUNT DOWN THE HEADER\r
+       JRST (Q)        ;END OF HEADER. TO DMP3 OR LOAD+1\r
+;WRITE:  1=D  0=K  -1=ELSE\r
+\r
+THRU:  JSP P,UWAIT     ;WRITE OUT JRST BLOCK\r
+       JFCL SADR       ;FROM LOC SADR\r
+IFE MODE,<     AOJL E,UWAIT1   ;FILL OUT BLOCK, TO GET CKSM OUT>\r
+       TRZA WRITE,-1   ;THEN SET WRITE TO 0, AND GO CLOBBER\r
+                       ;ANY FURTHER BLOCKS WITH THIS FILN\r
+UWAIT: AOJL E,UWAIT1   ;RETURN ADDR = (P)      DATA ADDR = @(P)\r
+                       ;E IS -WD COUNT IN BLOCK OR POSITIVE\r
+                       ;BYTE POINTER FIRST TIME THRU\r
+       HLRZ BLKNO,LINK         ;SET TO FOLLOW LINK\r
+MNLUP0:        JUMPGE WRITE,MNLUP      ;WRITING OR DELETING\r
+       JUMPN BLKNO,RBLK\r
+MNLUP: AOSA BLKNO      ;NEXT BLOCK IN THE DIRECTORY\r
+MNLUP1:        DPB B,PNTR      ;FOR DELETE, 0 FILE NAME AND NUMBER\r
+       ILDB A,PNTR     ;SEARCH FILE DIR\r
+       CAIN A,37\r
+       JRST DELE       ;END OF TAB MARKER, DELE GOES TO\r
+                       ;CLSTP ON A "D" TO DUMP DIRECTORY\r
+       TLO A,-1(WRITE) ;0 ON D, -1 ON K OR K PHASE OF D\r
+       CAIE FILN,(A)   ;IS THIS BLOCK ASSIGNED TO CURRENT FILE?\r
+       JUMPN A,MNLUP   ;OR MAYBE FREE? JUMP IF IN USE BY\r
+                       ;ANOTHER FILE.\r
+       DPB FILN,PNTR   ;SMASH AWAY WRITE BLOCK ON D OR K. BUT\r
+                       ;SEE MNLUP1 ON K.\r
+       JUMPE WRITE,MNLUP1      ;K COMMAND\r
+       SKIPN C,LINK            ;HAS LINK BEEN SET UP?\r
+       DPB BLKNO,[XWD 101200,LINK]     ;NO. PUT BLOCK IN AS FIRST BLK NO\r
+       HRLM BLKNO,LINK ;PUT BLOCK IN AS LINK\r
+       JUMPE C,MNLUP0          ;JUMP IF THIS IS THE FIRST PASS THRU DIRECTORY\r
+       HLRZ BLKNO,C            ;GET LINKED BLOCK CHOSEN BEFORE\r
+       MOVEI C,177             ;PUT IN A WORD COUNT FOR PIP\r
+       IORM C,LINK             ;AND PUT ALL THAT INTO LINK WORD\r
+       SUBI CT,177             ;DECREMENT WORDS LEFT TO GO\r
+\r
+\f\r
+;RBLK SEARCHES FOR THE BLOCK IN BLKNO, ENTERS IT GOING FORWARD,\r
+;AND THEN READS INTO CORE, DUMPS CORE, OR COMPARES CORE AS\r
+;DETERMINED BY CONTENTS OF WRITE.\r
+\r
+RBLK:  HRRO C,TAPENO   ;CURRENT TAPE NO.\r
+                       ;SET LH TO  PREPARE FOR JUMPN IN DELE\r
+IFE MODE,<\r
+       TRO B,-1        ;ENSURE GOING FORWARD WHEN FIRST SEARCH\r
+       CONSO DTC,300000        ;IS A DIRECTION ASSERTED?\r
+       TRO C,210000    ;NO. GO FORWARD\r
+RB1:   TRNN B,400001   ;DECIDE WHETHER TO TURN AROUND\r
+       TRO C,300000    ;TURN AROUND\r
+RBG:   CONO DTC,20200(C)       ;ISSUE THE COMMAND TO TD10.\r
+                               ;200=SEARCH, 300=READ, 700=WRITE.\r
+UWAIT1:        CONSZ DTS,672700        ;ANY ERRORS?\r
+       JRST ERR        ;YES. GO DING AND THEN TYI\r
+       CONSO DTS,1     ;DATA READY?\r
+       JRST .-3        ;NO. GO WAIT SOME MORE\r
+       JUMPL E,INOUT(WRITE)    ;IF IN MIDST OF A DT BLOCK, DISPATCH\r
+       DATAI DTC,B     ;NO. SEARCHING. GET BLOCK NO.\r
+       TRZ C,310000    ;CLOBBER DIRECTION BITS IN CONO\r
+       SUBI B,(BLKNO)  ;COMPARE WITH DESIRED BLOCK\r
+       CONSZ DTC,100000        ;COMPLEMENT DECISION IF GOING REVERSE\r
+       TRC B,-2        ;BIT 35 IS FOR  TURNAROUND SPACE.\r
+>\r
+\f\r
+IFN MODE,<\r
+       SETOB A,B       ;GO FORWARD, SET DC FOR SEARCH\r
+       CONSZ UTS,40    ;IS CHECKSUM BEING WRITTEN?\r
+       JRST .-1        ;WAIT\r
+RB1:   TRNN B,400001   ;DECIDE WHETHER TO TURN AROUND\r
+       TRCA C,10000    ;CHANGE DIRECTION AND DELAY\r
+       CONSO UTC,200000        ;UNIT SELECTED?\r
+       TRO C,2000      ;INVOKE STARTUP DELAY\r
+RBG:   CONO UTC,220200(C)      ;COMMAND TO THE  551.\r
+                               ;200=SEARCH, 300=READ, 700=WRITE.\r
+       CONO DC,4011(A) ;COMMAND TO THE 136.\r
+UWAIT1:        CONSZ UTS,6     ;ANY ERRORS?\r
+       JRST ERR        ;YES. GO DING AND THEN TYI\r
+       CONSO DC,1000   ;DATA READY?\r
+       JRST .-3        ;NO. WAIT SOME MORE\r
+       JUMPL E,INOUT(WRITE)    ;IF IN MIDST OF A DT BLOCK, DISPATCH\r
+       DATAI DC,B      ;NO. SEARCHING. GET BLOCK NUMBER\r
+       TRZ C,2000      ;DONT DELAY ANY MORE\r
+       SUBI B,(BLKNO)  ;COMPARE WITH DESIRED BLOCK\r
+       TRNE C,10000    ;COMPLEMENT IF GOING REVERSE\r
+       TRC B,-2        ;BIT 35 IS FOR TURNAROUND SPACE.\r
+>\r
+       JUMPN B,RB1     ;JUMP IF NOT GOING FORWARD INTO (BLKNO)\r
+       MOVNI E,200     ;WORDS PER BLOCK\r
+       MOVEM P,F       ;SAVE RETURN IN AC0\r
+       TRO C,100       ;READ COMMAND, MAYBE\r
+       JUMPLE WRITE,RB2        ;JUMP IF READ\r
+       TRO C,400       ;CHANGE TO WRITE COMMAND\r
+IFN MODE,<MOVNI A,401  ;SET 136 TO OUTPUT>\r
+       JUMPG CT,.+3\r
+       HRRZS LINK      ;IF LAST BLK, KILL LINK\r
+       DPB E,PNTR              ;AND THE DIR BYTE ? 0\r
+RB2:   CAIE BLKNO,^D100        ;IF NOT DIRECTORY BLOCK\r
+       MOVEI P,.+2     ;SETUP NEW RETURN\r
+       JRST RBG\r
+       AOJ E,LINK      ;IN/OUTPUT LINK\r
+       JRA P,UWAIT1    ;RESTORE CALLER ADR\r
+                       ;AND PROCESS DATA WORDS\r
+\f\r
+IFE MODE,<\r
+       DATAI DTC,@(P)  ;READ COMMANDS. GET WORD TO CORE\r
+INOUT: JRST UWAIT2     ;INOUT-1 TO INOUT +1 ARE DISPATCHED TO.\r
+       DATAO DTC,@(P)  ;OUTPUT TO TAPE\r
+UWAIT2:        AOJN E,UWAIT3   ;WAS THAT THE LAST WORD IN THE DT BLOCK?\r
+       CONO DTS,1      ;YES. GIVE FUNCTION STOP TO TD10\r
+       CONSO DTS,100000        ;AND WAIT FOR CHECKSUM TO BE DONE\r
+       JRST .-1        ;NOT YET. WAIT\r
+UWAIT3:        SOJA E,0(P)     ;DONE. COMPENSATE FOR THE AOJN ABOVE, AND\r
+                       ;RETURN TO CALLER OF UWAIT OR RBLK\r
+>\r
+\r
+IFN MODE,<\r
+       DATAI DC,@(P)   ;READ COMMANDS. GET WORD TO CORE\r
+INOUT: JRST UWAIT2     ;INOUT-1 THRU INOUT+1 ARE DISPATCHED TO.\r
+       DATAO DC,@(P)   ;OUTPUT TO TAPE\r
+UWAIT2:        JRST 0(P)       ;RETURN TO CALLER OF UWAIT OR RBLK.\r
+>\r
+\f\r
+ALTMD: MOVEI A,"$"\r
+       JSP P,TYO       ;ALTMODE IS PRINTED AS "$"\r
+\r
+IFE MAGT,<\r
+       CAIE CH,"K"-40  ;FOR K, WRITE := 0\r
+       CAIN CH,"D"-40  ;FOR D, WRITE :=1\r
+       AOJLE WRITE,.-1 ;COUNT (WRITE)\r
+       >\r
+\r
+IFN MAGT,<\r
+       CAIN CH,"D"-40  ;FOR D, WRITE :=1\r
+       AOJLE WRITE,.-1 ;COUNT (WRITE)\r
+       JUMPG WRITE,DUMP        ;D MEANS GO DUMP ON MAG TAPE\r
+       >\r
+\r
+       CAIN CH,"G"-40  ;GO TO PROGRAM?\r
+       JRST @SADR      ;YES. JUMP OUT\r
+       CAIN CH,"F"-40  ;FILE DIR PRINT?\r
+       JRST FDIR       ;YES. PRINT FILE DIR OF THIS TAPE\r
+       CAIN CH,"Z"-40  ;ZERO DIRECTORY?\r
+       JRST ZDIR       ;DISPATCH\r
+       CAILE CH,27     ;SKIP IF OCTAL NUMBER\r
+       JRST TYI        ;NO. GO PROCESS FILE NAME\r
+       LSH B,3 ;CONVERT SIXBIT TO OCTAL\r
+       LSHC F,3        ;F+1=B\r
+       JUMPN B,.-2     ;MAY BE MORE THAN 1 DIGIT (START ADR)\r
+       CAILE F,7       ;SKIP IF ONE DIGIT\r
+       JRA D,JBLK      ;D:=SADR. DISPATCH TO JBLK WHICH SAVES SADR.\r
+OPNTP:                 ;SHIFT UNIT NUMBER LEFT FOR CONO\r
+IFE MODE,<LSH F,11>\r
+IFN MODE,<LSH F,3>\r
+       HRRM F,TAPENO   ;SAVE IN CORE\r
+CLSTP: MOVEI BLKNO,^D100       ;BLK NO OF FILE DIR\r
+       SETZI PNTR,0    ;DONT CLOBBER DIRECTORY BYTE\r
+       JSP P,RBLK      ;MOVE TO BLOCK 100\r
+       JFCL TAB+200(E) ;READ OR WRITE DIR TAB AS DETERMINED BY WRITE\r
+       AOJL E,UWAIT1   ;COUNT THE 200 WORDS\r
+       JRST BEG        ;GO ASK FOR NEXT COMMAND\r
+\r
+ZDIR:  MOVE A,[XWD FOOF,TAB]   ;FOOF IS CLEAR\r
+       BLT A,TAB+176   ;CLEAR DIRECTORY, EXCEPT LAST WORD FOR ID\r
+       MOVSI A,(36B4+36B9)     ;RESERVE BLOCKS 1 & 2\r
+       MOVEM A,TAB     ;IN DIRECTORY\r
+       MOVSI A,(36B9)\r
+       MOVEM A,TAB+16  ;BLK 100 (DIR) IS RESERVED TOO\r
+       HRLOI A,7       ;AND BLOCKS >1100 ARE EOT\r
+       MOVEM A,TAB+122 ;END OF BYTE TAB\r
+       AOJA WRITE,CLS1 ;SET WRITE TO OUTPUT\r
+                               ;AND DUMP BLK 100.\r
+\fFDIR: MOVNI FILN,26   ;26 FILES (OCTAL)\r
+FD2:   JSP P,CRR       ;CR-LF\r
+FD3:   SKIPN C,TAB+123+26(FILN)        ;FIRST WORD OF NAME. IS IT BLANK?\r
+       AOJA C,FD1      ;YES. SET C=1 AND LOOP\r
+       JSP G,SIXBP     ;PRINT FIRST WORD AND A SPACE\r
+       HLLZ C,TAB+151+26(FILN) ;SECOND WORD OF FILE NAME\r
+       JSP G,SIXBP     ;PRINT AND CLEAR C\r
+FD1:   AOJL FILN,FD2(C)        ;CAN JUMP TO FD2 OR FD3. COUNT FILES.\r
+       JRST BEG        ;ALL FILES PRINTED OR BLANK. RETURN.\r
+\r
+SIXBP: MOVEI B,7       ;SIXBP PRINTS C(C) IN 6BIT\r
+                       ;AND ADDS A TRAILING SPACE\r
+                       ;AND LEAVES (C)=0\r
+\r
+TAPENO:                        ;USE ADR AS TEMP FOR CURRENT UNIT\r
+SIXBP1:        SETZI A,.-.     ;CLEAR A\r
+       LSHC A,6\r
+       ADDI A,40       ;SIXBIT TO ASCII\r
+       JSP P,TYO       ;TYPE OUT CHARACTER\r
+       SOJG B,SIXBP1   ;LOOP IF MORE CHARACTERS\r
+       JRST 0(G)       ;RETURN\r
+\r
+SPNT:  0               ;POINTER TO HEADERS IN CORE.\r
+\r
+       LIT\r
+\r
+\r
+IFN MAGT,<\r
+SLOP:  MOVE    .+3\r
+       MOVEM   COMPTR\r
+       JRST    BEGR+1\r
+       XWD     440700,.+1\r
+       BYTE    (7) "0",33,177\r
+LAST:  JRST    SLOP\r
+       >\r
+IFE MAGT,<\r
+       SLOP=COMPTR-17-.        ;THIS MANY WORDS BEFORE RESERVED AREA\r
+                               ;FOR COMMAND STRINGS.\r
+;!!!!! NOTE: ABOVE PARAMETER MUST COME OUT POSITIVE IN\r
+;      ORDER TO MEET THE DOCUMENTATION OF RESERVED COMMAND STRING AREA.\r
+;\r
+;      THIS MEANS ANY CODE ADDED MUST BE COMPENSATED FOR BY\r
+;      A CORRESPONDING TIGHTENING SOMEWHERE. GOOD LUCK.\r
+;      TENDMP IS VERY TIGHT ALREADY.\r
+       >\r
+\r
+       END BEGR\r
+\f\r
+\r