LPTSPL Version 3(105) Running on LPT000 **START** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****     **START** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****     **START** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****     **START** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****     **START** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****     **START** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****     **START** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****     **START** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****     **START** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****     **START** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****     **START** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****     **START** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****     **START** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****     **START** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****     **START** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****     **START** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****     **START** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****     **START** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****     **START** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****     **START** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****     **START** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****     **START** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****     **START** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****     **START** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****     **START** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****     **START** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****     **START** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****     **START** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****     **START** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****     **START** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:31 Address: **** UNKNOWN ****     CCCCCCCCCCCC DDDDDDDDDDDD RRRRRRRRRRRR SSSSSSSSSSSS EEEEEEEEEEEEEEE RRRRRRRRRRRR CCCCCCCCCCCC DDDDDDDDDDDD RRRRRRRRRRRR SSSSSSSSSSSS EEEEEEEEEEEEEEE RRRRRRRRRRRR CCCCCCCCCCCC DDDDDDDDDDDD RRRRRRRRRRRR SSSSSSSSSSSS EEEEEEEEEEEEEEE RRRRRRRRRRRR CCC DDD DDD RRR RRR SSS EEE RRR RRR CCC DDD DDD RRR RRR SSS EEE RRR RRR CCC DDD DDD RRR RRR SSS EEE RRR RRR CCC DDD DDD RRR RRR SSS EEE RRR RRR CCC DDD DDD RRR RRR SSS EEE RRR RRR CCC DDD DDD RRR RRR SSS EEE RRR RRR CCC DDD DDD RRRRRRRRRRRR SSSSSSSSS EEEEEEEEEEEE RRRRRRRRRRRR CCC DDD DDD RRRRRRRRRRRR SSSSSSSSS EEEEEEEEEEEE RRRRRRRRRRRR CCC DDD DDD RRRRRRRRRRRR SSSSSSSSS EEEEEEEEEEEE RRRRRRRRRRRR CCC DDD DDD RRR RRR SSS EEE RRR RRR CCC DDD DDD RRR RRR SSS EEE RRR RRR CCC DDD DDD RRR RRR SSS EEE RRR RRR CCC DDD DDD RRR RRR SSS EEE RRR RRR CCC DDD DDD RRR RRR SSS EEE RRR RRR CCC DDD DDD RRR RRR SSS EEE RRR RRR CCCCCCCCCCCC DDDDDDDDDDDD RRR RRR SSSSSSSSSSSS EEEEEEEEEEEEEEE RRR RRR CCCCCCCCCCCC DDDDDDDDDDDD RRR RRR SSSSSSSSSSSS EEEEEEEEEEEEEEE RRR RRR CCCCCCCCCCCC DDDDDDDDDDDD RRR RRR SSSSSSSSSSSS EEEEEEEEEEEEEEE RRR RRR LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT Request created: 24-April-1978 05:53:58 File: DSKB0 :CDRSER.LST [8,296] Created: 20-April-1967 05:51:00 Printed: 24-April-1978 05:53:31 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:1992 File will be deleted after printing CDRSER - CARD READER SERVICE MACRO 10 05:51 24-APR-78 PAGE 1 S MAC 24-APR-78 21:40 8-2-65 XLIST LIST TITLE CDRSER - CARD READER SERVICE SUBTTL 8-2-65 EXTERNAL STODAT, ADVBFF, IOSET, SETIOD, SETBYT, STOSQD EXTERNAL CDRSAV, CDRCHN, CDRRET,ILLOUT,PIOMOD INTERNAL CDRINT ;DEVICE DATA BLOCK LINKAGE EXTERNAL CDRDB,CDRDAT,CRDIS ENTRY CDRDSP CDRSER - CARD READER SERVICE MACRO 10 05:51 24-APR-78 PAGE 2 CDRSER MAC 24-APR-78 21:33 8-2-65 ,CDR PARAMETER ASSIGNMENTS , CDR CONTROL REGISTER 000010 CRDONE=10; DONE FLAG 000020 CRBUSY=20; BUSY FLAG 000040 CRBIN=40; BINARY 000100 CRALL=100; ALL FLAG 000200 CRMISS=200; DATA MISSED 000400 CREOC=400; END OF CARD 001000 CREOFF=1000; END OF FILE 002000 CRERR=2000; ERROR 000002 CHCHN=2 , ACCUMULATORS 000010 CRDAT1=TEM 000011 CRAC=JDAT , SPECIAL IO STATUS WORD ASSIGNMENTS 004000 CRMFST=40000; FIRST CARD 020000 CRMBIN=200000; BINARY 010000 CRMIMG=100000; IMAGE , SPECIAL CHARACTERS 000032 S2EOF=32; END OF FILE REPEAT 0,< ,CDR DATA BLOCK CDRDAT: SIXBIT /CRD 34 0 EXP CDRDSP XWD 1400+PROG,10403 0 0 XWD PROG,0 0 0 CRDIS: JRST . > ,CDR SERVICE DISPATCH TABLE 000000' 715200 000000 CDRDSP: CONO CR,0 ;RELEASE 000001' 263140 000000 POPJ PDP,; CLOSE 000002' 254000 000000* JRST ILLOUT ;OUTPUT 000003' 254000 000004' JRST CRINP; INPUT --- Page break - 2 blank 000004' 621000 000002 CRINP: TLZ IOS,IOBEG; VIRGIN DEVICE? IOBUF:=0 000005' 661000 004004 CDRIN1: TLO IOS,IOFST+CRMFST; IOFST:=CRMFST:=1 000006' 135040 000000* LDB TAC,PIOMOD CDRSER - CARD READER SERVICE MACRO 10 05:51 24-APR-78 PAGE 2-1 CDRSER MAC 24-APR-78 21:33 8-2-65 000007' 306040 000014 CAIN TAC,B; MODE=BINARY? 000010' 661000 020000 TLO IOS,CRMBIN; YES. CRMBIN:=1 000011' 306040 000010 CAIN TAC,I; MODE=IMAGE? 000012' 661000 100000 TLO IOS,CRMIMG; YES. CRMIMG:=1 000013' 660000 010000 TRO IOS,IOACT; IOACT:=1 000014' 202006 000002 MOVEM IOS,DEVIOS(DEVDAT) 000015' 260140 000000* PUSHJ PDP,SETBYT; TAC0-5:=TAC12-13:=0; TAC6-11:=BYTE SIZE 000016' 202046 000010 MOVEM TAC,DEVPTR(DEVDAT) 000017' 201040 000000* MOVEI TAC, CDRCHN; ASSIGN PI CHANNEL 000020' 715201 000160 CONO CR,CRBIN+CRALL+CRBUSY(TAC); SELECT BINARY, ALL 000021' 263140 000000 POPJ PDP,; RETURN CDRSER - CARD READER SERVICE MACRO 10 05:51 24-APR-78 PAGE 3 CDRSER MAC 24-APR-78 21:33 8-2-65 --- two blank 000022' 715340 000010 CDRINT: CONSO CR,CRDONE; DONE FLAG? 000023' 254000 000022' JRST CDRINT 000024' 265000 000000* JSR CDRSAV; SAVE ACCUMULATORS AND ESTABLI 000025' 201300 000000* MOVEI DEVDAT,CDRDAT 000026' 200006 000002 MOVE IOS,DEVIOS(DEVDAT) 000027' 715300 002200 CONSZ CR, CRMISS+CRERR; DATA MISSED OR ERROR? 000030' 660000 200000 TRO IOS,IODERR; IODERR:=1 000031' 715040 000010 DATAI CR, CRDAT1; INPUT INFORMATION 000032' 260140 000000* PUSHJ PDP,IOSET; PROG:=C(JBTADR18-35), ITEM:= C(DEVPTR) 000033' 627000 004000 TLZN IOS,CRMFST; FIRST CARD? CRMFST:=0 000034' 256000 000000* XCT CRDIS ;NOT FIRST, GO TO SUBROUTINE 000035' 640400 007400 CRFIRS: TRC CRDAT1, 7400; FIRST COL OF FIRST CARD 000036' 646400 007400 TRCN CRDAT1,7400; Y, X, 0, OR 1 PUNCH? 000037' 254000 000047' JRST CREOFC; NO, END OF FILE CARD 000040' 715300 001000 CONSZ CR, CREOFF; END OF FILE? 000041' 254000 000051' JRST CREOF; YES 000042' 603000 200000 TLNE IOS,CRMBIN; CRMBIN=1? 000043' 254000 000125' JRST CRFSTB; YES 000044' 603000 100000 TLNE IOS,CRMIMG; CRMIMG=1? 000045' 254000 000144' JRST CRFSTI; YES 000046' 254000 000067' JRST CRFSTL+1 000047' 201040 000017* CREOFC: MOVEI TAC,CDRCHN ;WAIT FOR EOC 000050' 715201 000020 CONO CR,CRBUSY(TAC) 000051' 661000 000040 CREOF: TLO IOS, IOEND; IUEND:=1 000052' 201240 000032 MOVEI DAT,S2EOF 000053' 260140 000000* PUSHJ PDP,STODAT; STORE END OF FILE CHARACTER 000054' 330000 000000 SKIP 000055' 254000 000217' JRST CRLST2; BLOCK FULL OR BLOCK COMPLETE 000056' 201040 000056' MOVEI TAC,.; DATA STATED PROPERLY 000057' 542040 000034* HRRM TAC, CRDIS; SET DISPATCH TO RETURN HERE. 000060' 715340 000400 CONSO CR, CREOC; END OF CARD? 000061' 254000 000226' JRST CREXIT; NO. 000062' 260140 000000* PUSHJ PDP,ADVBFF; ADVANCE BUFFER 000063' 330000 000000 SKIP 000064 661000 000002 TLO IOS,IOBEG; IOBEG:=1 000065' 254000 000231' JRST CROFF 000066' 260140 000164' CRFSTL: PUSHJ PDP, CRITMS; STORE ITEM 000067' 201040 000074' MOVEI TAC,CRCV; TAC:=CRCV. HOLLERITH READ 000070' 715240 000002 CRREST: CONI CR, TAC1 000071' 620100 000160 TRZ TAC1, CRBIN+CRALL+CRBUSY; SELECT HOLERITH, ALL:=0, BUS 000072' 715202 000000 CONO CR, (TAC1); RESET CARD READER 000073' 254000 000112' JRST CREXT1; CHANGE DISPATCH AND GO blank line CDRSER - CARD READER SERVICE MACRO 10 05:51 24-APR-78 PAGE 4 CDRSER MAC 24-APR-78 21:33 8-2-65 2 blank lines , HOLLERITH READ MODE 000074' 200440 000241' CRCV: MOVE CRAC, [POINT 6,CRDAT1,23]; COLUMNS 79 AND 80 000075' 715340 000400 CONSO CR,CREOC; END OF CARD? 000076' 200440 000142' MOVE CRAC,CRC1; NO. LOOK AT ALL CHARACTERS 000077' 134040 000011 LDBI TAC,CRAC ;CONVERT HOLLERITH 000100' 231040 000005 IDIVI TAC, 5; TO ASCII 000101' 135242 000206' LDB DAT, CRCV1(TAC1) 000102' 260140 000053* PUSHJ PDP,STODAT; STORE IN BU FER 000103' 254000 000052' JRST CREOF+1 000104' 254000 000115' JRST CRINS 000105' 603440 760000 TLNE CRAC, 760000; WORD COMPLETE? 000106' 254000 000077' JRST CRCV+3; NO 000107' 715300 000400 CONSZ CR,CREOC; END OF CARD? 000110' 254000 000115' JRST CRINS; YES 000111' 201040 000074' MOVEI TAC, CRCV; NEXT DISPATCH TO CRCV. HOLLERITH READ 000112' 542040 000057* CREXT1: HRRM TAC, CRDIS; UPDATE DISPTACHER 000113' 254000 000226' JRST CREXIT 000114' 000000 006424 CRCON: OCT 6424 000115' 200440 000143' CRINS: MOVE CRAC,CRC2; BLOCK FULL OR BLOCK COMPLETE INSERT CR 000116' 134240 000011 LDBI DAT, CRAC 000117' 260140 000102* PUSHJ PDP,STODAT; STORE CHAR 000120' 330000 000000 SKIP; EXIT1. 000121' 254000 000217' JRST CRLST2; EXIT2. BLOCK FULL OR BLOCK COMPLETE 000122' 603440 760000 TLNE CRAC,760000; THATS ALL? 000123' 254000 000116' JRST CRINS+1; NO 000124' 254000 000213' JRST CRLAST; END OF CARD CDRSER - CARD READER SERVICE MACRO 10 05:51 24-APR-78 PAGE 5 CDRSER MAC 24-APR-78 21:33 8-2-65 , BINARY READ MODE 000125' 135040 000242' CRFSTB: LDB TAC,[POINT 3,CRDAT1,35]; 7-9 PUNCH? 000126' 302040 000005 CAIE TAC, 5 000127' 660000 400000 TRO IOS, IOIMPM; YES. IOIMPM:=1 000130' 715240 000001 CONI CR, TAC 000131' 620040 000120 TRZ TAC, CRBUSY+CRALL; BUSY FLAG:=0, ALL FLAG;=0 000132' 715201 000000 CONO CR,(TAC); RESET TO RE-READ COL 3 000133' 201040 000135' MOVEI TAC, CRCOL2; DISPATCH TO CRCOL2 ON NEXT INTERRUPT 000134' 254000 000112' JRST CREXT1 000135' 201040 000137' CRCOL2: MOVEI TAC, CRCOL4; DISPATCH TO CRCOL4 ON NEXT INTERRUPT 000136' 542040 000112* HRRM TAC,CRDIS 000137' 200240 000010 CRCOL4: MOVE DAT, CRDAT1 000140' 260140 000165' PUSHJ PDP, CRITMS+1; STORE THE WORD FROM DAT 000141' 254000 000226' JRST CREXIT 000142' 440600 000010 CRC1: POINT 6,CRDAT1 000143' 170700 000114' CRC2: POINT 7,CRCON,20 CDRSER - CARD READER SERVICE MACRO 10 05:51 24-APR-78 PAGE 6 CDRSER MAC 24-APR-78 21:33 8-2-65 ,IMAGE READ MODE 000144' 201040 000147' CRFSTI: MOVEI TAC, .+3; DISPATCH TO CRFSTI + 3 ON NEXT INTERRUP 000145' 137400 000243' DPB CRDAT1,[POINT 24,CRTEM,23]; SAVE COLUMN 1 AS MI 000146' 254000 000112' JRST CREXT1 000147' 260140 000164' PUSHJ PDP, CRITMS; SET ITEM AND CHECK SIZE 000150' 434400 000240' IOR CRDAT1, CRTEM; CRTEM12-35:=COL 1 AND 2 000151' 201040 000153' MOVEI TAC, .+2; DISPATCH TO CRFSTI + 7 ON NEXT INTERRUP 000152' 254000 000157' JRST CRIM1+1 000153' 715240 000002 CONI CR, TAC1 000154' 620100 000120 TRZ TAC1, CRBUSY+CRALL; BUSY FLAG:=ALL FLAG:=0 000155' 715202 000000 CONO CR, (TAC1); RESET READER ON COL 3 000156' 201040 000156' CRIM1: MOVEI TAC,.; DISPATCH TO CRIM1 ON NEXT INTERRUPT 000157' 715300 000400 CONSZ CR, CREOC; END OF CARD? 000160' 254000 000213' JRST CRLAST; YES 000161' 202026 000010 MOVEM @DEVPTR(DEVDAT) 000162' 350006 000010 AOS DEVPTR(DEVDAT); INCREMENT ITEM POINTER 000163' 254000 000112' JRST CREXT1 000164' 661000 000004 CRITMS: TLO IOS, IOFST; IOFST:=1 000165' 260140 000117* PUSHJ PDP, STODAT; STORE WORD 000166' 254000 000052' JRST CREOF+1 000167' 254000 000052' JRST CREOF+1 000170' 263140 000000 POPJ PDP,; RETURN 000171' 265426 231550 CRCNV: ASCII ._123456789. 000172' 325546 734162 000173' 301730 057116 ASCII .0=@^'\ /ST. 000174' 561005 751650 000175' 526552 754262 ASCII .UVWXYZ;,(". 000176' 551665 424104 000177' 215125 545226 ASCII .#%-JKLMNOP. 000200' 462331 647640 000201' 506447 222124 ASCII .QR:$*[>&+A. 000202' 555744 625602 000203' 412070 442614 ASCII :BCDEFGHI?.: 000204' 436211 137534 000205' 246727 420576 ASCII :)] 000071' 000000 000001 EXP 1 000072' 000000 000001 EXP 1 000073' 000000 000001 EXP 1 000074' 000000 000001 EXP 1 ;QUANTUM TIMES FOR EACH QUEUE 000075' 000000 000004 QUANTS: EXP 4 ;MAGTAPE QUEUE 000076' 000000 000004 EXP 4 ;DATA CONTROL QUEUE 000077' 000000 000004 EXP 4 ;DECTAPE QUEUE 000100' 000000 000006 EXP 6 ;IOWAIT SATISFIED QUEUE 000101' 000000 000017 EXP QUANT1 ;STRAIGHT COMPUTATION QUEUE XP QUANT1,^D15; STRAIGHT COMPUTATION QUEUE END, NO ERRORS DETECTED PROGRAM BREAK IS 000102 9K CORE USED CLKCSS - SCHEDULING ALOGRITHM MACRO 10 05:51 24-APR-78 PAGE 4 CLKCSS MAC 24-APR-78 03:01 SYMBOL TABLE A 000000 INT AC1 000015 INT AC2 000016 INT AC3 000017 INT AL 000001 INT ASSCON 400000 INT ASSPRG 200000 INT AVALTB 000060' B 000014 INT BUFPNT 000012 INT BUFWRD 000013 INT C 000006 CLOSB 002000 INT CLSIN 000002 INT CLSOUT 000001 INT D 000017 INT DAT 000005 INT DCAVAL 000061' EXT DCL 000001 INT DCW 020000 INT DDI 000007 INT DDO 000006 INT DDTMEM 000037 INT DDTSYM 000036 INT DEN 000004 INT DEVADR 000007 INT DEVBUF 000006 INT DEVCHR 000001 INT DEVCTR 000011 INT DEVDAT 000006 INT DEVIAD 000007 INT DEVIOS 000002 INT DEVLOG 000005 INT DEVMOD 000004 INT DEVNAM 000000 INT DEVOAD 000010 INT DEVPTR 000010 INT DEVSER 000003 INT DGF 000012 INT DIN 000003 INT DLK 000005 INT DOU 000002 INT DR 000016 INT DRL 000000 INT DSI 000011 INT DSO 000010 INT DTAVAL 000062' EXT DTW 040000 INT DVAVAL 000040 INT DVCDR 100000 INT DVDIR 000004 INT DVDIRI 400000 INT CLKCSS - SCHEDULING ALOGRITHM MACRO 10 05:51 24-APR-78 PAGE 4-1 CLKCSS MAC 24-APR-78 03:01 SYMBOL TABLE DVIN 000002 INT DVLPT 040000 INT DVMTA 000020 INT ---- DVOUT 000001 INT DVTTY 000010 INT ENTRB 020000 INT I 000010 INT IB 000013 INT IBUFB 200000 INT INITB 400000 INT INPB 010000 INT IO 000020 INT IOACT 010000 INT IOAVAL 000064' IOBEG 000002 INT IOBKTL 040000 INT IOCOMP 000045' EXT IOCON 000040 INT IODEND 020000 INT IODERR 200000 INT IODISC 400000 INT IODONE 400000 INT IODTER 100000 INT IOEND 000040 INT IOFST 000004 INT IOIMPM 400000 INT IONRCK 000100 INT IORDEL 000100 INT IORET 000020 INT IOS 000000 INT IOSTRT 000010 INT IOUSE 400000 INT IOW 000001 INT IOWC 000020 INT IOWS 400000 INT ITEM 000004 INT JBFADR 000000 INT JBFCTR 000002 INT JBFPTR 000001 INT JBTSTS 000054' EXT JBUF 000005 INT JDAT 000011 INT JERR 002000 INT JIOW 100000 INT JNA 004000 INT JOB 000055' EXT JOBN 000031' EXT JOBP 000071' LOOKB 040000 INT MTAVAL 000060' EXT MTW 010000 INT NUM 000004 NXT0 000003' CLKCSS - SCHEDULING ALOGRITHM MACRO 10 05:51 24-APR-78 PAGE 4-2 CLKCSS MAC 24-APR-78 03:01 SYMBOL TABLE NXT1 000004' NXT10 000053' NXT2 000012' NXT3 000023' NXT4 000026' NXT5 000033' NXT5A 000036' NXT6 000030' NXT7 000041' NXT8 000054' NXT9 000050' NXTJOB 000000' INT OBUFB 100000 INT OUTPB 004000 INT P 000005 PDP 000003 INT PI 000004 SPD PICHN 000100 INT PROG 000007 INT QUANT1 000017 INT QUANTS 000075' INT RUN 200000 INT RUNABL 204000 INT SCNOFF 000016' EXT SCNON 000046' EXT T 000002 TAC 000001 INT TAC1 000002 INT TEM 000010 INT TTYATC 020000 INT TTYUSE 010000 INT USRMOD 010000 INT UUO 000014 INT WAITB 000065' CCCCCCCCCCCC LLL OOOOOOOOO CCCCCCCCCCCC KKK KKK CCCCCCCCCCCC LLL OOOOOOOOO CCCCCCCCCCCC KKK KKK CCCCCCCCCCCC LLL OOOOOOOOO CCCCCCCCCCCC KKK KKK CCC LLL OOO OOO CCC KKK KKK CCC LLL OOO OOO CCC KKK KKK CCC LLL OOO OOO CCC KKK KKK CCC LLL OOO OOO CCC KKK KKK CCC LLL OOO OOO CCC KKK KKK CCC LLL OOO OOO CCC KKK KKK CCC LLL OOO OOO CCC KKKKKKKKK CCC LLL OOO OOO CCC KKKKKKKKK CCC LLL OOO OOO CCC KKKKKKKKK CCC LLL OOO OOO CCC KKK KKK CCC LLL OOO OOO CCC KKK KKK CCC LLL OOO OOO CCC KKK KKK CCC LLL OOO OOO CCC KKK KKK CCC LLL OOO OOO CCC KKK KKK CCC LLL OOO OOO CCC KKK KKK CCCCCCCCCCCC LLLLLLLLLLLLLLL OOOOOOOOO CCCCCCCCCCCC KKK KKK CCCCCCCCCCCC LLLLLLLLLLLLLLL OOOOOOOOO CCCCCCCCCCCC KKK KKK CCCCCCCCCCCC LLLLLLLLLLLLLLL OOOOOOOOO CCCCCCCCCCCC KKK KKK LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT Request created: 24-April-1978 05:53:58 File: DSKB0 :CLOCK .LST [8,296] Created: 20-April-1967 05:51:00 Printed: 24-April-1978 05:53:32 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:1974 File will be deleted after printing CLOCK - CLOCK SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 1 S MAC 24-APR-78 21:40 T. HASTINGS 6-2-65 XLIST LIST TITLE CLOCK - CLOCK SERVICE ROUTINE SUBTTL T. HASTINGS 6-2-65 INTERNAL CLOCK, CLKINI,NULJOB,APRINT,RSCHED EXTERNAL APRSAV, APRRET, APRCHN,APRILM,APRCHL EXTERNAL COMCNT,COMMAND,JOB,JOBADR,APRSAC,JOBDAC,JOBPDP,JOBREL EXTERNAL USRPDP,JOBPFU,JOBPC,JBTADR,JOBADR,JOBDAT,USRPFU,CLDS,NXTJOB EXTERNAL STOPU,SCHEDF,TIME,JOBLEV,JOBUXT,UUO0,JOBDHI,CLKOFF,JBTSTS ;CLOCK WILL TIME AN INTERVAL AND PUSHJ PDP, TO AN ADDRESS ;AFTER THE INTERVAL HAS EXPIRED ;TO MAKE A REQUEST: ; CONO PI,PIOFF ; DPBI AC,CLOCK ; CONO PI,PION ;AC MUST CONTAIN- XWD ADDRESS,NUMBER OF CLOCK COUNTS+DATA*1000 ;THE HIGH ORDER SIX BITS OF THE RIGHT HALF(DATA) ARE PLACED IN AC ;TAC RIGHT JUSTIFIED BEFORE THE PUSHJ PDP, ADDRES IS DONE ;SYSTEM FLAGS: ; STOPU IS SET NON-ZERO AT EITHER INTERRUPT SERVICE LEVEL OR ; UUO LEVEL AND A CLOCK INTERRUPT IS REQUESTED WHEN CURRENT ; JOB MUST BE STOPPED AND ANOTHER ONE RUN. ; SCHEDF IS SET NON-ZERO BY CLOCK ROUTINE WHEN IF IS IN THE PROCESS ; OF RESCHEDULING. IT IS CLEARED AFTER JOB HAS BEEN SET TO ; CURRENTLY RUNNING JOB. ; TIME IS THE TIME SYSTEM HAS RUN IN 60THS OF A SECOND 000200 PION=200 000400 PIOFF=400 000005 STOR=DAT 000001 T=TAC 000011 JA=JDAT 000000' 004400 000000' CLOCK: POINT 36,CIPWT-1,35 ;BYTE POINTER TO CLOCK QUEUE 000001' CIPWT: BLOCK 12 ;THE QUEUE 000013' 201000 000000' CLKINI: MOVEI CIPWT-1 ;SET UP BYTE POINTER 000014' 542000 000000' HRRM CLOCK 000015' 263140 000000 POPJ PDP, CLOCK - CLOCK SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 2 CLOCK MAC 24-APR-78 03:29 T. HASTINGS 6-2-65 000016' 254000 000020' APRINT: JRST .+2 ;HERE ON APR INTERRUPT 000017' 254000 000017' JRST . ;TO OTHER DEVICES ON THIS CHANNEL 000020' 700340 230000 CONSO APR,230000 ;IS IT ANY OF THE OTHERS 000021' 254000 000024' JRST CIP0 ;NO. GO CHECK CLOCK 000022' 264000 000000* JSR APRSAV ;YES, SAVE ACS 000023' 254000 000000* JRST APRILM ;AND GO PROCESS ILLEGAL MEMOR 000024' 700340 002000 CIP0: CONSO APR, 2000 ;IS CLOCK ENABLED 000025' 254000 000030' JRST CIP1 ;NO. GO TO OTHER DEVICES 000026' 700300 001000 CONSZ APR, 1000 ;YES, DID CLOCK CAUSE INTERRUPT 000027' 254000 000034' JRST CIP2 ;YES 000030' 336000 000000* CIP1: SKIPN STOPU ;NO, IS THIS A REQUEST INTERRUPT 000031' 254000 000017' JRST APRINT+1 ;NO. GO TO OTHER DEVICES 000032' 264000 000022* CIP1B: JSR APRSAV ;YES, SAVE ACS 000033' 254000 000064' JRST CIP6 ;RESCHEDULE BUT DONT TIME CLOCK - CLOCK SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 3 CLOCK MAC 24-APR-78 03:29 T. HASTINGS 6-2-65 000034' 264000 000032* CIP2: JSR APRSAV ;SAVE ACS 000035' 350000 000000* AOS TIME ;INCREMENT TIME 000036' 200040 000000* MOVE TAC,JOB ;DECREMENT CURRENT JOBS RUNNING TIME 000037' 370001 000000* SOS JBTSTS(TAC) 000040' 700200 000000* CONO APR,CLKOFF ;TURN CLOCK FLAG OFF ;PROCESS TIMING REQUESTS STORED IN QUEUE 000041' 550240 000000' HRRZ STOR, CLOCK ;GET END OF LIST 000042' 306240 000000' CIP4: CAIN STOR, CIPWT-1 ;END YET 000043' 254000 000062' JRST CIP5 ;YES 000044' 370105 000000 SOS TAC1, (STOR) ;DECREMENT TIMING REQUEST 000045' 602100 007777 TRNE TAC1, 7777 ;TIME EXPIRED YET 000046' 364240 000042' SOJA STOR, CIP4 ;NO, CONTINUE SCAN 000047' 700600 000400 CONO PI, PIOFF ;YES. MOVE LAST ITEM IN LIST TO THS 000050' 200060 000000' MOVE TAC, @CLOCK 000051' 370000 000000' SOS CLOCK 000052' 700600 000200 CONO PI, PION 000053' 202045 000000 MOVEM TAC, (STOR) 000054' 135040 000143' LDB TAC, [POINT 6, TAC1, 23] ;GET 6 BIT DATA ITEM 000055' 207000 000002 MOVSS TAC1 ;SETUP DISPATCH ADDRESS 000056' 261140 000005 PUSH PDP, STOR ;SAVE ONLY VALUABLE AC 000057' 260142 000000 PUSHJ PDP, (TAC1) ;AND DISPATCH TO TIMING REQUEST ROUTINE 000060' 262140 000005 POP PDP, STOR 000061' 364240 000042' SOJA STOR, CIP4 ;GO BACK FOR MORE REQUESTS 000062' 332000 000000* CIP5: SKIPE COMCNT ;ANY COMMANDS TO PROCESS 000063' 260140 000000* PUSHJ PDP, COMMAND ;YES 000064' RSCHED: ;RESCHEDULE, HERE AFTER APRILM 000064' 402000 000030* CIP6: SETZM STOPU ;CLEAR INTERRUPT REQUEST FLAG 000065' 476000 000000* SETOM SCHEDF ;FLAG THAT SCHEDULING IS IN PROGRESS 000066' 260140 000000* PUSHJ PDP, NXTJOB ;RETURN HIGHEST PRIORITY JOB IN AC ITEM 000067' 316200 000036* CAMN ITEM, JOB ;IS IT SAME AS CURRENT JOB 000070' 254000 000136' JRST CIP8 ;YES, EXIT CLOCK - CLOCK SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 4 CLOCK MAC 24-APR-78 03:29 T. HASTINGS 6-2-65 ;DIFFERENT JOB, SAVE OLD JOB 000071' 336000 000067* SKIPN JOB ;IS OLD JOB THE NULL JOB 000072' 254000 000110' JRST CIP7 ;YES, DONT BOTHER TO SAVE ANYTHING 000073' 200440 000000* MOVE JA, JOBADR ;NO. MOVE CHANNEL ACS TO USER JOB AREA 000074' 201051 000000* MOVEI T,JOBDAC(JA) 000075' 505040 000000* HRLI T, APRSAC 000076' 251051 000000* BLT T, JOBDHI(JA) 000077' 201051 000000* MOVEI T, JOBPDP(JA) ;MOVE JOB STATE VARIABLES TO JOB DATA A 000100' 505040 000000* HRLI T, USRPDP 000101' 251051 000000* BLT T, JOBPFU(JA) 000102' 200040 000040 MOVE T, 40 ;SAVE LOC. 40 000103' 202051 000000* MOVEM T, JOBLEV(JA) 000104' 200040 000000* MOVE T, UUO0 ;AND UUO PC 000105' 202051 000000* MOVEM T, JOBUXT(JA) 000106' 200040 000000* MOVE T, APRCHL ;SET C(CHANNEL INTERRUPT LOC.) AS PC 000107' 202051 000000* MOVEM T, JOBPC(JA) CLOCK - CLOCK SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 5 CLOCK MAC 24-APR-78 03:29 T. HASTINGS 6-2-65 ;RESTOR NEW JOB 000110' 202200 000071* CIP7: MOVEM ITEM, JOB ;STORE NEW CURRENT JOB NUMBER 000111' 403000 000065* SETZB 0,SCHEDF ;INDICATE SCHEDULING FINISHED 000112' 322200 000140' JUMPE ITEM, NUL0 ;IS NEW JOB NULL JOB 000113' 200444 000000* MOVE JA, JBTADR(ITEM) ;SETUP STATE VARIABLES FOR CU 000114' 552440 000073* HRRZM JA, JOBADR ;IN SYSTEM AREA 000115' 552440 000000* HRRZM JA, JOBDAT 000116' 556451 000000* HLRZM JA, JOBREL(JA) ;SET RELOCATION AND PROTECTION 000117' 700140 000011 DATAO JA 000120' 201040 000100* MOVEI T,USRPDP 000121' 505051 000077* HRLI T, JOBPDP(JA) ;MOVE JOB STATE VARIABLES TO SYSTEM ARE 000122' 251040 000000* BLT T, USRPFU 000123' 200051 000103* MOVE T, JOBLEV(JA) ;RESTORE LOC. 40 000124' 202040 000040 MOVEM T, 40 000125' 200051 000105* MOVE T, JOBUXT(JA) ;AND UUO PC 000126' 202040 000104* MOVEM T, UUO0 000127' 200051 000107* MOVE T, JOBPC(JA) ;SET C(CHANNEL LOC.) TO C(JOBPC) 000130' 202040 000106* MOVEM T, APRCHL 000131' 205751 000074* MOVSI 17, JOBDAC(JA) ;RESTORE USER ACS 000132' 251740 000017 BLT 17,17 000133' 332000 000064* SKIPE STOPU ;HAS STOPU BEEN SET SINCE CIP6 000134' 254000 000032' JRST CIP1B ;YES, GO RESCHEDULE 000135' 254520 000130* JEN @APRCHL ;NO. DISMISS CHANNEL 000136' 402000 000111* CIP8: SETZM SCHEDF ;CLEAR SCHEDULING FLAG 000137' 254000 000000* JRST APRRET ;AND DISMISS INTERRUPT ;THE NULL JOB 000140' 254400 000141' NUL0: JRST 10, NULJOB ;RENABLE AND RUN IN EXEC. MODE 000141' 200040 000142' NULJOB: MOVE 1,.+1 000142' 344000 000001 AOJA 0,1 ;COUNT IN AC0 FOR VISUAL MONITORING ;ALSO PC = 1 END, NO ERRORS DETECTED PROGRAM BREAK IS 000144 9K CORE USED CLOCK - CLOCK SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 6 CLOCK MAC 24-APR-78 03:29 SYMBOL TABLE A 000000 INT AC1 000015 INT AC2 000016 INT AC3 000017 INT AL 000001 INT APR 000000 SPD APRCHL 000135' EXT APRCHN 000000 EXT APRILM 000023' EXT APRINT 000016' INT APRRET 000137' EXT APRSAC 000075' EXT APRSAV 000034' EXT ASSCON 400000 INT ASSPRG 200000 INT B 000014 INT BUFPNT 000012 INT BUFWRD 000013 INT CIP0 000024' CIP1 000030' CIP1B 000032' CIP2 000034' CIP4 000042' CIP5 000062' CIP6 000064' CIP7 000110' CIP8 000136' CIPWT 000001' CLDS 000000 EXT CLKINI 000013' INT CLKOFF 000040' EXT CLOCK 000000' INT CLOSB 002000 INT CLSIN 000002 INT CLSOUT 000001 INT COMCNT 000062' EXT COMMAN 000063' EXT D 000017 INT DAT 000005 INT DCL 000001 INT DCW 020000 INT DDI 000007 INT DDO 000006 INT DDTMEM 000037 INT DDTSYM 000036 INT DEN 000004 INT DEVADR 000007 INT DEVBUF 000006 INT DEVCHR 000001 INT DEVCTR 000011 INT DEVDAT 000006 INT DEVIAD 000007 INT CLOCK - CLOCK SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 6-1 CLOCK MAC 24-APR-78 03:29 SYMBOL TABLE DEVIOS 000002 INT DEVLOG 000005 INT DEVMOD 000004 INT DEVNAM 000000 INT DEVOAD 000010 INT DEVPTR 000010 INT DEVSER 000003 INT DGF 000012 INT DIN 000003 INT DLK 000005 INT DOU 000002 INT DR 000016 INT DRL 000000 INT DSI 000011 INT DSO 000010 INT DTW 040000 INT DVAVAL 000040 INT DVCDR 100000 INT DVDIR 000004 INT DVDIRI 400000 INT DVIN 000002 INT DVLPT 040000 INT DVMTA 000020 INT DVOUT 000001 INT DVTTY 000010 INT ENTRB 020000 INT I 000010 INT IB 000013 INT IBUFB 200000 INT INITB 400000 INT INPB 010000 INT IO 000020 INT IOACT 010000 INT IOBEG 000002 INT IOBKTL 040000 INT IOCON 000040 INT IODEND 020000 INT IODERR 200000 INT IODISC 400000 INT IODONE 400000 INT IODTER 100000 INT IOEND 000040 INT IOFST 000004 INT IOIMPM 400000 INT IONRCK 000100 INT IORDEL 000100 INT IORET 000020 INT IOS 000000 INT IOSTRT 000010 INT IOUSE 400000 INT IOW 000001 INT IOWC 000020 INT IOWS 400000 INT CLOCK - CLOCK SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 6-2 CLOCK MAC 24-APR-78 03:29 SYMBOL TABLE ITEM 000004 INT JA 000011 JBFADR 000000 INT JBFCTR 000002 INT JBFPTR 000001 INT JBTADR 000113' EXT JBTSTS 000037' EXT JBUF 000005 INT JDAT 000011 INT JERR 002000 INT JIOW 100000 INT JNA 004000 INT JOB 000110' EXT JOBADR 000114' EXT JOBDAC 000131' EXT JOBDAT 000115' EXT JOBDHI 000076' EXT JOBLEV 000123' EXT JOBPC 000127' EXT JOBPDP 000121' EXT JOBPFU 000101' EXT JOBREL 000116' EXT JOBUXT 000125' EXT LOOKB 040000 INT MTW 010000 INT NUL0 000140' NULJOB 000141' INT NXTJOB 000066' EXT OBUFB 100000 INT OUTPB 004000 INT PDP 000003 INT PI 000004 SPD PICHN 000100 INT PIOFF 000400 PION 000200 PROG 000007 INT RSCHED 000064' INT RUN 200000 INT RUNABL 204000 INT SCHEDF 000136' EXT STOPU 000133' EXT STOR 000005 T 000001 TAC 000001 INT TAC1 000002 INT TEM 000010 INT TIME 000035' EXT TTYATC 020000 INT TTYUSE 010000 INT USRMOD 010000 INT USRPDP 000120' EXT USRPFU 000122' EXT UUO 000014 INT CLOCK - CLOCK SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 6-3 CLOCK MAC 24-APR-78 03:29 SYMBOL TABLE UUO0 000126' EXT CCCCCCCCCCCC OOOOOOOOO MMM MMM CCCCCCCCCCCC OOOOOOOOO NNN NNN CCCCCCCCCCCC OOOOOOOOO MMM MMM CCCCCCCCCCCC OOOOOOOOO NNN NNN CCCCCCCCCCCC OOOOOOOOO MMM MMM CCCCCCCCCCCC OOOOOOOOO NNN NNN CCC OOO OOO MMMMMM MMMMMM CCC OOO OOO NNN NNN CCC OOO OOO MMMMMM MMMMMM CCC OOO OOO NNN NNN CCC OOO OOO MMMMMM MMMMMM CCC OOO OOO NNN NNN CCC OOO OOO MMM MMM MMM CCC OOO OOO NNNNNN NNN CCC OOO OOO MMM MMM MMM CCC OOO OOO NNNNNN NNN CCC OOO OOO MMM MMM MMM CCC OOO OOO NNNNNN NNN CCC OOO OOO MMM MMM CCC OOO OOO NNN NNN NNN CCC OOO OOO MMM MMM CCC OOO OOO NNN NNN NNN CCC OOO OOO MMM MMM CCC OOO OOO NNN NNN NNN CCC OOO OOO MMM MMM CCC OOO OOO NNN NNNNNN CCC OOO OOO MMM MMM CCC OOO OOO NNN NNNNNN CCC OOO OOO MMM MMM CCC OOO OOO NNN NNNNNN CCC OOO OOO MMM MMM CCC OOO OOO NNN NNN CCC OOO OOO MMM MMM CCC OOO OOO NNN NNN CCC OOO OOO MMM MMM CCC OOO OOO NNN NNN CCCCCCCCCCCC OOOOOOOOO MMM MMM CCCCCCCCCCCC OOOOOOOOO NNN NNN CCCCCCCCCCCC OOOOOOOOO MMM MMM CCCCCCCCCCCC OOOOOOOOO NNN NNN CCCCCCCCCCCC OOOOOOOOO MMM MMM CCCCCCCCCCCC OOOOOOOOO NNN NNN LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT Request created: 24-April-1978 05:53:58 File: DSKB0 :COMCON.LST [8,296] Created: 20-April-1967 05:51:00 Printed: 24-April-1978 05:53:32 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:1965 File will be deleted after printing COMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES MACRO 10 05:51 24-APR-78 PAGE 1 S MAC 24-APR-78 21:40 T.HASTINGS 8-2-65 XLIST LIST TITLE COMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES SUBTTL T.HASTINGS 8-2-65 ;CALLED FROM COMMAND DECODER WHICH IS CALLED FROM CLOCK ROUTINE ;WITH FOLLOWING ACS SET: ;TAC= BYTE POINTER TO COMMAND STRING(SPACE OR CR AFTER COMMAND NAME) ;ITEM = JOB NUMBER ;DAT = BYTE POINTER TO LAST OUTPUT CHARACTER ;DEVDAT= ADDRESS OF DEVICE DATA BLOCK INITIATING COMMAND ;JDAT = ADDRESS OF JOB DATA AREA, = 0 IF NO JOB AREA ;UPON RETURN FROM COMMAND SETUP ROUTINE, A CR-LF IS ADDED IF ;NEEDED AND TTY IS STARTED ;SINCE THE COMMAND DECODER IS CALLED FROM THE CLOCK ROUTINE ;COMMAND SETUP ROUTINES MUST RUN TO COMPLETION QUICKLY ;IF A COMMAND FUNCTION CANNOT DO THIS, IT MUST JUST SET ;THE JOB TO A RUNNABLE STATUS AND RETURN I MEDIATELY ; "IJOB" - INITIALIZE JOB INTERNAL IJOB EXTERNAL RADX10,JOBINI,JOBKIL,CRLF,MONJOB 000000' 254000 000000* IJOB: JRST JOBINI ;PRINT JOB NUMBER INTERNAL PJOB 000001' 200040 000004 PJOB: MOVE TAC, ITEM 000002' 260140 000000* PUSHJ PDP,RADX10 000003' 254000 000000* JRST CRLF ;KILL JOB(MUST HAVE CORE ASSIGNED) INTERNAL KJOB 000004' 254000 000000* KJOB: JRST JOBKIL COMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES MACRO 10 05:51 24-APR-78 PAGE 2 COMCON MAC 24-APR-78 01:00 T.HASTINGS 8-2-65 ; "START L" OR "START" - START AT LOC. L OR STARTING ADDRESS INTERNAL START EXTERNAL OCTIN,JOBSA,START1,COMERA,STARTU,CPOPJ,CPOPJ1,STARTM 000005' 260140 000013' START: PUSHJ PDP,STRT 000006' 254000 000000* JRST COMERA ;ERROR 000007' 254000 000000* JRST STARTU ;GO SET JOB TO START(CONSOLE IN USER MO ; "STARTC L" OR "STARTC" - START AT LOC. L(TTY IN COMMAND MODE) INTERNAL STARTC EXTERNAL STARTM 000010' 260140 000013' STARTC: PUSHJ PDP,STRT 000011' 254000 000006* JRST COMERA ;ERROR 000012' 254000 000000* JRST STARTM ;FO SET JOB TO START(TTY IN COM. MODE) ;ROUTINE TO SCAN ARGUMENT 000013' 260140 000000* STRT: PUSHJ PDP,OCTIN ;CONVERT OCTAL NO, 000014' 254000 000016' JRST ST2 ;EITHER NO NUMBER OR ERROR 000015' 254000 000020' JRST ST3 ;START JOB C(TAC1) 000016' 326100 000000* ST2: JUMPN TAC1, CPOPJ ;NOT A NUMBER IF NON-ZERO 000017' 550111 000000* HRRZ TAC1, JOBSA(JDAT) ;NO, START AT STARTING ADDRES 000020' 505100 001000 ST3: HRLI TAC1, 1000 ;USER MODE FLAG 000021' 254000 000000* JRST CPOPJ1 ;OR RETURN COMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES MACRO 10 05:51 24-APR-78 PAGE 3 COMCON MAC 24-APR-78 01:00 T.HASTINGS 8-2-65 ; "CONT" - CONTINUE EXECUTION FROM WHERE LEFT OFF INTERNAL CONT EXTERNAL CONTU,CONMES,JBTSTS 000022' 205100 002000 CONT: MOVSI TAC1, JERR 000023' 616104 000000* TDNN TAC1, JBTSTS(ITEM) ;IS JOB ERROR BIT SET? 000024' 254000 000000* JRST CONTU ;NO, GO SET JOB TO CONTINUE 000025' 265040 000000* CONTA: JSP TAC,CONMES ;YES, PRINT CANT CONTINUE 000026' 416031 623650 ASCIZ /CAN'T CONTINUE 000027' 202071 747250 000030' 446352 542432 000031' 050000 000000 / ; "CONTC" - CONTINUE EXECUTION(TTY REMAINS IN COMMAND MODE) INTERNAL CONTC EXTERNAL CONTM 000032' 205100 002000 CONTC: MOVSI TAC1, JERR 000033' 616104 000023* TDNN TAC1, JBTSTS(ITEM) ;IS JOB ERROR BIT SET? 000034' 254000 000000* JRST CONTM ;NO 000035' 254000 000025' JRST CONTA ;YES ; "DDT" - START EXECUTION AT DDT IN USER AREA INTERNAL DDTGO EXTERNAL JOBDDT,STARTU 000036' 550111 000000* DDTGO: HRRZ TAC1, JOBDDT(JDAT) ;GET DDT STARTING ADDRESS 000037' 326100 000043' JUMPN TAC1,DDT1 ;GO START JOB IF NON-ZERO 000040' 265040 000025* JSP TAC,CONMES ;ZERO, PRINT"NO DDT" 000041' 472364 042210 ASCII /NO DDT 000042' 520321 200000 / 000043' 505100 010000 DDT1: HRLI TAC1,USRMOD ;USER MODE BIT 000044' 254000 000007* JRST STARTU ;GO SET TO RUN JOB ;DIGITAL MAYNARD INTERNAL DIGITAL 000045' 265040 000040* DIGITAL: JSP TAC,CONMES 000046' 442131 446236 ASCIZ /HELLO 000047' 064240 000000 / COMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES MACRO 10 05:51 24-APR-78 PAGE 4 COMCON MAC 24-APR-78 01:00 T.HASTINGS 8-2-65 ; "CORE #" - ASSIGNS #*1024 WORDS OF CORE TO JOB ; "CORE" WITH NO ARGUMENT IS EQUIVALENT TO "CORE 0" INTERNAL CORE EXTERNAL CORE1,DECIN,ANYRIN,CONMES,COMERA,NOTENF EXTERNAL JOBPFI,JBTADR,CPOPJ,JOBPRT,JOBPR1,JOBZER EXTERNAL RADX10 000050' 260140 000000* CORE: PUSHJ PDP, DECIN ;GET NO. OF 1K BLOCKS 000051' 254000 000077' JRST COR3 ;ERROR 000052' 336040 000002 SKIPN TAC,TAC1 ;IS ZERO BEING ASKED FOR? 000053' 326440 000000* JUMPN JDAT,JOBZER ;YES, RELEASE ALL DEVICES IF THERE WAS 000054' 260140 000000* PUSHJ PDP,CORE1 000055' 254000 000065' JRST COR2 ;CORE NOT AVAILABLE (AC TAC = BLO CKS L 000056' 550444 000000* HRRZ JDAT, JBTADR(ITEM) ;CORE GRANTED, CLEAR PART OF 000057' 322440 000016* JUMPE JDAT, CPOPJ ;UNLESS ALL CORE WAS RETURNED 000060' 402011 000000* SETZM JOBPRT(JDAT) ;CLEAR PART PROTECTED FROM IO 000061' 505051 000060* HRLI TAC,JOBPRT(JDAT) 000062' 541051 000000* HRRI TAC, JOBPR1(JDAT) 000063' 251051 000000* BLT TAC, JOBPFI(JDAT) 000064' 263140 000000 POPJ PDP, 000065' 260140 000002* COR2: PUSHJ PDP,RADX10 ;PRINT NO. OF FREE 1K BLOCKS LEFT 000066' 265040 000045* JSP TAC,CONMES 000067' 202152 242612 ASCIZ / FREE 1K BLOCKS LEFT, NONE ASSIGNED 000070' 201431 320204 000071' 462370 345646 000072' 202310 543250 000073' 261011 647634 000074' 425010 151646 000075' 446171 642610 000076' 064240 000000 / 000077' 326100 000011* COR3: JUMPN TAC1, COMERA ;NOT A NO. IF NON-ZERO, APPEND "?" 000100' 254000 000000* JRST NOTENF ;NOT ENOUGH ARGUMENT COMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES MACRO 10 05:51 24-APR-78 PAGE 5 COMCON MAC 24-APR-78 01:00 T.HASTINGS 8-2-65 ; "SAVE FILE-NAME" - SAVES JOB AREA ON RETRIEVABLE DEVICE ;ONLY A SAVE OR A GET IN PROGRESS FOR EACH JOB ;NO ATTEMPT IS MADE TO SAVE DEVICE ASSIGNMENTS, ACS, OR PC INTERNAL SAVE EXTERNAL SAVJOB,START1,SGSET 000101' 201100 000000* SAVE: MOVEI TAC1, SAVJOB ;SETUP TO RUN SAVJOB 000102' 254000 000000* JRST SGSET ; "GET DEVICE:FILE-NAME" - SETS UP JOB AREA FROM RETRIEVABLE DEVICE INTERNAL GET EXTERNAL GETJOB 000103' 201100 000000* GET: MOVEI TAC1, GETJOB ;SETUP TO RUN GET JOB 000104' 254000 000102* JRST SGSET COMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES MACRO 10 05:51 24-APR-78 PAGE 6 COMCON MAC 24-APR-78 01:00 T.HASTINGS 8-2-65 ;"ASSIGN DEV:NAME" - ASSIGNS DEV TO JOB AND GIVES IT LOGICAL NAME NAM ;TEMPORARY ACS 000012 T1=BUFPNT 000013 T=BUFWRD INTERNAL ASSIGN EXTERNAL CTEXT1, NOTENF, DEVLST, ASSASG, CONMES, PJOBN, ANYRDX, ERNAM EXTERNAL CRLF, DEVLG,SYSTAP 000105' 260140 000000* ASSIGN: PUSHJ PDP, CTEXT1 ;GET FIRST ARGUMENT 000106' 322100 000100* JUMPE TAC1, NOTENF ;NO ARGUMENTS TYPED IF 0 000107' 200500 000002 MOVE T1, TAC1 ;SAVE DEVICE NAME 000110' 261140 400000 PUSH PDP, ASSCON ;SAVE INPUT BYTE POINTER 000111' 201100 400000 MOVEI TAC1, ASSCON ;SETUP ASSIGNED BY CONSOLE BIT 000112' 554300 000000* ASSN: HLRZ DEVDAT, DEVLST 000113' 312506 000000 ASSG0: CAME T1,DEVNAM(DEVDAT) ;DOES PHYSICAL NAME MATCH? 000114' 254000 000120' JRST ASSG1 ;NO 000115' 260140 000000* PUSHJ PDP, ASSASG ;YES, TRY TO ASSIGN DEVICE 000116' 254000 000135' JRST ASSER1 ;ALREADY ASSIGNED TO ANOTHER JOB 000117' 254000 000151' JRST ASSFIN ;ASSIGNED 000120' 200046 000000 ASSG1: MOVE TAC,DEVNAM(DEVDAT) ;IS THIS THE SYSTEM TAPE? 000121' 316040 000000* CAMN TAC,SYSTAP 000122' 254000 000131' JRST ASSG2 ;YES 000123' 135540 000000* LDB T, PJOBN ;SAVE OLD JOB NUMBER FOR THIS 000124' 620040 777777 TRZ TAC,-1 ;COMPARE LEFT HALF ONLY 000125' 316040 000012 CAMN TAC, T1 000126' 260140 000115* PUSHJ PDP, ASSASG ;MATCH, TRY TO ASSIGN IT 000127' 254000 000131' JRST ASSG2 ;KEEP LOOKING 000130' 322540 000151' JUMPE T,ASSFIN ;IF OLD JOB NUMBER 0, DEVICE PREVIOSLY 000131' 554306 000003 ASSG2: HLRZ DEVDAT, DEVSER(DEVDAT) 000132' 326300 000113' JUMPN DEVDAT, ASSG0 000133' 262140 000001 POP PDP, TAC 000134' 254000 000211' JRST NOTDEV ;PRINT NO SUCH DEVICE COMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES MACRO 10 05:51 24-APR-78 PAGE 7 COMCON MAC 24-APR-78 01:00 T.HASTINGS 8-2-65 ;ALREADY ASSIGNED TO ANOTHER JOB 000135' 262140 000001 ASSER1: POP PDP, TAC 000136' 201040 000144' MOVEI TAC, ASSMS2 000137' 260140 000066* PUSHJ PDP, CONMES 000140' 201100 000012 MOVEI TAC1, ^D10 000141' 135040 000123* LDB TAC, PJOBN 000142' 260140 000000* PUSHJ PDP,ANYRDX 000143' 254000 000003* JRST CRLF 000144' 406312 242602 ASSMS2: ASCIZ /ALREADY ASSIGNED TO JOB / 000145' 422624 040646 000146' 516230 747212 000147' 421012 447500 000150' 452370 220000 ;DEVICE ASSIGNED, GIVE IT A LOGICAL NAME 000151' 262140 000001 ASSFIN: POP PDP,TAC ;RESTORE INPUT BYTE POINTER 000152' 261140 000006 PUSH PDP,DEVDAT ;SAVE DDB ADDRESS 000153' 260140 000105* PUSHJ PDP,CTEXT1 ;GET SECOND ARG, LOGICAL DEVICE NAME 000154' 332040 000002 SKIPE TAC,TAC1 ;IS THERE A LOGICAL NAME SPECIFIED? 000155' 260140 000000* PUSHJ PDP, DEVLG ;YES, SEE IF IT IS ALREADY IN USE ;BY THIS USER 000156' 254000 000161' JRST ASSF1 ;NO 000157' 201040 000173' MOVEI TAC,LOGERR ;YES, PRINT ERROR 000160' 260140 000137* PUSHJ PDP,CONMES 000161' 200303 000000 ASSF1: MOVE DEVDAT,(PDP) ;RESTORE DDB ADDRESS 000162' 202106 000005 MOVEM TAC1,DEVLOG(DEVDAT) ;STORE IN DEVICE DATA BLOCK 000163' 205100 400000 MOVSI TAC1,DVDIRIN ;CLEAR DIRECTORY IN CORE BIT 000164' 412106 000004 ANDCAM TAC1,DEVMOD(DEVDAT) 000165' 260140 000000* PUSHJ PDP, ERNAM ;PRINT PHYSICAL DEVICE NAME 000166' 262140 000006 POP PDP, DEVDAT 000167' 265040 000160* JSP TAC,CONMES 000170' 202032 351622 ASCIZ / ASSIGNED 000171' 436350 542032 000172' 050000 000000 / 000173' 462370 744606 LOGERR: ASCIZ /LOGICAL NAME ALREADY IN USE, / 000174' 406304 047202 000175' 466124 040630 000176' 512130 142262 000177' 202231 620252 000200' 516125 420000 COMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES MACRO 10 05:51 24-APR-78 PAGE 8 COMCON MAC 24-APR-78 01:00 T.HASTINGS 8-2-65 ;"DEASSIGN DEV" - DEASSIGNS DEVICE FROM CONSOLE INTERNAL DEASSIGN, NOTDEV EXTERNAL CTEXT1, DEVSRC, CONMES, ERNAM, DEASG, DEASTY 000201' 260140 000153* DEASSIGN: PUSHJ PDP, CTEXT1 ;GET DEVICE NAME 000202' 322100 000000* JUMPE TAC1,DEASTY ;NO ARG. IF 0, DEASSIGN ALL BUT TTY 000203' 200040 000002 MOVE TAC, TAC1 ;DEVICE NAME 000204' 260140 000000* PUSHJ PDP, DEVSRC ;SEARCH FOR DEVICE 000205' 254000 000211' JRST DEAER1 ;NOT FOUND 000206' 260140 000000* PUSHJ PDP, DEASG ;FOUND, DEASSIGN IT 000207' 254000 000216' JRST DEAER2 ;NOT PREVIOUSLY ASSIGNED 000210' 263140 000000 POPJ PDP, ;DEVICE DEASSIGNED 000211' NOTDEV: 000211' 265040 000167* DEAER1: JSP TAC,CONMES ;PRINT NO SUCH DEVICE 000212' 472364 051652 ASCIZ /NO SUCH DEVICE 000213' 416204 042212 000214' 532230 342432 000215' 050000 000000 / 000216' 261140 000006 DEAER2: PUSH PDP, DEVDAT ;PRINT PHYSICAL DEVICE NAME 000217' 260140 000165* PUSHJ PDP, ERNAM 000220' 262140 000006 POP PDP, DEVDAT 000221' 265040 000211* JSP TAC,CONMES 000222' 536032 347116 ASCIZ /WASN'T ASSIGNED 000223' 521010 151646 000224' 446171 642610 000225' 064240 000000 / COMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES MACRO 10 05:51 24-APR-78 PAGE 9 COMCON MAC 24-APR-78 01:00 T.HASTINGS 8-2-65 ; "ATTACH N" - ATTACH CONSOLE TO JOB N ;CHANGES ADDRESS OF TTY DEVICE DATA BLOCK STORED IN -1(PDP) ;BY THE COMMAND DECODER INTERNAL ATTACH EXTERNAL DECIN,TTYATT,JOBN,ERNAM,CONMES,TTYFND 000226' 260140 000050* ATTACH: PUSHJ PDP,DECIN ;GET JOB NO. 000227' 254000 000243' JRST ATT1 ;NOT A NUMBER OR NONE SPECIFIEED 000230' 332000 000002 SKIPE TAC1 ;0 IS ILLEGAL 000231' 301100 000000* CAIL TAC1, JOBN ;IS JOB NUMBER TOO BIG? 000232' 254000 000243' JRST ATT1 ;ILLEGAL JOB NUMBER 000233' 205040 004000 MOVSI TAC,JNA ;HAS THIS JOB NO BEEN ASSIGNED? 000234' 616042 000033* TDNN TAC,JBTSTS(TAC1) 000235' 254000 000261' JRST ATT4 ;NO, PRINT ERROR 000236' 200200 000002 MOVE ITEM,TAC1 ;JOB NUMBER TO ITEM 000237' 260140 000000* PUSHJ PDP,TTYATT ;NO, ATTACH TTY 000240' 254000 000251' JRST ATT2 ;ERROR CANT ATTACH 000241' 202303 777777 MOVEM DEVDAT,-1(PDP) ;CHANGE DEV DATA BLOCK ADDRES 000242' 254000 000000* JRST TTYFND ;ATTACHED. GO SET UP OUTP. BYTE PTR. 000243' 265040 000221* ATT1: JSP TAC,CONMES 000244' 446311 442616 ASCIZ /ILLEGAL JOB NUMBER 000245' 406304 045236 000246' 411011 652632 000247' 412132 206424 / 000250' 000000 000000 000251' 261140 000006 ATT2: PUSH PDP,DEVDAT 000252' 260140 000217* PUSHJ PDP,ERNAM ;PRINT TTY DEVICE NAME 000253' 262140 000001 POP PDP,TAC 000254' 265040 000243* JSP TAC,CONMES 000255' 202031 451212 ASCIZ / ALREADY ATTACHED 000256' 406113 120202 000257' 522510 141620 000260' 426101 505000 / 000261' 265040 000254* ATT4: JSP TAC,CONMES 000262' 452370 220234 ASCIZ /JOB NEVER WAS INITIATED 000263' 426550 551100 000264' 536032 320222 000265' 472232 444602 000266' 522130 406424 / 000267' 000000 000000 ; "DETACH" - DETACH CONSOLE FORM JOB INTERNAL DETACH EXTERNAL TTYDET 000270' 350003 000000 DETACH: AOS (PDP) ;SUPRESS CR-LF SO NO TTY DDB SETUP COMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES MACRO 10 05:51 24-APR-78 PAGE 9-1 COMCON MAC 24-APR-78 01:00 T.HASTINGS 8-2-65 000271' 254000 000000* JRST TTYDET ;GO DETACH TTY END, NO ERRORS DETECTED PROGRAM BREAK IS 000272 9K CORE USED COMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES MACRO 10 05:51 24-APR-78 PAGE 10 COMCON MAC 24-APR-78 01:00 SYMBOL TABLE A 000000 INT AC1 000015 INT AC2 000016 INT AC3 000017 INT AL 000001 INT ANYRDX 000142' EXT ANYRIN 000000 EXT ASSASG 000126' EXT ASSCON 400000 INT ASSER1 000135' ASSF1 000161' ASSFIN 000151' ASSG0 000113' ASSG1 000120' ASSG2 000131' ASSIGN 000105' INT ASSMS2 000144' ASSN 000112' ASSPRG 200000 INT ATT1 000243' ATT2 000251' ATT4 000261' ATTACH 000226' INT B 000014 INT BUFPNT 000012 INT BUFWRD 000013 INT CLOSB 002000 INT CLSIN 000002 INT CLSOUT 000001 INT COMERA 000077' EXT CONMES 000261' EXT CONT 000022' INT CONTA 000025' CONTC 000032' INT CONTM 000034' EXT CONTU 000024' EXT COR2 000065' COR3 000077' CORE 000050' INT CORE1 000054' EXT CPOPJ 000057' EXT CPOPJ1 000021' EXT CRLF 000143' EXT CTEXT1 000201' EXT D 000017 INT DAT 000005 INT DCL 000001 INT DCW 020000 INT DDI 000007 INT DDO 000006 INT DDT1 000043' DDTGO 000036' INT COMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES MACRO 10 05:51 24-APR-78 PAGE 10-1 COMCON MAC 24-APR-78 01:00 SYMBOL TABLE DDTMEM 000037 INT DDTSYM 000036 INT DEAER1 000211' DEAER2 000216' DEASG 000206' EXT DEASSI 000201' INT DEASTY 000202' EXT DECIN 000226' EXT DEN 000004 INT DETACH 000270' INT DEVADR 000007 INT DEVBUF 000006 INT DEVCHR 000001 INT DEVCTR 000011 INT DEVDAT 000006 INT DEVIAD 000007 INT DEVIOS 000002 INT DEVLG 000155' EXT DEVLOG 000005 INT DEVLST 000112' EXT DEVMOD 000004 INT DEVNAM 000000 INT DEVOAD 000010 INT DEVPTR 000010 INT DEVSER 000003 INT DEVSRC 000204' EXT DGF 000012 INT DIGITA 000045' INT DIN 000003 INT DLK 000005 INT DOU 000002 INT DR 000016 INT DRL 000000 INT DSI 000011 INT DSO 000010 INT DTW 040000 INT DVAVAL 000040 INT DVCDR 100000 INT DVDIR 000004 INT DVDIRI 400000 INT DVIN 000002 INT DVLPT 040000 INT DVMTA 000020 INT DVOUT 000001 INT DVTTY 000010 INT ENTRB 020000 INT ERNAM 000252' EXT GET 000103' INT GETJOB 000103' EXT I 000010 INT IB 000013 INT IBUFB 200000 INT IJOB 000000' INT COMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES MACRO 10 05:51 24-APR-78 PAGE 10-2 COMCON MAC 24-APR-78 01:00 SYMBOL TABLE INITB 400000 INT INPB 010000 INT IO 000020 INT IOACT 010000 INT IOBEG 000002 INT IOBKTL 040000 INT IOCON 000040 INT IODEND 020000 INT IODERR 200000 INT IODISC 400000 INT IODONE 400000 INT IODTER 100000 INT IOEND 000040 INT IOFST 000004 INT IOIMPM 400000 INT IONRCK 000100 INT IORDEL 000100 INT IORET 000020 INT IOS 000000 INT IOSTRT 000010 INT IOUSE 400000 INT IOW 000001 INT IOWC 000020 INT IOWS 400000 INT ITEM 000004 INT JBFADR 000000 INT JBFCTR 000002 INT JBFPTR 000001 INT JBTADR 000056' EXT JBTSTS 000234' EXT JBUF 000005 INT JDAT 000011 INT JERR 002000 INT JIOW 100000 INT JNA 004000 INT JOBDDT 000036' EXT JOBINI 000000' EXT JOBKIL 000004' EXT JOBN 000231' EXT JOBPFI 000063' EXT JOBPR1 000062' EXT JOBPRT 000061' EXT JOBSA 000017' EXT JOBZER 000053' EXT KJOB 000004' INT LOGERR 000173' LOOKB 040000 INT MONJOB 000000 EXT MTW 010000 INT NOTDEV 000211' INT NOTENF 000106' EXT OBUFB 100000 INT OCTIN 000013' EXT COMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES MACRO 10 05:51 24-APR-78 PAGE 10-3 COMCON MAC 24-APR-78 01:00 SYMBOL TABLE OUTPB 004000 INT PDP 000003 INT PICHN 000100 INT PJOB 000001' INT PJOBN 000141' EXT PROG 000007 INT RADX10 000065' EXT RUN 200000 INT RUNABL 204000 INT SAVE 000101' INT SAVJOB 000101' EXT SGSET 000104' EXT ST2 000016' ST3 000020' START 000005' INT START1 000000 EXT STARTC 000010' INT STARTM 000012' EXT STARTU 000044' EXT STRT 000013' SYSTAP 000121' EXT T 000013 T1 000012 TAC 000001 INT TAC1 000002 INT TEM 000010 INT TTYATC 020000 INT TTYATT 000237' EXT TTYDET 000271' EXT TTYFND 000242' EXT TTYUSE 010000 INT USRMOD 010000 INT UUO 000014 INT CCCCCCCCCCCC OOOOOOOOO MMM MMM CCCCCCCCCCCC SSSSSSSSSSSS SSSSSSSSSSSS CCCCCCCCCCCC OOOOOOOOO MMM MMM CCCCCCCCCCCC SSSSSSSSSSSS SSSSSSSSSSSS CCCCCCCCCCCC OOOOOOOOO MMM MMM CCCCCCCCCCCC SSSSSSSSSSSS SSSSSSSSSSSS CCC OOO OOO MMMMMM MMMMMM CCC SSS SSS CCC OOO OOO MMMMMM MMMMMM CCC SSS SSS CCC OOO OOO MMMMMM MMMMMM CCC SSS SSS CCC OOO OOO MMM MMM MMM CCC SSS SSS CCC OOO OOO MMM MMM MMM CCC SSS SSS CCC OOO OOO MMM MMM MMM CCC SSS SSS CCC OOO OOO MMM MMM CCC SSSSSSSSS SSSSSSSSS CCC OOO OOO MMM MMM CCC SSSSSSSSS SSSSSSSSS CCC OOO OOO MMM MMM CCC SSSSSSSSS SSSSSSSSS CCC OOO OOO MMM MMM CCC SSS SSS CCC OOO OOO MMM MMM CCC SSS SSS CCC OOO OOO MMM MMM CCC SSS SSS CCC OOO OOO MMM MMM CCC SSS SSS CCC OOO OOO MMM MMM CCC SSS SSS CCC OOO OOO MMM MMM CCC SSS SSS CCCCCCCCCCCC OOOOOOOOO MMM MMM CCCCCCCCCCCC SSSSSSSSSSSS SSSSSSSSSSSS CCCCCCCCCCCC OOOOOOOOO MMM MMM CCCCCCCCCCCC SSSSSSSSSSSS SSSSSSSSSSSS CCCCCCCCCCCC OOOOOOOOO MMM MMM CCCCCCCCCCCC SSSSSSSSSSSS SSSSSSSSSSSS LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT Request created: 24-April-1978 05:53:58 File: DSKB0 :COMCSS.LST [8,296] Created: 20-April-1967 05:51:00 Printed: 24-April-1978 05:53:32 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:1951 File will be deleted after printing COMCSS - COMMAND COMMON ROUTINES MACRO 10 05:51 24-APR-78 PAGE 1 S MAC 24-APR-78 21:40 T. HASTINGS 8-15-65 XLIST LIST TITLE COMCSS - COMMAND COMMON ROUTINES SUBTTL T. HASTINGS 8-15-65 ;ROUTINE TO RETURN NEXT ALPHANUMERIC STRING ; IN COMMAND LINE (SIXBIT) ; CALL: MOVE TAC, BYTE POINTER TO FIRST CHAR.-1 ; PUSHJ PDP, CTEXT ; SIXBIT STRING RETURN LEFT JUSTIFIED IN AC TAC1 INTERNAL CTEXT, CTEXT1 000012 T=BUFPNT ;TEMPORARY ACS 000013 T1=BUFWRD 000014 T2=UUO 000000' 201100 000000 CTEXT1: MOVEI TAC1, 0 ;CHECK PREVIOUS BREAK CHAR. 000001' 135500 000001 LDB T, TAC 000002' 306500 000015 CAIN T, 15 ;RETURN IF CR. 000003' 263140 000000 POPJ PDP, 000004' 260140 000035' CTEXT: PUSHJ PDP, SKIPS ;SKIP LEADING SPACES, TABS 000005' 200500 000231' MOVE T,[POINT 6,TAC1] 000006' 201100 000000 MOVEI TAC1, 0 000007' 135540 000001 LDB T1, TAC 000010' 254000 000012' JRST CTEX1 000011' 134540 000001 CTEX0: ILDB T1,TAC 000012' 260140 000024' CTEX1: PUSHJ PDP, CTEX ;IS IT ALPHANUMERIC 000013' 263140 000000 POPJ PDP, ;NO. EXIT 000014' 640540 000040 TRC T1,40 ;CONVERT TO SIXBIT 000015' 136540 000012 IDPB T1,T ;YES, STORE AWAY 000016' 312500 000232' CAME T,[POINT 6,TAC1,35] ;SIX CHARACTER YET 000017' 254000 000011' JRST CTEX0 ;NO 000020' 134540 000001 CTEX2: ILDB T1, TAC ;YES 000021' 260140 000024' PUSHJ PDP, CTEX ;IS IT ALPHANUMERIC 000022' 263140 000000 POPJ PDP, ;NO, EXIT 000023' 254000 000020' JRST CTEX2 ;SCAN FOR ALPHANUMERIC CHAR IN T1 000024' 301540 000060 CTEX: CAIL T1, "0" 000025' 303540 000132 CAILE T1, "Z" ;LETTERS ARE LARGER THAN NOS. 000026' 263140 000000 POPJ PDP, ;NEITHER 000027' 303540 000071 CAILE T1, "9" 000030' 301540 000101 CAIL T1, "A" 000031' 350003 000000 AOS (PDP) ;LETTER OR NUMBER 000032' 263140 000000 POPJ PDP, COMCSS - COMMAND COMMON ROUTINES MACRO 10 05:51 24-APR-78 PAGE 2 COMCSS MAC 24-APR-78 01:01 T. HASTINGS 8-15-65 ;ROUTINE TO IGNORE LEADING SPACES AND TABS ;CALL: MOVE TAC, BYTE POINTER TO CHAR. ; PUSHJ PDP, SKIPS1 INTERNAL SKIPS1 000033' 135500 000001 SKIPS1: LDB T, TAC 000034' 254000 000036' JRST SKIPSA ;ROUTINE TO IGNORE LEDING SPACES AND TABS ;CALL: MOVE TAC, BYTE POINTER TO CHAR.-1 ; PUSHJ PDP, SKIPS INTERNAL SKIPS 000035' 134500 000001 SKIPS: ILDB T, TAC 000036' 302500 000040 SKIPSA: CAIE T, " " 000037' 306500 000011 CAIN T, 11 000040' 254000 000035' JRST SKIPS 000041' 263140 000000 POPJ PDP, COMCSS - COMMAND COMMON ROUTINES MACRO 10 05:51 24-APR-78 PAGE 3 COMCSS MAC 24-APR-78 01:01 T. HASTINGS 8-15-65 ;ROUTINE TO APPEND A "?" TO INPUT STRING AND SET AS OUTPUT ;CALL: MOVE TAC, BYTE POINTER TO LAST CHAR. IN INPUT STRING ; PUSHJ PDP, COMERA INTERNAL COMERA 000042' 133000 000001 COMERA: IBP TAC ;ROUTINE TO REPLACE LAST CHARACTER IN INPUT STRING BY "?" ;AND SET AS OUTPUT ;CALL: MOVE TAC, BYTE POINTER TO LAST CHAR. IN INPUT STRING ; PUSHJ PDP, COMERR INTERNAL COMERR EXTERNAL TTYBUF 000043' 200240 000001 COMERR: MOVE DAT,TAC 000044' 201506 000000* MOVEI T,TTYBUF(DEVDAT) ;IS THERE MORE THAN 3 WORDS I 000045' 305505 777775 CAIGE T,-3(DAT) 000046' 541252 000003 HRRI DAT,3(T) ;YES, TYPE ONLY 3 000047' 201500 000077 MOVEI T, "?" ;APPEND "?" 000050' 137500 000005 DPB T, DAT 000051' 265040 000060' JSP TAC,CONMES 000052' 202331 747222 ASCIZ / MONITOR COMMAND ERROR 000053' 522372 220206 000054' 476331 540634 000055' 421010 551244 000056' 476441 505000 / COMCSS - COMMAND COMMON ROUTINES MACRO 10 05:51 24-APR-78 PAGE 4 COMCSS MAC 24-APR-78 01:01 T. HASTINGS 8-15-65 ;ROUTINE TO PRINT CARRIAGE RETURN-LINE-FEED ;CALL: MOVE DAT,BYTE POINTER TO OUTPUT ; PUSHJ PDP,CRLF INTERNAL CRLF CRLF: MOVEI TAC,[ASCII / 000057' 201040 000233' /] ;ROUTINE TO MOVE ASCII CHAR. STRING TO CONSOLE OUTPUT BUFFER ; CALL: MOVE DAT, BYTE POINTER TO LAST OUTPUT CHARACTER ; MOVEI TAC, ADDRESS OF ASCII MESSAGE` ; PUSHJ PDP, CONMES ; STRING TERMINATED BY NULL ; CONMES DOES NOT START TTY INTERNAL CONMES 000060' 261140 000002 CONMES: PUSH PDP, TAC1 000061' 505040 440700 HRLI TAC, 440700 ;FORM BYTE POINTER 000062' 134100 000001 CON0: ILDB TAC1, TAC 000063' 322100 000066' JUMPE TAC1, CON1 000064' 136100 000005 IDPB TAC1, DAT 000065' 254000 000062' JRST CON0 000066' 262140 000002 CON1: POP PDP, TAC1 000067' 263140 000000 POPJ PDP, ;ROUTINE TO PRINT "TO FEW ARGUMENTS" ;CALL: MOVE DAT,BYTE POINTER ; PUSHJ PDP,NOTENF INTERNAL NOTENF 000070' 265040 000060' NOTENF: JSP TAC,CONMES 000071' 522371 720214 ASCIZ /TOO FEW ARGUMENTS 000072' 426564 040644 000073' 436531 542634 000074' 522461 505000 / COMCSS - COMMAND COMMON ROUTINES MACRO 10 05:51 24-APR-78 PAGE 5 COMCSS MAC 24-APR-78 01:01 T. HASTINGS 8-15-65 ;ROUTINE TO INITIALIZE A JOB ;CALL: MOVE ITEM, JOB NUMBER ; PUSHJ PDP, JOBINI ; DEVDAT IS SETUP ON RETURN INTERNAL JOBINI,JOBZER EXTERNAL JBTSTS,PJOBN,CORE1,MONJOB,ESTOP,TTYATT 000075' 326200 000100' JOBINI: JUMPN ITEM,JOB0 ;HAS A JOB NUMBER BEED ASSIGNED? 000076' 260140 000135' PUSHJ PDP,ASSJOB ;NO, THEN ASSIGN ONE. 000077' 254000 000060' JRST CONMESS ;NONE LEFT 000100' 260140 000000* JOB0: PUSHJ PDP,TTYATT ;ATTACH TTY 000101' 255000 000000 JFCL ;ALREADY ATTACHED 000102' 205040 004000 MOVSI TAC,JNA ;CLEAR JOB NO. ASSIGNED BIT 000103' 412044 000000* ANDCAM TAC,JBTSTS(ITEM) ;TO FORCE MESSAGE 000104' 205040 646471 MOVSI TAC,646471 ;SIXBIT /TTY/ 000105' 202046 000005 MOVEM TAC, DEVLOG(DEVDAT) ;SET LOGICAL NAME 000106' 201500 400000 MOVEI T, ASSCON ;SET ASSIGNED BY CONSOLE BIT 000107' 436506 000004 IORM T, DEVMOD(DEVDAT) 000110' 260140 000172' PUSHJ PDP, DEASTY ;DE-ASSIGNED ALL DEVICES EXCEPT TTY 000111' 322440 000000* JUMPE JDAT,CPOPJ ;DOES JOB ALREDY HAVE CORE? ;ROUTINE TO RELEASE ALL DEVICES AND FLUSH CORE ;RUN AS MONITOR JOB ;CALL: SAME AS JOBIN EXTERNAL IOKILL 000112' 541100 000115' JOBZER: HRRI TAC1,JOB1 ;ADDRESS OF SUB. TO RELEASE DEV. 000113' 505100 000000* JOBZR1: HRLI TAC1, ESTOP ;RETURN ADDRESS AFER IORELS 000114' 254000 000000* JRST MONJOB ;GO SCHEDULE MONITOR JOB 000115' 260140 000000* JOB1: PUSHJ PDP,IOKILL ;KILL ALL IO DEVICES 000116' 201040 000000 MOVEI TAC,0 ;FLUSH ALL CORE 000117' 370003 000000 SOS (PDP) ;CORE1 WILL SKIP RETURN 000120' 254000 000000* JRST CORE1 COMCSS - COMMAND COMMON ROUTINES MACRO 10 05:51 24-APR-78 PAGE 6 COMCSS MAC 24-APR-78 01:01 T. HASTINGS 8-15-65 ;ROUTINE TO KILL CURRENT JOB ;CALL PUSHJ PDP,JOBKIL INTERNAL JOBKIL EXTERNAL JBTSTS,TTYKIL 000121' 350003 000000 JOBKIL: AOS (PDP) ;SUPRESS CR-LF AND JOB INIT. CHECK 000122' 201040 000001 MOVEI TAC,1 000123' 260140 000173' PUSHJ PDP,DEASAL ;DEASSIGN ALL DEVICES 000124' 322440 000132' JUMPE JDAT,JOBKA ;DOES JOB HAVE CORE? 000125' 541100 000127' HRRI TAC1,JOBK2 ;YES,RELEAS DEVICE AND CLEAR 000126' 254000 000113' JRST JOBZR1 000127' 261140 000006 JOBK2: PUSH PDP,DEVDAT ;SAVE DEVDAT FOR TTYKIL 000130' 260140 000115' PUSHJ PDP,JOB1 ;FLUSH CORE AND RELEASE DEVICES 000131' 262140 000006 POP PDP,DEVDAT 000132' 205040 002000 JOBKA: MOVSI TAC,JERR ;CLEAR ALL BUT JOB ERROR BIT 000133' 202044 000103* MOVEM TAC,JBTSTS(ITEM) ;IN JOB STATUS WORD 000134' 254000 000000* JRST TTYKIL ;RETURN TTY TO VIRGIN STATE ;ROUTINE TO ASSIGN AN UNUSED JOB NUMBER ;CALL PUSHJ PDP,ASSJOB ; ERROR RETURN TAC DESTROYED ; OK RETURN ITEM SET, TAC AND TAC1 PRESERVED INTERNAL ASSJOB EXTERNAL MJOBN,JBTSTS,CPOPJ1 000135' 205200 000000* ASSJOB: MOVSI ITEM,MJOBN 000136' 253200 000137' AOBJN ITEM,.+1 000137' 205540 004000 MOVSI T1,JNA 000140' 612544 000133* TDNE T1,JBTSTS(ITEM) 000141' 253200 000140' AOBJN ITEM,.-1 000142' 325200 000145' JUMPGE ITEM,ASSJB1 000143' 405200 777777 ANDI ITEM,-1 000144' 254000 000000* JRST CPOPJ1 000145' 265040 000060' ASSJB1: JSP TAC,CONMES 000146' 452370 220206 ASCIZ /JOB CAPACITY EXCEEDED 000147' 406410 141622 000150' 522624 042660 000151' 416130 542212 000152' 420321 200000 / COMCSS - COMMAND COMMON ROUTINES MACRO 10 05:51 24-APR-78 PAGE 7 COMCSS MAC 24-APR-78 01:01 T. HASTINGS 8-15-65 ;ROUTINE TO DEASSIGN A DEVICE ;CALL: MOVE DEVDAT, DEVICE DATA BLOCK ; MOVE ITEM, JOB NUMBER ; PUSHJ DPD, DEASG ; ERROR NOT PREVIOUSLY ASSIGNED ; OK RETURN WITH DEVICE DEASSIGNED INTERNAL DEASG EXTERNAL PJOBN, CPOPJ1 000153' 135500 000000* DEASG: LDB T, PJOBN ;WAS DEVICE ASSIGNED TO THIS JOB? 000154' 312500 000004 CAME T, ITEM 000155' 263140 000000 POPJ PDP, ;NO. RETURN 000156' 205500 400000 MOVSI T,DVDIRIN ;CLEAR DIRECTORY IN CORE BIT 000157' 412506 000004 ANDCAM T,DEVMOD(DEVDAT) 000160' 201500 400000 MOVEI T, ASSCON ;YES, IS ASSIGNED BY CONSOLE BIT ON? 000161' 616506 000004 TDNN T, DEVMOD(DEVDAT) 000162' 263140 000000 POPJ PDP, ;NO 000163' 413506 000004 ANDCAB T,DEVMOD(DEVDAT) ;YES, CLEAR BIT 000164' 402006 000005 SETZM DEVLOG(DEVDAT) ;CLEAR LOGICAL NAME 000165' 602500 200000 TRNE T, ASSPRG ;IS ASSIGNED BY PROGRAM BIT ON? 000166' 254000 000144* JRST CPOPJ1 ;YES 000167' 201500 000000 MOVEI T,0 ;NO, CLEAR JOB NUMBER 000170' 137500 000153* DPB T, PJOBN 000171' 254000 000166* JRST CPOPJ1 ;ROUTINE TO DEASSIGN ALL DEVICES EXCEPT LOGICAL TTY ;CALL: MOVE ITEM, JOB NUMBER ; PUSHJ PDP, DEASTY INTERNAL DEASTY 000172' 205040 646471 DEASTY: MOVSI TAC, 646471 ;SIXBIT /TTY/ ;FALL INTO DEASAL ;ROUTINE TO DEASSIGN ALL DEVICES EXECPT ONE ;CALL: MOVE ITEM, JOB NUMBER ; MOVE TAC, LOGICAL DEVICE NOT TO BE DEASSIGNED ; PUSHJ PDP, DEASAL INTERNAL DEASAL EXTERNAL DEVLST 000173' 261140 000006 DEASAL: PUSH PDP,DEVDAT 000174' 554300 000000* HLRZ DEVDAT,DEVLST ;SEARCH ALL DDBS 000175' 312046 000005 DEA1: CAME TAC, DEVLOG(DEVDAT) ;IS THIS THE LOGICAL NAME 000176' 260140 000153' PUSHJ PDP, DEASG ;NO, TRY TO DEASSIGN IT 000177' 255000 000000 JFCL ;IGNORE IF CANT 000200' 554306 000003 HLRZ DEVDAT, DEVSER(DEVDAT) 000201' 326300 000175' JUMPN DEVDAT, DEA1 000202' 262140 000006 POP PDP,DEVDAT 000203' 263140 000000 POPJ PDP, COMCSS - COMMAND COMMON ROUTINES MACRO 10 05:51 24-APR-78 PAGE 8 COMCSS MAC 24-APR-78 01:01 T. HASTINGS 8-15-65 ;ROUTINE TO READ CONSOLE AND CONVERT ANY RADIX NUMBER ; CALL: MOVE TAC1, DESIRED RADIX ; MOVE TAC, BYTE POINTER TO FIRST CHRACTER ; PUSHJ PDP, ANYRIN ; ERROR EXIT ;AC TAC1=0 IF NO NUMBER BEFORE FIRST NO ; NORMAL EXIT ;AC TAC1 CONTAINS NUMEBR ; SCAN STOPS ON FIRST ILLEGAL CHARACTER OR CR ; IGNORES SPACES, TABS, RUBOUTS INTERNAL OCTIN,ANYRIN,DECIN,DECIN1 EXTERNAL CPOPJ1, CPOPJ 000012 C=BUFPNT ;CHARACTER AC 000013 R=BUFWRD ;RADIX AC 000204' 133000 000001 DECIN1: IBP TAC ;SKIP SEPARATION CHARACTER 000205' 201100 000012 DECIN: MOVEI TAC1,12 ;DECIMAL INPUT 000206' 254000 000210' JRST ANYRIN 000207' 201100 000010 OCTIN: MOVEI TAC1, 10 000210' 200540 000002 ANYRIN: MOVE R, TAC1 000211' 201100 000000 MOVEI TAC1, 0 000212' 260140 000033' PUSHJ PDP, SKIPS1 ;SKIP LEADING SPACES, TABS 000213' 135500 000001 LDB C, TAC 000214' 306500 000015 CAIN C, 15 ;CHECK FOR INITIAL CR 000215' 263140 000000 POPJ PDP, ;EXIT WITH 0 IN TAC1 000216' 302500 000055 OCT0: CAIE C,"-" ;DASH? 000217' 306500 000015 CAIN C,15 ;CR? 000220' 254000 000171* JRST CPOPJ1 ;YES, ONLY LEGAL TERMINATORS 000221' 275500 000060 SUBI C,60 000222' 321500 000224' JUMPL C, OCTE ;ERROR IF NEGATIVE 000223' 311500 000013 CAML C, R ;OR .GE. RADIX 000224' 344100 000111* OCTE: AOJA TAC1,CPOPJ ;ERROR,INSURE TAC1 NON-ZERO 000225' 220100 000013 IMUL TAC1, R 000226' 270100 000012 ADD TAC1, C 000227' 134500 000001 OCT1: ILDB C, TAC 000230' 254000 000216' JRST OCT0 END, NO ERRORS DETECTED PROGRAM BREAK IS 000234 9K CORE USED COMCSS - COMMAND COMMON ROUTINES MACRO 10 05:51 24-APR-78 PAGE 9 COMCSS MAC 24-APR-78 01:01 SYMBOL TABLE A 000000 INT AC1 000015 INT AC2 000016 INT AC3 000017 INT AL 000001 INT ANYRIN 000210' INT ASSCON 400000 INT ASSJB1 000145' ASSJOB 000135' INT ASSPRG 200000 INT B 000014 INT BUFPNT 000012 INT BUFWRD 000013 INT C 000012 CLOSB 002000 INT CLSIN 000002 INT CLSOUT 000001 INT COMERA 000042' INT COMERR 000043' INT CON0 000062' CON1 000066' CONMES 000060' INT CORE1 000120' EXT CPOPJ 000224' EXT CPOPJ1 000220' EXT CRLF 000057' INT CTEX 000024' CTEX0 000011' CTEX1 000012' CTEX2 000020' CTEXT 000004' INT CTEXT1 000000' INT D 000017 INT DAT 000005 INT DCL 000001 INT DCW 020000 INT DDI 000007 INT DDO 000006 INT DDTMEM 000037 INT DDTSYM 000036 INT DEA1 000175' DEASAL 000173' INT DEASG 000153' INT DEASTY 000172' INT DECIN 000205' INT DECIN1 000204' INT DEN 000004 INT DEVADR 000007 INT DEVBUF 000006 INT DEVCHR 000001 INT DEVCTR 000011 INT DEVDAT 000006 INT COMCSS - COMMAND COMMON ROUTINES MACRO 10 05:51 24-APR-78 PAGE 9-1 COMCSS MAC 24-APR-78 01:01 SYMBOL TABLE DEVIAD 000007 INT DEVIOS 000002 INT DEVLOG 000005 INT DEVLST 000174' EXT DEVMOD 000004 INT DEVNAM 000000 INT DEVOAD 000010 INT DEVPTR 000010 INT DEVSER 000003 INT DGF 000012 INT DIN 000003 INT DLK 000005 INT DOU 000002 INT DR 000016 INT DRL 000000 INT DSI 000011 INT DSO 000010 INT DTW 040000 INT DVAVAL 000040 INT DVCDR 100000 INT DVDIR 000004 INT DVDIRI 400000 INT DVIN 000002 INT DVLPT 040000 INT DVMTA 000020 INT DVOUT 000001 INT DVTTY 000010 INT ENTRB 020000 INT ESTOP 000113' EXT I 000010 INT IB 000013 INT IBUFB 200000 INT INITB 400000 INT INPB 010000 INT IO 000020 INT IOACT 010000 INT IOBEG 000002 INT IOBKTL 040000 INT IOCON 000040 INT IODEND 020000 INT IODERR 200000 INT IODISC 400000 INT IODONE 400000 INT IODTER 100000 INT IOEND 000040 INT IOFST 000004 INT IOIMPM 400000 INT IOKILL 000115' EXT IONRCK 000100 INT IORDEL 000100 INT IORET 000020 INT IOS 000000 INT IOSTRT 000010 INT COMCSS - COMMAND COMMON ROUTINES MACRO 10 05:51 24-APR-78 PAGE 9-2 COMCSS MAC 24-APR-78 01:01 SYMBOL TABLE IOUSE 400000 INT IOW 000001 INT IOWC 000020 INT IOWS 400000 INT ITEM 000004 INT JBFADR 000000 INT JBFCTR 000002 INT JBFPTR 000001 INT JBTSTS 000140' EXT JBUF 000005 INT JDAT 000011 INT JERR 002000 INT JIOW 100000 INT JNA 004000 INT JOB0 000100' JOB1 000115' JOBINI 000075' INT JOBK2 000127' JOBKA 000132' JOBKIL 000121' INT JOBZER 000112' INT JOBZR1 000113' LOOKB 040000 INT MJOBN 000135' EXT MONJOB 000114' EXT MTW 010000 INT NOTENF 000070' INT OBUFB 100000 INT OCT0 000216' OCT1 000227' OCTE 000224' OCTIN 000207' INT OUTPB 004000 INT PDP 000003 INT PICHN 000100 INT PJOBN 000170' EXT PROG 000007 INT R 000013 RUN 200000 INT RUNABL 204000 INT SKIPS 000035' INT SKIPS1 000033' INT SKIPSA 000036' T 000012 T1 000013 T2 000014 TAC 000001 INT TAC1 000002 INT TEM 000010 INT TTYATC 020000 INT TTYATT 000100' EXT TTYBUF 000044' EXT TTYKIL 000134' EXT COMCSS - COMMAND COMMON ROUTINES MACRO 10 05:51 24-APR-78 PAGE 9-3 COMCSS MAC 24-APR-78 01:01 SYMBOL TABLE TTYUSE 010000 INT USRMOD 010000 INT UUO 000014 INT CCCCCCCCCCCC OOOOOOOOO MMM MMM IIIIIIIII NNN NNN IIIIIIIII CCCCCCCCCCCC OOOOOOOOO MMM MMM IIIIIIIII NNN NNN IIIIIIIII CCCCCCCCCCCC OOOOOOOOO MMM MMM IIIIIIIII NNN NNN IIIIIIIII CCC OOO OOO MMMMMM MMMMMM III NNN NNN III CCC OOO OOO MMMMMM MMMMMM III NNN NNN III CCC OOO OOO MMMMMM MMMMMM III NNN NNN III CCC OOO OOO MMM MMM MMM III NNNNNN NNN III CCC OOO OOO MMM MMM MMM III NNNNNN NNN III CCC OOO OOO MMM MMM MMM III NNNNNN NNN III CCC OOO OOO MMM MMM III NNN NNN NNN III CCC OOO OOO MMM MMM III NNN NNN NNN III CCC OOO OOO MMM MMM III NNN NNN NNN III CCC OOO OOO MMM MMM III NNN NNNNNN III CCC OOO OOO MMM MMM III NNN NNNNNN III CCC OOO OOO MMM MMM III NNN NNNNNN III CCC OOO OOO MMM MMM III NNN NNN III CCC OOO OOO MMM MMM III NNN NNN III CCC OOO OOO MMM MMM III NNN NNN III CCCCCCCCCCCC OOOOOOOOO MMM MMM IIIIIIIII NNN NNN IIIIIIIII CCCCCCCCCCCC OOOOOOOOO MMM MMM IIIIIIIII NNN NNN IIIIIIIII CCCCCCCCCCCC OOOOOOOOO MMM MMM IIIIIIIII NNN NNN IIIIIIIII LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT Request created: 24-April-1978 05:53:58 File: DSKB0 :COMINI.LST [8,296] Created: 20-April-1967 05:51:00 Printed: 24-April-1978 05:53:33 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:1939 File will be deleted after printing COMINI - THE COMMAND DECODER MACRO 10 05:51 24-APR-78 PAGE 1 S MAC 24-APR-78 21:40 T. HASTINGS 8-2-65 XLIST LIST TITLE COMINI - THE COMMAND DECODER SUBTTL T. HASTINGS 8-2-65 ;CALLED FROM CLOCK ROUTINE WHEN COMCNT IS GREATER THAN 0 ;AS SET BY TTY SERVICE ROUTINE ;ALL ACS HAVE BEEN SAVED BY CLOCK CHANNEL ;THE COMMAND DECODER CALLS TTYCOM WHICH SCANS FOR TTY WHICH TYPED ;THE COMMAND AND THEN DISPATCHES(PUSHJ) TO APPROPRIATE ;COMMAND SETUP ROTUINE OF THE SAME NAME WITH ACS SET AS: ;ITEM = JOB NUMBER ;TAC = BYTE POINTER TO COMMAND STRING(SSPACE OR CR AFTER COMMAND NAME) ;DAT = BYTE POINTER TO LAST OUTPUT CHARACTER ;DEVDAT = ADDRESS OF DEVICE DATA BLOCK TYPING COMMAND ;JDAT = ADDRESS OF JOB AREA, = 0 IF NO JOB AREA ;PROG = ADDRESS OF PROGRAM AREA ;DEVDAT IS ALSO PUSHED ON END OF PD LIST SO IT MAY BE DESTROYED ;UPON RETURN FROM COMMAND SETUP ROUTINE. A CR-LF IS ADDED TO ;MASSAGE AND TTY IS STARTED ON TTY SPCIFIED BY -1(PDP) ;SINCE THE COMMAND DECODER IS CALLED FROM CLOCK ROUTINE ;COMMAND SETUP ROUTINE MUST RUN TO COMPLETION QUICKLY ;IF A COMMAND FUNCTION CANNON DO THIS. IT MUST JUST SET ;THE JOB TO RUNABLE STATUS AND RETURN IMMEDIATELY INTERNAL COMMAND EXTERNAL TTYCOM,TTYSTR,CTEXT,JBTADR,CONMES EXTERNAL COMERR,COMCNT EXTERNAL JOBINI,CRLF,CTEXT,RADX10,ASSJOB,JBTSTS 000012 T=BUFPNT ;TEMPORARY ACS 000013 T1=BUFWRD COMINI - THE COMMAND DECODER MACRO 10 05:51 24-APR-78 PAGE 2 COMINI MAC 24-APR-78 03:49 T. HASTINGS 8-2-65 000000' 260140 000000* COMMAND: PUSHJ PDP, TTYCOM ;SETUP DEVDAT,DAT,TAC, AND ITEM 000001' 254000 000041' JRST COM2 ;NONE FOUND 000002' 261140 000006 PUSH PDP,DEVDAT ;SAVE TTY DDB ADDRESS 000003' 260140 000000* PUSHJ PDP, CTEXT ;RETURN COMMAND NAME IN TAC1 000004' 322100 000043' JUMPE TAC1, COM2A ;IGNORE BLANK LINE 000005' 205500 777760 MOVSI T, -DISPL ;SEARCH FOR COMMAND NAME 000006' 312112 000074' CAME TAC1, COMTAB(T) 000007' 253500 000006' AOBJN T, .-1 000010' 325500 000047' JUMPGE T,COM2B ;WAS COMMAND FOUND? 000011' 200112 000114' MOVE TAC1,DISP(T) ;YES, GET DISPATCH ADDRESS AND BITS 000012' 326200 000026' JUMPN ITEM, COM1 ;HAS A JOB NUMBER BEEN ASSIGNED 000013' 603100 200000 TLNE TAC1,NOJOBN ;NO, IS A JOB NUMBER NEEDED FOR THIS CO 000014' 254000 000026' JRST COM1 ;NO 000015' 260140 000000* PUSHJ PDP,ASSJOB ;TRY TO ASSIGN A FREE JOB NUMBER 000016' 254000 000067' JRST COM3A ;NONE AVAILABLE, ERROR MESSAGE COMINI - THE COMMAND DECODER MACRO 10 05:51 24-APR-78 PAGE 3 COMINI MAC 24-APR-78 03:49 T. HASTINGS 8-2-65 000017' 261140 000001 PUSH PDP, TAC ;SAVE INPUT BYTE POINTER 000020' 261140 000002 PUSH PDP,TAC1 ;SAVE ADDRESS OF COMMAND ROUTINE 000021' 403340 000011 SETZB PROG,JDAT ;NO CORE, CLEAR REL. ADRESS 000022' 260140 000000* PUSHJ PDP,JOBINI ;INITIALIZE JOB 000023' 262140 000002 POP PDP,TAC1 ;RESTORE ADR OF COMMAND ROUTINE 000024' 262140 000001 POP PDP, TAC ;RESTORE INPUT BYTE POINTER 000025' 202303 000000 MOVEM DEVDAT,(PDP) ;SET ADDRESS OF TTY DEV. DATA BLOCK 000026' 550444 000000* COM1: HRRZ JDAT, JBTADR(ITEM) ;AND JOB DATA AREA 000027' 336340 000011 SKIPN PROG,JDAT ;SET PROG. DOES JOB HAVE CORE? 000030' 603100 400000 TLNE TAC1,NOCORE ;NO. IS CORE NEEDED FOR THIS COMMAND? 000031' 254000 000035' JRST COM1C ;NO 000032' 201040 000051' MOVEI TAC,NOCOR ;YES, PRINT "NO CORE ASSIGNED" 000033' 260140 000000* COM1B: PUSHJ PDP,CONMES 000034' 254000 000036' JRST COM1A 000035' 260142 000000 COM1C: PUSHJ PDP,(TAC1) ;DISPATCH TO COMMAND SETUP ROUTINE 000036' 326200 000055' COM1A: JUMPN ITEM, COM3 ;ADD CR-LF AND CHECK FOR JOB INIT. 000037' 262140 000006 COM1D: POP PDP,DEVDAT ;RESTORE TTY DDB ADDRESS 000040' 260140 000000* PUSHJ PDP, TTYSTR ;START OUTPUT, IF ANY 000041' 370000 000000* COM2: SOS COMCNT ;DECREMENT COMMAND COUNT 000042' 263140 000000 POPJ PDP, ;EXIT 000043' 135100 000001 COM2A: LDB TAC1, TAC ;NULL FIELD. WAS BREAK CHAR. A CR? 000044' 302100 000015 CAIE TAC1,15 ;A CR? 000045' 306100 000073 CAIN TAC1,";" ;OR A SEMI COLON? 000046' 254000 000037' JRST COM1D ;YES. IGNORE LINE 000047' 260140 000000* COM2B: PUSHJ PDP,COMERR ;NO. PRINT MONITOR COMMAND ERROR 000050' 254000 000037' JRST COM1D 000051' 472364 041636 NOCOR: ASCIZ /NO CORE ASSIGNED 000052' 512124 040646 000053' 516230 747212 000054' 420321 200000 / 000055' 200044 000000* COM3: MOVE TAC,JBTSTS(ITEM) ;GET STATUS WORD 000056' 663040 004000 TLOE TAC,JNA ;IS JOB NO ASSIGNED BIT ON YET 000057' 254000 000067' JRST COM3A ;YES, JOB INIT. BEFORE 000060' 202044 000055* MOVEM TAC,JBTSTS(ITEM) 000061' 201040 000134' MOVEI TAC,[ASCIZ /JOB /] 000062' 260140 000033* PUSHJ PDP,CONMES ;PRINT JOB N INITIALIZED 000063' 200040 000004 MOVE TAC,ITEM 000064' 260140 000000* PUSHJ PDP,RADX10 ;PRINT JOB NUMBER 000065' 201040 000071' MOVEI TAC,JOBM 000066' 260140 000062* PUSHJ PDP,CONMES 000067' 260140 000000* COM3A: PUSHJ PDP,CRLF 000070' 254000 000037' JRST COM1D 000071' 202231 644650 JOBM: ASCIZ / INITIALIZED 000072' 446031 444664 000073' 426101 505000 / COMINI - THE COMMAND DECODER MACRO 10 05:51 24-APR-78 PAGE 4 COMINI MAC 24-APR-78 03:49 T. HASTINGS 8-2-65 ;TABLE OF CONSOLE COMMANDS. 400000 NOCORE=400000 ;NO CORE NEEDED FOR COMMAND 200000 NOJOBN=200000 ;NO JOB NUMBER NEEDED FOR COMMAND DEFINE NAMES C CORE,CORE,NOCORE C GET,GET,0 C START,START,0 C IJOB,IJOB,NOCORE+NOJOBN C PJOB,PJOB,NOCORE C KJOB,KJOB,NOCORE C SAVE,SAVE,0 REPEAT 0,< C RESAVE,COMERR,0 > C CONT,CONT,0 C DDT,DDTGO,0 C ASSIGN,ASSIGN,NOCORE C DEASSI,DEASSIGN,NOCORE C STARTC,STARTC,0 C CONTC,CONTC,0 C DETACH,DETACH,NOCORE+NOJOBN C ATTACH,ATTACH,NOCORE+NOJOBN REPEAT 0,< C MTAPE,COMERR,0 C DAYTIM,COMERR,NOCORE C RUNTIM,COMERR,NOCORE C TOTTIM,COMERR,NOCORE C NULTIM,COMERR,NOCRE C SYSDDT,COMERR,NOCORE C SYSMAK,SYSMAK,0 > C DIGITAL,DIGITAL,NOCORE+NOJOBN > COMINI - THE COMMAND DECODER MACRO 10 05:51 24-APR-78 PAGE 5 COMINI MAC 24-APR-78 03:49 T. HASTINGS 8-2-65 ;GENERATE TABLE OF SIXBIT COMMAND NAMES DEFINE C(A,B,C) < ZZ=.+1 SIXBIT /A/ IFN .-ZZ, ;ONLY FIRST 6 CHARACTERS > COMTAB: NAMES^REPEAT 0,< C G,COMERR,0 > 000074' 435762 450000 SIXBIT /CORE/ 000075' 474564 000000 SIXBIT /GET/ 000076' 636441 626400 SIXBIT /START/ 000077' 515257 420000 SIXBIT /IJOB/ 000100' 605257 420000 SIXBIT /PJOB/ 000101' 535257 420000 SIXBIT /KJOB/ 000102' 634166 450000 SIXBIT /SAVE/ 000103' 435756 640000 SIXBIT /CONT/ 000104' 444464 000000 SIXBIT /DDT/ 000105' 416363 514756 SIXBIT /ASSIGN/ 000106' 444541 636351 SIXBIT /DEASSI/ 000107' 636441 626443 SIXBIT /STARTC/ 000110' 435756 644300 SIXBIT /CONTC/ 000111' 444564 414350 SIXBIT /DETACH/ 000112' 416464 414350 SIXBIT /ATTACH/ 000113' 445147 516441 SIXBIT /DIGITAL/ 000114' 540000 000000 000020 DISPL=.-COMTAB ;LENTH OF TABLE COMINI - THE COMMAND DECODER MACRO 10 05:51 24-APR-78 PAGE 6 COMINI MAC 24-APR-78 03:49 T. HASTINGS 8-2-65 ;GENERATE THE DISPATCH TABLE DEFINE C(A,B,C) < XWD C,B EXTERNAL B > DISP: NAMES^REPEAT 0,< C G,COMERR,0 > 000114' 400000 000000* C CORE,CORE,NOCORE^ XWD NOCORE,CORE 000115' 000000 000000* C GET,GET,0^ XWD 0,GET 000116' 000000 000000* C START,START,0^ XWD 0,START 000117' 600000 000000* C IJOB,IJOB,NOCORE+NOJOBN^ XWD NOCORE+NOJOBN,IJOB 000120' 400000 000000* C PJOB,PJOB,NOCORE^ XWD NOCORE,PJOB 000121' 400000 000000* C KJOB,KJOB,NOCORE^ XWD NOCORE,KJOB 000122' 000000 000000* C SAVE,SAVE,0^ XWD 0,SAVE 000123' 000000 000000* C CONT,CONT,0^ XWD 0,CONT 000124' 000000 000000* C DDT,DDTGO,0^ XWD 0,DDTGO 000125' 400000 000000* C ASSIGN,ASSIGN,NOCORE^ XWD NOCORE,ASSIGN 000126' 400000 000000* C DEASSI,DEASSIGN,NOCORE^ XWD NOCORE,DEASSIGN 000127' 000000 000000* C STARTC,STARTC,0^ XWD 0,STARTC 000130' 000000 000000* C CONTC,CONTC,0^ XWD 0,CONTC 000131' 600000 000000* C DETACH,DETACH,NOCORE+NOJOBN^ XWD NOCORE+NOJOBN,DETACH 000132' 600000 000000* C ATTACH,ATTACH,NOCORE+NOJOBN^ XWD NOCORE+NOJOBN,ATTACH 000133' 600000 000000* C DIGITAL,DIGITAL,NOCORE+NOJOBN^ XWD NOCORE+NOJOBN,DIGITAL END, NO ERRORS DETECTED PROGRAM BREAK IS 000135 9K CORE USED COMINI - THE COMMAND DECODER MACRO 10 05:51 24-APR-78 PAGE 7 COMINI MAC 24-APR-78 03:49 SYMBOL TABLE A 000000 INT AC1 000015 INT AC2 000016 INT AC3 000017 INT AL 000001 INT ASSCON 400000 INT ASSIGN 000125' EXT ASSJOB 000015' EXT ASSPRG 200000 INT ATTACH 000132' EXT B 000014 INT BUFPNT 000012 INT BUFWRD 000013 INT CLOSB 002000 INT CLSIN 000002 INT CLSOUT 000001 INT COM1 000026' COM1A 000036' COM1B 000033' COM1C 000035' COM1D 000037' COM2 000041' COM2A 000043' COM2B 000047' COM3 000055' COM3A 000067' COMCNT 000041' EXT COMERR 000047' EXT COMMAN 000000' INT COMTAB 000074' CONMES 000066' EXT CONT 000123' EXT CONTC 000130' EXT CORE 000114' EXT CRLF 000067' EXT CTEXT 000003' EXT D 000017 INT DAT 000005 INT DCL 000001 INT DCW 020000 INT DDI 000007 INT DDO 000006 INT DDTGO 000124' EXT DDTMEM 000037 INT DDTSYM 000036 INT DEASSI 000126' EXT DEN 000004 INT DETACH 000131' EXT DEVADR 000007 INT DEVBUF 000006 INT DEVCHR 000001 INT COMINI - THE COMMAND DECODER MACRO 10 05:51 24-APR-78 PAGE 7-1 COMINI MAC 24-APR-78 03:49 SYMBOL TABLE DEVCTR 000011 INT DEVDAT 000006 INT DEVIAD 000007 INT DEVIOS 000002 INT DEVLOG 000005 INT DEVMOD 000004 INT DEVNAM 000000 INT DEVOAD 000010 INT DEVPTR 000010 INT DEVSER 000003 INT DGF 000012 INT DIGITA 000133' EXT DIN 000003 INT DISP 000114' DISPL 000020 DLK 000005 INT DOU 000002 INT DR 000016 INT DRL 000000 INT DSI 000011 INT DSO 000010 INT DTW 040000 INT DVAVAL 000040 INT DVCDR 100000 INT DVDIR 000004 INT DVDIRI 400000 INT DVIN 000002 INT DVLPT 040000 INT DVMTA 000020 INT DVOUT 000001 INT DVTTY 000010 INT ENTRB 020000 INT GET 000115' EXT I 000010 INT IB 000013 INT IBUFB 200000 INT IJOB 000117' EXT INITB 400000 INT INPB 010000 INT IO 000020 INT IOACT 010000 INT IOBEG 000002 INT IOBKTL 040000 INT IOCON 000040 INT IODEND 020000 INT IODERR 200000 INT IODISC 400000 INT IODONE 400000 INT IODTER 100000 INT IOEND 000040 INT IOFST 000004 INT IOIMPM 400000 INT IONRCK 000100 INT COMINI - THE COMMAND DECODER MACRO 10 05:51 24-APR-78 PAGE 7-2 COMINI MAC 24-APR-78 03:49 SYMBOL TABLE IORDEL 000100 INT IORET 000020 INT IOS 000000 INT IOSTRT 000010 INT IOUSE 400000 INT IOW 000001 INT IOWC 000020 INT IOWS 400000 INT ITEM 000004 INT JBFADR 000000 INT JBFCTR 000002 INT JBFPTR 000001 INT JBTADR 000026' EXT JBTSTS 000060' EXT JBUF 000005 INT JDAT 000011 INT JERR 002000 INT JIOW 100000 INT JNA 004000 INT JOBINI 000022' EXT JOBM 000071' KJOB 000121' EXT LOOKB 040000 INT MTW 010000 INT NOCOR 000051' NOCORE 400000 NOJOBN 200000 OBUFB 100000 INT OUTPB 004000 INT PDP 000003 INT PICHN 000100 INT PJOB 000120' EXT PROG 000007 INT RADX10 000064' EXT RUN 200000 INT RUNABL 204000 INT SAVE 000122' EXT START 000116' EXT STARTC 000127' EXT T 000012 T1 000013 TAC 000001 INT TAC1 000002 INT TEM 000010 INT TTYATC 020000 INT TTYCOM 000000' EXT TTYSTR 000040' EXT TTYUSE 010000 INT USRMOD 010000 INT UUO 000014 INT ZZ 000114' CCCCCCCCCCCC OOOOOOOOO RRRRRRRRRRRR EEEEEEEEEEEEEEE CCCCCCCCCCCC OOOOOOOOO RRRRRRRRRRRR EEEEEEEEEEEEEEE CCCCCCCCCCCC OOOOOOOOO RRRRRRRRRRRR EEEEEEEEEEEEEEE CCC OOO OOO RRR RRR EEE CCC OOO OOO RRR RRR EEE CCC OOO OOO RRR RRR EEE CCC OOO OOO RRR RRR EEE CCC OOO OOO RRR RRR EEE CCC OOO OOO RRR RRR EEE CCC OOO OOO RRRRRRRRRRRR EEEEEEEEEEEE CCC OOO OOO RRRRRRRRRRRR EEEEEEEEEEEE CCC OOO OOO RRRRRRRRRRRR EEEEEEEEEEEE CCC OOO OOO RRR RRR EEE CCC OOO OOO RRR RRR EEE CCC OOO OOO RRR RRR EEE CCC OOO OOO RRR RRR EEE CCC OOO OOO RRR RRR EEE CCC OOO OOO RRR RRR EEE CCCCCCCCCCCC OOOOOOOOO RRR RRR EEEEEEEEEEEEEEE CCCCCCCCCCCC OOOOOOOOO RRR RRR EEEEEEEEEEEEEEE CCCCCCCCCCCC OOOOOOOOO RRR RRR EEEEEEEEEEEEEEE LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT Request created: 24-April-1978 05:53:58 File: DSKB0 :CORE .LST [8,296] Created: 20-April-1967 05:51:00 Printed: 24-April-1978 05:53:33 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:1930 File will be deleted after printing CORE - CORE ALLOCATION ROUTINE MACRO 10 05:51 24-APR-78 PAGE 1 S MAC 24-APR-78 21:40 G. BELL 6-29-65 XLIST LIST TITLE CORE - CORE ALLOCATION ROUTINE SUBTTL G. BELL 6-29-65 ; PUSHJ PDP, CORE1 ;ITEM = JOB #. TAC = 1K CORE BLOCKS ;REQUESTED ; RET1 ;OLD CORE RETURNED. ; RET2 ;OLD CORE RETURNED. JBTADR, JOBREL ARE ;SET UP ; JBADR (ITEM) = POINTER TO JOB AREA. JOBREL (JBTADR) = HIGHEST LOCAT ; C(RH) JBTADR IS SET OT 0 OR REQUESTED CORE. JOBREL IS SET IF CORE G ; NOT A PURE PROCEDURE ... ;CORTAL: 0 ;COUNT OF FREE CORE ;CORTAB: BLOCK ^D3 ;TABLE OF 72 BITS. 1 BIT FOR ;1K OF CORE. 1 = USED. 0 = FREE ;CORLST: POINT 1, CORTAB, 32 ;POINTER FIRST OUT OF BOUNDS ; ;TEMPORARY USAGE 000000' 000000 000000 CORUSZ: 0 ;SIZE OF USERS CODE, OLD.-NEW 000001' 000000 000000 CORLOC: 0 ;POSITION OF 1ST FREE BLOCK ; ;AC ASSIGNMENTS 000012 COR1=BUFPNT 000013 COR2=BUFWRD 000014 COR3=UUO INTERNAL CORE1 EXTERNAL JBTADR,JOBREL,CORLST,CORTAL,CORTAB CORE - CORE ALLOCATION ROUTINE MACRO 10 05:51 24-APR-78 PAGE 2 CORE MAC 24-APR-78 22:34 G. BELL 6-29-65 000002' 135500 000042' CORE1: LDB COR1, CORE1P 000003' 202500 000001' MOVEM COR1, CORLOC 000004' 322500 000013' JUMPE COR1, CORGET ;IF 0 NO CORE NOEW. 000005' 554504 000000* HLRZ COR1, JBTADR(ITEM) ;CLEAR OLD CORE 000006' 350000 000012 AOS COR1 ;HIGHEST ADDRESS AVAIL. FORM 000007' 240500 777766 ASH COR1, -^D10 000010' 202500 000000' MOVEM COR1, CORUSZ 000011' 402000 000014 CORRET: CLEARM COR3 ;RETURN OLD CORE 000012' 260140 000056' PUSHJ PDP, CORSTG 000013' 402004 000005* CORGET: SETZM JBTADR(ITEM) ;CLEAR JOB ADDRESS TO 0 000014' 322040 000037' JUMPE TAC, COROK ;IF NO CORE TO GET, RETURN 000015' 200600 000043' MOVE COR3, CORE2P ;SET UP FOR 000016' 476000 000001' SETOM CORLOC ;HOLE SEARCH 000017' 260140 000044' CORG1: PUSHJ PDP, CORHOL 000020' 254000 000040' JRST CORNG ;UNSUCCESSFUL SEARCH 000021' 315500 000001 CAMGE COR1, TAC ;HOLE FOUND 000022' 254000 000017' JRST CORG1 000023' 213000 000012 CORGVE: MOVNS COR1 ;BACKUP CORLOC 000024' 272500 000001' ADDM COR1, CORLOC 000025' 202040 000000' MOVEM TAC, CORUSZ ;RESERVE HOLD FOR JOB 000026' 201600 000001 MOVEI COR3, 1 ;SET CORTAB 000027' 260140 000056' PUSHJ PDP, CORSTG 000030' 200500 000001' MOVE COR1, CORLOC ;C(RH)=RELOC, C(LH)=PROTECT 000031' 240500 000012 ASH COR1, ^D10 000032' 542504 000013* HRRM COR1, JBTADR(ITEM) 000033' 240040 000012 ASH TAC, ^D10 000034' 275040 000001 SUBI TAC, 1 000035' 542052 000000* HRRM TAC, JOBREL (COR1) 000036' 506044 000032* HRLM TAC,JBTADR(ITEM) 000037' 350003 000000 COROK: AOS (PDP) 000040' 200040 000000* CORNG: MOVE TAC, CORTAL 000041' 263140 000000 POPJ PDP, 000042' 121004 000036* CORE1P: POINT 8, JBTADRR(ITEM),25 000043' 440100 000000* CORE2P: POINT 1, CORTAB CORE - CORE ALLOCATION ROUTINE MACRO 10 05:51 24-APR-78 PAGE 3 CORE MAC 24-APR-78 22:34 G. BELL 6-29-65 ; PUSHJ PDP, CORHOL ;COR1-HOLES FREE, COR2=TEMP ; RETURN1 ;COR3=POINTER. RETURN1=END OF STRING RE ; RETURN2 ;HOLE FOUND. ; CORLOC CONTAINS 0,1.. N, THE CORE BLK PTR. CORLST IS PTR TO ; STOP STRING TEST 000044' 402000 000012 CORHOL: CLEARM COR1 000045' 316600 000000* CORH01: CAMN COR3, CORLST ;TEST DONE 000046' 263140 000000 POPJ PDP, 000047' 134540 000014 ILDB COR2, COR3 ;TEST NEXT BLOCK 000050' 350000 000001' AOS CORLOC 000051' 336000 000013 SKIPN COR2 000052' 344500 000045' AOJA COR1, CORH01 ;COUNT FREE 000053' 322500 000045' JUMPE COR1, CORH01 000054' 350003 000000 AOS (PDP) 000055' 263140 000000 POPJ PDP, ;; PUSHJ PDP, CORSTG ;CORUSZ=SIZE RESERVED. CORLOC=LOCATION ; IF COR3=0, THEN FREE CORE ; IF COR3=1, THEN RESERVE CORE. ; USES COR1, COR2, COR3 ; CORTAL=COUNT OF FREE CORE. AND IS UPDATED 000056' 261140 000001 CORSTG: PUSH PDP, TAC ;SAVE NO. OF BLOCKS BEING REQ 000057' 200540 000000' MOVE COR2,CORUSZ ;FIX CORTALLY 000060' 332000 000014 SKIPE COR3 000061' 213000 000013 MOVNS COR2 000062' 272540 000040* ADDM COR2, CORTAL 000063' 200040 000001' MOVE TAC, CORLOC ;GET POINTER-1 000064' 231040 000044 IDIVI TAC, ^D36 ;TAC=WORD,TAC1=BIT 000065' 270040 000076' ADD TAC, CORLP1 ;FORM BYTE POINTER 000066' 213000 000002 MOVNS TAC1 000067' 271100 000044 ADDI TAC1, ^D36 000070' 137100 000077' DPB TAC1, [POINT 6, TAC, 5] 000071' 200540 000000' MOVE COR2, CORUSZ 000072' 136600 000001 CORLOP: DPBI COR3, TAC ;SET OR CLEAR EACH BIT IN USE 000073' 367540 000072' SOJG COR2, CORLOP 000074' 262140 000001 POP PDP, TAC 000075' 263140 000000 POPJ PDP, 000076' 000100 000043* CORLP1: XWD 100, CORTAB END, NO ERRORS DETECTED PROGRAM BREAK IS 000100 9K CORE USED CORE - CORE ALLOCATION ROUTINE MACRO 10 05:51 24-APR-78 PAGE 4 CORE MAC 24-APR-78 22:34 SYMBOL TABLE A 000000 INT AC1 000015 INT AC2 000016 INT AC3 000017 INT AL 000001 INT ASSCON 400000 INT ASSPRG 200000 INT B 000014 INT BUFPNT 000012 INT BUFWRD 000013 INT CLOSB 002000 INT CLSIN 000002 INT CLSOUT 000001 INT COR1 000012 COR2 000013 COR3 000014 CORE1 000002' INT CORE1P 000042' CORE2P 000043' CORG1 000017' CORGET 000013' CORGVE 000023' CORH01 000045' CORHOL 000044' CORLOC 000001' CORLOP 000072' CORLP1 000076' CORLST 000045' EXT CORNG 000040' COROK 000037' CORRET 000011' CORSTG 000056' CORTAB 000076' EXT CORTAL 000062' EXT CORUSZ 000000' D 000017 INT DAT 000005 INT DCL 000001 INT DCW 020000 INT DDI 000007 INT DDO 000006 INT DDTMEM 000037 INT DDTSYM 000036 INT DEN 000004 INT DEVADR 000007 INT DEVBUF 000006 INT DEVCHR 000001 INT DEVCTR 000011 INT DEVDAT 000006 INT DEVIAD 000007 INT DEVIOS 000002 INT DEVLOG 000005 INT CORE - CORE ALLOCATION ROUTINE MACRO 10 05:51 24-APR-78 PAGE 4-1 CORE MAC 24-APR-78 22:34 SYMBOL TABLE DEVMOD 000004 INT DEVNAM 000000 INT DEVOAD 000010 INT DEVPTR 000010 INT DEVSER 000003 INT DGF 000012 INT DIN 000003 INT DLK 000005 INT DOU 000002 INT DR 000016 INT DRL 000000 INT DSI 000011 INT DSO 000010 INT DTW 040000 INT DVAVAL 000040 INT DVCDR 100000 INT DVDIR 000004 INT DVDIRI 400000 INT DVIN 000002 INT DVLPT 040000 INT DVMTA 000020 INT DVOUT 000001 INT DVTTY 000010 INT ENTRB 020000 INT I 000010 INT IB 000013 INT IBUFB 200000 INT INITB 400000 INT INPB 010000 INT IO 000020 INT IOACT 010000 INT IOBEG 000002 INT IOBKTL 040000 INT IOCON 000040 INT IODEND 020000 INT IODERR 200000 INT IODISC 400000 INT IODONE 400000 INT IODTER 100000 INT IOEND 000040 INT IOFST 000004 INT IOIMPM 400000 INT IONRCK 000100 INT IORDEL 000100 INT IORET 000020 INT IOS 000000 INT IOSTRT 000010 INT IOUSE 400000 INT IOW 000001 INT IOWC 000020 INT IOWS 400000 INT ITEM 000004 INT JBFADR 000000 INT CORE - CORE ALLOCATION ROUTINE MACRO 10 05:51 24-APR-78 PAGE 4-2 CORE MAC 24-APR-78 22:34 SYMBOL TABLE JBFCTR 000002 INT JBFPTR 000001 INT JBTADR 000042' EXT JBUF 000005 INT JDAT 000011 INT JERR 002000 INT JIOW 100000 INT JNA 004000 INT JOBREL 000035' EXT LOOKB 040000 INT MTW 010000 INT OBUFB 100000 INT OUTPB 004000 INT PDP 000003 INT PICHN 000100 INT PROG 000007 INT RUN 200000 INT RUNABL 204000 INT TAC 000001 INT TAC1 000002 INT TEM 000010 INT TTYATC 020000 INT TTYUSE 010000 INT USRMOD 010000 INT UUO 000014 INT DDDDDDDDDDDD TTTTTTTTTTTTTTT SSSSSSSSSSSS EEEEEEEEEEEEEEE RRRRRRRRRRRR 222222222 DDDDDDDDDDDD TTTTTTTTTTTTTTT SSSSSSSSSSSS EEEEEEEEEEEEEEE RRRRRRRRRRRR 222222222 DDDDDDDDDDDD TTTTTTTTTTTTTTT SSSSSSSSSSSS EEEEEEEEEEEEEEE RRRRRRRRRRRR 222222222 DDD DDD TTT SSS EEE RRR RRR 222 222 DDD DDD TTT SSS EEE RRR RRR 222 222 DDD DDD TTT SSS EEE RRR RRR 222 222 DDD DDD TTT SSS EEE RRR RRR 222 DDD DDD TTT SSS EEE RRR RRR 222 DDD DDD TTT SSS EEE RRR RRR 222 DDD DDD TTT SSSSSSSSS EEEEEEEEEEEE RRRRRRRRRRRR 222 DDD DDD TTT SSSSSSSSS EEEEEEEEEEEE RRRRRRRRRRRR 222 DDD DDD TTT SSSSSSSSS EEEEEEEEEEEE RRRRRRRRRRRR 222 DDD DDD TTT SSS EEE RRR RRR 222 DDD DDD TTT SSS EEE RRR RRR 222 DDD DDD TTT SSS EEE RRR RRR 222 DDD DDD TTT SSS EEE RRR RRR 222 DDD DDD TTT SSS EEE RRR RRR 222 DDD DDD TTT SSS EEE RRR RRR 222 DDDDDDDDDDDD TTT SSSSSSSSSSSS EEEEEEEEEEEEEEE RRR RRR 222222222222222 DDDDDDDDDDDD TTT SSSSSSSSSSSS EEEEEEEEEEEEEEE RRR RRR 222222222222222 DDDDDDDDDDDD TTT SSSSSSSSSSSS EEEEEEEEEEEEEEE RRR RRR 222222222222222 LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT Request created: 24-April-1978 05:53:58 File: DSKB0 :DTSER2.LST [8,296] Created: 20-April-1967 05:51:00 Printed: 24-April-1978 05:53:33 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:1924 File will be deleted after printing DTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING MACRO 10 05:51 24-APR-78 PAGE 1 S MAC 24-APR-78 21:40 L. HANTMANN 8-2-65 MULTIPLE DIRECTORIES VERSION XLIST LIST TITLE DTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING SUBTTL L. HANTMANN 8-2-65 MULTIPLE DIRECTORIES VERSION 000001 DTSIZ=1 ;SUBROUTINE FOR DIRECTORY SEARCH ;PROG CONTAINS ACTUAL START OF PROGRAM ;DEVDAT CONTAINS ACTUAL START OF DVDB ;UUO CONTAINS RELATIVE ADDRESS OF DIRECTORY ENTRY IN USER AREA ;FORMAT PUSHJ PDP, UDIRSH ; JRST X ;RETURN IF EMPTY ENTRY FOUND ; NORMAL RETURN WHEN ENTRY IS FOUND INTERNAL ULOOK, UENTER EXTERNAL UXIT,PUUOAC,IOIERR,DIRERR,ADRCK,CPOPJ1,THSDAT 000004 UDIRLN=4 000100 UDIRIN=100 ;DIRECTORY IN 000200 UDIREN=200 ;DIRECTORY ENTERED INTO 000400 UNWFRE=400 ;FREE BLCOK POINTER CHANGED 001000 ULINKF=1000 ;LAST OUTPUT BLOCK LINKED TO STORAGE 000001 UX1=TAC 000002 UX2=TAC1 000005 UX3=DAT 000000' 602600 777760 UDIRSH: TRNE UUO,777760 ;IS BLOCK IN UUO ACS? 000001' 260140 000000* PUSHJ PDP,ADRCK ;NO. CHECK ADDRESS 000002' 201054 000003 MOVEI TAC,3(UUO) 000003' 603000 000002 TLNE IOS,IOBEG 000004' 260140 000343' PUSHJ PDP, UBEG 000005' 550040 000007 HRRZ UX1, PROG ;COPY ADR OF START OF PROGRAM 000006' 272040 000014 ADDM UX1, UUO ;ACTUAL START OF DIR. IN USER 000007' 201066 000000* MOVEI UX1,@UDIR(DEVDAT) ;ACTUAL POINTER TO DIRECTORY 000010' 550101 000000 HRRZ UX2, 0(UX1) ;RELATIVE ADDR OF 1ST ENTRY I ;DIRECTORY 000011' 505042 777603 HRLI UX1, -^D129+UDIRLN(UX2) ;ENTRY COUNTER 000012' 272100 000001 ADDM UX2, UX1 ;START OF 1ST ENTRY IN DIRECT 000013' 332000 000002 SKIPE UX2 000014' 303100 000174 CAILE UX2,174 ;IS THE REL ADR OF 1ST ENTRY INSIDE BUF 000015' 254000 000000* JRST DIRERR ;NO 000016' 336101 000000 UDIR2: SKIPN UX2, 0 (UX1) ;FIRST WORD OF ENTRY 000017' 263140 000000 POPJ PDP, ;SPACES FOUND 000020' 316114 000000 CAMN UX2, 0(UUO) ;CHECK IF = TO USER AREA 000021' 254000 000026' JRST UDIR4 ;CHECK 2ND WORD 000022' 270040 000034' UDIR3: ADD UX1, UDIRK1 000023' 321040 000016' JUMPL UX1, UDIR2 000024' 262140 000001 POP PDP, UX1 ;TAKE PREVIOUS EXIT FROM TABL 000025' 254000 000000* JRST UXIT ;TABLE FULL 000026' 554114 000001 UDIR4: HLRZ UX2, 1 (UUO) ;2ND WORD IN USER ARE 000027' 322100 000000* JUMPE UX2, CPOPJ1 000030' 554241 000001 HLRZ UX3, 1 (UX1) ;2ND WORD OF DIRECTORY AREA 000031' 302242 000000 CAIE UX3, 0 (UX2) 000032' 254000 000022' JRST UDIR3 ;CHECK MORE ENTRIES 000033' 254000 000027* JRST CPOPJ1 ;MATCH, SKIP RETURN 000034' 000004 000004 UDIRK1: XWD UDIRLN, UDIRLN DTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING MACRO 10 05:51 24-APR-78 PAGE 2 DTSER2 MAC 24-APR-78 02:46 L. HANTMANN 8-2-65 MULTIPLE DIRECTORIES VERSION ;SUBROUTINE FOR DIRECTORY LOOKUP ;FORMAT PUSHJ PDP, UDIRLU ;VIA UUO ; JRST X ;ENTRY NOT IN TABLE 000035' 260140 000000' ULOOK: PUSHJ PDP, UDIRSH 000036' 254000 000025* JRST UXIT 000037' 540241 000001 HRR UX3, 1 (UX1) 000040' 506246 000007 HRLM UX3, DEVIAD (DEVDAT) 000041' 505101 000000 ULOOK1: HRLI UX2, 0 (UX1) ;FROM DIRECTORY 000042' 541114 000000 HRRI UX2, 0 (UUO) ;TO USER 000043' 251114 000003 BLT UX2, UDIRLN-1(UUO) 000044' 135100 001272' LDB UX2,[POINT 12,2(UX1),35] ;GET DATE USER(ENTER)EXEC(LOO 000045' 326100 000050' JUMPN UX2,.+3 ;IS IT 0? 000046' 200100 000000* MOVE UX2,THSDAT ;YES, USE CURRENT DATE 000047' 137100 001273' DPB UX2,[POINT 12,2(UUO),35] ;SET EXEC 000050' 350003 000000 AOS (PDP) 000051' 254000 000311' JRST UTWDR ;SUBROUTINE TO ENTER NEW OR CHANGE OLD DIRECTORY ENTRY ;FORMAT PUSHJ PDP, UDIRCH ; JRST X ;NO ROOM IN TABLE 000052' 260140 000000' UENTER: PUSHJ PDP, UDIRSH 000053' 254000 000054' JRST .+1 000054' 350246 000000* AOS UX3, UFREE (DEVDAT) 000055' 542254 000001 HRRM UX3,1(UUO) 000056' 506246 000010 HRLM UX3, DEVOAD (DEVDAT) 000057' 250040 000014 EXCH UX1, UUO 000060' 661000 001600 TLO IOS, UDIREN+UNWFRE+ULINKF 000061' 202006 000002 MOVEM IOS, DEVIOS(DEVDAT) 000062' 254000 000041' JRST ULOOK1 DTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING MACRO 10 05:51 24-APR-78 PAGE 3 DTSER2 MAC 24-APR-78 02:46 L. HANTMANN 8-2-65 MULTIPLE DIRECTORIES VERSION ;CREATE A CLEAN TAPE AND DIRECTORY INTERNAL UTPCLR EXTERNAL USRJDA 000063' 135040 000000* UTPCLR: LDB TAC,PUUOAC 000064' 200301 000000* MOVE DEVDAT,USRJDA(TAC) 000065' 322300 000000* JUMPE DEVDAT,IOIERR 000066' 554046 000000 HLRZ TAC,DEVNAM(DEVDAT) 000067' 302040 446441 CAIE TAC,446441 000070' 254000 000036* JRST UXIT ;NOT DTA 000071' 200006 000002 MOVE IOS,DEVIOS(DEVDAT) 000072' 621000 000002 TLZ IOS,IOBEG 000073' 661000 000700 TLO IOS,UDIRIN+UDIREN+UNWFRE IFE DTSIZ,< MOVEM DEVDAT,DIREC> ;THIS FOR SINGLE DIRECTORY ONLY 000074' 200046 000007* MOVE TAC,UDIR(DEVDAT) 000075' 200100 001274' MOVE TAC1,[XWD 1,5] 000076' 202101 000000 MOVEM TAC1,(TAC) 000077' 507000 000001 HRLS TAC 000100' 253040 000101' AOBJN TAC,.+1 000101' 402001 000000 SETZM (TAC) 000102' 200100 000001 MOVE TAC1,TAC 000103' 350000 000001 AOS TAC 000104' 251042 000176 BLT TAC,176(TAC1) 000105' 201040 000001 MOVEI TAC, 1 000106' 202046 000054* MOVEM TAC, UFREE (DEVDAT) 000107' 202006 000002 MOVEM IOS, DEVIOS(DEVDAT) 000110' 260140 000326' PUSHJ PDP,UTPREL 000111' 254000 000070* JRST UXIT ;END OF DTDR DTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING MACRO 10 05:51 24-APR-78 PAGE 4 DTSER2 MAC 24-APR-78 02:46 L. HANTMANN 8-2-65 MULTIPLE DIRECTORIES VERSION SUBTTL L. HANTMAN PART 1 7-13-65 010000 UREV=10000 ;DT REVERSE BIT 000001 DTSIZ=1 ;1 FOR ONE BUFFER PER TAPE UNIT 000001 UBLK=1 ;NUMBER OF BLOCKS/BLOCK 000001 UCHN=1 ;CHANNEL OF DATA CONTROL = 1, LOC 42 000042 UCHA=42 ;DATA CONTROL INTERRUPT POSITION EXTERNAL UXIT,ADVBFF,ADVBFE,IOSET,OUT,WAIT1,WSYNC EXTERNAL PIOMOD,PUNIT,UFREE,UDIR,ADRERR,JOBPFI ENTRY UTDSP 004010 DACI=4010 ;DC INPUT DT 003410 DACO=3410 ;DC OUTPUT DT 220000 SL=220000 ;DT TURN ON. SELECT 003000 DTR=3000 ;DT TURN AROUND DELAY 002000 DT=2000 ;DT START/STOP DELAY 000300 RD=300 ;DT RD 000700 WD=700 ;DT WR 000200 RB=200 ;DT READ BLOCK NOS. 000002 VEOT=2 ;EOT FLAG BIT 010000 GR=10000 ;DT REVERSE BIT 040000 JDE=40000 ;JOB DONE ENABLE 100000 EE=100000 ;ENABLE END FLAG 002000 URDIR=2000 ;READING DIRECTORY 000112' 254000 000326' UTDSP: JRST UTPREL ;RELEASE 000113' 254000 000312' JRST UTPCLS ;CLOSE 000114' 254000 000125' JRST UOUT ;OUTPUT 000115' 254000 000204' JRST UIN ;INPUT 000116' 254000 000052' JRST UENTER ;ENTER IN DIRECTORY 000117' 254000 000035' JRST ULOOK ;LOOKUP IN DIRECTORY 000120' 254000 000633' JRST UDMPO ;DUMPOUT 000121' 254000 001022' JRST UDMPI ;DUMPIN 000122' 254000 000272' JRST SETO ;SET OUTPUT BLOCK NO. 000123' 254000 000267' JRST SETI ;SET INPUT BLOCK NO. 000124' 254000 000277' JRST GETF ;GET FREE BLOCK DTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING MACRO 10 05:51 24-APR-78 PAGE 5 DTSER2 MAC 24-APR-78 02:46 L. HANTMAN PART 1 7-13-65 000125' 260140 001142' UOUT: PUSHJ PDP, UINTER ;CHECK INTERLOCK 000126' 661000 000020 TLO IOS, IO ;WRITING 000127' 550046 000010 HRRZ TAC,DEVOAD(DEVDAT) 000130' 270040 000007 ADD TAC, PROG ;ACTUAL BUFFER ADDRESS 000131' 554106 000010 HLRZ TAC1, DEVOAD(DEVDAT) ;BLOCK TO WRITE 000132' 306100 000001 CAIN TAC1,1 000133' 254000 000171' JRST UOUT4 ;COPY DIRECTORY 000134' 554101 000001 HLRZ TAC1, 1(TAC) ;BLOCK TIE 000135' 621000 001000 TLZ IOS, ULINKF ;NOT LINKED TO FREE STORAGE 000136' 326100 000144' JUMPN TAC1, UOUT1 ;USE BALOCK NUMBER INDICATED 000137' 623000 000002 TLZE IOS, IOBEG ;GET FREE STORAGE BLOCK 000140' 260140 000370' PUSHJ PDP, UBEG3 000141' 661000 001400 TLO IOS,UNWFRE+ULINKF ;LINKED TO FREE STORAGE 000142' 202006 000002 MOVEM IOS, DEVIOS (DEVDAT) 000143' 350106 000106* AOS TAC1,UFREE(DEVDAT) ;NEXT FREE BLOCK 000144' 306100 000001 UOUT1: CAIN TAC1,1 ;IF 1, THIS IS LAST BLOCK 000145' 400100 000000 SETZ TAC1, ;LAST BLOCK TIE = 0 000146' 506101 000001 HRLM TAC1,1(TAC) ;BLOCK 000147' 552040 001121' HRRZM TAC,UBUF ;ACTUAL LOCATION OF DATA 000150' 544046 000010 HLR TAC,DEVOAD(DEVDAT) 000151' 506106 000010 HRLM TAC1, DEVOAD(DEVDAT) ;NEXT BLOCK 000152' 254000 000375' JRST USETW ;RETURN FROM WRITING 1 BLOCK 000153' 200046 000010 UOUT2: MOVE TAC,DEVOAD(DEVDAT) 000154' 505040 000007 HRLI TAC,PROG ;PROG, BUFFER ADDRESS 000155' 515100 400000 HRLZI TAC1,IOUSE 000156' 412120 000001 ANDCAM TAC1,@TAC ;SET USE BIT IN BUFFER 000157' 554106 000010 HLRZ TAC1,DEVOAD(DEVDAT) ;BLOCK TIE 000160' 322100 000167' JUMPE TAC1,UOUT3 ;WAS BLOCK WRITTEN THE LAST 0 000161' 540060 000001 HRR TAC,@TAC ;PROG, NEXT BUFFER ADDRESS 000162' 542046 000010 HRRM TAC,DEVOAD(DEVDAT) ;NEXT BUFFER 000163' 602000 000040 TRNE IOS, IOCON ;CONTINUOUS? 000164' 254000 000167' JRST UOUT3 ;STOP TAPE AND DISMISS 000165' 335020 000001 SKIPGE @TAC ;IS NEXT BUFFER EMPTY? 000166' 254000 000126' JRST UOUT+1 ;PROCESS NEXT BLOCK 000167' 262140 000001 UOUT3: POP PDP, TAC ;REDUCE TABLE 000170' 254000 001220' JRST DTC1 ;STOP TAPE AND DISMISS DTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING MACRO 10 05:51 24-APR-78 PAGE 6 DTSER2 MAC 24-APR-78 02:46 L. HANTMAN PART 1 7-13-65 ;COPY DIRECTORY WHEN WRITING BLOCK 1 000171' 505101 000001 UOUT4: HRLI TAC1,1(TAC) ;BUFFER ADDRESS, FROM 000172' 540106 000074* HRR TAC1, UDIR(DEVDAT) ;DIRECTORY ADDRESS, TO 000173' 550046 000172* HRRZ TAC, UDIR(DEVDAT) ;DIRECTORY ADDRESS 000174' 251101 000177 BLT TAC1, 177(TAC) ;MORE BUFFER AREA TO DIRECTORY 000175' 661000 000300 TLO IOS, UDIRIN+UDIREN ;SET DIRECTORY BITS 000176' 200126 000173* MOVE TAC1, @UDIR(DEVDAT) ;NEXT FREE BLOCK IN DIRECTORY 000177' 556106 000143* HLRZM TAC1,UFREE(DEVDAT) ;PLACE IN DATA BLOCK 000200' 515100 400000 HRLZI TAC1, IOUSE 000201' 413101 000000 ANDCAB TAC1, 0(TAC) ;CLEAR USE BIT 000202' 542106 000010 HRRM TAC1, DEVOAD(DEVDAT) ;ADVANCE BUFFER POINTER 000203' 254000 000242' JRST UEND2 ,INPUT- NON DUMP 000204' 260140 001142' UIN: PUSHJ PDP, UINTER ;CHECK INTERLOCK 000205' 621000 000020 TLZ IOS, IO ;READING 000206' 550046 000007 HRRZ TAC,DEVIAD(DEVDAT) ;UBUF:=TAC:=DEVIAD+PROG 000207' 270040 000007 ADD TAC,PROG 000210' 554106 000007 HLRZ TAC1, DEVIAD(DEVDAT) ;BLOCK TO READ 000211' 306100 000001 CAIN TAC1, 1 ;TRYING TO READ DIRECTORY? 000212' 254000 000251' JRST UIN2 ;COPY DIRECTORY 000213' 552040 001121' HRRZM TAC,UBUF 000214' 554046 000007 HLRZ TAC,DEVIAD(DEVDAT) ;TAC:=C(DEVIAD LH) 000215' 322040 000236' JUMPE TAC,UEND ;NEXT BLOCK=00, THEN END OF FI 000216' 254000 000377' JRST USETR ;RETURN FROM READING ONE BLOCK 000217' 550046 000007 UIN1: HRRZ TAC,DEVIAD(DEVDAT) 000220' 270040 000007 ADD TAC,PROG 000221' 554101 000001 HLRZ TAC1,1(TAC) 000222' 546106 000007 HLRM TAC1,DEVIAD(DEVDAT) ;NEXT BLOCK NUMBER TO READ 000223' 200046 000007 MOVE TAC,DEVIAD(DEVDAT) 000224' 505040 000007 HRLI TAC,PROG 000225' 515100 400000 HRLZI TAC1,IOUSE 000226' 436120 000001 IORM TAC1,@TAC ;SET USE BIT 000227' 540060 000001 HRR TAC,@TAC 000230' 542046 000007 HRRM TAC,DEVIAD(DEVDAT) ;NEXT BUFFER ADDRESS 000231' 602000 000040 TRNE IOS, IOCON ;CONTINUOUS? 000232' 254000 000167' JRST UOUT3 ;EXIT 000233' 331020 000001 SKIPL @TAC ;IS NEXT BUFFER FULL 000234' 254000 000205' JRST UIN+1 ;PROCESS NEXT BLOCK 000235' 254000 000167' JRST UOUT3 ;EXIT 000236' 661000 000040 UEND: TLO IOS, IOEND 000237' 202006 000002 MOVEM IOS, DEVIOS(DEVDAT) 000240' 721300 020000 CONSZ UTC, 20000 ;IS TAPE STOPPED? 000241' 254000 000167' JRST UOUT3 ;STOP TAPE AND EXIT 000242' 371000 000000* UEND2: SOSL DCREQ ;DECREMENT REQUEST COUNT, IS ANY ONE WA 000243' 476000 000000* SETOM DCAVAL ;YES,SET DATA CONTROL AVAILABLE 000244' 371000 000000* SOSL DTREQ ;DECREMENT REQUEST COUNT, IS ANY ONE WA 000245' 476000 000000* SETOM DTAVAL ;YES,SET DECTAPE CONTROL AVAI 000246' 620000 010000 TRZ IOS, IOACT ;CLEAR ACTIVE BIT DTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING MACRO 10 05:51 24-APR-78 PAGE 6-1 DTSER2 MAC 24-APR-78 02:46 L. HANTMAN PART 1 7-13-65 000247' 202006 000002 MOVEM IOS, DEVIOS(DEVDAT) ;RESTORE STATUS BITS 000250' 263140 000000 POPJ PDP, 0 ;EXIT DTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING MACRO 10 05:51 24-APR-78 PAGE 7 DTSER2 MAC 24-APR-78 02:46 L. HANTMAN PART 1 7-13-65 ;COPY DIRECTORY WHEN READING BLOCK 1 000251' 623000 000002 UIN2: TLZE IOS, IOBEG ;IS DIRECTORY IN 000252' 254000 000265' JRST UIN4 ;READ IN DIRECTORY 000253' 260140 000242' PUSHJ PDP, UEND2 ;CLR INDICATORS 000254' 200106 000177* UIN3: MOVE TAC1,UFREE(DEVDAT) ;NEXT FREE BLOCK IN DATA BLOC 000255' 506126 000176* HRLM TAC1, @UDIR(DEVDAT) ;PLACE IN DIRECTORY 000256' 541101 000001 HRRI TAC1, 1(TAC) ;BUFFER ADDRESS, TO 000257' 504106 000255* HRL TAC1, UDIR(DEVDAT) ;DIRECTORY ADDRESS, TO 000260' 251101 000200 BLT TAC1, 200 (TAC) ;MOVE DIRECTORY TO BUFFER ARE 000261' 515100 400000 HRLZI TAC1, IOUSE 000262' 437100 400000 IORB TAC1, IOUSE ;SET USE BIT 000263' 542106 000007 HRRM TAC1,DEVIAD(DEVDAT) ;ADVANCE BUFFER 000264' 263140 000000 POPJ PDP, 0 ;EXIT 000265' 260140 000370' UIN4: PUSHJ PDP, UBEG3 000266' 254000 000254' JRST UIN3 000267' 260140 000000* SETI: PUSHJ PDP,WAIT1 000270' 506606 000007 HRLM UUO,DEVIAD(DEVDAT) ;SET INPUT BLOCK NO. 000271' 254000 000111* JRST UXIT 000272' 260140 000267* SETO: PUSHJ PDP,WAIT1 000273' 260140 001142' PUSHJ PDP, UINTER ;WAIT FOR USE TO STOP 000274' 260140 000242' PUSHJ PDP, UEND2 ;CLEAR INDICATORS 000275' 506606 000010 HRLM UUO,DEVOAD(DEVDAT) ;SET OUTPUT BLOCK NO. 000276' 254000 000271* JRST UXIT 000277' 260140 000272* GETF: PUSHJ PDP,WAIT1 000300' 603000 000002 TLNE IOS,IOBEG 000301' 260140 000343' PUSHJ PDP,UBEG 000302' 661000 000400 TLO IOS,UNWFRE 000303' 202006 000002 MOVEM IOS,DEVIOS(DEVDAT) 000304' 350046 000254* AOS TAC, UFREE(DEVDAT) ;GET FREE BLOCK 000305' 506046 000010 HRLM TAC, DEVOAD(DEVDAT) 000306' 505600 000007 HRLI UUO,PROG 000307' 542060 000014 HRRM TAC,@UUO 000310' 254000 000276* JRST UXIT DTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING MACRO 10 05:51 24-APR-78 PAGE 8 DTSER2 MAC 24-APR-78 02:46 L. HANTMAN PART 1 7-13-65 INTERNAL UTPCLS,UTWDR,UBEG,UTPREL 000311' UTWDR: IFE DTSIZ,< PUSHJ PDP,UTPREL> 000311' 254000 000310* JRST UXIT 000312' 607000 001000 UTPCLS: TLNN IOS, ULINKF 000313' 254000 000326' JRST UTPREL 000314' 135040 000000* LDB TAC,PIOMOD ;MODE 000315' 301040 000016 CAIL TAC,16 000316' 254000 000326' JRST UTPREL 000317' 544046 000006 HLR TAC,DEVBUF(DEVDAT) 000320' 545040 000007 HLRI TAC, PROG 000321' 540060 000001 HRR TAC, @TAC ;TAC:=BUFFER ADDRESS 000322' 271040 000001 ADDI TAC,1 000323' 201100 000001 MOVEI TAC1,1 000324' 506120 000001 HRLM TAC1,@TAC 000325' 254000 000000* JRST OUT UTPREL: IFE DTSIZ,< TLNE IOS,IOBEG ;RELEASE POPJ PDP, TLZE IOS,UDIREN JRST UTPRL1 TLNN IOS,UNWFRE POPJ PDP, TLNN IOS,UDIRIN PUSHJ PDP,UBEG> 000326' 627000 000600 IFN DTSIZ,< TLZN IOS,UDIREN+UNWFRE 000327' 263140 000000 POPJ PDP,> 000330' 260140 001142' UTPRL1: PUSHJ PDP,UINTER ;IS SYSTEM AVAILABLE? 000331' 540046 000304* HRR TAC,UFREE(DEVDAT) 000332' 506066 000257* HRLM TAC,@UDIR(DEVDAT) 000333' 200046 000332* MOVE TAC,UDIR(DEVDAT) 000334' 275040 000001 SUBI TAC,1 000335' 202040 001121' MOVEM TAC,UBUF 000336' 661000 002000 TLO IOS, URDIR 000337' 202006 000002 MOVEM IOS,DEVIOS(DEVDAT) 000340' 201040 000001 MOVEI TAC,1 000341' 260140 000375' PUSHJ PDP,USETW 000342' 254000 000277* JRST WAIT1 DTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING MACRO 10 05:51 24-APR-78 PAGE 9 DTSER2 MAC 24-APR-78 02:46 L. HANTMAN PART 1 7-13-65 ,READ THE DIRECTORY FROM THIS DEC-TAPE 000343' 335006 000004 UBEG: SKIPGE DEVMOD(DEVDAT) ;IS DIRECTORY IN CORE? 000344' 661000 000100 TLO IOS,UDIRIN 000345' 603000 000100 TLNE IOS,UDIRIN 000346' 263140 000000 POPJ PDP, 0 000347' 260140 001142' PUSHJ PDP, UINTER ;CHECK INTERLOCK 000350' 261140 000001 UBEG2: PUSH PDP, TAC ;SAVE TAC 000351' 550046 000333* HRRZ TAC,UDIR(DEVDAT) 000352' 275040 000001 SUBI TAC, 1 000353' 202040 001121' MOVEM TAC,UBUF 000354' 661000 002100 TLO IOS,UDIRIN+URDIR 000355' 621000 000002 TLZ IOS, IOBEG 000356' 202006 000002 MOVEM IOS,DEVIOS(DEVDAT) 000357' 205040 400000 MOVSI TAC,DVDIRIN ;SET DIRECTORY IN CORE BIT 000360' 436046 000004 IORM TAC,DEVMOD(DEVDAT) 000361' 201040 000001 MOVEI TAC,1 000362' 260140 000377' PUSHJ PDP,USETR 000363' 260140 000000* PUSHJ PDP,WSYNC 000364' 544066 000351* HLR TAC,@UDIR(DEVDAT) 000365' 552046 000331* HRRZM TAC,UFREE(DEVDAT) 000366' 262140 000001 UBEGX: POP PDP,TAC 000367' 263140 000000 POPJ PDP, 0 000370' 603000 000100 UBEG3: TLNE IOS, UDIRIN 000371' 263140 000000 POPJ PDP, 0 000372' 254000 000350' JRST UBEG2 000373' 260140 001220' UTBERR: PUSHJ PDP, DTC1 ;ILL. BLOCK NO. 000374' 254000 000000* JRST UTBKER 000375' 201100 000535' USETW: MOVEI TAC1, RIT 000376' 334000 000000 SKIPA 000377' 201100 000527' USETR: MOVEI TAC1,READ 000400' 542100 000500' HRRM TAC1,DDIG 000401' 552040 001117' HRRZM TAC,UBKN 000402' 323040 000373' JUMPLE TAC,UTBERR ;ILL. BLOCK NO.? 000403' 301040 001102 CAIL TAC,1102 000404' 254000 000373' JRST UTBERR ;ILL. BLOCK NO. 000405' 135040 000000* LDB TAC,PUNIT ;UNIT 000406' 241040 000003 ROT TAC, 3 000407' 271040 000000* ADDI TAC, DTCCHN ;DECTAPE CHANNEL 000410' 202040 001116' MOVEM TAC, UNIT ;UNIT AND CHANNEL 000411' 201040 000137 MOVEI TAC, 137 000412' 542040 001166' HRRM TAC, DTCINT 000413' 275040 000021 SUBI TAC, 21 000414' 542040 001172' HRRM TAC, CONSZ1 ;FALL INTO FILL DTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING MACRO 10 05:51 24-APR-78 PAGE 10 DTSER2 MAC 24-APR-78 02:46 L. HANTMAN PART 1 7-13-65 000415' 720200 000000 FILL: CONO DC,0 ;DESELECT DC 000416' 700600 002100 CONO PI,2100 ;TURN ON CHANNEL 1 000417' 202300 001151' MOVEM DEVDAT, USVDB ;SAVE DATA BLOCK ADDR 000420' 202300 001122' MOVEM DEVDAT,UDVDAT ;UDVDAT:=DTJIOS POINTER 000421' 201040 000002 MOVEI TAC, DEVIOS 000422' 272040 001122' ADDM TAC,UDVDAT 000423' 200040 001275' MOVE TAC, [JSR DDIF] ;DATA CONTROL INTERRUPT CHANN 000424' 202040 000042 MOVEM TAC,UCHA 000425' 202340 001120' MOVEM PROG,UPROG ;UPROG:=PROG 000426' 200040 001121' MOVE TAC,UBUF ;BLI:=XWD-200,C(UBUF) 000427' 505040 777600 HRLI TAC,-200 000430' 202040 001114' MOVEM TAC,BLI 000431' 271040 000177 ADDI TAC,200-1 000432' 202040 001113' MOVEM TAC,BLO 000433' 721300 020000 CONSZ UTC, 20000 ;IS TAPE MOVING? 000434' 254000 000453' JRST FILLC ;YES 000435' 200040 001116' MOVE TAC, UNIT ;RDDA:=RDRM:=WTDA:=WTRM:=C(UN 000436' 137040 000457' DPB TAC,F1 000437' 137040 000460' DPB TAC,F2 000440' 137040 000461' DPB TAC,F3 000441' 137040 000462' DPB TAC,F4 000442' 200040 001116' MOVE TAC,UNIT 000443' 405040 000070 ANDI TAC, 70 ;TAC HAS UNIT ONLY 000444' 271040 323201 ADDI TAC, SL+DTR+RB+EE+UCHN 000445' 607000 010000 TLNN IOS, UREV ;WAS REV, GO FWD 000446' 271040 010000 ADDI TAC,GR ;WAS FWD, GO REV 000447' 721220 000001 CONO UTC, @TAC 000450' 720200 004011 FILL2: CONO DC, DACI+UCHN ;SET UP DC FOR INPUT 000451' 202006 000002 MOVEM IOS, DEVIOS (DEVDAT) 000452' 263140 000000 POPJ PDP, DTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING MACRO 10 05:51 24-APR-78 PAGE 11 DTSER2 MAC 24-APR-78 02:46 L. HANTMAN PART 1 7-13-65 ,TAPE IS ACTIVE - GIVE A COMMAND 000453' 721240 000001 FILLC: CONI UTC,TAC ;UTC COMMAND: UNIT, OLD DIRE 000454' 405040 010070 ANDI TAC,GR+70 ;DIRECTION PLUS UNIT 000455' 721201 320201 CONO UTC,SL+RB+EE+UCHN(TAC) ;NO TIME DELAY 000456' 254000 000450' JRST FILL2 000457' 000600 000517' F1: POINT 6,RDDA,35 000460' 000600 000531' F2: POINT 6,RDRM,35 000461' 000600 000523' F3: POINT 6,WTDA,35 000462' 000600 000537' F4: POINT 6,WTRM,35 ,CHANGE DIRECTIONS - GIVE NEW COMMANDS 000463' 721240 000001 RRV: CONI UTC,TAC 000464' 431040 010000 XORI TAC,GR ;REVERSE BIT 000465' 405040 550777 ANDI TAC,550777 000466' 435040 002000 IORI TAC,DT 000467' 721201 220000 CONO UTC,SL(TAC) 000470' 720200 004011 CONO DC,DACI+UCHN 000471' 254000 000515' JRST DXIT ,EXAMINE BLOCK NUMBERS - DISPATCHED FROM INTERRUPT - CHAN, DC. 000472' 000000 000000 DDIF: 0 ;GOING FORWARD 000473' 202040 001115' MOVEM TAC,SV1 ;SV1:=TAC 000474' 721700 000002 CONSZ UTS, VEOT 000475' 254000 000463' JRST RRV 000476' 720040 000001 DATAI DC,TAC 000477' 316040 001117' CAMN TAC,UBKN ;BLK NOT =STR 000500' 254000 000500' DDIG: JRST . ;JRST READ, BIT, IFRIGHT UBK 000501' 721300 010000 CONSZ UTC,10000 ;GOING BACKWARDS 000502' 254000 000506' JRST .+4 ;BACKWARDS 000503' 311040 001117' CAML TAC,UBKN ;BLK > STR > FORWARD 000504' 254000 000463' JRST RRV 000505' 254000 000510' JRST .+3 000506' 317040 001117' CAMG TAC,UBKN ;BACKWARDS 000507' 254000 000463' JRST RRV ;BACKWARDS 000510' 721240 000001 DDIG2: CONI UTC,TAC 000511' 405040 550777 ANDI TAC,550777 000512' 721201 220000 CONO UTC,SL(TAC) 000513' 334000 000000 SKIPA 000514' 542040 000042 DXIT1: HRRM TAC,UCHA 000515' 200040 001115' DXIT: MOVE TAC,SV1 ;RESTORE TAC 000516' 254520 000472' JEN @DDIF ;RE-ENABLE, DISMISS. DTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING MACRO 10 05:51 24-APR-78 PAGE 12 DTSER2 MAC 24-APR-78 02:46 L. HANTMAN PART 1 7-13-65 ,DISPATCH FROM UCHA INITIALLY ON CORRECT BLOCK MARK ,SETS OP TO READ, WRITE IN FWD, REVERSE ;RD FORWARD 000517' 721200 360300 RDDA: CONO UTC,SL+RD+JDE+EE ;GETS UNIT NO. - RE 000520' 201040 000551' MOVEI TAC,RDFW 000521' 720200 004011 CONO DC,DACI+UCHN 000522' 254000 000514' JRST DXIT1 000523' 721200 360700 WTDA: CONO UTC,SL+WD+JDE+EE ;GETS UNIT NO. - RE 000524' 201040 000563' MOVEI TAC,WTFW 000525' 720200 003411 CONO DC,DACO+UCHN 000526' 254000 000514' JRST DXIT1 000527' 721340 010000 READ: CONSO UTC,10000 ;ENTRY TO SET UP READ 000530' 254000 000517' JRST, RDDA ;READ REVERSE 000531' 721200 370300 RDRM: CONO UTC,SL+GR+RD+JDE+EE ;GETS UNIT NO. - RESETS TO RD 000532' 201040 000543' MOVEI TAC,RDRV 000533' 720200 004011 CONO DC,DACI+UCHN 000534' 254000 000514' JRST DXIT1 000535' 721340 010000 RIT: CONSO UTC,10000 ;GOING REVERSE - ENTRY TO SET 000536' 254000 000523' JRST WTDA ;WRITE FORWARD ;WRITE REVERSE 000537' 721200 370700 WTRM: CONO UTC,SL+WD+GR+JDE+EE ;GETS UNIT NO. -RESETS. TO WT 000540' 201040 000555' MOVEI TAC,WTRV 000541' 720200 003411 CONO DC,DACO+UCHN 000542' 254000 000514' JRST DXIT1 ,DC INTERRUPT PROCESSSING TO READ/WRITE DATA IN EITHER ,DIRECTION, AND RE-ENABLE INTERRUP. ,EXIT BLOCK PROCESSING AT ENPT(WRITE), ENPTI(READ) 000543' 000000 000000 RDRV: 0 ;ENTRY VIA UCHA - READ REV 000544' 720000 001113' BLKI DC,BLO 000545' 264000 000620' JSR ENPTI 000546' 370000 001113' SOS BLO 000547' 370000 001113' SOS BLO 000550' 254520 000543' JEN @RDRV 000551' 000000 000000 RDFW: 0 ;ENTRY VIA UCHA - READ FWD 000552' 720000 001114' BLKI DC,BLI 000553' 264000 000620' JSR ENPTI 000554' 254520 000551' JEN @RDFW 000555' 000000 000000 WTRV: 0 ;ENTRY VIA UCHA - WRITE REV 000556' 720100 001113' BLKO DC,BLO 000557' 264000 000567' JSR ENPT 000560' 370000 001113' SOS BLO 000561' 370000 001113' SOS BLO 000562' 254520 000555' JEN @WTRV DTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING MACRO 10 05:51 24-APR-78 PAGE 12-1 DTSER2 MAC 24-APR-78 02:46 L. HANTMAN PART 1 7-13-65 000563' 000000 000000 WTFW: 0 ;ENTRY VIA UCHA - WRITE FWD 000564' 720100 001114' BLKO DC,BLI 000565' 264000 000567' JSR ENPT 000566' 254520 000563' JEN @WTFW DTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING MACRO 10 05:51 24-APR-78 PAGE 13 DTSER2 MAC 24-APR-78 02:46 L. HANTMAN PART 1 7-13-65 ;END OF OUTPUT BLOCK 000567' 000000 000000 ENPT: 0 000570' 264000 000603' JSR, ENP 000571' 202040 001115' ENPT2: MOVEM TAC,SV1 ;SV1:=TAC 000572' 515040 010000 HRLZI TAC,UREV 000573' 721300 010000 CONSZ UTC,10000 000574' 412060 001122' ANDCAM TAC,@UDVDAT 000575' 721340 010000 CONSO UTC,10000 000576' 436060 001122' IORM TAC,@UDVDAT 000577' 201040 000615' MOVEI TAC,UOFF 000600' 542040 000042 HRRM TAC,UCHA 000601' 200040 001115' MOVE TAC,SV1 000602' 254120 000567' JRSTF @ENPT ,CHECK ERROR BITS DC MISSED, 0T PARITY, 1 LEG OP, TAPE END 000603' 000000 000000 ENP: 0 000604' 720300 010000 CONSZ DC, 10000; DATA MISSED 000605' 264000 000627' JSR ERROR2 000606' 254120 000603' JRSTF @ENP ,SAVE STATE OF UTS, UTC, DC, TURN OFF DC, UTC, +1@ERRTAL,+1@UERR ;ERROR LOOPS 000607' 000000 000000 ERROR: 0 000610' 721640 001111' CONI UTS, C12 000611' 721240 001112' CONI UTC, C13 000612' 720240 001110' CONI DC, C11 000613' 476000 001124' SETOM ERRFLG 000614' 254120 000607' JRSTF @ERROR ;INTERRUPT FROM DATA FLAG AFER BLKO HAS COUNTED OUT 000615' 000000 000000 UOFF: 0 000616' 700600 001100 CONO PI, 1100 ;TURN DC CHANNEL OFF 000617' 254520 000615' JEN @UOFF ;DISMISS EXTRA WRITE FLAG ;END OF INPUT BLOCK 000620' 000000 000000 ENPTI: 0 000621' 250040 000620' EXCH TAC, ENPTI 000622' 202040 000567' MOVEM TAC, ENPT 000623' 264000 000603' JSR ENP 000624' 720200 000000 CONO DC, 0 000625' 200040 000620' MOVE TAC, ENPTI 000626' 254000 000571' JRST ENPT2 ;DETECT FIRST ERROR ONLY 000627' 000000 000000 ERROR2: 0 000630' 336000 001124' SKIPN ERRFLG ;PREVIOUSLY DETECTED ERROR! 000631' 264000 000607' JSR ERROR ;STORE ERROR CONDITIONS 000632' 254120 000627' JRSTF @ERROR2 ;CONTINUE LOOP ;END OF PART 1 DTSER2 DTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING MACRO 10 05:51 24-APR-78 PAGE 14 DTSER2 MAC 24-APR-78 02:46 L. HANTMAN PART 1 7-13-65 EXTERNAL SETIOD INTERNAL UDMP0, UDMPI ; DUMP OUT 000633' 661000 000020 UDMPO: TLO IOS, IO ;SET FOR OUTPUT 000634' 260140 001142' PUSHJ PDP, UINTER ;CHECK INTERLOCK 000635' 606600 777777 TRNN UUO, 777777 ;COMMAND ADDRESS? 000636' 254000 000722' JRST UDMP2-1 ;ERROR 000637' 201040 000727' MOVEI TAC, DDUMP ;RETURN WHEN BLOCK FOUND 000640' 200100 001276' UDMP0: MOVE TAC1, [JSR DMPADV] ;BLKI OR BLKO RETURN, COMMANDS ;COMMON ROUTINE FOR ALL DUMP MODES, START SEARCH 000641' 542040 000500' UDMP1: HRRM TAC,DDIG ;SEARCH RETURN 000642' 202100 000043 MOVEM TAC1, UCHA+1 ;INTERRUPT RETURN 000643' 200040 001275' MOVE TAC, [JSR DDIF] 000644' 202040 000042 MOVEM TAC, UCHA ;DATA CONTROL CHANNEL 000645' 554046 000010 HLRZ TAC, DEVOAD (DEVDAT) ;BLOCK NUMBER 000646' 607000 000020 TLNN IOS, IO ;WRITING? 000647' 554046 000007 HLRZ TAC, DEVIAD(DEVDAT) ;INPUT BLOCK NUMBER 000650' 202040 001117' MOVEM TAC, UBKN ;BLOCK TO LOOK FOR 000651' 552300 001151' HRRZM DEVDAT, USVDB ;DATA BLOCK ADDRESS 000652' 135040 000405* LDB TAC,PUNIT ;UNIT 000653' 241040 000003 ROT TAC, 3 000654' 271040 000407* ADDI TAC, DTCCHN 000655' 202040 001116' MOVEM TAC, UNIT ;UNIT AND DT CHANNEL 000656' 405040 000070 ANDI TAC, 70 000657' 721201 323201 CONO UTC, SL+DTR+RB+EE+UCHN(TAC) 000660' 476000 001153' SETOM UERRCN ;SET ERROR COUNTER 000661' 201040 000037 MOVEI TAC, 37 ;DO NOT CHECK FOR INCOMPLETE 000662' 542040 001166' HRRM TAC, DTCINT 000663' 201040 000016 MOVEI TAC,16 000664' 542040 001172' HRRM TAC, DTCINT+4 000665' 720200 004011 CONO DC, DACI+UCHN ;SET DATA CONTROL 000666' 700600 002100 CONO PI,2100 ;INSURE CHANNEL 1 ON 000667' 552340 001126' HRRZM PROG, UDMPA ;SAVE PROGRAM 000670' 606600 777777 TRNN UUO, 777777 ;COMMAND ADDRESS 000671' 263140 000000 POPJ PDP, 0 ;COMMAND LIST ON TAPE, INPUT 000672' 550040 000014 HRRZ TAC, UUO ;GET CMD PNTR 000673' 550100 000001 HRRZ TAC1, TAC ;SAVE POINTER 000674' 270100 000007 UDMP1A: ADD TAC1, PROG ;GET ACTUAL POINTER 000675' 552100 001125' HRRZM TAC1, UDMP ;STORE WORKING POINTER ;CHECK ENTIRE COMMAND LIST FOR VALIDITY 000676' 336120 001125' UDMP1B: SKIPN TAC1, @UDMP ;GET COMMAND 000677' 254000 000712' JRST UDMP1C ;END OF COMMAND LIST 000700' 327100 000674' JUMPG TAC1, UDMP1A ;CHANGE COMMAND SEQUENCE 000701' 576100 001141' HLREM TAC1, SVCNTR ;SAVE -N 000702' 553000 000002 HRRZS TAC1 ;GET ADDRESS 000703' 305100 000000* CAIGE TAC1, JOBPFI ;IS IT ABOVE IO PROT. AREA 000704' 254000 000000* JRST ADRERR ;NO. ADDRESS CHECK ERROR 000705' 274100 001141' SUB TAC1, SVCNTR ;GET AREA END 000706' 313100 000000* CAMLE TAC1, USRREL ;LESS THEN END? DTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING MACRO 10 05:51 24-APR-78 PAGE 14-1 DTSER2 MAC 24-APR-78 02:46 L. HANTMAN PART 1 7-13-65 000707' 254000 000722' JRST UDMP2-1 ;OUT OF BOUNDS 000710' 350000 001125' AOS UDMP ;INDEX COMMAND LIST POINTER 000711' 254000 000676' JRST UDMP1B ;GET NEXT COMMAND DTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING MACRO 10 05:51 24-APR-78 PAGE 15 DTSER2 MAC 24-APR-78 02:46 L. HANTMAN PART 1 7-13-65 ;GET FIRST COMMAND 000712' 270040 000007 UDMP1C: ADD TAC, PROG ;GET ACTUAL ADDRESS 000713' 552040 001125' HRRZM TAC, UDMP ;SAVE POINTER 000714' 336060 001125' SKIPN TAC, @UDMP ;1ST COMMAND 000715' 254000 000723' JRST UDMP2 ;NOTHING TO DO 000716' 270040 000007 ADD TAC, PROG ;ACTUAL POINTER 000717' 325040 000713' JUMPGE TAC, .-4 ;CHANGE COMMAND SEQUENCE 000720' 202040 001113' MOVEM TAC, BLO ;SAVE I/O POINTER 000721' 263140 000000 POPJ PDP, 0 ;EXIT WITH ERROR 000722' 660000 040000 TRO IOS, IOBKTL 000723' 201040 777775 UDMP2: MOVEI TAC, -3 000724' 572040 001153' HRREM TAC, UERRCN 000725' 402000 001124' SETZM ERRFLG 000726' 254000 000242' JRST UEND2 ;SEARCH RETURN,OUTPUT,COMMAND LIST IN MEMORY 000727' 721300 010000 DDUMP: CONSZ UTC,GR 000730' 254000 000510' JRST DDIG2 ;KEEP GOING 000731' 200040 001277' MOVE TAC,[BLKO DC,BLO] 000732' 202040 000042 MOVEM TAC, UCHA 000733' 720200 003411 CONO DC,DACO+UCHN 000734' 200040 001116' MOVE TAC,UNIT 000735' 721201 360700 CONO UTC,SL+WD+JDE+EE(TAC) 000736' 254000 000515' JRST DXIT ;BLKI OR BLKO RETURNS, COMMAND LIST IN MEMORY 000737' 000000 000000 DMPADV: 0 000740' 202040 001115' MOVEM TAC,SV1 000741' 354040 001125' AOSA TAC,UDMP ;POINTER DTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING MACRO 10 05:51 24-APR-78 PAGE 16 DTSER2 MAC 24-APR-78 02:46 L. HANTMAN PART 1 7-13-65 000742' 552040 001125' DMPA1: HRRZM TAC, UDMP ;STORE POINTER 000743' 336041 000000 SKIPN TAC, 0(TAC) ;IS WORD ZERO 000744' 254000 000752' JRST DMPA2 ;END 000745' 270040 001126' ADD TAC, UDMPA ;ADD PROGRAM 000746' 325040 000742' JUMPGE TAC, DMPA1 ;CHANGE COMMAND 000747' 202040 001113' MOVEM TAC, BLO 000750' 200040 001115' DMPXT: MOVE TAC, SV1 000751' 254520 000737' JEN @DMPADV ;END OF COMMAND LIST, INPUT OR OUTPUT 000752' 264000 000603' DMPA2: JSR ENP 000753' 700600 001100 CONO PI, 1100 ;TURN DATA CONTROL CHANNEL OF 000754' 721740 000040 CONSO UTS, 40 ;WRITING? 000755' 720200 000000 CONO DC, 0 ;SHUT OFF DATA CONTROL 000756' 254000 000750' JRST DMPXT ;SEARCH RETURN, INPUT COMMAND LIST ON TAPE 000757' 721300 010000 DDMPI: CONSZ UTC, GR ;GOING BACKWARDS? 000760' 254000 000510' JRST DDIG2 ;KEEP GOING 000761' 200040 001300' MOVE TAC, [XWD -1,BLO-1] 000762' 202040 001113' MOVEM TAC, BLO ;COMMON INSTRUCTIONS FOR COMMAND LIST IN MEMORY OR ON TAPE 000763' 200040 001301' DDMPI2: MOVE TAC, [BLKI DC,BLO] 000764' 202040 000042 MOVEM TAC, UCHA 000765' 720200 004011 CONO DC, DACI+UCHN 000766' 200040 001116' MOVE TAC, UNIT 000767' 721201 360300 CONO UTC, SL+RD+JDE+EE(TAC) 000770' 254000 000515' JRST DXIT ;INPUT COMMAND LIST ON TAPE. BLKI RETURN AFTER READING COMMAND 000771' 000000 000000 DMPRD: 0 000772' 331000 001113' SKIPL BLO ;END OF COMMAND LIST? 000773' 254000 001010' JRST DMPRD1 000774' 202040 001115' MOVEM TAC, SV1 ;SAVE TAC 000775' 200040 001113' MOVE TAC, BLO ;PICK UP COMMAND 000776' 576040 001141' HLREM TAC, SVCNTR ;-N 000777' 553000 000001 HRRZS TAC ;ADDRESS 001000' 274040 001141' SUB TAC, SVCNTR ;END ADDRESS 001001' 303040 000000 DMPRD0: CAILE TAC, 0 ; INTERNAL UTBKER 000367' 135200 000027* UTBKER: LDB ITEM,PJOBN ;JOB NUMBER 000370' 265040 000232' JSP TAC,ERRPNT ERRCON - ERROR HANDLING ROUTINE FOR MONITOR DECTECTED ERRORS MACRO 10 05:51 24-APR-78 PAGE 12-2 ERRCON MAC 24-APR-78 23:01 8-9-65 000371' 440700 000401' POINT 7,UTERM 000372' 200040 000000* MOVE TAC,UBUF 000373' 275047 000000 SUBI TAC,(PROG) 000374' 260140 000344' PUSHJ PDP,OCTPNT 000375' 201100 000424' MOVEI TAC1, [ASCII / /] 000376' 260140 000333' PUSHJ PDP, MESPNT 000377' 260140 000155' PUSHJ PDP,ERNAM 000400' 254000 000035' JRST ADRER2 000401' 446311 420210 UTERM: ASCIZ /ILL DT BLOCK NO. , BUFFER AT / 000402' 521010 246236 000403' 416264 047236 000404' 271005 420204 000405' 526150 642644 000406' 202032 420000 INTERNAL UUOERR EXTERNAL UUO0 000407' 265040 000231' UUOERR: JSP TAC,ERRPTU 000410' 440700 000416' POINT 7,UUOER1 000411' 200040 000000* MOVE TAC, UUO0 ;UUO PC 000412' 603040 010000 TLNE TAC, 10000 ;WAS IT FROM USER? 000413' 254000 000213' JRST EPCAD1 ;YES, JUST PRINT LOC OF CALL 000414' 260140 000145' PUSHJ PDP,EPTAD1 ;NO, PRINT BOTH EXEC CALL 000415' 254000 000207' JRST ERSYC1 ;AND USER CALL 000416' 446311 420240 UUOER1: ASCIZ /ILL PROG. OP. USED/ 000417' 512370 727100 000420' 476405 620252 000421' 516130 400000 END, NO ERRORS DETECTED PROGRAM BREAK IS 000425 9K CORE USED ERRCON - ERROR HANDLING ROUTINE FOR MONITOR DECTECTED ERRORS MACRO 10 05:51 24-APR-78 PAGE 13 ERRCON MAC 24-APR-78 23:01 SYMBOL TABLE A 000000 INT AC1 000015 INT AC2 000016 INT AC3 000017 INT ADRCK 000000' INT ADRER2 000035' ADRERI 000027' ADRERR 000014' INT AERM1 000023' AERM3 000045' AL 000001 INT ANYRDX 000345' INT APM1 000070' APM2 000073' APM3 000106' APM4 000134' APMSYS 000136' APMUSR 000141' APR 000000 SPD APRCHL 000144' EXT APRCHN 000051' EXT APRDMS 000132' APRIL1 000062' APRILM 000051' INT APRJRS 000064' APRNXM 000100' APRPDL 000111' APRRET 000121' EXT ASSCON 400000 INT ASSPRG 200000 INT B 000014 INT BUFPNT 000012 INT BUFWRD 000013 INT CLOSB 002000 INT CLSIN 000002 INT CLSOUT 000001 INT CPOPJ 000335' EXT CPOPJ1 000253' EXT CRLF 000250' EXT D 000017 INT DAT 000005 INT DCL 000001 INT DCW 020000 INT DDI 000007 INT DDO 000006 INT DDTMEM 000037 INT DDTSYM 000036 INT DEN 000004 INT DEVADR 000007 INT DEVBUF 000006 INT DEVCHR 000001 INT DEVCTR 000011 INT ERRCON - ERROR HANDLING ROUTINE FOR MONITOR DECTECTED ERRORS MACRO 10 05:51 24-APR-78 PAGE 13-1 ERRCON MAC 24-APR-78 23:01 SYMBOL TABLE DEVDAT 000006 INT DEVIAD 000007 INT DEVIOS 000002 INT DEVLOG 000005 INT DEVMOD 000004 INT DEVNAM 000000 INT DEVOAD 000010 INT DEVPTR 000010 INT DEVSER 000003 INT DGF 000012 INT DIN 000003 INT DIRER1 000176' DIRERR 000171' INT DLK 000005 INT DOU 000002 INT DR 000016 INT DRL 000000 INT DSI 000011 INT DSO 000010 INT DTW 040000 INT DVAVAL 000040 INT DVCDR 100000 INT DVDIR 000004 INT DVDIRI 400000 INT DVIN 000002 INT DVLPT 040000 INT DVMTA 000020 INT DVOUT 000001 INT DVTTY 000010 INT ENTRB 020000 INT EPCAD 000216' EPCAD0 000212' EPCAD1 000213' EPCADR 000215' EPOCT 000206' EPTAD1 000145' EPTADR 000144' ERMS1 000225' ERNAM 000155' INT ERNAM1 000161' ERR1 000220' ERRDEV 000167' ERRIL 000275' ERROR 000202' INT ERRPD 000240' ERRPNT 000232' INT ERRPTU 000231' INT ERSYC1 000207' ERSYCL 000210' HOLD 000214' EXT HOLDI 000044' EXT HOLDI1 000133' EXT I 000010 INT ERRCON - ERROR HANDLING ROUTINE FOR MONITOR DECTECTED ERRORS MACRO 10 05:51 24-APR-78 PAGE 13-2 ERRCON MAC 24-APR-78 23:01 SYMBOL TABLE IB 000013 INT IBUFB 200000 INT ILLIN 000321' ILLINP 000260' INT ILLINS 000272' INT ILLMO1 000303' ILLMOD 000277' INT ILLOT 000270' ILLOUT 000311' INT ILM 020000 ILM3 000315' INITB 400000 INT INPB 010000 INT IO 000020 INT IOACT 010000 INT IOBEG 000002 INT IOBKTL 040000 INT IOCON 000040 INT IODEND 020000 INT IODERR 200000 INT IODISC 400000 INT IODONE 400000 INT IODTER 100000 INT IOEND 000040 INT IOFST 000004 INT IOIER1 000326' IOIERR 000323' INT IOIMPM 400000 INT IONRCK 000100 INT IORDEL 000100 INT IORET 000020 INT IOS 000000 INT IOSTRT 000010 INT IOUSE 400000 INT IOW 000001 INT IOWC 000020 INT IOWS 400000 INT ITEM 000004 INT JBFADR 000000 INT JBFCTR 000002 INT JBFPTR 000001 INT JBTADR 000233' EXT JBUF 000005 INT JDAT 000011 INT JERR 002000 INT JIOW 100000 INT JNA 004000 INT JOB 000231' EXT JOBADR 000015' EXT JOBPD1 000341' EXT JOBPDL 000236' EXT JOBPDP 000000 EXT JOBPFI 000006' EXT ERRCON - ERROR HANDLING ROUTINE FOR MONITOR DECTECTED ERRORS MACRO 10 05:51 24-APR-78 PAGE 13-3 ERRCON MAC 24-APR-78 23:01 SYMBOL TABLE JOBREL 000000 EXT JOBTRP 000000 EXT LOOKB 040000 INT MES1 000334' MESPC 000340' MESPNT 000333' INT MJOBPD 000235' EXT MTW 010000 INT NXM 010000 OBUFB 100000 INT OCTP1 000352' OCTPNT 000344' INT OUTPB 004000 INT PCPNT 000342' INT PDLOV 000122' PDP 000003 INT PICHN 000100 INT PJOBN 000367' EXT POVC 400000 POVF 200000 PROG 000007 INT RADX10 000362' INT RUN 200000 INT RUNABL 204000 INT SYSERR 000254' TAC 000001 INT TAC1 000002 INT TEM 000010 INT TTYATC 020000 INT TTYCTR 000000 EXT TTYFND 000243' EXT TTYSTR 000000 EXT TTYUSE 010000 INT UBUF 000372' EXT USRMOD 010000 INT USRPDP 000000 EXT USRPOV 000115' EXT USRREL 000056' EXT UTBKER 000367' INT UTERM 000401' UUO 000014 INT UUO0 000411' EXT UUOER1 000416' UUOERR 000407' INT UXIT 000000 EXT WAIT1 000000 EXT IIIIIIIII OOOOOOOOO CCCCCCCCCCCC OOOOOOOOO NNN NNN TTTTTTTTTTTTTTT IIIIIIIII OOOOOOOOO CCCCCCCCCCCC OOOOOOOOO NNN NNN TTTTTTTTTTTTTTT IIIIIIIII OOOOOOOOO CCCCCCCCCCCC OOOOOOOOO NNN NNN TTTTTTTTTTTTTTT III OOO OOO CCC OOO OOO NNN NNN TTT III OOO OOO CCC OOO OOO NNN NNN TTT III OOO OOO CCC OOO OOO NNN NNN TTT III OOO OOO CCC OOO OOO NNNNNN NNN TTT III OOO OOO CCC OOO OOO NNNNNN NNN TTT III OOO OOO CCC OOO OOO NNNNNN NNN TTT III OOO OOO CCC OOO OOO NNN NNN NNN TTT III OOO OOO CCC OOO OOO NNN NNN NNN TTT III OOO OOO CCC OOO OOO NNN NNN NNN TTT III OOO OOO CCC OOO OOO NNN NNNNNN TTT III OOO OOO CCC OOO OOO NNN NNNNNN TTT III OOO OOO CCC OOO OOO NNN NNNNNN TTT III OOO OOO CCC OOO OOO NNN NNN TTT III OOO OOO CCC OOO OOO NNN NNN TTT III OOO OOO CCC OOO OOO NNN NNN TTT IIIIIIIII OOOOOOOOO CCCCCCCCCCCC OOOOOOOOO NNN NNN TTT IIIIIIIII OOOOOOOOO CCCCCCCCCCCC OOOOOOOOO NNN NNN TTT IIIIIIIII OOOOOOOOO CCCCCCCCCCCC OOOOOOOOO NNN NNN TTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT Request created: 24-April-1978 05:53:58 File: DSKB0 :IOCONT.LST [8,296] Created: 20-April-1967 05:51:00 Printed: 24-April-1978 05:53:33 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:1874 File will be deleted after printing IOCONT - CONTROL FOR IO PROGRAMMED OPERATORS MACRO 10 05:51 24-APR-78 PAGE 1 S MAC 24-APR-78 21:40 8-9-95 XLIST LIST TITLE IOCONT - CONTROL FOR IO PROGRAMMED OPERATORS SUBTTL 8-9-95 EXTERNAL BUFCLC,ERROR,IOSETC,IOIERR,BUFCLR EXTERNAL SETBYT,UINTQ,WAIT1,WSYNC,ADRCK EXTERNAL UXIT,USRJDA,JOBJDA,ILLMOD,PUUOAC,PIOMOD EXTERNAL JOB,ASSIN,PJOBN,ADRERR,USRREL,CUXIT1,CUXIT2 EXTERNAL SETIOS ;FOR PURPOSES OF COMMENTING THIS SUBROUTINE THE ;TERM BUFFER HEADER SHALL REFER TO THE 3 WORD HEADER ;WHICH IS USED BY THE USER PROGRAM AND THIS EXEC FOR ;REFERING TO THE RING BUFFERS. ;THE CONTENTS OF THE 3 WORD HEADER (AS SET BY THE MONITOR FOR THE USE ; FROM USERS PROGRAM BY AN INPUT OR AN OUTPUT UUO ; WORD 2: BYTE POINTER TO CURRENT ITEM. ; WORD 3: POSITIVE ITEM COUNT (NO. OF ITEMS LEFT ON ; INPUT, NO. OF FREE ITEMS TO GO ON OUTPUT). ;EACH BUFFER IN THE RING HAS FOLLOWING FORMAT (AS THE USER SEES IT) ; WORD 1: RESERVED FOR BLOCK NUMBER FOR FIXED ADDRESS DEVIC ; WORD 2: BIT 0=USE BIT FOR THIS BUFFER ; BIT 1-17=NO. OF WORDS WHICH FOLLOW (LENGTH OF BUF ; BIT 18-35=ADDRESS OF SECOND WORD OF NEXT BUFFER I ; WORD 3: LH=LINK TO NEXT BLOCK (SET BY MONITOR FOR DECTAB ; RH=NO. OF WORDS OF DATA WHICH FOLLOW (USUALLY ; SET BY EXEC EXCEPT TO COMPUTE WORD COUNT ; THAT HE WANTS TO COMPUTE WORD COUNT ; HIMSELF INSTEAD OF HAVING THE MONITOR DO IT ; USING THE BYTE POINTER IN THE 3 WORD HEADER). IOCONT - CONTROL FOR IO PROGRAMMED OPERATORS MACRO 10 05:51 24-APR-78 PAGE 2 IOCONT MAC 24-APR-78 23:08 8-9-95 ,H. R. MORSE 2/21/65 ,CALLING SEQUENCE , CLOSE D, , EXIT ALWAYS RETURNS HERE , THIS ROUTINE PROCESSES THE CLOSE UUO AND DETERMINES WHETHER THE ,OUTPUT ROUTINE SHOULD BE CALLED IF OUTPUT WERE ACTIVE, CLEARS ,THE INPUT BUFFER AREA IF INPUT WERE ACTIVE, AND CLEARS THE ,ITEM COUNTS OF BOTH INPUT AND OUTPUT HEADERS SERVING TO BOTH ,TERMINATE THE USE OF THE DEVICE AND SET THE I/O ROUTINES TO ,ACCEPT ANOTHER INPUT OR OUTPUT COMMAND IN A CLEAR STATE. ,IN THE CASE OF OUTPUT DEVICES. THE CLOSE ROUTINE OF THE DEVICE HANDL ,ING ROUTINE IS CALLED IN CASE ANY SPECIAL HANDLING IS REQUIRED. ,MONITOR INTERFACE , STORAGE: 30 , ROUTINES CALLED: DCL, WAIT1, UXIT , SYMBOLS SET/USED: , ACCUMULATORS: DAT S/U PROG U , DEVDAT U TAC S/U , IOS S/U TAC1 S/U , PDP U , DEVICE DATA BLOCK: DEVBUF U , DEVIOS S/U , DEVSER U , IO STATUS WORD: IOACT S IODTER S , IOBEG S IOEND S , IOBKTL 2 IOFST S , IODEND S IOIMPM S , IODERR S IOSTRT S , IODISC S IOW S , JOB BUFFER AREA: IOUSE S , JBFCTR S IOCONT - CONTROL FOR IO PROGRAMMED OPERATORS MACRO 10 05:51 24-APR-78 PAGE 3 IOCONT MAC 24-APR-78 23:08 8-9-95 INTERNAL CLOSE1 000000' 663300 002000 CLOSE1: TLOE DEVDAT,CLOSB ;HAS A CLOSE ALREADY BEEN DONE? 000001' 254000 000000* JRST UXIT ;YES, FOR THIS CHANNEL 000002' 135040 000000* LDB TAC,PUUOAC ;USER DEVICE CHANNEL NO. 000003' 502301 000000* HLLM DEVDAT,USRJDA(TAC) 000004' 261140 000005 PUSH PDP,DAT 000005' 135040 000000* LDB TAC,PIOMOD 000006' 305040 000016 CAIGE TAC,DR 000007' 254000 000013' JRST UCLS4 000010' 200046 000003 MOVE TAC,DEVSER(DEVDAT) 000011' 260141 000001 PUSHJ PDP,DCL(TAC) 000012' 254000 000060' JRST UCLS3 000013' 260140 000000* UCLS4: PUSHJ PDP,WAIT1; WAIT UNTIL DEVICE IS INACTIVE. 000014' 606600 000002 TRNN UUO,CLSIN ;SUPPRESS INPUT? 000015' 607300 200000 TLNN DEVDAT,IBUFB ;NO, WAS INPUT BUFFER SPECIFIED? 000016' 254000 000041' JRST UCLS2 ;NO 000017' 550106 000006 HRRZ TAC1,DEVBUF(DEVDAT) 000020' 505100 000007 HRLI TAC1,PROG 000021' 550260 000002 HRRZ DAT,@TAC1 ;FIRST WORD OF 3 WORD BUFFER HEADER 000022' 540120 000002 HRR TAC1,@TAC1 ;REMEMBER CURRENT BUFFER IN TAC1 000023' 515040 400000 HRLZI TAC,IOUSE ;USER BOTH FOR HEADER AND EACH BUFFER 000024' 322240 000034' JUMPE DAT,UCLS1 ;HAS A RING BEEN SETUP?(NO IF 0) 000025' 505240 000007 HRLI DAT,PROG ;YES 000026' 540260 000005 UCLS0: HRR DAT,@DAT; ADVANCE CURRENT INPUT BUFFER ADDRESS ADRCHK DAT ;IS ADDRESS OF? 000027' 260140 000000* PUSHJ PDP,ADRCK 000030' 550040 000005 HRRZ TAC,DAT 000031' 412060 000005 ANDCAM TAC,@DAT ;YES, CLEAR USE BIT. 000032' 312100 000005 CAME TAC1,DAT; DONE? 000033' 254000 000026' JRST UCLS0 000034' 505240 000007 UCLS1: HRLI DAT,PROG 000035' 540246 000006 HRR DAT,DEVBUF(DEVDAT) 000036' 436060 000005 IORM TAC,@DAT ;FLAG AS VIRGIN BUFFER IN 3 WORD HEADER 000037' 271240 000002 ADDI DAT,2; JBFCTR:=0 000040' 402020 000005 SETZM @DAT ;CLEAR INPUT ITEM COUNT. 000041' 606600 000001 UCLS2: TRNN UUO,CLSOUT ;SUPPRESS OUTPUT? 000042' 607300 100000 TLNN DEVDAT,OBUFB ;NO.WAS OUPUT BUFFER SPECIFIED? 000043' 254000 000060' JRST UCLS3 ;NO 000044' 544246 000006 HLR DAT, DEVBUF(DEVDAT) ;VIRGIN OUBPUT BUFFER? 000045' 505240 000007 HRLI DAT, PROG 000046' 337020 000005 SKIPG @DAT 000047' 254000 000060' JRST UCLS3 ;YES 000050' 200046 000003 MOVE TAC,DEVSER(DEVDAT) 000051' 260141 000001 PUSHJ PDP,DCL(TAC); CLOSE OUTPUT BUFFER 000052' 544246 000006 HLR DAT,DEVBUF(DEVDAT) 000053' 505240 000007 HRLI DAT,PROG 000054' 515040 400000 HRLZI TAC,IOUSE 000055' 436060 000005 IORM TAC,@DAT 000056' 271240 000002 ADDI DAT,2 000057' 402020 000005 SETZM @DAT; JBFCTR:=0 IOCONT - CONTROL FOR IO PROGRAMMED OPERATORS MACRO 10 05:51 24-APR-78 PAGE 3-1 IOCONT MAC 24-APR-78 23:08 8-9-95 000060' 260140 000013* UCLS3: PUSHJ PDP,WAIT1 000061' 262140 000005 POP PDP,DAT 000062' 630000 000471' TDZ IOS,[XWD IOEND,IODEND] 000063' 661000 000002 TLO IOS,IOBEG 000064' 202006 000002 MOVEM IOS,DEVIOS(DEVDAT); IODISC:=0 000065' 254000 000001* JRST UXIT; EXIT THIS UUO IOCONT - CONTROL FOR IO PROGRAMMED OPERATORS MACRO 10 05:51 24-APR-78 PAGE 4 IOCONT MAC 24-APR-78 23:08 8-9-95 ,DEC 06 00 EX UUO L PT PRE 02 INBUF,OUTBUF ,H. R. MORSE 64-12-26 ,CALLING SEQUENCE , INBUF D,N , EXIT RETURNS HERE IF MEMORY NOT EXCEEDED ,CALLING SEQUENCE , OUTBUF D,N , EXIT RETURNS HERE IF MEMORY NOT EXCEEDED , SETS UP AN N BUFFER RING FOLLOWING THE USERS PROGRAM FOR DEVICE , D AND INITIALIZES THE JOB BUFFER AREA HEADER: , JBFADR0:=1, JBFADR 1-17:=0 , JBFADR 18-35:=ADDRESS OF FIRST BUFFER IN RING ,INPUT SETS DEVIAD:=ADDRESS OF FIRST BUFFER IN RING ,OUTPUT SET DEVOAD:=ADDRESS OF FIRST BUFFER IN RING ,BUFPNT IS RESTORED. ,MONITOR INTERFACE , STORAGE:13 , ROUTINES CALLED: BUFCLC, UXIT , SYMBOLS SET/USED: , ACCUMULATORS: BUFPNT S/U PROG U , DEVDAT U TAC S/U , PDP U TAC1 S/U , DEVICE DATA BLOCK: DEVBUF U , DEVIAD S , DEVOAD S , JOB BUFFER AREA: JBFADR S IOCONT - CONTROL FOR IO PROGRAMMED OPERATORS MACRO 10 05:51 24-APR-78 PAGE 5 IOCONT MAC 24-APR-78 23:08 8-9-95 INTERN UINBF, UOUTBF 000066' 261140 000012 UOUTBF: PUSH PDP,BUFPNT; SAVE BUFPNT ON STACK 000067' 260140 000000* PUSHJ PDP,BUFCLC; SET UP BUFFER RIGH 000070' 544046 000006 HLR TAC,DEVBUF(DEVDAT);TAC:=OUTPUT BUFFER AREA HEADER ADDRE 000071' 542506 000010 HRRM BUFPNT,DEVOAD(DEVDAT);DEVOAD:=ADDRESS OF FIRST BUFFER , IN RING 000072' 505040 000007 UOBF1: HRLI TAC,PROG; RELOCATE BUFFER AREA HEADER ADDRESS 000073' 202520 000001 MOVEM BUFPNT,@TAC; JBFADR:=IOUSE,ADDRESS OF FIRST BUFFER , IN RING 000074' 262140 000012 POP PDP,BUFPNT; RESTORE BUFPNT FROM STACK 000075' 254000 000065* JRST UXIT; EXIT THIS UUO 000076' 261140 000012 UINBF: PUSH PDP,BUFPNT; SAVE BUFPNT ON STACK 000077' 260140 000067* PUSHJ PDP,BUFCLC; SET UP BUFFER RING 000100' 542506 000007 HRRM BUFPNT,DEVIAD(DEVDAT); DEVIAD:=ADDRESS OF FIRST BUFFER , IN RING 000101' 540046 000006 HRR TAC,DEVBUF(DEVDAT); TAC:=INPUT BUFFER AREA HEADER ADDRE 000102' 254000 000072' JRST UOBF1 IOCONT - CONTROL FOR IO PROGRAMMED OPERATORS MACRO 10 05:51 24-APR-78 PAGE 6 IOCONT MAC 24-APR-78 23:08 8-9-95 ,DEC 06 00 EX UUO L PT PRE 03 INIT ,H. R. MORSE AND D. A. WITCRAFT 2/21/65 ,CALLING SEQUENCE , INIT D,MODUS D=JOB DEVICE CHANNEL , MODUS=IORDEL,IOCON,IOWC,MODE. , SIXBIT/NAME/ DEVICE NAME , XWD OBUF,IBUF BUFFER AREA HEADER ADDRESS , EXIT1 DEVICE NOT AVAILABLE , EXIT2 DEVICE PROPERLY AVAILABLE ,THE LEFT HALF OF NAME CONTAINS THE THREE LETTER DEVICE MNEMONIC, , THE RIGHT HALF IS EITHER ZOER (SYSTEM WILL ASSIGN AN ARBITRARY , UNIT) OR NON-ZERO TO REQUEST A SPECIFIC UNIT (LEFT JUSTIFIED). ,IF THE SELECTED DEVICE IS NOT AVAILABLE. CONTROL RETURNS TO EXIT1. ,OTHERWISE, THE DEVICE IS ASSIGNED TO THE USER AND ATTACHED TO HIS ,CHANNEL D. THE DEVICE IS INITIALIZED IN THE FOLLOWING MANNER AFTER ,IOACT IS ZERO: , IOBEG:=1 , DATA MODE:=BITS 32-35 OF AC UUO , IOCON:=BIT 31 OF AC UUO , IOWC:=BIT 40 OF AC UUO , IORDEL:=BIT 29 OF AC UUO , IOACT:=IODEND:=IOBKTL:=IODTER:=IODERR:=IOIMPM:=0 , JBFADR:=JBFCTR:=0 FOR THE SPECIFIED BUFFERS. , DEVBUF:=OBUF,IBUF ,MONITOR INTERFACE , STORAGE: 20 , ROUTINES CALLED: UINTQ, ASSIGN(UASG1),USEL,UINITZ,UXIT , SYMBOLS SET/USED: , ACCUMULATORS: DEVDAT U , PDP U TAC U , PROG U TAC1 S/U , DEVICE DATA BLOCK: DEVBUF S IOCONT - CONTROL FOR IO PROGRAMMED OPERATORS MACRO 10 05:51 24-APR-78 PAGE 7 IOCONT MAC 24-APR-78 23:08 8-9-95 INTERN UINIT,UINIT1 000103' 135040 000002* UINIT: LDB TAC,PUUOAC ;USER DEVICE CHANNEL NO. 000104' 332301 000003* SKIPE DEVDAT,USRJDA(TAC) ;IS A DEVICE ALREADY HERE? 000105' 260140 000426' PUSHJ PDP,RELEA0 ;YES, RELEASE IT 000106' 200600 000040 MOVE UUO,40 ;RESTORE AC UUO FROM LOC 40 000107' 260140 000000* PUSHJ PDP,UINTQ ;GET SIXBIT DEVICE NAME FROM USER 000110' 350003 000000 AOS (PDP) 000111' 200200 000000* UINIT1: MOVE ITEM,JOB ;CALLED BY SAVGET 000112' 260140 000000* PUSHJ PDP,ASSIN; TRY TO ASSIGN DEVICE 000113' 254000 000000* JRST CUXIT1; NOT AVAILABLE 000114' 135040 000103* LDB TAC,PUUOAC 000115' 552301 000104* HRRZM DEVDAT,USRJDA(TAC) ;STORE DDB ADR IN DEVICE TABL 000116' 515040 000002 HRLZI TAC,IOBEG 000117' 202046 000002 MOVEM TAC,DEVIOS(DEVDAT) 000120' 260140 000000* PUSHJ PDP,SETIOS ;SET DDB IOS STATUS WORD ;FROM RT. HALF OF UUO 000121' 260140 000107* PUSHJ PDP,UINTQ 000122' 505300 400000 HRLI DEVDAT, INITB ;SET INIT UUO BIT 000123' 607040 777777 TLNN TAC,-1 000124' 254000 000127' JRST UINIT4 ;OUTPUT NOT SPECIFIED 000125' 502046 000006 HLLM TAC,DEVBUF(DEVDAT) 000126' 661300 100000 TLO DEVDAT,OBUFB ;SET OUTPUT BUFFER SPECIFIED BIT 000127' 606040 777777 UINIT4: TRNN TAC,-1; IS IBUF SPECIFIED? 000130' 254000 000133' JRST UINIT5 ;INPUT BUF NOT SPECIFIED 000131' 542046 000006 HRRM TAC,DEVBUF(DEVDAT); DEVBUF 18-35:=IBUF 000132' 661300 200000 TLO DEVDAT,IBUFB ;SET INPUT BUFFER SPECIFIED BIT 000133' 550100 000001 UINIT5: HRRZ TAC1,TAC; TAC1:=PROG,IBUF 000134' 260140 000142' PUSHJ PDP,UINITZ; JBFADR:=JBFCTR:=0 FOR IBUF 000135' 544100 000001 HLR TAC1,TAC; TAC1:=PROG,OBUF 000136' 260140 000142' PUSHJ PDP,UINITZ; JBFADR:=JBFCTR:=0 FOR OBUF 000137' 135040 000114* LDB TAC,PUUOAC ;STORE UUO BITS FOR THIS CHANNEL 000140' 502301 000115* HLLM DEVDAT,USRJDA(TAC) 000141' 254000 000000* JRST CUXIT2 IOCONT - CONTROL FOR IO PROGRAMMED OPERATORS MACRO 10 05:51 24-APR-78 PAGE 8 IOCONT MAC 24-APR-78 23:08 8-9-95 ,DEC 06 00 EX COM L PT PRE 03 UINITZ ,H. R. MORSE 64-12-26 ,CALLING SEQUENCE , PUSHJ PDP,UINITZ , EXIT RETURNS HERE IF MEMORY NOT EXCEEDED. ,SETS JBFADR:=JBFCTR:=0 FOR THE BUFFER AREA HEADER WHOSE ADDRESS ,IS IN AC TAC1. ALSO,JBFPTR 0-5:=JBFPTR 12-17:=0,JBFPTR 6-11:=BYTE S ,MONITOR INTERFACE , STORAGE:15 , ROUTINES CALLED: ADRCK, SETBYT , SYMBOLS SET/USED: , ACCUMULATORS: PDP U TAC S/U , TAC1 S/U , JOB BUFFER AREA: JBFADR S , JBFCTR S , JBFPTR S INTERN UINITZ 000142' 606100 777777 UINITZ: TRNN TAC1,-1; IS BUFFER SPECIFIED? 000143' 263140 000000 POPJ PDP,;RETURN 000144' 505100 000007 HRLI TAC1,PROG 000145' 260140 000027* PUSHJ PDP,ADRCK ;CHECK 3 WORD BUFFER HEADER 000146' 551042 000002 HRRZI TAC,2(TAC1) 000147' 402020 000002 SETZM @TAC1; JBFADR:=0 000150' 350000 000002 AOS TAC1 000151' 261140 000001 PUSH PDP,TAC 000152' 261140 000002 PUSH PDP,TAC1 000153' 350000 000002 AOS TAC1 000154' 402020 000002 SETZM @TAC1; JBFCTR:=0 000155' 260140 000000* PUSHJ PDP,SETBYT; JBFPTR 6-11:=BYTE SIZE 000156' 621040 770077 TLZ TAC,770077 000157' 262140 000002 POP PDP,TAC1 000160' 502060 000002 HLLM TAC,@TAC1 000161' 262140 000001 POP PDP,TAC 000162' 263140 000000 POPJ PDP,; RETURN IOCONT - CONTROL FOR IO PROGRAMMED OPERATORS MACRO 10 05:51 24-APR-78 PAGE 9 IOCONT MAC 24-APR-78 23:08 8-9-95 INTERNAL IN 000163' 603000 000020 IN: TLNE IOS,IO ;IS THIS DEVICE ALREADY DOING OUTPUT! 000164' 260140 000060* PUSHJ PDP,WAIT1 ;YES,WAIT TILL IT IS FINISHED 000165' 135040 000137* LDB TAC,PUUOAC ;SET BIT THAT SAYS AN INPUT UUO HAS OCC 000166' 661300 010000 TLO DEVDAT,INPB ;FOR THIS DEVICE 000167' 502301 000140* HLLM DEVDAT,USRJDA(TAC) ;IN LH OF CURRENT JOB DEVICE 000170' 135040 000005* LDB TAC,PIOMOD ;IO MODE 000171' 301040 000016 CAIL TAC,DR ;IS THE IO MODE DUMP MODE? 000172' 254000 000271' JRST INDMP ;YES 000173' 540246 000006 IN1: HRR JBUF,DEVBUF(DEVDAT) ;NO, GET ADDRESS OF R WORD BU 000174' 515040 400000 HRLZI TAC,IOUSE ;BUFFER INUSE BIT 000175' 505240 000007 HRLI JBUF,PROG ;SET INDEX FIELD FOR RELOCATION USING A 000176' 260140 000145* PUSHJ PDP,ADRCK ;CHECK BUFFER HEADER 000177' 551045 000002 HRRZI TAC,2(JBUF) ;END ADDRESS OF 3 WORD HEADER 000200' 200120 000005 MOVE TAC1,@JBUF ;GET WORD 1 OF 3 WORD BUFFER HEADER (PO 000201' 505100 000007 HRLI TAC1,PROG ;SET INDEX FIELD COR RELOCATION USING A 000202' 337020 000005 SKIPG @JBUF ;HAS A BUFFER RING BEEN SET UP (RH NON- ;WHICH HAS BEEN REFERENCED BY PREVIOUS 000203' 254000 000256' JRST INPUTF ;NO, GO SET UP BUFFER IF NECESSARY AND ADRCHK TAC1 ;YES, CHECK ADDRESS TO SEE IF IN BOUNDS 000204' 260140 000176* PUSHJ PDP,ADRCK 000205' 550040 000002 HRRZ TAC,TAC1 000206' 413060 000002 ANDCAB TAC,@TAC1 ;FLAG THIS BUFFER AS BEING FILLED (USE ;AND GET POINTER TO NEXT BUFFER 000207' 542060 000005 HRRM TAC,@JBUF ;SET WORD 1 IN 3 WORD HEADER TO NEXT BU ADRCHK TAC ;AND CHECK ITS ADDRESS TO SEE IF IN BOUNDS 000210' 260140 000204* PUSHJ PDP,ADRCK 000211' 550040 000001 HRRZ TAC,TAC 000212' 200006 000002 INPUT0: MOVE IOS,DEVIOS(DEVDAT) ;GET IO STATUS WORD 000213' 606000 010000 TRNN IOS,IOACT ;IS THE DEVICE ALREADY ACTIVE (FILLING 000214' 254000 000220' JRST INPT0B ;NO. 000215' 606000 000040 TRNN IOS,IOCON ;DOES THE USER WANT TO STOP AFTER EVERY 000216' 254000 000224' JRST INPT0C ;NO. HE WANTS NORMAL CONTINUOUS OVERLAP 000217' 260140 000000* PUSHJ PDP,WSYNC ;YES, WAIT TILL DEVICE FINISHES WITH ON 000220' 505040 000007 INPT0B: HRLI TAC,PROG ;SET FOR RELOCATION 000221' 540060 000001 HRR TAC,@TAC ;GET POINTER 1 BLOCK AHEAD OF NEXT BBUF 000222' 331020 000001 SKIPL @TAC 000223' 260140 000276' PUSHJ PDP,CALIN 000224' 540120 000002 INPT0C: HRR TAC1,@TAC1 000225' 335020 000002 INPT0A: SKIPGE @TAC1 000226' 254000 000236' JRST INPUT2 000227' 260140 000217* INPUT1: PUSHJ PDP,WSYNC 000230' 335020 000002 SKIPGE @TAC1 000231' 254000 000236' JRST INPUT2 000232' 612000 000472' TDNE IOS,[XWD IOEND,IODERR] 000233' 254000 000250' JRST INEOF 000234' 200006 000002 MOVE IOS,DEVIOS(DEVDAT) 000235' 254000 000227' JRST INPUT1 000236' 271100 000001 INPUT2: ADDI TAC1,1 000237' 550220 000002 HRRZ ITEM,@TAC1 IOCONT - CONTROL FOR IO PROGRAMMED OPERATORS MACRO 10 05:51 24-APR-78 PAGE 9-1 IOCONT MAC 24-APR-78 23:08 8-9-95 000240' 275100 000001 SUBI TAC1,1 000241' 261140 000004 PUSH PDP,ITEM ;SAVE WORD COUNT AS STORED BY IO SERVIC 000242' 260140 000000* PUSHJ PDP,IOSETC 000243' 262140 000004 POP PDP,ITEM 000244' 135040 000170* LDB TAC,PIOMOD ;GET DEVICE DATA MODE 000245' 306040 000010 CAIN TAC, I ;IMAGE MODE? 000246' 202220 000005 MOVEM ITEM,@JBUF ;YES, STORE WORD COUNT NOT ITEM COUNT 000247' 254000 000075* JRST UXIT IOCONT - CONTROL FOR IO PROGRAMMED OPERATORS MACRO 10 05:51 24-APR-78 PAGE 10 IOCONT MAC 24-APR-78 23:08 8-9-95 000250' 551000 020000 INEOF: HRRZI IOS,IODEND 000251' 436006 000002 IORM IOS,DEVIOS(DEVDAT) 000252' 254000 000247* JRST UXIT 000253' 540100 000014 INPUTA: HRR TAC1,UUO 000254' 412060 000002 ANDCAM TAC,@TAC1 000255' 254000 000212' JRST INPUT0 ;HERE ON FIRST INPUT AFTER INIT, INIT & LOOKUP, OR INIT & LOOKUP & IN 000256' 412060 000005 INPUTF: ANDCAM TAC,@JBUF ;MARK THAT BUFFERS HAVE BEEN REFERENCED 000257' 540060 000005 HRR TAC,@JBUF ;PICKUP ADDRESS OF FIRST BUFFERE IN RING 000260' 542046 000007 HRRM TAC,DEVIAD(DEVDAT) ;SET CURRENT RING BUFFER ADDR ;IN DEVICE DATA BLOCK 000261' 336020 000005 SKIPN @JBUF ;HAS A RING BEEN SET UP YET? 000262' 254000 000265' JRST INPUT3 ;NO, GO SET UP A 2 BUFFER RING 000263' 260140 000276' PUSHJ PDP,CALIN ;YES, GO START TO SERVICE ROUTINE ;FILLING BUFFER 000264' 254000 000225' JRST INPT0A 000265' 541600 000002 INPUT3: HRRI UUO,2 ;BUFFERS NOT SETUP YET. ;SET UP 2 000266' 260140 000076' PUSHJ PDP, UINBF 000267' 513000 000014 HLLZS UUO ;CLEAR RIGHT HALF 000270' 254000 000173' JRST IN1 000271' 260140 000227* INDMP: PUSHJ PDP,WSYNC 000272' 200046 000003 MOVE TAC,DEVSER(DEVDAT) 000273' 260141 000007 PUSHJ PDP,DDI(TAC) 000274' 260140 000164* PUSHJ PDP,WAIT1 000275' 254000 000252* JRST UXIT IOCONT - CONTROL FOR IO PROGRAMMED OPERATORS MACRO 10 05:51 24-APR-78 PAGE 11 IOCONT MAC 24-APR-78 23:08 8-9-95 000276' 603000 000040 CALIN: TLNE IOS,IOEND 000277' 263140 000000 POPJ PDP, 000300' 260140 000271* PUSHJ PDP,WSYNC 000301' 261140 000002 PUSH PDP,TAC1 000302' 200046 000003 MOVE TAC,DEVSER(DEVDAT) 000303' 260141 000003 PUSHJ PDP,DIN(TAC) 000304' 262140 000002 POP PDP,TAC1 000305' 263140 000000 POPJ PDP, IOCONT - CONTROL FOR IO PROGRAMMED OPERATORS MACRO 10 05:51 24-APR-78 PAGE 12 IOCONT MAC 24-APR-78 23:08 8-9-95 ,DEC 06 00 EX COM L PT PRE 03 OUTPUT ,H.R. MORSE 2/21/65 ,CALLING SEQUENCE , OUTPUT D, , EXIT ,OR , OUTPUT D, ADR , EXIT ,IF INPUT IS ACTIVE, WAIT FOR IT TO COMPLETE. ,IF DUMP MODE WAS SELECTED BY THE LAST INIT UUO., THEN A CHECK IS MADE , TO SEE IF DUMP FILES ARE LEGAL FOR THIS DEVICE. IF DUMP FILES AR , NOT LEGAL. (IORET=0) AN ERROR MESSAGE IS PRINTED ON THE TTY AND , CONTROL IS TRANSFERRED T THE COMMAND INPUT ROUTINE. , OTHERWISE,THE PROGRAM WAITS UNTIL THE DEVICE IS INACTIVE AND THEN , WRITES THE DUMPFILE AND RETURNS CONTROL TO THE USERS PROGRAM ,IF THE MODE IS NOT DUMP, THEN ,1) IF ADR IS NOT ZERO, WAIT FOR DEVICE TO BECOME INACTIVE THEN SET T , CURRENT BUFFER ADDRESS EQUAL TO ADR AND AN INDICATOR (JBFADR0) , SPECIFYING THAT THIS BUFFER RING HAS NEVER BEEN REFERENCED FROM T , USERS PROGRAM BY AN INPUT OR AN OUTPUT UUO. OTHERWISE, GO TO , 2) DIRECTLY. ,2) IF THE BUFFER RING HAS NEVER BEEN REFERENCED (JBFADR0=1), THE , BUFFER IS CLEARED. IOUSE SET TO ZERO AND , IF THE CURRENT BUFFER ADDRESS IS ZERO, A TWO BUFFER RING IS SE , THE GO TO 8 , ,3) IF THE BUFFER RING HAS BEEN REFERENCED (JBFADR0=0 ,THEN A C , MADE TO DETERMINE IF THE WORD COUNT IS TO BE COMPUTED. , IF THE WORD COUNT IS TO BE COMPUTED (IOWC=0), IT IS SET EQUAL , TO THE ADDRESS FOR THE LAST DATA WORD MINUS THE ADDRESS OF THE , BUFFER MINUS ONE, ,4) IOUSE IS SET TO ONE. INDICATING THAT THE BUFFER IS FULL OR BEING , EMPTIED, AND THE CURRENT BUFFER ADDRESS IS ADVANCED. ,5) IF THE DEVICE IS NOT ACTIVE (IOACT=0), OUTPUT IS STARTED. ,6) IF THE CURRENT BUFFER IS FULL OR BEING EMPTIED (IOUSE=1), , THE PROGRAM WAITS UNTIL THE DEVICE IS INACTIVE ,7) THE CURRENT BUFFER IS CLEARED. ,8) THE ITEM POINTER IS INITIATED TO THE CURRENT BUFFER ADDRESS+1 , AND THE ITEM COUNT IS SET TO THE PRODUCT OF THE BUFFER SIZE , MINUS ONE AND THE INTEGER PART OF 36/BYTE SIZE. ,9) RETURN TO THE USERS PROGRAM IOCONT - CONTROL FOR IO PROGRAMMED OPERATORS MACRO 10 05:51 24-APR-78 PAGE 13 IOCONT MAC 24-APR-78 23:08 8-9-95 ,MONITOR INTERFACE , STORAGE: 54 , ROUTINE CALLED: ADRCK, BUFCLR, CALOUT, INOUT, IOSETC, OUTA, , OUTBUF, UXIT, WSYNC, , SYMBOLS SET/USED: , ACCUMULATORS: DEVDAT U PROG U , IOS U TAC S/U , ITEM S/U TAC1 S/U , JBUF S/U UUO S , PDP U , DEVICE DATA BLOCK: DEVBUF U DEVOAD S , IO STATUS WORD: IOACT U , IOWC U , JOB BUFFER AREA: JBADR S/U , JBFCTR S , JBPPTR S/U , BUFFER SIZE U , IOUSE S/U , WORD COUNT S IOCONT - CONTROL FOR IO PROGRAMMED OPERATORS MACRO 10 05:51 24-APR-78 PAGE 14 IOCONT MAC 24-APR-78 23:08 8-9-95 INTERN OUT 000306' 607000 000020 OUT: TLNN IOS,IO ;IS THIS DEVICE ALREADY DOING INPUT? 000307' 260140 000274* PUSHJ PDP,WAIT1 ;YES, WAIT TILL IT BECOMES INACTIVE 000310' 135040 000165* LDB TAC,PUUOAC 000311' 661301 000167* TLO DEVDAT,OUTPB HLLM DEVDAT,USRJDA(TAC) 000312' 135040 000244* LDB TAC,PIOMOD 000313' 301040 000016 CAIL TAC,DR 000314' 254000 000400' JRST OUTDMP PUSHJ PDP,OUTA 000315' 544246 000006 OUT1: HLR JBUF,DEVBUF(DEVDAT) 000316' 260140 000210* PUSHJ PDP,ADRCK ;CHECK END OF 3 WORD HEADER 000317' 551045 000002 HRRZI TAC,2(JBUF) 000320' 505240 000007 HRLI JBUF,PROG 000321' 515040 400000 HRLZI TAC, IOUSE 000322' 337120 000005 SKIPG TAC1, @JBUF ;HAS THIS BUFFER EVER BEEN ;;REFERENCED?(JBFADR0=0?) 000323' 254000 000357' JRST OUTF 000324' 350000 000005 AOS JBUF 000325' 550060 000005 HRRZ TAC, @JBUF 000326' 271100 000001 ADDI TAC1, 1 000327' 274040 000002 SUB TAC, TAC1 000330' 505100 000007 HRLI TAC1,PROG 000331' 602000 000020 TRNE IOS, IOWC ;COMPUTE WORD COUNT?(IOWC=0?) 000332' 254000 000336' JRST OUT2 ADRCHK TAC1 ;PROCEED IF ADDRESS OF WORD COUNT 000333' 260140 000316* PUSHJ PDP,ADRCK 000334' 550040 000002 HRRZ TAC,TAC1 ;0? 000110' 540547 000073* HRR BUFWRD,JOBFF(PROG) 000111' 271540 000001 ADDI BUFWRD,1 000112' 260140 000103* PUSHJ PDP,ADRCK ;CHECK LAST ADR. OF HEADER 000113' 551052 777776 HRRZI TAC,-2(BUFPNT) 000114' 274500 000001 SUB BUFPNT,TAC 000115' 202560 000012 MOVEM BUFWRD,@BUFPNT;LINK LAST BUFFER TO FIRST BUFFER 000116' 270500 000001 ADD BUFPNT,TAC 000117' 542507 000110* HRRM BUFPNT,JOBFF(PROG);JOBFF:=C(JOBFF)+1+N(BUFFER SIZE+2) 000120' 540500 000013 HRR BUFPNT,BUFWRD; BUFPNT:=IOUSE,ADDRESS OF FIRST BUFFER , IN RING. 000121' 505500 400000 HRLI BUFPNT,IOUSE 000122' 262140 000013 POP PDP,BUFWRD; RESTORE BUFWRD FROM STACK. 000123' 263140 000000 POPJ PDP,; RETURN IOCSS - IO COMMON SYSTEM SUBROUTINES MACRO 10 05:51 24-APR-78 PAGE 10 IOCSS MAC 24-APR-78 23:13 8-15-65 ,DEC 06 00 EX COM L PT PRE 01 BUFCLR ,H. R. MORSE 64-12-26 ,CALLING SEQUENCE , PUSHJ PDP,BUFCLR , EXIT RETURNS HERE IF MEMORY NOT EXCEEDED , CLEAR THE WORD COUNT AND DATA AREA OF THE BUFFER WHOSE ADDRESS , IS IN TAC 18-35. ,MONITOR INTERFACE: , STORAGE: 13 , ROUTINE CALLED: ADRCK , SYMBOLS SET/USED: , ACCUMULATORS: PDP U TAC S/U , PROG U TAC1 S/U INTERN BUFCLR 000124' 505040 000007 BUFCLR: HRLI TAC,PROG 000125' 000000 000001* ADRCHK TAC; PROCEED IF CURRENT BUFFER ADDRESS , < PROTECTION ADDRESS. 000126' 554120 000001 HLRZ TAC1,@TAC; TAC1 18-35=SIZE 000127' 620100 400000 TRZ TAC1,400000 000130' 270100 000001 ADD TAC1,TAC; TAC1:=CURRENT BUFFER ADDRESS + SIZE ADRCHK TAC1; PROCEED IF CURRENT BUFFER ADDRESS 000131' 260140 000112* PUSHJ PDP,ADRCK 000132' 550040 000002 HRRZ TAC,TAC1 , + SIZE < PROTECTION ADDRESS. 000133' 201060 000001 MOVEI TAC,@TAC; TAC:=CURRENT BUFFER ADDRESS+1, , CURRENT BUFFER ADDRESS+1 000134' 504040 000001 HRL TAC,TAC 000135' 253040 000136' AOBJN TAC,.+1 000136' 402001 000000 CLEARM 0(TAC); WORD COUNT:=0 000137' 350000 000001 AOS TAC; TAC:=CURRENT BUFFER ADDRESS+1, , CURRENT BUFFER ADDRESS+2 000140' 251060 000002 BLT TAC,@TAC1; CLEAR BUFFER 000141' 263140 000000 POPJ PDP,; RETURN IOCSS - IO COMMON SYSTEM SUBROUTINES MACRO 10 05:51 24-APR-78 PAGE 11 IOCSS MAC 24-APR-78 23:13 8-15-65 SUBTTL 5-17-65 PART 2 IOCSS - IO COMMON SYSTEM SUBROUTINES MACRO 10 05:51 24-APR-78 PAGE 12 IOCSS MAC 24-APR-78 23:13 5-17-65 PART 2 ,CALLING SEQUENCE , PUSHJ PDP,CKS12 , EXIT ALWAYS RETURNS HERE ,CALCULATES FOLDED 12 BIT CHECKSUMS OF THE DATA WORDS IN THE ,BUFFER WHOSE ADDRESS IS IN AC TAC1. TWO ALGORITHMS ARE USED. ,ON RETURN, THE LEFT HALF OF AC TAC CONTAINS A CHECKSUM OBTAINED ,BY ACCUMULATING, IN ONES COMPLEMENT, THE DATA WORDS AND FOLDING IT. ,THE LEFT HALF OF AC DAT CONTAINS A CHECKSUM OBTAINED BY ACCUMULATING ,IN TWOS COMPLEMENT, THE DATA WORDS AND FOLDING IT. AC TAC1 ,CONTAINS A 1. ,MONITOR INTERFACE , STORAGE: 20 , ROUTINES CALLED: FOLD , SYMBOLS SET/USED: , ACCUMULATORS: DAT S/U SUB S , PDP U TAC S/U , PROG U TAC1 S/U IOCSS - IO COMMON SYSTEM SUBROUTINES MACRO 10 05:51 24-APR-78 PAGE 13 IOCSS MAC 24-APR-78 23:13 5-17-65 PART 2 INTERN CKS12 000142' 270100 000007 CKS12: ADD TAC1,PROG; TAC1:=-WORD COUNTER,ADDRESS OF FIRST DATA 000143' 350000 000002 AOS TAC1 000144' 550042 000000 HRRZ TAC,0(TAC1) 000145' 213000 000001 MOVNS TAC 000146' 350000 000002 AOS TAC1 000147' 504100 000001 HRL TAC1,TAC 000150' 402000 000001 CLEARM TAC; INITIALIZE TWOS COMPLEMENT SUM 000151' 270042 000000 CKS12A: ADD TAC,0(TAC1); TWOS COMPLEMENT ADD 000152' 253100 000151' AOBJN TAC1,CKS12A; DONE? 000153' 246040 777750 FOLD: LSHC TAC,-30 000154' 242100 777764 LSH TAC1,-14 000155' 270040 000002 ADD TAC,TAC1 000156' 246040 777764 LSHC TAC,-14 000157' 242100 777750 LSH TAC1,-30 000160' 270040 000002 ADD TAC,TAC1 000161' 622040 770000 TRZE TAC,770000 000162' 350000 000001 AOS TAC 000163' 517000 000001 HRLZS TAC 000164' 201100 000001 MOVEI TAC1,1 ;TAC1:=1 000165' 263140 000000 POPJ PDP, IOCSS - IO COMMON SYSTEM SUBROUTINES MACRO 10 05:51 24-APR-78 PAGE 14 IOCSS MAC 24-APR-78 23:13 5-17-65 PART 2 ,DEC 06 00 EX COM L PT PRE 01 CLRBYT ,H. R. MORSE 64-12-26 ,CALLING SEQUENCE , PUSHJ PDP,CLRBYT , EXIT ALWAYS RETURN HERE ,CALLED WITH A BYTE POINTER IN AC TAC, IT CLEARS THE REST OF THE ,WORD POINTED TO BY THE BYTE POINTER. ,MONITOR INTERFACE , STORAGE: 7 , SYMBOLS SET/USED: , ACCUMULATORS: PDP U , TAC U , TAC1 S/U INTERN CLRBYT 000166' 135100 000372' CLRBYT: LDB TAC1,[POINT 6,TAC,5]; TAC1:=P 000167' 137100 000373' DPB TAC1,[POINT 12,TAC,11]; TAC 0-5:=0, TAC 6-12:=P 000170' 402000 000002 SETZM TAC1 000171' 137100 000001 DPB TAC1,TAC; CLEAR BITS 36-P THROUGH 35 000172' 263140 000000 POPJ PDP,; RETURN IOCSS - IO COMMON SYSTEM SUBROUTINES MACRO 10 05:51 24-APR-78 PAGE 15 IOCSS MAC 24-APR-78 23:13 5-17-65 PART 2 ;ROUTINE TO RELEASE ALL DEVICES ASSIGNED TO JOB INTERNAL IORELS EXTERNAL PUUOAC,RELEA3 000173' 201040 000000* IORELS: MOVEI TAC,RELEA3 ;RELEASE ALL IO DEVICES(DONT CLOSE) ;ROUTINE TO DO IO FOR ALL DEVICES ASSIGNED TOI JOB ;CALL MOVEI TAC,ADR. OR IO SUB. ; PUSHJ PDP,IOALL INTERNAL IOALL 000174' 261140 000001 IOALL: PUSH PDP,TAC ;SAVE ADR. FO SUB. 000175' 515240 777760 HRLZI DAT, -20 000176' 200305 000000* IOALL1: MOVE DEVDAT, USRJDA(DAT) 000177' 200006 000002 MOVE IOS,DEVIOS(DEVDAT) 000200' 201600 000000 MOVEI UUO,0 000201' 137240 000000* DPB DAT,PUUOAC 000202' 332000 000006 SKIPE DEVDAT 000203' 260163 000000 PUSHJ PDP,@(PDP) ;CALL THE SUB. 000204' 253240 000176' AOBJN DAT, IOALL1 000205' 262140 000001 POP PDP,TAC 000206' 263140 000000 POPJ PDP, ;KILL ALL DEVICES(RELEASE WITHOUT WAITING FOR DEVICE INACTIVE) INTERNAL IOKILL EXTERNAL RELEA5 000207' 201040 000000* IOKILL: MOVEI TAC,RELEA5 000210' 254000 000174' JRST IOALL IOCSS - IO COMMON SYSTEM SUBROUTINES MACRO 10 05:51 24-APR-78 PAGE 16 IOCSS MAC 24-APR-78 23:13 5-17-65 PART 2 ,DEC 06 00 EX COM L PT PRE 01 IOSET ,H. R. MORSE 64-12-26 ,CALLING SEQUENCE , PUSHJ PDP,IOSET , EXIT ALWAYS RETURNS HERE ,THIS PROGRAM IS CALLED FROM AN INTERRUPT SERVICE ROUTINE. ,IT PUTS THE ADDRESS OF THE DATA AREA OF THE JOB (C(JBTADR18-35)) ,CONNECTED TO THE DEVICE SPECIFIED BY AC DEVDAT IN AC PROG AND ,PUTS THE ITEM POINTER (C(DEVCTR)) IN AC ITEM. ,MONITOR INTERFACE , STORAGE: 5 , SYMBOLS SET/USED: , ACCUMULATORS: DEVDAT U PDP U , ITEM S PROG S/U , DEVICE DATA BLOCK: DEVCHR U , DEVCTR U , SYSTEM ADDRESSES: JBTADR U INTERN IOSET 000211' 135340 000050* IOSET: LDB PROG,PJOBN 000212' 200206 000011 MOVE ITEM,DEVCTR(DEVDAT); ITEM:=ITEM POINTER=C(DEVCTR) 000213' 550347 000000* HRRZ PROG,JBTADR(PROG); PROG:=C(JBTADR 18-35) 000214' 263140 000000 POPJ PDP,; RETURN IOCSS - IO COMMON SYSTEM SUBROUTINES MACRO 10 05:51 24-APR-78 PAGE 17 IOCSS MAC 24-APR-78 23:13 5-17-65 PART 2 ,6-CSS-DEC-IOSETC-PL-PRE1 ,H.R. MORSE 17-11-64 ,CALLING SEQUENCE , PUSHJ PDP,IOSETC , EXIT ALWAYS RETURN HERE ,SETS JBFPTR18-35:=C(TAC1 18-35) , JBFCTR:=C(ITEM)*[WORD LENGTH/BYTE SIZE] ,WHERE WORD LENGTH:=36 DECIMAL , BYTE SIZE:=C(JBFPTR6-11) , [X]:= INTEGER PART OF X ,MONITOR INTERFACE , STORAGE: 11 , ROUTINES CALLED: ITMCT1 , SYMBOLS SET/USED: , ACCUMULATORS: JBUF S/U TAC S/U , ITEM S/U TAC1 S/U , PDP U INTERN IOSETC 000215' 271240 000001 IOSETC: ADDI JBUF,1 ;JBFPTR12-18:=0 000216' 515040 007777 HRLZI TAC,7777 ;JBFPTR18-35:=C(TAC1 18-35)+1 000217' 406060 000005 ANDM TAC,@JBUF 000220' 542120 000005 HRRM TAC1,@JBUF 000221' 350020 000005 AOS @JBUF 000222' 135100 000374' LDB TAC1,[POINT 6,@JBUF,11] ;TAC1:=BYTE SIZE 000223' 260140 000232' PUSHJ PDP,ITMCT1 ;JBFCTR:=C(ITEM)*[36/BYTE SIZE] 000224' 271000 000006 ADDI JBUF+1 000225' 202220 000005 MOVEM ITEM,@JBUF 000226' 263140 000000 POPJ PDP, ;EXIT IOCSS - IO COMMON SYSTEM SUBROUTINES MACRO 10 05:51 24-APR-78 PAGE 18 IOCSS MAC 24-APR-78 23:13 5-17-65 PART 2 ,DEC 06 00 EX COM L PT PRE 01 ITMSET, ITMCNT, ITMCT1 ,H.R. MORSE 64-12-26 ,CALLING SEQUENCE , PUSHJ PDP,ITMSET , EXIT ALWAYS RETURNS HERE ,SETS AC ITEM:=(BUFFER SIZE-1)*[WORD LENGTH/BYTE SIZE] ,WHERE BUFFER SIZE:=BITS 1-17 OF THE BUFFER HEADER WORD POINTED TO , BY C(DEVADR) , WORD LENGTH:=36 DECIMAL , BYTE SIZE:=INTEGER PART OF X. ,CALLING SEQUENCE , PUSHJ PDP,ITMCNT , EXIT ALWAYS RETURNS HERE ,SETS AC ITEM=C(ITEM)*[WORD LENGTH/BYTE SIZE] ,CALLING SEQUENCE , PUSHJ PDP,ITMCT1 , EXIT ALWAYS RETURNS HERE ,SETS AC ITEM:=C(ITEM)*[WORD LENGTH/C(TAC1)] ,MONITOR INTERFACE , STOAGE: 7 , SYMBOLS SET/USED: , ACCUMULATORS: DEVDAT U TAC S/U , ITEM S/U TAC1 S/U , PDP U , DEVICE DATA BLOCK: DEVADR U , DEVPTR U IOCSS - IO COMMON SYSTEM SUBROUTINES MACRO 10 05:51 24-APR-78 PAGE 19 IOCSS MAC 24-APR-78 23:13 5-17-65 PART 2 INTERN ITMSET,ITMCNT,ITMCT1 000227' 135200 000375' ITMSET: LDB ITEM,[POINT 17,@DEVADR(DEVDAT),17];ITEM:=BUFFER SIZE-1 000230' 275200 000001 SUBI ITEM,1 000231' 135100 000376' ITMCNT: LDB TAC1,[POINT 6,DEVPTR(DEVDAT),11];TAC1:=BYTE SIZE 000232' 201040 000044 ITMCT1: MOVEI TAC,44 ;ITEM:=C(ITEM)*[WORD LENGTH/C(TAC1)] 000233' 230040 000002 IDIV TAC,TAC1 000234' 220200 000001 IMUL ITEM,TAC 000235' 263140 000000 POPJ PDP, IOCSS - IO COMMON SYSTEM SUBROUTINES MACRO 10 05:51 24-APR-78 PAGE 20 IOCSS MAC 24-APR-78 23:13 5-17-65 PART 2 ;ROUTINE TO SET DEVICE STATUS WORD FROM UUO INTERNAL SETIOS EXTERNAL ILLMOD 000236' 135040 000377' SETIOS: LDB TAC,[POINT 4,UUO,35] ;GET DEVICE DATA MODE 000237' 201040 000001 MOVEI TAC,1 ;AND CHECK FOR LEGALITY 000240' 242042 000000 LSH TAC,(TAC1) 000241' 616046 000004 TDNN TAC,DEVMOD(DEVDAT) 000242' 254000 000000* JRST ILLMOD ;ILLEGAL MODE 000243' 620600 010000 TRZ UUO,IOACT ;LET USER SET ALL BITS EXCEPT IOACT 000244' 542606 000002 HRRM UUO,DEVIOS(DEVDAT) 000245' 263140 000000 POPJ PDP, IOCSS - IO COMMON SYSTEM SUBROUTINES MACRO 10 05:51 24-APR-78 PAGE 21 IOCSS MAC 24-APR-78 23:13 5-17-65 PART 2 ,DEC 06 00 EX COM L PT PRE 01 NEWBUF, BPNSET ,H. R. MORSE 64-12-26 ,CALLING SEQUENCE , PUSHJ PDP,NEWBUF , EXIT ALWAYS RETURNS HERE ,CLEARS THE BUFFERE CURRENTLY POINTED TO BY THE INPUT BUFFER ,ADDRESS (DEVDR) OF THE CURRENT DEVICE. SETS UP THE BYTE ,POINTER (DEVPTR), AND THE ITEM COUNT (DEVCTR) AND RETURNS. ,CALLING SEQUENCE , PUSHJ PDP,BPNSET , EXIT ALWAYS RETURNS HERE ,SETS UP THE BYTE POINTER (DEVPTR) AND THE ITEM COUNT (DEVCTR) ,OF THE CURRENT DEVICE AND RETURNS. ,MONITOR INTERFACE , STORAGE: 10 , ROUTINES CALLED: BUFCLR, ITMSET , SYMBOLS SET/USED: , ACCUMULATORS: DEVDAT U PDP U , ITEM U TAC S/U , DEVICE DATA BLOCKS: DEVADR U , DEVCTR S , DEVPTR S/U IOCSS - IO COMMON SYSTEM SUBROUTINES MACRO 10 05:51 24-APR-78 PAGE 22 IOCSS MAC 24-APR-78 23:13 5-17-65 PART 2 INTERN BPNSET,NEWBUF 000246' 550046 000007 NEWBUF: HRRZ TAC,DEVADR(DEVDAT); TAC:=INPUT BUFFER HEADER ADDRESS 000247' 260140 000124' PUSHJ PDP,BUFCLR; CLEAR INPUT BUFFER. 000250' 540046 000007 BPNSET: HRR TAC,DEVADR(DEVDAT) 000251' 515040 007737 HRLZI TAC,7737 000252' 404046 000010 AND TAC,DEVPTR(DEVDAT); DEVPTR 0-5:=0, DEVPTR 12:=0 000253' 540046 000007 HRR TAC,DEVADR(DEVDAT); DEVPTR 10-35:=C(DEVADR 18-35) + 1 000254' 350000 000001 AOS TAC 000255' 202046 000010 MOVEM TAC,DEVPTR(DEVDAT) 000256' 260140 000227' PUSHJ PDP,ITMSET; ITEM:=(BUFFER SIZE-1)[36/BYTE SIZE] 000257' 202206 000011 MOVEM ITEM,DEVCTR(DEVDAT); DEVCTR:=ITEM COUNT 000260' 263140 000000 POPJ PDP,; RETURN IOCSS - IO COMMON SYSTEM SUBROUTINES MACRO 10 05:51 24-APR-78 PAGE 23 IOCSS MAC 24-APR-78 23:13 5-17-65 PART 2 ,DEC 06 00 EX COM L PT PRE 02 SETBYT ,H. R. MORSE 64-12-26 ,CALLING SEQUENCE , PUSHJ PDP,SETBYT , EXIT ALWAYS RETURN HERE ,SETS TAC 0-5:=0 , TAC 6-11:=S , TAC 12-13:=0 , TAC 14-17:=PROG ,WHERE S=35 IF DATA MODE (IOS 32-25) IS BINARY (B) , S=8 IF DATA MODE IS IMAGE (I) , S=7 IF DATA MODE IS ASCII PACKED (A) , ASCII LINE (AL) , ASCII SEQUENCED (AS) , ASCII SEQUENCED (ASL) , OR ALTERNATE MODE BREAK (AM) ,MONITOR INTERFACE , STORAGE: 12 , SYMBOLS SET/USED: , ACCUMULATORS: PROG U TAC S , PDP U TAC1 S/U , DEVICE DATA BLOCK: DEVIOS U INTERN SETBYT 000261' 200106 000002 SETBYT: MOVE TAC1,DEVIOS(DEVDAT); FETCH DATA MODE, BITS 32-35 0 000262' 405100 000017 ANDI TAC1, 17 000263' 302100 000013 CAIE TAC1,IB ;DATA MODE IMAGE BINARY? 000264' 306100 000014 CAIN TAC1,B; IS DATA MODE=BINARY? 000265' 505040 004407 HRLI TAC,4400+PROG; SET BYTE SIZE TO 36. 000266' 306100 000010 CAIN TAC1,I; IS DATA MODE=IMAGE? 000267' 254000 000274' JRST SETBY1 000270' 602100 000014 TRNE TAC1,14; IS DATA MODE=ASCII PACKED,ASCII LINE, 000271' 254000 000273' JRST .+2; ASCII SEQUENCED,OR ASCII SEQUENCED LINE 000272' 505040 000707 HRLI TAC,700+PROG; SET BYTE SIZE TO 7. 000273' 263140 000000 POPJ PDP,; RETURN 000274' 510046 000004 SETBY1: HLLZ TAC,DEVMOD(DEVDAT) 000275' 621040 770077 TLZ TAC,770077 000276' 661040 000007 TLO TAC,PROG 000277' 263140 000000 POPJ PDP, IOCSS - IO COMMON SYSTEM SUBROUTINES MACRO 10 05:51 24-APR-78 PAGE 24 IOCSS MAC 24-APR-78 23:13 5-17-65 PART 2 ,DEC 06 00 EX COM L PT PRE 01 STORE ITEM ,H.R. MORSE 64-12-26 ,CALLING SEQUENCE , PUSHJ PDP,STODAT , EXIT1 CHECKSUM ERROR , EXIT2 BLOCK FULL OR BLOCK COMPLETE , EXIT3 DATA STORED CORRECTLY ,CALLED FROM AN INPUT SERVICE ROUTINE WITH A DATA ITEM IN AC DAT. ,STORES THE DATA ITEM IN THE BUFFER, CHECKING TO SEE IF IT WERE ,THE FIRST ITEM ON THE BUFFER AND SETTING UP THE POINTER AND ,WORD COUNT APPROPRIATELY CHECKING THE MODE TO SEE IF ANY SPECIAL ,PROCESSING NEED BE DONE. FOR EXAMPLE, GENERATION OF SEQUENCE ,NUMBERS PRECEDING EACH LINE IN SEQUENCE MODE, OR THE TERMINATION ,OF A BUFFER ON CERTAIN CHARACTERS IN OTHER MODES, OR IF THE BUFFER ,RETURN OCCURS ON AN ERROR CONDITION. THE SECOND RETURN OCCURS ,ON A BLOCK FULL CONDITION OR BLOCK COMPLETE CONDITION, THE THIRD ,RETURN OCCURS ON THE DATA STORED CORRECTLY CONDITION. THIS ,ROUTINE ALSO DOES SOME CHECKING ON INPUT OF BINARY RECORD, ,PAPER TAPE OR CARDS. ,CALLING SEQUENCE , PUSHJ PDP,STOSQD , XXXX ALWAYS SKIPS , EXIT ALWAYS RETURNS HERE ,STORES THE WORD COUNT:=C(DEVPTR 18-35) -C(DEVIAD 18-35) - 1 ,IN THE BUFFER. ,MONITOR INTERFACE , STORAGE: 69 , ROUTINES CALLED: ASCIA, CKS12, ITMSET, NEWBUF , SYMBOLS SET/USED: , ACCUMULATORS: DAT U PDP U , DEVDAT U TAC S/U , IOS S/U TAC1 S/U , ITEM S/U , DEVICE DATA BLOCK: DEVCTR U DEVPTR S/ , DEVIAD U DEVSEQ S/ , IO STATUS WORD: A U I U , AS U IOBKTL S , ASL U IODTER S , B U IOFST S/ , JOB BUFFER AREA: WORD COUNT S IOCSS - IO COMMON SYSTEM SUBROUTINES MACRO 10 05:51 24-APR-78 PAGE 25 IOCSS MAC 24-APR-78 23:13 5-17-65 PART 2 INTERN STODAT, STOSQD 000300' 603000 000004 STODAT: TLNE IOS,IOFST; WILL THE NEXT ITEM BE THE FIRST ITEM , OF A BUFFER? 000301' 260140 000246' PUSHJ PDP,NEWBUF; SET UP A NEW BUFFER. ITEM:=(BUFFER , SIZE - 1)*[36/BYTE SIZE] 000302' 135100 000000* LDB TAC1,PIOMOD; TAC1:=DATA MODE 000303' 306100 000014 CAIN TAC1,B; MODE=BINARY? 000304' 254000 000343' JRST STOBIN 000305' 621000 000004 TLZ IOS,IOFST 000306' 136246 000010 STO1: DPBI DAT,DEVPTR(DEVDAT); STORE DATA IN BUFFER. 000307' 302100 000000 CAIE TAC1,A; MODE=ASCII, IMAGE, OR BINARY? 000310' 306100 000010 CAIN TAC1,I 000311' 254000 000323' JRST STOAIB 000312' 306100 000014 CAIN TAC1,B 000313' 254000 000323' JRST STOAIB 000314' 307240 000214 CAIG DAT,214 ;LINE FEED,FORM FEED, OR VERTICAL TAB? 000315' 305240 000212 CAIGE DAT,212 000316' 254000 000320' JRST .+2 ;NO 000317' 254000 000335' JRST STOSQD ;YES 000320' 365200 000000* SOJGE ITEM,CPOPJ2; ITEM:=C(ITEM)-1. IS C(ITEM)>OR=0? 000321' 660000 040000 STOE1: TRO IOS,IOBKTL ;IOBKTL:=1 000322' 254000 000056* JRST CPOPJ 000323' 367200 000320* STOAIB: SOJG ITEM,CPOPJ2; ITEM:=C(ITEM)-1. IS C(ITEM)>0? 000324' 306100 000000 CAIN TAC1,A; MODE=ASCII? 000325' 254000 000335' JRST STOSQD 000326' 306100 000014 CAIN TAC1,B; MODE=BINARY? 000327' 254000 000353' JRST STOBND 000330' 260140 000227' STOI: PUSHJ PDP,ITMSET; ITEM:=(BUFFER SIZE-1)*[36/BYTE SIZE] , - C(DEVCTR) 000331' 274206 000011 SUB ITEM,DEVCTR(DEVDAT) 000332' 550106 000007 HRRZ TAC1,DEVIAD(DEVDAT) ;STORE ITEM COUNT INSTEAD OF 000333' 271200 000001 ADDI ITEM,1 ;IN FIRST WORD OF BUFFER 000334' 344100 000341' AOJA TAC1,STOSQE IOCSS - IO COMMON SYSTEM SUBROUTINES MACRO 10 05:51 24-APR-78 PAGE 26 IOCSS MAC 24-APR-78 23:13 5-17-65 PART 2 000335' 200106 000007 STOSQD: MOVE TAC1,DEVIAD(DEVDAT); TAC1:=ADDRESS OF WORD COUNT 000336' 350000 000002 AOS TAC1 000337' 550206 000010 HRRZ ITEM,DEVPTR(DEVDAT); ITEM:=C(DEVPTR 18-25) - , C(DEVIAD 18-35) -1 000340' 274200 000002 SUB ITEM,TAC1 000341' 542220 000002 STOSQE: HRRM ITEM,@TAC1 ;WORD COUNT TO FIRST WORD IN BUFFER 000342' 254000 000065* JRST CPOPJ1; EXIT2. BLOCK COMPLETE 000343' 627000 000004 STOBIN: TLZN IOS,IOFST; WILL THE NEXT ITEM BE THE FIRST ITEM 000344' 254000 000306' JRST STO1; OF A BUFFER? IOSFST:=0 000345' 550040 000005 HRRZ TAC,DAT 000346' 313040 000004 CAMLE TAC,ITEM; IS WORD COUNT XP A,0 SUBTTL A CONFIGURATION > DEFINE DATE (A) > DEFINE VERSION (A,B) > DEFINE CUSPTAPE (A) > DEFINE ACPDL (J,CHJN,CHJPDN) < CH'J'N=CHJN CH'J'PDN=CHJPDN > IOINI1 - IO INITIALIZATION PART 1 MACRO 10 05:51 24-APR-78 PAGE 2 IOINI MAC 24-APR-78 01:14 MINIMAL CONFIGURATION NAME ^DEFINE NAME1 IOINI1 - IO INITIALIZATION PART 1 MACRO 10 05:51 24-APR-78 PAGE 2 IOMIN MAC 24-APR-78 02:16 MINIMAL CONFIGURATION DATE <8-16-65>^DEFINE DATE1 ^ VERSION 1,4^DEFINE VERS1 ^ CUSPTAPE DTA0^DEFINE CUSP1 ^ ;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, ASSOC DTC,4, > 000001 DTSIZ=1 ;MULTIPLE DECTAPE DIRECTORIES 000001 SCNLIN=1 ;DEFINE HIGHEST AC TO SAVE AND LENGTH OF PD LIST FOR EACH PI CHANNEL 000000 ACPDL (1,0,0)^ CH1N=0 000000 ACPDL (2,0,0)^ CH2N=0 000011 ACPDL (3,11,20)^ CH3N=11 000011 ACPDL (4,11,20)^ CH4N=11 000000 ACPDL (5,0,0)^ CH5N=0 000017 ACPDL (6,17,20^ CH6N=17 000000 ACPDL (7,0,0)^ CH7N=0 TITLE IOINI1 - IO INITIALIZATION PART 1 000000' 466231 644632 NAME1^CONFIG: ASCIZ /MINIMAL/ 000001' 406300 000000 000002' 341326 133132 DATE1^SYSDAT: ASCIZ /8-16-65/ 000003' 331520 000000 000004' 000001 000004 VERS1^SYSNUM: XWD ^D1,^D4 000005' 446441 200000 CUSP1^SYSTAP: SIXBIT /DTA0/ ;CONFIGURATION INDEPENDANT PART OF IOINIT FOLLOWS: EXTERNAL ERROR IOINI1 - IO INITIALIZATION PART 1 MACRO 10 05:51 24-APR-78 PAGE 1 IOINI1 MAC 24-APR-78 04:05 MINIMAL CONFIGURATION ;SETUP CHANNEL SAVE AND RESTORE ROUTINES 000000 CHANU1=0 000000 CHANU2=0 000000 CHANU3=0 000000 CHANU4=0 000000 CHANU5=0 000000 CHANU6=0 000000 CHANU7=0 DEFINE ASSOC(A,NO,D) ;SPACE TO SAVE SOME AC'S EXP CH'NO'XIT ;FIRST ENTRY IN PD LIST(CHAN. EXIT) REPEAT CH'NO'PDN-1, ;REST OF PD LIST CH'NO'XIT: MOVSI CH'NO'N, CH'NO'SAC BLT CH'NO'N, CH'NO'N JEN @CH'NO CH'NO'CJ: XWD -CH'NO'PDN+1,CH'NO'SAC+CH'NO'N+1 ;INIT. SETTING OF P CH'NO': 0 ;PC STORED HERE BY JSR JRST .+1 ;INSTR. AT END OF SERVICE CHAIN AOS CH'NO'ERR ;SPURIOUS INTERRUPT, ADD TO COUNT JEN @CH'NO ;AND DISMISS > > ;GENERATE THE SAVE AND RESTORE ROUTINES SYSTEM^ 000006' 000000 000000 CH6SAV: 0 000007' 202740 000033' MOVEM CH6N, CH6SAC+CH6N 000010' 201740 000014' MOVEI CH6N, CH6SAC 000011' 251740 000032' BLT CH6N,CH6SAC+CH6N-1 ;DO ONLY ONCE FOR EACH CHANNEL 000012' 200140 000057' MOVE PDP, CH6CJ 000013' 254020 000006' JRST @CH6SAV 000014' 000000 000000 EXP 0 000015' 000000 000000 EXP 0 000016' 000000 000000 EXP 0 000017' 000000 000000 EXP 0 000020' 000000 000000 EXP 0 000021' 000000 000000 EXP 0 IOINI1 - IO INITIALIZATION PART 1 MACRO 10 05:51 24-APR-78 PAGE 1-1 IOINI1 MAC 24-APR-78 04:05 MINIMAL CONFIGURATION 000022' 000000 000000 EXP 0 000023' 000000 000000 EXP 0 000024' 000000 000000 EXP 0 000025' 000000 000000 EXP 0 000026' 000000 000000 EXP 0 000027' 000000 000000 EXP 0 000030' 000000 000000 EXP 0 000031' 000000 000000 EXP 0 000032' 000000 000000 EXP 0 000033' 000000 000000 EXP 0 ;SPACE TO SAVE SOM AC'S 000034' 000000 000054' EXP CH6XIT ;FIRST ENTRY IN PD LIST(CHAN. EXIT) 000035' 000000 000000 EXP 0 000036' 000000 000000 EXP 0 000037' 000000 000000 EXP 0 000040' 000000 000000 EXP 0 000041' 000000 000000 EXP 0 000042' 000000 000000 EXP 0 000043' 000000 000000 EXP 0 000044' 000000 000000 EXP 0 000045' 000000 000000 EXP 0 000046' 000000 000000 EXP 0 000047' 000000 000000 EXP 0 000050' 000000 000000 EXP 0 000051' 000000 000000 EXP 0 000052' 000000 000000 EXP 0 000053' 000000 000000 EXP 0 ;REST OF PD LIST 000054' 205740 000014' CH6XIT: MOVSI CH6N, CH6SAC 000055' 251740 000017 BLT CH6N, CH6N 000056' 254520 000060' JEN @CH6 000057' 777761 000034' CH6CJ: XWD -CH6PDN+1,CH6SAC+CH6N+1 ;INIT. SETTING OF P 000060' 000000 000000 CH6: 0 ;PC STORED HERE BY JSR 000061' 254000 000062' JRST .+1 ;INSTR. AT END OF SERVICE CHAIN 000062' 350000 000317' AOS CH6ERR ;SPURIOUS INTERRUPT, ADD TO COUNT 000063' 254520 000060' JEN @CH6 ;AND DISMISS 000064' 000000 000000 CH3SAV: 0 000065' 202440 000103' MOVEM CH3N, CH3SAC+CH3N 000066' 201440 000072' MOVEI CH3N, CH3SAC 000067' 251440 000102' BLT CH3N,CH3SAC+CH3N-1 ;DO ONLY ONCE FOR EACH CHANNEL 000070' 200140 000127' MOVE PDP, CH3CJ 000071' 254020 000064' JRST @CH3SAV 000072' 000000 000000 EXP 0 000073' 000000 000000 EXP 0 000074' 000000 000000 EXP 0 000075' 000000 000000 EXP 0 000076' 000000 000000 EXP 0 000077' 000000 000000 EXP 0 000100' 000000 000000 EXP 0 000101' 000000 000000 EXP 0 000102' 000000 000000 EXP 0 000103' 000000 000000 EXP 0 ;SPACE TO SAVE SOM AC'S 000104' 000000 000124' EXP CH3XIT ;FIRST ENTRY IN PD LIST(CHAN. EXIT) 000105' 000000 000000 EXP 0 000106' 000000 000000 EXP 0 IOINI1 - IO INITIALIZATION PART 1 MACRO 10 05:51 24-APR-78 PAGE 1-2 IOINI1 MAC 24-APR-78 04:05 MINIMAL CONFIGURATION 000107' 000000 000000 EXP 0 000110' 000000 000000 EXP 0 000111' 000000 000000 EXP 0 000112' 000000 000000 EXP 0 000113' 000000 000000 EXP 0 000114' 000000 000000 EXP 0 000115' 000000 000000 EXP 0 000116' 000000 000000 EXP 0 000117' 000000 000000 EXP 0 000120' 000000 000000 EXP 0 000121' 000000 000000 EXP 0 000122' 000000 000000 EXP 0 000123' 000000 000000 EXP 0 ;REST OF PD LIST 000124' 205440 000072' CH3XIT: MOVSI CH3N, CH3SAC 000125' 251440 000011 BLT CH3N, CH3N 000126' 254520 000130' JEN @CH3 000127' 777761 000104' CH3CJ: XWD -CH3PDN+1,CH3SAC+CH3N+1 ;INIT. SETTING OF P 000130' 000000 000000 CH3: 0 ;PC STORED HERE BY JSR 000131' 254000 000132' JRST .+1 ;INSTR. AT END OF SERVICE CHAIN 000132' 350000 000314' AOS CH3ERR ;SPURIOUS INTERRUPT, ADD TO COUNT 000133' 254520 000130' JEN @CH3 ;AND DISMISS 000134' 000000 000000 CH4SAV: 0 000135' 202440 000153' MOVEM CH4N, CH4SAC+CH4N 000136' 201440 000142' MOVEI CH4N, CH4SAC 000137' 251440 000152' BLT CH4N,CH4SAC+CH4N-1 ;DO ONLY ONCE FOR EACH CHANNEL 000140' 200140 000177' MOVE PDP, CH4CJ 000141' 254020 000134' JRST @CH4SAV 000142' 000000 000000 EXP 0 000143' 000000 000000 EXP 0 000144' 000000 000000 EXP 0 000145' 000000 000000 EXP 0 000146' 000000 000000 EXP 0 000147' 000000 000000 EXP 0 000150' 000000 000000 EXP 0 000151' 000000 000000 EXP 0 000152' 000000 000000 EXP 0 000153' 000000 000000 EXP 0 ;SPACE TO SAVE SOM AC'S 000154' 000000 000174' EXP CH4XIT ;FIRST ENTRY IN PD LIST(CHAN. EXIT) 000155' 000000 000000 EXP 0 000156' 000000 000000 EXP 0 000157' 000000 000000 EXP 0 000160' 000000 000000 EXP 0 000161' 000000 000000 EXP 0 000162' 000000 000000 EXP 0 000163' 000000 000000 EXP 0 000164' 000000 000000 EXP 0 000165' 000000 000000 EXP 0 000166' 000000 000000 EXP 0 000167' 000000 000000 EXP 0 000170' 000000 000000 EXP 0 000171' 000000 000000 EXP 0 000172' 000000 000000 EXP 0 000173' 000000 000000 EXP 0 ;REST OF PD LIST IOINI1 - IO INITIALIZATION PART 1 MACRO 10 05:51 24-APR-78 PAGE 1-3 IOINI1 MAC 24-APR-78 04:05 MINIMAL CONFIGURATION 000174' 205440 000142' CH4XIT: MOVSI CH4N, CH4SAC 000175' 251440 000011 BLT CH4N, CH4N 000176' 254520 000200' JEN @CH4 000177' 777761 000154' CH4CJ: XWD -CH4PDN+1,CH4SAC+CH4N+1 ;INIT. SETTING OF P 000200' 000000 000000 CH4: 0 ;PC STORED HERE BY JSR 000201' 254000 000202' JRST .+1 ;INSTR. AT END OF SERVICE CHAIN 000202' 350000 000315' AOS CH4ERR ;SPURIOUS INTERRUPT, ADD TO COUNT 000203' 254520 000200' JEN @CH4 ;AND DISMISS ;SET UP NULL CHANNEL ROUTINES FOR UNUSED CHANNELS DEFINE NULCHN(J) < INTERNAL CH'J,CH'J'XIT CH'J: 0 CH'J'XIT: AOS CH'J'ERR JEN @CH'J > IFE CHANU1,^ 000204' 000000 000000 CH1: 0 000205' 350000 000312' CH1XIT: AOS CH1ERR 000206' 254520 000204' JEN @CH1 IFE CHANU2,^ 000207' 000000 000000 CH2: 0 000210' 350000 000313' CH2XIT: AOS CH2ERR 000211' 254520 000207' JEN @CH2 IFE CHANU3, IFE CHANU4, IFE CHANU5,^ 000212' 000000 000000 CH5: 0 000213' 350000 000316' CH5XIT: AOS CH5ERR 000214' 254520 000212' JEN @CH5 IFE CHANU6, IFE CHANU7,^ 000215' 000000 000000 CH7: 0 000216' 350000 000320' CH7XIT: AOS CH7ERR 000217' 254520 000215' JEN @CH7 IOINI1 - IO INITIALIZATION PART 1 MACRO 10 05:51 24-APR-78 PAGE 2 IOINI1 MAC 24-APR-78 04:05 MINIMAL CONFIGURATION ;ASSIGN DEVICE TO CHANNELS AND SETUP CORESPONDENCE TABLE ;OF CHANNELS TO SERVICE ROUTINES DEFINE ASSOC (A,N,D) < A'RET=CH'N'XIT A'SAV=CH'N'SAV A'SAC=CH'N'SAC A'CHL=CH'N A'CHN=N A'BIT=1 REPEAT 7-N, A'OFF=1000+A'BIT ;CONO PI, A'OFF WIL TURN CHANNEL OFF A'ON=2000+A'BIT ;TURN BACK ON A'ACT=4000+A'BIT ;FORCE INTERRUPT ON CHAN. INTERN A'RET, A'SAV, A'CHL, A'CHN, A'SAC INTERNAL A'OFF,A'ON,A'ACT,A'BIT XWD A'CHL,A'INT EXTERNAL A'INT > INTERNAL DEVINT 000220' DEVINT: SYSTEM^ 000220' 000060' 000000* XWD APRCHL,APRINT 000221' 000130' 000000* XWD CTYCHL,CTYINT 000222' 000130' 000000* XWD SCNCHL,SCNINT 000223' 000200' 000000* XWD DTCCHL,DTCINT 000004 NDEV=.-DEVINT ;NO. OF DEVICE INTERUPT SERVICE ROUTINES 000003 NDEVM1=NDEV-1 ;(USED BY ONCE) INTERNAL NDEVM1 IOINI1 - IO INITIALIZATION PART 1 MACRO 10 05:51 24-APR-78 PAGE 3 IOINI1 MAC 24-APR-78 04:05 MINIMAL CONFIGURATION ;INITIALIZE SOME IO DEVICES ;IOINI CALLED BY A PUSHJ PDP, FROM SYSINI AT SYSTEM INITIALIZATION DEFINE IOINIT (A) > DEFINE ASSOC (A,B,C) < IFIDN ,< IOINIT MTC> IFIDN ,< IOINIT DTC> IFIDN ,< IOINIT LPT> IFIDN ,< IOINIT SCN> IFIDN , IFIDN , > INTERNAL IOINI 000224' IOINI: SYSTEM^ 000224' 260140 000000* PUSHJ PDP,SCNINI 000225' 260140 000000* PUSHJ PDP,DTCINI 000226' 254000 000000* JRST CLKINI ;ALWAYS INIT. CLOCK EXTERNAL CLKINI IOINI1 - IO INITIALIZATION PART 1 MACRO 10 05:51 24-APR-78 PAGE 4 IOINI1 MAC 24-APR-78 04:05 MINIMAL CONFIGURATION ;CLOCK CONTROL PARAMETERS 004006 CLDS=4000+APRCHN ;CLOCK DISABLE 000206 CLEN=200+APRCHN ;CLOCK ENABLE INTERNAL CLDS,CLEN ;BYTE POINTERS 000227' 270400 000014 PUUOAC: POINT 4,UUO,12 ;UUO AC FIELD 000230' 000400 000000 PIOMOD: POINT 4,IOS,35 ;MODE BITS 000231' 331106 000001 PJOBN: POINT 9,DEVCHR(DEVDAT),8 ;DEVICE JOB ASSIGNMENT 000232' 220406 000001 PJDCHN: POINT 4,DEVCHR(DEVDAT),17 ;JOB DEVICE CHANNEL NO. 000233' 140606 000001 PUNIT: POINT 6,DEVCHR(DEVDAT),23 ;DEVICE UNIT NO. INTERNAL PUUOAC,PIOMOD,PJOBN,PJDCHN,PUNIT ;COMMON SUBROUTINE RETURNS 000234' 350003 000000 CPOPJ2: AOS (PDP) 000235' 350003 000000 CPOPJ1: AOS (PDP) 000236' 263140 000000 CPOPJ: POPJ PDP, INTERNAL CPOPJ,CPOPJ1,CPOPJ2 IOINI1 - IO INITIALIZATION PART 1 MACRO 10 05:51 24-APR-78 PAGE 5 IOINI1 MAC 24-APR-78 04:05 MINIMAL CONFIGURATION ,SYSTEM DATA STORAGE INTERNAL JOB,JOBADR,JBTADR,JBTSTS,USRREL,USRINF,USRJDA INTERNAL USRPDP,JOBDAT,USRDDT,USRSAV,USRUXT,USRLO,USRHI INTERNAL COMCNT,IOCOMP,USRPOV,STOPU,SCHEDF,TIME,JBTAD1 INTERNAL MTAVAL,DCAVAL,DTAVAL,MTREQ,DCREQ,DTREQ,TTYTAB,CORTAB INTERNAL CH1ERR,CH2ERR,CH3ERR,CH4ERR,CH5ERR,CH6ERR,CH7ERR INTERNAL CORLST,CORTAB,CORTAL,SYSEND,SYSBEG,DEVOPR 000000 JOBN=0 ;DEFINE NO. OF JOBS (0 THRU JOBN-1) ;THERE MUST BE MORE TTY DEVICE DATA BLCKS THAN JOBS. DEFINE ASSOC (A,N,D) ,>> SYSTEM^ 777777 777776 MJOBN=-JOBN INTERNAL JOBN,MJOBN 000237' SYSBEG: ;FIRST LOC IN SYSTEM DATA AREA XP SYSBG1,SYSBEG+1 ;FIRST LOC+1 000237' 000000 000000 JOB: 0 ;CURRENT JOB NUMBER EXCEPT WEN SCHEDF IS NON-ZERO 000240' 000000 000000 JOBADR: 0 ;CONTAINS ADDRESS OF JOB CURRENTLY RUNNING 000241' 000000 000000 JOBDAT: 0 ;CONTAINS ADDRESS OF JOB DATA AREA 000242' JBTADR: BLOCK JOBN ;C(LH)=PROTECT, C(RH)=RELOCATION XP JBTAD1,JBTADR+1 ;ADDRESS OF JOB 1(USED BY SYSMAK) 000244' JBTSTS: BLOCK JOBN ;CONTAINS STATUS INFORMATION FOR EACH J 000246' 000000 000000 USRPDP: 0 ;USER PUSH DOWN POINTER 000247' 000000 000000 USRREL: 0 ;LH=0, RH CONTAINS CONTENTS OF PROTECTION REGISTER 000250' USRLO: ;FIRST LOC CLEARD BY SETUSR SUBROUTINE 000250' 000000 000000 USRUXT: 0 ;UNUSED, JOBUXT USED TO SAVE UUO PC(UUO0) 000251' 000000 000000 USRLEV: 0 ;UNUSED, JOBLEV USED TO SAVE LOC. 40 000252' 000000 000000 USRSAV: 0 ;TEMPORARY STORAGE FOR UUO HANDLER 000253' 000000 000000 USRPOV: 0 ;PUSH DOWN OVERFLOW TRAP 000254' BLOCK 2 000256' 000000 000000 USRINF: 0 ;UN LAYED OUT USER INFORMATION 000257' USRJDA: BLOCK 20 ;RH=JOB DEVICE ASSIGNMENTS FOR THIS USER,LH=UUOS XP USRHI,.-1 ;LAST LOC CLEARED BY SETUSR ROUTINE XP USRPFI,.-1 ;LAST LOC PROTECTED FROM IO SERVICE XP USRPFU,. ;LAST LOC PROTECTED FROM USER PROGRAM 000277' 000000 000000 USRDDT: 0 ;STARTING ADDR OF USER DDT ;DEVICE JUSTR BECOME AVAILABLE FLAGS 000300' 000000 000000 MTAVAL: 0 ;MAGNETIC TAPE 000301' 000000 000000 DCAVAL: 0 ;DATA CONTROL 000302' 000000 000000 DTAVAL: 0 ;DECTAPE ;NUMBER OF JOBS WAITING FOR DEVICES(-1=NONE, 0=1 USING, 1=1 USING) 000303' 777777 777777 MTREQ: -1 ;MAGNETIC TAPE 000304' 777777 777777 DCREQ: -1 ;DATA CONTROL IOINI1 - IO INITIALIZATION PART 1 MACRO 10 05:51 24-APR-78 PAGE 5-1 IOINI1 MAC 24-APR-78 04:05 MINIMAL CONFIGURATION 000305' 777777 777777 DTREQ: -1 ;DECTAPE 000306' 000000 000000 IOCOMP: 0 ;NUMBER OF USERS IN IO WAIT STATE 000307' 000000 000000 COMCNT: 0 ;NUMBER OF COMMANDS TYPED-IN BUT NOT DECODED 000310' 000000 000000 STOPU: 0 ;NON-ZERO WHEN CLOCK INTERRUPT FORCED TO STOP USER 000311' 000000 000000 SCHEDF: 0 ;NON-ZERO WHEN CLOCK ROUTINE IS SCHEDULING 000312' 000000 000000 CH1ERR: 0 ;SPURIOUS INTERRUPT COUNTS FOR EACH CHANNEL 000313' 000000 000000 CH2ERR: 0 000314' 000000 000000 CH3ERR: 0 000315' 000000 000000 CH4ERR: 0 000316' 000000 000000 CH5ERR: 0 000317' 000000 000000 CH6ERR: 0 000320' 000000 000000 CH7ERR: 0 000251' USRLO1=USRLO+1 INTERNAL USRLO1 IOINI1 - IO INITIALIZATION PART 1 MACRO 10 05:51 24-APR-78 PAGE 6 IOINI1 MAC 24-APR-78 04:05 MINIMAL CONFIGURATION 000321' 000000 000000 TIME: 0 ;TIME SYSTEM HAS RUN IN 60THS OF A SECOND XP TTYLEN,SCNLIN+1 ;LENGTH OF TTY TRANSLATOR TABLES(INCLUDING CTY) 000322' TTYTAB: BLOCK TTYLEN ;TTY TRANSLATOR TABLE ;SIGN BIT = 1 IF COMMAND JUST TYPED ;BITS 1 -9, JOB CONSOLE IS ATTACHED TO ;BITS 18-35, THE DEVICE DATA BLOCK FOR 000324' 000000 000000 DEVOPR: 0 ;SIXBIT PHYSICAL NAME OF OPERATORS ;CONSOLE SET BY SCNSER TO FIRST ACTIVE TTY. ;LOCATIONS FOR CORE ALLOCATION XP CORBLK,^D256 ;NO. OF 1K BLOCKS POSSIBLE 000325' CORTAB: BLOCK /^D36+1 ;1K BLOCK USE BIT TABLE ;A 1 MEANS BLOCK IS IN USE 000335' 000000 000000 CORLST: 0 ;1 BIT BYTE POINTER TO LAST FREE BLOCK POSSIBLE 000336' 000000 000000 CORTAL: 0 ;TOTAL NO. OF FREE CORE BLOCKS LEFT ;CORLST AND CORTAL ARE SET UP AT SYSTEM INITIALIZATION 000336' SYSEND=.-1 ;LAST LOC. CLEARED BY SYSINI INTERNAL SYSSIZ EXTERNAL SYSFIN 000337' 000000 000000* SYSSIZ: EXP SYSFIN ;SIZE OF MONITOR(LAST LOC. USED) IOINI1 - IO INITIALIZATION PART 1 MACRO 10 05:51 24-APR-78 PAGE 7 IOINI1 MAC 24-APR-78 04:05 MINIMAL CONFIGURATION END, NO ERRORS DETECTED PROGRAM BREAK IS 000340 9K CORE USED IOINI1 - IO INITIALIZATION PART 1 MACRO 10 05:51 24-APR-78 PAGE 8 IOINI1 MAC 24-APR-78 04:05 SYMBOL TABLE A 000000 INT AC1 000015 INT AC2 000016 INT AC3 000017 INT AL 000001 INT APRACT 004002 INT APRBIT 000002 INT APRCHL 000060' INT APRCHN 000006 INT APRINT 000220' EXT APROFF 001002 INT APRON 002002 INT APRRET 000054' INT APRSAC 000014' INT APRSAV 000006' INT ASSCON 400000 INT ASSPRG 200000 INT B 000014 INT BUFPNT 000012 INT BUFWRD 000013 INT CH1 000204' INT CH1ERR 000312' INT CH1N 000000 CH1PDN 000000 CH1XIT 000205' INT CH2 000207' INT CH2ERR 000313' INT CH2N 000000 CH2PDN 000000 CH2XIT 000210' INT CH3 000130' INT CH3CJ 000127' CH3ERR 000314' INT CH3N 000011 CH3PDN 000020 CH3SAC 000072' INT CH3SAV 000064' INT CH3XIT 000124' INT CH4 000200' INT CH4CJ 000177' CH4ERR 000315' INT CH4N 000011 CH4PDN 000020 CH4SAC 000142' INT CH4SAV 000134' INT CH4XIT 000174' INT CH5 000212' INT CH5ERR 000316' INT CH5N 000000 CH5PDN 000000 IOINI1 - IO INITIALIZATION PART 1 MACRO 10 05:51 24-APR-78 PAGE 8-1 IOINI1 MAC 24-APR-78 04:05 SYMBOL TABLE CH5XIT 000213' INT CH6 000060' INT CH6CJ 000057' CH6ERR 000317' INT CH6N 000017 CH6PDN 000020 CH6SAC 000014' INT CH6SAV 000006' INT CH6XIT 000054' INT CH7 000215' INT CH7ERR 000320' INT CH7N 000000 CH7PDN 000000 CH7XIT 000216' INT CHANU1 000000 CHANU2 000000 CHANU3 000001 CHANU4 000001 CHANU5 000000 CHANU6 000001 CHANU7 000000 CLDS 004006 INT CLEN 000206 INT CLKINI 000226' EXT CLOSB 002000 INT CLSIN 000002 INT CLSOUT 000001 INT COMCNT 000307' INT CONFIG 000000' INT CORBLK 000400 INT CORLST 000335' INT CORTAB 000325' INT CORTAL 000336' INT CPOPJ 000236' INT CPOPJ1 000235' INT CPOPJ2 000234' INT CTYACT 004020 INT CTYBIT 000020 INT CTYCHL 000130' INT CTYCHN 000003 INT CTYINT 000221' EXT CTYOFF 001020 INT CTYON 002020 INT CTYRET 000124' INT CTYSAC 000072' INT CTYSAV 000064' INT D 000017 INT DAT 000005 INT DCAVAL 000301' INT IOINI1 - IO INITIALIZATION PART 1 MACRO 10 05:51 24-APR-78 PAGE 8-2 IOINI1 MAC 24-APR-78 04:05 SYMBOL TABLE DCL 000001 INT DCREQ 000304' INT DCW 020000 INT DDI 000007 INT DDO 000006 INT DDTMEM 000037 INT DDTSYM 000036 INT DEN 000004 INT DEVADR 000007 INT DEVBUF 000006 INT DEVCHR 000001 INT DEVCTR 000011 INT DEVDAT 000006 INT DEVIAD 000007 INT DEVINT 000220' INT DEVIOS 000002 INT DEVLOG 000005 INT DEVMOD 000004 INT DEVNAM 000000 INT DEVOAD 000010 INT DEVOPR 000324' INT DEVPTR 000010 INT DEVSER 000003 INT DGF 000012 INT DIN 000003 INT DLK 000005 INT DOU 000002 INT DR 000016 INT DRL 000000 INT DSI 000011 INT DSO 000010 INT DTAVAL 000302' INT DTCACT 004010 INT DTCBIT 000010 INT DTCCHL 000200' INT DTCCHN 000004 INT DTCINI 000225' EXT DTCINT 000223' EXT DTCOFF 001010 INT DTCON 002010 INT DTCRET 000174' INT DTCSAC 000142' INT DTCSAV 000134' INT DTREQ 000305' INT DTSIZ 000001 DTW 040000 INT DVAVAL 000040 INT DVCDR 100000 INT DVDIR 000004 INT DVDIRI 400000 INT DVIN 000002 INT DVLPT 040000 INT DVMTA 000020 INT IOINI1 - IO INITIALIZATION PART 1 MACRO 10 05:51 24-APR-78 PAGE 8-3 IOINI1 MAC 24-APR-78 04:05 SYMBOL TABLE DVOUT 000001 INT DVTTY 000010 INT ENTRB 020000 INT ERROR 000000 EXT I 000010 INT IB 000013 INT IBUFB 200000 INT INITB 400000 INT INPB 010000 INT IO 000020 INT IOACT 010000 INT IOBEG 000002 INT IOBKTL 040000 INT IOCOMP 000306' INT IOCON 000040 INT IODEND 020000 INT IODERR 200000 INT IODISC 400000 INT IODONE 400000 INT IODTER 100000 INT IOEND 000040 INT IOFST 000004 INT IOIMPM 400000 INT IOINI 000224' INT IONRCK 000100 INT IORDEL 000100 INT IORET 000020 INT IOS 000000 INT IOSTRT 000010 INT IOUSE 400000 INT IOW 000001 INT IOWC 000020 INT IOWS 400000 INT ITEM 000004 INT JBFADR 000000 INT JBFCTR 000002 INT JBFPTR 000001 INT JBTAD1 000243' INT JBTADR 000242' INT JBTSTS 000244' INT JBUF 000005 INT JDAT 000011 INT JERR 002000 INT JIOW 100000 INT JNA 004000 INT JOB 000237' INT JOBADR 000240' INT JOBDAT 000241' INT JOBN 000002 INT LOOKB 040000 INT MINIMA 000000 INT MJOBN 777777 777776 INT IOINI1 - IO INITIALIZATION PART 1 MACRO 10 05:51 24-APR-78 PAGE 8-4 IOINI1 MAC 24-APR-78 04:05 SYMBOL TABLE MTAVAL 000300' INT MTREQ 000303' INT MTW 010000 INT NDEV 000004 NDEVM1 000003 INT OBUFB 100000 INT OUTPB 004000 INT PDP 000003 INT PICHN 000100 INT PIOMOD 000230' INT PJDCHN 000232' INT PJOBN 000231' INT PROG 000007 INT PUNIT 000233' INT PUUOAC 000227' INT RUN 200000 INT RUNABL 204000 INT SCHEDF 000311' INT SCNACT 004020 INT SCNBIT 000020 INT SCNCHL 000130' INT SCNCHN 000003 INT SCNINI 000224' EXT SCNINT 000222' EXT SCNLIN 000001 SCNOFF 001020 INT SCNON 002020 INT SCNRET 000124' INT SCNSAC 000072' INT SCNSAV 000064' INT STOPU 000310' INT SYSBEG 000237' INT SYSBG1 000240' INT SYSDAT 000002' INT SYSEND 000336' INT SYSFIN 000337' EXT SYSMOD 000001 INT SYSNUM 000004' INT SYSSIZ 000337' INT SYSTAP 000005' INT SYSVER 000004 INT TAC 000001 INT TAC1 000002 INT TEM 000010 INT TIME 000321' INT TTYATC 020000 INT TTYLEN 000002 INT TTYTAB 000322' INT TTYUSE 010000 INT IOINI1 - IO INITIALIZATION PART 1 MACRO 10 05:51 24-APR-78 PAGE 8-5 IOINI1 MAC 24-APR-78 04:05 SYMBOL TABLE USRDDT 000277' INT USRHI 000276' INT USRINF 000256' INT USRJDA 000257' INT USRLEV 000251' USRLO 000250' INT USRLO1 000251' INT USRMOD 010000 INT USRPDP 000246' INT USRPFI 000276' INT USRPFU 000277' INT USRPOV 000253' INT USRREL 000247' INT USRSAV 000252' INT USRUXT 000250' INT UUO 000014 INT IIIIIIIII OOOOOOOOO IIIIIIIII NNN NNN IIIIIIIII 222222222 IIIIIIIII OOOOOOOOO IIIIIIIII NNN NNN IIIIIIIII 222222222 IIIIIIIII OOOOOOOOO IIIIIIIII NNN NNN IIIIIIIII 222222222 III OOO OOO III NNN NNN III 222 222 III OOO OOO III NNN NNN III 222 222 III OOO OOO III NNN NNN III 222 222 III OOO OOO III NNNNNN NNN III 222 III OOO OOO III NNNNNN NNN III 222 III OOO OOO III NNNNNN NNN III 222 III OOO OOO III NNN NNN NNN III 222 III OOO OOO III NNN NNN NNN III 222 III OOO OOO III NNN NNN NNN III 222 III OOO OOO III NNN NNNNNN III 222 III OOO OOO III NNN NNNNNN III 222 III OOO OOO III NNN NNNNNN III 222 III OOO OOO III NNN NNN III 222 III OOO OOO III NNN NNN III 222 III OOO OOO III NNN NNN III 222 IIIIIIIII OOOOOOOOO IIIIIIIII NNN NNN IIIIIIIII 222222222222222 IIIIIIIII OOOOOOOOO IIIIIIIII NNN NNN IIIIIIIII 222222222222222 IIIIIIIII OOOOOOOOO IIIIIIIII NNN NNN IIIIIIIII 222222222222222 LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT Request created: 24-April-1978 05:53:58 File: DSKB0 :IOINI2.LST [8,296] Created: 20-April-1967 05:51:00 Printed: 24-April-1978 05:53:34 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:1796 File will be deleted after printing IOINI2 - IO INITIALIZATION PART 2 MACRO 10 05:51 24-APR-78 PAGE 1 S MAC 24-APR-78 21:40 MINIMAL CONFIGURATION XLIST LIST ;SOME MACROS FOR DEFINING CONFIGURATION DEFINE NAME (A) XP A,0 SUBTTL A CONFIGURATION > DEFINE DATE (A) > DEFINE VERSION (A,B) > DEFINE CUSPTAPE (A) > DEFINE ACPDL (J,CHJN,CHJPDN) < CH'J'N=CHJN CH'J'PDN=CHJPDN > IOINI2 - IO INITIALIZATION PART 2 MACRO 10 05:51 24-APR-78 PAGE 2 IOINI MAC 24-APR-78 01:14 MINIMAL CONFIGURATION NAME ^DEFINE NAME1 IOINI2 - IO INITIALIZATION PART 2 MACRO 10 05:51 24-APR-78 PAGE 2 IOMIN MAC 24-APR-78 02:16 MINIMAL CONFIGURATION DATE <8-16-65>^DEFINE DATE1 ^ VERSION 1,4^DEFINE VERS1 ^ CUSPTAPE DTA0^DEFINE CUSP1 ^ ;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, ASSOC DTC,4, > 000001 DTSIZ=1 ;MULTIPLE DECTAPE DIRECTORIES 000001 SCNLIN=1 ;DEFINE HIGHEST AC TO SAVE AND LENGTH OF PD LIST FOR EACH PI CHANNEL 000000 ACPDL (1,0,0)^ CH1N=0 000000 ACPDL (2,0,0)^ CH2N=0 000011 ACPDL (3,11,20)^ CH3N=11 000011 ACPDL (4,11,20)^ CH4N=11 000000 ACPDL (5,0,0)^ CH5N=0 000017 ACPDL (6,17,20^ CH6N=17 000000 ACPDL (7,0,0)^ CH7N=0 TITLE IOINI2 - IO INITIALIZATION PART 2 ;DEFINITIONS OF DEVCHN AND DEVBIT ;THESE ALSO OCCUR IN IOINT1 DEFINE ASSOC (A,N,D) < A'CHN=N > SYSTEM^ IOINI2 - IO INITIALIZATION PART 2 MACRO 10 05:51 24-APR-78 PAGE 1 IOINI2 MAC 24-APR-78 03:06 MINIMAL CONFIGURATION IOINI2 - IO INITIALIZATION PART 2 MACRO 10 05:51 24-APR-78 PAGE 2 IOINI2 MAC 24-APR-78 03:06 MINIMAL CONFIGURATION ;APR PIP BITS 000001 APRBIT=1 000002 REPEAT 7-APRCHN, XP PION,200 ;CONO PI,PION TURNS PI SYSTEM ON XP PIOFF,400 ;TURN IT OFF XP PICLK,PION+1B24+APRBIT ;TURN PI ON, AND FORCE CLOCK INT. XP CLKOFF,1000+APRCHN ;CONO APR,CLKOFF TURNS CLOCK FLAG OFF IOINI2 - IO INITIALIZATION PART 2 MACRO 10 05:51 24-APR-78 PAGE 3 IOINI2 MAC 24-APR-78 03:06 MINIMAL CONFIGURATION ;ASSEMBLE ALL DEVICE DATA BLOCKS AND LINK THEM TOGETHER DEFINE SCNDDB (A,B,C) < INTERNAL C'DB C'DB: ZZ=. SIXBIT /C/ XWD A'CHN*PICHN,STTYBF+1 ;LONG ENOUGH FOR PRINTING ;SEQUENCE CARD IMAGE. ;USER BUFFERS ARE 2 WORDS ;LONGER THEN THE MONITORY TTY BUFFERS. 0 EXTERNAL TTYDSP XWD C,TTYDSP XWD DVTTY+DVIN+DVOUT,3 0 0 XWD PROG,0 XWD PROG,0 XP TTYPTR,.-ZZ 0 XP TTYCTR,.-ZZ 0 XP TTYSAV,.-ZZ 0 XP TTYBUF,.-ZZ XP TTYBM1,TTYBUF-1 XP STTYBF,20 XP STTYB1,STTYBF+1 ;LENGTH+1 BLOCK STTYBF XP TTYBFE,.-ZZ-1 ;LINE NO. PARAMETERS XP TTYLEN,SCNLIN+1 ;LENGTH OF TTY TRANSLATOR TABLE(INCLUDE TTY) XP TSCNLN,SCNLIN-1 ;HIGHEST TTY LINE NO.(NOT COUNTING CTY) XP TCONLN,TSCNLN+1 ;CTY LINE NUMBER XP MTTYLN,-TTYLEN ;NEGATIVEL LENGTH OF TRANSLATOR TABLE XP FSNCHN,SCNCHN*101 ;CHANNEL ASSIGNED, FOR FULL DUPLEX SCN. XP TTYLST,TTY0DB ;FIRST TTY DEVICE DATA BLOCK > ;NEG. NO. OF TELTYPE DEVICE DATA BLOCKS 000000 MLTTYL=0 DEFINE ASSOC (A,N,D) ,,>> SYSTEM^ INTERNAL MLTTYL IOINI2 - IO INITIALIZATION PART 2 MACRO 10 05:51 24-APR-78 PAGE 4 IOINI2 MAC 24-APR-78 03:06 MINIMAL CONFIGURATION ;MAG TAPE DEVICE DATA BLOCK 000000 MTCNUM=0 DEFINE MTCDDB (A,B,C) < INTERNAL C'DB C'DB: SIXBIT /C/ MTCNUM=MTCNUM+1 XWD IORET+A'CHN*PICHN,*10000+201 0 XWD C,MTDISP EXTERNAL MTDISP XWD 4400+DVMTA+DVIN+DVOUT,154403 0 0 XWD PROG,0 XWD PROG,0 > IOINI2 - IO INITIALIZATION PART 2 MACRO 10 05:51 24-APR-78 PAGE 5 IOINI2 MAC 24-APR-78 03:06 MINIMAL CONFIGURATION ;DECTAPE DEVICE DATA BLOCK 000000 DTCNUM=0 DEFINE DTCDDB (A,B,C) < INTERNAL C'DB C'DB: ZZ=. SIXBIT /C/ DTCNUM=DTCNUM+1 XWD IORET+A'CHN*PICHN,*10000+201 0 XWD C,UTDSP EXTERNAL UTDSP XWD 4400+DVDIR+DVIN+DVOUT,154403 0 0 0 0 XP UFREE,.-ZZ ;NEXT FREE BLOCK NO. 0 XP UDIR,.-ZZ ;LINK TO DIRECTORY IN DATA BLOCK IFE DTSIZ,< EXP DIRBUF > IFN DTSIZ,< EXP DTDIR+200* > > IOINI2 - IO INITIALIZATION PART 2 MACRO 10 05:51 24-APR-78 PAGE 6 IOINI2 MAC 24-APR-78 03:06 MINIMAL CONFIGURATION ;LINE PRINTER DEVICE DTA BLOCK DEFINE LPTDDB (A,B,C) IOINI2 - IO INITIALIZATION PART 2 MACRO 10 05:51 24-APR-78 PAGE 7 IOINI2 MAC 24-APR-78 03:06 MINIMAL CONFIGURATION ;CARD READER DEVICE DATA BLOCK DEFINE CDRDDB (A,B,C) IOINI2 - IO INITIALIZATION PART 2 MACRO 10 05:51 24-APR-78 PAGE 8 IOINI2 MAC 24-APR-78 03:06 MINIMAL CONFIGURATION ;PAPER TAPE READER DEVICE DATA BLOCK DEFINE PTRDDB (A,B,C) IOINI2 - IO INITIALIZATION PART 2 MACRO 10 05:51 24-APR-78 PAGE 9 IOINI2 MAC 24-APR-78 03:06 MINIMAL CONFIGURATION ;PAPER TAPE PUNCH DEVICE DATA BLOCK DEFINE PTPDDB (A,B,C) IOINI2 - IO INITIALIZATION PART 2 MACRO 10 05:51 24-APR-78 PAGE 10 IOINI2 MAC 24-APR-78 03:06 MINIMAL CONFIGURATION ;GENERATE DEVICE DATA BLOCKS NEEDED FOR THIS CONFIGURATION DEFINE ASSOC (A,B,C) < IRP C,< ;DEFINE FORWARD LINL SYMBOL LINK ; ; ; A'DDB A,B,C C=0 ;SET LINK TO 0(IN CASE THIS IS LAST DDB) DEFINE LINK > > INTERNAL DEVLST 000000' 000001' 000000 DEVLST: XWD FIRDB,0 ;BEGINNING OF DEVICE DATA BLOCK CHAIN DEFINE LINK SYSTEM^ 000001' 646471 200000 SIXBIT /TTY0/ 000002' 000300 000021 XWD SCNCHN*PICHN,STTYBF+1 ;LONG ENOUGH FOR PRINTING 000003' 000000 000000 0 000004' 000035' 000000* XWD TTY0,TTYDSP 000005' 000013 000003 XWD DVTTY+DVIN+DVOUT,3 000006' 000000 000000 0 000007' 000000 000000 0 000010' 000007 000000 XWD PROG,0 000011' 000007 000000 XWD PROG,0 000012' 000000 000000 0 000013' 000000 000000 0 000014' 000000 000000 0 000035' 646471 210000 SIXBIT /TTY1/ 000036' 000300 000021 XWD SCNCHN*PICHN,STTYBF+1 ;LONG ENOUGH FOR PRINTING 000037' 000000 000000 0 000040' 000071' 000004* XWD TTY1,TTYDSP 000041' 000013 000003 XWD DVTTY+DVIN+DVOUT,3 000042' 000000 000000 0 000043' 000000 000000 0 000044' 000007 000000 XWD PROG,0 000045' 000007 000000 XWD PROG,0 000046' 000000 000000 0 000047' 000000 000000 0 000050' 000000 000000 0 000071' 446441 200000 SIXBIT /DTA0/ IOINI2 - IO INITIALIZATION PART 2 MACRO 10 05:51 24-APR-78 PAGE 10-1 IOINI2 MAC 24-APR-78 03:06 MINIMAL CONFIGURATION 000072' 000420 000201 XWD IORET+DTCCHN*PICHN,*10000+201 000073' 000000 000000 0 000074' 000000 000000* XWD DTA0,UTDSP 000075' 004407 154403 XWD 4400+DVDIR+DVIN+DVOUT,154403 000076' 000000 000000 0 000077' 000000 000000 0 000100' 000000 000000 0 000101' 000000 000000 0 000102' 000000 000000 0 000103' 000000 000104' IFN DTSIZ,< EXP DTDIR+200* IOINI2 - IO INITIALIZATION PART 2 MACRO 10 05:51 24-APR-78 PAGE 11 IOINI2 MAC 24-APR-78 03:06 MINIMAL CONFIGURATION 000104' LIT IFE DTSIZ,< DIRBUF: BLOCK 200 INTERNAL DIRBUF > 000104' IFN DTSIZ, END, NO ERRORS DETECTED PROGRAM BREAK IS 000304 10K CORE USED IOINI2 - IO INITIALIZATION PART 2 MACRO 10 05:51 24-APR-78 PAGE 12 IOINI2 MAC 24-APR-78 03:06 SYMBOL TABLE A 000000 INT AC1 000015 INT AC2 000016 INT AC3 000017 INT AL 000001 INT APRBIT 000002 APRCHN 000006 ASSCON 400000 INT ASSPRG 200000 INT B 000014 INT BUFPNT 000012 INT BUFWRD 000013 INT CH1N 000000 CH1PDN 000000 CH2N 000000 CH2PDN 000000 CH3N 000011 CH3PDN 000020 CH4N 000011 CH4PDN 000020 CH5N 000000 CH5PDN 000000 CH6N 000017 CH6PDN 000020 CH7N 000000 CH7PDN 000000 CLKOFF 001006 INT CLOSB 002000 INT CLSIN 000002 INT CLSOUT 000001 INT CTYCHN 000003 D 000017 INT DAT 000005 INT DCL 000001 INT DCW 020000 INT DDI 000007 INT DDO 000006 INT DDTMEM 000037 INT DDTSYM 000036 INT DEN 000004 INT DEVADR 000007 INT DEVBUF 000006 INT DEVCHR 000001 INT DEVCTR 000011 INT DEVDAT 000006 INT IOINI2 - IO INITIALIZATION PART 2 MACRO 10 05:51 24-APR-78 PAGE 12-1 IOINI2 MAC 24-APR-78 03:06 SYMBOL TABLE DEVIAD 000007 INT DEVIOS 000002 INT DEVLOG 000005 INT DEVLST 000000' INT DEVMOD 000004 INT DEVNAM 000000 INT DEVOAD 000010 INT DEVPTR 000010 INT DEVSER 000003 INT DGF 000012 INT DIN 000003 INT DLK 000005 INT DOU 000002 INT DR 000016 INT DRL 000000 INT DSI 000011 INT DSO 000010 INT DTA0 000000 DTA0DB 000071' INT DTCCHN 000004 DTCNUM 000001 DTDIR 000104' INT DTSIZ 000001 DTW 040000 INT DVAVAL 000040 INT DVCDR 100000 INT DVDIR 000004 INT DVDIRI 400000 INT DVIN 000002 INT DVLPT 040000 INT DVMTA 000020 INT DVOUT 000001 INT DVTTY 000010 INT ENTRB 020000 INT FIRDB 000001' FSNCHN 000303 INT I 000010 INT IB 000013 INT IBUFB 200000 INT INITB 400000 INT INPB 010000 INT IO 000020 INT IOACT 010000 INT IOBEG 000002 INT IOBKTL 040000 INT IOCON 000040 INT IODEND 020000 INT IODERR 200000 INT IODISC 400000 INT IODONE 400000 INT IODTER 100000 INT IOEND 000040 INT IOINI2 - IO INITIALIZATION PART 2 MACRO 10 05:51 24-APR-78 PAGE 12-2 IOINI2 MAC 24-APR-78 03:06 SYMBOL TABLE IOFST 000004 INT IOIMPM 400000 INT IONRCK 000100 INT IORDEL 000100 INT IORET 000020 INT IOS 000000 INT IOSTRT 000010 INT IOUSE 400000 INT IOW 000001 INT IOWC 000020 INT IOWS 400000 INT ITEM 000004 INT JBFADR 000000 INT JBFCTR 000002 INT JBFPTR 000001 INT JBUF 000005 INT JDAT 000011 INT JERR 002000 INT JIOW 100000 INT JNA 004000 INT LOOKB 040000 INT MINIMA 000000 INT MLTTYL 777777 777776 INT MTCNUM 000000 MTTYLN 777777 777776 INT MTW 010000 INT OBUFB 100000 INT OUTPB 004000 INT PDP 000003 INT PICHN 000100 INT PICLK 004202 INT PIOFF 000400 INT PION 000200 INT PROG 000007 INT RUN 200000 INT RUNABL 204000 INT SCNCHN 000003 SCNLIN 000001 STTYB1 000021 INT STTYBF 000020 INT TAC 000001 INT TAC1 000002 INT TCONLN 000001 INT TEM 000010 INT IOINI2 - IO INITIALIZATION PART 2 MACRO 10 05:51 24-APR-78 PAGE 12-3 IOINI2 MAC 24-APR-78 03:06 SYMBOL TABLE TSCNLN 000000 INT TTY0 000035' TTY0DB 000001' INT TTY1 000071' TTY1DB 000035' INT TTYATC 020000 INT TTYBFE 000033 INT TTYBM1 000013 INT TTYBUF 000014 INT TTYCTR 000012 INT TTYDSP 000040' EXT TTYLEN 000002 INT TTYLST 000001' INT TTYPTR 000011 INT TTYSAV 000013 INT TTYUSE 010000 INT UDIR 000012 INT UFREE 000011 INT USRMOD 010000 INT UTDSP 000074' EXT UUO 000014 INT IIIIIIIII OOOOOOOOO IIIIIIIII NNN NNN IIIIIIIII 333333333 IIIIIIIII OOOOOOOOO IIIIIIIII NNN NNN IIIIIIIII 333333333 IIIIIIIII OOOOOOOOO IIIIIIIII NNN NNN IIIIIIIII 333333333 III OOO OOO III NNN NNN III 333 333 III OOO OOO III NNN NNN III 333 333 III OOO OOO III NNN NNN III 333 333 III OOO OOO III NNNNNN NNN III 333 III OOO OOO III NNNNNN NNN III 333 III OOO OOO III NNNNNN NNN III 333 III OOO OOO III NNN NNN NNN III 333 III OOO OOO III NNN NNN NNN III 333 III OOO OOO III NNN NNN NNN III 333 III OOO OOO III NNN NNNNNN III 333 III OOO OOO III NNN NNNNNN III 333 III OOO OOO III NNN NNNNNN III 333 III OOO OOO III NNN NNN III 333 333 III OOO OOO III NNN NNN III 333 333 III OOO OOO III NNN NNN III 333 333 IIIIIIIII OOOOOOOOO IIIIIIIII NNN NNN IIIIIIIII 333333333 IIIIIIIII OOOOOOOOO IIIIIIIII NNN NNN IIIIIIIII 333333333 IIIIIIIII OOOOOOOOO IIIIIIIII NNN NNN IIIIIIIII 333333333 LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT Request created: 24-April-1978 05:53:58 File: DSKB0 :IOINI3.LST [8,296] Created: 20-April-1967 05:51:00 Printed: 24-April-1978 05:53:34 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:1777 File will be deleted after printing IOINI1 - IO INITIALIZATION PART 1 MACRO 10 05:51 24-APR-78 PAGE 1 S MAC 24-APR-78 21:40 MAXIMAL CONFIGURATION XLIST LIST ;SOME MACROS FOR DEFINING CONFIGURATION DEFINE NAME (A) XP A,0 SUBTTL A CONFIGURATION > DEFINE DATE (A) > DEFINE VERSION (A,B) > DEFINE CUSPTAPE (A) > DEFINE ACPDL (J,CHJN,CHJPDN) < CH'J'N=CHJN CH'J'PDN=CHJPDN > IOINI1 - IO INITIALIZATION PART 1 MACRO 10 05:51 24-APR-78 PAGE 2 IOINI MAC 24-APR-78 01:14 MAXIMAL CONFIGURATION NAME ^DEFINE NAME1 IOINI1 - IO INITIALIZATION PART 1 MACRO 10 05:51 24-APR-78 PAGE 2 IOMAX MAC 24-APR-78 02:50 MAXIMAL CONFIGURATION DATE <8-16-65>^DEFINE DATE1 ^ VERSION 1,4^DEFINE VERS1 ^ CUSPTAPE DTA0^DEFINE CUSP1 ^ ;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, ASSOC DTC,4, ASSOC DTC,4, ASSOC DTC,4, ASSOC DTC,4, ASSOC MTC,2, ASSOC MTC,2, ASSOC MTC,2, ASSOC MTC,2, ASSOC LPT,5, ASSOC PTP,5, ASSOC PTR,5, ASSOC CDR,5, > 000001 DTSIZ=1 ;MULTIPLE DECTAPE DIRECTORIES 000001 SCNLIN=1 ;DEFINE HIGHEST AC TO SAVE AND LENGTH OF PD LIST FOR EACH PI CHANNEL 000000 ACPDL (1,0,0)^ CH1N=0 000011 ACPDL (2,11,20)^ CH2N=11 000011 ACPDL (3,11,20)^ CH3N=11 000011 ACPDL (4,11,20)^ CH4N=11 000011 ACPDL (5,11,20)^ CH5N=11 000017 ACPDL (6,17,20^ CH6N=17 000000 ACPDL (7,0,0)^ CH7N=0 IOINI1 - IO INITIALIZATION PART 1 MACRO 10 05:51 24-APR-78 PAGE 2-1 IOMAX MAC 24-APR-78 02:50 MAXIMAL CONFIGURATION TITLE IOINI1 - IO INITIALIZATION PART 1 000000' 466033 044632 NAME1^CONFIG: ASCIZ /MAXIMAL/ 000001' 406300 000000 000002' 341326 133132 DATE1^SYSDAT: ASCIZ /8-16-65/ 000003' 331520 000000 000004' 000001 000004 VERS1^SYSNUM: XWD ^D1,^D4 000005' 446441 200000 CUSP1^SYSTAP: SIXBIT /DTA0/ ;CONFIGURATION INDEPENDANT PART OF IOINIT FOLLOWS: EXTERNAL ERROR ;SETUP CHANNEL SAVE AND RESTORE ROUTINES 000000 CHANU1=0 000000 CHANU2=0 000000 CHANU3=0 000000 CHANU4=0 000000 CHANU5=0 000000 CHANU6=0 000000 CHANU7=0 DEFINE ASSOC(A,NO,D) ;SPACE TO SAVE SOM AC'S EXP CH'NO'XIT ;FIRST ENTRY IN PD LIST(CHAN. EXIT) REPEAT CH'NO'PDN-1, ;REST OF PD LIST CH'NO'XIT: MOVSI CH'NO'N, CH'NO'SAC BLT CH'NO'N, CH'NO'N JEN @CH'NO CH'NO'CJ: XWD -CH'NO'PDN+1,CH'NO'SAC+CH'NO'N+1 ;INIT. SETTING OF P CH'NO': 0 ;PC STORED HERE BY JSR JRST .+1 ;INSTR. AT END OF SERVICE CHAIN AOS CH'NO'ERR ;SPURIOUS INTERRUPT, ADD TO COUNT JEN @CH'NO ;AND DISMISS > > ;GENERATE THE SAVE AND RESTORE ROUTINES SYSTEM^ 000006' 000000 000000 CH6SAV: 0 000007' 202740 000033' MOVEM CH6N, CH6SAC+CH6N IOINI1 - IO INITIALIZATION PART 1 MACRO 10 05:51 24-APR-78 PAGE 1 IOINI1 MAC 24-APR-78 04:05 MAXIMAL CONFIGURATION 000010' 201740 000014' MOVEI CH6N, CH6SAC 000011' 251740 000032' BLT CH6N,CH6SAC+CH6N-1 ;DO ONLY ONCE FOR EACH CHANNEL 000012' 200140 000057' MOVE PDP, CH6CJ 000013' 254020 000006' JRST @CH6SAV 000014' 000000 000000 EXP 0 000015' 000000 000000 EXP 0 000016' 000000 000000 EXP 0 000017' 000000 000000 EXP 0 000020' 000000 000000 EXP 0 000021' 000000 000000 EXP 0 000022' 000000 000000 EXP 0 000023' 000000 000000 EXP 0 000024' 000000 000000 EXP 0 000025' 000000 000000 EXP 0 000026' 000000 000000 EXP 0 000027' 000000 000000 EXP 0 000030' 000000 000000 EXP 0 000031' 000000 000000 EXP 0 000032' 000000 000000 EXP 0 000033' 000000 000000 EXP 0 ;SPACE TO SAVE SOM AC'S 000034' 000000 000054' EXP CH6XIT ;FIRST ENTRY IN PD LIST(CHAN. EXIT) 000035' 000000 000000 EXP 0 000036' 000000 000000 EXP 0 000037' 000000 000000 EXP 0 000040' 000000 000000 EXP 0 000041' 000000 000000 EXP 0 000042' 000000 000000 EXP 0 000043' 000000 000000 EXP 0 000044' 000000 000000 EXP 0 000045' 000000 000000 EXP 0 000046' 000000 000000 EXP 0 000047' 000000 000000 EXP 0 000050' 000000 000000 EXP 0 000051' 000000 000000 EXP 0 000052' 000000 000000 EXP 0 000053' 000000 000000 EXP 0 ;REST OF PD LIST 000054' 205740 000014' CH6XIT: MOVSI CH6N, CH6SAC 000055' 251740 000017 BLT CH6N, CH6N 000056' 254520 000060' JEN @CH6 000057' 777761 000034' CH6CJ: XWD -CH6PDN+1,CH6SAC+CH6N+1 ;INIT. SETTING OF P 000060' 000000 000000 CH6: 0 ;PC STORED HERE BY JSR 000061' 254000 000062' JRST .+1 ;INSTR. AT END OF SERVICE CHAIN 000062' 350000 000456' AOS CH6ERR ;SPURIOUS INTERRUPT, ADD TO COUNT 000063' 254520 000060' JEN @CH6 ;AND DISMISS 000064' 000000 000000 CH3SAV: 0 000065' 202440 000103' MOVEM CH3N, CH3SAC+CH3N 000066' 201440 000072' MOVEI CH3N, CH3SAC 000067' 251440 000102' BLT CH3N,CH3SAC+CH3N-1 ;DO ONLY ONCE FOR EACH CHANNEL 000070' 200140 000127' MOVE PDP, CH3CJ 000071' 254020 000064' JRST @CH3SAV 000072' 000000 000000 EXP 0 000073' 000000 000000 EXP 0 000074' 000000 000000 EXP 0 IOINI1 - IO INITIALIZATION PART 1 MACRO 10 05:51 24-APR-78 PAGE 1-1 IOINI1 MAC 24-APR-78 04:05 MAXIMAL CONFIGURATION 000075' 000000 000000 EXP 0 000076' 000000 000000 EXP 0 000077' 000000 000000 EXP 0 000100' 000000 000000 EXP 0 000101' 000000 000000 EXP 0 000102' 000000 000000 EXP 0 000103' 000000 000000 EXP 0 ;SPACE TO SAVE SOM AC'S 000104' 000000 000124' EXP CH3XIT ;FIRST ENTRY IN PD LIST(CHAN. EXIT) 000105' 000000 000000 EXP 0 000106' 000000 000000 EXP 0 000107' 000000 000000 EXP 0 000110' 000000 000000 EXP 0 000111' 000000 000000 EXP 0 000112' 000000 000000 EXP 0 000113' 000000 000000 EXP 0 000114' 000000 000000 EXP 0 000115' 000000 000000 EXP 0 000116' 000000 000000 EXP 0 000117' 000000 000000 EXP 0 000120' 000000 000000 EXP 0 000121' 000000 000000 EXP 0 000122' 000000 000000 EXP 0 000123' 000000 000000 EXP 0 ;REST OF PD LIST 000124' 205440 000072' CH3XIT: MOVSI CH3N, CH3SAC 000125' 251440 000011 BLT CH3N, CH3N 000126' 254520 000130' JEN @CH3 000127' 777761 000104' CH3CJ: XWD -CH3PDN+1,CH3SAC+CH3N+1 ;INIT. SETTING OF P 000130' 000000 000000 CH3: 0 ;PC STORED HERE BY JSR 000131' 254000 000132' JRST .+1 ;INSTR. AT END OF SERVICE CHAIN 000132' 350000 000453' AOS CH3ERR ;SPURIOUS INTERRUPT, ADD TO COUNT 000133' 254520 000130' JEN @CH3 ;AND DISMISS 000134' 000000 000000 CH4SAV: 0 000135' 202440 000153' MOVEM CH4N, CH4SAC+CH4N 000136' 201440 000142' MOVEI CH4N, CH4SAC 000137' 251440 000152' BLT CH4N,CH4SAC+CH4N-1 ;DO ONLY ONCE FOR EACH CHANNEL 000140' 200140 000177' MOVE PDP, CH4CJ 000141' 254020 000134' JRST @CH4SAV 000142' 000000 000000 EXP 0 000143' 000000 000000 EXP 0 000144' 000000 000000 EXP 0 000145' 000000 000000 EXP 0 000146' 000000 000000 EXP 0 000147' 000000 000000 EXP 0 000150' 000000 000000 EXP 0 000151' 000000 000000 EXP 0 000152' 000000 000000 EXP 0 000153' 000000 000000 EXP 0 ;SPACE TO SAVE SOM AC'S 000154' 000000 000174' EXP CH4XIT ;FIRST ENTRY IN PD LIST(CHAN. EXIT) 000155' 000000 000000 EXP 0 000156' 000000 000000 EXP 0 000157' 000000 000000 EXP 0 000160' 000000 000000 EXP 0 000161' 000000 000000 EXP 0 IOINI1 - IO INITIALIZATION PART 1 MACRO 10 05:51 24-APR-78 PAGE 1-2 IOINI1 MAC 24-APR-78 04:05 MAXIMAL CONFIGURATION 000162' 000000 000000 EXP 0 000163' 000000 000000 EXP 0 000164' 000000 000000 EXP 0 000165' 000000 000000 EXP 0 000166' 000000 000000 EXP 0 000167' 000000 000000 EXP 0 000170' 000000 000000 EXP 0 000171' 000000 000000 EXP 0 000172' 000000 000000 EXP 0 000173' 000000 000000 EXP 0 ;REST OF PD LIST 000174' 205440 000142' CH4XIT: MOVSI CH4N, CH4SAC 000175' 251440 000011 BLT CH4N, CH4N 000176' 254520 000200' JEN @CH4 000177' 777761 000154' CH4CJ: XWD -CH4PDN+1,CH4SAC+CH4N+1 ;INIT. SETTING OF P 000200' 000000 000000 CH4: 0 ;PC STORED HERE BY JSR 000201' 254000 000202' JRST .+1 ;INSTR. AT END OF SERVICE CHAIN 000202' 350000 000454' AOS CH4ERR ;SPURIOUS INTERRUPT, ADD TO COUNT 000203' 254520 000200' JEN @CH4 ;AND DISMISS 000204' 000000 000000 CH2SAV: 0 000205' 202440 000223' MOVEM CH2N, CH2SAC+CH2N 000206' 201440 000212' MOVEI CH2N, CH2SAC 000207' 251440 000222' BLT CH2N,CH2SAC+CH2N-1 ;DO ONLY ONCE FOR EACH CHANNEL 000210' 200140 000247' MOVE PDP, CH2CJ 000211' 254020 000204' JRST @CH2SAV 000212' 000000 000000 EXP 0 000213' 000000 000000 EXP 0 000214' 000000 000000 EXP 0 000215' 000000 000000 EXP 0 000216' 000000 000000 EXP 0 000217' 000000 000000 EXP 0 000220' 000000 000000 EXP 0 000221' 000000 000000 EXP 0 000222' 000000 000000 EXP 0 000223' 000000 000000 EXP 0 ;SPACE TO SAVE SOM AC'S 000224' 000000 000244' EXP CH2XIT ;FIRST ENTRY IN PD LIST(CHAN. EXIT) 000225' 000000 000000 EXP 0 000226' 000000 000000 EXP 0 000227' 000000 000000 EXP 0 000230' 000000 000000 EXP 0 000231' 000000 000000 EXP 0 000232' 000000 000000 EXP 0 000233' 000000 000000 EXP 0 000234' 000000 000000 EXP 0 000235' 000000 000000 EXP 0 000236' 000000 000000 EXP 0 000237' 000000 000000 EXP 0 000240' 000000 000000 EXP 0 000241' 000000 000000 EXP 0 000242' 000000 000000 EXP 0 000243' 000000 000000 EXP 0 ;REST OF PD LIST 000244' 205440 000212' CH2XIT: MOVSI CH2N, CH2SAC 000245' 251440 000011 BLT CH2N, CH2N 000246' 254520 000250' JEN @CH2 IOINI1 - IO INITIALIZATION PART 1 MACRO 10 05:51 24-APR-78 PAGE 1-3 IOINI1 MAC 24-APR-78 04:05 MAXIMAL CONFIGURATION 000247' 777761 000224' CH2CJ: XWD -CH2PDN+1,CH2SAC+CH2N+1 ;INIT. SETTING OF P 000250' 000000 000000 CH2: 0 ;PC STORED HERE BY JSR 000251' 254000 000252' JRST .+1 ;INSTR. AT END OF SERVICE CHAIN 000252' 350000 000452' AOS CH2ERR ;SPURIOUS INTERRUPT, ADD TO COUNT 000253' 254520 000250' JEN @CH2 ;AND DISMISS 000254' 000000 000000 CH5SAV: 0 000255' 202440 000273' MOVEM CH5N, CH5SAC+CH5N 000256' 201440 000262' MOVEI CH5N, CH5SAC 000257' 251440 000272' BLT CH5N,CH5SAC+CH5N-1 ;DO ONLY ONCE FOR EACH CHANNEL 000260' 200140 000317' MOVE PDP, CH5CJ 000261' 254020 000254' JRST @CH5SAV 000262' 000000 000000 EXP 0 000263' 000000 000000 EXP 0 000264' 000000 000000 EXP 0 000265' 000000 000000 EXP 0 000266' 000000 000000 EXP 0 000267' 000000 000000 EXP 0 000270' 000000 000000 EXP 0 000271' 000000 000000 EXP 0 000272' 000000 000000 EXP 0 000273' 000000 000000 EXP 0 ;SPACE TO SAVE SOM AC'S 000274' 000000 000314' EXP CH5XIT ;FIRST ENTRY IN PD LIST(CHAN. EXIT) 000275' 000000 000000 EXP 0 000276' 000000 000000 EXP 0 000277' 000000 000000 EXP 0 000300' 000000 000000 EXP 0 000301' 000000 000000 EXP 0 000302' 000000 000000 EXP 0 000303' 000000 000000 EXP 0 000304' 000000 000000 EXP 0 000305' 000000 000000 EXP 0 000306' 000000 000000 EXP 0 000307' 000000 000000 EXP 0 000310' 000000 000000 EXP 0 000311' 000000 000000 EXP 0 000312' 000000 000000 EXP 0 000313' 000000 000000 EXP 0 ;REST OF PD LIST 000314' 205440 000262' CH5XIT: MOVSI CH5N, CH5SAC 000315' 251440 000011 BLT CH5N, CH5N 000316' 254520 000320' JEN @CH5 000317' 777761 000274' CH5CJ: XWD -CH5PDN+1,CH5SAC+CH5N+1 ;INIT. SETTING OF P 000320' 000000 000000 CH5: 0 ;PC STORED HERE BY JSR 000321' 254000 000322' JRST .+1 ;INSTR. AT END OF SERVICE CHAIN 000322' 350000 000455' AOS CH5ERR ;SPURIOUS INTERRUPT, ADD TO COUNT 000323' 254520 000320' JEN @CH5 ;AND DISMISS ;SET UP NULL CHANNEL ROUTINES FOR UNUSED CHANNELS DEFINE NULCHN(J) < INTERNAL CH'J,CH'J'XIT CH'J: 0 CH'J'XIT: AOS CH'J'ERR IOINI1 - IO INITIALIZATION PART 1 MACRO 10 05:51 24-APR-78 PAGE 1-4 IOINI1 MAC 24-APR-78 04:05 MAXIMAL CONFIGURATION JEN @CH'J > IFE CHANU1,^ 000324' 000000 000000 CH1: 0 000325' 350000 000451' CH1XIT: AOS CH1ERR 000326' 254520 000324' JEN @CH1 IFE CHANU2, IFE CHANU3, IFE CHANU4, IFE CHANU5, IFE CHANU6, IFE CHANU7,^ 000327' 000000 000000 CH7: 0 000330' 350000 000457' CH7XIT: AOS CH7ERR 000331' 254520 000327' JEN @CH7 IOINI1 - IO INITIALIZATION PART 1 MACRO 10 05:51 24-APR-78 PAGE 2 IOINI1 MAC 24-APR-78 04:05 MAXIMAL CONFIGURATION ;ASSIGN DEVICE TO CHANNELS AND SETUP CORESPONDENCE TABLE ;OF CHANNELS TO SERVICE ROUTINES DEFINE ASSOC (A,N,D) < A'RET=CH'N'XIT A'SAV=CH'N'SAV A'SAC=CH'N'SAC A'CHL=CH'N A'CHN=N A'BIT=1 REPEAT 7-N, A'OFF=1000+A'BIT ;CONO PI, A'OFF WIL TURN CHANNEL OFF A'ON=2000+A'BIT ;TURN BACK ON A'ACT=4000+A'BIT ;FORCE INTERRUPT ON CHAN. INTERN A'RET, A'SAV, A'CHL, A'CHN, A'SAC INTERNAL A'OFF,A'ON,A'ACT,A'BIT XWD A'CHL,A'INT EXTERNAL A'INT > INTERNAL DEVINT 000332' DEVINT: SYSTEM^ 000332' 000060' 000000* XWD APRCHL,APRINT 000333' 000130' 000000* XWD CTYCHL,CTYINT 000334' 000130' 000000* XWD SCNCHL,SCNINT 000335' 000200' 000000* XWD DTCCHL,DTCINT 000336' 000200' 000335* XWD DTCCHL,DTCINT 000337' 000200' 000336* XWD DTCCHL,DTCINT 000340' 000200' 000337* XWD DTCCHL,DTCINT 000341' 000250' 000000* XWD MTCCHL,MTCINT 000342' 000250' 000341* XWD MTCCHL,MTCINT 000343' 000250' 000342* XWD MTCCHL,MTCINT 000344' 000250' 000343* XWD MTCCHL,MTCINT 000345' 000320' 000000* XWD LPTCHL,LPTINT 000346' 000320' 000000* XWD PTPCHL,PTPINT 000347' 000320' 000000* XWD PTRCHL,PTRINT 000350' 000320' 000000* XWD CDRCHL,CDRINT 000017 NDEV=.-DEVINT ;NO. OF DEVICE INTERUPT SERVICE ROUTINES 000016 NDEVM1=NDEV-1 ;(USED BY ONCE) INTERNAL NDEVM1 IOINI1 - IO INITIALIZATION PART 1 MACRO 10 05:51 24-APR-78 PAGE 3 IOINI1 MAC 24-APR-78 04:05 MAXIMAL CONFIGURATION ;INITIALIZE SOME IO DEVICES ;IOINI CALLED BY A PUSHJ PDP, FROM SYSINI AT SYSTEM INITIALIZATION DEFINE IOINIT (A) > DEFINE ASSOC (A,B,C) < IFIDN ,< IOINIT MTC> IFIDN ,< IOINIT DTC> IFIDN ,< IOINIT LPT> IFIDN ,< IOINIT SCN> IFIDN , IFIDN , > INTERNAL IOINI 000351' IOINI: SYSTEM^ 000351' 260140 000000* PUSHJ PDP,SCNINI 000352' 260140 000000* PUSHJ PDP,DTCINI 000353' 260140 000352* PUSHJ PDP,DTCINI 000354' 260140 000353* PUSHJ PDP,DTCINI 000355' 260140 000354* PUSHJ PDP,DTCINI 000356' 260140 000000* PUSHJ PDP,MTCINI 000357' 260140 000356* PUSHJ PDP,MTCINI 000360' 260140 000357* PUSHJ PDP,MTCINI 000361' 260140 000360* PUSHJ PDP,MTCINI 000362' 260140 000000* PUSHJ PDP,LPTINI 000363' 260140 000000* PUSHJ PDP,PTPINI 000364' 260140 000000* PUSHJ PDP,PTRINI 000365' 254000 000000* JRST CLKINI ;ALWAYS INIT. CLOCK EXTERNAL CLKINI IOINI1 - IO INITIALIZATION PART 1 MACRO 10 05:51 24-APR-78 PAGE 4 IOINI1 MAC 24-APR-78 04:05 MAXIMAL CONFIGURATION ;CLOCK CONTROL PARAMETERS 004006 CLDS=4000+APRCHN ;CLOCK DISABLE 000206 CLEN=200+APRCHN ;CLOCK ENABLE INTERNAL CLDS,CLEN ;BYTE POINTERS 000366' 270400 000014 PUUOAC: POINT 4,UUO,12 ;UUO AC FIELD 000367' 000400 000000 PIOMOD: POINT 4,IOS,35 ;MODE BITS 000370' 331106 000001 PJOBN: POINT 9,DEVCHR(DEVDAT),8 ;DEVICE JOB ASSIGNMENT 000371' 220406 000001 PJDCHN: POINT 4,DEVCHR(DEVDAT),17 ;JOB DEVICE CHANNEL NO. 000372' 140606 000001 PUNIT: POINT 6,DEVCHR(DEVDAT),23 ;DEVICE UNIT NO. INTERNAL PUUOAC,PIOMOD,PJOBN,PJDCHN,PUNIT ;COMMON SUBROUTINE RETURNS 000373' 350003 000000 CPOPJ2: AOS (PDP) 000374' 350003 000000 CPOPJ1: AOS (PDP) 000375' 263140 000000 CPOPJ: POPJ PDP, INTERNAL CPOPJ,CPOPJ1,CPOPJ2 IOINI1 - IO INITIALIZATION PART 1 MACRO 10 05:51 24-APR-78 PAGE 5 IOINI1 MAC 24-APR-78 04:05 MAXIMAL CONFIGURATION ,SYSTEM DATA STORAGE INTERNAL JOB,JOBADR,JBTADR,JBTSTS,USRREL,USRINF,USRJDA INTERNAL USRPDP,JOBDAT,USRDDT,USRSAV,USRUXT,USRLO,USRHI INTERNAL COMCNT,IOCOMP,USRPOV,STOPU,SCHEDF,TIME,JBTAD1 INTERNAL MTAVAL,DCAVAL,DTAVAL,MTREQ,DCREQ,DTREQ,TTYTAB,CORTAB INTERNAL CH1ERR,CH2ERR,CH3ERR,CH4ERR,CH5ERR,CH6ERR,CH7ERR INTERNAL CORLST,CORTAB,CORTAL,SYSEND,SYSBEG,DEVOPR 000000 JOBN=0 ;DEFINE NO. OF JOBS (0 THRU JOBN-1) ;THERE MUST BE MORE TTY DEVICE DATA BLCKS THAN JOBS. DEFINE ASSOC (A,N,D) ,>> SYSTEM^ 777777 777776 MJOBN=-JOBN INTERNAL JOBN,MJOBN 000376' SYSBEG: ;FIRST LOC IN SYSTEM DATA AREA XP SYSBG1,SYSBEG+1 ;FIRST LOC+1 000376' 000000 000000 JOB: 0 ;CURRENT JOB NUMBER EXCEPT WEN SCHEDF IS NON-ZERO 000377' 000000 000000 JOBADR: 0 ;CONTAINS ADDRESS OF JOB CURRENTLY RUNNING 000400' 000000 000000 JOBDAT: 0 ;CONTAINS ADDRESS OF JOB DATA AREA 000401' JBTADR: BLOCK JOBN ;C(LH)=PROTECT, C(RH)=RELOCATION XP JBTAD1,JBTADR+1 ;ADDRESS OF JOB 1(USED BY SYSMAK) 000403' JBTSTS: BLOCK JOBN ;CONTAINS STATUS INFORMATION FOR EACH J 000405' 000000 000000 USRPDP: 0 ;USER PUSH DOWN POINTER 000406' 000000 000000 USRREL: 0 ;LH=0, RH CONTAINS CONTENTS OF PROTECTION REGISTER 000407' USRLO: ;FIRST LOC CLEARD BY SETUSR SUBROUTINE 000407' 000000 000000 USRUXT: 0 ;UNUSED, JOBUXT USED TO SAVE UUO PC(UUO0) 000410' 000000 000000 USRLEV: 0 ;UNUSED, JOBLEV USED TO SAVE LOC. 40 000411' 000000 000000 USRSAV: 0 ;TEMPORARY STORAGE FOR UUO HANDLER 000412' 000000 000000 USRPOV: 0 ;PUSH DOWN OVERFLOW TRAP 000413' BLOCK 2 000415' 000000 000000 USRINF: 0 ;UN LAYED OUT USER INFORMATION 000416' USRJDA: BLOCK 20 ;RH=JOB DEVICE ASSIGNMENTS FOR THIS USER,LH=UUOS XP USRHI,.-1 ;LAST LOC CLEARED BY SETUSR ROUTINE XP USRPFI,.-1 ;LAST LOC PROTECTED FROM IO SERVICE XP USRPFU,. ;LAST LOC PROTECTED FROM USER PROGRAM 000436' 000000 000000 USRDDT: 0 ;STARTING ADDR OF USER DDT ;DEVICE JUSTR BECOME AVAILABLE FLAGS 000437' 000000 000000 MTAVAL: 0 ;MAGNETIC TAPE 000440' 000000 000000 DCAVAL: 0 ;DATA CONTROL 000441' 000000 000000 DTAVAL: 0 ;DECTAPE ;NUMBER OF JOBS WAITING FOR DEVICES(-1=NONE, 0=1 USING, 1=1 USING) 000442' 777777 777777 MTREQ: -1 ;MAGNETIC TAPE 000443' 777777 777777 DCREQ: -1 ;DATA CONTROL 000444' 777777 777777 DTREQ: -1 ;DECTAPE IOINI1 - IO INITIALIZATION PART 1 MACRO 10 05:51 24-APR-78 PAGE 5-1 IOINI1 MAC 24-APR-78 04:05 MAXIMAL CONFIGURATION 000445' 000000 000000 IOCOMP: 0 ;NUMBER OF USERS IN IO WAIT STATE 000446' 000000 000000 COMCNT: 0 ;NUMBER OF COMMANDS TYPED-IN BUT NOT DECODED 000447' 000000 000000 STOPU: 0 ;NON-ZERO WHEN CLOCK INTERRUPT FORCED TO STOP USER 000450' 000000 000000 SCHEDF: 0 ;NON-ZERO WHEN CLOCK ROUTINE IS SCHEDULING 000451' 000000 000000 CH1ERR: 0 ;SPURIOUS INTERRUPT COUNTS FOR EACH CHANNEL 000452' 000000 000000 CH2ERR: 0 000453' 000000 000000 CH3ERR: 0 000454' 000000 000000 CH4ERR: 0 000455' 000000 000000 CH5ERR: 0 000456' 000000 000000 CH6ERR: 0 000457' 000000 000000 CH7ERR: 0 000410' USRLO1=USRLO+1 INTERNAL USRLO1 IOINI1 - IO INITIALIZATION PART 1 MACRO 10 05:51 24-APR-78 PAGE 6 IOINI1 MAC 24-APR-78 04:05 MAXIMAL CONFIGURATION 000460' 000000 000000 TIME: 0 ;TIME SYSTEM HAS RUN IN 60THS OF A SECOND XP TTYLEN,SCNLIN+1 ;LENGTH OF TTY TRANSLATOR TABLES(INCLUDING CTY) 000461' TTYTAB: BLOCK TTYLEN ;TTY TRANSLATOR TABLE ;SIGN BIT = 1 IF COMMAND JUST TYPED ;BITS 1 -9, JOB CONSOLE IS ATTACHED TO ;BITS 18-35, THE DEVICE DATA BLOCK FOR 000463' 000000 000000 DEVOPR: 0 ;SIXBIT PHYSICAL NAME OF OPERATORS ;CONSOLE SET BY SCNSER TO FIRST ACTIVE TTY. ;LOCATIONS FOR CORE ALLOCATION XP CORBLK,^D256 ;NO. OF 1K BLOCKS POSSIBLE 000464' CORTAB: BLOCK /^D36+1 ;1K BLOCK USE BIT TABLE ;A 1 MEANS BLOCK IS IN USE 000474' 000000 000000 CORLST: 0 ;1 BIT BYTE POINTER TO LAST FREE BLOCK POSSIBLE 000475' 000000 000000 CORTAL: 0 ;TOTAL NO. OF FREE CORE BLOCKS LEFT ;CORLST AND CORTAL ARE SET UP AT SYSTEM INITIALIZATION 000475' SYSEND=.-1 ;LAST LOC. CLEARED BY SYSINI INTERNAL SYSSIZ EXTERNAL SYSFIN 000476' 000000 000000* SYSSIZ: EXP SYSFIN ;SIZE OF MONITOR(LAST LOC. USED) IOINI1 - IO INITIALIZATION PART 1 MACRO 10 05:51 24-APR-78 PAGE 7 IOINI1 MAC 24-APR-78 04:05 MAXIMAL CONFIGURATION END, NO ERRORS DETECTED PROGRAM BREAK IS 000477 9K CORE USED IOINI1 - IO INITIALIZATION PART 1 MACRO 10 05:51 24-APR-78 PAGE 8 IOINI1 MAC 24-APR-78 04:05 SYMBOL TABLE A 000000 INT AC1 000015 INT AC2 000016 INT AC3 000017 INT AL 000001 INT APRACT 004002 INT APRBIT 000002 INT APRCHL 000060' INT APRCHN 000006 INT APRINT 000332' EXT APROFF 001002 INT APRON 002002 INT APRRET 000054' INT APRSAC 000014' INT APRSAV 000006' INT ASSCON 400000 INT ASSPRG 200000 INT B 000014 INT BUFPNT 000012 INT BUFWRD 000013 INT CDRACT 004004 INT CDRBIT 000004 INT CDRCHL 000320' INT CDRCHN 000005 INT CDRINT 000350' EXT CDROFF 001004 INT CDRON 002004 INT CDRRET 000314' INT CDRSAC 000262' INT CDRSAV 000254' INT CH1 000324' INT CH1ERR 000451' INT CH1N 000000 CH1PDN 000000 CH1XIT 000325' INT CH2 000250' INT CH2CJ 000247' CH2ERR 000452' INT CH2N 000011 CH2PDN 000020 CH2SAC 000212' INT CH2SAV 000204' INT CH2XIT 000244' INT CH3 000130' INT CH3CJ 000127' CH3ERR 000453' INT CH3N 000011 CH3PDN 000020 CH3SAC 000072' INT CH3SAV 000064' INT IOINI1 - IO INITIALIZATION PART 1 MACRO 10 05:51 24-APR-78 PAGE 8-1 IOINI1 MAC 24-APR-78 04:05 SYMBOL TABLE CH3XIT 000124' INT CH4 000200' INT CH4CJ 000177' CH4ERR 000454' INT CH4N 000011 CH4PDN 000020 CH4SAC 000142' INT CH4SAV 000134' INT CH4XIT 000174' INT CH5 000320' INT CH5CJ 000317' CH5ERR 000455' INT CH5N 000011 CH5PDN 000020 CH5SAC 000262' INT CH5SAV 000254' INT CH5XIT 000314' INT CH6 000060' INT CH6CJ 000057' CH6ERR 000456' INT CH6N 000017 CH6PDN 000020 CH6SAC 000014' INT CH6SAV 000006' INT CH6XIT 000054' INT CH7 000327' INT CH7ERR 000457' INT CH7N 000000 CH7PDN 000000 CH7XIT 000330' INT CHANU1 000000 CHANU2 000001 CHANU3 000001 CHANU4 000001 CHANU5 000001 CHANU6 000001 CHANU7 000000 CLDS 004006 INT CLEN 000206 INT CLKINI 000365' EXT CLOSB 002000 INT CLSIN 000002 INT CLSOUT 000001 INT COMCNT 000446' INT CONFIG 000000' INT CORBLK 000400 INT CORLST 000474' INT CORTAB 000464' INT CORTAL 000475' INT CPOPJ 000375' INT CPOPJ1 000374' INT CPOPJ2 000373' INT CTYACT 004020 INT IOINI1 - IO INITIALIZATION PART 1 MACRO 10 05:51 24-APR-78 PAGE 8-2 IOINI1 MAC 24-APR-78 04:05 SYMBOL TABLE CTYBIT 000020 INT CTYCHL 000130' INT CTYCHN 000003 INT CTYINT 000333' EXT CTYOFF 001020 INT CTYON 002020 INT CTYRET 000124' INT CTYSAC 000072' INT CTYSAV 000064' INT D 000017 INT DAT 000005 INT DCAVAL 000440' INT DCL 000001 INT DCREQ 000443' INT DCW 020000 INT DDI 000007 INT DDO 000006 INT DDTMEM 000037 INT DDTSYM 000036 INT DEN 000004 INT DEVADR 000007 INT DEVBUF 000006 INT DEVCHR 000001 INT DEVCTR 000011 INT DEVDAT 000006 INT DEVIAD 000007 INT DEVINT 000332' INT DEVIOS 000002 INT DEVLOG 000005 INT DEVMOD 000004 INT DEVNAM 000000 INT DEVOAD 000010 INT DEVOPR 000463' INT DEVPTR 000010 INT DEVSER 000003 INT DGF 000012 INT DIN 000003 INT DLK 000005 INT DOU 000002 INT DR 000016 INT DRL 000000 INT DSI 000011 INT DSO 000010 INT DTAVAL 000441' INT DTCACT 004010 INT DTCBIT 000010 INT DTCCHL 000200' INT DTCCHN 000004 INT DTCINI 000355' EXT IOINI1 - IO INITIALIZATION PART 1 MACRO 10 05:51 24-APR-78 PAGE 8-3 IOINI1 MAC 24-APR-78 04:05 SYMBOL TABLE DTCINT 000340' EXT DTCOFF 001010 INT DTCON 002010 INT DTCRET 000174' INT DTCSAC 000142' INT DTCSAV 000134' INT DTREQ 000444' INT DTSIZ 000001 DTW 040000 INT DVAVAL 000040 INT DVCDR 100000 INT DVDIR 000004 INT DVDIRI 400000 INT DVIN 000002 INT DVLPT 040000 INT DVMTA 000020 INT DVOUT 000001 INT DVTTY 000010 INT ENTRB 020000 INT ERROR 000000 EXT I 000010 INT IB 000013 INT IBUFB 200000 INT INITB 400000 INT INPB 010000 INT IO 000020 INT IOACT 010000 INT IOBEG 000002 INT IOBKTL 040000 INT IOCOMP 000445' INT IOCON 000040 INT IODEND 020000 INT IODERR 200000 INT IODISC 400000 INT IODONE 400000 INT IODTER 100000 INT IOEND 000040 INT IOFST 000004 INT IOIMPM 400000 INT IOINI 000351' INT IONRCK 000100 INT IORDEL 000100 INT IORET 000020 INT IOS 000000 INT IOSTRT 000010 INT IOUSE 400000 INT IOW 000001 INT IOWC 000020 INT IOWS 400000 INT ITEM 000004 INT JBFADR 000000 INT JBFCTR 000002 INT IOINI1 - IO INITIALIZATION PART 1 MACRO 10 05:51 24-APR-78 PAGE 8-4 IOINI1 MAC 24-APR-78 04:05 SYMBOL TABLE JBFPTR 000001 INT JBTAD1 000402' INT JBTADR 000401' INT JBTSTS 000403' INT JBUF 000005 INT JDAT 000011 INT JERR 002000 INT JIOW 100000 INT JNA 004000 INT JOB 000376' INT JOBADR 000377' INT JOBDAT 000400' INT JOBN 000002 INT LOOKB 040000 INT LPTACT 004004 INT LPTBIT 000004 INT LPTCHL 000320' INT LPTCHN 000005 INT LPTINI 000362' EXT LPTINT 000345' EXT LPTOFF 001004 INT LPTON 002004 INT LPTRET 000314' INT LPTSAC 000262' INT LPTSAV 000254' INT MAXIMA 000000 INT MJOBN 777777 777776 INT MTAVAL 000437' INT MTCACT 004040 INT MTCBIT 000040 INT MTCCHL 000250' INT MTCCHN 000002 INT MTCINI 000361' EXT MTCINT 000344' EXT MTCOFF 001040 INT MTCON 002040 INT MTCRET 000244' INT MTCSAC 000212' INT MTCSAV 000204' INT MTREQ 000442' INT MTW 010000 INT NDEV 000017 NDEVM1 000016 INT OBUFB 100000 INT OUTPB 004000 INT PDP 000003 INT PICHN 000100 INT PIOMOD 000367' INT PJDCHN 000371' INT PJOBN 000370' INT IOINI1 - IO INITIALIZATION PART 1 MACRO 10 05:51 24-APR-78 PAGE 8-5 IOINI1 MAC 24-APR-78 04:05 SYMBOL TABLE PROG 000007 INT PTPACT 004004 INT PTPBIT 000004 INT PTPCHL 000320' INT PTPCHN 000005 INT PTPINI 000363' EXT PTPINT 000346' EXT PTPOFF 001004 INT PTPON 002004 INT PTPRET 000314' INT PTPSAC 000262' INT PTPSAV 000254' INT PTRACT 004004 INT PTRBIT 000004 INT PTRCHL 000320' INT PTRCHN 000005 INT PTRINI 000364' EXT PTRINT 000347' EXT PTROFF 001004 INT PTRON 002004 INT PTRRET 000314' INT PTRSAC 000262' INT PTRSAV 000254' INT PUNIT 000372' INT PUUOAC 000366' INT RUN 200000 INT RUNABL 204000 INT SCHEDF 000450' INT SCNACT 004020 INT SCNBIT 000020 INT SCNCHL 000130' INT SCNCHN 000003 INT SCNINI 000351' EXT SCNINT 000334' EXT SCNLIN 000001 SCNOFF 001020 INT SCNON 002020 INT SCNRET 000124' INT SCNSAC 000072' INT SCNSAV 000064' INT STOPU 000447' INT SYSBEG 000376' INT SYSBG1 000377' INT SYSDAT 000002' INT SYSEND 000475' INT SYSFIN 000476' EXT SYSMOD 000001 INT SYSNUM 000004' INT SYSSIZ 000476' INT SYSTAP 000005' INT SYSVER 000004 INT TAC 000001 INT IOINI1 - IO INITIALIZATION PART 1 MACRO 10 05:51 24-APR-78 PAGE 8-6 IOINI1 MAC 24-APR-78 04:05 SYMBOL TABLE TAC1 000002 INT TEM 000010 INT TIME 000460' INT TTYATC 020000 INT TTYLEN 000002 INT TTYTAB 000461' INT TTYUSE 010000 INT USRDDT 000436' INT USRHI 000435' INT USRINF 000415' INT USRJDA 000416' INT USRLEV 000410' USRLO 000407' INT USRLO1 000410' INT USRMOD 010000 INT USRPDP 000405' INT USRPFI 000435' INT USRPFU 000436' INT USRPOV 000412' INT USRREL 000406' INT USRSAV 000411' INT USRUXT 000407' INT IIIIIIIII OOOOOOOOO IIIIIIIII NNN NNN IIIIIIIII 444 444 IIIIIIIII OOOOOOOOO IIIIIIIII NNN NNN IIIIIIIII 444 444 IIIIIIIII OOOOOOOOO IIIIIIIII NNN NNN IIIIIIIII 444 444 III OOO OOO III NNN NNN III 444 444 III OOO OOO III NNN NNN III 444 444 III OOO OOO III NNN NNN III 444 444 III OOO OOO III NNNNNN NNN III 444 444 III OOO OOO III NNNNNN NNN III 444 444 III OOO OOO III NNNNNN NNN III 444 444 III OOO OOO III NNN NNN NNN III 444444444444444 III OOO OOO III NNN NNN NNN III 444444444444444 III OOO OOO III NNN NNN NNN III 444444444444444 III OOO OOO III NNN NNNNNN III 444 III OOO OOO III NNN NNNNNN III 444 III OOO OOO III NNN NNNNNN III 444 III OOO OOO III NNN NNN III 444 III OOO OOO III NNN NNN III 444 III OOO OOO III NNN NNN III 444 IIIIIIIII OOOOOOOOO IIIIIIIII NNN NNN IIIIIIIII 444 IIIIIIIII OOOOOOOOO IIIIIIIII NNN NNN IIIIIIIII 444 IIIIIIIII OOOOOOOOO IIIIIIIII NNN NNN IIIIIIIII 444 LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT Request created: 24-April-1978 05:53:58 File: DSKB0 :IOINI4.LST [8,296] Created: 20-April-1967 05:51:00 Printed: 24-April-1978 05:53:35 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:1754 File will be deleted after printing IOINI2 - IO INITIALIZATION PART 2 MACRO 10 05:51 24-APR-78 PAGE 1 S MAC 24-APR-78 21:40 MAXIMAL CONFIGURATION XLIST LIST ;SOME MACROS FOR DEFINING CONFIGURATION DEFINE NAME (A) XP A,0 SUBTTL A CONFIGURATION > DEFINE DATE (A) > DEFINE VERSION (A,B) > DEFINE CUSPTAPE (A) > DEFINE ACPDL (J,CHJN,CHJPDN) < CH'J'N=CHJN CH'J'PDN=CHJPDN > IOINI2 - IO INITIALIZATION PART 2 MACRO 10 05:51 24-APR-78 PAGE 2 IOINI MAC 24-APR-78 01:14 MAXIMAL CONFIGURATION NAME ^DEFINE NAME1 IOINI2 - IO INITIALIZATION PART 2 MACRO 10 05:51 24-APR-78 PAGE 2 IOMAX MAC 24-APR-78 02:50 MAXIMAL CONFIGURATION DATE <8-16-65>^DEFINE DATE1 ^ VERSION 1,4^DEFINE VERS1 ^ CUSPTAPE DTA0^DEFINE CUSP1 ^ ;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, ASSOC DTC,4, ASSOC DTC,4, ASSOC DTC,4, ASSOC DTC,4, ASSOC MTC,2, ASSOC MTC,2, ASSOC MTC,2, ASSOC MTC,2, ASSOC LPT,5, ASSOC PTP,5, ASSOC PTR,5, ASSOC CDR,5, > 000001 DTSIZ=1 ;MULTIPLE DECTAPE DIRECTORIES 000001 SCNLIN=1 ;DEFINE HIGHEST AC TO SAVE AND LENGTH OF PD LIST FOR EACH PI CHANNEL 000000 ACPDL (1,0,0)^ CH1N=0 000011 ACPDL (2,11,20)^ CH2N=11 000011 ACPDL (3,11,20)^ CH3N=11 000011 ACPDL (4,11,20)^ CH4N=11 000011 ACPDL (5,11,20)^ CH5N=11 000017 ACPDL (6,17,20^ CH6N=17 000000 ACPDL (7,0,0)^ CH7N=0 IOINI2 - IO INITIALIZATION PART 2 MACRO 10 05:51 24-APR-78 PAGE 2-1 IOMAX MAC 24-APR-78 02:50 MAXIMAL CONFIGURATION TITLE IOINI2 - IO INITIALIZATION PART 2 ;DEFINITIONS OF DEVCHN AND DEVBIT ;THESE ALSO OCCUR IN IOINT1 DEFINE ASSOC (A,N,D) < A'CHN=N > SYSTEM^ IOINI2 - IO INITIALIZATION PART 2 MACRO 10 05:51 24-APR-78 PAGE 2 IOINI2 MAC 24-APR-78 03:06 MAXIMAL CONFIGURATION ;APR PIP BITS 000001 APRBIT=1 000002 REPEAT 7-APRCHN, XP PION,200 ;CONO PI,PION TURNS PI SYSTEM ON XP PIOFF,400 ;TURN IT OFF XP PICLK,PION+1B24+APRBIT ;TURN PI ON, AND FORCE CLOCK INT. XP CLKOFF,1000+APRCHN ;CONO APR,CLKOFF TURNS CLOCK FLAG OFF IOINI2 - IO INITIALIZATION PART 2 MACRO 10 05:51 24-APR-78 PAGE 3 IOINI2 MAC 24-APR-78 03:06 MAXIMAL CONFIGURATION ;ASSEMBLE ALL DEVICE DATA BLOCKS AND LINK THEM TOGETHER DEFINE SCNDDB (A,B,C) < INTERNAL C'DB C'DB: ZZ=. SIXBIT /C/ XWD A'CHN*PICHN,STTYBF+1 ;LONG ENOUGH FOR PRINTING ;SEQUENCE CARD IMAGE. ;USER BUFFERS ARE 2 WORDS ;LONGER THEN THE MONITORY TTY BUFFERS. 0 EXTERNAL TTYDSP XWD C,TTYDSP XWD DVTTY+DVIN+DVOUT,3 0 0 XWD PROG,0 XWD PROG,0 XP TTYPTR,.-ZZ 0 XP TTYCTR,.-ZZ 0 XP TTYSAV,.-ZZ 0 XP TTYBUF,.-ZZ XP TTYBM1,TTYBUF-1 XP STTYBF,20 XP STTYB1,STTYBF+1 ;LENGTH+1 BLOCK STTYBF XP TTYBFE,.-ZZ-1 ;LINE NO. PARAMETERS XP TTYLEN,SCNLIN+1 ;LENGTH OF TTY TRANSLATOR TABLE(INCLUDE TTY) XP TSCNLN,SCNLIN-1 ;HIGHEST TTY LINE NO.(NOT COUNTING CTY) XP TCONLN,TSCNLN+1 ;CTY LINE NUMBER XP MTTYLN,-TTYLEN ;NEGATIVEL LENGTH OF TRANSLATOR TABLE XP FSNCHN,SCNCHN*101 ;CHANNEL ASSIGNED, FOR FULL DUPLEX SCN. XP TTYLST,TTY0DB ;FIRST TTY DEVICE DATA BLOCK > ;NEG. NO. OF TELTYPE DEVICE DATA BLOCKS 000000 MLTTYL=0 DEFINE ASSOC (A,N,D) ,,>> SYSTEM^ INTERNAL MLTTYL IOINI2 - IO INITIALIZATION PART 2 MACRO 10 05:51 24-APR-78 PAGE 4 IOINI2 MAC 24-APR-78 03:06 MAXIMAL CONFIGURATION ;MAG TAPE DEVICE DATA BLOCK 000000 MTCNUM=0 DEFINE MTCDDB (A,B,C) < INTERNAL C'DB C'DB: SIXBIT /C/ MTCNUM=MTCNUM+1 XWD IORET+A'CHN*PICHN,*10000+201 0 XWD C,MTDISP EXTERNAL MTDISP XWD 4400+DVMTA+DVIN+DVOUT,154403 0 0 XWD PROG,0 XWD PROG,0 > IOINI2 - IO INITIALIZATION PART 2 MACRO 10 05:51 24-APR-78 PAGE 5 IOINI2 MAC 24-APR-78 03:06 MAXIMAL CONFIGURATION ;DECTAPE DEVICE DATA BLOCK 000000 DTCNUM=0 DEFINE DTCDDB (A,B,C) < INTERNAL C'DB C'DB: ZZ=. SIXBIT /C/ DTCNUM=DTCNUM+1 XWD IORET+A'CHN*PICHN,*10000+201 0 XWD C,UTDSP EXTERNAL UTDSP XWD 4400+DVDIR+DVIN+DVOUT,154403 0 0 0 0 XP UFREE,.-ZZ ;NEXT FREE BLOCK NO. 0 XP UDIR,.-ZZ ;LINK TO DIRECTORY IN DATA BLOCK IFE DTSIZ,< EXP DIRBUF > IFN DTSIZ,< EXP DTDIR+200* > > IOINI2 - IO INITIALIZATION PART 2 MACRO 10 05:51 24-APR-78 PAGE 6 IOINI2 MAC 24-APR-78 03:06 MAXIMAL CONFIGURATION ;LINE PRINTER DEVICE DTA BLOCK DEFINE LPTDDB (A,B,C) IOINI2 - IO INITIALIZATION PART 2 MACRO 10 05:51 24-APR-78 PAGE 7 IOINI2 MAC 24-APR-78 03:06 MAXIMAL CONFIGURATION ;CARD READER DEVICE DATA BLOCK DEFINE CDRDDB (A,B,C) IOINI2 - IO INITIALIZATION PART 2 MACRO 10 05:51 24-APR-78 PAGE 8 IOINI2 MAC 24-APR-78 03:06 MAXIMAL CONFIGURATION ;PAPER TAPE READER DEVICE DATA BLOCK DEFINE PTRDDB (A,B,C) IOINI2 - IO INITIALIZATION PART 2 MACRO 10 05:51 24-APR-78 PAGE 9 IOINI2 MAC 24-APR-78 03:06 MAXIMAL CONFIGURATION ;PAPER TAPE PUNCH DEVICE DATA BLOCK DEFINE PTPDDB (A,B,C) IOINI2 - IO INITIALIZATION PART 2 MACRO 10 05:51 24-APR-78 PAGE 10 IOINI2 MAC 24-APR-78 03:06 MAXIMAL CONFIGURATION ;GENERATE DEVICE DATA BLOCKS NEEDED FOR THIS CONFIGURATION DEFINE ASSOC (A,B,C) < IRP C,< ;DEFINE FORWARD LINL SYMBOL LINK ; ; ; A'DDB A,B,C C=0 ;SET LINK TO 0(IN CASE THIS IS LAST DDB) DEFINE LINK > > INTERNAL DEVLST 000000' 000001' 000000 DEVLST: XWD FIRDB,0 ;BEGINNING OF DEVICE DATA BLOCK CHAIN DEFINE LINK SYSTEM^ 000001' 646471 200000 SIXBIT /TTY0/ 000002' 000300 000021 XWD SCNCHN*PICHN,STTYBF+1 ;LONG ENOUGH FOR PRINTING 000003' 000000 000000 0 000004' 000035' 000000* XWD TTY0,TTYDSP 000005' 000013 000003 XWD DVTTY+DVIN+DVOUT,3 000006' 000000 000000 0 000007' 000000 000000 0 000010' 000007 000000 XWD PROG,0 000011' 000007 000000 XWD PROG,0 000012' 000000 000000 0 000013' 000000 000000 0 000014' 000000 000000 0 000035' 646471 210000 SIXBIT /TTY1/ 000036' 000300 000021 XWD SCNCHN*PICHN,STTYBF+1 ;LONG ENOUGH FOR PRINTING 000037' 000000 000000 0 000040' 000071' 000004* XWD TTY1,TTYDSP 000041' 000013 000003 XWD DVTTY+DVIN+DVOUT,3 000042' 000000 000000 0 000043' 000000 000000 0 000044' 000007 000000 XWD PROG,0 000045' 000007 000000 XWD PROG,0 000046' 000000 000000 0 000047' 000000 000000 0 000050' 000000 000000 0 000071' 446441 200000 SIXBIT /DTA0/ 000072' 000420 000201 XWD IORET+DTCCHN*PICHN,*10000+201 IOINI2 - IO INITIALIZATION PART 2 MACRO 10 05:51 24-APR-78 PAGE 10-1 IOINI2 MAC 24-APR-78 03:06 MAXIMAL CONFIGURATION 000073' 000000 000000 0 000074' 000104' 000000* XWD DTA0,UTDSP 000075' 004407 154403 XWD 4400+DVDIR+DVIN+DVOUT,154403 000076' 000000 000000 0 000077' 000000 000000 0 000100' 000000 000000 0 000101' 000000 000000 0 000102' 000000 000000 0 000103' 000000 000267' IFN DTSIZ,< EXP DTDIR+200* 000104' 446441 210000 SIXBIT /DTA1/ 000105' 000420 010201 XWD IORET+DTCCHN*PICHN,*10000+201 000106' 000000 000000 0 000107' 000117' 000074* XWD DTA1,UTDSP 000110' 004407 154403 XWD 4400+DVDIR+DVIN+DVOUT,154403 000111' 000000 000000 0 000112' 000000 000000 0 000113' 000000 000000 0 000114' 000000 000000 0 000115' 000000 000000 0 000116' 000000 000467' IFN DTSIZ,< EXP DTDIR+200* 000117' 446441 220000 SIXBIT /DTA2/ 000120' 000420 020201 XWD IORET+DTCCHN*PICHN,*10000+201 000121' 000000 000000 0 000122' 000132' 000107* XWD DTA2,UTDSP 000123' 004407 154403 XWD 4400+DVDIR+DVIN+DVOUT,154403 000124' 000000 000000 0 000125' 000000 000000 0 000126' 000000 000000 0 000127' 000000 000000 0 000130' 000000 000000 0 000131' 000000 000667' IFN DTSIZ,< EXP DTDIR+200* 000132' 446441 230000 SIXBIT /DTA3/ 000133' 000420 030201 XWD IORET+DTCCHN*PICHN,*10000+201 000134' 000000 000000 0 000135' 000145' 000122* XWD DTA3,UTDSP 000136' 004407 154403 XWD 4400+DVDIR+DVIN+DVOUT,154403 000137' 000000 000000 0 000140' 000000 000000 0 000141' 000000 000000 0 000142' 000000 000000 0 000143' 000000 000000 0 000144' 000000 001067' IFN DTSIZ,< EXP DTDIR+200* 000145' 556441 200000 MTA0DB: SIXBIT /MTA0/ 000146' 000220 000201 XWD IORET+MTCCHN*PICHN,*10000+201 000147' 000000 000000 0 000150' 000156' 000000* XWD MTA0,MTDISP 000151' 004423 154403 XWD 4400+DVMTA+DVIN+DVOUT,154403 000152' 000000 000000 0 000153' 000000 000000 0 000154' 000007 000000 XWD PROG,0 000155' 000007 000000 XWD PROG,0 000156' 556441 210000 MTA1DB: SIXBIT /MTA1/ 000157' 000220 010201 XWD IORET+MTCCHN*PICHN,*10000+201 IOINI2 - IO INITIALIZATION PART 2 MACRO 10 05:51 24-APR-78 PAGE 10-2 IOINI2 MAC 24-APR-78 03:06 MAXIMAL CONFIGURATION 000160' 000000 000000 0 000161' 000167' 000150* XWD MTA1,MTDISP 000162' 004423 154403 XWD 4400+DVMTA+DVIN+DVOUT,154403 000163' 000000 000000 0 000164' 000000 000000 0 000165' 000007 000000 XWD PROG,0 000166' 000007 000000 XWD PROG,0 000167' 556441 220000 MTA2DB: SIXBIT /MTA2/ 000170' 000220 020201 XWD IORET+MTCCHN*PICHN,*10000+201 000171' 000000 000000 0 000172' 000200' 000161* XWD MTA2,MTDISP 000173' 004423 154403 XWD 4400+DVMTA+DVIN+DVOUT,154403 000174' 000000 000000 0 000175' 000000 000000 0 000176' 000007 000000 XWD PROG,0 000177' 000007 000000 XWD PROG,0 000200' 556441 230000 MTA3DB: SIXBIT /MTA3/ 000201' 000220 030201 XWD IORET+MTCCHN*PICHN,*10000+201 000202' 000000 000000 0 000203' 000211' 000172* XWD MTA3,MTDISP 000204' 004423 154403 XWD 4400+DVMTA+DVIN+DVOUT,154403 000205' 000000 000000 0 000206' 000000 000000 0 000207' 000007 000000 XWD PROG,0 000210' 000007 000000 XWD PROG,0 000211' 546064 000000 LPTDAT: SIXBIT /LPT/ 000212' 000500 000032 LPTCHR: XWD LPTCHN*PICHN,32 000213' 000000 000000 LPTIOS: 0 000214' 000223' 000000* LPTSER: XWD LPT,LPTDSP 000215' 000001 000003 LPTMOD: XWD 0+DVOUT,3 000216' 000000 000000 0 000217' 000000 000000 LPTBUF: 0 000220' 000000 000000 LPTPTR: 0 000221' 000007 000000 LPTADR: XWD PROG,0 000222' 000000 000000 LPTSV1: 0 000223' 606460 000000 PTPDAT: SIXBIT /PTP/ 000224' 000500 000041 PTPCHR: XWD PTPCHN*PICHN,41 000225' 000000 000000 PTPIOS: 0 000226' 000240' 000000* PTPSER: XWD PTP,PTPDSP 000227' 001001 014403 PTPMOD: XWD 1000+DVOUT,14403 000230' 000000 000000 0 000231' 000000 000000 PTPBUF: 0 000232' 000000 000000 PTPPTR: 0 000233' 000007 000000 PTPADR: XWD PROG,0 000234' 000000 000000 PTPCTR: 0 000235' 000000 000000 PTPCNT: 0 000236' 000000 000000 PTPCHA: 0 000237' 000000 000000 PTPSIO: 0 000240' 606462 000000 PTRDAT: SIXBIT /PTR/ 000241' 000500 000041 PTRCHR: XWD PTRCHN*PICHN,41 000242' 000000 000000 PTRIOS: 0 000243' 000254' 000000* PTRSER: XWD PTR,PTRDSP 000244' 001002 014403 PTRMOD: XWD 1000+DVIN,14403 IOINI2 - IO INITIALIZATION PART 2 MACRO 10 05:51 24-APR-78 PAGE 10-3 IOINI2 MAC 24-APR-78 03:06 MAXIMAL CONFIGURATION 000245' 000000 000000 0 000246' 000000 000000 PTRBUF: 0 000247' 000007 000000 PTRADR: XWD PROG,0 000250' 000000 000000 PTRPTR: 0 000251' 000000 000000 PTRCTR: 0 000252' 000000 000000 PTRSVC: 0 000253' 000000 000000 PTRSV1: 0 000254' 434462 000000 CDRDAT: SIXBIT /CDR/ 000255' 000500 000034 XWD CDRCHN*PICHN,34 ;LONG ENOUGHT FOR BINARY CARDS 000256' 000000 000000 0 000257' 000000 000000* XWD CDR,CDRDSP 000260' 101402 014403 XWD DVCDR+1400+DVIN,14403 000261' 000000 000000 0 000262' 000000 000000 0 000263' 000007 000000 XWD PROG,0 000264' 000000 000000 0 000265' 000000 000000 0 000266' 254000 000266' CRDIS: JRST . IOINI2 - IO INITIALIZATION PART 2 MACRO 10 05:51 24-APR-78 PAGE 11 IOINI2 MAC 24-APR-78 03:06 MAXIMAL CONFIGURATION 000267' LIT IFE DTSIZ,< DIRBUF: BLOCK 200 INTERNAL DIRBUF > 000267' IFN DTSIZ, END, NO ERRORS DETECTED PROGRAM BREAK IS 001267 10K CORE USED IOINI2 - IO INITIALIZATION PART 2 MACRO 10 05:51 24-APR-78 PAGE 12 IOINI2 MAC 24-APR-78 03:06 SYMBOL TABLE A 000000 INT AC1 000015 INT AC2 000016 INT AC3 000017 INT AL 000001 INT APRBIT 000002 APRCHN 000006 ASSCON 400000 INT ASSPRG 200000 INT B 000014 INT BUFPNT 000012 INT BUFWRD 000013 INT CDR 000000 CDRCHN 000005 CDRDAT 000254' INT CDRDB 000254' INT CDRDSP 000257' EXT CH1N 000000 CH1PDN 000000 CH2N 000011 CH2PDN 000020 CH3N 000011 CH3PDN 000020 CH4N 000011 CH4PDN 000020 CH5N 000011 CH5PDN 000020 CH6N 000017 CH6PDN 000020 CH7N 000000 CH7PDN 000000 CLKOFF 001006 INT CLOSB 002000 INT CLSIN 000002 INT CLSOUT 000001 INT CRDIS 000266' INT CTYCHN 000003 D 000017 INT DAT 000005 INT DCL 000001 INT DCW 020000 INT DDI 000007 INT DDO 000006 INT DDTMEM 000037 INT DDTSYM 000036 INT IOINI2 - IO INITIALIZATION PART 2 MACRO 10 05:51 24-APR-78 PAGE 12-1 IOINI2 MAC 24-APR-78 03:06 SYMBOL TABLE DEN 000004 INT DEVADR 000007 INT DEVBUF 000006 INT DEVCHR 000001 INT DEVCTR 000011 INT DEVDAT 000006 INT DEVIAD 000007 INT DEVIOS 000002 INT DEVLOG 000005 INT DEVLST 000000' INT DEVMOD 000004 INT DEVNAM 000000 INT DEVOAD 000010 INT DEVPTR 000010 INT DEVSER 000003 INT DGF 000012 INT DIN 000003 INT DLK 000005 INT DOU 000002 INT DR 000016 INT DRL 000000 INT DSI 000011 INT DSO 000010 INT DTA0 000104' DTA0DB 000071' INT DTA1 000117' DTA1DB 000104' INT DTA2 000132' DTA2DB 000117' INT DTA3 000145' DTA3DB 000132' INT DTCCHN 000004 DTCNUM 000004 DTDIR 000267' INT DTSIZ 000001 DTW 040000 INT DVAVAL 000040 INT DVCDR 100000 INT DVDIR 000004 INT DVDIRI 400000 INT DVIN 000002 INT DVLPT 040000 INT DVMTA 000020 INT DVOUT 000001 INT DVTTY 000010 INT ENTRB 020000 INT FIRDB 000001' FSNCHN 000303 INT I 000010 INT IB 000013 INT IBUFB 200000 INT INITB 400000 INT IOINI2 - IO INITIALIZATION PART 2 MACRO 10 05:51 24-APR-78 PAGE 12-2 IOINI2 MAC 24-APR-78 03:06 SYMBOL TABLE INPB 010000 INT IO 000020 INT IOACT 010000 INT IOBEG 000002 INT IOBKTL 040000 INT IOCON 000040 INT IODEND 020000 INT IODERR 200000 INT IODISC 400000 INT IODONE 400000 INT IODTER 100000 INT IOEND 000040 INT IOFST 000004 INT IOIMPM 400000 INT IONRCK 000100 INT IORDEL 000100 INT IORET 000020 INT IOS 000000 INT IOSTRT 000010 INT IOUSE 400000 INT IOW 000001 INT IOWC 000020 INT IOWS 400000 INT ITEM 000004 INT JBFADR 000000 INT JBFCTR 000002 INT JBFPTR 000001 INT JBUF 000005 INT JDAT 000011 INT JERR 002000 INT JIOW 100000 INT JNA 004000 INT LOOKB 040000 INT LPT 000223' LPTADR 000221' INT LPTBUF 000217' INT LPTCHB 000055 INT LPTCHN 000005 LPTCHR 000212' INT LPTCLB 000205 INT LPTDAT 000211' INT LPTDB 000211' INT LPTDSP 000214' EXT LPTIOS 000213' INT LPTMOD 000215' INT LPTPTR 000220' INT LPTSER 000214' INT LPTSV1 000222' INT MAXIMA 000000 INT MLTTYL 777777 777776 INT MTA0 000156' IOINI2 - IO INITIALIZATION PART 2 MACRO 10 05:51 24-APR-78 PAGE 12-3 IOINI2 MAC 24-APR-78 03:06 SYMBOL TABLE MTA0DB 000145' INT MTA1 000167' MTA1DB 000156' INT MTA2 000200' MTA2DB 000167' INT MTA3 000211' MTA3DB 000200' INT MTCCHN 000002 MTCNUM 000004 MTDISP 000203' EXT MTTYLN 777777 777776 INT MTW 010000 INT OBUFB 100000 INT OUTPB 004000 INT PDP 000003 INT PICHN 000100 INT PICLK 004202 INT PIOFF 000400 INT PION 000200 INT PROG 000007 INT PTP 000240' PTPADR 000233' INT PTPBUF 000231' INT PTPCHA 000236' INT PTPCHN 000005 PTPCHR 000224' INT PTPCNT 000235' INT PTPCTR 000234' INT PTPDAT 000223' INT PTPDB 000223' INT PTPDSP 000226' EXT PTPIOS 000225' INT PTPMOD 000227' INT PTPPTR 000232' INT PTPSER 000226' INT PTPSIO 000237' INT PTR 000254' PTRADR 000247' INT PTRBUF 000246' INT PTRCHN 000005 PTRCHR 000241' INT PTRCTR 000251' INT PTRDAT 000240' INT PTRDB 000240' INT PTRDSP 000243' EXT PTRIOS 000242' INT PTRMOD 000244' INT PTRPTR 000250' INT IOINI2 - IO INITIALIZATION PART 2 MACRO 10 05:51 24-APR-78 PAGE 12-4 IOINI2 MAC 24-APR-78 03:06 SYMBOL TABLE PTRSER 000243' INT PTRSV1 000253' INT PTRSVC 000252' INT RUN 200000 INT RUNABL 204000 INT SCNCHN 000003 SCNLIN 000001 STTYB1 000021 INT STTYBF 000020 INT TAC 000001 INT TAC1 000002 INT TCONLN 000001 INT TEM 000010 INT TSCNLN 000000 INT TTY0 000035' TTY0DB 000001' INT TTY1 000071' TTY1DB 000035' INT TTYATC 020000 INT TTYBFE 000033 INT TTYBM1 000013 INT TTYBUF 000014 INT TTYCTR 000012 INT TTYDSP 000040' EXT TTYLEN 000002 INT TTYLST 000001' INT TTYPTR 000011 INT TTYSAV 000013 INT TTYUSE 010000 INT UDIR 000012 INT UFREE 000011 INT USRMOD 010000 INT UTDSP 000135' EXT UUO 000014 INT JJJ OOOOOOOOO BBBBBBBBBBBB DDDDDDDDDDDD AAAAAAAAA TTTTTTTTTTTTTTT JJJ OOOOOOOOO BBBBBBBBBBBB DDDDDDDDDDDD AAAAAAAAA TTTTTTTTTTTTTTT JJJ OOOOOOOOO BBBBBBBBBBBB DDDDDDDDDDDD AAAAAAAAA TTTTTTTTTTTTTTT JJJ OOO OOO BBB BBB DDD DDD AAA AAA TTT JJJ OOO OOO BBB BBB DDD DDD AAA AAA TTT JJJ OOO OOO BBB BBB DDD DDD AAA AAA TTT JJJ OOO OOO BBB BBB DDD DDD AAA AAA TTT JJJ OOO OOO BBB BBB DDD DDD AAA AAA TTT JJJ OOO OOO BBB BBB DDD DDD AAA AAA TTT JJJ OOO OOO BBBBBBBBBBBB DDD DDD AAA AAA TTT JJJ OOO OOO BBBBBBBBBBBB DDD DDD AAA AAA TTT JJJ OOO OOO BBBBBBBBBBBB DDD DDD AAA AAA TTT JJJ JJJ OOO OOO BBB BBB DDD DDD AAAAAAAAAAAAAAA TTT JJJ JJJ OOO OOO BBB BBB DDD DDD AAAAAAAAAAAAAAA TTT JJJ JJJ OOO OOO BBB BBB DDD DDD AAAAAAAAAAAAAAA TTT JJJ JJJ OOO OOO BBB BBB DDD DDD AAA AAA TTT JJJ JJJ OOO OOO BBB BBB DDD DDD AAA AAA TTT JJJ JJJ OOO OOO BBB BBB DDD DDD AAA AAA TTT JJJJJJJJJ OOOOOOOOO BBBBBBBBBBBB DDDDDDDDDDDD AAA AAA TTT JJJJJJJJJ OOOOOOOOO BBBBBBBBBBBB DDDDDDDDDDDD AAA AAA TTT JJJJJJJJJ OOOOOOOOO BBBBBBBBBBBB DDDDDDDDDDDD AAA AAA TTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT Request created: 24-April-1978 05:53:58 File: DSKB0 :JOBDAT.LST [8,296] Created: 20-April-1967 05:51:00 Printed: 24-April-1978 05:53:35 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:1732 File will be deleted after printing JOBDAT - JOB DATA AREA ASSIGNMENTS MACRO 10 05:51 24-APR-78 PAGE 1 JOBDAT MAC 24-APR-78 01:24 TITLE JOBDAT - JOB DATA AREA ASSIGNMENTS DEFINE BLK (A,B) > BLK JOBAC,20 ;SYSTEM USE AC STORAGE BLK JOBDAC,20 ;USER'S AC STORAGE WHILE JOB IS INACTIV 000157 JOBDHI=JOBDAT+17 ;HIGHEST AC SAVED WHILE INACTIVE BLK JOBUUO,1 ;UUO SAVE AND TRAP LOCATIONS BLK JOB41,1 ;UUO JSR LOCATION BLK JOBPC,1 ;BITS 0-5=APR FLAGS, C(RH)=PC BLK JOBPDP,1 ;PUSH DOWN POINTER FOR SYSTEM USE 000043 JOBPRT=JOBPDP ;FIRST LOC PROTECTED FROM ITNERRUPT SER 000044 JOBPR1=JOBPRT+1 ;FIRST LOC+1 BLK JOBREL,1 ;C(LH)=0, C(RH)=RELOCATION ADDRESS BLK JOBUXT,1 ;EXIT FROM UUO AT BREAK BLK JOBLEV,1 ;C(40) WHEN INACTIVE BLK JOBSAV,1 ;TEMPOARY STORAGE FOR UOO HANDLER BLK JOBPOV,1 ;PUSH DOWN OVERFLOW TRAP BLK JOBTEM,1 ;(UNUSED)TEMPORARY SYSTEM STORAGE BLK JOBTM1,1 ;" BLK JOBINF,1 ;UNUSED BLK JOBJDA,20 ;JOB IO DEVICE CHANNEL ASSIGNMENTS BLK JOBDDT,1 ;ADDRESS OF USER'S DDT 000073 JOBPFI=JOBDDT-1 ;LAST LOC PROTECTED FROM IO SERVICE 000074 JOBPFU=JOBDDT ;LAST LOC PROTECTED FROM USER BLK JOBCDP,1 ;(UNUSED)POINTER TO COMMAND STRING BLK JOBTRP,20 ;(UNUSED)TRAP LOCATIONS BLK JOBSYM,1 ;SYMBOL TABLE POINTER BLK JOBUSY,1 ;(UNUSED)POINTER TO UNDEFINED SYMBOL TA BLK JOBSA,1 ;C(RH)=STARTING ADDRESS ;C(LH)=HIGHEST LOCATION USED BLK JOBFF,1 ;FIRST FREE LOCATION 000140 JOBDAT=140 ;LENGTH OF JOB DATA AREA 000137 JOBHGH=JOBDAT-1 ;HIGHEST LOC IN JOB DATA AREA 000121 JOBPDL=JOBPRO-1 ;FIRST LOC. -1 OF PD LIST 000122 JOBPD1=JOBPDL+1 ;FIRST LOC. IN PD LIST 777777 777762 MJOBPD=JOBPDL-JOBHGH ;- LENGTH OF PD LIST 000122 JOBS41=JOBPRO ;PLACE WHERE SAVE-GET SAVES USER LOC 4 000140 JOBDA=JOBDAT ENTRY JOBPFI,JOBPFU,JOBPDL,JOBPRO,MJOBPD,JOBHGH ENTRY JOBDHI,JOBPRT,JOBPR1,JOBDA,JOBS41,JOBPD1 END, NO ERRORS DETECTED JOBDAT - JOB DATA AREA ASSIGNMENTS MACRO 10 05:51 24-APR-78 PAGE 1-1 JOBDAT MAC 24-APR-78 01:24 PROGRAM BREAK IS 000000 8K CORE USED JOBDAT - JOB DATA AREA ASSIGNMENTS MACRO 10 05:51 24-APR-78 PAGE 2 JOBDAT MAC 24-APR-78 01:24 SYMBOL TABLE JOB41 000041 ENT JOBAC 000000 ENT JOBCDP 000075 ENT JOBDA 000140 ENT JOBDAC 000020 ENT JOBDAT 000140 JOBDDT 000074 ENT JOBDHI 000157 ENT JOBFF 000121 ENT JOBHGH 000137 ENT JOBINF 000053 ENT JOBJDA 000054 ENT JOBLEV 000046 ENT JOBPC 000042 ENT JOBPD1 000122 ENT JOBPDL 000121 ENT JOBPDP 000043 ENT JOBPFI 000073 ENT JOBPFU 000074 ENT JOBPOV 000050 ENT JOBPR1 000044 ENT JOBPRO 000122 ENT JOBPRT 000043 ENT JOBREL 000044 ENT JOBS41 000122 ENT JOBSA 000120 ENT JOBSAV 000047 ENT JOBSYM 000116 ENT JOBTEM 000051 ENT JOBTM1 000052 ENT JOBTRP 000076 ENT JOBUSY 000117 ENT JOBUUO 000040 ENT JOBUXT 000045 ENT MJOBPD 777777 777762 ENT LLL PPPPPPPPPPPP TTTTTTTTTTTTTTT SSSSSSSSSSSS EEEEEEEEEEEEEEE RRRRRRRRRRRR LLL PPPPPPPPPPPP TTTTTTTTTTTTTTT SSSSSSSSSSSS EEEEEEEEEEEEEEE RRRRRRRRRRRR LLL PPPPPPPPPPPP TTTTTTTTTTTTTTT SSSSSSSSSSSS EEEEEEEEEEEEEEE RRRRRRRRRRRR LLL PPP PPP TTT SSS EEE RRR RRR LLL PPP PPP TTT SSS EEE RRR RRR LLL PPP PPP TTT SSS EEE RRR RRR LLL PPP PPP TTT SSS EEE RRR RRR LLL PPP PPP TTT SSS EEE RRR RRR LLL PPP PPP TTT SSS EEE RRR RRR LLL PPPPPPPPPPPP TTT SSSSSSSSS EEEEEEEEEEEE RRRRRRRRRRRR LLL PPPPPPPPPPPP TTT SSSSSSSSS EEEEEEEEEEEE RRRRRRRRRRRR LLL PPPPPPPPPPPP TTT SSSSSSSSS EEEEEEEEEEEE RRRRRRRRRRRR LLL PPP TTT SSS EEE RRR RRR LLL PPP TTT SSS EEE RRR RRR LLL PPP TTT SSS EEE RRR RRR LLL PPP TTT SSS EEE RRR RRR LLL PPP TTT SSS EEE RRR RRR LLL PPP TTT SSS EEE RRR RRR LLLLLLLLLLLLLLL PPP TTT SSSSSSSSSSSS EEEEEEEEEEEEEEE RRR RRR LLLLLLLLLLLLLLL PPP TTT SSSSSSSSSSSS EEEEEEEEEEEEEEE RRR RRR LLLLLLLLLLLLLLL PPP TTT SSSSSSSSSSSS EEEEEEEEEEEEEEE RRR RRR LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT Request created: 24-April-1978 05:53:58 File: DSKB0 :LPTSER.LST [8,296] Created: 20-April-1967 05:51:00 Printed: 24-April-1978 05:53:35 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:1729 File will be deleted after printing LPTSER - LINE PRINTER SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 1 S MAC 24-APR-78 21:40 8-4-65 XLIST LIST TITLE LPTSER - LINE PRINTER SERVICE ROUTINE SUBTTL 8-4-65 INTERNAL LPTINT,LPTINI EXTERNAL LPTCHN, LPTCHL, LPTRET, OUT, WAIT1, LPTSAV, IOSET EXTERNAL ADVBFE, SETIOD,ILLINP,LPTCHB,LPTCLB ;DEVICE DATA BLOCK LINKAGE EXTERNAL LPTDAT,LPTCHR,LPTIOS,LPTSER,LPTMOD,LPTBUF,LPTPTR EXTERNAL LPTADR,LPTSV1 ENTRY LPTDSP LPTSER - LINE PRINTER SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 2 LPTSER MAC 24-APR-78 01:26 8-4-65 ,LPT PARAMETER ASSIGNMENTS , LPT CONTROL REGISTER 002000 LPTCLR=2000 ;CLEAR BUFFER 000100 LPTDON=100 ;DONE FLAG 000400 LPTERR=400 ;ERROR FLAG 001000 LPTLOV=1000 ;LINE OVERFLOW , SPECIAL IO STATUS WORD ASSIGNMENTS 100000 LPTADV=100000 REPEAT 0,< , LPT DATABLOCK LPTDAT: SIXBIT .LPT. LPTCHR: 32 LPTIOS: 0 LPTSER: EXP LPTDSP LPTMOD: XWD 0,3 0 LPTBUF: 0 LPTPTR: 0 LPTADR: XWD PROG,0 LPTSV1: 0 > , LPT SERVICE DISPATCH TABLE 000000' 254000 000004' LPTDSP: JRST LPTINI ;RELEASE 000001' 254000 000007' JRST LPTCLS ;CLOSE 000002' 254000 000013' JRST LPTOUT ;OUTPUT 000003' 254000 000000* JRST ILLINP ;INPUT 000004' 712600 002000 LPTINI: CONO LPT,LPTCLR ;LPT INITIALIZE 000005' 513000 000034' HLLZS LPTINT 000006' 263140 000000 POPJ PDP, LPTSER - LINE PRINTER SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 3 LPTSER MAC 24-APR-78 01:26 8-4-65 E 000007' 260140 000000* LPTCLS: PUSHJ PDP,OUT ;PRINT REMAINING BUFFERS 000010' 260140 000000* PUSHJ PDP, WAIT1 ;WAIT FOR IOACT=0 000011' 712540 000126' DATAO LPT,LPTTOP ;PRINT CARRAGE RETURN, FORM FEED 000012' 263140 000000 POPJ PDP, ;CLOSE RETURN 000013' 660000 010000 LPTOUT: TRO IOS,IOACT ;IOACT=1 000014' 621000 400000 TLZ IOS,IODISC ;IODISC:=0 000015' 661000 000020 TLO IOS,IO ;IO:=1 000016' 603000 000002 TLNE IOS,IOBEG ;VIRGIN DEVICE? IOBEG:=0 000017' 254000 000024' JRST LPTBEG ;YES 000020' 260140 000127' PUSHJ PDP,LPTSET 000021' 202000 000000* MOVEM IOS,LPTIOS ;C(LPTIOS):=C(IOS) 000022' 201040 000100 MOVEI TAC,LPTDON 000023' 254000 000030' JRST LPTBG1 000024' 661000 400000 LPTBEG: TLO IOS,IODISC 000025' 202000 000021* MOVEM IOS,LPTIOS ;C(LPTIOS):=C(IOS) 000026' 260140 000127' PUSHJ PDP,LPTSET 000027' 201040 002000 MOVEI TAC,LPTCLR 000030' 201100 001500 LPTBG1: MOVEI TAC1,LPTLOV+LPTERR+LPTDON 000031' 542100 000034' HRRM TAC1,LPTINT 000032' 712601 000000* CONO LPT, LPTCHB(TAC) ;CLEAR BUFFER AND ASSIGN PI C 000033' 263140 000000 POPJ PDP, ;RETURN LPTSER - LINE PRINTER SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 4 LPTSER MAC 24-APR-78 01:26 8-4-65 , LINE PRINTER INTERRUPT SERVICE 000034' 712740 001500 LPTINT: CONSO LPT,LPTLOV+LPTERR+LPTDON;LINE OVERFLOW, ERROR OR DONE 000035' 254000 000034' JRST LPTINT ;IF LPT IS IN FLAG LIST, GO TO ERROR, E 000036' 712700 000070 CONSZ LPT,70 000037' 712740 000100 CONSO LPT,LPTDON 000040' 254000 000102' JRST LPTERI ;YES 000041' 335000 000025* LPTIN1: SKIPGE LPTIOS ;IODISC=1? 000042' 254000 000053' JRST LPTDSC ;YES 000043' 712500 000000* BLKO LPT,LPTPTR ;PRINT 000044' 334000 000000 SKIPA ;BUFFER EMPTY 000045' 254520 000000* JEN @LPTCHL ;DISMISS INTERRUPT AND RETURN 000046' 202040 000000* MOVEM TAC,LPTSV1 ;SAVE TAC 000047' 515040 400000 HRLZI TAC,IODISC ;IODISC:=1 000050' 436040 000041* IORM TAC,LPTIOS 000051' 200040 000046* LPTERX: MOVE TAC,LPTSV1 ;RESTORE TAC 000052' 254520 000045* JEN @LPTCHL ;DISMISS INTERRUPT AND RETURN 000053' 264000 000000* LPTDSC: JSR LPTSAV ;SAVE ACCUMULATORS AND ESTABL 000054' 201300 000000* MOVEI DEVDAT,LPTDAT ;DEVDAT:=LPTDAT 000055' 260140 000000* PUSHJ PDP,IOSET ;PROG:=C(JBTADR18-35),ITEM:=C(DEVPTR) 000056' 200000 000050* MOVE IOS,LPTIOS 000057' 623000 000002 TLZE IOS,IOBEG 000060' 254000 000077' JRST LPTBG ;PUT OUT CR-LF 000061' 260140 000000* PUSHJ PDP,ADVBFE ;ADVANCE BUFFER 000062' 254000 000073' JRST LPTOFF ;NEXT BUFFER EMPTY 000063' 602000 000040 TRNE IOS,IOCON ;CONTINUOUS? (IOCON=0?) 000064' 254000 000073' JRST LPTOFF ;NO 000065' 621000 400000 TLZ IOS,IODISC 000066' 260140 000127' PUSHJ PDP,LPTSET ;SET LPTPTR 000067' 623000 000001 LPTINX: TLZE IOS,IOW ;IN A WAIT? IOW:=0 000070' 260140 000000* PUSHJ PDP,SETIOD ;YES. IOWS:=1 000071' 202000 000056* LPTXIT: MOVEM IOS,LPTIOS ;C(LPTIOS):=C(IOS) 000072' 254000 000000* JRST LPTRET ;RESTORE ACCUMULATORS AND DIS 000073' 620000 010000 LPTOFF: TRZ IOS,IOACT 000074' 712600 000000 CONO LPT,0 000075' 513000 000034' HLLZS LPTINT ;TURN LPT OFF 000076' 254000 000067' JRST LPTINX 000077' 712540 000126' LPTBG: DATAO LPT,LPTTOP ;SEND OUT CR-FF 000100' 621000 400000 TLZ IOS,IODISC ;WHEN IODISC=1 000101' 254000 000071' JRST LPTXIT LPTSER - LINE PRINTER SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 5 LPTSER MAC 24-APR-78 01:26 8-4-65 ;HERE ON EITHER OVERFLOW OR ERROR(OFFLINE) OR ERROR CHANNEL ;NOT ASSIGNED. 000102' 202040 000051* LPTERI: MOVEM TAC,LPTSV1 ;SAVE TAC 000103' 712740 001000 CONSO LPT,LPTLOV ;LINE OVERFLOW? 000104' 254000 000111' JRST LPTER1 ;NO 000105' 210040 000137' MOVN TAC,[EXP 100001] ;YES, DECREMENT POINTER 000106' 272040 000043* ADDM TAC,LPTPTR 000107' 712540 000140' DATAO LPT,[EXP 15B6+12B13] ;PRINT CARRIAGE RETURN, LINE 000110' 254000 000051' JRST LPTERX 000111' 712740 000070 LPTER1: CONSO LPT,70 ;ERROR INTERRUPT ASSIGNED? 000112' 254000 000117' JRST LPTER2 ;NO 000113' 712600 000000* CONO LPT,LPTCLB ;YES, DEASSIGN IT,SET BUSY,CLEAR REST 000114' 201040 000100 MOVEI TAC,LPTDON ;ENABLE FOR DONE FLAG ONLY 000115' 542040 000034' LPTERA: HRRM TAC,LPTINT 000116' 254000 000051' JRST LPTERX 000117' 712640 000001 LPTER2: CONI LPT,TAC 000120' 405040 000300 ANDI TAC,300 000121' 712601 000032* CONO LPT,LPTCHB(TAC) 000122' 201040 001500 MOVEI TAC,LPTDON+LPTERR+LPTLOV 000123' 542040 000034' HRRM TAC,LPTINT 000124' 200040 000102* MOVE TAC,LPTSV1 000125' 254000 000041' JRST LPTIN1 000126' 064300 000000 LPTTOP: EXP 15B6+14B13 ;CARRIAGE RETURN, FORM FEED LPTSER - LINE PRINTER SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 6 LPTSER MAC 24-APR-78 01:26 8-4-65 ,SET UP PRINTER COUNTER AND POINTER 000127' 201060 000000* LPTSET: MOVEI TAC,@LPTADR ;LPTPTR:=-(WORD COUNT+1), BUFFER ADDRES 000130' 210101 000001 MOVN TAC1,1(TAC) 000131' 504040 000002 HRL TAC,TAC1 000132' 343040 000134' AOJLE TAC,.+2 ;C(LPTPTR0-17)<0? 000133' 561040 000135' HRROI TAC,LPTNUL-1 000134' 202040 000106* MOVEM TAC,LPTPTR 000135' 263140 000000 POPJ PDP, ;RETURN 000136' 000000 000000 LPTNUL: 0 END, NO ERRORS DETECTED PROGRAM BREAK IS 000141 9K CORE USED LPTSER - LINE PRINTER SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 7 LPTSER MAC 24-APR-78 01:26 SYMBOL TABLE A 000000 INT AC1 000015 INT AC2 000016 INT AC3 000017 INT ADVBFE 000061' EXT AL 000001 INT ASSCON 400000 INT ASSPRG 200000 INT B 000014 INT BUFPNT 000012 INT BUFWRD 000013 INT CLOSB 002000 INT CLSIN 000002 INT CLSOUT 000001 INT D 000017 INT DAT 000005 INT DCL 000001 INT DCW 020000 INT DDI 000007 INT DDO 000006 INT DDTMEM 000037 INT DDTSYM 000036 INT DEN 000004 INT DEVADR 000007 INT DEVBUF 000006 INT DEVCHR 000001 INT DEVCTR 000011 INT DEVDAT 000006 INT DEVIAD 000007 INT DEVIOS 000002 INT DEVLOG 000005 INT DEVMOD 000004 INT DEVNAM 000000 INT DEVOAD 000010 INT DEVPTR 000010 INT DEVSER 000003 INT DGF 000012 INT DIN 000003 INT DLK 000005 INT DOU 000002 INT DR 000016 INT DRL 000000 INT DSI 000011 INT DSO 000010 INT DTW 040000 INT DVAVAL 000040 INT DVCDR 100000 INT DVDIR 000004 INT DVDIRI 400000 INT DVIN 000002 INT DVLPT 040000 INT DVMTA 000020 INT LPTSER - LINE PRINTER SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 7-1 LPTSER MAC 24-APR-78 01:26 SYMBOL TABLE DVOUT 000001 INT DVTTY 000010 INT ENTRB 020000 INT I 000010 INT IB 000013 INT IBUFB 200000 INT ILLINP 000003' EXT INITB 400000 INT INPB 010000 INT IO 000020 INT IOACT 010000 INT IOBEG 000002 INT IOBKTL 040000 INT IOCON 000040 INT IODEND 020000 INT IODERR 200000 INT IODISC 400000 INT IODONE 400000 INT IODTER 100000 INT IOEND 000040 INT IOFST 000004 INT IOIMPM 400000 INT IONRCK 000100 INT IORDEL 000100 INT IORET 000020 INT IOS 000000 INT IOSET 000055' EXT IOSTRT 000010 INT IOUSE 400000 INT IOW 000001 INT IOWC 000020 INT IOWS 400000 INT ITEM 000004 INT JBFADR 000000 INT JBFCTR 000002 INT JBFPTR 000001 INT JBUF 000005 INT JDAT 000011 INT JERR 002000 INT JIOW 100000 INT JNA 004000 INT LOOKB 040000 INT LPT 000124 SPD LPTADR 000127' EXT LPTADV 100000 LPTBEG 000024' LPTBG 000077' LPTBG1 000030' LPTBUF 000000 EXT LPTCHB 000121' EXT LPTCHL 000052' EXT LPTCHN 000000 EXT LPTCHR 000000 EXT LPTSER - LINE PRINTER SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 7-2 LPTSER MAC 24-APR-78 01:26 SYMBOL TABLE LPTCLB 000113' EXT LPTCLR 002000 LPTCLS 000007' LPTDAT 000054' EXT LPTDON 000100 LPTDSC 000053' LPTDSP 000000' ENT LPTER1 000111' LPTER2 000117' LPTERA 000115' LPTERI 000102' LPTERR 000400 LPTERX 000051' LPTIN1 000041' LPTINI 000004' INT LPTINT 000034' INT LPTINX 000067' LPTIOS 000071' EXT LPTLOV 001000 LPTMOD 000000 EXT LPTNUL 000136' LPTOFF 000073' LPTOUT 000013' LPTPTR 000134' EXT LPTRET 000072' EXT LPTSAV 000053' EXT LPTSER 000000 EXT LPTSET 000127' LPTSV1 000124' EXT LPTTOP 000126' LPTXIT 000071' MTW 010000 INT OBUFB 100000 INT OUT 000007' EXT OUTPB 004000 INT PDP 000003 INT PICHN 000100 INT PROG 000007 INT RUN 200000 INT RUNABL 204000 INT SETIOD 000070' EXT TAC 000001 INT TAC1 000002 INT TEM 000010 INT TTYATC 020000 INT TTYUSE 010000 INT USRMOD 010000 INT UUO 000014 INT WAIT1 000010' EXT MMM MMM TTTTTTTTTTTTTTT PPPPPPPPPPPP SSSSSSSSSSSS EEEEEEEEEEEEEEE RRRRRRRRRRRR MMM MMM TTTTTTTTTTTTTTT PPPPPPPPPPPP SSSSSSSSSSSS EEEEEEEEEEEEEEE RRRRRRRRRRRR MMM MMM TTTTTTTTTTTTTTT PPPPPPPPPPPP SSSSSSSSSSSS EEEEEEEEEEEEEEE RRRRRRRRRRRR MMMMMM MMMMMM TTT PPP PPP SSS EEE RRR RRR MMMMMM MMMMMM TTT PPP PPP SSS EEE RRR RRR MMMMMM MMMMMM TTT PPP PPP SSS EEE RRR RRR MMM MMM MMM TTT PPP PPP SSS EEE RRR RRR MMM MMM MMM TTT PPP PPP SSS EEE RRR RRR MMM MMM MMM TTT PPP PPP SSS EEE RRR RRR MMM MMM TTT PPPPPPPPPPPP SSSSSSSSS EEEEEEEEEEEE RRRRRRRRRRRR MMM MMM TTT PPPPPPPPPPPP SSSSSSSSS EEEEEEEEEEEE RRRRRRRRRRRR MMM MMM TTT PPPPPPPPPPPP SSSSSSSSS EEEEEEEEEEEE RRRRRRRRRRRR MMM MMM TTT PPP SSS EEE RRR RRR MMM MMM TTT PPP SSS EEE RRR RRR MMM MMM TTT PPP SSS EEE RRR RRR MMM MMM TTT PPP SSS EEE RRR RRR MMM MMM TTT PPP SSS EEE RRR RRR MMM MMM TTT PPP SSS EEE RRR RRR MMM MMM TTT PPP SSSSSSSSSSSS EEEEEEEEEEEEEEE RRR RRR MMM MMM TTT PPP SSSSSSSSSSSS EEEEEEEEEEEEEEE RRR RRR MMM MMM TTT PPP SSSSSSSSSSSS EEEEEEEEEEEEEEE RRR RRR LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT Request created: 24-April-1978 05:53:58 File: DSKB0 :MTPSER.LST [8,296] Created: 20-April-1967 05:51:00 Printed: 24-April-1978 05:53:35 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:1720 File will be deleted after printing MTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES MACRO 10 05:51 24-APR-78 PAGE 1 S MAC 24-APR-78 21:40 L. HANTMAN 8-9-65 XLIST LIST TITLE MTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES SUBTTL L. HANTMAN 8-9-65 000004 T=ITEM ; MAG TAPE SERVICE SUBROUTINES 000000' 260140 000000* MTAPE1: PUSHJ PDP,WAIT1 000001' 551000 776000 HRRZI IOS,776000 000002' 413006 000002 ANDCAB IOS,DEVIOS(DEVDAT) 000003' 201214 000000 MOVEI T,(UUO) 000004' 260140 000007' PUSHJ PDP,MTAPE+1 000005' 254000 000000* JRST UXIT 000006' 260140 000000* MTAPE: PUSHJ PDP,WAIT1 000007' 621000 010000 TLZ IOS,IODT 000010' 660000 010000 TRO IOS, IOACT ;SET ACTIVE 000011' 260140 000063' PUSHJ PDP,MTCHK2 ;CHECK IF MAG TAPE CONTROL AV 000012' 242200 000010 LSH T,^D8 ;MOVE TO FUNCTION 000013' 405200 007400 ANDI T,7400 ;MODE BITS 000014' 306200 004000 CAIN T,4000 ;LOGICAL EOT? 000015' 254000 000435' JRST MTLEOT 000016' 302200 000400 CAIE T,400 ;RWD? 000017' 254000 000022' JRST .+3 000020' 722700 004000 CONSZ 224,4000 ;AT LOAD POINT? 000021' 254000 000517' JRST MTDMP4 000022' 201040 000001 MOVEI TAC, TCF ;LOOK FOR TAPE CONTROL FREE 0 000023' 542040 000044' MTGO1: HRRM TAC, MTCONO 000024' 542040 000211' HRRM TAC, MTCINT 000025' 135040 000000* MTGO1A: LDB TAC,PUNIT ;UNIT 000026' 137040 000536' DPB TAC,[POINT 3,T,31] ;UNIT 000027' 135040 000537' LDB TAC, [POINT 3, IOS,28] ;DENSITY PARITY 000030' 431040 000005 XORI TAC, 5 ;ODD, 556 000031' 137040 000540' DPB TAC,[POINT 3,T,23] 000032' 201044 000000* MOVEI TAC,MTCCHN(T) ;CHANNEL 000033' 722600 000000 MTGO: CONO 224, 0 ;DISABLE ALL INTERRUPTS 000034' 660040 000200 TRO TAC, 200 ;INHIBIT RETURN TO POOL 000035' 722201 000000 CONO 220,(TAC) ;COMMAND 000036' 402000 000533' SETZM MTEOFF# ;CLEAR EOF FLAG 000037' 542300 000532' HRRM DEVDAT,MTDEV# ;COMMAND, DVDB 000040' 506040 000532' HRLM TAC,MTDEV 000041' 603000 010000 TLNE IOS,IODT 000042' 700600 002100 CONO PI,2000+DCB 000043' 201040 000225' MOVEI TAC,MTPDUN HRRM TAC, MTIDSP 000044' 722600 000005 MTCONO: CONO 224,TCF+ERF ;ENABLE FLAGS 000045' 263140 000000 POPJ PDP, ;READ 000046' 621000 000020 MTIN: TLZ IOS, IO ;READING 000047' 260140 000056' PUSHJ PDP,MTCHEK ;IS SYSTEM AVAILABLE? 000050' 460066 000007 SETCM TAC,@DEVIAD(DEVDAT) ;-SIZE-1 000051' 541066 000007 MTIN1: HRRI TAC,@DEVIAD(DEVDAT) ;BUFFER ADDRESS, PROG INCLUDE 000052' 270040 000541' ADD TAC,[XWD 2,1] ;-SIZE+1,BUFFER+1 000053' 201200 002400 MOVEI T,2400 ;READ 000054' 200100 000542' MTIN2: MOVE TAC1,[BLKI DC,4000+DCN+MTDC*10] 000055' 254000 000132' JRST MTINDC MTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES MACRO 10 05:51 24-APR-78 PAGE 2 MTPSER MAC 24-APR-78 01:34 L. HANTMAN 8-9-65 ;IS SYSTEM AVAILABLE 000056' 660000 010000 MTCHEK: TRO IOS, IOACT ;SET ACTIVE 000057' 661000 010000 TLO IOS, IODT ;SET FOR DATA TRANSFER 000060' 202006 000002 MOVEM IOS, DEVIOS(DEVDAT) 000061' 352000 000000* MTCHK1: AOSE DCREQ 000062' 260140 000000* PUSHJ PDP,DCWAIT 000063' 621000 004002 MTCHK2: TLZ IOS, IOSEOF+IOBEG ;CLEAR SPACE TO EOF 000064' 202006 000002 MOVEM IOS, DEVIOS(DEVDAT) ;STORE BITS 000065' 352000 000000* AOSE MTREQ 000066' 260140 000000* PUSHJ PDP,MTWAIT 000067' 256000 000025' XCT MTGO1A ;UNIT 000070' 241040 000004 ROT TAC, 4 ;PUT IN UNIT POSITION 000071' 722201 000200 CONO 220, 200(TAC) ;HAS UNIT ONLY 000072' 722600 000002 CONO 224, SEL ;JAM UNIT INTO COMMAND BUFFER 000073' 722700 000002 CONSZ 224, SEL ;UNIT NOT READY? 000074' 263140 000000 POPJ PDP, 0 ;EXIT 000075' 241040 777774 ROT TAC, -4 ;UNIT IN TAC 000076' 542301 000425' HRRM DEVDAT, MTSTAK(TAC) ;PUT IN STACK 000077' 200100 000543' MOVE TAC1, [XWD MTCLOK,^D32] ;HALF SECOND 000100' 137040 000544' DPB TAC, [POINT 3,TAC1,23] ;STORE UNIT NUMBER 000101' 506101 000425' HRLM TAC1, MTSTAK(TAC) ;SAVE ACTUAL CLOCK REQUEST 000102' 700600 000400 CONO PI, 400 ;TURN OFF PI 000103' 136100 000000* IDPB TAC1, CLOCK ;REQUEST CLOCK RETURN TO MTCL 000104' 700600 000200 CONO PI, 200 ;TURN PI ON 000105' 371000 000065* SOSL MTREQ ;DECREMENT REQUEST COUNT, ANYONE LEFT W 000106' 476000 000000* SETOM MTAVAL ;YES,SET MAG TAPE AVAL 000107' 607000 010000 TLNN IOS, IODT ;NON-DATA TRANSFER? 000110' 254000 000113' JRST MTCHK3 ;YES 000111' 371000 000061* SOSL DCREQ ;NO,DECREMENT REQUEST COUNT,ANYONE LEFT 000112' 476000 000000* SETOM DCAVAL ;YES,SET DATA CONTROL AVAILAB 000113' 260140 000000* MTCHK3: PUSHJ PDP, WSYNC ;REQUEST WAIT 000114' 200006 000002 MOVE IOS, DEVIOS(DEVDAT) ;LOAD STATUS 000115' 607000 010000 TLNN IOS, IODT ;DATA TRANFER? 000116' 254000 000065' JRST MTCHK2+2 ;CHECK FOR MT AVAILABLE ONLY 000117' 254000 000061' JRST MTCHK1 ;CHECK FOR MT AND DC AVAIALABL MTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES MACRO 10 05:51 24-APR-78 PAGE 3 MTPSER MAC 24-APR-78 01:34 L. HANTMAN 8-9-65 ;WRITE 000120' 661000 000020 MTOUT: TLO IOS, IO ;WRITING 000121' 260140 000056' PUSHJ PDP,MTCHEK 000122' 722700 000200 CONSZ 224,200 ;IS FILE PROTECT RING IN? 000123' 254000 000145' JRST MTOUTE ;NO, ERROR CANT WRITE. CROCK!! 000124' 201066 000010 MTOUT1: MOVEI TAC,@DEVOAD(DEVDAT) ;BUFFER ADDRESS, PROG INCLUDE 000125' 210101 000001 MOVN TAC1,1(TAC) ;-WD COUNT 000126' 504040 000002 HRL TAC,TAC1 ;-WD CMT,BUFFER 000127' 347040 000273' AOJG TAC,MTNOTI ;BUFFER+1, TEST FOR ZERO WORD COUNT 000130' 200040 000545' MTOUT2: MOVE TAC,[BLKO DC,3400+DCN+MTDC*10] 000131' 201200 001000 MOVEI T,1000 ;WRITE 000132' 202040 000531' MTINDC: MOVEM TAC,MTDCCN# ;BLKO POINTER 000133' 202040 000526' MOVEM TAC,DCWRD# 000134' 552100 000527' HRRZM TAC1, MDCSAV# ;SAVE DC COMMAND 000135' 541100 000526' HRRI TAC1,DCWRD 000136' 202100 000042 MOVEM TAC1,40+<2*DCN> ;BLK COMMAND 000137' 200100 000546' MOVE TAC1,[JSR MTDCND] 000140' 202100 000043 MOVEM TAC1,41+<2*DCN> 000141' 700600 001100 CONO PI,1100 000142' 720220 000527' CONO DC, @MDCSAV ;DATA CONTROL COMMAND 000143' 201040 000004 MOVEI TAC, ERF 000144' 254000 000023' JRST MTGO1 000145' 660000 200000 MTOUTE: TRO IOS,IODERR ;WRITE LOCK, DEVICE ERROR 000146' 260140 000246' PUSHJ PDP,MTEND1 000147' 254000 000005* JRST UXIT 000150' 135040 000000* MTCLS: LDB TAC,PIOMOD ;MODE 000151' 307040 000016 CAIG TAC, 16 ;DUMP MODE 000152' 254000 000157' JRST MTCLS1 ;CLOSE OUTPUT 000153' 603000 000020 TLNE IOS,IO ;INPUT? 000154' 254000 000160' JRST MTCLS1+1 ;WRITE EOFS 000155' 201200 000016 MOVEI T,16 ;SPACE TO EOF 000156' 254000 000006' JRST MTAPE ;GOES BACK TO UUO LEVEL 000157' 260140 000000* MTCLS1: PUSHJ PDP,OUT 000160' 201200 000003 MOVEI T,3 ;WRITE IOF 000161' 260140 000006' PUSHJ PDP, MTAPE 000162' 201200 000003 MOVEI T,3 ;WRITE EOF 000163' 260140 000006' PUSHJ PDP, MTAPE 000164' 201200 000007 MOVEI T,7 ;BSP 000165' 254000 000006' JRST MTAPE 000166' 263140 000000 MTDISP: POPJ PDP, ;RELEASE 000167' 254000 000150' JRST MTCLS ;CLOSE 000170' 254000 000120' JRST MTOUT ;WRITE 000171' 254000 000046' JRST MTIN ;READ 000172' 254000 000000* JRST CUXIT1 ;ENTER IN DIRECTORY 000173' 254000 000172* JRST CUXIT1 ;LOOKUP IN DIRECTORY 000174' 254000 000454' JRST MTDMPO ;DUMP OUT 000175' 254000 000504' JRST MTDMPI ;DUMP IN 000176' 254000 000147* JRST UXIT ;SETO 000177' 254000 000176* JRST UXIT ;SETI 000200' 254000 000177* JRST UXIT ;GETF MTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES MACRO 10 05:51 24-APR-78 PAGE 3-1 MTPSER MAC 24-APR-78 01:34 L. HANTMAN 8-9-65 000201' 210040 000453' MTCINI: MOVN TAC, MTREDO ;REPEAT COUNTER 000202' 572040 000534' HRREM TAC, MTERCN ;RESET ERROR CNTR 000203' 722600 000000 CONO 224,0 ;CLEAR ENABLES 000204' 513000 000211' HLLZS MTCINT ;CLEAR CONSO 000205' 263140 000000 POPJ PDP, MTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES MACRO 10 05:51 24-APR-78 PAGE 4 MTPSER MAC 24-APR-78 01:34 L. HANTMAN 8-9-65 ;BLK COUNTED OUT 000206' 000000 000000 MTDCND: 0 000207' 700600 001100 CONO PI,DCB+1000 ;SHUT OF DC CHANNEL 000210' 254520 000206' JEN @MTDCND MTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES MACRO 10 05:51 24-APR-78 PAGE 5 MTPSER MAC 24-APR-78 01:34 L. HANTMAN 8-9-65 ;FLAG FROM TAPE CONTROL. SET UP BY INSERT MACRO 000211' 722740 000005 MTCINT: CONSO 224,TCF+ERF 000212' 254000 000212' JRST . 000213' 264000 000000* JSR MTCSAV ;SAVE ACS 000214' 550300 000532' HRRZ DEVDAT,MTDEV ;DVBD 000215' 135340 000000* LDB PROG,PJOBN; JOB NUMBER 000216' 550347 000000* HRRZ PROG, JBTADR(PROG) 000217' 200006 000002 MOVE IOS, DEVIOS(DEVDAT) 000220' 722740 000001 CONSO 224,TCF ;TAPE CONTROL FREE 000221' 254000 000323' JRST MTEOR 000222' 254000 000225' MTIDSP: JRST MTPDUN ;POINTS TO MTERR FOR ERROR 000223' 254000 000355' JRST MTBSP ;AFTER BACKSPACE 000224' 254000 000335' JRST MTERR ;IF ERROR FOUND 000225' 607000 010000 MTPDUN: TLNN IOS,IODT 000226' 254000 000312' JRST MTNIO2 000227' 135040 000150* LDB TAC,PIOMOD 000230' 301040 000016 CAIL TAC,16 000231' 254000 000246' JRST MTEND1 ;DUMP 000232' 603000 000020 TLNE IOS,IO 000233' 254000 000273' JRST MTNOTI ;WRITING 000234' 332000 000533' SKIPE MTEOFF ;NOT EOF? JRST MTEOF 000235' 201066 000007 MTINDN: MOVEI TAC,@DEVIAD(DEVDAT) ;BUFFER ADDRESS 000236' 210100 000531' MOVN TAC1,MTDCCN ;WD CNT-1 000237' 253100 000240' AOBJN TAC1, .+1 ;WD CNT 000240' 513000 000002 HLLZS TAC1 ;CLR RT HALF 000241' 270100 000526' ADD TAC1,DCWRD ;ADD CURRENT COUNT=NO. OF WDS 000242' 546101 000001 HLRM TAC1,1(TAC) ;STORE AT WORD COUNT 000243' 260140 000000* PUSHJ PDP,ADVBFF 000244' 254000 000246' JRST .+2 ;NEXT BUFFER FULL 000245' 254000 000275' JRST MTCON ;CONTINUE MODE 000246' 720200 000000 MTEND1: CONO DC, 0 ;TURN OFF DATA CONTROL 000247' 371000 000111* SOSL DCREQ ;DECREMENT REQUEST COUNT, ANYONE LEFT? 000250' 476000 000112* SETOM DCAVAL ;YES, SET FLAG FOR CLOCK 000251' 371000 000105* MTNIO: SOSL MTREQ 000252' 476000 000106* SETOM MTAVAL ;YES, SET FLAG FOR CLOCK 000253' 722700 010000 CONSZ 224,10000 ;END OF TAPE? 000254' 660000 002000 TRO IOS, IOTEND ;SET END OF TAPE INDICATION 000255' 620000 004000 TRZ IOS, IOBOT ;CLR LOAD POINT INDICATION 000256' 722700 004000 CONSZ 224, 4000 ;LOAD POINT? 000257' 660000 004000 TRO IOS, IOBOT ;SET LOAD POINT INDICATION 000260' 722700 020000 CONSZ 224, 20000 ;TAPE REWINDING? 000261' 660000 004000 TRO IOS, IOBOT ;SET LOAD POINT INDICATION 000262' 623000 000001 TLZE IOS, IOW ;CLEAR WAIT 000263' 260140 000000* PUSHJ PDP, SETIOD ;REQUEST WAIT SATISFIED 000264' 620000 010000 TRZ IOS, IOACT ;CLEAR ACTIVE 000265' 202006 000002 MOVEM IOS, DEVIOS(DEVDAT) ;RESTORE BITS 000266' 722600 000000 CONO 224,0 ;CLEAR MAG TAPE ENABLES 000267' 513000 000211' HLLZS MTCINT ;CLEAR CONSO 000270' 210040 000453' MOVN TAC, MTREDO ;REPEAT COUNTER 000271' 572040 000534' HRREM TAC, MTERCN# 000272' 263140 000000 POPJ PDP, ;DISMISS INTERRUPT OR RETURN TO CALLER MTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES MACRO 10 05:51 24-APR-78 PAGE 6 MTPSER MAC 24-APR-78 01:34 L. HANTMAN 8-9-65 000273' 260140 000000* MTNOTI: PUSHJ PDP,ADVBFE ;WRITING 000274' 254000 000246' JRST MTEND1 000275' 602000 000040 MTCON: TRNE IOS,IOCON ;CONTINUOUS? 000276' 254000 000246' JRST MTEND1 ;STOP TAPE 000277' 722700 010000 CONSZ 224,10000 ;END OF TAPE? 000300' 254000 000246' JRST MTEND1 ;STOP TAPE 000301' 720200 000000 CONO DC,0 ;CLEAR DATA CONTROL 000302' 623000 000001 TLZE IOS,IOW 000303' 260140 000263* PUSHJ PDP,SETIOD 000304' 202006 000002 MOVEM IOS,DEVIOS(DEVDAT) 000305' 210040 000453' MOVN TAC,MTREDO 000306' 572040 000534' HRREM TAC,MTERCN 000307' 607000 000020 TLNN IOS,IO ;INPUT OR OUTPUT? 000310' 254000 000051' JRST MTIN1 ;CALL INPUT SUBROUTINE 000311' 254000 000124' JRST MTOUT1 ;CALL OUTPUT SUBROUTINE 000312' 554040 000532' MTNIO2: HLRZ TAC,MTDEV ;COMMAND 000313' 405040 007400 ANDI TAC,7400 000314' 302040 003000 CAIE TAC, 3000 ;SPACE ONE RECORD 000315' 254000 000251' JRST MTNIO ;EXIT 000316' 722700 000400 CONSZ 224, 400 ;EOF? 000317' 661000 004000 TLO IOS, IOSEOF ;SET EOF DETECTED 000320' 254000 000251' JRST MTNIO ;EXIT 000321' 661000 000040 MTEOF: TLO IOS, IOEND 000322' 254000 000246' JRST MTEND1 000323' 722700 000030 MTEOR: CONSZ 224,LPE+CPE ;IF END OF RECORD CHECK PARIT 000324' 370000 000222' SOS MTIDSP ;IF ERROR CAUSE INTERRUPT TO ;ERROR ROUTIE VIA TCF 000325' 722700 000400 CONSZ 224, 400 ;EOF? 000326' 476000 000533' SETOM MTEOFF ;SET EOF FLAG 000327' 722600 000001 MTIGN: CONO 224, TCF ;IF ERF, CAUSE INTERRUPT TO D ;PATCH TABLE, DISABLE ERF FLA 000330' 202040 000206' MOVEM TAC, MTDCND ;SAVE TAC 000331' 201040 000001 MOVEI TAC, TCF ;LOOK FOR TCF ONLY 000332' 542040 000211' HRRM TAC, MTCINT ;SET CONSO 000333' 200040 000206' MOVE TAC,MTDCND ;RESTORE TAC 000334' 254000 000000* JRST MTCRET ;DISMISS AND RETURN VIA TCF MTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES MACRO 10 05:51 24-APR-78 PAGE 7 MTPSER MAC 24-APR-78 01:34 L. HANTMAN 8-9-65 000335' 554040 000532' MTERR: HLRZ TAC,MTDEV ;COMMAND 000336' 405040 007400 ANDI TAC,7400 000337' 306040 002400 CAIN TAC,2400 ;READ? 000340' 254000 000343' JRST .+3 000341' 306040 001000 CAIN TAC,1000 ;WRITE 000342' 254000 000401' JRST MTIGN2 ;IGNORE IF NOT RD OR WRITE 000343' 606000 000100 TRNN IOS, IONRCK ;RE-DO? 000344' 351000 000534' AOSL MTERCN ;THIRD ERROR? 000345' 254000 000353' JRST MTERR2 ;TRIPLE ERROR 000346' 554040 000532' HLRZ TAC,MTDEV ;COMMAND 000347' 405040 770377 ANDI TAC,770377 000350' 722201 003400 CONO 220,3400(TAC) ;BSP 000351' 370000 000222' SOS MTIDSP 000352' 254000 000327' JRST MTIGN 000353' 660000 200000 MTERR2: TRO IOS, IODERR ;DEVICE ERROR 000354' 254000 000225' JRST MTPDUN 000355' 200040 000531' MTBSP: MOVE TAC,MTDCCN ;POINTER 000356' 202040 000526' MOVEM TAC,DCWRD ;RESET POINTER WORD 000357' 720240 000001 CONI DC,TAC ;SAVE IN/OUT, PACK MD. DEV NU ;PRIORITY 000360' 405040 000777 ANDI TAC,777 000361' 271040 003000 ADDI TAC,3000 ;MAKE WRITE 000362' 606040 000400 TRNN TAC,400 ;WAS IT WRITING? 000363' 271040 001000 ADDI TAC,1000 ;MAKE READ 000364' 720201 000000 CONO DC,(TAC) ;REISSUE CONO 000365' 554040 000532' HLRZ TAC,MTDEV ;COMMAND 000366' 722740 040000 CONSO 224,XNC ;WAIT FOR XNC 000367' 254000 000366' JRST .-1 ;SHOULD ADD A COUNT(RUNAWAY TAPE TURNED 000370' 722201 000000 CONO 220,(TAC) ;REISSUE RD OR WRITE 000371' 402000 000533' SETZM MTEOFF ;CLR EOF FLAG 000372' 700600 002100 CONO PI,2000+DCB ;TURN ON CHANNEL 000373' 201040 000225' MOVEI TAC,MTPDUN ;RESET SWITCH 000374' 542040 000222' HRRM TAC,MTIDSP 000375' 201040 000004 MOVEI TAC, ERF 000376' 542040 000211' HRRM TAC, MTCINT 000377' 722600 000004 CONO 224, ERF 000400' 254000 000334* JRST MTCRET ;ENABLE PROPER FLAGS 000401' 350000 000222' MTIGN2: AOS MTIDSP ;RESET DISPATCH SWITCH 000402' 254000 000327' JRST MTIGN ;NEED TO TRY WRITING LONG RECORD GAP ON OUTPUT(ONLY) AND TRY ;ONCE MORE AT NEW SPOT ON TAPE IF TRIPLE ERROR MTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES MACRO 10 05:51 24-APR-78 PAGE 8 MTPSER MAC 24-APR-78 01:34 L. HANTMAN 8-9-65 040000 XNC=40000 ;TRANSFER NEW COMMAND 000002 MTDC=2 ;MAG TAPE DATA CONTROL DEVICE NO. 000001 TCF=1 ;TAPE CONTROL FREE 000004 ERF=4 ;END OF RECORD FLAG 000020 LPE=20 ;LONG. PARITY ERROR 000010 CPE=10 ;CHAR. PARITY ERROR 000100 DCB=100 ;DATA CHANNEL NUMBER 000001 DCN=1 ;DATA CHANNEL NUMBER 000002 SEL=2 ;UNIT TO COMMAND BUFFER 004000 IOSEOF=4000 ;SPACING ONE RECORD FORWARD FOUND EOF 002000 IOTEND=2000 ;EOT INDICATION 000100 IONRCK=100 ;DO NOT RE-TRY ON ERRORS 004000 IOBOT=4000 ;TAPE AT LOAD POINT 010000 IODT=10000 ;A 1 FOR A DATA TRANFER TYPE COMMAND EXTERNAL UXIT, ADVBFF, ADVBFE, DCREQ, DCWAIT, MTCSAV EXTERNAL MTCRET, DCAVAL, MTAVAL, MTCCHN, MTCCHL, MTREQ EXTERNAL MTWAIT,OUT,SETIOD,CLOCK,CUXIT1 EXTERNAL WSYNC,USRREL,WAIT1,ADRERR,PUNIT,PIOMOD,PJOBN EXTERNAL JBTADR ENTRY MTDISP INTERNAL MTCINT,MTAPE1,MTCINI ;CLOCK INTERRUPT, UNIT IN TAC 000403' 550301 000425' MTCLOK: HRRZ DEVDAT, MTSTAK(TAC) ;DVDB 000404' 241040 000004 ROT TAC, 4 ;PUT UNIT IN SEL BITS 000405' 722201 000200 CONO 220, 200(TAC) ;UNIT ONLY 000406' 722600 000002 CONO 224, SEL ;SEL UNIT 000407' 722700 000002 CONSZ 224, SEL ;UNIT NOT READY? 000410' 254000 000420' JRST MTCLK2 ;UNIT READY 000411' 241040 777774 ROT TAC, -4 ;FOR INDEXING PURPOSES 000412' 544101 000425' HLR TAC1, MTSTAK(TAC) ;CLOCK REQUEST 000413' 505100 000403' HRLI TAC1, MTCLOK ;GET CLOCK REQUEST 000414' 700600 000400 CONO PI, 400 ;TURN OFF PI 000415' 136100 000103* IDPB TAC1, CLOCK ;STORE CLOCK REQUESTED 000416' 700600 000200 CONO PI, 200 ;TURN ON PI 000417' 263140 000000 POPJ PDP, 0 ;EXIT 000420' 200006 000002 MTCLK2: MOVE IOS, DEVIOS(DEVDAT) 000421' 623000 000001 TLZE IOS,IOW 000422' 260140 000303* PUSHJ PDP, SETIOD 000423' 202006 000002 MOVEM IOS, DEVIOS(DEVDAT) 000424' 263140 000000 POPJ PDP, 0 000425' MTSTAK: BLOCK ^D8 MTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES MACRO 10 05:51 24-APR-78 PAGE 9 MTPSER MAC 24-APR-78 01:34 L. HANTMAN 8-9-65 ;LOGICAL END OF TAPE LOOP 000435' 722700 004000 MTLEOT: CONSZ 224, 4000 ;TAPE NOT AT LOAD POINT? 000436' 254000 000441' JRST MTEOT2 ;AVOID BACKSPACE IFAT LOAD P 000437' 201200 003400 MOVEI T,3400 ;BACKSPACE 000440' 260140 000022' PUSHJ PDP, MTGO1-1 000441' 201200 000016 MTEOT2: MOVEI T,16 ;SPACE ONE FILE 000442' 260140 000006' PUSHJ PDP, MTAPE 000443' 201200 000006 MOVEI T,6 ;SPACE ONE RECORD 000444' 260140 000006' PUSHJ PDP, MTAPE 000445' 260140 000006* PUSHJ PDP, WAIT1 ;WAIT UNTIL SPACING IS COMPLE 000446' 200006 000002 MOVE IOS, DEVIOS(DEVDAT) 000447' 607000 004000 TLNN IOS, IOSEOF ;WAS EOF DETECTED? 000450' 254000 000441' JRST MTEOT2 ;RESUME SPACING 000451' 201200 000007 MOVEI T,7 ;BACKSPACE, LOGICAL EOF FOUND 000452' 254000 000006' JRST MTAPE ;RETURN BACK TO MAIN PROGRAM 000453' 000000 000012 MTREDO: 12 ;NUMBER OF TIMES TO RE-EXECUTE MTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES MACRO 10 05:51 24-APR-78 PAGE 10 MTPSER MAC 24-APR-78 01:34 L. HANTMAN 8-9-65 ;DEVICE DEPENDENT DUMP MODES. MODE 16. ;OUTPUT 000454' 661000 000020 MTDMPO: TLO IOS, IO ;WRITING 000455' 550200 000014 HRRZ T,UUO 000456' 260140 000056' PUSHJ PDP, MTCHEK ;IS SYSTEM AVAILABLE? 000457' 200120 000130' MOVE TAC1, @MTOUT2 ;BLK0 AND DATA CONTROL COMMAN 000460' 200040 000004 MOVE TAC,T ;COMMAND LIST POINTER 000461' 201200 001000 MOVEI T,1000 ;WRITING COMMAND 000462' 505040 000007 MTDMP1: HRLI TAC, PROG ;ACTUAL ADDRESS OF COMMAND LI 000463' 202040 000530' MOVEM TAC, MTCMDP# ;COMMAND POINTER 000464' 336060 000001 SKIPN TAC,@TAC ;COMMAND WORD 000465' 254000 000515' JRST MTDMP3 ;NOTHING TO DO 000466' 325040 000462' JUMPGE TAC, MTDMP1 ;CHANGE COMMAND SEQUENCE 000467' 576040 000535' HLREM TAC, SVCNTR# ;SAVE COUNTER 000470' 553000 000001 HRRZS TAC ;GET ADDRESS ALONE 000471' 274040 000535' SUB TAC, SVCNTR ;GET LAST ADDRESS 000472' 313040 000000* CAMLE TAC, USRREL ;LESS THAN END? 000473' 254000 000513' JRST MTDMP2 ;OUT OF BOUNDS 000474' 200060 000530' MOVE TAC, @MTCMDP ;PICK UP POINTER AGAIN 000475' 270040 000007 ADD TAC, PROG ;GET ACTUAL ADDRESS 000476' 260140 000132' PUSHJ PDP, MTINDC ;MOVE TAPE 000477' 260140 000445* PUSHJ PDP,WAIT1 000500' 350200 000530' AOS T,MTCMDP ;UPDATE COMMAND POINTER 000501' 607000 000020 TLNN IOS, IO ;WRITING? 000502' 254000 000506' JRST MTDMPI+2 ;READING 000503' 254000 000456' JRST MTDMPO+2 ;WRITING ;INPUT 000504' 621000 000020 MTDMPI: TLZ IOS, IO ;READING 000505' 550200 000014 HRRZ T,UUO 000506' 260140 000056' PUSHJ PDP, MTCHEK ;IS SYSTEM AVAILABLE 000507' 200120 000054' MOVE TAC1,@MTIN2 ;BLKI AND DATA CONTROL COMMAN 000510' 200040 000004 MOVE TAC,T ;COMMAND LIST POINTER 000511' 201200 002400 MOVEI T,2400 ;READ COMMAND 000512' 254000 000462' JRST MTDMP1 ;DUMP ;ADDRESS ERROR 000513' 260140 000515' MTDMP2: PUSHJ PDP,MTDMP3 000514' 254000 000000* JRST ADRERR ;CLEAR ALL USE BITS. NOTHING IN COMMAND LIST 000515' 371000 000247* MTDMP3: SOSL DCREQ 000516' 476000 000250* SETOM DCAVAL 000517' 371000 000251* MTDMP4: SOSL MTREQ 000520' 476000 000252* SETOM MTAVAL 000521' 620000 010000 TRZ IOS,IOACT 000522' 623000 000001 TLZE IOS,IOW 000523' 260140 000422* PUSHJ PDP,SETIOD 000524' 202006 000002 MOVEM IOS,DEVIOS(DEVDAT) 000525' 263140 000000 POPJ PDP, END, MTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES MACRO 10 05:51 24-APR-78 PAGE 10-2 MTPSER MAC 24-APR-78 01:34 L. HANTMAN 8-9-65 NO ERRORS DETECTED PROGRAM BREAK IS 000547 9K CORE USED MTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES MACRO 10 05:51 24-APR-78 PAGE 11 MTPSER MAC 24-APR-78 01:34 SYMBOL TABLE A 000000 INT AC1 000015 INT AC2 000016 INT AC3 000017 INT ADRERR 000514' EXT ADVBFE 000273' EXT ADVBFF 000243' EXT AL 000001 INT ASSCON 400000 INT ASSPRG 200000 INT B 000014 INT BUFPNT 000012 INT BUFWRD 000013 INT CLOCK 000415' EXT CLOSB 002000 INT CLSIN 000002 INT CLSOUT 000001 INT CPE 000010 CUXIT1 000173' EXT D 000017 INT DAT 000005 INT DC 000200 SPD DCAVAL 000516' EXT DCB 000100 DCL 000001 INT DCN 000001 DCREQ 000515' EXT DCW 020000 INT DCWAIT 000062' EXT DCWRD 000526' DDI 000007 INT DDO 000006 INT DDTMEM 000037 INT DDTSYM 000036 INT DEN 000004 INT DEVADR 000007 INT DEVBUF 000006 INT DEVCHR 000001 INT DEVCTR 000011 INT DEVDAT 000006 INT DEVIAD 000007 INT DEVIOS 000002 INT DEVLOG 000005 INT DEVMOD 000004 INT DEVNAM 000000 INT DEVOAD 000010 INT DEVPTR 000010 INT DEVSER 000003 INT DGF 000012 INT DIN 000003 INT DLK 000005 INT DOU 000002 INT MTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES MACRO 10 05:51 24-APR-78 PAGE 11-1 MTPSER MAC 24-APR-78 01:34 SYMBOL TABLE DR 000016 INT DRL 000000 INT DSI 000011 INT DSO 000010 INT DTW 040000 INT DVAVAL 000040 INT DVCDR 100000 INT DVDIR 000004 INT DVDIRI 400000 INT DVIN 000002 INT DVLPT 040000 INT DVMTA 000020 INT DVOUT 000001 INT DVTTY 000010 INT ENTRB 020000 INT ERF 000004 I 000010 INT IB 000013 INT IBUFB 200000 INT INITB 400000 INT INPB 010000 INT IO 000020 INT IOACT 010000 INT IOBEG 000002 INT IOBKTL 040000 INT IOBOT 004000 IOCON 000040 INT IODEND 020000 INT IODERR 200000 INT IODISC 400000 INT IODONE 400000 INT IODT 010000 IODTER 100000 INT IOEND 000040 INT IOFST 000004 INT IOIMPM 400000 INT IONRCK 000100 INT IORDEL 000100 INT IORET 000020 INT IOS 000000 INT IOSEOF 004000 IOSTRT 000010 INT IOTEND 002000 IOUSE 400000 INT IOW 000001 INT IOWC 000020 INT IOWS 400000 INT ITEM 000004 INT JBFADR 000000 INT JBFCTR 000002 INT JBFPTR 000001 INT JBTADR 000216' EXT JBUF 000005 INT MTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES MACRO 10 05:51 24-APR-78 PAGE 11-2 MTPSER MAC 24-APR-78 01:34 SYMBOL TABLE JDAT 000011 INT JERR 002000 INT JIOW 100000 INT JNA 004000 INT LOOKB 040000 INT LPE 000020 MDCSAV 000527' MTAPE 000006' MTAPE1 000000' INT MTAVAL 000520' EXT MTBSP 000355' MTCCHL 000000 EXT MTCCHN 000032' EXT MTCHEK 000056' MTCHK1 000061' MTCHK2 000063' MTCHK3 000113' MTCINI 000201' INT MTCINT 000211' INT MTCLK2 000420' MTCLOK 000403' MTCLS 000150' MTCLS1 000157' MTCMDP 000530' MTCON 000275' MTCONO 000044' MTCRET 000400' EXT MTCSAV 000213' EXT MTDC 000002 MTDCCN 000531' MTDCND 000206' MTDEV 000532' MTDISP 000166' ENT MTDMP1 000462' MTDMP2 000513' MTDMP3 000515' MTDMP4 000517' MTDMPI 000504' MTDMPO 000454' MTEND1 000246' MTEOF 000321' MTEOFF 000533' MTEOR 000323' MTEOT2 000441' MTERCN 000534' MTERR 000335' MTERR2 000353' MTGO 000033' MTGO1 000023' MTGO1A 000025' MTIDSP 000222' MTIGN 000327' MTIGN2 000401' MTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES MACRO 10 05:51 24-APR-78 PAGE 11-3 MTPSER MAC 24-APR-78 01:34 SYMBOL TABLE MTIN 000046' MTIN1 000051' MTIN2 000054' MTINDC 000132' MTINDN 000235' MTLEOT 000435' MTNIO 000251' MTNIO2 000312' MTNOTI 000273' MTOUT 000120' MTOUT1 000124' MTOUT2 000130' MTOUTE 000145' MTPDUN 000225' MTREDO 000453' MTREQ 000517' EXT MTSTAK 000425' MTW 010000 INT MTWAIT 000066' EXT OBUFB 100000 INT OUT 000157' EXT OUTPB 004000 INT PDP 000003 INT PI 000004 SPD PICHN 000100 INT PIOMOD 000227' EXT PJOBN 000215' EXT PROG 000007 INT PUNIT 000025' EXT RUN 200000 INT RUNABL 204000 INT SEL 000002 SETIOD 000523' EXT SVCNTR 000535' T 000004 TAC 000001 INT TAC1 000002 INT TCF 000001 TEM 000010 INT TTYATC 020000 INT TTYUSE 010000 INT USRMOD 010000 INT USRREL 000472' EXT UUO 000014 INT UXIT 000200' EXT WAIT1 000477' EXT WSYNC 000113' EXT XNC 040000 OOOOOOOOO NNN NNN CCCCCCCCCCCC EEEEEEEEEEEEEEE OOOOOOOOO NNN NNN CCCCCCCCCCCC EEEEEEEEEEEEEEE OOOOOOOOO NNN NNN CCCCCCCCCCCC EEEEEEEEEEEEEEE OOO OOO NNN NNN CCC EEE OOO OOO NNN NNN CCC EEE OOO OOO NNN NNN CCC EEE OOO OOO NNNNNN NNN CCC EEE OOO OOO NNNNNN NNN CCC EEE OOO OOO NNNNNN NNN CCC EEE OOO OOO NNN NNN NNN CCC EEEEEEEEEEEE OOO OOO NNN NNN NNN CCC EEEEEEEEEEEE OOO OOO NNN NNN NNN CCC EEEEEEEEEEEE OOO OOO NNN NNNNNN CCC EEE OOO OOO NNN NNNNNN CCC EEE OOO OOO NNN NNNNNN CCC EEE OOO OOO NNN NNN CCC EEE OOO OOO NNN NNN CCC EEE OOO OOO NNN NNN CCC EEE OOOOOOOOO NNN NNN CCCCCCCCCCCC EEEEEEEEEEEEEEE OOOOOOOOO NNN NNN CCCCCCCCCCCC EEEEEEEEEEEEEEE OOOOOOOOO NNN NNN CCCCCCCCCCCC EEEEEEEEEEEEEEE LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT Request created: 24-April-1978 05:53:58 File: DSKB0 :ONCE .LST [8,296] Created: 20-April-1967 05:51:00 Printed: 24-April-1978 05:53:36 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:1704 File will be deleted after printing ONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE MACRO 10 05:51 24-APR-78 PAGE 1 S MAC 24-APR-78 21:40 THIS IS ONLY CODE PLACED AT THE END OF IOINIT XLIST LIST TITLE ONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE SUBTTL THIS IS ONLY CODE PLACED AT THE END OF IOINIT ;WHICH SHOULD BE THE LAST LOADED PROGRAM BEFORE SYSMAK AND DDT ;THUS IF IT OVERFLOWS INTO THE USER AREA NO HARM IS DONE ;INITIALIZE PRIORITY CHANNELS AND SETUP INTERRUPT SERVICE ROUTINE CHA XP SYSFIN,.-1 000000 XP SYSFIN,,^SYSFIN= 000000' 777777 777777' ^.-1 ;LAST LOC. IN SYSTEM 010000 NXM=10000 ;NON EX-MEM INTERNAL PATCH 000001' PATCH: BLOCK 100 ;PATCH SPACE ;C(SYSSIZE) SHOULD BE UPDATED AS PATCHES ARE MADE 000001 T=TAC ;SOME ACS 000002 C=TAC1 000005 INT=DAT ;INTERRUPT SERVICE ENTRY POINT(USUALLY A CONSO INSTR.) 000006 CHL=DEVDAT ;THE PLACE WHERE PC IS STORED FOR THAT CHANNEL ;LINK TO SERVICE ROUTINES INTERNAL LINKSR EXTERNAL NDEVM1 ;=NDOV-1 (DEFINED IN IOINI1) EXTERNAL DEVINT,JOBSYM 000101' 000000 000000 LINKSR: 0 ;CALLED WITH JSR FROM SYSINI ;CHAIN INTERUPT SERVICE ROUTINES TOGETH 000102' 515240 254000 HRLZI INT, 254000 ;FORM JRST INSTR. 000103' 201100 000000* MOVEI C, NDEVM1 ;NO. OV DEV. SERV. ROUTINES TO CHAIN 000104' 554302 000000* DEV1: HLRZ CHL, DEVINT(C) ;LOC. WHERE PC IS STORED 000105' 540242 000104* HRR INT, DEVINT(C) ;INTERRUPT SERVICE ROUTINE ENTRY POINT 000106' 200046 000001 MOVE T, 1(CHL) ;INSERT THIS ROUTINE AT FRONT OF CHAIN 000107' 202045 000001 MOVEM T, 1(INT) 000110' 202246 000001 MOVEM INT, 1(CHL) 000111' 365100 000104' SOJGE C, DEV1 ONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE MACRO 10 05:51 24-APR-78 PAGE 2 ONCE MAC 24-APR-78 00:18 THIS IS ONLY CODE PLACED AT THE END OF IOINIT ;MOVE SYMBOL TABLE UP IN MEMORY ;EXEC MUST BE LOADED IN 15K OR LESS IF GOING INTO 16K MACHINE 000112' 402000 000005 SETZM DAT ;FIND FIRST NON EX MEM 000113' 700200 010000 CONO APR,NXM ;CLEAR NON-EX MEM FLAG 000114' 271240 002000 ADDI DAT,2000 ;TRY NEXT 1K BLOCK 000115' 200105 000000 MOVE TAC1,(DAT) ;REFERENCE THIS LOCATION 000116' 700340 010000 CONSO APR,NXM ;NON-EXISTENT? 000117' 254000 000114' JRST .-3 ;NO 000120' 275240 000001 SUBI DAT,1 ;YES, HIGHEST LEGAL LOC 000121' 202240 000037 MOVEM DAT,DDTMEM ;FOR DDT 000122' 275240 000177 SUBI DAT,200-1 ;MAKE ROOM FOR DECDUMP 000123' 574100 000000* HLRE TAC1,JOBSYM ;-LENGTH OF S. T. 000124' 322100 000143' JUMPE TAC1,JRSTI1 ;0 IF NON S. T. TO MOVE UP 000125' 213000 000002 MOVNS TAC1 ;+LENGTH 000126' 550040 000123* HRRZ TAC,JOBSYM ;FIRST ADDRESS ADDI TAC,(TAC1) 000127' 504040 000002 HRL TAC,TAC1 ;XWD LENGTH,LENGTH+FIRST ADDRESS 000130' 275241 000001 SUBI DAT,1(TAC) ;NEW LAST+1-OLD LAST+1 000131' 542240 000140' HRRM DAT,STO1 ;DIST. TO MOVE 000132' 200100 000126* MOVE TAC1,JOBSYM ;-N,FIRST ADD. 000133' 271045 000001 ADDI TAC,1(DAT) ;FORM NEW S.T. POINTER 000134' 202100 000132* MOVEM TAC1,JOBSYM 000135' 201100 000134* MOVEI TAC1,JOBSYM 000136' 202100 000036 MOVEM TAC1,DDTSYM 000137' 200101 777777 MOVE TAC1,-1(TAC) 000140' 202101 000140' STO1: MOVEM TAC1,.(TAC) 000141' 274040 000551' SUB TAC,[XWD 1,1] 000142' 325040 000137' JUMPGE TAC,.-3 ONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE MACRO 10 05:51 24-APR-78 PAGE 3 ONCE MAC 24-APR-78 00:18 THIS IS ONLY CODE PLACED AT THE END OF IOINIT ;SETUP LOCATIONS 40 THRU 57 000143' 200040 000552' JRSTI1: MOVE TAC,[XWD LOC40,40] 000144' 251040 000057 BLT TAC,57 000145' 200040 000147' MOVE TAC,JRSTI 000146' 202040 000102' MOVEM TAC,LINKSR+1 ;DO ONCE ONLY 000147' 254020 000101' JRSTI: JRST @LINKSR EXTERN UUO0,ERROR EXTERN CH1,CH2,CH3,CH4,CH5,CH6,CH7 000150' 000000 000000 LOC40: 0 ;UUO PC 000151' 264000 000000* JSR UUO0 ;TO UUO HANDLER 000152' 264000 000000* JSR CH1 000153' 265240 000000* JSP DAT,ERROR 000154' 264000 000000* JSR CH2 000155' 265240 000153* JSP DAT,ERROR 000156' 264000 000000* JSR CH3 000157' 265240 000155* JSP DAT,ERROR 000160' 264000 000000* JSR CH4 000161' 265240 000157* JSP DAT,ERROR 000162' 264000 000000* JSR CH5 000163' 265240 000161* JSP DAT,ERROR 000164' 264000 000000* JSR CH6 000165' 265240 000163* JSP DAT,ERROR 000166' 264000 000000* JSR CH7 000167' 265240 000165* JSP DAT,ERROR ONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE MACRO 10 05:51 24-APR-78 PAGE 4 ONCE MAC 24-APR-78 00:18 THIS IS ONLY CODE PLACED AT THE END OF IOINIT ;ONCE ONLY CODE - OPERATOR SETUP DIALOGUE INTERNAL ONCE EXTERNAL CONMES,RADX10,CRLF,DECIN,DECIN1 EXTERNAL THSDAT,MAKEND,JOBFF EXTERNAL ERNAM,OCTPNT,SYSSIZ,CONFIG,SYSNUM,SYSDAT 000170' 000000 000000 ONCE: 0 000171' 201040 000000 MOVEI TAC,SYSFIN ;SET SIZE OF MONITOR 000172' 202040 000000* MOVEM TAC,SYSSIZ 000173' 200240 000443' MOVE DAT,LINEP ;SETUP LINE BYTE POINTER 000174' 200140 000553' MOVE PDP,[XWD ONCEPN,ONCEPD] 000175' 260140 000000* PUSHJ PDP,CRLF 000176' 201040 000000* MOVEI TAC,CONFIG 000177' 260140 000000* PUSHJ PDP,CONMES 000200' 201040 000474' MOVEI TAC,TSEXEC 000201' 260140 000177* PUSHJ PDP,CONMES 000202' 554040 000000* HLRZ TAC,SYSNUM 000203' 260140 000000* PUSHJ PDP,RADX10 000204' 201040 000554' MOVEI TAC,[ASCIZ /./] 000205' 260140 000201* PUSHJ PDP,CONMES 000206' 550040 000202* HRRZ TAC,SYSNUM 000207' 260140 000203* PUSHJ PDP,RADX10 000210' 201040 000555' MOVEI TAC,[ASCIZ / /] 000211' 260140 000205* PUSHJ PDP,CONMES 000212' 201040 000000* MOVEI TAC,SYSDAT 000213' 260140 000211* PUSHJ PDP,CONMES 000214' 260140 000175* PUSHJ PDP,CRLF 000215' 260140 000421' PUSHJ PDP,OPOUT ONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE MACRO 10 05:51 24-APR-78 PAGE 5 ONCE MAC 24-APR-78 00:18 THIS IS ONLY CODE PLACED AT THE END OF IOINIT ;ASK FOR TODAYS DATE AND CONVERT ;DATE STORED AS ((Y-64)*12.+M-1)*31.+D-1 000216' 402000 000000* DATLOP: SETZM THSDAT 000217' 200240 000443' MOVE DAT,LINEP 000220' 201040 000477' MOVEI TAC,TODATE 000221' 260140 000213* PUSHJ PDP,CONMES 000222' 260140 000421' PUSHJ PDP,OPOUT 000223' 260140 000376' PUSHJ PDP,GETLIN 000224' 254000 000216' JRST DATLOP ;JUST CR 000225' 260140 000000* PUSHJ PDP,DECIN1 ;MONTH 000226' 254000 000216' JRST DATLOP ;ERROR 000227' 332000 000002 SKIPE TAC1 000230' 303100 000014 CAILE TAC1,^D12 000231' 254000 000216' JRST DATLOP 000232' 275100 000001 SUBI TAC1,1 000233' 221100 000037 IMULI TAC1,^D31 000234' 272100 000216* ADDM TAC1,THSDAT 000235' 260140 000225* PUSHJ PDP,DECIN1 ;DAY 000236' 254000 000216' JRST DATLOP 000237' 332000 000002 SKIPE TAC1 000240' 303040 000037 CAILE TAC,^D31 000241' 254000 000216' JRST DATLOP 000242' 275100 000001 SUBI TAC1,1 000243' 272100 000234* ADDM TAC1,THSDAT 000244' 260140 000235* PUSHJ PDP,DECIN1 ;YEAR 000245' 254000 000216' JRST DATLOP 000246' 301100 000101 CAIL TAC1,^D65 000247' 303100 000143 CAILE TAC1,^D99 000250' 254000 000216' JRST DATLOP 000251' 275100 000100 SUBI TAC1,^D64 ;YEAR ZERO 000252' 221100 000564 IMULI TAC1,^D12*^D31 000253' 272100 000243* ADDM TAC1,THSDAT ONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE MACRO 10 05:51 24-APR-78 PAGE 6 ONCE MAC 24-APR-78 00:18 THIS IS ONLY CODE PLACED AT THE END OF IOINIT ;GET TIME OF DAY EXTERN TIME 000254' 402000 000000* TIMLOP: SETZM TIME 000255' 200240 000443' MOVE DAT,LINEP 000256' 201040 000506' MOVEI TAC,TIMEM 000257' 260140 000221* PUSHJ PDP,CONMES 000260' 260140 000421' PUSHJ PDP,OPOUT 000261' 260140 000376' PUSHJ PDP,GETLIN 000262' 254000 000254' JRST TIMLOP ;JUST A CR 000263' 134100 000001 ILDB TAC1,TAC 000264' 275100 000060 SUBI TAC1,60 000265' 331000 000002 SKIPL TAC1 ;CHECK FIRST DIGIT OF HOUR 000266' 303100 000002 CAILE TAC1,2 000267' 254000 000254' JRST TIMLOP 000270' 220100 000556' IMUL TAC1,[^D60*^D60*^D60*^D10] 000271' 272100 000254* ADDM TAC1,TIME 000272' 134100 000001 ILDB TAC1,TAC 000273' 275100 000060 SUBI TAC1,60 ;CONVERT TO BINARY 000274' 331000 000002 SKIPL TAC1 000275' 303100 000011 CAILE TAC1,^D9 000276' 254000 000254' JRST TIMLOP 000277' 221100 645700 IMULI TAC1,^D60*^D60*^D60 000300' 272100 000271* ADDM TAC1,TIME 000301' 260140 000244* PUSHJ PDP,DECIN1 000302' 254000 000254' JRST TIMLOP 000303' 303100 000073 CAILE TAC1,^D59 000304' 254000 000254' JRST TIMLOP 000305' 221100 007020 IMULI TAC1,^D60*^D60 000306' 272100 000300* ADDM TAC1,TIME ONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE MACRO 10 05:51 24-APR-78 PAGE 7 ONCE MAC 24-APR-78 00:18 THIS IS ONLY CODE PLACED AT THE END OF IOINIT ;PRINT IO CONFIGURATION EXTERN DEVLST 000307' 200240 000443' MOVE DAT,LINEP 000310' 201040 000517' MOVEI TAC,IOCONF 000311' 260140 000257* PUSHJ PDP,CONMES 000312' 554300 000000* HLRZ DEVDAT,DEVLST 000313' 201040 000004 MOVEI TAC,ITEM 000314' 261140 000001 PUSH PDP,TAC 000315' 201040 000001 ONCE5: MOVEI TAC,1 000316' 510206 000000 HLLZ ITEM,DEVNAM(DEVDAT) 000317' 554306 000003 ONCE4: HLRZ DEVDAT,DEVSER(DEVDAT) 000320' 322300 000324' JUMPE DEVDAT,ONCE6 000321' 510106 000000 HLLZ TAC1,DEVNAM(DEVDAT) 000322' 316100 000004 CAMN TAC1,ITEM 000323' 344040 000317' AOJA TAC,ONCE4 000324' 200340 000001 ONCE6: MOVE PROG,TAC ;SAVE NO. 000325' 260140 000207* PUSHJ PDP,RADX10 000326' 201600 000040 MOVEI UUO," " 000327' 136600 000005 IDPB UUO,DAT 000330' 201600 000003 MOVEI UUO,3 000331' 200440 000557' MOVE JDAT,[POINT 6,ITEM] 000332' 134100 000011 ONCE7: ILDB TAC1,JDAT 000333' 271100 000240 ADDI TAC1,240 000334' 136100 000005 IDPB TAC1,DAT 000335' 367600 000332' SOJG UUO,ONCE7 000336' 201040 000560' MOVEI TAC,[ASCIZ /'S/] 000337' 303340 000001 CAILE PROG,1 000340' 260140 000311* PUSHJ PDP,CONMES 000341' 260140 000214* PUSHJ PDP,CRLF 000342' 326300 000315' JUMPN DEVDAT,ONCE5 000343' 262140 000002 POP PDP,TAC1 000344' 260140 000421' PUSHJ PDP,OPOUT ONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE MACRO 10 05:51 24-APR-78 PAGE 8 ONCE MAC 24-APR-78 00:18 THIS IS ONLY CODE PLACED AT THE END OF IOINIT ;ASK IF SYSMAK IS WANTED 000345' 200240 000443' MOVE DAT,LINEP 000346' 201040 000524' MOVEI TAC,SYSM 000347' 260140 000340* PUSHJ PDP,CONMES 000350' 260140 000421' PUSHJ PDP,OPOUT 000351' 260140 000376' PUSHJ PDP,GETLIN 000352' 254000 000355' JRST ONCE2 ;NO SYSMAK 000353' 201040 000000* MOVEI TAC,MAKEND ;YES 000354' 202040 000172* MOVEM TAC,SYSSIZ ;IS EXEC DDT WANTED? 000355' 200240 000443' ONCE2: MOVE DAT,LINEP 000356' 201040 000536' MOVEI TAC,SYSDM 000357' 260140 000347* PUSHJ PDP,CONMES 000360' 260140 000421' PUSHJ PDP,OPOUT 000361' 260140 000376' PUSHJ PDP,GETLIN 000362' 254000 000365' JRST ONCE3 ;NO 000363' 201040 000000* MOVEI TAC,JOBFF ;FIRST FREE LOCATION 000364' 552040 000354* HRRZM TAC,SYSSIZ ONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE MACRO 10 05:51 24-APR-78 PAGE 9 ONCE MAC 24-APR-78 00:18 THIS IS ONLY CODE PLACED AT THE END OF IOINIT ;PRINT OCTAL SIZE OF MONITOR 000365' 200240 000443' ONCE3: MOVE DAT,LINEP 000366' 201040 000541' MOVEI TAC,EXECIS 000367' 260140 000357* PUSHJ PDP,CONMES 000370' 200040 000364* MOVE TAC,SYSSIZ 000371' 260140 000000* PUSHJ PDP,OCTPNT 000372' 201040 000544' MOVEI TAC,LENGTH 000373' 260140 000367* PUSHJ PDP,CONMES 000374' 260140 000421' PUSHJ PDP,OPOUT 000375' 254020 000170' JRST @ONCE ONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE MACRO 10 05:51 24-APR-78 PAGE 10 ONCE MAC 24-APR-78 00:18 THIS IS ONLY CODE PLACED AT THE END OF IOINIT ;ROUTINE TO READ A LINE FROM OPERATORS CONSOLE ;CALL: PUSHJ PDP,GETLIN ; JUST A CR TYPED IN ; A LINE TYPED IN,TAC SET AS BYTE POINTER EXTERN CPOPJ, CPOPJ1 000376' 200040 000443' GETLIN: MOVE TAC,LINEP 000377' 201200 000000 MOVEI ITEM,0 000400' 712340 000040 GET1: CONSO TTY,40 000401' 254000 000400' JRST .-1 000402' 712040 000002 DATAI TTY,TAC1 000403' 712140 000002 DATAO TTY,TAC1 000404' 136100 000001 IDPB TAC1,TAC 000405' 405100 000177 ANDI TAC1,177 000406' 306100 000177 CAIN TAC1,177 ;RUBOUT 000407' 254000 000000* JRST CPOPJ 000410' 302100 000015 CAIE TAC1,15 000411' 344200 000400' AOJA ITEM,GET1 000412' 712340 000020 CONSO TTY,20 000413' 254000 000412' JRST .-1 000414' 201100 000012 MOVEI TAC1,12 000415' 712140 000002 DATAO TTY,TAC1 000416' 200040 000443' MOVE TAC,LINEP 000417' 326200 000000* JUMPN ITEM,CPOPJ1 000420' 263140 000000 POPJ PDP, ONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE MACRO 10 05:51 24-APR-78 PAGE 11 ONCE MAC 24-APR-78 00:18 THIS IS ONLY CODE PLACED AT THE END OF IOINIT ;ROUTINE TO TYPE A LINE ON OPERATORS CONSOLE ;ECHO CHECK STOPS LINE AND RETURNS ;CALL: DAT SET TO END OF MESSAGE 000421' 200040 000443' OPOUT: MOVE TAC,LINEP 000422' 712040 000002 DATAI TTY,TAC1 000423' 316040 000005 OPOUT1: CAMN TAC,DAT 000424' 262140 000000 POP PDP, 000425' 712300 000040 CONSZ TTY,40 000426' 254000 000434' JRST OPOUT2 ;ECHO CHECK 000427' 712300 000020 CONSZ TTY,20 000430' 254000 000427' JRST .-1 000431' 134100 000001 ILDB TAC1,TAC 000432' 712140 000002 DATAO TTY,TAC1 000433' 254000 000423' JRST OPOUT1 000434' 712300 000020 OPOUT2: CONSZ TTY,20 000435' 254000 000434' JRST .-1 000436' 712140 000561' DATAO TTY,[15] 000437' 712300 000020 CONSZ TTY,20 000440' 254000 000437' JRST .-1 000441' 712140 000562' DATAO TTY,[12] 000442' 263140 000000 POPJ PDP, 000443' 440700 000444' LINEP: POINT 7,LINBUF 000444' LINBUF: BLOCK 20 000010 ONCEPN=10 000464' ONCEPD: BLOCK ONCEPN ONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE MACRO 10 05:51 24-APR-78 PAGE 12 ONCE MAC 24-APR-78 00:18 THIS IS ONLY CODE PLACED AT THE END OF IOINIT ;MESSAGES 000474' 202505 620246 TSEXEC: ASCIZ / T. S. EXEC-/ 000475' 271010 554212 000476' 415320 000000 000477' TODATE: ASCIZ / 000477' 064252 454640 TYPE TODAY'S DATE AS ABOVE. 000500' 425012 447610 000501' 406624 751500 000502' 422032 442500 000503' 406464 040604 000504' 476550 527032 000505' 050000 000000 / 000506' TIMEM: ASCIZ / 000506' 064252 454640 TYPE 4 DIGIT NAVY TIME(0953 IS 9:53 AM). 000507' 425006 420210 000510' 446171 152100 000511' 472032 654500 000512' 522231 542520 000513' 301626 531500 000514' 446464 034564 000515' 325464 040632 000516' 245341 505000 / 000517' IOCONF: ASCIZ / 000517' 064251 147500 IO CONFIGURATION 000520' 416371 643222 000521' 436532 240650 000522' 446371 606424 / 000523' 000000 000000 000524' SYSM: ASCIZ / 000524' 064250 447500 DO YOU WANT SYSMAK(TYPE Y IF YES,CR IF NO)? 000525' 546372 520256 000526' 406352 420246 000527' 546471 540626 000530' 242513 150212 000531' 202624 044614 000532' 202630 551530 000533' 416444 044614 000534' 202351 724576 000535' 064240 000000 / 000536' SYSDM: ASCIZ / 000536' 064250 554212 EXEC DDT? 000537' 415010 442250 000540' 374321 200000 / 000541' EXECIS: ASCIZ / 000541' 064250 554212 EXEC IS / 000542' 415011 151500 000543' 000000 000000 000544' 476072 440630 LENGTH: ASCIZ /OCTAL LOCATIONS LONG. ONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE MACRO 10 05:51 24-APR-78 PAGE 12-1 ONCE MAC 24-APR-78 00:18 THIS IS ONLY CODE PLACED AT THE END OF IOINIT 000545' 202311 741602 000546' 522231 747246 000547' 202311 747216 000550' 270321 200000 / END, NO ERRORS DETECTED PROGRAM BREAK IS 000563 9K CORE USED ONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE MACRO 10 05:51 24-APR-78 PAGE 13 ONCE MAC 24-APR-78 00:18 SYMBOL TABLE A 000000 INT AC1 000015 INT AC2 000016 INT AC3 000017 INT AL 000001 INT APR 000000 SPD ASSCON 400000 INT ASSPRG 200000 INT B 000014 INT BUFPNT 000012 INT BUFWRD 000013 INT C 000002 CH1 000152' EXT CH2 000154' EXT CH3 000156' EXT CH4 000160' EXT CH5 000162' EXT CH6 000164' EXT CH7 000166' EXT CHL 000006 CLOSB 002000 INT CLSIN 000002 INT CLSOUT 000001 INT CONFIG 000176' EXT CONMES 000373' EXT CPOPJ 000407' EXT CPOPJ1 000417' EXT CRLF 000341' EXT D 000017 INT DAT 000005 INT DATLOP 000216' DCL 000001 INT DCW 020000 INT DDI 000007 INT DDO 000006 INT DDTMEM 000037 INT DDTSYM 000036 INT DECIN 000000 EXT DECIN1 000301' EXT DEN 000004 INT DEV1 000104' DEVADR 000007 INT DEVBUF 000006 INT DEVCHR 000001 INT DEVCTR 000011 INT DEVDAT 000006 INT DEVIAD 000007 INT DEVINT 000105' EXT DEVIOS 000002 INT DEVLOG 000005 INT DEVLST 000312' EXT DEVMOD 000004 INT ONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE MACRO 10 05:51 24-APR-78 PAGE 13-1 ONCE MAC 24-APR-78 00:18 SYMBOL TABLE DEVNAM 000000 INT DEVOAD 000010 INT DEVPTR 000010 INT DEVSER 000003 INT DGF 000012 INT DIN 000003 INT DLK 000005 INT DOU 000002 INT DR 000016 INT DRL 000000 INT DSI 000011 INT DSO 000010 INT DTW 040000 INT DVAVAL 000040 INT DVCDR 100000 INT DVDIR 000004 INT DVDIRI 400000 INT DVIN 000002 INT DVLPT 040000 INT DVMTA 000020 INT DVOUT 000001 INT DVTTY 000010 INT ENTRB 020000 INT ERNAM 000000 EXT ERROR 000167' EXT EXECIS 000541' GET1 000400' GETLIN 000376' I 000010 INT IB 000013 INT IBUFB 200000 INT INITB 400000 INT INPB 010000 INT INT 000005 IO 000020 INT IOACT 010000 INT IOBEG 000002 INT IOBKTL 040000 INT IOCON 000040 INT IOCONF 000517' IODEND 020000 INT IODERR 200000 INT IODISC 400000 INT IODONE 400000 INT IODTER 100000 INT IOEND 000040 INT IOFST 000004 INT IOIMPM 400000 INT IONRCK 000100 INT IORDEL 000100 INT IORET 000020 INT IOS 000000 INT IOSTRT 000010 INT ONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE MACRO 10 05:51 24-APR-78 PAGE 13-2 ONCE MAC 24-APR-78 00:18 SYMBOL TABLE IOUSE 400000 INT IOW 000001 INT IOWC 000020 INT IOWS 400000 INT ITEM 000004 INT JBFADR 000000 INT JBFCTR 000002 INT JBFPTR 000001 INT JBUF 000005 INT JDAT 000011 INT JERR 002000 INT JIOW 100000 INT JNA 004000 INT JOBFF 000363' EXT JOBSYM 000135' EXT JRSTI 000147' JRSTI1 000143' LENGTH 000544' LINBUF 000444' LINEP 000443' LINKSR 000101' INT LOC40 000150' LOOKB 040000 INT MAKEND 000353' EXT MTW 010000 INT NDEVM1 000103' EXT NXM 010000 OBUFB 100000 INT OCTPNT 000371' EXT ONCE 000170' INT ONCE2 000355' ONCE3 000365' ONCE4 000317' ONCE5 000315' ONCE6 000324' ONCE7 000332' ONCEPD 000464' ONCEPN 000010 OPOUT 000421' OPOUT1 000423' OPOUT2 000434' OUTPB 004000 INT PATCH 000001' INT PDP 000003 INT PICHN 000100 INT PROG 000007 INT RADX10 000325' EXT RUN 200000 INT RUNABL 204000 INT STO1 000140' SYSDAT 000212' EXT SYSDM 000536' SYSFIN 000000 INT ONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE MACRO 10 05:51 24-APR-78 PAGE 13-3 ONCE MAC 24-APR-78 00:18 SYMBOL TABLE SYSM 000524' SYSNUM 000206' EXT SYSSIZ 000370' EXT T 000001 TAC 000001 INT TAC1 000002 INT TEM 000010 INT THSDAT 000253' EXT TIME 000306' EXT TIMEM 000506' TIMLOP 000254' TODATE 000477' TSEXEC 000474' TTY 000120 SPD TTYATC 020000 INT TTYUSE 010000 INT USRMOD 010000 INT UUO 000014 INT UUO0 000151' EXT PPPPPPPPPPPP TTTTTTTTTTTTTTT RRRRRRRRRRRR SSSSSSSSSSSS EEEEEEEEEEEEEEE RRRRRRRRRRRR PPPPPPPPPPPP TTTTTTTTTTTTTTT RRRRRRRRRRRR SSSSSSSSSSSS EEEEEEEEEEEEEEE RRRRRRRRRRRR PPPPPPPPPPPP TTTTTTTTTTTTTTT RRRRRRRRRRRR SSSSSSSSSSSS EEEEEEEEEEEEEEE RRRRRRRRRRRR PPP PPP TTT RRR RRR SSS EEE RRR RRR PPP PPP TTT RRR RRR SSS EEE RRR RRR PPP PPP TTT RRR RRR SSS EEE RRR RRR PPP PPP TTT RRR RRR SSS EEE RRR RRR PPP PPP TTT RRR RRR SSS EEE RRR RRR PPP PPP TTT RRR RRR SSS EEE RRR RRR PPPPPPPPPPPP TTT RRRRRRRRRRRR SSSSSSSSS EEEEEEEEEEEE RRRRRRRRRRRR PPPPPPPPPPPP TTT RRRRRRRRRRRR SSSSSSSSS EEEEEEEEEEEE RRRRRRRRRRRR PPPPPPPPPPPP TTT RRRRRRRRRRRR SSSSSSSSS EEEEEEEEEEEE RRRRRRRRRRRR PPP TTT RRR RRR SSS EEE RRR RRR PPP TTT RRR RRR SSS EEE RRR RRR PPP TTT RRR RRR SSS EEE RRR RRR PPP TTT RRR RRR SSS EEE RRR RRR PPP TTT RRR RRR SSS EEE RRR RRR PPP TTT RRR RRR SSS EEE RRR RRR PPP TTT RRR RRR SSSSSSSSSSSS EEEEEEEEEEEEEEE RRR RRR PPP TTT RRR RRR SSSSSSSSSSSS EEEEEEEEEEEEEEE RRR RRR PPP TTT RRR RRR SSSSSSSSSSSS EEEEEEEEEEEEEEE RRR RRR LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT Request created: 24-April-1978 05:53:58 File: DSKB0 :PTRSER.LST [8,296] Created: 20-April-1967 05:51:00 Printed: 24-April-1978 05:53:36 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:1687 File will be deleted after printing PTRSER - PAPER TAPE READER SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 1 S MAC 24-APR-78 21:40 8-15-65 XLIST LIST TITLE PTRSER - PAPER TAPE READER SERVICE ROUTINE SUBTTL 8-15-65 EXTERNAL WSYNC, STOSQD, ILLOUT EXTERNAL STODAT, IOSET, SETBYT, CKS12, ADVBFF EXTERNAL SETIOD, PTRSAV, PTRCHN, PTRRET,PIOMOD INTERNAL PTRINT ;PTR DEVICE DATA BLOCK LINKAGE EXTERNAL PTRDB,PTRDAT,PTRCHR,PTRIOS,PTRSER,PTRMOD,PTRBUF EXTERNAL PTRADR,PTRPTR,PTRCTR,PTRSVC,PTRSV1 ENTRY PTRDSP PTRSER - PAPER TAPE READER SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 2 PTRSER MAC 24-APR-78 01:35 8-15-65 ,PARAMETER ASSIGNMENTS , PTR CONTROL REGISTER 000010 PTRDON=10; DONE FLAG 000020 PTRBSY=20; BUSY FLAG 000040 PTRBIN=40; BINARY READ MODE 000400 POW=400; POWER. ON=1 , SPECIAL IO STATUS WORD ASSIGMENTS 002000 PTRERR=2000 200000 PTRFCI=200000 100000 PTRPOW=100000 , SPECIAL ASCII CHARACTERS 000200 NULL=200 000377 RUBOUT=377 000232 S2EOF=232; END OF FILE , PI CONTROL REGISTER 000200 PION=200 000400 PIOFF=400 REPEAT 0,

,PTR SERVICE DISPATCH TABLE 000000' 254000 000133' PTRDSP: JRST PTRREL ;RELEASE 000001' 263140 000000 POPJ PDP,; CLOSE 000002' 254000 000000* JRST ILLOUT ;OUTPUT 000003' 254000 000004' JRST PTRINP; INPUT PTRSER - PAPER TAPE READER SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 3 PTRSER MAC 24-APR-78 01:35 8-15-65 000004' 607000 000002 PTRINP: TLNN IOS,IOBEG; VIRGIN DEVICE? (IOBEG=1?) 000005' 254000 000013' JRST PTRIN1; NO 000006' 661000 000004 TLO IOS,IOFST; IOFST:=1. NEXT ITEM WILL BE FIRST ITEM 000007' 260140 000000* PUSHJ PDP,SETBYT; TAC0-5:=TAC12-13:=0,TAC6-11:=BYTE SIZE , TAC14-17:=PROG 000010' 202040 000000* MOVEM TAC,PTRPTR; PTRPTR:=C(TAC) 000011' 710700 000400 CONSZ PTR,POW; IS POWER ON? 000012' 661000 100000 TLO IOS,PTRPOW; YES. PTRPOW:=1 000013' 660000 010000 PTRIN1: TRO IOS,IOACT; IOACT:=1 000014' 135040 000000* LDB TAC,PIOMOD 000015' 201100 000000* MOVEI TAC1, PTRCHN; TAC1:=PTR PI CHANNEL ASSIGNME 000016' 306040 000014 CAIN TAC,B; MODE=BINARY? 000017' 271100 000040 ADDI TAC1,PTRBIN; YES. ALPHA/BINARY:=BINARY 000020' 201040 000010 MOVEI TAC,PTRDON ;SET CONSO INTERRUPT FLAG 000021' 542040 000032' HRRM TAC,PTRINT 000022' 627000 000002 TLZN IOS,IOBEG; VIRGIN DEVICE? (IOBEG=1?) 000023' 254000 000027' JRST PTRIN4; NO 000024' 202000 000000* MOVEM IOS,PTRIOS; PTRIOS:=C(IOS) 000025' 710602 000020 CONO PTR,PTRBSY(TAC1); PTR BUSY FLAG:=1,ASSIGN INTER 000026' 263140 000000 POPJ PDP,; INPUT RETURN-VIRGIN DEVICE 000027' 202000 000024* PTRIN4: MOVEM IOS,PTRIOS; PTRIOS:=C(IOS) 000030' 710602 000010 CONO PTR,PTRDON(TAC1); PTR DONE FLAG:=1,ASSIGN INTER 000031' 263140 000000 POPJ PDP, PTRSER - PAPER TAPE READER SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 4 PTRSER MAC 24-APR-78 01:35 8-15-65 000032' 710740 000010 PTRINT: CONSO PTR,PTRDON ;INTERRUPT. IS DONE FLAG = 1? 000033' 254000 000032' JRST PTRINT ;NO. IF PTR IS IN FLAG LIST, THIS LOC 000034' 331000 000027* SKIPL PTRIOS ;DISCONNECT REQUEST? (IODISC=1?) 000035' 710440 000000* DATAI PTR,PTRSV1 ;SAVE ACCUMULATORS AND ESTABLISH PDP jsr ptrsav 000036' 201300 000000* MOVEI DEVDAT,PTRDAT ;DEVDAT: = PTR SIXBIT 000037' 260140 000000* PUSHJ PDP,IOSET ;PROG:=C(JBTADR18-35),ITEM:=C(DEVCTR) 000040' 200000 000034* MOVE IOS,PTRIOS ;IOS:=C(PTRIOS) 000041' 200240 000035* MOVE DAT,PTRSV1 ;DAT:=C(PTRSV1) 000042' 710740 000400 CONSO PTR,POW ;PTR POWER ON? 000043' 254000 000074' JRST PTREND ;NO 000044' 667000 100000 TLON IOS,PTRPOW ;PTRPOW=1? PTRPOW:=1 000045' 254000 000130' JRST PTREX1 ;NO 000046' 623000 400000 TLZE IOS,IODISC 000047' 254000 000120' JRST PTREX 000050' 623000 200000 TLZE IOS,PTRFCI ;IS PTRFCI=1? 000051' 200240 000000* MOVE DAT,PTRSVC ;YES. DAT:=C(PTRSVC) 000052' 602000 000014 PTRIN0: TRNE IOS,B ;MODE=BINARY? 000053' 254000 000060' JRST PTRI0 ;YES 000054' 302240 000200 CAIE DAT,NULL ;LAST CHARACTER NULL OR RUBOUT 000055' 306240 000377 CAIN DAT,RUBOUT 000056' 254000 000130' JRST PTREX1 ;YES 000057' 322240 000130' JUMPE DAT,PTREX1 ;DAT=0? 000060' 260140 000000* PTRI0: PUSHJ PDP,STODAT ;NO STORE DATA WORD. 000061' 255000 000000 JFCL ;CHECKSUM ERROR 000062' 254000 000064' JRST PTRI1 ;BLOCK FULL OR BLOCK COMPLETE 000063' 254000 000130' JRST PTREX1 ;DATA STORED CORRECTLY. 000064' 260140 000000* PTRI1: PUSHJ PDP,ADVBFF ;ADVANCE BUFFER 000065' 661000 400000 TLO IOS,IODISC; NEXT BUFFER IS FULL. IODISC:=1 000066' 602000 000040 TRNE IOS,IOCON; NEXT BUFFER IS EMPTY. CONTINUOUS? (IOC 000067' 661000 400000 TLO IOS,IODISC; NON-CONT. OPERATION. IODISC:=1 000070' 661000 000004 PTRI2: TLO IOS,IOFST; IOFST:=1. NEXT ITEM IS FIRST ITEM OF A 000071' 623000 000001 TLZE IOS,IOW; IN A WAIT? IOW:=0 000072' 260140 000000* PUSHJ PDP,SETIOD; IOWS:=1 000073' 254000 000130' JRST PTREX1 PTRSER - PAPER TAPE READER SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 5 PTRSER MAC 24-APR-78 01:35 8-15-65 ,COME HERE WHEN THE READER IS SHUT OFF 000074' 630000 000136' PTREND: TDZ IOS,[XWD PTRPOW,IOACT] ;PTRPOW:=0,IOACT:=0 000075' 260140 000133' PUSHJ PDP,PTRREL ;CLEAR PTR AND CONSO FLAG 000076' 135040 000014* LDB TAC,PIOMOD 000077' 661000 000040 TLO IOS,IOEND ;IOEND:=1 000100' 602040 000014 TRNE TAC,B ;MODE=A,AL 000101' 254000 000113' JRST PTREIB ;NO 000102' 201240 000232 MOVEI DAT,S2EOF; EOF CHAR 000103' 260140 000060* PUSHJ PDP,STODAT ;STORE DATA WORD 000104' 254000 000061' JRST PTRI0+1 ;CHECKSUM ERROR 000105' 254000 000110' JRST .+3 ;BLOCK FULL OF BLOCK COMPLETE 000106' 260140 000000* PTREI: PUSHJ PDP,STOSQD; FINISH THIS BUFFER, STORE WORD COUNT 000107' 330000 000000 SKIP 000110' 260140 000064* PUSHJ PDP,ADVBFF ;ADVANCE BUFFER 000111' 330000 000000 SKIP 000112' 254000 000070' JRST PTRI2 000113' 302040 000014 PTREIB: CAIE TAC,B ;MODE=BINARY? 000114' 254000 000106' JRST PTREI ;NO 000115' 607000 000004 TLNN IOS,IOFST ;IOFST=1? 000116' 660000 002000 TRO IOS,PTRERR ;NO. PTRERR:=1. BINARY BLOCK INCOMPLE 000117' 254000 000070' JRST PTRI2 PTRSER - PAPER TAPE READER SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 6 PTRSER MAC 24-APR-78 01:35 8-15-65 ,DISCONNECT PTR 000120' 337020 000000* PTREX: SKIPG @PTRADR ;IOUSE=1? 000121' 254000 000124' JRST PTREX0 ;YES. 000122' 710440 000041* DATAI PTR,PTRSV1 000123' 254000 000052' JRST PTRIN0 000124' 710440 000051* PTREX0: DATAI PTR,PTRSVC ;SAVE LAST DATA WORD FROM PTR 000125' 260140 000133' PUSHJ PDP,PTRREL ;CLEAR PTR AND CONSO FLAG 000126' 661000 200000 TLO IOS,PTRFCI ;PTRFCI:=1 000127' 620000 010000 TRZ IOS,IOACT ;IOACT:=0 000130' 202200 000000* PTREX1: MOVEM ITEM,PTRCTR ;PTRCTR:=C(ITEM) 000131' 202000 000040* MOVEM IOS,PTRIOS ;PTRIOS:=C(IOS) 000132' 254000 000000* JRST PTRRET ;RESTORE ACCUMULATORS AND DISMISS INTER INTERNAL PTRINI 000133' PTRINI: 000133' 710600 000000 PTRREL: CONO PTR,0 ;CLEAR PTR CONTROL 000134' 513000 000032' HLLZS PTRINT ;CLEAR CONSO FLAG 000135' 263140 000000 POPJ PDP, END, NO ERRORS DETECTED PROGRAM BREAK IS 000137 9K CORE USED PTRSER - PAPER TAPE READER SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 7 PTRSER MAC 24-APR-78 01:35 SYMBOL TABLE A 000000 INT AC1 000015 INT AC2 000016 INT AC3 000017 INT ADVBFF 000110' EXT AL 000001 INT ASSCON 400000 INT ASSPRG 200000 INT B 000014 INT BUFPNT 000012 INT BUFWRD 000013 INT CKS12 000000 EXT CLOSB 002000 INT CLSIN 000002 INT CLSOUT 000001 INT D 000017 INT DAT 000005 INT DCL 000001 INT DCW 020000 INT DDI 000007 INT DDO 000006 INT DDTMEM 000037 INT DDTSYM 000036 INT DEN 000004 INT DEVADR 000007 INT DEVBUF 000006 INT DEVCHR 000001 INT DEVCTR 000011 INT DEVDAT 000006 INT DEVIAD 000007 INT DEVIOS 000002 INT DEVLOG 000005 INT DEVMOD 000004 INT DEVNAM 000000 INT DEVOAD 000010 INT DEVPTR 000010 INT DEVSER 000003 INT DGF 000012 INT DIN 000003 INT DLK 000005 INT DOU 000002 INT DR 000016 INT DRL 000000 INT DSI 000011 INT DSO 000010 INT DTW 040000 INT DVAVAL 000040 INT DVCDR 100000 INT DVDIR 000004 INT DVDIRI 400000 INT DVIN 000002 INT DVLPT 040000 INT PTRSER - PAPER TAPE READER SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 7-1 PTRSER MAC 24-APR-78 01:35 SYMBOL TABLE DVMTA 000020 INT DVOUT 000001 INT DVTTY 000010 INT ENTRB 020000 INT I 000010 INT IB 000013 INT IBUFB 200000 INT ILLOUT 000002' EXT INITB 400000 INT INPB 010000 INT IO 000020 INT IOACT 010000 INT IOBEG 000002 INT IOBKTL 040000 INT IOCON 000040 INT IODEND 020000 INT IODERR 200000 INT IODISC 400000 INT IODONE 400000 INT IODTER 100000 INT IOEND 000040 INT IOFST 000004 INT IOIMPM 400000 INT IONRCK 000100 INT IORDEL 000100 INT IORET 000020 INT IOS 000000 INT IOSET 000037' EXT IOSTRT 000010 INT IOUSE 400000 INT IOW 000001 INT IOWC 000020 INT IOWS 400000 INT ITEM 000004 INT JBFADR 000000 INT JBFCTR 000002 INT JBFPTR 000001 INT JBUF 000005 INT JDAT 000011 INT JERR 002000 INT JIOW 100000 INT JNA 004000 INT LOOKB 040000 INT MTW 010000 INT NULL 000200 OBUFB 100000 INT OUTPB 004000 INT PDP 000003 INT PICHN 000100 INT PIOFF 000400 PIOMOD 000076' EXT PION 000200 POW 000400 PTRSER - PAPER TAPE READER SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 7-2 PTRSER MAC 24-APR-78 01:35 SYMBOL TABLE PROG 000007 INT PTR 000104 SPD PTRADR 000120' EXT PTRBIN 000040 PTRBSY 000020 PTRBUF 000000 EXT PTRCHN 000015' EXT PTRCHR 000000 EXT PTRCTR 000130' EXT PTRDAT 000036' EXT PTRDB 000000 EXT PTRDON 000010 PTRDSP 000000' ENT PTREI 000106' PTREIB 000113' PTREND 000074' PTRERR 002000 PTREX 000120' PTREX0 000124' PTREX1 000130' PTRFCI 200000 PTRI0 000060' PTRI1 000064' PTRI2 000070' PTRIN0 000052' PTRIN1 000013' PTRIN4 000027' PTRINI 000133' INT PTRINP 000004' PTRINT 000032' INT PTRIOS 000131' EXT PTRMOD 000000 EXT PTRPOW 100000 PTRPTR 000010' EXT PTRREL 000133' PTRRET 000132' EXT PTRSAV 000000 EXT PTRSER 000000 EXT PTRSV1 000122' EXT PTRSVC 000124' EXT RUBOUT 000377 RUN 200000 INT RUNABL 204000 INT S2EOF 000232 SETBYT 000007' EXT SETIOD 000072' EXT STODAT 000103' EXT STOSQD 000106' EXT TAC 000001 INT TAC1 000002 INT TEM 000010 INT TTYATC 020000 INT TTYUSE 010000 INT PTRSER - PAPER TAPE READER SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 7-3 PTRSER MAC 24-APR-78 01:35 SYMBOL TABLE USRMOD 010000 INT UUO 000014 INT WSYNC 000000 EXT PPPPPPPPPPPP TTTTTTTTTTTTTTT PPPPPPPPPPPP SSSSSSSSSSSS EEEEEEEEEEEEEEE RRRRRRRRRRRR PPPPPPPPPPPP TTTTTTTTTTTTTTT PPPPPPPPPPPP SSSSSSSSSSSS EEEEEEEEEEEEEEE RRRRRRRRRRRR PPPPPPPPPPPP TTTTTTTTTTTTTTT PPPPPPPPPPPP SSSSSSSSSSSS EEEEEEEEEEEEEEE RRRRRRRRRRRR PPP PPP TTT PPP PPP SSS EEE RRR RRR PPP PPP TTT PPP PPP SSS EEE RRR RRR PPP PPP TTT PPP PPP SSS EEE RRR RRR PPP PPP TTT PPP PPP SSS EEE RRR RRR PPP PPP TTT PPP PPP SSS EEE RRR RRR PPP PPP TTT PPP PPP SSS EEE RRR RRR PPPPPPPPPPPP TTT PPPPPPPPPPPP SSSSSSSSS EEEEEEEEEEEE RRRRRRRRRRRR PPPPPPPPPPPP TTT PPPPPPPPPPPP SSSSSSSSS EEEEEEEEEEEE RRRRRRRRRRRR PPPPPPPPPPPP TTT PPPPPPPPPPPP SSSSSSSSS EEEEEEEEEEEE RRRRRRRRRRRR PPP TTT PPP SSS EEE RRR RRR PPP TTT PPP SSS EEE RRR RRR PPP TTT PPP SSS EEE RRR RRR PPP TTT PPP SSS EEE RRR RRR PPP TTT PPP SSS EEE RRR RRR PPP TTT PPP SSS EEE RRR RRR PPP TTT PPP SSSSSSSSSSSS EEEEEEEEEEEEEEE RRR RRR PPP TTT PPP SSSSSSSSSSSS EEEEEEEEEEEEEEE RRR RRR PPP TTT PPP SSSSSSSSSSSS EEEEEEEEEEEEEEE RRR RRR LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT Request created: 24-April-1978 05:53:58 File: DSKB0 :PTPSER.LST [8,296] Created: 20-April-1967 05:51:00 Printed: 24-April-1978 05:53:36 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:1677 File will be deleted after printing PTPSER - PAPER TAPE PUNCH SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 1 S MAC 24-APR-78 21:40 8-15-65 XLIST LIST TITLE PTPSER - PAPER TAPE PUNCH SERVICE ROUTINE SUBTTL 8-15-65 EXTERNAL PTPCHN, PTPSAV, ADVBFE, ITMCT1, SETIOD, SETBYT, IOSET, CKS12 EXTERNAL ILLINP, OUT, WAIT1, PTPRET,PTPCHL,PIOMOD INTERNAL PTPINT ;PTP DEVICE DATA BLOCK LINKAGE EXTERNAL PTPDB,PTPDAT,PTPCHR,PTPIOS,PTPSER,PTPMOD,PTPBUF EXTERNAL PTPPTR,PTPADR,PTPCTR,PTPCNT,PTPCHA,PTPSIO ENTRY PTPDSP PTPSER - PAPER TAPE PUNCH SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 2 PTPSER MAC 24-APR-78 13:00 8-15-65 , PARAMETER ASSIGNMENTS , PTP CONTROL REGISTER 000010 PTPDON=10 , FORMAT CONTROL 000200 PTPFDN=200 , SPECIAL IO STATUS WORD ASSIGNMENTS 200000 PTPFED=200000 040000 PTPSSQ=40000 020000 PTPEOL=20000 010000 PTPSEQ=10000 004000 PTPBIN=4000 ;CHECKSUM BINARY 002000 PTPIB=2000 ;IMAGE BINARY , SPECIAL ASCII CHARACTERS 000200 NULL=200 000377 RUBOUT=377 000211 HORTAB=211 000213 VERTAB=213 000214 FORMFD=214 REPEAT 0,< ,PTP DATA BLOCK PTPDAT: SIXBIT "PTP" PTPCHR: 41 PTPIOS: 0 PTPSER: EXP PTPDSP PTPMOD: XWD 1000+PROG.14403 0 PTPBUF: 0 PTPPTR: 0 PTPADR: XWD PROG,0 PTPCTR: 0 PTPCNT: 0 PTPCHA: 0 PTPSIO: 0 > ,PTP SERVICE DISPATCH TABLE 000000' 254000 000004' PTPDSP: JRST PTPREL ;RELEASE 000001' 254000 000007' JRST PTPCLS ;CLOSE 000002' 254000 000024' JRST PTPOUT ;OUTPUT 000003' 254000 000000* JRST ILLINP ;INPUT PTPSER - PAPER TAPE PUNCH SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 3 PTPSER MAC 24-APR-78 13:00 8-15-65 INTERNAL PTPINI 000004' PTPINI: 000004' 710200 000000 PTPREL: CONO PTP,0 000005' 513000 000052' HLLZS PTPINT ;CLEAR CONSO FLAG BITS 000006' 263140 000000 POPJ PDP, ;RETURN 000007' 260140 000000* PTPCLS: PUSHJ PDP,OUT; OUTPUT REMAINING BUFFERS 000010' 260140 000000* PUSHJ PDP,WAIT1; WAIT FOR IOACT=0. 000011' 200000 000000* MOVE IOS,PTPIOS; C(IOS):=C(PTPIOS) 000012' 661000 600001 TLO IOS,IODISC+PTPFED+IOW; IODISC:=IOW:=PTPFED:=1 000013' 660000 010000 TRO IOS,IOACT; IOACT:=1 000014' 202000 000011* MOVEM IOS,PTPIOS; C(PTPIOS):=C(IOS) 000015' 201040 000200 MOVEI TAC,200 000016' 202040 000000* MOVEM TAC,PTPCNT; PTPCNT:=400 000017' 201040 000010 MOVEI TAC,PTPDON ;SET CONSO FLAG 000020' 542040 000052' HRRM TAC,PTPINT 000021' 201040 000000* MOVEI TAC,PTPCHN; TAC:=PTPCHN,PI CHANNEL ASSIGNMENT 000022' 710201 000010 CONO PTP,PTPDON(TAC); DONE FLAG:=1, ASSIGN PI CHANN 000023' 254000 000010* JRST WAIT1 ;WAIT FOR IOACT=0, ALL BUFFERS FINISHED PTPSER - PAPER TAPE PUNCH SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 4 PTPSER MAC 24-APR-78 13:00 8-15-65 000024' 623000 000002 PTPOUT: TLZE IOS,IOBEG ;VIRGIN DEVICE? (IOBEG:=0) 000025' 254000 000036' JRST PTPIN2 ;YES 000026' 660000 010000 PTPIN1: TRO IOS,IOACT ;IOACT:=1 000027' 621000 400000 TLZ IOS,IODISC ;CLEAR DISCONNECT BIT 000030' 202000 000014* MOVEM IOS,PTPIOS ;PTPIOS:=C(IOS) 000031' 201040 000010 MOVEI TAC,PTPDON ;SET CONSO FLAG BIT 000032' 542040 000052' HRRM TAC,PTPINT 000033' 201040 000021* MOVEI TAC, PTPCHN 000034' 710201 000010 CONO PTP,PTPDON (TAC); DONE FLAG:=1, ASSIGN PI CHAN 000035' 263140 000000 POPJ PDP, ;RETURN 000036' 135040 000000* PTPIN2: LDB TAC,PIOMOD 000037' 661000 200024 TLO IOS, IOFST+PTPFED+IO ;IOFST:=PTPFED:=IO:=1 000040' 621000 006000 TLZ IOS,PTPBIN+PTPIB ;CLEAR BINARY AND IMAGE BINAR 000041' 306040 000013 CAIN TAC,IB ;IMAGE BINARY? 000042' 661000 002000 TLO IOS,PTPIB ;YES 000043' 306040 000014 CAIN TAC,B ;MODE:=BINARY? 000044' 661000 004000 TLO IOS,PTPBIN ;YES, PTPBIN:=1 000045' 201040 000200 MOVEI TAC,PTPFDN ;PTPCNT:=PTPFDN 000046' 202040 000016* MOVEM TAC,PTPCNT 000047' 260140 000000* PUSHJ PDP,SETBYT ;SETBYT 000050' 502040 000000* HLLM TAC,PTPPTR ;PTPPTR0-5:=PTPPTR12-13:=0,PTPPTR6-11:= ;SIZE; PTPPTR14-17:=PROG 000051' 254000 000026' JRST PTPIN1 PTPSER - PAPER TAPE PUNCH SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 5 PTPSER MAC 24-APR-78 13:00 8-15-65 ,PUNCH INTERRUPT SERVICE 000052' 710340 000010 PTPINT: CONSO PTP,PTPDON; DONE FLAG=1? 000053' 254000 000052' JRST PTPINT ;NO. IF PTP IS IN FLAG LIST GO TO ERROR 000054' 202000 000000* MOVEM IOS,PTPSIO ;PTPSIO:=C(IOS) SAVE IOS 000055' 200000 000030* MOVE IOS,PTPIOS ;IOS:=C(PTPIOS) 000056' 603000 200000 TLNE IOS,PTPFED ;FEED REQUEST? (PTPFED=1?) 000057' 254000 000151' JRST PTPS2 ;YES 000060' 200000 000054* MOVE IOS,PTPSIO ;RESTORE IOS 000061' 264000 000000* JSR PTPSAV ;SAVE ACS AND ESTABLISH PDP 000062' 201300 000000* MOVEI DEVDAT,PTPDAT 000063' 260140 000000* PUSHJ PDP,IOSET ;PROG:=(JBTADR 18-35),ITEM:=C(DEVCTR) 000064' 200000 000055* MOVE IOS,PTPIOS 000065' 623000 400000 TLZE IOS,IODISC ;DISCONNECT? (IODISC=1?) 000066' 254000 000167' JRST PTPADV ;YES 000067' 623000 000004 TLZE IOS,IOFST ;IOFST=1? IOFST:=0 000070' 254000 000175' JRST PTP9 ;YES 000071' 607000 006000 TLNN IOS,PTPBIN+PTPIB ;BINARY PUNCH MODE? 000072' 254000 000121' JRST PTP3 ;NO 000073' 200040 000000* PTPB0: MOVE TAC,PTPCHA; BINARY OUTPUT BYTE SIZE=36 000074' 241040 000006 ROT TAC,6 000075' 202040 000073* MOVEM TAC,PTPCHA 000076' 405040 000077 ANDI TAC,77; TAC:=XX, SIXBIT SUB-BYTE 000077' 271040 000200 ADDI TAC,200 000100' 710140 000001 DATAO PTP,TAC; PUNCH 2XX 000101' 371000 000046* SOSL PTPCNT; C(PTPCNT):=C(PTPCNT)-1. WORD DONE? 000102' 254000 000227' JRST PTPXIT; NO 000103' 371000 000000* SOSL PTPCTR; C(PTPCTR):=C(PTPCTR)-1. ITEM COUNT < 0 000104' 254000 000113' JRST PTPB1; NO 000105' 603000 002000 TLNE IOS,PTPIB ;IMAGE BINARY? 000106' 665000 400000 TLOA IOS,IODISC ;YES, SUPPRESS TAPE FEED. 000107' 661000 600000 TLO IOS,IODISC+PTPFED ;IODIS:=PTPFED:=1 000110' 201040 000010 MOVEI TAC,10 000111' 202040 000101* MOVEM TAC,PTPCNT; PTPCNT:=10 000112' 254000 000227' JRST PTPXIT 000113' 201040 000005 PTPB1: MOVEI TAC,5 ;PTPCNT:=5 000114' 202040 000111* MOVEM TAC,PTPCNT 000115' 200260 000050* MOVE DAT,@PTPPTR; PTPCHA:=OUTPUT DATA WORD 000116' 350000 000115* AOS PTPPTR; PTPPTR:=C(PTPPTR)+1. ADVANCE ITEM POIN 000117' 202240 000075* MOVEM DAT,PTPCHA 000120' 254000 000227' JRST PTPXIT PTPSER - PAPER TAPE PUNCH SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 6 PTPSER MAC 24-APR-78 13:00 8-15-65 000121' 710140 000117* PTP3: DATAO PTP,PTPCHA; PUNCH CHARACTER 000122' 602000 000014 TRNE IOS,14; IS MODE AN ALPHA MODE 000123' 254000 000136' JRST PTP1; NO 000124' 200240 000121* MOVE DAT,PTPCHA 000125' 302240 000211 CAIE DAT,HORTAB; HORIZONTAL OR VERTICAL TAB? 000126' 306240 000213 CAIN DAT,VERTAB 000127' 254000 000216' JRST PTPP1; YES 000130' 302240 000214 CAIE DAT,FORMFD; FORM FEED? 000131' 254000 000136' JRST PTP1; NO 000132' 661000 220000 TLO IOS,PTPFED+PTPEOL; PTPFED:=PTPEOL:=1 000133' 201240 000020 MOVEI DAT,20 000134' 202240 000114* MOVEM DAT,PTPCNT; PTPCNT:=20 000135' 254000 000227' JRST PTPXIT PTPSER - PAPER TAPE PUNCH SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 7 PTPSER MAC 24-APR-78 13:00 8-15-65 000136' 375000 000103* PTP1: SOSGE PTPCTR; C(PTPCTR:=C(PTPCTR)-1. IS C(PTPCTR)<0 000137' 254000 000160' JRST PTP5 ;YES 000140' 134240 000116* LDBI DAT,PTPPTR ;DAT:=OUTPUT ITEM 000141' 135040 000036* LDB TAC,PIOMOD 000142' 306040 000010 CAIN TAC,I; MODE=IMAGE? 000143' 254000 000147' JRST PTP6 ;YES 000144' 435240 000200 IORI DAT,200; NO, INSERT EIGHTH HOLD 000145' 306240 000200 CAIN DAT,NULL; NULL? 000146' 254000 000136' JRST PTP1; YES 000147' 202240 000124* PTP6: MOVEM DAT,PTPCHA; PTPCHA:=OUTPUT ITEM 000150' 254000 000227' JRST PTPXIT 000151' 402000 000147* PTPS2: CLEARM PTPCHA; PUNCH FEED 000152' 710140 000151* DATAO PTP,PTPCHA 000153' 377000 000134* SOSG PTPCNT; COUNT FEED LINES 000154' 621000 200000 TLZ IOS,PTPFED; PTPFED:=0 000155' 202000 000064* MOVEM IOS,PTPIOS; PTPIOS:=C(IOS) 000156' 200000 000060* MOVE IOS,PTPSIO ;RESTORE IOS 000157' 254520 000000* JEN @PTPCHL ;DISMISS 000160' 661000 400000 PTP5: TLO IOS,IODISC; IODISC:=1 000161' 254000 000227' JRST PTPXIT 000162' 550100 000000* PTPBN: HRRZ TAC1,PTPADR; TAC1:=BUFFER ADDRESS 000163' 260140 000000* PUSHJ PDP,CKS12; TAC:=CALCULATE CHECKSUM 000164' 270100 000162* ADD TAC1, PTPADR 000165' 502060 000002 HLLM TAC,@TAC1; STORE CHECKSUM IN LEFT HALF OF FIRST BU 000166' 254000 000113' JRST PTPB1 PTPSER - PAPER TAPE PUNCH SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 8 PTPSER MAC 24-APR-78 13:00 8-15-65 000167' 260140 000000* PTPADV: PUSHJ PDP,ADVBFE; ADVANCE BUFFER 000170' 254000 000222' JRST PTPDSC; EXIT1. NEXT BUFFER EMPTY 000171' 602000 000040 TRNE IOS,IOCON; CONTINUOUS? (IOCON=1?) 000172' 254000 000222' JRST PTPDSC; YES 000173' 623000 000001 TLZE IOS,IOW; IN A WAIT? IOW:=0 000174' 260140 000000* PUSHJ PDP,SETIOD; YES. IOWS:=1 000175' 621000 000004 PTP9: TLZ IOS,IOFST; IOFST:=0 000176' 200040 000164* MOVE TAC,PTPADR 000177' 350000 000001 AOS TAC 000200' 542040 000140* HRRM TAC,PTPPTR; PTPPTR18-35:=C(PTPADR18-25)+1 000201' 550220 000001 HRRZ ITEM,@TAC; ITEM:=WORD COUNT 000202' 135100 000215' LDB TAC1,PTP91 ;PICK UP BYTE SIZE 000203' 260140 000000* PUSHJ PDP,ITMCT1; ITEM:=WORD COUNT*[36/BYTE SIZE] 000204' 202200 000136* MOVEM ITEM,PTPCTR; PTPCTR:=C(ITEM) 000205' 322200 000167' JUMPE ITEM,PTPADV ; IS ITEM COUNT=0? 000206' 603000 004000 TLNE IOS,PTPBIN; BINARY PUNCH MODE? 000207' 254000 000162' JRST PTPBN; YES 000210' 607000 002000 TLNN IOS,PTPIB ;IMAGE BINARY? 000211' 254000 000136' JRST PTP1 000212' 350000 000200* AOS PTPPTR ;YES 000213' 370000 000204* SOS PTPCTR 000214' 254000 000113' JRST PTPB1 000215' 300600 000212* PTP91: POINT 6,PTPPTR,11 000216' 201240 000377 PTPP1: MOVEI DAT,RUBOUT; PTPCHA:=RUBOUT 000217' 202240 000152* MOVEM DAT,PTPCHA 000220' 661000 020000 TLO IOS,PTPEOL; PTPEOL:=1 000221' 254000 000227' JRST PTPXIT 000222' 260140 000004' PTPDSC: PUSHJ PDP,PTPREL ;CLEAR PTP CONTROL REG AND CONSO BITS 000223' 620000 010000 TRZ IOS,IOACT; IOACT:=0 000224' 661000 000004 TLO IOS,IOFST; IOFST:=1 000225' 623000 000001 TLZE IOS,IOW; IN A WAIT? IOW:=0 000226' 260140 000174* PUSHJ PDP,SETIOD; YES. IOSW:=1 000227' 202000 000155* PTPXIT: MOVEM IOS,PTPIOS; PTPIOS:=C(IOS) 000230' 254000 000000* JRST PTPRET; NO END, NO ERRORS DETECTED PROGRAM BREAK IS 000231 9K CORE USED PTPSER - PAPER TAPE PUNCH SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 9 PTPSER MAC 24-APR-78 13:00 SYMBOL TABLE A 000000 INT AC1 000015 INT AC2 000016 INT AC3 000017 INT ADVBFE 000167' EXT AL 000001 INT ASSCON 400000 INT ASSPRG 200000 INT B 000014 INT BUFPNT 000012 INT BUFWRD 000013 INT CKS12 000163' EXT CLOSB 002000 INT CLSIN 000002 INT CLSOUT 000001 INT D 000017 INT DAT 000005 INT DCL 000001 INT DCW 020000 INT DDI 000007 INT DDO 000006 INT DDTMEM 000037 INT DDTSYM 000036 INT DEN 000004 INT DEVADR 000007 INT DEVBUF 000006 INT DEVCHR 000001 INT DEVCTR 000011 INT DEVDAT 000006 INT DEVIAD 000007 INT DEVIOS 000002 INT DEVLOG 000005 INT DEVMOD 000004 INT DEVNAM 000000 INT DEVOAD 000010 INT DEVPTR 000010 INT DEVSER 000003 INT DGF 000012 INT DIN 000003 INT DLK 000005 INT DOU 000002 INT DR 000016 INT DRL 000000 INT DSI 000011 INT DSO 000010 INT DTW 040000 INT DVAVAL 000040 INT DVCDR 100000 INT DVDIR 000004 INT DVDIRI 400000 INT DVIN 000002 INT DVLPT 040000 INT PTPSER - PAPER TAPE PUNCH SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 9-1 PTPSER MAC 24-APR-78 13:00 SYMBOL TABLE DVMTA 000020 INT DVOUT 000001 INT DVTTY 000010 INT ENTRB 020000 INT FORMFD 000214 HORTAB 000211 I 000010 INT IB 000013 INT IBUFB 200000 INT ILLINP 000003' EXT INITB 400000 INT INPB 010000 INT IO 000020 INT IOACT 010000 INT IOBEG 000002 INT IOBKTL 040000 INT IOCON 000040 INT IODEND 020000 INT IODERR 200000 INT IODISC 400000 INT IODONE 400000 INT IODTER 100000 INT IOEND 000040 INT IOFST 000004 INT IOIMPM 400000 INT IONRCK 000100 INT IORDEL 000100 INT IORET 000020 INT IOS 000000 INT IOSET 000063' EXT IOSTRT 000010 INT IOUSE 400000 INT IOW 000001 INT IOWC 000020 INT IOWS 400000 INT ITEM 000004 INT ITMCT1 000203' EXT JBFADR 000000 INT JBFCTR 000002 INT JBFPTR 000001 INT JBUF 000005 INT JDAT 000011 INT JERR 002000 INT JIOW 100000 INT JNA 004000 INT LOOKB 040000 INT MTW 010000 INT NULL 000200 OBUFB 100000 INT OUT 000007' EXT OUTPB 004000 INT PDP 000003 INT PICHN 000100 INT PTPSER - PAPER TAPE PUNCH SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 9-2 PTPSER MAC 24-APR-78 13:00 SYMBOL TABLE PIOMOD 000141' EXT PROG 000007 INT PTP 000100 SPD PTP1 000136' PTP3 000121' PTP5 000160' PTP6 000147' PTP9 000175' PTP91 000215' PTPADR 000176' EXT PTPADV 000167' PTPB0 000073' PTPB1 000113' PTPBIN 004000 PTPBN 000162' PTPBUF 000000 EXT PTPCHA 000217' EXT PTPCHL 000157' EXT PTPCHN 000033' EXT PTPCHR 000000 EXT PTPCLS 000007' PTPCNT 000153' EXT PTPCTR 000213' EXT PTPDAT 000062' EXT PTPDB 000000 EXT PTPDON 000010 PTPDSC 000222' PTPDSP 000000' ENT PTPEOL 020000 PTPFDN 000200 PTPFED 200000 PTPIB 002000 PTPIN1 000026' PTPIN2 000036' PTPINI 000004' INT PTPINT 000052' INT PTPIOS 000227' EXT PTPMOD 000000 EXT PTPOUT 000024' PTPP1 000216' PTPPTR 000215' EXT PTPREL 000004' PTPRET 000230' EXT PTPS2 000151' PTPSAV 000061' EXT PTPSEQ 010000 PTPSER 000000 EXT PTPSIO 000156' EXT PTPSSQ 040000 PTPXIT 000227' RUBOUT 000377 RUN 200000 INT RUNABL 204000 INT PTPSER - PAPER TAPE PUNCH SERVICE ROUTINE MACRO 10 05:51 24-APR-78 PAGE 9-3 PTPSER MAC 24-APR-78 13:00 SYMBOL TABLE SETBYT 000047' EXT SETIOD 000226' EXT TAC 000001 INT TAC1 000002 INT TEM 000010 INT TTYATC 020000 INT TTYUSE 010000 INT USRMOD 010000 INT UUO 000014 INT VERTAB 000213 WAIT1 000023' EXT RRRRRRRRRRRR UUU UUU NNN NNN CCCCCCCCCCCC SSSSSSSSSSSS SSSSSSSSSSSS RRRRRRRRRRRR UUU UUU NNN NNN CCCCCCCCCCCC SSSSSSSSSSSS SSSSSSSSSSSS RRRRRRRRRRRR UUU UUU NNN NNN CCCCCCCCCCCC SSSSSSSSSSSS SSSSSSSSSSSS RRR RRR UUU UUU NNN NNN CCC SSS SSS RRR RRR UUU UUU NNN NNN CCC SSS SSS RRR RRR UUU UUU NNN NNN CCC SSS SSS RRR RRR UUU UUU NNNNNN NNN CCC SSS SSS RRR RRR UUU UUU NNNNNN NNN CCC SSS SSS RRR RRR UUU UUU NNNNNN NNN CCC SSS SSS RRRRRRRRRRRR UUU UUU NNN NNN NNN CCC SSSSSSSSS SSSSSSSSS RRRRRRRRRRRR UUU UUU NNN NNN NNN CCC SSSSSSSSS SSSSSSSSS RRRRRRRRRRRR UUU UUU NNN NNN NNN CCC SSSSSSSSS SSSSSSSSS RRR RRR UUU UUU NNN NNNNNN CCC SSS SSS RRR RRR UUU UUU NNN NNNNNN CCC SSS SSS RRR RRR UUU UUU NNN NNNNNN CCC SSS SSS RRR RRR UUU UUU NNN NNN CCC SSS SSS RRR RRR UUU UUU NNN NNN CCC SSS SSS RRR RRR UUU UUU NNN NNN CCC SSS SSS RRR RRR UUUUUUUUUUUUUUU NNN NNN CCCCCCCCCCCC SSSSSSSSSSSS SSSSSSSSSSSS RRR RRR UUUUUUUUUUUUUUU NNN NNN CCCCCCCCCCCC SSSSSSSSSSSS SSSSSSSSSSSS RRR RRR UUUUUUUUUUUUUUU NNN NNN CCCCCCCCCCCC SSSSSSSSSSSS SSSSSSSSSSSS LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT Request created: 24-April-1978 05:53:58 File: DSKB0 :RUNCSS.LST [8,296] Created: 20-April-1967 05:51:00 Printed: 24-April-1978 05:53:36 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:1665 File will be deleted after printing RUNCSS - RUN CONTROL SUBROUTINES MACRO 10 05:51 24-APR-78 PAGE 1 S MAC 24-APR-78 21:40 T. HASTINGS 8-16-65 XLIST LIST TITLE RUNCSS - RUN CONTROL SUBROUTINES SUBTTL T. HASTINGS 8-16-65 EXTERNAL APRCHN,APRCHL,CH6SAC,JBTADR,JOB,JOBAC,JOBDAT,JOBN EXTERNAL JOBPDP,USRDDT,USRPDP,JOBDDT EXTERNAL IORELS,JBTSTS,JOBADR,JOBCDP,JOBPC,JOBREL,JOBSA,JOBSYM EXTERNAL MESPNT,QUANT1,JOBDAC,TTYSTR,STOPU,SCHEDF EXTERNAL UXIT,IOCOMP,DCREQ,DCAVAL,DTREQ,DTAVAL,MTREQ,MTAVAL EXTERNAL CH1XIT,CH2XIT,CH3XIT,CH4XIT,CH5XIT,CH6XIT,CH7XIT EXTERNAL JOBFF,MJOBPD,JOBPDL,IOCOMP,PJOBN,USRLO,USRLO1,USRHI EXTERNAL TTYFNU,RSCHED RUNCSS - RUN CONTROL SUBROUTINES MACRO 10 05:51 24-APR-78 PAGE 2 RUNCSS MAC 24-APR-78 01:40 T. HASTINGS 8-16-65 ;EXIT UUO ROUTINE INTERNAL EXIT EXTERNAL IORELS,TTYFNU,MESPNT,IOKILL 000000' 260140 000000* EXIT: PUSHJ PDP,IORELS ;RELEASE ALL DEVICES 000001' 260140 000000* PUSHJ PDP,TTYFNU 000002' 201100 000005' MOVEI TAC1,EXMESS 000003' 260140 000000* PUSHJ PDP,MESPNT 000004' 254000 000030' JRST HOLD ;STOP THIS USER IMMEDIATELY 000005' EXMESS: ASCIZ / 000005' 064250 554222 EXIT 000006' 520321 200000 / ;RESET UUO ROUTINE INTERNAL RESET 000007' 260140 000000* RESET: PUSHJ PDP,IOKILL ;RELEASE ALL DEVICES 000010' 260140 000227' PUSHJ PDP,SETUSR ;CLEAR PART OF JOB DATA AREA 000011' 254000 000000* JRST UXIT ;AND RETURN TO CALLER RUNCSS - RUN CONTROL SUBROUTINES MACRO 10 05:51 24-APR-78 PAGE 3 RUNCSS MAC 24-APR-78 01:40 T. HASTINGS 8-16-65 ;COMMON ERROR HANDLING ROUTINES ;DEVDAT MUST BE SET UP TO TTY DDB ON WHICH TO PRINT ERROR MESSAGE ;HERE ON ERROR DETECTED AT INTERRUPT SERVICE LEVEL ;0(PDP) CONTAINS ADR. OF DEVICE DATA BLOCK CAUSING ERROR ;CALL MOVE TAC, PI CHANNEL NO DETECTING ERROR ; JRST HOLDI INTERNAL HOLDI,HOLD,HOLDI1 000012' 200103 000000 HOLDI: MOVE TAC1, 0(PDP) ;DEVICE DATA BLOCK 000013' 135200 000265' LDB ITEM, [POINT 9, DEVCHR(TAC1), 8] ;GET JOB NUMBER 000014' 261140 000001 HOLDI1: PUSH PDP, TAC ;SAVE PI CHANNEL NO. 000015' 260140 000032' PUSHJ PDP, HOLDSB 000016' 262140 000001 POP PDP, TAC 000017' 254001 000020' JRST CHNTAB(TAC) ;GO RESTORE ACS AND DISMISS CHANNEL 000020' 254000 000000* CHNTAB: JRST RSCHED ;INTERRUPT ON CLOCK CHANNEL,RESCHEDULE 000021' 254000 000000* JRST CH1XIT 000022' 254000 000000* JRST CH2XIT 000023' 254000 000000* JRST CH3XIT 000024' 254000 000000* JRST CH4XIT 000025' 254000 000000* JRST CH5XIT 000026' 254000 000000* JRST CH6XIT 000027' 254000 000000* JRST CH7XIT ;HERE ON ERROR FROM UUO LEVEL. ERROR MESSAGE ALREADY IN TTY BUFFER ;DAT=BYTE POINTER TO END OF MESSAGE; DEVDAT=TTY DEV. DATA BLOCK 000030' 200200 000000* HOLD: MOVE ITEM, JOB ;NO. OF THIS JOB 000031' 260140 000242' PUSHJ PDP,WAIT1 ;WAIT UNTIL TTY FINISHED 000032' 260140 000000* HOLDSB: PUSHJ PDP,CRLF 000033' 260140 000000* PUSHJ PDP, TTYSTR ;START UP TTY TO PRINT ERROR MESSAGE EXTERNAL CRLF ;ROUTINE TO STOP USER AND FLAG AS ERROR STOP ;CALL: MOVE ITEM, JOB NUMBER ; PUSHJ PDP,ESTOP INTERNAL ESTOP 000034' 205040 002000 ESTOP: MOVSI TAC,JERR ;SET ERROR BIT IN JOB STATUS 000035' 436044 000000* IORM TAC, JBTSTS(ITEM) 000036' 254000 000070' JRST STOP1 RUNCSS - RUN CONTROL SUBROUTINES MACRO 10 05:51 24-APR-78 PAGE 4 RUNCSS MAC 24-APR-78 01:40 T. HASTINGS 8-16-65 ,BLOCK TRANSFER PROGRAM OVER LOADER INTERNAL LDRBLT EXTERNAL USRREL 000002 PGADR=2 ;AC CONTAINING BEGINNING OF PROGRAM(LOA 000037' 260140 000000* LDRBLT: PUSHJ PDP,IORELS 000040' 550051 000002 HRRZ TAC, PGADR (JDAT) ;ADD OFFSET TO SYMBOL TABLE P 000041' 402011 000002 SETZM PGADR(JDAT) ;THEN CLEAR SO SYSMAK WILL STILL WORK 000042' 550240 000007 HRRZ DAT,PROG 000043' 270240 000001 ADD DAT,TAC 000044' 272045 000000* ADDM TAC,JOBSYM(DAT) 000045' 504240 000007 HRL DAT,PROG 000046' 554045 000000* HLRZ TAC,JOBSA(DAT) 000047' 313040 000000* CAMLE TAC,USRREL ;IS HIGHEST DESTINATION STILL IN USER A 000050' 200040 000047* MOVE TAC,USRREL ;NO. MAKE SURE IT IS. 000051' 207000 000005 MOVSS DAT 000052' 270040 000005 ADD TAC,DAT 000053' 270240 000266' ADD DAT,[XWD 30,30] ;MOVE PROGRAM DOWN 000054' 251241 000000 BLT DAT,(TAC) 000055' 200051 000000* MOVE TAC,JOBDDT(JDAT) moveM TAC,USRDDT 000056' 260140 000227' PUSHJ PDP,SETUSR 000057' 260140 000001* PUSHJ PDP,TTYFNU 000060' 201100 000063' MOVEI TAC1,LDRMES 000061' 260140 000003* PUSHJ PDP,MESPNT 000062' 254000 000030' JRST HOLD 000063' LDRMES: ASCIZ / 000063' 064251 447602 LOADER FINISHED 000064' 422132 220214 000065' 446351 151620 000066' 426101 505000 / RUNCSS - RUN CONTROL SUBROUTINES MACRO 10 05:51 24-APR-78 PAGE 5 RUNCSS MAC 24-APR-78 01:40 T. HASTINGS 8-16-65 INTERNAL STOP1, STOP2, CONT1, START1 000200 PION=200 000400 PIOFF=400 ;ROUTINE TO PUT CURRENT JOB IN IO WAIT ;ROUTINE TO STOP CURRENT JOB ;MAY BE CALLED FROM ANY LEVEL ;CALL; PUSHJ PDP,STOP0 ; RETURN ;RETURN HERE IMMEDIATELY, IF CALLED FRO ;PRIORITY CHANNEL THAN CLOCK. OTHERWISE RETURN WHEN JOB IS RUNABLE AG INTERNAL STOP0 000067' 200200 000030* STOP0: MOVE ITEM, JOB ;CURRENT JOB NUMBER ;ROUTINE TO STOP ANY JOB FROM BEING SCHEDULED ;CALL: ; MOVE ITEM, JOB NUMBER ; PUSHJ PDP, STOP1 ; EXIT ;RETURN HERE IMMEDIATELY, IF CALLED FROM HIGHER ;PRIORITY CHANNEL THAN CLOCK, OTHERWISE RETURN WHEN JOB IC RUNABLE ;CALLED WHEN CONTROL C TYPED OR ON ERROR MESSAGES 000070' 205040 200000 STOP1: MOVSI TAC, RUN 000071' 700600 000400 CONO PI, PIOFF ;DONE AT INTERUPT LEVEL HIGHER THAN DT 000072' 616044 000035* TDNN TAC, JBTSTS(ITEM) ;IS RUN BIT ON IN JOB STATUS 000073' 254000 000104' JRST STOPA ;NO 000074' 413044 000072* ANDCAB TAC, JBTSTS(ITEM) ;YES, SO CLEAR IT 000075' 700600 000200 CONO PI, PION 000076' 603040 040000 TLNE TAC, DTW ;WAITING TO USE DECTAPE 000077' 370000 000000* SOS DTREQ ;YES, REDUCE REQUEST COUNT 000100' 603040 020000 TLNE TAC, DCW ;DATA CONTROL 000101' 370000 000000* SOS DCREQ 000102' 603040 010000 TLNE TAC,MTW ;MAG TAPE 000103' 370000 000000* SOS MTREQ 000104' 700600 000200 STOPA: CONO PI, PION ;MAKE SURE PI ON 000105' 332000 000000* SKIPE SCHEDF ;IS CLOCK IN THE MIDDLE OF SCHEDULING 000106' 254000 000111' JRST STOP2 ;YES, MAKE SURE THIS JOB WONT RUN 000107' 312200 000067* CAME ITEM, JOB ;NO, IS THIS JOB CURRENT USER 000110' 263140 000000 POPJ PDP, ;NO ;YES, MAKE CLOCK RESCHEDULE ;ROUTINE TO CAUSE CLOCK TO RESCHEDULE ;CALL : ; PUSHJ PDP, STOP2 ; EXIT ;RETURN WHEN JOB RUNABLE AGAIN EXTERNAL PICLK 000111' 700600 000400 STOP2: CONO PI, PIOFF ;PREVENT CLOCK INTERRUPT RUNCSS - RUN CONTROL SUBROUTINES MACRO 10 05:51 24-APR-78 PAGE 5-1 RUNCSS MAC 24-APR-78 01:40 T. HASTINGS 8-16-65 000112' 476000 000000* SETOM STOPU ;SET FLAG FOR CLOCK ROUTINE 000113' 700600 000000* CONO PI,PICLK ;REQUEST CLOCK INTERRUPT AND TURN PI ON ;CLOCK WILL TRAP IMMEDIATELY IF AT UUO 000114' 263140 000000 POPJ PDP, ;RETURN HERE WHEN JOB RUNABLE AGAIN RUNCSS - RUN CONTROL SUBROUTINES MACRO 10 05:51 24-APR-78 PAGE 6 RUNCSS MAC 24-APR-78 01:40 T. HASTINGS 8-16-65 ;SUBROUTINE TO SETUP A MONITOR JOB TO BE RUN ;JOB MUST HAVE CORE ASSIGNED ;CALL: MOVE ITEM, JOB NUMBER ; HRRI TAC1, ADDRESS OF MONITOR JOB(A SUBROUTINE) ; HRLI TAC1, RETURN ADDRESS WHEN JOB FINISHED ; PUSHJ PDP, MONJOB ; RETURN IMMEDIATELY IF CALLED FROM CLOCK LEV OR HIGHER ;ALL ACS WILL BE SAVED FOR THE MONITOR JOB INTERNAL MONJOB EXTERNAL JOBDAC,JOBDHI,JOBPDP,MJOBPD,JOBPDL,JBTADR 000115' 261140 000002 MONJOB: PUSH PDP, TAC1 ;SAVE ARG. 000116' 550444 000000* HRRZ JDAT,JBTADR(ITEM) ;ADDRESS OF JOBS DATA AREA 000117' 201111 000000* MOVEI TAC1, JOBDAC(JDAT) ;SAVE 0-17 IN DUMP ACS 000120' 251111 000000* BLT TAC1, JOBDHI(JDAT) ;IN JOB DATA AREA 000121' 205100 000000* MOVSI TAC1,MJOBPD ;SET UP PD LIST IN JOB DATA AREA 000122' 541111 000000* HRRI TAC1, JOBPDL(JDAT) 000123' 514043 000000 HlrZ TAC, (PDP) ;WITH RETURN AS FIRST ITEM 000124' 261100 000001 PUSH TAC1, TAC 000125' 201051 000117* MOVEI TAC, JOBDAC(JDAT) 000126' 202101 000003 MOVEM TAC1,PDP(TAC) 000127' 262140 000002 POP PDP, TAC1 ;SET TO RUN 000130' 405100 777777 ANDI TAC1, 777777 ;FALL INTO STARTU ;ROUTINE TO START A JOB AND LEAVE CONSOLE IN COMMAND MODE ;CALL: MOVE TAC1, START PC ; MOVE ITEM, JOB NUMBER ; PUSHJ PDP, STARTU ; RETURN IMMEDIATELY INTERNAL STARTM EXTERNAL TTYURC 000131' 260140 000137' STARTM: PUSHJ PDP, START1 000132' 254000 000000* JRST TTYURC ;START WITH TTY IN USER MODE INTERNAL STARTU EXTERNAL TTYSET 000133' 260140 000137' STARTU: PUSHJ PDP,START1 000134' 254000 000000* JRST TTYSET ;SET SCANNER TO CALL SETRUN WHEN ;CR-LF AND INITIALIZE TTY INTERNAL CONTM EXTERNAL TTYURC 000135' 254000 000132* CONTM: JRST TTYURC RUNCSS - RUN CONTROL SUBROUTINES MACRO 10 05:51 24-APR-78 PAGE 6-1 RUNCSS MAC 24-APR-78 01:40 T. HASTINGS 8-16-65 ;ROUTINE TO CONTINUE A JOB FROM COMMAND MODE ;CALL: MOVE ITEM, JOB NUMBER ; PUSHJ PDP, CONTU ; RETURN IMMEDIATELY INTERNAL CONTU EXTERNAL TTYURC 000136' 254000 000135* CONTU: JRST TTYURC ;SET SCANNER TO CALL SETRUN WHEN CR-LF RUNCSS - RUN CONTROL SUBROUTINES MACRO 10 05:51 24-APR-78 PAGE 7 RUNCSS MAC 24-APR-78 01:40 T. HASTINGS 8-16-65 ;ROUTINE TO SET JOB STATE TO BE SCHEDULED TO RUN ;WITH SPECIFIED STARTING ADDRESS INCLUDING PC FLAGS ;CALL: MOVE TAC1,STARTING PC ; MOVE ITEM, JOB NUMBER ; MOVE JDAT, ADDRESS OF JOBS DATA AREA(THERE MUST BE ONE) ; PUSHJ PDP, START1 ; EXIT RETURN HERE IMMEDIATELY 000137' 200051 000000* START1: MOVE TAC,JOBPC(JDAT) ;GET OLD PC 000140' 202111 000137* MOVEM TAC1,JOBPC(JDAT) ;STORE NEW PC 000141' 603100 010000 TLNE TAC1,USRMOD ;IS NEW PC IN USER AREA? 000142' 603040 010000 TLNE TAC,USRMOD ;YES, WAS OLD PC IN USER AREA 000143' 254000 000147' JRST START2 ;YES,DUMP ACS ARE HIS 000144' 205111 000000 MOVSI TAC1,(JDAT) ;NO, UUO ACS ARE HIS 000145' 541111 000125* HRRI TAC1,JOBDAC(JDAT) ;MOVE THEM TO DUMP ACS 000146' 251111 000120* BLT TAC1,JOBDHI(JDAT) 000147' 205100 172000 START2: MOVSI TAC1,JERR+DCW+DTW+MTW+JIOW ;CLEAR WAIT BITS 000150' 412044 000074* ANDCAM TAC, JBTSTS(ITEM) ;IN JOB STATUS WORD ;ROUTINE TO CONTINUE ANY JOB AT CURRENT PC ;CALL: ; MOVE ITEM, JOB NUMBER ; PUSHJ PDP, CONT1 ; EXIT RETURN IMMEDIATELY 000151' 263140 000000 CONT1: POPJ PDP, RUNCSS - RUN CONTROL SUBROUTINES MACRO 10 05:51 24-APR-78 PAGE 8 RUNCSS MAC 24-APR-78 01:40 T. HASTINGS 8-16-65 ;ROUTINE TO SET JOB STATUS RUN BIT ;CALL: MOVE ITEM,JOB NUMBER ; PUSHJ PDP,SETRUN INTERNAL SETRUN 000152' 205040 200000 SETRUN: MOVSI TAC,RUN 000153' 437044 000150* IORB TAC,JBTSTS(ITEM) 000154' 607040 020000 TLNN TAC,DCW ;IS JOB WAITING FOR DATA CONTROL? 000155' 254000 000160' JRST CONT2 ;NO 000156' 357000 000101* AOSG DCREQ ;YES, INCREMENT REQUEST COUNT 000157' 476000 000000* SETOM DCAVAL ;AND SET DC AS AVAIL IF NOT IN USE 000160' 607040 040000 CONT2: TLNN TAC,DTW ;DECTAPE? 000161' 254000 000164' JRST CONT3 ;NO 000162' 357000 000077* AOSG DTREQ 000163' 476000 000000* SETOM DTAVAL 000164' 607040 010000 CONT3: TLNN TAC,MTW ;MAG TAPE? 000165' 254000 000170' JRST CONT4 000166' 357000 000103* AOSG MTREQ 000167' 476000 000000* SETOM MTAVAL 000170' 603040 400000 CONT4: TLNE TAC,IOWS ;IO WAIT SATISFIED? 000171' 350000 000000* AOS IOCOMP ;YES 000172' 201040 000000* MOVEI TAC,QUANT1 ;SET TIME TO RUN FOR STRAIGHT QUEUE COM 000173' 542044 000153* HRRM TAC,JBTSTS(ITEM) ;RESPONSE IS FINISHED 000174' 332000 000107* SKIPE JOB ;IS NULL JOB RUNNING? 000175' 263140 000000 POPJ PDP, ;NO 000176' 254000 000111' JRST STOP2 ;YES, RESCHEDULE RUNCSS - RUN CONTROL SUBROUTINES MACRO 10 05:51 24-APR-78 PAGE 9 RUNCSS MAC 24-APR-78 01:40 T. HASTINGS 8-16-65 ,ROUTINE TO INIATE A WAIT FOR MAG TAPE. DECTAPE, AND DATA CONTROL AC INTERNAL MTWAIT 000177' 261140 000002 MTWAIT: PUSH PDP,TAC1 000200' 515100 010000 HRLZI TAC1,MTW 000201' 261140 000001 DVWAIT: PUSH PDP, TAC 000202' 200040 000174* MOVE TAC,JOB 000203' 436101 000173* IORM TAC1,JBTSTS(TAC) 000204' 260140 000111' PUSHJ PDP,STOP2 000205' 262140 000001 POP PDP,TAC 000206' 262140 000002 POP PDP,TAC1 000207' 263140 000000 POPJ PDP, INTERNAL DTWAIT 000210' 261140 000002 DTWAIT: PUSH PDP,TAC1 000211' 515100 040000 HRLZI TAC1,DTW 000212' 254000 000201' JRST DVWAIT INTERNAL DCWAIT 000213' 261140 000002 DCWAIT: PUSH PDP,TAC1 000214' 515100 020000 HRLZI TAC1,DCW 000215' 254000 000201' JRST DVWAIT INTERNAL DVWAIT RUNCSS - RUN CONTROL SUBROUTINES MACRO 10 05:51 24-APR-78 PAGE 10 RUNCSS MAC 24-APR-78 01:40 T. HASTINGS 8-16-65 ,DEC 06 00 EX JOB L PT PRE 02 SETIOD ,H.R. MORSE 64-12-26 ,CALLING SEQUENCE , PUSHJ PDP, SETIOD , EXIT ALWAYS RETURNS HERE ,SETS THEBIT (IOWS:=1) IN THE JOB STATUS WORD (JBTSTS) ,INFORMING THE SYSTEM THAT AN I/O WAIT HAS BEEN COMPLETED ,AND THE JOB IS READY TO RUN AGAIN. ,MONITOR INTERFACE , STORAGE: 6 , SYMBOLS SET/USED: , ACCUMULATORS: DEVDAT U TAC S/U , PDP U TAC1 S/U , DEVICE DATA BLOCK: DEVCHR U , SYSTEM DATA STORAGE: JBTSTS S/U , JOB STATUS WORD: IOWS S INTERNAL SETIOD 000216' 350000 000171* SETIOD: AOS IOCOMP 000217' 135040 000000* LDB TAC,PJOBN 000220' 205100 400000 MOVSI TAC1, IOWS ;SET IO-WAIT SATISFIED BIT 000221' 436101 000203* IORM TAC1, JBTSTS(TAC) 000222' 205100 100000 MOVSI TAC1, JIOW ;CLEAR JOB IO-WAIT BIT 000223' 412101 000221* ANDCAM TAC1, JBTSTS(TAC) 000224' 336000 000202* SKIPN JOB ;IS NULL JOB RUNNING 000225' 254000 000111' JRST STOP2 ;YES, FORCE CLOCK TO RE-SCHED 000226' 263140 000000 POPJ PDP,; RETURN RUNCSS - RUN CONTROL SUBROUTINES MACRO 10 05:51 24-APR-78 PAGE 11 RUNCSS MAC 24-APR-78 01:40 T. HASTINGS 8-16-65 ;SET CURRENT JOB AREA IN SYSTEM AREA INTERNAL SETUSR 000227' 541040 000000* SETUSR: HRRI TAC,USRLO1 000230' 505040 000000* HRLI TAC,USRLO 000231' 402000 000230* SETZM USRLO 000232' 251040 000000* BLT TAC,USRHI 000233' 205040 000121* MOVSI TAC,MJOBPD 000234' 541040 000122* HRRI TAC,JOBPDL 000235' 202040 000000* MOVEM TAC,USRPDP 000236' 200440 000000* MOVE JDAT,JOBDAT 000237' 544051 000046* HLR TAC,JOBSA(JDAT) 000240' 542051 000000* HRRM TAC,JOBFF(JDAT) 000241' 263140 000000 POPJ PDP, RUNCSS - RUN CONTROL SUBROUTINES MACRO 10 05:51 24-APR-78 PAGE 12 RUNCSS MAC 24-APR-78 01:40 T. HASTINGS 8-16-65 ,DEC 06 00 EX COM L PT PRE 02 WAIT1,WSYNC ,H.R. MORSE 64-12-26 ,CALLING SEQUENCE , PUSHJ PDP, WAIT1 , EXIT ALWAYS RETURNS HERE ,IF THE DEVICE IS INACTIVE (IOACT=0), RETURNS TO EXIT. OTHERWISE, SET ,IOW:=1 AND ENTERS WAIT UNLESS IOACT BECOMES ZERO BEFORE THE ,JUMP IS MADE, IN WHICH CHASEIT SETS IOW:=0 AND RETURNS TO EXIT. ,ON LEAVING THE WAIT STAT, RETURNS TO EXIT. ,THIS ROUTINE PREVENTS THE STATE IOACT=0 AND IOW=1 FROM OCCURING ,CALLING SEQUENCE , PUSHJ PDP, WSYNC , EXIT ALWAYS RETURNS HERE ,SETS IOW:=1 AND ENTERS WAIT ROUTINE. RETURNS TO EXIT WHEN IOACT=0. ,MONITOR INTERFACE , STORAGE: 13 , ROUTINES CALLED: WAIT , SYMBOLS SET/USED: , ACCUMULATORS: DEVDAT U PDP U , IOS S/U TAC S/U , DEVICE DATA BLOCK: DEVIOS S/U , IO STATUS WORD: IOACT U , IOW S/U RUNCSS - RUN CONTROL SUBROUTINES MACRO 10 05:51 24-APR-78 PAGE 13 RUNCSS MAC 24-APR-78 01:40 T. HASTINGS 8-16-65 INTERN WAIT1, WSYNC ; WAIT1 WAITS UNTIL DEVICE IS COMPLETELY INACTIVE BEFORE RETURNING 000242' 200006 000002 WAIT1: MOVE IOS,DEVIOS(DEVDAT) 000243' 606000 010000 TRNN IOS, IOACT ;IS DEVICE ACTIVE? (IOACT=1?) 000244' 263140 000000 POPJ PDP,; RETURN 000245' 260140 000247' PUSHJ PDP,WSYNC; WAIT 000246' 254000 000242' JRST WAIT1 ;WSYNC IS CALLED TO WAIT UNTIL SETIOD IS CALLED BY INTERRUPT SERVICE ;IE UNTIL CURRENT BUFFER ACTIVITY IS COMPLETED ;DEVDAT MUST BE SET UP 000200 PION=200 000400 PIOFF=400 WSYNC: REPEAT 0,< PUSH PDP, TAC ;MUST THESE BE SAVED? PUSH PDP, TAC1 PUSH PDP, DAT> 000247' 205000 000001 MOVSI IOS, IOW 000250' 205640 100000 MOVSI AC1, JIOW 000251' 200700 000224* MOVE AC2, JOB 000252' 201740 010000 MOVEI AC3, IOACT 000253' 700600 000400 CONO PI, PIOFF ;TURN PI OFF 000254' 616746 000002 TDNN AC3, DEVIOS(DEVDAT) ;IS THE DEVICE ACTIVE? 000255' 254000 000262' JRST WSYNC1 ;NO 000256' 436006 000002 IORM IOS, DEVIOS(DEVDAT) ;YES, SET DEVICE IO-WAIT BIT 000257' 436656 000223* IORM AC1, JBTSTS(AC2) ;AND JOB IO-WAIT BIT 000260' 700600 000200 CONO PI, PION ;TURN PI ON 000261' 260140 000111' PUSHJ PDP, STOP2 ;STOP THIS USER BY FORCING CL ;RETURN WHEN IO-WAIT FINISHED 000262' 700600 000200 WSYNC1: CONO PI, PION 000263' 413006 000002 ANDCAB IOS, DEVIOS(DEVDAT) ;CLEAR DEVICE IO-WAIT BIT REPEAT 0,< POP PDP, DAT POP PDP, TAC1 POP PDP, TAC> 000264' 263140 000000 POPJ PDP, END, NO ERRORS DETECTED PROGRAM BREAK IS 000267 9K CORE USED RUNCSS - RUN CONTROL SUBROUTINES MACRO 10 05:51 24-APR-78 PAGE 14 RUNCSS MAC 24-APR-78 01:40 SYMBOL TABLE A 000000 INT AC1 000015 INT AC2 000016 INT AC3 000017 INT AL 000001 INT APRCHL 000000 EXT APRCHN 000000 EXT ASSCON 400000 INT ASSPRG 200000 INT B 000014 INT BUFPNT 000012 INT BUFWRD 000013 INT CH1XIT 000021' EXT CH2XIT 000022' EXT CH3XIT 000023' EXT CH4XIT 000024' EXT CH5XIT 000025' EXT CH6SAC 000000 EXT CH6XIT 000026' EXT CH7XIT 000027' EXT CHNTAB 000020' CLOSB 002000 INT CLSIN 000002 INT CLSOUT 000001 INT CONT1 000151' INT CONT2 000160' CONT3 000164' CONT4 000170' CONTM 000135' INT CONTU 000136' INT CRLF 000032' EXT D 000017 INT DAT 000005 INT DCAVAL 000157' EXT DCL 000001 INT DCREQ 000156' EXT DCW 020000 INT DCWAIT 000213' INT DDI 000007 INT DDO 000006 INT DDTMEM 000037 INT DDTSYM 000036 INT DEN 000004 INT DEVADR 000007 INT DEVBUF 000006 INT DEVCHR 000001 INT DEVCTR 000011 INT DEVDAT 000006 INT DEVIAD 000007 INT DEVIOS 000002 INT DEVLOG 000005 INT DEVMOD 000004 INT RUNCSS - RUN CONTROL SUBROUTINES MACRO 10 05:51 24-APR-78 PAGE 14-1 RUNCSS MAC 24-APR-78 01:40 SYMBOL TABLE DEVNAM 000000 INT DEVOAD 000010 INT DEVPTR 000010 INT DEVSER 000003 INT DGF 000012 INT DIN 000003 INT DLK 000005 INT DOU 000002 INT DR 000016 INT DRL 000000 INT DSI 000011 INT DSO 000010 INT DTAVAL 000163' EXT DTREQ 000162' EXT DTW 040000 INT DTWAIT 000210' INT DVAVAL 000040 INT DVCDR 100000 INT DVDIR 000004 INT DVDIRI 400000 INT DVIN 000002 INT DVLPT 040000 INT DVMTA 000020 INT DVOUT 000001 INT DVTTY 000010 INT DVWAIT 000201' INT ENTRB 020000 INT ESTOP 000034' INT EXIT 000000' INT EXMESS 000005' HOLD 000030' INT HOLDI 000012' INT HOLDI1 000014' INT HOLDSB 000032' I 000010 INT IB 000013 INT IBUFB 200000 INT INITB 400000 INT INPB 010000 INT IO 000020 INT IOACT 010000 INT IOBEG 000002 INT IOBKTL 040000 INT IOCOMP 000216' EXT IOCON 000040 INT IODEND 020000 INT IODERR 200000 INT IODISC 400000 INT IODONE 400000 INT IODTER 100000 INT IOEND 000040 INT IOFST 000004 INT IOIMPM 400000 INT RUNCSS - RUN CONTROL SUBROUTINES MACRO 10 05:51 24-APR-78 PAGE 14-2 RUNCSS MAC 24-APR-78 01:40 SYMBOL TABLE IOKILL 000007' EXT IONRCK 000100 INT IORDEL 000100 INT IORELS 000037' EXT IORET 000020 INT IOS 000000 INT IOSTRT 000010 INT IOUSE 400000 INT IOW 000001 INT IOWC 000020 INT IOWS 400000 INT ITEM 000004 INT JBFADR 000000 INT JBFCTR 000002 INT JBFPTR 000001 INT JBTADR 000116' EXT JBTSTS 000257' EXT JBUF 000005 INT JDAT 000011 INT JERR 002000 INT JIOW 100000 INT JNA 004000 INT JOB 000251' EXT JOBAC 000000 EXT JOBADR 000000 EXT JOBCDP 000000 EXT JOBDAC 000145' EXT JOBDAT 000236' EXT JOBDDT 000055' EXT JOBDHI 000146' EXT JOBFF 000240' EXT JOBN 000000 EXT JOBPC 000140' EXT JOBPDL 000234' EXT JOBPDP 000000 EXT JOBREL 000000 EXT JOBSA 000237' EXT JOBSYM 000044' EXT LDRBLT 000037' INT LDRMES 000063' LOOKB 040000 INT MESPNT 000061' EXT MJOBPD 000233' EXT MONJOB 000115' INT MTAVAL 000167' EXT MTREQ 000166' EXT MTW 010000 INT MTWAIT 000177' INT OBUFB 100000 INT OUTPB 004000 INT PDP 000003 INT PGADR 000002 PI 000004 SPD RUNCSS - RUN CONTROL SUBROUTINES MACRO 10 05:51 24-APR-78 PAGE 14-3 RUNCSS MAC 24-APR-78 01:40 SYMBOL TABLE PICHN 000100 INT PICLK 000113' EXT PIOFF 000400 PION 000200 PJOBN 000217' EXT PROG 000007 INT QUANT1 000172' EXT RESET 000007' INT RSCHED 000020' EXT RUN 200000 INT RUNABL 204000 INT SCHEDF 000105' EXT SETIOD 000216' INT SETRUN 000152' INT SETUSR 000227' INT START1 000137' INT START2 000147' STARTM 000131' INT STARTU 000133' INT STOP0 000067' INT STOP1 000070' INT STOP2 000111' INT STOPA 000104' STOPU 000112' EXT TAC 000001 INT TAC1 000002 INT TEM 000010 INT TTYATC 020000 INT TTYFNU 000057' EXT TTYSET 000134' EXT TTYSTR 000033' EXT TTYURC 000136' EXT TTYUSE 010000 INT USRDDT 000000 EXT USRHI 000232' EXT USRLO 000231' EXT USRLO1 000227' EXT USRMOD 010000 INT USRPDP 000235' EXT USRREL 000050' EXT UUO 000014 INT UXIT 000011' EXT WAIT1 000242' INT WSYNC 000247' INT WSYNC1 000262' SSSSSSSSSSSS AAAAAAAAA VVV VVV GGGGGGGGGGGG EEEEEEEEEEEEEEE TTTTTTTTTTTTTTT SSSSSSSSSSSS AAAAAAAAA VVV VVV GGGGGGGGGGGG EEEEEEEEEEEEEEE TTTTTTTTTTTTTTT SSSSSSSSSSSS AAAAAAAAA VVV VVV GGGGGGGGGGGG EEEEEEEEEEEEEEE TTTTTTTTTTTTTTT SSS AAA AAA VVV VVV GGG EEE TTT SSS AAA AAA VVV VVV GGG EEE TTT SSS AAA AAA VVV VVV GGG EEE TTT SSS AAA AAA VVV VVV GGG EEE TTT SSS AAA AAA VVV VVV GGG EEE TTT SSS AAA AAA VVV VVV GGG EEE TTT SSSSSSSSS AAA AAA VVV VVV GGG EEEEEEEEEEEE TTT SSSSSSSSS AAA AAA VVV VVV GGG EEEEEEEEEEEE TTT SSSSSSSSS AAA AAA VVV VVV GGG EEEEEEEEEEEE TTT SSS AAAAAAAAAAAAAAA VVV VVV GGG GGGGGGGGG EEE TTT SSS AAAAAAAAAAAAAAA VVV VVV GGG GGGGGGGGG EEE TTT SSS AAAAAAAAAAAAAAA VVV VVV GGG GGGGGGGGG EEE TTT SSS AAA AAA VVV VVV GGG GGG EEE TTT SSS AAA AAA VVV VVV GGG GGG EEE TTT SSS AAA AAA VVV VVV GGG GGG EEE TTT SSSSSSSSSSSS AAA AAA VVV GGGGGGGGG EEEEEEEEEEEEEEE TTT SSSSSSSSSSSS AAA AAA VVV GGGGGGGGG EEEEEEEEEEEEEEE TTT SSSSSSSSSSSS AAA AAA VVV GGGGGGGGG EEEEEEEEEEEEEEE TTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT Request created: 24-April-1978 05:53:58 File: DSKB0 :SAVGET.LST [8,296] Created: 20-April-1967 05:51:00 Printed: 24-April-1978 05:53:37 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:1646 File will be deleted after printing SAVGET- SAVE AND GET COMMANDS MACRO 10 05:51 24-APR-78 PAGE 1 S MAC 24-APR-78 21:40 T.HASTINGS 8-4-64 XLIST LIST TITLE SAVGET- SAVE AND GET COMMANDS SUBTTL T.HASTINGS 8-4-64 ;ROUTINE TO SET UP SAVE-GET DEVICE FILE-NAME TABLE ;CALLED BY COMMAND SETUP ROUTINES AND SAVE GET INTERNAL SGSET EXTERNAL CTEXT1,SETUSR,HOLD,MONJOB EXTERNAL CONMES,NOTENF,CPOPJ1 000000' 261140 000002 SGSET: PUSH PDP, TAC1 ;SAVE STARTTING ADDRESS(SAVJOB OR GETJOB) 000001' 260140 000000* PUSHJ PDP, CTEXT1 ;GET DEVICE NAME FROM COMMAND STRING 000002' 322100 000012' JUMPE TAC1,SGSET1 000003' 202107 000017 MOVEM TAC1, 17(PROG) ;SAVE IN UUO AC AREA 000004' 260140 000001* PUSHJ PDP, CTEXT1 ;GET FILE NAME FROM COMMAND STRING 000005' 322100 000012' JUMPE TAC1,SGSET1 000006' 202107 000014 MOVEM TAC1, 14(PROG) 000007' 262140 000002 POP PDP, TAC1 ;SCHEDULE MONITOR JOB 000010' 260140 000000* PUSHJ PDP, MONJOB 000011' 254000 000000* JRST CPOPJ1 ;SUPPRESS CR-LF PRINTED BY COMINI 000012' 262140 000002 SGSET1: POP PDP,TAC1 000013' 254000 000000* JRST NOTENF SAVGET- SAVE AND GET COMMANDS MACRO 10 05:51 24-APR-78 PAGE 2 SAVGET MAC 24-APR-78 00:32 T.HASTINGS 8-4-64 ;THIS JOB SAVES A JOB AREA ON RETRIEVABLE STORAGE ;THIS JOB RUNS IN EXEC. MODE AND CALLS IO ROUTINES DIRECTLY ;NO ATTTEMPT IS MADE TO SAVE STATUS OF IO DEVICES, JOBPDP, OR ACS ;IN FACT THE ONLY USEFUL THING WHICH MAY BE DONE WITH A JOB AREA ;AFTER IT HAS BEEN SAVED IS TO START EXECUTION OVER AT THE STARTING ;ADDRESS INTERNAL SAVJOB EXTERNAL USRPDP, OUT, USRREL,JOBPFI,JOB41,JOBS41,THSDAT 000012 T=BUFPNT ;TEMPORARY ACS 000013 T1=BUFWRD 000014' 265040 000076' SAVJOB: JSP TAC, SG1 ;SET UP ACS AND ASSIGN DEVICE 000015' 200551 000000* MOVE T1,JOB41(JDAT) ;SAVE USR UUOI HANDLING JSR 000016' 202551 000000* MOVEM T1,JOBS41(JDAT) 000017' 200540 000000* MOVE T1,THSDAT ;SET DATE IN THIRD WORD 000020' 202547 000016 MOVEM T1,16(PROG) 000021' 260152 000004 PUSHJ PDP, DEN(T) ;ENTER FILE NAME IN DIRECTORY 000022' 254000 000031' JRST SAV4 ;DIRECTORY FULL 000023' 260140 000134' PUSHJ PDP, SETLST ;SET DUMP COMMAND LIST IN USER ARE 000024' 260140 000000* PUSHJ PDP, OUT ;DO AN OUTPUT 000025' 265040 000054' JSP TAC,SG2 000026' 452370 220246 ASCIZ /JOB SAVED 000027' 406550 542032 000030' 050000 000000 / 000031' 265040 000054' SAV4: JSP TAC,SG2 000032' 422232 242606 ASCIZ /DIRECTORY FULL 000033' 522372 254500 000034' 432531 446032 000035' 050000 000000 / SAVGET- SAVE AND GET COMMANDS MACRO 10 05:51 24-APR-78 PAGE 3 SAVGET MAC 24-APR-78 00:32 T.HASTINGS 8-4-64 ;THIS JOB GETS A JOB AREA FROM RETRIEVABLE DEVICE ;THIS JOB RUNS IN EXEC. MODE AND CALLS IO ROUTINES DIRECTLY ;NO ATTEMPT IS MADE TO RESTORE STATUS OF IO DEVICES, PC, OR ACS ;JOBPC IS SET TO STARTING ADDRESS OF JOB ;CORE MUST ALREADY HAVE BEEN ASSIGNED AND THE FOLLOWING LOC. SETUP IN ;JOB DATA AREA: ;JOBPDP, JOBREL INTERNAL GETJOB EXTERNAL USRREL, IN 000036' 265040 000076' GETJOB: JSP TAC, SG1 ;SETUP ACS AND ASSIGN DEVICE 000037' 260152 000005 PUSHJ PDP, DLK(T) ;LOOKUP FILE NAME IN DIRECTORY 000040' 254000 000047' JRST GET2 ;NOT FOUND 000041' 260140 000134' PUSHJ PDP, SETLST ;SET DUMP COMMAND LIST IN USER ARE 000042' 260140 000000* PUSHJ PDP, IN ;DO AN INPUT 000043' 265040 000054' JSP TAC,SG2 000044' 452370 220246 ASCIZ /JOB SETUP 000045' 426512 550032 000046' 050000 000000 / 000047' 265040 000054' GET2: JSP TAC,SG2 000050' 432231 442500 ASCIZ /FILE NOT FOUND 000051' 472372 420214 000052' 476531 642032 000053' 050000 000000 / SAVGET- SAVE AND GET COMMANDS MACRO 10 05:51 24-APR-78 PAGE 4 SAVGET MAC 24-APR-78 00:32 T.HASTINGS 8-4-64 ;ROUTINE TERMINATES SAVJOB AND GETJOB ;CLOSE, RELEASE, CHECK FOR ERRORS AND PRINT MESSAGE AND STOP JOB ;ADDRESS OF MESSAGE IN AC TAC EXTERNAL RELEA2, SETUSR, TTYFNU, WAIT1,JOBS41,JOB41 740000 ERRORS=1B18+1B19+1B20+1B21 ;ERRORS CHECKED FOR IN IO TRANSMISSION 000054' 260140 000000* SG2: PUSHJ PDP, WAIT1 000055' 602000 740000 TRNE IOS, ERRORS ;ANY ERRORS? 000056' 254000 000070' JRST SG2A ;AN ERROR 000057' 261140 000001 PUSH PDP,TAC ;SAVE PRINT ADDRESS 000060' 260140 000000* PUSHJ PDP,RELEA2 ;RELEASE DEVICE 000061' 260140 000000* PUSHJ PDP,SETUSR ;SETUP COPY OF JOB AREA STORED IN SYSTE 000062' 200051 000016* MOVE TAC,JOBS41(JDAT) ;RESTORE USER LOCATION 41 000063' 202051 000015* MOVEM TAC,JOB41(JDAT) 000064' 260140 000000* SG4: PUSHJ PDP,TTYFNU ;FIND TELETYPE 000065' 262140 000001 POP PDP,TAC ;RESTORE PRINT MESSAGE ADDRESS 000066' 260140 000000* SG5: PUSHJ PDP,CONMES 000067' 254000 000000* JRST HOLD 000070' 265040 000064' SG2A: JSP TAC,SG4 000071' 522450 147246 ASCIZ /TRANSMISSION ERROR 000072' 466232 351622 000073' 476344 042644 000074' 512372 206424 / 000075' 000000 000000 SAVGET- SAVE AND GET COMMANDS MACRO 10 05:51 24-APR-78 PAGE 5 SAVGET MAC 24-APR-78 00:32 T.HASTINGS 8-4-64 ;ROUTINE CALED BY SAVJOB AND GETJOBTO SETUP ACS ;AND ASSIGN DEVICE ;CALL JSP TAC, SG1 EXTERNAL JOBDAT, JOB, UINIT1, WAIT1, JOBADR, RESET 000076' 505140 777763 SG1: HRLI PDP, -15 ;SET UP PD LIST IN UUO ACS 000077' 541147 777777 HRRI PDP, -1(PROG) 000100' 261140 000001 PUSH PDP, TAC ;SAVE RETURN ADDRESS 000101' 260140 000000* PUSHJ PDP, RESET ;DO RESET UUO 000102' 201600 000017 MOVEI UUO, D ;DUMP MODE 000103' 200047 000017 MOVE TAC, 17(PROG) ;DEVICE NAME 000104' 201340 000000 MOVEI PROG, 0 ;PRETEND RELOC. IS 0 000105' 260140 000000* PUSHJ PDP, UINIT1 ;ASSIGN DEVICE 000106' 000000 000000 0 ;IBF,OBF 000107' 254000 000124' JRST SGERRA ;NOT AVAILABLE 000110' 200006 000002 MOVE IOS, DEVIOS(DEVDAT) ;SETUP IOS 000111' 201600 000014 MOVEI UUO,14 ;REL.ADDRESS OF 4 WORD DIRECTORY ENTRY 000112' 200340 000000* MOVE PROG, JOBADR ;RESTORE PROG 000113' 205500 445560 MOVSI T,445560 ;SET FILE EXTENSION TO DMP 000114' 202507 000015 MOVEM T, 15(PROG) 000115' 402007 000016 SETZM 16(PROG) 000116' 210540 000000* MOVN T1,USRREL ;SET NEG. WORD COUNT FROM JOBREL 000117' 271540 000000* ADDI T1,JOBPFI ;DONT DUMP LOC. 0-JOBPFI 000120' 505540 000117* HRLI T1,JOBPFI 000121' 206547 000017 MOVSM T1,17(PROG) ;STORE IN 4TH WORD OF DICECTORY 000122' 200506 000003 MOVE T, DEVSER(DEVDAT) ;SETUP FOR DOING ENTRY OF LOO 000123' 263140 000000 POPJ PDP, 000124' 201040 000127' SGERRA: MOVEI TAC,SGNAVL 000125' 261140 000001 PUSH PDP,TAC 000126' 254000 000066' JRST SG5 000127' 422132 644606 SGNAVL: ASCIZ /DEVICE NOT AVAILABLE 000130' 425011 647650 000131' 202032 640622 000132' 462030 246212 000133' 064240 000000 / SAVGET- SAVE AND GET COMMANDS MACRO 10 05:51 24-APR-78 PAGE 6 SAVGET MAC 24-APR-78 00:32 T.HASTINGS 8-4-64 ;ROUTINE TO SET DUMP MODE COMMAND LIST IN USER AREA EXTERNAL ANYRDX,RELEA2,TTYFNU 000134' 200507 000017 SETLST: MOVE T, 17(PROG) ;4TH WORD FROM DIRECTORY 000135' 202507 000016 MOVEM T, 16(PROG) 000136' 402007 000017 SETZM 17(PROG) 000137' 574500 000012 HLRE T, T 000140' 270500 000116* ADD T, USRREL 000141' 321500 000144' JUMPL T, NOROOM 000142' 201600 000016 MOVEI UUO,16 ;DUMP MODE 000143' 263140 000000 POPJ PDP, 000144' 260140 000060* NOROOM: PUSHJ PDP,RELEA2 000145' 260140 000064* PUSHJ PDP,TTYFNU 000146' 255000 000000 JFCL 000147' 574047 000016 HLRE TAC, 16(PROG) ;PRINT NO. OF BLOCKS NEEDED 000150' 213000 000001 MOVNS TAC 000151' 242040 777766 LSH TAC, -12 000152' 271040 000001 ADDI TAC, 1 000153' 201100 000012 MOVEI TAC1, 12 000154' 260140 000000* PUSHJ PDP, ANYRDX 000155' 265040 000066' JSP TAC,SG5 000156' 201431 320204 ASCIZ / 1K BLOCKS OF CORE NEEDED 000157' 462370 345646 000160' 202370 620206 000161' 476450 520234 000162' 426130 442610 000163' 064240 000000 / END, NO ERRORS DETECTED PROGRAM BREAK IS 000164 9K CORE USED SAVGET- SAVE AND GET COMMANDS MACRO 10 05:51 24-APR-78 PAGE 7 SAVGET MAC 24-APR-78 00:32 SYMBOL TABLE A 000000 INT AC1 000015 INT AC2 000016 INT AC3 000017 INT AL 000001 INT ANYRDX 000154' EXT ASSCON 400000 INT ASSPRG 200000 INT B 000014 INT BUFPNT 000012 INT BUFWRD 000013 INT CLOSB 002000 INT CLSIN 000002 INT CLSOUT 000001 INT CONMES 000066' EXT CPOPJ1 000011' EXT CTEXT1 000004' EXT D 000017 INT DAT 000005 INT DCL 000001 INT DCW 020000 INT DDI 000007 INT DDO 000006 INT DDTMEM 000037 INT DDTSYM 000036 INT DEN 000004 INT DEVADR 000007 INT DEVBUF 000006 INT DEVCHR 000001 INT DEVCTR 000011 INT DEVDAT 000006 INT DEVIAD 000007 INT DEVIOS 000002 INT DEVLOG 000005 INT DEVMOD 000004 INT DEVNAM 000000 INT DEVOAD 000010 INT DEVPTR 000010 INT DEVSER 000003 INT DGF 000012 INT DIN 000003 INT DLK 000005 INT DOU 000002 INT DR 000016 INT DRL 000000 INT DSI 000011 INT DSO 000010 INT DTW 040000 INT DVAVAL 000040 INT DVCDR 100000 INT DVDIR 000004 INT DVDIRI 400000 INT SAVGET- SAVE AND GET COMMANDS MACRO 10 05:51 24-APR-78 PAGE 7-1 SAVGET MAC 24-APR-78 00:32 SYMBOL TABLE DVIN 000002 INT DVLPT 040000 INT DVMTA 000020 INT DVOUT 000001 INT DVTTY 000010 INT ENTRB 020000 INT ERRORS 740000 GET2 000047' GETJOB 000036' INT HOLD 000067' EXT I 000010 INT IB 000013 INT IBUFB 200000 INT IN 000042' EXT INITB 400000 INT INPB 010000 INT IO 000020 INT IOACT 010000 INT IOBEG 000002 INT IOBKTL 040000 INT IOCON 000040 INT IODEND 020000 INT IODERR 200000 INT IODISC 400000 INT IODONE 400000 INT IODTER 100000 INT IOEND 000040 INT IOFST 000004 INT IOIMPM 400000 INT IONRCK 000100 INT IORDEL 000100 INT IORET 000020 INT IOS 000000 INT IOSTRT 000010 INT IOUSE 400000 INT IOW 000001 INT IOWC 000020 INT IOWS 400000 INT ITEM 000004 INT JBFADR 000000 INT JBFCTR 000002 INT JBFPTR 000001 INT JBUF 000005 INT JDAT 000011 INT JERR 002000 INT JIOW 100000 INT JNA 004000 INT JOB 000000 EXT JOB41 000063' EXT JOBADR 000112' EXT JOBDAT 000000 EXT JOBPFI 000120' EXT JOBS41 000062' EXT SAVGET- SAVE AND GET COMMANDS MACRO 10 05:51 24-APR-78 PAGE 7-2 SAVGET MAC 24-APR-78 00:32 SYMBOL TABLE LOOKB 040000 INT MONJOB 000010' EXT MTW 010000 INT NOROOM 000144' NOTENF 000013' EXT OBUFB 100000 INT OUT 000024' EXT OUTPB 004000 INT PDP 000003 INT PICHN 000100 INT PROG 000007 INT RELEA2 000144' EXT RESET 000101' EXT RUN 200000 INT RUNABL 204000 INT SAV4 000031' SAVJOB 000014' INT SETLST 000134' SETUSR 000061' EXT SG1 000076' SG2 000054' SG2A 000070' SG4 000064' SG5 000066' SGERRA 000124' SGNAVL 000127' SGSET 000000' INT SGSET1 000012' T 000012 T1 000013 TAC 000001 INT TAC1 000002 INT TEM 000010 INT THSDAT 000017' EXT TTYATC 020000 INT TTYFNU 000145' EXT TTYUSE 010000 INT UINIT1 000105' EXT USRMOD 010000 INT USRPDP 000000 EXT USRREL 000140' EXT UUO 000014 INT WAIT1 000054' EXT SSSSSSSSSSSS CCCCCCCCCCCC NNN NNN SSSSSSSSSSSS EEEEEEEEEEEEEEE RRRRRRRRRRRR SSSSSSSSSSSS CCCCCCCCCCCC NNN NNN SSSSSSSSSSSS EEEEEEEEEEEEEEE RRRRRRRRRRRR SSSSSSSSSSSS CCCCCCCCCCCC NNN NNN SSSSSSSSSSSS EEEEEEEEEEEEEEE RRRRRRRRRRRR SSS CCC NNN NNN SSS EEE RRR RRR SSS CCC NNN NNN SSS EEE RRR RRR SSS CCC NNN NNN SSS EEE RRR RRR SSS CCC NNNNNN NNN SSS EEE RRR RRR SSS CCC NNNNNN NNN SSS EEE RRR RRR SSS CCC NNNNNN NNN SSS EEE RRR RRR SSSSSSSSS CCC NNN NNN NNN SSSSSSSSS EEEEEEEEEEEE RRRRRRRRRRRR SSSSSSSSS CCC NNN NNN NNN SSSSSSSSS EEEEEEEEEEEE RRRRRRRRRRRR SSSSSSSSS CCC NNN NNN NNN SSSSSSSSS EEEEEEEEEEEE RRRRRRRRRRRR SSS CCC NNN NNNNNN SSS EEE RRR RRR SSS CCC NNN NNNNNN SSS EEE RRR RRR SSS CCC NNN NNNNNN SSS EEE RRR RRR SSS CCC NNN NNN SSS EEE RRR RRR SSS CCC NNN NNN SSS EEE RRR RRR SSS CCC NNN NNN SSS EEE RRR RRR SSSSSSSSSSSS CCCCCCCCCCCC NNN NNN SSSSSSSSSSSS EEEEEEEEEEEEEEE RRR RRR SSSSSSSSSSSS CCCCCCCCCCCC NNN NNN SSSSSSSSSSSS EEEEEEEEEEEEEEE RRR RRR SSSSSSSSSSSS CCCCCCCCCCCC NNN NNN SSSSSSSSSSSS EEEEEEEEEEEEEEE RRR RRR LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT Request created: 24-April-1978 05:53:58 File: DSKB0 :SCNSER.LST [8,296] Created: 20-April-1967 05:51:00 Printed: 24-April-1978 05:53:37 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:1637 File will be deleted after printing SCNSER - SCANNER SERVICE MACRO 10 05:51 24-APR-78 PAGE 1 S MAC 24-APR-78 21:40 TOM EGGERS 8-9-65 XLIST LIST TITLE SCNSER - SCANNER SERVICE SUBTTL TOM EGGERS 8-9-65 EXTERN SETIOD, ADVBFE, ADVBFF, JBTADR, CLRBYT,STTYB1 EXTERN SCNCHN, COMCNT, SCNSAV, SCNRET,STOP1, DEVLST,TTYTAB INTERN SCNINI ;TTYPTR=DEVOAD+1 ;TTYCTR=TTYPTR+1 ;TTYBUF=TTYCTR+1 000200 PION=200 ;TURN PI ON BIT 000400 PIOFF=400 ;TURN PI OFF BIT ;SCNDDB ;NUMBER OF DEVICE DATA BLOCKS ;STTYBF7 ;SIZE OF TELETYPE BUFFER 000010 CHREC=TEM ;AC FOR CHARACTER 000004 VPOS=ITEM ;VERITICAL POSITION OF TELETYPE 000005 HPOS=VPOS+1 ; HORIZONTAL POS. 000006 DDB=DEVDAT 000002 LINE=TAC1 ;AC THAT HOLDS SCANNER LINE NUMBER 040000 SYNC=40000 ;1 WHEN A BUFFER IS READY TO TRANSFER 010000 DETH=10000 ;1 IF TTY DETACHED AND OUTPUT WAITING 020000 NIO=20000 ;STOP ALL IO 000010 TOUT=IO ;OUTPUT IN PROGRESS 040000 NCERR=IOBKTL ;CHARACTER LOST ON TYPE IN 000177 DCHAR=177 ;DELETE CHARACTER 100000 ECHOF=IODTER ;ECHO FAILURE OCCURED 001000 TPMON=1000 ;IO IS FROM MONITOR 002000 SP=2000 ;SPECIAL TELETYPE CHAR. IS BEING INTERPRETED 100000 DDTM=100000 ;DDT MODE 004000 T35=4000 ;TELETYPE HAS TAB,FF,VT,ETC. MECHANISM 000100 USRB=100 ;TURN OFF TPMON WHEN OUTPUT IS FINISHED 020000 USRBC=20000 ;RT HALF MONITOR IOS WORD. REMAIN IN MONITOR MODE INTERNAL SCNINT,CTYINT,TTYUSR,TTYURC ENTRY TTYDSP EXTERN TSCNLN,TCONLN,MTTYLN,CPOPJ1 EXTERN CPOPJ EXTERN FSNCHN,SCNCHL,OUT,PUUOAC,PJOBN,PUNIT,PIOMOD INTERNAL DDTGT,DDTRL,DDTIN,DDTOUT,TTYFND,TTYSTR,TTYFNU EXTERNAL WAIT1,WSYNC,CLRBYT,JOB,CLDS,CLEN,TTYBFE,TTYBM1 EXTERNAL UXIT,ADRCK,TTYSAV,DEVPHY,DEVOPR EXTERNAL TTYCTR,TTYPTR,TTYBUF,TTYLST,MLTTYL,SETRUN,STTYBF,TTY0DB 000000' 270706 000007 PHPOS: POINT 7,DEVIAD(DEVDAT),12 ;POINTER HORIZONTAL POSITION 000001' 270506 000010 PVPOS: POINT 5,DEVOAD(DEVDAT),12 ;POINTER VERITICAL POSITION 000002' 340706 000010 PLASTC: POINT 7,DEVOAD(DEVDAT),7 ;POINTER TO LAST CHARACTER OU 000003' 360606 000007 PSCHAR: POINT 6,DEVIAD(DEVDAT),5 ;POINTER TO ^C OR ^O 000004' 321102 000000* TPCJOBN: POINT 9,TTYTAB(LINE),9 ;CONSOLE NUMBER FOR TTY SCNSER - SCANNER SERVICE MACRO 10 05:51 24-APR-78 PAGE 2 SCNSER MAC 24-APR-78 03:04 TOM EGGERS 8-9-65 000005' 201040 100000 SCNINI: MOVEI TAC,100000 000006' 712200 000000 CONO TTY,0 ;SHUT DOWN CONSOLE TTY 000007' 730200 004010 CONO DCSA,4010 ;RELEASE XMITTER,RECEIVER 000010' 730300 001000 CONSZ DCSA, 1000 000011' 730200 004000 CONO DCSA, 4000 000012' 730300 000010 CONSZ DCSA, 10 000013' 730440 000002 DATAI DCSB, TAC1 000014' 367040 000010' SOJG TAC,.-4 000015' 201040 000000* MOVEI TAC,SCNCHN 000016' 712201 003600 CONO TTY,3600(TAC) ;CLEAR TTY, ASSIGN CHANNEL 000017' 730200 000000* CONO DCSA,FSNCHN ;ASSIGN INTERRUPT CHANNELS 000020' 205040 000000* MOVSI TAC,MLTTYL ;NO. OF TTY DEV. DATA BLOCKS 000021' 205240 010000 MOVSI DAT,TTYUSE ;TTY DDB IN USE BIT 000022' 205000 001004 MOVSI IOS,TPMON+IOFST ;VIRGIN STATUS 000023' 201300 000000* MOVEI DDB,TTYLST ;FIRST TTY DDB ADDRESS 000024' 616246 000004 SCN1: TDNN DAT,DEVMOD(DDB) ;IS THIS TTY DDB IN USE? 000025' 402006 000000 SETZM DEVNAM(DDB) ;NO. SET NAME TO 0 000026' 202006 000002 MOVEM IOS,DEVIOS(DDB) 000027' 402006 000000* SETZM TTYSAV(DDB) ;CLEAR USER MODE TTY STATUS WORD 000030' 412246 000004 ANDCAM DAT,DEVMOD(DDB) ;CLEAR USE BIT 000031' 554306 000003 HLRZ DDB,DEVSER(DDB) ;GET NEXT TTY DDB 000032' 253040 000024' AOBJN TAC,SCN1 000033' 205040 000000* MOVSI TAC,MTTYLN ;SET DDB USE BITS FROM TRANSLATOR TABLE 000034' 205100 010000 MOVSI TAC1,TTYUSE 000035' 332301 000004* SCN2: SKIPE DDB,TTYTAB(TAC) 000036' 436106 000004 IORM TAC1,DEVMOD(DDB) 000037' 253040 000035' AOBJN TAC,SCN2 000040' 263140 000000 POPJ PDP, SCNSER - SCANNER SERVICE MACRO 10 05:51 24-APR-78 PAGE 3 SCNSER MAC 24-APR-78 03:04 TOM EGGERS 8-9-65 ;ROUTINE TO RETURN TTY TO VIRGIN STATE ;CALL: MOVE DDB, ADDRESS OF DEVICE DATA BLOCK ; PUSHJ PDP,TTYKIL INTERNAL TTYKIL 000041' 200040 001142' TTYKIL: MOVE TAC,[XWD TTYUSE+TTYATC,ASSCON+ASSPRG] 000042' 412046 000004 ANDCAM TAC,DEVMOD(DEVDAT) ;CLEAR DDB USE BIT 000043' 402006 000000 SETZM DEVNAM(DEVDAT) ;CLEAR PHYSICAL NAME 000044' 402006 000005 SETZM DEVLOG(DEVDAT) ;CLEAR LOGICAL NAME 000045' 254000 000052' JRST TTYDT1 ;ROUTINE TO DETACH TTY FROM JOB ;CALL: MOVE DEVDAT,ADDRESS OF TTY DDB TO BE DETACHED INTERNAL TTYDET 000046' 200046 000004 TTYDET: MOVE TAC,DEVMOD(DEVDAT) 000047' 627040 020000 TLZN TAC,TTYATC ;WAS TTY ATTACHED? 000050' 254000 000041' JRST TTYKIL ;NO, SO RETURN DDB TO POOL 000051' 202046 000004 MOVEM TAC,DEVMOD(DEVDAT) ;YES, JUST CLEAR ATTACH BIT 000052' 135100 000000* TTYDT1: LDB LINE,PUNIT 000053' 414002 000035* SETM TTYTAB(LINE) 000054' 263140 000000 POPJ PDP, 000055' 000000 000000 CCHAR: 0 ;HOLDS CHARACTER FOR CONSOLE TELETYPE ;CONTROL C - GO BACK TO MONITOR ;CONTROL 0 - SUPPRESS OUTPUT 000056' 334040 001143' TTYURC: SKIPA TAC,[XWD USRB,USRBC] ;START JOB BUT REMAIN IN MON1 000057' 205040 000100 TTYUSR: MOVSI TAC,USRB ;CAUSE TTY TO GO INTO 000060' 436046 000002 IORM TAC,DEVIOS(DEVDAT) ;USER MODE WHEN 000061' 263140 000000 POPJ PDP, ;OUTPUT FINISHES INTERNAL TTYSET 000062' 205040 000004 TTYSET: MOVSI TAC,IOFST ;INITIALIZE USER TTY IOS WORD 000063' 202046 000027* MOVEM TAC,TTYSAV(DEVDAT) ;FOR START COMMAND 000064' 254000 000057' JRST TTYUSR SCNSER - SCANNER SERVICE MACRO 10 05:51 24-APR-78 PAGE 4 SCNSER MAC 24-APR-78 03:04 TOM EGGERS 8-9-65 ;ROUTINE TO ATTACH TTY TO A JOB ;CALL: MOVE DEVDAT,ADDRESS OF TTY DEVICE DATA BLOCK ; MOVE ITEM,JOB NUMBER ; PUSHJ PDP,TTYATT ; ERROR ;DEVDAT=DDB ADR OF OTHER TTY ;IF ANOTHER ALREADY IS ATTACHED. ; OK RETURN ;DEVDAT, DAT AND TRANSLATOR TABLE SET INTERNAL TTYATT 000065' 135100 000052* TTYATT: LDB LINE,PUNIT ;LINE NO. OF THIS TTY 000066' 201300 000023* MOVEI DEVDAT,TTYLST ;SEARCH FOR DDB THAT IS ATTACHED 000067' 334000 000000 SKIPA 000070' 554306 000003 TTYAT2: HLRZ DEVDAT,DEVSER(DEVDAT) 000071' 322300 000115' JUMPE DEVDAT,TTYAT4 000072' 135040 000000* LDB TAC,PJOBN ;JOB NUMBER 000073' 500046 000004 HLL TAC,DEVMOD(DEVDAT) ;ATTACH AND USE BITS 000074' 607040 000010 TLNN TAC,DVTTY ;IS THIS STILL A TTY DDB? 000075' 254000 000115' JRST TTYAT4 ;NO, THIS MUST BE IJOB 000076' 306201 000000 CAIN ITEM,(TAC) ;JOB NUMBER THE ONE TO ATTACH? 000077' 607040 010000 TLNN TAC,TTYUSE ;YES, IS IT THE DETACHED ONE? 000100' 254000 000070' JRST TTYAT2 ;NO, KEEP LOOKING 000101' 603040 020000 TLNE TAC,TTYATC ;IS SOME TTY ALREADY ATTACHED? 000102' 263140 000000 POPJ PDP, ;YES, ERROR RETURN WITH DEVDAT SET 000103' 261140 000006 PUSH PDP,DEVDAT ;SAVE NEW DDB ADDRESS 000104' 200302 000053* MOVE DEVDAT,TTYTAB(LINE) 000105' 200046 000004 MOVE TAC,DEVMOD(DEVDAT) 000106' 260140 000046' PUSHJ PDP,TTYDET ;DETACH DDB FROM TTY 000107' 262140 000006 POP PDP,DEVDAT 000110' 137200 000004' TTYAT3: DPB ITEM,TPCJOBN ;STORE ATTACHED JOB NO. 000111' 137200 000072* DPB ITEM,PJOBN ;SET JOB NUMBER 000112' 205040 020000 MOVSI TAC,TTYATC ;SET ATTACHED BIT 000113' 260140 000247' PUSHJ PDP,TTYDAT ;SETUP OUTPUT BYTE 000114' 254000 000410' JRST SCNIN ;GO INITIALIZE DDB 000115' 200302 000104* TTYAT4: MOVE DEVDAT,TTYTAB(LINE) ;RESTORE OLD DDB ADDRESS 000116' 254000 000110' JRST TTYAT3 SCNSER - SCANNER SERVICE MACRO 10 05:51 24-APR-78 PAGE 5 SCNSER MAC 24-APR-78 03:04 TOM EGGERS 8-9-65 ;ROUTINE TO SETUP AC DEVDAT TO ADDRESS OF TTY WHICH HAS TYPED A COMMA ;AC DAT TO BYTE POINTER TO OUTPUT BUFFER FOR COMMAND MESSAGE ;AC TAC TO BYTE POINTER TO COMMAND STRING ;AC ITEM TO JOB NUNMBER TTY IS ATTACHED TO ;CALL: PUSHJ PDP,TTYCOM ; NONE FOUND ; ACS SETUP INTERNAL TTYCOM 000117' 205100 000033* TTYCOM: MOVSI LINE,MTTYLN 000120' 331002 000115* SKIPL TTYTAB(LINE) 000121' 253100 000120' AOBJN LINE,.-1 000122' 327100 000000* JUMPG LINE,CPOPJ 000123' 205300 400000 MOVSI DEVDAT,400000 000124' 413302 000120* ANDCAB DEVDAT,TTYTAB(LINE) 000125' 205240 440700 MOVSI DAT,440700 000126' 271246 000000* ADDI DAT,TTYBUF(DEVDAT) 000127' 200040 000005 MOVE TAC,DAT ;FALL INTO TTYJOB ;ROUTINE TO RETURN IN AC ITEM JOB NUMBER WHICH TTY IS ATTACHED TO ;CALL: MOVE DEVDAT,ADDRESS OF TTY DEVICE DATA BLOCK INTERNAL TTYJOB 000130' 135100 000065* TTYJOB: LDB LINE, PUNIT 000131' 135200 000004' LDB ITEM,TPCJOBN 000132' 254000 000000* JRST CPOPJ1 SCNSER - SCANNER SERVICE MACRO 10 05:51 24-APR-78 PAGE 6 SCNSER MAC 24-APR-78 03:04 TOM EGGERS 8-9-65 ;TELETYPE SCANNER UUO ROUTINES ;FOR DDT ;DDTGT WAITS FOR OUTPUT TO COMPLETE THEN PUTS ;TELETYPE INTO DDT MODE 000133' 260140 000230' DDTGT: PUSHJ PDP,TTYSR1 ;FIND DEVICE DATA BLOCK 000134' 200006 000002 MOVE IOS,DEVIOS(DEVDAT) 000135' 607000 100000 TLNN IOS,DDTM 000136' 607000 000020 TLNN IOS,IO ;OUTPUT IN PROGRESS 000137' 254000 000141' JRST DDTGT2 ;NO ; PUSHJ PDP,OUT ;MAKE SURE OUTPUT STARTED 000140' 260140 000000* PUSHJ PDP,WAIT1 ;WAIT FOR OUTPUT TO FINISH 000141' 661000 100000 DDTGT2: TLO IOS,DDTM ;SET DDT MODE BIT 000142' 202006 000002 MOVEM IOS,DEVIOS(DEVDAT) 000143' 254000 000000* JRST UXIT ;RELEASE TELETYPE FROM DDT MODE ;MAKE SURE OUPUT IS FINISHED FIRST 000144' 260140 000230' DDTRL: PUSHJ PDP,TTYSR1 ;FIND DEVICE DATA BLOCK 000145' 200006 000002 MOVE IOS,DEVIOS(DEVDAT) 000146' 603000 000020 TLNE IOS,IO ;OUTPUT IN PROGRESS? 000147' 260140 000140* PUSHJ PDP,WAIT1 ;YES, WAIT 000150' 205000 140000 MOVSI IOS,DDTM+SYNC 000151' 412006 000002 ANDCAM IOS,DEVIOS(DEVDAT) ;TURN OFF DDT BIT 000152' 254000 000143* JRST UXIT SCNSER - SCANNER SERVICE MACRO 10 05:51 24-APR-78 PAGE 7 SCNSER MAC 24-APR-78 03:04 TOM EGGERS 8-9-65 ;INPUT TO DDT ;CALL AC,[SIXBIT /DDTIN/] AC CONTAINS POINTER TO BUFFER AREA ;BUFFER AREA MUST BE 21 WORDS LONG 000153' 260140 000230' DDTIN: PUSHJ PDP,TTYSR1 ;SET UP DEVDAT 000154' 200006 000002 MOVE IOS,DEVIOS(DEVDAT) 000155' 603000 000020 TLNE IOS,IO ;OUTPUT IN PROGRESS 000156' 260140 000147* PUSHJ PDP,WAIT1 ;YES, WAIT 000157' 200006 000002 DDTIN2: MOVE IOS,DEVIOS(DEVDAT) 000160' 603000 000040 TLNE IOS,IOEND ;BUFFER ALREADY? 000161' 254000 000166' JRST DDTIN3 ;YES 000162' 201000 010000 MOVEI IOS,IOACT 000163' 436006 000002 IORM IOS,DEVIOS(DDB) 000164' 260140 000000* PUSHJ PDP,WSYNC ;NO, WAIT 000165' 254000 000157' JRST DDTIN2 000166' 205040 120004 DDTIN3: MOVSI TAC,NIO+IOFST+DDTM 000167' 436046 000002 IORM TAC,DEVIOS(DEVDAT) ;STOP ALL IO 000170' 200046 000000* MOVE TAC,TTYPTR(DEVDAT) 000171' 260140 000000* PUSHJ PDP,CLRBYT ;CLEAR OUT REMAINING BYTES 000172' 275046 000000* SUBI TAC,TTYBM1(DEVDAT) ;NUMBER OF WORDS 000173' 135100 000000* LDB TAC1,PUUOAC ;PICK UP AC NUMBER 000174' 271107 000000 ADDI TAC1,(PROG) ;FIND REAL ADDRESS 000175' 200102 000000 MOVE TAC1,(TAC1) ;PICK UP POINTER 000176' 271107 000000 ADDI TAC1,(PROG) ;FIND REAL ADDRESS OF BUFFER 000177' 505106 000126* HRLI TAC1,TTYBUF(DEVDAT) 000200' 271042 000000 ADDI TAC,(TAC1) 000201' 251101 000000 BLT TAC1,(TAC) ;TRANSFER MONITOR BUFFER TO U 000202' 402001 000001 CLEARM 1(TAC) ;MAKE SURE THERE ARE SOME NUL 000203' 205040 020040 MOVSI TAC,NIO+IOEND 000204' 412046 000002 ANDCAM TAC,DEVIOS(DEVDAT) 000205' 254000 000152* JRST UXIT SCNSER - SCANNER SERVICE MACRO 10 05:51 24-APR-78 PAGE 8 SCNSER MAC 24-APR-78 03:04 TOM EGGERS 8-9-65 ;OUTPUT FROM DDT ;CALL AC,[SIXBIT /DDTOUT/] AC HAS POINTER TO DDT OUTPUT BUFFER 000206' 260140 000230' DDTOUT: PUSHJ PDP,TTYSR1 000207' 200006 000002 MOVE IOS,DEVIOS(DEVDAT) 000210' 603000 000020 TLNE IOS,IO ;OUTPUT IN PROGRESS? 000211' 260140 000156* PUSHJ PDP,WAIT1 ;YES, WAIT 000212' 200000 001144' MOVE IOS,[XWD NIO+TOUT+DDTM,IOACT] 000213' 437006 000002 IORB IOS,DEVIOS(DEVDAT) 000214' 135040 000173* LDB TAC,PUUOAC ;PICK UP AC NUMBER 000215' 505040 000011 HRLI TAC,JDAT ;CALC REAL ADDRESS OF AC 000216' 540060 000001 HRR TAC,@TAC ;PICK UP AC 000217' 505060 000001 HRLI TAC,@TAC ;CALC REAL ADDRESS OF DDT BUF 000220' 541046 000177* HRRI TAC,TTYBUF(DEVDAT) 000221' 552046 000000* HRRZM TAC,TTYCTR(DDB) ;A SUITABLY LARGE NUMBER 000222' 200100 000001 MOVE TAC1,TAC 000223' 251042 000020 BLT TAC,20(TAC1) ;MOVE DDT BUFFER TO MONITOR hrli tac1,440700 000224' 202106 000170* MOVEM TAC1,TTYPTR(DEVDAT) 000225' 621000 000004 TLZ IOS,IOS+IOFST 000226' 260140 000302' PUSHJ PDP,TTYOU0 000227' 254000 000205* JRST UXIT SCNSER - SCANNER SERVICE MACRO 10 05:51 24-APR-78 PAGE 9 SCNSER MAC 24-APR-78 03:04 TOM EGGERS 8-9-65 000230' 200200 000000* TTYSR1: MOVE ITEM,JOB 000231' 205100 000117* TTYSRC: MOVSI LINE,MTTYLN 000232' 550302 000124* HRRZ DEVDAT,TTYTAB(LINE) 000233' 322300 000237' JUMPE DEVDAT,TTYF0 000234' 135040 000004' LDB TAC,TPCJOBN 000235' 306044 000000 CAIN TAC,(ITEM) 000236' 263140 000000 POPJ PDP, ;FOUND 000237' 253100 000232' TTYF0: AOBJN LINE,TTYSRC+1 000240' 205040 576062 MOVSI TAC,576062 ;SIXBIT /OPR/ 000241' 254000 000000* JRST DEVPHY ;SEARCH PHYSICAL DEVICE NAMES ;AND RETURN OPERATOR TTY. ;ROUTINE TO FIND A TTY FOR A JOB ;CALL: MOVE ITEM,JOB NUMBER ; PUSHJ PDP, TTYFND ; ERROR RETURN ; RETURN WITH DEVDAT SET TO ADR OF DDB ; AND DAT SET TO BYTE POINTER TO MONITOR OUTPUT BUFFER 000242' 200200 000230* TTYFNU: MOVE ITEM,JOB 000243' 260140 000231' TTYFND: PUSHJ PDP,TTYSRC ;CALLED BY PUSHJ PDP,TTYFND 000244' 260140 000164* ; PUSHJ PDP,WSYNC 000245' 205040 020000 MOVSI TAC,NIO ;JOB NUMBER IN TAC1 000246' 436046 000002 IORM TAC,DEVIOS(DEVDAT) 000247' 201246 000220* TTYDAT: MOVEI DAT,TTYBUF(DEVDAT) ;SETUP OUTPUT BYTE POINTER 000250' 505240 440700 HRLI DAT,440700 000251' 263140 000000 POPJ PDP, 000252' 200040 000005 TTYSTR: MOVE TAC,DAT 000253' 260140 000171* PUSHJ PDP,CLRBYT 000254' 275046 000172* SUBI TAC,TTYBM1(DEVDAT) 000255' 405040 777777 ANDI TAC,-1 000256' 221040 000005 IMULI TAC,5 000257' 202046 000221* MOVEM TAC,TTYCTR(DEVDAT) 000260' 201046 000247* MOVEI TAC,TTYBUF(DEVDAT) 000261' 505040 440700 HRLI TAC,440700 000262' 202046 000224* MOVEM TAC,TTYPTR(DEVDAT) 000263' 200006 000002 MOVE IOS,DEVIOS(DEVDAT) 000264' 434000 001145' IOR IOS,[XWD NIO+IOFST,IODTER+IOBKTL] andcm ios,[xwd nio+iofst,iodter+iobktl] 000265' 260140 000767' PUSHJ PDP,GCHAR 000266' 263140 000000 POPJ PDP, ;NOTHING TO TYPE 000267' 254000 000310' JRST TTYOU2 ;START OUTPUT ;DISPATCH TABLE; 000270' 263140 000000 TTYDSP: POPJ PDP, ;RELEASE 000271' 254000 000000* JRST OUT ;CLOSE 000272' 254000 000300' JRST TTYOUT 000273' 630000 001146' TDZ IOS,[XWD TPMON,ECHOF+NCERR] ;INPUT 000274' 660000 010000 TRO IOS,IOACT 000275' 623000 000002 TLZE IOS, IOBEG SCNSER - SCANNER SERVICE MACRO 10 05:51 24-APR-78 PAGE 9-1 SCNSER MAC 24-APR-78 03:04 TOM EGGERS 8-9-65 000276' 661000 000004 TLO IOS, IOFST 000277' 254000 001131' JRST MIS1 000300' 670000 001147' TTYOUT: TDO IOS,[XWD TOUT+IOFST,IOACT] 000301' 630000 001146' TDZ IOS,[XWD TPMON,ECHOF+NCERR] 000302' 135240 000000' TTYOU0: LDB HPOS,PHPOS 000303' 135200 000001' LDB VPOS,PVPOS 000304' 260140 000767' PUSHJ PDP, GCHAR 000305' 263140 000000 POPJ PDP, 000306' 137240 000000' DPB HPOS,PHPOS 000307' 137200 000001' DPB VPOS,PVPOS 000310' 135100 000130* TTYOU2: LDB LINE,PUNIT 000311' 700200 000000* CONO CLDS ;DISABLE CLOCK 000312' 306100 000000* CAIN LINE,TCONLN 000313' 254000 000324' JRST CTYOUT 000314' 730200 000000 CONO DCSA,0 ;DISABLE SCANNER 000315' 730602 000000 CONO DCSB, (LINE) 000316' 730140 000010 DATAO DCSA, CHREC 000317' 730200 000017* CONO DCSA,FSNCHN 000320' 137400 000002' DPB CHREC,PLASTC 000321' 700200 000000* TTYOU1: CONO CLEN ;RE-ENABLE CLOCK 000322' 202006 000002 MOVEM IOS,DEVIOS(DEVDAT) 000323' 263140 000000 POPJ PDP, 000324' 712200 000000 CTYOUT: CONO TTY,0 ;DISABLE TTY 000325' 712140 000010 DATAO TTY,CHREC 000326' 202400 000055' MOVEM CHREC,CCHAR 000327' 712200 000015* CONO TTY,SCNCHN ;RE-ENABLE 000330' 254000 000300' JRST TTYOUT1 000331' 712340 000050 CTYINT: CONSO TTY,50 000332' 254000 000332' JRST . 000333' 712340 000040 CONSO TTY,40 000334' 254000 000346' JRST CTYOU1 000335' 202040 000055' MOVEM TAC, CCHAR ;DONT ECHO RUBOUT 000336' 712040 000001 DATAI TTY, TAC 000337' 405040 000177 ANDI TAC, 177 000340' 306040 000177 CAIN TAC, 177 000341' 254000 000345' JRST CTYRUB ;IS A RUBOUT 000342' 712140 000001 DATAO TTY, TAC ;NOT, SO ECHO 000343' 250040 000055' EXCH TAC, CCHAR 000344' 254520 000000* JRST 12,@SCNCHL ;DISMISS INTERRUP 000345' 250040 000055' CTYRUB: EXCH TAC, CCHAR 000346' 264000 000000* CTYOU1: JSR SCNSAV 000347' 201400 000327* MOVEI CHREC,SCNCHN 000350' 712210 000200 CONO TTY,200(CHREC) 000351' 200400 000055' MOVE CHREC,CCHAR 000352' 201100 000312* MOVEI LINE,TCONLN 000353' 254000 000363' JRST TCOMM 000354' 730340 001010 SCNINT: CONSO DCSA,1010 000355' 254000 000355' JRST . SCNSER - SCANNER SERVICE MACRO 10 05:51 24-APR-78 PAGE 9-2 SCNSER MAC 24-APR-78 03:04 TOM EGGERS 8-9-65 000356' 264000 000346* JSR SCNSAV 000357' 730340 000010 CONSO DCSA,10 ;RECEIVER FLAG? 000360' 254000 000437' JRST SCNIN1 ;NO,XMITTER FLAG 000361' 730640 000002 CONI DCSB, LINE 000362' 730440 000010 DATAI DCSB, CHREC 000363' 405400 000177 TCOMM: ANDI CHREC, 177 000364' 303100 000352* CAILE LINE,TCONLN ;CTY LINE OR LESS 000365' 254000 000447' JRST TYPX ;NO 000366' 332302 000232* SKIPE DDB,TTYTAB(LINE) ;DATA BLOCK ASSIGNED? 000367' 254000 000461' JRST INUSE ;YES 000370' 260140 000377' PUSHJ PDP,DDBSRC ;SEARCH FOR FREE TTY DEV. DATA BLOCK 000371' 254000 000447' JRST TYPX ;NONE FOUND, TYPE X 000372' 403240 000004 CLEARB HPOS,VPOS ;ASSUME TTY IS AT BEGIN OF FORM 000373' 730300 000700 CONSZ DCSA,700 ;FULL DUPLEX? 000374' 306100 000364* CAIN LINE,TCONLN ;CTY? 000375' 254000 000574' JRST INJEST ;NO, SWALLOW CHAR 000376' 254000 000510' JRST TYP1 SCNSER - SCANNER SERVICE MACRO 10 05:51 24-APR-78 PAGE 10 SCNSER MAC 24-APR-78 03:04 TOM EGGERS 8-9-65 ;ROUTINE TO SEARCH FOR FREE TTY DEV DATA BLOCK ;CALL: MOVE LINE,TTY LINE NO ; PUSHJ PDP,DDBSRC ; NONE FOUND ; RETURN DEVDAT, LINE SET 000377' 205000 000020* DDBSRC: MOVSI IOS,MLTTYL ;NO. OF TTY DDB 000400' 201300 000066* MOVEI DEVDAT,TTYLST ;ADDRESS OF FIRST DDB 000401' 334040 001142' SKIPA TAC,[XWD TTYUSE+TTYATC,ASSPRG+ASSCON] 000402' 554306 000003 HLRZ DEVDAT,DEVSER(DEVDAT) 000403' 612046 000004 TDNE TAC,DEVMOD(DEVDAT) ;USE.ATTACH, AND BOTH ASSIGN 000404' 253000 000402' AOBJN IOS,.-2 000405' 325000 000122* JUMPGE IOS,CPOPJ ;DDB FOUND? 000406' 200000 001150' MOVE IOS,[XWD TPMON+IOFST,IOACT] 000407' 200040 001151' MOVE TAC,[XWD TTYUSE,ASSCON] ;INITIALIZE TTY DEVICE DATA BLOCK(CALLED FROM TTYATT TOO) 000410' 436046 000004 SCNIN: IORM TAC,DEVMOD(DEVDAT) 000411' 137100 000310* DPB LINE,PUNIT ;SET LINE NO. IN DDB 000412' 205040 064647 MOVSI TAC,646471 ;SIXBIT /TTY/ 000413' 202046 000000 MOVEM TAC,DEVNAM(DEVDAT) 000414' 200040 001152' MOVE TAC,[POINT 6,DEVNAM(DEVDAT),17] 000415' 261140 000002 PUSH PDP,LINE ;SAVE LINE NO. 000416' 606100 000070 TRNN LINE,70 ;IS THERE A HIGH ORDER OCTAL DIGIT? 000417' 254000 000424' JRST SCNIN0 ;NO 000420' 241100 777775 ROT LINE,-3 ;YES,CONVERT TO SIXBIT 000421' 271100 000020 ADDI LINE,20 000422' 136100 000001 IDPB LINE,TAC ;STORE HIGH ORDER SIXBIT DIGIT 000423' 242100 000020 LSH LINE,20 ;IN PHYSICAL NAME 000424' 271100 000020 SCNIN0: ADDI LINE,20 000425' 136100 000001 IDPB LINE,TAC ;STORE LOW ORDER DIGIT 000426' 262140 000002 POP PDP,LINE 000427' 542302 000366* HRRM DEVDAT,TTYTAB(LINE) ;SET LINE NO. IN TRANSLATOR T 000430' 205040 436471 MOVSI TAC,436471 ;SIXBIT /CTY/ 000431' 306100 000374* CAIN LINE,TCONLN ;IS THIS CONSOLE TTY? 000432' 202046 000000 MOVEM TAC,DEVNAM(DEVDAT) ;YES, SET NAME TO CTY 000433' 200046 000000 MOVE TAC,DEVNAM(DEVDAT) 000434' 336000 000000* SKIPN DEVOPR ;IS THIS FIRST CHAR. TYPED BY ANYONE? 000435' 202040 000434* MOVEM TAC,DEVOPR ;YES,SET THIS TTY AS OPERATOR TTY 000436' 254000 000132* JRST CPOPJ1 ;SUCCESSFUL RETURN 000437' 730040 000002 SCNIN1: DATAI DCSA,LINE ;GET LINE NO. FROM FULL DUPLEX 000440' 201040 000317* MOVEI TAC,FSNCHN 000441' 730201 004000 CONO DCSA,4000(TAC) ;RELEASE XMITTER SCANNER 000442' 332302 000427* SKIPE DDB,TTYTAB(LINE) ;DATA BLOCK ASSIGNED? 000443' 301100 000431* CAIL LINE,TCONLN ;LINE NO. TOO LARGE? 000444' 254000 000000* JRST SCNRET ;GO AWAY 000445' 135400 000002' LDB CHREC,PLASTC 000446' 254000 000470' JRST INUS1 SCNSER - SCANNER SERVICE MACRO 10 05:51 24-APR-78 PAGE 11 SCNSER MAC 24-APR-78 03:04 TOM EGGERS 8-9-65 000447' 306400 000130 TYPX: CAIN CHREC,"X" ;CHARACTER RECEIVED AN X? 000450' 254000 000444* JRST SCNRET ;YES, GO AWAY 000451' 201400 000130 MOVEI CHREC,"X" 000452' 302100 000443* CAIE LINE,TCONLN 000453' 254000 000456' JRST TYPX1 000454' 712140 000010 DATAO TTY,CHREC 000455' 254000 000450* JRST SCNRET 000456' 730742 000000 TYPX1: CONSO DCSB,(LINE) 000457' 730140 000010 DATAO DCSA,CHREC ;TYPE AN X 000460' 254000 000455* JRST SCNRET 000461' 730300 000700 INUSE: CONSZ DCSA,700 ;FULL DUPLEX? 000462' 306100 000452* CAIN LINE,TCONLN 000463' 254000 000470' JRST INUS1 000464' 730602 000000 CONO DCSB,(LINE) 000465' 730140 000010 DATAO DCSA,CHREC 000466' 137400 000002' DPB CHREC,PLASTC 000467' 254000 000460* JRST SCNRET 000470' 200006 000002 INUS1: MOVE IOS,DEVIOS(DDB) 000471' 135340 000111* LDB PROG,PJOBN 000472' 550347 000000* HRRZ PROG,JBTADR(PROG) 000473' 135240 000000' LDB HPOS,PHPOS 000474' 135200 000001' LDB VPOS,PVPOS 000475' 135046 000262* LDB TAC, TTYPTR(DDB) 000476' 603000 002000 TLNE IOS, SP 000477' 254000 000532' JRST SIM35 000500' 607000 000010 INUS2: TLNN IOS,TOUT 000501' 254000 000574' JRST INJEST 000502' 312040 000010 CAME TAC, CHREC 000503' 254000 000526' JRST ECHO 000504' 260140 000767' INUS3: PUSHJ PDP, GCHAR 000505' 254000 000517' JRST LEAV0 000506' 306100 000462* TYPE: CAIN LINE,TCONLN 000507' 254000 000523' JRST CTSER3 000510' 730602 000000 TYP1: CONO DCSB,(LINE) 000511' 730140 000010 DATAO DCSA, CHREC 000512' 137400 000002' DPB CHREC,PLASTC ;SAVE CHARACTER FOR FULL DUPLEX 000513' 202006 000002 LEAVE: MOVEM IOS, DEVIOS(DDB) 000514' 137240 000000' LEAV1: DPB HPOS,PHPOS 000515' 137200 000001' DPB VPOS,PVPOS 000516' 254000 000467* JRST SCNRET 000517' 202046 000004 LEAV0: MOVEM TAC,DEVMOD(DEVDAT) ;IS TTY ATTCHED? 000520' 607040 020000 TLNN TAC,TTYATC 000521' 260140 000041' PUSHJ PDP,TTYKIL ;NO,RETURN TO POOL 000522' 254000 000514' JRST LEAV1 000523' 712140 000010 CTSER3: DATAO TTY,CHREC 000524' 202400 000055' MOVEM CHREC,CCHAR 000525' 254000 000513' JRST LEAVE SCNSER - SCANNER SERVICE MACRO 10 05:51 24-APR-78 PAGE 12 SCNSER MAC 24-APR-78 03:04 TOM EGGERS 8-9-65 000526' 670000 001153' ECHO: TDO IOS,[XWD SP,ECHOF] 000527' 621000 000010 TLZ IOS,TOUT 000530' 201400 000177 MOVEI CHREC,177 ;SEND A RUBOUT AFTER ECHO CHE 000531' 254000 000506' JRST TYPE 000532' 205040 777766 SIM35: MOVSI TAC,-SCTABL 000533' 200241 000544' MOVE HPOS, SCTAB(TAC) 000534' 302405 000000 CAIE CHREC,(HPOS) 000535' 253040 000533' AOBJN TAC, .-2 000536' 135240 000000' LDB HPOS,PHPOS 000537' 325040 000526' JUMPGE TAC, ECHO 000540' 204041 000544' MOVS TAC, SCTAB(TAC) 000541' 603040 000140 TLNE TAC, 140 ;SPACING CHARACTER 000542' 344241 000000 AOJA HPOS,(TAC) ;YES 000543' 254001 000000 JRST (TAC) ;NO 000544' 000556' 000040 SCTAB: XWD SPACE," " 000545' 000564' 000012 XWD SIMLF,12 000546' 000571' 000177 XWD SIMRO,177 ;RUBOUT 000547' 000571' 000134 XWD SIMRO,134 ;BACK SLASH 000550' 000733' 000015 XWD ASC3,15 ;CR 000551' 000561' 000136 XWD SIMVA,"^" 000552' 000764' 000103 XWD DELET1,"C" 000553' 000764' 000117 XWD DELET1,"O" 000554' 000565' 000132 XWD SIM4,"Z" 000555' 000764' 000125 XWD DELET1,"U" 000012 SCTABL=.-SCTAB 000556' 606240 000007 SPACE: TRNN HPOS,7 ;FINISHED SIMULATING TABS(8) 000557' 254000 000565' JRST SIM4 ;YES 000560' 254000 000506' JRST TYPE ;NO, SEND ANOTHER SPACE 000561' 135400 000003' SIMVA: LDB CHREC,PSCHAR 000562' 660400 000100 TRO CHREC, 100 000563' 254000 000506' JRST TYPE 000564' 367200 000506' SIMLF: SOJG VPOS,TYPE ;SEND ANOTHER LINE-FEED 000565' 621000 002000 SIM4: TLZ IOS,SP 000566' 607000 000010 TLNN IOS,TOUT 000567' 254000 000626' JRST INJ4 000570' 254000 000504' JRST INUS3 000571' 625000 002000 SIMRO: TLZA IOS, SP 000572' 640000 004000 MOD35: TRC IOS,T35 000573' 254000 000513' JRST LEAVE SCNSER - SCANNER SERVICE MACRO 10 05:51 24-APR-78 PAGE 13 SCNSER MAC 24-APR-78 03:04 TOM EGGERS 8-9-65 000574' 306400 000003 INJEST: CAIN CHREC,3 ;CONTROL C? 000575' 254000 000642' JRST INJ5 000576' 623000 000004 TLZE IOS,IOFST ;IF FIRST CHARACTER IN, INITIALIZE 000577' 260140 000630' PUSHJ PDP,SETMB1 000600' 603000 100000 TLNE IOS,DDTM ;1 DDT CHAR RESTARTS PROGRAM 000601' 661000 040040 TLO IOS,SYNC+IOEND ;YES, TERMINATE BUFFER 000602' 306400 000017 CAIN CHREC,17 ;COTNROL O? 000603' 254000 000655' JRST INJ6 ;YES, FLUSH OUTPUT 000604' 622000 100000 TRZE IOS,ECHOF ;ECHO HAS OCCURRED? 000605' 254000 000675' JRST INJ7 ;YES, NOW RESUME OUTPUT 000606' 602000 040000 TRNE IOS,NCERR 000607' 254000 000513' JRST LEAVE 000610' 302400 000033 CAIE CHREC,033 ;NEW NEW ALT-MODE? 000611' 306400 000176 CAIN CHREC,176 ;NEW ALT-MODE? 000612' 201400 000175 MOVEI CHREC,175 ;CHANGE TO OLD 000613' 306400 000020 CAIN CHREC,20 ;CONTROL P TAB SIMULATION FLIP FLOP SWI 000614' 254000 000572' JRST MOD35 000615' 603000 100000 TLNE IOS,DDTM 000616' 254000 000620' JRST INJ25 ;SENT RUBOUTS ON TO DDT 000617' 306400 000177 CAIN CHREC,177 ;RUBOUT jrst delet 000620' 136406 000475* INJ25: DPBI CHREC, TTYPTR(DDB) 000621' 370046 000257* SOS TAC, TTYCTR(DDB) 000622' 301400 000040 CAIL CHREC, 40 000623' 303400 000137 CAILE CHREC, 137 000624' 254000 000677' JRST SPCIN 000625' 271240 000001 ADDI HPOS,1 000626' 260140 001062' INJ4: PUSHJ PDP, MOVBUF 000627' 254000 000513' JRST LEAVE 000630' 541046 000260* SETMB1: HRRI TAC, TTYBUF(DDB) 000631' 505040 440700 HRLI TAC, 440700 000632' 202046 000620* MOVEM TAC, TTYPTR(DDB) 000633' 507000 000001 HRLS TAC 000634' 350000 000001 AOS TAC 000635' 402006 000630* SETZM TTYBUF(DDB) 000636' 251046 000000* BLT TAC,TTYBFE(DDB) ;CLEAR OUT MONITOR BUFFER 000637' 201040 000111 MOVEI TAC, 111 000640' 202046 000621* MOVEM TAC, TTYCTR(DDB) 000641' 263140 000000 POPJ PDP, SCNSER - SCANNER SERVICE MACRO 10 05:51 24-APR-78 PAGE 14 SCNSER MAC 24-APR-78 03:04 TOM EGGERS 8-9-65 000642' 260140 000630' INJ5: PUSHJ PDP,SETMB1 000643' 261140 000004 PUSH PDP,ITEM ;^C 000644' 135200 000004' LDB ITEM,TPCJOBN ;YES, GET USER CONSOLE NUMBER 000645' 332000 000004 SKIPE ITEM 000646' 260140 000000* PUSHJ PDP,STOP1 ;SHUT OFF JOB 000647' 262140 000004 POP PDP,ITEM 000650' 607000 001000 TLNN IOS,TPMON ;SAVE STATUS OF TTY 000651' 202006 000063* MOVEM IOS,TTYSAV(DDB) ;WHEN IT WAS IN USER MODE 000652' 200000 001150' MOVE IOS,[XWD TPMON+IOFST,IOACT] 000653' 201040 000103 MOVEI TAC,"C" 000654' 254000 000672' JRST INJ61 000655' 261140 000002 INJ6: PUSH PDP,TAC1 ;^O 000656' 623000 000001 TLZE IOS,IOW 000657' 260140 000000* PUSHJ PDP,SETIOD 000660' 262140 000002 POP PDP,TAC1 000661' 603000 101000 TLNE IOS,TPMON+DDTM 000662' 254000 000665' JRST INJ6A 000663' 603000 000010 TLNE IOS,TOUT 000664' 260140 000000* PUSHJ PDP,ADVBFE 000665' 665000 000004 INJ6A: TLOA IOS,IOFST 000666' 254000 000664' JRST .-2 000667' 620000 100000 TRZ IOS,ECHOF 000670' 660000 020000 TRO IOS,IODEND 000671' 201040 000060 MOVEI TAC,"0" 000672' 137040 000003' INJ61: DPB TAC,PSCHAR 000673' 201400 000136 MOVEI CHREC,"^" 000674' 254000 000743' JRST SPC21 000675' 661000 000010 INJ7: TLO IOS,TOUT 000676' 254000 000504' JRST INUS3 SCNSER - SCANNER SERVICE MACRO 10 05:51 24-APR-78 PAGE 15 SCNSER MAC 24-APR-78 03:04 TOM EGGERS 8-9-65 000677' 205040 777770 SPCIN: MOVSI TAC,-SCITL ;SEARCH FOR SPECIAL INPUT CHAR 000700' 200101 000707' MOVE TAC1,SCITAB(TAC) 000701' 302402 000000 CAIE CHREC,(TAC1) ;FOUND? 000702' 253040 000700' AOBJN TAC,.-2 ;NO 000703' 544040 000002 HLR TAC,TAC1 ;SAVE DISPATCH ADDRESS 000704' 135100 000411* LDB LINE,PUNIT ;RESTORE TAC1 000705' 321041 000000 JUMPL TAC,(TAC) 000706' 254000 000626' JRST INJ4 ;CHARACTER NOT FOUND 000707' 000717' 000015 SCITAB: XWD SPCCR,15 ;CR 000710' 000725' 000012 XWD ASC1,12 ;LF 000711' 000740' 000011 XWD SPC2,11 ;HORIZ TAB 000712' 000722' 000013 XWD SPVT,13 ;VT 000713' 000721' 000014 XWD SPFF,14 ;FF 000714' 000735' 000025 XWD SPC4A,25 ;^U 000715' 000745' 000032 XWD SPC7,32 ;^Z 000716' 000725' 000175 XWD ASC1, 175 ;ALT MODE 000010 SCITL=.-SCITAB 000717' 201240 000000 SPCCR: MOVEI HPOS,0 000720' 254000 000733' JRST ASC3 000721' 334200 001154' SPFF: SKIPA VPOS,[10] 000722' 201200 000004 SPVT: MOVEI VPOS,4 000723' 607000 004000 TLNN IOS,T35 ;DONT SIMULATE FOR A MOD 35 000724' 661000 002000 TLO IOS,SP 000725' 135040 000000* ASC1: LDB TAC,PIOMOD 000726' 607000 001000 TLNN IOS,TPMON 000727' 306040 000001 CAIN TAC,AL 000730' 661000 040000 TLO IOS,SYNC 000731' 607000 002000 ASC2: TLNN IOS,SP 000732' 254000 000626' JRST INJ4 000733' 201400 000012 ASC3: MOVEI CHREC,12 ;LINE FEED 000734' 254000 000506' JRST TYPE 000735' 260140 000630' SPC4A: PUSHJ PDP,SETMB1 000736' 201040 000125 MOVEI TAC,"U" 000737' 254000 000672' JRST INJ61 000740' 602000 004000 SPC2: TRNE IOS,T35 000741' 254000 000513' JRST LEAVE 000742' 201400 000040 MOVEI CHREC," " 000743' 661000 002000 SPC21: TLO IOS,SP 000744' 254000 000506' JRST TYPE 000745' 661000 042040 SPC7: TLO IOS,SYNC+IOEND+SP ;^Z 000746' 201040 000132 MOVEI TAC,"Z" 000747' 254000 000672' JRST INJ61 ;ECHO ^Z SCNSER - SCANNER SERVICE MACRO 10 05:51 24-APR-78 PAGE 16 SCNSER MAC 24-APR-78 03:04 TOM EGGERS 8-9-65 000750' 200046 000640* DELET: MOVE TAC,TTYCTR(DDB) 000751' 301040 000111 CAIL TAC,111 000752' 254000 000764' JRST DELET1 000753' 205040 070000 MOVSI TAC,070000 000754' 270046 000632* ADD TAC,TTYPTR(DDB) 000755' 603040 400000 TLNE TAC,400000 000756' 270040 001155' ADD TAC,[XWD 347777,-1] 000757' 202046 000754* MOVEM TAC,TTYPTR(DDB) 000760' 350006 000750* AOS TTYCTR(DDB) 000761' 201400 000334 MOVEI CHREC,334 ;BACK SLASH 000762' 661000 002000 DELET2: TLO IOS,SP 000763' 254000 000506' JRST TYPE 000764' 201200 000001 DELET1: MOVEI VPOS,1 000765' 201400 000015 MOVEI CHREC,15 000766' 254000 000762' JRST DELET2 SCNSER - SCANNER SERVICE MACRO 10 05:51 24-APR-78 PAGE 17 SCNSER MAC 24-APR-78 03:04 TOM EGGERS 8-9-65 ;ROUTINE TO GET NEXT CHARACTER FROM OUTPUT BUFFER ;CALL: PUSHJ PDP,GCHAR ; NO MORE LEFT ; RETURN WITH CHAR. IN CHREC 000767' 627000 000004 GCHAR: TLZN IOS, IOFST 000770' 254000 000777' JRST GCHAR3 000771' 550046 000010 GCHAR1: HRRZ TAC,DEVOAD(DDB) 000772' 270040 001156' ADD TAC, [XWD 000700+PROG,1] 000773' 202046 000757* MOVEM TAC, TTYPTR(DDB) 000774' 550060 000001 HRRZ TAC, @TAC 000775' 221040 000005 IMULI TAC, 5 000776' 202046 000760* MOVEM TAC,TTYCTR(DDB) 000777' 375006 000776* GCHAR3: SOSGE TTYCTR(DDB) 001000' 254000 001023' JRST GCHAR5 001001' 134406 000773* LDBI CHREC, TTYPTR(DDB) 001002' 322400 001021' JUMPE CHREC, GCHAR7 001003' 306400 000011 CAIN CHREC, 11 001004' 254000 001050' JRST HT 001005' 306400 000012 CAIN CHREC, 12 001006' 344200 001015' AOJA VPOS,GCH3 001007' 302400 000013 CAIE CHREC, 13 001010' 306400 000014 CAIN CHREC, 14 001011' 254000 001055' JRST VTFF 001012' 271240 000001 ADDI HPOS,1 001013' 306400 000015 CAIN CHREC,15 001014' 201240 000000 MOVEI HPOS,0 001015' 354003 000000 GCH3: AOSA (PDP) 001016' 200006 000651* GCH3A: MOVE IOS,TTYSAV(DDB) ;RESTORE STATUS TO USER 001017' 202006 000002 GCHAR4: MOVEM IOS,DEVIOS(DDB) 001020' 263140 000000 POPJ PDP, 001021' 607000 100000 GCHAR7: TLNN IOS,DDTM ;DDT BUFFER TERMINATED WITH NULL 001022' 254000 000777' JRST GCHAR3 001023' 261140 000002 GCHAR5: PUSH PDP,TAC1 001024' 623000 000001 TLZE IOS, IOW 001025' 260140 000657* PUSHJ PDP, SETIOD 001026' 262140 000002 POP PDP,TAC1 001027' 607000 101000 TLNN IOS,TPMON+DDTM 001030' 260140 000664* PUSHJ PDP, ADVBFE 001031' 665000 000004 TLOA IOS,IOFST 001032' 254000 000771' JRST GCHAR1 001033' 630000 001157' TDZ IOS,[XWD IO,IOACT] 001034' 627000 000100 TLZN IOS,USRB 001035' 254000 001017' JRST GCHAR4 001036' 621000 001000 TLZ IOS,TPMON 001037' 135100 000704* LDB LINE,PUNIT ;GET LINE NO. 001040' 261140 000004 PUSH PDP,ITEM 001041' 135200 000004' LDB ITEM,TPCJOB 001042' 260140 000000* PUSHJ PDP,SETRUN 001043' 262140 000004 POP PDP,ITEM SCNSER - SCANNER SERVICE MACRO 10 05:51 24-APR-78 PAGE 17-1 SCNSER MAC 24-APR-78 03:04 TOM EGGERS 8-9-65 001044' 626000 020000 TRZN IOS,USRBC 001045' 254000 001016' JRST GCH3A 001046' 205000 001004 MOVSI IOS,TPMON+IOFST 001047' 254000 001017' JRST GCHAR4 001050' 602000 004000 HT: TRNE IOS,T35 001051' 344240 001015' AOJA HPOS,GCH3 001052' 661000 002000 TLO IOS,SP 001053' 201400 000240 SPOUT: MOVEI CHREC,240 001054' 254000 001015' JRST GCH3 001055' 602000 004000 VTFF: TRNE IOS,T35 001056' 344200 001015' AOJA VPOS,GCH3 001057' 201400 000012 MOVEI CHREC,12 001060' 661000 002000 TLO IOS,SP 001061' 254000 001015' JRST GCH3 SCNSER - SCANNER SERVICE MACRO 10 05:51 24-APR-78 PAGE 18 SCNSER MAC 24-APR-78 03:04 TOM EGGERS 8-9-65 001062' 603000 100000 MOVBUF: TLNE IOS,DDTM 001063' 254000 001123' JRST MOV3 ;DONT ADVANCE BUFFERS FOR DDT MODE 001064' 627000 040000 TLZN IOS,SYNC 001065' 337006 000777* SKIPG TTYCTR(DDB) 001066' 254000 001070' JRST .+2 001067' 254000 001131' JRST MIS1 001070' 603000 001000 TLNE IOS, TPMON 001071' 254000 001133' JRST MOVMON 001072' 200046 000007 MOVE TAC,DEVIAD(DDB) ;IS TTY EXPECTING INPUT? 001073' 602040 777777 TRNE TAC,-1 001074' 335020 000001 SKIPGE @TAC ;OR IS NEXT BUFFER READY? 001075' 254000 001130' JRST MIS ;NO 001076' 261140 000002 PUSH PDP,TAC1 001077' 200046 001001* MOVE TAC,TTYPTR(DDB) 001100' 260140 000253* PUSHJ PDP,CLRBYT 001101' 200046 000007 MOVE TAC,DEVIAD(DDB) 001102' 260140 000000* PUSHJ PDP,ADRCK ;MAKE SURE BUFFER WILL FIT 001103' 551041 000000* HRRZI TAC,STTYB1(TAC) ;LENGTH+1 001104' 201066 000007 MOVEI TAC,@DEVIAD(DDB) 001105' 271040 000002 ADDI TAC,2 001106' 540400 000001 HRR CHREC,TAC 001107' 271040 000000* ADDI TAC,STTYBF 001110' 505406 000635* HRLI CHREC,TTYBUF(DDB) 001111' 251401 777777 BLT CHREC,-1 (TAC) 001112' 201040 000111 MOVEI TAC,111 001113' 274046 001065* SUB TAC, TTYCTR(DDB) 001114' 271040 000004 ADDI TAC,4 001115' 231040 000005 IDIVI TAC,5 001116' 201426 000007 MOVEI CHREC,@DEVIAD(DDB) 001117' 202050 000001 MOVEM TAC,1(CHREC) 001120' 260140 000000* PUSHJ PDP, ADVBFF 001121' 254000 001122' JRST .+1 001122' 665000 000004 TLOA IOS,IOFST 001123' 261140 000002 MOV3: PUSH PDP,TAC1 001124' 623000 000001 TLZE IOS, IOW 001125' 260140 001025* PUSHJ PDP, SETIOD 001126' 262140 000002 POP PDP,TAC1 001127' 624000 050000 TRZA IOS,NCERR+IOACT 001130' 660000 040000 MIS: TRO IOS, NCERR 001131' 202006 000002 MIS1: MOVEM IOS, DEVIOS(DDB) 001132' 263140 000000 POPJ PDP, 001133' 205040 400000 MOVMON: MOVSI TAC,400000 001134' 436042 000442* IORM TAC,TTYTAB(LINE) ;SET BIT FOR MONITOR 001135' 661000 000004 TLO IOS,IOFST 001136' 201040 000015 MOVEI TAC,15 001137' 137046 001077* DPB TAC,TTYPTR(DDB) ;FORCE A CARRIAGE RET INTO MONITOR COMM 001140' 350000 000000* AOS COMCNT 001141' 263140 000000 POPJ PDP, END, SCNSER - SCANNER SERVICE MACRO 10 05:51 24-APR-78 PAGE 18-2 SCNSER MAC 24-APR-78 03:04 TOM EGGERS 8-9-65 NO ERRORS DETECTED PROGRAM BREAK IS 001160 9K CORE USED SCNSER - SCANNER SERVICE MACRO 10 05:51 24-APR-78 PAGE 19 SCNSER MAC 24-APR-78 03:04 SYMBOL TABLE A 000000 INT AC1 000015 INT AC2 000016 INT AC3 000017 INT ADRCK 001102' EXT ADVBFE 001030' EXT ADVBFF 001120' EXT AL 000001 INT ASC1 000725' ASC2 000731' ASC3 000733' ASSCON 400000 INT ASSPRG 200000 INT B 000014 INT BUFPNT 000012 INT BUFWRD 000013 INT CCHAR 000055' CHREC 000010 CLDS 000311' EXT CLEN 000321' EXT CLOSB 002000 INT CLRBYT 001100' EXT CLSIN 000002 INT CLSOUT 000001 INT COMCNT 001140' EXT CPOPJ 000405' EXT CPOPJ1 000436' EXT CTSER3 000523' CTYINT 000331' INT CTYOU1 000346' CTYOUT 000324' CTYRUB 000345' D 000017 INT DAT 000005 INT DCHAR 000177 DCL 000001 INT DCSA 000300 SPD DCSB 000304 SPD DCW 020000 INT DDB 000006 DDBSRC 000377' DDI 000007 INT DDO 000006 INT DDTGT 000133' INT DDTGT2 000141' DDTIN 000153' INT DDTIN2 000157' DDTIN3 000166' DDTM 100000 DDTMEM 000037 INT DDTOUT 000206' INT DDTRL 000144' INT SCNSER - SCANNER SERVICE MACRO 10 05:51 24-APR-78 PAGE 19-1 SCNSER MAC 24-APR-78 03:04 SYMBOL TABLE DDTSYM 000036 INT DELET 000750' DELET1 000764' DELET2 000762' DEN 000004 INT DETH 010000 DEVADR 000007 INT DEVBUF 000006 INT DEVCHR 000001 INT DEVCTR 000011 INT DEVDAT 000006 INT DEVIAD 000007 INT DEVIOS 000002 INT DEVLOG 000005 INT DEVLST 000000 EXT DEVMOD 000004 INT DEVNAM 000000 INT DEVOAD 000010 INT DEVOPR 000435' EXT DEVPHY 000241' EXT DEVPTR 000010 INT DEVSER 000003 INT DGF 000012 INT DIN 000003 INT DLK 000005 INT DOU 000002 INT DR 000016 INT DRL 000000 INT DSI 000011 INT DSO 000010 INT DTW 040000 INT DVAVAL 000040 INT DVCDR 100000 INT DVDIR 000004 INT DVDIRI 400000 INT DVIN 000002 INT DVLPT 040000 INT DVMTA 000020 INT DVOUT 000001 INT DVTTY 000010 INT ECHO 000526' ECHOF 100000 ENTRB 020000 INT FSNCHN 000440' EXT GCH3 001015' GCH3A 001016' GCHAR 000767' GCHAR1 000771' GCHAR3 000777' GCHAR4 001017' GCHAR5 001023' GCHAR7 001021' HPOS 000005 SCNSER - SCANNER SERVICE MACRO 10 05:51 24-APR-78 PAGE 19-2 SCNSER MAC 24-APR-78 03:04 SYMBOL TABLE HT 001050' I 000010 INT IB 000013 INT IBUFB 200000 INT INITB 400000 INT INJ25 000620' INJ4 000626' INJ5 000642' INJ6 000655' INJ61 000672' INJ6A 000665' INJ7 000675' INJEST 000574' INPB 010000 INT INUS1 000470' INUS2 000500' INUS3 000504' INUSE 000461' IO 000020 INT IOACT 010000 INT IOBEG 000002 INT IOBKTL 040000 INT IOCON 000040 INT IODEND 020000 INT IODERR 200000 INT IODISC 400000 INT IODONE 400000 INT IODTER 100000 INT IOEND 000040 INT IOFST 000004 INT IOIMPM 400000 INT IONRCK 000100 INT IORDEL 000100 INT IORET 000020 INT IOS 000000 INT IOSTRT 000010 INT IOUSE 400000 INT IOW 000001 INT IOWC 000020 INT IOWS 400000 INT ITEM 000004 INT JBFADR 000000 INT JBFCTR 000002 INT JBFPTR 000001 INT JBTADR 000472' EXT JBUF 000005 INT JDAT 000011 INT JERR 002000 INT JIOW 100000 INT JNA 004000 INT JOB 000242' EXT LEAV0 000517' LEAV1 000514' SCNSER - SCANNER SERVICE MACRO 10 05:51 24-APR-78 PAGE 19-3 SCNSER MAC 24-APR-78 03:04 SYMBOL TABLE LEAVE 000513' LINE 000002 LOOKB 040000 INT MIS 001130' MIS1 001131' MLTTYL 000377' EXT MOD35 000572' MOV3 001123' MOVBUF 001062' MOVMON 001133' MTTYLN 000231' EXT MTW 010000 INT NCERR 040000 NIO 020000 OBUFB 100000 INT OUT 000271' EXT OUTPB 004000 INT PDP 000003 INT PHPOS 000000' PICHN 000100 INT PIOFF 000400 PIOMOD 000725' EXT PION 000200 PJOBN 000471' EXT PLASTC 000002' PROG 000007 INT PSCHAR 000003' PUNIT 001037' EXT PUUOAC 000214' EXT PVPOS 000001' RUN 200000 INT RUNABL 204000 INT SCITAB 000707' SCITL 000010 SCN1 000024' SCN2 000035' SCNCHL 000344' EXT SCNCHN 000347' EXT SCNIN 000410' SCNIN0 000424' SCNIN1 000437' SCNINI 000005' INT SCNINT 000354' INT SCNRET 000516' EXT SCNSAV 000356' EXT SCTAB 000544' SCTABL 000012 SETIOD 001125' EXT SETMB1 000630' SETRUN 001042' EXT SIM35 000532' SIM4 000565' SIMLF 000564' SCNSER - SCANNER SERVICE MACRO 10 05:51 24-APR-78 PAGE 19-4 SCNSER MAC 24-APR-78 03:04 SYMBOL TABLE SIMRO 000571' SIMVA 000561' SP 002000 SPACE 000556' SPC2 000740' SPC21 000743' SPC4A 000735' SPC7 000745' SPCCR 000717' SPCIN 000677' SPFF 000721' SPOUT 001053' SPVT 000722' STOP1 000646' EXT STTYB1 001103' EXT STTYBF 001107' EXT SYNC 040000 T35 004000 TAC 000001 INT TAC1 000002 INT TCOMM 000363' TCONLN 000506' EXT TEM 000010 INT TOUT 000010 TPCJOB 000004' TPMON 001000 TSCNLN 000000 EXT TTY 000120 SPD TTY0DB 000000 EXT TTYAT2 000070' TTYAT3 000110' TTYAT4 000115' TTYATC 020000 INT TTYATT 000065' INT TTYBFE 000636' EXT TTYBM1 000254' EXT TTYBUF 001110' EXT TTYCOM 000117' INT TTYCTR 001113' EXT TTYDAT 000247' TTYDET 000046' INT TTYDSP 000270' ENT TTYDT1 000052' TTYF0 000237' TTYFND 000243' INT TTYFNU 000242' INT TTYJOB 000130' INT TTYKIL 000041' INT TTYLST 000400' EXT TTYOU0 000302' TTYOU1 000321' TTYOU2 000310' TTYOUT 000300' SCNSER - SCANNER SERVICE MACRO 10 05:51 24-APR-78 PAGE 19-5 SCNSER MAC 24-APR-78 03:04 SYMBOL TABLE TTYPTR 001137' EXT TTYSAV 001016' EXT TTYSET 000062' INT TTYSR1 000230' TTYSRC 000231' TTYSTR 000252' INT TTYTAB 001134' EXT TTYURC 000056' INT TTYUSE 010000 INT TTYUSR 000057' INT TYP1 000510' TYPE 000506' TYPX 000447' TYPX1 000456' USRB 000100 USRBC 020000 USRMOD 010000 INT UUO 000014 INT UXIT 000227' EXT VPOS 000004 VTFF 001055' SSSSSSSSSSSS YYY YYY SSSSSSSSSSSS CCCCCCCCCCCC OOOOOOOOO NNN NNN SSSSSSSSSSSS YYY YYY SSSSSSSSSSSS CCCCCCCCCCCC OOOOOOOOO NNN NNN SSSSSSSSSSSS YYY YYY SSSSSSSSSSSS CCCCCCCCCCCC OOOOOOOOO NNN NNN SSS YYY YYY SSS CCC OOO OOO NNN NNN SSS YYY YYY SSS CCC OOO OOO NNN NNN SSS YYY YYY SSS CCC OOO OOO NNN NNN SSS YYY YYY SSS CCC OOO OOO NNNNNN NNN SSS YYY YYY SSS CCC OOO OOO NNNNNN NNN SSS YYY YYY SSS CCC OOO OOO NNNNNN NNN SSSSSSSSS YYY SSSSSSSSS CCC OOO OOO NNN NNN NNN SSSSSSSSS YYY SSSSSSSSS CCC OOO OOO NNN NNN NNN SSSSSSSSS YYY SSSSSSSSS CCC OOO OOO NNN NNN NNN SSS YYY SSS CCC OOO OOO NNN NNNNNN SSS YYY SSS CCC OOO OOO NNN NNNNNN SSS YYY SSS CCC OOO OOO NNN NNNNNN SSS YYY SSS CCC OOO OOO NNN NNN SSS YYY SSS CCC OOO OOO NNN NNN SSS YYY SSS CCC OOO OOO NNN NNN SSSSSSSSSSSS YYY SSSSSSSSSSSS CCCCCCCCCCCC OOOOOOOOO NNN NNN SSSSSSSSSSSS YYY SSSSSSSSSSSS CCCCCCCCCCCC OOOOOOOOO NNN NNN SSSSSSSSSSSS YYY SSSSSSSSSSSS CCCCCCCCCCCC OOOOOOOOO NNN NNN LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT Request created: 24-April-1978 05:53:58 File: DSKB0 :SYSCON.LST [8,296] Created: 20-April-1967 05:51:00 Printed: 24-April-1978 05:53:37 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:1609 File will be deleted after printing SYSCON - UUO HANDLER MACRO 10 05:51 24-APR-78 PAGE 1 S MAC 24-APR-78 21:40 8-9-65 XLIST LIST TITLE SYSCON - UUO HANDLER SUBTTL 8-9-65 EXTERNAL CLOSE1,ILLINS,IN,JOBAC,JOBADR,JOBDAT EXTERNAL MTAPE1,OUT,RELEA1,UINBF,UINIT,UOUTBF EXTERNAL USRJDA,USRSAV,USTATO,USTATS,USTATZ EXTERNAL ERROR,UUOERR,CLDS,CLEN EXTERNAL IOIERR,MJOBPD,JOBPDL,WAIT1,USRREL,PUUOAC EXTERNAL JOBPDL,MJOBPD,USETST SYSCON - UUO HANDLER MACRO 10 05:51 24-APR-78 PAGE 2 SYSCON MAC 24-APR-78 03:48 8-9-65 , DEC 06 00 EX UUO L PT PRE 06 UUO HANDLER , 3/10/65 , ALL UUOS DROP THEMSELVE IN REAL LOCATION 40, AND TRAP , TO 41. THE UUO HANDLER SHUFFLES THE UUO OFF TO THE USERS , 40,41, IF IT IS NOT A SYSTEM UUO. , SYSTEM UUOS FALL INTO THREE CLASSES, HANDLED DIFFERENTLY , (1) SYSTEM FUNCTIONS: LOAD ACS PDP, PROG, AND DISPATCH TO THE , FUNCTION. , (2) DEVICE INDEPENDENT I/O UUO: ALSO LOAD ACS DEVDAT AND IOS , AND GO THE THE SYSTEM FUNCTION. , (3) DEVICE DEPENDENT I/O UUOS: DO (1) AND (2), THEN DISPATCH , THROUGH THE TABLE WHOSE ADDRESS IS IN THE RIGHT HALF OF DEVSER(DEVD , CONTROL MAY ALWAYS BE RETURNED BY EXECUTING A , JRST UXIT , WHICH WILL RESTORE THE ACS, ARP BITS, AND RETURN. , THE UUO HANDLER IS PURE IF THE FOLLOWING RESTRICTIONS ARE OBSERVED. , RESTRICTIONS: UUOS CANNOT BE CALLED BY INTERRUPT SERVICE ROUTINES. , MONITOR INTERFACE , STORAGE: 89 , ROUTINES CALLED: ILLINS, ADRCK, EXCLK, UUOH, SETIOS,UUOUSR , UUOS CALLED: CALL, INIT, RELEAS, CLOSE, OUTBUF, INBUF , STATS, STATO, STATZ, OUTPUT, INPUT , DEVICE DEPENDENT: DEN, DLK, DSO, DSI, DGF , SYMBOLS SET/USED: , ACCUMULATORS: POP S/U TAC S/U , PROG S/U TAC1 S/U , SUB S , SYSTEM PARAMETERS: UIO U , USYS U , USYSN U , JOB AREA: JOBAC U JOBDAT U , JOBPDP U , SYSTEM ADDRESSES: CLK S/U , JOBADR U , USRLEV S/U , DEVICE DATA BLOCK: DEVSER U , INTERNAL ADDRESSES: 40 S/U , UUO0 S/U , UUSAV S/U SYSCON - UUO HANDLER MACRO 10 05:51 24-APR-78 PAGE 3 SYSCON MAC 24-APR-78 03:48 8-9-65 INTERNAL UUO0 000000' 000000 000000 UUO0: 0 000001' 250040 000040 EXCH TAC,40 ;SAVE TAC; PICK UP UUO 000002' 202740 000000* MOVEM 17,USRSAV ;SAVE 17 000003' 603040 077000 TLNE TAC,77000 ;0 UUO IS ILLEGAL 000004' 603040 740000 TLNE TAC,740000 ;UUO FOR SYSTEM? 000005' 254000 000030' JRST UUOSYS ;YES 000006' 200740 000000* MOVE 17,JOBADR ;GET JOB AREA ADDRESS 000007' 202057 000040 MOVEM TAC,40(17) ;STORE UUO IN USERS 40 000010' 550057 000041 HRRZ TAC,41(17) ;PICK UP ADR OF USERS JSR 000011' 322040 000030' JUMPE TAC,UUOSYS ;IF ADDRESS=0,ILLEGAL USER UU 000012' 500040 000000' HLL TAC,UUO0 ;PICK UP PROCESSOR FLAGS FOR 000013' 607040 010000 TLNN TAC,USRMOD ;WAS UUO FROM USER? 000014' 254000 000030' JRST UUOSYS ;NO, ILLEGAL NUUO FROM SYSTEM 000015' 201741 000000 MOVEI 17,(TAC) ;17 NOW HAS REL. ADR. OF USER 000016' 317740 000000* CAMG 17,USRREL ;DONT INCREMENT RETURN IF PC 000017' 541041 000001 HRRI TAC,1(TAC) ;INCREMENT PC 000020' 250040 000000' EXCH TAC,UUO0 ;SET UP RETURN TO USER, PICK ;UP USERS FLAGS,PC 000021' 313740 000016* CAMLE 17,USRREL ;LEGAL MEMORY? 000022' 254000 000025' JRST .+3 ;NO. DONT STORE PC 000023' 270740 000006* ADD 17,JOBADR ;MAKE REL. ADR. INTO ABS. ADR 000024' 202057 000000 MOVEM TAC,(17) ;STORE FLAGS AND PC LIKE JSR 000025' 200040 000040 MOVE TAC,40 ;RESTORE TAC 000026' 200740 000002* MOVE 17,USRSAV ;RESTORE 17 000027' 254120 000000' JRST 2,@UUO0 ;RETURN TO USER SYSCON - UUO HANDLER MACRO 10 05:51 24-APR-78 PAGE 4 SYSCON MAC 24-APR-78 03:48 8-9-65 000030' 250040 000040 UUOSYS: EXCH TAC,40 ;RESTORE TA. RESTORE THE UUO 000031' 200740 000000' MOVE 17,UUO0 ;PICK UP PROCESSOR FLAG 000032' 607740 010000 TLNN 17,USRMOD ;SYSTEM UUO FROM SYSTEM? 000033' 254000 000046' JRST UUOSY1 ;YES 000034' 200740 000023* MOVE 17,JOBADR ;NO. PICK UP ADR. OF USER PRO 000035' 202717 000016 MOVEM 16,16(17) ;STORE AC16 IN USER 16 000036' 550700 000017 HRRZ 16,17 ;SET UP BLP POINTER 000037' 251717 000015 BLT 16,15(17) ;MOVE REAL ACS TO USER AREA 000040' 200000 000026* MOVE 0,USRSAV ;MOVE USER 17 TO USERS AREA 000041' 202017 000017 MOVEM 0,17(17) 000042' 200440 000000* MOVE JDAT,JOBDAT ;LOAD UP JOB DAT AREA ADDRES 000043' 205140 000000* MOVSI PDP,MJOBPD ;LOAD UP PUSH DOWN AC AND 000044' 541151 000000* HRRI PDP,JOBPDL(JDAT) ;MAKE ABSOLUTE PATH 000045' 334340 000017 SKIPA PROG,17 ;PROGRAM BASE ADDRESS 000046' 200740 000040* UUOSY1: MOVE 17,USRSAV ;RESTORE AC17 IF UUO FROM SYS 000047' 261140 000000' PUSH PDP,UUO0 ;SAVE RETURN ON PUSH DOWN LIS 000050' 200600 000040 MOVE UUO,40 ;GET THE UUO INTO AC(UUO) 000051' 135100 000250' LDB TAC1,[POINT 9,UUO,8] ;PICK UP UUO OP COD 000052' 301100 000100 CAIL TAC1,100 ;ILLEGAL INSTRUCTION? 000053' 254000 000000* JRST ILLINS ;YES 000054' 305100 000040 CAIGE TAC1,40 ;SYSTEM UUO? 000055' 254000 000000* JRST UUOERR ;NO. ILLEGAL 000056' 135040 000000* LDB TAC,PUUOAC 000057' 200301 000000* MOVE DEVDAT,USRJDA(TAC) ;GET DDB 000060' 305100 000060 CAIGE TAC1,100-UUOT2L ;AN IO UUO? 000061' 254000 000070' JRST UUODSP ;NO 000062' 302100 000070 CAIE TAC1,70 ;CLOSE AND RELEASE ARE ALWAYS LEGAL 000063' 306100 000071 CAIN TAC1,71 000064' 322300 000236' JUMPE DEVDAT,UXIT 000065' 322300 000000* JUMPE DEVDAT,IOIERR ;CHANNEL MUST BE ASSIGNED 000066' 200006 000002 MOVE IOS,DEVIOS(DEVDAT) ;GET DATA BLOCK STA 000067' 254002 000015' JRST UUOT2-77+UUOT2L-1(TAC1) ;DISPATCH 000070' 305100 000042 UUODSP: CAIGE TAC1,40+UUOT1L ;LEGAL SYSTEM UUO? 000071' 254002 000033' JRST UUOT1-40(TAC1) ;YES. DISPATCH 000072' 254000 000055* JRST UUOERR SYSCON - UUO HANDLER MACRO 10 05:51 24-APR-78 PAGE 5 SYSCON MAC 24-APR-78 03:48 8-9-65 000073' 254000 000162' UUOT1: JRST UCALL ;40 000074' 254000 000000* JRST UINIT ;ADD NON IO UUOS HERE 000002 UUOT1L=.-UUOT1 000075' UUOT2: ;ADD IO UUOS HERE 000075' 254000 000000* JRST USETST 000076' 254000 000000* JRST USTATO 000077' 254000 000000* JRST USTATS 000100' 254000 000000* JRST USTATZ 000101' 254000 000000* JRST UINBF 000102' 254000 000000* JRST UOUTBF 000103' 254000 000000* JRST IN 000104' 254000 000000* JRST OUT 000105' 254000 000000* JRST CLOSE1 000106' 254000 000000* JRST RELEA1 000107' 254000 000000* JRST MTAPE1 000110' 254000 000160' JRST UDGF 000111' 254000 000156' JRST UDSI 000112' 254000 000154' JRST UDSO 000113' 254000 000143' JRST UDLK 000114' 254000 000131' JRST UDEN ;77 000020 UUOT2L=.-UUOT2 SYSCON - UUO HANDLER MACRO 10 05:51 24-APR-78 PAGE 6 SYSCON MAC 24-APR-78 03:48 8-9-65 ,DISPATCH TO SPECIAL ROUTINE DEFINE DSPT(A) 000115' 200046 000003 UDSP: MOVE TAC,DEVSER(DEVDAT) 000116' 200106 000001 MOVE TAC1,DEVCHR(DEVDAT) 000117' 607100 000020 TLNN TAC1,IORET 000120' 201040 000116' MOVEI TAC,NRTOSP-4 ;IGNORE THESE CALLS FOR NON- 000121' 263140 000000 POPJ PDP, 000122' 254000 000235' NRTOSP: JRST CUXIT1 ;SKIP RETURN 000123' 254000 000235' JRST CUXIT1 ;SKIP RETURN 000124' 265240 000000* JSP DAT,ERROR ;DUMP0 000125' 265240 000124* JSP DAT,ERROR ;DUMP1 000126' 254000 000072* JRST UUOERR ;USETO 000127' 254000 000126* JRST UUOERR ;USETI 000130' 254000 000127* JRST UUOERR ;GETF 000131' 260140 000000* UDEN: PUSHJ PDP,WAIT1 000132' 661000 000002 TLO IOS,IOBEG 000133' 620000 776000 TRZ IOS,776000 000134' 202006 000002 MOVEM IOS,DEVIOS(DEVDAT) 000135' 135040 000056* LDB TAC,PUUOAC 000136' 661300 020000 TLO DEVDAT,ENTRB 000137' 621300 002000 TLZ DEVDAT,CLOSB 000140' 502301 000057* HLLM DEVDAT,USRJDA(TAC) 000141' 260140 000115' PUSHJ PDP,UDSP 000142' 254001 000004 JRST DEN(TAC) 000143' 260140 000131* UDLK: PUSHJ PDP,WAIT1 000144' 630000 000251' TDZ IOS,[XWD IOEND,776000] 000145' 202006 000002 MOVEM IOS,DEVIOS(DEVDAT) 000146' 135040 000135* LDB TAC,PUUOAC 000147' 661300 040000 TLO DEVDAT,LOOKB 000150' 621300 002000 TLZ DEVDAT,CLOSB 000151' 502301 000140* HLLM DEVDAT,USRJDA(TAC) 000152' 260140 000115' PUSHJ PDP,UDSP 000153' 254001 000005 JRST DLK(TAC) 000154' 260140 000115' DSPT(DSO)^UDSO: PUSHJ PDP,UDSP 000155' 254001 000010 JRST DSO(TAC) 000156' 260140 000115' DSPT(DSI)^UDSI: PUSHJ PDP,UDSP 000157' 254001 000011 JRST DSI(TAC) 000160' 260140 000115' DSPT(DGF)^UDGF: PUSHJ PDP,UDSP 000161' 254001 000012 JRST DGF(TAC) SYSCON - UUO HANDLER MACRO 10 05:51 24-APR-78 PAGE 7 SYSCON MAC 24-APR-78 03:48 8-9-65 , 6-CSS-DEC-CALL-PL-PRE2 , H. R. MORSE 64-11-17 , CALLING SEQUENCE , CALL 0,[SIXBIT/NAME/] , WHERE NAME IS THE NAME OF A SYSTEM ROUTINE. , IF NO SYSTEM ROUTINE WITH THE SPECIFIED NAME IF FOUND, THIS ROUTINE , EXISTS TO ERROR. , MONITOR INTERFACE , ROUTINES CALLED: ERROR, HASH, SYSTEM ROUTINES DEFINED BY , USE OF UCALIN. , SYMBOLS SET/USED: , ACCUMULATORS: DAT S/U PROG U , PDP U UUO S/U ;CONTENTS OF USER AC PLACED IN AC TAC 000162' 661600 000011 UCALL: TLO UUO,JDAT ;RELATIVIZE UUO ADDRESS 000163' 200260 000014 MOVE DAT,@UUO; DAT:=NAME OF SYSTEM ROUTINE C 000164' 205100 777760 MOVSI TAC1,-UCLLEN 000165' 312242 000174' CAME DAT,UCLTAB(TAC1); SEARCH SYSTEM TOUTINE NAME TA 000166' 253100 000165' AOBJN TAC1,.-1 000167' 135240 000146* LDB DAT,PUUOAC ;USER UUO AC FIELD 000170' 505240 000011 HRLI DAT,JDAT 000171' 200060 000005 MOVE TAC,@DAT ;PICK UP CONTENTS OF USER AC 000172' 321122 000214' JUMPL TAC1,@UCLJMP(TAC1) 000173' 254000 000130* JRST UUOERR DEFINE NAMES < X DDTIN,DDTIN X DDTOUT,DDTOUT X DDTGT,DDTGT X DDTRL,DDTRL X SETDDT,SETDDT X DEVCHR,DVCHR X GETCHR,DVCHR X WAIT,WAIT X RESET,RESET X EXIT,EXIT X LDRBLT,LDRBLT X UTPCLR,UTPCLR X DATE,DATE X SETPOV,SETPOV X SWITCH,SWITCH X TIMER,TIMER > DEFINE X (A,B) < SIXBIT /A/ > 000174' 444464 515600 UCLTAB: NAMES^ X DDTIN,DDTIN^ SIXBIT /DDTIN/ 000175' 444464 576564 X DDTOUT,DDTOUT^ SIXBIT /DDTOUT/ 000176' 444464 476400 X DDTGT,DDTGT^ SIXBIT /DDTGT/ 000177' 444464 625400 X DDTRL,DDTRL^ SIXBIT /DDTRL/ SYSCON - UUO HANDLER MACRO 10 05:51 24-APR-78 PAGE 7-1 SYSCON MAC 24-APR-78 03:48 8-9-65 000200' 634564 444464 X SETDDT,SETDDT^ SIXBIT /SETDDT/ 000201' 444566 435062 X DEVCHR,DVCHR^ SIXBIT /DEVCHR/ 000202' 474564 435062 X GETCHR,DVCHR^ SIXBIT /GETCHR/ 000203' 674151 640000 X WAIT,WAIT^ SIXBIT /WAIT/ 000204' 624563 456400 X RESET,RESET^ SIXBIT /RESET/ 000205' 457051 640000 X EXIT,EXIT^ SIXBIT /EXIT/ 000206' 544462 425464 X LDRBLT,LDRBLT^ SIXBIT /LDRBLT/ 000207' 656460 435462 X UTPCLR,UTPCLR^ SIXBIT /UTPCLR/ 000210' 444164 450000 X DATE,DATE^ SIXBIT /DATE/ 000211' 634564 605766 X SETPOV,SETPOV^ SIXBIT /SETPOV/ 000212' 636751 644350 X SWITCH,SWITCH^ SIXBIT /SWITCH/ 000213' 645155 456200 X TIMER,TIMER^ SIXBIT /TIMER/ 000020 UCLLEN=.-UCLTAB DEFINE X(A,B) < JRST B EXTERNAL B > 000214' 254000 000000* UCLJMP: NAMES^ X DDTIN,DDTIN^ JRST DDTIN 000215' 254000 000000* X DDTOUT,DDTOUT^ JRST DDTOUT 000216' 254000 000000* X DDTGT,DDTGT^ JRST DDTGT 000217' 254000 000000* X DDTRL,DDTRL^ JRST DDTRL 000220' 254000 000000* X SETDDT,SETDDT^ JRST SETDDT 000221' 254000 000000* X DEVCHR,DVCHR^ JRST DVCHR 000222' 254000 000221* X GETCHR,DVCHR^ JRST DVCHR 000223' 254000 000000* X WAIT,WAIT^ JRST WAIT 000224' 254000 000000* X RESET,RESET^ JRST RESET 000225' 254000 000000* X EXIT,EXIT^ JRST EXIT 000226' 254000 000000* X LDRBLT,LDRBLT^ JRST LDRBLT 000227' 254000 000000* X UTPCLR,UTPCLR^ JRST UTPCLR 000230' 254000 000000* X DATE,DATE^ JRST DATE 000231' 254000 000000* X SETPOV,SETPOV^ JRST SETPOV 000232' 254000 000000* X SWITCH,SWITCH^ JRST SWITCH 000233' 254000 000000* X TIMER,TIMER^ JRST TIMER SYSCON - UUO HANDLER MACRO 10 05:51 24-APR-78 PAGE 8 SYSCON MAC 24-APR-78 03:48 8-9-65 , DEV 06 00 EX COM L PT PRE 02 UXIT , H. R. MORSE 64-12-26 , CALLING SEQUENCE , ANY TRANSFER OF CONTROL TO UXIT , EXITS THIS UUO CALL. , MONITOR INTERFACE , SYMBOLS SET/USED: , ACCUMULATORS: MAY RESTORE ALL ACCUMULATORS , JDAT U , PDP U , 17 S/U , JOB AREA: JOBAC U , SYSTEM ADDRESSES: USRUXT U , USRLEV S/U SYSCON - UUO HANDLER MACRO 10 05:51 24-APR-78 PAGE 9 SYSCON MAC 24-APR-78 03:48 8-9-65 INTERN UXIT,CUXIT1,CUXIT2 000234' 350003 000000 CUXIT2: AOS (PDP) 000235' 350003 000000 CUXIT1: AOS (PDP) 000236' 262140 000046* UXIT: POP PDP,USRSAV ;RESTORE UUO EXIT ADDRESS FRO 000237' 250040 000236* EXCH TAC,USRSAV 000240' 607040 010000 TLNN TAC,USRMOD ;WAS ENTRY FROM USER MODE? 000241' 254000 000246' JRST UXIT2 000242' 202040 000237* MOVEM TAC,USRSAV ;SET UP RETURN 000243' 205751 000000* MOVSI 17, JOBAC(JDAT) ;RESTORE ACCUMULATO 000244' 251740 000017 BLT 17,17 000245' 254120 000242* UXIT1: JRST 2,@USRSAV ;RETURN TO USERS PROGRAM 000246' 250040 000245* UXIT2: EXCH TAC,USRSAV 000247' 254120 000246* JRST 2,@USRSAV END, NO ERRORS DETECTED PROGRAM BREAK IS 000252 9K CORE USED SYSCON - UUO HANDLER MACRO 10 05:51 24-APR-78 PAGE 10 SYSCON MAC 24-APR-78 03:48 SYMBOL TABLE A 000000 INT AC1 000015 INT AC2 000016 INT AC3 000017 INT AL 000001 INT ASSCON 400000 INT ASSPRG 200000 INT B 000014 INT BUFPNT 000012 INT BUFWRD 000013 INT CLDS 000000 EXT CLEN 000000 EXT CLOSB 002000 INT CLOSE1 000105' EXT CLSIN 000002 INT CLSOUT 000001 INT CUXIT1 000235' INT CUXIT2 000234' INT D 000017 INT DAT 000005 INT DATE 000230' EXT DCL 000001 INT DCW 020000 INT DDI 000007 INT DDO 000006 INT DDTGT 000216' EXT DDTIN 000214' EXT DDTMEM 000037 INT DDTOUT 000215' EXT DDTRL 000217' EXT DDTSYM 000036 INT DEN 000004 INT DEVADR 000007 INT DEVBUF 000006 INT DEVCHR 000001 INT DEVCTR 000011 INT DEVDAT 000006 INT DEVIAD 000007 INT DEVIOS 000002 INT DEVLOG 000005 INT DEVMOD 000004 INT DEVNAM 000000 INT DEVOAD 000010 INT DEVPTR 000010 INT DEVSER 000003 INT DGF 000012 INT DIN 000003 INT DLK 000005 INT DOU 000002 INT DR 000016 INT DRL 000000 INT DSI 000011 INT SYSCON - UUO HANDLER MACRO 10 05:51 24-APR-78 PAGE 10-1 SYSCON MAC 24-APR-78 03:48 SYMBOL TABLE DSO 000010 INT DTW 040000 INT DVAVAL 000040 INT DVCDR 100000 INT DVCHR 000222' EXT DVDIR 000004 INT DVDIRI 400000 INT DVIN 000002 INT DVLPT 040000 INT DVMTA 000020 INT DVOUT 000001 INT DVTTY 000010 INT ENTRB 020000 INT ERROR 000125' EXT EXIT 000225' EXT I 000010 INT IB 000013 INT IBUFB 200000 INT ILLINS 000053' EXT IN 000103' EXT INITB 400000 INT INPB 010000 INT IO 000020 INT IOACT 010000 INT IOBEG 000002 INT IOBKTL 040000 INT IOCON 000040 INT IODEND 020000 INT IODERR 200000 INT IODISC 400000 INT IODONE 400000 INT IODTER 100000 INT IOEND 000040 INT IOFST 000004 INT IOIERR 000065' EXT IOIMPM 400000 INT IONRCK 000100 INT IORDEL 000100 INT IORET 000020 INT IOS 000000 INT IOSTRT 000010 INT IOUSE 400000 INT IOW 000001 INT IOWC 000020 INT IOWS 400000 INT ITEM 000004 INT JBFADR 000000 INT JBFCTR 000002 INT JBFPTR 000001 INT JBUF 000005 INT JDAT 000011 INT JERR 002000 INT SYSCON - UUO HANDLER MACRO 10 05:51 24-APR-78 PAGE 10-2 SYSCON MAC 24-APR-78 03:48 SYMBOL TABLE JIOW 100000 INT JNA 004000 INT JOBAC 000243' EXT JOBADR 000034' EXT JOBDAT 000042' EXT JOBPDL 000044' EXT LDRBLT 000226' EXT LOOKB 040000 INT MJOBPD 000043' EXT MTAPE1 000107' EXT MTW 010000 INT NRTOSP 000122' OBUFB 100000 INT OUT 000104' EXT OUTPB 004000 INT PDP 000003 INT PICHN 000100 INT PROG 000007 INT PUUOAC 000167' EXT RELEA1 000106' EXT RESET 000224' EXT RUN 200000 INT RUNABL 204000 INT SETDDT 000220' EXT SETPOV 000231' EXT SWITCH 000232' EXT TAC 000001 INT TAC1 000002 INT TEM 000010 INT TIMER 000233' EXT TTYATC 020000 INT TTYUSE 010000 INT UCALL 000162' UCLJMP 000214' UCLLEN 000020 UCLTAB 000174' UDEN 000131' UDGF 000160' UDLK 000143' UDSI 000156' UDSO 000154' UDSP 000115' UINBF 000101' EXT UINIT 000074' EXT UOUTBF 000102' EXT USETST 000075' EXT USRJDA 000151' EXT USRMOD 010000 INT USRREL 000021' EXT USRSAV 000247' EXT USTATO 000076' EXT USTATS 000077' EXT SYSCON - UUO HANDLER MACRO 10 05:51 24-APR-78 PAGE 10-3 SYSCON MAC 24-APR-78 03:48 SYMBOL TABLE USTATZ 000100' EXT UTPCLR 000227' EXT UUO 000014 INT UUO0 000000' INT UUODSP 000070' UUOERR 000173' EXT UUOSY1 000046' UUOSYS 000030' UUOT1 000073' UUOT1L 000002 UUOT2 000075' UUOT2L 000020 UXIT 000236' INT UXIT1 000245' UXIT2 000246' WAIT 000223' EXT WAIT1 000143' EXT SSSSSSSSSSSS YYY YYY SSSSSSSSSSSS CCCCCCCCCCCC SSSSSSSSSSSS SSSSSSSSSSSS SSSSSSSSSSSS YYY YYY SSSSSSSSSSSS CCCCCCCCCCCC SSSSSSSSSSSS SSSSSSSSSSSS SSSSSSSSSSSS YYY YYY SSSSSSSSSSSS CCCCCCCCCCCC SSSSSSSSSSSS SSSSSSSSSSSS SSS YYY YYY SSS CCC SSS SSS SSS YYY YYY SSS CCC SSS SSS SSS YYY YYY SSS CCC SSS SSS SSS YYY YYY SSS CCC SSS SSS SSS YYY YYY SSS CCC SSS SSS SSS YYY YYY SSS CCC SSS SSS SSSSSSSSS YYY SSSSSSSSS CCC SSSSSSSSS SSSSSSSSS SSSSSSSSS YYY SSSSSSSSS CCC SSSSSSSSS SSSSSSSSS SSSSSSSSS YYY SSSSSSSSS CCC SSSSSSSSS SSSSSSSSS SSS YYY SSS CCC SSS SSS SSS YYY SSS CCC SSS SSS SSS YYY SSS CCC SSS SSS SSS YYY SSS CCC SSS SSS SSS YYY SSS CCC SSS SSS SSS YYY SSS CCC SSS SSS SSSSSSSSSSSS YYY SSSSSSSSSSSS CCCCCCCCCCCC SSSSSSSSSSSS SSSSSSSSSSSS SSSSSSSSSSSS YYY SSSSSSSSSSSS CCCCCCCCCCCC SSSSSSSSSSSS SSSSSSSSSSSS SSSSSSSSSSSS YYY SSSSSSSSSSSS CCCCCCCCCCCC SSSSSSSSSSSS SSSSSSSSSSSS LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT Request created: 24-April-1978 05:53:58 File: DSKB0 :SYSCSS.LST [8,296] Created: 20-April-1967 05:51:00 Printed: 24-April-1978 05:53:38 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:1595 File will be deleted after printing SYSCSS - COMMON SYSTEM SUBROUTINES MACRO 10 05:51 24-APR-78 PAGE 1 S MAC 24-APR-78 21:40 8-9-65 XLIST LIST TITLE SYSCSS - COMMON SYSTEM SUBROUTINES SUBTTL 8-9-65 EXTERNAL UXIT,ERROR,USRDDT,USRPOV,PUUOAC,USRREL ;RETURN THE DATE TO THE USER INTERNAL DATE,THSDAT 000000' 200240 000002' DATE: MOVE DAT, THSDAT 000001' 254000 000005' JRST STOAC 000002' 000000 000000 THSDAT: 0 ;CONTAINS THE DATE ;RETURN TIME SYSTEM HAS RUN IN 60THS OF A SECOND INTERNAL TIMER EXTERNAL TIME 000003' 334240 000000* TIMER: SKIPA DAT, TIME ;FALL INTO STOAC ;RETURN DATA SWITCHES INTERNAL SWITCH 000004' 700040 000005 SWITCH: DATAI DAT ;STORE DAT IN USER AC INTERNAL STOAC 000005' 135040 000000* STOAC: LDB TAC, PUUOAC 000006' 505040 000007 HRLI TAC, PROG 000007' 202260 000001 MOVEM DAT,@TAC 000010' 254000 000000* JRST UXIT ;RETURN DEVICE CHARACTERISTICS INTERNAL DVCHR EXTERNAL JOB,DEVSRC,PJOBN 000011' 200200 000000* DVCHR: MOVE ITEM,JOB 000012' 260140 000000* PUSHJ PDP,DEVSRC ;SEARCH FOR DEVICE 000013' 334240 000034' SKIPA DAT,[0] ;NOT A DEVICE 000014' 334246 000004 SKIPA DAT,DEVMOD(DEVDAT) 000015' 254000 000005' JRST STOAC 000016' 135040 000000* LDB TAC,PJOBN ;GET JOB NUMBER 000017' 312040 000011* CAME TAC,JOB ;DOES USER ALREADY HAVE THIS DEVICE? 000020' 606240 600000 TRNN DAT,ASSCON+ASSPRG ;NO 000021' 661240 000040 TLO DAT,DVAVAL ;NO, BUT HE CAN GET IT 000022' 254000 000005' JRST STOAC SYSCSS - COMMON SYSTEM SUBROUTINES MACRO 10 05:51 24-APR-78 PAGE 2 SYSCSS MAC 24-APR-78 03:01 8-9-65 , CALLING SEQUENCE , PUSHJ PDP,HASH , EXIT;L ALWAYS RETURNS HERE , COMPUTES XOR HASH TYPE INDEX FROM NAME (SIXBIT CODE) IN AC DAT , AND LEAVES THE RESULT (00 000137 001000 000000 B2+B11+B17+VEDIT 000000' RELOC MLON COMMENT * ASSEMBLY FEATURE SWITCHES (ACTION WHEN NON-ZERO) SWITCHES ON (NON-ZERO) IN DEC VERSION CCLSW GIVES RAPID PROGRAM GENERATION FEATURE FTDISK GIVES DISK FEATURES RENTSW ASSEMBLE REENTRANT PROGRAMS SWITCHES OFF (ZERO) IN DEC VERSION LNSSW GIVES LNS VERSION WFWSW GIVES ARRAY, INTEGER AND LVAR FEATURES IIISW GIVES III FEATURES OPHSH GIVES HASH SEARCH OF OPCODES * MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 2 MACRO 10 24-APR-78 02:11 DEFAULT ASSEMBLY SWITCH SETTINGS SUBTTL DEFAULT ASSEMBLY SWITCH SETTINGS IFNDEF RENTSW, IFNDEF LNSSW, IFN LNSSW, IFNDEF CCLSW, 000001 IFN CCLSW, IFNDEF WFWSW, IFNDEF FTDISK, IFNDEF IIISW, IFNDEF OPHSH, MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 3 MACRO 10 24-APR-78 02:11 OTHER PARAMETERS SUBTTL OTHER PARAMETERS 000062 .PDP== ^D50 ;BASIC PUSH-DOWN POINTER IFNDEF LPTWID, ;DEFAULT WIDTH OF PRINTER 000170 .LPTWD==8* ;USEFUL WIDTH IN MAIN LISTING 000130 .CPL== .LPTWD-^D32 ;WIDTH AVAIABLE FOR TEXT WHEN ;BINARY IS IN HALFWORD FORMAT 000067 .LPP==^D55 ;LINES/PAGE 000050 .STP== ^D40 ;STOW SIZE 000120 .TBUF== ^D80 ;TITLE BUFFER 000120 .SBUF== ^D80 ;SUB-TITLE BUFFER 000024 .IFBLK==^D20 ;IFIDN COMPARISON BLOCK SIZE 000022 .R1B==^D18 000012 .UNIV==^D10 ;NUMBER OF UNIVERSAL DEFINITIONS 000004 .LEAF==4 ;SIZE OF BLOCKS IN MACRO TREE 000001 NCOLS==1 ;NUMBER OF COLUMNS IN SYMBOL TABLE IFN CCLSW,> IFN OPHSH,> IFNDEF NUMBUF,< IFE LNSSW, IFN LNSSW, > EXTERN JOBREL,JOBSYM,JOBDDT,JOBFF,JOBAPR,JOBSA IFN CCLSW,< EXTERN JOBERR> SALL ;SUPPRESS ALL MACROS ;SOME ASCII CHARACTERS 000011 HT==11 000012 LF==12 000013 VT==13 000014 FF==14 000015 CR==15 000033 EOL==33 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 4 MACRO 10 24-APR-78 02:11 OTHER PARAMETERS ;ACCUMULATORS 000000 AC0== 0 000001 AC1= AC0+1 000002 AC2= AC1+1 000003 SDEL= 3 ;SEARCH INCREMENT 000004 SX= SDEL+1 ;SEARCH INDEX 000005 ARG= 5 ;ARGUMENT 000006 V= 6 ;VALUE 000007 C= 7 ;CURRENT CHARACTER 000010 CS= C+1 ;CHARACTER STATUS BITS 000011 RC= 11 ;RELOCATION BITS 000012 MWP= 12 ;MACRO WRITE POINTER 000013 MRP= 13 ;MACRO READ POINTER 000014 IO= 14 ;IO REGISTER (LEFT) 000014 ER== IO ;ERROR REGISTER (RIGHT) 000015 FR= 15 ;FLAG REGISTER (LEFT) 000015 RX== FR ;CURRENT RADIX (RIGHT) 000016 MP= 16 ;MACRO PUSHDOWN POINTER 000017 PP= 17 ;BASIC PUSHDOWN POINTER 000003 %OP== 3 000005 %MAC== 5 000002 %DSYM== 2 000001 %SYM== 1 000006 %DMAC== %MAC+1 OPDEF RESET [CALLI 0] OPDEF SETDDT [CALLI 2] OPDEF DDTOUT [CALLI 3] OPDEF DEVCHR [CALLI 4] OPDEF WAIT [MTAPE 0] OPDEF CORE [CALLI 11] OPDEF EXIT [CALLI 12] OPDEF UTPCLR [CALLI 13] OPDEF DATE [CALLI 14] OPDEF APRENB [CALLI 16] OPDEF MSTIME [CALLI 23] OPDEF PJOB [CALLI 30] OPDEF RUN [CALLI 35] OPDEF TMPCOR [CALLI 44] MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 5 MACRO 10 24-APR-78 02:11 OTHER PARAMETERS ;FR FLAG REGISTER (FR/RX) 000001 IOSCR== 000001 ;NO CR AFTER LINE 000004 MTAPSW==000004 ;MAG TAPE 000010 ERRQSW==000010 ;IGNORE Q ERRORS 000020 LOADSW==000020 ;END OF PASS1 & NO EOF YET 000040 DCFSW== 000040 ;DECIMAL FRACTION 000100 RIM1SW==000100 ;RIM10 MODE 000200 NEGSW== 000200 ;NEGATIVE ATOM 000400 RIMSW== 000400 ;RIM OUTPUT 001000 PNCHSW==001000 ;RIM/BIN OUTPUT WANTED 002000 CREFSW==002000 004000 R1BSW== 004000 ;RIM10 BINARY OUTPUT 010000 TMPSW== 010000 ;EVALUATE CURRENT ATOM 020000 INDSW== 020000 ;INDIRECT ADDRESSING WANTED 040000 RADXSW==040000 ;RADIX ERROR SWITCH 100000 FSNSW== 100000 ;NON BLANK FIELD SEEN 200000 MWLFLG==200000 ;ON FOR DON'T ALLOW MULTI-WORD LITERALS 400000 P1== 400000 ;PASS1 ;IO FLAG REGISTER (IO/ER) 400000 FLDSW== 400000 ;ADDRESS FIELD 200000 IOMSTR==200000 100000 ARPGSW==100000 ;ALLOW RAPID PROGRAM GENERATION 040000 IOPROG==040000 ;SUPRESS LISTING (LIST/XLIST PSEUDO OP) 020000 NUMSW== 020000 010000 IOMAC== 010000 ;MACRO EXPANSION IN PROGRESS 004000 IOPALL==004000 ;SUPRESS LISTING OF MACRO EXPANSIONS 002000 IONCRF==002000 ;SUPRESS OUTPUT OF CREF INFORMATION 001000 CRPGSW==001000 ;CURRENTLY IN PROGRESS ON RPG 000400 IOCREF==000400 ;WE ARE NOW OUTPUTTING CREF INFO 000200 IOENDL==000200 ;BEEN TO STOUT 000100 IOPAGE==000100 000040 DEFCRS==000040 ;THIS IS A DEFINING OCCURANCE (MACROS) 000020 IOIOPF==000020 ;IOP INSTRUCTION SEEN 000010 MFLSW== 000010 ;MULTI-FILE MODE,PRGEND SEEN 000004 IORPTC==000004 ;REPEAT CURRENT CHARACTER 000002 IOTLSN==000002 ;TITLE SEEN 000001 IOSALL==000001 ;SUPPRESS MACRO LISTING EVEN IF BINARY IS GENERATED OPDEF JUMP1 [JUMPL FR, ] ;JUMP IF PASS 1 OPDEF JUMP2 [JUMPGE FR, ] ;JUMP IF PASS 2 OPDEF JUMPOC [JUMPGE IO, ] ;JUMP IF IN OP-CODE FIELD OPDEF JUMPAD [JUMPL IO, ] ;JUMP IF IN ADDRESS FIELD OPDEF JUMPCM [JUMPL CS, ] ;JUMP IF CURRENT CHAR IS COMMA OPDEF JUMPNC [JUMPGE CS, ] ;JUMP IF CURRENT CHAR IS NON-COMMA MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 6 MACRO 10 24-APR-78 02:11 OTHER PARAMETERS ;ER ERROR REGISTERS (IO/ER) 000020 ERRM== 000020 ;MULTIPLY DEFINED SYMBOL 000040 ERRE== 000040 ;ILLEGAL USE OF EXTERNAL 000100 ERRP== 000100 ;PHASE DISCREPANCY 000200 ERRO== 000200 ;UNDEFINED OP CODE 000400 ERRN== 000400 ;NUMBER ERROR 001000 ERRV== 001000 ;VALUE PREVIOUSLY UNDEFINED 002000 ERRU== 002000 ;UNDEFINED SYMBOL 004000 ERRR== 004000 ;RELOCATION ERROR 010000 ERRL== 010000 ;LITERAL ERROR 020000 ERRD== 020000 ;REFERENCE TO MULTIPLY DEFINED SYMBOL 040000 ERRA== 040000 ;PECULIAR ARGUMENT 100000 ERRX== 100000 ;MACRO DEFINITION ERROR 200000 ERRQ== 200000 ;QUESTIONABLE, NON-FATAL ERROR 777760 ERRORS==777760 000002 LPTSW== 000002 000001 TTYSW== 000001 ;SYMBOL TABLE FLAGS 400000 SYMF== 400000 ;SYMBOL 200000 TAGF== 200000 ;TAG 100000 NOOUTF==100000 ;NO DDT OUTPUT WFW 040000 SYNF== 040000 ;SYNONYM 020000 MACF== SYNF_-1 ;MACRO 010000 OPDF== SYNF_-2 ;OPDEF 004000 PNTF== 004000 ;"VALUE" IN SYMBOL TBL IS PNTR TO 36BIT VALUE 002000 UNDF== 002000 ;UNDEFINED 001000 EXTF== 001000 ;EXTERNAL 000400 INTF== 000400 ;INTERNAL 000200 ENTF== 000200 ;ENTRY 000100 VARF== 000100 ;VARIABLE 000020 MDFF== 000020 ;MULTIPLY DEFINED 000010 SPTR== 000010 ;SPECIAL EXTERNAL POINTER 000004 SUPRBT==000004 ;SUPRESS OUTPUT TO DDT 000002 LELF== 000002 ;LEFT HAND RELOCATABLE 000001 RELF== 000001 ;RIGHT HAND RELOCATABLE 200000 LITF== 200000 ;FLAG FOR PSEUDO-OPS INVALID IN LIT'S 100000 ADDF== 100000 ;FLAG FOR PSEUDO-OPS INVALID IN ADDRESSES 200000 TNODE== 200000 ;TERMINAL NODE FOR EVALEX MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 7 MACRO 10 24-APR-78 02:11 RUN UUO SUBTTL RUN UUO IFN CCLSW,< ;THIS CODE MUST BE IN FIRST 1K TO ALLOW MAXIMUM SPACE ; FOR OVERWRITING ; 74 APPEARS BECAUSE ONLY LOCS 74 AND BEYOND ARE SAVED BY "SAVE" 000000' 000000 000016' IFN CCLSW, LIST MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 9 MACRO 10 24-APR-78 02:11 RUN UUO 000066' 550000 014104' DELETE: HRRZ EXTMP ;IF THE EXTENSION 000067' 302000 645560 CAIE (SIXBIT/TMP/) ;IS .TMP 000070' 263740 000000 POPJ PP, ;RETURN. 000071' 070200 000000 CLOSE CTL2, ;DELETE 000072' 403200 000005 SETZB 4,5 ;THE COMMAND FILE. 000073' 403300 000007 SETZB 6,7 000074' 055200 000004 RENAME CTL2,4 ; 000075' 255000 000000 JFCL 000076' 263740 000000 POPJ PP, > MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 10 MACRO 10 24-APR-78 02:11 START ASSEMBLING SUBTTL START ASSEMBLING 000077' 260740 003356' ASSEMB: PUSHJ PP,INZ ;INITIALIZE FOR PASS 000100' 200000 014604' MOVE [ASCII /.MAIN/] 000101' 202000 013701' MOVEM TBUF 000102' 201000 013527' MOVEI SBUF 000103' 542000 013550' HRRM SUBTTX 000104' 260740 001415' ASSEM1: PUSHJ PP,CHARAC ;TEST FOR FORM FEED 000105' 335000 013452' SKIPGE LIMBO ;CRLF FLAG? 000106' 254000 000104' JRST ASSEM1 ;YES ,IGNORE LF 000107' 306340 000014 CAIN C,14 000110' 332000 013214' SKIPE SEQNO 000111' 254000 000115' JRST ASSEM2 000112' 260740 010674' PUSHJ PP,OUTFF1 000113' 260740 001774' PUSHJ PP,OUTLI 000114' 254000 000104' JRST ASSEM1 000115' 350000 014051' ASSEM2: AOS TAGINC 000116' 306340 000134 CAIN C,"\" ;BACK-SLASH? 000117' 625600 010000 TLZA IO,IOMAC ;YES, LIST IF IN MACRO 000120' 661600 000004 TLO IO,IORPTC 000121' 260740 000125' PUSHJ PP,STMNT ;OFF WE GO 000122' 627600 000200 TLZN IO,IOENDL ;WAS STOUT PRE-EMPTED? 000123' 260740 000237' PUSHJ PP,STOUT ;NO, POLISH OFF LINE 000124' 254000 000104' JRST ASSEM1 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 11 MACRO 10 24-APR-78 02:11 STATEMENT PROCESSOR SUBTTL STATEMENT PROCESSOR 000125' 621640 120000 STMNT: TLZ FR,INDSW!FSNSW 000126' 625600 400000 TLZA IO,FLDSW 000127' 260740 000253' STMNT1: PUSHJ PP,LABEL 000130' 260740 000334' STMNT2: PUSHJ PP,ATOM ;GET THE FIRST ATOM 000131' 306340 000035 CAIN C,35 ;"="? 000132' 254000 004112' JRST ASSIGN ;YES 000133' 306340 000032 CAIN C,32 ;":"? 000134' 254000 000127' JRST STMNT1 ;YES 000135' 321600 000200' JUMPAD STMNT7 ;NUMERIC EXPRESSION 000136' 326000 000146' JUMPN AC0,STMN2A ;JUMP IF NON NULL FIELD 000137' 336000 013773' SKIPN LITLVL ;ALLOW COMMA IN LITERALS 000140' 302340 000014 CAIE C,14 ;NULL, COMMA? 000141' 306340 000033 CAIN C,EOL ;OR END OF LINE? 000142' 263740 000000 POPJ PP, ;YES,EXIT 000143' 306340 000135 CAIN C,"]" ;CLOSING LITERAL? 000144' 263740 000000 POPJ PP, ;YES 000145' 254000 000201' JRST STMNT9 ;NO,AT LEAST SKIP ALL THIS NONSENSE 000146' 322340 000150' STMN2A: JUMPE C,.+2 000147' 661600 000004 TLO IO,IORPTC 000150' 260740 012573' PUSHJ PP,MSRCH ;SEARCH FOR MACRO/OPDEF/SYN 000151' 254000 000157' JRST STMNT3 ;NOT FOUND, TRY OP CODE 000152' 135140 014605' LDB SDEL,[POINT 3,ARG,5] 000153' 322140 003400' JUMPE SDEL,ERRAX ;ERROR IF NO FLAGS 000154' 362140 004437' SOJE SDEL,OPD1 ;OPDEF IF 1 000155' 362140 005705' SOJE SDEL,CALLM ;MACRO IF 2 000156' 254000 000161' JRST STMNT4 ;SYNONYM, PROCESS WITH OP-CODES 000157' 260740 010754' STMNT3: PUSHJ PP,OPTSCH ;SEARCH OP CODE TABLE 000160' 254000 000167' JRST STMNT5 ;NOT FOUND 000161' 510000 000006 STMNT4: HLLZ AC0,V ;PUT CODE IN AC0 000162' 620300 100000 TRZ V,ADDF ;CLEAR ADDRESS NON-VALID FLAG 000163' 622300 200000 TRZE V,LITF ;VALID IN LITERAL? 000164' 336000 013773' SKIPN LITLVL ;NO, ARE WE IN A LITERAL? 000165' 254006 000000 JRST 0(V) ;NO, GO TO APPROPRIATE PROCESSOR 000166' 263740 000000 POPJ PP, ;YES,EXIT 000167' 260740 012610' STMNT5: PUSHJ PP,SSRCH ;TRY SYMBOLS 000170' 254000 000207' JRST STMNT8 ;NOT FOUND 000171' 603240 003000 TLNE ARG,EXTF!UNDF ;EXTERNAL OR UNDEFINED? 000172' 254000 000200' JRST STMNT7 ;YES, PROCESS IN EVALEX 000173' 607440 777776 TLNN RC,-2 ;CHECK FOR EXTERNAL 000174' 602440 777776 TRNE RC,-2 000175' 254000 000200' JRST STMNT7 000176' 200000 000006 MOVE AC0,V ;FOUND, PUT VALUE IN AC0 000177' 661600 020000 TLO IO,NUMSW ;FLAG AS NUMERIC 000200' 621600 000004 STMNT7: TLZ IO,IORPTC 000201' 260740 001065' STMNT9: PUSHJ PP,EVALHA ;EVALUATE EXPRESSION 000202' 603640 100000 TLNE FR,FSNSW ;FIELD SEEN? 000203' 254000 002751' JRST STOW ;YES,STOW THE CODE AND EXIT 000204' 302340 000075 CAIE C,"]"-40 ;CLOSING LITERAL? MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 11-1 MACRO 10 24-APR-78 02:11 STATEMENT PROCESSOR 000205' 660600 200000 TRO ER,ERRQ ;NO, GIVE "Q" ERROR 000206' 263740 000000 POPJ PP, ;EXIT MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 12 MACRO 10 24-APR-78 02:11 STATEMENT PROCESSOR 000207' 201300 000000 STMNT8: MOVEI V,0 ;ALWAYS START SCAN WITH 0 000210' 301300 000112 CAIL V,CALNTH ;END OF TABLE? 000211' 254000 000221' JRST STMN8C ;YES, TRY TTCALLS 000212' 312006 012443' CAME AC0,CALTBL(V) ;FOUND IT? 000213' 344300 000210' AOJA V,.-3 ;NO,TRY AGAIN 000214' 275300 000001 SUBI V,NEGCAL ;CALLI'S START AT -1 000215' 505300 047000 HRLI V,(CALLI) ;PUT IN UUO 000216' 205240 010000 STMN8D: MOVSI ARG,OPDF ;SET FLAG FOR OPDEF 000217' 260740 013036' STMN8B: PUSHJ PP,INSERT ;PUT OPDEF IN TABLE 000220' 254000 004441' JRST OPD ;AND TREAT AS OPDEF 000221' 400300 000000 STMN8C: SETZ V, ;START WITH ZERO 000222' 301300 000016 CAIL V,TTCLTH ;END OF TABLE? 000223' 254000 000231' JRST STMN8A ;YES, ERROR 000224' 312006 012555' CAME AC0,TTCTBL(V) ;MATCH? 000225' 344300 000222' AOJA V,.-3 ;NO, KEEP TRYING 000226' 242300 000005 LSH V,5 ;PUT IN AC FIELD (RIGHT HALF) 000227' 515306 051000 HRLZI V,<(TTCALL)>(V) ;PUT UUO IN LEFT HALF 000230' 254000 000216' JRST STMN8D ;SET OPDEF FLAG 000231' 403300 000011 STMN8A: SETZB V,RC ;CLEAR VALUE AND RELOCATION 000232' 660600 000200 TRO ER,ERRO ;FLAG AS UNDEFINED OP-CODE 000233' 321640 004441' JUMP1 OPD ;TREAT AS STANDARD OP ON PASS1 000234' 205240 013000 MOVSI ARG,OPDF!UNDF!EXTF ;SET A FEW FLAGS 000235' 254000 000217' JRST STMN8B ;TO FORCE OUT A MESSAGE ;STATEMENT OUT PASSES REMAINDER OF LINE (CMNT) ;UNTIL A LINE TERMINATOR IS SEEN. 000236' 665600 000204 STOUTS: TLOA IO,IOENDL!IORPTC 000237' 661600 000004 STOUT: TLO IO,IORPTC 000240' 260740 004543' PUSHJ PP,BYPAS1 000241' 306340 000014 CAIN C,14 ;COMMA? 000242' 331000 013555' SKIPL STPX ;YES, ERROR IF CODE STORED 000243' 306340 000033 CAIN C,EOL 000244' 665600 000004 TLOA IO,IORPTC 000245' 660600 200000 TRO ER,ERRQ 000246' 260740 001415' STOUT1: PUSHJ PP,CHARAC 000247' 307340 000015 CAIG C,CR 000250' 307340 000011 CAIG C,HT 000251' 254000 000246' JRST STOUT1 000252' 254000 001556' JRST OUTLIN ;OUTPUT THE LINE (BIN AND LST) MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 13 MACRO 10 24-APR-78 02:11 LABEL PROCESSOR SUBTTL LABEL PROCESSOR 000253' 321600 000317' LABEL: JUMPAD LABEL4 ;COMPARE IF NON-SYMBOLIC 000254' 322000 000321' JUMPE AC0,LABEL5 ;ERROR IF BLANK 000255' 661600 000040 TLO IO,DEFCRS ;THIS IS A DEFINITION 000256' 260740 012610' PUSHJ PP,SSRCH ;SEARCH FOR OPERAND 000257' 205240 602000 MOVSI ARG,SYMF!UNDF!TAGF ;NOT FOUND 000260' 607240 001000 TLNN ARG,EXTF ;OPERAND FOUND (SKIP EXIT) 000261' 254000 000266' JRST LABEL0 000262' 321640 000313' JUMP1 LABEL3 ;ERROR ON PASS1 000263' 607240 002000 TLNN ARG,UNDF ;UNDEFINED ON PASS1 000264' 254000 000313' JRST LABEL3 ;NO, FLAG ERROR 000265' 621240 005000 TLZ ARG,EXTF!PNTF ;TURN OFF EXT FLAG NOW 000266' 627240 002100 LABEL0: TLZN ARG,UNDF!VARF ;WAS IT PREVIOUSLY DEFINED? 000267' 254000 000310' JRST LABEL2 ;YES, CHECK EQUALITY 000270' 200300 013777' MOVE V,LOCA ;WFW 000271' 200440 014004' MOVE RC,MODA 000272' 661240 200000 TLO ARG,TAGF 000273' 260740 006531' PUSHJ PP,PEEK ;GET NEXT CHAR. 000274' 302340 000072 CAIE C,":" ;SPECIAL CHECK FOR :: 000275' 254000 000301' JRST LABEL1 ;NO MATCH 000276' 661240 000400 TLO ARG,INTF ;MAKE IT INTERNAL 000277' 260740 001363' PUSHJ PP,GETCHR ;PROCESS NEXT CHAR. 000300' 260740 006531' PUSHJ PP,PEEK ;PREVIEW NEXT CHAR. 000301' 302340 000041 LABEL1: CAIE C,"!" ;HALF-KILL SIGN 000302' 254000 000305' JRST LABEL6 ;NO 000303' 661240 100000 TLO ARG,NOOUTF ;YES, SUPPRESS IT 000304' 260740 001363' PUSHJ PP,GETCHR ;AND GET RID OF IT 000305' 202000 013211' LABEL6: MOVEM AC0,TAG ;SAVE FOR PASS 1 ERRORS 000306' 513000 014051' HLLZS TAGINC ;ZERO INCREMENT 000307' 254000 013036' JRST INSERT ;INSERT/UPDATE AND EXIT 000310' 526300 013776' LABEL2: HRLOM V,LOCBLK ;SAVE LIST LOCATION 000311' 316300 013777' CAMN V,LOCA ;DOES IT COMPARE WITH PREVIOUS? WFW 000312' 312440 014004' CAME RC,MODA 000313' 665240 000020 LABEL3: TLOA ARG,MDFF ;NO, FLAG MULTIPLY DEFINED AND SKIP 000314' 254000 000323' JRST LABEL7 ;YES, GET RID OF EXTRA CHARS. 000315' 660600 000020 TRO ER,ERRM ;FLAG MULTIPLY DEFINED ERROR 000316' 254000 013137' JRST UPDATE ;UPDATE AND EXIT 000317' 316000 013777' LABEL4: CAMN AC0,LOCA ;DO THEY COMPARE? 000320' 312440 014004' CAME RC,MODA 000321' 660600 000100 LABEL5: TRO ER,ERRP ;NO, FLAG PHASE ERROR 000322' 263740 000000 POPJ PP, 000323' 332000 013773' LABEL7: SKIPE LITLVL ;LABEL IN A LITERAL? 000324' 202000 013774' MOVEM AC0,LITLBL ;YES, SAVE LABEL NAME FOR LATER 000325' 260740 006531' PUSHJ PP,PEEK ;INSPECT A CHAR. 000326' 306340 000072 CAIN C,":" ;COLON? 000327' 260740 001363' PUSHJ PP,GETCHR ;YES, DISPOSE OF IT 000330' 260740 006531' PUSHJ PP,PEEK ;EXAMINE ONE MORE CHAR. 000331' 306340 000041 CAIN C,"!" ;EXCLAMATION? 000332' 254000 001363' JRST GETCHR ;YES, INDEED MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 14 MACRO 10 24-APR-78 02:11 LABEL PROCESSOR 000333' 263740 000000 POPJ PP, MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 15 MACRO 10 24-APR-78 02:11 ATOM PROCESSOR SUBTTL ATOM PROCESSOR 000334' 260740 000363' ATOM: PUSHJ PP,CELL ;GET FIRST CELL 000335' 603600 020000 TLNE IO,NUMSW ;IF NON-NUMERIC 000336' 302340 000042 ATOM1: CAIE C,42 ;OR NOT A BINARY SHIFT, 000337' 263740 000000 POPJ PP, ;EXIT 000340' 261740 000000 PUSH PP,AC0 ;STACK REGISTERS, ITS A BINARY SHIFT 000341' 261740 000001 PUSH PP,AC1 000342' 261740 000011 PUSH PP,RC 000343' 261740 000015 PUSH PP,RX 000344' 541640 000012 HRRI RX,^D10 ;COMPUTE SHIFT RADIX 10 000345' 260740 000362' PUSHJ PP,CELLSF ;GET SHIFT 000346' 200240 000011 MOVE ARG,RC ;SAVE RELOCATION 000347' 262740 000015 POP PP,RX ;RESTORE REGISTERS 000350' 262740 000011 POP PP,RC 000351' 262740 000001 POP PP,AC1 000352' 210200 000000 MOVN SX,AC0 ;USE NEGATIVE OF SHIFT 000353' 262740 000000 POP PP,AC0 000354' 326240 000441' JUMPN ARG,NUMER2 ;IF NOT ABSOLUTE 000355' 607600 020000 TLNN IO,NUMSW ;AND NUMERIC, 000356' 254000 000441' JRST NUMER2 ;FLAG ERROR 000357' 246004 000043 LSHC AC0,^D35(SX) 000360' 242444 000043 LSH RC,^D35(SX) 000361' 254000 000336' JRST ATOM1 ;TEST FOR ANOTHER MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 16 MACRO 10 24-APR-78 02:11 ATOM PROCESSOR 000362' 661600 400000 CELLSF: TLO IO,FLDSW 000363' 403000 000011 CELL: SETZB AC0,RC ;CLEAR RESULT AND RELOCATION 000364' 403040 000002 SETZB AC1,AC2 ;CLEAR WORK REGISTERS 000365' 202740 014014' MOVEM PP,PPTEMP ;SAVE PUSHDOWN POINTER 000366' 621600 020000 TLZ IO,NUMSW 000367' 625640 040240 TLZA FR,NEGSW!DCFSW!RADXSW 000370' 661600 400000 CELL1: TLO IO,FLDSW 000371' 260740 004543' PUSHJ PP,BYPASS 000372' 135300 014606' LDB V,[POINT 4,CSTAT(C),14] ;GET CODE 000373' 256006 000374' XCT .+1(V) ;EXECUTE, INDEX VIA BITS 11,12,13,14 OF CSTAT TABLE 000374' 254000 000370' JRST CELL1 ;0; BLANK, (TAB OR "+") 000375' 254000 000407' JRST LETTER ;1; LETTER ] $ % ( ) , ; > 000376' 641640 000200 TLC FR,NEGSW ;2; "-" 000377' 661640 020000 TLO FR,INDSW ;3; "@" 000400' 254000 000717' JRST NUM1 ;4; NUMERIC 0 - 9 000401' 254000 000662' JRST ANGLB ;5; "<" 000402' 254000 000557' JRST SQBRK ;6; "[" 000403' 254000 000456' JRST QUOTES ;7; ""","'" 000404' 254000 000523' JRST QUAL ;10; "^" 000405' 254000 000700' JRST PERIOD ;11; "." 000406' 664600 200000 TROA ER,ERRQ ;12; ERROR, FLAG AND TREAT AS DELIMITER ;12; ! # & * / : = ? \ _ MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 17 MACRO 10 24-APR-78 02:11 ATOM PROCESSOR 000407' 665100 440600 LETTER: TLOA AC2,(POINT 6,AC0,) ;SET BYTE POINTER 000410' 260740 001363' LETTE1: PUSHJ PP,GETCHR ;GET CHARACTER 000411' 607400 000006 TLNN CS,6 ;ALPHA-NUMERIC? 000412' 254000 000416' JRST LETTE3 ;NO,TEST FOR VARIABLE 000413' 603100 770000 TLNE AC2,770000 ;STORE ONLY SIX BYTES 000414' 136340 000002 LETTE2: IDPB C,AC2 ;RETURN FROM PERIOD 000415' 254000 000410' JRST LETTE1 000416' 302340 000003 LETTE3: CAIE C,03 ;"#"? 000417' 263740 000000 POPJ PP, 000420' 322000 000455' JUMPE AC0,POPOUT ;TEST FOR NULL 000421' 260740 006531' PUSHJ PP,PEEK ;PEEK AT NEXT CHAR. 000422' 306340 000043 CAIN C,"#" ;IS IT 2ND #? 000423' 254000 000435' JRST LETTE4 ;YES, THEN IT'S AN EXTERN 000424' 661600 000040 TLO IO,DEFCRS 000425' 260740 012610' PUSHJ PP,SSRCH ;YES, SEARCH FOR SYMBOL (OPERAND) 000426' 205240 402000 MOVSI ARG,SYMF!UNDF ;NOT FOUND, FLAGAS UNDEFINED SYM. 000427' 607240 002000 TLNN ARG,UNDF ;UNDEFINED? 000430' 254000 001363' JRST GETCHR ;NO, GET NEXT CHAR AND RETURN 000431' 661240 000100 TLO ARG,VARF ;YES, FLAG AS A VARIABLE 000432' 660600 002000 TRO ER,ERRU ;SET UNDEFINED ERROR FLAG 000433' 260740 013035' PUSHJ PP,INSERZ ;INSERT IT WITH A ZERO VALUE 000434' 254000 000442' JRST GETDEL 000435' 260740 001363' LETTE4: PUSHJ PP,GETCHR ;AND SCAN PAST IT 000436' 260740 001363' PUSHJ PP,GETCHR ;GET RID OF # 000437' 254000 004006' JRST EXTER1 ;PUT IN SYMBOL TABLE 000440' 403000 000011 NUMER1: SETZB AC0,RC ;RETURN ZERO 000441' 660600 000400 NUMER2: TRO ER,ERRN ;FLAG ERROR 000442' 260740 004543' GETDEL: PUSHJ PP,BYPASS 000443' 322340 000442' GETDE1: JUMPE C,.-1 000444' 201040 000000 MOVEI AC1,0 000445' 661600 420000 GETDE3: TLO IO,NUMSW!FLDSW ;FLAG NUMERIC 000446' 607640 000200 TLNN FR,NEGSW ;IS ATOM NEGATIVE? 000447' 263740 000000 POPJ PP, ;NO, EXIT 000450' 322040 000453' JUMPE AC1,GETDE2 000451' 213000 000001 MOVNS AC1 000452' 654000 014607' TDCA AC0,[-1] 000453' 213000 000000 GETDE2: MOVNS AC0 ;YES, NEGATE VALUE 000454' 213000 000011 MOVNS RC ;AND RELOCATION 000455' 263740 000000 POPOUT: POPJ PP, ;EXIT MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 18 MACRO 10 24-APR-78 02:11 ATOM PROCESSOR 000456' 302340 000007 QUOTES: CAIE C,"'"-40 ;IS IT "'" 000457' 254000 000465' JRST QUOTE ;NO MUST BE """ 000460' 254000 000507' JRST SQUOTE ;YES 000461' 603000 376000 QUOTE0: TLNE AC0,376000 ;5 CHARACTERS STORED ALREADY? 000462' 660600 200000 TRO ER,ERRQ ;YES, GIVE WARNING 000463' 240000 000007 ASH AC0,7 000464' 434000 000007 IOR AC0,C 000465' 260740 001415' QUOTE: PUSHJ PP,CHARAC ;GET 7-BIT ASCII 000466' 307340 000015 CAIG C,15 ;TEST FOR LF, VT, FF OR CR 000467' 305340 000012 CAIGE C,12 000470' 254000 000472' JRST .+2 ;NO, SO ALL IS WELL 000471' 254000 000501' JRST QUOTE2 ;ESCAPE WITH Q ERROR 000472' 302340 000042 CAIE C,42 000473' 254000 000461' JRST QUOTE0 000474' 260740 006531' PUSHJ PP,PEEK ;LOOK AT NEXT CHAR. 000475' 302340 000042 CAIE C,42 000476' 254000 000502' JRST QUOTE1 ;RESTORE REPEAT LEVEL AND QUIT 000477' 260740 001415' PUSHJ PP,CHARAC ;GET NEXT CHAR. 000500' 254000 000461' JRST QUOTE0 ;USE IT 000501' 660600 200000 QUOTE2: TRO ER,ERRQ ;SET Q ERROR 000502' 254000 000442' QUOTE1: JRST GETDEL 000503' 603000 770000 SQUOT0: TLNE AC0,770000 ;SIX CHARS. STORED ALREADY ? 000504' 660600 200000 TRO ER,ERRQ ;YES 000505' 242000 000006 LSH AC0,6 000506' 435007 777740 IORI AC0,-40(C) ;OR IN SIXBIT CHAR. 000507' 260740 001415' SQUOTE: PUSHJ PP,CHARAC 000510' 307340 000015 CAIG C,CR 000511' 305340 000012 CAIGE C,LF 000512' 254000 000514' JRST .+2 000513' 254000 000502' JRST QUOTE1 000514' 302340 000047 CAIE C,"'" 000515' 254000 000503' JRST SQUOT0 000516' 260740 006531' PUSHJ PP,PEEK 000517' 302340 000047 CAIE C,"'" 000520' 254000 000502' JRST QUOTE1 000521' 260740 001415' PUSHJ PP,CHARAC 000522' 254000 000503' JRST SQUOT0 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 19 MACRO 10 24-APR-78 02:11 ATOM PROCESSOR 000523' 260740 004543' QUAL: PUSHJ PP,BYPAS1 ;SKIP BLANKS, GET NEXT CHARACTER 000524' 306340 000042 CAIN C,42 ;"B"? 000525' 254000 000540' JRST QUAL2 ;YES, RADIX=D2 000526' 306340 000057 CAIN C,57 ;"O"? 000527' 254000 000537' JRST QUAL8 ;YES, RADIX=D8 000530' 306340 000046 CAIN C,46 ;"F"? 000531' 254000 000713' JRST NUMDF ;YES, PROCESS DECIMAL FRACTION 000532' 306340 000054 CAIN C,54 ;"L"? 000533' 254000 000550' JRST QUALL ;YES 000534' 302340 000044 CAIE C,44 ;"D"? 000535' 254000 000440' JRST NUMER1 ;NO, FLAG NUMERIC ERROR 000536' 271100 000002 ADDI AC2,2 000537' 271100 000006 QUAL8: ADDI AC2,6 000540' 271100 000002 QUAL2: ADDI AC2,2 000541' 261740 000015 PUSH PP,RX 000542' 540640 000002 HRR RX,AC2 000543' 260740 000362' PUSHJ PP,CELLSF 000544' 262740 000015 QUAL2A: POP PP,RX 000545' 607600 020000 TLNN IO,NUMSW 000546' 254000 000440' JRST NUMER1 000547' 254000 000443' JRST GETDE1 000550' 261740 000015 QUALL: PUSH PP,FR 000551' 260740 000362' PUSHJ PP,CELLSF 000552' 200100 000000 MOVE AC2,AC0 000553' 201000 000044 MOVEI AC0,^D36 000554' 322100 000544' JUMPE AC2,QUAL2A 000555' 242100 777777 LSH AC2,-1 000556' 364000 000554' SOJA AC0,.-2 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 20 MACRO 10 24-APR-78 02:11 LITERAL PROCESSOR SUBTTL LITERAL PROCESSOR 000557' 261740 000015 SQBRK: PUSH PP,FR 000560' 261740 013742' PUSH PP,EXTPNT ;ALLOW EXTERN TO PRECEDE LIT IN XWD 000561' 402000 013742' SETZM EXTPNT 000562' 332000 013773' SKIPE LITLVL ;SAVE SEQNO AND PAGE IF NOT IN LIT ALREADY 000563' 254000 000570' JRST SQB5 000564' 200340 014101' MOVE C,SEQNO2 000565' 202340 013756' MOVEM C,LITSEQ 000566' 200340 014100' MOVE C,PAGENO 000567' 202340 013755' MOVEM C,LITPG 000570' 265100 003007' SQB5: JSP AC2,SVSTOW 000571' 260740 000125' SQB3: PUSHJ PP,STMNT 000572' 306340 000075 CAIN C,75 ;CHECK FOR ] 000573' 254000 000627' JRST SQB1 000574' 661600 000004 TLO IO,IORPTC 000575' 603640 200000 TLNE FR,MWLFLG ;CALL IT ] IF NOT MULTI-WORD FLAG 000576' 254000 000630' JRST SQB2 ;BUT REPEAT LAST CHARACTER 000577' 260740 004543' PUSHJ PP,BYPAS1 000600' 306340 000033 CAIN C,EOL 000601' 665600 000004 TLOA IO,IORPTC 000602' 660600 200000 TRO ER,ERRQ 000603' 260740 001415' SQB4: PUSHJ PP,CHARAC 000604' 306340 000073 CAIN C,";" ;COMMENT? 000605' 254000 000622' JRST SQB6 ;YES, IGNORE SQUARE BRACKETS 000606' 306340 000135 CAIN C,"]" ;LOOK FOR TERMINAL SQB 000607' 606600 777760 TRNN ER,ERRORS ;IN CASE OF ERROR IN LITERAL 000610' 254000 000612' JRST .+2 ;NO ALL IS WELL 000611' 254000 000627' JRST SQB1 ;FINISH THE LITERAL NOW!! 000612' 307340 000015 CAIG C,CR ;LOOK FOR END OF LINE 000613' 306340 000011 CAIN C,HT 000614' 254000 000603' JRST SQB4 000615' 260740 002020' SQB4A: PUSHJ PP,OUTIML ;DUMP 000616' 260740 001415' PUSHJ PP,CHARAC ;GET ANOTHER CHAR. 000617' 331000 013452' SKIPL LIMBO ;CRLF FLAG 000620' 661600 000004 TLO IO,IORPTC ;NO REPEAT 000621' 254000 000571' JRST SQB3 000622' 260740 001415' SQB6: PUSHJ PP,CHARAC ;GET A CHARACTER 000623' 307340 000015 CAIG C,CR 000624' 306340 000011 CAIN C,HT ;LOOK FOR END OF LINE CHAR. 000625' 254000 000622' JRST SQB6 ;NOT YET 000626' 254000 000615' JRST SQB4A ;GOT IT 000627' 621600 000004 SQB1: TLZ IO,IORPTC 000630' 260740 001273' SQB2: PUSHJ PP,STOLIT 000631' 265100 003015' JSP AC2,GTSTOW 000632' 332000 013774' SKIPE LITLBL ;NEED TO FIXUP A LABEL? 000633' 260740 000641' PUSHJ PP,RELBLE ;YES, USE LOC OF LITERAL 000634' 262740 013742' POP PP,EXTPNT 000635' 262740 000015 POP PP,FR 000636' 332000 013773' SKIPE LITLVL ;WERE WE NESTED? 000637' 321640 000441' JUMP1 NUMER2 ;YES, FORCE ERROR IF PASS 1 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 20-1 MACRO 10 24-APR-78 02:11 LITERAL PROCESSOR 000640' 254000 000442' JRST GETDEL 000641' 261740 000000 RELBLE: PUSH PP,AC0 ;SAVE LOCATION COUNTER 000642' 261740 000011 PUSH PP,RC ;AND RELOCATION 000643' 200000 013774' MOVE AC0,LITLBL ;SYMBOL WE NEED 000644' 402000 013774' SETZM LITLBL ;ZERO INDICATOR 000645' 260740 012610' PUSHJ PP,SSRCH ;SEARCH FOR OPERAND 000646' 254000 000657' JRST RELBL1 ;SHOULD NEVER HAPPEN 000647' 607240 200000 TLNN ARG,TAGF ;IT BETTER BE A LABEL 000650' 254000 000657' JRST RELBL1 ;IT WASN'T , GIVE UP BEFORE SOME HARM IS DONE 000651' 621240 007000 TLZ ARG,UNDF!EXTF!PNTF ;CLEAR FLAGS NOW 000652' 262740 000011 POP PP,RC ;GET LITERAL RELOCATION 000653' 200317 000000 MOVE V,(PP) ;GET VALUE (LOC COUNTER) 000654' 260740 013137' PUSHJ PP,UPDATE ;UPDATE VALUE 000655' 262740 000000 POP PP,AC0 ;RESTORE LITERAL COUNT 000656' 263740 000000 POPJ PP, ;RETURN 000657' 262740 000011 RELBL1: POP PP,RC ;RESTORE RC 000660' 262740 000000 POP PP,AC0 ;AND AC0 000661' 263740 000000 POPJ PP, ;JUST RETURN MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 21 MACRO 10 24-APR-78 02:11 LITERAL PROCESSOR 000662' 261740 000015 ANGLB: PUSH PP,FR 000663' 621640 020000 TLZ FR,INDSW 000664' 260740 000334' PUSHJ PP,ATOM 000665' 607600 020000 TLNN IO,NUMSW 000666' 302340 000035 CAIE C,35 000667' 254000 000673' JRST ANGLB1 000670' 260740 004126' PUSHJ PP,ASSIG1 000671' 200000 000006 MOVE AC0,V 000672' 254000 000674' JRST ANGLB2 000673' 260740 001065' ANGLB1: PUSHJ PP,EVALHA 000674' 262740 000015 ANGLB2: POP PP,FR 000675' 302340 000036 CAIE C,36 000676' 660600 000400 TRO ER,ERRN 000677' 254000 000442' JRST GETDEL 000700' 260740 001363' PERIOD: PUSHJ PP,GETCHR ;LOOK AT NEXT CHARACTER 000701' 607400 000002 TLNN CS,2 ;ALPHABETIC? 000702' 254000 000706' JRST PERNUM ;NO, TEST NUMERIC 000703' 205000 160000 MOVSI AC0,(SIXBIT /./) ;YES, PUT PERIOD IN AC0 000704' 205100 360600 MOVSI AC2,(POINT 6,AC0,5) ;SET BYTE POINTER 000705' 254000 000414' JRST LETTE2 ;AND TREAT AS SYMBOL 000706' 603400 000004 PERNUM: TLNE CS,4 ;IS IT A NUMBER 000707' 254000 000745' JRST NUM32 ;YES 000710' 200000 013777' MOVE AC0,LOCA ;NO. CURRENT LOC SYMBOL (.) 000711' 200440 014004' MOVE RC,MODA ;SET TO CURRENT ASSEMBLY MODE 000712' 254000 000443' JRST GETDE1 ;GET DELIMITER 000713' 661640 000040 NUMDF: TLO FR,DCFSW ;SET DECIMAL FRACTION FLAG 000714' 260740 001363' NUM: PUSHJ PP,GETCHR ;GET A CHARACTER 000715' 607400 000004 TLNN CS,4 ;NUMERIC? 000716' 254000 000727' JRST NUM10 ;NO 000717' 275340 000020 NUM1: SUBI C,20 ;CONVERT TO OCTAL 000720' 261740 000007 PUSH PP,C ;STACK FOR FLOATING POINT 000721' 200000 000001 MOVE AC0,AC1 000722' 225015 000000 MULI AC0,0(RX) 000723' 270040 000007 ADD AC1,C ;ADD IN LAST VALUE 000724' 301355 000000 CAIL C,0(RX) ;IS NUMBER LESS THAN CURRENT RADIX? 000725' 661640 040000 TLO FR,RADXSW ;NO, SET FLAG 000726' 344100 000714' AOJA AC2,NUM ;YES, AC2=NO. OF DECIMAL PLACES MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 22 MACRO 10 24-APR-78 02:11 LITERAL PROCESSOR 000727' 302340 000016 NUM10: CAIE C,16 ;PERIOD? 000730' 603640 000040 TLNE FR,DCFSW ;OR DECIMAL FRACTION? 000731' 254000 000741' JRST NUM30 ;YES, PROCESS FLOATING POINT 000732' 242040 000001 LSH AC1,1 ;NO, CLEAR THE SIGN BIT 000733' 246000 000043 LSHC AC0,^D35 ;AND SHIFT INTO AC0 000734' 200740 014014' MOVE PP,PPTEMP ;RESTORE PP 000735' 362100 000443' SOJE AC2,GETDE1 ;NO RADIX ERROR TEST IF ONE DIGIT 000736' 603640 040000 TLNE FR,RADXSW ;WAS ILLEGAL NUMBER ENCOUNTERED? 000737' 660600 000400 TRO ER,ERRN ;YES, FLAG N ERROR 000740' 254000 000443' JRST GETDE1 000741' 302340 000042 NUM30: CAIE C,"B"-40 ;IF "B" THEN MISSING "." 000742' 260740 001363' NUM31: PUSHJ PP,GETCHR 000743' 607400 000004 TLNN CS,4 ;NUMERIC? 000744' 254000 000750' JRST NUM40 ;NO 000745' 275340 000020 NUM32: SUBI C,20 000746' 261740 000007 PUSH PP,C 000747' 254000 000742' JRST NUM31 000750' 261740 000015 NUM40: PUSH PP,FR ;STACK VALUES 000751' 541640 000012 HRRI RX,^D10 000752' 261740 000002 PUSH PP,AC2 000753' 261740 014014' PUSH PP,PPTEMP 000754' 306340 000045 CAIN C,45 ;"E"? JRST [PUSHJ PP,PEEK ;GET NEXT CHAR PUSH PP,C ;SAVE NEXT CHAR PUSHJ PP,CELL ;YES, GET EXPONENT POP PP,C ;GET FIRST CHAR. AFTER E CAIN V,4 ;MUST HAVE NUMERICAL STATUS JRST .+2 ;SKIP RETURN CAIN C,"<" ;ALLOW JRST .+2 ;SKIP RETURN SKIPN AC0 ;ERROR IF NON-ZERO EXPRESSION TROA ER,ERRQ ;ALLOW E+,E- SETOM RC ;FORCE NUMERICAL ERROR 000755' 254000 014610' JRST .+2] ;SKIP RETURN 000756' 201000 000000 MOVEI AC0,0 ;NO, ZERO EXPONENT 000757' 262740 014014' POP PP,PPTEMP 000760' 262740 000004 POP PP,SX 000761' 262740 000015 POP PP,FR 000762' 550300 000017 HRRZ V,PP 000763' 200740 014014' MOVE PP,PPTEMP 000764' 326440 000440' JUMPN RC,NUMER1 ;EXPONENT MUST BE ABSOLUTE 000765' 270200 000000 ADD SX,AC0 000766' 550240 000017 HRRZ ARG,PP 000767' 270200 000005 ADD SX,ARG 000770' 403000 000002 SETZB AC0,AC2 000771' 603640 000040 TLNE FR,DCFSW 000772' 254000 001013' JRST NUM60 000773' 255400 000774' JOV NUM50 ;CLEAR OVERFLOW FLAG MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 23 MACRO 10 24-APR-78 02:11 LITERAL PROCESSOR 000774' 265140 001027' NUM50: JSP SDEL,NUMUP ;FLOATING POINT 000775' 254000 001002' JRST NUM52 ;END OF WHOLE NUMBERS 000776' 164000 014624' FMPR AC0,[10.0] ;MULTIPLY BY 10 000777' 661040 233000 TLO AC1,233000 ;CONVERT TO FLOATING POINT 001000' 144000 000001 FADR AC0,AC1 ;ADD IT IN 001001' 254000 000774' JRST NUM50 001002' 265140 001035' NUM52: JSP SDEL,NUMDN ;PROCESS FRACTION 001003' 144000 000002 FADR AC0,AC2 001004' 255400 000440' JOV NUMER1 ;TEST FOR OVERFLOW 001005' 254000 000443' JRST GETDE1 001006' 661040 233000 TLO AC1,233000 001007' 602040 777777 TRNE AC1,-1 001010' 144100 000001 FADR AC2,AC1 ;ACCUMULATE FRACTION 001011' 174100 014624' FDVR AC2,[10.0] 001012' 254000 001002' JRST NUM52 001013' 265140 001027' NUM60: JSP SDEL,NUMUP 001014' 254000 001020' JRST NUM62 001015' 221000 000012 IMULI AC0,^D10 001016' 270000 000001 ADD AC0,AC1 001017' 254000 001013' JRST NUM60 001020' 246040 777734 NUM62: LSHC AC1,-^D36 001021' 265140 001035' JSP SDEL,NUMDN 001022' 246040 000045 LSHC AC1,^D37 001023' 260740 004544' PUSHJ PP,BYPAS2 001024' 254000 000445' JRST GETDE3 001025' 235040 000012 DIVI AC1,^D10 001026' 254000 001020' JRST NUM62 001027' 201040 000000 NUMUP: MOVEI AC1,0 001030' 311240 000004 CAML ARG,SX 001031' 254003 000000 JRST 0(SDEL) 001032' 315240 000006 CAMGE ARG,V 001033' 200045 000001 MOVE AC1,1(ARG) 001034' 344243 000001 AOJA ARG,1(SDEL) 001035' 201040 000000 NUMDN: MOVEI AC1,0 001036' 317300 000004 CAMG V,SX 001037' 254003 000000 JRST 0(SDEL) 001040' 313300 000005 CAMLE V,ARG 001041' 200046 000000 MOVE AC1,0(V) 001042' 364303 000003 SOJA V,3(SDEL) MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 24 MACRO 10 24-APR-78 02:11 GETSYM SUBTTL GETSYM 001043' 201000 000000 GETSYM: MOVEI AC0,0 ;CLEAR AC0 001044' 205040 440600 MOVSI AC1,(POINT 6,AC0) ;PUT POINTER IN AC1 001045' 260740 004543' PUSHJ PP,BYPASS ;SKIP LEADING BLANKS 001046' 607400 000002 TLNN CS,2 ;ALPHABETIC? 001047' 254000 001055' JRST GETSY1 ;NO, ERROR 001050' 302340 000016 CAIE C,16 ;PERIOD? 001051' 254000 001056' JRST GETSY2 ;NO, A VALID SYMBOL 001052' 136340 000001 IDPB C,AC1 ;STORE THE CHARACTER 001053' 260740 001363' PUSHJ PP,GETCHR ;YES, TEST NEXT CHARACTER 001054' 607400 000002 TLNN CS,2 ;ALPHABETIC? 001055' 664600 040000 GETSY1: TROA ER,ERRA 001056' 350017 000000 GETSY2: AOS 0(PP) ;YES, SET SKIP EXIT 001057' 607400 000006 GETSY3: TLNN CS,6 ;ALPHA-NUMERIC? 001060' 254000 004544' JRST BYPAS2 ;NO, GET DELIMITER 001061' 603040 770000 TLNE AC1,770000 ;YES, HAVE WE STORED SIX? 001062' 136340 000001 IDPB C,AC1 ;NO, STORE IT 001063' 260740 001363' PUSHJ PP,GETCHR 001064' 254000 001057' JRST GETSY3 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 25 MACRO 10 24-APR-78 02:11 EXPRESSION EVALUATOR SUBTTL EXPRESSION EVALUATOR 000000 CV== AC0 ;CURRENT VALUE 000001 PV== AC1 ;PREVIOUS VALUE 000011 RC== RC ;CURRENT RELOCATABILITY 000002 PR== AC2 ;PREVIOUS RELOCATABILITY 000010 CS= CS ;CURRENT STATUS 000003 PS== SDEL ;PREVIOUS STATUS 001065' 661640 010000 EVALHA: TLO FR,TMPSW 001066' 260740 001077' EVALCM: PUSHJ PP,EVALEX ;EVALUATE FIRST EXPRESSION 001067' 261740 014625' PUSH PP,[0] ;MARK PDL 001070' 321400 001073' JUMPCM EVALC3 ;JUMP IF COMMA 001071' 661600 000004 TLO IO,IORPTC ;IT'S NOT,SO REPEAT 001072' 254000 004445' JRST OP ;PROCESS IN OP 001073' EVALC3: 001073' 261740 014625' PUSH PP,[0] ;STORE ZERO'S ON PDL 001074' 261740 014625' PUSH PP,[0] ;....... 001075' 205100 270417 MOVSI AC2,(POINT 4,(PP),12) 001076' 254000 004454' JRST OP1B ;PROCESS IN OP 001077' 661600 400000 EVALEX: TLO IO,FLDSW 001100' 261740 014626' PUSH PP,[XWD TNODE,0] ;MARK THE LIST 200000,,0 001101' 627640 010000 TLZN FR,TMPSW 001102' 260740 000334' EVATOM: PUSHJ PP,ATOM ;GET THE NEXT ATOM 001103' 322000 001177' JUMPE AC0,EVGETD ;TEST FOR NULL/ZERO 001104' 663600 020000 TLOE IO,NUMSW ;SET NUMERIC, WAS IT PREVIOUSLY? 001105' 254000 001200' JRST EVGETD+1 ;YES, TREAT ACCORDINGLY 001106' 260740 012713' PUSHJ PP,SEARCH ;SEARCH FOR MACRO OR SYMBOL 001107' 254000 001131' JRST EVOP ;NOT FOUND, TRY FOR OP-CODE 001110' 321240 001112' JUMPL ARG,.+2 ;SKIP IF OPERAND 001111' 260740 012613' PUSHJ PP,SSRCH1 ;OPERATOR, TRY FOR SYMBOL (OPERAND) 001112' 260740 012603' PUSHJ PP,QSRCH ;PERFORM CROSS-REFERENCE 001113' 327240 001116' JUMPG ARG,EVMAC ;BRANCH IF OPERATOR 001114' 200000 000006 MOVE AC0,V ;SYMBOL, SET VALUE 001115' 254000 001161' JRST EVTSTS ;TEST STATUS 001116' 603640 000200 EVMAC: TLNE FR,NEGSW ;UNARY MINUS? 001117' 254000 001156' JRST EVERRZ ;YES, INVALID BEFORE OPERATOR 001120' 135140 014605' LDB SDEL,[POINT 3,ARG,5] ;GET MACF/OPDF/SYNF 001121' 361140 001156' SOJL SDEL,EVERRZ ;ERROR IF NO FLAGS 001122' 322340 001124' JUMPE C,.+2 ;NON-BLANK? 001123' 661600 000004 TLO IO,IORPTC ;YES, REPEAT CHARACTER 001124' 362140 005705' SOJE SDEL,CALLM ;MACRO IF 2 001125' 327140 001135' JUMPG SDEL,EVOPS ;SYNONYM IF 4 001126' 200000 000006 MOVE AC0,V ;OPDEF 001127' 201300 004445' MOVEI V,OP ;SET TRANSFER VECTOR 001130' 254000 001141' JRST EVOPD MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 26 MACRO 10 24-APR-78 02:11 EXPRESSION EVALUATOR 001131' 603640 000200 EVOP: TLNE FR,NEGSW ;OPCODE, UNARY MINUS? 001132' 254000 001156' JRST EVERRZ ;YES, ERROR 001133' 260740 010754' PUSHJ PP,OPTSCH ;SEARCH SYMBOL TABLE 001134' 254000 001154' JRST EVOPX ;NOT FOUND 001135' 620300 200000 EVOPS: TRZ V,LITF ;CLEAR LIT INVALID FLAG 001136' 622300 100000 TRZE V,ADDF ;SYNONYM 001137' 254000 001154' JRST EVOPX ;PSEUDO-OP THAT GENERATES NO DATA JUMPS 001140' 510000 000006 HLLZ AC0,V 001141' 322340 001143' EVOPD: JUMPE C,.+2 ;OPDEF, NON-BLANK DELIMITER? 001142' 661600 000004 TLO IO,IORPTC ;YES, REPEAT CHARACTER 001143' 265100 003007' JSP AC2,SVSTOW 001144' 260746 000000 PUSHJ PP,0(V) 001145' 260740 002776' PUSHJ PP,DSTOW 001146' 265100 003015' JSP AC2,GTSTOW 001147' 602440 777776 TRNE RC,-2 001150' 542440 013742' HRRM RC,EXTPNT 001151' 603440 777776 TLNE RC,-2 001152' 502440 013742' HLLM RC,EXTPNT 001153' 254000 001204' JRST EVNUM 001154' 205240 402000 EVOPX: MOVSI ARG,SYMF!UNDF 001155' 260740 013035' PUSHJ PP,INSERZ 001156' 403000 000011 EVERRZ: SETZB AC0,RC ;CLEAR CODE AND RELOCATION 001157' 660600 002000 EVERRU: TRO ER,ERRU 001160' 254000 001177' JRST EVGETD MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 27 MACRO 10 24-APR-78 02:11 EXPRESSION EVALUATOR 001161' 603240 002000 EVTSTS: TLNE ARG,UNDF JRST [TRO ER,ERRU ;SET UNDEF ERROR JUMP1 EVGETD ;TREAT AS UNDF ON PASS1 001162' 254000 014627' JRST .+1] ;TREAT AS EXTERNAL ON PASS2 001163' 607240 001000 TLNN ARG,EXTF 001164' 254000 001173' JRST EVTSTR 001165' 550440 000005 HRRZ RC,ARG ;GET ADRES WFW 001166' 550240 013742' HRRZ ARG,EXTPNT ;SAVE IT WFW 001167' 542440 013742' HRRM RC,EXTPNT ;WFW 001170' 602240 777777 TRNE ARG,-1 ;WFW 001171' 660600 000040 TRO ER,ERRE 001172' 403000 000005 SETZB AC0,ARG 001173' 603240 000020 EVTSTR: TLNE ARG,MDFF ;MULTIPLY DEFINED? 001174' 660600 020000 TRO ER,ERRD ;YES, FLAG IT 001175' 603640 000200 TLNE FR,NEGSW ;NEGATIVE ATOM? 001176' 260740 000453' PUSHJ PP,GETDE2 ;YES, NEGATE AC0 AND RC 001177' 603600 020000 EVGETD: TLNE IO,NUMSW ;NON BLANK FIELD 001200' 661640 100000 TLO FR,FSNSW ;YES,SET FLAG 001201' 260740 004544' PUSHJ PP,BYPAS2 001202' 603400 000006 TLNE CS,6 ;ALPHA-NUMERIC? 001203' 661600 000004 TLO IO,IORPTC ;YES, REPEAT IT 001204' 262740 000003 EVNUM: POP PP,PS ;POP THE PREVIOUS DELIMITER/TNODE 001205' 661140 004000 TLO PS,4000 001206' 315140 000010 CAMGE PS,CS ;OPERATION REQUIRED? 001207' 254000 001214' JRST EVPUSH ;NO, PUT VALUES BACK ON STACK 001210' 607140 200000 TLNN PS,TNODE ;YES, HAVE WE REACHED TERMINAL NODE? 001211' 254000 001221' JRST EVXCT ;NO, EXECUTION REQUIRED 001212' 607400 170000 TLNN CS,170000 ;YES, ARE WE POINTING AT DEL? (& ! * / + - _) 001213' 263740 000000 POPJ PP, ;YES, EXIT ;NO,FALL INTO EVPUSH MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 28 MACRO 10 24-APR-78 02:11 EXPRESSION EVALUATOR 001214' 261740 000003 EVPUSH: PUSH PP,PS ;STACK VALUES 001215' 261740 000000 PUSH PP,CV 001216' 261740 000011 PUSH PP,RC 001217' 261740 000010 PUSH PP,CS 001220' 254000 001102' JRST EVATOM ;GET NEXT ATOM 001221' 262740 000002 EVXCT: POP PP,PR ;POP PREVIOUS RELOCATABILITY 001222' 262740 000001 POP PP,PV ;AND PREVIOUS VALUE 001223' 135140 014632' LDB PS,[POINT 3,PS,29] ;TYPE OF OPERATION TO PS 001224' 254003 001225' JRST .+1(PS) ;PERFORM PROPER OPERATION 001225' 254000 000104' JRST ASSEM1 ;0; SHOULD NEVER GET HERE ;DMN 001226' 254000 001253' JRST XMUL ;1; 001227' 254000 001247' JRST XDIV ;2; 001230' 254000 001244' JRST XADD ;3; 001231' 254000 001241' JRST XSUB ;4; 001232' 254000 001264' JRST XLRW ;5; "_" 001233' 674000 000001 TDOA CV,PV ;6; MERGE PV INTO CV 001234' 404000 000001 AND CV,PV ;7; AND PV INTO CV 001235' 326440 001237' JUMPN RC,.+2 ;COMMON RELOCATION TEST 001236' 322100 001204' EVXCT1: JUMPE PR,EVNUM 001237' 660600 004000 TRO ER,ERRR ;BOTH MUST BE FIXED 001240' 254000 001204' JRST EVNUM ;GO TRY AGAIN 001241' 276040 000000 XSUB: SUBM PV,CV 001242' 276100 000011 SUBM PR,RC 001243' 254000 001204' JRST EVNUM 001244' 272040 000000 XADD: ADDM PV,CV 001245' 272100 000011 ADDM PR,RC 001246' 254000 001204' JRST EVNUM 001247' 230100 000000 XDIV: IDIV PR,CV ;CORRECT RELOCATABILITY 001250' 232040 000000 IDIVM PV,CV 001251' 250100 000011 XDIV1: EXCH PR,RC ;TAKE RELOCATION OF NUMERATOR 001252' 254000 001236' JRST EVXCT1 001253' 322100 001256' XMUL: JUMPE PR,XMUL1 ;AT LEAST ONE OPERAND 001254' 322440 001256' JUMPE RC,XMUL1 ;MUST BE FIXED 001255' 660600 004000 TRO ER,ERRR 001256' 436100 000011 XMUL1: IORM PR,RC ;GET RELOCATION TO RC 001257' 315040 000000 CAMGE PV,CV ;FIND THE GREATER 001260' 250040 000000 EXCH PV,CV ;FIX IN CASE CV=0,OR 1 001261' 222040 000011 IMULM PV,RC 001262' 222040 000000 IMULM PV,CV 001263' 254000 001204' JRST EVNUM 001264' 250040 000000 XLRW: EXCH PV,CV 001265' 242001 000000 LSH CV,0(PV) 001266' 242101 000000 LSH PR,0(PV) 001267' 254000 001251' JRST XDIV1 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 29 MACRO 10 24-APR-78 02:11 LITERAL STORAGE HANDLER SUBTTL LITERAL STORAGE HANDLER 001270' STOLER: 001270' 403000 000011 SETZB AC0,RC ;ERROR, NO CODE STORED 001271' 260740 002751' PUSHJ PP,STOW ;STOW ZERO 001272' 660600 010000 TRO ER,ERRL ;AND FLAG THE ERROR 001273' 200140 013555' STOLIT: MOVE SDEL,STPX 001274' 274140 013556' SUB SDEL,STPY ;COMPUTE NUMBER OF WORDS 001275' 322140 001270' JUMPE SDEL,STOLER ;ERROR IF NONE STORED 001276' 606600 777760 TRNN ER,ERRORS ;ANY ERRORS? 001277' 254000 001303' JRST STOL06 ;NO 001300' 325640 001342' JUMP2 STOL22 ;YES, NO SEARCH. BRANCH IF PASS2 001301' 272140 013506' ADDM SDEL,LITCNT ;PASS ONE, UPDATE COUNT 001302' 254000 003003' JRST STOWI ;INITIALIZE STOW 001303' 201200 013501' STOL06: MOVEI SX,LITAB ;PREPARE FOR SEARCH 001304' 200240 013555' MOVE ARG,STPX ;SAVE IN THE EVENT OF MULTIPLE-WORD 001305' 504240 013556' HRL ARG,STPY 001306' 200100 013507' MOVE AC2,LITNUM 001307' 201140 000000 MOVEI SDEL,0 001310' 260740 002776' STOL08: PUSHJ PP,DSTOW ;GET VALUE WFW 001311' 361100 001344' STOL10: SOJL AC2,STOL24 ;TEST FOR END 001312' 200204 000000 MOVE SX,0(SX) ;NO, GET NEXT STORAGE CELL 001313' 200304 777777 MOVE V,-1(SX) ;GET RELOCATION BITS WFW 001314' 316004 777776 CAMN AC0,-2(SX) ;DO CODES COMPARE? WFW 001315' 312440 000006 CAME RC,V ;YES, HOW ABOUT RELOCATION? 001316' 344140 001311' AOJA SDEL,STOL10 ;NO, TRY AGAIN 001317' 335000 013555' SKIPGE STPX ;YES, MULTI-WORD? 001320' 254000 001355' JRST STOL26 ;NO, JUST RETURN LOCATION 001321' 202100 013517' MOVEM AC2,SAVBLK+AC2 ;YES, SAVE STARTING INFO 001322' 202200 013521' MOVEM SX,SAVBLK+SX 001323' 361100 001343' STOL12: SOJL AC2,STOL23 ;TEST FOR END 001324' 260740 002776' PUSHJ PP,DSTOW ;GET NEXT WORD WFW 001325' 200204 000000 MOVE SX,0(SX) ;UPDATE POINTER 001326' 200304 777777 MOVE V,-1(SX) ;GET RELOCATION WFW 001327' 316004 777776 CAMN AC0,-2(SX) ;COMPARE VALUE WFW 001330' 312440 000006 CAME RC,V ;AND RELOCATION 001331' 254000 001335' JRST STOL14 ;NO MATCH, TRY AGAIN 001332' 331000 013555' SKIPL STPX ;MATCH, HAVE WE FINISHED SEARCH? 001333' 254000 001323' JRST STOL12 ;NO, TRY NEXT WORD 001334' 254000 001355' JRST STOL26 ;YES, RETURN LOCATION 001335' 200100 013517' STOL14: MOVE AC2,SAVBLK+AC2 ;RESTORE STOW POINTERS 001336' 200200 013521' MOVE SX,SAVBLK+SX 001337' 572240 013555' HRREM ARG,STPX 001340' 576240 013556' HLREM ARG,STPY 001341' 344140 001310' AOJA SDEL,STOL08 ;BETTER LUCK NEXT TIME MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 30 MACRO 10 24-APR-78 02:11 LITERAL STORAGE HANDLER 001342' 200140 013507' STOL22: MOVE SDEL,LITNUM 001343' 260740 002776' STOL23: PUSHJ PP,DSTOW ;DSTOW AND CONVERT 001344' 200200 013502' STOL24: MOVE SX,LITABX ;GET CURRENT STORAGE 001345' 260740 003533' PUSHJ PP,GETTOP ;GET NEXT CELL 001346' 202004 777776 MOVEM AC0,-2(SX) ;STORE CODE WFW 001347' 202444 777777 MOVEM RC,-1(SX) ;WFW 001350' 202200 013502' MOVEM SX,LITABX ;SET POINTER TO CURRENT CELL 001351' 350000 013507' AOS LITNUM ;INCREMENT NUMBER STORED 001352' 350000 013506' AOS LITCNT ;INCREMENT NUMBER RESERVED 001353' 331000 013555' SKIPL STPX ;ANY MORE CODE? 001354' 254000 001343' JRST STOL23 ;YES 001355' 321640 000455' STOL26: JUMP1 POPOUT ;EXIT IF PASS ONE 001356' 200200 013505' MOVE SX,LITHDX ;GET HEADER BLOCK 001357' 554444 777777 HLRZ RC,-1(SX) ;GET BLOCK RELOCATION 001360' 550004 777777 HRRZ AC0,-1(SX) 001361' 271003 000000 ADDI AC0,0(SDEL) ;COMPUTE ACTUAL LOCATION 001362' 263740 000000 POPJ PP, ;EXIT MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 31 MACRO 10 24-APR-78 02:11 INPUT ROUTINES SUBTTL INPUT ROUTINES 001363' 260740 001415' GETCHR: PUSHJ PP,CHARAC ;GET ASCII CHARACTER 001364' 301340 000141 CAIL C,"A"+40 ;CHECK FOR LOWER CASE 001365' 303340 000172 CAILE C,"Z"+40 001366' 254000 001370' JRST .+2 ;NOT LOWER CASE 001367' 624340 000100 TRZA C,100 ;CONVERT LOWER CASE TO SIXBIT 001370' 275340 000040 SUBI C,40 ;CONVERT TO SIXBIT 001371' 307340 000077 CAIG C,77 ;CHAR GREATER THAN SIXBIT? 001372' 325340 001404' JUMPGE C,GETCS ;TEST FOR VALID SIXBIT 001373' 271340 000040 ADDI C,40 ;BACK TO ASCII 001374' 306340 000011 CAIN C,HT ;CHECK FOR TAB 001375' 254000 001403' JRST GETCS2 ;MAKE IT LOOK LIKE SPACE 001376' 307340 000015 CAIG C,CR ;GREATER THAN CR 001377' 307340 000011 CAIG C,HT ;GREATER THAN TAB 001400' 254000 001406' JRST GETCS1 ;IS NOT FF,VT,LF OR CR 001401' 201340 000033 MOVEI C,EOL ;LINE OR FORM FEED OR V TAB 001402' 665600 000004 TLOA IO,IORPTC ;REPEAT CHARACTER 001403' 201340 000000 GETCS2: MOVEI C,0 ;BUT TREAT AS BLANK 001404' 200407 001456' GETCS: MOVE CS,CSTAT(C) ;GET STATUS BITS 001405' 263740 000000 POPJ PP, ;EXIT 001406' 322340 001404' GETCS1: JUMPE C,GETCS ;IGNORE NULS 001407' 640340 000100 TRC C,100 ;MAKE CHAR. VISIBLE 001410' 201400 000136 MOVEI CS,"^" 001411' 137400 013453' DPB CS,LBUFP ;PUT ^ IN OUTPUT 001412' 260740 001423' PUSHJ PP,RSW2 ;ALSO MODIFIED CHAR. 001413' 660600 200000 TRO ER,ERRQ ;FLAG Q ERROR 001414' 254000 001363' JRST GETCHR ;BUT IGNORE CHAR. MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 32 MACRO 10 24-APR-78 02:11 INPUT ROUTINES 001415' 623600 000004 CHARAC: TLZE IO,IORPTC ;REPEAT REQUESTED? 001416' 254000 001443' JRST CHARAX ;YES 001417' 326540 006474' RSW0: JUMPN MRP,MREAD ;BRANCH IF TREE POINTER SET 001420' 260740 010503' PUSHJ PP,READ 001421' 332000 014022' RSW1: SKIPE RPOLVL ;ARE WE IN "REPEAT ONCE"? 001422' 254000 005375' JRST REPO1 ;YES 001423' 200400 013452' RSW2: MOVE CS,LIMBO ;GET LAST CHAR. 001424' 202340 013452' MOVEM C,LIMBO ;STORE THIS CHAR. FOR RPTC 001425' 306340 000012 CAIN C,LF ;LF? 001426' 302400 000015 CAIE CS,CR ;YES,LAST CHAR. A CR? 001427' 254000 001432' JRST RSW3 ;NO 001430' 563000 013452' HRROS LIMBO ;YES,FLAG 001431' 263740 000000 POPJ PP, ;AND EXIT 001432' 603600 000001 RSW3: TLNE IO,IOSALL ;MACRO SUPPRESS ALL? 001433' 326540 003447' JUMPN MRP,CPOPJ ;YES,DON'T LIST IN MACRO 001434' 377000 013737' SOSG CPL ;ANY ROOM IN THE IMAGE BUFFER? 001435' 260740 001657' PUSHJ PP,OUTPL ;NO, OUTPUT THE PARTIAL LINE 001436' 136340 013453' IDPB C,LBUFP ;YES, STORE IN PRINT AREA 001437' 302340 000011 CAIE C,HT ;TAB? 001440' 263740 000000 POPJ PP, ;NO, EXIT 001441' 201340 000007 MOVEI C,7 001442' 412340 013737' ANDCAM C,CPL ;MASK 001443' 550340 013452' CHARAX: HRRZ C,LIMBO ;GET LAST CHARACTER 001444' 263740 000000 POPJ PP, ;EXIT 001445' 260740 001415' CHARL: PUSHJ PP,CHARAC ;GET AND TEST 7-BIT ASCII 001446' 307340 000014 CAIG C,FF ;LINE OR FORM FEED OR VT? 001447' 305340 000012 CAIGE C,LF 001450' 263740 000000 POPJ PP, ;NO,EXIT 001451' 332000 013773' SKIPE LITLVL ;IN LITERAL? 001452' 254000 002020' JRST OUTIML ;YES 001453' 260740 007473' CHARL1: PUSHJ PP,SAVEXS ;SAVE REGISTERS 001454' 260740 001556' PUSHJ PP,OUTLIN ;DUMP THE LINE 001455' 254000 007467' JRST RSTRXS ;RESTORE REGISTERS AND EXIT MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 33 MACRO 10 24-APR-78 02:11 CHARACTER STATUS TABLE SUBTTL CHARACTER STATUS TABLE DEFINE GENCS (OPLVL,ATOM,AN,SQUOZ,OPTYPE,SEQNO) ;OPLVL PRIORITY OF BINARY OPERATORS ;ATOM INDEX TO JUMP TABLE AT CELL1 ;AN TYPE OF CHARACTER ; 1=OTHER, 2=ALPHA, 4=NUMERIC ;SQUOZ VALUE IN RADIX 50 ;OPTYPE INDEX TO JUMP TABLE AT EVXCT ;SEQNO VALUE IN SIXBIT 001456' CSTAT: 001456' 000001 000000 GENCS 00,00,1,00,00,00 ; ' ' 001457' 040121 000601 GENCS 04,12,1,00,06,01 ; '!' 001460' 000071 000002 GENCS 00,07,1,00,00,02 ; '"' 001461' 000121 000003 GENCS 00,12,1,00,00,03 ; '#' 001462' 000012 460004 GENCS 00,01,2,46,00,04 ; '$' 001463' 000012 470005 GENCS 00,01,2,47,00,05 ; '%' 001464' 040121 000706 GENCS 04,12,1,00,07,06 ; '&' 001465' 000071 000007 GENCS 00,07,1,00,00,07 ; ''' 001466' 000011 000010 GENCS 00,01,1,00,00,10 ; '(' 001467' 000011 000011 GENCS 00,01,1,00,00,11 ; ')' 001470' 020121 000112 GENCS 02,12,1,00,01,12 ; '*' 001471' 010001 000313 GENCS 01,00,1,00,03,13 ; '+' 001472' 400011 000014 GENCS 40,01,1,00,00,14 ; ',' 001473' 010021 000415 GENCS 01,02,1,00,04,15 ; '-' 001474' 000112 450016 GENCS 00,11,2,45,00,16 ; '.' 001475' 020121 000217 GENCS 02,12,1,00,02,17 ; '/' 001476' 000044 010020 GENCS 00,04,4,01,00,20 ; '0' 001477' 000044 020021 GENCS 00,04,4,02,00,21 ; '1' 001500' 000044 030022 GENCS 00,04,4,03,00,22 ; '2' 001501' 000044 040023 GENCS 00,04,4,04,00,23 ; '3' 001502' 000044 050024 GENCS 00,04,4,05,00,24 ; '4' 001503' 000044 060025 GENCS 00,04,4,06,00,25 ; '5' 001504' 000044 070026 GENCS 00,04,4,07,00,26 ; '6' 001505' 000044 100027 GENCS 00,04,4,10,00,27 ; '7' 001506' 000044 110030 GENCS 00,04,4,11,00,30 ; '8' 001507' 000044 120031 GENCS 00,04,4,12,00,31 ; '9' 001510' 000121 000032 GENCS 00,12,1,00,00,32 ; ':' 001511' 000011 000033 GENCS 00,01,1,00,00,33 ; ';' 001512' 000051 000034 GENCS 00,05,1,00,00,34 ; '<' 001513' 000121 000035 GENCS 00,12,1,00,00,35 ; '=' 001514' 000011 000036 GENCS 00,01,1,00,00,36 ; '>' 001515' 000121 000037 GENCS 00,12,1,00,00,37 ; '?' MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 34 MACRO 10 24-APR-78 02:11 CHARACTER STATUS TABLE 001516' 000031 000040 GENCS 00,03,1,00,00,40 ; '@' 001517' 000012 130041 GENCS 00,01,2,13,00,41 ; 'A' 001520' 000012 140042 GENCS 00,01,2,14,00,42 ; 'B' 001521' 000012 150043 GENCS 00,01,2,15,00,43 ; 'C' 001522' 000012 160044 GENCS 00,01,2,16,00,44 ; 'D' 001523' 000012 170045 GENCS 00,01,2,17,00,45 ; 'E' 001524' 000012 200046 GENCS 00,01,2,20,00,46 ; 'F' 001525' 000012 210047 GENCS 00,01,2,21,00,47 ; 'G' 001526' 000012 220050 GENCS 00,01,2,22,00,50 ; 'H' 001527' 000012 230051 GENCS 00,01,2,23,00,51 ; 'I' 001530' 000012 240052 GENCS 00,01,2,24,00,52 ; 'J' 001531' 000012 250053 GENCS 00,01,2,25,00,53 ; 'K' 001532' 000012 260054 GENCS 00,01,2,26,00,54 ; 'L' 001533' 000012 270055 GENCS 00,01,2,27,00,55 ; 'M' 001534' 000012 300056 GENCS 00,01,2,30,00,56 ; 'N' 001535' 000012 310057 GENCS 00,01,2,31,00,57 ; 'O' 001536' 000012 320060 GENCS 00,01,2,32,00,60 ; 'P' 001537' 000012 330061 GENCS 00,01,2,33,00,61 ; 'Q' 001540' 000012 340062 GENCS 00,01,2,34,00,62 ; 'R' 001541' 000012 350063 GENCS 00,01,2,35,00,63 ; 'S' 001542' 000012 360064 GENCS 00,01,2,36,00,64 ; 'T' 001543' 000012 370065 GENCS 00,01,2,37,00,65 ; 'U' 001544' 000012 400066 GENCS 00,01,2,40,00,66 ; 'V' 001545' 000012 410067 GENCS 00,01,2,41,00,67 ; 'W' 001546' 000012 420070 GENCS 00,01,2,42,00,70 ; 'X' 001547' 000012 430071 GENCS 00,01,2,43,00,71 ; 'Y' 001550' 000012 440072 GENCS 00,01,2,44,00,72 ; 'Z' 001551' 000061 000073 GENCS 00,06,1,00,00,73 ; '[' 001552' 000121 000074 GENCS 00,12,1,00,00,74 ; '\' 001553' 000011 000075 GENCS 00,01,1,00,00,75 ; ']' 001554' 000101 000076 GENCS 00,10,1,00,00,76 ; '^' 001555' 100121 000577 GENCS 10,12,1,00,05,77 ; '_' MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 35 MACRO 10 24-APR-78 02:11 LISTING ROUTINES SUBTTL LISTING ROUTINES 001556' 606600 577760 OUTLIN: TRNN ER,ERRORS-ERRQ ;ANY ERRORS? 001557' 603640 000010 TLNE FR,ERRQSW ;NO, IGNORE Q ERRORS? 001560' 620600 200000 TRZ ER,ERRQ ;YES, YES, ZERO THE Q ERROR 001561' 514000 000014 HRLZ AC0,ER ;PUT ERROR FLAGS IN AC0 LEFT 001562' 630600 013727' TDZ ER,TYPERR 001563' 321640 001674' JUMP1 OUTL30 ;BRANCH IF PASS ONE 001564' 326000 001576' JUMPN AC0,OUTL02 ;JUMP IF ANY ERRORS TO FORCE PRINTING 001565' 331000 013555' SKIPL STPX ;SKIP IF NO CODE, OTHERWISE 001566' 254000 001574' JRST OUTL01 ;NO 001567' 607600 000001 TLNN IO,IOSALL ;YES,SUPPRESS ALL? 001570' 254000 001575' JRST OUTL03 ;NO 001571' 326540 003447' JUMPN MRP,CPOPJ ;YES,EXIT IF IN MACRO 001572' 135340 014633' LDB C,[XWD 350700,LBUF] 001573' 302340 000015 CAIE C,15 ;FIRST CHAR CR? 001574' 621600 010000 OUTL01: TLZ IO,IOMAC ;FORCE MACRO PRINTING 001575' 607600 250000 OUTL03: TLNN IO,IOMSTR!IOPROG!IOMAC 001576' 434600 013512' OUTL02: IOR ER,OUTSW ;FORCE IT. 001577' 136000 013453' IDPB AC0,LBUFP ;STORE ZERO TERMINATOR AFTER ASCII SRC LINE 001600' 607640 002000 TLNN FR,CREFSW ;CREF? 001601' 260740 012674' PUSHJ PP,CLSCRF ;YES, WRITE END OF CREF DATA (177,003) 001602' 322000 001606' JUMPE AC0,OUTL20 ;BRANCH IF NO ERRORS 001603' 623000 000020 TLZE AC0,ERRM ;M ERROR? 001604' 661000 000100 TLO AC0,ERRP ;M ERROR SET - SET P ERROR. 001605' 260740 001721' PUSHJ PP,OUTLER ;PROCESS ERRORS 001606' 336440 013775' OUTL20: SKIPN RC,ASGBLK 001607' 332400 013776' SKIPE CS,LOCBLK ; 001610' 331000 013555' SKIPL STPX ;ANY BINARY? 001611' 254000 001634' JRST OUTL23 ;YES, JUMP 001612' 322440 001630' JUMPE RC,OUTL22 ;SEQUENCE BREAK AND NO BINARY JUMPS 001613' 134340 013677' ILDB C,TABP ;ASSIGNMENT FALLS THROUGH 001614' 260740 010607' PUSHJ PP,OUTL ;OUTPUT A TAB. 001615' 134340 013677' ILDB C,TABP ;OUTPUT 2ND TAB, LOCATION FIELD 001616' 260740 010663' PUSHJ PP,OUTC ;NEXT IS BINARY LISTING FIELD 001617' 520400 013776' HLLO CS,LOCBLK ;LEFT HALF OF A 36BIT VALUE 001620' 321440 001622' JUMPL RC,.+2 ;SKIP IF LEFT HALF IS NOT RELOC 001621' 624400 000001 TRZA CS,1 ;IT IS, SET THE FLAG 001622' 603400 777777 TLNE CS,-1 ;SKIP IF ITS A 18BIT VALUE, OTHERWISE 001623' 260740 003035' PUSHJ PP,ONC1 ;PRINT LH OF A 36 BIT VALUE IN CS 001624' 524400 013776' HRLO CS,LOCBLK ;PICK UP THE RIGHT HALF (18BIT VALUE) 001625' 620411 000000 TRZ CS,0(RC) ; 001626' 260740 003033' PUSHJ PP,ONC ;PRINT IT 001627' 254000 001634' JRST OUTL23 ;SKIP SINGLE QUOTE TEST MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 36 MACRO 10 24-APR-78 02:11 LISTING ROUTINES 001630' 260740 003033' OUTL22: PUSHJ PP,ONC ;TAB TO RH AND PRINT IT 001631' 201340 000047 MOVEI C,"'" 001632' 332000 014004' SKIPE MODA 001633' 260740 010663' PUSHJ PP,OUTC 001634' 331000 013555' OUTL23: SKIPL STPX ;ANY BINARY? 001635' 260740 002517' PUSHJ PP,BOUT ;YES, DUMP IT 001636' 200420 002003' MOVE CS,@OUTLI2 ;[POINT 7,LBUF] 001637' 134340 000010 OUTL24: ILDB C,CS 001640' 322340 001645' JUMPE C,OUTL25 001641' 307340 000040 CAIG C," " 001642' 254000 001637' JRST OUTL24 001643' 200400 013677' MOVE CS,TABP 001644' 260740 003061' PUSHJ PP,OUTASC ;OUTPUT TABS 001645' 201400 013454' OUTL25: MOVEI CS,LBUF 001646' 260740 003060' PUSHJ PP,OUTAS0 ;DUMP THE LINE 001647' 603600 000001 TLNE IO,IOSALL ;SUPPRESSING ALL 001650' 326540 001655' JUMPN MRP,OUTL27 ;YES,EXTRA CR IF IN MACRO 001651' 335000 013555' OUTL26: SKIPGE STPX ;ANY BINARY? 001652' 254000 001774' JRST OUTLI ;NO, CLEAN UP AND EXIT 001653' 260740 002003' PUSHJ PP,OUTLI2 ;YES, INITIALIZE FOR NEXT LINE 001654' 260740 002517' PUSHJ PP,BOUT ;YES, DUMP IT 001655' 260740 010600' OUTL27: PUSHJ PP,OUTCR ;OUTPUT CARRIAGE RETURN 001656' 254000 001651' JRST OUTL26 ;TEST FOR MORE BINARY 001657' 336000 013773' OUTPL: SKIPN LITLVL ;IF IN LITERAL 001660' 331000 013555' SKIPL STPX ;OR CODE GENERATED 001661' 254000 001746' JRST OUTIM ;JUST OUTPUT THE IMAGE 001662' 336000 013775' SKIPN ASGBLK ;SKIP IF AN ASSIGNMENT 001663' 254000 001746' JRST OUTIM ;OTHERWISE OUTPUT IMAGE 001664' 261740 000007 PUSH PP,C ;SAVE CHAR. 001665' 201340 000015 MOVEI C,CR 001666' 136340 013453' IDPB C,LBUFP 001667' 201340 000012 MOVEI C,LF 001670' 136340 013453' IDPB C,LBUFP ;FINISH WITH CRLF 001671' 260740 001556' PUSHJ PP,OUTLIN ;OUTPUT PARTIAL LINE 001672' 262740 000007 POP PP,C ;RESTORE CHAR. 001673' 254000 002003' JRST OUTLI2 ;INITIALISE REST OF LINE MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 37 MACRO 10 24-APR-78 02:11 LISTING ROUTINES 001674' 350400 013555' OUTL30: AOS CS,STPX ;PASS ONE 001675' 272400 014000' ADDM CS,LOCO ;INCREMENT OUTPUT LOCATION 001676' 260740 003003' PUSHJ PP,STOWI ;INITIALIZE STOW 001677' 621000 776640 TLZ AC0,ERRORS-ERRM-ERRP-ERRV 001700' 326000 001704' JUMPN AC0,OUTL32 ;JUMP IF ERRORS 001701' 603600 000001 TLNE IO,IOSALL ;SUPPRESSING ALL/ 001702' 326540 003447' JUMPN MRP,CPOPJ ;YES,EXIT 001703' 254000 002002' JRST OUTLI1 ;NO,INIT LINE 001704' 136000 013453' OUTL32: IDPB AC0,LBUFP ;ZERO TERNIMATOR 001705' 434600 013512' IOR ER,OUTSW ;LIST ERRORS 001706' 201400 013211' MOVEI CS,TAG 001707' 260740 003065' PUSHJ PP,OUTSIX ;OUTPUT TAG 001710' 550340 014051' HRRZ C,TAGINC 001711' 260740 003051' PUSHJ PP,DNC ;CONVERT INCREMENT TO DECIMAL 001712' 260740 010571' PUSHJ PP,OUTTAB ;OUTPUT TAB 001713' 260740 001721' PUSHJ PP,OUTLER ;OUTPUT ERROR FLAGS 001714' 260740 010571' PUSHJ PP,OUTTAB 001715' 201400 013214' MOVEI CS,SEQNO ;ADDRESS OF SEQUENCE NO. 001716' 332000 013214' SKIPE SEQNO ;FILE NOT SEQUENCED 001717' 260740 003060' PUSHJ PP,OUTAS0 ;OUTPUT IT 001720' 254000 001645' JRST OUTL25 ;OUTPUT BASIC LINE 001721' 261740 000014 OUTLER: PUSH PP,ER ;SAVE LISTING SWITCHES FOR LATER 001722' 602600 000001 TRNE ER,TTYSW ;IF THIS IS ON, LISTING IS ON TTY 001723' 620600 777760 TRZ ER,ERRORS ;SO SUPPRESS ON TTY 001724' 630600 013512' TDZ ER,OUTSW ;BUT THIS SHOULD ONLY GO TO THE TTY 001725' 200400 013343' MOVE CS,INDIR ;GET FILE NAME 001726' 312400 013207' CAME CS,LSTFIL ;AND SEE IF SAME JRST [MOVEM CS,LSTFIL ;SAVE AS LAST ONE MOVEI CS,LSTFIL PUSHJ PP,OUTSIX ;LIST NAME MOVEI C," " PUSHJ PP,OUTL MOVE CS,PAGENO ;PRINT PAGE NUMBER TOO 001727' 254000 014634' JRST OUTLE8] 001730' 200400 014100' MOVE CS,PAGENO ;NOW CHECK PAGE NUMBER 001731' 312400 014102' CAME CS,LSTPGN OUTLE8: JRST [MOVEM CS,LSTPGN MOVEI CS,[ASCIZ /PAGE /] PUSHJ PP,OUTAS0 MOVE C,PAGENO PUSHJ PP,DNC PUSHJ PP,OUTCR ;AND NOW FOR THE ERROR LINE 001732' 254000 014645' JRST .+1] 001733' 502617 000000 HLLM ER,(PP) ;RESTORE ER BUT NOT IO (LEFT HALF OF AC) 001734' 262740 000014 POP PP,ER 001735' 200400 014657' MOVE CS,[POINT 7,[ASCII / QXADLRUVNOPEM/]] 001736' 134340 000010 OUTLE2: ILDB C,CS ;GET ERROR MNEMONIC 001737' 325000 001742' JUMPGE AC0,OUTLE4 ;BRANCH IF NOT FLAGGED 001740' 260740 010607' PUSHJ PP,OUTL ;OUTPUT THE CHARACTER 001741' 350000 013376' AOS ERRCNT ;INCREMENT ERROR COUNT 001742' 242000 000001 OUTLE4: LSH AC0,1 ;SHIFT NEXT FLAG INTO SIGN BIT MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 38 MACRO 10 24-APR-78 02:11 LISTING ROUTINES 001743' 326000 001736' JUMPN AC0,OUTLE2 ;TEST FOR END 001744' 263740 000000 POPJ PP, ;EXIT MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 39 MACRO 10 24-APR-78 02:11 LISTING ROUTINES 001745' 665640 000001 OUTIM1: TLOA FR,IOSCR ;SUPPRESS CRLF AFTER LINE 001746' 621640 000001 OUTIM: TLZ FR,IOSCR ;DON'T FOR PARTIAL LINE 001747' 603600 000001 TLNE IO,IOSALL ;SUPPRESSING ALL? 001750' 326540 003447' JUMPN MRP,CPOPJ ;YES ,EXIT IF IN MACRO 001751' 321640 002002' JUMP1 OUTLI1 ;BYPASS IF PASS ONE 001752' 261740 000014 PUSH PP,ER 001753' 630600 013727' TDZ ER,TYPERR 001754' 607600 250000 TLNN IO,IOMSTR!IOPROG!IOMAC 001755' 434600 013512' IOR ER,OUTSW 001756' 261740 000007 PUSH PP,C ;OUTPUT IMAGE 001757' 607640 002000 TLNN FR,CREFSW 001760' 260740 012674' PUSHJ PP,CLSCRF 001761' 200400 013677' OUTIM2: MOVE CS,TABP 001762' 260740 003061' PUSHJ PP,OUTASC ;OUTPUT TABS 001763' 136340 013453' IDPB C,LBUFP ;STORE ZERO TERMINATOR 001764' 201400 013454' MOVEI CS,LBUF 001765' 260740 003060' PUSHJ PP,OUTAS0 ;OUTPUT THE IMAGE 001766' 627640 000001 TLZN FR,IOSCR ;CRLF SUPPRESS? 001767' 260740 010600' PUSHJ PP,OUTCR ;NO,OUTPUT 001770' 262740 000007 POP PP,C 001771' 502617 000000 HLLM ER,0(PP) 001772' 262740 000014 POP PP,ER 001773' 254000 002003' JRST OUTLI2 001774' 603600 000001 OUTLI: TLNE IO,IOSALL ;SUPPRESSING ALL 001775' 326540 002001' JUMPN MRP,OUTLI3 ;YES,SET FLAG IN REPEATS ALSO 001776' 603600 004000 TLNE IO,IOPALL ;MACRO EXPANSION SUPRESS REQUESTED? 001777' 336000 014072' SKIPN MACLVL ;YES, ARE WE IN MACRO? 002000' 625600 010000 TLZA IO,IOMAC ;NO, CLEAR MAC FLAG 002001' 661600 010000 OUTLI3: TLO IO,IOMAC ;YES, SET FLAG 002002' 620600 777763 OUTLI1: TRZ ER,ERRORS!LPTSW!TTYSW 002003' 200400 014660' OUTLI2: MOVE CS,[POINT 7,LBUF] ;INITIALIZE BUFFERS 002004' 202400 013453' MOVEM CS,LBUFP 002005' 200400 014661' MOVE CS,[POINT 7,TABI,6] 002006' 202400 013677' MOVEM CS,TABP 002007' 201400 000130 MOVEI CS,.CPL 002010' 202400 013737' MOVEM CS,CPL 002011' 205400 044000 MOVSI CS,(ASCII / /) 002012' 332000 013214' SKIPE SEQNO ;HAVE WE SEQUENCE NUMBERS? 002013' 202400 013214' MOVEM CS,SEQNO ;YES, STORE TAB IN CASE OF MACRO 002014' 202400 013215' MOVEM CS,SEQNO+1 ;STORE TAB AND TERMINATOR 002015' 402000 013775' SETZM ASGBLK 002016' 402000 013776' SETZM LOCBLK 002017' 263740 000000 POPJ PP, MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 40 MACRO 10 24-APR-78 02:11 LISTING ROUTINES 002020' 603600 000001 OUTIML: TLNE IO,IOSALL ;SUPPRESSING ALL? 002021' 326540 003447' JUMPN MRP,CPOPJ ;YES,EXIT IF IN MACRO 002022' 606600 577760 TRNN ER,ERRORS-ERRQ ;FOR LITERALS (MULIT-LINE) OUTPUT ERRORS 002023' 603640 000010 TLNE FR,ERRQSW 002024' 620600 200000 TRZ ER,ERRQ 002025' 514400 000014 HRLZ CS,ER 002026' 321640 002045' JUMP1 OUTML1 ;CHECK PASS1 ERRORS 002027' 630600 013727' TDZ ER,TYPERR 002030' 322400 001745' JUMPE CS,OUTIM1 002031' 261740 014625' PUSH PP,[0] ;ERRORS SHOULD BE ZEROED 002032' 261740 000007 PUSH PP,C 002033' 261740 000000 PUSH PP,AC0 ;SAVE AC0 IN CASE CALLED FROM ASCII 002034' 200000 000010 MOVE AC0,CS ;ERROR ROUTINE WANTS FLAGS IN AC0 002035' 434600 013512' IOR ER,OUTSW 002036' 607640 002000 TLNN FR,CREFSW 002037' 260740 012674' PUSHJ PP,CLSCRF ;FIX CREF 002040' 623000 000020 TLZE AC0,ERRM 002041' 661000 000100 TLO AC0,ERRP 002042' 260740 001721' PUSHJ PP,OUTLER ;OUTPUT THEM 002043' 262740 000000 POP PP,AC0 002044' 254000 001761' JRST OUTIM2 ;AND LINE 002045' 621400 776640 OUTML1: TLZ CS,ERRORS-ERRM-ERRP-ERRV 002046' 322400 002003' JUMPE CS,OUTLI2 ;NONE 002047' 620600 001120 TRZ ER,ERRM!ERRP!ERRV 002050' 660600 010000 TRO ER,ERRL 002051' 261740 000014 PUSH PP,ER ;SAVE 002052' 261740 000007 PUSH PP,C ;SAVE THIS 002053' 261740 000000 PUSH PP,AC0 ;AS ABOVE 002054' 200000 000010 MOVE AC0,CS ;... 002055' 630600 013727' TDZ ER,TYPERR 002056' 434600 013512' IOR ER,OUTSW 002057' 201400 013211' MOVEI CS,TAG 002060' 260740 003065' PUSHJ PP,OUTSIX 002061' 550340 014051' HRRZ C,TAGINC 002062' 260740 003051' PUSHJ PP,DNC 002063' 260740 010571' PUSHJ PP,OUTTAB 002064' 260740 001721' PUSHJ PP,OUTLER ;DO NOT FORGET ERRORS 002065' 260740 010571' PUSHJ PP,OUTTAB 002066' 201400 013454' MOVEI CS,LBUF ;PRINT REST OF LINE 002067' 260740 002503' PUSHJ PP,SOUT20 002070' 262740 000000 POP PP,AC0 002071' 262740 000007 POP PP,C 002072' 262740 000014 POP PP,ER 002073' 254000 002003' JRST OUTLI2 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 41 MACRO 10 24-APR-78 02:11 OUTPUT ROUTINES SUBTTL OUTPUT ROUTINES 002074' 260740 003111' UOUT: PUSHJ PP,LOOKUP ;SET FOR TABLE SCAN 002075' 606240 004000 TRNN ARG,PNTF ;WFW 002076' 606240 002000 TRNN ARG,UNDF 002077' 254000 002116' JRST UOUT13 ;TEST FOR UNDF!EXTF!PNTF ON PASS2 002100' 325640 002122' JUMP2 UOUT10 002101' 607600 000020 TLNN IO,IOIOPF ;ANY IOP'S SEEN 002102' 254000 002112' JRST UOUT12 ;NO,MAKE EXTERNAL 002103' 205400 777700 MOVSI CS,PRMTBL-PRMEND;YES LOOKUP IN TABLE 002104' 312010 012206' UOUT1: CAME AC0,PRMTBL(CS) ;HAVE WE A MATCH? 002105' 253400 002111' AOBJN CS,UOUT2 ;NO,INCREMENT AND JUMP 002106' 200250 012207' MOVE ARG,PRMTBL+1(CS);YES,GET VALUE 002107' 202244 000000 MOVEM ARG,(SX) ;UPDATE SYMBOL TABLE 002110' 263740 000000 POPJ PP, ;EXIT 002111' 253400 002104' UOUT2: AOBJN CS,UOUT1 ;TEST FOR END 002112' 260740 004015' UOUT12: PUSHJ PP,EXTER2 ;MAKE IT EXTERNAL 002113' 205240 002000 MOVSI ARG,UNDF ;BUT PUT UNDF BACK ON 002114' 436244 000000 IORM ARG,(SX) ;SO MESSAGE WILL COME OUT 002115' 263740 000000 POPJ PP, ;GET NEXT SYMBOL 002116' 321640 003447' UOUT13: JUMP1 CPOPJ ;RECYCLE ON PASS1 002117' 640240 007000 TRC ARG,UNDF!EXTF!PNTF ;CHECK FOR ALL THREE ON 002120' 642240 007000 TRCE ARG,UNDF!EXTF!PNTF ;ARE THEY? 002121' 263740 000000 POPJ PP, ;NO, RECYCLE 002122' 260740 010600' UOUT10: PUSHJ PP,OUTCR 002123' 260740 003074' PUSHJ PP,OUTSYM ;OUTPUT THE SYMBOL 002124' 201400 014662' MOVEI CS,[SIXBIT /UNASSIGNED, DEFINED AS IF EXTERNAL @/] 002125' 254000 003065' JRST OUTSIX ;POPJ FOR NEXT SYMBOL 002126' 260740 003035' UOUT30: PUSHJ PP,ONC1 ;OUTPUT THE LOCATION 002127' 254000 004235' JRST HIGHQ ;EXIT THROUGH HIGHQ MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 42 MACRO 10 24-APR-78 02:11 OUTPUT ROUTINES ;OUTPUT THE ENTRIES 002130' 201340 000000 EOUT: MOVEI C,0 ;INITIALIZE THE COUNT 002131' 200200 013552' MOVE SX,SYMBOL 002132' 200144 000000 MOVE SDEL,0(SX) 002133' 361140 002141' EOUT1: SOJL SDEL,EOUT2 ;TEST FOR END 002134' 271200 000002 ADDI SX,2 002135' 554244 000000 HLRZ ARG,0(SX) 002136' 411240 400600 ANDCAI ARG,SYMF!INTF!ENTF 002137' 326240 002133' JUMPN ARG,EOUT1 ;IF INVALID, DON'T COUNT 002140' 344340 002133' AOJA C,EOUT1 ;BUMP COUNT 002141' 505340 000004 EOUT2: HRLI C,4 ;BLOCK TYPE 4 002142' 260740 010404' PUSHJ PP,OUTBIN 002143' 403340 000005 SETZB C,ARG 002144' 260740 010404' PUSHJ PP,OUTBIN 002145' 200200 013552' MOVE SX,SYMBOL 002146' 200144 000000 MOVE SDEL,0(SX) 002147' 201300 000022 MOVEI V,^D18 002150' 361140 000455' EOUT3: SOJL SDEL,POPOUT 002151' 271200 000002 ADDI SX,2 002152' 554344 000000 HLRZ C,0(SX) 002153' 411340 400600 ANDCAI C,SYMF!INTF!ENTF 002154' 326340 002150' JUMPN C,EOUT3 002155' 365300 002160' SOJGE V,EOUT4 ;TEST END OF BLOCK 002156' 260740 010404' PUSHJ PP,OUTBIN 002157' 201300 000021 MOVEI V,^D17 ;WFW 002160' 200004 777777 EOUT4: MOVE AC0,-1(SX) 002161' 260740 004770' PUSHJ PP,SQOZE 002162' 200340 000000 MOVE C,AC0 002163' 260740 010404' PUSHJ PP,OUTBIN 002164' 254000 002150' JRST EOUT3 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 43 MACRO 10 24-APR-78 02:11 OUTPUT ROUTINES ;OUTPUT THE SYMBOLS 002165' 336000 013730' SOUT: SKIPN IONSYM ;SKIP IF NOSYM SEEN 002166' 606600 000003 TRNN ER,LPTSW!TTYSW ;A LISTING REQUIRED? 002167' 254000 002377' JRST SOUT1 ;NO 002170' 201000 014670' MOVEI [ASCIZ /SYMBOL TABLE/] 002171' 542000 013550' HRRM SUBTTX ;SET NEW SUB-TITLE 002172' 260740 010703' PUSHJ PP,OUTFF ;FORCE NEW PAGE 002173' 201240 000001 MOVEI ARG,NCOLS ;SET UP FOR NCOLS ACROSS SYMBOL TABLE 002174' 602600 000001 TRNE ER,TTYSW ;IS TTY LISTING DEVICE? 002175' 201240 000002 MOVEI ARG,2 ;YES,ONLY 2 COLLUMNS 002176' 202240 013451' MOVEM ARG,NCOLLS ;STORE ANSWER 002177' 202240 013554' MOVEM ARG,SYMCNT 002200' 260740 002205' PUSHJ PP,LOUT1 ;OUTPUT THEM 002201' 200240 013554' MOVE ARG,SYMCNT ;SEE IF WE ENDED EVEN 002202' 312240 013451' CAME ARG,NCOLLS 002203' 260740 010600' PUSHJ PP,OUTCR ;NO, NEED CR 002204' 254000 002377' JRST SOUT1 ;NOW FOR BLOCK TYPE 2 002205' 260740 002306' LOUT1: PUSHJ PP,LLUKUP ;SET FOR TABLE SCAN 002206' 606240 400000 TRNN ARG,SYMF 002207' 606240 060000 TRNN ARG,MACF!SYNF 002210' 634540 000013 TDZA MRP,MRP ;SKIP AND CLEAR MRP 002211' 263740 000000 POPJ PP, ;NO, TRY AGAIN 002212' 602240 000400 TRNE ARG,INTF 002213' 201540 000001 MOVEI MRP,1 002214' 602240 001000 TRNE ARG,EXTF 002215' 211540 000001 MOVNI MRP,1 ;MRP=-1 FOR EXTERNAL 002216' 602240 040000 TRNE ARG,SYNF ;SYNONYM? 002217' 321540 000455' JUMPL MRP,POPOUT ;YES, DON'T OUTPUT IF EXTERNAL 002220' 602240 000004 TRNE ARG,SUPRBT ;IF SUPRESSED ; JUMPGE MRP,POPOUT ;DO NOT OUTPUT UNLESS EXTERNAL 002221' 263740 000000 POPJ PP, ;DO NOT OUTPUT 002222' 350017 000000 AOS (PP) ;SET FOR SKIP RETURN IF SYMBOL IS PRINTED 002223' 325540 002230' JUMPGE MRP,LOUT10 ;BRANCH IF NOT EXTERNAL 002224' 554440 000006 HLRZ RC,V ;PUT POINTER/FLAGS IN RC 002225' 602440 777776 TRNE RC,-2 ;POINTER? 002226' 204451 000000 MOVS RC,0(RC) ;YES 002227' 500300 000011 HLL V,RC ;STORE LEFT VALUE 002230' 261740 000011 LOUT10: PUSH PP,RC ;SAVE FOR LATER 002231' 260740 003074' PUSHJ PP,OUTSYM ;OUTPUT THE NAME 002232' 200457 000000 MOVE RC,(PP) ;GET COPY 002233' 201040 000000 MOVEI AC1,0 002234' 323540 002241' JUMPLE MRP,LOUT15 ;SET DEFFERRED BITS IF EXTERNAL 002235' 603440 777776 TLNE RC,-2 ;CHECK FOR LEFT FIXUP 002236' 435040 000040 IORI AC1,40 ;AND SET BITS 002237' 602440 777776 TRNE RC,-2 ;CHECK FOR RIGHT FIXUP 002240' 435040 000020 IORI AC1,20 ;AND SET BITS 002241' 603440 777776 LOUT15: TLNE RC,-2 ;FIX RELOC AS 0 IF EXTERNAL 002242' 553000 000011 HRRZS RC 002243' 602440 777776 TRNE RC,-2 002244' 513000 000011 HLLZS RC MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 43-1 MACRO 10 24-APR-78 02:11 OUTPUT ROUTINES 002245' 623440 777777 TLZE RC,-1 002246' 660440 000002 TRO RC,2 002247' 504540 000011 HRL MRP,RC 002250' 201440 000000 MOVEI RC,0 002251' 602240 000200 TRNE ARG,ENTF ;ENTRY DMN 002252' 541540 777773 HRRI MRP,-5 002253' 602240 100000 TRNE ARG,NOOUTF ;SUPRESS OUTPUT? WFW 002254' 271540 000003 ADDI MRP,3 ;YES WFW 002255' 602240 002000 TRNE ARG,UNDF ;UNDEFINED IS EXTERNAL 002256' 541540 000002 HRRI MRP,2 ;SO FLAG AS UXT 002257' 434053 002512' IOR AC1,SOUTC(MRP) 002260' 200240 000001 MOVE ARG,AC1 002261' 202000 013551' MOVEM AC0,SVSYM ;SAVE IT 002262' 200000 000006 MOVE AC0,V ;GET THE VALUE 002263' 554440 000013 HLRZ RC,MRP ;AND THE RELOCATION 002264' 520400 000006 HLLO CS,V 002265' 602440 000002 TRNE RC,2 ;LEFT HALF RELOCATABLE? 002266' 624400 000001 TRZA CS,1 ;NO, FLAG AND PRINT 002267' 603400 777777 TLNE CS,-1 ;IS THE LEFT HALF ZERO? 002270' 260740 003035' PUSHJ PP,ONC1 ;NO, OUTPUT IT 002271' 260740 010571' LOUT11: PUSHJ PP,OUTTAB 002272' 524400 000006 LOUT30: HRLO CS,V 002273' 630400 000011 TDZ CS,RC ;SET RELOCATION 002274' 260740 003035' PUSHJ PP,ONC1 002275' 260740 010571' PUSHJ PP,OUTTAB 002276' 262740 000011 POP PP,RC ;GET BACK RELOC AND CHECK EXTERNAL 002277' 201413 002512' LOUT60: MOVEI CS,SOUTC(MRP) 002300' 260740 003060' PUSHJ PP,OUTAS0 ;EXT/INT 002301' 373000 013554' SOSLE SYMCNT ;SEE IF WE HAVE RUN OUT 002302' 254000 010571' JRST OUTTAB ;NOT YET, PRINT ONE TAB 002303' 200400 013451' LOUT64: MOVE CS,NCOLLS ;YES, RESET MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 44 MACRO 10 24-APR-78 02:11 OUTPUT ROUTINES 002304' 202400 013554' MOVEM CS,SYMCNT 002305' 254000 010600' JRST OUTCR ;CARRIAGE RETURN AND TRY FOR ANOTHER MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 45 MACRO 10 24-APR-78 02:11 OUTPUT ROUTINES SYN IFBLK,SYMBLK ;SOMEWHERE TO STORE THE POINTERS 002306' 262740 013510' LLUKUP: POP PP,LOOKX ;INTERCEPT RETURN POP 002307' 200200 013552' MOVE SX,SYMBOL 002310' 200144 000000 MOVE SDEL,(SX) 002311' 271200 000002 ADDI SX,2 ;SKIP COUNT OF SYMBOLS 002312' 505200 777712 LLUKP2: HRLI SX,-<.LPP-1> ;LENGTH OF PAGE 002313' 200300 000005 MOVE V,ARG ;COPY OF ARG 002314' 202206 013400' MOVEM SX,SYMBLK(V) ;STORE SYMBOL POINTER IN TABLE 002315' 271200 000152 ADDI SX,2*<.LPP-2> ;SYMBOLS PER PAGE 002316' 367300 002314' SOJG V,.-2 ;FOR ALL COLUMNS 002317' 200300 013554' MOVE V,SYMCNT 002320' 550206 013400' HRRZ SX,SYMBLK(V) 002321' 315200 013553' CAMGE SX,SYMTOP 002322' 367300 002320' SOJG V,.-2 002323' 271300 000001 ADDI V,1 002324' 202300 013400' MOVEM V,SYMBLK 002325' 254000 002334' JRST LLUKP7 ;ENTER LOOP 002326' 202205 013400' LLUKP1: MOVEM SX,SYMBLK(ARG) ;SAVE IT 002327' 200004 777777 MOVE AC0,-1(SX) 002330' 260740 012740' PUSHJ PP,SRCH7 002331' 557000 000005 HLRZS ARG 002332' 260760 013510' PUSHJ PP,@LOOKX JRST [MOVE ARG,SYMCNT MOVEM SX,SYMBLK(ARG) 002333' 254000 014673' JRST .+1] 002334' 361140 000455' LLUKP7: SOJL SDEL,POPOUT ;TEST FOR END 002335' 200240 013554' LLUKP3: MOVE ARG,SYMCNT ;GET PAGE POSITION 002336' 200205 013400' MOVE SX,SYMBLK(ARG) ;GET NEXT POINTER 002337' 252200 002346' AOBJP SX,LLUKP4 002340' 550300 000004 HRRZ V,SX 002341' 317300 013553' CAMG V,SYMTOP 002342' 344200 002326' AOJA SX,LLUKP1 002343' 260740 002303' LLUKP6: PUSHJ PP,LOUT64 ;RESET SYMCNT 002344' 322140 000455' JUMPE SDEL,POPOUT ;EXIT IF ALL DONE 002345' 254000 002335' JRST LLUKP3 002346' 340200 000000 LLUKP4: AOJ SX, 002347' 202205 013400' MOVEM SX,SYMBLK(ARG) 002350' 200300 013451' MOVE V,NCOLLS 002351' 335006 013400' SKIPGE SYMBLK(V) ;TEST IF ALL FINISHED 002352' 254000 002370' JRST LLUKP5 ;NO 002353' 367300 002351' SOJG V,.-2 ;KEEP GOING 002354' 200200 013400' MOVE SX,SYMBLK 002355' 200204 013400' MOVE SX,SYMBLK(SX) 002356' 554300 000004 HLRZ V,SX ;GET NUMBER ADVANCED 002357' 242300 000001 LSH V,1 ;2 WORDS PER SYMBOL 002360' 275206 000002 SUBI SX,2(V) ;BACK UP ONE SYMBOL 002361' 335000 014003' SKIPGE LPP ;IF PAGE FULL 002362' 254000 002365' JRST .+3 ;DON'T FINISH WITH EXTRA CR-LF 002363' 402000 014003' SETZM LPP ;ENSURE END OF PAGE 002364' 260740 002303' PUSHJ PP,LOUT64 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 45-1 MACRO 10 24-APR-78 02:11 OUTPUT ROUTINES 002365' 200240 013451' MOVE ARG,NCOLLS 002366' 202240 013554' MOVEM ARG,SYMCNT ;JUST IN CASE 002367' 254000 002312' JRST LLUKP2 002370' 377000 013554' LLUKP5: SOSG SYMCNT ;ON LAST COL? 002371' 254000 002343' JRST LLUKP6 002372' 335000 014003' SKIPGE LPP ;IF PAGE FULL 002373' 254000 002335' JRST LLUKP3 ;NO MORE OUTPUT REPEAT 2, ;NO, TAB OUT TO NEXT COLUMN 002374' 260740 010570' 002375' 260740 010570' 002376' 254000 002335' JRST LLUKP3 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 46 MACRO 10 24-APR-78 02:11 OUTPUT ROUTINES 002377' 260740 003111' SOUT1: PUSHJ PP,LOOKUP ;SET FOR TABLE SCAN 002400' 606240 400000 TRNN ARG,SYMF 002401' 606240 060000 TRNN ARG,MACF!SYNF 002402' 634540 000013 TDZA MRP,MRP ;SKIP AND CLEAR MRP 002403' 263740 000000 POPJ PP, ;NO, TRY AGAIN 002404' 602240 000400 TRNE ARG,INTF 002405' 201540 000001 MOVEI MRP,1 IFN WFWSW, 002406' 602240 001000 TRNE ARG,EXTF 002407' 211540 000001 MOVNI MRP,1 ;MRP=-1 FOR EXTERNAL 002410' 602240 040000 TRNE ARG,SYNF ;SYNONYM? 002411' 321540 000455' JUMPL MRP,POPOUT ;YES, DON'T OUTPUT IF EXTERNAL 002412' 602240 000004 TRNE ARG,SUPRBT ;IF SUPRESSED ; JUMPGE MRP,POPOUT ;DO NOT OUTPUT UNLESS EXTERNAL 002413' 263740 000000 POPJ PP, ;DO NOT OUTPUT 002414' 325540 002421' JUMPGE MRP,SOUT10 ;BRANCH IF NOT EXTERNAL 002415' 554440 000006 HLRZ RC,V ;PUT POINTER/FLAGS IN RC 002416' 602440 777776 TRNE RC,-2 ;POINTER? 002417' 204451 000000 MOVS RC,0(RC) ;YES 002420' 500300 000011 HLL V,RC ;STORE LEFT VALUE 002421' 261740 000011 SOUT10: PUSH PP,RC ;SAVE FOR LATER 002422' 201040 000000 MOVEI AC1,0 002423' 323540 002430' JUMPLE MRP,SOUT15 ;SET DEFFERRED BITS IF EXTERNAL 002424' 603440 777776 TLNE RC,-2 ;CHECK FOR LEFT FIXUP 002425' 435040 000040 IORI AC1,40 ;AND SET BITS 002426' 602440 777776 TRNE RC,-2 ;CHECK FOR RIGHT FIXUP 002427' 435040 000020 IORI AC1,20 ;AND SET BITS IFN WFWSW, 002430' 603440 777776 SOUT15: TLNE RC,-2 ;FIX RELOC AS 0 IF EXTERNAL 002431' 553000 000011 HRRZS RC 002432' 602440 777776 TRNE RC,-2 002433' 513000 000011 HLLZS RC 002434' 623440 777777 TLZE RC,-1 002435' 660440 000002 TRO RC,2 002436' 504540 000011 HRL MRP,RC 002437' 201440 000000 MOVEI RC,0 002440' 602240 000200 TRNE ARG,ENTF ;ENTRY DMN 002441' 541540 777773 HRRI MRP,-5 002442' 602240 100000 TRNE ARG,NOOUTF ;SUPRESS OUTPUT? WFW 002443' 271540 000003 ADDI MRP,3 ;YES WFW 002444' 434053 002512' IOR AC1,SOUTC(MRP) 002445' 200240 000001 MOVE ARG,AC1 002446' 260740 002710' PUSHJ PP,NOUT2 ;SQUOZE AND DUMP THE SYMBOL 002447' 202000 013551' MOVEM AC0,SVSYM ;SAVE IT 002450' 200000 000006 MOVE AC0,V ;GET THE VALUE 002451' 554440 000013 HLRZ RC,MRP ;AND THE RELOCATION 002452' 260740 002724' PUSHJ PP,COUT 002453' 262740 000011 POP PP,RC ;GET BACK RELOC AND CHECK EXTERNAL 002454' 606440 777776 TRNN RC,-2 ;IS IT? 002455' 254000 002467' JRST SOUT50 ;NO MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 46-1 MACRO 10 24-APR-78 02:11 OUTPUT ROUTINES 002456' 200011 000001 MOVE AC0,1(RC) ;GET NAME IFN WFWSW, 002457' 201240 000060 MOVEI ARG,60 ;EXTERNAL REQ 002460' 260740 004770' PUSHJ PP,SQOZE 002461' 513000 000011 HLLZS RC ;NO RELOC 002462' 260740 002724' PUSHJ PP,COUT ;OUTPUT IT 002463' 200000 013551' MOVE AC0,SVSYM ;GET SYMBOL NAME 002464' 661000 500000 TLO AC0,500000 ;SET AS ADDITIVE SYMBOL 002465' 621000 200000 TLZ AC0,200000 ;BUT NOT LEFT HALF ETC 002466' 260740 002724' PUSHJ PP,COUT 002467' 207000 000011 SOUT50: MOVSS RC ;CHECK LEFT HALF 002470' 606440 777776 TRNN RC,-2 002471' 254000 002502' JRST SOUT60 002472' 200011 000001 MOVE AC0,1(RC) IFN WFWSW, 002473' 201240 000060 MOVEI ARG,60 002474' 260740 004770' PUSHJ PP,SQOZE 002475' 201440 000000 MOVEI RC,0 002476' 260740 002724' PUSHJ PP,COUT 002477' 200000 013551' MOVE AC0,SVSYM 002500' 661000 700000 TLO AC0,700000 002501' 260740 002724' PUSHJ PP,COUT 002502' 263740 000000 SOUT60: POPJ PP, 002503' 260740 003060' SOUT20: PUSHJ PP,OUTAS0 002504' 254000 010600' JRST OUTCR 002505' 426352 400004 !04 ;DMN 002506' 000000 000000 Z 002507' 000000 000000 Z 002510' 516131 600044 !44 ;SUPRESSED ENTRY 002511' 426612 400060 !60 002512' 000000 000010 SOUTC: EXP 10 002513' 446352 400004 !04 002514' 526612 400060 !60 ;UNDEFINED EXTERNAL 002515' 516410 400050 !50 002516' 516231 600044 !44 ;DMN MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 47 MACRO 10 24-APR-78 02:11 OUTPUT ROUTINES IFN WFWSW,< INVRSF: MOVEI ARG,3 ;GET A BLOCK ADDB ARG,FREE CAML ARG,SYMBOL PUSHJ PP,XCEEDS MOVEM AC0,(ARG) ;SAVE WHICH HALF INFO MOVE AC0,SVSYM ;GET SYMBOL NAME TLZ AC0,740000 ;GET RID OF CODE BITS MOVEM AC0,-1(ARG) ;SAVE IT HLRZ AC0,(RC) ;SYMBOL TABLE FIXUP POINTER MOVEM AC0,-2(ARG) ;LINK IN THIS BLOCK SUBI ARG,2 ;POINT TO START OF BLOCK HRLM ARG,(RC) POPJ PP, SOUT1W: HLRZS V ;GET THE SYMBOL TABLE POINTER MOVEI RC,3 ;SET UP A NEW BLOCK FOR THIS SYMBOL ADDB RC,FREE CAML RC,SYMBOL PUSHJ PP,XCEEDS ;CHECK ON OUT OF ROOM PUSH PP,ARG ;SAVE ARG AND ACO PUSH PP,AC0 MOVEI ARG,0 ;NO CODE BITS PUSHJ PP,SQOZE ;CONVERT TO RAD50 MOVEM AC0,-1(RC) ;SYMBOL NAME POP PP,AC0 POP PP,ARG ;RESTORE HRRZM V,-2(RC) ;LINK TO NEXT BLOCK MOVSI V,200000 ;FLAG AS SYMBOL TABLE FIXUP MOVEM V,(RC) HRRZ V,(SX) ;GET POINTER TO HEADER BLOCK SUBI RC,2 ;POINT TO HEAD OF BLOCK HRLM RC,(V) ;PUT IN LINK TO NEW BLOCK MOVE RC,FIXLNK ;ADD SYMBOL TO CHAIN OF ONES TO DO MOVEM SX,FIXLNK ;CHAIN THROUGH SYMBOL ENTRY MOVEM RC,-1(SX) ;WHICH IS NO LONGER NEEDED SETZB RC,V ;PUT OUT 0 FOR SYMBOL VALUE JRST SOUT10> MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 48 MACRO 10 24-APR-78 02:11 OUTPUT ROUTINES ;OUTPUT THE BINARY 002517' 524400 014000' BOUT: HRLO CS,LOCO ;PICKUP THE LOCATION 002520' 260740 003033' PUSHJ PP,ONC ;OUTPUT IT TO THE LISTING FILE 002521' 201340 000047 MOVEI C,"'" 002522' 332000 014006' SKIPE MODO ;IF MODE IS NOT ABSOLUTE 002523' 260740 010663' PUSHJ PP,OUTC ;PRINT A SINGLE QUOTE 002524' 260740 002776' PUSHJ PP,DSTOW ;GET THE CODE 002525' 261740 000011 PUSH PP,RC ;SAVE RELOC 002526' 261740 000011 PUSH PP,RC ;AND AGAIN 002527' 603440 777776 IFE WFWSW, IFN WFWSW, 002531' 606440 777776 TRNN RC,-2 ;RIGHT EXT? 002532' 254000 002553' JRST BOUT30 ;NO IFN WFWSW, 002533' 550040 000000 IFE WFWSW, 002536' 254000 002553' JRST BOUT30 ;PROCESS MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 49 MACRO 10 24-APR-78 02:11 OUTPUT ROUTINES 002537' BOUT20: 002537' 542057 777777 HRRM AC1,-1(PP) ;FIX RC IN STACK SO NO CONFUSION WFW (AC1 HAS 0) 002540' 540011 000000 HRR AC0,0(RC) ;NO, SET ADDRESS LINK 002541' 200040 014000' MOVE AC1,LOCO ;GET CURRENT LOCATION 002542' 542051 000000 HRRM AC1,0(RC) ;SET NEW LINK 002543' 554051 000000 HLRZ AC1,0(RC) ;GET FLAGS/POINTER 002544' 606040 777776 TRNN AC1,-2 ;POINTER? 002545' 540040 000011 HRR AC1,RC ;NO, SET TO FLAGS 002546' 544441 000000 HLR RC,0(AC1) ;PUT FLAGS IN RC 002547' 504040 014006' HRL AC1,MODO ;GET CURRENT MODE 002550' 622440 777776 TRZE RC,-2 ;LEFT HALF RELOCATABLE+ 002551' 661040 000002 TLO AC1,2 ;YES, SET FLAG 002552' 502041 000000 HLLM AC1,0(AC1) ;STORE NEW FLAGS 002553' 520400 000000 BOUT30: HLLO CS,AC0 002554' 623440 000001 TLZE RC,1 ;PACK RELOCATION BITS 002555' 660440 000002 TRO RC,2 002556' 602440 000002 TRNE RC,2 ;LEFT HALF RELOCATABLE? 002557' 620400 000001 TRZ CS,1 ;YES, RESET BIT 002560' 261740 000000 PUSH PP,AC0 ;NEED AN AC 002561' 554017 777777 HLRZ AC0,-1(PP) ;AC0 = LEFT RELOCATION 002562' 303000 000001 CAILE AC0,1 ;EXTERNAL? 002563' 431400 001001 XORI CS,EXTF!1 ;YES, SET SWITCH MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 50 MACRO 10 24-APR-78 02:11 OUTPUT ROUTINES 002564' 262740 000000 POP PP,AC0 ;RESTORE 002565' 260740 003033' PUSHJ PP,ONC 002566' 524400 000000 HRLO CS,AC0 002567' 630400 000011 TDZ CS,RC ;SET RELOCATION 002570' 550357 000000 HRRZ C,(PP) ;C = RIGHT RELOCATION 002571' 303340 000001 CAILE C,1 ;EXTERNAL 002572' 431400 001001 XORI CS,EXTF!1 ;YES, SET SWITCH 002573' 260740 003033' PUSHJ PP,ONC 002574' 262740 000010 BOUT3I: POP PP,CS ;GET RID OF ENTRY ON STACK 002575' 550400 014000' HRRZ CS,LOCO 002576' 603640 004500 TLNE FR,RIMSW!RIM1SW!R1BSW ;RIM OUTPUT? 002577' 254000 010360' JRST ROUT ;YES, GO PROCESS 002600' 504400 014006' HRL CS,MODO 002601' 312400 014005' CAME CS,MODLOC ;SEQUENCE OR RELOCATION BREAK? 002602' 260740 002731' PUSHJ PP,COUTD ;YES, DUMP THE BUFFER 002603' 331000 013350' SKIPL COUTX ;NEW BUFFER? 002604' 254000 002613' JRST BOUT40 ;NO, STORE CODE AND EXIT 002605' 202400 014005' MOVEM CS,MODLOC ;YES, STORE NEW VALUES 002606' 250000 014000' EXCH AC0,LOCO 002607' 250440 014006' EXCH RC,MODO 002610' 260740 002724' PUSHJ PP,COUT ;STORE BLOCK LOCATION AND MODE 002611' 250440 014006' EXCH RC,MODO ;RESTORE CURRENT VALUES 002612' 250000 014000' EXCH AC0,LOCO MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 51 MACRO 10 24-APR-78 02:11 OUTPUT ROUTINES 002613' 260740 002724' BOUT40: PUSHJ PP,COUT ;EMIT CODE 002614' 262740 000011 POP PP,RC ;RETRIEVE EXTERNAL BITS 002615' 606440 777776 TRNN RC,-2 ;RIGHT EXTERNAL? 002616' 254000 002640' JRST BOUT50 ;TRY FOR LEFT 002617' 260740 002731' PUSHJ PP,COUTD 002620' 261740 013347' PUSH PP,BLKTYP ;TERMINATE TYPE AND SAVE 002621' 201000 000002 MOVEI AC0,2 ;BLOCK TYPE 2 002622' 202000 013347' MOVEM AC0,BLKTYP 002623' 200011 000001 MOVE AC0,1(RC) ;GET SYMBOL 002624' 201240 000060 MOVEI ARG,60 ;CODE BITS 002625' 260740 004770' PUSHJ PP,SQOZE ;CONVERT TO RADIX 50 002626' 513000 000011 HLLZS RC ;SYMBOL HAS NO RELOCATION 002627' 260740 002724' PUSHJ PP,COUT ;EMIT 002630' 200000 014000' MOVE AC0,LOCO ;GET CURRENT LOC 002631' 505000 400000 HRLI AC0,400000 ;ADDITIVE REQ 002632' 540440 014006' HRR RC,MODO ;CURRENT MODE 002633' 260740 002724' PUSHJ PP,COUT ;EMIT 002634' 207000 000011 MOVSS RC ;NOW FOR LEFT 002635' 606440 777776 TRNN RC,-2 002636' 254000 002660' JRST BOUT60 002637' 254000 002647' JRST BOUT70 002640' 207000 000011 BOUT50: MOVSS RC ;CHECK OTHER HALF 002641' 606440 777776 TRNN RC,-2 ;LEFT HALF EXTERNAL? 002642' 254000 002662' JRST BOUT80 ;NO, FALSE ALARM 002643' 260740 002731' PUSHJ PP,COUTD ;CHANGE MODE 002644' 261740 013347' PUSH PP,BLKTYP 002645' 201000 000002 MOVEI AC0,2 002646' 202000 013347' MOVEM AC0,BLKTYP 002647' 200011 000001 BOUT70: MOVE AC0,1(RC) 002650' 201240 000060 MOVEI ARG,60 002651' 260740 004770' PUSHJ PP,SQOZE 002652' 513000 000011 HLLZS RC 002653' 260740 002724' PUSHJ PP,COUT 002654' 200000 014000' MOVE AC0,LOCO 002655' 505000 600000 HRLI AC0,600000 ;LEFT HALF ADD 002656' 540440 014006' HRR RC,MODO 002657' 260740 002724' PUSHJ PP,COUT ;EMIT 002660' 260740 002731' BOUT60: PUSHJ PP,COUTD ;CHANGE MODE 002661' 262740 013347' POP PP,BLKTYP ;TO OLD ONE 002662' 350000 014000' BOUT80: AOS LOCO 002663' 350000 014005' AOS MODLOC 002664' 263740 000000 POPJ PP, MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 52 MACRO 10 24-APR-78 02:11 OUTPUT ROUTINES IFN WFWSW,< INCSC1: HLRZ RC,(AC1) ;GET OFFSET OF NEXT BLOCK CAMN RC,AC0 ;IS IT THE SAME?? POPJ PP, ;YES, RETURN AC1 POINTS TO BLOCK INCSRC: MOVE RC,AC1 ;CURRENT POINTER HRRZ AC1,(AC1) ;IN CASE THIS COMES UP 0 JUMPN AC1,INCSC1 ;SINCE 0 IS END OF CHAIN. ANY MORE?? MOVEI AC1,3 ;NO, GET A NEW BLOCK ADDB AC1,FREE CAML AC1,SYMBOL PUSHJ PP,XCEED SUBI AC1,2 ;WE MUST BE POINTING RIGHT WHEN WE GET OUT HRRM AC1,(RC) ;INSERT WHERE END OF CHAIN WAS HRLZM AC0,(AC1) ;SET OFFSET AND END OF CHAIN SETZM 1(AC1) SETZM 2(AC1) ;NO LEFT OR RIGHT HALF FIXUPS POPJ PP, ;DONE LVLINK: MOVE RC,LOCO ;GET CURRENT LOCATION HRL RC,MODO ;AND MODE EXCH RC,1(AC1) ;PUT IN AND GET PLACE TO LINK TO POPJ PP,> MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 53 MACRO 10 24-APR-78 02:11 OUTPUT ROUTINES 002665' 200300 014676' NOUT: MOVE V,[POINT 7,TBUF] ;POINTER TO ASCII LINE 002666' 205400 440600 MOVSI CS,(POINT 6,AC0) ;POINTER TO SIXBIT AC0 002667' 403240 000000 SETZB ARG,AC0 002670' 134340 000006 NOUT1: ILDB C,V ;GET ASCII 002671' 301340 000141 CAIL C,"A"+40 002672' 303340 000172 CAILE C,"Z"+40 002673' 254000 002675' JRST .+2 002674' 624340 000100 TRZA C,100 ;LOWER CASE TO SIXBIT 002675' 275340 000040 SUBI C,40 ;CONVERT TO SIXBIT 002676' 323340 002704' JUMPLE C,NOUT3 ;TEST FORM NON-SIXBIT 002677' 303340 000077 CAILE C,77 ;AND NOT GREATER THAN SIXBIT 002700' 254000 002704' JRST NOUT3 ;... 002701' 136340 000010 IDPB C,CS ;DEPOSIT IN AC0 002702' 603400 770000 TLNE CS,770000 ;TEST FOR SIX CHARACTERS 002703' 254000 002670' JRST NOUT1 ;NO, GET ANOTHER 002704' 335000 013733' NOUT3: SKIPGE UNIVSN ;IF A UNIVERSAL PROG 002705' 263740 000000 POPJ PP, ;RETURN TO PUT IT IN THE TABLE 002706' 607600 000002 IFN CCLSW,< TLNN IO,IOTLSN ;AND IF WE HAVE NOT SEEN A TITLE 002707' 260740 004326' PUSHJ PP,PRNAM ;THEN PRINT THE NAME> 002710' 260740 004770' NOUT2: PUSHJ PP,SQOZE ;CONVERT TO SIXBIT 002711' 254000 002724' JRST COUT ;DUMP AND EXIT 002712' HOUT: 002712' 201440 000001 MOVEI RC,1 ;RELOCATABLE IFN RENTSW,< MOVE AC0,HHIGH ;GET HIGH SEG IF TWO SEGMENTS JUMPE AC0,.+2 ;NOT TWO SEGMENTS PUSHJ PP,COUT ;OUTPUT IT > 002713' 200000 013735' MOVE AC0,HIGH IFN RENTSW,< SKIPE HHIGH ;ANY TWOSEG HIGH STUFF JRST COUT ;YES,SO NO ABS.> 002714' 260740 002724' PUSHJ PP,COUT ;OUTPUT THE HIGHEST LOCATION 002715' 200000 013734' MOVE AC0,ABSHI ;PUT OUT ABS PORTION OF PROGRAM BREAK 002716' 364440 002724' SOJA RC,COUT ;OUTPUT A WORD OF ZERO AND EXIT MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 54 MACRO 10 24-APR-78 02:11 OUTPUT ROUTINES IFN RENTSW,< HSOUT: SETZM HISNSW ;CLEAR FOR PASS2 MOVE AC0,SVTYP3 ;GET HISEG ARG JUMPGE AC0,.+4 ;JUMP IF ONLY HISEG HRL AC0,HIGH1 ;GET BREAK FROM PASS 1 JUMPL AC0,.+2 ;OK IF GREATER THAN 400000 HRLS AC0 ;SIGNAL TWO SEGMENT TO LOADER MOVEI RC,1 ;ASSUME RELOCATABLE JRST COUT ;OUTPUT THE WORD> 002717' 336440 014052' VOUT: SKIPN RC,VECREL ;IS VECTOR ABSOLUTE ZERO? 002720' 332000 014053' SKIPE VECTOR ;ALSO CHECK RELOCATION 002721' 254000 002723' JRST .+2 002722' 263740 000000 POPJ PP, ;YES, EXIT 002723' 200000 014053' MOVE AC0,VECTOR ;AC0 SHOULD BE FLAGS 002724' 350340 013350' COUT: AOS C,COUTX ;INCREMENT INDEX 002725' 202007 013354' MOVEM AC0,COUTDB(C) ;STORE CODE 002726' 136440 013352' IDPB RC,COUTP ;STORE RELOCATION BITS 002727' 302340 000021 CAIE C,^D17 ;IS THE BUFFER FULL? 002730' 263740 000000 POPJ PP, ;NO, EXIT 002731' 357340 013350' COUTD: AOSG C,COUTX ;DUMP THE BUFFER 002732' 254000 002743' JRST COUTI ;BUFFER WAS EMPTY 002733' 504340 013347' HRL C,BLKTYP ;SET BLOCK TYPE 002734' 260740 010404' PUSHJ PP,OUTBIN ;OUTPUT COUNT AND TYPE 002735' 477340 013351' SETOB C,COUTY ;INITIALIZE INDEX 002736' 200347 013354' COUTD2: MOVE C,COUTDB(C) ;GET RELOCATION BITS/CODE 002737' 260740 010404' PUSHJ PP,OUTBIN ;DUMP IT 002740' 350340 013351' AOS C,COUTY ;INCREMENT INDEX 002741' 315340 013350' CAMGE C,COUTX ;TEST FOR END 002742' 254000 002736' JRST COUTD2 ;NO, GET NEXT WORD 002743' 476000 013350' COUTI: SETOM COUTX ;INITIALIZE BUFFER INDEX 002744' 402000 013353' SETZM COUTRB ;ZERO RELOCATION BITS 002745' 200340 014677' MOVE C,[POINT 2,COUTRB] 002746' 202340 013352' MOVEM C,COUTP ;INITIALIZE BIT POINTER 002747' 263740 000000 POPJ PP, ;EXIT MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 55 MACRO 10 24-APR-78 02:11 OUTPUT ROUTINES 002750' STOWZ1: 002750' 201440 000000 STOWZ: MOVEI RC,0 002751' STOW: 002751' 321640 002763' JUMP1 STOW20 ;SKIP TEST IF PASS ONE 002752' 602440 777776 TRNE RC,-2 ;RIGHT HALF ZERO OR 1? 002753' 260740 003021' PUSHJ PP,STOWT ;NO, HANDLE EXTERNAL 002754' 607440 777776 TLNN RC,-2 ;LEFT HALF ZERO OR 1? WFW 002755' 254000 002761' JRST STOW10 ;YES, SKIP TEST 002756' 207000 000011 MOVSS RC ;SWAP HALVES 002757' 260740 003026' PUSHJ PP,STOWT1 ;HANDLE EXTERNAL WFW 002760' 207000 000011 MOVSS RC ;RESTORE VALUES 002761' 332000 013742' STOW10: SKIPE EXTPNT ;ANY EXTERNALS REMAINING? 002762' 660600 000040 TRO ER,ERRE ;YES, SET EXTERNAL ERROR FLAG 002763' 350040 013555' STOW20: AOS AC1,STPX ;INCREMENT POINTER 002764' 202001 013557' MOVEM AC0,STCODE(AC1) ;STOW CODE 002765' 202441 013627' MOVEM RC,STOWRC(AC1) ;STOW RELOCATION BITS 002766' 336000 013773' SKIPN LITLVL ;ARE WE IN LITERAL? 002767' 350000 013777' AOS LOCA ;NO, INCREMENT ASSEMBLY LOCATION 002770' 305040 000047 CAIGE AC1,.STP-1 ;OVERFLOW? 002771' 263740 000000 POPJ PP, ;NO, EXIT 002772' 332000 013773' SKIPE LITLVL ;ARE WE IN A LITERAL? 002773' 664600 010000 TROA ER,ERRL ;YES, FLAG ERROR BUT DON'T DUMP 002774' 254000 001453' JRST CHARL1 ;NO, SAVE REGISTERS AND DUMP THE BUFFER 002775' 254000 003003' JRST STOWI ;INITIALIZE BUFFER 002776' 350040 013556' DSTOW: AOS AC1,STPY ;INCREMENT POINTER 002777' 200001 013557' MOVE AC0,STCODE(AC1) ;FETCH CODE 003000' 200441 013627' MOVE RC,STOWRC(AC1) ;FETCH RELOCATION BITS 003001' 315040 013555' CAMGE AC1,STPX ;IS THIS THE END? 003002' 263740 000000 POPJ PP, ;NO, EXIT 003003' 476000 013555' STOWI: SETOM STPX ;INITIALIZE FOR INPUT 003004' 476000 013556' SETOM STPY ;INITIALIZE FOR OUTPUT 003005' 402000 013742' SETZM EXTPNT 003006' 263740 000000 POPJ PP, ;EXIT MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 56 MACRO 10 24-APR-78 02:11 OUTPUT ROUTINES 003007' 350000 013773' SVSTOW: AOS LITLVL ;NESTED LITERALS 003010' 261740 013555' PUSH PP,STPX ;MAKE ROOM FOR ANOTHER 003011' 261740 013556' PUSH PP,STPY 003012' 200040 013555' MOVE AC1,STPX 003013' 202040 013556' MOVEM AC1,STPY 003014' 254002 000000 JRST 0(AC2) 003015' 262740 013556' GTSTOW: POP PP,STPY ;BACK UP A LEVEL 003016' 262740 013555' POP PP,STPX 003017' 370000 013773' SOS LITLVL 003020' 254002 000000 JRST 0(AC2) ;EXTERNAL RIGHT 003021' 550040 013742' STOWT: HRRZ AC1,EXTPNT ;GET RIGHT POINTER 003022' 302051 000000 CAIE AC1,(RC) ;DOES IT MATCH 003023' 260740 004041' PUSHJ PP,QEXT ;EXTERNAL OR RELOCATION ERROR 003024' 513000 013742' HLLZS EXTPNT 003025' 263740 000000 POPJ PP, ;EXIT ;EXTERNAL LEFT 003026' 554040 013742' STOWT1: HLRZ AC1,EXTPNT ;GET LEFT HALF 003027' 302051 000000 CAIE AC1,(RC) ;SEE ABOVE 003030' 260740 004041' PUSHJ PP,QEXT 003031' 553000 013742' HRRZS EXTPNT 003032' 263740 000000 POPJ PP, ;EXIT MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 57 MACRO 10 24-APR-78 02:11 OUTPUT ROUTINES 003033' 134340 013677' ONC: ILDB C,TABP ;ENTRY TO ADVANCE TAB POINTER 003034' 260740 010607' PUSHJ PP,OUTL ;OUTPUT A TAB ;OUTPUT 6 OCT NUMBERS FROM CS LEFT 003035' 201340 000006 ONC1: MOVEI C,6 ;CONVERT TO ASCII 003036' 246340 000003 LSHC C,3 ;SHIFT IN OCTAL 003037' 260740 010607' PUSHJ PP,OUTL ;OUTPUT ASCII FROM C 003040' 602400 777777 TRNE CS,-1 ;ARE WE THROUGH? 003041' 254000 003035' JRST ONC1 ;NO, GET ANOTHER 003042' 201340 000000 MOVEI C,0 ;CLEAR C 003043' 607400 000001 TLNN CS,1 ;RELOCATABLE? 003044' 201340 000047 MOVEI C,"'" ;YES 003045' 607400 001000 TLNN CS,EXTF ;OR EXTERNAL 003046' 201340 000052 MOVEI C,"*" ;YES 003047' 326340 010663' ONC2: JUMPN C,OUTC ;OUTPUT IF EXTERN OR RELOCATABLE 003050' 263740 000000 POPJ PP, ;EXIT 003051' 231340 000012 DNC: IDIVI C,^D10 003052' 506417 000000 HRLM CS,0(PP) 003053' 322340 003055' JUMPE C,.+2 003054' 260740 003051' PUSHJ PP,DNC ;RECURSE IF NON-ZERO 003055' 554357 000000 HLRZ C,0(PP) 003056' 271340 000060 ADDI C,"0" ;FORM ASCII 003057' 254000 010572' JRST PRINT ;DUMP AND TEST FOR END 003060' 505400 440700 OUTAS0: HRLI CS,(POINT 7,,) ;ENTRY TO SET POINTER 003061' 134340 000010 OUTASC: ILDB C,CS ;GET NEXT BYTE 003062' 322340 000455' JUMPE C,POPOUT ;EXIT ON ZERO DELIMITER 003063' 260740 010572' PUSHJ PP,PRINT 003064' 254000 003061' JRST OUTASC 003065' 505400 440600 OUTSIX: HRLI CS,(POINT 6,,) ;OUTPUT SIXBIT 003066' 134340 000010 ILDB C,CS ;GET SIXBIT 003067' 306340 000040 CAIN C,40 ;"@" DELIMITER? 003070' 263740 000000 POPJ PP, ;YES, EXIT 003071' 271340 000040 ADDI C,40 ;NO, FORM ASCII 003072' 260740 010607' PUSHJ PP,OUTL ;OUTPUT ASCII CHAR FROM C 003073' 254000 003066' JRST OUTSIX+1 003074' 200400 000000 OUTSYM: MOVE CS,AC0 ;PLACE NAME IN CS 003075' 201340 000000 OUTSY1: MOVEI C,0 ;CLEAR C 003076' 246340 000006 LSHC C,6 ;MOVE NEXT SIXBIT CHARACTER IN 003077' 322340 010571' JUMPE C,OUTTAB ;TEST FOR END 003100' 271340 000040 ADDI C,40 ;CONVERT TO ASCII 003101' 260740 010607' PUSHJ PP,OUTL ;OUTPUT 003102' 254000 003075' JRST OUTSY1 ;LOOP MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 58 MACRO 10 24-APR-78 02:11 OUTPUT ROUTINES 003103' 350217 000000 OUTSET: AOS SX,0(PP) ;GET RETURN LOCATION 003104' 200204 777777 MOVE SX,-1(SX) ;GET XWD CODE 003105' 546200 013347' HLRM SX,BLKTYP ;SET BLOCK TYPE 003106' 403240 000011 SETZB ARG,RC 003107' 260744 000000 PUSHJ PP,0(SX) ;GO TO PRESCRIBED ROUTINE 003110' 254000 002731' JRST COUTD ;TERMINATE BLOCK AND EXIT ;LOOKUP SCANS ALL THE SYMBOLS IN THE SYMBOL TABLE 003111' 262740 013510' LOOKUP: POP PP,LOOKX ;INTERCEPT RETURN POP 003112' 200200 013552' MOVE SX,SYMBOL 003113' 200144 000000 MOVE SDEL,0(SX) ;SET FOR TABLE SCAN 003114' 361140 000455' LOOKL: SOJL SDEL,POPOUT ;TEST FOR END 003115' 271200 000002 ADDI SX,2 003116' 200004 777777 MOVE AC0,-1(SX) 003117' 260740 012740' PUSHJ PP,SRCH7 ;LOAD REGISTERS 003120' 557000 000005 HLRZS ARG 003121' 260760 013510' PUSHJ PP,@LOOKX ;RETURN TO CALLING ROUTINE 003122' 254000 003114' JRST LOOKL ;TRY AGAIN MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 59 MACRO 10 24-APR-78 02:11 OUTPUT ROUTINES 003123' 260740 001066' END0: PUSHJ PP,EVALCM ;GET A WORD 003124' 332000 013742' SKIPE EXTPNT ;ANY EXTERNALS? 003125' 660600 000040 TRO ER,ERRE ;YES, ERROR 003126' 336300 000000 SKIPN V,AC0 ;NON-ZERO? 003127' 322440 003131' JUMPE RC,.+2 ;OR RELOC? 003130' 260740 004116' PUSHJ PP,ASSIG7 ;YES, LIST THE VALUE 003131' 202000 014053' MOVEM AC0,VECTOR 003132' 202440 014052' MOVEM RC,VECREL 003133' 260740 003551' PUSHJ PP,VARA ;FILL OUT SELF-DEFINED VARIABLES 003134' 260740 000236' PUSHJ PP,STOUTS ;DUMP THE LINE 003135' 261740 000014 PUSH PP,IO ;SAVE FLAGS 003136' 661600 040000 TLO IO,IOPROG ;XLIST LITS 003137' 260740 003456' PUSHJ PP,LIT1 003140' 262740 000014 POP PP,IO ;GET FLAG BACK 003141' 325640 003216' JUMP2 ENDP2 003142' 260740 002074' PUSHJ PP,UOUT 003143' 607600 000010 TLNN IO,MFLSW ;SKIP IF ONLY PSEND 003144' 260740 007437' PUSHJ PP,REC2 003145' 200000 013343' MOVE INDIR ;SET UP FIRST AS LAST 003146' 202000 013207' MOVEM LSTFIL ;PRINTED 003147' 402000 014102' SETZM LSTPGN 003150' 260740 003356' PUSHJ PP,INZ 003151' 603600 000010 TLNE IO,MFLSW ;IF PSEND 003152' 263740 000000 POPJ PP, ;BACK TO PSEND0 003153' 332000 013731' SKIPE PRGPTR ;HAVE ANY PRGEND'S BEEN SEEN 003154' 254000 005027' JRST PSEND3 ;YES,GO SET UP AGAIN 003155' 402000 013740' PASS20: SETZM CTLSAV 003156' 260740 002743' PUSHJ PP,COUTI 003157' 260740 002130' PUSHJ PP,EOUT ;OUTPUT THE ENTRIES 003160' 260740 003103' PUSHJ PP,OUTSET 003161' 000006 002665' XWD 6,NOUT ;OUTPUT THE NAME (BLKTYP-6) IFN RENTSW,< SKIPN HISNSW ;PUT OUT BLOCK TYPE 3? JRST PASS21 ;NO PUSHJ PP,OUTSET XWD 3,HSOUT ;OUTPUT THE HISEG BLOCK PASS21: > 003162' 201000 000001 MOVEI 1 003163' 542000 013347' HRRM BLKTYP ;SET FOR TYPE 1 BLOCK 003164' 621640 400000 TLZ FR,P1 ;SET FOR PASS 2 AND TURN OFF FLAG 003165' 661600 004000 TLO IO,IOPALL ;PUT THESE BACK 003166' 621600 040440 TLZ IO,IOPROG!IOCREF!DEFCRS ;SO LISTINGS WILL BE THE WAY THEY SHOULD 003167' 607640 004000 TLNN FR,R1BSW 003170' 254000 003003' JRST STOWI 003171' 200400 014700' MOVE CS,[XWD $ST-1-$CKSM,R1BLDR] 003172' 200350 000000 MOVE C,0(CS) 003173' 260740 010405' PUSHJ PP,PTPBIN 003174' 253400 003172' AOBJN CS,.-2 003175' 260740 010465' PUSHJ PP,R1BI 003176' 254000 003003' JRST STOWI MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 60 MACRO 10 24-APR-78 02:11 OUTPUT ROUTINES 003177' R1BLDR: 000000 PHASE 0 003177' 777762 000000 IOWD $ADR,$ST 003200' 710600 000060 $ST: CONO PTR,60 003201' 541400 000004 HRRI $A,$RD+1 003202' 710740 000010 $RD: CONSO PTR,10 003203' 254000 000003 JRST .-1 003204' 710470 000007 DATAI PTR,@$TBL1-$RD+1($A) 003205' 256010 000007 XCT $TBL1-$RD+1($A) 003206' 256010 000012 XCT $TBL2-$RD+1($A) 003207' 364400 000000 $A: SOJA $A, 003210' 312740 000016 $TBL1: CAME $CKSM,$ADR 003211' 270756 000001 ADD $CKSM,1($ADR) 003212' 331740 000016 SKIPL $CKSM,$ADR 003213' 254200 000001 $TBL2: JRST 4,$ST 003214' 253700 000003 AOBJN $ADR,$RD 003215' 254000 000002 $ADR: JRST $ST+1 000017 $CKSM: 003216' DEPHASE IF2,< PURGE $ST,$RD,$A,$TBL1,$TBL2,$ADR,$CKSM> MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 61 MACRO 10 24-APR-78 02:11 OUTPUT ROUTINES 003216' 260740 002731' ENDP2: PUSHJ PP,COUTD ;DUMP THE BUFFER 003217' 200000 014000' MOVE AC0,LOCO ;CHECK TO SEE IF LIT DIFFERED 003220' 336000 014006' SKIPN MODO ;AND USE SMALLER SINCE AT END JRST [CAMN AC0,ABSHI HRRZM AC2,ABSHI 003221' 254000 014701' JRST ENDP2W] IFN RENTSW, 003222' 316000 013735' CAMN AC0,HIGH 003223' 552100 013735' HRRZM AC2,HIGH 003224' ENDP2W: 003224' 603600 000400 REPEAT 1, REPEAT 0, ;NEEDS FIX TO CREF 003225' 260740 012676' PUSHJ PP,CLSCR2 ;CLOSE IT UP 003226' 540600 013512' ENDP2Q: HRR ER,OUTSW ;SET OUTPUT SWITCH 003227' 336000 013727' SKIPN TYPERR 003230' 660600 000001 TRO ER,TTYSW 003231' 260740 002074' PUSHJ PP,UOUT ;OUTPUT UNDEFINEDS 003232' 660600 000001 TRO ER,TTYSW 003233' 051540 000007 SKPINC C ;SEE IF WE CAN INPUT A CHAR. 003234' 255000 000000 JFCL ;BUT ONLY TO DEFEAT ^O 003235' 337340 013376' SKIPG C,ERRCNT ;GET ERROR COUNT AND CHECK FOR POSITIVE 003236' 254000 003254' JRST NOERW ;PRINT NO ERROR MESSAGE 003237' 272340 000000* IFN CCLSW, 003240' 260740 010600' PUSHJ PP,OUTCR 003241' 200340 013376' MOVE C,ERRCNT 003242' 306340 000001 CAIN C,1 ;1 IS A SPECIAL CASE 003243' 254000 003251' JRST ONERW ;PRINT MESSAGE 003244' 201340 000077 MOVEI C,"?" ;? FOR BATCH 003245' 260740 010607' PUSHJ PP,OUTL ;... 003246' 200340 013376' MOVE C,ERRCNT ;PRINT NUMBER OF ERRORS 003247' 260740 003051' PUSHJ PP,DNC 003250' 334400 014704' SKIPA CS,[EXP ERRMS1] ;LOAD TO PRINT 003251' 201400 010153' ONERW: MOVEI CS,ERRMS2 ;ONE ERROR DETECTED 003252' 260740 003065' ONERW1: PUSHJ PP,OUTSIX ;PRINT MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 61-1 MACRO 10 24-APR-78 02:11 OUTPUT ROUTINES 003253' 254000 003262' JRST ENDP2A 003254' 201400 010156' NOERW: MOVEI CS,ERRMS3 003255' 603600 001010 IFN CCLSW, IFE CCLSW, 003256' 620600 000001 TRZ ER,TTYSW ;NO TTY OUTPUT 003257' 434600 013512' IOR ER,OUTSW ;UNLESS NEEDED FOR LISTING 003260' 260740 010600' PUSHJ PP,OUTCR 003261' 254000 003252' JRST ONERW1 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 62 MACRO 10 24-APR-78 02:11 OUTPUT ROUTINES 003262' 260740 010600' ENDP2A: PUSHJ PP,OUTCR 003263' 607600 000010 TLNN IO,MFLSW ;IN A MULTI-PROG FILE? 003264' 254000 003270' JRST ENDP2D ;NO 003265' 332000 013376' SKIPE ERRCNT ;ANY ERROR? PUSHJ PP,[MOVEI CS,[ASCIZ /PROGRAM /] PUSHJ PP,OUTAS0 ;YES,SO PRINT MESSAGE MOVEI CS,TBUF ;AND TITLE PUSHJ PP,OUTAS0 ;FOR IDENTIFICATION 003266' 260740 014707' JRST OUTCR] ;AND A CR-LF 003267' 624600 000001 TRZA ER,TTYSW ;NO MORE OUTPUT NOW 003270' ENDP2D: 003270' 603600 001000 IFN CCLSW, IFE CCLSW,< SKIPA ;SO PRGEND CODE CAN WORK> 003272' 434600 013512' IOR ER,OUTSW ;... 003273' 260740 010600' PUSHJ PP,OUTCR IFN RENTSW,< MOVEI CS,[SIXBIT /HI-SEG. BREAK IS @/] SKIPN HHIGH ;DON'T PRINT IF ZERO JRST ENDP2C ;IT WAS PUSHJ PP,OUTSIX HRLO CS,HHIGH ;GET THE BREAK PUSHJ PP,ONC1 PUSHJ PP,OUTCR ENDP2C:> 003274' 201400 014714' MOVEI CS,[SIXBIT /PROGRAM BREAK IS @/] 003275' 260740 003065' PUSHJ PP,OUTSIX ;OUTPUT PROGRAM BREAK 003276' 550400 013734' HRRZ CS,ABSHI ;GET ABS. BREAK 003277' 307400 000140 CAIG CS,140 ;ANY ABS. CODE JRST [HRLO CS,HIGH ;NO 003300' 254000 014717' JRST ENDP2B] ;SO DON'T PRINT 003301' 524400 013735' HRLO CS,HIGH ;GET PROGRAM BREAK 003302' 260740 003035' PUSHJ PP,ONC1 003303' 260740 010600' PUSHJ PP,OUTCR 003304' 201400 014721' MOVEI CS,[SIXBIT /ABSLUTE BREAK IS @/] 003305' 260740 003065' PUSHJ PP,OUTSIX 003306' 524400 013734' HRLO CS,ABSHI 003307' 260740 003035' ENDP2B: PUSHJ PP,ONC1 003310' 260740 010600' PUSHJ PP,OUTCR 003311' 603640 004400 TLNE FR,RIMSW!R1BSW ;RIM MODE? 003312' 260740 003345' PUSHJ PP,RIMFIN ;YES, FINISH IT 003313' 607600 001010 IFN CCLSW, IFE CCLSW, 003314' 660600 000001 TRO ER,TTYSW ;PRINT SIZE 003315' 260740 010600' PUSHJ PP,OUTCR 003316' 200340 000012* MOVE C,JOBREL 003317' 242340 777766 LSH C,-^D10 003320' 271340 000001 ADDI C,1 003321' 260740 003051' PUSHJ PP,DNC 003322' 201400 014724' MOVEI CS,[SIXBIT /K CORE USED@/] 003323' 260740 003065' PUSHJ PP,OUTSIX 003324' 260740 010600' PUSHJ PP,OUTCR 003325' 540600 013512' HRR ER,OUTSW MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 62-1 MACRO 10 24-APR-78 02:11 OUTPUT ROUTINES 003326' 260740 003103' PUSHJ PP,OUTSET 003327' 000002 002165' XWD 2,SOUT ;OUTPUT THE SYMBOLS (BLKTYP-2) 003330' 260740 003103' PUSHJ PP,OUTSET 003331' 000007 002717' XWD 7,VOUT ;OUTPUT TRANSFER VECTOR (..-7) IFN WFWSW, 003332' 260740 003103' PUSHJ PP,OUTSET 003333' 000005 002712' XWD 5,HOUT ;OUTPUT HIGHEST RELOCATABLE (..-5) 003334' 260740 002731' PUSHJ PP,COUTD 003335' 607600 000010 TLNN IO,MFLSW ;IS IT PRGEND? 003336' 254000 007225' JRST FINIS ;ALAS, FINISHED 003337' 201400 013527' MOVEI CS,SBUF ;RESET SBUF POINTER 003340' 542400 013550' HRRM CS,SUBTTX ;TO SUBTTL 003341' 402000 013734' SETZM PASS2I ;CLEAR PASS2 VARIABLES 003342' 200000 014726' MOVE [XWD PASS2I,PASS2I+1] 003343' 251000 014076' BLT PASS2Z-1 ;BUT NOT ALL OF VARIABLES 003344' 254000 003356' JRST INZ ;RE-INITIALIZE FOR NEXT PROG MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 63 MACRO 10 24-APR-78 02:11 OUTPUT ROUTINES IFN WFWSW,< OUTB12: SKIPN ARG,FIXLNK ;WERE THERE ANY?? POPJ PP, ;JUST GO AWAY OUTB19: HRRZ SX,(ARG) ;POINTER TO HEADER BLOCK NOW IN SX HRRZ AC1,(SX) ;NOW AC1 HAS POINTER TO CODE FIXUPS JUMPE AC1,OUTB13 ;NONE THERE OUTB16: HLRZ AC0,(AC1) ;GET LOCATION OFFSET ADD AC0,2(SX) ;ADD BASE LOCATION SKIPN 1(AC1) ;AND RIGHT HALF?? JRST OUTB14 ;NO PUSH PP,AC0 ;SAVE FIXUP VALUE SETZB AC0,RC PUSHJ PP,OUTBWD ;OUTPUT A Z (SAYS RIGHT HALF CODE) POP PP,AC0 ;GET VALUE BACK HLRZ RC,1(AC1) ;GET RELOC OF FIXUP CHAIN LSH RC,1 ;GOES IN LEFT HALF HRL AC0,1(AC1) ;LOCATION OF CHAIN PUSHJ PP,OUTBWD ;LEFT HALF LOCATION, RIGHT HALF VALUE OUTB14: SKIPN 2(AC1) ;ANY LEFT HALF?? JRST OUTB15 ;NO, GO LOOK FOR NEXT BLOCK PUSH PP,AC0 ;SAVE VALUE MOVEI RC,0 MOVSI AC0,400000 ;INDICATE LEFT HALF PUSHJ PP,OUTBWD POP PP,AC0 HLRZ RC,2(AC1) ;GET RELOC FOR LEFT HALF LSH RC,1 HRL AC0,2(AC1) PUSHJ PP,OUTBWD OUTB15: HRRZ AC1,(AC1) ;NEXT LINK IN CHAIN JUMPN AC1,OUTB16 ;IF NOT END, PROCESS OUTB13: HLRZ AC1,(SX) ;POINTER TO SYMBOL TABLE FIXUP CHAIN JUMPE AC1,OUTB17 ;CHACK FOR SOME THERE OUTB18: MOVE AC0,2(AC1) ;FLAGS HRR AC0,2(SX) ;VALUE IN RH MOVEI RC,0 ;NO RELCO ON IT PUSHJ PP,OUTBWD MOVE AC0,1(AC1) ;THE SYMBOL NAME PUSHJ PP,OUTBWD HRRZ AC1,(AC1) ;FOOLOW CHAIN JUMPN AC1,OUTB18 OUTB17: HRRZ ARG,-1(ARG) ;DONE WITH THIS SYMBOL GET NEXT JUMPN ARG,OUTB19 POPJ PP, ;ALL DONE MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 64 MACRO 10 24-APR-78 02:11 OUTPUT ROUTINES OUTBWD: SKIPL COUTX ;IF WE ARE AT THE START JRST COUT ;NO PUT OUT PUSH PP,AC0 ;WE NEED TO PUT NEW RELOC AND VAR LENGTH PUSH PP,RC ;AS FIRST TWO WORDS MOVE AC0,HIGH MOVEI RC,1 ;IT IS RELOC PUSHJ PP,COUT MOVE AC0,LVARLC ;THE LENGTH MOVEI RC,0 PUSHJ PP,COUT POP PP,RC POP PP,AC0 JRST COUT ;NOW PUT OUT THE ONE WE WANTED TO > 003345' 603640 004000 RIMFIN: TLNE FR,R1BSW 003346' 260740 010447' PUSHJ PP,R1BDMP 003347' 336340 014053' SKIPN C,VECTOR 003350' 205340 254200 MOVSI C,(JRST 4,) 003351' 607340 777000 TLNN C,777000 003352' 661340 254000 TLO C,(JRST) 003353' 260740 010405' PUSHJ PP,PTPBIN 003354' 201340 000000 MOVEI C,0 003355' 254000 010405' JRST PTPBIN MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 65 MACRO 10 24-APR-78 02:11 PASS INITIALIZE SUBTTL PASS INITIALIZE 003356' 350000 014004' INZ: AOS MODA 003357' 350000 014006' AOS MODO 003360' 402000 013214' SETZM SEQNO 003361' 402000 013211' SETZM TAG 003362' 541640 000010 HRRI RX,^D8 003363' 201000 013477' MOVEI VARHD 003364' 202000 013500' MOVEM VARHDX 003365' 201000 013504' MOVEI LITHD 003366' 202000 013505' MOVEM LITHDX 003367' 260740 003526' PUSHJ PP,LITI 003370' 260740 003003' PUSHJ PP,STOWI 003371' 254000 001774' JRST OUTLI 003372' 220100 000005 RCPNTR: POINT 1,ARG,^L-18 ;POINT 1,ARG,22 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 66 MACRO 10 24-APR-78 02:11 PSEUDO-OP HANDLERS SUBTTL PSEUDO-OP HANDLERS 003373' 260740 000236' TAPE0: PUSHJ PP,STOUTS ;FINISH THIS LINE 003374' 254000 007447' JRST GOTEND ;AND IGNORE THE REST OF THIS FILE 003375' 260740 004034' RADIX0: PUSHJ PP,EVAL10 ;EVALUATE RADIX D10 003376' 307000 000012 CAIG AC0,^D10 ;IF GREATER THAN 10 003377' 307000 000001 CAIG AC0,1 ;OR LESS THAN 2, 003400' 664600 040000 ERRAX: TROA ER,ERRA ;FLAG ERROR AND SKIP 003401' 540640 000000 HRR RX,AC0 ;SET NEW RADIX 003402' 263740 000000 POPJ PP, 003403' 621600 000001 XALL0: TLZ IO,IOSALL ;TURN OFF MACRO SUPPRESS ALL 003404' 321640 000455' IOSET: JUMP1 POPOUT ;NOSYM (IONSYM), XALL (IOPALL), XLIST (IOPROG) 003405' 554200 000000 HLRZ SX,AC0 ;STORE FLAGS 003406' 260740 000236' PUSHJ PP,STOUTS ;POLISH OFF LINE 003407' 661604 000000 TLO IO,0(SX) ;NOW SUPRESS PRINTING 003410' 263740 000000 POPJ PP, 003411' 630600 000000 IORSET: TDZ IO,AC0 ;RESET FLAG IOPALL/IOPROG 003412' 603000 002000 TLNE AC0,IONCRF ;RESTORING CREFFING? 003413' 621600 000040 TLZ IO,DEFCRS ;YES, CLEAR ANY WAITING DEFINING OCCURENCES 003414' 263740 000000 POPJ PP, 003415' 260740 004235' BLOCK0: PUSHJ PP,HIGHQ 003416' 260740 001077' PUSHJ PP,EVALEX ;EVALUATE 003417' 622440 777777 TRZE RC,-1 ;EXTERNAL OR RELOCATABLE? 003420' 260740 004041' PUSHJ PP,QEXT ;YES, DETERMINE TYPE 003421' 272000 014000' ADDM AC0,LOCO ;UPDATE ASSEMBLY LOCATION 003422' 250000 013777' BLOCK1: EXCH AC0,LOCA ;SAVE START OF BLOCK 003423' 272000 013777' ADDM AC0,LOCA ;UPDATE OUTPUT LOCATION 003424' 526000 013776' BLOCK2: HRLOM AC0,LOCBLK 003425' 325640 000455' JUMP2 POPOUT 003426' 602600 002000 TRNE ER,ERRU 003427' 660600 001000 TRO ER,ERRV 003430' 263740 000000 POPJ PP, MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 67 MACRO 10 24-APR-78 02:11 PSEUDO-OP HANDLERS 003431' 660600 000001 PRNTX0: TRO ER,TTYSW ;SET OUTPUT TO TTY 003432' 325640 003434' JUMP2 PRNTX2 ;PASS1? 003433' 674600 013512' TDOA ER,OUTSW ;YES,OUTPUT TO LSTDEV ALSO 003434' 420600 013512' PRNTX2: ANDCM ER,OUTSW ;NO,DON'T OUTPUT TO TTY IF IT IS LSTDEV 003435' 260740 004543' PUSHJ PP,BYPASS ;GET FIRST CHAR. 003436' 665600 000004 TLOA IO,IORPTC ;REPEAT IT AND SKIP 003437' 260740 010572' PRNTX4: PUSHJ PP,PRINT ;PRINT THE CHAR. 003440' 260740 001415' PUSHJ PP,CHARAC ;GET ASCII CHAR. 003441' 307340 000015 CAIG C,CR ;IF GREATER THAN CR 003442' 307340 000011 CAIG C,HT ;OR LESS THAN LF 003443' 254000 003437' JRST PRNTX4 ;THEN CONTINUE 003444' 260740 010600' PUSHJ PP,OUTCR ;OUTPUT A CRLF 003445' 624600 000003 TRZA ER,TTYSW!LPTSW ;TURN OF OUTPUT 003446' 350017 000000 CPOPJ1: AOS (PP) ;USEFUL TAG HAS TO GO SOMEWHERE 003447' 263740 000000 CPOPJ: POPJ PP, ;EXIT 003450' 260740 001363' REMAR0: PUSHJ PP,GETCHR ;GET A CHARACTER 003451' 302340 000033 CAIE C,EOL 003452' 254000 003450' JRST REMAR0 003453' 263740 000000 POPJ PP, ;EXIT MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 68 MACRO 10 24-APR-78 02:11 PSEUDO-OP HANDLERS 003454' 260740 003422' LIT0: PUSHJ PP,BLOCK1 003455' 260740 000236' PUSHJ PP,STOUTS 003456' 325640 003466' LIT1: JUMP2 LIT20 ;ON PASS ONE, WE JUST STEP THE LOCATION COUNTER AND CLEAR 003457' 200000 013506' MOVE AC0,LITCNT 003460' 200200 013505' MOVE SX,LITHDX 003461' 506004 000000 HRLM AC0,0(SX) 003462' 200300 013777' MOVE V,LOCA 003463' 504300 014004' HRL V,MODA 003464' 202304 777777 MOVEM V,-1(SX) 003465' 254000 003522' JRST LIT24 003466' 261740 013777' LIT20: PUSH PP,LOCA 003467' 261740 014000' PUSH PP,LOCO 003470' 336000 013507' SKIPN LITNUM 003471' 254000 003476' JRST LIT20A 003472' 200200 013505' MOVE SX,LITHDX 003473' 550004 777777 HRRZ AC0,-1(SX) 003474' 312000 013777' CAME AC0,LOCA 003475' 660600 000100 TRO ER,ERRP 003476' 200200 013501' LIT20A: MOVE SX,LITAB 003477' 375000 013507' LIT21: SOSGE LITNUM 003500' 254000 003511' JRST LIT22 003501' 200004 777776 MOVE AC0,-2(SX) ;WFW 003502' 200444 777777 MOVE RC,-1(SX) ;WFW 003503' 200204 000000 MOVE SX,(SX) ;WFW POINTER TO THE NEXT LIT 003504' 260740 002763' PUSHJ PP,STOW20 ;STOW CODE 003505' 201340 000012 MOVEI C,12 ;SET LINE FEED 003506' 136340 013453' IDPB C,LBUFP 003507' 260740 001556' PUSHJ PP,OUTLIN ;OUTPUT THE LINE 003510' 254000 003477' JRST LIT21 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 69 MACRO 10 24-APR-78 02:11 PSEUDO-OP HANDLERS 003511' 550100 014000' LIT22: HRRZ AC2,LOCO 003512' 262740 014000' POP PP,LOCO 003513' 262740 013777' POP PP,LOCA 003514' 200200 013505' MOVE SX,LITHDX 003515' 554004 000000 HLRZ AC0,0(SX) 003516' 274100 014000' SUB AC2,LOCO ;COMPUTE LENGTH USED 003517' 315000 000002 CAMGE AC0,AC2 ;USE LARGER 003520' 200000 000002 MOVE AC0,AC2 003521' 270100 014000' ADD AC2,LOCO 003522' 272000 013777' LIT24: ADDM AC0,LOCA 003523' 272000 014000' ADDM AC0,LOCO 003524' 260740 003533' PUSHJ PP,GETTOP 003525' 542200 013505' HRRM SX,LITHDX 003526' 402000 013506' LITI: SETZM LITCNT 003527' 402000 013507' SETZM LITNUM 003530' 201000 013501' MOVEI LITAB 003531' 202000 013502' MOVEM LITABX 003532' 254000 004235' JRST HIGHQ 003533' 550040 000004 GETTOP: HRRZ AC1,SX ;VARHD 003534' 550204 000000 HRRZ SX,0(SX) 003535' 326200 000455' JUMPN SX,POPOUT 003536' 201200 000003 MOVEI SX,3 ;WFW 003537' 273200 013377' ADDB SX,FREE 003540' 311200 013552' CAML SX,SYMBOL 003541' 260740 010277' PUSHJ PP,XCEED 003542' 275200 000001 SUBI SX,1 ;MAKE SX POINT TO LINK 003543' 402004 000000 SETZM 0(SX) ;CLEAR FORWARD LINK 003544' 542201 000000 HRRM SX,0(AC1) ;STORE ADDRESS IN LAST LINK 003545' 263740 000000 POPJ PP, MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 70 MACRO 10 24-APR-78 02:11 PSEUDO-OP HANDLERS 003546' 260740 003422' VAR0: PUSHJ PP,BLOCK1 ;PRINT LOCATION 003547' 260740 003551' PUSHJ PP,VARA 003550' 254000 000236' JRST STOUTS 003551' 200200 013500' VARA: MOVE SX,VARHDX 003552' 200000 013777' MOVE AC0,LOCA ;GET LOCATION FOR CHECK 003553' 321640 003556' JUMP1 VARB ;DO NOT CHECK START ON PASS 1 003554' 312004 777777 CAME AC0,-1(SX) ;CHECK START OF VAR AREA 003555' 660600 000100 TRO ER,ERRP ;AND GIVE ERROR 003556' 202004 777777 VARB: MOVEM AC0,-1(SX) ;SAVE START FOR PASS 2 003557' 554004 000000 HLRZ AC0,0(SX) 003560' 272000 013777' ADDM AC0,LOCA 003561' 272000 014000' ADDM AC0,LOCO 003562' 260740 003533' PUSHJ PP,GETTOP 003563' 542200 013500' HRRM SX,VARHDX 003564' 325640 000455' JUMP2 POPOUT 003565' 260740 003111' PUSHJ PP,LOOKUP ;SET FOR TABLE SCAN IFN WFWSW, 003566' 626240 000100 TRZN ARG,VARF 003567' 263740 000000 POPJ PP, ;NO, EXIT 003570' 620240 002000 TRZ ARG,UNDF ;TURN OFF FLAG NOW IFN WFWSW, 003571' 205000 000001 IFE WFWSW, 003572' 272001 000000 ADDM AC0,0(AC1) ;UPDATE COUNT IFN WFWSW,< VARA1: ADDI V,1 ;GET LENGTH OF DESIRED BLOCK ADDM V,LOCO EXCH V,LOCA ADDM V,LOCA HRL ARG,V ;GET STARTING LOCATION AND UPDAT PCS > 003573' 434240 014004' IOR ARG,MODA ;SET TO ASSEMBLY MODE 003574' 504240 013777' IFE WFWSW, 003575' 206244 000000 MOVSM ARG,0(SX) ;UPDATE 2ND WRD OF SYM TAB ENTRY 003576' 350000 013777' IFE WFWSW, 003600' 254000 004235' JRST HIGHQ1 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 71 MACRO 10 24-APR-78 02:11 PSEUDO-OP HANDLERS 003601' 261740 000000 IF: PUSH PP,AC0 ;SAVE AC0 003602' 261740 000014 PUSH PP,IO 003603' 260740 004046' PUSHJ PP,EVALXQ ;EVALUATE AND TEST EXTERNAL 003604' 262740 000001 POP PP,AC1 003605' 321040 003607' JUMPL AC1,IFPOP 003606' 621600 400000 TLZ IO,FLDSW 003607' 262740 000001 IFPOP: POP PP,AC1 ;RETRIEVE SKIP INSTRUCTION 003610' 661600 000004 IFSET: TLO IO,IORPTC ;REPEAT CHARACTER 003611' 256000 000001 IFXCT: XCT AC1 ;EXECUTE INSTRUCTION 003612' 634000 000000 TDZA AC0,AC0 ;FALSE 003613' 201000 000001 MOVEI AC0,1 ;TRUE 003614' 325600 005266' IFEXIT: JUMPOC REPEA1 ;BRANCH IF IN OP-CODE FIELD 003615' 260740 001363' IFEX1: PUSHJ PP,GETCHR ;SEARCH FOR "<" 003616' 306340 000033 CAIN C,EOL ;ERROR IF END OF LINE 003617' 254000 003400' JRST ERRAX 003620' 302340 000034 CAIE C,34 003621' 254000 003615' JRST IFEX1 003622' 322000 003753' JUMPE AC0,IFEX2 ;TEST FOR 0 003623' 661600 000004 TLO IO,IORPTC ;NO, PROCESS AS CELL 003624' 260740 000363' PUSHJ PP,CELL 003625' 402000 013747' SETZM INCND ;NOT ANY MORE 003626' 254000 002751' JRST STOW ;STOW CODE AND EXIT 003627' 541000 400000 IFPASS: HRRI AC0,P1 ;MAKE IT TLNX IO,P1 003630' 200040 000000 MOVE AC1,AC0 ;PLACE IT IN AC1 003631' 254000 003610' JRST IFSET ;EXECUTE INSTRUCTION 003632' 520040 000000 IFB0: HLLO AC1,AC0 ;FORM AND STORE TEST INSTRUCTION 003633' 260740 001445' IFB1: PUSHJ PP,CHARL ;GET FIRST NON-BLANK 003634' 302340 000040 CAIE C," " 003635' 306340 000011 CAIN C," " 003636' 254000 003633' JRST IFB1 ;SKIP BLANKS AND TABS 003637' 307340 000015 CAIG C,CR ;CHECK FOR CARRET AS DELIM. 003640' 305340 000012 CAIGE C,LF 003641' 334200 014101' SKIPA SX,SEQNO2 003642' 254000 003400' JRST ERRAX 003643' 202200 013764' MOVEM SX,CNDSEQ 003644' 200200 014100' MOVE SX,PAGENO 003645' 202200 013763' MOVEM SX,CNDPG 003646' 476000 013747' SETOM INCND ;SAVE INFO. FOR PASS 1 ERRORS 003647' 306340 000074 CAIN C,"<" ;LEFT BRACKET? 003650' 403340 000011 SETZB C,RC ;YES, PREPARE FOR OLD FORMAT 003651' 334200 000007 SKIPA SX,C ;SAVE FOR COMPARISON 003652' 660000 000001 IFB3: TRO AC0,1 ;SET FLAG 003653' 260740 001445' IFB2: PUSHJ PP,CHARL ;GET ASCII CHARACTER AND LIST 003654' 316340 000004 CAMN C,SX ;TEST FOR DELIMITER 003655' 254000 003611' JRST IFXCT ;FOUND 003656' 302340 000040 CAIE C," " ;BLANK? 003657' 306340 000011 CAIN C," " ;OR TAB? 003660' 254000 003653' JRST IFB2 ;YES 003661' 326200 003652' JUMPN SX,IFB3 ;JUMP IF NEW FORMAT 003662' 306340 000074 CAIN C,"<" ;" ;>? 003665' 361440 003611' SOJL RC,IFXCT ;YES, DECREMENT AND EXIT IF DONE 003666' 254000 003652' JRST IFB3 ;GET NEXT CHARACTER MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 72 MACRO 10 24-APR-78 02:11 PSEUDO-OP HANDLERS 003667' 541000 002000 IFDEF0: HRRI AC0,UNDF ;MAKE IT TLNX ARG,UNDF 003670' 261740 000000 PUSH PP,AC0 ;STACK IT 003671' 260740 001043' PUSHJ PP,GETSYM ;TAKES SKIP RETURN IF SYM NAME IS LEGAL 003672' 664600 040000 TROA ER,ERRA ;ILLEGAL! 003673' 260740 012713' PUSHJ PP,SEARCH JRST [PUSHJ PP,OPTSCH TLO ARG,UNDF 003674' 254000 014727' JRST .+1] 003675' 260740 012620' PUSHJ PP,SSRCH3 ;EMIT TO CREF ANYWAY 003676' 254000 003607' JRST IFPOP ;POP AND EXECUTE INSTRUCTION MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 73 MACRO 10 24-APR-78 02:11 PSEUDO-OP HANDLERS 003677' 557000 000000 IFIDN0: HLRZS AC0 003700' 201300 000047 MOVEI V,2*.IFBLK-1 003701' 402006 013400' SETZM IFBLK(V) ;CLEAR COMPARISON BLOCK 003702' 365300 003701' SOJGE V,.-1 003703' 402000 014054' SETZM .TEMP ;CLEAR STORED DELIMETER 003704' 201440 013400' MOVEI RC,IFBLK ;SET FOR FIRST BLOCK 003705' 260740 003717' PUSHJ PP,IFCL ;GET FIRST STRING 003706' 201440 013424' MOVEI RC,IFBLKA 003707' 260740 003717' PUSHJ PP,IFCL ;GET SECOND STRING 003710' 201300 000023 MOVEI V,.IFBLK-1 003711' 200206 013400' MOVE SX,IFBLK(V) ;GET WORD FROM FIRST STRING 003712' 316206 013424' CAMN SX,IFBLKA(V) ;COMPARE WITH SECOND STRING 003713' 365300 003711' SOJGE V,.-2 ;EQUAL, TRY NEXT WORD 003714' 321300 003614' JUMPL V,IFEXIT ;DID WE FINISH STRING 003715' 431000 000001 XORI AC0,1 ;NO, TOGGLE REQUEST 003716' 254000 003614' JRST IFEXIT ;DO NOT TURN ON IORPTC WFW 003717' 260740 001415' IFCL: PUSHJ PP,CHARAC ;GET AND LIST CHARACTER 003720' 302340 000040 CAIE C," " ;SKIP SPACES 003721' 307340 000015 CAIG C,CR ;ALSO SKIP CR-LF 003722' 305340 000011 CAIGE C,HT ;AND TAB 003723' 254000 003725' JRST .+2 ;NOT ONE OF THEM 003724' 254000 003717' JRST IFCL ;SO LONG COMPARISONS WILL WORK ;*** A CROCK SO THAT IFIDN ,, WILL WORK *** 003725' 302340 000054 CAIE C,"," ;IS IT A COMMA? 003726' 254000 003731' JRST .+3 ;NO 003727' 336000 014054' SKIPN .TEMP ;YES, WAS PREVIOUS FIELD OLD METHOD? 003730' 254000 003717' JRST IFCL ;YES, IGNORE COMMA AND SPACES ; *** 003731' 306340 000074 CAIN C,"<" ;WAS IT LEFT BRACKET? 003732' 474340 000000 SETO C, ;SIGNAL OLD METHOD, LOOK FOR RIGHT BRACKET 003733' 202340 014054' MOVEM C,.TEMP ;STORE TERMINATOR FOR COMPARISON 003734' 201200 000143 MOVEI SX,5*.IFBLK-1 ;LIMIT SEARCH 003735' 505440 440700 HRLI RC,(POINT 7,,) ;SET UP BYTE IN RC 003736' 260740 001415' IFCLR: PUSHJ PP,CHARAC 003737' 333000 014054' SKIPLE .TEMP ;NEW METHOD? 003740' 254000 003745' JRST IFCLR1 ;YES, IGNORE ANGLE BRACKET COUNTING 003741' 306340 000074 CAIN C,"<" ;ANOTHER LEFT ANGLE? 003742' 370000 014054' SOS .TEMP ;YES, KEEP COUNT 003743' 306340 000076 CAIN C,">" ;CLOSING ANGLE 003744' 355000 014054' AOSGE .TEMP ;MATCHING COUNT? 003745' 316340 014054' IFCLR1: CAMN C,.TEMP ;TEST FOR DELIMITER 003746' 263740 000000 POPJ PP, ;EXIT ON RIGHT DELIMITER 003747' 367200 003751' SOJG SX,.+2 ;ANY ROOM IN COMPARISON BLOCK? 003750' 664600 040000 TROA ER,ERRA ;NO, FLAG ERROR BUT KEEP ON GOING 003751' 136340 000011 IDPB C,RC ;DEPOSIT BYTE 003752' 254000 003736' JRST IFCLR MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 74 MACRO 10 24-APR-78 02:11 PSEUDO-OP HANDLERS 003753' 260740 001363' IFEX2: PUSHJ PP,GETCHR 003754' 306340 000033 CAIN C,EOL ;EXIT WITH ERROR IF END OF LINE 003755' 254000 003400' JRST ERRAX 003756' 306340 000034 CAIN C,34 ;"<"? 003757' 344000 003753' AOJA AC0,IFEX2 ;YES, INCREMENT COUNT 003760' 302340 000036 CAIE C,36 ;">"? 003761' 254000 003753' JRST IFEX2 ;NO, TRY AGAIN 003762' 365000 003753' SOJGE AC0,IFEX2 ;YES, TEST FOR MATCH 003763' 260740 004543' PUSHJ PP,BYPASS ;YES, MOVE TO NEXT DELIMITER 003764' 402000 013747' SETZM INCND ;OUT OF CONDITIONAL NOW 003765' 344000 002750' AOJA AC0,STOWZ1 ;STOW ZERO 003766' 512000 013743' INTER0: HLLZM AC0,INTENT ;AC0 CONTAINS INTF/ENTF FLAGS 003767' 260740 001043' INTER1: PUSHJ PP,GETSYM ;GET A SYMBOL 003770' 254000 003777' JRST INTER3 ;INVALID, SKIP 003771' 260740 012610' PUSHJ PP,SSRCH ;SEARCH THE TABLE 003772' 205240 402400 MOVSI ARG,SYMF!INTF!UNDF 003773' 603240 002000 TLNE ARG,UNDF ;UNDEFINED? 003774' 660600 040000 TRO ER,ERRA ;YES, FLAG ERROR IFN WFWSW, 003775' 607240 041000 TLNN ARG,SYNF!EXTF 003776' 674240 013743' TDOA ARG,INTENT ;SET APPROPRIATE FLAGS 003777' 664600 040000 INTER3: TROA ER,ERRA ;FLAG ARG EROR AND SKIP 004000' 260740 013034' PUSHJ PP,INSERQ ;INSERT/UPDATE 004001' 321400 003767' JUMPCM INTER1 004002' 402000 013742' SETZM EXTPNT ;JUST IN CASE, SO AS NOT TO CONFUSE WORLD 004003' 263740 000000 POPJ PP, ;NO, EXIT MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 75 MACRO 10 24-APR-78 02:11 PSEUDO-OP HANDLERS 004004' 260740 001043' EXTER0: PUSHJ PP,GETSYM ;GET A SYMBOL 004005' 254000 004030' JRST EXTER4 ;INVALID, ERROR 004006' 661600 000040 EXTER1: TLO IO,DEFCRS ;FLAG THIS AS A DEFINITION 004007' 260740 012610' PUSHJ PP,SSRCH ;OK, SEARCH SYMBOL TABLE 004010' 254000 004015' JRST EXTER2 ;NOT THERE, INSERT IT 004011' 607240 003100 TLNN ARG,EXTF!VARF!UNDF 004012' 664600 000040 TROA ER,ERRE ;FLAG ERROR AND BYPASS 004013' 603240 001000 TLNE ARG,EXTF ;VALID, ALREADY DEFINED? JRST [JUMP1 EXTER3 ;YES, BYPASS TLZN ARG,UNDF ;SKIP IF UNDEFINED ALSO JRST EXTER3 ;CONTINUE ANDM ARG,(SX) ;CLEAR UNDF ON PASS 2 004014' 254000 014732' JRST EXTER2] ;SET UP EXTERNAL NOW 004015' 201300 000002 EXTER2: MOVEI V,2 ;NO, GET 2 CELLS FROM THE TREE 004016' 273300 013377' ADDB V,FREE 004017' 311300 013552' CAML V,SYMBOL ;HAVE WE RUN OUT OF CORE? 004020' 260740 010276' PUSHJ PP,XCEEDS ;YES, TRY TO BORROW SOME MORE 004021' 275300 000002 SUBI V,2 ;GET RIGHT CELL FOR POINTER 004022' 403446 000000 SETZB RC,0(V) ;ALL SET, ZERO VALUES 004023' 205240 401000 MOVSI ARG,SYMF!EXTF 004024' 260740 013036' PUSHJ PP,INSERT ;INSERT/UPDATE IT 004025' 205240 004000 MOVSI ARG,PNTF 004026' 436244 000000 IORM ARG,0(SX) 004027' 334244 777777 SKIPA ARG,-1(SX) ;GET THE SIXBIT FOR THE NAME 004030' 664600 040000 EXTER4: TROA ER,ERRA ;FLAG AS ERROR 004031' 202246 000001 MOVEM ARG,1(V) ;AND STORE THAT IN CASE SYMBOL TABLE MOVES 004032' 321400 004004' EXTER3: JUMPCM EXTER0 004033' 263740 000000 POPJ PP, ;NO, EXIT MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 76 MACRO 10 24-APR-78 02:11 PSEUDO-OP HANDLERS 004034' 261740 000015 EVAL10: PUSH PP,RX 004035' 541640 000012 HRRI RX,^D10 004036' 260740 001077' PUSHJ PP,EVALEX ;EVALUATE 004037' 262740 000015 POP PP,RX ;RESET RADIX 004040' 322440 000455' JUMPE RC,POPOUT ;EXIT IF ABSOLUTE 004041' 332000 013742' QEXT: SKIPE EXTPNT ;ANY POSSIBILITIES? 004042' 664600 000040 TROA ER,ERRE ;YES, FLAG EXTERNAL ERROR 004043' 660600 004000 TRO ER,ERRR ;NO, FLAG RELOCATION ERROR 004044' 513000 000011 HLLZS RC ;CLEAR RELOCATION/EXTERNAL 004045' 263740 000000 POPJ PP, 004046' 260740 001077' EVALXQ: PUSHJ PP,EVALEX ;EVALUATE EXPRESSION 004047' 627440 777776 TLZN RC,-2 ;LEFT HALF EXTERNAL 004050' 622440 777776 TRZE RC,-2 ;WAS AN EXTERNAL FOUND? 004051' 660600 000040 TRO ER,ERRE ;YES, FLAG ERROR 004052' 263740 000000 POPJ PP, ;RETURN MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 77 MACRO 10 24-APR-78 02:11 PSEUDO-OP HANDLERS 004053' 260740 001043' OPDEF0: PUSHJ PP,GETSYM ;GET THE FIRST SYMBOL 004054' 263740 000000 POPJ PP, ;ERROR IF INVALID SYMBOL 004055' 302340 000073 CAIE C,73 ;"["? 004056' 254000 003400' JRST ERRAX ;NO, ERROR 004057' 261740 000000 PUSH PP,AC0 ;STACK MNEMONIC 004060' 350000 013773' AOS LITLVL ;SHORT OUT LOCATION INCREMENT 004061' 260740 000125' PUSHJ PP,STMNT ;EVALUATE STATEMENT 004062' 335000 013555' SKIPGE STPX ;CODE STORED? 004063' 664600 040000 TROA ER,ERRA ;NO,"A" ERROR 004064' 260740 002776' PUSHJ PP,DSTOW ;GET AND DECODE VALUE 004065' 370000 013773' SOS LITLVL 004066' 250017 000000 EXCH AC0,0(PP) ;EXCHANGE VALUE FOR MNEMONIC 004067' 261740 000011 PUSH PP,RC ;STACK RELOCATION 004070' 661600 000040 TLO IO,DEFCRS ;SAY WE ARE DEFINING IT 004071' 260740 012573' PUSHJ PP,MSRCH ;SEARCH SYMBOL TABLE 004072' 205240 010000 MOVSI ARG,OPDF ;NOT FOUND 004073' 262740 000011 POP PP,RC ;RESTORE VALUES 004074' 262740 000006 POP PP,V 004075' 603240 060000 TLNE ARG,SYNF!MACF 004076' 660600 040000 TRO ER,ERRA ;YES "A" ERROR 004077' 606600 040000 TRNN ER,ERRA ;ERROR? 004100' 260740 013036' PUSHJ PP,INSERT ;NO, INSERT/UPDATE 004101' 621600 000040 TLZ IO,DEFCRS ;JUST IN CASE 004102' 260740 004543' PUSHJ PP,BYPASS 004103' 254000 003003' JRST STOWI ;BE SURE STOW IS RESET 004104' 200000 014000' DEPHA0: MOVE AC0,LOCO 004105' 334440 014006' SKIPA RC,MODO ;SET TO OUTPUT VALUES AND SKIP 004106' 260740 004046' PHASE0: PUSHJ PP,EVALXQ ;EVALUATE AND CHECK FOR EXTERNAL 004107' 202000 013777' MOVEM AC0,LOCA ;SET ASSEMBLY LOCATION COUNTER 004110' 202440 014004' MOVEM RC,MODA 004111' 254000 003424' JRST BLOCK2 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 78 MACRO 10 24-APR-78 02:11 PSEUDO-OP HANDLERS 004112' 321600 003400' ASSIGN: JUMPAD ERRAX ;NO, ERROR 004113' 260740 004126' PUSHJ PP,ASSIG1 004114' 603600 000001 TLNE IO,IOSALL ;SUPPRESS ALL? 004115' 326540 003447' JUMPN MRP,CPOPJ ;IF IN MACRO 004116' 202440 013775' ASSIG7: MOVEM RC,ASGBLK 004117' 602440 777776 TRNE RC,-2 ;EXTERNAL 004120' 513000 013775' HLLZS ASGBLK ;YES,CLEAR RELOCATION 004121' 603440 000001 TLNE RC,1 ;LEFT HALF NOT RELOC? 004122' 603440 777776 TLNE RC,-2 ;... 004123' 563000 013775' HRROS ASGBLK ;YES, SET FLAG 004124' 202300 013776' MOVEM V,LOCBLK 004125' 263740 000000 POPJ PP, 004126' 261740 000000 ASSIG1: PUSH PP,AC0 ;SAVE SYMBOL 004127' 403000 013742' SETZB AC0,EXTPNT ;SPECIAL CHECK FOR == WFW 004130' 260740 006531' PUSHJ PP,PEEK ;IS THE NEXT ON = 004131' 302340 000075 CAIE C,"=" 004132' 254000 004136' JRST ASSIG5 004133' 661000 100000 TLO AC0,NOOUTF ;YES, NOT OUT TO DDT WFW 004134' 260740 001363' PUSHJ PP,GETCHR ;PROCESS THE CHAR. 004135' 260740 006531' PUSHJ PP,PEEK ;CHECK FOR ==: DMN 004136' 302340 000072 ASSIG5: CAIE C,":" ;IS IT 004137' 254000 004142' JRST ASSIG6 ;NO 004140' 661000 000400 TLO AC0,INTF ;MAKE INTERNAL 004141' 260740 001363' PUSHJ PP,GETCHR ;REPEAT IT 004142' 202000 014103' ASSIG6: MOVEM AC0,HDAS ;STORE THESE BITS WFW 004143' 260740 001066' PUSHJ PP,EVALCM ;EVALUATE EXPRESSION 004144' 250017 000000 EXCH AC0,0(PP) ;SWAP VALUE FOR SYMBOL 004145' 261740 000011 PUSH PP,RC 004146' 606440 777776 TRNN RC,-2 ;CHECK EXTERNAL AGREEMENT 004147' 254000 004154' JRST ASSIG2 004150' 553000 000011 HRRZS RC 004151' 550240 013742' HRRZ ARG,EXTPNT 004152' 312440 000005 CAME RC,ARG 004153' 260740 004041' PUSHJ PP,QEXT ;EXTERNAL OR RELOCATION ERROR 004154' 554457 000000 ASSIG2: HLRZ RC,(PP) 004155' 606440 777776 TRNN RC,-2 004156' 254000 004162' JRST ASSIG3 004157' 554240 013742' HLRZ ARG,EXTPNT 004160' 312440 000005 CAME RC,ARG 004161' 260740 004041' PUSHJ PP,QEXT 004162' 661600 000040 ASSIG3: TLO IO,DEFCRS 004163' 260740 012610' PUSHJ PP,SSRCH 004164' 205240 400000 MOVSI ARG,SYMF 004165' 434240 014103' IOR ARG,HDAS ;WFW 004166' 603240 002000 TLNE ARG,UNDF ;WAS IT UNDEFINED 004167' 621240 005000 TLZ ARG,EXTF!PNTF ;YES,CLEAR EXTF NOW 004170' 621240 002100 TLZ ARG,UNDF!VARF ;CANCEL UNDEFINED AND VARIABLE FLAGS 004171' 402000 013742' SETZM EXTPNT ;FOR REST OF WORLD 004172' 262740 000011 POP PP,RC 004173' 602600 577760 TRNE ER,ERRORS-ERRQ 004174' 400440 000000 SETZ RC, ;CLEAR RELOCATION 004175' 262740 000006 POP PP,V MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 78-1 MACRO 10 24-APR-78 02:11 PSEUDO-OP HANDLERS 004176' 602600 002000 TRNE ER,ERRU ;WAS VALUE UNDEFINED? 004177' 661240 002000 TLO ARG,UNDF ;YES,SO TURN UNDF ON 004200' 603240 201000 TLNE ARG,TAGF!EXTF 004201' 254000 003400' JRST ERRAX 004202' 254000 013036' JRST INSERT MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 79 MACRO 10 24-APR-78 02:11 PSEUDO-OP HANDLERS 004203' 260740 004235' LOC0: PUSHJ PP,HIGHQ ;AC0=0,0 004204' 261740 000000 PUSH PP,AC0 ;SAVE MODE REQUESTED 004205' 557000 000000 HLRZS AC0 ;PUT MODE IN RIGHT HALF 004206' 326000 004227' JUMPN AC0,RELOC0 ;RELOC PSEUDO-OP 004207' 316000 014006' CAMN AC0,MODO ;SAME AS PRESENT MODE? JRST [HRRZ AC0,LOCO ;YES EXCH AC0,ABSLOC ;EXCH VALUES 004210' 254000 014737' JRST LOC01] 004211' 550000 014000' HRRZ AC0,LOCO ;NO, GET CURRENT VALUE 004212' 202000 014001' MOVEM AC0,RELLOC ;SAVE IT 004213' 200000 014002' MOVE AC0,ABSLOC ;GET LAST RELOC VALUE 004214' 260740 004543' LOC01: PUSHJ PP,BYPASS ;SKIP BLANKS 004215' 661600 000004 TLO IO,IORPTC 004216' 302340 000033 CAIE C,EOL ;USE PREVIOUS VALUE IF NULL ARGUMENT 004217' 260740 004046' PUSHJ PP,EVALXQ ;GET EXPRESSION AND TEST EXTERNAL 004220' 542017 000000 HRRM AC0,(PP) ;STORE NEW VALUE 004221' 262740 000000 POP PP,AC0 ;RETRIEVE STORED MODE AND VALUE 004222' 552000 013777' LOC10: HRRZM AC0,LOCA ;SET ASSEMBLY LOCATION 004223' 552000 014000' HRRZM AC0,LOCO ;AND OUTPUT LOCATION 004224' 556000 014004' HLRZM AC0,MODA ;SET MODE 004225' 556000 014006' HLRZM AC0,MODO 004226' 254000 003424' JRST BLOCK2 004227' 316000 014006' RELOC0: CAMN AC0,MODO JRST [HRRZ AC0,LOCO EXCH AC0,RELLOC 004230' 254000 014742' JRST LOC01] 004231' 550000 014000' HRRZ AC0,LOCO 004232' 202000 014002' MOVEM AC0,ABSLOC 004233' 200000 014001' MOVE AC0,RELLOC 004234' 254000 004214' JRST LOC01 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 80 MACRO 10 24-APR-78 02:11 PSEUDO-OP HANDLERS IFN RENTSW,< HISEG1: PUSHJ PP,HIGHQ ;SET CURRENT PROGRAM BREAK PUSHJ PP,COUTD ;DUMP CURRENT TYPE OF BLOCK SKIPN HISNSW ;IF WE HAVE SEEN IT BEFORE SKIPE HIGH ;OR ANY RELOC CODE PUT OUT TRO ER,ERRQ ;FLAG AS AN ERROR PUSHJ PP,BYPASS ;GO GET EXPRESSION TLO IO,IORPTC PUSHJ PP,EVALXQ ;CHECK FOR EXTERNAL ANDCMI AC0,1777 ;ONLY ALLOWED TO START ON NEW K BOUND HRRZM AC0,LOCA ;SET LOC COUNTERS HRRZM AC0,LOCO MOVEI RC,1 ;ASSUME RELOCATABLE POPJ PP, TWSEG0: PUSHJ PP,HISEG1 ;COMMON CODE JUMPN AC0,.+2 ;ARGUMENT SEEN MOVEI AC0,400000 ;ASSUME 400000 HRRZM AC0,HMIN ;SET OFSET OF HIGH SEG. HRRZM AC0,HHIGH ;INCASE NO HISEG CODE TLOA AC0,(1B0) ;SIGNAL TWO SEGMENTS AND SKIP HISEG0: PUSHJ PP,HISEG1 ;COMMON CODE HISEG2: MOVEM AC0,SVTYP3 ;SAVE THE HISEG ARG MOVEM RC,MODA ;SET MODES MOVEM RC,MODO SETOM HISNSW ;WE HAVE ALREADY PUT ONE OUT JRST BLOCK2 ;MAKE LISTING HAPPEN RIGHT> IFE RENTSW,< SYN CPOPJ,HISEG0 SYN CPOPJ,TWSEG0> SYN CPOPJ,ONFORM SYN CPOPJ,OFFORM MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 81 MACRO 10 24-APR-78 02:11 PSEUDO-OP HANDLERS 004235' HIGHQ: 004235' 200300 014000' HIGHQ1: MOVE V,LOCO ;GET ASSEMBLY LOCATION 004236' 336000 014006' SKIPN MODO ;IF ASSEMBLY MODE IS ABSOLUTE JRST [CAMLE V,ABSHI ;RECORED ABS HIGHEST ALSO MOVEM V,ABSHI 004237' 254000 014745' POPJ PP,] IFN RENTSW, 004240' 313300 013735' CAMLE V,HIGH ;IS IT GREATER THAN "HIGH"? 004241' 202300 013735' MOVEM V,HIGH ;YES, REPLACE WITH LARGER VALUE 004242' 263740 000000 POPJ PP, 004243' 625640 200000 ONML: TLZA FR,MWLFLG ;MULTI-WORD LITERALS OK 004244' 661640 200000 OFFML: TLO FR,MWLFLG ;NO 004245' 263740 000000 POPJ PP, 004246' 476000 013730' OFFSYM: SETOM IONSYM ;SUPRESS SYMBOL TABLE LISTING 004247' 263740 000000 POPJ PP, 004250' 260740 001043' SUPRE0: PUSHJ PP,GETSYM ;GET A SYMBOL TO SUPRES 004251' 254000 004255' JRST SUPRE1 ;ERROR 004252' 260740 012610' PUSHJ PP,SSRCH ;SYMBOL ONLY 004253' 254000 004255' JRST SUPRE1 ;GIVE ERROR MESSAGE 004254' 665240 000004 TLOA ARG,SUPRBT ;SET THE SUPRESS BIT 004255' 664600 040000 SUPRE1: TROA ER,ERRA 004256' 436244 000000 IORM ARG,(SX) ;PUT BACK 004257' 321400 004250' JUMPCM SUPRE0 ;ANY MORE? 004260' 254000 004264' JRST SUPRS1 004261' 260740 003111' SUPRSA: PUSHJ PP,LOOKUP ;SUPRESS ALL 004262' 205240 000004 MOVSI ARG,SUPRBT 004263' 436244 000000 IORM ARG,(SX) 004264' 402000 013742' SUPRS1: SETZM EXTPNT ;JUST IN CASE WE LOOKED ONE UP 004265' 263740 000000 POPJ PP, 004266' 321640 000455' XPUNG0: JUMP1 POPOUT 004267' 260740 003111' PUSHJ PP,LOOKUP 004270' 200244 000000 MOVE ARG,(SX) ;GET SYMBOL FLAGS 004271' 607240 001610 TLNN ARG,INTF!ENTF!EXTF!SPTR 004272' 665240 000004 TLOA ARG,SUPRBT ;LOCAL SYMBOL,SO SUPPRESS IT 004273' 402000 013742' SETZM EXTPNT 004274' 202244 000000 MOVEM ARG,(SX) ;RESTORE FLAGS 004275' 263740 000000 POPJ PP, MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 82 MACRO 10 24-APR-78 02:11 PSEUDO-OP HANDLERS 004276' 325640 003450' TITLE0: JUMP2 REMAR0 004277' 201200 000120 MOVEI SX,.TBUF 004300' 541000 013701' HRRI AC0,TBUF 004301' 260740 004315' PUSHJ PP,SUBTT1 ;GO READ IT 004302' 202200 013700' MOVEM SX,TCNT ;SAVE COUNT OF CHARS. WRITTEN 004303' 332000 013733' SKIPE UNIVSN ;WAS IT A UNIVERSAL? 004304' 260740 005176' PUSHJ PP,ADDUNV ;YES ADD TO TABLE 004305' 663600 000002 TLOE IO,IOTLSN ;HAVE WE SEEN ONE IFE CCLSW, 004306' 664600 000020 IFN CCLSW, 004310' 263740 000000 POPJ PP, ;EXIT OTHERWISE 004311' 332000 013527' SUBTT0: SKIPE SBUF ;STORE FIRST SUBTTL ON PASS1 004312' 321640 003450' JUMP1 REMAR0 ;OTHERWISE EXIT IF PASS ONE 004313' 201200 000120 MOVEI SX,.SBUF 004314' 541000 013527' HRRI AC0,SBUF 004315' 260740 004543' SUBTT1: PUSHJ PP,BYPASS ;BYPASS LEADING BLANKS 004316' 661600 000004 TLO IO,IORPTC 004317' 260740 001415' SUBTT3: PUSHJ PP,CHARAC ;GET ASCII CHARACTER 004320' 136340 000000 IDPB C,AC0 ;STORE IN BLOCK 004321' 305340 000040 CAIGE C,40 ;TEST FOR TERMINATOR 004322' 306340 000011 CAIN C,HT 004323' 367200 004317' SOJG SX,SUBTT3 ;TEST FOR BUFFER FULL 004324' 137440 000000 DPB RC,AC0 ;END, STORE TERMINATOR 004325' 364200 003447' SOJA SX,CPOPJ ;COUNT NUL AND EXIT IFN CCLSW,< 004326' 607600 001000 PRNAM: TLNN IO,CRPGSW ;NOT IF NOT RPG 004327' 263740 000000 POPJ PP, 004330' 261740 000000 PUSH PP,AC0 ;SAVE AC0 DMN 004331' 261740 000011 PUSH PP,RC ;AND RC 004332' 200000 014676' MOVE AC0,[POINT 7,TBUF] 004333' 200200 014750' MOVE SX,[POINT 7,OTBUF] 004334' 201440 000006 MOVEI RC,6 ;MAX OF SIX CHRS 004335' 134340 000000 PN1: ILDB C,AC0 004336' 303340 000040 CAILE C," " ;CHECK FOR LEGAL 004337' 303340 000172 CAILE C,"Z"+40 ;CHECK AGAINST LOWER CASE Z 004340' 254000 004343' JRST PN2 004341' 136340 000004 IDPB C,SX ;PUT IN OUTPUT BUFFER 004342' 367440 004335' SOJG RC,PN1 ;GET MORE 004343' 201340 000000 PN2: MOVEI C,0 004344' 136340 000004 IDPB C,SX ;TERMINATOR 004345' 051140 014007' TTCALL 3,OTBUF TTCALL 3,[ASCIZ / 004346' 051140 014751' /] 004347' 262740 000011 POP PP,RC 004350' 262740 000000 POP PP,AC0 ;RESTORE AC0 DMN 004351' 263740 000000 POPJ PP, > MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 83 MACRO 10 24-APR-78 02:11 PSEUDO-OP HANDLERS 004352' 260740 001043' SYN0: PUSHJ PP,GETSYM ;GET THE FIRST SYMBOL 004353' 254000 003400' JRST ERRAX ;ERROR, EXIT 004354' 260740 012573' PUSHJ PP,MSRCH ;TRY FOR MACRO/OPDEF 004355' 254000 004373' JRST SYN3 ;NO,0THRY FOR OPERAND 004356' 201200 012573' SYN1: MOVEI SX,MSRCH ;YES, SET FLAG 004357' 260740 007473' SYN2: PUSHJ PP,SAVEXS ;SAVE REGISTERS 004360' 325400 003400' JUMPNC ERRAX ;ERROR IF NO COMMA 004361' 260740 001043' PUSHJ PP,GETSYM ;GET THE SECOND SYMBOL 004362' 263740 000000 POPJ PP, 004363' 260760 013521' PUSHJ PP,@SAVBLK+SX ;SEARCH FOR SECOND SYMBOL 004364' 255000 000000 JFCL 004365' 200240 013522' MOVE ARG,SAVBLK+ARG ;GET VALUES 004366' 200440 013526' MOVE RC,SAVBLK+RC 004367' 200300 013523' MOVE V,SAVBLK+V 004370' 603240 020000 TLNE ARG,MACF ;MACRO? 004371' 260740 006543' PUSHJ PP,REFINC ;YES, INCREMENT REFERENCE 004372' 254000 013036' JRST INSERT ;INSERT AND EXIT 004373' 260740 012610' SYN3: PUSHJ PP,SSRCH ;SEARCH FOR OPERAND 004374' 254000 004404' JRST SYN4 ;NOT FOUND, TRY OP CODE 004375' 661240 040000 TLO ARG,SYNF ;FLAG AS SYNONYM 004376' 603240 001000 TLNE ARG,EXTF ;EXTERNAL? 004377' 550300 000005 HRRZ V,ARG ;YES, RELPACE WITH POINTER 004400' 201200 012610' MOVEI SX,SSRCH ;SET FLAG 004401' 607240 000100 TLNN ARG,VARF ;DO NOT LET HIM SYN A VARIABLE 004402' 254000 004357' JRST SYN2 004403' 254000 003400' JRST ERRAX 004404' 260740 010754' SYN4: PUSHJ PP,OPTSCH ;SEARCH FOR OP-CODE 004405' 254000 003400' JRST ERRAX ;NOT FOUND, EXIT WITH ERROR 004406' 205240 040000 MOVSI ARG,SYNF ;FLAG AS SYNONYM 004407' 254000 004356' JRST SYN1 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 84 MACRO 10 24-APR-78 02:11 PSEUDO-OP HANDLERS 004410' 260740 001043' PURGE0: PUSHJ PP,GETSYM ;GET A MNEMONIC JRST [TRZ ER,ERRA ;CLEAR ERROR 004411' 254000 014752' POPJ PP,] ;AND RETURN 004412' 260740 012573' PUSHJ PP,MSRCH ;SEARCH MACRO SYMBOL TABLE 004413' 254000 004421' JRST PURGE2 ;NOT FOUND, TRY SYMBOLS 004414' 261740 000010 PUSH PP,CS ;SAVE CS AS IT MAY GET GARBAGED 004415' 603240 020000 TLNE ARG,MACF ;MACRO? 004416' 260740 006546' PUSHJ PP,REFDEC ;YES, DECREMENT THE REFERENCE 004417' 262740 000010 POP PP,CS 004420' 254000 004434' JRST PURGE4 ;REMOVE SYMBOL FROM TABLE 004421' 260740 012610' PURGE2: PUSHJ PP,SSRCH ;TRY OPERAND SYMBOL TABLE 004422' 254000 004435' JRST PURGE5 ;NOT FOUND GET NEXT SYMBOL 004423' 606440 777776 TRNN RC,-2 ;CHECK COMPLEX EXTERNAL 004424' 603440 777776 TLNE RC,-2 004425' 603240 040000 TLNE ARG,SYNF 004426' 254000 004430' JRST .+2 004427' 254000 004433' JRST PURGE3 004430' 603240 003000 TLNE ARG,EXTF!UNDF ;ERROR IF EXTERNAL OR UNDEFINED 004431' 603240 040000 TLNE ARG,SYNF ;BUT NOT A SYNONYM 004432' 254000 004434' JRST PURGE4 004433' 664600 040000 PURGE3: TROA ER,ERRA ;NOT FOUND, ERROR 004434' 260740 013115' PURGE4: PUSHJ PP,REMOVE ;REMOVE FROM THE SYMBOL TABLE 004435' 321400 004410' PURGE5: JUMPCM PURGE0 004436' 263740 000000 POPJ PP, ;EXIT MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 85 MACRO 10 24-APR-78 02:11 PSEUDO-OP HANDLERS 004437' 603240 002000 OPD1: TLNE ARG,UNDF ;IF OPDEF IS UNDEFINED 004440' 660600 000200 TRO ER,ERRO ;GIVE "O" ERROR 004441' 200000 000006 OPD: MOVE AC0,V ;PUT VALUE IN AC0 004442' 254000 004445' JRST OP 004443' 205100 301117 IOP: MOVSI AC2,(POINT 9,0(PP),11) 004444' 665600 000020 TLOA IO,IOIOPF ;SET "IOP SEEN" AND SKIP 004445' 205100 270417 OP: MOVSI AC2,(POINT 4,0(PP),12) 004446' 261740 000011 PUSH PP,RC 004447' 261740 000000 PUSH PP,AC0 ;STACK CODE 004450' 261740 000002 PUSH PP,AC2 004451' 260740 001077' PUSHJ PP,EVALEX ;EVALUATE FIRST EXPRESSION 004452' 262740 000002 POP PP,AC2 004453' 325400 004465' JUMPNC OP2 004454' 260740 001363' OP1B: PUSHJ PP,GETCHR ;GET A CHARACTER 004455' 321400 004676' JUMPCM XWD5 ;PROCESS COMMA COMMA IN XWD 004456' 661600 000004 TLO IO,IORPTC ;NOT A COMMA,REPEAT IT 004457' 135040 000002 LDB AC1,AC2 004460' 270040 000000 ADD AC1,AC0 004461' 137040 000002 DPB AC1,AC2 004462' 322440 004464' JUMPE RC,OP1A ;EXTERNAL OR RELOCATABLE? 004463' 260740 004041' PUSHJ PP,QEXT ;YES, DETERMINE WHICH AND FLAG AN ERROR 004464' 260740 001077' OP1A: PUSHJ PP,EVALEX ;GET ADDRESS PART 004465' 260740 004474' OP2: PUSHJ PP,EVADR ;EVALUATE STANDARD ADDRESS 004466' 262740 000000 OP3: POP PP,AC0 ;PUT IN AC0 004467' 262740 000011 POP PP,RC 004470' 332017 000000 SKIPE (PP) ;CAME FROM EVALCM? 004471' 254000 002751' JRST STOW ;NO,STOW CODE AND EXIT 004472' 262740 000001 POP PP,AC1 ;YES,EXIT IMMEDIATELY 004473' 263740 000000 POPJ PP, MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 86 MACRO 10 24-APR-78 02:11 PSEUDO-OP HANDLERS 004474' EVADR: ;EVALUATE STANDARD ADDRESS 004474' 607000 777777 IFE IIISW, 004501' 270017 777777 ADD AC0,-1(PP) ;ADD ADDRESS PORTIONS 004502' 500017 777777 HLL AC0,-1(PP) ;GET LEFT HALF 004503' 623640 020000 TLZE FR,INDSW ;INDIRECT BIT? 004504' 661000 000020 TLO AC0,(Z @) ;YES, PUT IT IN 004505' 202017 777777 MOVEM AC0,-1(PP) ;RE-STACK CODE 004506' 270457 777776 ADD RC,-2(PP) ;UPDATE RELOCATION 004507' 542457 777776 HRRM RC,-2(PP) ;USE HALF WORD ADD 004510' 302340 000010 CAIE C,10 ;"("? 004511' 263740 000000 POPJ PP, ;NO, EXIT 004512' 207000 013742' MOVSS EXTPNT ;WFW 004513' 260740 001066' PUSHJ PP,EVALCM ;EVALUATE 004514' 207000 013742' MOVSS EXTPNT ;WFW 004515' 207300 000000 MOVSS V,AC0 ;SWAP HALVES 004516' 207200 000011 IFE IIISW, IFN IIISW, 004523' 270317 777777 ADD V,-1(PP) ;ADD RIGHT HALVES 004524' 270257 777776 ADD ARG,-2(PP) 004525' 542317 777777 HRRM V,-1(PP) ;UPDATE WITHOUT CARRY 004526' 542257 777776 HRRM ARG,-2(PP) 004527' 513000 000000 HLLZS AC0 ;PREPARE LEFT HALVES 004530' 513000 000011 HLLZS RC 004531' 603200 777777 IFE IIISW, 004537' 272017 777777 ADDM AC0,-1(PP) ;MERGE WITH PREVIOUS VALUE 004540' 272457 777776 ADDM RC,-2(PP) 004541' 302340 000011 CAIE C,11 ;")"? 004542' 254000 003400' JRST ERRAX ;NO, FLAG ERROR ;YES, BYPASS PARENTHESIS 004543' BYPASS: 004543' 260740 001363' BYPAS1: PUSHJ PP,GETCHR 004544' 322340 004543' BYPAS2: JUMPE C,.-1 ;SKIP TRAILING BLANKS 004545' 263740 000000 POPJ PP, ;EXIT MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 87 MACRO 10 24-APR-78 02:11 PSEUDO-OP HANDLERS IFE IIISW,< 004546' 250457 777776 OP2A1: EXCH RC,-2(PP) ;GET STORED CODE 004547' 607440 777777 TLNN RC,-1 ;OK IF ALL ZERO 004550' 254000 004554' JRST OP2A2 ;OK SO RETURN 004551' 641440 777777 TLC RC,-1 ;CHANGE ALL ONES TO ZEROS 004552' 643440 777777 TLCE RC,-1 ;OK IF ALL ONES 004553' 660600 200000 TRO ER,ERRQ ;OTHERWISE A "Q" ERROR 004554' 250457 777776 OP2A2: EXCH RC,-2(PP) ;GET RC,BACK 004555' 263740 000000 POPJ PP, ;AND RETURN> 004556' 514000 000015 EXPRES: HRLZ AC0,RX ;FUDGE FOR OCT0 004557' 261740 000015 OCT0: PUSH PP,RX 004560' 544640 000000 HLR RX,AC0 004561' 260740 001077' OCT1: PUSHJ PP,EVALEX ;EVALUATE 004562' 260740 002751' PUSHJ PP,STOW ;STOW CODE 004563' 321400 004561' JUMPCM OCT1 004564' 262740 000015 POP PP,RX ;YES, RESTORE RADIX 004565' 263740 000000 POPJ PP, ;EXIT MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 88 MACRO 10 24-APR-78 02:11 PSEUDO-OP HANDLERS 004566' 205440 440600 SIXB10: MOVSI RC,(POINT 6,AC0) ;SET UP POINTER 004567' 201000 000000 MOVEI AC0,0 ;CLEAR WORD 004570' 260740 001445' SIXB20: PUSHJ PP,CHARL ;GET NEXT CHARACTER 004571' 316340 000004 CAMN C,SX ;IS THIS PRESET DELIMITER? 004572' 254000 004644' JRST ASC60 ;YES 004573' 301340 000141 CAIL C,"A"+40 004574' 303340 000172 CAILE C,"Z"+40 004575' 254000 004577' JRST .+2 004576' 624340 000100 TRZA C,100 ;CONVERT LOWER CASE TO SIXBIT 004577' 275340 000040 SUBI C,40 ;CONVERT TO SIXBIT 004600' 321340 004641' JUMPL C,ASC55 ;TEST FOR INVALID CHARACTER 004601' 136340 000011 IDPB C,RC ;NO, DEPOSIT THE BYTE 004602' 603440 770000 TLNE RC,770000 ;IS THE WORD FULL? 004603' 254000 004570' JRST SIXB20 ;NO, GET NEXT CHARACTER 004604' 260740 002750' PUSHJ PP,STOWZ ;YES, STORE 004605' 254000 004566' JRST SIXB10 ;GET NEXT WORD MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 89 MACRO 10 24-APR-78 02:11 PSEUDO-OP HANDLERS 004606' 510140 000000 ASCII0: HLLZ SDEL,AC0 ;STORE ASCII/ASCIZ FLAG 004607' 260740 001445' ASC10: PUSHJ PP,CHARL ;GET FIRST NON-BLANK 004610' 302340 000040 CAIE C," " 004611' 306340 000011 CAIN C,HT 004612' 254000 004607' JRST ASC10 004613' 307340 000015 CAIG C,CR ;CHECK FOR CRRET AS DELIM 004614' 305340 000012 CAIGE C,LF 004615' 334200 014101' SKIPA SX,SEQNO2 004616' 254000 003400' JRST ERRAX 004617' 202200 013762' MOVEM SX,TXTSEQ ;SAVE SEQ AND PAGE 004620' 200200 014100' MOVE SX,PAGENO 004621' 202200 013761' MOVEM SX,TXTPG 004622' 476000 013746' SETOM INTXT 004623' 200200 000007 MOVE SX,C ;SAVE FOR COMPARISON 004624' 327140 004566' JUMPG SDEL,SIXB10 ;BRANCH IF SIXBIT 004625' 205440 440700 ASC20: MOVSI RC,(POINT 7,AC0) ;SET UP POINTER 004626' 603140 200000 TLNE SDEL,200000 ;THIS BIT (AND BIT0) IN FOR COMMENT 004627' 205440 440000 MOVSI RC,440000 ;SO NOTHING WILL BE DEPOSITED 004630' 201000 000000 IFE IIISW, IFN IIISW, 004631' 260740 001445' ASC30: PUSHJ PP,CHARL ;GET ASCII CHARACTER AND LIST 004632' 316340 000004 CAMN C,SX ;TEST FOR DELIMITER 004633' 254000 004642' JRST ASC50 ;FOUND 004634' 136340 000011 IDPB C,RC ;DEPOSIT BYTE 004635' 603440 760000 TLNE RC,760000 ;HAVE WE FINISHED WORD? 004636' 254000 004631' JRST ASC30 ;NO,GET NEXT CHARACTER 004637' 260740 002750' PUSHJ PP,STOWZ ;YES, STOW IT 004640' 254000 004625' JRST ASC20 ;GET NEXT WORD 004641' 634400 000010 ASC55: TDZA CS,CS ;ZERO CS IN CASE NESTED 004642' 634440 000003 ASC50: TDZA RC,SDEL ;TEST FOR ASCIIZ 004643' 664600 040000 TROA ER,ERRA ;SIXBIT ERROR EXIT 004644' 260740 004543' ASC60: PUSHJ PP,BYPAS1 ;POLISH OFF TERMINATOR 004645' 402000 013746' SETZM INTXT ;WE ARE OUT OF IT IFN IIISW, 004646' 420440 013555' ANDCM RC,STPX ;STORE AT LEAST ONE WORD 004647' 607140 200000 TLNN SDEL,200000 ;GET OUT WITHOUT STORING 004650' 325440 002750' JUMPGE RC,STOWZ ;STOW 004651' 263740 000000 POPJ PP, ;ASCII, NO BYTES STORED, SO EXIT MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 90 MACRO 10 24-APR-78 02:11 PSEUDO-OP HANDLERS 004652' POINT0: 004652' 261740 000011 PUSH PP,RC ;STACK REGISTERS 004653' 261740 000000 PUSH PP,AC0 004654' 260740 004034' PUSHJ PP,EVAL10 ;EVALUATE RADIX 10 004655' 137000 014761' DPB AC0,[POINT 6,0(PP),11] ;STORE BYTE SIZE 004656' 325400 004665' JUMPNC POINT2 004657' 260740 001077' PUSHJ PP,EVALEX ;NO, GET ADDRESS 004660' 260740 004474' PUSHJ PP,EVADR ;EVALUATE STANDARD ADDRESS 004661' 325400 004665' JUMPNC POINT2 004662' 260740 004034' PUSHJ PP,EVAL10 ;EVALUATE RADIX 10 004663' 603600 020000 TLNE IO,NUMSW ;IF NUMERIC 004664' 654000 014607' TDCA AC0,[-1] ;POSITION=D35-RHB 004665' 201000 000000 POINT2: MOVEI AC0,0 ;OTHERWISE SET TO D36 004666' 271000 000044 ADDI AC0,^D36 004667' 242000 000036 LSH AC0,^D30 004670' 272017 000000 ADDM AC0,0(PP) ;UPDATE VALUE 004671' 254000 004466' JRST OP3 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 91 MACRO 10 24-APR-78 02:11 PSEUDO-OP HANDLERS 004672' XWD0: 004672' 261740 000011 PUSH PP,RC 004673' 261740 000000 PUSH PP,AC0 ;STORE ZERO ON STACK 004674' 260740 001077' PUSHJ PP,EVALEX ;EVALUATE EXPRESSION 004675' 325400 004465' JUMPNC OP2 004676' 336017 000000 XWD5: SKIPN (PP) ;ANY CODE YET? 004677' 254000 004704' JRST XWD10 ;NO,USE VALUE IN AC0 004700' 322000 004702' JUMPE AC0,.+2 ;ANYTHING IN AC0? 004701' 660600 200000 TRO ER,ERRQ ;YES,FLAG "Q"ERROR 004702' 200017 000000 MOVE AC0,(PP) ;USE PREVIOUS VALUE 004703' 200457 777777 MOVE RC,-1(PP) ;AND RELOCATION 004704' 516017 000000 XWD10: HRLZM AC0,0(PP) ;SET LEFT HALF 004705' 516457 777777 HRLZM RC,-1(PP) 004706' 207000 013742' MOVSS EXTPNT ;WFW 004707' 254000 004464' JRST OP1A ;EXIT THROUGH OP 004710' 260740 004046' IOWD0: PUSHJ PP,EVALXQ ;EVALUATE AND TEST FOR EXTERNAL 004711' 302340 000014 CAIE C,14 ;","? JRST [SKIPN AC0 ;IF NZERO AND NO "," SEEN TRO ER,ERRQ ;TREAT AS Q ERROR 004712' 254000 014762' SOJA AC0,STOW] ;NO, TREAT AS RIGHT HALF 004713' 261740 000000 PUSH PP,AC0 ;YES, STACK LEFT HALF 004714' 260740 001077' PUSHJ PP,EVALEX ;WFW 004715' 275000 000001 SUBI AC0,1 004716' 262740 000001 POP PP,AC1 ;RETRIEVE LEFT HALF 004717' 213000 000001 MOVNS AC1 004720' 504000 000001 HRL AC0,AC1 004721' 254000 002751' JRST STOW ;STOW CODE AND EXIT MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 92 MACRO 10 24-APR-78 02:11 PSEUDO-OP HANDLERS 004722' 260740 004543' BYTE0: PUSHJ PP,BYPASS ;GET FIRST NON-BLANK 004723' 302340 000010 CAIE C,10 ;"("? 004724' 254000 003400' JRST ERRAX ;NO, FLAG ERROR AND EXIT 004725' 261740 000011 PUSH PP,RC 004726' 261740 000000 PUSH PP,AC0 ;INITIALIZE STACK TO ZERO 004727' 205240 447717 MOVSI ARG,(POINT -1,(PP)) 004730' 261740 000005 BYTE1: PUSH PP,ARG 004731' 260740 004034' PUSHJ PP,EVAL10 ;EVALUATE RADIX 10 004732' 262740 000005 POP PP,ARG 004733' 307000 000044 CAIG AC0,^D36 ;TEST SIZE 004734' 325000 004736' JUMPGE AC0,.+2 004735' 660600 040000 TRO ER,ERRA 004736' 137000 014765' DPB AC0,[POINT 6,ARG,11] ;STORE BYTE SIZE 004737' 133000 000005 BYTE2: IBP ARG ;INCREMENT BYTE 004740' 626240 777777 TRZN ARG,-1 ;OVERFLOW? 004741' 254000 004746' JRST BYTE3 ;NO 004742' 403000 000011 SETZB AC0,RC ;YES 004743' 250017 000000 EXCH AC0,0(PP) ;GET CURRENT VALUES 004744' 250457 777777 EXCH RC,-1(PP) ;AND STACK ZEROS 004745' 260740 002751' PUSHJ PP,STOW ;STOW FULL WORD 004746' 261740 000005 BYTE3: PUSH PP,ARG 004747' 260740 001077' PUSHJ PP,EVALEX ;COMPUTE NEXT BYTE 004750' 262740 000005 POP PP,ARG 004751' 137000 000005 DPB AC0,ARG ;STORE BYTE 004752' 520000 000005 HLLO AC0,ARG 004753' 137440 000000 DPB RC,AC0 ;STORE RELOCATION 004754' 321400 004737' JUMPCM BYTE2 004755' 306340 000010 CAIN C,10 ;"("? 004756' 254000 004730' JRST BYTE1 ;YES, GET NEW BYTE SIZE 004757' 254000 004466' JRST OP3 ;NO, EXIT MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 93 MACRO 10 24-APR-78 02:11 PSEUDO-OP HANDLERS 004760' 260740 001077' RADX50: PUSHJ PP,EVALEX ;EVALUATE CODE 004761' 326440 003400' JUMPN RC,ERRAX ;ERROR IF NOT ABSOLUTE 004762' 200240 000000 MOVE ARG,AC0 004763' 325400 003400' JUMPNC ERRAX 004764' 260740 001043' PUSHJ PP,GETSYM ;YES, GET SYMBOL 004765' 620600 040000 TRZ ER,ERRA ;CLEAR ERROR 004766' 260740 004770' PUSHJ PP,SQOZE ;SQUOZE SIXBIT AND ADD CODE 004767' 254000 002751' JRST STOW ;STOW CODE AND EXIT 004770' 200100 000000 SQOZE: MOVE AC1+1,AC0 ;PUT SIXBIT IN AC1+1 004771' 201000 000000 MOVEI AC0,0 ;CLEAR RESULT 004772' 201040 000000 SQOZ1: MOVEI AC1,0 004773' 246040 000006 LSHC AC1,6 ;PUT 6-BIT CHARACTER IN AC1 004774' 135040 014766' LDB AC1,[POINT 6,CSTAT(AC1),23] ;CONVERT TO RADIX50 004775' 221000 000050 IMULI AC0,50 ;MULTIPLY PREVIOUS RESULT 004776' 270000 000001 ADD AC0,AC1 ;ADD NEW CHARACTER 004777' 326100 004772' JUMPN AC1+1,SQOZ1 ;TEST FOR END 005000' 242240 000036 LSH ARG,^D30 ;LEFT-JUSTIFY CODE 005001' 434000 000005 IOR AC0,ARG ;MERGE WITH RESULT 005002' 263740 000000 POPJ PP, MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 94 MACRO 10 24-APR-78 02:11 PSEUDO-OP HANDLERS REPEAT 0,< EXPLANATION OF ARRAY AND LVAR FEATURES WHEN A VARIABLE IS SEEN EITHER BY #, INTEGER OR ARRAY THE VALUE PORTION OF THE SYMBOL TABLE ENTRY (RH OF 2ND WORD) IS USE TO HOLD THE DESIRED SIZE-1. THE CORRECT VALUE IS ASSIGNED BY THE VAR PSEUDO OP. WHEN LVAR IS SEEN, A SEARCH OF THE SYMBOL TABLE IS MADE FOR ALL VARIABLES. THE VARF (VARIABLE) FLAG IS LEFT ON AND EXTF AND PNTF ARE TURNED ON SO THAT THE VARIABLE LOOKS LIKE AN EXTERNAL. THE POINTER (RH OF 2ND WORD OF THE SYMBOL TABLE ENTRY) POINTS TO THE HEADER BLOCK. THE HEADER BLOCK IS FORMATTED AS FOLLOWS: WORD 1: LEFT HALF IS A POINTER TO SYMBOL TABLE FIXUP BLOCKS RIGHT HALF IS A POINTER TO CODE FIXUP BLOCKS WORD 2: 0 THIS IS USED TO DISTINGUISH IT FROM NORMAL EXTERNALS WHICH HAVE THE SYMBOL NAME HERE WORD 3: THE LOCATION RELATIVE TO THE START OF THE LOW CORE VARIABLES CORE FIXUP BLOCKS ARE SET UP BY BOUT WORD1: RH LINK TO NEXT CORE FIXUP BLOCK 0 IF END OF CHAIN LH OFFSET. NUMBER TO BE ADDED TO SYMBOL VALUE BEFORE FIXUP IS DONE WORD 2: POINTER TO A FIXUP CHAIN FOR RIGHT HALVES LEFT HALF IS RELOCATION RH IS ADDRESS WORD 3: SAME AS WORD 2 BUT FOR LEFT HALF FIXUPS NOTE ALL THESE FIXUPS ARE CHAINED EVEN IF IN LEFT HALF. SIMILARY ALL REFERENCES TO SAY A+1 ARE CHAINED SYMBOL TABLE FIXUP BLOCKS. THESE ARE GENERATED BY SOUT AS THE SYMBOL TABLE IS PUT OUT. THESE FIXUPS ARE ADDITIVE NOT CHAINED. WORD 1: RH LINK TO NEXT BLOCK LH 0 WORD 2: RADIX50 FOR THE SYMBOL WORD 3: 200000,,0 IF RH FIXUP 600000,,0 IF LH FIXUP SOUT ALSO SETS UP FIXLNK. FIXLNK POINTS TO THE CHAIN OF ALL LVAR FIXUPS TO BE DONE. IT POINTS TO THE SECOND WORD MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 95 MACRO 10 24-APR-78 02:11 PSEUDO-OP HANDLERS OF A 2 WORD BLOCK WORD 1: LINK TO 2ND WORD OF NEXT BLOCK 0 IF END WORD 2: RH POINTER TO A HEADER BLOCK LH GARBAGE FIXUPS ARE BLOCK TYPE 13 AS FOLLOWS WORD 1: THE PROGRAM BREAK (AS BLOCK TYPE 5) WORD 2: THE NUMBER OF LOCATION USED FOR VARIABLES IN THE LOW SEGMENT+1 REMAINING WORDS COME IN PAIRS AS FOLLOWS: 1ST WORD BIT 0=0 RH FIXUP BIT 0=1 LH FIXUP BIT 1=0 CORE FIXUP WORD 2 LH POINTER TO CHAIN WORD 2 RH VALUE BIT 1=1 SYMBOL FIXUP WORD 1 RH VALUE WORD 2 SYMBOL > REPEAT 0,< EXPLANATION OF ICC FEATURES IF FORMSW IS SET NON ZERO THE FORM OF THE OCTAL LISTING OUTPUT IS CHANGED FROM STANDARD HALF WORD FORM TO THE FOLLOWING:- IF INSTRUCTION BYTE 9,4,1,4,18 IF I/O INSTRUCTION BYTE 3,7,3,1,4,18 IF BYTE POINTER BYTE 6,6,2,4,18 IF ASCII BYTE 7,7,7,7,7 IF SIXBIT BYTE 6,6,6,6,6,6 ALL OTHERS ARE STANDARD HALF WORD THIS FEATURE CAN BE OVER RIDDEN BY USE OF /H SWITCH STANDARD HALF WORD FORM IS THEN USED. HOWEVER BECAUSE OF EXTRA SPACING THE OUTPUT IS PUSHED MORE TO THE RIGHT AND LONG COMMENTS OVERFLOW THE LINE > MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 96 MACRO 10 24-APR-78 02:11 PSEUDO-OP HANDLERS IFN WFWSW,< %INTEG: PUSHJ PP,GETSYM ;GET A SYMBOL JRST INTG2 ;BAD SYMBOL ERROR TLO IO,DEFCRS ;THIS IS A DEFINTION PUSHJ PP,SSRCH ;SEE IF THERE MOVSI ARG,SYMF!UNDF ;SET SYMBOL AND UNDEFINED IF NOT TLNN ARG,UNDF ;IF ALREADY DEFINED JRST INTG1 ;JUST IGNORE TLOA ARG,VARF ;SET VARIABLE FLAG INTG2: TROA ER,ERRA ;SYMBOL ERROR PUSHJ PP,INSERZ ;PUT IN WITH ZERO VALUE (LENGTH OF 1) INTG1: JUMPCM %INTEG POPJ PP, %ARAY: MOVEM PP,ARAYP ;SAVE PUSHDOW POINTER ARAY2: PUSHJ PP,GETSYM JRST ARAY1 ;BAD SYMBOL GIVE ERROR AND ABORT PUSH PP,AC0 ;SAVE NAME JUMPCM ARAY2 ;AND GO ON IF A COMMA CAIE C,"["-40 ;MUST BE A [ JRST ARAY1 PUSHJ PP,BYPASS ;OH, WELL TLO IO,IORPTC PUSHJ PP,EVALXQ ;GET A SIZE CAIE C,"]"-40 ;MUST END RIGHT JRST ARAY1 PUSHJ PP,BYPASS ;?? HRRZ V,AC0 ;GET VALUE SUBI V,1 NXTVAL: POP PP,AC0 PUSH PP,V ;SAVE OVER SEARCH TLO IO,DEFCRS PUSHJ PP,SSRCH ;FIND IT MOVSI ARG,SYMF!UNDF POP PP,V ;GET VALUE BACK TLNN ARG,UNDF JRST ARAY3 TLO ARG,VARF MOVEI RC,0 ;NO RELOC PUSHJ PP,INSERT ARAY3: CAME PP,ARAYP JRST NXTVAL ;STILL NAMES STACKED JUMPCM ARAY2 POPJ PP, ARAY1: TRO ER,ERRA ;ERROR EXIT MOVE PP,ARAYP POPJ PP, ;RESET PDL AND GO > MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 97 MACRO 10 24-APR-78 02:11 PSEUDO-OP HANDLERS IFN WFWSW,< %LVAR: JUMP2 POPOUT ;IGNORE ON PASS2 PUSHJ PP,LOOKUP ;SCAN SYMBOL TABLE TRNN ARG,EXTF ;THESE ARE LVARS WE HAVE DONE ONCE TRNN ARG,VARF ;FOR VARIABLES POPJ PP, ;IGNORE ALL OTHERS TRZ ARG,UNDF ;SET AS DEFINED MOVEI RC,3 ADDB RC,FREE CAML RC,SYMBOL ;GET BLOCK PUSHJ PP,XCEEDS SUBI RC,2 ;POINT TO START OF BLOCK ADDI V,1 EXCH V,LVARLC ;GET CORRECT VARIABLE LOCATION MOVEM V,2(RC) ;SAVE IT ADDM V,LVARLC ;AND UPDATE BASE SETZM (RC) SETZM 1(RC) ;NO NAME TO IDENT AN LVAR AND NO FIXUPS HRL ARG,RC ;POINTER TRO ARG,EXTF!PNTF ;FLAG AS EXTERNAL AND POINTER MOVSM ARG,(SX) ;PUT IT AWAY POPJ PP, > MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 98 MACRO 10 24-APR-78 02:11 PSEUDO-OP HANDLERS ; PSEUDO-END STATEMENT FOR MULTI-FILE CAPABILITY ; HERE IF PRGEND (PASS 1) 005003' 661600 000010 PSEND0: TLO IO,MFLSW ;PSEND SEEN 005004' 260740 003123' PUSHJ PP,END0 ;AS IF END STATEMENT 005005' 513000 000014 HLLZS IO ;CLEAR ER(RH) 005006' 402000 013376' SETZM ERRCNT ;CLEAR ERROR COUNT FOR EACH PROG. 005007' 325640 005023' JUMP2 PSEND2 ;DIFFERENT ON PASS2 005010' 332000 013733' SKIPE UNIVSN ;SEEN A UNIVERSAL 005011' 260740 005207' PUSHJ PP,UNISYM ;YES, STORE SYMBOLS 005012' 260740 005033' PUSHJ PP,PSEND4 ;SAVE SYMBOLS, POINTERS AND TITLE 005013' 621600 000002 TLZ IO,IOTLSN ;CLEAR TITLE SEEN FLAG 005014' 621600 000010 PSEND1: TLZ IO,MFLSW ;FOR NEXT FILE 005015' 402000 014055' SETZM UNISCH ;CLEAR UNIVERSAL SEARCH TABLE 005016' 200000 014767' MOVE AC0,[UNISCH,,UNISCH+1] 005017' 251000 014066' BLT AC0,UNISCH+.UNIV-1 005020' 260740 010703' PUSHJ PP,OUTFF ;RESET PAGE COUNT 005021' 205000 000001 MOVSI AC0,1 ;SET SO RELOC 0 WORKS 005022' 254000 004222' JRST LOC10 ;FOR RELOC 0 ; HERE IF PRGEND (PASS 2) 005023' 402000 013527' PSEND2: SETZM SBUF ;SO SUBTTL IS NOT WRONG 005024' 260740 005115' PUSHJ PP,PSEND5 ;PUT TITLE BACK 005025' 260740 005014' PUSHJ PP,PSEND1 ;COMMON CODE 005026' 254000 003155' JRST PASS20 ;OUTPUT THE ENTRIES ; HERE IF END (PASS 1) 005027' 260740 005033' PSEND3: PUSHJ PP,PSEND4 ;SAVE LAST PROGRAM 005030' 547000 013731' HLRS PRGPTR ;REINITIALIZE POINTER 005031' 260740 005115' PUSHJ PP,PSEND5 ;READ BACK FIRST PROGRAM 005032' 254000 003155' JRST PASS20 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 99 MACRO 10 24-APR-78 02:11 PSEUDO-OP HANDLERS ;HERE TO SAVE AND RESTORE SYMBOL TABLE, TITLE AND OTHER USEFUL LOCATIONS 000004 XTRA==4 ;NUMBER OF OTHER LOCATIONS TO SAVE 005033' 200300 013377' PSEND4: MOVE V,FREE ;GET NEXT FREE LOCATION 005034' 271300 000030 ADDI V,LENGTH+.TBUF/5+XTRA 005035' 311300 013552' CAML V,SYMBOL ;WILL WORST CASE FIT? 005036' 260740 010277' PUSHJ PP,XCEED ;NO, EXPAND 005037' 204300 013377' MOVS V,FREE 005040' 540300 013731' HRR V,PRGPTR ;LAST PRGEND BLOCK 005041' 546306 000000 HLRM V,(V) ;LINK THIS BLOCK 005042' 336000 013731' SKIPN PRGPTR ;IF FIRST TIME 005043' 512300 013731' HLLZM V,PRGPTR ;SET LINK TO START OF CHAIN 005044' 546300 013731' HLRM V,PRGPTR ;POINTER TO IT 005045' 402020 013377' SETZM @FREE ;CLEAR LINK WORD 005046' 350000 013377' AOS FREE ;THIS LOCATION USED NOW 005047' 204000 013552' MOVS AC0,SYMBOL ;BOTTOM OF SYMBOL TABLE 005050' 540000 013377' HRR AC0,FREE ;FREE SPACE 005051' 200320 013552' MOVE V,@SYMBOL ;GET NUMBER OF SYMBOLS 005052' 240300 000001 ASH V,1 ;TWO WORDS PER SYMBOL 005053' 271300 000001 ADDI V,1 ;ONE MORE FOR COUNT 005054' 273300 013377' ADDB V,FREE ;END OF TABLE WHEN MOVED 005055' 251006 000000 BLT AC0,(V) ;MOVE TABLE 005056' 550000 003316* HRRZ AC0,JOBREL ;TOP OF CORE 005057' 275000 000001 SUBI AC0,1 005060' 202000 013553' MOVEM AC0,SYMTOP ;FOR NEXT SYMBOL TABLE 005061' 275000 000004 SUBI AC0,LENGTH ;LENGTH OF INITIAL SYMBOLS 005062' 202000 013552' MOVEM AC0,SYMBOL ;SET POINTER TO COUNT OF SYMBOLS 005063' 505000 012201' HRLI AC0,SYMNUM ;BLT POINTER 005064' 251020 013553' BLT AC0,@SYMTOP ;SET UP INITIAL SYMBOL TABLE 005065' 260740 013125' PUSHJ PP,SRCHI ;SET UP SEARCH POINTER 005066' 201000 000120 MOVEI AC0,.TBUF ;MAX NUMBER OF CHARS. IN TITLE 005067' 274000 013700' SUB AC0,TCNT ;ACTUAL NUMBER 005070' 231000 000005 IDIVI AC0,5 ;NUMBER OF WORDS 005071' 332000 000001 SKIPE AC1 ;REMAINDER? 005072' 271000 000001 ADDI AC0,1 ;YES 005073' 202020 013377' MOVEM AC0,@FREE ;STORE COUNT 005074' 350000 013377' AOS FREE ;THIS LOCATION USED NOW 005075' 250000 013377' EXCH AC0,FREE ;SET UP AC0 FOR BLT 005076' 272000 013377' ADDM AC0,FREE ;WILL BE AFTER TITLE MOVES 005077' 505000 013701' HRLI AC0,TBUF ;BLT POINTER 005100' 251020 013377' BLT AC0,@FREE ;MOVE TITLE 005101' 200100 013505' MOVE AC2,LITHDX ;POINTER TO LIT INFO. 005102' 200002 777777 MOVE AC0,-1(AC2) ;SIZE OF PASS1 LOCO 005103' 260740 005160' PUSHJ PP,STORIT ;SAVE IT IN SYMBOL TABLE 005104' 200100 013500' MOVE AC2,VARHDX ;SAME FOR VARS 005105' 200002 777777 MOVE AC0,-1(AC2) 005106' 260740 005160' PUSHJ PP,STORIT IFN RENTSW,< MOVE AC0,HISNSW ;GET TWOSEG/HISEG FLAG HRR AC0,HIGH1 ;AND PASS1 BREAK PUSHJ PP,STORIT JUMPGE AC0,PSEND6 ;NOT TWOSEG MOVE AC0,SVTYP3 ;HIGH SEGMENT OFFSET MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 99-1 MACRO 10 24-APR-78 02:11 PSEUDO-OP HANDLERS PUSHJ PP,STORIT ;SAVE IT ALSO> 005107' 200000 013377' PSEND6: MOVE AC0,FREE ;GET NEXT FREE LOCATION 005110' 275000 000001 SUBI AC0,1 ;LAST ONE USED 005111' 550300 013731' HRRZ V,PRGPTR ;POINTER TO START OF DATA BLOCK 005112' 506006 000000 HRLM AC0,(V) ;LINK TO END OF BLOCK 005113' 263740 000000 POPJ PP, ;RETURN MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 100 MACRO 10 24-APR-78 02:11 PSEUDO-OP HANDLERS 005114' 260740 010277' PSENDX: PUSHJ PP,XCEED ;NEED TO EXPAND CORE FIRST 005115' 550000 005056* PSEND5: HRRZ AC0,JOBREL ;GET TOP OF CORE 005116' 275000 000001 SUBI AC0,1 005117' 202000 013553' MOVEM AC0,SYMTOP ;TOP OF NEW SYMBOL TABLE 005120' 550300 013731' HRRZ V,PRGPTR ;ADDRESS OF THIS BLOCK 005121' 322300 005165' JUMPE V,PSNDER ;ERROR LINK NOT SET UP 005122' 200046 000000 MOVE AC1,(V) ;NEXT LINK 005123' 200306 000001 MOVE V,1(V) ;GET ITS SYMBOL COUNT 005124' 240300 000001 ASH V,1 ;NUMBER OF WORDS 005125' 271300 000001 ADDI V,1 ;PLUS ONE FOR COUNT 005126' 275006 000000 SUBI AC0,(V) ;START OF NEW SYMBOL TABLE 005127' 317000 013377' CAMG AC0,FREE ;WILL IT FIT 005130' 254000 005114' JRST PSENDX ;NO, NEED TO EXPAND AND RESET AC0 005131' 270300 013731' ADD V,PRGPTR ;POINT TO END OF SYMBOL TABLE 005132' 201306 000001 MOVEI V,1(V) ;THEN TO BEG OF TITLE 005133' 202000 013552' MOVEM AC0,SYMBOL ;BOTTOM OF NEW TABLE 005134' 504000 013731' HRL AC0,PRGPTR ;ADDRESS OF FIRST WORD OF BLOCK 005135' 270000 014770' ADD AC0,[1,,0] ;MAKE BLT POINTER 005136' 542040 013731' HRRM AC1,PRGPTR ;POINT TO NEXT BLOCK 005137' 251020 013553' BLT AC0,@SYMTOP ;MOVE TABLE 005140' 260740 013125' PUSHJ PP,SRCHI ;SET UP POINTER 005141' 200046 000000 MOVE AC1,(V) ;NUMBER OF WORDS OF TITLE 005142' 201006 000001 MOVEI AC0,1(V) ;START OF STORED TITLE 005143' 270300 000001 ADD V,AC1 ;INCREMENT PAST TITLE 005144' 271040 013700' ADDI AC1,TBUF-1 ;END OF TITLE 005145' 505000 013701' HRLI AC0,TBUF ;WHERE TO PUT IT 005146' 207000 000000 MOVSS AC0 ;BLT POINTER 005147' 251001 000000 BLT AC0,(AC1) ;MOVE TITLE 005150' 661600 000002 TLO IO,IOTLSN ;SET AS IF TITLE SEEN 005151' 200100 013505' MOVE AC2,LITHDX ;INVERSE OF ABOVE 005152' 260740 005163' PUSHJ PP,GETIT 005153' 202002 777777 MOVEM AC0,-1(AC2) 005154' 200100 013500' MOVE AC2,VARHDX ;SAME FOR VARS 005155' 260740 005163' PUSHJ PP,GETIT 005156' 202002 777777 MOVEM AC0,-1(AC2) IFN RENTSW,< PUSHJ PP,GETIT ;GET TWO HALF WORDS HRRZM AC0,HIGH1 ;PASS1 BREAK HLLEM AC0,HISNSW ;TWOSEG/HISEG FLAG JUMPGE AC0,CPOPJ ;NOT TWOSEG PUSHJ PP,GETIT MOVEM AC0,SVTYP3 ;BLOCK 3 WORD> 005157' 263740 000000 POPJ PP, 005160' 202020 013377' STORIT: MOVEM AC0,@FREE ;STORE IT IN DATA BLOCK 005161' 350000 013377' AOS FREE ;ADVANCE POINTER 005162' 263740 000000 POPJ PP, 005163' 200006 000001 GETIT: MOVE AC0,1(V) ;FILL AC0 OUT OF PRGEND BLOCK 005164' 344300 003447' AOJA V,CPOPJ ;INCREMENT AND RETURN 005165' 561440 014771' PSNDER: HRROI RC,[SIXBIT /PRGEND ERROR @/] 005166' 254000 010176' JRST ERRFIN MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 101 MACRO 10 24-APR-78 02:11 PSEUDO-OP HANDLERS ;MULTIPLE SYMBOL TABLE FEATURE PSEUDO-OPS 005167' 325640 004276' UNIV0: JUMP2 TITLE0 ;DO IT ALL ON PASS 1 005170' 550200 014122' HRRZ SX,UNIVNO ;GET NUMBER OF UNIVERSALS SEEN 005171' 301200 000012 CAIL SX,.UNIV ;ALLOW ONE MORE? 005172' 254000 005205' JRST UNVERR ;NO, GIVE FATAL ERROR 005173' 350000 014122' AOS UNIVNO ;ONE MORE NOW 005174' 476000 013733' SETOM UNIVSN ;AND SET SEEN A UNIVERSAL 005175' 254000 004276' JRST TITLE0 ;CONTINUE AS IF TITLE 005176' 261740 000011 ADDUNV: PUSH PP,RC ;AN AC TO USE 005177' 260740 002665' PUSHJ PP,NOUT ;CONVERT TO SIXBIT 005200' 550440 014122' HRRZ RC,UNIVNO ;GET ENTRY INDEX 005201' 202011 014123' MOVEM AC0,UNITBL(RC) ;STORE SIXBIT NAME IN TABLE 005202' 553000 013733' HRRZS UNIVSN ;ONLY DO IT ONCE 005203' 262740 000011 POP PP,RC ;RESTORE RC 005204' 263740 000000 POPJ PP, ;AND RETURN 005205' 561440 014774' UNVERR: HRROI RC,[SIXBIT /TOO MANY UNIVERSALS@/] 005206' 254000 010176' JRST ERRFIN 005207' 550000 013377' UNISYM: HRRZ AC0,FREE ;GET HIGHEST FREE LOCATION 005210' 202000 000000* MOVEM AC0,JOBFF ;INTO JOBFF 005211' 260740 004261' PUSHJ PP,SUPRSA ;TURN ON SUPPRESS BIT 005212' 261740 013552' PUSH PP,SYMBOL ;NEED TO SAVE INCASE PRGEND 005213' 200000 013553' MOVE AC0,SYMTOP ;TOP OF TABLE 005214' 274000 013552' SUB AC0,SYMBOL ;GET LENGTH OF TABLE 005215' 504240 013552' HRL ARG,SYMBOL ;BOTTOM OF TABLE 005216' 540240 005210* HRR ARG,JOBFF ;WHERE TO GO 005217' 550440 014122' HRRZ RC,UNIVNO ;GET TABLE INDEX 005220' 542240 013552' HRRM ARG,SYMBOL ;WILL BE THERE SOON 005221' 552251 014135' HRRZM ARG,UNIPTR(RC) ;STORE IN CORRESPONDING PLACE 005222' 273000 005216* ADDB AC0,JOBFF ;WHERE TO END 005223' 506011 014135' HRLM AC0,UNIPTR(RC) ;SAVE NEW SYMTOP 005224' 251260 005222* BLT ARG,@JOBFF ;MOVE TABLE 005225' 552000 014121' HRRZM AC0,UNITOP ;SAVE TOP OF TABLES+1 005226' 313000 014117' CAMLE AC0,MACSIZ ;IN CASE OVER A K BOUND 005227' 202000 014117' MOVEM AC0,MACSIZ ;DON'T REDUCE SO FAR NOW 005230' 202000 013377' MOVEM AC0,FREE ;JUST IN CASE IN MACRO 005231' 200000 013547' MOVE AC0,SRCHX ;SAVE OLD SEARCH POINTER 005232' 260740 013125' PUSHJ PP,SRCHI ;GET SEARCH POINTER 005233' 250000 013547' EXCH AC0,SRCHX 005234' 202011 014147' MOVEM AC0,UNISHX(RC) ;SAVE IT 005235' 402000 013733' SETZM UNIVSN ;CLEAR FLAG INCASE PRGEND 005236' 262740 013552' POP PP,SYMBOL ;RESTORE OLD VALUE 005237' 263740 000000 POPJ PP, ;RETURN MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 102 MACRO 10 24-APR-78 02:11 PSEUDO-OP HANDLERS 005240' 260740 001043' SERCH0: PUSHJ PP,GETSYM ;GET A SYMBOL 005241' 254000 003400' JRST ERRAX ;ERROR IF NOT VALID 005242' 201440 000001 MOVEI RC,1 ;START AT ENTRY ONE 005243' 301440 000012 CAIL RC,.UNIV ;CHECK FOR CONSISTENCY ERROR 005244' 254000 005260' JRST SCHERR ;CANNOT FIND THIS ONE 005245' 312011 014123' CAME AC0,UNITBL(RC) ;LOOK FOR MATCH 005246' 344440 005243' AOJA RC,.-3 ;NOT FOUND YET 005247' 200000 000011 MOVE AC0,RC ;STORE TABLE ENTRY NUMBER 005250' 201440 000001 MOVEI RC,1 ;START AT ENTRY ONE 005251' 301440 000012 CAIL RC,.UNIV ;CHECK FOR CONSISTENCY ERROR 005252' 254000 005260' JRST SCHERR ;SHOULD NEVER HAPPEN!! 005253' 332011 014055' SKIPE UNISCH(RC) ;LOOK FOR AN EMPTY SLOT 005254' 344440 005251' AOJA RC,.-3 ;NOT FOUND YET 005255' 202011 014055' MOVEM AC0,UNISCH(RC) ;STORE INDEX IN TABLE 005256' 321400 005240' JUMPCM SERCH0 ;LOOK FOR MORE NAMES 005257' 263740 000000 POPJ PP, ;FINISHED 005260' 205440 015000' SCHERR: MOVSI RC,[SIXBIT /CANNOT FIND UNIVERSAL@/] 005261' 254000 010176' JRST ERRFIN ;NAME IN AC0 ;MESSAGE FOR CASE WHERE FILES AFTER UNIVERSAL USED MORE BUFFER SPACE THAN FIRST UNIVERS AL UNIERR: HRROI RC,[SIXBIT /UNIVERSAL PROGRAM(S) MUST HAVE SAME OUTPUT SPECIFICATION AS 005262' 561440 015004' OTHER FILES@/] 005263' 254000 010176' JRST ERRFIN MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 103 MACRO 10 24-APR-78 02:11 MACRO/REPEAT HANDLERS SUBTTL MACRO/REPEAT HANDLERS 005264' 260740 004046' REPEA0: PUSHJ PP,EVALXQ ;EVALUATE REPEAT EXP, EXTERNS ARE ILL. 005265' 325400 003400' JUMPNC ERRAX 005266' 323000 005346' REPEA1: JUMPLE AC0,REPZ ;PASS THE EXP., DONT PROCESS 005267' 362000 005365' SOJE AC0,REPO ;REPEAT ONCE 005270' 260740 006450' REPEA2: PUSHJ PP,GCHARQ ;GET STARTING "<" 005271' 302340 000074 CAIE C,"<" 005272' 254000 005270' JRST REPEA2 005273' 260740 006413' PUSHJ PP,SKELI1 ;INITIALIZE SKELETON 005274' 261700 014020' PUSH MP,REPEXP 005275' 202000 014020' MOVEM AC0,REPEXP 005276' 261700 014021' PUSH MP,REPPNT ;STACK PREVIOUS REPEAT POINTER 005277' 202240 014021' MOVEM ARG,REPPNT ;STORE NEW POINTER 005300' 634140 000003 TDZA SDEL,SDEL ;YES, INITIALIZE BRACKET COUNT AND SKIP 005301' 260740 006456' REPEA4: PUSHJ PP,WCHARQ ;WRITE A CHARACTER 005302' 260740 006450' PUSHJ PP,GCHARQ ;GET A CHARACTER 005303' 306340 000074 CAIN C,"<" ;"<"? 005304' 344140 005301' AOJA SDEL,REPEA4 ;YES, INCREMENT AND WRITE 005305' 302340 000076 CAIE C,">" ;">"? 005306' 254000 005301' JRST REPEA4 ;NO, WRITE THE CHARACTER 005307' 365140 005301' SOJGE SDEL,REPEA4 ;YES, WRITE IF NON-NEGATIVE COUNT 005310' 205400 774060 MOVSI CS,(BYTE (7) 177,3) ;SET "REPEAT" END 005311' 260740 006466' PUSHJ PP,WWRXE ;WRITE END 005312' 336000 013773' SKIPN LITLVL ;LITERAL MIGHT END ON LINE 005313' 332000 014072' SKIPE MACLVL ;IF IN MACRO DARE NOT PROCESS 005314' 254000 005317' JRST .+3 ;REST OF LINE SINCE MACRO MIGHT END ON IT 005315' 260740 004543' PUSHJ PP,BYPASS ;BYPASS 005316' 260740 000236' PUSHJ PP,STOUTS ;POLISH OF LINE BEFORE PROCESSING REPEAT 005317' 261700 000013 PUSH MP,MRP ;STACK PREVIOUS READ POINTER 005320' 261700 014075' PUSH MP,RCOUNT ;SAVE WORD COUNT 005321' 550540 014021' HRRZ MRP,REPPNT ;SET UP READ POINTER 005322' 336000 014072' SKIPN MACLVL ;IF IN MACRO GIVE CR-LF FIRST 005323' 332000 013773' SKIPE LITLVL ;SAME FOR LITERAL 005324' 254000 005326' JRST REPEA7 005325' 344540 000455' AOJA MRP,POPOUT ;BYPASS ARG COUNT 005326' 550540 014021' REPEA7: HRRZ MRP,REPPNT ;SET UP READ POINTER 005327' 271540 000001 ADDI MRP,1 ;BYPASS ARG COUNT 005330' 201340 000015 REPEA8: MOVEI C,CR 005331' 254000 001421' JRST RSW1 005332' 371000 014020' REPEND: SOSL REPEXP 005333' 254000 005326' JRST REPEA7 005334' 550300 014021' HRRZ V,REPPNT ;GET START OF TREE 005335' 260740 006546' PUSHJ PP,REFDEC ;DECREMENT REFERENCE 005336' 262700 014075' POP MP,RCOUNT 005337' 262700 000013 POP MP,MRP 005340' 262700 014021' POP MP,REPPNT 005341' 262700 014020' POP MP,REPEXP 005342' 336000 013773' SKIPN LITLVL ;IF IN LITERAL OR MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 103-1 MACRO 10 24-APR-78 02:11 MACRO/REPEAT HANDLERS 005343' 332000 014072' SKIPE MACLVL ;IF IN MACRO 005344' 254000 001417' JRST RSW0 ;FINISH OF LINE NOW 005345' 254000 005330' JRST REPEA8 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 104 MACRO 10 24-APR-78 02:11 MACRO/REPEAT HANDLERS 005346' 200140 014101' REPZ: MOVE SDEL,SEQNO2 ;SAVE IN CASE OF END OF FILE 005347' 202140 013760' MOVEM SDEL,REPSEQ 005350' 200140 014100' MOVE SDEL,PAGENO 005351' 202140 013757' MOVEM SDEL,REPPG 005352' 476000 013744' SETOM INREP 005353' 201140 000000 MOVEI SDEL,0 ;SET COUNT 005354' 260740 006451' REPZ1: PUSHJ PP,GCHAR ;GET NEXT CHARACTER 005355' 306340 000074 CAIN C,"<" ;"<"? 005356' 344140 005354' AOJA SDEL,REPZ1 ;YES, INCREMENT COUNT 005357' 306340 000076 CAIN C,">" ;">"? 005360' 363140 005362' SOJLE SDEL,REPZ2 ;YES, EXIT IF MATCHING 005361' 254000 005354' JRST REPZ1 ;NO, RECYCLE 005362' 402000 013744' REPZ2: SETZM INREP ;FLAG OUT OF IT 005363' 402000 013747' SETZM INCND ;AND CONDITIONAL ALSO 005364' 254000 000125' JRST STMNT ;AND EXIT 005365' 260740 006451' REPO: PUSHJ PP,GCHAR ;GET "<" 005366' 302340 000074 CAIE C,"<" 005367' 254000 005365' JRST REPO 005370' 332000 014022' SKIPE RPOLVL ;ARE WE NESTED? 005371' 350000 014022' AOS RPOLVL ;YES, DECREMENT CURRENT 005372' 261700 014022' PUSH MP,RPOLVL 005373' 476000 014022' SETOM RPOLVL 005374' 254000 000125' JRST STMNT 005375' 306340 000074 REPO1: CAIN C,"<" 005376' 370000 014022' SOS RPOLVL 005377' 306340 000076 CAIN C,">" 005400' 352000 014022' AOSE RPOLVL 005401' 254000 001423' JRST RSW2 005402' 262700 014022' POP MP,RPOLVL 005403' 260740 001423' PUSHJ PP,RSW2 005404' 254000 001417' JRST RSW0 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 105 MACRO 10 24-APR-78 02:11 MACRO/REPEAT HANDLERS 005405' 260740 001043' DEFIN0: PUSHJ PP,GETSYM ;GET MACRO NAME 005406' 254000 003400' JRST ERRAX ;EXIT ON ERROR 005407' 202740 014015' MOVEM PP,PPTMP1 ;SAVE POINTER 005410' 202000 014016' MOVEM AC0,PPTMP2 ;SAVE NAME 005411' 661600 000004 TLO IO,IORPTC 005412' 200200 014101' MOVE SX,SEQNO2 ;SAVE IN CASE OF EOF 005413' 202200 013754' MOVEM SX,DEFSEQ 005414' 200200 014100' MOVE SX,PAGENO 005415' 202200 013753' MOVEM SX,DEFPG 005416' 476000 013745' SETOM INDEF ;AND FLAG IN DEFINE SYN .TEMP,COMSW ;SAVE SPACE 005417' 403200 014054' SETZB SX,COMSW ;SET ARGUMENT AND REFERENCE COUNT AND COMMENT SWITCH 005420' 260740 006451' DEF02: PUSHJ PP,GCHAR ;SEARCH FOR "(" OR "<" 005421' 307340 000014 CAIG C,FF ;SEARCH FOR END OF LINE 005422' 305340 000012 CAIGE C,LF ;LF,VT, OR FF 005423' 254000 005425' JRST .+2 ;WASN'T ANY OF THEM 005424' 402000 014054' SETZM COMSW ;RESET COMMENT SWITCH 005425' 306340 000073 CAIN C,";" ;COMMENT? 005426' 476000 014054' SETOM COMSW ;YES, SET COMMENT SWITCH 005427' 332000 014054' SKIPE COMSW ;INSIDE A COMMENT? 005430' 254000 005420' JRST DEF02 ;YES, IGNORE CHARACTER 005431' 306340 000074 CAIN C,"<" ;"<"? 005432' 254000 005450' JRST DEF20 ;YES 005433' 302340 000050 CAIE C,"(" ;"("? 005434' 254000 005420' JRST DEF02 ;NO 005435' 260740 001043' DEF10: PUSHJ PP,GETSYM ;YES, GET DUMMY SYMBOL 005436' 660600 040000 TRO ER,ERRA ;FLAG ERROR 005437' 271200 000001 ADDI SX,1 ;INCREMENT ARG COUNT 005440' 261740 000000 PUSH PP,AC0 ;STACK IT 005441' 306340 000034 CAIN C,'<' ;A DEFAULT ARGUMENT COMING UP? 005442' 254000 005663' JRST DEF80 ;YES, STORE IT AWAY 005443' 302340 000011 CAIE C,11 ;")"? 005444' 254000 005435' JRST DEF10 ;NO, GET NEXT DUMMY SYMBOL 005445' 260740 006451' DEF12: PUSHJ PP,GCHAR 005446' 302340 000074 CAIE C,"<" ;"<"? 005447' 254000 005445' JRST DEF12 ;NO 005450' 261740 014625' DEF20: PUSH PP,[0] ;YES, MARK THE LIST 005451' 242200 000011 LSH SX,9 ;SHIFT ARG COUNT 005452' 350240 000004 AOS ARG,SX 005453' 260740 006414' PUSHJ PP,SKELI ;INITIALIZE MACRO SKELETON 005454' 200000 014016' MOVE AC0,PPTMP2 ;GET NAME 005455' 661600 000040 TLO IO,DEFCRS 005456' 260740 012573' PUSHJ PP,MSRCH ;SEARCH THE TABLE 005457' 254000 005463' JRST DEF24 ;NOT FOUND 005460' 607240 020000 TLNN ARG,MACF ;FOUND, IS IT A MACRO? 005461' 664600 100000 TROA ER,ERRX ;NO, FLAG ERROR AND SKIP 005462' 260740 006546' PUSHJ PP,REFDEC ;YES, DECREMENT THE REFERENCE 005463' 550300 014074' DEF24: HRRZ V,WWRXX ;GET START OF TREE 005464' 336000 014054' SKIPN .TEMP ;ANY DEFAULT ARGUMENTS TO TAKE CARE OF? 005465' 254000 005513' JRST DEF25 ;NO 005466' 550346 000001 HRRZ C,1(V) ;GET SHIFTED ARG COUNT 005467' 242340 777767 LSH C,-9 ;GET ARG COUNT BACK 005470' 271340 000001 ADDI C,1 ;ONE MORE FOR TERMINAL ZERO MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 105-1 MACRO 10 24-APR-78 02:11 MACRO/REPEAT HANDLERS 005471' 270340 014054' ADD C,.TEMP ;NUMBER OF ITEMS IN STACK 005472' 507000 000007 HRLS C ;MAKE XWD 005473' 274740 000007 SUB PP,C ;BACK UP STACK 005474' 200140 014054' MOVE SDEL,.TEMP ;NUMBER OF WORDS NEEDED 005475' 273140 013377' ADDB SDEL,FREE ;FROM FREE CORE 005476' 311140 013552' CAML SDEL,SYMBOL ;MORE CORE NEEDED 005477' 260740 010276' PUSHJ PP,XCEEDS ;YES, TRY TO GET IT 005500' 274140 014054' SUB SDEL,.TEMP ;FORM POINTER 005501' 506146 000001 HRLM SDEL,1(V) ;STORE IT WITH ARG COUNT IN MACRO 005502' 275140 000001 SUBI SDEL,1 ;TO USE FOR PUSHING POINTER INTO STORAGE 005503' 201357 000001 MOVEI C,1(PP) ;POINT TO START OF STACK 005504' 200247 000000 DEF26: MOVE ARG,(C) ;GET AN ITEM OFF STACK 005505' 607240 777740 TLNN ARG,-40 ;A POINTER? JUMPN ARG,[PUSH SDEL,ARG ;YES, STORE IT MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 106 MACRO 10 24-APR-78 02:11 MACRO/REPEAT HANDLERS 005506' 326240 015020' AOJA C,DEF26] ;GET NEXT 005507' 261740 000005 PUSH PP,ARG ;RESTACK ARGUMENT 005510' 332000 000005 SKIPE ARG ;FINISHED IF ZERO 005511' 344340 005504' AOJA C,DEF26 ;GET NEXT 005512' 261140 000005 PUSH SDEL,ARG ;STORE ZERO IN DEFAULT LIST ALSO MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 107 MACRO 10 24-APR-78 02:11 MACRO/REPEAT HANDLERS 005513' 205240 020000 DEF25: MOVSI ARG,MACF 005514' 202740 014016' MOVEM PP,PPTMP2 ;STORE TEMP STORAGE POINTER 005515' 260740 013036' PUSHJ PP,INSERT ;INSERT/UPDATE 005516' 621600 000040 TLZ IO,DEFCRS ;JUST IN CASE 005517' 402000 014070' SETZM ARGF ;NO ARGUMENT SEEN 005520' 402000 014067' SETZM SQFLG ;AND NO ' SEEN 005521' 634140 000003 TDZA SDEL,SDEL ;CLEAR BRACKET COUNT 005522' 260740 006456' DEF30: PUSHJ PP,WCHAR ;WRITE CHARACTER 005523' 260740 006451' DEF31: PUSHJ PP,GCHAR ;GET A CHARACTER 005524' 200400 000007 DEF32: MOVE CS,C ;GET A COPY 005525' 306340 000073 CAIN C,";" ;IS IT A COMMENT 005526' 254000 005565' JRST CPEEK ;YES CHECK FOR ;; 005527' 307400 000172 DEF33: CAIG CS,"Z"+40 ;CONVERT LOWER CASE 005530' 305400 000141 CAIGE CS,"A"+40 005531' 254000 005533' JRST .+2 005532' 275400 000040 SUBI CS,40 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 108 MACRO 10 24-APR-78 02:11 MACRO/REPEAT HANDLERS 005533' 305400 000040 CAIGE CS,40 ;TEST FOR CONTROL CHAR. JRST [SKIPN SQFLG ;HAS SINGLE QUOTE BEEN SEEN? JRST DEF30 ;NO, OUTPUT THIS CHAR. PUSH PP,C ;YES, SAVE CURRENT CHAR MOVEI C,47 ;SET UP QUOTE PUSHJ PP,WCHAR;WRITE IT POP PP,C ;GET BACK CURRENT CHAR. SETZM SQFLG ;RESET FLAG 005534' 254000 015022' JRST DEF30] ;AND CONTINUE 005535' 303400 000137 CAILE CS,77+40 005536' 254000 005522' JRST DEF30 ;TEST FOR SPECIAL 005537' 200410 001416' MOVE CS,CSTAT-40(CS) ;GET STATUS BITS MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 109 MACRO 10 24-APR-78 02:11 MACRO/REPEAT HANDLERS 005540' 603400 000006 TLNE CS,6 ;ALPHA-NUMERIC? 005541' 254000 005602' JRST DEF40 ;YES 005542' 336000 014067' SKIPN SQFLG ;WAS A ' SEEN? 005543' 254000 005551' JRST DEF36 ;NO, PROCESH 005544' 261740 000007 PUSH PP,C ;YES, SAVE CURRENT CHARACTER 005545' 201340 000047 MOVEI C,47 ;AND PUT IN A ' 005546' 260740 006456' PUSHJ PP,WCHAR ;... 005547' 262740 000007 POP PP,C ;RESTORE CURRENT CHARACTER 005550' 402000 014067' SETZM SQFLG ;AND RESET FLAG 005551' 302340 000047 DEF36: CAIE C,47 ;IS THIS A '? 005552' 254000 005557' JRST DEF35 ;NOPE 005553' 336000 014070' SKIPN ARGF ;YES, WAS LAST THING SEEN AN ARG? 005554' 476000 014067' SETOM SQFLG ;IF NOT, SET SNGL QUOT FLAG 005555' 402000 014070' SETZM ARGF ;BUT NOT ARGUMENT IN ANY CASE 005556' 254000 005523' JRST DEF31 ;GO GET NEXT CHARACTER MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 110 MACRO 10 24-APR-78 02:11 MACRO/REPEAT HANDLERS 005557' 402000 014070' DEF35: SETZM ARGF ;THIS IS NOT AN ARGUMENT 005560' 306340 000074 CAIN C,"<" ;"<"? 005561' 344140 005522' AOJA SDEL,DEF30 ;YES, INCREMENT COUNT AND WRITE 005562' 306340 000076 CAIN C,">" ;">"? 005563' 361140 005656' SOJL SDEL,DEF70 ;YES, TEST FOR END 005564' 254000 005522' JRST DEF30 ;NO, WRITE IT 005565' 607600 004000 CPEEK: TLNN IO,IOPALL ;IF LALL IS ON 005566' 254000 005527' JRST DEF33 ;JUST RETURN 005567' 260740 006531' PUSHJ PP,PEEK ;LOOK AT NEXT CHAR. 005570' 306340 000073 CAIN C,";" ;IS IT ;;? 005571' 254000 005574' JRST CPEEK1 ;YES 005572' 200340 000010 MOVE C,CS ;RESTORE C 005573' 254000 005527' JRST DEF33 ;AND RETURN 005574' 260740 006451' CPEEK1: PUSHJ PP,GCHAR ;GET THE CHAR. 005575' 302340 000076 CAIE C,">" ;RETURN IF END OF MACRO 005576' 307340 000015 CAIG C,CR ;IS CHAR ONE OF 005577' 305340 000012 CAIGE C,LF ;LF,VT,FF,CR 005600' 254000 005574' JRST CPEEK1 ;NO,SO GET NEXT CHAR. 005601' 254000 005524' JRST DEF32 ;YES,RETURN AND STORE MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 111 MACRO 10 24-APR-78 02:11 MACRO/REPEAT HANDLERS 005602' 201000 000000 DEF40: MOVEI AC0,0 ;CLEAR ATOM 005603' 205040 440600 MOVSI AC1,(POINT 6,AC0) ;SET POINTER 005604' 261740 000007 DEF42: PUSH PP,C ;STACK CHARACTER 005605' 603040 770000 TLNE AC1,770000 ;HAVE WE STORED 6? 005606' 136400 000001 IDPB CS,AC1 ;NO, STORE IN ATOM 005607' 260740 006451' PUSHJ PP,GCHAR ;GET NEXT CHARACTER 005610' 200400 000007 MOVE CS,C 005611' 307400 000172 CAIG CS,"Z"+40 005612' 305400 000141 CAIGE CS,"A"+40 005613' 254000 005615' JRST .+2 005614' 275400 000040 SUBI CS,40 ;CONVERT LOWER TO UPPER 005615' 301400 000040 CAIL CS,40 005616' 303400 000137 CAILE CS,77+40 005617' 254000 005623' JRST DEF44 ;TEST SPECIAL 005620' 200410 001416' MOVE CS,CSTAT-40(CS) ;GET STATUS 005621' 603400 000006 TLNE CS,6 ;ALPHA-NUMERIC? 005622' 254000 005604' JRST DEF42 ;YES, GET ANOTHER 005623' 261740 014625' DEF44: PUSH PP,[0] ;NO, MARK THE LIST 005624' 200200 014015' MOVE SX,PPTMP1 ;GET POINTER TO TOP 005625' 336004 000001 DEF46: SKIPN 1(SX) ;END OF LIST? 005626' 254000 005645' JRST DEF50 ;YES 005627' 312004 000001 CAME AC0,1(SX) ;NO, DO THEY COMPARE? 005630' 344200 005625' AOJA SX,DEF46 ;NO, TRY AGAIN 005631' 274200 014015' SUB SX,PPTMP1 ;YES, GET DUMMY SYMBOL NUMBER 005632' 242200 000004 LSH SX,4 005633' 205404 776020 MOVSI CS,<(BYTE (7) 177,101)>(SX) ;SET ESCAPE CODE MACEND 005634' 242000 777742 LSH AC0,-^D30 005635' 306000 000005 CAIN AC0,5 ;"%"? 005636' 661400 001000 TLO CS,1000 ;YES, SET CRESYM FLAG 005637' 260740 006462' PUSHJ PP,WWORD ;WRITE THE WORD 005640' 476000 014070' SETOM ARGF ;SET ARGUMENT SEEN FLAG 005641' 402000 014067' SETZM SQFLG ;AND IGNORE ANY ' WAITING TO GET INTO STRING 005642' 200740 014016' DEF48: MOVE PP,PPTMP2 ;RESET PUSHDOWN POINTER 005643' 661600 000004 TLO IO,IORPTC ;ECHO LAST CHARACTER 005644' 254000 005523' JRST DEF31 ;RECYCLE 005645' DEF50: 005645' 336000 014067' SKIPN SQFLG ;HAVE WE SEEN A '? 005646' 254000 005652' JRST DEF51 ;NOPE 005647' 201340 000047 MOVEI C,47 ;YES, PUT IT IN 005650' 260740 006456' PUSHJ PP,WCHAR ;... 005651' 402000 014067' SETZM SQFLG ;AND CLEAR FLAG 005652' 200344 000002 DEF51: MOVE C,2(SX) ;GET CHARACTER 005653' 322340 005642' JUMPE C,DEF48 ;CLEAN UP IF END 005654' 260740 006456' PUSHJ PP,WCHAR ;WRITE THE CHARACTER 005655' 344200 005652' AOJA SX,DEF51 ;GET NEXT 005656' 200740 014015' DEF70: MOVE PP,PPTMP1 ;RESTORE PUSHDOWN POINTER 005657' 205400 774020 MOVSI CS,(BYTE (7) 177,1) 005660' 260740 006466' PUSHJ PP,WWRXE ;WRITE END 005661' 402000 013745' SETZM INDEF ;OUT OF IT 005662' 254000 004543' JRST BYPASS MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 112 MACRO 10 24-APR-78 02:11 MACRO/REPEAT HANDLERS ; HERE TO STORE DEFAULT ARGUMENTS 005663' 350000 014054' DEF80: AOS .TEMP ;COUNT ONE MORE 005664' 260740 006413' PUSHJ PP,SKELI1 ;INITIALIZE SKELETON 005665' 504300 000004 HRL V,SX ;SYMBOL NUMBER 005666' 261740 000006 PUSH PP,V ;STORE POINTER 005667' 634140 000003 TDZA SDEL,SDEL ;ZERO BRACKET COUNT 005670' 260740 006456' DEF81: PUSHJ PP,WCHARQ ;WRITE A CHARACTER 005671' 260740 006450' PUSHJ PP,GCHARQ ;GET A CHARACTER 005672' 306340 000074 CAIN C,"<" ;ANOTHER "<"? 005673' 344140 005670' AOJA SDEL,DEF81 ;YES, INCREMENT AND WRITE 005674' 302340 000076 CAIE C,">" ;CLOSING ANGLE? 005675' 254000 005670' JRST DEF81 ;NO, JUST WRITE THE CHAR. 005676' 365140 005670' SOJGE SDEL,DEF81 ;YES, WRITE IF NOT END 005677' 205400 774040 MOVSI CS,(BYTE (7) 177,2) 005700' 260740 006466' PUSHJ PP,WWRXE ;WRITE END OF DUMMY ARGUMENT 005701' 260740 006451' PUSHJ PP,GCHAR ;READ AT NEXT CHAR. 005702' 302340 000051 CAIE C,")" ;END OF ARGUMENT LIST? 005703' 254000 005435' JRST DEF10 ;NO, GET NEXT SYMBOL 005704' 254000 005445' JRST DEF12 ;YES, LOOK FOR "<" MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 113 MACRO 10 24-APR-78 02:11 MACRO CALL PROCESSOR SUBTTL MACRO CALL PROCESSOR 005705' 335000 014071' CALLM: SKIPGE MACENL ;ARE WE TRYING TO RE-ENTER? 005706' 254000 003400' JRST ERRAX ;YES, BOMB OUT WITH ERROR 005707' 563000 014071' HRROS MACENL ;FLAG "CALLM IN PROGRESS" 005710' 250700 013250' EXCH MP,RP 005711' 261700 000006 PUSH MP,V ;STACK FOR REFDEC 005712' 250700 013250' EXCH MP,RP 005713' 202000 013750' MOVEM AC0,CALNAM ;SAVE MACRO NAME INCASE OF ERROR 005714' 200140 014101' MOVE SDEL,SEQNO2 ;SAVE IN CASE OF EOF 005715' 202140 013752' MOVEM SDEL,CALSEQ 005716' 200140 014100' MOVE SDEL,PAGENO 005717' 202140 013751' MOVEM SDEL,CALPG 005720' 271300 000001 ADDI V,1 ;POINT TO DUMMY SYMBOL COUNT 005721' 350146 000000 AOS SDEL,0(V) ;INCREMENT ARG COUNT 005722' 512140 014054' HLLZM SDEL,.TEMP ;DEFAULT ARG POINTER IF NON-ZERO 005723' 246140 777723 LSHC SDEL,-^D<9+36> ;ZERO SDEL, GET ARG COUNT IN SX 005724' 405200 000777 ANDI SX,777 ;MASK 005725' 332000 014054' SKIPE .TEMP ;IF AT LEAST ONE DEFAULT ARG 005726' 542200 014054' HRRM SX,.TEMP ;STORE COUNT OF ARGS 005727' 261740 000006 PUSH PP,V ;STACK FOR MRP 005730' 261740 013250' PUSH PP,RP ;STACK FOR MACPNT 005731' 322200 005776' JUMPE SX,MAC20 ;TEST FOR NO ARGS 005732' 260740 001415' PUSHJ PP,CHARAC 005733' 302340 000050 CAIE C,"(" ;"(" 005734' 664140 777777 TROA SDEL,-1 ;NO, FUDGE PAREN COUNT AND SKIP 005735' 260740 006451' MAC10: PUSHJ PP,GCHAR ;GET A CHARACTER, LOOK FOR AN ARG 005736' 307340 000015 CAIG C,CR 005737' 305340 000012 CAIGE C,LF 005740' 306340 000073 CAIN C,";" ;";"? 005741' 254000 006000' JRST MAC21 ;YES, END OF ARGUMENT STRING 005742' 260740 006413' PUSHJ PP,SKELI1 ;NO, INITIALIZE SKELETON 005743' 306340 000074 CAIN C,"<" ;"<"? 005744' 254000 006073' JRST MAC30 ;YES, PROCESS AS SPECIAL 005745' 302340 000176 CAIE C,176 005746' 306340 000134 CAIN C,134 ;"\" 005747' 254000 006103' JRST MAC40 ;YES, PROCESS SYMBOL 005750' 306340 000054 MAC14: CAIN C,"," ;","? 005751' 254000 005767' JRST MAC16 ;YES; NULL SYMBOL 005752' 306340 000050 CAIN C,"(" ;"("? 005753' 271140 000001 ADDI SDEL,1 ;YES, INCREMENT COUNT 005754' 306340 000051 CAIN C,")" ;")"? 005755' 361140 005767' SOJL SDEL,MAC16 ;YES, TEST FOR END 005756' 260740 006456' PUSHJ PP,WCHAR ;WRITE INTO SKELETON 005757' 260740 001415' MAC14A: PUSHJ PP,CHARAC ;GET NEXT CHARACTER 005760' 307340 000015 CAIG C,CR 005761' 305340 000012 CAIGE C,LF 005762' 254000 005764' JRST .+2 005763' 254000 005766' JRST MAC15 ;TEST FOR END OF LINE 005764' 302340 000073 CAIE C,";" ;";"? 005765' 254000 005750' JRST MAC14 ;YES, END OF LINE MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 113-1 MACRO 10 24-APR-78 02:11 MACRO CALL PROCESSOR 005766' 661600 000004 MAC15: TLO IO,IORPTC 005767' 205400 774040 MAC16: MOVSI CS,(BYTE (7) 177,2) 005770' 260740 006466' PUSHJ PP,WWRXE ;WRITE END 005771' 250700 013250' EXCH MP,RP 005772' 261700 014074' PUSH MP,WWRXX 005773' 250700 013250' EXCH MP,RP 005774' 363200 005776' SOJLE SX,MAC20 ;BRANCH IF NO MORE ARGS 005775' 325140 005735' JUMPGE SDEL,MAC10 ;HAVEN'T SEEN TERMINAL ")" YET MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 114 MACRO 10 24-APR-78 02:11 MACRO CALL PROCESSOR 005776' 627600 000004 MAC20: TLZN IO,IORPTC 005777' 260740 001415' PUSHJ PP,CHARAC 006000' 250700 013250' MAC21: EXCH MP,RP 006001' 322200 006023' JUMPE SX,MAC21B ;NO MISSING ARGS 006002' 261700 014607' MAC21A: PUSH MP,[-1] ;FILL IN MISSING ARGS 006003' 336000 014054' SKIPN .TEMP ;ANY DEFAULT ARGS? 006004' 254000 006022' JRST MAC21C ;NO 006005' 550340 014054' HRRZ C,.TEMP ;GET ARG COUNT 006006' 275344 777777 SUBI C,-1(SX) ;ACCOUNT FOR THOSE GIVEN 006007' 517000 000007 HRLZS C ;PUT IN LEFT HALF 006010' 554140 014054' HLRZ SDEL,.TEMP ;ADDRESS OF TABLE 006011' 336003 000000 MAC21D: SKIPN (SDEL) ;END OF LIST 006012' 254000 006022' JRST MAC21C ;YES 006013' 430343 000000 XOR C,(SDEL) ;TEST FOR CORRECT ARG 006014' 607340 777777 TLNN C,-1 ;WAS IT? 006015' 254000 006020' JRST MAC21E ;YES 006016' 430343 000000 XOR C,(SDEL) ;BACK THE WAY IT WAS 006017' 344140 006011' AOJA SDEL,MAC21D ;AND TRY AGAIN 006020' 202356 000000 MAC21E: MOVEM C,(MP) ;REPLACE -1 WITH TREE POINTER 006021' 350007 000001 AOS 1(C) ;INCREMENT REFERENCE 006022' 367200 006002' MAC21C: SOJG SX,MAC21A 006023' 261700 014625' MAC21B: PUSH MP,[0] ;SET TERMINAL 006024' 550340 013452' HRRZ C,LIMBO 006025' 607600 000001 TLNN IO,IOSALL ;SUPPRESSING ALL? 006026' 254000 006045' JRST MAC23 ;NO 006027' 326540 006043' JUMPN MRP,MAC27 ;IN MACRO? 006030' 302340 000073 CAIE C,";" ;NO,IN COMMENT? 006031' 254000 006036' JRST MAC26 ;NO 006032' 260740 001415' MAC22: PUSHJ PP,CHARAC ;YES,GET IT INTO THE LBUF 006033' 307340 000015 CAIG C,CR ;LESS THAN CR? 006034' 305340 000012 CAIGE C,LF ;AND GREATER THAN LF? 006035' 254000 006032' JRST MAC22 ;NO GET ANOTHER 006036' 515200 070000 MAC26: HRLZI SX,70000 ;DECREMENT BYTE POINTER 006037' 273200 013453' ADDB SX,LBUFP 006040' 325200 006043' JUMPGE SX,MAC27 006041' 525200 347777 HRLOI SX,347777 006042' 272200 013453' ADDM SX,LBUFP 006043' 505340 777777 MAC27: HRLI C,-1 ;SET FLAG 006044' 254000 006060' JRST MAC25 006045' 201200 000136 MAC23: MOVEI SX,"^" 006046' 321600 006057' JUMPAD MAC24 ;BRANCH IF ADDRESS FIELD 006047' 306340 000073 CAIN C,";" ;IF SEMI-COLON 006050' 332000 013773' SKIPE LITLVL ;AND NOT IN A LITERAL 006051' 254000 006057' JRST MAC24 ;NOT BOTH TRUE 006052' 326540 006057' JUMPN MRP,MAC24 ;OR IN A MACRO 006053' 260740 000237' PUSHJ PP,STOUT ;LIST COMMENT OR CR-LF 006054' 603600 004000 TLNE IO,IOPALL ;MACRO EXPANSION SUPPRESSION? 006055' 661600 010000 TLO IO,IOMAC ; NO, SET TEMP BIT 006056' 674340 014607' TDOA C,[-1] ;FLAG LAST CHARACTER 006057' 137200 013453' MAC24: DPB SX,LBUFP ;SET ^ INTO LINE BUFFER 006060' 261700 014073' MAC25: PUSH MP,MACPNT MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 114-1 MACRO 10 24-APR-78 02:11 MACRO CALL PROCESSOR 006061' 262740 014073' POP PP,MACPNT 006062' 261700 000007 PUSH MP,C 006063' 261700 014075' PUSH MP,RCOUNT ;STACK WORD COUNT 006064' 261700 000013 PUSH MP,MRP ;STACK MACRO POINTER 006065' 262740 000013 POP PP,MRP ;SET NEW READ POINTER 006066' 250700 013250' EXCH MP,RP 006067' 350000 014072' AOS MACLVL 006070' 553000 014071' HRRZS MACENL ;RESET "CALLM IN PROGRESS" 006071' 325600 000130' JUMPOC STMNT2 ;OP-CODE FIELD 006072' 254000 001102' JRST EVATOM ;ADDRESS FIELD MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 115 MACRO 10 24-APR-78 02:11 MACRO CALL PROCESSOR 006073' 201000 000000 MAC30: MOVEI AC0,0 ;INITIALIZE BRACKET COUNTER 006074' 260740 006451' MAC31: PUSHJ PP,GCHAR ;GET A CHARACTER 006075' 306340 000074 CAIN C,"<" ;"<"? 006076' 271000 000001 ADDI AC0,1 ;YES, INCREMENT COUNT 006077' 306340 000076 CAIN C,">" ;">"? 006100' 361000 005757' SOJL AC0,MAC14A ;YES, EXIT IF MATCHING 006101' 260740 006456' PUSHJ PP,WCHAR ;WRITE INTO SKELETON 006102' 254000 006074' JRST MAC31 ;GO BACK FOR ANOTHER 006103' 261740 000004 MAC40: PUSH PP,SX ;STACK REGISTERS 006104' 261740 000003 PUSH PP,SDEL 006105' 502600 014051' HLLM IO,TAGINC ;SAVE IO FLAGS 006106' 260740 000363' PUSHJ PP,CELL ;GET AN ATOM 006107' 200300 000000 MOVE V,AC0 ;ASSUME NUMERIC 006110' 603600 020000 TLNE IO,NUMSW ;GOOD GUESS? 006111' 254000 006114' JRST MAC41 ;YES 006112' 260740 012610' PUSHJ PP,SSRCH ;SEARCH THE SYMBOL TABLE 006113' 664600 100000 TROA ER,ERRX ;NOT FOUND, ERROR 006114' 260740 006122' MAC41: PUSHJ PP,MAC42 ;FORM ASCII STRING 006115' 500600 014051' HLL IO,TAGINC ;RESTORE IO FLAGS 006116' 262740 000003 POP PP,SDEL 006117' 262740 000004 POP PP,SX 006120' 661600 000004 TLO IO,IORPTC ;REPEAT LAST CHARACTER 006121' 254000 005757' JRST MAC14A ;RETURN TO MAIN SCAN 006122' 200340 000006 MAC42: MOVE C,V 006123' 246340 777735 MAC44: LSHC C,-^D35 006124' 242400 777777 LSH CS,-1 006125' 235355 000000 DIVI C,0(RX) ;DIVIDE BY CURRENT RADIX 006126' 506417 000000 HRLM CS,0(PP) 006127' 322340 006131' JUMPE C,.+2 ;TEST FOR END 006130' 260740 006123' PUSHJ PP,MAC44 006131' 554357 000000 HLRZ C,0(PP) 006132' 271340 000060 ADDI C,"0" ;FORM TEXT 006133' 254000 006456' JRST WCHAR ;WRITE INTO SKELETON MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 116 MACRO 10 24-APR-78 02:11 MACRO CALL PROCESSOR 006134' 370000 014071' MACEN0: SOS MACENL 006135' 335340 014071' MACEND: SKIPGE C,MACENL ;TEST "CALLM IN PROGRESS" 006136' 350000 014071' AOS MACENL ;INCREMENT END LEVEL AND EXIT 006137' 321340 005330' JUMPL C,REPEA8 006140' 250700 013250' EXCH MP,RP 006141' 262700 000013 POP MP,MRP ;RETRIEVE READ POINTER 006142' 262700 014075' POP MP,RCOUNT ;AND WORD COUNT 006143' 201340 000136 MOVEI C,"^" 006144' 331016 000000 SKIPL 0(MP) ;TEST FLAG 006145' 260740 001423' PUSHJ PP,RSW2 ;MARK END OF SUBSTITUTION 006146' 262700 000007 POP MP,C 006147' 262700 000005 POP MP,ARG 006150' 334700 014073' SKIPA MP,MACPNT ;RESET MP AND SKIP 006151' 260740 006546' MACEN1: PUSHJ PP,REFDEC ;DECREMENT REFERENCE 006152' 350300 014073' MACEN2: AOS V,MACPNT ;GET POINTER 006153' 200306 000000 MOVE V,0(V) 006154' 327300 006151' JUMPG V,MACEN1 ;IF >0, DECREMENT REFERENCE 006155' 321300 006152' JUMPL V,MACEN2 ;IF <0, BYPASS 006156' 262700 000006 POP MP,V ;IF=0, RETRIEVE POINTER 006157' 260740 006546' PUSHJ PP,REFDEC ;DECREMENT REFERENCE 006160' 202240 014073' MOVEM ARG,MACPNT 006161' 250700 013250' EXCH MP,RP 006162' 370000 014072' SOS MACLVL 006163' 336000 014071' SKIPN MACENL ;CHECK UNPROCESSED END LEVEL 006164' 254000 006167' JRST MACEN3 ;NONE TO PROCESS 006165' 606540 777777 TRNN MRP,-1 ;MRP AT END OF TEXT 006166' 254000 006134' JRST MACEN0 ;THEN POP THE MACRO STACK NOW 006167' 606340 077400 MACEN3: TRNN C,77400 ;SALL FLAG? 006170' 505340 000000 HRLI C,0 ;YES,TURN IT OFF 006171' 321340 005330' JUMPL C,REPEA8 ;IF FLAG SET SUBSTITUTE 006172' 254000 001421' JRST RSW1 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 117 MACRO 10 24-APR-78 02:11 MACRO CALL PROCESSOR 006173' 336000 014072' IRP0: SKIPN MACLVL ;ARE WE IN A MACRO? 006174' 254000 003400' JRST ERRAX ;NO, BOMB OUT 006175' 260740 006516' IRP10: PUSHJ PP,MREADS ;YES, GET DATA SPEC 006176' 302340 000040 CAIE C,40 ;SKIP LEADING BLANKS 006177' 306340 000050 CAIN C,"(" ;"("? 006200' 254000 006175' JRST IRP10 ;YES, BYPASS 006201' 306340 000011 CAIN C,11 006202' 254000 006175' JRST IRP10 006203' 302340 000177 CAIE C,177 ;NO, IS IT SPECIAL? 006204' 254000 003400' JRST ERRAX ;NO, ERROR 006205' 260740 006516' PUSHJ PP,MREADS ;YES 006206' 626340 000100 TRZN C,100 ;CREATED? 006207' 254000 003400' JRST ERRAX 006210' 301340 000040 CAIL C,40 ;TOO BIG? 006211' 254000 003400' JRST ERRAX 006212' 270340 014073' ADD C,MACPNT ;NO, FORM POINTER TO STACK 006213' 261700 013770' PUSH MP,IRPCF ;STACK PREVIOUS POINTERS 006214' 261700 013772' PUSH MP,IRPSW 006215' 261700 013767' PUSH MP,IRPARP 006216' 261700 013766' PUSH MP,IRPARG 006217' 261700 013765' PUSH MP,IRPCNT 006220' 261707 000000 PUSH MP,0(C) 006221' 261700 013771' PUSH MP,IRPPOI 006222' 552340 013767' HRRZM C,IRPARP 006223' 202000 013770' MOVEM AC0,IRPCF ;IRPC FLAG FOUND IN AC0 006224' 476000 013772' SETOM IRPSW ;RESET IRP SWITCH 006225' 200407 000000 MOVE CS,0(C) 006226' 202400 013766' MOVEM CS,IRPARG 006227' 260740 006516' PUSHJ PP,MREADS 006230' 302340 000074 CAIE C,"<" ;"<"? 006231' 254000 006227' JRST .-2 ;NO, SEARCH UNTIL FOUND 006232' 260740 006413' PUSHJ PP,SKELI1 ;INITIALIZE NEW STRING 006233' 202240 013771' MOVEM ARG,IRPPOI ;SET NEW POINTER 006234' 634140 000003 TDZA SDEL,SDEL ;ZERO BRACKET COUNT AND SKIP 006235' 260740 006456' IRP20: PUSHJ PP,WCHAR1 006236' 260740 006516' PUSHJ PP,MREADS 006237' 306340 000074 CAIN C,"<" ;"<"? 006240' 344140 006235' AOJA SDEL,IRP20 ;YES, INCREMENT COUNT AND WRITE 006241' 302340 000076 CAIE C,">" ;">"? 006242' 254000 006235' JRST IRP20 ;NO, JUST WRITE IT 006243' 365140 006235' SOJGE SDEL,IRP20 ;YES, WRITE IF NOT MATCHING 006244' 200400 015032' MOVE CS,[BYTE (7) 15,177,4] 006245' 260740 006466' PUSHJ PP,WWRXE ;WRITE END 006246' 261700 000013 PUSH MP,MRP ;STACK PREVIOUS READ POINTER 006247' 261700 014075' PUSH MP,RCOUNT ;AND WORD COUNT 006250' 337400 013766' SKIPG CS,IRPARG 006251' 254000 006331' JRST IRPPOP ;EXIT IF NOT VALID ARGUMENT 006252' 201350 000001 MOVEI C,1(CS) ;INITIALIZE POINTER 006253' 202340 013766' MOVEM C,IRPARG MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 118 MACRO 10 24-APR-78 02:11 MACRO CALL PROCESSOR 006254' 250540 013766' IRPSET: EXCH MRP,IRPARG ;SWAP READ POINTERS 006255' 200200 014075' MOVE SX,RCOUNT ;SWAP COUNT OF WORDS TO READ 006256' 250200 013765' EXCH SX,IRPCNT 006257' 202200 014075' MOVEM SX,RCOUNT 006260' 260740 006413' PUSHJ PP,SKELI1 ;INITIALIZE SKELETON FOR DATA 006261' 552260 013767' HRRZM ARG,@IRPARP ;STORE NEW DS POINTER 006262' 403200 000003 SETZB SX,SDEL ;ZERO FOUND FLAG AND BRACKET COUNT 006263' 135340 000013 LDB C,MRP ;GET LAST CHAR 006264' 306340 000054 CAIN C,"," 006265' 332000 013770' SKIPE IRPCF ;IN IRPC 006266' 254000 006270' JRST IRPSE1 ;NO 006267' 201200 000001 MOVEI SX,1 ;FORCE ARGUMENT 006270' 260740 006516' IRPSE1: PUSHJ PP,MREADS 006271' 302340 000177 CAIE C,177 ;SPECIAL? 006272' 344200 006277' AOJA SX,IRPSE2 ;NO, FLAG AS FOUND 006273' 260740 006535' PUSHJ PP,PEEKM ;LOOK AT NEXT CHARACTER 006274' 402000 013772' SETZM IRPSW ;SET IRP SWITCH 006275' 327200 006312' JUMPG SX,IRPSE4 ;IF ARG FOUND, PROCESS IT 006276' 254000 006331' JRST IRPPOP ;NO, CLEAN UP AND EXIT 006277' 332000 013770' IRPSE2: SKIPE IRPCF ;IRPC? 006300' 254000 006307' JRST IRPSE3 ;YES, WRITE IT 006301' 306340 000054 CAIN C,"," ;NO, IS IT A COMMA? 006302' 322140 006312' JUMPE SDEL,IRPSE4 ;YES, EXIT IF NOT NESTED 006303' 306340 000074 CAIN C,"<" ;"<"? 006304' 271140 000001 ADDI SDEL,1 ;YES, INCREMENT COUNT 006305' 306340 000076 CAIN C,">" ;">"? 006306' 275140 000001 SUBI SDEL,1 ;YES, DECREMENT COUNT 006307' 260740 006456' IRPSE3: PUSHJ PP,WCHAR 006310' 336000 013770' SKIPN IRPCF ;IRPC? 006311' 254000 006270' JRST IRPSE1 ;NO, GET NEXT CHARACTER 006312' 205400 774040 IRPSE4: MOVSI CS,(BYTE (7) 177,2) 006313' 260740 006466' PUSHJ PP,WWRXE ;WRITE END 006314' 202540 013766' MOVEM MRP,IRPARG ;SAVE POINTER 006315' 200540 014075' MOVE MRP,RCOUNT ;SAVE COUNT 006316' 202540 013765' MOVEM MRP,IRPCNT 006317' 550540 013771' HRRZ MRP,IRPPOI ;SET FOR NEW SCAN 006320' 344540 005330' AOJA MRP,REPEA8 ;ON ARG COUNT MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 119 MACRO 10 24-APR-78 02:11 MACRO CALL PROCESSOR 006321' 336000 013767' STOPI0: SKIPN IRPARP ;IRP IN PROGRESS? 006322' 254000 003400' JRST ERRAX ;NO, ERROR 006323' 402000 013772' SETZM IRPSW ;YES, SET SWITCH 006324' 263740 000000 POPJ PP, 006325' 200320 013767' IRPEND: MOVE V,@IRPARP 006326' 260740 006546' PUSHJ PP,REFDEC 006327' 332000 013772' SKIPE IRPSW ;MORE TO COME? 006330' 254000 006254' JRST IRPSET ;YES 006331' 200300 013771' IRPPOP: MOVE V,IRPPOI 006332' 260740 006546' PUSHJ PP,REFDEC ;DECREMENT REFERENCE 006333' 262700 014075' POP MP,RCOUNT 006334' 262700 000013 POP MP,MRP ;RESTORE CELLS 006335' 262700 013771' POP MP,IRPPOI 006336' 262720 013767' POP MP,@IRPARP 006337' 262700 013765' POP MP,IRPCNT 006340' 262700 013766' POP MP,IRPARG 006341' 262700 013767' POP MP,IRPARP 006342' 262700 013772' POP MP,IRPSW 006343' 262700 013770' POP MP,IRPCF 006344' 254000 005330' JRST REPEA8 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 120 MACRO 10 24-APR-78 02:11 MACRO CALL PROCESSOR 006345' GETDS: ;GET DUMMY SYMBOL NUMBER 006345' 200400 000007 MOVE CS,C ;USE CS FOR WORK REGISTER 006346' 405400 000037 ANDI CS,37 ;MASK 006347' 270400 014073' ADD CS,MACPNT ;ADD BASE ADDRESS 006350' 200310 000000 MOVE V,0(CS) ;GET POINTER FLAG 006351' 327300 006377' JUMPG V,GETDS1 ;BRANCH IF POINTER 006352' 606340 000040 TRNN C,40 ;NOT POINTER, SHOULD WE CREATE? 006353' 254000 001417' JRST RSW0 ;NO, FORGET THIS ARG 006354' 261740 014074' PUSH PP,WWRXX 006355' 261740 000012 PUSH PP,MWP ;STACK MACRO WRITE POINTER 006356' 261740 014076' PUSH PP,WCOUNT ;SAVE WORD COUNT 006357' 260740 006413' PUSHJ PP,SKELI1 ;INITIALIZE SKELETON 006360' 202250 000000 MOVEM ARG,0(CS) ;STORE POINTER 006361' 200400 015033' MOVE CS,[BYTE (7) 0,170,170,170,171] ;CREATE A SYMBOL 006362' 270400 014077' ADD CS,LSTSYM ;LSTSYM= # OF LAST CREATED 006363' 630400 015034' TDZ CS,[BYTE (7) 0,170,170,170,170] 006364' 202400 014077' MOVEM CS,LSTSYM 006365' 434400 015035' IOR CS,[ASCII /.0000/] 006366' 201340 000056 MOVEI C,"." 006367' 260740 006456' PUSHJ PP,WCHAR 006370' 260740 006462' PUSHJ PP,WWORD ;WRITE INTO SKELETON 006371' 205400 774040 MOVSI CS,(BYTE (7) 177,2) 006372' 260740 006466' PUSHJ PP,WWRXE ;WRITE END CODE 006373' 262740 014076' POP PP,WCOUNT ;RESTORE WORD COUNT 006374' 262740 000012 POP PP,MWP ;RESTORE MACRO WRITE POINTER 006375' 262740 014074' POP PP,WWRXX 006376' 200300 000005 MOVE V,ARG ;SET UP FOR REFINC 006377' 260740 006543' GETDS1: PUSHJ PP,REFINC ;INCREMENT REFERENCE 006400' 504300 014075' HRL V,RCOUNT ;SAVE WORD COUNT 006401' 261700 000006 PUSH MP,V ;STACK V FOR DECREMENT 006402' 261700 000013 PUSH MP,MRP ;STACK READ POINTER 006403' 201546 000001 MOVEI MRP,1(V) ;FORM READ POINTER 006404' 254000 001417' JRST RSW0 ;EXIT 006405' 262700 000013 DSEND: POP MP,MRP 006406' 262700 000006 POP MP,V 006407' 576300 014075' HLREM V,RCOUNT ;RESTORE WORD COUNT 006410' 553000 000006 HRRZS V ;CLEAR COUNT 006411' 260740 006546' PUSHJ PP,REFDEC ;DECREMENT REFERENCE 006412' 254000 001417' JRST RSW0 ;EXIT MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 121 MACRO 10 24-APR-78 02:11 MACRO CALL PROCESSOR 006413' 201240 000001 SKELI1: MOVEI ARG,1 ;ENTRY FOR SINGLE ARG 006414' 400500 000000 SKELI: SETZ MWP, ;SIGNAL FIRST TIME THROUGH 006415' 260740 006427' PUSHJ PP,SKELWL ;GET POINTER WORD 006416' 552500 014074' HRRZM MWP,WWRXX ;SAVE FIRST ADDRESS 006417' 552500 013450' HRRZM MWP,LADR ;SAVE START OF LINKED LIST 006420' 552252 000001 HRRZM ARG,1(MWP) ;STORE COUNT 006421' 370000 014076' SOS WCOUNT ;ACCOUNT FOR WORD 006422' 550240 014074' HRRZ ARG,WWRXX ;SET FIRST ADDRESS 006423' 271500 000002 ADDI MWP,2 ;BUMP POINTER 006424' 505500 440700 HRLI MWP,(POINT 7) ;SET FOR 5 ASCII BYTES ;SKELW RETURNS WITH ADR OF NEXT FREE LOC IN V (RIGHT) 006425' 373000 014076' SKELW: SOSLE WCOUNT ;STILL SOME SPACE IN LEAF? 006426' 263740 000000 POPJ PP, ;YES, RETURN 006427' 332300 013511' SKELWL: SKIPE V,NEXT ;GET FIRST FREE ADDRESS 006430' 254000 006437' JRST SKELW1 ;IF NON-ZERO, UPDATE FREE 006431' 200300 013377' MOVE V,FREE ;GET FREE 006432' 271300 000004 ADDI V,.LEAF ;INCREMENT BY LEAF SIZE 006433' 311300 013552' CAML V,SYMBOL ;OVERFLOW? 006434' 260740 010277' PUSHJ PP,XCEED ;YES, BOMB OUT 006435' 250300 013377' EXCH V,FREE ;UPDATE FREE 006436' 402006 000000 SETZM (V) ;CLEAR LINK 006437' 500306 000000 SKELW1: HLL V,0(V) ;GET ADDRESS 006440' 546300 013511' HLRM V,NEXT ;UPDATE NEXT 006441' 332000 000012 SKIPE MWP ;IF FIRST TIME 006442' 506312 777775 HRLM V,1-.LEAF(MWP) ;STORE LINK IN FIRST WORD OF LEAF 006443' 201500 000004 MOVEI MWP,.LEAF ;SIZE OF LEAF 006444' 202500 014076' MOVEM MWP,WCOUNT ;STORE FOR COUNT DOWN 006445' 201506 000000 MOVEI MWP,(V) ;SET UP WRITE POINTER 006446' 661500 160700 TLO MWP,(POINT 7,,21) ;2 ASCII CHARS 006447' 263740 000000 POPJ PP, ;WWRXX POINTS TO END OF TREE ;MWP IDPB POINTER TO NEXT HOLE ;NEXT FIRST OF A LINKED PORTION THAT IS NOT BEING USED (LEAVES) ;FREE POINTS TO FREE CORE BETWEEN TREE AND SYM-TABLE ;LADR POINTS TO BEG OF LINKED PORTION. MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 122 MACRO 10 24-APR-78 02:11 MACRO CALL PROCESSOR 006450' 326540 006516' GCHARQ: JUMPN MRP,MREADS ;IF GETTING CHAR. FROM TREE 006451' 260740 001415' GCHAR: PUSHJ PP,CHARAC ;GET ASCII CHARACTER 006452' 307340 000014 CAIG C,FF ;TEST FOR LF, VT OR FF 006453' 305340 000012 CAIGE C,LF 006454' 263740 000000 POPJ PP, ;NO 006455' 254000 001745' JRST OUTIM1 ;YES, LIST IT 006456' WCHARQ: 006456' WCHAR: 006456' 607500 760000 WCHAR1: TLNN MWP,760000 ;END OF WORD? 006457' 260740 006425' PUSHJ PP,SKELW ;YES, GET ANOTHER 006460' 136340 000012 IDPB C,MWP ;STORE CHARACTER 006461' 263740 000000 POPJ PP, 006462' 246340 000007 WWORD: LSHC C,7 ;MOVE ASCII INTO C 006463' 260740 006456' PUSHJ PP,WCHAR1 ;STORE IT 006464' 326400 006462' JUMPN CS,WWORD ;TEST FOR END 006465' 263740 000000 POPJ PP, ;YES, EXIT 006466' 260740 006462' WWRXE: PUSHJ PP,WWORD ;WRITE LAST WORD 006467' 270500 014076' ADD MWP,WCOUNT ;GET TO END OF LEAF 006470' 275500 000004 SUBI MWP,.LEAF ;NOW POINT TO START OF IT 006471' 553012 000000 HRRZS (MWP) ;ZERO LEFT HALF OF LAST LEAF 006472' 542520 014074' HRRM MWP,@WWRXX ;SET POINTER TO END 006473' 263740 000000 POPJ PP, MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 123 MACRO 10 24-APR-78 02:11 MACRO CALL PROCESSOR 006474' 260740 006516' MREAD: PUSHJ PP,MREADS ;READ ONE CHARACTER 006475' 302340 000177 CAIE C,177 ;SPECIAL? 006476' 254000 001421' JRST RSW1 ;NO, EXIT 006477' 260740 006516' PUSHJ PP,MREADS ;YES, GET CODE WORD 006500' 622340 000100 TRZE C,100 ;SYMBOL? 006501' 254000 006345' JRST GETDS ;YES 006502' 303340 000004 CAILE C,4 ;POSSIBLY ILLEGAL 006503' 254000 003400' JRST ERRAX ;YUP 006504' 541540 000000 HRRI MRP,0 ;NO, SIGNAL END OF TEXT 006505' 254007 006506' JRST .+1(C) 006506' 260740 010277' PUSHJ PP,XCEED 006507' 254000 006135' JRST MACEND ;1; END OF MACRO 006510' 254000 006405' JRST DSEND ;2; END OF DUMMY SYMBOL 006511' 254000 005332' JRST REPEND ;3; END OF REPEAT 006512' 254000 006325' JRST IRPEND ;4; END OF IRP 006513' 505540 000700 MREADI: HRLI MRP,700 ;SET UP BYTE POINTER 006514' 201340 000003 MOVEI C,.LEAF-1 ;NUMBER OF WORDS 006515' 202340 014075' MOVEM C,RCOUNT 006516' 607540 777777 MREADS: TLNN MRP,-1 ;FIRST TIME HERE? 006517' 254000 006513' JRST MREADI ;YES, SET UP MRP AND RCOUNT 006520' 607540 760000 TLNN MRP,760000 ;HAVE WE FINISHED WORD? 006521' 373000 014075' SOSLE RCOUNT ;YES, STILL ROOM IN LEAF? 006522' 254000 006527' JRST MREADC ;STILL CHAR. IN LEAF 006523' 554553 777775 HLRZ MRP,1-.LEAF(MRP);YES, GET LINK 006524' 505540 160700 HRLI MRP,(POINT 7,,21) ;SET POINTER 006525' 201340 000004 MOVEI C,.LEAF ;RESET COUNT 006526' 202340 014075' MOVEM C,RCOUNT 006527' 134340 000013 MREADC: ILDB C,MRP ;GET CHARACTER 006530' 263740 000000 POPJ PP, 006531' 326540 006535' PEEK: JUMPN MRP,PEEKM ;THIS IS A MACRO READ 006532' 260740 001415' PUSHJ PP,CHARAC ;READ AN ASCII CHAR. 006533' 661600 000004 TLO IO,IORPTC ;REPEAT FOR NEXT 006534' 263740 000000 POPJ PP, ;AND RETURN 006535' 261740 000013 PEEKM: PUSH PP,MRP ;SAVE MACRO READ POINTER 006536' 261740 014075' PUSH PP,RCOUNT ;SAVE WORD COUNT 006537' 260740 006516' PUSHJ PP,MREADS ;READ IN A CHAR. 006540' 262740 014075' POP PP,RCOUNT ;RESTORE WORD COUNT 006541' 262740 000013 POP PP,MRP ;RESET READ POINTER 006542' 263740 000000 POPJ PP, ;IORPTC IS NOT SET MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 124 MACRO 10 24-APR-78 02:11 MACRO CALL PROCESSOR 006543' 201406 000001 REFINC: MOVEI CS,1(V) ;GET POINTER TO TREE 006544' 350010 000000 AOS 0(CS) ;INCREMENT REFERENCE 006545' 263740 000000 POPJ PP, 006546' 323300 006560' REFDEC: JUMPLE V,DECERR ;CATASTROPHIC ERROR SOMEWHERE 006547' 201406 000001 MOVEI CS,1(V) ;GET POINTER TO TREE 006550' 370410 000000 SOS CS,0(CS) ;DECREMENT REFERENCE 006551' 602400 000777 TRNE CS,000777 ;IS IT ZERO? 006552' 263740 000000 POPJ PP, ;NO, EXIT 006553' 550406 000000 HRRZ CS,0(V) ;YES, GET POINTER TO END 006554' 504400 013511' HRL CS,NEXT ;GET POINTER TO NEXT RE-USABLE 006555' 502410 000000 HLLM CS,0(CS) ;SET LINK 006556' 542300 013511' HRRM V,NEXT ;RESET NEXT 006557' 263740 000000 POPJ PP, 006560' 200000 013750' DECERR: MOVE AC0,CALNAM ;GET MACRO NAME 006561' 205440 015036' MOVSI RC,[SIXBIT /ERROR WHILE EXPANDING@/] 006562' 260740 010241' PUSHJ PP,TYPMSG 006563' 254000 010140' JRST ERRNE2 ;COMMON MESSAGE MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 125 MACRO 10 24-APR-78 02:11 MACRO CALL PROCESSOR 000000 A== 0 ;ASCII MODE 000001 AL== 1 ;ASCII LINE MODE 000013 IB== 13 ;IMAGE BINARY MODE 000014 B== 14 ;BINARY MODE 000016 DMP==16 ;DUMP MODE 000000 CTL== 0 ;CONTROL DEVICE NUMBER 000004 IFN CCLSW, 000001 BIN== 1 ;BINARY DEVICE NUMBER 000002 CHAR== 2 ;INPUT DEVICE NUMBER 000003 LST== 3 ;LISTING DEVICE NUMBER ; COMMAND STRING ACCUMULATORS 000001 ACDEV== 1 ;DEVICE 000002 ACFILE==2 ;FILE 000003 ACEXT== 3 ;EXTENSION 000004 ACPPN== 4 ;PPN 000004 ACDEL== 4 ;DELIMITER 000005 ACPNTR==5 ;BYTE POINTER 000006 TIO== 6 001000 TIORW== 1000 002000 TIOLE== 2000 020000 TIOCLD==20000 000004 DIRBIT==4 ;DIRECTORY DEVICE 000010 TTYBIT==10 ;TTY 000020 MTABIT==20 ;MTA 000100 DTABIT==100 ;DTA 002000 DISBIT==2000 ;DISPLAY 020000 CONBIT==20000 ;CONTROLING TTY 040000 LPTBIT==40000 ;LPT 200000 DSKBIT==200000 ;DSK ;GETSTS ERROR BITS 400000 IOIMPM==400000 ;IMPROPER MODE (WRITE LOCK) 200000 IODERR==200000 ;DEVICE DATA ERROR 100000 IODTER==100000 ;CHECKSUM OR PARITY ERROR 040000 IOBKTL== 40000 ;BLOCK TOO LARGE 740000 ERRBIT==IOIMPM!IODERR!IODTER!IOBKTL SYN .TEMP,PPN MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 126 MACRO 10 24-APR-78 02:11 I/O ROUTINES SUBTTL I/O ROUTINES 006564' BEG: 006564' 625600 100000 IFN CCLSW, 006566' 550540 005115* HRRZ MRP,JOBREL ;GET LOWSEG SIZE 006567' 202540 014117' MOVEM MRP,MACSIZ ;SAVE CORE SIZE ;DECODE VERSION NUMBER 006570' 201740 014161' MOVEI PP,JOBFFI ;TEMP PUSH DOWN STACK 006571' 261740 014625' PUSH PP,[0] ;MARK BOTTOM OF STACK 006572' 135000 015042' LDB 0,[POINT 3,JOBVER,2] ;GET USER BITS 006573' 322000 006600' JUMPE 0,GETE ;NOT SET IF ZERO 006574' 271000 000060 ADDI 0,"0" ;FORM NUMBER 006575' 261740 000000 PUSH PP,0 ;STACK IT 006576' 201000 000055 MOVEI 0,"-" ;SEPARATE BY HYPHEN 006577' 261740 000000 PUSH PP,0 ;STACK IT ALSO 006600' 550000 000137 GETE: HRRZ 0,JOBVER ;GET EDIT NUMBER 006601' 322000 006612' JUMPE 0,GETU ;SKIP ALL THIS IF ZERO 006602' 201040 000051 MOVEI 1,")" ;ENCLOSE IN PARENS. 006603' 261740 000001 PUSH PP,1 006604' 231000 000010 GETED: IDIVI 0,8 ;GET OCTAL DIGITS 006605' 271040 000060 ADDI 1,"0" ;MAKE ASCII 006606' 261740 000001 PUSH PP,1 ;STACK IT 006607' 326000 006604' JUMPN 0,GETED ;LOOP TIL DONE 006610' 201000 000050 MOVEI 0,"(" ;OTHER PAREN. 006611' 261740 000000 PUSH PP,0 006612' 135000 015043' GETU: LDB 0,[POINT 6,JOBVER,17] ;UPDATE NUMBER 006613' 322000 006620' JUMPE 0,GETV ;SKIP IF ZERO 006614' 231000 000010 IDIVI 0,8 ;MIGHT BE TWO DIGITS 006615' 271040 000100 ADDI 1,"@" ;FORM ALPHA 006616' 261740 000001 PUSH PP,1 006617' 326000 006613' JUMPN 0,GETU+1 ;LOOP IF NOT DONE 006620' 135000 015044' GETV: LDB 0,[POINT 9,JOBVER,11] ;GET VERSION NUMBER 006621' 231000 000010 IDIVI 0,8 ;GET DIGIT 006622' 271040 000060 ADDI 1,"0" ;TO ASCII 006623' 261740 000001 PUSH PP,1 ;STACK 006624' 326000 006621' JUMPN 0,GETV+1 ;LOOP 006625' 200040 015045' MOVE 1,[POINT 7,VBUF+1,13] ;POINTER TO DEPOSIT IN VBUF 006626' 262740 000000 POP PP,0 ;GET CHARACTER 006627' 136000 000001 IDPB 0,1 ;DEPOSIT IT 006630' 326000 006626' JUMPN 0,.-2 ;KEEP GOING IF NOT ZERO MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 127 MACRO 10 24-APR-78 02:11 I/O ROUTINES IFN CCLSW,< 006631' 625600 001000 TLZA IO,CRPGSW ;SET TO INIT NEW COMMAND FILE 006632' 607600 001000 M: TLNN IO,CRPGSW ;CURRENTLY DOING RPG?> IFE CCLSW, 006633' 047000 000000 RESET ;INITIALIZE PROGRAM 006634' 402000 013220' SETZM BINDEV ;CLEAR INCASE NOT USED NEXT TIME 006635' 402000 013223' SETZM LSTDEV ;SAME REASON 006636' 402000 013234' SETZM INDEV ;INCASE OF ERROR 006637' 550540 014117' HRRZ MRP,MACSIZ ;GET INITIAL SIZE 006640' 047540 000011 CORE MRP, ;BACK TO ORIGINAL SIZ4 006641' 255000 000000 JFCL ;SHOULD NEVER FAIL 006642' 403540 013250' SETZB MRP,PASS1I 006643' 200000 015046' MOVE [XWD PASS1I,PASS1I+1] 006644' 251000 014101' BLT PASS2X-1 ;ZERO THE PASS1 AND PASS2 VARIABLES 006645' 201740 014161' MOVEI PP,JOBFFI ;SET TEMP PUSH-DOWN POINTER 006646' 200400 015047' MOVE CS,[POINT 7,DBUF,6] ;INITIALIZE FOR DATE 006647' 047100 000023 MSTIME 2, ;GET TIME FROM MONITOR 006650' 260740 010707' PUSHJ PP,TIMOUT ;TIME FORMAT OUTPUT 006651' 047040 000014 DATE 1, ;GET DATE 006652' 133000 000010 IBP CS ;PASS OVER PRESET SPACE 006653' 260740 010724' PUSHJ PP,DATOUT ;DATE FORMAT OUTPUT 006654' 205640 402000 MOVSI FR,P1!CREFSW 006655' 603600 001000 IFN CCLSW, IFE CCLSW, 006662' 205600 004000 MOVSI IO,IOPALL ;ZERO FLAGS 006663' 041000 000001 INIT CTL,AL ;INITIALIZE USER CONSOLE 006664' 646471 000000 SIXBIT /TTY/ 006665' 014114' 014111' XWD CTOBUF,CTIBUF 006666' 047000 000012 EXIT ;NO TTY, NO ASSEMBLY 006667' 205340 646471 MOVSI C,(SIXBIT /TTY/) 006670' 047340 000004 DEVCHR C, ;GET CHARACTERISTICS 006671' 607340 000010 TLNN C,10 ;IS IT REALLY A TTY 006672' 047000 000012 EXIT ;NO 006673' 064000 000001 INBUF CTL,1 ;INITIALIZE SINGLE CONTROL 006674' 065000 000001 OUTBUF CTL,1 ;BUFFERS 006675' 260740 010247' PUSHJ PP,CRLF ;OUTPUT CARRIAGE RETURN - LINE FEED 006676' 201340 000052 MOVEI C,"*" 006677' 136340 014115' IDPB C,CTOBUF+1 006700' 067000 000000 OUTPUT CTL, 006701' 066000 000000 INPUT CTL, MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 128 MACRO 10 24-APR-78 02:11 I/O ROUTINES 006702' 254000 007022' IFN CCLSW, MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 131 MACRO 10 24-APR-78 02:11 I/O ROUTINES 007022' 260740 007477' BINSET: PUSHJ PP,NAME1 ;GET FIRST NAME 007023' 306340 000041 IFN CCLSW, 007027' 607640 002000 TLNN FR,CREFSW ;CROSS REF REQUESTED? 007030' 254000 007070' JRST LSTSE1 ;YES, SKIP BINARY 007031' 306340 000054 CAIN C,"," ;COMMA? 007032' 322040 007067' JUMPE ACDEV,LSTSET ;YES, SKIP BINARY IF NO DEVICE SPECIFIED 007033' 306340 000137 CAIN C,"_" ;LEFT ARROW? 007034' 322040 007070' JUMPE ACDEV,LSTSE1 ;YES, SKIP BINARY IF NO DEVICE SPECIFIED 007035' 322040 006632' JUMPE ACDEV,M ;IGNORE IF JUST 007036' 661640 001000 TLO FR,PNCHSW ;OK, SET SWITCH 007037' 202040 013220' MOVEM ACDEV,BINDEV ;STORE DEVICE NAME 007040' 202100 013337' MOVEM ACFILE,BINDIR ;STORE FILE NAME IN DIRECTORY 007041' 326140 007043' JUMPN ACEXT,.+2 ;EXTENSION SPECIFIED? 007042' 205140 624554 MOVSI ACEXT,(SIXBIT /REL/) ;NO, ASSUME RELOCATABLE BINARY 007043' 202140 013340' MOVEM ACEXT,BINDIR+1 ;STORE IN DIRECTORY 007044' 202200 013342' MOVEM ACPPN,BINDIR+3 ;SET PPN 007045' 050040 013217' OPEN BIN,BININI ;INITIALIZE BINARY 007046' 254000 010162' JRST EINIT ;ERROR 007047' 623300 002000 TLZE TIO,TIOLE ;SKIP TO EOT 007050' 072040 000010 MTAPE BIN,10 007051' 623300 001000 TLZE TIO,TIORW ;REWIND REQUESTED? 007052' 072040 000001 MTAPE BIN,1 ;YES 007053' 325400 007061' JUMPGE CS,BINSE2 ;BRANCH IF NO BACK-SPACE 007054' 072040 000017 MTAPE BIN,17 ;BACK-SPACE A FILE 007055' 341400 007054' AOJL CS,.-1 ;TEST FOR END 007056' 072040 000000 WAIT BIN, 007057' 061040 004000 STATO BIN,1B24 ;LOAD POINT? 007060' 072040 000016 MTAPE BIN,16 ;NO, GO FORWARD ONE 007061' 367400 007060' BINSE2: SOJG CS,.-1 ;TEST FORWARD SPACING 007062' 603300 020000 TLNE TIO,TIOCLD ;DIRECTORY CLEAR REQUESTED? 007063' 047040 000013 UTPCLR BIN, ;YES, CLEAR IT 007064' 065040 000002 OUTBUF BIN,2 ;SET UP TWO RING BUFFER 007065' 306340 000137 CAIN C,"_" 007066' 254000 007142' JRST GETSET ;NO LISTING MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 132 MACRO 10 24-APR-78 02:11 I/O ROUTINES 007067' 260740 007477' LSTSET: PUSHJ PP,NAME1 ;GET NEXT DEVICE 007070' 302340 000137 LSTSE1: CAIE C,"_" 007071' 254000 007603' JRST ERRCM 007072' 603640 002000 TLNE FR,CREFSW ;CROSS-REF REQUESTED? 007073' 254000 007102' JRST LSTSE2 ;NO, BRANCH 007074' 326040 007076' JUMPN ACDEV,.+2 ;YES, WAS DEVICE SPECIFIED? 007075' 205040 446353 MOVSI ACDEV,(SIXBIT /DSK/) ;NO, ASSUME DSK 007076' 326100 007100' JUMPN ACFILE,.+2 007077' 200100 015101' MOVE ACFILE,[SIXBIT /CREF/] 007100' 326140 007102' JUMPN ACEXT,.+2 007101' 205140 436246 MOVSI ACEXT,(SIXBIT /CRF/) 007102' 322040 007142' LSTSE2: JUMPE ACDEV,GETSET ;FORGET LISTING IF NO DEVICE SPECIFIED 007103' 200000 000001 MOVE AC0,ACDEV 007104' 047000 000004 DEVCHR AC0, ;GET CHARACTERISTICS 007105' 603000 042010 TLNE AC0,LPTBIT!DISBIT!TTYBIT 007106' 603640 002000 TLNE FR,CREFSW ; WAS CROSS-REF REQUESTED? 007107' 354000 013512' AOSA OUTSW+0*TTYSW ;NO, ASSUME TTY 007110' 254000 007603' JRST ERRCM ;YES, ERROR - CREF DEV MUST NOT BE LPT, DIS, OR TTY 007111' 603000 020000 TLNE AC0,CONBIT ;CONTROLING TELETYPE LISTING? 007112' 254000 007142' JRST GETSET ;YES, BUFFER ALREADY SET 007113' 202040 013223' MOVEM ACDEV,LSTDEV ;STORE DEVICE NAME 007114' 350000 013512' AOS OUTSW+0*LPTSW ;SET FOR LPT 007115' 202100 013333' MOVEM ACFILE,LSTDIR ;STORE FILE NAME 007116' 326140 007120' JUMPN ACEXT,.+2 007117' 205140 546364 MOVSI ACEXT,(SIXBIT /LST/) 007120' 202140 013334' MOVEM ACEXT,LSTDIR+1 007121' 202200 013336' MOVEM ACPPN,LSTDIR+3 ;SET PPN 007122' 050140 013222' OPEN LST,LSTINI ;INITIALIZE LISTING OUTPUT 007123' 254000 010162' JRST EINIT ;ERROR 007124' 623300 002000 TLZE TIO,TIOLE 007125' 072140 000010 MTAPE LST,10 007126' 623300 001000 TLZE TIO,TIORW ;REWIND REQUESTED? 007127' 072140 000001 MTAPE LST,1 ;YES 007130' 325400 007136' JUMPGE CS,LSTSE3 007131' 072140 000017 MTAPE LST,17 007132' 341400 007131' AOJL CS,.-1 007133' 072140 000000 WAIT LST, 007134' 061140 004000 STATO LST,1B24 007135' 072140 000016 MTAPE LST,16 007136' 367400 007135' LSTSE3: SOJG CS,.-1 007137' 603300 020000 TLNE TIO,TIOCLD ;DIRECTORY CLEAR REQUESTED? 007140' 047140 000013 UTPCLR LST, ;YES, CLEAR IT 007141' 065140 000002 OUTBUF LST,2 ;SET UP A TWO RING BUFFER MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 133 MACRO 10 24-APR-78 02:11 I/O ROUTINES 007142' 201140 010321' GETSET: MOVEI 3,PDPERR 007143' 542140 000000* HRRM 3,JOBAPR ;SET TRAP LOCATION 007144' 201140 200000 MOVEI 3,1B19 ;SET FOR PUSH-DOWN OVERFLOW 007145' 047140 000016 APRENB 3, 007146' 370140 013513' SOS 3,PDP ;GET PDP REQUEST MINUS 1 007147' 221140 000062 IMULI 3,.PDP ;COMPUTE SIZE (50*) 007150' 514700 000003 HRLZ MP,3 007151' 540700 007014* HRR MP,JOBFF ;SET BASIC POINTER 007152' 200740 000016 MOVE PP,MP 007153' 274740 000003 SUB PP,3 007154' 202740 013250' MOVEM PP,RP ;SET RP 007155' 274740 000003 SUB PP,3 007156' 240140 000001 ASH 3,1 ;DOUBLE SIZE OF BASIC POINTER 007157' 504740 000003 HRL PP,3 007160' 276740 000003 SUBM PP,3 ;COMPUTE TOP LOCATION 007161' 336000 014121' SKIPN UNITOP ;IF ANY UNIVERSALS HAVE BEEN SEEN 007162' 254000 007167' JRST GETSE0 ;NO 007163' 553000 000003 HRRZS 3 ;GET TOP OF BUFFERS AND STACKS 007164' 313140 014120' CAMLE 3,UNISIZ ;HOPE ITS NOT BIGGER THAN UNIVERSAL ONE 007165' 254000 005262' JRST UNIERR ;IT WAS, YOU LOSE 007166' 334140 014121' SKIPA 3,UNITOP ;DON'T LOSE THEM 007167' 552140 014120' GETSE0: HRRZM 3,UNISIZ ;STORE UNTIL A UNIVERSAL IS SEEN 007170' 552140 013450' HRRZM 3,LADR ;SET START OF MACRO TREE 007171' 552140 013377' HRRZM 3,FREE 007172' 550000 006735* GETSE1: HRRZ JOBREL 007173' 275000 000001 SUBI 1 007174' 202000 013553' MOVEM SYMTOP ;SET TOP OF SYMBOL TABLE 007175' 275000 000004 SUBI LENGTH ;SET POINTER FOR INITIAL SYMBOLS 007176' 313000 013450' CAMLE LADR ;HAVE WE ROOM? 007177' 254000 007205' JRST GETSE2 ;YES 007200' 550100 007172* HRRZ 2,JOBREL ;NO, TRY FOR MORE CORE 007201' 271100 002000 ADDI 2,2000 007202' 047100 000011 CORE 2, 007203' 254000 010317' JRST XCEED2 ;NO MORE, INFORM USER 007204' 254000 007172' JRST GETSE1 ;TRY AGAIN 007205' 202000 013552' GETSE2: MOVEM SYMBOL ;SET START OF SYMBOL TABLE 007206' 505000 012201' HRLI SYMNUM 007207' 251020 013553' BLT @SYMTOP ;STORE SYMBOLS 007210' 260740 013125' PUSHJ PP,SRCHI ;INITIALIZE TABLE 007211' 200000 015102' MOVE [XWD CTIBUF+1,CTLSAV] ;SAVE CONTROL INPUT BUFFER 007212' 251000 013741' BLT CTLS1 ;FOR RESCAN ON PASS 2 007213' 205000 446353 IFN FTDISK, 007215' 260740 002743' PUSHJ PP,COUTI ;INIT OUTPUT JUST IN CASE 007216' 260740 007242' PUSHJ PP,INSET ;GET FIRST INPUT FILE 007217' 603600 001000 IFN CCLSW, 007221' 200400 013343' MOVE CS,INDIR ;SET UP NAME OF FIRST FILE 007222' 202400 013207' MOVEM CS,LSTFIL ;AS LAST PRINTED MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 133-1 MACRO 10 24-APR-78 02:11 I/O ROUTINES 007223' 402000 014102' SETZM LSTPGN 007224' 254000 000077' JRST ASSEMB ;START ASSEMBLY MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 134 MACRO 10 24-APR-78 02:11 I/O ROUTINES 007225' 070040 000000 FINIS: CLOSE BIN, ;DUMP BUFFER 007226' 603640 001000 TLNE FR,PNCHSW ;PUNCH REQUESTED? 007227' 260740 010415' PUSHJ PP,TSTBIN ;YES, TEST FOR ERRORS 007230' 071040 000000 RELEAS BIN, 007231' 070140 000000 CLOSE LST, 007232' 373000 013512' SOSLE OUTSW+0*LPTSW ;LPT TYPE OUTPUT? 007233' 260740 010424' PUSHJ PP,TSTLST ;YES, TEST FOR ERRORS 007234' 071140 000000 RELEAS LST, 007235' 071100 000000 RELEAS CHAR, 007236' 067000 000000 OUTPUT CTL,0 ;FLUSH TTY OUTPUT 007237' 332000 013733' SKIPE UNIVSN ;SKIP IF NOT ASSEMBLING UNIVERSAL 007240' 260740 005207' PUSHJ PP,UNISYM ;STORE SYMBOLS ETC. FIRST 007241' 254000 006632' JRST M ;RETURN FOR NEXT ASSEMBLY MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 135 MACRO 10 24-APR-78 02:11 I/O ROUTINES 007242' 201000 014161' INSET: MOVEI JOBFFI ;POINTER TO INPUT BUFFER 007243' 542000 007151* HRRM JOBFF ;INFORM SYSTEM OF BUFFER AREA 007244' 260740 007500' PUSHJ PP,NAME2 ;GET NEXT COMMAND NAME 007245' 322040 010115' JUMPE ACDEV,ERRNE ;ERROR IF NONE LEFT 007246' 202040 013234' MOVEM ACDEV,INDEV ;STORE DEVICE 007247' 202100 013343' MOVEM ACFILE,INDIR ;STORE FILE IN DIRECTORY 007250' 202200 013346' MOVEM ACPPN,INDIR+3 ;STORE PPN BEFORE WE LOSE IT 007251' 050100 013233' OPEN CHAR,INDEVI 007252' 254000 010162' JRST EINIT ;ERROR 007253' 047040 000004 DEVCHR ACDEV, ;TEST CHARACTERISTICS 007254' 607040 000020 TLNN ACDEV,MTABIT ;MAG TAPE? 007255' 254000 007300' JRST INSET3 ;NO 007256' 627640 000004 TLZN FR,MTAPSW ;FIRST MAG TAPE IN PASS 2? 007257' 254000 007262' JRST INSET1 ;NO 007260' 607300 001000 TLNN TIO,TIORW ;YES, REWIND REQUESTED? 007261' 274400 013514' SUB CS,RECCNT ;NO, PREPARE TO BACK-SPACE TAPE 007262' 350000 013514' INSET1: AOS RECCNT ;INCREMENT FILE COUNTER 007263' 272400 013514' ADDM CS,RECCNT ;UPDATE COUNT 007264' 623300 002000 TLZE TIO,TIOLE 007265' 072100 000010 MTAPE CHAR,10 007266' 623300 001000 TLZE TIO,TIORW ;REWIND? 007267' 072100 000001 MTAPE CHAR,1 ;YES 007270' 325400 007277' JUMPGE CS,INSET2 007271' 072100 000017 MTAPE CHAR,17 007272' 072100 000017 MTAPE CHAR,17 007273' 341400 007272' AOJL CS,.-1 007274' 072100 000000 WAIT CHAR, 007275' 061100 004000 STATO CHAR,1B24 007276' 072100 000016 MTAPE CHAR,16 007277' 365400 007276' INSET2: SOJGE CS,.-1 007300' 064100 000001 INSET3: INBUF CHAR,1 007301' 201240 014161' MOVEI ACPNTR,JOBFFI 007302' 250240 007243* EXCH ACPNTR,JOBFF 007303' 275240 014161' SUBI ACPNTR,JOBFFI 007304' 201200 000407 MOVEI ACDEL,NUMBUF*203+1 007305' 230200 000005 IDIV ACDEL,ACPNTR 007306' 064104 000000 INBUF CHAR,(ACDEL) 007307' 326140 007312' JUMPN ACEXT,INSET4 ;TAKE USER'S EXTENSION IF NON-BLANK 007310' 205140 554143 MOVSI ACEXT,(SIXBIT /MAC/) ;BLANK, TRY .MAC FIRST 007311' 260740 007425' PUSHJ PP,INSETI 007312' 260740 007425' INSET4: PUSHJ PP,INSETI 007313' 322140 010171' JUMPE ACEXT,ERRCF ;ERROR IF ZERO 007314' 603040 000010 TLNE ACDEV,TTYBIT ;TELETYPE? 007315' 060100 000001 SETSTS CHAR,AL ;YES, CHANGE TO ASCII LINE MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 136 MACRO 10 24-APR-78 02:11 I/O ROUTINES ;DO ALL ENTERS HERE FOR LEVEL D 007316' 332000 013732' SKIPE ENTERS ;HAVE ENTERS BEEN DONE ALREADY? 007317' 254000 007351' JRST ENTRDN ;YES, DON'T DO TWICE 007320' 336140 013223' SKIPN ACEXT,LSTDEV ;IS THERE A LIST DEVICE? 007321' 254000 007342' JRST LSTSE5 ;NO SO DON'T DO ENTER 007322' 336100 013333' SKIPN ACFILE,LSTDIR ;GET FILE NAME INCASE OF ERROR JRST [DEVCHR ACEXT, TLNE ACEXT,DIRBIT ;DOES IT HAVE A DIRECTORY? JRST LSTSE4 ;YES, GIVE UP BEFORE HARM IS DONE SKIPE ACFILE,INDIR ;USE INPUT FILE NAME MOVEM ACFILE,LSTDIR ;TOO BAD IF ZERO ALSO 007323' 254000 015105' JRST LSTSE4] 007324' 510140 013334' HLLZ ACEXT,LSTDIR+1 ;EXT ALSO 007325' 200200 013336' MOVE ACPPN,LSTDIR+3 ;SAVE PPN 007326' 076140 013333' LOOKUP LST,LSTDIR ;PREVIOUS ONE STILL THERE 007327' 254000 007340' JRST LSTSE4 ;NO 007330' 402000 013333' SETZM LSTDIR ;YES,CLEAR NAME 007331' 202200 013336' MOVEM ACPPN,LSTDIR+3 ;RESET PPN 007332' 055140 013333' RENAME LST,LSTDIR 007333' 070140 000000 CLOSE LST, ;IGNORE FAILURE 007334' 202100 013333' MOVEM ACFILE,LSTDIR ;RESTORE NAME 007335' 513000 013334' HLLZS LSTDIR+1 ;BH 11/19/74 FOR DATE75. CLEAR RH. 007336' 402000 013335' SETZM LSTDIR+2 ;CLEAR PROTECTION AND DATE 007337' 202200 013336' MOVEM ACPPN,LSTDIR+3 ;SET PPN AGAIN 007340' LSTSE4: 007340' 077140 013333' ENTER LST,LSTDIR ;SET UP DIRECTORY 007341' 254000 010164' JRST ERRCL ;ERROR 007342' 336140 013220' LSTSE5: SKIPN ACEXT,BINDEV ;A BINARY DEVICE THEN ? 007343' 254000 007351' JRST ENTRDN ;NO 007344' 336100 013337' SKIPN ACFILE,BINDIR ;INCASE OF ERROR JRST [DEVCHR ACEXT, TLNE ACEXT,DIRBIT ;DOES IT HAVE A DIRECTORY? JRST .+1 ;YES, GIVE UP BEFORE HARM IS DONE SKIPE ACFILE,INDIR ;USE INPUT FILE NAME MOVEM ACFILE,BINDIR ;TOO BAD IF ZERO ALSO 007345' 254000 015113' JRST .+1] 007346' 513140 013340' HLLZS ACEXT,BINDIR+1 ;BH 11/19/74 DATE75. WAS HLLZ. 007347' 077040 013337' ENTER BIN,BINDIR ;ENTER FILE NAME 007350' 254000 010166' JRST ERRCB ;ERROR 007351' 476000 013732' ENTRDN: SETOM ENTERS ;MAKE SURE ONLY DONE ONCE 007352' 200400 015121' MOVE CS,[POINT 7,DEVBUF] 007353' 261740 000001 PUSH PP,1 ;SAVE THE ACCS 007354' 261740 000002 PUSH PP,2 007355' 261740 000003 PUSH PP,3 007356' 336100 013343' SKIPN 2,INDIR ;GET INPUT NAME 007357' 254000 007412' JRST FINDEV ;FINISHED WITH DEVICE 007360' 400040 000000 SETZ 1, ;CLEAR FOR RECEIVING 007361' 246040 000006 LSHC 1,6 ;SHIFT ONE CHAR. IN 007362' 271040 000040 ADDI 1,40 ;FORM ASCII 007363' 136040 000010 IDPB 1,CS ;STORE CHAR. 007364' 326100 007360' JUMPN 2,.-4 ;MORE TO DO? 007365' 201040 000011 MOVEI 1," " ;SEPARATE BY TAB MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 136-1 MACRO 10 24-APR-78 02:11 I/O ROUTINES 007366' 136040 000010 IDPB 1,CS 007367' 510100 013344' HLLZ 2,INDIR+1 ;GET EXT 007370' 322100 007376' JUMPE 2,FINEXT ;NO EXT 007371' 400040 000000 SETZ 1, 007372' 246040 000006 LSHC 1,6 ;SAME LOOP AS ABOVE 007373' 271040 000040 ADDI 1,40 007374' 136040 000010 IDPB 1,CS 007375' 326100 007371' JUMPN 2,.-4 007376' 201040 000011 FINEXT: MOVEI 1," " 007377' 136040 000010 IDPB 1,CS ;SEPARATE BY TAB 007400' 135040 015122' LDB 1,[POINT 12,INDIR+2,35] ;GET DATE 007401' 135100 015123' LDB 2,[POINT 3,INDIR+1,20] ;BH 11/19/74 DATE75. 007402' 137100 015124' DPB 2,[POINT 3,1,23] ;BH 11/19/74 DATE75. 007403' 322040 007412' JUMPE 1,FINDEV ;NO DATE? 007404' 260740 010724' PUSHJ PP,DATOUT ;STORE IT 007405' 135100 015125' LDB 2,[POINT 11,INDIR+2,23] ;GET CREATION TIME 007406' 322100 007412' JUMPE 2,FINDEV ;NO TIME (DECTAPE) 007407' 201040 000040 MOVEI 1," " ;SEPARATE BY SPACE 007410' 136040 000010 IDPB 1,CS 007411' 260740 010710' PUSHJ PP,TIMOU1 ;STORE TIME 007412' 400040 000000 FINDEV: SETZ 1, 007413' 201100 000011 MOVEI 2," " ;FINAL TAB 007414' 136100 000010 IDPB 2,CS 007415' 136040 000010 IDPB 1,CS ;TERMINATE FOR NOW 007416' 262740 000003 POP PP,3 ;RESTORE ACCS 007417' 262740 000002 POP PP,2 007420' 262740 000001 POP PP,1 007421' 336000 014100' SKIPN PAGENO ;IF FIRST TIME THRU 007422' 254000 010703' JRST OUTFF ;START NEW PAGE 007423' 402000 014100' SETZM PAGENO ;ON NEW FILE, RESET PAGES 007424' 254000 010704' JRST OUTFF2 ;DON'T START NEW PAGE UNLESS FF 007425' 512140 013344' INSETI: HLLZM ACEXT,INDIR+1 ;STORE EXTENSION 007426' 200200 013346' MOVE ACPPN,INDIR+3 ;SAVE PPN 007427' 076100 013343' LOOKUP CHAR,INDIR 007430' 334140 013344' SKIPA ACEXT,INDIR+1 ;GET ERROR CODE 007431' 254000 003446' JRST CPOPJ1 ;SKIP-RETURN IF FOUND 007432' 602140 777777 TRNE ACEXT,-1 ;ERROR CODE OF 0 IS FILE NOT FOUND 007433' 254000 010171' JRST ERRCF ;FILE THERE BUT NOT READABLE 007434' 400140 000000 SETZ ACEXT, ;CLEAR EXT AND TRY AGAIN 007435' 202200 013346' MOVEM ACPPN,INDIR+3 ;RESTORE PPN 007436' 263740 000000 POPJ PP, MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 137 MACRO 10 24-APR-78 02:11 I/O ROUTINES 007437' 204000 015102' REC2: MOVS [XWD CTIBUF+1,CTLSAV] ;RESCAN CONTROL (FROM PASS1 END STMNT) 007440' 251000 014113' BLT CTIBUF+2 ;INPUT BUFFER 007441' 201000 000137 MOVEI "_" 007442' 506000 013347' HRLM ACDELX ;FUDGE PREVIOUS DELIMITER IFN RENTSW, 007443' 402000 013734' SETZM PASS2I 007444' 200000 014726' MOVE [XWD PASS2I,PASS2I+1] 007445' 251000 014101' BLT PASS2X-1 ;ZERO PASS2 VARIABLES 007446' 661640 000024 TLO FR,MTAPSW!LOADSW ;SET FLAGS 007447' 200000 013234' GOTEND: MOVE INDEV ;GET LAST DEVICE 007450' 047000 000004 DEVCHR ;GET ITS CHARACTERISTICS 007451' 603000 000004 TLNE 4 ;TEST FOR DIRECTORY (DSK OR DTA) 007452' 254000 007460' JRST EOT ;YES, SO DON'T WASTE TIME 007453' 254000 007456' JRST .+3 ;NO, INPUT BUFFER BY BUFFER 007454' 056100 000000 IN CHAR, 007455' 254000 007454' JRST .-1 ;NO ERRORS 007456' 061100 020000 STATO CHAR,1B22 ;TEST FOR EOF 007457' 254000 007454' JRST .-3 ;IGNORE ERRORS 007460' 260740 007473' EOT: PUSHJ PP,SAVEXS ;SAVE REGISTERS 007461' 260740 007242' PUSHJ PP,INSET ;GET THE NEXT INPUT DEVICE 007462' 561440 015126' HRROI RC,[SIXBIT /END OF PASS 1@/] ;ASSUME END OF PASS 007463' 627640 000020 TLZN FR,LOADSW ;ZERO ONLY ON END OF PASS 1 007464' 561440 015131' HRROI RC,[SIXBIT /LOAD THE NEXT FILE@/] ;NOT END OF PASS 007465' 607040 000024 TLNN ACDEV,(1B13!1B15) ;WAS ALL THAT WORK NECESSARY? 007466' 260740 010241' PUSHJ PP,TYPMSG ;YES 007467' 205440 013515' RSTRXS: MOVSI RC,SAVBLK ;SET POINTER 007470' 251440 000010 BLT RC,RC-1 ;RESTORE REGISTERS 007471' 200440 013526' MOVE RC,SAVERC ;RESTORE RC 007472' 263740 000000 POPJ PP, ;EXIT 007473' 202440 013526' SAVEXS: MOVEM RC,SAVERC ;SAVE RC 007474' 201440 013515' MOVEI RC,SAVBLK ;SET POINTER 007475' 251440 013525' BLT RC,SAVBLK+RC-1 ;BLT ALL REGISTERS BELOW RC 007476' 263740 000000 POPJ PP, ;EXIT MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 138 MACRO 10 24-APR-78 02:11 I/O ROUTINES 007477' 402000 013736' NAME1: SETZM ACDEVX ;ENTRY FOR DESTINATION 007500' 403040 013345' NAME2: SETZB ACDEV,INDIR+2 ;ENTRY FOR SOURCE 007501' 201100 000000 MOVEI ACFILE,0 ;CLEAR FILE 007502' 554200 013347' HLRZ ACDEL,ACDELX ;GET PREVIOUS DELIMITER 007503' 403300 000010 SETZB TIO,CS 007504' 403140 013346' SETZB ACEXT,INDIR+3 ;RESET EXTENSION AND PROGRAM-NUMBER PAIR 007505' 402000 014054' SETZM PPN ;CLEAR PPN 007506' 205240 440600 NAME3: MOVSI ACPNTR,(POINT 6,AC0) ;SET POINTER 007507' 634000 000000 TDZA AC0,AC0 ;CLEAR SYMBOL 007510' 260740 007630' SLASH: PUSHJ PP,SW0 007511' 260740 010076' GETIOC: PUSHJ PP,TTYIN ;GET INPUT CHARACTER 007512' 306340 000057 CAIN C,"/" 007513' 254000 007510' JRST SLASH 007514' 306340 000050 CAIN C,"(" 007515' 254000 007624' JRST SWITCH 007516' 306340 000072 CAIN C,":" 007517' 254000 007551' JRST DEVICE 007520' 306340 000056 CAIN C,"." 007521' 254000 007554' JRST NAME 007522' 302340 000041 IFN CCLSW, 007525' 302340 000033 CAIE C,33 ;CHECK FOR THREE FLAVORS OF ALT-MODE 007526' 306340 000176 CAIN C,176 ;... 007527' 254000 007560' JRST TERM ;... 007530' 307340 000015 CAIG C,CR ;LESS THAN CR? 007531' 305340 000012 CAIGE C,LF ;AND GREATER THAN LF? 007532' 306340 000175 CAIN C,175 ;OR 3RD ALTMOD 007533' 254000 007560' JRST TERM ;YES 007534' 306340 000133 IFN FTDISK, 007536' 306340 000075 CAIN C,"=" ;EQUALS IS SAME AS LEFT ARROW 007537' 644340 000142 TRCA C,142 ;SO MAKE IT A "_" AND SKIP 007540' 302340 000054 CAIE C,"," 007541' 306340 000137 CAIN C,"_" 007542' 254000 007560' JRST TERM 007543' 305340 000040 CAIGE C,40 ;VALID AS SIXBIT? JRST [CAIN C,"Z"-100 ;NO,IS IT ^Z EXIT ;YES,EXIT FOR BATCH 007544' 254000 015135' JRST GETIOC] ;JUST IGNORE 007545' 275340 000040 SUBI C,40 ;CONVERT TO 6-BIT 007546' 603240 770000 TLNE ACPNTR,770000 ;HAVE WE STORED SIX BYTES? 007547' 136340 000005 IDPB C,ACPNTR ;NO, STORE IT 007550' 254000 007511' JRST GETIOC ;GET NEXT CHARACTER 007551' 326040 007603' DEVICE: JUMPN ACDEV,ERRCM ;ERROR IF ALREADY SET 007552' 200040 000000 MOVE ACDEV,AC0 ;DEVICE NAME 007553' 254000 007556' JRST DEVNAM ;COMMON CODE 007554' 326100 007603' NAME: JUMPN ACFILE,ERRCM ;ERROR IF ALREADY SET 007555' 200100 000000 MOVE ACFILE,AC0 ;FILE NAME 007556' 200200 000007 DEVNAM: MOVE ACDEL,C ;SET DELIMITER MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 138-1 MACRO 10 24-APR-78 02:11 I/O ROUTINES 007557' 254000 007506' JRST NAME3 ;GET NEXT SYMBOL 007560' 322200 007565' TERM: JUMPE ACDEL,TERM1 ;IF NO PREVIOUS TERMINATOR, THEN FILENAME 007561' 306200 000137 CAIN ACDEL,"_" ;... 007562' 254000 007565' JRST TERM1 ;... 007563' 302200 000072 CAIE ACDEL,":" ;IF PREVIOUS DELIMITER 007564' 306200 000054 CAIN ACDEL,"," ;WAS COLON OR COMMA 007565' 200100 000000 TERM1: MOVE ACFILE,AC0 ;SET FILE 007566' 306200 000056 CAIN ACDEL,"." ;IF PERIOD, 007567' 510140 000000 HLLZ ACEXT,AC0 ;SET EXTENSION 007570' 506340 013347' HRLM C,ACDELX ;SAVE PREVIOUS DELIMITER 007571' 326040 007573' JUMPN ACDEV,.+2 ;IF DEVICE SET USE IT 007572' 334040 013736' SKIPA ACDEV,ACDEVX ;OTHERWISE USE LAST DEVICE 007573' 202040 013736' MOVEM ACDEV,ACDEVX ;AND DEVICE 007574' 200200 014054' MOVE ACPPN,PPN ;PUT PPN IN RIGHT PLACE 007575' 306340 000041 IFN FTDISK, 007602' 263740 000000 POPJ PP, ;EXIT MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 139 MACRO 10 24-APR-78 02:11 I/O ROUTINES 007603' 561440 015140' ERRCM: HRROI RC,[SIXBIT /COMMAND ERROR@/] 007604' 254000 010176' JRST ERRFIN 007605' IFN FTDISK, MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 140 MACRO 10 24-APR-78 02:11 I/O ROUTINES 007623' 260740 007631' SWITC0: PUSHJ PP,SW1 ;PROCESS CHARACTER 007624' 260740 010076' SWITCH: PUSHJ PP,TTYIN ;GET NEXT CHARACTER 007625' 302340 000051 CAIE C,")" ;END OF STRING? 007626' 254000 007623' JRST SWITC0 ;NO 007627' 254000 007511' JRST GETIOC ;YES 007630' 260740 010076' SW0: PUSHJ PP,TTYIN 007631' 201347 777677 SW1: MOVEI C,-"A"(C) ;CONVERT FROM ASCII TO NUMERIC 007632' 303340 000031 CAILE C,"Z"-"A" ;WITHIN BOUNDS? (IS IT ALPHA?) 007633' 254000 007603' JRST ERRCM ;NO, ERROR 007634' 200440 015143' MOVE RC,[POINT 4,BYTAB] 007635' 133000 000011 IBP RC 007636' 365340 007635' SOJGE C,.-1 ;MOVE TO PROPER BYTE 007637' 135340 000011 LDB C,RC ;PICK UP BYTE 007640' 322340 007603' JUMPE C,ERRCM ;TEST FOR VALID SWITCH 007641' 307340 000003 CAIG C,SWTABT-SWTAB ;LEGAL ON SOURCE? 007642' 321740 007603' JUMPL PP,ERRCM ;NO, TEST FOR SOURCE 007643' 135440 015144' LDB RC,[POINT 4,SWTAB-1(C),12] 007644' 306440 000014 CAIN RC,IO 007645' 336000 013740' SKIPN CTLSAV ;IF PASS2 OR IO SWITCH, 007646' 256007 010052' XCT SWTAB-1(C) ;EXECUTE INSTRUCTION 007647' 263740 000000 POPJ PP, ;EXIT 007650' 621600 000001 TLZ IO,IOSALL ;TAKE CARE OF /X 007651' 263740 000000 POPJ PP, DEFINE HELP (TEXT)< XLIST ASCIZ ?TEXT? LIST> HLPMES: HELP < Switches are :- */A advance one file */B backspace one file /C produce a cref listing */E list macro expansions (LALL) */F list in new format (.MFRMT) /G list in old format (.HWFRMT) /H type this text */L reinstate listing (LIST) /M suppress ascii in macro and repeat expansion (SALL) */N suppress error printout on tty /O set MLOFF pseudo-op /P increase size of the pushdown stack /Q suppress Q errors on the listing */S suppress listing (XLIST) */T rewind device */X suppress all macro expansions (XALL) */Z zero the directory Switches A,B,C,T,W,X, and Z must immediately follow the device or file to which they refer. MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 141 MACRO 10 24-APR-78 02:11 I/O ROUTINES DEFINE SETSW (LETTER,INSTRUCTION) < INSTRUCTION J= <"LETTER"-"A">-^D9*/^D9> SETCOD \I,J> DEFINE SETCOD (I,J) B<4*J+3>> 000000 BYTAB0= 0 ;INITIALIZE TABLE 000000 BYTAB1= 0 000000 BYTAB2= 0 010053' SWTAB: 010053' 661300 020000 SETSW Z, 010054' 621640 002000 SETSW C, 010055' 370000 013513' SETSW P, 010056' SWTABT: ;THE ABOVE SW'S ARE LEGAL ON OUTPUT ONLY 010056' 271400 000001 SETSW A, 010057' 275400 000001 SETSW B, 010060' 621600 004001 SETSW E, 010061' 051140 007652' SETSW H, 010062' 621600 200000 SETSW L, 010063' 661600 004001 SETSW M, 010064' 523000 013727' SETSW N, 010065' 256000 004244' SETSW O, 010066' 661640 000010 SETSW Q, 010067' 661600 200000 SETSW S, 010070' 661300 002000 SETSW T, 010071' 661300 001000 SETSW W, 010072' 665600 004000 SETSW X, 010073' BYTAB: ;BYTAB CONTAINS AN INDEX TO SWTAB ;IT CONSIST OF 9 4BIT BYTES/WORD ;OR ONE BYTE FOR EACH LETTER 010073' 212201 400160 +BYTAB0 ;A-I BYTE = 1 THROUGH 17 = INDEX 010074' 001046 531700 +BYTAB1 ;J-R BYTE = 0 = COMMAND ERROR 010075' 674003 600020 +BYTAB2 ;S-Z IF2, MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 142 MACRO 10 24-APR-78 02:11 I/O ROUTINES 010076' 375000 014113' TTYIN: SOSGE CTIBUF+2 ;ENUF CHAR.? 010077' 254000 010113' JRST TTYERR ;NO 010100' 134340 014112' ILDB C,CTIBUF+1 ;GET CHARACTER 010101' 302340 000040 CAIE C," " ;SKIP BLANKS 010102' 306340 000011 CAIN C,HT ;AND TABS 010103' 254000 010076' JRST TTYIN 010104' 306340 000015 CAIN C,15 ;CR? 010105' 402000 014113' SETZM CTIBUF+2 ;YES,IGNORE REST OF LINE 010106' 307340 000172 CAIG C,"Z"+40 ;CHECK FOR LOWER CASE 010107' 305340 000141 CAIGE C,"A"+40 010110' 263740 000000 POPJ PP, ;NO,EXIT 010111' 275340 000040 SUBI C,40 010112' 263740 000000 POPJ PP, ;YES, EXIT 010113' 336000 013234' TTYERR: SKIPN INDEV ;INPUT DEVICE SEEN? 010114' 254000 007603' JRST ERRCM ;NO, SO MISSING "_" 010115' 561440 015145' ERRNE: HRROI RC,[SIXBIT /?NO END STATEMENT ENCOUNTERED ON INPUT FILE@/] 010116' 051540 000006 ERRNE0: SKPINC V ;SEE IF WE CAN INPUT A CHAR. 010117' 255000 000000 JFCL ;BUT ONLY TO DEFEAT ^O 010120' 260740 010241' PUSHJ PP,TYPMSG ;OUTPUT IT 010121' 332000 013773' SKIPE LITLVL ;SEE IF IN LITERAL 010122' 336000 013755' SKIPN LITPG ;PAGE 0 MEANS NOT IN A LITERAL REALY 010123' 254000 010126' JRST ERRNE1 ;NO, TRY OTHERS 010124' 200300 015157' MOVE V,[XWD [SIXBIT /IN LITERAL@/],LITPG] 010125' 260740 010323' PUSHJ PP,PRNUM ;GO PRINT INFORMATION 010126' 201300 000000 ERRNE1: MOVEI V,0 ;CHECK FOR OTHER PLACES 010127' 332000 013745' SKIPE INDEF 010130' 200300 015162' MOVE V,[XWD [SIXBIT /IN DEFINE@/],DEFPG] 010131' 332000 013746' SKIPE INTXT 010132' 200300 015165' MOVE V,[XWD [SIXBIT /IN TEXT@/],TXTPG] 010133' 332000 013744' SKIPE INREP 010134' 200300 015173' MOVE V,[XWD [SIXBIT /IN CONDITIONAL OR REPEAT@/],REPPG] 010135' 332000 013747' SKIPE INCND 010136' 200300 015177' MOVE V,[XWD [SIXBIT /IN CONDITIONAL@/],CNDPG] 010137' 335000 014071' SKIPGE MACENL 010140' 200300 015203' ERRNE2: MOVE V,[XWD [SIXBIT /IN MACRO CALL@/],CALPG] 010141' 326300 010145' JUMPN V,ERRNE3 010142' 336000 013773' SKIPN LITLVL ;HAD ONE PAGE NUMBER ALREADY 010143' 334300 015204' SKIPA V,[XWD [SIXBIT /@/],PAGENO] ;BETTER THAN NOTHING 010144' 254000 010146' JRST .+2 010145' 260740 010323' ERRNE3: PUSHJ PP,PRNUM 010146' 561440 015134' HRROI RC,[SIXBIT /@/] ;WILL GET A RETURN 010147' 254000 010176' JRST ERRFIN 010150' 004562 625762 ERRMS1: SIXBIT / ERRORS DETECTED@/ 010151' 630044 456445 010152' 436445 444000 010153' 372100 456262 ERRMS2: SIXBIT /?1 ERROR DETECTED@/ 010154' 576200 444564 010155' 454364 454440 010156' 565700 456262 ERRMS3: SIXBIT /NO ERRORS DETECTED@/ 010157' 576263 004445 010160' 644543 644544 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 142-1 MACRO 10 24-APR-78 02:11 I/O ROUTINES 010161' 400000 000000 010162' 200440 015210' EINIT: MOVE RC,[XWD ACDEV,[SIXBIT /NOT AVAILABLE@/]] 010163' 254000 010176' JRST ERRFIN MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 143 MACRO 10 24-APR-78 02:11 I/O ROUTINES 010164' 550440 013334' ERRCL: HRRZ RC,LSTDIR+1 ;GET LST DEV ERROR CODE 010165' 254000 010167' JRST .+2 ;GET ERROR MESSAGE 010166' 550440 013340' ERRCB: HRRZ RC,BINDIR+1 ;GET BIN DEV ERROR CODE 010167' 326440 010173' JUMPN RC,ERRTYP 010170' 364440 010173' SOJA RC,ERRTYP ;SPECIAL CASE IF ERROR CODE 0 010171' 550440 013344' ERRCF: HRRZ RC,INDIR+1 ;GET INPUT DEV ERROR CODE 010172' 510140 013344' HLLZ ACEXT,INDIR+1 ;SET UP EXT 010173' 301440 000027 ERRTYP: CAIL RC,TABLND-TABLE ;IS ERROR CODE LEGAL? 010174' 334440 010240' SKIPA RC,TABLND ;NO, GIVE CATCH ALL MESSAGE 010175' 200451 010211' MOVE RC,TABLE(RC) ;YES, PICK UP MESSAGE 010176' 051540 000007 ERRFIN: SKPINC C ;SEE IN WE CAN INPUT A CHAR. 010177' 255000 000000 JFCL ;BUT ONLY TO DEFEAT ^O 010200' 260740 010247' PUSHJ PP,CRLF 010201' 201340 000077 MOVEI C,"?" 010202' 260740 010252' PUSHJ PP,TYO 010203' 260740 010242' PUSHJ PP,TYPMS1 010204' 070140 000000 CLOSE LST, ;GIVE USER A PARTIAL LISTING 010205' 070040 000040 CLOSE BIN,40 ;BUT NEVER A BUM REL FILE 010206' 350000 003237* IFN CCLSW, 010207' 254000 006632' JRST M 010210' 015211' 000002 [SIXBIT /(0) ILLEGAL FILE NAME@/],,ACFILE 010211' 015215' 000002 TABLE: [SIXBIT /(0) FILE WAS NOT FOUND@/],,ACFILE 010212' 015221' 000002 [SIXBIT /(1) NO DIRECTORY FOR PROJECT-PROGRAMMER NUMBER@/],,ACFILE 010213' 015231' 000002 [SIXBIT /(2) PROTECTION FAILURE@/],,ACFILE 010214' 015235' 000002 [SIXBIT /(3) FILE WAS BEING MODIFIED@/],,ACFILE 010215' 015242' 000002 [SIXBIT /(4) RENAME FILE NAME ALREADY EXISTS@/],,ACFILE 010216' 015250' 000002 [SIXBIT /(5) ILLEGAL SEQUENCE OF UUOS@/],,ACFILE 010217' 015255' 000002 [SIXBIT /(6) BAD UFD OR BAD RIB@/],,ACFILE 010220' 015261' 000002 [SIXBIT /(7) NOT A SAV FILE@/],,ACFILE 010221' 015265' 000002 [SIXBIT /(10) NOT ENOUGH CORE@/],,ACFILE 010222' 015271' 000002 [SIXBIT /(11) DEVICE NOT AVAILABLE@/],,ACFILE 010223' 015276' 000002 [SIXBIT /(12) NO SUCH DEVICE@/],,ACFILE 010224' 015302' 000002 [SIXBIT /(13) NOT TWO RELOC REG. CAPABILITY@/],,ACFILE 010225' 015310' 000002 [SIXBIT /(14) NO ROOM OR QUOTA EXCEEDED@/],,ACFILE 010226' 015316' 000002 [SIXBIT /(15) WRITE LOCK ERROR@/],,ACFILE 010227' 015322' 000002 [SIXBIT /(16) NOT ENOUGH MONITOR TABLE SPACE@/],,ACFILE 010230' 015330' 000002 [SIXBIT /(17) PARTIAL ALLOCATION ONLY@/],,ACFILE 010231' 015335' 000002 [SIXBIT /(20) BLOCK NOT FREE ON ALLOCATION@/],,ACFILE 010232' 015343' 000002 [SIXBIT /(21) CAN'T SUPERSEDE (ENTER) AN EXISTING DIRECTORY@/],,ACFILE 010233' 015354' 000002 [SIXBIT /(22) CAN'T DELETE (RENAME) A NON-EMPTY DIRECTORY@/],,ACFILE 010234' 015365' 000002 [SIXBIT /(23) SFD NOT FOUND@/],,ACFILE 010235' 015371' 000002 [SIXBIT /(24) SEARCH LIST EMPTY@/],,ACFILE 010236' 015375' 000002 [SIXBIT /(25) SFD NESTED TOO DEEPLY@/],,ACFILE 010237' 015402' 000002 [SIXBIT /(26) NO-CREATE ON FOR SPECIFIED PATH@/],,ACFILE 010240' 015411' 000002 TABLND: [SIXBIT /(?) LOOKUP, ENTER, OR RENAME ERROR@/],,ACFILE MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 144 MACRO 10 24-APR-78 02:11 I/O ROUTINES 010241' 260740 010247' TYPMSG: PUSHJ PP,CRLF ;MOVE TO NEXT LINE 010242' 554400 000011 TYPMS1: HLRZ CS,RC ;GET FIRST MESSAGE 010243' 302400 777777 CAIE CS,-1 ;SKIP IF MINUS ONE 010244' 260740 010262' PUSHJ PP,TYPM2 ;TYPE MESSAGE 010245' 550400 000011 HRRZ CS,RC ;GET SECOND HALF 010246' 260740 010262' PUSHJ PP,TYPM2 010247' 201340 000015 CRLF: MOVEI C,CR ;OUTPUT CARRIAGE RETURN 010250' 260740 010252' PUSHJ PP,TYO 010251' 201340 000012 MOVEI C,LF ;AND LINE FEED 010252' 377000 014116' TYO: SOSG CTOBUF+2 ;BUFFER FULL? 010253' 067000 000000 OUTPUT CTL,0 ;YES, DUMP IT 010254' 136340 014115' IDPB C,CTOBUF+1 ;STORE BYTE 010255' 307340 000014 CAIG C,FF ;FORM FEED? 010256' 305340 000012 CAIGE C,LF ;V TAB OR LINE FEED? 010257' 263740 000000 POPJ PP, ;NO 010260' 067000 000000 OUTPUT CTL,0 ;YES 010261' 263740 000000 POPJ PP, ;AND EXIT 010262' 205340 400000 TYPM2: MOVSI C,(1B0) ;ANTICIPATE REGISTER WORD 010263' 306400 000002 CAIN CS,ACFILE ;FILE NAME ? JRST [JUMPE ACEXT,.+1 ;YES, TEST FOR EXT LSH ACEXT,-6 ;MAKE SPACE FOR "." IOR ACEXT,[SIXBIT /. @/] 010264' 254000 015420' JRST TYPM2A] 010265' 307400 000017 CAIG CS,17 ;IS IT? 010266' 202350 000001 MOVEM C,1(CS) 010267' 505400 440600 TYPM2A: HRLI CS,(POINT 6,,) ;FORM BYTE POINTER 010270' 134340 000010 TYPM3: ILDB C,CS ;GET A SIXBIT BYTE 010271' 306340 000040 CAIN C,40 ;"@"? 010272' 254000 010252' JRST TYO ;YES, TYPE SPACE AND EXIT 010273' 271340 000040 ADDI C,40 ;NO, FORM 7-BIT ASCII 010274' 260740 010252' PUSHJ PP,TYO ;OUTPUT CHARACTER 010275' 254000 010270' JRST TYPM3 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 145 MACRO 10 24-APR-78 02:11 I/O ROUTINES 010276' 271200 002000 XCEEDS: ADDI SX,2000 ;ADJUST SYMBOL POINTER 010277' 260740 007473' XCEED: PUSHJ PP,SAVEXS ;SAVE THE REGISTERS 010300' 550040 007200* HRRZ 1,JOBREL ;GET CURRENT TOP 010301' 201001 002000 MOVEI 0,2000(1) 010302' 047000 000011 CORE 0, ;REQUEST MORE CORE 010303' 254000 010317' JRST XCEED2 ;ERROR, BOMB OUT 010304' 550100 010300* HRRZ 2,JOBREL ;GET NEW TOP 010305' 200001 000000 XCEED1: MOVE 0,0(1) ;GET ORIGIONAL 010306' 202002 000000 MOVEM 0,0(2) ;STORE IN NEW LOCATION 010307' 275100 000001 SUBI 2,1 ;DECREMENT UPPER 010310' 313040 013552' CAMLE 1,SYMBOL ;HAVE WE ARRIVED? 010311' 364040 010305' SOJA 1,XCEED1 ;NO, GET ANOTHER 010312' 201040 002000 MOVEI 1,2000 010313' 272040 013552' ADDM 1,SYMBOL 010314' 272040 013553' ADDM 1,SYMTOP 010315' 260740 013125' PUSHJ PP,SRCHI ;RE-INITIALIZE SYMBOL TABLE 010316' 254000 007467' JRST RSTRXS ;RESTORE REGISTERS AND EXIT 010317' 561440 015424' XCEED2: HRROI RC,[SIXBIT /INSUFFICIENT CORE@/] 010320' 254000 010116' JRST ERRNE0 010321' 561440 015427' PDPERR: HRROI RC,[SIXBIT .PDP OVERFLOW, TRY /P@.] 010322' 254000 010116' JRST ERRNE0 010323' 554400 000006 PRNUM: HLRZ CS,V ;GET MESSAGE 010324' 260740 010262' PUSHJ PP,TYPM2 010325' 201400 015433' MOVEI CS,[SIXBIT /ON PAGE@/] 010326' 260740 010262' PUSHJ PP,TYPM2 010327' 200006 000000 MOVE AC0,(V) ;GET PAGE 010330' 260740 010345' PUSHJ PP,DP1 ;PRINT NUMBER 010331' 201340 000040 MOVEI C,40 010332' 260740 010252' PUSHJ PP,TYO 010333' 336046 000001 SKIPN AC1,1(V) ;GET SEQ NUM IF THERE 010334' 263740 000000 POPJ PP, ;NO, RETURN 010335' 202040 014011' MOVEM AC1,OUTSQ 010336' 201400 015435' MOVEI CS,[SIXBIT /LINE@/] 010337' 260740 010262' PUSHJ PP,TYPM2 010340' 201000 014011' MOVEI AC0,OUTSQ ;PRINT IT 010341' 067000 000000 OUTPUT CTL,0 ;TO MAKE THINGS PRINT IN RIGHT ORDER 010342' 047000 000003 DDTOUT AC0, 010343' 201340 000040 MOVEI C,40 010344' 254000 010252' JRST TYO ;AND RETURN 010345' 231000 000012 DP1: IDIVI AC0,^D10 010346' 506057 000000 HRLM AC1,(PP) 010347' 322000 010351' JUMPE AC0,.+2 010350' 260740 010345' PUSHJ PP,DP1 010351' 554357 000000 HLRZ C,(PP) 010352' 271340 000060 ADDI C,"0" 010353' 254000 010252' JRST TYO MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 146 MACRO 10 24-APR-78 02:11 I/O ROUTINES 010354' 670640 000000 RIM0: TDO FR,AC0 ;SET RIM/RIM10 FLAG 010355' 603640 001000 TLNE FR,PNCHSW ;FORGET IT IF PUNCH RESET 010356' 060040 000013 SETSTS BIN,IB ;SET TO IMAGE BINARY MODE 010357' 263740 000000 POPJ PP, 010360' 250400 014050' ROUT: EXCH CS,RIMLOC 010361' 274740 015436' SUB PP,[XWD 1,1] ;CLEAR OUT STACK WFW 010362' 603640 004000 TLNE FR,R1BSW 010363' 254000 010471' JRST ROUT6 010364' 607640 000100 TLNN FR,RIM1SW 010365' 254000 010375' JRST ROUT1 010366' 322400 010375' JUMPE CS,ROUT1 ;RIM10 OUTPUT 010367' 274400 014050' SUB CS,RIMLOC 010370' 322400 010375' JUMPE CS,ROUT1 010371' 327400 003400' JUMPG CS,ERRAX 010372' 201340 000000 MOVEI C,0 010373' 260740 010405' PUSHJ PP,PTPBIN 010374' 341400 010373' AOJL CS,.-1 010375' 205340 710440 ROUT1: MOVSI C,(DATAI PTR,) ;RIM OUTPUT 010376' 540340 014000' HRR C,LOCO ;GET ADDRESS 010377' 603640 000100 TLNE FR,RIM1SW ;NO DATAI IF RIM10 010400' 354000 014050' AOSA RIMLOC 010401' 260740 010405' PUSHJ PP,PTPBIN ;OUTPUT 010402' 200340 000000 MOVE C,AC0 ;CODE 010403' 354000 014000' AOSA LOCO ;INCREMENT CURRENT LOCATION 010404' 607640 004500 OUTBIN: TLNN FR,RIMSW!RIM1SW!R1BSW ;EXIT IF RIM MODE 010405' 607640 001000 PTPBIN: TLNN FR,PNCHSW ;EXIT IF PUNCH NOT REQUESTED 010406' 263740 000000 POPJ PP, 010407' 377000 013327' SOSG BINBUF+2 ;TEST FOR BUFFER FULL 010410' 260740 010413' PUSHJ PP,DMPBIN ;YES, DUMP IT 010411' 136340 013326' IDPB C,BINBUF+1 ;DEPOSIT BYTE 010412' 263740 000000 POPJ PP, ;EXIT MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 147 MACRO 10 24-APR-78 02:11 I/O ROUTINES 010413' 057040 000000 DMPBIN: OUT BIN,0 ;DUMP THE BUFFER 010414' 263740 000000 POPJ PP, ;NO ERRORS 010415' 062040 000007 TSTBIN: GETSTS BIN,C ;GET STSTUS BITS 010416' 606340 740000 TRNN C,ERRBIT ;ERROR? 010417' 263740 000000 POPJ PP, ;NO, EXIT 010420' 200000 013220' MOVE AC0,BINDEV ;YES, GET TAG 010421' 254000 010430' JRST ERRLST ;TYPE MESSAGE AND ABORT 010422' 057140 000000 DMPLST: OUT LST,0 ;OUTPUT BUFFER 010423' 263740 000000 POPJ PP, ;NO ERRORS 010424' 062140 000007 TSTLST: GETSTS LST,C ;ANY ERRORS? 010425' 606340 740000 TRNN C,ERRBIT 010426' 263740 000000 POPJ PP, ;NO, EXIT 010427' 200000 013223' MOVE AC0,LSTDEV 010430' 205440 015437' ERRLST: MOVSI RC,[SIXBIT /OUTPUT WRITE-LOCK ERROR DEVICE@/] 010431' 602340 400000 TRNE C,IOIMPM ;IMPROPER MODE? 010432' 254000 010176' JRST ERRFIN ;YES 010433' 205440 015445' MOVSI RC,[SIXBIT /OUTPUT DATA ERROR DEVICE@/] 010434' 602340 200000 TRNE C,IODERR ;DEVICE DATA ERROR? 010435' 254000 010176' JRST ERRFIN ;YES 010436' 205440 015452' MOVSI RC,[SIXBIT /OUTPUT CHECKSUM OR PARITY ERROR DEVICE@/] 010437' 602340 100000 TRNE C,IODTER ;IS IT 010440' 254000 010176' JRST ERRFIN ;YES 010441' 200400 000000 MOVE CS,AC0 ;GET DEVICE 010442' 047400 000004 DEVCHR CS, ;FIND OUT WHAT IT IS 010443' 205440 015461' MOVSI RC,[SIXBIT /OUTPUT QUOTA EXCEEDED ON DEVICE@/] 010444' 607400 200000 TLNN CS,DSKBIT ;SKIP IF DSK OUTPUT 010445' 205440 015467' MOVSI RC,[SIXBIT /OUTPUT BLOCK TOO LARGE DEVICE@/] 010446' 254000 010176' JRST ERRFIN MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 148 MACRO 10 24-APR-78 02:11 I/O ROUTINES 010447' 460400 014023' R1BDMP: SETCM CS,R1BCNT 010450' 322400 010465' JUMPE CS,R1BI 010451' 517340 000010 HRLZS C,CS 010452' 540340 014047' HRR C,R1BLOC 010453' 541347 777777 HRRI C,-1(C) 010454' 202340 014024' MOVEM C,R1BCHK 010455' 260740 010405' PUSHJ PP,PTPBIN 010456' 541400 014025' HRRI CS,R1BBLK 010457' 200350 000000 R1BDM1: MOVE C,0(CS) 010460' 272340 014024' ADDM C,R1BCHK 010461' 260740 010405' PUSHJ PP,PTPBIN 010462' 253400 010457' AOBJN CS,R1BDM1 010463' 200340 014024' MOVE C,R1BCHK 010464' 260740 010405' PUSHJ PP,PTPBIN 010465' 476000 014023' R1BI: SETOM R1BCNT 010466' 261740 014000' PUSH PP,LOCO 010467' 262740 014047' POP PP,R1BLOC 010470' 263740 000000 POPJ PP, 010471' 312400 014050' ROUT6: CAME CS,RIMLOC 010472' 260740 010447' PUSHJ PP,R1BDMP 010473' 350340 014023' AOS C,R1BCNT 010474' 202007 014025' MOVEM AC0,R1BBLK(C) 010475' 350000 014000' AOS LOCO 010476' 306340 000021 CAIN C,.R1B-1 010477' 260740 010447' PUSHJ PP,R1BDMP 010500' 350000 014050' AOS RIMLOC 010501' 263740 000000 POPJ PP, MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 149 MACRO 10 24-APR-78 02:11 I/O ROUTINES 010502' 260740 007460' READ0: PUSHJ PP,EOT ;END OF TAPE 010503' 375000 013332' READ: SOSGE IBUF+2 ;BUFFER EMPTY? 010504' 254000 010545' JRST READ3 ;YES 010505' 134340 013331' READ1: ILDB C,IBUF+1 ;PLACE CHARACTER IN C 010506' 200420 013331' MOVE CS,@IBUF+1 ;CHECK FOR SEQUENCE NUMBER 010507' 606400 000001 TRNN CS,1 010510' 254000 010525' JRST READ1A 010511' 306400 000001 CAIN CS,1 ;CHECK FOR SPECIAL 010512' 200400 015474' MOVE CS,[+1] 010513' 202400 013214' MOVEM CS,SEQNO 010514' 202400 014101' MOVEM CS,SEQNO2 010515' 211400 000004 MOVNI CS,4 010516' 272400 013332' ADDM CS,IBUF+2 ;ADJUST WORD COUNT REPEAT 4,< IBP IBUF+1> ;SKIP SEQ NO 010517' 133000 013331' 010520' 133000 013331' 010521' 133000 013331' 010522' 133000 013331' 010523' 260740 010503' PUSHJ PP,READ ;AND THE TAB 010524' 254000 010503' JRST READ ;GET NEXT CHARACTER 010525' 322340 010503' READ1A: JUMPE C,READ ;IGNORE NULL 010526' 306340 000032 CAIN C,32 ;IF IT'S A "^Z" 010527' 201340 000012 MOVEI C,LF ;TREAT IT AS A "LF" 010530' 302340 000037 CAIE C,37 ;CONTROL _ 010531' 263740 000000 POPJ PP, 010532' 201340 000136 MOVEI C,"^" ;MAKE CONTROL-SHIFT _ VISIBLE 010533' 260740 001423' PUSHJ PP,RSW2 010534' 201340 000137 MOVEI C,"_" 010535' 260740 001423' PUSHJ PP,RSW2 010536' 260740 010503' READ2: PUSHJ PP,READ ;YES, TEST FOR LINE FEED 010537' 260740 001423' PUSHJ PP,RSW2 ;LIST IN ANY EVENT 010540' 307340 000014 CAIG C,FF ;IS IT ONE OF 010541' 305340 000012 CAIGE C,LF ;LF, VT, OR FF? 010542' 254000 010536' JRST READ2 ;NO 010543' 260740 001745' PUSHJ PP,OUTIM1 ;YES, DUMP THE LINE 010544' 254000 010503' JRST READ ;RETURN NEXT CHARACTER 010545' 056100 000000 READ3: IN CHAR,0 ;GET NEXT BUFFER 010546' 254000 010503' JRST READ ;NO ERRORS 010547' 062100 000007 GETSTS CHAR,C 010550' 606340 742000 TRNN C,ERRBIT!2000 ;ERRORS? 010551' 254000 010502' JRST READ0 ;EOF 010552' 200000 013234' MOVE AC0,INDEV 010553' 205440 015475' MOVSI RC,[SIXBIT/ INPUT PHYSICAL END OF TAPE DEVICE@/] 010554' 602340 002000 TRNE C,2000 010555' 254000 010176' JRST ERRFIN ;E-O-T 010556' 205440 015503' MOVSI RC,[SIXBIT /MONITOR DETECTED SOFTWARE INPUT ERROR DEVICE@/] 010557' 602340 400000 TRNE C,IOIMPM ;IMPROPER MODE? 010560' 254000 010176' JRST ERRFIN ;YES 010561' 205440 015513' MOVSI RC,[SIXBIT /INPUT DATA ERROR DEVICE@/] 010562' 602340 200000 TRNE C,IODERR ;DEVICE DATA ERROR? MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 149-1 MACRO 10 24-APR-78 02:11 I/O ROUTINES 010563' 254000 010176' JRST ERRFIN ;YES 010564' 205440 015517' MOVSI RC,[SIXBIT /INPUT CHECKSUM OR PARITY ERROR DEVICE@/] 010565' 606340 100000 TRNN C,IODTER 010566' 205440 015526' MOVSI RC,[SIXBIT /INPUT BLOCK TOO LARGE DEVICE@/] 010567' 254000 010176' JRST ERRFIN MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 150 MACRO 10 24-APR-78 02:11 I/O ROUTINES 010570' 260740 010571' OUTAB2: PUSHJ PP,OUTTAB ;PRINT TWO TABS 010571' 201340 000011 OUTTAB: MOVEI C,HT 010572' 302340 000015 PRINT: CAIE C,CR ;IS THIS A CR? 010573' 306340 000012 CAIN C,LF ;OR LF? 010574' 254000 010600' JRST OUTCR ;YES, GO PROCESS 010575' 306340 000014 CAIN C,FF ;FORM FEED? 010576' 254000 010703' JRST OUTFF ;YES, FORCE NEW PAGE 010577' 254000 010607' JRST OUTL 010600' 606600 777763 OUTCR: TRNN ER,ERRORS!LPTSW!TTYSW 010601' 263740 000000 POPJ PP, 010602' 201340 000015 MOVEI C,CR ;CARRIAGE RETURN, LINE FEED 010603' 260740 010607' PUSHJ PP,OUTL 010604' 375000 014003' SOSGE LPP ;END OF PAGE? 010605' 661600 000100 TLO IO,IOPAGE ;YES, SET FLAG 010606' 644340 000007 TRCA C,7 ;FORM LINE FEED AND SKIP 010607' 627600 000100 OUTL: TLZN IO,IOPAGE ;NEW PAGE REQUESTED? 010610' 254000 010663' JRST OUTC ;NO 010611' 321640 010663' JUMP1 OUTC ;YES, BYPASS IF PASS ONE 010612' 261740 000007 PUSH PP,C ;SAVE C AND CS 010613' 261740 000010 PUSH PP,CS 010614' 261740 000014 PUSH PP,ER 010615' 607600 240000 TLNN IO,IOMSTR!IOPROG 010616' 540600 013512' HRR ER,OUTSW 010617' 603600 000400 TLNE IO,IOCREF ;IF DOING CREF OUTPUT NOW 010620' 603640 002000 TLNE FR,CREFSW ;AND CREFFING (JUST IN CASE) 010621' 254000 010623' JRST .+2 010622' 260740 012674' PUSHJ PP,CLSC3 ;CLOSE IT OUT 010623' 502617 000000 HLLM IO,(PP) ;SAVE THIS NEW STATE OF IO 010624' 201340 000067 MOVEI C,.LPP 010625' 202340 014003' MOVEM C,LPP ;SET NEW COUNTER 010626' 201340 000015 MOVEI C,CR 010627' 260740 010663' PUSHJ PP,OUTC 010630' 201340 000014 MOVEI C,FF 010631' 260740 010663' PUSHJ PP,OUTC ;OUTPUT FORM FEED 010632' 201400 013701' MOVEI CS,TBUF 010633' 260740 003060' PUSHJ PP,OUTAS0 ;OUTPUT TITLE 010634' 201400 013243' MOVEI CS,VBUF 010635' 260740 003060' PUSHJ PP,OUTAS0 ;OUTPUT VERSION 010636' 201400 013236' MOVEI CS,DBUF 010637' 260740 003060' PUSHJ PP,OUTAS0 ; AND DATE 010640' 200340 014100' MOVE C,PAGENO 010641' 260740 003051' PUSHJ PP,DNC ;OUTPUT PAGE NUMBER 010642' 357000 014013' AOSG PAGEN. ;FIRST PAGE OF THIS NUMBER? 010643' 254000 010650' JRST OUTL1 ;YES 010644' 201340 000055 MOVEI C,"-" ;NO, PUT OUT MODIFIER 010645' 260740 010663' PUSHJ PP,OUTC 010646' 200340 014013' MOVE C,PAGEN. 010647' 260740 003051' PUSHJ PP,DNC 010650' 260740 010600' OUTL1: PUSHJ PP,OUTCR 010651' 201400 013721' MOVEI CS,DEVBUF 010652' 260740 003060' PUSHJ PP,OUTAS0 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 150-1 MACRO 10 24-APR-78 02:11 I/O ROUTINES 010653' 550400 013550' HRRZ CS,SUBTTX ;SWITCH FOR SUB-TITLE 010654' 332010 000000 SKIPE 0(CS) ;IS THERE A SUB-TITLE? 010655' 260740 010571' PUSHJ PP,OUTTAB ;YES, OUTPUT A TAB 010656' 260740 002503' PUSHJ PP,SOUT20 ;OUTPUT ASCII WITH CARRIAGE RETURN 010657' 260740 010600' PUSHJ PP,OUTCR 010660' 262740 000014 POP PP,ER 010661' 262740 000010 POP PP,CS ;RESTORE REGISTERS 010662' 262740 000007 POP PP,C 010663' 602600 777761 OUTC: TRNE ER,ERRORS!TTYSW 010664' 260740 010252' PUSHJ PP,TYO 010665' 606600 000002 TRNN ER,LPTSW 010666' 263740 000000 POPJ PP, 010667' 377000 013324' OUTLST: SOSG LSTBUF+2 ;BUFFER FULL? 010670' 260740 010422' PUSHJ PP,DMPLST ;YES, DUMP IT COMMENT $ REG DOESN'T LIKE THIS FEATURE ANY MORE 9-5-72 $ 010671' 136340 013323' IDPB C,LSTBUF+1 ;STORE BYTE 010672' 263740 000000 POPJ PP, ;EXIT MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 151 MACRO 10 24-APR-78 02:11 I/O ROUTINES 010673' 260740 000236' PAGE0: PUSHJ PP,STOUTS ;PAGE PSEUDO-OP 010674' 603600 000400 OUTFF1: TLNE IO,IOCREF ;CURRENTLY DOING CREF? 010675' 603600 040000 TLNE IO,IOPROG ;AND NOT XLISTED? 010676' 254000 010703' JRST OUTFF ;NO 010677' 540600 013512' HRR ER,OUTSW 010700' 260740 012674' PUSHJ PP,CLSCRF 010701' 260740 010600' PUSHJ PP,OUTCR 010702' 541600 000000 HRRI ER,0 010703' 661600 000100 OUTFF: TLO IO,IOPAGE 010704' 476000 014013' OUTFF2: SETOM PAGEN. 010705' 350000 014100' AOS PAGENO 010706' 263740 000000 POPJ PP, 010707' 231100 165140 TIMOUT: IDIVI 2,^D60*^D1000 010710' 231100 000074 TIMOU1: IDIVI 2,^D60 010711' 261740 000003 PUSH PP,3 ;SAVE MINUTES 010712' 260740 010716' PUSHJ PP,OTOD ;STORE HOURS 010713' 201140 000072 MOVEI 3,":" ;SEPARATE BY COLON 010714' 136140 000010 IDPB 3,CS 010715' 262740 000002 POP PP,2 ;STORE MINUTES 010716' 231100 000012 OTOD: IDIVI 2,^D10 010717' 271100 000060 ADDI 2,60 ;FORM ASCII 010720' 136100 000010 IDPB 2,CS 010721' 271140 000060 ADDI 3,60 010722' 136140 000010 IDPB 3,CS 010723' 263740 000000 POPJ PP, 010724' 231040 000037 DATOUT: IDIVI 1,^D31 ;GET DAY 010725' 271100 000001 ADDI 2,1 010726' 307100 000011 CAIG 2,^D9 ;TWO DIGITS? 010727' 271100 117540 ADDI 2,7760*^D10 ;NO, PUT IN SPACE 010730' 260740 010716' PUSHJ PP,OTOD ;STORE DAY 010731' 231040 000014 IDIVI 1,^D12 ;GET MONTH 010732' 200102 010740' MOVE 2,DTAB(2) ;GET MNEMONIC 010733' 136100 000010 IDPB 2,CS ;DEPOSIT RIGHT MOST 7 BITS 010734' 242100 777771 LSH 2,-7 ;SHIFT NEXT IN 010735' 326100 010733' JUMPN 2,.-2 ;DEPOSIT IFIT EXISTS 010736' 201101 000100 MOVEI 2,^D64(1) ;GET YEAR 010737' 254000 010716' JRST OTOD ;STORE IT 010740' 133164 062455 DTAB: "-NAJ-" 010741' 133024 261455 "-BEF-" 010742' 133224 063255 "-RAM-" 010743' 133225 020255 "-RPA-" 010744' 133314 063255 "-YAM-" 010745' 133165 262455 "-NUJ-" 010746' 133145 262455 "-LUJ-" 010747' 133075 260255 "-GUA-" 010750' 133204 264655 "-PES-" 010751' 133244 163655 "-TCO-" 010752' 133264 763455 "-VON-" 010753' 133034 261055 "-CED-" MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 152 MACRO 10 24-APR-78 02:11 MACHINE INSTRUCTION SEARCH ROUTINES SUBTTL MACHINE INSTRUCTION SEARCH ROUTINES IFE OPHSH,< 010754' 201440 000000 OPTSCH: MOVEI RC,0 010755' 201240 000400 MOVEI ARG,1B^L ;SET UP INDEX 010756' 201300 000200 MOVEI V,1B^L/2 ;SET UP INCREMENT 010757' 316005 011012' OPT1A: CAMN AC0,OP1TOP(ARG) ;ARE WE POINTING AT SYMBOL? 010760' 254000 010771' JRST OPT1D ;YES, GET THE CODE 010761' 322300 000455' JUMPE V,POPOUT ;TEST FOR END 010762' 311005 011012' CAML AC0,OP1TOP(ARG) ;NO, SHOULD WE MOVE DOWN? 010763' 674240 000006 TDOA ARG,V ;NO, INCREMENT 010764' 274240 000006 OPT1B: SUB ARG,V ;YES, DECREMENT 010765' 240300 777777 ASH V,-1 ;HALVE INCREMENT 010766' 307240 000770 CAIG ARG,OP1END-OP1TOP ;ARE WE OUT OF BOUNDS? 010767' 254000 010757' JRST OPT1A ;NO, TRY AGAIN 010770' 254000 010764' JRST OPT1B ;YES, BRING IT DOWN A PEG > IFN OPHSH,< OPTSCH: MOVE ARG,AC0 ;GET SIXBIT NAME TLZ ARG,400000 ;CLEAR SIGN BIT IDIVI ARG,PRIME ;REM. GOES IN V CAMN AC0,OP1TOP(V) ;ARE WE POINTING AT SYMBOL? JRST OPT1D ;YES SKIPN OP1TOP(V) ;TEST FOR END POPJ PP, ;SYMBOL NOT FOUND HLRZ RC,ARG ;SAVE LHS OF QUOTIENT SKIPA ARG,RC ;GET IT BACK OPT1A: ADDI ARG,(RC) ;INCREMENT ARG ADDI V,(ARG) ;QUADRATIC INCREASE TO V CAIL V,PRIME ;V IS MODULO PRIME JRST [SUBI V,PRIME JRST .-1] CAMN AC0,OP1TOP(V) ;IS THIS IT? JRST OPT1D ;YES SKIPE OP1TOP(V) ;END? JRST OPT1A ;TRY AGAIN POPJ PP, ;FAILED > 010771' OPT1D: IFN OPHSH,< SETZ RC, ;CLEAR RELOCATION MOVE ARG,V ;GET INDEX IN RIGHT ACC.> 010771' 231240 000004 IDIVI ARG,4 ;ARG HAS INDEX USED IN OPTTAB 010772' 135306 011007' LDB V,OPTTAB(V) ;V HAS INDEX TO OPTTAB 010773' 301300 000700 CAIL V,700 ;PSEUDO-OP OR IO INSTRUCTION? 010774' 254000 011002' JRST OPT1G ;YES 010775' 241300 777767 ROT V,-^D9 ;LEFT JUSTIFY 010776' 541300 004445' HRRI V,OP ;POINT TO BASIC FORMAT 010777' 350017 000000 OPT1F: AOS 0(PP) ;SET FOR SKIP EXIT 011000' 201140 000003 MOVEI SDEL,%OP ;SET OP-CODE CROSS-REF FLAG 011001' 254000 012621' JRST CREF ;TEST AND OUTPUT, AC0=SYMBOL, V=VALUE 011002' 327000 011005' OPT1G: JUMPG AC0,.+3 ;IF ".","$",OR "%" USE TABLE 1 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 152-1 MACRO 10 24-APR-78 02:11 MACHINE INSTRUCTION SEARCH ROUTINES 011003' 607000 200000 TLNN AC0,200000 ;PSEUDO-OP OR IO INST., TEST FOR PROPER TABLE 011004' 334306 011452' SKIPA V,OP2TAB-700(V) ;2ND TABLE, FIRST LETTER IS "A" TO "O" 011005' 200306 011406' MOVE V,OP1TAB-700(V) ;1ST TABLE, ..."P" TO "Z" 011006' 254000 010777' JRST OPT1F ;EXIT 011007' OPTTAB: 011007' 001105 012002' IFE OPHSH,< POINT 9,OP1COD-1(ARG),35> 011010' 331105 012003' POINT 9,OP1COD (ARG), 8 011011' 221105 012003' POINT 9,OP1COD (ARG),17 011012' 111105 012003' POINT 9,OP1COD (ARG),26 IFN OPHSH,< POINT 9,OP1COD (ARG),35> MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 153 MACRO 10 24-APR-78 02:11 MACHINE INSTRUCTION SEARCH ROUTINES IFDEF .XCREF,< .XCREF ;DON'T CREF THIS MESS> IFE OPHSH,< 011012' RELOC .-1 011012' OP1TOP: 011013' RELOC IF1,> IF2, < 000044 N2=^D36 000000 CC=0 012003' RELOC OP1COD 011013' RELOC DEFINE X (SYMBOL,CODE) IFE N2, > DEFINE OUTLIT < RELOC +CC RELOC N2=^D36+>> SYN X,XX ;JUST THE SAME MACRO> MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 154 MACRO 10 24-APR-78 02:11 MACHINE INSTRUCTION SEARCH ROUTINES IFN OPHSH,< DEFINE XX (SB,CD)<> ;A NUL MACRO OP1TOP: IF1,< BLOCK PRIME> IF1,> IF2,< DEFINE OPSTOR (RM)<.$'RM=.$'RM+>>> DEFINE X (SB,CD)< SXB= Q=SXB&-1_-1/PRIME R=SXB&-1_-1-Q*PRIME H=Q_-22&777 TRY=1 OPCODE=CD ITEM Q,\R IFL PRIME-TRY,> DEFINE ITEM (QT,RM)< IFN .%'RM, H=H+Q_-22&777 IFGE PRIME-,> IFE .%'RM,<.%'RM=SXB OPSTOR \>>> IF1,< DEFINE GETSYM (N)<.%'N=0> N=0 XLIST REPEAT PRIME, DEFINE GETSYM (N)<.$'N=0> N=0 REPEAT , > LIST> MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 155 MACRO 10 24-APR-78 02:11 MACHINE INSTRUCTION SEARCH ROUTINES IFN OPHSH,< ;PUT THE MOST USED OP CODES FIRST X JRST , 254 X PUSHJ , 260 X POPJ , 263 X PUSH , 261 X POP , 262 X AOS , 350 X ASCIZ , 701 X CALLI , 047 X EXTERN, 724 X INTERN, 744 X JFCL , 255 X JSP , 265 X MOVE , 200 X MOVEI , 201 X MOVEM , 202 X SETZM , 402 X SIXBIT, 717 X SOS , 370 X TLNE , 603 X TLNN , 607 X TLO , 661 X TLZ , 621 X TLZA , 625 X TLZE , 623 X TLZN , 627 X TRNE , 602 X TRNN , 606 X TRZ , 620 > MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 156 MACRO 10 24-APR-78 02:11 MACHINE INSTRUCTION SEARCH ROUTINES 011013' 414444 000000 X ADD , 270 011014' 414444 420000 X ADDB , 273 011015' 414444 510000 X ADDI , 271 011016' 414444 550000 X ADDM , 272 012003' 270273 271272 011017' 415644 000000 X AND , 404 011020' 415644 420000 X ANDB , 407 011021' 415644 434100 X ANDCA , 410 011022' 415644 434142 X ANDCAB, 413 012004' 404407 410413 011023' 415644 434151 X ANDCAI, 411 011024' 415644 434155 X ANDCAM, 412 011025' 415644 434200 X ANDCB , 440 011026' 415644 434242 X ANDCBB, 443 012005' 411412 440443 011027' 415644 434251 X ANDCBI, 441 011030' 415644 434255 X ANDCBM, 442 011031' 415644 435500 X ANDCM , 420 011032' 415644 435542 X ANDCMB, 423 012006' 441442 420423 011033' 415644 435551 X ANDCMI, 421 011034' 415644 435555 X ANDCMM, 422 011035' 415644 510000 X ANDI , 405 011036' 415644 550000 X ANDM , 406 012007' 421422 405406 011037' 415742 525600 X AOBJN , 253 011040' 415742 526000 X AOBJP , 252 011041' 415752 000000 X AOJ , 340 011042' 415752 410000 X AOJA , 344 012010' 253252 340344 011043' 415752 450000 X AOJE , 342 011044' 415752 470000 X AOJG , 347 011045' 415752 474500 X AOJGE , 345 011046' 415752 540000 X AOJL , 341 012011' 342347 345341 011047' 415752 544500 X AOJLE , 343 011050' 415752 560000 X AOJN , 346 011051' 415763 000000 XX AOS , 350 011052' 415763 410000 X AOSA , 354 012012' 343346 350354 011053' 415763 450000 X AOSE , 352 011054' 415763 470000 X AOSG , 357 011055' 415763 474500 X AOSGE , 355 011056' 415763 540000 X AOSL , 351 012013' 352357 355351 011057' 415763 544500 X AOSLE , 353 011060' 415763 560000 X AOSN , 356 011061' 416247 000000 X ARG , 320 IFN WFWSW, MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 156-1 MACRO 10 24-APR-78 02:11 MACHINE INSTRUCTION SEARCH ROUTINES IFN IIISW, 011062' 416343 515100 X ASCII , 700 012014' 353356 320700 011063' 416343 517200 XX ASCIZ , 701 011064' 416350 000000 X ASH , 240 011065' 416350 430000 X ASHC , 244 011066' 416365 606062 X ASUPPR, 705 012015' 701240 244705 011067' 425453 510000 X BLKI , 702 011070' 425453 570000 X BLKO , 703 011071' 425457 435300 X BLOCK , 704 011072' 425464 000000 X BLT , 251 012016' 702703 704251 011073' 427164 450000 X BYTE , 707 011074' 434151 000000 XX CAI , 300 011075' 434151 410000 X CAIA , 304 011076' 434151 450000 X CAIE , 302 012017' 707300 304302 011077' 434151 470000 X CAIG , 307 011100' 434151 474500 X CAIGE , 305 011101' 434151 540000 X CAIL , 301 011102' 434151 544500 X CAILE , 303 012020' 307305 301303 011103' 434151 560000 X CAIN , 306 011104' 434154 540000 X CALL , 040 011105' 434154 545100 XX CALLI , 047 011106' 434155 000000 XX CAM , 310 012021' 306040 047310 011107' 434155 410000 X CAMA , 314 011110' 434155 450000 X CAME , 312 011111' 434155 470000 X CAMG , 317 011112' 434155 474500 X CAMGE , 315 012022' 314312 317315 011113' 434155 540000 X CAML , 311 011114' 434155 544500 X CAMLE , 313 011115' 434155 560000 X CAMN , 316 011116' 435445 416200 XX CLEAR , 400 012023' 311313 316400 011117' 435445 416242 XX CLEARB, 403 011120' 435445 416251 XX CLEARI, 401 011121' 435445 416255 XX CLEARM, 402 011122' 435457 634500 X CLOSE , 070 012024' 403401 402070 011123' 435755 554556 X COMMEN, 770 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 156-2 MACRO 10 24-APR-78 02:11 MACHINE INSTRUCTION SEARCH ROUTINES 011124' 435756 510000 X CONI , 710 011125' 435756 570000 X CONO , 711 011126' 435756 635700 X CONSO , 712 012025' 770710 711712 011127' 435756 637200 X CONSZ , 713 011130' 444164 411600 XX DATA. , 020 011131' 444164 415100 X DATAI , 714 011132' 444164 415700 X DATAO , 715 012026' 713020 714715 011133' 444543 000000 X DEC , 716 011134' 444546 515645 X DEFINE, 717 011135' 444560 504163 X DEPHAS, 720 011136' 444656 000000 X DFN , 131 012027' 716717 720131 011137' 445166 000000 X DIV , 234 011140' 445166 420000 X DIVB , 237 011141' 445166 510000 X DIVI , 235 011142' 445166 550000 X DIVM , 236 012030' 234237 235236 011143' 446042 000000 X DPB , 137 011144' 446042 510000 X DPBI , 136 011145' 455644 000000 X END , 721 011146' 455664 456200 X ENTER , 077 012031' 137136 721077 011147' 455664 627100 X ENTRY , 722 011150' 456166 000000 X EQV , 444 011151' 456166 420000 X EQVB , 447 011152' 456166 510000 X EQVI , 445 012032' 722444 447445 011153' 456166 550000 X EQVM , 446 011154' 457043 500000 X EXCH , 250 011155' 457060 000000 X EXP , 723 011156' 457064 456256 XX EXTERN, 724 012033' 446250 723724 011157' 464144 000000 X FAD , 140 011160' 464144 420000 X FADB , 143 011161' 464144 540000 X FADL , 141 011162' 464144 550000 X FADM , 142 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 156-3 MACRO 10 24-APR-78 02:11 MACHINE INSTRUCTION SEARCH ROUTINES 012034' 140143 141142 011163' 464144 620000 X FADR , 144 011164' 464144 624200 X FADRB , 147 011165' 464144 625100 X FADRI , 145 011166' 464144 625500 X FADRM , 146 012035' 144147 145146 011167' 464466 000000 X FDV , 170 011170' 464466 420000 X FDVB , 173 011171' 464466 540000 X FDVL , 171 011172' 464466 550000 X FDVM , 172 012036' 170173 171172 011173' 464466 620000 X FDVR , 174 011174' 464466 624200 X FDVRB , 177 011175' 464466 625100 X FDVRI , 175 011176' 464466 625500 X FDVRM , 176 012037' 174177 175176 011177' 465156 160000 XX FIN. , 021 011200' 465560 000000 X FMP , 160 011201' 465560 420000 X FMPB , 163 011202' 465560 540000 X FMPL , 161 012040' 021160 163161 011203' 465560 550000 X FMPM , 162 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 157 MACRO 10 24-APR-78 02:11 MACHINE INSTRUCTION SEARCH ROUTINES 011204' 465560 620000 X FMPR , 164 011205' 465560 624200 X FMPRB , 167 011206' 465560 625100 X FMPRI , 165 012041' 162164 167165 011207' 465560 625500 X FMPRM , 166 011210' 466342 000000 X FSB , 150 011211' 466342 420000 X FSBB , 153 011212' 466342 540000 X FSBL , 151 012042' 166150 153151 011213' 466342 550000 X FSBM , 152 011214' 466342 620000 X FSBR , 154 011215' 466342 624200 X FSBRB , 157 011216' 466342 625100 X FSBRI , 155 012043' 152154 157155 011217' 466342 625500 X FSBRM , 156 011220' 466343 000000 X FSC , 132 011221' 474564 636463 X GETSTS, 062 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 158 MACRO 10 24-APR-78 02:11 MACHINE INSTRUCTION SEARCH ROUTINES 011222' 504154 640000 X HALT , 725 012044' 156132 062725 011223' 505163 454700 X HISEG , 706 011224' 505454 000000 X HLL , 500 011225' 505454 450000 X HLLE , 530 011226' 505454 455100 X HLLEI , 531 012045' 706500 530531 011227' 505454 455500 X HLLEM , 532 011230' 505454 456300 X HLLES , 533 011231' 505454 510000 X HLLI , 501 011232' 505454 550000 X HLLM , 502 012046' 532533 501502 011233' 505454 570000 X HLLO , 520 011234' 505454 575100 X HLLOI , 521 011235' 505454 575500 X HLLOM , 522 011236' 505454 576300 X HLLOS , 523 012047' 520521 522523 011237' 505454 630000 X HLLS , 503 011240' 505454 720000 X HLLZ , 510 011241' 505454 725100 X HLLZI , 511 011242' 505454 725500 X HLLZM , 512 012050' 503510 511512 011243' 505454 726300 X HLLZS , 513 011244' 505462 000000 X HLR , 544 011245' 505462 450000 X HLRE , 574 011246' 505462 455100 X HLREI , 575 012051' 513544 574575 011247' 505462 455500 X HLREM , 576 011250' 505462 456300 X HLRES , 577 011251' 505462 510000 X HLRI , 545 011252' 505462 550000 X HLRM , 546 012052' 576577 545546 011253' 505462 570000 X HLRO , 564 011254' 505462 575100 X HLROI , 565 011255' 505462 575500 X HLROM , 566 011256' 505462 576300 X HLROS , 567 012053' 564565 566567 011257' 505462 630000 X HLRS , 547 011260' 505462 720000 X HLRZ , 554 011261' 505462 725100 X HLRZI , 555 011262' 505462 725500 X HLRZM , 556 012054' 547554 555556 011263' 505462 726300 X HLRZS , 557 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 159 MACRO 10 24-APR-78 02:11 MACHINE INSTRUCTION SEARCH ROUTINES 011264' 506254 000000 X HRL , 504 011265' 506254 450000 X HRLE , 534 011266' 506254 455100 X HRLEI , 535 012055' 557504 534535 011267' 506254 455500 X HRLEM , 536 011270' 506254 456300 X HRLES , 537 011271' 506254 510000 X HRLI , 505 011272' 506254 550000 X HRLM , 506 012056' 536537 505506 011273' 506254 570000 X HRLO , 524 011274' 506254 575100 X HRLOI , 525 011275' 506254 575500 X HRLOM , 526 011276' 506254 576300 X HRLOS , 527 012057' 524525 526527 011277' 506254 630000 X HRLS , 507 011300' 506254 720000 X HRLZ , 514 011301' 506254 725100 X HRLZI , 515 011302' 506254 725500 X HRLZM , 516 012060' 507514 515516 011303' 506254 726300 X HRLZS , 517 011304' 506262 000000 X HRR , 540 011305' 506262 450000 X HRRE , 570 011306' 506262 455100 X HRREI , 571 012061' 517540 570571 011307' 506262 455500 X HRREM , 572 011310' 506262 456300 X HRRES , 573 011311' 506262 510000 X HRRI , 541 011312' 506262 550000 X HRRM , 542 012062' 572573 541542 011313' 506262 570000 X HRRO , 560 011314' 506262 575100 X HRROI , 561 011315' 506262 575500 X HRROM , 562 011316' 506262 576300 X HRROS , 563 012063' 560561 562563 011317' 506262 630000 X HRRS , 543 011320' 506262 720000 X HRRZ , 550 011321' 506262 725100 X HRRZI , 551 011322' 506262 725500 X HRRZM , 552 012064' 543550 551552 011323' 506262 726300 X HRRZS , 553 011324' 514260 000000 X IBP , 133 011325' 514451 660000 X IDIV , 230 011326' 514451 664200 X IDIVB , 233 012065' 553133 230233 011327' 514451 665100 X IDIVI , 231 011330' 514451 665500 X IDIVM , 232 011331' 514460 420000 X IDPB , 136 011332' 514621 000000 X IF1 , 726 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 159-1 MACRO 10 24-APR-78 02:11 MACHINE INSTRUCTION SEARCH ROUTINES 012066' 231232 136726 011333' 514622 000000 X IF2 , 727 011334' 514642 000000 X IFB , 730 011335' 514644 454600 X IFDEF , 731 011336' 514644 514600 X IFDIF , 732 012067' 727730 731732 011337' 514645 000000 X IFE , 733 011340' 514647 000000 X IFG , 734 011341' 514647 450000 X IFGE , 735 011342' 514651 445600 X IFIDN , 736 012070' 733734 735736 011343' 514654 000000 X IFL , 737 011344' 514654 450000 X IFLE , 740 011345' 514656 000000 X IFN , 741 011346' 514656 420000 X IFNB , 742 012071' 737740 741742 011347' 514656 444546 X IFNDEF, 743 011350' 515444 420000 X ILDB , 134 011351' 515565 540000 X IMUL , 220 011352' 515565 544200 X IMULB , 223 012072' 743134 220223 011353' 515565 545100 X IMULI , 221 011354' 515565 545500 X IMULM , 222 011355' 515600 000000 X IN , 056 011356' 515616 000000 XX IN. , 016 012073' 221222 056016 011357' 515642 654600 X INBUF , 064 011360' 515646 160000 XX INF. , 026 011361' 515651 640000 X INIT , 041 011362' 515660 656400 X INPUT , 066 012074' 064026 041066 IFN WFWSW, 011363' 515664 456256 XX INTERN, 744 011364' 515762 000000 X IOR , 434 011365' 515762 420000 X IORB , 437 011366' 515762 510000 X IORI , 435 012075' 744434 437435 011367' 515762 550000 X IORM , 436 011370' 515767 440000 X IOWD , 745 011371' 516260 000000 X IRP , 746 011372' 516260 430000 X IRPC , 747 012076' 436745 746747 011373' 524362 710000 X JCRY , 750 011374' 524362 712000 X JCRY0 , 751 011375' 524362 712100 X JCRY1 , 752 011376' 524556 000000 X JEN , 753 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 159-2 MACRO 10 24-APR-78 02:11 MACHINE INSTRUCTION SEARCH ROUTINES 012077' 750751 752753 011377' 524643 540000 XX JFCL , 255 011400' 524646 570000 X JFFO , 243 011401' 524657 660000 X JFOV , 765 011402' 525766 000000 X JOV , 754 012100' 255243 765754 011403' 526241 000000 X JRA , 267 011404' 526263 640000 XX JRST , 254 011405' 526263 644600 X JRSTF , 755 011406' 526341 000000 X JSA , 266 012101' 267254 755266 011407' 526360 000000 XX JSP , 265 011410' 526362 000000 X JSR , 264 011411' 526555 600000 XX JUMP , 320 011412' 526555 604100 XX JUMPA , 324 012102' 265264 320324 011413' 526555 604500 X JUMPE , 322 011414' 526555 604700 X JUMPG , 327 011415' 526555 604745 X JUMPGE, 325 011416' 526555 605400 X JUMPL , 321 012103' 322327 325321 011417' 526555 605445 X JUMPLE, 323 011420' 526555 605600 X JUMPN , 326 011421' 544154 540000 X LALL , 756 011422' 544442 000000 X LDB , 135 012104' 323326 756135 011423' 544442 510000 X LDBI , 134 011424' 545163 640000 X LIST , 757 011425' 545164 000000 X LIT , 760 011426' 545743 000000 X LOC , 761 012105' 134757 760761 011427' 545757 536560 X LOOKUP, 076 011430' 546350 000000 X LSH , 242 011431' 546350 430000 X LSHC , 246 IFN WFWSW, 011432' 555457 464600 X MLOFF , 767 012106' 076242 246767 011433' 555457 560000 X MLON , 766 011434' 555766 450000 XX MOVE , 200 011435' 555766 455100 XX MOVEI , 201 011436' 555766 455500 XX MOVEM , 202 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 159-3 MACRO 10 24-APR-78 02:11 MACHINE INSTRUCTION SEARCH ROUTINES 012107' 766200 201202 011437' 555766 456300 X MOVES , 203 011440' 555766 550000 X MOVM , 214 011441' 555766 555100 X MOVMI , 215 011442' 555766 555500 X MOVMM , 216 012110' 203214 215216 011443' 555766 556300 X MOVMS , 217 011444' 555766 560000 X MOVN , 210 011445' 555766 565100 X MOVNI , 211 011446' 555766 565500 X MOVNM , 212 012111' 217210 211212 011447' 555766 566300 X MOVNS , 213 011450' 555766 630000 X MOVS , 204 011451' 555766 635100 X MOVSI , 205 011452' 555766 635500 X MOVSM , 206 012112' 213204 205206 011453' 555766 636300 X MOVSS , 207 011454' 556441 604500 X MTAPE , 072 011455' 556457 601600 XX MTOP. , 024 011456' 556554 000000 X MUL , 224 012113' 207072 024224 011457' 556554 420000 X MULB , 227 011460' 556554 510000 X MULI , 225 011461' 556554 550000 X MULM , 226 011462' 565451 160000 XX NLI. , 031 012114' 227225 226031 011463' 565457 160000 XX NLO. , 032 011464' 565763 715500 X NOSYM , 762 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 160 MACRO 10 24-APR-78 02:11 MACHINE INSTRUCTION SEARCH ROUTINES 011465' 574364 000000 X OCT , 763 011466' 576044 454600 X OPDEF , 764 012115' 032762 763764 011467' 576045 560000 X OPEN , 050 011470' 576200 000000 X OR , 434 011471' 576242 000000 X ORB , 437 011472' 576243 410000 X ORCA , 454 012116' 050434 437454 011473' 576243 414200 X ORCAB , 457 011474' 576243 415100 X ORCAI , 455 011475' 576243 415500 X ORCAM , 456 011476' 576243 420000 X ORCB , 470 012117' 457455 456470 011477' 576243 424200 X ORCBB , 473 011500' 576243 425100 X ORCBI , 471 011501' 576243 425500 X ORCBM , 472 011502' 576243 550000 X ORCM , 464 012120' 473471 472464 011503' 576243 554200 X ORCMB , 467 011504' 576243 555100 X ORCMI , 465 011505' 576243 555500 X ORCMM , 466 011506' 576251 000000 X ORI , 435 012121' 467465 466435 011507' 576255 000000 X ORM , 436 011510' 576564 000000 X OUT , 057 011511' 576564 160000 XX OUT. , 017 011512' 576564 426546 X OUTBUF, 065 012122' 436057 017065 011513' 576564 461600 XX OUTF. , 027 011514' 576564 606564 X OUTPUT, 067 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 161 MACRO 10 24-APR-78 02:11 MACHINE INSTRUCTION SEARCH ROUTINES 011515' 604147 450000 X PAGE , 700 011516' 604163 632200 X PASS2 , 701 012123' 027067 700701 011517' 605041 634500 X PHASE , 702 011520' 605751 566400 X POINT , 703 011521' 605760 000000 XX POP , 262 011522' 605760 520000 XX POPJ , 263 012124' 702703 262263 011523' 606247 455644 X PRGEND, 714 011524' 606251 566470 X PRINTX, 704 011525' 606562 474500 X PURGE , 705 011526' 606563 500000 XX PUSH , 261 012125' 714704 705261 011527' 606563 505200 XX PUSHJ , 260 011530' 624144 517000 X RADIX , 706 011531' 624144 517025 X RADIX5, 707 011532' 624554 454163 X RELEAS, 071 012126' 260706 707071 011533' 624554 574300 X RELOC , 710 011534' 624555 416253 X REMARK, 711 011535' 624556 415545 X RENAME, 055 011536' 624560 454164 X REPEAT, 712 012127' 710711 055712 011537' 624563 456416 XX RESET., 015 011540' 625155 000000 X RIM , 715 011541' 625155 212000 X RIM10 , 735 011542' 625155 212042 X RIM10B, 736 012130' 015715 735736 011543' 625764 000000 X ROT , 241 011544' 625764 430000 X ROTC , 245 011545' 626367 000000 X RSW , 716 011546' 626442 160000 XX RTB. , 022 012131' 241245 716022 011547' 634154 540000 X SALL , 720 011550' 634541 624350 X SEARCH, 721 011551' 634564 410000 X SETA , 424 011552' 634564 414200 X SETAB , 427 012132' 720721 424427 011553' 634564 415100 X SETAI , 425 011554' 634564 415500 X SETAM , 426 011555' 634564 434100 X SETCA , 450 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 161-1 MACRO 10 24-APR-78 02:11 MACHINE INSTRUCTION SEARCH ROUTINES 011556' 634564 434142 X SETCAB, 453 012133' 425426 450453 011557' 634564 434151 X SETCAI, 451 011560' 634564 434155 X SETCAM, 452 011561' 634564 435500 X SETCM , 460 011562' 634564 435542 X SETCMB, 463 012134' 451452 460463 011563' 634564 435551 X SETCMI, 461 011564' 634564 435555 X SETCMM, 462 011565' 634564 550000 X SETM , 414 011566' 634564 554200 X SETMB , 417 012135' 461462 414417 011567' 634564 555100 X SETMI , 415 011570' 634564 555500 X SETMM , 416 011571' 634564 570000 X SETO , 474 011572' 634564 574200 X SETOB , 477 012136' 415416 474477 011573' 634564 575100 X SETOI , 475 011574' 634564 575500 X SETOM , 476 011575' 634564 636463 X SETSTS, 060 011576' 634564 720000 X SETZ , 400 012137' 475476 060400 011577' 634564 724200 X SETZB , 403 011600' 634564 725100 X SETZI , 401 011601' 634564 725500 XX SETZM , 402 011602' 635170 425164 XX SIXBIT, 717 012140' 403401 402717 011603' 635351 600000 XX SKIP , 330 011604' 635351 604100 X SKIPA , 334 011605' 635351 604500 X SKIPE , 332 011606' 635351 604700 X SKIPG , 337 012141' 330334 332337 011607' 635351 604745 X SKIPGE, 335 011610' 635351 605400 X SKIPL , 331 011611' 635351 605445 X SKIPLE, 333 011612' 635351 605600 X SKIPN , 336 012142' 335331 333336 011613' 635451 636416 XX SLIST., 025 011614' 635752 000000 X SOJ , 360 011615' 635752 410000 X SOJA , 364 011616' 635752 450000 X SOJE , 362 012143' 025360 364362 011617' 635752 470000 X SOJG , 367 011620' 635752 474500 X SOJGE , 365 011621' 635752 540000 X SOJL , 361 011622' 635752 544500 X SOJLE , 363 012144' 367365 361363 011623' 635752 560000 X SOJN , 366 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 161-2 MACRO 10 24-APR-78 02:11 MACHINE INSTRUCTION SEARCH ROUTINES 011624' 635763 000000 XX SOS , 370 011625' 635763 410000 X SOSA , 374 011626' 635763 450000 X SOSE , 372 012145' 366370 374372 011627' 635763 470000 X SOSG , 377 011630' 635763 474500 X SOSGE , 375 011631' 635763 540000 X SOSL , 371 011632' 635763 544500 X SOSLE , 373 012146' 377375 371373 011633' 635763 560000 X SOSN , 376 011634' 636165 577245 X SQUOZE, 707 011635' 636441 645700 X STATO , 061 011636' 636441 646563 X STATUS, 062 012147' 376707 061062 011637' 636441 647200 X STATZ , 063 011640' 636457 605100 X STOPI , 722 011641' 636542 000000 X SUB , 274 011642' 636542 420000 X SUBB , 277 012150' 063722 274277 011643' 636542 510000 X SUBI , 275 011644' 636542 550000 X SUBM , 276 IF2,> 011645' 636542 646454 X SUBTTL, 723 011646' 636560 606245 X SUPPRE, 713 012151' 275276 723713 011647' 637156 000000 X SYN , 724 011650' 644160 450000 X TAPE , 725 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 162 MACRO 10 24-APR-78 02:11 MACHINE INSTRUCTION SEARCH ROUTINES 011651' 644443 000000 X TDC , 650 011652' 644443 410000 X TDCA , 654 012152' 724725 650654 011653' 644443 450000 X TDCE , 652 011654' 644443 560000 X TDCN , 656 011655' 644456 000000 X TDN , 610 011656' 644456 410000 X TDNA , 614 012153' 652656 610614 011657' 644456 450000 X TDNE , 612 011660' 644456 560000 X TDNN , 616 011661' 644457 000000 X TDO , 670 011662' 644457 410000 X TDOA , 674 012154' 612616 670674 011663' 644457 450000 X TDOE , 672 011664' 644457 560000 X TDON , 676 011665' 644472 000000 X TDZ , 630 011666' 644472 410000 X TDZA , 634 012155' 672676 630634 011667' 644472 450000 X TDZE , 632 011670' 644472 560000 X TDZN , 636 011671' 645164 544500 X TITLE , 726 011672' 645443 000000 X TLC , 641 012156' 632636 726641 011673' 645443 410000 X TLCA , 645 011674' 645443 450000 X TLCE , 643 011675' 645443 560000 X TLCN , 647 011676' 645456 000000 X TLN , 601 012157' 645643 647601 011677' 645456 410000 X TLNA , 605 011700' 645456 450000 XX TLNE , 603 011701' 645456 560000 XX TLNN , 607 011702' 645457 000000 XX TLO , 661 012160' 605603 607661 011703' 645457 410000 X TLOA , 665 011704' 645457 450000 X TLOE , 663 011705' 645457 560000 X TLON , 667 011706' 645472 000000 XX TLZ , 621 012161' 665663 667621 011707' 645472 410000 XX TLZA , 625 011710' 645472 450000 XX TLZE , 623 011711' 645472 560000 XX TLZN , 627 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 163 MACRO 10 24-APR-78 02:11 MACHINE INSTRUCTION SEARCH ROUTINES 011712' 646243 000000 X TRC , 640 012162' 625623 627640 011713' 646243 410000 X TRCA , 644 011714' 646243 450000 X TRCE , 642 011715' 646243 560000 X TRCN , 646 011716' 646256 000000 X TRN , 600 012163' 644642 646600 011717' 646256 410000 X TRNA , 604 011720' 646256 450000 XX TRNE , 602 011721' 646256 560000 XX TRNN , 606 011722' 646257 000000 X TRO , 660 012164' 604602 606660 011723' 646257 410000 X TROA , 664 011724' 646257 450000 X TROE , 662 011725' 646257 560000 X TRON , 666 011726' 646272 000000 XX TRZ , 620 012165' 664662 666620 011727' 646272 410000 X TRZA , 624 011730' 646272 450000 X TRZE , 622 011731' 646272 560000 X TRZN , 626 011732' 646343 000000 X TSC , 651 012166' 624622 626651 011733' 646343 410000 X TSCA , 655 011734' 646343 450000 X TSCE , 653 011735' 646343 560000 X TSCN , 657 011736' 646356 000000 X TSN , 611 012167' 655653 657611 011737' 646356 410000 X TSNA , 615 011740' 646356 450000 X TSNE , 613 011741' 646356 560000 X TSNN , 617 011742' 646357 000000 X TSO , 671 012170' 615613 617671 011743' 646357 410000 X TSOA , 675 011744' 646357 450000 X TSOE , 673 011745' 646357 560000 X TSON , 677 011746' 646372 000000 X TSZ , 631 012171' 675673 677631 011747' 646372 410000 X TSZA , 635 011750' 646372 450000 X TSZE , 633 011751' 646372 560000 X TSZN , 637 011752' 646443 415454 X TTCALL, 051 012172' 635633 637051 011753' 646757 634547 X TWOSEG, 731 011754' 654641 000000 X UFA , 130 011755' 654745 644600 X UGETF , 073 011756' 655245 560000 X UJEN , 100 012173' 731130 073100 011757' 655651 664562 X UNIVER, 737 011760' 656345 645100 X USETI , 074 011761' 656345 645700 X USETO , 075 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 163-1 MACRO 10 24-APR-78 02:11 MACHINE INSTRUCTION SEARCH ROUTINES 011762' 664162 000000 X VAR , 727 012174' 737074 075727 011763' 676442 160000 XX WTB. , 023 011764' 704154 540000 X XALL , 732 011765' 704364 000000 X XCT , 256 011766' 705451 636400 X XLIST , 733 012175' 023732 256733 011767' 705762 000000 X XOR , 430 011770' 705762 420000 X XORB , 433 011771' 705762 510000 X XORI , 431 011772' 705762 550000 X XORM , 432 012176' 430433 431432 011773' 706065 564745 X XPUNGE, 730 011774' 706744 000000 X XWD , 734 011775' 720000 000000 X Z , 000 011776' 164362 454600 X .CREF , 740 012177' 730734 000740 011777' 165067 466255 X .HWFRM, 742 012000' 165546 625564 X .MFRMT, 743 012001' 167043 624546 X .XCREF, 741 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 164 MACRO 10 24-APR-78 02:11 MACHINE INSTRUCTION SEARCH ROUTINES IFN OPHSH,< ;NO-OPS, OLD MNEMONICS,F4 UUOS X CAI , 300 X CAM , 310 X CLEAR , 400 X CLEARB, 403 X CLEARI, 401 X CLEARM, 402 X JUMP , 320 X JUMPA , 324 X SKIP , 330 X RESET., 015 X IN. , 016 X OUT. , 017 X DATA. , 020 X FIN. , 021 X RTB. , 022 X WTB. , 023 X MTOP. , 024 X SLIST., 025 X INF. , 026 X OUTF. , 027 X NLI. , 031 X NLO. , 032 > MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 165 MACRO 10 24-APR-78 02:11 MACHINE INSTRUCTION SEARCH ROUTINES IFE OPHSH,< IF1, < BLOCK N1> 012002' 377777 777777 OP1END: -1B36 012003' OP1COD: BLOCK N1/4 012200' 742743 741000 CC> IFN OPHSH,< IF2,< DEFINE SETVAL (N) N=0 XLIST REPEAT PRIME, LIST > OP1COD: IF1,< BLOCK > IF2,< DEFINE SETVAL (N) N=0 XLIST REPEAT , > LIST> IFDEF .CREF,< .CREF ;START CREFFING AGAIN> MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 166 MACRO 10 24-APR-78 02:11 PERMANENT SYMBOLS SUBTTL PERMANENT SYMBOLS 012201' 000000 000002 SYMNUM: EXP LENGTH/2 ;NUMBER OF PERMANENT SYMBOLS DEFINE P (A,B)< SIXBIT /A/ XWD SYMF!NOOUTF,B> 012202' 400000 000000 P @, 0(SUPRBT) 012203' 500004 000000 012204' 373737 373737 P ??????, 0(SUPRBT) 012205' 500004 000000 000004 LENGTH= .-SYMNUM-1 ;LENGTH OF INITIAL SYMBOLS 012206' PRMTBL: ;PERMANENT SYMBOLS 012206' 414443 000000 P ADC, 24 012207' 500000 000024 012210' 416062 000000 P APR, 0 012211' 500000 000000 012212' 434351 000000 P CCI, 14 012213' 500000 000014 012214' 434460 000000 P CDP, 110 012215' 500000 000110 012216' 434462 000000 P CDR, 114 012217' 500000 000114 012220' 436041 000000 P CPA, 0 012221' 500000 000000 012222' 436200 000000 P CR, 150 012223' 500000 000150 012224' 444300 000000 P DC, 200 012225' 500000 000200 012226' 444363 410000 P DCSA, 300 012227' 500000 000300 012230' 444363 420000 P DCSB, 304 012231' 500000 000304 012232' 444600 000000 P DF, 270 012233' 500000 000270 012234' 445163 000000 P DIS, 130 012235' 500000 000130 012236' 445463 000000 P DLS, 240 012237' 500000 000240 012240' 446043 000000 P DPC, 250 012241' 500000 000250 012242' 446353 000000 P DSK, 170 012243' 500000 000170 012244' 446443 000000 P DTC, 320 012245' 500000 000320 012246' 446463 000000 P DTS, 324 012247' 500000 000324 012250' 546064 000000 P LPT, 124 012251' 500000 000124 012252' 554446 000000 P MDF, 260 012253' 500000 000260 012254' 556443 000000 P MTC, 220 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 166-1 MACRO 10 24-APR-78 02:11 PERMANENT SYMBOLS 012255' 500000 000220 012256' 556455 000000 P MTM, 230 012257' 500000 000230 012260' 556463 000000 P MTS, 224 012261' 500000 000224 012262' 604147 000000 P PAG, 10 012263' 500000 000010 012264' 605100 000000 P PI, 4 012265' 500000 000004 012266' 605464 000000 P PLT, 140 012267' 500000 000140 012270' 606460 000000 P PTP, 100 012271' 500000 000100 012272' 606462 000000 P PTR, 104 012273' 500000 000104 012274' 645543 000000 P TMC, 340 012275' 500000 000340 012276' 645563 000000 P TMS, 344 012277' 500000 000344 012300' 646471 000000 P TTY, 120 012301' 500000 000120 012302' 656443 000000 P UTC, 210 012303' 500000 000210 012304' 656463 000000 P UTS, 214 012305' 500000 000214 IFE LNSSW,< XLIST > LIST 012306' PRMEND: ;END OF PERMANENT SYMBOLS MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 167 MACRO 10 24-APR-78 02:11 PERMANENT SYMBOLS OPDEF ZL [Z LITF] ;INVALID IN LITERALS OPDEF ZA [Z ADDF] ;INVALID IN ADDRESSES OPDEF ZAL [Z ADDF!LITF] 012306' OP1TAB: 012306' 000000 110673' ZA PAGE0 ;PAGE 012307' 000000 303155' ZAL PASS20 ;PASS2 012310' 000000 304106' ZAL PHASE0 ;PHASE 012311' 000000 004652' Z POINT0 ;POINT 012312' 000000 103431' ZA PRNTX0 ;PRINTX 012313' 000000 104410' ZA PURGE0 ;PURGE 012314' 000000 103375' ZA RADIX0 ;RADIX 012315' 000000 004760' Z RADX50 ;RADIX50,SQUOZE 012316' 000001 304203' ZAL LOC0 (1) ;RELOC 012317' 000000 303450' ZAL REMAR0 ;REMARK 012320' 000000 105264' ZA REPEA0 ;REPEAT 012321' 000000 104250' ZA SUPRE0 ;SUPRESS 012322' 000000 305003' ZAL PSEND0 ;PRGEND 012323' 000400 310354' ZAL RIM0 (RIMSW) ;RIM 012324' 700040 004443' DATAI 0,IOP ;RSW 012325' 000001 004606' Z ASCII0 (1) ;SIXBIT 012326' 004001 303404' ZAL IOSET (IOPALL!IOSALL) ;SALL 012327' 000000 305240' ZAL SERCH0 ;SEARCH 012330' 000000 106321' ZA STOPI0 ;STOPI 012331' 440700 104311' ZA SUBTT0 (Z (POINT 7,,)) ;SUBTTL 012332' 000000 104352' ZA SYN0 ;SYN 012333' 000000 303373' ZAL TAPE0 ;TAPE 012334' 440700 104276' ZA TITLE0 (Z (POINT 7,,)) ;TITLE 012335' 000000 303546' ZAL VAR0 ;VAR 012336' 000000 004266' Z XPUNG0 ;XPUNGE 012337' 000000 303447' ZAL TWSEG0 ;TWOSEGMENTS 012340' 004000 303403' ZAL XALL0 (IOPALL) ;XALL 012341' 040000 303404' ZAL IOSET (IOPROG) ;XLIST 012342' 000000 004672' Z XWD0 ;XWD 012343' 000100 310354' ZAL RIM0 (RIM1SW) ;RIM10 012344' 004000 310354' ZAL RIM0 (R1BSW) ;RIM10B 012345' 440700 105167' ZA UNIV0 (Z (POINT 7,,)) ;UNIVERSAL 012346' 002000 303411' ZAL IORSET (IONCRF) ;.CREF 012347' 002000 303404' ZAL IOSET (IONCRF) ;.XCREF 012350' 000000 103447' ZA OFFORM ;.HWFRMT 012351' 000000 103447' ZA ONFORM ;.MFRMT MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 168 MACRO 10 24-APR-78 02:11 PERMANENT SYMBOLS 012352' OP2TAB: 012352' 000000 004606' Z ASCII0 (0) ;ASCII 012353' 400000 004606' Z ASCII0 (1B18) ;ASCIZ 012354' 700000 004443' BLKI IOP ;BLKI 012355' 700100 004443' BLKO IOP ;BLKO 012356' 000000 303415' ZAL BLOCK0 ;BLOCK 012357' 000000 104261' ZA SUPRSA ;ASUPPRESS 012360' 000000 303447' ZAL HISEG0 ;HISEG 012361' 000000 004722' Z BYTE0 ;BYTE 012362' 700240 004443' CONI IOP ;CONI 012363' 700200 004443' CONO IOP ;CONO 012364' 700340 004443' CONSO IOP ;CONSO 012365' 700300 004443' CONSZ IOP ;CONSZ 012366' 700040 004443' DATAI IOP ;DATAI 012367' 700140 004443' DATAO IOP ;DATAO 012370' 000012 004557' Z OCT0 (^D10) ;DEC 012371' 000000 105405' ZA DEFIN0 ;DEFINE 012372' 000000 304104' ZAL DEPHA0 ;DEPHASE 012373' 000000 303123' ZAL END0 ;END 012374' 000600 103766' ZA INTER0 (INTF!ENTF) ;ENTRY 012375' 000000 004556' Z EXPRES ;EXP 012376' 000000 104004' ZA EXTER0 ;EXTERN 012377' 254200 004445' JRST 4,OP ;HALT 012400' 607640 003627' TLNN FR,IFPASS ;IF1 012401' 603640 003627' TLNE FR,IFPASS ;IF2 012402' 602000 003632' TRNE AC0,IFB0 ;IFB 012403' 603240 003667' TLNE ARG,IFDEF0 ;IFDEF 012404' 000000 003677' Z IFIDN0 (0) ;IFDIF 012405' 332000 003601' SKIPE IF ;IFE 012406' 337000 003601' SKIPG IF ;IFG 012407' 335000 003601' SKIPGE IF ;IFGE 012410' 000001 003677' Z IFIDN0 (1) ;IFIDN 012411' 331000 003601' SKIPL IF ;IFL 012412' 333000 003601' SKIPLE IF ;IFLE 012413' 336000 003601' SKIPN IF ;IFN 012414' 606000 003632' TRNN AC0,IFB0 ;IFNB 012415' 607240 003667' TLNN ARG,IFDEF0 ;IFNDEF 012416' 000400 103766' ZA INTER0 (INTF) ;INTERN 012417' 000000 004710' Z IOWD0 ;IOWD 012420' 000000 006173' Z IRP0 (0) ;IRP 012421' 400000 006173' Z IRP0 (400000) ;IRPC 012422' 255300 004445' JFCL 6,OP ;JCRY 012423' 255200 004445' JFCL 4,OP ;JCRY0 012424' 255100 004445' JFCL 2,OP ;JCRY1 012425' 254500 004445' JRST 12,OP ;JEN 012426' 255400 004445' JFCL 10,OP ;JOV 012427' 254100 004445' JRST 2,OP ;JRSTF 012430' 004001 303411' ZAL IORSET (IOPALL!IOSALL) ;LALL MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 168-1 MACRO 10 24-APR-78 02:11 PERMANENT SYMBOLS 012431' 040000 303411' ZAL IORSET (IOPROG) ;LIST 012432' 000000 303454' ZAL LIT0 ;LIT 012433' 000000 304203' ZAL LOC0 (0) ;LOC 012434' 000000 104246' ZA OFFSYM ;NOSYM 012435' 000010 004557' Z OCT0 (^D8) ;OCT 012436' 000000 104053' ZA OPDEF0 ;OPDEF 012437' 255040 004445' JFCL 1,OP ;JFOV 012440' 000000 104243' ZA ONML ;MLON 012441' 000000 104244' ZA OFFML ;MLOFF 012442' 600000 004606' Z ASCII0 (3B19) ;COMMENT IFN IIISW!WFWSW,< Z ASCII0 (5B20) ;ASCID IFN WFWSW,< ZAL %ARAY ;ARRAY ZAL %INTEG ;INTEGER ZAL %LVAR ;LVAR>> MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 169 MACRO 10 24-APR-78 02:11 PERMANENT SYMBOLS 012443' CALTBL: ;USER DEFINED CALLI'S GO HERE 012443' 545147 506463 SIXBIT /LIGHTS/ ;-1 012444' 624563 456400 CALLI0: SIXBIT /RESET/ ; 0 012445' 444464 515600 SIXBIT /DDTIN/ ; 1 012446' 634564 444464 SIXBIT /SETDDT/ ; 2 012447' 444464 576564 SIXBIT /DDTOUT/ ; 3 012450' 444566 435062 SIXBIT /DEVCHR/ ; 4 012451' 444464 476400 SIXBIT /DDTGT/ ; 5 012452' 474564 435062 SIXBIT /GETCHR/ ; 6 012453' 444464 625400 SIXBIT /DDTRL/ ; 7 012454' 674151 640000 SIXBIT /WAIT/ ;10 012455' 435762 450000 SIXBIT /CORE/ ;11 012456' 457051 640000 SIXBIT /EXIT/ ;12 012457' 656460 435462 SIXBIT /UTPCLR/ ;13 012460' 444164 450000 SIXBIT /DATE/ ;14 012461' 545747 515600 SIXBIT /LOGIN/ ;15 012462' 416062 455642 SIXBIT /APRENB/ ;16 012463' 545747 576564 SIXBIT /LOGOUT/ ;17 012464' 636751 644350 SIXBIT /SWITCH/ ;20 012465' 624541 636351 SIXBIT /REASSI/ ;21 012466' 645155 456200 SIXBIT /TIMER/ ;22 012467' 556364 515545 SIXBIT /MSTIME/ ;23 012470' 474564 606056 SIXBIT /GETPPN/ ;24 012471' 646260 634564 SIXBIT /TRPSET/ ;25 012472' 646260 524556 SIXBIT /TRPJEN/ ;26 012473' 626556 645155 SIXBIT /RUNTIM/ ;27 012474' 605257 420000 SIXBIT /PJOB/ ;30 012475' 635445 456000 SIXBIT /SLEEP/ ;31 012476' 634564 605766 SIXBIT /SETPOV/ ;32 012477' 604545 530000 SIXBIT /PEEK/ ;33 012500' 474564 545156 SIXBIT /GETLIN/ ;34 012501' 626556 000000 SIXBIT /RUN/ ;35 012502' 634564 656760 SIXBIT /SETUWP/ ;36 012503' 624555 416000 SIXBIT /REMAP/ ;37 012504' 474564 634547 SIXBIT /GETSEG/ ;40 012505' 474564 644142 SIXBIT /GETTAB/ ;41 012506' 636071 000000 SIXBIT /SPY/ ;42 012507' 634564 564155 SIXBIT /SETNAM/ ;43 012510' 645560 435762 SIXBIT /TMPCOR/ ;44 012511' 446353 435062 SIXBIT /DSKCHR/ ;45 012512' 637163 636462 SIXBIT /SYSSTR/ ;46 012513' 525742 636462 SIXBIT /JOBSTR/ ;47 012514' 636462 656557 SIXBIT /STRUUO/ ;50 012515' 637163 605071 SIXBIT /SYSPHY/ ;51 012516' 466245 435056 SIXBIT /FRECHN/ ;52 012517' 444566 647160 SIXBIT /DEVTYP/ ;53 012520' 444566 636463 SIXBIT /DEVSTS/ ;54 012521' 444566 606056 SIXBIT /DEVPPN/ ;55 012522' 634545 530000 SIXBIT /SEEK/ ;56 012523' 626464 626000 SIXBIT /RTTRP/ ;57 012524' 545743 530000 SIXBIT /LOCK/ ;60 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 169-1 MACRO 10 24-APR-78 02:11 PERMANENT SYMBOLS 012525' 525742 636463 SIXBIT /JOBSTS/ ;61 012526' 545743 416445 SIXBIT /LOCATE/ ;62 012527' 675045 624500 SIXBIT /WHERE/ ;63 012530' 444566 564155 SIXBIT /DEVNAM/ ;64 012531' 436454 525742 SIXBIT /CTLJOB/ ;65 012532' 475742 636462 SIXBIT /GOBSTR/ ;66 012533' 000000 000000 0 ;67 012534' 000000 000000 0 ;70 012535' 506061 000000 SIXBIT /HPQ/ ;71 012536' 505142 456200 SIXBIT /HIBER/ ;72 012537' 674153 450000 SIXBIT /WAKE/ ;73 012540' 435047 606056 SIXBIT /CHGPPN/ ;74 012541' 634564 656557 SIXBIT /SETUUO/ ;75 012542' 444566 474556 SIXBIT /DEVGEN/ ;76 012543' 576450 656362 SIXBIT /OTHUSR/ ;77 012544' 435053 414343 SIXBIT /CHKACC/ ;100 012545' 444566 635172 SIXBIT /DEVSIZ/ ;101 012546' 444145 555756 SIXBIT /DAEMON/ ;102 012547' 525742 604553 SIXBIT /JOBPEK/ ;103 012550' 416464 414350 SIXBIT /ATTACH/ ;104 012551' 444145 465156 SIXBIT /DAEFIN/ ;105 012552' 466243 656557 SIXBIT /FRCUUO/ ;106 012553' 444566 545655 SIXBIT /DEVLNM/ ;107 012554' 604164 501600 SIXBIT /PATH./ ;110 000112 CALNTH==.-CALTBL 000001 NEGCAL==CALLI0-CALTBL ;NUMBER OF NEGATIVE CALLI'S 012555' 515643 506267 TTCTBL: SIXBIT /INCHRW/ ; 0 INPUT A CHAR. AND WAIT 012556' 576564 435062 SIXBIT /OUTCHR/ ; 1 OUTPUT A CHAR. 012557' 515643 506263 SIXBIT /INCHRS/ ; 2 INPUT A CHAR. AND SKIP 012560' 576564 636462 SIXBIT /OUTSTR/ ; 3 OUTPUT A STRING 012561' 515643 506754 SIXBIT /INCHWL/ ; 4 INPUT CHAR., WAIT, LINE MODE 012562' 515643 506354 SIXBIT /INCHSL/ ; 5 INPUT CHAR., SKIP, LINE MODE 012563' 474564 544350 SIXBIT /GETLCH/ ; 6 GET LINE CHARACTERISTICS 012564' 634564 544350 SIXBIT /SETLCH/ ; 7 SET LINE CHARACTERISTICS 012565' 624563 434156 SIXBIT /RESCAN/ ;10 RESET INPUT STREAM TO COMMAND 012566' 435462 424651 SIXBIT /CLRBFI/ ;11 CLEAR TYPEIN BUFFER 012567' 435462 424657 SIXBIT /CLRBFO/ ;12 CLEAR TYPEOUT BUFFER 012570' 635360 515643 SIXBIT /SKPINC/ ;13 SKIPS IF A CHAR. CAN BE INPUT 012571' 635360 515654 SIXBIT /SKPINL/ ;14 SKIPS IF A LINE CAN BE INPUT 012572' 515756 455765 SIXBIT /IONEOU/ ;15 OUTPUT AS AN IMAGE CHAR. 000016 TTCLTH==.-TTCTBL SUBTTL USER-DEFINED SYMBOL SEARCH ROUTINES 012573' 260740 012713' MSRCH: PUSHJ PP,SEARCH ;PERFORM GENERAL SEARCH 012574' 263740 000000 POPJ PP, ;NOT FOUND, EXIT 012575' 327240 012602' JUMPG ARG,MSRCH2 ;SKIP-EXIT AND CROSS-REF IF FOUND 012576' 312004 000001 CAME AC0,1(SX) ;WE ARE LOOKING AT SYMBOL, TRY ONE ABOVE 012577' 263740 000000 POPJ PP, ;NO, EXIT 012600' 271200 000002 ADDI SX,2 ;YES, POINT TO IT 012601' 260740 012736' PUSHJ PP,SRCH5 ;LOAD REGISTERS 012602' 354017 000000 MSRCH2: AOSA 0(PP) ;SET SKIP-EXIT MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 169-2 MACRO 10 24-APR-78 02:11 USER-DEFINED SYMBOL SEARCH ROUTINES 012603' 321240 012620' QSRCH: JUMPL ARG,SSRCH3 ;BRANCH IF OPERAND 012604' 201140 000005 MOVEI SDEL,%MAC ;SET OPERATOR FLAG 012605' 623600 000040 TLZE IO,DEFCRS ;IS IT A DEFINITION? 012606' 201140 000006 MOVEI SDEL,%DMAC ;YES 012607' 254000 012621' JRST CREF ;CROSS-REF AND EXIT 012610' 260740 012713' SSRCH: PUSHJ PP,SEARCH ;PERFORM GENERAL SEARCH 012611' 263740 000000 POPJ PP, ;NOT FOUND, EXIT 012612' 321240 012617' JUMPL ARG,SSRCH2 ;SKIP-EXIT AND CROSS-REF IF FOUND 012613' 312004 777775 SSRCH1: CAME AC0,-3(SX) ;WE ARE LOOKING AT MACRO, LOOK ONE SLOT BELOW 012614' 263740 000000 POPJ PP, ;NO DICE, EXIT 012615' 275200 000002 SUBI SX,2 ;YES, POINT TO IT 012616' 260740 012736' PUSHJ PP,SRCH5 ;LOAD REGISTERS 012617' 350017 000000 SSRCH2: AOS 0(PP) ;SET FOR SKIP-EXIT 012620' 201140 000001 SSRCH3: MOVEI SDEL,%SYM ;SET OPERAND FLAG 012621' 607600 002000 CREF: TLNN IO,IONCRF ;NO CREFFING FOR THIS SYMBOL? 012622' 603640 402000 TLNE FR,P1!CREFSW ;PASS ONE OR CROSS-REF SUPPRESSION? 012623' 263740 000000 POPJ PP, ;YES, EXIT 012624' 250140 000007 EXCH SDEL,C ;PUT FLAG IN C, SACE C 012625' 261740 000010 PUSH PP,CS 012626' 603600 000400 TLNE IO,IOCREF ;HAVE WE PUT OUT THE 177,102 012627' 254000 012641' JRST CREF3 ;YES 012630' 261740 000007 PUSH PP,C ;START OF CREF DATA MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 170 MACRO 10 24-APR-78 02:11 USER-DEFINED SYMBOL SEARCH ROUTINES REPEAT 0,< ;NEEDS CHANGE TO CREF MOVEI C,177 PUSHJ PP,OUTLST MOVEI C,102 PUSHJ PP,OUTLST TLO IO,IOCREF ;WE NOW ARE IN THAT STATE POP PP,C ;WE HAVE NOW CREF3: JUMPE C,NOFLG ;JUST CLOSE IT PUSHJ PP,OUTLST ;TYPE OF SYMBOL (%MAC,%DMAC,%SYM) MOVSI CS,770000 ;COUNT CHRS TDZA C,C ;STARTING AT 0 LSH CS,-6 ;TRY NEXT TDNE AC0,CS ;IS THAT ONE THERE? AOJA C,.-2 ;YES PUSHJ PP,OUTLST ;PRINT NUMBER OF SYMBOL CONSTITUENTS MOVE CS,AC0 CREF2: MOVEI C,0 LSHC C,6 ADDI C,40 PUSHJ PP,OUTLST ;THE ASCII SYMBOL JUMPN CS,CREF2 MOVEI C,%DSYM TLZE IO,DEFCRS PUSHJ PP,OUTLST ;MARK IT AS A DEFINING OCCURENCE NOFLG: MOVE C,SDEL POP PP,CS POPJ PP, CLSCRF: TRNN ER,LPTSW POPJ PP, ;LEAVE IF WE SHOULD NOT BE PRINTING CLSCR2: MOVEI C,177 PUSHJ PP,PRINT TLZE IO,IOCREF ;WAS IT OPEN? JRST CLSCR1 ;YES, JUST CLOSE IT MOVEI C,102 ;NO, OPEN IT FIRST PUSHJ PP,OUTLST ;MARK BEGINNING OF CREF DATA MOVEI C,177 PUSHJ PP,OUTLST CLSCR1: MOVEI C,103 JRST OUTLST ;MARK END OF CREF DATA CLSC3: TLZ IO,IOCREF MOVEI C,177 PUSHJ PP,OUTLST MOVEI C,104 JRST OUTLST ;177,104 CLOSES IT FOR NOW > ;END OF REPEAT 0 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 171 MACRO 10 24-APR-78 02:11 USER-DEFINED SYMBOL SEARCH ROUTINES REPEAT 1,< ;WORKS WITH EXISTING CREF 012631' 603600 000100 TLNE IO,IOPAGE 012632' 260740 012664' PUSHJ PP,CRFHDR ;GET CORRECT SUBTTL 012633' 201340 000177 MOVEI C,177 012634' 260740 010667' PUSHJ PP,OUTLST 012635' 201340 000102 MOVEI C,102 012636' 260740 010667' PUSHJ PP,OUTLST 012637' 661600 000400 TLO IO,IOCREF ;WE NOW ARE IN THAT STATE 012640' 262740 000007 POP PP,C ;WE HAVE NOW 012641' 260740 010667' CREF3: PUSHJ PP,OUTLST ;TYPE OF SYMBOL (%MAC,%DMAC,%SYM) 012642' 205400 770000 MOVSI CS,770000 ;COUNT CHRS 012643' 634340 000007 TDZA C,C ;STARTING AT 0 012644' 242400 777772 LSH CS,-6 ;TRY NEXT 012645' 612000 000010 TDNE AC0,CS ;IS THAT ONE THERE? 012646' 344340 012644' AOJA C,.-2 ;YES 012647' 260740 010667' PUSHJ PP,OUTLST ;PRINT NUMBER OF SYMBOL CONSTITUENTS 012650' 200400 000000 MOVE CS,AC0 012651' 201340 000000 CREF2: MOVEI C,0 012652' 246340 000006 LSHC C,6 012653' 271340 000040 ADDI C,40 012654' 260740 010667' PUSHJ PP,OUTLST ;THE ASCII SYMBOL 012655' 326400 012651' JUMPN CS,CREF2 012656' 201340 000002 MOVEI C,%DSYM 012657' 623600 000040 TLZE IO,DEFCRS 012660' 260740 010667' PUSHJ PP,OUTLST ;MARK IT AS A DEFINING OCCURENCE 012661' 200340 000003 MOVE C,SDEL 012662' 262740 000010 POP PP,CS 012663' 263740 000000 POPJ PP, IFN OPHSH,< SUBTL: SIXBIT /SUBTTL/> 012664' 312000 011645' CRFHDR: CAME AC0,SUBTL ;IS FIRST SYMBOL "SUBTTL" 012665' 254000 012672' JRST CRFHD1 ;NO 012666' 510000 000006 HLLZ AC0,V 012667' 260740 004311' PUSHJ PP,SUBTT0 ;UPDATE SUBTTL 012670' 200000 011645' MOVE AC0,SUBTL ;RESTORE ARG. 012671' 201300 003447' MOVEI V,CPOPJ 012672' 201340 000000 CRFHD1: MOVEI C,0 012673' 254000 010607' JRST OUTL 012674' CLSC3: 012674' 606600 000002 CLSCRF: TRNN ER,LPTSW 012675' 263740 000000 POPJ PP, ;LEAVE IF WE SHOULD NOT BE PRINTING 012676' 623600 000400 CLSCR2: TLZE IO,IOCREF ;FINISH UP LINE 012677' 254000 012707' JRST CLSCR1 012700' 201340 000000 MOVEI C,0 012701' 603600 000100 TLNE IO,IOPAGE ;NEW PAGE? 012702' 260740 010607' PUSHJ PP,OUTL ;YES,GIVE IT A ROUSING SENDOFF! 012703' 201340 000177 MOVEI C,177 012704' 260740 010667' PUSHJ PP,OUTLST 012705' 201340 000102 MOVEI C,102 012706' 260740 010667' PUSHJ PP,OUTLST ;MARK BEGINNING OF CREF DATA MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 171-1 MACRO 10 24-APR-78 02:11 USER-DEFINED SYMBOL SEARCH ROUTINES 012707' 201340 000177 CLSCR1: MOVEI C,177 012710' 260740 010667' PUSHJ PP,OUTLST 012711' 201340 000103 MOVEI C,103 012712' 254000 010667' JRST OUTLST ;MARK END OF CREF DATA > ;END OF REPEAT 1 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 172 MACRO 10 24-APR-78 02:11 USER-DEFINED SYMBOL SEARCH ROUTINES 012713' 554200 013547' SEARCH: HLRZ SX,SRCHX 012714' 550140 013547' HRRZ SDEL,SRCHX 012715' 311004 777777 SRCH1: CAML AC0,-1(SX) 012716' 254000 012725' JRST SRCH3 012717' 274200 000003 SRCH2: SUB SX,SDEL 012720' 242140 777777 LSH SDEL,-1 012721' 317200 013553' CAMG SX,SYMTOP 012722' 326140 012715' JUMPN SDEL,SRCH1 012723' 326140 012717' JUMPN SDEL,SRCH2 012724' 364200 012761' SOJA SX,SRCHNO ;NOT FOUND 012725' 316004 777777 SRCH3: CAMN AC0,-1(SX) 012726' 254000 012735' JRST SRCH4 ;NORMAL / FOUND EXIT 012727' 270200 000003 ADD SX,SDEL 012730' 242140 777777 LSH SDEL,-1 012731' 317200 013553' CAMG SX,SYMTOP 012732' 326140 012715' JUMPN SDEL,SRCH1 012733' 326140 012717' JUMPN SDEL,SRCH2 012734' 364200 012761' SOJA SX,SRCHNO ;NOT FOUND 012735' 350017 000000 SRCH4: AOS 0(PP) ;SET FOR SKIP EXIT 012736' 205240 000004 SRCH5: MOVSI ARG,SUPRBT ;HE IS USING IT, TURN OFF BIT 012737' 412244 000000 ANDCAM ARG,(SX) ; IN THE TABLE 012740' 200244 000000 SRCH7: MOVE ARG,0(SX) ;FLAG AND VALUE TO ARG 012741' 135440 003372' LDB RC,RCPNTR ;POINT 1,ARG,17 012742' 603240 000002 TLNE ARG,LELF ;CHECK LEFT RELOCATE 012743' 661440 000001 TLO RC,1 012744' 550300 000005 HRRZ V,ARG 012745' 603240 000010 TLNE ARG,SPTR ;CHECK SPECIAL EXTESN POINTER 012746' 254000 012752' JRST SRCH6 012747' 603240 004000 TLNE ARG,PNTF 012750' 200305 000000 MOVE V,0(ARG) ;36BIT VALUE TO V 012751' 254000 013005' JRST SRCHOK 012752' 200305 000000 SRCH6: MOVE V,0(ARG) ;VALUE 012753' 200445 000001 MOVE RC,1(ARG) ;AND RELOC 012754' 603440 777776 TLNE RC,-2 ;CHECK AND SET EXTPNT 012755' 502440 013742' HLLM RC,EXTPNT 012756' 602440 777776 TRNE RC,-2 012757' 542440 013742' HRRM RC,EXTPNT 012760' 254000 013005' JRST SRCHOK 012761' 336000 014056' SRCHNO: SKIPN UNISCH+1 ;ALLOWED TO SEARCH OTHER TABLES 012762' 263740 000000 POPJ PP, ;NO, JUST RETURN 012763' 350300 014055' AOS V,UNISCH ;GET NEXT INDEX TO TABLE 012764' 302300 000001 CAIE V,1 ;FIRST TIME IN 012765' 254000 012774' JRST SRCHN1 ;YES, SAVE SYMBOL INFO 012766' 506200 014055' HRLM SX,UNISCH ;SAVE SX AND SET FLAG 012767' 200240 013547' MOVE ARG,SRCHX ;SEARCH POINTER 012770' 202240 014147' MOVEM ARG,UNISHX ;TO A SAFE PLACE 012771' 540240 013552' HRR ARG,SYMBOL 012772' 504240 013553' HRL ARG,SYMTOP 012773' 202240 014135' MOVEM ARG,UNIPTR ;STORE ALSO MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 172-1 MACRO 10 24-APR-78 02:11 USER-DEFINED SYMBOL SEARCH ROUTINES 012774' 200306 014055' SRCHN1: MOVE V,UNISCH(V) ;GET TRUE INDEX 012775' 322300 013004' JUMPE V,SRCHKO ;IF ZERO ALL TABLE SCANNED 012776' 200246 014147' MOVE ARG,UNISHX(V) ;NEW SRCHX 012777' 202240 013547' MOVEM ARG,SRCHX ;SET IT UP 013000' 200246 014135' MOVE ARG,UNIPTR(V) ;SYMTOP,,SYMBOL 013001' 552240 013552' HRRZM ARG,SYMBOL 013002' 556240 013553' HLRZM ARG,SYMTOP 013003' 254000 012713' JRST SEARCH ;TRY AGAIN 013004' 400240 000000 SRCHKO: SETZ ARG, ;CLEAR ARG SO ZERO STORED 013005' 336000 014055' SRCHOK: SKIPN UNISCH ;HAVE WE SEARCH OTHER TABLES 013006' 263740 000000 POPJ PP, ;NO, JUST RETURN 013007' 554200 014055' SYMBCK: HLRZ SX,UNISCH ;RESTORE SX 013010' 402000 014055' SETZM UNISCH ;CLEAR SYMBCK FLAG 013011' 261740 000006 PUSH PP,V ;SAVE AN AC 013012' 200300 014147' MOVE V,UNISHX ;SRCHX 013013' 202300 013547' MOVEM V,SRCHX ;RESTORE ORIGINAL 013014' 200300 014135' MOVE V,UNIPTR ;SYMTOP,,SYMBOL 013015' 552300 013552' HRRZM V,SYMBOL 013016' 556300 013553' HLRZM V,SYMTOP 013017' 322240 013032' JUMPE ARG,SRCHK2 ;TOTALLY UNDEFINED 013020' 261740 000011 PUSH PP,RC ;SAVE SOME ACCS 013021' 261740 000005 PUSH PP,ARG 013022' 261740 013742' PUSH PP,EXTPNT 013023' 403240 013742' SETZB ARG,EXTPNT ;CLEAR ALL SYMBOL DATA 013024' 403440 000006 SETZB RC,V 013025' 260740 013036' PUSHJ PP,INSERT ;INSERT SYMBOL IN TABLE 013026' 262740 013742' POP PP,EXTPNT ;RESTORE ACCS ETC. 013027' 262740 000005 POP PP,ARG 013030' 262740 000011 POP PP,RC 013031' 202244 000000 MOVEM ARG,(SX) ;SET FLAGS AND VALUE AS IT SHOULD BE 013032' 262740 000006 SRCHK2: POP PP,V 013033' 263740 000000 POPJ PP, ;RETURN MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 173 MACRO 10 24-APR-78 02:11 USER-DEFINED SYMBOL SEARCH ROUTINES 013034' 603240 002100 INSERQ: TLNE ARG,UNDF!VARF 013035' 403440 000006 INSERZ: SETZB RC,V 013036' 312004 777777 INSERT: CAME AC0,-1(SX) ;ARE WE LOOKING AT MATCHING MNEMONIC? 013037' 254000 013047' JRST INSRT2 ;NO, JUST INSERT 013040' 321240 013044' JUMPL ARG,INSRT1 ;YES, BRANCH IF OPERAND 013041' 331004 000000 SKIPL 0(SX) ;OPERATOR, ARE WE LOOKING AT ONE? 013042' 254000 013137' JRST UPDATE ;YES, UPDATE 013043' 254000 013047' JRST INSRT2 ;NO, INSERT 013044' 337004 000000 INSRT1: SKIPG 0(SX) ;OPERAND, ARE WE LOOKING AT ONE? 013045' 254000 013137' JRST UPDATE ;YES, UPDATE 013046' 275200 000002 SUBI SX,2 ;NO, MOVE UNDER OPERATOR AND INSERT 013047' 200140 013552' INSRT2: MOVE SDEL,SYMBOL 013050' 275140 000002 SUBI SDEL,2 013051' 313140 013377' CAMLE SDEL,FREE 013052' 254000 013055' JRST INSRT3 013053' 260740 010276' PUSHJ PP,XCEEDS 013054' 271140 002000 ADDI SDEL,2000 013055' 202140 013552' INSRT3: MOVEM SDEL,SYMBOL ;MAKE ROOM FOR A TWO WORD ENTRY 013056' 505143 000002 HRLI SDEL,2(SDEL) 013057' 251144 777776 BLT SDEL,-2(SX) ;PUSH EVERYONE DOWN TWO LOACTIONS 013060' 350020 013552' AOS @SYMBOL ;INCREMENT THE SYMBOL COUNT 013061' 607440 777776 TLNN RC,-2 ;NEED SPECIAL? 013062' 602440 777776 TRNE RC,-2 ;LEFT OR RIGHT EXTERNAL? 013063' 254000 013104' JRST INSRT5 ;YES, JUMP 013064' 607300 777777 TLNN V,-1 ;SKIP IF V IS A 36BIT VALUE 013065' 254000 013074' JRST INSRT4 ;JUMP, ITS A 18BIT VALUE 013066' 350140 013377' AOS SDEL,FREE ;36BIT, SO GET A CELL FROM FREE CORE 013067' 311140 013552' CAML SDEL,SYMBOL ;MORE CORE NEEDED? 013070' 260740 010276' PUSHJ PP,XCEEDS ;YES 013071' 541243 777777 HRRI ARG,-1(SDEL) ;POINTER TO ARG 013072' 202305 000000 MOVEM V,0(ARG) ;36BIT VALUE TO FREE CORE 013073' 665240 004000 TLOA ARG,PNTF ;NOTE THAT ARG IS APOINTER, NOT A 18BIT VALUE 013074' 540240 000006 INSRT4: HRR ARG,V ;18BIT VALUE TO ARG 013075' 137440 003372' DPB RC,RCPNTR ;FIX RIGHT RELOCATION 013076' 603440 000001 TLNE RC,1 013077' 661240 000002 TLO ARG,LELF ;FIX LEFT RELOCATION 013100' 202244 000000 INSRT6: MOVEM ARG,0(SX) ;INSERT FLAGS AND VALUE. 013101' 202004 777777 MOVEM AC0,-1(SX) ;INSERT SYMBOL NAME. 013102' 260740 013125' PUSHJ PP,SRCHI ;INITILIAZE SRCHX 013103' 254000 012603' JRST QSRCH ;EXIT THROUGH CREF 013104' 201140 000002 INSRT5: MOVEI SDEL,2 ;GET TWO CELLS FROM FREE CORE 013105' 273140 013377' ADDB SDEL,FREE 013106' 311140 013552' CAML SDEL,SYMBOL;MORE CORE NEEDED? 013107' 260740 010276' PUSHJ PP,XCEEDS ;YES 013110' 202443 777777 MOVEM RC,-1(SDEL) 013111' 541243 777776 HRRI ARG,-2(SDEL) ;POINTER TO ARG 013112' 202305 000000 MOVEM V,0(ARG) 013113' 661240 000010 TLO ARG,SPTR ;SET SPECIAL POINTER, POINTS TO TWO CELLS 013114' 254000 013100' JRST INSRT6 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 174 MACRO 10 24-APR-78 02:11 USER-DEFINED SYMBOL SEARCH ROUTINES 013115' 275200 000002 REMOVE: SUBI SX,2 ;MOVE EVERYONE UP TWO LOCATIONS 013116' 200004 000000 REMOV1: MOVE 0(SX) 013117' 202004 000002 MOVEM 2(SX) ;OVERWRITE THE DELETED SYMBOL 013120' 312200 013552' CAME SX,SYMBOL ;SKIP WHEN DONE 013121' 364200 013116' SOJA SX,REMOV1 013122' 271200 000002 ADDI SX,2 013123' 202200 013552' MOVEM SX,SYMBOL 013124' 370004 000000 SOS 0(SX) ;DECREMENT THE SYMBOL COUNT 013125' 201100 000000 SRCHI: MOVEI AC2,0 ;THIS CODE SETS UP SRCHX 013126' 140120 013552' FAD AC2,@SYMBOL 013127' 242100 777745 LSH AC2,-^D27 013130' 201040 001000 MOVEI AC1,1000 013131' 242042 777421 LSH AC1,-357(AC2) 013132' 542040 013547' HRRM AC1,SRCHX 013133' 242040 000001 LSH AC1,1 013134' 270040 013552' ADD AC1,SYMBOL 013135' 506040 013547' HRLM AC1,SRCHX 013136' 263740 000000 POPJ PP, ;SRCHX=XWD ,LENGTH/4 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 175 MACRO 10 24-APR-78 02:11 USER-DEFINED SYMBOL SEARCH ROUTINES 013137' 137440 003372' UPDATE: DPB RC,RCPNTR ;FIX RIGHT RELOCATION 013140' 603240 000010 TLNE ARG,SPTR ;SKIP IF THERE IS NO SPECIAL POINTER 013141' 254000 013171' JRST UPDAT4 ;YES, USE THE TWO CELLS 013142' 607440 777776 TLNN RC,-2 ;NEED TO CHANGE 013143' 602440 777776 TRNE RC,-2 ;ANY CURRENT EXTERNS? 013144' 254000 013175' JRST UPDAT5 ;YES ,JUMP 013145' 621240 000002 TLZ ARG,LELF ;CLEAR LELF 013146' 603440 000001 TLNE RC,1 ;LEFT RELOCATABLE? 013147' 661240 000002 TLO ARG,LELF ;YES, SET THE FLAG 013150' 603240 004000 TLNE ARG,PNTF ;WAS THERE A 36BIT VALUE? 013151' 254000 013164' JRST UPDAT2 ;YES, USE IT. 013152' 603300 777777 TLNE V,-1 ;NO,IS THERE A 36BIT VALUE? 013153' 254000 013157' JRST UPDAT1 ;YES, GET A CELL 013154' 540240 000006 HRR ARG,V ;NO, USE RH OF ARG 013155' 202244 000000 UPDAT3: MOVEM ARG,0(SX) ;OVERWRITE THE ONE IN THE TABLE 013156' 263740 000000 POPJ PP, ;AND EXIT 013157' 350140 013377' UPDAT1: AOS SDEL,FREE ;GET ONE CELL 013160' 311140 013552' CAML SDEL,SYMBOL ;NEED MORE CORE? 013161' 260740 010276' PUSHJ PP,XCEEDS ;YES 013162' 541243 777777 HRRI ARG,-1(SDEL) ;POINTER TO ARG 013163' 661240 004000 TLO ARG,PNTF ;AND NOTE IT. 013164' 603240 001000 UPDAT2: TLNE ARG,EXTF ;IS THERE A EXTERNAL? 013165' 254000 013155' JRST UPDAT3 ;YES, - JUST SAVE A LOCATION 013166' 202244 000000 MOVEM ARG,0(SX) ;NO, OVERWRITE THE POINTER IN THE TABLE 013167' 202305 000000 MOVEM V,0(ARG) ;STORE VALUE AS A 36BIT VALUE 013170' 263740 000000 POPJ PP, ;AND EXIT 013171' 202244 000000 UPDAT4: MOVEM ARG,0(SX) ;WE HAVE TWO CELLS, WE USE THEM 013172' 202305 000000 MOVEM V,0(ARG) ;SAVE AS 36BIT VALUE 013173' 202445 000001 MOVEM RC,1(ARG) ;SAVE RELOCATION BITS 013174' 263740 000000 POPJ PP, ;AND EXIT 013175' 201140 000002 UPDAT5: MOVEI SDEL,2 ;THERE IS A EXTERNAL 013176' 273140 013377' ADDB SDEL,FREE ;SO WE NEED TWO LOACTIONS 013177' 311140 013552' CAML SDEL,SYMBOL ;NEED MORE CORE? 013200' 260740 010276' PUSHJ PP,XCEEDS ;YES 013201' 202443 777777 MOVEM RC,-1(SDEL) ;SAVE RELOCATION BITS 013202' 541243 777776 HRRI ARG,-2(SDEL) ;SAVE THE POINTER IN ARG 013203' 202305 000000 MOVEM V,0(ARG) ;SAVE A 36BIT VALUE 013204' 661240 000010 TLO ARG,SPTR ;SET SPECIAL PNTR FLAG 013205' 621240 004000 TLZ ARG,PNTF ;CLEAR POINTER FLAG 013206' 254000 013155' JRST UPDAT3 ;SAVE THE POINTER AND EXIT MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 176 MACRO 10 24-APR-78 02:11 CONSTANTS SUBTTL CONSTANTS MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 177 MACRO 10 24-APR-78 02:11 PHASED CODE SUBTTL PHASED CODE SUBTTL PHASED CODE 013207' LSTFIL: BLOCK 1 013210' 400000 000000 SIXBIT /@/ ;SYMBOL TO STOP PRINTING 013211' TAG: BLOCK 1 013212' 001300 400000 SIXBIT / + @/ 013213' TABI: 013213' 000221 104422 BYTE (7) 0, 11, 11, 11, 11 013214' SEQNO: BLOCK 1 013215' 201004 020100 ASCIZ / / 013216' 201000 000000 013217' 000000 000014 BININI: EXP B 013220' BINDEV: BLOCK 1 013221' 013325' 000000 XWD BINBUF,0 013222' 000000 000001 LSTINI: EXP AL 013223' LSTDEV: BLOCK 1 013224' 013322' 000000 XWD LSTBUF,0 IFN CCLSW,< 013225' 000000 000016 NUNINI: EXP DMP 013226' NUNDEV: BLOCK 1 013227' 000000 000000 XWD 0,0 013230' 000000 000001 RPGINI: EXP AL 013231' RPGDEV: BLOCK 1 013232' 000000 014106' XWD 0,CTLBLK > 013233' 000000 000000 INDEVI: EXP A 013234' INDEV: BLOCK 1 013235' 000000 013330' XWD 0,IBUF 013236' 202511 135232 DBUF: ASCIZ / TI:ME DY-MON-YR PAGE / 013237' 425010 454532 013240' 466371 626662 013241' 511012 040616 013242' 425000 000000 013243' 046330 141644 VBUF: ASCIZ / MACRO / ;MUST BE LAST LOCATIONS IN BLOCK 013244' 475000 000000 013245' BLOCK 3 ;ALLOW FOR LONG TITLE MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 178 MACRO 10 24-APR-78 02:11 STORAGE CELLS SUBTTL STORAGE CELLS 013250' PASS1I: 013250' RP: BLOCK 1 IFE CCLSW, 013251' IFN CCLSW,/5 > 013322' LSTBUF: BLOCK 3 013325' BINBUF: BLOCK 3 013330' IBUF: BLOCK 3 013333' IFN CCLSW, 013333' LSTDIR: BLOCK 4 013337' BINDIR: BLOCK 4 013343' INDIR: BLOCK 4 013347' ACDELX: ;LEFT HALF 013347' BLKTYP: BLOCK 1 ;RIGHT HALF 013350' COUTX: BLOCK 1 013351' COUTY: BLOCK 1 013352' COUTP: BLOCK 1 013353' COUTRB: BLOCK 1 013354' COUTDB: BLOCK ^D18 013376' ERRCNT: BLOCK 1 013377' FREE: BLOCK 1 IFN RENTSW, 013400' IFBLK: BLOCK .IFBLK 013424' IFBLKA: BLOCK .IFBLK 013450' LADR: BLOCK 1 013451' NCOLLS: BLOCK 1 013452' LIMBO: BLOCK 1 013453' LBUFP: BLOCK 1 013454' LBUF: BLOCK <.CPL+5>/5 013476' BLOCK 1 013477' VARHD: BLOCK 1 013500' VARHDX: BLOCK 1 IFN WFWSW, 013501' LITAB: BLOCK 1 013502' LITABX: BLOCK 1 013503' BLOCK 1 013504' LITHD: BLOCK 1 013505' LITHDX: BLOCK 1 013506' LITCNT: BLOCK 1 013507' LITNUM: BLOCK 1 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 178-1 MACRO 10 24-APR-78 02:11 STORAGE CELLS 013510' LOOKX: BLOCK 1 013511' NEXT: BLOCK 1 013512' OUTSW: BLOCK 1 013513' PDP: BLOCK 1 013514' RECCNT: BLOCK 1 013515' SAVBLK: BLOCK RC 013526' SAVERC: BLOCK 1 013527' SBUF: BLOCK .SBUF/5 013547' SRCHX: BLOCK 1 013550' SUBTTX: BLOCK 1 013551' SVSYM: BLOCK 1 013552' SYMBOL: BLOCK 1 013553' SYMTOP: BLOCK 1 013554' SYMCNT: BLOCK 1 013555' STPX: BLOCK 1 013556' STPY: BLOCK 1 013557' STCODE: BLOCK .STP 013627' STOWRC: BLOCK .STP 013677' TABP: BLOCK 1 013700' TCNT: BLOCK 1 ;COUNT OF CHARS. LEFT IN TBUF 013701' TBUF: BLOCK .TBUF/5 013721' DEVBUF: BLOCK 6 ;STORE NAME.EXT CREATION DATE AND TIME 013727' TYPERR: BLOCK 1 013730' IONSYM: BLOCK 1 ;-1 SUPRESS LISTING OF SYMBOLS 013731' PRGPTR: BLOCK 1 ;POINTER TO CHAIN OF PRGEND BLOCKS 013732' ENTERS: BLOCK 1 ;-1 WHEN ENTERS HAVE BEEN DONE 013733' UNIVSN: BLOCK 1 ;-1 WHEN A UNIVERSAL SEEN MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 179 MACRO 10 24-APR-78 02:11 STORAGE CELLS 013734' PASS2I: 013734' ABSHI: BLOCK 1 013735' HIGH: BLOCK 1 IFN RENTSW, 013736' ACDEVX: BLOCK 1 013737' CPL: BLOCK 1 013740' CTLSAV: BLOCK 1 013741' CTLS1: BLOCK 1 013742' EXTPNT: BLOCK 1 013743' INTENT: BLOCK 1 013744' INREP: BLOCK 1 013745' INDEF: BLOCK 1 013746' INTXT: BLOCK 1 013747' INCND: BLOCK 1 013750' CALNAM: BLOCK 1 013751' CALPG: BLOCK 1 013752' CALSEQ: BLOCK 1 013753' DEFPG: BLOCK 1 013754' DEFSEQ: BLOCK 1 013755' LITPG: BLOCK 1 013756' LITSEQ: BLOCK 1 013757' REPPG: BLOCK 1 013760' REPSEQ: BLOCK 1 013761' TXTPG: BLOCK 1 013762' TXTSEQ: BLOCK 1 013763' CNDPG: BLOCK 1 013764' CNDSEQ: BLOCK 1 013765' IRPCNT: BLOCK 1 013766' IRPARG: BLOCK 1 013767' IRPARP: BLOCK 1 013770' IRPCF: BLOCK 1 013771' IRPPOI: BLOCK 1 013772' IRPSW: BLOCK 1 IFN WFWSW, 013773' LITLVL: BLOCK 1 013774' LITLBL: BLOCK 1 ;NAME OF LABEL DEFINED INSIDE A LITERAL 013775' ASGBLK: BLOCK 1 013776' LOCBLK: BLOCK 1 013777' LOCA: BLOCK 1 014000' LOCO: BLOCK 1 014001' RELLOC: BLOCK 1 014002' ABSLOC: BLOCK 1 014003' LPP: BLOCK 1 014004' MODA: BLOCK 1 014005' MODLOC: BLOCK 1 014006' MODO: BLOCK 1 014007' IFN CCLSW, 014011' OUTSQ: BLOCK 2 014013' PAGEN.: BLOCK 1 014014' PPTEMP: BLOCK 1 MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 179-1 MACRO 10 24-APR-78 02:11 STORAGE CELLS 014015' PPTMP1: BLOCK 1 014016' PPTMP2: BLOCK 1 014017' REPCNT: BLOCK 1 014020' REPEXP: BLOCK 1 014021' REPPNT: BLOCK 1 014022' RPOLVL: BLOCK 1 014023' R1BCNT: BLOCK 1 014024' R1BCHK: BLOCK 1 014025' R1BBLK: BLOCK .R1B 014047' R1BLOC: BLOCK 1 014050' RIMLOC: BLOCK 1 014051' TAGINC: BLOCK 1 014052' VECREL: BLOCK 1 014053' VECTOR: BLOCK 1 014054' .TEMP: BLOCK 1 ;TEMPORARY STORAGE 014055' UNISCH: BLOCK .UNIV ;SEARCH TABLE FOR UNIVERSALS 014067' SQFLG: BLOCK 1 014070' ARGF: BLOCK 1 014071' MACENL: BLOCK 1 014072' MACLVL: BLOCK 1 014073' MACPNT: BLOCK 1 014074' WWRXX: BLOCK 1 014075' RCOUNT: BLOCK 1 ;COUNT OF WORDS STILL TO READ IN LEAF 014076' WCOUNT: BLOCK 1 ;COUNT OF WORDS STILL FREE IN LEAF 014077' PASS2Z: ;ONLY CLEAR TO HERE ON PRGEND 014077' LSTSYM: BLOCK 1 014100' PAGENO: BLOCK 1 014101' SEQNO2: BLOCK 1 014102' PASS2X: MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 180 MACRO 10 24-APR-78 02:11 MULTI-ASSEMBLY STORAGE CELLS SUBTTL MULTI-ASSEMBLY STORAGE CELLS 014102' LSTPGN: BLOCK 1 IFN WFWSW, 014103' HDAS: BLOCK 1 014104' IFN CCLSW, 014117' MACSIZ: BLOCK 1 ;INITIAL SIZE OF LOW SEG 014120' UNISIZ: BLOCK 1 ;TOP OF BUFFERS AND STACKS 014121' UNITOP: BLOCK 1 ;TOP OF UNIVERSAL SYMBOL TABLE 014122' UNIVNO: BLOCK 1 ;NUMBER OF UNIVERSALS SEEN 014123' UNITBL: BLOCK .UNIV ;TABLE OF UNIVERSAL NAMES 014135' UNIPTR: BLOCK .UNIV ;TABLE OF SYMBOL POINTERS 014147' UNISHX: BLOCK .UNIV ;TABLE OF SRCHX POINTERS 014161' VAR ;CLEAR VARIABLES 014161' JOBFFI: BLOCK 203*NUMBUF+1 ;INPUT BUFFER PLUS ONE 006564' END BEG NO ERRORS DETECTED PROGRAM BREAK IS 015533 12K CORE USED MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 181 MACRO 10 24-APR-78 02:11 SYMBOL TABLE A 000000 SPD ABSHI 013734' ABSLOC 014002' AC0 000000 SPD AC1 000001 AC2 000002 ACDEL 000004 SPD ACDELX 013347' ACDEV 000001 SPD ACDEVX 013736' ACEXT 000003 SPD ACFILE 000002 SPD ACPNTR 000005 SPD ACPPN 000004 SPD ADDF 100000 SPD ADDUNV 005176' AL 000001 SPD ANGLB 000662' ANGLB1 000673' ANGLB2 000674' APRENB 047000 000016 ARG 000005 ARGF 014070' ARPGSW 100000 SPD ASC10 004607' ASC20 004625' ASC30 004631' ASC50 004642' ASC55 004641' ASC60 004644' ASCII0 004606' ASGBLK 013775' ASSEM1 000104' ASSEM2 000115' ASSEMB 000077' ASSIG1 004126' ASSIG2 004154' ASSIG3 004162' ASSIG5 004136' ASSIG6 004142' ASSIG7 004116' ASSIGN 004112' ATOM 000334' ATOM1 000336' B 000014 SPD BEG 006564' BIN 000001 SPD BINBUF 013325' BINDEV 013220' BINDIR 013337' BININI 013217' BINSE2 007061' BINSET 007022' MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 181-1 MACRO 10 24-APR-78 02:11 SYMBOL TABLE BLKTYP 013347' BLOCK0 003415' BLOCK1 003422' BLOCK2 003424' BOUT 002517' BOUT20 002537' BOUT30 002553' BOUT3I 002574' BOUT40 002613' BOUT50 002640' BOUT60 002660' BOUT70 002647' BOUT80 002662' BYPAS1 004543' BYPAS2 004544' BYPASS 004543' BYTAB 010073' BYTE0 004722' BYTE1 004730' BYTE2 004737' BYTE3 004746' C 000007 CALLI0 012444' CALLM 005705' CALNAM 013750' CALNTH 000112 SPD CALPG 013751' CALSEQ 013752' CALTBL 012443' CC 742743 741000 CCLSW 000001 SPD CELL 000363' CELL1 000370' CELLSF 000362' CHAR 000002 SPD CHARAC 001415' CHARAX 001443' CHARL 001445' CHARL1 001453' CLSC3 012674' CLSCR1 012707' CLSCR2 012676' CLSCRF 012674' CNDPG 013763' CNDSEQ 013764' COMSW 014054' CONBIT 020000 SPD CORE 047000 000011 COUT 002724' COUTD 002731' COUTD2 002736' COUTDB 013354' COUTI 002743' MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 181-2 MACRO 10 24-APR-78 02:11 SYMBOL TABLE COUTP 013352' COUTRB 013353' COUTX 013350' COUTY 013351' CPEEK 005565' CPEEK1 005574' CPL 013737' CPOPJ 003447' CPOPJ1 003446' CR 000015 SPD CREF 012621' CREF2 012651' CREF3 012641' CREFSW 002000 SPD CRFHD1 012672' CRFHDR 012664' CRLF 010247' CRPGSW 001000 SPD CS 000010 CSTAT 001456' CTIBUF 014111' CTL 000000 SPD CTL2 000004 SPD CTLBLK 014106' CTLBUF 013251' CTLS1 013741' CTLSAV 013740' CTLSET 006661' CTLSIZ 000310 SPD CTOBUF 014114' CV 000000 SPD DATE 047000 000014 DATOUT 010724' DBUF 013236' DCFSW 000040 SPD DDTOUT 047000 000003 DECERR 006560' DEF02 005420' DEF10 005435' DEF12 005445' DEF20 005450' DEF24 005463' DEF25 005513' DEF26 005504' DEF30 005522' DEF31 005523' DEF32 005524' DEF33 005527' DEF35 005557' DEF36 005551' DEF40 005602' DEF42 005604' DEF44 005623' MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 181-3 MACRO 10 24-APR-78 02:11 SYMBOL TABLE DEF46 005625' DEF48 005642' DEF50 005645' DEF51 005652' DEF70 005656' DEF80 005663' DEF81 005670' DEFCRS 000040 SPD DEFIN0 005405' DEFPG 013753' DEFSEQ 013754' DELETE 000066' DEPHA0 004104' DEVBUF 013721' DEVCHR 047000 000004 DEVICE 007551' DEVNAM 007556' DIRBIT 000004 SPD DISBIT 002000 SPD DMP 000016 SPD DMPBIN 010413' DMPLST 010422' DNC 003051' DP1 010345' DSEND 006405' DSKBIT 200000 SPD DSTOW 002776' DTAB 010740' DTABIT 000100 SPD EINIT 010162' END0 003123' ENDP2 003216' ENDP2A 003262' ENDP2B 003307' ENDP2D 003270' ENDP2Q 003226' ENDP2W 003224' ENTERS 013732' ENTF 000200 SPD ENTRDN 007351' EOL 000033 SPD EOT 007460' EOUT 002130' EOUT1 002133' EOUT2 002141' EOUT3 002150' EOUT4 002160' ER 000014 SPD ERRA 040000 SPD ERRAX 003400' ERRBIT 740000 SPD ERRCB 010166' ERRCF 010171' MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 181-4 MACRO 10 24-APR-78 02:11 SYMBOL TABLE ERRCL 010164' ERRCM 007603' ERRCNT 013376' ERRD 020000 SPD ERRE 000040 SPD ERRFIN 010176' ERRL 010000 SPD ERRLST 010430' ERRM 000020 SPD ERRMS1 010150' ERRMS2 010153' ERRMS3 010156' ERRN 000400 SPD ERRNE 010115' ERRNE0 010116' ERRNE1 010126' ERRNE2 010140' ERRNE3 010145' ERRO 000200 SPD ERRORS 777760 SPD ERRP 000100 SPD ERRQ 200000 SPD ERRQSW 000010 SPD ERRR 004000 SPD ERRTYP 010173' ERRU 002000 SPD ERRV 001000 SPD ERRX 100000 SPD EVADR 004474' EVAL10 004034' EVALC3 001073' EVALCM 001066' EVALEX 001077' EVALHA 001065' EVALXQ 004046' EVATOM 001102' EVERRU 001157' EVERRZ 001156' EVGETD 001177' EVMAC 001116' EVNUM 001204' EVOP 001131' EVOPD 001141' EVOPS 001135' EVOPX 001154' EVPUSH 001214' EVTSTR 001173' EVTSTS 001161' EVXCT 001221' EVXCT1 001236' EXIT 047000 000012 EXPRES 004556' EXTER0 004004' MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 181-5 MACRO 10 24-APR-78 02:11 SYMBOL TABLE EXTER1 004006' EXTER2 004015' EXTER3 004032' EXTER4 004030' EXTF 001000 SPD EXTMP 014104' EXTPNT 013742' FF 000014 SPD FINDEV 007412' FINEXT 007376' FINIS 007225' FLDSW 400000 SPD FR 000015 FREE 013377' FSNSW 100000 SPD FTDISK 000001 SPD GCHAR 006451' GCHARQ 006450' GETCHR 001363' GETCS 001404' GETCS1 001406' GETCS2 001403' GETDE1 000443' GETDE2 000453' GETDE3 000445' GETDEL 000442' GETDS 006345' GETDS1 006377' GETE 006600' GETED 006604' GETIOC 007511' GETIT 005163' GETSE0 007167' GETSE1 007172' GETSE2 007205' GETSET 007142' GETSY1 001055' GETSY2 001056' GETSY3 001057' GETSYM 001043' GETTOP 003533' GETU 006612' GETV 006620' GOSET 006742' GOSET1 006750' GOSET2 006772' GOTEND 007447' GTSTOW 003015' HDAS 014103' HIGH 013735' HIGHQ 004235' MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 181-6 MACRO 10 24-APR-78 02:11 SYMBOL TABLE HIGHQ1 004235' HISEG0 003447' HLPMES 007652' HOUT 002712' HT 000011 SPD IB 000013 SPD IBUF 013330' IF 003601' IFB0 003632' IFB1 003633' IFB2 003653' IFB3 003652' IFBLK 013400' IFBLKA 013424' IFCL 003717' IFCLR 003736' IFCLR1 003745' IFDEF0 003667' IFEX1 003615' IFEX2 003753' IFEXIT 003614' IFIDN0 003677' IFPASS 003627' IFPOP 003607' IFSET 003610' IFXCT 003611' IIISW 000000 SPD INCND 013747' INDEF 013745' INDEV 013234' INDEVI 013233' INDIR 013343' INDSW 020000 SPD INHERE 000017' INREP 013744' INSERQ 013034' INSERT 013036' INSERZ 013035' INSET 007242' INSET1 007262' INSET2 007277' INSET3 007300' INSET4 007312' INSETI 007425' INSRT1 013044' INSRT2 013047' INSRT3 013055' INSRT4 013074' INSRT5 013104' INSRT6 013100' INTENT 013743' INTER0 003766' INTER1 003767' MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 181-7 MACRO 10 24-APR-78 02:11 SYMBOL TABLE INTER3 003777' INTF 000400 SPD INTXT 013746' INZ 003356' IO 000014 IOBKTL 040000 SPD IOCREF 000400 SPD IODERR 200000 SPD IODTER 100000 SPD IOENDL 000200 SPD IOIMPM 400000 SPD IOIOPF 000020 SPD IOMAC 010000 SPD IOMSTR 200000 SPD IONCRF 002000 SPD IONSYM 013730' IOP 004443' IOPAGE 000100 SPD IOPALL 004000 SPD IOPROG 040000 SPD IORPTC 000004 SPD IORSET 003411' IOSALL 000001 SPD IOSCR 000001 SPD IOSET 003404' IOTLSN 000002 SPD IOWD0 004710' IRP0 006173' IRP10 006175' IRP20 006235' IRPARG 013766' IRPARP 013767' IRPCF 013770' IRPCNT 013765' IRPEND 006325' IRPPOI 013771' IRPPOP 006331' IRPSE1 006270' IRPSE2 006277' IRPSE3 006307' IRPSE4 006312' IRPSET 006254' IRPSW 013772' JOB41 000057' EXT JOBAPR 007143' EXT JOBDDT 000000 EXT JOBERR 010206' EXT JOBFF 007302' EXT JOBFFI 014161' JOBREL 010304' EXT JOBS41 000122 INT JOBSA 007013' EXT JOBSYM 000000 EXT MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 181-8 MACRO 10 24-APR-78 02:11 SYMBOL TABLE JOBVER 000137 SPD JUMP1 321640 000000 JUMP2 325640 000000 JUMPAD 321600 000000 JUMPCM 321400 000000 JUMPNC 325400 000000 JUMPOC 325600 000000 LABEL 000253' LABEL0 000266' LABEL1 000301' LABEL2 000310' LABEL3 000313' LABEL4 000317' LABEL5 000321' LABEL6 000305' LABEL7 000323' LADR 013450' LBUF 013454' LBUFP 013453' LELF 000002 SPD LENGTH 000004 LETTE1 000410' LETTE2 000414' LETTE3 000416' LETTE4 000435' LETTER 000407' LF 000012 SPD LIMBO 013452' LIT0 003454' LIT1 003456' LIT20 003466' LIT20A 003476' LIT21 003477' LIT22 003511' LIT24 003522' LITAB 013501' LITABX 013502' LITCNT 013506' LITF 200000 SPD LITHD 013504' LITHDX 013505' LITI 003526' LITLBL 013774' LITLVL 013773' LITNUM 013507' LITPG 013755' LITSEQ 013756' LLUKP1 002326' LLUKP2 002312' LLUKP3 002335' LLUKP4 002346' LLUKP5 002370' LLUKP6 002343' MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 181-9 MACRO 10 24-APR-78 02:11 SYMBOL TABLE LLUKP7 002334' LLUKUP 002306' LNSSW 000000 SPD LOADSW 000020 SPD LOC0 004203' LOC01 004214' LOC10 004222' LOCA 013777' LOCBLK 013776' LOCO 014000' LOOKL 003114' LOOKUP 003111' LOOKX 013510' LOUT1 002205' LOUT10 002230' LOUT11 002271' LOUT15 002241' LOUT30 002272' LOUT60 002277' LOUT64 002303' LPP 014003' LPTBIT 040000 SPD LPTSW 000002 SPD LPTWID 000170 SPD LST 000003 SPD LSTBUF 013322' LSTDEV 013223' LSTDIR 013333' LSTFIL 013207' LSTINI 013222' LSTPGN 014102' LSTSE1 007070' LSTSE2 007102' LSTSE3 007136' LSTSE4 007340' LSTSE5 007342' LSTSET 007067' LSTSYM 014077' M 006632' MAC10 005735' MAC14 005750' MAC14A 005757' MAC15 005766' MAC16 005767' MAC20 005776' MAC21 006000' MAC21A 006002' MAC21B 006023' MAC21C 006022' MAC21D 006011' MAC21E 006020' MAC22 006032' MAC23 006045' MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 181-10 MACRO 10 24-APR-78 02:11 SYMBOL TABLE MAC24 006057' MAC25 006060' MAC26 006036' MAC27 006043' MAC30 006073' MAC31 006074' MAC40 006103' MAC41 006114' MAC42 006122' MAC44 006123' MACEN0 006134' MACEN1 006151' MACEN2 006152' MACEN3 006167' MACEND 006135' MACENL 014071' MACF 020000 SPD MACLVL 014072' MACPNT 014073' MACSIZ 014117' MDFF 000020 SPD MFLSW 000010 SPD MODA 014004' MODLOC 014005' MODO 014006' MP 000016 MREAD 006474' MREADC 006527' MREADI 006513' MREADS 006516' MRP 000013 MSRCH 012573' MSRCH2 012602' MSTIME 047000 000023 MTABIT 000020 SPD MTAPSW 000004 SPD MWLFLG 200000 SPD MWP 000012 N1 000767 N2 000011 NAME 007554' NAME1 007477' NAME2 007500' NAME3 007506' NCOLLS 013451' NCOLS 000001 SPD NEGCAL 000001 SPD NEGSW 000200 SPD NEXT 013511' NOERW 003254' NOOUTF 100000 SPD NOUT 002665' NOUT1 002670' MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 181-11 MACRO 10 24-APR-78 02:11 SYMBOL TABLE NOUT2 002710' NOUT3 002704' NUM 000714' NUM1 000717' NUM10 000727' NUM30 000741' NUM31 000742' NUM32 000745' NUM40 000750' NUM50 000774' NUM52 001002' NUM60 001013' NUM62 001020' NUMBUF 000002 SPD NUMDF 000713' NUMDN 001035' NUMER1 000440' NUMER2 000441' NUMSW 020000 SPD NUMUP 001027' NUNAC 000054' NUNAOS 000006 NUNBLT 000004 NUNCOM 000000' NUNDEV 013226' NUNDIR 013333' NUNERM 000006' NUNERR 000004' NUNGO2 000002' NUNGO3 000011' NUNGO4 000000 NUNINI 013225' NUNLAC 000012 NUNPNT 000010 NUNSET 000017' NUNTOP 000011 OCT0 004557' OCT1 004561' OFFML 004244' OFFORM 003447' OFFSYM 004246' ONC 003033' ONC1 003035' ONC2 003047' ONERW 003251' ONERW1 003252' ONFORM 003447' ONML 004243' OP 004445' OP1A 004464' OP1B 004454' OP1COD 012003' OP1END 012002' MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 181-12 MACRO 10 24-APR-78 02:11 SYMBOL TABLE OP1TAB 012306' OP1TOP 011012' OP2 004465' OP2A 004533' OP2A1 004546' OP2A2 004554' OP2TAB 012352' OP3 004466' OPD 004441' OPD1 004437' OPDEF0 004053' OPDF 010000 SPD OPHSH 000000 SPD OPT1A 010757' OPT1B 010764' OPT1D 010771' OPT1F 010777' OPT1G 011002' OPTSCH 010754' OPTTAB 011007' OTBUF 014007' OTOD 010716' OUTAB2 010570' OUTAS0 003060' OUTASC 003061' OUTBIN 010404' OUTC 010663' OUTCR 010600' OUTFF 010703' OUTFF1 010674' OUTFF2 010704' OUTIM 001746' OUTIM1 001745' OUTIM2 001761' OUTIML 002020' OUTL 010607' OUTL01 001574' OUTL02 001576' OUTL03 001575' OUTL1 010650' OUTL20 001606' OUTL22 001630' OUTL23 001634' OUTL24 001637' OUTL25 001645' OUTL26 001651' OUTL27 001655' OUTL30 001674' OUTL32 001704' OUTLE2 001736' OUTLE4 001742' OUTLE8 001732' OUTLER 001721' MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 181-13 MACRO 10 24-APR-78 02:11 SYMBOL TABLE OUTLI 001774' OUTLI1 002002' OUTLI2 002003' OUTLI3 002001' OUTLIN 001556' OUTLST 010667' OUTML1 002045' OUTPL 001657' OUTSET 003103' OUTSIX 003065' OUTSQ 014011' OUTSTR 051140 000000 OUTSW 013512' OUTSY1 003075' OUTSYM 003074' OUTTAB 010571' P1 400000 SPD PAGE0 010673' PAGEN. 014013' PAGENO 014100' PASS1I 013250' PASS20 003155' PASS2I 013734' PASS2X 014102' PASS2Z 014077' PDP 013513' PDPERR 010321' PEEK 006531' PEEKM 006535' PERIOD 000700' PERNUM 000706' PHASE0 004106' PJOB 047000 000030 PN1 004335' PN2 004343' PNCHSW 001000 SPD PNTF 004000 SPD POINT0 004652' POINT2 004665' POPOUT 000455' PP 000017 PPN 014054' PPTEMP 014014' PPTMP1 014015' PPTMP2 014016' PR 000002 SPD PRGPTR 013731' PRINT 010572' PRMEND 012306' PRMTBL 012206' PRNAM 004326' MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 181-14 MACRO 10 24-APR-78 02:11 SYMBOL TABLE PRNTX0 003431' PRNTX2 003434' PRNTX4 003437' PRNUM 010323' PROGN1 007605' PROGN2 007606' PROGN3 007607' PROGNP 007605' PS 000003 SPD PSEND0 005003' PSEND1 005014' PSEND2 005023' PSEND3 005027' PSEND4 005033' PSEND5 005115' PSEND6 005107' PSENDX 005114' PSNDER 005165' PTPBIN 010405' PTR 000104 SPD PURGE0 004410' PURGE2 004421' PURGE3 004433' PURGE4 004434' PURGE5 004435' PV 000001 SPD QEXT 004041' QSRCH 012603' QUAL 000523' QUAL2 000540' QUAL2A 000544' QUAL8 000537' QUALL 000550' QUOTE 000465' QUOTE0 000461' QUOTE1 000502' QUOTE2 000501' QUOTES 000456' R1BBLK 014025' R1BCHK 014024' R1BCNT 014023' R1BDM1 010457' R1BDMP 010447' R1BI 010465' R1BLDR 003177' R1BLOC 014047' R1BSW 004000 SPD RADIX0 003375' RADX50 004760' RADXSW 040000 SPD RC 000011 SPD RCOUNT 014075' RCPNTR 003372' MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 181-15 MACRO 10 24-APR-78 02:11 SYMBOL TABLE READ 010503' READ0 010502' READ1 010505' READ1A 010525' READ2 010536' READ3 010545' REC2 007437' RECCNT 013514' REFDEC 006546' REFINC 006543' RELBL1 000657' RELBLE 000641' RELF 000001 SPD RELLOC 014001' RELOC0 004227' REMAR0 003450' REMOV1 013116' REMOVE 013115' RENTSW 000000 SPD REPCNT 014017' REPEA0 005264' REPEA1 005266' REPEA2 005270' REPEA4 005301' REPEA7 005326' REPEA8 005330' REPEND 005332' REPEXP 014020' REPO 005365' REPO1 005375' REPPG 013757' REPPNT 014021' REPSEQ 013760' REPZ 005346' REPZ1 005354' REPZ2 005362' RESET 047000 000000 RIM0 010354' RIM1SW 000100 SPD RIMFIN 003345' RIMLOC 014050' RIMSW 000400 SPD ROUT 010360' ROUT1 010375' ROUT6 010471' RP 013250' RPGDEV 013231' RPGINI 013230' RPGLOS 007017' RPGLUP 006712' RPGS1 007001' RPGS2 006725' RPGS2A 006726' MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 181-16 MACRO 10 24-APR-78 02:11 SYMBOL TABLE RPGSET 006703' RPOLVL 014022' RSTRXS 007467' RSW0 001417' RSW1 001421' RSW2 001423' RSW3 001432' RUN 047000 000035 RX 000015 SPD SAVBLK 013515' SAVERC 013526' SAVEXS 007473' SAVFF 014105' SBUF 013527' SCHERR 005260' SDEL 000003 SEARCH 012713' SEQNO 013214' SEQNO2 014101' SERCH0 005240' SETDDT 047000 000002 SIXB10 004566' SIXB20 004570' SKELI 006414' SKELI1 006413' SKELW 006425' SKELW1 006437' SKELWL 006427' SKPINC 051540 000000 SLASH 007510' SOUT 002165' SOUT1 002377' SOUT10 002421' SOUT15 002430' SOUT20 002503' SOUT50 002467' SOUT60 002502' SOUTC 002512' SPTR 000010 SPD SQB1 000627' SQB2 000630' SQB3 000571' SQB4 000603' SQB4A 000615' SQB5 000570' SQB6 000622' SQBRK 000557' SQFLG 014067' SQOZ1 004772' SQOZE 004770' SQUOT0 000503' MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 181-17 MACRO 10 24-APR-78 02:11 SYMBOL TABLE SQUOTE 000507' SRCH1 012715' SRCH2 012717' SRCH3 012725' SRCH4 012735' SRCH5 012736' SRCH6 012752' SRCH7 012740' SRCHI 013125' SRCHK2 013032' SRCHKO 013004' SRCHN1 012774' SRCHNO 012761' SRCHOK 013005' SRCHX 013547' SSRCH 012610' SSRCH1 012613' SSRCH2 012617' SSRCH3 012620' STCODE 013557' STMN2A 000146' STMN8A 000231' STMN8B 000217' STMN8C 000221' STMN8D 000216' STMNT 000125' STMNT1 000127' STMNT2 000130' STMNT3 000157' STMNT4 000161' STMNT5 000167' STMNT7 000200' STMNT8 000207' STMNT9 000201' STOL06 001303' STOL08 001310' STOL10 001311' STOL12 001323' STOL14 001335' STOL22 001342' STOL23 001343' STOL24 001344' STOL26 001355' STOLER 001270' STOLIT 001273' STOPI0 006321' STORIT 005160' STOUT 000237' STOUT1 000246' STOUTS 000236' STOW 002751' STOW10 002761' STOW20 002763' MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 181-18 MACRO 10 24-APR-78 02:11 SYMBOL TABLE STOWI 003003' STOWRC 013627' STOWT 003021' STOWT1 003026' STOWZ 002750' STOWZ1 002750' STPX 013555' STPY 013556' SUBTL 011645' SUBTT0 004311' SUBTT1 004315' SUBTT3 004317' SUBTTX 013550' SUPRBT 000004 SPD SUPRE0 004250' SUPRE1 004255' SUPRS1 004264' SUPRSA 004261' SVSTOW 003007' SVSYM 013551' SW0 007630' SW1 007631' SWITC0 007623' SWITCH 007624' SWTAB 010053' SWTABT 010056' SX 000004 SYMBCK 013007' SYMBLK 013400' SYMBOL 013552' SYMCNT 013554' SYMF 400000 SPD SYMNUM 012201' SYMTOP 013553' SYN0 004352' SYN1 004356' SYN2 004357' SYN3 004373' SYN4 004404' SYNF 040000 SPD TABI 013213' TABLE 010211' TABLND 010240' TABP 013677' TAG 013211' TAGF 200000 SPD TAGINC 014051' TAPE0 003373' TBUF 013701' TCNT 013700' TERM 007560' TERM1 007565' TIMOU1 010710' MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 181-19 MACRO 10 24-APR-78 02:11 SYMBOL TABLE TIMOUT 010707' TIO 000006 SPD TIOCLD 020000 SPD TIOLE 002000 SPD TIORW 001000 SPD TITLE0 004276' TMPCOR 047000 000044 TMPSW 010000 SPD TNODE 200000 SPD TSTBIN 010415' TSTLST 010424' TTCLTH 000016 SPD TTCTBL 012555' TTYBIT 000010 SPD TTYERR 010113' TTYIN 010076' TTYSW 000001 SPD TWSEG0 003447' TXTPG 013761' TXTSEQ 013762' TYO 010252' TYPERR 013727' TYPM2 010262' TYPM2A 010267' TYPM3 010270' TYPMS1 010242' TYPMSG 010241' UNDF 002000 SPD UNIERR 005262' UNIPTR 014135' UNISCH 014055' UNISHX 014147' UNISIZ 014120' UNISYM 005207' UNITBL 014123' UNITOP 014121' UNIV0 005167' UNIVNO 014122' UNIVSN 013733' UNVERR 005205' UOUT 002074' UOUT1 002104' UOUT10 002122' UOUT12 002112' UOUT13 002116' UOUT2 002111' UOUT30 002126' UPDAT1 013157' UPDAT2 013164' UPDAT3 013155' UPDAT4 013171' UPDAT5 013175' UPDATE 013137' MACRO V.46(52) MACRO 10 05:51 24-APR-78 PAGE 181-20 MACRO 10 24-APR-78 02:11 SYMBOL TABLE UTPCLR 047000 000013 V 000006 VAR0 003546' VARA 003551' VARB 003556' VARF 000100 SPD VARHD 013477' VARHDX 013500' VBUF 013243' VCUSTO 000000 SPD VECREL 014052' VECTOR 014053' VEDIT 000000 SPD VMACRO 000010 SPD VOUT 002717' VT 000013 SPD VUPDAT 000000 SPD WAIT 072000 000000 WCHAR 006456' WCHAR1 006456' WCHARQ 006456' WCOUNT 014076' WFWSW 000000 SPD WWORD 006462' WWRXE 006466' WWRXX 014074' XADD 001244' XALL0 003403' XCEED 010277' XCEED1 010305' XCEED2 010317' XCEEDS 010276' XDIV 001247' XDIV1 001251' XLRW 001264' XMUL 001253' XMUL1 001256' XPUNG0 004266' XSUB 001241' XTRA 000004 SPD XWD0 004672' XWD10 004704' XWD5 004676' ZA 100000 ZAL 300000 EEEEEEEEEEEEEEE DDDDDDDDDDDD IIIIIIIII TTTTTTTTTTTTTTT OOOOOOOOO RRRRRRRRRRRR EEEEEEEEEEEEEEE DDDDDDDDDDDD IIIIIIIII TTTTTTTTTTTTTTT OOOOOOOOO RRRRRRRRRRRR EEEEEEEEEEEEEEE DDDDDDDDDDDD IIIIIIIII TTTTTTTTTTTTTTT OOOOOOOOO RRRRRRRRRRRR EEE DDD DDD III TTT OOO OOO RRR RRR EEE DDD DDD III TTT OOO OOO RRR RRR EEE DDD DDD III TTT OOO OOO RRR RRR EEE DDD DDD III TTT OOO OOO RRR RRR EEE DDD DDD III TTT OOO OOO RRR RRR EEE DDD DDD III TTT OOO OOO RRR RRR EEEEEEEEEEEE DDD DDD III TTT OOO OOO RRRRRRRRRRRR EEEEEEEEEEEE DDD DDD III TTT OOO OOO RRRRRRRRRRRR EEEEEEEEEEEE DDD DDD III TTT OOO OOO RRRRRRRRRRRR EEE DDD DDD III TTT OOO OOO RRR RRR EEE DDD DDD III TTT OOO OOO RRR RRR EEE DDD DDD III TTT OOO OOO RRR RRR EEE DDD DDD III TTT OOO OOO RRR RRR EEE DDD DDD III TTT OOO OOO RRR RRR EEE DDD DDD III TTT OOO OOO RRR RRR EEEEEEEEEEEEEEE DDDDDDDDDDDD IIIIIIIII TTT OOOOOOOOO RRR RRR EEEEEEEEEEEEEEE DDDDDDDDDDDD IIIIIIIII TTT OOOOOOOOO RRR RRR EEEEEEEEEEEEEEE DDDDDDDDDDDD IIIIIIIII TTT OOOOOOOOO RRR RRR LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT Request created: 24-April-1978 05:53:58 File: DSKB0 :EDITOR.LST [8,296] Created: 20-April-1967 05:52:00 Printed: 24-April-1978 05:53:40 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:1338 File will be deleted after printing EDITOR V.003 1 APRIL 1968 MACRO 10 05:51 24-APR-78 PAGE 3 EDITOR MAC 24-APR-78 03:01 DECEDIT PARAMETERS TITLE EDITOR V.003 1 APRIL 1968 SUBTTL DECEDIT PARAMETERS DEFINE ERR (A) < JSR A,ERRORX> DEFINE TSTRIN (A) < EXP "A"+"A"+1> 000001 S0=1 000002 S1=2 000004 S2=4 000010 S3=10 000040 S4=40 000020 S5=20 000100 S6=100 000200 S7=200 000400 S8=400 000003 PDP=3 000004 FL=4 000011 INDEX=11 000012 WC=12 000013 C=13 000014 COTP=14 000005 IPT=5 000006 TPT=6 000010 P=10 000015 SINDEX=15 000016 CINDEX=16 000017 LAST=17 000002 TYP=2 000003 DT=3 OPDEF EXIT [POPJ PDP,] OPDEF CAL [PUSHJ PDP,] OPDEF SAVE [PUSH PDP,] OPDEF UNSAVE [POP PDP,] EXTERNAL JOBFF EDITOR V.003 1 APRIL 1968 MACRO 10 05:51 24-APR-78 PAGE 4 EDITOR MAC 24-APR-78 03:01 DECTAPE IO - AUGUST 25, 1965 SUBTTL DECTAPE IO - AUGUST 25, 1965 001000 FOPEN=1000 000001 AC1=1 000002 AC2=2 000005 AC3=5 000006 AC4=6 000000' 607200 000001 FILLB: TLNN FL,1; IS BUFFER LOADED 000001' 254000 000041' JRST FILLB1; NO, SO LOAD IT 000002' 200540 001060' MOVE C,WBC; GET BUFFER COUNT 000003' 307540 000177 CAIG C,177; IS IT GETTIN FULL 000004' 263140 000000 ATSALL: EXIT; NO 000005' 620200 000400 TRZ FL,S8; SET FIRST BLOCK FLAG TO FALSE 000006' 660200 000010 TRO FL,S3; AND MODIFIED FLAG TO TRUE 000007' 201100 001064' MOVEI AC2,WB; GET WORKING BUFFER ADDRESS 000010' 201240 000001 MOVEI AC3,1; SEQUENCE NUMBER TEST 000011' 271100 000125 ADDI AC2,125; DUMP ABOUT 2/3 OF BUFFER 000012' 616242 000000 TDNN AC3,0(AC2); BUT NOT A FRACTIONAL LINE 000013' 364100 000012' SOJA AC2,.-1; HUNT FOR BEGIN OF LINE 000014' 550400 000135' HRRZ P,THSBLK; UPDATE PREVIOUS BLOCK NUMBER 000015' 073140 000136' UGETF DT,IAMTEM; NEXT FREE BLOCK 000016' 075150 000000 USETO DT,0(P); PREPARE TO DUMP THIS BLOCK 000017' 200400 000136' MOVE P,IAMTEM; AND PREPARE NEXT BLOCK 000020' 200240 001050' MOVE AC3,DTOBUF; SET UP BLT 000021' 516405 000001 HRLZM P,1(AC3); LINK TO NEXT DECTAPE BLOCK 000022' 505240 001064' HRLI AC3,WB; SOURCE 000023' 271240 000002 ADDI AC3,2; +2 000024' 200040 000002 MOVE AC1,AC2; LAST 000025' 275040 001064' SUBI AC1,WB; AND MAKE A COUNT OF IT 000026' 274540 000001 SUB C,AC1; TOTAL REMAINING WORDS 000027' 202540 001060' MOVEM C,WBC; SET NEW COUNT 000030' 271045 777777 ADDI AC1,-1(AC3); SETUP FOR BLT 000031' 260140 000122' CAL DUMX; TRANSFER AND DUMP BLOCK 000032' 201240 001064' MOVEI AC3,WB; GET DEST FOR MOVE UP 000033' 504240 000002 HRL AC3,AC2; AND SOURCE 000034' 200040 000005 MOVE AC1,AC3; GENERATE LAST ADDRESS 000035' 271053 000000 ADDI AC1,(C); FROM COUNT 000036' 251241 000000 BLT AC3,(AC1); ON TOAST 000037' 250400 000135' EXCH P,THSBLK; SET NEW BLOCK 000040' 254000 000000' JRST FILLB; GO AGAIN 000041' 607200 001000 FILLB1: TLNN FL,FOPEN; IS A FILE OPEN ERR 7; NO, SO *NFO* 000042' 264340 000162' JSR 7,ERRORX 000043' 661200 000001 TLO FL,1; SET TO FILLED BUFFER 000044' 254000 000075' JRST GETF; AND GET THE FIRST BLOCK EDITOR V.003 1 APRIL 1968 MACRO 10 05:51 24-APR-78 PAGE 5 EDITOR MAC 24-APR-78 03:01 DECTAPE IO - AUGUST 25, 1965 000045' 602200 000001 GET: TRNE FL,S0; FORWARD OR REVERSE 000046' 254000 000073' JRST GETL; REVERSE 000047' 602200 000020 GETN: TRNE FL,S5; IS THERE ANY MORE 000050' 263140 000000 EXIT; NO 000051' 554000 001063' HLRZ WBF; GET LINK 000052' 260140 000106' CAL DUMPB; OUTPUT BLOCK 000053' 200400 000135' MOVE P,THSBLK; SAVE PREVIOUS FLOCK NUMBER 000054' 620200 000400 TRZ FL,S8; SET FIRST BLOCK FLAG TO FALSE 000055' 552000 000135' GET0: HRRZM THSBLK; SAVE CURRENT BLOCK NUMBER 000056' 075160 000135' USETO DT,@THSBLK; SER OUTPUT FOR PRESENT BLOCK 000057' 066140 000000 SLURP: INPUT DT,0; INPUT A NEW BLOCK 000060' 554000 001063' HLRZ WBF; GET LINK 000061' 336000 000000 SKIPN; WE DONT LIKE ZERO LINKS 000062' 660200 000020 TRO FL,S5; SO WE SET A FLAG TO REMIND US 000063' 550000 001063' HRRZ WBF; GET COUNT 000064' 202000 001060' MOVEM WBC; AND SAVE IT 000065' 606200 000020 TRNN FL,S5; WAS IT END OF FILE 000066' 332000 000000 SKIPE; EMPTY BLOCK 000067' 263140 000000 EXIT; END OF FILE OR NON-EMPTY BLOCK 000070' 554000 001063' HLRZ WBF; EMPTY BLOCK - GET LINK 000071' 606200 000001 TRNN FL,S0; DIRECTION CHECK 000072' 254000 000055' JRST GET0; FORWARD 000073' 260140 000106' GETL: CAL DUMPB; REVERSE - GET LAST BLOCK-SAVE THIS ONE 000074' 326400 000100' JUMPN P,GETL1; IS LAST BLOCK AVAILABLE 000075' 550400 001013' GETF: HRRZ P,FBNUM; NO, SO GET FIRST ONE 000076' 620200 000021 TRZ FL,S0+S5; SET FORWARD AND END 000077' 664200 000400 TROA FL,S8; SET FIRST BLOCK AND SKIP 000100' 620200 000420 GETL1: TRZ FL,S5+S8; SET NON-END AND NON-FIRST 000101' 074150 000000 USETI DT,(P); ESTABLISH INPUT BLOCK NUMBER 000102' 075150 000000 USETO DT,(P); AND OUTPUT BLOCK NUMBER 000103' 202400 000135' MOVEM P,THSBLK; UPDATE CURRENT BLOCK NUMBER 000104' 402000 000010 SETZM P; AND ZERO PREVIOUS BLOCK NUMBER 000105' 254000 000057' JRST SLURP; AND INPUT THE BLOCK EDITOR V.003 1 APRIL 1968 MACRO 10 05:51 24-APR-78 PAGE 6 EDITOR MAC 24-APR-78 03:01 DECTAPE IO - AUGUST 25, 1965 000106' 260140 000000' DUMPB: CAL FILLB; SPLIT BLOCKS IF THE OVER-RUN 000107' 626200 000010 TRZN FL,S3; ANY MODS MADE 000110' 263140 000000 EXIT; NO 000111' 200100 001050' MOVE AC2,DTOBUF; POINTER TO BUFFERS 000112' 201242 000002 MOVEI AC3,2(AC2); FIRST WORD ADDRESS 000113' 505240 001064' HRLI AC3,WB; FIRST DATA WORD 000114' 554040 001063' HLRZ AC1,WBF; BLOCK NUMBER 000115' 336000 000001 SKIPN AC1; LAST BLOCK 000116' 370000 000001 SOS AC1; YES, SO EXTEND 000117' 506042 000001 HRLM AC1,1(AC2); INTO LINK 000120' 201042 000001 MOVEI AC1,1(AC2); PREPARE BLT 000121' 270040 001060' ADD AC1,WBC; SIZE OF BLT 000122' 251241 000000 DUMX: BLT AC3,(AC1); BLOCK UP SUBROUTINE 000123' 542040 001051' HRRM AC1,DTOBF1; LAST ADDRESS 000124' 067140 000000 OUTPUT DT,0; DUMP IT 000125' 061140 740000 STATO DT,740000; CHECK FOR DEVICE ERROR 000126' 263140 000000 EXIT; ALL IS GOOD 000127' 476000 000004 SETOM FL ; DDE ERROR ERR 12; *DDE* 000130' 264500 000162' JSR 12,ERRORX 000131' 603200 001000 FINISH: TLNE FL,FOPEN; IF A FILE IS OPEN 000132' 260140 000106' CAL DUMPB; DUMP IT 000133' 071140 000000 FINIS2: RELEAS DT,0; RELEASE THE TAPE 000134' 254000 001030' JRST INITIX; AND GO BACK TO SETUP 000135' 000000 000000 THSBLK: 0; PRESENT BLOCK NUMBER 000136' 000000 000000 IAMTEM: 0; TEMPORARY EDITOR V.003 1 APRIL 1968 MACRO 10 05:51 24-APR-78 PAGE 9 EDITOR MAC 24-APR-78 03:01 CONTROL - AUGUST 25, 1965 SUBTTL CONTROL - AUGUST 25, 1965 ;MAIN LISTEN AND DISPATCH FOR EDITOR CONTROL MODE 000137' 260140 000612' OUTTER: CAL GETCHR; GET ONE CHARACTER 000140' 306540 000015 CAIN C,15; INITIAL CARRIAGE RETURNS 000141' 254000 000137' JRST OUTTER; ARE IGNORED 000142' 306540 000111 CAIN C,"I" 000143' 254000 000205' JRST INSE 000144' 306540 000104 CAIN C,"D" 000145' 254000 000425' JRST DELETE 000146' 306540 000120 CAIN C,"P" 000147' 254000 000471' JRST PRINT 000150' 306540 000105 CAIN C,"E" 000151' 254000 000131' JRST FINISH 000152' 302540 000033 CAIE C,33; ALTERNATE ALTMOD 000153' 306540 000175 CAIN C,175; THE REGULAR ALTMOD 000154' 254000 000522' JRST PNEXT 000155' 306540 000123 CAIN C,"S" 000156' 254000 000657' JRST DECINI ERR 1; ILLEGAL COMMAND 000157' 264040 000162' JSR 1,ERRORX ;OUTPUT A CARRIAGE RETURN 000160' 201440 000171' CRT: MOVEI INDEX,CRM; PICK UP THE POINTER 000161' 254000 000601' JRST OTLINE; OUTPUT CRT-LF-* ;ERROR PRINT 000162' 000000 000000 ERRORX: 0; CALLED BY JSR X,ERRORX 000163' 550440 000162' HRRZ INDEX,ERRORX; WHERE X IS THE ERROR NUMBER 000164' 135440 000204' LDB INDEX,EPT; EXTRACT THE X 000165' 201451 000171' MOVEI INDEX,ERT-1(INDEX) 000166' 201140 001304' ERROX1: MOVEI PDP,PDSTAK; INITIALIZE PUSHDOWN 000167' 260140 000601' ERROX2: CAL OTLINE; OUTPUT ERROR MESSAGE EDITOR V.003 1 APRIL 1968 MACRO 10 05:51 24-APR-78 PAGE 10 EDITOR MAC 24-APR-78 03:01 CONTROL - AUGUST 25, 1965 000170' 254000 001035' JRST COMLEV; AND A CARRIAGE RETURN - EXIT ;ERROR MESSAGES ET.AL. THESE MUST NOT BE MOVED ABOUT ;SINCE THE PRINT ROUTINE DEPENDS ON THE BIT 35 OF THE ;NEXT MESSAGE TO TERMINATE THE PRESENT ONE 000171' 064245 200000 CRM: OCT 64245200000; THE CARRIAGE RETURN-LINE FEED-* 000172' ERT: TSTRIN <*ILC*>; ILLEGAL COMMAND 000172' 252231 441525 EXP "*ILC*"+"*ILC*"+1 TSTRIN <*NLN*>; NON-EXISTENT LINE 000173' 252351 447125 EXP "*NLN*"+"*NLN*"+1 TSTRIN <*ILS*>; ILLEGAL SEQUENCE 000174' 252231 451525 EXP "*ILS*"+"*ILS*"+1 TSTRIN <*ILR*>; ILLEGAL REFERENCE 000175' 252231 451125 EXP "*ILR*"+"*ILR*"+1 TSTRIN <*UNA*>; UNIT NOT AVAILABLE 000176' 252531 640525 EXP "*UNA*"+"*UNA*"+1 TSTRIN <*DCE*>; DIRECTORY CAPACITY EXCEEDED 000177' 252110 342525 EXP "*DCE*"+"*DCE*"+1 TSTRIN <*NFO*>; NO FILE OPEN 000200' 252350 647525 EXP "*NFO*"+"*NFO*"+1 TSTRIN <*FAU*>; FILE NAME ALREADY IN USE 000201' 252150 152525 EXP "*FAU*"+"*FAU*"+1 TSTRIN <*NCF*>; NOT A CURRENT FILE 000202' 252350 343125 EXP "*NCF*"+"*NCF*"+1 TSTRIN <*DDE*>; DEVICE DATA ERROR 000203' 252110 442525 EXP "*DDE*"+"*DDE*"+1 000204' 270411 777777 EPT: POINT 4,-1(INDEX),12; THE ERROR PRINT DEPENDS ;ON THE 1 IN BIT 35 HERE ;COMMUNICATIONS EDITOR V.003 1 APRIL 1968 MACRO 10 05:51 24-APR-78 PAGE 12 EDITOR MAC 24-APR-78 03:01 EDITOR - AUGUST 25, 1965 SUBTTL EDITOR - AUGUST 25, 1965 ;INSERT LINE(S) 000205' 260140 000616' INSE: CAL GETSEQ; GET THE SEQUENCE NUMBER AND STEP 000206' 202000 000016 MOVEM CINDEX; THIS INSTR SKIPED IF ONLY ONE ARG 000207' 254000 000216' JRST INSE3; PROCESS IT 000210' 260140 000333' INSE2: CAL FIND; TOP OF THE LOOP - SEARCH FOR THE LINE 000211' 316651 000000 CAMN SINDEX,(INDEX); EXACT MATCH? ERR 4; YES, *ILR* 000212' 264200 000162' JSR 4,ERRORX 000213' 260140 000252' CAL BACK1; BACKUP TO LAST LINE 000214' 312000 000017 CAME LAST; IS IT INDEED THE LAST ONE WE PUT IN ERR 3; NO, *ILS* 000215' 264140 000162' JSR 3,ERRORX 000216' 260140 000333' INSE3: CAL FIND; GET THE LINE 000217' 260140 000541' CAL OTSEQ; OUTPUT THE SEQUENCE NUMBER 000220' 260140 000547' CAL GETLIN; GET THE INPUT LINE 000221' 254000 000137' JRST OUTTER; ALT MODE 000222' 260140 000227' CAL INSED; INSERT AND DELETE 000223' 202640 000017 MOVEM SINDEX,LAST; SAVE AWAY THIS LINE NUMBER 000224' 202640 001056' MOVEM SINDEX,FIRST 000225' 260140 000305' CAL ASCIA; STEP SEQUENCE 000226' 254000 000210' JRST INSE2; LOOP BACK FOR NEXT LINE 000227' 550000 000014 INSED: HRRZ COTP; GET THE SIZE OF THE LINE 000230' 201040 000000 MOVEI 1,0; SETUP DIRECTION FLAG 000231' 311000 000012 CAML WC; IF LINE SIZE IS GREATER-EQUAL THAN NEW 000232' 201040 000001 MOVEI 1,1; SET FLAG TO 1 000233' 312000 000012 CAME WC; IF OLD LINE IS NON-NULL 000234' 254000 000264' JRST INSEG; DELETE IT 000235' 322500 000245' INSE1: JUMPE WC,INSE16; NULL SIZE TO INPUT 000236' 554440 000014 HLRZ INDEX,COTP; GET LINE ADDRESS 000237' 270440 000012 ADD INDEX,WC; AND SIZE 000240' 547000 000014 HLRS COTP; AND COUNT 000241' 505600 001313' HRLI COTP,TTB; SET SOURCE 000242' 200040 000014 MOVE 1,COTP; READY FOR BLT 000243' 251611 777777 BLT COTP,-1(INDEX); MOVE IN THE NEW LINE 000244' 200600 000001 MOVE COTP,1; RESTORE COTP 000245' 660200 000110 INSE16: TRO FL,S3+S6; SET MOD FLAGS - GENERAL EXIT 000246' 201040 001064' CLEARE: MOVEI 1,WB; CLEAR LAST BUFFER WORD 000247' 270040 001060' ADD 1,WBC; END OF BUFFER 000250' 402001 000000 SETZM (1); SET TO ZERO 000251' 263140 000000 EXIT; GO AWAY ;BACK UP LINE POINTER 000252' 302440 001064' BACK1: CAIE INDEX,WB; IS THIS THE FIRST LINE IN THE BUFFER 000253' 254000 000262' JRST BACK; NO, SO NORMAL PROCESS 000254' 660200 000001 TRO FL,S0; WE MUST GET THE PREVIOUS BLOCK 000255' 260140 000045' CAL GET; INPUT IT - THIS WILL ALWAYS WORK 000256' 270440 001060' ADD INDEX,WBC; LAST LINE 000257' 254000 000262' JRST BACK; NOW WE BACK IT UP 000260' 200011 000000 MOVE (INDEX); TOP OF LOOP - PICK UP DATA WORD 000261' 606000 000001 TRNN 1; BIT ONE MAKES IT A SEQUENCE N EDITOR V.003 1 APRIL 1968 MACRO 10 05:51 24-APR-78 PAGE 12-1 EDITOR MAC 24-APR-78 03:01 EDITOR - AUGUST 25, 1965 000262' 364440 000260' BACK: SOJA INDEX,.-2; COUNT IT BACK 000263' 263140 000000 EXIT EDITOR V.003 1 APRIL 1968 MACRO 10 05:51 24-APR-78 PAGE 13 EDITOR MAC 24-APR-78 03:01 EDITOR - AUGUST 25, 1965 000264' 260140 000414' INSEG: CAL CSIZE; COMPUTE SIZE OF XFER 000265' 322000 000276' JUMPE INSEX; ZERO SIZE XFER 000266' 326040 000272' JUMPN 1,INSER; FORWARD BLT 000267' 507000 000000 HRLS 0; REVERSE XFER 000270' 270440 000000 ADD INDEX,0; SET UP POINTER WORD 000271' 553000 000000 HRRZS 0; READY TO GO 000272' 202440 000013 INSER: MOVEM INDEX,C; PROTECT XFER WORD 000273' 251551 000000 BLT C,(INDEX); XFER ONE WORD 000274' 256001 000303' XCT ITAB(1); STEP UP OR DOWN 000275' 365000 000272' SOJGE INSER; IF NOT DONE, LOOP BACK 000276' 550000 000014 INSEX: HRRZ COTP; SETUP SIZE 000277' 274000 000012 SUB WC; OF NEW BLOCK 000300' 250000 001060' EXCH WBC; 000301' 276000 001060' SUBM WBC; NOW NEW BLOCK SIZE IS IN WBC 000302' 254000 000235' JRST INSE1; ALL DONE - GO BACK 000303' 274440 000332' ITAB: SUB INDEX,K5; SHRINK 000304' 270440 000332' ADD INDEX,K5; GROW ;THE ASCII ADDER 000305' 261140 000016 ASCIA: SAVE CINDEX; PROTECT THE STEP 000306' 200340 000015 MOVE 7,SINDEX 000307' 404700 000327' AND CINDEX,K2; MASK OUT 60S 000310' 242700 000001 LSH CINDEX,1; 000311' 434640 000331' IOR SINDEX,K4; 000312' 270640 000326' ADD SINDEX,K1; 000313' 270700 000015 ADD CINDEX,SINDEX; EXCESS 166 ADDITION 000314' 404700 000330' AND CINDEX,K3; MASK OUT CARRY BITS 000315' 200640 000331' MOVE SINDEX,K4; 000316' 404640 000016 AND SINDEX,CINDEX; 000317' 240640 777775 ASH SINDEX,-3; GIVES 000 WHERE CARRY HAPPENED, 006 000320' 276700 000015 SUBM CINDEX,SINDEX; CONVERT TO EXCESS 0 OR 60 000321' 434640 000331' IOR SINDEX,K4; CONVERT TO EXCESS 60 000322' 262140 000016 UNSAVE CINDEX; RESTORE THE STEP 000323' 311340 000015 CAML 7,SINDEX; IF 99999, DON'T GO TO 00009 000324' 264140 000162' ERR 3^ JSR 3,ERRORX^ 000325' 263140 000000 EXIT; LEAVE 000326' 432150 643214 K1: OCT 432150643214; 106 000327' 036170 743617 K2: OCT 036170743617; 017 000330' 375767 737576 K3: OCT 375767737576; 077 000331' 301406 030141 K4: TSTRIN <00000>^ EXP "00000"+"00000"+1^ 000332' 000001 000001 K5: XWD 1,1; +,- ONE TO BOTH HALVES EDITOR V.003 1 APRIL 1968 MACRO 10 05:51 24-APR-78 PAGE 14 EDITOR MAC 24-APR-78 03:01 EDITOR - AUGUST 25, 1965 000333' 260140 000000' FIND: CAL FILLB; FILL THE BUFFER 000334' 620200 000041 FIND1: TRZ FL,S0+S4; FORWARD SEARCH AND INITIAL SEARCH 000335' 550000 001060' FIND2: HRRZ WBC; GET THE BUFFER SIZE 000336' 322000 000360' JUMPE FINDA; EMPTY BLOCK 000337' 201440 001064' MOVEI INDEX,WB; GET THE DATA ADDRESS 000340' 200000 001064' MOVE WB; GET THE FIRST DATA WORD 000341' 313000 000015 CAMLE SINDEX; ARE WE PAST THE LINE 000342' 254000 000360' JRST FINDA; YES, REVERSE 000343' 316000 000015 CAMN SINDEX; EXACT MATCH 000344' 254000 000402' JRST FINDEQ; YES, BE HAPPY 000345' 270440 001060' ADD INDEX,WBC; FORM ADDRESS OF LAST DATA WORD 000346' 260140 000262' CAL BACK; FIND ITS SEQUENCE NUMBER 000347' 313000 000015 CAMLE SINDEX; IT THE LINE IN THIS BLOCK 000350' 254000 000372' JRST FIND3A; YES, INVESTIGATE FURTHER 000351' 316000 000015 CAMN SINDEX; EXACT MATCH 000352' 254000 000402' JRST FINDEQ; YES 000353' 602200 000020 FINDX: TRNE FL,S5; IS THIS LAST BLOCK 000354' 254000 000367' JRST FINDC; YES, SO EXIT WITH THIS ADDRESS 000355' 660200 000040 TRO FL,S4; SCANNING HAS STARTED 000356' 620200 000001 TRZ FL,S0; AND GO FORWARD 000357' 254000 000365' JRST FIND4; AWAY WE GO 000360' 201440 000000 FINDA: MOVEI INDEX,0; SETUP FOR REVERSE 000361' 606200 000040 TRNN FL,S4; HAVE WE BEEN HERE BEFORE 000362' 602200 000400 TRNE FL,S8; OR IS IT THE FIRST BLOCK 000363' 254000 000370' JRST FINDR; YES, SO USE THIS ADDRESS 000364' 660200 000001 TRO FL,S0; OTHERWISE, GO BACK ONE BLOCK 000365' 260140 000045' FIND4: CAL GET; GET THE BLOCK 000366' 254000 000335' JRST FIND2; SEARCH FOR IT 000367' 550440 001060' FINDC: HRRZ INDEX,WBC; TAIL OF BLOCK IF ENTERED HERE 000370' 271440 001064' FINDR: ADDI INDEX,WB; HEAD OF BLOCK IF ENTERED HERE 000371' 254000 000400' JRST FIND3; AND RETURN 000372' 201440 001060' FIND3A: MOVEI INDEX,WBC; WE WISH TO SCAN THIS BLOCK FOR 000373' 260140 000406' CAL FINDES; THIS LINE - COMPUTE LINE SIZE 000374' 316000 000015 CAMN SINDEX; EXACT MATCH 000375' 254000 000402' JRST FINDEQ; YES, WELL, GOOD 000376' 317000 000015 CAMG SINDEX; HAVE WE PASSED IT 000377' 344440 000373' AOJA INDEX,FIND3A+1; NO, SO CONTINUE 000400' 514600 000011 FIND3: HRLZ COTP,INDEX; RETURN THE ADDRESS OF THE LINE 000401' 254000 000246' JRST CLEARE; EXIT 000402' 514600 000011 FINDEQ: HRLZ COTP,INDEX; FOUND THE DESIRED LINE 000403' 260140 000406' CAL FINDES; COMPUTE ITS SIZE 000404' 554440 000014 HLRZ INDEX,COTP; SET UP INDEX 000405' 254000 000246' JRST CLEARE; AND EXIT EDITOR V.003 1 APRIL 1968 MACRO 10 05:51 24-APR-78 PAGE 15 EDITOR MAC 24-APR-78 03:01 EDITOR - AUGUST 25, 1965 000406' 350000 000014 FINDES: AOS COTP; FIND SIZE OF LINE 000407' 200011 000001 MOVE 1(INDEX); FIND NEXT SEQUENCE NUMBER 000410' 350000 000011 AOS INDEX; 000411' 606000 000001 TRNN 1; SEQUENCE NUMBER? 000412' 326000 000406' JUMPN FINDES; NO, BUT ZERO ALSO DENOTES END 000413' 263140 000000 EXIT; DONE 000414' 550000 000014 CSIZE: HRRZ COTP; COMPUTE SIZE OF TRANSFER 000415' 554440 000014 HLRZ INDEX,COTP; SIZE OF THIS LINE 000416' 270000 000011 ADD INDEX; AND THIS LOCATION 000417' 270440 000012 ADD INDEX,WC; PLUS THE NEW LINE SIZE 000420' 504440 000000 HRL INDEX,0; IN LEFT HALF IS OLD SIZE 000421' 275000 001064' SUBI WB; AND TURN IT INTO A COUNT 000422' 550540 001060' HRRZ C,WBC; FOR A SUBTRACT 000423' 276540 000000 SUBM C,0; AND NOW ZERO HAS THE XFER SIZE 000424' 263140 000000 EXIT; 000425' 260140 000502' DELETE: CAL GE2SEQ; GET THE RANGE TO BE EXCISED 000426' 550440 001060' DELOOP: HRRZ INDEX,WBC; GET THE WORD COUNT 000427' 271440 001064' ADDI INDEX,WB; FORM THE END ADDRESS 000430' 260140 000262' CAL BACK; GET THE LAST SEQUENCE IN THE BLOCK 000431' 316000 000017 CAMN LAST; IS THE LAST LINE THE END OF THE RANGE 000432' 254000 000447' JRST DEQ; YES 000433' 311000 000017 CAML LAST; DO WE WANT TO DELETE THIS ONE TOO 000434' 254000 000451' JRST DINB; NO,DELETE TERMINATES IN THE BUFFER 000435' 260140 000465' CAL DREST; ERASE THE REST OF THE BUFFER 000436' 602200 000020 EMPT: TRNE FL,S5; LAST BLOCK 000437' 254000 001035' JRST COMLEV; YES, DONE 000440' 620200 000001 TRZ FL,S0; FORWARD 000441' 260140 000045' CAL GET; INPUT NEXT BLOCK 000442' 200640 001064' MOVE SINDEX,WB; GET FIRST LINE 000443' 606640 000001 TRNN SINDEX,1; IF NOT A ONE, BLOCK IS EMPTY 000444' 254000 000436' JRST EMPT; SO GET THE NEXT ONE 000445' 260140 000333' CAL FIND; NEW SINDEX IS THE FIRST LINE - THIS CAL 000446' 254000 000426' JRST DELOOP; SETS UP THE COUNTS, ETC. 000447' 260140 000465' DEQ: CAL DREST; DELETE THE REST OF THE BUFFER 000450' 254000 001035' DEX: JRST COMLEV; EXIT EDITOR V.003 1 APRIL 1968 MACRO 10 05:51 24-APR-78 PAGE 16 EDITOR MAC 24-APR-78 03:01 EDITOR - AUGUST 25, 1965 000451' 201440 001063' DINB: MOVEI INDEX,WBF; GET INITIAL ADDRESS 000452' 260140 000406' CAL FINDES; SCAN THE LINE 000453' 322000 000456' JUMPE .+3; END OF BUFFER 000454' 317000 000017 CAMG LAST; LAST LINE DONE 000455' 344440 000452' AOJA INDEX,DINB+1; NO, GO AGAIN 000456' 557000 000014 HLRZS COTP; COMPUTE TOTAL SIZE 000457' 274440 000014 SUB INDEX,COTP; THIS MUCH SMALLER 000460' 517000 000014 HRLZS COTP; RESET LEFT HALF 000461' 542440 000014 HRRM INDEX,COTP; AND RIGHT HALF GET DELTA SIZE 000462' 402000 000012 CLEARM WC; SET FOR ZERO LENGTH INSERT 000463' 260140 000227' CAL INSED; INSERT THE NULL LINE 000464' 254000 001035' JRST COMLEV; AND EXIT 000465' 554440 000014 DREST: HLRZ INDEX,COTP; DELETE THE REMAINING BUFFER 000466' 275440 001064' SUBI INDEX,WB; JUST DECREMENT SIZE 000467' 542440 001060' HRRM INDEX,WBC; OF THE NEW BUFFER 000470' 254000 000245' JRST INSE16; DONE EDITOR V.003 1 APRIL 1968 MACRO 10 05:51 24-APR-78 PAGE 17 EDITOR MAC 24-APR-78 03:01 EDITOR - AUGUST 25, 1965 000471' 260140 000502' PRINT: CAL GE2SEQ; GET THE RANGE 000472' 200011 000000 PRLOOP: MOVE (INDEX); GET A LINE 000473' 322000 000533' JUMPE GETNEX; ZERO IMPLIES END OF BUFFER - GET NEXT 000474' 313000 000017 CAMLE LAST; ARE WE STILL IN THE BALLPARK 000475' 254000 001035' JRST COMLEV; NO, ALL DONE 000476' 260140 000516' CAL STEP; PREPARE FOR NEXT HUNT 000477' 260140 000601' CAL OTLINE; PRINT THIS LINE 000500' 260140 000333' CAL FIND; FIND THE NEXT LINE 000501' 254000 000472' JRST PRLOOP; LOOK AT IT 000502' 260140 000616' GE2SEQ: CAL GETSEQ; GET A 2 NUMBER RANGE 000503' 334000 000000 SKIPA; THERE WERE TWO 000504' 254000 000507' JRST GEX; ONLY ONE 000505' 242000 000001 LSH 1; JUSTIFY IT 000506' 664000 000001 TROA 1; AND FLAG IT AS A SEQUENCE NUMBER 000507' 200000 000015 GEX: MOVE SINDEX; DUPLICATE THE INPUT NUMBER IF JUST ONE 000510' 202000 000017 MOVEM LAST; STORE THE END OF THE RANGE 000511' 260140 000333' CAL FIND; SEARCH FOR THE FIRST LINE 000512' 316740 001056' CAMN LAST,FIRST; BOTH THE SAME 000513' 316651 000000 CAMN SINDEX,(INDEX); BUT NO MATCH FOUNT 000514' 263140 000000 EXIT; WILL SKIP THIS ONE ERR 2; AND *NLN* 000515' 264100 000162' JSR 2,ERRORX 000516' 261140 000016 STEP: SAVE CINDEX ;PROTECT THE STEP 000517' 201700 000001 MOVEI CINDEX,1; PREPARE TO ADD ONE TO SINDEX 000520' 202000 000015 MOVEM SINDEX; WHICH WE LOAD FROM ZERO EDITOR V.003 1 APRIL 1968 MACRO 10 05:51 24-APR-78 PAGE 24 EDITOR MAC 24-APR-78 03:01 EDITOR - AUGUST 25, 1965 000521' 254000 000306' JRST ASCIA+1; AWAY 000522' 200640 001056' PNEXT: MOVE SINDEX,FIRST; PRINT NEXT LINE 000523' 200000 000015 MOVE SINDEX; UPDATE THE LINE POINTER 000524' 260140 000516' CAL STEP; NEXT LINE 000525' 260140 000333' CAL FIND; WHERE IS IT 000526' 336651 000000 SKIPN SINDEX,(INDEX); ZERO IS END, ALSO LOAD SINDEX ERR 2; *NLN* 000527' 264100 000162' JSR 2,ERRORX 000530' 202640 001056' MOVEM SINDEX,FIRST; STEP FIRST POINTER 000531' 260140 000601' CAL OTLINE; PRINT THE LINE 000532' 254000 000137' JRST OUTTER; BACK TO CONTROL 000533' 602200 000020 GETNEX: TRNE FL,S5; END OF FILE 000534' 254000 001035' JRST COMLEV; YES, EXIT 000535' 620200 000001 TRZ FL,S0; FORWARD 000536' 260140 000045' CAL GET; INPUT IT 000537' 201440 001064' MOVEI INDEX,WB; FIRST ADDRESS 000540' 254000 000472' JRST PRLOOP; RETURN TO PRINT SCAN EDITOR V.003 1 APRIL 1968 MACRO 10 05:51 24-APR-78 PAGE 26 EDITOR MAC 24-APR-78 03:01 TELETYPE IO - AUGUST 25, 1965 SUBTTL TELETYPE IO - AUGUST 25, 1965 ;OUTPUT SEQUENCE NUMBER 000541' 350000 001043' OTSEQ: AOS TYOBF1; STEP THE WORD POINTER 000542' 202660 001043' MOVEM SINDEX,@TYOBF1; PUT THE SEQUENCE NO. 000543' 201040 000211 MOVEI 1,211; AND A TAB 000544' 136040 001043' IDPB 1,TYOBF1; INTO THE OUTPUT BUFFER 000545' 067100 000000 OTSEQ4: OUTPUT TYP,0; OUTPUT THE TELETYPE BUFFER 000546' 263140 000000 EXIT ;INPUT ONE LINE FROM TELETYPE AND CONVERT TO SEQUENCED 000547' 066100 000000 GETLIN: INPUT TYP,0; READ THE LINE 000550' 201040 001314' MOVEI 1,TTB1; PREEPARE TO BLOCK IT UP 000551' 505040 001313' HRLI 1,TTB; DESTINATION 000552' 402000 001313' CLEARM TTB 000553' 251040 001336' BLT 1,TTB16; BLOCK IT UP 000554' 200300 000600' MOVE TPT,KKK1; PREPARE THE CONVERSION POINTER 000555' 200240 001046' MOVE IPT,TYIBF1; AND READ POINTER 000556' 200100 001047' MOVE 2,TYIBF2; AND THE COUNT 000557' 202646 000000 MOVEM SINDEX,(TPT); PUT IN THE SEQUENCE 000560' 201040 000211 MOVEI 1,211; TAB 000561' 344300 000564' AOJA TPT,EOMLOP+2; START CONVERSION 000562' 361100 000571' EOMLOP: SOJL 2,EOMOUT; IF ALL OUT OF CHARACTERS 000563' 134040 000005 ILDB 1,IPT; READ ONE 000564' 136040 000006 IDPB 1,TPT; WRITE ONE 000565' 302040 000033 CAIE 1,33; ALTERNATE ALTMOD 000566' 306040 000175 CAIN 1,175; REGULAR ALTMOD 000567' 254000 000160' JRST CRT; MAKE EXIT 000570' 254000 000562' JRST EOMLOP; GET MORE 000571' 200500 000006 EOMOUT: MOVE WC,TPT; FORM WORD COUNT 000572' 274500 000600' SUB WC,KKK1; INITIAL VALUE 000573' 553000 000012 HRRZS WC; CLEAR LEFT 000574' 306040 000012 CAIN 1,12; LINE FEED 000575' 271500 000001 ADDI WC,1; MEANS STEP COUNT 000576' 350003 000000 STEPEX: AOS (PDP); SKIP EXIT 000577' 263140 000000 EXIT 000600' 440700 001313' KKK1: POINT 7,TTB; INITIAL POINTER ;OUTPUT ONE LINE OF TEXT 000601' 200011 000000 OTLINE: MOVE (INDEX); FIRST WORD 000602' 254000 000607' JRST OTL1 000603' 200011 000000 MOVE (INDEX); SUBSEQUENT WORDS 000604' 322000 000545' JUMPE OTSEQ4; ZERO IMPLIES THE END OF THE WORLD 000605' 602000 000001 TRNE 1; ONE IMPLIES THE END OF THE LINE 000606' 254000 000545' JRST OTSEQ4 000607' 350000 001043' OTL1: AOS TYOBF1; PUT IT IN THE OUTPUT BUFFER 000610' 202020 001043' MOVEM @TYOBF1 EDITOR V.003 1 APRIL 1968 MACRO 10 05:51 24-APR-78 PAGE 26-1 EDITOR MAC 24-APR-78 03:01 TELETYPE IO - AUGUST 25, 1965 000611' 344440 000603' AOJA INDEX,OTLINE+2; GO FOR MORE EDITOR V.003 1 APRIL 1968 MACRO 10 05:51 24-APR-78 PAGE 27 EDITOR MAC 24-APR-78 03:01 TELETYPE IO - AUGUST 25, 1965 ;GET ONE CHARACTER 000612' 066100 000000 GETCHR: INPUT TYP,0; GET A LINE 000613' 200240 001046' MOVE IPT,TYIBF1; PREPARE INPUT POINTER 000614' 134540 000005 ILDB C,IPT; LOAD THE FIRST CHARACTER 000615' 263140 000000 EXIT ;GET A SEQUENCE PAIR 000616' 403000 000015 GETSEQ: CLEARB 0,SINDEX; MAKE BOTH ZERO 000617' 134540 000005 ILDB C,IPT; GET A CHARACTER 000620' 301540 000060 CAIL C,60; IT MUST BE A NUMBER 000621' 303540 000071 CAILE C,71 000622' 254000 000626' JRST ETEST; OR A DELIMITER 000623' 242640 000007 LSH SINDEX,7; NUMBER 000624' 270640 000013 ADD SINDEX,C; NEW ONE 000625' 254000 000617' JRST GETSEQ+1 000626' 306540 000056 ETEST: CAIN C,56; POINT? 000627' 254000 000652' JRST PER 000630' 306540 000054 CAIN C,54; COMMA? 000631' 254000 000645' JRST CMMA 000632' 332000 000015 SKIPE SINDEX; IF NOTHING INPUT YET 000633' 302540 000015 CAIE C,15; OR NOT A CARRET 000634' COMERR: ERR 1; ILLEGAL COMMAND 000634' 264040 000162' JSR 1,ERRORX 000635' 434640 000656' IOR SINDEX,KK4; MAKE IT AN ASCII THING 000636' 332000 000000 SKIPE 0; IF TWO ARGS 000637' 250640 000000 EXCH SINDEX,0; SWAP EM BACK 000640' 242640 000001 LSH SINDEX,1; LEFT JUSTIFY 000641' 660640 000001 TRO SINDEX,1; AND FLAG IT 000642' 202640 001056' MOVEM SINDEX,FIRST; SAVE IT FOR . 000643' 322000 000576' JUMPE STEPEX; ONLY ONE ARG 000644' 263140 000000 EXIT; TWO ARGS 000645' 322640 000634' CMMA: JUMPE SINDEX,COMERR; THREE ARGS? 000646' 326000 000634' JUMPN COMERR; ONE ARG 000647' 434640 000656' IOR SINDEX,KK4; ASCII-IZE IT 000650' 250640 000000 EXCH SINDEX,0; SWAP EM 000651' 254000 000617' JRST GETSEQ+1 000652' 326640 000634' PER: JUMPN SINDEX,COMERR; CANT BE THIRD ARG 000653' 200640 001056' MOVE SINDEX,FIRST; RETREIVE POINT 000654' 242640 777777 LSH SINDEX,-1; RIGHT JUSTIFY 000655' 254000 000617' JRST GETSEQ+1 000656' 140603 014060 KK4: OCT 140603014060; 00000 EDITOR V.003 1 APRIL 1968 MACRO 10 05:51 24-APR-78 PAGE 28 EDITOR MAC 24-APR-78 03:01 DECSET - AUGUST 25, 1965 SUBTTL DECSET - AUGUST 25, 1965 001000 FOPEN=1000 ;SET FILE OPEN (*SN,NAME) 000657' 603200 001000 DECINI: TLNE FL,FOPEN; IF A FILE IS NOT ALREADY OPEN ; THEN GOTO NORMAL PROCESS ERR 1 ; IF FILE OPEN ,MUST CLOSE W. E 000660' 264040 000162' JSR 1 ,ERRORX 000661' 403200 001060' DECIN1: SETZB FL,WBC; ZERO FLAGS AND WORD COUNT 000662' 402000 001012' CLEARM DTNAME; FILE NAME 000663' 402000 001013' CLEARM DTNAME+1; AND EXTENSION 000664' 402000 001014' CLEARM DTNAME+2; AND DATE 000665' 260140 000710' CAL GTCHAR; GET UNIT NUMBER 000666' 301000 000060 CAIL 60; IT MUST BE A NUMBER 000667' 303000 000070 CAILE 70; 000670' 254000 000665' JRST .-3; IGNORE ANYTHING ELSE 000671' 137000 001337' DPB [POINT 5,PLUNK,23]; DUMP INTO INIT COMMAND 000672' 260140 000710' CAL GTCHAR; NEXT CHARACTER 000673' 302000 000054 CAIE 54; COMMA? 000674' 254000 000672' JRST .-2; IGNORE ALL ELSE 000675' 200040 001340' LOOP0: MOVE 1,[POINT 6,DTNAME]; INITIALIZE NAME POINTER 000676' 201540 000006 MOVEI C,6; MAX NAME LENGTH 000677' 260140 000710' LOOP: CAL GTCHAR; GET A CHARACTER 000700' 301000 000060 CAIL "0"; NUMBERS AND LETTERS ONLY COME HERE 000701' 303000 000071 CAILE "9"; SO HERE FILTER NUMBERS 000702' 254000 001000' JRST LOOP1; IT IS A LETTER 000703' 640000 000040 LOOP2: TRC 40; NUMBER - MAKE IT SIXBIT 000704' 136000 000001 IDPB 1; STORE INTO NAME (OR EXTENSION) 000705' 367540 000677' SOJG C,LOOP; COUNT DOWN FOR SIZE 000706' 260140 000710' CAL GTCHAR; NEXT CHARACTER 000707' 254000 000706' JRST .-1; EDITOR V.003 1 APRIL 1968 MACRO 10 05:51 24-APR-78 PAGE 29 EDITOR MAC 24-APR-78 03:01 DECSET - AUGUST 25, 1965 000710' 134000 000005 GTCHAR: ILDB IPT; LOAD ONE CHARACTER 000711' 306000 000015 CAIN 15; CRT 000712' 254000 000727' JRST GET1; SNEAK EXIT 000713' 306000 000056 CAIN "."; AN EXTENSION IS COMMING 000714' 254000 001004' JRST GET2; FIX IT UP 000715' 302000 000033 CAIE 33; THE FUNNY ALTMODE 000716' 306000 000175 CAIN 175; AND THE REAL ONE 000717' 254000 000726' JRST GET11 ;CAUSE EXIT TO OCCUR 000720' 306000 000012 CAIN 0,12 ;LF CHAR? 000721' 254000 000727' JRST GET1 ; YES TREAT AS CR 000722' 302000 000001 CAIE 1; CONTROL A 000723' 263140 000000 EXIT; NOTA SO EXIT HAPPY 000724' 661200 000100 TLO FL,100; SET CONTROL A FLAG 000725' 254000 000710' JRST GTCHAR; GET ANOTHER CHARACTER 000726' 661200 000002 GET11: TLO FL,2 ;NEW FILE FLAG 000727' 262140 000000 GET1: UNSAVE; POP OFF EXIT 000730' 201000 001050' GO: MOVEI DTOBUF; THESE TWO INSTRUCTIONS REQUIRED 000731' 506000 000736' HRLM PLUNK+1; REQUIRED TO LINK LEFT HALF 000732' 200000 001057' MOVE SJOBFF; RESET JOB AREA 000733' 202000 000000* MOVEM JOBFF; TO PREVENT STORAGE EAT-UP 000734' 041140 000000 INIT DT,0; INITIALIZE DECTAPE 000735' 446441 000000 PLUNK: SIXBIT /DTA/; RIGHT HALF SET ABOVE 000736' 000000 001053' XWD 0,DTIBUF; LEFT HALF SET ABOVE ERR 5; UNIT NOT AVAILABLE 000737' 264240 000162' JSR 5,ERRORX 000740' 205000 400000 MOVSI 400000; USE BIT 000741' 412000 001062' ANDCAM DTB; CLEAR IT 000742' 541000 001062' HRRI DTB; HEAD OF BUFFER 000743' 202000 001053' MOVEM DTIBUF; SETUP IN HEADER 000744' 065140 000001 OUTBUF DT,1; SET UP SINGLE BUFFER 000745' 623200 000100 TLZE FL,100; NEW DIRECTORY? 000746' 047140 000013 CALLI DT,13; YES, ZONK IT (UTPCLR) 000747' 336000 001012' SKIPN DTNAME; NO NAME MEANS JUST CLEAR, PROB 000750' 254000 000133' JRST FINIS2; SO EXIT AND CLOSE FILE 000751' 076140 001012' LOOKUP DT,DTNAME; IS THE NAME ALRRADY THERE 000752' 254000 000772' JRST NEWFIL; NO, SO WE ENTER IT 000753' 603200 000002 TLNE FL,2; ARE WE ASKING FOR A NEW FILE ERR 10; YES, FAU 000754' 264400 000162' JSR 10,ERRORX 000755' 200100 001013' DOIT: MOVE 2,DTNAME+1; GET LINK 000756' 074142 000000 USETI DT,(2); SET IT UP 000757' 067140 000000 OUTPUT DT,; MAKE SYSTEM HAPPY 000760' 075142 000000 USETO DT,(2); SET UP OUTPUT ALSO 000761' 627200 000010 TLZN FL,10; NEW FILE? 000762' 254000 000767' JRST DOIT1; NO, ALMOST DONE 000763' 402000 001063' SETZM WBF; WE MUST FORCE AN EMPTY BLOCK 000764' 661200 000001 TLO FL,1; SET BUFFER FULL FLAG 000765' 402000 001060' SETZM WBC; ZERO LENGTH 000766' 660200 000530 TRO FL,S3+S5+S6+S8; INITIAL STATE, FIRST BLOCK MODIFIED 000767' 202100 000135' DOIT1: MOVEM 2,THSBLK; SETUP CURRENT BLOCK NUMBER 000770' 661200 001000 TLO FL,FOPEN; SET FILE STATUS TO OPEN EDITOR V.003 1 APRIL 1968 MACRO 10 05:51 24-APR-78 PAGE 29-1 EDITOR MAC 24-APR-78 03:01 DECSET - AUGUST 25, 1965 000771' 254000 001035' JRST COMLEV; ALL DONE EDITOR V.003 1 APRIL 1968 MACRO 10 05:51 24-APR-78 PAGE 30 EDITOR MAC 24-APR-78 03:01 DECSET - AUGUST 25, 1965 000772' 607200 000002 NEWFIL: TLNN FL,2; WAS ALTMOD STRUCK ERR 11; NO, NCF 000773' 264440 000162' JSR 11,ERRORX 000774' 077140 001012' ENTER DT,DTNAME; PUT IN DI ERR 6; DCE 000775' 264300 000162' JSR 6,ERRORX 000776' 661200 000010 TLO FL,10; SET NEW FILE FLAG 000777' 254000 000755' JRST DOIT; 001000' 301000 000101 LOOP1: CAIL "A"; LETTER CHECK 001001' 303000 000132 CAILE "Z"; IT MUST VERILY BE A LETTER 001002' 254000 000677' JRST LOOP; WE IGNORE IT 001003' 254000 000703' JRST LOOP2; WE PROCESS IT 001004' 332000 001013' GET2: SKIPE DTEXTN; EXTENSION? ERR 1; ALREADY GOT ONE, CANT HAVE TWO 001005' 264040 000162' JSR 1,ERRORX 001006' 621040 770000 TLZ 1,770000; MAGIC TO BYTE POINTER TO POINT TO NEXT 001007' 201540 000003 MOVEI C,3; ONLY 3 LETTERS IN EXTENSION 001010' 262140 000000 UNSAVE; POP OF SOME GARBAGE 001011' 254000 000677' JRST LOOP; RETURN TO LISTEN 001012' 000000 000000 DTNAME: 0; FILE NAME 001013' 000000 000000 DTEXTN: 0; FILE EXTENSION 001014' 000000 000000 DTDATE: 0; DATE 001015' 000000 000000 0; DUMMY 001013' FBNUM=DTEXTN EDITOR V.003 1 APRIL 1968 MACRO 10 05:51 24-APR-78 PAGE 31 EDITOR MAC 24-APR-78 03:01 INITIA - AUGUST 25, 1965 SUBTTL INITIA - AUGUST 25, 1965 000001 AL=1 001016' 047000 000000 INITIA: CALLI 0,0; RESET SYSTEM 001017' 041100 000001 INIT TYP,AL; RESET CONCOLE 001020' 646471 000000 SIXBIT /TTY/ 001021' 001042' 001045' XWD TYOBUF,TYIBUF 001022' 254200 000000 HALT 001023' 064100 000001 INBUF TYP,1; SET UP ONE INPUT BUFFER 001024' 065100 000002 OUTBUF TYP,2; AND TWO OUTPUT BUFFERS 001025' 200000 000733* MOVE JOBFF; SAVE FIRST FREE 001026' 202000 001057' MOVEM SJOBFF; FOR LATER RESTART 001027' 067100 000000 OUTPUT TYP,0; MAKE SYSTEM HAPPY 001030' 200700 001041' INITIX: MOVE CINDEX,KK1; INITIALIZE STEP TO 10 001031' 201140 001303' MOVEI PDP,PDSTAK-1; INITIALIZE PUSHDOWN POINTER 001032' 403640 000004 CLEARB SINDEX,FL; FLAGS AND SEQUENCE INDEX 001033' 211400 000001 MOVNI P,1; AND FIRST BLOCK POINTER 001034' 402000 001060' CLEARM WBC; WORD COUNT 001035' 260140 000160' COMLEV: CAL CRT; A COMMON RETURN 001036' 301200 000000 CAIL FL,0 ; DDE ERROR 001037' 254000 000137' JRST OUTTER ; NO, SO OFF TO LISTEN CONTROL 001040' 254000 001016' JRST INITIA ; YES GO RESET WORLD ;BUFFERS, ET. AL. 001041' 140603 014260 KK1: OCT 140603014260; 00010 001042' TYOBUF: BLOCK 3 001045' TYIBUF: BLOCK 3 001050' DTOBUF: BLOCK 3 001053' 000000 000000 DTIBUF: 0 001054' 000700 000000 XWD 700,0; SELF ASSIGNED BUFFERS, ETC. 001055' 000000 000000 0 001056' 000000 000000 FIRST: 0 001057' 000000 000000 SJOBFF: 0 001060' 000000 000000 WBC: 0; WORKING BUFFER COUNT 001061' 000000 000000 0 001062' 000200 001062' DTB: XWD 200,DTB; DECTAPE HEADER 001063' 000000 000000 WBF: 0 001064' WB: BLOCK 217; THE WORKING BUFFER 001303' 624563 456400 RESTT: SIXBIT .RESET. 001304' PDSTAK: BLOCK 7; PUSHDOWN STAK 001313' TTB: BLOCK 23; TELETYPE BUFFER-BUFFER 001336' 000000 000000 TTB16: 0 001314' TTB1=TTB+1 001046' TYIBF1=TYIBUF+1 001047' TYIBF2=TYIBUF+2 001043' TYOBF1=TYOBUF+1 001051' DTOBF1=DTOBUF+1 EXTERNAL JOBFF EDITOR V.003 1 APRIL 1968 MACRO 10 05:51 24-APR-78 PAGE 31-1 EDITOR MAC 24-APR-78 03:01 INITIA - AUGUST 25, 1965 001337' EDEND: 001016' END INITIA NO ERRORS DETECTED PROGRAM BREAK IS 001341 9K CORE USED EDITOR V.003 1 APRIL 1968 MACRO 10 05:51 24-APR-78 PAGE 32 EDITOR MAC 24-APR-78 03:01 SYMBOL TABLE AC1 000001 AC2 000002 AC3 000005 AC4 000006 AL 000001 ASCIA 000305' ATSALL 000004' BACK 000262' BACK1 000252' C 000013 CAL 260140 000000 CINDEX 000016 CLEARE 000246' CMMA 000645' COMERR 000634' COMLEV 001035' COTP 000014 CRM 000171' CRT 000160' CSIZE 000414' DECIN1 000661' DECINI 000657' DELETE 000425' DELOOP 000426' DEQ 000447' DEX 000450' DINB 000451' DOIT 000755' DOIT1 000767' DREST 000465' DT 000003 DTB 001062' DTDATE 001014' DTEXTN 001013' DTIBUF 001053' DTNAME 001012' DTOBF1 001051' DTOBUF 001050' DUMPB 000106' DUMX 000122' EDEND 001337' EMPT 000436' EOMLOP 000562' EOMOUT 000571' EPT 000204' ERRORX 000162' ERROX1 000166' ERROX2 000167' ERT 000172' ETEST 000626' EXIT 263140 000000 FBNUM 001013' EDITOR V.003 1 APRIL 1968 MACRO 10 05:51 24-APR-78 PAGE 32-1 EDITOR MAC 24-APR-78 03:01 SYMBOL TABLE FILLB 000000' FILLB1 000041' FIND 000333' FIND1 000334' FIND2 000335' FIND3 000400' FIND3A 000372' FIND4 000365' FINDA 000360' FINDC 000367' FINDEQ 000402' FINDES 000406' FINDR 000370' FINDX 000353' FINIS2 000133' FINISH 000131' FIRST 001056' FL 000004 FOPEN 001000 GE2SEQ 000502' GET 000045' GET0 000055' GET1 000727' GET11 000726' GET2 001004' GETCHR 000612' GETF 000075' GETL 000073' GETL1 000100' GETLIN 000547' GETN 000047' GETNEX 000533' GETSEQ 000616' GEX 000507' GO 000730' GTCHAR 000710' IAMTEM 000136' INDEX 000011 INITIA 001016' INITIX 001030' INSE 000205' INSE1 000235' INSE16 000245' INSE2 000210' INSE3 000216' INSED 000227' INSEG 000264' INSER 000272' INSEX 000276' IPT 000005 ITAB 000303' JOBFF 001025' EXT K1 000326' EDITOR V.003 1 APRIL 1968 MACRO 10 05:51 24-APR-78 PAGE 32-2 EDITOR MAC 24-APR-78 03:01 SYMBOL TABLE K2 000327' K3 000330' K4 000331' K5 000332' KK1 001041' KK4 000656' KKK1 000600' LAST 000017 LOOP 000677' LOOP0 000675' LOOP1 001000' LOOP2 000703' NEWFIL 000772' OTL1 000607' OTLINE 000601' OTSEQ 000541' OTSEQ4 000545' OUTTER 000137' P 000010 PDP 000003 PDSTAK 001304' PER 000652' PLUNK 000735' PNEXT 000522' PRINT 000471' PRLOOP 000472' RESTT 001303' S0 000001 S1 000002 S2 000004 S3 000010 S4 000040 S5 000020 S6 000100 S7 000200 S8 000400 SAVE 261140 000000 SINDEX 000015 SJOBFF 001057' SLURP 000057' STEP 000516' STEPEX 000576' THSBLK 000135' TPT 000006 TTB 001313' TTB1 001314' TTB16 001336' TYIBF1 001046' TYIBF2 001047' TYIBUF 001045' TYOBF1 001043' TYOBUF 001042' EDITOR V.003 1 APRIL 1968 MACRO 10 05:51 24-APR-78 PAGE 32-3 EDITOR MAC 24-APR-78 03:01 SYMBOL TABLE TYP 000002 UNSAVE 262140 000000 WB 001064' WBC 001060' WBF 001063' FFFFFFFFFFFFFFF UUU UUU DDDDDDDDDDDD GGGGGGGGGGGG EEEEEEEEEEEEEEE 222222222 FFFFFFFFFFFFFFF UUU UUU DDDDDDDDDDDD GGGGGGGGGGGG EEEEEEEEEEEEEEE 222222222 FFFFFFFFFFFFFFF UUU UUU DDDDDDDDDDDD GGGGGGGGGGGG EEEEEEEEEEEEEEE 222222222 FFF UUU UUU DDD DDD GGG EEE 222 222 FFF UUU UUU DDD DDD GGG EEE 222 222 FFF UUU UUU DDD DDD GGG EEE 222 222 FFF UUU UUU DDD DDD GGG EEE 222 FFF UUU UUU DDD DDD GGG EEE 222 FFF UUU UUU DDD DDD GGG EEE 222 FFFFFFFFFFFF UUU UUU DDD DDD GGG EEEEEEEEEEEE 222 FFFFFFFFFFFF UUU UUU DDD DDD GGG EEEEEEEEEEEE 222 FFFFFFFFFFFF UUU UUU DDD DDD GGG EEEEEEEEEEEE 222 FFF UUU UUU DDD DDD GGG GGGGGGGGG EEE 222 FFF UUU UUU DDD DDD GGG GGGGGGGGG EEE 222 FFF UUU UUU DDD DDD GGG GGGGGGGGG EEE 222 FFF UUU UUU DDD DDD GGG GGG EEE 222 FFF UUU UUU DDD DDD GGG GGG EEE 222 FFF UUU UUU DDD DDD GGG GGG EEE 222 FFF UUUUUUUUUUUUUUU DDDDDDDDDDDD GGGGGGGGG EEEEEEEEEEEEEEE 222222222222222 FFF UUUUUUUUUUUUUUU DDDDDDDDDDDD GGGGGGGGG EEEEEEEEEEEEEEE 222222222222222 FFF UUUUUUUUUUUUUUU DDDDDDDDDDDD GGGGGGGGG EEEEEEEEEEEEEEE 222222222222222 LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT Request created: 24-April-1978 05:53:58 File: DSKB0 :FUDGE2.LST [8,296] Created: 20-April-1967 05:52:00 Printed: 24-April-1978 05:53:41 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:1311 File will be deleted after printing FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 1 FUDGE2 MAC 24-APR-78 03:09 2-OCT-70 ED YOURDON/VJC/DMN TITLE FUDGE2 V.011 SUBTTL 2-OCT-70 ED YOURDON/VJC/DMN ;FILE UPDATE GENERATOR ;"COPYRIGHT 1968,1969,DIGITAL EQUIPMENT CORP. MAYNARD,MASS. U.S.A." 000011 VFUDGE==11 ;VERSION NUMBER 000000 VPATCH==0 ;DEC PATCH LEVEL 000000 VCUSTOM==0 ;NON-DEC PATCH LEVEL 000137 JOBVER==137 000137 LOC JOBVER 000137 000000 000011 XWD VCUSTOM,VFUDGE+VPATCH*1000 000000' RELOC MLON ;FUDGE ACCUMULATOR DEFINITIONS 000001 A= 1 ;GENERAL COMMUNICATION AC 000002 B= 2 ;SCRATCH ACCUMULATOR 000003 T= 3 ;USED IN /C AND /X ONLY 000004 C= 4 ;SCRATCH ACCUMULATOR 000005 D= 5 ;IO DEVICE NUMBER ACCUMULATOR 000006 E= 6 ;SCRATCH ACCUMULATOR 000007 F= 7 ;FLAG ACCUMULATOR 000010 G= 10 ;DEVICE CHARACTERISTICS AC 000011 H= 11 ;USED IN GETCHR AND GETCMN 000012 P= 12 ;PUSHDOWN POINTER AC 000013 R= 13 ;PROGRAM NAME-USED IN READ,WRITE 000014 S= 14 ;SIXBIT SYMBOL ACCUMULATOR 000015 DIS= 15 ;DISPATCH ACCUMULATOR 000016 EXT= 16 ;FILE NAME EXTENSION ACCUMULATOR 000017 SW= 17 ;SWITCH UUO AC FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 2 FUDGE2 MAC 24-APR-78 03:09 2-OCT-70 ED YOURDON/VJC/DMN ;FUDGE FLAG DEFINITIONS (RIGHT HALF OF ACCUMULATOR F) 000001 DESTB== 1 ;1-DESTINATION DEVICE SEEN 000002 SAVEB== 2 ;1-SWITCH SEEN,BUT NOT EXECUTED 000004 SWTB== 4 ;1-SWITCH MODE ENTERED IN GETCHR 000010 SLSHB== 10 ;1-SWITCH MODE ENTERED WITH 000020 TTYOB== 20 ;1-NON-TTY OUTPUT;USED BY IO 000040 TTYCB== 40 ;1-NON-TTY OUTPUT;USED BY COMMAND 000100 PROGB== 100 ;1-PROGRAM NAME SEEN IN SPECIFICATION 000200 NOLOCB==200 ;1-DELETE LOCAL SYMBOLS ***VJC 000400 DEVB== 400 ;1-DEVICE NAME SEEN IN SPEC. 001000 EXTB== 1000 ;1-EXPLICIT FILE NAME EXTENSION 002000 ERRB== 2000 ;1-ERROR IN ENTRY BLOCK CHECK 004000 INFOB== 4000 ;1-VALID INFORMATION IN COMMAND 010000 CONB== 10000 ;1-CONTEXT OF <.> IS PROGRAM NAME ;0-CONTEXT OF <.> IS FILE NAME 020000 F4IB== 20000 ;1-IGNORE F4 OUTPUT 040000 CRLFTY==40000 ;1-CR,LF TYPED (FOR ERROR MSG) 100000 POPBAK==100000 ;1-XCT POPJ P, ;TO RETURN TO CALLING SEQ. 200000 XFLG== 200000 ;1-INDEX THIS FILE 400000 DTAFLG==400000 ;1-OUTPUT DEVICE IS DTA (SPECIAL INDEX) FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 3 FUDGE2 MAC 24-APR-78 03:09 2-OCT-70 ED YOURDON/VJC/DMN ;HANDY BITS FOR CALLS TO DEVCHR FOR DEVICE CHARACTERISTICS 000001 OUTBIT==1 ;1-DEVICE CAN DO OUTPUT 000002 INBIT== 2 ;1-DEVICE CAN DO INPUT 000004 DRCTRB==4 ;1-DEVICE HAS A DIRECTORY 000010 TTYBIT==10 ;1-DEVICE IS A TTY 000100 DTABIT==100 ;1-DEVICE IS A DTA 040000 LPTBIT==40000 ;1-DEVICE IS LPT 200000 DSKBIT==200000 ;1-DEVICE IS DSK ;OTHER USEFUL PARAMETER ASSIGNMENTS 000200 N== 200 ;SIZE OF MASTER AND TRAN BUFFERS 000020 XP== 20 ;SIZE OF PUSHDOWN LIST 000500 SIZE== 500 ;SIZE OF PURE ENTRY BLOCK 000505 X== SIZE+5 ;SIZE OF ENTRY AND SAVE BLOCKS 020000 IOEOF== 20000 ;1-END-OF-FILE HAS BEEN SEEN 040000 IOBKTL==40000 ;1-BLOCK-TOO-LARGE ERROR 100000 IODATA==100000 ;1-DATA ERROR 200000 IODEV== 200000 ;1-DEVICE ERROR 004000 IOBOT== 4000 ;1-MAG TAPE IS AT BEGINNING OF TAPE 000011 RIBALC==11 ;NUMBER OF BLOCKS ALLOCATED ;EXTERNAL SYMBOLS EXTERN JOBFF, JOBREL, JOBSYM, JOBSA OPDEF JSR [PUSHJ P,] ;PURE FOR RE-ENTRANT FUDGE FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 4 FUDGE2 MAC 24-APR-78 03:09 INITIALIZE AND SETUP OF FUDGE2 SUBTTL INITIALIZE AND SETUP OF FUDGE2 ;THIS SECTION OF CODING DOES THE FOLLOWING THINGS ; 1.RESETS ALL IO DEVICES BY CALLING [SIXBIT /RESET/] ; 2.INITIALIZES THE TELETYPE IN ASCII-LINE MODE ; 3.TYPES A * TO SIGNIFY READINESS FOR INPUT FROM USER ; 4.SETS UP A PUSHDOWN LIST ; 5.INITIALIZES VARIOUS ACCUMULATORS, CLEARS THE FLAGS, ; AND INITIALIZES THE MSTBUF AND TRNBUF COUNTERS 000000' 255000 000000 FUDGE2: JFCL ;INCASE OF CCL ENTRY 000001' 047000 000000 RESET ;RESET I/O DEVICES 000002' 200000 005126' MOVE [XWD LOW,LOW+1] 000003' 402000 002515' SETZM LOW ;CLEAR DATA AREA 000004' 251000 005116' BLT LOWTOP-1 000005' 200000 005127' MOVE [XWD 17,11] ;TEST FOR LEVEL D 000006' 400000 000000 SETZ ;FAILED, NOT LEVEL D 000007' 607000 003400 TLNN (7B9) ;IS IT LEVEL D OR LATER? 000010' 634000 000000 TDZA ;NO 000011' 561000 777776 HRROI -2 ;THIS IS LEVEL D 000012' 202000 005111' MOVEM LEVEL ;STORE STATE 000013' 400000 000000 SETZ ;CLEAR ACC'S 000014' 201740 000001 MOVEI 17,1 ;WITH A BLT OF ZERO 000015' 251740 000017 BLT 17,17 ;FROM 0-17 000016' 041000 000001 INIT 0,1 ;INITIALIZE TTY, CHANNEL 0 000017' 646471 000000 SIXBIT /TTY/ ;TTY 000020' 004602' 004610' XWD OBUF, IBUF ;ADDRESSES FOR BUFFER HEADERS 000021' 254200 000021' HALT . ;ILLEGAL INSTRUCTION IF NO TTY 000022' 067000 000000 OUTPUT 0, ;DUMMY OUTPUT ON TTY 000023' 201040 000052 MOVEI A, "*" ;PICK UP A <*> 000024' 136040 004603' IDPB A, OBUF+1 ;TYPE IT OUT 000025' 067000 000000 OUTPUT 0, ;EMPTY THE BUFFER 000026' 200500 005125' MOVE P, XPDLST ;SET UP A PUSHDOWN POINTER 000027' 561240 000001 HRROI D,1 ;INITIALIZE DEVICE BUFFER 000030' 202240 003324' MOVEM D, DEVBUF ;... 000031' 205040 777600 MOVSI A, -N ;GET COUNT OF MSTBUF AND TRNBUF 000032' 541040 002525' HRRI A, FILBUF+1 ;INITIALIZE POINTER IN FILBUF 000033' 202040 002524' MOVEM A, FILBUF ;SET UP COUNT IN FILE BUFFER 000034' 541040 002725' HRRI A, PRGBUF+1 ;INITIALIZE POINTER IN PRGBUF 000035' 202040 002724' MOVEM A, PRGBUF ;... 000036' 541040 003124' HRRI A,PPNBUF ;INITIAL POINTER IN PPNBUF 000037' 202040 003124' MOVEM A,PPNBUF FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 5 FUDGE2 MAC 24-APR-78 03:09 FUDGE2 COMMAND STRING DISPATCHING SUBTTL FUDGE2 COMMAND STRING DISPATCHING ;THIS ROUTINE PICKS UP CHARACTERS FROM THE TELETYPE BUFFER AND ;DISPATCHES TO THE PROPER ROUTINE DEPENDING ON THE TYPE OF ;CHARACTER.A TABLE OF BYTES AND BYTE POINTERS ALLOWS EACH ;CHARACTER IN THE ASCII SET TO BE TREATED INDIVIDUALLY. THE ;ROUTINE MAY BE ENTERED AT GETCHR IF IT IS DESIRED TO ACCUMULATE ;A 6-LETTER SIXBIT SYMBOL IN AC S. SYMBOLS OF DIFFERENT LENGTHS ;MAY BE ACCUMULATED IN DIFFERENT REGISTERS BY SETTING THE CONTENTS ;OF AC B TO THE DESIRED LENGTH, AND PUTTING A BYTE POINTER IN E ;AND ENTERING THE ROUTINE AT GETCHR+4. 000040' 622340 100000 GETCHR: TRZE F,POPBAK ;IMMEDIATE RETURN? 000041' 263500 000000 POPJ P, ;YES 000042' 201100 000006 MOVEI B, 6 ;SET COUNT OF SYMBOL TO 6 000043' 200300 005117' MOVE E, SYMPTR ;SET UP A BYTE POINTER FOR AC S 000044' 201600 000000 MOVEI S, 0 ;INITIALIZE SYMBOL ACCUMULATOR 000045' 377000 004612' GETCMN: SOSG IBUF+2 ;IS TTY BUFFER EMPTY? 000046' 066000 000000 INPUT 0, ;YES, FILL IT UP 000047' 134040 004611' ILDB A, IBUF+1 ;GET A CHARACTER 000050' 200400 000001 MOVE G, A ;GET A COPY OF IT IN AC G 000051' 200000 005100' MOVE 0, CURCHR ;SAVE PREVIOUS CHAR 000052' 202000 005101' MOVEM 0, LSTCHR ;AS LAST CHAR 000053' 202040 005100' MOVEM A, CURCHR ;SAVE CURRENT CHAR 000054' 231400 000011 IDIVI G, 11 ;TRANSLATE TO 4-BIT CODE 000055' 135411 000077' LDB G, TABLE(H) ;USE PROPER BYTE POINTER 000056' 305400 000004 CAIGE G, 4 ;MODIFY CODE IF .GE. 4 000057' 606340 000004 TRNN F, SWTB ;MODIFY CODE IF IN SWITCH MODE 000060' 271400 000004 ADDI G, 4 ;CHANGE DISPATCH BY ADDING 4 000061' 550450 000065' HRRZ H, DSPTCH(G) ;GET PROPER DISPATCH ADDRESS 000062' 301400 000010 CAIL G, 10 ;BUT CHANGE IF NOT CORRECT 000063' 554450 000055' HLRZ H, DSPTCH-10(G) ;TO A LEFT HALF DISPATCH 000064' 254011 000000 JRST (H) ;EXIT TO APPROPRIATE ROUTINE FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 6 FUDGE2 MAC 24-APR-78 03:09 COMMAND DISPATCH TABLE AND BYTE POINTERS SUBTTL COMMAND DISPATCH TABLE AND BYTE POINTERS 000065' 000045' 002136' DSPTCH: XWD GETCMN,ERR16 ;IGNORED CHAR, BAD CHAR(SWITCH) 000066' 000145' 000135' XWD SWTCH, SWTCHA ;<(>, LETTER(SWITCH MODE) 000067' 000317' 002136' XWD COLON, ERR16 ;<:>, NUMBER(SWITCH MODE) 000070' 000257' 000146' XWD PERIOD,SWTCHE ;<.>, <)>ESCAPE SWITCH MODE 000071' 000156' 002147' XWD LFTARW,ERR17 ;OR<=>, BAD CHAR (NORMAL MODE) 000072' 000310' 000127' XWD COMMA, STORE ;<,>, ALPHABETIC CHARACTER(NORMAL) 000073' 000521' 000127' XWD ALTMOD,STORE ;<$>,NUMERIC CHARACTER(NORMAL) 000074' 000144' 002147' XWD SLASH, ERR17 ;, <)> ILLEGAL ESCAPE 000075' 000265' 000000 XWD LBRACK, 0 ;LEFT ANGLE BRACKET, OR "[" 000076' 000303' 000000 XWD RBRACK, 0 ;RIGHT ANGLE BRACKET 000077' 400410 000110' TABLE: POINT 4, BITE(G), 3 000100' 340410 000110' POINT 4, BITE(G), 7 000101' 300410 000110' POINT 4, BITE(G), 11 000102' 240410 000110' POINT 4, BITE(G), 15 000103' 200410 000110' POINT 4, BITE(G), 19 000104' 140410 000110' POINT 4, BITE(G), 23 000105' 100410 000110' POINT 4, BITE(G), 27 000106' 040410 000110' POINT 4, BITE(G), 31 000107' 000410 000110' POINT 4, BITE(G), 35 FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 7 FUDGE2 MAC 24-APR-78 03:09 BYTE TABLE FOR DISPATCHING SUBTTL BYTE TABLE FOR DISPATCHING ;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, SWITCH MODE ; 04 10 IGNORED CHARACTER ; 05 11 ENTER SWITCH MODE WITH A <(> ; 06 12 DEVICE DELIMITER, <:> ; 07 13 FILE EXTENSION DELIMITER, <.> ; (CAN ALSO BE PART OF A PROGRAM NAME) ; 10 14 OUTPUT SPECIFICATION, OR <=> ; 11 15 FILE DELIMITER, <,> ; 12 16 COMMAND TERMINATOR, =33,175,176 ; 13 17 ENTER SWITCH MODE WITH A ; 14 20 CHANGE CONTEXT OF PERIOD TO PROG NAME, <<> ,OR "[" ; 15 21 CHANGE CONTEXT OF PERIOD TO FILE NAME, <>> ;BYTE TABLE CORRESPONDING TO 128 ASCII CHARS 000110' 200000 000000 BITE: BYTE (4) 4,0,0,0,0,0,0,0,0 ;NUL 000111' 210421 000000 BYTE (4) 4,4,4,4,4,0,0,0,0 000112' 000000 000012 BYTE (4) 0,0,0,0,0,0,0,0,12 ;?Z=$ 000113' 500000 110100 BYTE (4) 12,0,0,0,0,11,0,4,0 ;$ 000114' 000001 230411 BYTE (4) 0,0,0,0,5,3,1,0,11 ;***DMN 000115' 017310 421042 BYTE (4) 0,7,13,2,2,2,2,2,2 ;-,.,/,0,1,2,3,4,5 000116' 104211 406215 BYTE (4) 2,2,2,2,6,0,14,10,15 ;6,7,8,9,:,;,<,=,> 000117' 000104 210421 BYTE (4) 0,0,1,1,1,1,1,1,1 ; , , ,B,C,D,E,F,G 000120' 042104 210421 BYTE (4) 1,1,1,1,1,1,1,1,1 ;H,I,J,K,L,M,N,O,P 000121' 042104 210421 BYTE (4) 1,1,1,1,1,1,1,1,1 ;Q,R,S,T,U,V,W,X,Y 000122' 070000 100021 BYTE (4) 1,14,0,0,0,10,0,1,1 ;Z,[, ,], ,?, ,A,B 000123' 042104 210421 BYTE (4) 1,1,1,1,1,1,1,1,1 ;C,D,E,F,G,H,I,J,K 000124' 042104 210421 BYTE (4) 1,1,1,1,1,1,1,1,1 ;L,M,N,O,P,Q,R,S,T 000125' 042104 210012 BYTE (4) 1,1,1,1,1,1,0,0,12 ;U,V,W,X,Y,Z, , ,$ 000126' 510000 000000 BYTE (4) 12,4 ;$,DEL FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 8 FUDGE2 MAC 24-APR-78 03:09 ROUTINES TO HANDLE 0-9,A-Z,. CHARACTERS SUBTTL ROUTINES TO HANDLE 0-9,A-Z,. CHARACTERS ;IN THE COMMAND STRING. IN NORMAL MODE, THE CHARACTER IS ;DEPOSITED TO FORM A SIXBIT SYMBOL. NOTE THAT "." IS LEGAL IN A PROGRAM NAME. ;E.G. , IF ENCLOSED IN< >. IN SWITCH MODE, THE PROPER ;INSTRUCTION IS EXECUTED WITH THE AID OF A DISPATCH TABLE. ;THEN, IF SWITCH MODE WAS ENTERED WITH A SLASH, FUDGE2 EXITS ;FROM SWITCH MODE. 000127' 660340 004000 STORE: TRO F,INFOB ; INDICATE VALID INFO SEEN 000130' 361100 000045' SOJL B, GETCMN ; JUMP IF NO ROOM FOR CHARACTER 000131' 305040 000141 CAIGE A,141 ;WORRY ABOUT LOWER CASE LETTERS 000132' 275040 000040 SUBI A, 40 ;CONVERT FROM ASCII TO SIXBIT 000133' 136040 000006 IDPB A, E ;STORE CHARACTER ACCORDING TO BYTE 000134' 254000 000045' JRST GETCMN ;RETURN FOR NEXT CHARACTER 000135' 205740 072000 SWTCHA: MOVSI SW, 072000 ;GET AN MTAPE OPCODE 000136' 301040 000141 CAIL A,141 ;ACCEPT LOWER CASE SWITCHES 000137' 275040 000040 SUBI A,40 000140' 256001 000115' XCT SLIST-101(A) ;EXECUTE PROPER SWITCH INSTRUCTION 000141' 622340 000010 TRZE F, SLSHB ;SWITCH MODE ENTERED WITH A ? 000142' 620340 000004 TRZ F, SWTB ;YES, EXIT FROM SWITCH MODE 000143' 254000 000045' JRST GETCMN ;RETURN FOR MORE CHARACTERS ;THE FOLLOWING THREE ROUTINES HANDLE THE CONTROL CHARACTERS IN ;THE COMMAND STRING WHICH CAUSE FUDGE2 TO ENTER INTO AND EXIT ;FROM SWITCH MODE. THERE ARE TWO TYPES OF SWITCH MODE, DEPENDING ;ON WHETHER THE IT IS ENTERED WITH A OR A <(>. 000144' 660340 000010 SLASH: TRO F, SLSHB ;ENTER SWITCH MODE WITH A 000145' 664340 000004 SWTCH: TROA F, SWTB ;ENTER SWITCH MODE WITH A <(> 000146' 620340 000004 SWTCHE: TRZ F, SWTB ;EXIT FROM SWITCH MODE WITH A <)> 000147' 254000 000045' JRST GETCMN ;RETURN FOR MORE CHARACTERS FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 9 FUDGE2 MAC 24-APR-78 03:09 LEFT ARROW PROCESSOR SUBTTL LEFT ARROW PROCESSOR ;THE LEFT ARROW PROCESSOR IS ENTERED BY A DISPATCH FROM THE ;COMMAND STRING. IT SIGNALS THE END OF THE DESTINGATION DEVICE ;SPECIFICATION. IF THE SIXBIT SYMBOL ACCUMULATOR S IS NON- ;ZERO, IT ASSUMES THAT THE USER HAS OMITTED THE FILE NAME DE- ;LIMITER, AND CALLS THE FILE NAME ROUTINE. A PROGRAM NAME ;SPECIFICATION IN THE OUTPUT DEVICE IS ILLEGAL. ;FLAG SETTINGS: THE DESTINATION FLAG (DESTB) IS SET TO ONE, ;THE DEVICE FLAG IS SET TO ZERO, AND THE PROGR?M NAME FLAG (PROGB) ;IS SET TO ONE SO THAT THE FIRST DEVICE AFTER THE LEFT ARROW ;WILL NOT RESULT IN A CALL TO PUTDEV. ;IF NO OUTPUT DEVICE IS SEEN DSK IS ASSUMED. ;POPBAK IS SET SO CONTROL RETURNS FRON COLON VIA GETCHR 000150' 261500 000014 NODEV: PUSH P,S ;SAVE FILE NAME 000151' 205600 446353 MOVSI S,(SIXBIT /DSK/);DSK IS DEFAULT DEVICE 000152' 660340 100000 TRO F,POPBAK ;RETURN FROM GETCHR 000153' 260500 000317' PUSHJ P,COLON ;FAKE A DEVICE SEEN 000154' 262500 000014 POP P,S ;RESTORE FILE NAME 000155' 263500 000000 POPJ P, ;RETURN 000156' 260500 000407' LFTARW: PUSHJ P, SEMICP ;DO A LOOKUP IF NECESSARY 000157' 620340 000400 TRZ F, DEVB ;SET THE DEVICE FLAG TO ZERO 000160' 660340 000101 TRO F, PROGB+DESTB ;SET PROGRAM AND DESTINATION FLAGS 000161' 254000 000040' JRST GETCHR ;RETURN FOR NEXT SYMBOL FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 10 FUDGE2 MAC 24-APR-78 03:09 THIS CODE PROCESSES PROJECT-PROGRAMMER NUMBERS SUBTTL THIS CODE PROCESSES PROJECT-PROGRAMMER NUMBERS 000162' 400140 000000 LSQB: SETZ T, ;START WITH ZERO 000163' 261500 000003 PUSH P,T ;AND STORE IT 000164' 260500 000210' LSQB1: PUSHJ P,TTYIN ;GET NEXT CHAR. 000165' 306040 000135 CAIN A,"]" ;MATCHING SQB.? 000166' 254000 000202' JRST RSQB ;YES 000167' 306040 000054 CAIN A,"," ;COMMA? 000170' 254000 000177' JRST SQBCMA ;YES,SORT OUT XWD 000171' 301040 000060 CAIL A,"0" ;IS IT AN OCTAL NUMBER? 000172' 303040 000071 CAILE A,"9" ;... 000173' 254000 000214' JRST ERRISQ ;NO,ERROR 000174' 242140 000003 LSH T,3 ;MAKE SPACE FOR NEXT CHAR. 000175' 271141 777720 ADDI T,-60(A) ;ADDI IN NEW DIGIT 000176' 254000 000164' JRST LSQB1 ;BACK FOR MORE 000177' 516152 000000 SQBCMA: HRLZM T,(P) ;STORE LEFT HALF ON STACK 000200' 400140 000000 SETZ T, ;START AFRESH 000201' 254000 000164' JRST LSQB1 ;AND GET RIGHT HALF 000202' 542152 000000 RSQB: HRRM T,(P) ;PUT RIGHT HALF ON STACK 000203' 262500 000003 POP P,T ;AND POP XWD OFF 000204' 202140 005113' MOVEM T,PRJPRG ;SAVE DEFAULT PROJ-PROG 000205' 326600 000045' JUMPN S,GETCMN ;AFTER A FILE NAME IS ONLY TEMP. 000206' 202140 005112' MOVEM T,DEFPPN ;PERMANENT DEFAULT PPN 000207' 254000 000045' JRST GETCMN ;GET NEXT CHAR. 000210' 377000 004612' TTYIN: SOSG IBUF+2 ;BUFFER EMPTY 000211' 066000 000000 INPUT 0, ;YES, FILL IT UP 000212' 134040 004611' ILDB A,IBUF+1 ;GET A CHARACTER 000213' 263500 000000 POPJ P, ;AND RETURN 000214' 201100 005130' ERRISQ: MOVEI B,[ASCIZ /?Illegal project-programmer number/] 000215' 254000 002247' JRST ERROR FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 11 FUDGE2 MAC 24-APR-78 03:09 DISPATCH TABLE FOR SWITCHES SUBTTL DISPATCH TABLE FOR SWITCHES 000216' 201640 000711' SLIST: MOVEI DIS, APPEND ;A - APPEND INSTRUCTION 000217' 260500 000250' PUSHJ P, BSWTCH ;B - BACKSPACE ONE FILE 000220' 201640 000730' MOVEI DIS, DELCPY ;C - COPY AND DELETE LOCAL SYMBOLS ***VJC 000221' 201640 000701' MOVEI DIS, DELETE ;D - DELETE INSTRUCTION 000222' 201640 000660' MOVEI DIS, EXTRCT ;E - EXTRACT INSTRUCTION 000223' 254000 002136' JRST ERR16 ;F - ERROR 000224' 254000 002136' JRST ERR16 ;G - ERROR 000225' 254000 002136' JRST ERR16 ;H - ERROR 000226' 201640 000632' MOVEI DIS, INSERT ;I - INSERT INSTRUCTION 000227' 254000 002136' JRST ERR16 ;J - ERROR 000230' 260500 000251' PUSHJ P, KSWTCH ;K - SKIPFILE 000231' 201640 000600' MOVEI DIS, LIST ;L - LIST COMMAND 000232' 254000 002136' JRST ERR16 ;M - ERROR 000233' 254000 002136' JRST ERR16 ;N - ERROR 000234' 254000 002136' JRST ERR16 ;O - ERROR 000235' 254000 002136' JRST ERR16 ;P - ERROR 000236' 254000 002136' JRST ERR16 ;Q - ERROR 000237' 201640 000621' MOVEI DIS, REPLCE ;R - REPLACE INSTRUCTION 000240' 254000 002136' JRST ERR16 ;S - ERROR 000241' 260500 000252' PUSHJ P, TSWTCH ;T - SKIP TO LOGICAL END OF TAPE 000242' 254000 002136' JRST ERR16 ;U - ERROR 000243' 254000 002136' JRST ERR16 ;V - ERROR 000244' 260500 000253' PUSHJ P, WSWTCH ;W - REWIND MAG TAPE 000245' 201640 000722' MOVEI DIS,INDEX ;X - INDEX THIS LIBRARY 000246' 254000 002136' JRST ERR16 ;Y - ERROR 000247' 260500 000254' PUSHJ P, ZSWTCH ;Z - CLEAR DIRECTORY ON DECTAPE ;MAGTAPE AND DECTAPE DEVICE SWITCH HANDLERS ;THE FOLLOWING ROUTINES HANDLE THE B,K,T,W, AND Z SWITCHES ;BY ASSEMBLING THE PROPER CALL OR UUO INSTRUCTION. IF A ;DEVICE HAS ALREADY BEEN SEEN, THE CHANNEL NUMBER IS LOADED ;INTO THE COMMAND, AND THE INSTRUCTION IS EXECUTED. OTHER- ;WISE, EXECUTION IS DEFERRED BY SETTING A FLAG AND STORING ;THE PARTIALLY ASSEMBLED INSTRUCTION. THE INSTRUCTION IS ;EXECUTED LATER, AFTER THE DEVICE HAS BEEN SEEN. 000250' 271740 000001 BSWTCH: ADDI SW, 1 ;CODE FOR BACKSPACE IS 17 000251' 271740 000006 KSWTCH: ADDI SW, 6 ;CODE FOR SKIPFILE IS 16 000252' 271740 000007 TSWTCH: ADDI SW, 7 ;CODE FOR SKIP TO L.E.O.T. IS 10 000253' 344740 000255' WSWTCH: AOJA SW,.+2 ;CODE FOR REWIND IS 1 000254' 200740 005123' ZSWTCH: MOVE SW, DTCLR ;DIFFERENT UUO FOR /Z 000255' 660340 000002 TRO F, SAVEB ;TURN ON THE SWITCH BIT 000256' 263500 000000 POPJ P, ;EXIT FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 12 FUDGE2 MAC 24-APR-78 03:09 PERIOD PROCESSOR SUBTTL PERIOD PROCESSOR ;THE PERIOD PROCESSOR IS CALLED BY A DISPATCH FROM GETCHR. IT ;PRECEDES A FILE NAME EXTENSION, UNLESS THE CONTEXT BIT CONB IS ;A ONE (CONB=1), IN WHICH CASE, THE PERIOD WAS FOUND INSIDE AN ;ANGLE BRACKET, INDICATING THAT IT IS PART OF A PROGRAM NAME. ;THE EXTENSION NAME IS GOTTEN BY ENTERING THE GETCHR ROUTINE ;WITH THE LENGTH SET TO THREE CHARACTERS, AND A BYTE POINTER ;SET TO STORE THE SYMOL IN ACCUMULATOR EXT. THE EXTENSION ;FLAG IS SET BY THIS ROUTINE. 000257' 602340 010000 PERIOD: TRNE F, CONB ;IS PERIOD PART OF A PROGRAM NAME? 000260' 254000 000127' JRST STORE ;YES, STORE IT IN SYMBOL 000261' 660340 001000 TRO F, EXTB ;NO, SET EXTENSION FLAG 000262' 200300 005120' MOVE E, EXTPTR ;GET ANOTHER BYTE POINTER 000263' 201100 000003 MOVEI B, 3 ;ASSEMBLE A 3-CHARACTER WORD 000264' 254000 000045' JRST GETCMN ;BUT DONT DESTROY S FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 13 FUDGE2 MAC 24-APR-78 03:09 ROUTINES TO PROCESS ANGLE BRACKETS SUBTTL ROUTINES TO PROCESS ANGLE BRACKETS ;THE FOLLOWING ROUTINES PROCESS THE LEFT ANGLE BRACKET "<" ;AND RIGHT ANGLE BRACKET ">" CHARACTERS. THEY ARE ENTERED BY ;A DISPATCH FROM THE GETCHR ROUTINE. THE ANGLE BRACKETS ;CAN ACT AS FILE NAME OR PROGRAM NAME DELIMITERS, SO A CHECK ;IS MADE TO SEE IF THE SYMBOL ACCUMULATOR IS NON-ZERO. THE ;MAIN FUNCTION OF THE ROUTINES IS TO SET OR CLEAR THE CONTEXT ;BIT CONB, WHOSE INTERPRETATION IS AS FOLLOWS: ;SETTING OF BIT MEANING ; 0 COMMAS DELIMIT FILE NAMES, AND PERIODS ; DELIMIT FILE NAME EXTENSIONS ; 1 COMMAS DELIMIT PROGRAM NAMES, AND PERIODS ; ARE PART OF A PROGRAM NAME 000265' 606340 000001 LBRACK: TRNN F, DESTB ;IS THIS THE OUTPUT DEVICE? 000266' 254000 002007' JRST ERROR1 ;YES, SYNTAX ERROR 000267' 306040 000133 CAIN A,"[" ;PROJECT-PROGRAMMER PAIR? 000270' 254000 000162' JRST LSQB ;YES, HANDLE IT 000271' 200000 005102' MOVE 0,SDEVCHR ;GET SAVED DEV CHRSTCS 000272' 607000 200100 TLNN 0,DTABIT+DSKBIT ;LAST DEVICE DSK OR DTA? 000273' 254000 000277' JRST LBRACA ;NO 000274' 200000 005101' MOVE 0,LSTCHR ;GET LAST CHAR 000275' 306000 000072 CAIN 0,72 ;WAS IT COLON? 000276' 254000 002007' JRST ERROR1 ;YES,:< ILLEGAL 000277' LBRACA: ;NO CONTINUE 000277' 260500 000407' PUSHJ P, SEMICP ;PROCESS THE FILE NAME 000300' 660340 010000 TRO F, CONB ;SET CONTEXT TO PROGRAM NAMES 000301' 350000 005077' AOS MATCH ;ADD ONE FOR EACH LEFT < ***VJC 000302' 254000 000040' JRST GETCHR ;RETURN FOR MORE CHARACTERS 000303' 322600 000305' RBRACK: JUMPE S,.+2 ;IS THERE A SYMBOL TO HANDLE? 000304' 260500 000470' PUSHJ P,COMMAP ;YES,PROCESS THE FILE NAME 000305' 620340 010000 TRZ F,CONB ;SET CONTEXT TO FILE NAMES 000306' 370000 005077' SOS MATCH ;SUBTRACT ONE FOR EACH RIGHT > ***VJC 000307' 254000 000040' JRST GETCHR ;RETURN FOR MORE CHARACTERS FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 14 FUDGE2 MAC 24-APR-78 03:09 COMMA PROCESSOR SUBTTL COMMA PROCESSOR ;THE COMMA ROUTINE IS ENTERED BY A DISPATCH FROM GETCHR. ;IT DETERMINES WHETHER THE COMMA DELIMITS A FILE NAME OR A ;PROGRAM NAME, AND TRANSFERS CONTROL EITHER TO SEMICP OR TO ;COMMAP. 000310' 606340 010000 COMMA: TRNN F, CONB ;FILE NAME OR PRGRAM NAME? 000311' 254000 000314' JRST COMMAX ;FILE NAME 000312' 260500 000470' PUSHJ P, COMMAP ;PROGRAM NAME 000313' 254000 000040' JRST GETCHR ;RETURN FOR MORE CHARACTERS 000314' 260500 000407' COMMAX: PUSHJ P, SEMICP ;FILE NAME, DO A LOOKUP 000315' 402000 005113' SETZM PRJPRG ;CLEAR TEMP. PPN 000316' 254000 000040' JRST GETCHR ;RETURN FOR MORE CHARACTERS FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 15 FUDGE2 MAC 24-APR-78 03:09 COLON PROCESSOR SUBTTL COLON PROCESSOR ;THIS ROUTINE IS ENTERED BY A DISPATCH FROM THE GETCHR ;ITS PURPOSE IS TO INITIALIZE DEVICES USED BY FUDGE2 AND ;ASSIGN THEM A CHANNEL NUMBER. IF THE DEVICE IS THE TTY, THE ;ROUTINE EXITS IMMEDIATELY, SINCE THE TTY HAS ALREADY BEEN ;INITIALIZED. IF A PROGRAM WAS NOT SEEN IN THE PREVIOUS DEVICE ;SPECIFICATION, THEN THE PRECEDING FILE HAD NO PROGRAMS ;FOLLOWING IT, AND A ZERO IS PLACED IN THE LIST STRUCTURE IN ;THE 3-WORD FILE BLOCK, SO THAT THE GETDEV ROUTINE WILL ;KNOW THAT THE ENTIRE FILE IS DESIRED. IF THE COLON ROUTINE ;IS CALLED WITH 0 IN ACCUMULATOR S, THE ROUTINE ASSUMES ;THAT SOMETHING LIKE "DTA3:FOO?DTA4:BAR,MTA0:::/R" ;WAS TYPED, AND IT PUTS A PHONY FILE NAME IN FILBUF TO KEEP ;THE BOOK-KEEPING STRAIGHT. 000317' 660340 000400 COLON: TRO F, DEVB ;DEVICE WAS SEEN IN THIS SPEC. 000320' 602340 100000 TRNE F,POPBAK ;DEFAULT "DSK" BEING SET 000321' 254000 000324' JRST .+3 ;SO DON'T CLEAR PROJ-PROG 000322' 402000 005112' SETZM DEFPPN ;CLEAR PERMANENT PPN 000323' 402000 005113' SETZM PRJPRG ;AND TEMP. ALSO 000324' 322600 000373' JUMPE S, COLONC ;NULL S IMPLIES FILES ON MTA,PTR 000325' 202600 002522' MOVEM S, COLON2 ;SAVE DEVICE FOR INIT 000326' 200400 000014 MOVE G, S ;GET A COPY OF THE DEVICE NAME 000327' 047400 000004 DEVCHR G, ;GET ITS CHARACTERISTICS 000330' 202400 005102' MOVEM G,SDEVCHR ;SAVE DEV CHRSTCS ***VJC 000331' 603400 040010 TLNE G,TTYBIT!LPTBIT ;IF EITHER TTY OR LPT 000332' 402000 005111' SETZM LEVEL ;DON'T DO EXTENDED LOOKUPS EVER 000333' 603400 000010 TLNE G, TTYBIT ;IS THE DEVICE A TTY? 000334' 254000 000040' JRST GETCHR ;YES, RETURN IMMEDIATELY 000335' 606340 000001 TRNN F, DESTB ;IS THIS THE OUTPUT DEVICE? 000336' 254000 000375' JRST COLON4 ;YES, GO CHECK SEPARATE THINGS 000337' 200240 003324' MOVE D, DEVBUF ;GET POINTER TO DEVICE NAME TABLE 000340' 252240 000344' COLON6: AOBJP D, COLON7 ;MORE DEVICES TO CHECK? 000341' 316605 003324' CAMN S, DEVBUF(D) ;HAS DEVICE ALREADY BEEN INITTED? 000342' 254000 000040' JRST GETCHR ;YES, DON'T RE-INIT IT 000343' 254000 000340' JRST COLON6 ;CHECK SOME MORE FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 16 FUDGE2 MAC 24-APR-78 03:09 COLON PROCESSOR 000344' 202605 003324' COLON7: MOVEM S, DEVBUF(D) ;STORE THE NEW DEVICE NAME 000345' 205040 777777 MOVSI A, -1 ;FIX UP THE COUNT IN THE BUFFER 000346' 272040 003324' ADDM A, DEVBUF ;... 000347' 607400 000002 TLNN G, INBIT ;CAN DEVICE DO INPUT? 000350' 254000 002015' JRST ERROR4 ;NO, ERROR 000351' 201600 000000 MOVEI S, 0 ;CLEAR OUT THE SYMBOL WORD 000352' 666340 000100 TRON F, PROGB ;WAS A PROGRAM NAME SEEN? 000353' 260500 000444' PUSHJ P, STNULL ;NO, STORE A NULL IN FILE BLOCK 000354' 200040 000005 MOVE A, D ;CALCULATE BUFFER HEADER POSITION 000355' 221040 000003 IMULI A, 3 ;3 WORDS PER BUFFER HEADER 000356' 271040 004610' ADDI A, IBUF ;ALL BUFFER HEADERS IN IBUF BLOCK 000357' 350000 005103' COLON8: AOS NUMDEV ;ONE MORE DEVICE SEEN 000360' 202040 002523' MOVEM A, COLON3 ;SAVE WORD FOR INIT 000361' 201040 000014 MOVEI A, 14 ;SET MODE TO BINARY 000362' 603400 040000 TLNE G,LPTBIT ;IS DEVICE THE LPT? 000363' 201040 000000 MOVEI A, 0 ;YES, RESTORE MODE TO ASCII 000364' 542040 002521' HRRM A, COLON0 ;SAVE MODE FOR INIT 000365' 137240 005137' DPB D, [POINT 4,COLON1,12] 000366' 256000 002462' XCT COLON1 ;DO OPEN ON DEVICE 000367' 254000 002061' JRST ERROR9 ;DEVICE NOT AVAILABLE 000370' 606340 000001 TRNN F, DESTB ;IS THIS THE OUTPUT DEVICE? 000371' 254000 000040' JRST GETCHR ;YES, NO MORE CHECKING - EXIT 000372' 607400 000004 TLNN G, DRCTRB ;DOES DEVICE HAVE A DIRECTORY? 000373' 260500 000406' COLONC: PUSHJ P, COLONB ;NO, GIVE IT A PHONY FILE NAME 000374' 254000 000040' JRST GETCHR ;RETURN FOR MORE CHARACTERS ;OUTPUT DEVICE ONLY 000375' 202600 003325' COLON4: MOVEM S, DEVBUF+1 ;SAVE THE DEVICE NAME 000376' 201240 000001 MOVEI D, 1 ;SET DEVICE NUMBER TO 1 000377' 607400 000001 TLNN G, OUTBIT ;CAN DEVICE DO OUTPUT? 000400' 254000 002015' JRST ERROR4 ;NO, ERROR 000401' 603400 000100 TLNE G,DTABIT ;IS DEVICE DTA? 000402' 660340 400000 TRO F,DTAFLG ;YES, SET IN CASE INDEXING 000403' 205040 004605' MOVSI A, OBUF+3 ;CALCULATE BUFFER HEADER ADDRESS 000404' 660340 000040 TRO F, TTYCB ;INDICATE NON-TTY IO 000405' 254000 000357' JRST COLON8 ;ENTER MAIN PROCESSING LOOP 000406' 201600 465757 COLONB: MOVEI S, 465757 ;FILE NAME OF "FOO" ;FALLS THROUGH TO SEMICP ROUTINE FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 17 FUDGE2 MAC 24-APR-78 03:09 FILE NAME PROCESSOR SUBTTL FILE NAME PROCESSOR ;THIS ROUTINE IS CALLED BY THE COMMA ROUTINE WHEN IT HAS ;BEEN DETERMINED THAT THE CONTEXT OF THE COMMA IS THAT OF A ;FILE NAME. NULL FILES ARE IGNORED BY THE ROUTINE, AND CAUSE ;AN IMMEDIATE RETURN TO GETCHR. FOR OUTPUT DEVICES, AN ENTER ;IS PERFORMED, WHILE FOR INPUT DEVICES, THE FLOW OF CONTROL IS ;AS FOLLOWS: ; 1. IF THE PREVIOUS FILE HAD NO PROGRAMS, A ZERO IS ; STORED IN THE 3RD WORD OF THE FILE BLOCK OF THAT ; FILE - THE WORD THAT ORDINARILY POINTS TO THE ; PROGRAM SUBLIST. ; 2. THE PROGRAM LIST FOR THE PREVIOUS FILE IS TERMINATED ; BY PUTTING A ZERO IN THE PROGRAM BUFFER, AND PUTTING ; A POINTER TO THE ZERO IN THE 3RD WORD OF THIS FILE ; BLOCK (NOT THE PREVIOUS BLOCK) ; 3. THE FILE NAME AND FILE NAME EXTENSION AND THE DEVICE ; CHANNEL NUMBER OF THE CURRENT FILE ARE STORED. 000407' 606340 000400 SEMICP: TRNN F,DEVB ;HAS A DEVICE BEEN SEEN? 000410' 260500 000150' PUSHJ P,NODEV ;NO, SO ASSUME "DSK" 000411' 312740 005123' CAME SW,DTCLR ;Z SWITCH? YES, OPERATE ON OUTPUT ONLY 000412' 137240 005140' DPB D, [POINT 4,SW,12] 000413' 622340 000002 TRZE F, SAVEB ;IS THERE A SWITCH TO PROCESS? 000414' 256000 000017 XCT SW ;YES, EXECUTE IT 000415' 322600 000462' JUMPE S, SEMIC3 ;IGNORE NULL FILES 000416' 626340 001000 SEMICA: TRZN F, EXTB ;EXPLICIT EXTENSION SEEN? 000417' 505700 624554 HRLI EXT, 624554 ;NO, REPLACE WITH REL" 000420' 606340 000001 TRNN F, DESTB ;OUTPUT DEVICE? 000421' 254000 000447' JRST SEMIC2 ;YES, PROCESS SEPARATELY 000422' 261500 000014 PUSH P, S ;SAVE FILE NAME 000423' 201600 000000 MOVEI S, 0 ;PUT IN A ZERO 000424' 626340 000100 TRZN F, PROGB ;WAS A PROGRAM SEEN IN PREVIOUS? 000425' 260500 000444' PUSHJ P, STNULL ;NO, CLOSE OUT PREVIOUS FILE 000426' 260500 001144' PUSHJ P, PUTPRG ;YES, CLOSE OUT PREVIOUS PRGLST 000427' 262500 000014 SEMIC4: POP P, S ;RESTORE FILE NAME 000430' 316600 005141' CAMN S,[12B5] ;IS IT * ?***DMN 000431' 254000 001675' JRST ASTRSK ;YES ***DMN 000432' 260500 001137' PUSHJ P, PUTFIL ;NO, STORE FILENAME 000433' 200600 005112' MOVE S,DEFPPN ;GET GLOBAL PPN 000434' 260500 001151' PUSHJ P,PUTPPN ;SAVE IT 000435' 200600 000016 MOVE S, EXT ;GET FILE NAME EXTENSION 000436' 260500 001137' PUSHJ P, PUTFIL ;STORE IT 000437' 542241 000000 HRRM D, (A) ;STORE CHANNEL NUMBER, ALSO 000440' 200600 005113' MOVE S,PRJPRG ;GET TEMP. PPN 000441' 260500 001151' PUSHJ P,PUTPPN ;SAVE IT ALSO 000442' 550600 002724' HRRZ S, PRGBUF ;GET A POINTER TO PROGRAM LIST 000443' 254000 001137' JRST PUTFIL ;STORE IT AND EXIT 000444' 550040 002524' STNULL: HRRZ A, FILBUF ;GET ADDRESS OF CURRENT BLOCK 000445' 402001 000000 SETZM (A) ;CLOSE OUT THE FILE 000446' 263500 000000 POPJ P, ;EXIT FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 18 FUDGE2 MAC 24-APR-78 03:09 ENTER ON OUTPUT DEVICE DIRECTORY SUBTTL ENTER ON OUTPUT DEVICE DIRECTORY 000447' 202600 004572' SEMIC2: MOVEM S, EBLOCK ;SAVE FILE NAME FOR ENTER 000450' 202700 004573' MOVEM EXT, EBLOCK+1 ;SAVE FILE NAME EXTENSION 000451' 137240 005142' DPB D, [POINT 4,SEMIC1,12] 000452' 402000 004574' SETZM EBLOCK+2 ;CLEAR DATA AND PROTECTION 000453' 200140 005102' MOVE T,SDEVCHR ;GET CHARACTERISTICS 000454' 607140 200000 TLNN T,DSKBIT ;IF NOT A DSK 000455' 402000 005111' SETZM LEVEL ;CLEAR LEVEL D FLAG 000456' 332140 005111' SKIPE T,LEVEL ;EITHER -2 OR 0 000457' 254000 000463' JRST DEFENT ;SAVE ENTRY BLOCK 000460' 256000 002463' XCT SEMIC1 ;DO AN ENTER ON THE OUTPUT DEVICE 000461' 254000 002076' JRST ERR14 ;DIRECTORY FULL 000462' 263500 000000 SEMIC3: POPJ P, ;EXIT 000463' 200140 005143' DEFENT: MOVE T,[XWD EBLOCK,SVENTR] 000464' 251140 005115' BLT T,SVENTR+1 ;SAVE EBLOCK 000465' 201140 000011 MOVEI T,RIBALC ;SET FOR 11 WORD LOOKUP 000466' 202140 004570' MOVEM T,EBLOCK-2 ;IN EXTENDED LOOKUP 000467' 254000 000462' JRST SEMIC3 ;DEFER ENTRY TIL AFTER LOOKUP FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 19 FUDGE2 MAC 24-APR-78 03:09 THE PROGRAM NAME PROCESSOR SUBTTL THE PROGRAM NAME PROCESSOR ;THE COMMAP ROUTINE IS ENTERED BY A CALL FROM THE COMMA ;ROUTINE WHEN THE CONTEXT OF A COMMA IS THAT OF A PROGRAM NAME ;DELIMITER. ITS PURPOSE IS TO SAVE UP THE PROGRAM NAMES IT SEES ;IN THE PROGRAM BUFFER PRGBUF. THE PROGRAM NAMES ARE CONVERTED ;TO RADIX 50 REPRESENTATION, AND A CALL TO PUTPRG STORES THE ;PROGRAM NAME FOR LATER REFERENCE BY THE VARIOUS FUDGE SUBROUTINES ;------------------------------------------------------------------ ;RADIX50 - SIXBIT CODE CONVERSION TABLE ;CHARACTER SIXBIT RADIX50 ;0-9 20-31 01-12 ;A-Z 41-72 13-44 ;BLANK 00 00 ;PERIOD 16 45 ;$ 04 46 ;------------------------------------------------------------------- ;THE SYMBOL IS ASSUMED TO LEFT-JUSTIFIED UPON ENTERING, AND ;IS RIGHT-JUSTIFIED BEFORE CONVERSION TO RADIX 50. ;FLAG SETTINGS: THE PROGRAM BIT PROGB IS SET TO 1, AND THE FILE ;BIT FILEB IS SET TO 0. 000470' 660340 000100 COMMAP: TRO F, PROGB ;SET PROGRAM BIT 000471' 606340 000001 TRNN F, DESTB ;IS THIS THE OUTPUT DEVICE? 000472' 254000 002007' JRST ERROR1 ;YES, SYNTAX ERROR 000473' 200300 005117' MOVE E, SYMPTR ;SET UP A BYTE POINTER TO S 000474' 201100 000006 MOVEI B, 6 ;SET COUNTER TO SIX 000475' 201200 000000 MOVEI C, 0 000476' 322600 000503' JUMPE S, COMMA1 ;NULL SYMBOL? 000477' 602600 000077 COMMA3: TRNE S, 77 ;IS SYMBOL RIGHT-JUSTIFIED YET? 000500' 254000 000503' JRST COMMA1 ;YES, GO CONVERT TO RADIX 50 000501' 241600 777772 ROT S, -6 ;NO, SHIFT IT ONE PLACE RIGHT 000502' 254000 000477' JRST COMMA3 ;CHECK AGAIN 000503' 221200 000050 COMMA1: IMULI C, 50 ;CONVERT TO RADIX50 000504' 134040 000006 ILDB A, E ;PICK UP NEXT CHARACTER IN S 000505' 322040 000516' JUMPE A, COMMA4 ;A BLANK IS A BLANK IS A BLANK! 000506' 306040 000004 CAIN A, 4 ;IS IT A <$>? 000507' 271040 000070 ADDI A, 70 ;YES, COMPENSATE FOR SUBTRACTION 000510' 306040 000016 CAIN A, 16 ;IS IT A <.>? 000511' 271040 000055 ADDI A, 55 ;YES, COMPENSATE FOR SUBTRACTION 000512' 303040 000031 CAILE A, 31 ;TRANSLATE TO RADIX 50 CODE 000513' 275040 000007 SUBI A, 7 ;LETTER - SUBTRACT 26 000514' 275040 000017 SUBI A, 17 ;NUMBER - SUBTRACT 17 000515' 270200 000001 ADD C, A ;COMBINE WITH PARTIAL WORD 000516' 367100 000503' COMMA4: SOJG B, COMMA1 ;LOOP FOR SIX CHARACTERS 000517' 200600 000004 MOVE S, C ;PUT SYMBOL BACK IN S 000520' 254000 001144' JRST PUTPRG ;STORE IT AND EXIT FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 20 FUDGE2 MAC 24-APR-78 03:09 THE ALTMODE PROCESSOR SUBTTL THE ALTMODE PROCESSOR ;THE ALTMODE SUBROUTINE IS CALLED BY A DISPATCH FROM THE ;GETCHR ROUTINE WHEN A $ IS SEEN IN THE COMMAND STRING. IT SIGNALS ;THE END OF THE COMMAND STRING. A CHECK IS MADE ON THE SYNTAX ;OF THE COMMAND STRING, TO SEE IF AN OUTPUT DEVICE WAS SPEC- ;IFIED, AND TO SEE IF A COMMAND WAS GIVEN. THE LIST ;STRUCTURE FOR THE FILE NAMES AND PROGRAM NAMES IS TERMINATED ;BY TWO CALLS TO SEMICP, THE LAST OF WHICH HAS A FILE NAME OF 0. ;THE POINTERS AT THE TOP OF THE FILBUF,PRGBUF AND DEVBUF BUFFERS ;ARE RESET FOR LATER USER BY THE VARIOUS SUBROUTINES. 000521' 606340 004000 ALTMOD: TRNN F,INFOB ; IS THERE A COMMAND? 000522' 254000 000000' JRST FUDGE2 ; NO, RESTART 000523' 260500 002243' PUSHJ P,CRLF ; ACKNOWLEDGE WITH A CR LF 000524' 660340 040000 TRO F,CRLFTY ;INDICATE CR,LF TYPED 000525' 260500 000407' PUSHJ P, SEMICP ;STORE THIS FILE NAME 000526' 201600 000000 MOVEI S, 0 ;MAKE A NULL FILE NAME 000527' 260500 000416' PUSHJ P, SEMICA ;TERMINATE THE LIST STRUCTURE 000530' 200040 005124' MOVE A, FILXWD ;SET UP A BLT POINTER TO FIX 000531' 251040 002527' BLT A, FILBUF+3 ;THE MASTER FILE PART,1ST WORD OF 000532' 402000 002530' SETZM FILBUF+4 ;FILBUF WAS JUNK,NOW 4TH WORD=0 000533' 201040 002531' MOVEI A, FILBUF+5 ;RESET POINTER TO TRANS. FILES 000534' 202040 002524' MOVEM A, FILBUF ;... 000535' 201040 003125' MOVEI A,PPNBUF+1 ;RESET PPNBUF 000536' 202040 003124' MOVEM A,PPNBUF ;AS IT WAS AT START 000537' 322640 002007' JUMPE DIS, ERROR1 ;NO COMMAND SEEN? 000540' 606340 000001 TRNN F, DESTB ;NO OUTPUT FILE MENTIONED? 000541' 254000 002007' JRST ERROR1 ;SYNTAX ERROR 000542' 332000 005077' SKIPE MATCH ;LEFT < EQU RIGHT > ?***VJC 000543' 254000 002007' JRST ERROR1 ;SYNTAX ERROR ***VJC 000544' 602340 000040 TRNE F, TTYCB ;CHANGE OUTPUT IF ON TTY 000545' 660340 000020 TRO F, TTYOB ;... ;AND FALL INTO INBUF0 FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 21 FUDGE2 MAC 24-APR-78 03:09 THE ALTMODE PROCESSOR ;SEE HOW MANY 204(8) WORD BLOCKS FIT IN JOBREL-JOBFF. ;DIVIDE THIS NUMBER BY THE NUMBER OF DEVICES ;IN DEVBUF TABLE. THIS GIVES THE NO. OF BLOCKS ;THAT CAN BE ASSIGNED TO EACH DEVICE, IF ZERO, ;NEED MORE CORE. THE REMAINDER OF THE DIVISION ;INDICATES EXTRA BLOCKS THAT MAY BE ;ALLOCATED TO OUTPUT OR INPUT DEVICES 000546' 550040 000000* INBUF0: HRRZ A, JOBREL ;GET TOP OF JOB AREA 000547' 274040 000000* SUB A,JOBFF ;BUFFER AREA AVAILABLE 000550' 231040 000204 IDIVI A, 204 ;NUMBER OF DECTAPE BLOCKS 000551' 230040 005103' IDIV A,NUMDEV ;DIVIDED BY NUMBER OF DEVICES 000552' 322040 000573' JUMPE A,INBUFG ;NOT ENOUGH CORE 000553' 201300 000002 MOVEI E,2 ;START INBUFS ON DEVICE #2 000554' 602340 000040 TRNE F, TTYCB ;IS OUTPUT ON TTY? 000555' 254000 000566' JRST INBUF1 ;NO, DO AN OUTBUF 000556' 200200 000001 INBUF2: MOVE C, A ;PICK UP NUMBER OF BLOCKS 000557' 361100 000561' SOJL A+1,.+2 ;ANY EXTRA BLOCKS? (REMAINDER) 000560' 340200 000000 AOJ C, ;YES, USE THEM 000561' 137300 005144' DPB E, [POINT 4, INBUF3,12] 000562' 256000 002464' XCT INBUF3 ;PERFORM THE INBUF 000563' 315300 000005 CAMGE E, D ;MORE DEVICES TO TAKE CARE OF? 000564' 344300 000556' AOJA E, INBUF2 ;YES, PROCESS THEM 000565' 254015 000000 JRST (DIS) ;NO, GO TO APPROPRIATE SUBROUTINE 000566' 200200 000001 INBUF1: MOVE C, A ;PICK UP NUMBER OF BLOCKS 000567' 361100 000571' SOJL A+1,.+2 ;ANY EXTRA BLOCKS? 000570' 340200 000000 AOJ C, ;YES, GIVE ONE TO OUTPUT 000571' 065044 000000 INBUF4: OUTBUF 1,(C) ;OUTBUF ON DEVICE #1 000572' 254000 000556' JRST INBUF2 ;GO DO SOME INBUFS ;ASK FOR MORE CORE 000573' 550040 000546* INBUFG: HRRZ A,JOBREL ;GET ANOTHER K OF CORE 000574' 271040 002000 ADDI A,2000 000575' 047040 000011 CORE A, 000576' 254000 002170' JRST ERR22 ;NOT AVAILABLE 000577' 254000 000546' JRST INBUF0 ;TRY TO SET UP BUFFERS FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 22 FUDGE2 MAC 24-APR-78 03:09 FUDGE2 COMMAND PROCESSORS SUBTTL FUDGE2 COMMAND PROCESSORS ;LIST PROCESSOR ;THIS ROUTINE PROCESSES THE L COMMAND IN FUDGE2. BINARY ;PROGRAMS ARE READ, AND THEIR NAMES OUTPUT, UNTIL AN END ;OF FILE IS REACHED. 000600' 606340 000020 LIST: TRNN F,TTYOB ;OUTPUT TO TTY? 000601' 254000 000610' JRST LIST1 ;MODE MUST BE ASCII 000602' 062040 000003 GETSTS 1,T ;GET STATUS 000603' 626140 000014 TRZN T,14 ;BINARY MODE SET? 000604' 254000 000610' JRST LIST1 ;NO, MUST BE ASCII 000605' 060043 000000 SETSTS 1,(T) ;CHANGE MODE TO ASCII 000606' 205140 000700 MOVSI T,700 ;SET UP NEW BYTE POINTER 000607' 202140 004606' MOVEM T,OBUF+4 ;SO WORD COUNT WILL BE CORRECT 000610' 260500 000772' LIST1: PUSHJ P, MSTGET ;GET THE MASTER DEVICE 000611' 254000 002024' JRST ERROR6 ;NOT ENOUGH ARGUMENTS 000612' 476000 005116' SETOM NOWARN ;DON'T GIVE WARNING MESSAGE IF INDEX SEEN 000613' 260500 001156' LIST2: PUSHJ P, READ ;READ A PROGRAM NAME 000614' 254000 002257' JRST EXIT ;ALL DONE 000615' 200100 000001 MOVE B, A ;GET THE PROGRAM NAME IN B 000616' 260500 002220' PUSHJ P, PTYPO ;TYPE IT OUT 000617' 260500 002243' PUSHJ P, CRLF ;TYPE A CRLF 000620' 254000 000613' JRST LIST2 ;RETURN FOR MORE PROGRAM NAMES ;REPLACE PROCESSOR ;THIS ROUTINE PROCESSES THE R COMMAND IN FUDGE2. THE TOTAL ;COMMAND STRING IS BROKEN INTO A LIST OF PROGRAMS FOR THE MASTER ;DEVICE, AND A LIST OF PROGRAMS FOR THE TRANSACTION DEVICES. ;THE ROUTINE READS THE MASTER FILE UNTIL ONE OF THE DESIRED ;REPLACEMENT PROGRAMS IS REACHED, THEN SWITCHES TO THE ;TRANSACTION DEVICE TO FIND THE PROGRAM WHICH IS TO REPLACE THE ;PROGRAM IN THE MASTER FILE. AFTER THE REPLACEMENT HAS BEEN ;EFFECTED, RESET IS CALLED TO RESTORE THE MASTER DEVICE TO ITS ;OLD POSITION. 000621' 260500 000772' REPLCE: PUSHJ P, MSTGET ;GET A PROGRAM FROM MASTER DEVICE 000622' 254000 000656' JRST IPROC7 ;NO MORE, COPY REST OF MASTER 000623' 260500 000743' PUSHJ P, COPYTO ;COPY UP TO THE PROGRAM NAME 000624' 260500 000777' PUSHJ P, TRNGET ;GET A PROGRAM FROM TRANSACTION 000625' 254000 002022' JRST ERROR5 ;USER DID NOT SUPPLY ENOUGH 000626' 260500 000751' PUSHJ P, FINDCP ;FIND THE PROGRAM AND COPY IT 000627' 306240 000002 CAIN D, 2 ;HAS THE MASTER DEVICE BEEN MOVED? 000630' 260500 001002' PUSHJ P, RESET ;YES, RESET IT 000631' 254000 000621' JRST REPLCE ;LOOK FOR MORE REPLACEMENTS FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 23 FUDGE2 MAC 24-APR-78 03:09 INSERT PROCESSOR SUBTTL INSERT PROCESSOR ;THIS SUBROUTINE PROCESSES THE I COMMAND IN FUDGE. IT READS AND ;WRITES PROGRAMS FROM THE MASTER FILE UNTIL IT FINDS THE ;PROGRAM NAME CURRENTLY POINTED TO, AT WHICH TIME IT STARTS READING ;FROM THE TRANSACTION DEVICE, MAKING AN INSERTION AT THE ;PROPER PLACE. 000632' 260500 000772' INSERT: PUSHJ P, MSTGET ;GET A PROGRAM FROM MASTER FILE 000633' 254000 000656' JRST IPROC7 ;NO MORE, COPY REST OF MASTER 000634' 260500 000743' PUSHJ P, COPYTO ;COPY UP TO A PROGRAM NAME 000635' 202200 002517' MOVEM C, SAVEAC ;SAVE SPECIAL ACCUMULATOR 000636' 200240 005145' MOVE D, [XWD ENTBLK,SVEBLK] 000637' 251244 000506 BLT D, X+1(C) ;MOVE ENTRY BLOCK INTO SAFE PLACE 000640' 260500 000777' PUSHJ P, TRNGET ;GET NEXT TRANSACTION FILE 000641' 254000 002022' JRST ERROR5 ;NOT ENOUGH TRANSACTION FILES 000642' 260500 000751' PUSHJ P, FINDCP ;FIND TRANSACTION FILE AND COPY 000643' 302240 000002 CAIE D, 2 ;HAS MASTER FILE BEEN JIGGLED? 000644' 254000 000647' JRST FIXUP ;NO, RESTORE THE ENTRY BLOCK 000645' 260500 001002' PUSHJ P, RESET ;YES, RESET IT 000646' 254000 000654' JRST INSER1 ;WRITE OUTGO BACK FOR MORE INSERTIONS 000647' 200200 002517' FIXUP: MOVE C, SAVEAC ;RESTORE SPECIAL AC 000650' 204240 005145' MOVS D, [XWD ENTBLK,SVEBLK] 000651' 251244 000000 BLT D, (C) ;RESTORE ENTRY BLOCK 000652' 201240 000002 MOVEI D, 2 ;SET UP CHANNEL AC 000653' 201640 000006 MOVEI DIS, 6 ;SET UP BUFFER HEADER INDEX 000654' 260500 001305' INSER1: PUSHJ P, WRITE ;WRITE OUT THE CURRENT FILE 000655' 254000 000632' JRST INSERT ;GO BACK FOR MORE INSERTIONS 000656' 260500 000737' IPROC7: PUSHJ P, COPY ;COPY REST OF MASTER FILE 000657' 254000 002257' JRST EXIT ;EXIT FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 24 FUDGE2 MAC 24-APR-78 03:09 EXTRACT PROCESSOR SUBTTL EXTRACT PROCESSOR ;THIS ROUTINE PROCESSES THE E COMMAND IN FUDGE. RATHER THAN ;ONE MASTER AND SEVERAL TRANSACTION FILES, ALL FILES ARE ;TREATED THE SAME. AFTER A CALL TO EITHER MSTGET OR TRNGET ;PROGRAMS ARE SEARCHED FOR AND WRITTEN ON THE OUTPUT DEVICE. 000660' 476000 005116' EXTRCT: SETOM NOWARN ;NO WARNING MESSAGE 000661' 260500 000772' PUSHJ P, MSTGET ;GET A PROGRAM FROM MASTER DEVICE 000662' 254000 000670' JRST EPROC1 ;ALL DONE WITH MASTER DEVICE 000663' 326540 000666' JUMPN R,.+3 ;ANY PROGRAMS THIS FILE? **VJC 000664' 260500 000737' PUSHJ P,COPY ;NO, COPY ENTIRE FILE ***VJC 000665' 254000 000670' JRST EPROC1 ; ***VJC 000666' 260500 000751' PUSHJ P, FINDCP ;FIND THE PROGRAM AND COPY IT 000667' 254000 000660' JRST EXTRCT ;RETURN FOR MORE MASTER PROGRAMS 000670' 201040 002531' EPROC1: MOVEI A, FILBUF+5 ;GET PROGRAM FROM TRANS BUFFER 000671' 202040 002524' MOVEM A, FILBUF ;INITIALIZE POINTER FIRST 000672' 260500 001031' EPROC2: PUSHJ P, GETDEV ;... 000673' 254000 002257' JRST EXIT ;ALL DONE 000674' 326540 000677' JUMPN R,.+3 ;ANY PROGRAMS THIS FILE? ***VJC 000675' 260500 000737' PUSHJ P,COPY ;NO, COPY ENTIRE FILE ***VJC 000676' 254000 000672' JRST EPROC2 ; ***VJC 000677' 260500 000751' PUSHJ P, FINDCP ;FIND THE PROGRAM AND COPY IT 000700' 254000 000672' JRST EPROC2 ;RETURN FOR MORE TRANS FILES FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 25 FUDGE2 MAC 24-APR-78 03:09 DELETE PROCESSOR SUBTTL DELETE PROCESSOR ;THIS ROUTINE PROCESSES THE D COMMAND IN FUDGE2. ONLY ONE ;INPUT FILE WILL BE READ, AND THE PROGRAM NAMES ASSOCIATED ;WITH ITS LIST WILL BE DELETED. 000701' 260500 000772' DELETE: PUSHJ P, MSTGET ;GET A PROGRAM TO BE DELETED 000702' 254000 000656' JRST IPROC7 ;FINISH OFF THE MASTER FILE 000703' 260500 001156' DPROC1: PUSHJ P, READ ;READ A PROGRAM 000704' 254000 002026' JRST ERROR7 ;EOF - CANT FIND IT 000705' 316540 000001 CAMN R, A ;CORRECT PROGRAM? 000706' 254000 000701' JRST DELETE ;YES, GET THE NEXT ONE 000707' 260500 001305' PUSHJ P, WRITE ;NO, WRITE THIS ONE OUT 000710' 254000 000703' JRST DPROC1 ;TRY AGAIN ;APPEND PROCESSOR ;THIS ROUTINE HANDLES THE A COMMAND IN FUDGE2. IT WILL COPY ;THE ENTIRE MASTER FILE, THEN START OBTAINING TRANSACTION ;DEVICES WITH CALLS TO TRNGET, APPENDING ONE OR MORE ;PROGRAMS FROM EACH FILE. 000711' 260500 000772' APPEND: PUSHJ P, MSTGET ;GET A PROGRAM FROM MASTER FILE 000712' 254000 002024' JRST ERROR6 ;NOT ENOUGH ARGUMENTS 000713' 260500 000737' PUSHJ P, COPY ;COPY ENTIRE FILE 000714' 201040 002531' MOVEI A, FILBUF+5 ;INITIALIZE POINTER FOR TRANS 000715' 202040 002524' MOVEM A, FILBUF ;... 000716' 260500 001031' APROC3: PUSHJ P, GETDEV ;GET A PROGRAM NAME 000717' 254000 002257' JRST EXIT ;ALL DONE 000720' 260500 000751' PUSHJ P, FINDCP ;FIND THE PROGRAM AND COPY IT 000721' 254000 000716' JRST APROC3 ;GET NEXT APPENDATION FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 26 FUDGE2 MAC 24-APR-78 03:09 DELETE PROCESSOR ;THIS ROUTINE PROCESSES THE X COMMAND (INDEX LIBRARY) ;AND FALLS INTO DELETE LOCAL SYMBOLS CODE. ;IF NOT DESIRED SKIP TO DELCPY+1 000722' 200040 003325' INDEX: MOVE A,DEVBUF+1 ;GET OUTPUT DEVICE 000723' 047040 000004 DEVCHR A, ;GET ITS CHARACTERISTICS 000724' 607040 200100 TLNN A,DSKBIT!DTABIT ;ONLY ALLOW DSK AND DTA AS LIBRARY DEVICES 000725' 254000 002172' JRST ERR23 ;GIVE ERROR MESSAGE 000726' 476000 005116' SETOM NOWARN ;NO WARNING MESSAGE IF /X 000727' 660340 200000 TRO F,XFLG ;SET INDEX FLAG ; TROA F,XFLG ;SET /X BUT NOT /C ;DELETE LOCAL SYMBOLS AND COPY PROCESSOR ;THIS ROUTINE PROCESSES THE C COMMAND ;ONLY THE MASTER FILE IS HANDLED 000730' 660340 000200 DELCPY: TRO F, NOLOCB ;SET FLAG TO DELETE LOCAL SYMBOLS 000731' 260500 000772' PUSHJ P, MSTGET ;GET A PROGRAM FROM MASTER FILE 000732' 254000 002024' JRST ERROR6 ;NOT ENOUGH ARGUMENTS 000733' 260500 000737' PUSHJ P, COPY ;COPY ENTIRE FILE 000734' 606340 200000 TRNN F,XFLG ;INDEX FLAG ON? 000735' 254000 002257' JRST EXIT ;ALL DONE 000736' 254000 001571' JRST INDEX3 ;YES DO PASS 2 FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 27 FUDGE2 MAC 24-APR-78 03:09 FUDGE2 IO SUBROUTINES SUBTTL FUDGE2 IO SUBROUTINES ;ROUTINES TO COPY FILES, COPY UP TO A GIVEN PROGRAM IN A FILE ;AND TO FIND A GIVEN PROGRAM IN A FILE AND COPY IT. ;THE COPY ROUTINE WILL COPY BINARY PROGRAMS FROM WHEREVER THE ;INPUT DEVICE HAPPENS TO BE WHEN IT IS CALLED, UP TO THE ;END OF FILE. SINCE COPY IS CALLED WITH A PUSHJ, THE END-OF- ;FILE EXIT IN INGET WILL EXIT TO THE PLACE THAT CALLED COPY. 000737' 260500 001156' COPY: PUSHJ P, READ ;READ A PROGRAM 000740' 263500 000000 POPJ P, ;EXIT WHEN ALL THROUGH FILE 000741' 260500 001305' PUSHJ P, WRITE ;WRITE OUT THE PROGRAM 000742' 254000 000737' JRST COPY ;RETURN FOR MORE PROGRAMS ;THE COPYTO ROUTINE WILL READ AND WRITE PROGRAMS FROM THE ;INPUT DEVICE UNTIL THE PROGRAM WHOSE NAME IS IN ACCUMULATOR ;R IS FOUND, AT WHICH TIME IT EXITS 000743' 260500 001156' COPYTO: PUSHJ P, READ ;READ A PROGRAM 000744' 254000 002026' JRST ERROR7 ;EOF - CANT FIND IT 000745' 316540 000001 CAMN R, A ;IS IT THE CORRECT PROGRAM? 000746' 263500 000000 POPJ P, ;YES, EXIT 000747' 260500 001305' PUSHJ P, WRITE ;NO, WRITE IT OUT 000750' 254000 000743' JRST COPYTO ;READ SOME MORE PROGRAMS FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 28 FUDGE2 MAC 24-APR-78 03:09 FUDGE2 IO SUBROUTINES ;THE FINDCP ROUTINE WILL SEARCH THE INPUT FILE FOR A PROGRAM ;WHOSE NAME IS IN ACCUMULATOR R, AND HAVING FOUND IT, WILL ;WRITE IT OUT. IF THE CONTENTS OF AC R ARE ZERO, THE ENTIRE ;FILE IS COPIED. 000751' 322540 000737' FINDCP: JUMPE R, COPY ;COPY ENTIRE FILE? 000752' 260500 001156' FIND1: PUSHJ P, READ ;READ A PROGRAM FROM INPUT FILE 000753' 254000 000757' JRST FIND2 ;EOF, TRY REWINDING AND TRYING AGAIN 000754' 312540 000001 CAME R, A ;IS THIS THE RIGHT ONE? 000755' 254000 000752' JRST FIND1 ;NO, TRY AGAIN 000756' 254000 001305' JRST WRITE ;YES, WRITE IT OUT AND EXIT 000757' 322040 002026' FIND2: JUMPE A,ERROR7 ;V3 IF EOF OUTPUT ERROR MESSAGE 000760' 260500 001024' PUSHJ P, BACKSP ;BACKSPACE THE MAG TAPE 000761' 550040 002524' HRRZ A, FILBUF ;PICK UP THE FILE POINTER 000762' 502041 000003 HLLM A, 3(A) ;CLEAR THE LOOKUP FLAG FOR DECTAPE 000763' 260500 001031' PUSHJ P, GETDEV ;SET UP THE PROGRAM AGAIN 000764' 254000 002013' JRST ERROR3 ;IMPOSSIBLE ERROR RETURN 000765' 260500 001156' FIND3: PUSHJ P, READ ;READ A PROGRAM FROM INPUT FILE 000766' 254000 002026' JRST ERROR7 ;EOF - REALLY CANT FIND IT 000767' 312540 000001 CAME R, A ;IS THIS THE RIGHT ONE? 000770' 254000 000765' JRST FIND3 ;NO, TRY AGAIN 000771' 254000 001305' JRST WRITE ;YES, WRITE IT OUT AND EXIT FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 29 FUDGE2 MAC 24-APR-78 03:09 FUDGE2 IO SUBROUTINES ;ROUTINE MSTGET RETRIEVES A PROGRAM NAME FROM THE MASTER ;DEVICE SPECIFICATIONS. IT SAVES THE POINTER IN FILBUF, ;CHANGES IT TO POINT TO ITS OWN BLOCK, THEN CALLS GETDEV 000772' 200040 002524' MSTGET: MOVE A, FILBUF ;GET THE POINTER TO CURRENT FILE 000773' 202040 002515' MOVEM A, FILSAV ;SAVE THE CURRENT POINTER 000774' 201040 002525' MOVEI A, FILBUF+1 ;CHANGE IT TO POINT TO MASTER 000775' 202040 002524' MOVEM A, FILBUF ;... 000776' 254000 001031' JRST GETDEV ;CALL COMMON ROUTINE ;ROUTINE TRNGET RETRIEVES A PROGRAM NAME FROM THE TRANSACTION ;FILES. IT RESETS THE POINTER THAT MSTGET WIPED OUT, AND CALLS ;THE COMMON PROGRAM RETRIEVAL PROGRAM GETDEV. 000777' 200040 002515' TRNGET: MOVE A, FILSAV ;GET SAVED POINTER 001000' 202040 002524' MOVEM A, FILBUF ;RESTORE IT TO ITS PLACE 001001' 254000 001031' JRST GETDEV ;CALL COMMON ROUTINE ;ROUTINE RESET RESTORES THE STATE OF THE MASTER DEVICE TO ;WHAT IT WAS JUST AFTER THE LAST TIME MSTGET WAS CALLED. IT ;SETS THE POINTER OF THE MASTER FILE BACK TO THE PREVIOUS ;PROGRAM, CALLS MSTGET, AND FINDS THE PROGRAM AGAIN 001002' 201040 002531' RESET: MOVEI A,FILBUF+5 ;START OF TRANSACTION LIST ***DMN 001003' 502040 002527' HLLM A, FILBUF+3 ;NOW CLEAR LOOKUP FLAG ON MASTER 001004' 370000 002527' SOS FILBUF+3 ;MOVE POINTER BACK ONE PROGRAM 001005' 336001 000000 RESET2: SKIPN (A) ;ANY TRANSACTION FILES ? ***DMN 001006' 254000 001012' JRST RESET3 ;NO-ALL DONE ***DMN 001007' 502041 000002 HLLM A,2(A) ;CLEAR LOOKUP FLAG ON IT ***DMN 001010' 271040 000003 ADDI A,3 ;NEXT FILE ***DMN 001011' 254000 001005' JRST RESET2 ;GO BACK FOR MORE ***DMN 001012' 260500 000772' RESET3: PUSHJ P, MSTGET ;SET UP THE MASTER DEVICE 001013' 254000 002013' JRST ERROR3 ;FUDGE ERROR-NO MASTER! 001014' 260500 001024' PUSHJ P, BACKSP ;BACKSPACE IN CASE ITS A MAG TAPE 001015' 200040 002515' MOVE A, FILSAV ;DIDDLE THE POINTERS, BECAUSE MSTGET 001016' 202040 002524' MOVEM A, FILBUF ;WILL BE CALLED AGAIN IMMEDIATELY 001017' 260500 001156' RESET1: PUSHJ P, READ ;READ A PROGRAM FROM MASTER FILE 001020' 254000 002013' JRST ERROR3 ;FUDGE ERROR-CANT FIND PROGRAM 001021' 312540 000001 CAME R, A ;IS IT THE RIGHT PROGRAM NAME? 001022' 254000 001017' JRST RESET1 ;NO, LOOK AGAIN 001023' 263500 000000 POPJ P, ;YES, EXIT 001024' 137240 005146' BACKSP: DPB D, [POINT 4, BACK0,12] 001025' 137240 005147' DPB D, [POINT 4, BACK1, 12] 001026' 137240 005150' DPB D, [POINT 4, BACK2,12] 001027' 137240 005151' DPB D, [POINT 4,BACK3,12] 001030' 254000 002465' JRST BACK0 ;GO TO POSITION MAGTAPE FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 30 FUDGE2 MAC 24-APR-78 03:09 COMMON PROGRAM RETRIEVAL PROGRAM GETDEV. SUBTTL COMMON PROGRAM RETRIEVAL PROGRAM GETDEV. ;THIS PROGRAM USES VARIOUS POINTERS AND BITS OF INFORMATION ;IN FILBUF AND PRG BUF TO RETURN TO THE USER A RADIX 50 ;PROGRAM NAME AS SEEN IN THE COMMAND STRING. THE STRUCTURE ;OF INFORMATION IN THESE TWO BUFFERS IS AS FOLLOWS: ;FILBUF IS A LIST OF 3-WORD BLOCKS OF DATA ABOUT EACH FILE. ;THE FIRST WORD IN FILBUF IS A POINTER WHICH POINTS TO THE ;FIRST WORD OF THE BLOCK CURRENTLY BEING WORKED ON BY ;THE VARIOUS SUBROUTINES OF FUDGE. WHEN THE COMMAND STRING ;IS BEING PROCESSED AND INFORMATION IS BEING STORED IN FILBUF, ;THIS POINTER IS IN THE FORM OF AN AOBJN WORD SO THAT A CHECK ;CAN BE MADE FOR BUFFER OVERFLOW. THE CONTENTS OF THE 3-WORD ;FILE BLOCK IS AS FOLLOWS: ; 1ST WORD - SIXBIT FILE NAME, OR ZERO IF THIS IS THE ; END OF THE LIST . ; 2ND WORD - LEFT HALF CONTAINS A SIXBIT FILE NAME EXTENSION ; RIGHT HALF CONTAINS THE CHANNEL NUMBER FOR ; THIS FILE. ; 3RD WORD - LEFT HALF IS ZERO IS A LOOKUP HAS NOT BEEN ; DONE ON THIS FILE NAME, AND -1 IF IT HAS. A ; LOOKUP CAN THUS BE FORECED BY ZEROING OUT THE ; LEFT HALF OF THE WORD. ; RIGHT HALF CONTAINS A POINTER TO THE LAST ; PROGRAM NAME IN PRGBUF THAT WAS REFERENCED. THE ; RIGHT HALF IS ZERO IF THERE ARE NO PROGRAM ; NAMES ASSOCIATED WITH THE FILE. ;PRGBUF IS A LIST OF PROGRAM NAMES USED BY THE FILES IN FILBUF. ;THE FIRST WORD OF PRGBUF IS A POINTER WORD WHOSE USE IS THE ;SAME AS THE FIRST WORD OF FILBUF.THE ENTRIES IN PRGBUF CONSIST ;OF A LIST OF RADIX50 SYMBOLS, ONE TO A WORD, TERMINATED BY ;A ZERO WORD. ;FUDGE2 WORKS WITH FILBUF AND PRGBUF IN TWO DISTINCTLY ;DIFFERENT WAYS: ONCE WHEN IT IS PROCESSING THE COMMAND STRING ;AND STORING THE VARIOUS FILE NAMES AND PROGRAM NAMES, AND ;ONCE WHEN IT IS USING THE INFORMATION IN THE FILES TO PROCESS ;A FUDGE COMMAND. WHEN A FILE NAME IS SEEN IN THE COMMAND STRING, ;THE STATUS OF THE PREVIOUS FILE IS CHECKED. IF THE PREVIOUS ;FILE HAD NO PROGRAM NAMES, THEN ITS POINTER WORD (3RD WORD) IS ;ZEROED OUT TO INDICATE THE ABSCENCE OF ANY PROGRAMS IN PRGBUF. ;OTHERWISE, PROCESSING BEGINS ON THE CURRENT FILE: THE FILE ;NAME, FILE NAME EXTENSION, AND CHANNEL NUMBER ARE STORED. THE ;CONTENTS OF THE POINTER WORD IN PRGBUF ARE STORED IN THE ;POINTER WORD OF THE FILE BLOCK ;ROOM IS LEFT IN FILBUF SO THAT WHEN THE CARRIAGE RETURN IS ;SEEN, FUDGE2 CAN SHUFFLE THE FIRST FILE BLOCK UP ONE WORD AND ;INSERT ANOTHER NULL. THE EFFECT OF THIS KLUDGE IS THAT WE NOW ;HAVE TWO SEPARATE LISTS IN FILBUF, A MASTER LIST, AND A ;TRANSACTION LIST. FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 31 FUDGE2 MAC 24-APR-78 03:09 COMMON PROGRAM RETRIEVAL PROGRAM GETDEV. 001031' 200100 002524' GETDEV: MOVE B, FILBUF ;GET POINTER TO FILE BLOCK 001032' 336002 000000 SKIPN (B) ;END OF LIST? (ZERO TERMINATES) 001033' 263500 000000 POPJ P, ;YES, EXIT 001034' 200040 003124' MOVE A,PPNBUF ;GET POINTER TO PPN'S 001035' 200241 000000 MOVE D,(A) ;GET GLOBAL PPN 001036' 202240 005112' MOVEM D,DEFPPN ;SAVE AS DEFAULT PPN 001037' 200241 000001 MOVE D,1(A) ;GET TEMP. PPN 001040' 202240 005113' MOVEM D,PRJPRG ;SAVE AS TEMP. PPN 001041' 271040 000002 ADDI A,2 ;INCREMENT POINTER 001042' 202040 003124' MOVEM A,PPNBUF ;SAVE NEW POINTER 001043' 550242 000001 HRRZ D, 1(B) ;GET DEVICE NUMBER FOR THIS DEVICE 001044' 331002 000002 SKIPL 2(B) ;HAS A LOOKUUP BEEN DONE? 001045' 254000 001066' JRST GET3 ;NO, GO DO LOOKUP 001046' 201640 000003 GET0: MOVEI DIS, 3 ;SET UP AC DIS 001047' 220640 000005 IMUL DIS, D ;C(DIS) = 3*C(D) 001050' 550042 000002 HRRZ A, 2(B) ;GET POINTER TO PROGRAM NAMES 001051' 322040 001060' JUMPE A, GET1 ;NULL PROGRAM LIST (NO POINTER)? 001052' 350042 000002 AOS A, 2(B) ;NO, INCREMENT POINTER BY ONE 001053' 200541 000000 MOVE R, (A) ;GET A PROGRAM NAME 001054' 326540 001063' JUMPN R, CPOPJ1 ;END OF PROGRAM LIST? 001055' 271100 000003 ADDI B, 3 ;YES, INCREMENT FILBUF POINTER 001056' 202100 002524' MOVEM B, FILBUF ;SAVE NEW POINTER 001057' 254000 001031' JRST GETDEV ;TRY NEXT FILE BLOCK 001060' 201540 000000 GET1: MOVEI R, 0 ;NO PROGRAMS, RETURN ZERO 001061' 271100 000003 ADDI B, 3 ;MOVE FILBUF POINTER TO NEXT BLOCK 001062' 202100 002524' MOVEM B, FILBUF ;SAVE THE POINTER 001063' 354012 000000 CPOPJ1: AOSA (P) ;GOOD RETURN 001064' 262512 000000 POPOUT: POP P,(P) ;POP UP ONE LEVEL 001065' 263500 000000 CPOPJ: POPJ P, ;EXIT FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 32 FUDGE2 MAC 24-APR-78 03:09 COMMON PROGRAM RETRIEVAL PROGRAM GETDEV. 001066' 137240 005152' GET3: DPB D, [POINT 4,GET3A,12] 001067' 256000 002472' XCT GET3A ;CLOSE CURRENT FILE BEFORE DOING... 001070' 200042 000000 MOVE A, (B) ;GET FILE NAME OF NEXT FILE 001071' 202040 004572' MOVEM A, EBLOCK ;SET UP FOR LOOKUP 001072' 510042 000001 HLLZ A, 1(B) ;GET FILE NAME EXTENSION 001073' 202040 004573' MOVEM A, EBLOCK+1 ;SAVE IT FOR LOOKUP 001074' 563042 000002 HRROS A, 2(B) ;SET FLAG IN LEFT HALF OF 3RD WORD 001075' 137240 005153' DPB D, [POINT 4,GET4A,12] 001076' 336040 005113' SKIPN A,PRJPRG ;GET TEMP. PPN 001077' 200040 005112' MOVE A,DEFPPN ;USE PERMANENT IF NO TEMP. 001100' 202040 004575' MOVEM A,EBLOCK+3 ;SAVE IT 001101' 202040 004571' MOVEM A,EBLOCK-1 ;FOR LEVEL D ALSO 001102' 200045 003324' MOVE A,DEVBUF(D) ;GET DEVICE 001103' 047040 000004 DEVCHR A, ;GET ITS CHARACTERISTICS 001104' 607040 200000 TLNN A,DSKBIT ;IF NOT A DSK 001105' 634140 000003 TDZA T,T ;NO EXTENDED LOOKUP 001106' 200140 005111' MOVE T,LEVEL ;GET LEVEL 001107' 256000 002473' GET4: XCT GET4A ;DO A LOOKUP ON NEW FILE 001110' 254000 001113' JRST .+3 ;NOT FOUND, TRY WITH BLANKS EXT. 001111' 402000 004575' SETZM EBLOCK+3 ;CLEAR PROJ-PROG 001112' 254000 001121' JRST DOENTR ;SUCCESSFUL RETURN FROM LOOKUP 001113' 554042 000001 HLRZ A, 1(B) ;GET THE FILE NAME EXTENSION 001114' 302040 624554 CAIE A, 624554 ;IS IT "REL" ? 001115' 254000 002043' JRST ERROR8 ;NO, DON'T GIVE HIM ANOTHER CHANCE 001116' 502042 000001 HLLM A, 1(B) ;YES, TRY LOOKUP WITH 0 EXTENSION 001117' 402000 004573' SETZM EBLOCK+1 ;CLEAR EXTENSION IN LOOKUP BLOCK 001120' 254000 001107' JRST GET4 ;TRY AGAIN 001121' 336000 005111' DOENTR: SKIPN LEVEL ;IF NOT LEVEL D 001122' 254000 001134' JRST DOXSWT ;ENTER DONE ALREADY 001123' 204140 005143' MOVS T,[XWD EBLOCK,SVENTR] 001124' 251140 004573' BLT T,EBLOCK+1 ;RESTORE EBLOCK 001125' 205140 777000 MOVSI T,777000 ;MASK FOR PROTECTION 001126' 406140 004574' ANDM T,EBLOCK+2 ;CLEAR DATE AND TIME 001127' 402000 004571' SETZM EBLOCK-1 ;CLEAR PPN 001130' 200140 005111' MOVE T,LEVEL 001131' 256000 002463' XCT SEMIC1 ;DO ENTER JRST [HRRZ T,EBLOCK+1 ;GET ERROR CODE CAIN T,17 ;PARTIAL ALLOCATION ONLY? JRST .+1 ;YES, JUST CONTINUE 001132' 254000 005154' JRST ERR14] ;ERROR 001133' 402000 005111' SETZM LEVEL ;NEVER AGAIN 001134' 602340 200000 DOXSWT: TRNE F,XFLG ;INDEX FLAG ON? 001135' 260500 001467' PUSHJ P,INDEX0 ;YES, SET UP POINTERS AND CORE 001136' 254000 001046' JRST GET0 ;AND CONTINUE FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 33 FUDGE2 MAC 24-APR-78 03:09 COMMON PROGRAM RETRIEVAL PROGRAM GETDEV. ;SHORT ROUTINES TO STORE WORDS IN THE FILE BUFFER AND PROGRAM ;BUFFER ;ROUTINE PUTFIL STORES THE CONTENTS OF ACCUMULATOR S IN THE ;NEXT FREE LOCATION IN FILBUF. IT CHECKS FOR OVERFLOW. 001137' 200040 002524' PUTFIL: MOVE A, FILBUF ;GET POINTER WORD FOR FILBUF 001140' 252040 002011' AOBJP A, ERROR2 ;INCREMENT, CHECK FOR OVERFLOW 001141' 202040 002524' MOVEM A, FILBUF ;SAVE NEW POINTER 001142' 202601 000000 MOVEM S, (A) ;SAVE FILE NAME ENTRY 001143' 263500 000000 POPJ P, ;EXIT ;ROUTINE PUTPRG STORES THE CONENTS OF ACCUMULATOR S IN THE ;NEXT FREE LOCATION IN PRGBUF. IT CHECKS FOR OVERFLOW. 001144' 200040 002724' PUTPRG: MOVE A, PRGBUF ;GET POINTER WORD FOR BUFFER 001145' 252040 002011' AOBJP A, ERROR2 ;INCREMENT, CHECK FOR OVERFLOW 001146' 202040 002724' MOVEM A, PRGBUF ;SAVE NEW POINTER WORD 001147' 202601 000000 MOVEM S, (A) ;SAVE PROGRAM NAME 001150' 263500 000000 POPJ P, ;EXIT ;ROUTINE PUTPPN STORE THE TWO PPPN NUMBER IN PPNBUF 001151' 200040 003124' PUTPPN: MOVE A,PPNBUF ;GET POINTER WORD FOR BUFFER 001152' 252040 002011' AOBJP A,ERROR2 001153' 202040 003124' MOVEM A,PPNBUF ;SAVE NEW POINTER WORD 001154' 202601 000000 MOVEM S,(A) ;SAVE PPN 001155' 263500 000000 POPJ P, ;EXIT FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 34 FUDGE2 MAC 24-APR-78 03:09 ROUTINE TO INPUT ONE PROGRAM AT A TIME SUBTTL ROUTINE TO INPUT ONE PROGRAM AT A TIME ;THE FIRST WORD THAT THE PROGRAM READS WILL BE A BLOCK HEADER. ;BLOCKS ARE READ UNTIL AN ENTRY BLOCK IS FOUND, AND THE ENTIRE ;ENTRY BLOCK IS STORED IN AN INTERNAL BUFFER,SIZE PERMITTING. ;FOLLOWING THAT, THE NAME BLOCK IS READ, AND THE NAME OF THE ;PROGRAM IS RETURNED IN ACCUMULATOR A. PROVISION IS MADE FOR ;BLOCKS OF WORD COUNT ZERO. THE SECTION OF CODING AROUND READ2 ;DELIBERATELY OMITS THIS CHECK IN ORDER TO READ IN THE NEXT ;BLOCK HEADER WITH A MINIMUM OF INSTRUCTIONS. ORDINARILY, EACH ;PROGRAM WILL BEGIN WITH AN ENTRY BLOCK, BUT THE ROUTINE WILL ;ALSO ALLOW THE PROGRAM TO BEGIN WITH A NAME BLOCK IF NO ;ENTRY BLOCK IS SEEN. 001156' 201200 003334' READ: MOVEI C, ENTBLK ;SET UP POINTER TO BUFFER 001157' 260500 001647' READ6: JSR GETIN ;GET A BLOCK HEADER 001160' 554100 000001 HLRZ B, A ;GET THE BLOCK CODE 001161' 306100 000014 CAIN B,14 ;IS IT AN INDEX BLOCK? 001162' 254000 001276' JRST READX ;YES, GET RID OF IT 001163' 306100 000004 CAIN B, 4 ;IS IT AN ENTRY BLOCK? 001164' 254000 001206' JRST READ1 ;YES, PROCESS IT 001165' 306100 000006 CAIN B, 6 ;IS IT A NAME BLOCK? 001166' 254000 001266' JRST READ7 ;YES, PROCESS IT 001167' 306100 000400 CAIN B,400 ;F4 SIGNAL WORD? 001170' 254000 001270' JRST F4I ;YES, PROCESS F4 BLOCKS 001171' 260500 001337' PUSHJ P, COUNT ;CALCULATE SIZE OF BLOCK 001172' 322100 001157' JUMPE B, READ6 ;WORD COUNT OF ZERO? 001173' 311115 004612' READ6A: CAML B, IBUF+2(DIS) ;DOES BLOCK OVERLAP IO BUFFERS? 001174' 254000 001202' JRST READ6B ;ADJUST B AND GET ANOTHER BUFFER 001175' 200055 004612' MOVE A, IBUF+2(DIS) ;NO, DIDDLE BUFFER HEADER COUNT 001176' 274040 000002 SUB A, B ;ELIMINATE BLOCK OF LENGTH C(B) 001177' 202055 004612' MOVEM A, IBUF+2(DIS) ;PUT NEW WORD COUNT BACK 001200' 272115 004611' ADDM B, IBUF+1(DIS) ;MOVE BYTE POINTER PAST BLOCK 001201' 254000 001157' JRST READ6 ;GET NEXT BLOCK 001202' 274115 004612' READ6B: SUB B, IBUF+2(DIS) ;ACCOUNT FOR REST OF THIS BUFFER 001203' 402015 004612' SETZM IBUF+2(DIS) ;FORCE ANOTHER INBUF 001204' 260500 001647' JSR GETIN ;GET ANOTHER BUFFER OF INPUT 001205' 254000 001173' JRST READ6A ;CHECK AGAIN ; THIS CODE MODIFIED 3-21-71 BY DCS (STANFORD) TO HANDLE ; MORE THAN ONE ENTRY BLOCK (FAIL AND SAIL BOTH ISSUE ; MULTIPLE ENTRY BLOCKS). 000452 SIZZ==SIZE-</22>-4 ;ACCOUNT FOR HDR BLKS, RELOC WRDS, PROGNAME 001206' 402000 003334' READ1: SETZM ENTBLK ;SAME AS (C) AT PRESENT 001207' 505200 777777 HRLI C,-1 ;AOBJN WILL OVERFLOW FIRST TIME ; BACK HERE FOR EACH NEW ENTRY BLOCK 001210' 211101 400000 READ2: MOVNI B,400000(A) ;-1 IN LH, 377777-CT IN RH 001211' 553000 000001 HRRZS A 001212' 270040 003334' ADD A,ENTBLK ;NEW COUNT IF IT FITS 001213' 303040 000452 CAILE A,SIZZ ;TOO MUCH NOW? FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 34-1 FUDGE2 MAC 24-APR-78 03:09 ROUTINE TO INPUT ONE PROGRAM AT A TIME 001214' 664340 002000 TROA F,ERRB ; YES, MARK ENTRY BLOCK TOO BIG 001215' 202040 003334' MOVEM A,ENTBLK ;NO, UPDATE USED COUNT ; HERE FOR EACH NEW WORD 001216' 606100 377777 READ23: TRNN B,377777 ;END THIS LOADER BLOCK? 001217' 254000 001233' JRST READ55 ; YES, CHECK NEXT 001220' 253100 001223' AOBJN B,NXTWRD ;TIME FOR SOME RELOC BITS? 001221' 260500 001647' JSR GETIN ;YES, GET THEM AND TOSS THEM 001222' 505100 777756 HRLI B,-22 ;AND RESET COUNT 001223' 260500 001647' NXTWRD: JSR GETIN ;GET A DATA WORD ; (ROUTINE COURTESY OF DEC LOADER) 001224' 253200 001230' AOBJN C,READ22 ;NEED TO INSERT RELOC WORD? 001225' 606340 002000 TRNN F,ERRB ;YES, UNLESS NOT INSERTING 001226' 402004 000000 SETZM (C) ; ALL ENTRY RELOCS ARE 0 001227' 270200 005160' ADD C,[XWD -22,1] ;LH 0 BEFORE ADD, SET UP NEXT 001230' 606340 002000 READ22: TRNN F,ERRB ;ARE WE INSERTING? 001231' 202044 000000 MOVEM A,(C) ; YES, PUT IT AWAY 001232' 254000 001216' JRST READ23 ;LOOP 001233' 260500 001647' READ55: JSR GETIN ;GET NEXT HEADER WORD 001234' 554100 000001 HLRZ B,A ;TYPE 001235' 306100 000004 CAIN B,4 ;ANOTHER ENTRY? 001236' 254000 001210' JRST READ2 ; YES, STORE IT ; PROGRAM NAME -- FINISH ENTRY BLOCK OUT 001237' 201100 000004 MOVEI B,4 ;ENTRY BLOCK TYPE 001240' 506100 003334' HRLM B,ENTBLK ;NOW CORRECT TYPE,,COUNT 001241' 505200 000000 HRLI C,0 ;CLEAR LH COUNT 001242' 344200 001266' AOJA C,READ7 ;STORE NAME BLOCK HEADER AND CONTINUE ; END OF DCS PATCH 3-21-71 FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 35 FUDGE2 MAC 24-APR-78 03:09 ROUTINE TO INPUT ONE PROGRAM AT A TIME 001243' 260500 001337' READ5: PUSHJ P, COUNT ;CALCULATE SIZE OF BLOCK 001244' 322100 001261' JUMPE B, READ9 ;WORD COUNT OF ZERO? 001245' 260500 001647' READ3: JSR GETIN ;GET A WORD 001246' 202044 000000 MOVEM A, (C) ;STORE IT 001247' 340200 000000 AOJ C, ;INCREMENT BUFFER POINTER 001250' 367100 001245' SOJG B, READ3 ;DONE READING YET? 001251' 306440 000002 CAIN G+1, 2 ;IS THERE A COMMON WORD? 001252' 200044 777776 MOVE A, -2(C) ;GET PROGRAM NAME IN A 001253' 322040 001261' JUMPE A, READ9 ;IGNORE WORD OF ZERO 001254' 200100 000001 MOVE B, A ;GET RID OF EXTRA BLANKS 001255' 231100 000050 READ8: IDIVI B, 50 ;TRY DIVIDING IT BY 50 001256' 326140 001261' JUMPN B+1, READ9 ;FILTERED OUT ALL THE BLANKS? 001257' 200040 000002 MOVE A, B ;NO, STORE SYMBOL AGAIN 001260' 254000 001255' JRST READ8 ;TRY ANOTHER DIVISION 001261' 602340 002000 READ9: TRNE F, ERRB ;ERROR CONDITION? 001262' 254000 002064' JRST ERR10 ;YES 001263' 606340 200000 TRNN F,XFLG ;INDEX FLAG ON? 001264' 254000 001063' JRST CPOPJ1 ;NO, SKIP EXIT 001265' 254000 001514' JRST INDEX1 ;YES SAVE ENTRIES 001266' 202044 000000 READ7: MOVEM A, (C) ;STORE NAME BLOCK HEADER 001267' 344200 001243' AOJA C, READ5 ;GO READ NAME BLOCK 001270' 660340 020000 F4I: TRO F,F4IB ;DONT OUTPUT DURING F4 SEARCH 001271' 261500 000004 PUSH P,C ;SAVE ENTRY BLOCK 001272' 260500 001346' PUSHJ P,F4 ;PASS F4 BLOCKS 001273' 262500 000004 POP P,C ;RESTORE ENTRY BLOCK 001274' 620340 020000 TRZ F,F4IB ;TURN OFF IGNORE BIT 001275' 254000 001157' JRST READ6 ;GO PROCESS NEXT PROGRAM 001276' 336000 005116' READX: SKIPN NOWARN ;DO WE WANT A MESSAGE? TTCALL 3,[ASCIZ /WARNING NO INDEX ON OUTPUT FILE - CONTINUING 001277' 051140 005161' /] 001300' 476000 005116' SETOM NOWARN ;ONCE IS ENOUGH 001301' 402015 004612' SETZM IBUF+2(DIS) ;FORCE ANOTHER INBUF 001302' 260500 001647' JSR GETIN ;INPUT THE NEXT BLOCK 001303' 370015 004612' SOS IBUF+2(DIS) ;WORD COUNT OUT BY ONE 001304' 254000 001160' JRST READ6+1 ;AND RETURN TO CODE FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 36 FUDGE2 MAC 24-APR-78 03:09 ROUTINE TO OUTPUT ONE PROGRAM AT A TIME SUBTTL ROUTINE TO OUTPUT ONE PROGRAM AT A TIME ;THE WRITE SUBROUTINE WILL OUTPUT AN ENTIRE BINARY RE- ;LOCATABLE PROGRAM AS WRITTEN BY MACRO6. IT ASSUMES THAT THE ;ENTRY BLOCK AND NAME BLOCK FOR THE PROGRAM ARE IN THE ;INTERNAL BUFFER ENTBLK, AND OUTPUTS THESE BEFORE PICKING UP ;MORE BLOCKS FROM THE CURRENT INPUT DEVICE. BLOCKS ARE READ ;AND WRITTEN UNTIL THE END BLOCK HAS BEEN PROCESSED. PROVISION I ;IS MADE FOR BLOCKS WITH A WORD COUNT OF ZERO. 001305' 275200 003334' WRITE: SUBI C, ENTBLK ;GET COUNT OF ENTRY BLOCK 001306' 322200 001314' JUMPE C, WRITE3 ;NOTHING TO OUTPUT? 001307' 201100 003334' MOVEI B, ENTBLK ;GET A POINTER IN B 001310' 200042 000000 WRITE2: MOVE A, (B) ;GET A BINARY WORD 001311' 260500 001656' PUSHJ P, OUT ;OUTPUT IT 001312' 340100 000000 AOJ B, ;INCREMENT POINTER 001313' 367200 001310' SOJG C, WRITE2 ;KEEP GOING UNTIL BUFFER EMPTY 001314' 260500 001647' WRITE3: JSR GETIN ;GET A BLOCK HEADER 001315' 554100 000001 HLRZ B,A ;GET THE BLOCK TYPE CODE ***VJC 001316' 606340 000200 TRNN F,NOLOCB ;DELETE LOCAL SYMBOLS? ***VJC 001317' 254000 001322' JRST .+3 ;NO 001320' 306100 000002 CAIN B,2 ;IS IT A SYMBOL BLOCK? ***VJC 001321' 254000 001410' JRST DELLOC ;GO DELETE LOCAL SYMBOL ***VJC ;COME BACK TO WRITE3 ***VJC ;UNLESS EXIT ON END-OF-FILE ***VJC 001322' 260500 001656' PUSHJ P, OUT ;OUTPUT IT 001323' 306100 000400 CAIN B, 400 ;IS THIS A FORTRAN IV SIGNAL WORD? 001324' 254000 001346' JRST F4 ;YES, PROCESS F4 OUTPUT 001325' 202100 002520' MOVEM B, SAVEBT ;SAVE THE BLOCK TYPE 001326' 260500 001337' PUSHJ P, COUNT ;NO, GET SIZE OF BLOCK 001327' 322100 001314' JUMPE B, WRITE3 ;WORD COUNT OF ZERO? 001330' 260500 001647' WRITE4: JSR GETIN ;OUTPUT THE BLOCK 001331' 260500 001656' PUSHJ P, OUT ;... 001332' 367100 001330' SOJG B, WRITE4 ;LOOP BACK UNTIL DONE 001333' 200040 002520' MOVE A, SAVEBT ;RETRIEVE THE BLOCK TYPE 001334' 302040 000005 CAIE A, 5 ;WAS IT AN END BLOCK? 001335' 254000 001314' JRST WRITE3 ;NO, RETURN FOR MORE BLOCKS 001336' 263500 000000 POPJ P, ;YES, EXIT FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 37 FUDGE2 MAC 24-APR-78 03:09 ROUTINE TO OUTPUT ONE PROGRAM AT A TIME ;THE COUNT SUBROUTINE CALCULATES THE LENGTH OF THE VARIOUS ;BLOCKS READ BY THE WRITE AND READ SUBROUTINES. THE POSITIVE ;WORD COUNT IS FOUND IN THE RIGHT HALF OF THE ENTRY BLOCK ;HEADER, WHICH IS ASSUMED TO BE IN AC A UPON ENTERING. THE ;LENGTH WILL BE RETURNED IN AC B, AND INCLUDES THE DATA WORDS ;(SYMBOLS, ENTRY WORDS, ETC.) AND THE SUBHEADERS, OF WHICH ;THERE IS ONE FOR EVERY 18 (DECIMIAL) DATA WORDS. THE BLOCK ;HEADER IS DESTROYED, AND IS NOT INCLUDED IN THE LENGTH. 001337' 550400 000001 COUNT: HRRZ G, A ;GET NUMBER OF WORDS 001340' 231400 000022 IDIVI G, 22 ;1SUBHEADER/18 DATA WORDS 001341' 271401 000000 ADDI G,(A) ;ADD INTO WORD COUNT 001342' 322440 001344' JUMPE G+1,.+2 ;1 EXTRA SUBHEADER FOR 001343' 340400 000000 AOJ G, ;STRAY ONES 001344' 200100 000010 MOVE B, G ;RESULTS IN AC B 001345' 263500 000000 POPJ P, ;EXIT FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 38 FUDGE2 MAC 24-APR-78 03:09 ROUTINE TO HANDLE FORTRAN OUTPUT SUBTTL ROUTINE TO HANDLE FORTRAN OUTPUT ;SUBSECTION OF THE WRITE ROUTINE TO HANDLE OUTPUT FROM THE ;FORTRAN IV COMPILER. THE MAIN OBJECT OF THE ROUTINE IS TO ;LOOK FOR THE END BLOCK. OTHER BLOCKS ARE MERELY COPIED OUT. ;THE BLOCK TYPES ARE GIVEN BY THE FOLLOWING TABLE ;---------------------------------------------------------------- ;BITS 0-17 BITS18-23 BITS 24-35 TYPE ;777777 70 N DATA STATEMENT ;777777 50 N ABSOLUTE MACHINE CODE ;777777 0 - PROGRAMMER LABELS ;777777 31 - MADE LABELS ;777777 60 - ENTRY LABELS ;777777 777776 END BLOCK ;----------------------------------------------------------------- 001346' 260500 001647' F4: JSR GETIN ;GET A FORTRAN IV BLOCK HEADER 001347' 260500 001405' PUSHJ P, OUT4 ;OUTPUT IT 001350' 641040 777777 TLC A, -1 ;TURN ONES TO ZEROES IN LEFT HALF 001351' 603040 777777 TLNE A, -1 ;NO, WAS LEFT HALF ALL ONES? 001352' 254000 001346' JRST F4 ;NO, IT WAS CALCULATED MACHINE CODE 001353' 306040 777776 CAIN A, -2 ;YES, IS RIGHT HALF = 777776? 001354' 254000 001372' JRST ENDST ;YES, PROCESS F4 END BLOCK 001355' 135100 005173' LDB B, [POINT 6,A,23];GET CODE BITS FROM BITS 18-23 001356' 620040 770000 TRZ A, 770000 ;THEN WIPE THEM OUT 001357' 302100 000070 CAIE B, 70 ;IS IT A DATA STATEMENT? 001360' 306100 000050 CAIN B, 50 ;IS IT ABSOLUTE MACHINE CODE? 001361' 254000 001365' JRST MACHCD ;YES, TREAT IT LIKE DATA STATEMENTS 001362' 260500 001647' JSR GETIN ;NO, ITS A LABEL OF SOME SORT 001363' 260500 001405' PUSHJ P, OUT4 ;WHICH CONSISTS OF ONE WORD 001364' 254000 001346' JRST F4 ;LOOK FOR NEXT BLOCK HEADER 001365' 550100 000001 MACHCD: HRRZ B, A ;GET THE WORD COUNT IN AC B 001366' 260500 001647' JSR GETIN ;INPUT A WORD 001367' 260500 001405' PUSHJ P, OUT4 ;OUTPUT IT 001370' 367100 001365' SOJG B, MACHCD ;LOOP BACK FOR REST OF THE BLOCK 001371' 254000 001346' JRST F4 ;GO LOOK FOR NEXT BLOCK 001372' 201100 000001 ENDST: MOVEI B,1 ;TWO WORDS, FIVE TABLES, ONE WORD, ONE TABLE 001373' 201200 000006 MOVEI C,6 ;TO GO 001374' 260500 001647' F4LUP1: JSR GETIN ;GET TABLE MEMBER 001375' 260500 001405' F4LUP3: PUSHJ P,OUT4 ;OUTPUT WORD 001376' 365100 001374' SOJGE B,F4LUP1 ;LOOP WITHIN A TABLE 001377' 321200 001065' JUMPL C,CPOPJ ;LAST TABLE - RETURN 001400' 367200 001402' SOJG C,F4LUP2 ;FIRST TWO WORDS AND FIVE TABLES 001401' 322200 001374' JUMPE C,F4LUP1 ;COMMON LENGTH WORD 001402' 260500 001647' F4LUP2: JSR GETIN ;READ HEADER WORD 001403' 200100 000001 MOVE B,A ;COUNT TO COUNTER 001404' 254000 001375' JRST F4LUP3 ;STASH 001405' 606340 020000 OUT4: TRNN F,F4IB ;DONT DO OUTPUT? 001406' 260500 001656' PUSHJ P,OUT ;YES, DO OUTPUT 001407' 263500 000000 POPJ P, ;RETURN FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 39 FUDGE2 MAC 24-APR-78 03:09 ROUTINE TO DELETE LOCAL SYMBOLS FROM SYMBOL BLOCK SUBTTL ROUTINE TO DELETE LOCAL SYMBOLS FROM SYMBOL BLOCK ;ALL LOCAL AND SUPPRESSED LOCAL SYMBOLS ARE DELETED ;EXTERNALS,INTERNAL AND SUPPRESSED INTERNALS ARE NOT DELETED. 001410' 552040 005047' DELLOC: HRRZM A,BSZ ;SIZE OF SYMBOL BBLE 001411' 260500 001461' PUSHJ P,DELINI ;CLEAR NEW HEADER & RELOC WORDS ;SET PB = SYMBLK+2 001412' 260500 001647' DELGTR: JSR GETIN ;GET RELOCATION WORD 001413' 202040 005052' MOVEM A,RELOCS ;SAVE IT 001414' 200040 005122' MOVE A,PTGR ;INIT POINTER TO GET 001415' 202040 005050' MOVEM A,PTGRS ;RELOCATION WORD 001416' 260500 001647' DELGT1: JSR GETIN ;GET FIRST WORD OF PAIR 001417' 134000 005050' ILDB 0,PTGRS ;GET RELOCATION BITS & HOLD 001420' 603040 100000 TLNE A,(1B2) ;IS SYMBOL LOCAL? 001421' 254000 001435' JRST DELDEC ;YES, DON'T COPY 001422' 202043 000000 MOVEM A,0(T) ;STORE FIRST WORD 001423' 260500 001647' JSR GETIN ;GET SECOND WORD INTO A 001424' 202043 000001 MOVEM A,1(T) ;STORE SECOND WORD 001425' 136000 005051' IDPB 0,PTSRS ;STORE RELOCATION BITS 001426' 201040 000002 MOVEI A,2 ;COUNT WORDS STORED 001427' 272040 005053' ADDM A,SYMBLK ;I.E. UPDATE WORD COUNT 001430' 271140 000002 ADDI T,2 ;UPDATE NEXT LOCATION TO STORE 001431' 200040 005051' MOVE A,PTSRS ;HAVE WE STORED 9 001432' 607040 770000 TLNN A,770000 ;SYMBOL PAIRS? 001433' 260500 001447' PUSHJ P,DELWRT ;YES, WRITE IT OUT 001434' 254000 001436' JRST DELDEC+1 ;ALREADY HAVE 2ND WORD 001435' 260500 001647' DELDEC: JSR GETIN ;GET SECOND WORD INTO A 001436' 370000 005047' SOS BSZ ;HAVE WE EXHAUSTED 001437' 377000 005047' SOSG BSZ ;ALL WORDS IN BLOCK? 001440' 254000 001445' JRST DELFIN ;YES, NONE LEFT 001441' 200040 005050' MOVE A,PTGRS ;HAVE WE GOT 9 001442' 603040 770000 TLNE A,770000 ;SYMBOL PAIRS YET? 001443' 254000 001416' JRST DELGT1 ;NO, GET NEXT PAIR 001444' 254000 001412' JRST DELGTR ;YES, GET RELOCATION 001445' 260500 001447' DELFIN: PUSHJ P,DELWRT ;ORIGINAL BLOCK EMPTY NOW 001446' 254000 001314' JRST WRITE3 ;GET NEXT BLOCK FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 40 FUDGE2 MAC 24-APR-78 03:09 ROUTINE TO WRITE OUT NEW SYMBOL BBLE SUBTTL ROUTINE TO WRITE OUT NEW SYMBOL BBLE 001447' 336040 005053' DELWRT: SKIPN A,SYMBLK ;ANYTHING TO WRITE 001450' 254000 001461' JRST DELINI ;NO, CAN LEAVE 001451' 550000 000001 HRRZ 0,A ;GET WORD COUNT 001452' 505040 000002 HRLI A,2 ;PUT IN BLOCK TYPE 001453' 260500 001656' PUSHJ P,OUT ;WRITE BLOCK HEADER 001454' 201100 005053' MOVEI B,SYMBLK ;LOC OF FIRST WORD 001455' 271100 000001 DELWRU: ADDI B,1 ;LOC OF RELOC WORD 001456' 200042 000000 MOVE A,0(B) ;GET WORD 001457' 260500 001656' PUSHJ P,OUT ;OUTPUT 001460' 365000 001455' SOJGE 0,DELWRU ;ALL THROUGH? ;ROUTINE TO INITIALIZE NEW SYMBOL BBLE 001461' 402000 005053' DELINI: SETZM SYMBLK ;YES, CLEAR COUNT 001462' 402000 005054' SETZM SYMBLK+1 ;CLEAR RELOCATION 001463' 200040 005121' MOVE A,PTSR ;INIT POINTER 001464' 202040 005051' MOVEM A,PTSRS ;FOR STORING NEW RELOC 001465' 201140 005055' MOVEI T,SYMBLK+2 ;SET TO STORE FIRST GLOBAL 001466' 263500 000000 POPJ P, FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 41 FUDGE2 MAC 24-APR-78 03:09 ROUTINES TO INDEX THE LIBRARY SUBTTL ROUTINES TO INDEX THE LIBRARY COMMENT * THE INDEXING OF LIBRARY FILES IS DONE IN TWO PASSES. ON PASS 1 THE LIBRARY FILE IS COPIED AND ALL ENTRIES STORED IN CORE ALLONG WITH A POINTER TO THE BEGINING OF THE BLOCK. A DUMMY INDEX BLOCK (TYPE 14) IS OUTPUT AT THE BEGINING OF THE NEW LIBRARY AND ONE IS OUTPUT WHENEVER THE CURRENT INDEX BLOCK FILLS A BUFFER. ON PASS 2 THE DUMMY INDEX BLOCKS ARE REPLACED BY REAL ONES. FUDGE2 USED USETO'S AND DUMP MODE. IF THE OUTPUT DEVICE IS DTA FUDGE2 USES UGETF UUO'S TO FIND THE NEXT BLOCK AND NON-STANDARD DUMP MODE TO WRITE THE INDICES. DESIGN AND CODING BY D.M.NIXON JULY 1970 * 001467' 200040 001646' INDEX0: MOVE A,INDEXH ;BLOCK HEADER 001470' 350000 002516' AOS BLKCNT ;START ON BLOCK #1 001471' 260500 001660' PUSHJ P,OUT1 ;OUTPUT IT 001472' 067040 000000 OUTPUT 1, ;FORCE OUTPUT 001473' 200140 004607' MOVE T,OBUF+5 ;BUFFER SIZE 001474' 202140 005104' MOVEM T,XCOUNT 001475' 202140 005106' MOVEM T,BUFSIZ ;SAVE IT AWAY 001476' 350140 000573* AOS T,JOBREL ;TO GET 1K MORE 001477' 202140 005105' MOVEM T,XPNTR 001500' 202140 005107' MOVEM T,XBEG ;START OF INDEX BUFFERS 001501' 047140 000011 CORE T, 001502' 254000 002170' JRST ERR22 ;NOT ENUF CORE 001503' 201040 000001 MOVEI A,1 ;START ON BLOCK #1 (IF DSK) 001504' 202060 005105' MOVEM A,@XPNTR ;STORE FIRST BLOCK # 001505' 350000 005105' AOS XPNTR 001506' 200040 001646' MOVE A,INDEXH 001507' 202060 005105' MOVEM A,@XPNTR 001510' 350000 005105' AOS XPNTR 001511' 370000 005104' SOS XCOUNT 001512' 370000 005104' SOS XCOUNT ;RESERVE SPACE FOR NEXT LINK WORD 001513' 263500 000000 POPJ P, ;RETURN FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 42 FUDGE2 MAC 24-APR-78 03:09 ROUTINES TO INDEX THE LIBRARY ;HERE ON PASS 1 TO STORE ENTRIES AND POINTERS. 001514' 350012 000000 INDEX1: AOS (P) ;SET SKIP RETURN 001515' 550140 003334' HRRZ T,ENTBLK ;GET SIZE OF BLOCK 001516' 210040 000003 MOVN A,T 001517' 271140 000001 ADDI T,1 ;WORD OF INFO 001520' 311140 005104' CAML T,XCOUNT ;ENUF ROOM IN BLOCK? 001521' 254000 001546' JRST NOROOM ;NO 001522' 200140 003334' MOVE T,ENTBLK ;GET HEADER WORD 001523' 202160 005105' MOVEM T,@XPNTR 001524' 350000 005105' AOS XPNTR 001525' 370000 005104' SOS XCOUNT 001526' 507000 000001 HRLS A 001527' 541040 003335' HRRI A,ENTBLK+1 001530' 336141 000000 INDEXA: SKIPN T,(A) 001531' 344040 001530' AOJA A,.-1 001532' 202160 005105' MOVEM T,@XPNTR 001533' 370000 005104' SOS XCOUNT 001534' 350000 005105' AOS XPNTR 001535' 253040 001530' AOBJN A,INDEXA 001536' 200140 005106' INDEX2: MOVE T,BUFSIZ 001537' 274140 004607' SUB T,OBUF+5 001540' 207000 000003 MOVSS T 001541' 540140 002516' HRR T,BLKCNT 001542' 202160 005105' MOVEM T,@XPNTR 001543' 370000 005104' SOS XCOUNT 001544' 350000 005105' AOS XPNTR 001545' 263500 000000 POPJ P, ;HERE WHEN CURRENT INDEX BLOCK IS FULL. 001546' 200040 001646' NOROOM: MOVE A,INDEXH ;HEADER BLOCK OF INDEX FOR LOADER 001547' 260500 001664' PUSHJ P,OUTGO 001550' 067040 000000 OUTPUT 1, 001551' 200140 002516' MOVE T,BLKCNT ;GET INDEX BLOCK # 001552' 562160 005105' HRROM T,@XPNTR ;STORE IT WITH -1 IN LEFT HALF 001553' 200040 005104' MOVE A,XCOUNT 001554' 272040 005105' ADDM A,XPNTR 001555' 200040 005106' MOVE A,BUFSIZ 001556' 202040 005104' MOVEM A,XCOUNT ;MARK IT AS AN INDEX INCASE BLOCK FULL 001557' 562160 005105' HRROM T,@XPNTR ;SAVE BLOCK # FOR PASS 2 001560' 350000 005105' AOS XPNTR 001561' 606340 400000 TRNN F,DTAFLG ;NOT IF DTA 001562' 350000 002516' AOS BLKCNT ;ONE FOR OUTPUT 001563' 200040 001646' MOVE A,INDEXH 001564' 202060 005105' MOVEM A,@XPNTR 001565' 350000 005105' AOS XPNTR 001566' 370000 005104' SOS XCOUNT 001567' 370000 005104' SOS XCOUNT ;SPACE FOR LINK WORD TO NEXT INDEX 001570' 254000 001515' JRST INDEX1+1 FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 43 FUDGE2 MAC 24-APR-78 03:09 ROUTINES TO INDEX THE LIBRARY ;HERE FOR PASS 2. WRITE OUT THE INDEX BLOCKS 001571' 476020 005105' INDEX3: SETOM @XPNTR ;TERMINATE WITH END OF INDEX MARKER 001572' 067040 000000 OUTPUT 1, ;SO LAST BLOCK IS WRITTEN 001573' 602340 400000 TRNE F,DTAFLG ;IS IT DTA? 001574' 254000 001614' JRST INDEX5 ;YES, TREAT DIFFERENTLY 001575' 060040 000016 SETSTS 1,16 001576' 211040 000200 MOVNI A,200 001577' 506040 005107' HRLM A,XBEG 001600' 402000 005110' INDEX4: SETZM XBEG+1 001601' 200060 005107' MOVE A,@XBEG 001602' 075041 000000 USETO 1,(A) 001603' 067040 005107' OUTPUT 1,XBEG 001604' 063040 760000 STATZ 1,760000 001605' 254000 002132' JRST ERR15 001606' 201040 000200 MOVEI A,200 001607' 273040 005107' ADDB A,XBEG 001610' 553000 000001 HRRZS A 001611' 317040 005105' CAMG A,XPNTR 001612' 254000 001600' JRST INDEX4 001613' 254000 002257' JRST EXIT 001614' 070040 000000 INDEX5: CLOSE 1, ;AND A SEPARATE EOF BLOCK 001615' 060040 000116 SETSTS 1,116 ;NONE STANDARD MODE 001616' 211040 000200 MOVNI A,200 ;IOWD COUNT 001617' 506040 005107' HRLM A,XBEG ;SET IT UP FOR OUTPUT 001620' 074060 002516' USETI 1,@BLKCNT ;SET ON LAST BLOCK 001621' 066040 002513' INPUT 1,DIRIOW ;READ IT IN 001622' 135040 005174' LDB A,[POINT 10,DIRBLK,27] ;GET FIRST BLOCK # 001623' 542060 005107' HRRM A,@XBEG ;STORE IT FOR COMMON LOOP 001624' 402000 005110' SETZM XBEG+1 ;MAKE SURE IT'S ZERO 001625' 200060 005107' INDEX6: MOVE A,@XBEG ;GET BLOCK NUMBER 001626' 074041 000000 USETI 1,(A) ;SET FOR INPUT 001627' 066040 002513' INPUT 1,DIRIOW ;INPUT BLOCK 001630' 200140 004647' MOVE T,DIRBLK ;TO FIND LINK WORD 001631' 250160 005107' EXCH T,@XBEG ;PUT IT IN OUTPUT BLOCK 001632' 370000 005107' SOS XBEG ;BACK UP POINTER 001633' 075041 000000 USETO 1,(A) ;NOW FOR OUTPUT 001634' 067040 005107' OUTPUT 1,XBEG ;OUT IT GOES 001635' 063040 760000 STATZ 1,760000 ;UNLESS IN ERROR 001636' 254000 002132' JRST ERR15 ;DEVICE ERROR 001637' 201040 000200 MOVEI A,200 ;GET TO NEXT DUMP BLOCK 001640' 273040 005107' ADDB A,XBEG ;ADVANCE POINTER 001641' 553000 000001 HRRZS A ;JUST WORD LOCATION 001642' 317040 005105' CAMG A,XPNTR ;ALL DONE? 001643' 254000 001625' JRST INDEX6 ;NO, LOOP 001644' 060040 000016 SETSTS 1,16 ;BACK TO STANDARD MODE TO UPDATE DIR. 001645' 254000 002257' JRST EXIT ;YES, FINISH UP 001646' 000014 000177 INDEXH: XWD 14,177 ;USED TO SIGNAL INDEX BLOCK TO LOADER FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 44 FUDGE2 MAC 24-APR-78 03:09 INPUT SERVICE ROUTINE SUBTTL INPUT SERVICE ROUTINE ;THE INPUT ROUTINE GETS CHARACTERS FROM THE DEVICE WHOSE ;CHANNEL NUMBER IS IN ACCUMULATOR D. IT CALCULATES THE POSITION ;OF THE BUFFER HEADER OF THE DEVICE, THEN EITHER LOADS AC A ;FROM THE BYTE POINTER, OR DOES AN INPUT. IF AN END OF FILE ;IS FOUND, THE ROUTINE EXITS WITH A POPJ, SINCE THE READ ROUTINE ;IS CALLED WITH A PUSHJ, FOLLOWED BY AN EOF RETURN. THE NORMAL ;EXIT FROM GETIN IS BY A JRST @GETIN. 001647' 377015 004612' GETIN: SOSG IBUF+2(DIS) ;IS APPROPRIATE BUFFER EMPTY? 001650' 254000 001653' JRST INGET ;YES, GET ANOTHER BUFFER 001651' 134055 004611' GETIN1: ILDB A, IBUF+1(DIS) ;LOAD AC A WITH A CHARACTER 001652' 263500 000000 POPJ P, 001653' 137240 005175' INGET: DPB D,[POINT 4,INGET2,12] 001654' 137240 005176' DPB D,[POINT 4,INGET3,12] 001655' 254000 002474' JRST INGET2 ;INPUT A BUFFER OF DATA ;OUTPUT SERVICE ROUTINE ;THE OUT ROUTINE CHECKS THE TTYOB FLAG TO SEE IF THE OUTPUT ;SHOULD BE ON THE TTY. IF SO, IT TRANSFERS CONTROL IMMEDIATELY. ;OTHERWISE, IT ASSUMES OUTPUT IS ON DEVICE #1. 001656' 606340 000020 OUT: TRNN F, TTYOB ;SHOULD OUTPUT BE ON TTY? 001657' 254000 002237' JRST TYPO ;YES 001660' 377000 004607' OUT1: SOSG OBUF+5 ;IS OUTPUT BUFFER EMPTY? 001661' 254000 001664' JRST OUTGO ;YES, OUTPUT A BUFFER 001662' 136040 004606' OUT2: IDPB A, OBUF+4 ;DEPOSIT CHARACTER 001663' 263500 000000 POPJ P, ;EXIT 001664' 606340 200000 OUTGO: TRNN F,XFLG ;IF NOT INDEXING 001665' 254000 001671' JRST OUTG ;DON'T WASTE TIME 001666' 606340 400000 TRNN F,DTAFLG ;IF DTA SKIP 001667' 354000 002516' AOSA BLKCNT ;INCR. COUNT IF DSK 001670' 073040 002516' UGETF 1,BLKCNT ;GET NEXT BLOCK IF DTA 001671' 057040 000000 OUTG: OUT 1, ;OUTPUT A BUFFER 001672' 254000 001662' JRST OUT2 ;NO ERRORS 001673' 201240 000001 MOVEI D, 1 ;YES, SET CHANNEL TO OUTPUT 001674' 254000 002132' JRST ERR15 ;GO TO ERROR ROUTINE FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 45 FUDGE2 MAC 24-APR-78 03:09 ROUTINE TO HANDLE ASTERISK FILE NAME *.EXT SUBTTL ROUTINE TO HANDLE ASTERISK FILE NAME *.EXT ;THE DIRECTORY IS SEARCHED FOR FILE NAMES WITH GIVEN EXTENSION OR ;EXTENSION REL IF NONE SPECIFIED. THESE ARE STORED IN FILBUF ;ENTERED BY JRST FROM SEMICP ;EXIT BY POPJ ;DMN 23 MAY 1969 001675' 200100 002522' ASTRSK: MOVE B,COLON2 ;GET DEVICE LAST SEEN 001676' 202100 002511' MOVEM B,DSKINI+1 ;SAVE IT IN CASE DSK 001677' 047100 000004 DEVCHR B, ;GET ITS CHARACTERISTICS 001700' 603100 000100 TLNE B,DTABIT ;IS IT A DTA 001701' 254000 001760' JRST DTAAST ;YES 001702' 607100 200000 TLNN B,DSKBIT ;IS IT THE DSK? 001703' 254000 002160' JRST ERR18 ;MUST BE ONE OR THE OTHER ;FALL INTO DSKAST IF OK 001704' 261500 000547* DSKAST: PUSH P,JOBFF ;SAVE OLD JOBFF 001705' 201100 004645' MOVEI B,DSKHDR ;WHERE BUFFER WILL GO 001706' 202100 001704* MOVEM B,JOBFF ;SET IT UP 001707' 050440 002510' OPEN 11,DSKINI ;11 IS SAFE CH.NO. 001710' 254000 002162' JRST ERR19 ;CONNOT INIT DSK 001711' 064440 000001 INBUF 11,1 ;FORCE SINGLE BUFFERING 001712' 200100 002522' MOVE B,COLON2 ;GET DEVICE 001713' 047100 000055 DEVPPN B, ;GET PROJ-PROG INCASE SYS: ETC. 001714' 047100 000024 GETPPN B, ;FAILED, GET USER PROJ,PROG PAIR 001715' 202100 004572' MOVEM B,EBLOCK ;SAVE IT FOR LOOKUP OF UFD 001716' 205100 654644 MOVSI B,(SIXBIT/UFD/) ;EXTENSION 001717' 202100 004573' MOVEM B,EBLOCK+1 001720' 200100 005177' MOVE B,[XWD 1,1] ;TO GET UFD ***VJC 001721' 202100 004575' MOVEM B,EBLOCK+3 ;ENTRY BLOCK SET UP 001722' 076440 004572' LOOKUP 11,EBLOCK ;DO LOOKUP 001723' 254000 002164' JRST ERR20 ;CANNOT DO IT 001724' 260500 001745' DSKLUP: PUSHJ P,DSKINP ;INPUT A WORD 001725' 202600 004640' MOVEM S,SAVNAM ;SAVE NAME FOR LATER 001726' 260500 001745' PUSHJ P,DSKINP ;GET EXT AS WELL 001727' 512600 004641' HLLZM S,SAVEXT ;SAVE EXT, CLEAR RH ***VJC 001730' 336000 004640' SKIPN SAVNAM ;IS THERE A NAME 001731' 254000 001724' JRST DSKLUP ;NO GET NEXT PAIR 001732' 312700 004641' CAME EXT,SAVEXT ;EXTENSIONS MATCH 001733' 254000 001724' JRST DSKLUP ;NO GET NEXT PAIR 001734' 260500 000444' PUSHJ P,STNULL ;CLOSE OUT OLD FILE 001735' 200600 004640' MOVE S,SAVNAM ;RECALL NAME 001736' 260500 001137' PUSHJ P,PUTFIL ;STORE IT IN FILBUF 001737' 200600 004641' MOVE S,SAVEXT ;RECALL EXTENSION 001740' 260500 001137' PUSHJ P,PUTFIL 001741' 542241 000000 HRRM D,(A) ;GET CHANNEL 001742' 550600 002724' HRRZ S,PRGBUF ;POINTER TO PRGBUF 001743' 260500 001137' PUSHJ P,PUTFIL ;SAVE IT AS 3RD WORD 001744' 254000 001724' JRST DSKLUP ;GO LOOP ROUND ALL FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 46 FUDGE2 MAC 24-APR-78 03:09 ROUTINE TO HANDLE ASTERISK FILE NAME *.EXT ;ROUTINE TO GET NEXT WORD FROM UFD 001745' 375000 004644' DSKINP: SOSGE DIRBUF+2 ;USUAL INPUT ROUTINE 001746' 254000 001751' JRST DSKIN1 ;GET ANOTHER BUFFER 001747' 134600 004643' ILDB S,DIRBUF+1 ;GET A WORD 001750' 263500 000000 POPJ P, ;RETURN 001751' 056440 000000 DSKIN1: IN 11,0 ;DO INPUT 001752' 254000 001745' JRST DSKINP ;NO ERRORS 001753' 061440 020000 STATO 11,20000 ;END OF FILE? 001754' 254000 002166' JRST ERR21 ;NO, READ ERROR 001755' 262500 001706* FIN: POP P,JOBFF ;POP UP ONE LEVEL 001756' 262500 001755* POP P,JOBFF ;RESTORE JOBFF 001757' 263500 000000 POPJ P, ;RETURN TO COMMAND SCAN 001760' 135100 005137' DTAAST: LDB B,[POINT 4,COLON1,12] ;GET CHANNEL 001761' 137100 005200' DPB B,[POINT 4,DP+0,12] ;DEPOSIT IT 001762' 137100 005201' DPB B,[POINT 4,DP+1,12] 001763' 137100 005202' DPB B,[POINT 4,DP+2,12] 001764' 137100 005203' DPB B,[POINT 4,DP+3,12] 001765' 137100 005204' DPB B,[POINT 4,DP+5,12] 001766' 400100 000000 SETZ B, ;INITIAL CONDITION 001767' 254000 002501' JRST DP ;INPUT DIRECTORY 001770' 301100 000026 DTALUP: CAIL B,26 ;END OF DIRECTORY 001771' 263500 000000 POPJ P, ;YES- FINISHED 001772' 510602 005020' HLLZ S,DIREXT(B) ;GET EXTENSION 001773' 332002 004772' SKIPE DIRNAM(B) ;IF NAME ZERO DON'T BOTHER 001774' 312600 000016 CAME S,EXT ;IS EXTENSION SAME 001775' 344100 001770' AOJA B,DTALUP ;NO GET NEXT ENTRY 001776' 260500 000444' PUSHJ P,STNULL ;TERMINATE LAST ENTRY 001777' 200602 004772' MOVE S,DIRNAM(B) ;GET NAME 002000' 260500 001137' PUSHJ P,PUTFIL ;STORE IT IN FILBUF 002001' 510602 005020' HLLZ S,DIREXT(B) ;AND EXTENSION 002002' 260500 001137' PUSHJ P,PUTFIL ;STORE IT 002003' 542241 000000 HRRM D,(A) ;SAVECH. 002004' 550600 002724' HRRZ S,PRGBUF ;SAVE PRGBUF POINTER 002005' 260500 001137' PUSHJ P,PUTFIL ;STORE IT 002006' 344100 001770' AOJA B,DTALUP ;GET NEXT ENTRY FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 47 FUDGE2 MAC 24-APR-78 03:09 ERROR ROUTINES SUBTTL ERROR ROUTINES 002007' 201100 002261' ERROR1: MOVEI B, EMES1 ;FUDGE COMMAND ERROR 002010' 254000 002247' JRST ERROR ;TYPE IT AND EXIT 002011' 201100 002266' ERROR2: MOVEI B, EMES2 ;TOO MANY PROGRAM NAMES 002012' 254000 002247' JRST ERROR ;TYPE IT AND EXIT 002013' 201100 002276' ERROR3: MOVEI B, EMES3 ;FUDGE SYSTEM ERROR 002014' 254000 002247' JRST ERROR ;TYPE A MESSAGE AND EXIT 002015' 260500 002201' ERROR4: PUSHJ P, DTYPOQ ;TYPE DEVICE NAME 002016' 201100 002307' MOVEI B, EMES4 ;"CANNOT DO IO AS REQUESTED" 002017' 326400 002247' JUMPN G,ERROR ;TYPE IT 002020' 201100 002456' MOVEI B,EMES24 ;NO SUCH DEVICE IF G=0 002021' 254000 002247' JRST ERROR ;TYPE IT AND EXIT 002022' 201100 002315' ERROR5: MOVEI B, EMES5 ;UNEQUAL NUMBER OF MASTER AND TR. 002023' 254000 002247' JRST ERROR ;TYPE IT AND EXIT 002024' 201100 002330' ERROR6: MOVEI B, EMES6 ;NOT ENOUGH ARGUMENTS 002025' 254000 002247' JRST ERROR ;TYPE IT AND EXIT 002026' 260500 002201' ERROR7: PUSHJ P, DTYPOQ ;TYPE OUT THE DEVICE NAME 002027' 201040 000072 MOVEI A, 72 ;ASCII COLON 002030' 260500 002237' PUSHJ P, TYPO ;TYPE IT OUT 002031' 260500 002216' PUSHJ P, FTYPO ;TYPE OUT THE FILE NAME 002032' 201040 000074 MOVEI A, 74 ;ASCII LEFT ANGLE BRACKET 002033' 260500 002237' PUSHJ P, TYPO ;TYPE IT OUT 002034' 200100 000013 MOVE B, R ;GET PROGRAM NAME 002035' 620340 000020 TRZ F, TTYOB ;SET IO BACK TO TTY 002036' 260500 002220' PUSHJ P, PTYPO ;TYPE OUT THE PROGRAM NAME 002037' 201040 000076 MOVEI A, 76 ;ASCII RIGHT ANGLE BRACKET 002040' 260500 002237' PUSHJ P, TYPO ;TYPE IT OUT 002041' 201100 002335' MOVEI B, EMES7 ;GET AN ERROR MESSAGE 002042' 254000 002247' JRST ERROR ;TYPE IT OUT AND EXIT 002043' 260500 002201' ERROR8: PUSHJ P, DTYPOQ ;TYPE OUT THE DEVICE NAME 002044' 201040 000072 MOVEI A, 72 ;ASCII COLON 002045' 260500 002237' PUSHJ P, TYPO ;TYPE IT OUT 002046' 260500 002216' PUSHJ P, FTYPO ;TYPE OUT FILE NAME 002047' 201040 000056 MOVEI A, 56 ;ASCII PERIOD 002050' 260500 002237' PUSHJ P, TYPO ;TYPE IT OUT 002051' 550040 002524' HRRZ A, FILBUF ;GET THE POINTER TO CURRENT FILE 002052' 554601 000001 HLRZ S, 1(A) ;GET FILE NAME EXTENSION 002053' 260500 002206' PUSHJ P, DTYPO1 ;TYPE IT OUT 002054' 200140 005102' MOVE T,SDEVCHR ;GET CHARACTERISTICS 002055' 603140 200000 TLNE T,DSKBIT ;IS IT A DSK? 002056' 254000 002103' JRST ERR8A ;YES 002057' 201100 002335' MOVEI B, EMES7 ;GET ERROR MESSAGE "NOT FOUND" 002060' 254000 002247' JRST ERROR ;TYPE IT OUT AND EXIT FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 48 FUDGE2 MAC 24-APR-78 03:09 ERROR ROUTINES 002061' 260500 002201' ERROR9: PUSHJ P, DTYPOQ ;TYPE DEVICE NAME 002062' 201100 002340' MOVEI B, EMES9B ;GET REMAINDER OF MESSAGE 002063' 254000 002247' JRST ERROR ;TYPE IT AND EXIT 002064' 200200 000001 ERR10: MOVE C, A ;SAVE PROGRAM NAME IN C 002065' 201100 002343' MOVEI B, EMES10 ;"ENTRY BLOCK TOO LARGE, PROGRAM" 002066' 260500 002174' PUSHJ P, ETYPO ;TYPE BEGINNING OF MESSAGE 002067' 200100 000004 MOVE B, C ;GET PROGRAM NAME IN B 002070' 260500 002220' PUSHJ P, PTYPO ;TYPE IT OUT 002071' 254000 002253' JRST EXIT1 ;EXIT 002072' 201100 002352' ERR11: MOVEI B, EMES11 ;TRANSMISSION ERROR ON INPUT 002073' 260500 002174' PUSHJ P, ETYPO ;TYPE THE MESSAGE 002074' 260500 002205' PUSHJ P, DTYPO ;TYPE NAME OF OFFENDIN DEVICE 002075' 254000 002253' JRST EXIT1 ;EXIT 002076' 200140 005102' ERR14: MOVE T,SDEVCHR ;GET DEVICE CHARACTERISTICS 002077' 603140 200000 TLNE T,DSKBIT ;IS IT A DSK 002100' 254000 002043' JRST ERROR8 ;YES 002101' 201100 002362' MOVEI B, EMES14 ;DIRECTORY FULL ON OUTPUT 002102' 254000 002247' JRST ERROR ;TYPE IT AND EXIT 002103' 550140 004573' ERR8A: HRRZ T,EBLOCK+1 ;GET ERROR CODE 002104' 301140 000021 CAIL T,TABLND-ETABLE ;LEGAL ERROR? 002105' 334100 002131' SKIPA B,TABLND ;NO, USE CATCH ALL MESSAGE 002106' 200103 002110' MOVE B,ETABLE(T) ;PICK UP MESSAGE 002107' 254000 002247' JRST ERROR FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 49 FUDGE2 MAC 24-APR-78 03:09 ERROR ROUTINES 002110' 000000 005205' ETABLE: [ASCIZ /(0) file was not found/] 002111' 000000 005212' [ASCIZ /(1) no such project-programmer number/] 002112' 000000 005222' [ASCIZ /(2) protection failure/] 002113' 000000 005227' [ASCIZ /(3) file was being modified/] 002114' 000000 005235' [ASCIZ /(4) rename file name already exists/] 002115' 000000 005245' [ASCIZ /(5) illegal sequence of UUOs/] 002116' 000000 005253' [ASCIZ /(6) bad UFD or bad RIB/] 002117' 000000 005260' [ASCIZ /(7) not a SAV file/] 002120' 000000 005264' [ASCIZ /(10) not enough core/] 002121' 000000 005271' [ASCIZ /(11) device not available/] 002122' 000000 005277' [ASCIZ /(12) no such device/] 002123' 000000 005303' [ASCIZ /(13) not two reloc reg. capability/] 002124' 000000 005312' [ASCIZ /(14) no room or quota exceeded/] 002125' 000000 005321' [ASCIZ /(15) write lock error/] 002126' 000000 005326' [ASCIZ /(16) not enough monitor table space/] 002127' 000000 005336' [ASCIZ /(17) partial allocation only/] 002130' 000000 005344' [ASCIZ /(20) block not free on allocation/] 002131' 000000 005353' TABLND: [ASCIZ /(?) lookup,enter,or rename error/] FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 50 FUDGE2 MAC 24-APR-78 03:09 ERROR ROUTINES 002132' 201100 002371' ERR15: MOVEI B, EMES15 ;DEVICE ERROR ON OUTPUT 002133' 260500 002174' PUSHJ P, ETYPO ;TYPE THE MESSAGE 002134' 260500 002205' PUSHJ P, DTYPO ;TYPE NAME OF OFFENDING DEVICE 002135' 254000 002253' JRST EXIT1 ;GO AWAY 002136' 200100 000001 ERR16: MOVE B,A ;SAVE OFFENDING LETTER 002137' 260500 002243' PUSHJ P,CRLF 002140' 201040 000077 MOVEI A,77 ;TYPE OUT "?" 002141' 260500 001656' PUSHJ P, OUT 002142' 200040 000002 MOVE A, B ;GET BACK OFFENDING LETTER 002143' 260500 001656' PUSHJ P, OUT ;TYPE OFFENDING LETTER 002144' 201100 002400' MOVEI B, EMES16 ;"X" IS AN ILLEGAL SWITCH 002145' 660340 040000 TRO F,CRLFTY 002146' 254000 002247' JRST ERROR ;TYPE IT AND EXIT 002147' 200100 000001 ERR17: MOVE B, A 002150' 260500 002243' PUSHJ P,CRLF 002151' 201040 000077 MOVEI A, 77 002152' 260500 001656' PUSHJ P, OUT 002153' 200040 000002 MOVE A, B 002154' 260500 001656' PUSHJ P, OUT ;TYPE OFFENDING LETTER 002155' 201100 002405' MOVEI B, EMES17 ;"X" IS AN ILLEGAL CHARACTER 002156' 660340 040000 TRO F,CRLFTY 002157' 254000 002247' JRST ERROR ;TYPE IT AND EXIT 002160' 201100 002412' ERR18: MOVEI B,EMES18 002161' 254000 002247' JRST ERROR 002162' 201100 002423' ERR19: MOVEI B,EMES19 002163' 254000 002247' JRST ERROR 002164' 201100 002427' ERR20: MOVEI B,EMES20 002165' 254000 002247' JRST ERROR 002166' 201100 002434' ERR21: MOVEI B,EMES21 002167' 254000 002247' JRST ERROR 002170' 201100 002441' ERR22: MOVEI B,EMES22 002171' 254000 002247' JRST ERROR 002172' 201100 002447' ERR23: MOVEI B,EMES23 002173' 254000 002247' JRST ERROR FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 51 FUDGE2 MAC 24-APR-78 03:09 VARIOUS ERROR ROUTINES AND SMALL TYPE-OUT ROUTINES SUBTTL VARIOUS ERROR ROUTINES AND SMALL TYPE-OUT ROUTINES 002174' 505100 440700 ETYPO: HRLI B, 440700 ;MAKE A BYTE POINTER 002175' 134040 000002 ETYPO2: ILDB A, B ;GET A CHARACTER 002176' 322040 001065' JUMPE A,CPOPJ ;EXIT IF NULL 002177' 260500 002237' PUSHJ P, TYPO ;NO, TYPE IT 002200' 254000 002175' JRST ETYPO2 ;RETURN FOR MORE CHARACTERS 002201' 666340 040000 DTYPOQ: TRON F,CRLFTY ;IS CR,LF TYPED OUT? 002202' 260500 002243' PUSHJ P,CRLF ;YES 002203' 201040 000077 MOVEI A,77 ;TYPE OUT ? FOR BATCH 002204' 260500 002237' PUSHJ P,TYPO 002205' 200605 003324' DTYPO: MOVE S, DEVBUF(D) ;GET DEVICE NAME FROM BUFFER 002206' 200200 005117' DTYPO1: MOVE C, SYMPTR ;BYTE POINTER TO SYMBOL NAME 002207' 201100 000006 MOVEI B, 6 ;LOOP COUNTER FOR 6 CHARACTERS 002210' 134040 000004 DTYPO2: ILDB A, C ;GET A CHARACTER 002211' 322040 002214' JUMPE A, DTYPO3 ;IGNORE BLANKS 002212' 271040 000040 ADDI A, 40 ;CONVERT TO 7-BIT ASCII 002213' 260500 002237' PUSHJ P, TYPO ;TYPE IT 002214' 367100 002210' DTYPO3: SOJG B, DTYPO2 ;ALL DONE? 002215' 263500 000000 POPJ P, ;EXIT 002216' 200620 002524' FTYPO: MOVE S, @FILBUF ;PICK UP THE FILE NAME 002217' 254000 002206' JRST DTYPO1 ;JUMP INTO DTYPO ROUTINE 002220' 201040 000006 PTYPO: MOVEI A, 6 ;SIX CHARACTERS TO GET 002221' 231100 000050 PTYPO2: IDIVI B, 50 ;CONVERT TO SIXBIT CODE 002222' 506152 000000 HRLM B+1, (P) ;STORE CHARACTER ON PD LIST 002223' 363040 002225' SOJLE A,.+2 ;ALL DONE? 002224' 260500 002221' PUSHJ P, PTYPO2 ;NO, DIVIDE SOME MORE 002225' 554052 000000 HLRZ A, (P) ;POP CHARACTERS OFF STACK 002226' 322040 001065' JUMPE A, CPOPJ ;IGNORE BLANKS 002227' 303040 000012 CAILE A, 12 ;LETTER OR NUMBER? 002230' 271040 000007 ADDI A, 7 ;LETTER - ADD 66 002231' 271040 000057 ADDI A, 57 ;NUMBER - ADD 57 002232' 306040 000134 CAIN A, 134 ;DOLLAR SIGN? 002233' 275040 000070 SUBI A, 70 ;YES, SPECIAL CASE 002234' 306040 000133 CAIN A, 133 ;PERIOD? 002235' 275040 000055 SUBI A, 55 ;YES, SPECIAL CASE 002236' 254000 001656' JRST OUT ;RECURSIVE EXIT FOR MORE CHARS 002237' 136040 004603' TYPO: IDPB A, OBUF+1 ;STORE CHARACTER IN BUFFER 002240' 306040 000012 CAIN A, 12 ;LINE FEED? 002241' 067000 000000 OUTPUT 0, ;YES, EMPTY BUFFER 002242' 263500 000000 POPJ P, ;EXIT FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 52 FUDGE2 MAC 24-APR-78 03:09 VARIOUS ERROR ROUTINES AND SMALL TYPE-OUT ROUTINES 002243' 201040 000015 CRLF: MOVEI A, 15 ;CARRIAGE RETURN 002244' 260500 001656' PUSHJ P, OUT ;OUTPUT IT 002245' 201040 000012 MOVEI A, 12 ;LINE FEED 002246' 254000 001656' JRST OUT ;OUTPUT IT AND EXIT 002247' 620340 000020 ERROR: TRZ F,TTYOB ;JUST IN CASE , SET OUTPUT TO TTY 002250' 666340 040000 TRON F,CRLFTY 002251' 260500 002243' PUSHJ P,CRLF 002252' 260500 002174' PUSHJ P, ETYPO ;TYPE LAST MESSAGE OF ERROR 002253' 620340 000020 EXIT1: TRZ F,TTYOB ;ENSURE TTY OUTPUT OF CR-LF 002254' 260500 002243' PUSHJ P,CRLF ;FINISH WITH CR-LF 002255' 070000 000000 CLOSE 0, ;FORCE OUTPUT OF LAST LINE 002256' 254000 000000' JRST FUDGE2 ;START AGAIN 002257' 070040 000000 EXIT: CLOSE 1, ;CLOSE OUT THE OUTPUT CHANNEL 002260' 254000 000000' JRST FUDGE2 ;RESTART FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 53 FUDGE2 MAC 24-APR-78 03:09 ERROR MESSAGES SUBTTL ERROR MESSAGES 002261' 376152 542216 EMES1: ASCIZ "?FUDGE2 SYNTAX ERROR" 002262' 425444 051662 002263' 472510 154100 002264' 426452 247644 002265' 000000 000000 002266' 376511 747500 EMES2: ASCIZ "?TOO MANY FILE NAMES OR PROGRAM NAMES" 002267' 466031 654500 002270' 432231 442500 002271' 472031 542646 002272' 202372 220240 002273' 512370 751202 002274' 465011 640632 002275' 426460 000000 002276' 376412 247616 EMES3: ASCIZ "?PROGRAM ERROR WHILE RESETTING MASTER DEVICE" 002277' 512031 520212 002300' 512451 751100 002301' 536211 146212 002302' 202450 551612 002303' 522511 147216 002304' 202330 151650 002305' 426444 042212 002306' 532230 342400 002307' 202070 147234 EMES4: ASCIZ " CANNOT DO IO AS REQUESTED" 002310' 476504 042236 002311' 202231 720202 002312' 515012 242642 002313' 526132 352212 002314' 420000 000000 002315' 376531 642642 EMES5: ASCIZ "?UNEQUAL NUMBER OF MASTER AND TRANSACTION PROGRAMS" 002316' 526031 420234 002317' 526330 242644 002320' 202370 620232 002321' 406472 442644 002322' 202031 642100 002323' 522450 147246 002324' 406072 444636 002325' 471012 051236 002326' 436450 146646 002327' 000000 000000 002330' 376351 752100 EMES6: ASCIZ "?NOT ENOUGH ARGUMENTS" 002331' 426351 752616 002332' 441010 151216 002333' 526330 547250 002334' 514000 000000 002335' 202351 752100 EMES7: ASCIZ " NOT FOUND" 002336' 432372 547210 002337' 000000 000000 002340' 202351 752100 EMES9B: ASCIZ " NOT AVAILABLE" 002341' 406550 144630 002342' 406051 442400 002343' 376131 652244 EMES10: ASCIZ "?ENTRY BLOCK TOO LARGE, PROGRAM " 002344' 545010 246236 FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 53-1 FUDGE2 MAC 24-APR-78 03:09 ERROR MESSAGES 002345' 416264 052236 002346' 475011 440644 002347' 436125 420240 002350' 512370 751202 002351' 465000 000000 002352' 376512 240634 EMES11: ASCIZ "?TRANSMISSION ERROR ON INPUT DEVICE " 002353' 516331 151646 002354' 446371 620212 002355' 512451 751100 002356' 476344 044634 002357' 502532 420210 002360' 426551 141612 002361' 200000 000000 002362' 376111 151212 EMES14: ASCIZ "?DIRECTORY FULL ON OUTPUT DEVICE " 002363' 416511 751262 002364' 202152 546230 002365' 202371 620236 002366' 526512 052650 002367' 202110 553222 002370' 416124 000000 002371' 376110 553222 EMES15: ASCIZ "?DEVICE ERROR ON OUTPUT DEVICE " 002372' 416124 042644 002373' 512372 220236 002374' 471011 752650 002375' 502532 420210 002376' 426551 141612 002377' 200000 000000 002400' 202232 320202 EMES16: ASCIZ " IS AN ILLEGAL SWITCH" 002401' 471011 146230 002402' 426170 146100 002403' 516571 152206 002404' 440000 000000 002405' 202232 320202 EMES17: ASCIZ " IS AN ILLEGAL CHARACTER" 002406' 471011 146230 002407' 426170 146100 002410' 416210 151202 002411' 416510 551000 002412' 376110 553222 EMES18: ASCIZ "?DEVICE FOR * COMMAND MUST BE DSK OR DTA" 002413' 416124 043236 002414' 511005 220206 002415' 476331 540634 002416' 421011 552646 002417' 521010 242500 002420' 422471 320236 002421' 511010 452202 002422' 000000 000000 002423' 376070 147234 EMES19: ASCIZ "?CANNOT INIT DSK" 002424' 476504 044634 002425' 446504 042246 002426' 454000 000000 002427' 376311 747626 EMES20: ASCIZ "?LOOKUP FAILURE ON DSK" 002430' 526404 043202 002431' 446312 551212 FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 53-2 FUDGE2 MAC 24-APR-78 03:09 ERROR MESSAGES 002432' 202371 620210 002433' 516260 000000 002434' 376132 251236 EMES21: ASCIZ "?ERROR WHILE READING UFD" 002435' 511012 744222 002436' 462124 051212 002437' 406111 147216 002440' 202530 642000 002441' 376351 752100 EMES22: ASCIZ "?NOT ENOUGH CORE AVAILABLE " 002442' 426351 752616 002443' 441010 347644 002444' 425010 153202 002445' 446310 141230 002446' 425000 000000 002447' 376372 552240 EMES23: ASCIZ "?OUTPUT DEVICE MUST BE DSK OR DTA" 002450' 526504 042212 002451' 532230 342500 002452' 466532 352100 002453' 412124 042246 002454' 455011 751100 002455' 422510 100000 002456' 202111 742646 EMES24: ASCIZ " DOES NOT EXIST" 002457' 202351 752100 002460' 426611 151650 002461' 000000 000000 FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 54 FUDGE2 MAC 24-APR-78 03:09 IMPURE CODE SUBTTL IMPURE CODE 002462' 050000 002521' COLON1: OPEN ,COLON0 ;INITIALIZATION SEQUENCE 002463' 077003 004572' SEMIC1: ENTER , EBLOCK(T) 002464' 064004 000000 INBUF3: INBUF ,(C) 002465' 072000 000017 BACK0: MTAPE , 17 ;BACKSPACE MAG TAPE ONE FILE 002466' 072000 000000 BACK3: MTAPE ,0 ;WAIT FOR BACKSPACE TO FIN. 002467' 061000 004000 BACK1: STATO , IOBOT ;ARE WE AT BEGINNING OF TAPE 002470' 072000 000016 BACK2: MTAPE , 16 ;NO, SKIP FILE 002471' 263500 000000 POPJ P, ;EXIT 002472' 070000 000000 GET3A: CLOSE , 002473' 076003 004572' GET4A: LOOKUP , EBLOCK(T) 002474' 056000 000000 INGET2: IN 0, ;INPUT A BUFFER OF DATA 002475' 254000 001651' JRST GETIN1 ;NO ERRORS 002476' 063000 020000 INGET3: STATZ , IOEOF ;END OF FILE? 002477' 254000 001064' JRST POPOUT ;YES, HIGH LEVEL EXIT 002500' 254000 002072' JRST ERR11 ;ERROR 002501' 060000 000117 DP: SETSTS ,117 ;DUMP MODE NON-STANDARD 002502' 074000 000144 USETI ,144 ;DIRECTORY BLOCK 002503' 066000 002513' INPUT ,DIRIOW ;ONE BLOCK ONLY 002504' 063000 760000 STATZ ,760000 ;CHECK ERRORS 002505' 254000 002501' JRST DP ;TRY AGAIN 002506' 060000 000014 SETSTS ,14 ;BACK TO BINARY 002507' 254000 001770' JRST DTALUP 002510' 000000 000014 DSKINI: EXP 14 002511' 446353 000000 SIXBIT /DSK/ ;MAY GET MODIFIED 002512' 000000 004642' EXP DIRBUF 002513' 777600 004646' DIRIOW: IOWD 200,DIRBLK ;IOWD FOR DIRECTORY INPUT 002514' 000000 000000 0 ;MUST BE IN LOW SEGMENT FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 55 FUDGE2 MAC 24-APR-78 03:09 STORAGE AND BUFFERS SUBTTL STORAGE AND BUFFERS 002515' LOW: 002515' FILSAV: BLOCK 1 002516' BLKCNT: BLOCK 1 ;NUMBER OF BUFFERS OUTPUT 002517' SAVEAC: BLOCK 1 002520' SAVEBT: BLOCK 1 002521' COLON0: BLOCK 1 ;MODE 002522' COLON2: BLOCK 1 ;DEVICE NAME 002523' COLON3: BLOCK 1 ;BUFFER HEADER 002524' FILBUF: BLOCK N 002724' PRGBUF: BLOCK N 003124' PPNBUF: BLOCK N 003324' DEVBUF: BLOCK 10 003334' ENTBLK: BLOCK X+1 004042' SVEBLK: BLOCK X+1 004550' PDLIST: BLOCK XP 004570' BLOCK 2 ;FOR EXTENDED LOOKUP AND ENTERS 004572' EBLOCK: BLOCK 4 004576' BLOCK ;MORE EXTENDED STUFF 004602' OBUF: BLOCK 6 ;TTY:, OUTPUT DEV: 004610' IBUF: BLOCK 30 ;INPUT DEVICES (10) 004640' SAVNAM: BLOCK 1 ;SAVED FILE NAME FROM UFD 004641' SAVEXT: BLOCK 1 ;SAVED EXT NAME FROM UFD 004642' DIRBUF: BLOCK 3 ;DIRECTORY BUFFER HEADER 004645' DSKHDR: BLOCK N+2 ;TWO WORDS OF OVERHEAD [P,P]+EXT 004647' DIRBLK=DSKHDR+2 004772' DIRNAM=DIRBLK+123 ;FILENAMES IN DTA DIRECTORY START HERE 005020' DIREXT=DIRNAM+26 ;EXTENSIONS IN DTA DIRECTORY START HERE 005047' BSZ: BLOCK 1 ;SIZE OF OLD SYMBOL BLOCK 005050' PTGRS: BLOCK 1 ;PTGR SAVED 005051' PTSRS: BLOCK 1 ;PTSR SAVED 005052' RELOCS: BLOCK 1 ;ORIGINAL RELOC 005053' SYMBLK: BLOCK ^D20 ;NEW SYMBOL BLOCK 005077' MATCH: BLOCK 1 ;COUNT OF <'S - >'S ***VJC 005100' CURCHR: BLOCK 1 ;SAVED CURRENT CHAR OF CS 005101' LSTCHR: BLOCK 1 ;SAVED LAST CHAR OF CS 005102' SDEVCH: BLOCK 1 ;SAVED DEVICE CHARACTERS 005103' NUMDEV: BLOCK 1 ;NUMBER OF DEVICES 005104' XCOUNT: BLOCK 1 005105' XPNTR: BLOCK 1 005106' BUFSIZ: BLOCK 1 005107' XBEG: BLOCK 2 005111' LEVEL: BLOCK 1 ;-2 IF LEVEL D 005112' DEFPPN: BLOCK 1 ;DEFAULT PROJ-PROG 005113' PRJPRG: BLOCK 1 ;TEMP. PROJ-PROG 005114' SVENTR: BLOCK 2 ;PLACE TO SAVE EBLOCK,+1 005116' NOWARN: BLOCK 1 ;SIGNAL TO PRINT MESSAGE ABOUT INDEX FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 55-1 FUDGE2 MAC 24-APR-78 03:09 STORAGE AND BUFFERS 005117' VAR ;JUST IN CASE 005117' LOWTOP: FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 56 FUDGE2 MAC 24-APR-78 03:09 CONSTANTS,POINTERS AND LITERALS SUBTTL CONSTANTS,POINTERS AND LITERALS 005117' 440600 000014 SYMPTR: POINT 6, S 005120' 440600 000016 EXTPTR: POINT 6, EXT 005121' 440400 005054' PTSR: POINT 4,SYMBLK+1 ;TO STORE RELOCATION 005122' 440400 005052' PTGR: POINT 4,RELOCS ;TO GET RELOCATION 005123' 047040 000013 DTCLR: UTPCLR 1, 005124' 002526' 002525' FILXWD: XWD FILBUF+2, FILBUF+1 005125' 777760 004547' XPDLST: XWD -XP,PDLIST-1 000000' END FUDGE2 NO ERRORS DETECTED PROGRAM BREAK IS 005362 9K CORE USED FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 57 FUDGE2 MAC 24-APR-78 03:09 SYMBOL TABLE A 000001 ALTMOD 000521' APPEND 000711' APROC3 000716' ASTRSK 001675' B 000002 BACK0 002465' BACK1 002467' BACK2 002470' BACK3 002466' BACKSP 001024' BITE 000110' BLKCNT 002516' BSWTCH 000250' BSZ 005047' BUFSIZ 005106' C 000004 COLON 000317' COLON0 002521' COLON1 002462' COLON2 002522' COLON3 002523' COLON4 000375' COLON6 000340' COLON7 000344' COLON8 000357' COLONB 000406' COLONC 000373' COMMA 000310' COMMA1 000503' COMMA3 000477' COMMA4 000516' COMMAP 000470' COMMAX 000314' CONB 010000 SPD COPY 000737' COPYTO 000743' CORE 047000 000011 COUNT 001337' CPOPJ 001065' CPOPJ1 001063' CRLF 002243' CRLFTY 040000 SPD CURCHR 005100' D 000005 DEFENT 000463' DEFPPN 005112' DELCPY 000730' DELDEC 001435' DELETE 000701' DELFIN 001445' DELGT1 001416' DELGTR 001412' FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 57-1 FUDGE2 MAC 24-APR-78 03:09 SYMBOL TABLE DELINI 001461' DELLOC 001410' DELWRT 001447' DELWRU 001455' DESTB 000001 SPD DEVB 000400 SPD DEVBUF 003324' DEVCHR 047000 000004 DEVPPN 047000 000055 DIRBLK 004647' DIRBUF 004642' DIREXT 005020' DIRIOW 002513' DIRNAM 004772' DIS 000015 DOENTR 001121' DOXSWT 001134' DP 002501' DPROC1 000703' DRCTRB 000004 SPD DSKAST 001704' DSKBIT 200000 SPD DSKHDR 004645' DSKIN1 001751' DSKINI 002510' DSKINP 001745' DSKLUP 001724' DSPTCH 000065' DTAAST 001760' DTABIT 000100 SPD DTAFLG 400000 SPD DTALUP 001770' DTCLR 005123' DTYPO 002205' DTYPO1 002206' DTYPO2 002210' DTYPO3 002214' DTYPOQ 002201' E 000006 EBLOCK 004572' EMES1 002261' EMES10 002343' EMES11 002352' EMES14 002362' EMES15 002371' EMES16 002400' EMES17 002405' EMES18 002412' EMES19 002423' EMES2 002266' EMES20 002427' EMES21 002434' EMES22 002441' FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 57-2 FUDGE2 MAC 24-APR-78 03:09 SYMBOL TABLE EMES23 002447' EMES24 002456' EMES3 002276' EMES4 002307' EMES5 002315' EMES6 002330' EMES7 002335' EMES9B 002340' ENDST 001372' ENTBLK 003334' EPROC1 000670' EPROC2 000672' ERR10 002064' ERR11 002072' ERR14 002076' ERR15 002132' ERR16 002136' ERR17 002147' ERR18 002160' ERR19 002162' ERR20 002164' ERR21 002166' ERR22 002170' ERR23 002172' ERR8A 002103' ERRB 002000 SPD ERRISQ 000214' ERROR 002247' ERROR1 002007' ERROR2 002011' ERROR3 002013' ERROR4 002015' ERROR5 002022' ERROR6 002024' ERROR7 002026' ERROR8 002043' ERROR9 002061' ETABLE 002110' ETYPO 002174' ETYPO2 002175' EXIT 002257' EXIT1 002253' EXT 000016 EXTB 001000 SPD EXTPTR 005120' EXTRCT 000660' F 000007 F4 001346' F4I 001270' F4IB 020000 SPD F4LUP1 001374' F4LUP2 001402' F4LUP3 001375' FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 57-3 FUDGE2 MAC 24-APR-78 03:09 SYMBOL TABLE FILBUF 002524' FILSAV 002515' FILXWD 005124' FIN 001755' FIND1 000752' FIND2 000757' FIND3 000765' FINDCP 000751' FIXUP 000647' FTYPO 002216' FUDGE2 000000' G 000010 GET0 001046' GET1 001060' GET3 001066' GET3A 002472' GET4 001107' GET4A 002473' GETCHR 000040' GETCMN 000045' GETDEV 001031' GETIN 001647' GETIN1 001651' GETPPN 047000 000024 H 000011 IBUF 004610' INBIT 000002 SPD INBUF0 000546' INBUF1 000566' INBUF2 000556' INBUF3 002464' INBUF4 000571' INBUFG 000573' INDEX 000722' INDEX0 001467' INDEX1 001514' INDEX2 001536' INDEX3 001571' INDEX4 001600' INDEX5 001614' INDEX6 001625' INDEXA 001530' INDEXH 001646' INFOB 004000 SPD INGET 001653' INGET2 002474' INGET3 002476' INSER1 000654' INSERT 000632' IOBKTL 040000 SPD IOBOT 004000 SPD IODATA 100000 SPD IODEV 200000 SPD FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 57-4 FUDGE2 MAC 24-APR-78 03:09 SYMBOL TABLE IOEOF 020000 SPD IPROC7 000656' JOBFF 001756' EXT JOBREL 001476' EXT JOBSA 000000 EXT JOBSYM 000000 EXT JOBVER 000137 SPD JSR 260500 000000 KSWTCH 000251' LBRACA 000277' LBRACK 000265' LEVEL 005111' LFTARW 000156' LIST 000600' LIST1 000610' LIST2 000613' LOW 002515' LOWTOP 005117' LPTBIT 040000 SPD LSQB 000162' LSQB1 000164' LSTCHR 005101' MACHCD 001365' MATCH 005077' MSTGET 000772' N 000200 SPD NODEV 000150' NOLOCB 000200 SPD NOROOM 001546' NOWARN 005116' NUMDEV 005103' NXTWRD 001223' OBUF 004602' OUT 001656' OUT1 001660' OUT2 001662' OUT4 001405' OUTBIT 000001 SPD OUTG 001671' OUTGO 001664' P 000012 PDLIST 004550' PERIOD 000257' POPBAK 100000 SPD POPOUT 001064' PPNBUF 003124' PRGBUF 002724' PRJPRG 005113' PROGB 000100 SPD PTGR 005122' PTGRS 005050' PTSR 005121' PTSRS 005051' FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 57-5 FUDGE2 MAC 24-APR-78 03:09 SYMBOL TABLE PTYPO 002220' PTYPO2 002221' PUTFIL 001137' PUTPPN 001151' PUTPRG 001144' R 000013 RBRACK 000303' READ 001156' READ1 001206' READ2 001210' READ22 001230' READ23 001216' READ3 001245' READ5 001243' READ55 001233' READ6 001157' READ6A 001173' READ6B 001202' READ7 001266' READ8 001255' READ9 001261' READX 001276' RELOCS 005052' REPLCE 000621' RESET 001002' RESET 047000 000000 RESET1 001017' RESET2 001005' RESET3 001012' RIBALC 000011 SPD RSQB 000202' S 000014 SAVEAC 002517' SAVEB 000002 SPD SAVEBT 002520' SAVEXT 004641' SAVNAM 004640' SDEVCH 005102' SEMIC1 002463' SEMIC2 000447' SEMIC3 000462' SEMIC4 000427' SEMICA 000416' SEMICP 000407' SIZE 000500 SPD SIZZ 000452 SPD SLASH 000144' SLIST 000216' SLSHB 000010 SPD SQBCMA 000177' STNULL 000444' STORE 000127' SVEBLK 004042' FUDGE2 V.011 MACRO 10 05:52 24-APR-78 PAGE 57-6 FUDGE2 MAC 24-APR-78 03:09 SYMBOL TABLE SVENTR 005114' SW 000017 SWTB 000004 SPD SWTCH 000145' SWTCHA 000135' SWTCHE 000146' SYMBLK 005053' SYMPTR 005117' T 000003 TABLE 000077' TABLND 002131' TRNGET 000777' TSWTCH 000252' TTYBIT 000010 SPD TTYCB 000040 SPD TTYIN 000210' TTYOB 000020 SPD TYPO 002237' UTPCLR 047000 000013 VCUSTO 000000 SPD VFUDGE 000011 SPD VPATCH 000000 SPD WRITE 001305' WRITE2 001310' WRITE3 001314' WRITE4 001330' WSWTCH 000253' X 000505 SPD XBEG 005107' XCOUNT 005104' XFLG 200000 SPD LLL OOOOOOOOO AAAAAAAAA DDDDDDDDDDDD EEEEEEEEEEEEEEE RRRRRRRRRRRR LLL OOOOOOOOO AAAAAAAAA DDDDDDDDDDDD EEEEEEEEEEEEEEE RRRRRRRRRRRR LLL OOOOOOOOO AAAAAAAAA DDDDDDDDDDDD EEEEEEEEEEEEEEE RRRRRRRRRRRR LLL OOO OOO AAA AAA DDD DDD EEE RRR RRR LLL OOO OOO AAA AAA DDD DDD EEE RRR RRR LLL OOO OOO AAA AAA DDD DDD EEE RRR RRR LLL OOO OOO AAA AAA DDD DDD EEE RRR RRR LLL OOO OOO AAA AAA DDD DDD EEE RRR RRR LLL OOO OOO AAA AAA DDD DDD EEE RRR RRR LLL OOO OOO AAA AAA DDD DDD EEEEEEEEEEEE RRRRRRRRRRRR LLL OOO OOO AAA AAA DDD DDD EEEEEEEEEEEE RRRRRRRRRRRR LLL OOO OOO AAA AAA DDD DDD EEEEEEEEEEEE RRRRRRRRRRRR LLL OOO OOO AAAAAAAAAAAAAAA DDD DDD EEE RRR RRR LLL OOO OOO AAAAAAAAAAAAAAA DDD DDD EEE RRR RRR LLL OOO OOO AAAAAAAAAAAAAAA DDD DDD EEE RRR RRR LLL OOO OOO AAA AAA DDD DDD EEE RRR RRR LLL OOO OOO AAA AAA DDD DDD EEE RRR RRR LLL OOO OOO AAA AAA DDD DDD EEE RRR RRR LLLLLLLLLLLLLLL OOOOOOOOO AAA AAA DDDDDDDDDDDD EEEEEEEEEEEEEEE RRR RRR LLLLLLLLLLLLLLL OOOOOOOOO AAA AAA DDDDDDDDDDDD EEEEEEEEEEEEEEE RRR RRR LLLLLLLLLLLLLLL OOOOOOOOO AAA AAA DDDDDDDDDDDD EEEEEEEEEEEEEEE RRR RRR LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT Request created: 24-April-1978 05:53:58 File: DSKB1 :LOADER.LST [8,296] Created: 20-April-1967 05:52:00 Printed: 24-April-1978 05:53:41 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:1244 File will be deleted after printing PPPPPPPPPPPP IIIIIIIII PPPPPPPPPPPP PPPPPPPPPPPP IIIIIIIII PPPPPPPPPPPP PPPPPPPPPPPP IIIIIIIII PPPPPPPPPPPP PPP PPP III PPP PPP PPP PPP III PPP PPP PPP PPP III PPP PPP PPP PPP III PPP PPP PPP PPP III PPP PPP PPP PPP III PPP PPP PPPPPPPPPPPP III PPPPPPPPPPPP PPPPPPPPPPPP III PPPPPPPPPPPP PPPPPPPPPPPP III PPPPPPPPPPPP PPP III PPP PPP III PPP PPP III PPP PPP III PPP PPP III PPP PPP III PPP PPP IIIIIIIII PPP PPP IIIIIIIII PPP PPP IIIIIIIII PPP LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT Request created: 24-April-1978 05:53:58 File: DSKB1 :PIP .LST [8,296] Created: 20-April-1967 05:53:00 Printed: 24-April-1978 05:53:41 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:1244 File will be deleted after printing PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 1 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 TITLE PIP V.030 MOD SANDERS/DBP 19-AUG-71 SUBTTL VJC/PMH/AK-DAG/DMN 8-JUL-70 ;PERIPHERAL INTERCHANGE PROGRAM ;"COPYRIGHT 1968, 1969, DIGITAL EQUIPMENT CORP.,MAYNARD,MASS.,U.S.A. 000030 VPIP==30 ;VERSION NUMBER 000005 SVER==5 ; SANDERS VERSION ;WCH==0 PIP IS ASSEMBLED FOR PDP-10 AND ASSUMES NEW FORMAT DECTAPES. ;WCH==1 PIP IS ASSEMBLED FOR PDP-6 AND ASSUMES OLD FORMAT DECTAPES. ;DISK30==0 PIP IS ASSEMBLED TO RUN WITH 10/40, 10/50 MONITOR SYSTEMS. ;DISK30==1 PIP IS ASSEMBLED TO RUN WITH 10/30 DISK SYSTEM. ;BLOC0==0 PIP ALLOWS COPYING OF BLOCK0 (DECTAPE). ;BLOC0==1 PIP WILL NOT ALLOW BLOCK0 TO BE COPIED. ;RIMSW==0 /Y SWITCH OPTION UNAVAILABLE. (ALSO UNAVAILABLE FOR OLD FORMAT DECTAPES) ;RIMSW==1 /Y SWITCH OPTION AVAILABLE. ;FTDSK==0 NON DSK SYSTEM.NO CCL.SAVES CORE ON 10/40 ;FTDSK==1 10/50 DSK SYSTEM,ALSO 10/30 DSK SYSTEM PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 2 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 ;CONDITIONAL ASSEMBLY SWITCH SETUP (NORMAL CONFIGURATION) ;--------------------------------- IFNDEF WCH, IFNDEF DISK30, IFNDEF BLOC0, IFNDEF FTDSK, IFN WCH, IFNDEF RIMSW, IFNDEF K, 000124 LOC 124 000124 000000 000000' PIP1 ;SET REENTER ADDRESS 000000' RELOC 000137 LOC 137 000137 000005 000030 XWD SVER,VPIP 000000' RELOC MLON IFDEF SALL, PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 3 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 EXTERN JOBFF,JOBSA,JOBREL ;FLAG ASSIGNMENTS (RIGHT HALF) 000001 LINE==1 ;ASCII LINE MODE PROCESSING 000002 BMOD==2 ;BINARY PROCESSING 000004 TBMOD==4 ;SUPPRESS TRAILING SP, CHANGE MULTIPLE SP TO TABS 000010 DFLG==10 ;DELETE FILES MODE 000020 LFLG==20 ;LIST DIRECTORY 000040 NSMOD==40 ;IGNORE INPUT SEQUENCE NUMBERS 000100 RFLG==100 ;RENAME FILE MODE 000200 SQMOD==200 ;GENERATE SEQUENCE NUMBERS 000400 STS==400 ;END OF LINE SEEN, OUTPUT SEQUENCE NUMBER NEXT 001000 SPMOD==1000 ;SUPPRESS TRAILING SPACES 002000 XFLG==2000 ;COPY DECTAPE MODE 004000 ZFLG==4000 ;CLEAR DECTAPE DIRECTORY 010000 SUS==10000 ;SEQUENCE NUMBER GENERATION IN PROGRESS 020000 SPOK==20000 ;SPACE WAS LAST CHARACTER 040000 ESQ==40000 ;STOP OUTPUTTING SEQ NUM, RESUME OUTPUTTING DATA 100000 SNI==100000 ;DO NOT INCREMENT SEQUENCE NUMBER 200000 MTFLG==200000 ;MTA REQUEST RECEIVED 400000 OSFLG==400000 ;GENERATE SEQ. NOS. INCR. BY ONE ;FLAG ASSIGNMENTS (LEFT HALF) 000001 OFLG==1 ;BLOCK 0 COPY 000002 RIMFLG==2 ;RIM FORMAT INPUT /OUT TO DTA. ILLEG IF RIMSW==0,OR WCH==1 000004 PFLG==4 ;FORTRAN PROGRAM OUTPUT FORMAT CONVERSION 000010 PCONV==10 ;COLUMN 1 CONVERSION IN PROGRESS 000020 NEWFIL==20 ;NEW FILE JUST INITIATED 000040 CHKFLG==40 ;PARENTHESES CHECK MODE 000100 IFLG==100 ;SELECT IMAGE MODE 000200 GFLG==200 ;KEEP GOING IF THERE ARE I/O ERRORS 000400 IBFLG==400 ;SELECT IMAGE BINARY MODE 001000 JFLG==1000 ;NON-STANDARD MODE PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 4 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 ;AUXFLG ASSIGNMENTS (LEFT HALF) 000001 QFLG==1 ;PLEASE PRINT SWITCH SET 000002 NSPROT==2 ;NON-STANDARD DISK OUTPUT PROTECTION 000004 SBIN==4 ;36-BIT PR. ON REL. ETC. FILES 000020 NOMORE==20 ;IGNORE ANY SWITCHES BUT MTA FROM NOW ON 000040 CDRFLG==40 ;CONVERT COLS 73-80 TO SPACES + /C 000100 INFOFL==100 ;FLAG USED BY ERR3A: 000200 RSDCFL==200 ;USED FOR MERGING FILES, ==1 IF FILE HAS EXTENSION ;REL,SAV,DMP,CHN OR OTHERWISE == 0 000400 FRSTIN==400 ;THIS IS THE FIRST INPUT FILE (USED IN FILE ;MERGE COMMAND) == 0 FOR FIRST INPUT ;MTAREQ ASSIGNMENTS (RIGHT HALF) 000001 MTAFLG==1 ;MTA ADVANCE ONE FILE 000002 MTBFLG==2 ;MTA BACKSPACE ONE FILE 000004 MTTFLG==4 ;MTA SKIP TP LOGICAL EOT 000010 MTWFLG==10 ;MTA REWIND 000020 MTFFLG==20 ;MTA MARK EOF 000040 MTUFLG==40 ;MTA REWIND AND UNLOAD 000100 MTDFLG==100 ;MTA ADVANCE ONE RECORD 000200 MTPFLG==200 ;MTA BACKSPACE ONE RECORD 000400 MT8FLG==400 ;MTA SET 800 B.P.I. 001000 MT5FLG==1000 ;MTA SET 556 B.P.I. 002000 MT2FLG==2000 ;MTA SET 200 B.P.I. 004000 MTEFLG==4000 ;MTA SELECT EVEN PARITY ;AUXFLG ASSIGNMENTS (RIGHT HALF) 000001 REDFLG==1 ;==1 IF ANY FILES ARE INPUT (OTHER THAN DIRECTORIES) 000002 SYSFLG==2 ;DEVICE IS SYS 000004 SYSLST==4 ;LAST DEVICE WAS SYS 000010 LPTOUT==10 ;LPT OUTPUT 000020 FFLG==20 ;LIST SHORT DISK DIRECTORY 000040 ONEOUT==40 ;ONE OUTPUT FILE INITIALIZED 000100 CDRIN==100 ;CARDS IN 000200 MTAOUT==200 ;OUTPUT TO MTA 000400 MTAIN==400 ;INPUT FROM MTA 001000 TTYIN==1000 ;INPUT FROM TTY 002000 READ1==2000 ;LOOK FOUND NEW INPUT FILE, NO READ YET. 004000 DTAOUT==4000 ;OUTPUT TO DTA 010000 DSKOUT==10000 ;OUTPUT TO DSK 020000 DTAIN==20000 ;INPUT FROM DTA 040000 DSKIN==40000 ;INPUT FROM DSK 100000 TTYOUT==100000 ;OUTPUT TO TTY 200000 PPTIN==200000 ;INPUT FROM PTR 400000 PPTOUT==400000 ;OUTPUT TO PTP PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 5 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 ;CALFLG ASSIGNMENTS (RIGHT HALF) FOR DESCRIBING A BLOCK OF INFORMATION ;FOUND BY THE COMMAND SCANNER. 000001 FNEX==1 ;==1 WHEN FN.EX==*.*, *.EXT, FN.* (WHEN MORE ;THAN ONE FN.EX IS IMPLIED). 000002 MATEX==2 ;FILE EXTENSIONS MUST MATCH 000004 MATFN==4 ;FILE NAMES MUST MATCH 000010 NEWDEV==10 ;A NEW INPUT DEVICE WAS GIVEN 000020 NEWPP==20 ;A NEW #P-P WAS GIVEN 000040 ASTFLG==40 ;FLAG SET WHEN FILE NAMED IN CS FOUND ;BY LOOK ROUTINE EVEN IF FN OR EXT =* 000100 DEV==100 ;DEVICE NAME INDICATOR 000200 DVSWTH==200 ;OUTPUT DEVICE SEEN 000400 NSWTCH==400 ;INDICATES NULL NAME 001000 SSWTCH==1000 ;LEFT ARROW SEEN 002000 LISTTY==2000 ;LIST TO TTY 004000 TMPI==4000 ;INPUT DEVICE TMPCOR SEEN 010000 TMPO==10000 ;OUTPUT DEVICE TMPCOR 020000 RXFLG==20000 ;(RX) SEEN 000037 ALLCLF==FNEX!MATEX!MATFN!NEWDEV!NEWPP ;DEVICE CHANNEL ASSIGNMENTS 000001 CON==1 ;COMMAND INPUT CHANNEL 000002 OUT==2 ;OUTPUT DEVICE 000003 IN==3 ;INPUT DEVICE 000004 TAPE==4 ;MTA POSITIONING 000005 DIR==5 ;DISK DIR. READ 000006 BLKIN==6 ;INPUT FOR 10/30 DISK FILES 000007 DTDIR==7 ; DECTAPE DIR. READ(FOR PPN) ;ACCUMULATOR ASSIGNMENTS 000001 T1=1 ;GENERAL PURPOSE 000002 T2=2 ;G.P. 000003 T3=3 ;G.P. 000004 CHR=4 ;INPUT CHARACTER 000005 P=5 ;PUSHDOWN POINTER 000006 FLAG=6 ;FLAG REGISTER 000007 T4=7 ;G.P. 000010 IOS=10 ;IO STATUS BITS 000011 T5=11 ;G.P. 000012 T6=12 ; G.P. 000013 AUXFLG=13 ;AUXILIARY FLAG REGISTER 000014 T7=14 ;G.P. 000015 DOUT=15 ;DIVIDED NO. FOR OUTPUT 000016 DOUT1=16 ;REMAINDER, DOUT+1 000017 CALFLG=17 ;MORE FLAGS PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 6 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 ;MISCELLANEOUS PARAMETERS 400000 WRTLOK==400000 ;WRITE LOCK (DECTAPE) /IMPROPER I/O 040000 BIGBLK==40000 ;BLOCK TOO LARGE 000002 INBIT==2 ;DEVCHR BIT FOR DEV CAN DO INPUT 000001 OUTBIT==1 ;DEVCHR BIT FOR DEV CAN DO OUTPUT 020000 EOFBIT==20000 ;END OF FILE 002000 EOTBIT==2000 ;END OF TAPE 000004 DTABIT==4 ;DEVCHR BIT FOR DECTAPE IDENTIFICATION 000001 INHIB==1 ;OUTPUT RELEASE INHIBIT BIT 000010 TABSP==10 ;SPACES PER TAB 000200 PTRBIT==200 ;DEVCHR BIT FOR PTR 000400 PTPBIT==400 ;DEVCHR BIT FOR PTP 200000 DSKBIT==200000 ;DEVCHR BIT FOR DSK 000020 MTABIT==20 ;DEVCHR BIT FOR MTA 040000 LPTBIT==40000 ;DEVCHR BIT FOR LPT 000010 TTYBIT==10 ;DEVCHR BIT FOR TTY 100000 CDRBIT==100000 ;DEVCHR FOR CDR 000200 DENS2==200 ;MTA 200 BPI 000400 DENS5==400 ;MTA 556 BPI 000600 DENS8==600 ;MTA 800 BPI 001000 PARE==1000 ;MTA EVEN PARITY 004000 LDP==4000 ;MTA LOAD POINT STATUS 000020 HPAGE==20 ;MACRO DEFINITIONS DEFINE SKIP (J) DEFINE LSTLIN (Z),< SKIPA T1,[POINT 7,Z] PUSHJ P,PUT ILDB CHR,T1 IFN WCH, JUMPN CHR,.-2> DEFINE ERRPNT (X),< JSP T1,PTEXT ASCIZ X> DEFINE ERRPN2 (X),< JSP T1,PTEXT2 ASCIZ X> DEFINE ERRPNX (X),< JSP T1,PRETXT ASCIZ X> 000000' LOW: PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 7 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 ;ASCII CHARACTERS 000015 CR==15 ;CARRIAGE RETURN 000012 LF==12 ;LINE FEED 000014 FF==14 ;FORM-FEED 000033 ALTMOD==33 ;NEWEST ALTMODE 000175 ALT175==175 ;OLDEST ALTMODE 000176 ALT176==176 ;OLDER ALTMODE 000137 LA==137 ;LEFT ARROW 000032 CZ==32 ;CONTROL Z 000021 XON==21 ;^Q,START TTY PTR 000023 XOFF==23 ;^S,STOP TTY PTR MODE 000054 COMMA==54 000056 PERIOD==56 ;PERIOD 000072 COLON==72 000040 SPACE==40 000177 DEL==177 ;DELETE,RUBOUT,REPEAT MOD.35 000011 TAB==11 ;TAB ;CALLI DEFINITIONS OPDEF RESET [CALLI 0] 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 GETPPN [CALLI 24] OPDEF PJOB [CALLI 30] OPDEF RUN [CALLI 35] OPDEF GETTAB [CALLI 41] OPDEF TMPCOR [CALLI 44] OPDEF DSKCHR [CALLI 45] OPDEF JOBSTR [CALLI 47] OPDEF DEVPPN [CALLI 55] OPDEF WAIT [MTAPE 0] ;EXTENDED LOOKUP PARAMETERS 000005 RBSIZ==5 ;WRITTEN FILE LENGTH 000017 RIBSTS==17 ;STATUS BITS PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 8 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 000000' 200000 004665' PIP1: MOVE 0,[LOW,,LOW+1] 000001' 402000 000000' SETZM LOW 000002' 251000 004665' BLT 0,LOWTOP 000003' 205000 637163 MOVSI (SIXBIT /SYS/) 000004' 047000 000055 DEVPPN ;FIND PP OF DEVICE SYS 000005' 200000 003733' MOVE PP13 ;ASSUME 1,,3 IF NOT LEVELD 000006' 202000 004037' MOVEM SYSPP ;SAVE AS SYS PP IFN FTDSK,< MOVE [XWD 17,11] ;STATES WORD GETTAB ;GET IT SETZ ;ERROR RETURN TLNN (7B9) ;TEST FOR LEVEL D TDZA ;NOT LEVEL D HRROI -2 ;THIS IS LEVEL D MOVEM LEVEL ;SAVE > 000007' 554040 000000* IFE FTDSK, IFN FTDSK, 000010' 552040 004016' P1: HRRZM T1,SVJBFF ;SAVE JOBFF SO BUFFERS CAN BE CREATED 000011' 254000 000012' JRST PIP IFN FTDSK,< DERR7: ERRPNT EXIT ;EXIT TO MONITOR> PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 9 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 000012' 047000 000000 PIP: RESET ;REINITIALIZE WHEN RESTARTED MANUALLY ;NEW COMMAND STRING SCAN STARTS HERE 000013' PIP2: 000013' 265440 000541' PIP2A: JSP T5,INICN1 ;INITIALIZE THE TTY AND PDL 000014' 201000 000015 MOVEI 0,CR ;TYPE CR 000015' 136000 003757' IDPB 0,TFO+1 000016' 201000 000012 MOVEI 0,LF ;AND LF 000017' 136000 003757' IDPB 0,TFO+1 000020' 201000 000052 MOVEI 0,"*" ;TYPE ASTERISK****** 000021' 136000 003757' IDPB 0,TFO+1 ;READY TO ACCEPT 000022' 067040 000000 OUTPUT CON, ;COMMAND FROM TTY 000023' 402000 004026' PIP2B: SETZM TOTBRK ;CLEAR PAREN COUNTER 000024' 201000 000010 MOVEI 0,TABSP ;SPACES PER TAB 000025' 202000 004027' MOVEM 0,TABCT ;INITIALIZE TAB COUNT 000026' 200000 003721' MOVE 0,ZRO ;ASCII /00000/ 000027' 202000 004014' MOVEM 0,SQNUM ;INITIALIZE SEQUENCE NUMBERS 000030' 071040 000000 RELEAS CON, ;RELEASE TTY FOR USE AS IN-OUT DEVICE 000031' 403300 004040' MAINA1: SETZB FLAG,FILNAM ;INITIALIZE FOR FIRST/NEXT COMMAND STRING 000032' 403540 004637' SETZB AUXFLG,DEVICE IFN FTDSK, 000033' 200000 004666' MOVE 0,[XWD FILNAM,FILNAM+1] ;SET PROJECT, PROG NO. 000034' 251000 004136' BLT 0,AB ;ZERO OUT FILNAM - AB 000035' 400740 000000 SETZ CALFLG, ;CLEAR OTHER FLOGS 000036' 200140 000055' MOVE T3,COMPTR ;BYTE POINTER FOR STORING CS IN BUFFER ;ACCUMULATE CS CHARS IN COMBUF ALLOW LONG CS ONLY FOR TTY COMMAND 000037' 260240 001352' COMSTO: PUSHJ P,GETTA ;GET CS CHAR 000040' 350340 004131' AOS T4,COMCNT ;COUNT CHARS 000041' 303340 000310 CAILE T4,^D200 ;ALLOW UP TO 200 CHARS 000042' 254000 002045' JRST ERR6B ;MORE THAN 200 CHARS 000043' 306000 000032 CAIN 0,CZ ;CHECK FOR ^Z 000044' 260240 001415' COMASK: PUSHJ P,GETEN2 ;SET ^Z IN 0 000045' 136000 000003 IDPB 0,T3 ;STORE IN COMBUF 000046' 332000 004057' SKIPE COMEOF ;END-OF-FILE SET? 000047' 254000 000056' JRST COMPRO ;YES, PROCESS CS IN COMBUF 000050' 307000 000015 CAIG 0,CR ;NOT EOF 000051' 305000 000012 CAIGE 0,LF ;LF,VT,FF,CR? 000052' 306000 000033 CAIN 0,ALTMODE ;NO, $? 000053' 254000 000044' JRST COMASK ;YES 000054' 254000 000037' JRST COMSTO ;NO, KEEP STORING 000055' 440700 004060' COMPTR: POINT 7,COMBUF PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 10 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 ;******************************************************************** ;BEGIN SCAN OF DESTINATION PORTION OF COMMAND STRING 000056' COMPRO: IFN FTDSK,< MOVSI 0,(SIXBIT/DSK/) DEVCHR ;IS THERE A DSK? JUMPE 0,COMPRP MOVSI 0,(SIXBIT /DSK/) ;MAKE DEFAULT DEVICE MOVEM 0,DEVICE ;TENTATIVELY DSK> 000056' 071040 000000 COMPRP: RELEASE CON, ;RELEASE TTY 000057' 200000 000055' MOVE 0,COMPTR ;INITIALIZE POINTER 000060' 202000 004132' MOVEM 0,COMPTS ;TO PICK UP CS FROM COMBUF 000061' 260240 000557' PUSHJ P,NAME ;GO SCAN DESTINATION PORTION OF COMMAND STRING 000062' 332000 004135' SKIPE XNAME ;NO SCAN OVERSHOOT ALLOWED 000063' 254000 002040' JRST ERR6A 000064' 331000 004134' SKIPL ESWTCH ;11/25/69 END OF CS ? 000065' 254000 000073' JRST MAINC ;NO 000066' 606740 000400 TRNN CALFLG,NSWTCH ;NON-NULL DESTINATION 000067' 602740 001000 TRNE CALFLG,SSWTCH ;_ NOT SEEN? 000070' 332000 004040' SKIPE FILNAM ;OR ANYTHING IN FILENAME 000071' 254000 002040' JRST ERR6A ;YES, ERROR 000072' 254000 000013' JRST PIP2 ;NO, ALL OK 000073' 200000 004637' MAINC: MOVE 0,DEVICE ;GET OUTPUT DEVICE NAME 000074' 202000 004634' MOVEM 0,ODEV ;SAVE DEVICE NAME FOR LATER USAGE 000075' 260240 000506' PUSHJ P,DEVTST ;SAVE DEVICE TYPE, SET XXXOUT.E.G. DTAOUT 000076' 260240 000466' PUSHJ P,ABCHK ;CHECK MTA BACKSPACE/ADV VALUES 000077' 260240 000476' PUSHJ P,PROTK ;CHECK PROTECTION 000100' 200000 004136' MOVE 0,AB ;MTA VALUE SWITCHES 000101' 202000 004031' MOVEM 0,ABOUT ;GET MTA CONTROL NUMBERS FO R OUT 000102' 200000 004133' MOVE 0,AUX 000103' 202000 004032' MOVEM 0,AUXOUT 000104' 200000 004667' MOVE 0,[XWD FILNAM,DTON] 000105' 251000 004047' BLT 0,DTON+3 ;SAVE DESTINATION FILE NAME IFN FTDSK, 000106' 402000 004047' SETZM DTON+3 ;ZERO 4TH WD OF DIRECTORY ENTRY PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 11 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 000107' 620740 001000 M3: TRZ CALFLG,SSWTCH ;TERMINATE DESTINATION FILE SCAN 000110' 402000 004637' SETZM DEVICE ;DONT CARRY OVER INPUT DEVICE IFN FTDSK, 000111' 260240 000451' M3A: PUSHJ P,DESCRP ;GET A UNIT DESCRIPTOR (INPUT). 000112' 607540 000001 TLNN AUXFLG,QFLG;Q? ;SCAN INPUT PORTION OF COMMAND STRING 000113' 254000 000132' JRST M2 ;NO 000114' 551000 637163 HRRZI 0,(SIXBIT /SYS/) ;YES MAKE INPUT DEVICE SYS 000115' 516000 004637' HRLZM 0,DEVICE 000116' 516000 004050' HRLZM DEVA ;SAVE COPY OF INPUT DEVICE 000117' 200000 003727' MOVE 0,QPIP ;MAKE INPUT FILENAME QPIP 000120' 202000 004040' MOVEM 0,FILNAM 000121' 205000 120000 MOVSI 0,(SIXBIT /*/) ;DONT RESTRICT QPIP 000122' 202000 004041' MOVEM 0,FILEX ;EXT TO BEING NULL 000123' 620740 000002 TRZ CALFLG,MATEX ;DON'T MATCH EXTENSIONS 000124' 660540 000002 TRO AUXFLG,SYSFLG ;DEVICE IS SYS 000125' 200000 004037' MOVE 0,SYSPP ;GET SYS PP 000126' 202000 004043' MOVEM 0,PP ;AND SET IT 000127' 370000 004134' SOS ESWTCH ;NO MORE COMMAND STRING 000130' 620540 261500 TRZ AUXFLG,DTAIN+DSKIN+CDRIN+PPTIN+TTYIN+MTAIN 000131' 260240 002132' PUSHJ P,CHECK1 ;CHECK INPUT DEVICE 000132' 661540 000020 M2: TLO AUXFLG,NOMORE ;NO MORE SWITCHES BUT MTA ALLOWED 000133' 603300 000001 TLNE FLAG,OFLG ;BLOCK 0 COPY? 000134' 254000 003451' JRST BLOCK0 ;YES 000135' 640300 002100 TRC FLAG,XFLG+RFLG;(RX) 000136' 646300 002100 TRCN FLAG,XFLG+RFLG 000137' 260240 000173' PUSHJ P,M5 ;YES,(RX) IFN RIMSW,< TLNN FLAG,RIMFLG ;RIM OUTPUT? JRST M1 ;NO IFE WCH,< TRNE AUXFLG,PPTOUT ;RIM IS ONLY DTA TO PTP TRNN AUXFLG,DTAIN!DSKIN!MTAIN JRST ERR5B> IFN WCH,> 000140' 201340 000001 M1: MOVEI T4,1 ;ASCII LINE MODE ASSUMED 000141' 260240 000200' PUSHJ P,OUTLOOK ;SEE IF OUTPUT DEV MTA 000142' 260240 000154' PUSHJ P,M4 ;NOT MTA 000143' 603300 001000 TLNE FLAG,JFLG ;NON STARDARD MODE ? 000144' 660340 000100 TRO T4,100 ;TO PUNCH 029 ON CDP 000145' 552340 004633' HRRZM T4,OMOD ;SET MODE OF OUTPUT DEV 000146' 201340 000001 MOVEI T4,1 000147' 260240 000204' PUSHJ P,INLOOK ;SEE IF INPUT DEV MTA 000150' 260240 000154' PUSHJ P,M4 ;NOT MTA 000151' 552340 004636' HRRZM T4,ININI1 ;SET MODE OF INPUT DEV 000152' 260240 002746' PUSHJ P,FNSET ;NOW DEVICE, DEVA CORRECT FOR START 000153' 254000 000251' JRST OMOD1 ;INIT OUTPUT DEVICE PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 12 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 ;SET MODE IF /I,/B,/H, 000154' 607300 000100 M4: TLNN FLAG,IFLG ;IMAGE BINARY MODE? 000155' 254000 000160' JRST .+3 ;NO 000156' 660340 000010 TRO T4,10 ;IM. MODE 000157' 620340 000001 TRZ T4,1 ;CLEAR ASCII LINE MODE 000160' 606300 000002 TRNN FLAG,BMOD ;BINARY MODE? 000161' 254000 000164' JRST .+3 ;NO 000162' 660340 000014 TRO T4,14 ;BIN. MODE 000163' 620340 000001 TRZ T4,1 ;CLEAR ASCII LINE MODE 000164' 603300 000400 TLNE FLAG,IBFLG ;ASCII TO START. IB MODE? 000165' 660340 000013 TRO T4,13 ;YES 000166' 602300 002000 TRNE FLAG,XFLG ;COPY MODE? 000167' 263240 000000 POPJ P, ;YES, DON'T ALTER DATA MODE 000170' 602300 000110 TRNE FLAG,DFLG+RFLG ;DELETE OR RENAME? 000171' 660340 000020 TRO T4,20 ;DIRECTORY WILL BE WRITTEN, DON'T 000172' 263240 000000 POPJ P, ;COMPUTE WORD COUNT MODE NEEDED. ;FORCE MONITOR TO USE WORD COUNT ;IN FIRST DATA WORD OF BUFFER 000173' 620300 000100 M5: TRZ FLAG,RFLG ;CLEAR /R FLAG 000174' 660740 020000 TRO CALFLG,RXFLG ;SET (RX) FLAG 000175' 200000 004670' MOVE 0,[XWD DTON,MATCH] 000176' 251000 004650' BLT 0,MATCH+1 ;SAVE NAME AND EXT 000177' 263240 000000 POPJ P, ;RETURN PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 13 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 ;IF OUTPUT DEVICE IS MTA PERFORM ALL PRE-TRANSFER REQUESTS ;SUCH AS REWIND. IF OUTPUT DEVICE IS MTA, AND THERE IS NO ;INPUT DEVICE, EXIT. FOR OTHER MTA OUTPUT, PREPARE INIT ;DENSITY AND PARITY. 000200' OUTLOOK: 000200' 200140 004031' MOVE T3,ABOUT ;AB FOR OUTPUT DEV 000201' 200040 004032' MOVE T1,AUXOUT ;AUX FOR OUTPUT DEV 000202' 201500 003666' MOVEI T6,INOMTA ;SET TO INIT 000203' 254000 003531' JRST MT1 ;MTA FOR OUTPUT ;SAME FOR INPUT DEVICE. 000204' 332140 004040' INLOOK: SKIPE T3,FILNAM ;IF NO FILENAME 000205' 606300 002000 TRNN FLAG,XFLG ;OR NOT /X 000206' 254000 000217' JRST INLUK1 ;CONTINUE 000207' 332000 004044' SKIPE DTON ;IF OUTPUT NAME SET UP 000210' 254000 000217' JRST INLUK1 ;CONTINUE 000211' 554040 004041' HLRZ T1,FILEX ;GET EXT 000212' 302040 120000 CAIE T1,(SIXBIT /*/) ;IF EITHER IS * 000213' 316140 003730' CAMN T3,STAR ;DON'T SET OUTNAME 000214' 254000 000217' JRST INLUK1 ;BUT JUST CONTINUE 000215' 202140 004044' MOVEM T3,DTON ;SET OUT NAME 000216' 516040 004045' HRLZM T1,DTON+1 ;AND EXTENSION 000217' 200140 004136' INLUK1: MOVE T3,AB ;ADV OR BKSPACE 000220' 200040 004133' MOVE T1,AUX ;AUX FOR INPUT DEV 000221' 201500 003667' MOVEI T6,INIMTA ;SET TO INIT 000222' 254000 003531' JRST MT1 ;MTA FOR INPUT PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 14 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 ;ROUTINE TO INITIALIZE OUTPUT DEVICE 000223' 200040 004671' OMODE: MOVE T1,[XWD OBF,IBF] 000224' 202040 004635' MOVEM T1,ODEV+1 000225' 200040 004015' MOVE T1,DTJBFF ;JOBFF AFTER 2 TTY BUFS 000226' 202040 000000* MOVEM T1,JOBFF ;SET UP 000227' 050100 004633' OPEN OUT,OMOD ;INITIALIZE OUTPUT DEVICE 000230' 254000 001767' JRST ERR1 ;UNAVAILABLE ERROR 000231' 065100 000001 OUTBUF OUT,1 ;TRY ONE OUTBUFFER FOR SIZE 000232' 250040 000226* EXCH T1,JOBFF ;JOBFF_DTJBFF+BUFSZ ;NOTE JOBFF RESET TO DTJBFF 000233' 274040 004015' SUB T1,DTJBFF ;T1=BUFSZ 000234' 550000 000000* HRRZ 0,JOBREL ;HIGHEST CORE AVAILABLE 000235' 274000 004015' SUB 0,DTJBFF ;0=TOTAL CORE AVAILABLE 000236' 240000 777777 ASH 0,-1 ;COMPUTE HOW MANY OUTPUT BUFFERS 000237' 232000 000001 IDIVM 0,T1 ;FIT IN HALF THE AVAILABLE SPACE 000240' 201340 000223' MOVEI T4,OMODE ;SET RETURN FROM MORCOR 000241' 305040 000001 CAIGE T1,1 ;1 OR MORE THAN 1 FIT? 000242' 254000 000262' JRST MORCOR ;NO, NEED MORE CORE 000243' 065101 000000 OUTBUF OUT,(T1) ;SET UP OUTPUT BUFFERS 000244' 200000 003746' MOVE 0,OBF+1 000245' 202000 003741' MOVEM 0,SVOBF ;SAVE ORIGINAL MODE SETTING 000246' 200000 000232* MOVE 0,JOBFF 000247' 552000 004017' HRRZM 0,SVJBF1 ;PREPARE TO RECLAIM INBUFFER SPACE 000250' 263240 000000 POPJ P, 000251' 260240 000223' OMOD1: PUSHJ P,OMODE ;GO INITIALIZE OUTPUT DEVICE 000252' 626300 004000 TRZN FLAG,ZFLG ;Z COMMAND TYPED? 000253' 254000 000275' JRST MAINA2 ;NO, 000254' 260240 002212' PUSHJ P,DTCLR ;YES, GO CLEAR DIRECTORY 000255' 071100 000000 RELEASE OUT, 000256' 071240 000000 RELEASE DIR, 000257' 606740 000400 TRNN CALFLG,NSWTCH ;SEE IF DEVICE WAS TYPED 000260' 254000 000251' JRST OMOD1 ;YES 000261' 254000 000013' JRST PIP2 ;GET NEXT COMMAND 000262' 550000 000234* MORCOR: HRRZ 0,JOBREL ;TRY TO GET 000263' 271000 002000 ADDI 0,2000 ;1K MORE OF CORE 000264' 047000 000011 CORE ;ASK MONITOR FOR 1K CORE 000265' 254000 000267' JRST OMODER ;NOT AVAILABLE 000266' 254007 000000 JRST (T4) ;GOT IT 000267' 265040 002155' OMODER: ERRPNT 000270' 376355 772100 000271' 627355 772716 000272' 641014 367744 000273' 624000 000000 000274' 047000 000012 EXIT PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 15 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 ;MAIN LOOP TO PROCESS INPUT SIDE OF CS 000275' 602300 000110 MAINA2: TRNE FLAG,RFLG+DFLG ;RENAME OR DELETE FILE MODE? 000276' 254000 002432' JRST DTDELE ;YES./D,/X,OR(DX) IFN RIMSW,< TLNE FLAG,RIMFLG ;RIM? JRST RIMTB ;YES./Y > 000277' 602300 002000 TRNE FLAG,XFLG ;TRANSFER EVERYTHING MODE? 000300' 254000 002220' JRST PRECOP ;YES./X ;LOOP TO COPY ALL FILES BEGINS HERE FROM MAIN2 000301' 606540 000020 MAINA3: TRNN AUXFLG,FFLG ;LIST DSK DIR SHORT? 000302' 602300 000020 TRNE FLAG,LFLG ;LIST DIRECTORY? 000303' 254000 003017' JRST DTPDIR ;YES./F OR /L 000304' 260240 000426' PUSHJ P,ININIT ;INITIALIZE INPUT FILE 000305' 602540 020000 TRNE AUXFLG,DTAIN ;DEC TAPE INPUT? 000306' 260240 002701' PUSHJ P,DTADIR ;INIT DTA DIR IFN FTDSK, 000307' 260240 002566' MAINA4: PUSHJ P,LOOK ;GET A FILE TO COPY 000310' 254000 000323' JRST MAINA5 ;NO MORE 000311' 076140 004052' LOOKUP IN,ZRF 000312' 254000 002003' JRST ERR3 ;LOOKUP FAILURE IFN WCH,< MAINA6: TRNN AUXFLG,DTAIN+DTAOUT JRST .+5 HLRZ 0,ZRF+1 CAIE 0,(SIXBIT /DMP/) IFN DISK30, IFE DISK30, JRST MAINA4 ;DONT COPY DMP OR SAV FILES ON DTA> 000313' 661300 000020 TLO FLAG,NEWFIL 000314' 260240 003353' PUSHJ P,FILTYP 000315' 602540 000040 TRNE AUXFLG,ONEOUT 000316' 254000 000333' JRST PSCANA ;OUT HAS BEEN INITIALIZED IFE WCH,< 000317' 260240 002412' PUSHJ P,OKBLKS> 000320' 077100 004044' ENTER OUT,DTON ;CREATE OUTPUT FILE 000321' 254000 002024' JRST ERR4 ;DIR. FULL OR 0 FILE NAME 000322' 254000 000333' JRST PSCANA 000323' 626540 000001 MAINA5: TRZN AUXFLG,REDFLG 000324' 254000 001107' JRST IOERRN ;NEVER READ A FILE 000325' 254000 000411' JRST MAIN1 PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 16 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 000326' 602540 201500 PSCANB: TRNE AUXFLG,MTAIN!CDRIN!TTYIN!PPTIN ;ON NON-DIR DEVICE? 000327' 620740 000037 TRZ CALFLG,ALLCLF ;END OF THE ONE OR MANY FILES SPECIFIED 000330' 666540 000040 TRON AUXFLG,ONEOUT ;HAS OUT JUST BEEN INIT? 000331' 067100 000000 OUTPUT OUT, ;YES, AND FIRST FILE IS EOF ONLY, INIT OUT IN ;CASE NO MORE SOURCE FILES 000332' 254000 000407' JRST PSCAN5 ;EMPTY FILE, CLOSE INPUT, RETURN FOR MORE 000333' 660540 000001 PSCANA: TRO AUXFLG,REDFLG ;SET FLAG FOR INPUT FILE READ 000334' 260240 001616' PUSHJ P,INP ;GO READ INPUT FILE 000335' 620540 002000 TRZ AUXFLG,READ1 000336' 260240 002376' PUSHJ P,TTYZ ;CHECK IF INPUT IS TTY 000337' 602400 020000 TRNE IOS,EOFBIT ;EOF FIRST DATA? 000340' 254000 000326' JRST PSCANB 000341' 336000 003744' SKIPN IBF+2 000342' 254000 000333' JRST PSCANA 000343' 660540 000040 PSCAN: TRO AUXFLG,ONEOUT ;INDICATE ONE OUTPUT FILE INITED 000344' 200000 003723' MOVE 0,OPTRA ;PRESCAN A LINE, INITIALIZE LINE BUFFER PTR 000345' 202000 004020' MOVEM 0,OPTR 000346' 402000 004035' SETZM CDRCNT 000347' 260240 000553' PUSHJ P,CLRBUF ;CLEAR LINE BUFFER 000350' 664300 000400 TROA FLAG,STS ;START A FRESH LINE 000351' 260240 000756' PSCAN3: PUSHJ P,PUT ;HERE FOR BINARY DATA 000352' 260240 001462' PSCAN2: PUSHJ P,GET ;GET CHARACTER 000353' 254000 000376' JRST PSCAN1 ;END OF FILE RETURN 000354' 616300 004672' TDNN FLAG,[XWD IFLG+IBFLG,BMOD] ;BIN. OR NO CHAR. PROCESSING 000355' 603540 000004 TLNE AUXFLG,SBIN 000356' 254000 000351' JRST PSCAN3 ;YES 000357' 200040 004020' MOVE T1,OPTR 000360' 306200 000177 CAIN CHR,DEL ;VJC 4/16/69 000361' 254000 000352' JRST PSCAN2 ; STR# 10-2615 000362' 316040 003722' CAMN T1,OPTMAX ;CHECK LENGTH OF LINE 000363' 254000 001751' JRST ERR10 ;LINE TOO LONG 000364' 136200 004020' IDPB CHR,OPTR ;DEPOSIT CHAR. IN LINE BUFFER 000365' 307200 000024 CAIG CHR,24 000366' 305200 000020 CAIGE CHR,20 ;LINE PRINTERR CONTROL CHAR 000367' 254000 000371' SKIP 1 ;NO 000370' 254000 000374' JRST PSCAN4 ;YES, TREAT AS END OF LINE 000371' 307200 000014 CAIG CHR,14 000372' 305200 000012 CAIGE CHR,12 ;END OF LINE CHARACTER? 000373' 254000 000352' JRST PSCAN2 ;NO, SO CONTINUE 000374' 260240 000707' PSCAN4: PUSHJ P,OUTLBF ;YES, SO DUMP THE LINE BUFFER 000375' 254000 000343' JRST PSCAN ;SCAN THE NEXT LINE 000376' 135200 004020' PSCAN1: LDB CHR,OPTR ;PICK UP LAST CHAR. 000377' 306200 000032 CAIN CHR,CZ ;IS IT ^Z 000400' 606540 001000 TRNN AUXFLG,TTYIN ;FROM TTY? 000401' 254000 000404' JRST PSCAN6 ;NO 000402' 400200 000000 SETZ CHR, ;YES,CLEAR CHAR. 000403' 137200 004020' DPB CHR,OPTR ;AND REMOVE FROM BUFFER 000404' 260240 000707' PSCAN6: PUSHJ P,OUTLBF ;DUMP THE REMAINING BUFFER 000405' 602300 002000 TRNE FLAG,XFLG ;COPY MODE? PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 16-1 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 000406' 254000 002311' JRST COPY2A ;YES, GO COPY THE NEXT FILE 000407' 070140 000000 PSCAN5: CLOSE IN, 000410' 254000 000307' JRST MAINA4 PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 17 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 ;COME HERE AFTER /L,/D,/R ON DISK OR THROUGH COPYING 000411' 071240 000000 MAIN1: RELEAS DIR, ;RELEASE THE DIRECTORY DEVICE 000412' 071140 000001 RELEAS IN,INHIB ;RELEASE THE INPUT DEVICE 000413' 331340 004134' SKIPL T4,ESWTCH ;MORE COMMAND STRING TO PROCESS? 000414' 254000 000421' JRST MAIN2 ;YES ;COME HERE AFTER /D,/R ON DTA. ALSO FROM ABOVE 000415' 070100 000000 MAINB: CLOSE OUT, ;CLOSE THE OUTPUT FILE 000416' 260240 000764' PUSHJ P,OUTP1 ;CHECK THE FINAL ERROR BITS IFN FTDSK, 000417' 071100 000000 RELEAS OUT, ;RELEASE THE OUTPUT DEVICE 000420' 254000 000013' JRST PIP2 ;PROCESS THE NEXT COMMAND 000421' 260240 000451' MAIN2: PUSHJ P,DESCRP ;GET THE NEXT INPUT FILE TO PROCESS 000422' 260240 000204' PUSHJ P,INLOOK 000423' 260240 000154' PUSHJ P,M4 000424' 552340 004636' HRRZM T4,ININI1 000425' 254000 000301' JRST MAINA3 ;END OF LOOP BEGINNING AT MAINA3 PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 18 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 ;SUBROUTINE TO INITIALIZE THE INPUT FILE 000426' 200040 004017' ININIT: MOVE T1,SVJBF1 ;SVJBF1=END OF OUTPUT BUFFERS 000427' 202040 000246* MOVEM T1,JOBFF ;COMPARE OMODE CODE 000430' 201000 003742' MOVEI 0,IBF 000431' 202000 004640' MOVEM 0,DEVICE+1 000432' 050140 004636' OPEN IN,ININI1 000433' 254000 001770' JRST ERR1A ;NOT AVAILABLE ERROR 000434' 064140 000001 INBUF IN,1 ;TRY ONE INPUT BUFFER FOR SIZE 000435' 250040 000427* EXCH T1,JOBFF ;HOW MANY INBUFFERS WILL FIT? 000436' 274040 004017' SUB T1,SVJBF1 000437' 550000 000262* HRRZ 0,JOBREL 000440' 274000 000435* SUB 0,JOBFF ;JOBREL-SVJBF1=TOTAL SPACE LEFT 000441' 232000 000001 IDIVM 0,T1 000442' 201340 000426' MOVEI T4,ININIT ;RETURN FROM MORCOR IS ININIT 000443' 305040 000001 CAIGE T1,1 ;1 OR MORE THAN 1 FITS? 000444' 254000 000262' JRST MORCOR ;NO, GET MORE CORE 000445' 064141 000000 INBUF IN,(T1) ;SET UP AS MANY BUFFS AS FIT 000446' 200000 003743' MOVE 0,IBF+1 ;SAVE ORIGINAL MODE 000447' 202000 003740' MOVEM 0,SVIBF 000450' 263240 000000 POPJ P, PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 19 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 ;THIS ROUTINE GETS AN INPUT UNIT DESCRIPTOR AND, FOR ;ADVANCE FILE AND BSPF ON MTA, ENSURES THE VALUE 1 IF NO ;NUMBER WAS GIVEN. 000451' 402000 004133' DESCRP: SETZM AUX ;WILL GET ANY MTA REQ. GOING TO AUXFLG. 000452' 622540 000002 TRZE AUXFLG,SYSFLG ;IS THIS DEVICE SYS.? 000453' 660540 000004 TRO AUXFLG,SYSLST ;YES,SET SYS AS LAST DEVICE 000454' 402000 004136' SETZM AB ;MTA VALUE SWITCHES 000455' 402000 004042' SETZM PR ;PROTECTION 000456' 402000 004043' SETZM PP ;PROJ-PROG NUMBER ;******************************************************************** 000457' 260240 000557' PUSHJ P,NAME ;GO SCAN INPUT SIDE OF COMMAND STRING 000460' 200040 004042' MOVE T1,PR ;PROTECTION 000461' 512040 004042' HLLZM T1,PR ;IGNORE PR FLAG IN RHS FOR INPUT 000462' 620540 261500 TRZ AUXFLG,DTAIN+DSKIN+PPTIN+MTAIN+CDRIN+TTYIN 000463' 260240 002132' PUSHJ P,CHECK1 ;CHECK UNIT, AND FOR _ IFN FTDSK, 000464' 332000 004135' DESCR1: SKIPE XNAME ;NO OVERSHOOT ALLOWED 000465' 254000 002040' JRST ERR6A 000466' 554100 004136' ABCHK: HLRZ T2,AB ;NO RECS/FILES TO BACKSPACE 000467' 326100 000471' JUMPN T2,.+2 ;IF 0 000470' 201100 000001 MOVEI T2,1 ;GUARANTEE ONE 000471' 506100 004136' HRLM T2,AB ;SET AB LH 000472' 550100 004136' HRRZ T2,AB ;NO RECS/FILES TO ADV 000473' 326100 002746' JUMPN T2,FNSET ;IF 0 000474' 350000 004136' AOS AB ;GUARANTEE 1 000475' 254000 002746' JRST FNSET ;FIND OUT DETAILS OF FILENAME PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 20 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 ;IF A NON-STANDARD OUTPUT PROTECTION IS REQUESTED, SAVE FOR RENAME. 000476' 200040 004042' PROTK: MOVE T1,PR 000477' 606040 000001 TRNN T1,1 000500' 254000 000504' JRST PROTK1 000501' 512040 004033' HLLZM T1,PROTS 000502' 512040 004042' HLLZM T1,PR 000503' 665540 000002 TLOA AUXFLG,NSPROT 000504' 403040 004042' PROTK1: SETZB T1,PR 000505' 263240 000000 POPJ P, ;TEST "DEVICE" TO SEE IF DESTINATION DEVICE IS DTA, DSK, PTP, LPT, TTY, MTA ;IF ANY IS TRUE, SET RELEVANT BIT IN AUXFLG. "0" CONTAINS ;"DEVICE" ON ENTRY. 000506' 047000 000004 DEVTST: DEVCHR ;GET DEVICE CHARACTERISTICS IFN FTDSK, 000507' 322000 000525' JUMPE 0,DEVER2 ;NON-EXISTENT DEVICE 000510' 607000 000001 TLNN 0,OUTBIT ;CAN DEV DO OUTPUT? 000511' 254000 002040' JRST ERR6A ;NO 000512' 603000 000004 TLNE 0,DTABIT ;DECTAPE? 000513' 660540 004000 TRO AUXFLG,DTAOUT ;YES 000514' 603000 000400 TLNE 0,PTPBIT ;PAPER TAPE PUNCH? 000515' 660540 400000 TRO AUXFLG,PPTOUT 000516' 603000 040000 TLNE 0,LPTBIT ;LINE PRINTER? 000517' 660540 000010 TRO AUXFLG,LPTOUT 000520' 603000 000010 TLNE 0,TTYBIT ;TELETYPE? 000521' 660540 100000 TRO AUXFLG,TTYOUT 000522' 603000 000020 TLNE 0,MTABIT ;MAGTAPE? 000523' 660540 000200 TRO AUXFLG,MTAOUT 000524' 263240 000000 POPJ P, PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 21 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 ;ROUTINE TO CHECK IF DEVICE SYS AND SET [P,P], IF NONE GIVEN IFN FTDSK,< PSYSP: CAME 0,[SIXBIT /SYS/];IS DEVICE SYS? POPJ P, ;NO MOVE T1,SYSPP ;GET SYS PP MOVEM T1,PP ;AND SET IT TRO AUXFLG,SYSFLG ;SET FLAG TO INDICATE POPJ P, ;CURRENT INPUT DEVICE IS SYS> 000525' DEVER1: 000525' 200040 004637' DEVER2: MOVE T1,DEVICE 000526' 202040 004641' DEVER: MOVEM T1,DEVERR 000527' 265040 002155' ERRPNT 000530' 376114 573322 000531' 617124 000000 000532' 260240 002201' PUSHJ P,P6BIT 000533' 000000 004641' DEVERR 000534' 265040 002166' ERRPN2 000535' 623374 571500 000536' 673376 420312 000537' 743236 372102 000540' 000000 000000 ;ROUTINE TO INIT PDL POINTER AND TTY 000541' 201240 004153' INICN1: MOVEI P,PDL-1 ;INITIALIZE PUSHDOWN POINTER 000542' 200000 004016' INICN2: MOVE 0,SVJBFF ;IS INITIALIZED AT PIP1 000543' 202000 000440* MOVEM 0,JOBFF ;SET JOBFF TO BEGINNING OF BUFFER AREA 000544' 260240 001410' PUSHJ P,INICON ;INITIALIZE THE TTY 000545' 064040 000001 INBUF CON,1 ;ONE INBUFFER 000546' 065040 000001 OUTBUF CON,1 ;ONE OUTBUFFER 000547' 200000 000543* MOVE 0,JOBFF 000550' 552000 004015' HRRZM 0,DTJBFF ;JOBFF AFTER 2 TTY BUFFERS SET 000551' 067040 000000 OUTPUT CON, ;INITIALIZE BUFFER POINTERS 000552' 254011 000000 JRST (T5) ;ROUTINE TO CLEAR LINE BUFFER 000553' 402000 004174' CLRBUF: SETZM LBUF ;SUBR. TO CLEAR LINE BUFFER 000554' 200000 004673' MOVE 0,[XWD LBUF,LBUF+1] 000555' 251000 004377' BLT 0,LBUFE 000556' 263240 000000 POPJ P, PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 22 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 ;COMMAND SCANNER ROUTINE 000557' 606740 001000 NAME: TRNN CALFLG,SSWTCH ;RETURN NULL IF _ OR END-OF-LINE SEEN 000560' 335000 004134' SKIPGE ESWTCH 000561' 254000 000666' JRST NM13 ; 000562' 620740 000400 TRZ CALFLG,NSWTCH 000563' 332040 004135' SKIPE T1,XNAME ;IF COMMAND SCAN OVERSHOOT PICKED UP ;DEVICE NAME, USE IT NOW 000564' 254000 000640' JRST NM7 000565' 620740 000100 TRZ CALFLG,DEV ;LOOK FOR FILE NAME, EXT 000566' 402000 004041' NM1: SETZM FILEX 000567' 402000 004040' NM2: SETZM FILNAM 000570' 200040 000672' MOVE T1,NM15 ;LOOP TO PICK OFF FILENAME, EXT 000571' 260240 001175' NM3: PUSHJ P,GETCOM ;GO GET 7 BIT ASCII CHAR. FROM COMMAND STRING 000572' 302000 000052 CAIE 0,"*" ;TO ALLOW FN.EX = *.* 000573' 301000 000101 CAIL 0,"A" ;ALPHABETIC CHARACTER? 000574' 303000 000132 CAILE 0,"Z" 000575' 254000 000602' JRST NM4A ;NO 000576' 275000 000040 NM4: SUBI 0,40 ;CONVERT TO SIXBIT 000577' 603040 770000 TLNE T1,770000 ;6 CHARS. YET? 000600' 136000 000001 IDPB 0,T1 ;NO 000601' 254000 000571' JRST NM3 ;GET NEXT CHAR. 000602' 301000 000060 NM4A: CAIL 0,"0" ;NUMERIC? 000603' 303000 000071 CAILE 0,"9" 000604' 254000 000606' JRST NM5 ;NO 000605' 254000 000576' JRST NM4 PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 23 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 ;CHARACTER NOT *,0-9,A-Z 000606' 307000 000015 NM5: CAIG 0,CR ;CARRIAGE RETURN 000607' 305000 000012 CAIGE 0,LF ;LINE FEED 000610' 306000 000033 CAIN 0,ALTMOD ;ALTMODE 000611' 254000 000613' JRST NM5A ;YES 000612' 306000 000032 CAIN 0,CZ ;END-OF-FILE(CCL)? 000613' 374000 004134' NM5A: SOSA ESWTCH ;YES, OR EOF 000614' 306000 000054 CAIN 0,COMMA ;COMMA 000615' 254000 000633' JRST NM6 ;YES 000616' 306000 000056 CAIN 0,PERIOD ;PERIOD 000617' 254000 000654' JRST NM10 ;YES 000620' 306000 000072 CAIN 0,COLON ;COLON 000621' 254000 000646' JRST NM9 ;YES 000622' 306000 000073 CAIN 0,";" ;IS THE REST A COMMENT? 000623' 254000 000700' JRST NM16 ;YES 000624' 306000 000003 CAIN 0,"C"-100 ;^C 000625' 047000 000012 EXIT ;IN CASE JACCT ON ??? 000626' 302000 000137 CAIE 0,LA ;LEFT ARROW 000627' 254000 000673' JRST NM5B ;NO 000630' 660740 001000 TRO CALFLG,SSWTCH ;SET LEFT ARROW SWITCH 000631' 602740 000100 TRNE CALFLG,DEV ;HAS A DEVICE BEEN SEEN? 000632' 660740 000200 TRO CALFLG,DVSWTH ;YES-NEEDED FOR /Z/,/D 000633' 336040 004041' NM6: SKIPN T1,FILEX ;COMMA ROUTINE - FIGURE OUT WHAT WE HAVE 000634' 254000 000661' JRST NM11 ;NO FILE NAME TEMPORARILY IN FILEX 000635' 250040 004040' EXCH T1,FILNAM ;PUT THE FILE NAME WHERE IT BELONGS 000636' 512040 004041' HLLZM T1,FILEX ;PUT THE EXTENSION WHERE IT BELONGS 000637' 263240 000000 POPJ P, 000640' 402000 004135' NM7: SETZM XNAME ;USE XNAME ONLY ONCE 000641' 306040 000001 CAIN T1,1 ;1 FLAGS A NULL OVERSHOOT 000642' 254000 000666' JRST NM13 ;RETURN NULL NAME 000643' 202040 004637' NM8: MOVEM T1,DEVICE ;NEW DEVICE 000644' 660740 000100 TRO CALFLG,DEV 000645' 254000 000566' JRST NM1 ;LOOK FOR A FILE NAME AND EXTENSION 000646' 606740 000100 NM9: TRNN CALFLG,DEV ;COLON ROUTINE - IS DEVICE NAME IN YET? 000647' 254000 000664' JRST NM12 ;NO 000650' 336040 004040' SKIPN T1,FILNAM ;SCAN OVERSHOOT - NULL OVERSHOOT? 000651' 201040 000001 MOVEI T1,1 ;YES - FLAG NULL OVERSHOOT WITH A 1 000652' 202040 004135' MOVEM T1,XNAME ;XNAME = OVERSHOOT NAME 000653' 254000 000670' JRST NM14 000654' 332000 004041' NM10: SKIPE FILEX 000655' 254000 002040' JRST ERR6 000656' 200000 004040' MOVE 0,FILNAM ;PERIOD ROUTINE - SAVE FILE NAME 000657' 202000 004041' MOVEM 0,FILEX ;TEMPORARILY IN FILEX 000660' 254000 000567' JRST NM2 ;LOOK FOR EXTENSION 000661' 336000 004040' NM11: SKIPN FILNAM ;WAS A FILE NAME SPECIFIED? 000662' 602740 000100 TRNE CALFLG,DEV ;WAS ANYTHING SPECIFIED? 000663' 263240 000000 POPJ P, ;YES 000664' 332040 004040' NM12: SKIPE T1,FILNAM ;NULL NAME SPECIFIED? 000665' 254000 000643' JRST NM8 ;NO - SO REMEMBER AND LOOK FOR FILE NAME PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 23-1 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 000666' 660740 000400 NM13: TRO CALFLG,NSWTCH ;RETURN A NULL NAME 000667' 402000 004041' SETZM FILEX 000670' 402000 004040' NM14: SETZM FILNAM 000671' 263240 000000 POPJ P, 000672' 440600 004040' NM15: POINT 6,FILNAM 000673' 307000 000137 NM5B: CAIG 0,LA ;ALLOW ANY SIXBIT CHAR NOT CS DELIMITER 000674' 307000 000040 CAIG 0,SPACE ;SPACES IGNORED 000675' 254000 000571' JRST NM3 ;IGNORE NOT LEGAL SIXBIT 000676' 254000 000576' JRST NM4 ;ACCEPT 000677' 260240 001404' PUSHJ P,GETBUF ;GET NEXT ASCII CHAR. 000700' 303000 000012 NM16: CAILE 0,LF 000701' 307000 000015 CAIG 0,CR ;IF LF,FF,VT,OR CR 000702' 254000 000613' JRST NM5A ;RETURN 000703' 302000 000033 CAIE 0,ALTMOD ;SAME IF ALTMOD 000704' 306000 000032 CAIN 0,CZ ;OR ^Z 000705' 254000 000613' JRST NM5A 000706' 254000 000677' JRST NM16-1 ;GET NEXT CHARACTER PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 24 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 ;ROUTINE TO OUTPUT ONE LINE FROM LBUF 000707' 602300 000001 OUTLBF: TRNE FLAG,LINE 000710' 254000 000717' JRST OUTLBA ;OUTPUT LINE-BY-LINE 000711' 200100 003723' OUTCH1: MOVE T2,OPTRA ;OUTPUT CHARACTER-BY-CHARACTER 000712' 316100 004020' OUTLB1: CAMN T2,OPTR ;ARE ALL CHARACTERS OUT? 000713' 263240 000000 POPJ P, ;YES 000714' 134200 000002 ILDB CHR,T2 ;NO 000715' 260240 000756' PUSHJ P,PUT ;GO OUTPUT CHARACTER 000716' 254000 000712' JRST OUTLB1 000717' 603300 000040 OUTLBA: TLNE FLAG,CHKFLG;PAREN COUNTING? 000720' 254000 003305' JRST OUTCHK ;YES, SO DO IT 000721' 602540 100010 TRNE AUXFLG,TTYOUT+LPTOUT 000722' 254000 000711' JRST OUTCH1 ;IF OUTPUT TO TTY OR LPT DO CHR BY CHR 000723' 201040 000004 MOVEI T1,4 ;CLEAR UNUSED PORTION OF LAST WORD USED IN LBUF 000724' 201100 000000 MOVEI T2,0 000725' 200140 004020' MOVE T3,OPTR 000726' 136100 000003 IDPB T2,T3 000727' 367040 000726' SOJG T1,.-1 000730' 201100 000005 MOVEI T2,5 000731' 550040 004020' HRRZ T1,OPTR ;COMPUTE NUMBER OF WORDS FILLED 000732' 275040 004173' SUBI T1,LBUF-1 000733' 322040 000754' JUMPE T1,OUTLB3 ;DO NOTHING IF BUFFER EMPTY 000734' 222040 000002 IMULM T1,T2 ;COMPUTE CHARACTER COUNT=5 TIMES WORD CT ;THIS IS WHERE OLD FORTRAN MODE WAS TESTED. 000735' 317100 003747' CAMG T2,OBF+2 ;WILL LINE FIT IN THE OUTBUFFER? 000736' 254000 000745' JRST OUTLB2 ;YES 000737' 260240 000762' PUSHJ P,OUTP ;NO, SO DUMP BUFFER AND CHECK ERROR BITS 000740' 201500 000001 MOVEI T6 ,1 000741' 612500 004174' TDNE T6,LBUF ;SEQUENCED? 000742' 606540 004000 TRNN AUXFLG,DTAOUT ;YES, ON DTA? 000743' 254000 000745' SKIP 1 ;NO 000744' 271100 000240 ADDI T2,40*5 ;LEAVE EDITING ROOM 000745' 213000 000002 OUTLB2: MOVNS T2 000746' 272100 003747' ADDM T2,OBF+2 ;UPDATE OUTBUFFER CHARACTER COUNT 000747' 505100 004174' HRLI T2,LBUF 000750' 540100 003746' HRR T2,OBF+1 000751' 340100 000000 AOJ T2, 000752' 273040 003746' ADDB T1,OBF+1 ;UPDATE OUTBUFFER BYTE POINTER 000753' 251101 000000 BLT T2,(T1) ;MOVE DATA TO OUTBUFFER 000754' 263240 000000 OUTLB3: POPJ P, PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 25 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 ;ROUTINE TO PUT ONE CHAR INTO OUT BUFFER 000755' 201200 000011 TABOUT: MOVEI CHR,TAB ;OUTPUT A TAB 000756' 377000 003747' PUT: SOSG OBF+2 ;SUBR. TO OUTPUT ONE CHARACTER IN AC CHR 000757' 260240 000762' PUSHJ P,OUTP ;IF BUFFER FULL, DUMP AND CHECK ERR BITS 000760' 136200 003746' IDPB CHR,OBF+1 ;PUT CHARACTER IN BUFFER 000761' 263240 000000 POPJ P, ;ROUTINE TO DUMP OUT BUFFER WHEN FULL 000762' 057100 000000 OUTP: OUT OUT, ;SUBR. TO DUMP OUTBUFFER AND CHECK ERR BITS 000763' 254000 001710' JRST CPOPJZ ;NO ERRERS,BUT CLEAR IOS JUST IN CASE 000764' 062100 000010 OUTP1: GETSTS OUT,IOS ;HERE FOR BIT CHECKING ONLY 000765' 260240 000770' PUSHJ P,OUTP4 000766' 060110 000000 SETSTS OUT,(IOS);ERRORS WERE DETECTED 000767' 263240 000000 POPJ P, ;NO ERRORS 000770' 606540 000200 OUTP4: TRNN AUXFLG,MTAOUT 000771' 254000 000774' JRST .+3 000772' 602400 002000 OUTP3: TRNE IOS,EOTBIT ;EOT? 000773' 254000 000776' JRST .+3 ;YES 000774' 606400 740000 TRNN IOS,740000 ;ANY ERROR BITS ON? 000775' 254000 001707' JRST CPOPJ1 ;NO 000776' 260240 001135' PUSHJ P,COMERR ;YES 000777' 265440 000542' JSP T5,INICN2 ;INIT TTY 001000' 260240 001652' PUSHJ P,QUEST 001001' 265040 002166' ERRPN2 001002' 477536 470352 001003' 721014 462754 001004' 647074 520000 001005' 260240 002201' PUSHJ P,P6BIT 001006' 000000 004634' ODEV 001007' 336000 004044' SKIPN DTON ;ONLY IF THERE IS A FILE NAME 001010' 254000 001014' JRST .+4 ;DON'T PRINT IF NOT 001011' 265040 002166' ERRPN2 001012' 351014 664730 001013' 625000 000000 001014' 201140 004044' MOVEI T3,DTON ;OUTPUT FILE NAME LOC 001015' 260240 001146' PUSHJ P,FN.EX ;PRINT FILE NAME EXT 001016' 200100 000013 MOVE T2,AUXFLG 001017' 405100 014200 ANDI T2,MTAOUT+DSKOUT+DTAOUT PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 26 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 001020' 201040 001074' IOERR: MOVEI T1,TXTC ;PHYSICAL END OF TAPE 001021' 602400 002000 TRNE IOS,EOTBIT 001022' 254000 002166' JRST PTEXT2 ;YES 001023' 201040 001055' MOVEI T1,TXTD2 ;7-9 PUNCH MISSING 001024' 606100 000100 TRNN T2,CDRIN IFN FTDSK,< MOVEI T1,TXTD3 TRNN T2,DSKIN!DSKOUT> 001025' 201040 001042' MOVEI T1,TXTD ;WRITE LOCK ERROR 001026' 606100 074600 TRNN T2,DSKIN+DSKOUT+DTAIN+DTAOUT+MTAIN+MTAOUT 001027' 201040 001047' MOVEI T1,TXTD1 001030' 602400 400000 TRNE IOS,WRTLOK 001031' 254000 002166' JRST PTEXT2 001032' 201040 001062' MOVEI T1,TXTA ;DEVICE ERROR 001033' 602400 200000 TRNE IOS,200000 001034' 254000 002166' JRST PTEXT2 001035' 201040 001066' MOVEI T1,TXTB ;CHECKSUM/PARITY ERROR 001036' 602400 100000 TRNE IOS,100000 001037' 254000 002166' JRST PTEXT2 IFN FTDSK,< HRRZ T1,TABLE+14 TRNN T2,DSKOUT ;QUOTA EXCEDED> 001040' 201040 001100' MOVEI T1,TXTC1 ;BLOCK TOO LARGE 001041' 254000 002166' JRST PTEXT2 PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 27 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 ;DEVICE ERROR COMMENTS 001042' 737455 172312 TXTD: ASCIZ /write (lock) error/ 001043' 201215 467706 001044' 655224 062744 001045' 713376 200000 001046' 254000 001107' JRST IOERRN ;NO RECOVERY 001047' 613235 660744 TXTD1: ASCIZ /binary data incomplete/ 001050' 745014 460750 001051' 605015 167306 001052' 677336 066312 001053' 723120 000000 001054' 254000 001114' JRST IOERRG 001055' 335327 120340 TXTD2: ASCIZ /7-9 punch missing/ 001056' 727354 364100 001057' 667236 371722 001060' 673160 000000 001061' 254000 001114' JRST IOERRG 001062' 623136 664706 TXTA: ASCIZ /device error/ 001063' 625014 571344 001064' 677440 000000 001065' 254000 001114' JRST IOERRG 001066' 617214 561726 TXTB: ASCIZ /checksum or parity error/ 001067' 717535 520336 001070' 711016 060744 001071' 647517 120312 001072' 713455 771000 001073' 254000 001114' JRST IOERRG 001074' 703217 171722 TXTC: ASCIZ /physical eot/ 001075' 617035 420312 001076' 677500 000000 001077' 254000 001114' JRST IOERRG 001100' 613315 761726 TXTC1: ASCIZ /block or block number too large/ 001101' 203376 220304 001102' 663374 365500 001103' 673535 561312 001104' 711016 467736 001105' 203314 171316 001106' 624000 000000 ;FALLS THROUGH TO IOERRN PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 28 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 001107' 071200 000000 IOERRN: RELEAS TAPE, ;NO RECOVERY ERRORS EXIT HERE 001110' 071240 000000 RELEAS DIR, 001111' 071100 000000 RELEAS OUT, 001112' 071140 000000 RELEAS IN, IFN DISK30,< RELEAS BLKIN,> 001113' 254000 000013' JRST PIP2 ;GET NEXT COMMAND IFN FTDSK,< TXTD3: ASCIZ /monitor detected software error/> ;TEST IF /G FLAG(IGNORE ERRORS) SET 001114' 607300 000200 IOERRG: TLNN FLAG,GFLG ;PRINTED CURRENT MESSAGE 001115' 254000 001107' JRST IOERRN ;NO RECOVERY ERRPN2 ;PRINT CR, LF DON'T MOVE> 001117' 064240 000000 001120' 071040 000000 RELEAS CON, 001121' 602540 100000 TRNE AUXFLG,TTYOUT ;TTY OUTPUT DEVICE? 001122' 260240 000223' PUSHJ P,OMODE ;YES, INIT OUTPUT DEVICE 001123' 602540 001000 TRNE AUXFLG,TTYIN ;REINIT TTYIN,TTYOUT 001124' 260240 000426' PUSHJ P,ININIT 001125' 620400 740000 TRZ IOS,740000 ;CLEAR FILE STATUS, I/O ERRORS 001126' 602100 000600 TRNE T2,MTAIN+MTAOUT 001127' 620400 002000 TRZ IOS,EOTBIT ;CLEAR PHYSICAL EOT I/O ERROR 001130' 204000 004674' MOVS 0,[XWD 1,SAVAC] 001131' 251000 000003 BLT 0,3 001132' 200440 003764' MOVE T5,SAVAC+3 001133' 200500 003765' MOVE T6,SAVAC+4 001134' 263240 000000 POPJ P, PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 29 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 001135' 200000 004674' COMERR: MOVE 0,[XWD 1,SAVAC] ;SAVE ACS T1,T2,T3,T5,T6 001136' 251000 003763' BLT 0,SAVAC+2 001137' 202440 003764' MOVEM T5,SAVAC+3 001140' 202500 003765' MOVEM T6,SAVAC+4 001141' 602540 100000 TRNE AUXFLG,TTYOUT ;RELEASE ANY TTYIO 001142' 071100 000000 RELEAS OUT, 001143' 602540 001000 TRNE AUXFLG,TTYIN 001144' 071140 000000 RELEAS IN, 001145' 263240 000000 POPJ P, ;PRINT FILE NAME AND EXTENSION FROM (T3), 1(T3). 001146' 200043 000000 FN.EX: MOVE T1,(T3) ;T1=FILENAME 001147' 554503 000001 HLRZ T6,1(T3) ;T6=FILE EXT 001150' 306500 654644 CAIN T6,(SIXBIT /UFD/) 001151' 400040 000000 SETZ T1, ;UFD FILES ONLY ARE ASSUMED TO HAVE FILENAME 001152' 202040 004642' MOVEM T1,DERR2 ;OF NUMERIC FORM (#,# P-P NUMBER). 001153' 322500 001166' JUMPE T6,DERR2A ;FILE EXT=0? 001154' 302500 654644 CAIE T6,(SIXBIT /UFD/) 001155' 254000 001165' JRST DERR2B ;NO 001156' 554643 000000 HLRZ DOUT,(T3) ;YES, GET PROJ. NO. 001157' 201100 002175' MOVEI T2,PUTCON ;PRINT PROJ-PROG. NO. 001160' 260240 003235' PUSHJ P,OUTDC1 ;CONVERT TO ASCII 001161' 201200 000054 MOVEI CHR,COMMA 001162' 260240 002175' PUSHJ P,PUTCON 001163' 550643 000000 HRRZ DOUT,(T3) ;GET PROG. NO. 001164' 260240 003235' PUSHJ P,OUTDC1 ;CONVERT TO ASCII 001165' 661500 000016 DERR2B: TLO T6,"."-40 ;PUT SIXBIT PERIOD 001166' 202500 004643' DERR2A: MOVEM T6,DERR2+1 ;INTO EXTENSION 001167' 260240 002201' PUSHJ P,P6BIT 001170' 000000 004642' DERR2 001171' 260240 002201' PUSHJ P,P6BIT 001172' 000000 004643' DERR2+1 001173' 201200 000040 MOVEI CHR," " 001174' 254000 002175' JRST PUTCON PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 30 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 ;THIS ROUTINE GETS A 7 BIT ASCII CHARACTER FROM THE COMMAND STRING ;AND RETURNS IT TO THE COMMAND SCANNER ROUTINE (NAME) IN AC0 001175' 260240 001404' GETCOM: PUSHJ P,GETBUF 001176' 306000 000057 CAIN 0,"/" ;SINGLE CHARACTER SWITCH 001177' 254000 001300' JRST GETT6 001200' 306000 000050 CAIN 0,"(" ;LOOK FOR (MULTI-CHAR.) SWITCH 001201' 254000 001252' JRST GETT3 001202' 306000 000074 CAIN 0,"<" ;GO LOOK FOR PROTECTION 001203' 254000 001223' JRST GETT9 001204' 302000 000133 CAIE 0,"[" 001205' 263240 000000 POPJ P, 001206' 260240 001236' GETT10: PUSHJ P,GETDEC ;LOOK FOR PROJECT-PROGRAMMER NUMBER 001207' 303600 777777 CAILE T7,-1 ;GREATER THAN HALF WORD? 001210' 254000 002107' JRST ERR2A ;YES, ERROR 001211' 302000 000054 CAIE 0,"," ;SEPARATOR? 001212' 254000 001232' JRST GETUPJ ;OR TERMINATOR (NON-NUMERIC) 001213' 516600 004043' HRLZM T7,PP 001214' 260240 001236' PUSHJ P,GETDEC 001215' 303600 777777 CAILE T7,-1 001216' 254000 002107' JRST ERR2A 001217' 542600 004043' GETT11: HRRM T7,PP 001220' 306000 000135 CAIN 0,"]" ;FORCE CORRECT TERMINATOR 001221' 254000 001175' JRST GETCOM 001222' 254000 002076' JRST ERR2 001223' 260240 001235' GETT9: PUSHJ P,GETOCT 001224' 306000 000076 CAIN 0,">" ;TERMINATE ON RIGHT BRKT ONLY 001225' 303600 000777 CAILE T7,777 ;PR. IN RANGE? 001226' 254000 002107' JRST ERR2A 001227' 241600 777767 ROT T7,-11 001230' 522600 004042' HLLOM T7,PR ;RHS=1'S MEANS <> SEEN (PR MAY BE 0) 001231' 254000 001175' JRST GETCOM 001232' 200440 003734' GETUPJ: MOVE T5,UPROJ 001233' 516440 004043' HRLZM T5,PP 001234' 254000 001217' JRST GETT11 001235' 334440 004675' GETOCT: SKIPA T5,[EXP 10] 001236' 201440 000012 GETDEC: MOVEI T5,12 001237' 201600 000000 GETNUM: MOVEI T7,0 ;TO PICK UP P-P NUMBER 001240' 260240 001404' GETN1: PUSHJ P,GETBUF ;AND PROTECTION 001241' 306000 000040 CAIN 0," " ;IGNORE SPACES 001242' 254000 001240' JRST GETN1 001243' 301000 000060 CAIL 0,"0" 001244' 301011 000060 CAIL 0,"0"(T5) 001245' 263240 000000 POPJ P, ;GOT A NON-NUMERIC 001246' 220600 000011 IMUL T7,T5 ; MULTIPLY BY RADIX 001247' 275000 000060 SUBI 0,"0" 001250' 270600 000000 ADD T7,0 ; ADD DIGIT 001251' 254000 001240' JRST GETN1 PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 31 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 001252' 260240 001320' GETT3: PUSHJ P,GETT5 ;PROCESS SWITCH CHARACTER 001253' 306000 000051 CAIN 0,")" ;CLOSING PAREN? 001254' 254000 001175' JRST GETCOM ;YES 001255' 306000 000115 CAIN 0,"M" ;MTA FLAG? 001256' 660300 200000 TRO FLAG, MTFLG ;SET MTA, LOOK FOR MULTI CHAR. SWITCH 001257' 302000 000043 CAIE 0,"#" ;MTA# 001260' 254000 001252' JRST GETT3 ;NO 001261' 606300 200000 TRNN FLAG,MTFLG ;ONLY LOOK AFTER # IF MTFLG IS ON. 001262' 254000 002040' JRST ERR6A ;I.E. IF MT SWITCH IS IN PROGRESS. 001263' 260240 001305' PUSHJ P,GETNUD ;GET A NUMBER 001264' 302000 000104 CAIE 0,"D" ;TERMINATED BY D? 001265' 306000 000101 CAIN 0,"A" ;TERMINATED BY A? 001266' 254000 001276' JRST GETT3A ;YES, MARK AB UPPER 001267' 302000 000120 CAIE 0,"P" ;ONLY A,D,P AND B CAN BE 001270' 306000 000102 CAIN 0,"B" ;PRECEDED BY #. 001271' 254000 001273' SKIP 1 001272' 254000 002040' JRST ERR6A 001273' 542600 004136' HRRM T7,AB ;NO. FILES/RECS TO ADVANCE ;GOES IN AB (RH) 001274' 260240 001321' GETT3B: PUSHJ P,GETT5A 001275' 254000 001252' JRST GETT3 001276' 506600 004136' GETT3A: HRLM T7,AB ;NO. FILES/RECS TO BACK SPACE 001277' 254000 001274' JRST GETT3B ;GOES IN AB (LH) 001300' 260240 001320' GETT6: PUSHJ P,GETT5 ;PROCESS ONE SWITCH CHAR 001301' 302000 000115 CAIE 0,"M" 001302' 306000 000051 CAIN 0,")" ;THESE ARE ILLEGAL 1-SWITCH CHARS. 001303' 254000 002040' JRST ERR6A 001304' 254000 001175' JRST GETCOM 001305' 201600 000000 GETNUD: MOVEI T7,0 ;GET A DECIMAL NUMBER 001306' 260240 001404' GETN2: PUSHJ P,GETBUF ;GET CHAR FROM COMMAND STRING 001307' 306000 000040 CAIN 0,SPACE ;SPACE? 001310' 254000 001306' JRST GETN2 ;YES, IGNORE 001311' 301000 000060 CAIL 0,"0" ;NUMBER? 001312' 303000 000071 CAILE 0,"9" 001313' 263240 000000 POPJ P, ;NO 001314' 221600 000012 IMULI T7,^D10 ;T7*10 001315' 405000 000017 ANDI 0,17 ;ADD ON LAST DIGIT 001316' 270600 000000 ADD T7,0 ;+ LOW 4 BITS 001317' 254000 001306' JRST GETN2 PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 32 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 ;GET NEXT COMMAND STRING CHAR(SWITCH),CHECK WITH TABLE,SET FLAGS 001320' 260240 001404' GETT5: PUSHJ P,GETBUF ;GET CHAR FROM COMMAND STRING 001321' 200100 004676' GETT5A: MOVE T2,[XWD 350700,DISPTB] ;SET DISPTB NEXT SEARCH 001322' 201500 004056' MOVEI T6,MTAREQ ;SET MTAREQ NEXT SEARCH 001323' 606300 200000 TRNN FLAG,MTFLG ;SET UP TABLE TO SEARCH AND FLAG TO SET. 001324' 541100 001436' HRRI T2,DISPTA ;PUT IN BYTE POINTER, NOT MTA REQUEST ;SET TO LOOK AT NON-MTA LETTERS FIRST 001325' 606300 200000 TRNN FLAG,MTFLG ;IF MTFLG SET, START AT DISPTB AND STORE RESULT IN 001326' 201500 000013 MOVEI T6,AUXFLG ;MTAREQ, ELSE START AT DISPTA AND STORE RESULT IN ;AUXFLG OR FLAG ;GET FIRST CHAR DISPTA OR DISPTB, LOOK FOR MATCH, SET SWITCH FLAGS. 001327' 135140 000002 GETT7: LDB T3,T2 ;COMPARE WITH LEFT 7 BITS OF 001330' 326140 001335' JUMPN T3,GETT8 ;TABLE ENTRIES 001331' 620300 200000 TRZ FLAG, MTFLG ;SEARCHED TABLE 1 (DISPTB) DROP MTA FLAG 001332' 201500 000013 MOVEI T6,AUXFLG ;SET AUXFLG NEXT TABLE SEARCH 001333' 603540 000020 TLNE AUXFLG,NOMORE ;AFTER FIRST INPUT DEVICE ONLY ACCEPT MTA FLAGS 001334' 263240 000000 POPJ P, 001335' 306140 000001 GETT8: CAIN T3,1 ;END OF DISPTA 1ST HALF? 001336' 201500 000006 MOVEI T6,FLAG ;YES, SEARCH DISPTA 2ND HALF FROM NOW ON 001337' 306140 000002 CAIN T3,2 ;END OF DISPTA 2ND HALF? 001340' 254000 002040' JRST ERR6A ;SEARCHED TABLE 3, ERROR EXIT 001341' 312140 000000 CAME T3,0 ;MATCHING CHARACTER? 001342' 344100 001327' AOJA T2,GETT7 ;NO, GET NEXT SWITCH IN TABLE. 001343' 200442 000000 MOVE T5,(T2) ;YES, SET FLAG OR AUXFLG OR MTAREQ 001344' 436452 000000 ORM T5,(T6) ;FLAG OR AUXFLG 001345' 602300 200000 TRNE FLAG,MTFLG 001346' 436440 004133' ORM T5,AUX ;MTA REQUESTS SAVED IN AUX IFE RIMSW,< 001347' 603300 000002 TLNE FLAG,RIMFLG 001350' 254000 004652' JRST RIMTB ;NO RIM IF RIMSW=0 > ;PRINT ERROR MESSAGE 001351' 263240 000000 POPJ P, ;EXIT ON MATCHING CHAR PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 33 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 ;ROUTINE TO GET ONE TTY OR CCL COMMAND STRING CHAR INTO AC 0 001352' GETTA: 001352' 373000 003755' SOSLE TFI+2 ;SUBR TO GET ONE TTY CHAR IN AC 0 001353' 254000 001371' JRST GETT2 ;BUFFER NOT EMPTY 001354' 200000 003753' MOVE 0,TFI ;BUFFER EMPTY, SAVE 001355' 200440 003756' MOVE T5,TFO ;CURRENT BUFFER LOCS 001356' 260240 001410' PUSHJ P,INICON ;BUFFER EMPTY SO RE-ATTACH TTY 001357' 562000 003753' HRROM 0,TFI ;RESTORE OLD BUFFER LOCS 001360' 562440 003756' HRROM T5,TFO ;USE PREVIOUSLY ASSIGNED I/O BUF. FOR TTY 001361' 200440 004131' MOVE T5,COMCNT ;DONT TYPE CR,LF 001362' 307440 000105 CAIG T5,^D69 ;FOR SHORT LINE 001363' 254000 001365' JRST GETTIN 001364' 260240 002735' PUSHJ P,INFO2 ;TYPE CR,LF 001365' 066040 000000 GETTIN: INPUT CON, ;GET THE NEXT LINE 001366' 200440 003755' MOVE T5,TFI+2 ;SAVE CHAR COUNT 001367' 071040 000000 RELEAS CON, ;LET GO OF TTY FOR USE AS IN-OUT DEVICE 001370' 202440 003755' MOVEM T5,TFI+2 ;RESTORE CHAR COUNT LOST DURING RELEASE 001371' 134000 003754' GETT2: ILDB 0,TFI+1 ;FETCH CHAR 001372' 302000 000175 GETT4: CAIE 0,ALT175 ;OLD ALTMODE? 001373' 306000 000176 CAIN 0,ALT176 001374' 201000 000033 MOVEI 0,ALTMOD ;YES,MAKE NEW ALTMOD 001375' 322000 001352' JUMPE 0,GETTA ;IGNORE NULL CHARS 001376' 301000 000140 CAIL 0,140 ;LOWER CASE? 001377' 620000 000040 TRZ 0,40 ;YES MAKE UPPER CASE? 001400' 302000 000021 CAIE 0,XON ;IGNORE XON,XOFF ONLY FOR 001401' 306000 000023 CAIN 0,XOFF ;TTY SERVICE TO SIGNAL TTY 001402' 254000 001352' JRST GETTA ;PTR READ IN MODE 001403' 263240 000000 POPJ P, ;ROUTINE TO GET ONE TTY CHAR FROM COMBUF INTO AC0 001404' 375000 004131' GETBUF: SOSGE COMCNT ;ANY CHARS LEFT? 001405' 254000 002045' JRST ERR6B ;NO, COMMAND ERROR 001406' 134000 004132' ILDB 0,COMPTS ;PICK UP CHAR FROM COMBUF 001407' 263240 000000 POPJ P, ;ROUTINE TO INITIALIZE THE TTY, ASCII LINE MODE 001410' 041040 000001 INICON: INIT CON,1 ;SUBR TO INITIALIZE THE TTY 001411' 646471 000000 SIXBIT /TTY/ 001412' 003756' 003753' XWD TFO,TFI ;TTY OUT/IN BUFFER HEADERS 001413' 047000 000012 EXIT ;IF TTY NOT AVAILABLE,FATAL.JOB DET? 001414' 263240 000000 POPJ P, PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 34 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 ;GET 7 BIT ASCII CHARACTER - INPUT FROM CCL COMMAND FILE 001415' 476000 004057' GETEN2: SETOM COMEOF ;INDICATE END OF FILE 001416' 201000 000032 MOVEI 0,CZ ;NEEDED TO TERM CCL CS SCAN 001417' 263240 000000 POPJ P, PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 35 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 ;TABLE OF RECOGNIZED COMMAND LETTERS AND CORRESPONDING FLAG BITS DEFINE DISP (A,B) < XWD <"A">*4000,B> ;MAGTAPE SWITCHES AND FLAG BITS. TABLE 1 (MTAREQ) 001420' 404000 000001 DISPTB: DISP A,MTAFLG 001421' 410000 000002 DISP B,MTBFLG 001422' 520000 000004 DISP T,MTTFLG 001423' 534000 000010 DISP W,MTWFLG 001424' 340000 000400 DISP 8,MT8FLG 001425' 324000 001000 DISP 5,MT5FLG 001426' 310000 002000 DISP 2,MT2FLG 001427' 424000 004000 DISP E,MTEFLG 001430' 524000 000040 DISP U,MTUFLG 001431' 430000 000020 DISP F,MTFFLG 001432' 420000 000100 DISP D,MTDFLG 001433' 500000 000200 DISP P,MTPFLG 001434' 214000 000000 DISP #,0 001435' 000000 000000 OCT 000000000000 ;1ST BYTE 0=END OF DISPTB ;------------------------ ;COMMAND STRING LETTERS AND FLAG BITS. TABLE 2 (AUXFLG) 001436' 504001 000000 DISPTA: XWD <"Q">*4000+QFLG,0 001437' 424040 000000 XWD <"E">*4000+CDRFLG,0 001440' 430000 000020 DISP F,FFLG 001441' 004000 000000 OCT 004000000000 ;1ST BYTE 1=END OF DISPTA 1ST HALF ;------------------------ ;COMMAND STRING LETTERS AND FLAG BITS. TABLE 3 (FLAG) 001442' 404000 000001 DISP A,LINE 001443' 410000 000002 DISP B,BMOD IFN,K,< DISP C,TBMOD DISP D,DFLG DISP L,LFLG> 001444' 464000 000000 DISP M,0 001445' 244000 000000 DISP ),0 001446' 470000 000040 DISP N,NSMOD 001447' 474000 400640 DISP O,SQMOD+NSMOD+STS+OSFLG 001450' 500014 000000 XWD <"P">*4000+PFLG+PCONV,0 IFN,K< DISP R,RFLG> 001451' 514000 000640 DISP S,SQMOD+NSMOD+STS IFN,K< DISP T,SPMOD XWD <"V">*4000+CHKFLG,LINE DISP X,XFLG> 001452' 550000 004000 DISP Z,ZFLG 001453' 524001 000000 XWD <"U">*4000+OFLG,0 001454' 544402 000000 XWD <"Y">*4000+IBFLG+RIMFLG,0 001455' 451000 000000 XWD <"J">*4000+JFLG,0 001456' 444100 000000 XWD <"I">*4000+IFLG,0 001457' 440400 000000 XWD <"H">*4000+IBFLG,0 001460' 434200 000000 XWD <"G">*4000+GFLG,0 001461' 010000 000000 OCT 010000000000 ;FIRST BYTE 2=END OF DISPTA 2ND HALF PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 36 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 ;SUBR TO GET NEXT CHAR INTO AC CHR ;NO SKIP RETURN IS END OF FILE, SINGLE SKIP IS NORMAL RETURN 001462' 607300 000020 GET: TLNN FLAG,NEWFIL ;NEW FILE? 001463' 627300 000030 TLZN FLAG,PCONV+NEWFIL ;NO,CONVERT THIS CHAR? 001464' 254000 001506' JRST GETPC1 ;YES 001465' 135200 003743' LDB CHR,IBF+1 ;GET CHAR 001466' 306200 000040 CAIN CHR," " ;SPACE? 001467' 254000 001544' JRST GETPC2 ;YES, CONVERT TO LINE FEED 001470' 307200 000063 CAIG CHR,"3" ;IS THE CHAR A PROPER FORMAT CONTROL CHAR? 001471' 305200 000052 CAIGE CHR,"*" 001472' 254000 001542' JRST GETPC3 ;NO, SO OUTPUT LINE FEED FOLLOWED BY BAD CHAR 001473' 307200 000056 CAIG CHR,"." ;USE LEFT HALF OF TABLE? 001474' 334204 001474' SKIPA CHR,PCHTAB-<"*">(CHR) 001475' 204204 001467' MOVS CHR,PCHTAB-<"/">(CHR) 001476' 137200 003743' GETPC4: DPB CHR,IBF+1 ;CLOBBER OLD CHAR, USUALLY BECOMES NULL 001477' 242200 777771 LSH CHR,-7 ;BUT OTHERWISE BECOMES ANOTHER FORMAT CHAR 001500' 405200 000377 ANDI CHR,377 ;EXTRACT THE CHAR TO BE OUTPUT 001501' 622200 000200 TRZE CHR,200 ;=1 FOR GENERATING MULTIPLE LINE FEEDS 001502' 661300 000010 TLO FLAG,PCONV ;CONTINUE TO CONVERT 001503' 326200 001707' JUMPN CHR,CPOPJ1;OUTPUT THE GENERATED CHAR UNLESS NULL 001504' 262245 000000 POP P,(P) ;IGNORE NULL CHARS 001505' 254000 000374' JRST PSCAN4 ;DUMP THE LINE BUFFER 001506' 606300 010000 GETPC1: TRNN FLAG,SUS ;SUPPLYING SEQ. NUM. NOW? 001507' 254000 001532' JRST GET2 ;NO 001510' 134200 004036' ILDB CHR,PTRPT ;YES, SO GET CHAR OF SEQ NUM 001511' 326200 001707' JUMPN CHR,CPOPJ1;0 MARKS LAST CHAR 001512' 135040 003743' LDB T1,IBF+1 ;GET FIRST CHAR OF THIS LINE 001513' 201200 000015 MOVEI CHR,15 001514' 307040 000015 CAIG T1,15 ;PREPARE TO OUTPUT A CR,LF 001515' 305040 000012 CAIGE T1,12 ;IS FIRST CHAR OF LINE AN END OF LINE CHAR? 001516' 201200 000011 MOVEI CHR,TAB ;NO, SO OUTPUT A TAB 001517' 620300 010000 TRZ FLAG,SUS ;TURN OFF SUS SUPPLY 001520' 254000 001724' JRST GETA5 001521' 350000 003743' GET5: AOS IBF+1 ;HERE IF A SEQ NUM FOUND IN INBUFFER 001522' 275040 000005 SUBI T1,5 ;IGNORE SEQ NUM, TAB AND DECREMENT CHAR COUNT 001523' 202040 003744' MOVEM T1,IBF+2 001524' 602300 000040 TRNE FLAG,NSMOD ;REMOVE SEQ NUMS MODE? 001525' 254000 001532' JRST GET2 ;YES, SO GET NEXT CHAR 001526' 202100 004014' MOVEM T2,SQNUM ;SEQ NUM FROM BUFFER BECOMES NEW SEQ NUM 001527' 260240 000707' PUSHJ P,OUTLBF ;DUMP THE LINE BUFFER (IF REQUIRED) 001530' 666300 100400 TRON FLAG,STS+SNI ;TURN ON START OF LINE ;AND NO-INCREMENT SEQ NUM FLAG 001531' 260240 000553' PUSHJ P,CLRBUF ;CLEAR LBUF IF IN THE MIDDLE OF A LINE 001532' 622300 040000 GET2: TRZE FLAG,ESQ ;REPROCESS LAST CHAR? 001533' 254000 001557' JRST GET1 ;YES 001534' 371040 003744' SOSL T1,IBF+2 ;CHARS REMAINING IN INBUFFER? 001535' 254000 001553' JRST GET4 ;YES 001536' 260240 001616' PUSHJ P,INP ;NO, SO REFILL AND CHECK ERR BITS 001537' 602400 020000 TRNE IOS,EOFBIT ;END OF FILE? IOS HAS STATUS BITS 001540' 263240 000000 POPJ P, ;YES 001541' 254000 001532' JRST GET2 ;NO, SO PROCESS INBUFFER PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 36-1 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 001542' 660300 040000 GETPC3: TRO FLAG,ESQ ;REPROCESS BAD CHAR 001543' 664200 002400 TROA CHR,12*200 ;PRECEED BAD CHAR WITH LINE FEED 001544' 201200 002400 GETPC2: MOVEI CHR,12*200;CHANGE SPACE TO LINE FEED 001545' 254000 001476' JRST GETPC4 001546' 005000 004656 PCHTAB: XWD 24*200,23*200+"." ;/ * 001547' 042440 037600 XWD 212*200+" ",177*200 ;0 + VJC 4/16/49 001550' 003000 004200 XWD 14*200,21*200 ;1 , 001551' 004000 042460 XWD 20*200,212*200+"0" ;2 - 001552' 002600 004400 XWD 13*200,22*200 ;3 . 001553' 134200 003743' GET4: ILDB CHR,IBF+1 ;FETCH CHAR FROM INBUFFER 001554' 616300 004672' TDNN FLAG,[XWD IFLG+IBFLG,BMOD] ;BIN, IB, I OR SBIN MODE? 001555' 603540 000004 TLNE AUXFLG,SBIN 001556' 254000 001707' JRST CPOPJ1 ;YES, SO NO PROCESSING REQUIRED 001557' 135200 003743' GET1: LDB CHR,IBF+1 ;AFTER SEQ NUM, HERE FOR 1ST CHAR 001560' 322200 001532' JUMPE CHR,GET2 ;IGNORE NULL CHARS 001561' 306200 000012 CAIN CHR,LF ;IGNORE LINE FEED IN FORTRAN OUTPUT 001562' 607300 000004 TLNN FLAG,PFLG ;/P SWITCH IN EFFECT? 001563' 254000 001566' JRST GET1A ;NO 001564' 661300 000010 TLO FLAG,PCONV ;CONVERT THE NEXT LIVE CHAR 001565' 254000 001532' JRST GET2 ;GET NEXT CHAR 001566' 200120 003743' GET1A: MOVE T2,@IBF+1 ;BIT 35 OF BUFFER SET? 001567' 622100 000001 TRZE T2,1 001570' 254000 001521' JRST GET5 ;YES, THIS IS A SEQ NUM 001571' 622300 000400 TRZE FLAG,STS ;START SEQ (NEW LINE) FLAG ON? 001572' 606300 100200 TRNN FLAG,SQMOD+SNI ;YES, SEQ MODE OR SEQ COPY? 001573' 254000 001666' JRST GET7 ;NO, SO PROCESS CHAR 001574' 200100 004014' MOVE T2,SQNUM ;NO, SO ADD 10. TO SEQ NUM 001575' 200040 003724' MOVE T1,K1 001576' 602300 400000 TRNE FLAG,OSFLG ;TEST FOR INCR. BY ONE 001577' 200040 003726' MOVE T1,K4 001600' 270100 000001 ADD T2,T1 ;ASCII INCREMENT 001601' 404100 003725' AND T2,K3 ;MASK SIGNIFICANT DIGITS 001602' 200040 000002 MOVE T1,T2 001603' 404040 003721' AND T1,ZRO ;MASK CARRY BITS 001604' 240040 777775 ASH T1,-3 001605' 274100 000001 SUB T2,T1 ;ADJUST CARRIES 001606' 434100 003721' IOR T2,ZRO 001607' 626300 100000 TRZN FLAG,SNI ;NON-INCREMENT SEQ NUM FLAG ON? 001610' 202100 004014' MOVEM T2,SQNUM ;NO, SO SAVE THE RESULT 001611' 660300 050001 TRO FLAG,LINE+SUS+ESQ ;TURN ON SUPPLY SEQ, REPROCESS ;LAST CHAR, AND LINE-BY-LINE FLAGS 001612' 350000 004174' AOS LBUF ;SET BIT 35 IN LBUF TO MARK SEQ NUM 001613' 200040 004677' MOVE T1,[POINT 7,SQNUM] 001614' 202040 004036' MOVEM T1,PTRPT ;INITIALIZE SEQ NUM PICK-UP POINTER 001615' 254000 001462' JRST GET ;GO OUTPUT FIRST CHAR OF SEQ NUM PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 37 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 ;ROUTINE TO INPUT INPUT FILE 001616' 056140 000000 INP: IN IN, ;INPUT DATA 001617' 254000 001710' JRST CPOPJZ ;NO ERRORS ,BUT CLEAR IOS JUST IN CASE 001620' 062140 000010 INERR: GETSTS IN,IOS ;SUBR TO CHECK INPUT ERR BITS 001621' 606540 000400 TRNN AUXFLG,MTAIN ;MTA INPUT? 001622' 602400 740000 TRNE IOS,740000 ;ANY ERROR BITS SET? 001623' 606400 742000 TRNN IOS,740000+EOTBIT ;EOT FOR MTA? 001624' 263240 000000 POPJ P, ;NO 001625' 260240 001135' PUSHJ P,COMERR ;SAVE AC'S RELEASE TTY 001626' 265440 000542' JSP T5,INICN2 ;YES SO PRINT OUT COMPLETE FILE DESCRIPTOR 001627' 260240 001652' PUSHJ P,QUEST 001630' 265040 002166' ERRPN2 001631' 447356 072750 001632' 203114 573322 001633' 617124 000000 001634' 260240 002201' PUSHJ P,P6BIT 001635' 000000 004637' DEVICE 001636' 336000 004052' SKIPN ZRF ;IS THERE A FILE NAME 001637' 254000 001643' JRST .+4 ;NO,SO DON'T PRINT 001640' 265040 002166' ERRPN2 001641' 351014 664730 001642' 625000 000000 001643' 201140 004052' MOVEI T3,ZRF ;LOC OF INPUT FILE NAME TO T3 001644' 260240 001146' PUSHJ P,FN.EX ;DEPOSIT FILE NAME, EXT INTO TTY OUT BUFFER 001645' 200100 000013 MOVE T2,AUXFLG 001646' 405100 060500 ANDI T2,CDRIN+DTAIN+DSKIN+MTAIN 001647' 260240 001020' PUSHJ P,IOERR ;GO PRINT ERROR DESCRIPTOR 001650' 060150 000000 SETSTS IN,(IOS) 001651' 263240 000000 POPJ P, ;ROUTINE TO TEST IF BLOCK TOO LARGE, OR WRITE LOCKED 001652' 201200 000077 QUEST: MOVEI CHR,"?" ;DEPOSIT "?" IN ERROR MSG 001653' 607300 000200 TLNN FLAG,GFLG ;ONLY IF /G NOT ON 001654' 254000 002175' JRST PUTCON ;/G NOT ON, PRINT ?(FATAL) BEFORE ERR MSG 001655' 606400 040000 TRNN IOS,BIGBLK ;BLOCK NO. TOO LARGE? 001656' 254000 001662' JRST QUEST2 ;NO 001657' 606540 024000 TRNN AUXFLG,DTAIN+DTAOUT ;YES 001660' 263240 000000 POPJ P, ;BLOCK TOO LARGE 001661' 254000 002175' JRST PUTCON ;DEPOSIT "?" FATAL EVEN IF /G ON 001662' 602400 400000 QUEST2: TRNE IOS,WRTLOK ;WRITE LOCKED? 001663' 606540 034600 TRNN AUXFLG,DTAIN+DTAOUT+MTAIN+MTAOUT+DSKOUT 001664' 263240 000000 POPJ P, ;NO 001665' 254000 002175' JRST PUTCON ;DEPOSIT "?" FATAL EVEN IF /G ON PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 38 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 001666' 603300 000010 GET7: TLNE FLAG,PCONV ;CONVERTING FORTRAN CARRAIGE CONTROL CHAR? 001667' 254000 001463' JRST GET+1 ;YES, GO DO IT 001670' 350040 004035' AOS T1,CDRCNT 001671' 603540 000040 TLNE AUXFLG,CDRFLG 001672' 254000 001712' JRST GET7B ;CARD READER INPUT 001673' 306200 000040 GET7C: CAIN CHR,SPACE ;SPACE? 001674' 254000 001727' JRST GETA2 ;YES 001675' 306200 000015 CAIN CHR,CR ;CAR. RET.? 001676' 254000 001717' JRST GETA3 ;YES 001677' 620300 020000 TRZ FLAG,SPOK ;CHAR NOT A SPACE STOP COUNTING CONSEC. SPACES 001700' 306200 000011 CAIN CHR,TAB ;TAB? 001701' 254000 001724' JRST GETA5 ;KEEP TRACK OF TAB STOPS 001702' 307200 000137 CAIG CHR,137 001703' 305200 000040 CAIGE CHR,SPACE ;NON-SPACING CHARACTER? 001704' 254000 001707' JRST CPOPJ1 ;YES, SO RETURN IMMEDIATELY 001705' 377000 004027' SOSG TABCT ;COUNT DOWN THE TAB STOP COUNTER 001706' 254000 001724' JRST GETA5 ;RESET THE COUNTER IF TAB STOP IS PASSED 001707' 354005 000000 CPOPJ1: AOSA (P) ;SKIP RETURN 001710' 400400 000000 CPOPJZ: SETZ IOS, ;CLEAR IOS JUST IN CASE 001711' 263240 000000 CPOPJ: POPJ P, 001712' 301040 000111 GET7B: CAIL T1,^D73 ;LT COL 73? 001713' 303040 000120 CAILE T1,^D80 ;NO, LE COL 80? 001714' 254000 001673' JRST GET7C ;CANT BE A CARD SEQUENCE NUMBER 001715' 201200 000040 MOVEI CHR,SPACE ;REPLACE CARD SEQUENCE NOS. BY SPACE 001716' 254000 001673' JRST GET7C 001717' 622300 020000 GETA3: TRZE FLAG,SPOK ;CAR. RET. SEEN, ANY TRAILING SPACES? 001720' 606300 001004 TRNN FLAG,SPMOD+TBMOD ;YES, ARE WE FLUSHING TRAILING SPACES 001721' 254000 001724' JRST GETA5 ;NO, RESET TAB COUNTER ONLY 001722' 200000 004023' MOVE 0,SVPTR1 001723' 202000 004020' MOVEM 0,OPTR ;CLOBBER THE OUTPUT POINTER TO LBUF 001724' 201000 000010 GETA5: MOVEI 0,TABSP 001725' 202000 004027' MOVEM 0,TABCT ;RESET THE TAB COUNTER 001726' 254000 001707' JRST CPOPJ1 PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 39 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 001727' 662300 020000 GETA2: TROE FLAG,SPOK ;SPACE WAS SEEN, IS THIS ONE OF A SEQUENCE? 001730' 254000 001735' JRST GETA7 ;YES 001731' 200000 004020' MOVE 0,OPTR ;THIS IS THE FIRST SPACE SEEN, SAVE LBUF ;POINTER IN CASE THIS SPACE MUST BE FLUSHED 001732' 202000 004023' MOVEM 0,SVPTR1 ;THIS POINTER FOR FLUSHING FINAL SPACES 001733' 202000 004024' MOVEM 0,SVPTR2 ;THIS POINTER FOR CHANGING MULT. SPACES TO TABS 001734' 402000 004030' SETZM SPCT ;INITIALIZE THE SPACE COUNTER 001735' 350040 004030' GETA7: AOS T1,SPCT 001736' 373000 004027' SOSLE TABCT ;ARE WE AT THE NEXT TAB STOP? 001737' 254000 001707' JRST CPOPJ1 ;NO 001740' 301040 000002 CAIL T1,2 ;DONT BOTHER CHANGING ONE SPACE TO A TAB 001741' 606300 000004 TRNN FLAG,TBMOD ;TAB GENERATING MODE? 001742' 254000 001747' JRST GETA5A ;NO, GO RESET TAB COUNTER 001743' 200000 004024' MOVE 0,SVPTR2 001744' 202000 004020' MOVEM 0,OPTR ;BACK UP THE OUTPUT POINTER OVER THE LAST ;GROUP OF SPACES 001745' 201200 000011 MOVEI CHR,TAB ;OUTPUT A TAB 001746' 402000 004030' SETZM SPCT ;RESET THE SPACE COUNTER 001747' 133000 004024' GETA5A: IBP SVPTR2 ;UPDATE THE CHANGE-SPACES-TO-TABS POINTER 001750' 254000 001724' JRST GETA5 ;RESET THE TAB COUNTER PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 40 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 ;ERROR ROUTINES IFE WCH,> 001751' 201340 002053' ERR10: MOVEI T4,E10A 001752' 336000 004052' E10B: SKIPN ZRF 001753' 254000 001757' SKIP 3 001754' 265040 002155' ERRPNT 001755' 376155 166312 001756' 200000 000000 001757' 201140 004052' MOVEI T3,ZRF 001760' 260240 001146' PUSHJ P,FN.EX 001761' 254007 000000 JRST (T4) IFE WCH, ERR382: ERRPN2 ERR5B: ERRPN2 >> 001762' 265040 002155' ERR9: ERRPNT 001763' 374000 000000 001764' 201140 004044' MOVEI T3,DTON 001765' 260240 001146' PUSHJ P,FN.EX 001766' 254000 002033' JRST ERR4B PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 41 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 001767' 334100 004634' ERR1: SKIPA T2,ODEV ;OUTPUT UNAVAILABLE 001770' 200100 004637' ERR1A: MOVE T2,DEVICE ;INPUT UNAVAILABLE 001771' 265040 002155' ERR1B: ERRPNT 001772' 376114 573322 001773' 617124 000000 001774' 260240 002201' PUSHJ P,P6BIT 001775' 000000 000002 T2 001776' 265040 002166' ERRPN2 001777' 203355 772100 002000' 607554 164730 002001' 607055 462502 002002' 000000 000000 002003' ERR3: IFN FTDSK, 002003' 260240 002005' PUSHJ P,ERR3A 002004' 254000 001107' JRST IOERRN ;EXIT 002005' 661540 000100 ERR3A: TLO AUXFLG,INFOFL ;SIGNAL RETURN TO ERR3AA 002006' 254000 002711' JRST INFO 002007' 265040 002166' ERR3AA: ERRPN2 002010' 375011 667500 002011' 633235 462500 002012' 673035 562710 002013' 200000 000000 002014' 201140 004040' MOVEI T3,FILNAM 002015' 260240 001146' PUSHJ P,FN.EX ;PRINT NAME OF FILE THAT CANNOT BE FOUND 002016' 260240 002735' PUSHJ P,INFO2 ;OUTPUT MESS. WITH CR-LF 002017' 606540 101000 TRNN AUXFLG,TTYIN!TTYOUT ;WAS TTY IN USE? 002020' 263240 000000 POPJ P, ;NO 002021' 602540 001000 TRNE AUXFLG,TTYIN ;INPUT DEVICE? 002022' 254000 000426' JRST ININIT ;YES ,RE-INIT 002023' 254000 000223' JRST OMODE ;MUST BE OUTPUT 002024' 336000 004044' ERR4: SKIPN DTON 002025' 254000 002033' JRST ERR4A IFN FTDSK, 002026' 265040 002155' ERRPNT 002027' 375010 464744 002030' 627076 467744 002031' 745014 672730 002032' 661020 000000 002033' ERR4A: IFN FTDSK, 002033' 265040 002155' ERR4B: ERRPNT 002034' 376235 466312 002035' 637035 420314 002036' 647314 520334 002037' 607334 520400 IFN FTDSK,< ERR4C: ERRPNT > PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 41-1 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 002040' ERR6: 002040' 265040 002155' ERR6A: ERRPNT 002041' 376411 150100 002042' 617375 566702 002043' 673104 062744 002044' 713376 220400 002045' 265040 002155' ERR6B: ERRPNT 002046' 376411 150100 002047' 617375 566702 002050' 673104 072336 002051' 675015 467734 002052' 635020 000000 002053' 265040 002166' E10A: ERRPN2 002054' 203315 167312 002055' 203515 767500 002056' 663375 663502 002057' 000000 000000 002060' 265040 002155' ERR5A: ERRPNT 002061' 376515 767500 002062' 667035 674500 002063' 647356 072750 002064' 203114 573322 002065' 617136 320400 ;FILE MANIPULATION COMMANDS TO NON-DIRECTORY DEVICES COME HERE 002066' 265040 002155' ERR5: ERRPNT 002067' 376115 171726 002070' 203376 220210 002071' 426076 460740 002072' 625015 167340 002073' 727504 071312 002074' 707535 171312 002075' 621020 000000 002076' 265040 002155' ERR2: ERRPNT 002077' 376235 661736 002100' 713454 561750 002101' 202416 267724 002102' 627076 426640 002103' 713374 771302 002104' 667334 571100 002105' 673535 561312 002106' 711020 000000 002107' 265040 002155' ERR2A: ERRPNX 002110' 376235 466312 002111' 637035 420340 002112' 713376 462706 002113' 723235 767102 002114' 000000 000000 IFE BLOC0,< 002115' 265040 002155' ERR7A: ERRPNT > 002116' 376110 541750 PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 41-2 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 002117' 607414 520222 002120' 276364 067734 002121' 663624 100000 002122' 265040 002155' ERR8: ERRPNT 002123' 376137 070330 002124' 647075 172100 002125' 677536 470352 002126' 721014 462754 002127' 647074 520344 002130' 627436 564744 002131' 627104 100000 PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 42 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 ;ROUTINE TO CHECK INPUT DEV, SET XXXIN.E.G.DTAIN 002132' 200000 004637' CHECK1: MOVE 0,DEVICE ;INPUT DEVICE NAME TO AC 0 002133' 322000 002152' JUMPE 0,CHECK ;IGNORE IF NO INPUT DEVICE IFN FTDSK, 002134' 047000 000004 DEVCHR ;GET INPUT DEVCHR IFN FTDSK, 002135' 322000 000525' CHECK2: JUMPE 0,DEVER1 ;NON-EX. DEVICE 002136' 607000 000002 TLNN 0,INBIT ;CAN DEVICE DO INPUT? 002137' 254000 002040' JRST ERR6A ;NO, COMMD ERROR 002140' 603000 000200 TLNE 0,PTRBIT ;PAPER TAPE READER? 002141' 660540 200000 TRO AUXFLG,PPTIN;YES 002142' 603000 000004 TLNE 0,DTABIT ;DECTAPE? 002143' 660540 020000 TRO AUXFLG,DTAIN 002144' 603000 000020 TLNE 0,MTABIT ;MAGTAPE? 002145' 660540 000400 TRO AUXFLG, MTAIN 002146' 603000 100000 TLNE CDRBIT ;CARD READER? 002147' 660540 000100 TRO AUXFLG,CDRIN 002150' 603000 000010 TLNE 0,TTYBIT ;TELETYPE? 002151' 660540 001000 TRO AUXFLG,TTYIN 002152' 602740 001000 CHECK: TRNE CALFLG,SSWTCH ;_FLAG STILL ON? 002153' 254000 002040' JRST ERR6A ; YES ,COMMAND ERROR 002154' 263240 000000 POPJ P, ; NO, RETURN PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 43 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 ;SUBR TO PRINT ERROR MESSAGES ;! MARKS THE END OF MESSAGE & SIGNALS GO TO PIP2 ;NULL IS A FLAG TO RETURN TO THE NEXT LOCATION 002155' PRETXT: 002155' 071240 000000 PTEXT: RELEAS DIR, ;RELEASE DIRECTORY DEVICE 002156' 071200 000000 RELEAS TAPE, ;RELEASE MAGTAPE 002157' 071100 000000 RELEAS OUT, ;LET GO OF BOTH OUTPUT AND 002160' 071140 000000 RELEAS IN, ;INPUT DEVICES 002161' 265440 000541' JSP T5,INICN1 ;INITIALIZE THE TTY 002162' 201000 000015 MOVEI 0,CR 002163' 136000 003757' IDPB 0,TFO+1 ;OUTPUT A CR-LF 002164' 201000 000012 MOVEI 0,LF 002165' 136000 003757' IDPB 0,TFO+1 ;FOR BATCH 002166' 505040 440700 PTEXT2: HRLI T1,440700 ;GET SET TO SCAN 7-BIT DATA 002167' 134000 000001 PTEXT1: ILDB 0,T1 ;GET CHAR OF ERR MESSAGE 002170' 322001 000001 JUMPE 0,1(T1) ;RETURN ON ZERO 002171' 306000 000041 CAIN 0,"!" ;!? 002172' 254000 000013' JRST PIP2 ;YES, END OF MESSAGE, APPEND CAR.RET., LF 002173' 136000 003757' IDPB 0,TFO+1 ;DEPOSIT CHAR IN OUTBUFFER 002174' 254000 002167' JRST PTEXT1 ;GET NEXT CHAR ;ROUTINE TO DEPOSIT CHARACTER IN TTY OUT BUFFER 002175' 377000 003760' PUTCON: SOSG TFO+2 ;STORED MORE THAN BUFFER HOLDS? 002176' 067040 000000 OUTPUT CON, ;YES 002177' 136200 003757' IDPB CHR,TFO+1 002200' 263240 000000 POPJ P, ;ROUTINE TO CONVERT ONE WORD OF SIXBIT ;FROM ADDRESS IN LOCATION AFTER CALL AND DEPOSIT INTO TTY OUT BUFFER 002201' 200065 000000 P6BIT: MOVE T1,@(P) ;PICK UP WORD OF 6-BIT 002202' 505040 440600 HRLI T1,440600 ;SET UP POINTER 002203' 134200 000001 P6BIT1: ILDB CHR,T1 002204' 322200 002207' JUMPE CHR,P6BIT2 002205' 271200 000040 ADDI CHR,40 002206' 260240 002175' PUSHJ P,PUTCON ;DEPOSIT IN TTY 002207' 603040 770000 P6BIT2: TLNE T1,770000 ;DONE SIX? 002210' 254000 002203' JRST P6BIT1 ;NO 002211' 254000 001707' JRST CPOPJ1 ;SKIP RETURN PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 44 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 ;ROUTINE TO CLEAR DSK OR DTA DIRECTORY (/Z SWITCH) 002212' 606740 000200 DTCLR: TRNN CALFLG,DVSWTH ;HAS A DEVICE BEEN SEEN? 002213' 254000 002122' JRST ERR8 ;NO,SO DON'T SCREW USER IFN FTDSK, 002214' 606540 004000 TRNN AUXFLG,DTAOUT ;MUST BE DTA 002215' 254000 002066' JRST ERR5 002216' 047100 000013 UTPCLR OUT, ;CLEAR DIRECTORY 002217' 263240 000000 POPJ P, PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 45 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 ;ROUTINE TO SET UP TO COPY EVERYTHING 002220' 260240 000426' PRECOP: PUSHJ P,ININIT ;INIT INPUT FILE 002221' 606540 020000 TRNN AUXFLG,DTAIN ;DECTAPE INPUT 002222' 254000 002225' SKIP 2 ;NO 002223' 260240 003272' PUSHJ P,DTCH2 ;YES, GET DIRECT, SET POINTERS TO DIRECT 002224' 260240 002702' DTCOPY: PUSHJ P,DTADI1 ;START (T5) IFN FTDSK, 002225' 402000 004034' COPY1A: SETZM ZCNT ;CLEAR COUNT FOR DSK ZERO REQUESTS 002226' 201100 000006 MOVEI T2,6 ;FILL 0 CHARS. IN DEST-FILE 002227' 200040 004700' MOVE T1,[POINT 6,DTON] ;NAME WITH X'S. THIS IS 002230' 134000 000001 XSS: ILDB 0,T1 ;THEN THE BASE FOR GENERATED 002231' 326000 002233' JUMPN 0,.+2 ;DESTINATION FILES FROM 002232' 201000 000070 MOVEI 0,"X"-40 ;NON-DIR. DEVICES IN /X 002233' 137000 000001 DPB 0,T1 002234' 367100 002230' SOJG T2,XSS ;DON'T YET KNOW IF ONE ;OF THE INPUT DEV. WILL 002235' 200000 004044' MOVE 0,DTON ;BE NON-DIR 002236' 202000 004021' MOVEM 0,DTONSV 002237' 200000 004045' MOVE 0,DTON+1 002240' 202000 004022' MOVEM 0,DTONSV+1 002241' 260240 002371' COPY1: PUSHJ P,SR2 ;SET INIT. COPYING MODE 002242' 260240 002566' PUSHJ P,LOOK ;GET A FILE TO COPY 002243' 254000 002317' JRST CAL6 ;NO MORE IFN FTDSK 002244' 606540 201500 TRNN AUXFLG,MTAIN+PPTIN+CDRIN+TTYIN ;OK, COPY FILE 002245' 254000 002250' JRST COPY6A ;MUST BE DIRECTORY DEVICE 002246' 260240 002337' PUSHJ P,MTPTCR ;SET UP A DEST. FN. 002247' 254000 002252' JRST COPY6 PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 46 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 002250' 076140 004052' COPY6A: LOOKUP IN,ZRF ;LOOKUP INPUT FILE NAME 002251' 254000 002315' JRST CAL5 ;INPUT FILE FILE PROTECTED 002252' 260240 003353' COPY6: PUSHJ P,FILTYP ;CHECK FOR DMP,SAV,REL,CHN IFN WCH,< TRNN AUXFLG,DTAIN+DTAOUT JRST .+5 HLRZ 0,ZRF+1 CAIE 0,(SIXBIT /DMP/) IFN DISK30, IFE DISK30, JRST COPY1> 002253' 260240 002323' PUSHJ P,COPY3 002254' 200000 004052' COPY6B: MOVE 0,ZRF ;INPUT FILE NAME 002255' 202000 004044' MOVEM 0,DTON ;IS OUTPUT FILE NAME 002256' 510000 004053' HLLZ 0,ZRF+1 ;LIKEWISE EXT 002257' 512000 004045' HLLZM 0,DTON+1 ;THIS CODE OPERATES AS FOLLOWS - FOR E+2, SET = 0 ;TO START (ASSUMING /X) ;DSK TO DSK IF EDIT SWITCHES PUT E+2 = 0 IF NO EDITS TRANSFER ; DATE, TIME, BITS 13-35 ;DSK TO DTA FOR EDITS E+2 = 0, NO EDITS TRANSFER 24-35 FOR ;DATE, FOR"SAV" FILES TRANSLATE NO. 1K BLOCKS ;DTA TO DSK FOR NO EDITS XFER BITS 24-35, ELSE E+2 = 0 ;DTA TO DTA ALWAYS XFER 18-23, (1K BLOCK) NO EDITS XFER 24-35(DATE) 002260' 402000 004046' SETZM DTON+2 ;CLEAR DATE. OUTPUT FILE, DSK/DTA 002261' 135000 003717' LDB 0,DATE ;GET DSK/DTA DATE CREATED 002262' 616300 004701' TDNN FLAG,[XWD PFLG,LINE+TBMOD+NSMOD+SQMOD+SPMOD] 002263' 603540 000040 TLNE AUXFLG,CDRFLG 002264' 254000 002266' JRST COPY6C 002265' 137000 003720' DPB 0,DATED ;DEPOSIT IF NO EDITS IFN FTDSK, 002266' COPY6C: IFE WCH,< 002266' 260240 002412' PUSHJ P,OKBLKS ;SETUP 1K BLOCKS> 002267' 077100 004044' ENTER OUT,DTON ;GOT DATA, CREATE NEW FILE 002270' 254000 002024' JRST ERR4 ;DIRECTORY FULL 002271' 200000 003721' MOVE 0,ZRO ;GET ASCII/00000/AND 002272' 202000 004014' MOVEM 0,SQNUM ;RESET SEQUENCE NO. 002273' 661300 000020 TLO FLAG,NEWFIL ;SET NEW FILE FLAG 002274' 402000 004026' SETZM TOTBRK ;CLEAR PAREN COUNTER 002275' 607540 000044 TLNN AUXFLG,CDRFLG+SBIN ;SPECIAL PROCESSING? 002276' 612300 004702' TDNE FLAG,[XWD PFLG+IFLG+IBFLG,LINE+BMOD+TBMOD+NSMOD+SQMOD+SPMOD] 002277' 254000 000343' JRST PSCAN ;YES, DO IT 002300' 375000 003744' COPY5: SOSGE IBF+2 ;INPUT BUFFER EMPTY? 002301' 254000 002305' JRST COPY4 ;YES 002302' 134200 003743' ILDB CHR,IBF+1 ;GET NEXT WORD AND 002303' 260240 000756' PUSHJ P,PUT ;OUTPUT IT 002304' 254000 002300' JRST COPY5 002305' 260240 002323' COPY4: PUSHJ P,COPY3 ;GET NEXT FULL SOURCE BLOCK PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 46-1 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 002306' 260240 000762' PUSHJ P,OUTP ;OUTPUT PREV. BLOCK-DONT ALTER DATA 002307' 350000 003747' AOS OBF+2 ;MAKE PUT HAPPY BECAUSE OF 002310' 254000 002300' JRST COPY5 ;OUTPUT HERE. 002311' 070140 000000 COPY2A: CLOSE IN, 002312' 070100 000000 CLOSE OUT, IFN FTDSK, 002313' 260240 000764' COPY2B: PUSHJ P,OUTP1 002314' 254000 002241' JRST COPY1 ;GO GET NEXT FILE 002315' 350000 004034' CAL5: AOS ZCNT ;INPUT FILE READ PROT. 002316' 254000 002241' JRST COPY1 ;COUNT READ FAILURES ;NO MORE FILES TO COPY 002317' 621540 000002 CAL6: TLZ AUXFLG,NSPROT IFN FTDSK,< SKIPN ZCNT ;FILES READ PROTECTED ?> 002320' 254000 000411' JRST MAIN1 ;NO IFN FTDSK, 002321' 332000 003744' COPY3B: SKIPE IBF+2 ;EMPTY BLOCK? 002322' 263240 000000 POPJ P, ;NO, RETURN 002323' 260240 001616' COPY3: PUSHJ P,INP ;READ NEXT BLOCK 002324' 622540 002000 TRZE AUXFLG,READ1 002325' 260240 002376' PUSHJ P,TTYZ ;END OF FILE FROM TTY? 002326' 606400 020000 TRNN IOS,EOFBIT ;END OF FILE? IOS HAS STATUS BITS 002327' 254000 002321' JRST COPY3B ;NO. 002330' 262240 000000 POP P,0 ;FIND WHERE CALLED FROM 002331' 553000 000000 HRRZS 0 002332' 602540 201500 TRNE AUXFLG,MTAIN+CDRIN+TTYIN+PPTIN 002333' 302000 002254' CAIE 0,COPY6B ;DID WE COME FROM COPY6B-1 002334' 254000 002311' JRST COPY2A ;NO, EOF NOT FIRST DATA IN FILE 002335' 620740 000037 TRZ CALFLG,ALLCLF ;END OF INFO ON NON-DIR. DEVICE 002336' 254000 002241' JRST COPY1 PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 47 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 ;CREATE DESTINATION FILE NAME. RANGE IS ...001 TO ...999 002337' 350040 004051' MTPTCR: AOS T1,NO. 002340' 303040 001747 CAILE T1,^D999 002341' 254000 002350' JRST MPC2 002342' 260240 002362' PUSHJ P,MTPTC1 002343' 200000 004021' MOVE 0,DTONSV ;FILNAM=DTON IS ONLY WAY TO IDENTIFY 002344' 202000 004052' MOVEM 0,ZRF ;INPUT FILE 002345' 200000 004022' MOVE 0,DTONSV+1 002346' 202000 004053' MOVEM 0,ZRF+1 002347' 263240 000000 POPJ P, 002350' 265040 002155' MPC2: ERRPNT 002351' 376514 571332 002352' 647354 172312 002353' 201373 026100 002354' 667037 027100 002355' 677144 034562 002356' 345014 664730 002357' 627464 070344 002360' 677074 571746 002361' 627104 100000 002362' 201641 001750 MTPTC1: MOVEI DOUT,^D1000(T1) 002363' 200040 004703' MOVE T1,[POINT 6,DTONSV,17] 002364' 265100 003235' JSP T2,OUTDC1 002365' 344100 001711' AOJA T2,CPOPJ 002366' 275200 000040 SUBI CHR,40 002367' 136200 000001 IDPB CHR,T1 002370' 263240 000000 POPJ P, ;ROUTINE TO RESTORE BYTE POINTERS TO INITED MODE ;FOR INPUT AND OUTPUT DEVICES 002371' 200000 003740' SR2: MOVE 0,SVIBF 002372' 502000 003743' HLLM 0,IBF+1 002373' 200000 003741' MOVE 0,SVOBF 002374' 502000 003746' HLLM 0,OBF+1 002375' 263240 000000 POPJ P, ;ROUTINE TO SEE IF ^Z FIRST CHAR ON TTY 002376' 606540 001000 TTYZ: TRNN AUXFLG,TTYIN ;SEE IF FIRST CHAR. IS ^Z 002377' 263240 000000 POPJ P, ;NOT TTY INPUT 002400' 550040 003743' HRRZ T1,IBF+1 ;ON TTY 002401' 554001 000001 HLRZ 0,1(T1) ;GET FIRST CHARACTER 002402' 620000 003777 TRZ 0,3777 ;CLEAR ANY OTHER CHAR. 002403' 306000 150000 CAIN 0,(B6) ;IS IT ^Z? 002404' 664400 020000 TROA IOS,EOFBIT ;YES,SET END OF FILE 002405' 302000 104000 CAIE 0,(B6) ;IS IT XON "^Q" 002406' 263240 000000 POPJ P, ;NO 002407' 205000 774000 MOVSI 0,(B6) ;A RUBOUT 002410' 436001 000001 IORM 1(T1) ;CLEAR "^Q" FROM BUFFER 002411' 263240 000000 POPJ P, ;AND RETURN PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 48 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 IFE WCH,< ;DTA TO DTA MAINTAIN BITS 18-23 OF E+2 IF SET ;DSK TO DSK NO TRANSLATION (E+2) ;DSK TO DTA TRANSLATE E+3 (LHS) INTO E+2 (18-23) ;DTA TO DSK NO TRANSLATION (E+2) ;THIS ROUTINE ENSURES "SAVE" FILES MAINTAIN ;CORRECT DATA FOR LOADING. FOR DSK INPUT ;A "SAVE" FILE IS ONE WITH THE EXTENSION ;"SAV". E+3 = (-[(200XN)+NO. WDS IN LAST BLOCK] ;IN LHS TRANSLATE TO NO. 1K BLOCKS NEEDED ;TO LOAD FILE - BEFORE IT IS EXPANDED IN CORE. 002412' 606740 020000 OKBLKS: TRNN CALFLG,RXFLG ;(RX)? 002413' 254000 002422' JRST OKBLK0 ;NO 002414' 200000 004647' MOVE 0,MATCH ;GET FILE NAME 002415' 554040 004650' HLRZ T1,MATCH+1 ;AND EXT. 002416' 312000 003730' CAME 0,STAR ;SKIP IF NAME IS "*" 002417' 202000 004044' MOVEM 0,DTON ;OTHERWISE REPLACE NAME 002420' 302040 120000 CAIE T1,(SIXBIT /*/) ;SAME FOR EXT 002421' 506040 004045' HRLM T1,DTON+1 002422' 200000 004044' OKBLK0: MOVE 0,DTON ;GET OUTPUT FILE NAME 002423' 554040 004045' HLRZ T1,DTON+1 ;AND EXT 002424' 302040 120000 CAIE T1,(SIXBIT /*/) ;IS IT "*" 002425' 316000 003730' CAMN 0,STAR ;IS IT "*" 002426' 254000 002033' JRST ERR4B ;YES, ERROR REPEAT 0,< ;NEEDS FIX TO TENDMP OR MONITOR TRNE AUXFLG,DTAOUT ;OUTPUT TO DTA? CAIE T1,(SIXBIT /SAV/) ;AND A SAV FILE? SKIP 1 ;NO UGETF OUT,0 ;SET TO FIRST FREE BLOCK > IFN FTDSK, 002427' 135000 003716' LDB 0,OKB ;DTA I/O - 1K BLKS 002430' 137000 003715' DPB 0,OKBD ;DEPOSIT IN DTON 002431' 263240 000000 POPJ P, IFN FTDSK,< OKBLK1: TRC AUXFLG,DTAIN+DSKOUT ;DTA-TO-DSK TRCN AUXFLG,DTAIN+DSKOUT POPJ P, ;YES TRC AUXFLG,DSKIN+DTAOUT ;NO,DSK-TO-DTA? TRCE AUXFLG,DSKIN+DTAOUT ;NO POPJ P, HLRZ 0,ZRF+1 ;YES DSK-TO-DTA IFE DISK30,< CAIE 0,(SIXBIT /SAV/) ;GET LOOKED UP EXT,(INPUT). PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 48-1 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 > IFN DISK30, POPJ P, HLRO T1,ZRF+3 ;EXTENSION=SAV MOVNS T1 ;WORD COUNT IDIVI T1,2000 ;DIVIDE BY 1K CORE(OCTAL LOCS.) JUMPN T2,.+2 SOJ T1, ;N-1 DPB T1,OKBD POPJ P,>> PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 49 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 IFN FTDSK,< ;ARE WE DOING (XD) FROM DSK? IF NOT, EXIT. ;SEE IF CURRENT FILE SELECTED IN ZRF IS IN THE ;LIST OF FILES NOT TO BE COPIED. (POPJ IF IT IS) XDDSK: TRC FLAG,XFLG+DFLG ;COMPLEMENT TRCN FLAG,XFLG+DFLG ;RESET AND TEST TRNN AUXFLG,DSKIN ;/X AND /D WERE SET JRST CPOPJ1 ;NOT DSKIN SO COPY FILE HRROI T1,-12 ;SET TO LOOP NAMTAB XDDSK2: MOVE T2,ZRF ;GET FILE NAME SKIPN T3,NAMTAB+12(T1) ;END OF TABLE ENTRIES? JRST CPOPJ1 ;YES, EXIT CAME T2,T3 ;FN IS * OR MATCH? CAMN T3,STAR SKIP 1 ;YES, * OR MATCH? JRST XDDSK1 ;NO MATCH HLLZ T2,ZRF+1 ;GET EXT SKIPN T3,NAMTAB+24(T1) ;NO EXT MATCH WANTED POPJ P, ;EXIT THEN CAME T2,T3 ;EXT IS * OR MATCH? CAMN T3,STAR POPJ P, ;FN EX MATCH, NO COPY XDDSK1: AOJL T1,XDDSK2 ;TRY ANOTHER FOR MATCH JRST CPOPJ1 ;SEARCHED TABLE, NO MATCH> PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 50 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 ;ROUTINE TO DELETE OR RENAME FILES ON DTA OR DSK OR SET UP NAMTAB ;FOR (DX) (DISK ONLY) 002432' 602300 002000 DTDELE: TRNE FLAG,XFLG ;/X 002433' 254000 002443' JRST DELE1 ;YES 002434' 606300 000010 TRNN FLAG,DFLG ;/D NEED EXPLICIT DEVICE 002435' 254000 002440' SKIP 2 002436' 606740 000200 TRNN CALFLG,DVSWTH ;-1 IF DEVICE SEEN 002437' 254000 002122' JRST ERR8 ;NO, ERROR 002440' 200000 004634' MOVE 0,ODEV ;OUTPUT DEVICE 002441' 202000 004637' MOVEM 0,DEVICE ;NO,SET DEVICE FOR INPUT 002442' 202000 004050' MOVEM 0,DEVA 002443' 620540 261500 DELE1: TRZ AUXFLG,DTAIN+CDRIN+TTYIN+PPTIN+MTAIN+DSKIN 002444' 260240 002132' PUSHJ P,CHECK1 ;RESET INPUT DEVICE DESCRP 002445' 201000 003766' MOVEI 0,NAMTAB ;FOR /R GET NEW NAME 002446' 505000 004044' HRLI 0,DTON ;SET TO BLT OUTPUT DIRECT ENTRY 002447' 251000 003771' BLT 0,NAMTAB+3 ;TO NAMTAB 002450' 606540 060000 TRNN AUXFLG,DTAIN+DSKIN 002451' 254000 002066' JRST ERR5 ;NOT DTA OR DSK 002452' 260240 002746' PUSHJ P,FNSET ;SET UP CALFLG CORRECTLY 002453' 602300 002000 TRNE FLAG,XFLG ;/X? 002454' 254000 002456' JRST DTD1 ;YES, (DX). RX ILLEGAL IFN FTDSK, 002455' 254000 002460' JRST DTADR ;OR DTA 002456' DTD1: IFN FTDSK, 002456' 260240 003271' PUSHJ P,DTCHECK ;NO, HAS TO BE DTA, GET DIR 002457' 254000 002466' JRST DELE3 ;DELETE, FILES FROM DIR IFN FTDSK,< DTD1A: SETZM NAMTAB ;COLLECT NAMES FOR DX, DSK SOURCE MOVE T1,[XWD NAMTAB,NAMTAB+1] BLT T1,NAMTAB+23 ;FIRST CLEAR TABLE MOVEI T1,NAMTAB ;LOCATION OF NAMTAB MOVEM T1,LOCNAM DTD4: MOVE 0,FILNAM JUMPE 0,DTD4A ;FN=0 ILLEGAL MOVE T1,LOCNAM MOVEM 0,(T1) ;STORE FILENAME FROM CS MOVE 0,FILEX ;STORE FILE EXT MOVEM 0,12(T1) ;TABLE FULL? MOVEI T2,NAMTAB+11 CAMN T2,T1 SOS ESWTCH ;YES SKIPE ESWTCH ;NO, END OF CS SCAN? JRST DTD2 ;END OF NAME PROCESSING AOS T1,LOCNAM ;SET TO STORE IN NEXT SLOT NAMTAB DTD4B: PUSHJ P,DESCRP ;NO, GET NEXT FILENAME FROM CS TRNE CALFLG,NEWPP!NEWDEV JRST ERR5A ;ERROR, NEW DEV OR# PP PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 50-1 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 JRST DTD4 DTD4A: PUSHJ P,ERR3A JRST DTD4B ;END OF CS OR NAMTAB FULL DTD2: PUSHJ P,ININIT ;INIT INPUT FILE MOVEI T1,1 ;SET TO RETURN DTCOPY+1 JRST DTD5> PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 51 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 ;ROUTINE TO DELETE OR RENAME FILES ON DTA 002460' 260240 003271' DTADR: PUSHJ P,DTCHECK ;GO GET DTA DIRECTORY 002461' 200040 003742' MOVE T1,IBF ;CURRENT INPUT BUFFER IFN WCH,< USETO OUT,1 ;TRY TO WRITE OUTPUT TAPE > ;DETERMINE IF WRITE LOCKED IFE WCH,< 002462' 075100 000144 USETO OUT,144> ;THIS SHOULD GIVE ERROR MSG 002463' 067101 000000 OUTPUT OUT,(T1) ;IF DTA WRITE LOCKED 002464' 260240 003271' PUSHJ P,DTCHECK ;GO GET DTA DIRECTORY 002465' 260240 002711' PUSHJ P,INFO ;WRITE "FILES DELETED/RENAME ;********************************************************************* ;LOOP TO DELETE/RENAME. FOR (DX) DELETE FILES FROM DTA DIR ;THEN USE REVISED DIRECTORY TO COPY ALL REMAINING FILES 002466' 260240 002566' DELE3: PUSHJ P,LOOK ;GET FILE TO DELETE OR RENAME FROM CS 002467' 254000 002513' JRST DELE5 ;NO MORE FILES 002470' 606300 002000 TRNN FLAG,XFLG ;/X? 002471' 260240 002743' PUSHJ P,INFO3 ;PRINT FILENAME-EXT 002472' 200040 004012' MOVE T1,DIRST ;GOT A MATCH - PROCESS IT 002473' 602300 000100 TRNE FLAG,RFLG ;AND IT IS AT (T5) IN (DTA) DIR 002474' 254000 002522' JRST DTRNAM ;RENAME IFN WCH,< SKIPA T2,T1 ADDI T2,4 SKIPE 4(T2) JRST .-2 HRLS T1 ADDI T1,4 ;GET TO END OF NAMES MOVSS T1 ;BLOCK UP DIR BLT T1,-1(T2) ;ZERO OUT LAST 4 WORDS SETZM (T2) SETZM 1(T2) SETZM 2(T2) SETZM 3(T2) MOVE T1,DIRST1 MOVEM T1,DIRST JRST DELE3> IFE WCH,< 002475' 402001 000000 SETZM (T1) ;DELETE FILENAME IN CORE DIRECT 002476' 402001 000026 SETZM 26(T1) ;DELETE EXT 002477' 274040 004013' SUB T1,DIRST1 ;GET FILE "NUMBER" (POS IN DIRECT) 002500' 201140 001102 MOVEI T3,1102 ;TO LOOK AT ALL BLOCKS 002501' 205100 440500 MOVSI T2,(POINT 5,0) 002502' 540100 004013' HRR T2,DIRST1 ;TO CALCULATE ADDRESS OF FIRST WORD 002503' 275100 000122 SUBI T2,122 ;OF BLOCK TABLE IN DIRECTORY 002504' 363140 002466' DELE2: SOJLE T3,DELE3 ;LOOK AT 1101 BLOCKS PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 51-1 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 002505' 134000 000002 ILDB 0,T2 ;GET BLOCK NUMBER 002506' 312000 000001 CAME 0,T1 ;IS IT SAME AS FILE "NUMBER" 002507' 254000 002504' JRST DELE2 ;NO IGNORE 002510' 400000 000000 SETZ 0, ;FREE THE BLOCKS OF THIS FILE 002511' 137000 000002 DPB 0,T2 ;CLEAR OUT BLOCK NUMBER 002512' 254000 002504' JRST DELE2> ;LOOP ON 1102 BLOCKS 002513' 200040 003742' DELE5: MOVE T1,IBF ;LOC OF INPUT BUFFER 002514' 602300 002000 TRNE FLAG,XFLG ;DX SWITCH? 002515' 254000 002543' JRST DTD6 ;YES, NOW MUST COPY REMAINING FILES IFN WCH,< USETO OUT,1> IFE WCH,< 002516' 075100 000144 USETO OUT,144> 002517' 067101 000000 OUTPUT OUT,(T1) ;OUTPUT DTA DIRECTORY 002520' 071040 000000 RELEAS CON, ;OUTPUT DELETE OR RENAME INFO TO TTY 002521' 254000 000415' JRST MAINB PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 52 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 ;ROUTINE TO RENAME FILE ON DECTAPE 002522' 260240 002553' DTRNAM: PUSHJ P,RENAME 002523' 402000 004046' SETZM DTON+2 ;MAKE MONITOR SUPPLY 002524' 402000 004047' SETZM DTON+3 ;DATE TIME 002525' 076100 004044' LOOKUP OUT,DTON ;LOOK UP FILENAME-EXT ON OUTPUT DEV 002526' 254000 002530' SKIP 1 ;NO FILE ALREADY OF DESTINATION NAME 002527' 254000 002536' JRST DTRNM1 002530' 200000 004044' MOVE 0,DTON ;RENAME, FILENAME 002531' 322000 002466' JUMPE 0,DELE3 ;BUT NOT IF ZERO 002532' 202001 000000 MOVEM 0,(T1) ;PUT IN DIRECTORY 002533' 200000 004045' MOVE 0,DTON+1 ;GET EXT IFE WCH,< 002534' 502001 000026 HLLM 0,26(T1)> ;RENAME, EXT IFN WCH,< HLLM 0,1(T1)> 002535' 254000 002466' JRST DELE3 002536' 550100 003742' DTRNM1: HRRZ T2,IBF ; GET PROTECTION DIR SLOT 002537' 135000 004704' LDB 0,[POINT 5,17(T2),14] 002540' 302000 000036 CAIE 0,36 ; FILE PROTECTION ? 002541' 254000 001762' JRST ERR9 ; NO,ILLEGAL FILE NAME 002542' 254000 002466' JRST DELE3 ; RENAME DONE AT MAINB ;END OF LOOP ;********************************************************************* ;DX SWITCH ON, COPY ALL BUT SPECIFIED FILES. I.E. THOSE NOT DELETED 002543' 201040 000000 DTD6: MOVEI T1,0 ;SET TO RETURN TO DTCOPY 002544' 205000 120000 DTD5: MOVSI 0,(SIXBIT /*/) 002545' 202000 004040' MOVEM 0,FILNAM ;FORCE COPY-ALL 002546' 202000 004041' MOVEM 0,FILEX ;BY MAKING FILE-EXT=*.* 002547' 260240 002746' PUSHJ P,FNSET ;FIND DETAILS OF FILE-EXT 002550' 602540 020000 TRNE AUXFLG,DTAIN ;DTA INPUT 002551' 260240 003277' PUSHJ P,DTCH1 ;INIT DIRST,DIRST1 IFN RIMSW, < TLNE FLAG,RIMFLG ;NO JRST RIMTB > 002552' 254001 002224' JRST DTCOPY(T1) ;SET UP OUTPUT DIRECTORY ENTRY FOR RENAME ;ONLY ONE FILE NAME ALLOWED, BUT MAY BE *.EXT OR FN.* 002553' 331000 004134' RENAME: SKIPL ESWTCH ;SKIP IF CR,LF SEEN IN C.S. 002554' 254000 002040' JRST ERR6A ;ONLY 1 SOURCE FILE DESCRIPTOR ALLOWED 002555' 554000 003767' HLRZ 0,NAMTAB+1 ;GET EXT 002556' 306000 120000 CAIN 0,(SIXBIT /*/) ;USE SPEC. EXTENSION, BUT IF 002557' 554000 004053' HLRZ 0,ZRF+1 ;EXT.=*, USE SOURCE EXTENSION 002560' 506000 004045' HRLM 0,DTON+1 ;USE SPECIFIED EXT 002561' 200100 003766' MOVE T2,NAMTAB ;USE SPEC. FN, BUT IF 002562' 316100 003730' CAMN T2,STAR ;FN=* OR 0, USE SOURCE FILENAME 002563' 200100 004052' MOVE T2,ZRF ;SOURCE FILE NAME=DEST PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 52-1 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 002564' 202100 004044' MOVEM T2,DTON ;USE SPECIFIED FILENAME 002565' 263240 000000 POPJ P, PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 53 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 ;THIS ROUTINE GETS NEXT FILENAME.EXT FROM CS ;THEN SEES IF ONE IN DIRECTORY MATCHES ;IF IT DOES - EXIT IS CPOPJ1 ;NO-MORE-FN.EX-TO-HANDLE-EXIT IS POPJ ;PREPARE ZRF FOR A "LOOKUP" ON THE NEXT REQUESTED FILE. 002566' 602740 000001 LOOK: TRNE CALFLG,FNEX ;DOES FILNAM, FILEX CONTAIN 002567' 254000 002572' JRST LOOK6 ;A FILE TO THINK ABOUT? YES 002570' 260240 002767' LOOK01: PUSHJ P,LOOKA ;GET ONE (NOTE: DEVICE MAY ALTER) 002571' 263240 000000 POPJ P, ;NONE, END OF CS ;RETURN SKIP FROM LOOKA 002572' 200100 004041' LOOK6: MOVE T2,FILEX ;GET FILE EXT INTO T2 002573' 336040 004040' SKIPN T1,FILNAM ;FILNAME AND EXT=0? 002574' 332100 004041' SKIPE T2,FILEX 002575' 254000 002577' SKIP 1 ;EITHER FN OR EX N.E.0 002576' 254000 002650' JRST LOOK7C ;FN.EX=0, ONE FILE COPY 002577' 312040 003730' CAME T1,STAR ;FILNAME OR EXT=*? 002600' 316100 003730' CAMN T2,STAR 002601' 254000 002640' JRST LOOK7A ;FN OR EX=*, MANY FILES 002602' 602540 060000 TRNE AUXFLG,DTAIN+DSKIN ;DONT REQUIRE FILENAME 002603' 322040 002616' JUMPE T1,LOOK6C ;HERE FOR 0.EX,FN.EX OR FN.0,0.EX ILLEGAL 002604' 620740 000001 LOOK7B: TRZ CALFLG,FNEX ;IF HERE, ONLY ONE FILE WAS ENTAILED IN REQUEST. 002605' 606540 060000 TRNN AUXFLG,DTAIN+DSKIN 002606' 254000 002635' JRST LOOK4 ;GOT A FILE TO HANDLE 002607' 260240 002662' LOOK8: PUSHJ P,PICUP ;GET A FILE (ANY) FROM DIRECTORY 002610' 254000 002623' JRST LOOK2 ;WE GOT A FILE, DOES IT MATCH? 002611' 622740 000001 TRZE CALFLG,FNEX ;SEE IF A PARTIC. FILE WAS REQUESTED? 002612' 254000 002620' JRST LOOK6D ;NO 002613' 254000 002616' JRST LOOK6C ;YES 002614' 260240 002005' LOOK6A: PUSHJ P,ERR3A 002615' 254000 001107' JRST IOERRN ;NO RECOVERY 002616' 260240 002005' LOOK6C: PUSHJ P,ERR3A 002617' 254000 002570' JRST LOOK01 ;GET NEXT FILE FROM CS 002620' 626740 000040 LOOK6D: TRZN CALFLG,ASTFLG ;DID WE FIND AT LEAST ONE 002621' 260240 002005' PUSHJ P,ERR3A ;NO, PRINT MSG. 002622' 254000 002566' JRST LOOK ;GET NEXT FILE FROM CS ;CHECK IF FILE.EXT IN DIRECTORY MATCHES FILE TO /D,/R ;NOTE WE MAY HAVE *.EXT,FIL.*, OR *.* 002623' 606740 000004 LOOK2: TRNN CALFLG,MATFN ;SHOULD FILENAMES MATCH 002624' 254000 002630' JRST LOOK3 ;NO 002625' 200040 004040' MOVE T1,FILNAM ;YES 002626' 312040 004052' CAME T1,ZRF 002627' 254000 002607' JRST LOOK8 ;NO MATCH 002630' 606740 000002 LOOK3: TRNN CALFLG,MATEX ;SHOULD EXTENSIONS MATCH 002631' 254000 002635' JRST LOOK5 ;NO 002632' 200040 004041' MOVE T1,FILEX ;YES PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 53-1 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 002633' 312040 004053' CAME T1,ZRF+1 002634' 254000 002607' JRST LOOK8 ;NO MATCH LOOK5: IFN DISK30,< TRNN AUXFLG,DSKIN ;DSK INPUT? JRST LOOK4 ;NO LDB T1,UFDIN+1 ;PICKUP P-P# IN DIRECTORY HRRZM T1,T2 CAME T2,MASK ;COMPARE WITH OWN P-P# JRST LOOK8 ;NO MATCH> 002635' 660540 002000 LOOK4: TRO AUXFLG,READ1 ;READY FOR FIRST READ 002636' 660740 000040 TRO CALFLG,ASTFLG ;FOUND A FILE *.EXT, F.*,*.* 002637' 254000 001707' JRST CPOPJ1 ;MATCH OR NO CARES ;FILENAME OR EXT=* 002640' 322100 002642' LOOK7A: JUMPE T2,.+2 ;EXT=0? 002641' 316100 003730' CAMN T2,STAR ;NO, 002642' 312040 003730' CAME T1,STAR 002643' 254000 002645' SKIP 1 002644' 254000 002655' JRST LOOK1 ;*.* ALWAYS O.K. AND * 002645' 606540 060000 TRNN AUXFLG,DSKIN+DTAIN 002646' 254000 002614' JRST LOOK6A ;*.A OR * ON NON-DIRECT DEV 002647' 254000 002607' JRST LOOK8 002650' 602540 060000 LOOK7C: TRNE AUXFLG,DSKIN+DTAIN 002651' 254000 002616' JRST LOOK6C ;0.0 ON DIR DEVICE 002652' 402000 004052' SETZM ZRF 002653' 402000 004053' SETZM ZRF+1 002654' 254000 002604' JRST LOOK7B ;0.0 ON NON-DIR. DEV. 002655' 602540 060000 LOOK1: TRNE AUXFLG,DTAIN+DSKIN 002656' 254000 002607' JRST LOOK8 002657' 402000 004052' SETZM ZRF 002660' 402000 004053' SETZM ZRF+1 002661' 254000 002635' JRST LOOK4 PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 54 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 ;ROUTINE TO GET NEXT FILE NAME FROM DIRECTORY ;FILNAM, FILEX CONTAIN THE FILE NAME. EXT TO BE ;MATCHED WITH DIR. NAMES. PUT SUGGESTED FILE ;NAME EXT IN ZRF, ZRF+1 AND #P-P IN ZRF+3 ;NOTE THAT WE HAVE TO HANDLE *.EXT,FILE.* 002662' PICUP: IFN FTDSK, POPJ P,> 002662' PICUP2: IFN WCH,< MOVE T5,DIRST ;DIRST=LOC 4 FIRST TIME THRU ADDI T5,4 ;CALCULATE FIRST/NEXT FILENAME MOVEM T5,DIRST MOVE 0,(T5) JUMPE 0,CPOPJ1 ;NO MORE FILENAMES IN DIRECTORY MOVEM 0,ZRF MOVE 0,1(T5)> IFE WCH,< 002662' 200140 004013' MOVE T3,DIRST1 ;SETUP TO CHECK ALL FILENAME SLOTS 002663' 271140 000026 ADDI T3,26 ;IN DIRECTORY (22 FILE NAMES) 002664' 200440 004012' MOVE T5,DIRST ;LOC OF FIRST/NEXT FILE 002665' 271440 000001 PICUP4: ADDI T5,1 ; 002666' 313440 000003 CAMLE T5,T3 ;END OF FILE SLOTS? 002667' 254000 001707' JRST CPOPJ1 ;END OF FILE NAMES 002670' 202440 004012' MOVEM T5,DIRST ;NEXT SLOT TO LOOK AT 002671' 200011 000000 MOVE 0,(T5) ;GOT FILE NAME FROM DIRECT 002672' 322000 002665' JUMPE 0,PICUP4 ;IGNORE IF 0 002673' 202000 004052' MOVEM 0,ZRF 002674' 200011 000026 MOVE 0,26(T5)> ;GET EXT ETC 002675' 512000 004053' HLLZM 0,ZRF+1 002676' 200000 004043' MOVE 0,PP 002677' 202000 004055' MOVEM 0,ZRF+3 002700' 263240 000000 POPJ P, PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 55 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 ;READ DTA DIR. AND PREPARE T5 TO PICK UP FIRST ENTRY. 002701' 260240 003272' DTADIR: PUSHJ P,DTCH2 ;READ DTA DIR INTO INPUT BUF 002702' 201140 004400' DTADI1: MOVEI T3,DBUF ;SET BLT FROM INBUF TO DBUF 002703' 504140 000011 HRL T3,T5 ;FIRST DATA WORD OF DIRECTORY IN T5 IFN WCH,< MOVNS T2 BLT T3,DBUF+176(T2) SETZM DBUF+177(T2) MOVEI T5,DBUF-4> IFE WCH,< 002704' 251140 004576' BLT T3,DBUF+176 ;MOVE FROM INBUF TO DBUF 002705' 201440 004522' MOVEI T5,DBUF+123-1> ;LOC OF FIRST FILE NAME 002706' 202440 004012' MOVEM T5,DIRST ;T5 POINTS TO FILNAME JUST HANDLED 002707' 202440 004013' MOVEM T5,DIRST1 ;TO RESTORE DIRST 002710' 263240 000000 POPJ P, ;(IE NONE BUT NEXT WILL BE FIRST) PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 56 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 ;ROUTINE TO OUTPUT FILENAMES THAT WERE DELETED OR RENAMED ;PRINT "FILES DELETED:" OR "FILES RENAMED:" ;ALSO USED TO PRINT "NO FILE NAMED XXX.XXX" 002711' 200040 003756' INFO: MOVE T1,TFO ;SETUP TTY FOR OUTPUT 002712' 200100 003753' MOVE T2,TFI ;SAVE BUFFER LOCS 002713' 260240 001410' PUSHJ P,INICON ;INIT TTY 002714' 562100 003753' HRROM T2,TFI ;SET BUFFER LOCS 002715' 562040 003756' HRROM T1,TFO 002716' 067040 000000 OUTPUT CON, 002717' 623540 000100 TLZE AUXFLG,INFOFL ;ERROR PRINT ONLY? 002720' 254000 002007' JRST ERR3AA ;YES 002721' 606300 000010 TRNN FLAG,DFLG ;DELETE? 002722' 254000 002730' JRST INFO1 ;NO, MUST BE RENAME 002723' 265040 002166' ERRPN2 002724' 433235 462746 002725' 203114 566312 002726' 723134 435000 002727' 254000 002735' JRST INFO2 002730' 476000 004651' INFO1: SETOM RENSN ;DON'T PRINT IT TWICE 002731' 265040 002166' ERRPN2 ;RENAME (/R) 002732' 433235 462746 002733' 203454 567302 002734' 667134 435000 002735' 201200 000015 INFO2: MOVEI CHR,CR ;OUTPUT CR/LF 002736' 260240 002175' PUSHJ P,PUTCON ;ON TTY 002737' 201200 000012 MOVEI CHR,LF 002740' 260240 002175' PUSHJ P,PUTCON 002741' 067040 000000 OUTPUT CON, 002742' 263240 000000 POPJ P, ;********************************************************************** ;PRINT FILENAME.EXT OR [P,P].UFD OF FILE DELETED 002743' 201140 004052' INFO3: MOVEI T3,ZRF ;LOCATION OF FILENAME 002744' 260240 001146' PUSHJ P,FN.EX 002745' 254000 002735' JRST INFO2 PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 57 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 ;/X OR /D. FIND OUT DETAILS OF FILE NAME AND ;EXTENSION (0 FN.EX=*.*) AND ANY CHANGE IN ;SOURCE DEV. SET BITS IN CALFLG. 002746' 620740 000037 FNSET: TRZ CALFLG,ALLCLF ;CLEAR FLAGS ON ENTRY 002747' 660740 000001 TRO CALFLG,FNEX 002750' 205000 120000 MOVSI 0,(SIXBIT /*/) ;* TO AC0 002751' 312000 004040' CAME 0,FILNAM ;FILNAM=* OR 0? 002752' 336000 004040' SKIPN FILNAM 002753' 254000 002755' SKIP 1 ;FILENAME = * OR 0 002754' 660740 000004 TRO CALFLG,MATFN ;FILENAME MUST BE MATCHED 002755' 336000 004041' SKIPN FILEX ;EXT=0? 002756' 606540 201500 TRNN AUXFLG, MTAIN+CDRIN+PPTIN+TTYIN ;YES 002757' 316000 004041' CAMN 0,FILEX ;NO, EXT = *? 002760' 254000 002762' SKIP 1 ;YES 002761' 660740 000002 TRO CALFLG,MATEX ;FILE EXTENSION MUST BE MATCHED IFN FTDSK, 002762' 200100 004637' FNSET1: MOVE T2,DEVICE 002763' 312100 004050' CAME T2,DEVA 002764' 660740 000010 TRO CALFLG,NEWDEV ;CHANGE IN SOURCE DEV. 002765' 202100 004050' MOVEM T2,DEVA ;SET DEVA=DEVICE 002766' 263240 000000 POPJ P, PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 58 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 ;POPJ EXIT IF END OF COMMAND STRING, OTHERWISE RESET ;POINTER TO START OF DIRECTORY, READING IN NEW DIR. ;IF DEV OR #P-P CHANGED (EXIT CPOPJ1) ;IF DIR. IS ON DSK RESET BY REINIT. 002767' 332340 004134' LOOKA: SKIPE T4,ESWTCH ;MORE C.S.? 002770' 263240 000000 POPJ P, ;NO 002771' 260240 000451' PUSHJ P,DESCRP ;YES, GET NEXT FN.EX FROM CS 002772' 260240 000204' PUSHJ P,INLOOK ;CHECK FOR MTA REQUESTS, MODE 002773' 260240 000154' PUSHJ P,M4 ;CHECK FOR /I,/B,/H 002774' 552340 004636' HRRZM T4,ININI1 ;SET MODE 002775' 071240 000000 RELEAS DIR, 002776' 606540 201500 TRNN AUXFLG,MTAIN+CDRIN+PPTIN+TTYIN ;NON-DIR DEVICE? 002777' 254000 003002' JRST LOOKF 003000' 602740 000006 TRNE CALFLG,MATEX!MATFN ;YES, NO FN EX BUT *.* OR * ALLOWED 003001' 254000 002040' JRST ERR6A 003002' 606300 000010 LOOKF: TRNN FLAG,DFLG ;FOR DELETE, ONE SOURCE FILE 003003' 254000 003006' JRST LOOKB ;... 003004' 602740 000030 TRNE CALFLG,NEWDEV!NEWPP ;ONLY IS PERMITTED 003005' 254000 002060' JRST ERR5A 003006' 606740 000030 LOOKB: TRNN CALFLG,NEWDEV!NEWPP ;PREPARE TO LOOK FOR NEW FILE 003007' 254000 003014' JRST LOOKC ;NAME AT HEAD OF DIRECTORY 003010' 260240 000426' PUSHJ P,ININIT ;INIT INPUT FILE 003011' 606540 060000 TRNN AUXFLG,DTAIN+DSKIN 003012' 254000 001707' JRST CPOPJ1 IFN FTDSK, 003013' 260240 002701' PUSHJ P,DTADIR ;YES, READ IN DTA DIRECT 003014' LOOKC: IFN FTDSK, 003014' 200440 004013' MOVE T5,DIRST1 ;NO, RESET DIRECTORY START 003015' 202440 004012' MOVEM T5,DIRST 003016' 254000 001707' JRST CPOPJ1 IFN FTDSK,< LOOKD: PUSHJ P,DSKDIR ;GET USER'S FILE DIRECTORY SETZM UFDIN+2 ;DSK DIR BUF EMPTY JRST CPOPJ1> PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 59 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 ;ROUTINE TO LIST DTA OR DSK DIRECTORIES 003017' 077100 004044' DTPDIR: ENTER OUT,DTON ;OUTPUT DEV,NROCT ENTRY 003020' 254000 002024' JRST ERR4 ;DIRECTORY FULL IFN FTDSK, 003021' 606540 020000 TRNN AUXFLG,DTAIN ;DECTAPE INPUT? 003022' 254000 002066' JRST ERR5 ;NOT DSK OR DTA. ERROR ;ROUTINE TO LIST DTA DIRECTORY. /L OR /F SWITCH 003023' 260240 003271' DTALST: PUSHJ P,DTCHECK ;CHECK FOR DTA INPUT-MUST BE DECTAPE AND ;GET DIRECTORY 003024' 260240 003205' PUSHJ P,CRLF ;PRINT NO. OF FREE BLOCKS LEFT 003025' 135040 004705' LDB T1,[POINT 5,16(T5),14] 003026' 302040 000036 CAIE T1,36 ; SKIP DIR HEADER IF 003027' 254000 003070' JRST PDIR1B ; DECTAPE HAS NO PROTECTION U 003030' 334040 004706' LSTLIN HEDL1 ; PRINT HEADER 003031' 260240 000756' 003032' 134200 000001 003033' 326200 003031' 003034' 200100 003736' MOVE T2,DTAID 003035' 322100 003055' JUMPE T2,DTALS4 003036' 201100 000005 MOVEI T2,5 ; CHARACTER COUNT 003037' 200000 004707' MOVE 0,[POINT 6,DTAID] 003040' 134200 000000 ILDB CHR,0 ; GET CLASSIFICATION 003041' 302200 000023 CAIE CHR,23 ; STD (I.E.=3) ? 003042' 344100 003052' AOJA T2,DTALS3 003043' 134200 000000 DTALS1: ILDB CHR,0 ; GET NEXT DIGIT 003044' 271200 000040 ADDI CHR,40 ; CONVERT TO ASCII 003045' 306200 000060 CAIN CHR,"0" ; SUPPRESS LEADING ZEROS 003046' 367100 003043' SOJG T2,DTALS1 003047' 260240 000756' PUSHJ P,PUT 003050' 363100 003055' DTALS2: SOJLE T2,DTALS4 003051' 134200 000000 ILDB CHR,0 003052' 271200 000040 DTALS3: ADDI CHR,40 003053' 260240 000756' PUSHJ P,PUT 003054' 254000 003050' JRST DTALS2 003055' 201200 000133 DTALS4: MOVEI CHR,"[" 003056' 260240 000756' PUSHJ P,PUT 003057' 554640 003737' HLRZ DOUT,DIRPPN 003060' 260240 003260' PUSHJ P,OUTDEC PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 59-1 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 003061' 201200 000054 MOVEI CHR,"," 003062' 260240 000756' PUSHJ P,PUT 003063' 550640 003737' HRRZ DOUT,DIRPPN 003064' 260240 003260' PUSHJ P,OUTDEC 003065' 201200 000135 MOVEI CHR,"]" 003066' 260240 000756' PUSHJ P,PUT 003067' 260240 003205' PUSHJ P,CRLF 003070' PDIR1B: IFN WCH,< MOVE T1,IBF HLRZ DOUT,1(T1) ;GET FREE BLOCK POINTER MOVNS DOUT ADDI DOUT,1101 ;GET NO. OF FREE BLOCKS LESS FREE BLOCK NO. PUSHJ P,OUTDEC ;PRINT RESULT> IFE WCH,< 003070' 400640 000000 SETZ DOUT, ;CLEAR NO. FREE BLOCKS 003071' 201340 001102 MOVEI T4,1102 ;OCTAL NO. OF BLOCKS ON DECTAPE 003072' 205040 440500 MOVSI T1,(POINT 5,0) ;5 BIT BYTES 003073' 550440 003742' HRRZ T5,IBF ;CURRENT INPUT BUFFER 003074' 271051 000001 ADDI T1,1(T5) ;POINTER TO 1ST DATA WORD IN DIRECT 003075' 363340 003101' PDIR8: SOJLE T4,PDIR1 ;ALL THROUGH? 003076' 134140 000001 ILDB T3,T1 ;CALCULATE NO. OF FREE BLOCKS 003077' 326140 003075' JUMPN T3,PDIR8 ;THIS BLOCK FULL 003100' 344640 003075' AOJA DOUT,PDIR8 ;COUNT NO. WITH ZERO IN 003101' 260240 003260' PDIR1: PUSHJ P,OUTDEC ;PRINT RESULT> 003102' 200000 004710' MOVE 0,[POINT 6,PDIR7] 003103' 201100 000022 MOVEI T2,^D18 ;SET LOOP TO DEPOSIT 18 CHARS 003104' 260240 003211' PUSHJ P,PDIR2 ;PRINT "FREE BLOCKS LEFT" MESSAGE 003105' 260240 003205' PUSHJ P,CRLF ;CARRIAGE RET, LINEFEED 003106' 260240 003277' PUSHJ P,DTCH1 ;FIX T5, TO POINT AT BEGIN OF DIR PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 60 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 ;LOOP TO EXAMINE FILE NAMES DTA DIRECTORY 003107' PDIR4: IFE WCH,< 003107' 336011 000123 SKIPN 123(T5) ;NULL (=0) FILE NAME? 003110' 254000 003200' JRST PDIR6 ;YES SO LOOK FOR ANOTHER> IFN WCH,< SKIPN (T5) ;NULL (=0) FILE NAME? JRST MAIN1 ;YES, SO END OF DIR.> 003111' 201100 000006 MOVEI T2,6 ;TRANSMIT UP TO 6 CHARACTERS 003112' 205000 440611 MOVSI 0,440600+T5 ;SET UP SOURCE BYTE POINTER IFE WCH,< 003113' 541000 000123 HRRI 0,123> ;SET TO PICK UP FILE NAME 003114' 400340 000000 SETZ T4, ;FOLLOWING CODE TO OUTPUT PROJ, PROG FILENAME ;***************************************************************** IFE WCH,< 003115' 554211 000151 HLRZ CHR,151(T5) ;GET EXT 003116' 302200 654644 CAIE CHR,(SIXBIT/UFD/) ;UFD? 003117' 254000 003130' JRST PDIR4A ;NO 003120' 554651 000123 HLRZ DOUT,123(T5) ;PROJ NO. 003121' 201100 000756' MOVEI T2,PUT 003122' 260240 003235' PUSHJ P,OUTDC1 003123' 201200 000054 MOVEI CHR,COMMA ;COMMA 003124' 260240 000756' PUSHJ P,PUT 003125' 550651 000123 HRRZ DOUT,123(T5) ;PROG NO. 003126' 260240 003235' PUSHJ P,OUTDC1 003127' 254000 003131' JRST PDIR4B > ;********************************************************************* 003130' 260240 003211' PDIR4A: PUSHJ P,PDIR2 ;OUTPUT 6-BIT DATA AND INCR DIRECTORY PTR IFE WCH,< 003131' 510211 000151 PDIR4B: HLLZ CHR,151(T5)> ;PICK UP EXTENSION IFN WCH,< HLLZ CHR,(T5)> 003132' 205000 440611 MOVSI 0,440600+T5 ;SET BYTE POINTER IFE WCH,< 003133' 541000 000151 HRRI 0,151> ;PICK UP EXTENSION 003134' 201100 000004 MOVEI T2,4 ;PRINT UP TO 4 CHRS. (PERIOD+3*EXT) 003135' 326200 003140' JUMPN CHR,.+3 ;EXTENSION NULL? 003136' 260240 003214' PUSHJ P,PDIR2A+1 ;YES 003137' 254000 003142' SKIP 2 ;NO 003140' 201200 000016 MOVEI CHR,PERIOD-40 ;NO, SO PRINT A PERIOD 003141' 260240 003213' PDIR3: PUSHJ P,PDIR2A ;OUTPT 6 BIT OR INCR T5 IFE WCH,< 003142' 201200 000040 MOVEI CHR,SPACE ;OUTPUT 2 SPACES 003143' 260240 000756' PUSHJ P,PUT 003144' 260240 000756' PUSHJ P,PUT 003145' 602540 000020 TRNE AUXFLG,FFLG ;SHORT FORM DIRECT ? 003146' 254000 003177' JRST PDIR3A ;YES VJC 4/16/69 PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 60-1 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 003147' 400640 000000 SETZ DOUT, ;CALCULATE NBR OF BLOCKS PER FILE 003150' 201340 001101 MOVEI T4,1101 003151' 205000 440500 MOVSI 0,(POINT 5,0) 003152' 550100 003742' HRRZ T2,IBF 003153' 271002 000001 ADDI 0,1(T2) 003154' 550600 000011 HRRZ T7,T5 003155' 275602 000000 SUBI T7,(T2) 003156' 134500 000000 ILDB T6,0 ;LOAD CONTENTS OF S.A.T. BLOCK 003157' 316500 000014 CAMN T6,T7 ;COMPARE WITH FILE SLOT NBR 003160' 271640 000001 ADDI DOUT,1 ;ADD 1 TO COUNT IF EQUAL 003161' 367340 003156' SOJG T4,.-3 003162' 260240 003260' PUSHJ P,OUTDEC ;OUTPUT NBR OF BLOCKS PER FILE 003163' 201200 000011 MOVEI CHR,TAB > IFN WCH,< AOJ T5, ;STEP DIR. POINTER MOVEI CHR,11 PUSHJ P,PUT ;OUTPUT A TAB CAIG T4,7> 003164' 260240 000756' PUSHJ P,PUT 003165' 135040 004711' LDB T1,[POINT 5,DBUF+16,14] 003166' 302040 000036 CAIE T1,36 003167' 254000 003174' JRST PDIR3B 003170' 550040 003742' HRRZ T1,IBF 003171' 276440 000001 SUBM T5,T1 003172' 135000 004712' LDB 0,[POINT 9,DBUF+200(T1),8] U 003173' 260240 000000* PUSHJ P,PROTO ; OUTPUT PROTECTION 003174' PDIR3B: IFE WCH,< 003174' 200011 000151 MOVE 0,151(T5) ;GET ENTRY DATE> IFN WCH,< MOVE 0,-1(T5) ;GET ENTRY DATE> 003175' 405000 007777 ANDI 0,7777 ;LEFT BITS ARE IRRELEVENT 003176' 260240 003224' PUSHJ P,DATOUT ;OUTPUT THE DATE 003177' 260240 003205' PDIR3A: PUSHJ P,CRLF ;GIVE CR,LF 4/16/69 IFN WCH,< AOJA T5,PDIR4 ;PROCESS NEXT ENTRY> IFE WCH,< 003200' 550040 003742' PDIR6: HRRZ T1,IBF ;PROCESS NEXT ENTRY 003201' 276440 000001 SUBM T5,T1 003202' 301040 000026 CAIL T1,26 ;FILE "NUMBER" OK? 003203' 254000 000411' JRST MAIN1 ;NO, END OF ENTRIES 003204' 344440 003107' AOJA T5,PDIR4 ;END OF LOOP, GET NEXT FILENAME> PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 61 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 IFN FTDSK,< CLRF: SOS LIN> 003205' 201200 000015 CRLF: MOVEI CHR,CR ;OUTPUT CAR. RET. 003206' 260240 000756' PUSHJ P,PUT 003207' 201200 000012 MOVEI CHR,LF ;LINE FEED 003210' 254000 000756' JRST PUT 003211' 134200 000000 PDIR2: ILDB CHR,0 ;ROUTINE TO OUTPUT 6-BIT DATA 003212' 606000 777777 TRNN 0,-1 ;PRINT SPACES WHEN PRINTING THE FREE BLOCKS 003213' 322200 003220' PDIR2A: JUMPE CHR,PDIR21 ;TERMINATE ON SPACE 003214' 271200 000040 ADDI CHR,40 ;CONVERT TO 7 BIT 003215' 260240 000756' PUSHJ P,PUT ;OUTPUT CHARACTER 003216' 271340 000001 ADDI T4,1 003217' 367100 003211' SOJG T2,PDIR2 ;COUNT DOWN MAX-CHARS COUNTER IFN WCH,< PDIR21: AOJA T5,CPOPJ ;STEP AND CONTINUE> IFE WCH,< 003220' 263240 000000 PDIR21: POPJ P, ;CONTINUE> PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 62 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 003221' 160046 624545 PDIR7: SIXBIT /. FREE BLOCKS LEFT/ 003222' 004254 574353 003223' 630054 454664 ;OUTPUT THE DATE FOUND IN AC 0. 003224' 201100 000756' DATOUT: MOVEI T2,PUT ;PUT CHAR IN OUT 003225' 231000 000037 IDIVI 0,^D31 003226' 201141 000001 MOVEI T3,1(1) 003227' 231000 000014 IDIVI 0,^D12 003230' 200640 000003 MOVE DOUT,T3 ;DOUT=DAY 003231' 260240 003235' PUSHJ P,OUTDC1 ;PRINT DAY 003232' 260240 003262' PUSHJ P,DATO2 ;PRINT -MONTH- 003233' 200640 000000 MOVE DOUT,0 003234' 271640 000100 ADDI DOUT,^D64 ;DOUT=YEAR 003235' 334700 003731' OUTDC1: SKIPA DOUT+1,TWL ;RADIX 10 ;******************************************************************* ;ROUTINE TO CONVERT OCTAL TO ASCII ;DOUT CONTAINS OCTAL VALUE ON ENTRY 003236' 201700 000010 OUTOCT: MOVEI DOUT+1,10 ;RADIX 8 003237' 552700 000007 PRNUMA: HRRZM DOUT+1,T4 003240' 201200 000060 MOVEI CHR,"0" 003241' 315640 000016 CAMGE DOUT,DOUT+1 ;PRINT AT LEAST 2 DIGITS 003242' 260242 000000 PUSHJ P,(T2) ;PUT OR PUTCON 003243' 231647 000000 PRN: IDIVI DOUT,(T4) ;DIVIDE BY RADIX 003244' 506705 000000 HRLM DOUT+1,(P) ;SAVE NO. FOR PRINT 003245' 322640 003247' JUMPE DOUT,.+2 ;ENUF DIGITS? 003246' 260240 003243' PUSHJ P,PRN ;NO, GET MORE 003247' 554205 000000 HLRZ CHR,(P) ;YES, GET LEFTMOST 003250' 271200 000060 ADDI CHR,60 ;CONVERT TO ASCII 003251' 254002 000000 JRST (T2) ;PUT OR PUTCON 003252' 201200 000040 OUTDE4: MOVEI CHR," " ;SET UP FOR SPACES 003253' 301640 001750 CAIL DOUT,^D1000 ;PRINT 4 CHAR. 003254' 254000 003260' JRST OUTDEC ;AT LEAST 4 SEEN 003255' 260240 000756' PUSHJ P,PUT ;OUTPUT ONE SPACE 003256' 305640 000144 CAIGE DOUT,^D100 ;3 CHAR.? 003257' 260240 000756' PUSHJ P,PUT ;NO,SO ANOTHER SPACE 003260' 201100 000756' OUTDEC: MOVEI T2,PUT ;PUT CHAR IN OUT BUF 003261' 254000 003235' JRST OUTDC1 003262' 201340 000005 DATO2: MOVEI T4,5 003263' 200500 004153' MOVE T6,MNPT 003264' 272040 000012 ADDM 1,T6 003265' 134200 000012 ILDB CHR,T6 003266' 260242 000000 PUSHJ P,(T2) ;PUT OR PUTCON 003267' 367340 003265' SOJG T4,.-2 003270' 263240 000000 POPJ P, PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 63 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 ;READ DTA DIRECTORY AND INITIALIZE DIRST AND DIRST1 003271' 260240 000426' DTCHECK:PUSHJ P,ININIT ;INITIALIZE INPUT DEVICE 003272' DTCH2: IFN WCH,< USETI IN,1 ;GET DTA DIR> IFE WCH,< 003272' 074140 000144 USETI IN,144 ;GET DTA DIR> 003273' 260240 001616' PUSHJ P,INP ;INPUT DIRECTORY 003274' 070140 000000 CLOSE IN, 003275' 260240 003333' PUSHJ P,GETPPN ; GET PPN OF DECTAPE 003276' 260240 000426' PUSHJ P,ININIT ; REINITIALIZE INPUT DEVICE IFN WCH,< DTCH1: MOVE T5,IBF HRRZ T2,1(T5) ADDI T5,1(T2) ;GET ADD. OF FIRST ENTRY MOVE 0,T5 SUBI 0,4> IFE WCH,< 003277' 550440 003742' DTCH1: HRRZ T5,IBF ;LOC. OF CURRENT BUF, 2ND WORD 003300' 201011 000123 MOVEI 0,123(T5) ;83 WORDS,7, FIVE-BIT BYTES 003301' 271440 000001 ADDI T5,1 ;COMPUTE ADD. OF DIR. START> 003302' 202000 004012' MOVEM 0,DIRST ;FIRST FILE NAME LOC 003303' 202000 004013' MOVEM 0,DIRST1 ;TO RESTORE DIRST 003304' 263240 000000 POPJ P, ;ROUTINE TO CHECK BRACKET COUNT/MATCHING 003305' 403140 004025' OUTCHK: SETZB T3,TLBRKT ;COUNT <> ON THIS LINE, CLEAR THINGS 003306' 200040 003723' MOVE T1,OPTRA ;BYTE POINTER FOR READING OUT THE LINE 003307' 316040 004020' OUTCH2: CAMN T1,OPTR ;LINE DONE? 003310' 254000 003320' JRST OUTCH3 ;YES, SO DECIDE WHETHER TO PRINT 003311' 134100 000001 ILDB T2,T1 ;GET CHAR 003312' 306100 000074 CAIN T2,"<" ;LEFT BRACKET? 003313' 350000 004025' AOS TLBRKT ;YES, SO INCREMENT BRACKET COUNT 003314' 306100 000076 CAIN T2,">" ;RIGHT BRACKET? 003315' 371000 004025' SOSL TLBRKT ;YES, SUBTRACT BRACKET COUNT, GONE NEG? 003316' 254000 003307' JRST OUTCH2 ;NO, SO DO NEXT CHAR 003317' 344140 003307' AOJA T3,OUTCH2 ;YES, SO FLAG COUNT GONE NEG. 003320' 336100 004025' OUTCH3: SKIPN T2,TLBRKT ;BRACKET COUNT OFF THIS LINE? 003321' 322140 001711' JUMPE T3,CPOPJ ;NO, WENT NEG.? 003322' 272100 004026' ADDM T2,TOTBRK ;YES, SO ADD INTO CUMULATIVE COUNT 003323' 201200 000055 MOVEI CHR,"-" ;PRINT MINUS FOR NEG TOTAL 003324' 335000 004026' SKIPGE TOTBRK 003325' 260240 000756' PUSHJ P,PUT 003326' 214640 004026' MOVM DOUT,TOTBRK;PRINT MAGNITUDE OF TOTAL 003327' 260240 003260' PUSHJ P,OUTDEC 003330' 201200 000011 MOVEI CHR,TAB ;FOLLOW WITH TAB 003331' 260240 000756' PUSHJ P,PUT 003332' 254000 000711' JRST OUTCH1 ;AND PRINT THE LINE 003333' 201440 000117 GETPPN: MOVEI T5,117 ; NON STD DUMP MODE PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 63-1 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 U 003334' 202440 000000* MOVEM T5,DTBLK 003335' 200440 004637' MOVE T5,DEVICE ; GET INPUT DEVICE U 003336' 202440 000000* MOVEM T5,DTDEV U 003337' 050340 003334* OPEN DTDIR,DTBLK 003340' 263240 000000 POPJ P, 003341' 074340 000144 USETI DTDIR,144 ; READ BLOCK 100 AND 003342' 200440 004713' MOVE T5,[IOWD 227,DBUF] 003343' 201500 000000 MOVEI T6,0 003344' 066340 000011 INPUT DTDIR,T5 ; WORD 1 OF BLOCK 101. 003345' 200440 004577' MOVE T5,177+DBUF 003346' 202440 003736' MOVEM T5,DTAID 003347' 200440 004600' MOVE T5,200+DBUF 003350' 202440 003737' MOVEM T5,DIRPPN ; SAVE PPN FOR LISTING 003351' 071340 000000 RELEASE DTDIR, 003352' 263240 000000 POPJ P, PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 64 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 003353' 612300 004672' FILTYP: TDNE FLAG,[XWD IFLG+IBFLG,BMOD] 003354' 263240 000000 POPJ P, ;BIN MODE DON'T CARE IF DMP, ETC 003355' 606540 060400 TRNN AUXFLG,DSKIN!DTAIN!MTAIN ;BINARY INPUT POSSIBLE? 003356' 254000 003365' JRST FIL11 ;NO 003357' 606540 014200 TRNN AUXFLG,DSKOUT!DTAOUT!MTAOUT ;BINARY OUTPUT? 003360' 254000 003365' JRST FIL11 ;NO 003361' 616300 004701' TDNN FLAG,[XWD PFLG,LINE!TBMOD!NSMOD!SQMOD!SPMOD] 003362' 603540 000040 TLNE AUXFLG,CDRFLG ;/E FROM DSK IS NOT BINARY 003363' 254000 003365' JRST FIL11 ;SO TURN OFF SBIN 003364' 254000 003414' JRST FIL3 ;FORCE BINARY MODE 003365' 621540 000004 FIL11: TLZ AUXFLG,SBIN ;IS 003366' 554000 004053' HLRZ 0,ZRF+1 ; INPUT EXTENSION 003367' 302000 445560 CAIE 0,(SIXBIT /DMP/) ;DMP? 003370' 306000 634166 IFE DISK30, IFN DISK30, 003371' 254000 003414' JRST FIL3 ;YES 003372' 302000 435056 CAIE 0,(SIXBIT /CHN/) ;CHN? 003373' 306000 624554 CAIN 0,(SIXBIT /REL/) ;REL? 003374' 254000 003414' JRST FIL3 ;YES 003375' 302000 635062 CAIE 0,(SIXBIT /SHR/) 003376' 306000 504750 CAIN 0,(SIXBIT /HGH/) 003377' 254000 003414' JRST FIL3 003400' 302000 425156 CAIE 0,'BIN' ; GENERAL BINARY EXTENSION? 003401' 306000 545767 CAIN 0,(SIXBIT /LOW/) 003402' 254000 003414' JRST FIL3 003403' 606300 002000 TRNN FLAG,XFLG ;DO NORMAL PROCESSING ON ALL 003404' 254000 003430' JRST FIL2 ;BUT DMP ETC FILES IF NOT /X 003405' 607540 000040 TLNN AUXFLG,CDRFLG 003406' 612300 004701' TDNE FLAG,[XWD PFLG,LINE+TBMOD+NSMOD+SQMOD+SPMOD] 003407' 263240 000000 POPJ P, ;NO SIGNIFICANT SWITCHES 003410' 515000 004400 FIL1: HRLZI 0,004400 ;FORCE 36-BIT. 003411' 502000 003743' HLLM 0,IBF+1 ;INPUT BYTE POINTER 003412' 502000 003746' HLLM 0,OBF+1 ;OUTPUT BYTE POINTER 003413' 263240 000000 POPJ P, ;CHANGE TO FORCED BINARY 003414' 661540 000004 FIL3: TLO AUXFLG,SBIN ;INPUT EXT = DMP,SAV,CHN,REL 003415' 602300 002000 TRNE FLAG,XFLG 003416' 254000 003410' JRST FIL1 003417' 667540 000400 TLON AUXFLG,FRSTIN ;NOT /X TEST FURTHER 003420' 254000 003443' JRST FIL4 ;IS THIS FIRST SOURCE, YES 003421' 663540 000200 TLOE AUXFLG,RSDCFL ;NOT FIRST, WAS PREVIOS FILE RSCD? 003422' 254000 003445' JRST FIL5 ;YES, NO CHANGE UNLESS DEVICE HAS CHANGED 003423' 067100 000000 OUTPUT OUT, ;NO CHANGE TO 36-BIT 003424' 200000 003747' MOVE 0,OBF+2 ;CURRENTLY 7-BIT I/O, MUST CHANGE TO 36-BIT ;OUTPUT CURRENT BUFFER 003425' 231000 000005 IDIVI 0,5 ;DIVIDE OBF+2 BY 5 (CHAR. COUNT) 003426' 202000 003747' MOVEM 0,OBF+2 003427' 254000 003410' JRST FIL1 003430' 663540 000400 FIL2: TLOE AUXFLG,FRSTIN ;NOT A RSCD FILE 003431' 627540 000200 TLZN AUXFLG,RSDCFL ;NO, WAS PREV. FILE RSCD? 003432' 263240 000000 POPJ P, ;NO, NO CHANGE 003433' 067100 000000 OUTPUT OUT, ;YES, CHANGE 36-BIT TO 7-BIT 003434' 201000 000005 MOVEI 0,5 003435' 222000 003747' IMULM 0,OBF+2 PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 64-1 PIP MAC 24-APR-78 03:15 VJC/PMH/AK-DAG/DMN 8-JUL-70 003436' 200000 003740' MOVE 0,SVIBF ;RESTORE 7-BIT 003437' 502000 003743' HLLM 0,IBF+1 003440' 200000 003741' MOVE 0,SVOBF 003441' 502000 003746' HLLM 0,OBF+1 003442' 263240 000000 POPJ P, 003443' 661540 000200 FIL4: TLO AUXFLG,RSDCFL ;SET REL,SAV,DMP,CHN FLAG 003444' 254000 003410' JRST FIL1 003445' 515000 004400 FIL5: HRLZI 0,004400 ;NEW DEVICE, SET 36-BIT INPUT 003446' 602740 000010 TRNE CALFLG,NEWDEV ;SOURCE DEVICE CHANGED 003447' 502000 003743' HLLM 0,IBF+1 003450' 263240 000000 POPJ P, ;OUTPUT ALREADY SET PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 65 PIP MAC 24-APR-78 03:15 BLOCK 0 CODE SUBTTL BLOCK 0 CODE IFE BLOC0,< IFE WCH,<;THIS CODE COPIES BLOCK 0,1,2 ONLY. I/O MUST BE DECTAPE.> IFN WCH,<;THIS CODE COPIES BLOCK 0 ONLY. I/O MUST BE DECTAPE.> ;MODE SELECTED MUST BE BIT 100, 20 AND NOT DUMP MODE (134). 003451' 640540 024000 BLOCK0: TRC AUXFLG,DTAIN+DTAOUT 003452' 642540 024000 TRCE AUXFLG,DTAIN+DTAOUT;FORCE DTA I/O 003453' 254000 002115' JRST ERR7A 003454' 201000 000134 MOVEI 0,134 003455' 202000 004633' MOVEM 0,OMOD 003456' 202000 004636' MOVEM 0,ININI1 003457' 205000 003745' MOVSI 0,OBF 003460' 202000 004635' MOVEM 0,ODEV+1 003461' 201000 003742' MOVEI 0,IBF 003462' 202000 004640' MOVEM 0,DEVICE+1 003463' 050100 004633' OPEN OUT,OMOD 003464' 254000 001767' JRST ERR1 ;UNAVAILABLE 003465' 065100 000001 OUTBUF OUT,1 003466' 067100 000000 OUTPUT OUT, 003467' 050140 004636' OPEN IN,ININI1 003470' 254000 001770' JRST ERR1A 003471' 064140 000001 INBUF IN,1 003472' 403040 003735' SETZB T1,BL0CNT 003473' 074141 000000 BL4: USETI IN,(T1) 003474' 066140 000000 INPUT IN, ;READ 003475' 062140 000010 GETSTS IN,IOS 003476' 606400 740000 TRNN IOS,740000 ;ANY ERRORS 003477' 254000 003515' JRST BL1 ;NO 003500' 265440 000542' JSP T5,INICN2 003501' 260240 001652' PUSHJ P,QUEST 003502' 265040 002166' ERRPN2 003503' 447356 072750 003504' 203114 573322 003505' 617124 000000 003506' 260240 002201' PUSHJ P,P6BIT 003507' 000000 004637' DEVICE 003510' 265040 002166' ERRPN2 003511' 351000 000000 003512' 200100 000013 MOVE T2,AUXFLG ;DECTAPE FOR ERROR MESSAGE 003513' 405100 020000 ANDI T2,DTAIN 003514' 260240 001020' PUSHJ P,IOERR ;PRINT ERROR TYPE 003515' 514440 003743' BL1: HRLZ T5,IBF+1 003516' 540440 003746' HRR T5,OBF+1 003517' 201351 000177 MOVEI T4,177(T5) 003520' 251447 000000 BLT T5,(T4) ;SHIFT DATA TO OUTPUT BUFFER 003521' 075120 003735' USETO OUT,@BL0CNT 003522' 067100 000000 OUTPUT OUT, ;WRITE BLOCK 003523' 260240 000764' PUSHJ P, OUTP1 ;CHECK ERRORS IFE WCH,< 003524' 350040 003735' AOS T1,BL0CNT 003525' 305040 000003 CAIGE T1,3 PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 65-1 PIP MAC 24-APR-78 03:15 BLOCK 0 CODE 003526' 254000 003473' JRST BL4> 003527' 071100 000000 BL3: RELEASE OUT, ;IF ANY, PDL IS RESET 003530' 254000 000013' JRST PIP2> IFN BLOC0,< BLOCK0: ERRPNT > PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 66 PIP MAC 24-APR-78 03:15 MAGTAPE ROUTINES SUBTTL MAGTAPE ROUTINES ;TEST TO SEE IF MORE THAN ONE OF THE LOWEST EIGHT MTA FLAGS ;HAVE BEEN SELECTED. IF SO ERROR. OTHERWISE, IMPLEMENT ;REQUEST. T1, T3, T6 SET AT ENTRY BY INLOOK OR OUTLOOK ;TO EQUAL AUX/AUXOUT, AB/ABOUT,INIMTA/INOMTA 003531' 550100 000001 MT1: HRRZ T2,T1 ;T1 CONTAINS REQUEST 003532' 405102 777777 ANDI T2,-1(T2) ;KNOCK OFF RIGHT MOST 1 003533' 602100 000377 TRNE T2,377 003534' 254000 003701' JRST MTR1 ;PRINT ERROR MESSAGE 003535' 606040 000377 TRNN T1,MTAFLG+MTBFLG+MTWFLG+MTTFLG+MTFFLG+MTUFLG+MTDFLG+MTPFLG 003536' 254000 003562' JRST MTC1 003537' 260252 000000 PUSHJ P,(T6) ;THERE IS A REQUEST ;GO TO INIMTA/INOMTA ;PERFORM POSITIONING REQUESTS 003540' 602040 000040 TRNE T1,MTUFLG 003541' 254000 003600' JRST UNLOAD 003542' 602040 000010 TRNE T1,MTWFLG 003543' 254000 003602' JRST REWIND 003544' 602040 000020 TRNE T1,MTFFLG 003545' 254000 003605' JRST MARKEF 003546' 602040 000004 TRNE T1,MTTFLG 003547' 254000 003615' JRST SLEOT 003550' 602040 000202 TRNE T1,MTBFLG+MTPFLG ;MULTIPLE REQUESTS ALLOWED 003551' 254000 003617' JRST BSPF 003552' 602040 000101 TRNE T1,MTAFLG+MTDFLG ;MULTIPLE REQUESTS ALLOWED 003553' 254000 003653' JRST ADVF PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 67 PIP MAC 24-APR-78 03:15 MAGTAPE ROUTINES ;T1=AUX,AUXOUT. T3=AB,ABOUT. T6=INIMTA,INOMTA. 003554' 071200 000000 MTCONT: RELEAS TAPE, 003555' 606040 000040 TRNN T1,MTUFLG ;UNLOAD? 003556' 602740 000400 TRNE CALFLG,NSWTCH ;IS THERE AN INPUT DEVICE? 003557' 302500 003666' CAIE T6,INOMTA ;OUTPUT TAPE? 003560' 263240 000000 POPJ P, ;NO 003561' 254000 000013' JRST PIP2 ;YES, END OF COMMAND ;ROUTINE TO CHECK AND SET DENSITY FOR NEW DEVICE 003562' 200340 000001 MTC1: MOVE T4,T1 ;GET AUX/AUXOUT 003563' 405340 003400 ANDI T4,MT2FLG+MT5FLG+MT8FLG 003564' 405347 777777 ANDI T4,-1(T4) ;REMOVE RIGHT MOST 1 003565' 326340 003701' JUMPN T4,MTR1 ;MORE THAN 1 REQ, ERROR 003566' 201340 000001 MOVEI T4,1 ;ASCII LINE STANDARD MODE 003567' 602040 002000 TRNE T1,MT2FLG 003570' 660340 000200 TRO T4,DENS2 ;SET 200 BPI 003571' 602040 001000 TRNE T1,MT5FLG 003572' 660340 000400 TRO T4,DENS5 ;SET 556 BPI 003573' 602040 000400 TRNE T1,MT8FLG 003574' 660340 000600 TRO T4,DENS8 ;SET 800 BPI 003575' 602040 004000 TRNE T1,MTEFLG 003576' 660340 001000 TRO T4,PARE ;EVEN PARITY 003577' 263240 000000 POPJ P, PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 68 PIP MAC 24-APR-78 03:15 MAGTAPE ROUTINES ;REWIND AND UNLOAD 003600' 072200 000011 UNLOAD: MTAPE TAPE,11 003601' 254000 003554' JRST MTCONT ;REWIND ONLY 003602' 072200 000001 REWIND: MTAPE TAPE,1 003603' 072200 000000 MTWAIT: WAIT TAPE, 003604' 254000 003554' JRST MTCONT ;MARK END OF FILE 003605' 200440 004645' MARKEF: MOVE T5,MTANAM 003606' 250440 004634' EXCH T5,ODEV 003607' 072200 000003 MTAPE TAPE,3 003610' 062200 000010 GETSTS TAPE,IOS 003611' 260240 000772' PUSHJ P,OUTP3 003612' 060210 000000 SETSTS TAPE,(IOS) 003613' 202440 004634' MOVEM T5,ODEV 003614' 254000 003554' JRST MTCONT ;SKIP TO LOGICAL END OF TAPE. 003615' 072200 000010 SLEOT: MTAPE TAPE,10 003616' 254000 003603' JRST MTWAIT PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 69 PIP MAC 24-APR-78 03:15 MAGTAPE ROUTINES ;BACKSPACE MTA 1 FILE, T3=AB OR ABOUT ;AB/ABOUT = INPUT/OUTPUT DEVICE 003617' 550140 000003 BSPF: HRRZ T3,T3 ;T3=NO. OF FILES/RECORDS TO BACK 003620' 072200 000000 BSPF2: WAIT TAPE, ;WAIT 003621' 062200 000010 GETSTS TAPE,IOS 003622' 606400 004000 TRNN IOS,LDP ;AT LOAD POINT? 003623' 254000 003637' JRST BSPF3 ;NO LDP 003624' 265040 002155' ERRPNT 003625' 376315 760710 003626' 203415 764734 003627' 721014 262714 003630' 677454 520312 003631' 673104 067714 003632' 201211 541122 003633' 203376 220120 003634' 466405 120344 003635' 627436 562746 003636' 721020 000000 003637' 201440 000007 BSPF3: MOVEI T5,7 ;BSPR 003640' 606040 000200 TRNN T1,MTPFLG ;BSPR? 003641' 201440 000017 MOVEI T5,17 ;BSPF 003642' 072211 000000 MTAPE TAPE,(T5) ;BACKSPACE FILE/RECORD 003643' 365140 003620' SOJGE T3,BSPF2 ;MORE FILES/RECORDS TO BSP? ;NO, END OF LOOP 003644' 072200 000000 WAIT TAPE, 003645' 062200 000010 GETSTS TAPE,IOS 003646' 606040 000002 TRNN T1,MTBFLG ;BACKSPACE FILE? 003647' 254000 003554' JRST MTCONT ;NO 003650' 606400 004000 TRNN IOS,LDP ;IF AT LOAD POINT 003651' 072200 000016 MTAPE TAPE,16 ;(MOVE FWD. OVER EOF) 003652' 254000 003554' JRST MTCONT ;DON'T SKIP A RECORD ;ADVANCE MTA 1 FILE, T3=AB OR ABOUT ;AB/ABOUT = INPUT/OUTPUT DEVICE 003653' 554140 000003 ADVF: HLRZ T3,T3 ;T3=NO. FILES (OR REC) TO ADVANCE 003654' 201440 000006 ADVF2: MOVEI T5,6 ;ADVR 003655' 606040 000100 TRNN T1,MTDFLG ;ADVR ? 003656' 201440 000016 MOVEI T5,16 ;ADVF 003657' 072211 000000 MTAPE TAPE,(T5) ;ADVANCE FILE/RECORD 003660' 367140 003654' SOJG T3,ADVF2 ;MORE FILES/RECORDS TO ADV? ;NO, END OF LOOP 003661' 072200 000000 WAIT TAPE, ;WAIT... 003662' 062200 000010 GETSTS TAPE,IOS 003663' 622400 020000 TRZE IOS,EOFBIT 003664' 060210 000000 SETSTS TAPE,(IOS) ;END OF FILE 003665' 254000 003554' JRST MTCONT PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 70 PIP MAC 24-APR-78 03:15 MAGTAPE ROUTINES ;ROUTINE TO INITIALIZE MAGTAPE FOR INPUT OR OUTPUT 003666' 334100 004634' INOMTA: SKIPA T2,ODEV ;INIT OUTPUT DEVICE 003667' 200100 004637' INIMTA: MOVE T2,DEVICE ;INIT INPUT DEVICE 003670' 402000 004646' SETZM MTANAM+1 003671' 202100 004645' MOVEM T2,MTANAM 003672' 606740 000010 TRNN CALFLG,NEWDEV 003673' 254000 003676' JRST INMTA ;SAME DEVICE 003674' 260240 003562' PUSHJ P,MTC1 ;NEW DEVICE 003675' 552340 004644' HRRZM T4,INMTA1 ;SET MODE,DENSITY,PARITY 003676' 050200 004644' INMTA: OPEN TAPE,INMTA1 003677' 254000 001771' JRST ERR1B 003700' 263240 000000 POPJ P, ;ROUTINE TO PRINT ERROR MSG IF MORE THAN 1/8 FLAGS SET 003701' 200340 004637' MTR1: MOVE T4,DEVICE ;TENTATIVELY SET I/DEV 003702' 302500 003667' CAIE T6,INIMTA ;INPUT DEVICE? 003703' 200340 004634' MOVE T4,ODEV ;NO, SET O/DEV 003704' 265040 002155' ERRPNT 003705' 376515 767500 003706' 667035 674500 003707' 713136 172712 003710' 717516 320314 003711' 677444 000000 003712' 260240 002201' PUSHJ P,P6BIT 003713' 000000 000007 T4 003714' 254000 000013' JRST PIP2 PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 71 PIP MAC 24-APR-78 03:15 CONSTANTS/STORAGE/VARIABLES SUBTTL CONSTANTS/STORAGE/VARIABLES ;CONSTANTS IFE WCH,< 003715' 140600 004046' OKBD: POINT 6,DTON+2,23 ;FOR NO. 1K BLOCKS 003716' 140600 004054' OKB: POINT 6,ZRF+2,23> 003717' 001400 004054' DATE: POINT 12,ZRF+2,35 003720' 001400 004046' DATED: POINT 12,DTON+2,35 ;CREATION DATE /X 003721' 301406 030140 ZRO: ASCII /00000/ 003722' 010700 004376' OPTMAX: POINT 7,LBUFE-1,34 003723' 000700 004173' OPTRA: XWD 700,LBUF-1 ;INITIAL POINTER TO LINE BUFFER 003724' 432150 643240 K1: 432150643240 ;MAGIC ASCII INCREMENT BY 10 003725' 375767 737576 K3: 375767737576 ;CHARACTER MASK 077 003726' 432150 643216 K4: 432150643216 ;MAGIC ASCII INCREMENT BY 1 003727' 616051 600000 QPIP: SIXBIT /QPIP/ ;DATA FOR Q SWITCH 003730' 120000 000000 STAR: SIXBIT /*/ ;LOOK FOR *.* FILNAM.EXT 003731' 000000 000012 TWL: OCT 12 003732' 000001 000001 PP11: XWD 1,1 003733' 000001 000003 PP13: XWD 1,3 ; SANDERS SYS 003734' 000000 000145 UPROJ: EXP ^D101 ; SANDERS UNIVERSAL PROJECT IFN FTDSK,< PRPTL: POINT 9,PROTS,8 ;PROTECTION FOR RENAME PRPTD: POINT 9,DTON+2,8 PRNM: POINT 9,ZRF+2,8 ;PROT FOR /R TIME: POINT 11,ZRF+2,23 ;CREATE TIME /X TIMED: POINT 11,DTON+2,23 ;DEPOSIT CREATE TIME> PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 72 PIP MAC 24-APR-78 03:15 CONSTANTS/STORAGE/VARIABLES ;PROGRAM STORAGE AREA IFE BLOC0,< 003735' BL0CNT: BLOCK 1 ;COUNT> 003736' DTAID: BLOCK 1 ; STORE DTA SERIAL NUMBER 003737' DIRPPN: BLOCK 1 ; STORE OWNERSHIP 003740' SVIBF: BLOCK 1 ;SAVE INIT MODE (INPUT) 003741' SVOBF: BLOCK 1 ;SAVE INIT MODE (OUTPUT) 003742' IBF: BLOCK 3 ;INPUT BUFFER HEADER 003745' OBF: BLOCK 3 ;OUTPUT BUFFER HEADER 003750' OBI: BLOCK 3 ;OUTPUT BUFFER INPUT HEADER FOR DSK /Z 003753' TFI: BLOCK 3 ;CONSOLE INPUT HEADER 003756' TFO: BLOCK 3 ;CONSOLE OUTPUT HEADER 003761' SAVAC: BLOCK 5 ;SAVE SOME ACS 003766' NAMTAB: BLOCK 24 ;FOR (XD) ON DSK OR RENAME IFN FTDSK,< LOCNAM: BLOCK 1 ;POINTER FOR NAMTAB> 004012' DIRST: BLOCK 1 ;LOC. OF LAST DIR. FILE NAME REFERENCED 004013' DIRST1: BLOCK 1 ;SAVE INITIAL DIRST 004014' SQNUM: BLOCK 1 ;CURRENT SEQUENCE NUMBER 004015' DTJBFF: BLOCK 1 ;VALUE OF JOBFF AFTER CONSOLE I/O BUFFERS 004016' SVJBFF: BLOCK 1 ;INITIAL VALUE OF JOBFF 004017' SVJBF1: BLOCK 1 ;VALUE OF JOBFF AFTER OUTBUF UUO 004020' OPTR: BLOCK 1 ;CURRENT POINTER FOR LINE PRESCAN 004021' DTONSV: BLOCK 2 ;OUTPUT DIRECTORY ENTRY COPY 004023' SVPTR1: BLOCK 1 ;POINTER TO LAST PRINTING CHARACTER 004024' SVPTR2: BLOCK 1 ;POINTER TO LAST GENERATED TAB 004025' TLBRKT: BLOCK 1 ;TOTAL PARENS ON THIS LINE 004026' TOTBRK: BLOCK 1 ;TOTAL CUMULATIVE PARENS 004027' TABCT: BLOCK 1 ;SPACES TO NEXT TAB STOP 004030' SPCT: BLOCK 1 ;CONSECUTIVE SPACES COUNTER 004031' ABOUT: BLOCK 1 ;AB FOR OUTPUT UNIT 004032' AUXOUT: BLOCK 1 ;AUX FOR OUTPUT UNIT 004033' PROTS: BLOCK 1 ;SAVE PROTECTION 004034' ZCNT: BLOCK 1 ;COUNT FOR DSK ZRO REQ. 004035' CDRCNT: BLOCK 1 ;COUNT CARD COLS. 004036' PTRPT: BLOCK 1 ;STORE SEQ. NO. POINTER 004037' SYSPP: BLOCK 1 ;PP OF DEVICE SYS PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 73 PIP MAC 24-APR-78 03:15 CONSTANTS/STORAGE/VARIABLES ;THIS IS A BLOCK OF VARIABLE LOCATIONS, ZEROED AT THE START OF EACH ;PIP RUN, I.E EACH TIME PIP TYPES *. ;***** DO NOT SPLIT THIS BLOCK ***** IFN FTDSK,< RIBFIR: BLOCK 1 ;NUMBER OF WORDS IN LOOKUP PPP: BLOCK 1 ;PROJ-PROG FOR EXTENDED LOOKUP> 004040' FILNAM: BLOCK 1 ;FILE NAME FROM COMMAND SCANNER 004041' FILEX: BLOCK 1 ;EXTENSION 004042' PR: BLOCK 1 ;PROTECTION 004043' PP: BLOCK 1 ;P-P NUMBER TYPED BY USER IFN FTDSK, ;TOTAL LENGTH OF LOOKUP BLOCK ;***** END OF BLOCK ***** 004044' DTON: BLOCK 4 ;OUTPUT DIR. ENTRY 004050' DEVA: BLOCK 1 ;SAVE INPUT DEV. NAME 004051' NO.: BLOCK 1 ;GENERATE FILE NAMES 004052' ZRF: BLOCK 4 ;LOOKUP FILE NAMES 004056' MTAREQ: BLOCK 1 ;STORE MTA REQUESTS 004057' COMEOF: BLOCK 1 ;EOF INDICATOR 004060' COMBUF: BLOCK ^D41 ;COMMAND BUFFER. ALLOWS 205 CHARS. 004131' COMCNT: BLOCK 1 ;COMBUF CHARS COUNT 004132' COMPTS: BLOCK 1 ;POINTER FOR STORING/EXTRACTING CS 004133' AUX: BLOCK 1 ;COPT AUXFLG (MTA) IFN FTDSK,< FNPPN: BLOCK 1 ;RESERVE #P-P FNPPNS: BLOCK 1 ;COPY FNPPN FOR LATEST NON-SYS #P-P> 004134' ESWTCH: BLOCK 1 ;-1 INDICATES END OF LINE 004135' XNAME: BLOCK 1 ;-1 INDICATES SCAN OVERSHOOT WITH A NULL NAME ;0 INDICATES NO SCAN OVERSHOOT ;CONTAINS OVERSHOOT NAME IF NOT NULL 004136' AB: BLOCK 1 ;MTA VALUE SWITCHES ;THIS IS THE END OF THE INIT. ZEROED BLOCK. PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 74 PIP MAC 24-APR-78 03:15 CONSTANTS/STORAGE/VARIABLES 004137' 266254 167132 MONTH: ASCII /-Jan-/ 004140' 266154 561132 ASCII /-Feb-/ 004141' 266334 171132 ASCII /-Mar-/ 004142' 266036 071132 ASCII /-Apr-/ 004143' 266334 174532 ASCII /-May-/ 004144' 266256 567132 ASCII /-Jun-/ 004145' 266256 566132 ASCII /-Jul-/ 004146' 266036 563532 ASCII /-Aug-/ 004147' 266474 570132 ASCII /-Sep-/ 004150' 266374 372132 ASCII /-Oct-/ 004151' 266355 773132 ASCII /-Nov-/ 004152' 266114 561532 ASCII /-Dec-/ 004153' 440700 004137' MNPT: POINT 7,MONTH 004154' PDL: BLOCK 20 ;PUSHDOWN LIST 004174' LBUF: BLOCK 204 ;LINE BUFFER. ALLOW FOR FORTRAN DATA 004377' LBUFE==.-1 004400' DBUF: BLOCK 204 ;DIRECTORY BUFFER 004604' BLOCK 27 ; ALLOW ENOUGH FOR DTA PROT. 004633' OMOD: BLOCK 1 ;OUTPUT DEVICE MODE, STATUS 004634' ODEV: BLOCK 2 ;OUTPUT DEVICE NAME ;BUFFER HEADER(S) LOC 004636' ININI1: BLOCK 1 ;INPUT DEVICE 004637' DEVICE: BLOCK 2 004641' DEVERR: BLOCK 1 004642' DERR2: BLOCK 2 004644' INMTA1: BLOCK 1 004645' MTANAM: BLOCK 2 004647' MATCH: BLOCK 2 ;NAME AND EXT FOR /L OR (RX) 004651' RENSN: BLOCK 1 ;-1 IF RENAME MESSAGE SEEN PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 75 PIP MAC 24-APR-78 03:15 RIM LOADER SUBTTL RIM LOADER IFE RIMSW,< 004652' 265040 002155' RIMTB: ERRPNT 004653' 375005 754500 004654' 717575 172306 004655' 641015 770350 004656' 647375 620334 004657' 677504 060754 004660' 607235 460704 004661' 663124 072320 004662' 647464 060746 004663' 717135 561330 004664' 745020 000000 XLIST> LIST IFE FTDSK,< 004665' VAR 004665' LOWTOP: 000000' END PIP1> DTBLK UNASSIGNED, DEFINED AS IF EXTERNAL DTDEV UNASSIGNED, DEFINED AS IF EXTERNAL HEDL1 UNASSIGNED, DEFINED AS IF EXTERNAL PROTO UNASSIGNED, DEFINED AS IF EXTERNAL ?5 ERRORS DETECTED PROGRAM BREAK IS 004714 10K CORE USED PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 81 PIP MAC 24-APR-78 03:15 SYMBOL TABLE AB 004136' ABCHK 000466' ABOUT 004031' ADVF 003653' ADVF2 003654' ALLCLF 000037 SPD ALT175 000175 SPD ALT176 000176 SPD ALTMOD 000033 SPD ASTFLG 000040 SPD AUX 004133' AUXFLG 000013 AUXOUT 004032' BIGBLK 040000 SPD BL0CNT 003735' BL1 003515' BL3 003527' BL4 003473' BLKIN 000006 SPD BLOC0 000000 SPD BLOCK0 003451' BMOD 000002 SPD BSPF 003617' BSPF2 003620' BSPF3 003637' CAL5 002315' CAL6 002317' CALFLG 000017 CDRBIT 100000 SPD CDRCNT 004035' CDRFLG 000040 SPD CDRIN 000100 SPD CHECK 002152' CHECK1 002132' CHECK2 002135' CHKFLG 000040 SPD CHR 000004 CLRBUF 000553' COLON 000072 SPD COMASK 000044' COMBUF 004060' COMCNT 004131' COMEOF 004057' COMERR 001135' COMMA 000054 SPD COMPRO 000056' COMPRP 000056' COMPTR 000055' COMPTS 004132' COMSTO 000037' CON 000001 SPD COPY1 002241' COPY1A 002225' PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 81-1 PIP MAC 24-APR-78 03:15 SYMBOL TABLE COPY2A 002311' COPY2B 002313' COPY3 002323' COPY3B 002321' COPY4 002305' COPY5 002300' COPY6 002252' COPY6A 002250' COPY6B 002254' COPY6C 002266' CORE 047000 000011 CPOPJ 001711' CPOPJ1 001707' CPOPJZ 001710' CR 000015 SPD CRLF 003205' CZ 000032 SPD DATE 003717' DATE 047000 000014 DATED 003720' DATO2 003262' DATOUT 003224' DBUF 004400' DEL 000177 SPD DELE1 002443' DELE2 002504' DELE3 002466' DELE5 002513' DENS2 000200 SPD DENS5 000400 SPD DENS8 000600 SPD DERR2 004642' DERR2A 001166' DERR2B 001165' DESCR1 000464' DESCRP 000451' DEV 000100 SPD DEVA 004050' DEVCHR 047000 000004 DEVER 000526' DEVER1 000525' DEVER2 000525' DEVERR 004641' DEVICE 004637' DEVPPN 047000 000055 DEVTST 000506' DFLG 000010 SPD DIR 000005 SPD DIRPPN 003737' DIRST 004012' DIRST1 004013' DISK30 000000 SPD PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 81-2 PIP MAC 24-APR-78 03:15 SYMBOL TABLE DISPTA 001436' DISPTB 001420' DOUT 000015 DOUT1 000016 DSKBIT 200000 SPD DSKCHR 047000 000045 DSKIN 040000 SPD DSKOUT 010000 SPD DTABIT 000004 SPD DTADI1 002702' DTADIR 002701' DTADR 002460' DTAID 003736' DTAIN 020000 SPD DTALS1 003043' DTALS2 003050' DTALS3 003052' DTALS4 003055' DTALST 003023' DTAOUT 004000 SPD DTBLK 003337' UXT DTCH1 003277' DTCH2 003272' DTCHEC 003271' DTCLR 002212' DTCOPY 002224' DTD1 002456' DTD5 002544' DTD6 002543' DTDELE 002432' DTDEV 003336' UXT DTDIR 000007 SPD DTJBFF 004015' DTON 004044' DTONSV 004021' DTPDIR 003017' DTRNAM 002522' DTRNM1 002536' DVSWTH 000200 SPD E10A 002053' E10B 001752' EOFBIT 020000 SPD EOTBIT 002000 SPD ERR1 001767' ERR10 001751' ERR1A 001770' ERR1B 001771' ERR2 002076' ERR2A 002107' ERR3 002003' ERR3A 002005' ERR3AA 002007' ERR4 002024' PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 81-3 PIP MAC 24-APR-78 03:15 SYMBOL TABLE ERR4A 002033' ERR4B 002033' ERR5 002066' ERR5A 002060' ERR6 002040' ERR6A 002040' ERR6B 002045' ERR7A 002115' ERR8 002122' ERR9 001762' ESQ 040000 SPD ESWTCH 004134' EXIT 047000 000012 FF 000014 SPD FFLG 000020 SPD FIL1 003410' FIL11 003365' FIL2 003430' FIL3 003414' FIL4 003443' FIL5 003445' FILEX 004041' FILNAM 004040' FILTYP 003353' FLAG 000006 FN.EX 001146' FNEX 000001 SPD FNSET 002746' FNSET1 002762' FRSTIN 000400 SPD FTDSK 000000 SPD GET 001462' GET1 001557' GET1A 001566' GET2 001532' GET4 001553' GET5 001521' GET7 001666' GET7B 001712' GET7C 001673' GETA2 001727' GETA3 001717' GETA5 001724' GETA5A 001747' GETA7 001735' GETBUF 001404' GETCOM 001175' GETDEC 001236' GETEN2 001415' GETN1 001240' PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 81-4 PIP MAC 24-APR-78 03:15 SYMBOL TABLE GETN2 001306' GETNUD 001305' GETNUM 001237' GETOCT 001235' GETPC1 001506' GETPC2 001544' GETPC3 001542' GETPC4 001476' GETPPN 003333' GETPPN 047000 000024 GETT10 001206' GETT11 001217' GETT2 001371' GETT3 001252' GETT3A 001276' GETT3B 001274' GETT4 001372' GETT5 001320' GETT5A 001321' GETT6 001300' GETT7 001327' GETT8 001335' GETT9 001223' GETTA 001352' GETTAB 047000 000041 GETTIN 001365' GETUPJ 001232' GFLG 000200 SPD HEDL1 004706' UXT HPAGE 000020 SPD IBF 003742' IBFLG 000400 SPD IFLG 000100 SPD IN 000003 SPD INBIT 000002 SPD INERR 001620' INFO 002711' INFO1 002730' INFO2 002735' INFO3 002743' INFOFL 000100 SPD INHIB 000001 SPD INICN1 000541' INICN2 000542' INICON 001410' INIMTA 003667' ININI1 004636' ININIT 000426' INLOOK 000204' INLUK1 000217' INMTA 003676' INMTA1 004644' INOMTA 003666' PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 81-5 PIP MAC 24-APR-78 03:15 SYMBOL TABLE INP 001616' IOERR 001020' IOERRG 001114' IOERRN 001107' IOS 000010 JFLG 001000 SPD JOBFF 000547' EXT JOBREL 000437' EXT JOBSA 000007' EXT JOBSTR 047000 000047 K 000000 SPD K1 003724' K3 003725' K4 003726' LA 000137 SPD LBUF 004174' LBUFE 004377' SPD LDP 004000 SPD LF 000012 SPD LFLG 000020 SPD LINE 000001 SPD LISTTY 002000 SPD LOOK 002566' LOOK01 002570' LOOK1 002655' LOOK2 002623' LOOK3 002630' LOOK4 002635' LOOK5 002635' LOOK6 002572' LOOK6A 002614' LOOK6C 002616' LOOK6D 002620' LOOK7A 002640' LOOK7B 002604' LOOK7C 002650' LOOK8 002607' LOOKA 002767' LOOKB 003006' LOOKC 003014' LOOKF 003002' LOW 000000' LOWTOP 004665' LPTBIT 040000 SPD LPTOUT 000010 SPD M1 000140' M2 000132' M3 000107' M3A 000111' M4 000154' M5 000173' MAIN1 000411' PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 81-6 PIP MAC 24-APR-78 03:15 SYMBOL TABLE MAIN2 000421' MAINA1 000031' MAINA2 000275' MAINA3 000301' MAINA4 000307' MAINA5 000323' MAINB 000415' MAINC 000073' MARKEF 003605' MATCH 004647' MATEX 000002 SPD MATFN 000004 SPD MNPT 004153' MONTH 004137' MORCOR 000262' MPC2 002350' MSTIME 047000 000023 MT1 003531' MT2FLG 002000 SPD MT5FLG 001000 SPD MT8FLG 000400 SPD MTABIT 000020 SPD MTAFLG 000001 SPD MTAIN 000400 SPD MTANAM 004645' MTAOUT 000200 SPD MTAREQ 004056' MTBFLG 000002 SPD MTC1 003562' MTCONT 003554' MTDFLG 000100 SPD MTEFLG 004000 SPD MTFFLG 000020 SPD MTFLG 200000 SPD MTPFLG 000200 SPD MTPTC1 002362' MTPTCR 002337' MTR1 003701' MTTFLG 000004 SPD MTUFLG 000040 SPD MTWAIT 003603' MTWFLG 000010 SPD NAME 000557' NAMTAB 003766' NEWDEV 000010 SPD NEWFIL 000020 SPD NEWPP 000020 SPD NM1 000566' NM10 000654' NM11 000661' NM12 000664' NM13 000666' NM14 000670' PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 81-7 PIP MAC 24-APR-78 03:15 SYMBOL TABLE NM15 000672' NM16 000700' NM2 000567' NM3 000571' NM4 000576' NM4A 000602' NM5 000606' NM5A 000613' NM5B 000673' NM6 000633' NM7 000640' NM8 000643' NM9 000646' NO. 004051' NOMORE 000020 SPD NSMOD 000040 SPD NSPROT 000002 SPD NSWTCH 000400 SPD OBF 003745' OBI 003750' ODEV 004634' OFLG 000001 SPD OKB 003716' OKBD 003715' OKBLK0 002422' OKBLKS 002412' OMOD 004633' OMOD1 000251' OMODE 000223' OMODER 000267' ONEOUT 000040 SPD OPTMAX 003722' OPTR 004020' OPTRA 003723' OSFLG 400000 SPD OUT 000002 SPD OUTBIT 000001 SPD OUTCH1 000711' OUTCH2 003307' OUTCH3 003320' OUTCHK 003305' OUTDC1 003235' OUTDE4 003252' OUTDEC 003260' OUTLB1 000712' OUTLB2 000745' OUTLB3 000754' OUTLBA 000717' OUTLBF 000707' OUTLOO 000200' OUTOCT 003236' OUTP 000762' OUTP1 000764' PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 81-8 PIP MAC 24-APR-78 03:15 SYMBOL TABLE OUTP3 000772' OUTP4 000770' P 000005 P1 000010' P6BIT 002201' P6BIT1 002203' P6BIT2 002207' PARE 001000 SPD PCHTAB 001546' PCONV 000010 SPD PDIR1 003101' PDIR1B 003070' PDIR2 003211' PDIR21 003220' PDIR2A 003213' PDIR3 003141' PDIR3A 003177' PDIR3B 003174' PDIR4 003107' PDIR4A 003130' PDIR4B 003131' PDIR6 003200' PDIR7 003221' PDIR8 003075' PDL 004154' PERIOD 000056 SPD PFLG 000004 SPD PICUP 002662' PICUP2 002662' PICUP4 002665' PIP 000012' PIP1 000000' PIP2 000013' PIP2A 000013' PIP2B 000023' PJOB 047000 000030 PP 004043' PP11 003732' PP13 003733' PPTIN 200000 SPD PPTOUT 400000 SPD PR 004042' PRECOP 002220' PRETXT 002155' PRN 003243' PRNUMA 003237' PROTK 000476' PROTK1 000504' PROTO 003173' UXT PROTS 004033' PSCAN 000343' PSCAN1 000376' PSCAN2 000352' PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 81-9 PIP MAC 24-APR-78 03:15 SYMBOL TABLE PSCAN3 000351' PSCAN4 000374' PSCAN5 000407' PSCAN6 000404' PSCANA 000333' PSCANB 000326' PTEXT 002155' PTEXT1 002167' PTEXT2 002166' PTPBIT 000400 SPD PTRBIT 000200 SPD PTRPT 004036' PUT 000756' PUTCON 002175' QFLG 000001 SPD QPIP 003727' QUEST 001652' QUEST2 001662' RBSIZ 000005 SPD READ1 002000 SPD REDFLG 000001 SPD RENAME 002553' RENSN 004651' RESET 047000 000000 REWIND 003602' RFLG 000100 SPD RIBSTS 000017 SPD RIMFLG 000002 SPD RIMSW 000000 SPD RIMTB 004652' RSDCFL 000200 SPD RUN 047000 000035 RXFLG 020000 SPD SAVAC 003761' SBIN 000004 SPD SLEOT 003615' SNI 100000 SPD SPACE 000040 SPD SPCT 004030' SPMOD 001000 SPD SPOK 020000 SPD SQMOD 000200 SPD SQNUM 004014' SR2 002371' SSWTCH 001000 SPD STAR 003730' STS 000400 SPD SUS 010000 SPD SVER 000005 SPD SVIBF 003740' SVJBF1 004017' SVJBFF 004016' PIP V.030 MOD SANDERS/DBP 19-AUG-71 MACRO 10 05:52 24-APR-78 PAGE 81-10 PIP MAC 24-APR-78 03:15 SYMBOL TABLE SVOBF 003741' SVPTR1 004023' SVPTR2 004024' SYSFLG 000002 SPD SYSLST 000004 SPD SYSPP 004037' T1 000001 T2 000002 T3 000003 T4 000007 T5 000011 T6 000012 T7 000014 TAB 000011 SPD TABCT 004027' TABOUT 000755' TABSP 000010 SPD TAPE 000004 SPD TBMOD 000004 SPD TFI 003753' TFO 003756' TLBRKT 004025' TMPCOR 047000 000044 TMPI 004000 SPD TMPO 010000 SPD TOTBRK 004026' TTYBIT 000010 SPD TTYIN 001000 SPD TTYOUT 100000 SPD TTYZ 002376' TWL 003731' TXTA 001062' TXTB 001066' TXTC 001074' TXTC1 001100' TXTD 001042' TXTD1 001047' TXTD2 001055' UNLOAD 003600' UPROJ 003734' UTPCLR 047000 000013 VPIP 000030 SPD WAIT 072000 000000 WCH 000000 SPD WRTLOK 400000 SPD XFLG 002000 SPD TTTTTTTTTTTTTTT EEEEEEEEEEEEEEE NNN NNN DDDDDDDDDDDD MMM MMM PPPPPPPPPPPP TTTTTTTTTTTTTTT EEEEEEEEEEEEEEE NNN NNN DDDDDDDDDDDD MMM MMM PPPPPPPPPPPP TTTTTTTTTTTTTTT EEEEEEEEEEEEEEE NNN NNN DDDDDDDDDDDD MMM MMM PPPPPPPPPPPP TTT EEE NNN NNN DDD DDD MMMMMM MMMMMM PPP PPP TTT EEE NNN NNN DDD DDD MMMMMM MMMMMM PPP PPP TTT EEE NNN NNN DDD DDD MMMMMM MMMMMM PPP PPP TTT EEE NNNNNN NNN DDD DDD MMM MMM MMM PPP PPP TTT EEE NNNNNN NNN DDD DDD MMM MMM MMM PPP PPP TTT EEE NNNNNN NNN DDD DDD MMM MMM MMM PPP PPP TTT EEEEEEEEEEEE NNN NNN NNN DDD DDD MMM MMM PPPPPPPPPPPP TTT EEEEEEEEEEEE NNN NNN NNN DDD DDD MMM MMM PPPPPPPPPPPP TTT EEEEEEEEEEEE NNN NNN NNN DDD DDD MMM MMM PPPPPPPPPPPP TTT EEE NNN NNNNNN DDD DDD MMM MMM PPP TTT EEE NNN NNNNNN DDD DDD MMM MMM PPP TTT EEE NNN NNNNNN DDD DDD MMM MMM PPP TTT EEE NNN NNN DDD DDD MMM MMM PPP TTT EEE NNN NNN DDD DDD MMM MMM PPP TTT EEE NNN NNN DDD DDD MMM MMM PPP TTT EEEEEEEEEEEEEEE NNN NNN DDDDDDDDDDDD MMM MMM PPP TTT EEEEEEEEEEEEEEE NNN NNN DDDDDDDDDDDD MMM MMM PPP TTT EEEEEEEEEEEEEEE NNN NNN DDDDDDDDDDDD MMM MMM PPP LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSSSSSSSSSSS TTTTTTTTTTTTTTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSSSSSSSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLL SSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT LLLLLLLLLLLLLLL SSSSSSSSSSSS TTT Request created: 24-April-1978 05:53:58 File: DSKB1 :TENDMP.LST [8,296] Created: 20-April-1967 05:53:00 Printed: 24-April-1978 05:53:42 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:1142 File will be deleted after printing TENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032 MACRO 10 05:53 24-APR-78 PAGE 1 TENDMP MAC 24-APR-78 14:35 TD10 VERSION TITLE TENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032 IFNDEF REL, ;0 PAPER TAPE, 1 RELOCATABLE BINARY IFNDEF MAGT, ;0 DTAPE, 1 MTAPE IFN MAGT,< ; MAGTAPE UTILITY ROUTINE - COURTSEY DATALINE SYSTEMS J HANCOCK > IFNDEF MODE, ;0 IS TD10, 1 IS 551/136 IFNDEF CORE, ;NUMBER OF 8K MEMORY BLOCKS IFE MODE, IFN MODE, IFE REL,< IFE MAGT, IFN MAGT,> 000210 UTC=210 000214 UTS=214 000200 DC=200 000320 DTC=320 000324 DTS=324 000000 F=0 ;MUST BE 0. USED BY JRA'S 000002 A=2 ;MISC TEMP. HOLDS 136 CONO INDEX IN UWAIT 000001 B=1 ;TEMP. HOLDS BLOCK # COMPUTATION IN SEARCH 000003 C=3 ;HOLDS BITS FOR DECTAPE CONO DURING I/O 000004 D=4 ;HOLDS POINTERS FOR AOBJN'S THROUGH CORE 000005 E=5 ;HOLDS COUNT OF WORDS IN CURRENT DT BLOCK 000006 P=6 ;PC FOR JSP'S 000007 CKS=7 ;HAD BEEN CHECKSUM IN MACDMP 000010 FILN=10 ;NUMBER OF FILE IN DIRECTORY, 1 TO 26 OCTAL 000011 BLKNO=11 ;BLOCK NUMBER SEARCHED FOR ON TAPE 000012 WRITE=12 ;MULTI-STATE FLAG FOR DEFINING I/O OPERATION ;1=D 0=K -1=ELSE 000013 PNTR=13 ;POINTER TO BYTE TABLE IN DIRECTORY 000014 CH=14 ;HOLDS 6BIT CHARACTER OF COMMAND, OR -1 000015 Q=15 ;ANOTHER JSP AC 000016 G=16 ;RARELY USED VERY TEMP 000017 CT=17 ;COUNT OF WORDS TO DUMP 077777 COMPTR=BEGR+377 ;COMMAND POINTER, IF SUPPLIED 077175 LOZAD=BEGR-203 ;WHEN CORE IS CLEARED, IT ;IS FROM 40 THRU LOZAD 000020 LOW=20 ;FIRST LOCATION CONSIDERED FOR DUMPING 077175 HIGH=BEGR-203 ;LAST LOCATION CONSIDERED FOR DUMPING ;ZEROED AT BEG THESE DAYS 077176 FOOF=BEGR-202 ;NEEDED FOR ZERO CORE SEARCH, ZEROED AT BEG1 077177 TAB=BEGR-201 ;FILE DIRECTORY 077377 LINK=BEGR-1 ;0-17=LINK, 18-27=FBN, 29-35=WC 077400 IFE REL,*20000>> IFN MAGT,*20000> IOWD LAST-BEGR+1,BEGR>> TENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032 MACRO 10 05:53 24-APR-78 PAGE 2 TENDMP MAC 24-APR-78 14:35 TD10 VERSION ;INITIAL ENTRY IS AT BEGR, UNLESS A COMMAND POINTER IS ;SUPPLIED IN COMPTR. IN THAT CASE, ENTRY IS AT BEGR+1 077400 402000 077777 BEGR: SETZM COMPTR ;CLEAR ANY JUNK IN COMMAND POINTER 077401 700200 635550 CONO 635550 ;I/O RESET, ETC. 077402 265300 077467 BEG: JSP P,CRR ;TYPE A CR-LF 077403 201200 077750 MOVEI D,SPNT-2 ;PREPARE TO REMOVE AOBJN POINTERS 077404 403100 077176 BEG1: SETZB A,FOOF ;CLEAR A TO PUT IN CORE, CLEAR ;FOOF FOR THE NEXT ZERO CORE SEARCH 077405 250104 000002 EXCH A,2(D) ;REMOVE HEADER LIST 077406 253100 077406 AOBJN A,. ;COUNT THROUGH TO NEXT HEADER 077407 201202 777777 MOVEI D,-1(A) ;ACCOUNT FOR OVERSHOOT IN AOBJN 077410 326200 077404 JUMPN D,BEG1 ;IF WE DIDNT AOBJN A 0, GO FOR NEXT HDR 077411 200540 077753 MOVE PNTR,[XWD 500,TAB-1] ;5 BIT BYTES IN DIRECTORY 077412 403600 000000 SETZB CH,F 077413 475500 000215 CRCH: SETOI WRITE,215 ;USED FOR CARRET TYPEOUT 077414 403140 077175 TYI: SETZB C,HIGH ;HOPEFULLY HIGH IS TEMPORARY 077415 403040 000005 SETZB B,E ;NAME INITIALIZING 077416 665040 400000 TLOA B,400000 ;NULL NAME IS "@. " 077417 201240 000002 SPACE: MOVEI E,C-1 ;EXTENSION INTO C 077420 505240 020600 HRLI E,20600 ;FAKE OUT END TEST OF BYTE PTR ;STOP TAPE DRIVE IFN MODE, 077421 732200 400000 IFE MODE, 077422 134120 077400 NEXT: ILDB A,@BEGR ;GIVES A 0 UNLESS COMMAND POINTER SUPPLIED ;RH OF NEXT IS USED AS A CONSTANT 077423 475400 000207 BELL: SETOI FILN,207 ;INITIALIZATION FOR SEARCH 077424 403440 000017 SETZB BLKNO,CT ; " 077425 402000 077377 SETZM LINK 077426 326100 077433 JUMPN A,RCH ;JUMP IF COMMAND READ FROM CORE 077427 712340 000040 CONSO TTY,40 ;TYPEIN FLAG? 077430 254000 077427 JRST .-1 ;NO,WAIT 077431 712040 000002 DATAI TTY,A ;GET TYPED IN CHARACTER 077432 265300 077471 JSP P,TYO ;ECHO IT (WITH PARITY) 077433 405100 000177 RCH: ANDI A,177 ;STRIP OFF PARITY 077434 306100 000177 CAIN A,177 ;RUBOUT? 077435 254000 077400 JRST BEGR ;YES. RESTART TENDMP 077436 302100 000033 CAIE A,33 ;NEW ALTMODE? 077437 301100 000175 CAIL A,175 ;OR 175 OR 176 ALTMODES? 077440 254000 077501 JRST ALTTST ;YES, SOME ALTMODE. 077441 301100 000140 CAIL A,140 ;LOWER CASE CHARACTER? 077442 620100 000040 TRZ A,40 ;YES. CHANGE TO UPPER CASE 077443 275100 000040 SUBI A,40 ;CONVERT TO SIXBIT 077444 321100 077504 JUMPL A,CARRET ;ANY CONTROL CHARACTER 077445 322100 077417 JUMPE A,SPACE ;CHAR WAS 40 077446 603240 770000 NEXT1: TLNE E,770000 ;NO MORE THAN SIX CHARS 077447 136100 000005 IDPB A,E ;GOES INTO AC1 = B 077450 254000 077422 JRST NEXT ;GET ANOTHER CHARACTER TENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032 MACRO 10 05:53 24-APR-78 PAGE 3 TENDMP MAC 24-APR-78 14:35 TD10 VERSION ;HERE ON JUMP BLOCK DURING LOADS, OR NUMBER>7 ALT 077451 JBLK: ;STOP TAPE DRIVE IFN MODE, 077451 732200 400000 IFE MODE, 077452 542200 077454 HRRM D,SADR ;SAVE STARTING ADDRESS 077453 326600 077402 JUMPN CH,BEG ;IF NOT LOADGO COMMAND 077454 254000 077402 SADR: JRST BEG ;CURRENT S.A. 077455 LOADS: ;HERE TO LOAD TAPE TO CORE 077455 201200 077176 MOVEI D,LOZAD+1 ;FIRST LOC NOT TO ZERO 077456 402000 000040 SETZM 40 ;A "FEATURE" 077457 200140 077754 MOVE C,[XWD 40,41] ;PREPARE TO CLEAR CORE. 077460 606600 000003 TRNN CH,3 ;SKIP ON M,N NOT ON L,T,@ 077461 251144 777777 BLT C,-1(D) ;ZERO CORE 077462 265640 077557 LOAD: JSP Q,LODUMP ;START READING FILE. LODUMP PROCESSES ;ONE HEADER AND ITS DATA 077463 254000 077462 JRST LOAD ;IF OK, GET NEXT BLOCK.(IF NONE, ;LODUMP RETURNS TO JBLK.) 077464 336240 000012 DELE: SKIPN E,WRITE ;SKIP IF NOT IN THE K PHASE OF A D COMMAND. ;OR A K COMMAND ;ALSO, SET E =0, SO SEARCH HAPPENS IN RBLK 077465 344500 077713 CLS1: AOJA WRITE,CLSTP ; 0 TO 1. GO DUMP OUT DIRECTORY. 077466 334300 077422 ERR: SKIPA P,NEXT ;SET TO RETURN TO BEGR 077467 334100 077413 CRR: SKIPA A,CRCH ;LIKE HRROI A,215 AND SKIPA 077470 334100 077423 SKIPA A,BELL ;GET A BELL CHARACTER 077471 336000 077777 TYO: SKIPN COMPTR ;DONT TYO IF NO TYI, UNLESS ERR 077472 712140 000002 DATAO TTY,A ;TYPE OUT 077473 712300 000020 CONSZ TTY,20 ;WAIT FOR TTY TO FINISH 077474 254000 077473 JRST .-1 ;NOT YET 077475 302100 000215 CAIE A,215 ;IF CR TYPED IN, 077476 325106 000000 JUMPGE A,(P) ;OR SIGN BIT OF CHAR ON,(SEE CRR) 077477 201100 000012 MOVEI A,12 ;APPEND A LINEFEED 077500 254000 077471 JRST TYO ;GO TYPE LF TENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032 MACRO 10 05:53 24-APR-78 PAGE 4 TENDMP MAC 24-APR-78 14:35 TD10 VERSION 077501 607040 004040 ALTTST: TLNN B,4040 ;IF ALPHA CHARACTERS, DONT GET CH 077502 135600 000005 LDB CH,E ;LAST CH BEFORE ALT, -40 077503 326600 077667 JUMPN CH,ALTMD ;IF CH NOT NULL, GOT PROCESS ALTMODE 077504 205400 777752 CARRET: MOVSI FILN,-26 ;FILE NAME SPECIFIED. FIRST THING TO ;DO IS LOOK IT UP IN DIRECTORY 077505 336010 077322 LUP: SKIPN TAB+123(FILN) ;SEARCH FOR FREE FILE 077506 332450 077350 SKIPE BLKNO,TAB+151(FILN) ;CHECK BOTH WORDS 077507 634440 000011 TDZA BLKNO,BLKNO ;ENSURE CLEAR BLOCK NUMBER 077510 542400 077517 HRRM FILN,FREE ;SAVE NUMBER OF A FREE FILE 077511 510710 077350 HLLZ G,TAB+151(FILN) ;ONLY CHECK LEFT OF 2ND WD 077512 316050 077322 CAMN B,TAB+123(FILN) ;SEARCH FOR TYPED-IN FILE 077513 312140 000016 CAME C,G ;BOTH WORDS 077514 253400 077505 AOBJN FILN,LUP ;NOT THIS ONE. KEEP LOOKING 077515 321400 077522 JUMPL FILN,BEG69 ;IF FILE FOUND, JUMP 077516 323500 077466 JUMPLE WRITE,ERR ;IF NOT FOUND, BETTER BE DUMP 077517 201400 077517 FREE: MOVEI FILN,. ;DUMP & NOT FOUND, MAKE ENTRY WHERE FREE ;(ADDRESS MODIFIED ABOVE) 077520 332010 077322 SKIPE TAB+123(FILN) ;MAKE SURE HOLE AVAILABLE 077521 254000 077466 JRST ERR ;NO FREE SLOTS 077522 201410 000001 BEG69: MOVEI FILN,1(FILN) ;FILN IS FILE #+1; CLR LH 077523 321500 077455 JUMPL WRITE,LOADS ;ALL LOAD INSTRUCTIONS IFE MAGT,< 077524 336000 000012 SKIPN WRITE ;DELETE? (K COMMAND) 077525 403040 000003 SETZB B,C ;YES, KILL FILE 077526 202050 077321 MOVEM B,TAB+122(FILN) ;CLEAR IF DELE, ENTER IF NEW DUMP 077527 512150 077347 HLLZM C,TAB+150(FILN) ;BOTH WORDS ;FALL INTO DUMP ROUTINE ;WHICH IS A NO-OP FOR K TENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032 MACRO 10 05:53 24-APR-78 PAGE 5 TENDMP MAC 24-APR-78 14:35 TD10 VERSION ;DUMP WRITES OUT CORE ONTO TAPE ;DUMP THRU DUMP2-1 SETS UP POINTERS TO NON-ZERO CORE AREAS. THESE ;AOBJN POINTERS ARE CALLED "HEADERS", AND PRECEDE THE DATA WHEN ;THE TAPE IS WRITTEN. ;THE FIRST HEADER IS KEPT IN SPNT. SUCCESIVE HEADERS GO INTO THE FIRST ;ZERO WORD FOLLOWING THE BLOCK CORRESPONDING TO THE PREVIOUS HEADER. ;AFTER THE LAST NON-ZERO BLOCK IS (BY DEFINITION) A ZERO, WHICH ;TERMINATES THE HEADER LIST. THIS WORD MAY BE LOCATION FOOF (37176) IF ;CORE WAS FILLED UP TO THE BASE OF TENDMP. 077530 DUMP: ;HERE ON D,K. (BLKN)=0, FILN SET UP 077530 210100 077755 MOVN A,[XWD HIGH-LOW-1,-LOW+1] ;COUNTER TO EXAMINE ;CORE FOR BLOCKS OF 0 077531 201340 077751 MOVEI CKS,SPNT-1 ;FIRST HEADER GOES INTO SPNT 077532 336002 000001 DMP1: SKIPN 1(A) ;FIND SOME NON-ZERO CORE 077533 253100 077532 AOBJN A,.-1 ;ZERO. KEEP LOOKING. 077534 202100 000004 MOVEM A,D ;SAVE ADR 077535 336002 000001 SKIPN 1(A) ;FIND SOME ZERO CORE 077536 332002 000002 SKIPE 2(A) ;DON'T MAKE NEW BLOCK FOR 1 ZERO 077537 253100 077535 AOBJN A,.-2 ;NON-ZERO. KEEP LOOKING 077540 274200 000002 SUB D,A ;GET -COUNT IN BOTH HALVES OF D 077541 275744 777777 SUBI CT,-1(D) ;COUNT N WORDS DATA, 1 HDR 077542 271202 000000 ADDI D,(A) ;GET F.A.-1 IN RH OF D 077543 202207 000001 MOVEM D,1(CKS) ;SAVE HEADER 077544 325200 077546 JUMPGE D,.+2 ;ON DATA GROUPS, 077545 200340 000002 MOVE CKS,A ;GET THE HEADER ;F.A.+W.C. IS ADR OF NEXT HEADER ;I.E., FIRST 0 AFTER NON-ZERO BLOCK 077546 321100 077532 JUMPL A,DMP1 ;LOOP IF MORE CORE 077547 242340 000002 LSH CKS,2 ;SHIFT CORE SIZ FOR DIR 077550 333000 000012 SKIPLE WRITE ;IF DUMPING, SET JOBREL 077551 542350 077347 HRRM CKS,TAB+150(FILN) ;PUT IN DIR 077552 201200 077751 DMP2: MOVEI D,SPNT-1 ;SET UP TO FOLLOW THE HEADERS. 077553 201757 000001 MOVEI CT,1(CT) ;CLR LH, COUNT JBLK 077554 200204 000001 DMP3: MOVE D,1(D) ;GET HEADER 077555 325200 077566 JUMPGE D,THRU ;IF NULL HEADER FOUND 077556 201640 077554 MOVEI Q,DMP3 ;Q:= DMP3 AS A RETURN AFTER AOBJN > IFN MAGT,< JRST ERR ;HOW DID WE GET HERE? DLS*** ;DUMP WRITES OUT CORE ONTO MAGNETIC TAPE ;DUMP WRITES OUT A CORE IMAGE ON MAGNETIC TAPE WITHOUT ;ZERO COMPRESSION. THE RECORDS ARE 200(OCTAL) WORDS IN LENGTH ;AND BEGIN WITH WORD ZERO. BEFORE STARTING THE TAPE IS REWOUND. ;IT ASSUMES MTA0, AT LEAST FOR NOW. MTC= 340 MTS= 344 DUMP: CONO MTC,1000 ;REWIND CONSO MTS,300000 ;WAIT FOR BOT OR REWINDING TENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032 MACRO 10 05:53 24-APR-78 PAGE 5-1 TENDMP MAC 24-APR-78 14:35 TD10 VERSION JRST .-1 CONSO MTS,40 ;TRANSPORT READY? JRST .-1 SETZ A, DUMP1: HRLI A,-200 ;WORDS PER BLOCK CONO MTC,64100 ;START WRITE OPERATION DUMP2: CONSO MTS,1 ;TD10 READY FOR DATA? JRST .-1 DATAO MTC,(A) ;SEND OUT DATA AOBJN A,DUMP2 ;POINT TO NEXT WORD AND LOOP CONO MTS,1 ;STOP THE DRIVE CONSO MTS,100 ;WAIT TILL STOPPED JRST .-1 CONSZ MTS,464610 ;ANY ERRORS? JRST ERR ;YES, GO RING BELL AOSE [-CORE*20000/200+2] ;ALL CORE DUMPED? JRST DUMP1 ;NO CONO MTC,65100 ;WRITE END OF FILE CONSO MTS,100 ;DONE? JRST .-1 CONO MTC,65100 CONSO MTS,100 JRST .-1 JRST BEGR ;ALL DONE > 077557 265300 077572 LODUMP: JSP P,UWAIT 077560 255000 000004 JFCL D ;IN/OUTPUT HEADER 077561 325200 077451 JUMPGE D,JBLK ;IF JRST BLOCK READ. CANT HAPPEN ON WRITE 077562 265300 077572 DMP5: JSP P,UWAIT 077563 255004 000001 JFCL 1(D) ;IN/OUTPUT DATA WORD 077564 253200 077562 AOBJN D,DMP5 ;COUNT DOWN THE HEADER 077565 254015 000000 JRST (Q) ;END OF HEADER. TO DMP3 OR LOAD+1 ;WRITE: 1=D 0=K -1=ELSE 077566 265300 077572 THRU: JSP P,UWAIT ;WRITE OUT JRST BLOCK 077567 255000 077454 JFCL SADR ;FROM LOC SADR 077570 341240 077627 IFE MODE,< AOJL E,UWAIT1 ;FILL OUT BLOCK, TO GET CKSM OUT> 077571 624500 777777 TRZA WRITE,-1 ;THEN SET WRITE TO 0, AND GO CLOBBER ;ANY FURTHER BLOCKS WITH THIS FILN 077572 341240 077627 UWAIT: AOJL E,UWAIT1 ;RETURN ADDR = (P) DATA ADDR = @(P) ;E IS -WD COUNT IN BLOCK OR POSITIVE ;BYTE POINTER FIRST TIME THRU 077573 554440 077377 HLRZ BLKNO,LINK ;SET TO FOLLOW LINK 077574 325500 077576 MNLUP0: JUMPGE WRITE,MNLUP ;WRITING OR DELETING 077575 326440 077620 JUMPN BLKNO,RBLK 077576 354000 000011 MNLUP: AOSA BLKNO ;NEXT BLOCK IN THE DIRECTORY 077577 137040 000013 MNLUP1: DPB B,PNTR ;FOR DELETE, 0 FILE NAME AND NUMBER 077600 134100 000013 ILDB A,PNTR ;SEARCH FILE DIR 077601 306100 000037 CAIN A,37 077602 254000 077464 JRST DELE ;END OF TAB MARKER, DELE GOES TO ;CLSTP ON A "D" TO DUMP DIRECTORY TENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032 MACRO 10 05:53 24-APR-78 PAGE 5-2 TENDMP MAC 24-APR-78 14:35 TD10 VERSION 077603 661112 777777 TLO A,-1(WRITE) ;0 ON D, -1 ON K OR K PHASE OF D 077604 302402 000000 CAIE FILN,(A) ;IS THIS BLOCK ASSIGNED TO CURRENT FILE? 077605 326100 077576 JUMPN A,MNLUP ;OR MAYBE FREE? JUMP IF IN USE BY ;ANOTHER FILE. 077606 137400 000013 DPB FILN,PNTR ;SMASH AWAY WRITE BLOCK ON D OR K. BUT ;SEE MNLUP1 ON K. 077607 322500 077577 JUMPE WRITE,MNLUP1 ;K COMMAND 077610 336140 077377 SKIPN C,LINK ;HAS LINK BEEN SET UP? 077611 137440 077756 DPB BLKNO,[XWD 101200,LINK] ;NO. PUT BLOCK IN AS FIRST BLK NO 077612 506440 077377 HRLM BLKNO,LINK ;PUT BLOCK IN AS LINK 077613 322140 077574 JUMPE C,MNLUP0 ;JUMP IF THIS IS THE FIRST PASS THRU DIRECTORY 077614 554440 000003 HLRZ BLKNO,C ;GET LINKED BLOCK CHOSEN BEFORE 077615 201140 000177 MOVEI C,177 ;PUT IN A WORD COUNT FOR PIP 077616 436140 077377 IORM C,LINK ;AND PUT ALL THAT INTO LINK WORD 077617 275740 000177 SUBI CT,177 ;DECREMENT WORDS LEFT TO GO TENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032 MACRO 10 05:53 24-APR-78 PAGE 6 TENDMP MAC 24-APR-78 14:35 TD10 VERSION ;RBLK SEARCHES FOR THE BLOCK IN BLKNO, ENTERS IT GOING FORWARD, ;AND THEN READS INTO CORE, DUMPS CORE, OR COMPARES CORE AS ;DETERMINED BY CONTENTS OF WRITE. 077620 560140 077744 RBLK: HRRO C,TAPENO ;CURRENT TAPE NO. ;SET LH TO PREPARE FOR JUMPN IN DELE IFE MODE,< 077621 660040 777777 TRO B,-1 ;ENSURE GOING FORWARD WHEN FIRST SEARCH 077622 732340 300000 CONSO DTC,300000 ;IS A DIRECTION ASSERTED? 077623 660140 210000 TRO C,210000 ;NO. GO FORWARD 077624 606040 400001 RB1: TRNN B,400001 ;DECIDE WHETHER TO TURN AROUND 077625 660140 300000 TRO C,300000 ;TURN AROUND 077626 732203 020200 RBG: CONO DTC,20200(C) ;ISSUE THE COMMAND TO TD10. ;200=SEARCH, 300=READ, 700=WRITE. 077627 732700 672700 UWAIT1: CONSZ DTS,672700 ;ANY ERRORS? 077630 254000 077466 JRST ERR ;YES. GO DING AND THEN TYI 077631 732740 000001 CONSO DTS,1 ;DATA READY? 077632 254000 077627 JRST .-3 ;NO. GO WAIT SOME MORE 077633 321252 077660 JUMPL E,INOUT(WRITE) ;IF IN MIDST OF A DT BLOCK, DISPATCH 077634 732040 000001 DATAI DTC,B ;NO. SEARCHING. GET BLOCK NO. 077635 620140 310000 TRZ C,310000 ;CLOBBER DIRECTION BITS IN CONO 077636 275051 000000 SUBI B,(BLKNO) ;COMPARE WITH DESIRED BLOCK 077637 732300 100000 CONSZ DTC,100000 ;COMPLEMENT DECISION IF GOING REVERSE 077640 640040 777776 TRC B,-2 ;BIT 35 IS FOR TURNAROUND SPACE. > TENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032 MACRO 10 05:53 24-APR-78 PAGE 7 TENDMP MAC 24-APR-78 14:35 TD10 VERSION IFN MODE,< SETOB A,B ;GO FORWARD, SET DC FOR SEARCH CONSZ UTS,40 ;IS CHECKSUM BEING WRITTEN? JRST .-1 ;WAIT RB1: TRNN B,400001 ;DECIDE WHETHER TO TURN AROUND TRCA C,10000 ;CHANGE DIRECTION AND DELAY CONSO UTC,200000 ;UNIT SELECTED? TRO C,2000 ;INVOKE STARTUP DELAY RBG: CONO UTC,220200(C) ;COMMAND TO THE 551. ;200=SEARCH, 300=READ, 700=WRITE. CONO DC,4011(A) ;COMMAND TO THE 136. UWAIT1: CONSZ UTS,6 ;ANY ERRORS? JRST ERR ;YES. GO DING AND THEN TYI CONSO DC,1000 ;DATA READY? JRST .-3 ;NO. WAIT SOME MORE JUMPL E,INOUT(WRITE) ;IF IN MIDST OF A DT BLOCK, DISPATCH DATAI DC,B ;NO. SEARCHING. GET BLOCK NUMBER TRZ C,2000 ;DONT DELAY ANY MORE SUBI B,(BLKNO) ;COMPARE WITH DESIRED BLOCK TRNE C,10000 ;COMPLEMENT IF GOING REVERSE TRC B,-2 ;BIT 35 IS FOR TURNAROUND SPACE. > 077641 326040 077624 JUMPN B,RB1 ;JUMP IF NOT GOING FORWARD INTO (BLKNO) 077642 211240 000200 MOVNI E,200 ;WORDS PER BLOCK 077643 202300 000000 MOVEM P,F ;SAVE RETURN IN AC0 077644 660140 000100 TRO C,100 ;READ COMMAND, MAYBE 077645 323500 077652 JUMPLE WRITE,RB2 ;JUMP IF READ 077646 660140 000400 TRO C,400 ;CHANGE TO WRITE COMMAND IFN MODE, 077647 327740 077652 JUMPG CT,.+3 077650 553000 077377 HRRZS LINK ;IF LAST BLK, KILL LINK 077651 137240 000013 DPB E,PNTR ;AND THE DIR BYTE ? 0 077652 302440 000144 RB2: CAIE BLKNO,^D100 ;IF NOT DIRECTORY BLOCK 077653 201300 077655 MOVEI P,.+2 ;SETUP NEW RETURN 077654 254000 077626 JRST RBG 077655 340240 077377 AOJ E,LINK ;IN/OUTPUT LINK 077656 267300 077627 JRA P,UWAIT1 ;RESTORE CALLER ADR ;AND PROCESS DATA WORDS TENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032 MACRO 10 05:53 24-APR-78 PAGE 8 TENDMP MAC 24-APR-78 14:35 TD10 VERSION IFE MODE,< 077657 732066 000000 DATAI DTC,@(P) ;READ COMMANDS. GET WORD TO CORE 077660 254000 077662 INOUT: JRST UWAIT2 ;INOUT-1 TO INOUT +1 ARE DISPATCHED TO. 077661 732166 000000 DATAO DTC,@(P) ;OUTPUT TO TAPE 077662 346240 077666 UWAIT2: AOJN E,UWAIT3 ;WAS THAT THE LAST WORD IN THE DT BLOCK? 077663 732600 000001 CONO DTS,1 ;YES. GIVE FUNCTION STOP TO TD10 077664 732740 100000 CONSO DTS,100000 ;AND WAIT FOR CHECKSUM TO BE DONE 077665 254000 077664 JRST .-1 ;NOT YET. WAIT 077666 364246 000000 UWAIT3: SOJA E,0(P) ;DONE. COMPENSATE FOR THE AOJN ABOVE, AND ;RETURN TO CALLER OF UWAIT OR RBLK > IFN MODE,< DATAI DC,@(P) ;READ COMMANDS. GET WORD TO CORE INOUT: JRST UWAIT2 ;INOUT-1 THRU INOUT+1 ARE DISPATCHED TO. DATAO DC,@(P) ;OUTPUT TO TAPE UWAIT2: JRST 0(P) ;RETURN TO CALLER OF UWAIT OR RBLK. > TENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032 MACRO 10 05:53 24-APR-78 PAGE 9 TENDMP MAC 24-APR-78 14:35 TD10 VERSION 077667 201100 000044 ALTMD: MOVEI A,"$" 077670 265300 077471 JSP P,TYO ;ALTMODE IS PRINTED AS "$" IFE MAGT,< 077671 302600 000053 CAIE CH,"K"-40 ;FOR K, WRITE := 0 077672 306600 000044 CAIN CH,"D"-40 ;FOR D, WRITE :=1 077673 343500 077672 AOJLE WRITE,.-1 ;COUNT (WRITE) > IFN MAGT,< CAIN CH,"D"-40 ;FOR D, WRITE :=1 AOJLE WRITE,.-1 ;COUNT (WRITE) JUMPG WRITE,DUMP ;D MEANS GO DUMP ON MAG TAPE > 077674 306600 000047 CAIN CH,"G"-40 ;GO TO PROGRAM? 077675 254020 077454 JRST @SADR ;YES. JUMP OUT 077676 306600 000046 CAIN CH,"F"-40 ;FILE DIR PRINT? 077677 254000 077732 JRST FDIR ;YES. PRINT FILE DIR OF THIS TAPE 077700 306600 000072 CAIN CH,"Z"-40 ;ZERO DIRECTORY? 077701 254000 077721 JRST ZDIR ;DISPATCH 077702 303600 000027 CAILE CH,27 ;SKIP IF OCTAL NUMBER 077703 254000 077414 JRST TYI ;NO. GO PROCESS FILE NAME 077704 242040 000003 LSH B,3 ;CONVERT SIXBIT TO OCTAL 077705 246000 000003 LSHC F,3 ;F+1=B 077706 326040 077704 JUMPN B,.-2 ;MAY BE MORE THAN 1 DIGIT (START ADR) 077707 303000 000007 CAILE F,7 ;SKIP IF ONE DIGIT 077710 267200 077451 JRA D,JBLK ;D:=SADR. DISPATCH TO JBLK WHICH SAVES SADR. 077711 OPNTP: ;SHIFT UNIT NUMBER LEFT FOR CONO 077711 242000 000011 IFE MODE, IFN MODE, 077712 542000 077744 HRRM F,TAPENO ;SAVE IN CORE 077713 201440 000144 CLSTP: MOVEI BLKNO,^D100 ;BLK NO OF FILE DIR 077714 401540 000000 SETZI PNTR,0 ;DONT CLOBBER DIRECTORY BYTE 077715 265300 077620 JSP P,RBLK ;MOVE TO BLOCK 100 077716 255005 077377 JFCL TAB+200(E) ;READ OR WRITE DIR TAB AS DETERMINED BY WRITE 077717 341240 077627 AOJL E,UWAIT1 ;COUNT THE 200 WORDS 077720 254000 077402 JRST BEG ;GO ASK FOR NEXT COMMAND 077721 200100 077757 ZDIR: MOVE A,[XWD FOOF,TAB] ;FOOF IS CLEAR 077722 251100 077375 BLT A,TAB+176 ;CLEAR DIRECTORY, EXCEPT LAST WORD FOR ID 077723 205100 757000 MOVSI A,(36B4+36B9) ;RESERVE BLOCKS 1 & 2 077724 202100 077177 MOVEM A,TAB ;IN DIRECTORY 077725 205100 017000 MOVSI A,(36B9) 077726 202100 077215 MOVEM A,TAB+16 ;BLK 100 (DIR) IS RESERVED TOO 077727 525100 000007 HRLOI A,7 ;AND BLOCKS >1100 ARE EOT 077730 202100 077321 MOVEM A,TAB+122 ;END OF BYTE TAB 077731 344500 077465 AOJA WRITE,CLS1 ;SET WRITE TO OUTPUT ;AND DUMP BLK 100. TENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032 MACRO 10 05:53 24-APR-78 PAGE 10 TENDMP MAC 24-APR-78 14:35 TD10 VERSION 077732 211400 000026 FDIR: MOVNI FILN,26 ;26 FILES (OCTAL) 077733 265300 077467 FD2: JSP P,CRR ;CR-LF 077734 336150 077350 FD3: SKIPN C,TAB+123+26(FILN) ;FIRST WORD OF NAME. IS IT BLANK? 077735 344140 077741 AOJA C,FD1 ;YES. SET C=1 AND LOOP 077736 265700 077743 JSP G,SIXBP ;PRINT FIRST WORD AND A SPACE 077737 510150 077376 HLLZ C,TAB+151+26(FILN) ;SECOND WORD OF FILE NAME 077740 265700 077743 JSP G,SIXBP ;PRINT AND CLEAR C 077741 341403 077733 FD1: AOJL FILN,FD2(C) ;CAN JUMP TO FD2 OR FD3. COUNT FILES. 077742 254000 077402 JRST BEG ;ALL FILES PRINTED OR BLANK. RETURN. 077743 201040 000007 SIXBP: MOVEI B,7 ;SIXBP PRINTS C(C) IN 6BIT ;AND ADDS A TRAILING SPACE ;AND LEAVES (C)=0 077744 TAPENO: ;USE ADR AS TEMP FOR CURRENT UNIT 077744 401100 000000 SIXBP1: SETZI A,.-. ;CLEAR A 077745 246100 000006 LSHC A,6 077746 271100 000040 ADDI A,40 ;SIXBIT TO ASCII 077747 265300 077471 JSP P,TYO ;TYPE OUT CHARACTER 077750 367040 077744 SOJG B,SIXBP1 ;LOOP IF MORE CHARACTERS 077751 254016 000000 JRST 0(G) ;RETURN 077752 000000 000000 SPNT: 0 ;POINTER TO HEADERS IN CORE. 077753 LIT 077753 000500 077176 077754 000040 000041 077755 077154 777761 077756 101200 077377 077757 077176 077177 IFN MAGT,< SLOP: MOVE .+3 MOVEM COMPTR JRST BEGR+1 XWD 440700,.+1 BYTE (7) "0",33,177 LAST: JRST SLOP > IFE MAGT,< 000000 SLOP=COMPTR-17-. ;THIS MANY WORDS BEFORE RESERVED AREA ;FOR COMMAND STRINGS. ;!!!!! NOTE: ABOVE PARAMETER MUST COME OUT POSITIVE IN ; ORDER TO MEET THE DOCUMENTATION OF RESERVED COMMAND STRING AREA. ; ; THIS MEANS ANY CODE ADDED MUST BE COMPENSATED FOR BY ; A CORRESPONDING TIGHTENING SOMEWHERE. GOOD LUCK. ; TENDMP IS VERY TIGHT ALREADY. > 077400 END BEGR TENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032 MACRO 10 05:53 24-APR-78 PAGE 10-1 TENDMP MAC 24-APR-78 14:35 TD10 VERSION NO ERRORS DETECTED PROGRAM BREAK IS 000000 ABSLUTE BREAK IS 077760 8K CORE USED TENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032 MACRO 10 05:53 24-APR-78 PAGE 11 TENDMP MAC 24-APR-78 14:35 SYMBOL TABLE A 000002 ALTMD 077667 ALTTST 077501 B 000001 BEG 077402 BEG1 077404 BEG69 077522 BEGR 077400 BELL 077423 BLKNO 000011 C 000003 CARRET 077504 CH 000014 CKS 000007 CLS1 077465 CLSTP 077713 COMPTR 077777 CORE 000004 CRCH 077413 CRR 077467 CT 000017 D 000004 DC 000200 DELE 077464 DMP1 077532 DMP2 077552 DMP3 077554 DMP5 077562 DTC 000320 DTS 000324 DUMP 077530 E 000005 ERR 077466 F 000000 FD1 077741 FD2 077733 FD3 077734 FDIR 077732 FILN 000010 FOOF 077176 FREE 077517 G 000016 HIGH 077175 INOUT 077660 JBLK 077451 LINK 077377 LOAD 077462 LOADS 077455 LODUMP 077557 LOW 000020 LOZAD 077175 LUP 077505 MAGT 000000 TENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032 MACRO 10 05:53 24-APR-78 PAGE 11-1 TENDMP MAC 24-APR-78 14:35 SYMBOL TABLE MNLUP 077576 MNLUP0 077574 MNLUP1 077577 MODE 000000 NEXT 077422 NEXT1 077446 OPNTP 077711 P 000006 PNTR 000013 Q 000015 RB1 077624 RB2 077652 RBG 077626 RBLK 077620 RCH 077433 REL 000000 SADR 077454 SIXBP 077743 SIXBP1 077744 SLOP 000000 SPACE 077417 SPNT 077752 TAB 077177 TAPENO 077744 THRU 077566 TTY 000120 SPD TYI 077414 TYO 077471 UTC 000210 UTS 000214 UWAIT 077572 UWAIT1 077627 UWAIT2 077662 UWAIT3 077666 WRITE 000012 ZDIR 077721 Spooler runtime 0 Seconds, 0 KCS, 2085 disk reads, 74 disk writes, 865 pages ***END*** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****     ***END*** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****     ***END*** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****     ***END*** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****     ***END*** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****     ***END*** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****     ***END*** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****     ***END*** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****     ***END*** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****     ***END*** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****     ***END*** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****     ***END*** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****     ***END*** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****     ***END*** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****     ***END*** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****     ***END*** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****     ***END*** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****     ***END*** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****     ***END*** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****     ***END*** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****     ***END*** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****     ***END*** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****     ***END*** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****     ***END*** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****     ***END*** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****     ***END*** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****     ***END*** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****     ***END*** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****     ***END*** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****     ***END*** Name: MON45 Address: **** UNKNOWN **** CDRSER-144 24-April-1978 05:53:43 Address: **** UNKNOWN ****