LPTSPL Version 3(105) Running on LPT000 **START** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****     **START** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****     **START** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****     **START** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****     **START** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****     **START** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****     **START** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****     **START** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****     **START** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****     **START** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****     **START** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****     **START** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****     **START** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****     **START** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****     **START** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****     **START** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****     **START** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****     **START** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****     **START** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****     **START** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****     **START** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****     **START** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****     **START** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****     **START** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****     **START** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****     **START** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****     **START** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****     **START** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****     **START** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:18 Address: **** UNKNOWN ****     **START** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:18 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 11:23:08 File: DSKB1 :CDRSER.LST [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:18 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:2632 File will be deleted after printing CDRSER - CARD READER SERVICE PAGE 1 8-2-65 00010 XLIST 01930 LIST CDRSER - CARD READER SERVICE PAGE 7 8-2-65 00010 TITLE CDRSER - CARD READER SERVICE 00020 SUBTTL 8-2-65 00050 EXTERNAL STODAT, ADVBFF, IOSET, SETIOD, SETBYT, STOSQD 00060 EXTERNAL CDRSAV, CDRCHN, CDRRET,ILLOUT,PIOMOD 00070 INTERNAL CDRINT 00090 ;DEVICE DATA BLOCK LINKAGE 00100 EXTERNAL CDRDB,CDRDAT,CRDIS 00110 ENTRY CDRDSP CDRSER - CARD READER SERVICE PAGE 2 8-2-65 00150 ,CDR PARAMETER ASSIGNMENTS 00170 , CDR CONTROL REGISTER 000010 00180 CRDONE=10; DONE FLAG 000020 00190 CRBUSY=20; BUSY FLAG 000040 00200 CRBIN=40; BINARY 000100 00210 CRALL=100; ALL FLAG 000200 00220 CRMISS=200; DATA MISSED 000400 00230 CREOC=400; END OF CARD 001000 00240 CREOFF=1000; END OF FILE 002000 00250 CRERR=2000; ERROR 000002 00260 CHCHN=2 00270 , ACCUMULATORS 000010 00280 CRDAT1=TEM 000011 00290 CRAC=JDAT 00310 , SPECIAL IO STATUS WORD ASSIGNMENTS 040000 00320 CRMFST=40000; FIRST CARD 200000 00330 CRMBIN=200000; BINARY 100000 00340 CRMIMG=100000; IMAGE 00350 , SPECIAL CHARACTERS 000032 00360 S2EOF=32; END OF FILE 00380 REPEAT 0,< 00390 ,CDR DATA BLOCK 00400 00410 CDRDAT: SIXBIT /CRD 00420 34 00430 0 00440 EXP CDRDSP 00450 XWD 1400+PROG,10403 00460 0 00470 0 00480 XWD PROG,0 00490 0 00500 0 00510 CRDIS: JRST . 00520 > 00540 ,CDR SERVICE DISPATCH TABLE 000000' 715200 000000 00560 CDRDSP: CONO CR,0 ;RELEASE 000001' 263140 000000 00570 POPJ PDP,; CLOSE 000002' 254000 000000* 00580 JRST ILLOUT ;OUTPUT 000003' 254000 000004' 00590 JRST CRINP; INPUT CDRSER - CARD READER SERVICE PAGE 3 8-2-65 000004' 621000 000002 00630 CRINP: TLZ IOS,IOBEG; VIRGIN DEVICE? IOBUF:=0 000005' 661000 040004 00650 CDRIN1: TLO IOS,IOFST+CRMFST; IOFST:=CRMFST:=1 000006' 135040 000000* 00660 LDB TAC,PIOMOD 000007' 306040 000014 00670 CAIN TAC,B; MODE=BINARY? 000010' 661000 200000 00680 TLO IOS,CRMBIN; YES. CRMBIN:=1 000011' 306040 000010 00690 CAIN TAC,I; MODE=IMAGE? 000012' 661000 100000 00700 TLO IOS,CRMIMG; YES. CRMIMG:=1 000013' 660000 010000 00710 TRO IOS,IOACT; IOACT:=1 000014' 202006 000002 00720 MOVEM IOS,DEVIOS(DEVDAT) 000015' 260140 000000* 00730 PUSHJ PDP,SETBYT; TAC0-5:=TAC12-13:=0; TAC6-11:=BYTE SIZE 000016' 202046 000010 00740 MOVEM TAC,DEVPTR(DEVDAT) 000017' 201040 000000* 00750 MOVEI TAC, CDRCHN; ASSIGN PI CHANNEL 000020' 715201 000160 00760 CONO CR,CRBIN+CRALL+CRBUSY(TAC); SELECT BINARY, ALL 000021' 263140 000000 00770 POPJ PDP,; RETURN CDRSER - CARD READER SERVICE PAGE 4 8-2-65 000022' 715340 000010 00810 CDRINT: CONSO CR,CRDONE; DONE FLAG? 000023' 254000 000022' 00820 JRST CDRINT 000024' 264000 000000* 00830 JSR CDRSAV; SAVE ACCUMULATORS AND ESTABLI 000025' 201300 000000* 00840 MOVEI DEVDAT,CDRDAT 000026' 200006 000002 00850 MOVE IOS,DEVIOS(DEVDAT) 000027' 715300 002200 00860 CONSZ CR, CRMISS+CRERR; DATA MISSED OR ERROR? 000030' 660000 200000 00870 TRO IOS,IODERR; IODERR:=1 000031' 715040 000010 00880 DATAI CR, CRDAT1; INPUT INFORMATION 000032' 260140 000000* 00890 PUSHJ PDP,IOSET; PROG:=C(JBTADR18-35), ITEM:= C(DEVPTR) 000033' 627000 040000 00900 TLZN IOS,CRMFST; FIRST CARD? CRMFST:=0 000034' 256000 000000* 00910 XCT CRDIS ;NOT FIRST, GO TO SUBROUTINE 000035' 640400 007400 00930 CRFIRS: TRC CRDAT1, 7400; FIRST COL OF FIRST CARD 000036' 646400 007400 00940 TRCN CRDAT1,7400; Y, X, 0, OR 1 PUNCH? 000037' 254000 000047' 00950 JRST CREOFC; NO, END OF FILE CARD 000040' 715300 001000 00960 CONSZ CR, CREOFF; END OF FILE? 000041' 254000 000051' 00970 JRST CREOF; YES 000042' 603000 200000 00980 TLNE IOS,CRMBIN; CRMBIN=1? 000043' 254000 000125' 00990 JRST CRFSTB; YES 000044' 603000 100000 01000 TLNE IOS,CRMIMG; CRMIMG=1? 000045' 254000 000144' 01010 JRST CRFSTI; YES 000046' 254000 000067' 01020 JRST CRFSTL+1 000047' 201040 000017* 01040 CREOFC: MOVEI TAC,CDRCHN ;WAIT FOR EOC 000050' 715201 000020 01050 CONO CR,CRBUSY(TAC) 000051' 661000 000040 01060 CREOF: TLO IOS, IOEND; IUEND:=1 000052' 201240 000032 01070 MOVEI DAT,S2EOF 000053' 260140 000000* 01080 PUSHJ PDP,STODAT; STORE END OF FILE CHARACTER 000054' 330000 000000 01090 SKIP 000055' 254000 000217' 01100 JRST CRLST2; BLOCK FULL OR BLOCK COMPLETE 000056' 201040 000056' 01110 MOVEI TAC,.; DATA STATED PROPERLY 000057' 542040 000034* 01120 HRRM TAC, CRDIS; SET DISPATCH TO RETURN HERE. 000060' 715340 000400 01130 CONSO CR, CREOC; END OF CARD? 000061' 254000 000226' 01140 JRST CREXIT; NO. 000062' 260140 000000* 01150 PUSHJ PDP,ADVBFF; ADVANCE BUFFER 000063' 330000 000000 01160 SKIP 000064' 661000 000002 01170 TLO IOS,IOBEG; IOBEG:=1 000065' 254000 000231' 01180 JRST CROFF 000066' 260140 000164' 01200 CRFSTL: PUSHJ PDP, CRITMS; STORE ITEM 000067' 201040 000074' 01210 MOVEI TAC,CRCV; TAC:=CRCV. HOLLERITH READ 000070' 715240 000002 01230 CRREST: CONI CR, TAC1 000071' 620100 000160 01240 TRZ TAC1, CRBIN+CRALL+CRBUSY; SELECT HOLERITH, ALL:=0, BUS 000072' 715202 000000 01250 CONO CR, (TAC1); RESET CARD READER 000073' 254000 000112' 01260 JRST CREXT1; CHANGE DISPATCH AND GO CDRSER - CARD READER SERVICE PAGE 5 8-2-65 01290 , HOLLERITH READ MODE 000074' 200440 000241' 01310 CRCV: MOVE CRAC, [POINT 6,CRDAT1,23]; COLUMNS 79 AND 80 000075' 715340 000400 01320 CONSO CR,CREOC; END OF CARD? 000076' 200440 000142' 01330 MOVE CRAC,CRC1; NO. LOOK AT ALL CHARACTERS 000077' 134040 000011 01340 LDBI TAC,CRAC ;CONVERT HOLLERITH 000100' 231040 000005 01350 IDIVI TAC, 5; TO ASCII 000101' 135242 000206' 01360 LDB DAT, CRCV1(TAC1) 000102' 260140 000053* 01370 PUSHJ PDP,STODAT; STORE IN BU FER 000103' 254000 000052' 01380 JRST CREOF+1 000104' 254000 000115' 01390 JRST CRINS 000105' 603440 760000 01400 TLNE CRAC, 760000; WORD COMPLETE? 000106' 254000 000077' 01410 JRST CRCV+3; NO 000107' 715300 000400 01420 CONSZ CR,CREOC; END OF CARD? 000110' 254000 000115' 01430 JRST CRINS; YES 000111' 201040 000074' 01440 MOVEI TAC, CRCV; NEXT DISPATCH TO CRCV. HOLLERITH READ 000112' 542040 000057* 01460 CREXT1: HRRM TAC, CRDIS; UPDATE DISPTACHER 000113' 254000 000226' 01470 JRST CREXIT 000114' 000000 006424 01480 CRCON: OCT 6424 000115' 200440 000143' 01500 CRINS: MOVE CRAC,CRC2; BLOCK FULL OR BLOCK COMPLETE INSERT CR 000116' 134240 000011 01510 LDBI DAT, CRAC 000117' 260140 000102* 01520 PUSHJ PDP,STODAT; STORE CHAR 000120' 330000 000000 01530 SKIP; EXIT1. 000121' 254000 000217' 01540 JRST CRLST2; EXIT2. BLOCK FULL OR BLOCK COMPLETE 000122' 603440 760000 01550 TLNE CRAC,760000; THATS ALL? 000123' 254000 000116' 01560 JRST CRINS+1; NO 000124' 254000 000213' 01570 JRST CRLAST; END OF CARD CDRSER - CARD READER SERVICE PAGE 6 8-2-65 01600 , BINARY READ MODE 000125' 135040 000242' 01620 CRFSTB: LDB TAC,[POINT 3,CRDAT1,35]; 7-9 PUNCH? 000126' 302040 000005 01630 CAIE TAC, 5 000127' 660000 400000 01640 TRO IOS, IOIMPM; YES. IOIMPM:=1 000130' 715240 000001 01650 CONI CR, TAC 000131' 620040 000120 01660 TRZ TAC, CRBUSY+CRALL; BUSY FLAG:=0, ALL FLAG;=0 000132' 715201 000000 01670 CONO CR,(TAC); RESET TO RE-READ COL 3 000133' 201040 000135' 01680 MOVEI TAC, CRCOL2; DISPATCH TO CRCOL2 ON NEXT INTERRUPT 000134' 254000 000112' 01690 JRST CREXT1 000135' 201040 000137' 01710 CRCOL2: MOVEI TAC, CRCOL4; DISPATCH TO CRCOL4 ON NEXT INTERRUPT 000136' 542040 000112* 01720 HRRM TAC,CRDIS 000137' 200240 000010 01740 CRCOL4: MOVE DAT, CRDAT1 000140' 260140 000165' 01750 PUSHJ PDP, CRITMS+1; STORE THE WORD FROM DAT 000141' 254000 000226' 01760 JRST CREXIT 000142' 440600 000010 01780 CRC1: POINT 6,CRDAT1 000143' 170700 000114' 01790 CRC2: POINT 7,CRCON,20 CDRSER - CARD READER SERVICE PAGE 7 8-2-65 01820 ,IMAGE READ MODE 000144' 201040 000147' 01840 CRFSTI: MOVEI TAC, .+3; DISPATCH TO CRFSTI + 3 ON NEXT INTERRUP 000145' 137400 000243' 01850 DPB CRDAT1,[POINT 24,CRTEM,23]; SAVE COLUMN 1 AS MI 000146' 254000 000112' 01860 JRST CREXT1 000147' 260140 000164' 01880 PUSHJ PDP, CRITMS; SET ITEM AND CHECK SIZE 000150' 434400 000240' 01890 IOR CRDAT1, CRTEM; CRTEM12-35:=COL 1 AND 2 000151' 201040 000153' 01900 MOVEI TAC, .+2; DISPATCH TO CRFSTI + 7 ON NEXT INTERRUP 000152' 254000 000157' 01910 JRST CRIM1+1 000153' 715240 000002 01930 CONI CR, TAC1 000154' 620100 000120 01940 TRZ TAC1, CRBUSY+CRALL; BUSY FLAG:=ALL FLAG:=0 000155' 715202 000000 01950 CONO CR, (TAC1); RESET READER ON COL 3 000156' 201040 000156' 01970 CRIM1: MOVEI TAC,.; DISPATCH TO CRIM1 ON NEXT INTERRUPT 000157' 715300 000400 01980 CONSZ CR, CREOC; END OF CARD? 000160' 254000 000213' 01990 JRST CRLAST; YES 000161' 202026 000010 02000 MOVEM @DEVPTR(DEVDAT) 000162' 350006 000010 02010 AOS DEVPTR(DEVDAT); INCREMENT ITEM POINTER 000163' 254000 000112' 02020 JRST CREXT1 000164' 661000 000004 02040 CRITMS: TLO IOS, IOFST; IOFST:=1 000165' 260140 000117* 02050 PUSHJ PDP, STODAT; STORE WORD 000166' 254000 000052' 02060 JRST CREOF+1 000167' 254000 000052' 02070 JRST CREOF+1 000170' 263140 000000 02080 POPJ PDP,; RETURN 000171' 575426 231550 02100 CRCNV: ASCII ._123456789. 000172' 325546 734162 000173' 301730 057116 02110 ASCII .0=@^'\ /ST. 000174' 561005 751650 000175' 526552 754262 02120 ASCII .UVWXYZ;,(". 000176' 551665 424104 000177' 215125 545226 02130 ASCII .#%-JKLMNOP. 000200' 462331 647640 000201' 506447 222124 02140 ASCII .QR:$*[>&+A. 000202' 555744 625602 000203' 412070 442614 02150 ASCII :BCDEFGHI?.: 000204' 436211 137534 000205' 246727 420576 02160 ASCII :)] 000071' 000000 000001 EXP 1 000072' 000000 000001 EXP 1 000073' 000000 000001 EXP 1 000074' 000000 000001 EXP 1 01020 ;QUANTUM TIMES FOR EACH QUEUE 000075' 000000 000004 01040 QUANTS: EXP 4 ;MAGTAPE QUEUE 000076' 000000 000004 01050 EXP 4 ;DATA CONTROL QUEUE 000077' 000000 000004 01060 EXP 4 ;DECTAPE QUEUE 000100' 000000 000006 01070 EXP 6 ;IOWAIT SATISFIED QUEUE 000101' 000000 000017 01080 EXP QUANT1 ;STRAIGHT COMPUTATION QUEUE 01100 XP QUANT1,^D15; STRAIGHT COMPUTATION QUEUE 01120 END, NO ERRORS DETECTED PROGRAM BREAK IS 000102 8K CORE USED CLKCSS - SCHEDULING ALOGRITHM PAGE 4 SYMBOL TABLE 000217 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 PAGE 4-1 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 PAGE 4-2 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 11:23:08 File: DSKB1 :CLOCK .LST [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:18 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:2612 File will be deleted after printing CLOCK - CLOCK SERVICE ROUTINE PAGE 1 T. HASTINGS 6-2-65 00010 XLIST 01930 LIST CLOCK - CLOCK SERVICE ROUTINE PAGE 7 T. HASTINGS 6-2-65 00010 TITLE CLOCK - CLOCK SERVICE ROUTINE 00020 SUBTTL T. HASTINGS 6-2-65 00030 INTERNAL CLOCK, CLKINI,NULJOB,APRINT,RSCHED 00040 EXTERNAL APRSAV, APRRET, APRCHN,APRILM,APRCHL 00050 EXTERNAL COMCNT,COMMAND,JOB,JOBADR,APRSAC,JOBDAC,JOBPDP,JOBREL 00060 EXTERNAL USRPDP,JOBPFU,JOBPC,JBTADR,JOBADR,JOBDAT,USRPFU,CLDS,NXTJOB 00070 EXTERNAL STOPU,SCHEDF,TIME,JOBLEV,JOBUXT,UUO0,JOBDHI,CLKOFF,JBTSTS 00090 ;CLOCK WILL TIME AN INTERVAL AND PUSHJ PDP, TO AN ADDRESS 00100 ;AFTER THE INTERVAL HAS EXPIRED 00110 ;TO MAKE A REQUEST: 00120 ; CONO PI,PIOFF 00130 ; DPBI AC,CLOCK 00140 ; CONO PI,PION 00150 ;AC MUST CONTAIN- XWD ADDRESS,NUMBER OF CLOCK COUNTS+DATA*1000 00160 ;THE HIGH ORDER SIX BITS OF THE RIGHT HALF(DATA) ARE PLACED IN AC 00170 ;TAC RIGHT JUSTIFIED BEFORE THE PUSHJ PDP, ADDRES IS DONE 00190 ;SYSTEM FLAGS: 00200 ; STOPU IS SET NON-ZERO AT EITHER INTERRUPT SERVICE LEVEL OR 00210 ; UUO LEVEL AND A CLOCK INTERRUPT IS REQUESTED WHEN CURRENT 00220 ; JOB MUST BE STOPPED AND ANOTHER ONE RUN. 00230 ; SCHEDF IS SET NON-ZERO BY CLOCK ROUTINE WHEN IF IS IN THE PROCESS 00240 ; OF RESCHEDULING. IT IS CLEARED AFTER JOB HAS BEEN SET TO 00250 ; CURRENTLY RUNNING JOB. 00260 ; TIME IS THE TIME SYSTEM HAS RUN IN 60THS OF A SECOND 000200 00280 PION=200 000400 00290 PIOFF=400 000005 00310 STOR=DAT 000001 00320 T=TAC 000011 00330 JA=JDAT 000000' 004400 000000' 00350 CLOCK: POINT 36,CIPWT-1,35 ;BYTE POINTER TO CLOCK QUEUE 000001' 00360 CIPWT: BLOCK 12 ;THE QUEUE 000013' 201000 000000' 00380 CLKINI: MOVEI CIPWT-1 ;SET UP BYTE POINTER 000014' 542000 000000' 00390 HRRM CLOCK 000015' 263140 000000 00400 POPJ PDP, CLOCK - CLOCK SERVICE ROUTINE PAGE 2 T. HASTINGS 6-2-65 000016' 254000 000020' 00430 APRINT: JRST .+2 ;HERE ON APR INTERRUPT 000017' 254000 000017' 00440 JRST . ;TO OTHER DEVICES ON THIS CHANNEL 000020' 700340 230000 00450 CONSO APR,230000 ;IS IT ANY OF THE OTHERS 000021' 254000 000024' 00460 JRST CIP0 ;NO. GO CHECK CLOCK 000022' 264000 000000* 00470 JSR APRSAV ;YES, SAVE ACS 000023' 254000 000000* 00480 JRST APRILM ;AND GO PROCESS ILLEGAL MEMOR 000024' 700340 002000 00490 CIP0: CONSO APR, 2000 ;IS CLOCK ENABLED 000025' 254000 000030' 00500 JRST CIP1 ;NO. GO TO OTHER DEVICES 000026' 700300 001000 00510 CONSZ APR, 1000 ;YES, DID CLOCK CAUSE INTERRUPT 000027' 254000 000034' 00520 JRST CIP2 ;YES 000030' 336000 000000* 00530 CIP1: SKIPN STOPU ;NO, IS THIS A REQUEST INTERRUPT 000031' 254000 000017' 00540 JRST APRINT+1 ;NO. GO TO OTHER DEVICES 000032' 264000 000022* 00550 CIP1B: JSR APRSAV ;YES, SAVE ACS 000033' 254000 000064' 00560 JRST CIP6 ;RESCHEDULE BUT DONT TIME CLOCK - CLOCK SERVICE ROUTINE PAGE 3 T. HASTINGS 6-2-65 000034' 264000 000032* 00590 CIP2: JSR APRSAV ;SAVE ACS 000035' 350000 000000* 00600 AOS TIME ;INCREMENT TIME 000036' 200040 000000* 00610 MOVE TAC,JOB ;DECREMENT CURRENT JOBS RUNNING TIME 000037' 370001 000000* 00620 SOS JBTSTS(TAC) 000040' 700200 000000* 00630 CONO APR,CLKOFF ;TURN CLOCK FLAG OFF 00650 ;PROCESS TIMING REQUESTS STORED IN QUEUE 000041' 550240 000000' 00660 HRRZ STOR, CLOCK ;GET END OF LIST 000042' 306240 000000' 00670 CIP4: CAIN STOR, CIPWT-1 ;END YET 000043' 254000 000062' 00680 JRST CIP5 ;YES 000044' 370105 000000 00690 SOS TAC1, (STOR) ;DECREMENT TIMING REQUEST 000045' 602100 007777 00700 TRNE TAC1, 7777 ;TIME EXPIRED YET 000046' 364240 000042' 00710 SOJA STOR, CIP4 ;NO, CONTINUE SCAN 000047' 700600 000400 00720 CONO PI, PIOFF ;YES. MOVE LAST ITEM IN LIST TO THS 000050' 200060 000000' 00730 MOVE TAC, @CLOCK 000051' 370000 000000' 00740 SOS CLOCK 000052' 700600 000200 00750 CONO PI, PION 000053' 202045 000000 00760 MOVEM TAC, (STOR) 000054' 135040 000143' 00770 LDB TAC, [POINT 6, TAC1, 23] ;GET 6 BIT DATA ITEM 000055' 207000 000002 00780 MOVSS TAC1 ;SETUP DISPATCH ADDRESS 000056' 261140 000005 00790 PUSH PDP, STOR ;SAVE ONLY VALUABLE AC 000057' 260142 000000 00800 PUSHJ PDP, (TAC1) ;AND DISPATCH TO TIMING REQUEST ROUTINE 000060' 262140 000005 00810 POP PDP, STOR 000061' 364240 000042' 00820 SOJA STOR, CIP4 ;GO BACK FOR MORE REQUESTS 000062' 332000 000000* 00840 CIP5: SKIPE COMCNT ;ANY COMMANDS TO PROCESS 000063' 260140 000000* 00850 PUSHJ PDP, COMMAND ;YES 000064' 00860 RSCHED: ;RESCHEDULE, HERE AFTER APRILM 000064' 402000 000030* 00870 CIP6: SETZM STOPU ;CLEAR INTERRUPT REQUEST FLAG 000065' 476000 000000* 00880 SETOM SCHEDF ;FLAG THAT SCHEDULING IS IN PROGRESS 000066' 260140 000000* 00890 PUSHJ PDP, NXTJOB ;RETURN HIGHEST PRIORITY JOB IN AC ITEM 000067' 316200 000036* 00900 CAMN ITEM, JOB ;IS IT SAME AS CURRENT JOB 000070' 254000 000136' 00910 JRST CIP8 ;YES, EXIT CLOCK - CLOCK SERVICE ROUTINE PAGE 4 T. HASTINGS 6-2-65 00940 ;DIFFERENT JOB, SAVE OLD JOB 000071' 336000 000067* 00950 SKIPN JOB ;IS OLD JOB THE NULL JOB 000072' 254000 000110' 00960 JRST CIP7 ;YES, DONT BOTHER TO SAVE ANYTHING 000073' 200440 000000* 00970 MOVE JA, JOBADR ;NO. MOVE CHANNEL ACS TO USER JOB AREA 000074' 201051 000000* 00980 MOVEI T,JOBDAC(JA) 000075' 505040 000000* 00990 HRLI T, APRSAC 000076' 251051 000000* 01000 BLT T, JOBDHI(JA) 000077' 201051 000000* 01010 MOVEI T, JOBPDP(JA) ;MOVE JOB STATE VARIABLES TO JOB DATA A 000100' 505040 000000* 01020 HRLI T, USRPDP 000101' 251051 000000* 01030 BLT T, JOBPFU(JA) 000102' 200040 000040 01040 MOVE T, 40 ;SAVE LOC. 40 000103' 202051 000000* 01050 MOVEM T, JOBLEV(JA) 000104' 200040 000000* 01060 MOVE T, UUO0 ;AND UUO PC 000105' 202051 000000* 01070 MOVEM T, JOBUXT(JA) 000106' 200040 000000* 01080 MOVE T, APRCHL ;SET C(CHANNEL INTERRUPT LOC.) AS PC 000107' 202051 000000* 01090 MOVEM T, JOBPC(JA) CLOCK - CLOCK SERVICE ROUTINE PAGE 5 T. HASTINGS 6-2-65 01130 ;RESTOR NEW JOB 000110' 202200 000071* 01140 CIP7: MOVEM ITEM, JOB ;STORE NEW CURRENT JOB NUMBER 000111' 403000 000065* 01150 SETZB 0,SCHEDF ;INDICATE SCHEDULING FINISHED 000112' 322200 000140' 01160 JUMPE ITEM, NUL0 ;IS NEW JOB NULL JOB 000113' 200444 000000* 01170 MOVE JA, JBTADR(ITEM) ;SETUP STATE VARIABLES FOR CU 000114' 552440 000073* 01180 HRRZM JA, JOBADR ;IN SYSTEM AREA 000115' 552440 000000* 01190 HRRZM JA, JOBDAT 000116' 556451 000000* 01200 HLRZM JA, JOBREL(JA) ;SET RELOCATION AND PROTECTION 000117' 700140 000011 01210 DATAO JA 000120' 201040 000100* 01220 MOVEI T,USRPDP 000121' 505051 000077* 01230 HRLI T, JOBPDP(JA) ;MOVE JOB STATE VARIABLES TO SYSTEM ARE 000122' 251040 000000* 01240 BLT T, USRPFU 000123' 200051 000103* 01250 MOVE T, JOBLEV(JA) ;RESTORE LOC. 40 000124' 202040 000040 01260 MOVEM T, 40 000125' 200051 000105* 01270 MOVE T, JOBUXT(JA) ;AND UUO PC 000126' 202040 000104* 01280 MOVEM T, UUO0 000127' 200051 000107* 01290 MOVE T, JOBPC(JA) ;SET C(CHANNEL LOC.) TO C(JOBPC) 000130' 202040 000106* 01300 MOVEM T, APRCHL 000131' 205751 000074* 01310 MOVSI 17, JOBDAC(JA) ;RESTORE USER ACS 000132' 251740 000017 01320 BLT 17,17 000133' 332000 000064* 01330 SKIPE STOPU ;HAS STOPU BEEN SET SINCE CIP6 000134' 254000 000032' 01340 JRST CIP1B ;YES, GO RESCHEDULE 000135' 254520 000130* 01350 JEN @APRCHL ;NO. DISMISS CHANNEL 000136' 402000 000111* 01370 CIP8: SETZM SCHEDF ;CLEAR SCHEDULING FLAG 000137' 254000 000000* 01380 JRST APRRET ;AND DISMISS INTERRUPT 01400 ;THE NULL JOB 000140' 254400 000141' 01410 NUL0: JRST 10, NULJOB ;RENABLE AND RUN IN EXEC. MODE 000141' 200040 000142' 01430 NULJOB: MOVE 1,.+1 000142' 344000 000001 01440 AOJA 0,1 ;COUNT IN AC0 FOR VISUAL MONITORING 01450 ;ALSO PC = 1 01460 END, 000143' 140600 000002 NO ERRORS DETECTED PROGRAM BREAK IS 000144 8K CORE USED CLOCK - CLOCK SERVICE ROUTINE PAGE 6 SYMBOL TABLE 000243 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 PAGE 6-1 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 PAGE 6-2 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 PAGE 6-3 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 11:23:08 File: DSKB1 :COMCON.LST [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:18 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:2602 File will be deleted after printing COMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES PAGE 1 T.HASTINGS 8-2-65 00010 XLIST 01930 LIST COMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES PAGE 7 T.HASTINGS 8-2-65 00010 TITLE COMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES 00020 SUBTTL T.HASTINGS 8-2-65 00030 ;CALLED FROM COMMAND DECODER WHICH IS CALLED FROM CLOCK ROUTINE 00040 ;WITH FOLLOWING ACS SET: 00050 ;TAC= BYTE POINTER TO COMMAND STRING(SPACE OR CR AFTER COMMAND NAME) 00060 ;ITEM = JOB NUMBER 00070 ;DAT = BYTE POINTER TO LAST OUTPUT CHARACTER 00080 ;DEVDAT= ADDRESS OF DEVICE DATA BLOCK INITIATING COMMAND 00090 ;JDAT = ADDRESS OF JOB DATA AREA, = 0 IF NO JOB AREA 00110 ;UPON RETURN FROM COMMAND SETUP ROUTINE, A CR-LF IS ADDED IF 00120 ;NEEDED AND TTY IS STARTED 00140 ;SINCE THE COMMAND DECODER IS CALLED FROM THE CLOCK ROUTINE 00150 ;COMMAND SETUP ROUTINES MUST RUN TO COMPLETION QUICKLY 00160 ;IF A COMMAND FUNCTION CANNOT DO THIS, IT MUST JUST SET 00170 ;THE JOB TO A RUNNABLE STATUS AND RETURN I MEDIATELY 00190 ; "IJOB" - INITIALIZE JOB 00200 INTERNAL IJOB 00210 EXTERNAL RADX10,JOBINI,JOBKIL,CRLF,MONJOB 000000' 254000 000000* 00230 IJOB: JRST JOBINI 00250 ;PRINT JOB NUMBER 00270 INTERNAL PJOB 000001' 200040 000004 00280 PJOB: MOVE TAC, ITEM 000002' 260140 000000* 00290 PUSHJ PDP,RADX10 000003' 254000 000000* 00300 JRST CRLF 00320 ;KILL JOB(MUST HAVE CORE ASSIGNED) 00340 INTERNAL KJOB 000004' 254000 000000* 00350 KJOB: JRST JOBKIL COMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES PAGE 2 T.HASTINGS 8-2-65 00390 ; "START L" OR "START" - START AT LOC. L OR STARTING ADDRESS 00400 INTERNAL START 00410 EXTERNAL OCTIN,JOBSA,START1,COMERA,STARTU,CPOPJ,CPOPJ1,STARTM 000005' 260140 000013' 00430 START: PUSHJ PDP,STRT 000006' 254000 000000* 00440 JRST COMERA ;ERROR 000007' 254000 000000* 00450 JRST STARTU ;GO SET JOB TO START(CONSOLE IN USER MO 00470 ; "STARTC L" OR "STARTC" - START AT LOC. L(TTY IN COMMAND MODE) 00490 INTERNAL STARTC 00500 EXTERNAL STARTM 000010' 260140 000013' 00520 STARTC: PUSHJ PDP,STRT 000011' 254000 000006* 00530 JRST COMERA ;ERROR 000012' 254000 000000* 00540 JRST STARTM ;FO SET JOB TO START(TTY IN COM. MODE) 00560 ;ROUTINE TO SCAN ARGUMENT 000013' 260140 000000* 00580 STRT: PUSHJ PDP,OCTIN ;CONVERT OCTAL NO, 000014' 254000 000016' 00590 JRST ST2 ;EITHER NO NUMBER OR ERROR 000015' 254000 000020' 00600 JRST ST3 ;START JOB C(TAC1) 000016' 326100 000000* 00620 ST2: JUMPN TAC1, CPOPJ ;NOT A NUMBER IF NON-ZERO 000017' 550111 000000* 00630 HRRZ TAC1, JOBSA(JDAT) ;NO, START AT STARTING ADDRES 000020' 505100 001000 00640 ST3: HRLI TAC1, 1000 ;USER MODE FLAG 000021' 254000 000000* 00650 JRST CPOPJ1 ;OR RETURN COMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES PAGE 3 T.HASTINGS 8-2-65 00690 ; "CONT" - CONTINUE EXECUTION FROM WHERE LEFT OFF 00700 INTERNAL CONT 00710 EXTERNAL CONTU,CONMES,JBTSTS 000022' 205100 002000 00730 CONT: MOVSI TAC1, JERR 000023' 616104 000000* 00740 TDNN TAC1, JBTSTS(ITEM) ;IS JOB ERROR BIT SET? 000024' 254000 000000* 00750 JRST CONTU ;NO, GO SET JOB TO CONTINUE 000025' 265040 000000* 00760 CONTA: JSP TAC,CONMES ;YES, PRINT CANT CONTINUE 000026' 416031 623650 00780 ASCIZ /CAN'T CONTINUE 000027' 202071 747250 000030' 446352 542432 000031' 050000 000000 00790 / 00810 ; "CONTC" - CONTINUE EXECUTION(TTY REMAINS IN COMMAND MODE) 00830 INTERNAL CONTC 00840 EXTERNAL CONTM 000032' 205100 002000 00860 CONTC: MOVSI TAC1, JERR 000033' 616104 000023* 00870 TDNN TAC1, JBTSTS(ITEM) ;IS JOB ERROR BIT SET? 000034' 254000 000000* 00880 JRST CONTM ;NO 000035' 254000 000025' 00890 JRST CONTA ;YES 00910 ; "DDT" - START EXECUTION AT DDT IN USER AREA 00920 INTERNAL DDTGO 00930 EXTERNAL JOBDDT,STARTU 000036' 550111 000000* 00950 DDTGO: HRRZ TAC1, JOBDDT(JDAT) ;GET DDT STARTING ADDRESS 000037' 326100 000043' 00960 JUMPN TAC1,DDT1 ;GO START JOB IF NON-ZERO 000040' 265040 000025* 00970 JSP TAC,CONMES ;ZERO, PRINT"NO DDT" 000041' 472364 042210 00990 ASCII /NO DDT 000042' 520321 200000 01000 / 000043' 505100 010000 01020 DDT1: HRLI TAC1,USRMOD ;USER MODE BIT 000044' 254000 000007* 01030 JRST STARTU ;GO SET TO RUN JOB 01040 ;DIGITAL MAYNARD 01060 INTERNAL DIGITAL 000045' 265040 000040* 01080 DIGITAL: JSP TAC,CONMES 000046' 442131 446236 01090 ASCIZ /HELLO 000047' 064240 000000 01100 / COMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES PAGE 4 T.HASTINGS 8-2-65 01160 ; "CORE #" - ASSIGNS #*1024 WORDS OF CORE TO JOB 01170 ; "CORE" WITH NO ARGUMENT IS EQUIVALENT TO "CORE 0" 01190 INTERNAL CORE 01200 EXTERNAL CORE1,DECIN,ANYRIN,CONMES,COMERA,NOTENF 01210 EXTERNAL JOBPFI,JBTADR,CPOPJ,JOBPRT,JOBPR1,JOBZER 01220 EXTERNAL RADX10 000050' 260140 000000* 01240 CORE: PUSHJ PDP, DECIN ;GET NO. OF 1K BLOCKS 000051' 254000 000077' 01250 JRST COR3 ;ERROR 000052' 336040 000002 01260 SKIPN TAC,TAC1 ;IS ZERO BEING ASKED FOR? 000053' 326440 000000* 01270 JUMPN JDAT,JOBZER ;YES, RELEASE ALL DEVICES IF THERE WAS 000054' 260140 000000* 01280 PUSHJ PDP,CORE1 000055' 254000 000065' 01290 JRST COR2 ;CORE NOT AVAILABLE (AC TAC = BLO CKS L 000056' 550444 000000* 01300 HRRZ JDAT, JBTADR(ITEM) ;CORE GRANTED, CLEAR PART OF 000057' 322440 000016* 01310 JUMPE JDAT, CPOPJ ;UNLESS ALL CORE WAS RETURNED 000060' 402011 000000* 01320 SETZM JOBPRT(JDAT) ;CLEAR PART PROTECTED FROM IO 000061' 505051 000060* 01330 HRLI TAC,JOBPRT(JDAT) 000062' 541051 000000* 01340 HRRI TAC, JOBPR1(JDAT) 000063' 251051 000000* 01350 BLT TAC, JOBPFI(JDAT) 000064' 263140 000000 01360 POPJ PDP, 000065' 260140 000002* 01380 COR2: PUSHJ PDP,RADX10 ;PRINT NO. OF FREE 1K BLOCKS LEFT 000066' 265040 000045* 01390 JSP TAC,CONMES 000067' 202152 242612 01410 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 01420 / 000077' 326100 000011* 01430 COR3: JUMPN TAC1, COMERA ;NOT A NO. IF NON-ZERO, APPEND "?" 000100' 254000 000000* 01440 JRST NOTENF ;NOT ENOUGH ARGUMENT COMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES PAGE 5 T.HASTINGS 8-2-65 01480 ; "SAVE FILE-NAME" - SAVES JOB AREA ON RETRIEVABLE DEVICE 01490 ;ONLY A SAVE OR A GET IN PROGRESS FOR EACH JOB 01500 ;NO ATTEMPT IS MADE TO SAVE DEVICE ASSIGNMENTS, ACS, OR PC 01510 INTERNAL SAVE 01520 EXTERNAL SAVJOB,START1,SGSET 000101' 201100 000000* 01540 SAVE: MOVEI TAC1, SAVJOB ;SETUP TO RUN SAVJOB 000102' 254000 000000* 01550 JRST SGSET 01570 ; "GET DEVICE:FILE-NAME" - SETS UP JOB AREA FROM RETRIEVABLE DEVICE 01580 INTERNAL GET 01590 EXTERNAL GETJOB 000103' 201100 000000* 01610 GET: MOVEI TAC1, GETJOB ;SETUP TO RUN GET JOB 000104' 254000 000102* 01620 JRST SGSET COMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES PAGE 6 T.HASTINGS 8-2-65 01670 ;"ASSIGN DEV:NAME" - ASSIGNS DEV TO JOB AND GIVES IT LOGICAL NAME NAM 01690 ;TEMPORARY ACS 000012 01700 T1=BUFPNT 000013 01710 T=BUFWRD 01730 INTERNAL ASSIGN 01740 EXTERNAL CTEXT1, NOTENF, DEVLST, ASSASG, CONMES, PJOBN, ANYRDX, ERNAM 01750 EXTERNAL CRLF, DEVLG,SYSTAP 000105' 260140 000000* 01770 ASSIGN: PUSHJ PDP, CTEXT1 ;GET FIRST ARGUMENT 000106' 322100 000100* 01780 JUMPE TAC1, NOTENF ;NO ARGUMENTS TYPED IF 0 000107' 200500 000002 01790 MOVE T1, TAC1 ;SAVE DEVICE NAME 000110' 261140 400000 01800 PUSH PDP, ASSCON ;SAVE INPUT BYTE POINTER 000111' 201100 400000 01810 MOVEI TAC1, ASSCON ;SETUP ASSIGNED BY CONSOLE BIT 000112' 554300 000000* 01820 ASSN: HLRZ DEVDAT, DEVLST 000113' 312506 000000 01830 ASSG0: CAME T1,DEVNAM(DEVDAT) ;DOES PHYSICAL NAME MATCH? 000114' 254000 000120' 01840 JRST ASSG1 ;NO 000115' 260140 000000* 01850 PUSHJ PDP, ASSASG ;YES, TRY TO ASSIGN DEVICE 000116' 254000 000135' 01860 JRST ASSER1 ;ALREADY ASSIGNED TO ANOTHER JOB 000117' 254000 000151' 01870 JRST ASSFIN ;ASSIGNED 000120' 200046 000000 01890 ASSG1: MOVE TAC,DEVNAM(DEVDAT) ;IS THIS THE SYSTEM TAPE? 000121' 316040 000000* 01900 CAMN TAC,SYSTAP 000122' 254000 000131' 01910 JRST ASSG2 ;YES 000123' 135540 000000* 01920 LDB T, PJOBN ;SAVE OLD JOB NUMBER FOR THIS 000124' 620040 777777 01930 TRZ TAC,-1 ;COMPARE LEFT HALF ONLY 000125' 316040 000012 01940 CAMN TAC, T1 000126' 260140 000115* 01950 PUSHJ PDP, ASSASG ;MATCH, TRY TO ASSIGN IT 000127' 254000 000131' 01960 JRST ASSG2 ;KEEP LOOKING 000130' 322540 000151' 01970 JUMPE T,ASSFIN ;IF OLD JOB NUMBER 0, DEVICE PREVIOSLY 000131' 554306 000003 01990 ASSG2: HLRZ DEVDAT, DEVSER(DEVDAT) 000132' 326300 000113' 02000 JUMPN DEVDAT, ASSG0 000133' 262140 000001 02010 POP PDP, TAC 000134' 254000 000211' 02020 JRST NOTDEV ;PRINT NO SUCH DEVICE COMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES PAGE 7 T.HASTINGS 8-2-65 02060 ;ALREADY ASSIGNED TO ANOTHER JOB 000135' 262140 000001 02080 ASSER1: POP PDP, TAC 000136' 201040 000144' 02090 MOVEI TAC, ASSMS2 000137' 260140 000066* 02100 PUSHJ PDP, CONMES 000140' 201100 000012 02110 MOVEI TAC1, ^D10 000141' 135040 000123* 02120 LDB TAC, PJOBN 000142' 260140 000000* 02130 PUSHJ PDP,ANYRDX 000143' 254000 000003* 02140 JRST CRLF 000144' 406312 242602 02160 ASSMS2: ASCIZ /ALREADY ASSIGNED TO JOB / 000145' 422624 040646 000146' 516230 747212 000147' 421012 447500 000150' 452370 220000 02180 ;DEVICE ASSIGNED, GIVE IT A LOGICAL NAME 000151' 262140 000001 02200 ASSFIN: POP PDP,TAC ;RESTORE INPUT BYTE POINTER 000152' 261140 000006 02210 PUSH PDP,DEVDAT ;SAVE DDB ADDRESS 000153' 260140 000105* 02220 PUSHJ PDP,CTEXT1 ;GET SECOND ARG, LOGICAL DEVICE NAME 000154' 332040 000002 02230 SKIPE TAC,TAC1 ;IS THERE A LOGICAL NAME SPECIFIED? 000155' 260140 000000* 02240 PUSHJ PDP, DEVLG ;YES, SEE IF IT IS ALREADY IN USE 02250 ;BY THIS USER 000156' 254000 000161' 02260 JRST ASSF1 ;NO 000157' 201040 000173' 02270 MOVEI TAC,LOGERR ;YES, PRINT ERROR 000160' 260140 000137* 02280 PUSHJ PDP,CONMES 000161' 200303 000000 02290 ASSF1: MOVE DEVDAT,(PDP) ;RESTORE DDB ADDRESS 000162' 202106 000005 02300 MOVEM TAC1,DEVLOG(DEVDAT) ;STORE IN DEVICE DATA BLOCK 000163' 205100 400000 02310 MOVSI TAC1,DVDIRIN ;CLEAR DIRECTORY IN CORE BIT 000164' 412106 000004 02320 ANDCAM TAC1,DEVMOD(DEVDAT) 000165' 260140 000000* 02330 PUSHJ PDP, ERNAM ;PRINT PHYSICAL DEVICE NAME 000166' 262140 000006 02340 POP PDP, DEVDAT 000167' 265040 000160* 02350 JSP TAC,CONMES 000170' 202032 351622 02370 ASCIZ / ASSIGNED 000171' 436350 542032 000172' 050000 000000 02380 / 000173' 462370 744606 02400 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 PAGE 8 T.HASTINGS 8-2-65 02440 ;"DEASSIGN DEV" - DEASSIGNS DEVICE FROM CONSOLE 02460 INTERNAL DEASSIGN, NOTDEV 02470 EXTERNAL CTEXT1, DEVSRC, CONMES, ERNAM, DEASG, DEASTY 000201' 260140 000153* 02490 DEASSIGN: PUSHJ PDP, CTEXT1 ;GET DEVICE NAME 000202' 322100 000000* 02500 JUMPE TAC1,DEASTY ;NO ARG. IF 0, DEASSIGN ALL BUT TTY 000203' 200040 000002 02510 MOVE TAC, TAC1 ;DEVICE NAME 000204' 260140 000000* 02520 PUSHJ PDP, DEVSRC ;SEARCH FOR DEVICE 000205' 254000 000211' 02530 JRST DEAER1 ;NOT FOUND 000206' 260140 000000* 02540 PUSHJ PDP, DEASG ;FOUND, DEASSIGN IT 000207' 254000 000216' 02550 JRST DEAER2 ;NOT PREVIOUSLY ASSIGNED 000210' 263140 000000 02560 POPJ PDP, ;DEVICE DEASSIGNED 000211' 02580 NOTDEV: 000211' 265040 000167* 02590 DEAER1: JSP TAC,CONMES ;PRINT NO SUCH DEVICE 000212' 472364 051652 02610 ASCIZ /NO SUCH DEVICE 000213' 416204 042212 000214' 532230 342432 000215' 050000 000000 02620 / 000216' 261140 000006 02640 DEAER2: PUSH PDP, DEVDAT ;PRINT PHYSICAL DEVICE NAME 000217' 260140 000165* 02650 PUSHJ PDP, ERNAM 000220' 262140 000006 02660 POP PDP, DEVDAT 000221' 265040 000211* 02670 JSP TAC,CONMES 000222' 536032 347116 02690 ASCIZ /WASN'T ASSIGNED 000223' 521010 151646 000224' 446171 642610 000225' 064240 000000 02700 / COMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES PAGE 9 T.HASTINGS 8-2-65 02740 ; "ATTACH N" - ATTACH CONSOLE TO JOB N 02750 ;CHANGES ADDRESS OF TTY DEVICE DATA BLOCK STORED IN -1(PDP) 02760 ;BY THE COMMAND DECODER 02780 INTERNAL ATTACH 02790 EXTERNAL DECIN,TTYATT,JOBN,ERNAM,CONMES,TTYFND 000226' 260140 000050* 02810 ATTACH: PUSHJ PDP,DECIN ;GET JOB NO. 000227' 254000 000243' 02820 JRST ATT1 ;NOT A NUMBER OR NONE SPECIFIEED 000230' 332000 000002 02830 SKIPE TAC1 ;0 IS ILLEGAL 000231' 301100 000000* 02840 CAIL TAC1, JOBN ;IS JOB NUMBER TOO BIG? 000232' 254000 000243' 02850 JRST ATT1 ;ILLEGAL JOB NUMBER 000233' 205040 004000 02860 MOVSI TAC,JNA ;HAS THIS JOB NO BEEN ASSIGNED? 000234' 616042 000033* 02870 TDNN TAC,JBTSTS(TAC1) 000235' 254000 000261' 02880 JRST ATT4 ;NO, PRINT ERROR 000236' 200200 000002 02890 MOVE ITEM,TAC1 ;JOB NUMBER TO ITEM 000237' 260140 000000* 02900 PUSHJ PDP,TTYATT ;NO, ATTACH TTY 000240' 254000 000251' 02910 JRST ATT2 ;ERROR CANT ATTACH 000241' 202303 777777 02920 MOVEM DEVDAT,-1(PDP) ;CHANGE DEV DATA BLOCK ADDRES 000242' 254000 000000* 02930 JRST TTYFND ;ATTACHED. GO SET UP OUTP. BYTE PTR. 000243' 265040 000221* 02950 ATT1: JSP TAC,CONMES 000244' 446311 442616 02960 ASCIZ /ILLEGAL JOB NUMBER 000245' 406304 045236 000246' 411011 652632 000247' 412132 206424 02970 / 000250' 000000 000000 000251' 261140 000006 02990 ATT2: PUSH PDP,DEVDAT 000252' 260140 000217* 03000 PUSHJ PDP,ERNAM ;PRINT TTY DEVICE NAME 000253' 262140 000001 03010 POP PDP,TAC 000254' 265040 000243* 03020 JSP TAC,CONMES 000255' 202031 451212 03030 ASCIZ / ALREADY ATTACHED 000256' 406113 120202 000257' 522510 141620 000260' 426101 505000 03040 / 000261' 265040 000254* 03060 ATT4: JSP TAC,CONMES 000262' 452370 220234 03070 ASCIZ /JOB NEVER WAS INITIATED 000263' 426550 551100 000264' 536032 320222 000265' 472232 444602 000266' 522130 406424 03080 / 000267' 000000 000000 03100 ; "DETACH" - DETACH CONSOLE FORM JOB 03120 INTERNAL DETACH 03130 EXTERNAL TTYDET 000270' 350003 000000 03150 DETACH: AOS (PDP) ;SUPRESS CR-LF SO NO TTY DDB SETUP COMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES PAGE 9-1 T.HASTINGS 8-2-65 000271' 254000 000000* 03160 JRST TTYDET ;GO DETACH TTY 03180 END, NO ERRORS DETECTED PROGRAM BREAK IS 000272 8K CORE USED COMCON - COMMON CONTROL - THE COMMAND SETUP ROUTINES PAGE 10 SYMBOL TABLE 000303 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 PAGE 10-1 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 PAGE 10-2 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 PAGE 10-3 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 11:23:08 File: DSKB1 :COMCSS.LST [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:19 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:2587 File will be deleted after printing COMCSS - COMMAND COMMON ROUTINES PAGE 1 T. HASTINGS 8-15-65 00010 XLIST 01930 LIST COMCSS - COMMAND COMMON ROUTINES PAGE 7 T. HASTINGS 8-15-65 00010 TITLE COMCSS - COMMAND COMMON ROUTINES 00020 SUBTTL T. HASTINGS 8-15-65 00030 ;ROUTINE TO RETURN NEXT ALPHANUMERIC STRING 00040 ; IN COMMAND LINE (SIXBIT) 00050 ; CALL: MOVE TAC, BYTE POINTER TO FIRST CHAR.-1 00060 ; PUSHJ PDP, CTEXT 00070 ; SIXBIT STRING RETURN LEFT JUSTIFIED IN AC TAC1 00090 INTERNAL CTEXT, CTEXT1 000012 00110 T=BUFPNT ;TEMPORARY ACS 000013 00120 T1=BUFWRD 000014 00130 T2=UUO 000000' 201100 000000 00150 CTEXT1: MOVEI TAC1, 0 ;CHECK PREVIOUS BREAK CHAR. 000001' 135500 000001 00160 LDB T, TAC 000002' 306500 000015 00170 CAIN T, 15 ;RETURN IF CR. 000003' 263140 000000 00180 POPJ PDP, 000004' 260140 000035' 00200 CTEXT: PUSHJ PDP, SKIPS ;SKIP LEADING SPACES, TABS 000005' 200500 000231' 00210 MOVE T,[POINT 6,TAC1] 000006' 201100 000000 00220 MOVEI TAC1, 0 000007' 135540 000001 00230 LDB T1, TAC 000010' 254000 000012' 00240 JRST CTEX1 000011' 134540 000001 00250 CTEX0: ILDB T1,TAC 000012' 260140 000024' 00260 CTEX1: PUSHJ PDP, CTEX ;IS IT ALPHANUMERIC 000013' 263140 000000 00270 POPJ PDP, ;NO. EXIT 000014' 640540 000040 00280 TRC T1,40 ;CONVERT TO SIXBIT 000015' 136540 000012 00290 IDPB T1,T ;YES, STORE AWAY 000016' 312500 000232' 00300 CAME T,[POINT 6,TAC1,35] ;SIX CHARACTER YET 000017' 254000 000011' 00310 JRST CTEX0 ;NO 000020' 134540 000001 00320 CTEX2: ILDB T1, TAC ;YES 000021' 260140 000024' 00330 PUSHJ PDP, CTEX ;IS IT ALPHANUMERIC 000022' 263140 000000 00340 POPJ PDP, ;NO, EXIT 000023' 254000 000020' 00350 JRST CTEX2 00370 ;SCAN FOR ALPHANUMERIC CHAR IN T1 000024' 301540 000060 00380 CTEX: CAIL T1, "0" 000025' 303540 000132 00390 CAILE T1, "Z" ;LETTERS ARE LARGER THAN NOS. 000026' 263140 000000 00400 POPJ PDP, ;NEITHER 000027' 303540 000071 00410 CAILE T1, "9" 000030' 301540 000101 00420 CAIL T1, "A" 000031' 350003 000000 00430 AOS (PDP) ;LETTER OR NUMBER 000032' 263140 000000 00440 POPJ PDP, COMCSS - COMMAND COMMON ROUTINES PAGE 2 T. HASTINGS 8-15-65 00470 ;ROUTINE TO IGNORE LEADING SPACES AND TABS 00480 ;CALL: MOVE TAC, BYTE POINTER TO CHAR. 00490 ; PUSHJ PDP, SKIPS1 00510 INTERNAL SKIPS1 000033' 135500 000001 00530 SKIPS1: LDB T, TAC 000034' 254000 000036' 00540 JRST SKIPSA 00560 ;ROUTINE TO IGNORE LEDING SPACES AND TABS 00570 ;CALL: MOVE TAC, BYTE POINTER TO CHAR.-1 00580 ; PUSHJ PDP, SKIPS 00600 INTERNAL SKIPS 000035' 134500 000001 00620 SKIPS: ILDB T, TAC 000036' 302500 000040 00630 SKIPSA: CAIE T, " " 000037' 306500 000011 00640 CAIN T, 11 000040' 254000 000035' 00650 JRST SKIPS 000041' 263140 000000 00660 POPJ PDP, COMCSS - COMMAND COMMON ROUTINES PAGE 3 T. HASTINGS 8-15-65 00690 ;ROUTINE TO APPEND A "?" TO INPUT STRING AND SET AS OUTPUT 00700 ;CALL: MOVE TAC, BYTE POINTER TO LAST CHAR. IN INPUT STRING 00710 ; PUSHJ PDP, COMERA 00730 INTERNAL COMERA 000042' 133000 000001 00750 COMERA: IBP TAC 00770 ;ROUTINE TO REPLACE LAST CHARACTER IN INPUT STRING BY "?" 00780 ;AND SET AS OUTPUT 00790 ;CALL: MOVE TAC, BYTE POINTER TO LAST CHAR. IN INPUT STRING 00800 ; PUSHJ PDP, COMERR 00820 INTERNAL COMERR 00840 EXTERNAL TTYBUF 000043' 200240 000001 00860 COMERR: MOVE DAT,TAC 000044' 201506 000000* 00870 MOVEI T,TTYBUF(DEVDAT) ;IS THERE MORE THAN 3 WORDS I 000045' 305505 777775 00880 CAIGE T,-3(DAT) 000046' 541252 000003 00890 HRRI DAT,3(T) ;YES, TYPE ONLY 3 000047' 201500 000077 00900 MOVEI T, "?" ;APPEND "?" 000050' 137500 000005 00910 DPB T, DAT 000051' 265040 000060' 00920 JSP TAC,CONMES 000052' 202331 747222 00940 ASCIZ / MONITOR COMMAND ERROR 000053' 522372 220206 000054' 476331 540634 000055' 421010 551244 000056' 476441 505000 00950 / COMCSS - COMMAND COMMON ROUTINES PAGE 4 T. HASTINGS 8-15-65 00980 ;ROUTINE TO PRINT CARRIAGE RETURN-LINE-FEED 00990 ;CALL: MOVE DAT,BYTE POINTER TO OUTPUT 01000 ; PUSHJ PDP,CRLF 01020 INTERNAL CRLF 01040 CRLF: MOVEI TAC,[ASCII / 000057' 201040 000233' 01050 /] 01070 ;ROUTINE TO MOVE ASCII CHAR. STRING TO CONSOLE OUTPUT BUFFER 01080 ; CALL: MOVE DAT, BYTE POINTER TO LAST OUTPUT CHARACTER 01090 ; MOVEI TAC, ADDRESS OF ASCII MESSAGE` 01100 ; PUSHJ PDP, CONMES 01110 ; STRING TERMINATED BY NULL 01120 ; CONMES DOES NOT START TTY 01140 INTERNAL CONMES 000060' 261140 000002 01160 CONMES: PUSH PDP, TAC1 000061' 505040 440700 01170 HRLI TAC, 440700 ;FORM BYTE POINTER 000062' 134100 000001 01180 CON0: ILDB TAC1, TAC 000063' 322100 000066' 01190 JUMPE TAC1, CON1 000064' 136100 000005 01200 IDPB TAC1, DAT 000065' 254000 000062' 01210 JRST CON0 000066' 262140 000002 01220 CON1: POP PDP, TAC1 000067' 263140 000000 01230 POPJ PDP, 01250 ;ROUTINE TO PRINT "TO FEW ARGUMENTS" 01260 ;CALL: MOVE DAT,BYTE POINTER 01270 ; PUSHJ PDP,NOTENF 01290 INTERNAL NOTENF 000070' 265040 000060' 01310 NOTENF: JSP TAC,CONMES 000071' 522371 720214 01330 ASCIZ /TOO FEW ARGUMENTS 000072' 426564 040644 000073' 436531 542634 000074' 522461 505000 01340 / COMCSS - COMMAND COMMON ROUTINES PAGE 5 T. HASTINGS 8-15-65 01370 ;ROUTINE TO INITIALIZE A JOB 01380 ;CALL: MOVE ITEM, JOB NUMBER 01390 ; PUSHJ PDP, JOBINI 01400 ; DEVDAT IS SETUP ON RETURN 01420 INTERNAL JOBINI,JOBZER 01430 EXTERNAL JBTSTS,PJOBN,CORE1,MONJOB,ESTOP,TTYATT 000075' 326200 000100' 01450 JOBINI: JUMPN ITEM,JOB0 ;HAS A JOB NUMBER BEED ASSIGNED? 000076' 260140 000135' 01460 PUSHJ PDP,ASSJOB ;NO, THEN ASSIGN ONE. 000077' 254000 000060' 01470 JRST CONMESS ;NONE LEFT 000100' 260140 000000* 01480 JOB0: PUSHJ PDP,TTYATT ;ATTACH TTY 000101' 255000 000000 01490 JFCL ;ALREADY ATTACHED 000102' 205040 004000 01500 MOVSI TAC,JNA ;CLEAR JOB NO. ASSIGNED BIT 000103' 412044 000000* 01510 ANDCAM TAC,JBTSTS(ITEM) ;TO FORCE MESSAGE 000104' 205040 646471 01520 MOVSI TAC,646471 ;SIXBIT /TTY/ 000105' 202046 000005 01530 MOVEM TAC, DEVLOG(DEVDAT) ;SET LOGICAL NAME 000106' 201500 400000 01540 MOVEI T, ASSCON ;SET ASSIGNED BY CONSOLE BIT 000107' 436506 000004 01550 IORM T, DEVMOD(DEVDAT) 000110' 260140 000172' 01560 PUSHJ PDP, DEASTY ;DE-ASSIGNED ALL DEVICES EXCEPT TTY 000111' 322440 000000* 01570 JUMPE JDAT,CPOPJ ;DOES JOB ALREDY HAVE CORE? 01590 ;ROUTINE TO RELEASE ALL DEVICES AND FLUSH CORE 01600 ;RUN AS MONITOR JOB 01610 ;CALL: SAME AS JOBIN 01630 EXTERNAL IOKILL 000112' 541100 000115' 01650 JOBZER: HRRI TAC1,JOB1 ;ADDRESS OF SUB. TO RELEASE DEV. 000113' 505100 000000* 01660 JOBZR1: HRLI TAC1, ESTOP ;RETURN ADDRESS AFER IORELS 000114' 254000 000000* 01670 JRST MONJOB ;GO SCHEDULE MONITOR JOB 000115' 260140 000000* 01690 JOB1: PUSHJ PDP,IOKILL ;KILL ALL IO DEVICES 000116' 201040 000000 01700 MOVEI TAC,0 ;FLUSH ALL CORE 000117' 370003 000000 01710 SOS (PDP) ;CORE1 WILL SKIP RETURN 000120' 254000 000000* 01720 JRST CORE1 COMCSS - COMMAND COMMON ROUTINES PAGE 6 T. HASTINGS 8-15-65 01750 ;ROUTINE TO KILL CURRENT JOB 01760 ;CALL PUSHJ PDP,JOBKIL 01780 INTERNAL JOBKIL 01790 EXTERNAL JBTSTS,TTYKIL 000121' 350003 000000 01810 JOBKIL: AOS (PDP) ;SUPRESS CR-LF AND JOB INIT. CHECK 000122' 201040 000001 01820 MOVEI TAC,1 000123' 260140 000173' 01830 PUSHJ PDP,DEASAL ;DEASSIGN ALL DEVICES 000124' 322440 000132' 01840 JUMPE JDAT,JOBKA ;DOES JOB HAVE CORE? 000125' 541100 000127' 01850 HRRI TAC1,JOBK2 ;YES,RELEAS DEVICE AND CLEAR 000126' 254000 000113' 01860 JRST JOBZR1 000127' 261140 000006 01880 JOBK2: PUSH PDP,DEVDAT ;SAVE DEVDAT FOR TTYKIL 000130' 260140 000115' 01890 PUSHJ PDP,JOB1 ;FLUSH CORE AND RELEASE DEVICES 000131' 262140 000006 01900 POP PDP,DEVDAT 000132' 205040 002000 01910 JOBKA: MOVSI TAC,JERR ;CLEAR ALL BUT JOB ERROR BIT 000133' 202044 000103* 01920 MOVEM TAC,JBTSTS(ITEM) ;IN JOB STATUS WORD 000134' 254000 000000* 01930 JRST TTYKIL ;RETURN TTY TO VIRGIN STATE 01950 ;ROUTINE TO ASSIGN AN UNUSED JOB NUMBER 01960 ;CALL PUSHJ PDP,ASSJOB 01970 ; ERROR RETURN TAC DESTROYED 01980 ; OK RETURN ITEM SET, TAC AND TAC1 PRESERVED 02000 INTERNAL ASSJOB 02010 EXTERNAL MJOBN,JBTSTS,CPOPJ1 000135' 205200 000000* 02030 ASSJOB: MOVSI ITEM,MJOBN 000136' 253200 000137' 02040 AOBJN ITEM,.+1 000137' 205540 004000 02050 MOVSI T1,JNA 000140' 612544 000133* 02060 TDNE T1,JBTSTS(ITEM) 000141' 253200 000140' 02070 AOBJN ITEM,.-1 000142' 325200 000145' 02080 JUMPGE ITEM,ASSJB1 000143' 405200 777777 02090 ANDI ITEM,-1 000144' 254000 000000* 02100 JRST CPOPJ1 000145' 265040 000060' 02120 ASSJB1: JSP TAC,CONMES 000146' 452370 220206 02130 ASCIZ /JOB CAPACITY EXCEEDED 000147' 406410 141622 000150' 522624 042660 000151' 416130 542212 000152' 420321 200000 02140 / COMCSS - COMMAND COMMON ROUTINES PAGE 7 T. HASTINGS 8-15-65 02170 ;ROUTINE TO DEASSIGN A DEVICE 02180 ;CALL: MOVE DEVDAT, DEVICE DATA BLOCK 02190 ; MOVE ITEM, JOB NUMBER 02200 ; PUSHJ DPD, DEASG 02210 ; ERROR NOT PREVIOUSLY ASSIGNED 02220 ; OK RETURN WITH DEVICE DEASSIGNED 02240 INTERNAL DEASG 02250 EXTERNAL PJOBN, CPOPJ1 000153' 135500 000000* 02270 DEASG: LDB T, PJOBN ;WAS DEVICE ASSIGNED TO THIS JOB? 000154' 312500 000004 02280 CAME T, ITEM 000155' 263140 000000 02290 POPJ PDP, ;NO. RETURN 000156' 205500 400000 02300 MOVSI T,DVDIRIN ;CLEAR DIRECTORY IN CORE BIT 000157' 412506 000004 02310 ANDCAM T,DEVMOD(DEVDAT) 000160' 201500 400000 02320 MOVEI T, ASSCON ;YES, IS ASSIGNED BY CONSOLE BIT ON? 000161' 616506 000004 02330 TDNN T, DEVMOD(DEVDAT) 000162' 263140 000000 02340 POPJ PDP, ;NO 000163' 413506 000004 02350 ANDCAB T,DEVMOD(DEVDAT) ;YES, CLEAR BIT 000164' 402006 000005 02360 SETZM DEVLOG(DEVDAT) ;CLEAR LOGICAL NAME 000165' 602500 200000 02370 TRNE T, ASSPRG ;IS ASSIGNED BY PROGRAM BIT ON? 000166' 254000 000144* 02380 JRST CPOPJ1 ;YES 000167' 201500 000000 02390 MOVEI T,0 ;NO, CLEAR JOB NUMBER 000170' 137500 000153* 02400 DPB T, PJOBN 000171' 254000 000166* 02410 JRST CPOPJ1 02430 ;ROUTINE TO DEASSIGN ALL DEVICES EXCEPT LOGICAL TTY 02440 ;CALL: MOVE ITEM, JOB NUMBER 02450 ; PUSHJ PDP, DEASTY 02470 INTERNAL DEASTY 000172' 205040 646471 02490 DEASTY: MOVSI TAC, 646471 ;SIXBIT /TTY/ 02500 ;FALL INTO DEASAL 02520 ;ROUTINE TO DEASSIGN ALL DEVICES EXECPT ONE 02530 ;CALL: MOVE ITEM, JOB NUMBER 02540 ; MOVE TAC, LOGICAL DEVICE NOT TO BE DEASSIGNED 02550 ; PUSHJ PDP, DEASAL 02570 INTERNAL DEASAL 02580 EXTERNAL DEVLST 000173' 261140 000006 02600 DEASAL: PUSH PDP,DEVDAT 000174' 554300 000000* 02610 HLRZ DEVDAT,DEVLST ;SEARCH ALL DDBS 000175' 312046 000005 02620 DEA1: CAME TAC, DEVLOG(DEVDAT) ;IS THIS THE LOGICAL NAME 000176' 260140 000153' 02630 PUSHJ PDP, DEASG ;NO, TRY TO DEASSIGN IT 000177' 255000 000000 02640 JFCL ;IGNORE IF CANT 000200' 554306 000003 02650 HLRZ DEVDAT, DEVSER(DEVDAT) 000201' 326300 000175' 02660 JUMPN DEVDAT, DEA1 000202' 262140 000006 02670 POP PDP,DEVDAT 000203' 263140 000000 02680 POPJ PDP, COMCSS - COMMAND COMMON ROUTINES PAGE 8 T. HASTINGS 8-15-65 02710 ;ROUTINE TO READ CONSOLE AND CONVERT ANY RADIX NUMBER 02720 ; CALL: MOVE TAC1, DESIRED RADIX 02730 ; MOVE TAC, BYTE POINTER TO FIRST CHRACTER 02740 ; PUSHJ PDP, ANYRIN 02750 ; ERROR EXIT ;AC TAC1=0 IF NO NUMBER BEFORE FIRST NO 02760 ; NORMAL EXIT ;AC TAC1 CONTAINS NUMEBR 02770 ; SCAN STOPS ON FIRST ILLEGAL CHARACTER OR CR 02780 ; IGNORES SPACES, TABS, RUBOUTS 02800 INTERNAL OCTIN,ANYRIN,DECIN,DECIN1 02810 EXTERNAL CPOPJ1, CPOPJ 000012 02830 C=BUFPNT ;CHARACTER AC 000013 02840 R=BUFWRD ;RADIX AC 000204' 133000 000001 02860 DECIN1: IBP TAC ;SKIP SEPARATION CHARACTER 000205' 201100 000012 02870 DECIN: MOVEI TAC1,12 ;DECIMAL INPUT 000206' 254000 000210' 02880 JRST ANYRIN 000207' 201100 000010 02900 OCTIN: MOVEI TAC1, 10 000210' 200540 000002 02910 ANYRIN: MOVE R, TAC1 000211' 201100 000000 02920 MOVEI TAC1, 0 000212' 260140 000033' 02930 PUSHJ PDP, SKIPS1 ;SKIP LEADING SPACES, TABS 000213' 135500 000001 02940 LDB C, TAC 000214' 306500 000015 02950 CAIN C, 15 ;CHECK FOR INITIAL CR 000215' 263140 000000 02960 POPJ PDP, ;EXIT WITH 0 IN TAC1 000216' 302500 000055 02970 OCT0: CAIE C,"-" ;DASH? 000217' 306500 000015 02980 CAIN C,15 ;CR? 000220' 254000 000171* 02990 JRST CPOPJ1 ;YES, ONLY LEGAL TERMINATORS 000221' 275500 000060 03000 SUBI C,60 000222' 321500 000224' 03010 JUMPL C, OCTE ;ERROR IF NEGATIVE 000223' 311500 000013 03020 CAML C, R ;OR .GE. RADIX 000224' 344100 000111* 03030 OCTE: AOJA TAC1,CPOPJ ;ERROR,INSURE TAC1 NON-ZERO 000225' 220100 000013 03040 IMUL TAC1, R 000226' 270100 000012 03050 ADD TAC1, C 000227' 134500 000001 03060 OCT1: ILDB C, TAC 000230' 254000 000216' 03070 JRST OCT0 03090 END, 000231' 440600 000002 000232' 000600 000002 000233' 064240 000000 NO ERRORS DETECTED PROGRAM BREAK IS 000234 8K CORE USED COMCSS - COMMAND COMMON ROUTINES PAGE 9 SYMBOL TABLE 000245 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 PAGE 9-1 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 PAGE 9-2 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 PAGE 9-3 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 11:23:08 File: DSKB1 :COMINI.LST [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:19 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:2574 File will be deleted after printing COMINI - THE COMMAND DECODER PAGE 1 T. HASTINGS 8-2-65 00010 XLIST 01930 LIST COMINI - THE COMMAND DECODER PAGE 7 T. HASTINGS 8-2-65 00010 TITLE COMINI - THE COMMAND DECODER 00020 SUBTTL T. HASTINGS 8-2-65 00030 ;CALLED FROM CLOCK ROUTINE WHEN COMCNT IS GREATER THAN 0 00040 ;AS SET BY TTY SERVICE ROUTINE 00050 ;ALL ACS HAVE BEEN SAVED BY CLOCK CHANNEL 00060 ;THE COMMAND DECODER CALLS TTYCOM WHICH SCANS FOR TTY WHICH TYPED 00070 ;THE COMMAND AND THEN DISPATCHES(PUSHJ) TO APPROPRIATE 00080 ;COMMAND SETUP ROTUINE OF THE SAME NAME WITH ACS SET AS: 00090 ;ITEM = JOB NUMBER 00100 ;TAC = BYTE POINTER TO COMMAND STRING(SSPACE OR CR AFTER COMMAND NAME) 00110 ;DAT = BYTE POINTER TO LAST OUTPUT CHARACTER 00120 ;DEVDAT = ADDRESS OF DEVICE DATA BLOCK TYPING COMMAND 00130 ;JDAT = ADDRESS OF JOB AREA, = 0 IF NO JOB AREA 00140 ;PROG = ADDRESS OF PROGRAM AREA 00150 ;DEVDAT IS ALSO PUSHED ON END OF PD LIST SO IT MAY BE DESTROYED 00160 ;UPON RETURN FROM COMMAND SETUP ROUTINE. A CR-LF IS ADDED TO 00170 ;MASSAGE AND TTY IS STARTED ON TTY SPCIFIED BY -1(PDP) 00190 ;SINCE THE COMMAND DECODER IS CALLED FROM CLOCK ROUTINE 00200 ;COMMAND SETUP ROUTINE MUST RUN TO COMPLETION QUICKLY 00210 ;IF A COMMAND FUNCTION CANNON DO THIS. IT MUST JUST SET 00220 ;THE JOB TO RUNABLE STATUS AND RETURN IMMEDIATELY 00240 INTERNAL COMMAND 00250 EXTERNAL TTYCOM,TTYSTR,CTEXT,JBTADR,CONMES 00260 EXTERNAL COMERR,COMCNT 00270 EXTERNAL JOBINI,CRLF,CTEXT,RADX10,ASSJOB,JBTSTS 000012 00290 T=BUFPNT ;TEMPORARY ACS 000013 00300 T1=BUFWRD COMINI - THE COMMAND DECODER PAGE 2 T. HASTINGS 8-2-65 000000' 260140 000000* 00330 COMMAND: PUSHJ PDP, TTYCOM ;SETUP DEVDAT,DAT,TAC, AND ITEM 000001' 254000 000041' 00340 JRST COM2 ;NONE FOUND 000002' 261140 000006 00350 PUSH PDP,DEVDAT ;SAVE TTY DDB ADDRESS 000003' 260140 000000* 00360 PUSHJ PDP, CTEXT ;RETURN COMMAND NAME IN TAC1 000004' 322100 000043' 00370 JUMPE TAC1, COM2A ;IGNORE BLANK LINE 000005' 205500 777760 00380 MOVSI T, -DISPL ;SEARCH FOR COMMAND NAME 000006' 312112 000074' 00390 CAME TAC1, COMTAB(T) 000007' 253500 000006' 00400 AOBJN T, .-1 000010' 325500 000047' 00410 JUMPGE T,COM2B ;WAS COMMAND FOUND? 000011' 200112 000114' 00420 MOVE TAC1,DISP(T) ;YES, GET DISPATCH ADDRESS AND BITS 000012' 326200 000026' 00430 JUMPN ITEM, COM1 ;HAS A JOB NUMBER BEEN ASSIGNED 000013' 603100 200000 00440 TLNE TAC1,NOJOBN ;NO, IS A JOB NUMBER NEEDED FOR THIS CO 000014' 254000 000026' 00450 JRST COM1 ;NO 000015' 260140 000000* 00460 PUSHJ PDP,ASSJOB ;TRY TO ASSIGN A FREE JOB NUMBER 000016' 254000 000067' 00470 JRST COM3A ;NONE AVAILABLE, ERROR MESSAGE COMINI - THE COMMAND DECODER PAGE 3 T. HASTINGS 8-2-65 000017' 261140 000001 00500 PUSH PDP, TAC ;SAVE INPUT BYTE POINTER 000020' 261140 000002 00510 PUSH PDP,TAC1 ;SAVE ADDRESS OF COMMAND ROUTINE 000021' 403340 000011 00520 SETZB PROG,JDAT ;NO CORE, CLEAR REL. ADRESS 000022' 260140 000000* 00530 PUSHJ PDP,JOBINI ;INITIALIZE JOB 000023' 262140 000002 00540 POP PDP,TAC1 ;RESTORE ADR OF COMMAND ROUTINE 000024' 262140 000001 00550 POP PDP, TAC ;RESTORE INPUT BYTE POINTER 000025' 202303 000000 00560 MOVEM DEVDAT,(PDP) ;SET ADDRESS OF TTY DEV. DATA BLOCK 000026' 550444 000000* 00570 COM1: HRRZ JDAT, JBTADR(ITEM) ;AND JOB DATA AREA 000027' 336340 000011 00580 SKIPN PROG,JDAT ;SET PROG. DOES JOB HAVE CORE? 000030' 603100 400000 00590 TLNE TAC1,NOCORE ;NO. IS CORE NEEDED FOR THIS COMMAND? 000031' 254000 000035' 00600 JRST COM1C ;NO 000032' 201040 000051' 00610 MOVEI TAC,NOCOR ;YES, PRINT "NO CORE ASSIGNED" 000033' 260140 000000* 00620 COM1B: PUSHJ PDP,CONMES 000034' 254000 000036' 00630 JRST COM1A 000035' 260142 000000 00650 COM1C: PUSHJ PDP,(TAC1) ;DISPATCH TO COMMAND SETUP ROUTINE 000036' 326200 000055' 00660 COM1A: JUMPN ITEM, COM3 ;ADD CR-LF AND CHECK FOR JOB INIT. 000037' 262140 000006 00670 COM1D: POP PDP,DEVDAT ;RESTORE TTY DDB ADDRESS 000040' 260140 000000* 00680 PUSHJ PDP, TTYSTR ;START OUTPUT, IF ANY 000041' 370000 000000* 00690 COM2: SOS COMCNT ;DECREMENT COMMAND COUNT 000042' 263140 000000 00700 POPJ PDP, ;EXIT 000043' 135100 000001 00720 COM2A: LDB TAC1, TAC ;NULL FIELD. WAS BREAK CHAR. A CR? 000044' 302100 000015 00730 CAIE TAC1,15 ;A CR? 000045' 306100 000073 00740 CAIN TAC1,";" ;OR A SEMI COLON? 000046' 254000 000037' 00750 JRST COM1D ;YES. IGNORE LINE 000047' 260140 000000* 00760 COM2B: PUSHJ PDP,COMERR ;NO. PRINT MONITOR COMMAND ERROR 000050' 254000 000037' 00770 JRST COM1D 000051' 472364 041636 00790 NOCOR: ASCIZ /NO CORE ASSIGNED 000052' 512124 040646 000053' 516230 747212 000054' 420321 200000 00800 / 000055' 200044 000000* 00820 COM3: MOVE TAC,JBTSTS(ITEM) ;GET STATUS WORD 000056' 663040 004000 00830 TLOE TAC,JNA ;IS JOB NO ASSIGNED BIT ON YET 000057' 254000 000067' 00840 JRST COM3A ;YES, JOB INIT. BEFORE 000060' 202044 000055* 00850 MOVEM TAC,JBTSTS(ITEM) 000061' 201040 000134' 00860 MOVEI TAC,[ASCIZ /JOB /] 000062' 260140 000033* 00870 PUSHJ PDP,CONMES ;PRINT JOB N INITIALIZED 000063' 200040 000004 00880 MOVE TAC,ITEM 000064' 260140 000000* 00890 PUSHJ PDP,RADX10 ;PRINT JOB NUMBER 000065' 201040 000071' 00900 MOVEI TAC,JOBM 000066' 260140 000062* 00910 PUSHJ PDP,CONMES 000067' 260140 000000* 00920 COM3A: PUSHJ PDP,CRLF 000070' 254000 000037' 00930 JRST COM1D 000071' 202231 644650 00950 JOBM: ASCIZ / INITIALIZED 000072' 446031 444664 000073' 426101 505000 00960 / COMINI - THE COMMAND DECODER PAGE 4 T. HASTINGS 8-2-65 00990 ;TABLE OF CONSOLE COMMANDS. 400000 01010 NOCORE=400000 ;NO CORE NEEDED FOR COMMAND 200000 01020 NOJOBN=200000 ;NO JOB NUMBER NEEDED FOR COMMAND 01040 DEFINE NAMES 01050 01080 C CORE,CORE,NOCORE 01090 C GET,GET,0 01100 C START,START,0 01110 C IJOB,IJOB,NOCORE+NOJOBN 01120 C PJOB,PJOB,NOCORE 01130 C KJOB,KJOB,NOCORE 01140 C SAVE,SAVE,0 01150 REPEAT 0,< 01160 C RESAVE,COMERR,0 01170 > 01180 C CONT,CONT,0 01190 C DDT,DDTGO,0 01200 C ASSIGN,ASSIGN,NOCORE 01210 C DEASSI,DEASSIGN,NOCORE 01220 C STARTC,STARTC,0 01230 C CONTC,CONTC,0 01240 C DETACH,DETACH,NOCORE+NOJOBN 01250 C ATTACH,ATTACH,NOCORE+NOJOBN 01260 REPEAT 0,< 01270 C MTAPE,COMERR,0 01280 C DAYTIM,COMERR,NOCORE 01290 C RUNTIM,COMERR,NOCORE 01300 C TOTTIM,COMERR,NOCORE 01310 C NULTIM,COMERR,NOCRE 01320 C SYSDDT,COMERR,NOCORE 01330 C SYSMAK,SYSMAK,0 01340 > 01350 C DIGITAL,DIGITAL,NOCORE+NOJOBN 01360 > COMINI - THE COMMAND DECODER PAGE 5 T. HASTINGS 8-2-65 01390 ;GENERATE TABLE OF SIXBIT COMMAND NAMES 01410 DEFINE C(A,B,C) 01420 < ZZ=.+1 01430 SIXBIT /A/ 01440 IFN .-ZZ, ;ONLY FIRST 6 CHARACTERS 01450 > 01470 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 01480 DISPL=.-COMTAB ;LENTH OF TABLE COMINI - THE COMMAND DECODER PAGE 6 T. HASTINGS 8-2-65 01510 ;GENERATE THE DISPATCH TABLE 01530 DEFINE C(A,B,C) 01540 < XWD C,B 01550 EXTERNAL B 01560 > 01580 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 01600 END, 000134' 452370 220000 NO ERRORS DETECTED PROGRAM BREAK IS 000135 9K CORE USED COMINI - THE COMMAND DECODER PAGE 7 SYMBOL TABLE 000241 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 DEVCTR 000011 INT COMINI - THE COMMAND DECODER PAGE 7-1 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 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 IORDEL 000100 INT COMINI - THE COMMAND DECODER PAGE 7-2 SYMBOL TABLE 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 11:23:08 File: DSKB1 :CORE .LST [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:19 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:2564 File will be deleted after printing CORE - CORE ALLOCATION ROUTINE PAGE 1 G. BELL 6-29-65 00010 XLIST 01930 LIST CORE - CORE ALLOCATION ROUTINE PAGE 7 G. BELL 6-29-65 00010 TITLE CORE - CORE ALLOCATION ROUTINE 00020 SUBTTL G. BELL 6-29-65 00030 ; PUSHJ PDP, CORE1 ;ITEM = JOB #. TAC = 1K CORE BLOCKS 00040 ;REQUESTED 00050 ; RET1 ;OLD CORE RETURNED. 00060 ; RET2 ;OLD CORE RETURNED. JBTADR, JOBREL ARE 00070 ;SET UP 00080 ; JBADR (ITEM) = POINTER TO JOB AREA. JOBREL (JBTADR) = HIGHEST LOCAT 00090 ; C(RH) JBTADR IS SET OT 0 OR REQUESTED CORE. JOBREL IS SET IF CORE G 00100 ; NOT A PURE PROCEDURE ... 00110 ;CORTAL: 0 ;COUNT OF FREE CORE 00120 ;CORTAB: BLOCK ^D3 ;TABLE OF 72 BITS. 1 BIT FOR 00130 ;1K OF CORE. 1 = USED. 0 = FREE 00140 ;CORLST: POINT 1, CORTAB, 32 ;POINTER FIRST OUT OF BOUNDS 00150 ; 00160 ;TEMPORARY USAGE 000000' 000000 000000 00170 CORUSZ: 0 ;SIZE OF USERS CODE, OLD.-NEW 000001' 000000 000000 00180 CORLOC: 0 ;POSITION OF 1ST FREE BLOCK 00190 ; 00200 ;AC ASSIGNMENTS 000012 00210 COR1=BUFPNT 000013 00220 COR2=BUFWRD 000014 00230 COR3=UUO 00240 INTERNAL CORE1 00250 EXTERNAL JBTADR,JOBREL,CORLST,CORTAL,CORTAB CORE - CORE ALLOCATION ROUTINE PAGE 2 G. BELL 6-29-65 000002' 135500 000042' 00280 CORE1: LDB COR1, CORE1P 000003' 202500 000001' 00290 MOVEM COR1, CORLOC 000004' 322500 000013' 00300 JUMPE COR1, CORGET ;IF 0 NO CORE NOEW. 000005' 554504 000000* 00310 HLRZ COR1, JBTADR(ITEM) ;CLEAR OLD CORE 000006' 350000 000012 00320 AOS COR1 ;HIGHEST ADDRESS AVAIL. FORM 000007' 240500 777766 00330 ASH COR1, -^D10 000010' 202500 000000' 00340 MOVEM COR1, CORUSZ 000011' 402000 000014 00350 CORRET: CLEARM COR3 ;RETURN OLD CORE 000012' 260140 000056' 00360 PUSHJ PDP, CORSTG 000013' 402004 000005* 00370 CORGET: SETZM JBTADR(ITEM) ;CLEAR JOB ADDRESS TO 0 000014' 322040 000037' 00380 JUMPE TAC, COROK ;IF NO CORE TO GET, RETURN 000015' 200600 000043' 00390 MOVE COR3, CORE2P ;SET UP FOR 000016' 476000 000001' 00400 SETOM CORLOC ;HOLE SEARCH 000017' 260140 000044' 00410 CORG1: PUSHJ PDP, CORHOL 000020' 254000 000040' 00420 JRST CORNG ;UNSUCCESSFUL SEARCH 000021' 315500 000001 00430 CAMGE COR1, TAC ;HOLE FOUND 000022' 254000 000017' 00440 JRST CORG1 000023' 213000 000012 00450 CORGVE: MOVNS COR1 ;BACKUP CORLOC 000024' 272500 000001' 00460 ADDM COR1, CORLOC 000025' 202040 000000' 00470 MOVEM TAC, CORUSZ ;RESERVE HOLD FOR JOB 000026' 201600 000001 00480 MOVEI COR3, 1 ;SET CORTAB 000027' 260140 000056' 00490 PUSHJ PDP, CORSTG 000030' 200500 000001' 00500 MOVE COR1, CORLOC ;C(RH)=RELOC, C(LH)=PROTECT 000031' 240500 000012 00510 ASH COR1, ^D10 000032' 542504 000013* 00520 HRRM COR1, JBTADR(ITEM) 000033' 240040 000012 00530 ASH TAC, ^D10 000034' 275040 000001 00540 SUBI TAC, 1 000035' 542052 000000* 00550 HRRM TAC, JOBREL (COR1) 000036' 506044 000032* 00560 HRLM TAC,JBTADR(ITEM) 000037' 350003 000000 00570 COROK: AOS (PDP) 000040' 200040 000000* 00580 CORNG: MOVE TAC, CORTAL 000041' 263140 000000 00590 POPJ PDP, 000042' 121004 000036* 00610 CORE1P: POINT 8, JBTADRR(ITEM),25 000043' 440100 000000* 00620 CORE2P: POINT 1, CORTAB CORE - CORE ALLOCATION ROUTINE PAGE 3 G. BELL 6-29-65 00650 ; PUSHJ PDP, CORHOL ;COR1-HOLES FREE, COR2=TEMP 00660 ; RETURN1 ;COR3=POINTER. RETURN1=END OF STRING RE 00670 ; RETURN2 ;HOLE FOUND. 00680 ; CORLOC CONTAINS 0,1.. N, THE CORE BLK PTR. CORLST IS PTR TO 00690 ; STOP STRING TEST 000044' 402000 000012 00700 CORHOL: CLEARM COR1 000045' 316600 000000* 00710 CORH01: CAMN COR3, CORLST ;TEST DONE 000046' 263140 000000 00720 POPJ PDP, 000047' 134540 000014 00730 ILDB COR2, COR3 ;TEST NEXT BLOCK 000050' 350000 000001' 00740 AOS CORLOC 000051' 336000 000013 00750 SKIPN COR2 000052' 344500 000045' 00760 AOJA COR1, CORH01 ;COUNT FREE 000053' 322500 000045' 00770 JUMPE COR1, CORH01 000054' 350003 000000 00780 AOS (PDP) 000055' 263140 000000 00790 POPJ PDP, 00800 ;; PUSHJ PDP, CORSTG ;CORUSZ=SIZE RESERVED. CORLOC=LOCATION 00810 ; IF COR3=0, THEN FREE CORE 00820 ; IF COR3=1, THEN RESERVE CORE. 00830 ; USES COR1, COR2, COR3 00840 ; CORTAL=COUNT OF FREE CORE. AND IS UPDATED 000056' 261140 000001 00850 CORSTG: PUSH PDP, TAC ;SAVE NO. OF BLOCKS BEING REQ 000057' 200540 000000' 00860 MOVE COR2,CORUSZ ;FIX CORTALLY 000060' 332000 000014 00870 SKIPE COR3 000061' 213000 000013 00880 MOVNS COR2 000062' 272540 000040* 00890 ADDM COR2, CORTAL 000063' 200040 000001' 00900 MOVE TAC, CORLOC ;GET POINTER-1 000064' 231040 000044 00910 IDIVI TAC, ^D36 ;TAC=WORD,TAC1=BIT 000065' 270040 000076' 00920 ADD TAC, CORLP1 ;FORM BYTE POINTER 000066' 213000 000002 00930 MOVNS TAC1 000067' 271100 000044 00940 ADDI TAC1, ^D36 000070' 137100 000077' 00950 DPB TAC1, [POINT 6, TAC, 5] 000071' 200540 000000' 00960 MOVE COR2, CORUSZ 000072' 136600 000001 00970 CORLOP: DPBI COR3, TAC ;SET OR CLEAR EACH BIT IN USE 000073' 367540 000072' 00980 SOJG COR2, CORLOP 000074' 262140 000001 00990 POP PDP, TAC 000075' 263140 000000 01000 POPJ PDP, 000076' 000100 000043* 01020 CORLP1: XWD 100, CORTAB 01040 END, 000077' 360600 000001 NO ERRORS DETECTED PROGRAM BREAK IS 000100 8K CORE USED CORE - CORE ALLOCATION ROUTINE PAGE 4 SYMBOL TABLE 000206 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 PAGE 4-1 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 PAGE 4-2 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 11:23:08 File: DSKB1 :DTSER2.LST [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:20 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:2557 File will be deleted after printing DTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING PAGE 1 L. HANTMANN 8-2-65 MULTIPLE DIRECTORIES VERSION 00010 XLIST 01930 LIST DTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING PAGE 7 L. HANTMANN 8-2-65 MULTIPLE DIRECTORIES VERSION 00010 TITLE DTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING 00020 SUBTTL L. HANTMANN 8-2-65 MULTIPLE DIRECTORIES VERSION 000001 00030 DTSIZ=1 00050 ;SUBROUTINE FOR DIRECTORY SEARCH 00060 ;PROG CONTAINS ACTUAL START OF PROGRAM 00070 ;DEVDAT CONTAINS ACTUAL START OF DVDB 00080 ;UUO CONTAINS RELATIVE ADDRESS OF DIRECTORY ENTRY IN USER AREA 00090 ;FORMAT PUSHJ PDP, UDIRSH 00100 ; JRST X ;RETURN IF EMPTY ENTRY FOUND 00110 ; NORMAL RETURN WHEN ENTRY IS FOUND 00120 INTERNAL ULOOK, UENTER 00130 EXTERNAL UXIT,PUUOAC,IOIERR,DIRERR,ADRCK,CPOPJ1,THSDAT 000004 00140 UDIRLN=4 000100 00150 UDIRIN=100 ;DIRECTORY IN 000200 00160 UDIREN=200 ;DIRECTORY ENTERED INTO 000400 00170 UNWFRE=400 ;FREE BLCOK POINTER CHANGED 001000 00180 ULINKF=1000 ;LAST OUTPUT BLOCK LINKED TO STORAGE 000001 00190 UX1=TAC 000002 00200 UX2=TAC1 000005 00210 UX3=DAT 000000' 602600 777760 00220 UDIRSH: TRNE UUO,777760 ;IS BLOCK IN UUO ACS? 000001' 260140 000000* 00230 PUSHJ PDP,ADRCK ;NO. CHECK ADDRESS 000002' 201054 000003 00240 MOVEI TAC,3(UUO) 000003' 603000 000002 00250 TLNE IOS,IOBEG 000004' 260140 000343' 00260 PUSHJ PDP, UBEG 000005' 550040 000007 00270 HRRZ UX1, PROG ;COPY ADR OF START OF PROGRAM 000006' 272040 000014 00280 ADDM UX1, UUO ;ACTUAL START OF DIR. IN USER 000007' 201066 000000* 00290 MOVEI UX1,@UDIR(DEVDAT) ;ACTUAL POINTER TO DIRECTORY 000010' 550101 000000 00300 HRRZ UX2, 0(UX1) ;RELATIVE ADDR OF 1ST ENTRY I 00310 ;DIRECTORY 000011' 505042 777603 00320 HRLI UX1, -^D129+UDIRLN(UX2) ;ENTRY COUNTER 000012' 272100 000001 00330 ADDM UX2, UX1 ;START OF 1ST ENTRY IN DIRECT 000013' 332000 000002 00340 SKIPE UX2 000014' 303100 000174 00350 CAILE UX2,174 ;IS THE REL ADR OF 1ST ENTRY INSIDE BUF 000015' 254000 000000* 00360 JRST DIRERR ;NO 000016' 336101 000000 00370 UDIR2: SKIPN UX2, 0 (UX1) ;FIRST WORD OF ENTRY 000017' 263140 000000 00380 POPJ PDP, ;SPACES FOUND 000020' 316114 000000 00390 CAMN UX2, 0(UUO) ;CHECK IF = TO USER AREA 000021' 254000 000026' 00400 JRST UDIR4 ;CHECK 2ND WORD 000022' 270040 000034' 00410 UDIR3: ADD UX1, UDIRK1 000023' 321040 000016' 00420 JUMPL UX1, UDIR2 000024' 262140 000001 00430 POP PDP, UX1 ;TAKE PREVIOUS EXIT FROM TABL 000025' 254000 000000* 00440 JRST UXIT ;TABLE FULL 000026' 554114 000001 00450 UDIR4: HLRZ UX2, 1 (UUO) ;2ND WORD IN USER ARE 000027' 322100 000000* 00460 JUMPE UX2, CPOPJ1 000030' 554241 000001 00470 HLRZ UX3, 1 (UX1) ;2ND WORD OF DIRECTORY AREA 000031' 302242 000000 00480 CAIE UX3, 0 (UX2) 000032' 254000 000022' 00490 JRST UDIR3 ;CHECK MORE ENTRIES 000033' 254000 000027* 00500 JRST CPOPJ1 ;MATCH, SKIP RETURN 000034' 000004 000004 00520 UDIRK1: XWD UDIRLN, UDIRLN DTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING PAGE 2 L. HANTMANN 8-2-65 MULTIPLE DIRECTORIES VERSION 00550 ;SUBROUTINE FOR DIRECTORY LOOKUP 00570 ;FORMAT PUSHJ PDP, UDIRLU ;VIA UUO 00580 ; JRST X ;ENTRY NOT IN TABLE 000035' 260140 000000' 00600 ULOOK: PUSHJ PDP, UDIRSH 000036' 254000 000025* 00610 JRST UXIT 000037' 540241 000001 00620 HRR UX3, 1 (UX1) 000040' 506246 000007 00630 HRLM UX3, DEVIAD (DEVDAT) 000041' 505101 000000 00640 ULOOK1: HRLI UX2, 0 (UX1) ;FROM DIRECTORY 000042' 541114 000000 00650 HRRI UX2, 0 (UUO) ;TO USER 000043' 251114 000003 00660 BLT UX2, UDIRLN-1(UUO) 000044' 135100 001272' 00670 LDB UX2,[POINT 12,2(UX1),35] ;GET DATE USER(ENTER)EXEC(LOO 000045' 326100 000050' 00680 JUMPN UX2,.+3 ;IS IT 0? 000046' 200100 000000* 00690 MOVE UX2,THSDAT ;YES, USE CURRENT DATE 000047' 137100 001273' 00700 DPB UX2,[POINT 12,2(UUO),35] ;SET EXEC 000050' 350003 000000 00710 AOS (PDP) 000051' 254000 000311' 00720 JRST UTWDR 00740 ;SUBROUTINE TO ENTER NEW OR CHANGE OLD DIRECTORY ENTRY 00750 ;FORMAT PUSHJ PDP, UDIRCH 00760 ; JRST X ;NO ROOM IN TABLE 000052' 260140 000000' 00780 UENTER: PUSHJ PDP, UDIRSH 000053' 254000 000054' 00790 JRST .+1 000054' 350246 000000* 00800 AOS UX3, UFREE (DEVDAT) 000055' 542254 000001 00810 HRRM UX3,1(UUO) 000056' 506246 000010 00820 HRLM UX3, DEVOAD (DEVDAT) 000057' 250040 000014 00830 EXCH UX1, UUO 000060' 661000 001600 00840 TLO IOS, UDIREN+UNWFRE+ULINKF 000061' 202006 000002 00850 MOVEM IOS, DEVIOS(DEVDAT) 000062' 254000 000041' 00860 JRST ULOOK1 DTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING PAGE 3 L. HANTMANN 8-2-65 MULTIPLE DIRECTORIES VERSION 00890 ;CREATE A CLEAN TAPE AND DIRECTORY 00910 INTERNAL UTPCLR 00920 EXTERNAL USRJDA 000063' 135040 000000* 00940 UTPCLR: LDB TAC,PUUOAC 000064' 200301 000000* 00950 MOVE DEVDAT,USRJDA(TAC) 000065' 322300 000000* 00960 JUMPE DEVDAT,IOIERR 000066' 554046 000000 00970 HLRZ TAC,DEVNAM(DEVDAT) 000067' 302040 446441 00980 CAIE TAC,446441 000070' 254000 000036* 00990 JRST UXIT ;NOT DTA 000071' 200006 000002 01000 MOVE IOS,DEVIOS(DEVDAT) 000072' 621000 000002 01010 TLZ IOS,IOBEG 000073' 661000 000700 01020 TLO IOS,UDIRIN+UDIREN+UNWFRE 01030 IFE DTSIZ,< MOVEM DEVDAT,DIREC> 01040 ;THIS FOR SINGLE DIRECTORY ONLY 000074' 200046 000007* 01050 MOVE TAC,UDIR(DEVDAT) 000075' 200100 001274' 01060 MOVE TAC1,[XWD 1,5] 000076' 202101 000000 01070 MOVEM TAC1,(TAC) 000077' 507000 000001 01080 HRLS TAC 000100' 253040 000101' 01090 AOBJN TAC,.+1 000101' 402001 000000 01100 SETZM (TAC) 000102' 200100 000001 01110 MOVE TAC1,TAC 000103' 350000 000001 01120 AOS TAC 000104' 251042 000176 01130 BLT TAC,176(TAC1) 000105' 201040 000001 01140 MOVEI TAC, 1 000106' 202046 000054* 01150 MOVEM TAC, UFREE (DEVDAT) 000107' 202006 000002 01160 MOVEM IOS, DEVIOS(DEVDAT) 000110' 260140 000326' 01170 PUSHJ PDP,UTPREL 000111' 254000 000070* 01180 JRST UXIT 01210 ;END OF DTDR DTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING PAGE 4 L. HANTMANN 8-2-65 MULTIPLE DIRECTORIES VERSION 01240 SUBTTL L. HANTMAN PART 1 7-13-65 010000 01250 UREV=10000 ;DT REVERSE BIT 000001 01260 DTSIZ=1 ;1 FOR ONE BUFFER PER TAPE UNIT 000001 01280 UBLK=1 ;NUMBER OF BLOCKS/BLOCK 000001 01290 UCHN=1 ;CHANNEL OF DATA CONTROL = 1, LOC 42 000042 01300 UCHA=42 ;DATA CONTROL INTERRUPT POSITION 01310 EXTERNAL UXIT,ADVBFF,ADVBFE,IOSET,OUT,WAIT1,WSYNC 01320 EXTERNAL PIOMOD,PUNIT,UFREE,UDIR,ADRERR,JOBPFI 01330 ENTRY UTDSP 004010 01350 DACI=4010 ;DC INPUT DT 003410 01360 DACO=3410 ;DC OUTPUT DT 220000 01370 SL=220000 ;DT TURN ON. SELECT 003000 01380 DTR=3000 ;DT TURN AROUND DELAY 002000 01390 DT=2000 ;DT START/STOP DELAY 000300 01400 RD=300 ;DT RD 000700 01410 WD=700 ;DT WR 000200 01420 RB=200 ;DT READ BLOCK NOS. 000002 01430 VEOT=2 ;EOT FLAG BIT 010000 01440 GR=10000 ;DT REVERSE BIT 040000 01450 JDE=40000 ;JOB DONE ENABLE 100000 01460 EE=100000 ;ENABLE END FLAG 002000 01470 URDIR=2000 ;READING DIRECTORY 000112' 254000 000326' 01490 UTDSP: JRST UTPREL ;RELEASE 000113' 254000 000312' 01500 JRST UTPCLS ;CLOSE 000114' 254000 000125' 01510 JRST UOUT ;OUTPUT 000115' 254000 000204' 01520 JRST UIN ;INPUT 000116' 254000 000052' 01530 JRST UENTER ;ENTER IN DIRECTORY 000117' 254000 000035' 01540 JRST ULOOK ;LOOKUP IN DIRECTORY 000120' 254000 000633' 01550 JRST UDMPO ;DUMPOUT 000121' 254000 001022' 01560 JRST UDMPI ;DUMPIN 000122' 254000 000272' 01570 JRST SETO ;SET OUTPUT BLOCK NO. 000123' 254000 000267' 01580 JRST SETI ;SET INPUT BLOCK NO. 000124' 254000 000277' 01590 JRST GETF ;GET FREE BLOCK DTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING PAGE 5 L. HANTMAN PART 1 7-13-65 000125' 260140 001142' 01620 UOUT: PUSHJ PDP, UINTER ;CHECK INTERLOCK 000126' 661000 000020 01630 TLO IOS, IO ;WRITING 000127' 550046 000010 01640 HRRZ TAC,DEVOAD(DEVDAT) 000130' 270040 000007 01650 ADD TAC, PROG ;ACTUAL BUFFER ADDRESS 000131' 554106 000010 01660 HLRZ TAC1, DEVOAD(DEVDAT) ;BLOCK TO WRITE 000132' 306100 000001 01670 CAIN TAC1,1 000133' 254000 000171' 01680 JRST UOUT4 ;COPY DIRECTORY 000134' 554101 000001 01690 HLRZ TAC1, 1(TAC) ;BLOCK TIE 000135' 621000 001000 01700 TLZ IOS, ULINKF ;NOT LINKED TO FREE STORAGE 000136' 326100 000144' 01710 JUMPN TAC1, UOUT1 ;USE BALOCK NUMBER INDICATED 000137' 623000 000002 01720 TLZE IOS, IOBEG ;GET FREE STORAGE BLOCK 000140' 260140 000370' 01730 PUSHJ PDP, UBEG3 000141' 661000 001400 01740 TLO IOS,UNWFRE+ULINKF ;LINKED TO FREE STORAGE 000142' 202006 000002 01750 MOVEM IOS, DEVIOS (DEVDAT) 000143' 350106 000106* 01760 AOS TAC1,UFREE(DEVDAT) ;NEXT FREE BLOCK 000144' 306100 000001 01770 UOUT1: CAIN TAC1,1 ;IF 1, THIS IS LAST BLOCK 000145' 400100 000000 01780 SETZ TAC1, ;LAST BLOCK TIE = 0 000146' 506101 000001 01790 HRLM TAC1,1(TAC) ;BLOCK 000147' 552040 001121' 01800 HRRZM TAC,UBUF ;ACTUAL LOCATION OF DATA 000150' 544046 000010 01810 HLR TAC,DEVOAD(DEVDAT) 000151' 506106 000010 01820 HRLM TAC1, DEVOAD(DEVDAT) ;NEXT BLOCK 000152' 254000 000375' 01830 JRST USETW 01840 ;RETURN FROM WRITING 1 BLOCK 000153' 200046 000010 01860 UOUT2: MOVE TAC,DEVOAD(DEVDAT) 000154' 505040 000007 01870 HRLI TAC,PROG ;PROG, BUFFER ADDRESS 000155' 515100 400000 01880 HRLZI TAC1,IOUSE 000156' 412120 000001 01890 ANDCAM TAC1,@TAC ;SET USE BIT IN BUFFER 000157' 554106 000010 01900 HLRZ TAC1,DEVOAD(DEVDAT) ;BLOCK TIE 000160' 322100 000167' 01910 JUMPE TAC1,UOUT3 ;WAS BLOCK WRITTEN THE LAST 0 000161' 540060 000001 01920 HRR TAC,@TAC ;PROG, NEXT BUFFER ADDRESS 000162' 542046 000010 01930 HRRM TAC,DEVOAD(DEVDAT) ;NEXT BUFFER 000163' 602000 000040 01940 TRNE IOS, IOCON ;CONTINUOUS? 000164' 254000 000167' 01950 JRST UOUT3 ;STOP TAPE AND DISMISS 000165' 335020 000001 01960 SKIPGE @TAC ;IS NEXT BUFFER EMPTY? 000166' 254000 000126' 01970 JRST UOUT+1 ;PROCESS NEXT BLOCK 000167' 262140 000001 01980 UOUT3: POP PDP, TAC ;REDUCE TABLE 000170' 254000 001220' 01990 JRST DTC1 ;STOP TAPE AND DISMISS DTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING PAGE 6 L. HANTMAN PART 1 7-13-65 02020 ;COPY DIRECTORY WHEN WRITING BLOCK 1 000171' 505101 000001 02030 UOUT4: HRLI TAC1,1(TAC) ;BUFFER ADDRESS, FROM 000172' 540106 000074* 02040 HRR TAC1, UDIR(DEVDAT) ;DIRECTORY ADDRESS, TO 000173' 550046 000172* 02050 HRRZ TAC, UDIR(DEVDAT) ;DIRECTORY ADDRESS 000174' 251101 000177 02060 BLT TAC1, 177(TAC) ;MORE BUFFER AREA TO DIRECTORY 000175' 661000 000300 02070 TLO IOS, UDIRIN+UDIREN ;SET DIRECTORY BITS 000176' 200126 000173* 02080 MOVE TAC1, @UDIR(DEVDAT) ;NEXT FREE BLOCK IN DIRECTORY 000177' 556106 000143* 02090 HLRZM TAC1,UFREE(DEVDAT) ;PLACE IN DATA BLOCK 000200' 515100 400000 02100 HRLZI TAC1, IOUSE 000201' 413101 000000 02110 ANDCAB TAC1, 0(TAC) ;CLEAR USE BIT 000202' 542106 000010 02120 HRRM TAC1, DEVOAD(DEVDAT) ;ADVANCE BUFFER POINTER 000203' 254000 000242' 02130 JRST UEND2 02140 ,INPUT- NON DUMP 000204' 260140 001142' 02160 UIN: PUSHJ PDP, UINTER ;CHECK INTERLOCK 000205' 621000 000020 02170 TLZ IOS, IO ;READING 000206' 550046 000007 02180 HRRZ TAC,DEVIAD(DEVDAT) ;UBUF:=TAC:=DEVIAD+PROG 000207' 270040 000007 02190 ADD TAC,PROG 000210' 554106 000007 02200 HLRZ TAC1, DEVIAD(DEVDAT) ;BLOCK TO READ 000211' 306100 000001 02210 CAIN TAC1, 1 ;TRYING TO READ DIRECTORY? 000212' 254000 000251' 02220 JRST UIN2 ;COPY DIRECTORY 000213' 552040 001121' 02230 HRRZM TAC,UBUF 000214' 554046 000007 02240 HLRZ TAC,DEVIAD(DEVDAT) ;TAC:=C(DEVIAD LH) 000215' 322040 000236' 02250 JUMPE TAC,UEND ;NEXT BLOCK=00, THEN END OF FI 000216' 254000 000377' 02260 JRST USETR 02270 ;RETURN FROM READING ONE BLOCK 000217' 550046 000007 02290 UIN1: HRRZ TAC,DEVIAD(DEVDAT) 000220' 270040 000007 02300 ADD TAC,PROG 000221' 554101 000001 02310 HLRZ TAC1,1(TAC) 000222' 546106 000007 02320 HLRM TAC1,DEVIAD(DEVDAT) ;NEXT BLOCK NUMBER TO READ 000223' 200046 000007 02330 MOVE TAC,DEVIAD(DEVDAT) 000224' 505040 000007 02340 HRLI TAC,PROG 000225' 515100 400000 02350 HRLZI TAC1,IOUSE 000226' 436120 000001 02360 IORM TAC1,@TAC ;SET USE BIT 000227' 540060 000001 02370 HRR TAC,@TAC 000230' 542046 000007 02380 HRRM TAC,DEVIAD(DEVDAT) ;NEXT BUFFER ADDRESS 000231' 602000 000040 02390 TRNE IOS, IOCON ;CONTINUOUS? 000232' 254000 000167' 02400 JRST UOUT3 ;EXIT 000233' 331020 000001 02410 SKIPL @TAC ;IS NEXT BUFFER FULL 000234' 254000 000205' 02420 JRST UIN+1 ;PROCESS NEXT BLOCK 000235' 254000 000167' 02430 JRST UOUT3 ;EXIT 000236' 661000 000040 02450 UEND: TLO IOS, IOEND 000237' 202006 000002 02460 MOVEM IOS, DEVIOS(DEVDAT) 000240' 721300 020000 02470 CONSZ UTC, 20000 ;IS TAPE STOPPED? 000241' 254000 000167' 02480 JRST UOUT3 ;STOP TAPE AND EXIT 000242' 371000 000000* 02490 UEND2: SOSL DCREQ ;DECREMENT REQUEST COUNT, IS ANY ONE WA 000243' 476000 000000* 02500 SETOM DCAVAL ;YES,SET DATA CONTROL AVAILABLE 000244' 371000 000000* 02510 SOSL DTREQ ;DECREMENT REQUEST COUNT, IS ANY ONE WA 000245' 476000 000000* 02520 SETOM DTAVAL ;YES,SET DECTAPE CONTROL AVAI 000246' 620000 010000 02530 TRZ IOS, IOACT ;CLEAR ACTIVE BIT DTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING PAGE 6-1 L. HANTMAN PART 1 7-13-65 000247' 202006 000002 02540 MOVEM IOS, DEVIOS(DEVDAT) ;RESTORE STATUS BITS 000250' 263140 000000 02550 POPJ PDP, 0 ;EXIT DTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING PAGE 7 L. HANTMAN PART 1 7-13-65 02580 ;COPY DIRECTORY WHEN READING BLOCK 1 000251' 623000 000002 02590 UIN2: TLZE IOS, IOBEG ;IS DIRECTORY IN 000252' 254000 000265' 02600 JRST UIN4 ;READ IN DIRECTORY 000253' 260140 000242' 02610 PUSHJ PDP, UEND2 ;CLR INDICATORS 000254' 200106 000177* 02620 UIN3: MOVE TAC1,UFREE(DEVDAT) ;NEXT FREE BLOCK IN DATA BLOC 000255' 506126 000176* 02630 HRLM TAC1, @UDIR(DEVDAT) ;PLACE IN DIRECTORY 000256' 541101 000001 02640 HRRI TAC1, 1(TAC) ;BUFFER ADDRESS, TO 000257' 504106 000255* 02650 HRL TAC1, UDIR(DEVDAT) ;DIRECTORY ADDRESS, TO 000260' 251101 000200 02660 BLT TAC1, 200 (TAC) ;MOVE DIRECTORY TO BUFFER ARE 000261' 515100 400000 02670 HRLZI TAC1, IOUSE 000262' 437100 400000 02680 IORB TAC1, IOUSE ;SET USE BIT 000263' 542106 000007 02690 HRRM TAC1,DEVIAD(DEVDAT) ;ADVANCE BUFFER 000264' 263140 000000 02700 POPJ PDP, 0 ;EXIT 000265' 260140 000370' 02710 UIN4: PUSHJ PDP, UBEG3 000266' 254000 000254' 02720 JRST UIN3 000267' 260140 000000* 02730 SETI: PUSHJ PDP,WAIT1 000270' 506606 000007 02740 HRLM UUO,DEVIAD(DEVDAT) ;SET INPUT BLOCK NO. 000271' 254000 000111* 02750 JRST UXIT 000272' 260140 000267* 02770 SETO: PUSHJ PDP,WAIT1 000273' 260140 001142' 02780 PUSHJ PDP, UINTER ;WAIT FOR USE TO STOP 000274' 260140 000242' 02790 PUSHJ PDP, UEND2 ;CLEAR INDICATORS 000275' 506606 000010 02800 HRLM UUO,DEVOAD(DEVDAT) ;SET OUTPUT BLOCK NO. 000276' 254000 000271* 02810 JRST UXIT 000277' 260140 000272* 02830 GETF: PUSHJ PDP,WAIT1 000300' 603000 000002 02840 TLNE IOS,IOBEG 000301' 260140 000343' 02850 PUSHJ PDP,UBEG 000302' 661000 000400 02860 TLO IOS,UNWFRE 000303' 202006 000002 02870 MOVEM IOS,DEVIOS(DEVDAT) 000304' 350046 000254* 02880 AOS TAC, UFREE(DEVDAT) ;GET FREE BLOCK 000305' 506046 000010 02890 HRLM TAC, DEVOAD(DEVDAT) 000306' 505600 000007 02900 HRLI UUO,PROG 000307' 542060 000014 02910 HRRM TAC,@UUO 000310' 254000 000276* 02920 JRST UXIT DTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING PAGE 8 L. HANTMAN PART 1 7-13-65 02950 INTERNAL UTPCLS,UTWDR,UBEG,UTPREL 000311' 02970 UTWDR: IFE DTSIZ,< PUSHJ PDP,UTPREL> 000311' 254000 000310* 02990 JRST UXIT 000312' 607000 001000 03010 UTPCLS: TLNN IOS, ULINKF 000313' 254000 000326' 03020 JRST UTPREL 000314' 135040 000000* 03030 LDB TAC,PIOMOD ;MODE 000315' 301040 000016 03040 CAIL TAC,16 000316' 254000 000326' 03050 JRST UTPREL 000317' 544046 000006 03060 HLR TAC,DEVBUF(DEVDAT) 000320' 545040 000007 03070 HLRI TAC, PROG 000321' 540060 000001 03080 HRR TAC, @TAC ;TAC:=BUFFER ADDRESS 000322' 271040 000001 03090 ADDI TAC,1 000323' 201100 000001 03100 MOVEI TAC1,1 000324' 506120 000001 03110 HRLM TAC1,@TAC 000325' 254000 000000* 03120 JRST OUT 03140 UTPREL: IFE DTSIZ,< TLNE IOS,IOBEG ;RELEASE 03150 POPJ PDP, 03160 TLZE IOS,UDIREN 03170 JRST UTPRL1 03180 TLNN IOS,UNWFRE 03190 POPJ PDP, 03200 TLNN IOS,UDIRIN 03210 PUSHJ PDP,UBEG> 000326' 627000 000600 03230 IFN DTSIZ,< TLZN IOS,UDIREN+UNWFRE 000327' 263140 000000 03240 POPJ PDP,> 000330' 260140 001142' 03250 UTPRL1: PUSHJ PDP,UINTER ;IS SYSTEM AVAILABLE? 000331' 540046 000304* 03260 HRR TAC,UFREE(DEVDAT) 000332' 506066 000257* 03270 HRLM TAC,@UDIR(DEVDAT) 000333' 200046 000332* 03280 MOVE TAC,UDIR(DEVDAT) 000334' 275040 000001 03290 SUBI TAC,1 000335' 202040 001121' 03300 MOVEM TAC,UBUF 000336' 661000 002000 03310 TLO IOS, URDIR 000337' 202006 000002 03320 MOVEM IOS,DEVIOS(DEVDAT) 000340' 201040 000001 03330 MOVEI TAC,1 000341' 260140 000375' 03340 PUSHJ PDP,USETW 000342' 254000 000277* 03350 JRST WAIT1 DTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING PAGE 9 L. HANTMAN PART 1 7-13-65 03380 ,READ THE DIRECTORY FROM THIS DEC-TAPE 000343' 335006 000004 03400 UBEG: SKIPGE DEVMOD(DEVDAT) ;IS DIRECTORY IN CORE? 000344' 661000 000100 03410 TLO IOS,UDIRIN 000345' 603000 000100 03420 TLNE IOS,UDIRIN 000346' 263140 000000 03430 POPJ PDP, 0 000347' 260140 001142' 03440 PUSHJ PDP, UINTER ;CHECK INTERLOCK 000350' 261140 000001 03450 UBEG2: PUSH PDP, TAC ;SAVE TAC 000351' 550046 000333* 03460 HRRZ TAC,UDIR(DEVDAT) 000352' 275040 000001 03470 SUBI TAC, 1 000353' 202040 001121' 03480 MOVEM TAC,UBUF 000354' 661000 002100 03490 TLO IOS,UDIRIN+URDIR 000355' 621000 000002 03500 TLZ IOS, IOBEG 000356' 202006 000002 03510 MOVEM IOS,DEVIOS(DEVDAT) 000357' 205040 400000 03520 MOVSI TAC,DVDIRIN ;SET DIRECTORY IN CORE BIT 000360' 436046 000004 03530 IORM TAC,DEVMOD(DEVDAT) 000361' 201040 000001 03540 MOVEI TAC,1 000362' 260140 000377' 03550 PUSHJ PDP,USETR 000363' 260140 000000* 03560 PUSHJ PDP,WSYNC 000364' 544066 000351* 03570 HLR TAC,@UDIR(DEVDAT) 000365' 552046 000331* 03580 HRRZM TAC,UFREE(DEVDAT) 000366' 262140 000001 03590 UBEGX: POP PDP,TAC 000367' 263140 000000 03600 POPJ PDP, 0 000370' 603000 000100 03620 UBEG3: TLNE IOS, UDIRIN 000371' 263140 000000 03630 POPJ PDP, 0 000372' 254000 000350' 03640 JRST UBEG2 000373' 260140 001220' 03660 UTBERR: PUSHJ PDP, DTC1 ;ILL. BLOCK NO. 000374' 254000 000000* 03670 JRST UTBKER 000375' 201100 000535' 03690 USETW: MOVEI TAC1, RIT 000376' 334000 000000 03700 SKIPA 000377' 201100 000527' 03710 USETR: MOVEI TAC1,READ 000400' 542100 000500' 03720 HRRM TAC1,DDIG 000401' 552040 001117' 03730 HRRZM TAC,UBKN 000402' 323040 000373' 03740 JUMPLE TAC,UTBERR ;ILL. BLOCK NO.? 000403' 301040 001102 03750 CAIL TAC,1102 000404' 254000 000373' 03760 JRST UTBERR ;ILL. BLOCK NO. 000405' 135040 000000* 03770 LDB TAC,PUNIT ;UNIT 000406' 241040 000003 03780 ROT TAC, 3 000407' 271040 000000* 03790 ADDI TAC, DTCCHN ;DECTAPE CHANNEL 000410' 202040 001116' 03800 MOVEM TAC, UNIT ;UNIT AND CHANNEL 000411' 201040 000137 03810 MOVEI TAC, 137 000412' 542040 001166' 03820 HRRM TAC, DTCINT 000413' 275040 000021 03830 SUBI TAC, 21 000414' 542040 001172' 03840 HRRM TAC, CONSZ1 ;FALL INTO FILL DTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING PAGE 10 L. HANTMAN PART 1 7-13-65 000415' 720200 000000 03870 FILL: CONO DC,0 ;DESELECT DC 000416' 700600 002100 03880 CONO PI,2100 ;TURN ON CHANNEL 1 000417' 202300 001151' 03890 MOVEM DEVDAT, USVDB ;SAVE DATA BLOCK ADDR 000420' 202300 001122' 03900 MOVEM DEVDAT,UDVDAT ;UDVDAT:=DTJIOS POINTER 000421' 201040 000002 03910 MOVEI TAC, DEVIOS 000422' 272040 001122' 03920 ADDM TAC,UDVDAT 000423' 200040 001275' 03930 MOVE TAC, [JSR DDIF] ;DATA CONTROL INTERRUPT CHANN 000424' 202040 000042 03940 MOVEM TAC,UCHA 000425' 202340 001120' 03950 MOVEM PROG,UPROG ;UPROG:=PROG 000426' 200040 001121' 03960 MOVE TAC,UBUF ;BLI:=XWD-200,C(UBUF) 000427' 505040 777600 03970 HRLI TAC,-200 000430' 202040 001114' 03980 MOVEM TAC,BLI 000431' 271040 000177 03990 ADDI TAC,200-1 000432' 202040 001113' 04000 MOVEM TAC,BLO 000433' 721300 020000 04010 CONSZ UTC, 20000 ;IS TAPE MOVING? 000434' 254000 000453' 04020 JRST FILLC ;YES 000435' 200040 001116' 04030 MOVE TAC, UNIT ;RDDA:=RDRM:=WTDA:=WTRM:=C(UN 000436' 137040 000457' 04040 DPB TAC,F1 000437' 137040 000460' 04050 DPB TAC,F2 000440' 137040 000461' 04060 DPB TAC,F3 000441' 137040 000462' 04070 DPB TAC,F4 000442' 200040 001116' 04080 MOVE TAC,UNIT 000443' 405040 000070 04090 ANDI TAC, 70 ;TAC HAS UNIT ONLY 000444' 271040 323201 04100 ADDI TAC, SL+DTR+RB+EE+UCHN 000445' 607000 010000 04110 TLNN IOS, UREV ;WAS REV, GO FWD 000446' 271040 010000 04120 ADDI TAC,GR ;WAS FWD, GO REV 000447' 721220 000001 04130 CONO UTC, @TAC 000450' 720200 004011 04140 FILL2: CONO DC, DACI+UCHN ;SET UP DC FOR INPUT 000451' 202006 000002 04150 MOVEM IOS, DEVIOS (DEVDAT) 000452' 263140 000000 04160 POPJ PDP, DTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING PAGE 11 L. HANTMAN PART 1 7-13-65 04190 ,TAPE IS ACTIVE - GIVE A COMMAND 000453' 721240 000001 04200 FILLC: CONI UTC,TAC ;UTC COMMAND: UNIT, OLD DIRE 000454' 405040 010070 04210 ANDI TAC,GR+70 ;DIRECTION PLUS UNIT 000455' 721201 320201 04220 CONO UTC,SL+RB+EE+UCHN(TAC) ;NO TIME DELAY 000456' 254000 000450' 04230 JRST FILL2 000457' 000600 000517' 04250 F1: POINT 6,RDDA,35 000460' 000600 000531' 04260 F2: POINT 6,RDRM,35 000461' 000600 000523' 04270 F3: POINT 6,WTDA,35 000462' 000600 000537' 04280 F4: POINT 6,WTRM,35 04290 ,CHANGE DIRECTIONS - GIVE NEW COMMANDS 000463' 721240 000001 04300 RRV: CONI UTC,TAC 000464' 431040 010000 04310 XORI TAC,GR ;REVERSE BIT 000465' 405040 550777 04320 ANDI TAC,550777 000466' 435040 002000 04330 IORI TAC,DT 000467' 721201 220000 04340 CONO UTC,SL(TAC) 000470' 720200 004011 04350 CONO DC,DACI+UCHN 000471' 254000 000515' 04360 JRST DXIT 04370 ,EXAMINE BLOCK NUMBERS - DISPATCHED FROM INTERRUPT - CHAN, DC. 000472' 000000 000000 04380 DDIF: 0 ;GOING FORWARD 000473' 202040 001115' 04390 MOVEM TAC,SV1 ;SV1:=TAC 000474' 721700 000002 04400 CONSZ UTS, VEOT 000475' 254000 000463' 04410 JRST RRV 000476' 720040 000001 04420 DATAI DC,TAC 000477' 316040 001117' 04430 CAMN TAC,UBKN ;BLK NOT =STR 000500' 254000 000500' 04440 DDIG: JRST . ;JRST READ, BIT, IFRIGHT UBK 000501' 721300 010000 04450 CONSZ UTC,10000 ;GOING BACKWARDS 000502' 254000 000506' 04460 JRST .+4 ;BACKWARDS 000503' 311040 001117' 04470 CAML TAC,UBKN ;BLK > STR > FORWARD 000504' 254000 000463' 04480 JRST RRV 000505' 254000 000510' 04490 JRST .+3 000506' 317040 001117' 04500 CAMG TAC,UBKN ;BACKWARDS 000507' 254000 000463' 04510 JRST RRV ;BACKWARDS 000510' 721240 000001 04520 DDIG2: CONI UTC,TAC 000511' 405040 550777 04530 ANDI TAC,550777 000512' 721201 220000 04540 CONO UTC,SL(TAC) 000513' 334000 000000 04550 SKIPA 000514' 542040 000042 04560 DXIT1: HRRM TAC,UCHA 000515' 200040 001115' 04570 DXIT: MOVE TAC,SV1 ;RESTORE TAC 000516' 254520 000472' 04580 JEN @DDIF ;RE-ENABLE, DISMISS. DTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING PAGE 12 L. HANTMAN PART 1 7-13-65 04610 ,DISPATCH FROM UCHA INITIALLY ON CORRECT BLOCK MARK 04620 ,SETS OP TO READ, WRITE IN FWD, REVERSE 04640 ;RD FORWARD 000517' 721200 360300 04650 RDDA: CONO UTC,SL+RD+JDE+EE ;GETS UNIT NO. - RE 000520' 201040 000551' 04660 MOVEI TAC,RDFW 000521' 720200 004011 04670 CONO DC,DACI+UCHN 000522' 254000 000514' 04680 JRST DXIT1 000523' 721200 360700 04700 WTDA: CONO UTC,SL+WD+JDE+EE ;GETS UNIT NO. - RE 000524' 201040 000563' 04710 MOVEI TAC,WTFW 000525' 720200 003411 04720 CONO DC,DACO+UCHN 000526' 254000 000514' 04730 JRST DXIT1 000527' 721340 010000 04750 READ: CONSO UTC,10000 ;ENTRY TO SET UP READ 000530' 254000 000517' 04760 JRST, RDDA 04770 ;READ REVERSE 000531' 721200 370300 04780 RDRM: CONO UTC,SL+GR+RD+JDE+EE ;GETS UNIT NO. - RESETS TO RD 000532' 201040 000543' 04790 MOVEI TAC,RDRV 000533' 720200 004011 04800 CONO DC,DACI+UCHN 000534' 254000 000514' 04810 JRST DXIT1 000535' 721340 010000 04820 RIT: CONSO UTC,10000 ;GOING REVERSE - ENTRY TO SET 000536' 254000 000523' 04830 JRST WTDA ;WRITE FORWARD 04840 ;WRITE REVERSE 000537' 721200 370700 04850 WTRM: CONO UTC,SL+WD+GR+JDE+EE ;GETS UNIT NO. -RESETS. TO WT 000540' 201040 000555' 04860 MOVEI TAC,WTRV 000541' 720200 003411 04870 CONO DC,DACO+UCHN 000542' 254000 000514' 04880 JRST DXIT1 04900 ,DC INTERRUPT PROCESSSING TO READ/WRITE DATA IN EITHER 04910 ,DIRECTION, AND RE-ENABLE INTERRUP. 04920 ,EXIT BLOCK PROCESSING AT ENPT(WRITE), ENPTI(READ) 000543' 000000 000000 04940 RDRV: 0 ;ENTRY VIA UCHA - READ REV 000544' 720000 001113' 04950 BLKI DC,BLO 000545' 264000 000620' 04960 JSR ENPTI 000546' 370000 001113' 04970 SOS BLO 000547' 370000 001113' 04980 SOS BLO 000550' 254520 000543' 04990 JEN @RDRV 000551' 000000 000000 05010 RDFW: 0 ;ENTRY VIA UCHA - READ FWD 000552' 720000 001114' 05020 BLKI DC,BLI 000553' 264000 000620' 05030 JSR ENPTI 000554' 254520 000551' 05040 JEN @RDFW 000555' 000000 000000 05060 WTRV: 0 ;ENTRY VIA UCHA - WRITE REV 000556' 720100 001113' 05070 BLKO DC,BLO 000557' 264000 000567' 05080 JSR ENPT 000560' 370000 001113' 05090 SOS BLO 000561' 370000 001113' 05100 SOS BLO 000562' 254520 000555' 05110 JEN @WTRV DTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING PAGE 12-1 L. HANTMAN PART 1 7-13-65 000563' 000000 000000 05130 WTFW: 0 ;ENTRY VIA UCHA - WRITE FWD 000564' 720100 001114' 05140 BLKO DC,BLI 000565' 264000 000567' 05150 JSR ENPT 000566' 254520 000563' 05160 JEN @WTFW DTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING PAGE 13 L. HANTMAN PART 1 7-13-65 05190 ;END OF OUTPUT BLOCK 000567' 000000 000000 05210 ENPT: 0 000570' 264000 000603' 05220 JSR, ENP 000571' 202040 001115' 05230 ENPT2: MOVEM TAC,SV1 ;SV1:=TAC 000572' 515040 010000 05240 HRLZI TAC,UREV 000573' 721300 010000 05250 CONSZ UTC,10000 000574' 412060 001122' 05260 ANDCAM TAC,@UDVDAT 000575' 721340 010000 05270 CONSO UTC,10000 000576' 436060 001122' 05280 IORM TAC,@UDVDAT 000577' 201040 000615' 05290 MOVEI TAC,UOFF 000600' 542040 000042 05300 HRRM TAC,UCHA 000601' 200040 001115' 05310 MOVE TAC,SV1 000602' 254120 000567' 05320 JRSTF @ENPT 05340 ,CHECK ERROR BITS DC MISSED, 0T PARITY, 1 LEG OP, TAPE END 000603' 000000 000000 05350 ENP: 0 000604' 720300 010000 05360 CONSZ DC, 10000; DATA MISSED 000605' 264000 000627' 05370 JSR ERROR2 000606' 254120 000603' 05380 JRSTF @ENP 05400 ,SAVE STATE OF UTS, UTC, DC, TURN OFF DC, UTC, +1@ERRTAL,+1@UERR 05410 ;ERROR LOOPS 000607' 000000 000000 05420 ERROR: 0 000610' 721640 001111' 05430 CONI UTS, C12 000611' 721240 001112' 05440 CONI UTC, C13 000612' 720240 001110' 05450 CONI DC, C11 000613' 476000 001124' 05460 SETOM ERRFLG 000614' 254120 000607' 05470 JRSTF @ERROR 05480 ;INTERRUPT FROM DATA FLAG AFER BLKO HAS COUNTED OUT 000615' 000000 000000 05490 UOFF: 0 000616' 700600 001100 05500 CONO PI, 1100 ;TURN DC CHANNEL OFF 000617' 254520 000615' 05510 JEN @UOFF ;DISMISS EXTRA WRITE FLAG 05530 ;END OF INPUT BLOCK 000620' 000000 000000 05540 ENPTI: 0 000621' 250040 000620' 05550 EXCH TAC, ENPTI 000622' 202040 000567' 05560 MOVEM TAC, ENPT 000623' 264000 000603' 05570 JSR ENP 000624' 720200 000000 05580 CONO DC, 0 000625' 200040 000620' 05590 MOVE TAC, ENPTI 000626' 254000 000571' 05600 JRST ENPT2 05610 ;DETECT FIRST ERROR ONLY 000627' 000000 000000 05620 ERROR2: 0 000630' 336000 001124' 05630 SKIPN ERRFLG ;PREVIOUSLY DETECTED ERROR! 000631' 264000 000607' 05640 JSR ERROR ;STORE ERROR CONDITIONS 000632' 254120 000627' 05650 JRSTF @ERROR2 ;CONTINUE LOOP 05670 ;END OF PART 1 DTSER2 DTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING PAGE 14 L. HANTMAN PART 1 7-13-65 05700 EXTERNAL SETIOD 05710 INTERNAL UDMP0, UDMPI 05730 ; DUMP OUT 000633' 661000 000020 05740 UDMPO: TLO IOS, IO ;SET FOR OUTPUT 000634' 260140 001142' 05750 PUSHJ PDP, UINTER ;CHECK INTERLOCK 000635' 606600 777777 05760 TRNN UUO, 777777 ;COMMAND ADDRESS? 000636' 254000 000722' 05770 JRST UDMP2-1 ;ERROR 000637' 201040 000727' 05780 MOVEI TAC, DDUMP ;RETURN WHEN BLOCK FOUND 000640' 200100 001276' 05790 UDMP0: MOVE TAC1, [JSR DMPADV] ;BLKI OR BLKO RETURN, COMMANDS 05810 ;COMMON ROUTINE FOR ALL DUMP MODES, START SEARCH 000641' 542040 000500' 05820 UDMP1: HRRM TAC,DDIG ;SEARCH RETURN 000642' 202100 000043 05830 MOVEM TAC1, UCHA+1 ;INTERRUPT RETURN 000643' 200040 001275' 05840 MOVE TAC, [JSR DDIF] 000644' 202040 000042 05850 MOVEM TAC, UCHA ;DATA CONTROL CHANNEL 000645' 554046 000010 05860 HLRZ TAC, DEVOAD (DEVDAT) ;BLOCK NUMBER 000646' 607000 000020 05870 TLNN IOS, IO ;WRITING? 000647' 554046 000007 05880 HLRZ TAC, DEVIAD(DEVDAT) ;INPUT BLOCK NUMBER 000650' 202040 001117' 05890 MOVEM TAC, UBKN ;BLOCK TO LOOK FOR 000651' 552300 001151' 05900 HRRZM DEVDAT, USVDB ;DATA BLOCK ADDRESS 000652' 135040 000405* 05910 LDB TAC,PUNIT ;UNIT 000653' 241040 000003 05920 ROT TAC, 3 000654' 271040 000407* 05930 ADDI TAC, DTCCHN 000655' 202040 001116' 05940 MOVEM TAC, UNIT ;UNIT AND DT CHANNEL 000656' 405040 000070 05950 ANDI TAC, 70 000657' 721201 323201 05960 CONO UTC, SL+DTR+RB+EE+UCHN(TAC) 000660' 476000 001153' 05970 SETOM UERRCN ;SET ERROR COUNTER 000661' 201040 000037 05980 MOVEI TAC, 37 ;DO NOT CHECK FOR INCOMPLETE 000662' 542040 001166' 05990 HRRM TAC, DTCINT 000663' 201040 000016 06000 MOVEI TAC,16 000664' 542040 001172' 06010 HRRM TAC, DTCINT+4 000665' 720200 004011 06020 CONO DC, DACI+UCHN ;SET DATA CONTROL 000666' 700600 002100 06030 CONO PI,2100 ;INSURE CHANNEL 1 ON 000667' 552340 001126' 06040 HRRZM PROG, UDMPA ;SAVE PROGRAM 000670' 606600 777777 06050 TRNN UUO, 777777 ;COMMAND ADDRESS 000671' 263140 000000 06060 POPJ PDP, 0 ;COMMAND LIST ON TAPE, INPUT 000672' 550040 000014 06070 HRRZ TAC, UUO ;GET CMD PNTR 000673' 550100 000001 06080 HRRZ TAC1, TAC ;SAVE POINTER 000674' 270100 000007 06090 UDMP1A: ADD TAC1, PROG ;GET ACTUAL POINTER 000675' 552100 001125' 06100 HRRZM TAC1, UDMP ;STORE WORKING POINTER 06120 ;CHECK ENTIRE COMMAND LIST FOR VALIDITY 000676' 336120 001125' 06130 UDMP1B: SKIPN TAC1, @UDMP ;GET COMMAND 000677' 254000 000712' 06140 JRST UDMP1C ;END OF COMMAND LIST 000700' 327100 000674' 06150 JUMPG TAC1, UDMP1A ;CHANGE COMMAND SEQUENCE 000701' 576100 001141' 06160 HLREM TAC1, SVCNTR ;SAVE -N 000702' 553000 000002 06170 HRRZS TAC1 ;GET ADDRESS 000703' 305100 000000* 06180 CAIGE TAC1, JOBPFI ;IS IT ABOVE IO PROT. AREA 000704' 254000 000000* 06190 JRST ADRERR ;NO. ADDRESS CHECK ERROR 000705' 274100 001141' 06200 SUB TAC1, SVCNTR ;GET AREA END 000706' 313100 000000* 06210 CAMLE TAC1, USRREL ;LESS THEN END? DTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING PAGE 14-1 L. HANTMAN PART 1 7-13-65 000707' 254000 000722' 06220 JRST UDMP2-1 ;OUT OF BOUNDS 000710' 350000 001125' 06230 AOS UDMP ;INDEX COMMAND LIST POINTER 000711' 254000 000676' 06240 JRST UDMP1B ;GET NEXT COMMAND DTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING PAGE 15 L. HANTMAN PART 1 7-13-65 06270 ;GET FIRST COMMAND 000712' 270040 000007 06280 UDMP1C: ADD TAC, PROG ;GET ACTUAL ADDRESS 000713' 552040 001125' 06290 HRRZM TAC, UDMP ;SAVE POINTER 000714' 336060 001125' 06300 SKIPN TAC, @UDMP ;1ST COMMAND 000715' 254000 000723' 06310 JRST UDMP2 ;NOTHING TO DO 000716' 270040 000007 06320 ADD TAC, PROG ;ACTUAL POINTER 000717' 325040 000713' 06330 JUMPGE TAC, .-4 ;CHANGE COMMAND SEQUENCE 000720' 202040 001113' 06340 MOVEM TAC, BLO ;SAVE I/O POINTER 000721' 263140 000000 06350 POPJ PDP, 0 06360 ;EXIT WITH ERROR 000722' 660000 040000 06370 TRO IOS, IOBKTL 000723' 201040 777775 06380 UDMP2: MOVEI TAC, -3 000724' 572040 001153' 06390 HRREM TAC, UERRCN 000725' 402000 001124' 06400 SETZM ERRFLG 000726' 254000 000242' 06410 JRST UEND2 06430 ;SEARCH RETURN,OUTPUT,COMMAND LIST IN MEMORY 000727' 721300 010000 06440 DDUMP: CONSZ UTC,GR 000730' 254000 000510' 06450 JRST DDIG2 ;KEEP GOING 000731' 200040 001277' 06460 MOVE TAC,[BLKO DC,BLO] 000732' 202040 000042 06470 MOVEM TAC, UCHA 000733' 720200 003411 06480 CONO DC,DACO+UCHN 000734' 200040 001116' 06490 MOVE TAC,UNIT 000735' 721201 360700 06510 CONO UTC,SL+WD+JDE+EE(TAC) 000736' 254000 000515' 06520 JRST DXIT 06530 ;BLKI OR BLKO RETURNS, COMMAND LIST IN MEMORY 000737' 000000 000000 06540 DMPADV: 0 000740' 202040 001115' 06550 MOVEM TAC,SV1 000741' 354040 001125' 06560 AOSA TAC,UDMP ;POINTER DTSER2 - EXECUTIVE SYSTEM DEC-TAPE SERVICE WITH STACKING PAGE 16 L. HANTMAN PART 1 7-13-65 000742' 552040 001125' 06590 DMPA1: HRRZM TAC, UDMP ;STORE POINTER 000743' 336041 000000 06600 SKIPN TAC, 0(TAC) ;IS WORD ZERO 000744' 254000 000752' 06610 JRST DMPA2 ;END 000745' 270040 001126' 06620 ADD TAC, UDMPA ;ADD PROGRAM 000746' 325040 000742' 06630 JUMPGE TAC, DMPA1 ;CHANGE COMMAND 000747' 202040 001113' 06640 MOVEM TAC, BLO 000750' 200040 001115' 06650 DMPXT: MOVE TAC, SV1 000751' 254520 000737' 06660 JEN @DMPADV 06680 ;END OF COMMAND LIST, INPUT OR OUTPUT 000752' 264000 000603' 06690 DMPA2: JSR ENP 000753' 700600 001100 06700 CONO PI, 1100 ;TURN DATA CONTROL CHANNEL OF 000754' 721740 000040 06710 CONSO UTS, 40 ;WRITING? 000755' 720200 000000 06720 CONO DC, 0 ;SHUT OFF DATA CONTROL 000756' 254000 000750' 06730 JRST DMPXT 06740 ;SEARCH RETURN, INPUT COMMAND LIST ON TAPE 000757' 721300 010000 06750 DDMPI: CONSZ UTC, GR ;GOING BACKWARDS? 000760' 254000 000510' 06760 JRST DDIG2 ;KEEP GOING 000761' 200040 001300' 06770 MOVE TAC, [XWD -1,BLO-1] 000762' 202040 001113' 06780 MOVEM TAC, BLO 06800 ;COMMON INSTRUCTIONS FOR COMMAND LIST IN MEMORY OR ON TAPE 000763' 200040 001301' 06810 DDMPI2: MOVE TAC, [BLKI DC,BLO] 000764' 202040 000042 06820 MOVEM TAC, UCHA 000765' 720200 004011 06830 CONO DC, DACI+UCHN 000766' 200040 001116' 06840 MOVE TAC, UNIT 000767' 721201 360300 06850 CONO UTC, SL+RD+JDE+EE(TAC) 000770' 254000 000515' 06860 JRST DXIT 06880 ;INPUT COMMAND LIST ON TAPE. BLKI RETURN AFTER READING COMMAND 000771' 000000 000000 06890 DMPRD: 0 000772' 331000 001113' 06900 SKIPL BLO ;END OF COMMAND LIST? 000773' 254000 001010' 06910 JRST DMPRD1 000774' 202040 001115' 06920 MOVEM TAC, SV1 ;SAVE TAC 000775' 200040 001113' 06930 MOVE TAC, BLO ;PICK UP COMMAND 000776' 576040 001141' 06940 HLREM TAC, SVCNTR ;-N 000777' 553000 000001 06950 HRRZS TAC ;ADDRESS 001000' 274040 001141' 06960 SUB TAC, SVCNTR ;END ADDRESS 001001' 303040 000000 06970 DMPRD0: CAILE TAC, 0 ; 03780 INTERNAL UTBKER 000367' 135200 000027* 03790 UTBKER: LDB ITEM,PJOBN ;JOB NUMBER 000370' 265040 000232' 03800 JSP TAC,ERRPNT ERRCON - ERROR HANDLING ROUTINE FOR MONITOR DECTECTED ERRORS PAGE 12-2 8-9-65 000371' 440700 000401' 03810 POINT 7,UTERM 000372' 200040 000000* 03820 MOVE TAC,UBUF 000373' 275047 000000 03830 SUBI TAC,(PROG) 000374' 260140 000344' 03840 PUSHJ PDP,OCTPNT 000375' 201100 000424' 03850 MOVEI TAC1, [ASCII / /] 000376' 260140 000333' 03860 PUSHJ PDP, MESPNT 000377' 260140 000155' 03870 PUSHJ PDP,ERNAM 000400' 254000 000035' 03880 JRST ADRER2 000401' 446311 420210 03900 UTERM: ASCIZ /ILL DT BLOCK NO. , BUFFER AT / 000402' 521010 246236 000403' 416264 047236 000404' 271005 420204 000405' 526150 642644 000406' 202032 420000 03920 INTERNAL UUOERR 03930 EXTERNAL UUO0 000407' 265040 000231' 03950 UUOERR: JSP TAC,ERRPTU 000410' 440700 000416' 03960 POINT 7,UUOER1 000411' 200040 000000* 03970 MOVE TAC, UUO0 ;UUO PC 000412' 603040 010000 03980 TLNE TAC, 10000 ;WAS IT FROM USER? 000413' 254000 000213' 03990 JRST EPCAD1 ;YES, JUST PRINT LOC OF CALL 000414' 260140 000145' 04000 PUSHJ PDP,EPTAD1 ;NO, PRINT BOTH EXEC CALL 000415' 254000 000207' 04010 JRST ERSYC1 ;AND USER CALL 000416' 446311 420240 04030 UUOER1: ASCIZ /ILL PROG. OP. USED/ 000417' 512370 727100 000420' 476405 620252 000421' 516130 400000 04040 END, 000422' 300306 000001 000423' 440623 000000 000424' 200000 000000 NO ERRORS DETECTED PROGRAM BREAK IS 000425 8K CORE USED ERRCON - ERROR HANDLING ROUTINE FOR MONITOR DECTECTED ERRORS PAGE 13 SYMBOL TABLE 000320 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 PAGE 13-1 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 PAGE 13-2 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 PAGE 13-3 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 11:23:08 File: DSKB1 :IOCONT.LST [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:20 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:2505 File will be deleted after printing IOCONT - CONTROL FOR IO PROGRAMMED OPERATORS PAGE 1 8-9-95 00010 XLIST 01930 LIST IOCONT - CONTROL FOR IO PROGRAMMED OPERATORS PAGE 7 8-9-95 00010 TITLE IOCONT - CONTROL FOR IO PROGRAMMED OPERATORS 00020 SUBTTL 8-9-95 00030 EXTERNAL BUFCLC,ERROR,IOSETC,IOIERR,BUFCLR 00040 EXTERNAL SETBYT,UINTQ,WAIT1,WSYNC,ADRCK 00050 EXTERNAL UXIT,USRJDA,JOBJDA,ILLMOD,PUUOAC,PIOMOD 00060 EXTERNAL JOB,ASSIN,PJOBN,ADRERR,USRREL,CUXIT1,CUXIT2 00070 EXTERNAL SETIOS 00090 ;FOR PURPOSES OF COMMENTING THIS SUBROUTINE THE 00100 ;TERM BUFFER HEADER SHALL REFER TO THE 3 WORD HEADER 00110 ;WHICH IS USED BY THE USER PROGRAM AND THIS EXEC FOR 00120 ;REFERING TO THE RING BUFFERS. 00140 ;THE CONTENTS OF THE 3 WORD HEADER (AS SET BY THE MONITOR FOR THE USE 00150 ; FROM USERS PROGRAM BY AN INPUT OR AN OUTPUT UUO 00160 ; WORD 2: BYTE POINTER TO CURRENT ITEM. 00170 ; WORD 3: POSITIVE ITEM COUNT (NO. OF ITEMS LEFT ON 00180 ; INPUT, NO. OF FREE ITEMS TO GO ON OUTPUT). 00200 ;EACH BUFFER IN THE RING HAS FOLLOWING FORMAT (AS THE USER SEES IT) 00220 ; WORD 1: RESERVED FOR BLOCK NUMBER FOR FIXED ADDRESS DEVIC 00230 ; WORD 2: BIT 0=USE BIT FOR THIS BUFFER 00240 ; BIT 1-17=NO. OF WORDS WHICH FOLLOW (LENGTH OF BUF 00250 ; BIT 18-35=ADDRESS OF SECOND WORD OF NEXT BUFFER I 00260 ; WORD 3: LH=LINK TO NEXT BLOCK (SET BY MONITOR FOR DECTAB 00270 ; RH=NO. OF WORDS OF DATA WHICH FOLLOW (USUALLY 00280 ; SET BY EXEC EXCEPT TO COMPUTE WORD COUNT 00290 ; THAT HE WANTS TO COMPUTE WORD COUNT 00300 ; HIMSELF INSTEAD OF HAVING THE MONITOR DO IT 00310 ; USING THE BYTE POINTER IN THE 3 WORD HEADER). IOCONT - CONTROL FOR IO PROGRAMMED OPERATORS PAGE 2 8-9-95 00350 ,H. R. MORSE 2/21/65 00360 ,CALLING SEQUENCE 00370 , CLOSE D, 00380 , EXIT ALWAYS RETURNS HERE 00390 , THIS ROUTINE PROCESSES THE CLOSE UUO AND DETERMINES WHETHER THE 00400 ,OUTPUT ROUTINE SHOULD BE CALLED IF OUTPUT WERE ACTIVE, CLEARS 00410 ,THE INPUT BUFFER AREA IF INPUT WERE ACTIVE, AND CLEARS THE 00420 ,ITEM COUNTS OF BOTH INPUT AND OUTPUT HEADERS SERVING TO BOTH 00430 ,TERMINATE THE USE OF THE DEVICE AND SET THE I/O ROUTINES TO 00440 ,ACCEPT ANOTHER INPUT OR OUTPUT COMMAND IN A CLEAR STATE. 00450 ,IN THE CASE OF OUTPUT DEVICES. THE CLOSE ROUTINE OF THE DEVICE HANDL 00460 ,ING ROUTINE IS CALLED IN CASE ANY SPECIAL HANDLING IS REQUIRED. 00470 ,MONITOR INTERFACE 00480 , STORAGE: 30 00490 , ROUTINES CALLED: DCL, WAIT1, UXIT 00500 , SYMBOLS SET/USED: 00510 , ACCUMULATORS: DAT S/U PROG U 00520 , DEVDAT U TAC S/U 00530 , IOS S/U TAC1 S/U 00540 , PDP U 00550 , DEVICE DATA BLOCK: DEVBUF U 00560 , DEVIOS S/U 00570 , DEVSER U 00580 , IO STATUS WORD: IOACT S IODTER S 00590 , IOBEG S IOEND S 00600 , IOBKTL 2 IOFST S 00610 , IODEND S IOIMPM S 00620 , IODERR S IOSTRT S 00630 , IODISC S IOW S 00640 , JOB BUFFER AREA: IOUSE S 00650 , JBFCTR S IOCONT - CONTROL FOR IO PROGRAMMED OPERATORS PAGE 3 8-9-95 00690 INTERNAL CLOSE1 000000' 663300 002000 00710 CLOSE1: TLOE DEVDAT,CLOSB ;HAS A CLOSE ALREADY BEEN DONE? 000001' 254000 000000* 00720 JRST UXIT ;YES, FOR THIS CHANNEL 000002' 135040 000000* 00730 LDB TAC,PUUOAC ;USER DEVICE CHANNEL NO. 000003' 502301 000000* 00740 HLLM DEVDAT,USRJDA(TAC) 000004' 261140 000005 00750 PUSH PDP,DAT 000005' 135040 000000* 00760 LDB TAC,PIOMOD 000006' 305040 000016 00770 CAIGE TAC,DR 000007' 254000 000013' 00780 JRST UCLS4 000010' 200046 000003 00790 MOVE TAC,DEVSER(DEVDAT) 000011' 260141 000001 00800 PUSHJ PDP,DCL(TAC) 000012' 254000 000060' 00810 JRST UCLS3 000013' 260140 000000* 00820 UCLS4: PUSHJ PDP,WAIT1; WAIT UNTIL DEVICE IS INACTIVE. 000014' 606600 000002 00830 TRNN UUO,CLSIN ;SUPPRESS INPUT? 000015' 607300 200000 00840 TLNN DEVDAT,IBUFB ;NO, WAS INPUT BUFFER SPECIFIED? 000016' 254000 000041' 00850 JRST UCLS2 ;NO 000017' 550106 000006 00860 HRRZ TAC1,DEVBUF(DEVDAT) 000020' 505100 000007 00870 HRLI TAC1,PROG 000021' 550260 000002 00880 HRRZ DAT,@TAC1 ;FIRST WORD OF 3 WORD BUFFER HEADER 000022' 540120 000002 00890 HRR TAC1,@TAC1 ;REMEMBER CURRENT BUFFER IN TAC1 000023' 515040 400000 00900 HRLZI TAC,IOUSE ;USER BOTH FOR HEADER AND EACH BUFFER 000024' 322240 000034' 00910 JUMPE DAT,UCLS1 ;HAS A RING BEEN SETUP?(NO IF 0) 000025' 505240 000007 00920 HRLI DAT,PROG ;YES 000026' 540260 000005 00930 UCLS0: HRR DAT,@DAT; ADVANCE CURRENT INPUT BUFFER ADDRESS 00940 ADRCHK DAT ;IS ADDRESS OF? 000027' 260140 000000* PUSHJ PDP,ADRCK 000030' 550040 000005 HRRZ TAC,DAT 000031' 412060 000005 00950 ANDCAM TAC,@DAT ;YES, CLEAR USE BIT. 000032' 312100 000005 00960 CAME TAC1,DAT; DONE? 000033' 254000 000026' 00970 JRST UCLS0 000034' 505240 000007 00980 UCLS1: HRLI DAT,PROG 000035' 540246 000006 00990 HRR DAT,DEVBUF(DEVDAT) 000036' 436060 000005 01000 IORM TAC,@DAT ;FLAG AS VIRGIN BUFFER IN 3 WORD HEADER 000037' 271240 000002 01010 ADDI DAT,2; JBFCTR:=0 000040' 402020 000005 01020 SETZM @DAT ;CLEAR INPUT ITEM COUNT. 000041' 606600 000001 01030 UCLS2: TRNN UUO,CLSOUT ;SUPPRESS OUTPUT? 000042' 607300 100000 01040 TLNN DEVDAT,OBUFB ;NO.WAS OUPUT BUFFER SPECIFIED? 000043' 254000 000060' 01050 JRST UCLS3 ;NO 000044' 544246 000006 01060 HLR DAT, DEVBUF(DEVDAT) ;VIRGIN OUBPUT BUFFER? 000045' 505240 000007 01070 HRLI DAT, PROG 000046' 337020 000005 01080 SKIPG @DAT 000047' 254000 000060' 01090 JRST UCLS3 ;YES 000050' 200046 000003 01100 MOVE TAC,DEVSER(DEVDAT) 000051' 260141 000001 01110 PUSHJ PDP,DCL(TAC); CLOSE OUTPUT BUFFER 000052' 544246 000006 01120 HLR DAT,DEVBUF(DEVDAT) 000053' 505240 000007 01130 HRLI DAT,PROG 000054' 515040 400000 01140 HRLZI TAC,IOUSE 000055' 436060 000005 01150 IORM TAC,@DAT 000056' 271240 000002 01160 ADDI DAT,2 000057' 402020 000005 01170 SETZM @DAT; JBFCTR:=0 IOCONT - CONTROL FOR IO PROGRAMMED OPERATORS PAGE 3-1 8-9-95 000060' 260140 000013* 01180 UCLS3: PUSHJ PDP,WAIT1 000061' 262140 000005 01190 POP PDP,DAT 000062' 630000 000473' 01200 TDZ IOS,[XWD IOEND,IODEND] 000063' 661000 000002 01210 TLO IOS,IOBEG 000064' 202006 000002 01220 MOVEM IOS,DEVIOS(DEVDAT); IODISC:=0 000065' 254000 000001* 01230 JRST UXIT; EXIT THIS UUO IOCONT - CONTROL FOR IO PROGRAMMED OPERATORS PAGE 4 8-9-95 01270 ,DEC 06 00 EX UUO L PT PRE 02 INBUF,OUTBUF 01280 ,H. R. MORSE 64-12-26 01290 ,CALLING SEQUENCE 01300 , INBUF D,N 01310 , EXIT RETURNS HERE IF MEMORY NOT EXCEEDED 01320 ,CALLING SEQUENCE 01330 , OUTBUF D,N 01340 , EXIT RETURNS HERE IF MEMORY NOT EXCEEDED 01350 , SETS UP AN N BUFFER RING FOLLOWING THE USERS PROGRAM FOR DEVICE 01360 , D AND INITIALIZES THE JOB BUFFER AREA HEADER: 01370 , JBFADR0:=1, JBFADR 1-17:=0 01380 , JBFADR 18-35:=ADDRESS OF FIRST BUFFER IN RING 01390 ,INPUT SETS DEVIAD:=ADDRESS OF FIRST BUFFER IN RING 01400 ,OUTPUT SET DEVOAD:=ADDRESS OF FIRST BUFFER IN RING 01410 ,BUFPNT IS RESTORED. 01420 ,MONITOR INTERFACE 01430 , STORAGE:13 01440 , ROUTINES CALLED: BUFCLC, UXIT 01450 , SYMBOLS SET/USED: 01460 , ACCUMULATORS: BUFPNT S/U PROG U 01470 , DEVDAT U TAC S/U 01480 , PDP U TAC1 S/U 01490 , DEVICE DATA BLOCK: DEVBUF U 01500 , DEVIAD S 01510 , DEVOAD S 01520 , JOB BUFFER AREA: JBFADR S IOCONT - CONTROL FOR IO PROGRAMMED OPERATORS PAGE 5 8-9-95 01560 INTERN UINBF, UOUTBF 000066' 261140 000012 01580 UOUTBF: PUSH PDP,BUFPNT; SAVE BUFPNT ON STACK 000067' 260140 000000* 01590 PUSHJ PDP,BUFCLC; SET UP BUFFER RIGH 000070' 544046 000006 01600 HLR TAC,DEVBUF(DEVDAT);TAC:=OUTPUT BUFFER AREA HEADER ADDRE 000071' 542506 000010 01610 HRRM BUFPNT,DEVOAD(DEVDAT);DEVOAD:=ADDRESS OF FIRST BUFFER 01620 , IN RING 000072' 505040 000007 01630 UOBF1: HRLI TAC,PROG; RELOCATE BUFFER AREA HEADER ADDRESS 000073' 202520 000001 01640 MOVEM BUFPNT,@TAC; JBFADR:=IOUSE,ADDRESS OF FIRST BUFFER 01650 , IN RING 000074' 262140 000012 01660 POP PDP,BUFPNT; RESTORE BUFPNT FROM STACK 000075' 254000 000065* 01670 JRST UXIT; EXIT THIS UUO 000076' 261140 000012 01680 UINBF: PUSH PDP,BUFPNT; SAVE BUFPNT ON STACK 000077' 260140 000067* 01690 PUSHJ PDP,BUFCLC; SET UP BUFFER RING 000100' 542506 000007 01700 HRRM BUFPNT,DEVIAD(DEVDAT); DEVIAD:=ADDRESS OF FIRST BUFFER 01710 , IN RING 000101' 540046 000006 01720 HRR TAC,DEVBUF(DEVDAT); TAC:=INPUT BUFFER AREA HEADER ADDRE 000102' 254000 000072' 01730 JRST UOBF1 IOCONT - CONTROL FOR IO PROGRAMMED OPERATORS PAGE 6 8-9-95 01770 ,DEC 06 00 EX UUO L PT PRE 03 INIT 01780 ,H. R. MORSE AND D. A. WITCRAFT 2/21/65 01790 ,CALLING SEQUENCE 01800 , INIT D,MODUS D=JOB DEVICE CHANNEL 01810 , MODUS=IORDEL,IOCON,IOWC,MODE. 01820 , SIXBIT/NAME/ DEVICE NAME 01830 , XWD OBUF,IBUF BUFFER AREA HEADER ADDRESS 01840 , EXIT1 DEVICE NOT AVAILABLE 01850 , EXIT2 DEVICE PROPERLY AVAILABLE 01860 ,THE LEFT HALF OF NAME CONTAINS THE THREE LETTER DEVICE MNEMONIC, 01870 , THE RIGHT HALF IS EITHER ZOER (SYSTEM WILL ASSIGN AN ARBITRARY 01880 , UNIT) OR NON-ZERO TO REQUEST A SPECIFIC UNIT (LEFT JUSTIFIED). 01890 ,IF THE SELECTED DEVICE IS NOT AVAILABLE. CONTROL RETURNS TO EXIT1. 01900 ,OTHERWISE, THE DEVICE IS ASSIGNED TO THE USER AND ATTACHED TO HIS 01910 ,CHANNEL D. THE DEVICE IS INITIALIZED IN THE FOLLOWING MANNER AFTER 01920 ,IOACT IS ZERO: 01930 , IOBEG:=1 01940 , DATA MODE:=BITS 32-35 OF AC UUO 01950 , IOCON:=BIT 31 OF AC UUO 01960 , IOWC:=BIT 40 OF AC UUO 01970 , IORDEL:=BIT 29 OF AC UUO 01980 , IOACT:=IODEND:=IOBKTL:=IODTER:=IODERR:=IOIMPM:=0 01990 , JBFADR:=JBFCTR:=0 FOR THE SPECIFIED BUFFERS. 02000 , DEVBUF:=OBUF,IBUF 02010 ,MONITOR INTERFACE 02020 , STORAGE: 20 02030 , ROUTINES CALLED: UINTQ, ASSIGN(UASG1),USEL,UINITZ,UXIT 02040 , SYMBOLS SET/USED: 02050 , ACCUMULATORS: DEVDAT U 02060 , PDP U TAC U 02070 , PROG U TAC1 S/U 02080 , DEVICE DATA BLOCK: DEVBUF S IOCONT - CONTROL FOR IO PROGRAMMED OPERATORS PAGE 7 8-9-95 02120 INTERN UINIT,UINIT1 000103' 135040 000002* 02130 UINIT: LDB TAC,PUUOAC ;USER DEVICE CHANNEL NO. 000104' 332301 000003* 02140 SKIPE DEVDAT,USRJDA(TAC) ;IS A DEVICE ALREADY HERE? 000105' 260140 000430' 02150 PUSHJ PDP,RELEA0 ;YES, RELEASE IT 000106' 200600 000040 02160 MOVE UUO,40 ;RESTORE AC UUO FROM LOC 40 000107' 260140 000000* 02170 PUSHJ PDP,UINTQ ;GET SIXBIT DEVICE NAME FROM USER 000110' 350003 000000 02180 AOS (PDP) 000111' 200200 000000* 02190 UINIT1: MOVE ITEM,JOB ;CALLED BY SAVGET 000112' 260140 000000* 02200 PUSHJ PDP,ASSIN; TRY TO ASSIGN DEVICE 000113' 254000 000000* 02210 JRST CUXIT1; NOT AVAILABLE 000114' 135040 000103* 02220 LDB TAC,PUUOAC 000115' 552301 000104* 02230 HRRZM DEVDAT,USRJDA(TAC) ;STORE DDB ADR IN DEVICE TABL 000116' 515040 000002 02240 HRLZI TAC,IOBEG 000117' 202046 000002 02250 MOVEM TAC,DEVIOS(DEVDAT) 000120' 260140 000000* 02260 PUSHJ PDP,SETIOS ;SET DDB IOS STATUS WORD 02270 ;FROM RT. HALF OF UUO 000121' 260140 000107* 02280 PUSHJ PDP,UINTQ 000122' 505300 400000 02290 HRLI DEVDAT, INITB ;SET INIT UUO BIT 000123' 607040 777777 02300 TLNN TAC,-1 000124' 254000 000127' 02310 JRST UINIT4 ;OUTPUT NOT SPECIFIED 000125' 502046 000006 02320 HLLM TAC,DEVBUF(DEVDAT) 000126' 661300 100000 02330 TLO DEVDAT,OBUFB ;SET OUTPUT BUFFER SPECIFIED BIT 000127' 606040 777777 02340 UINIT4: TRNN TAC,-1; IS IBUF SPECIFIED? 000130' 254000 000133' 02350 JRST UINIT5 ;INPUT BUF NOT SPECIFIED 000131' 542046 000006 02360 HRRM TAC,DEVBUF(DEVDAT); DEVBUF 18-35:=IBUF 000132' 661300 200000 02370 TLO DEVDAT,IBUFB ;SET INPUT BUFFER SPECIFIED BIT 000133' 550100 000001 02380 UINIT5: HRRZ TAC1,TAC; TAC1:=PROG,IBUF 000134' 260140 000142' 02390 PUSHJ PDP,UINITZ; JBFADR:=JBFCTR:=0 FOR IBUF 000135' 544100 000001 02400 HLR TAC1,TAC; TAC1:=PROG,OBUF 000136' 260140 000142' 02410 PUSHJ PDP,UINITZ; JBFADR:=JBFCTR:=0 FOR OBUF 000137' 135040 000114* 02420 LDB TAC,PUUOAC ;STORE UUO BITS FOR THIS CHANNEL 000140' 502301 000115* 02430 HLLM DEVDAT,USRJDA(TAC) 000141' 254000 000000* 02440 JRST CUXIT2 IOCONT - CONTROL FOR IO PROGRAMMED OPERATORS PAGE 8 8-9-95 02480 ,DEC 06 00 EX COM L PT PRE 03 UINITZ 02490 ,H. R. MORSE 64-12-26 02500 ,CALLING SEQUENCE 02510 , PUSHJ PDP,UINITZ 02520 , EXIT RETURNS HERE IF MEMORY NOT EXCEEDED. 02530 ,SETS JBFADR:=JBFCTR:=0 FOR THE BUFFER AREA HEADER WHOSE ADDRESS 02540 ,IS IN AC TAC1. ALSO,JBFPTR 0-5:=JBFPTR 12-17:=0,JBFPTR 6-11:=BYTE S 02550 ,MONITOR INTERFACE 02560 , STORAGE:15 02570 , ROUTINES CALLED: ADRCK, SETBYT 02580 , SYMBOLS SET/USED: 02590 , ACCUMULATORS: PDP U TAC S/U 02600 , TAC1 S/U 02610 , JOB BUFFER AREA: JBFADR S 02620 , JBFCTR S 02630 , JBFPTR S 02640 INTERN UINITZ 000142' 606100 777777 02660 UINITZ: TRNN TAC1,-1; IS BUFFER SPECIFIED? 000143' 263140 000000 02670 POPJ PDP,;RETURN 000144' 505100 000007 02680 HRLI TAC1,PROG 000145' 260140 000027* 02690 PUSHJ PDP,ADRCK ;CHECK 3 WORD BUFFER HEADER 000146' 551042 000002 02700 HRRZI TAC,2(TAC1) 000147' 402020 000002 02710 SETZM @TAC1; JBFADR:=0 000150' 350000 000002 02720 AOS TAC1 000151' 261140 000001 02730 PUSH PDP,TAC 000152' 261140 000002 02740 PUSH PDP,TAC1 000153' 350000 000002 02750 AOS TAC1 000154' 402020 000002 02760 SETZM @TAC1; JBFCTR:=0 000155' 260140 000000* 02770 PUSHJ PDP,SETBYT; JBFPTR 6-11:=BYTE SIZE 000156' 621040 770077 02780 TLZ TAC,770077 000157' 262140 000002 02790 POP PDP,TAC1 000160' 502060 000002 02800 HLLM TAC,@TAC1 000161' 262140 000001 02810 POP PDP,TAC 000162' 263140 000000 02820 POPJ PDP,; RETURN IOCONT - CONTROL FOR IO PROGRAMMED OPERATORS PAGE 9 8-9-95 02860 INTERNAL IN 000163' 603000 000020 02870 IN: TLNE IOS,IO ;IS THIS DEVICE ALREADY DOING OUTPUT! 000164' 260140 000060* 02880 PUSHJ PDP,WAIT1 ;YES,WAIT TILL IT IS FINISHED 000165' 135040 000137* 02890 LDB TAC,PUUOAC ;SET BIT THAT SAYS AN INPUT UUO HAS OCC 000166' 661300 010000 02900 TLO DEVDAT,INPB ;FOR THIS DEVICE 000167' 502301 000140* 02910 HLLM DEVDAT,USRJDA(TAC) ;IN LH OF CURRENT JOB DEVICE 000170' 135040 000005* 02920 LDB TAC,PIOMOD ;IO MODE 000171' 301040 000016 02930 CAIL TAC,DR ;IS THE IO MODE DUMP MODE? 000172' 254000 000271' 02940 JRST INDMP ;YES 000173' 540246 000006 02950 IN1: HRR JBUF,DEVBUF(DEVDAT) ;NO, GET ADDRESS OF R WORD BU 000174' 515040 400000 02960 HRLZI TAC,IOUSE ;BUFFER INUSE BIT 000175' 505240 000007 02970 HRLI JBUF,PROG ;SET INDEX FIELD FOR RELOCATION USING A 000176' 260140 000145* 02980 PUSHJ PDP,ADRCK ;CHECK BUFFER HEADER 000177' 551045 000002 02990 HRRZI TAC,2(JBUF) ;END ADDRESS OF 3 WORD HEADER 000200' 200120 000005 03000 MOVE TAC1,@JBUF ;GET WORD 1 OF 3 WORD BUFFER HEADER (PO 000201' 505100 000007 03010 HRLI TAC1,PROG ;SET INDEX FIELD COR RELOCATION USING A 000202' 337020 000005 03020 SKIPG @JBUF ;HAS A BUFFER RING BEEN SET UP (RH NON- 03030 ;WHICH HAS BEEN REFERENCED BY PREVIOUS 000203' 254000 000256' 03040 JRST INPUTF ;NO, GO SET UP BUFFER IF NECESSARY AND 03050 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 03060 ANDCAB TAC,@TAC1 ;FLAG THIS BUFFER AS BEING FILLED (USE 03070 ;AND GET POINTER TO NEXT BUFFER 000207' 542060 000005 03080 HRRM TAC,@JBUF ;SET WORD 1 IN 3 WORD HEADER TO NEXT BU 03090 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 03100 INPUT0: MOVE IOS,DEVIOS(DEVDAT) ;GET IO STATUS WORD 000213' 606000 010000 03110 TRNN IOS,IOACT ;IS THE DEVICE ALREADY ACTIVE (FILLING 000214' 254000 000220' 03120 JRST INPT0B ;NO. 000215' 606000 000040 03130 TRNN IOS,IOCON ;DOES THE USER WANT TO STOP AFTER EVERY 000216' 254000 000224' 03140 JRST INPT0C ;NO. HE WANTS NORMAL CONTINUOUS OVERLAP 000217' 260140 000000* 03150 PUSHJ PDP,WSYNC ;YES, WAIT TILL DEVICE FINISHES WITH ON 000220' 505040 000007 03160 INPT0B: HRLI TAC,PROG ;SET FOR RELOCATION 000221' 540060 000001 03170 HRR TAC,@TAC ;GET POINTER 1 BLOCK AHEAD OF NEXT BBUF 000222' 331020 000001 03180 SKIPL @TAC 000223' 260140 000276' 03190 PUSHJ PDP,CALIN 000224' 540120 000002 03200 INPT0C: HRR TAC1,@TAC1 000225' 335020 000002 03210 INPT0A: SKIPGE @TAC1 000226' 254000 000236' 03220 JRST INPUT2 000227' 260140 000217* 03230 INPUT1: PUSHJ PDP,WSYNC 000230' 335020 000002 03240 SKIPGE @TAC1 000231' 254000 000236' 03250 JRST INPUT2 000232' 612000 000474' 03260 TDNE IOS,[XWD IOEND,IODERR] 000233' 254000 000250' 03270 JRST INEOF 000234' 200006 000002 03280 MOVE IOS,DEVIOS(DEVDAT) 000235' 254000 000227' 03290 JRST INPUT1 000236' 271100 000001 03310 INPUT2: ADDI TAC1,1 000237' 550220 000002 03320 HRRZ ITEM,@TAC1 IOCONT - CONTROL FOR IO PROGRAMMED OPERATORS PAGE 9-1 8-9-95 000240' 275100 000001 03330 SUBI TAC1,1 000241' 261140 000004 03340 PUSH PDP,ITEM ;SAVE WORD COUNT AS STORED BY IO SERVIC 000242' 260140 000000* 03350 PUSHJ PDP,IOSETC 000243' 262140 000004 03360 POP PDP,ITEM 000244' 135040 000170* 03370 LDB TAC,PIOMOD ;GET DEVICE DATA MODE 000245' 306040 000010 03380 CAIN TAC, I ;IMAGE MODE? 000246' 202220 000005 03390 MOVEM ITEM,@JBUF ;YES, STORE WORD COUNT NOT ITEM COUNT 000247' 254000 000075* 03400 JRST UXIT IOCONT - CONTROL FOR IO PROGRAMMED OPERATORS PAGE 10 8-9-95 000250' 551000 020000 03440 INEOF: HRRZI IOS,IODEND 000251' 436006 000002 03450 IORM IOS,DEVIOS(DEVDAT) 000252' 254000 000247* 03460 JRST UXIT 000253' 540100 000014 03480 INPUTA: HRR TAC1,UUO 000254' 412060 000002 03490 ANDCAM TAC,@TAC1 000255' 254000 000212' 03500 JRST INPUT0 03520 ;HERE ON FIRST INPUT AFTER INIT, INIT & LOOKUP, OR INIT & LOOKUP & IN 000256' 412060 000005 03530 INPUTF: ANDCAM TAC,@JBUF ;MARK THAT BUFFERS HAVE BEEN REFERENCED 000257' 540060 000005 03540 HRR TAC,@JBUF ;PICKUP ADDRESS OF FIRST BUFFERE IN RING 000260' 542046 000007 03550 HRRM TAC,DEVIAD(DEVDAT) ;SET CURRENT RING BUFFER ADDR 03560 ;IN DEVICE DATA BLOCK 000261' 336020 000005 03570 SKIPN @JBUF ;HAS A RING BEEN SET UP YET? 000262' 254000 000265' 03580 JRST INPUT3 ;NO, GO SET UP A 2 BUFFER RING 000263' 260140 000276' 03590 PUSHJ PDP,CALIN ;YES, GO START TO SERVICE ROUTINE 03600 ;FILLING BUFFER 000264' 254000 000225' 03610 JRST INPT0A 000265' 541600 000002 03620 INPUT3: HRRI UUO,2 ;BUFFERS NOT SETUP YET. 03630 ;SET UP 2 000266' 260140 000076' 03640 PUSHJ PDP, UINBF 000267' 513000 000014 03650 HLLZS UUO ;CLEAR RIGHT HALF 000270' 254000 000173' 03660 JRST IN1 000271' 260140 000227* 03680 INDMP: PUSHJ PDP,WSYNC 000272' 200046 000003 03690 MOVE TAC,DEVSER(DEVDAT) 000273' 260141 000007 03700 PUSHJ PDP,DDI(TAC) 000274' 260140 000164* 03710 PUSHJ PDP,WAIT1 000275' 254000 000252* 03720 JRST UXIT IOCONT - CONTROL FOR IO PROGRAMMED OPERATORS PAGE 11 8-9-95 000276' 603000 000040 03780 CALIN: TLNE IOS,IOEND 000277' 263140 000000 03790 POPJ PDP, 000300' 260140 000271* 03800 PUSHJ PDP,WSYNC 000301' 261140 000002 03810 PUSH PDP,TAC1 000302' 200046 000003 03820 MOVE TAC,DEVSER(DEVDAT) 000303' 260141 000003 03830 PUSHJ PDP,DIN(TAC) 000304' 262140 000002 03840 POP PDP,TAC1 000305' 263140 000000 03850 POPJ PDP, IOCONT - CONTROL FOR IO PROGRAMMED OPERATORS PAGE 12 8-9-95 03910 ,DEC 06 00 EX COM L PT PRE 03 OUTPUT 03920 ,H.R. MORSE 2/21/65 03930 ,CALLING SEQUENCE 03940 , OUTPUT D, 03950 , EXIT 03960 ,OR 03970 , OUTPUT D, ADR 03980 , EXIT 04000 ,IF INPUT IS ACTIVE, WAIT FOR IT TO COMPLETE. 04010 ,IF DUMP MODE WAS SELECTED BY THE LAST INIT UUO., THEN A CHECK IS MADE 04020 , TO SEE IF DUMP FILES ARE LEGAL FOR THIS DEVICE. IF DUMP FILES AR 04030 , NOT LEGAL. (IORET=0) AN ERROR MESSAGE IS PRINTED ON THE TTY AND 04040 , CONTROL IS TRANSFERRED T THE COMMAND INPUT ROUTINE. 04050 , OTHERWISE,THE PROGRAM WAITS UNTIL THE DEVICE IS INACTIVE AND THEN 04060 , WRITES THE DUMPFILE AND RETURNS CONTROL TO THE USERS PROGRAM 04070 ,IF THE MODE IS NOT DUMP, THEN 04080 ,1) IF ADR IS NOT ZERO, WAIT FOR DEVICE TO BECOME INACTIVE THEN SET T 04090 , CURRENT BUFFER ADDRESS EQUAL TO ADR AND AN INDICATOR (JBFADR0) 04100 , SPECIFYING THAT THIS BUFFER RING HAS NEVER BEEN REFERENCED FROM T 04110 , USERS PROGRAM BY AN INPUT OR AN OUTPUT UUO. OTHERWISE, GO TO 04120 , 2) DIRECTLY. 04140 ,2) IF THE BUFFER RING HAS NEVER BEEN REFERENCED (JBFADR0=1), THE 04150 , BUFFER IS CLEARED. IOUSE SET TO ZERO AND 04160 , IF THE CURRENT BUFFER ADDRESS IS ZERO, A TWO BUFFER RING IS SE 04170 , THE GO TO 8 04180 , 04190 ,3) IF THE BUFFER RING HAS BEEN REFERENCED (JBFADR0=0 ,THEN A C 04200 , MADE TO DETERMINE IF THE WORD COUNT IS TO BE COMPUTED. 04210 , IF THE WORD COUNT IS TO BE COMPUTED (IOWC=0), IT IS SET EQUAL 04220 , TO THE ADDRESS FOR THE LAST DATA WORD MINUS THE ADDRESS OF THE 04230 , BUFFER MINUS ONE, 04250 ,4) IOUSE IS SET TO ONE. INDICATING THAT THE BUFFER IS FULL OR BEING 04260 , EMPTIED, AND THE CURRENT BUFFER ADDRESS IS ADVANCED. 04280 ,5) IF THE DEVICE IS NOT ACTIVE (IOACT=0), OUTPUT IS STARTED. 04290 ,6) IF THE CURRENT BUFFER IS FULL OR BEING EMPTIED (IOUSE=1), 04300 , THE PROGRAM WAITS UNTIL THE DEVICE IS INACTIVE 04310 ,7) THE CURRENT BUFFER IS CLEARED. 04320 ,8) THE ITEM POINTER IS INITIATED TO THE CURRENT BUFFER ADDRESS+1 04330 , AND THE ITEM COUNT IS SET TO THE PRODUCT OF THE BUFFER SIZE 04340 , MINUS ONE AND THE INTEGER PART OF 36/BYTE SIZE. 04350 ,9) RETURN TO THE USERS PROGRAM IOCONT - CONTROL FOR IO PROGRAMMED OPERATORS PAGE 13 8-9-95 04390 ,MONITOR INTERFACE 04400 , STORAGE: 54 04410 , ROUTINE CALLED: ADRCK, BUFCLR, CALOUT, INOUT, IOSETC, OUTA, 04420 , OUTBUF, UXIT, WSYNC, 04430 , SYMBOLS SET/USED: 04440 , ACCUMULATORS: DEVDAT U PROG U 04450 , IOS U TAC S/U 04460 , ITEM S/U TAC1 S/U 04470 , JBUF S/U UUO S 04480 , PDP U 04490 , DEVICE DATA BLOCK: DEVBUF U DEVOAD S 04500 , IO STATUS WORD: IOACT U 04510 , IOWC U 04520 , JOB BUFFER AREA: JBADR S/U 04530 , JBFCTR S 04540 , JBPPTR S/U 04550 , BUFFER SIZE U 04560 , IOUSE S/U 04570 , WORD COUNT S IOCONT - CONTROL FOR IO PROGRAMMED OPERATORS PAGE 14 8-9-95 04620 INTERN OUT 000306' 607000 000020 04640 OUT: TLNN IOS,IO ;IS THIS DEVICE ALREADY DOING INPUT? 000307' 260140 000274* 04650 PUSHJ PDP,WAIT1 ;YES, WAIT TILL IT BECOMES INACTIVE 000310' 135040 000165* 04660 LDB TAC,PUUOAC 000311' 661300 004000 04670 TLO DEVDAT,OUTPB 000312' 502301 000167* 04680 HLLM DEVDAT,USRJDA(TAC) 000313' 135040 000244* 04690 LDB TAC,PIOMOD 000314' 301040 000016 04700 CAIL TAC,DR 000315' 254000 000402' 04710 JRST OUTDMP 000316' 260140 000407' 04720 PUSHJ PDP,OUTA 000317' 544246 000006 04730 OUT1: HLR JBUF,DEVBUF(DEVDAT) 000320' 260140 000210* 04740 PUSHJ PDP,ADRCK ;CHECK END OF 3 WORD HEADER 000321' 551045 000002 04750 HRRZI TAC,2(JBUF) 000322' 505240 000007 04760 HRLI JBUF,PROG 000323' 515040 400000 04770 HRLZI TAC, IOUSE 000324' 337120 000005 04780 SKIPG TAC1, @JBUF ;HAS THIS BUFFER EVER BEEN 04790 ;;REFERENCED?(JBFADR0=0?) 000325' 254000 000361' 04800 JRST OUTF 000326' 350000 000005 04810 AOS JBUF 000327' 550060 000005 04820 HRRZ TAC, @JBUF 000330' 271100 000001 04830 ADDI TAC1, 1 000331' 274040 000002 04840 SUB TAC, TAC1 000332' 505100 000007 04850 HRLI TAC1,PROG 000333' 602000 000020 04860 TRNE IOS, IOWC ;COMPUTE WORD COUNT?(IOWC=0?) 000334' 254000 000340' 04870 JRST OUT2 04880 ADRCHK TAC1 ;PROCEED IF ADDRESS OF WORD COUNT 000335' 260140 000320* PUSHJ PDP,ADRCK 000336' 550040 000002 HRRZ TAC,TAC1 04890 ;0? 000110' 540547 000073* 02390 HRR BUFWRD,JOBFF(PROG) 000111' 271540 000001 02400 ADDI BUFWRD,1 000112' 260140 000103* 02410 PUSHJ PDP,ADRCK ;CHECK LAST ADR. OF HEADER 000113' 551052 777776 02420 HRRZI TAC,-2(BUFPNT) 000114' 274500 000001 02430 SUB BUFPNT,TAC 000115' 202560 000012 02440 MOVEM BUFWRD,@BUFPNT;LINK LAST BUFFER TO FIRST BUFFER 000116' 270500 000001 02450 ADD BUFPNT,TAC 000117' 542507 000110* 02460 HRRM BUFPNT,JOBFF(PROG);JOBFF:=C(JOBFF)+1+N(BUFFER SIZE+2) 000120' 540500 000013 02470 HRR BUFPNT,BUFWRD; BUFPNT:=IOUSE,ADDRESS OF FIRST BUFFER 02480 , IN RING. 000121' 505500 400000 02490 HRLI BUFPNT,IOUSE 000122' 262140 000013 02500 POP PDP,BUFWRD; RESTORE BUFWRD FROM STACK. 000123' 263140 000000 02510 POPJ PDP,; RETURN IOCSS - IO COMMON SYSTEM SUBROUTINES PAGE 10 8-15-65 02550 ,DEC 06 00 EX COM L PT PRE 01 BUFCLR 02560 ,H. R. MORSE 64-12-26 02570 ,CALLING SEQUENCE 02580 , PUSHJ PDP,BUFCLR 02590 , EXIT RETURNS HERE IF MEMORY NOT EXCEEDED 02600 , CLEAR THE WORD COUNT AND DATA AREA OF THE BUFFER WHOSE ADDRESS 02610 , IS IN TAC 18-35. 02620 ,MONITOR INTERFACE: 02630 , STORAGE: 13 02640 , ROUTINE CALLED: ADRCK 02650 , SYMBOLS SET/USED: 02660 , ACCUMULATORS: PDP U TAC S/U 02670 , PROG U TAC1 S/U 02680 INTERN BUFCLR 000124' 505040 000007 02690 BUFCLR: HRLI TAC,PROG 02700 ADRCHK TAC; PROCEED IF CURRENT BUFFER ADDRESS 000125' 260140 000112* PUSHJ PDP,ADRCK 000126' 550040 000001 HRRZ TAC,TAC 02710 , < PROTECTION ADDRESS. 000127' 554120 000001 02720 HLRZ TAC1,@TAC; TAC1 18-35=SIZE 000130' 620100 400000 02730 TRZ TAC1,400000 000131' 270100 000001 02740 ADD TAC1,TAC; TAC1:=CURRENT BUFFER ADDRESS + SIZE 02750 ADRCHK TAC1; PROCEED IF CURRENT BUFFER ADDRESS 000132' 260140 000125* PUSHJ PDP,ADRCK 000133' 550040 000002 HRRZ TAC,TAC1 02760 , + SIZE < PROTECTION ADDRESS. 000134' 201060 000001 02770 MOVEI TAC,@TAC; TAC:=CURRENT BUFFER ADDRESS+1, 02780 , CURRENT BUFFER ADDRESS+1 000135' 504040 000001 02790 HRL TAC,TAC 000136' 253040 000137' 02800 AOBJN TAC,.+1 000137' 402001 000000 02810 CLEARM 0(TAC); WORD COUNT:=0 000140' 350000 000001 02820 AOS TAC; TAC:=CURRENT BUFFER ADDRESS+1, 02830 , CURRENT BUFFER ADDRESS+2 000141' 251060 000002 02840 BLT TAC,@TAC1; CLEAR BUFFER 000142' 263140 000000 02850 POPJ PDP,; RETURN IOCSS - IO COMMON SYSTEM SUBROUTINES PAGE 11 8-15-65 02880 SUBTTL 5-17-65 PART 2 IOCSS - IO COMMON SYSTEM SUBROUTINES PAGE 12 5-17-65 PART 2 02920 ,CALLING SEQUENCE 02930 , PUSHJ PDP,CKS12 02940 , EXIT ALWAYS RETURNS HERE 02950 ,CALCULATES FOLDED 12 BIT CHECKSUMS OF THE DATA WORDS IN THE 02960 ,BUFFER WHOSE ADDRESS IS IN AC TAC1. TWO ALGORITHMS ARE USED. 02970 ,ON RETURN, THE LEFT HALF OF AC TAC CONTAINS A CHECKSUM OBTAINED 02980 ,BY ACCUMULATING, IN ONES COMPLEMENT, THE DATA WORDS AND FOLDING IT. 02990 ,THE LEFT HALF OF AC DAT CONTAINS A CHECKSUM OBTAINED BY ACCUMULATING 03000 ,IN TWOS COMPLEMENT, THE DATA WORDS AND FOLDING IT. AC TAC1 03010 ,CONTAINS A 1. 03020 ,MONITOR INTERFACE 03030 , STORAGE: 20 03040 , ROUTINES CALLED: FOLD 03050 , SYMBOLS SET/USED: 03060 , ACCUMULATORS: DAT S/U SUB S 03070 , PDP U TAC S/U 03080 , PROG U TAC1 S/U IOCSS - IO COMMON SYSTEM SUBROUTINES PAGE 13 5-17-65 PART 2 03120 INTERN CKS12 000143' 270100 000007 03130 CKS12: ADD TAC1,PROG; TAC1:=-WORD COUNTER,ADDRESS OF FIRST DATA 000144' 350000 000002 03140 AOS TAC1 000145' 550042 000000 03150 HRRZ TAC,0(TAC1) 000146' 213000 000001 03160 MOVNS TAC 000147' 350000 000002 03170 AOS TAC1 000150' 504100 000001 03180 HRL TAC1,TAC 000151' 402000 000001 03190 CLEARM TAC; INITIALIZE TWOS COMPLEMENT SUM 000152' 270042 000000 03200 CKS12A: ADD TAC,0(TAC1); TWOS COMPLEMENT ADD 000153' 253100 000152' 03210 AOBJN TAC1,CKS12A; DONE? 000154' 246040 777750 03220 FOLD: LSHC TAC,-30 000155' 242100 777764 03230 LSH TAC1,-14 000156' 270040 000002 03240 ADD TAC,TAC1 000157' 246040 777764 03250 LSHC TAC,-14 000160' 242100 777750 03260 LSH TAC1,-30 000161' 270040 000002 03270 ADD TAC,TAC1 000162' 622040 770000 03280 TRZE TAC,770000 000163' 350000 000001 03290 AOS TAC 000164' 517000 000001 03300 HRLZS TAC 000165' 201100 000001 03310 MOVEI TAC1,1 ;TAC1:=1 000166' 263140 000000 03320 POPJ PDP, IOCSS - IO COMMON SYSTEM SUBROUTINES PAGE 14 5-17-65 PART 2 03360 ,DEC 06 00 EX COM L PT PRE 01 CLRBYT 03370 ,H. R. MORSE 64-12-26 03380 ,CALLING SEQUENCE 03390 , PUSHJ PDP,CLRBYT 03400 , EXIT ALWAYS RETURN HERE 03410 ,CALLED WITH A BYTE POINTER IN AC TAC, IT CLEARS THE REST OF THE 03420 ,WORD POINTED TO BY THE BYTE POINTER. 03430 ,MONITOR INTERFACE 03440 , STORAGE: 7 03450 , SYMBOLS SET/USED: 03460 , ACCUMULATORS: PDP U 03470 , TAC U 03480 , TAC1 S/U 03490 INTERN CLRBYT 000167' 135100 000373' 03500 CLRBYT: LDB TAC1,[POINT 6,TAC,5]; TAC1:=P 000170' 137100 000374' 03510 DPB TAC1,[POINT 12,TAC,11]; TAC 0-5:=0, TAC 6-12:=P 000171' 402000 000002 03520 SETZM TAC1 000172' 137100 000001 03530 DPB TAC1,TAC; CLEAR BITS 36-P THROUGH 35 000173' 263140 000000 03540 POPJ PDP,; RETURN IOCSS - IO COMMON SYSTEM SUBROUTINES PAGE 15 5-17-65 PART 2 03580 ;ROUTINE TO RELEASE ALL DEVICES ASSIGNED TO JOB 03600 INTERNAL IORELS 03610 EXTERNAL PUUOAC,RELEA3 000174' 201040 000000* 03640 IORELS: MOVEI TAC,RELEA3 ;RELEASE ALL IO DEVICES(DONT CLOSE) 03660 ;ROUTINE TO DO IO FOR ALL DEVICES ASSIGNED TOI JOB 03670 ;CALL MOVEI TAC,ADR. OR IO SUB. 03680 ; PUSHJ PDP,IOALL 03700 INTERNAL IOALL 000175' 261140 000001 03720 IOALL: PUSH PDP,TAC ;SAVE ADR. FO SUB. 000176' 515240 777760 03730 HRLZI DAT, -20 000177' 200305 000000* 03740 IOALL1: MOVE DEVDAT, USRJDA(DAT) 000200' 200006 000002 03750 MOVE IOS,DEVIOS(DEVDAT) 000201' 201600 000000 03760 MOVEI UUO,0 000202' 137240 000000* 03770 DPB DAT,PUUOAC 000203' 332000 000006 03780 SKIPE DEVDAT 000204' 260163 000000 03790 PUSHJ PDP,@(PDP) ;CALL THE SUB. 000205' 253240 000177' 03800 AOBJN DAT, IOALL1 000206' 262140 000001 03810 POP PDP,TAC 000207' 263140 000000 03820 POPJ PDP, 03840 ;KILL ALL DEVICES(RELEASE WITHOUT WAITING FOR DEVICE INACTIVE) 03860 INTERNAL IOKILL 03870 EXTERNAL RELEA5 000210' 201040 000000* 03890 IOKILL: MOVEI TAC,RELEA5 000211' 254000 000175' 03900 JRST IOALL IOCSS - IO COMMON SYSTEM SUBROUTINES PAGE 16 5-17-65 PART 2 03940 ,DEC 06 00 EX COM L PT PRE 01 IOSET 03950 ,H. R. MORSE 64-12-26 03960 ,CALLING SEQUENCE 03970 , PUSHJ PDP,IOSET 03980 , EXIT ALWAYS RETURNS HERE 03990 ,THIS PROGRAM IS CALLED FROM AN INTERRUPT SERVICE ROUTINE. 04000 ,IT PUTS THE ADDRESS OF THE DATA AREA OF THE JOB (C(JBTADR18-35)) 04010 ,CONNECTED TO THE DEVICE SPECIFIED BY AC DEVDAT IN AC PROG AND 04020 ,PUTS THE ITEM POINTER (C(DEVCTR)) IN AC ITEM. 04030 ,MONITOR INTERFACE 04040 , STORAGE: 5 04050 , SYMBOLS SET/USED: 04060 , ACCUMULATORS: DEVDAT U PDP U 04070 , ITEM S PROG S/U 04080 , DEVICE DATA BLOCK: DEVCHR U 04090 , DEVCTR U 04100 , SYSTEM ADDRESSES: JBTADR U 04110 INTERN IOSET 000212' 135340 000050* 04130 IOSET: LDB PROG,PJOBN 000213' 200206 000011 04140 MOVE ITEM,DEVCTR(DEVDAT); ITEM:=ITEM POINTER=C(DEVCTR) 000214' 550347 000000* 04150 HRRZ PROG,JBTADR(PROG); PROG:=C(JBTADR 18-35) 000215' 263140 000000 04160 POPJ PDP,; RETURN IOCSS - IO COMMON SYSTEM SUBROUTINES PAGE 17 5-17-65 PART 2 04200 ,6-CSS-DEC-IOSETC-PL-PRE1 04210 ,H.R. MORSE 17-11-64 04230 ,CALLING SEQUENCE 04240 , PUSHJ PDP,IOSETC 04250 , EXIT ALWAYS RETURN HERE 04270 ,SETS JBFPTR18-35:=C(TAC1 18-35) 04280 , JBFCTR:=C(ITEM)*[WORD LENGTH/BYTE SIZE] 04290 ,WHERE WORD LENGTH:=36 DECIMAL 04300 , BYTE SIZE:=C(JBFPTR6-11) 04310 , [X]:= INTEGER PART OF X 04330 ,MONITOR INTERFACE 04340 , STORAGE: 11 04350 , ROUTINES CALLED: ITMCT1 04360 , SYMBOLS SET/USED: 04370 , ACCUMULATORS: JBUF S/U TAC S/U 04380 , ITEM S/U TAC1 S/U 04390 , PDP U 04410 INTERN IOSETC 000216' 271240 000001 04430 IOSETC: ADDI JBUF,1 ;JBFPTR12-18:=0 000217' 515040 007777 04440 HRLZI TAC,7777 ;JBFPTR18-35:=C(TAC1 18-35)+1 000220' 406060 000005 04450 ANDM TAC,@JBUF 000221' 542120 000005 04460 HRRM TAC1,@JBUF 000222' 350020 000005 04470 AOS @JBUF 000223' 135100 000375' 04480 LDB TAC1,[POINT 6,@JBUF,11] ;TAC1:=BYTE SIZE 000224' 260140 000233' 04490 PUSHJ PDP,ITMCT1 ;JBFCTR:=C(ITEM)*[36/BYTE SIZE] 000225' 271000 000006 04500 ADDI JBUF+1 000226' 202220 000005 04510 MOVEM ITEM,@JBUF 000227' 263140 000000 04520 POPJ PDP, ;EXIT IOCSS - IO COMMON SYSTEM SUBROUTINES PAGE 18 5-17-65 PART 2 04560 ,DEC 06 00 EX COM L PT PRE 01 ITMSET, ITMCNT, ITMCT1 04570 ,H.R. MORSE 64-12-26 04590 ,CALLING SEQUENCE 04600 , PUSHJ PDP,ITMSET 04610 , EXIT ALWAYS RETURNS HERE 04620 ,SETS AC ITEM:=(BUFFER SIZE-1)*[WORD LENGTH/BYTE SIZE] 04630 ,WHERE BUFFER SIZE:=BITS 1-17 OF THE BUFFER HEADER WORD POINTED TO 04640 , BY C(DEVADR) 04650 , WORD LENGTH:=36 DECIMAL 04660 , BYTE SIZE:=INTEGER PART OF X. 04680 ,CALLING SEQUENCE 04690 , PUSHJ PDP,ITMCNT 04700 , EXIT ALWAYS RETURNS HERE 04710 ,SETS AC ITEM=C(ITEM)*[WORD LENGTH/BYTE SIZE] 04730 ,CALLING SEQUENCE 04740 , PUSHJ PDP,ITMCT1 04750 , EXIT ALWAYS RETURNS HERE 04760 ,SETS AC ITEM:=C(ITEM)*[WORD LENGTH/C(TAC1)] 04780 ,MONITOR INTERFACE 04790 , STOAGE: 7 04800 , SYMBOLS SET/USED: 04810 , ACCUMULATORS: DEVDAT U TAC S/U 04820 , ITEM S/U TAC1 S/U 04830 , PDP U 04840 , DEVICE DATA BLOCK: DEVADR U 04850 , DEVPTR U IOCSS - IO COMMON SYSTEM SUBROUTINES PAGE 19 5-17-65 PART 2 04890 INTERN ITMSET,ITMCNT,ITMCT1 000230' 135200 000376' 04900 ITMSET: LDB ITEM,[POINT 17,@DEVADR(DEVDAT),17];ITEM:=BUFFER SIZE-1 000231' 275200 000001 04910 SUBI ITEM,1 000232' 135100 000377' 04920 ITMCNT: LDB TAC1,[POINT 6,DEVPTR(DEVDAT),11];TAC1:=BYTE SIZE 000233' 201040 000044 04930 ITMCT1: MOVEI TAC,44 ;ITEM:=C(ITEM)*[WORD LENGTH/C(TAC1)] 000234' 230040 000002 04940 IDIV TAC,TAC1 000235' 220200 000001 04950 IMUL ITEM,TAC 000236' 263140 000000 04960 POPJ PDP, IOCSS - IO COMMON SYSTEM SUBROUTINES PAGE 20 5-17-65 PART 2 05000 ;ROUTINE TO SET DEVICE STATUS WORD FROM UUO 05020 INTERNAL SETIOS 05030 EXTERNAL ILLMOD 000237' 135040 000400' 05050 SETIOS: LDB TAC,[POINT 4,UUO,35] ;GET DEVICE DATA MODE 000240' 201040 000001 05060 MOVEI TAC,1 ;AND CHECK FOR LEGALITY 000241' 242042 000000 05070 LSH TAC,(TAC1) 000242' 616046 000004 05080 TDNN TAC,DEVMOD(DEVDAT) 000243' 254000 000000* 05090 JRST ILLMOD ;ILLEGAL MODE 000244' 620600 010000 05100 TRZ UUO,IOACT ;LET USER SET ALL BITS EXCEPT IOACT 000245' 542606 000002 05110 HRRM UUO,DEVIOS(DEVDAT) 000246' 263140 000000 05120 POPJ PDP, IOCSS - IO COMMON SYSTEM SUBROUTINES PAGE 21 5-17-65 PART 2 05160 ,DEC 06 00 EX COM L PT PRE 01 NEWBUF, BPNSET 05170 ,H. R. MORSE 64-12-26 05180 ,CALLING SEQUENCE 05190 , PUSHJ PDP,NEWBUF 05200 , EXIT ALWAYS RETURNS HERE 05210 ,CLEARS THE BUFFERE CURRENTLY POINTED TO BY THE INPUT BUFFER 05220 ,ADDRESS (DEVDR) OF THE CURRENT DEVICE. SETS UP THE BYTE 05230 ,POINTER (DEVPTR), AND THE ITEM COUNT (DEVCTR) AND RETURNS. 05240 ,CALLING SEQUENCE 05250 , PUSHJ PDP,BPNSET 05260 , EXIT ALWAYS RETURNS HERE 05270 ,SETS UP THE BYTE POINTER (DEVPTR) AND THE ITEM COUNT (DEVCTR) 05280 ,OF THE CURRENT DEVICE AND RETURNS. 05290 ,MONITOR INTERFACE 05300 , STORAGE: 10 05310 , ROUTINES CALLED: BUFCLR, ITMSET 05320 , SYMBOLS SET/USED: 05330 , ACCUMULATORS: DEVDAT U PDP U 05340 , ITEM U TAC S/U 05350 , DEVICE DATA BLOCKS: DEVADR U 05360 , DEVCTR S 05370 , DEVPTR S/U IOCSS - IO COMMON SYSTEM SUBROUTINES PAGE 22 5-17-65 PART 2 05400 INTERN BPNSET,NEWBUF 000247' 550046 000007 05420 NEWBUF: HRRZ TAC,DEVADR(DEVDAT); TAC:=INPUT BUFFER HEADER ADDRESS 000250' 260140 000124' 05430 PUSHJ PDP,BUFCLR; CLEAR INPUT BUFFER. 000251' 540046 000007 05440 BPNSET: HRR TAC,DEVADR(DEVDAT) 000252' 515040 007737 05450 HRLZI TAC,7737 000253' 404046 000010 05460 AND TAC,DEVPTR(DEVDAT); DEVPTR 0-5:=0, DEVPTR 12:=0 000254' 540046 000007 05470 HRR TAC,DEVADR(DEVDAT); DEVPTR 10-35:=C(DEVADR 18-35) + 1 000255' 350000 000001 05480 AOS TAC 000256' 202046 000010 05490 MOVEM TAC,DEVPTR(DEVDAT) 000257' 260140 000230' 05500 PUSHJ PDP,ITMSET; ITEM:=(BUFFER SIZE-1)[36/BYTE SIZE] 000260' 202206 000011 05510 MOVEM ITEM,DEVCTR(DEVDAT); DEVCTR:=ITEM COUNT 000261' 263140 000000 05520 POPJ PDP,; RETURN IOCSS - IO COMMON SYSTEM SUBROUTINES PAGE 23 5-17-65 PART 2 05560 ,DEC 06 00 EX COM L PT PRE 02 SETBYT 05570 ,H. R. MORSE 64-12-26 05580 ,CALLING SEQUENCE 05590 , PUSHJ PDP,SETBYT 05600 , EXIT ALWAYS RETURN HERE 05610 ,SETS TAC 0-5:=0 05620 , TAC 6-11:=S 05630 , TAC 12-13:=0 05640 , TAC 14-17:=PROG 05650 ,WHERE S=35 IF DATA MODE (IOS 32-25) IS BINARY (B) 05660 , S=8 IF DATA MODE IS IMAGE (I) 05670 , S=7 IF DATA MODE IS ASCII PACKED (A) 05680 , ASCII LINE (AL) 05690 , ASCII SEQUENCED (AS) 05700 , ASCII SEQUENCED (ASL) 05710 , OR ALTERNATE MODE BREAK (AM) 05720 ,MONITOR INTERFACE 05730 , STORAGE: 12 05740 , SYMBOLS SET/USED: 05750 , ACCUMULATORS: PROG U TAC S 05760 , PDP U TAC1 S/U 05770 , DEVICE DATA BLOCK: DEVIOS U 05780 INTERN SETBYT 000262' 200106 000002 05790 SETBYT: MOVE TAC1,DEVIOS(DEVDAT); FETCH DATA MODE, BITS 32-35 0 000263' 405100 000017 05800 ANDI TAC1, 17 000264' 302100 000013 05810 CAIE TAC1,IB ;DATA MODE IMAGE BINARY? 000265' 306100 000014 05820 CAIN TAC1,B; IS DATA MODE=BINARY? 000266' 505040 004407 05830 HRLI TAC,4400+PROG; SET BYTE SIZE TO 36. 000267' 306100 000010 05840 CAIN TAC1,I; IS DATA MODE=IMAGE? 000270' 254000 000275' 05850 JRST SETBY1 000271' 602100 000014 05860 TRNE TAC1,14; IS DATA MODE=ASCII PACKED,ASCII LINE, 000272' 254000 000274' 05870 JRST .+2; ASCII SEQUENCED,OR ASCII SEQUENCED LINE 000273' 505040 000707 05880 HRLI TAC,700+PROG; SET BYTE SIZE TO 7. 000274' 263140 000000 05890 POPJ PDP,; RETURN 000275' 510046 000004 05910 SETBY1: HLLZ TAC,DEVMOD(DEVDAT) 000276' 621040 770077 05920 TLZ TAC,770077 000277' 661040 000007 05930 TLO TAC,PROG 000300' 263140 000000 05940 POPJ PDP, IOCSS - IO COMMON SYSTEM SUBROUTINES PAGE 24 5-17-65 PART 2 05980 ,DEC 06 00 EX COM L PT PRE 01 STORE ITEM 05990 ,H.R. MORSE 64-12-26 06000 ,CALLING SEQUENCE 06010 , PUSHJ PDP,STODAT 06020 , EXIT1 CHECKSUM ERROR 06030 , EXIT2 BLOCK FULL OR BLOCK COMPLETE 06040 , EXIT3 DATA STORED CORRECTLY 06050 ,CALLED FROM AN INPUT SERVICE ROUTINE WITH A DATA ITEM IN AC DAT. 06060 ,STORES THE DATA ITEM IN THE BUFFER, CHECKING TO SEE IF IT WERE 06070 ,THE FIRST ITEM ON THE BUFFER AND SETTING UP THE POINTER AND 06080 ,WORD COUNT APPROPRIATELY CHECKING THE MODE TO SEE IF ANY SPECIAL 06090 ,PROCESSING NEED BE DONE. FOR EXAMPLE, GENERATION OF SEQUENCE 06100 ,NUMBERS PRECEDING EACH LINE IN SEQUENCE MODE, OR THE TERMINATION 06110 ,OF A BUFFER ON CERTAIN CHARACTERS IN OTHER MODES, OR IF THE BUFFER 06120 ,RETURN OCCURS ON AN ERROR CONDITION. THE SECOND RETURN OCCURS 06130 ,ON A BLOCK FULL CONDITION OR BLOCK COMPLETE CONDITION, THE THIRD 06140 ,RETURN OCCURS ON THE DATA STORED CORRECTLY CONDITION. THIS 06150 ,ROUTINE ALSO DOES SOME CHECKING ON INPUT OF BINARY RECORD, 06160 ,PAPER TAPE OR CARDS. 06170 ,CALLING SEQUENCE 06180 , PUSHJ PDP,STOSQD 06190 , XXXX ALWAYS SKIPS 06200 , EXIT ALWAYS RETURNS HERE 06210 ,STORES THE WORD COUNT:=C(DEVPTR 18-35) -C(DEVIAD 18-35) - 1 06220 ,IN THE BUFFER. 06230 ,MONITOR INTERFACE 06240 , STORAGE: 69 06250 , ROUTINES CALLED: ASCIA, CKS12, ITMSET, NEWBUF 06260 , SYMBOLS SET/USED: 06270 , ACCUMULATORS: DAT U PDP U 06280 , DEVDAT U TAC S/U 06290 , IOS S/U TAC1 S/U 06300 , ITEM S/U 06310 , DEVICE DATA BLOCK: DEVCTR U DEVPTR S/ 06320 , DEVIAD U DEVSEQ S/ 06330 , IO STATUS WORD: A U I U 06340 , AS U IOBKTL S 06350 , ASL U IODTER S 06360 , B U IOFST S/ 06370 , JOB BUFFER AREA: WORD COUNT S IOCSS - IO COMMON SYSTEM SUBROUTINES PAGE 25 5-17-65 PART 2 06400 INTERN STODAT, STOSQD 000301' 603000 000004 06420 STODAT: TLNE IOS,IOFST; WILL THE NEXT ITEM BE THE FIRST ITEM 06430 , OF A BUFFER? 000302' 260140 000247' 06440 PUSHJ PDP,NEWBUF; SET UP A NEW BUFFER. ITEM:=(BUFFER 06450 , SIZE - 1)*[36/BYTE SIZE] 000303' 135100 000000* 06460 LDB TAC1,PIOMOD; TAC1:=DATA MODE 000304' 306100 000014 06470 CAIN TAC1,B; MODE=BINARY? 000305' 254000 000344' 06480 JRST STOBIN 000306' 621000 000004 06490 TLZ IOS,IOFST 000307' 136246 000010 06500 STO1: DPBI DAT,DEVPTR(DEVDAT); STORE DATA IN BUFFER. 000310' 302100 000000 06510 CAIE TAC1,A; MODE=ASCII, IMAGE, OR BINARY? 000311' 306100 000010 06520 CAIN TAC1,I 000312' 254000 000324' 06530 JRST STOAIB 000313' 306100 000014 06540 CAIN TAC1,B 000314' 254000 000324' 06550 JRST STOAIB 000315' 307240 000214 06560 CAIG DAT,214 ;LINE FEED,FORM FEED, OR VERTICAL TAB? 000316' 305240 000212 06570 CAIGE DAT,212 000317' 254000 000321' 06580 JRST .+2 ;NO 000320' 254000 000336' 06590 JRST STOSQD ;YES 000321' 365200 000000* 06600 SOJGE ITEM,CPOPJ2; ITEM:=C(ITEM)-1. IS C(ITEM)>OR=0? 000322' 660000 040000 06610 STOE1: TRO IOS,IOBKTL ;IOBKTL:=1 000323' 254000 000056* 06620 JRST CPOPJ 000324' 367200 000321* 06630 STOAIB: SOJG ITEM,CPOPJ2; ITEM:=C(ITEM)-1. IS C(ITEM)>0? 000325' 306100 000000 06640 CAIN TAC1,A; MODE=ASCII? 000326' 254000 000336' 06650 JRST STOSQD 000327' 306100 000014 06660 CAIN TAC1,B; MODE=BINARY? 000330' 254000 000354' 06670 JRST STOBND 000331' 260140 000230' 06680 STOI: PUSHJ PDP,ITMSET; ITEM:=(BUFFER SIZE-1)*[36/BYTE SIZE] 06690 , - C(DEVCTR) 000332' 274206 000011 06700 SUB ITEM,DEVCTR(DEVDAT) 000333' 550106 000007 06710 HRRZ TAC1,DEVIAD(DEVDAT) ;STORE ITEM COUNT INSTEAD OF 000334' 271200 000001 06720 ADDI ITEM,1 ;IN FIRST WORD OF BUFFER 000335' 344100 000342' 06730 AOJA TAC1,STOSQE IOCSS - IO COMMON SYSTEM SUBROUTINES PAGE 26 5-17-65 PART 2 000336' 200106 000007 06760 STOSQD: MOVE TAC1,DEVIAD(DEVDAT); TAC1:=ADDRESS OF WORD COUNT 000337' 350000 000002 06770 AOS TAC1 000340' 550206 000010 06780 HRRZ ITEM,DEVPTR(DEVDAT); ITEM:=C(DEVPTR 18-25) - 06790 , C(DEVIAD 18-35) -1 000341' 274200 000002 06800 SUB ITEM,TAC1 000342' 542220 000002 06810 STOSQE: HRRM ITEM,@TAC1 ;WORD COUNT TO FIRST WORD IN BUFFER 000343' 254000 000065* 06820 JRST CPOPJ1; EXIT2. BLOCK COMPLETE 000344' 627000 000004 06830 STOBIN: TLZN IOS,IOFST; WILL THE NEXT ITEM BE THE FIRST ITEM 000345' 254000 000307' 06840 JRST STO1; OF A BUFFER? IOSFST:=0 000346' 550040 000005 06850 HRRZ TAC,DAT 000347' 313040 000004 06860 CAMLE TAC,ITEM; IS WORD COUNT 00080 XP A,0 00090 SUBTTL A CONFIGURATION 00100 > 00120 DEFINE DATE (A) 00130 > 00180 DEFINE VERSION (A,B) 00190 > 00260 DEFINE CUSPTAPE (A) 00270 > 00320 DEFINE ACPDL (J,CHJN,CHJPDN) 00330 < CH'J'N=CHJN 00340 CH'J'PDN=CHJPDN 00350 > IOINI1 - IO INITIALIZATION PART 1 PAGE 2 MINIMAL CONFIGURATION 00010 NAME ^DEFINE NAME1 IOINI1 - IO INITIALIZATION PART 1 PAGE 2 MINIMAL CONFIGURATION 00040 DATE <8-16-65>^DEFINE DATE1 ^ 00050 VERSION 1,4^DEFINE VERS1 ^ 00060 CUSPTAPE DTA0^DEFINE CUSP1 ^ 00080 ;DEFINE THE IO PART OF THE SYSTEM 00090 ;THAT IS: 00100 ; DEFINE INTERRUPT SERVICE ROTUINE TO BE USED 00110 ; ASSIGN DEVICES TO PI CHANNELS 00130 DEFINE SYSTEM 00140 < 00150 ASSOC APR,6,<> 00160 ASSOC CTY,3,<> 00170 ASSOC SCN,3, 00180 ASSOC DTC,4, 00190 > 000001 00210 DTSIZ=1 ;MULTIPLE DECTAPE DIRECTORIES 000001 00230 SCNLIN=1 00250 ;DEFINE HIGHEST AC TO SAVE AND LENGTH OF PD LIST FOR EACH PI CHANNEL 000000 00270 ACPDL (1,0,0)^ CH1N=0 000000 00280 ACPDL (2,0,0)^ CH2N=0 000011 00290 ACPDL (3,11,20)^ CH3N=11 000011 00300 ACPDL (4,11,20)^ CH4N=11 000000 00310 ACPDL (5,0,0)^ CH5N=0 000017 00320 ACPDL (6,17,20^ CH6N=17 000000 00330 ACPDL (7,0,0)^ CH7N=0 00010 TITLE IOINI1 - IO INITIALIZATION PART 1 000000' 466231 644632 00020 NAME1^CONFIG: ASCIZ /MINIMAL/ 000001' 406300 000000 000002' 341326 133132 00030 DATE1^SYSDAT: ASCIZ /8-16-65/ 000003' 331520 000000 000004' 000001 000004 00040 VERS1^SYSNUM: XWD ^D1,^D4 000005' 446441 200000 00050 CUSP1^SYSTAP: SIXBIT /DTA0/ 00070 ;CONFIGURATION INDEPENDANT PART OF IOINIT FOLLOWS: 00090 EXTERNAL ERROR IOINI1 - IO INITIALIZATION PART 1 PAGE 1 MINIMAL CONFIGURATION 00110 ;SETUP CHANNEL SAVE AND RESTORE ROUTINES 000000 00130 CHANU1=0 000000 00140 CHANU2=0 000000 00150 CHANU3=0 000000 00160 CHANU4=0 000000 00170 CHANU5=0 000000 00180 CHANU6=0 000000 00190 CHANU7=0 00200 DEFINE ASSOC(A,NO,D) 00210 ;SPACE TO SAVE SOME AC'S 00330 EXP CH'NO'XIT ;FIRST ENTRY IN PD LIST(CHAN. EXIT) 00340 REPEAT CH'NO'PDN-1, ;REST OF PD LIST 00350 00360 CH'NO'XIT: MOVSI CH'NO'N, CH'NO'SAC 00370 BLT CH'NO'N, CH'NO'N 00380 JEN @CH'NO 00390 00400 CH'NO'CJ: XWD -CH'NO'PDN+1,CH'NO'SAC+CH'NO'N+1 ;INIT. SETTING OF P 00410 00420 CH'NO': 0 ;PC STORED HERE BY JSR 00430 JRST .+1 ;INSTR. AT END OF SERVICE CHAIN 00440 AOS CH'NO'ERR ;SPURIOUS INTERRUPT, ADD TO COUNT 00450 JEN @CH'NO ;AND DISMISS 00460 > 00470 > 00480 ;GENERATE THE SAVE AND RESTORE ROUTINES 00500 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 PAGE 1-1 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 SOME 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 SOME 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 PAGE 1-2 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 SOME 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 PAGE 1-3 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 00520 ;SET UP NULL CHANNEL ROUTINES FOR UNUSED CHANNELS 00540 DEFINE NULCHN(J) 00550 < 00560 INTERNAL CH'J,CH'J'XIT 00570 CH'J: 0 00580 CH'J'XIT: AOS CH'J'ERR 00590 JEN @CH'J 00600 > 00620 IFE CHANU1,^ 000204' 000000 000000 CH1: 0 000205' 350000 000312' CH1XIT: AOS CH1ERR 000206' 254520 000204' JEN @CH1 00630 IFE CHANU2,^ 000207' 000000 000000 CH2: 0 000210' 350000 000313' CH2XIT: AOS CH2ERR 000211' 254520 000207' JEN @CH2 00640 IFE CHANU3, 00650 IFE CHANU4, 00660 IFE CHANU5,^ 000212' 000000 000000 CH5: 0 000213' 350000 000316' CH5XIT: AOS CH5ERR 000214' 254520 000212' JEN @CH5 00670 IFE CHANU6, 00680 IFE CHANU7,^ 000215' 000000 000000 CH7: 0 000216' 350000 000320' CH7XIT: AOS CH7ERR 000217' 254520 000215' JEN @CH7 IOINI1 - IO INITIALIZATION PART 1 PAGE 2 MINIMAL CONFIGURATION 00720 ;ASSIGN DEVICE TO CHANNELS AND SETUP CORESPONDENCE TABLE 00730 ;OF CHANNELS TO SERVICE ROUTINES 00750 DEFINE ASSOC (A,N,D) 00760 < A'RET=CH'N'XIT 00770 A'SAV=CH'N'SAV 00780 A'SAC=CH'N'SAC 00790 A'CHL=CH'N 00800 A'CHN=N 00810 A'BIT=1 00820 REPEAT 7-N, 00830 A'OFF=1000+A'BIT ;CONO PI, A'OFF WIL TURN CHANNEL OFF 00840 A'ON=2000+A'BIT ;TURN BACK ON 00850 A'ACT=4000+A'BIT ;FORCE INTERRUPT ON CHAN. 00860 INTERN A'RET, A'SAV, A'CHL, A'CHN, A'SAC 00870 INTERNAL A'OFF,A'ON,A'ACT,A'BIT 00880 XWD A'CHL,A'INT 00890 EXTERNAL A'INT 00900 > 00920 INTERNAL DEVINT 000220' 00930 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 00940 NDEV=.-DEVINT ;NO. OF DEVICE INTERUPT SERVICE ROUTINES 000003 00950 NDEVM1=NDEV-1 ;(USED BY ONCE) 00960 INTERNAL NDEVM1 IOINI1 - IO INITIALIZATION PART 1 PAGE 3 MINIMAL CONFIGURATION 01000 ;INITIALIZE SOME IO DEVICES 01010 ;IOINI CALLED BY A PUSHJ PDP, FROM SYSINI AT SYSTEM INITIALIZATION 01030 DEFINE IOINIT (A) 01040 > 01090 DEFINE ASSOC (A,B,C) 01100 < IFIDN ,< IOINIT MTC> 01110 IFIDN ,< IOINIT DTC> 01120 IFIDN ,< IOINIT LPT> 01130 IFIDN ,< IOINIT SCN> 01140 IFIDN , 01150 IFIDN , 01160 > 01180 INTERNAL IOINI 000224' 01200 IOINI: SYSTEM^ 000224' 260140 000000* PUSHJ PDP,SCNINI 000225' 260140 000000* PUSHJ PDP,DTCINI 000226' 254000 000000* 01210 JRST CLKINI ;ALWAYS INIT. CLOCK 01230 EXTERNAL CLKINI IOINI1 - IO INITIALIZATION PART 1 PAGE 4 MINIMAL CONFIGURATION 01270 ;CLOCK CONTROL PARAMETERS 004006 01290 CLDS=4000+APRCHN ;CLOCK DISABLE 000206 01300 CLEN=200+APRCHN ;CLOCK ENABLE 01320 INTERNAL CLDS,CLEN 01340 ;BYTE POINTERS 000227' 270400 000014 01360 PUUOAC: POINT 4,UUO,12 ;UUO AC FIELD 000230' 000400 000000 01370 PIOMOD: POINT 4,IOS,35 ;MODE BITS 000231' 331106 000001 01380 PJOBN: POINT 9,DEVCHR(DEVDAT),8 ;DEVICE JOB ASSIGNMENT 000232' 220406 000001 01390 PJDCHN: POINT 4,DEVCHR(DEVDAT),17 ;JOB DEVICE CHANNEL NO. 000233' 140606 000001 01400 PUNIT: POINT 6,DEVCHR(DEVDAT),23 ;DEVICE UNIT NO. 01420 INTERNAL PUUOAC,PIOMOD,PJOBN,PJDCHN,PUNIT 01440 ;COMMON SUBROUTINE RETURNS 000234' 350003 000000 01460 CPOPJ2: AOS (PDP) 000235' 350003 000000 01470 CPOPJ1: AOS (PDP) 000236' 263140 000000 01480 CPOPJ: POPJ PDP, 01500 INTERNAL CPOPJ,CPOPJ1,CPOPJ2 IOINI1 - IO INITIALIZATION PART 1 PAGE 5 MINIMAL CONFIGURATION 01530 ,SYSTEM DATA STORAGE 01560 INTERNAL JOB,JOBADR,JBTADR,JBTSTS,USRREL,USRINF,USRJDA 01570 INTERNAL USRPDP,JOBDAT,USRDDT,USRSAV,USRUXT,USRLO,USRHI 01580 INTERNAL COMCNT,IOCOMP,USRPOV,STOPU,SCHEDF,TIME,JBTAD1 01590 INTERNAL MTAVAL,DCAVAL,DTAVAL,MTREQ,DCREQ,DTREQ,TTYTAB,CORTAB 01600 INTERNAL CH1ERR,CH2ERR,CH3ERR,CH4ERR,CH5ERR,CH6ERR,CH7ERR 01610 INTERNAL CORLST,CORTAB,CORTAL,SYSEND,SYSBEG,DEVOPR 000000 01630 JOBN=0 ;DEFINE NO. OF JOBS (0 THRU JOBN-1) 01640 ;THERE MUST BE MORE TTY DEVICE DATA BLCKS THAN JOBS. 01660 DEFINE ASSOC (A,N,D) 01670 ,>> 01680 SYSTEM^ 777777 777776 01690 MJOBN=-JOBN 01700 INTERNAL JOBN,MJOBN 000237' 01720 SYSBEG: ;FIRST LOC IN SYSTEM DATA AREA 01730 XP SYSBG1,SYSBEG+1 ;FIRST LOC+1 000237' 000000 000000 01740 JOB: 0 ;CURRENT JOB NUMBER EXCEPT WEN SCHEDF IS NON-ZERO 000240' 000000 000000 01750 JOBADR: 0 ;CONTAINS ADDRESS OF JOB CURRENTLY RUNNING 000241' 000000 000000 01760 JOBDAT: 0 ;CONTAINS ADDRESS OF JOB DATA AREA 000242' 01780 JBTADR: BLOCK JOBN ;C(LH)=PROTECT, C(RH)=RELOCATION 01790 XP JBTAD1,JBTADR+1 ;ADDRESS OF JOB 1(USED BY SYSMAK) 000244' 01800 JBTSTS: BLOCK JOBN ;CONTAINS STATUS INFORMATION FOR EACH J 000246' 000000 000000 01820 USRPDP: 0 ;USER PUSH DOWN POINTER 000247' 000000 000000 01830 USRREL: 0 ;LH=0, RH CONTAINS CONTENTS OF PROTECTION REGISTER 000250' 01840 USRLO: ;FIRST LOC CLEARD BY SETUSR SUBROUTINE 000250' 000000 000000 01850 USRUXT: 0 ;UNUSED, JOBUXT USED TO SAVE UUO PC(UUO0) 000251' 000000 000000 01860 USRLEV: 0 ;UNUSED, JOBLEV USED TO SAVE LOC. 40 000252' 000000 000000 01870 USRSAV: 0 ;TEMPORARY STORAGE FOR UUO HANDLER 000253' 000000 000000 01880 USRPOV: 0 ;PUSH DOWN OVERFLOW TRAP 000254' 01890 BLOCK 2 000256' 000000 000000 01900 USRINF: 0 ;UN LAYED OUT USER INFORMATION 000257' 01910 USRJDA: BLOCK 20 ;RH=JOB DEVICE ASSIGNMENTS FOR THIS USER,LH=UUOS 01920 XP USRHI,.-1 ;LAST LOC CLEARED BY SETUSR ROUTINE 01930 XP USRPFI,.-1 ;LAST LOC PROTECTED FROM IO SERVICE 01940 XP USRPFU,. ;LAST LOC PROTECTED FROM USER PROGRAM 000277' 000000 000000 01950 USRDDT: 0 ;STARTING ADDR OF USER DDT 01970 ;DEVICE JUSTR BECOME AVAILABLE FLAGS 000300' 000000 000000 01980 MTAVAL: 0 ;MAGNETIC TAPE 000301' 000000 000000 01990 DCAVAL: 0 ;DATA CONTROL 000302' 000000 000000 02000 DTAVAL: 0 ;DECTAPE 02020 ;NUMBER OF JOBS WAITING FOR DEVICES(-1=NONE, 0=1 USING, 1=1 USING) 000303' 777777 777777 02030 MTREQ: -1 ;MAGNETIC TAPE 000304' 777777 777777 02040 DCREQ: -1 ;DATA CONTROL IOINI1 - IO INITIALIZATION PART 1 PAGE 5-1 MINIMAL CONFIGURATION 000305' 777777 777777 02050 DTREQ: -1 ;DECTAPE 000306' 000000 000000 02060 IOCOMP: 0 ;NUMBER OF USERS IN IO WAIT STATE 000307' 000000 000000 02070 COMCNT: 0 ;NUMBER OF COMMANDS TYPED-IN BUT NOT DECODED 000310' 000000 000000 02080 STOPU: 0 ;NON-ZERO WHEN CLOCK INTERRUPT FORCED TO STOP USER 000311' 000000 000000 02090 SCHEDF: 0 ;NON-ZERO WHEN CLOCK ROUTINE IS SCHEDULING 000312' 000000 000000 02110 CH1ERR: 0 ;SPURIOUS INTERRUPT COUNTS FOR EACH CHANNEL 000313' 000000 000000 02120 CH2ERR: 0 000314' 000000 000000 02130 CH3ERR: 0 000315' 000000 000000 02140 CH4ERR: 0 000316' 000000 000000 02150 CH5ERR: 0 000317' 000000 000000 02160 CH6ERR: 0 000320' 000000 000000 02170 CH7ERR: 0 000251' 02190 USRLO1=USRLO+1 02200 INTERNAL USRLO1 IOINI1 - IO INITIALIZATION PART 1 PAGE 6 MINIMAL CONFIGURATION 000321' 000000 000000 02230 TIME: 0 ;TIME SYSTEM HAS RUN IN 60THS OF A SECOND 02260 XP TTYLEN,SCNLIN+1 ;LENGTH OF TTY TRANSLATOR TABLES(INCLUDING CTY) 000322' 02270 TTYTAB: BLOCK TTYLEN ;TTY TRANSLATOR TABLE 02280 ;SIGN BIT = 1 IF COMMAND JUST TYPED 02290 ;BITS 1 -9, JOB CONSOLE IS ATTACHED TO 02300 ;BITS 18-35, THE DEVICE DATA BLOCK FOR 000324' 000000 000000 02310 DEVOPR: 0 ;SIXBIT PHYSICAL NAME OF OPERATORS 02320 ;CONSOLE SET BY SCNSER TO FIRST ACTIVE TTY. 02330 ;LOCATIONS FOR CORE ALLOCATION 02340 XP CORBLK,^D256 ;NO. OF 1K BLOCKS POSSIBLE 000325' 02350 CORTAB: BLOCK /^D36+1 ;1K BLOCK USE BIT TABLE 02360 ;A 1 MEANS BLOCK IS IN USE 000335' 000000 000000 02370 CORLST: 0 ;1 BIT BYTE POINTER TO LAST FREE BLOCK POSSIBLE 000336' 000000 000000 02380 CORTAL: 0 ;TOTAL NO. OF FREE CORE BLOCKS LEFT 02390 ;CORLST AND CORTAL ARE SET UP AT SYSTEM INITIALIZATION 000336' 02410 SYSEND=.-1 ;LAST LOC. CLEARED BY SYSINI 02430 INTERNAL SYSSIZ 02440 EXTERNAL SYSFIN 000337' 000000 000000* 02450 SYSSIZ: EXP SYSFIN ;SIZE OF MONITOR(LAST LOC. USED) IOINI1 - IO INITIALIZATION PART 1 PAGE 7 MINIMAL CONFIGURATION 02480 END, NO ERRORS DETECTED PROGRAM BREAK IS 000340 9K CORE USED IOINI1 - IO INITIALIZATION PART 1 PAGE 8 SYMBOL TABLE 000436 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 CH5XIT 000213' INT CH6 000060' INT IOINI1 - IO INITIALIZATION PART 1 PAGE 8-1 SYMBOL TABLE 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 DCL 000001 INT DCREQ 000304' INT DCW 020000 INT DDI 000007 INT DDO 000006 INT DDTMEM 000037 INT IOINI1 - IO INITIALIZATION PART 1 PAGE 8-2 SYMBOL TABLE 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 DVOUT 000001 INT DVTTY 000010 INT ENTRB 020000 INT ERROR 000000 EXT I 000010 INT IB 000013 INT IOINI1 - IO INITIALIZATION PART 1 PAGE 8-3 SYMBOL TABLE 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 MTAVAL 000300' INT MTREQ 000303' INT MTW 010000 INT NDEV 000004 NDEVM1 000003 INT OBUFB 100000 INT OUTPB 004000 INT IOINI1 - IO INITIALIZATION PART 1 PAGE 8-4 SYMBOL TABLE 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 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 IOINI1 - IO INITIALIZATION PART 1 PAGE 8-5 SYMBOL TABLE 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 11:23:08 File: DSKB1 :IOINI2.LST [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:21 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:2424 File will be deleted after printing IOINI2 - IO INITIALIZATION PART 2 PAGE 1 MINIMAL CONFIGURATION 00010 XLIST 01930 LIST IOINI2 - IO INITIALIZATION PART 2 PAGE 7 MINIMAL CONFIGURATION 00010 ;SOME MACROS FOR DEFINING CONFIGURATION 00030 DEFINE NAME (A) 00040 00080 XP A,0 00090 SUBTTL A CONFIGURATION 00100 > 00120 DEFINE DATE (A) 00130 > 00180 DEFINE VERSION (A,B) 00190 > 00260 DEFINE CUSPTAPE (A) 00270 > 00320 DEFINE ACPDL (J,CHJN,CHJPDN) 00330 < CH'J'N=CHJN 00340 CH'J'PDN=CHJPDN 00350 > IOINI2 - IO INITIALIZATION PART 2 PAGE 2 MINIMAL CONFIGURATION 00010 NAME ^DEFINE NAME1 IOINI2 - IO INITIALIZATION PART 2 PAGE 2 MINIMAL CONFIGURATION 00040 DATE <8-16-65>^DEFINE DATE1 ^ 00050 VERSION 1,4^DEFINE VERS1 ^ 00060 CUSPTAPE DTA0^DEFINE CUSP1 ^ 00080 ;DEFINE THE IO PART OF THE SYSTEM 00090 ;THAT IS: 00100 ; DEFINE INTERRUPT SERVICE ROTUINE TO BE USED 00110 ; ASSIGN DEVICES TO PI CHANNELS 00130 DEFINE SYSTEM 00140 < 00150 ASSOC APR,6,<> 00160 ASSOC CTY,3,<> 00170 ASSOC SCN,3, 00180 ASSOC DTC,4, 00190 > 000001 00210 DTSIZ=1 ;MULTIPLE DECTAPE DIRECTORIES 000001 00230 SCNLIN=1 00250 ;DEFINE HIGHEST AC TO SAVE AND LENGTH OF PD LIST FOR EACH PI CHANNEL 000000 00270 ACPDL (1,0,0)^ CH1N=0 000000 00280 ACPDL (2,0,0)^ CH2N=0 000011 00290 ACPDL (3,11,20)^ CH3N=11 000011 00300 ACPDL (4,11,20)^ CH4N=11 000000 00310 ACPDL (5,0,0)^ CH5N=0 000017 00320 ACPDL (6,17,20^ CH6N=17 000000 00330 ACPDL (7,0,0)^ CH7N=0 00010 TITLE IOINI2 - IO INITIALIZATION PART 2 00030 ;DEFINITIONS OF DEVCHN AND DEVBIT 00040 ;THESE ALSO OCCUR IN IOINT1 00060 DEFINE ASSOC (A,N,D) 00070 < 00080 A'CHN=N 00090 > 00110 SYSTEM^ IOINI2 - IO INITIALIZATION PART 2 PAGE 1 MINIMAL CONFIGURATION IOINI2 - IO INITIALIZATION PART 2 PAGE 2 MINIMAL CONFIGURATION 00160 ;APR PIP BITS 000001 00180 APRBIT=1 000002 00190 REPEAT 7-APRCHN, 00200 XP PION,200 ;CONO PI,PION TURNS PI SYSTEM ON 00210 XP PIOFF,400 ;TURN IT OFF 00220 XP PICLK,PION+1B24+APRBIT ;TURN PI ON, AND FORCE CLOCK INT. 00230 XP CLKOFF,1000+APRCHN ;CONO APR,CLKOFF TURNS CLOCK FLAG OFF IOINI2 - IO INITIALIZATION PART 2 PAGE 3 MINIMAL CONFIGURATION 00270 ;ASSEMBLE ALL DEVICE DATA BLOCKS AND LINK THEM TOGETHER 00290 DEFINE SCNDDB (A,B,C) 00300 < INTERNAL C'DB 00310 C'DB: ZZ=. 00320 SIXBIT /C/ 00330 XWD A'CHN*PICHN,STTYBF+1 ;LONG ENOUGH FOR PRINTING 00340 ;SEQUENCE CARD IMAGE. 00350 ;USER BUFFERS ARE 2 WORDS 00360 ;LONGER THEN THE MONITORY TTY BUFFERS. 00370 0 00380 EXTERNAL TTYDSP 00390 XWD C,TTYDSP 00400 XWD DVTTY+DVIN+DVOUT,3 00410 0 00420 0 00430 XWD PROG,0 00440 XWD PROG,0 00450 XP TTYPTR,.-ZZ 00460 0 00470 XP TTYCTR,.-ZZ 00480 0 00490 XP TTYSAV,.-ZZ 00500 0 00510 XP TTYBUF,.-ZZ 00520 XP TTYBM1,TTYBUF-1 00530 XP STTYBF,20 00540 XP STTYB1,STTYBF+1 ;LENGTH+1 00550 BLOCK STTYBF 00560 XP TTYBFE,.-ZZ-1 00570 00580 ;LINE NO. PARAMETERS 00590 XP TTYLEN,SCNLIN+1 ;LENGTH OF TTY TRANSLATOR TABLE(INCLUDE TTY) 00600 XP TSCNLN,SCNLIN-1 ;HIGHEST TTY LINE NO.(NOT COUNTING CTY) 00610 XP TCONLN,TSCNLN+1 ;CTY LINE NUMBER 00620 XP MTTYLN,-TTYLEN ;NEGATIVEL LENGTH OF TRANSLATOR TABLE 00630 XP FSNCHN,SCNCHN*101 ;CHANNEL ASSIGNED, FOR FULL DUPLEX SCN. 00640 XP TTYLST,TTY0DB ;FIRST TTY DEVICE DATA BLOCK 00650 > 00670 ;NEG. NO. OF TELTYPE DEVICE DATA BLOCKS 000000 00690 MLTTYL=0 00700 DEFINE ASSOC (A,N,D) 00710 ,,>> 00730 SYSTEM^ 00750 INTERNAL MLTTYL IOINI2 - IO INITIALIZATION PART 2 PAGE 4 MINIMAL CONFIGURATION 00790 ;MAG TAPE DEVICE DATA BLOCK 000000 00810 MTCNUM=0 00830 DEFINE MTCDDB (A,B,C) 00840 < INTERNAL C'DB 00850 C'DB: SIXBIT /C/ 00860 MTCNUM=MTCNUM+1 00870 XWD IORET+A'CHN*PICHN,*10000+201 00880 00890 0 00900 XWD C,MTDISP 00910 EXTERNAL MTDISP 00920 XWD 4400+DVMTA+DVIN+DVOUT,154403 00930 0 00940 0 00950 XWD PROG,0 00960 XWD PROG,0 00970 > IOINI2 - IO INITIALIZATION PART 2 PAGE 5 MINIMAL CONFIGURATION 01000 ;DECTAPE DEVICE DATA BLOCK 000000 01020 DTCNUM=0 01040 DEFINE DTCDDB (A,B,C) 01050 < INTERNAL C'DB 01060 C'DB: ZZ=. 01070 SIXBIT /C/ 01080 DTCNUM=DTCNUM+1 01090 XWD IORET+A'CHN*PICHN,*10000+201 01100 0 01110 XWD C,UTDSP 01120 EXTERNAL UTDSP 01130 XWD 4400+DVDIR+DVIN+DVOUT,154403 01140 0 01150 0 01160 0 01170 0 01180 XP UFREE,.-ZZ ;NEXT FREE BLOCK NO. 01190 0 01200 XP UDIR,.-ZZ ;LINK TO DIRECTORY IN DATA BLOCK 01210 IFE DTSIZ,< EXP DIRBUF 01220 > 01230 IFN DTSIZ,< EXP DTDIR+200* 01240 > 01250 > IOINI2 - IO INITIALIZATION PART 2 PAGE 6 MINIMAL CONFIGURATION 01300 ;LINE PRINTER DEVICE DTA BLOCK 01320 DEFINE LPTDDB (A,B,C) 01330 IOINI2 - IO INITIALIZATION PART 2 PAGE 7 MINIMAL CONFIGURATION 01550 ;CARD READER DEVICE DATA BLOCK 01570 DEFINE CDRDDB (A,B,C) 01580 IOINI2 - IO INITIALIZATION PART 2 PAGE 8 MINIMAL CONFIGURATION 01770 ;PAPER TAPE READER DEVICE DATA BLOCK 01790 DEFINE PTRDDB (A,B,C) 01800 IOINI2 - IO INITIALIZATION PART 2 PAGE 9 MINIMAL CONFIGURATION 02010 ;PAPER TAPE PUNCH DEVICE DATA BLOCK 02030 DEFINE PTPDDB (A,B,C) 02040 IOINI2 - IO INITIALIZATION PART 2 PAGE 10 MINIMAL CONFIGURATION 02260 ;GENERATE DEVICE DATA BLOCKS NEEDED FOR THIS CONFIGURATION 02280 DEFINE ASSOC (A,B,C) 02290 < 02300 IRP C,< 02310 ;DEFINE FORWARD LINL SYMBOL 02320 LINK 02330 ; 02340 ; 02350 ; 02360 A'DDB A,B,C 02370 02380 C=0 ;SET LINK TO 0(IN CASE THIS IS LAST DDB) 02390 DEFINE LINK 02400 02410 > 02420 > 02440 INTERNAL DEVLST 000000' 000001' 000000 02460 DEVLST: XWD FIRDB,0 ;BEGINNING OF DEVICE DATA BLOCK CHAIN 02480 DEFINE LINK 02490 02510 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 PAGE 10-1 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 PAGE 11 MINIMAL CONFIGURATION 000104' 02550 LIT 02570 IFE DTSIZ,< DIRBUF: BLOCK 200 02580 INTERNAL DIRBUF 02590 > 000104' 02610 IFN DTSIZ, 02650 END, NO ERRORS DETECTED PROGRAM BREAK IS 000304 9K CORE USED IOINI2 - IO INITIALIZATION PART 2 PAGE 12 SYMBOL TABLE 000272 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 DEVIAD 000007 INT DEVIOS 000002 INT DEVLOG 000005 INT DEVLST 000000' INT DEVMOD 000004 INT DEVNAM 000000 INT DEVOAD 000010 INT IOINI2 - IO INITIALIZATION PART 2 PAGE 12-1 SYMBOL TABLE 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 IOFST 000004 INT IOIMPM 400000 INT IONRCK 000100 INT IORDEL 000100 INT IORET 000020 INT IOS 000000 INT IOSTRT 000010 INT IOUSE 400000 INT IOINI2 - IO INITIALIZATION PART 2 PAGE 12-2 SYMBOL TABLE 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 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 IOINI2 - IO INITIALIZATION PART 2 PAGE 12-3 SYMBOL TABLE UFREE 000011 INT USRMOD 010000 INT UTDSP 000074' EXT UUO 000014 INT ZZ 000071' 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 11:23:08 File: DSKB1 :IOINI3.LST [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:21 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:2404 File will be deleted after printing IOINI1 - IO INITIALIZATION PART 1 PAGE 1 MAXIMAL CONFIGURATION 00010 XLIST 01930 LIST IOINI1 - IO INITIALIZATION PART 1 PAGE 7 MAXIMAL CONFIGURATION 00010 ;SOME MACROS FOR DEFINING CONFIGURATION 00030 DEFINE NAME (A) 00040 00080 XP A,0 00090 SUBTTL A CONFIGURATION 00100 > 00120 DEFINE DATE (A) 00130 > 00180 DEFINE VERSION (A,B) 00190 > 00260 DEFINE CUSPTAPE (A) 00270 > 00320 DEFINE ACPDL (J,CHJN,CHJPDN) 00330 < CH'J'N=CHJN 00340 CH'J'PDN=CHJPDN 00350 > IOINI1 - IO INITIALIZATION PART 1 PAGE 2 MAXIMAL CONFIGURATION 00010 NAME ^DEFINE NAME1 IOINI1 - IO INITIALIZATION PART 1 PAGE 2 MAXIMAL CONFIGURATION 00040 DATE <8-16-65>^DEFINE DATE1 ^ 00050 VERSION 1,4^DEFINE VERS1 ^ 00060 CUSPTAPE DTA0^DEFINE CUSP1 ^ 00080 ;DEFINE THE IO PART OF THE SYSTEM 00090 ;THAT IS: 00100 ; DEFINE INTERRUPT SERVICE ROTUINE TO BE USED 00110 ; ASSIGN DEVICES TO PI CHANNELS 00130 DEFINE SYSTEM 00140 < 00150 ASSOC APR,6,<> 00160 ASSOC CTY,3,<> 00170 ASSOC SCN,3, 00180 ASSOC DTC,4, 00190 ASSOC DTC,4, 00200 ASSOC DTC,4, 00210 ASSOC DTC,4, 00220 ASSOC MTC,2, 00230 ASSOC MTC,2, 00240 ASSOC MTC,2, 00250 ASSOC MTC,2, 00260 ASSOC LPT,5, 00270 ASSOC PTP,5, 00280 ASSOC PTR,5, 00290 ASSOC CDR,5, 00300 > 000001 00320 DTSIZ=1 ;MULTIPLE DECTAPE DIRECTORIES 000001 00340 SCNLIN=1 00360 ;DEFINE HIGHEST AC TO SAVE AND LENGTH OF PD LIST FOR EACH PI CHANNEL 000000 00380 ACPDL (1,0,0)^ CH1N=0 000011 00390 ACPDL (2,11,20)^ CH2N=11 000011 00400 ACPDL (3,11,20)^ CH3N=11 000011 00410 ACPDL (4,11,20)^ CH4N=11 000011 00420 ACPDL (5,11,20)^ CH5N=11 000017 00430 ACPDL (6,17,20^ CH6N=17 000000 00440 ACPDL (7,0,0)^ CH7N=0 IOINI1 - IO INITIALIZATION PART 1 PAGE 2-1 MAXIMAL CONFIGURATION 00010 TITLE IOINI1 - IO INITIALIZATION PART 1 000000' 466033 044632 00020 NAME1^CONFIG: ASCIZ /MAXIMAL/ 000001' 406300 000000 000002' 341326 133132 00030 DATE1^SYSDAT: ASCIZ /8-16-65/ 000003' 331520 000000 000004' 000001 000004 00040 VERS1^SYSNUM: XWD ^D1,^D4 000005' 446441 200000 00050 CUSP1^SYSTAP: SIXBIT /DTA0/ 00070 ;CONFIGURATION INDEPENDANT PART OF IOINIT FOLLOWS: 00090 EXTERNAL ERROR 00110 ;SETUP CHANNEL SAVE AND RESTORE ROUTINES 000000 00130 CHANU1=0 000000 00140 CHANU2=0 000000 00150 CHANU3=0 000000 00160 CHANU4=0 000000 00170 CHANU5=0 000000 00180 CHANU6=0 000000 00190 CHANU7=0 00200 DEFINE ASSOC(A,NO,D) 00210 ;SPACE TO SAVE SOME AC'S 00330 EXP CH'NO'XIT ;FIRST ENTRY IN PD LIST(CHAN. EXIT) 00340 REPEAT CH'NO'PDN-1, ;REST OF PD LIST 00350 00360 CH'NO'XIT: MOVSI CH'NO'N, CH'NO'SAC 00370 BLT CH'NO'N, CH'NO'N 00380 JEN @CH'NO 00390 00400 CH'NO'CJ: XWD -CH'NO'PDN+1,CH'NO'SAC+CH'NO'N+1 ;INIT. SETTING OF P 00410 00420 CH'NO': 0 ;PC STORED HERE BY JSR 00430 JRST .+1 ;INSTR. AT END OF SERVICE CHAIN 00440 AOS CH'NO'ERR ;SPURIOUS INTERRUPT, ADD TO COUNT 00450 JEN @CH'NO ;AND DISMISS 00460 > 00470 > 00480 ;GENERATE THE SAVE AND RESTORE ROUTINES 00500 SYSTEM^ 000006' 000000 000000 CH6SAV: 0 000007' 202740 000033' MOVEM CH6N, CH6SAC+CH6N IOINI1 - IO INITIALIZATION PART 1 PAGE 1 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 SOME 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 PAGE 1-1 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 SOME 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 SOME 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 PAGE 1-2 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 SOME 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 PAGE 1-3 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 SOME 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 00520 ;SET UP NULL CHANNEL ROUTINES FOR UNUSED CHANNELS 00540 DEFINE NULCHN(J) 00550 < 00560 INTERNAL CH'J,CH'J'XIT 00570 CH'J: 0 00580 CH'J'XIT: AOS CH'J'ERR IOINI1 - IO INITIALIZATION PART 1 PAGE 1-4 MAXIMAL CONFIGURATION 00590 JEN @CH'J 00600 > 00620 IFE CHANU1,^ 000324' 000000 000000 CH1: 0 000325' 350000 000451' CH1XIT: AOS CH1ERR 000326' 254520 000324' JEN @CH1 00630 IFE CHANU2, 00640 IFE CHANU3, 00650 IFE CHANU4, 00660 IFE CHANU5, 00670 IFE CHANU6, 00680 IFE CHANU7,^ 000327' 000000 000000 CH7: 0 000330' 350000 000457' CH7XIT: AOS CH7ERR 000331' 254520 000327' JEN @CH7 IOINI1 - IO INITIALIZATION PART 1 PAGE 2 MAXIMAL CONFIGURATION 00720 ;ASSIGN DEVICE TO CHANNELS AND SETUP CORESPONDENCE TABLE 00730 ;OF CHANNELS TO SERVICE ROUTINES 00750 DEFINE ASSOC (A,N,D) 00760 < A'RET=CH'N'XIT 00770 A'SAV=CH'N'SAV 00780 A'SAC=CH'N'SAC 00790 A'CHL=CH'N 00800 A'CHN=N 00810 A'BIT=1 00820 REPEAT 7-N, 00830 A'OFF=1000+A'BIT ;CONO PI, A'OFF WIL TURN CHANNEL OFF 00840 A'ON=2000+A'BIT ;TURN BACK ON 00850 A'ACT=4000+A'BIT ;FORCE INTERRUPT ON CHAN. 00860 INTERN A'RET, A'SAV, A'CHL, A'CHN, A'SAC 00870 INTERNAL A'OFF,A'ON,A'ACT,A'BIT 00880 XWD A'CHL,A'INT 00890 EXTERNAL A'INT 00900 > 00920 INTERNAL DEVINT 000332' 00930 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 00940 NDEV=.-DEVINT ;NO. OF DEVICE INTERUPT SERVICE ROUTINES 000016 00950 NDEVM1=NDEV-1 ;(USED BY ONCE) 00960 INTERNAL NDEVM1 IOINI1 - IO INITIALIZATION PART 1 PAGE 3 MAXIMAL CONFIGURATION 01000 ;INITIALIZE SOME IO DEVICES 01010 ;IOINI CALLED BY A PUSHJ PDP, FROM SYSINI AT SYSTEM INITIALIZATION 01030 DEFINE IOINIT (A) 01040 > 01090 DEFINE ASSOC (A,B,C) 01100 < IFIDN ,< IOINIT MTC> 01110 IFIDN ,< IOINIT DTC> 01120 IFIDN ,< IOINIT LPT> 01130 IFIDN ,< IOINIT SCN> 01140 IFIDN , 01150 IFIDN , 01160 > 01180 INTERNAL IOINI 000351' 01200 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* 01210 JRST CLKINI ;ALWAYS INIT. CLOCK 01230 EXTERNAL CLKINI IOINI1 - IO INITIALIZATION PART 1 PAGE 4 MAXIMAL CONFIGURATION 01270 ;CLOCK CONTROL PARAMETERS 004006 01290 CLDS=4000+APRCHN ;CLOCK DISABLE 000206 01300 CLEN=200+APRCHN ;CLOCK ENABLE 01320 INTERNAL CLDS,CLEN 01340 ;BYTE POINTERS 000366' 270400 000014 01360 PUUOAC: POINT 4,UUO,12 ;UUO AC FIELD 000367' 000400 000000 01370 PIOMOD: POINT 4,IOS,35 ;MODE BITS 000370' 331106 000001 01380 PJOBN: POINT 9,DEVCHR(DEVDAT),8 ;DEVICE JOB ASSIGNMENT 000371' 220406 000001 01390 PJDCHN: POINT 4,DEVCHR(DEVDAT),17 ;JOB DEVICE CHANNEL NO. 000372' 140606 000001 01400 PUNIT: POINT 6,DEVCHR(DEVDAT),23 ;DEVICE UNIT NO. 01420 INTERNAL PUUOAC,PIOMOD,PJOBN,PJDCHN,PUNIT 01440 ;COMMON SUBROUTINE RETURNS 000373' 350003 000000 01460 CPOPJ2: AOS (PDP) 000374' 350003 000000 01470 CPOPJ1: AOS (PDP) 000375' 263140 000000 01480 CPOPJ: POPJ PDP, 01500 INTERNAL CPOPJ,CPOPJ1,CPOPJ2 IOINI1 - IO INITIALIZATION PART 1 PAGE 5 MAXIMAL CONFIGURATION 01530 ,SYSTEM DATA STORAGE 01560 INTERNAL JOB,JOBADR,JBTADR,JBTSTS,USRREL,USRINF,USRJDA 01570 INTERNAL USRPDP,JOBDAT,USRDDT,USRSAV,USRUXT,USRLO,USRHI 01580 INTERNAL COMCNT,IOCOMP,USRPOV,STOPU,SCHEDF,TIME,JBTAD1 01590 INTERNAL MTAVAL,DCAVAL,DTAVAL,MTREQ,DCREQ,DTREQ,TTYTAB,CORTAB 01600 INTERNAL CH1ERR,CH2ERR,CH3ERR,CH4ERR,CH5ERR,CH6ERR,CH7ERR 01610 INTERNAL CORLST,CORTAB,CORTAL,SYSEND,SYSBEG,DEVOPR 000000 01630 JOBN=0 ;DEFINE NO. OF JOBS (0 THRU JOBN-1) 01640 ;THERE MUST BE MORE TTY DEVICE DATA BLCKS THAN JOBS. 01660 DEFINE ASSOC (A,N,D) 01670 ,>> 01680 SYSTEM^ 777777 777776 01690 MJOBN=-JOBN 01700 INTERNAL JOBN,MJOBN 000376' 01720 SYSBEG: ;FIRST LOC IN SYSTEM DATA AREA 01730 XP SYSBG1,SYSBEG+1 ;FIRST LOC+1 000376' 000000 000000 01740 JOB: 0 ;CURRENT JOB NUMBER EXCEPT WEN SCHEDF IS NON-ZERO 000377' 000000 000000 01750 JOBADR: 0 ;CONTAINS ADDRESS OF JOB CURRENTLY RUNNING 000400' 000000 000000 01760 JOBDAT: 0 ;CONTAINS ADDRESS OF JOB DATA AREA 000401' 01780 JBTADR: BLOCK JOBN ;C(LH)=PROTECT, C(RH)=RELOCATION 01790 XP JBTAD1,JBTADR+1 ;ADDRESS OF JOB 1(USED BY SYSMAK) 000403' 01800 JBTSTS: BLOCK JOBN ;CONTAINS STATUS INFORMATION FOR EACH J 000405' 000000 000000 01820 USRPDP: 0 ;USER PUSH DOWN POINTER 000406' 000000 000000 01830 USRREL: 0 ;LH=0, RH CONTAINS CONTENTS OF PROTECTION REGISTER 000407' 01840 USRLO: ;FIRST LOC CLEARD BY SETUSR SUBROUTINE 000407' 000000 000000 01850 USRUXT: 0 ;UNUSED, JOBUXT USED TO SAVE UUO PC(UUO0) 000410' 000000 000000 01860 USRLEV: 0 ;UNUSED, JOBLEV USED TO SAVE LOC. 40 000411' 000000 000000 01870 USRSAV: 0 ;TEMPORARY STORAGE FOR UUO HANDLER 000412' 000000 000000 01880 USRPOV: 0 ;PUSH DOWN OVERFLOW TRAP 000413' 01890 BLOCK 2 000415' 000000 000000 01900 USRINF: 0 ;UN LAYED OUT USER INFORMATION 000416' 01910 USRJDA: BLOCK 20 ;RH=JOB DEVICE ASSIGNMENTS FOR THIS USER,LH=UUOS 01920 XP USRHI,.-1 ;LAST LOC CLEARED BY SETUSR ROUTINE 01930 XP USRPFI,.-1 ;LAST LOC PROTECTED FROM IO SERVICE 01940 XP USRPFU,. ;LAST LOC PROTECTED FROM USER PROGRAM 000436' 000000 000000 01950 USRDDT: 0 ;STARTING ADDR OF USER DDT 01970 ;DEVICE JUSTR BECOME AVAILABLE FLAGS 000437' 000000 000000 01980 MTAVAL: 0 ;MAGNETIC TAPE 000440' 000000 000000 01990 DCAVAL: 0 ;DATA CONTROL 000441' 000000 000000 02000 DTAVAL: 0 ;DECTAPE 02020 ;NUMBER OF JOBS WAITING FOR DEVICES(-1=NONE, 0=1 USING, 1=1 USING) 000442' 777777 777777 02030 MTREQ: -1 ;MAGNETIC TAPE 000443' 777777 777777 02040 DCREQ: -1 ;DATA CONTROL 000444' 777777 777777 02050 DTREQ: -1 ;DECTAPE IOINI1 - IO INITIALIZATION PART 1 PAGE 5-1 MAXIMAL CONFIGURATION 000445' 000000 000000 02060 IOCOMP: 0 ;NUMBER OF USERS IN IO WAIT STATE 000446' 000000 000000 02070 COMCNT: 0 ;NUMBER OF COMMANDS TYPED-IN BUT NOT DECODED 000447' 000000 000000 02080 STOPU: 0 ;NON-ZERO WHEN CLOCK INTERRUPT FORCED TO STOP USER 000450' 000000 000000 02090 SCHEDF: 0 ;NON-ZERO WHEN CLOCK ROUTINE IS SCHEDULING 000451' 000000 000000 02110 CH1ERR: 0 ;SPURIOUS INTERRUPT COUNTS FOR EACH CHANNEL 000452' 000000 000000 02120 CH2ERR: 0 000453' 000000 000000 02130 CH3ERR: 0 000454' 000000 000000 02140 CH4ERR: 0 000455' 000000 000000 02150 CH5ERR: 0 000456' 000000 000000 02160 CH6ERR: 0 000457' 000000 000000 02170 CH7ERR: 0 000410' 02190 USRLO1=USRLO+1 02200 INTERNAL USRLO1 IOINI1 - IO INITIALIZATION PART 1 PAGE 6 MAXIMAL CONFIGURATION 000460' 000000 000000 02230 TIME: 0 ;TIME SYSTEM HAS RUN IN 60THS OF A SECOND 02260 XP TTYLEN,SCNLIN+1 ;LENGTH OF TTY TRANSLATOR TABLES(INCLUDING CTY) 000461' 02270 TTYTAB: BLOCK TTYLEN ;TTY TRANSLATOR TABLE 02280 ;SIGN BIT = 1 IF COMMAND JUST TYPED 02290 ;BITS 1 -9, JOB CONSOLE IS ATTACHED TO 02300 ;BITS 18-35, THE DEVICE DATA BLOCK FOR 000463' 000000 000000 02310 DEVOPR: 0 ;SIXBIT PHYSICAL NAME OF OPERATORS 02320 ;CONSOLE SET BY SCNSER TO FIRST ACTIVE TTY. 02330 ;LOCATIONS FOR CORE ALLOCATION 02340 XP CORBLK,^D256 ;NO. OF 1K BLOCKS POSSIBLE 000464' 02350 CORTAB: BLOCK /^D36+1 ;1K BLOCK USE BIT TABLE 02360 ;A 1 MEANS BLOCK IS IN USE 000474' 000000 000000 02370 CORLST: 0 ;1 BIT BYTE POINTER TO LAST FREE BLOCK POSSIBLE 000475' 000000 000000 02380 CORTAL: 0 ;TOTAL NO. OF FREE CORE BLOCKS LEFT 02390 ;CORLST AND CORTAL ARE SET UP AT SYSTEM INITIALIZATION 000475' 02410 SYSEND=.-1 ;LAST LOC. CLEARED BY SYSINI 02430 INTERNAL SYSSIZ 02440 EXTERNAL SYSFIN 000476' 000000 000000* 02450 SYSSIZ: EXP SYSFIN ;SIZE OF MONITOR(LAST LOC. USED) IOINI1 - IO INITIALIZATION PART 1 PAGE 7 MAXIMAL CONFIGURATION 02480 END, NO ERRORS DETECTED PROGRAM BREAK IS 000477 9K CORE USED IOINI1 - IO INITIALIZATION PART 1 PAGE 8 SYMBOL TABLE 000532 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 CH3XIT 000124' INT CH4 000200' INT IOINI1 - IO INITIALIZATION PART 1 PAGE 8-1 SYMBOL TABLE 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 CTYBIT 000020 INT CTYCHL 000130' INT IOINI1 - IO INITIALIZATION PART 1 PAGE 8-2 SYMBOL TABLE 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 DTCINT 000340' EXT DTCOFF 001010 INT DTCON 002010 INT DTCRET 000174' INT DTCSAC 000142' INT DTCSAV 000134' INT IOINI1 - IO INITIALIZATION PART 1 PAGE 8-3 SYMBOL TABLE 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 JBFPTR 000001 INT JBTAD1 000402' INT JBTADR 000401' INT JBTSTS 000403' INT JBUF 000005 INT JDAT 000011 INT JERR 002000 INT IOINI1 - IO INITIALIZATION PART 1 PAGE 8-4 SYMBOL TABLE 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 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 IOINI1 - IO INITIALIZATION PART 1 PAGE 8-5 SYMBOL TABLE 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 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 IOINI1 - IO INITIALIZATION PART 1 PAGE 8-6 SYMBOL TABLE 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 UUO 000014 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 11:23:08 File: DSKB1 :IOINI4.LST [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:22 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:2380 File will be deleted after printing IOINI2 - IO INITIALIZATION PART 2 PAGE 1 MAXIMAL CONFIGURATION 00010 XLIST 01930 LIST IOINI2 - IO INITIALIZATION PART 2 PAGE 7 MAXIMAL CONFIGURATION 00010 ;SOME MACROS FOR DEFINING CONFIGURATION 00030 DEFINE NAME (A) 00040 00080 XP A,0 00090 SUBTTL A CONFIGURATION 00100 > 00120 DEFINE DATE (A) 00130 > 00180 DEFINE VERSION (A,B) 00190 > 00260 DEFINE CUSPTAPE (A) 00270 > 00320 DEFINE ACPDL (J,CHJN,CHJPDN) 00330 < CH'J'N=CHJN 00340 CH'J'PDN=CHJPDN 00350 > IOINI2 - IO INITIALIZATION PART 2 PAGE 2 MAXIMAL CONFIGURATION 00010 NAME ^DEFINE NAME1 IOINI2 - IO INITIALIZATION PART 2 PAGE 2 MAXIMAL CONFIGURATION 00040 DATE <8-16-65>^DEFINE DATE1 ^ 00050 VERSION 1,4^DEFINE VERS1 ^ 00060 CUSPTAPE DTA0^DEFINE CUSP1 ^ 00080 ;DEFINE THE IO PART OF THE SYSTEM 00090 ;THAT IS: 00100 ; DEFINE INTERRUPT SERVICE ROTUINE TO BE USED 00110 ; ASSIGN DEVICES TO PI CHANNELS 00130 DEFINE SYSTEM 00140 < 00150 ASSOC APR,6,<> 00160 ASSOC CTY,3,<> 00170 ASSOC SCN,3, 00180 ASSOC DTC,4, 00190 ASSOC DTC,4, 00200 ASSOC DTC,4, 00210 ASSOC DTC,4, 00220 ASSOC MTC,2, 00230 ASSOC MTC,2, 00240 ASSOC MTC,2, 00250 ASSOC MTC,2, 00260 ASSOC LPT,5, 00270 ASSOC PTP,5, 00280 ASSOC PTR,5, 00290 ASSOC CDR,5, 00300 > 000001 00320 DTSIZ=1 ;MULTIPLE DECTAPE DIRECTORIES 000001 00340 SCNLIN=1 00360 ;DEFINE HIGHEST AC TO SAVE AND LENGTH OF PD LIST FOR EACH PI CHANNEL 000000 00380 ACPDL (1,0,0)^ CH1N=0 000011 00390 ACPDL (2,11,20)^ CH2N=11 000011 00400 ACPDL (3,11,20)^ CH3N=11 000011 00410 ACPDL (4,11,20)^ CH4N=11 000011 00420 ACPDL (5,11,20)^ CH5N=11 000017 00430 ACPDL (6,17,20^ CH6N=17 000000 00440 ACPDL (7,0,0)^ CH7N=0 IOINI2 - IO INITIALIZATION PART 2 PAGE 2-1 MAXIMAL CONFIGURATION 00010 TITLE IOINI2 - IO INITIALIZATION PART 2 00030 ;DEFINITIONS OF DEVCHN AND DEVBIT 00040 ;THESE ALSO OCCUR IN IOINT1 00060 DEFINE ASSOC (A,N,D) 00070 < 00080 A'CHN=N 00090 > 00110 SYSTEM^ IOINI2 - IO INITIALIZATION PART 2 PAGE 2 MAXIMAL CONFIGURATION 00160 ;APR PIP BITS 000001 00180 APRBIT=1 000002 00190 REPEAT 7-APRCHN, 00200 XP PION,200 ;CONO PI,PION TURNS PI SYSTEM ON 00210 XP PIOFF,400 ;TURN IT OFF 00220 XP PICLK,PION+1B24+APRBIT ;TURN PI ON, AND FORCE CLOCK INT. 00230 XP CLKOFF,1000+APRCHN ;CONO APR,CLKOFF TURNS CLOCK FLAG OFF IOINI2 - IO INITIALIZATION PART 2 PAGE 3 MAXIMAL CONFIGURATION 00270 ;ASSEMBLE ALL DEVICE DATA BLOCKS AND LINK THEM TOGETHER 00290 DEFINE SCNDDB (A,B,C) 00300 < INTERNAL C'DB 00310 C'DB: ZZ=. 00320 SIXBIT /C/ 00330 XWD A'CHN*PICHN,STTYBF+1 ;LONG ENOUGH FOR PRINTING 00340 ;SEQUENCE CARD IMAGE. 00350 ;USER BUFFERS ARE 2 WORDS 00360 ;LONGER THEN THE MONITORY TTY BUFFERS. 00370 0 00380 EXTERNAL TTYDSP 00390 XWD C,TTYDSP 00400 XWD DVTTY+DVIN+DVOUT,3 00410 0 00420 0 00430 XWD PROG,0 00440 XWD PROG,0 00450 XP TTYPTR,.-ZZ 00460 0 00470 XP TTYCTR,.-ZZ 00480 0 00490 XP TTYSAV,.-ZZ 00500 0 00510 XP TTYBUF,.-ZZ 00520 XP TTYBM1,TTYBUF-1 00530 XP STTYBF,20 00540 XP STTYB1,STTYBF+1 ;LENGTH+1 00550 BLOCK STTYBF 00560 XP TTYBFE,.-ZZ-1 00570 00580 ;LINE NO. PARAMETERS 00590 XP TTYLEN,SCNLIN+1 ;LENGTH OF TTY TRANSLATOR TABLE(INCLUDE TTY) 00600 XP TSCNLN,SCNLIN-1 ;HIGHEST TTY LINE NO.(NOT COUNTING CTY) 00610 XP TCONLN,TSCNLN+1 ;CTY LINE NUMBER 00620 XP MTTYLN,-TTYLEN ;NEGATIVEL LENGTH OF TRANSLATOR TABLE 00630 XP FSNCHN,SCNCHN*101 ;CHANNEL ASSIGNED, FOR FULL DUPLEX SCN. 00640 XP TTYLST,TTY0DB ;FIRST TTY DEVICE DATA BLOCK 00650 > 00670 ;NEG. NO. OF TELTYPE DEVICE DATA BLOCKS 000000 00690 MLTTYL=0 00700 DEFINE ASSOC (A,N,D) 00710 ,,>> 00730 SYSTEM^ 00750 INTERNAL MLTTYL IOINI2 - IO INITIALIZATION PART 2 PAGE 4 MAXIMAL CONFIGURATION 00790 ;MAG TAPE DEVICE DATA BLOCK 000000 00810 MTCNUM=0 00830 DEFINE MTCDDB (A,B,C) 00840 < INTERNAL C'DB 00850 C'DB: SIXBIT /C/ 00860 MTCNUM=MTCNUM+1 00870 XWD IORET+A'CHN*PICHN,*10000+201 00880 00890 0 00900 XWD C,MTDISP 00910 EXTERNAL MTDISP 00920 XWD 4400+DVMTA+DVIN+DVOUT,154403 00930 0 00940 0 00950 XWD PROG,0 00960 XWD PROG,0 00970 > IOINI2 - IO INITIALIZATION PART 2 PAGE 5 MAXIMAL CONFIGURATION 01000 ;DECTAPE DEVICE DATA BLOCK 000000 01020 DTCNUM=0 01040 DEFINE DTCDDB (A,B,C) 01050 < INTERNAL C'DB 01060 C'DB: ZZ=. 01070 SIXBIT /C/ 01080 DTCNUM=DTCNUM+1 01090 XWD IORET+A'CHN*PICHN,*10000+201 01100 0 01110 XWD C,UTDSP 01120 EXTERNAL UTDSP 01130 XWD 4400+DVDIR+DVIN+DVOUT,154403 01140 0 01150 0 01160 0 01170 0 01180 XP UFREE,.-ZZ ;NEXT FREE BLOCK NO. 01190 0 01200 XP UDIR,.-ZZ ;LINK TO DIRECTORY IN DATA BLOCK 01210 IFE DTSIZ,< EXP DIRBUF 01220 > 01230 IFN DTSIZ,< EXP DTDIR+200* 01240 > 01250 > IOINI2 - IO INITIALIZATION PART 2 PAGE 6 MAXIMAL CONFIGURATION 01300 ;LINE PRINTER DEVICE DTA BLOCK 01320 DEFINE LPTDDB (A,B,C) 01330 IOINI2 - IO INITIALIZATION PART 2 PAGE 7 MAXIMAL CONFIGURATION 01550 ;CARD READER DEVICE DATA BLOCK 01570 DEFINE CDRDDB (A,B,C) 01580 IOINI2 - IO INITIALIZATION PART 2 PAGE 8 MAXIMAL CONFIGURATION 01770 ;PAPER TAPE READER DEVICE DATA BLOCK 01790 DEFINE PTRDDB (A,B,C) 01800 IOINI2 - IO INITIALIZATION PART 2 PAGE 9 MAXIMAL CONFIGURATION 02010 ;PAPER TAPE PUNCH DEVICE DATA BLOCK 02030 DEFINE PTPDDB (A,B,C) 02040 IOINI2 - IO INITIALIZATION PART 2 PAGE 10 MAXIMAL CONFIGURATION 02260 ;GENERATE DEVICE DATA BLOCKS NEEDED FOR THIS CONFIGURATION 02280 DEFINE ASSOC (A,B,C) 02290 < 02300 IRP C,< 02310 ;DEFINE FORWARD LINL SYMBOL 02320 LINK 02330 ; 02340 ; 02350 ; 02360 A'DDB A,B,C 02370 02380 C=0 ;SET LINK TO 0(IN CASE THIS IS LAST DDB) 02390 DEFINE LINK 02400 02410 > 02420 > 02440 INTERNAL DEVLST 000000' 000001' 000000 02460 DEVLST: XWD FIRDB,0 ;BEGINNING OF DEVICE DATA BLOCK CHAIN 02480 DEFINE LINK 02490 02510 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 PAGE 10-1 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 PAGE 10-2 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 PAGE 10-3 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 PAGE 11 MAXIMAL CONFIGURATION 000267' 02550 LIT 02570 IFE DTSIZ,< DIRBUF: BLOCK 200 02580 INTERNAL DIRBUF 02590 > 000267' 02610 IFN DTSIZ, 02650 END, NO ERRORS DETECTED PROGRAM BREAK IS 001267 10K CORE USED IOINI2 - IO INITIALIZATION PART 2 PAGE 12 SYMBOL TABLE 000376 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 DEN 000004 INT DEVADR 000007 INT DEVBUF 000006 INT DEVCHR 000001 INT DEVCTR 000011 INT DEVDAT 000006 INT DEVIAD 000007 INT IOINI2 - IO INITIALIZATION PART 2 PAGE 12-1 SYMBOL TABLE 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 INPB 010000 INT IO 000020 INT IOACT 010000 INT IOBEG 000002 INT IOBKTL 040000 INT IOCON 000040 INT IODEND 020000 INT IODERR 200000 INT IOINI2 - IO INITIALIZATION PART 2 PAGE 12-2 SYMBOL TABLE 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' 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 IOINI2 - IO INITIALIZATION PART 2 PAGE 12-3 SYMBOL TABLE 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 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' IOINI2 - IO INITIALIZATION PART 2 PAGE 12-4 SYMBOL TABLE 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 ZZ 000132' 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 11:23:08 File: DSKB1 :JOBDAT.LST [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:22 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:2357 File will be deleted after printing JOBDAT - JOB DATA AREA ASSIGNMENTS PAGE 1 00010 TITLE JOBDAT - JOB DATA AREA ASSIGNMENTS 00030 DEFINE BLK (A,B) 00040 > 00120 BLK JOBAC,20 ;SYSTEM USE AC STORAGE 00130 BLK JOBDAC,20 ;USER'S AC STORAGE WHILE JOB IS INACTIV 000157 00140 JOBDHI=JOBDAT+17 ;HIGHEST AC SAVED WHILE INACTIVE 00150 BLK JOBUUO,1 ;UUO SAVE AND TRAP LOCATIONS 00160 BLK JOB41,1 ;UUO JSR LOCATION 00170 BLK JOBPC,1 ;BITS 0-5=APR FLAGS, C(RH)=PC 00180 BLK JOBPDP,1 ;PUSH DOWN POINTER FOR SYSTEM USE 000043 00190 JOBPRT=JOBPDP ;FIRST LOC PROTECTED FROM ITNERRUPT SER 000044 00200 JOBPR1=JOBPRT+1 ;FIRST LOC+1 00210 BLK JOBREL,1 ;C(LH)=0, C(RH)=RELOCATION ADDRESS 00220 BLK JOBUXT,1 ;EXIT FROM UUO AT BREAK 00230 BLK JOBLEV,1 ;C(40) WHEN INACTIVE 00240 BLK JOBSAV,1 ;TEMPOARY STORAGE FOR UOO HANDLER 00250 BLK JOBPOV,1 ;PUSH DOWN OVERFLOW TRAP 00260 BLK JOBTEM,1 ;(UNUSED)TEMPORARY SYSTEM STORAGE 00270 BLK JOBTM1,1 ;" 00280 BLK JOBINF,1 ;UNUSED 00290 BLK JOBJDA,20 ;JOB IO DEVICE CHANNEL ASSIGNMENTS 00300 BLK JOBDDT,1 ;ADDRESS OF USER'S DDT 000073 00310 JOBPFI=JOBDDT-1 ;LAST LOC PROTECTED FROM IO SERVICE 000074 00320 JOBPFU=JOBDDT ;LAST LOC PROTECTED FROM USER 00330 BLK JOBCDP,1 ;(UNUSED)POINTER TO COMMAND STRING 00340 BLK JOBTRP,20 ;(UNUSED)TRAP LOCATIONS 00350 BLK JOBSYM,1 ;SYMBOL TABLE POINTER 00360 BLK JOBUSY,1 ;(UNUSED)POINTER TO UNDEFINED SYMBOL TA 00370 BLK JOBSA,1 ;C(RH)=STARTING ADDRESS 00380 ;C(LH)=HIGHEST LOCATION USED 00390 BLK JOBFF,1 ;FIRST FREE LOCATION 000140 00400 JOBDAT=140 ;LENGTH OF JOB DATA AREA 000137 00410 JOBHGH=JOBDAT-1 ;HIGHEST LOC IN JOB DATA AREA 000121 00420 JOBPDL=JOBPRO-1 ;FIRST LOC. -1 OF PD LIST 000122 00430 JOBPD1=JOBPDL+1 ;FIRST LOC. IN PD LIST 777777 777762 00440 MJOBPD=JOBPDL-JOBHGH ;- LENGTH OF PD LIST 000122 00450 JOBS41=JOBPRO ;PLACE WHERE SAVE-GET SAVES USER LOC 4 000140 00460 JOBDA=JOBDAT 00470 ENTRY JOBPFI,JOBPFU,JOBPDL,JOBPRO,MJOBPD,JOBHGH 00480 ENTRY JOBDHI,JOBPRT,JOBPR1,JOBDA,JOBS41,JOBPD1 00500 END, NO ERRORS DETECTED JOBDAT - JOB DATA AREA ASSIGNMENTS PAGE 1-1 PROGRAM BREAK IS 000000 8K CORE USED JOBDAT - JOB DATA AREA ASSIGNMENTS PAGE 2 SYMBOL TABLE 000046 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 11:23:08 File: DSKB1 :LPTSER.LST [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:22 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:2354 File will be deleted after printing LPTSER - LINE PRINTER SERVICE ROUTINE PAGE 1 8-4-65 00010 XLIST 01930 LIST LPTSER - LINE PRINTER SERVICE ROUTINE PAGE 7 8-4-65 00010 TITLE LPTSER - LINE PRINTER SERVICE ROUTINE 00020 SUBTTL 8-4-65 00030 INTERNAL LPTINT,LPTINI 00040 EXTERNAL LPTCHN, LPTCHL, LPTRET, OUT, WAIT1, LPTSAV, IOSET 00050 EXTERNAL ADVBFE, SETIOD,ILLINP,LPTCHB,LPTCLB 00070 ;DEVICE DATA BLOCK LINKAGE 00080 EXTERNAL LPTDAT,LPTCHR,LPTIOS,LPTSER,LPTMOD,LPTBUF,LPTPTR 00090 EXTERNAL LPTADR,LPTSV1 00100 ENTRY LPTDSP LPTSER - LINE PRINTER SERVICE ROUTINE PAGE 2 8-4-65 00140 ,LPT PARAMETER ASSIGNMENTS 00160 , LPT CONTROL REGISTER 002000 00170 LPTCLR=2000 ;CLEAR BUFFER 000100 00180 LPTDON=100 ;DONE FLAG 000400 00190 LPTERR=400 ;ERROR FLAG 001000 00200 LPTLOV=1000 ;LINE OVERFLOW 00220 , SPECIAL IO STATUS WORD ASSIGNMENTS 100000 00230 LPTADV=100000 00250 REPEAT 0,< 00260 , LPT DATABLOCK 00270 00280 LPTDAT: SIXBIT .LPT. 00290 LPTCHR: 32 00300 LPTIOS: 0 00310 LPTSER: EXP LPTDSP 00320 LPTMOD: XWD 0,3 00330 0 00340 LPTBUF: 0 00350 LPTPTR: 0 00360 LPTADR: XWD PROG,0 00370 LPTSV1: 0 00380 > 00400 , LPT SERVICE DISPATCH TABLE 000000' 254000 000004' 00420 LPTDSP: JRST LPTINI ;RELEASE 000001' 254000 000007' 00430 JRST LPTCLS ;CLOSE 000002' 254000 000013' 00440 JRST LPTOUT ;OUTPUT 000003' 254000 000000* 00450 JRST ILLINP ;INPUT 000004' 712600 002000 00470 LPTINI: CONO LPT,LPTCLR ;LPT INITIALIZE 000005' 513000 000034' 00480 HLLZS LPTINT 000006' 263140 000000 00490 POPJ PDP, LPTSER - LINE PRINTER SERVICE ROUTINE PAGE 3 8-4-65 000007' 260140 000000* 00530 LPTCLS: PUSHJ PDP,OUT ;PRINT REMAINING BUFFERS 000010' 260140 000000* 00540 PUSHJ PDP, WAIT1 ;WAIT FOR IOACT=0 000011' 712540 000126' 00550 DATAO LPT,LPTTOP ;PRINT CARRAGE RETURN, FORM FEED 000012' 263140 000000 00560 POPJ PDP, ;CLOSE RETURN 000013' 660000 010000 00580 LPTOUT: TRO IOS,IOACT ;IOACT=1 000014' 621000 400000 00590 TLZ IOS,IODISC ;IODISC:=0 000015' 661000 000020 00600 TLO IOS,IO ;IO:=1 000016' 603000 000002 00610 TLNE IOS,IOBEG ;VIRGIN DEVICE? IOBEG:=0 000017' 254000 000024' 00620 JRST LPTBEG ;YES 000020' 260140 000127' 00630 PUSHJ PDP,LPTSET 000021' 202000 000000* 00640 MOVEM IOS,LPTIOS ;C(LPTIOS):=C(IOS) 000022' 201040 000100 00650 MOVEI TAC,LPTDON 000023' 254000 000030' 00660 JRST LPTBG1 000024' 661000 400000 00680 LPTBEG: TLO IOS,IODISC 000025' 202000 000021* 00690 MOVEM IOS,LPTIOS ;C(LPTIOS):=C(IOS) 000026' 260140 000127' 00700 PUSHJ PDP,LPTSET 000027' 201040 002000 00710 MOVEI TAC,LPTCLR 000030' 201100 001500 00720 LPTBG1: MOVEI TAC1,LPTLOV+LPTERR+LPTDON 000031' 542100 000034' 00730 HRRM TAC1,LPTINT 000032' 712601 000000* 00740 CONO LPT, LPTCHB(TAC) ;CLEAR BUFFER AND ASSIGN PI C 000033' 263140 000000 00750 POPJ PDP, ;RETURN LPTSER - LINE PRINTER SERVICE ROUTINE PAGE 4 8-4-65 00800 , LINE PRINTER INTERRUPT SERVICE 000034' 712740 001500 00820 LPTINT: CONSO LPT,LPTLOV+LPTERR+LPTDON;LINE OVERFLOW, ERROR OR DONE 000035' 254000 000034' 00830 JRST LPTINT ;IF LPT IS IN FLAG LIST, GO TO ERROR, E 000036' 712700 000070 00840 CONSZ LPT,70 000037' 712740 000100 00850 CONSO LPT,LPTDON 000040' 254000 000102' 00860 JRST LPTERI ;YES 000041' 335000 000025* 00870 LPTIN1: SKIPGE LPTIOS ;IODISC=1? 000042' 254000 000053' 00880 JRST LPTDSC ;YES 000043' 712500 000000* 00890 BLKO LPT,LPTPTR ;PRINT 000044' 334000 000000 00900 SKIPA ;BUFFER EMPTY 000045' 254520 000000* 00910 JEN @LPTCHL ;DISMISS INTERRUPT AND RETURN 000046' 202040 000000* 00920 MOVEM TAC,LPTSV1 ;SAVE TAC 000047' 515040 400000 00930 HRLZI TAC,IODISC ;IODISC:=1 000050' 436040 000041* 00940 IORM TAC,LPTIOS 000051' 200040 000046* 00950 LPTERX: MOVE TAC,LPTSV1 ;RESTORE TAC 000052' 254520 000045* 00960 JEN @LPTCHL ;DISMISS INTERRUPT AND RETURN 000053' 264000 000000* 00980 LPTDSC: JSR LPTSAV ;SAVE ACCUMULATORS AND ESTABL 000054' 201300 000000* 00990 MOVEI DEVDAT,LPTDAT ;DEVDAT:=LPTDAT 000055' 260140 000000* 01000 PUSHJ PDP,IOSET ;PROG:=C(JBTADR18-35),ITEM:=C(DEVPTR) 000056' 200000 000050* 01010 MOVE IOS,LPTIOS 000057' 623000 000002 01020 TLZE IOS,IOBEG 000060' 254000 000077' 01030 JRST LPTBG ;PUT OUT CR-LF 000061' 260140 000000* 01040 PUSHJ PDP,ADVBFE ;ADVANCE BUFFER 000062' 254000 000073' 01050 JRST LPTOFF ;NEXT BUFFER EMPTY 000063' 602000 000040 01060 TRNE IOS,IOCON ;CONTINUOUS? (IOCON=0?) 000064' 254000 000073' 01070 JRST LPTOFF ;NO 000065' 621000 400000 01080 TLZ IOS,IODISC 000066' 260140 000127' 01090 PUSHJ PDP,LPTSET ;SET LPTPTR 000067' 623000 000001 01110 LPTINX: TLZE IOS,IOW ;IN A WAIT? IOW:=0 000070' 260140 000000* 01120 PUSHJ PDP,SETIOD ;YES. IOWS:=1 000071' 202000 000056* 01130 LPTXIT: MOVEM IOS,LPTIOS ;C(LPTIOS):=C(IOS) 000072' 254000 000000* 01140 JRST LPTRET ;RESTORE ACCUMULATORS AND DIS 000073' 620000 010000 01160 LPTOFF: TRZ IOS,IOACT 000074' 712600 000000 01170 CONO LPT,0 000075' 513000 000034' 01180 HLLZS LPTINT ;TURN LPT OFF 000076' 254000 000067' 01190 JRST LPTINX 000077' 712540 000126' 01210 LPTBG: DATAO LPT,LPTTOP ;SEND OUT CR-FF 000100' 621000 400000 01220 TLZ IOS,IODISC ;WHEN IODISC=1 000101' 254000 000071' 01230 JRST LPTXIT LPTSER - LINE PRINTER SERVICE ROUTINE PAGE 5 8-4-65 01270 ;HERE ON EITHER OVERFLOW OR ERROR(OFFLINE) OR ERROR CHANNEL 01280 ;NOT ASSIGNED. 000102' 202040 000051* 01300 LPTERI: MOVEM TAC,LPTSV1 ;SAVE TAC 000103' 712740 001000 01310 CONSO LPT,LPTLOV ;LINE OVERFLOW? 000104' 254000 000111' 01320 JRST LPTER1 ;NO 000105' 210040 000137' 01330 MOVN TAC,[EXP 100001] ;YES, DECREMENT POINTER 000106' 272040 000043* 01340 ADDM TAC,LPTPTR 000107' 712540 000140' 01350 DATAO LPT,[EXP 15B6+12B13] ;PRINT CARRIAGE RETURN, LINE 000110' 254000 000051' 01360 JRST LPTERX 000111' 712740 000070 01380 LPTER1: CONSO LPT,70 ;ERROR INTERRUPT ASSIGNED? 000112' 254000 000117' 01390 JRST LPTER2 ;NO 000113' 712600 000000* 01400 CONO LPT,LPTCLB ;YES, DEASSIGN IT,SET BUSY,CLEAR REST 000114' 201040 000100 01410 MOVEI TAC,LPTDON ;ENABLE FOR DONE FLAG ONLY 000115' 542040 000034' 01420 LPTERA: HRRM TAC,LPTINT 000116' 254000 000051' 01430 JRST LPTERX 000117' 712640 000001 01450 LPTER2: CONI LPT,TAC 000120' 405040 000300 01460 ANDI TAC,300 000121' 712601 000032* 01470 CONO LPT,LPTCHB(TAC) 000122' 201040 001500 01480 MOVEI TAC,LPTDON+LPTERR+LPTLOV 000123' 542040 000034' 01490 HRRM TAC,LPTINT 000124' 200040 000102* 01500 MOVE TAC,LPTSV1 000125' 254000 000041' 01510 JRST LPTIN1 000126' 064300 000000 01520 LPTTOP: EXP 15B6+14B13 ;CARRIAGE RETURN, FORM FEED LPTSER - LINE PRINTER SERVICE ROUTINE PAGE 6 8-4-65 01560 ,SET UP PRINTER COUNTER AND POINTER 000127' 201060 000000* 01580 LPTSET: MOVEI TAC,@LPTADR ;LPTPTR:=-(WORD COUNT+1), BUFFER ADDRES 000130' 210101 000001 01590 MOVN TAC1,1(TAC) 000131' 504040 000002 01600 HRL TAC,TAC1 000132' 343040 000134' 01610 AOJLE TAC,.+2 ;C(LPTPTR0-17)<0? 000133' 561040 000135' 01620 HRROI TAC,LPTNUL-1 000134' 202040 000106* 01630 MOVEM TAC,LPTPTR 000135' 263140 000000 01640 POPJ PDP, ;RETURN 000136' 000000 000000 01660 LPTNUL: 0 01680 END, 000137' 000000 100001 000140' 064240 000000 NO ERRORS DETECTED PROGRAM BREAK IS 000141 8K CORE USED LPTSER - LINE PRINTER SERVICE ROUTINE PAGE 7 SYMBOL TABLE 000236 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 PAGE 7-1 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 PAGE 7-2 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 11:23:08 File: DSKB1 :MTPSER.LST [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:22 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:2344 File will be deleted after printing MTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES PAGE 1 L. HANTMAN 8-9-65 00010 XLIST 01930 LIST MTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES PAGE 7 L. HANTMAN 8-9-65 00010 TITLE MTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES 00020 SUBTTL L. HANTMAN 8-9-65 000004 00030 T=ITEM 00040 ; MAG TAPE SERVICE SUBROUTINES 000000' 260140 000000* 00060 MTAPE1: PUSHJ PDP,WAIT1 000001' 551000 776000 00070 HRRZI IOS,776000 000002' 413006 000002 00080 ANDCAB IOS,DEVIOS(DEVDAT) 000003' 201214 000000 00090 MOVEI T,(UUO) 000004' 260140 000007' 00100 PUSHJ PDP,MTAPE+1 000005' 254000 000000* 00110 JRST UXIT 000006' 260140 000000* 00130 MTAPE: PUSHJ PDP,WAIT1 000007' 621000 010000 00140 TLZ IOS,IODT 000010' 660000 010000 00150 TRO IOS, IOACT ;SET ACTIVE 000011' 260140 000063' 00160 PUSHJ PDP,MTCHK2 ;CHECK IF MAG TAPE CONTROL AV 000012' 242200 000010 00170 LSH T,^D8 ;MOVE TO FUNCTION 000013' 405200 007400 00180 ANDI T,7400 ;MODE BITS 000014' 306200 004000 00190 CAIN T,4000 ;LOGICAL EOT? 000015' 254000 000436' 00200 JRST MTLEOT 000016' 302200 000400 00210 CAIE T,400 ;RWD? 000017' 254000 000022' 00220 JRST .+3 000020' 722700 004000 00230 CONSZ 224,4000 ;AT LOAD POINT? 000021' 254000 000520' 00240 JRST MTDMP4 000022' 201040 000001 00250 MOVEI TAC, TCF ;LOOK FOR TAPE CONTROL FREE 0 000023' 542040 000044' 00260 MTGO1: HRRM TAC, MTCONO 000024' 542040 000211' 00270 HRRM TAC, MTCINT 000025' 135040 000000* 00280 MTGO1A: LDB TAC,PUNIT ;UNIT 000026' 137040 000537' 00290 DPB TAC,[POINT 3,T,31] ;UNIT 000027' 135040 000540' 00300 LDB TAC, [POINT 3, IOS,28] ;DENSITY PARITY 000030' 431040 000005 00310 XORI TAC, 5 ;ODD, 556 000031' 137040 000541' 00320 DPB TAC,[POINT 3,T,23] 000032' 201044 000000* 00330 MOVEI TAC,MTCCHN(T) ;CHANNEL 000033' 722600 000000 00350 MTGO: CONO 224, 0 ;DISABLE ALL INTERRUPTS 000034' 660040 000200 00360 TRO TAC, 200 ;INHIBIT RETURN TO POOL 000035' 722201 000000 00370 CONO 220,(TAC) ;COMMAND 000036' 402000 000534' 00380 SETZM MTEOFF# ;CLEAR EOF FLAG 000037' 542300 000533' 00390 HRRM DEVDAT,MTDEV# ;COMMAND, DVDB 000040' 506040 000533' 00400 HRLM TAC,MTDEV 000041' 603000 010000 00410 TLNE IOS,IODT 000042' 700600 002100 00420 CONO PI,2000+DCB 000043' 201040 000225' 00430 MOVEI TAC,MTPDUN 000044' 722600 000005 00440 MTCONO: CONO 224,TCF+ERF ;ENABLE FLAGS 000045' 263140 000000 00450 POPJ PDP, 00470 ;READ 000046' 621000 000020 00480 MTIN: TLZ IOS, IO ;READING 000047' 260140 000056' 00490 PUSHJ PDP,MTCHEK ;IS SYSTEM AVAILABLE? 000050' 460066 000007 00500 SETCM TAC,@DEVIAD(DEVDAT) ;-SIZE-1 000051' 541066 000007 00510 MTIN1: HRRI TAC,@DEVIAD(DEVDAT) ;BUFFER ADDRESS, PROG INCLUDE 000052' 270040 000542' 00520 ADD TAC,[XWD 2,1] ;-SIZE+1,BUFFER+1 MTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES PAGE 1 L. HANTMAN 8-9-65 000053' 201200 002400 00530 MOVEI T,2400 ;READ 000054' 200100 000543' 00540 MTIN2: MOVE TAC1,[BLKI DC,4000+DCN+MTDC*10] 000055' 254000 000132' 00550 JRST MTINDC MTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES PAGE 2 L. HANTMAN 8-9-65 00580 ;IS SYSTEM AVAILABLE 000056' 660000 010000 00590 MTCHEK: TRO IOS, IOACT ;SET ACTIVE 000057' 661000 010000 00600 TLO IOS, IODT ;SET FOR DATA TRANSFER 000060' 202006 000002 00610 MOVEM IOS, DEVIOS(DEVDAT) 000061' 352000 000000* 00620 MTCHK1: AOSE DCREQ 000062' 260140 000000* 00630 PUSHJ PDP,DCWAIT 000063' 621000 004002 00640 MTCHK2: TLZ IOS, IOSEOF+IOBEG ;CLEAR SPACE TO EOF 000064' 202006 000002 00650 MOVEM IOS, DEVIOS(DEVDAT) ;STORE BITS 000065' 352000 000000* 00660 AOSE MTREQ 000066' 260140 000000* 00670 PUSHJ PDP,MTWAIT 000067' 256000 000025' 00680 XCT MTGO1A ;UNIT 000070' 241040 000004 00690 ROT TAC, 4 ;PUT IN UNIT POSITION 000071' 722201 000200 00700 CONO 220, 200(TAC) ;HAS UNIT ONLY 000072' 722600 000002 00710 CONO 224, SEL ;JAM UNIT INTO COMMAND BUFFER 000073' 722700 000002 00720 CONSZ 224, SEL ;UNIT NOT READY? 000074' 263140 000000 00730 POPJ PDP, 0 ;EXIT 000075' 241040 777774 00740 ROT TAC, -4 ;UNIT IN TAC 000076' 542301 000426' 00750 HRRM DEVDAT, MTSTAK(TAC) ;PUT IN STACK 000077' 200100 000544' 00760 MOVE TAC1, [XWD MTCLOK,^D32] ;HALF SECOND 000100' 137040 000545' 00770 DPB TAC, [POINT 3,TAC1,23] ;STORE UNIT NUMBER 000101' 506101 000426' 00780 HRLM TAC1, MTSTAK(TAC) ;SAVE ACTUAL CLOCK REQUEST 000102' 700600 000400 00790 CONO PI, 400 ;TURN OFF PI 000103' 136100 000000* 00800 IDPB TAC1, CLOCK ;REQUEST CLOCK RETURN TO MTCL 000104' 700600 000200 00810 CONO PI, 200 ;TURN PI ON 000105' 371000 000065* 00820 SOSL MTREQ ;DECREMENT REQUEST COUNT, ANYONE LEFT W 000106' 476000 000000* 00830 SETOM MTAVAL ;YES,SET MAG TAPE AVAL 000107' 607000 010000 00840 TLNN IOS, IODT ;NON-DATA TRANSFER? 000110' 254000 000113' 00850 JRST MTCHK3 ;YES 000111' 371000 000061* 00860 SOSL DCREQ ;NO,DECREMENT REQUEST COUNT,ANYONE LEFT 000112' 476000 000000* 00870 SETOM DCAVAL ;YES,SET DATA CONTROL AVAILAB 000113' 260140 000000* 00880 MTCHK3: PUSHJ PDP, WSYNC ;REQUEST WAIT 000114' 200006 000002 00890 MOVE IOS, DEVIOS(DEVDAT) ;LOAD STATUS 000115' 607000 010000 00900 TLNN IOS, IODT ;DATA TRANFER? 000116' 254000 000065' 00910 JRST MTCHK2+2 ;CHECK FOR MT AVAILABLE ONLY 000117' 254000 000061' 00920 JRST MTCHK1 ;CHECK FOR MT AND DC AVAIALABL MTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES PAGE 3 L. HANTMAN 8-9-65 00950 ;WRITE 000120' 661000 000020 00960 MTOUT: TLO IOS, IO ;WRITING 000121' 260140 000056' 00970 PUSHJ PDP,MTCHEK 000122' 722700 000200 00980 CONSZ 224,200 ;IS FILE PROTECT RING IN? 000123' 254000 000145' 00990 JRST MTOUTE ;NO, ERROR CANT WRITE. CROCK!! 000124' 201066 000010 01000 MTOUT1: MOVEI TAC,@DEVOAD(DEVDAT) ;BUFFER ADDRESS, PROG INCLUDE 000125' 210101 000001 01010 MOVN TAC1,1(TAC) ;-WD COUNT 000126' 504040 000002 01020 HRL TAC,TAC1 ;-WD CMT,BUFFER 000127' 347040 000274' 01030 AOJG TAC,MTNOTI ;BUFFER+1, TEST FOR ZERO WORD COUNT 000130' 200040 000546' 01040 MTOUT2: MOVE TAC,[BLKO DC,3400+DCN+MTDC*10] 000131' 201200 001000 01050 MOVEI T,1000 ;WRITE 000132' 202040 000532' 01060 MTINDC: MOVEM TAC,MTDCCN# ;BLKO POINTER 000133' 202040 000527' 01070 MOVEM TAC,DCWRD# 000134' 552100 000530' 01080 HRRZM TAC1, MDCSAV# ;SAVE DC COMMAND 000135' 541100 000527' 01090 HRRI TAC1,DCWRD 000136' 202100 000042 01100 MOVEM TAC1,40+<2*DCN> ;BLK COMMAND 000137' 200100 000547' 01110 MOVE TAC1,[JSR MTDCND] 000140' 202100 000043 01120 MOVEM TAC1,41+<2*DCN> 000141' 700600 001100 01130 CONO PI,1100 000142' 720220 000530' 01140 CONO DC, @MDCSAV ;DATA CONTROL COMMAND 000143' 201040 000004 01150 MOVEI TAC, ERF 000144' 254000 000023' 01160 JRST MTGO1 000145' 660000 200000 01180 MTOUTE: TRO IOS,IODERR ;WRITE LOCK, DEVICE ERROR 000146' 260140 000247' 01190 PUSHJ PDP,MTEND1 000147' 254000 000005* 01200 JRST UXIT 000150' 135040 000000* 01220 MTCLS: LDB TAC,PIOMOD ;MODE 000151' 307040 000016 01230 CAIG TAC, 16 ;DUMP MODE 000152' 254000 000157' 01240 JRST MTCLS1 ;CLOSE OUTPUT 000153' 603000 000020 01250 TLNE IOS,IO ;INPUT? 000154' 254000 000160' 01260 JRST MTCLS1+1 ;WRITE EOFS 000155' 201200 000016 01270 MOVEI T,16 ;SPACE TO EOF 000156' 254000 000006' 01280 JRST MTAPE ;GOES BACK TO UUO LEVEL 000157' 260140 000000* 01290 MTCLS1: PUSHJ PDP,OUT 000160' 201200 000003 01300 MOVEI T,3 ;WRITE IOF 000161' 260140 000006' 01310 PUSHJ PDP, MTAPE 000162' 201200 000003 01320 MOVEI T,3 ;WRITE EOF 000163' 260140 000006' 01330 PUSHJ PDP, MTAPE 000164' 201200 000007 01340 MOVEI T,7 ;BSP 000165' 254000 000006' 01350 JRST MTAPE 000166' 263140 000000 01360 MTDISP: POPJ PDP, ;RELEASE 000167' 254000 000150' 01370 JRST MTCLS ;CLOSE 000170' 254000 000120' 01380 JRST MTOUT ;WRITE 000171' 254000 000046' 01390 JRST MTIN ;READ 000172' 254000 000000* 01400 JRST CUXIT1 ;ENTER IN DIRECTORY 000173' 254000 000172* 01410 JRST CUXIT1 ;LOOKUP IN DIRECTORY 000174' 254000 000455' 01420 JRST MTDMPO ;DUMP OUT 000175' 254000 000505' 01430 JRST MTDMPI ;DUMP IN 000176' 254000 000147* 01440 JRST UXIT ;SETO 000177' 254000 000176* 01450 JRST UXIT ;SETI 000200' 254000 000177* 01460 JRST UXIT ;GETF MTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES PAGE 3-1 L. HANTMAN 8-9-65 000201' 210040 000454' 01480 MTCINI: MOVN TAC, MTREDO ;REPEAT COUNTER 000202' 572040 000535' 01490 HRREM TAC, MTERCN ;RESET ERROR CNTR 000203' 722600 000000 01500 CONO 224,0 ;CLEAR ENABLES 000204' 513000 000211' 01510 HLLZS MTCINT ;CLEAR CONSO 000205' 263140 000000 01520 POPJ PDP, MTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES PAGE 4 L. HANTMAN 8-9-65 01580 ;BLK COUNTED OUT 000206' 000000 000000 01600 MTDCND: 0 000207' 700600 001100 01610 CONO PI,DCB+1000 ;SHUT OF DC CHANNEL 000210' 254520 000206' 01620 JEN @MTDCND MTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES PAGE 5 L. HANTMAN 8-9-65 01660 ;FLAG FROM TAPE CONTROL. SET UP BY INSERT MACRO 000211' 722740 000005 01670 MTCINT: CONSO 224,TCF+ERF 000212' 254000 000212' 01680 JRST . 000213' 264000 000000* 01690 JSR MTCSAV ;SAVE ACS 000214' 550300 000533' 01700 HRRZ DEVDAT,MTDEV ;DVBD 000215' 135340 000000* 01710 LDB PROG,PJOBN; JOB NUMBER 000216' 550347 000000* 01720 HRRZ PROG, JBTADR(PROG) 000217' 200006 000002 01730 MOVE IOS, DEVIOS(DEVDAT) 000220' 722740 000001 01740 CONSO 224,TCF ;TAPE CONTROL FREE 000221' 254000 000324' 01750 JRST MTEOR 000222' 254000 000225' 01760 MTIDSP: JRST MTPDUN ;POINTS TO MTERR FOR ERROR 000223' 254000 000356' 01770 JRST MTBSP ;AFTER BACKSPACE 000224' 254000 000336' 01780 JRST MTERR ;IF ERROR FOUND 000225' 607000 010000 01790 MTPDUN: TLNN IOS,IODT 000226' 254000 000313' 01800 JRST MTNIO2 000227' 135040 000150* 01810 LDB TAC,PIOMOD 000230' 301040 000016 01820 CAIL TAC,16 000231' 254000 000247' 01830 JRST MTEND1 ;DUMP 000232' 603000 000020 01840 TLNE IOS,IO 000233' 254000 000274' 01850 JRST MTNOTI ;WRITING 000234' 332000 000534' 01860 SKIPE MTEOFF ;NOT EOF? 000235' 254000 000322' 01870 JRST MTEOF 000236' 201066 000007 01880 MTINDN: MOVEI TAC,@DEVIAD(DEVDAT) ;BUFFER ADDRESS 000237' 210100 000532' 01890 MOVN TAC1,MTDCCN ;WD CNT-1 000240' 253100 000241' 01900 AOBJN TAC1, .+1 ;WD CNT 000241' 513000 000002 01910 HLLZS TAC1 ;CLR RT HALF 000242' 270100 000527' 01920 ADD TAC1,DCWRD ;ADD CURRENT COUNT=NO. OF WDS 000243' 546101 000001 01930 HLRM TAC1,1(TAC) ;STORE AT WORD COUNT 000244' 260140 000000* 01940 PUSHJ PDP,ADVBFF 000245' 254000 000247' 01950 JRST .+2 ;NEXT BUFFER FULL 000246' 254000 000276' 01960 JRST MTCON ;CONTINUE MODE 000247' 720200 000000 01970 MTEND1: CONO DC, 0 ;TURN OFF DATA CONTROL 000250' 371000 000111* 01980 SOSL DCREQ ;DECREMENT REQUEST COUNT, ANYONE LEFT? 000251' 476000 000112* 01990 SETOM DCAVAL ;YES, SET FLAG FOR CLOCK 000252' 371000 000105* 02000 MTNIO: SOSL MTREQ 000253' 476000 000106* 02010 SETOM MTAVAL ;YES, SET FLAG FOR CLOCK 000254' 722700 010000 02020 CONSZ 224,10000 ;END OF TAPE? 000255' 660000 002000 02030 TRO IOS, IOTEND ;SET END OF TAPE INDICATION 000256' 620000 004000 02040 TRZ IOS, IOBOT ;CLR LOAD POINT INDICATION 000257' 722700 004000 02050 CONSZ 224, 4000 ;LOAD POINT? 000260' 660000 004000 02060 TRO IOS, IOBOT ;SET LOAD POINT INDICATION 000261' 722700 020000 02070 CONSZ 224, 20000 ;TAPE REWINDING? 000262' 660000 004000 02080 TRO IOS, IOBOT ;SET LOAD POINT INDICATION 000263' 623000 000001 02090 TLZE IOS, IOW ;CLEAR WAIT 000264' 260140 000000* 02100 PUSHJ PDP, SETIOD ;REQUEST WAIT SATISFIED 000265' 620000 010000 02110 TRZ IOS, IOACT ;CLEAR ACTIVE 000266' 202006 000002 02120 MOVEM IOS, DEVIOS(DEVDAT) ;RESTORE BITS 000267' 722600 000000 02130 CONO 224,0 ;CLEAR MAG TAPE ENABLES 000270' 513000 000211' 02140 HLLZS MTCINT ;CLEAR CONSO 000271' 210040 000454' 02150 MOVN TAC, MTREDO ;REPEAT COUNTER 000272' 572040 000535' 02160 HRREM TAC, MTERCN# MTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES PAGE 5-1 L. HANTMAN 8-9-65 000273' 263140 000000 02170 POPJ PDP, ;DISMISS INTERRUPT OR RETURN TO CALLER MTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES PAGE 6 L. HANTMAN 8-9-65 000274' 260140 000000* 02200 MTNOTI: PUSHJ PDP,ADVBFE ;WRITING 000275' 254000 000247' 02210 JRST MTEND1 000276' 602000 000040 02220 MTCON: TRNE IOS,IOCON ;CONTINUOUS? 000277' 254000 000247' 02230 JRST MTEND1 ;STOP TAPE 000300' 722700 010000 02240 CONSZ 224,10000 ;END OF TAPE? 000301' 254000 000247' 02250 JRST MTEND1 ;STOP TAPE 000302' 720200 000000 02260 CONO DC,0 ;CLEAR DATA CONTROL 000303' 623000 000001 02270 TLZE IOS,IOW 000304' 260140 000264* 02280 PUSHJ PDP,SETIOD 000305' 202006 000002 02290 MOVEM IOS,DEVIOS(DEVDAT) 000306' 210040 000454' 02300 MOVN TAC,MTREDO 000307' 572040 000535' 02310 HRREM TAC,MTERCN 000310' 607000 000020 02320 TLNN IOS,IO ;INPUT OR OUTPUT? 000311' 254000 000051' 02330 JRST MTIN1 ;CALL INPUT SUBROUTINE 000312' 254000 000124' 02340 JRST MTOUT1 ;CALL OUTPUT SUBROUTINE 000313' 554040 000533' 02350 MTNIO2: HLRZ TAC,MTDEV ;COMMAND 000314' 405040 007400 02360 ANDI TAC,7400 000315' 302040 003000 02370 CAIE TAC, 3000 ;SPACE ONE RECORD 000316' 254000 000252' 02380 JRST MTNIO ;EXIT 000317' 722700 000400 02390 CONSZ 224, 400 ;EOF? 000320' 661000 004000 02400 TLO IOS, IOSEOF ;SET EOF DETECTED 000321' 254000 000252' 02410 JRST MTNIO ;EXIT 000322' 661000 000040 02420 MTEOF: TLO IOS, IOEND 000323' 254000 000247' 02430 JRST MTEND1 000324' 722700 000030 02440 MTEOR: CONSZ 224,LPE+CPE ;IF END OF RECORD CHECK PARIT 000325' 370000 000222' 02450 SOS MTIDSP ;IF ERROR CAUSE INTERRUPT TO 02460 ;ERROR ROUTIE VIA TCF 000326' 722700 000400 02470 CONSZ 224, 400 ;EOF? 000327' 476000 000534' 02480 SETOM MTEOFF ;SET EOF FLAG 000330' 722600 000001 02490 MTIGN: CONO 224, TCF ;IF ERF, CAUSE INTERRUPT TO D 02500 ;PATCH TABLE, DISABLE ERF FLA 000331' 202040 000206' 02510 MOVEM TAC, MTDCND ;SAVE TAC 000332' 201040 000001 02520 MOVEI TAC, TCF ;LOOK FOR TCF ONLY 000333' 542040 000211' 02530 HRRM TAC, MTCINT ;SET CONSO 000334' 200040 000206' 02540 MOVE TAC,MTDCND ;RESTORE TAC 000335' 254000 000000* 02550 JRST MTCRET ;DISMISS AND RETURN VIA TCF MTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES PAGE 7 L. HANTMAN 8-9-65 000336' 554040 000533' 02580 MTERR: HLRZ TAC,MTDEV ;COMMAND 000337' 405040 007400 02590 ANDI TAC,7400 000340' 306040 002400 02600 CAIN TAC,2400 ;READ? 000341' 254000 000344' 02610 JRST .+3 000342' 306040 001000 02620 CAIN TAC,1000 ;WRITE 000343' 254000 000402' 02630 JRST MTIGN2 ;IGNORE IF NOT RD OR WRITE 000344' 606000 000100 02640 TRNN IOS, IONRCK ;RE-DO? 000345' 351000 000535' 02650 AOSL MTERCN ;THIRD ERROR? 000346' 254000 000354' 02660 JRST MTERR2 ;TRIPLE ERROR 000347' 554040 000533' 02670 HLRZ TAC,MTDEV ;COMMAND 000350' 405040 770377 02680 ANDI TAC,770377 000351' 722201 003400 02690 CONO 220,3400(TAC) ;BSP 000352' 370000 000222' 02700 SOS MTIDSP 000353' 254000 000330' 02710 JRST MTIGN 000354' 660000 200000 02730 MTERR2: TRO IOS, IODERR ;DEVICE ERROR 000355' 254000 000225' 02740 JRST MTPDUN 000356' 200040 000532' 02760 MTBSP: MOVE TAC,MTDCCN ;POINTER 000357' 202040 000527' 02770 MOVEM TAC,DCWRD ;RESET POINTER WORD 000360' 720240 000001 02780 CONI DC,TAC ;SAVE IN/OUT, PACK MD. DEV NU 02790 ;PRIORITY 000361' 405040 000777 02800 ANDI TAC,777 000362' 271040 003000 02810 ADDI TAC,3000 ;MAKE WRITE 000363' 606040 000400 02820 TRNN TAC,400 ;WAS IT WRITING? 000364' 271040 001000 02830 ADDI TAC,1000 ;MAKE READ 000365' 720201 000000 02840 CONO DC,(TAC) ;REISSUE CONO 000366' 554040 000533' 02850 HLRZ TAC,MTDEV ;COMMAND 000367' 722740 040000 02860 CONSO 224,XNC ;WAIT FOR XNC 000370' 254000 000367' 02870 JRST .-1 ;SHOULD ADD A COUNT(RUNAWAY TAPE TURNED 000371' 722201 000000 02880 CONO 220,(TAC) ;REISSUE RD OR WRITE 000372' 402000 000534' 02890 SETZM MTEOFF ;CLR EOF FLAG 000373' 700600 002100 02900 CONO PI,2000+DCB ;TURN ON CHANNEL 000374' 201040 000225' 02910 MOVEI TAC,MTPDUN ;RESET SWITCH 000375' 542040 000222' 02920 HRRM TAC,MTIDSP 000376' 201040 000004 02930 MOVEI TAC, ERF 000377' 542040 000211' 02940 HRRM TAC, MTCINT 000400' 722600 000004 02950 CONO 224, ERF 000401' 254000 000335* 02960 JRST MTCRET ;ENABLE PROPER FLAGS 000402' 350000 000222' 02970 MTIGN2: AOS MTIDSP ;RESET DISPATCH SWITCH 000403' 254000 000330' 02980 JRST MTIGN 03000 ;NEED TO TRY WRITING LONG RECORD GAP ON OUTPUT(ONLY) AND TRY 03010 ;ONCE MORE AT NEW SPOT ON TAPE IF TRIPLE ERROR MTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES PAGE 8 L. HANTMAN 8-9-65 040000 03050 XNC=40000 ;TRANSFER NEW COMMAND 000002 03060 MTDC=2 ;MAG TAPE DATA CONTROL DEVICE NO. 000001 03070 TCF=1 ;TAPE CONTROL FREE 000004 03080 ERF=4 ;END OF RECORD FLAG 000020 03090 LPE=20 ;LONG. PARITY ERROR 000010 03100 CPE=10 ;CHAR. PARITY ERROR 000100 03110 DCB=100 ;DATA CHANNEL NUMBER 000001 03120 DCN=1 ;DATA CHANNEL NUMBER 000002 03130 SEL=2 ;UNIT TO COMMAND BUFFER 004000 03140 IOSEOF=4000 ;SPACING ONE RECORD FORWARD FOUND EOF 002000 03150 IOTEND=2000 ;EOT INDICATION 000100 03160 IONRCK=100 ;DO NOT RE-TRY ON ERRORS 004000 03170 IOBOT=4000 ;TAPE AT LOAD POINT 010000 03180 IODT=10000 ;A 1 FOR A DATA TRANFER TYPE COMMAND 03190 EXTERNAL UXIT, ADVBFF, ADVBFE, DCREQ, DCWAIT, MTCSAV 03200 EXTERNAL MTCRET, DCAVAL, MTAVAL, MTCCHN, MTCCHL, MTREQ 03210 EXTERNAL MTWAIT,OUT,SETIOD,CLOCK,CUXIT1 03220 EXTERNAL WSYNC,USRREL,WAIT1,ADRERR,PUNIT,PIOMOD,PJOBN 03230 EXTERNAL JBTADR 03240 ENTRY MTDISP 03250 INTERNAL MTCINT,MTAPE1,MTCINI 03260 ;CLOCK INTERRUPT, UNIT IN TAC 000404' 550301 000426' 03270 MTCLOK: HRRZ DEVDAT, MTSTAK(TAC) ;DVDB 000405' 241040 000004 03280 ROT TAC, 4 ;PUT UNIT IN SEL BITS 000406' 722201 000200 03290 CONO 220, 200(TAC) ;UNIT ONLY 000407' 722600 000002 03300 CONO 224, SEL ;SEL UNIT 000410' 722700 000002 03310 CONSZ 224, SEL ;UNIT NOT READY? 000411' 254000 000421' 03320 JRST MTCLK2 ;UNIT READY 000412' 241040 777774 03330 ROT TAC, -4 ;FOR INDEXING PURPOSES 000413' 544101 000426' 03340 HLR TAC1, MTSTAK(TAC) ;CLOCK REQUEST 000414' 505100 000404' 03350 HRLI TAC1, MTCLOK ;GET CLOCK REQUEST 000415' 700600 000400 03360 CONO PI, 400 ;TURN OFF PI 000416' 136100 000103* 03370 IDPB TAC1, CLOCK ;STORE CLOCK REQUESTED 000417' 700600 000200 03380 CONO PI, 200 ;TURN ON PI 000420' 263140 000000 03390 POPJ PDP, 0 ;EXIT 000421' 200006 000002 03400 MTCLK2: MOVE IOS, DEVIOS(DEVDAT) 000422' 623000 000001 03410 TLZE IOS,IOW 000423' 260140 000304* 03420 PUSHJ PDP, SETIOD 000424' 202006 000002 03430 MOVEM IOS, DEVIOS(DEVDAT) 000425' 263140 000000 03440 POPJ PDP, 0 000426' 03450 MTSTAK: BLOCK ^D8 MTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES PAGE 9 L. HANTMAN 8-9-65 03490 ;LOGICAL END OF TAPE LOOP 000436' 722700 004000 03500 MTLEOT: CONSZ 224, 4000 ;TAPE NOT AT LOAD POINT? 000437' 254000 000442' 03510 JRST MTEOT2 ;AVOID BACKSPACE IFAT LOAD P 000440' 201200 003400 03520 MOVEI T,3400 ;BACKSPACE 000441' 260140 000022' 03530 PUSHJ PDP, MTGO1-1 000442' 201200 000016 03540 MTEOT2: MOVEI T,16 ;SPACE ONE FILE 000443' 260140 000006' 03550 PUSHJ PDP, MTAPE 000444' 201200 000006 03560 MOVEI T,6 ;SPACE ONE RECORD 000445' 260140 000006' 03570 PUSHJ PDP, MTAPE 000446' 260140 000006* 03580 PUSHJ PDP, WAIT1 ;WAIT UNTIL SPACING IS COMPLE 000447' 200006 000002 03590 MOVE IOS, DEVIOS(DEVDAT) 000450' 607000 004000 03600 TLNN IOS, IOSEOF ;WAS EOF DETECTED? 000451' 254000 000442' 03610 JRST MTEOT2 ;RESUME SPACING 000452' 201200 000007 03620 MOVEI T,7 ;BACKSPACE, LOGICAL EOF FOUND 000453' 254000 000006' 03630 JRST MTAPE ;RETURN BACK TO MAIN PROGRAM 000454' 000000 000012 03640 MTREDO: 12 ;NUMBER OF TIMES TO RE-EXECUTE MTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES PAGE 10 L. HANTMAN 8-9-65 03680 ;DEVICE DEPENDENT DUMP MODES. MODE 16. 03690 ;OUTPUT 000455' 661000 000020 03700 MTDMPO: TLO IOS, IO ;WRITING 000456' 550200 000014 03710 HRRZ T,UUO 000457' 260140 000056' 03720 PUSHJ PDP, MTCHEK ;IS SYSTEM AVAILABLE? 000460' 200120 000130' 03730 MOVE TAC1, @MTOUT2 ;BLK0 AND DATA CONTROL COMMAN 000461' 200040 000004 03740 MOVE TAC,T ;COMMAND LIST POINTER 000462' 201200 001000 03750 MOVEI T,1000 ;WRITING COMMAND 000463' 505040 000007 03760 MTDMP1: HRLI TAC, PROG ;ACTUAL ADDRESS OF COMMAND LI 000464' 202040 000531' 03770 MOVEM TAC, MTCMDP# ;COMMAND POINTER 000465' 336060 000001 03780 SKIPN TAC,@TAC ;COMMAND WORD 000466' 254000 000516' 03790 JRST MTDMP3 ;NOTHING TO DO 000467' 325040 000463' 03800 JUMPGE TAC, MTDMP1 ;CHANGE COMMAND SEQUENCE 000470' 576040 000536' 03810 HLREM TAC, SVCNTR# ;SAVE COUNTER 000471' 553000 000001 03820 HRRZS TAC ;GET ADDRESS ALONE 000472' 274040 000536' 03830 SUB TAC, SVCNTR ;GET LAST ADDRESS 000473' 313040 000000* 03840 CAMLE TAC, USRREL ;LESS THAN END? 000474' 254000 000514' 03850 JRST MTDMP2 ;OUT OF BOUNDS 000475' 200060 000531' 03860 MOVE TAC, @MTCMDP ;PICK UP POINTER AGAIN 000476' 270040 000007 03870 ADD TAC, PROG ;GET ACTUAL ADDRESS 000477' 260140 000132' 03880 PUSHJ PDP, MTINDC ;MOVE TAPE 000500' 260140 000446* 03890 PUSHJ PDP,WAIT1 000501' 350200 000531' 03900 AOS T,MTCMDP ;UPDATE COMMAND POINTER 000502' 607000 000020 03910 TLNN IOS, IO ;WRITING? 000503' 254000 000507' 03920 JRST MTDMPI+2 ;READING 000504' 254000 000457' 03930 JRST MTDMPO+2 ;WRITING 03940 ;INPUT 000505' 621000 000020 03950 MTDMPI: TLZ IOS, IO ;READING 000506' 550200 000014 03960 HRRZ T,UUO 000507' 260140 000056' 03970 PUSHJ PDP, MTCHEK ;IS SYSTEM AVAILABLE 000510' 200120 000054' 03980 MOVE TAC1,@MTIN2 ;BLKI AND DATA CONTROL COMMAN 000511' 200040 000004 03990 MOVE TAC,T ;COMMAND LIST POINTER 000512' 201200 002400 04000 MOVEI T,2400 ;READ COMMAND 000513' 254000 000463' 04010 JRST MTDMP1 ;DUMP 04020 ;ADDRESS ERROR 000514' 260140 000516' 04040 MTDMP2: PUSHJ PDP,MTDMP3 000515' 254000 000000* 04050 JRST ADRERR 04060 ;CLEAR ALL USE BITS. NOTHING IN COMMAND LIST 000516' 371000 000250* 04080 MTDMP3: SOSL DCREQ 000517' 476000 000251* 04090 SETOM DCAVAL 000520' 371000 000252* 04100 MTDMP4: SOSL MTREQ 000521' 476000 000253* 04110 SETOM MTAVAL 000522' 620000 010000 04120 TRZ IOS,IOACT 000523' 623000 000001 04130 TLZE IOS,IOW 000524' 260140 000423* 04140 PUSHJ PDP,SETIOD 000525' 202006 000002 04150 MOVEM IOS,DEVIOS(DEVDAT) 000526' 263140 000000 04160 POPJ PDP, 04180 END, MTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES PAGE 10-1 L. HANTMAN 8-9-65 000537' 040300 000004 000540' 070300 000000 000541' 140300 000004 000542' 000002 000001 000543' 720000 004021 000544' 000404' 000040 000545' 140300 000002 000546' 720100 003421 000547' 264000 000206' NO ERRORS DETECTED PROGRAM BREAK IS 000550 8K CORE USED MTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES PAGE 11 SYMBOL TABLE 000322 A 000000 INT AC1 000015 INT AC2 000016 INT AC3 000017 INT ADRERR 000515' EXT ADVBFE 000274' EXT ADVBFF 000244' EXT AL 000001 INT ASSCON 400000 INT ASSPRG 200000 INT B 000014 INT BUFPNT 000012 INT BUFWRD 000013 INT CLOCK 000416' 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 000517' EXT DCB 000100 DCL 000001 INT DCN 000001 DCREQ 000516' EXT DCW 020000 INT DCWAIT 000062' EXT DCWRD 000527' 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 PAGE 11-1 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 PAGE 11-2 SYMBOL TABLE JDAT 000011 INT JERR 002000 INT JIOW 100000 INT JNA 004000 INT LOOKB 040000 INT LPE 000020 MDCSAV 000530' MTAPE 000006' MTAPE1 000000' INT MTAVAL 000521' EXT MTBSP 000356' MTCCHL 000000 EXT MTCCHN 000032' EXT MTCHEK 000056' MTCHK1 000061' MTCHK2 000063' MTCHK3 000113' MTCINI 000201' INT MTCINT 000211' INT MTCLK2 000421' MTCLOK 000404' MTCLS 000150' MTCLS1 000157' MTCMDP 000531' MTCON 000276' MTCONO 000044' MTCRET 000401' EXT MTCSAV 000213' EXT MTDC 000002 MTDCCN 000532' MTDCND 000206' MTDEV 000533' MTDISP 000166' ENT MTDMP1 000463' MTDMP2 000514' MTDMP3 000516' MTDMP4 000520' MTDMPI 000505' MTDMPO 000455' MTEND1 000247' MTEOF 000322' MTEOFF 000534' MTEOR 000324' MTEOT2 000442' MTERCN 000535' MTERR 000336' MTERR2 000354' MTGO 000033' MTGO1 000023' MTGO1A 000025' MTIDSP 000222' MTIGN 000330' MTIGN2 000402' MTPSER - MAGNETIC TAPE SERVICE ROUTINES - NO DIRECTORIES PAGE 11-3 SYMBOL TABLE MTIN 000046' MTIN1 000051' MTIN2 000054' MTINDC 000132' MTINDN 000236' MTLEOT 000436' MTNIO 000252' MTNIO2 000313' MTNOTI 000274' MTOUT 000120' MTOUT1 000124' MTOUT2 000130' MTOUTE 000145' MTPDUN 000225' MTREDO 000454' MTREQ 000520' EXT MTSTAK 000426' 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 000524' EXT SVCNTR 000536' T 000004 TAC 000001 INT TAC1 000002 INT TCF 000001 TEM 000010 INT TTYATC 020000 INT TTYUSE 010000 INT USRMOD 010000 INT USRREL 000473' EXT UUO 000014 INT UXIT 000200' EXT WAIT1 000500' 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 11:23:08 File: DSKB1 :ONCE .LST [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:23 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:2325 File will be deleted after printing ONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE PAGE 1 THIS IS ONLY CODE PLACED AT THE END OF IOINIT 00010 XLIST 01930 LIST ONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE PAGE 7 THIS IS ONLY CODE PLACED AT THE END OF IOINIT 00010 TITLE ONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE 00020 SUBTTL THIS IS ONLY CODE PLACED AT THE END OF IOINIT 00030 ;WHICH SHOULD BE THE LAST LOADED PROGRAM BEFORE SYSMAK AND DDT 00040 ;THUS IF IT OVERFLOWS INTO THE USER AREA NO HARM IS DONE 00050 ;INITIALIZE PRIORITY CHANNELS AND SETUP INTERRUPT SERVICE ROUTINE CHA 00070 XP SYSFIN,.-1 ;LAST LOC. IN SYSTEM 010000 00080 NXM=10000 ;NON EX-MEM 00100 INTERNAL PATCH 000000' 00120 PATCH: BLOCK 100 ;PATCH SPACE 00130 ;C(SYSSIZE) SHOULD BE UPDATED AS PATCHES ARE MADE 000001 00150 T=TAC ;SOME ACS 000002 00160 C=TAC1 000005 00170 INT=DAT ;INTERRUPT SERVICE ENTRY POINT(USUALLY A CONSO INSTR.) 000006 00180 CHL=DEVDAT ;THE PLACE WHERE PC IS STORED FOR THAT CHANNEL 00200 ;LINK TO SERVICE ROUTINES 00220 INTERNAL LINKSR 00230 EXTERNAL NDEVM1 ;=NDOV-1 (DEFINED IN IOINI1) 00240 EXTERNAL DEVINT,JOBSYM 000100' 000000 000000 00260 LINKSR: 0 ;CALLED WITH JSR FROM SYSINI 00270 ;CHAIN INTERUPT SERVICE ROUTINES TOGETH 000101' 515240 254000 00280 HRLZI INT, 254000 ;FORM JRST INSTR. 000102' 201100 000000* 00290 MOVEI C, NDEVM1 ;NO. OV DEV. SERV. ROUTINES TO CHAIN 000103' 554302 000000* 00300 DEV1: HLRZ CHL, DEVINT(C) ;LOC. WHERE PC IS STORED 000104' 540242 000103* 00310 HRR INT, DEVINT(C) ;INTERRUPT SERVICE ROUTINE ENTRY POINT 000105' 200046 000001 00320 MOVE T, 1(CHL) ;INSERT THIS ROUTINE AT FRONT OF CHAIN 000106' 202045 000001 00330 MOVEM T, 1(INT) 000107' 202246 000001 00340 MOVEM INT, 1(CHL) 000110' 365100 000103' 00350 SOJGE C, DEV1 ONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE PAGE 2 THIS IS ONLY CODE PLACED AT THE END OF IOINIT 00390 ;MOVE SYMBOL TABLE UP IN MEMORY 00400 ;EXEC MUST BE LOADED IN 15K OR LESS IF GOING INTO 16K MACHINE 000111' 402000 000005 00420 SETZM DAT ;FIND FIRST NON EX MEM 000112' 700200 010000 00430 CONO APR,NXM ;CLEAR NON-EX MEM FLAG 000113' 271240 002000 00440 ADDI DAT,2000 ;TRY NEXT 1K BLOCK 000114' 200105 000000 00450 MOVE TAC1,(DAT) ;REFERENCE THIS LOCATION 000115' 700340 010000 00460 CONSO APR,NXM ;NON-EXISTENT? 000116' 254000 000113' 00470 JRST .-3 ;NO 000117' 275240 000001 00480 SUBI DAT,1 ;YES, HIGHEST LEGAL LOC 000120' 202240 000037 00490 MOVEM DAT,DDTMEM ;FOR DDT 000121' 275240 000177 00500 SUBI DAT,200-1 ;MAKE ROOM FOR DECDUMP 000122' 574100 000000* 00510 HLRE TAC1,JOBSYM ;-LENGTH OF S. T. 000123' 322100 000143' 00520 JUMPE TAC1,JRSTI1 ;0 IF NON S. T. TO MOVE UP 000124' 213000 000002 00530 MOVNS TAC1 ;+LENGTH 000125' 550040 000122* 00540 HRRZ TAC,JOBSYM ;FIRST ADDRESS 000126' 271042 000000 00550 ADDI TAC,(TAC1) 000127' 504040 000002 00560 HRL TAC,TAC1 ;XWD LENGTH,LENGTH+FIRST ADDRESS 000130' 275241 000001 00570 SUBI DAT,1(TAC) ;NEW LAST+1-OLD LAST+1 000131' 542240 000140' 00580 HRRM DAT,STO1 ;DIST. TO MOVE 000132' 200100 000125* 00590 MOVE TAC1,JOBSYM ;-N,FIRST ADD. 000133' 271045 000001 00600 ADDI TAC,1(DAT) ;FORM NEW S.T. POINTER 000134' 202100 000132* 00610 MOVEM TAC1,JOBSYM 000135' 201100 000134* 00620 MOVEI TAC1,JOBSYM 000136' 202100 000036 00630 MOVEM TAC1,DDTSYM 000137' 200101 777777 00640 MOVE TAC1,-1(TAC) 000140' 202101 000140' 00650 STO1: MOVEM TAC1,.(TAC) 000141' 274040 000551' 00660 SUB TAC,[XWD 1,1] 000142' 325040 000137' 00670 JUMPGE TAC,.-3 ONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE PAGE 3 THIS IS ONLY CODE PLACED AT THE END OF IOINIT 00710 ;SETUP LOCATIONS 40 THRU 57 000143' 200040 000552' 00730 JRSTI1: MOVE TAC,[XWD LOC40,40] 000144' 251040 000057 00740 BLT TAC,57 000145' 200040 000147' 00750 MOVE TAC,JRSTI 000146' 202040 000101' 00760 MOVEM TAC,LINKSR+1 ;DO ONCE ONLY 000147' 254020 000100' 00770 JRSTI: JRST @LINKSR 00790 EXTERN UUO0,ERROR 00800 EXTERN CH1,CH2,CH3,CH4,CH5,CH6,CH7 000150' 000000 000000 00820 LOC40: 0 ;UUO PC 000151' 264000 000000* 00830 JSR UUO0 ;TO UUO HANDLER 000152' 264000 000000* 00840 JSR CH1 000153' 265240 000000* 00850 JSP DAT,ERROR 000154' 264000 000000* 00860 JSR CH2 000155' 265240 000153* 00870 JSP DAT,ERROR 000156' 264000 000000* 00880 JSR CH3 000157' 265240 000155* 00890 JSP DAT,ERROR 000160' 264000 000000* 00900 JSR CH4 000161' 265240 000157* 00910 JSP DAT,ERROR 000162' 264000 000000* 00920 JSR CH5 000163' 265240 000161* 00930 JSP DAT,ERROR 000164' 264000 000000* 00940 JSR CH6 000165' 265240 000163* 00950 JSP DAT,ERROR 000166' 264000 000000* 00960 JSR CH7 000167' 265240 000165* 00970 JSP DAT,ERROR ONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE PAGE 4 THIS IS ONLY CODE PLACED AT THE END OF IOINIT 01020 ;ONCE ONLY CODE - OPERATOR SETUP DIALOGUE 01040 INTERNAL ONCE 01050 EXTERNAL CONMES,RADX10,CRLF,DECIN,DECIN1 01060 EXTERNAL THSDAT,MAKEND,JOBFF 01070 EXTERNAL ERNAM,OCTPNT,SYSSIZ,CONFIG,SYSNUM,SYSDAT 000170' 000000 000000 01090 ONCE: 0 000171' 201040 777777' 01100 MOVEI TAC,SYSFIN ;SET SIZE OF MONITOR 000172' 202040 000000* 01110 MOVEM TAC,SYSSIZ 000173' 200240 000443' 01120 MOVE DAT,LINEP ;SETUP LINE BYTE POINTER 000174' 200140 000553' 01130 MOVE PDP,[XWD ONCEPN,ONCEPD] 000175' 260140 000000* 01140 PUSHJ PDP,CRLF 000176' 201040 000000* 01150 MOVEI TAC,CONFIG 000177' 260140 000000* 01160 PUSHJ PDP,CONMES 000200' 201040 000474' 01170 MOVEI TAC,TSEXEC 000201' 260140 000177* 01180 PUSHJ PDP,CONMES 000202' 554040 000000* 01190 HLRZ TAC,SYSNUM 000203' 260140 000000* 01200 PUSHJ PDP,RADX10 000204' 201040 000554' 01210 MOVEI TAC,[ASCIZ /./] 000205' 260140 000201* 01220 PUSHJ PDP,CONMES 000206' 550040 000202* 01230 HRRZ TAC,SYSNUM 000207' 260140 000203* 01240 PUSHJ PDP,RADX10 000210' 201040 000555' 01250 MOVEI TAC,[ASCIZ / /] 000211' 260140 000205* 01260 PUSHJ PDP,CONMES 000212' 201040 000000* 01270 MOVEI TAC,SYSDAT 000213' 260140 000211* 01280 PUSHJ PDP,CONMES 000214' 260140 000175* 01290 PUSHJ PDP,CRLF 000215' 260140 000421' 01300 PUSHJ PDP,OPOUT ONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE PAGE 5 THIS IS ONLY CODE PLACED AT THE END OF IOINIT 01340 ;ASK FOR TODAYS DATE AND CONVERT 01350 ;DATE STORED AS ((Y-64)*12.+M-1)*31.+D-1 000216' 402000 000000* 01370 DATLOP: SETZM THSDAT 000217' 200240 000443' 01380 MOVE DAT,LINEP 000220' 201040 000477' 01390 MOVEI TAC,TODATE 000221' 260140 000213* 01400 PUSHJ PDP,CONMES 000222' 260140 000421' 01410 PUSHJ PDP,OPOUT 000223' 260140 000376' 01420 PUSHJ PDP,GETLIN 000224' 254000 000216' 01430 JRST DATLOP ;JUST CR 000225' 260140 000000* 01440 PUSHJ PDP,DECIN1 ;MONTH 000226' 254000 000216' 01450 JRST DATLOP ;ERROR 000227' 332000 000002 01460 SKIPE TAC1 000230' 303100 000014 01470 CAILE TAC1,^D12 000231' 254000 000216' 01480 JRST DATLOP 000232' 275100 000001 01490 SUBI TAC1,1 000233' 221100 000037 01500 IMULI TAC1,^D31 000234' 272100 000216* 01510 ADDM TAC1,THSDAT 000235' 260140 000225* 01520 PUSHJ PDP,DECIN1 ;DAY 000236' 254000 000216' 01530 JRST DATLOP 000237' 332000 000002 01540 SKIPE TAC1 000240' 303040 000037 01550 CAILE TAC,^D31 000241' 254000 000216' 01560 JRST DATLOP 000242' 275100 000001 01570 SUBI TAC1,1 000243' 272100 000234* 01580 ADDM TAC1,THSDAT 000244' 260140 000235* 01590 PUSHJ PDP,DECIN1 ;YEAR 000245' 254000 000216' 01600 JRST DATLOP 000246' 301100 000101 01610 CAIL TAC1,^D65 000247' 303100 000143 01620 CAILE TAC1,^D99 000250' 254000 000216' 01630 JRST DATLOP 000251' 275100 000100 01640 SUBI TAC1,^D64 ;YEAR ZERO 000252' 221100 000564 01650 IMULI TAC1,^D12*^D31 000253' 272100 000243* 01660 ADDM TAC1,THSDAT ONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE PAGE 6 THIS IS ONLY CODE PLACED AT THE END OF IOINIT 01700 ;GET TIME OF DAY 01720 EXTERN TIME 000254' 402000 000000* 01740 TIMLOP: SETZM TIME 000255' 200240 000443' 01750 MOVE DAT,LINEP 000256' 201040 000506' 01760 MOVEI TAC,TIMEM 000257' 260140 000221* 01770 PUSHJ PDP,CONMES 000260' 260140 000421' 01780 PUSHJ PDP,OPOUT 000261' 260140 000376' 01790 PUSHJ PDP,GETLIN 000262' 254000 000254' 01800 JRST TIMLOP ;JUST A CR 000263' 134100 000001 01810 ILDB TAC1,TAC 000264' 275100 000060 01820 SUBI TAC1,60 000265' 331000 000002 01830 SKIPL TAC1 ;CHECK FIRST DIGIT OF HOUR 000266' 303100 000002 01840 CAILE TAC1,2 000267' 254000 000254' 01850 JRST TIMLOP 000270' 220100 000556' 01860 IMUL TAC1,[^D60*^D60*^D60*^D10] 000271' 272100 000254* 01870 ADDM TAC1,TIME 000272' 134100 000001 01880 ILDB TAC1,TAC 000273' 275100 000060 01890 SUBI TAC1,60 ;CONVERT TO BINARY 000274' 331000 000002 01900 SKIPL TAC1 000275' 303100 000011 01910 CAILE TAC1,^D9 000276' 254000 000254' 01920 JRST TIMLOP 000277' 221100 645700 01930 IMULI TAC1,^D60*^D60*^D60 000300' 272100 000271* 01940 ADDM TAC1,TIME 000301' 260140 000244* 01950 PUSHJ PDP,DECIN1 000302' 254000 000254' 01960 JRST TIMLOP 000303' 303100 000073 01970 CAILE TAC1,^D59 000304' 254000 000254' 01980 JRST TIMLOP 000305' 221100 007020 01990 IMULI TAC1,^D60*^D60 000306' 272100 000300* 02000 ADDM TAC1,TIME ONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE PAGE 7 THIS IS ONLY CODE PLACED AT THE END OF IOINIT 02040 ;PRINT IO CONFIGURATION 02060 EXTERN DEVLST 000307' 200240 000443' 02080 MOVE DAT,LINEP 000310' 201040 000517' 02090 MOVEI TAC,IOCONF 000311' 260140 000257* 02100 PUSHJ PDP,CONMES 000312' 554300 000000* 02110 HLRZ DEVDAT,DEVLST 000313' 201040 000004 02120 MOVEI TAC,ITEM 000314' 261140 000001 02130 PUSH PDP,TAC 000315' 201040 000001 02140 ONCE5: MOVEI TAC,1 000316' 510206 000000 02150 HLLZ ITEM,DEVNAM(DEVDAT) 000317' 554306 000003 02160 ONCE4: HLRZ DEVDAT,DEVSER(DEVDAT) 000320' 322300 000324' 02170 JUMPE DEVDAT,ONCE6 000321' 510106 000000 02180 HLLZ TAC1,DEVNAM(DEVDAT) 000322' 316100 000004 02190 CAMN TAC1,ITEM 000323' 344040 000317' 02200 AOJA TAC,ONCE4 000324' 200340 000001 02210 ONCE6: MOVE PROG,TAC ;SAVE NO. 000325' 260140 000207* 02220 PUSHJ PDP,RADX10 000326' 201600 000040 02230 MOVEI UUO," " 000327' 136600 000005 02240 IDPB UUO,DAT 000330' 201600 000003 02250 MOVEI UUO,3 000331' 200440 000557' 02260 MOVE JDAT,[POINT 6,ITEM] 000332' 134100 000011 02270 ONCE7: ILDB TAC1,JDAT 000333' 271100 000240 02280 ADDI TAC1,240 000334' 136100 000005 02290 IDPB TAC1,DAT 000335' 367600 000332' 02300 SOJG UUO,ONCE7 000336' 201040 000560' 02310 MOVEI TAC,[ASCIZ /'S/] 000337' 303340 000001 02320 CAILE PROG,1 000340' 260140 000311* 02330 PUSHJ PDP,CONMES 000341' 260140 000214* 02340 PUSHJ PDP,CRLF 000342' 326300 000315' 02350 JUMPN DEVDAT,ONCE5 000343' 262140 000002 02360 POP PDP,TAC1 000344' 260140 000421' 02370 PUSHJ PDP,OPOUT ONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE PAGE 8 THIS IS ONLY CODE PLACED AT THE END OF IOINIT 02410 ;ASK IF SYSMAK IS WANTED 000345' 200240 000443' 02430 MOVE DAT,LINEP 000346' 201040 000524' 02440 MOVEI TAC,SYSM 000347' 260140 000340* 02450 PUSHJ PDP,CONMES 000350' 260140 000421' 02460 PUSHJ PDP,OPOUT 000351' 260140 000376' 02470 PUSHJ PDP,GETLIN 000352' 254000 000355' 02480 JRST ONCE2 ;NO SYSMAK 000353' 201040 000000* 02490 MOVEI TAC,MAKEND ;YES 000354' 202040 000172* 02500 MOVEM TAC,SYSSIZ 02520 ;IS EXEC DDT WANTED? 000355' 200240 000443' 02540 ONCE2: MOVE DAT,LINEP 000356' 201040 000536' 02550 MOVEI TAC,SYSDM 000357' 260140 000347* 02560 PUSHJ PDP,CONMES 000360' 260140 000421' 02570 PUSHJ PDP,OPOUT 000361' 260140 000376' 02580 PUSHJ PDP,GETLIN 000362' 254000 000365' 02590 JRST ONCE3 ;NO 000363' 201040 000000* 02600 MOVEI TAC,JOBFF ;FIRST FREE LOCATION 000364' 552040 000354* 02610 HRRZM TAC,SYSSIZ ONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE PAGE 9 THIS IS ONLY CODE PLACED AT THE END OF IOINIT 02650 ;PRINT OCTAL SIZE OF MONITOR 000365' 200240 000443' 02670 ONCE3: MOVE DAT,LINEP 000366' 201040 000541' 02680 MOVEI TAC,EXECIS 000367' 260140 000357* 02690 PUSHJ PDP,CONMES 000370' 200040 000364* 02700 MOVE TAC,SYSSIZ 000371' 260140 000000* 02710 PUSHJ PDP,OCTPNT 000372' 201040 000544' 02720 MOVEI TAC,LENGTH 000373' 260140 000367* 02730 PUSHJ PDP,CONMES 000374' 260140 000421' 02740 PUSHJ PDP,OPOUT 000375' 254020 000170' 02750 JRST @ONCE ONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE PAGE 10 THIS IS ONLY CODE PLACED AT THE END OF IOINIT 02790 ;ROUTINE TO READ A LINE FROM OPERATORS CONSOLE 02800 ;CALL: PUSHJ PDP,GETLIN 02810 ; JUST A CR TYPED IN 02820 ; A LINE TYPED IN,TAC SET AS BYTE POINTER 02840 EXTERN CPOPJ, CPOPJ1 000376' 200040 000443' 02860 GETLIN: MOVE TAC,LINEP 000377' 201200 000000 02870 MOVEI ITEM,0 000400' 712340 000040 02880 GET1: CONSO TTY,40 000401' 254000 000400' 02890 JRST .-1 000402' 712040 000002 02900 DATAI TTY,TAC1 000403' 712140 000002 02910 DATAO TTY,TAC1 000404' 136100 000001 02920 IDPB TAC1,TAC 000405' 405100 000177 02930 ANDI TAC1,177 000406' 306100 000177 02940 CAIN TAC1,177 ;RUBOUT 000407' 254000 000000* 02950 JRST CPOPJ 000410' 302100 000015 02960 CAIE TAC1,15 000411' 344200 000400' 02970 AOJA ITEM,GET1 000412' 712340 000020 02980 CONSO TTY,20 000413' 254000 000412' 02990 JRST .-1 000414' 201100 000012 03000 MOVEI TAC1,12 000415' 712140 000002 03010 DATAO TTY,TAC1 000416' 200040 000443' 03020 MOVE TAC,LINEP 000417' 326200 000000* 03030 JUMPN ITEM,CPOPJ1 000420' 263140 000000 03040 POPJ PDP, ONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE PAGE 11 THIS IS ONLY CODE PLACED AT THE END OF IOINIT 03080 ;ROUTINE TO TYPE A LINE ON OPERATORS CONSOLE 03090 ;ECHO CHECK STOPS LINE AND RETURNS 03100 ;CALL: DAT SET TO END OF MESSAGE 000421' 200040 000443' 03120 OPOUT: MOVE TAC,LINEP 000422' 712040 000002 03130 DATAI TTY,TAC1 000423' 316040 000005 03140 OPOUT1: CAMN TAC,DAT 000424' 262140 000000 03150 POP PDP, 000425' 712300 000040 03160 CONSZ TTY,40 000426' 254000 000434' 03170 JRST OPOUT2 ;ECHO CHECK 000427' 712300 000020 03180 CONSZ TTY,20 000430' 254000 000427' 03190 JRST .-1 000431' 134100 000001 03200 ILDB TAC1,TAC 000432' 712140 000002 03210 DATAO TTY,TAC1 000433' 254000 000423' 03220 JRST OPOUT1 000434' 712300 000020 03230 OPOUT2: CONSZ TTY,20 000435' 254000 000434' 03240 JRST .-1 000436' 712140 000561' 03250 DATAO TTY,[15] 000437' 712300 000020 03260 CONSZ TTY,20 000440' 254000 000437' 03270 JRST .-1 000441' 712140 000562' 03280 DATAO TTY,[12] 000442' 263140 000000 03290 POPJ PDP, 000443' 440700 000444' 03310 LINEP: POINT 7,LINBUF 000444' 03320 LINBUF: BLOCK 20 000010 03330 ONCEPN=10 000464' 03340 ONCEPD: BLOCK ONCEPN ONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE PAGE 12 THIS IS ONLY CODE PLACED AT THE END OF IOINIT 03380 ;MESSAGES 000474' 202505 620246 03400 TSEXEC: ASCIZ / T. S. EXEC-/ 000475' 271010 554212 000476' 415320 000000 000477' 03410 TODATE: ASCIZ / 000477' 064252 454640 03420 TYPE TODAY'S DATE AS ABOVE. 000500' 425012 447610 000501' 406624 751500 000502' 422032 442500 000503' 406464 040604 000504' 476550 527032 000505' 050000 000000 03430 / 000506' 03440 TIMEM: ASCIZ / 000506' 064252 454640 03450 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 03460 / 000517' 03470 IOCONF: ASCIZ / 000517' 064251 147500 03480 IO CONFIGURATION 000520' 416371 643222 000521' 436532 240650 000522' 446371 606424 03490 / 000523' 000000 000000 000524' 03510 SYSM: ASCIZ / 000524' 064250 447500 03520 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 03530 / 000536' 03550 SYSDM: ASCIZ / 000536' 064250 554212 03560 EXEC DDT? 000537' 415010 442250 000540' 374321 200000 03570 / 000541' 03580 EXECIS: ASCIZ / 000541' 064250 554212 03590 EXEC IS / 000542' 415011 151500 000543' 000000 000000 000544' 476072 440630 03600 LENGTH: ASCIZ /OCTAL LOCATIONS LONG. ONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE PAGE 12-1 THIS IS ONLY CODE PLACED AT THE END OF IOINIT 000545' 202311 741602 000546' 522231 747246 000547' 202311 747216 000550' 270321 200000 03610 / 03620 END, 000551' 000001 000001 000552' 000150' 000040 000553' 000010 000464' 000554' 270000 000000 000555' 200000 000000 000556' 000010 172600 000557' 440600 000004 000560' 236460 000000 000561' 000000 000015 000562' 000000 000012 NO ERRORS DETECTED PROGRAM BREAK IS 000563 8K CORE USED ONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE PAGE 13 SYMBOL TABLE 000265 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 000103' DEVADR 000007 INT DEVBUF 000006 INT DEVCHR 000001 INT DEVCTR 000011 INT DEVDAT 000006 INT DEVIAD 000007 INT DEVINT 000104' EXT DEVIOS 000002 INT DEVLOG 000005 INT DEVLST 000312' EXT DEVMOD 000004 INT ONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE PAGE 13-1 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 PAGE 13-2 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 000100' INT LOC40 000150' LOOKB 040000 INT MAKEND 000353' EXT MTW 010000 INT NDEVM1 000102' 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 000000' 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 777777 777777' INT ONCE ONLY CODE - OPERATOR DIALOGUE AND SERVICE ROUT. LINKAGE PAGE 13-3 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 11:23:08 File: DSKB1 :PTRSER.LST [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:23 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:2307 File will be deleted after printing PTRSER - PAPER TAPE READER SERVICE ROUTINE PAGE 1 8-15-65 00010 XLIST 01930 LIST PTRSER - PAPER TAPE READER SERVICE ROUTINE PAGE 7 8-15-65 00010 TITLE PTRSER - PAPER TAPE READER SERVICE ROUTINE 00020 SUBTTL 8-15-65 00030 EXTERNAL WSYNC, STOSQD, ILLOUT 00040 EXTERNAL STODAT, IOSET, SETBYT, CKS12, ADVBFF 00050 EXTERNAL SETIOD, PTRSAV, PTRCHN, PTRRET,PIOMOD 00060 INTERNAL PTRINT 00080 ;PTR DEVICE DATA BLOCK LINKAGE 00100 EXTERNAL PTRDB,PTRDAT,PTRCHR,PTRIOS,PTRSER,PTRMOD,PTRBUF 00110 EXTERNAL PTRADR,PTRPTR,PTRCTR,PTRSVC,PTRSV1 00120 ENTRY PTRDSP PTRSER - PAPER TAPE READER SERVICE ROUTINE PAGE 2 8-15-65 00160 ,PARAMETER ASSIGNMENTS 00170 , PTR CONTROL REGISTER 000010 00180 PTRDON=10; DONE FLAG 000020 00190 PTRBSY=20; BUSY FLAG 000040 00200 PTRBIN=40; BINARY READ MODE 000400 00210 POW=400; POWER. ON=1 00230 , SPECIAL IO STATUS WORD ASSIGMENTS 002000 00240 PTRERR=2000 200000 00250 PTRFCI=200000 100000 00260 PTRPOW=100000 00270 , SPECIAL ASCII CHARACTERS 000200 00280 NULL=200 000377 00290 RUBOUT=377 000232 00300 S2EOF=232; END OF FILE 00310 , PI CONTROL REGISTER 000200 00320 PION=200 000400 00330 PIOFF=400 00350 REPEAT 0,

00510 ,PTR SERVICE DISPATCH TABLE 000000' 254000 000134' 00530 PTRDSP: JRST PTRREL ;RELEASE 000001' 263140 000000 00540 POPJ PDP,; CLOSE 000002' 254000 000000* 00550 JRST ILLOUT ;OUTPUT 000003' 254000 000004' 00560 JRST PTRINP; INPUT PTRSER - PAPER TAPE READER SERVICE ROUTINE PAGE 3 8-15-65 000004' 607000 000002 00600 PTRINP: TLNN IOS,IOBEG; VIRGIN DEVICE? (IOBEG=1?) 000005' 254000 000013' 00610 JRST PTRIN1; NO 000006' 661000 000004 00620 TLO IOS,IOFST; IOFST:=1. NEXT ITEM WILL BE FIRST ITEM 000007' 260140 000000* 00630 PUSHJ PDP,SETBYT; TAC0-5:=TAC12-13:=0,TAC6-11:=BYTE SIZE 00640 , TAC14-17:=PROG 000010' 202040 000000* 00650 MOVEM TAC,PTRPTR; PTRPTR:=C(TAC) 000011' 710700 000400 00660 CONSZ PTR,POW; IS POWER ON? 000012' 661000 100000 00670 TLO IOS,PTRPOW; YES. PTRPOW:=1 000013' 660000 010000 00680 PTRIN1: TRO IOS,IOACT; IOACT:=1 000014' 135040 000000* 00690 LDB TAC,PIOMOD 000015' 201100 000000* 00700 MOVEI TAC1, PTRCHN; TAC1:=PTR PI CHANNEL ASSIGNME 000016' 306040 000014 00710 CAIN TAC,B; MODE=BINARY? 000017' 271100 000040 00720 ADDI TAC1,PTRBIN; YES. ALPHA/BINARY:=BINARY 000020' 201040 000010 00730 MOVEI TAC,PTRDON ;SET CONSO INTERRUPT FLAG 000021' 542040 000032' 00740 HRRM TAC,PTRINT 000022' 627000 000002 00750 TLZN IOS,IOBEG; VIRGIN DEVICE? (IOBEG=1?) 000023' 254000 000027' 00760 JRST PTRIN4; NO 000024' 202000 000000* 00770 MOVEM IOS,PTRIOS; PTRIOS:=C(IOS) 000025' 710602 000020 00780 CONO PTR,PTRBSY(TAC1); PTR BUSY FLAG:=1,ASSIGN INTER 000026' 263140 000000 00790 POPJ PDP,; INPUT RETURN-VIRGIN DEVICE 000027' 202000 000024* 00810 PTRIN4: MOVEM IOS,PTRIOS; PTRIOS:=C(IOS) 000030' 710602 000010 00820 CONO PTR,PTRDON(TAC1); PTR DONE FLAG:=1,ASSIGN INTER 000031' 263140 000000 00830 POPJ PDP, PTRSER - PAPER TAPE READER SERVICE ROUTINE PAGE 4 8-15-65 000032' 710740 000010 00870 PTRINT: CONSO PTR,PTRDON ;INTERRUPT. IS DONE FLAG = 1? 000033' 254000 000032' 00880 JRST PTRINT ;NO. IF PTR IS IN FLAG LIST, THIS LOC 000034' 331000 000027* 00890 SKIPL PTRIOS ;DISCONNECT REQUEST? (IODISC=1?) 000035' 710440 000000* 00900 DATAI PTR,PTRSV1 ;PTRSV1: = DATA WORD 000036' 264000 000000* 00910 JSR PTRSAV ;SAVE ACCUMULATORS AND ESTABLISH PDP 000037' 201300 000000* 00920 MOVEI DEVDAT,PTRDAT ;DEVDAT: = PTR SIXBIT 000040' 260140 000000* 00930 PUSHJ PDP,IOSET ;PROG:=C(JBTADR18-35),ITEM:=C(DEVCTR) 000041' 200000 000034* 00940 MOVE IOS,PTRIOS ;IOS:=C(PTRIOS) 000042' 200240 000035* 00950 MOVE DAT,PTRSV1 ;DAT:=C(PTRSV1) 000043' 710740 000400 00960 CONSO PTR,POW ;PTR POWER ON? 000044' 254000 000075' 00970 JRST PTREND ;NO 000045' 667000 100000 00980 TLON IOS,PTRPOW ;PTRPOW=1? PTRPOW:=1 000046' 254000 000131' 00990 JRST PTREX1 ;NO 000047' 623000 400000 01000 TLZE IOS,IODISC 000050' 254000 000121' 01010 JRST PTREX 000051' 623000 200000 01020 TLZE IOS,PTRFCI ;IS PTRFCI=1? 000052' 200240 000000* 01030 MOVE DAT,PTRSVC ;YES. DAT:=C(PTRSVC) 000053' 602000 000014 01040 PTRIN0: TRNE IOS,B ;MODE=BINARY? 000054' 254000 000061' 01050 JRST PTRI0 ;YES 000055' 302240 000200 01060 CAIE DAT,NULL ;LAST CHARACTER NULL OR RUBOUT 000056' 306240 000377 01070 CAIN DAT,RUBOUT 000057' 254000 000131' 01080 JRST PTREX1 ;YES 000060' 322240 000131' 01090 JUMPE DAT,PTREX1 ;DAT=0? 000061' 260140 000000* 01110 PTRI0: PUSHJ PDP,STODAT ;NO STORE DATA WORD. 000062' 255000 000000 01120 JFCL ;CHECKSUM ERROR 000063' 254000 000065' 01130 JRST PTRI1 ;BLOCK FULL OR BLOCK COMPLETE 000064' 254000 000131' 01140 JRST PTREX1 ;DATA STORED CORRECTLY. 000065' 260140 000000* 01160 PTRI1: PUSHJ PDP,ADVBFF ;ADVANCE BUFFER 000066' 661000 400000 01170 TLO IOS,IODISC; NEXT BUFFER IS FULL. IODISC:=1 000067' 602000 000040 01180 TRNE IOS,IOCON; NEXT BUFFER IS EMPTY. CONTINUOUS? (IOC 000070' 661000 400000 01190 TLO IOS,IODISC; NON-CONT. OPERATION. IODISC:=1 000071' 661000 000004 01200 PTRI2: TLO IOS,IOFST; IOFST:=1. NEXT ITEM IS FIRST ITEM OF A 000072' 623000 000001 01210 TLZE IOS,IOW; IN A WAIT? IOW:=0 000073' 260140 000000* 01220 PUSHJ PDP,SETIOD; IOWS:=1 000074' 254000 000131' 01230 JRST PTREX1 PTRSER - PAPER TAPE READER SERVICE ROUTINE PAGE 5 8-15-65 01270 ,COME HERE WHEN THE READER IS SHUT OFF 000075' 630000 000137' 01290 PTREND: TDZ IOS,[XWD PTRPOW,IOACT] ;PTRPOW:=0,IOACT:=0 000076' 260140 000134' 01300 PUSHJ PDP,PTRREL ;CLEAR PTR AND CONSO FLAG 000077' 135040 000014* 01310 LDB TAC,PIOMOD 000100' 661000 000040 01320 TLO IOS,IOEND ;IOEND:=1 000101' 602040 000014 01330 TRNE TAC,B ;MODE=A,AL 000102' 254000 000114' 01340 JRST PTREIB ;NO 000103' 201240 000232 01350 MOVEI DAT,S2EOF; EOF CHAR 000104' 260140 000061* 01360 PUSHJ PDP,STODAT ;STORE DATA WORD 000105' 254000 000062' 01370 JRST PTRI0+1 ;CHECKSUM ERROR 000106' 254000 000111' 01380 JRST .+3 ;BLOCK FULL OF BLOCK COMPLETE 000107' 260140 000000* 01390 PTREI: PUSHJ PDP,STOSQD; FINISH THIS BUFFER, STORE WORD COUNT 000110' 330000 000000 01400 SKIP 000111' 260140 000065* 01410 PUSHJ PDP,ADVBFF ;ADVANCE BUFFER 000112' 330000 000000 01420 SKIP 000113' 254000 000071' 01430 JRST PTRI2 000114' 302040 000014 01450 PTREIB: CAIE TAC,B ;MODE=BINARY? 000115' 254000 000107' 01460 JRST PTREI ;NO 000116' 607000 000004 01470 TLNN IOS,IOFST ;IOFST=1? 000117' 660000 002000 01480 TRO IOS,PTRERR ;NO. PTRERR:=1. BINARY BLOCK INCOMPLE 000120' 254000 000071' 01490 JRST PTRI2 PTRSER - PAPER TAPE READER SERVICE ROUTINE PAGE 6 8-15-65 01530 ,DISCONNECT PTR 000121' 337020 000000* 01540 PTREX: SKIPG @PTRADR ;IOUSE=1? 000122' 254000 000125' 01550 JRST PTREX0 ;YES. 000123' 710440 000042* 01560 DATAI PTR,PTRSV1 000124' 254000 000053' 01570 JRST PTRIN0 000125' 710440 000052* 01590 PTREX0: DATAI PTR,PTRSVC ;SAVE LAST DATA WORD FROM PTR 000126' 260140 000134' 01600 PUSHJ PDP,PTRREL ;CLEAR PTR AND CONSO FLAG 000127' 661000 200000 01610 TLO IOS,PTRFCI ;PTRFCI:=1 000130' 620000 010000 01620 TRZ IOS,IOACT ;IOACT:=0 000131' 202200 000000* 01640 PTREX1: MOVEM ITEM,PTRCTR ;PTRCTR:=C(ITEM) 000132' 202000 000041* 01650 MOVEM IOS,PTRIOS ;PTRIOS:=C(IOS) 000133' 254000 000000* 01660 JRST PTRRET ;RESTORE ACCUMULATORS AND DISMISS INTER 01680 INTERNAL PTRINI 000134' 01700 PTRINI: 000134' 710600 000000 01710 PTRREL: CONO PTR,0 ;CLEAR PTR CONTROL 000135' 513000 000032' 01720 HLLZS PTRINT ;CLEAR CONSO FLAG 000136' 263140 000000 01730 POPJ PDP, 01750 END, 000137' 100000 010000 NO ERRORS DETECTED PROGRAM BREAK IS 000140 8K CORE USED PTRSER - PAPER TAPE READER SERVICE ROUTINE PAGE 7 SYMBOL TABLE 000245 A 000000 INT AC1 000015 INT AC2 000016 INT AC3 000017 INT ADVBFF 000111' 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 PAGE 7-1 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 000040' 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 000077' EXT PION 000200 POW 000400 PTRSER - PAPER TAPE READER SERVICE ROUTINE PAGE 7-2 SYMBOL TABLE PROG 000007 INT PTR 000104 SPD PTRADR 000121' EXT PTRBIN 000040 PTRBSY 000020 PTRBUF 000000 EXT PTRCHN 000015' EXT PTRCHR 000000 EXT PTRCTR 000131' EXT PTRDAT 000037' EXT PTRDB 000000 EXT PTRDON 000010 PTRDSP 000000' ENT PTREI 000107' PTREIB 000114' PTREND 000075' PTRERR 002000 PTREX 000121' PTREX0 000125' PTREX1 000131' PTRFCI 200000 PTRI0 000061' PTRI1 000065' PTRI2 000071' PTRIN0 000053' PTRIN1 000013' PTRIN4 000027' PTRINI 000134' INT PTRINP 000004' PTRINT 000032' INT PTRIOS 000132' EXT PTRMOD 000000 EXT PTRPOW 100000 PTRPTR 000010' EXT PTRREL 000134' PTRRET 000133' EXT PTRSAV 000036' EXT PTRSER 000000 EXT PTRSV1 000123' EXT PTRSVC 000125' EXT RUBOUT 000377 RUN 200000 INT RUNABL 204000 INT S2EOF 000232 SETBYT 000007' EXT SETIOD 000073' EXT STODAT 000104' EXT STOSQD 000107' EXT TAC 000001 INT TAC1 000002 INT TEM 000010 INT TTYATC 020000 INT TTYUSE 010000 INT PTRSER - PAPER TAPE READER SERVICE ROUTINE PAGE 7-3 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 11:23:08 File: DSKB1 :PTPSER.LST [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:23 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:2296 File will be deleted after printing PTPSER - PAPER TAPE PUNCH SERVICE ROUTINE PAGE 1 8-15-65 00010 XLIST 01930 LIST PTPSER - PAPER TAPE PUNCH SERVICE ROUTINE PAGE 7 8-15-65 00010 TITLE PTPSER - PAPER TAPE PUNCH SERVICE ROUTINE 00020 SUBTTL 8-15-65 00030 EXTERNAL PTPCHN, PTPSAV, ADVBFE, ITMCT1, SETIOD, SETBYT, IOSET, CKS12 00040 EXTERNAL ILLINP, OUT, WAIT1, PTPRET,PTPCHL,PIOMOD 00050 INTERNAL PTPINT 00070 ;PTP DEVICE DATA BLOCK LINKAGE 00090 EXTERNAL PTPDB,PTPDAT,PTPCHR,PTPIOS,PTPSER,PTPMOD,PTPBUF 00100 EXTERNAL PTPPTR,PTPADR,PTPCTR,PTPCNT,PTPCHA,PTPSIO 00110 ENTRY PTPDSP PTPSER - PAPER TAPE PUNCH SERVICE ROUTINE PAGE 2 8-15-65 00150 , PARAMETER ASSIGNMENTS 00180 , PTP CONTROL REGISTER 000010 00190 PTPDON=10 00210 , FORMAT CONTROL 000200 00220 PTPFDN=200 00240 , SPECIAL IO STATUS WORD ASSIGNMENTS 200000 00250 PTPFED=200000 040000 00260 PTPSSQ=40000 020000 00270 PTPEOL=20000 010000 00280 PTPSEQ=10000 004000 00290 PTPBIN=4000 ;CHECKSUM BINARY 002000 00300 PTPIB=2000 ;IMAGE BINARY 00320 , SPECIAL ASCII CHARACTERS 000200 00330 NULL=200 000377 00340 RUBOUT=377 000211 00350 HORTAB=211 000213 00360 VERTAB=213 000214 00370 FORMFD=214 00390 REPEAT 0,< 00400 ,PTP DATA BLOCK 00410 00420 PTPDAT: SIXBIT "PTP" 00430 PTPCHR: 41 00440 PTPIOS: 0 00450 PTPSER: EXP PTPDSP 00460 PTPMOD: XWD 1000+PROG.14403 00470 0 00480 PTPBUF: 0 00490 PTPPTR: 0 00500 PTPADR: XWD PROG,0 00510 PTPCTR: 0 00520 PTPCNT: 0 00530 PTPCHA: 0 00540 PTPSIO: 0 00550 > 00570 ,PTP SERVICE DISPATCH TABLE 000000' 254000 000004' 00590 PTPDSP: JRST PTPREL ;RELEASE 000001' 254000 000007' 00600 JRST PTPCLS ;CLOSE 000002' 254000 000024' 00610 JRST PTPOUT ;OUTPUT 000003' 254000 000000* 00620 JRST ILLINP ;INPUT PTPSER - PAPER TAPE PUNCH SERVICE ROUTINE PAGE 3 8-15-65 00660 INTERNAL PTPINI 000004' 00670 PTPINI: 000004' 710200 000000 00680 PTPREL: CONO PTP,0 000005' 513000 000052' 00690 HLLZS PTPINT ;CLEAR CONSO FLAG BITS 000006' 263140 000000 00700 POPJ PDP, ;RETURN 000007' 260140 000000* 00720 PTPCLS: PUSHJ PDP,OUT; OUTPUT REMAINING BUFFERS 000010' 260140 000000* 00730 PUSHJ PDP,WAIT1; WAIT FOR IOACT=0. 000011' 200000 000000* 00740 MOVE IOS,PTPIOS; C(IOS):=C(PTPIOS) 000012' 661000 600001 00750 TLO IOS,IODISC+PTPFED+IOW; IODISC:=IOW:=PTPFED:=1 000013' 660000 010000 00760 TRO IOS,IOACT; IOACT:=1 000014' 202000 000011* 00770 MOVEM IOS,PTPIOS; C(PTPIOS):=C(IOS) 000015' 201040 000200 00780 MOVEI TAC,200 000016' 202040 000000* 00790 MOVEM TAC,PTPCNT; PTPCNT:=400 000017' 201040 000010 00800 MOVEI TAC,PTPDON ;SET CONSO FLAG 000020' 542040 000052' 00810 HRRM TAC,PTPINT 000021' 201040 000000* 00820 MOVEI TAC,PTPCHN; TAC:=PTPCHN,PI CHANNEL ASSIGNMENT 000022' 710201 000010 00830 CONO PTP,PTPDON(TAC); DONE FLAG:=1, ASSIGN PI CHANN 000023' 254000 000010* 00840 JRST WAIT1 ;WAIT FOR IOACT=0, ALL BUFFERS FINISHED PTPSER - PAPER TAPE PUNCH SERVICE ROUTINE PAGE 4 8-15-65 000024' 623000 000002 00880 PTPOUT: TLZE IOS,IOBEG ;VIRGIN DEVICE? (IOBEG:=0) 000025' 254000 000036' 00890 JRST PTPIN2 ;YES 000026' 660000 010000 00910 PTPIN1: TRO IOS,IOACT ;IOACT:=1 000027' 621000 400000 00920 TLZ IOS,IODISC ;CLEAR DISCONNECT BIT 000030' 202000 000014* 00930 MOVEM IOS,PTPIOS ;PTPIOS:=C(IOS) 000031' 201040 000010 00940 MOVEI TAC,PTPDON ;SET CONSO FLAG BIT 000032' 542040 000052' 00950 HRRM TAC,PTPINT 000033' 201040 000021* 00960 MOVEI TAC, PTPCHN 000034' 710201 000010 00970 CONO PTP,PTPDON (TAC); DONE FLAG:=1, ASSIGN PI CHAN 000035' 263140 000000 00980 POPJ PDP, ;RETURN 000036' 135040 000000* 01000 PTPIN2: LDB TAC,PIOMOD 000037' 661000 200024 01010 TLO IOS, IOFST+PTPFED+IO ;IOFST:=PTPFED:=IO:=1 000040' 621000 006000 01020 TLZ IOS,PTPBIN+PTPIB ;CLEAR BINARY AND IMAGE BINAR 000041' 306040 000013 01030 CAIN TAC,IB ;IMAGE BINARY? 000042' 661000 002000 01040 TLO IOS,PTPIB ;YES 000043' 306040 000014 01050 CAIN TAC,B ;MODE:=BINARY? 000044' 661000 004000 01060 TLO IOS,PTPBIN ;YES, PTPBIN:=1 000045' 201040 000200 01070 MOVEI TAC,PTPFDN ;PTPCNT:=PTPFDN 000046' 202040 000016* 01080 MOVEM TAC,PTPCNT 000047' 260140 000000* 01090 PUSHJ PDP,SETBYT ;SETBYT 000050' 502040 000000* 01100 HLLM TAC,PTPPTR ;PTPPTR0-5:=PTPPTR12-13:=0,PTPPTR6-11:= 01110 ;SIZE; PTPPTR14-17:=PROG 000051' 254000 000026' 01120 JRST PTPIN1 PTPSER - PAPER TAPE PUNCH SERVICE ROUTINE PAGE 5 8-15-65 01160 ,PUNCH INTERRUPT SERVICE 000052' 710340 000010 01180 PTPINT: CONSO PTP,PTPDON; DONE FLAG=1? 000053' 254000 000052' 01190 JRST PTPINT ;NO. IF PTP IS IN FLAG LIST GO TO ERROR 000054' 202000 000000* 01200 MOVEM IOS,PTPSIO ;PTPSIO:=C(IOS) SAVE IOS 000055' 200000 000030* 01210 MOVE IOS,PTPIOS ;IOS:=C(PTPIOS) 000056' 603000 200000 01220 TLNE IOS,PTPFED ;FEED REQUEST? (PTPFED=1?) 000057' 254000 000151' 01230 JRST PTPS2 ;YES 000060' 200000 000054* 01240 MOVE IOS,PTPSIO ;RESTORE IOS 000061' 264000 000000* 01250 JSR PTPSAV ;SAVE ACS AND ESTABLISH PDP 000062' 201300 000000* 01260 MOVEI DEVDAT,PTPDAT 000063' 260140 000000* 01270 PUSHJ PDP,IOSET ;PROG:=(JBTADR 18-35),ITEM:=C(DEVCTR) 000064' 200000 000055* 01280 MOVE IOS,PTPIOS 000065' 623000 400000 01290 TLZE IOS,IODISC ;DISCONNECT? (IODISC=1?) 000066' 254000 000167' 01300 JRST PTPADV ;YES 000067' 623000 000004 01310 TLZE IOS,IOFST ;IOFST=1? IOFST:=0 000070' 254000 000175' 01320 JRST PTP9 ;YES 000071' 607000 006000 01330 TLNN IOS,PTPBIN+PTPIB ;BINARY PUNCH MODE? 000072' 254000 000121' 01340 JRST PTP3 ;NO 000073' 200040 000000* 01360 PTPB0: MOVE TAC,PTPCHA; BINARY OUTPUT BYTE SIZE=36 000074' 241040 000006 01370 ROT TAC,6 000075' 202040 000073* 01380 MOVEM TAC,PTPCHA 000076' 405040 000077 01390 ANDI TAC,77; TAC:=XX, SIXBIT SUB-BYTE 000077' 271040 000200 01400 ADDI TAC,200 000100' 710140 000001 01410 DATAO PTP,TAC; PUNCH 2XX 000101' 371000 000046* 01420 SOSL PTPCNT; C(PTPCNT):=C(PTPCNT)-1. WORD DONE? 000102' 254000 000227' 01430 JRST PTPXIT; NO 000103' 371000 000000* 01440 SOSL PTPCTR; C(PTPCTR):=C(PTPCTR)-1. ITEM COUNT < 0 000104' 254000 000113' 01450 JRST PTPB1; NO 000105' 603000 002000 01460 TLNE IOS,PTPIB ;IMAGE BINARY? 000106' 665000 400000 01470 TLOA IOS,IODISC ;YES, SUPPRESS TAPE FEED. 000107' 661000 600000 01480 TLO IOS,IODISC+PTPFED ;IODIS:=PTPFED:=1 000110' 201040 000010 01490 MOVEI TAC,10 000111' 202040 000101* 01500 MOVEM TAC,PTPCNT; PTPCNT:=10 000112' 254000 000227' 01510 JRST PTPXIT 000113' 201040 000005 01530 PTPB1: MOVEI TAC,5 ;PTPCNT:=5 000114' 202040 000111* 01540 MOVEM TAC,PTPCNT 000115' 200260 000050* 01550 MOVE DAT,@PTPPTR; PTPCHA:=OUTPUT DATA WORD 000116' 350000 000115* 01560 AOS PTPPTR; PTPPTR:=C(PTPPTR)+1. ADVANCE ITEM POIN 000117' 202240 000075* 01570 MOVEM DAT,PTPCHA 000120' 254000 000227' 01580 JRST PTPXIT PTPSER - PAPER TAPE PUNCH SERVICE ROUTINE PAGE 6 8-15-65 000121' 710140 000117* 01620 PTP3: DATAO PTP,PTPCHA; PUNCH CHARACTER 000122' 602000 000014 01630 TRNE IOS,14; IS MODE AN ALPHA MODE 000123' 254000 000136' 01640 JRST PTP1; NO 000124' 200240 000121* 01650 MOVE DAT,PTPCHA 000125' 302240 000211 01660 CAIE DAT,HORTAB; HORIZONTAL OR VERTICAL TAB? 000126' 306240 000213 01670 CAIN DAT,VERTAB 000127' 254000 000216' 01680 JRST PTPP1; YES 000130' 302240 000214 01690 CAIE DAT,FORMFD; FORM FEED? 000131' 254000 000136' 01700 JRST PTP1; NO 000132' 661000 220000 01710 TLO IOS,PTPFED+PTPEOL; PTPFED:=PTPEOL:=1 000133' 201240 000020 01720 MOVEI DAT,20 000134' 202240 000114* 01730 MOVEM DAT,PTPCNT; PTPCNT:=20 000135' 254000 000227' 01740 JRST PTPXIT PTPSER - PAPER TAPE PUNCH SERVICE ROUTINE PAGE 7 8-15-65 000136' 375000 000103* 01780 PTP1: SOSGE PTPCTR; C(PTPCTR:=C(PTPCTR)-1. IS C(PTPCTR)<0 000137' 254000 000160' 01790 JRST PTP5 ;YES 000140' 134240 000116* 01800 LDBI DAT,PTPPTR ;DAT:=OUTPUT ITEM 000141' 135040 000036* 01810 LDB TAC,PIOMOD 000142' 306040 000010 01820 CAIN TAC,I; MODE=IMAGE? 000143' 254000 000147' 01830 JRST PTP6 ;YES 000144' 435240 000200 01840 IORI DAT,200; NO, INSERT EIGHTH HOLD 000145' 306240 000200 01850 CAIN DAT,NULL; NULL? 000146' 254000 000136' 01860 JRST PTP1; YES 000147' 202240 000124* 01880 PTP6: MOVEM DAT,PTPCHA; PTPCHA:=OUTPUT ITEM 000150' 254000 000227' 01890 JRST PTPXIT 000151' 402000 000147* 01910 PTPS2: CLEARM PTPCHA; PUNCH FEED 000152' 710140 000151* 01920 DATAO PTP,PTPCHA 000153' 377000 000134* 01930 SOSG PTPCNT; COUNT FEED LINES 000154' 621000 200000 01940 TLZ IOS,PTPFED; PTPFED:=0 000155' 202000 000064* 01950 MOVEM IOS,PTPIOS; PTPIOS:=C(IOS) 000156' 200000 000060* 01960 MOVE IOS,PTPSIO ;RESTORE IOS 000157' 254520 000000* 01970 JEN @PTPCHL ;DISMISS 000160' 661000 400000 01990 PTP5: TLO IOS,IODISC; IODISC:=1 000161' 254000 000227' 02000 JRST PTPXIT 000162' 550100 000000* 02020 PTPBN: HRRZ TAC1,PTPADR; TAC1:=BUFFER ADDRESS 000163' 260140 000000* 02030 PUSHJ PDP,CKS12; TAC:=CALCULATE CHECKSUM 000164' 270100 000162* 02040 ADD TAC1, PTPADR 000165' 502060 000002 02050 HLLM TAC,@TAC1; STORE CHECKSUM IN LEFT HALF OF FIRST BU 000166' 254000 000113' 02060 JRST PTPB1 PTPSER - PAPER TAPE PUNCH SERVICE ROUTINE PAGE 8 8-15-65 000167' 260140 000000* 02100 PTPADV: PUSHJ PDP,ADVBFE; ADVANCE BUFFER 000170' 254000 000222' 02110 JRST PTPDSC; EXIT1. NEXT BUFFER EMPTY 000171' 602000 000040 02120 TRNE IOS,IOCON; CONTINUOUS? (IOCON=1?) 000172' 254000 000222' 02130 JRST PTPDSC; YES 000173' 623000 000001 02140 TLZE IOS,IOW; IN A WAIT? IOW:=0 000174' 260140 000000* 02150 PUSHJ PDP,SETIOD; YES. IOWS:=1 000175' 621000 000004 02160 PTP9: TLZ IOS,IOFST; IOFST:=0 000176' 200040 000164* 02170 MOVE TAC,PTPADR 000177' 350000 000001 02180 AOS TAC 000200' 542040 000140* 02190 HRRM TAC,PTPPTR; PTPPTR18-35:=C(PTPADR18-25)+1 000201' 550220 000001 02200 HRRZ ITEM,@TAC; ITEM:=WORD COUNT 000202' 135100 000215' 02210 LDB TAC1,PTP91 ;PICK UP BYTE SIZE 000203' 260140 000000* 02220 PUSHJ PDP,ITMCT1; ITEM:=WORD COUNT*[36/BYTE SIZE] 000204' 202200 000136* 02230 MOVEM ITEM,PTPCTR; PTPCTR:=C(ITEM) 000205' 322200 000167' 02240 JUMPE ITEM,PTPADV ; IS ITEM COUNT=0? 000206' 603000 004000 02250 TLNE IOS,PTPBIN; BINARY PUNCH MODE? 000207' 254000 000162' 02260 JRST PTPBN; YES 000210' 607000 002000 02270 TLNN IOS,PTPIB ;IMAGE BINARY? 000211' 254000 000136' 02280 JRST PTP1 000212' 350000 000200* 02290 AOS PTPPTR ;YES 000213' 370000 000204* 02300 SOS PTPCTR 000214' 254000 000113' 02310 JRST PTPB1 000215' 300600 000212* 02330 PTP91: POINT 6,PTPPTR,11 000216' 201240 000377 02350 PTPP1: MOVEI DAT,RUBOUT; PTPCHA:=RUBOUT 000217' 202240 000152* 02360 MOVEM DAT,PTPCHA 000220' 661000 020000 02370 TLO IOS,PTPEOL; PTPEOL:=1 000221' 254000 000227' 02380 JRST PTPXIT 000222' 260140 000004' 02400 PTPDSC: PUSHJ PDP,PTPREL ;CLEAR PTP CONTROL REG AND CONSO BITS 000223' 620000 010000 02410 TRZ IOS,IOACT; IOACT:=0 000224' 661000 000004 02420 TLO IOS,IOFST; IOFST:=1 000225' 623000 000001 02430 TLZE IOS,IOW; IN A WAIT? IOW:=0 000226' 260140 000174* 02440 PUSHJ PDP,SETIOD; YES. IOSW:=1 000227' 202000 000155* 02460 PTPXIT: MOVEM IOS,PTPIOS; PTPIOS:=C(IOS) 000230' 254000 000000* 02470 JRST PTPRET; NO 02490 END, NO ERRORS DETECTED PROGRAM BREAK IS 000231 8K CORE USED PTPSER - PAPER TAPE PUNCH SERVICE ROUTINE PAGE 9 SYMBOL TABLE 000255 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 PAGE 9-1 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 PAGE 9-2 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 PAGE 9-3 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 11:23:08 File: DSKB1 :RUNCSS.LST [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:24 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:2283 File will be deleted after printing RUNCSS - RUN CONTROL SUBROUTINES PAGE 1 T. HASTINGS 8-16-65 00010 XLIST 01930 LIST RUNCSS - RUN CONTROL SUBROUTINES PAGE 7 T. HASTINGS 8-16-65 00010 TITLE RUNCSS - RUN CONTROL SUBROUTINES 00020 SUBTTL T. HASTINGS 8-16-65 00030 EXTERNAL APRCHN,APRCHL,CH6SAC,JBTADR,JOB,JOBAC,JOBDAT,JOBN 00040 EXTERNAL JOBPDP,USRDDT,USRPDP,JOBDDT 00050 EXTERNAL IORELS,JBTSTS,JOBADR,JOBCDP,JOBPC,JOBREL,JOBSA,JOBSYM 00060 EXTERNAL MESPNT,QUANT1,JOBDAC,TTYSTR,STOPU,SCHEDF 00070 EXTERNAL UXIT,IOCOMP,DCREQ,DCAVAL,DTREQ,DTAVAL,MTREQ,MTAVAL 00080 EXTERNAL CH1XIT,CH2XIT,CH3XIT,CH4XIT,CH5XIT,CH6XIT,CH7XIT 00090 EXTERNAL JOBFF,MJOBPD,JOBPDL,IOCOMP,PJOBN,USRLO,USRLO1,USRHI 00100 EXTERNAL TTYFNU,RSCHED RUNCSS - RUN CONTROL SUBROUTINES PAGE 2 T. HASTINGS 8-16-65 00130 ;EXIT UUO ROUTINE 00150 INTERNAL EXIT 00160 EXTERNAL IORELS,TTYFNU,MESPNT,IOKILL 000000' 260140 000000* 00180 EXIT: PUSHJ PDP,IORELS ;RELEASE ALL DEVICES 000001' 260140 000000* 00190 PUSHJ PDP,TTYFNU 000002' 201100 000005' 00200 MOVEI TAC1,EXMESS 000003' 260140 000000* 00210 PUSHJ PDP,MESPNT 000004' 254000 000030' 00220 JRST HOLD ;STOP THIS USER IMMEDIATELY 000005' 00240 EXMESS: ASCIZ / 000005' 064250 554222 00250 EXIT 000006' 520321 200000 00260 / 00270 ;RESET UUO ROUTINE 00290 INTERNAL RESET 000007' 260140 000000* 00310 RESET: PUSHJ PDP,IOKILL ;RELEASE ALL DEVICES 000010' 260140 000230' 00320 PUSHJ PDP,SETUSR ;CLEAR PART OF JOB DATA AREA 000011' 254000 000000* 00330 JRST UXIT ;AND RETURN TO CALLER RUNCSS - RUN CONTROL SUBROUTINES PAGE 3 T. HASTINGS 8-16-65 00370 ;COMMON ERROR HANDLING ROUTINES 00380 ;DEVDAT MUST BE SET UP TO TTY DDB ON WHICH TO PRINT ERROR MESSAGE 00400 ;HERE ON ERROR DETECTED AT INTERRUPT SERVICE LEVEL 00410 ;0(PDP) CONTAINS ADR. OF DEVICE DATA BLOCK CAUSING ERROR 00430 ;CALL MOVE TAC, PI CHANNEL NO DETECTING ERROR 00440 ; JRST HOLDI 00460 INTERNAL HOLDI,HOLD,HOLDI1 000012' 200103 000000 00480 HOLDI: MOVE TAC1, 0(PDP) ;DEVICE DATA BLOCK 000013' 135200 000266' 00490 LDB ITEM, [POINT 9, DEVCHR(TAC1), 8] ;GET JOB NUMBER 000014' 261140 000001 00500 HOLDI1: PUSH PDP, TAC ;SAVE PI CHANNEL NO. 000015' 260140 000032' 00510 PUSHJ PDP, HOLDSB 000016' 262140 000001 00520 POP PDP, TAC 000017' 254001 000020' 00530 JRST CHNTAB(TAC) ;GO RESTORE ACS AND DISMISS CHANNEL 000020' 254000 000000* 00550 CHNTAB: JRST RSCHED ;INTERRUPT ON CLOCK CHANNEL,RESCHEDULE 000021' 254000 000000* 00560 JRST CH1XIT 000022' 254000 000000* 00570 JRST CH2XIT 000023' 254000 000000* 00580 JRST CH3XIT 000024' 254000 000000* 00590 JRST CH4XIT 000025' 254000 000000* 00600 JRST CH5XIT 000026' 254000 000000* 00610 JRST CH6XIT 000027' 254000 000000* 00620 JRST CH7XIT 00640 ;HERE ON ERROR FROM UUO LEVEL. ERROR MESSAGE ALREADY IN TTY BUFFER 00660 ;DAT=BYTE POINTER TO END OF MESSAGE; DEVDAT=TTY DEV. DATA BLOCK 000030' 200200 000000* 00670 HOLD: MOVE ITEM, JOB ;NO. OF THIS JOB 000031' 260140 000243' 00680 PUSHJ PDP,WAIT1 ;WAIT UNTIL TTY FINISHED 000032' 260140 000000* 00700 HOLDSB: PUSHJ PDP,CRLF 000033' 260140 000000* 00710 PUSHJ PDP, TTYSTR ;START UP TTY TO PRINT ERROR MESSAGE 00720 EXTERNAL CRLF 00740 ;ROUTINE TO STOP USER AND FLAG AS ERROR STOP 00750 ;CALL: MOVE ITEM, JOB NUMBER 00760 ; PUSHJ PDP,ESTOP 00790 INTERNAL ESTOP 000034' 205040 002000 00810 ESTOP: MOVSI TAC,JERR ;SET ERROR BIT IN JOB STATUS 000035' 436044 000000* 00820 IORM TAC, JBTSTS(ITEM) 000036' 254000 000071' 00830 JRST STOP1 RUNCSS - RUN CONTROL SUBROUTINES PAGE 4 T. HASTINGS 8-16-65 00870 ,BLOCK TRANSFER PROGRAM OVER LOADER 00890 INTERNAL LDRBLT 00900 EXTERNAL USRREL 000002 00920 PGADR=2 ;AC CONTAINING BEGINNING OF PROGRAM(LOA 000037' 260140 000000* 00940 LDRBLT: PUSHJ PDP,IORELS 000040' 550051 000002 00950 HRRZ TAC, PGADR (JDAT) ;ADD OFFSET TO SYMBOL TABLE P 000041' 402011 000002 00960 SETZM PGADR(JDAT) ;THEN CLEAR SO SYSMAK WILL STILL WORK 000042' 550240 000007 00970 HRRZ DAT,PROG 000043' 270240 000001 00980 ADD DAT,TAC 000044' 272045 000000* 00990 ADDM TAC,JOBSYM(DAT) 000045' 504240 000007 01000 HRL DAT,PROG 000046' 554045 000000* 01010 HLRZ TAC,JOBSA(DAT) 000047' 313040 000000* 01020 CAMLE TAC,USRREL ;IS HIGHEST DESTINATION STILL IN USER A 000050' 200040 000047* 01030 MOVE TAC,USRREL ;NO. MAKE SURE IT IS. 000051' 207000 000005 01040 MOVSS DAT 000052' 270040 000005 01050 ADD TAC,DAT 000053' 270240 000267' 01060 ADD DAT,[XWD 30,30] ;MOVE PROGRAM DOWN 000054' 251241 000000 01070 BLT DAT,(TAC) 000055' 200051 000000* 01080 MOVE TAC,JOBDDT(JDAT) 000056' 202040 000000* 01090 MOVEM TAC,USRDDT 000057' 260140 000230' 01100 PUSHJ PDP,SETUSR 000060' 260140 000001* 01110 PUSHJ PDP,TTYFNU 000061' 201100 000064' 01120 MOVEI TAC1,LDRMES 000062' 260140 000003* 01130 PUSHJ PDP,MESPNT 000063' 254000 000030' 01140 JRST HOLD 000064' 01160 LDRMES: ASCIZ / 000064' 064251 447602 01170 LOADER FINISHED 000065' 422132 220214 000066' 446351 151620 000067' 426101 505000 01180 / RUNCSS - RUN CONTROL SUBROUTINES PAGE 5 T. HASTINGS 8-16-65 01220 INTERNAL STOP1, STOP2, CONT1, START1 000200 01240 PION=200 000400 01250 PIOFF=400 01270 ;ROUTINE TO PUT CURRENT JOB IN IO WAIT 01280 ;ROUTINE TO STOP CURRENT JOB 01290 ;MAY BE CALLED FROM ANY LEVEL 01300 ;CALL; PUSHJ PDP,STOP0 01310 ; RETURN ;RETURN HERE IMMEDIATELY, IF CALLED FRO 01320 ;PRIORITY CHANNEL THAN CLOCK. OTHERWISE RETURN WHEN JOB IS RUNABLE AG 01340 INTERNAL STOP0 000070' 200200 000030* 01360 STOP0: MOVE ITEM, JOB ;CURRENT JOB NUMBER 01380 ;ROUTINE TO STOP ANY JOB FROM BEING SCHEDULED 01390 ;CALL: 01400 ; MOVE ITEM, JOB NUMBER 01410 ; PUSHJ PDP, STOP1 01420 ; EXIT ;RETURN HERE IMMEDIATELY, IF CALLED FROM HIGHER 01430 ;PRIORITY CHANNEL THAN CLOCK, OTHERWISE RETURN WHEN JOB IC RUNABLE 01440 ;CALLED WHEN CONTROL C TYPED OR ON ERROR MESSAGES 000071' 205040 200000 01460 STOP1: MOVSI TAC, RUN 000072' 700600 000400 01470 CONO PI, PIOFF ;DONE AT INTERUPT LEVEL HIGHER THAN DT 000073' 616044 000035* 01480 TDNN TAC, JBTSTS(ITEM) ;IS RUN BIT ON IN JOB STATUS 000074' 254000 000105' 01490 JRST STOPA ;NO 000075' 413044 000073* 01500 ANDCAB TAC, JBTSTS(ITEM) ;YES, SO CLEAR IT 000076' 700600 000200 01510 CONO PI, PION 000077' 603040 040000 01520 TLNE TAC, DTW ;WAITING TO USE DECTAPE 000100' 370000 000000* 01530 SOS DTREQ ;YES, REDUCE REQUEST COUNT 000101' 603040 020000 01540 TLNE TAC, DCW ;DATA CONTROL 000102' 370000 000000* 01550 SOS DCREQ 000103' 603040 010000 01560 TLNE TAC,MTW ;MAG TAPE 000104' 370000 000000* 01570 SOS MTREQ 000105' 700600 000200 01580 STOPA: CONO PI, PION ;MAKE SURE PI ON 000106' 332000 000000* 01590 SKIPE SCHEDF ;IS CLOCK IN THE MIDDLE OF SCHEDULING 000107' 254000 000112' 01600 JRST STOP2 ;YES, MAKE SURE THIS JOB WONT RUN 000110' 312200 000070* 01610 CAME ITEM, JOB ;NO, IS THIS JOB CURRENT USER 000111' 263140 000000 01620 POPJ PDP, ;NO 01630 ;YES, MAKE CLOCK RESCHEDULE 01650 ;ROUTINE TO CAUSE CLOCK TO RESCHEDULE 01660 ;CALL : 01670 ; PUSHJ PDP, STOP2 01680 ; EXIT ;RETURN WHEN JOB RUNABLE AGAIN 01700 EXTERNAL PICLK 000112' 700600 000400 01720 STOP2: CONO PI, PIOFF ;PREVENT CLOCK INTERRUPT RUNCSS - RUN CONTROL SUBROUTINES PAGE 5-1 T. HASTINGS 8-16-65 000113' 476000 000000* 01730 SETOM STOPU ;SET FLAG FOR CLOCK ROUTINE 000114' 700600 000000* 01740 CONO PI,PICLK ;REQUEST CLOCK INTERRUPT AND TURN PI ON 01750 ;CLOCK WILL TRAP IMMEDIATELY IF AT UUO 000115' 263140 000000 01760 POPJ PDP, ;RETURN HERE WHEN JOB RUNABLE AGAIN RUNCSS - RUN CONTROL SUBROUTINES PAGE 6 T. HASTINGS 8-16-65 01800 ;SUBROUTINE TO SETUP A MONITOR JOB TO BE RUN 01810 ;JOB MUST HAVE CORE ASSIGNED 01820 ;CALL: MOVE ITEM, JOB NUMBER 01830 ; HRRI TAC1, ADDRESS OF MONITOR JOB(A SUBROUTINE) 01840 ; HRLI TAC1, RETURN ADDRESS WHEN JOB FINISHED 01850 ; PUSHJ PDP, MONJOB 01860 ; RETURN IMMEDIATELY IF CALLED FROM CLOCK LEV OR HIGHER 01880 ;ALL ACS WILL BE SAVED FOR THE MONITOR JOB 01900 INTERNAL MONJOB 01910 EXTERNAL JOBDAC,JOBDHI,JOBPDP,MJOBPD,JOBPDL,JBTADR 000116' 261140 000002 01930 MONJOB: PUSH PDP, TAC1 ;SAVE ARG. 000117' 550444 000000* 01940 HRRZ JDAT,JBTADR(ITEM) ;ADDRESS OF JOBS DATA AREA 000120' 201111 000000* 01950 MOVEI TAC1, JOBDAC(JDAT) ;SAVE 0-17 IN DUMP ACS 000121' 251111 000000* 01960 BLT TAC1, JOBDHI(JDAT) ;IN JOB DATA AREA 000122' 205100 000000* 01970 MOVSI TAC1,MJOBPD ;SET UP PD LIST IN JOB DATA AREA 000123' 541111 000000* 01980 HRRI TAC1, JOBPDL(JDAT) 000124' 554043 000000 01990 HLRZ TAC, (PDP) ;WITH RETURN AS FIRST ITEM 000125' 261100 000001 02000 PUSH TAC1, TAC 000126' 201051 000120* 02010 MOVEI TAC, JOBDAC(JDAT) 000127' 202101 000003 02020 MOVEM TAC1,PDP(TAC) 000130' 262140 000002 02030 POP PDP, TAC1 ;SET TO RUN 000131' 405100 777777 02040 ANDI TAC1, 777777 ;FALL INTO STARTU 02060 ;ROUTINE TO START A JOB AND LEAVE CONSOLE IN COMMAND MODE 02070 ;CALL: MOVE TAC1, START PC 02080 ; MOVE ITEM, JOB NUMBER 02090 ; PUSHJ PDP, STARTU 02100 ; RETURN IMMEDIATELY 02110 INTERNAL STARTM 02120 EXTERNAL TTYURC 000132' 260140 000140' 02140 STARTM: PUSHJ PDP, START1 000133' 254000 000000* 02150 JRST TTYURC 02170 ;START WITH TTY IN USER MODE 02190 INTERNAL STARTU 02200 EXTERNAL TTYSET 000134' 260140 000140' 02220 STARTU: PUSHJ PDP,START1 000135' 254000 000000* 02230 JRST TTYSET ;SET SCANNER TO CALL SETRUN WHEN 02240 ;CR-LF AND INITIALIZE TTY 02260 INTERNAL CONTM 02270 EXTERNAL TTYURC 000136' 254000 000133* 02290 CONTM: JRST TTYURC RUNCSS - RUN CONTROL SUBROUTINES PAGE 6-1 T. HASTINGS 8-16-65 02310 ;ROUTINE TO CONTINUE A JOB FROM COMMAND MODE 02320 ;CALL: MOVE ITEM, JOB NUMBER 02330 ; PUSHJ PDP, CONTU 02340 ; RETURN IMMEDIATELY 02350 INTERNAL CONTU 02360 EXTERNAL TTYURC 000137' 254000 000136* 02380 CONTU: JRST TTYURC ;SET SCANNER TO CALL SETRUN WHEN CR-LF RUNCSS - RUN CONTROL SUBROUTINES PAGE 7 T. HASTINGS 8-16-65 02420 ;ROUTINE TO SET JOB STATE TO BE SCHEDULED TO RUN 02430 ;WITH SPECIFIED STARTING ADDRESS INCLUDING PC FLAGS 02440 ;CALL: MOVE TAC1,STARTING PC 02450 ; MOVE ITEM, JOB NUMBER 02460 ; MOVE JDAT, ADDRESS OF JOBS DATA AREA(THERE MUST BE ONE) 02470 ; PUSHJ PDP, START1 02480 ; EXIT RETURN HERE IMMEDIATELY 000140' 200051 000000* 02500 START1: MOVE TAC,JOBPC(JDAT) ;GET OLD PC 000141' 202111 000140* 02510 MOVEM TAC1,JOBPC(JDAT) ;STORE NEW PC 000142' 603100 010000 02520 TLNE TAC1,USRMOD ;IS NEW PC IN USER AREA? 000143' 603040 010000 02530 TLNE TAC,USRMOD ;YES, WAS OLD PC IN USER AREA 000144' 254000 000150' 02540 JRST START2 ;YES,DUMP ACS ARE HIS 000145' 205111 000000 02550 MOVSI TAC1,(JDAT) ;NO, UUO ACS ARE HIS 000146' 541111 000126* 02560 HRRI TAC1,JOBDAC(JDAT) ;MOVE THEM TO DUMP ACS 000147' 251111 000121* 02570 BLT TAC1,JOBDHI(JDAT) 000150' 205100 172000 02580 START2: MOVSI TAC1,JERR+DCW+DTW+MTW+JIOW ;CLEAR WAIT BITS 000151' 412044 000075* 02590 ANDCAM TAC, JBTSTS(ITEM) ;IN JOB STATUS WORD 02610 ;ROUTINE TO CONTINUE ANY JOB AT CURRENT PC 02620 ;CALL: 02630 ; MOVE ITEM, JOB NUMBER 02640 ; PUSHJ PDP, CONT1 02650 ; EXIT RETURN IMMEDIATELY 000152' 263140 000000 02670 CONT1: POPJ PDP, RUNCSS - RUN CONTROL SUBROUTINES PAGE 8 T. HASTINGS 8-16-65 02710 ;ROUTINE TO SET JOB STATUS RUN BIT 02720 ;CALL: MOVE ITEM,JOB NUMBER 02730 ; PUSHJ PDP,SETRUN 02750 INTERNAL SETRUN 000153' 205040 200000 02760 SETRUN: MOVSI TAC,RUN 000154' 437044 000151* 02770 IORB TAC,JBTSTS(ITEM) 000155' 607040 020000 02780 TLNN TAC,DCW ;IS JOB WAITING FOR DATA CONTROL? 000156' 254000 000161' 02790 JRST CONT2 ;NO 000157' 357000 000102* 02800 AOSG DCREQ ;YES, INCREMENT REQUEST COUNT 000160' 476000 000000* 02810 SETOM DCAVAL ;AND SET DC AS AVAIL IF NOT IN USE 000161' 607040 040000 02820 CONT2: TLNN TAC,DTW ;DECTAPE? 000162' 254000 000165' 02830 JRST CONT3 ;NO 000163' 357000 000100* 02840 AOSG DTREQ 000164' 476000 000000* 02850 SETOM DTAVAL 000165' 607040 010000 02860 CONT3: TLNN TAC,MTW ;MAG TAPE? 000166' 254000 000171' 02870 JRST CONT4 000167' 357000 000104* 02880 AOSG MTREQ 000170' 476000 000000* 02890 SETOM MTAVAL 000171' 603040 400000 02900 CONT4: TLNE TAC,IOWS ;IO WAIT SATISFIED? 000172' 350000 000000* 02910 AOS IOCOMP ;YES 000173' 201040 000000* 02920 MOVEI TAC,QUANT1 ;SET TIME TO RUN FOR STRAIGHT QUEUE COM 000174' 542044 000154* 02930 HRRM TAC,JBTSTS(ITEM) ;RESPONSE IS FINISHED 000175' 332000 000110* 02940 SKIPE JOB ;IS NULL JOB RUNNING? 000176' 263140 000000 02950 POPJ PDP, ;NO 000177' 254000 000112' 02960 JRST STOP2 ;YES, RESCHEDULE RUNCSS - RUN CONTROL SUBROUTINES PAGE 9 T. HASTINGS 8-16-65 03000 ,ROUTINE TO INIATE A WAIT FOR MAG TAPE. DECTAPE, AND DATA CONTROL AC 03010 INTERNAL MTWAIT 000200' 261140 000002 03020 MTWAIT: PUSH PDP,TAC1 000201' 515100 010000 03030 HRLZI TAC1,MTW 000202' 261140 000001 03040 DVWAIT: PUSH PDP, TAC 000203' 200040 000175* 03050 MOVE TAC,JOB 000204' 436101 000174* 03060 IORM TAC1,JBTSTS(TAC) 000205' 260140 000112' 03070 PUSHJ PDP,STOP2 000206' 262140 000001 03080 POP PDP,TAC 000207' 262140 000002 03090 POP PDP,TAC1 000210' 263140 000000 03100 POPJ PDP, 03110 INTERNAL DTWAIT 000211' 261140 000002 03120 DTWAIT: PUSH PDP,TAC1 000212' 515100 040000 03130 HRLZI TAC1,DTW 000213' 254000 000202' 03140 JRST DVWAIT 03150 INTERNAL DCWAIT 000214' 261140 000002 03160 DCWAIT: PUSH PDP,TAC1 000215' 515100 020000 03170 HRLZI TAC1,DCW 000216' 254000 000202' 03180 JRST DVWAIT 03190 INTERNAL DVWAIT RUNCSS - RUN CONTROL SUBROUTINES PAGE 10 T. HASTINGS 8-16-65 03240 ,DEC 06 00 EX JOB L PT PRE 02 SETIOD 03250 ,H.R. MORSE 64-12-26 03260 ,CALLING SEQUENCE 03270 , PUSHJ PDP, SETIOD 03280 , EXIT ALWAYS RETURNS HERE 03290 ,SETS THEBIT (IOWS:=1) IN THE JOB STATUS WORD (JBTSTS) 03300 ,INFORMING THE SYSTEM THAT AN I/O WAIT HAS BEEN COMPLETED 03310 ,AND THE JOB IS READY TO RUN AGAIN. 03320 ,MONITOR INTERFACE 03330 , STORAGE: 6 03340 , SYMBOLS SET/USED: 03350 , ACCUMULATORS: DEVDAT U TAC S/U 03360 , PDP U TAC1 S/U 03370 , DEVICE DATA BLOCK: DEVCHR U 03380 , SYSTEM DATA STORAGE: JBTSTS S/U 03390 , JOB STATUS WORD: IOWS S 03400 INTERNAL SETIOD 000217' 350000 000172* 03420 SETIOD: AOS IOCOMP 000220' 135040 000000* 03430 LDB TAC,PJOBN 000221' 205100 400000 03440 MOVSI TAC1, IOWS ;SET IO-WAIT SATISFIED BIT 000222' 436101 000204* 03450 IORM TAC1, JBTSTS(TAC) 000223' 205100 100000 03460 MOVSI TAC1, JIOW ;CLEAR JOB IO-WAIT BIT 000224' 412101 000222* 03470 ANDCAM TAC1, JBTSTS(TAC) 000225' 336000 000203* 03480 SKIPN JOB ;IS NULL JOB RUNNING 000226' 254000 000112' 03490 JRST STOP2 ;YES, FORCE CLOCK TO RE-SCHED 000227' 263140 000000 03500 POPJ PDP,; RETURN RUNCSS - RUN CONTROL SUBROUTINES PAGE 11 T. HASTINGS 8-16-65 03550 ;SET CURRENT JOB AREA IN SYSTEM AREA 03570 INTERNAL SETUSR 000230' 541040 000000* 03590 SETUSR: HRRI TAC,USRLO1 000231' 505040 000000* 03600 HRLI TAC,USRLO 000232' 402000 000231* 03610 SETZM USRLO 000233' 251040 000000* 03620 BLT TAC,USRHI 000234' 205040 000122* 03630 MOVSI TAC,MJOBPD 000235' 541040 000123* 03640 HRRI TAC,JOBPDL 000236' 202040 000000* 03650 MOVEM TAC,USRPDP 000237' 200440 000000* 03660 MOVE JDAT,JOBDAT 000240' 544051 000046* 03670 HLR TAC,JOBSA(JDAT) 000241' 542051 000000* 03680 HRRM TAC,JOBFF(JDAT) 000242' 263140 000000 03690 POPJ PDP, RUNCSS - RUN CONTROL SUBROUTINES PAGE 12 T. HASTINGS 8-16-65 03730 ,DEC 06 00 EX COM L PT PRE 02 WAIT1,WSYNC 03740 ,H.R. MORSE 64-12-26 03750 ,CALLING SEQUENCE 03760 , PUSHJ PDP, WAIT1 03770 , EXIT ALWAYS RETURNS HERE 03790 ,IF THE DEVICE IS INACTIVE (IOACT=0), RETURNS TO EXIT. OTHERWISE, SET 03800 ,IOW:=1 AND ENTERS WAIT UNLESS IOACT BECOMES ZERO BEFORE THE 03810 ,JUMP IS MADE, IN WHICH CHASEIT SETS IOW:=0 AND RETURNS TO EXIT. 03820 ,ON LEAVING THE WAIT STAT, RETURNS TO EXIT. 03830 ,THIS ROUTINE PREVENTS THE STATE IOACT=0 AND IOW=1 FROM OCCURING 03840 ,CALLING SEQUENCE 03850 , PUSHJ PDP, WSYNC 03860 , EXIT ALWAYS RETURNS HERE 03870 ,SETS IOW:=1 AND ENTERS WAIT ROUTINE. RETURNS TO EXIT WHEN IOACT=0. 03880 ,MONITOR INTERFACE 03890 , STORAGE: 13 03900 , ROUTINES CALLED: WAIT 03910 , SYMBOLS SET/USED: 03920 , ACCUMULATORS: DEVDAT U PDP U 03930 , IOS S/U TAC S/U 03940 , DEVICE DATA BLOCK: DEVIOS S/U 03950 , IO STATUS WORD: IOACT U 03960 , IOW S/U RUNCSS - RUN CONTROL SUBROUTINES PAGE 13 T. HASTINGS 8-16-65 04000 INTERN WAIT1, WSYNC 04020 ; WAIT1 WAITS UNTIL DEVICE IS COMPLETELY INACTIVE BEFORE RETURNING 000243' 200006 000002 04030 WAIT1: MOVE IOS,DEVIOS(DEVDAT) 000244' 606000 010000 04040 TRNN IOS, IOACT ;IS DEVICE ACTIVE? (IOACT=1?) 000245' 263140 000000 04050 POPJ PDP,; RETURN 000246' 260140 000250' 04060 PUSHJ PDP,WSYNC; WAIT 000247' 254000 000243' 04070 JRST WAIT1 04090 ;WSYNC IS CALLED TO WAIT UNTIL SETIOD IS CALLED BY INTERRUPT SERVICE 04100 ;IE UNTIL CURRENT BUFFER ACTIVITY IS COMPLETED 04110 ;DEVDAT MUST BE SET UP 000200 04130 PION=200 000400 04140 PIOFF=400 04160 WSYNC: REPEAT 0,< PUSH PDP, TAC ;MUST THESE BE SAVED? 04170 PUSH PDP, TAC1 04180 PUSH PDP, DAT> 000250' 205000 000001 04200 MOVSI IOS, IOW 000251' 205640 100000 04210 MOVSI AC1, JIOW 000252' 200700 000225* 04220 MOVE AC2, JOB 000253' 201740 010000 04230 MOVEI AC3, IOACT 000254' 700600 000400 04240 CONO PI, PIOFF ;TURN PI OFF 000255' 616746 000002 04250 TDNN AC3, DEVIOS(DEVDAT) ;IS THE DEVICE ACTIVE? 000256' 254000 000263' 04260 JRST WSYNC1 ;NO 000257' 436006 000002 04270 IORM IOS, DEVIOS(DEVDAT) ;YES, SET DEVICE IO-WAIT BIT 000260' 436656 000224* 04280 IORM AC1, JBTSTS(AC2) ;AND JOB IO-WAIT BIT 000261' 700600 000200 04290 CONO PI, PION ;TURN PI ON 000262' 260140 000112' 04300 PUSHJ PDP, STOP2 ;STOP THIS USER BY FORCING CL 04310 ;RETURN WHEN IO-WAIT FINISHED 000263' 700600 000200 04320 WSYNC1: CONO PI, PION 000264' 413006 000002 04330 ANDCAB IOS, DEVIOS(DEVDAT) ;CLEAR DEVICE IO-WAIT BIT 04340 REPEAT 0,< POP PDP, DAT 04350 POP PDP, TAC1 04360 POP PDP, TAC> 000265' 263140 000000 04380 POPJ PDP, 04400 END, 000266' 331102 000001 000267' 000030 000030 NO ERRORS DETECTED PROGRAM BREAK IS 000270 8K CORE USED RUNCSS - RUN CONTROL SUBROUTINES PAGE 14 SYMBOL TABLE 000317 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 000152' INT CONT2 000161' CONT3 000165' CONT4 000171' CONTM 000136' INT CONTU 000137' INT CRLF 000032' EXT D 000017 INT DAT 000005 INT DCAVAL 000160' EXT DCL 000001 INT DCREQ 000157' EXT DCW 020000 INT DCWAIT 000214' 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 PAGE 14-1 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 000164' EXT DTREQ 000163' EXT DTW 040000 INT DTWAIT 000211' 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 000202' 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 000217' 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 PAGE 14-2 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 000117' EXT JBTSTS 000260' EXT JBUF 000005 INT JDAT 000011 INT JERR 002000 INT JIOW 100000 INT JNA 004000 INT JOB 000252' EXT JOBAC 000000 EXT JOBADR 000000 EXT JOBCDP 000000 EXT JOBDAC 000146' EXT JOBDAT 000237' EXT JOBDDT 000055' EXT JOBDHI 000147' EXT JOBFF 000241' EXT JOBN 000000 EXT JOBPC 000141' EXT JOBPDL 000235' EXT JOBPDP 000000 EXT JOBREL 000000 EXT JOBSA 000240' EXT JOBSYM 000044' EXT LDRBLT 000037' INT LDRMES 000064' LOOKB 040000 INT MESPNT 000062' EXT MJOBPD 000234' EXT MONJOB 000116' INT MTAVAL 000170' EXT MTREQ 000167' EXT MTW 010000 INT MTWAIT 000200' INT OBUFB 100000 INT OUTPB 004000 INT PDP 000003 INT PGADR 000002 PI 000004 SPD RUNCSS - RUN CONTROL SUBROUTINES PAGE 14-3 SYMBOL TABLE PICHN 000100 INT PICLK 000114' EXT PIOFF 000400 PION 000200 PJOBN 000220' EXT PROG 000007 INT QUANT1 000173' EXT RESET 000007' INT RSCHED 000020' EXT RUN 200000 INT RUNABL 204000 INT SCHEDF 000106' EXT SETIOD 000217' INT SETRUN 000153' INT SETUSR 000230' INT START1 000140' INT START2 000150' STARTM 000132' INT STARTU 000134' INT STOP0 000070' INT STOP1 000071' INT STOP2 000112' INT STOPA 000105' STOPU 000113' EXT TAC 000001 INT TAC1 000002 INT TEM 000010 INT TTYATC 020000 INT TTYFNU 000060' EXT TTYSET 000135' EXT TTYSTR 000033' EXT TTYURC 000137' EXT TTYUSE 010000 INT USRDDT 000056' EXT USRHI 000233' EXT USRLO 000232' EXT USRLO1 000230' EXT USRMOD 010000 INT USRPDP 000236' EXT USRREL 000050' EXT UUO 000014 INT UXIT 000011' EXT WAIT1 000243' INT WSYNC 000250' INT WSYNC1 000263' 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 11:23:08 File: DSKB1 :SAVGET.LST [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:24 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:2263 File will be deleted after printing SAVGET- SAVE AND GET COMMANDS PAGE 1 T.HASTINGS 8-4-64 00010 XLIST 01930 LIST SAVGET- SAVE AND GET COMMANDS PAGE 7 T.HASTINGS 8-4-64 00020 TITLE SAVGET- SAVE AND GET COMMANDS 00030 SUBTTL T.HASTINGS 8-4-64 00040 ;ROUTINE TO SET UP SAVE-GET DEVICE FILE-NAME TABLE 00050 ;CALLED BY COMMAND SETUP ROUTINES AND SAVE GET 00070 INTERNAL SGSET 00080 EXTERNAL CTEXT1,SETUSR,HOLD,MONJOB 00090 EXTERNAL CONMES,NOTENF,CPOPJ1 000000' 261140 000002 00110 SGSET: PUSH PDP, TAC1 ;SAVE STARTTING ADDRESS(SAVJOB OR GETJOB) 000001' 260140 000000* 00120 PUSHJ PDP, CTEXT1 ;GET DEVICE NAME FROM COMMAND STRING 000002' 322100 000012' 00130 JUMPE TAC1,SGSET1 000003' 202107 000017 00140 MOVEM TAC1, 17(PROG) ;SAVE IN UUO AC AREA 000004' 260140 000001* 00150 PUSHJ PDP, CTEXT1 ;GET FILE NAME FROM COMMAND STRING 000005' 322100 000012' 00160 JUMPE TAC1,SGSET1 000006' 202107 000014 00170 MOVEM TAC1, 14(PROG) 000007' 262140 000002 00180 POP PDP, TAC1 ;SCHEDULE MONITOR JOB 000010' 260140 000000* 00190 PUSHJ PDP, MONJOB 000011' 254000 000000* 00200 JRST CPOPJ1 ;SUPPRESS CR-LF PRINTED BY COMINI 000012' 262140 000002 00220 SGSET1: POP PDP,TAC1 000013' 254000 000000* 00230 JRST NOTENF SAVGET- SAVE AND GET COMMANDS PAGE 2 T.HASTINGS 8-4-64 00270 ;THIS JOB SAVES A JOB AREA ON RETRIEVABLE STORAGE 00280 ;THIS JOB RUNS IN EXEC. MODE AND CALLS IO ROUTINES DIRECTLY 00290 ;NO ATTTEMPT IS MADE TO SAVE STATUS OF IO DEVICES, JOBPDP, OR ACS 00300 ;IN FACT THE ONLY USEFUL THING WHICH MAY BE DONE WITH A JOB AREA 00310 ;AFTER IT HAS BEEN SAVED IS TO START EXECUTION OVER AT THE STARTING 00320 ;ADDRESS 00340 INTERNAL SAVJOB 00350 EXTERNAL USRPDP, OUT, USRREL,JOBPFI,JOB41,JOBS41,THSDAT 000012 00370 T=BUFPNT ;TEMPORARY ACS 000013 00380 T1=BUFWRD 000014' 265040 000076' 00400 SAVJOB: JSP TAC, SG1 ;SET UP ACS AND ASSIGN DEVICE 000015' 200551 000000* 00410 MOVE T1,JOB41(JDAT) ;SAVE USR UUOI HANDLING JSR 000016' 202551 000000* 00420 MOVEM T1,JOBS41(JDAT) 000017' 200540 000000* 00430 MOVE T1,THSDAT ;SET DATE IN THIRD WORD 000020' 202547 000016 00440 MOVEM T1,16(PROG) 000021' 260152 000004 00450 PUSHJ PDP, DEN(T) ;ENTER FILE NAME IN DIRECTORY 000022' 254000 000031' 00460 JRST SAV4 ;DIRECTORY FULL 000023' 260140 000134' 00470 PUSHJ PDP, SETLST ;SET DUMP COMMAND LIST IN USER ARE 000024' 260140 000000* 00480 PUSHJ PDP, OUT ;DO AN OUTPUT 000025' 265040 000054' 00490 JSP TAC,SG2 000026' 452370 220246 00510 ASCIZ /JOB SAVED 000027' 406550 542032 000030' 050000 000000 00520 / 000031' 265040 000054' 00530 SAV4: JSP TAC,SG2 000032' 422232 242606 00550 ASCIZ /DIRECTORY FULL 000033' 522372 254500 000034' 432531 446032 000035' 050000 000000 00560 / SAVGET- SAVE AND GET COMMANDS PAGE 3 T.HASTINGS 8-4-64 00610 ;THIS JOB GETS A JOB AREA FROM RETRIEVABLE DEVICE 00620 ;THIS JOB RUNS IN EXEC. MODE AND CALLS IO ROUTINES DIRECTLY 00630 ;NO ATTEMPT IS MADE TO RESTORE STATUS OF IO DEVICES, PC, OR ACS 00640 ;JOBPC IS SET TO STARTING ADDRESS OF JOB 00650 ;CORE MUST ALREADY HAVE BEEN ASSIGNED AND THE FOLLOWING LOC. SETUP IN 00660 ;JOB DATA AREA: 00670 ;JOBPDP, JOBREL 00690 INTERNAL GETJOB 00700 EXTERNAL USRREL, IN 000036' 265040 000076' 00720 GETJOB: JSP TAC, SG1 ;SETUP ACS AND ASSIGN DEVICE 000037' 260152 000005 00730 PUSHJ PDP, DLK(T) ;LOOKUP FILE NAME IN DIRECTORY 000040' 254000 000047' 00740 JRST GET2 ;NOT FOUND 000041' 260140 000134' 00750 PUSHJ PDP, SETLST ;SET DUMP COMMAND LIST IN USER ARE 000042' 260140 000000* 00760 PUSHJ PDP, IN ;DO AN INPUT 000043' 265040 000054' 00770 JSP TAC,SG2 000044' 452370 220246 00790 ASCIZ /JOB SETUP 000045' 426512 550032 000046' 050000 000000 00800 / 000047' 265040 000054' 00820 GET2: JSP TAC,SG2 000050' 432231 442500 00840 ASCIZ /FILE NOT FOUND 000051' 472372 420214 000052' 476531 642032 000053' 050000 000000 00850 / SAVGET- SAVE AND GET COMMANDS PAGE 4 T.HASTINGS 8-4-64 00890 ;ROUTINE TERMINATES SAVJOB AND GETJOB 00900 ;CLOSE, RELEASE, CHECK FOR ERRORS AND PRINT MESSAGE AND STOP JOB 00910 ;ADDRESS OF MESSAGE IN AC TAC 00930 EXTERNAL RELEA2, SETUSR, TTYFNU, WAIT1,JOBS41,JOB41 740000 00950 ERRORS=1B18+1B19+1B20+1B21 ;ERRORS CHECKED FOR IN IO TRANSMISSION 000054' 260140 000000* 00970 SG2: PUSHJ PDP, WAIT1 000055' 602000 740000 00980 TRNE IOS, ERRORS ;ANY ERRORS? 000056' 254000 000070' 00990 JRST SG2A ;AN ERROR 000057' 261140 000001 01000 PUSH PDP,TAC ;SAVE PRINT ADDRESS 000060' 260140 000000* 01010 PUSHJ PDP,RELEA2 ;RELEASE DEVICE 000061' 260140 000000* 01020 PUSHJ PDP,SETUSR ;SETUP COPY OF JOB AREA STORED IN SYSTE 000062' 200051 000016* 01030 MOVE TAC,JOBS41(JDAT) 01040 ;RESTORE USER LOCATION 41 000063' 202051 000015* 01050 MOVEM TAC,JOB41(JDAT) 000064' 260140 000000* 01060 SG4: PUSHJ PDP,TTYFNU ;FIND TELETYPE 000065' 262140 000001 01070 POP PDP,TAC ;RESTORE PRINT MESSAGE ADDRESS 000066' 260140 000000* 01080 SG5: PUSHJ PDP,CONMES 000067' 254000 000000* 01090 JRST HOLD 000070' 265040 000064' 01110 SG2A: JSP TAC,SG4 000071' 522450 147246 01130 ASCIZ /TRANSMISSION ERROR 000072' 466232 351622 000073' 476344 042644 000074' 512372 206424 01140 / 000075' 000000 000000 SAVGET- SAVE AND GET COMMANDS PAGE 5 T.HASTINGS 8-4-64 01180 ;ROUTINE CALED BY SAVJOB AND GETJOBTO SETUP ACS 01190 ;AND ASSIGN DEVICE 01200 ;CALL JSP TAC, SG1 01220 EXTERNAL JOBDAT, JOB, UINIT1, WAIT1, JOBADR, RESET 000076' 505140 777763 01240 SG1: HRLI PDP, -15 ;SET UP PD LIST IN UUO ACS 000077' 541147 777777 01250 HRRI PDP, -1(PROG) 000100' 261140 000001 01260 PUSH PDP, TAC ;SAVE RETURN ADDRESS 000101' 260140 000000* 01270 PUSHJ PDP, RESET ;DO RESET UUO 000102' 201600 000017 01280 MOVEI UUO, D ;DUMP MODE 000103' 200047 000017 01290 MOVE TAC, 17(PROG) ;DEVICE NAME 000104' 201340 000000 01300 MOVEI PROG, 0 ;PRETEND RELOC. IS 0 000105' 260140 000000* 01310 PUSHJ PDP, UINIT1 ;ASSIGN DEVICE 000106' 000000 000000 01320 0 ;IBF,OBF 000107' 254000 000124' 01330 JRST SGERRA ;NOT AVAILABLE 000110' 200006 000002 01340 MOVE IOS, DEVIOS(DEVDAT) ;SETUP IOS 000111' 201600 000014 01350 MOVEI UUO,14 ;REL.ADDRESS OF 4 WORD DIRECTORY ENTRY 000112' 200340 000000* 01360 MOVE PROG, JOBADR ;RESTORE PROG 000113' 205500 445560 01370 MOVSI T,445560 ;SET FILE EXTENSION TO DMP 000114' 202507 000015 01380 MOVEM T, 15(PROG) 000115' 402007 000016 01390 SETZM 16(PROG) 000116' 210540 000000* 01400 MOVN T1,USRREL ;SET NEG. WORD COUNT FROM JOBREL 000117' 271540 000000* 01410 ADDI T1,JOBPFI ;DONT DUMP LOC. 0-JOBPFI 000120' 505540 000117* 01420 HRLI T1,JOBPFI 000121' 206547 000017 01430 MOVSM T1,17(PROG) ;STORE IN 4TH WORD OF DICECTORY 000122' 200506 000003 01440 MOVE T, DEVSER(DEVDAT) ;SETUP FOR DOING ENTRY OF LOO 000123' 263140 000000 01450 POPJ PDP, 000124' 201040 000127' 01470 SGERRA: MOVEI TAC,SGNAVL 000125' 261140 000001 01480 PUSH PDP,TAC 000126' 254000 000066' 01490 JRST SG5 000127' 422132 644606 01510 SGNAVL: ASCIZ /DEVICE NOT AVAILABLE 000130' 425011 647650 000131' 202032 640622 000132' 462030 246212 000133' 064240 000000 01520 / SAVGET- SAVE AND GET COMMANDS PAGE 6 T.HASTINGS 8-4-64 01570 ;ROUTINE TO SET DUMP MODE COMMAND LIST IN USER AREA 01590 EXTERNAL ANYRDX,RELEA2,TTYFNU 000134' 200507 000017 01610 SETLST: MOVE T, 17(PROG) ;4TH WORD FROM DIRECTORY 000135' 202507 000016 01620 MOVEM T, 16(PROG) 000136' 402007 000017 01630 SETZM 17(PROG) 000137' 574500 000012 01640 HLRE T, T 000140' 270500 000116* 01650 ADD T, USRREL 000141' 321500 000144' 01660 JUMPL T, NOROOM 000142' 201600 000016 01670 MOVEI UUO,16 ;DUMP MODE 000143' 263140 000000 01680 POPJ PDP, 000144' 260140 000060* 01700 NOROOM: PUSHJ PDP,RELEA2 000145' 260140 000064* 01710 PUSHJ PDP,TTYFNU 000146' 255000 000000 01720 JFCL 000147' 574047 000016 01730 HLRE TAC, 16(PROG) ;PRINT NO. OF BLOCKS NEEDED 000150' 213000 000001 01740 MOVNS TAC 000151' 242040 777766 01750 LSH TAC, -12 000152' 271040 000001 01760 ADDI TAC, 1 000153' 201100 000012 01770 MOVEI TAC1, 12 000154' 260140 000000* 01780 PUSHJ PDP, ANYRDX 000155' 265040 000066' 01790 JSP TAC,SG5 000156' 201431 320204 01810 ASCIZ / 1K BLOCKS OF CORE NEEDED 000157' 462370 345646 000160' 202370 620206 000161' 476450 520234 000162' 426130 442610 000163' 064240 000000 01820 / 01830 END, NO ERRORS DETECTED PROGRAM BREAK IS 000164 8K CORE USED SAVGET- SAVE AND GET COMMANDS PAGE 7 SYMBOL TABLE 000230 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 PAGE 7-1 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 PAGE 7-2 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 11:23:08 File: DSKB1 :SCNSER.LST [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:24 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:2253 File will be deleted after printing SCNSER - SCANNER SERVICE PAGE 1 TOM EGGERS 8-9-65 00010 XLIST 01930 LIST SCNSER - SCANNER SERVICE PAGE 7 TOM EGGERS 8-9-65 00010 TITLE SCNSER - SCANNER SERVICE 00020 SUBTTL TOM EGGERS 8-9-65 00030 EXTERN SETIOD, ADVBFE, ADVBFF, JBTADR, CLRBYT,STTYB1 00040 EXTERN SCNCHN, COMCNT, SCNSAV, SCNRET,STOP1, DEVLST,TTYTAB 00050 INTERN SCNINI 00070 ;TTYPTR=DEVOAD+1 00080 ;TTYCTR=TTYPTR+1 00090 ;TTYBUF=TTYCTR+1 000200 00100 PION=200 ;TURN PI ON BIT 000400 00110 PIOFF=400 ;TURN PI OFF BIT 00120 ;SCNDDB ;NUMBER OF DEVICE DATA BLOCKS 00130 ;STTYBF7 ;SIZE OF TELETYPE BUFFER 000010 00140 CHREC=TEM ;AC FOR CHARACTER 000004 00150 VPOS=ITEM ;VERITICAL POSITION OF TELETYPE 000005 00160 HPOS=VPOS+1 ; HORIZONTAL POS. 000006 00170 DDB=DEVDAT 000002 00180 LINE=TAC1 ;AC THAT HOLDS SCANNER LINE NUMBER 040000 00190 SYNC=40000 ;1 WHEN A BUFFER IS READY TO TRANSFER 010000 00200 DETH=10000 ;1 IF TTY DETACHED AND OUTPUT WAITING 020000 00210 NIO=20000 ;STOP ALL IO 000020 00220 TOUT=IO ;OUTPUT IN PROGRESS 040000 00230 NCERR=IOBKTL ;CHARACTER LOST ON TYPE IN 000177 00240 DCHAR=177 ;DELETE CHARACTER 100000 00250 ECHOF=IODTER ;ECHO FAILURE OCCURED 001000 00260 TPMON=1000 ;IO IS FROM MONITOR 002000 00270 SP=2000 ;SPECIAL TELETYPE CHAR. IS BEING INTERPRETED 100000 00280 DDTM=100000 ;DDT MODE 004000 00290 T35=4000 ;TELETYPE HAS TAB,FF,VT,ETC. MECHANISM 000100 00300 USRB=100 ;TURN OFF TPMON WHEN OUTPUT IS FINISHED 020000 00310 USRBC=20000 ;RT HALF MONITOR IOS WORD. REMAIN IN MONITOR MODE 00320 INTERNAL SCNINT,CTYINT,TTYUSR,TTYURC 00330 ENTRY TTYDSP 00340 EXTERN TSCNLN,TCONLN,MTTYLN,CPOPJ1 00350 EXTERN CPOPJ 00360 EXTERN FSNCHN,SCNCHL,OUT,PUUOAC,PJOBN,PUNIT,PIOMOD 00370 INTERNAL DDTGT,DDTRL,DDTIN,DDTOUT,TTYFND,TTYSTR,TTYFNU 00380 EXTERNAL WAIT1,WSYNC,CLRBYT,JOB,CLDS,CLEN,TTYBFE,TTYBM1 00390 EXTERNAL UXIT,ADRCK,TTYSAV,DEVPHY,DEVOPR 00400 EXTERNAL TTYCTR,TTYPTR,TTYBUF,TTYLST,MLTTYL,SETRUN,STTYBF,TTY0DB 000000' 270706 000007 00420 PHPOS: POINT 7,DEVIAD(DEVDAT),12 ;POINTER HORIZONTAL POSITION 000001' 270506 000010 00430 PVPOS: POINT 5,DEVOAD(DEVDAT),12 ;POINTER VERITICAL POSITION 000002' 340706 000010 00440 PLASTC: POINT 7,DEVOAD(DEVDAT),7 ;POINTER TO LAST CHARACTER OU 000003' 360606 000007 00450 PSCHAR: POINT 6,DEVIAD(DEVDAT),5 ;POINTER TO ^C OR ^O 000004' 321102 000000* 00470 TPCJOBN: POINT 9,TTYTAB(LINE),9 ;CONSOLE NUMBER FOR TTY SCNSER - SCANNER SERVICE PAGE 2 TOM EGGERS 8-9-65 000005' 201040 100000 00500 SCNINI: MOVEI TAC,100000 000006' 712200 000000 00510 CONO TTY,0 ;SHUT DOWN CONSOLE TTY 000007' 730200 004010 00520 CONO DCSA,4010 ;RELEASE XMITTER,RECEIVER 000010' 730300 001000 00530 CONSZ DCSA, 1000 000011' 730200 004000 00540 CONO DCSA, 4000 000012' 730300 000010 00550 CONSZ DCSA, 10 000013' 730440 000002 00560 DATAI DCSB, TAC1 000014' 367040 000010' 00570 SOJG TAC,.-4 000015' 201040 000000* 00580 MOVEI TAC,SCNCHN 000016' 712201 003600 00590 CONO TTY,3600(TAC) ;CLEAR TTY, ASSIGN CHANNEL 000017' 730200 000000* 00600 CONO DCSA,FSNCHN ;ASSIGN INTERRUPT CHANNELS 000020' 205040 000000* 00610 MOVSI TAC,MLTTYL ;NO. OF TTY DEV. DATA BLOCKS 000021' 205240 010000 00620 MOVSI DAT,TTYUSE ;TTY DDB IN USE BIT 000022' 205000 001004 00630 MOVSI IOS,TPMON+IOFST ;VIRGIN STATUS 000023' 201300 000000* 00640 MOVEI DDB,TTYLST ;FIRST TTY DDB ADDRESS 000024' 616246 000004 00650 SCN1: TDNN DAT,DEVMOD(DDB) ;IS THIS TTY DDB IN USE? 000025' 402006 000000 00660 SETZM DEVNAM(DDB) ;NO. SET NAME TO 0 000026' 202006 000002 00670 MOVEM IOS,DEVIOS(DDB) 000027' 402006 000000* 00680 SETZM TTYSAV(DDB) ;CLEAR USER MODE TTY STATUS WORD 000030' 412246 000004 00690 ANDCAM DAT,DEVMOD(DDB) ;CLEAR USE BIT 000031' 554306 000003 00700 HLRZ DDB,DEVSER(DDB) ;GET NEXT TTY DDB 000032' 253040 000024' 00710 AOBJN TAC,SCN1 000033' 205040 000000* 00720 MOVSI TAC,MTTYLN ;SET DDB USE BITS FROM TRANSLATOR TABLE 000034' 205100 010000 00730 MOVSI TAC1,TTYUSE 000035' 332301 000004* 00740 SCN2: SKIPE DDB,TTYTAB(TAC) 000036' 436106 000004 00750 IORM TAC1,DEVMOD(DDB) 000037' 253040 000035' 00760 AOBJN TAC,SCN2 000040' 263140 000000 00770 POPJ PDP, SCNSER - SCANNER SERVICE PAGE 3 TOM EGGERS 8-9-65 00800 ;ROUTINE TO RETURN TTY TO VIRGIN STATE 00810 ;CALL: MOVE DDB, ADDRESS OF DEVICE DATA BLOCK 00820 ; PUSHJ PDP,TTYKIL 00840 INTERNAL TTYKIL 000041' 200040 001144' 00860 TTYKIL: MOVE TAC,[XWD TTYUSE+TTYATC,ASSCON+ASSPRG] 000042' 412046 000004 00870 ANDCAM TAC,DEVMOD(DEVDAT) ;CLEAR DDB USE BIT 000043' 402006 000000 00880 SETZM DEVNAM(DEVDAT) ;CLEAR PHYSICAL NAME 000044' 402006 000005 00890 SETZM DEVLOG(DEVDAT) ;CLEAR LOGICAL NAME 000045' 254000 000052' 00900 JRST TTYDT1 00920 ;ROUTINE TO DETACH TTY FROM JOB 00930 ;CALL: MOVE DEVDAT,ADDRESS OF TTY DDB TO BE DETACHED 00950 INTERNAL TTYDET 000046' 200046 000004 00970 TTYDET: MOVE TAC,DEVMOD(DEVDAT) 000047' 627040 020000 00980 TLZN TAC,TTYATC ;WAS TTY ATTACHED? 000050' 254000 000041' 00990 JRST TTYKIL ;NO, SO RETURN DDB TO POOL 000051' 202046 000004 01000 MOVEM TAC,DEVMOD(DEVDAT) ;YES, JUST CLEAR ATTACH BIT 000052' 135100 000000* 01010 TTYDT1: LDB LINE,PUNIT 000053' 414002 000035* 01020 SETM TTYTAB(LINE) 000054' 263140 000000 01030 POPJ PDP, 000055' 000000 000000 01060 CCHAR: 0 ;HOLDS CHARACTER FOR CONSOLE TELETYPE 01070 ;CONTROL C - GO BACK TO MONITOR 01080 ;CONTROL 0 - SUPPRESS OUTPUT 000056' 334040 001145' 01100 TTYURC: SKIPA TAC,[XWD USRB,USRBC] ;START JOB BUT REMAIN IN MON1 000057' 205040 000100 01110 TTYUSR: MOVSI TAC,USRB ;CAUSE TTY TO GO INTO 000060' 436046 000002 01120 IORM TAC,DEVIOS(DEVDAT) ;USER MODE WHEN 000061' 263140 000000 01130 POPJ PDP, ;OUTPUT FINISHES 01150 INTERNAL TTYSET 000062' 205040 000004 01170 TTYSET: MOVSI TAC,IOFST ;INITIALIZE USER TTY IOS WORD 000063' 202046 000027* 01180 MOVEM TAC,TTYSAV(DEVDAT) ;FOR START COMMAND 000064' 254000 000057' 01190 JRST TTYUSR SCNSER - SCANNER SERVICE PAGE 4 TOM EGGERS 8-9-65 01230 ;ROUTINE TO ATTACH TTY TO A JOB 01240 ;CALL: MOVE DEVDAT,ADDRESS OF TTY DEVICE DATA BLOCK 01250 ; MOVE ITEM,JOB NUMBER 01260 ; PUSHJ PDP,TTYATT 01270 ; ERROR ;DEVDAT=DDB ADR OF OTHER TTY 01280 ;IF ANOTHER ALREADY IS ATTACHED. 01290 ; OK RETURN ;DEVDAT, DAT AND TRANSLATOR TABLE SET 01310 INTERNAL TTYATT 000065' 135100 000052* 01330 TTYATT: LDB LINE,PUNIT ;LINE NO. OF THIS TTY 000066' 201300 000023* 01340 MOVEI DEVDAT,TTYLST ;SEARCH FOR DDB THAT IS ATTACHED 000067' 334000 000000 01350 SKIPA 000070' 554306 000003 01360 TTYAT2: HLRZ DEVDAT,DEVSER(DEVDAT) 000071' 322300 000115' 01370 JUMPE DEVDAT,TTYAT4 000072' 135040 000000* 01380 LDB TAC,PJOBN ;JOB NUMBER 000073' 500046 000004 01390 HLL TAC,DEVMOD(DEVDAT) ;ATTACH AND USE BITS 000074' 607040 000010 01400 TLNN TAC,DVTTY ;IS THIS STILL A TTY DDB? 000075' 254000 000115' 01410 JRST TTYAT4 ;NO, THIS MUST BE IJOB 000076' 306201 000000 01420 CAIN ITEM,(TAC) ;JOB NUMBER THE ONE TO ATTACH? 000077' 607040 010000 01430 TLNN TAC,TTYUSE ;YES, IS IT THE DETACHED ONE? 000100' 254000 000070' 01440 JRST TTYAT2 ;NO, KEEP LOOKING 000101' 603040 020000 01450 TLNE TAC,TTYATC ;IS SOME TTY ALREADY ATTACHED? 000102' 263140 000000 01460 POPJ PDP, ;YES, ERROR RETURN WITH DEVDAT SET 000103' 261140 000006 01470 PUSH PDP,DEVDAT ;SAVE NEW DDB ADDRESS 000104' 200302 000053* 01480 MOVE DEVDAT,TTYTAB(LINE) 000105' 200046 000004 01490 MOVE TAC,DEVMOD(DEVDAT) 000106' 260140 000046' 01500 PUSHJ PDP,TTYDET ;DETACH DDB FROM TTY 000107' 262140 000006 01510 POP PDP,DEVDAT 000110' 137200 000004' 01520 TTYAT3: DPB ITEM,TPCJOBN ;STORE ATTACHED JOB NO. 000111' 137200 000072* 01530 DPB ITEM,PJOBN ;SET JOB NUMBER 000112' 205040 020000 01540 MOVSI TAC,TTYATC ;SET ATTACHED BIT 000113' 260140 000247' 01550 PUSHJ PDP,TTYDAT ;SETUP OUTPUT BYTE 000114' 254000 000411' 01560 JRST SCNIN ;GO INITIALIZE DDB 000115' 200302 000104* 01580 TTYAT4: MOVE DEVDAT,TTYTAB(LINE) ;RESTORE OLD DDB ADDRESS 000116' 254000 000110' 01590 JRST TTYAT3 SCNSER - SCANNER SERVICE PAGE 5 TOM EGGERS 8-9-65 01630 ;ROUTINE TO SETUP AC DEVDAT TO ADDRESS OF TTY WHICH HAS TYPED A COMMA 01640 ;AC DAT TO BYTE POINTER TO OUTPUT BUFFER FOR COMMAND MESSAGE 01650 ;AC TAC TO BYTE POINTER TO COMMAND STRING 01660 ;AC ITEM TO JOB NUNMBER TTY IS ATTACHED TO 01670 ;CALL: PUSHJ PDP,TTYCOM 01680 ; NONE FOUND 01690 ; ACS SETUP 01710 INTERNAL TTYCOM 000117' 205100 000033* 01730 TTYCOM: MOVSI LINE,MTTYLN 000120' 331002 000115* 01740 SKIPL TTYTAB(LINE) 000121' 253100 000120' 01750 AOBJN LINE,.-1 000122' 327100 000000* 01760 JUMPG LINE,CPOPJ 000123' 205300 400000 01770 MOVSI DEVDAT,400000 000124' 413302 000120* 01780 ANDCAB DEVDAT,TTYTAB(LINE) 000125' 205240 440700 01790 MOVSI DAT,440700 000126' 271246 000000* 01800 ADDI DAT,TTYBUF(DEVDAT) 000127' 200040 000005 01810 MOVE TAC,DAT 01830 ;FALL INTO TTYJOB 01850 ;ROUTINE TO RETURN IN AC ITEM JOB NUMBER WHICH TTY IS ATTACHED TO 01860 ;CALL: MOVE DEVDAT,ADDRESS OF TTY DEVICE DATA BLOCK 01880 INTERNAL TTYJOB 000130' 135100 000065* 01900 TTYJOB: LDB LINE, PUNIT 000131' 135200 000004' 01910 LDB ITEM,TPCJOBN 000132' 254000 000000* 01920 JRST CPOPJ1 SCNSER - SCANNER SERVICE PAGE 6 TOM EGGERS 8-9-65 01960 ;TELETYPE SCANNER UUO ROUTINES 01970 ;FOR DDT 01990 ;DDTGT WAITS FOR OUTPUT TO COMPLETE THEN PUTS 02000 ;TELETYPE INTO DDT MODE 000133' 260140 000231' 02020 DDTGT: PUSHJ PDP,TTYSR1 ;FIND DEVICE DATA BLOCK 000134' 200006 000002 02030 MOVE IOS,DEVIOS(DEVDAT) 000135' 607000 100000 02040 TLNN IOS,DDTM 000136' 607000 000020 02050 TLNN IOS,IO ;OUTPUT IN PROGRESS 000137' 254000 000141' 02060 JRST DDTGT2 ;NO 02070 ; PUSHJ PDP,OUT ;MAKE SURE OUTPUT STARTED 000140' 260140 000000* 02080 PUSHJ PDP,WAIT1 ;WAIT FOR OUTPUT TO FINISH 000141' 661000 100000 02090 DDTGT2: TLO IOS,DDTM ;SET DDT MODE BIT 000142' 202006 000002 02100 MOVEM IOS,DEVIOS(DEVDAT) 000143' 254000 000000* 02110 JRST UXIT 02130 ;RELEASE TELETYPE FROM DDT MODE 02140 ;MAKE SURE OUPUT IS FINISHED FIRST 000144' 260140 000231' 02160 DDTRL: PUSHJ PDP,TTYSR1 ;FIND DEVICE DATA BLOCK 000145' 200006 000002 02170 MOVE IOS,DEVIOS(DEVDAT) 000146' 603000 000020 02180 TLNE IOS,IO ;OUTPUT IN PROGRESS? 000147' 260140 000140* 02190 PUSHJ PDP,WAIT1 ;YES, WAIT 000150' 205000 140000 02200 MOVSI IOS,DDTM+SYNC 000151' 412006 000002 02210 ANDCAM IOS,DEVIOS(DEVDAT) ;TURN OFF DDT BIT 000152' 254000 000143* 02220 JRST UXIT SCNSER - SCANNER SERVICE PAGE 7 TOM EGGERS 8-9-65 02260 ;INPUT TO DDT 02270 ;CALL AC,[SIXBIT /DDTIN/] AC CONTAINS POINTER TO BUFFER AREA 02280 ;BUFFER AREA MUST BE 21 WORDS LONG 000153' 260140 000231' 02300 DDTIN: PUSHJ PDP,TTYSR1 ;SET UP DEVDAT 000154' 200006 000002 02310 MOVE IOS,DEVIOS(DEVDAT) 000155' 603000 000020 02320 TLNE IOS,IO ;OUTPUT IN PROGRESS 000156' 260140 000147* 02330 PUSHJ PDP,WAIT1 ;YES, WAIT 000157' 200006 000002 02340 DDTIN2: MOVE IOS,DEVIOS(DEVDAT) 000160' 603000 000040 02350 TLNE IOS,IOEND ;BUFFER ALREADY? 000161' 254000 000166' 02360 JRST DDTIN3 ;YES 000162' 201000 010000 02370 MOVEI IOS,IOACT 000163' 436006 000002 02380 IORM IOS,DEVIOS(DDB) 000164' 260140 000000* 02390 PUSHJ PDP,WSYNC ;NO, WAIT 000165' 254000 000157' 02400 JRST DDTIN2 000166' 205040 120004 02420 DDTIN3: MOVSI TAC,NIO+IOFST+DDTM 000167' 436046 000002 02430 IORM TAC,DEVIOS(DEVDAT) ;STOP ALL IO 000170' 200046 000000* 02440 MOVE TAC,TTYPTR(DEVDAT) 000171' 260140 000000* 02450 PUSHJ PDP,CLRBYT ;CLEAR OUT REMAINING BYTES 000172' 275046 000000* 02460 SUBI TAC,TTYBM1(DEVDAT) ;NUMBER OF WORDS 000173' 135100 000000* 02470 LDB TAC1,PUUOAC ;PICK UP AC NUMBER 000174' 271107 000000 02480 ADDI TAC1,(PROG) ;FIND REAL ADDRESS 000175' 200102 000000 02490 MOVE TAC1,(TAC1) ;PICK UP POINTER 000176' 271107 000000 02500 ADDI TAC1,(PROG) ;FIND REAL ADDRESS OF BUFFER 000177' 505106 000126* 02510 HRLI TAC1,TTYBUF(DEVDAT) 000200' 271042 000000 02520 ADDI TAC,(TAC1) 000201' 251101 000000 02530 BLT TAC1,(TAC) ;TRANSFER MONITOR BUFFER TO U 000202' 402001 000001 02540 CLEARM 1(TAC) ;MAKE SURE THERE ARE SOME NUL 000203' 205040 020040 02550 MOVSI TAC,NIO+IOEND 000204' 412046 000002 02560 ANDCAM TAC,DEVIOS(DEVDAT) 000205' 254000 000152* 02570 JRST UXIT SCNSER - SCANNER SERVICE PAGE 8 TOM EGGERS 8-9-65 02610 ;OUTPUT FROM DDT 02620 ;CALL AC,[SIXBIT /DDTOUT/] AC HAS POINTER TO DDT OUTPUT BUFFER 000206' 260140 000231' 02640 DDTOUT: PUSHJ PDP,TTYSR1 000207' 200006 000002 02650 MOVE IOS,DEVIOS(DEVDAT) 000210' 603000 000020 02660 TLNE IOS,IO ;OUTPUT IN PROGRESS? 000211' 260140 000156* 02670 PUSHJ PDP,WAIT1 ;YES, WAIT 000212' 200000 001146' 02680 MOVE IOS,[XWD NIO+TOUT+DDTM,IOACT] 000213' 437006 000002 02690 IORB IOS,DEVIOS(DEVDAT) 000214' 135040 000173* 02700 LDB TAC,PUUOAC ;PICK UP AC NUMBER 000215' 505040 000011 02710 HRLI TAC,JDAT ;CALC REAL ADDRESS OF AC 000216' 540060 000001 02720 HRR TAC,@TAC ;PICK UP AC 000217' 505060 000001 02730 HRLI TAC,@TAC ;CALC REAL ADDRESS OF DDT BUF 000220' 541046 000177* 02740 HRRI TAC,TTYBUF(DEVDAT) 000221' 552046 000000* 02750 HRRZM TAC,TTYCTR(DDB) ;A SUITABLY LARGE NUMBER 000222' 200100 000001 02760 MOVE TAC1,TAC 000223' 251042 000020 02770 BLT TAC,20(TAC1) ;MOVE DDT BUFFER TO MONITOR 000224' 505100 440700 02780 HRLI TAC1,440700 000225' 202106 000170* 02800 MOVEM TAC1,TTYPTR(DEVDAT) 000226' 621000 000004 02810 TLZ IOS,IOS+IOFST 000227' 260140 000303' 02820 PUSHJ PDP,TTYOU0 000230' 254000 000205* 02830 JRST UXIT SCNSER - SCANNER SERVICE PAGE 9 TOM EGGERS 8-9-65 000231' 200200 000000* 02870 TTYSR1: MOVE ITEM,JOB 000232' 205100 000117* 02880 TTYSRC: MOVSI LINE,MTTYLN 000233' 550302 000124* 02890 HRRZ DEVDAT,TTYTAB(LINE) 000234' 322300 000240' 02900 JUMPE DEVDAT,TTYF0 000235' 135040 000004' 02910 LDB TAC,TPCJOBN 000236' 306044 000000 02920 CAIN TAC,(ITEM) 000237' 263140 000000 02930 POPJ PDP, ;FOUND 000240' 253100 000233' 02940 TTYF0: AOBJN LINE,TTYSRC+1 000241' 205040 576062 02950 MOVSI TAC,576062 ;SIXBIT /OPR/ 000242' 254000 000000* 02960 JRST DEVPHY ;SEARCH PHYSICAL DEVICE NAMES 02970 ;AND RETURN OPERATOR TTY. 02990 ;ROUTINE TO FIND A TTY FOR A JOB 03000 ;CALL: MOVE ITEM,JOB NUMBER 03010 ; PUSHJ PDP, TTYFND 03020 ; ERROR RETURN 03030 ; RETURN WITH DEVDAT SET TO ADR OF DDB 03040 ; AND DAT SET TO BYTE POINTER TO MONITOR OUTPUT BUFFER 000243' 200200 000231* 03060 TTYFNU: MOVE ITEM,JOB 000244' 260140 000232' 03070 TTYFND: PUSHJ PDP,TTYSRC ;CALLED BY PUSHJ PDP,TTYFND 03080 ; PUSHJ PDP,WSYNC 000245' 205040 020000 03090 MOVSI TAC,NIO ;JOB NUMBER IN TAC1 000246' 436046 000002 03100 IORM TAC,DEVIOS(DEVDAT) 000247' 201246 000220* 03110 TTYDAT: MOVEI DAT,TTYBUF(DEVDAT) ;SETUP OUTPUT BYTE POINTER 000250' 505240 440700 03120 HRLI DAT,440700 000251' 263140 000000 03130 POPJ PDP, 000252' 200040 000005 03150 TTYSTR: MOVE TAC,DAT 000253' 260140 000171* 03160 PUSHJ PDP,CLRBYT 000254' 275046 000172* 03170 SUBI TAC,TTYBM1(DEVDAT) 000255' 405040 777777 03180 ANDI TAC,-1 000256' 221040 000005 03190 IMULI TAC,5 000257' 202046 000221* 03200 MOVEM TAC,TTYCTR(DEVDAT) 000260' 201046 000247* 03210 MOVEI TAC,TTYBUF(DEVDAT) 000261' 505040 440700 03220 HRLI TAC,440700 000262' 202046 000225* 03230 MOVEM TAC,TTYPTR(DEVDAT) 000263' 200006 000002 03240 MOVE IOS,DEVIOS(DEVDAT) 000264' 434000 001147' 03250 IOR IOS,[XWD NIO+IOFST,IODTER+IOBKTL] 000265' 420000 001147' 03260 ANDCM IOS,[XWD NIO+IOFST,IODTER+IOBKTL] 000266' 260140 000771' 03270 PUSHJ PDP,GCHAR 000267' 263140 000000 03280 POPJ PDP, ;NOTHING TO TYPE 000270' 254000 000311' 03290 JRST TTYOU2 ;START OUTPUT 03310 ;DISPATCH TABLE; 000271' 263140 000000 03330 TTYDSP: POPJ PDP, ;RELEASE 000272' 254000 000000* 03340 JRST OUT ;CLOSE 000273' 254000 000301' 03350 JRST TTYOUT 000274' 630000 001150' 03360 TDZ IOS,[XWD TPMON,ECHOF+NCERR] ;INPUT 000275' 660000 010000 03370 TRO IOS,IOACT SCNSER - SCANNER SERVICE PAGE 9-1 TOM EGGERS 8-9-65 000276' 623000 000002 03380 TLZE IOS, IOBEG 000277' 661000 000004 03390 TLO IOS, IOFST 000300' 254000 001133' 03400 JRST MIS1 000301' 670000 001151' 03420 TTYOUT: TDO IOS,[XWD TOUT+IOFST,IOACT] 000302' 630000 001150' 03430 TDZ IOS,[XWD TPMON,ECHOF+NCERR] 000303' 135240 000000' 03440 TTYOU0: LDB HPOS,PHPOS 000304' 135200 000001' 03450 LDB VPOS,PVPOS 000305' 260140 000771' 03460 PUSHJ PDP, GCHAR 000306' 263140 000000 03470 POPJ PDP, 000307' 137240 000000' 03480 DPB HPOS,PHPOS 000310' 137200 000001' 03490 DPB VPOS,PVPOS 000311' 135100 000130* 03500 TTYOU2: LDB LINE,PUNIT 000312' 700200 000000* 03510 CONO CLDS ;DISABLE CLOCK 000313' 306100 000000* 03520 CAIN LINE,TCONLN 000314' 254000 000325' 03530 JRST CTYOUT 000315' 730200 000000 03540 CONO DCSA,0 ;DISABLE SCANNER 000316' 730602 000000 03550 CONO DCSB, (LINE) 000317' 730140 000010 03560 DATAO DCSA, CHREC 000320' 730200 000017* 03570 CONO DCSA,FSNCHN 000321' 137400 000002' 03580 DPB CHREC,PLASTC 000322' 700200 000000* 03590 TTYOU1: CONO CLEN ;RE-ENABLE CLOCK 000323' 202006 000002 03600 MOVEM IOS,DEVIOS(DEVDAT) 000324' 263140 000000 03610 POPJ PDP, 000325' 712200 000000 03630 CTYOUT: CONO TTY,0 ;DISABLE TTY 000326' 712140 000010 03640 DATAO TTY,CHREC 000327' 202400 000055' 03650 MOVEM CHREC,CCHAR 000330' 712200 000015* 03660 CONO TTY,SCNCHN ;RE-ENABLE 000331' 254000 000301' 03670 JRST TTYOUT1 000332' 712340 000050 03690 CTYINT: CONSO TTY,50 000333' 254000 000333' 03700 JRST . 000334' 712340 000040 03710 CONSO TTY,40 000335' 254000 000347' 03720 JRST CTYOU1 000336' 202040 000055' 03730 MOVEM TAC, CCHAR ;DONT ECHO RUBOUT 000337' 712040 000001 03740 DATAI TTY, TAC 000340' 405040 000177 03750 ANDI TAC, 177 000341' 306040 000177 03760 CAIN TAC, 177 000342' 254000 000346' 03770 JRST CTYRUB ;IS A RUBOUT 000343' 712140 000001 03780 DATAO TTY, TAC ;NOT, SO ECHO 000344' 250040 000055' 03790 EXCH TAC, CCHAR 000345' 254520 000000* 03800 JRST 12,@SCNCHL ;DISMISS INTERRUP 000346' 250040 000055' 03820 CTYRUB: EXCH TAC, CCHAR 000347' 264000 000000* 03830 CTYOU1: JSR SCNSAV 000350' 201400 000330* 03840 MOVEI CHREC,SCNCHN 000351' 712210 000200 03850 CONO TTY,200(CHREC) 000352' 200400 000055' 03860 MOVE CHREC,CCHAR 000353' 201100 000313* 03870 MOVEI LINE,TCONLN 000354' 254000 000364' 03880 JRST TCOMM 000355' 730340 001010 03900 SCNINT: CONSO DCSA,1010 SCNSER - SCANNER SERVICE PAGE 9-2 TOM EGGERS 8-9-65 000356' 254000 000356' 03910 JRST . 000357' 264000 000347* 03920 JSR SCNSAV 000360' 730340 000010 03930 CONSO DCSA,10 ;RECEIVER FLAG? 000361' 254000 000440' 03940 JRST SCNIN1 ;NO,XMITTER FLAG 000362' 730640 000002 03950 CONI DCSB, LINE 000363' 730440 000010 03960 DATAI DCSB, CHREC 000364' 405400 000177 03970 TCOMM: ANDI CHREC, 177 000365' 303100 000353* 03980 CAILE LINE,TCONLN ;CTY LINE OR LESS 000366' 254000 000450' 03990 JRST TYPX ;NO 000367' 332302 000233* 04000 SKIPE DDB,TTYTAB(LINE) ;DATA BLOCK ASSIGNED? 000370' 254000 000462' 04010 JRST INUSE ;YES 000371' 260140 000400' 04020 PUSHJ PDP,DDBSRC ;SEARCH FOR FREE TTY DEV. DATA BLOCK 000372' 254000 000450' 04030 JRST TYPX ;NONE FOUND, TYPE X 000373' 403240 000004 04040 CLEARB HPOS,VPOS ;ASSUME TTY IS AT BEGIN OF FORM 000374' 730300 000700 04050 CONSZ DCSA,700 ;FULL DUPLEX? 000375' 306100 000365* 04060 CAIN LINE,TCONLN ;CTY? 000376' 254000 000575' 04070 JRST INJEST ;NO, SWALLOW CHAR 000377' 254000 000511' 04080 JRST TYP1 SCNSER - SCANNER SERVICE PAGE 10 TOM EGGERS 8-9-65 04120 ;ROUTINE TO SEARCH FOR FREE TTY DEV DATA BLOCK 04130 ;CALL: MOVE LINE,TTY LINE NO 04140 ; PUSHJ PDP,DDBSRC 04150 ; NONE FOUND 04160 ; RETURN DEVDAT, LINE SET 000400' 205000 000020* 04180 DDBSRC: MOVSI IOS,MLTTYL ;NO. OF TTY DDB 000401' 201300 000066* 04190 MOVEI DEVDAT,TTYLST ;ADDRESS OF FIRST DDB 000402' 334040 001144' 04200 SKIPA TAC,[XWD TTYUSE+TTYATC,ASSPRG+ASSCON] 000403' 554306 000003 04210 HLRZ DEVDAT,DEVSER(DEVDAT) 000404' 612046 000004 04220 TDNE TAC,DEVMOD(DEVDAT) ;USE.ATTACH, AND BOTH ASSIGN 000405' 253000 000403' 04230 AOBJN IOS,.-2 000406' 325000 000122* 04240 JUMPGE IOS,CPOPJ ;DDB FOUND? 000407' 200000 001152' 04250 MOVE IOS,[XWD TPMON+IOFST,IOACT] 000410' 200040 001153' 04260 MOVE TAC,[XWD TTYUSE,ASSCON] 04280 ;INITIALIZE TTY DEVICE DATA BLOCK(CALLED FROM TTYATT TOO) 000411' 436046 000004 04300 SCNIN: IORM TAC,DEVMOD(DEVDAT) 000412' 137100 000311* 04310 DPB LINE,PUNIT ;SET LINE NO. IN DDB 000413' 205040 646471 04320 MOVSI TAC,646471 ;SIXBIT /TTY/ 000414' 202046 000000 04330 MOVEM TAC,DEVNAM(DEVDAT) 000415' 200040 001154' 04340 MOVE TAC,[POINT 6,DEVNAM(DEVDAT),17] 000416' 261140 000002 04350 PUSH PDP,LINE ;SAVE LINE NO. 000417' 606100 000070 04360 TRNN LINE,70 ;IS THERE A HIGH ORDER OCTAL DIGIT? 000420' 254000 000425' 04370 JRST SCNIN0 ;NO 000421' 241100 777775 04380 ROT LINE,-3 ;YES,CONVERT TO SIXBIT 000422' 271100 000020 04390 ADDI LINE,20 000423' 136100 000001 04400 IDPB LINE,TAC ;STORE HIGH ORDER SIXBIT DIGIT 000424' 242100 000020 04410 LSH LINE,20 ;IN PHYSICAL NAME 000425' 271100 000020 04420 SCNIN0: ADDI LINE,20 000426' 136100 000001 04430 IDPB LINE,TAC ;STORE LOW ORDER DIGIT 000427' 262140 000002 04440 POP PDP,LINE 000430' 542302 000367* 04460 HRRM DEVDAT,TTYTAB(LINE) ;SET LINE NO. IN TRANSLATOR T 000431' 205040 436471 04470 MOVSI TAC,436471 ;SIXBIT /CTY/ 000432' 306100 000375* 04480 CAIN LINE,TCONLN ;IS THIS CONSOLE TTY? 000433' 202046 000000 04490 MOVEM TAC,DEVNAM(DEVDAT) ;YES, SET NAME TO CTY 000434' 200046 000000 04500 MOVE TAC,DEVNAM(DEVDAT) 000435' 336000 000000* 04510 SKIPN DEVOPR ;IS THIS FIRST CHAR. TYPED BY ANYONE? 000436' 202040 000435* 04520 MOVEM TAC,DEVOPR ;YES,SET THIS TTY AS OPERATOR TTY 000437' 254000 000132* 04530 JRST CPOPJ1 ;SUCCESSFUL RETURN 000440' 730040 000002 04550 SCNIN1: DATAI DCSA,LINE ;GET LINE NO. FROM FULL DUPLEX 000441' 201040 000320* 04560 MOVEI TAC,FSNCHN 000442' 730201 004000 04570 CONO DCSA,4000(TAC) ;RELEASE XMITTER SCANNER 000443' 332302 000430* 04580 SKIPE DDB,TTYTAB(LINE) ;DATA BLOCK ASSIGNED? 000444' 301100 000432* 04590 CAIL LINE,TCONLN ;LINE NO. TOO LARGE? 000445' 254000 000000* 04600 JRST SCNRET ;GO AWAY 000446' 135400 000002' 04610 LDB CHREC,PLASTC 000447' 254000 000471' 04620 JRST INUS1 SCNSER - SCANNER SERVICE PAGE 11 TOM EGGERS 8-9-65 000450' 306400 000130 04660 TYPX: CAIN CHREC,"X" ;CHARACTER RECEIVED AN X? 000451' 254000 000445* 04670 JRST SCNRET ;YES, GO AWAY 000452' 201400 000130 04680 MOVEI CHREC,"X" 000453' 302100 000444* 04690 CAIE LINE,TCONLN 000454' 254000 000457' 04700 JRST TYPX1 000455' 712140 000010 04710 DATAO TTY,CHREC 000456' 254000 000451* 04720 JRST SCNRET 000457' 730742 000000 04730 TYPX1: CONSO DCSB,(LINE) 000460' 730140 000010 04740 DATAO DCSA,CHREC ;TYPE AN X 000461' 254000 000456* 04750 JRST SCNRET 000462' 730300 000700 04770 INUSE: CONSZ DCSA,700 ;FULL DUPLEX? 000463' 306100 000453* 04780 CAIN LINE,TCONLN 000464' 254000 000471' 04790 JRST INUS1 000465' 730602 000000 04800 CONO DCSB,(LINE) 000466' 730140 000010 04810 DATAO DCSA,CHREC 000467' 137400 000002' 04820 DPB CHREC,PLASTC 000470' 254000 000461* 04830 JRST SCNRET 000471' 200006 000002 04850 INUS1: MOVE IOS,DEVIOS(DDB) 000472' 135340 000111* 04860 LDB PROG,PJOBN 000473' 550347 000000* 04870 HRRZ PROG,JBTADR(PROG) 000474' 135240 000000' 04880 LDB HPOS,PHPOS 000475' 135200 000001' 04890 LDB VPOS,PVPOS 000476' 135046 000262* 04900 LDB TAC, TTYPTR(DDB) 000477' 603000 002000 04910 TLNE IOS, SP 000500' 254000 000533' 04920 JRST SIM35 000501' 607000 000020 04930 INUS2: TLNN IOS,TOUT 000502' 254000 000575' 04940 JRST INJEST 000503' 312040 000010 04950 CAME TAC, CHREC 000504' 254000 000527' 04960 JRST ECHO 000505' 260140 000771' 04970 INUS3: PUSHJ PDP, GCHAR 000506' 254000 000520' 04980 JRST LEAV0 000507' 306100 000463* 04990 TYPE: CAIN LINE,TCONLN 000510' 254000 000524' 05000 JRST CTSER3 000511' 730602 000000 05010 TYP1: CONO DCSB,(LINE) 000512' 730140 000010 05020 DATAO DCSA, CHREC 000513' 137400 000002' 05030 DPB CHREC,PLASTC ;SAVE CHARACTER FOR FULL DUPLEX 000514' 202006 000002 05040 LEAVE: MOVEM IOS, DEVIOS(DDB) 000515' 137240 000000' 05050 LEAV1: DPB HPOS,PHPOS 000516' 137200 000001' 05060 DPB VPOS,PVPOS 000517' 254000 000470* 05070 JRST SCNRET 000520' 202046 000004 05080 LEAV0: MOVEM TAC,DEVMOD(DEVDAT) ;IS TTY ATTCHED? 000521' 607040 020000 05090 TLNN TAC,TTYATC 000522' 260140 000041' 05100 PUSHJ PDP,TTYKIL ;NO,RETURN TO POOL 000523' 254000 000515' 05110 JRST LEAV1 000524' 712140 000010 05130 CTSER3: DATAO TTY,CHREC 000525' 202400 000055' 05140 MOVEM CHREC,CCHAR 000526' 254000 000514' 05150 JRST LEAVE SCNSER - SCANNER SERVICE PAGE 12 TOM EGGERS 8-9-65 000527' 670000 001155' 05190 ECHO: TDO IOS,[XWD SP,ECHOF] 000530' 621000 000020 05200 TLZ IOS,TOUT 000531' 201400 000177 05210 MOVEI CHREC,177 ;SEND A RUBOUT AFTER ECHO CHE 000532' 254000 000507' 05220 JRST TYPE 000533' 205040 777766 05240 SIM35: MOVSI TAC,-SCTABL 000534' 200241 000545' 05250 MOVE HPOS, SCTAB(TAC) 000535' 302405 000000 05260 CAIE CHREC,(HPOS) 000536' 253040 000534' 05270 AOBJN TAC, .-2 000537' 135240 000000' 05280 LDB HPOS,PHPOS 000540' 325040 000527' 05290 JUMPGE TAC, ECHO 000541' 204041 000545' 05300 MOVS TAC, SCTAB(TAC) 000542' 603040 000140 05310 TLNE TAC, 140 ;SPACING CHARACTER 000543' 344241 000000 05320 AOJA HPOS,(TAC) ;YES 000544' 254001 000000 05330 JRST (TAC) ;NO 000545' 000557' 000040 05350 SCTAB: XWD SPACE," " 000546' 000565' 000012 05360 XWD SIMLF,12 000547' 000572' 000177 05370 XWD SIMRO,177 ;RUBOUT 000550' 000572' 000134 05380 XWD SIMRO,134 ;BACK SLASH 000551' 000735' 000015 05390 XWD ASC3,15 ;CR 000552' 000562' 000136 05400 XWD SIMVA,"^" 000553' 000766' 000103 05410 XWD DELET1,"C" 000554' 000766' 000117 05420 XWD DELET1,"O" 000555' 000566' 000132 05430 XWD SIM4,"Z" 000556' 000766' 000125 05440 XWD DELET1,"U" 000012 05450 SCTABL=.-SCTAB 000557' 606240 000007 05470 SPACE: TRNN HPOS,7 ;FINISHED SIMULATING TABS(8) 000560' 254000 000566' 05480 JRST SIM4 ;YES 000561' 254000 000507' 05490 JRST TYPE ;NO, SEND ANOTHER SPACE 000562' 135400 000003' 05510 SIMVA: LDB CHREC,PSCHAR 000563' 660400 000100 05520 TRO CHREC, 100 000564' 254000 000507' 05530 JRST TYPE 000565' 367200 000507' 05550 SIMLF: SOJG VPOS,TYPE ;SEND ANOTHER LINE-FEED 000566' 621000 002000 05560 SIM4: TLZ IOS,SP 000567' 607000 000020 05570 TLNN IOS,TOUT 000570' 254000 000630' 05580 JRST INJ4 000571' 254000 000505' 05590 JRST INUS3 000572' 625000 002000 05610 SIMRO: TLZA IOS, SP 000573' 640000 004000 05620 MOD35: TRC IOS,T35 000574' 254000 000514' 05630 JRST LEAVE SCNSER - SCANNER SERVICE PAGE 13 TOM EGGERS 8-9-65 000575' 306400 000003 05670 INJEST: CAIN CHREC,3 ;CONTROL C? 000576' 254000 000644' 05680 JRST INJ5 000577' 623000 000004 05690 TLZE IOS,IOFST ;IF FIRST CHARACTER IN, INITIALIZE 000600' 260140 000632' 05700 PUSHJ PDP,SETMB1 000601' 603000 100000 05710 TLNE IOS,DDTM ;1 DDT CHAR RESTARTS PROGRAM 000602' 661000 040040 05720 TLO IOS,SYNC+IOEND ;YES, TERMINATE BUFFER 000603' 306400 000017 05730 CAIN CHREC,17 ;COTNROL O? 000604' 254000 000657' 05740 JRST INJ6 ;YES, FLUSH OUTPUT 000605' 622000 100000 05750 TRZE IOS,ECHOF ;ECHO HAS OCCURRED? 000606' 254000 000677' 05760 JRST INJ7 ;YES, NOW RESUME OUTPUT 000607' 602000 040000 05770 TRNE IOS,NCERR 000610' 254000 000514' 05780 JRST LEAVE 000611' 302400 000033 05790 CAIE CHREC,033 ;NEW NEW ALT-MODE? 000612' 306400 000176 05800 CAIN CHREC,176 ;NEW ALT-MODE? 000613' 201400 000175 05810 MOVEI CHREC,175 ;CHANGE TO OLD 000614' 306400 000020 05820 CAIN CHREC,20 ;CONTROL P TAB SIMULATION FLIP FLOP SWI 000615' 254000 000573' 05830 JRST MOD35 000616' 603000 100000 05840 TLNE IOS,DDTM 000617' 254000 000622' 05850 JRST INJ25 ;SENT RUBOUTS ON TO DDT 000620' 306400 000177 05860 CAIN CHREC,177 ;RUBOUT 000621' 254000 000752' 05870 JRST DELET 000622' 136406 000476* 05880 INJ25: DPBI CHREC, TTYPTR(DDB) 000623' 370046 000257* 05890 SOS TAC, TTYCTR(DDB) 000624' 301400 000040 05900 CAIL CHREC, 40 000625' 303400 000137 05910 CAILE CHREC, 137 000626' 254000 000701' 05920 JRST SPCIN 000627' 271240 000001 05930 ADDI HPOS,1 000630' 260140 001064' 05940 INJ4: PUSHJ PDP, MOVBUF 000631' 254000 000514' 05950 JRST LEAVE 000632' 541046 000260* 05970 SETMB1: HRRI TAC, TTYBUF(DDB) 000633' 505040 440700 05980 HRLI TAC, 440700 000634' 202046 000622* 05990 MOVEM TAC, TTYPTR(DDB) 000635' 507000 000001 06000 HRLS TAC 000636' 350000 000001 06010 AOS TAC 000637' 402006 000632* 06020 SETZM TTYBUF(DDB) 000640' 251046 000000* 06030 BLT TAC,TTYBFE(DDB) ;CLEAR OUT MONITOR BUFFER 000641' 201040 000111 06040 MOVEI TAC, 111 000642' 202046 000623* 06050 MOVEM TAC, TTYCTR(DDB) 000643' 263140 000000 06060 POPJ PDP, SCNSER - SCANNER SERVICE PAGE 14 TOM EGGERS 8-9-65 000644' 260140 000632' 06100 INJ5: PUSHJ PDP,SETMB1 000645' 261140 000004 06110 PUSH PDP,ITEM ;^C 000646' 135200 000004' 06120 LDB ITEM,TPCJOBN ;YES, GET USER CONSOLE NUMBER 000647' 332000 000004 06130 SKIPE ITEM 000650' 260140 000000* 06140 PUSHJ PDP,STOP1 ;SHUT OFF JOB 000651' 262140 000004 06150 POP PDP,ITEM 000652' 607000 001000 06160 TLNN IOS,TPMON ;SAVE STATUS OF TTY 000653' 202006 000063* 06170 MOVEM IOS,TTYSAV(DDB) ;WHEN IT WAS IN USER MODE 000654' 200000 001152' 06180 MOVE IOS,[XWD TPMON+IOFST,IOACT] 000655' 201040 000103 06190 MOVEI TAC,"C" 000656' 254000 000674' 06200 JRST INJ61 000657' 261140 000002 06220 INJ6: PUSH PDP,TAC1 ;^O 000660' 623000 000001 06230 TLZE IOS,IOW 000661' 260140 000000* 06240 PUSHJ PDP,SETIOD 000662' 262140 000002 06250 POP PDP,TAC1 000663' 603000 101000 06260 TLNE IOS,TPMON+DDTM 000664' 254000 000667' 06270 JRST INJ6A 000665' 603000 000020 06280 TLNE IOS,TOUT 000666' 260140 000000* 06290 PUSHJ PDP,ADVBFE 000667' 665000 000004 06300 INJ6A: TLOA IOS,IOFST 000670' 254000 000666' 06310 JRST .-2 000671' 620000 100000 06320 TRZ IOS,ECHOF 000672' 660000 020000 06330 TRO IOS,IODEND 000673' 201040 000060 06340 MOVEI TAC,"0" 000674' 137040 000003' 06350 INJ61: DPB TAC,PSCHAR 000675' 201400 000136 06360 MOVEI CHREC,"^" 000676' 254000 000745' 06370 JRST SPC21 000677' 661000 000020 06390 INJ7: TLO IOS,TOUT 000700' 254000 000505' 06400 JRST INUS3 SCNSER - SCANNER SERVICE PAGE 15 TOM EGGERS 8-9-65 000701' 205040 777770 06440 SPCIN: MOVSI TAC,-SCITL ;SEARCH FOR SPECIAL INPUT CHAR 000702' 200101 000711' 06450 MOVE TAC1,SCITAB(TAC) 000703' 302402 000000 06460 CAIE CHREC,(TAC1) ;FOUND? 000704' 253040 000702' 06470 AOBJN TAC,.-2 ;NO 000705' 544040 000002 06480 HLR TAC,TAC1 ;SAVE DISPATCH ADDRESS 000706' 135100 000412* 06490 LDB LINE,PUNIT ;RESTORE TAC1 000707' 321041 000000 06500 JUMPL TAC,(TAC) 000710' 254000 000630' 06510 JRST INJ4 ;CHARACTER NOT FOUND 000711' 000721' 000015 06530 SCITAB: XWD SPCCR,15 ;CR 000712' 000727' 000012 06540 XWD ASC1,12 ;LF 000713' 000742' 000011 06550 XWD SPC2,11 ;HORIZ TAB 000714' 000724' 000013 06560 XWD SPVT,13 ;VT 000715' 000723' 000014 06570 XWD SPFF,14 ;FF 000716' 000737' 000025 06580 XWD SPC4A,25 ;^U 000717' 000747' 000032 06590 XWD SPC7,32 ;^Z 000720' 000727' 000175 06600 XWD ASC1, 175 ;ALT MODE 000010 06610 SCITL=.-SCITAB 000721' 201240 000000 06630 SPCCR: MOVEI HPOS,0 000722' 254000 000735' 06640 JRST ASC3 000723' 334200 001156' 06660 SPFF: SKIPA VPOS,[10] 000724' 201200 000004 06670 SPVT: MOVEI VPOS,4 000725' 607000 004000 06680 TLNN IOS,T35 ;DONT SIMULATE FOR A MOD 35 000726' 661000 002000 06690 TLO IOS,SP 000727' 135040 000000* 06700 ASC1: LDB TAC,PIOMOD 000730' 607000 001000 06710 TLNN IOS,TPMON 000731' 306040 000001 06720 CAIN TAC,AL 000732' 661000 040000 06730 TLO IOS,SYNC 000733' 607000 002000 06740 ASC2: TLNN IOS,SP 000734' 254000 000630' 06750 JRST INJ4 000735' 201400 000012 06760 ASC3: MOVEI CHREC,12 ;LINE FEED 000736' 254000 000507' 06770 JRST TYPE 000737' 260140 000632' 06790 SPC4A: PUSHJ PDP,SETMB1 000740' 201040 000125 06800 MOVEI TAC,"U" 000741' 254000 000674' 06810 JRST INJ61 000742' 602000 004000 06830 SPC2: TRNE IOS,T35 000743' 254000 000514' 06840 JRST LEAVE 000744' 201400 000040 06850 MOVEI CHREC," " 000745' 661000 002000 06860 SPC21: TLO IOS,SP 000746' 254000 000507' 06870 JRST TYPE 000747' 661000 042040 06890 SPC7: TLO IOS,SYNC+IOEND+SP ;^Z 000750' 201040 000132 06900 MOVEI TAC,"Z" 000751' 254000 000674' 06910 JRST INJ61 ;ECHO ^Z SCNSER - SCANNER SERVICE PAGE 16 TOM EGGERS 8-9-65 000752' 200046 000642* 06950 DELET: MOVE TAC,TTYCTR(DDB) 000753' 301040 000111 06960 CAIL TAC,111 000754' 254000 000766' 06970 JRST DELET1 000755' 205040 070000 06990 MOVSI TAC,070000 000756' 270046 000634* 07000 ADD TAC,TTYPTR(DDB) 000757' 603040 400000 07010 TLNE TAC,400000 000760' 270040 001157' 07020 ADD TAC,[XWD 347777,-1] 000761' 202046 000756* 07030 MOVEM TAC,TTYPTR(DDB) 000762' 350006 000752* 07040 AOS TTYCTR(DDB) 000763' 201400 000334 07060 MOVEI CHREC,334 ;BACK SLASH 000764' 661000 002000 07070 DELET2: TLO IOS,SP 000765' 254000 000507' 07080 JRST TYPE 000766' 201200 000001 07100 DELET1: MOVEI VPOS,1 000767' 201400 000015 07110 MOVEI CHREC,15 000770' 254000 000764' 07120 JRST DELET2 SCNSER - SCANNER SERVICE PAGE 17 TOM EGGERS 8-9-65 07160 ;ROUTINE TO GET NEXT CHARACTER FROM OUTPUT BUFFER 07170 ;CALL: PUSHJ PDP,GCHAR 07180 ; NO MORE LEFT 07190 ; RETURN WITH CHAR. IN CHREC 000771' 627000 000004 07210 GCHAR: TLZN IOS, IOFST 000772' 254000 001001' 07220 JRST GCHAR3 000773' 550046 000010 07230 GCHAR1: HRRZ TAC,DEVOAD(DDB) 000774' 270040 001160' 07240 ADD TAC, [XWD 000700+PROG,1] 000775' 202046 000761* 07250 MOVEM TAC, TTYPTR(DDB) 000776' 550060 000001 07260 HRRZ TAC, @TAC 000777' 221040 000005 07270 IMULI TAC, 5 001000' 202046 000762* 07280 MOVEM TAC,TTYCTR(DDB) 001001' 375006 001000* 07290 GCHAR3: SOSGE TTYCTR(DDB) 001002' 254000 001025' 07300 JRST GCHAR5 001003' 134406 000775* 07310 LDBI CHREC, TTYPTR(DDB) 001004' 322400 001023' 07320 JUMPE CHREC, GCHAR7 001005' 306400 000011 07330 CAIN CHREC, 11 001006' 254000 001052' 07340 JRST HT 001007' 306400 000012 07350 CAIN CHREC, 12 001010' 344200 001017' 07360 AOJA VPOS,GCH3 001011' 302400 000013 07370 CAIE CHREC, 13 001012' 306400 000014 07380 CAIN CHREC, 14 001013' 254000 001057' 07390 JRST VTFF 001014' 271240 000001 07400 ADDI HPOS,1 001015' 306400 000015 07410 CAIN CHREC,15 001016' 201240 000000 07420 MOVEI HPOS,0 001017' 354003 000000 07430 GCH3: AOSA (PDP) 001020' 200006 000653* 07440 GCH3A: MOVE IOS,TTYSAV(DDB) ;RESTORE STATUS TO USER 001021' 202006 000002 07450 GCHAR4: MOVEM IOS,DEVIOS(DDB) 001022' 263140 000000 07460 POPJ PDP, 001023' 607000 100000 07480 GCHAR7: TLNN IOS,DDTM ;DDT BUFFER TERMINATED WITH NULL 001024' 254000 001001' 07490 JRST GCHAR3 001025' 261140 000002 07500 GCHAR5: PUSH PDP,TAC1 001026' 623000 000001 07510 TLZE IOS, IOW 001027' 260140 000661* 07520 PUSHJ PDP, SETIOD 001030' 262140 000002 07530 POP PDP,TAC1 001031' 607000 101000 07540 TLNN IOS,TPMON+DDTM 001032' 260140 000666* 07550 PUSHJ PDP, ADVBFE 001033' 665000 000004 07560 TLOA IOS,IOFST 001034' 254000 000773' 07570 JRST GCHAR1 001035' 630000 001161' 07580 TDZ IOS,[XWD IO,IOACT] 001036' 627000 000100 07590 TLZN IOS,USRB 001037' 254000 001021' 07600 JRST GCHAR4 001040' 621000 001000 07610 TLZ IOS,TPMON 001041' 135100 000706* 07620 LDB LINE,PUNIT ;GET LINE NO. 001042' 261140 000004 07630 PUSH PDP,ITEM 001043' 135200 000004' 07640 LDB ITEM,TPCJOB 001044' 260140 000000* 07650 PUSHJ PDP,SETRUN 001045' 262140 000004 07660 POP PDP,ITEM SCNSER - SCANNER SERVICE PAGE 17-1 TOM EGGERS 8-9-65 001046' 626000 020000 07670 TRZN IOS,USRBC 001047' 254000 001020' 07680 JRST GCH3A 001050' 205000 001004 07690 MOVSI IOS,TPMON+IOFST 001051' 254000 001021' 07700 JRST GCHAR4 001052' 602000 004000 07710 HT: TRNE IOS,T35 001053' 344240 001017' 07720 AOJA HPOS,GCH3 001054' 661000 002000 07730 TLO IOS,SP 001055' 201400 000240 07740 SPOUT: MOVEI CHREC,240 001056' 254000 001017' 07750 JRST GCH3 001057' 602000 004000 07770 VTFF: TRNE IOS,T35 001060' 344200 001017' 07780 AOJA VPOS,GCH3 001061' 201400 000012 07790 MOVEI CHREC,12 001062' 661000 002000 07800 TLO IOS,SP 001063' 254000 001017' 07810 JRST GCH3 SCNSER - SCANNER SERVICE PAGE 18 TOM EGGERS 8-9-65 001064' 603000 100000 07840 MOVBUF: TLNE IOS,DDTM 001065' 254000 001125' 07850 JRST MOV3 ;DONT ADVANCE BUFFERS FOR DDT MODE 001066' 627000 040000 07860 TLZN IOS,SYNC 001067' 337006 001001* 07870 SKIPG TTYCTR(DDB) 001070' 254000 001072' 07880 JRST .+2 001071' 254000 001133' 07890 JRST MIS1 001072' 603000 001000 07900 TLNE IOS, TPMON 001073' 254000 001135' 07910 JRST MOVMON 001074' 200046 000007 07920 MOVE TAC,DEVIAD(DDB) ;IS TTY EXPECTING INPUT? 001075' 602040 777777 07930 TRNE TAC,-1 001076' 335020 000001 07940 SKIPGE @TAC ;OR IS NEXT BUFFER READY? 001077' 254000 001132' 07950 JRST MIS ;NO 001100' 261140 000002 07960 PUSH PDP,TAC1 001101' 200046 001003* 07970 MOVE TAC,TTYPTR(DDB) 001102' 260140 000253* 07980 PUSHJ PDP,CLRBYT 001103' 200046 000007 07990 MOVE TAC,DEVIAD(DDB) 001104' 260140 000000* 08000 PUSHJ PDP,ADRCK ;MAKE SURE BUFFER WILL FIT 001105' 551041 000000* 08010 HRRZI TAC,STTYB1(TAC) ;LENGTH+1 001106' 201066 000007 08030 MOVEI TAC,@DEVIAD(DDB) 001107' 271040 000002 08040 ADDI TAC,2 001110' 540400 000001 08050 HRR CHREC,TAC 001111' 271040 000000* 08060 ADDI TAC,STTYBF 001112' 505406 000637* 08070 HRLI CHREC,TTYBUF(DDB) 001113' 251401 777777 08080 BLT CHREC,-1 (TAC) 001114' 201040 000111 08100 MOVEI TAC,111 001115' 274046 001067* 08110 SUB TAC, TTYCTR(DDB) 001116' 271040 000004 08120 ADDI TAC,4 001117' 231040 000005 08130 IDIVI TAC,5 001120' 201426 000007 08140 MOVEI CHREC,@DEVIAD(DDB) 001121' 202050 000001 08150 MOVEM TAC,1(CHREC) 001122' 260140 000000* 08160 PUSHJ PDP, ADVBFF 001123' 254000 001124' 08170 JRST .+1 001124' 665000 000004 08180 TLOA IOS,IOFST 001125' 261140 000002 08190 MOV3: PUSH PDP,TAC1 001126' 623000 000001 08200 TLZE IOS, IOW 001127' 260140 001027* 08210 PUSHJ PDP, SETIOD 001130' 262140 000002 08220 POP PDP,TAC1 001131' 624000 050000 08230 TRZA IOS,NCERR+IOACT 001132' 660000 040000 08240 MIS: TRO IOS, NCERR 001133' 202006 000002 08250 MIS1: MOVEM IOS, DEVIOS(DDB) 001134' 263140 000000 08260 POPJ PDP, 001135' 205040 400000 08270 MOVMON: MOVSI TAC,400000 001136' 436042 000443* 08280 IORM TAC,TTYTAB(LINE) ;SET BIT FOR MONITOR 001137' 661000 000004 08290 TLO IOS,IOFST 001140' 201040 000015 08300 MOVEI TAC,15 001141' 137046 001101* 08310 DPB TAC,TTYPTR(DDB) ;FORCE A CARRIAGE RET INTO MONITOR COMM 001142' 350000 000000* 08320 AOS COMCNT 001143' 263140 000000 08330 POPJ PDP, 08350 END, SCNSER - SCANNER SERVICE PAGE 18-1 TOM EGGERS 8-9-65 001144' 030000 600000 001145' 000100 020000 001146' 120020 010000 001147' 020004 140000 001150' 001000 140000 001151' 000024 010000 001152' 001004 010000 001153' 010000 400000 001154' 220606 000000 001155' 002000 100000 001156' 000000 000010 001157' 347777 777777 001160' 000707 000001 001161' 000020 010000 NO ERRORS DETECTED PROGRAM BREAK IS 001162 9K CORE USED SCNSER - SCANNER SERVICE PAGE 19 SYMBOL TABLE 000443 A 000000 INT AC1 000015 INT AC2 000016 INT AC3 000017 INT ADRCK 001104' EXT ADVBFE 001032' EXT ADVBFF 001122' EXT AL 000001 INT ASC1 000727' ASC2 000733' ASC3 000735' ASSCON 400000 INT ASSPRG 200000 INT B 000014 INT BUFPNT 000012 INT BUFWRD 000013 INT CCHAR 000055' CHREC 000010 CLDS 000312' EXT CLEN 000322' EXT CLOSB 002000 INT CLRBYT 001102' EXT CLSIN 000002 INT CLSOUT 000001 INT COMCNT 001142' EXT CPOPJ 000406' EXT CPOPJ1 000437' EXT CTSER3 000524' CTYINT 000332' INT CTYOU1 000347' CTYOUT 000325' CTYRUB 000346' D 000017 INT DAT 000005 INT DCHAR 000177 DCL 000001 INT DCSA 000300 SPD DCSB 000304 SPD DCW 020000 INT DDB 000006 DDBSRC 000400' 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 PAGE 19-1 SYMBOL TABLE DDTSYM 000036 INT DELET 000752' DELET1 000766' DELET2 000764' 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 000436' EXT DEVPHY 000242' 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 000527' ECHOF 100000 ENTRB 020000 INT FSNCHN 000441' EXT GCH3 001017' GCH3A 001020' GCHAR 000771' GCHAR1 000773' GCHAR3 001001' GCHAR4 001021' GCHAR5 001025' GCHAR7 001023' HPOS 000005 SCNSER - SCANNER SERVICE PAGE 19-2 SYMBOL TABLE HT 001052' I 000010 INT IB 000013 INT IBUFB 200000 INT INITB 400000 INT INJ25 000622' INJ4 000630' INJ5 000644' INJ6 000657' INJ61 000674' INJ6A 000667' INJ7 000677' INJEST 000575' INPB 010000 INT INUS1 000471' INUS2 000501' INUS3 000505' INUSE 000462' 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 000473' EXT JBUF 000005 INT JDAT 000011 INT JERR 002000 INT JIOW 100000 INT JNA 004000 INT JOB 000243' EXT LEAV0 000520' LEAV1 000515' SCNSER - SCANNER SERVICE PAGE 19-3 SYMBOL TABLE LEAVE 000514' LINE 000002 LOOKB 040000 INT MIS 001132' MIS1 001133' MLTTYL 000400' EXT MOD35 000573' MOV3 001125' MOVBUF 001064' MOVMON 001135' MTTYLN 000232' EXT MTW 010000 INT NCERR 040000 NIO 020000 OBUFB 100000 INT OUT 000272' EXT OUTPB 004000 INT PDP 000003 INT PHPOS 000000' PICHN 000100 INT PIOFF 000400 PIOMOD 000727' EXT PION 000200 PJOBN 000472' EXT PLASTC 000002' PROG 000007 INT PSCHAR 000003' PUNIT 001041' EXT PUUOAC 000214' EXT PVPOS 000001' RUN 200000 INT RUNABL 204000 INT SCITAB 000711' SCITL 000010 SCN1 000024' SCN2 000035' SCNCHL 000345' EXT SCNCHN 000350' EXT SCNIN 000411' SCNIN0 000425' SCNIN1 000440' SCNINI 000005' INT SCNINT 000355' INT SCNRET 000517' EXT SCNSAV 000357' EXT SCTAB 000545' SCTABL 000012 SETIOD 001127' EXT SETMB1 000632' SETRUN 001044' EXT SIM35 000533' SIM4 000566' SIMLF 000565' SCNSER - SCANNER SERVICE PAGE 19-4 SYMBOL TABLE SIMRO 000572' SIMVA 000562' SP 002000 SPACE 000557' SPC2 000742' SPC21 000745' SPC4A 000737' SPC7 000747' SPCCR 000721' SPCIN 000701' SPFF 000723' SPOUT 001055' SPVT 000724' STOP1 000650' EXT STTYB1 001105' EXT STTYBF 001111' EXT SYNC 040000 T35 004000 TAC 000001 INT TAC1 000002 INT TCOMM 000364' TCONLN 000507' EXT TEM 000010 INT TOUT 000020 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 000640' EXT TTYBM1 000254' EXT TTYBUF 001112' EXT TTYCOM 000117' INT TTYCTR 001115' EXT TTYDAT 000247' TTYDET 000046' INT TTYDSP 000271' ENT TTYDT1 000052' TTYF0 000240' TTYFND 000244' INT TTYFNU 000243' INT TTYJOB 000130' INT TTYKIL 000041' INT TTYLST 000401' EXT TTYOU0 000303' TTYOU1 000322' TTYOU2 000311' TTYOUT 000301' SCNSER - SCANNER SERVICE PAGE 19-5 SYMBOL TABLE TTYPTR 001141' EXT TTYSAV 001020' EXT TTYSET 000062' INT TTYSR1 000231' TTYSRC 000232' TTYSTR 000252' INT TTYTAB 001136' EXT TTYURC 000056' INT TTYUSE 010000 INT TTYUSR 000057' INT TYP1 000511' TYPE 000507' TYPX 000450' TYPX1 000457' USRB 000100 USRBC 020000 USRMOD 010000 INT UUO 000014 INT UXIT 000230' EXT VPOS 000004 VTFF 001057' WAIT1 000211' EXT WSYNC 000164' EXT 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 11:23:08 File: DSKB1 :SYSCON.LST [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:25 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:2224 File will be deleted after printing SYSCON - UUO HANDLER PAGE 1 8-9-65 00010 XLIST 01930 LIST SYSCON - UUO HANDLER PAGE 7 8-9-65 00010 TITLE SYSCON - UUO HANDLER 00020 SUBTTL 8-9-65 00030 EXTERNAL CLOSE1,ILLINS,IN,JOBAC,JOBADR,JOBDAT 00040 EXTERNAL MTAPE1,OUT,RELEA1,UINBF,UINIT,UOUTBF 00050 EXTERNAL USRJDA,USRSAV,USTATO,USTATS,USTATZ 00060 EXTERNAL ERROR,UUOERR,CLDS,CLEN 00070 EXTERNAL IOIERR,MJOBPD,JOBPDL,WAIT1,USRREL,PUUOAC 00080 EXTERNAL JOBPDL,MJOBPD,USETST SYSCON - UUO HANDLER PAGE 2 8-9-65 00130 , DEC 06 00 EX UUO L PT PRE 06 UUO HANDLER 00140 , 3/10/65 00150 , ALL UUOS DROP THEMSELVE IN REAL LOCATION 40, AND TRAP 00160 , TO 41. THE UUO HANDLER SHUFFLES THE UUO OFF TO THE USERS 00170 , 40,41, IF IT IS NOT A SYSTEM UUO. 00180 , SYSTEM UUOS FALL INTO THREE CLASSES, HANDLED DIFFERENTLY 00190 , (1) SYSTEM FUNCTIONS: LOAD ACS PDP, PROG, AND DISPATCH TO THE 00200 , FUNCTION. 00210 , (2) DEVICE INDEPENDENT I/O UUO: ALSO LOAD ACS DEVDAT AND IOS 00220 , AND GO THE THE SYSTEM FUNCTION. 00230 , (3) DEVICE DEPENDENT I/O UUOS: DO (1) AND (2), THEN DISPATCH 00240 , THROUGH THE TABLE WHOSE ADDRESS IS IN THE RIGHT HALF OF DEVSER(DEVD 00250 , CONTROL MAY ALWAYS BE RETURNED BY EXECUTING A 00260 , JRST UXIT 00270 , WHICH WILL RESTORE THE ACS, ARP BITS, AND RETURN. 00280 , THE UUO HANDLER IS PURE IF THE FOLLOWING RESTRICTIONS ARE OBSERVED. 00290 , RESTRICTIONS: UUOS CANNOT BE CALLED BY INTERRUPT SERVICE ROUTINES. 00300 , MONITOR INTERFACE 00310 , STORAGE: 89 00320 , ROUTINES CALLED: ILLINS, ADRCK, EXCLK, UUOH, SETIOS,UUOUSR 00330 , UUOS CALLED: CALL, INIT, RELEAS, CLOSE, OUTBUF, INBUF 00340 , STATS, STATO, STATZ, OUTPUT, INPUT 00350 , DEVICE DEPENDENT: DEN, DLK, DSO, DSI, DGF 00360 , SYMBOLS SET/USED: 00370 , ACCUMULATORS: POP S/U TAC S/U 00380 , PROG S/U TAC1 S/U 00390 , SUB S 00400 , SYSTEM PARAMETERS: UIO U 00410 , USYS U 00420 , USYSN U 00430 , JOB AREA: JOBAC U JOBDAT U 00440 , JOBPDP U 00450 , SYSTEM ADDRESSES: CLK S/U 00460 , JOBADR U 00470 , USRLEV S/U 00480 , DEVICE DATA BLOCK: DEVSER U 00490 , INTERNAL ADDRESSES: 40 S/U 00500 , UUO0 S/U 00510 , UUSAV S/U SYSCON - UUO HANDLER PAGE 3 8-9-65 00560 INTERNAL UUO0 000000' 000000 000000 00580 UUO0: 0 000001' 250040 000040 00590 EXCH TAC,40 ;SAVE TAC; PICK UP UUO 000002' 202740 000000* 00600 MOVEM 17,USRSAV ;SAVE 17 000003' 603040 077000 00610 TLNE TAC,77000 ;0 UUO IS ILLEGAL 000004' 603040 740000 00620 TLNE TAC,740000 ;UUO FOR SYSTEM? 000005' 254000 000030' 00630 JRST UUOSYS ;YES 000006' 200740 000000* 00640 MOVE 17,JOBADR ;GET JOB AREA ADDRESS 000007' 202057 000040 00650 MOVEM TAC,40(17) ;STORE UUO IN USERS 40 000010' 550057 000041 00660 HRRZ TAC,41(17) ;PICK UP ADR OF USERS JSR 000011' 322040 000030' 00670 JUMPE TAC,UUOSYS ;IF ADDRESS=0,ILLEGAL USER UU 000012' 500040 000000' 00680 HLL TAC,UUO0 ;PICK UP PROCESSOR FLAGS FOR 000013' 607040 010000 00690 TLNN TAC,USRMOD ;WAS UUO FROM USER? 000014' 254000 000030' 00700 JRST UUOSYS ;NO, ILLEGAL NUUO FROM SYSTEM 000015' 201741 000000 00710 MOVEI 17,(TAC) ;17 NOW HAS REL. ADR. OF USER 000016' 317740 000000* 00720 CAMG 17,USRREL ;DONT INCREMENT RETURN IF PC 000017' 541041 000001 00730 HRRI TAC,1(TAC) ;INCREMENT PC 000020' 250040 000000' 00740 EXCH TAC,UUO0 ;SET UP RETURN TO USER, PICK 00750 ;UP USERS FLAGS,PC 000021' 313740 000016* 00760 CAMLE 17,USRREL ;LEGAL MEMORY? 000022' 254000 000025' 00770 JRST .+3 ;NO. DONT STORE PC 000023' 270740 000006* 00780 ADD 17,JOBADR ;MAKE REL. ADR. INTO ABS. ADR 000024' 202057 000000 00790 MOVEM TAC,(17) ;STORE FLAGS AND PC LIKE JSR 000025' 200040 000040 00800 MOVE TAC,40 ;RESTORE TAC 000026' 200740 000002* 00810 MOVE 17,USRSAV ;RESTORE 17 000027' 254120 000000' 00820 JRST 2,@UUO0 ;RETURN TO USER SYSCON - UUO HANDLER PAGE 4 8-9-65 000030' 250040 000040 00870 UUOSYS: EXCH TAC,40 ;RESTORE TA. RESTORE THE UUO 000031' 200740 000000' 00880 MOVE 17,UUO0 ;PICK UP PROCESSOR FLAG 000032' 607740 010000 00890 TLNN 17,USRMOD ;SYSTEM UUO FROM SYSTEM? 000033' 254000 000046' 00900 JRST UUOSY1 ;YES 000034' 200740 000023* 00910 MOVE 17,JOBADR ;NO. PICK UP ADR. OF USER PRO 000035' 202717 000016 00920 MOVEM 16,16(17) ;STORE AC16 IN USER 16 000036' 550700 000017 00930 HRRZ 16,17 ;SET UP BLP POINTER 000037' 251717 000015 00940 BLT 16,15(17) ;MOVE REAL ACS TO USER AREA 000040' 200000 000026* 00950 MOVE 0,USRSAV ;MOVE USER 17 TO USERS AREA 000041' 202017 000017 00960 MOVEM 0,17(17) 000042' 200440 000000* 00980 MOVE JDAT,JOBDAT ;LOAD UP JOB DAT AREA ADDRES 000043' 205140 000000* 00990 MOVSI PDP,MJOBPD ;LOAD UP PUSH DOWN AC AND 000044' 541151 000000* 01000 HRRI PDP,JOBPDL(JDAT) ;MAKE ABSOLUTE PATH 000045' 334340 000017 01010 SKIPA PROG,17 ;PROGRAM BASE ADDRESS 000046' 200740 000040* 01020 UUOSY1: MOVE 17,USRSAV ;RESTORE AC17 IF UUO FROM SYS 000047' 261140 000000' 01030 PUSH PDP,UUO0 ;SAVE RETURN ON PUSH DOWN LIS 000050' 200600 000040 01040 MOVE UUO,40 ;GET THE UUO INTO AC(UUO) 000051' 135100 000250' 01050 LDB TAC1,[POINT 9,UUO,8] ;PICK UP UUO OP COD 000052' 301100 000100 01060 CAIL TAC1,100 ;ILLEGAL INSTRUCTION? 000053' 254000 000000* 01070 JRST ILLINS ;YES 000054' 305100 000040 01080 CAIGE TAC1,40 ;SYSTEM UUO? 000055' 254000 000000* 01090 JRST UUOERR ;NO. ILLEGAL 000056' 135040 000000* 01100 LDB TAC,PUUOAC 000057' 200301 000000* 01110 MOVE DEVDAT,USRJDA(TAC) ;GET DDB 000060' 305100 000060 01120 CAIGE TAC1,100-UUOT2L ;AN IO UUO? 000061' 254000 000070' 01130 JRST UUODSP ;NO 000062' 302100 000070 01140 CAIE TAC1,70 ;CLOSE AND RELEASE ARE ALWAYS LEGAL 000063' 306100 000071 01150 CAIN TAC1,71 000064' 322300 000236' 01160 JUMPE DEVDAT,UXIT 000065' 322300 000000* 01170 JUMPE DEVDAT,IOIERR ;CHANNEL MUST BE ASSIGNED 000066' 200006 000002 01180 MOVE IOS,DEVIOS(DEVDAT) ;GET DATA BLOCK STA 000067' 254002 000015' 01190 JRST UUOT2-77+UUOT2L-1(TAC1) ;DISPATCH 000070' 305100 000042 01210 UUODSP: CAIGE TAC1,40+UUOT1L ;LEGAL SYSTEM UUO? 000071' 254002 000033' 01220 JRST UUOT1-40(TAC1) ;YES. DISPATCH 000072' 254000 000055* 01230 JRST UUOERR SYSCON - UUO HANDLER PAGE 5 8-9-65 000073' 254000 000162' 01270 UUOT1: JRST UCALL ;40 000074' 254000 000000* 01280 JRST UINIT 01290 ;ADD NON IO UUOS HERE 000002 01310 UUOT1L=.-UUOT1 000075' 01330 UUOT2: 01340 ;ADD IO UUOS HERE 000075' 254000 000000* 01350 JRST USETST 000076' 254000 000000* 01360 JRST USTATO 000077' 254000 000000* 01370 JRST USTATS 000100' 254000 000000* 01380 JRST USTATZ 000101' 254000 000000* 01390 JRST UINBF 000102' 254000 000000* 01400 JRST UOUTBF 000103' 254000 000000* 01410 JRST IN 000104' 254000 000000* 01420 JRST OUT 000105' 254000 000000* 01430 JRST CLOSE1 000106' 254000 000000* 01440 JRST RELEA1 000107' 254000 000000* 01450 JRST MTAPE1 000110' 254000 000160' 01460 JRST UDGF 000111' 254000 000156' 01470 JRST UDSI 000112' 254000 000154' 01480 JRST UDSO 000113' 254000 000143' 01490 JRST UDLK 000114' 254000 000131' 01500 JRST UDEN ;77 000020 01510 UUOT2L=.-UUOT2 SYSCON - UUO HANDLER PAGE 6 8-9-65 01550 ,DISPATCH TO SPECIAL ROUTINE 01560 DEFINE DSPT(A) 01570 000115' 200046 000003 01600 UDSP: MOVE TAC,DEVSER(DEVDAT) 000116' 200106 000001 01610 MOVE TAC1,DEVCHR(DEVDAT) 000117' 607100 000020 01620 TLNN TAC1,IORET 000120' 201040 000116' 01630 MOVEI TAC,NRTOSP-4 ;IGNORE THESE CALLS FOR NON- 000121' 263140 000000 01640 POPJ PDP, 000122' 254000 000235' 01650 NRTOSP: JRST CUXIT1 ;SKIP RETURN 000123' 254000 000235' 01660 JRST CUXIT1 ;SKIP RETURN 000124' 265240 000000* 01670 JSP DAT,ERROR ;DUMP0 000125' 265240 000124* 01680 JSP DAT,ERROR ;DUMP1 000126' 254000 000072* 01690 JRST UUOERR ;USETO 000127' 254000 000126* 01700 JRST UUOERR ;USETI 000130' 254000 000127* 01710 JRST UUOERR ;GETF 000131' 260140 000000* 01720 UDEN: PUSHJ PDP,WAIT1 000132' 661000 000002 01730 TLO IOS,IOBEG 000133' 620000 776000 01740 TRZ IOS,776000 000134' 202006 000002 01750 MOVEM IOS,DEVIOS(DEVDAT) 000135' 135040 000056* 01760 LDB TAC,PUUOAC 000136' 661300 020000 01770 TLO DEVDAT,ENTRB 000137' 621300 002000 01780 TLZ DEVDAT,CLOSB 000140' 502301 000057* 01790 HLLM DEVDAT,USRJDA(TAC) 000141' 260140 000115' 01800 PUSHJ PDP,UDSP 000142' 254001 000004 01810 JRST DEN(TAC) 000143' 260140 000131* 01830 UDLK: PUSHJ PDP,WAIT1 000144' 630000 000251' 01840 TDZ IOS,[XWD IOEND,776000] 000145' 202006 000002 01850 MOVEM IOS,DEVIOS(DEVDAT) 000146' 135040 000135* 01860 LDB TAC,PUUOAC 000147' 661300 040000 01870 TLO DEVDAT,LOOKB 000150' 621300 002000 01880 TLZ DEVDAT,CLOSB 000151' 502301 000140* 01890 HLLM DEVDAT,USRJDA(TAC) 000152' 260140 000115' 01900 PUSHJ PDP,UDSP 000153' 254001 000005 01910 JRST DLK(TAC) 000154' 260140 000115' 01930 DSPT(DSO)^UDSO: PUSHJ PDP,UDSP 000155' 254001 000010 JRST DSO(TAC) 000156' 260140 000115' 01950 DSPT(DSI)^UDSI: PUSHJ PDP,UDSP 000157' 254001 000011 JRST DSI(TAC) 000160' 260140 000115' 01970 DSPT(DGF)^UDGF: PUSHJ PDP,UDSP 000161' 254001 000012 JRST DGF(TAC) SYSCON - UUO HANDLER PAGE 7 8-9-65 02020 , 6-CSS-DEC-CALL-PL-PRE2 02030 , H. R. MORSE 64-11-17 02040 , CALLING SEQUENCE 02050 , CALL 0,[SIXBIT/NAME/] 02060 , WHERE NAME IS THE NAME OF A SYSTEM ROUTINE. 02070 , IF NO SYSTEM ROUTINE WITH THE SPECIFIED NAME IF FOUND, THIS ROUTINE 02080 , EXISTS TO ERROR. 02090 , MONITOR INTERFACE 02100 , ROUTINES CALLED: ERROR, HASH, SYSTEM ROUTINES DEFINED BY 02110 , USE OF UCALIN. 02120 , SYMBOLS SET/USED: 02130 , ACCUMULATORS: DAT S/U PROG U 02140 , PDP U UUO S/U 02150 ;CONTENTS OF USER AC PLACED IN AC TAC 000162' 661600 000011 02170 UCALL: TLO UUO,JDAT ;RELATIVIZE UUO ADDRESS 000163' 200260 000014 02180 MOVE DAT,@UUO; DAT:=NAME OF SYSTEM ROUTINE C 000164' 205100 777760 02190 MOVSI TAC1,-UCLLEN 000165' 312242 000174' 02200 CAME DAT,UCLTAB(TAC1); SEARCH SYSTEM TOUTINE NAME TA 000166' 253100 000165' 02210 AOBJN TAC1,.-1 000167' 135240 000146* 02220 LDB DAT,PUUOAC ;USER UUO AC FIELD 000170' 505240 000011 02230 HRLI DAT,JDAT 000171' 200060 000005 02240 MOVE TAC,@DAT ;PICK UP CONTENTS OF USER AC 000172' 321122 000214' 02250 JUMPL TAC1,@UCLJMP(TAC1) 000173' 254000 000130* 02260 JRST UUOERR 02280 DEFINE NAMES 02290 < X DDTIN,DDTIN 02300 X DDTOUT,DDTOUT 02310 X DDTGT,DDTGT 02320 X DDTRL,DDTRL 02330 X SETDDT,SETDDT 02340 X DEVCHR,DVCHR 02350 X GETCHR,DVCHR 02360 X WAIT,WAIT 02370 X RESET,RESET 02380 X EXIT,EXIT 02390 X LDRBLT,LDRBLT 02400 X UTPCLR,UTPCLR 02410 X DATE,DATE 02420 X SETPOV,SETPOV 02430 X SWITCH,SWITCH 02440 X TIMER,TIMER 02450 > 02460 DEFINE X (A,B) 02470 < SIXBIT /A/ 02480 > 000174' 444464 515600 02490 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 PAGE 7-1 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 02500 UCLLEN=.-UCLTAB 02520 DEFINE X(A,B) 02530 < JRST B 02540 EXTERNAL B 02550 > 000214' 254000 000000* 02560 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 PAGE 8 8-9-65 02600 , DEV 06 00 EX COM L PT PRE 02 UXIT 02610 , H. R. MORSE 64-12-26 02620 , CALLING SEQUENCE 02630 , ANY TRANSFER OF CONTROL TO UXIT 02640 , EXITS THIS UUO CALL. 02650 , MONITOR INTERFACE 02660 , SYMBOLS SET/USED: 02670 , ACCUMULATORS: MAY RESTORE ALL ACCUMULATORS 02680 , JDAT U 02690 , PDP U 02700 , 17 S/U 02710 , JOB AREA: JOBAC U 02720 , SYSTEM ADDRESSES: USRUXT U 02730 , USRLEV S/U SYSCON - UUO HANDLER PAGE 9 8-9-65 02780 INTERN UXIT,CUXIT1,CUXIT2 000234' 350003 000000 02800 CUXIT2: AOS (PDP) 000235' 350003 000000 02810 CUXIT1: AOS (PDP) 000236' 262140 000046* 02820 UXIT: POP PDP,USRSAV ;RESTORE UUO EXIT ADDRESS FRO 000237' 250040 000236* 02830 EXCH TAC,USRSAV 000240' 607040 010000 02840 TLNN TAC,USRMOD ;WAS ENTRY FROM USER MODE? 000241' 254000 000246' 02850 JRST UXIT2 000242' 202040 000237* 02860 MOVEM TAC,USRSAV ;SET UP RETURN 000243' 205751 000000* 02870 MOVSI 17, JOBAC(JDAT) ;RESTORE ACCUMULATO 000244' 251740 000017 02880 BLT 17,17 000245' 254120 000242* 02890 UXIT1: JRST 2,@USRSAV ;RETURN TO USERS PROGRAM 000246' 250040 000245* 02910 UXIT2: EXCH TAC,USRSAV 000247' 254120 000246* 02920 JRST 2,@USRSAV 02940 END, 000250' 331100 000014 000251' 000040 776000 NO ERRORS DETECTED PROGRAM BREAK IS 000252 9K CORE USED SYSCON - UUO HANDLER PAGE 10 SYMBOL TABLE 000264 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 PAGE 10-1 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 JIOW 100000 INT SYSCON - UUO HANDLER PAGE 10-2 SYMBOL TABLE 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 USTATZ 000100' EXT UTPCLR 000227' EXT SYSCON - UUO HANDLER PAGE 10-3 SYMBOL TABLE 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 11:23:08 File: DSKB1 :SYSCSS.LST [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:25 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:2209 File will be deleted after printing SYSCSS - COMMON SYSTEM SUBROUTINES PAGE 1 8-9-65 00010 XLIST 01930 LIST SYSCSS - COMMON SYSTEM SUBROUTINES PAGE 7 8-9-65 00010 TITLE SYSCSS - COMMON SYSTEM SUBROUTINES 00020 SUBTTL 8-9-65 00030 EXTERNAL UXIT,ERROR,USRDDT,USRPOV,PUUOAC,USRREL 00050 ;RETURN THE DATE TO THE USER 00080 INTERNAL DATE,THSDAT 000000' 200240 000002' 00100 DATE: MOVE DAT, THSDAT 000001' 254000 000005' 00110 JRST STOAC 000002' 000000 000000 00130 THSDAT: 0 ;CONTAINS THE DATE 00150 ;RETURN TIME SYSTEM HAS RUN IN 60THS OF A SECOND 00170 INTERNAL TIMER 00180 EXTERNAL TIME 000003' 334240 000000* 00200 TIMER: SKIPA DAT, TIME ;FALL INTO STOAC 00220 ;RETURN DATA SWITCHES 00240 INTERNAL SWITCH 000004' 700040 000005 00260 SWITCH: DATAI DAT 00280 ;STORE DAT IN USER AC 00300 INTERNAL STOAC 000005' 135040 000000* 00320 STOAC: LDB TAC, PUUOAC 000006' 505040 000007 00330 HRLI TAC, PROG 000007' 202260 000001 00340 MOVEM DAT,@TAC 000010' 254000 000000* 00350 JRST UXIT 00370 ;RETURN DEVICE CHARACTERISTICS 00390 INTERNAL DVCHR 00400 EXTERNAL JOB,DEVSRC,PJOBN 000011' 200200 000000* 00420 DVCHR: MOVE ITEM,JOB 000012' 260140 000000* 00430 PUSHJ PDP,DEVSRC ;SEARCH FOR DEVICE 000013' 334240 000034' 00440 SKIPA DAT,[0] ;NOT A DEVICE 000014' 334246 000004 00450 SKIPA DAT,DEVMOD(DEVDAT) 000015' 254000 000005' 00460 JRST STOAC 000016' 135040 000000* 00470 LDB TAC,PJOBN ;GET JOB NUMBER 000017' 312040 000011* 00480 CAME TAC,JOB ;DOES USER ALREADY HAVE THIS DEVICE? 000020' 606240 600000 00490 TRNN DAT,ASSCON+ASSPRG ;NO 000021' 661240 000040 00500 TLO DAT,DVAVAL ;NO, BUT HE CAN GET IT 000022' 254000 000005' 00510 JRST STOAC SYSCSS - COMMON SYSTEM SUBROUTINES PAGE 2 8-9-65 00550 , CALLING SEQUENCE 00560 , PUSHJ PDP,HASH 00570 , EXIT;L ALWAYS RETURNS HERE 00580 , COMPUTES XOR HASH TYPE INDEX FROM NAME (SIXBIT CODE) IN AC DAT 00590 , 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 IIISW GIVES III FEATURES OPHSH GIVES HASH SEARCH OF OPCODES * MACRO V.10 PAGE 2 DEFAULT ASSEMBLY SWITCH SETTINGS SUBTTL DEFAULT ASSEMBLY SWITCH SETTINGS IFNDEF RENTSW, IFNDEF LNSSW, IFN LNSSW, IFNDEF CCLSW, 000001 IFN CCLSW, IFNDEF UNIVR, IFNDEF FTDISK, IFNDEF IIISW, IFNDEF OPHSH, MACRO V.10 PAGE 3 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.10 PAGE 4 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.10 PAGE 5 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.10 PAGE 6 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.10 PAGE 7 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.10 PAGE 9 RUN UUO 000066' 550000 013420' 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.10 PAGE 10 START ASSEMBLING SUBTTL START ASSEMBLING 000077' 260740 003267' ASSEMB: PUSHJ PP,INZ ;INITIALIZE FOR PASS 000100' 200000 014057' MOVE [ASCII /.MAIN/] 000101' 202000 013230' MOVEM TBUF 000102' 201000 013057' MOVEI SBUF 000103' 542000 013100' HRRM SUBTTX 000104' 260740 001406' ASSEM1: PUSHJ PP,CHARAC ;TEST FOR FORM FEED 000105' 335000 013002' SKIPGE LIMBO ;CRLF FLAG? 000106' 254000 000104' JRST ASSEM1 ;YES ,IGNORE LF 000107' 306340 000014 CAIN C,14 000110' 332000 012544' SKIPE SEQNO 000111' 254000 000115' JRST ASSEM2 000112' 260740 010410' PUSHJ PP,OUTFF1 000113' 260740 001765' PUSHJ PP,OUTLI 000114' 254000 000104' JRST ASSEM1 000115' 350000 013377' 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 000230' PUSHJ PP,STOUT ;NO, POLISH OFF LINE 000124' 254000 000104' JRST ASSEM1 MACRO V.10 PAGE 11 STATEMENT PROCESSOR SUBTTL STATEMENT PROCESSOR 000125' 621640 120000 STMNT: TLZ FR,INDSW!FSNSW 000126' 625600 400000 TLZA IO,FLDSW 000127' 260740 000244' STMNT1: PUSHJ PP,LABEL 000130' 260740 000325' STMNT2: PUSHJ PP,ATOM ;GET THE FIRST ATOM 000131' 306340 000035 CAIN C,35 ;"="? 000132' 254000 004023' 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 013321' 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 012173' PUSHJ PP,MSRCH ;SEARCH FOR MACRO/OPDEF/SYN 000151' 254000 000157' JRST STMNT3 ;NOT FOUND, TRY OP CODE 000152' 135140 014060' LDB SDEL,[POINT 3,ARG,5] 000153' 322140 003311' JUMPE SDEL,ERRAX ;ERROR IF NO FLAGS 000154' 362140 004346' SOJE SDEL,OPD1 ;OPDEF IF 1 000155' 362140 005511' SOJE SDEL,CALLM ;MACRO IF 2 000156' 254000 000161' JRST STMNT4 ;SYNONYM, PROCESS WITH OP-CODES 000157' 260740 010470' 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 013321' 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 012210' 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 001056' STMNT9: PUSHJ PP,EVALHA ;EVALUATE EXPRESSION 000202' 603640 100000 TLNE FR,FSNSW ;FIELD SEEN? 000203' 254000 002665' JRST STOW ;YES,STOW THE CODE AND EXIT 000204' 302340 000075 CAIE C,"]"-40 ;CLOSING LITERAL? MACRO V.10 PAGE 11-1 STATEMENT PROCESSOR 000205' 660600 200000 TRO ER,ERRQ ;NO, GIVE "Q" ERROR 000206' 263740 000000 POPJ PP, ;EXIT MACRO V.10 PAGE 12 STATEMENT PROCESSOR STMNT8:repeat 0, 000207' 205240 010000 STMN8D: MOVSI ARG,OPDF ;SET FLAG FOR OPDEF 000210' 260740 012366' STMN8B: PUSHJ PP,INSERT ;PUT OPDEF IN TABLE 000211' 254000 004350' JRST OPD ;AND TREAT AS OPDEF 000212' 400300 000000 STMN8C: SETZ V, ;START WITH ZERO 000213' 301300 000016 CAIL V,TTCLTH ;END OF TABLE? 000214' 254000 000222' JRST STMN8A ;YES, ERROR 000215' 312006 012155' CAME AC0,TTCTBL(V) ;MATCH? 000216' 344300 000213' AOJA V,.-3 ;NO, KEEP TRYING 000217' 242300 000005 LSH V,5 ;PUT IN AC FIELD (RIGHT HALF) 000220' 515306 051000 HRLZI V,<(TTCALL)>(V) ;PUT UUO IN LEFT HALF 000221' 254000 000207' JRST STMN8D ;SET OPDEF FLAG 000222' 403300 000011 STMN8A: SETZB V,RC ;CLEAR VALUE AND RELOCATION 000223' 660600 000200 TRO ER,ERRO ;FLAG AS UNDEFINED OP-CODE 000224' 321640 004350' JUMP1 OPD ;TREAT AS STANDARD OP ON PASS1 000225' 205240 013000 MOVSI ARG,OPDF!UNDF!EXTF ;SET A FEW FLAGS 000226' 254000 000210' JRST STMN8B ;TO FORCE OUT A MESSAGE ;STATEMENT OUT PASSES REMAINDER OF LINE (CMNT) ;UNTIL A LINE TERMINATOR IS SEEN. 000227' 665600 000204 STOUTS: TLOA IO,IOENDL!IORPTC 000230' 661600 000004 STOUT: TLO IO,IORPTC 000231' 260740 004452' PUSHJ PP,BYPAS1 000232' 306340 000014 CAIN C,14 ;COMMA? 000233' 331000 013104' SKIPL STPX ;YES, ERROR IF CODE STORED 000234' 306340 000033 CAIN C,EOL 000235' 665600 000004 TLOA IO,IORPTC 000236' 660600 200000 TRO ER,ERRQ 000237' 260740 001406' STOUT1: PUSHJ PP,CHARAC 000240' 307340 000015 CAIG C,CR 000241' 307340 000011 CAIG C,HT 000242' 254000 000237' JRST STOUT1 000243' 254000 001547' JRST OUTLIN ;OUTPUT THE LINE (BIN AND LST) MACRO V.10 PAGE 13 LABEL PROCESSOR SUBTTL LABEL PROCESSOR 000244' 321600 000310' LABEL: JUMPAD LABEL4 ;COMPARE IF NON-SYMBOLIC 000245' 322000 000312' JUMPE AC0,LABEL5 ;ERROR IF BLANK 000246' 661600 000040 TLO IO,DEFCRS ;THIS IS A DEFINITION 000247' 260740 012210' PUSHJ PP,SSRCH ;SEARCH FOR OPERAND 000250' 205240 602000 MOVSI ARG,SYMF!UNDF!TAGF ;NOT FOUND 000251' 607240 001000 TLNN ARG,EXTF ;OPERAND FOUND (SKIP EXIT) 000252' 254000 000257' JRST LABEL0 000253' 321640 000304' JUMP1 LABEL3 ;ERROR ON PASS1 000254' 607240 002000 TLNN ARG,UNDF ;UNDEFINED ON PASS1 000255' 254000 000304' JRST LABEL3 ;NO, FLAG ERROR 000256' 621240 005000 TLZ ARG,EXTF!PNTF ;TURN OFF EXT FLAG NOW 000257' 627240 002100 LABEL0: TLZN ARG,UNDF!VARF ;WAS IT PREVIOUSLY DEFINED? 000260' 254000 000301' JRST LABEL2 ;YES, CHECK EQUALITY 000261' 200300 013325' MOVE V,LOCA ;WFW 000262' 200440 013332' MOVE RC,MODA 000263' 661240 200000 TLO ARG,TAGF 000264' 260740 006335' PUSHJ PP,PEEK ;GET NEXT CHAR. 000265' 302340 000072 CAIE C,":" ;SPECIAL CHECK FOR :: 000266' 254000 000272' JRST LABEL1 ;NO MATCH 000267' 661240 000400 TLO ARG,INTF ;MAKE IT INTERNAL 000270' 260740 001354' PUSHJ PP,GETCHR ;PROCESS NEXT CHAR. 000271' 260740 006335' PUSHJ PP,PEEK ;PREVIEW NEXT CHAR. 000272' 302340 000041 LABEL1: CAIE C,"!" ;HALF-KILL SIGN 000273' 254000 000276' JRST LABEL6 ;NO 000274' 661240 100000 TLO ARG,NOOUTF ;YES, SUPPRESS IT 000275' 260740 001354' PUSHJ PP,GETCHR ;AND GET RID OF IT 000276' 202000 012541' LABEL6: MOVEM AC0,TAG ;SAVE FOR PASS 1 ERRORS 000277' 513000 013377' HLLZS TAGINC ;ZERO INCREMENT 000300' 254000 012366' JRST INSERT ;INSERT/UPDATE AND EXIT 000301' 526300 013324' LABEL2: HRLOM V,LOCBLK ;SAVE LIST LOCATION 000302' 316300 013325' CAMN V,LOCA ;DOES IT COMPARE WITH PREVIOUS? WFW 000303' 312440 013332' CAME RC,MODA 000304' 665240 000020 LABEL3: TLOA ARG,MDFF ;NO, FLAG MULTIPLY DEFINED AND SKIP 000305' 254000 000314' JRST LABEL7 ;YES, GET RID OF EXTRA CHARS. 000306' 660600 000020 TRO ER,ERRM ;FLAG MULTIPLY DEFINED ERROR 000307' 254000 012467' JRST UPDATE ;UPDATE AND EXIT 000310' 316000 013325' LABEL4: CAMN AC0,LOCA ;DO THEY COMPARE? 000311' 312440 013332' CAME RC,MODA 000312' 660600 000100 LABEL5: TRO ER,ERRP ;NO, FLAG PHASE ERROR 000313' 263740 000000 POPJ PP, 000314' 332000 013321' LABEL7: SKIPE LITLVL ;LABEL IN A LITERAL? 000315' 202000 013322' MOVEM AC0,LITLBL ;YES, SAVE LABEL NAME FOR LATER 000316' 260740 006335' PUSHJ PP,PEEK ;INSPECT A CHAR. 000317' 306340 000072 CAIN C,":" ;COLON? 000320' 260740 001354' PUSHJ PP,GETCHR ;YES, DISPOSE OF IT 000321' 260740 006335' PUSHJ PP,PEEK ;EXAMINE ONE MORE CHAR. 000322' 306340 000041 CAIN C,"!" ;EXCLAMATION? 000323' 254000 001354' JRST GETCHR ;YES, INDEED MACRO V.10 PAGE 14 LABEL PROCESSOR 000324' 263740 000000 POPJ PP, MACRO V.10 PAGE 15 ATOM PROCESSOR SUBTTL ATOM PROCESSOR 000325' 260740 000354' ATOM: PUSHJ PP,CELL ;GET FIRST CELL 000326' 603600 020000 TLNE IO,NUMSW ;IF NON-NUMERIC 000327' 302340 000042 ATOM1: CAIE C,42 ;OR NOT A BINARY SHIFT, 000330' 263740 000000 POPJ PP, ;EXIT 000331' 261740 000000 PUSH PP,AC0 ;STACK REGISTERS, ITS A BINARY SHIFT 000332' 261740 000001 PUSH PP,AC1 000333' 261740 000011 PUSH PP,RC 000334' 261740 000015 PUSH PP,RX 000335' 541640 000012 HRRI RX,^D10 ;COMPUTE SHIFT RADIX 10 000336' 260740 000353' PUSHJ PP,CELLSF ;GET SHIFT 000337' 200240 000011 MOVE ARG,RC ;SAVE RELOCATION 000340' 262740 000015 POP PP,RX ;RESTORE REGISTERS 000341' 262740 000011 POP PP,RC 000342' 262740 000001 POP PP,AC1 000343' 210200 000000 MOVN SX,AC0 ;USE NEGATIVE OF SHIFT 000344' 262740 000000 POP PP,AC0 000345' 326240 000432' JUMPN ARG,NUMER2 ;IF NOT ABSOLUTE 000346' 607600 020000 TLNN IO,NUMSW ;AND NUMERIC, 000347' 254000 000432' JRST NUMER2 ;FLAG ERROR 000350' 246004 000043 LSHC AC0,^D35(SX) 000351' 242444 000043 LSH RC,^D35(SX) 000352' 254000 000327' JRST ATOM1 ;TEST FOR ANOTHER MACRO V.10 PAGE 16 ATOM PROCESSOR 000353' 661600 400000 CELLSF: TLO IO,FLDSW 000354' 403000 000011 CELL: SETZB AC0,RC ;CLEAR RESULT AND RELOCATION 000355' 403040 000002 SETZB AC1,AC2 ;CLEAR WORK REGISTERS 000356' 202740 013342' MOVEM PP,PPTEMP ;SAVE PUSHDOWN POINTER 000357' 621600 020000 TLZ IO,NUMSW 000360' 625640 040240 TLZA FR,NEGSW!DCFSW!RADXSW 000361' 661600 400000 CELL1: TLO IO,FLDSW 000362' 260740 004452' PUSHJ PP,BYPASS 000363' 135300 014061' LDB V,[POINT 4,CSTAT(C),14] ;GET CODE 000364' 256006 000365' XCT .+1(V) ;EXECUTE, INDEX VIA BITS 11,12,13,14 OF CSTAT TABLE 000365' 254000 000361' JRST CELL1 ;0; BLANK, (TAB OR "+") 000366' 254000 000400' JRST LETTER ;1; LETTER ] $ % ( ) , ; > 000367' 641640 000200 TLC FR,NEGSW ;2; "-" 000370' 661640 020000 TLO FR,INDSW ;3; "@" 000371' 254000 000710' JRST NUM1 ;4; NUMERIC 0 - 9 000372' 254000 000653' JRST ANGLB ;5; "<" 000373' 254000 000550' JRST SQBRK ;6; "[" 000374' 254000 000447' JRST QUOTES ;7; ""","'" 000375' 254000 000514' JRST QUAL ;10; "^" 000376' 254000 000671' JRST PERIOD ;11; "." 000377' 664600 200000 TROA ER,ERRQ ;12; ERROR, FLAG AND TREAT AS DELIMITER ;12; ! # & * / : = ? \ _ MACRO V.10 PAGE 17 ATOM PROCESSOR 000400' 665100 440600 LETTER: TLOA AC2,(POINT 6,AC0,) ;SET BYTE POINTER 000401' 260740 001354' LETTE1: PUSHJ PP,GETCHR ;GET CHARACTER 000402' 607400 000006 TLNN CS,6 ;ALPHA-NUMERIC? 000403' 254000 000407' JRST LETTE3 ;NO,TEST FOR VARIABLE 000404' 603100 770000 TLNE AC2,770000 ;STORE ONLY SIX BYTES 000405' 136340 000002 LETTE2: IDPB C,AC2 ;RETURN FROM PERIOD 000406' 254000 000401' JRST LETTE1 000407' 302340 000003 LETTE3: CAIE C,03 ;"#"? 000410' 263740 000000 POPJ PP, 000411' 322000 000446' JUMPE AC0,POPOUT ;TEST FOR NULL 000412' 260740 006335' PUSHJ PP,PEEK ;PEEK AT NEXT CHAR. 000413' 306340 000043 CAIN C,"#" ;IS IT 2ND #? 000414' 254000 000426' JRST LETTE4 ;YES, THEN IT'S AN EXTERN 000415' 661600 000040 TLO IO,DEFCRS 000416' 260740 012210' PUSHJ PP,SSRCH ;YES, SEARCH FOR SYMBOL (OPERAND) 000417' 205240 402000 MOVSI ARG,SYMF!UNDF ;NOT FOUND, FLAGAS UNDEFINED SYM. 000420' 607240 002000 TLNN ARG,UNDF ;UNDEFINED? 000421' 254000 001354' JRST GETCHR ;NO, GET NEXT CHAR AND RETURN 000422' 661240 000100 TLO ARG,VARF ;YES, FLAG AS A VARIABLE 000423' 660600 002000 TRO ER,ERRU ;SET UNDEFINED ERROR FLAG 000424' 260740 012365' PUSHJ PP,INSERZ ;INSERT IT WITH A ZERO VALUE 000425' 254000 000433' JRST GETDEL 000426' 260740 001354' LETTE4: PUSHJ PP,GETCHR ;AND SCAN PAST IT 000427' 260740 001354' PUSHJ PP,GETCHR ;GET RID OF # 000430' 254000 003717' JRST EXTER1 ;PUT IN SYMBOL TABLE 000431' 403000 000011 NUMER1: SETZB AC0,RC ;RETURN ZERO 000432' 660600 000400 NUMER2: TRO ER,ERRN ;FLAG ERROR 000433' 260740 004452' GETDEL: PUSHJ PP,BYPASS 000434' 322340 000433' GETDE1: JUMPE C,.-1 000435' 201040 000000 MOVEI AC1,0 000436' 661600 420000 GETDE3: TLO IO,NUMSW!FLDSW ;FLAG NUMERIC 000437' 607640 000200 TLNN FR,NEGSW ;IS ATOM NEGATIVE? 000440' 263740 000000 POPJ PP, ;NO, EXIT 000441' 322040 000444' JUMPE AC1,GETDE2 000442' 213000 000001 MOVNS AC1 000443' 654000 014062' TDCA AC0,[-1] 000444' 213000 000000 GETDE2: MOVNS AC0 ;YES, NEGATE VALUE 000445' 213000 000011 MOVNS RC ;AND RELOCATION 000446' 263740 000000 POPOUT: POPJ PP, ;EXIT MACRO V.10 PAGE 18 ATOM PROCESSOR 000447' 302340 000007 QUOTES: CAIE C,"'"-40 ;IS IT "'" 000450' 254000 000456' JRST QUOTE ;NO MUST BE """ 000451' 254000 000500' JRST SQUOTE ;YES 000452' 603000 376000 QUOTE0: TLNE AC0,376000 ;5 CHARACTERS STORED ALREADY? 000453' 660600 200000 TRO ER,ERRQ ;YES, GIVE WARNING 000454' 240000 000007 ASH AC0,7 000455' 434000 000007 IOR AC0,C 000456' 260740 001406' QUOTE: PUSHJ PP,CHARAC ;GET 7-BIT ASCII 000457' 307340 000015 CAIG C,15 ;TEST FOR LF, VT, FF OR CR 000460' 305340 000012 CAIGE C,12 000461' 254000 000463' JRST .+2 ;NO, SO ALL IS WELL 000462' 254000 000472' JRST QUOTE2 ;ESCAPE WITH Q ERROR 000463' 302340 000042 CAIE C,42 000464' 254000 000452' JRST QUOTE0 000465' 260740 006335' PUSHJ PP,PEEK ;LOOK AT NEXT CHAR. 000466' 302340 000042 CAIE C,42 000467' 254000 000473' JRST QUOTE1 ;RESTORE REPEAT LEVEL AND QUIT 000470' 260740 001406' PUSHJ PP,CHARAC ;GET NEXT CHAR. 000471' 254000 000452' JRST QUOTE0 ;USE IT 000472' 660600 200000 QUOTE2: TRO ER,ERRQ ;SET Q ERROR 000473' 254000 000433' QUOTE1: JRST GETDEL 000474' 603000 770000 SQUOT0: TLNE AC0,770000 ;SIX CHARS. STORED ALREADY ? 000475' 660600 200000 TRO ER,ERRQ ;YES 000476' 242000 000006 LSH AC0,6 000477' 435007 777740 IORI AC0,-40(C) ;OR IN SIXBIT CHAR. 000500' 260740 001406' SQUOTE: PUSHJ PP,CHARAC 000501' 307340 000015 CAIG C,CR 000502' 305340 000012 CAIGE C,LF 000503' 254000 000505' JRST .+2 000504' 254000 000473' JRST QUOTE1 000505' 302340 000047 CAIE C,"'" 000506' 254000 000474' JRST SQUOT0 000507' 260740 006335' PUSHJ PP,PEEK 000510' 302340 000047 CAIE C,"'" 000511' 254000 000473' JRST QUOTE1 000512' 260740 001406' PUSHJ PP,CHARAC 000513' 254000 000474' JRST SQUOT0 MACRO V.10 PAGE 19 ATOM PROCESSOR 000514' 260740 004452' QUAL: PUSHJ PP,BYPAS1 ;SKIP BLANKS, GET NEXT CHARACTER 000515' 306340 000042 CAIN C,42 ;"B"? 000516' 254000 000531' JRST QUAL2 ;YES, RADIX=D2 000517' 306340 000057 CAIN C,57 ;"O"? 000520' 254000 000530' JRST QUAL8 ;YES, RADIX=D8 000521' 306340 000046 CAIN C,46 ;"F"? 000522' 254000 000704' JRST NUMDF ;YES, PROCESS DECIMAL FRACTION 000523' 306340 000054 CAIN C,54 ;"L"? 000524' 254000 000541' JRST QUALL ;YES 000525' 302340 000044 CAIE C,44 ;"D"? 000526' 254000 000431' JRST NUMER1 ;NO, FLAG NUMERIC ERROR 000527' 271100 000002 ADDI AC2,2 000530' 271100 000006 QUAL8: ADDI AC2,6 000531' 271100 000002 QUAL2: ADDI AC2,2 000532' 261740 000015 PUSH PP,RX 000533' 540640 000002 HRR RX,AC2 000534' 260740 000353' PUSHJ PP,CELLSF 000535' 262740 000015 QUAL2A: POP PP,RX 000536' 607600 020000 TLNN IO,NUMSW 000537' 254000 000431' JRST NUMER1 000540' 254000 000434' JRST GETDE1 000541' 261740 000015 QUALL: PUSH PP,FR 000542' 260740 000353' PUSHJ PP,CELLSF 000543' 200100 000000 MOVE AC2,AC0 000544' 201000 000044 MOVEI AC0,^D36 000545' 322100 000535' JUMPE AC2,QUAL2A 000546' 242100 777777 LSH AC2,-1 000547' 364000 000545' SOJA AC0,.-2 MACRO V.10 PAGE 20 LITERAL PROCESSOR SUBTTL LITERAL PROCESSOR 000550' 261740 000015 SQBRK: PUSH PP,FR 000551' 261740 013270' PUSH PP,EXTPNT ;ALLOW EXTERN TO PRECEDE LIT IN XWD 000552' 402000 013270' SETZM EXTPNT 000553' 332000 013321' SKIPE LITLVL ;SAVE SEQNO AND PAGE IF NOT IN LIT ALREADY 000554' 254000 000561' JRST SQB5 000555' 200340 013415' MOVE C,SEQNO2 000556' 202340 013304' MOVEM C,LITSEQ 000557' 200340 013414' MOVE C,PAGENO 000560' 202340 013303' MOVEM C,LITPG 000561' 265100 002723' SQB5: JSP AC2,SVSTOW 000562' 260740 000125' SQB3: PUSHJ PP,STMNT 000563' 306340 000075 CAIN C,75 ;CHECK FOR ] 000564' 254000 000620' JRST SQB1 000565' 661600 000004 TLO IO,IORPTC 000566' 603640 200000 TLNE FR,MWLFLG ;CALL IT ] IF NOT MULTI-WORD FLAG 000567' 254000 000621' JRST SQB2 ;BUT REPEAT LAST CHARACTER 000570' 260740 004452' PUSHJ PP,BYPAS1 000571' 306340 000033 CAIN C,EOL 000572' 665600 000004 TLOA IO,IORPTC 000573' 660600 200000 TRO ER,ERRQ 000574' 260740 001406' SQB4: PUSHJ PP,CHARAC 000575' 306340 000073 CAIN C,";" ;COMMENT? 000576' 254000 000613' JRST SQB6 ;YES, IGNORE SQUARE BRACKETS 000577' 306340 000135 CAIN C,"]" ;LOOK FOR TERMINAL SQB 000600' 606600 777760 TRNN ER,ERRORS ;IN CASE OF ERROR IN LITERAL 000601' 254000 000603' JRST .+2 ;NO ALL IS WELL 000602' 254000 000620' JRST SQB1 ;FINISH THE LITERAL NOW!! 000603' 307340 000015 CAIG C,CR ;LOOK FOR END OF LINE 000604' 306340 000011 CAIN C,HT 000605' 254000 000574' JRST SQB4 000606' 260740 002011' SQB4A: PUSHJ PP,OUTIML ;DUMP 000607' 260740 001406' PUSHJ PP,CHARAC ;GET ANOTHER CHAR. 000610' 331000 013002' SKIPL LIMBO ;CRLF FLAG 000611' 661600 000004 TLO IO,IORPTC ;NO REPEAT 000612' 254000 000562' JRST SQB3 000613' 260740 001406' SQB6: PUSHJ PP,CHARAC ;GET A CHARACTER 000614' 307340 000015 CAIG C,CR 000615' 306340 000011 CAIN C,HT ;LOOK FOR END OF LINE CHAR. 000616' 254000 000613' JRST SQB6 ;NOT YET 000617' 254000 000606' JRST SQB4A ;GOT IT 000620' 621600 000004 SQB1: TLZ IO,IORPTC 000621' 260740 001264' SQB2: PUSHJ PP,STOLIT 000622' 265100 002731' JSP AC2,GTSTOW 000623' 332000 013322' SKIPE LITLBL ;NEED TO FIXUP A LABEL? 000624' 260740 000632' PUSHJ PP,RELBLE ;YES, USE LOC OF LITERAL 000625' 262740 013270' POP PP,EXTPNT 000626' 262740 000015 POP PP,FR 000627' 332000 013321' SKIPE LITLVL ;WERE WE NESTED? 000630' 321640 000432' JUMP1 NUMER2 ;YES, FORCE ERROR IF PASS 1 MACRO V.10 PAGE 20-1 LITERAL PROCESSOR 000631' 254000 000433' JRST GETDEL 000632' 261740 000000 RELBLE: PUSH PP,AC0 ;SAVE LOCATION COUNTER 000633' 261740 000011 PUSH PP,RC ;AND RELOCATION 000634' 200000 013322' MOVE AC0,LITLBL ;SYMBOL WE NEED 000635' 402000 013322' SETZM LITLBL ;ZERO INDICATOR 000636' 260740 012210' PUSHJ PP,SSRCH ;SEARCH FOR OPERAND 000637' 254000 000650' JRST RELBL1 ;SHOULD NEVER HAPPEN 000640' 607240 200000 TLNN ARG,TAGF ;IT BETTER BE A LABEL 000641' 254000 000650' JRST RELBL1 ;IT WASN'T , GIVE UP BEFORE SOME HARM IS DONE 000642' 621240 007000 TLZ ARG,UNDF!EXTF!PNTF ;CLEAR FLAGS NOW 000643' 262740 000011 POP PP,RC ;GET LITERAL RELOCATION 000644' 200317 000000 MOVE V,(PP) ;GET VALUE (LOC COUNTER) 000645' 260740 012467' PUSHJ PP,UPDATE ;UPDATE VALUE 000646' 262740 000000 POP PP,AC0 ;RESTORE LITERAL COUNT 000647' 263740 000000 POPJ PP, ;RETURN 000650' 262740 000011 RELBL1: POP PP,RC ;RESTORE RC 000651' 262740 000000 POP PP,AC0 ;AND AC0 000652' 263740 000000 POPJ PP, ;JUST RETURN MACRO V.10 PAGE 21 LITERAL PROCESSOR 000653' 261740 000015 ANGLB: PUSH PP,FR 000654' 621640 020000 TLZ FR,INDSW 000655' 260740 000325' PUSHJ PP,ATOM 000656' 607600 020000 TLNN IO,NUMSW 000657' 302340 000035 CAIE C,35 000660' 254000 000664' JRST ANGLB1 000661' 260740 004037' PUSHJ PP,ASSIG1 000662' 200000 000006 MOVE AC0,V 000663' 254000 000665' JRST ANGLB2 000664' 260740 001056' ANGLB1: PUSHJ PP,EVALHA 000665' 262740 000015 ANGLB2: POP PP,FR 000666' 302340 000036 CAIE C,36 000667' 660600 000400 TRO ER,ERRN 000670' 254000 000433' JRST GETDEL 000671' 260740 001354' PERIOD: PUSHJ PP,GETCHR ;LOOK AT NEXT CHARACTER 000672' 607400 000002 TLNN CS,2 ;ALPHABETIC? 000673' 254000 000677' JRST PERNUM ;NO, TEST NUMERIC 000674' 205000 160000 MOVSI AC0,(SIXBIT /./) ;YES, PUT PERIOD IN AC0 000675' 205100 360600 MOVSI AC2,(POINT 6,AC0,5) ;SET BYTE POINTER 000676' 254000 000405' JRST LETTE2 ;AND TREAT AS SYMBOL 000677' 603400 000004 PERNUM: TLNE CS,4 ;IS IT A NUMBER 000700' 254000 000736' JRST NUM32 ;YES 000701' 200000 013325' MOVE AC0,LOCA ;NO. CURRENT LOC SYMBOL (.) 000702' 200440 013332' MOVE RC,MODA ;SET TO CURRENT ASSEMBLY MODE 000703' 254000 000434' JRST GETDE1 ;GET DELIMITER 000704' 661640 000040 NUMDF: TLO FR,DCFSW ;SET DECIMAL FRACTION FLAG 000705' 260740 001354' NUM: PUSHJ PP,GETCHR ;GET A CHARACTER 000706' 607400 000004 TLNN CS,4 ;NUMERIC? 000707' 254000 000720' JRST NUM10 ;NO 000710' 275340 000020 NUM1: SUBI C,20 ;CONVERT TO OCTAL 000711' 261740 000007 PUSH PP,C ;STACK FOR FLOATING POINT 000712' 200000 000001 MOVE AC0,AC1 000713' 225015 000000 MULI AC0,0(RX) 000714' 270040 000007 ADD AC1,C ;ADD IN LAST VALUE 000715' 301355 000000 CAIL C,0(RX) ;IS NUMBER LESS THAN CURRENT RADIX? 000716' 661640 040000 TLO FR,RADXSW ;NO, SET FLAG 000717' 344100 000705' AOJA AC2,NUM ;YES, AC2=NO. OF DECIMAL PLACES MACRO V.10 PAGE 22 LITERAL PROCESSOR 000720' 302340 000016 NUM10: CAIE C,16 ;PERIOD? 000721' 603640 000040 TLNE FR,DCFSW ;OR DECIMAL FRACTION? 000722' 254000 000732' JRST NUM30 ;YES, PROCESS FLOATING POINT 000723' 242040 000001 LSH AC1,1 ;NO, CLEAR THE SIGN BIT 000724' 246000 000043 LSHC AC0,^D35 ;AND SHIFT INTO AC0 000725' 200740 013342' MOVE PP,PPTEMP ;RESTORE PP 000726' 362100 000434' SOJE AC2,GETDE1 ;NO RADIX ERROR TEST IF ONE DIGIT 000727' 603640 040000 TLNE FR,RADXSW ;WAS ILLEGAL NUMBER ENCOUNTERED? 000730' 660600 000400 TRO ER,ERRN ;YES, FLAG N ERROR 000731' 254000 000434' JRST GETDE1 000732' 302340 000042 NUM30: CAIE C,"B"-40 ;IF "B" THEN MISSING "." 000733' 260740 001354' NUM31: PUSHJ PP,GETCHR 000734' 607400 000004 TLNN CS,4 ;NUMERIC? 000735' 254000 000741' JRST NUM40 ;NO 000736' 275340 000020 NUM32: SUBI C,20 000737' 261740 000007 PUSH PP,C 000740' 254000 000733' JRST NUM31 000741' 261740 000015 NUM40: PUSH PP,FR ;STACK VALUES 000742' 541640 000012 HRRI RX,^D10 000743' 261740 000002 PUSH PP,AC2 000744' 261740 013342' PUSH PP,PPTEMP 000745' 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 000746' 254000 014063' JRST .+2] ;SKIP RETURN 000747' 201000 000000 MOVEI AC0,0 ;NO, ZERO EXPONENT 000750' 262740 013342' POP PP,PPTEMP 000751' 262740 000004 POP PP,SX 000752' 262740 000015 POP PP,FR 000753' 550300 000017 HRRZ V,PP 000754' 200740 013342' MOVE PP,PPTEMP 000755' 326440 000431' JUMPN RC,NUMER1 ;EXPONENT MUST BE ABSOLUTE 000756' 270200 000000 ADD SX,AC0 000757' 550240 000017 HRRZ ARG,PP 000760' 270200 000005 ADD SX,ARG 000761' 403000 000002 SETZB AC0,AC2 000762' 603640 000040 TLNE FR,DCFSW 000763' 254000 001004' JRST NUM60 000764' 255400 000765' JOV NUM50 ;CLEAR OVERFLOW FLAG MACRO V.10 PAGE 23 LITERAL PROCESSOR 000765' 265140 001020' NUM50: JSP SDEL,NUMUP ;FLOATING POINT 000766' 254000 000773' JRST NUM52 ;END OF WHOLE NUMBERS 000767' 164000 014077' FMPR AC0,[10.0] ;MULTIPLY BY 10 000770' 661040 233000 TLO AC1,233000 ;CONVERT TO FLOATING POINT 000771' 144000 000001 FADR AC0,AC1 ;ADD IT IN 000772' 254000 000765' JRST NUM50 000773' 265140 001026' NUM52: JSP SDEL,NUMDN ;PROCESS FRACTION 000774' 144000 000002 FADR AC0,AC2 000775' 255400 000431' JOV NUMER1 ;TEST FOR OVERFLOW 000776' 254000 000434' JRST GETDE1 000777' 661040 233000 TLO AC1,233000 001000' 602040 777777 TRNE AC1,-1 001001' 144100 000001 FADR AC2,AC1 ;ACCUMULATE FRACTION 001002' 174100 014077' FDVR AC2,[10.0] 001003' 254000 000773' JRST NUM52 001004' 265140 001020' NUM60: JSP SDEL,NUMUP 001005' 254000 001011' JRST NUM62 001006' 221000 000012 IMULI AC0,^D10 001007' 270000 000001 ADD AC0,AC1 001010' 254000 001004' JRST NUM60 001011' 246040 777734 NUM62: LSHC AC1,-^D36 001012' 265140 001026' JSP SDEL,NUMDN 001013' 246040 000045 LSHC AC1,^D37 001014' 260740 004453' PUSHJ PP,BYPAS2 001015' 254000 000436' JRST GETDE3 001016' 235040 000012 DIVI AC1,^D10 001017' 254000 001011' JRST NUM62 001020' 201040 000000 NUMUP: MOVEI AC1,0 001021' 311240 000004 CAML ARG,SX 001022' 254003 000000 JRST 0(SDEL) 001023' 315240 000006 CAMGE ARG,V 001024' 200045 000001 MOVE AC1,1(ARG) 001025' 344243 000001 AOJA ARG,1(SDEL) 001026' 201040 000000 NUMDN: MOVEI AC1,0 001027' 317300 000004 CAMG V,SX 001030' 254003 000000 JRST 0(SDEL) 001031' 313300 000005 CAMLE V,ARG 001032' 200046 000000 MOVE AC1,0(V) 001033' 364303 000003 SOJA V,3(SDEL) MACRO V.10 PAGE 24 GETSYM SUBTTL GETSYM 001034' 201000 000000 GETSYM: MOVEI AC0,0 ;CLEAR AC0 001035' 205040 440600 MOVSI AC1,(POINT 6,AC0) ;PUT POINTER IN AC1 001036' 260740 004452' PUSHJ PP,BYPASS ;SKIP LEADING BLANKS 001037' 607400 000002 TLNN CS,2 ;ALPHABETIC? 001040' 254000 001046' JRST GETSY1 ;NO, ERROR 001041' 302340 000016 CAIE C,16 ;PERIOD? 001042' 254000 001047' JRST GETSY2 ;NO, A VALID SYMBOL 001043' 136340 000001 IDPB C,AC1 ;STORE THE CHARACTER 001044' 260740 001354' PUSHJ PP,GETCHR ;YES, TEST NEXT CHARACTER 001045' 607400 000002 TLNN CS,2 ;ALPHABETIC? 001046' 664600 040000 GETSY1: TROA ER,ERRA 001047' 350017 000000 GETSY2: AOS 0(PP) ;YES, SET SKIP EXIT 001050' 607400 000006 GETSY3: TLNN CS,6 ;ALPHA-NUMERIC? 001051' 254000 004453' JRST BYPAS2 ;NO, GET DELIMITER 001052' 603040 770000 TLNE AC1,770000 ;YES, HAVE WE STORED SIX? 001053' 136340 000001 IDPB C,AC1 ;NO, STORE IT 001054' 260740 001354' PUSHJ PP,GETCHR 001055' 254000 001050' JRST GETSY3 MACRO V.10 PAGE 25 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 001056' 661640 010000 EVALHA: TLO FR,TMPSW 001057' 260740 001070' EVALCM: PUSHJ PP,EVALEX ;EVALUATE FIRST EXPRESSION 001060' 261740 014100' PUSH PP,[0] ;MARK PDL 001061' 321400 001064' JUMPCM EVALC3 ;JUMP IF COMMA 001062' 661600 000004 TLO IO,IORPTC ;IT'S NOT,SO REPEAT 001063' 254000 004354' JRST OP ;PROCESS IN OP 001064' EVALC3: 001064' 261740 014100' PUSH PP,[0] ;STORE ZERO'S ON PDL 001065' 261740 014100' PUSH PP,[0] ;....... 001066' 205100 270417 MOVSI AC2,(POINT 4,(PP),12) 001067' 254000 004363' JRST OP1B ;PROCESS IN OP 001070' 661600 400000 EVALEX: TLO IO,FLDSW 001071' 261740 014101' PUSH PP,[XWD TNODE,0] ;MARK THE LIST 200000,,0 001072' 627640 010000 TLZN FR,TMPSW 001073' 260740 000325' EVATOM: PUSHJ PP,ATOM ;GET THE NEXT ATOM 001074' 322000 001170' JUMPE AC0,EVGETD ;TEST FOR NULL/ZERO 001075' 663600 020000 TLOE IO,NUMSW ;SET NUMERIC, WAS IT PREVIOUSLY? 001076' 254000 001171' JRST EVGETD+1 ;YES, TREAT ACCORDINGLY 001077' 260740 012313' PUSHJ PP,SEARCH ;SEARCH FOR MACRO OR SYMBOL 001100' 254000 001122' JRST EVOP ;NOT FOUND, TRY FOR OP-CODE 001101' 321240 001103' JUMPL ARG,.+2 ;SKIP IF OPERAND 001102' 260740 012213' PUSHJ PP,SSRCH1 ;OPERATOR, TRY FOR SYMBOL (OPERAND) 001103' 260740 012203' PUSHJ PP,QSRCH ;PERFORM CROSS-REFERENCE 001104' 327240 001107' JUMPG ARG,EVMAC ;BRANCH IF OPERATOR 001105' 200000 000006 MOVE AC0,V ;SYMBOL, SET VALUE 001106' 254000 001152' JRST EVTSTS ;TEST STATUS 001107' 603640 000200 EVMAC: TLNE FR,NEGSW ;UNARY MINUS? 001110' 254000 001147' JRST EVERRZ ;YES, INVALID BEFORE OPERATOR 001111' 135140 014060' LDB SDEL,[POINT 3,ARG,5] ;GET MACF/OPDF/SYNF 001112' 361140 001147' SOJL SDEL,EVERRZ ;ERROR IF NO FLAGS 001113' 322340 001115' JUMPE C,.+2 ;NON-BLANK? 001114' 661600 000004 TLO IO,IORPTC ;YES, REPEAT CHARACTER 001115' 362140 005511' SOJE SDEL,CALLM ;MACRO IF 2 001116' 327140 001126' JUMPG SDEL,EVOPS ;SYNONYM IF 4 001117' 200000 000006 MOVE AC0,V ;OPDEF 001120' 201300 004354' MOVEI V,OP ;SET TRANSFER VECTOR 001121' 254000 001132' JRST EVOPD MACRO V.10 PAGE 26 EXPRESSION EVALUATOR 001122' 603640 000200 EVOP: TLNE FR,NEGSW ;OPCODE, UNARY MINUS? 001123' 254000 001147' JRST EVERRZ ;YES, ERROR 001124' 260740 010470' PUSHJ PP,OPTSCH ;SEARCH SYMBOL TABLE 001125' 254000 001145' JRST EVOPX ;NOT FOUND 001126' 620300 200000 EVOPS: TRZ V,LITF ;CLEAR LIT INVALID FLAG 001127' 622300 100000 TRZE V,ADDF ;SYNONYM 001130' 254000 001145' JRST EVOPX ;PSEUDO-OP THAT GENERATES NO DATA JUMPS 001131' 510000 000006 HLLZ AC0,V 001132' 322340 001134' EVOPD: JUMPE C,.+2 ;OPDEF, NON-BLANK DELIMITER? 001133' 661600 000004 TLO IO,IORPTC ;YES, REPEAT CHARACTER 001134' 265100 002723' JSP AC2,SVSTOW 001135' 260746 000000 PUSHJ PP,0(V) 001136' 260740 002712' PUSHJ PP,DSTOW 001137' 265100 002731' JSP AC2,GTSTOW 001140' 602440 777776 TRNE RC,-2 001141' 542440 013270' HRRM RC,EXTPNT 001142' 603440 777776 TLNE RC,-2 001143' 502440 013270' HLLM RC,EXTPNT 001144' 254000 001175' JRST EVNUM 001145' 205240 402000 EVOPX: MOVSI ARG,SYMF!UNDF 001146' 260740 012365' PUSHJ PP,INSERZ 001147' 403000 000011 EVERRZ: SETZB AC0,RC ;CLEAR CODE AND RELOCATION 001150' 660600 002000 EVERRU: TRO ER,ERRU 001151' 254000 001170' JRST EVGETD MACRO V.10 PAGE 27 EXPRESSION EVALUATOR 001152' 603240 002000 EVTSTS: TLNE ARG,UNDF JRST [TRO ER,ERRU ;SET UNDEF ERROR JUMP1 EVGETD ;TREAT AS UNDF ON PASS1 001153' 254000 014102' JRST .+1] ;TREAT AS EXTERNAL ON PASS2 001154' 607240 001000 TLNN ARG,EXTF 001155' 254000 001164' JRST EVTSTR 001156' 550440 000005 HRRZ RC,ARG ;GET ADRES WFW 001157' 550240 013270' HRRZ ARG,EXTPNT ;SAVE IT WFW 001160' 542440 013270' HRRM RC,EXTPNT ;WFW 001161' 602240 777777 TRNE ARG,-1 ;WFW 001162' 660600 000040 TRO ER,ERRE 001163' 403000 000005 SETZB AC0,ARG 001164' 603240 000020 EVTSTR: TLNE ARG,MDFF ;MULTIPLY DEFINED? 001165' 660600 020000 TRO ER,ERRD ;YES, FLAG IT 001166' 603640 000200 TLNE FR,NEGSW ;NEGATIVE ATOM? 001167' 260740 000444' PUSHJ PP,GETDE2 ;YES, NEGATE AC0 AND RC 001170' 603600 020000 EVGETD: TLNE IO,NUMSW ;NON BLANK FIELD 001171' 661640 100000 TLO FR,FSNSW ;YES,SET FLAG 001172' 260740 004453' PUSHJ PP,BYPAS2 001173' 603400 000006 TLNE CS,6 ;ALPHA-NUMERIC? 001174' 661600 000004 TLO IO,IORPTC ;YES, REPEAT IT 001175' 262740 000003 EVNUM: POP PP,PS ;POP THE PREVIOUS DELIMITER/TNODE 001176' 661140 004000 TLO PS,4000 001177' 315140 000010 CAMGE PS,CS ;OPERATION REQUIRED? 001200' 254000 001205' JRST EVPUSH ;NO, PUT VALUES BACK ON STACK 001201' 607140 200000 TLNN PS,TNODE ;YES, HAVE WE REACHED TERMINAL NODE? 001202' 254000 001212' JRST EVXCT ;NO, EXECUTION REQUIRED 001203' 607400 170000 TLNN CS,170000 ;YES, ARE WE POINTING AT DEL? (& ! * / + - _) 001204' 263740 000000 POPJ PP, ;YES, EXIT ;NO,FALL INTO EVPUSH MACRO V.10 PAGE 28 EXPRESSION EVALUATOR 001205' 261740 000003 EVPUSH: PUSH PP,PS ;STACK VALUES 001206' 261740 000000 PUSH PP,CV 001207' 261740 000011 PUSH PP,RC 001210' 261740 000010 PUSH PP,CS 001211' 254000 001073' JRST EVATOM ;GET NEXT ATOM 001212' 262740 000002 EVXCT: POP PP,PR ;POP PREVIOUS RELOCATABILITY 001213' 262740 000001 POP PP,PV ;AND PREVIOUS VALUE 001214' 135140 014105' LDB PS,[POINT 3,PS,29] ;TYPE OF OPERATION TO PS 001215' 254003 001216' JRST .+1(PS) ;PERFORM PROPER OPERATION 001216' 254000 000104' JRST ASSEM1 ;0; SHOULD NEVER GET HERE ;DMN 001217' 254000 001244' JRST XMUL ;1; 001220' 254000 001240' JRST XDIV ;2; 001221' 254000 001235' JRST XADD ;3; 001222' 254000 001232' JRST XSUB ;4; 001223' 254000 001255' JRST XLRW ;5; "_" 001224' 674000 000001 TDOA CV,PV ;6; MERGE PV INTO CV 001225' 404000 000001 AND CV,PV ;7; AND PV INTO CV 001226' 326440 001230' JUMPN RC,.+2 ;COMMON RELOCATION TEST 001227' 322100 001175' EVXCT1: JUMPE PR,EVNUM 001230' 660600 004000 TRO ER,ERRR ;BOTH MUST BE FIXED 001231' 254000 001175' JRST EVNUM ;GO TRY AGAIN 001232' 276040 000000 XSUB: SUBM PV,CV 001233' 276100 000011 SUBM PR,RC 001234' 254000 001175' JRST EVNUM 001235' 272040 000000 XADD: ADDM PV,CV 001236' 272100 000011 ADDM PR,RC 001237' 254000 001175' JRST EVNUM 001240' 230100 000000 XDIV: IDIV PR,CV ;CORRECT RELOCATABILITY 001241' 232040 000000 IDIVM PV,CV 001242' 250100 000011 XDIV1: EXCH PR,RC ;TAKE RELOCATION OF NUMERATOR 001243' 254000 001227' JRST EVXCT1 001244' 322100 001247' XMUL: JUMPE PR,XMUL1 ;AT LEAST ONE OPERAND 001245' 322440 001247' JUMPE RC,XMUL1 ;MUST BE FIXED 001246' 660600 004000 TRO ER,ERRR 001247' 436100 000011 XMUL1: IORM PR,RC ;GET RELOCATION TO RC 001250' 315040 000000 CAMGE PV,CV ;FIND THE GREATER 001251' 250040 000000 EXCH PV,CV ;FIX IN CASE CV=0,OR 1 001252' 222040 000011 IMULM PV,RC 001253' 222040 000000 IMULM PV,CV 001254' 254000 001175' JRST EVNUM 001255' 250040 000000 XLRW: EXCH PV,CV 001256' 242001 000000 LSH CV,0(PV) 001257' 242101 000000 LSH PR,0(PV) 001260' 254000 001242' JRST XDIV1 MACRO V.10 PAGE 29 LITERAL STORAGE HANDLER SUBTTL LITERAL STORAGE HANDLER 001261' STOLER: 001261' 403000 000011 SETZB AC0,RC ;ERROR, NO CODE STORED 001262' 260740 002665' PUSHJ PP,STOW ;STOW ZERO 001263' 660600 010000 TRO ER,ERRL ;AND FLAG THE ERROR 001264' 200140 013104' STOLIT: MOVE SDEL,STPX 001265' 274140 013105' SUB SDEL,STPY ;COMPUTE NUMBER OF WORDS 001266' 322140 001261' JUMPE SDEL,STOLER ;ERROR IF NONE STORED 001267' 606600 777760 TRNN ER,ERRORS ;ANY ERRORS? 001270' 254000 001274' JRST STOL06 ;NO 001271' 325640 001333' JUMP2 STOL22 ;YES, NO SEARCH. BRANCH IF PASS2 001272' 272140 013036' ADDM SDEL,LITCNT ;PASS ONE, UPDATE COUNT 001273' 254000 002717' JRST STOWI ;INITIALIZE STOW 001274' 201200 013031' STOL06: MOVEI SX,LITAB ;PREPARE FOR SEARCH 001275' 200240 013104' MOVE ARG,STPX ;SAVE IN THE EVENT OF MULTIPLE-WORD 001276' 504240 013105' HRL ARG,STPY 001277' 200100 013037' MOVE AC2,LITNUM 001300' 201140 000000 MOVEI SDEL,0 001301' 260740 002712' STOL08: PUSHJ PP,DSTOW ;GET VALUE WFW 001302' 361100 001335' STOL10: SOJL AC2,STOL24 ;TEST FOR END 001303' 200204 000000 MOVE SX,0(SX) ;NO, GET NEXT STORAGE CELL 001304' 200304 777777 MOVE V,-1(SX) ;GET RELOCATION BITS WFW 001305' 316004 777776 CAMN AC0,-2(SX) ;DO CODES COMPARE? WFW 001306' 312440 000006 CAME RC,V ;YES, HOW ABOUT RELOCATION? 001307' 344140 001302' AOJA SDEL,STOL10 ;NO, TRY AGAIN 001310' 335000 013104' SKIPGE STPX ;YES, MULTI-WORD? 001311' 254000 001346' JRST STOL26 ;NO, JUST RETURN LOCATION 001312' 202100 013047' MOVEM AC2,SAVBLK+AC2 ;YES, SAVE STARTING INFO 001313' 202200 013051' MOVEM SX,SAVBLK+SX 001314' 361100 001334' STOL12: SOJL AC2,STOL23 ;TEST FOR END 001315' 260740 002712' PUSHJ PP,DSTOW ;GET NEXT WORD WFW 001316' 200204 000000 MOVE SX,0(SX) ;UPDATE POINTER 001317' 200304 777777 MOVE V,-1(SX) ;GET RELOCATION WFW 001320' 316004 777776 CAMN AC0,-2(SX) ;COMPARE VALUE WFW 001321' 312440 000006 CAME RC,V ;AND RELOCATION 001322' 254000 001326' JRST STOL14 ;NO MATCH, TRY AGAIN 001323' 331000 013104' SKIPL STPX ;MATCH, HAVE WE FINISHED SEARCH? 001324' 254000 001314' JRST STOL12 ;NO, TRY NEXT WORD 001325' 254000 001346' JRST STOL26 ;YES, RETURN LOCATION 001326' 200100 013047' STOL14: MOVE AC2,SAVBLK+AC2 ;RESTORE STOW POINTERS 001327' 200200 013051' MOVE SX,SAVBLK+SX 001330' 572240 013104' HRREM ARG,STPX 001331' 576240 013105' HLREM ARG,STPY 001332' 344140 001301' AOJA SDEL,STOL08 ;BETTER LUCK NEXT TIME MACRO V.10 PAGE 30 LITERAL STORAGE HANDLER 001333' 200140 013037' STOL22: MOVE SDEL,LITNUM 001334' 260740 002712' STOL23: PUSHJ PP,DSTOW ;DSTOW AND CONVERT 001335' 200200 013032' STOL24: MOVE SX,LITABX ;GET CURRENT STORAGE 001336' 260740 003444' PUSHJ PP,GETTOP ;GET NEXT CELL 001337' 202004 777776 MOVEM AC0,-2(SX) ;STORE CODE WFW 001340' 202444 777777 MOVEM RC,-1(SX) ;WFW 001341' 202200 013032' MOVEM SX,LITABX ;SET POINTER TO CURRENT CELL 001342' 350000 013037' AOS LITNUM ;INCREMENT NUMBER STORED 001343' 350000 013036' AOS LITCNT ;INCREMENT NUMBER RESERVED 001344' 331000 013104' SKIPL STPX ;ANY MORE CODE? 001345' 254000 001334' JRST STOL23 ;YES 001346' 321640 000446' STOL26: JUMP1 POPOUT ;EXIT IF PASS ONE 001347' 200200 013035' MOVE SX,LITHDX ;GET HEADER BLOCK 001350' 554444 777777 HLRZ RC,-1(SX) ;GET BLOCK RELOCATION 001351' 550004 777777 HRRZ AC0,-1(SX) 001352' 271003 000000 ADDI AC0,0(SDEL) ;COMPUTE ACTUAL LOCATION 001353' 263740 000000 POPJ PP, ;EXIT MACRO V.10 PAGE 31 INPUT ROUTINES SUBTTL INPUT ROUTINES 001354' 260740 001406' GETCHR: PUSHJ PP,CHARAC ;GET ASCII CHARACTER 001355' 301340 000141 CAIL C,"A"+40 ;CHECK FOR LOWER CASE 001356' 303340 000172 CAILE C,"Z"+40 001357' 254000 001361' JRST .+2 ;NOT LOWER CASE 001360' 624340 000100 TRZA C,100 ;CONVERT LOWER CASE TO SIXBIT 001361' 275340 000040 SUBI C,40 ;CONVERT TO SIXBIT 001362' 307340 000077 CAIG C,77 ;CHAR GREATER THAN SIXBIT? 001363' 325340 001375' JUMPGE C,GETCS ;TEST FOR VALID SIXBIT 001364' 271340 000040 ADDI C,40 ;BACK TO ASCII 001365' 306340 000011 CAIN C,HT ;CHECK FOR TAB 001366' 254000 001374' JRST GETCS2 ;MAKE IT LOOK LIKE SPACE 001367' 307340 000015 CAIG C,CR ;GREATER THAN CR 001370' 307340 000011 CAIG C,HT ;GREATER THAN TAB 001371' 254000 001377' JRST GETCS1 ;IS NOT FF,VT,LF OR CR 001372' 201340 000033 MOVEI C,EOL ;LINE OR FORM FEED OR V TAB 001373' 665600 000004 TLOA IO,IORPTC ;REPEAT CHARACTER 001374' 201340 000000 GETCS2: MOVEI C,0 ;BUT TREAT AS BLANK 001375' 200407 001447' GETCS: MOVE CS,CSTAT(C) ;GET STATUS BITS 001376' 263740 000000 POPJ PP, ;EXIT 001377' 322340 001375' GETCS1: JUMPE C,GETCS ;IGNORE NULS 001400' 640340 000100 TRC C,100 ;MAKE CHAR. VISIBLE 001401' 201400 000136 MOVEI CS,"^" 001402' 137400 013003' DPB CS,LBUFP ;PUT ^ IN OUTPUT 001403' 260740 001414' PUSHJ PP,RSW2 ;ALSO MODIFIED CHAR. 001404' 660600 200000 TRO ER,ERRQ ;FLAG Q ERROR 001405' 254000 001354' JRST GETCHR ;BUT IGNORE CHAR. MACRO V.10 PAGE 32 INPUT ROUTINES 001406' 623600 000004 CHARAC: TLZE IO,IORPTC ;REPEAT REQUESTED? 001407' 254000 001434' JRST CHARAX ;YES 001410' 326540 006300' RSW0: JUMPN MRP,MREAD ;BRANCH IF TREE POINTER SET 001411' 260740 010221' PUSHJ PP,READ 001412' 332000 013350' RSW1: SKIPE RPOLVL ;ARE WE IN "REPEAT ONCE"? 001413' 254000 005201' JRST REPO1 ;YES 001414' 200400 013002' RSW2: MOVE CS,LIMBO ;GET LAST CHAR. 001415' 202340 013002' MOVEM C,LIMBO ;STORE THIS CHAR. FOR RPTC 001416' 306340 000012 CAIN C,LF ;LF? 001417' 302400 000015 CAIE CS,CR ;YES,LAST CHAR. A CR? 001420' 254000 001423' JRST RSW3 ;NO 001421' 563000 013002' HRROS LIMBO ;YES,FLAG 001422' 263740 000000 POPJ PP, ;AND EXIT 001423' 603600 000001 RSW3: TLNE IO,IOSALL ;MACRO SUPPRESS ALL? 001424' 326540 003360' JUMPN MRP,CPOPJ ;YES,DON'T LIST IN MACRO 001425' 377000 013265' SOSG CPL ;ANY ROOM IN THE IMAGE BUFFER? 001426' 260740 001650' PUSHJ PP,OUTPL ;NO, OUTPUT THE PARTIAL LINE 001427' 136340 013003' IDPB C,LBUFP ;YES, STORE IN PRINT AREA 001430' 302340 000011 CAIE C,HT ;TAB? 001431' 263740 000000 POPJ PP, ;NO, EXIT 001432' 201340 000007 MOVEI C,7 001433' 412340 013265' ANDCAM C,CPL ;MASK 001434' 550340 013002' CHARAX: HRRZ C,LIMBO ;GET LAST CHARACTER 001435' 263740 000000 POPJ PP, ;EXIT 001436' 260740 001406' CHARL: PUSHJ PP,CHARAC ;GET AND TEST 7-BIT ASCII 001437' 307340 000014 CAIG C,FF ;LINE OR FORM FEED OR VT? 001440' 305340 000012 CAIGE C,LF 001441' 263740 000000 POPJ PP, ;NO,EXIT 001442' 332000 013321' SKIPE LITLVL ;IN LITERAL? 001443' 254000 002011' JRST OUTIML ;YES 001444' 260740 007211' CHARL1: PUSHJ PP,SAVEXS ;SAVE REGISTERS 001445' 260740 001547' PUSHJ PP,OUTLIN ;DUMP THE LINE 001446' 254000 007205' JRST RSTRXS ;RESTORE REGISTERS AND EXIT MACRO V.10 PAGE 33 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 001447' CSTAT: 001447' 000001 000000 GENCS 00,00,1,00,00,00 ; ' ' 001450' 040121 000601 GENCS 04,12,1,00,06,01 ; '!' 001451' 000071 000002 GENCS 00,07,1,00,00,02 ; '"' 001452' 000121 000003 GENCS 00,12,1,00,00,03 ; '#' 001453' 000012 460004 GENCS 00,01,2,46,00,04 ; '$' 001454' 000012 470005 GENCS 00,01,2,47,00,05 ; '%' 001455' 040121 000706 GENCS 04,12,1,00,07,06 ; '&' 001456' 000071 000007 GENCS 00,07,1,00,00,07 ; ''' 001457' 000011 000010 GENCS 00,01,1,00,00,10 ; '(' 001460' 000011 000011 GENCS 00,01,1,00,00,11 ; ')' 001461' 020121 000112 GENCS 02,12,1,00,01,12 ; '*' 001462' 010001 000313 GENCS 01,00,1,00,03,13 ; '+' 001463' 400011 000014 GENCS 40,01,1,00,00,14 ; ',' 001464' 010021 000415 GENCS 01,02,1,00,04,15 ; '-' 001465' 000112 450016 GENCS 00,11,2,45,00,16 ; '.' 001466' 020121 000217 GENCS 02,12,1,00,02,17 ; '/' 001467' 000044 010020 GENCS 00,04,4,01,00,20 ; '0' 001470' 000044 020021 GENCS 00,04,4,02,00,21 ; '1' 001471' 000044 030022 GENCS 00,04,4,03,00,22 ; '2' 001472' 000044 040023 GENCS 00,04,4,04,00,23 ; '3' 001473' 000044 050024 GENCS 00,04,4,05,00,24 ; '4' 001474' 000044 060025 GENCS 00,04,4,06,00,25 ; '5' 001475' 000044 070026 GENCS 00,04,4,07,00,26 ; '6' 001476' 000044 100027 GENCS 00,04,4,10,00,27 ; '7' 001477' 000044 110030 GENCS 00,04,4,11,00,30 ; '8' 001500' 000044 120031 GENCS 00,04,4,12,00,31 ; '9' 001501' 000121 000032 GENCS 00,12,1,00,00,32 ; ':' 001502' 000011 000033 GENCS 00,01,1,00,00,33 ; ';' 001503' 000051 000034 GENCS 00,05,1,00,00,34 ; '<' 001504' 000121 000035 GENCS 00,12,1,00,00,35 ; '=' 001505' 000011 000036 GENCS 00,01,1,00,00,36 ; '>' 001506' 000121 000037 GENCS 00,12,1,00,00,37 ; '?' MACRO V.10 PAGE 34 CHARACTER STATUS TABLE 001507' 000031 000040 GENCS 00,03,1,00,00,40 ; '@' 001510' 000012 130041 GENCS 00,01,2,13,00,41 ; 'A' 001511' 000012 140042 GENCS 00,01,2,14,00,42 ; 'B' 001512' 000012 150043 GENCS 00,01,2,15,00,43 ; 'C' 001513' 000012 160044 GENCS 00,01,2,16,00,44 ; 'D' 001514' 000012 170045 GENCS 00,01,2,17,00,45 ; 'E' 001515' 000012 200046 GENCS 00,01,2,20,00,46 ; 'F' 001516' 000012 210047 GENCS 00,01,2,21,00,47 ; 'G' 001517' 000012 220050 GENCS 00,01,2,22,00,50 ; 'H' 001520' 000012 230051 GENCS 00,01,2,23,00,51 ; 'I' 001521' 000012 240052 GENCS 00,01,2,24,00,52 ; 'J' 001522' 000012 250053 GENCS 00,01,2,25,00,53 ; 'K' 001523' 000012 260054 GENCS 00,01,2,26,00,54 ; 'L' 001524' 000012 270055 GENCS 00,01,2,27,00,55 ; 'M' 001525' 000012 300056 GENCS 00,01,2,30,00,56 ; 'N' 001526' 000012 310057 GENCS 00,01,2,31,00,57 ; 'O' 001527' 000012 320060 GENCS 00,01,2,32,00,60 ; 'P' 001530' 000012 330061 GENCS 00,01,2,33,00,61 ; 'Q' 001531' 000012 340062 GENCS 00,01,2,34,00,62 ; 'R' 001532' 000012 350063 GENCS 00,01,2,35,00,63 ; 'S' 001533' 000012 360064 GENCS 00,01,2,36,00,64 ; 'T' 001534' 000012 370065 GENCS 00,01,2,37,00,65 ; 'U' 001535' 000012 400066 GENCS 00,01,2,40,00,66 ; 'V' 001536' 000012 410067 GENCS 00,01,2,41,00,67 ; 'W' 001537' 000012 420070 GENCS 00,01,2,42,00,70 ; 'X' 001540' 000012 430071 GENCS 00,01,2,43,00,71 ; 'Y' 001541' 000012 440072 GENCS 00,01,2,44,00,72 ; 'Z' 001542' 000061 000073 GENCS 00,06,1,00,00,73 ; '[' 001543' 000121 000074 GENCS 00,12,1,00,00,74 ; '\' 001544' 000011 000075 GENCS 00,01,1,00,00,75 ; ']' 001545' 000101 000076 GENCS 00,10,1,00,00,76 ; '^' 001546' 100121 000577 GENCS 10,12,1,00,05,77 ; '_' MACRO V.10 PAGE 35 LISTING ROUTINES SUBTTL LISTING ROUTINES 001547' 606600 577760 OUTLIN: TRNN ER,ERRORS-ERRQ ;ANY ERRORS? 001550' 603640 000010 TLNE FR,ERRQSW ;NO, IGNORE Q ERRORS? 001551' 620600 200000 TRZ ER,ERRQ ;YES, YES, ZERO THE Q ERROR 001552' 514000 000014 HRLZ AC0,ER ;PUT ERROR FLAGS IN AC0 LEFT 001553' 630600 013256' TDZ ER,TYPERR 001554' 321640 001665' JUMP1 OUTL30 ;BRANCH IF PASS ONE 001555' 326000 001567' JUMPN AC0,OUTL02 ;JUMP IF ANY ERRORS TO FORCE PRINTING 001556' 331000 013104' SKIPL STPX ;SKIP IF NO CODE, OTHERWISE 001557' 254000 001565' JRST OUTL01 ;NO 001560' 607600 000001 TLNN IO,IOSALL ;YES,SUPPRESS ALL? 001561' 254000 001566' JRST OUTL03 ;NO 001562' 326540 003360' JUMPN MRP,CPOPJ ;YES,EXIT IF IN MACRO 001563' 135340 014106' LDB C,[XWD 350700,LBUF] 001564' 302340 000015 CAIE C,15 ;FIRST CHAR CR? 001565' 621600 010000 OUTL01: TLZ IO,IOMAC ;FORCE MACRO PRINTING 001566' 607600 250000 OUTL03: TLNN IO,IOMSTR!IOPROG!IOMAC 001567' 434600 013042' OUTL02: IOR ER,OUTSW ;FORCE IT. 001570' 136000 013003' IDPB AC0,LBUFP ;STORE ZERO TERMINATOR AFTER ASCII SRC LINE 001571' 607640 002000 TLNN FR,CREFSW ;CREF? 001572' 260740 012274' PUSHJ PP,CLSCRF ;YES, WRITE END OF CREF DATA (177,003) 001573' 322000 001577' JUMPE AC0,OUTL20 ;BRANCH IF NO ERRORS 001574' 623000 000020 TLZE AC0,ERRM ;M ERROR? 001575' 661000 000100 TLO AC0,ERRP ;M ERROR SET - SET P ERROR. 001576' 260740 001712' PUSHJ PP,OUTLER ;PROCESS ERRORS 001577' 336440 013323' OUTL20: SKIPN RC,ASGBLK 001600' 332400 013324' SKIPE CS,LOCBLK ; 001601' 331000 013104' SKIPL STPX ;ANY BINARY? 001602' 254000 001625' JRST OUTL23 ;YES, JUMP 001603' 322440 001621' JUMPE RC,OUTL22 ;SEQUENCE BREAK AND NO BINARY JUMPS 001604' 134340 013226' ILDB C,TABP ;ASSIGNMENT FALLS THROUGH 001605' 260740 010325' PUSHJ PP,OUTL ;OUTPUT A TAB. 001606' 134340 013226' ILDB C,TABP ;OUTPUT 2ND TAB, LOCATION FIELD 001607' 260740 010377' PUSHJ PP,OUTC ;NEXT IS BINARY LISTING FIELD 001610' 520400 013324' HLLO CS,LOCBLK ;LEFT HALF OF A 36BIT VALUE 001611' 321440 001613' JUMPL RC,.+2 ;SKIP IF LEFT HALF IS NOT RELOC 001612' 624400 000001 TRZA CS,1 ;IT IS, SET THE FLAG 001613' 603400 777777 TLNE CS,-1 ;SKIP IF ITS A 18BIT VALUE, OTHERWISE 001614' 260740 002751' PUSHJ PP,ONC1 ;PRINT LH OF A 36 BIT VALUE IN CS 001615' 524400 013324' HRLO CS,LOCBLK ;PICK UP THE RIGHT HALF (18BIT VALUE) 001616' 620411 000000 TRZ CS,0(RC) ; 001617' 260740 002747' PUSHJ PP,ONC ;PRINT IT 001620' 254000 001625' JRST OUTL23 ;SKIP SINGLE QUOTE TEST MACRO V.10 PAGE 36 LISTING ROUTINES 001621' 260740 002747' OUTL22: PUSHJ PP,ONC ;TAB TO RH AND PRINT IT 001622' 201340 000047 MOVEI C,"'" 001623' 332000 013332' SKIPE MODA 001624' 260740 010377' PUSHJ PP,OUTC 001625' 331000 013104' OUTL23: SKIPL STPX ;ANY BINARY? 001626' 260740 002434' PUSHJ PP,BOUT ;YES, DUMP IT 001627' 200420 001774' MOVE CS,@OUTLI2 ;[POINT 7,LBUF] 001630' 134340 000010 OUTL24: ILDB C,CS 001631' 322340 001636' JUMPE C,OUTL25 001632' 307340 000040 CAIG C," " 001633' 254000 001630' JRST OUTL24 001634' 200400 013226' MOVE CS,TABP 001635' 260740 002775' PUSHJ PP,OUTASC ;OUTPUT TABS 001636' 201400 013004' OUTL25: MOVEI CS,LBUF 001637' 260740 002774' PUSHJ PP,OUTAS0 ;DUMP THE LINE 001640' 603600 000001 TLNE IO,IOSALL ;SUPPRESSING ALL 001641' 326540 001646' JUMPN MRP,OUTL27 ;YES,EXTRA CR IF IN MACRO 001642' 335000 013104' OUTL26: SKIPGE STPX ;ANY BINARY? 001643' 254000 001765' JRST OUTLI ;NO, CLEAN UP AND EXIT 001644' 260740 001774' PUSHJ PP,OUTLI2 ;YES, INITIALIZE FOR NEXT LINE 001645' 260740 002434' PUSHJ PP,BOUT ;YES, DUMP IT 001646' 260740 010316' OUTL27: PUSHJ PP,OUTCR ;OUTPUT CARRIAGE RETURN 001647' 254000 001642' JRST OUTL26 ;TEST FOR MORE BINARY 001650' 336000 013321' OUTPL: SKIPN LITLVL ;IF IN LITERAL 001651' 331000 013104' SKIPL STPX ;OR CODE GENERATED 001652' 254000 001737' JRST OUTIM ;JUST OUTPUT THE IMAGE 001653' 336000 013323' SKIPN ASGBLK ;SKIP IF AN ASSIGNMENT 001654' 254000 001737' JRST OUTIM ;OTHERWISE OUTPUT IMAGE 001655' 261740 000007 PUSH PP,C ;SAVE CHAR. 001656' 201340 000015 MOVEI C,CR 001657' 136340 013003' IDPB C,LBUFP 001660' 201340 000012 MOVEI C,LF 001661' 136340 013003' IDPB C,LBUFP ;FINISH WITH CRLF 001662' 260740 001547' PUSHJ PP,OUTLIN ;OUTPUT PARTIAL LINE 001663' 262740 000007 POP PP,C ;RESTORE CHAR. 001664' 254000 001774' JRST OUTLI2 ;INITIALISE REST OF LINE MACRO V.10 PAGE 37 LISTING ROUTINES 001665' 350400 013104' OUTL30: AOS CS,STPX ;PASS ONE 001666' 272400 013326' ADDM CS,LOCO ;INCREMENT OUTPUT LOCATION 001667' 260740 002717' PUSHJ PP,STOWI ;INITIALIZE STOW 001670' 621000 776640 TLZ AC0,ERRORS-ERRM-ERRP-ERRV 001671' 326000 001675' JUMPN AC0,OUTL32 ;JUMP IF ERRORS 001672' 603600 000001 TLNE IO,IOSALL ;SUPPRESSING ALL/ 001673' 326540 003360' JUMPN MRP,CPOPJ ;YES,EXIT 001674' 254000 001773' JRST OUTLI1 ;NO,INIT LINE 001675' 136000 013003' OUTL32: IDPB AC0,LBUFP ;ZERO TERNIMATOR 001676' 434600 013042' IOR ER,OUTSW ;LIST ERRORS 001677' 201400 012541' MOVEI CS,TAG 001700' 260740 003001' PUSHJ PP,OUTSIX ;OUTPUT TAG 001701' 550340 013377' HRRZ C,TAGINC 001702' 260740 002765' PUSHJ PP,DNC ;CONVERT INCREMENT TO DECIMAL 001703' 260740 010307' PUSHJ PP,OUTTAB ;OUTPUT TAB 001704' 260740 001712' PUSHJ PP,OUTLER ;OUTPUT ERROR FLAGS 001705' 260740 010307' PUSHJ PP,OUTTAB 001706' 201400 012544' MOVEI CS,SEQNO ;ADDRESS OF SEQUENCE NO. 001707' 332000 012544' SKIPE SEQNO ;FILE NOT SEQUENCED 001710' 260740 002774' PUSHJ PP,OUTAS0 ;OUTPUT IT 001711' 254000 001636' JRST OUTL25 ;OUTPUT BASIC LINE 001712' 261740 000014 OUTLER: PUSH PP,ER ;SAVE LISTING SWITCHES FOR LATER 001713' 602600 000001 TRNE ER,TTYSW ;IF THIS IS ON, LISTING IS ON TTY 001714' 620600 777760 TRZ ER,ERRORS ;SO SUPPRESS ON TTY 001715' 630600 013042' TDZ ER,OUTSW ;BUT THIS SHOULD ONLY GO TO THE TTY 001716' 200400 012673' MOVE CS,INDIR ;GET FILE NAME 001717' 312400 012537' 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 001720' 254000 014107' JRST OUTLE8] 001721' 200400 013414' MOVE CS,PAGENO ;NOW CHECK PAGE NUMBER 001722' 312400 013416' 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 001723' 254000 014120' JRST .+1] 001724' 502617 000000 HLLM ER,(PP) ;RESTORE ER BUT NOT IO (LEFT HALF OF AC) 001725' 262740 000014 POP PP,ER 001726' 200400 014132' MOVE CS,[POINT 7,[ASCII / QXADLRUVNOPEM/]] 001727' 134340 000010 OUTLE2: ILDB C,CS ;GET ERROR MNEMONIC 001730' 325000 001733' JUMPGE AC0,OUTLE4 ;BRANCH IF NOT FLAGGED 001731' 260740 010325' PUSHJ PP,OUTL ;OUTPUT THE CHARACTER 001732' 350000 012726' AOS ERRCNT ;INCREMENT ERROR COUNT 001733' 242000 000001 OUTLE4: LSH AC0,1 ;SHIFT NEXT FLAG INTO SIGN BIT MACRO V.10 PAGE 38 LISTING ROUTINES 001734' 326000 001727' JUMPN AC0,OUTLE2 ;TEST FOR END 001735' 263740 000000 POPJ PP, ;EXIT MACRO V.10 PAGE 39 LISTING ROUTINES 001736' 665640 000001 OUTIM1: TLOA FR,IOSCR ;SUPPRESS CRLF AFTER LINE 001737' 621640 000001 OUTIM: TLZ FR,IOSCR ;DON'T FOR PARTIAL LINE 001740' 603600 000001 TLNE IO,IOSALL ;SUPPRESSING ALL? 001741' 326540 003360' JUMPN MRP,CPOPJ ;YES ,EXIT IF IN MACRO 001742' 321640 001773' JUMP1 OUTLI1 ;BYPASS IF PASS ONE 001743' 261740 000014 PUSH PP,ER 001744' 630600 013256' TDZ ER,TYPERR 001745' 607600 250000 TLNN IO,IOMSTR!IOPROG!IOMAC 001746' 434600 013042' IOR ER,OUTSW 001747' 261740 000007 PUSH PP,C ;OUTPUT IMAGE 001750' 607640 002000 TLNN FR,CREFSW 001751' 260740 012274' PUSHJ PP,CLSCRF 001752' 200400 013226' OUTIM2: MOVE CS,TABP 001753' 260740 002775' PUSHJ PP,OUTASC ;OUTPUT TABS 001754' 136340 013003' IDPB C,LBUFP ;STORE ZERO TERMINATOR 001755' 201400 013004' MOVEI CS,LBUF 001756' 260740 002774' PUSHJ PP,OUTAS0 ;OUTPUT THE IMAGE 001757' 627640 000001 TLZN FR,IOSCR ;CRLF SUPPRESS? 001760' 260740 010316' PUSHJ PP,OUTCR ;NO,OUTPUT 001761' 262740 000007 POP PP,C 001762' 502617 000000 HLLM ER,0(PP) 001763' 262740 000014 POP PP,ER 001764' 254000 001774' JRST OUTLI2 001765' 603600 000001 OUTLI: TLNE IO,IOSALL ;SUPPRESSING ALL 001766' 326540 001772' JUMPN MRP,OUTLI3 ;YES,SET FLAG IN REPEATS ALSO 001767' 603600 004000 TLNE IO,IOPALL ;MACRO EXPANSION SUPRESS REQUESTED? 001770' 336000 013406' SKIPN MACLVL ;YES, ARE WE IN MACRO? 001771' 625600 010000 TLZA IO,IOMAC ;NO, CLEAR MAC FLAG 001772' 661600 010000 OUTLI3: TLO IO,IOMAC ;YES, SET FLAG 001773' 620600 777763 OUTLI1: TRZ ER,ERRORS!LPTSW!TTYSW 001774' 200400 014133' OUTLI2: MOVE CS,[POINT 7,LBUF] ;INITIALIZE BUFFERS 001775' 202400 013003' MOVEM CS,LBUFP 001776' 200400 014134' MOVE CS,[POINT 7,TABI,6] 001777' 202400 013226' MOVEM CS,TABP 002000' 201400 000130 MOVEI CS,.CPL 002001' 202400 013265' MOVEM CS,CPL 002002' 205400 044000 MOVSI CS,(ASCII / /) 002003' 332000 012544' SKIPE SEQNO ;HAVE WE SEQUENCE NUMBERS? 002004' 202400 012544' MOVEM CS,SEQNO ;YES, STORE TAB IN CASE OF MACRO 002005' 202400 012545' MOVEM CS,SEQNO+1 ;STORE TAB AND TERMINATOR 002006' 402000 013323' SETZM ASGBLK 002007' 402000 013324' SETZM LOCBLK 002010' 263740 000000 POPJ PP, MACRO V.10 PAGE 40 LISTING ROUTINES 002011' 603600 000001 OUTIML: TLNE IO,IOSALL ;SUPPRESSING ALL? 002012' 326540 003360' JUMPN MRP,CPOPJ ;YES,EXIT IF IN MACRO 002013' 606600 577760 TRNN ER,ERRORS-ERRQ ;FOR LITERALS (MULIT-LINE) OUTPUT ERRORS 002014' 603640 000010 TLNE FR,ERRQSW 002015' 620600 200000 TRZ ER,ERRQ 002016' 514400 000014 HRLZ CS,ER 002017' 321640 002036' JUMP1 OUTML1 ;CHECK PASS1 ERRORS 002020' 630600 013256' TDZ ER,TYPERR 002021' 322400 001736' JUMPE CS,OUTIM1 002022' 261740 014100' PUSH PP,[0] ;ERRORS SHOULD BE ZEROED 002023' 261740 000007 PUSH PP,C 002024' 261740 000000 PUSH PP,AC0 ;SAVE AC0 IN CASE CALLED FROM ASCII 002025' 200000 000010 MOVE AC0,CS ;ERROR ROUTINE WANTS FLAGS IN AC0 002026' 434600 013042' IOR ER,OUTSW 002027' 607640 002000 TLNN FR,CREFSW 002030' 260740 012274' PUSHJ PP,CLSCRF ;FIX CREF 002031' 623000 000020 TLZE AC0,ERRM 002032' 661000 000100 TLO AC0,ERRP 002033' 260740 001712' PUSHJ PP,OUTLER ;OUTPUT THEM 002034' 262740 000000 POP PP,AC0 002035' 254000 001752' JRST OUTIM2 ;AND LINE 002036' 621400 776640 OUTML1: TLZ CS,ERRORS-ERRM-ERRP-ERRV 002037' 322400 001774' JUMPE CS,OUTLI2 ;NONE 002040' 620600 001120 TRZ ER,ERRM!ERRP!ERRV 002041' 660600 010000 TRO ER,ERRL 002042' 261740 000014 PUSH PP,ER ;SAVE 002043' 261740 000007 PUSH PP,C ;SAVE THIS 002044' 261740 000000 PUSH PP,AC0 ;AS ABOVE 002045' 200000 000010 MOVE AC0,CS ;... 002046' 630600 013256' TDZ ER,TYPERR 002047' 434600 013042' IOR ER,OUTSW 002050' 201400 012541' MOVEI CS,TAG 002051' 260740 003001' PUSHJ PP,OUTSIX 002052' 550340 013377' HRRZ C,TAGINC 002053' 260740 002765' PUSHJ PP,DNC 002054' 260740 010307' PUSHJ PP,OUTTAB 002055' 260740 001712' PUSHJ PP,OUTLER ;DO NOT FORGET ERRORS 002056' 260740 010307' PUSHJ PP,OUTTAB 002057' 201400 013004' MOVEI CS,LBUF ;PRINT REST OF LINE 002060' 260740 002420' PUSHJ PP,SOUT20 002061' 262740 000000 POP PP,AC0 002062' 262740 000007 POP PP,C 002063' 262740 000014 POP PP,ER 002064' 254000 001774' JRST OUTLI2 MACRO V.10 PAGE 41 OUTPUT ROUTINES SUBTTL OUTPUT ROUTINES 002065' 260740 003025' UOUT: PUSHJ PP,LOOKUP ;SET FOR TABLE SCAN 002066' 606240 004000 TRNN ARG,PNTF ;WFW 002067' 606240 002000 TRNN ARG,UNDF 002070' 254000 002107' JRST UOUT13 ;TEST FOR UNDF!EXTF!PNTF ON PASS2 002071' 325640 002113' JUMP2 UOUT10 002072' 607600 000020 TLNN IO,IOIOPF ;ANY IOP'S SEEN 002073' 254000 002103' JRST UOUT12 ;NO,MAKE EXTERNAL 002074' 205400 777700 MOVSI CS,PRMTBL-PRMEND;YES LOOKUP IN TABLE 002075' 312010 011720' UOUT1: CAME AC0,PRMTBL(CS) ;HAVE WE A MATCH? 002076' 253400 002102' AOBJN CS,UOUT2 ;NO,INCREMENT AND JUMP 002077' 200250 011721' MOVE ARG,PRMTBL+1(CS);YES,GET VALUE 002100' 202244 000000 MOVEM ARG,(SX) ;UPDATE SYMBOL TABLE 002101' 263740 000000 POPJ PP, ;EXIT 002102' 253400 002075' UOUT2: AOBJN CS,UOUT1 ;TEST FOR END 002103' 260740 003726' UOUT12: PUSHJ PP,EXTER2 ;MAKE IT EXTERNAL 002104' 205240 002000 MOVSI ARG,UNDF ;BUT PUT UNDF BACK ON 002105' 436244 000000 IORM ARG,(SX) ;SO MESSAGE WILL COME OUT 002106' 263740 000000 POPJ PP, ;GET NEXT SYMBOL 002107' 321640 003360' UOUT13: JUMP1 CPOPJ ;RECYCLE ON PASS1 002110' 640240 007000 TRC ARG,UNDF!EXTF!PNTF ;CHECK FOR ALL THREE ON 002111' 642240 007000 TRCE ARG,UNDF!EXTF!PNTF ;ARE THEY? 002112' 263740 000000 POPJ PP, ;NO, RECYCLE 002113' 260740 010316' UOUT10: PUSHJ PP,OUTCR 002114' 260740 003010' PUSHJ PP,OUTSYM ;OUTPUT THE SYMBOL 002115' 201400 014135' MOVEI CS,[SIXBIT /UNASSIGNED, DEFINED AS IF EXTERNAL @/] 002116' 254000 003001' JRST OUTSIX ;POPJ FOR NEXT SYMBOL 002117' 260740 002751' UOUT30: PUSHJ PP,ONC1 ;OUTPUT THE LOCATION 002120' 254000 004146' JRST HIGHQ ;EXIT THROUGH HIGHQ MACRO V.10 PAGE 42 OUTPUT ROUTINES ;OUTPUT THE ENTRIES 002121' 201340 000000 EOUT: MOVEI C,0 ;INITIALIZE THE COUNT 002122' 200200 013102' MOVE SX,SYMBOL 002123' 200144 000000 MOVE SDEL,0(SX) 002124' 361140 002132' EOUT1: SOJL SDEL,EOUT2 ;TEST FOR END 002125' 271200 000002 ADDI SX,2 002126' 554244 000000 HLRZ ARG,0(SX) 002127' 411240 400600 ANDCAI ARG,SYMF!INTF!ENTF 002130' 326240 002124' JUMPN ARG,EOUT1 ;IF INVALID, DON'T COUNT 002131' 344340 002124' AOJA C,EOUT1 ;BUMP COUNT 002132' 505340 000004 EOUT2: HRLI C,4 ;BLOCK TYPE 4 002133' 260740 010122' PUSHJ PP,OUTBIN 002134' 403340 000005 SETZB C,ARG 002135' 260740 010122' PUSHJ PP,OUTBIN 002136' 200200 013102' MOVE SX,SYMBOL 002137' 200144 000000 MOVE SDEL,0(SX) 002140' 201300 000022 MOVEI V,^D18 002141' 361140 000446' EOUT3: SOJL SDEL,POPOUT 002142' 271200 000002 ADDI SX,2 002143' 554344 000000 HLRZ C,0(SX) 002144' 411340 400600 ANDCAI C,SYMF!INTF!ENTF 002145' 326340 002141' JUMPN C,EOUT3 002146' 365300 002151' SOJGE V,EOUT4 ;TEST END OF BLOCK 002147' 260740 010122' PUSHJ PP,OUTBIN 002150' 201300 000021 MOVEI V,^D17 ;WFW 002151' 200004 777777 EOUT4: MOVE AC0,-1(SX) 002152' 260740 004677' PUSHJ PP,SQOZE 002153' 200340 000000 MOVE C,AC0 002154' 260740 010122' PUSHJ PP,OUTBIN 002155' 254000 002141' JRST EOUT3 MACRO V.10 PAGE 43 OUTPUT ROUTINES ;OUTPUT THE SYMBOLS 002156' 336000 013257' SOUT: SKIPN IONSYM ;SKIP IF NOSYM SEEN 002157' 606600 000003 TRNN ER,LPTSW!TTYSW ;A LISTING REQUIRED? 002160' 254000 002314' JRST SOUT1 ;NO 002161' 201000 014143' MOVEI [ASCIZ /SYMBOL TABLE/] 002162' 542000 013100' HRRM SUBTTX ;SET NEW SUB-TITLE 002163' 260740 010417' PUSHJ PP,OUTFF ;FORCE NEW PAGE 002164' 260740 002166' PUSHJ PP,LOUT1 ;OUTPUT THEM 002165' 254000 002314' JRST SOUT1 ;NOW FOR BLOCK TYPE 2 002166' 260740 002263' LOUT1: PUSHJ PP,LLUKUP ;SET FOR TABLE SCAN 002167' 606240 400000 TRNN ARG,SYMF 002170' 606240 060000 TRNN ARG,MACF!SYNF 002171' 634540 000013 TDZA MRP,MRP ;SKIP AND CLEAR MRP 002172' 263740 000000 POPJ PP, ;NO, TRY AGAIN 002173' 602240 000400 TRNE ARG,INTF 002174' 201540 000001 MOVEI MRP,1 002175' 602240 001000 TRNE ARG,EXTF 002176' 211540 000001 MOVNI MRP,1 ;MRP=-1 FOR EXTERNAL 002177' 602240 040000 TRNE ARG,SYNF ;SYNONYM? 002200' 321540 000446' JUMPL MRP,POPOUT ;YES, DON'T OUTPUT IF EXTERNAL 002201' 602240 000004 TRNE ARG,SUPRBT ;IF SUPRESSED ; JUMPGE MRP,POPOUT ;DO NOT OUTPUT UNLESS EXTERNAL 002202' 263740 000000 POPJ PP, ;DO NOT OUTPUT 002203' 350017 000000 AOS (PP) ;SET FOR SKIP RETURN IF SYMBOL IS PRINTED 002204' 325540 002211' JUMPGE MRP,LOUT10 ;BRANCH IF NOT EXTERNAL 002205' 554440 000006 HLRZ RC,V ;PUT POINTER/FLAGS IN RC 002206' 602440 777776 TRNE RC,-2 ;POINTER? 002207' 204451 000000 MOVS RC,0(RC) ;YES 002210' 500300 000011 HLL V,RC ;STORE LEFT VALUE 002211' 261740 000011 LOUT10: PUSH PP,RC ;SAVE FOR LATER 002212' 260740 003010' PUSHJ PP,OUTSYM ;OUTPUT THE NAME 002213' 200457 000000 MOVE RC,(PP) ;GET COPY 002214' 201040 000000 MOVEI AC1,0 002215' 323540 002222' JUMPLE MRP,LOUT15 ;SET DEFFERRED BITS IF EXTERNAL 002216' 603440 777776 TLNE RC,-2 ;CHECK FOR LEFT FIXUP 002217' 435040 000040 IORI AC1,40 ;AND SET BITS 002220' 602440 777776 TRNE RC,-2 ;CHECK FOR RIGHT FIXUP 002221' 435040 000020 IORI AC1,20 ;AND SET BITS 002222' 603440 777776 LOUT15: TLNE RC,-2 ;FIX RELOC AS 0 IF EXTERNAL 002223' 553000 000011 HRRZS RC 002224' 602440 777776 TRNE RC,-2 002225' 513000 000011 HLLZS RC 002226' 623440 777777 TLZE RC,-1 002227' 660440 000002 TRO RC,2 002230' 504540 000011 HRL MRP,RC 002231' 201440 000000 MOVEI RC,0 002232' 602240 000200 TRNE ARG,ENTF ;ENTRY DMN 002233' 541540 777773 HRRI MRP,-5 002234' 602240 100000 TRNE ARG,NOOUTF ;SUPRESS OUTPUT? WFW 002235' 271540 000003 ADDI MRP,3 ;YES WFW MACRO V.10 PAGE 43-1 OUTPUT ROUTINES 002236' 602240 002000 TRNE ARG,UNDF ;UNDEFINED IS EXTERNAL 002237' 541540 000002 HRRI MRP,2 ;SO FLAG AS UXT 002240' 434053 002427' IOR AC1,SOUTC(MRP) 002241' 200240 000001 MOVE ARG,AC1 002242' 202000 013101' MOVEM AC0,SVSYM ;SAVE IT 002243' 200000 000006 MOVE AC0,V ;GET THE VALUE 002244' 554440 000013 HLRZ RC,MRP ;AND THE RELOCATION 002245' 520400 000006 HLLO CS,V 002246' 602440 000002 TRNE RC,2 ;LEFT HALF RELOCATABLE? 002247' 624400 000001 TRZA CS,1 ;NO, FLAG AND PRINT 002250' 603400 777777 TLNE CS,-1 ;IS THE LEFT HALF ZERO? 002251' 260740 002751' PUSHJ PP,ONC1 ;NO, OUTPUT IT 002252' 260740 010307' LOUT11: PUSHJ PP,OUTTAB 002253' 524400 000006 LOUT30: HRLO CS,V 002254' 630400 000011 TDZ CS,RC ;SET RELOCATION 002255' 260740 002751' PUSHJ PP,ONC1 002256' 260740 010307' PUSHJ PP,OUTTAB 002257' 262740 000011 POP PP,RC ;GET BACK RELOC AND CHECK EXTERNAL 002260' 201413 002427' LOUT60: MOVEI CS,SOUTC(MRP) 002261' 260740 002774' PUSHJ PP,OUTAS0 ;EXT/INT 002262' 254000 010316' LOUT64: JRST OUTCR ;CARRIAGE RETURN AND TRY FOR ANOTHER MACRO V.10 PAGE 44 OUTPUT ROUTINES SYN IFBLK,SYMBLK ;SOMEWHERE TO STORE THE POINTERS 002263' 262740 013040' LLUKUP: POP PP,LOOKX ;INTERCEPT RETURN POP 002264' 200200 013102' MOVE SX,SYMBOL 002265' 200144 000000 MOVE SDEL,(SX) 002266' 271200 000002 ADDI SX,2 ;SKIP COUNT OF SYMBOLS 002267' 202200 012730' LLUKP2: MOVEM SX,SYMBLK ;STORE SYMBOL POINTER IN TABLE 002270' 550200 012730' HRRZ SX,SYMBLK 002271' 254000 002300' JRST LLUKP7 ;ENTER LOOP 002272' 202200 012730' LLUKP1: MOVEM SX,SYMBLK ;SAVE IT 002273' 200004 777777 MOVE AC0,-1(SX) 002274' 260740 012340' PUSHJ PP,SRCH7 002275' 557000 000005 HLRZS ARG 002276' 260760 013040' PUSHJ PP,@LOOKX JRST [MOVEM SX,SYMBLK 002277' 254000 014146' JRST .+1] 002300' 361140 000446' LLUKP7: SOJL SDEL,POPOUT ;TEST FOR END 002301' 200200 012730' LLUKP3: MOVE SX,SYMBLK ;GET NEXT POINTER 002302' 252200 002311' AOBJP SX,LLUKP4 002303' 550300 000004 HRRZ V,SX 002304' 317300 013103' CAMG V,SYMTOP 002305' 344200 002272' AOJA SX,LLUKP1 002306' 260740 002262' LLUKP6: PUSHJ PP,LOUT64 ;RESET SYMCNT 002307' 322140 000446' JUMPE SDEL,POPOUT ;EXIT IF ALL DONE 002310' 254000 002301' JRST LLUKP3 002311' 340200 000000 LLUKP4: AOJ SX, 002312' 202200 012730' MOVEM SX,SYMBLK 002313' 254000 002301' JRST LLUKP3 MACRO V.10 PAGE 45 OUTPUT ROUTINES 002314' 260740 003025' SOUT1: PUSHJ PP,LOOKUP ;SET FOR TABLE SCAN 002315' 606240 400000 TRNN ARG,SYMF 002316' 606240 060000 TRNN ARG,MACF!SYNF 002317' 634540 000013 TDZA MRP,MRP ;SKIP AND CLEAR MRP 002320' 263740 000000 POPJ PP, ;NO, TRY AGAIN 002321' 602240 000400 TRNE ARG,INTF 002322' 201540 000001 MOVEI MRP,1 002323' 602240 001000 TRNE ARG,EXTF 002324' 211540 000001 MOVNI MRP,1 ;MRP=-1 FOR EXTERNAL 002325' 602240 040000 TRNE ARG,SYNF ;SYNONYM? 002326' 321540 000446' JUMPL MRP,POPOUT ;YES, DON'T OUTPUT IF EXTERNAL 002327' 602240 000004 TRNE ARG,SUPRBT ;IF SUPRESSED ; JUMPGE MRP,POPOUT ;DO NOT OUTPUT UNLESS EXTERNAL 002330' 263740 000000 POPJ PP, ;DO NOT OUTPUT 002331' 325540 002336' JUMPGE MRP,SOUT10 ;BRANCH IF NOT EXTERNAL 002332' 554440 000006 HLRZ RC,V ;PUT POINTER/FLAGS IN RC 002333' 602440 777776 TRNE RC,-2 ;POINTER? 002334' 204451 000000 MOVS RC,0(RC) ;YES 002335' 500300 000011 HLL V,RC ;STORE LEFT VALUE 002336' 261740 000011 SOUT10: PUSH PP,RC ;SAVE FOR LATER 002337' 201040 000000 MOVEI AC1,0 002340' 323540 002345' JUMPLE MRP,SOUT15 ;SET DEFFERRED BITS IF EXTERNAL 002341' 603440 777776 TLNE RC,-2 ;CHECK FOR LEFT FIXUP 002342' 435040 000040 IORI AC1,40 ;AND SET BITS 002343' 602440 777776 TRNE RC,-2 ;CHECK FOR RIGHT FIXUP 002344' 435040 000020 IORI AC1,20 ;AND SET BITS 002345' 603440 777776 SOUT15: TLNE RC,-2 ;FIX RELOC AS 0 IF EXTERNAL 002346' 553000 000011 HRRZS RC 002347' 602440 777776 TRNE RC,-2 002350' 513000 000011 HLLZS RC 002351' 623440 777777 TLZE RC,-1 002352' 660440 000002 TRO RC,2 002353' 504540 000011 HRL MRP,RC 002354' 201440 000000 MOVEI RC,0 002355' 602240 000200 TRNE ARG,ENTF ;ENTRY DMN 002356' 541540 777773 HRRI MRP,-5 002357' 602240 100000 TRNE ARG,NOOUTF ;SUPRESS OUTPUT? WFW 002360' 271540 000003 ADDI MRP,3 ;YES WFW 002361' 434053 002427' IOR AC1,SOUTC(MRP) 002362' 200240 000001 MOVE ARG,AC1 002363' 260740 002624' PUSHJ PP,NOUT2 ;SQUOZE AND DUMP THE SYMBOL 002364' 202000 013101' MOVEM AC0,SVSYM ;SAVE IT 002365' 200000 000006 MOVE AC0,V ;GET THE VALUE 002366' 554440 000013 HLRZ RC,MRP ;AND THE RELOCATION 002367' 260740 002640' PUSHJ PP,COUT 002370' 262740 000011 POP PP,RC ;GET BACK RELOC AND CHECK EXTERNAL 002371' 606440 777776 TRNN RC,-2 ;IS IT? 002372' 254000 002404' JRST SOUT50 ;NO 002373' 200011 000001 MOVE AC0,1(RC) ;GET NAME 002374' 201240 000060 MOVEI ARG,60 ;EXTERNAL REQ 002375' 260740 004677' PUSHJ PP,SQOZE 002376' 513000 000011 HLLZS RC ;NO RELOC MACRO V.10 PAGE 45-1 OUTPUT ROUTINES 002377' 260740 002640' PUSHJ PP,COUT ;OUTPUT IT 002400' 200000 013101' MOVE AC0,SVSYM ;GET SYMBOL NAME 002401' 661000 500000 TLO AC0,500000 ;SET AS ADDITIVE SYMBOL 002402' 621000 200000 TLZ AC0,200000 ;BUT NOT LEFT HALF ETC 002403' 260740 002640' PUSHJ PP,COUT 002404' 207000 000011 SOUT50: MOVSS RC ;CHECK LEFT HALF 002405' 606440 777776 TRNN RC,-2 002406' 254000 002417' JRST SOUT60 002407' 200011 000001 MOVE AC0,1(RC) 002410' 201240 000060 MOVEI ARG,60 002411' 260740 004677' PUSHJ PP,SQOZE 002412' 201440 000000 MOVEI RC,0 002413' 260740 002640' PUSHJ PP,COUT 002414' 200000 013101' MOVE AC0,SVSYM 002415' 661000 700000 TLO AC0,700000 002416' 260740 002640' PUSHJ PP,COUT 002417' 263740 000000 SOUT60: POPJ PP, 002420' 260740 002774' SOUT20: PUSHJ PP,OUTAS0 002421' 254000 010316' JRST OUTCR 002422' 426352 400004 !04 ;DMN 002423' 000000 000000 Z 002424' 000000 000000 Z 002425' 516131 600044 !44 ;SUPRESSED ENTRY 002426' 426612 400060 !60 002427' 000000 000010 SOUTC: EXP 10 002430' 446352 400004 !04 002431' 526612 400060 !60 ;UNDEFINED EXTERNAL 002432' 516410 400050 !50 002433' 516231 600044 !44 ;DMN MACRO V.10 PAGE 46 OUTPUT ROUTINES ;OUTPUT THE BINARY 002434' 524400 013326' BOUT: HRLO CS,LOCO ;PICKUP THE LOCATION 002435' 260740 002747' PUSHJ PP,ONC ;OUTPUT IT TO THE LISTING FILE 002436' 201340 000047 MOVEI C,"'" 002437' 332000 013334' SKIPE MODO ;IF MODE IS NOT ABSOLUTE 002440' 260740 010377' PUSHJ PP,OUTC ;PRINT A SINGLE QUOTE 002441' 260740 002712' PUSHJ PP,DSTOW ;GET THE CODE 002442' 261740 000011 PUSH PP,RC ;SAVE RELOC 002443' 261740 000011 PUSH PP,RC ;AND AGAIN 002444' 603440 777776 TLNE RC,-2 ;CHECK LEFT EXTERNAL 002445' 553000 000011 HRRZS RC ;MAKE LEFT NON-RELOC 002446' 606440 777776 TRNN RC,-2 ;RIGHT EXT? 002447' 254000 002470' JRST BOUT30 ;NO 002450' 550040 000000 HRRZ AC1,AC0 ;YES 002451' 322040 002454' JUMPE AC1,BOUT20 ;PROCESS IF ZERO CODE THERE 002452' 513000 000011 HLLZS RC ;MAKE NON-RELOC 002453' 254000 002470' JRST BOUT30 ;PROCESS MACRO V.10 PAGE 47 OUTPUT ROUTINES 002454' BOUT20: 002454' 542057 777777 HRRM AC1,-1(PP) ;FIX RC IN STACK SO NO CONFUSION WFW (AC1 HAS 0) 002455' 540011 000000 HRR AC0,0(RC) ;NO, SET ADDRESS LINK 002456' 200040 013326' MOVE AC1,LOCO ;GET CURRENT LOCATION 002457' 542051 000000 HRRM AC1,0(RC) ;SET NEW LINK 002460' 554051 000000 HLRZ AC1,0(RC) ;GET FLAGS/POINTER 002461' 606040 777776 TRNN AC1,-2 ;POINTER? 002462' 540040 000011 HRR AC1,RC ;NO, SET TO FLAGS 002463' 544441 000000 HLR RC,0(AC1) ;PUT FLAGS IN RC 002464' 504040 013334' HRL AC1,MODO ;GET CURRENT MODE 002465' 622440 777776 TRZE RC,-2 ;LEFT HALF RELOCATABLE+ 002466' 661040 000002 TLO AC1,2 ;YES, SET FLAG 002467' 502041 000000 HLLM AC1,0(AC1) ;STORE NEW FLAGS 002470' 520400 000000 BOUT30: HLLO CS,AC0 002471' 623440 000001 TLZE RC,1 ;PACK RELOCATION BITS 002472' 660440 000002 TRO RC,2 002473' 602440 000002 TRNE RC,2 ;LEFT HALF RELOCATABLE? 002474' 620400 000001 TRZ CS,1 ;YES, RESET BIT 002475' 261740 000000 PUSH PP,AC0 ;NEED AN AC 002476' 554017 777777 HLRZ AC0,-1(PP) ;AC0 = LEFT RELOCATION 002477' 303000 000001 CAILE AC0,1 ;EXTERNAL? 002500' 431400 001001 XORI CS,EXTF!1 ;YES, SET SWITCH MACRO V.10 PAGE 48 OUTPUT ROUTINES 002501' 262740 000000 POP PP,AC0 ;RESTORE 002502' 260740 002747' PUSHJ PP,ONC 002503' 524400 000000 HRLO CS,AC0 002504' 630400 000011 TDZ CS,RC ;SET RELOCATION 002505' 550357 000000 HRRZ C,(PP) ;C = RIGHT RELOCATION 002506' 303340 000001 CAILE C,1 ;EXTERNAL 002507' 431400 001001 XORI CS,EXTF!1 ;YES, SET SWITCH 002510' 260740 002747' PUSHJ PP,ONC 002511' 262740 000010 BOUT3I: POP PP,CS ;GET RID OF ENTRY ON STACK 002512' 550400 013326' HRRZ CS,LOCO 002513' 603640 004500 TLNE FR,RIMSW!RIM1SW!R1BSW ;RIM OUTPUT? 002514' 254000 010076' JRST ROUT ;YES, GO PROCESS 002515' 504400 013334' HRL CS,MODO 002516' 312400 013333' CAME CS,MODLOC ;SEQUENCE OR RELOCATION BREAK? 002517' 260740 002645' PUSHJ PP,COUTD ;YES, DUMP THE BUFFER 002520' 331000 012700' SKIPL COUTX ;NEW BUFFER? 002521' 254000 002530' JRST BOUT40 ;NO, STORE CODE AND EXIT 002522' 202400 013333' MOVEM CS,MODLOC ;YES, STORE NEW VALUES 002523' 250000 013326' EXCH AC0,LOCO 002524' 250440 013334' EXCH RC,MODO 002525' 260740 002640' PUSHJ PP,COUT ;STORE BLOCK LOCATION AND MODE 002526' 250440 013334' EXCH RC,MODO ;RESTORE CURRENT VALUES 002527' 250000 013326' EXCH AC0,LOCO MACRO V.10 PAGE 49 OUTPUT ROUTINES 002530' 260740 002640' BOUT40: PUSHJ PP,COUT ;EMIT CODE 002531' 262740 000011 POP PP,RC ;RETRIEVE EXTERNAL BITS 002532' 606440 777776 TRNN RC,-2 ;RIGHT EXTERNAL? 002533' 254000 002555' JRST BOUT50 ;TRY FOR LEFT 002534' 260740 002645' PUSHJ PP,COUTD 002535' 261740 012677' PUSH PP,BLKTYP ;TERMINATE TYPE AND SAVE 002536' 201000 000002 MOVEI AC0,2 ;BLOCK TYPE 2 002537' 202000 012677' MOVEM AC0,BLKTYP 002540' 200011 000001 MOVE AC0,1(RC) ;GET SYMBOL 002541' 201240 000060 MOVEI ARG,60 ;CODE BITS 002542' 260740 004677' PUSHJ PP,SQOZE ;CONVERT TO RADIX 50 002543' 513000 000011 HLLZS RC ;SYMBOL HAS NO RELOCATION 002544' 260740 002640' PUSHJ PP,COUT ;EMIT 002545' 200000 013326' MOVE AC0,LOCO ;GET CURRENT LOC 002546' 505000 400000 HRLI AC0,400000 ;ADDITIVE REQ 002547' 540440 013334' HRR RC,MODO ;CURRENT MODE 002550' 260740 002640' PUSHJ PP,COUT ;EMIT 002551' 207000 000011 MOVSS RC ;NOW FOR LEFT 002552' 606440 777776 TRNN RC,-2 002553' 254000 002575' JRST BOUT60 002554' 254000 002564' JRST BOUT70 002555' 207000 000011 BOUT50: MOVSS RC ;CHECK OTHER HALF 002556' 606440 777776 TRNN RC,-2 ;LEFT HALF EXTERNAL? 002557' 254000 002577' JRST BOUT80 ;NO, FALSE ALARM 002560' 260740 002645' PUSHJ PP,COUTD ;CHANGE MODE 002561' 261740 012677' PUSH PP,BLKTYP 002562' 201000 000002 MOVEI AC0,2 002563' 202000 012677' MOVEM AC0,BLKTYP 002564' 200011 000001 BOUT70: MOVE AC0,1(RC) 002565' 201240 000060 MOVEI ARG,60 002566' 260740 004677' PUSHJ PP,SQOZE 002567' 513000 000011 HLLZS RC 002570' 260740 002640' PUSHJ PP,COUT 002571' 200000 013326' MOVE AC0,LOCO 002572' 505000 600000 HRLI AC0,600000 ;LEFT HALF ADD 002573' 540440 013334' HRR RC,MODO 002574' 260740 002640' PUSHJ PP,COUT ;EMIT 002575' 260740 002645' BOUT60: PUSHJ PP,COUTD ;CHANGE MODE 002576' 262740 012677' POP PP,BLKTYP ;TO OLD ONE 002577' 350000 013326' BOUT80: AOS LOCO 002600' 350000 013333' AOS MODLOC 002601' 263740 000000 POPJ PP, MACRO V.10 PAGE 50 OUTPUT ROUTINES 002602' 200300 014150' NOUT: MOVE V,[POINT 7,TBUF] ;POINTER TO ASCII LINE 002603' 205400 440600 MOVSI CS,(POINT 6,AC0) ;POINTER TO SIXBIT AC0 002604' 403240 000000 SETZB ARG,AC0 002605' 134340 000006 NOUT1: ILDB C,V ;GET ASCII 002606' 301340 000141 CAIL C,"A"+40 002607' 303340 000172 CAILE C,"Z"+40 002610' 254000 002612' JRST .+2 002611' 624340 000100 TRZA C,100 ;LOWER CASE TO SIXBIT 002612' 275340 000040 SUBI C,40 ;CONVERT TO SIXBIT 002613' 323340 002621' JUMPLE C,NOUT3 ;TEST FORM NON-SIXBIT 002614' 303340 000077 CAILE C,77 ;AND NOT GREATER THAN SIXBIT 002615' 254000 002621' JRST NOUT3 ;... 002616' 136340 000010 IDPB C,CS ;DEPOSIT IN AC0 002617' 603400 770000 TLNE CS,770000 ;TEST FOR SIX CHARACTERS 002620' 254000 002605' JRST NOUT1 ;NO, GET ANOTHER 002621' NOUT3: IFN UNIVR, 002621' 263740 000000 POPJ PP, ;RETURN TO PUT IT IN THE TABLE 002622' 607600 000002 IFN CCLSW,< TLNN IO,IOTLSN ;AND IF WE HAVE NOT SEEN A TITLE 002623' 260740 004235' PUSHJ PP,PRNAM ;THEN PRINT THE NAME> 002624' 260740 004677' NOUT2: PUSHJ PP,SQOZE ;CONVERT TO SIXBIT 002625' 254000 002640' JRST COUT ;DUMP AND EXIT 002626' HOUT: 002626' 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 > 002627' 200000 013263' MOVE AC0,HIGH IFN RENTSW,< SKIPE HHIGH ;ANY TWOSEG HIGH STUFF JRST COUT ;YES,SO NO ABS.> 002630' 260740 002640' PUSHJ PP,COUT ;OUTPUT THE HIGHEST LOCATION 002631' 200000 013262' MOVE AC0,ABSHI ;PUT OUT ABS PORTION OF PROGRAM BREAK 002632' 364440 002640' SOJA RC,COUT ;OUTPUT A WORD OF ZERO AND EXIT MACRO V.10 PAGE 51 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> 002633' 336440 013400' VOUT: SKIPN RC,VECREL ;IS VECTOR ABSOLUTE ZERO? 002634' 332000 013401' SKIPE VECTOR ;ALSO CHECK RELOCATION 002635' 254000 002637' JRST .+2 002636' 263740 000000 POPJ PP, ;YES, EXIT 002637' 200000 013401' MOVE AC0,VECTOR ;AC0 SHOULD BE FLAGS 002640' 350340 012700' COUT: AOS C,COUTX ;INCREMENT INDEX 002641' 202007 012704' MOVEM AC0,COUTDB(C) ;STORE CODE 002642' 136440 012702' IDPB RC,COUTP ;STORE RELOCATION BITS 002643' 302340 000021 CAIE C,^D17 ;IS THE BUFFER FULL? 002644' 263740 000000 POPJ PP, ;NO, EXIT 002645' 357340 012700' COUTD: AOSG C,COUTX ;DUMP THE BUFFER 002646' 254000 002657' JRST COUTI ;BUFFER WAS EMPTY 002647' 504340 012677' HRL C,BLKTYP ;SET BLOCK TYPE 002650' 260740 010122' PUSHJ PP,OUTBIN ;OUTPUT COUNT AND TYPE 002651' 477340 012701' SETOB C,COUTY ;INITIALIZE INDEX 002652' 200347 012704' COUTD2: MOVE C,COUTDB(C) ;GET RELOCATION BITS/CODE 002653' 260740 010122' PUSHJ PP,OUTBIN ;DUMP IT 002654' 350340 012701' AOS C,COUTY ;INCREMENT INDEX 002655' 315340 012700' CAMGE C,COUTX ;TEST FOR END 002656' 254000 002652' JRST COUTD2 ;NO, GET NEXT WORD 002657' 476000 012700' COUTI: SETOM COUTX ;INITIALIZE BUFFER INDEX 002660' 402000 012703' SETZM COUTRB ;ZERO RELOCATION BITS 002661' 200340 014151' MOVE C,[POINT 2,COUTRB] 002662' 202340 012702' MOVEM C,COUTP ;INITIALIZE BIT POINTER 002663' 263740 000000 POPJ PP, ;EXIT MACRO V.10 PAGE 52 OUTPUT ROUTINES 002664' STOWZ1: 002664' 201440 000000 STOWZ: MOVEI RC,0 002665' STOW: 002665' 321640 002677' JUMP1 STOW20 ;SKIP TEST IF PASS ONE 002666' 602440 777776 TRNE RC,-2 ;RIGHT HALF ZERO OR 1? 002667' 260740 002735' PUSHJ PP,STOWT ;NO, HANDLE EXTERNAL 002670' 607440 777776 TLNN RC,-2 ;LEFT HALF ZERO OR 1? WFW 002671' 254000 002675' JRST STOW10 ;YES, SKIP TEST 002672' 207000 000011 MOVSS RC ;SWAP HALVES 002673' 260740 002742' PUSHJ PP,STOWT1 ;HANDLE EXTERNAL WFW 002674' 207000 000011 MOVSS RC ;RESTORE VALUES 002675' 332000 013270' STOW10: SKIPE EXTPNT ;ANY EXTERNALS REMAINING? 002676' 660600 000040 TRO ER,ERRE ;YES, SET EXTERNAL ERROR FLAG 002677' 350040 013104' STOW20: AOS AC1,STPX ;INCREMENT POINTER 002700' 202001 013106' MOVEM AC0,STCODE(AC1) ;STOW CODE 002701' 202441 013156' MOVEM RC,STOWRC(AC1) ;STOW RELOCATION BITS 002702' 336000 013321' SKIPN LITLVL ;ARE WE IN LITERAL? 002703' 350000 013325' AOS LOCA ;NO, INCREMENT ASSEMBLY LOCATION 002704' 305040 000047 CAIGE AC1,.STP-1 ;OVERFLOW? 002705' 263740 000000 POPJ PP, ;NO, EXIT 002706' 332000 013321' SKIPE LITLVL ;ARE WE IN A LITERAL? 002707' 664600 010000 TROA ER,ERRL ;YES, FLAG ERROR BUT DON'T DUMP 002710' 254000 001444' JRST CHARL1 ;NO, SAVE REGISTERS AND DUMP THE BUFFER 002711' 254000 002717' JRST STOWI ;INITIALIZE BUFFER 002712' 350040 013105' DSTOW: AOS AC1,STPY ;INCREMENT POINTER 002713' 200001 013106' MOVE AC0,STCODE(AC1) ;FETCH CODE 002714' 200441 013156' MOVE RC,STOWRC(AC1) ;FETCH RELOCATION BITS 002715' 315040 013104' CAMGE AC1,STPX ;IS THIS THE END? 002716' 263740 000000 POPJ PP, ;NO, EXIT 002717' 476000 013104' STOWI: SETOM STPX ;INITIALIZE FOR INPUT 002720' 476000 013105' SETOM STPY ;INITIALIZE FOR OUTPUT 002721' 402000 013270' SETZM EXTPNT 002722' 263740 000000 POPJ PP, ;EXIT MACRO V.10 PAGE 53 OUTPUT ROUTINES 002723' 350000 013321' SVSTOW: AOS LITLVL ;NESTED LITERALS 002724' 261740 013104' PUSH PP,STPX ;MAKE ROOM FOR ANOTHER 002725' 261740 013105' PUSH PP,STPY 002726' 200040 013104' MOVE AC1,STPX 002727' 202040 013105' MOVEM AC1,STPY 002730' 254002 000000 JRST 0(AC2) 002731' 262740 013105' GTSTOW: POP PP,STPY ;BACK UP A LEVEL 002732' 262740 013104' POP PP,STPX 002733' 370000 013321' SOS LITLVL 002734' 254002 000000 JRST 0(AC2) ;EXTERNAL RIGHT 002735' 550040 013270' STOWT: HRRZ AC1,EXTPNT ;GET RIGHT POINTER 002736' 302051 000000 CAIE AC1,(RC) ;DOES IT MATCH 002737' 260740 003752' PUSHJ PP,QEXT ;EXTERNAL OR RELOCATION ERROR 002740' 513000 013270' HLLZS EXTPNT 002741' 263740 000000 POPJ PP, ;EXIT ;EXTERNAL LEFT 002742' 554040 013270' STOWT1: HLRZ AC1,EXTPNT ;GET LEFT HALF 002743' 302051 000000 CAIE AC1,(RC) ;SEE ABOVE 002744' 260740 003752' PUSHJ PP,QEXT 002745' 553000 013270' HRRZS EXTPNT 002746' 263740 000000 POPJ PP, ;EXIT MACRO V.10 PAGE 54 OUTPUT ROUTINES 002747' 134340 013226' ONC: ILDB C,TABP ;ENTRY TO ADVANCE TAB POINTER 002750' 260740 010325' PUSHJ PP,OUTL ;OUTPUT A TAB ;OUTPUT 6 OCT NUMBERS FROM CS LEFT 002751' 201340 000006 ONC1: MOVEI C,6 ;CONVERT TO ASCII 002752' 246340 000003 LSHC C,3 ;SHIFT IN OCTAL 002753' 260740 010325' PUSHJ PP,OUTL ;OUTPUT ASCII FROM C 002754' 602400 777777 TRNE CS,-1 ;ARE WE THROUGH? 002755' 254000 002751' JRST ONC1 ;NO, GET ANOTHER 002756' 201340 000000 MOVEI C,0 ;CLEAR C 002757' 607400 000001 TLNN CS,1 ;RELOCATABLE? 002760' 201340 000047 MOVEI C,"'" ;YES 002761' 607400 001000 TLNN CS,EXTF ;OR EXTERNAL 002762' 201340 000052 MOVEI C,"*" ;YES 002763' 326340 010377' ONC2: JUMPN C,OUTC ;OUTPUT IF EXTERN OR RELOCATABLE 002764' 263740 000000 POPJ PP, ;EXIT 002765' 231340 000012 DNC: IDIVI C,^D10 002766' 506417 000000 HRLM CS,0(PP) 002767' 322340 002771' JUMPE C,.+2 002770' 260740 002765' PUSHJ PP,DNC ;RECURSE IF NON-ZERO 002771' 554357 000000 HLRZ C,0(PP) 002772' 271340 000060 ADDI C,"0" ;FORM ASCII 002773' 254000 010310' JRST PRINT ;DUMP AND TEST FOR END 002774' 505400 440700 OUTAS0: HRLI CS,(POINT 7,,) ;ENTRY TO SET POINTER 002775' 134340 000010 OUTASC: ILDB C,CS ;GET NEXT BYTE 002776' 322340 000446' JUMPE C,POPOUT ;EXIT ON ZERO DELIMITER 002777' 260740 010310' PUSHJ PP,PRINT 003000' 254000 002775' JRST OUTASC 003001' 505400 440600 OUTSIX: HRLI CS,(POINT 6,,) ;OUTPUT SIXBIT 003002' 134340 000010 ILDB C,CS ;GET SIXBIT 003003' 306340 000040 CAIN C,40 ;"@" DELIMITER? 003004' 263740 000000 POPJ PP, ;YES, EXIT 003005' 271340 000040 ADDI C,40 ;NO, FORM ASCII 003006' 260740 010325' PUSHJ PP,OUTL ;OUTPUT ASCII CHAR FROM C 003007' 254000 003002' JRST OUTSIX+1 003010' 200400 000000 OUTSYM: MOVE CS,AC0 ;PLACE NAME IN CS 003011' 201340 000000 OUTSY1: MOVEI C,0 ;CLEAR C 003012' 246340 000006 LSHC C,6 ;MOVE NEXT SIXBIT CHARACTER IN 003013' 322340 010307' JUMPE C,OUTTAB ;TEST FOR END 003014' 271340 000040 ADDI C,40 ;CONVERT TO ASCII 003015' 260740 010325' PUSHJ PP,OUTL ;OUTPUT 003016' 254000 003011' JRST OUTSY1 ;LOOP MACRO V.10 PAGE 55 OUTPUT ROUTINES 003017' 350217 000000 OUTSET: AOS SX,0(PP) ;GET RETURN LOCATION 003020' 200204 777777 MOVE SX,-1(SX) ;GET XWD CODE 003021' 546200 012677' HLRM SX,BLKTYP ;SET BLOCK TYPE 003022' 403240 000011 SETZB ARG,RC 003023' 260744 000000 PUSHJ PP,0(SX) ;GO TO PRESCRIBED ROUTINE 003024' 254000 002645' JRST COUTD ;TERMINATE BLOCK AND EXIT ;LOOKUP SCANS ALL THE SYMBOLS IN THE SYMBOL TABLE 003025' 262740 013040' LOOKUP: POP PP,LOOKX ;INTERCEPT RETURN POP 003026' 200200 013102' MOVE SX,SYMBOL 003027' 200144 000000 MOVE SDEL,0(SX) ;SET FOR TABLE SCAN 003030' 361140 000446' LOOKL: SOJL SDEL,POPOUT ;TEST FOR END 003031' 271200 000002 ADDI SX,2 003032' 200004 777777 MOVE AC0,-1(SX) 003033' 260740 012340' PUSHJ PP,SRCH7 ;LOAD REGISTERS 003034' 557000 000005 HLRZS ARG 003035' 260760 013040' PUSHJ PP,@LOOKX ;RETURN TO CALLING ROUTINE 003036' 254000 003030' JRST LOOKL ;TRY AGAIN MACRO V.10 PAGE 56 OUTPUT ROUTINES 003037' 260740 001057' END0: PUSHJ PP,EVALCM ;GET A WORD 003040' 332000 013270' SKIPE EXTPNT ;ANY EXTERNALS? 003041' 660600 000040 TRO ER,ERRE ;YES, ERROR 003042' 336300 000000 SKIPN V,AC0 ;NON-ZERO? 003043' 322440 003045' JUMPE RC,.+2 ;OR RELOC? 003044' 260740 004027' PUSHJ PP,ASSIG7 ;YES, LIST THE VALUE 003045' 202000 013401' MOVEM AC0,VECTOR 003046' 202440 013400' MOVEM RC,VECREL 003047' 260740 003462' PUSHJ PP,VARA ;FILL OUT SELF-DEFINED VARIABLES 003050' 260740 000227' PUSHJ PP,STOUTS ;DUMP THE LINE ; PUSH PP,IO ;SAVE FLAGS ; TLO IO,IOPROG ;XLIST LITS 003051' 260740 003367' PUSHJ PP,LIT1 ; POP PP,IO ;GET FLAG BACK 003052' 325640 003127' JUMP2 ENDP2 003053' 260740 002065' PUSHJ PP,UOUT 003054' 607600 000010 TLNN IO,MFLSW ;SKIP IF ONLY PSEND 003055' 260740 007155' PUSHJ PP,REC2 003056' 200000 012673' MOVE INDIR ;SET UP FIRST AS LAST 003057' 202000 012537' MOVEM LSTFIL ;PRINTED 003060' 402000 013416' SETZM LSTPGN 003061' 260740 003267' PUSHJ PP,INZ 003062' 603600 000010 TLNE IO,MFLSW ;IF PSEND 003063' 263740 000000 POPJ PP, ;BACK TO PSEND0 003064' 332000 013260' SKIPE PRGPTR ;HAVE ANY PRGEND'S BEEN SEEN 003065' 254000 004730' JRST PSEND3 ;YES,GO SET UP AGAIN 003066' 402000 013266' PASS20: SETZM CTLSAV 003067' 260740 002657' PUSHJ PP,COUTI 003070' 260740 002121' PUSHJ PP,EOUT ;OUTPUT THE ENTRIES 003071' 260740 003017' PUSHJ PP,OUTSET 003072' 000006 002602' 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: > 003073' 201000 000001 MOVEI 1 003074' 542000 012677' HRRM BLKTYP ;SET FOR TYPE 1 BLOCK 003075' 621640 400000 TLZ FR,P1 ;SET FOR PASS 2 AND TURN OFF FLAG 003076' 661600 004000 TLO IO,IOPALL ;PUT THESE BACK 003077' 621600 040440 TLZ IO,IOPROG!IOCREF!DEFCRS ;SO LISTINGS WILL BE THE WAY THEY SHOULD 003100' 607640 004000 TLNN FR,R1BSW 003101' 254000 002717' JRST STOWI 003102' 200400 014152' MOVE CS,[XWD $ST-1-$CKSM,R1BLDR] 003103' 200350 000000 MOVE C,0(CS) 003104' 260740 010123' PUSHJ PP,PTPBIN 003105' 253400 003103' AOBJN CS,.-2 003106' 260740 010203' PUSHJ PP,R1BI 003107' 254000 002717' JRST STOWI MACRO V.10 PAGE 57 OUTPUT ROUTINES 003110' R1BLDR: 000000 PHASE 0 003110' 777762 000000 IOWD $ADR,$ST 003111' 710600 000060 $ST: CONO PTR,60 003112' 541400 000004 HRRI $A,$RD+1 003113' 710740 000010 $RD: CONSO PTR,10 003114' 254000 000003 JRST .-1 003115' 710470 000007 DATAI PTR,@$TBL1-$RD+1($A) 003116' 256010 000007 XCT $TBL1-$RD+1($A) 003117' 256010 000012 XCT $TBL2-$RD+1($A) 003120' 364400 000000 $A: SOJA $A, 003121' 312740 000016 $TBL1: CAME $CKSM,$ADR 003122' 270756 000001 ADD $CKSM,1($ADR) 003123' 331740 000016 SKIPL $CKSM,$ADR 003124' 254200 000001 $TBL2: JRST 4,$ST 003125' 253700 000003 AOBJN $ADR,$RD 003126' 254000 000002 $ADR: JRST $ST+1 000017 $CKSM: 003127' DEPHASE IF2,< PURGE $ST,$RD,$A,$TBL1,$TBL2,$ADR,$CKSM> MACRO V.10 PAGE 58 OUTPUT ROUTINES 003127' 260740 002645' ENDP2: PUSHJ PP,COUTD ;DUMP THE BUFFER 003130' 200000 013326' MOVE AC0,LOCO ;CHECK TO SEE IF LIT DIFFERED 003131' 336000 013334' SKIPN MODO ;AND USE SMALLER SINCE AT END JRST [CAMN AC0,ABSHI HRRZM AC2,ABSHI 003132' 254000 014153' JRST ENDP2W] IFN RENTSW, 003133' 316000 013263' CAMN AC0,HIGH 003134' 552100 013263' HRRZM AC2,HIGH 003135' ENDP2W: 003135' 603600 000400 REPEAT 1, REPEAT 0, ;NEEDS FIX TO CREF 003136' 260740 012276' PUSHJ PP,CLSCR2 ;CLOSE IT UP 003137' 540600 013042' ENDP2Q: HRR ER,OUTSW ;SET OUTPUT SWITCH 003140' 336000 013256' SKIPN TYPERR 003141' 660600 000001 TRO ER,TTYSW 003142' 260740 002065' PUSHJ PP,UOUT ;OUTPUT UNDEFINEDS 003143' 660600 000001 TRO ER,TTYSW 003144' 000000 000007 SKPINC C ;SEE IF WE CAN INPUT A CHAR. 003145' 255000 000000 JFCL ;BUT ONLY TO DEFEAT ^O 003146' 337340 012726' SKIPG C,ERRCNT ;GET ERROR COUNT AND CHECK FOR POSITIVE 003147' 254000 003165' JRST NOERW ;PRINT NO ERROR MESSAGE 003150' 272340 000000* IFN CCLSW, 003151' 260740 010316' PUSHJ PP,OUTCR 003152' 200340 012726' MOVE C,ERRCNT 003153' 306340 000001 CAIN C,1 ;1 IS A SPECIAL CASE 003154' 254000 003162' JRST ONERW ;PRINT MESSAGE 003155' 201340 000077 MOVEI C,"?" ;? FOR BATCH 003156' 260740 010325' PUSHJ PP,OUTL ;... 003157' 200340 012726' MOVE C,ERRCNT ;PRINT NUMBER OF ERRORS 003160' 260740 002765' PUSHJ PP,DNC 003161' 334400 014156' SKIPA CS,[EXP ERRMS1] ;LOAD TO PRINT 003162' 201400 007671' ONERW: MOVEI CS,ERRMS2 ;ONE ERROR DETECTED 003163' 260740 003001' ONERW1: PUSHJ PP,OUTSIX ;PRINT MACRO V.10 PAGE 58-1 OUTPUT ROUTINES 003164' 254000 003173' JRST ENDP2A 003165' 201400 007674' NOERW: MOVEI CS,ERRMS3 003166' 603600 001010 IFN CCLSW, IFE CCLSW, 003167' 620600 000001 TRZ ER,TTYSW ;NO TTY OUTPUT 003170' 434600 013042' IOR ER,OUTSW ;UNLESS NEEDED FOR LISTING 003171' 260740 010316' PUSHJ PP,OUTCR 003172' 254000 003163' JRST ONERW1 MACRO V.10 PAGE 59 OUTPUT ROUTINES 003173' 260740 010316' ENDP2A: PUSHJ PP,OUTCR 003174' 607600 000010 TLNN IO,MFLSW ;IN A MULTI-PROG FILE? 003175' 254000 003201' JRST ENDP2D ;NO 003176' 332000 012726' 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 003177' 260740 014161' JRST OUTCR] ;AND A CR-LF 003200' 624600 000001 TRZA ER,TTYSW ;NO MORE OUTPUT NOW 003201' ENDP2D: 003201' 603600 001000 IFN CCLSW, IFE CCLSW,< SKIPA ;SO PRGEND CODE CAN WORK> 003203' 434600 013042' IOR ER,OUTSW ;... 003204' 260740 010316' 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:> 003205' 201400 014166' MOVEI CS,[SIXBIT /PROGRAM BREAK IS @/] 003206' 260740 003001' PUSHJ PP,OUTSIX ;OUTPUT PROGRAM BREAK 003207' 550400 013262' HRRZ CS,ABSHI ;GET ABS. BREAK 003210' 307400 000140 CAIG CS,140 ;ANY ABS. CODE JRST [HRLO CS,HIGH ;NO 003211' 254000 014171' JRST ENDP2B] ;SO DON'T PRINT 003212' 524400 013263' HRLO CS,HIGH ;GET PROGRAM BREAK 003213' 260740 002751' PUSHJ PP,ONC1 003214' 260740 010316' PUSHJ PP,OUTCR 003215' 201400 014173' MOVEI CS,[SIXBIT /ABSLUTE BREAK IS @/] 003216' 260740 003001' PUSHJ PP,OUTSIX 003217' 524400 013262' HRLO CS,ABSHI 003220' 260740 002751' ENDP2B: PUSHJ PP,ONC1 003221' 260740 010316' PUSHJ PP,OUTCR 003222' 603640 004400 TLNE FR,RIMSW!R1BSW ;RIM MODE? 003223' 260740 003256' PUSHJ PP,RIMFIN ;YES, FINISH IT 003224' 607600 001010 IFN CCLSW, IFE CCLSW, 003225' 660600 000001 TRO ER,TTYSW ;PRINT SIZE 003226' 260740 010316' PUSHJ PP,OUTCR 003227' 200340 000012* MOVE C,JOBREL 003230' 242340 777766 LSH C,-^D10 003231' 271340 000001 ADDI C,1 003232' 260740 002765' PUSHJ PP,DNC 003233' 201400 014176' MOVEI CS,[SIXBIT /K CORE USED@/] 003234' 260740 003001' PUSHJ PP,OUTSIX 003235' 260740 010316' PUSHJ PP,OUTCR 003236' 540600 013042' HRR ER,OUTSW MACRO V.10 PAGE 59-1 OUTPUT ROUTINES 003237' 260740 003017' PUSHJ PP,OUTSET 003240' 000002 002156' XWD 2,SOUT ;OUTPUT THE SYMBOLS (BLKTYP-2) 003241' 260740 003017' PUSHJ PP,OUTSET 003242' 000007 002633' XWD 7,VOUT ;OUTPUT TRANSFER VECTOR (..-7) 003243' 260740 003017' PUSHJ PP,OUTSET 003244' 000005 002626' XWD 5,HOUT ;OUTPUT HIGHEST RELOCATABLE (..-5) 003245' 260740 002645' PUSHJ PP,COUTD 003246' 607600 000010 TLNN IO,MFLSW ;IS IT PRGEND? 003247' 254000 007014' JRST FINIS ;ALAS, FINISHED 003250' 201400 013057' MOVEI CS,SBUF ;RESET SBUF POINTER 003251' 542400 013100' HRRM CS,SUBTTX ;TO SUBTTL 003252' 402000 013262' SETZM PASS2I ;CLEAR PASS2 VARIABLES 003253' 200000 014200' MOVE [XWD PASS2I,PASS2I+1] 003254' 251000 013412' BLT PASS2Z-1 ;BUT NOT ALL OF VARIABLES 003255' 254000 003267' JRST INZ ;RE-INITIALIZE FOR NEXT PROG MACRO V.10 PAGE 60 OUTPUT ROUTINES 003256' 603640 004000 RIMFIN: TLNE FR,R1BSW 003257' 260740 010165' PUSHJ PP,R1BDMP 003260' 336340 013401' SKIPN C,VECTOR 003261' 205340 254200 MOVSI C,(JRST 4,) 003262' 607340 777000 TLNN C,777000 003263' 661340 254000 TLO C,(JRST) 003264' 260740 010123' PUSHJ PP,PTPBIN 003265' 201340 000000 MOVEI C,0 003266' 254000 010123' JRST PTPBIN MACRO V.10 PAGE 61 PASS INITIALIZE SUBTTL PASS INITIALIZE 003267' 350000 013332' INZ: AOS MODA 003270' 350000 013334' AOS MODO 003271' 402000 012544' SETZM SEQNO 003272' 402000 012541' SETZM TAG 003273' 541640 000010 HRRI RX,^D8 003274' 201000 013027' MOVEI VARHD 003275' 202000 013030' MOVEM VARHDX 003276' 201000 013034' MOVEI LITHD 003277' 202000 013035' MOVEM LITHDX 003300' 260740 003437' PUSHJ PP,LITI 003301' 260740 002717' PUSHJ PP,STOWI 003302' 254000 001765' JRST OUTLI 003303' 220100 000005 RCPNTR: POINT 1,ARG,^L-18 ;POINT 1,ARG,22 MACRO V.10 PAGE 62 PSEUDO-OP HANDLERS SUBTTL PSEUDO-OP HANDLERS 003304' 260740 000227' TAPE0: PUSHJ PP,STOUTS ;FINISH THIS LINE 003305' 254000 007165' JRST GOTEND ;AND IGNORE THE REST OF THIS FILE 003306' 260740 003745' RADIX0: PUSHJ PP,EVAL10 ;EVALUATE RADIX D10 003307' 307000 000012 CAIG AC0,^D10 ;IF GREATER THAN 10 003310' 307000 000001 CAIG AC0,1 ;OR LESS THAN 2, 003311' 664600 040000 ERRAX: TROA ER,ERRA ;FLAG ERROR AND SKIP 003312' 540640 000000 HRR RX,AC0 ;SET NEW RADIX 003313' 263740 000000 POPJ PP, 003314' 621600 000001 XALL0: TLZ IO,IOSALL ;TURN OFF MACRO SUPPRESS ALL 003315' 321640 000446' IOSET: JUMP1 POPOUT ;NOSYM (IONSYM), XALL (IOPALL), XLIST (IOPROG) 003316' 554200 000000 HLRZ SX,AC0 ;STORE FLAGS 003317' 260740 000227' PUSHJ PP,STOUTS ;POLISH OFF LINE 003320' 661604 000000 TLO IO,0(SX) ;NOW SUPRESS PRINTING 003321' 263740 000000 POPJ PP, 003322' 630600 000000 IORSET: TDZ IO,AC0 ;RESET FLAG IOPALL/IOPROG 003323' 603000 002000 TLNE AC0,IONCRF ;RESTORING CREFFING? 003324' 621600 000040 TLZ IO,DEFCRS ;YES, CLEAR ANY WAITING DEFINING OCCURENCES 003325' 263740 000000 POPJ PP, 003326' 260740 004146' BLOCK0: PUSHJ PP,HIGHQ 003327' 260740 001070' PUSHJ PP,EVALEX ;EVALUATE 003330' 622440 777777 TRZE RC,-1 ;EXTERNAL OR RELOCATABLE? 003331' 260740 003752' PUSHJ PP,QEXT ;YES, DETERMINE TYPE 003332' 272000 013326' ADDM AC0,LOCO ;UPDATE ASSEMBLY LOCATION 003333' 250000 013325' BLOCK1: EXCH AC0,LOCA ;SAVE START OF BLOCK 003334' 272000 013325' ADDM AC0,LOCA ;UPDATE OUTPUT LOCATION 003335' 526000 013324' BLOCK2: HRLOM AC0,LOCBLK 003336' 325640 000446' JUMP2 POPOUT 003337' 602600 002000 TRNE ER,ERRU 003340' 660600 001000 TRO ER,ERRV 003341' 263740 000000 POPJ PP, MACRO V.10 PAGE 63 PSEUDO-OP HANDLERS 003342' 660600 000001 PRNTX0: TRO ER,TTYSW ;SET OUTPUT TO TTY 003343' 325640 003345' JUMP2 PRNTX2 ;PASS1? 003344' 674600 013042' TDOA ER,OUTSW ;YES,OUTPUT TO LSTDEV ALSO 003345' 420600 013042' PRNTX2: ANDCM ER,OUTSW ;NO,DON'T OUTPUT TO TTY IF IT IS LSTDEV 003346' 260740 004452' PUSHJ PP,BYPASS ;GET FIRST CHAR. 003347' 665600 000004 TLOA IO,IORPTC ;REPEAT IT AND SKIP 003350' 260740 010310' PRNTX4: PUSHJ PP,PRINT ;PRINT THE CHAR. 003351' 260740 001406' PUSHJ PP,CHARAC ;GET ASCII CHAR. 003352' 307340 000015 CAIG C,CR ;IF GREATER THAN CR 003353' 307340 000011 CAIG C,HT ;OR LESS THAN LF 003354' 254000 003350' JRST PRNTX4 ;THEN CONTINUE 003355' 260740 010316' PUSHJ PP,OUTCR ;OUTPUT A CRLF 003356' 624600 000003 TRZA ER,TTYSW!LPTSW ;TURN OF OUTPUT 003357' 350017 000000 CPOPJ1: AOS (PP) ;USEFUL TAG HAS TO GO SOMEWHERE 003360' 263740 000000 CPOPJ: POPJ PP, ;EXIT 003361' 260740 001354' REMAR0: PUSHJ PP,GETCHR ;GET A CHARACTER 003362' 302340 000033 CAIE C,EOL 003363' 254000 003361' JRST REMAR0 003364' 263740 000000 POPJ PP, ;EXIT MACRO V.10 PAGE 64 PSEUDO-OP HANDLERS 003365' 260740 003333' LIT0: PUSHJ PP,BLOCK1 003366' 260740 000227' PUSHJ PP,STOUTS 003367' 325640 003377' LIT1: JUMP2 LIT20 ;ON PASS ONE, WE JUST STEP THE LOCATION COUNTER AND CLEAR 003370' 200000 013036' MOVE AC0,LITCNT 003371' 200200 013035' MOVE SX,LITHDX 003372' 506004 000000 HRLM AC0,0(SX) 003373' 200300 013325' MOVE V,LOCA 003374' 504300 013332' HRL V,MODA 003375' 202304 777777 MOVEM V,-1(SX) 003376' 254000 003433' JRST LIT24 003377' 261740 013325' LIT20: PUSH PP,LOCA 003400' 261740 013326' PUSH PP,LOCO 003401' 336000 013037' SKIPN LITNUM 003402' 254000 003407' JRST LIT20A 003403' 200200 013035' MOVE SX,LITHDX 003404' 550004 777777 HRRZ AC0,-1(SX) 003405' 312000 013325' CAME AC0,LOCA 003406' 660600 000100 TRO ER,ERRP 003407' 200200 013031' LIT20A: MOVE SX,LITAB 003410' 375000 013037' LIT21: SOSGE LITNUM 003411' 254000 003422' JRST LIT22 003412' 200004 777776 MOVE AC0,-2(SX) ;WFW 003413' 200444 777777 MOVE RC,-1(SX) ;WFW 003414' 200204 000000 MOVE SX,(SX) ;WFW POINTER TO THE NEXT LIT 003415' 260740 002677' PUSHJ PP,STOW20 ;STOW CODE 003416' 201340 000012 MOVEI C,12 ;SET LINE FEED 003417' 136340 013003' IDPB C,LBUFP 003420' 260740 001547' PUSHJ PP,OUTLIN ;OUTPUT THE LINE 003421' 254000 003410' JRST LIT21 MACRO V.10 PAGE 65 PSEUDO-OP HANDLERS 003422' 550100 013326' LIT22: HRRZ AC2,LOCO 003423' 262740 013326' POP PP,LOCO 003424' 262740 013325' POP PP,LOCA 003425' 200200 013035' MOVE SX,LITHDX 003426' 554004 000000 HLRZ AC0,0(SX) 003427' 274100 013326' SUB AC2,LOCO ;COMPUTE LENGTH USED 003430' 315000 000002 CAMGE AC0,AC2 ;USE LARGER 003431' 200000 000002 MOVE AC0,AC2 003432' 270100 013326' ADD AC2,LOCO 003433' 272000 013325' LIT24: ADDM AC0,LOCA 003434' 272000 013326' ADDM AC0,LOCO 003435' 260740 003444' PUSHJ PP,GETTOP 003436' 542200 013035' HRRM SX,LITHDX 003437' 402000 013036' LITI: SETZM LITCNT 003440' 402000 013037' SETZM LITNUM 003441' 201000 013031' MOVEI LITAB 003442' 202000 013032' MOVEM LITABX 003443' 254000 004146' JRST HIGHQ 003444' 550040 000004 GETTOP: HRRZ AC1,SX ;VARHD 003445' 550204 000000 HRRZ SX,0(SX) 003446' 326200 000446' JUMPN SX,POPOUT 003447' 201200 000003 MOVEI SX,3 ;WFW 003450' 273200 012727' ADDB SX,FREE 003451' 311200 013102' CAML SX,SYMBOL 003452' 260740 010015' PUSHJ PP,XCEED 003453' 275200 000001 SUBI SX,1 ;MAKE SX POINT TO LINK 003454' 402004 000000 SETZM 0(SX) ;CLEAR FORWARD LINK 003455' 542201 000000 HRRM SX,0(AC1) ;STORE ADDRESS IN LAST LINK 003456' 263740 000000 POPJ PP, MACRO V.10 PAGE 66 PSEUDO-OP HANDLERS 003457' 260740 003333' VAR0: PUSHJ PP,BLOCK1 ;PRINT LOCATION 003460' 260740 003462' PUSHJ PP,VARA 003461' 254000 000227' JRST STOUTS 003462' 200200 013030' VARA: MOVE SX,VARHDX 003463' 200000 013325' MOVE AC0,LOCA ;GET LOCATION FOR CHECK 003464' 321640 003467' JUMP1 VARB ;DO NOT CHECK START ON PASS 1 003465' 312004 777777 CAME AC0,-1(SX) ;CHECK START OF VAR AREA 003466' 660600 000100 TRO ER,ERRP ;AND GIVE ERROR 003467' 202004 777777 VARB: MOVEM AC0,-1(SX) ;SAVE START FOR PASS 2 003470' 554004 000000 HLRZ AC0,0(SX) 003471' 272000 013325' ADDM AC0,LOCA 003472' 272000 013326' ADDM AC0,LOCO 003473' 260740 003444' PUSHJ PP,GETTOP 003474' 542200 013030' HRRM SX,VARHDX 003475' 325640 000446' JUMP2 POPOUT 003476' 260740 003025' PUSHJ PP,LOOKUP ;SET FOR TABLE SCAN 003477' 626240 000100 TRZN ARG,VARF 003500' 263740 000000 POPJ PP, ;NO, EXIT 003501' 620240 002000 TRZ ARG,UNDF ;TURN OFF FLAG NOW 003502' 205000 000001 MOVSI AC0,1 ;ADD 1 003503' 272001 000000 ADDM AC0,0(AC1) ;UPDATE COUNT 003504' 434240 013332' IOR ARG,MODA ;SET TO ASSEMBLY MODE 003505' 504240 013325' HRL ARG,LOCA 003506' 206244 000000 MOVSM ARG,0(SX) ;UPDATE 2ND WRD OF SYM TAB ENTRY 003507' 350000 013325' AOS LOCA 003510' 350000 013326' AOS LOCO 003511' 254000 004146' JRST HIGHQ1 MACRO V.10 PAGE 67 PSEUDO-OP HANDLERS 003512' 261740 000000 IF: PUSH PP,AC0 ;SAVE AC0 003513' 261740 000014 PUSH PP,IO 003514' 260740 003757' PUSHJ PP,EVALXQ ;EVALUATE AND TEST EXTERNAL 003515' 262740 000001 POP PP,AC1 003516' 321040 003520' JUMPL AC1,IFPOP 003517' 621600 400000 TLZ IO,FLDSW 003520' 262740 000001 IFPOP: POP PP,AC1 ;RETRIEVE SKIP INSTRUCTION 003521' 661600 000004 IFSET: TLO IO,IORPTC ;REPEAT CHARACTER 003522' 256000 000001 IFXCT: XCT AC1 ;EXECUTE INSTRUCTION 003523' 634000 000000 TDZA AC0,AC0 ;FALSE 003524' 201000 000001 MOVEI AC0,1 ;TRUE 003525' 325600 005072' IFEXIT: JUMPOC REPEA1 ;BRANCH IF IN OP-CODE FIELD 003526' 260740 001354' IFEX1: PUSHJ PP,GETCHR ;SEARCH FOR "<" 003527' 306340 000033 CAIN C,EOL ;ERROR IF END OF LINE 003530' 254000 003311' JRST ERRAX 003531' 302340 000034 CAIE C,34 003532' 254000 003526' JRST IFEX1 003533' 322000 003664' JUMPE AC0,IFEX2 ;TEST FOR 0 003534' 661600 000004 TLO IO,IORPTC ;NO, PROCESS AS CELL 003535' 260740 000354' PUSHJ PP,CELL 003536' 402000 013275' SETZM INCND ;NOT ANY MORE 003537' 254000 002665' JRST STOW ;STOW CODE AND EXIT 003540' 541000 400000 IFPASS: HRRI AC0,P1 ;MAKE IT TLNX IO,P1 003541' 200040 000000 MOVE AC1,AC0 ;PLACE IT IN AC1 003542' 254000 003521' JRST IFSET ;EXECUTE INSTRUCTION 003543' 520040 000000 IFB0: HLLO AC1,AC0 ;FORM AND STORE TEST INSTRUCTION 003544' 260740 001436' IFB1: PUSHJ PP,CHARL ;GET FIRST NON-BLANK 003545' 302340 000040 CAIE C," " 003546' 306340 000011 CAIN C," " 003547' 254000 003544' JRST IFB1 ;SKIP BLANKS AND TABS 003550' 307340 000015 CAIG C,CR ;CHECK FOR CARRET AS DELIM. 003551' 305340 000012 CAIGE C,LF 003552' 334200 013415' SKIPA SX,SEQNO2 003553' 254000 003311' JRST ERRAX 003554' 202200 013312' MOVEM SX,CNDSEQ 003555' 200200 013414' MOVE SX,PAGENO 003556' 202200 013311' MOVEM SX,CNDPG 003557' 476000 013275' SETOM INCND ;SAVE INFO. FOR PASS 1 ERRORS 003560' 306340 000074 CAIN C,"<" ;LEFT BRACKET? 003561' 403340 000011 SETZB C,RC ;YES, PREPARE FOR OLD FORMAT 003562' 334200 000007 SKIPA SX,C ;SAVE FOR COMPARISON 003563' 660000 000001 IFB3: TRO AC0,1 ;SET FLAG 003564' 260740 001436' IFB2: PUSHJ PP,CHARL ;GET ASCII CHARACTER AND LIST 003565' 316340 000004 CAMN C,SX ;TEST FOR DELIMITER 003566' 254000 003522' JRST IFXCT ;FOUND 003567' 302340 000040 CAIE C," " ;BLANK? 003570' 306340 000011 CAIN C," " ;OR TAB? 003571' 254000 003564' JRST IFB2 ;YES 003572' 326200 003563' JUMPN SX,IFB3 ;JUMP IF NEW FORMAT 003573' 306340 000074 CAIN C,"<" ;" ;>? 003576' 361440 003522' SOJL RC,IFXCT ;YES, DECREMENT AND EXIT IF DONE 003577' 254000 003563' JRST IFB3 ;GET NEXT CHARACTER MACRO V.10 PAGE 68 PSEUDO-OP HANDLERS 003600' 541000 002000 IFDEF0: HRRI AC0,UNDF ;MAKE IT TLNX ARG,UNDF 003601' 261740 000000 PUSH PP,AC0 ;STACK IT 003602' 260740 001034' PUSHJ PP,GETSYM ;TAKES SKIP RETURN IF SYM NAME IS LEGAL 003603' 664600 040000 TROA ER,ERRA ;ILLEGAL! 003604' 260740 012313' PUSHJ PP,SEARCH JRST [PUSHJ PP,OPTSCH TLO ARG,UNDF 003605' 254000 014201' JRST .+1] 003606' 260740 012220' PUSHJ PP,SSRCH3 ;EMIT TO CREF ANYWAY 003607' 254000 003520' JRST IFPOP ;POP AND EXECUTE INSTRUCTION MACRO V.10 PAGE 69 PSEUDO-OP HANDLERS 003610' 557000 000000 IFIDN0: HLRZS AC0 003611' 201300 000047 MOVEI V,2*.IFBLK-1 003612' 402006 012730' SETZM IFBLK(V) ;CLEAR COMPARISON BLOCK 003613' 365300 003612' SOJGE V,.-1 003614' 402000 013402' SETZM .TEMP ;CLEAR STORED DELIMETER 003615' 201440 012730' MOVEI RC,IFBLK ;SET FOR FIRST BLOCK 003616' 260740 003630' PUSHJ PP,IFCL ;GET FIRST STRING 003617' 201440 012754' MOVEI RC,IFBLKA 003620' 260740 003630' PUSHJ PP,IFCL ;GET SECOND STRING 003621' 201300 000023 MOVEI V,.IFBLK-1 003622' 200206 012730' MOVE SX,IFBLK(V) ;GET WORD FROM FIRST STRING 003623' 316206 012754' CAMN SX,IFBLKA(V) ;COMPARE WITH SECOND STRING 003624' 365300 003622' SOJGE V,.-2 ;EQUAL, TRY NEXT WORD 003625' 321300 003525' JUMPL V,IFEXIT ;DID WE FINISH STRING 003626' 431000 000001 XORI AC0,1 ;NO, TOGGLE REQUEST 003627' 254000 003525' JRST IFEXIT ;DO NOT TURN ON IORPTC WFW 003630' 260740 001406' IFCL: PUSHJ PP,CHARAC ;GET AND LIST CHARACTER 003631' 302340 000040 CAIE C," " ;SKIP SPACES 003632' 307340 000015 CAIG C,CR ;ALSO SKIP CR-LF 003633' 305340 000011 CAIGE C,HT ;AND TAB 003634' 254000 003636' JRST .+2 ;NOT ONE OF THEM 003635' 254000 003630' JRST IFCL ;SO LONG COMPARISONS WILL WORK ;*** A CROCK SO THAT IFIDN ,, WILL WORK *** 003636' 302340 000054 CAIE C,"," ;IS IT A COMMA? 003637' 254000 003642' JRST .+3 ;NO 003640' 336000 013402' SKIPN .TEMP ;YES, WAS PREVIOUS FIELD OLD METHOD? 003641' 254000 003630' JRST IFCL ;YES, IGNORE COMMA AND SPACES ; *** 003642' 306340 000074 CAIN C,"<" ;WAS IT LEFT BRACKET? 003643' 474340 000000 SETO C, ;SIGNAL OLD METHOD, LOOK FOR RIGHT BRACKET 003644' 202340 013402' MOVEM C,.TEMP ;STORE TERMINATOR FOR COMPARISON 003645' 201200 000143 MOVEI SX,5*.IFBLK-1 ;LIMIT SEARCH 003646' 505440 440700 HRLI RC,(POINT 7,,) ;SET UP BYTE IN RC 003647' 260740 001406' IFCLR: PUSHJ PP,CHARAC 003650' 333000 013402' SKIPLE .TEMP ;NEW METHOD? 003651' 254000 003656' JRST IFCLR1 ;YES, IGNORE ANGLE BRACKET COUNTING 003652' 306340 000074 CAIN C,"<" ;ANOTHER LEFT ANGLE? 003653' 370000 013402' SOS .TEMP ;YES, KEEP COUNT 003654' 306340 000076 CAIN C,">" ;CLOSING ANGLE 003655' 355000 013402' AOSGE .TEMP ;MATCHING COUNT? 003656' 316340 013402' IFCLR1: CAMN C,.TEMP ;TEST FOR DELIMITER 003657' 263740 000000 POPJ PP, ;EXIT ON RIGHT DELIMITER 003660' 367200 003662' SOJG SX,.+2 ;ANY ROOM IN COMPARISON BLOCK? 003661' 664600 040000 TROA ER,ERRA ;NO, FLAG ERROR BUT KEEP ON GOING 003662' 136340 000011 IDPB C,RC ;DEPOSIT BYTE 003663' 254000 003647' JRST IFCLR MACRO V.10 PAGE 70 PSEUDO-OP HANDLERS 003664' 260740 001354' IFEX2: PUSHJ PP,GETCHR 003665' 306340 000033 CAIN C,EOL ;EXIT WITH ERROR IF END OF LINE 003666' 254000 003311' JRST ERRAX 003667' 306340 000034 CAIN C,34 ;"<"? 003670' 344000 003664' AOJA AC0,IFEX2 ;YES, INCREMENT COUNT 003671' 302340 000036 CAIE C,36 ;">"? 003672' 254000 003664' JRST IFEX2 ;NO, TRY AGAIN 003673' 365000 003664' SOJGE AC0,IFEX2 ;YES, TEST FOR MATCH 003674' 260740 004452' PUSHJ PP,BYPASS ;YES, MOVE TO NEXT DELIMITER 003675' 402000 013275' SETZM INCND ;OUT OF CONDITIONAL NOW 003676' 344000 002664' AOJA AC0,STOWZ1 ;STOW ZERO 003677' 512000 013271' INTER0: HLLZM AC0,INTENT ;AC0 CONTAINS INTF/ENTF FLAGS 003700' 260740 001034' INTER1: PUSHJ PP,GETSYM ;GET A SYMBOL 003701' 254000 003710' JRST INTER3 ;INVALID, SKIP 003702' 260740 012210' PUSHJ PP,SSRCH ;SEARCH THE TABLE 003703' 205240 402400 MOVSI ARG,SYMF!INTF!UNDF 003704' 603240 002000 TLNE ARG,UNDF ;UNDEFINED? 003705' 660600 040000 TRO ER,ERRA ;YES, FLAG ERROR 003706' 607240 041000 TLNN ARG,SYNF!EXTF 003707' 674240 013271' TDOA ARG,INTENT ;SET APPROPRIATE FLAGS 003710' 664600 040000 INTER3: TROA ER,ERRA ;FLAG ARG EROR AND SKIP 003711' 260740 012364' PUSHJ PP,INSERQ ;INSERT/UPDATE 003712' 321400 003700' JUMPCM INTER1 003713' 402000 013270' SETZM EXTPNT ;JUST IN CASE, SO AS NOT TO CONFUSE WORLD 003714' 263740 000000 POPJ PP, ;NO, EXIT MACRO V.10 PAGE 71 PSEUDO-OP HANDLERS 003715' 260740 001034' EXTER0: PUSHJ PP,GETSYM ;GET A SYMBOL 003716' 254000 003741' JRST EXTER4 ;INVALID, ERROR 003717' 661600 000040 EXTER1: TLO IO,DEFCRS ;FLAG THIS AS A DEFINITION 003720' 260740 012210' PUSHJ PP,SSRCH ;OK, SEARCH SYMBOL TABLE 003721' 254000 003726' JRST EXTER2 ;NOT THERE, INSERT IT 003722' 607240 003100 TLNN ARG,EXTF!VARF!UNDF 003723' 664600 000040 TROA ER,ERRE ;FLAG ERROR AND BYPASS 003724' 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 003725' 254000 014204' JRST EXTER2] ;SET UP EXTERNAL NOW 003726' 201300 000002 EXTER2: MOVEI V,2 ;NO, GET 2 CELLS FROM THE TREE 003727' 273300 012727' ADDB V,FREE 003730' 311300 013102' CAML V,SYMBOL ;HAVE WE RUN OUT OF CORE? 003731' 260740 010014' PUSHJ PP,XCEEDS ;YES, TRY TO BORROW SOME MORE 003732' 275300 000002 SUBI V,2 ;GET RIGHT CELL FOR POINTER 003733' 403446 000000 SETZB RC,0(V) ;ALL SET, ZERO VALUES 003734' 205240 401000 MOVSI ARG,SYMF!EXTF 003735' 260740 012366' PUSHJ PP,INSERT ;INSERT/UPDATE IT 003736' 205240 004000 MOVSI ARG,PNTF 003737' 436244 000000 IORM ARG,0(SX) 003740' 334244 777777 SKIPA ARG,-1(SX) ;GET THE SIXBIT FOR THE NAME 003741' 664600 040000 EXTER4: TROA ER,ERRA ;FLAG AS ERROR 003742' 202246 000001 MOVEM ARG,1(V) ;AND STORE THAT IN CASE SYMBOL TABLE MOVES 003743' 321400 003715' EXTER3: JUMPCM EXTER0 003744' 263740 000000 POPJ PP, ;NO, EXIT MACRO V.10 PAGE 72 PSEUDO-OP HANDLERS 003745' 261740 000015 EVAL10: PUSH PP,RX 003746' 541640 000012 HRRI RX,^D10 003747' 260740 001070' PUSHJ PP,EVALEX ;EVALUATE 003750' 262740 000015 POP PP,RX ;RESET RADIX 003751' 322440 000446' JUMPE RC,POPOUT ;EXIT IF ABSOLUTE 003752' 332000 013270' QEXT: SKIPE EXTPNT ;ANY POSSIBILITIES? 003753' 664600 000040 TROA ER,ERRE ;YES, FLAG EXTERNAL ERROR 003754' 660600 004000 TRO ER,ERRR ;NO, FLAG RELOCATION ERROR 003755' 513000 000011 HLLZS RC ;CLEAR RELOCATION/EXTERNAL 003756' 263740 000000 POPJ PP, 003757' 260740 001070' EVALXQ: PUSHJ PP,EVALEX ;EVALUATE EXPRESSION 003760' 627440 777776 TLZN RC,-2 ;LEFT HALF EXTERNAL 003761' 622440 777776 TRZE RC,-2 ;WAS AN EXTERNAL FOUND? 003762' 660600 000040 TRO ER,ERRE ;YES, FLAG ERROR 003763' 263740 000000 POPJ PP, ;RETURN MACRO V.10 PAGE 73 PSEUDO-OP HANDLERS 003764' 260740 001034' OPDEF0: PUSHJ PP,GETSYM ;GET THE FIRST SYMBOL 003765' 263740 000000 POPJ PP, ;ERROR IF INVALID SYMBOL 003766' 302340 000073 CAIE C,73 ;"["? 003767' 254000 003311' JRST ERRAX ;NO, ERROR 003770' 261740 000000 PUSH PP,AC0 ;STACK MNEMONIC 003771' 350000 013321' AOS LITLVL ;SHORT OUT LOCATION INCREMENT 003772' 260740 000125' PUSHJ PP,STMNT ;EVALUATE STATEMENT 003773' 335000 013104' SKIPGE STPX ;CODE STORED? 003774' 664600 040000 TROA ER,ERRA ;NO,"A" ERROR 003775' 260740 002712' PUSHJ PP,DSTOW ;GET AND DECODE VALUE 003776' 370000 013321' SOS LITLVL 003777' 250017 000000 EXCH AC0,0(PP) ;EXCHANGE VALUE FOR MNEMONIC 004000' 261740 000011 PUSH PP,RC ;STACK RELOCATION 004001' 661600 000040 TLO IO,DEFCRS ;SAY WE ARE DEFINING IT 004002' 260740 012173' PUSHJ PP,MSRCH ;SEARCH SYMBOL TABLE 004003' 205240 010000 MOVSI ARG,OPDF ;NOT FOUND 004004' 262740 000011 POP PP,RC ;RESTORE VALUES 004005' 262740 000006 POP PP,V 004006' 603240 060000 TLNE ARG,SYNF!MACF 004007' 660600 040000 TRO ER,ERRA ;YES "A" ERROR 004010' 606600 040000 TRNN ER,ERRA ;ERROR? 004011' 260740 012366' PUSHJ PP,INSERT ;NO, INSERT/UPDATE 004012' 621600 000040 TLZ IO,DEFCRS ;JUST IN CASE 004013' 260740 004452' PUSHJ PP,BYPASS 004014' 254000 002717' JRST STOWI ;BE SURE STOW IS RESET 004015' 200000 013326' DEPHA0: MOVE AC0,LOCO 004016' 334440 013334' SKIPA RC,MODO ;SET TO OUTPUT VALUES AND SKIP 004017' 260740 003757' PHASE0: PUSHJ PP,EVALXQ ;EVALUATE AND CHECK FOR EXTERNAL 004020' 202000 013325' MOVEM AC0,LOCA ;SET ASSEMBLY LOCATION COUNTER 004021' 202440 013332' MOVEM RC,MODA 004022' 254000 003335' JRST BLOCK2 MACRO V.10 PAGE 74 PSEUDO-OP HANDLERS 004023' 321600 003311' ASSIGN: JUMPAD ERRAX ;NO, ERROR 004024' 260740 004037' PUSHJ PP,ASSIG1 004025' 603600 000001 TLNE IO,IOSALL ;SUPPRESS ALL? 004026' 326540 003360' JUMPN MRP,CPOPJ ;IF IN MACRO 004027' 202440 013323' ASSIG7: MOVEM RC,ASGBLK 004030' 602440 777776 TRNE RC,-2 ;EXTERNAL 004031' 513000 013323' HLLZS ASGBLK ;YES,CLEAR RELOCATION 004032' 603440 000001 TLNE RC,1 ;LEFT HALF NOT RELOC? 004033' 603440 777776 TLNE RC,-2 ;... 004034' 563000 013323' HRROS ASGBLK ;YES, SET FLAG 004035' 202300 013324' MOVEM V,LOCBLK 004036' 263740 000000 POPJ PP, 004037' 261740 000000 ASSIG1: PUSH PP,AC0 ;SAVE SYMBOL 004040' 403000 013270' SETZB AC0,EXTPNT ;SPECIAL CHECK FOR == WFW 004041' 260740 006335' PUSHJ PP,PEEK ;IS THE NEXT ON = 004042' 302340 000075 CAIE C,"=" 004043' 254000 004047' JRST ASSIG5 004044' 661000 100000 TLO AC0,NOOUTF ;YES, NOT OUT TO DDT WFW 004045' 260740 001354' PUSHJ PP,GETCHR ;PROCESS THE CHAR. 004046' 260740 006335' PUSHJ PP,PEEK ;CHECK FOR ==: DMN 004047' 302340 000072 ASSIG5: CAIE C,":" ;IS IT 004050' 254000 004053' JRST ASSIG6 ;NO 004051' 661000 000400 TLO AC0,INTF ;MAKE INTERNAL 004052' 260740 001354' PUSHJ PP,GETCHR ;REPEAT IT 004053' 202000 013417' ASSIG6: MOVEM AC0,HDAS ;STORE THESE BITS WFW 004054' 260740 001057' PUSHJ PP,EVALCM ;EVALUATE EXPRESSION 004055' 250017 000000 EXCH AC0,0(PP) ;SWAP VALUE FOR SYMBOL 004056' 261740 000011 PUSH PP,RC 004057' 606440 777776 TRNN RC,-2 ;CHECK EXTERNAL AGREEMENT 004060' 254000 004065' JRST ASSIG2 004061' 553000 000011 HRRZS RC 004062' 550240 013270' HRRZ ARG,EXTPNT 004063' 312440 000005 CAME RC,ARG 004064' 260740 003752' PUSHJ PP,QEXT ;EXTERNAL OR RELOCATION ERROR 004065' 554457 000000 ASSIG2: HLRZ RC,(PP) 004066' 606440 777776 TRNN RC,-2 004067' 254000 004073' JRST ASSIG3 004070' 554240 013270' HLRZ ARG,EXTPNT 004071' 312440 000005 CAME RC,ARG 004072' 260740 003752' PUSHJ PP,QEXT 004073' 661600 000040 ASSIG3: TLO IO,DEFCRS 004074' 260740 012210' PUSHJ PP,SSRCH 004075' 205240 400000 MOVSI ARG,SYMF 004076' 434240 013417' IOR ARG,HDAS ;WFW 004077' 603240 002000 TLNE ARG,UNDF ;WAS IT UNDEFINED 004100' 621240 005000 TLZ ARG,EXTF!PNTF ;YES,CLEAR EXTF NOW 004101' 621240 002100 TLZ ARG,UNDF!VARF ;CANCEL UNDEFINED AND VARIABLE FLAGS 004102' 402000 013270' SETZM EXTPNT ;FOR REST OF WORLD 004103' 262740 000011 POP PP,RC 004104' 602600 577760 TRNE ER,ERRORS-ERRQ 004105' 400440 000000 SETZ RC, ;CLEAR RELOCATION 004106' 262740 000006 POP PP,V MACRO V.10 PAGE 74-1 PSEUDO-OP HANDLERS 004107' 602600 002000 TRNE ER,ERRU ;WAS VALUE UNDEFINED? 004110' 661240 002000 TLO ARG,UNDF ;YES,SO TURN UNDF ON 004111' 603240 201000 TLNE ARG,TAGF!EXTF 004112' 254000 003311' JRST ERRAX 004113' 254000 012366' JRST INSERT MACRO V.10 PAGE 75 PSEUDO-OP HANDLERS 004114' 260740 004146' LOC0: PUSHJ PP,HIGHQ ;AC0=0,0 004115' 261740 000000 PUSH PP,AC0 ;SAVE MODE REQUESTED 004116' 557000 000000 HLRZS AC0 ;PUT MODE IN RIGHT HALF 004117' 326000 004140' JUMPN AC0,RELOC0 ;RELOC PSEUDO-OP 004120' 316000 013334' CAMN AC0,MODO ;SAME AS PRESENT MODE? JRST [HRRZ AC0,LOCO ;YES EXCH AC0,ABSLOC ;EXCH VALUES 004121' 254000 014211' JRST LOC01] 004122' 550000 013326' HRRZ AC0,LOCO ;NO, GET CURRENT VALUE 004123' 202000 013327' MOVEM AC0,RELLOC ;SAVE IT 004124' 200000 013330' MOVE AC0,ABSLOC ;GET LAST RELOC VALUE 004125' 260740 004452' LOC01: PUSHJ PP,BYPASS ;SKIP BLANKS 004126' 661600 000004 TLO IO,IORPTC 004127' 302340 000033 CAIE C,EOL ;USE PREVIOUS VALUE IF NULL ARGUMENT 004130' 260740 003757' PUSHJ PP,EVALXQ ;GET EXPRESSION AND TEST EXTERNAL 004131' 542017 000000 HRRM AC0,(PP) ;STORE NEW VALUE 004132' 262740 000000 POP PP,AC0 ;RETRIEVE STORED MODE AND VALUE 004133' 552000 013325' LOC10: HRRZM AC0,LOCA ;SET ASSEMBLY LOCATION 004134' 552000 013326' HRRZM AC0,LOCO ;AND OUTPUT LOCATION 004135' 556000 013332' HLRZM AC0,MODA ;SET MODE 004136' 556000 013334' HLRZM AC0,MODO 004137' 254000 003335' JRST BLOCK2 004140' 316000 013334' RELOC0: CAMN AC0,MODO JRST [HRRZ AC0,LOCO EXCH AC0,RELLOC 004141' 254000 014214' JRST LOC01] 004142' 550000 013326' HRRZ AC0,LOCO 004143' 202000 013330' MOVEM AC0,ABSLOC 004144' 200000 013327' MOVE AC0,RELLOC 004145' 254000 004125' JRST LOC01 MACRO V.10 PAGE 76 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.10 PAGE 77 PSEUDO-OP HANDLERS 004146' HIGHQ: 004146' 200300 013326' HIGHQ1: MOVE V,LOCO ;GET ASSEMBLY LOCATION 004147' 336000 013334' SKIPN MODO ;IF ASSEMBLY MODE IS ABSOLUTE JRST [CAMLE V,ABSHI ;RECORED ABS HIGHEST ALSO MOVEM V,ABSHI 004150' 254000 014217' POPJ PP,] IFN RENTSW, 004151' 313300 013263' CAMLE V,HIGH ;IS IT GREATER THAN "HIGH"? 004152' 202300 013263' MOVEM V,HIGH ;YES, REPLACE WITH LARGER VALUE 004153' 263740 000000 POPJ PP, 004154' 625640 200000 ONML: TLZA FR,MWLFLG ;MULTI-WORD LITERALS OK 004155' 661640 200000 OFFML: TLO FR,MWLFLG ;NO 004156' 263740 000000 POPJ PP, 004157' 476000 013257' OFFSYM: SETOM IONSYM ;SUPRESS SYMBOL TABLE LISTING 004160' 263740 000000 POPJ PP, 004161' 260740 001034' SUPRE0: PUSHJ PP,GETSYM ;GET A SYMBOL TO SUPRES 004162' 254000 004166' JRST SUPRE1 ;ERROR 004163' 260740 012210' PUSHJ PP,SSRCH ;SYMBOL ONLY 004164' 254000 004166' JRST SUPRE1 ;GIVE ERROR MESSAGE 004165' 665240 000004 TLOA ARG,SUPRBT ;SET THE SUPRESS BIT 004166' 664600 040000 SUPRE1: TROA ER,ERRA 004167' 436244 000000 IORM ARG,(SX) ;PUT BACK 004170' 321400 004161' JUMPCM SUPRE0 ;ANY MORE? 004171' 254000 004175' JRST SUPRS1 004172' 260740 003025' SUPRSA: PUSHJ PP,LOOKUP ;SUPRESS ALL 004173' 205240 000004 MOVSI ARG,SUPRBT 004174' 436244 000000 IORM ARG,(SX) 004175' 402000 013270' SUPRS1: SETZM EXTPNT ;JUST IN CASE WE LOOKED ONE UP 004176' 263740 000000 POPJ PP, 004177' 321640 000446' XPUNG0: JUMP1 POPOUT 004200' 260740 003025' PUSHJ PP,LOOKUP 004201' 200244 000000 MOVE ARG,(SX) ;GET SYMBOL FLAGS 004202' 607240 001610 TLNN ARG,INTF!ENTF!EXTF!SPTR 004203' 665240 000004 TLOA ARG,SUPRBT ;LOCAL SYMBOL,SO SUPPRESS IT 004204' 402000 013270' SETZM EXTPNT 004205' 202244 000000 MOVEM ARG,(SX) ;RESTORE FLAGS 004206' 263740 000000 POPJ PP, MACRO V.10 PAGE 78 PSEUDO-OP HANDLERS 004207' 325640 003361' TITLE0: JUMP2 REMAR0 004210' 201200 000120 MOVEI SX,.TBUF 004211' 541000 013230' HRRI AC0,TBUF 004212' 260740 004224' PUSHJ PP,SUBTT1 ;GO READ IT 004213' 202200 013227' MOVEM SX,TCNT ;SAVE COUNT OF CHARS. WRITTEN IFN UNIVR, 004214' 663600 000002 TLOE IO,IOTLSN ;HAVE WE SEEN ONE IFE CCLSW, 004215' 664600 000020 IFN CCLSW, 004217' 263740 000000 POPJ PP, ;EXIT OTHERWISE 004220' 332000 013057' SUBTT0: SKIPE SBUF ;STORE FIRST SUBTTL ON PASS1 004221' 321640 003361' JUMP1 REMAR0 ;OTHERWISE EXIT IF PASS ONE 004222' 201200 000120 MOVEI SX,.SBUF 004223' 541000 013057' HRRI AC0,SBUF 004224' 260740 004452' SUBTT1: PUSHJ PP,BYPASS ;BYPASS LEADING BLANKS 004225' 661600 000004 TLO IO,IORPTC 004226' 260740 001406' SUBTT3: PUSHJ PP,CHARAC ;GET ASCII CHARACTER 004227' 136340 000000 IDPB C,AC0 ;STORE IN BLOCK 004230' 305340 000040 CAIGE C,40 ;TEST FOR TERMINATOR 004231' 306340 000011 CAIN C,HT 004232' 367200 004226' SOJG SX,SUBTT3 ;TEST FOR BUFFER FULL 004233' 137440 000000 DPB RC,AC0 ;END, STORE TERMINATOR 004234' 364200 003360' SOJA SX,CPOPJ ;COUNT NUL AND EXIT IFN CCLSW,< 004235' 607600 001000 PRNAM: TLNN IO,CRPGSW ;NOT IF NOT RPG 004236' 263740 000000 POPJ PP, 004237' 261740 000000 PUSH PP,AC0 ;SAVE AC0 DMN 004240' 261740 000011 PUSH PP,RC ;AND RC 004241' 200000 014150' MOVE AC0,[POINT 7,TBUF] 004242' 200200 014222' MOVE SX,[POINT 7,OTBUF] 004243' 201440 000006 MOVEI RC,6 ;MAX OF SIX CHRS 004244' 134340 000000 PN1: ILDB C,AC0 004245' 303340 000040 CAILE C," " ;CHECK FOR LEGAL 004246' 303340 000172 CAILE C,"Z"+40 ;CHECK AGAINST LOWER CASE Z 004247' 254000 004252' JRST PN2 004250' 136340 000004 IDPB C,SX ;PUT IN OUTPUT BUFFER 004251' 367440 004244' SOJG RC,PN1 ;GET MORE 004252' 201340 000000 PN2: MOVEI C,0 004253' 136340 000004 IDPB C,SX ;TERMINATOR 004254' 051140 013335' TTCALL 3,OTBUF TTCALL 3,[ASCIZ / 004255' 051140 014223' /] 004256' 262740 000011 POP PP,RC 004257' 262740 000000 POP PP,AC0 ;RESTORE AC0 DMN 004260' 263740 000000 POPJ PP, > MACRO V.10 PAGE 79 PSEUDO-OP HANDLERS 004261' 260740 001034' SYN0: PUSHJ PP,GETSYM ;GET THE FIRST SYMBOL 004262' 254000 003311' JRST ERRAX ;ERROR, EXIT 004263' 260740 012173' PUSHJ PP,MSRCH ;TRY FOR MACRO/OPDEF 004264' 254000 004302' JRST SYN3 ;NO,0THRY FOR OPERAND 004265' 201200 012173' SYN1: MOVEI SX,MSRCH ;YES, SET FLAG 004266' 260740 007211' SYN2: PUSHJ PP,SAVEXS ;SAVE REGISTERS 004267' 325400 003311' JUMPNC ERRAX ;ERROR IF NO COMMA 004270' 260740 001034' PUSHJ PP,GETSYM ;GET THE SECOND SYMBOL 004271' 263740 000000 POPJ PP, 004272' 260760 013051' PUSHJ PP,@SAVBLK+SX ;SEARCH FOR SECOND SYMBOL 004273' 255000 000000 JFCL 004274' 200240 013052' MOVE ARG,SAVBLK+ARG ;GET VALUES 004275' 200440 013056' MOVE RC,SAVBLK+RC 004276' 200300 013053' MOVE V,SAVBLK+V 004277' 603240 020000 TLNE ARG,MACF ;MACRO? 004300' 260740 006347' PUSHJ PP,REFINC ;YES, INCREMENT REFERENCE 004301' 254000 012366' JRST INSERT ;INSERT AND EXIT 004302' 260740 012210' SYN3: PUSHJ PP,SSRCH ;SEARCH FOR OPERAND 004303' 254000 004313' JRST SYN4 ;NOT FOUND, TRY OP CODE 004304' 661240 040000 TLO ARG,SYNF ;FLAG AS SYNONYM 004305' 603240 001000 TLNE ARG,EXTF ;EXTERNAL? 004306' 550300 000005 HRRZ V,ARG ;YES, RELPACE WITH POINTER 004307' 201200 012210' MOVEI SX,SSRCH ;SET FLAG 004310' 607240 000100 TLNN ARG,VARF ;DO NOT LET HIM SYN A VARIABLE 004311' 254000 004266' JRST SYN2 004312' 254000 003311' JRST ERRAX 004313' 260740 010470' SYN4: PUSHJ PP,OPTSCH ;SEARCH FOR OP-CODE 004314' 254000 003311' JRST ERRAX ;NOT FOUND, EXIT WITH ERROR 004315' 205240 040000 MOVSI ARG,SYNF ;FLAG AS SYNONYM 004316' 254000 004265' JRST SYN1 MACRO V.10 PAGE 80 PSEUDO-OP HANDLERS 004317' 260740 001034' PURGE0: PUSHJ PP,GETSYM ;GET A MNEMONIC JRST [TRZ ER,ERRA ;CLEAR ERROR 004320' 254000 014224' POPJ PP,] ;AND RETURN 004321' 260740 012173' PUSHJ PP,MSRCH ;SEARCH MACRO SYMBOL TABLE 004322' 254000 004330' JRST PURGE2 ;NOT FOUND, TRY SYMBOLS 004323' 261740 000010 PUSH PP,CS ;SAVE CS AS IT MAY GET GARBAGED 004324' 603240 020000 TLNE ARG,MACF ;MACRO? 004325' 260740 006352' PUSHJ PP,REFDEC ;YES, DECREMENT THE REFERENCE 004326' 262740 000010 POP PP,CS 004327' 254000 004343' JRST PURGE4 ;REMOVE SYMBOL FROM TABLE 004330' 260740 012210' PURGE2: PUSHJ PP,SSRCH ;TRY OPERAND SYMBOL TABLE 004331' 254000 004344' JRST PURGE5 ;NOT FOUND GET NEXT SYMBOL 004332' 606440 777776 TRNN RC,-2 ;CHECK COMPLEX EXTERNAL 004333' 603440 777776 TLNE RC,-2 004334' 603240 040000 TLNE ARG,SYNF 004335' 254000 004337' JRST .+2 004336' 254000 004342' JRST PURGE3 004337' 603240 003000 TLNE ARG,EXTF!UNDF ;ERROR IF EXTERNAL OR UNDEFINED 004340' 603240 040000 TLNE ARG,SYNF ;BUT NOT A SYNONYM 004341' 254000 004343' JRST PURGE4 004342' 664600 040000 PURGE3: TROA ER,ERRA ;NOT FOUND, ERROR 004343' 260740 012445' PURGE4: PUSHJ PP,REMOVE ;REMOVE FROM THE SYMBOL TABLE 004344' 321400 004317' PURGE5: JUMPCM PURGE0 004345' 263740 000000 POPJ PP, ;EXIT MACRO V.10 PAGE 81 PSEUDO-OP HANDLERS 004346' 603240 002000 OPD1: TLNE ARG,UNDF ;IF OPDEF IS UNDEFINED 004347' 660600 000200 TRO ER,ERRO ;GIVE "O" ERROR 004350' 200000 000006 OPD: MOVE AC0,V ;PUT VALUE IN AC0 004351' 254000 004354' JRST OP 004352' 205100 301117 IOP: MOVSI AC2,(POINT 9,0(PP),11) 004353' 665600 000020 TLOA IO,IOIOPF ;SET "IOP SEEN" AND SKIP 004354' 205100 270417 OP: MOVSI AC2,(POINT 4,0(PP),12) 004355' 261740 000011 PUSH PP,RC 004356' 261740 000000 PUSH PP,AC0 ;STACK CODE 004357' 261740 000002 PUSH PP,AC2 004360' 260740 001070' PUSHJ PP,EVALEX ;EVALUATE FIRST EXPRESSION 004361' 262740 000002 POP PP,AC2 004362' 325400 004374' JUMPNC OP2 004363' 260740 001354' OP1B: PUSHJ PP,GETCHR ;GET A CHARACTER 004364' 321400 004605' JUMPCM XWD5 ;PROCESS COMMA COMMA IN XWD 004365' 661600 000004 TLO IO,IORPTC ;NOT A COMMA,REPEAT IT 004366' 135040 000002 LDB AC1,AC2 004367' 270040 000000 ADD AC1,AC0 004370' 137040 000002 DPB AC1,AC2 004371' 322440 004373' JUMPE RC,OP1A ;EXTERNAL OR RELOCATABLE? 004372' 260740 003752' PUSHJ PP,QEXT ;YES, DETERMINE WHICH AND FLAG AN ERROR 004373' 260740 001070' OP1A: PUSHJ PP,EVALEX ;GET ADDRESS PART 004374' 260740 004403' OP2: PUSHJ PP,EVADR ;EVALUATE STANDARD ADDRESS 004375' 262740 000000 OP3: POP PP,AC0 ;PUT IN AC0 004376' 262740 000011 POP PP,RC 004377' 332017 000000 SKIPE (PP) ;CAME FROM EVALCM? 004400' 254000 002665' JRST STOW ;NO,STOW CODE AND EXIT 004401' 262740 000001 POP PP,AC1 ;YES,EXIT IMMEDIATELY 004402' 263740 000000 POPJ PP, MACRO V.10 PAGE 82 PSEUDO-OP HANDLERS 004403' EVADR: ;EVALUATE STANDARD ADDRESS 004403' 607000 777777 IFE IIISW, 004410' 270017 777777 ADD AC0,-1(PP) ;ADD ADDRESS PORTIONS 004411' 500017 777777 HLL AC0,-1(PP) ;GET LEFT HALF 004412' 623640 020000 TLZE FR,INDSW ;INDIRECT BIT? 004413' 661000 000020 TLO AC0,(Z @) ;YES, PUT IT IN 004414' 202017 777777 MOVEM AC0,-1(PP) ;RE-STACK CODE 004415' 270457 777776 ADD RC,-2(PP) ;UPDATE RELOCATION 004416' 542457 777776 HRRM RC,-2(PP) ;USE HALF WORD ADD 004417' 302340 000010 CAIE C,10 ;"("? 004420' 263740 000000 POPJ PP, ;NO, EXIT 004421' 207000 013270' MOVSS EXTPNT ;WFW 004422' 260740 001057' PUSHJ PP,EVALCM ;EVALUATE 004423' 207000 013270' MOVSS EXTPNT ;WFW 004424' 207300 000000 MOVSS V,AC0 ;SWAP HALVES 004425' 207200 000011 IFE IIISW, IFN IIISW, 004432' 270317 777777 ADD V,-1(PP) ;ADD RIGHT HALVES 004433' 270257 777776 ADD ARG,-2(PP) 004434' 542317 777777 HRRM V,-1(PP) ;UPDATE WITHOUT CARRY 004435' 542257 777776 HRRM ARG,-2(PP) 004436' 513000 000000 HLLZS AC0 ;PREPARE LEFT HALVES 004437' 513000 000011 HLLZS RC 004440' 603200 777777 IFE IIISW, 004446' 272017 777777 ADDM AC0,-1(PP) ;MERGE WITH PREVIOUS VALUE 004447' 272457 777776 ADDM RC,-2(PP) 004450' 302340 000011 CAIE C,11 ;")"? 004451' 254000 003311' JRST ERRAX ;NO, FLAG ERROR ;YES, BYPASS PARENTHESIS 004452' BYPASS: 004452' 260740 001354' BYPAS1: PUSHJ PP,GETCHR 004453' 322340 004452' BYPAS2: JUMPE C,.-1 ;SKIP TRAILING BLANKS 004454' 263740 000000 POPJ PP, ;EXIT MACRO V.10 PAGE 83 PSEUDO-OP HANDLERS IFE IIISW,< 004455' 250457 777776 OP2A1: EXCH RC,-2(PP) ;GET STORED CODE 004456' 607440 777777 TLNN RC,-1 ;OK IF ALL ZERO 004457' 254000 004463' JRST OP2A2 ;OK SO RETURN 004460' 641440 777777 TLC RC,-1 ;CHANGE ALL ONES TO ZEROS 004461' 643440 777777 TLCE RC,-1 ;OK IF ALL ONES 004462' 660600 200000 TRO ER,ERRQ ;OTHERWISE A "Q" ERROR 004463' 250457 777776 OP2A2: EXCH RC,-2(PP) ;GET RC,BACK 004464' 263740 000000 POPJ PP, ;AND RETURN> 004465' 514000 000015 EXPRES: HRLZ AC0,RX ;FUDGE FOR OCT0 004466' 261740 000015 OCT0: PUSH PP,RX 004467' 544640 000000 HLR RX,AC0 004470' 260740 001070' OCT1: PUSHJ PP,EVALEX ;EVALUATE 004471' 260740 002665' PUSHJ PP,STOW ;STOW CODE 004472' 321400 004470' JUMPCM OCT1 004473' 262740 000015 POP PP,RX ;YES, RESTORE RADIX 004474' 263740 000000 POPJ PP, ;EXIT MACRO V.10 PAGE 84 PSEUDO-OP HANDLERS 004475' 205440 440600 SIXB10: MOVSI RC,(POINT 6,AC0) ;SET UP POINTER 004476' 201000 000000 MOVEI AC0,0 ;CLEAR WORD 004477' 260740 001436' SIXB20: PUSHJ PP,CHARL ;GET NEXT CHARACTER 004500' 316340 000004 CAMN C,SX ;IS THIS PRESET DELIMITER? 004501' 254000 004553' JRST ASC60 ;YES 004502' 301340 000141 CAIL C,"A"+40 004503' 303340 000172 CAILE C,"Z"+40 004504' 254000 004506' JRST .+2 004505' 624340 000100 TRZA C,100 ;CONVERT LOWER CASE TO SIXBIT 004506' 275340 000040 SUBI C,40 ;CONVERT TO SIXBIT 004507' 321340 004550' JUMPL C,ASC55 ;TEST FOR INVALID CHARACTER 004510' 136340 000011 IDPB C,RC ;NO, DEPOSIT THE BYTE 004511' 603440 770000 TLNE RC,770000 ;IS THE WORD FULL? 004512' 254000 004477' JRST SIXB20 ;NO, GET NEXT CHARACTER 004513' 260740 002664' PUSHJ PP,STOWZ ;YES, STORE 004514' 254000 004475' JRST SIXB10 ;GET NEXT WORD MACRO V.10 PAGE 85 PSEUDO-OP HANDLERS 004515' 510140 000000 ASCII0: HLLZ SDEL,AC0 ;STORE ASCII/ASCIZ FLAG 004516' 260740 001436' ASC10: PUSHJ PP,CHARL ;GET FIRST NON-BLANK 004517' 302340 000040 CAIE C," " 004520' 306340 000011 CAIN C,HT 004521' 254000 004516' JRST ASC10 004522' 307340 000015 CAIG C,CR ;CHECK FOR CRRET AS DELIM 004523' 305340 000012 CAIGE C,LF 004524' 334200 013415' SKIPA SX,SEQNO2 004525' 254000 003311' JRST ERRAX 004526' 202200 013310' MOVEM SX,TXTSEQ ;SAVE SEQ AND PAGE 004527' 200200 013414' MOVE SX,PAGENO 004530' 202200 013307' MOVEM SX,TXTPG 004531' 476000 013274' SETOM INTXT 004532' 200200 000007 MOVE SX,C ;SAVE FOR COMPARISON 004533' 327140 004475' JUMPG SDEL,SIXB10 ;BRANCH IF SIXBIT 004534' 205440 440700 ASC20: MOVSI RC,(POINT 7,AC0) ;SET UP POINTER 004535' 603140 200000 TLNE SDEL,200000 ;THIS BIT (AND BIT0) IN FOR COMMENT 004536' 205440 440000 MOVSI RC,440000 ;SO NOTHING WILL BE DEPOSITED 004537' 201000 000000 IFE IIISW, IFN IIISW, 004540' 260740 001436' ASC30: PUSHJ PP,CHARL ;GET ASCII CHARACTER AND LIST 004541' 316340 000004 CAMN C,SX ;TEST FOR DELIMITER 004542' 254000 004551' JRST ASC50 ;FOUND 004543' 136340 000011 IDPB C,RC ;DEPOSIT BYTE 004544' 603440 760000 TLNE RC,760000 ;HAVE WE FINISHED WORD? 004545' 254000 004540' JRST ASC30 ;NO,GET NEXT CHARACTER 004546' 260740 002664' PUSHJ PP,STOWZ ;YES, STOW IT 004547' 254000 004534' JRST ASC20 ;GET NEXT WORD 004550' 634400 000010 ASC55: TDZA CS,CS ;ZERO CS IN CASE NESTED 004551' 634440 000003 ASC50: TDZA RC,SDEL ;TEST FOR ASCIIZ 004552' 664600 040000 TROA ER,ERRA ;SIXBIT ERROR EXIT 004553' 260740 004452' ASC60: PUSHJ PP,BYPAS1 ;POLISH OFF TERMINATOR 004554' 402000 013274' SETZM INTXT ;WE ARE OUT OF IT IFN IIISW, 004555' 420440 013104' ANDCM RC,STPX ;STORE AT LEAST ONE WORD 004556' 607140 200000 TLNN SDEL,200000 ;GET OUT WITHOUT STORING 004557' 325440 002664' JUMPGE RC,STOWZ ;STOW 004560' 263740 000000 POPJ PP, ;ASCII, NO BYTES STORED, SO EXIT MACRO V.10 PAGE 86 PSEUDO-OP HANDLERS 004561' POINT0: 004561' 261740 000011 PUSH PP,RC ;STACK REGISTERS 004562' 261740 000000 PUSH PP,AC0 004563' 260740 003745' PUSHJ PP,EVAL10 ;EVALUATE RADIX 10 004564' 137000 014233' DPB AC0,[POINT 6,0(PP),11] ;STORE BYTE SIZE 004565' 325400 004574' JUMPNC POINT2 004566' 260740 001070' PUSHJ PP,EVALEX ;NO, GET ADDRESS 004567' 260740 004403' PUSHJ PP,EVADR ;EVALUATE STANDARD ADDRESS 004570' 325400 004574' JUMPNC POINT2 004571' 260740 003745' PUSHJ PP,EVAL10 ;EVALUATE RADIX 10 004572' 603600 020000 TLNE IO,NUMSW ;IF NUMERIC 004573' 654000 014062' TDCA AC0,[-1] ;POSITION=D35-RHB 004574' 201000 000000 POINT2: MOVEI AC0,0 ;OTHERWISE SET TO D36 004575' 271000 000044 ADDI AC0,^D36 004576' 242000 000036 LSH AC0,^D30 004577' 272017 000000 ADDM AC0,0(PP) ;UPDATE VALUE 004600' 254000 004375' JRST OP3 MACRO V.10 PAGE 87 PSEUDO-OP HANDLERS 004601' XWD0: 004601' 261740 000011 PUSH PP,RC 004602' 261740 000000 PUSH PP,AC0 ;STORE ZERO ON STACK 004603' 260740 001070' PUSHJ PP,EVALEX ;EVALUATE EXPRESSION 004604' 325400 004374' JUMPNC OP2 004605' 336017 000000 XWD5: SKIPN (PP) ;ANY CODE YET? 004606' 254000 004613' JRST XWD10 ;NO,USE VALUE IN AC0 004607' 322000 004611' JUMPE AC0,.+2 ;ANYTHING IN AC0? 004610' 660600 200000 TRO ER,ERRQ ;YES,FLAG "Q"ERROR 004611' 200017 000000 MOVE AC0,(PP) ;USE PREVIOUS VALUE 004612' 200457 777777 MOVE RC,-1(PP) ;AND RELOCATION 004613' 516017 000000 XWD10: HRLZM AC0,0(PP) ;SET LEFT HALF 004614' 516457 777777 HRLZM RC,-1(PP) 004615' 207000 013270' MOVSS EXTPNT ;WFW 004616' 254000 004373' JRST OP1A ;EXIT THROUGH OP 004617' 260740 003757' IOWD0: PUSHJ PP,EVALXQ ;EVALUATE AND TEST FOR EXTERNAL 004620' 302340 000014 CAIE C,14 ;","? JRST [SKIPN AC0 ;IF NZERO AND NO "," SEEN TRO ER,ERRQ ;TREAT AS Q ERROR 004621' 254000 014234' SOJA AC0,STOW] ;NO, TREAT AS RIGHT HALF 004622' 261740 000000 PUSH PP,AC0 ;YES, STACK LEFT HALF 004623' 260740 001070' PUSHJ PP,EVALEX ;WFW 004624' 275000 000001 SUBI AC0,1 004625' 262740 000001 POP PP,AC1 ;RETRIEVE LEFT HALF 004626' 213000 000001 MOVNS AC1 004627' 504000 000001 HRL AC0,AC1 004630' 254000 002665' JRST STOW ;STOW CODE AND EXIT MACRO V.10 PAGE 88 PSEUDO-OP HANDLERS 004631' 260740 004452' BYTE0: PUSHJ PP,BYPASS ;GET FIRST NON-BLANK 004632' 302340 000010 CAIE C,10 ;"("? 004633' 254000 003311' JRST ERRAX ;NO, FLAG ERROR AND EXIT 004634' 261740 000011 PUSH PP,RC 004635' 261740 000000 PUSH PP,AC0 ;INITIALIZE STACK TO ZERO 004636' 205240 447717 MOVSI ARG,(POINT -1,(PP)) 004637' 261740 000005 BYTE1: PUSH PP,ARG 004640' 260740 003745' PUSHJ PP,EVAL10 ;EVALUATE RADIX 10 004641' 262740 000005 POP PP,ARG 004642' 307000 000044 CAIG AC0,^D36 ;TEST SIZE 004643' 325000 004645' JUMPGE AC0,.+2 004644' 660600 040000 TRO ER,ERRA 004645' 137000 014237' DPB AC0,[POINT 6,ARG,11] ;STORE BYTE SIZE 004646' 133000 000005 BYTE2: IBP ARG ;INCREMENT BYTE 004647' 626240 777777 TRZN ARG,-1 ;OVERFLOW? 004650' 254000 004655' JRST BYTE3 ;NO 004651' 403000 000011 SETZB AC0,RC ;YES 004652' 250017 000000 EXCH AC0,0(PP) ;GET CURRENT VALUES 004653' 250457 777777 EXCH RC,-1(PP) ;AND STACK ZEROS 004654' 260740 002665' PUSHJ PP,STOW ;STOW FULL WORD 004655' 261740 000005 BYTE3: PUSH PP,ARG 004656' 260740 001070' PUSHJ PP,EVALEX ;COMPUTE NEXT BYTE 004657' 262740 000005 POP PP,ARG 004660' 137000 000005 DPB AC0,ARG ;STORE BYTE 004661' 520000 000005 HLLO AC0,ARG 004662' 137440 000000 DPB RC,AC0 ;STORE RELOCATION 004663' 321400 004646' JUMPCM BYTE2 004664' 306340 000010 CAIN C,10 ;"("? 004665' 254000 004637' JRST BYTE1 ;YES, GET NEW BYTE SIZE 004666' 254000 004375' JRST OP3 ;NO, EXIT MACRO V.10 PAGE 89 PSEUDO-OP HANDLERS 004667' 260740 001070' RADX50: PUSHJ PP,EVALEX ;EVALUATE CODE 004670' 326440 003311' JUMPN RC,ERRAX ;ERROR IF NOT ABSOLUTE 004671' 200240 000000 MOVE ARG,AC0 004672' 325400 003311' JUMPNC ERRAX 004673' 260740 001034' PUSHJ PP,GETSYM ;YES, GET SYMBOL 004674' 620600 040000 TRZ ER,ERRA ;CLEAR ERROR 004675' 260740 004677' PUSHJ PP,SQOZE ;SQUOZE SIXBIT AND ADD CODE 004676' 254000 002665' JRST STOW ;STOW CODE AND EXIT 004677' 200100 000000 SQOZE: MOVE AC1+1,AC0 ;PUT SIXBIT IN AC1+1 004700' 201000 000000 MOVEI AC0,0 ;CLEAR RESULT 004701' 201040 000000 SQOZ1: MOVEI AC1,0 004702' 246040 000006 LSHC AC1,6 ;PUT 6-BIT CHARACTER IN AC1 004703' 135040 014240' LDB AC1,[POINT 6,CSTAT(AC1),23] ;CONVERT TO RADIX50 004704' 221000 000050 IMULI AC0,50 ;MULTIPLY PREVIOUS RESULT 004705' 270000 000001 ADD AC0,AC1 ;ADD NEW CHARACTER 004706' 326100 004701' JUMPN AC1+1,SQOZ1 ;TEST FOR END 004707' 242240 000036 LSH ARG,^D30 ;LEFT-JUSTIFY CODE 004710' 434000 000005 IOR AC0,ARG ;MERGE WITH RESULT 004711' 263740 000000 POPJ PP, MACRO V.10 PAGE 90 PSEUDO-OP HANDLERS ; PSEUDO-END STATEMENT FOR MULTI-FILE CAPABILITY ; HERE IF PRGEND (PASS 1) 004712' 661600 000010 PSEND0: TLO IO,MFLSW ;PSEND SEEN 004713' 260740 003037' PUSHJ PP,END0 ;AS IF END STATEMENT 004714' 513000 000014 HLLZS IO ;CLEAR ER(RH) 004715' 402000 012726' SETZM ERRCNT ;CLEAR ERROR COUNT FOR EACH PROG. 004716' 325640 004724' JUMP2 PSEND2 ;DIFFERENT ON PASS2 IFN UNIVR, 004717' 260740 004734' PUSHJ PP,PSEND4 ;SAVE SYMBOLS, POINTERS AND TITLE 004720' 621600 000002 TLZ IO,IOTLSN ;CLEAR TITLE SEEN FLAG 004721' 621600 000010 PSEND1: TLZ IO,MFLSW ;FOR NEXT FILE IFN UNIVR, 004722' 205000 000001 MOVSI AC0,1 ;SET SO RELOC 0 WORKS 004723' 254000 004133' JRST LOC10 ;FOR RELOC 0 ; HERE IF PRGEND (PASS 2) 004724' 402000 013057' PSEND2: SETZM SBUF ;SO SUBTTL IS NOT WRONG 004725' 260740 005016' PUSHJ PP,PSEND5 ;PUT TITLE BACK 004726' 260740 004721' PUSHJ PP,PSEND1 ;COMMON CODE 004727' 254000 003066' JRST PASS20 ;OUTPUT THE ENTRIES ; HERE IF END (PASS 1) 004730' 260740 004734' PSEND3: PUSHJ PP,PSEND4 ;SAVE LAST PROGRAM 004731' 547000 013260' HLRS PRGPTR ;REINITIALIZE POINTER 004732' 260740 005016' PUSHJ PP,PSEND5 ;READ BACK FIRST PROGRAM 004733' 254000 003066' JRST PASS20 MACRO V.10 PAGE 91 PSEUDO-OP HANDLERS ;HERE TO SAVE AND RESTORE SYMBOL TABLE, TITLE AND OTHER USEFUL LOCATIONS 000004 XTRA==4 ;NUMBER OF OTHER LOCATIONS TO SAVE 004734' 200300 012727' PSEND4: MOVE V,FREE ;GET NEXT FREE LOCATION 004735' 271300 000030 ADDI V,LENGTH+.TBUF/5+XTRA 004736' 311300 013102' CAML V,SYMBOL ;WILL WORST CASE FIT? 004737' 260740 010015' PUSHJ PP,XCEED ;NO, EXPAND 004740' 204300 012727' MOVS V,FREE 004741' 540300 013260' HRR V,PRGPTR ;LAST PRGEND BLOCK 004742' 546306 000000 HLRM V,(V) ;LINK THIS BLOCK 004743' 336000 013260' SKIPN PRGPTR ;IF FIRST TIME 004744' 512300 013260' HLLZM V,PRGPTR ;SET LINK TO START OF CHAIN 004745' 546300 013260' HLRM V,PRGPTR ;POINTER TO IT 004746' 402020 012727' SETZM @FREE ;CLEAR LINK WORD 004747' 350000 012727' AOS FREE ;THIS LOCATION USED NOW 004750' 204000 013102' MOVS AC0,SYMBOL ;BOTTOM OF SYMBOL TABLE 004751' 540000 012727' HRR AC0,FREE ;FREE SPACE 004752' 200320 013102' MOVE V,@SYMBOL ;GET NUMBER OF SYMBOLS 004753' 240300 000001 ASH V,1 ;TWO WORDS PER SYMBOL 004754' 271300 000001 ADDI V,1 ;ONE MORE FOR COUNT 004755' 273300 012727' ADDB V,FREE ;END OF TABLE WHEN MOVED 004756' 251006 000000 BLT AC0,(V) ;MOVE TABLE 004757' 550000 003227* HRRZ AC0,JOBREL ;TOP OF CORE 004760' 275000 000001 SUBI AC0,1 004761' 202000 013103' MOVEM AC0,SYMTOP ;FOR NEXT SYMBOL TABLE 004762' 275000 000004 SUBI AC0,LENGTH ;LENGTH OF INITIAL SYMBOLS 004763' 202000 013102' MOVEM AC0,SYMBOL ;SET POINTER TO COUNT OF SYMBOLS 004764' 505000 011713' HRLI AC0,SYMNUM ;BLT POINTER 004765' 251020 013103' BLT AC0,@SYMTOP ;SET UP INITIAL SYMBOL TABLE 004766' 260740 012455' PUSHJ PP,SRCHI ;SET UP SEARCH POINTER 004767' 201000 000120 MOVEI AC0,.TBUF ;MAX NUMBER OF CHARS. IN TITLE 004770' 274000 013227' SUB AC0,TCNT ;ACTUAL NUMBER 004771' 231000 000005 IDIVI AC0,5 ;NUMBER OF WORDS 004772' 332000 000001 SKIPE AC1 ;REMAINDER? 004773' 271000 000001 ADDI AC0,1 ;YES 004774' 202020 012727' MOVEM AC0,@FREE ;STORE COUNT 004775' 350000 012727' AOS FREE ;THIS LOCATION USED NOW 004776' 250000 012727' EXCH AC0,FREE ;SET UP AC0 FOR BLT 004777' 272000 012727' ADDM AC0,FREE ;WILL BE AFTER TITLE MOVES 005000' 505000 013230' HRLI AC0,TBUF ;BLT POINTER 005001' 251020 012727' BLT AC0,@FREE ;MOVE TITLE 005002' 200100 013035' MOVE AC2,LITHDX ;POINTER TO LIT INFO. 005003' 200002 777777 MOVE AC0,-1(AC2) ;SIZE OF PASS1 LOCO 005004' 260740 005061' PUSHJ PP,STORIT ;SAVE IT IN SYMBOL TABLE 005005' 200100 013030' MOVE AC2,VARHDX ;SAME FOR VARS 005006' 200002 777777 MOVE AC0,-1(AC2) 005007' 260740 005061' 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.10 PAGE 91-1 PSEUDO-OP HANDLERS PUSHJ PP,STORIT ;SAVE IT ALSO> 005010' 200000 012727' PSEND6: MOVE AC0,FREE ;GET NEXT FREE LOCATION 005011' 275000 000001 SUBI AC0,1 ;LAST ONE USED 005012' 550300 013260' HRRZ V,PRGPTR ;POINTER TO START OF DATA BLOCK 005013' 506006 000000 HRLM AC0,(V) ;LINK TO END OF BLOCK 005014' 263740 000000 POPJ PP, ;RETURN MACRO V.10 PAGE 92 PSEUDO-OP HANDLERS 005015' 260740 010015' PSENDX: PUSHJ PP,XCEED ;NEED TO EXPAND CORE FIRST 005016' 550000 004757* PSEND5: HRRZ AC0,JOBREL ;GET TOP OF CORE 005017' 275000 000001 SUBI AC0,1 005020' 202000 013103' MOVEM AC0,SYMTOP ;TOP OF NEW SYMBOL TABLE 005021' 550300 013260' HRRZ V,PRGPTR ;ADDRESS OF THIS BLOCK 005022' 322300 005066' JUMPE V,PSNDER ;ERROR LINK NOT SET UP 005023' 200046 000000 MOVE AC1,(V) ;NEXT LINK 005024' 200306 000001 MOVE V,1(V) ;GET ITS SYMBOL COUNT 005025' 240300 000001 ASH V,1 ;NUMBER OF WORDS 005026' 271300 000001 ADDI V,1 ;PLUS ONE FOR COUNT 005027' 275006 000000 SUBI AC0,(V) ;START OF NEW SYMBOL TABLE 005030' 317000 012727' CAMG AC0,FREE ;WILL IT FIT 005031' 254000 005015' JRST PSENDX ;NO, NEED TO EXPAND AND RESET AC0 005032' 270300 013260' ADD V,PRGPTR ;POINT TO END OF SYMBOL TABLE 005033' 201306 000001 MOVEI V,1(V) ;THEN TO BEG OF TITLE 005034' 202000 013102' MOVEM AC0,SYMBOL ;BOTTOM OF NEW TABLE 005035' 504000 013260' HRL AC0,PRGPTR ;ADDRESS OF FIRST WORD OF BLOCK 005036' 270000 014241' ADD AC0,[1,,0] ;MAKE BLT POINTER 005037' 542040 013260' HRRM AC1,PRGPTR ;POINT TO NEXT BLOCK 005040' 251020 013103' BLT AC0,@SYMTOP ;MOVE TABLE 005041' 260740 012455' PUSHJ PP,SRCHI ;SET UP POINTER 005042' 200046 000000 MOVE AC1,(V) ;NUMBER OF WORDS OF TITLE 005043' 201006 000001 MOVEI AC0,1(V) ;START OF STORED TITLE 005044' 270300 000001 ADD V,AC1 ;INCREMENT PAST TITLE 005045' 271040 013227' ADDI AC1,TBUF-1 ;END OF TITLE 005046' 505000 013230' HRLI AC0,TBUF ;WHERE TO PUT IT 005047' 207000 000000 MOVSS AC0 ;BLT POINTER 005050' 251001 000000 BLT AC0,(AC1) ;MOVE TITLE 005051' 661600 000002 TLO IO,IOTLSN ;SET AS IF TITLE SEEN 005052' 200100 013035' MOVE AC2,LITHDX ;INVERSE OF ABOVE 005053' 260740 005064' PUSHJ PP,GETIT 005054' 202002 777777 MOVEM AC0,-1(AC2) 005055' 200100 013030' MOVE AC2,VARHDX ;SAME FOR VARS 005056' 260740 005064' PUSHJ PP,GETIT 005057' 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> 005060' 263740 000000 POPJ PP, 005061' 202020 012727' STORIT: MOVEM AC0,@FREE ;STORE IT IN DATA BLOCK 005062' 350000 012727' AOS FREE ;ADVANCE POINTER 005063' 263740 000000 POPJ PP, 005064' 200006 000001 GETIT: MOVE AC0,1(V) ;FILL AC0 OUT OF PRGEND BLOCK 005065' 344300 003360' AOJA V,CPOPJ ;INCREMENT AND RETURN 005066' 561440 014242' PSNDER: HRROI RC,[SIXBIT /PRGEND ERROR @/] 005067' 254000 007714' JRST ERRFIN MACRO V.10 PAGE 93 PSEUDO-OP HANDLERS ;MULTIPLE SYMBOL TABLE FEATURE PSEUDO-OPS IFN UNIVR,< UNIV0: JUMP2 TITLE0 ;DO IT ALL ON PASS 1 HRRZ SX,UNIVNO ;GET NUMBER OF UNIVERSALS SEEN CAIL SX,.UNIV ;ALLOW ONE MORE? JRST UNVERR ;NO, GIVE FATAL ERROR AOS UNIVNO ;ONE MORE NOW SETOM UNIVSN ;AND SET SEEN A UNIVERSAL JRST TITLE0 ;CONTINUE AS IF TITLE ADDUNV: PUSH PP,RC ;AN AC TO USE PUSHJ PP,NOUT ;CONVERT TO SIXBIT HRRZ RC,UNIVNO ;GET ENTRY INDEX MOVEM AC0,UNITBL(RC) ;STORE SIXBIT NAME IN TABLE HRRZS UNIVSN ;ONLY DO IT ONCE POP PP,RC ;RESTORE RC POPJ PP, ;AND RETURN UNVERR: HRROI RC,[SIXBIT /TOO MANY UNIVERSALS@/] JRST ERRFIN UNISYM: HRRZ AC0,FREE ;GET HIGHEST FREE LOCATION MOVEM AC0,JOBFF ;INTO JOBFF PUSHJ PP,SUPRSA ;TURN ON SUPPRESS BIT PUSH PP,SYMBOL ;NEED TO SAVE INCASE PRGEND MOVE AC0,SYMTOP ;TOP OF TABLE SUB AC0,SYMBOL ;GET LENGTH OF TABLE HRL ARG,SYMBOL ;BOTTOM OF TABLE HRR ARG,JOBFF ;WHERE TO GO HRRZ RC,UNIVNO ;GET TABLE INDEX HRRM ARG,SYMBOL ;WILL BE THERE SOON HRRZM ARG,UNIPTR(RC) ;STORE IN CORRESPONDING PLACE ADDB AC0,JOBFF ;WHERE TO END HRLM AC0,UNIPTR(RC) ;SAVE NEW SYMTOP BLT ARG,@JOBFF ;MOVE TABLE HRRZM AC0,UNITOP ;SAVE TOP OF TABLES+1 CAMLE AC0,MACSIZ ;IN CASE OVER A K BOUND MOVEM AC0,MACSIZ ;DON'T REDUCE SO FAR NOW MOVEM AC0,FREE ;JUST IN CASE IN MACRO MOVE AC0,SRCHX ;SAVE OLD SEARCH POINTER PUSHJ PP,SRCHI ;GET SEARCH POINTER EXCH AC0,SRCHX MOVEM AC0,UNISHX(RC) ;SAVE IT SETZM UNIVSN ;CLEAR FLAG INCASE PRGEND POP PP,SYMBOL ;RESTORE OLD VALUE POPJ PP, ;RETURN MACRO V.10 PAGE 94 PSEUDO-OP HANDLERS SERCH0: PUSHJ PP,GETSYM ;GET A SYMBOL JRST ERRAX ;ERROR IF NOT VALID MOVEI RC,1 ;START AT ENTRY ONE CAIL RC,.UNIV ;CHECK FOR CONSISTENCY ERROR JRST SCHERR ;CANNOT FIND THIS ONE CAME AC0,UNITBL(RC) ;LOOK FOR MATCH AOJA RC,.-3 ;NOT FOUND YET MOVE AC0,RC ;STORE TABLE ENTRY NUMBER MOVEI RC,1 ;START AT ENTRY ONE CAIL RC,.UNIV ;CHECK FOR CONSISTENCY ERROR JRST SCHERR ;SHOULD NEVER HAPPEN!! SKIPE UNISCH(RC) ;LOOK FOR AN EMPTY SLOT AOJA RC,.-3 ;NOT FOUND YET MOVEM AC0,UNISCH(RC) ;STORE INDEX IN TABLE JUMPCM SERCH0 ;LOOK FOR MORE NAMES POPJ PP, ;FINISHED SCHERR: MOVSI RC,[SIXBIT /CANNOT FIND UNIVERSAL@/] 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 OTHER FILES@/] JRST ERRFIN > MACRO V.10 PAGE 95 MACRO/REPEAT HANDLERS SUBTTL MACRO/REPEAT HANDLERS 005070' 260740 003757' REPEA0: PUSHJ PP,EVALXQ ;EVALUATE REPEAT EXP, EXTERNS ARE ILL. 005071' 325400 003311' JUMPNC ERRAX 005072' 323000 005152' REPEA1: JUMPLE AC0,REPZ ;PASS THE EXP., DONT PROCESS 005073' 362000 005171' SOJE AC0,REPO ;REPEAT ONCE 005074' 260740 006254' REPEA2: PUSHJ PP,GCHARQ ;GET STARTING "<" 005075' 302340 000074 CAIE C,"<" 005076' 254000 005074' JRST REPEA2 005077' 260740 006217' PUSHJ PP,SKELI1 ;INITIALIZE SKELETON 005100' 261700 013346' PUSH MP,REPEXP 005101' 202000 013346' MOVEM AC0,REPEXP 005102' 261700 013347' PUSH MP,REPPNT ;STACK PREVIOUS REPEAT POINTER 005103' 202240 013347' MOVEM ARG,REPPNT ;STORE NEW POINTER 005104' 634140 000003 TDZA SDEL,SDEL ;YES, INITIALIZE BRACKET COUNT AND SKIP 005105' 260740 006262' REPEA4: PUSHJ PP,WCHARQ ;WRITE A CHARACTER 005106' 260740 006254' PUSHJ PP,GCHARQ ;GET A CHARACTER 005107' 306340 000074 CAIN C,"<" ;"<"? 005110' 344140 005105' AOJA SDEL,REPEA4 ;YES, INCREMENT AND WRITE 005111' 302340 000076 CAIE C,">" ;">"? 005112' 254000 005105' JRST REPEA4 ;NO, WRITE THE CHARACTER 005113' 365140 005105' SOJGE SDEL,REPEA4 ;YES, WRITE IF NON-NEGATIVE COUNT 005114' 205400 774060 MOVSI CS,(BYTE (7) 177,3) ;SET "REPEAT" END 005115' 260740 006272' PUSHJ PP,WWRXE ;WRITE END 005116' 336000 013321' SKIPN LITLVL ;LITERAL MIGHT END ON LINE 005117' 332000 013406' SKIPE MACLVL ;IF IN MACRO DARE NOT PROCESS 005120' 254000 005123' JRST .+3 ;REST OF LINE SINCE MACRO MIGHT END ON IT 005121' 260740 004452' PUSHJ PP,BYPASS ;BYPASS 005122' 260740 000227' PUSHJ PP,STOUTS ;POLISH OF LINE BEFORE PROCESSING REPEAT 005123' 261700 000013 PUSH MP,MRP ;STACK PREVIOUS READ POINTER 005124' 261700 013411' PUSH MP,RCOUNT ;SAVE WORD COUNT 005125' 550540 013347' HRRZ MRP,REPPNT ;SET UP READ POINTER 005126' 336000 013406' SKIPN MACLVL ;IF IN MACRO GIVE CR-LF FIRST 005127' 332000 013321' SKIPE LITLVL ;SAME FOR LITERAL 005130' 254000 005132' JRST REPEA7 005131' 344540 000446' AOJA MRP,POPOUT ;BYPASS ARG COUNT 005132' 550540 013347' REPEA7: HRRZ MRP,REPPNT ;SET UP READ POINTER 005133' 271540 000001 ADDI MRP,1 ;BYPASS ARG COUNT 005134' 201340 000015 REPEA8: MOVEI C,CR 005135' 254000 001412' JRST RSW1 005136' 371000 013346' REPEND: SOSL REPEXP 005137' 254000 005132' JRST REPEA7 005140' 550300 013347' HRRZ V,REPPNT ;GET START OF TREE 005141' 260740 006352' PUSHJ PP,REFDEC ;DECREMENT REFERENCE 005142' 262700 013411' POP MP,RCOUNT 005143' 262700 000013 POP MP,MRP 005144' 262700 013347' POP MP,REPPNT 005145' 262700 013346' POP MP,REPEXP 005146' 336000 013321' SKIPN LITLVL ;IF IN LITERAL OR MACRO V.10 PAGE 95-1 MACRO/REPEAT HANDLERS 005147' 332000 013406' SKIPE MACLVL ;IF IN MACRO 005150' 254000 001410' JRST RSW0 ;FINISH OF LINE NOW 005151' 254000 005134' JRST REPEA8 MACRO V.10 PAGE 96 MACRO/REPEAT HANDLERS 005152' 200140 013415' REPZ: MOVE SDEL,SEQNO2 ;SAVE IN CASE OF END OF FILE 005153' 202140 013306' MOVEM SDEL,REPSEQ 005154' 200140 013414' MOVE SDEL,PAGENO 005155' 202140 013305' MOVEM SDEL,REPPG 005156' 476000 013272' SETOM INREP 005157' 201140 000000 MOVEI SDEL,0 ;SET COUNT 005160' 260740 006255' REPZ1: PUSHJ PP,GCHAR ;GET NEXT CHARACTER 005161' 306340 000074 CAIN C,"<" ;"<"? 005162' 344140 005160' AOJA SDEL,REPZ1 ;YES, INCREMENT COUNT 005163' 306340 000076 CAIN C,">" ;">"? 005164' 363140 005166' SOJLE SDEL,REPZ2 ;YES, EXIT IF MATCHING 005165' 254000 005160' JRST REPZ1 ;NO, RECYCLE 005166' 402000 013272' REPZ2: SETZM INREP ;FLAG OUT OF IT 005167' 402000 013275' SETZM INCND ;AND CONDITIONAL ALSO 005170' 254000 000125' JRST STMNT ;AND EXIT 005171' 260740 006255' REPO: PUSHJ PP,GCHAR ;GET "<" 005172' 302340 000074 CAIE C,"<" 005173' 254000 005171' JRST REPO 005174' 332000 013350' SKIPE RPOLVL ;ARE WE NESTED? 005175' 350000 013350' AOS RPOLVL ;YES, DECREMENT CURRENT 005176' 261700 013350' PUSH MP,RPOLVL 005177' 476000 013350' SETOM RPOLVL 005200' 254000 000125' JRST STMNT 005201' 306340 000074 REPO1: CAIN C,"<" 005202' 370000 013350' SOS RPOLVL 005203' 306340 000076 CAIN C,">" 005204' 352000 013350' AOSE RPOLVL 005205' 254000 001414' JRST RSW2 005206' 262700 013350' POP MP,RPOLVL 005207' 260740 001414' PUSHJ PP,RSW2 005210' 254000 001410' JRST RSW0 MACRO V.10 PAGE 97 MACRO/REPEAT HANDLERS 005211' 260740 001034' DEFIN0: PUSHJ PP,GETSYM ;GET MACRO NAME 005212' 254000 003311' JRST ERRAX ;EXIT ON ERROR 005213' 202740 013343' MOVEM PP,PPTMP1 ;SAVE POINTER 005214' 202000 013344' MOVEM AC0,PPTMP2 ;SAVE NAME 005215' 661600 000004 TLO IO,IORPTC 005216' 200200 013415' MOVE SX,SEQNO2 ;SAVE IN CASE OF EOF 005217' 202200 013302' MOVEM SX,DEFSEQ 005220' 200200 013414' MOVE SX,PAGENO 005221' 202200 013301' MOVEM SX,DEFPG 005222' 476000 013273' SETOM INDEF ;AND FLAG IN DEFINE SYN .TEMP,COMSW ;SAVE SPACE 005223' 403200 013402' SETZB SX,COMSW ;SET ARGUMENT AND REFERENCE COUNT AND COMMENT SWITCH 005224' 260740 006255' DEF02: PUSHJ PP,GCHAR ;SEARCH FOR "(" OR "<" 005225' 307340 000014 CAIG C,FF ;SEARCH FOR END OF LINE 005226' 305340 000012 CAIGE C,LF ;LF,VT, OR FF 005227' 254000 005231' JRST .+2 ;WASN'T ANY OF THEM 005230' 402000 013402' SETZM COMSW ;RESET COMMENT SWITCH 005231' 306340 000073 CAIN C,";" ;COMMENT? 005232' 476000 013402' SETOM COMSW ;YES, SET COMMENT SWITCH 005233' 332000 013402' SKIPE COMSW ;INSIDE A COMMENT? 005234' 254000 005224' JRST DEF02 ;YES, IGNORE CHARACTER 005235' 306340 000074 CAIN C,"<" ;"<"? 005236' 254000 005254' JRST DEF20 ;YES 005237' 302340 000050 CAIE C,"(" ;"("? 005240' 254000 005224' JRST DEF02 ;NO 005241' 260740 001034' DEF10: PUSHJ PP,GETSYM ;YES, GET DUMMY SYMBOL 005242' 660600 040000 TRO ER,ERRA ;FLAG ERROR 005243' 271200 000001 ADDI SX,1 ;INCREMENT ARG COUNT 005244' 261740 000000 PUSH PP,AC0 ;STACK IT 005245' 306340 000034 CAIN C,'<' ;A DEFAULT ARGUMENT COMING UP? 005246' 254000 005467' JRST DEF80 ;YES, STORE IT AWAY 005247' 302340 000011 CAIE C,11 ;")"? 005250' 254000 005241' JRST DEF10 ;NO, GET NEXT DUMMY SYMBOL 005251' 260740 006255' DEF12: PUSHJ PP,GCHAR 005252' 302340 000074 CAIE C,"<" ;"<"? 005253' 254000 005251' JRST DEF12 ;NO 005254' 261740 014100' DEF20: PUSH PP,[0] ;YES, MARK THE LIST 005255' 242200 000011 LSH SX,9 ;SHIFT ARG COUNT 005256' 350240 000004 AOS ARG,SX 005257' 260740 006220' PUSHJ PP,SKELI ;INITIALIZE MACRO SKELETON 005260' 200000 013344' MOVE AC0,PPTMP2 ;GET NAME 005261' 661600 000040 TLO IO,DEFCRS 005262' 260740 012173' PUSHJ PP,MSRCH ;SEARCH THE TABLE 005263' 254000 005267' JRST DEF24 ;NOT FOUND 005264' 607240 020000 TLNN ARG,MACF ;FOUND, IS IT A MACRO? 005265' 664600 100000 TROA ER,ERRX ;NO, FLAG ERROR AND SKIP 005266' 260740 006352' PUSHJ PP,REFDEC ;YES, DECREMENT THE REFERENCE 005267' 550300 013410' DEF24: HRRZ V,WWRXX ;GET START OF TREE 005270' 336000 013402' SKIPN .TEMP ;ANY DEFAULT ARGUMENTS TO TAKE CARE OF? 005271' 254000 005317' JRST DEF25 ;NO 005272' 550346 000001 HRRZ C,1(V) ;GET SHIFTED ARG COUNT 005273' 242340 777767 LSH C,-9 ;GET ARG COUNT BACK 005274' 271340 000001 ADDI C,1 ;ONE MORE FOR TERMINAL ZERO MACRO V.10 PAGE 97-1 MACRO/REPEAT HANDLERS 005275' 270340 013402' ADD C,.TEMP ;NUMBER OF ITEMS IN STACK 005276' 507000 000007 HRLS C ;MAKE XWD 005277' 274740 000007 SUB PP,C ;BACK UP STACK 005300' 200140 013402' MOVE SDEL,.TEMP ;NUMBER OF WORDS NEEDED 005301' 273140 012727' ADDB SDEL,FREE ;FROM FREE CORE 005302' 311140 013102' CAML SDEL,SYMBOL ;MORE CORE NEEDED 005303' 260740 010014' PUSHJ PP,XCEEDS ;YES, TRY TO GET IT 005304' 274140 013402' SUB SDEL,.TEMP ;FORM POINTER 005305' 506146 000001 HRLM SDEL,1(V) ;STORE IT WITH ARG COUNT IN MACRO 005306' 275140 000001 SUBI SDEL,1 ;TO USE FOR PUSHING POINTER INTO STORAGE 005307' 201357 000001 MOVEI C,1(PP) ;POINT TO START OF STACK 005310' 200247 000000 DEF26: MOVE ARG,(C) ;GET AN ITEM OFF STACK 005311' 607240 777740 TLNN ARG,-40 ;A POINTER? JUMPN ARG,[PUSH SDEL,ARG ;YES, STORE IT MACRO V.10 PAGE 98 MACRO/REPEAT HANDLERS 005312' 326240 014245' AOJA C,DEF26] ;GET NEXT 005313' 261740 000005 PUSH PP,ARG ;RESTACK ARGUMENT 005314' 332000 000005 SKIPE ARG ;FINISHED IF ZERO 005315' 344340 005310' AOJA C,DEF26 ;GET NEXT 005316' 261140 000005 PUSH SDEL,ARG ;STORE ZERO IN DEFAULT LIST ALSO MACRO V.10 PAGE 99 MACRO/REPEAT HANDLERS 005317' 205240 020000 DEF25: MOVSI ARG,MACF 005320' 202740 013344' MOVEM PP,PPTMP2 ;STORE TEMP STORAGE POINTER 005321' 260740 012366' PUSHJ PP,INSERT ;INSERT/UPDATE 005322' 621600 000040 TLZ IO,DEFCRS ;JUST IN CASE 005323' 402000 013404' SETZM ARGF ;NO ARGUMENT SEEN 005324' 402000 013403' SETZM SQFLG ;AND NO ' SEEN 005325' 634140 000003 TDZA SDEL,SDEL ;CLEAR BRACKET COUNT 005326' 260740 006262' DEF30: PUSHJ PP,WCHAR ;WRITE CHARACTER 005327' 260740 006255' DEF31: PUSHJ PP,GCHAR ;GET A CHARACTER 005330' 200400 000007 DEF32: MOVE CS,C ;GET A COPY 005331' 306340 000073 CAIN C,";" ;IS IT A COMMENT 005332' 254000 005371' JRST CPEEK ;YES CHECK FOR ;; 005333' 307400 000172 DEF33: CAIG CS,"Z"+40 ;CONVERT LOWER CASE 005334' 305400 000141 CAIGE CS,"A"+40 005335' 254000 005337' JRST .+2 005336' 275400 000040 SUBI CS,40 MACRO V.10 PAGE 100 MACRO/REPEAT HANDLERS 005337' 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 005340' 254000 014247' JRST DEF30] ;AND CONTINUE 005341' 303400 000137 CAILE CS,77+40 005342' 254000 005326' JRST DEF30 ;TEST FOR SPECIAL 005343' 200410 001407' MOVE CS,CSTAT-40(CS) ;GET STATUS BITS MACRO V.10 PAGE 101 MACRO/REPEAT HANDLERS 005344' 603400 000006 TLNE CS,6 ;ALPHA-NUMERIC? 005345' 254000 005406' JRST DEF40 ;YES 005346' 336000 013403' SKIPN SQFLG ;WAS A ' SEEN? 005347' 254000 005355' JRST DEF36 ;NO, PROCESH 005350' 261740 000007 PUSH PP,C ;YES, SAVE CURRENT CHARACTER 005351' 201340 000047 MOVEI C,47 ;AND PUT IN A ' 005352' 260740 006262' PUSHJ PP,WCHAR ;... 005353' 262740 000007 POP PP,C ;RESTORE CURRENT CHARACTER 005354' 402000 013403' SETZM SQFLG ;AND RESET FLAG 005355' 302340 000047 DEF36: CAIE C,47 ;IS THIS A '? 005356' 254000 005363' JRST DEF35 ;NOPE 005357' 336000 013404' SKIPN ARGF ;YES, WAS LAST THING SEEN AN ARG? 005360' 476000 013403' SETOM SQFLG ;IF NOT, SET SNGL QUOT FLAG 005361' 402000 013404' SETZM ARGF ;BUT NOT ARGUMENT IN ANY CASE 005362' 254000 005327' JRST DEF31 ;GO GET NEXT CHARACTER MACRO V.10 PAGE 102 MACRO/REPEAT HANDLERS 005363' 402000 013404' DEF35: SETZM ARGF ;THIS IS NOT AN ARGUMENT 005364' 306340 000074 CAIN C,"<" ;"<"? 005365' 344140 005326' AOJA SDEL,DEF30 ;YES, INCREMENT COUNT AND WRITE 005366' 306340 000076 CAIN C,">" ;">"? 005367' 361140 005462' SOJL SDEL,DEF70 ;YES, TEST FOR END 005370' 254000 005326' JRST DEF30 ;NO, WRITE IT 005371' 607600 004000 CPEEK: TLNN IO,IOPALL ;IF LALL IS ON 005372' 254000 005333' JRST DEF33 ;JUST RETURN 005373' 260740 006335' PUSHJ PP,PEEK ;LOOK AT NEXT CHAR. 005374' 306340 000073 CAIN C,";" ;IS IT ;;? 005375' 254000 005400' JRST CPEEK1 ;YES 005376' 200340 000010 MOVE C,CS ;RESTORE C 005377' 254000 005333' JRST DEF33 ;AND RETURN 005400' 260740 006255' CPEEK1: PUSHJ PP,GCHAR ;GET THE CHAR. 005401' 302340 000076 CAIE C,">" ;RETURN IF END OF MACRO 005402' 307340 000015 CAIG C,CR ;IS CHAR ONE OF 005403' 305340 000012 CAIGE C,LF ;LF,VT,FF,CR 005404' 254000 005400' JRST CPEEK1 ;NO,SO GET NEXT CHAR. 005405' 254000 005330' JRST DEF32 ;YES,RETURN AND STORE MACRO V.10 PAGE 103 MACRO/REPEAT HANDLERS 005406' 201000 000000 DEF40: MOVEI AC0,0 ;CLEAR ATOM 005407' 205040 440600 MOVSI AC1,(POINT 6,AC0) ;SET POINTER 005410' 261740 000007 DEF42: PUSH PP,C ;STACK CHARACTER 005411' 603040 770000 TLNE AC1,770000 ;HAVE WE STORED 6? 005412' 136400 000001 IDPB CS,AC1 ;NO, STORE IN ATOM 005413' 260740 006255' PUSHJ PP,GCHAR ;GET NEXT CHARACTER 005414' 200400 000007 MOVE CS,C 005415' 307400 000172 CAIG CS,"Z"+40 005416' 305400 000141 CAIGE CS,"A"+40 005417' 254000 005421' JRST .+2 005420' 275400 000040 SUBI CS,40 ;CONVERT LOWER TO UPPER 005421' 301400 000040 CAIL CS,40 005422' 303400 000137 CAILE CS,77+40 005423' 254000 005427' JRST DEF44 ;TEST SPECIAL 005424' 200410 001407' MOVE CS,CSTAT-40(CS) ;GET STATUS 005425' 603400 000006 TLNE CS,6 ;ALPHA-NUMERIC? 005426' 254000 005410' JRST DEF42 ;YES, GET ANOTHER 005427' 261740 014100' DEF44: PUSH PP,[0] ;NO, MARK THE LIST 005430' 200200 013343' MOVE SX,PPTMP1 ;GET POINTER TO TOP 005431' 336004 000001 DEF46: SKIPN 1(SX) ;END OF LIST? 005432' 254000 005451' JRST DEF50 ;YES 005433' 312004 000001 CAME AC0,1(SX) ;NO, DO THEY COMPARE? 005434' 344200 005431' AOJA SX,DEF46 ;NO, TRY AGAIN 005435' 274200 013343' SUB SX,PPTMP1 ;YES, GET DUMMY SYMBOL NUMBER 005436' 242200 000004 LSH SX,4 005437' 205404 776020 MOVSI CS,<(BYTE (7) 177,101)>(SX) ;SET ESCAPE CODE MACEND 005440' 242000 777742 LSH AC0,-^D30 005441' 306000 000005 CAIN AC0,5 ;"%"? 005442' 661400 001000 TLO CS,1000 ;YES, SET CRESYM FLAG 005443' 260740 006266' PUSHJ PP,WWORD ;WRITE THE WORD 005444' 476000 013404' SETOM ARGF ;SET ARGUMENT SEEN FLAG 005445' 402000 013403' SETZM SQFLG ;AND IGNORE ANY ' WAITING TO GET INTO STRING 005446' 200740 013344' DEF48: MOVE PP,PPTMP2 ;RESET PUSHDOWN POINTER 005447' 661600 000004 TLO IO,IORPTC ;ECHO LAST CHARACTER 005450' 254000 005327' JRST DEF31 ;RECYCLE 005451' DEF50: 005451' 336000 013403' SKIPN SQFLG ;HAVE WE SEEN A '? 005452' 254000 005456' JRST DEF51 ;NOPE 005453' 201340 000047 MOVEI C,47 ;YES, PUT IT IN 005454' 260740 006262' PUSHJ PP,WCHAR ;... 005455' 402000 013403' SETZM SQFLG ;AND CLEAR FLAG 005456' 200344 000002 DEF51: MOVE C,2(SX) ;GET CHARACTER 005457' 322340 005446' JUMPE C,DEF48 ;CLEAN UP IF END 005460' 260740 006262' PUSHJ PP,WCHAR ;WRITE THE CHARACTER 005461' 344200 005456' AOJA SX,DEF51 ;GET NEXT 005462' 200740 013343' DEF70: MOVE PP,PPTMP1 ;RESTORE PUSHDOWN POINTER 005463' 205400 774020 MOVSI CS,(BYTE (7) 177,1) 005464' 260740 006272' PUSHJ PP,WWRXE ;WRITE END 005465' 402000 013273' SETZM INDEF ;OUT OF IT 005466' 254000 004452' JRST BYPASS MACRO V.10 PAGE 104 MACRO/REPEAT HANDLERS ; HERE TO STORE DEFAULT ARGUMENTS 005467' 350000 013402' DEF80: AOS .TEMP ;COUNT ONE MORE 005470' 260740 006217' PUSHJ PP,SKELI1 ;INITIALIZE SKELETON 005471' 504300 000004 HRL V,SX ;SYMBOL NUMBER 005472' 261740 000006 PUSH PP,V ;STORE POINTER 005473' 634140 000003 TDZA SDEL,SDEL ;ZERO BRACKET COUNT 005474' 260740 006262' DEF81: PUSHJ PP,WCHARQ ;WRITE A CHARACTER 005475' 260740 006254' PUSHJ PP,GCHARQ ;GET A CHARACTER 005476' 306340 000074 CAIN C,"<" ;ANOTHER "<"? 005477' 344140 005474' AOJA SDEL,DEF81 ;YES, INCREMENT AND WRITE 005500' 302340 000076 CAIE C,">" ;CLOSING ANGLE? 005501' 254000 005474' JRST DEF81 ;NO, JUST WRITE THE CHAR. 005502' 365140 005474' SOJGE SDEL,DEF81 ;YES, WRITE IF NOT END 005503' 205400 774040 MOVSI CS,(BYTE (7) 177,2) 005504' 260740 006272' PUSHJ PP,WWRXE ;WRITE END OF DUMMY ARGUMENT 005505' 260740 006255' PUSHJ PP,GCHAR ;READ AT NEXT CHAR. 005506' 302340 000051 CAIE C,")" ;END OF ARGUMENT LIST? 005507' 254000 005241' JRST DEF10 ;NO, GET NEXT SYMBOL 005510' 254000 005251' JRST DEF12 ;YES, LOOK FOR "<" MACRO V.10 PAGE 105 MACRO CALL PROCESSOR SUBTTL MACRO CALL PROCESSOR 005511' 335000 013405' CALLM: SKIPGE MACENL ;ARE WE TRYING TO RE-ENTER? 005512' 254000 003311' JRST ERRAX ;YES, BOMB OUT WITH ERROR 005513' 563000 013405' HRROS MACENL ;FLAG "CALLM IN PROGRESS" 005514' 250700 012600' EXCH MP,RP 005515' 261700 000006 PUSH MP,V ;STACK FOR REFDEC 005516' 250700 012600' EXCH MP,RP 005517' 202000 013276' MOVEM AC0,CALNAM ;SAVE MACRO NAME INCASE OF ERROR 005520' 200140 013415' MOVE SDEL,SEQNO2 ;SAVE IN CASE OF EOF 005521' 202140 013300' MOVEM SDEL,CALSEQ 005522' 200140 013414' MOVE SDEL,PAGENO 005523' 202140 013277' MOVEM SDEL,CALPG 005524' 271300 000001 ADDI V,1 ;POINT TO DUMMY SYMBOL COUNT 005525' 350146 000000 AOS SDEL,0(V) ;INCREMENT ARG COUNT 005526' 512140 013402' HLLZM SDEL,.TEMP ;DEFAULT ARG POINTER IF NON-ZERO 005527' 246140 777723 LSHC SDEL,-^D<9+36> ;ZERO SDEL, GET ARG COUNT IN SX 005530' 405200 000777 ANDI SX,777 ;MASK 005531' 332000 013402' SKIPE .TEMP ;IF AT LEAST ONE DEFAULT ARG 005532' 542200 013402' HRRM SX,.TEMP ;STORE COUNT OF ARGS 005533' 261740 000006 PUSH PP,V ;STACK FOR MRP 005534' 261740 012600' PUSH PP,RP ;STACK FOR MACPNT 005535' 322200 005602' JUMPE SX,MAC20 ;TEST FOR NO ARGS 005536' 260740 001406' PUSHJ PP,CHARAC 005537' 302340 000050 CAIE C,"(" ;"(" 005540' 664140 777777 TROA SDEL,-1 ;NO, FUDGE PAREN COUNT AND SKIP 005541' 260740 006255' MAC10: PUSHJ PP,GCHAR ;GET A CHARACTER, LOOK FOR AN ARG 005542' 307340 000015 CAIG C,CR 005543' 305340 000012 CAIGE C,LF 005544' 306340 000073 CAIN C,";" ;";"? 005545' 254000 005604' JRST MAC21 ;YES, END OF ARGUMENT STRING 005546' 260740 006217' PUSHJ PP,SKELI1 ;NO, INITIALIZE SKELETON 005547' 306340 000074 CAIN C,"<" ;"<"? 005550' 254000 005677' JRST MAC30 ;YES, PROCESS AS SPECIAL 005551' 302340 000176 CAIE C,176 005552' 306340 000134 CAIN C,134 ;"\" 005553' 254000 005707' JRST MAC40 ;YES, PROCESS SYMBOL 005554' 306340 000054 MAC14: CAIN C,"," ;","? 005555' 254000 005573' JRST MAC16 ;YES; NULL SYMBOL 005556' 306340 000050 CAIN C,"(" ;"("? 005557' 271140 000001 ADDI SDEL,1 ;YES, INCREMENT COUNT 005560' 306340 000051 CAIN C,")" ;")"? 005561' 361140 005573' SOJL SDEL,MAC16 ;YES, TEST FOR END 005562' 260740 006262' PUSHJ PP,WCHAR ;WRITE INTO SKELETON 005563' 260740 001406' MAC14A: PUSHJ PP,CHARAC ;GET NEXT CHARACTER 005564' 307340 000015 CAIG C,CR 005565' 305340 000012 CAIGE C,LF 005566' 254000 005570' JRST .+2 005567' 254000 005572' JRST MAC15 ;TEST FOR END OF LINE 005570' 302340 000073 CAIE C,";" ;";"? 005571' 254000 005554' JRST MAC14 ;YES, END OF LINE MACRO V.10 PAGE 105-1 MACRO CALL PROCESSOR 005572' 661600 000004 MAC15: TLO IO,IORPTC 005573' 205400 774040 MAC16: MOVSI CS,(BYTE (7) 177,2) 005574' 260740 006272' PUSHJ PP,WWRXE ;WRITE END 005575' 250700 012600' EXCH MP,RP 005576' 261700 013410' PUSH MP,WWRXX 005577' 250700 012600' EXCH MP,RP 005600' 363200 005602' SOJLE SX,MAC20 ;BRANCH IF NO MORE ARGS 005601' 325140 005541' JUMPGE SDEL,MAC10 ;HAVEN'T SEEN TERMINAL ")" YET MACRO V.10 PAGE 106 MACRO CALL PROCESSOR 005602' 627600 000004 MAC20: TLZN IO,IORPTC 005603' 260740 001406' PUSHJ PP,CHARAC 005604' 250700 012600' MAC21: EXCH MP,RP 005605' 322200 005627' JUMPE SX,MAC21B ;NO MISSING ARGS 005606' 261700 014062' MAC21A: PUSH MP,[-1] ;FILL IN MISSING ARGS 005607' 336000 013402' SKIPN .TEMP ;ANY DEFAULT ARGS? 005610' 254000 005626' JRST MAC21C ;NO 005611' 550340 013402' HRRZ C,.TEMP ;GET ARG COUNT 005612' 275344 777777 SUBI C,-1(SX) ;ACCOUNT FOR THOSE GIVEN 005613' 517000 000007 HRLZS C ;PUT IN LEFT HALF 005614' 554140 013402' HLRZ SDEL,.TEMP ;ADDRESS OF TABLE 005615' 336003 000000 MAC21D: SKIPN (SDEL) ;END OF LIST 005616' 254000 005626' JRST MAC21C ;YES 005617' 430343 000000 XOR C,(SDEL) ;TEST FOR CORRECT ARG 005620' 607340 777777 TLNN C,-1 ;WAS IT? 005621' 254000 005624' JRST MAC21E ;YES 005622' 430343 000000 XOR C,(SDEL) ;BACK THE WAY IT WAS 005623' 344140 005615' AOJA SDEL,MAC21D ;AND TRY AGAIN 005624' 202356 000000 MAC21E: MOVEM C,(MP) ;REPLACE -1 WITH TREE POINTER 005625' 350007 000001 AOS 1(C) ;INCREMENT REFERENCE 005626' 367200 005606' MAC21C: SOJG SX,MAC21A 005627' 261700 014100' MAC21B: PUSH MP,[0] ;SET TERMINAL 005630' 550340 013002' HRRZ C,LIMBO 005631' 607600 000001 TLNN IO,IOSALL ;SUPPRESSING ALL? 005632' 254000 005651' JRST MAC23 ;NO 005633' 326540 005647' JUMPN MRP,MAC27 ;IN MACRO? 005634' 302340 000073 CAIE C,";" ;NO,IN COMMENT? 005635' 254000 005642' JRST MAC26 ;NO 005636' 260740 001406' MAC22: PUSHJ PP,CHARAC ;YES,GET IT INTO THE LBUF 005637' 307340 000015 CAIG C,CR ;LESS THAN CR? 005640' 305340 000012 CAIGE C,LF ;AND GREATER THAN LF? 005641' 254000 005636' JRST MAC22 ;NO GET ANOTHER 005642' 515200 070000 MAC26: HRLZI SX,70000 ;DECREMENT BYTE POINTER 005643' 273200 013003' ADDB SX,LBUFP 005644' 325200 005647' JUMPGE SX,MAC27 005645' 525200 347777 HRLOI SX,347777 005646' 272200 013003' ADDM SX,LBUFP 005647' 505340 777777 MAC27: HRLI C,-1 ;SET FLAG 005650' 254000 005664' JRST MAC25 005651' 201200 000136 MAC23: MOVEI SX,"^" 005652' 321600 005663' JUMPAD MAC24 ;BRANCH IF ADDRESS FIELD 005653' 306340 000073 CAIN C,";" ;IF SEMI-COLON 005654' 332000 013321' SKIPE LITLVL ;AND NOT IN A LITERAL 005655' 254000 005663' JRST MAC24 ;NOT BOTH TRUE 005656' 326540 005663' JUMPN MRP,MAC24 ;OR IN A MACRO 005657' 260740 000230' PUSHJ PP,STOUT ;LIST COMMENT OR CR-LF 005660' 603600 004000 TLNE IO,IOPALL ;MACRO EXPANSION SUPPRESSION? 005661' 661600 010000 TLO IO,IOMAC ; NO, SET TEMP BIT 005662' 674340 014062' TDOA C,[-1] ;FLAG LAST CHARACTER 005663' 137200 013003' MAC24: DPB SX,LBUFP ;SET ^ INTO LINE BUFFER 005664' 261700 013407' MAC25: PUSH MP,MACPNT MACRO V.10 PAGE 106-1 MACRO CALL PROCESSOR 005665' 262740 013407' POP PP,MACPNT 005666' 261700 000007 PUSH MP,C 005667' 261700 013411' PUSH MP,RCOUNT ;STACK WORD COUNT 005670' 261700 000013 PUSH MP,MRP ;STACK MACRO POINTER 005671' 262740 000013 POP PP,MRP ;SET NEW READ POINTER 005672' 250700 012600' EXCH MP,RP 005673' 350000 013406' AOS MACLVL 005674' 553000 013405' HRRZS MACENL ;RESET "CALLM IN PROGRESS" 005675' 325600 000130' JUMPOC STMNT2 ;OP-CODE FIELD 005676' 254000 001073' JRST EVATOM ;ADDRESS FIELD MACRO V.10 PAGE 107 MACRO CALL PROCESSOR 005677' 201000 000000 MAC30: MOVEI AC0,0 ;INITIALIZE BRACKET COUNTER 005700' 260740 006255' MAC31: PUSHJ PP,GCHAR ;GET A CHARACTER 005701' 306340 000074 CAIN C,"<" ;"<"? 005702' 271000 000001 ADDI AC0,1 ;YES, INCREMENT COUNT 005703' 306340 000076 CAIN C,">" ;">"? 005704' 361000 005563' SOJL AC0,MAC14A ;YES, EXIT IF MATCHING 005705' 260740 006262' PUSHJ PP,WCHAR ;WRITE INTO SKELETON 005706' 254000 005700' JRST MAC31 ;GO BACK FOR ANOTHER 005707' 261740 000004 MAC40: PUSH PP,SX ;STACK REGISTERS 005710' 261740 000003 PUSH PP,SDEL 005711' 502600 013377' HLLM IO,TAGINC ;SAVE IO FLAGS 005712' 260740 000354' PUSHJ PP,CELL ;GET AN ATOM 005713' 200300 000000 MOVE V,AC0 ;ASSUME NUMERIC 005714' 603600 020000 TLNE IO,NUMSW ;GOOD GUESS? 005715' 254000 005720' JRST MAC41 ;YES 005716' 260740 012210' PUSHJ PP,SSRCH ;SEARCH THE SYMBOL TABLE 005717' 664600 100000 TROA ER,ERRX ;NOT FOUND, ERROR 005720' 260740 005726' MAC41: PUSHJ PP,MAC42 ;FORM ASCII STRING 005721' 500600 013377' HLL IO,TAGINC ;RESTORE IO FLAGS 005722' 262740 000003 POP PP,SDEL 005723' 262740 000004 POP PP,SX 005724' 661600 000004 TLO IO,IORPTC ;REPEAT LAST CHARACTER 005725' 254000 005563' JRST MAC14A ;RETURN TO MAIN SCAN 005726' 200340 000006 MAC42: MOVE C,V 005727' 246340 777735 MAC44: LSHC C,-^D35 005730' 242400 777777 LSH CS,-1 005731' 235355 000000 DIVI C,0(RX) ;DIVIDE BY CURRENT RADIX 005732' 506417 000000 HRLM CS,0(PP) 005733' 322340 005735' JUMPE C,.+2 ;TEST FOR END 005734' 260740 005727' PUSHJ PP,MAC44 005735' 554357 000000 HLRZ C,0(PP) 005736' 271340 000060 ADDI C,"0" ;FORM TEXT 005737' 254000 006262' JRST WCHAR ;WRITE INTO SKELETON MACRO V.10 PAGE 108 MACRO CALL PROCESSOR 005740' 370000 013405' MACEN0: SOS MACENL 005741' 335340 013405' MACEND: SKIPGE C,MACENL ;TEST "CALLM IN PROGRESS" 005742' 350000 013405' AOS MACENL ;INCREMENT END LEVEL AND EXIT 005743' 321340 005134' JUMPL C,REPEA8 005744' 250700 012600' EXCH MP,RP 005745' 262700 000013 POP MP,MRP ;RETRIEVE READ POINTER 005746' 262700 013411' POP MP,RCOUNT ;AND WORD COUNT 005747' 201340 000136 MOVEI C,"^" 005750' 331016 000000 SKIPL 0(MP) ;TEST FLAG 005751' 260740 001414' PUSHJ PP,RSW2 ;MARK END OF SUBSTITUTION 005752' 262700 000007 POP MP,C 005753' 262700 000005 POP MP,ARG 005754' 334700 013407' SKIPA MP,MACPNT ;RESET MP AND SKIP 005755' 260740 006352' MACEN1: PUSHJ PP,REFDEC ;DECREMENT REFERENCE 005756' 350300 013407' MACEN2: AOS V,MACPNT ;GET POINTER 005757' 200306 000000 MOVE V,0(V) 005760' 327300 005755' JUMPG V,MACEN1 ;IF >0, DECREMENT REFERENCE 005761' 321300 005756' JUMPL V,MACEN2 ;IF <0, BYPASS 005762' 262700 000006 POP MP,V ;IF=0, RETRIEVE POINTER 005763' 260740 006352' PUSHJ PP,REFDEC ;DECREMENT REFERENCE 005764' 202240 013407' MOVEM ARG,MACPNT 005765' 250700 012600' EXCH MP,RP 005766' 370000 013406' SOS MACLVL 005767' 336000 013405' SKIPN MACENL ;CHECK UNPROCESSED END LEVEL 005770' 254000 005773' JRST MACEN3 ;NONE TO PROCESS 005771' 606540 777777 TRNN MRP,-1 ;MRP AT END OF TEXT 005772' 254000 005740' JRST MACEN0 ;THEN POP THE MACRO STACK NOW 005773' 606340 077400 MACEN3: TRNN C,77400 ;SALL FLAG? 005774' 505340 000000 HRLI C,0 ;YES,TURN IT OFF 005775' 321340 005134' JUMPL C,REPEA8 ;IF FLAG SET SUBSTITUTE 005776' 254000 001412' JRST RSW1 MACRO V.10 PAGE 109 MACRO CALL PROCESSOR 005777' 336000 013406' IRP0: SKIPN MACLVL ;ARE WE IN A MACRO? 006000' 254000 003311' JRST ERRAX ;NO, BOMB OUT 006001' 260740 006322' IRP10: PUSHJ PP,MREADS ;YES, GET DATA SPEC 006002' 302340 000040 CAIE C,40 ;SKIP LEADING BLANKS 006003' 306340 000050 CAIN C,"(" ;"("? 006004' 254000 006001' JRST IRP10 ;YES, BYPASS 006005' 306340 000011 CAIN C,11 006006' 254000 006001' JRST IRP10 006007' 302340 000177 CAIE C,177 ;NO, IS IT SPECIAL? 006010' 254000 003311' JRST ERRAX ;NO, ERROR 006011' 260740 006322' PUSHJ PP,MREADS ;YES 006012' 626340 000100 TRZN C,100 ;CREATED? 006013' 254000 003311' JRST ERRAX 006014' 301340 000040 CAIL C,40 ;TOO BIG? 006015' 254000 003311' JRST ERRAX 006016' 270340 013407' ADD C,MACPNT ;NO, FORM POINTER TO STACK 006017' 261700 013316' PUSH MP,IRPCF ;STACK PREVIOUS POINTERS 006020' 261700 013320' PUSH MP,IRPSW 006021' 261700 013315' PUSH MP,IRPARP 006022' 261700 013314' PUSH MP,IRPARG 006023' 261700 013313' PUSH MP,IRPCNT 006024' 261707 000000 PUSH MP,0(C) 006025' 261700 013317' PUSH MP,IRPPOI 006026' 552340 013315' HRRZM C,IRPARP 006027' 202000 013316' MOVEM AC0,IRPCF ;IRPC FLAG FOUND IN AC0 006030' 476000 013320' SETOM IRPSW ;RESET IRP SWITCH 006031' 200407 000000 MOVE CS,0(C) 006032' 202400 013314' MOVEM CS,IRPARG 006033' 260740 006322' PUSHJ PP,MREADS 006034' 302340 000074 CAIE C,"<" ;"<"? 006035' 254000 006033' JRST .-2 ;NO, SEARCH UNTIL FOUND 006036' 260740 006217' PUSHJ PP,SKELI1 ;INITIALIZE NEW STRING 006037' 202240 013317' MOVEM ARG,IRPPOI ;SET NEW POINTER 006040' 634140 000003 TDZA SDEL,SDEL ;ZERO BRACKET COUNT AND SKIP 006041' 260740 006262' IRP20: PUSHJ PP,WCHAR1 006042' 260740 006322' PUSHJ PP,MREADS 006043' 306340 000074 CAIN C,"<" ;"<"? 006044' 344140 006041' AOJA SDEL,IRP20 ;YES, INCREMENT COUNT AND WRITE 006045' 302340 000076 CAIE C,">" ;">"? 006046' 254000 006041' JRST IRP20 ;NO, JUST WRITE IT 006047' 365140 006041' SOJGE SDEL,IRP20 ;YES, WRITE IF NOT MATCHING 006050' 200400 014257' MOVE CS,[BYTE (7) 15,177,4] 006051' 260740 006272' PUSHJ PP,WWRXE ;WRITE END 006052' 261700 000013 PUSH MP,MRP ;STACK PREVIOUS READ POINTER 006053' 261700 013411' PUSH MP,RCOUNT ;AND WORD COUNT 006054' 337400 013314' SKIPG CS,IRPARG 006055' 254000 006135' JRST IRPPOP ;EXIT IF NOT VALID ARGUMENT 006056' 201350 000001 MOVEI C,1(CS) ;INITIALIZE POINTER 006057' 202340 013314' MOVEM C,IRPARG MACRO V.10 PAGE 110 MACRO CALL PROCESSOR 006060' 250540 013314' IRPSET: EXCH MRP,IRPARG ;SWAP READ POINTERS 006061' 200200 013411' MOVE SX,RCOUNT ;SWAP COUNT OF WORDS TO READ 006062' 250200 013313' EXCH SX,IRPCNT 006063' 202200 013411' MOVEM SX,RCOUNT 006064' 260740 006217' PUSHJ PP,SKELI1 ;INITIALIZE SKELETON FOR DATA 006065' 552260 013315' HRRZM ARG,@IRPARP ;STORE NEW DS POINTER 006066' 403200 000003 SETZB SX,SDEL ;ZERO FOUND FLAG AND BRACKET COUNT 006067' 135340 000013 LDB C,MRP ;GET LAST CHAR 006070' 306340 000054 CAIN C,"," 006071' 332000 013316' SKIPE IRPCF ;IN IRPC 006072' 254000 006074' JRST IRPSE1 ;NO 006073' 201200 000001 MOVEI SX,1 ;FORCE ARGUMENT 006074' 260740 006322' IRPSE1: PUSHJ PP,MREADS 006075' 302340 000177 CAIE C,177 ;SPECIAL? 006076' 344200 006103' AOJA SX,IRPSE2 ;NO, FLAG AS FOUND 006077' 260740 006341' PUSHJ PP,PEEKM ;LOOK AT NEXT CHARACTER 006100' 402000 013320' SETZM IRPSW ;SET IRP SWITCH 006101' 327200 006116' JUMPG SX,IRPSE4 ;IF ARG FOUND, PROCESS IT 006102' 254000 006135' JRST IRPPOP ;NO, CLEAN UP AND EXIT 006103' 332000 013316' IRPSE2: SKIPE IRPCF ;IRPC? 006104' 254000 006113' JRST IRPSE3 ;YES, WRITE IT 006105' 306340 000054 CAIN C,"," ;NO, IS IT A COMMA? 006106' 322140 006116' JUMPE SDEL,IRPSE4 ;YES, EXIT IF NOT NESTED 006107' 306340 000074 CAIN C,"<" ;"<"? 006110' 271140 000001 ADDI SDEL,1 ;YES, INCREMENT COUNT 006111' 306340 000076 CAIN C,">" ;">"? 006112' 275140 000001 SUBI SDEL,1 ;YES, DECREMENT COUNT 006113' 260740 006262' IRPSE3: PUSHJ PP,WCHAR 006114' 336000 013316' SKIPN IRPCF ;IRPC? 006115' 254000 006074' JRST IRPSE1 ;NO, GET NEXT CHARACTER 006116' 205400 774040 IRPSE4: MOVSI CS,(BYTE (7) 177,2) 006117' 260740 006272' PUSHJ PP,WWRXE ;WRITE END 006120' 202540 013314' MOVEM MRP,IRPARG ;SAVE POINTER 006121' 200540 013411' MOVE MRP,RCOUNT ;SAVE COUNT 006122' 202540 013313' MOVEM MRP,IRPCNT 006123' 550540 013317' HRRZ MRP,IRPPOI ;SET FOR NEW SCAN 006124' 344540 005134' AOJA MRP,REPEA8 ;ON ARG COUNT MACRO V.10 PAGE 111 MACRO CALL PROCESSOR 006125' 336000 013315' STOPI0: SKIPN IRPARP ;IRP IN PROGRESS? 006126' 254000 003311' JRST ERRAX ;NO, ERROR 006127' 402000 013320' SETZM IRPSW ;YES, SET SWITCH 006130' 263740 000000 POPJ PP, 006131' 200320 013315' IRPEND: MOVE V,@IRPARP 006132' 260740 006352' PUSHJ PP,REFDEC 006133' 332000 013320' SKIPE IRPSW ;MORE TO COME? 006134' 254000 006060' JRST IRPSET ;YES 006135' 200300 013317' IRPPOP: MOVE V,IRPPOI 006136' 260740 006352' PUSHJ PP,REFDEC ;DECREMENT REFERENCE 006137' 262700 013411' POP MP,RCOUNT 006140' 262700 000013 POP MP,MRP ;RESTORE CELLS 006141' 262700 013317' POP MP,IRPPOI 006142' 262720 013315' POP MP,@IRPARP 006143' 262700 013313' POP MP,IRPCNT 006144' 262700 013314' POP MP,IRPARG 006145' 262700 013315' POP MP,IRPARP 006146' 262700 013320' POP MP,IRPSW 006147' 262700 013316' POP MP,IRPCF 006150' 254000 005134' JRST REPEA8 MACRO V.10 PAGE 112 MACRO CALL PROCESSOR 006151' GETDS: ;GET DUMMY SYMBOL NUMBER 006151' 200400 000007 MOVE CS,C ;USE CS FOR WORK REGISTER 006152' 405400 000037 ANDI CS,37 ;MASK 006153' 270400 013407' ADD CS,MACPNT ;ADD BASE ADDRESS 006154' 200310 000000 MOVE V,0(CS) ;GET POINTER FLAG 006155' 327300 006203' JUMPG V,GETDS1 ;BRANCH IF POINTER 006156' 606340 000040 TRNN C,40 ;NOT POINTER, SHOULD WE CREATE? 006157' 254000 001410' JRST RSW0 ;NO, FORGET THIS ARG 006160' 261740 013410' PUSH PP,WWRXX 006161' 261740 000012 PUSH PP,MWP ;STACK MACRO WRITE POINTER 006162' 261740 013412' PUSH PP,WCOUNT ;SAVE WORD COUNT 006163' 260740 006217' PUSHJ PP,SKELI1 ;INITIALIZE SKELETON 006164' 202250 000000 MOVEM ARG,0(CS) ;STORE POINTER 006165' 200400 014260' MOVE CS,[BYTE (7) 0,170,170,170,171] ;CREATE A SYMBOL 006166' 270400 013413' ADD CS,LSTSYM ;LSTSYM= # OF LAST CREATED 006167' 630400 014261' TDZ CS,[BYTE (7) 0,170,170,170,170] 006170' 202400 013413' MOVEM CS,LSTSYM 006171' 434400 014262' IOR CS,[ASCII /.0000/] 006172' 201340 000056 MOVEI C,"." 006173' 260740 006262' PUSHJ PP,WCHAR 006174' 260740 006266' PUSHJ PP,WWORD ;WRITE INTO SKELETON 006175' 205400 774040 MOVSI CS,(BYTE (7) 177,2) 006176' 260740 006272' PUSHJ PP,WWRXE ;WRITE END CODE 006177' 262740 013412' POP PP,WCOUNT ;RESTORE WORD COUNT 006200' 262740 000012 POP PP,MWP ;RESTORE MACRO WRITE POINTER 006201' 262740 013410' POP PP,WWRXX 006202' 200300 000005 MOVE V,ARG ;SET UP FOR REFINC 006203' 260740 006347' GETDS1: PUSHJ PP,REFINC ;INCREMENT REFERENCE 006204' 504300 013411' HRL V,RCOUNT ;SAVE WORD COUNT 006205' 261700 000006 PUSH MP,V ;STACK V FOR DECREMENT 006206' 261700 000013 PUSH MP,MRP ;STACK READ POINTER 006207' 201546 000001 MOVEI MRP,1(V) ;FORM READ POINTER 006210' 254000 001410' JRST RSW0 ;EXIT 006211' 262700 000013 DSEND: POP MP,MRP 006212' 262700 000006 POP MP,V 006213' 576300 013411' HLREM V,RCOUNT ;RESTORE WORD COUNT 006214' 553000 000006 HRRZS V ;CLEAR COUNT 006215' 260740 006352' PUSHJ PP,REFDEC ;DECREMENT REFERENCE 006216' 254000 001410' JRST RSW0 ;EXIT MACRO V.10 PAGE 113 MACRO CALL PROCESSOR 006217' 201240 000001 SKELI1: MOVEI ARG,1 ;ENTRY FOR SINGLE ARG 006220' 400500 000000 SKELI: SETZ MWP, ;SIGNAL FIRST TIME THROUGH 006221' 260740 006233' PUSHJ PP,SKELWL ;GET POINTER WORD 006222' 552500 013410' HRRZM MWP,WWRXX ;SAVE FIRST ADDRESS 006223' 552500 013000' HRRZM MWP,LADR ;SAVE START OF LINKED LIST 006224' 552252 000001 HRRZM ARG,1(MWP) ;STORE COUNT 006225' 370000 013412' SOS WCOUNT ;ACCOUNT FOR WORD 006226' 550240 013410' HRRZ ARG,WWRXX ;SET FIRST ADDRESS 006227' 271500 000002 ADDI MWP,2 ;BUMP POINTER 006230' 505500 440700 HRLI MWP,(POINT 7) ;SET FOR 5 ASCII BYTES ;SKELW RETURNS WITH ADR OF NEXT FREE LOC IN V (RIGHT) 006231' 373000 013412' SKELW: SOSLE WCOUNT ;STILL SOME SPACE IN LEAF? 006232' 263740 000000 POPJ PP, ;YES, RETURN 006233' 332300 013041' SKELWL: SKIPE V,NEXT ;GET FIRST FREE ADDRESS 006234' 254000 006243' JRST SKELW1 ;IF NON-ZERO, UPDATE FREE 006235' 200300 012727' MOVE V,FREE ;GET FREE 006236' 271300 000004 ADDI V,.LEAF ;INCREMENT BY LEAF SIZE 006237' 311300 013102' CAML V,SYMBOL ;OVERFLOW? 006240' 260740 010015' PUSHJ PP,XCEED ;YES, BOMB OUT 006241' 250300 012727' EXCH V,FREE ;UPDATE FREE 006242' 402006 000000 SETZM (V) ;CLEAR LINK 006243' 500306 000000 SKELW1: HLL V,0(V) ;GET ADDRESS 006244' 546300 013041' HLRM V,NEXT ;UPDATE NEXT 006245' 332000 000012 SKIPE MWP ;IF FIRST TIME 006246' 506312 777775 HRLM V,1-.LEAF(MWP) ;STORE LINK IN FIRST WORD OF LEAF 006247' 201500 000004 MOVEI MWP,.LEAF ;SIZE OF LEAF 006250' 202500 013412' MOVEM MWP,WCOUNT ;STORE FOR COUNT DOWN 006251' 201506 000000 MOVEI MWP,(V) ;SET UP WRITE POINTER 006252' 661500 160700 TLO MWP,(POINT 7,,21) ;2 ASCII CHARS 006253' 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.10 PAGE 114 MACRO CALL PROCESSOR 006254' 326540 006322' GCHARQ: JUMPN MRP,MREADS ;IF GETTING CHAR. FROM TREE 006255' 260740 001406' GCHAR: PUSHJ PP,CHARAC ;GET ASCII CHARACTER 006256' 307340 000014 CAIG C,FF ;TEST FOR LF, VT OR FF 006257' 305340 000012 CAIGE C,LF 006260' 263740 000000 POPJ PP, ;NO 006261' 254000 001736' JRST OUTIM1 ;YES, LIST IT 006262' WCHARQ: 006262' WCHAR: 006262' 607500 760000 WCHAR1: TLNN MWP,760000 ;END OF WORD? 006263' 260740 006231' PUSHJ PP,SKELW ;YES, GET ANOTHER 006264' 136340 000012 IDPB C,MWP ;STORE CHARACTER 006265' 263740 000000 POPJ PP, 006266' 246340 000007 WWORD: LSHC C,7 ;MOVE ASCII INTO C 006267' 260740 006262' PUSHJ PP,WCHAR1 ;STORE IT 006270' 326400 006266' JUMPN CS,WWORD ;TEST FOR END 006271' 263740 000000 POPJ PP, ;YES, EXIT 006272' 260740 006266' WWRXE: PUSHJ PP,WWORD ;WRITE LAST WORD 006273' 270500 013412' ADD MWP,WCOUNT ;GET TO END OF LEAF 006274' 275500 000004 SUBI MWP,.LEAF ;NOW POINT TO START OF IT 006275' 553012 000000 HRRZS (MWP) ;ZERO LEFT HALF OF LAST LEAF 006276' 542520 013410' HRRM MWP,@WWRXX ;SET POINTER TO END 006277' 263740 000000 POPJ PP, MACRO V.10 PAGE 115 MACRO CALL PROCESSOR 006300' 260740 006322' MREAD: PUSHJ PP,MREADS ;READ ONE CHARACTER 006301' 302340 000177 CAIE C,177 ;SPECIAL? 006302' 254000 001412' JRST RSW1 ;NO, EXIT 006303' 260740 006322' PUSHJ PP,MREADS ;YES, GET CODE WORD 006304' 622340 000100 TRZE C,100 ;SYMBOL? 006305' 254000 006151' JRST GETDS ;YES 006306' 303340 000004 CAILE C,4 ;POSSIBLY ILLEGAL 006307' 254000 003311' JRST ERRAX ;YUP 006310' 541540 000000 HRRI MRP,0 ;NO, SIGNAL END OF TEXT 006311' 254007 006312' JRST .+1(C) 006312' 260740 010015' PUSHJ PP,XCEED 006313' 254000 005741' JRST MACEND ;1; END OF MACRO 006314' 254000 006211' JRST DSEND ;2; END OF DUMMY SYMBOL 006315' 254000 005136' JRST REPEND ;3; END OF REPEAT 006316' 254000 006131' JRST IRPEND ;4; END OF IRP 006317' 505540 000700 MREADI: HRLI MRP,700 ;SET UP BYTE POINTER 006320' 201340 000003 MOVEI C,.LEAF-1 ;NUMBER OF WORDS 006321' 202340 013411' MOVEM C,RCOUNT 006322' 607540 777777 MREADS: TLNN MRP,-1 ;FIRST TIME HERE? 006323' 254000 006317' JRST MREADI ;YES, SET UP MRP AND RCOUNT 006324' 607540 760000 TLNN MRP,760000 ;HAVE WE FINISHED WORD? 006325' 373000 013411' SOSLE RCOUNT ;YES, STILL ROOM IN LEAF? 006326' 254000 006333' JRST MREADC ;STILL CHAR. IN LEAF 006327' 554553 777775 HLRZ MRP,1-.LEAF(MRP);YES, GET LINK 006330' 505540 160700 HRLI MRP,(POINT 7,,21) ;SET POINTER 006331' 201340 000004 MOVEI C,.LEAF ;RESET COUNT 006332' 202340 013411' MOVEM C,RCOUNT 006333' 134340 000013 MREADC: ILDB C,MRP ;GET CHARACTER 006334' 263740 000000 POPJ PP, 006335' 326540 006341' PEEK: JUMPN MRP,PEEKM ;THIS IS A MACRO READ 006336' 260740 001406' PUSHJ PP,CHARAC ;READ AN ASCII CHAR. 006337' 661600 000004 TLO IO,IORPTC ;REPEAT FOR NEXT 006340' 263740 000000 POPJ PP, ;AND RETURN 006341' 261740 000013 PEEKM: PUSH PP,MRP ;SAVE MACRO READ POINTER 006342' 261740 013411' PUSH PP,RCOUNT ;SAVE WORD COUNT 006343' 260740 006322' PUSHJ PP,MREADS ;READ IN A CHAR. 006344' 262740 013411' POP PP,RCOUNT ;RESTORE WORD COUNT 006345' 262740 000013 POP PP,MRP ;RESET READ POINTER 006346' 263740 000000 POPJ PP, ;IORPTC IS NOT SET MACRO V.10 PAGE 116 MACRO CALL PROCESSOR 006347' 201406 000001 REFINC: MOVEI CS,1(V) ;GET POINTER TO TREE 006350' 350010 000000 AOS 0(CS) ;INCREMENT REFERENCE 006351' 263740 000000 POPJ PP, 006352' 323300 006364' REFDEC: JUMPLE V,DECERR ;CATASTROPHIC ERROR SOMEWHERE 006353' 201406 000001 MOVEI CS,1(V) ;GET POINTER TO TREE 006354' 370410 000000 SOS CS,0(CS) ;DECREMENT REFERENCE 006355' 602400 000777 TRNE CS,000777 ;IS IT ZERO? 006356' 263740 000000 POPJ PP, ;NO, EXIT 006357' 550406 000000 HRRZ CS,0(V) ;YES, GET POINTER TO END 006360' 504400 013041' HRL CS,NEXT ;GET POINTER TO NEXT RE-USABLE 006361' 502410 000000 HLLM CS,0(CS) ;SET LINK 006362' 542300 013041' HRRM V,NEXT ;RESET NEXT 006363' 263740 000000 POPJ PP, 006364' 200000 013276' DECERR: MOVE AC0,CALNAM ;GET MACRO NAME 006365' 205440 014263' MOVSI RC,[SIXBIT /ERROR WHILE EXPANDING@/] 006366' 260740 007757' PUSHJ PP,TYPMSG 006367' 254000 007656' JRST ERRNE2 ;COMMON MESSAGE MACRO V.10 PAGE 117 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.10 PAGE 118 I/O ROUTINES SUBTTL I/O ROUTINES 006370' BEG: 006370' 625600 100000 IFN CCLSW, 006372' 550540 005016* HRRZ MRP,JOBREL ;GET LOWSEG SIZE 006373' 202540 013433' MOVEM MRP,MACSIZ ;SAVE CORE SIZE ;DECODE VERSION NUMBER 006374' 201740 013434' MOVEI PP,JOBFFI ;TEMP PUSH DOWN STACK 006375' 261740 014100' PUSH PP,[0] ;MARK BOTTOM OF STACK 006376' 135000 014267' LDB 0,[POINT 3,JOBVER,2] ;GET USER BITS 006377' 322000 006404' JUMPE 0,GETE ;NOT SET IF ZERO 006400' 271000 000060 ADDI 0,"0" ;FORM NUMBER 006401' 261740 000000 PUSH PP,0 ;STACK IT 006402' 201000 000055 MOVEI 0,"-" ;SEPARATE BY HYPHEN 006403' 261740 000000 PUSH PP,0 ;STACK IT ALSO 006404' 550000 000137 GETE: HRRZ 0,JOBVER ;GET EDIT NUMBER 006405' 322000 006416' JUMPE 0,GETU ;SKIP ALL THIS IF ZERO 006406' 201040 000051 MOVEI 1,")" ;ENCLOSE IN PARENS. 006407' 261740 000001 PUSH PP,1 006410' 231000 000010 GETED: IDIVI 0,8 ;GET OCTAL DIGITS 006411' 271040 000060 ADDI 1,"0" ;MAKE ASCII 006412' 261740 000001 PUSH PP,1 ;STACK IT 006413' 326000 006410' JUMPN 0,GETED ;LOOP TIL DONE 006414' 201000 000050 MOVEI 0,"(" ;OTHER PAREN. 006415' 261740 000000 PUSH PP,0 006416' 135000 014270' GETU: LDB 0,[POINT 6,JOBVER,17] ;UPDATE NUMBER 006417' 322000 006424' JUMPE 0,GETV ;SKIP IF ZERO 006420' 231000 000010 IDIVI 0,8 ;MIGHT BE TWO DIGITS 006421' 271040 000100 ADDI 1,"@" ;FORM ALPHA 006422' 261740 000001 PUSH PP,1 006423' 326000 006417' JUMPN 0,GETU+1 ;LOOP IF NOT DONE 006424' 135000 014271' GETV: LDB 0,[POINT 9,JOBVER,11] ;GET VERSION NUMBER 006425' 231000 000010 IDIVI 0,8 ;GET DIGIT 006426' 271040 000060 ADDI 1,"0" ;TO ASCII 006427' 261740 000001 PUSH PP,1 ;STACK 006430' 326000 006425' JUMPN 0,GETV+1 ;LOOP 006431' 200040 014272' MOVE 1,[POINT 7,VBUF+1,13] ;POINTER TO DEPOSIT IN VBUF 006432' 262740 000000 POP PP,0 ;GET CHARACTER 006433' 136000 000001 IDPB 0,1 ;DEPOSIT IT 006434' 326000 006432' JUMPN 0,.-2 ;KEEP GOING IF NOT ZERO MACRO V.10 PAGE 119 I/O ROUTINES IFN CCLSW,< 006435' 625600 001000 TLZA IO,CRPGSW ;SET TO INIT NEW COMMAND FILE 006436' 607600 001000 M: TLNN IO,CRPGSW ;CURRENTLY DOING RPG?> IFE CCLSW, 006437' 047000 000000 RESET ;INITIALIZE PROGRAM 006440' 402000 012550' SETZM BINDEV ;CLEAR INCASE NOT USED NEXT TIME 006441' 402000 012553' SETZM LSTDEV ;SAME REASON 006442' 402000 012564' SETZM INDEV ;INCASE OF ERROR 006443' 550540 013433' HRRZ MRP,MACSIZ ;GET INITIAL SIZE 006444' 047540 000011 CORE MRP, ;BACK TO ORIGINAL SIZ4 006445' 255000 000000 JFCL ;SHOULD NEVER FAIL 006446' 403540 012600' SETZB MRP,PASS1I 006447' 200000 014273' MOVE [XWD PASS1I,PASS1I+1] 006450' 251000 013415' BLT PASS2X-1 ;ZERO THE PASS1 AND PASS2 VARIABLES 006451' 201740 013434' MOVEI PP,JOBFFI ;SET TEMP PUSH-DOWN POINTER ; MOVE CS,[POINT 7,DBUF,6] ;INITIALIZE FOR DATE ; MSTIME 2, ;GET TIME FROM MONITOR ; PUSHJ PP,TIMOUT ;TIME FORMAT OUTPUT ; DATE 1, ;GET DATE ; IBP CS ;PASS OVER PRESET SPACE ; PUSHJ PP,DATOUT ;DATE FORMAT OUTPUT 006452' 205640 402000 MOVSI FR,P1!CREFSW 006453' 603600 001000 IFN CCLSW, IFE CCLSW, 006460' 205600 004000 MOVSI IO,IOPALL ;ZERO FLAGS 006461' 041000 000001 INIT CTL,AL ;INITIALIZE USER CONSOLE 006462' 646471 000000 SIXBIT /TTY/ 006463' 013430' 013425' XWD CTOBUF,CTIBUF 006464' 047000 000012 EXIT ;NO TTY, NO ASSEMBLY 006465' 205340 646471 MOVSI C,(SIXBIT /TTY/) 006466' 047340 000004 DEVCHR C, ;GET CHARACTERISTICS 006467' 607340 000010 TLNN C,10 ;IS IT REALLY A TTY 006470' 047000 000012 EXIT ;NO 006471' 064000 000001 INBUF CTL,1 ;INITIALIZE SINGLE CONTROL 006472' 065000 000001 OUTBUF CTL,1 ;BUFFERS 006473' 260740 007765' PUSHJ PP,CRLF ;OUTPUT CARRIAGE RETURN - LINE FEED 006474' 201340 000052 MOVEI C,"*" 006475' 136340 013431' IDPB C,CTOBUF+1 006476' 067000 000000 OUTPUT CTL, 006477' 066000 000000 INPUT CTL, MACRO V.10 PAGE 120 I/O ROUTINES 006500' 254000 006620' IFN CCLSW, MACRO V.10 PAGE 123 I/O ROUTINES 006620' 260740 007215' BINSET: PUSHJ PP,NAME1 ;GET FIRST NAME 006621' 306340 000041 IFN CCLSW, 006625' 607640 002000 TLNN FR,CREFSW ;CROSS REF REQUESTED? 006626' 254000 006666' JRST LSTSE1 ;YES, SKIP BINARY 006627' 306340 000054 CAIN C,"," ;COMMA? 006630' 322040 006665' JUMPE ACDEV,LSTSET ;YES, SKIP BINARY IF NO DEVICE SPECIFIED 006631' 306340 000137 CAIN C,"_" ;LEFT ARROW? 006632' 322040 006666' JUMPE ACDEV,LSTSE1 ;YES, SKIP BINARY IF NO DEVICE SPECIFIED 006633' 322040 006436' JUMPE ACDEV,M ;IGNORE IF JUST 006634' 661640 001000 TLO FR,PNCHSW ;OK, SET SWITCH 006635' 202040 012550' MOVEM ACDEV,BINDEV ;STORE DEVICE NAME 006636' 202100 012667' MOVEM ACFILE,BINDIR ;STORE FILE NAME IN DIRECTORY 006637' 326140 006641' JUMPN ACEXT,.+2 ;EXTENSION SPECIFIED? 006640' 205140 624554 MOVSI ACEXT,(SIXBIT /REL/) ;NO, ASSUME RELOCATABLE BINARY 006641' 202140 012670' MOVEM ACEXT,BINDIR+1 ;STORE IN DIRECTORY 006642' 202200 012672' MOVEM ACPPN,BINDIR+3 ;SET PPN 006643' 050040 012547' OPEN BIN,BININI ;INITIALIZE BINARY 006644' 254000 007700' JRST EINIT ;ERROR 006645' 623300 002000 TLZE TIO,TIOLE ;SKIP TO EOT 006646' 072040 000010 MTAPE BIN,10 006647' 623300 001000 TLZE TIO,TIORW ;REWIND REQUESTED? 006650' 072040 000001 MTAPE BIN,1 ;YES 006651' 325400 006657' JUMPGE CS,BINSE2 ;BRANCH IF NO BACK-SPACE 006652' 072040 000017 MTAPE BIN,17 ;BACK-SPACE A FILE 006653' 341400 006652' AOJL CS,.-1 ;TEST FOR END 006654' 072040 000000 WAIT BIN, 006655' 061040 004000 STATO BIN,1B24 ;LOAD POINT? 006656' 072040 000016 MTAPE BIN,16 ;NO, GO FORWARD ONE 006657' 367400 006656' BINSE2: SOJG CS,.-1 ;TEST FORWARD SPACING 006660' 603300 020000 TLNE TIO,TIOCLD ;DIRECTORY CLEAR REQUESTED? 006661' 047040 000013 UTPCLR BIN, ;YES, CLEAR IT 006662' 065040 000002 OUTBUF BIN,2 ;SET UP TWO RING BUFFER 006663' 306340 000137 CAIN C,"_" 006664' 254000 006740' JRST GETSET ;NO LISTING MACRO V.10 PAGE 124 I/O ROUTINES 006665' 260740 007215' LSTSET: PUSHJ PP,NAME1 ;GET NEXT DEVICE 006666' 302340 000137 LSTSE1: CAIE C,"_" 006667' 254000 007321' JRST ERRCM 006670' 603640 002000 TLNE FR,CREFSW ;CROSS-REF REQUESTED? 006671' 254000 006700' JRST LSTSE2 ;NO, BRANCH 006672' 326040 006674' JUMPN ACDEV,.+2 ;YES, WAS DEVICE SPECIFIED? 006673' 205040 446353 MOVSI ACDEV,(SIXBIT /DSK/) ;NO, ASSUME DSK 006674' 326100 006676' JUMPN ACFILE,.+2 006675' 200100 014325' MOVE ACFILE,[SIXBIT /CREF/] 006676' 326140 006700' JUMPN ACEXT,.+2 006677' 205140 436246 MOVSI ACEXT,(SIXBIT /CRF/) 006700' 322040 006740' LSTSE2: JUMPE ACDEV,GETSET ;FORGET LISTING IF NO DEVICE SPECIFIED 006701' 200000 000001 MOVE AC0,ACDEV 006702' 047000 000004 DEVCHR AC0, ;GET CHARACTERISTICS 006703' 603000 042010 TLNE AC0,LPTBIT!DISBIT!TTYBIT 006704' 603640 002000 TLNE FR,CREFSW ; WAS CROSS-REF REQUESTED? 006705' 354000 013042' AOSA OUTSW+0*TTYSW ;NO, ASSUME TTY 006706' 254000 007321' JRST ERRCM ;YES, ERROR - CREF DEV MUST NOT BE LPT, DIS, OR TTY 006707' 603000 020000 TLNE AC0,CONBIT ;CONTROLING TELETYPE LISTING? 006710' 254000 006740' JRST GETSET ;YES, BUFFER ALREADY SET 006711' 202040 012553' MOVEM ACDEV,LSTDEV ;STORE DEVICE NAME 006712' 350000 013042' AOS OUTSW+0*LPTSW ;SET FOR LPT 006713' 202100 012663' MOVEM ACFILE,LSTDIR ;STORE FILE NAME 006714' 326140 006716' JUMPN ACEXT,.+2 006715' 205140 546364 MOVSI ACEXT,(SIXBIT /LST/) 006716' 202140 012664' MOVEM ACEXT,LSTDIR+1 006717' 202200 012666' MOVEM ACPPN,LSTDIR+3 ;SET PPN 006720' 050140 012552' OPEN LST,LSTINI ;INITIALIZE LISTING OUTPUT 006721' 254000 007700' JRST EINIT ;ERROR 006722' 623300 002000 TLZE TIO,TIOLE 006723' 072140 000010 MTAPE LST,10 006724' 623300 001000 TLZE TIO,TIORW ;REWIND REQUESTED? 006725' 072140 000001 MTAPE LST,1 ;YES 006726' 325400 006734' JUMPGE CS,LSTSE3 006727' 072140 000017 MTAPE LST,17 006730' 341400 006727' AOJL CS,.-1 006731' 072140 000000 WAIT LST, 006732' 061140 004000 STATO LST,1B24 006733' 072140 000016 MTAPE LST,16 006734' 367400 006733' LSTSE3: SOJG CS,.-1 006735' 603300 020000 TLNE TIO,TIOCLD ;DIRECTORY CLEAR REQUESTED? 006736' 047140 000013 UTPCLR LST, ;YES, CLEAR IT 006737' 065140 000002 OUTBUF LST,2 ;SET UP A TWO RING BUFFER MACRO V.10 PAGE 125 I/O ROUTINES 006740' 201140 010037' GETSET: MOVEI 3,PDPERR 006741' 542140 000000* HRRM 3,JOBAPR ;SET TRAP LOCATION 006742' 201140 200000 MOVEI 3,1B19 ;SET FOR PUSH-DOWN OVERFLOW 006743' 047140 000016 APRENB 3, 006744' 370140 013043' SOS 3,PDP ;GET PDP REQUEST MINUS 1 006745' 221140 000062 IMULI 3,.PDP ;COMPUTE SIZE (50*) 006746' 514700 000003 HRLZ MP,3 006747' 540700 006612* HRR MP,JOBFF ;SET BASIC POINTER 006750' 200740 000016 MOVE PP,MP 006751' 274740 000003 SUB PP,3 006752' 202740 012600' MOVEM PP,RP ;SET RP 006753' 274740 000003 SUB PP,3 006754' 240140 000001 ASH 3,1 ;DOUBLE SIZE OF BASIC POINTER 006755' 504740 000003 HRL PP,3 006756' 276740 000003 SUBM PP,3 ;COMPUTE TOP LOCATION IFN UNIVR, 006757' 552140 013000' HRRZM 3,LADR ;SET START OF MACRO TREE 006760' 552140 012727' HRRZM 3,FREE 006761' 550000 006533* GETSE1: HRRZ JOBREL 006762' 275000 000001 SUBI 1 006763' 202000 013103' MOVEM SYMTOP ;SET TOP OF SYMBOL TABLE 006764' 275000 000004 SUBI LENGTH ;SET POINTER FOR INITIAL SYMBOLS 006765' 313000 013000' CAMLE LADR ;HAVE WE ROOM? 006766' 254000 006774' JRST GETSE2 ;YES 006767' 550100 006761* HRRZ 2,JOBREL ;NO, TRY FOR MORE CORE 006770' 271100 002000 ADDI 2,2000 006771' 047100 000011 CORE 2, 006772' 254000 010035' JRST XCEED2 ;NO MORE, INFORM USER 006773' 254000 006761' JRST GETSE1 ;TRY AGAIN 006774' 202000 013102' GETSE2: MOVEM SYMBOL ;SET START OF SYMBOL TABLE 006775' 505000 011713' HRLI SYMNUM 006776' 251020 013103' BLT @SYMTOP ;STORE SYMBOLS 006777' 260740 012455' PUSHJ PP,SRCHI ;INITIALIZE TABLE 007000' 200000 014326' MOVE [XWD CTIBUF+1,CTLSAV] ;SAVE CONTROL INPUT BUFFER 007001' 251000 013267' BLT CTLS1 ;FOR RESCAN ON PASS 2 007002' 205000 446353 IFN FTDISK, 007004' 260740 002657' PUSHJ PP,COUTI ;INIT OUTPUT JUST IN CASE 007005' 260740 007027' PUSHJ PP,INSET ;GET FIRST INPUT FILE 007006' 603600 001000 IFN CCLSW, 007010' 200400 012673' MOVE CS,INDIR ;SET UP NAME OF FIRST FILE 007011' 202400 012537' MOVEM CS,LSTFIL ;AS LAST PRINTED MACRO V.10 PAGE 125-1 I/O ROUTINES 007012' 402000 013416' SETZM LSTPGN 007013' 254000 000077' JRST ASSEMB ;START ASSEMBLY MACRO V.10 PAGE 126 I/O ROUTINES 007014' 070040 000000 FINIS: CLOSE BIN, ;DUMP BUFFER 007015' 603640 001000 TLNE FR,PNCHSW ;PUNCH REQUESTED? 007016' 260740 010133' PUSHJ PP,TSTBIN ;YES, TEST FOR ERRORS 007017' 071040 000000 RELEAS BIN, 007020' 070140 000000 CLOSE LST, 007021' 373000 013042' SOSLE OUTSW+0*LPTSW ;LPT TYPE OUTPUT? 007022' 260740 010142' PUSHJ PP,TSTLST ;YES, TEST FOR ERRORS 007023' 071140 000000 RELEAS LST, 007024' 071100 000000 RELEAS CHAR, 007025' 067000 000000 OUTPUT CTL,0 ;FLUSH TTY OUTPUT IFN UNIVR, 007026' 254000 006436' JRST M ;RETURN FOR NEXT ASSEMBLY MACRO V.10 PAGE 127 I/O ROUTINES 007027' 201000 013434' INSET: MOVEI JOBFFI ;POINTER TO INPUT BUFFER 007030' 542000 006747* HRRM JOBFF ;INFORM SYSTEM OF BUFFER AREA 007031' 260740 007216' PUSHJ PP,NAME2 ;GET NEXT COMMAND NAME 007032' 322040 007633' JUMPE ACDEV,ERRNE ;ERROR IF NONE LEFT 007033' 202040 012564' MOVEM ACDEV,INDEV ;STORE DEVICE 007034' 202100 012673' MOVEM ACFILE,INDIR ;STORE FILE IN DIRECTORY 007035' 202200 012676' MOVEM ACPPN,INDIR+3 ;STORE PPN BEFORE WE LOSE IT 007036' 050100 012563' OPEN CHAR,INDEVI 007037' 254000 007700' JRST EINIT ;ERROR 007040' 047040 000004 DEVCHR ACDEV, ;TEST CHARACTERISTICS 007041' 607040 000020 TLNN ACDEV,MTABIT ;MAG TAPE? 007042' 254000 007065' JRST INSET3 ;NO 007043' 627640 000004 TLZN FR,MTAPSW ;FIRST MAG TAPE IN PASS 2? 007044' 254000 007047' JRST INSET1 ;NO 007045' 607300 001000 TLNN TIO,TIORW ;YES, REWIND REQUESTED? 007046' 274400 013044' SUB CS,RECCNT ;NO, PREPARE TO BACK-SPACE TAPE 007047' 350000 013044' INSET1: AOS RECCNT ;INCREMENT FILE COUNTER 007050' 272400 013044' ADDM CS,RECCNT ;UPDATE COUNT 007051' 623300 002000 TLZE TIO,TIOLE 007052' 072100 000010 MTAPE CHAR,10 007053' 623300 001000 TLZE TIO,TIORW ;REWIND? 007054' 072100 000001 MTAPE CHAR,1 ;YES 007055' 325400 007064' JUMPGE CS,INSET2 007056' 072100 000017 MTAPE CHAR,17 007057' 072100 000017 MTAPE CHAR,17 007060' 341400 007057' AOJL CS,.-1 007061' 072100 000000 WAIT CHAR, 007062' 061100 004000 STATO CHAR,1B24 007063' 072100 000016 MTAPE CHAR,16 007064' 365400 007063' INSET2: SOJGE CS,.-1 007065' 064100 000001 INSET3: INBUF CHAR,1 007066' 201240 013434' MOVEI ACPNTR,JOBFFI 007067' 250240 007030* EXCH ACPNTR,JOBFF 007070' 275240 013434' SUBI ACPNTR,JOBFFI 007071' 201200 000407 MOVEI ACDEL,NUMBUF*203+1 007072' 230200 000005 IDIV ACDEL,ACPNTR 007073' 064104 000000 INBUF CHAR,(ACDEL) 007074' 326140 007077' JUMPN ACEXT,INSET4 ;TAKE USER'S EXTENSION IF NON-BLANK 007075' 205140 554143 MOVSI ACEXT,(SIXBIT /MAC/) ;BLANK, TRY .MAC FIRST 007076' 260740 007143' PUSHJ PP,INSETI 007077' 260740 007143' INSET4: PUSHJ PP,INSETI 007100' 322140 007707' JUMPE ACEXT,ERRCF ;ERROR IF ZERO 007101' 603040 000010 TLNE ACDEV,TTYBIT ;TELETYPE? 007102' 060100 000001 SETSTS CHAR,AL ;YES, CHANGE TO ASCII LINE MACRO V.10 PAGE 128 I/O ROUTINES ;DO ALL ENTERS HERE FOR LEVEL D 007103' 332000 013261' SKIPE ENTERS ;HAVE ENTERS BEEN DONE ALREADY? 007104' 254000 007136' JRST ENTRDN ;YES, DON'T DO TWICE 007105' 336140 012553' SKIPN ACEXT,LSTDEV ;IS THERE A LIST DEVICE? 007106' 254000 007127' JRST LSTSE5 ;NO SO DON'T DO ENTER 007107' 336100 012663' 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 007110' 254000 014331' JRST LSTSE4] 007111' 510140 012664' HLLZ ACEXT,LSTDIR+1 ;EXT ALSO 007112' 200200 012666' MOVE ACPPN,LSTDIR+3 ;SAVE PPN 007113' 076140 012663' LOOKUP LST,LSTDIR ;PREVIOUS ONE STILL THERE 007114' 254000 007125' JRST LSTSE4 ;NO 007115' 402000 012663' SETZM LSTDIR ;YES,CLEAR NAME 007116' 202200 012666' MOVEM ACPPN,LSTDIR+3 ;RESET PPN 007117' 055140 012663' RENAME LST,LSTDIR 007120' 070140 000000 CLOSE LST, ;IGNORE FAILURE 007121' 202100 012663' MOVEM ACFILE,LSTDIR ;RESTORE NAME 007122' 513000 012664' HLLZS LSTDIR+1 ;BH 11/19/74 FOR DATE75. CLEAR RH. 007123' 402000 012665' SETZM LSTDIR+2 ;CLEAR PROTECTION AND DATE 007124' 202200 012666' MOVEM ACPPN,LSTDIR+3 ;SET PPN AGAIN 007125' LSTSE4: 007125' 077140 012663' ENTER LST,LSTDIR ;SET UP DIRECTORY 007126' 254000 007702' JRST ERRCL ;ERROR 007127' 336140 012550' LSTSE5: SKIPN ACEXT,BINDEV ;A BINARY DEVICE THEN ? 007130' 254000 007136' JRST ENTRDN ;NO 007131' 336100 012667' 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 007132' 254000 014337' JRST .+1] 007133' 513140 012670' HLLZS ACEXT,BINDIR+1 ;BH 11/19/74 DATE75. WAS HLLZ. 007134' 077040 012667' ENTER BIN,BINDIR ;ENTER FILE NAME 007135' 254000 007704' JRST ERRCB ;ERROR 007136' 476000 013261' ENTRDN: SETOM ENTERS ;MAKE SURE ONLY DONE ONCE REPEAT 0,< MOVE CS,[POINT 7,DEVBUF] PUSH PP,1 ;SAVE THE ACCS PUSH PP,2 PUSH PP,3 SKIPN 2,INDIR ;GET INPUT NAME JRST FINDEV ;FINISHED WITH DEVICE SETZ 1, ;CLEAR FOR RECEIVING LSHC 1,6 ;SHIFT ONE CHAR. IN ADDI 1,40 ;FORM ASCII IDPB 1,CS ;STORE CHAR. JUMPN 2,.-4 ;MORE TO DO? MACRO V.10 PAGE 128-1 I/O ROUTINES MOVEI 1," " ;SEPARATE BY TAB IDPB 1,CS HLLZ 2,INDIR+1 ;GET EXT JUMPE 2,FINEXT ;NO EXT SETZ 1, LSHC 1,6 ;SAME LOOP AS ABOVE ADDI 1,40 IDPB 1,CS JUMPN 2,.-4 FINEXT: MOVEI 1," " IDPB 1,CS ;SEPARATE BY TAB LDB 1,[POINT 12,INDIR+2,35] ;GET DATE LDB 2,[POINT 3,INDIR+1,20] ;BH 11/19/74 DATE75. DPB 2,[POINT 3,1,23] ;BH 11/19/74 DATE75. JUMPE 1,FINDEV ;NO DATE? PUSHJ PP,DATOUT ;STORE IT LDB 2,[POINT 11,INDIR+2,23] ;GET CREATION TIME JUMPE 2,FINDEV ;NO TIME (DECTAPE) MOVEI 1," " ;SEPARATE BY SPACE IDPB 1,CS PUSHJ PP,TIMOU1 ;STORE TIME FINDEV: SETZ 1, MOVEI 2," " ;FINAL TAB IDPB 2,CS IDPB 1,CS ;TERMINATE FOR NOW POP PP,3 ;RESTORE ACCS POP PP,2 POP PP,1 > 007137' 336000 013414' SKIPN PAGENO ;IF FIRST TIME THRU 007140' 254000 010417' JRST OUTFF ;START NEW PAGE 007141' 402000 013414' SETZM PAGENO ;ON NEW FILE, RESET PAGES 007142' 254000 010420' JRST OUTFF2 ;DON'T START NEW PAGE UNLESS FF 007143' 512140 012674' INSETI: HLLZM ACEXT,INDIR+1 ;STORE EXTENSION 007144' 200200 012676' MOVE ACPPN,INDIR+3 ;SAVE PPN 007145' 076100 012673' LOOKUP CHAR,INDIR 007146' 334140 012674' SKIPA ACEXT,INDIR+1 ;GET ERROR CODE 007147' 254000 003357' JRST CPOPJ1 ;SKIP-RETURN IF FOUND 007150' 602140 777777 TRNE ACEXT,-1 ;ERROR CODE OF 0 IS FILE NOT FOUND 007151' 254000 007707' JRST ERRCF ;FILE THERE BUT NOT READABLE 007152' 400140 000000 SETZ ACEXT, ;CLEAR EXT AND TRY AGAIN 007153' 202200 012676' MOVEM ACPPN,INDIR+3 ;RESTORE PPN 007154' 263740 000000 POPJ PP, MACRO V.10 PAGE 129 I/O ROUTINES 007155' 204000 014326' REC2: MOVS [XWD CTIBUF+1,CTLSAV] ;RESCAN CONTROL (FROM PASS1 END STMNT) 007156' 251000 013427' BLT CTIBUF+2 ;INPUT BUFFER 007157' 201000 000137 MOVEI "_" 007160' 506000 012677' HRLM ACDELX ;FUDGE PREVIOUS DELIMITER IFN RENTSW, 007161' 402000 013262' SETZM PASS2I 007162' 200000 014200' MOVE [XWD PASS2I,PASS2I+1] 007163' 251000 013415' BLT PASS2X-1 ;ZERO PASS2 VARIABLES 007164' 661640 000024 TLO FR,MTAPSW!LOADSW ;SET FLAGS 007165' 200000 012564' GOTEND: MOVE INDEV ;GET LAST DEVICE 007166' 047000 000004 DEVCHR ;GET ITS CHARACTERISTICS 007167' 603000 000004 TLNE 4 ;TEST FOR DIRECTORY (DSK OR DTA) 007170' 254000 007176' JRST EOT ;YES, SO DON'T WASTE TIME 007171' 254000 007174' JRST .+3 ;NO, INPUT BUFFER BY BUFFER 007172' 056100 000000 IN CHAR, 007173' 254000 007172' JRST .-1 ;NO ERRORS 007174' 061100 020000 STATO CHAR,1B22 ;TEST FOR EOF 007175' 254000 007172' JRST .-3 ;IGNORE ERRORS 007176' 260740 007211' EOT: PUSHJ PP,SAVEXS ;SAVE REGISTERS 007177' 260740 007027' PUSHJ PP,INSET ;GET THE NEXT INPUT DEVICE 007200' 561440 014345' HRROI RC,[SIXBIT /END OF PASS 1@/] ;ASSUME END OF PASS 007201' 627640 000020 TLZN FR,LOADSW ;ZERO ONLY ON END OF PASS 1 007202' 561440 014350' HRROI RC,[SIXBIT /LOAD THE NEXT FILE@/] ;NOT END OF PASS 007203' 607040 000024 TLNN ACDEV,(1B13!1B15) ;WAS ALL THAT WORK NECESSARY? 007204' 260740 007757' PUSHJ PP,TYPMSG ;YES 007205' 205440 013045' RSTRXS: MOVSI RC,SAVBLK ;SET POINTER 007206' 251440 000010 BLT RC,RC-1 ;RESTORE REGISTERS 007207' 200440 013056' MOVE RC,SAVERC ;RESTORE RC 007210' 263740 000000 POPJ PP, ;EXIT 007211' 202440 013056' SAVEXS: MOVEM RC,SAVERC ;SAVE RC 007212' 201440 013045' MOVEI RC,SAVBLK ;SET POINTER 007213' 251440 013055' BLT RC,SAVBLK+RC-1 ;BLT ALL REGISTERS BELOW RC 007214' 263740 000000 POPJ PP, ;EXIT MACRO V.10 PAGE 130 I/O ROUTINES 007215' 402000 013264' NAME1: SETZM ACDEVX ;ENTRY FOR DESTINATION 007216' 403040 012675' NAME2: SETZB ACDEV,INDIR+2 ;ENTRY FOR SOURCE 007217' 201100 000000 MOVEI ACFILE,0 ;CLEAR FILE 007220' 554200 012677' HLRZ ACDEL,ACDELX ;GET PREVIOUS DELIMITER 007221' 403300 000010 SETZB TIO,CS 007222' 403140 012676' SETZB ACEXT,INDIR+3 ;RESET EXTENSION AND PROGRAM-NUMBER PAIR 007223' 402000 013402' SETZM PPN ;CLEAR PPN 007224' 205240 440600 NAME3: MOVSI ACPNTR,(POINT 6,AC0) ;SET POINTER 007225' 634000 000000 TDZA AC0,AC0 ;CLEAR SYMBOL 007226' 260740 007346' SLASH: PUSHJ PP,SW0 007227' 260740 007614' GETIOC: PUSHJ PP,TTYIN ;GET INPUT CHARACTER 007230' 306340 000057 CAIN C,"/" 007231' 254000 007226' JRST SLASH 007232' 306340 000050 CAIN C,"(" 007233' 254000 007342' JRST SWITCH 007234' 306340 000072 CAIN C,":" 007235' 254000 007267' JRST DEVICE 007236' 306340 000056 CAIN C,"." 007237' 254000 007272' JRST NAME 007240' 302340 000041 IFN CCLSW, 007243' 302340 000033 CAIE C,33 ;CHECK FOR THREE FLAVORS OF ALT-MODE 007244' 306340 000176 CAIN C,176 ;... 007245' 254000 007276' JRST TERM ;... 007246' 307340 000015 CAIG C,CR ;LESS THAN CR? 007247' 305340 000012 CAIGE C,LF ;AND GREATER THAN LF? 007250' 306340 000175 CAIN C,175 ;OR 3RD ALTMOD 007251' 254000 007276' JRST TERM ;YES 007252' 306340 000133 IFN FTDISK, 007254' 306340 000075 CAIN C,"=" ;EQUALS IS SAME AS LEFT ARROW 007255' 644340 000142 TRCA C,142 ;SO MAKE IT A "_" AND SKIP 007256' 302340 000054 CAIE C,"," 007257' 306340 000137 CAIN C,"_" 007260' 254000 007276' JRST TERM 007261' 305340 000040 CAIGE C,40 ;VALID AS SIXBIT? JRST [CAIN C,"Z"-100 ;NO,IS IT ^Z EXIT ;YES,EXIT FOR BATCH 007262' 254000 014354' JRST GETIOC] ;JUST IGNORE 007263' 275340 000040 SUBI C,40 ;CONVERT TO 6-BIT 007264' 603240 770000 TLNE ACPNTR,770000 ;HAVE WE STORED SIX BYTES? 007265' 136340 000005 IDPB C,ACPNTR ;NO, STORE IT 007266' 254000 007227' JRST GETIOC ;GET NEXT CHARACTER 007267' 326040 007321' DEVICE: JUMPN ACDEV,ERRCM ;ERROR IF ALREADY SET 007270' 200040 000000 MOVE ACDEV,AC0 ;DEVICE NAME 007271' 254000 007274' JRST DEVNAM ;COMMON CODE 007272' 326100 007321' NAME: JUMPN ACFILE,ERRCM ;ERROR IF ALREADY SET 007273' 200100 000000 MOVE ACFILE,AC0 ;FILE NAME 007274' 200200 000007 DEVNAM: MOVE ACDEL,C ;SET DELIMITER MACRO V.10 PAGE 130-1 I/O ROUTINES 007275' 254000 007224' JRST NAME3 ;GET NEXT SYMBOL 007276' 322200 007303' TERM: JUMPE ACDEL,TERM1 ;IF NO PREVIOUS TERMINATOR, THEN FILENAME 007277' 306200 000137 CAIN ACDEL,"_" ;... 007300' 254000 007303' JRST TERM1 ;... 007301' 302200 000072 CAIE ACDEL,":" ;IF PREVIOUS DELIMITER 007302' 306200 000054 CAIN ACDEL,"," ;WAS COLON OR COMMA 007303' 200100 000000 TERM1: MOVE ACFILE,AC0 ;SET FILE 007304' 306200 000056 CAIN ACDEL,"." ;IF PERIOD, 007305' 510140 000000 HLLZ ACEXT,AC0 ;SET EXTENSION 007306' 506340 012677' HRLM C,ACDELX ;SAVE PREVIOUS DELIMITER 007307' 326040 007311' JUMPN ACDEV,.+2 ;IF DEVICE SET USE IT 007310' 334040 013264' SKIPA ACDEV,ACDEVX ;OTHERWISE USE LAST DEVICE 007311' 202040 013264' MOVEM ACDEV,ACDEVX ;AND DEVICE 007312' 200200 013402' MOVE ACPPN,PPN ;PUT PPN IN RIGHT PLACE 007313' 306340 000041 IFN FTDISK, 007320' 263740 000000 POPJ PP, ;EXIT MACRO V.10 PAGE 131 I/O ROUTINES 007321' 561440 014357' ERRCM: HRROI RC,[SIXBIT /COMMAND ERROR@/] 007322' 254000 007714' JRST ERRFIN 007323' IFN FTDISK, MACRO V.10 PAGE 132 I/O ROUTINES 007341' 260740 007347' SWITC0: PUSHJ PP,SW1 ;PROCESS CHARACTER 007342' 260740 007614' SWITCH: PUSHJ PP,TTYIN ;GET NEXT CHARACTER 007343' 302340 000051 CAIE C,")" ;END OF STRING? 007344' 254000 007341' JRST SWITC0 ;NO 007345' 254000 007227' JRST GETIOC ;YES 007346' 260740 007614' SW0: PUSHJ PP,TTYIN 007347' 201347 777677 SW1: MOVEI C,-"A"(C) ;CONVERT FROM ASCII TO NUMERIC 007350' 303340 000031 CAILE C,"Z"-"A" ;WITHIN BOUNDS? (IS IT ALPHA?) 007351' 254000 007321' JRST ERRCM ;NO, ERROR 007352' 200440 014362' MOVE RC,[POINT 4,BYTAB] 007353' 133000 000011 IBP RC 007354' 365340 007353' SOJGE C,.-1 ;MOVE TO PROPER BYTE 007355' 135340 000011 LDB C,RC ;PICK UP BYTE 007356' 322340 007321' JUMPE C,ERRCM ;TEST FOR VALID SWITCH 007357' 307340 000003 CAIG C,SWTABT-SWTAB ;LEGAL ON SOURCE? 007360' 321740 007321' JUMPL PP,ERRCM ;NO, TEST FOR SOURCE 007361' 135440 014363' LDB RC,[POINT 4,SWTAB-1(C),12] 007362' 306440 000014 CAIN RC,IO 007363' 336000 013266' SKIPN CTLSAV ;IF PASS2 OR IO SWITCH, 007364' 256007 007570' XCT SWTAB-1(C) ;EXECUTE INSTRUCTION 007365' 263740 000000 POPJ PP, ;EXIT 007366' 621600 000001 TLZ IO,IOSALL ;TAKE CARE OF /X 007367' 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.10 PAGE 133 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 007571' SWTAB: 007571' 661300 020000 SETSW Z, 007572' 621640 002000 SETSW C, 007573' 370000 013043' SETSW P, 007574' SWTABT: ;THE ABOVE SW'S ARE LEGAL ON OUTPUT ONLY 007574' 271400 000001 SETSW A, 007575' 275400 000001 SETSW B, 007576' 621600 004001 SETSW E, 007577' 000000 007370' SETSW H, 007600' 621600 200000 SETSW L, 007601' 661600 004001 SETSW M, 007602' 523000 013256' SETSW N, 007603' 256000 004155' SETSW O, 007604' 661640 000010 SETSW Q, 007605' 661600 200000 SETSW S, 007606' 661300 002000 SETSW T, 007607' 661300 001000 SETSW W, 007610' 665600 004000 SETSW X, 007611' BYTAB: ;BYTAB CONTAINS AN INDEX TO SWTAB ;IT CONSIST OF 9 4BIT BYTES/WORD ;OR ONE BYTE FOR EACH LETTER 007611' 212201 400160 +BYTAB0 ;A-I BYTE = 1 THROUGH 17 = INDEX 007612' 001046 531700 +BYTAB1 ;J-R BYTE = 0 = COMMAND ERROR 007613' 674003 600020 +BYTAB2 ;S-Z IF2, MACRO V.10 PAGE 134 I/O ROUTINES 007614' 375000 013427' TTYIN: SOSGE CTIBUF+2 ;ENUF CHAR.? 007615' 254000 007631' JRST TTYERR ;NO 007616' 134340 013426' ILDB C,CTIBUF+1 ;GET CHARACTER 007617' 302340 000040 CAIE C," " ;SKIP BLANKS 007620' 306340 000011 CAIN C,HT ;AND TABS 007621' 254000 007614' JRST TTYIN 007622' 306340 000015 CAIN C,15 ;CR? 007623' 402000 013427' SETZM CTIBUF+2 ;YES,IGNORE REST OF LINE 007624' 307340 000172 CAIG C,"Z"+40 ;CHECK FOR LOWER CASE 007625' 305340 000141 CAIGE C,"A"+40 007626' 263740 000000 POPJ PP, ;NO,EXIT 007627' 275340 000040 SUBI C,40 007630' 263740 000000 POPJ PP, ;YES, EXIT 007631' 336000 012564' TTYERR: SKIPN INDEV ;INPUT DEVICE SEEN? 007632' 254000 007321' JRST ERRCM ;NO, SO MISSING "_" 007633' 561440 014364' ERRNE: HRROI RC,[SIXBIT /?NO END STATEMENT ENCOUNTERED ON INPUT FILE@/] 007634' 000000 000006 ERRNE0: SKPINC V ;SEE IF WE CAN INPUT A CHAR. 007635' 255000 000000 JFCL ;BUT ONLY TO DEFEAT ^O 007636' 260740 007757' PUSHJ PP,TYPMSG ;OUTPUT IT 007637' 332000 013321' SKIPE LITLVL ;SEE IF IN LITERAL 007640' 336000 013303' SKIPN LITPG ;PAGE 0 MEANS NOT IN A LITERAL REALY 007641' 254000 007644' JRST ERRNE1 ;NO, TRY OTHERS 007642' 200300 014376' MOVE V,[XWD [SIXBIT /IN LITERAL@/],LITPG] 007643' 260740 010041' PUSHJ PP,PRNUM ;GO PRINT INFORMATION 007644' 201300 000000 ERRNE1: MOVEI V,0 ;CHECK FOR OTHER PLACES 007645' 332000 013273' SKIPE INDEF 007646' 200300 014401' MOVE V,[XWD [SIXBIT /IN DEFINE@/],DEFPG] 007647' 332000 013274' SKIPE INTXT 007650' 200300 014404' MOVE V,[XWD [SIXBIT /IN TEXT@/],TXTPG] 007651' 332000 013272' SKIPE INREP 007652' 200300 014412' MOVE V,[XWD [SIXBIT /IN CONDITIONAL OR REPEAT@/],REPPG] 007653' 332000 013275' SKIPE INCND 007654' 200300 014416' MOVE V,[XWD [SIXBIT /IN CONDITIONAL@/],CNDPG] 007655' 335000 013405' SKIPGE MACENL 007656' 200300 014422' ERRNE2: MOVE V,[XWD [SIXBIT /IN MACRO CALL@/],CALPG] 007657' 326300 007663' JUMPN V,ERRNE3 007660' 336000 013321' SKIPN LITLVL ;HAD ONE PAGE NUMBER ALREADY 007661' 334300 014423' SKIPA V,[XWD [SIXBIT /@/],PAGENO] ;BETTER THAN NOTHING 007662' 254000 007664' JRST .+2 007663' 260740 010041' ERRNE3: PUSHJ PP,PRNUM 007664' 561440 014353' HRROI RC,[SIXBIT /@/] ;WILL GET A RETURN 007665' 254000 007714' JRST ERRFIN 007666' 004562 625762 ERRMS1: SIXBIT / ERRORS DETECTED@/ 007667' 630044 456445 007670' 436445 444000 007671' 372100 456262 ERRMS2: SIXBIT /?1 ERROR DETECTED@/ 007672' 576200 444564 007673' 454364 454440 007674' 565700 456262 ERRMS3: SIXBIT /NO ERRORS DETECTED@/ 007675' 576263 004445 007676' 644543 644544 MACRO V.10 PAGE 134-1 I/O ROUTINES 007677' 400000 000000 007700' 200440 014427' EINIT: MOVE RC,[XWD ACDEV,[SIXBIT /NOT AVAILABLE@/]] 007701' 254000 007714' JRST ERRFIN MACRO V.10 PAGE 135 I/O ROUTINES 007702' 550440 012664' ERRCL: HRRZ RC,LSTDIR+1 ;GET LST DEV ERROR CODE 007703' 254000 007705' JRST .+2 ;GET ERROR MESSAGE 007704' 550440 012670' ERRCB: HRRZ RC,BINDIR+1 ;GET BIN DEV ERROR CODE 007705' 326440 007711' JUMPN RC,ERRTYP 007706' 364440 007711' SOJA RC,ERRTYP ;SPECIAL CASE IF ERROR CODE 0 007707' 550440 012674' ERRCF: HRRZ RC,INDIR+1 ;GET INPUT DEV ERROR CODE 007710' 510140 012674' HLLZ ACEXT,INDIR+1 ;SET UP EXT 007711' 301440 000027 ERRTYP: CAIL RC,TABLND-TABLE ;IS ERROR CODE LEGAL? 007712' 334440 007756' SKIPA RC,TABLND ;NO, GIVE CATCH ALL MESSAGE 007713' 200451 007727' MOVE RC,TABLE(RC) ;YES, PICK UP MESSAGE 007714' 000000 000007 ERRFIN: SKPINC C ;SEE IN WE CAN INPUT A CHAR. 007715' 255000 000000 JFCL ;BUT ONLY TO DEFEAT ^O 007716' 260740 007765' PUSHJ PP,CRLF 007717' 201340 000077 MOVEI C,"?" 007720' 260740 007770' PUSHJ PP,TYO 007721' 260740 007760' PUSHJ PP,TYPMS1 007722' 070140 000000 CLOSE LST, ;GIVE USER A PARTIAL LISTING 007723' 070040 000040 CLOSE BIN,40 ;BUT NEVER A BUM REL FILE 007724' 350000 003150* IFN CCLSW, 007725' 254000 006436' JRST M 007726' 014430' 000002 [SIXBIT /(0) ILLEGAL FILE NAME@/],,ACFILE 007727' 014434' 000002 TABLE: [SIXBIT /(0) FILE WAS NOT FOUND@/],,ACFILE 007730' 014440' 000002 [SIXBIT /(1) NO DIRECTORY FOR PROJECT-PROGRAMMER NUMBER@/],,ACFILE 007731' 014450' 000002 [SIXBIT /(2) PROTECTION FAILURE@/],,ACFILE 007732' 014454' 000002 [SIXBIT /(3) FILE WAS BEING MODIFIED@/],,ACFILE 007733' 014461' 000002 [SIXBIT /(4) RENAME FILE NAME ALREADY EXISTS@/],,ACFILE 007734' 014467' 000002 [SIXBIT /(5) ILLEGAL SEQUENCE OF UUOS@/],,ACFILE 007735' 014474' 000002 [SIXBIT /(6) BAD UFD OR BAD RIB@/],,ACFILE 007736' 014500' 000002 [SIXBIT /(7) NOT A SAV FILE@/],,ACFILE 007737' 014504' 000002 [SIXBIT /(10) NOT ENOUGH CORE@/],,ACFILE 007740' 014510' 000002 [SIXBIT /(11) DEVICE NOT AVAILABLE@/],,ACFILE 007741' 014515' 000002 [SIXBIT /(12) NO SUCH DEVICE@/],,ACFILE 007742' 014521' 000002 [SIXBIT /(13) NOT TWO RELOC REG. CAPABILITY@/],,ACFILE 007743' 014527' 000002 [SIXBIT /(14) NO ROOM OR QUOTA EXCEEDED@/],,ACFILE 007744' 014535' 000002 [SIXBIT /(15) WRITE LOCK ERROR@/],,ACFILE 007745' 014541' 000002 [SIXBIT /(16) NOT ENOUGH MONITOR TABLE SPACE@/],,ACFILE 007746' 014547' 000002 [SIXBIT /(17) PARTIAL ALLOCATION ONLY@/],,ACFILE 007747' 014554' 000002 [SIXBIT /(20) BLOCK NOT FREE ON ALLOCATION@/],,ACFILE 007750' 014562' 000002 [SIXBIT /(21) CAN'T SUPERSEDE (ENTER) AN EXISTING DIRECTORY@/],,ACFILE 007751' 014573' 000002 [SIXBIT /(22) CAN'T DELETE (RENAME) A NON-EMPTY DIRECTORY@/],,ACFILE 007752' 014604' 000002 [SIXBIT /(23) SFD NOT FOUND@/],,ACFILE 007753' 014610' 000002 [SIXBIT /(24) SEARCH LIST EMPTY@/],,ACFILE 007754' 014614' 000002 [SIXBIT /(25) SFD NESTED TOO DEEPLY@/],,ACFILE 007755' 014621' 000002 [SIXBIT /(26) NO-CREATE ON FOR SPECIFIED PATH@/],,ACFILE 007756' 014630' 000002 TABLND: [SIXBIT /(?) LOOKUP, ENTER, OR RENAME ERROR@/],,ACFILE MACRO V.10 PAGE 136 I/O ROUTINES 007757' 260740 007765' TYPMSG: PUSHJ PP,CRLF ;MOVE TO NEXT LINE 007760' 554400 000011 TYPMS1: HLRZ CS,RC ;GET FIRST MESSAGE 007761' 302400 777777 CAIE CS,-1 ;SKIP IF MINUS ONE 007762' 260740 010000' PUSHJ PP,TYPM2 ;TYPE MESSAGE 007763' 550400 000011 HRRZ CS,RC ;GET SECOND HALF 007764' 260740 010000' PUSHJ PP,TYPM2 007765' 201340 000015 CRLF: MOVEI C,CR ;OUTPUT CARRIAGE RETURN 007766' 260740 007770' PUSHJ PP,TYO 007767' 201340 000012 MOVEI C,LF ;AND LINE FEED 007770' 377000 013432' TYO: SOSG CTOBUF+2 ;BUFFER FULL? 007771' 067000 000000 OUTPUT CTL,0 ;YES, DUMP IT 007772' 136340 013431' IDPB C,CTOBUF+1 ;STORE BYTE 007773' 307340 000014 CAIG C,FF ;FORM FEED? 007774' 305340 000012 CAIGE C,LF ;V TAB OR LINE FEED? 007775' 263740 000000 POPJ PP, ;NO 007776' 067000 000000 OUTPUT CTL,0 ;YES 007777' 263740 000000 POPJ PP, ;AND EXIT 010000' 205340 400000 TYPM2: MOVSI C,(1B0) ;ANTICIPATE REGISTER WORD 010001' 306400 000002 CAIN CS,ACFILE ;FILE NAME ? JRST [JUMPE ACEXT,.+1 ;YES, TEST FOR EXT LSH ACEXT,-6 ;MAKE SPACE FOR "." IOR ACEXT,[SIXBIT /. @/] 010002' 254000 014637' JRST TYPM2A] 010003' 307400 000017 CAIG CS,17 ;IS IT? 010004' 202350 000001 MOVEM C,1(CS) 010005' 505400 440600 TYPM2A: HRLI CS,(POINT 6,,) ;FORM BYTE POINTER 010006' 134340 000010 TYPM3: ILDB C,CS ;GET A SIXBIT BYTE 010007' 306340 000040 CAIN C,40 ;"@"? 010010' 254000 007770' JRST TYO ;YES, TYPE SPACE AND EXIT 010011' 271340 000040 ADDI C,40 ;NO, FORM 7-BIT ASCII 010012' 260740 007770' PUSHJ PP,TYO ;OUTPUT CHARACTER 010013' 254000 010006' JRST TYPM3 MACRO V.10 PAGE 137 I/O ROUTINES 010014' 271200 002000 XCEEDS: ADDI SX,2000 ;ADJUST SYMBOL POINTER 010015' 260740 007211' XCEED: PUSHJ PP,SAVEXS ;SAVE THE REGISTERS 010016' 550040 006767* HRRZ 1,JOBREL ;GET CURRENT TOP 010017' 201001 002000 MOVEI 0,2000(1) 010020' 047000 000011 CORE 0, ;REQUEST MORE CORE 010021' 254000 010035' JRST XCEED2 ;ERROR, BOMB OUT 010022' 550100 010016* HRRZ 2,JOBREL ;GET NEW TOP 010023' 200001 000000 XCEED1: MOVE 0,0(1) ;GET ORIGIONAL 010024' 202002 000000 MOVEM 0,0(2) ;STORE IN NEW LOCATION 010025' 275100 000001 SUBI 2,1 ;DECREMENT UPPER 010026' 313040 013102' CAMLE 1,SYMBOL ;HAVE WE ARRIVED? 010027' 364040 010023' SOJA 1,XCEED1 ;NO, GET ANOTHER 010030' 201040 002000 MOVEI 1,2000 010031' 272040 013102' ADDM 1,SYMBOL 010032' 272040 013103' ADDM 1,SYMTOP 010033' 260740 012455' PUSHJ PP,SRCHI ;RE-INITIALIZE SYMBOL TABLE 010034' 254000 007205' JRST RSTRXS ;RESTORE REGISTERS AND EXIT 010035' 561440 014643' XCEED2: HRROI RC,[SIXBIT /INSUFFICIENT CORE@/] 010036' 254000 007634' JRST ERRNE0 010037' 561440 014646' PDPERR: HRROI RC,[SIXBIT .PDP OVERFLOW, TRY /P@.] 010040' 254000 007634' JRST ERRNE0 010041' 554400 000006 PRNUM: HLRZ CS,V ;GET MESSAGE 010042' 260740 010000' PUSHJ PP,TYPM2 010043' 201400 014652' MOVEI CS,[SIXBIT /ON PAGE@/] 010044' 260740 010000' PUSHJ PP,TYPM2 010045' 200006 000000 MOVE AC0,(V) ;GET PAGE 010046' 260740 010063' PUSHJ PP,DP1 ;PRINT NUMBER 010047' 201340 000040 MOVEI C,40 010050' 260740 007770' PUSHJ PP,TYO 010051' 336046 000001 SKIPN AC1,1(V) ;GET SEQ NUM IF THERE 010052' 263740 000000 POPJ PP, ;NO, RETURN 010053' 202040 013337' MOVEM AC1,OUTSQ 010054' 201400 014654' MOVEI CS,[SIXBIT /LINE@/] 010055' 260740 010000' PUSHJ PP,TYPM2 010056' 201000 013337' MOVEI AC0,OUTSQ ;PRINT IT 010057' 067000 000000 OUTPUT CTL,0 ;TO MAKE THINGS PRINT IN RIGHT ORDER 010060' 047000 000003 DDTOUT AC0, 010061' 201340 000040 MOVEI C,40 010062' 254000 007770' JRST TYO ;AND RETURN 010063' 231000 000012 DP1: IDIVI AC0,^D10 010064' 506057 000000 HRLM AC1,(PP) 010065' 322000 010067' JUMPE AC0,.+2 010066' 260740 010063' PUSHJ PP,DP1 010067' 554357 000000 HLRZ C,(PP) 010070' 271340 000060 ADDI C,"0" 010071' 254000 007770' JRST TYO MACRO V.10 PAGE 138 I/O ROUTINES 010072' 670640 000000 RIM0: TDO FR,AC0 ;SET RIM/RIM10 FLAG 010073' 603640 001000 TLNE FR,PNCHSW ;FORGET IT IF PUNCH RESET 010074' 060040 000013 SETSTS BIN,IB ;SET TO IMAGE BINARY MODE 010075' 263740 000000 POPJ PP, 010076' 250400 013376' ROUT: EXCH CS,RIMLOC 010077' 274740 014655' SUB PP,[XWD 1,1] ;CLEAR OUT STACK WFW 010100' 603640 004000 TLNE FR,R1BSW 010101' 254000 010207' JRST ROUT6 010102' 607640 000100 TLNN FR,RIM1SW 010103' 254000 010113' JRST ROUT1 010104' 322400 010113' JUMPE CS,ROUT1 ;RIM10 OUTPUT 010105' 274400 013376' SUB CS,RIMLOC 010106' 322400 010113' JUMPE CS,ROUT1 010107' 327400 003311' JUMPG CS,ERRAX 010110' 201340 000000 MOVEI C,0 010111' 260740 010123' PUSHJ PP,PTPBIN 010112' 341400 010111' AOJL CS,.-1 010113' 205340 710440 ROUT1: MOVSI C,(DATAI PTR,) ;RIM OUTPUT 010114' 540340 013326' HRR C,LOCO ;GET ADDRESS 010115' 603640 000100 TLNE FR,RIM1SW ;NO DATAI IF RIM10 010116' 354000 013376' AOSA RIMLOC 010117' 260740 010123' PUSHJ PP,PTPBIN ;OUTPUT 010120' 200340 000000 MOVE C,AC0 ;CODE 010121' 354000 013326' AOSA LOCO ;INCREMENT CURRENT LOCATION 010122' 607640 004500 OUTBIN: TLNN FR,RIMSW!RIM1SW!R1BSW ;EXIT IF RIM MODE 010123' 607640 001000 PTPBIN: TLNN FR,PNCHSW ;EXIT IF PUNCH NOT REQUESTED 010124' 263740 000000 POPJ PP, 010125' 377000 012657' SOSG BINBUF+2 ;TEST FOR BUFFER FULL 010126' 260740 010131' PUSHJ PP,DMPBIN ;YES, DUMP IT 010127' 136340 012656' IDPB C,BINBUF+1 ;DEPOSIT BYTE 010130' 263740 000000 POPJ PP, ;EXIT MACRO V.10 PAGE 139 I/O ROUTINES 010131' 057040 000000 DMPBIN: OUT BIN,0 ;DUMP THE BUFFER 010132' 263740 000000 POPJ PP, ;NO ERRORS 010133' 062040 000007 TSTBIN: GETSTS BIN,C ;GET STSTUS BITS 010134' 606340 740000 TRNN C,ERRBIT ;ERROR? 010135' 263740 000000 POPJ PP, ;NO, EXIT 010136' 200000 012550' MOVE AC0,BINDEV ;YES, GET TAG 010137' 254000 010146' JRST ERRLST ;TYPE MESSAGE AND ABORT 010140' 057140 000000 DMPLST: OUT LST,0 ;OUTPUT BUFFER 010141' 263740 000000 POPJ PP, ;NO ERRORS 010142' 062140 000007 TSTLST: GETSTS LST,C ;ANY ERRORS? 010143' 606340 740000 TRNN C,ERRBIT 010144' 263740 000000 POPJ PP, ;NO, EXIT 010145' 200000 012553' MOVE AC0,LSTDEV 010146' 205440 014656' ERRLST: MOVSI RC,[SIXBIT /OUTPUT WRITE-LOCK ERROR DEVICE@/] 010147' 602340 400000 TRNE C,IOIMPM ;IMPROPER MODE? 010150' 254000 007714' JRST ERRFIN ;YES 010151' 205440 014664' MOVSI RC,[SIXBIT /OUTPUT DATA ERROR DEVICE@/] 010152' 602340 200000 TRNE C,IODERR ;DEVICE DATA ERROR? 010153' 254000 007714' JRST ERRFIN ;YES 010154' 205440 014671' MOVSI RC,[SIXBIT /OUTPUT CHECKSUM OR PARITY ERROR DEVICE@/] 010155' 602340 100000 TRNE C,IODTER ;IS IT 010156' 254000 007714' JRST ERRFIN ;YES 010157' 200400 000000 MOVE CS,AC0 ;GET DEVICE 010160' 047400 000004 DEVCHR CS, ;FIND OUT WHAT IT IS 010161' 205440 014700' MOVSI RC,[SIXBIT /OUTPUT QUOTA EXCEEDED ON DEVICE@/] 010162' 607400 200000 TLNN CS,DSKBIT ;SKIP IF DSK OUTPUT 010163' 205440 014706' MOVSI RC,[SIXBIT /OUTPUT BLOCK TOO LARGE DEVICE@/] 010164' 254000 007714' JRST ERRFIN MACRO V.10 PAGE 140 I/O ROUTINES 010165' 460400 013351' R1BDMP: SETCM CS,R1BCNT 010166' 322400 010203' JUMPE CS,R1BI 010167' 517340 000010 HRLZS C,CS 010170' 540340 013375' HRR C,R1BLOC 010171' 541347 777777 HRRI C,-1(C) 010172' 202340 013352' MOVEM C,R1BCHK 010173' 260740 010123' PUSHJ PP,PTPBIN 010174' 541400 013353' HRRI CS,R1BBLK 010175' 200350 000000 R1BDM1: MOVE C,0(CS) 010176' 272340 013352' ADDM C,R1BCHK 010177' 260740 010123' PUSHJ PP,PTPBIN 010200' 253400 010175' AOBJN CS,R1BDM1 010201' 200340 013352' MOVE C,R1BCHK 010202' 260740 010123' PUSHJ PP,PTPBIN 010203' 476000 013351' R1BI: SETOM R1BCNT 010204' 261740 013326' PUSH PP,LOCO 010205' 262740 013375' POP PP,R1BLOC 010206' 263740 000000 POPJ PP, 010207' 312400 013376' ROUT6: CAME CS,RIMLOC 010210' 260740 010165' PUSHJ PP,R1BDMP 010211' 350340 013351' AOS C,R1BCNT 010212' 202007 013353' MOVEM AC0,R1BBLK(C) 010213' 350000 013326' AOS LOCO 010214' 306340 000021 CAIN C,.R1B-1 010215' 260740 010165' PUSHJ PP,R1BDMP 010216' 350000 013376' AOS RIMLOC 010217' 263740 000000 POPJ PP, MACRO V.10 PAGE 141 I/O ROUTINES 010220' 260740 007176' READ0: PUSHJ PP,EOT ;END OF TAPE 010221' 375000 012662' READ: SOSGE IBUF+2 ;BUFFER EMPTY? 010222' 254000 010263' JRST READ3 ;YES 010223' 134340 012661' READ1: ILDB C,IBUF+1 ;PLACE CHARACTER IN C 010224' 200420 012661' MOVE CS,@IBUF+1 ;CHECK FOR SEQUENCE NUMBER 010225' 606400 000001 TRNN CS,1 010226' 254000 010243' JRST READ1A 010227' 306400 000001 CAIN CS,1 ;CHECK FOR SPECIAL 010230' 200400 014713' MOVE CS,[+1] 010231' 202400 012544' MOVEM CS,SEQNO 010232' 202400 013415' MOVEM CS,SEQNO2 010233' 211400 000004 MOVNI CS,4 010234' 272400 012662' ADDM CS,IBUF+2 ;ADJUST WORD COUNT REPEAT 4,< IBP IBUF+1> ;SKIP SEQ NO 010235' 133000 012661' 010236' 133000 012661' 010237' 133000 012661' 010240' 133000 012661' 010241' 260740 010221' PUSHJ PP,READ ;AND THE TAB 010242' 254000 010221' JRST READ ;GET NEXT CHARACTER 010243' 322340 010221' READ1A: JUMPE C,READ ;IGNORE NULL 010244' 306340 000032 CAIN C,32 ;IF IT'S A "^Z" 010245' 201340 000012 MOVEI C,LF ;TREAT IT AS A "LF" 010246' 302340 000037 CAIE C,37 ;CONTROL _ 010247' 263740 000000 POPJ PP, 010250' 201340 000136 MOVEI C,"^" ;MAKE CONTROL-SHIFT _ VISIBLE 010251' 260740 001414' PUSHJ PP,RSW2 010252' 201340 000137 MOVEI C,"_" 010253' 260740 001414' PUSHJ PP,RSW2 010254' 260740 010221' READ2: PUSHJ PP,READ ;YES, TEST FOR LINE FEED 010255' 260740 001414' PUSHJ PP,RSW2 ;LIST IN ANY EVENT 010256' 307340 000014 CAIG C,FF ;IS IT ONE OF 010257' 305340 000012 CAIGE C,LF ;LF, VT, OR FF? 010260' 254000 010254' JRST READ2 ;NO 010261' 260740 001736' PUSHJ PP,OUTIM1 ;YES, DUMP THE LINE 010262' 254000 010221' JRST READ ;RETURN NEXT CHARACTER 010263' 056100 000000 READ3: IN CHAR,0 ;GET NEXT BUFFER 010264' 254000 010221' JRST READ ;NO ERRORS 010265' 062100 000007 GETSTS CHAR,C 010266' 606340 742000 TRNN C,ERRBIT!2000 ;ERRORS? 010267' 254000 010220' JRST READ0 ;EOF 010270' 200000 012564' MOVE AC0,INDEV 010271' 205440 014714' MOVSI RC,[SIXBIT/ INPUT PHYSICAL END OF TAPE DEVICE@/] 010272' 602340 002000 TRNE C,2000 010273' 254000 007714' JRST ERRFIN ;E-O-T 010274' 205440 014722' MOVSI RC,[SIXBIT /MONITOR DETECTED SOFTWARE INPUT ERROR DEVICE@/] 010275' 602340 400000 TRNE C,IOIMPM ;IMPROPER MODE? 010276' 254000 007714' JRST ERRFIN ;YES 010277' 205440 014732' MOVSI RC,[SIXBIT /INPUT DATA ERROR DEVICE@/] 010300' 602340 200000 TRNE C,IODERR ;DEVICE DATA ERROR? MACRO V.10 PAGE 141-1 I/O ROUTINES 010301' 254000 007714' JRST ERRFIN ;YES 010302' 205440 014736' MOVSI RC,[SIXBIT /INPUT CHECKSUM OR PARITY ERROR DEVICE@/] 010303' 606340 100000 TRNN C,IODTER 010304' 205440 014745' MOVSI RC,[SIXBIT /INPUT BLOCK TOO LARGE DEVICE@/] 010305' 254000 007714' JRST ERRFIN MACRO V.10 PAGE 142 I/O ROUTINES 010306' 260740 010307' OUTAB2: PUSHJ PP,OUTTAB ;PRINT TWO TABS 010307' 201340 000011 OUTTAB: MOVEI C,HT 010310' 302340 000015 PRINT: CAIE C,CR ;IS THIS A CR? 010311' 306340 000012 CAIN C,LF ;OR LF? 010312' 254000 010316' JRST OUTCR ;YES, GO PROCESS 010313' 306340 000014 CAIN C,FF ;FORM FEED? 010314' 254000 010417' JRST OUTFF ;YES, FORCE NEW PAGE 010315' 254000 010325' JRST OUTL 010316' 606600 777763 OUTCR: TRNN ER,ERRORS!LPTSW!TTYSW 010317' 263740 000000 POPJ PP, 010320' 201340 000015 MOVEI C,CR ;CARRIAGE RETURN, LINE FEED 010321' 260740 010325' PUSHJ PP,OUTL 010322' 375000 013331' SOSGE LPP ;END OF PAGE? 010323' 661600 000100 TLO IO,IOPAGE ;YES, SET FLAG 010324' 644340 000007 TRCA C,7 ;FORM LINE FEED AND SKIP 010325' 627600 000100 OUTL: TLZN IO,IOPAGE ;NEW PAGE REQUESTED? 010326' 254000 010377' JRST OUTC ;NO 010327' 321640 010377' JUMP1 OUTC ;YES, BYPASS IF PASS ONE 010330' 261740 000007 PUSH PP,C ;SAVE C AND CS 010331' 261740 000010 PUSH PP,CS 010332' 261740 000014 PUSH PP,ER 010333' 607600 240000 TLNN IO,IOMSTR!IOPROG 010334' 540600 013042' HRR ER,OUTSW 010335' 603600 000400 TLNE IO,IOCREF ;IF DOING CREF OUTPUT NOW 010336' 603640 002000 TLNE FR,CREFSW ;AND CREFFING (JUST IN CASE) 010337' 254000 010341' JRST .+2 010340' 260740 012274' PUSHJ PP,CLSC3 ;CLOSE IT OUT 010341' 502617 000000 HLLM IO,(PP) ;SAVE THIS NEW STATE OF IO 010342' 201340 000067 MOVEI C,.LPP 010343' 202340 013331' MOVEM C,LPP ;SET NEW COUNTER 010344' 201340 000015 MOVEI C,CR 010345' 260740 010377' PUSHJ PP,OUTC 010346' 201340 000014 MOVEI C,FF 010347' 260740 010377' PUSHJ PP,OUTC ;OUTPUT FORM FEED 010350' 201400 013230' MOVEI CS,TBUF 010351' 260740 002774' PUSHJ PP,OUTAS0 ;OUTPUT TITLE ; MOVEI CS,VBUF ; PUSHJ PP,OUTAS0 ;OUTPUT VERSION 010352' 201400 012566' MOVEI CS,DBUF 010353' 260740 002774' PUSHJ PP,OUTAS0 ; AND DATE 010354' 200340 013414' MOVE C,PAGENO 010355' 260740 002765' PUSHJ PP,DNC ;OUTPUT PAGE NUMBER 010356' 357000 013341' AOSG PAGEN. ;FIRST PAGE OF THIS NUMBER? 010357' 254000 010364' JRST OUTL1 ;YES 010360' 201340 000055 MOVEI C,"-" ;NO, PUT OUT MODIFIER 010361' 260740 010377' PUSHJ PP,OUTC 010362' 200340 013341' MOVE C,PAGEN. 010363' 260740 002765' PUSHJ PP,DNC 010364' 260740 010316' OUTL1: PUSHJ PP,OUTCR 010365' 201400 013250' MOVEI CS,DEVBUF 010366' 260740 002774' PUSHJ PP,OUTAS0 MACRO V.10 PAGE 142-1 I/O ROUTINES 010367' 550400 013100' HRRZ CS,SUBTTX ;SWITCH FOR SUB-TITLE 010370' 332010 000000 SKIPE 0(CS) ;IS THERE A SUB-TITLE? 010371' 260740 010307' PUSHJ PP,OUTTAB ;YES, OUTPUT A TAB 010372' 260740 002420' PUSHJ PP,SOUT20 ;OUTPUT ASCII WITH CARRIAGE RETURN 010373' 260740 010316' PUSHJ PP,OUTCR 010374' 262740 000014 POP PP,ER 010375' 262740 000010 POP PP,CS ;RESTORE REGISTERS 010376' 262740 000007 POP PP,C 010377' 602600 777761 OUTC: TRNE ER,ERRORS!TTYSW 010400' 260740 007770' PUSHJ PP,TYO 010401' 606600 000002 TRNN ER,LPTSW 010402' 263740 000000 POPJ PP, 010403' 377000 012654' OUTLST: SOSG LSTBUF+2 ;BUFFER FULL? 010404' 260740 010140' PUSHJ PP,DMPLST ;YES, DUMP IT COMMENT $ REG DOESN'T LIKE THIS FEATURE ANY MORE 9-5-72 $ 010405' 136340 012653' IDPB C,LSTBUF+1 ;STORE BYTE 010406' 263740 000000 POPJ PP, ;EXIT MACRO V.10 PAGE 143 I/O ROUTINES 010407' 260740 000227' PAGE0: PUSHJ PP,STOUTS ;PAGE PSEUDO-OP 010410' 603600 000400 OUTFF1: TLNE IO,IOCREF ;CURRENTLY DOING CREF? 010411' 603600 040000 TLNE IO,IOPROG ;AND NOT XLISTED? 010412' 254000 010417' JRST OUTFF ;NO 010413' 540600 013042' HRR ER,OUTSW 010414' 260740 012274' PUSHJ PP,CLSCRF 010415' 260740 010316' PUSHJ PP,OUTCR 010416' 541600 000000 HRRI ER,0 010417' 661600 000100 OUTFF: TLO IO,IOPAGE 010420' 476000 013341' OUTFF2: SETOM PAGEN. 010421' 350000 013414' AOS PAGENO 010422' 263740 000000 POPJ PP, 010423' 231100 165140 TIMOUT: IDIVI 2,^D60*^D1000 010424' 231100 000074 TIMOU1: IDIVI 2,^D60 010425' 261740 000003 PUSH PP,3 ;SAVE MINUTES 010426' 260740 010432' PUSHJ PP,OTOD ;STORE HOURS 010427' 201140 000072 MOVEI 3,":" ;SEPARATE BY COLON 010430' 136140 000010 IDPB 3,CS 010431' 262740 000002 POP PP,2 ;STORE MINUTES 010432' 231100 000012 OTOD: IDIVI 2,^D10 010433' 271100 000060 ADDI 2,60 ;FORM ASCII 010434' 136100 000010 IDPB 2,CS 010435' 271140 000060 ADDI 3,60 010436' 136140 000010 IDPB 3,CS 010437' 263740 000000 POPJ PP, 010440' 231040 000037 DATOUT: IDIVI 1,^D31 ;GET DAY 010441' 271100 000001 ADDI 2,1 010442' 307100 000011 CAIG 2,^D9 ;TWO DIGITS? 010443' 271100 117540 ADDI 2,7760*^D10 ;NO, PUT IN SPACE 010444' 260740 010432' PUSHJ PP,OTOD ;STORE DAY 010445' 231040 000014 IDIVI 1,^D12 ;GET MONTH 010446' 200102 010454' MOVE 2,DTAB(2) ;GET MNEMONIC 010447' 136100 000010 IDPB 2,CS ;DEPOSIT RIGHT MOST 7 BITS 010450' 242100 777771 LSH 2,-7 ;SHIFT NEXT IN 010451' 326100 010447' JUMPN 2,.-2 ;DEPOSIT IFIT EXISTS 010452' 201101 000100 MOVEI 2,^D64(1) ;GET YEAR 010453' 254000 010432' JRST OTOD ;STORE IT 010454' 133164 062455 DTAB: "-NAJ-" 010455' 133024 261455 "-BEF-" 010456' 133224 063255 "-RAM-" 010457' 133225 020255 "-RPA-" 010460' 133314 063255 "-YAM-" 010461' 133165 262455 "-NUJ-" 010462' 133145 262455 "-LUJ-" 010463' 133075 260255 "-GUA-" 010464' 133204 264655 "-PES-" 010465' 133244 163655 "-TCO-" 010466' 133264 763455 "-VON-" 010467' 133034 261055 "-CED-" MACRO V.10 PAGE 144 MACHINE INSTRUCTION SEARCH ROUTINES SUBTTL MACHINE INSTRUCTION SEARCH ROUTINES IFE OPHSH,< 010470' 201440 000000 OPTSCH: MOVEI RC,0 010471' 201240 000400 MOVEI ARG,1B^L ;SET UP INDEX 010472' 201300 000200 MOVEI V,1B^L/2 ;SET UP INCREMENT 010473' 316005 010526' OPT1A: CAMN AC0,OP1TOP(ARG) ;ARE WE POINTING AT SYMBOL? 010474' 254000 010505' JRST OPT1D ;YES, GET THE CODE 010475' 322300 000446' JUMPE V,POPOUT ;TEST FOR END 010476' 311005 010526' CAML AC0,OP1TOP(ARG) ;NO, SHOULD WE MOVE DOWN? 010477' 674240 000006 TDOA ARG,V ;NO, INCREMENT 010500' 274240 000006 OPT1B: SUB ARG,V ;YES, DECREMENT 010501' 240300 777777 ASH V,-1 ;HALVE INCREMENT 010502' 307240 000766 CAIG ARG,OP1END-OP1TOP ;ARE WE OUT OF BOUNDS? 010503' 254000 010473' JRST OPT1A ;NO, TRY AGAIN 010504' 254000 010500' 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 > 010505' OPT1D: IFN OPHSH,< SETZ RC, ;CLEAR RELOCATION MOVE ARG,V ;GET INDEX IN RIGHT ACC.> 010505' 231240 000004 IDIVI ARG,4 ;ARG HAS INDEX USED IN OPTTAB 010506' 135306 010523' LDB V,OPTTAB(V) ;V HAS INDEX TO OPTTAB 010507' 301300 000700 CAIL V,700 ;PSEUDO-OP OR IO INSTRUCTION? 010510' 254000 010516' JRST OPT1G ;YES 010511' 241300 777767 ROT V,-^D9 ;LEFT JUSTIFY 010512' 541300 004354' HRRI V,OP ;POINT TO BASIC FORMAT 010513' 350017 000000 OPT1F: AOS 0(PP) ;SET FOR SKIP EXIT 010514' 201140 000003 MOVEI SDEL,%OP ;SET OP-CODE CROSS-REF FLAG 010515' 254000 012221' JRST CREF ;TEST AND OUTPUT, AC0=SYMBOL, V=VALUE 010516' 327000 010521' OPT1G: JUMPG AC0,.+3 ;IF ".","$",OR "%" USE TABLE 1 MACRO V.10 PAGE 144-1 MACHINE INSTRUCTION SEARCH ROUTINES 010517' 607000 200000 TLNN AC0,200000 ;PSEUDO-OP OR IO INST., TEST FOR PROPER TABLE 010520' 334306 011164' SKIPA V,OP2TAB-700(V) ;2ND TABLE, FIRST LETTER IS "A" TO "O" 010521' 200306 011120' MOVE V,OP1TAB-700(V) ;1ST TABLE, ..."P" TO "Z" 010522' 254000 010513' JRST OPT1F ;EXIT 010523' OPTTAB: 010523' 001105 011514' IFE OPHSH,< POINT 9,OP1COD-1(ARG),35> 010524' 331105 011515' POINT 9,OP1COD (ARG), 8 010525' 221105 011515' POINT 9,OP1COD (ARG),17 010526' 111105 011515' POINT 9,OP1COD (ARG),26 IFN OPHSH,< POINT 9,OP1COD (ARG),35> MACRO V.10 PAGE 145 MACHINE INSTRUCTION SEARCH ROUTINES IFDEF .XCREF,< .XCREF ;DON'T CREF THIS MESS> IFE OPHSH,< 010526' RELOC .-1 010526' OP1TOP: 010527' RELOC IF1,> IF2, < 000044 N2=^D36 000000 CC=0 011515' RELOC OP1COD 010527' RELOC DEFINE X (SYMBOL,CODE) IFE N2, > DEFINE OUTLIT < RELOC +CC RELOC N2=^D36+>> SYN X,XX ;JUST THE SAME MACRO> MACRO V.10 PAGE 146 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.10 PAGE 147 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.10 PAGE 148 MACHINE INSTRUCTION SEARCH ROUTINES 010527' 414444 000000 X ADD , 270 010530' 414444 420000 X ADDB , 273 010531' 414444 510000 X ADDI , 271 010532' 414444 550000 X ADDM , 272 011515' 270273 271272 010533' 415644 000000 X AND , 404 010534' 415644 420000 X ANDB , 407 010535' 415644 434100 X ANDCA , 410 010536' 415644 434142 X ANDCAB, 413 011516' 404407 410413 010537' 415644 434151 X ANDCAI, 411 010540' 415644 434155 X ANDCAM, 412 010541' 415644 434200 X ANDCB , 440 010542' 415644 434242 X ANDCBB, 443 011517' 411412 440443 010543' 415644 434251 X ANDCBI, 441 010544' 415644 434255 X ANDCBM, 442 010545' 415644 435500 X ANDCM , 420 010546' 415644 435542 X ANDCMB, 423 011520' 441442 420423 010547' 415644 435551 X ANDCMI, 421 010550' 415644 435555 X ANDCMM, 422 010551' 415644 510000 X ANDI , 405 010552' 415644 550000 X ANDM , 406 011521' 421422 405406 010553' 415742 525600 X AOBJN , 253 010554' 415742 526000 X AOBJP , 252 010555' 415752 000000 X AOJ , 340 010556' 415752 410000 X AOJA , 344 011522' 253252 340344 010557' 415752 450000 X AOJE , 342 010560' 415752 470000 X AOJG , 347 010561' 415752 474500 X AOJGE , 345 010562' 415752 540000 X AOJL , 341 011523' 342347 345341 010563' 415752 544500 X AOJLE , 343 010564' 415752 560000 X AOJN , 346 010565' 415763 000000 XX AOS , 350 010566' 415763 410000 X AOSA , 354 011524' 343346 350354 010567' 415763 450000 X AOSE , 352 010570' 415763 470000 X AOSG , 357 010571' 415763 474500 X AOSGE , 355 010572' 415763 540000 X AOSL , 351 011525' 352357 355351 010573' 415763 544500 X AOSLE , 353 010574' 415763 560000 X AOSN , 356 010575' 416247 000000 X ARG , 320 IFN IIISW, MACRO V.10 PAGE 148-1 MACHINE INSTRUCTION SEARCH ROUTINES 010576' 416343 515100 X ASCII , 700 011526' 353356 320700 010577' 416343 517200 XX ASCIZ , 701 010600' 416350 000000 X ASH , 240 010601' 416350 430000 X ASHC , 244 010602' 416365 606062 X ASUPPR, 705 011527' 701240 244705 010603' 425453 510000 X BLKI , 702 010604' 425453 570000 X BLKO , 703 010605' 425457 435300 X BLOCK , 704 010606' 425464 000000 X BLT , 251 011530' 702703 704251 010607' 427164 450000 X BYTE , 707 010610' 434151 000000 XX CAI , 300 010611' 434151 410000 X CAIA , 304 010612' 434151 450000 X CAIE , 302 011531' 707300 304302 010613' 434151 470000 X CAIG , 307 010614' 434151 474500 X CAIGE , 305 010615' 434151 540000 X CAIL , 301 010616' 434151 544500 X CAILE , 303 011532' 307305 301303 010617' 434151 560000 X CAIN , 306 010620' 434154 540000 X CALL , 040 010621' 434154 545100 XX CALLI , 047 010622' 434155 000000 XX CAM , 310 011533' 306040 047310 010623' 434155 410000 X CAMA , 314 010624' 434155 450000 X CAME , 312 010625' 434155 470000 X CAMG , 317 010626' 434155 474500 X CAMGE , 315 011534' 314312 317315 010627' 434155 540000 X CAML , 311 010630' 434155 544500 X CAMLE , 313 010631' 434155 560000 X CAMN , 316 010632' 435445 416200 XX CLEAR , 400 011535' 311313 316400 010633' 435445 416242 XX CLEARB, 403 010634' 435445 416251 XX CLEARI, 401 010635' 435445 416255 XX CLEARM, 402 010636' 435457 634500 X CLOSE , 070 011536' 403401 402070 010637' 435755 554556 X COMMEN, 770 MACRO V.10 PAGE 148-2 MACHINE INSTRUCTION SEARCH ROUTINES 010640' 435756 510000 X CONI , 710 010641' 435756 570000 X CONO , 711 010642' 435756 635700 X CONSO , 712 011537' 770710 711712 010643' 435756 637200 X CONSZ , 713 010644' 444164 411600 XX DATA. , 020 010645' 444164 415100 X DATAI , 714 010646' 444164 415700 X DATAO , 715 011540' 713020 714715 010647' 444543 000000 X DEC , 716 010650' 444546 515645 X DEFINE, 717 010651' 444560 504163 X DEPHAS, 720 010652' 444656 000000 X DFN , 131 011541' 716717 720131 010653' 445166 000000 X DIV , 234 010654' 445166 420000 X DIVB , 237 010655' 445166 510000 X DIVI , 235 010656' 445166 550000 X DIVM , 236 011542' 234237 235236 010657' 446042 000000 X DPB , 137 010660' 446042 510000 X DPBI , 136 010661' 455644 000000 X END , 721 010662' 455664 456200 X ENTER , 077 011543' 137136 721077 010663' 455664 627100 X ENTRY , 722 010664' 456166 000000 X EQV , 444 010665' 456166 420000 X EQVB , 447 010666' 456166 510000 X EQVI , 445 011544' 722444 447445 010667' 456166 550000 X EQVM , 446 010670' 457043 500000 X EXCH , 250 010671' 457060 000000 X EXP , 723 010672' 457064 456256 XX EXTERN, 724 011545' 446250 723724 010673' 464144 000000 X FAD , 140 010674' 464144 420000 X FADB , 143 010675' 464144 540000 X FADL , 141 010676' 464144 550000 X FADM , 142 011546' 140143 141142 MACRO V.10 PAGE 148-3 MACHINE INSTRUCTION SEARCH ROUTINES 010677' 464144 620000 X FADR , 144 010700' 464144 624200 X FADRB , 147 010701' 464144 625100 X FADRI , 145 010702' 464144 625500 X FADRM , 146 011547' 144147 145146 010703' 464466 000000 X FDV , 170 010704' 464466 420000 X FDVB , 173 010705' 464466 540000 X FDVL , 171 010706' 464466 550000 X FDVM , 172 011550' 170173 171172 010707' 464466 620000 X FDVR , 174 010710' 464466 624200 X FDVRB , 177 010711' 464466 625100 X FDVRI , 175 010712' 464466 625500 X FDVRM , 176 011551' 174177 175176 010713' 465156 160000 XX FIN. , 021 010714' 465560 000000 X FMP , 160 010715' 465560 420000 X FMPB , 163 010716' 465560 540000 X FMPL , 161 011552' 021160 163161 010717' 465560 550000 X FMPM , 162 MACRO V.10 PAGE 149 MACHINE INSTRUCTION SEARCH ROUTINES 010720' 465560 620000 X FMPR , 164 010721' 465560 624200 X FMPRB , 167 010722' 465560 625100 X FMPRI , 165 011553' 162164 167165 010723' 465560 625500 X FMPRM , 166 010724' 466342 000000 X FSB , 150 010725' 466342 420000 X FSBB , 153 010726' 466342 540000 X FSBL , 151 011554' 166150 153151 010727' 466342 550000 X FSBM , 152 010730' 466342 620000 X FSBR , 154 010731' 466342 624200 X FSBRB , 157 010732' 466342 625100 X FSBRI , 155 011555' 152154 157155 010733' 466342 625500 X FSBRM , 156 010734' 466343 000000 X FSC , 132 010735' 474564 636463 X GETSTS, 062 MACRO V.10 PAGE 150 MACHINE INSTRUCTION SEARCH ROUTINES 010736' 504154 640000 X HALT , 725 011556' 156132 062725 010737' 505163 454700 X HISEG , 706 010740' 505454 000000 X HLL , 500 010741' 505454 450000 X HLLE , 530 010742' 505454 455100 X HLLEI , 531 011557' 706500 530531 010743' 505454 455500 X HLLEM , 532 010744' 505454 456300 X HLLES , 533 010745' 505454 510000 X HLLI , 501 010746' 505454 550000 X HLLM , 502 011560' 532533 501502 010747' 505454 570000 X HLLO , 520 010750' 505454 575100 X HLLOI , 521 010751' 505454 575500 X HLLOM , 522 010752' 505454 576300 X HLLOS , 523 011561' 520521 522523 010753' 505454 630000 X HLLS , 503 010754' 505454 720000 X HLLZ , 510 010755' 505454 725100 X HLLZI , 511 010756' 505454 725500 X HLLZM , 512 011562' 503510 511512 010757' 505454 726300 X HLLZS , 513 010760' 505462 000000 X HLR , 544 010761' 505462 450000 X HLRE , 574 010762' 505462 455100 X HLREI , 575 011563' 513544 574575 010763' 505462 455500 X HLREM , 576 010764' 505462 456300 X HLRES , 577 010765' 505462 510000 X HLRI , 545 010766' 505462 550000 X HLRM , 546 011564' 576577 545546 010767' 505462 570000 X HLRO , 564 010770' 505462 575100 X HLROI , 565 010771' 505462 575500 X HLROM , 566 010772' 505462 576300 X HLROS , 567 011565' 564565 566567 010773' 505462 630000 X HLRS , 547 010774' 505462 720000 X HLRZ , 554 010775' 505462 725100 X HLRZI , 555 010776' 505462 725500 X HLRZM , 556 011566' 547554 555556 010777' 505462 726300 X HLRZS , 557 MACRO V.10 PAGE 151 MACHINE INSTRUCTION SEARCH ROUTINES 011000' 506254 000000 X HRL , 504 011001' 506254 450000 X HRLE , 534 011002' 506254 455100 X HRLEI , 535 011567' 557504 534535 011003' 506254 455500 X HRLEM , 536 011004' 506254 456300 X HRLES , 537 011005' 506254 510000 X HRLI , 505 011006' 506254 550000 X HRLM , 506 011570' 536537 505506 011007' 506254 570000 X HRLO , 524 011010' 506254 575100 X HRLOI , 525 011011' 506254 575500 X HRLOM , 526 011012' 506254 576300 X HRLOS , 527 011571' 524525 526527 011013' 506254 630000 X HRLS , 507 011014' 506254 720000 X HRLZ , 514 011015' 506254 725100 X HRLZI , 515 011016' 506254 725500 X HRLZM , 516 011572' 507514 515516 011017' 506254 726300 X HRLZS , 517 011020' 506262 000000 X HRR , 540 011021' 506262 450000 X HRRE , 570 011022' 506262 455100 X HRREI , 571 011573' 517540 570571 011023' 506262 455500 X HRREM , 572 011024' 506262 456300 X HRRES , 573 011025' 506262 510000 X HRRI , 541 011026' 506262 550000 X HRRM , 542 011574' 572573 541542 011027' 506262 570000 X HRRO , 560 011030' 506262 575100 X HRROI , 561 011031' 506262 575500 X HRROM , 562 011032' 506262 576300 X HRROS , 563 011575' 560561 562563 011033' 506262 630000 X HRRS , 543 011034' 506262 720000 X HRRZ , 550 011035' 506262 725100 X HRRZI , 551 011036' 506262 725500 X HRRZM , 552 011576' 543550 551552 011037' 506262 726300 X HRRZS , 553 011040' 514260 000000 X IBP , 133 011041' 514451 660000 X IDIV , 230 011042' 514451 664200 X IDIVB , 233 011577' 553133 230233 011043' 514451 665100 X IDIVI , 231 011044' 514451 665500 X IDIVM , 232 011045' 514460 420000 X IDPB , 136 011046' 514621 000000 X IF1 , 726 MACRO V.10 PAGE 151-1 MACHINE INSTRUCTION SEARCH ROUTINES 011600' 231232 136726 011047' 514622 000000 X IF2 , 727 011050' 514642 000000 X IFB , 730 011051' 514644 454600 X IFDEF , 731 011052' 514644 514600 X IFDIF , 732 011601' 727730 731732 011053' 514645 000000 X IFE , 733 011054' 514647 000000 X IFG , 734 011055' 514647 450000 X IFGE , 735 011056' 514651 445600 X IFIDN , 736 011602' 733734 735736 011057' 514654 000000 X IFL , 737 011060' 514654 450000 X IFLE , 740 011061' 514656 000000 X IFN , 741 011062' 514656 420000 X IFNB , 742 011603' 737740 741742 011063' 514656 444546 X IFNDEF, 743 011064' 515444 420000 X ILDB , 134 011065' 515565 540000 X IMUL , 220 011066' 515565 544200 X IMULB , 223 011604' 743134 220223 011067' 515565 545100 X IMULI , 221 011070' 515565 545500 X IMULM , 222 011071' 515600 000000 X IN , 056 011072' 515616 000000 XX IN. , 016 011605' 221222 056016 011073' 515642 654600 X INBUF , 064 011074' 515646 160000 XX INF. , 026 011075' 515651 640000 X INIT , 041 011076' 515660 656400 X INPUT , 066 011606' 064026 041066 011077' 515664 456256 XX INTERN, 744 011100' 515762 000000 X IOR , 434 011101' 515762 420000 X IORB , 437 011102' 515762 510000 X IORI , 435 011607' 744434 437435 011103' 515762 550000 X IORM , 436 011104' 515767 440000 X IOWD , 745 011105' 516260 000000 X IRP , 746 011106' 516260 430000 X IRPC , 747 011610' 436745 746747 011107' 524362 710000 X JCRY , 750 011110' 524362 712000 X JCRY0 , 751 011111' 524362 712100 X JCRY1 , 752 011112' 524556 000000 X JEN , 753 011611' 750751 752753 MACRO V.10 PAGE 151-2 MACHINE INSTRUCTION SEARCH ROUTINES 011113' 524643 540000 XX JFCL , 255 011114' 524646 570000 X JFFO , 243 011115' 524657 660000 X JFOV , 765 011116' 525766 000000 X JOV , 754 011612' 255243 765754 011117' 526241 000000 X JRA , 267 011120' 526263 640000 XX JRST , 254 011121' 526263 644600 X JRSTF , 755 011122' 526341 000000 X JSA , 266 011613' 267254 755266 011123' 526360 000000 XX JSP , 265 011124' 526362 000000 X JSR , 264 011125' 526555 600000 XX JUMP , 320 011126' 526555 604100 XX JUMPA , 324 011614' 265264 320324 011127' 526555 604500 X JUMPE , 322 011130' 526555 604700 X JUMPG , 327 011131' 526555 604745 X JUMPGE, 325 011132' 526555 605400 X JUMPL , 321 011615' 322327 325321 011133' 526555 605445 X JUMPLE, 323 011134' 526555 605600 X JUMPN , 326 011135' 544154 540000 X LALL , 756 011136' 544442 000000 X LDB , 135 011616' 323326 756135 011137' 544442 510000 X LDBI , 134 011140' 545163 640000 X LIST , 757 011141' 545164 000000 X LIT , 760 011142' 545743 000000 X LOC , 761 011617' 134757 760761 011143' 545757 536560 X LOOKUP, 076 011144' 546350 000000 X LSH , 242 011145' 546350 430000 X LSHC , 246 011146' 555457 464600 X MLOFF , 767 011620' 076242 246767 011147' 555457 560000 X MLON , 766 011150' 555766 450000 XX MOVE , 200 011151' 555766 455100 XX MOVEI , 201 011152' 555766 455500 XX MOVEM , 202 011621' 766200 201202 011153' 555766 456300 X MOVES , 203 MACRO V.10 PAGE 151-3 MACHINE INSTRUCTION SEARCH ROUTINES 011154' 555766 550000 X MOVM , 214 011155' 555766 555100 X MOVMI , 215 011156' 555766 555500 X MOVMM , 216 011622' 203214 215216 011157' 555766 556300 X MOVMS , 217 011160' 555766 560000 X MOVN , 210 011161' 555766 565100 X MOVNI , 211 011162' 555766 565500 X MOVNM , 212 011623' 217210 211212 011163' 555766 566300 X MOVNS , 213 011164' 555766 630000 X MOVS , 204 011165' 555766 635100 X MOVSI , 205 011166' 555766 635500 X MOVSM , 206 011624' 213204 205206 011167' 555766 636300 X MOVSS , 207 011170' 556441 604500 X MTAPE , 072 011171' 556457 601600 XX MTOP. , 024 011172' 556554 000000 X MUL , 224 011625' 207072 024224 011173' 556554 420000 X MULB , 227 011174' 556554 510000 X MULI , 225 011175' 556554 550000 X MULM , 226 011176' 565451 160000 XX NLI. , 031 011626' 227225 226031 011177' 565457 160000 XX NLO. , 032 011200' 565763 715500 X NOSYM , 762 MACRO V.10 PAGE 152 MACHINE INSTRUCTION SEARCH ROUTINES 011201' 574364 000000 X OCT , 763 011202' 576044 454600 X OPDEF , 764 011627' 032762 763764 011203' 576045 560000 X OPEN , 050 011204' 576200 000000 X OR , 434 011205' 576242 000000 X ORB , 437 011206' 576243 410000 X ORCA , 454 011630' 050434 437454 011207' 576243 414200 X ORCAB , 457 011210' 576243 415100 X ORCAI , 455 011211' 576243 415500 X ORCAM , 456 011212' 576243 420000 X ORCB , 470 011631' 457455 456470 011213' 576243 424200 X ORCBB , 473 011214' 576243 425100 X ORCBI , 471 011215' 576243 425500 X ORCBM , 472 011216' 576243 550000 X ORCM , 464 011632' 473471 472464 011217' 576243 554200 X ORCMB , 467 011220' 576243 555100 X ORCMI , 465 011221' 576243 555500 X ORCMM , 466 011222' 576251 000000 X ORI , 435 011633' 467465 466435 011223' 576255 000000 X ORM , 436 011224' 576564 000000 X OUT , 057 011225' 576564 160000 XX OUT. , 017 011226' 576564 426546 X OUTBUF, 065 011634' 436057 017065 011227' 576564 461600 XX OUTF. , 027 011230' 576564 606564 X OUTPUT, 067 MACRO V.10 PAGE 153 MACHINE INSTRUCTION SEARCH ROUTINES 011231' 604147 450000 X PAGE , 700 011232' 604163 632200 X PASS2 , 701 011635' 027067 700701 011233' 605041 634500 X PHASE , 702 011234' 605751 566400 X POINT , 703 011235' 605760 000000 XX POP , 262 011236' 605760 520000 XX POPJ , 263 011636' 702703 262263 011237' 606247 455644 X PRGEND, 714 011240' 606251 566470 X PRINTX, 704 011241' 606562 474500 X PURGE , 705 011242' 606563 500000 XX PUSH , 261 011637' 714704 705261 011243' 606563 505200 XX PUSHJ , 260 011244' 624144 517000 X RADIX , 706 011245' 624144 517025 X RADIX5, 707 011246' 624554 454163 X RELEAS, 071 011640' 260706 707071 011247' 624554 574300 X RELOC , 710 011250' 624555 416253 X REMARK, 711 011251' 624556 415545 X RENAME, 055 011252' 624560 454164 X REPEAT, 712 011641' 710711 055712 011253' 624563 456416 XX RESET., 015 011254' 625155 000000 X RIM , 715 011255' 625155 212000 X RIM10 , 735 011256' 625155 212042 X RIM10B, 736 011642' 015715 735736 011257' 625764 000000 X ROT , 241 011260' 625764 430000 X ROTC , 245 011261' 626367 000000 X RSW , 716 011262' 626442 160000 XX RTB. , 022 011643' 241245 716022 011263' 634154 540000 X SALL , 720 IFN UNIVR, 011264' 634564 410000 X SETA , 424 011265' 634564 414200 X SETAB , 427 011266' 634564 415100 X SETAI , 425 011644' 720424 427425 011267' 634564 415500 X SETAM , 426 011270' 634564 434100 X SETCA , 450 MACRO V.10 PAGE 153-1 MACHINE INSTRUCTION SEARCH ROUTINES 011271' 634564 434142 X SETCAB, 453 011272' 634564 434151 X SETCAI, 451 011645' 426450 453451 011273' 634564 434155 X SETCAM, 452 011274' 634564 435500 X SETCM , 460 011275' 634564 435542 X SETCMB, 463 011276' 634564 435551 X SETCMI, 461 011646' 452460 463461 011277' 634564 435555 X SETCMM, 462 011300' 634564 550000 X SETM , 414 011301' 634564 554200 X SETMB , 417 011302' 634564 555100 X SETMI , 415 011647' 462414 417415 011303' 634564 555500 X SETMM , 416 011304' 634564 570000 X SETO , 474 011305' 634564 574200 X SETOB , 477 011306' 634564 575100 X SETOI , 475 011650' 416474 477475 011307' 634564 575500 X SETOM , 476 011310' 634564 636463 X SETSTS, 060 011311' 634564 720000 X SETZ , 400 011312' 634564 724200 X SETZB , 403 011651' 476060 400403 011313' 634564 725100 X SETZI , 401 011314' 634564 725500 XX SETZM , 402 011315' 635170 425164 XX SIXBIT, 717 011316' 635351 600000 XX SKIP , 330 011652' 401402 717330 011317' 635351 604100 X SKIPA , 334 011320' 635351 604500 X SKIPE , 332 011321' 635351 604700 X SKIPG , 337 011322' 635351 604745 X SKIPGE, 335 011653' 334332 337335 011323' 635351 605400 X SKIPL , 331 011324' 635351 605445 X SKIPLE, 333 011325' 635351 605600 X SKIPN , 336 011326' 635451 636416 XX SLIST., 025 011654' 331333 336025 011327' 635752 000000 X SOJ , 360 011330' 635752 410000 X SOJA , 364 011331' 635752 450000 X SOJE , 362 011332' 635752 470000 X SOJG , 367 011655' 360364 362367 011333' 635752 474500 X SOJGE , 365 011334' 635752 540000 X SOJL , 361 011335' 635752 544500 X SOJLE , 363 011336' 635752 560000 X SOJN , 366 011656' 365361 363366 MACRO V.10 PAGE 153-2 MACHINE INSTRUCTION SEARCH ROUTINES 011337' 635763 000000 XX SOS , 370 011340' 635763 410000 X SOSA , 374 011341' 635763 450000 X SOSE , 372 011342' 635763 470000 X SOSG , 377 011657' 370374 372377 011343' 635763 474500 X SOSGE , 375 011344' 635763 540000 X SOSL , 371 011345' 635763 544500 X SOSLE , 373 011346' 635763 560000 X SOSN , 376 011660' 375371 373376 011347' 636165 577245 X SQUOZE, 707 011350' 636441 645700 X STATO , 061 011351' 636441 646563 X STATUS, 062 011352' 636441 647200 X STATZ , 063 011661' 707061 062063 011353' 636457 605100 X STOPI , 722 011354' 636542 000000 X SUB , 274 011355' 636542 420000 X SUBB , 277 011356' 636542 510000 X SUBI , 275 011662' 722274 277275 011357' 636542 550000 X SUBM , 276 IF2,> 011360' 636542 646454 X SUBTTL, 723 011361' 636560 606245 X SUPPRE, 713 011362' 637156 000000 X SYN , 724 011663' 276723 713724 011363' 644160 450000 X TAPE , 725 MACRO V.10 PAGE 154 MACHINE INSTRUCTION SEARCH ROUTINES 011364' 644443 000000 X TDC , 650 011365' 644443 410000 X TDCA , 654 011366' 644443 450000 X TDCE , 652 011664' 725650 654652 011367' 644443 560000 X TDCN , 656 011370' 644456 000000 X TDN , 610 011371' 644456 410000 X TDNA , 614 011372' 644456 450000 X TDNE , 612 011665' 656610 614612 011373' 644456 560000 X TDNN , 616 011374' 644457 000000 X TDO , 670 011375' 644457 410000 X TDOA , 674 011376' 644457 450000 X TDOE , 672 011666' 616670 674672 011377' 644457 560000 X TDON , 676 011400' 644472 000000 X TDZ , 630 011401' 644472 410000 X TDZA , 634 011402' 644472 450000 X TDZE , 632 011667' 676630 634632 011403' 644472 560000 X TDZN , 636 011404' 645164 544500 X TITLE , 726 011405' 645443 000000 X TLC , 641 011406' 645443 410000 X TLCA , 645 011670' 636726 641645 011407' 645443 450000 X TLCE , 643 011410' 645443 560000 X TLCN , 647 011411' 645456 000000 X TLN , 601 011412' 645456 410000 X TLNA , 605 011671' 643647 601605 011413' 645456 450000 XX TLNE , 603 011414' 645456 560000 XX TLNN , 607 011415' 645457 000000 XX TLO , 661 011416' 645457 410000 X TLOA , 665 011672' 603607 661665 011417' 645457 450000 X TLOE , 663 011420' 645457 560000 X TLON , 667 011421' 645472 000000 XX TLZ , 621 011422' 645472 410000 XX TLZA , 625 011673' 663667 621625 011423' 645472 450000 XX TLZE , 623 011424' 645472 560000 XX TLZN , 627 MACRO V.10 PAGE 155 MACHINE INSTRUCTION SEARCH ROUTINES 011425' 646243 000000 X TRC , 640 011426' 646243 410000 X TRCA , 644 011674' 623627 640644 011427' 646243 450000 X TRCE , 642 011430' 646243 560000 X TRCN , 646 011431' 646256 000000 X TRN , 600 011432' 646256 410000 X TRNA , 604 011675' 642646 600604 011433' 646256 450000 XX TRNE , 602 011434' 646256 560000 XX TRNN , 606 011435' 646257 000000 X TRO , 660 011436' 646257 410000 X TROA , 664 011676' 602606 660664 011437' 646257 450000 X TROE , 662 011440' 646257 560000 X TRON , 666 011441' 646272 000000 XX TRZ , 620 011442' 646272 410000 X TRZA , 624 011677' 662666 620624 011443' 646272 450000 X TRZE , 622 011444' 646272 560000 X TRZN , 626 011445' 646343 000000 X TSC , 651 011446' 646343 410000 X TSCA , 655 011700' 622626 651655 011447' 646343 450000 X TSCE , 653 011450' 646343 560000 X TSCN , 657 011451' 646356 000000 X TSN , 611 011452' 646356 410000 X TSNA , 615 011701' 653657 611615 011453' 646356 450000 X TSNE , 613 011454' 646356 560000 X TSNN , 617 011455' 646357 000000 X TSO , 671 011456' 646357 410000 X TSOA , 675 011702' 613617 671675 011457' 646357 450000 X TSOE , 673 011460' 646357 560000 X TSON , 677 011461' 646372 000000 X TSZ , 631 011462' 646372 410000 X TSZA , 635 011703' 673677 631635 011463' 646372 450000 X TSZE , 633 011464' 646372 560000 X TSZN , 637 011465' 646443 415454 X TTCALL, 051 011466' 646757 634547 X TWOSEG, 731 011704' 633637 051731 011467' 654641 000000 X UFA , 130 011470' 654745 644600 X UGETF , 073 011471' 655245 560000 X UJEN , 100 IFN UNIVR, 011472' 656345 645100 X USETI , 074 011705' 130073 100074 011473' 656345 645700 X USETO , 075 MACRO V.10 PAGE 155-1 MACHINE INSTRUCTION SEARCH ROUTINES 011474' 664162 000000 X VAR , 727 011475' 676442 160000 XX WTB. , 023 011476' 704154 540000 X XALL , 732 011706' 075727 023732 011477' 704364 000000 X XCT , 256 011500' 705451 636400 X XLIST , 733 011501' 705762 000000 X XOR , 430 011502' 705762 420000 X XORB , 433 011707' 256733 430433 011503' 705762 510000 X XORI , 431 011504' 705762 550000 X XORM , 432 011505' 706065 564745 X XPUNGE, 730 011506' 706744 000000 X XWD , 734 011710' 431432 730734 011507' 720000 000000 X Z , 000 011510' 164362 454600 X .CREF , 740 011511' 165067 466255 X .HWFRM, 742 011512' 165546 625564 X .MFRMT, 743 011711' 000740 742743 011513' 167043 624546 X .XCREF, 741 MACRO V.10 PAGE 156 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.10 PAGE 157 MACHINE INSTRUCTION SEARCH ROUTINES IFE OPHSH,< IF1, < BLOCK N1> 011514' 377777 777777 OP1END: -1B36 011515' OP1COD: BLOCK N1/4 011712' 000000 000000 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.10 PAGE 158 PERMANENT SYMBOLS SUBTTL PERMANENT SYMBOLS 011713' 000000 000002 SYMNUM: EXP LENGTH/2 ;NUMBER OF PERMANENT SYMBOLS DEFINE P (A,B)< SIXBIT /A/ XWD SYMF!NOOUTF,B> 011714' 400000 000000 P @, 0(SUPRBT) 011715' 500004 000000 011716' 373737 373737 P ??????, 0(SUPRBT) 011717' 500004 000000 000004 LENGTH= .-SYMNUM-1 ;LENGTH OF INITIAL SYMBOLS 011720' PRMTBL: ;PERMANENT SYMBOLS 011720' 414443 000000 P ADC, 24 011721' 500000 000024 011722' 416062 000000 P APR, 0 011723' 500000 000000 011724' 434351 000000 P CCI, 14 011725' 500000 000014 011726' 434460 000000 P CDP, 110 011727' 500000 000110 011730' 434462 000000 P CDR, 114 011731' 500000 000114 011732' 436041 000000 P CPA, 0 011733' 500000 000000 011734' 436200 000000 P CR, 150 011735' 500000 000150 011736' 444300 000000 P DC, 200 011737' 500000 000200 011740' 444363 410000 P DCSA, 300 011741' 500000 000300 011742' 444363 420000 P DCSB, 304 011743' 500000 000304 011744' 444600 000000 P DF, 270 011745' 500000 000270 011746' 445163 000000 P DIS, 130 011747' 500000 000130 011750' 445463 000000 P DLS, 240 011751' 500000 000240 011752' 446043 000000 P DPC, 250 011753' 500000 000250 011754' 446353 000000 P DSK, 170 011755' 500000 000170 011756' 446443 000000 P DTC, 320 011757' 500000 000320 011760' 446463 000000 P DTS, 324 011761' 500000 000324 011762' 546064 000000 P LPT, 124 011763' 500000 000124 011764' 554446 000000 P MDF, 260 011765' 500000 000260 011766' 556443 000000 P MTC, 220 MACRO V.10 PAGE 158-1 PERMANENT SYMBOLS 011767' 500000 000220 011770' 556455 000000 P MTM, 230 011771' 500000 000230 011772' 556463 000000 P MTS, 224 011773' 500000 000224 011774' 604147 000000 P PAG, 10 011775' 500000 000010 011776' 605100 000000 P PI, 4 011777' 500000 000004 012000' 605464 000000 P PLT, 140 012001' 500000 000140 012002' 606460 000000 P PTP, 100 012003' 500000 000100 012004' 606462 000000 P PTR, 104 012005' 500000 000104 012006' 645543 000000 P TMC, 340 012007' 500000 000340 012010' 645563 000000 P TMS, 344 012011' 500000 000344 012012' 646471 000000 P TTY, 120 012013' 500000 000120 012014' 656443 000000 P UTC, 210 012015' 500000 000210 012016' 656463 000000 P UTS, 214 012017' 500000 000214 IFE LNSSW,< XLIST > LIST 012020' PRMEND: ;END OF PERMANENT SYMBOLS MACRO V.10 PAGE 159 PERMANENT SYMBOLS OPDEF ZL [Z LITF] ;INVALID IN LITERALS OPDEF ZA [Z ADDF] ;INVALID IN ADDRESSES OPDEF ZAL [Z ADDF!LITF] 012020' OP1TAB: 012020' 000000 110407' ZA PAGE0 ;PAGE 012021' 000000 303066' ZAL PASS20 ;PASS2 012022' 000000 304017' ZAL PHASE0 ;PHASE 012023' 000000 004561' Z POINT0 ;POINT 012024' 000000 103342' ZA PRNTX0 ;PRINTX 012025' 000000 104317' ZA PURGE0 ;PURGE 012026' 000000 103306' ZA RADIX0 ;RADIX 012027' 000000 004667' Z RADX50 ;RADIX50,SQUOZE 012030' 000001 304114' ZAL LOC0 (1) ;RELOC 012031' 000000 303361' ZAL REMAR0 ;REMARK 012032' 000000 105070' ZA REPEA0 ;REPEAT 012033' 000000 104161' ZA SUPRE0 ;SUPRESS 012034' 000000 304712' ZAL PSEND0 ;PRGEND 012035' 000400 310072' ZAL RIM0 (RIMSW) ;RIM 012036' 700040 004352' DATAI 0,IOP ;RSW 012037' 000001 004515' Z ASCII0 (1) ;SIXBIT 012040' 004001 303315' ZAL IOSET (IOPALL!IOSALL) ;SALL IFN UNIVR,< ZAL SERCH0 ;SEARCH> 012041' 000000 000000 IFE UNIVR,< Z 0> 012042' 000000 106125' ZA STOPI0 ;STOPI 012043' 440700 104220' ZA SUBTT0 (Z (POINT 7,,)) ;SUBTTL 012044' 000000 104261' ZA SYN0 ;SYN 012045' 000000 303304' ZAL TAPE0 ;TAPE 012046' 440700 104207' ZA TITLE0 (Z (POINT 7,,)) ;TITLE 012047' 000000 303457' ZAL VAR0 ;VAR 012050' 000000 004177' Z XPUNG0 ;XPUNGE 012051' 000000 303360' ZAL TWSEG0 ;TWOSEGMENTS 012052' 004000 303314' ZAL XALL0 (IOPALL) ;XALL 012053' 040000 303315' ZAL IOSET (IOPROG) ;XLIST 012054' 000000 004601' Z XWD0 ;XWD 012055' 000100 310072' ZAL RIM0 (RIM1SW) ;RIM10 012056' 004000 310072' ZAL RIM0 (R1BSW) ;RIM10B IFN UNIVR,< ZA UNIV0 (Z (POINT 7,,)) ;UNIVERSAL> 012057' 000000 000000 IFE UNIVR,< Z 0 ;UNIVERSAL> 012060' 002000 303322' ZAL IORSET (IONCRF) ;.CREF 012061' 002000 303315' ZAL IOSET (IONCRF) ;.XCREF 012062' 000000 103360' ZA OFFORM ;.HWFRMT 012063' 000000 103360' ZA ONFORM ;.MFRMT MACRO V.10 PAGE 160 PERMANENT SYMBOLS 012064' OP2TAB: 012064' 000000 004515' Z ASCII0 (0) ;ASCII 012065' 400000 004515' Z ASCII0 (1B18) ;ASCIZ 012066' 700000 004352' BLKI IOP ;BLKI 012067' 700100 004352' BLKO IOP ;BLKO 012070' 000000 303326' ZAL BLOCK0 ;BLOCK 012071' 000000 104172' ZA SUPRSA ;ASUPPRESS 012072' 000000 303360' ZAL HISEG0 ;HISEG 012073' 000000 004631' Z BYTE0 ;BYTE 012074' 700240 004352' CONI IOP ;CONI 012075' 700200 004352' CONO IOP ;CONO 012076' 700340 004352' CONSO IOP ;CONSO 012077' 700300 004352' CONSZ IOP ;CONSZ 012100' 700040 004352' DATAI IOP ;DATAI 012101' 700140 004352' DATAO IOP ;DATAO 012102' 000012 004466' Z OCT0 (^D10) ;DEC 012103' 000000 105211' ZA DEFIN0 ;DEFINE 012104' 000000 304015' ZAL DEPHA0 ;DEPHASE 012105' 000000 303037' ZAL END0 ;END 012106' 000600 103677' ZA INTER0 (INTF!ENTF) ;ENTRY 012107' 000000 004465' Z EXPRES ;EXP 012110' 000000 103715' ZA EXTER0 ;EXTERN 012111' 254200 004354' JRST 4,OP ;HALT 012112' 607640 003540' TLNN FR,IFPASS ;IF1 012113' 603640 003540' TLNE FR,IFPASS ;IF2 012114' 602000 003543' TRNE AC0,IFB0 ;IFB 012115' 603240 003600' TLNE ARG,IFDEF0 ;IFDEF 012116' 000000 003610' Z IFIDN0 (0) ;IFDIF 012117' 332000 003512' SKIPE IF ;IFE 012120' 337000 003512' SKIPG IF ;IFG 012121' 335000 003512' SKIPGE IF ;IFGE 012122' 000001 003610' Z IFIDN0 (1) ;IFIDN 012123' 331000 003512' SKIPL IF ;IFL 012124' 333000 003512' SKIPLE IF ;IFLE 012125' 336000 003512' SKIPN IF ;IFN 012126' 606000 003543' TRNN AC0,IFB0 ;IFNB 012127' 607240 003600' TLNN ARG,IFDEF0 ;IFNDEF 012130' 000400 103677' ZA INTER0 (INTF) ;INTERN 012131' 000000 004617' Z IOWD0 ;IOWD 012132' 000000 005777' Z IRP0 (0) ;IRP 012133' 400000 005777' Z IRP0 (400000) ;IRPC 012134' 255300 004354' JFCL 6,OP ;JCRY 012135' 255200 004354' JFCL 4,OP ;JCRY0 012136' 255100 004354' JFCL 2,OP ;JCRY1 012137' 254500 004354' JRST 12,OP ;JEN 012140' 255400 004354' JFCL 10,OP ;JOV 012141' 254100 004354' JRST 2,OP ;JRSTF 012142' 004001 303322' ZAL IORSET (IOPALL!IOSALL) ;LALL MACRO V.10 PAGE 160-1 PERMANENT SYMBOLS 012143' 040000 303322' ZAL IORSET (IOPROG) ;LIST 012144' 000000 303365' ZAL LIT0 ;LIT 012145' 000000 304114' ZAL LOC0 (0) ;LOC 012146' 000000 104157' ZA OFFSYM ;NOSYM 012147' 000010 004466' Z OCT0 (^D8) ;OCT 012150' 000000 103764' ZA OPDEF0 ;OPDEF 012151' 255040 004354' JFCL 1,OP ;JFOV 012152' 000000 104154' ZA ONML ;MLON 012153' 000000 104155' ZA OFFML ;MLOFF 012154' 600000 004515' Z ASCII0 (3B19) ;COMMENT IFN IIISW,< Z ASCII0 (5B20) ;ASCID> MACRO V.10 PAGE 161 PERMANENT SYMBOLS REPEAT 0, 012155' 515643 506267 TTCTBL: SIXBIT /INCHRW/ ; 0 INPUT A CHAR. AND WAIT 012156' 576564 435062 SIXBIT /OUTCHR/ ; 1 OUTPUT A CHAR. 012157' 515643 506263 SIXBIT /INCHRS/ ; 2 INPUT A CHAR. AND SKIP 012160' 576564 636462 SIXBIT /OUTSTR/ ; 3 OUTPUT A STRING 012161' 515643 506754 SIXBIT /INCHWL/ ; 4 INPUT CHAR., WAIT, LINE MODE 012162' 515643 506354 SIXBIT /INCHSL/ ; 5 INPUT CHAR., SKIP, LINE MODE 012163' 474564 544350 SIXBIT /GETLCH/ ; 6 GET LINE CHARACTERISTICS 012164' 634564 544350 SIXBIT /SETLCH/ ; 7 SET LINE CHARACTERISTICS 012165' 624563 434156 SIXBIT /RESCAN/ ;10 RESET INPUT STREAM TO COMMAND 012166' 435462 424651 SIXBIT /CLRBFI/ ;11 CLEAR TYPEIN BUFFER 012167' 435462 424657 SIXBIT /CLRBFO/ ;12 CLEAR TYPEOUT BUFFER 012170' 635360 515643 SIXBIT /SKPINC/ ;13 SKIPS IF A CHAR. CAN BE INPUT 012171' 635360 515654 SIXBIT /SKPINL/ ;14 SKIPS IF A LINE CAN BE INPUT 012172' 515756 455765 SIXBIT /IONEOU/ ;15 OUTPUT AS AN IMAGE CHAR. 000016 TTCLTH==.-TTCTBL SUBTTL USER-DEFINED SYMBOL SEARCH ROUTINES 012173' 260740 012313' MSRCH: PUSHJ PP,SEARCH ;PERFORM GENERAL SEARCH 012174' 263740 000000 POPJ PP, ;NOT FOUND, EXIT 012175' 327240 012202' JUMPG ARG,MSRCH2 ;SKIP-EXIT AND CROSS-REF IF FOUND 012176' 312004 000001 CAME AC0,1(SX) ;WE ARE LOOKING AT SYMBOL, TRY ONE ABOVE 012177' 263740 000000 POPJ PP, ;NO, EXIT 012200' 271200 000002 ADDI SX,2 ;YES, POINT TO IT 012201' 260740 012336' PUSHJ PP,SRCH5 ;LOAD REGISTERS 012202' 354017 000000 MSRCH2: AOSA 0(PP) ;SET SKIP-EXIT MACRO V.10 PAGE 161-2 USER-DEFINED SYMBOL SEARCH ROUTINES 012203' 321240 012220' QSRCH: JUMPL ARG,SSRCH3 ;BRANCH IF OPERAND 012204' 201140 000005 MOVEI SDEL,%MAC ;SET OPERATOR FLAG 012205' 623600 000040 TLZE IO,DEFCRS ;IS IT A DEFINITION? 012206' 201140 000006 MOVEI SDEL,%DMAC ;YES 012207' 254000 012221' JRST CREF ;CROSS-REF AND EXIT 012210' 260740 012313' SSRCH: PUSHJ PP,SEARCH ;PERFORM GENERAL SEARCH 012211' 263740 000000 POPJ PP, ;NOT FOUND, EXIT 012212' 321240 012217' JUMPL ARG,SSRCH2 ;SKIP-EXIT AND CROSS-REF IF FOUND 012213' 312004 777775 SSRCH1: CAME AC0,-3(SX) ;WE ARE LOOKING AT MACRO, LOOK ONE SLOT BELOW 012214' 263740 000000 POPJ PP, ;NO DICE, EXIT 012215' 275200 000002 SUBI SX,2 ;YES, POINT TO IT 012216' 260740 012336' PUSHJ PP,SRCH5 ;LOAD REGISTERS 012217' 350017 000000 SSRCH2: AOS 0(PP) ;SET FOR SKIP-EXIT 012220' 201140 000001 SSRCH3: MOVEI SDEL,%SYM ;SET OPERAND FLAG 012221' 607600 002000 CREF: TLNN IO,IONCRF ;NO CREFFING FOR THIS SYMBOL? 012222' 603640 402000 TLNE FR,P1!CREFSW ;PASS ONE OR CROSS-REF SUPPRESSION? 012223' 263740 000000 POPJ PP, ;YES, EXIT 012224' 250140 000007 EXCH SDEL,C ;PUT FLAG IN C, SACE C 012225' 261740 000010 PUSH PP,CS 012226' 603600 000400 TLNE IO,IOCREF ;HAVE WE PUT OUT THE 177,102 012227' 254000 012241' JRST CREF3 ;YES 012230' 261740 000007 PUSH PP,C ;START OF CREF DATA MACRO V.10 PAGE 162 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.10 PAGE 163 USER-DEFINED SYMBOL SEARCH ROUTINES REPEAT 1,< ;WORKS WITH EXISTING CREF 012231' 603600 000100 TLNE IO,IOPAGE 012232' 260740 012264' PUSHJ PP,CRFHDR ;GET CORRECT SUBTTL 012233' 201340 000177 MOVEI C,177 012234' 260740 010403' PUSHJ PP,OUTLST 012235' 201340 000102 MOVEI C,102 012236' 260740 010403' PUSHJ PP,OUTLST 012237' 661600 000400 TLO IO,IOCREF ;WE NOW ARE IN THAT STATE 012240' 262740 000007 POP PP,C ;WE HAVE NOW 012241' 260740 010403' CREF3: PUSHJ PP,OUTLST ;TYPE OF SYMBOL (%MAC,%DMAC,%SYM) 012242' 205400 770000 MOVSI CS,770000 ;COUNT CHRS 012243' 634340 000007 TDZA C,C ;STARTING AT 0 012244' 242400 777772 LSH CS,-6 ;TRY NEXT 012245' 612000 000010 TDNE AC0,CS ;IS THAT ONE THERE? 012246' 344340 012244' AOJA C,.-2 ;YES 012247' 260740 010403' PUSHJ PP,OUTLST ;PRINT NUMBER OF SYMBOL CONSTITUENTS 012250' 200400 000000 MOVE CS,AC0 012251' 201340 000000 CREF2: MOVEI C,0 012252' 246340 000006 LSHC C,6 012253' 271340 000040 ADDI C,40 012254' 260740 010403' PUSHJ PP,OUTLST ;THE ASCII SYMBOL 012255' 326400 012251' JUMPN CS,CREF2 012256' 201340 000002 MOVEI C,%DSYM 012257' 623600 000040 TLZE IO,DEFCRS 012260' 260740 010403' PUSHJ PP,OUTLST ;MARK IT AS A DEFINING OCCURENCE 012261' 200340 000003 MOVE C,SDEL 012262' 262740 000010 POP PP,CS 012263' 263740 000000 POPJ PP, IFN OPHSH,< SUBTL: SIXBIT /SUBTTL/> 012264' 312000 011360' CRFHDR: CAME AC0,SUBTL ;IS FIRST SYMBOL "SUBTTL" 012265' 254000 012272' JRST CRFHD1 ;NO 012266' 510000 000006 HLLZ AC0,V 012267' 260740 004220' PUSHJ PP,SUBTT0 ;UPDATE SUBTTL 012270' 200000 011360' MOVE AC0,SUBTL ;RESTORE ARG. 012271' 201300 003360' MOVEI V,CPOPJ 012272' 201340 000000 CRFHD1: MOVEI C,0 012273' 254000 010325' JRST OUTL 012274' CLSC3: 012274' 606600 000002 CLSCRF: TRNN ER,LPTSW 012275' 263740 000000 POPJ PP, ;LEAVE IF WE SHOULD NOT BE PRINTING 012276' 623600 000400 CLSCR2: TLZE IO,IOCREF ;FINISH UP LINE 012277' 254000 012307' JRST CLSCR1 012300' 201340 000000 MOVEI C,0 012301' 603600 000100 TLNE IO,IOPAGE ;NEW PAGE? 012302' 260740 010325' PUSHJ PP,OUTL ;YES,GIVE IT A ROUSING SENDOFF! 012303' 201340 000177 MOVEI C,177 012304' 260740 010403' PUSHJ PP,OUTLST 012305' 201340 000102 MOVEI C,102 012306' 260740 010403' PUSHJ PP,OUTLST ;MARK BEGINNING OF CREF DATA MACRO V.10 PAGE 163-1 USER-DEFINED SYMBOL SEARCH ROUTINES 012307' 201340 000177 CLSCR1: MOVEI C,177 012310' 260740 010403' PUSHJ PP,OUTLST 012311' 201340 000103 MOVEI C,103 012312' 254000 010403' JRST OUTLST ;MARK END OF CREF DATA > ;END OF REPEAT 1 MACRO V.10 PAGE 164 USER-DEFINED SYMBOL SEARCH ROUTINES 012313' 554200 013077' SEARCH: HLRZ SX,SRCHX 012314' 550140 013077' HRRZ SDEL,SRCHX 012315' 311004 777777 SRCH1: CAML AC0,-1(SX) 012316' 254000 012325' JRST SRCH3 012317' 274200 000003 SRCH2: SUB SX,SDEL 012320' 242140 777777 LSH SDEL,-1 012321' 317200 013103' CAMG SX,SYMTOP 012322' 326140 012315' JUMPN SDEL,SRCH1 012323' 326140 012317' JUMPN SDEL,SRCH2 012324' 364200 012361' SOJA SX,SRCHNO ;NOT FOUND 012325' 316004 777777 SRCH3: CAMN AC0,-1(SX) 012326' 254000 012335' JRST SRCH4 ;NORMAL / FOUND EXIT 012327' 270200 000003 ADD SX,SDEL 012330' 242140 777777 LSH SDEL,-1 012331' 317200 013103' CAMG SX,SYMTOP 012332' 326140 012315' JUMPN SDEL,SRCH1 012333' 326140 012317' JUMPN SDEL,SRCH2 012334' 364200 012361' SOJA SX,SRCHNO ;NOT FOUND 012335' 350017 000000 SRCH4: AOS 0(PP) ;SET FOR SKIP EXIT 012336' 205240 000004 SRCH5: MOVSI ARG,SUPRBT ;HE IS USING IT, TURN OFF BIT 012337' 412244 000000 ANDCAM ARG,(SX) ; IN THE TABLE 012340' 200244 000000 SRCH7: MOVE ARG,0(SX) ;FLAG AND VALUE TO ARG 012341' 135440 003303' LDB RC,RCPNTR ;POINT 1,ARG,17 012342' 603240 000002 TLNE ARG,LELF ;CHECK LEFT RELOCATE 012343' 661440 000001 TLO RC,1 012344' 550300 000005 HRRZ V,ARG 012345' 603240 000010 TLNE ARG,SPTR ;CHECK SPECIAL EXTESN POINTER 012346' 254000 012352' JRST SRCH6 012347' 603240 004000 TLNE ARG,PNTF 012350' 200305 000000 MOVE V,0(ARG) ;36BIT VALUE TO V 012351' 254000 012363' JRST SRCHOK 012352' 200305 000000 SRCH6: MOVE V,0(ARG) ;VALUE 012353' 200445 000001 MOVE RC,1(ARG) ;AND RELOC 012354' 603440 777776 TLNE RC,-2 ;CHECK AND SET EXTPNT 012355' 502440 013270' HLLM RC,EXTPNT 012356' 602440 777776 TRNE RC,-2 012357' 542440 013270' HRRM RC,EXTPNT 012360' 254000 012363' JRST SRCHOK 012361' SRCHNO:IFN UNIVR, 012361' 263740 000000 POPJ PP, ;NO, JUST RETURN IFN UNIVR, 012362' 400240 000000 SRCHKO: SETZ ARG, ;CLEAR ARG SO ZERO STORED 012363' SRCHOK: IFN UNIVR, 012363' 263740 000000 POPJ PP, ;NO, JUST RETURN IFN UNIVR,< SYMBCK: HLRZ SX,UNISCH ;RESTORE SX SETZM UNISCH ;CLEAR SYMBCK FLAG PUSH PP,V ;SAVE AN AC MOVE V,UNISHX ;SRCHX MOVEM V,SRCHX ;RESTORE ORIGINAL MOVE V,UNIPTR ;SYMTOP,,SYMBOL HRRZM V,SYMBOL HLRZM V,SYMTOP JUMPE ARG,SRCHK2 ;TOTALLY UNDEFINED PUSH PP,RC ;SAVE SOME ACCS PUSH PP,ARG PUSH PP,EXTPNT SETZB ARG,EXTPNT ;CLEAR ALL SYMBOL DATA SETZB RC,V PUSHJ PP,INSERT ;INSERT SYMBOL IN TABLE POP PP,EXTPNT ;RESTORE ACCS ETC. POP PP,ARG POP PP,RC MOVEM ARG,(SX) ;SET FLAGS AND VALUE AS IT SHOULD BE SRCHK2: POP PP,V POPJ PP, ;RETURN> MACRO V.10 PAGE 165 USER-DEFINED SYMBOL SEARCH ROUTINES 012364' 603240 002100 INSERQ: TLNE ARG,UNDF!VARF 012365' 403440 000006 INSERZ: SETZB RC,V 012366' 312004 777777 INSERT: CAME AC0,-1(SX) ;ARE WE LOOKING AT MATCHING MNEMONIC? 012367' 254000 012377' JRST INSRT2 ;NO, JUST INSERT 012370' 321240 012374' JUMPL ARG,INSRT1 ;YES, BRANCH IF OPERAND 012371' 331004 000000 SKIPL 0(SX) ;OPERATOR, ARE WE LOOKING AT ONE? 012372' 254000 012467' JRST UPDATE ;YES, UPDATE 012373' 254000 012377' JRST INSRT2 ;NO, INSERT 012374' 337004 000000 INSRT1: SKIPG 0(SX) ;OPERAND, ARE WE LOOKING AT ONE? 012375' 254000 012467' JRST UPDATE ;YES, UPDATE 012376' 275200 000002 SUBI SX,2 ;NO, MOVE UNDER OPERATOR AND INSERT 012377' 200140 013102' INSRT2: MOVE SDEL,SYMBOL 012400' 275140 000002 SUBI SDEL,2 012401' 313140 012727' CAMLE SDEL,FREE 012402' 254000 012405' JRST INSRT3 012403' 260740 010014' PUSHJ PP,XCEEDS 012404' 271140 002000 ADDI SDEL,2000 012405' 202140 013102' INSRT3: MOVEM SDEL,SYMBOL ;MAKE ROOM FOR A TWO WORD ENTRY 012406' 505143 000002 HRLI SDEL,2(SDEL) 012407' 251144 777776 BLT SDEL,-2(SX) ;PUSH EVERYONE DOWN TWO LOACTIONS 012410' 350020 013102' AOS @SYMBOL ;INCREMENT THE SYMBOL COUNT 012411' 607440 777776 TLNN RC,-2 ;NEED SPECIAL? 012412' 602440 777776 TRNE RC,-2 ;LEFT OR RIGHT EXTERNAL? 012413' 254000 012434' JRST INSRT5 ;YES, JUMP 012414' 607300 777777 TLNN V,-1 ;SKIP IF V IS A 36BIT VALUE 012415' 254000 012424' JRST INSRT4 ;JUMP, ITS A 18BIT VALUE 012416' 350140 012727' AOS SDEL,FREE ;36BIT, SO GET A CELL FROM FREE CORE 012417' 311140 013102' CAML SDEL,SYMBOL ;MORE CORE NEEDED? 012420' 260740 010014' PUSHJ PP,XCEEDS ;YES 012421' 541243 777777 HRRI ARG,-1(SDEL) ;POINTER TO ARG 012422' 202305 000000 MOVEM V,0(ARG) ;36BIT VALUE TO FREE CORE 012423' 665240 004000 TLOA ARG,PNTF ;NOTE THAT ARG IS APOINTER, NOT A 18BIT VALUE 012424' 540240 000006 INSRT4: HRR ARG,V ;18BIT VALUE TO ARG 012425' 137440 003303' DPB RC,RCPNTR ;FIX RIGHT RELOCATION 012426' 603440 000001 TLNE RC,1 012427' 661240 000002 TLO ARG,LELF ;FIX LEFT RELOCATION 012430' 202244 000000 INSRT6: MOVEM ARG,0(SX) ;INSERT FLAGS AND VALUE. 012431' 202004 777777 MOVEM AC0,-1(SX) ;INSERT SYMBOL NAME. 012432' 260740 012455' PUSHJ PP,SRCHI ;INITILIAZE SRCHX 012433' 254000 012203' JRST QSRCH ;EXIT THROUGH CREF 012434' 201140 000002 INSRT5: MOVEI SDEL,2 ;GET TWO CELLS FROM FREE CORE 012435' 273140 012727' ADDB SDEL,FREE 012436' 311140 013102' CAML SDEL,SYMBOL;MORE CORE NEEDED? 012437' 260740 010014' PUSHJ PP,XCEEDS ;YES 012440' 202443 777777 MOVEM RC,-1(SDEL) 012441' 541243 777776 HRRI ARG,-2(SDEL) ;POINTER TO ARG 012442' 202305 000000 MOVEM V,0(ARG) 012443' 661240 000010 TLO ARG,SPTR ;SET SPECIAL POINTER, POINTS TO TWO CELLS 012444' 254000 012430' JRST INSRT6 MACRO V.10 PAGE 166 USER-DEFINED SYMBOL SEARCH ROUTINES 012445' 275200 000002 REMOVE: SUBI SX,2 ;MOVE EVERYONE UP TWO LOCATIONS 012446' 200004 000000 REMOV1: MOVE 0(SX) 012447' 202004 000002 MOVEM 2(SX) ;OVERWRITE THE DELETED SYMBOL 012450' 312200 013102' CAME SX,SYMBOL ;SKIP WHEN DONE 012451' 364200 012446' SOJA SX,REMOV1 012452' 271200 000002 ADDI SX,2 012453' 202200 013102' MOVEM SX,SYMBOL 012454' 370004 000000 SOS 0(SX) ;DECREMENT THE SYMBOL COUNT 012455' 201100 000000 SRCHI: MOVEI AC2,0 ;THIS CODE SETS UP SRCHX 012456' 140120 013102' FAD AC2,@SYMBOL 012457' 242100 777745 LSH AC2,-^D27 012460' 201040 001000 MOVEI AC1,1000 012461' 242042 777421 LSH AC1,-357(AC2) 012462' 542040 013077' HRRM AC1,SRCHX 012463' 242040 000001 LSH AC1,1 012464' 270040 013102' ADD AC1,SYMBOL 012465' 506040 013077' HRLM AC1,SRCHX 012466' 263740 000000 POPJ PP, ;SRCHX=XWD ,LENGTH/4 MACRO V.10 PAGE 167 USER-DEFINED SYMBOL SEARCH ROUTINES 012467' 137440 003303' UPDATE: DPB RC,RCPNTR ;FIX RIGHT RELOCATION 012470' 603240 000010 TLNE ARG,SPTR ;SKIP IF THERE IS NO SPECIAL POINTER 012471' 254000 012521' JRST UPDAT4 ;YES, USE THE TWO CELLS 012472' 607440 777776 TLNN RC,-2 ;NEED TO CHANGE 012473' 602440 777776 TRNE RC,-2 ;ANY CURRENT EXTERNS? 012474' 254000 012525' JRST UPDAT5 ;YES ,JUMP 012475' 621240 000002 TLZ ARG,LELF ;CLEAR LELF 012476' 603440 000001 TLNE RC,1 ;LEFT RELOCATABLE? 012477' 661240 000002 TLO ARG,LELF ;YES, SET THE FLAG 012500' 603240 004000 TLNE ARG,PNTF ;WAS THERE A 36BIT VALUE? 012501' 254000 012514' JRST UPDAT2 ;YES, USE IT. 012502' 603300 777777 TLNE V,-1 ;NO,IS THERE A 36BIT VALUE? 012503' 254000 012507' JRST UPDAT1 ;YES, GET A CELL 012504' 540240 000006 HRR ARG,V ;NO, USE RH OF ARG 012505' 202244 000000 UPDAT3: MOVEM ARG,0(SX) ;OVERWRITE THE ONE IN THE TABLE 012506' 263740 000000 POPJ PP, ;AND EXIT 012507' 350140 012727' UPDAT1: AOS SDEL,FREE ;GET ONE CELL 012510' 311140 013102' CAML SDEL,SYMBOL ;NEED MORE CORE? 012511' 260740 010014' PUSHJ PP,XCEEDS ;YES 012512' 541243 777777 HRRI ARG,-1(SDEL) ;POINTER TO ARG 012513' 661240 004000 TLO ARG,PNTF ;AND NOTE IT. 012514' 603240 001000 UPDAT2: TLNE ARG,EXTF ;IS THERE A EXTERNAL? 012515' 254000 012505' JRST UPDAT3 ;YES, - JUST SAVE A LOCATION 012516' 202244 000000 MOVEM ARG,0(SX) ;NO, OVERWRITE THE POINTER IN THE TABLE 012517' 202305 000000 MOVEM V,0(ARG) ;STORE VALUE AS A 36BIT VALUE 012520' 263740 000000 POPJ PP, ;AND EXIT 012521' 202244 000000 UPDAT4: MOVEM ARG,0(SX) ;WE HAVE TWO CELLS, WE USE THEM 012522' 202305 000000 MOVEM V,0(ARG) ;SAVE AS 36BIT VALUE 012523' 202445 000001 MOVEM RC,1(ARG) ;SAVE RELOCATION BITS 012524' 263740 000000 POPJ PP, ;AND EXIT 012525' 201140 000002 UPDAT5: MOVEI SDEL,2 ;THERE IS A EXTERNAL 012526' 273140 012727' ADDB SDEL,FREE ;SO WE NEED TWO LOACTIONS 012527' 311140 013102' CAML SDEL,SYMBOL ;NEED MORE CORE? 012530' 260740 010014' PUSHJ PP,XCEEDS ;YES 012531' 202443 777777 MOVEM RC,-1(SDEL) ;SAVE RELOCATION BITS 012532' 541243 777776 HRRI ARG,-2(SDEL) ;SAVE THE POINTER IN ARG 012533' 202305 000000 MOVEM V,0(ARG) ;SAVE A 36BIT VALUE 012534' 661240 000010 TLO ARG,SPTR ;SET SPECIAL PNTR FLAG 012535' 621240 004000 TLZ ARG,PNTF ;CLEAR POINTER FLAG 012536' 254000 012505' JRST UPDAT3 ;SAVE THE POINTER AND EXIT MACRO V.10 PAGE 168 CONSTANTS SUBTTL CONSTANTS MACRO V.10 PAGE 169 PHASED CODE SUBTTL PHASED CODE SUBTTL PHASED CODE 012537' LSTFIL: BLOCK 1 012540' 400000 000000 SIXBIT /@/ ;SYMBOL TO STOP PRINTING 012541' TAG: BLOCK 1 012542' 001300 400000 SIXBIT / + @/ 012543' TABI: 012543' 000221 104422 BYTE (7) 0, 11, 11, 11, 11 012544' SEQNO: BLOCK 1 012545' 201004 020100 ASCIZ / / 012546' 201000 000000 012547' 000000 000014 BININI: EXP B 012550' BINDEV: BLOCK 1 012551' 012655' 000000 XWD BINBUF,0 012552' 000000 000001 LSTINI: EXP AL 012553' LSTDEV: BLOCK 1 012554' 012652' 000000 XWD LSTBUF,0 IFN CCLSW,< 012555' 000000 000016 NUNINI: EXP DMP 012556' NUNDEV: BLOCK 1 012557' 000000 000000 XWD 0,0 012560' 000000 000001 RPGINI: EXP AL 012561' RPGDEV: BLOCK 1 012562' 000000 013422' XWD 0,CTLBLK > 012563' 000000 000000 INDEVI: EXP A 012564' INDEV: BLOCK 1 012565' 000000 012660' XWD 0,IBUF 012566' 201004 020100 DBUF: ASCIZ / PAGE / 012567' 201004 020100 012570' 201004 020100 012571' 201012 040616 012572' 425000 000000 012573' 046330 141644 VBUF: ASCIZ / MACRO / ;MUST BE LAST LOCATIONS IN BLOCK 012574' 475000 000000 012575' BLOCK 3 ;ALLOW FOR LONG TITLE MACRO V.10 PAGE 170 STORAGE CELLS SUBTTL STORAGE CELLS 012600' PASS1I: 012600' RP: BLOCK 1 IFE CCLSW, 012601' IFN CCLSW,/5 > 012652' LSTBUF: BLOCK 3 012655' BINBUF: BLOCK 3 012660' IBUF: BLOCK 3 012663' IFN CCLSW, 012663' LSTDIR: BLOCK 4 012667' BINDIR: BLOCK 4 012673' INDIR: BLOCK 4 012677' ACDELX: ;LEFT HALF 012677' BLKTYP: BLOCK 1 ;RIGHT HALF 012700' COUTX: BLOCK 1 012701' COUTY: BLOCK 1 012702' COUTP: BLOCK 1 012703' COUTRB: BLOCK 1 012704' COUTDB: BLOCK ^D18 012726' ERRCNT: BLOCK 1 012727' FREE: BLOCK 1 IFN RENTSW, 012730' IFBLK: BLOCK .IFBLK 012754' IFBLKA: BLOCK .IFBLK 013000' LADR: BLOCK 1 013001' NCOLLS: BLOCK 1 013002' LIMBO: BLOCK 1 013003' LBUFP: BLOCK 1 013004' LBUF: BLOCK <.CPL+5>/5 013026' BLOCK 1 013027' VARHD: BLOCK 1 013030' VARHDX: BLOCK 1 013031' LITAB: BLOCK 1 013032' LITABX: BLOCK 1 013033' BLOCK 1 013034' LITHD: BLOCK 1 013035' LITHDX: BLOCK 1 013036' LITCNT: BLOCK 1 013037' LITNUM: BLOCK 1 MACRO V.10 PAGE 170-1 STORAGE CELLS 013040' LOOKX: BLOCK 1 013041' NEXT: BLOCK 1 013042' OUTSW: BLOCK 1 013043' PDP: BLOCK 1 013044' RECCNT: BLOCK 1 013045' SAVBLK: BLOCK RC 013056' SAVERC: BLOCK 1 013057' SBUF: BLOCK .SBUF/5 013077' SRCHX: BLOCK 1 013100' SUBTTX: BLOCK 1 013101' SVSYM: BLOCK 1 013102' SYMBOL: BLOCK 1 013103' SYMTOP: BLOCK 1 013104' STPX: BLOCK 1 013105' STPY: BLOCK 1 013106' STCODE: BLOCK .STP 013156' STOWRC: BLOCK .STP 013226' TABP: BLOCK 1 013227' TCNT: BLOCK 1 ;COUNT OF CHARS. LEFT IN TBUF 013230' TBUF: BLOCK .TBUF/5 013250' DEVBUF: BLOCK 6 ;STORE NAME.EXT CREATION DATE AND TIME 013256' TYPERR: BLOCK 1 013257' IONSYM: BLOCK 1 ;-1 SUPRESS LISTING OF SYMBOLS 013260' PRGPTR: BLOCK 1 ;POINTER TO CHAIN OF PRGEND BLOCKS 013261' ENTERS: BLOCK 1 ;-1 WHEN ENTERS HAVE BEEN DONE IFN UNIVR, MACRO V.10 PAGE 171 STORAGE CELLS 013262' PASS2I: 013262' ABSHI: BLOCK 1 013263' HIGH: BLOCK 1 IFN RENTSW, 013264' ACDEVX: BLOCK 1 013265' CPL: BLOCK 1 013266' CTLSAV: BLOCK 1 013267' CTLS1: BLOCK 1 013270' EXTPNT: BLOCK 1 013271' INTENT: BLOCK 1 013272' INREP: BLOCK 1 013273' INDEF: BLOCK 1 013274' INTXT: BLOCK 1 013275' INCND: BLOCK 1 013276' CALNAM: BLOCK 1 013277' CALPG: BLOCK 1 013300' CALSEQ: BLOCK 1 013301' DEFPG: BLOCK 1 013302' DEFSEQ: BLOCK 1 013303' LITPG: BLOCK 1 013304' LITSEQ: BLOCK 1 013305' REPPG: BLOCK 1 013306' REPSEQ: BLOCK 1 013307' TXTPG: BLOCK 1 013310' TXTSEQ: BLOCK 1 013311' CNDPG: BLOCK 1 013312' CNDSEQ: BLOCK 1 013313' IRPCNT: BLOCK 1 013314' IRPARG: BLOCK 1 013315' IRPARP: BLOCK 1 013316' IRPCF: BLOCK 1 013317' IRPPOI: BLOCK 1 013320' IRPSW: BLOCK 1 013321' LITLVL: BLOCK 1 013322' LITLBL: BLOCK 1 ;NAME OF LABEL DEFINED INSIDE A LITERAL 013323' ASGBLK: BLOCK 1 013324' LOCBLK: BLOCK 1 013325' LOCA: BLOCK 1 013326' LOCO: BLOCK 1 013327' RELLOC: BLOCK 1 013330' ABSLOC: BLOCK 1 013331' LPP: BLOCK 1 013332' MODA: BLOCK 1 013333' MODLOC: BLOCK 1 013334' MODO: BLOCK 1 013335' IFN CCLSW, 013337' OUTSQ: BLOCK 2 013341' PAGEN.: BLOCK 1 013342' PPTEMP: BLOCK 1 013343' PPTMP1: BLOCK 1 MACRO V.10 PAGE 171-1 STORAGE CELLS 013344' PPTMP2: BLOCK 1 013345' REPCNT: BLOCK 1 013346' REPEXP: BLOCK 1 013347' REPPNT: BLOCK 1 013350' RPOLVL: BLOCK 1 013351' R1BCNT: BLOCK 1 013352' R1BCHK: BLOCK 1 013353' R1BBLK: BLOCK .R1B 013375' R1BLOC: BLOCK 1 013376' RIMLOC: BLOCK 1 013377' TAGINC: BLOCK 1 013400' VECREL: BLOCK 1 013401' VECTOR: BLOCK 1 013402' .TEMP: BLOCK 1 ;TEMPORARY STORAGE IFN UNIVR, 013403' SQFLG: BLOCK 1 013404' ARGF: BLOCK 1 013405' MACENL: BLOCK 1 013406' MACLVL: BLOCK 1 013407' MACPNT: BLOCK 1 013410' WWRXX: BLOCK 1 013411' RCOUNT: BLOCK 1 ;COUNT OF WORDS STILL TO READ IN LEAF 013412' WCOUNT: BLOCK 1 ;COUNT OF WORDS STILL FREE IN LEAF 013413' PASS2Z: ;ONLY CLEAR TO HERE ON PRGEND 013413' LSTSYM: BLOCK 1 013414' PAGENO: BLOCK 1 013415' SEQNO2: BLOCK 1 013416' PASS2X: MACRO V.10 PAGE 172 MULTI-ASSEMBLY STORAGE CELLS SUBTTL MULTI-ASSEMBLY STORAGE CELLS 013416' LSTPGN: BLOCK 1 013417' HDAS: BLOCK 1 013420' IFN CCLSW, 013433' MACSIZ: BLOCK 1 ;INITIAL SIZE OF LOW SEG IFN UNIVR,< UNISIZ: BLOCK 1 ;TOP OF BUFFERS AND STACKS UNITOP: BLOCK 1 ;TOP OF UNIVERSAL SYMBOL TABLE UNIVNO: BLOCK 1 ;NUMBER OF UNIVERSALS SEEN UNITBL: BLOCK .UNIV ;TABLE OF UNIVERSAL NAMES UNIPTR: BLOCK .UNIV ;TABLE OF SYMBOL POINTERS UNISHX: BLOCK .UNIV ;TABLE OF SRCHX POINTERS> 013434' VAR ;CLEAR VARIABLES 013434' JOBFFI: BLOCK 203*NUMBUF+1 ;INPUT BUFFER PLUS ONE 006370' END BEG 014043' 554140 012664' 014044' 302140 634166 014045' 254000 007707' 014046' 205140 445560 014047' 254000 000027' 014050' 565764 004556 014051' 654600 435762 014052' 450046 576200 014053' 545156 534147 014054' 454000 000000 014055' 561440 014050' 014056' 254000 007714' 014057' 272330 144634 014060' 360300 000005 014061' 250407 001447' 014062' 777777 777777 014063' 260740 006335' 014064' 261740 000007 014065' 260740 000354' 014066' 262740 000007 014067' 306300 000004 014070' 254000 000750' 014071' 306340 000074 014072' 254000 000750' 014073' 336000 000000 014074' 664600 200000 014075' 476000 000011 014076' 254000 000750' 014077' 204500 000000 014100' 000000 000000 014101' 200000 000000 MACRO V.10 PAGE 172-1 MULTI-ASSEMBLY STORAGE CELLS 014102' 660600 002000 014103' 321640 001170' 014104' 254000 001154' 014105' 060300 000003 014106' 350700 013004' 014107' 202400 012537' 014110' 201400 012537' 014111' 260740 003001' 014112' 201340 000040 014113' 260740 010325' 014114' 200400 013414' 014115' 254000 001723' 014116' 502030 742500 014117' 000000 000000 014120' 202400 013416' 014121' 201400 014116' 014122' 260740 002774' 014123' 200340 013414' 014124' 260740 002765' 014125' 260740 010316' 014126' 254000 001724' 014127' 202433 040610 014130' 462452 553234 014131' 476410 546400 014132' 440700 014127' 014133' 440700 013004' 014134' 350700 012543' 014135' 655641 636351 014136' 475645 441400 014137' 444546 515645 014140' 440041 630051 014141' 460045 706445 014142' 625641 540040 014143' 516631 541236 014144' 461012 440604 014145' 462120 000000 014146' 202200 012730' 014147' 254000 002300' 014150' 440700 013230' 014151' 440200 012703' 014152' 777761 003110' 014153' 316000 013262' 014154' 552100 013262' 014155' 254000 003135' 014156' 000000 007666' 014157' 502451 743644 014160' 406321 100000 014161' 201400 014157' 014162' 260740 002774' 014163' 201400 013230' 014164' 260740 002774' 014165' 254000 010316' 014166' 606257 476241 MACRO V.10 PAGE 172-2 MULTI-ASSEMBLY STORAGE CELLS 014167' 550042 624541 014170' 530051 630040 014171' 524400 013263' 014172' 254000 003220' 014173' 414263 546564 014174' 450042 624541 014175' 530051 630040 014176' 530043 576245 014177' 006563 454440 014200' 013262' 013263' 014201' 260740 010470' 014202' 661240 002000 014203' 254000 003606' 014204' 321640 003743' 014205' 627240 002000 014206' 254000 003743' 014207' 406244 000000 014210' 254000 003726' 014211' 550000 013326' 014212' 250000 013330' 014213' 254000 004125' 014214' 550000 013326' 014215' 250000 013327' 014216' 254000 004125' 014217' 313300 013262' 014220' 202300 013262' 014221' 263740 000000 014222' 440700 013335' 014223' 064240 000000 014224' 620600 040000 014225' 263740 000000 014226' 250017 777777 014227' 603000 777000 014230' 660600 200000 014231' 250017 777777 014232' 254000 004446' 014233' 300617 000000 014234' 336000 000000 014235' 660600 200000 014236' 364000 002665' 014237' 300600 000005 014240' 140601 001447' 014241' 000001 000000 014242' 606247 455644 014243' 004562 625762 014244' 004000 000000 014245' 261140 000005 014246' 344340 005310' 014247' 336000 013403' 014250' 254000 005326' 014251' 261740 000007 014252' 201340 000047 014253' 260740 006262' MACRO V.10 PAGE 172-3 MULTI-ASSEMBLY STORAGE CELLS 014254' 262740 000007 014255' 402000 013403' 014256' 254000 005326' 014257' 067760 400000 014260' 003617 074362 014261' 003617 074360 014262' 271406 030140 014263' 456262 576200 014264' 675051 544500 014265' 457060 415644 014266' 515647 400000 014267' 410300 000137 014270' 220600 000137 014271' 301100 000137 014272' 260700 012574' 014273' 012600' 012601' 014274' 440700 012601' 014275' 456262 576200 014276' 624541 445156 014277' 470043 575555 014300' 415644 004651 014301' 544540 000000 014302' 561440 014275' 014303' 254000 007714' 014304' 056200 000000 014305' 263740 000000 014306' 061200 020000 014307' 254000 014302' 014310' 260740 000066' 014311' 047000 000012 014312' 350000 013423' 014313' 211440 000005 014314' 272440 013424' 014315' 254000 006546' 014316' 435755 554156 014317' 440054 515645 014320' 006457 570054 014321' 575647 400000 014322' 326140 006615' 014323' 205140 434354 014324' 254000 006605' 014325' 436245 460000 014326' 013426' 013266' 014327' 466030 351236 014330' 351000 000000 014331' 047140 000004 014332' 603140 000004 014333' 254000 007125' 014334' 332100 012673' 014335' 202100 012663' 014336' 254000 007125' 014337' 047140 000004 014340' 603140 000004 MACRO V.10 PAGE 172-4 MULTI-ASSEMBLY STORAGE CELLS 014341' 254000 007133' 014342' 332100 012673' 014343' 202100 012667' 014344' 254000 007133' 014345' 455644 005746 014346' 006041 636300 014347' 214000 000000 014350' 545741 440064 014351' 504500 564570 014352' 640046 515445 014353' 400000 000000 014354' 306340 000032 014355' 047000 000012 014356' 254000 007227' 014357' 435755 554156 014360' 440045 626257 014361' 624000 000000 014362' 440400 007611' 014363' 270407 007570' 014364' 375657 004556 014365' 440063 644164 014366' 455545 566400 014367' 455643 576556 014370' 644562 454400 014371' 575600 515660 014372' 656400 465154 014373' 454000 000000 014374' 515600 545164 014375' 456241 544000 014376' 014374' 013303' 014377' 515600 444546 014400' 515645 400000 014401' 014377' 013301' 014402' 515600 644570 014403' 644000 000000 014404' 014402' 013307' 014405' 515600 435756 014406' 445164 515756 014407' 415400 576200 014410' 624560 454164 014411' 400000 000000 014412' 014405' 013305' 014413' 515600 435756 014414' 445164 515756 014415' 415440 000000 014416' 014413' 013311' 014417' 515600 554143 014420' 625700 434154 014421' 544000 000000 014422' 014417' 013277' 014423' 014353' 013414' 014424' 565764 004166 014425' 415154 414254 MACRO V.10 PAGE 172-5 MULTI-ASSEMBLY STORAGE CELLS 014426' 454000 000000 014427' 000001 014424' 014430' 102011 005154 014431' 544547 415400 014432' 465154 450056 014433' 415545 400000 014434' 102011 004651 014435' 544500 674163 014436' 005657 640046 014437' 576556 444000 014440' 102111 005657 014441' 004451 624543 014442' 645762 710046 014443' 576200 606257 014444' 524543 641560 014445' 625747 624155 014446' 554562 005665 014447' 554245 624000 014450' 102211 006062 014451' 576445 436451 014452' 575600 464151 014453' 546562 454000 014454' 102311 004651 014455' 544500 674163 014456' 004245 515647 014457' 005557 445146 014460' 514544 400000 014461' 102411 006245 014462' 564155 450046 014463' 515445 005641 014464' 554500 415462 014465' 454144 710045 014466' 705163 646340 014467' 102511 005154 014470' 544547 415400 014471' 634561 654556 014472' 434500 574600 014473' 656557 634000 014474' 102611 004241 014475' 440065 464400 014476' 576200 424144 014477' 006251 424000 014500' 102711 005657 014501' 640041 006341 014502' 660046 515445 014503' 400000 000000 014504' 102120 110056 014505' 576400 455657 014506' 654750 004357 014507' 624540 000000 014510' 102121 110044 014511' 456651 434500 014512' 565764 004166 MACRO V.10 PAGE 172-6 MULTI-ASSEMBLY STORAGE CELLS 014513' 415154 414254 014514' 454000 000000 014515' 102122 110056 014516' 570063 654350 014517' 004445 665143 014520' 454000 000000 014521' 102123 110056 014522' 576400 646757 014523' 006245 545743 014524' 006245 471600 014525' 434160 414251 014526' 545164 714000 014527' 102124 110056 014530' 570062 575755 014531' 005762 006165 014532' 576441 004570 014533' 434545 444544 014534' 400000 000000 014535' 102125 110067 014536' 625164 450054 014537' 574353 004562 014540' 625762 400000 014541' 102126 110056 014542' 576400 455657 014543' 654750 005557 014544' 565164 576200 014545' 644142 544500 014546' 636041 434540 014547' 102127 110060 014550' 416264 514154 014551' 004154 545743 014552' 416451 575600 014553' 575654 714000 014554' 102220 110042 014555' 545743 530056 014556' 576400 466245 014557' 450057 560041 014560' 545457 434164 014561' 515756 400000 014562' 102221 110043 014563' 415607 640063 014564' 656045 626345 014565' 444500 104556 014566' 644562 110041 014567' 560045 705163 014570' 645156 470044 014571' 516245 436457 014572' 627140 000000 014573' 102222 110043 014574' 415607 640044 014575' 455445 644500 014576' 106245 564155 014577' 451100 410056 MACRO V.10 PAGE 172-7 MULTI-ASSEMBLY STORAGE CELLS 014600' 575615 455560 014601' 647100 445162 014602' 454364 576271 014603' 400000 000000 014604' 102223 110063 014605' 464400 565764 014606' 004657 655644 014607' 400000 000000 014610' 102224 110063 014611' 454162 435000 014612' 545163 640045 014613' 556064 714000 014614' 102225 110063 014615' 464400 564563 014616' 644544 006457 014617' 570044 454560 014620' 547140 000000 014621' 102226 110056 014622' 571543 624541 014623' 644500 575600 014624' 465762 006360 014625' 454351 465145 014626' 440060 416450 014627' 400000 000000 014630' 103711 005457 014631' 575365 601400 014632' 455664 456214 014633' 005762 006245 014634' 564155 450045 014635' 626257 624000 014636' 160000 004000 014637' 322140 010003' 014640' 242140 777772 014641' 434140 014636' 014642' 254000 010005' 014643' 515663 654646 014644' 514351 455664 014645' 004357 624540 014646' 604460 005766 014647' 456246 545767 014650' 140064 627100 014651' 176040 000000 014652' 575600 604147 014653' 454000 000000 014654' 545156 454000 014655' 000001 000001 014656' 576564 606564 014657' 006762 516445 014660' 155457 435300 014661' 456262 576200 014662' 444566 514345 014663' 400000 000000 014664' 576564 606564 MACRO V.10 PAGE 172-8 MULTI-ASSEMBLY STORAGE CELLS 014665' 004441 644100 014666' 456262 576200 014667' 444566 514345 014670' 400000 000000 014671' 576564 606564 014672' 004350 454353 014673' 636555 005762 014674' 006041 625164 014675' 710045 626257 014676' 620044 456651 014677' 434540 000000 014700' 576564 606564 014701' 006165 576441 014702' 004570 434545 014703' 444544 005756 014704' 004445 665143 014705' 454000 000000 014706' 576564 606564 014707' 004254 574353 014710' 006457 570054 014711' 416247 450044 014712' 456651 434540 014713' 201004 020101 014714' 005156 606564 014715' 006050 716351 014716' 434154 004556 014717' 440057 460064 014720' 416045 004445 014721' 665143 454000 014722' 555756 516457 014723' 620044 456445 014724' 436445 440063 014725' 574664 674162 014726' 450051 566065 014727' 640045 626257 014730' 620044 456651 014731' 434540 000000 014732' 515660 656400 014733' 444164 410045 014734' 626257 620044 014735' 456651 434540 014736' 515660 656400 014737' 435045 435363 014740' 655500 576200 014741' 604162 516471 014742' 004562 625762 014743' 004445 665143 014744' 454000 000000 014745' 515660 656400 014746' 425457 435300 014747' 645757 005441 014750' 624745 004445 014751' 665143 454000 MACRO V.10 PAGE 172-9 MULTI-ASSEMBLY STORAGE CELLS NO ERRORS DETECTED PROGRAM BREAK IS 014752 12K CORE USED MACRO V.10 PAGE 173 SYMBOL TABLE M 002115 A 000000 SPD ABSHI 013262' ABSLOC 013330' AC0 000000 SPD AC1 000001 AC2 000002 ACDEL 000004 SPD ACDELX 012677' ACDEV 000001 SPD ACDEVX 013264' ACEXT 000003 SPD ACFILE 000002 SPD ACPNTR 000005 SPD ACPPN 000004 SPD ADDF 100000 SPD AL 000001 SPD ANGLB 000653' ANGLB1 000664' ANGLB2 000665' APRENB 047000 000016 ARG 000005 ARGF 013404' ARPGSW 100000 SPD ASC10 004516' ASC20 004534' ASC30 004540' ASC50 004551' ASC55 004550' ASC60 004553' ASCII0 004515' ASGBLK 013323' ASSEM1 000104' ASSEM2 000115' ASSEMB 000077' ASSIG1 004037' ASSIG2 004065' ASSIG3 004073' ASSIG5 004047' ASSIG6 004053' ASSIG7 004027' ASSIGN 004023' ATOM 000325' ATOM1 000327' B 000014 SPD BEG 006370' BIN 000001 SPD BINBUF 012655' BINDEV 012550' BINDIR 012667' BININI 012547' BINSE2 006657' BINSET 006620' MACRO V.10 PAGE 173-1 SYMBOL TABLE BLKTYP 012677' BLOCK0 003326' BLOCK1 003333' BLOCK2 003335' BOUT 002434' BOUT20 002454' BOUT30 002470' BOUT3I 002511' BOUT40 002530' BOUT50 002555' BOUT60 002575' BOUT70 002564' BOUT80 002577' BYPAS1 004452' BYPAS2 004453' BYPASS 004452' BYTAB 007611' BYTE0 004631' BYTE1 004637' BYTE2 004646' BYTE3 004655' C 000007 CALLM 005511' CALNAM 013276' CALPG 013277' CALSEQ 013300' CC 741000 000000 CC 000000 CCLSW 000001 SPD CELL 000354' CELL1 000361' CELLSF 000353' CHAR 000002 SPD CHARAC 001406' CHARAX 001434' CHARL 001436' CHARL1 001444' CLSC3 012274' CLSCR1 012307' CLSCR2 012276' CLSCRF 012274' CNDPG 013311' CNDSEQ 013312' COMSW 013402' CONBIT 020000 SPD CORE 047000 000011 COUT 002640' COUTD 002645' COUTD2 002652' COUTDB 012704' COUTI 002657' COUTP 012702' COUTRB 012703' MACRO V.10 PAGE 173-2 SYMBOL TABLE COUTX 012700' COUTY 012701' CPEEK 005371' CPEEK1 005400' CPL 013265' CPOPJ 003360' CPOPJ1 003357' CR 000015 SPD CREF 012221' CREF2 012251' CREF3 012241' CREFSW 002000 SPD CRFHD1 012272' CRFHDR 012264' CRLF 007765' CRPGSW 001000 SPD CS 000010 CSTAT 001447' CTIBUF 013425' CTL 000000 SPD CTL2 000004 SPD CTLBLK 013422' CTLBUF 012601' CTLS1 013267' CTLSAV 013266' CTLSET 006457' CTLSIZ 000310 SPD CTOBUF 013430' CV 000000 SPD DATE 047000 000014 DATOUT 010440' DBUF 012566' DCFSW 000040 SPD DDTOUT 047000 000003 DECERR 006364' DEF02 005224' DEF10 005241' DEF12 005251' DEF20 005254' DEF24 005267' DEF25 005317' DEF26 005310' DEF30 005326' DEF31 005327' DEF32 005330' DEF33 005333' DEF35 005363' DEF36 005355' DEF40 005406' DEF42 005410' DEF44 005427' DEF46 005431' DEF48 005446' MACRO V.10 PAGE 173-3 SYMBOL TABLE DEF50 005451' DEF51 005456' DEF70 005462' DEF80 005467' DEF81 005474' DEFCRS 000040 SPD DEFIN0 005211' DEFPG 013301' DEFSEQ 013302' DELETE 000066' DEPHA0 004015' DEVBUF 013250' DEVCHR 047000 000004 DEVICE 007267' DEVNAM 007274' DIRBIT 000004 SPD DISBIT 002000 SPD DMP 000016 SPD DMPBIN 010131' DMPLST 010140' DNC 002765' DP1 010063' DSEND 006211' DSKBIT 200000 SPD DSTOW 002712' DTAB 010454' DTABIT 000100 SPD EINIT 007700' END0 003037' ENDP2 003127' ENDP2A 003173' ENDP2B 003220' ENDP2D 003201' ENDP2Q 003137' ENDP2W 003135' ENTERS 013261' ENTF 000200 SPD ENTRDN 007136' EOL 000033 SPD EOT 007176' EOUT 002121' EOUT1 002124' EOUT2 002132' EOUT3 002141' EOUT4 002151' ER 000014 SPD ERRA 040000 SPD ERRAX 003311' ERRBIT 740000 SPD ERRCB 007704' ERRCF 007707' ERRCL 007702' ERRCM 007321' MACRO V.10 PAGE 173-4 SYMBOL TABLE ERRCNT 012726' ERRD 020000 SPD ERRE 000040 SPD ERRFIN 007714' ERRL 010000 SPD ERRLST 010146' ERRM 000020 SPD ERRMS1 007666' ERRMS2 007671' ERRMS3 007674' ERRN 000400 SPD ERRNE 007633' ERRNE0 007634' ERRNE1 007644' ERRNE2 007656' ERRNE3 007663' ERRO 000200 SPD ERRORS 777760 SPD ERRP 000100 SPD ERRQ 200000 SPD ERRQSW 000010 SPD ERRR 004000 SPD ERRTYP 007711' ERRU 002000 SPD ERRV 001000 SPD ERRX 100000 SPD EVADR 004403' EVAL10 003745' EVALC3 001064' EVALCM 001057' EVALEX 001070' EVALHA 001056' EVALXQ 003757' EVATOM 001073' EVERRU 001150' EVERRZ 001147' EVGETD 001170' EVMAC 001107' EVNUM 001175' EVOP 001122' EVOPD 001132' EVOPS 001126' EVOPX 001145' EVPUSH 001205' EVTSTR 001164' EVTSTS 001152' EVXCT 001212' EVXCT1 001227' EXIT 047000 000012 EXPRES 004465' EXTER0 003715' EXTER1 003717' EXTER2 003726' MACRO V.10 PAGE 173-5 SYMBOL TABLE EXTER3 003743' EXTER4 003741' EXTF 001000 SPD EXTMP 013420' EXTPNT 013270' FF 000014 SPD FINIS 007014' FLDSW 400000 SPD FR 000015 FREE 012727' FSNSW 100000 SPD FTDISK 000001 SPD GCHAR 006255' GCHARQ 006254' GETCHR 001354' GETCS 001375' GETCS1 001377' GETCS2 001374' GETDE1 000434' GETDE2 000444' GETDE3 000436' GETDEL 000433' GETDS 006151' GETDS1 006203' GETE 006404' GETED 006410' GETIOC 007227' GETIT 005064' GETSE1 006761' GETSE2 006774' GETSET 006740' GETSY1 001046' GETSY2 001047' GETSY3 001050' GETSYM 001034' GETTOP 003444' GETU 006416' GETV 006424' GOSET 006540' GOSET1 006546' GOSET2 006570' GOTEND 007165' GTSTOW 002731' HDAS 013417' HIGH 013263' HIGHQ 004146' HIGHQ1 004146' HISEG0 003360' HLPMES 007370' HOUT 002626' HT 000011 SPD IB 000013 SPD IBUF 012660' MACRO V.10 PAGE 173-6 SYMBOL TABLE IF 003512' IFB0 003543' IFB1 003544' IFB2 003564' IFB3 003563' IFBLK 012730' IFBLKA 012754' IFCL 003630' IFCLR 003647' IFCLR1 003656' IFDEF0 003600' IFEX1 003526' IFEX2 003664' IFEXIT 003525' IFIDN0 003610' IFPASS 003540' IFPOP 003520' IFSET 003521' IFXCT 003522' IIISW 000000 SPD INCND 013275' INDEF 013273' INDEV 012564' INDEVI 012563' INDIR 012673' INDSW 020000 SPD INHERE 000017' INREP 013272' INSERQ 012364' INSERT 012366' INSERZ 012365' INSET 007027' INSET1 007047' INSET2 007064' INSET3 007065' INSET4 007077' INSETI 007143' INSRT1 012374' INSRT2 012377' INSRT3 012405' INSRT4 012424' INSRT5 012434' INSRT6 012430' INTENT 013271' INTER0 003677' INTER1 003700' INTER3 003710' INTF 000400 SPD INTXT 013274' INZ 003267' IO 000014 IOBKTL 040000 SPD IOCREF 000400 SPD MACRO V.10 PAGE 173-7 SYMBOL TABLE 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 013257' IOP 004352' IOPAGE 000100 SPD IOPALL 004000 SPD IOPROG 040000 SPD IORPTC 000004 SPD IORSET 003322' IOSALL 000001 SPD IOSCR 000001 SPD IOSET 003315' IOTLSN 000002 SPD IOWD0 004617' IRP0 005777' IRP10 006001' IRP20 006041' IRPARG 013314' IRPARP 013315' IRPCF 013316' IRPCNT 013313' IRPEND 006131' IRPPOI 013317' IRPPOP 006135' IRPSE1 006074' IRPSE2 006103' IRPSE3 006113' IRPSE4 006116' IRPSET 006060' IRPSW 013320' JOB41 000057' EXT JOBAPR 006741' EXT JOBDDT 000000 EXT JOBERR 007724' EXT JOBFF 007067' EXT JOBFFI 013434' JOBREL 010022' EXT JOBS41 000122 INT JOBSA 006611' EXT JOBSYM 000000 EXT JOBVER 000137 SPD JUMP1 321640 000000 JUMP2 325640 000000 JUMPAD 321600 000000 JUMPCM 321400 000000 JUMPNC 325400 000000 JUMPOC 325600 000000 MACRO V.10 PAGE 173-8 SYMBOL TABLE LABEL 000244' LABEL0 000257' LABEL1 000272' LABEL2 000301' LABEL3 000304' LABEL4 000310' LABEL5 000312' LABEL6 000276' LABEL7 000314' LADR 013000' LBUF 013004' LBUFP 013003' LELF 000002 SPD LENGTH 000004 LETTE1 000401' LETTE2 000405' LETTE3 000407' LETTE4 000426' LETTER 000400' LF 000012 SPD LIMBO 013002' LIT0 003365' LIT1 003367' LIT20 003377' LIT20A 003407' LIT21 003410' LIT22 003422' LIT24 003433' LITAB 013031' LITABX 013032' LITCNT 013036' LITF 200000 SPD LITHD 013034' LITHDX 013035' LITI 003437' LITLBL 013322' LITLVL 013321' LITNUM 013037' LITPG 013303' LITSEQ 013304' LLUKP1 002272' LLUKP2 002267' LLUKP3 002301' LLUKP4 002311' LLUKP6 002306' LLUKP7 002300' LLUKUP 002263' LNSSW 000000 SPD LOADSW 000020 SPD LOC0 004114' LOC01 004125' LOC10 004133' LOCA 013325' MACRO V.10 PAGE 173-9 SYMBOL TABLE LOCBLK 013324' LOCO 013326' LOOKL 003030' LOOKUP 003025' LOOKX 013040' LOUT1 002166' LOUT10 002211' LOUT11 002252' LOUT15 002222' LOUT30 002253' LOUT60 002260' LOUT64 002262' LPP 013331' LPTBIT 040000 SPD LPTSW 000002 SPD LPTWID 000170 SPD LST 000003 SPD LSTBUF 012652' LSTDEV 012553' LSTDIR 012663' LSTFIL 012537' LSTINI 012552' LSTPGN 013416' LSTSE1 006666' LSTSE2 006700' LSTSE3 006734' LSTSE4 007125' LSTSE5 007127' LSTSET 006665' LSTSYM 013413' M 006436' MAC10 005541' MAC14 005554' MAC14A 005563' MAC15 005572' MAC16 005573' MAC20 005602' MAC21 005604' MAC21A 005606' MAC21B 005627' MAC21C 005626' MAC21D 005615' MAC21E 005624' MAC22 005636' MAC23 005651' MAC24 005663' MAC25 005664' MAC26 005642' MAC27 005647' MAC30 005677' MAC31 005700' MAC40 005707' MAC41 005720' MACRO V.10 PAGE 173-10 SYMBOL TABLE MAC42 005726' MAC44 005727' MACEN0 005740' MACEN1 005755' MACEN2 005756' MACEN3 005773' MACEND 005741' MACENL 013405' MACF 020000 SPD MACLVL 013406' MACPNT 013407' MACSIZ 013433' MDFF 000020 SPD MFLSW 000010 SPD MODA 013332' MODLOC 013333' MODO 013334' MP 000016 MREAD 006300' MREADC 006333' MREADI 006317' MREADS 006322' MRP 000013 MSRCH 012173' MSRCH2 012202' MSTIME 047000 000023 MTABIT 000020 SPD MTAPSW 000004 SPD MWLFLG 200000 SPD MWP 000012 N1 000765 N2 000033 NAME 007272' NAME1 007215' NAME2 007216' NAME3 007224' NCOLLS 013001' NCOLS 000001 SPD NEGSW 000200 SPD NEXT 013041' NOERW 003165' NOOUTF 100000 SPD NOUT 002602' NOUT1 002605' NOUT2 002624' NOUT3 002621' NUM 000705' NUM1 000710' NUM10 000720' NUM30 000732' NUM31 000733' NUM32 000736' NUM40 000741' MACRO V.10 PAGE 173-11 SYMBOL TABLE NUM50 000765' NUM52 000773' NUM60 001004' NUM62 001011' NUMBUF 000002 SPD NUMDF 000704' NUMDN 001026' NUMER1 000431' NUMER2 000432' NUMSW 020000 SPD NUMUP 001020' NUNAC 000054' NUNAOS 000006 NUNBLT 000004 NUNCOM 000000' NUNDEV 012556' NUNDIR 012663' NUNERM 000006' NUNERR 000004' NUNGO2 000002' NUNGO3 000011' NUNGO4 000000 NUNINI 012555' NUNLAC 000012 NUNPNT 000010 NUNSET 000017' NUNTOP 000011 OCT0 004466' OCT1 004470' OFFML 004155' OFFORM 003360' OFFSYM 004157' ONC 002747' ONC1 002751' ONC2 002763' ONERW 003162' ONERW1 003163' ONFORM 003360' ONML 004154' OP 004354' OP1A 004373' OP1B 004363' OP1COD 011515' OP1END 011514' OP1TAB 012020' OP1TOP 010526' OP2 004374' OP2A 004442' OP2A1 004455' OP2A2 004463' OP2TAB 012064' OP3 004375' OPD 004350' MACRO V.10 PAGE 173-12 SYMBOL TABLE OPD1 004346' OPDEF0 003764' OPDF 010000 SPD OPHSH 000000 SPD OPT1A 010473' OPT1B 010500' OPT1D 010505' OPT1F 010513' OPT1G 010516' OPTSCH 010470' OPTTAB 010523' OTBUF 013335' OTOD 010432' OUTAB2 010306' OUTAS0 002774' OUTASC 002775' OUTBIN 010122' OUTC 010377' OUTCR 010316' OUTFF 010417' OUTFF1 010410' OUTFF2 010420' OUTIM 001737' OUTIM1 001736' OUTIM2 001752' OUTIML 002011' OUTL 010325' OUTL01 001565' OUTL02 001567' OUTL03 001566' OUTL1 010364' OUTL20 001577' OUTL22 001621' OUTL23 001625' OUTL24 001630' OUTL25 001636' OUTL26 001642' OUTL27 001646' OUTL30 001665' OUTL32 001675' OUTLE2 001727' OUTLE4 001733' OUTLE8 001723' OUTLER 001712' OUTLI 001765' OUTLI1 001773' OUTLI2 001774' OUTLI3 001772' OUTLIN 001547' OUTLST 010403' OUTML1 002036' OUTPL 001650' OUTSET 003017' MACRO V.10 PAGE 173-13 SYMBOL TABLE OUTSIX 003001' OUTSQ 013337' OUTSTR 000000 OUTSW 013042' OUTSY1 003011' OUTSYM 003010' OUTTAB 010307' P1 400000 SPD PAGE0 010407' PAGEN. 013341' PAGENO 013414' PASS1I 012600' PASS20 003066' PASS2I 013262' PASS2X 013416' PASS2Z 013413' PDP 013043' PDPERR 010037' PEEK 006335' PEEKM 006341' PERIOD 000671' PERNUM 000677' PHASE0 004017' PJOB 047000 000030 PN1 004244' PN2 004252' PNCHSW 001000 SPD PNTF 004000 SPD POINT0 004561' POINT2 004574' POPOUT 000446' PP 000017 PPN 013402' PPTEMP 013342' PPTMP1 013343' PPTMP2 013344' PR 000002 SPD PRGPTR 013260' PRINT 010310' PRMEND 012020' PRMTBL 011720' PRNAM 004235' PRNTX0 003342' PRNTX2 003345' PRNTX4 003350' PRNUM 010041' PROGN1 007323' PROGN2 007324' PROGN3 007325' PROGNP 007323' PS 000003 SPD PSEND0 004712' PSEND1 004721' MACRO V.10 PAGE 173-14 SYMBOL TABLE PSEND2 004724' PSEND3 004730' PSEND4 004734' PSEND5 005016' PSEND6 005010' PSENDX 005015' PSNDER 005066' PTPBIN 010123' PTR 000104 SPD PURGE0 004317' PURGE2 004330' PURGE3 004342' PURGE4 004343' PURGE5 004344' PV 000001 SPD QEXT 003752' QSRCH 012203' QUAL 000514' QUAL2 000531' QUAL2A 000535' QUAL8 000530' QUALL 000541' QUOTE 000456' QUOTE0 000452' QUOTE1 000473' QUOTE2 000472' QUOTES 000447' R1BBLK 013353' R1BCHK 013352' R1BCNT 013351' R1BDM1 010175' R1BDMP 010165' R1BI 010203' R1BLDR 003110' R1BLOC 013375' R1BSW 004000 SPD RADIX0 003306' RADX50 004667' RADXSW 040000 SPD RC 000011 SPD RCOUNT 013411' RCPNTR 003303' READ 010221' READ0 010220' READ1 010223' READ1A 010243' READ2 010254' READ3 010263' REC2 007155' RECCNT 013044' REFDEC 006352' REFINC 006347' RELBL1 000650' MACRO V.10 PAGE 173-15 SYMBOL TABLE RELBLE 000632' RELF 000001 SPD RELLOC 013327' RELOC0 004140' REMAR0 003361' REMOV1 012446' REMOVE 012445' RENTSW 000000 SPD REPCNT 013345' REPEA0 005070' REPEA1 005072' REPEA2 005074' REPEA4 005105' REPEA7 005132' REPEA8 005134' REPEND 005136' REPEXP 013346' REPO 005171' REPO1 005201' REPPG 013305' REPPNT 013347' REPSEQ 013306' REPZ 005152' REPZ1 005160' REPZ2 005166' RESET 047000 000000 RIM0 010072' RIM1SW 000100 SPD RIMFIN 003256' RIMLOC 013376' RIMSW 000400 SPD ROUT 010076' ROUT1 010113' ROUT6 010207' RP 012600' RPGDEV 012561' RPGINI 012560' RPGLOS 006615' RPGLUP 006510' RPGS1 006577' RPGS2 006523' RPGS2A 006524' RPGSET 006501' RPOLVL 013350' RSTRXS 007205' RSW0 001410' RSW1 001412' RSW2 001414' RSW3 001423' RUN 047000 000035 RX 000015 SPD SAVBLK 013045' SAVERC 013056' MACRO V.10 PAGE 173-16 SYMBOL TABLE SAVEXS 007211' SAVFF 013421' SBUF 013057' SDEL 000003 SEARCH 012313' SEQNO 012544' SEQNO2 013415' SETDDT 047000 000002 SIXB10 004475' SIXB20 004477' SKELI 006220' SKELI1 006217' SKELW 006231' SKELW1 006243' SKELWL 006233' SKPINC 000000 SLASH 007226' SOUT 002156' SOUT1 002314' SOUT10 002336' SOUT15 002345' SOUT20 002420' SOUT50 002404' SOUT60 002417' SOUTC 002427' SPTR 000010 SPD SQB1 000620' SQB2 000621' SQB3 000562' SQB4 000574' SQB4A 000606' SQB5 000561' SQB6 000613' SQBRK 000550' SQFLG 013403' SQOZ1 004701' SQOZE 004677' SQUOT0 000474' SQUOTE 000500' SRCH1 012315' SRCH2 012317' SRCH3 012325' SRCH4 012335' SRCH5 012336' SRCH6 012352' SRCH7 012340' SRCHI 012455' SRCHKO 012362' SRCHNO 012361' SRCHOK 012363' SRCHX 013077' SSRCH 012210' SSRCH1 012213' MACRO V.10 PAGE 173-17 SYMBOL TABLE SSRCH2 012217' SSRCH3 012220' STCODE 013106' STMN2A 000146' STMN8A 000222' STMN8B 000210' STMN8C 000212' STMN8D 000207' STMNT 000125' STMNT1 000127' STMNT2 000130' STMNT3 000157' STMNT4 000161' STMNT5 000167' STMNT7 000200' STMNT8 000207' STMNT9 000201' STOL06 001274' STOL08 001301' STOL10 001302' STOL12 001314' STOL14 001326' STOL22 001333' STOL23 001334' STOL24 001335' STOL26 001346' STOLER 001261' STOLIT 001264' STOPI0 006125' STORIT 005061' STOUT 000230' STOUT1 000237' STOUTS 000227' STOW 002665' STOW10 002675' STOW20 002677' STOWI 002717' STOWRC 013156' STOWT 002735' STOWT1 002742' STOWZ 002664' STOWZ1 002664' STPX 013104' STPY 013105' SUBTL 011360' SUBTT0 004220' SUBTT1 004224' SUBTT3 004226' SUBTTX 013100' SUPRBT 000004 SPD SUPRE0 004161' SUPRE1 004166' SUPRS1 004175' MACRO V.10 PAGE 173-18 SYMBOL TABLE SUPRSA 004172' SVSTOW 002723' SVSYM 013101' SW0 007346' SW1 007347' SWITC0 007341' SWITCH 007342' SWTAB 007571' SWTABT 007574' SX 000004 SYMBLK 012730' SYMBOL 013102' SYMF 400000 SPD SYMNUM 011713' SYMTOP 013103' SYN0 004261' SYN1 004265' SYN2 004266' SYN3 004302' SYN4 004313' SYNF 040000 SPD TABI 012543' TABLE 007727' TABLND 007756' TABP 013226' TAG 012541' TAGF 200000 SPD TAGINC 013377' TAPE0 003304' TBUF 013230' TCNT 013227' TERM 007276' TERM1 007303' TIMOU1 010424' TIMOUT 010423' TIO 000006 SPD TIOCLD 020000 SPD TIOLE 002000 SPD TIORW 001000 SPD TITLE0 004207' TMPCOR 047000 000044 TMPSW 010000 SPD TNODE 200000 SPD TSTBIN 010133' TSTLST 010142' TTCLTH 000016 SPD TTCTBL 012155' TTYBIT 000010 SPD TTYERR 007631' TTYIN 007614' TTYSW 000001 SPD TWSEG0 003360' TXTPG 013307' MACRO V.10 PAGE 173-19 SYMBOL TABLE TXTSEQ 013310' TYO 007770' TYPERR 013256' TYPM2 010000' TYPM2A 010005' TYPM3 010006' TYPMS1 007760' TYPMSG 007757' UNDF 002000 SPD UNIVR 000000 SPD UOUT 002065' UOUT1 002075' UOUT10 002113' UOUT12 002103' UOUT13 002107' UOUT2 002102' UOUT30 002117' UPDAT1 012507' UPDAT2 012514' UPDAT3 012505' UPDAT4 012521' UPDAT5 012525' UPDATE 012467' UTPCLR 047000 000013 V 000006 VAR0 003457' VARA 003462' VARB 003467' VARF 000100 SPD VARHD 013027' VARHDX 013030' VBUF 012573' VCUSTO 000000 SPD VECREL 013400' VECTOR 013401' VEDIT 000000 SPD VMACRO 000010 SPD VOUT 002633' VT 000013 SPD VUPDAT 000000 SPD WAIT 072000 000000 WCHAR 006262' WCHAR1 006262' WCHARQ 006262' WCOUNT 013412' WWORD 006266' WWRXE 006272' WWRXX 013410' XADD 001235' XALL0 003314' XCEED 010015' XCEED1 010023' XCEED2 010035' MACRO V.10 PAGE 173-20 SYMBOL TABLE XCEEDS 010014' XDIV 001240' XDIV1 001242' XLRW 001255' XMUL 001244' XMUL1 001247' XPUNG0 004177' XSUB 001232' XTRA 000004 SPD XWD0 004601' XWD10 004613' XWD5 004605' ZA 100000 ZAL 300000 ZL 200000 %DMAC 000006 SPD %DSYM 000002 SPD %MAC 000005 SPD %OP 000003 SPD %SYM 000001 SPD .CPL 000130 SPD .IFBLK 000024 SPD .LEAF 000004 SPD .LPP 000067 SPD .LPTWD 000170 SPD .PDP 000062 SPD .R1B 000022 SPD .SBUF 000120 SPD .STP 000050 SPD .TBUF 000120 SPD .TEMP 013402' .UNIV 000012 SPD EEEEEEEEEEEEEEE DDDDDDDDDDDD DDDDDDDDDDDD TTTTTTTTTTTTTTT EEEEEEEEEEEEEEE DDDDDDDDDDDD DDDDDDDDDDDD TTTTTTTTTTTTTTT EEEEEEEEEEEEEEE DDDDDDDDDDDD DDDDDDDDDDDD TTTTTTTTTTTTTTT EEE DDD DDD DDD DDD TTT EEE DDD DDD DDD DDD TTT EEE DDD DDD DDD DDD TTT EEE DDD DDD DDD DDD TTT EEE DDD DDD DDD DDD TTT EEE DDD DDD DDD DDD TTT EEEEEEEEEEEE DDD DDD DDD DDD TTT EEEEEEEEEEEE DDD DDD DDD DDD TTT EEEEEEEEEEEE DDD DDD DDD DDD TTT EEE DDD DDD DDD DDD TTT EEE DDD DDD DDD DDD TTT EEE DDD DDD DDD DDD TTT EEE DDD DDD DDD DDD TTT EEE DDD DDD DDD DDD TTT EEE DDD DDD DDD DDD TTT EEEEEEEEEEEEEEE DDDDDDDDDDDD DDDDDDDDDDDD TTT EEEEEEEEEEEEEEE DDDDDDDDDDDD DDDDDDDDDDDD TTT EEEEEEEEEEEEEEE DDDDDDDDDDDD DDDDDDDDDDDD 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 11:23:08 File: DSKB1 :EDDT .LST [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:28 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:1949 File will be deleted after printing EDDT V.005A - EXEC MODE VERSION PAGE 1 OP DECODER 000003 00060 EDDT=3 ;THIS CAUSES A RELOCATABLE VERSION OF EXEC DDT WITH THE 00070 ; PAPER TAPE I/O OPTION TO BE ASSEMBLED (AS OPPOSED TO 00080 ; RELOCATABLE AND/OR ABSOLUTE VERSIONS OF USER DDT 00090 ; AND/OR NON-PAPER TAPE I/O EXEC DDT, ALL OF WHICH CAN 00100 ; BE ASSEMBLED FROM THE SAME SOURCE CODE WITH A 00110 ; DIFFERENT DEFINITION OF "EDDT"). EDDT V.005A - EXEC MODE VERSION PAGE 2 OP DECODER 00150 REPEAT 0,< 00160 00170 HOW TO ASSEMBLE DDT 00180 00190 THE SOURCE OF DDT WILL ASSEMBLE INTO SEVERAL DIFFERENT 00200 VERSIONS; THE ASSEMBLE IS CONTROLED BY THE VALUES 00210 ASSIGNED TO THE SYMBOL EDDT. THIS SYMBOL MUST BE 00220 DEFINED AS A SEPARATE FILE PRECEDING THE DDT SOURCE FILE. 00230 THE SYMBOL EDDT IS DECODED IN THE FOLLOWING MANNER: 00240 BIT 35 A ZERO: ASSEMBLE USER MODE DDT 00250 BIT 35 A ONE: ASSEMBLE AN EXECUTIVE MODE DDT 00260 BIT 34 A ZERO: DO NOT ASSEMBLE THE PAPER TAPE 00270 FEATURE INTO THE DDT 00280 BIT 34 A ONE: THIS IS IGNORED FOR USER DDT. 00290 FOR AN EXEC DDT, ASSEMBLE 00300 THE PAPER TAPE FEATURE 00310 BITS 0-17: IF THESE BITS ARE ALL ZERO THE 00320 ASSEMBLY WILL BE RELOCATABLE 00330 IF THEY ARE NON-ZERO, THE ASSEMBLY IS 00340 ABSOLUTE STARTING AT THE VALUE IN BITS 00350 0-17 (THE LEFT HALF) 00360 00370 EXAMPLE: 00380 1.) IF EDDT IS NOT DEFINED BY A PARAMETER ASSIGNMENT, 00390 DDT WILL ASSIGN EDDT=0 AND A USER MODE RELOCATABLE 00400 DDT WILL RESULT. 00410 00420 2.) EDDT=1; A RELOCATABLE EXEC DDT WITHOUT PAPER 00430 TAPE FEATURE WILL RESULT. 00440 00450 3.) EDDT=3; A RELOCATABLE EXEC DDT WITH PAPER 00460 TAPE FEATURE WILL RESULT 00470 00480 4.) EDDT=; AN ABSOLUTE DDT (STARTING 00490 ADRESS 4000) WITHOUT PAPER TAPE FEATURE WILL RESULT 00500 00510 5.) EDDT=; AN ABSOLUTE DDT 00520 (STARTING ADDRESS 4000) WITH ALL THE PAPER TAPE 00530 FEATURES WILL RESULT. 00540 > EDDT V.005A - EXEC MODE VERSION PAGE 3 OP DECODER 00600 IFNDEF EDDT, 00650 DEFINE XP (X.,Y.),< 00660 IF2,> 000000 00690 NSYMS=0 ;INITIAL SYMBOL COUNTER 000074 00710 LOC 74 000074 003610' 000000' 00720 XWD DDTEND,DDT 000000' 00730 RELOC 0 00750 IFN EDDT&,B53> 00770 IFN EDDT&1, 00840 IFE EDDT&1,<TITLE UDDT V.005 - USER MODE DDT 00850 EXTERN JOBREL,JOBSYM,JOBSA 00860 NSYMS=NSYMS+6 00870 ZLOW=140> 000000 00880 F=0 ;FLAGS 000001 00890 P=1 ;PUSH DOWN 000002 00900 R=2 ;POINTERS TO TABLES, CORE, ETC. 000003 00910 S=3 000004 00920 W=4 ;CONTAINS DISPATCH ADDRESS IN WORD ASSEMBLER 000005 00930 T=5 ;TRANSFER DATA 000006 00940 W1=6 000007 00950 W2=7 000010 00960 SCH=10 ;MODE CONTROL SWITCH FOR OUTPUT 000011 00970 AR=11 ;MODE CONTROL SWITCH FOR OUTPUT 000012 00980 ODF=12 ;MODE CONTROL SWITCH FOR OUTPUT - CURRENT RADIX 000002 00990 A=R 000003 01000 B=S 000004 01010 C=W 000004 01030 PRS=4 000120 01040 TTYY=120 000104 01050 PTRR=104 000100 01060 PTPP=100 000050 01080 LPDL=50 ;MAX LENGTH PUSH DOWN LIST EDDT V.005A - EXEC MODE VERSION PAGE 4 OP DECODER 100000 01110 TIF=100000 ;TRUNCATE TO 18 BITS - SET BY SPACE OR COMMA 000100 01120 PTF=100 ; +, -, OR * HAS BEEN TYPED 000400 01130 CTF=400 000004 01140 SF=4 ;SYLLABLE FLAG 000001 01150 QF=1 ;QUANTITY TYPED IN TO WORD ASSEMBLER 000040 01170 CF=40 ; TYPED 010000 01180 CCF=10000 ; TYPED 000002 01190 MF=2 ;MINUS SIGN TYPED IN 000020 01200 LTF=20 ;LETTER TYPED IN TO CURRENT SYLLABLE 000010 01210 ROF=10 ;REGISTER OPEN FLAG 004000 01220 STF=4000 001000 01230 FAF=1000 ; < TYPED 002000 01240 SAF=2000 ; > TYPED 020000 01260 FPF=20000 ; . TYPED IN 400000 01270 FEF=400000 ; E FLAG 000200 01290 MLF=200 ;*FLAG 040000 01300 DVF=40000 ;DIVIDE FLAG 000000 01320 PID=0 ;=0 IF SYMBOL TABLE POINTER IS IN JOBSYM EDDT V.005A - EXEC MODE VERSION PAGE 5 OP DECODER 01350 ;RIGHT HALF FLAGS 000002 01370 ITF=2 ;INSTRUCTION TYPED IF ITF=1 000004 01380 OUTF=4 ;OUTPUT IF OUTF=1 000400 01390 CF1=400 ;OUTPUT 1 REGISTER AS CONSTANT 002000 01400 LF1=2000 ;OUTPUT 1 REGISTER AS FORCED SYMBOLIC OR CONSTANT 000001 01410 Q2F=1 ;NUMBER TYPED AFTER ALT MODE 000020 01420 SBF=20 000200 01430 NAF=200 ;NEGATIVE ADDRESSES PERMISSABLE 004000 01440 POWF=4000 ;ARGUMENT FOR EXPONENT COMING 010000 01450 SLL=10000 ;STOP LOOKING FOR LOCALS 040000 01470 GLOBAL=040000 ;GLOBAL SYMBOL 100000 01480 LOCAL=100000 740000 01490 PNAME=740000 ;PROGRAM NAME 200000 01500 DELI=200000 ;DELETE INPUT 400000 01510 DELO=400000 ;DELETE OUTPUT 000000' 01530 DDT: 01540 ENTRY DDT 000002 01550 NSYMS=NSYMS+2 01580 RADIX 10 000010 01590 NBP=8 ;NUMBER OF BREAKPOINTS 01600 DEFINE DBPNT (Z.)<XP $'Z.'B,B1ADR+3*Z.-3> 000000 01610 ZZ=0 01620 REPEAT NBP,<DBPNT \<ZZ=ZZ+1>> DBPNT \<ZZ=ZZ+1>^XP $1B,B1ADR+3*1-3^ DBPNT \<ZZ=ZZ+1>^XP $2B,B1ADR+3*2-3^ DBPNT \<ZZ=ZZ+1>^XP $3B,B1ADR+3*3-3^ DBPNT \<ZZ=ZZ+1>^XP $4B,B1ADR+3*4-3^ DBPNT \<ZZ=ZZ+1>^XP $5B,B1ADR+3*5-3^ DBPNT \<ZZ=ZZ+1>^XP $6B,B1ADR+3*6-3^ DBPNT \<ZZ=ZZ+1>^XP $7B,B1ADR+3*7-3^ DBPNT \<ZZ=ZZ+1>^XP $8B,B1ADR+3*8-3^ 01630 RADIX 8 01660 XP $M,MSK^ 01670 XP $I,SAVPI^ 01680 XP DDTEND,DDTEND^ EDDT V.005A - EXEC MODE VERSION PAGE 6 OP DECODER 01720 IFN EDDT&1,< 01740 XP PI,4B11^ 01750 XP PTP,100B11^ 01760 XP PTR,104B11^ 01770 XP CDR,114B11^ 01780 XP TTY,120B11^ 01790 XP LPT,124B11^ 01800 XP DC,200B11^ 01810 XP DIS,130B11^ 01820 XP PLT,140B11^ 01830 XP CR,150B11^ 01840 XP DSK,170B11^ 01850 XP DTC,210B11^ 01860 XP DTS,214B11^ 01870 XP DCSA,300B11^ 01880 XP DCSB,304B11^ 01890 XP DF,270B11^ 01900 XP MTC,220B11^ 01910 XP MTS,224B11^ 01920 XP MTM,230B11^ 01930 XP DLS,240B11^ 01940 XP TDC,320B11^ 01950 XP TDS,324B11^ 01960 XP TMC,340B11^ 01970 XP TMS,344B11>^ 01990 XP JOV,2554B11^ 02000 XP JEN,2545B11^ 02010 XP HALT,2542B11^ 777777 777661' 02040 LOW=DDT-NSYMS-1 EDDT V.005A - EXEC MODE VERSION PAGE 7 OP DECODER 000000' 264000 002615' 02180 DDT: JSR SAVE 000001' 260040 001307' 02190 PUSHJ P,REMOVB 000002' 554240 002213' 02200 HLRZ T,ESTU 000003' 274240 002213' 02210 SUB T,ESTU 000004' 270260 002230' 02220 ADD T,@SYMP 000005' 602240 777777 02230 TRNE T,-1 000006' 254000 003022' 02240 JRST IFIX 000007' 621000 000010 02250 DD1: TLZ F,ROF ;CLOSE ANY OPEN REGISTER 000010' 260040 002657' 02260 PUSHJ P,CRF 000011' 200240 003432' 02270 DD1.5: MOVE T,[XWD SCHM,SCH] 000012' 251240 000012 02280 BLT T,ODF ;LOAD ACS 000013' 402000 002203' 02290 DD2: CLEARM PRNC ;PARENTHESES COUNT 000014' 201040 003540' 02300 MOVEI P,PS 000015' 200240 002213' 02310 LIS: MOVE T,ESTU 000016' 202240 002214' 02320 MOVEM T,ESTUT ;INIT UNDEFINED SYM ASSEM 000017' 630000 003433' 02330 TDZ F,[XWD 777777-ROF-STF,LF1+CF1+SBF+2+Q2F] 000020' 630000 003434' 02340 LIS0: TDZ F,[XWD 777777-ROF-STF-FAF-SAF,NAF] 000021' 402000 002201' 02350 CLEARM,WRD 000022' 402000 002204' 02360 LIS1: CLEARM,FRASE 000023' 201240 000001 02370 LIS2: MOVEI T,1 000024' 202240 002210' 02380 MOVEM T,FRASE1 000025' 621000 040200 02390 TLZ F,MLF+DVF 000026' 621000 030044 02400 L1: TLZ F,CF+CCF+SF+FPF ;TURN OFF CONTROL, SYL, PERIOD FLAG 000027' 402000 002205' 02410 CLEARM,SYL 000030' 402000 002222' 02420 L1RPR: CLEARM,SYM 000031' 201240 000006 02430 MOVEI T,6 000032' 202240 002313' 02440 MOVEM T,TEM ;INIT SYMBOL COUNTER 000033' 402000 002211' 02450 CLEARM,DEN 000034' 402000 002202' 02460 CLEARM,WRD2 000035' 260040 002666' 02480 L2: PUSHJ P,TIN ;PICK UP CHARACTER 000036' 301240 000141 02490 CAIL T,"A"+40 ;LOWER CASE A 000037' 303240 000172 02500 CAILE T,"Z"+40 ;LOWER CASE Z 000040' 254000 000042' 02510 JRST .+2 000041' 640240 000040 02520 TRC T,40 ;CHANGE LOWER CASE TO UPPER CASE 000042' 603000 000040 02530 TLNE F,CF ;CONTROL FLAG 000043' 254000 000050' 02540 JRST L21 000044' 307240 000132 02550 CAIG T,"Z" ;Z 000045' 305240 000101 02560 CAIGE T,"A" ;A 000046' 254000 000050' 02570 JRST .+2 000047' 254000 000221' 02580 JRST LET 000050' 200100 000005 02590 L21: MOVE R,T 000051' 231100 000003 02600 IDIVI R,3 000052' 135203 002744' 02610 LDB W,BDISP(R+1) 000053' 305200 000570 02620 CAIGE W,MULT-DDT ;FIRST EVAL ROUTINE 000054' 254004 000000' 02630 JRST DDT(W) EDDT V.005A - EXEC MODE VERSION PAGE 8 OP DECODER 000055' 200240 002205' 02660 L211: MOVE T,SYL 000056' 627000 000020 02670 TLZN F,LTF 000057' 254000 000271' 02680 JRST POWER 000060' 260040 000351' 02690 PUSHJ P,EVAL 000061' 254000 000137' 02700 JRST UND1 000062' 623000 000002 02710 L4: TLZE F,MF 000063' 210240 000005 02720 MOVN T,T 000064' 607000 000004 02730 TLNN F,SF 000065' 302200 000577 02740 CAIE W,LPRN-DDT 000066' 254000 000070' 02750 JRST .+2 000067' 254000 000577' 02760 JRST LPRN 000070' 250240 002210' 02780 EXCH T,FRASE1 000071' 607000 040000 02790 TLNN F,DVF 000072' 223240 002210' 02800 IMULB T,FRASE1 000073' 623000 040000 02810 TLZE F,DVF 000074' 233240 002210' 02820 IDIVB T,FRASE1 000075' 305200 000573 02830 CAIGE W,ASSEM-DDT 000076' 254004 000000' 02840 JRST DDT(W) ;MULTIPLY OR DIVIDE 000077' 273240 002204' 02850 ADDB T,FRASE 000100' 305200 000623 02860 CAIGE W,SPACE-DDT 000101' 254004 000000' 02870 JRST DDT(W) ; + - @ , 000102' 270240 002201' 02890 ADD T,WRD 000103' 603000 100000 02900 TLNE F,TIF ;TRUNCATE INDICATOR FLAG 000104' 500240 002201' 02910 HLL T,WRD ;TRUNCATE 000105' 202240 002201' 02920 MOVEM T,WRD 000106' 607000 000001 02930 TLNN F,QF 000107' 200240 002206' 02940 MOVE T,LWT 000110' 402000 000002 02950 CLEARM,R 000111' 200300 002214' 02960 MOVE W1,ESTUT 000112' 316300 002213' 02970 CAMN W1,ESTU 000113' 254000 000116' 02980 JRST L5 000114' 303200 000700 02990 CAILE W,CARR-DDT 000115' 254000 000123' 03000 JRST ERR 000116' 307200 000627 03010 L5: CAIG W,RPRN-DDT 000117' 254004 000000' 03020 JRST DDT(W) 000120' 261040 000445' 03030 PUSH P,KILRET 000121' 336000 002203' 03040 SKIPN PRNC 000122' 254004 000000' 03050 JRST DDT(W) 000123' 201300 000077 03070 ERR: MOVEI W1,"?" 000124' 254000 000130' 03080 JRST WRONG1 000125' 201300 000125 03090 UNDEF: MOVEI W1,"U" 000126' 254000 000130' 03100 JRST WRONG1 000127' 200300 003435' 03110 WRONG: MOVE W1,[ASCII /XXX/] 000130' 201040 003540' 03120 WRONG1: MOVEI P,PS 000131' 260040 002171' 03130 PUSHJ P,TEXT 000132' 260040 002714' 03140 IFN EDDT&1,<PUSHJ P,LISTEN 000133' 255000 000000 03150 JFCL> EDDT V.005A - EXEC MODE VERSION PAGE 9 OP DECODER 000134' 201040 003540' 03170 RET: MOVEI P,PS 000135' 260040 002662' 03180 PUSHJ P,LCT ;COMMON RETURN FOR TAB;,JRST LIS 000136' 254000 000013' 03190 JRST DD2 000137' 200100 002214' 03210 UND1: MOVE R,ESTUT ;UNDEFINED SYM ASSEMBLER 000140' 574140 002214' 03220 HLRE S,ESTUT 000141' 240140 777777 03230 ASH S,-1 ;SETUP EVAL END TEST 000142' 260040 000357' 03240 PUSHJ P,EVAL2 000143' 306200 000573 03250 CAIN W,ASSEM-DDT 000144' 607000 000010 03260 TLNN F,ROF 000145' 254000 003305' 03270 JRST OPEVAL 000146' 332000 002203' 03280 SKIPE PRNC 000147' 254000 003305' 03290 JRST OPEVAL 000150' 201240 000043 03300 MOVEI T,"#" 000151' 302200 000573 03310 CAIE W,ASSEM-DDT 000152' 260040 002676' 03320 PUSHJ P,TOUT 000153' 210100 003436' 03340 MOVN R,[XWD 2,2] 000154' 273100 002214' 03350 ADDB R,ESTUT 000155' 200240 002222' 03360 MOVE T,SYM 000156' 661240 040000 03370 TLO T,GLOBAL 000157' 202242 000000 03380 MOVEM T,(R) 000160' 550240 002227' 03390 HRRZ T,LLOCO 000161' 603000 000002 03400 TLNE F,MF 000162' 661240 400000 03410 TLO T,400000 000163' 202242 000001 03420 MOVEM T,1(R) 000164' 201240 000000 03430 MOVEI T,0 000165' 254000 000062' 03440 JRST L4 000166' 260040 002657' 03460 QUESTN: PUSHJ P,CRF ;LIST UNDEFINED SYMBOLS 000167' 200100 002213' 03470 MOVE R,ESTU 000170' 325100 000007' 03480 QUEST1: JUMPGE R,DD1 000171' 200242 000000 03490 MOVE T, (R) 000172' 334300 002213' 03500 SKIPA W1,ESTU 000173' 270300 003436' 03520 QUEST2: ADD W1,[XWD 2,2] 000174' 312246 000000 03530 CAME T,(W1) 000175' 254000 000173' 03540 JRST QUEST2 000176' 312100 000006 03560 QUEST3: CAME R,W1 000177' 254000 000202' 03570 JRST QUEST4 000200' 260040 002030' 03580 PUSHJ P,SPT 000201' 260040 002657' 03590 PUSHJ P,CRF 000202' 270100 003436' 03600 QUEST4: ADD R,[XWD 2,2] 000203' 254000 000170' 03610 JRST QUEST1 EDDT V.005A - EXEC MODE VERSION PAGE 10 OP DECODER 000204' 405240 000017 03640 NUM: ANDI T,17 ;T HOLDS CHARACTER 000205' 603000 020040 03650 TLNE F,CF+FPF 000206' 254000 000251' 03660 JRST NM1 000207' 200200 002205' 03670 MOVE W,SYL 000210' 242200 000003 03680 LSH W,3 000211' 270200 000005 03690 ADD W,T 000212' 202200 002205' 03700 MOVEM W,SYL 000213' 200200 002211' 03710 MOVE W,DEN 000214' 221200 000012 03720 IMULI W,12 ;CONVERT TO DECIMAL 000215' 270200 000005 03730 ADD W,T 000216' 202200 002211' 03740 MOVEM W,DEN 000217' 344240 000235' 03750 LE1: AOJA T,LE1A 000220' 201240 000135 03770 PERC: MOVEI T,47+101-13 ;PERCENT SIGN 000221' 641000 020004 03780 LET: TLC F,SF+FPF ;EXPONENT IFF LTF'*FEF'*(T=105)*SF*FPF=1 000222' 627000 420024 03790 TLZN F,LTF+FEF+SF+FPF 000223' 302240 000105 03800 CAIE T,105 ; E 000224' 665000 000020 03810 TLOA F,LTF 000225' 665000 400000 03820 TLOA F,FEF 000226' 254000 000234' 03830 JRST LET1 000227' 627000 000002 03840 TLZN F,MF 000230' 334300 002205' 03850 SKIPA W1,SYL 000231' 210300 002205' 03860 MOVN W1,SYL 000232' 202300 002215' 03870 MOVEM W1,FSV 000233' 402000 002211' 03880 CLEARM DEN 000234' 275240 000066 03890 LET1: SUBI T,101-13 ;FORM RADIX 50 SYMBOL 000235' 661000 000005 03900 LE1A: TLO F,SF+QF 000236' 200200 002222' 03910 LE2: MOVE W,SYM 000237' 221200 000050 03920 IMULI W,50 ;CONVERT TO RADIX 50 000240' 270200 000005 03930 ADD W,T 000241' 371000 002313' 03940 SOSL,TEM ;IGNORE CHARACS AFTER 6 000242' 202200 002222' 03950 MOVEM W,SYM 000243' 254000 000035' 03960 JRST L2 000244' 250240 002202' 03980 NUM1: EXCH T,WRD2 ;FORM NUMBER AFTER $ 000245' 221240 000012 03990 IMULI T,12 000246' 272240 002202' 04000 ADDM T,WRD2 000247' 660000 000001 04010 TRO F,Q2F 000250' 254000 000035' 04020 JRST L2 000251' 603000 000040 04040 NM1: TLNE F,CF 000252' 254000 000244' 04050 JRST NUM1 000253' 201300 000006 04060 MOVEI W1,6 ;FORM FLOATING POINT NUMBER 000254' 350000 000255' 04070 AOS NM1A 000255' 201340 000000 04080 NM1A: MOVEI W2,0 000256' 205100 201400 04090 MOVSI R,201400 000257' 622340 000001 04100 NM1A1: TRZE W2,1 000260' 164106 002154' 04110 FMPR R,FT(W1) 000261' 322340 000264' 04120 JUMPE W2,NM1B 000262' 242340 777777 04130 LSH W2,-1 000263' 367300 000257' 04140 SOJG W1,NM1A1 000264' 205305 211000 04150 NM1B: MOVSI W1,211000(T) EDDT V.005A - EXEC MODE VERSION PAGE 10-1 OP DECODER 000265' 164100 000006 04160 FMPR R,W1 ;COMPUTE VALUE OF NEW DIGIT 000266' 147100 002221' 04170 FADRB R,FH ;ADD VALUE INTO FLOATING NO. 000267' 202100 002205' 04180 MOVEM R,SYL 000270' 344240 000235' 04190 AOJA T,LE1A EDDT V.005A - EXEC MODE VERSION PAGE 11 OP DECODER 000271' 607000 400000 04220 POWER: TLNN F,FEF 000272' 254000 000062' 04230 JRST L4 ;NO EXPONENT 000273' 302200 000575' 04240 CAIE W,PLUS 000274' 306200 000574' 04250 CAIN W,MINUS 000275' 662000 004000 04260 TROE F,POWF 000276' 624000 004000 04270 TRZA F,POWF 000277' 254004 000000 04280 JRST (W) ; E+- 000300' 200340 002211' 04300 MOVE W2,DEN 000301' 402000 002204' 04310 CLEARM FRASE 000302' 201300 002153' 04320 MOVEI W1,FT-1 000303' 623000 000002 04330 TLZE F,MF 000304' 201300 002162' 04340 MOVEI W1,FT01 000305' 334240 002215' 04350 SKIPA T,FSV 000306' 242340 777777 04360 POW2: LSH W2,-1 000307' 622340 000001 04370 TRZE W2,1 000310' 164246 000000 04380 FMPR T,(W1) 000311' 322340 000062' 04390 JUMPE W2,L4 000312' 364300 000306' 04400 SOJA W1,POW2 EDDT V.005A - EXEC MODE VERSION PAGE 12 OP DECODER 000313' 200240 002226' 04440 PERIOD: MOVE T,LLOC 000314' 603000 000004 04450 TLNE F,SF ;SYLLABLE STARTED 000315' 200240 002211' 04460 MOVE T,DEN 000316' 202240 002205' 04470 MOVEM T,SYL 000317' 603000 020000 04480 TLNE F,FPF ;HAS A PERIOD BEEN SEEN BEFORE? 000320' 661000 000020 04490 TLO F,LTF ;YES, TWO PERIODS MAKES A SYMBOL 000321' 667000 020005 04500 TLON F,FPF+SF+QF 000322' 201240 000000 04510 MOVEI T,0 000323' 231240 000400 04520 IDIVI T,400 000324' 332000 000005 04530 SKIPE T 000325' 641240 243000 04540 TLC T,243000 000326' 641300 233000 04550 TLC W1,233000 000327' 140240 003437' 04560 FAD T,[0] ;NORMALIZE T AND W1 000330' 140300 003437' 04570 FAD W1,[0] 000331' 144240 000006 04580 FADR T,W1 000332' 202240 002221' 04590 MOVEM T,FH 000333' 513000 000255' 04600 HLLZS NM1A 000334' 201240 000045 04610 MOVEI T,45 ;RADIX 50 PERIOD 000335' 254000 000236' 04620 JRST LE2 000336' 334240 002206' 04640 QUAN: SKIPA T,LWT ;LAST QUANTITY TYPED 000337' 201240 002231' 04650 PILOC: MOVEI T, SAVPI 000340' 202240 002205' 04660 QUAN1: MOVEM T,SYL 000341' 661000 000005 04670 QUAN2: TLO F,SF+QF ;WRD,SYL STARTED 000342' 621000 010040 04680 TLZ F,CF+CCF 000343' 254000 000035' 04690 JRST L2 000344' 04710 CONTRO: ;SOME KIND OF ALTMODE 000344' 201240 000044 04720 IFN EDDT&1,< MOVEI T,"$" ;$ 000345' 260040 002676' 04730 PUSHJ P,TOUT ;TYPE OUT $ 04740 > 000346' 663000 000040 04750 DOLLAR: TLOE F,CF 000347' 661000 010000 04760 TLO F,CCF 000350' 254000 000035' 04770 JRST L2 EDDT V.005A - EXEC MODE VERSION PAGE 13 OP DECODER 000351' 200100 002212' 04810 EVAL: MOVE R,PRGM ;LOOK UP SYMBOL 000352' 525300 237777 04820 EVAL0: HRLOI W1,37777+DELI 000353' 574160 002230' 04830 HLRE S,@SYMP 000354' 240140 777777 04840 ASH S,-1 ;SETUP END TEST 000355' 254000 000362' 04850 JRST EVAL3 000356' 270100 003436' 04870 EVAL1: ADD R,[XWD 2,2] 000357' 331000 000002 04880 EVAL2: SKIPL R 000360' 200120 002230' 04890 MOVE R,@SYMP 000361' 347140 000374' 04900 AOJG S,CPOPJ ;TRNASFER IF NO SYMBOL FOUND 000362' 200242 000000 04910 EVAL3: MOVE T,(R) 000363' 430240 002222' 04920 XOR T,SYM 000364' 607240 740000 04930 TLNN T,PNAME 000365' 665300 100000 04940 TLOA W1,LOCAL 000366' 612240 000006 04950 TDNE T,W1 000367' 254000 000356' 04960 JRST EVAL1 000370' 607240 340000 04970 TLNN T,340000 000371' 254000 000356' 04980 JRST EVAL1 000372' 200242 000001 04990 MOVE T,1(R) 000373' 350001 000000 05000 CPOPJ1: AOS (P) ;FOUND SYMBOL, SKIP 000374' 263040 000000 05010 CPOPJ: POPJ P, 05030 ;BIT 40 - DELETE OUTPUT 05040 ; 20 - DELETE INPUT 05050 ; 10 - LOCAL 05060 ; 04 -GLOBAL 05070 ; NO BITS - PROGRAM NAME 000375' 260040 002740' 05090 TEXI: PUSHJ P,TEXIN ;INPUT TEXT 000376' 202240 002205' 05100 MOVEM T,SYL 000377' 201300 000005 05110 MOVEI W1,5 000400' 201200 000000 05120 MOVEI T-1,0 000401' 260040 002740' 05130 PUSHJ P,TEXIN 000402' 306240 000033 05140 CAIN T,33 ;NEW ALT MODE, ESCAPE 000403' 254000 000341' 05150 JRST QUAN2 000404' 603000 000040 05160 TLNE F,CF 000405' 254000 000422' 05170 JRST SIXBIN 000406' 334000 000000 05180 SKIPA 000407' 260040 002740' 05190 TEXI2: PUSHJ P,TEXIN 000410' 316240 002205' 05200 CAMN T,SYL 000411' 364300 000415' 05210 SOJA W1,TEXI3 000412' 241240 777771 05220 ROT T,-7 000413' 246200 000007 05230 LSHC T-1,7 000414' 364300 000407' 05240 SOJA W1,TEXI2 000415' 246200 777735 05260 TEXI3: LSHC T-1,-43 000416' 321300 000340' 05270 JUMPL W1,QUAN1 000417' 242240 000007 05280 LSH T,7 000420' 364300 000416' 05290 SOJA W1,.-2 EDDT V.005A - EXEC MODE VERSION PAGE 14 OP DECODER 000421' 260040 002740' 05320 SIXBI1: PUSHJ P,TEXIN ; INPUT TEXT (SIXBIT) 000422' 316240 002205' 05330 SIXBIN: CAMN T,SYL 000423' 254000 000431' 05340 JRST SIXBI2 000424' 405240 000077 05350 ANDI T,77 000425' 640240 000040 05360 TRC T,40 000426' 241240 777772 05370 ROT T,-6 000427' 246200 000006 05380 LSHC T-1,6 000430' 364300 000421' 05390 SOJA W1,SIXBI1 000431' 200240 000004 05400 SIXBI2: MOVE T,T-1 000432' 321300 000340' 05410 JUMPL W1,QUAN1 000433' 242240 000006 05420 LSH T,6 000434' 364300 000432' 05430 SOJA W1,.-2 000435' 607000 000020 05450 KILL: TLNN F,LTF ;DELETE SYMBOLS 000436' 254000 000446' 05460 JRST KILLA 000437' 260040 000351' 05470 PUSHJ P,EVAL 000440' 254000 000462' 05480 JRST KILL1 000441' 201240 000002 05490 MOVEI T,DELO/200000 ;DELETE OUTPUT 000442' 603000 010000 05500 TLNE F,CCF 000443' 201240 000001 05510 MOVEI T,DELI/200000 ;NO INPUT OR OUTPUT 000444' 137240 003440' 05520 DPB T,[POINT 2,(R),1] ;LEFT 2 BITS IN SYMBOL 000445' 254000 000134' 05530 KILRET: JRST RET ;USED AS A CONSTANT 000446' 607000 000001 05550 KILLA: TLNN F,QF 000447' 607000 010000 05560 TLNN F,CCF 000450' 254000 000123' 05570 JRST ERR 000451' 200100 002200' 05580 MOVE R,KILC 000452' 202120 002230' 05590 MOVEM R,@SYMP ;RESTORE INIT SYMS 000453' 552100 002213' 05600 HRRZM R,ESTU 000454' 202100 002212' 05610 MOVEM R,PRGM 000455' 515240 600000 05620 HRLZI T,DELO+DELI 000456' 412242 000000 05630 ANDCAM T,(R) ;GET RID OF DELETE BITS IN INITIAL TABLE 000457' 253100 000460' 05640 AOBJN R,.+1 000460' 253100 000456' 05650 AOBJN R,.-2 000461' 254000 000134' 05660 JRST RET 000462' 200100 002213' 05680 KILL1: MOVE R,ESTU ;REMOVE UNDEFINED SYMS 000463' 325100 000125' 05690 JUMPGE R,UNDEF 000464' 260040 000352' 05700 KILL2: PUSHJ P,EVAL0 000465' 254000 000134' 05710 JRST RET 000466' 260040 000470' 05720 PUSHJ P,REMUN 000467' 254000 000464' 05730 JRST KILL2 000470' 200140 003436' 05750 REMUN: MOVE S,[XWD 2,2] ;REMOVE ONE UNDEFINED SYMBOL 000471' 273140 002213' 05760 ADDB S,ESTU 000472' 200203 777776 05770 MOVE W,-2(S) 000473' 202202 000000 05780 MOVEM W,(R) 000474' 200203 777777 05790 MOVE W,-1(S) 000475' 202202 000001 05800 MOVEM W,1(R) 000476' 263040 000000 05810 POPJ P, EDDT V.005A - EXEC MODE VERSION PAGE 15 OP DECODER 000477' 607000 000020 05850 TAG: TLNN F,LTF ; NO LETTERS IS ERROR 000500' 254000 000123' 05860 JRST ERR ; GO SAY ERROR 000501' 603000 001000 05870 TLNE F,FAF ; DEFINE SYMBOLS 000502' 254000 000507' 05880 JRST DEFIN ;A<B: 000503' 603000 000040 05890 TLNE F,CF ;DEFINE SYMBOL AS OPEN REGISTER 000504' 254000 000555' 05900 JRST SETNAM 000505' 200200 002227' 05910 MOVE W,LLOCO 000506' 552200 002224' 05920 HRRZM W,DEFV 000507' 260040 000351' 05940 DEFIN: PUSHJ P,EVAL 000510' 254000 000515' 05950 JRST DEF1 000511' 315100 002200' 05960 CAMGE R,KILC ;INITIAL SYMBOL? 000512' 254000 000525' 05970 JRST DEF2 ;NO, REDEFINE 000513' 201240 000001 05980 MOVEI T,DELI/200000 ;YES, DELETE AND DEFINE NEW ONE 000514' 137240 003440' 05990 DPB T,[POINT 2,(R),1] ;LEFT 2 BITS OF SYMBOL 000515' 210100 003436' 06000 DEF1: MOVN R,[XWD 2,2] 000516' 273120 002230' 06010 ADDB R,@SYMP ;MOVE UNDEFINED TABLE 2 REGISTERS 000517' 550240 002213' 06020 HRRZ T,ESTU 000520' 275240 000002 06030 SUBI T,2 000521' 504240 002213' 06040 HRL T,ESTU 000522' 542240 002213' 06050 HRRM T,ESTU 000523' 335000 002213' 06060 SKIPGE ESTU 000524' 251242 777777 06070 BLT T,-1(R) 000525' 200240 002224' 06080 DEF2: MOVE T,DEFV 000526' 202242 000001 06090 MOVEM T,1(R) ;PUT IN NEW VALUE 000527' 205240 040000 06100 MOVSI T,GLOBAL 000530' 437240 002222' 06110 IORB T,SYM 000531' 202242 000000 06120 MOVEM T,(R) ;PUT IN NEW SYM AS GLOBAL 000532' 200100 002213' 06130 MOVE R,ESTU 000533' 325100 000134' 06150 DEF3: JUMPGE R,RET ;PATCH IN VALUE FOR UNDEF SYM ENTRY 000534' 200240 002222' 06160 MOVE T,SYM 000535' 312242 000000 06170 CAME T,(R) 000536' 254000 000553' 06180 JRST DEF4 000537' 200140 002224' 06190 MOVE S,DEFV 000540' 335002 000001 06200 SKIPGE, 1(R) 000541' 210140 000003 06210 MOVN S,S 000542' 261040 000002 06220 PUSH P,R 000543' 200102 000001 06230 MOVE R,1(R) 000544' 260040 001404' 06240 PUSHJ P,FETCH 000545' 254000 000123' 06250 JRST ERR 000546' 270140 000005 06260 ADD S,T 000547' 542140 000005 06270 HRRM S,T 000550' 260040 001376' 06280 PUSHJ P,DEP 000551' 262040 000002 06290 POP P,R 000552' 260040 000470' 06300 PUSHJ P,REMUN 000553' 270100 003436' 06310 DEF4: ADD R,[XWD 2,2] ;REMOVE THE NOW DEFINED SYMBOL 000554' 254000 000533' 06320 JRST DEF3 EDDT V.005A - EXEC MODE VERSION PAGE 16 OP DECODER 000555' 200120 002230' 06350 SETNAM: MOVE R,@SYMP ;SET PROGRAM NAME - DOLLAR COLON 000556' 200200 000002 06360 SET1: MOVE W,R 000557' 325100 000125' 06370 SET2: JUMPGE R,UNDEF 000560' 200242 000000 06380 MOVE T,(R) 000561' 270100 003436' 06390 ADD R,[XWD 2,2] 000562' 603240 740000 06400 TLNE T,PNAME 000563' 254000 000557' 06410 JRST SET2 000564' 312240 002222' 06420 CAME T,SYM 000565' 254000 000556' 06430 JRST SET1 000566' 202200 002212' 06440 MOVEM W,PRGM 000567' 254000 000134' 06450 JRST RET 000570' 665000 000300 06470 MULT: TLOA F,PTF+MLF ;* 000571' 661000 040100 06480 DIVD: TLO F,DVF+PTF ;SINGLE QUOTE 000572' 254000 000026' 06490 JRST L1 000573' 254000 000575' 06510 ASSEM: JRST PLUS ;# 000574' 661000 000002 06520 MINUS: TLO F,MF 000575' 661000 000100 06530 PLUS: TLO F,PTF 000576' 254000 000023' 06540 JRST LIS2 000577' 311040 003441' 06560 LPRN: CAML P,[XWD LPDL-4,0] ;LEFT PARENTHESIS 000600' 254000 000123' 06570 JRST ERR 000601' 261040 000000 06580 PUSH P,F ;RECURSE FOR OPEN PAREN 000602' 261040 002201' 06590 PUSH P,WRD 000603' 261040 002204' 06600 PUSH P,FRASE 000604' 261040 002210' 06610 PUSH P,FRASE1 000605' 350000 002203' 06620 AOS,PRNC 000606' 254000 000015' 06630 JRST LIS 000607' 515200 000020 06650 INDIRECT: HRLZI W,20 ;@ 000610' 437200 002201' 06660 IORB W,WRD 000611' 661000 000001 06670 TLO F,QF 000612' 254000 000023' 06680 JRST LIS2 000613' 200100 000005 06700 ACCF: MOVE R,T ;COMMA 000614' 513000 000005 06710 HLLZS T 000615' 135300 003442' 06720 LDB W1,[POINT 3,WRD,2] ;CHECK FOR IO INSTRUCTION 000616' 231300 000007 06730 IDIVI W1,7 000617' 242106 000027 06740 LSH R,27(W1) 000620' 270240 000002 06750 ADD T,R 000621' 273240 002201' 06760 ADDB T,WRD 000622' 254000 000624' 06770 JRST SPACE+1 000623' 603000 000001 06790 SPACE: TLNE F,QF 000624' 661000 100000 06800 TLO F,TIF 000625' 621000 000102 06810 SPAC1: TLZ F,MF+PTF 000626' 254000 000022' 06820 JRST LIS1 EDDT V.005A - EXEC MODE VERSION PAGE 17 OP DECODER 000627' 607000 000001 06850 RPRN: TLNN F,QF ;) 000630' 201240 000000 06860 MOVEI T,0 000631' 204240 000005 06870 MOVS T,T 000632' 375000 002203' 06880 SOSGE,PRNC 000633' 254000 000123' 06890 JRST ERR 000634' 262040 002210' 06900 POP P,FRASE1 000635' 262040 002204' 06910 POP P,FRASE 000636' 262040 002201' 06920 POP P,WRD 000637' 262040 000000 06930 POP P,F 000640' 603000 000100 06940 TLNE F,PTF 000641' 603000 000004 06950 TLNE F,SF 000642' 254000 000646' 06960 JRST RPRN1 000643' 202240 002205' 06970 MOVEM T,SYL 000644' 661000 000005 06980 TLO F,QF+SF 000645' 254000 000030' 06990 JRST L1RPR 000646' 273240 002201' 07000 RPRN1: ADDB T,WRD 000647' 661000 000001 07010 TLO F,QF 000650' 254000 000027' 07020 JRST L1RPR-1 EDDT V.005A - EXEC MODE VERSION PAGE 18 OP DECODER 07050 ;REGISTER EXAMINATION LOGIC 000651' 260040 000725' 07070 LINEF: PUSHJ P,DEPRA ;NEXT REGISTER 07080 IFE EDDT&1,<PUSHJ P,CRNRB 07090 JRST .+2> 000652' 260040 002657' 07100 LI0: PUSHJ P,CRF 000653' 350240 002226' 07110 AOS T,LLOC 000654' 552240 002226' 07120 LI1: HRRZM T,LLOC 000655' 552240 002227' 07130 HRRZM T,LLOCO 000656' 260040 001543' 07140 PUSHJ P,PAD 000657' 201240 000057 07150 MOVEI T,"/" 000660' 603000 004000 07160 TLNE F,STF 000661' 201240 000041 07170 MOVEI T,"!" 000662' 260040 002676' 07180 PUSHJ P,TOUT 000663' 621000 000010 07190 LI2: TLZ F,ROF 000664' 260040 002662' 07200 PUSHJ P,LCT 000665' 200100 002227' 07210 MOVE R,LLOCO 000666' 260040 001404' 07220 PUSHJ P,FETCH 000667' 254000 000123' 07230 JRST ERR 000670' 661000 000010 07240 TLO F,ROF 000671' 603000 004000 07250 TLNE F,STF 000672' 254000 000013' 07260 JRST DD2 000673' 254000 001462' 07270 JRST CONSYM ;RETURN IS A POPJ 000674' 260040 000725' 07290 VARRW: PUSHJ P,DEPRA ;^ 000675' 260040 002657' 07300 PUSHJ P,CRF 000676' 370240 002226' 07310 SOS T,LLOC 000677' 254000 000654' 07320 JRST LI1 000700' 260040 000725' 07340 CARR: PUSHJ P,DEPRA ;CLOSE REGISTER 000701' 254000 000007' 07350 IFN EDDT&1,<JRST DD1> 07360 IFE EDDT&1,< PUSHJ P,TIN 07370 CAIN T,15 07380 JRST .-2 07390 JRST DD1.5> 000702' 664000 002400 07410 OCON: TROA F,LF1+CF1 ;OPEN AS CONSTANT 000703' 620000 000400 07420 OSYM: TRZ F,CF1 ;OPEN SYMBOLICALLY 000704' 664000 002000 07430 TROA F,LF1 000705' 665000 004000 07440 SUPTYO: TLOA F,STF ;SUPPRESS TYPEOUT 000706' 621000 004000 07450 SLASH: TLZ F,STF ;TYPE OUT REGISTER 000707' 603000 000001 07460 TLNE F,QF 000710' 552240 002226' 07470 HRRZM T,LLOC ;QUANTITY TYPED 000711' 552240 002227' 07480 SLAS1: HRRZM T,LLOCO 000712' 254000 000663' 07490 JRST LI2 000713' 607000 000010 07510 ICON: TLNN F,ROF ;REGISTER OPENED OR ERR 000714' 254000 000123' 07520 JRST ERR 000715' 260040 001371' 07530 PUSHJ P,DEPRS 000716' 254000 000711' 07540 JRST SLAS1 EDDT V.005A - EXEC MODE VERSION PAGE 19 OP DECODER 000717' 260040 001371' 07580 TAB: PUSHJ P,DEPRS ;OPEN REGISTER OF Q 000720' 201245 777777 07590 MOVEI T,-1(T) 000721' 202240 002226' 07600 MOVEM T,LLOC 000722' 561240 700000 07610 HRROI T,700000 ;3 RUBOUTS 000723' 260040 002170' 07620 PUSHJ P,TEXTT 000724' 254000 000652' 07630 JRST LI0 000725' 603000 000010 07650 DEPRA: TLNE F,ROF ;IF REGISTER IS BEING CHANGED 000726' 607000 000001 07660 TLNN F,QF ;REMOVE ALL PREVIOUS UNDEFINED 000727' 254000 001371' 07670 JRST DEPRS ;SYMBOL REFERENCES TO IT 000730' 200100 002213' 07680 MOVE R,ESTU 000731' 202300 002213' 07690 MOVEM W1,ESTU 000732' 325100 001371' 07700 DEPRA2: JUMPGE R,DEPRS 000733' 550202 000001 07710 HRRZ W,1(R) 000734' 316200 002227' 07720 CAMN W,LLOCO 000735' 260040 000470' 07730 PUSHJ P,REMUN 000736' 270100 003436' 07740 ADD R,[XWD 2,2] 000737' 254000 000732' 07750 JRST DEPRA2 000740' 664000 002400 07770 EQUAL: TROA F,LF1+CF1 ;= 000741' 620000 000400 07780 PSYM: TRZ F,CF1 ;@ 000742' 660000 002000 07790 TRO F,LF1 000743' 260040 001462' 07800 PUSHJ P,CONSYM 000744' 254000 000134' 07810 JRST RET 000745' 242240 777742 07830 R50PNT: LSH T,-36 ;RADIX 50 SYMBOL PRINTER 000746' 620240 000003 07840 TRZ T,3 000747' 260040 002003' 07850 PUSHJ P,TOC 000750' 260040 002664' 07860 PUSHJ P,TSPC 000751' 201300 002206' 07870 MOVEI W1,LWT ;SETUP FOR SPT 000752' 254000 002030' 07880 JRST SPT 000753' 211340 000006 07900 SIXBP: MOVNI W2,6 ;SIXBIT PRINTER 000754' 200300 002206' 07910 MOVE W1,LWT 000755' 201240 000000 07920 SIXBP1: MOVEI T,0 000756' 245240 000006 07930 ROTC T,6 000757' 271240 000040 07940 ADDI T,40 000760' 260040 002676' 07950 PUSHJ P,TOUT 000761' 341340 000755' 07960 AOJL W2,SIXBP1 000762' 263040 000000 07970 POPJ P, EDDT V.005A - EXEC MODE VERSION PAGE 20 OP DECODER 08000 ;MODE CONTROL SWITCHES 000763' 201100 000432 08020 TEXO: MOVEI R,TEXTT-HLFW ;$T ASSUME 7 BIT ASCII 000764' 200240 002202' 08030 MOVE T,WRD2 000765' 306240 000006 08040 CAIN T,6 ;CHECK FOR $6T 000766' 201100 777215 08050 MOVEI R,SIXBP-HLFW ;SET MODE SWITCH FOR SIXBIT 000767' 306240 000005 08060 CAIN T,5 ;CHECK FOR $5T 000770' 201100 777207 08070 MOVEI R,R50PNT-HLFW ;SET MODE SWITCH FOR RADIX 50 000771' 271100 777456 08080 HWRDS: ADDI R,HLFW-TFLOT ;H 000772' 271100 000371 08090 SFLOT: ADDI R,TFLOT-PIN ;F 000773' 271100 777464 08100 SYMBOL: ADDI R,PIN-FTOC ;S 000774' 271100 002003' 08110 CON: ADDI R,FTOC ;C 000775' 552100 000010 08120 HRRZM R,SCH 000776' 254000 001011' 08130 JRST BASE1 000777' 622000 000001 08150 RELA: TRZE F,Q2F ;CHANGE ADDRESS MODE TO RELATIE 001000' 254000 001005' 08160 JRST BASECH 001001' 201100 777542 08170 MOVEI R,PADSO-TOC 001002' 271100 002003' 08180 ABSA: ADDI R,TOC ;A 001003' 552100 000011 08190 HRRZM R,AR 001004' 254000 001011' 08200 JRST BASE1 001005' 200240 002202' 08220 BASECH: MOVE T,WRD2 ;$NR CHANGE OUTPUT RADIX TO N, N>1 001006' 305240 000002 08230 CAIGE T,2 001007' 254000 000123' 08240 JRST ERR 001010' 552240 000012 08250 HRRZM T,ODF 001011' 204140 003432' 08260 BASE1: MOVS S,[XWD SCHM,SCH] 001012' 607000 010000 08270 TLNN F,CCF 001013' 254000 000022' 08280 JRST LIS1 001014' 251140 002311' 08290 BLT S,ODFM ;WITH $$, MAKE MODES PERMANENT 001015' 254000 000134' 08300 JRST RET 001016' 202240 002206' 08320 SEMIC: MOVEM T,LWT ;SEMICOLON TYPES IN CURRENT MODE 001017' 254020 000010 08330 JRST @SCH EDDT V.005A - EXEC MODE VERSION PAGE 21 OP DECODER 08350 ;GO AND EXECUTE LOGIC 001020' 505240 254000 08370 GO: HRLI T,254000 ;G 001021' 663000 000001 08380 TLOE F,QF 001022' 254000 001026' 08390 JRST XEC0 001023' 332240 002234' 08400 IFN EDDT&1,< SKIPE T,STARTA> ;LOAD TAPE START ADDRESS 08410 IFE EDDT&1,< HRR T,JOBSA> ;GET STARTING ADDRESS 001024' 607000 000001 08430 XEC: TLNN F,QF ;X 001025' 254000 000123' 08440 JRST ,ERR 001026' 202240 002313' 08450 XEC0: MOVEM T,TEM 001027' 260040 002657' 08460 PUSHJ P,CRF 001030' 260040 002732' 08470 PUSHJ P,TTYLEV 001031' 260040 001274' 08480 PUSHJ P,INSRTB 001032' 265240 002637' 08490 JSP T,RESTORE 001033' 256000 002313' 08500 XCT,TEM 001034' 254000 000000' 08510 XEC1: JRST DDT ;USED AT PROC0 001035' 264000 002615' 08520 JSR,SAVE 001036' 260040 001307' 08530 PUSHJ P,REMOVB 001037' 260040 002657' 08540 PUSHJ P,CRF 001040' 254000 000007' 08550 JRST DD1 EDDT V.005A - EXEC MODE VERSION PAGE 22 OP DECODER 08580 ;BREAK POINT LOGIC 08590 BP1: REPEAT NBP,< 0 ;JSR TO HERE FOR BREAKPOINT 08600 JSA T, BCOM 08610 0 ;HOLDS INSTRUCTION WHILE BREAKPOINT IS IN PLACE 08620 > 001041' 000000 000000 0 ;JSR TO HERE FOR BREAKPOINT 001042' 266240 001071' JSA T, BCOM 001043' 000000 000000 0 ;HOLDS INSTRUCTION WHILE BREAKPOINT IS IN PLACE 001044' 000000 000000 0 ;JSR TO HERE FOR BREAKPOINT 001045' 266240 001071' JSA T, BCOM 001046' 000000 000000 0 ;HOLDS INSTRUCTION WHILE BREAKPOINT IS IN PLACE 001047' 000000 000000 0 ;JSR TO HERE FOR BREAKPOINT 001050' 266240 001071' JSA T, BCOM 001051' 000000 000000 0 ;HOLDS INSTRUCTION WHILE BREAKPOINT IS IN PLACE 001052' 000000 000000 0 ;JSR TO HERE FOR BREAKPOINT 001053' 266240 001071' JSA T, BCOM 001054' 000000 000000 0 ;HOLDS INSTRUCTION WHILE BREAKPOINT IS IN PLACE 001055' 000000 000000 0 ;JSR TO HERE FOR BREAKPOINT 001056' 266240 001071' JSA T, BCOM 001057' 000000 000000 0 ;HOLDS INSTRUCTION WHILE BREAKPOINT IS IN PLACE 001060' 000000 000000 0 ;JSR TO HERE FOR BREAKPOINT 001061' 266240 001071' JSA T, BCOM 001062' 000000 000000 0 ;HOLDS INSTRUCTION WHILE BREAKPOINT IS IN PLACE 001063' 000000 000000 0 ;JSR TO HERE FOR BREAKPOINT 001064' 266240 001071' JSA T, BCOM 001065' 000000 000000 0 ;HOLDS INSTRUCTION WHILE BREAKPOINT IS IN PLACE 001066' 000000 000000 0 ;JSR TO HERE FOR BREAKPOINT 001067' 266240 001071' JSA T, BCOM 001070' 000000 000000 0 ;HOLDS INSTRUCTION WHILE BREAKPOINT IS IN PLACE 001043' 08640 B1INS=BP1+2 001066' 08650 BPN=.-3 EDDT V.005A - EXEC MODE VERSION PAGE 23 OP DECODER 001071' 000000 000000 08680 BCOM: 0 001072' 262240 001241' 08690 POP T,LEAV ;MOVE INSTRUCTION TO LEAV 001073' 201245 001175 08700 MOVEI T,B1SKP-B1INS+1(T) 001074' 542240 001103' 08710 HRRM T,BCOM3 ;CONDITIONAL BREAK SETUP 001075' 201245 000001 08720 MOVEI T,B1CNT-B1SKP(T) 001076' 542240 001105' 08730 HRRM T,BCOM2 ;PROCEDE COUNTER SETUP 001077' 200245 776601 08740 MOVE T,BP1-B1CNT(T) 001100' 621240 010000 08750 IFN EDDT&1,< TLZ T,010000 ;TURN OFF USER MODE BIT> 001101' 502240 001122' 08760 HLLM T,LEAV1 ;SAVE FLAGS FOR RESTORING 001102' 250240 001071' 08770 EXCH T,BCOM 001103' 332000 002237' 08790 BCOM3: SKIPE B1SKP ;ADDR MOD TO LOOK AT COND. INST. 001104' 256020 001103' 08800 XCT @.-1 001105' 377000 002240' 08810 BCOM2: SOSG B1CNT ;ADDR MOD TO LOOK AT PROCEED COUNTER 001106' 254000 001123' 08820 JRST BREAK 001107' 202240 002274' 08840 MOVEM T,AC0+T 001110' 135240 003443' 08850 LDB T,[POINT 9,LEAV,8] ;GET INSTRUCTION 001111' 301240 000264 08860 CAIL T,264 ;JSR 001112' 303240 000266 08870 CAILE T,266 ;JSA,JSP 001113' 606240 000700 08880 TRNN T,700 ;UUO 001114' 254000 001175' 08890 JRST PROC1 ;MUST BE INTERPRETED 001115' 302240 000260 08900 CAIE T,260 ;PUSHJ 001116' 306240 000256 08910 CAIN T,256 ;XCT 001117' 254000 001175' 08920 JRST PROC1 ;MUST BE INTERPRETED 001120' 200240 002274' 08930 MOVE T,AC0+T 001121' 254120 001122' 08940 JRST 2,@LEAV1 ;RESTORE FLAGS, GO TO LEAV 001122' 000000 001241' 08960 LEAV1: XWD 0,LEAV EDDT V.005A - EXEC MODE VERSION PAGE 24 OP DECODER 001123' 264000 002615' 08980 BREAK: JSR SAVE ;SAVE THE WORLD 001124' 260040 001307' 08990 PUSHJ P,REMOVB ;REMOVE BREAKPOINTS 001125' 370240 001103' 09000 SOS T,BCOM3 001126' 553000 000005 09010 HRRZS T ;GET ADDR OF BREAKPOINT JUST HIT 001127' 260040 001545' 09020 PUSHJ P,PADSO ;PRINT ITS NAME- $NB 001130' 205300 370000 09030 MOVSI W1,(ASCII />/) ;TYPE > FOR COND BREAK 001131' 337020 001105' 09040 SKIPG @BCOM2 ;TEST PROCEED COUNTER 001132' 205300 371740 09050 MOVSI W1,(ASCII />>/) ;TYPE >> FOR PROCEED COUNTER BREAK 001133' 260040 002173' 09060 PUSHJ P,TEXT2 001134' 200240 001071' 09070 MOVE T,BCOM 001135' 502240 002231' 09080 HLLM T, SAVPI ;SAVE PROCESSOR FLAGS 001136' 201245 777777 09090 MOVEI T,-1(T) 001137' 260040 001543' 09100 PUSHJ P,PAD ;TYPE PC AT BREAK 001140' 550260 001103' 09110 HRRZ T,@BCOM3 001141' 542240 001167' 09120 HRRM T,PROC0 ;SETUP ADDRESS OF BREAK 001142' 554260 001103' 09130 HLRZ T,@BCOM3 001143' 322240 001147' 09140 JUMPE T,BREAK1 ;TEST FOR REGISTER TO EXAMINE 001144' 260040 002662' 09150 PUSHJ P,LCT ;PRINT TAB 001145' 554260 001103' 09160 HLRZ T,@BCOM3 001146' 260040 000654' 09170 PUSHJ P,LI1 ;EXAMINE REGISTER C($NB)LEFT 001147' 550100 001103' 09180 BREAK1: HRRZ R,BCOM3 001150' 275100 002236' 09190 SUBI R,B1ADR 001151' 231100 000003 09200 IDIVI R,3 ;GET BREAKPOINT NUMBER-1 INTO R 001152' 201140 000001 09210 MOVEI S,1 001153' 242142 000000 09220 LSH S,(R) 001154' 260040 002714' 09230 PUSHJ P,LISTEN ;DONT PROCEED IF TTY KEY HIT 001155' 616140 002266' 09240 TDNN S,AUTOPI ;DONT PROCEED IF NOT AUTOMATIC 001156' 254000 000134' 09250 JRST RET ;DONT PROCEED 001157' 254000 001165' 09260 JRST PROCD1 001160' 607000 000001 09280 PROCEDE: TLNN F,QF ;N$P ;PROCEED AT A BREAKPOINT 001161' 201240 000001 09290 MOVEI T,1 001162' 202260 001105' 09300 MOVEM T,@BCOM2 001163' 550100 001103' 09310 HRRZ R,BCOM3 001164' 260040 001361' 09320 PUSHJ P,AUTOP 001165' 260040 002657' 09330 PROCD1: PUSHJ P,CRF 001166' 260040 002732' 09340 PUSHJ P,TTYLEV 001167' 551100 001034' 09350 PROC0: HRRZI R,XEC1 ;MODIFIED TO ADDR OF BREAKPOINT 001170' 260040 001404' 09360 PUSHJ P,FETCH 001171' 254000 001246' 09370 JRST BPLUP1 ;ONLY GET HERE IF MEMORY SHRANK 001172' 202240 001241' 09380 MOVEM T,LEAV 001173' 260040 001274' 09390 PUSHJ P,INSRTB 001174' 254000 001200' 09400 JRST PROC2 001175' 200240 002274' 09420 PROC1: MOVE T,AC0+T 001176' 264000 002615' 09430 JSR SAVE 001177' 255000 000000 09440 JFCL 001200' 201200 000100 09450 PROC2: MOVEI W,100 001201' 202200 002314' 09460 MOVEM W,TEM1 ;SETUP MAX LOOP COUNT 001202' 254000 001211' 09470 JRST IXCT5 EDDT V.005A - EXEC MODE VERSION PAGE 25 OP DECODER 09490 IXCT4: IFE EDDT&1,< SUBI T,041 09500 JUMPE T,BPLUP 09510 AOJGE T,IXCT6> ;DONT PROCEDE FOR INIT 09520 ;DONT INTERPRET FOR SYSTEM UUOS 001203' 202100 000040 09530 MOVEM R,40 ;INTERPRET FOR NON-SYSTEM UUOS 001204' 201100 000041 09540 MOVEI R,41 001205' 371000 002314' 09550 IXCT: SOSL TEM1 001206' 260040 001404' 09560 PUSHJ P,FETCH 001207' 254000 001245' 09570 JRST BPLUP ;BREAKPOINT LOOPING OR FETCH FAILED 001210' 202240 001241' 09580 MOVEM T,LEAV 001211' 09590 IXCT5: IFN EDDT&1,< 001211' 135240 003443' 09600 LDB T,[POINT 9,LEAV,8] ;GET INSTRUCTION 001212' 306240 000254 09610 CAIN T,254 ;DON'T DO ANYTHING TO JRST IN EXEC MODE 001213' 254000 001240' 09620 JRST IXCT6> 001214' 515740 002267' 09630 HRLZI 17,AC0 001215' 251740 000017 09640 BLT 17,17 001216' 201260 001241' 09650 MOVEI T,@LEAV 001217' 137240 003444' 09660 DPB T,[POINT 23,LEAV,35] ;STORE EFFECTIVE ADDRESS 001220' 135300 003445' 09670 LDB W1,[POINT 4,LEAV,12] ;PICK UP AC FIELD 001221' 135240 003443' 09680 LDB T,[POINT 9,LEAV,8] ;PICK UP INSTRUCTION FIELD 001222' 201040 003540' 09690 MOVEI P,PS 001223' 306240 000260 09700 CAIN T,260 001224' 254000 001251' 09710 JRST IPUSHJ ;INTERPRET PUSHJ 001225' 306240 000264 09730 CAIN T,264 001226' 254000 001261' 09740 JRST IJSR ;INTERPRET JSR 001227' 306240 000265 09750 CAIN T,265 001230' 254000 001270' 09760 JRST IJSP ;INTERPRET JSP 001231' 306240 000266 09770 CAIN T,266 001232' 254000 001255' 09780 JRST IJSA ;INTERPRET JSA 001233' 200100 001241' 09790 MOVE R,LEAV 001234' 606240 000700 09800 TRNN T,700 001235' 254000 001203' 09810 JRST IXCT4 ;INTERPRET UUO 001236' 306240 000256 09820 CAIN T,256 001237' 254000 001205' 09830 JRST IXCT ;INTERPRET XCT 001240' 265240 002637' 09850 IXCT6: JSP T,RESTORE 001241' 000000 000000 09860 LEAV: 0 ;INSTRUCTION MODIFIED 001242' 254020 001071' 09870 JRST @BCOM 001243' 350000 001071' 09880 AOS BCOM 001244' 254020 001071' 09890 JRST @BCOM 001245' 260040 001307' 09910 BPLUP: PUSHJ P,REMOVB ;BREAKPOINT PROCEED ERROR 001246' 264000 002615' 09920 BPLUP1: JSR SAVE 001247' 255000 000000 09930 JFCL 001250' 254000 000123' 09940 JRST ERR EDDT V.005A - EXEC MODE VERSION PAGE 26 OP DECODER 001251' 137300 003446' 09970 IPUSHJ: DPB W1,[POINT 4,CPUSHP,12] ;STORE AC FIELD INTO A PUSH 001252' 402000 002210' 09980 CLEARM,TEM3 001253' 200240 001241' 09990 MOVE T,LEAV 001254' 254000 002640' 10000 JRST RESTR1 001255' 200240 001071' 10020 IJSA: MOVE T,BCOM ;INTERPRET JSA 001256' 504240 001241' 10030 HRL T,LEAV 001257' 250246 002267' 10040 EXCH T,AC0(W1) 001260' 254000 001263' 10050 JRST IJSR2 001261' 200240 001071' 10070 IJSR: MOVE T,BCOM ;INTERPRET JSR 001262' 500240 002231' 10080 HLL T,SAVPI 001263' 200100 001241' 10090 IJSR2: MOVE R,LEAV 001264' 260040 001376' 10100 PUSHJ P,DEP 001265' 354240 001241' 10110 AOSA T,LEAV 001266' 200240 001241' 10120 IJSR3: MOVE T,LEAV 001267' 254000 002637' 10130 JRST RESTORE 001270' 200200 001071' 10150 IJSP: MOVE W,BCOM ;INTERPRET JSP 001271' 500240 002231' 10160 HLL T,SAVPI 001272' 202206 002267' 10170 MOVEM W,AC0(W1) 001273' 254000 001266' 10180 JRST IJSR3 10200 ;INSERT BREAKPOINTS 001274' 200140 003447' 10220 INSRTB: MOVE S,[JSR BP1] 001275' 332103 001175 10230 INSRT1: SKIPE R,B1ADR-BP1(S) 001276' 260040 001404' 10240 PUSHJ P,FETCH 001277' 254000 001303' 10250 JRST INSRT3 001300' 202243 000002 10260 MOVEM T,B1INS-BP1(S) 001301' 200240 000003 10270 MOVE T,S 001302' 260040 001376' 10280 PUSHJ P,DEP 001303' 271140 000003 10290 INSRT3: ADDI S,3 001304' 317140 003450' 10300 CAMG S,[JSR BPN] 001305' 254000 001275' 10310 JRST INSRT1 001306' 263040 000000 10320 POPJ P, 10340 ;REMOVE BREAKPOINTS 001307' 201140 002263' 10360 REMOVB: MOVEI S,BNADR 001310' 200243 776605 10370 REMOV1: MOVE T,B1INS-B1ADR(S) 001311' 332103 000000 10380 SKIPE R,(S) 001312' 260040 001376' 10390 PUSHJ P,DEP 001313' 275140 000003 10400 REMOV3: SUBI S,3 001314' 301140 002236' 10410 CAIL S,B1ADR 001315' 254000 001310' 10420 JRST REMOV1 001316' 254000 002721' 10430 IFN EDDT&1,<JRST TTYRET> 10440 IFE EDDT&1,<POPJ P,> 10460 ;IN EXEC MODE, SAVE UP TTY STATUS 10470 ;IN USER MODE, DONE BY SAVE EDDT V.005A - EXEC MODE VERSION PAGE 27 OP DECODER 10500 ;ALL $B COMMANDS GET HERE IN FORM: <A>$<N>B 001317' 623000 000001 10530 BPS: TLZE F,QF ;HAS <A> BEEN TYPED? 001320' 254000 001327' 10540 JRST BPS1 ;YES 001321' 622000 000001 10550 TRZE F,Q2F ;NO, HAS <N> BEEN TYPED? 001322' 254000 001333' 10560 JRST BPS2 ;YES 001323' 200240 003451' 10570 MOVE T,[XWD B1ADR,B1ADR+1] ;NO, COMMAND IS $B - CLEAR ALL BREAKPOINTS 001324' 402000 002236' 10580 CLEARM B1ADR 001325' 251240 002266' 10590 BLT T,AUTOPI ;CLEAR OUT ALL BREAKPOINTS AND AUTO PROCEDE REGESTER 001326' 254000 000134' 10600 JRST RET 001327' 626000 000001 10620 BPS1: TRZN F,Q2F ;HAS <N> BEEN TYPED? 001330' 254000 001345' 10630 JRST BPS3 ;NO 001331' 200100 000005 10640 MOVE R,T ;YES, PROCESS THE COMMAND A$NB 001332' 660000 000002 10650 TRO F,2 001333' 200240 002202' 10660 BPS2: MOVE T,WRD2 001334' 301240 000001 10670 CAIL T,1 001335' 303240 000010 10680 CAILE T,NBP 001336' 254000 000123' 10690 JRST ERR 001337' 221240 000003 10700 IMULI T,3 001340' 271240 002233' 10710 ADDI T,B1ADR-3 001341' 626000 000002 10720 TRZN F,2 001342' 254000 001615' 10730 JRST MASK2 001343' 250100 000005 10740 EXCH R,T 001344' 254000 001356' 10750 JRST BPS5 001345' 201100 002236' 10770 BPS3: MOVEI R,B1ADR ;PROCESS THE COMMAND A$B 001346' 550202 000000 10780 BPS4: HRRZ W,(R) 001347' 302205 000000 10790 CAIE W,(T) 001350' 336002 000000 10800 SKIPN (R) 001351' 254000 001356' 10810 JRST BPS5 001352' 271100 000003 10820 ADDI R,3 001353' 307100 002263' 10830 CAIG R,BNADR 001354' 254000 001346' 10840 JRST BPS4 001355' 254000 000123' 10850 JRST ERR 001356' 202242 000000 10860 BPS5: MOVEM T,(R) 001357' 402002 000001 10870 CLEARM,1(R) 001360' 402002 000002 10880 CLEARM,2(R) 001361' 275100 002236' 10900 AUTOP: SUBI R,B1ADR ;AUTO PROCEDE SETUP SUBROUTINE 001362' 231100 000003 10910 IDIVI R,3 001363' 201140 000001 10920 MOVEI S,1 001364' 242142 000000 10930 LSH S,(R) 001365' 412140 002266' 10940 ANDCAM S,AUTOPI 001366' 603000 010000 10950 TLNE F,CCF 001367' 436140 002266' 10960 IORM S,AUTOPI 001370' 263040 000000 10970 POPJ P, EDDT V.005A - EXEC MODE VERSION PAGE 28 OP DECODER 11000 ;FETCH AND DEPOSIT INTO MEMORY 001371' 202240 002206' 11030 DEPRS: MOVEM T,LWT ;DEPOSIT REGISTER AND SAVE AS LWT 001372' 200100 002227' 11040 DEPR: MOVE R,LLOCO ;QUAN TYPED IN REGIS EXAM 001373' 623000 000010 11050 TLZE F,ROF 001374' 607000 000001 11060 TLNN F,QF 001375' 263040 000000 11070 POPJ P,0 001376' 606100 777760 11080 DEP: TRNN R,777760 001377' 254000 001402' 11090 JRST DEP1 11100 IFE EDDT&1,< HRRZ W,JOBREL 11110 CAIL W,(R)> 001400' 202242 000000 11130 MOVEM T,0(R) 001401' 263040 000000 11140 POPJ P,0 001402' 202242 002267' 11150 DEP1: MOVEM T,AC0(R) 001403' 263040 000000 11160 POPJ P,0 11180 FETCH: IFE EDDT&1,<HRRZ T,JOBREL 11190 CAIGE T,(R) 11200 POPJ P,> 001404' 606100 777760 11210 TRNN R,777760 001405' 334242 002267' 11220 SKIPA T,AC0(R) 001406' 200242 000000 11230 MOVE T,(R) 001407' 254000 000373' 11240 JRST CPOPJ1 EDDT V.005A - EXEC MODE VERSION PAGE 29 OP DECODER 001410' 202240 002224' 11260 FIRARG: MOVEM T,DEFV 001411' 661000 001000 11270 TLO F,FAF 001412' 254000 001415' 11280 JRST ULIM1 001413' 661000 002000 11290 ULIM: TLO F,SAF 001414' 552240 002225' 11300 HRRZM T,ULIMIT 001415' 607000 000001 11310 ULIM1: TLNN F,QF 001416' 254000 000123' 11320 JRST ERR 001417' 254000 000020' 11330 JRST LIS0 001420' 331100 002212' 11360 LOOK: SKIPL R,PRGM ;LOOK UP SYMBOL 001421' 200120 002230' 11370 MOVE R,@SYMP 001422' 574160 002230' 11380 HLRE S,@SYMP 001423' 240140 777777 11390 ASH S,-1 ;SETUP COUNT FOR LENGTH OF SYM TABLE 001424' 621000 400000 11400 TLZ F,400000 001425' 515340 600000 11410 HRLZI W2,DELO+DELI 001426' 202240 002313' 11420 MOVEM T,TEM 001427' 612342 000000 11440 LOOK1: TDNE W2,(R) 001430' 254000 001452' 11450 JRST LOOK3 001431' 200242 000000 11460 MOVE T,(R) 001432' 607240 740000 11470 TLNN T,PNAME ;NAME 001433' 665340 100000 11480 TLOA W2,LOCAL 001434' 334240 002313' 11490 SKIPA T,TEM 001435' 254000 001452' 11500 JRST LOOK3 001436' 200202 000001 11510 MOVE W,1(R) 001437' 430200 000005 11520 XOR W,T 001440' 321200 001452' 11530 JUMPL W,LOOK3 001441' 274242 000001 11540 SUB T,1(R) 001442' 321240 001452' 11550 JUMPL T,LOOK3 001443' 325000 001447' 11560 JUMPGE F,LOOK2 001444' 200202 000001 11570 MOVE W,1(R) 001445' 274206 000001 11580 SUB W,1(W1) 001446' 323200 001452' 11590 JUMPLE W,LOOK3 001447' 540300 000002 11600 LOOK2: HRR W1,R ;POINTER BEST VALUE SO FAR 001450' 661000 400000 11610 TLO F,400000 001451' 322240 002027' 11620 JUMPE T,SPT0 001452' 270100 003436' 11630 LOOK3: ADD R,[XWD 2,2] 001453' 331000 000002 11640 SKIPL R 001454' 200120 002230' 11650 MOVE R, @SYMP 001455' 343140 001427' 11660 AOJLE S,LOOK1 ;TERMINATING CONDITION 001456' 200240 002313' 11670 MOVE T,TEM 001457' 603000 400000 11680 TLNE F,400000 001460' 274246 000001 11690 SUB T,1(W1) 001461' 254000 000373' 11700 JRST CPOPJ1 EDDT V.005A - EXEC MODE VERSION PAGE 30 OP DECODER 001462' 202240 002206' 11730 CONSYM: MOVEM T,LWT 001463' 606000 002000 11740 CONSM: TRNN F,LF1 001464' 254020 000010 11750 CONS1: JRST @SCH ;PIN OR FTOC 001465' 602000 000400 11760 TRNE F,CF1 001466' 254000 002003' 11770 JRST FTOC 001467' 11790 PIN: ;PRINT INSTRUCTION 001467' 641240 700000 11800 TLC T,700000 001470' 647240 700000 11810 TLCN T,700000 001471' 254000 001572' 11820 JRST INOUT ;IN-OUT INSTRUCTION OR NEG NUM 001472' 404240 003452' 11830 AND T,[XWD 777000,0] 001473' 322240 001504' 11840 JUMPE T,PI3 001474' 260040 003315' 11850 PUSHJ P,OPTYPE 001475' 205240 777000 11860 MOVSI T,777000 001476' 404240 002206' 11870 AND T,LWT 001477' 606000 000002 11880 TRNN F,ITF ;HAS INSTRUCTION BEEN TYPED? 001500' 260040 001420' 11890 PUSHJ P,LOOK ;NO, LOOK IN SYMBOL TABLE 001501' 664000 000200 11900 TROA F,NAF ;INSTRUCTION TYPED, ALOOW NEG ADDRESSES 001502' 254000 001536' 11910 JRST HLFW ;NOT FOUND, OUTPUT AS HALFWORDS 001503' 260040 002664' 11920 PUSHJ P,TSPC 001504' 135240 003453' 11930 PI3: LDB T,[XWD 270400,LWT] ;GET AC FIELD 001505' 322240 001511' 11940 JUMPE T,PI4 001506' 260040 001543' 11950 PUSHJ P,PAD 001507' 201300 000054 11960 PI3A: MOVEI W1,"," 001510' 260040 002171' 11970 PI3B: PUSHJ P,TEXT 001511' 200300 002206' 11980 PI4: MOVE W1,LWT 001512' 201240 000100 11990 MOVEI T,"@" 001513' 603300 000020 12000 TLNE W1,20 ;CHECK FOR INDIRECT BIT 001514' 260040 002676' 12010 PUSHJ P,TOUT 001515' 550240 002206' 12020 PI5: HRRZ T,LWT 001516' 135300 003454' 12030 LDB W1,[XWD 331100,LWT] ;INSTRUCTION BITS 001517' 301300 000240 12040 CAIL W1,240 001520' 303300 000247 12050 CAILE W1,247 001521' 254000 001534' 12060 JRST PI8 001522' 260040 001564' 12070 PUSHJ P,PADS3A 001523' 620000 000200 12080 PI7: TRZ F,NAF 001524' 135100 003455' 12090 LDB R,[XWD 220400,LWT] ;INDEX REGISTER CHECK 001525' 322100 001547' 12100 JUMPE R,PADS1 ;EXIT 001526' 201240 000050 12110 MOVEI T,"(" 001527' 260040 002676' 12120 PUSHJ P,TOUT 001530' 200240 000002 12130 MOVE T,R 001531' 260040 001543' 12140 PI7.1: PUSHJ P,PAD 001532' 201240 000051 12150 MOVEI T,")" 001533' 254000 002676' 12160 JRST TOUT ;EXIT 001534' 260040 001543' 12180 PI8: PUSHJ P,PAD 001535' 254000 001523' 12190 JRST PI7 EDDT V.005A - EXEC MODE VERSION PAGE 31 OP DECODER 001536' 201240 000050 12230 HLFW: MOVEI T,"(" ;PRINT AS HALF WORDS 001537' 260040 002676' 12240 PUSHJ P,TOUT 001540' 554240 002206' 12250 HLRZ T,LWT 001541' 260040 001531' 12260 PUSHJ P,PI7.1 001542' 550240 002206' 12270 HRRZ T,LWT 001543' 405240 777777 12290 PAD: ANDI T,777777 ;PRINT ADDRESS 001544' 254020 000011 12300 JRST @AR ;PADSO OR PAD1 001545' 322240 002015' 12310 PADSO: JUMPE T,TOC2+1 001546' 260040 001420' 12320 PUSHJ P,LOOK 001547' 263040 000000 12330 PADS1: POPJ P,0 001550' 200346 000001 12340 MOVE W2,1(W1) 001551' 305240 000100 12350 CAIGE T,100 001552' 305340 000060 12360 CAIGE W2,60 001553' 254000 001563' 12370 JRST PADS3 001554' 202240 002313' 12380 MOVEM T,TEM 001555' 325000 001562' 12390 JUMPGE F,PAD1 001556' 260040 002027' 12400 PUSHJ P,SPT0 001557' 201240 000053 12410 MOVEI T,"+" 001560' 260040 002676' 12420 PADS1A: PUSHJ P,TOUT 001561' 550240 002313' 12430 PADS2: HRRZ T,TEM 001562' 254000 002003' 12440 PAD1: JRST TOC ;EXIT 001563' 200240 002313' 12460 PADS3: MOVE T,TEM 001564' 602000 000200 12470 PADS3A: TRNE F,NAF 001565' 305240 776000 12480 CAIGE T,776000 001566' 254000 002003' 12490 JRST TOC 001567' 212240 002313' 12500 PADS3B: MOVNM T,TEM 001570' 201240 000055 12510 PADS4: MOVEI T,"-" 001571' 254000 001560' 12520 JRST PADS1A 001572' 650240 003456' 12540 INOUT: TDC T,[XWD -1,400000] ;IO INSTRUCTION OR NEG NUM 001573' 656240 003456' 12550 TDCN T,[XWD -1,400000] 001574' 254000 001567' 12560 JRST PADS3B ;TYPE AS NEG NUM 001575' 135100 003457' 12570 LDB R,[POINT 3,T,12] 001576' 137100 003460' 12580 DPB R,[POINT 6,T,8] ;MOVE IO BITS OVER FOR OP DECODER 001577' 260040 003315' 12590 PUSHJ P,OPTYPE 001600' 260040 002664' 12600 PUSHJ P,TSPC 001601' 205240 077400 12610 MOVSI T,077400 001602' 404240 002206' 12620 AND T,LWT 001603' 322240 001511' 12630 JUMPE T,PI4 001604' 260040 001420' 12640 PUSHJ P,LOOK ;LOOK FOR DEVICE NUMBER 001605' 254000 001507' 12650 JRST PI3A 001606' 200240 002313' 12660 MOVE T,TEM 001607' 242240 777750 12670 LSH T,-30 001610' 260040 002003' 12680 PUSHJ P,TOC 001611' 254000 001507' 12690 JRST PI3A EDDT V.005A - EXEC MODE VERSION PAGE 32 OP DECODER 001612' 603000 000001 12720 MASK: TLNE F,QF 001613' 254000 001620' 12730 JRST MASK1 001614' 201240 002235' 12740 MOVEI T,MSK 001615' 201200 000001 12750 MASK2: MOVEI W,1 001616' 202200 002210' 12760 MOVEM W,FRASE1 001617' 254000 000340' 12770 JRST QUAN1 001620' 202240 002235' 12780 MASK1: MOVEM T,MSK 001621' 254000 000134' 12790 JRST RET 001622' 661000 000020 12810 EFFEC: TLO F,LTF 001623' 550240 000005 12820 HRRZ T,T 001624' 201100 774000 12830 WORD: MOVEI R,322000-326000 ;JUMPE-JUMPN 001625' 271100 326240 12840 NWORD: ADDI R,326000+40*T ;JUMPN T, 001626' 506100 001650' 12850 HRLM R,SEAR2 001627' 627000 000001 12870 SEARC: TLZN F,QF 001630' 254000 000123' 12880 JRST ERR 001631' 452240 002201' 12890 SETCAM T,WRD 001632' 205240 777772 12900 MOVSI T,FRASE-DEN-1 ;PREVENT TYPE OUT OF DDT PARTS 001633' 462005 002204' 12910 SETCMM FRASE(T) 001634' 253240 001633' 12920 AOBJN T,.-1 001635' 200240 002225' 12930 MOVE T,ULIMIT 001636' 603000 002000 12940 TLNE F,SAF 001637' 661000 000001 12950 TLO F,1 001640' 260040 001723' 12960 PUSHJ P,SETUP1 001641' 260040 002657' 12970 PUSHJ P,CRF 001642' 260040 001404' 12980 SEAR1: PUSHJ P,FETCH 001643' 254000 001651' 12990 JRST SEAR2A 001644' 603000 000020 13000 TLNE F,LTF ;CHECK FOR EFFECTIVE ADDRESS SEARCH 001645' 254000 001677' 13010 JRST EFFEC0 001646' 444240 002201' 13020 EQV T,WRD 001647' 404240 002235' 13030 AND T,MSK 001650' 322240 001655' 13040 SEAR2: JUMPE T,SEAR3 ;OR JUMPN T 001651' 260040 002714' 13050 SEAR2A: PUSHJ P,LISTEN ;QUIT ON TELETYPE 001652' 253100 001642' 13060 AOBJN R,SEAR1 001653' 462000 002206' 13070 SETCMM LWT 001654' 254000 000007' 13080 JRST DD1 EDDT V.005A - EXEC MODE VERSION PAGE 33 OP DECODER 001655' 260040 001404' 13100 SEAR3: PUSHJ P,FETCH 001656' 254000 000123' 13110 JRST ERR 001657' 202240 002206' 13120 MOVEM T,LWT 001660' 202100 002207' 13130 MOVEM R,TEM2 001661' 202100 000005 13140 MOVEM R,T 001662' 552100 002226' 13150 HRRZM R,LLOC 001663' 552100 002227' 13160 HRRZM R,LLOCO 001664' 260040 001543' 13170 PUSHJ P,PAD 001665' 201240 000057 13180 MOVEI T,"/" 001666' 260040 002676' 13190 PUSHJ P,TOUT 001667' 260040 002662' 13200 PUSHJ P,LCT 001670' 200240 002206' 13210 MOVE T,LWT 001671' 260040 001462' 13220 PUSHJ P,CONSYM 001672' 260040 002657' 13230 PUSHJ P,CRF 001673' 462000 002206' 13240 SETCMM LWT 001674' 462000 002313' 13250 SETCMM TEM 001675' 200100 002207' 13260 SEAR4: MOVE R,TEM2 001676' 254000 001651' 13270 JRST SEAR2A 001677' 202100 002207' 13290 EFFEC0: MOVEM R,TEM2 001700' 201200 000100 13300 MOVEI W,100 001701' 202200 002313' 13310 MOVEM W,TEM 001702' 200200 000005 13320 EFFEC1: MOVE W,T 001703' 135100 003461' 13330 LDB R,[POINT 4,T,17] ;GET IR FIELD 001704' 322100 001707' 13340 JUMPE R,EFFEC2 001705' 550242 002267' 13350 HRRZ T,AC0(R) 001706' 270240 000004 13360 ADD T,W 001707' 540100 000005 13370 EFFEC2: HRR R,T 001710' 607200 000020 13380 TLNN W,20 ;INDIRECT BIT CHECK 001711' 254000 001716' 13390 JRST EFFEC3 001712' 372000 002313' 13400 SOSE,TEM 001713' 260040 001404' 13410 PUSHJ P,FETCH 001714' 254000 001675' 13420 JRST SEAR4 001715' 254000 001702' 13430 JRST EFFEC1 001716' 200100 002207' 13440 EFFEC3: MOVE R,TEM2 001717' 444240 002201' 13450 EQV T,WRD 001720' 405240 777777 13460 ANDI T,777777 001721' 254000 001650' 13470 JRST SEAR2 EDDT V.005A - EXEC MODE VERSION PAGE 34 OP DECODER 001722' 661000 000020 13510 SETUP: TLO F,20 ;ZERO 001723' 271240 000001 13520 SETUP1: ADDI T,1 ;YANK,VERIFY,SEARCHES 001724' 607000 000001 13530 TLNN F,QF 001725' 200260 002230' 13540 SETUP2: MOVE T,@SYMP 001726' 550240 000005 13550 HRRZ T,T 001727' 202240 002225' 13560 MOVEM T,ULIMIT 001730' 550220 002230' 13570 HRRZ W,@SYMP 001731' 315200 000005 13580 CAMGE W,T 001732' 607000 000020 13590 TLNN F,20 13600 IFE EDDT&1,< CAML T,JOBREL> 001733' 254000 001735' 13610 IFN EDDT&1,< JRST .+2> 001734' 254000 000123' 13630 JRST ERR 001735' 550100 002224' 13640 HRRZ R,DEFV 001736' 607000 001000 13650 TLNN F,FAF 001737' 201100 000000 13660 MOVEI R,0 001740' 311100 002225' 13670 CAML R,ULIMIT 001741' 254000 000123' 13680 JRST ERR 001742' 202100 002224' 13690 MOVEM R,DEFV 001743' 200200 000002 13700 MOVE W,R 001744' 274200 002225' 13710 SUB W,ULIMIT 001745' 506200 000002 13720 HRLM W,R 001746' 263040 000000 13730 POPJ P,0 001747' 607000 010000 13750 ZERO: TLNN F,CCF 001750' 254000 000123' 13760 JRST ERR 001751' 260040 001722' 13770 PUSHJ P,SETUP 001752' 602100 777760 13780 ZERO1: TRNE R,777760 001753' 254000 001757' 13790 JRST ZERO2 001754' 402002 002267' 13800 CLEARM,AC0(R) 001755' 253100 001752' 13810 AOBJN R,ZERO1 001756' 254000 000007' 13820 JRST DD1 001757' 550100 000002 13830 ZERO2: HRRZ R, R 001760' 305100 000040 13840 CAIGE R,ZLOW 001761' 201100 000040 13850 MOVEI R,ZLOW ;DON'T ZERO 20-ZLOW 001762' 550140 000005 13860 HRRZ S,T 001763' 301140 000000' 13870 CAIL S, DDT 001764' 201140 000000' 13880 MOVEI S, DDT 001765' 313140 000002 13890 CAMLE S,R 001766' 265200 001776' 13900 JSP W,ZEROR 001767' 550100 000002 13910 HRRZ R,R 001770' 307100 003610' 13920 CAIG R, DDTEND ; DON'T ZERO OUT 001771' 201100 003610' 13930 MOVEI R, DDTEND ; DDT 001772' 550140 000005 13940 HRRZ S,T 001773' 313140 000002 13950 CAMLE S, R 001774' 265200 001776' 13960 JSP W,ZEROR 001775' 254000 000007' 13970 JRST DD1 001776' 504100 000002 13990 ZEROR: HRL R,R 001777' 402002 000000 14000 CLEARM,(R) 002000' 271100 000001 14010 ADDI R, 1 002001' 251103 777777 14020 BLT R, -1(S) EDDT V.005A - EXEC MODE VERSION PAGE 34-1 OP DECODER 002002' 254004 000000 14030 JRST (W) EDDT V.005A - EXEC MODE VERSION PAGE 35 OP DECODER 002003' 14070 FTOC: ;NUMERIC OUTPUT SUBROUTINE 002003' 550300 000012 14080 TOC: HRRZ W1,ODF 002004' 306300 000012 14090 CAIN W1,12 002005' 254000 002017' 14100 JRST TOC4 002006' 246240 777735 14110 TOCA: LSHC T,-43 002007' 242300 777777 14120 LSH W1,-1 ;W1=T+1 002010' 235260 000012 14130 TOC1: DIVI T,@ODF 002011' 506301 000000 14140 HRLM W1,0(P) 002012' 322240 002014' 14150 TOC3: JUMPE T,TOC2 002013' 260040 002006' 14160 PUSHJ P,TOCA 002014' 554241 000000 14170 TOC2: HLRZ T,0(P) 002015' 271240 000060 14180 ADDI T,"0" 002016' 254000 002676' 14190 CJTOUT: JRST TOUT ;DOES POPJ TO TOC2 OR EXIT 002017' 214300 000005 14210 TOC4: MOVM W1,T 002020' 325240 002023' 14220 JUMPGE T,TOC5 002021' 201240 000055 14230 MOVEI T,"-" 002022' 260040 002676' 14240 PUSHJ P,TOUT 002023' 201240 000000 14250 TOC5: MOVEI T,0 002024' 260040 002010' 14260 PUSHJ P,TOC1 002025' 201240 000056 14270 TOC6: MOVEI T,"." 002026' 254000 002676' 14280 JRST TOUT 14300 ;SYMBOL OUTPUT SUBROUTINE 002027' 552300 002223' 14320 SPT0: HRRZM W1,SPSAV ;SAVE POINTER TO TYPED SYM 002030' 200240 002016' 14330 SPT: MOVE T,CJTOUT ;RADIX 50 SYMBOL PRINT 002031' 202240 002050' 14340 SPT4: MOVEM T,SPTX ;SETUP OUTPUT DESTINATION 002032' 135240 003462' 14350 LDB T,[POINT 32,0(W1),35] ;GET SYMBOL 002033' 231240 000050 14360 SPT1: IDIVI T,50 002034' 506301 000000 14370 HRLM W1,0(P) 002035' 322240 002037' 14380 JUMPE T,SPT2 002036' 260040 002033' 14390 PUSHJ P,SPT1 002037' 554241 000000 14400 SPT2: HLRZ T,0(P) 002040' 322240 000374' 14410 JUMPE T,CPOPJ ;FLUSH NULL CHARACTERS 002041' 271240 000257 14420 ADDI T,260-1 002042' 303240 000271 14430 CAILE T,271 002043' 271240 000007 14440 ADDI T,301-272 002044' 303240 000332 14450 CAILE T,332 002045' 275240 000070 14460 SUBI T,334-244 002046' 306240 000243 14470 CAIN T,243 002047' 201240 000256 14480 SPT3: MOVEI T,256 002050' 000000 000000 14490 SPTX: 0 ;JRST TOUT, OR IDPB T,R FROM OPEVAL 002051' 263040 000000 14500 POPJ P, 002052' 201240 000002 14520 SYMD: MOVEI T,DELO/200000 ;$D ;DELETE LAST SYM & PRINT NEW 002053' 550100 002223' 14530 HRRZ R,SPSAV ;PICK UP POINTER TO LAST SYM 002054' 322100 000123' 14540 JUMPE R,ERR 002055' 137240 003440' 14550 DPB T,[POINT 2,(R),1] ;STORE SEMI-DELETE BITS IN SYMBOL 002056' 200240 002206' 14560 MOVE T,LWT 002057' 254000 001462' 14570 JRST CONSYM ;PRINT OUT NEXT BEST SYMBOL EDDT V.005A - EXEC MODE VERSION PAGE 36 OP DECODER 14600 ;FLOATING POINT OUTPUT 002060' 200100 000005 14620 TFLOT: MOVE A,T 002061' 327100 002070' 14630 JUMPG A, TFLOT1 002062' 322100 002100' 14640 JUMPE A,FP1A 002063' 213000 000002 14650 MOVNS A 002064' 201240 000055 14660 MOVEI T,"-" 002065' 260040 002676' 14670 PUSHJ P,TOUT 002066' 623100 400000 14680 TLZE A,400000 002067' 254000 002100' 14690 JRST FP1A 002070' 201240 000043 14700 TFLOT1: MOVEI T,"#" ; IF UNNORMALIZED FLOATING 002071' 607100 000400 14710 TLNN A, 400 ; POINT NUMBER, SO INDICATE 002072' 260040 002676' 14720 PUSHJ P, TOUT ; WITH "#" BEFORE NUMBER 002073' 201140 000000 14740 FP1: MOVEI B,0 002074' 315100 002162' 14750 CAMGE A,FT01 002075' 254000 002120' 14760 JRST FP4 002076' 311100 002150' 14770 CAML A,FT8 002077' 344140 002120' 14780 AOJA B,FP4 002100' 201200 000000 14790 FP1A: MOVEI C,0 002101' 225100 000400 14810 FP3: MULI A,400 002102' 244142 777535 14820 ASHC B,-243(A) 002103' 200100 000003 14830 MOVE A,B 002104' 402000 002314' 14840 CLEARM,TEM1 002105' 260040 002135' 14850 PUSHJ P,FP7 002106' 260040 002025' 14860 PUSHJ P,TOC6 ;PRINT DECIMAL POINT 002107' 211100 000010 14870 MOVNI A,10 002110' 270100 002314' 14880 ADD A,TEM1 002111' 200300 000004 14890 MOVE W1,C 002112' 200240 000006 14900 FP3A: MOVE T,W1 002113' 225240 000012 14910 MULI T,12 002114' 260040 002144' 14920 PUSHJ P,FP7B 002115' 332000 000006 14930 SKIPE,W1 002116' 341100 002112' 14940 AOJL A,FP3A 002117' 263040 000000 14950 POPJ P, 002120' 211200 000006 14970 FP4: MOVNI C,6 002121' 201340 000000 14980 MOVEI W2,0 002122' 240340 000001 14990 FP4A: ASH W2,1 002123' 256003 002163' 15000 XCT,FCP(B) 002124' 254000 002127' 15010 JRST FP4B 002125' 164123 002164' 15020 FMPR A,@FCP+1(B) 002126' 435340 000001 15030 IORI W2,1 002127' 346200 002122' 15040 FP4B: AOJN C,FP4A 002130' 261043 002166' 15050 PUSH P,FSGN(B) 002131' 260040 002101' 15060 PUSHJ P,FP3 002132' 262040 000006 15070 POP P,W1 002133' 200100 000007 15080 MOVE A,W2 002134' 260040 002171' 15090 PUSHJ P,TEXT EDDT V.005A - EXEC MODE VERSION PAGE 37 OP DECODER 002135' 322100 002143' 15120 FP7: JUMPE A,FP7A1 002136' 231100 000012 15130 IDIVI A,12 002137' 350000 002314' 15140 AOS,TEM1 002140' 506141 000000 15150 FP7A: HRLM B,(P) 002141' 322100 002143' 15160 JUMPE A,FP7A1 002142' 260040 002135' 15170 PUSHJ P,FP7 002143' 554241 000000 15190 FP7A1: HLRZ T,(P) 002144' 271240 000260 15200 FP7B: ADDI T,260 002145' 254000 002676' 15210 JRST TOUT 002146' 353473 426555 15230 353473426555 ;1.0E32 002147' 266434 157116 15240 266434157116 ;1.0E16 002150' 233575 360400 15250 FT8: 233575360400 ;1.0E8 002151' 216470 400000 15260 216470400000 ;1.0E4 002152' 207620 000000 15270 207620000000 ;1.0E2 002153' 204500 000000 15280 204500000000 ;1.0E1 002154' 201400 000000 15290 FT: 201400000000 ;1.0E0 002155' 026637 304365 15300 026637304365 ;1.0E-32 002156' 113715 126246 15310 113715126246 ;1.0E-16 002157' 146527 461671 15320 146527461671 ;1.0E-8 002160' 163643 334273 15330 163643334273 ;1.0E-4 002161' 172507 534122 15340 172507534122 ;1.0E-2 002162' 175631 463146 15350 FT01: 175631463146 ;1.0E-1 002163' 15360 FT0=FT01+1 002163' 313104 002163' 15380 FCP: CAMLE A, FT0(C) 002164' 315104 002154' 15390 CAMGE A, FT(C) 002165' 000004 002163' 15400 Z FT0(C) 002166' 425320 000000 15420 FSGN: ASCII .E-. 002167' 425260 000000 15430 ASCII .E+. 002170' 200300 000005 15450 TEXTT: MOVE W1,T 002171' 607300 774000 15460 TEXT: TLNN W1,774000 ;LEFT JUSTIFIED UNLESS LEFT CHAR IS NULL 002172' 242300 000035 15470 LSH W1,35 002173' 201240 000000 15480 TEXT2: MOVEI T, ;7 BIT ASCII TEXT OUTPUT SUBROUTINE0 002174' 246240 000007 15490 LSHC T,7 002175' 260040 002676' 15500 PUSHJ P,TOUT 002176' 326300 002173' 15510 JUMPN W1,TEXT2 002177' 263040 000000 15520 POPJ P, EDDT V.005A - EXEC MODE VERSION PAGE 38 OP DECODER 002200' 777662 777661' 15570 KILC: XWD -NSYMS,LOW 002201' 000000 000000 15590 WRD: 0 002202' 000000 000000 15600 WRD2: 0 002203' 000000 000000 15610 PRNC: 0 002204' 000000 000000 15630 FRASE: 0 ;DONT CHANGE ORDER, SEE SEARC+3 002205' 000000 000000 15640 SYL: 0 002206' 000000 000000 15650 LWT: 0 002207' 000000 000000 15660 TEM2: 0 002210' 15670 FRASE1: 002210' 000000 000000 15680 TEM3: 0 002211' 000000 000000 15690 DEN: 0 002212' 000000 000000 15710 PRGM: 0 002213' 000000 000000 15720 ESTU: 0 002214' 000000 000000 15730 ESTUT: 0 002215' 000000 000000 15740 FSV: 0 002216' 000000 000000 15750 FRACT: 0 002217' 000000 000000 15760 FPWR: 0 002220' 000000 000000 15770 FTERM: 0 002221' 000000 000000 15780 FH: 0 002222' 000000 000000 15790 SYM: 0 002223' 000000 000000 15800 SPSAV: 0 ;POINTER TO LAST SYMBOL TYPED 002224' 000000 000000 15810 DEFV: 0 002225' 000000 000000 15820 ULIMIT: 0 002226' 000000 000000 15830 LLOC: 0 002227' 000000 000000 15840 LLOCO: 0 002230' 000000 000036 15850 SYMP: XWD PID,JOBSYM EDDT V.005A - EXEC MODE VERSION PAGE 39 OP DECODER 002231' 000000 000000 15880 SAVPI: 0 002232' 000000 001177 15890 1177 002233' 000000 000000 15900 SAVTTY: 0 002234' 000000 000000 15910 IFN EDDT&1,<STARTA: 0> ;START ADR FROM PTR 002235' 777777 777777 15920 MSK: XWD -1,-1 002236' 000000 000000 15930 B1ADR: 0 002237' 000000 000000 15940 B1SKP: 0 002240' 000000 000000 15950 B1CNT: 0 15970 REPEAT NBP*3-3, < 0> 002241' 000000 000000 0 002242' 000000 000000 0 002243' 000000 000000 0 002244' 000000 000000 0 002245' 000000 000000 0 002246' 000000 000000 0 002247' 000000 000000 0 002250' 000000 000000 0 002251' 000000 000000 0 002252' 000000 000000 0 002253' 000000 000000 0 002254' 000000 000000 0 002255' 000000 000000 0 002256' 000000 000000 0 002257' 000000 000000 0 002260' 000000 000000 0 002261' 000000 000000 0 002262' 000000 000000 0 002263' 000000 000000 0 002264' 000000 000000 0 002265' 000000 000000 0 002263' 15990 BNADR=.-3 002266' 000000 000000 16000 AUTOPI: 0 002267' 16020 AC0: BLOCK 17 002306' 000000 000000 16040 AC17: 0 002307' 000000 001467' 16060 SCHM: EXP PIN ;DO NOT CHANGE ORDER 002310' 000000 001545' 16070 ARM: EXP PADSO 002311' 000000 000010 16080 ODFM: EXP 10 002312' 000000 000000 16100 SARS: 0 002313' 000000 000000 16110 TEM: 0 002314' 000000 000000 16120 TEM1: 0 EDDT V.005A - EXEC MODE VERSION PAGE 40 OP DECODER 16160 IFN EDDT&1&<EDDT>B36,< 002315' 607000 000010 16190 PSR: TLNN F,ROF 002316' 254000 000123' 16200 JRST ERR 002317' 202240 002206' 16210 MOVEM T,LWT 002320' 260040 001371' 16220 PUSHJ P,DEPRS 002321' 552100 002224' 16230 HRRZM R,DEFV ;R CONTAINS LLOCO 002322' 200240 000002 16240 MOVE T,R 002323' 254000 002327' 16250 JRST PUN2 002324' 641000 001001 16270 PUNCH: TLC F,FAF+QF 002325' 643000 001001 16280 TLCE F,FAF+QF 002326' 254000 000123' 16290 JRST ERR ;ONE ARGUMENT MISSING 002327' 271240 000001 16300 PUN2: ADDI T,1 002330' 552240 002314' 16310 HRRZM T,TEM1 002331' 274240 002224' 16320 SUB T,DEFV 002332' 323240 000123' 16330 JUMPLE T,ERR 002333' 201240 000004 16350 PUN1: MOVEI T,4 ;PUNCH 4 FEED HOLES 002334' 260040 002450' 16360 PUSHJ P,FEED 002335' 603000 000040 16370 TLNE F,CF ;PUNCH NON-ZERO BLOCKS? 002336' 254000 002365' 16380 JRST PUNZ ;YES 002337' 550100 002224' 16390 HRRZ R,DEFV 002340' 435100 000037 16400 IORI R,37 002341' 271100 000001 16410 ADDI R,1 002342' 313100 002314' 16420 CAMLE R,TEM1 002343' 200100 002314' 16430 MOVE R,TEM1 002344' 250100 002224' 16440 EXCH R,DEFV 002345' 200240 000002 16450 MOVE T,R 002346' 274240 002224' 16460 SUB T,DEFV 002347' 504100 000005 16470 HRL R,T 002350' 325100 000134' 16480 JUMPGE R,RET ;EXIT OR PUNCH 002351' 200240 000002 16500 PBLK: MOVE T,R 002352' 370200 000005 16510 SOS W,T ;INIT CHECKSUM 002353' 260040 002440' 16520 PUSHJ P,PWRD 002354' 260040 001404' 16530 PBLK1: PUSHJ P,FETCH 002355' 254000 000123' 16540 JRST ERR 002356' 270200 000005 16550 ADD W,T 002357' 260040 002440' 16560 PUSHJ P,PWRD 002360' 253100 002354' 16570 AOBJN R,PBLK1 002361' 200240 000004 16580 MOVE T,W 002362' 260040 002440' 16590 PUSHJ P,PWRD 002363' 254000 002333' 16600 JRST PUN1 EDDT V.005A - EXEC MODE VERSION PAGE 41 OP DECODER 16630 ;PUNCH NON-ZERO BLOCKS 002364' 350000 002224' 16650 PUNZ0: AOS DEFV ;LOOK AT NEXT WORD 002365' 550200 002224' 16660 PUNZ: HRRZ W,DEFV ;ENTER HERE - GET STARTING ADDRESS 002366' 200100 000004 16670 MOVE R,W 002367' 274200 002314' 16680 SUB W,TEM1 ;CALCULATE NEGATIVE LENGTH 002370' 504100 000004 16690 HRL R,W ;SET UP AOBJN POINTER 002371' 325100 000134' 16700 JUMPGE R,RET ;FINISHED? 002372' 317100 003463' 16710 CAMG R,[XWD -40,0] ;BLOCK LONGER THAN 40? 002373' 505100 777740 16720 HRLI R,-40 ;YES, FIX IT UP 002374' 205300 400000 16730 MOVSI W1,400000 ;W1 NEGATIVE MEANS FLUSH 0 WORDS 002375' 260040 001404' 16740 PUNZ2: PUSHJ P,FETCH ;GET WORD FROM MEMORY 002376' 254000 000123' 16750 JRST ERR 002377' 322240 003464' 16760 JUMPE T,[AOJA W1,PUNZ4] ;IF WORD IS 0, INDEX 0 WORD COUNTER 002400' 201300 000000 16770 MOVEI W1,0 ;CLEAR 0 WORD COUNTER 002401' 321300 002364' 16780 PUNZ4: JUMPL W1,PUNZ0 ;FLUSH 0 WORD, GET ANOTHER 002402' 301300 000003 16790 CAIL W1,3 ; NOSKIP FOR 3RD 0 WORD AFTER NON 0 WORD 002403' 354000 000002 16800 AOSA R ;ADVANCE R TO LAST ADR+1 002404' 253100 002375' 16810 AOBJN R,PUNZ2 002405' 270300 002224' 16820 ADD W1,DEFV ;CALCULATE DEFV-R+W1=-WORD COUNT 002406' 274300 000002 16830 SUB W1,R 002407' 506300 002224' 16840 HRLM W1,DEFV ;PUT -WC IN LEFT HALF OF FA 002410' 250100 002224' 16850 EXCH R,DEFV ;SAVE ADR FOR NEXT BLOCK, GET POINTER 002411' 254000 002351' 16860 JRST PBLK 16880 > EDDT V.005A - EXEC MODE VERSION PAGE 42 OP DECODER 16900 IFN EDDT&1&<EDDT>B36,< 002412' 603000 000001 16930 LOADER: TLNE F,QF 002413' 254000 000123' 16940 JRST ERR 002414' 201240 000400 16950 MOVEI T,400 002415' 260040 002450' 16960 PUSHJ P,FEED 002416' 200100 002614' 16970 MOVE R,LOADE 002417' 200242 000000 16980 LOAD1: MOVE T,0(R) 002420' 260040 002440' 16990 PUSHJ P,PWRD 002421' 253100 002417' 17000 AOBJN R,LOAD1 002422' 201240 000100 17010 MOVEI T,100 002423' 260040 002450' 17020 LOAD2: PUSHJ P,FEED 002424' 254000 000134' 17030 JRST RET 002425' 607000 000001 17050 BLKEND: TLNN F,QF ;BLOCK END 002426' 200240 003465' 17060 MOVE T,[JRST 4,DDT] 002427' 661240 254000 17070 TLO T,254000 ;JRST 002430' 261040 000005 17080 PUSH P,T 002431' 201240 000100 17090 MOVEI T,100 002432' 260040 002450' 17100 PUSHJ P,FEED 002433' 262040 000005 17110 POP P,T 002434' 260040 002440' 17120 PUSHJ P,PWRD 002435' 260040 002440' 17130 PUSHJ P,PWRD ;EXTRA WORD FOR READER TO STOP ON 002436' 201240 000500 17140 MOVEI T,500 002437' 254000 002423' 17150 JRST LOAD2 002440' 201300 000006 17170 PWRD: MOVEI W1,6 002441' 241240 000006 17180 PWRD2: ROT T,6 002442' 710300 000020 17190 CONSZ PTPP,20 002443' 254000 002442' 17200 JRST .-1 002444' 710200 000050 17210 CONO PTPP,50 002445' 710140 000005 17220 DATAO PTPP,T 002446' 367300 002441' 17230 SOJG W1,PWRD2 002447' 263040 000000 17240 POPJ P,0 002450' 710300 000020 17260 FEED: CONSZ PTPP,20 002451' 254000 002450' 17270 JRST .-1 002452' 710200 000010 17280 CONO PTPP,10 002453' 710140 002455' 17290 DATAO PTPP,FEED1 002454' 366240 002450' 17300 SOJN T,FEED 002455' 263040 000000 17310 FEED1: POPJ P,0 ;ADDRESS USED AS A CONSTANT 17330 > EDDT V.005A - EXEC MODE VERSION PAGE 43 OP DECODER 17350 IFN EDDT&1&<EDDT>B36,< 002456' 661000 000020 17380 VERIFY: TLO F,LTF 002457' 260040 001723' 17390 CORE: PUSHJ P,SETUP1 ;LOAD TAPES INTO CORE 002460' 710600 000060 17400 CONO PTRR,60 002461' 710740 000010 17410 CORE1: CONSO PTRR,10 002462' 254000 002461' 17420 JRST .-1 002463' 710440 000005 17430 DATAI PTRR,T 002464' 312240 002613' 17440 CAME T,LOADE-1 ;JRST 1 002465' 254000 002461' 17450 JRST CORE1 002466' 260040 002657' 17460 PUSHJ P,CRF 002467' 260040 002540' 17470 PUSHJ P,BLOCK 002470' 260040 002532' 17490 CORE2: PUSHJ P,GETW 002471' 311100 002224' 17500 CAML R,DEFV 002472' 311100 002225' 17510 CAML R,ULIMIT 002473' 254000 002526' 17520 JRST VER3 002474' 603000 000020 17530 TLNE F,LTF 002475' 254000 002500' 17540 JRST VER2 002476' 260040 001376' 17550 PUSHJ P,DEP 002477' 254000 002526' 17560 JRST VER3 002500' 202240 002207' 17580 VER2: MOVEM T,TEM2 002501' 260040 001404' 17590 PUSHJ P,FETCH 002502' 254000 000123' 17600 JRST ERR 002503' 202240 002210' 17610 MOVEM T,TEM3 002504' 430240 002207' 17620 XOR T,TEM2 002505' 404240 002235' 17630 AND T,MSK 002506' 322240 002526' 17640 JUMPE T,VER3 002507' 261040 000003 17650 PUSH P,S 002510' 261040 000002 17660 PUSH P,R 002511' 550240 000002 17670 HRRZ T,R 002512' 260040 001543' 17680 PUSHJ P,PAD 002513' 201240 000257 17690 MOVEI T,257 ;SLASH 002514' 260040 002676' 17700 PUSHJ P,TOUT 002515' 260040 002662' 17710 PUSHJ P,LCT 002516' 200240 002210' 17720 MOVE T,TEM3 ;CORE CONTENTS 002517' 260040 001462' 17730 PUSHJ P,CONSYM 002520' 260040 002662' 17740 PUSHJ P,LCT 002521' 200240 002207' 17750 MOVE T,TEM2 ;TAPE CONTENTS 002522' 260040 001462' 17760 PUSHJ P,CONSYM 002523' 260040 002657' 17770 PUSHJ P,CRF 002524' 262040 000002 17780 POP P,R 002525' 262040 000003 17790 POP P,S 002526' 260040 002714' 17800 VER3: PUSHJ P,LISTEN 002527' 344100 002470' 17810 AOJA R,CORE2 002530' 260040 002540' 17820 RUNEND: PUSHJ P,BLOCK 002531' 254000 002530' 17830 JRST .-1 17860 > EDDT V.005A - EXEC MODE VERSION PAGE 44 OP DECODER 17880 IFN EDDT&1&<EDDT>B36,< 002532' 321140 002534' 17920 GETW: JUMPL S,GETW1 002533' 260040 002540' 17930 PUSHJ P,BLOCK 002534' 200243 000001 17940 GETW1: MOVE T,1(S) 002535' 252140 002536' 17950 AOBJP S,.+1 002536' 263040 000000 17960 POPJ P,0 002537' 710600 000060 17980 BLOCKS: CONO PTRR,60 ;READ DATA BLOCKS 002540' 710740 000010 17990 BLOCK: CONSO PTRR,10 002541' 254000 002540' 18000 JRST .-1 002542' 710440 000004 18010 DATAI PTRR,W 002543' 321200 002547' 18020 JUMPL W,BLK1 002544' 202200 002234' 18030 MOVEM W,STARTA 002545' 710600 000000 18040 CONO PTRR,0 ;TURN OFF READER 002546' 254000 000007' 18050 JRST DD1 002547' 202200 000006 18060 BLK1: MOVEM W,W1 ;INIT CHECKSUM 002550' 641200 777740 18070 TLC W,777740 002551' 643200 777740 18080 TLCE W,777740 002552' 254000 000123' 18090 JRST ERR ;BLOCK TOO BIG 002553' 271200 000001 18100 ADDI W,1 002554' 552200 000002 18110 HRRZM W,R 002555' 541200 003477' 18120 HRRI W,BUFF-1 002556' 202200 000003 18130 MOVEM W,S 002557' 710740 000010 18140 BLK2: CONSO PTRR,10 002560' 254000 002557' 18150 JRST .-1 002561' 710400 000004 18160 BLKI PTRR,W 002562' 254000 002565' 18170 JRST BLK3 002563' 270304 000000 18180 ADD W1,0(W) 002564' 254000 002557' 18190 JRST BLK2 002565' 270304 000000 18200 BLK3: ADD W1,0(W) 002566' 710740 000010 18210 CONSO PTRR,10 002567' 254000 002566' 18220 JRST .-1 002570' 710440 000004 18230 DATAI PTRR,W 002571' 316200 000006 18240 CAMN W,W1 002572' 263040 000000 18250 POPJ P,0 002573' 710600 000000 18260 CONO PTRR,0 ;CHECKSUM ERROR 002574' 254200 002537' 18270 JRST 4,BLOCKS 18290 ;R CONTAINS RIGHT HALF OF FIRST LINE 18300 ;S CONTAINS (-WC,BUFF-1) 18330 > EDDT V.005A - EXEC MODE VERSION PAGE 45 OP DECODER 18350 IFN EDDT&1&<EDDT>B36,< 002575' 18380 LOADB: 000000 18400 PHASE 0 ;RIM10B CHECKSUM LOADER 002575' 777762 000000 18410 XWD -16,0 002576' 710600 000060 18420 BEG: CONO PTRR,60 002577' 541400 000004 18430 HRRI AA,RD+1 002600' 710740 000010 18440 RD: CONSO PTRR,10 002601' 254000 000003 18450 JRST .-1 002602' 710470 000007 18460 DATAI PTRR,@TBL1-RD+1(AA) 002603' 256010 000007 18470 XCT TBL1-RD+1(AA) 002604' 256010 000012 18480 XCT TBL2-RD+1(AA) 002605' 364400 000000 18490 AA: SOJA AA, 002606' 312740 000016 18510 TBL1: CAME CKSM,ADR 002607' 270756 000001 18520 ADD CKSM,1(ADR) 002610' 331740 000016 18530 SKIPL CKSM,ADR 002611' 254200 000001 18550 TBL2: JRST 4,BEG 002612' 253700 000003 18560 AOBJN ADR,RD 002613' 254000 000002 18570 ADR: JRST BEG+1 000017 18580 CKSM=ADR+1 002614' 18600 DEPHASE 002614' 777761 002575' 18620 LOADE: XWD LOADB-.,LOADB 18630 > EDDT V.005A - EXEC MODE VERSION PAGE 46 OP DECODER 002615' 000000 000000 18680 SAVE: 0 ;SAVE THE ACS AND PI SYSTEM 002616' 336000 002312' 18690 SKIPN SARS 002617' 254000 002622' 18700 JRST SAV1 002620' 350000 002615' 18710 AOS SAVE 002621' 254000 002631' 18720 JRST SAV5 002622' 18730 SAV1: IFN EDDT&1,< 002622' 700640 002231' 18740 CONI PRS,SAVPI 002623' 700620 002232' 18750 CONO PRS, @SAVPI+1> 002624' 202740 002306' 18760 MOVEM 17,AC17 002625' 551740 002267' 18770 HRRZI 17,AC0 002626' 251740 002305' 18780 BLT 17,AC0+16 002627' 200240 002615' 18790 MOVE T, SAVE 002630' 502240 002231' 18800 HLLM T, SAVPI 002631' 476000 002312' 18810 SAV5: SETOM,SARS 002632' 201040 003540' 18820 MOVEI P,PS 18830 IFE EDDT&1,<PUSHJ P,TTYRET> ;IN USER MODE, GET INTO DDT MODE 002633' 201000 000000 18840 MOVEI F,0 002634' 200240 003432' 18850 MOVE T,[XWD SCHM,SCH] 002635' 251240 000012 18860 BLT T,ODF ;LOAD THE ACS WITH MODE SWITCHES 002636' 254020 002615' 18870 JRST @SAVE 002637' 476000 002210' 18890 RESTORE: SETOM TEM3 ;RESTORE ACS AND PI SYSTEM 002640' 542240 002615' 18900 RESTR1: HRRM T,SAVE 002641' 200240 002231' 18910 MOVE T,SAVPI 002642' 502240 002615' 18920 HLLM T, SAVE 18930 IFN EDDT&1,< 002643' 404240 002232' 18940 AND T, SAVPI+1 002644' 435240 002000 18950 IORI T, 2000 ;TURN ON CHANNELS 002645' 202240 002231' 18960 MOVEM T, SAVPI> 002646' 515740 002267' 18970 RES1: HRLZI 17,AC0 002647' 251740 000017 18980 BLT 17,17 002650' 402000 002312' 18990 SETZM SARS 002651' 331000 002210' 19000 SKIPL,TEM3 002652' 261000 001071' 19010 CPUSHP: PUSH BCOM ;PROGRAM MODIFIED AT IPUSHJ 002653' 700620 002231' 19020 IFN EDDT&1,< CONO PRS,@SAVPI> 002654' 254120 002615' 19030 JRST 2,@SAVE EDDT V.005A - EXEC MODE VERSION PAGE 47 OP DECODER 002655' 201240 000015 19070 CRN: MOVEI T,15 ;CARRIAGE RETURN 002656' 254000 002676' 19080 JRST TOUT 19100 IFE EDDT&1,< 19110 CRNRB: PUSHJ P,CRN 19120 MOVEI T,177 19130 JRST TOUT> 002657' 260040 002655' 19150 CRF: PUSHJ P,CRN 002660' 201240 000012 19160 LF: MOVEI T,12 ;LINE FEED 002661' 254000 002676' 19170 JRST TOUT 002662' 260040 002664' 19190 LCT: IFN EDDT&1,<PUSHJ P,TSPC 002663' 260040 002664' 19200 PUSHJ P,TSPC> 19210 IFE EDDT&1,<MOVEI T,11 19220 JRST TOUT> ;TYPE A TAB 002664' 201240 000040 19240 TSPC: MOVEI T,40 ;SPACE 002665' 254000 002676' 19250 JRST TOUT EDDT V.005A - EXEC MODE VERSION PAGE 48 OP DECODER 19270 IFN EDDT&1,< ;EXECUTIVE MODE TELETYPE I/O 002666' 260040 002714' 19290 TIN: PUSHJ P,LISTEN ;TELETYPE CHARACTER INPUT 002667' 254000 002666' 19300 JRST .-1 002670' 302240 000175 19310 CAIE T,175 002671' 306240 000176 19320 CAIN T,176 002672' 201240 000033 19330 MOVEI T,33 ;CHANGE ALL ALT MODES TO NEW 002673' 306240 000177 19340 CAIN T,177 ;RUBOUT? 002674' 254000 000127' 19350 JRST WRONG ;YES, TYPE XXX 002675' 602240 000140 19360 TRNE T,140 ;DON'T ECHO CR,LF,ALT,TAB,BACK SPACE,ETC 002676' 307240 000004 19370 TOUT: CAIG T,04 ;DON'T TYPE EOT OR LOWER CHARS 002677' 263040 000000 19380 POPJ P, 002700' 506241 000000 19390 HRLM T,(P) 002701' 221240 200401 19400 IMULI T,200401 ;GENERATE PARITY 002702' 404240 003466' 19410 AND T,[11111111] 002703' 220240 003466' 19420 IMUL T,[11111111] 002704' 544241 000000 19430 HLR T,(P) 002705' 603240 000010 19440 TLNE T,10 002706' 640240 000200 19450 TRC T,200 ;MAKE PARITY EVEN 002707' 712300 000020 19460 CONSZ TTYY,20 002710' 254000 002707' 19470 JRST .-1 002711' 712140 000005 19480 DATAO TTYY,T 002712' 405240 000177 19490 ANDI T,177 ;FLUSH PARITY 002713' 263040 000000 19500 POPJ P,0 002714' 712340 000040 19520 LISTEN: CONSO TTYY,40 ;LISTEN FOR TTY 002715' 263040 000000 19530 POPJ P, 002716' 712040 000005 19540 DATAI TTYY,T 002717' 405240 000177 19550 ANDI T,177 002720' 254000 000373' 19560 JRST CPOPJ1 002721' 201240 003410 19580 TTYRET: MOVEI T,3410 002722' 201340 040000 19590 TTY1: MOVEI W2,40000 002723' 712300 000120 19600 CONSZ TTYY,120 002724' 367340 002723' 19610 SOJG W2,.-1 002725' 712240 002233' 19620 CONI TTYY,SAVTTY 002726' 712040 000007 19630 DATAI TTYY,W2 002727' 506340 002233' 19640 HRLM W2,SAVTTY 002730' 712205 000000 19650 CONO TTYY,(T) 002731' 263040 000000 19660 POPJ P, 002732' 200240 002233' 19670 TTYLEV: MOVE T,SAVTTY 002733' 620240 000160 19680 TRZ T,160 002734' 660240 003600 19690 TRO T,3600 002735' 602240 000010 19700 TRNE T,10 002736' 620240 000200 19710 TRZ T,200 002737' 254000 002722' 19720 JRST TTY1 002740' 260040 002666' 19750 TEXIN: PUSHJ P,TIN ;INPUT SUBROUTINE FOR TEXT MODES 002741' 606240 000140 19760 TRNN T,140 002742' 254000 002676' 19770 JRST TOUT ;ECHO CHARACTERS (0-37) NOT ECHOED 002743' 263040 000000 19780 POPJ P, 19790 > EDDT V.005A - EXEC MODE VERSION PAGE 49 OP DECODER 19810 IFE EDDT&1,< ;USER MODE TELETYPE I/O 19820 19830 19840 TIN: MOVE T,POUTBF ;GET NEXT CHARACTER ROUTINE 19850 CAME T,[POINT 7,INBFF] 19860 PUSHJ P,FINOUT 19870 ILDB T,PINBFF 19880 CAIN T,175 19890 MOVEI T,33 ;CHANGE TO NEW ALT MODE 19900 CAIN T,177 ;RUBOUT? 19910 JRST WRONG ;YES PRINT XXX 19920 JUMPN T,CPOPJ 19930 MOVE T,[POINT 7,INBFF] 19940 MOVEM T,PINBFF 19950 CALL T,[SIXBIT /DDTIN/] 19960 JRST TIN 19970 19980 TOUT: JUMPE T,CPOPJ ;OUT PUT A CHARACTER FLUSH NULLS 19990 IDPB T,POUTBF 20000 CAIE T,12 20010 POPJ P, 20020 FINOUT: MOVEI T,0 20030 IDPB T,POUTBF 20040 MOVE T,[POINT 7,INBFF] 20050 MOVEM T,PINBFF 20060 MOVEM T,POUTBF 20070 CALL T,[SIXBIT /DDTOUT/] 20080 CLEARM INBFF 20090 POPJ P, 20100 20110 PINBFF: POINT 7,INBFF 20120 POUTBF: POINT 7,INBFF 20130 20140 LISTEN=CPOPJ 20150 INBFF: BLOCK 21 20160 20170 TTYRET: CALL [SIXBIT /DDTGT/] 20180 MOVE T,[POINT 7,INBFF] 20190 MOVEM T,POUTBF 20200 MOVEM T,PINBFF 20210 CLEARM INBFF 20220 POPJ P, 20230 20240 TTYLEV: PUSHJ P,FINOUT 20250 CALL [SIXBIT /DDTRL/] 20260 POPJ P, 20270 20280 TEXIN=TIN ;USE NORMAL INPUT FOR TEXT WHEN IN USER MODE 20290 > EDDT V.005A - EXEC MODE VERSION PAGE 50 OP DECODER 002744' 301402 002747' 20320 BDISP: POINT 12,DISP(R),11 002745' 141402 002747' 20330 POINT 12,DISP(R),23 002746' 001402 002747' 20340 POINT 12,DISP(R),35 002747' 20360 DISP: 20370 DEFINE D (Z1,Z2,Z3)<XLIST 20380 EXP <Z1-DDT>*1B11+<Z2-DDT>*1B23+Z3-DDT 20390 LIST> 20410 IFE EDDT&1&<EDDT>B36,< PUNCH=ERR 20420 BLKEND=ERR 20430 LOADER=ERR 20440 VERIFY=ERR 20450 CORE=ERR> 20490 D ERR,ERR,ERR^XLIST 20500 D ERR,ERR,ERR^XLIST 20510 D ERR,ERR,VARRW^XLIST 20520 D TAB,LINEF,ERR^XLIST 20530 D ERR,CARR,ERR^XLIST 20540 D ERR,ERR,ERR^XLIST 20550 D PUNCH,ERR,ERR^XLIST 20560 D ERR,ERR,ERR^XLIST 20570 D ERR,ERR,ERR^XLIST 20580 D CONTROL,ERR,ERR^XLIST 20590 D ERR,ERR,SPACE^XLIST 20600 D SUPTYO,TEXI,ASSEM^XLIST 20610 D DOLLAR,PERC,ERR^XLIST 20620 D DIVD,LPRN,RPRN^XLIST 20630 D MULT,PLUS,ACCF^XLIST 20640 D MINUS,PERIOD,SLASH^XLIST 20650 D NUM,NUM,NUM^XLIST 20660 D NUM,NUM,NUM^XLIST 20670 D NUM,NUM,NUM^XLIST 20680 D NUM,TAG,SEMIC^XLIST 20690 D FIRARG,EQUAL,ULIM^XLIST 20700 D QUESTN,INDIRECT,ABSA^XLIST 20710 D BPS,CON,SYMD^XLIST 20720 D EFFEC,SFLOT,GO^XLIST 20730 D HWRDS,PILOC,BLKEND^XLIST 20740 D KILL,LOADER,MASK^XLIST 20750 D NWORD,BITO,PROCEDE^XLIST 20760 D QUAN,RELA,SYMBOL^XLIST 20770 D TEXO,ERR,VERIFY^XLIST 20780 D WORD,XEC,CORE^XLIST 20790 D ZERO,OCON,ICON^XLIST 20800 D OSYM,VARRW,PSYM^XLIST 20820 REPEAT 11,<D ERR,ERR,ERR> D ERR,ERR,ERR^XLIST D ERR,ERR,ERR^XLIST D ERR,ERR,ERR^XLIST D ERR,ERR,ERR^XLIST D ERR,ERR,ERR^XLIST D ERR,ERR,ERR^XLIST D ERR,ERR,ERR^XLIST D ERR,ERR,ERR^XLIST D ERR,ERR,ERR^XLIST 20840 D ERR,ERR,ERR^XLIST 20850 D ERR,WRONG,DDT^XLIST EDDT V.005A - EXEC MODE VERSION PAGE 51 OP DECODER 003022' 200120 002230' 20880 IFIX: MOVE R,@SYMP ;DIDDLE SYMBOL TABLE POINTERS 003023' 552100 002213' 20890 HRRZM R,ESTU 003024' 554260 002230' 20900 HLRZ T,@SYMP 003025' 274260 002230' 20910 SUB T,@SYMP 003026' 271240 000116 20920 ADDI T,NSYMS 003027' 213000 000005 20930 MOVNS T 003030' 542240 002200' 20940 HRRM T, KILC 003031' 200240 002200' 20950 MOVE T, KILC 003032' 202240 002212' 20960 MOVEM T, PRGM 003033' 254000 000000' 20970 JRST DDT 003034' 201100 003051' 20990 BITO: MOVEI R,BITT ;BYTE OUTPUT SUBROUTINE 003035' 551440 002003' 21000 HRRZI AR,TOC 003036' 626000 000001 21010 TRZN F,Q2F 003037' 254000 000123' 21020 JRST ERR 003040' 200240 002202' 21030 MOVE T,WRD2 003041' 202240 003074' 21040 MOVEM T,SVBTS 003042' 201240 000044 21050 MOVEI T,^D36 003043' 230240 002202' 21060 IDIV T,WRD2 003044' 332000 000006 21070 SKIPE T+1 003045' 271240 000001 21080 ADDI T,1 003046' 202240 003075' 21090 MOVEM T,SVBTS2 003047' 550400 000002 21100 HRRZ SCH,R 003050' 254000 001011' 21110 JRST BASE1 003051' 200240 003075' 21120 BITT: MOVE T,SVBTS2 003052' 202240 003077' 21130 MOVEM T,SVBT2 003053' 200300 002206' 21140 MOVE T+1,LWT 003054' 202300 003076' 21150 MOVEM T+1,SVBT3 003055' 201240 000000 21160 BITT2: MOVEI T,0 003056' 200340 003074' 21170 MOVE T+2,SVBTS 003057' 246247 000000 21180 LSHC T,(T+2) 003060' 202240 002206' 21190 MOVEM T,LWT 003061' 202300 003076' 21200 MOVEM T+1,SVBT3 003062' 302440 001545' 21210 CAIE AR,PADSO 003063' 260040 002003' 21220 PUSHJ P,FTOC 003064' 302440 002003' 21230 CAIE AR,TOC 003065' 260040 001467' 21240 PUSHJ P,PIN 003066' 377000 003077' 21250 SOSG SVBT2 003067' 263040 000000 21260 POPJ P, 003070' 201240 000054 21270 MOVEI T,"," 003071' 260040 002676' 21280 PUSHJ P,TOUT 003072' 200300 003076' 21290 MOVE T+1,SVBT3 003073' 254000 003055' 21300 JRST BITT2 003074' 000000 000000 21310 SVBTS: 0 003075' 000000 000000 21320 SVBTS2: 0 003076' 000000 000000 21330 SVBT3: 0 003077' 000000 000000 21340 SVBT2: 0 EDDT V.005A - EXEC MODE VERSION PAGE 52 OP DECODER 21370 ;DESCRIPTION OF OP DECODER FOR DDT: 21380 ; 21390 ; THE ENTIRE INSTRUCTION SET FOR THE PDP-6 CAN BE COMPACTED INTO 21400 ;A SPACE MUCH SMALLER THAN ONE REGISTER FOR EVERY SYMBOL. THIS OCCURS 21410 ;BECAUSE OF THE MACHINE ORGANIZATION AND INSTRUCTION MNEMONICS CHOSEN 21420 ;FOR THE PDP-6. FOR EXAMPLE, IF BITS (0-2) OF AN INSTRUCTION EQUAL 21430 ;101(2) THE INSTRUCTION IS A HALF WORD INSTRUCTION AND AN "H" MAY 21440 ;BE ASSUMED. "T" MAY BE ASSUMED FOR ALL TEST INSTRUCTIONS (WHICH 21450 ;BEGIN WITH 110(2). 21460 ; 21470 ; THE TABLE TBL IN DDT CONSISTS OF 9 BIT BYTES, 4 TO A WORD. 21480 ;THE NUMBERS IN THE BYTES HAVE THE FOLLOWING SIGNIFICANCE: 21490 ;0-37(8): THIS IS A DISPATCH COMMAND FOR THE OP-DECODER INTERPRETER. 21500 ; LET THE RIGHT MOST TWO BITS EQUAL N; LET THE NEXT 3 BITS 21510 ; EQUAL P. 21520 ; 21530 ; THE CONTENTS OF INST (INSTRUCTION) CONTAIN IN THE RIGHT 21540 ; MOST NINE BITS THE BINARY FOR THE MACHINE INSTRUCTION. 21550 ; P AND N REFER TO THE CONTENTS OF INST, AND THE OP DECODER 21560 ; WILL PRODUCE AN ANSWER D GIVEN P, N, AND THE CONTENTS 21570 ; OF INSTX N+1 GIVES THE NUMBER OF BITS IN INST; P GIVES THE 21580 ; POSITION (FROM THE RIGHT EDGE) OF THE N+1 BITS. 21590 ; 21600 ; EXAMPLE: P = 6 21610 ; N = 2 21620 ; 21630 ;; C(INST) = .010 101 100(2) 21640 ; 21650 ; THE RESULT- D = 010(2) = 2(8) 21660 ; 21670 ; D IS USED AS A DISPATCH ON THE NEXT BYTES IN THE TABLE. 21680 ; IF D = 5, 5 BYTES IN THE TABLE (DON'T COUNT THE BYTES WHICH 21690 ; PRINT TEXT, 41-72(8)) ARE SKIPPED OVER AND THE 6TH BYTE RESUMES 21700 ; THE INTERPRETATION. 21710 ; 21720 ;40(8) THIS IS A STOP CODE; WHEN THIS IS REACHED INTERPRETATION 21730 ; IS FINISHED. EDDT V.005A - EXEC MODE VERSION PAGE 53 OP DECODER 21760 ;41(8)-72(8) THE ALPHABET IS ENCODED INTO THIS RANGE. 21770 ; 41- A 21780 ; 42- B 21790 ; 72- Z 21800 ; WHEN A BYTE IN THIS RANGE IS REACHED, ITS CORRESPONDING 21810 ; LETTER IS TYPED. 21820 ; 21830 ;73(8)-777(8) THIS IS A TRANSFER BYTE. IF THE BYTE IN THIS RANGE IS 21840 ; CONSIDERED TO BE A, TRANSFER INTERPRETATION TO THE A-73(8)RD 21850 ; BYTE IN THE TABLE. 21860 ; 21870 ;MAROS ASSEMBLE THE TABLE TBL: 21880 ; 1. A NUMBER FOLLOWED BY ^ ASSEMBLES A DISPATCH BYTE. THE FIRST 21890 ; DIGIT IS THE POSITION; THE SECOND DIGIT IS THE SIZE. 21900 ; 2. A POINT (.) ASSEMBLES A STOP CODE. 21910 ; 3. A NAME FOLLOWED BY A SLASH ASSEMBLES A TRANSFER TO THE 21920 ; SYMBOLICALLY NAMED BYTE. 21930 ; 4. A STRING OF LETTERS TERMINATED BY A SPACE, COMMA, OR POINT, 21940 ; ASSEMBLE INTO A STRING OF BYTES, EACH BYTE BEING ONE LETTER. 21950 ; 21960 ;EXAMPLE OF BINARY TO SYMBOLIC DECODING: 21970 ; THE MACHINE CODE FOR JRST IAS 254 21980 ; INST 0 1 0 1 0 1 1 0 0 21990 ; THE INTERPRETER STARTS WITH THE FIRST BYTE IN THE TABLE (63^). 22000 ; THE RESULT OF APPLYING THIS TO C(INST) GIVES 2. SKIPPING OVER 22010 ; 2 BYTES IN THE TABLE AND INTERPRETING THE THIRD RESULTS IN 22020 ; HAK/ BEING INTERPRETED. AT HAK:, THERE IS A 33^. APPLYING 22030 ; THIS TO C(INST) RESULTS IN 5 NON PRINTING BYTES BEING SKIPPED 22040 ; OVER: 22050 ; 1. MV/ 22060 ; MOV PRINTING TEXT 22070 ; 2. MO/ 22080 ; 3. ML/ 22090 ; 4. DV/ 22100 ; 5. SH/ 22110 ; 22120 ;H1/ IS THE NEXT BYTE INTERPRETER. AT H1: 03^ IS FOUND SO 22130 ;4 BYTES ARE SKIPPED OVER: 22140 ; EXC PRINTING TEXT 22150 ; 1. S3/ 22160 ; BL PRINTING TEXT 22170 ; T PRINTING TEXT 22180 ; 2. . 22190 ; 3. AO/ 22200 ; 4. AOB/ 22210 ; THE NEXT LETTERS JRS ARE TYPED OUT. THEN T/ IS FOUND. AT 22220 ;T; A T IS TYPED OUT; THEN A "." IS FOUND AND EVERYTHING STOPS. 22230 ; 22240 ; THE TABLE IS ALSO USED GOING FROM SYMBOLIC TO BINARY BUT A EDDT V.005A - EXEC MODE VERSION PAGE 59 OP DECODER 22310 REPEAT 0,< 22320 22330 DEFINE REDEF (XX)< 22340 DEFINE INFO (AA,BB)< 22350 AA XX'BB>> 22360 22370 22380 DEFINE BYT9 (L)< 22390 XLIST 22400 REDEF % 22410 ZZ=0 22420 ZZZ=0 22430 ZZM=1 22440 22450 IRPC L,< 22460 Z="L" 22470 IFE Z-":",<INFO <>,<=CLOC> 22480 IFNDEF FIR.,<FIR.=CLOC> 22490 IFGE CLOC+73-1000-FIR.,<PRINTX OPTABLE TOO LONG> 22500 Z=0> 22510 IFE Z-"/",<IF1 <OUTP 1> 22520 IF2,<INFO OUTP,+73-FIR.> 22530 Z=0> 22540 IFE Z-"^",<OUTP <ZZ&70/2+ZZ&7-1> 22550 Z=0> 22560 IFE <Z-",">*<Z-".">*<Z-40>,<IFN ZZZ,< 22570 REPEAT 5,<ZZ=ZZZ&77 22580 IFN ZZ,<OUTP ZZ> 22590 ZZZ=ZZZ/100>> 22600 IFE Z-".",<OUTP 40> 22610 Z=0> 22620 IFN Z,<INFO REDEF,L 22630 ZZ=ZZ*10+Z&7 22640 ZZZ=ZZZ+<Z-40>*ZZM 22650 ZZM=ZZM*100> 22660 IFE Z,<REDEF % 22670 ZZ=0 22680 ZZZ=0 22690 ZZM=1>> 22700 LIST> 22710 22720 DEFINE OUTP (A)< 22730 BINRY=BINRY*400+BINRY*400+A 22740 BINC=BINC-1 22750 IFE BINC,<EXP BINRY 22760 BINRY=0 22770 BINC=4> 22780 CLOC=CLOC+1> 22790 22800 22810 EDDT V.005A - EXEC MODE VERSION PAGE 60 OP DECODER 22820 22830 TBL: ;OPDECODER BYTE TABLE 22840 22850 BINRY=0 22860 CLOC=0 ;SET BYTE LOCATION COUNTER TO 0 22870 BINC=4 ;INIT BYTES/WORD COUNTER 22880 22890 BYT9 <63^UUO/FLO/HAK/ACCP/BOOLE/H HWT/T ACBM/> 22900 22910 ;IO INSTRUCTIONS 22920 BYT9 <21^BD/CON,11^OI/S,01^Z/O/> 22930 BYT9 <BD:01^BLK,IO/DATA,IO:11^I/O/OI:01^O/I/> 22940 22950 ;UUOS 22960 BYT9 <UUO:51^.,32^U40/U50/U60/21^U703/11^USET/01^> 22970 BYT9 <LOOKU,P/ENTE,R/USET:USET,01^I/O/> 22980 BYT9 <U40:03^U47/INI T/.....,U47:CALL,01^.,I/> 22990 BYT9 <U60:21^U603/01^IN,BPUT/OUT,BPUT:11^BU,F:F.,PU,T/> 23000 BYT9 <U603:01^U6062/STAT,11^O:O.,Z:Z.,U6062:11^S,U62/G,U62:ETST,S/> 23010 ;BYTE AND FLOATING INSTRUCTIONS 23020 23030 BYT9 <FLO:51^BYTE/F 32^ AD A/SB A/MP A/DV A:> 23040 BYT9 <21^LMB/R,IMB/LMB:02^.,L:L.,M:M.,B:B.,BYTE:32^...,03^UF,PA/DF,N/> 23050 BYT9 <FS C/IB P:P.,I LD/LD:LD B/I DP/DP:DP B/> 23060 23070 ;FWT,FIXED POINT ARITH,MISC. 23080 23090 BYT9 <HAK:33^MV/MV:MOV MO/ML/DV/SH/H1/JP/> 23100 BYT9 <21^ADD IMB/SU BIMB:B IMB:02^.,I:I.,M/B/MO:22^> 23110 BYT9 <EIMS:E IMS/S IMS/N IMS/M IMS:02^.,I/M/S:S.,> 23120 BYT9 <ML:21^I ML1/ML1:MUL IMB/DV:21^I DV1/DV1:> 23130 BYT9 <DI DV2:V IMB/H1:03^EXC S3/BL T:T.,AO/AO:AOBJ,> 23140 BYT9 <AOB/JRS T/JFC L/XC T/CON S/AOB:01^P/N/> 23150 BYT9 <JP:03^PU/PU:PUSH PUS/PO/PO:POP POP/JS,R:R.,> 23160 BYT9 <JS P/JS PA:A.,JR PA/PUS:01^J:J..,POP:> 23170 BYT9 <01^.,J/SH:02^A S2/ROT S1/L S2:S S3:H S1/.,S1:21^.,C:C.,> 23180 23190 ;ARITH COMP,SKIP,JUMP 23200 23210 BYT9 <ACCP:42^CA CA1/SJ/A JS/S JS:O 31^> 23220 BYT9 <J COMP/S COMP/CA1:31^I COMP/M COMP/> 23230 BYT9 <SJ:31^JUM PSJ/SKI PSJ:P COMP:> 23240 BYT9 <03^.,L/E:E.,L E/PA/G E/N:N.,G.,> 23250 23260 23270 ;HALF WORDS 23280 23290 BYT9 <HWT:51^HW1/21^R HW2/L HW2:R HW3/HW1:> 23300 BYT9 <21^L HW4/R HW4:L HW3:32^IMS/Z IMS/O IMS/EIMS/> 23310 23320 ;TEST INSTRUCTIONS 23330 23340 BYT9 <ACBM:31^AC1/01^D AC2/S AC2/AC1:01^R AC2/L,> EDDT V.005A - EXEC MODE VERSION PAGE 60-1 OP DECODER 23350 BYT9 <AC2:42^N EAN/Z EAN/C EAN/O EAN:12^.,E/PA/N/> 23360 23370 EDDT V.005A - EXEC MODE VERSION PAGE 61 OP DECODER 23380 23390 ;BOOLEAN 23400 23410 BYT9 <BOOLE:24^ST/AN:AND B2/AN/ST/AN/ST/> 23420 BYT9 <X OR:OR B2/I OR/AN/EQ DV2/ST/OR/ST/OR/OR/> 23430 BYT9 <ST:SET B2:24^Z IMB/IMB/CA:C TA/TM:M IMB/> 23440 BYT9 <CM:C TM/TA:A IMB/IMB/IMB/CB:C BIMB/IMB/CA/> 23450 BYT9 <CA/CM/CM/CB/O IMB/> 23460 23470 ;MORE UUO'S 23480 BYT9 <U50:03^OPE,N/....,RENAM,E/I,N/OU,T/> 23490 BYT9 <U703:02^CLOS,E/RELEA,S/MTAP,E/UGET,F/> 23500 23510 REPEAT BINC,<BINRY=BINRY*400+BINRY*400> 23520 IFN BINRY,<EXP BINRY>> EDDT V.005A - EXEC MODE VERSION PAGE 62 OP DECODER 23570 SUBTTL OP DECODER 23590 IF1, 23600 < 23610 23620 DEFINE .COLON (A) < 23630 %'A== CLOC 23640 FIR.== CLOC 23650 DEFINE .COLON (AA) < 23660 %'AA== CLOC 23670 IFGE CLOC+73-1000-FIR., <PRINTX OPTABLE TOO LONG>>> 23680 23690 DEFINE .SLASH < 23700 CLOC= CLOC+1 ;> 23710 23720 SYN .SLASH, .ARROW 23730 23740 DEFINE .COMMA (A) < 23750 IFNB <A>, <.REP5 A>> 23760 23770 SYN .COMMA, .SPACE 23780 23790 DEFINE .POINT (A) < 23800 IFNB <A>, <.REP5 A> 23810 CLOC= CLOC+1> 23820 23830 DEFINE .REP5 (A) < 23840 IRPC A, <CLOC==CLOC+1>> 23850 23860 > EDDT V.005A - EXEC MODE VERSION PAGE 63 OP DECODER 23880 IF2, 23890 < 23910 DEFINE .SLASH (A) < 23920 OUTP %'A+73-FIR.> 23940 DEFINE .ARROW (A) < 23950 OUTP A&70/2+A&7-1> 23970 DEFINE .COMMA (A) < 23980 IFNB <A>, <.REP5 A>> 24000 SYN .COMMA, .SPACE 24020 DEFINE .POINT (A) < 24030 IFNB <A>, <.REP5 A> 24040 OUTP 40> 24060 DEFINE .REP5 (A) < 24070 IRPC A, <OUTP "A"-40>> 24090 DEFINE OUTP (A)< 24100 BINRY== BINRY+<A>_<BINC==BINC-9> 24110 IFE BINC, < 24120 +BINRY 24130 BINRY==0 24140 BINC==^D36> 24150 CLOC==CLOC+1> 24170 > EDDT V.005A - EXEC MODE VERSION PAGE 64 OP DECODER 003100' 24190 TBL: ;OPDECODER BYTE TABLE 000000 24210 BINRY== 0 000000 24220 CLOC== 0 ;SET BYTE LOCATION COUNTER TO 0 000044 24230 BINC== ^D36 ;INIT BYTES/WORD COUNTER 24250 .ARROW 63^ 24260 .SLASH UUO^ 24270 .SLASH FLO^ 24280 .SLASH HAK^ 003100' 032112 236325 +BINRY 24290 .SLASH ACCP^ 24300 .SLASH BOOLE^ 24310 .SPACE H^ 24320 .SLASH HWT^ 003101' 534662 050606 +BINRY 24330 .SPACE T^ 24340 .SLASH ACBM^ 24370 ;IO INSTRUCTIONS 24390 .ARROW 21^ 24400 .SLASH BD^ 003102' 064632 010073 +BINRY 24410 .COMMA CON^ 24420 .ARROW 11^ 003103' 043057 056004 +BINRY 24430 .SLASH OI^ 24440 .COMMA S^ 24450 .ARROW 01^ 24460 .SLASH Z^ 003104' 107063 000223 +BINRY 24470 .SLASH O^ 24490 .COLON BD^ 24500 .ARROW 01^ 24510 .COMMA BLK^ 003105' 221000 042054 +BINRY 24520 .SLASH IO^ 24530 .COMMA DATA^ 003106' 053104 044041 +BINRY 24540 .COLON IO^ 24550 .ARROW 11^ 24560 .SLASH I^ 003107' 064041 004352 +BINRY 24570 .SLASH O^ 24580 .COLON OI^ 24590 .ARROW 01^ 24600 .SLASH O^ 24610 .SLASH I^ 003110' 221000 221352 +BINRY EDDT V.005A - EXEC MODE VERSION PAGE 65 OP DECODER 24630 ;UUOS 24650 .COLON UUO^ 24660 .ARROW 51^ 24670 .POINT ^ 24680 .COMMA ^ 24690 .ARROW 32^ 24700 .SLASH U40^ 003111' 024040 015147 +BINRY 24710 .SLASH U50^ 24720 .SLASH U60^ 24730 .ARROW 21^ 24740 .SLASH U703^ 003112' 746171 010772 +BINRY 24750 .ARROW 11^ 24760 .SLASH USET^ 24770 .ARROW 01^ 24790 .COMMA LOOKU^ 003113' 004140 000054 +BINRY 003114' 057057 053065 +BINRY 24800 .SLASH P^ 24810 .COMMA ENTE^ 003115' 311045 056064 +BINRY 24820 .SLASH R^ 24830 .COLON USET^ 24840 .COMMA USET^ 003116' 045471 065063 +BINRY 24850 .ARROW 01^ 24860 .SLASH I^ 003117' 045064 000352 +BINRY 24870 .SLASH O^ 24890 .COLON U40^ 24900 .ARROW 03^ 24910 .SLASH U47^ 24920 .SPACE INI^ 003120' 221002 162051 +BINRY 24930 .SLASH T^ 24940 .POINT ^ 003121' 056051 421040 +BINRY 24950 .POINT ^ 24960 .POINT ^ 24970 .POINT ^ 24980 .POINT ^ 003122' 040040 040040 +BINRY 24990 .COMMA ^ 25000 .COLON U47^ 25010 .COMMA CALL^ 003123' 043041 054054 +BINRY 25020 .ARROW 01^ 25030 .POINT ^ 25040 .COMMA ^ EDDT V.005A - EXEC MODE VERSION PAGE 65-1 OP DECODER 25050 .SLASH I^ 25070 .COLON U60^ 25080 .ARROW 21^ 003124' 000040 352010 +BINRY 25090 .SLASH U603^ 25100 .ARROW 01^ 25110 .COMMA IN^ 003125' 212000 051056 +BINRY 25120 .SLASH BPUT^ 25130 .COMMA OUT^ 003126' 202057 065064 +BINRY 25140 .COLON BPUT^ 25150 .ARROW 11^ 25160 .COMMA BU^ 25170 .COLON F^ 25180 .POINT F^ 003127' 004042 065046 +BINRY 25190 .COMMA ^ 25200 .COMMA PU^ 25210 .SLASH T^ 003130' 040060 065421 +BINRY 25230 .COLON U603^ 25240 .ARROW 01^ 25250 .SLASH U6062^ 25260 .COMMA STAT^ 003131' 000225 063064 +BINRY 25270 .ARROW 11^ 25280 .COLON O^ 25290 .POINT O^ 003132' 041064 004057 +BINRY 25300 .COMMA ^ 25310 .COLON Z^ 25320 .POINT Z^ 25330 .COMMA ^ 25340 .COLON U6062^ 25350 .ARROW 11^ 003133' 040072 040004 +BINRY 25360 .COMMA S^ 25370 .SLASH U62^ 25380 .COMMA G^ 25390 .COLON U62^ 25400 .COMMA ETST^ 003134' 063231 047045 +BINRY 25410 .SLASH S^ 003135' 064063 064372 +BINRY EDDT V.005A - EXEC MODE VERSION PAGE 66 OP DECODER 25430 ;BYTE AND FLOATING INSTRUCTIONS 25450 .COLON FLO^ 25460 .ARROW 51^ 25470 .SLASH BYTE^ 25480 .SPACE F^ 25490 .ARROW 32^ 003136' 024271 046015 +BINRY 25500 .SPACE ^ 25510 .SPACE AD^ 25520 .SLASH A^ 25530 .SPACE SB^ 003137' 041044 255063 +BINRY 25540 .SLASH A^ 25550 .SPACE MP^ 003140' 042255 055060 +BINRY 25560 .SLASH A^ 25570 .SPACE DV^ 25580 .COLON A^ 25590 .ARROW 21^ 003141' 255044 066010 +BINRY 25600 .SLASH LMB^ 25610 .COMMA R^ 25620 .SLASH IMB^ 25630 .COLON LMB^ 25640 .ARROW 02^ 003142' 261062 350001 +BINRY 25650 .POINT ^ 25660 .COMMA ^ 25670 .COLON L^ 25680 .POINT L^ 25690 .COMMA ^ 25700 .COLON M^ 25710 .POINT M^ 003143' 040054 040055 +BINRY 25720 .COMMA ^ 25730 .COLON B^ 25740 .POINT B^ 25750 .COMMA ^ 25760 .COLON BYTE^ 25770 .ARROW 32^ 003144' 040042 040015 +BINRY 25780 .POINT ^ 25790 .POINT ^ 25800 .POINT ^ 25810 .COMMA ^ 25820 .ARROW 03^ 003145' 040040 040002 +BINRY 25830 .COMMA UF^ 25840 .SLASH PA^ 25850 .COMMA DF^ 003146' 065046 500044 +BINRY 25860 .SLASH N^ EDDT V.005A - EXEC MODE VERSION PAGE 66-1 OP DECODER 25880 .SPACE FS^ 003147' 046602 046063 +BINRY 25890 .SLASH C^ 25900 .SPACE IB^ 25910 .COLON P^ 25920 .POINT P^ 003150' 532051 042060 +BINRY 25930 .COMMA ^ 25940 .SPACE I^ 25950 .SLASH LD^ 25960 .COLON LD^ 25970 .SPACE LD^ 003151' 040051 315054 +BINRY 25980 .SLASH B^ 25990 .SPACE I^ 26000 .SLASH DP^ 003152' 044267 051322 +BINRY 26010 .COLON DP^ 26020 .SPACE DP^ 26030 .SLASH B^ EDDT V.005A - EXEC MODE VERSION PAGE 67 OP DECODER 26050 ;FWT,FIXED POINT ARITH,MISC 26070 .COLON HAK^ 26080 .ARROW 33^ 003153' 044060 267016 +BINRY 26090 .SLASH MV^ 26100 .COLON MV^ 26110 .SPACE MOV^ 003154' 327055 057066 +BINRY 26120 .SLASH MO^ 26130 .SLASH ML^ 26140 .SLASH DV^ 26150 .SLASH SH^ 003155' 356374 403514 +BINRY 26160 .SLASH H1^ 26170 .SLASH JP^ 26190 .ARROW 21^ 26200 .SPACE ADD^ 003156' 412453 010041 +BINRY 26210 .SLASH IMB^ 26220 .SPACE SU^ 003157' 044044 350063 +BINRY 26230 .COLON BIMB^ 26240 .SPACE B^ 26250 .COLON IMB^ 26260 .ARROW 02^ 26270 .POINT ^ 003160' 065042 001040 +BINRY 26280 .COMMA ^ 26290 .COLON I^ 26300 .POINT I^ 26310 .COMMA ^ 26320 .SLASH M^ 26330 .SLASH B^ 003161' 051040 265267 +BINRY 26340 .COLON MO^ 26350 .ARROW 22^ 26370 .COLON EIMS^ 26380 .SPACE E^ 26390 .SLASH IMS^ 26400 .SPACE S^ 003162' 011045 366063 +BINRY 26410 .SLASH IMS^ 26420 .SPACE N^ 26430 .SLASH IMS^ 26440 .SPACE M^ 003163' 366056 366055 +BINRY 26450 .COLON IMS^ 26460 .ARROW 02^ 26470 .POINT ^ 26480 .COMMA ^ EDDT V.005A - EXEC MODE VERSION PAGE 67-1 OP DECODER 26490 .SLASH I^ 26500 .SLASH M^ 003164' 001040 352265 +BINRY 26510 .COLON S^ 26520 .POINT S^ 26530 .COMMA ^ 26550 .COLON ML^ 26560 .ARROW 21^ 26570 .SPACE I^ 003165' 063040 010051 +BINRY 26580 .SLASH ML1^ 26590 .COLON ML1^ 26600 .SPACE MUL^ 003166' 377055 065054 +BINRY 26610 .SLASH IMB^ 26620 .COLON DV^ 26630 .ARROW 21^ 26640 .SPACE I^ 26650 .SLASH DV1^ 003167' 350010 051406 +BINRY 26660 .COLON DV1^ 26670 .SPACE DI^ 26680 .COLON DV2^ 26690 .SPACE V^ 26700 .SLASH IMB^ 003170' 044051 066350 +BINRY 26710 .COLON H1^ 26720 .ARROW 03^ 26730 .SPACE EXC^ 003171' 002045 070043 +BINRY 26740 .SLASH S3^ 26750 .SPACE BL^ 26760 .COLON T^ 26770 .POINT T^ 003172' 525042 054064 +BINRY 26780 .COMMA ^ 26790 .SLASH AO^ 26800 .COLON AO^ 26810 .COMMA AOBJ^ 003173' 040424 041057 +BINRY 26820 .SLASH AOB^ 26830 .SPACE JRS^ 003174' 042052 450052 +BINRY 26840 .SLASH T^ 26850 .SPACE JFC^ 003175' 062063 421052 +BINRY 26860 .SLASH L^ 26870 .SPACE XC^ 003176' 046043 263070 +BINRY 26880 .SLASH T^ 26890 .SPACE CON^ 003177' 043421 043057 +BINRY EDDT V.005A - EXEC MODE VERSION PAGE 67-2 OP DECODER 26900 .SLASH S^ 26910 .COLON AOB^ 26920 .ARROW 01^ 26930 .SLASH P^ 003200' 056372 000311 +BINRY 26940 .SLASH N^ 26960 .COLON JP^ 26970 .ARROW 03^ 26980 .SLASH PU^ 26990 .COLON PU^ 27000 .SPACE PUSH^ 003201' 602002 455060 +BINRY 27010 .SLASH PUS^ 003202' 065063 050505 +BINRY 27020 .SLASH PO^ 27030 .COLON PO^ 27040 .SPACE POP^ 003203' 463060 057060 +BINRY 27050 .SLASH POP^ 27060 .COMMA JS^ 27070 .COLON R^ 27080 .POINT R^ 003204' 511052 063062 +BINRY 27090 .COMMA ^ 27110 .SPACE JS^ 27120 .SLASH P^ 003205' 040052 063311 +BINRY 27130 .SPACE JS^ 27140 .COLON PA^ 27150 .POINT A^ 003206' 052063 041040 +BINRY 27160 .COMMA ^ 27170 .SPACE JR^ 27180 .SLASH PA^ 27190 .COLON PUS^ 27200 .ARROW 01^ 003207' 052062 500000 +BINRY 27210 .COLON J^ 27220 .POINT J^ 27230 .POINT ^ 27240 .COMMA ^ 27250 .COLON POP^ 27260 .ARROW 01^ 003210' 052040 040000 +BINRY 27270 .POINT ^ 27280 .COMMA ^ 27290 .SLASH J^ 27300 .COLON SH^ 27310 .ARROW 02^ 27320 .SPACE A^ 003211' 040506 001041 +BINRY EDDT V.005A - EXEC MODE VERSION PAGE 67-3 OP DECODER 27330 .SLASH S2^ 27340 .SPACE ROT^ 003212' 524062 057064 +BINRY 27350 .SLASH S1^ 27360 .SPACE L^ 27370 .COLON S2^ 27380 .SPACE S^ 27390 .COLON S3^ 27400 .SPACE H^ 003213' 530054 063050 +BINRY 27410 .SLASH S1^ 27420 .POINT ^ 27430 .COMMA ^ 27440 .COLON S1^ 27450 .ARROW 21^ 27460 .POINT ^ 003214' 530040 010040 +BINRY 27470 .COMMA ^ 27480 .COLON C^ 27490 .POINT C^ 27500 .COMMA ^ EDDT V.005A - EXEC MODE VERSION PAGE 68 OP DECODER 27520 ;ARITH COMP,SKIP,JUMP 27540 .COLON ACCP^ 27550 .ARROW 42^ 27560 .SPACE CA^ 003215' 043040 021043 +BINRY 27570 .SLASH CA1^ 27580 .SLASH SJ^ 27590 .SPACE A^ 003216' 041552 557041 +BINRY 27600 .SLASH JS^ 27610 .SPACE S^ 27620 .COLON JS^ 27630 .SPACE O^ 27640 .ARROW 31^ 003217' 544063 057014 +BINRY 27660 .SPACE J^ 27670 .SLASH COMP^ 27680 .SPACE S^ 27690 .SLASH COMP^ 003220' 052570 063570 +BINRY 27700 .COLON CA1^ 27710 .ARROW 31^ 27720 .SPACE I^ 27730 .SLASH COMP^ 27740 .SPACE M^ 003221' 014051 570055 +BINRY 27750 .SLASH COMP^ 27770 .COLON SJ^ 27780 .ARROW 31^ 27790 .SPACE JUM^ 003222' 570014 052065 +BINRY 27800 .SLASH PSJ^ 27810 .SPACE SKI^ 003223' 055567 063053 +BINRY 27820 .COLON PSJ^ 27830 .SPACE P^ 27840 .COLON COMP^ 27850 .ARROW 03^ 27860 .POINT ^ 003224' 051060 002040 +BINRY 27870 .COMMA ^ 27880 .SLASH L^ 27890 .COLON E^ 27900 .POINT E^ 27910 .COMMA ^ 27920 .SPACE L^ 003225' 263045 040054 +BINRY 27930 .SLASH E^ 27940 .SLASH PA^ 27950 .SPACE G^ EDDT V.005A - EXEC MODE VERSION PAGE 68-1 OP DECODER 27960 .SLASH E^ 003226' 573500 047573 +BINRY 27970 .COLON N^ 27980 .POINT N^ 27990 .COMMA ^ 28000 .POINT G^ 003227' 056040 047040 +BINRY 28010 .COMMA ^ EDDT V.005A - EXEC MODE VERSION PAGE 69 OP DECODER 28030 ;HALF WORDS 28050 .COLON HWT^ 28060 .ARROW 51^ 28070 .SLASH HW1^ 28080 .ARROW 21^ 28090 .SPACE R^ 003230' 024616 010062 +BINRY 28100 .SLASH HW2^ 28110 .SPACE L^ 28120 .COLON HW2^ 28130 .SPACE R^ 28140 .SLASH HW3^ 003231' 614054 062623 +BINRY 28150 .COLON HW1^ 28160 .ARROW 21^ 28170 .SPACE L^ 28180 .SLASH HW4^ 28190 .SPACE R^ 003232' 010054 622062 +BINRY 28200 .COLON HW4^ 28210 .SPACE L^ 28220 .COLON HW3^ 28230 .ARROW 32^ 28240 .SLASH IMS^ 28250 .SPACE Z^ 003233' 054015 366072 +BINRY 28260 .SLASH IMS^ 28270 .SPACE O^ 28280 .SLASH IMS^ 28290 .SLASH EIMS^ 003234' 366057 366357 +BINRY EDDT V.005A - EXEC MODE VERSION PAGE 70 OP DECODER 28310 ;TEST INSTRUCTIONS 28330 .COLON ACBM^ 28340 .ARROW 31^ 28350 .SLASH AC1^ 28360 .ARROW 01^ 28370 .SPACE D^ 003235' 014641 000044 +BINRY 28380 .SLASH AC2^ 28390 .SPACE S^ 28400 .SLASH AC2^ 28410 .COLON AC1^ 28420 .ARROW 01^ 003236' 645063 645000 +BINRY 28430 .SPACE R^ 28440 .SLASH AC2^ 28450 .COMMA L^ 28460 .COLON AC2^ 28470 .ARROW 42^ 003237' 062645 054021 +BINRY 28480 .SPACE N^ 28490 .SLASH EAN^ 28500 .SPACE Z^ 28510 .SLASH EAN^ 003240' 056655 072655 +BINRY 28520 .SPACE C^ 28530 .SLASH EAN^ 28540 .SPACE O^ 28550 .COLON EAN^ 28560 .ARROW 12^ 003241' 043655 057005 +BINRY 28570 .POINT ^ 28580 .COMMA ^ 28590 .SLASH E^ 28600 .SLASH PA^ 28610 .SLASH N^ 003242' 040573 500602 +BINRY EDDT V.005A - EXEC MODE VERSION PAGE 71 OP DECODER 28630 ;BOOLEAN 28650 .COLON BOOLE^ 28660 .ARROW 24^ 28670 .SLASH ST^ 28680 .COLON AN^ 28690 .SPACE AND^ 003243' 013713 041056 +BINRY 28700 .SLASH B2^ 28710 .SLASH AN^ 28720 .SLASH ST^ 003244' 044716 664713 +BINRY 28730 .SLASH AN^ 28740 .SLASH ST^ 28760 .SPACE X^ 28770 .COLON OR^ 28780 .SPACE OR^ 003245' 664713 070057 +BINRY 28790 .SLASH B2^ 28800 .SPACE I^ 28810 .SLASH OR^ 003246' 062716 051675 +BINRY 28820 .SLASH AN^ 28830 .SPACE EQ^ 28840 .SLASH DV2^ 003247' 664045 061410 +BINRY 28850 .SLASH ST^ 28860 .SLASH OR^ 28870 .SLASH ST^ 28880 .SLASH OR^ 003250' 713675 713675 +BINRY 28890 .SLASH OR^ 28910 .COLON ST^ 28920 .SPACE SET^ 003251' 675063 045064 +BINRY 28930 .COLON B2^ 28940 .ARROW 24^ 28950 .SPACE Z^ 28960 .SLASH IMB^ 28970 .SLASH IMB^ 003252' 013072 350350 +BINRY 28980 .COLON CA^ 28990 .SPACE C^ 29000 .SLASH TA^ 29010 .COLON TM^ 29020 .SPACE M^ 29030 .SLASH IMB^ 003253' 043730 055350 +BINRY 29050 .COLON CM^ 29060 .SPACE C^ EDDT V.005A - EXEC MODE VERSION PAGE 71-1 OP DECODER 29070 .SLASH TM^ 29080 .COLON TA^ 29090 .SPACE A^ 29100 .SLASH IMB^ 003254' 043724 041350 +BINRY 29110 .SLASH IMB^ 29120 .SLASH IMB^ 29130 .COLON CB^ 29140 .SPACE C^ 29150 .SLASH BIMB^ 003255' 350350 043347 +BINRY 29160 .SLASH IMB^ 29170 .SLASH CA^ 29190 .SLASH CA^ 29200 .SLASH CM^ 003256' 350722 722726 +BINRY 29210 .SLASH CM^ 29220 .SLASH CB^ 29230 .SPACE O^ 29240 .SLASH IMB^ 003257' 726734 057350 +BINRY EDDT V.005A - EXEC MODE VERSION PAGE 72 OP DECODER 29260 ;MORE UUO'S 29280 .COLON U50^ 29290 .ARROW 03^ 29300 .COMMA OPE^ 003260' 002057 060045 +BINRY 29310 .SLASH N^ 29320 .POINT ^ 29330 .POINT ^ 29340 .POINT ^ 003261' 602040 040040 +BINRY 29350 .POINT ^ 29360 .COMMA ^ 29370 .COMMA RENAM^ 003262' 040062 045056 +BINRY 29380 .SLASH E^ 29390 .COMMA I^ 003263' 041055 573051 +BINRY 29400 .SLASH N^ 29410 .COMMA OU^ 29420 .SLASH T^ 003264' 602057 065421 +BINRY 29440 .COLON U703^ 29450 .ARROW 02^ 29460 .COMMA CLOS^ 003265' 001043 054057 +BINRY 29470 .SLASH E^ 29480 .COMMA RELEA^ 003266' 063573 062045 +BINRY 29490 .SLASH S^ 003267' 054045 041372 +BINRY 29500 .COMMA MTAP^ 003270' 055064 041060 +BINRY 29510 .SLASH E^ 29520 .COMMA UGET^ 003271' 573065 047045 +BINRY 29530 .SLASH F^ EDDT V.005A - EXEC MODE VERSION PAGE 73 OP DECODER 29550 IF1, 29560 < 29570 BLOCK <CLOC+3>/4 29580 > 29600 IF2, 29610 < 29620 IFN BINC-^D36, 29630 < 003272' 064205 000000 29640 +BINRY 29650 > 29660 > 29700 IFNDEF CLOC.,<CLOC.=CLOC> 29710 IFN CLOC.-CLOC,<PRINTX PHASE ERROR IN OPTABLE> EDDT V.005A - EXEC MODE VERSION PAGE 74 OP DECODER 003273' 000000 003274' 29740 PNTR: EXP INST ;POINTER TO BITS IN INST 003274' 000000 000000 29750 INST: 0 ;BINARY FOR INSTRUCTION 003275' 000000 000000 29760 CHP: 0 ;CHAR POINTER INTO TXT, TXT+1 003276' 29770 TXT: BLOCK 2 ;STORE INPUT TEXT FOR OPEVAL 003300' 000000 000000 29780 SAVPDL: 0 ;SAVE PUSH DOWN LIST POINTER 003301' 441100 003100' 29800 BTAB: POINT 9,TBL ;TABLE USED TO GET NEXT BYTE POINTER 003302' 331100 003100' 29810 POINT 9,TBL,8 ;FOR TRANSFER BYTE 003303' 221100 003100' 29820 POINT 9,TBL,17 003304' 111100 003100' 29830 POINT 9,TBL,26 003305' 200240 003312' 29850 OPEVAL: MOVE T,OPEV1 ;EVALUATE FOR AN OP CODE 003306' 201300 002222' 29860 MOVEI W1,SYM 003307' 200100 003467' 29870 MOVE R,[POINT 7,TXT] 003310' 260040 002031' 29880 PUSHJ P,SPT4 003311' 201240 000000 29890 MOVEI T,0 003312' 136240 000002 29900 OPEV1: IDPB T,R 003313' 202040 003300' 29910 MOVEM P,SAVPDL 003314' 624000 000004 29920 TRZA F,OUTF 003315' 660000 000004 29930 OPTYPE: TRO F,OUTF ;TYPE AN OPCODE SYMBOLICALLY 003316' 242240 777745 29940 LSH T,-33 003317' 202240 003274' 29950 MOVEM T,INST ;GET OPCODE INTO RIGHT 9 BITS 003320' 200240 003467' 29960 MOVE T,[XWD 440700,TXT] 003321' 202240 003275' 29970 MOVEM T,CHP ;FOR OPEVAL,SETUP POINTER TO INPUT TEXT 003322' 620000 000002 29980 DEC: TRZ F,ITF ;CLEAR INSTRUCTION TYPED FLAG 003323' 403100 000006 29990 CLEARB R,W1 003324' 200340 003301' 30000 MOVE W2,BTAB 003325' 134240 000007 30010 DC1: ILDB T,W2 ;GET NEXT BYTE IN TBL 003326' 303240 000040 30020 CAILE T,40 003327' 301240 000073 30030 CAIL T,73 003330' 365100 003325' 30040 SOJGE R,DC1 ;SKIP OVER # BYTES = C(R) 003331' 327100 003325' 30050 JUMPG R,DC1 ;SKIP OVER ALPHA TEXT WITHOUT COUNTING 003332' 275240 000040 30060 SUBI T,40 003333' 322240 003362' 30070 JUMPE T,DECX ;TRANSFER ON ASTOP CODE 003334' 327240 003345' 30080 JUMPG T,DC2 003335' 137240 003470' 30090 DPB T,[XWD 340500,PNTR] ;SETUP R ON A DISPATCH BYTE 003336' 620240 777774 30100 TRZ T,-4 003337' 350000 000005 30110 AOS T 003340' 137240 003471' 30120 DPB T,[XWD 300600,PNTR] 003341' 606000 000004 30130 TRNN F,OUTF 003342' 254000 003401' 30140 JRST DC6 ;FOR OPEVAL ONLY 003343' 135100 003273' 30150 LDB R,PNTR ;GET # BYTES TO SKIP OVER 003344' 254000 003325' 30160 JRST DC1 003345' 571245 777745 30180 DC2: HRREI T,-33(T) 003346' 321240 003354' 30190 JUMPL T,DECT ;TYPE OUT A LETTER 003347' 201305 000025 30200 MOVEI W1,FIR.(T) ;BYTE IS A TRANSFER 003350' 231300 000004 30210 IDIVI W1,4 003351' 200347 003301' 30220 MOVE W2,BTAB(W2) ;CALCULATE POINTER TO NEXT BYTE 003352' 271346 000000 30230 ADDI W2,(W1) 003353' 254000 003325' 30240 JRST DC1 EDDT V.005A - EXEC MODE VERSION PAGE 75 OP DECODER 003354' 602000 000004 30280 DECT: TRNE F,OUTF 003355' 254000 003425' 30290 JRST DC8 ;TYPE OUT A LETTER 003356' 134300 003275' 30300 ILDB W1,CHP ;GET NEXT INPUT LETTER 003357' 302305 000133 30310 CAIE W1,133(T) ;COMPARE WITH ASSUMED NEXT LETTER 003360' 254000 003366' 30320 JRST NOMAT ;DOESNT MATCH 003361' 254000 003325' 30330 JRST DC1 ;MATCHES, TRY NEXT 003362' 602000 000004 30350 DECX: TRNE F,OUTF ;STOP (CODE 40) HAS BEEN SEEN 003363' 263040 000000 30360 POPJ P, ;IF FOR OUTPUT, RETURN 003364' 134300 003275' 30370 ILDB W1,CHP ;GET NEXT INPUT CHAR IF ANY 003365' 322300 003415' 30380 JUMPE W1,DC7 ;DOES # OF CHARS MATCH 003366' 262040 000002 30390 NOMAT: POP P,R ;NO, BACK UP AND TRY SOME MORE 003367' 262040 000007 30400 POP P,W2 003370' 262040 003273' 30410 POP P,PNTR 003371' 262040 003275' 30420 POP P,CHP 003372' 350000 000002 30430 NOMAT1: AOS R ;ASSUME NEXT NUMBER FOR BIN VALUE 003373' 137100 003273' 30440 DPB R,PNTR ;STUFF INTO ANSWER 003374' 135100 003273' 30450 LDB R,PNTR 003375' 326100 003403' 30460 JUMPN R,DC6AA ;IF =0, BYTE WAS TOO BIG 003376' 312040 003300' 30470 CAME P,SAVPDL 003377' 254000 003366' 30480 JRST NOMAT ;NOT AT TOP LEVEL 003400' 254000 000125' 30490 JRST UNDEF ;UNDEFINED, FINALLY 003401' 201100 000000 30510 DC6: MOVEI R,0 ;ASSUME 0 FOR INITIAL BINARY VALUE 003402' 137100 003273' 30520 DPB R,PNTR 003403' 316040 003300' 30530 DC6AA: CAMN P,SAVPDL 003404' 254000 003410' 30540 JRST DC6BB 003405' 135241 777776 30550 LDB T,-2(P) ;OLD VALUE OF PNTR 003406' 312241 000000 30560 CAME T,(P) 003407' 254000 003372' 30570 JRST NOMAT1 003410' 261040 003275' 30580 DC6BB: PUSH P,CHP 003411' 261040 003273' 30590 PUSH P,PNTR 003412' 261040 000007 30600 PUSH P,W2 003413' 261040 000002 30610 PUSH P,R 003414' 254000 003325' 30620 JRST DC1 003415' 200040 003300' 30640 DC7: MOVE P,SAVPDL ;RESTORE PUSH DOWN POINTER 003416' 200240 003274' 30650 MOVE T,INST 003417' 242240 000033 30660 LSH T,33 ;PUSH BINARY INTO POSITION FOR OPEVAL 003420' 135100 003472' 30670 LDB R,[POINT 3,T,8] 003421' 641240 700000 30680 TLC T,700000 003422' 647240 700000 30690 TLCN T,700000 003423' 137100 003473' 30700 DPB R,[POINT 10,T,12] ;ONLY DONE FOR IO INSTRUCTIONS 003424' 254000 000062' 30710 JRST L4 003425' 660000 000002 30730 DC8: TRO F,ITF ;SET INSTRUCTION TYPED FLAG 003426' 201245 000133 30740 MOVEI T,133(T) 003427' 260040 002676' 30750 PUSHJ P,TOUT ;OUTPUT A LETTER 003430' 402000 002223' 30760 CLEARM SPSAV ;SO $D WONT TRY TO DELETE OP CODES 003431' 254000 003325' 30770 JRST DC1 EDDT V.005A - EXEC MODE VERSION PAGE 76 OP DECODER 003432' 30790 LIT 003432' 002307' 000010 003433' 773767 002423 003434' 770767 000200 003435' 542613 000000 003436' 000002 000002 003437' 000000 000000 003440' 420202 000000 003441' 000044 000000 003442' 410300 002201' 003443' 331100 001241' 003444' 002700 001241' 003445' 270400 001241' 003446' 270400 002652' 003447' 264000 001041' 003450' 264000 001066' 003451' 002236' 002237' 003452' 777000 000000 003453' 270400 002206' 003454' 331100 002206' 003455' 220400 002206' 003456' 777777 400000 003457' 270300 000005 003460' 330600 000005 003461' 220400 000005 003462' 004006 000000 003463' 777740 000000 003464' 344300 002401' 003465' 254200 000000' 003466' 000011 111111 003467' 440700 003276' 003470' 340500 003273' 003471' 300600 003273' 003472' 330300 000005 003473' 271200 000005 003500' 30820 IFN EDDT&1&<EDDT>B36,<BUFF: BLOCK 40> 003540' 30840 PS: BLOCK LPDL 003610' 30860 DDTEND=. 30880 END NO ERRORS DETECTED PROGRAM BREAK IS 003610 10K CORE USED EDDT V.005A - EXEC MODE VERSION PAGE 77 SYMBOL TABLE %ACBM 001126 A 000002 AA 000010 ABSA 001002' AC0 002267' AC17 002306' ACCF 000613' ADR 000016 AR 000011 ARM 002310' ASSEM 000573' AUTOP 001361' AUTOPI 002266' B 000003 B1ADR 002236' B1CNT 002240' B1INS 001043' B1SKP 002237' BASE1 001011' BASECH 001005' BCOM 001071' BCOM2 001105' BCOM3 001103' BDISP 002744' BEG 000001 BINC 000022 SPD BINRY 064205 000000 SPD BITO 003034' BITT 003051' BITT2 003055' BLK1 002547' BLK2 002557' BLK3 002565' BLKEND 002425' BLOCK 002540' BLOCKS 002537' BNADR 002263' BP1 001041' BPLUP 001245' BPLUP1 001246' BPN 001066' BPS 001317' BPS1 001327' BPS2 001333' BPS3 001345' BPS4 001346' BPS5 001356' BREAK 001123' BREAK1 001147' BTAB 003301' BUFF 003500' C 000004 CARR 000700' EDDT V.005A - EXEC MODE VERSION PAGE 77-1 SYMBOL TABLE CCF 010000 CDR 011400 000000 INT CF 000040 CF1 000400 CHP 003275' CJTOUT 002016' CKSM 000017 CLOC 000752 SPD CLOC. 000752 CON 000774' CONS1 001464' CONSM 001463' CONSYM 001462' CONTRO 000344' CORE 002457' CORE1 002461' CORE2 002470' CPOPJ 000374' CPOPJ1 000373' CPUSHP 002652' CR 015000 000000 INT CRF 002657' CRN 002655' CTF 000400 DC 020000 000000 INT DC1 003325' DC2 003345' DC6 003401' DC6AA 003403' DC6BB 003410' DC7 003415' DC8 003425' DCSA 030000 000000 INT DCSB 030400 000000 INT DD1 000007' DD1.5 000011' DD2 000013' DDT 000000' ENT DDTEND 003610' INT DDTX 000000' ENT DEC 003322' DECT 003354' DECX 003362' DEF1 000515' DEF2 000525' DEF3 000533' DEF4 000553' DEFIN 000507' DEFV 002224' DELI 200000 DELO 400000 DEN 002211' DEP 001376' EDDT V.005A - EXEC MODE VERSION PAGE 77-2 SYMBOL TABLE DEP1 001402' DEPR 001372' DEPRA 000725' DEPRA2 000732' DEPRS 001371' DF 027000 000000 INT DIS 013000 000000 INT DISP 002747' DIVD 000571' DLS 024000 000000 INT DOLLAR 000346' DSK 017000 000000 INT DTC 021000 000000 INT DTS 021400 000000 INT DVF 040000 EDDT 000003 EFFEC 001622' EFFEC0 001677' EFFEC1 001702' EFFEC2 001707' EFFEC3 001716' EQUAL 000740' ERR 000123' ESTU 002213' ESTUT 002214' EVAL 000351' EVAL0 000352' EVAL1 000356' EVAL2 000357' EVAL3 000362' F 000000 FAF 001000 FCP 002163' FEED 002450' FEED1 002455' FEF 400000 FETCH 001404' FH 002221' FIR. 000025 SPD FIRARG 001410' FP1 002073' FP1A 002100' FP3 002101' FP3A 002112' FP4 002120' FP4A 002122' FP4B 002127' FP7 002135' FP7A 002140' FP7A1 002143' FP7B 002144' FPF 020000 FPWR 002217' EDDT V.005A - EXEC MODE VERSION PAGE 77-3 SYMBOL TABLE FRACT 002216' FRASE 002204' FRASE1 002210' FSGN 002166' FSV 002215' FT 002154' FT0 002163' FT01 002162' FT8 002150' FTERM 002220' FTOC 002003' GETW 002532' GETW1 002534' GLOBAL 040000 GO 001020' HALT 254200 000000 INT HLFW 001536' HWRDS 000771' ICON 000713' IFIX 003022' IJSA 001255' IJSP 001270' IJSR 001261' IJSR2 001263' IJSR3 001266' INDIRE 000607' INOUT 001572' INSRT1 001275' INSRT3 001303' INSRTB 001274' INST 003274' IPUSHJ 001251' ITF 000002 IXCT 001205' IXCT4 001203' IXCT5 001211' IXCT6 001240' JEN 254500 000000 INT JOBREL 000037 JOBSYM 000036 JOV 255400 000000 INT KILC 002200' KILL 000435' KILL1 000462' KILL2 000464' KILLA 000446' KILRET 000445' L1 000026' L1RPR 000030' L2 000035' L21 000050' L211 000055' L4 000062' EDDT V.005A - EXEC MODE VERSION PAGE 77-4 SYMBOL TABLE L5 000116' LCT 002662' LE1 000217' LE1A 000235' LE2 000236' LEAV 001241' LEAV1 001122' LET 000221' LET1 000234' LF 002660' LF1 002000 LI0 000652' LI1 000654' LI2 000663' LINEF 000651' LIS 000015' LIS0 000020' LIS1 000022' LIS2 000023' LISTEN 002714' LLOC 002226' LLOCO 002227' LOAD1 002417' LOAD2 002423' LOADB 002575' LOADE 002614' LOADER 002412' LOCAL 100000 LOOK 001420' LOOK1 001427' LOOK2 001447' LOOK3 001452' LOW 777777 777661' LPDL 000050 LPRN 000577' LPT 012400 000000 INT LTF 000020 LWT 002206' MASK 001612' MASK1 001620' MASK2 001615' MF 000002 MINUS 000574' MLF 000200 MSK 002235' MTC 022000 000000 INT MTM 023000 000000 INT MTS 022400 000000 INT MULT 000570' NAF 000200 NBP 000010 NM1 000251' NM1A 000255' EDDT V.005A - EXEC MODE VERSION PAGE 77-5 SYMBOL TABLE NM1A1 000257' NM1B 000264' NOMAT 003366' NOMAT1 003372' NSYMS 000116 NUM 000204' NUM1 000244' NWORD 001625' OCON 000702' ODF 000012 ODFM 002311' OPEV1 003312' OPEVAL 003305' OPTYPE 003315' OSYM 000703' OUTF 000004 P 000001 PAD 001543' PAD1 001562' PADS1 001547' PADS1A 001560' PADS2 001561' PADS3 001563' PADS3A 001564' PADS3B 001567' PADS4 001570' PADSO 001545' PBLK 002351' PBLK1 002354' PERC 000220' PERIOD 000313' PI 000400 000000 INT PI3 001504' PI3A 001507' PI3B 001510' PI4 001511' PI5 001515' PI7 001523' PI7.1 001531' PI8 001534' PID 000000 PILOC 000337' PIN 001467' PLT 014000 000000 INT PLUS 000575' PNAME 740000 PNTR 003273' POW2 000306' POWER 000271' POWF 004000 PRGM 002212' PRNC 002203' PROC0 001167' EDDT V.005A - EXEC MODE VERSION PAGE 77-6 SYMBOL TABLE PROC1 001175' PROC2 001200' PROCD1 001165' PROCED 001160' PRS 000004 PS 003540' PSR 002315' PSYM 000741' PTF 000100 PTP 010000 000000 INT PTPP 000100 PTR 010400 000000 INT PTRR 000104 PUN1 002333' PUN2 002327' PUNCH 002324' PUNZ 002365' PUNZ0 002364' PUNZ2 002375' PUNZ4 002401' PWRD 002440' PWRD2 002441' Q2F 000001 QF 000001 QUAN 000336' QUAN1 000340' QUAN2 000341' QUEST1 000170' QUEST2 000173' QUEST3 000176' QUEST4 000202' QUESTN 000166' R 000002 R50PNT 000745' RD 000003 RELA 000777' REMOV1 001310' REMOV3 001313' REMOVB 001307' REMUN 000470' RES1 002646' RESTOR 002637' RESTR1 002640' RET 000134' ROF 000010 RPRN 000627' RPRN1 000646' RUNEND 002530' S 000003 SAF 002000 SARS 002312' SAV1 002622' SAV5 002631' EDDT V.005A - EXEC MODE VERSION PAGE 77-7 SYMBOL TABLE SAVE 002615' SAVPDL 003300' SAVPI 002231' SAVTTY 002233' SBF 000020 SCH 000010 SCHM 002307' SEAR1 001642' SEAR2 001650' SEAR2A 001651' SEAR3 001655' SEAR4 001675' SEARC 001627' SEMIC 001016' SET1 000556' SET2 000557' SETNAM 000555' SETUP 001722' SETUP1 001723' SETUP2 001725' SF 000004 SFLOT 000772' SIXBI1 000421' SIXBI2 000431' SIXBIN 000422' SIXBP 000753' SIXBP1 000755' SLAS1 000711' SLASH 000706' SLL 010000 SPAC1 000625' SPACE 000623' SPSAV 002223' SPT 002030' SPT0 002027' SPT1 002033' SPT2 002037' SPT3 002047' SPT4 002031' SPTX 002050' STARTA 002234' STF 004000 SUPTYO 000705' SVBT2 003077' SVBT3 003076' SVBTS 003074' SVBTS2 003075' SYL 002205' SYM 002222' SYMBOL 000773' SYMD 002052' SYMP 002230' T 000005 EDDT V.005A - EXEC MODE VERSION PAGE 77-8 SYMBOL TABLE TAB 000717' TAG 000477' TBL 003100' TBL1 000011 TBL2 000014 TDC 032000 000000 INT TDS 032400 000000 INT TEM 002313' TEM1 002314' TEM2 002207' TEM3 002210' TEXI 000375' TEXI2 000407' TEXI3 000415' TEXIN 002740' TEXO 000763' TEXT 002171' TEXT2 002173' TEXTT 002170' TFLOT 002060' TFLOT1 002070' TIF 100000 TIN 002666' TMC 034000 000000 INT TMS 034400 000000 INT TOC 002003' TOC1 002010' TOC2 002014' TOC3 002012' TOC4 002017' TOC5 002023' TOC6 002025' TOCA 002006' TOUT 002676' TSPC 002664' TTY 012000 000000 INT TTY1 002722' TTYLEV 002732' TTYRET 002721' TTYY 000120 TXT 003276' ULIM 001413' ULIM1 001415' ULIMIT 002225' UND1 000137' UNDEF 000125' VARRW 000674' VER2 002500' VER3 002526' VERIFY 002456' W 000004 W1 000006 W2 000007 EDDT V.005A - EXEC MODE VERSION PAGE 77-9 SYMBOL TABLE WORD 001624' WRD 002201' WRD2 002202' WRONG 000127' WRONG1 000130' XEC 001024' XEC0 001026' XEC1 001034' ZERO 001747' ZERO1 001752' ZERO2 001757' ZEROR 001776' ZLOW 000040 ZZ 000010 $1B 002236' INT $2B 002241' INT $3B 002244' INT $4B 002247' INT $5B 002252' INT $6B 002255' INT $7B 002260' INT $8B 002263' INT $I 002231' INT $M 002235' INT %A 000207 SPD %AC1 000573 SPD %AC2 000577 SPD %ACBM 000564 SPD %ACCP 000466 SPD %AN 000616 SPD %AO 000356 SPD %AOB 000402 SPD %B 000221 SPD %B2 000650 SPD %BD 000025 SPD %BIMB 000301 SPD %BOOLE 000614 SPD %BPUT 000134 SPD %BYTE 000223 SPD %C 000464 SPD %CA 000654 SPD %CA1 000504 SPD %CB 000666 SPD %CM 000660 SPD %COMP 000522 SPD %DP 000254 SPD %DV 000335 SPD %DV1 000340 SPD %DV2 000342 SPD %E 000525 SPD %EAN 000607 SPD %EIMS 000311 SPD %F 000137 SPD EDDT V.005A - EXEC MODE VERSION PAGE 77-10 SYMBOL TABLE %FLO 000170 SPD %H1 000344 SPD %HAK 000257 SPD %HW1 000550 SPD %HW2 000546 SPD %HW3 000555 SPD %HW4 000554 SPD %HWT 000540 SPD %I 000304 SPD %IMB 000302 SPD %IMS 000320 SPD %IO 000036 SPD %J 000440 SPD %JP 000405 SPD %JS 000476 SPD %L 000215 SPD %LD 000247 SPD %LMB 000213 SPD %M 000217 SPD %ML 000326 SPD %ML1 000331 SPD %MO 000310 SPD %MV 000261 SPD %N 000534 SPD %O 000153 SPD %OI 000041 SPD %OR 000627 SPD %P 000243 SPD %PA 000432 SPD %PO 000415 SPD %POP 000443 SPD %PSJ 000521 SPD %PU 000407 SPD %PUS 000437 SPD %R 000423 SPD %S 000324 SPD %S1 000462 SPD %S2 000456 SPD %S3 000457 SPD %SH 000446 SPD %SJ 000511 SPD %ST 000645 SPD %T 000353 SPD %TA 000662 SPD %TM 000656 SPD %U40 000101 SPD %U47 000114 SPD %U50 000700 SPD %U60 000123 SPD %U603 000144 SPD %U6062 000157 SPD %U62 000163 SPD %U703 000724 SPD EDDT V.005A - EXEC MODE VERSION PAGE 77-11 SYMBOL TABLE %USET 000072 SPD %UUO 000044 SPD %Z 000155 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 11:23:08 File: DSKB1 :LOADER.LST [8,200] Created: 20-April-1967 11:18:00 Printed: 24-April-1978 11:22:29 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:1855 File will be deleted after printing LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 1 DICK GRUEN: V25 3 AUG 68 SUBTTL DICK GRUEN: V25 3 AUG 68 ;K=1 ;K=1 MEANS 1KLOADER IFNDEF K,<K=0> ;K=0 MEANS F4 LOADER ;RPGSW=1 ;MEANS RPG FEATURE IFNDEF RPGSW,<RPGSW=0> ;LDAC=1 ;MEANS LOAD CODE INTO ACS IFNDEF LDAC,<LDAC=0> ;BLTSYM=1 ;MOVE SYMBOL TABLE DOWN TO END OF PROG IFNDEF BLTSYM,<BLTSYM=0> ;EXPAND=1 ;FOR AUTOMATIC CORE EXPANSION IFNDEF EXPAND,< IFN K,<EXPAND=0> IFE K,<EXPAND=1>> ;PP=1 ;ALLOW PROJ-PROG # IFNDEF PP,<PP=0> ;CHN5=0 ;IF CHAIN WHICH DOESN'T SAVES JOB41 IFNDEF CHN5,<CHN5=1> IFE K,< TITLE LOADER - LOADS MACROX AND SIXTRAN FOUR> IFN K,< TITLE 1KLOAD - LOADS MACROX> LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 2 DICK GRUEN: V25 3 AUG 68 ;ACCUMULATOR ASSIGNMENTS 000000 F=0 ;FLAGS IN LH, SA IN RH 000001 N=1 ;PROGRAM NAME POINTER 000002 X=2 ;LOADER OFFSET 000003 H=3 ;HIGHEST LOC LOADED 000004 S=4 ;UNDEFINED POINTER 000005 R=5 ;RELOCATION CONSTANT 000006 B=6 ;SYMBOL TABLE POINTER 000007 D=7 000010 T=10 000011 V=T+1 000012 W=12 ;VALUE 000013 C=W+1 ;SYMBOL 000014 E=C+1 ;DATA WORD COUNTER 000015 Q=15 ;RELOCATION BITS 000016 A=Q+1 ;SYMBOL SEARCH POINTER 000017 P=17 ;PUSHDOWN POINTER ;FLAGS F(0 - 17) 000001 CSW==1 ;ON - COLON SEEN 000002 ESW==2 ;ON - EXPLICIT EXTENSION IDENT. 000004 SKIPSW==4 ;ON - DO NOT LOAD THIS PROGRAM 000010 FSW==10 ;ON - SCAN FORCED TO COMPLETION 000020 FCONSW==20 ;ON - FORCE CONSOLE OUTPUT 000100 ASW==100 ;ON - LEFT ARROW ILLEGAL 000200 FULLSW==200 ;ON - STORAGE EXCEEDED 000400 SLIBSW==400 ;ON - LIB SEARCH IN THIS PROG 001000 DSYMSW==1000 ;ON - LOAD WITH SYMBOLS FOR DDT 002000 REWSW==2000 ;ON - REWIND AFTER INIT 004000 LIBSW==4000 ;ON - LIBRARY SEARCH MODE 010000 F4LIB==10000 ;ON - F4 LIBRARY SEARCH LOOKUP 020000 ISW==20000 ;ON - DO NOT PERFORM INIT 040000 SYMSW==40000 ;ON - LOAD LOCAL SYMBOLS 100000 DSW==100000 ;ON - CHAR IN IDENTIFIER 200000 NSW==200000 ;ON - SUPPRESS LIBRARY SEARCH 400000 SSW==400000 ;ON - SWITCH MODE ;FLAGS N(0 - 17) 000001 ALLFLG==1 ;ON - LIST ALL GLOBALS 000002 ISAFLG==2 ;ON - IGNORE STARTING ADDRESSES 000004 COMFLG==4 ;ON - SIZE OF COMMON SET 000010 IFE K,< F4SW==10 ;F4 IN PROGRESS 000020 RCF==20 ;READ DATA COUNT 000040 SYDAT==40 ;SYMBOL IN DATA> 000100 SLASH==100 ;SLASH SEEN 000200 IFE K,< BLKD1==200 ;ON- FIRST BLOCK DATA SEEN 000400 PGM1==400 ;ON FIRST F4 PROG SEEN 001000 DZER==1000 ;ON - ZERO SECOND DATA WORD> 002000 EXEQSW==2000 ;IMMEDIATE EXECUTION 004000 DDSW==4000 ;GO TO DDT IFN RPGSW,<RPGF==10000 ;IN RPG MODE> 020000 AUXSWI==20000 ;ON - AUX. DEVICE INITIALIZED 040000 AUXSWE==40000 ;ON - AUX. DEVICE ENTERED IFN PP,<PPSW==100000 ;ON - READING PROJ-PROG # PPCSW==200000 ;ON - READING PROJ #> LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 3 DICK GRUEN: V25 3 AUG 68 000137 LOC 137 000137 000000 000025 OCT 25 ;VERSION # 000000' RELOC MLON SALL ;MONITOR LOCATIONS IN THE USER AREA 000140 JOBPRO==140 ;PROGRAM ORIGIN 000134 JOBBLT==134 ;BLT ORIGIN 000131 JOBCHN==131 ;RH = PROG BREAK OF FIRST BLOCK DATA ;LH = PROG BREAK OF FIRST F4 PROG ;CALLI DEFINITIONS 000003 CDDTOUT==3 ;CALLI DDTOUT 000012 CEXIT==12 ;CALLI EXIT 000005 CDDTGT==5 ;CALLI DDTGT 000002 CSETDDT==2 ;CALLI SETDDT ;LENGTH OF PUSHDOWN LIST FOR POLISH FIXUPS 000060 PPDL==60 LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 4 DICK GRUEN: V25 3 AUG 68 IFN RPGSW,< RPGSET: CALLI 0 INIT 17,1 ;SET UP DSK SIXBIT /DSK/ XWD 0,CTLIN JRST NUTS MOVE [SIXBIT /QQLOAD/] ;NAME OF COMMAND FILE MOVEM CTLNAM MOVSI (SIXBIT /RPG/) ;AND EXT MOVEM CTLNAM+1 SETZM CTLNAM+3 LOOKUP 17,CTLNAM ;THERE? JRST NUTS ;NO INIT 16,16 ;GET SET TO DELETE QQLOAD.RPG SIXBIT /DSK/ 0 JRST LD ;GIVE UP COMPLETELY SETZM CTLNAM+3 HLLZS CTLNAM+1 ;CLEAR OUT EXTRA JUNK LOOKUP 16,CTLNAM JRST LD RENAME 16,ZEROS ;DELETE IT JFCL ;IGNORE IF IT WILL NOT GO RELEASE 16,0 ;GET RID OF THIS DEVICE SETZM NONLOD ;THIS IS NOT A CONTINUATION RPGS3: MOVEI CTLBUF MOVEM JOBFF ;SET UP BUFFER INBUF 17,1 MOVEI [ASCIZ / LOADING /] ;PRINT MESSAGE THAT WE ARE STARTING CALLI CDDTOUT SKIPE NONLOD ;CONTINUATION? JRST RPGS2 ;YES, SPECIAL SETUP MOVSI R,F.I ;NOW SO WE CAN SET FLAG BLT R,R TLO N,RPGF JRST CTLSET ;SET UP TTY RPGS1: PUSHJ P,[TLNE F,ESW ;HERE FROM FOO* COMMAND, STORE NAME JRST LDDT3 ;SAVE EXTENSION TLZE F,CSW!DSW ;OR AS NAME MOVEM W,DTIN POPJ P,] MOVEM 0,SVRPG# ;SAVE 0 JUST IN CASE SETZM NONLOD# ;DETERMINE IF CONTINUATION MOVEI 0,2(B) ;BY SEEING IF ANY SYMBOLS LOADED CAME 0,JOBREL SETOM NONLOD ;SET TO -1 AND SKIP CALLI MOVE 0,ILD1 MOVEM 0,RPG1 INIT 17,1 RPG1: 0 XWD 0,CTLIN LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 4-1 DICK GRUEN: V25 3 AUG 68 JSP A,ILD5 LOOKUP 17,DTIN ;THE FILE NAME JRST ILD9 JRST RPGS3 RPGS2: MOVSI 0,RPGF ;SET FLAG IORM 0,F.C+N TLO N,RPGF MOVE 0,SVRPG JRST LD2Q ;BACK TO INPUT SCANNING > LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 5 DICK GRUEN: V25 3 AUG 68 ;MONITOR LOADER CONTROL 000000' BEG: LD: IFN RPGSW,<SKIPA ;NORMAL INITIALIZE JRST RPGSET ;SPECIAL INIT> 000000' 513000 000042 HLLZS 42 ;GET RID OF ERROR COUNT IF NOT IN RPG MODE 000001' 047000 000000 CALLI 0 ;INITIALIZE THIS JOB 000002' 205240 002031' NUTS: MOVSI R,F.I ;SET UP INITIAL ACCUMULATORS 000003' 251240 000005 BLT R,R 000004' 041140 000001 CTLSET: INIT 3,1 ;INITIALIZE CONSOLE 000005' 646471 000000 SIXBIT /TTY/ 000006' 002040' 002043' XWD BUFO,BUFI 000007' 047000 000012 CALLEX: CALLI CEXIT ;DEVICE ERROR, FATAL TO JOB 000010' 201600 002064' MOVEI E,TTY1 000011' 202600 000000* MOVEM E,JOBFF 000012' 064140 000001 INBUF 3,1 000013' 065140 000001 OUTBUF 3,1 ;INITIALIZE OUTPUT BUFFERS 000014' 067140 000000 OUTPUT 3, ;DO INITIAL REDUNDANT OUTPUT 000015' 550300 000000* HRRZ B,JOBREL ;PICK UP CORE BOUND 000016' 332000 000000* SKIPE JOBDDT ;DOES DDT EXIST? 000017' 550300 000000* HRRZ B,JOBSYM ;USED BOTTOM OF SYMBOL TABLE INSTEAD 000020' 274300 001753' SUB B,SE3 ;INITIALIZE SYMBOL TABLE POINTER 000021' 303146 000001 CAILE H,1(B) ;TEST CORE ALLOCATION 000022' 047000 000012 CALLI CEXIT ;INSUFFICIENT CORE, FATAL TO JOB 000023' 204600 000002 MOVS E,X ;SET UP BLT POINTER 000024' 541602 000001 HRRI E,1(X) 000025' 402014 777777 SETZM -1(E) ;ZERO FIRST WORD 000026' 251606 000000 BLT E,(B) ;ZERO CORE UP TO THE SYMBOL AREA 000027' 550200 000006 HRRZ S,B ;INITIALIZE UNDEF. POINTER 000030' 540040 000006 HRR N,B ;INITIALIZE PROGRAM NAME POINTER 000031' 541240 000140 HRRI R,JOBPRO ;INITIALIZE THE LOAD ORIGIN 000032' 200600 001756' MOVE E,COMM ;SET .COMM. AS THE FIRST PROGRAM 000033' 202606 000001 MOVEM E,1(B) ;STORE IN SYMBOL TABLE 000034' 552246 000002 HRRZM R,2(B) ;STORE COMMON ORIGIN 000035' 201600 002022' MOVEI E,F.C ;INITIALIZE STATE OF THE LOADER 000036' 251600 002030' BLT E,B.C 000037' 402000 001761' SETZM MDG ;MULTIPLY DEFINED GLOBAL COUNT 000040' 205500 254200 MOVSI W,254200 ;STORE HALT IN JOB41 000041' 202502 000000* MOVEM W,JOB41(X) ;... IFN LDAC!BLTSYM,<MOVEI W,20 ;SET UP SPACE TO SAVE FOR ACS AND MOVEM W,KORSP# ;USER DEFINITIONS WITH DDT> LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 6 DICK GRUEN: V25 3 AUG 68 IFN RPGSW,<JRST LD2Q> LD2: IFN RPGSW,<MOVSI B,RPGF ;HERE ON ERRORS, TURN OFF RPG ANDCAM B,F.C+N ;IN CORE> ;LOADER SCAN FOR FILE NAMES 000042' 205300 002022' LD2Q: MOVSI B,F.C ;RESTORE ACCUMULATORS 000043' 251300 000006 BLT B,B 000044' 200740 001755' MOVE P,PDLPT ;INITIALIZE PUSHDOWN LIST 000045' 402000 002045' SETZM BUFI2 ;CLEAR INPUT BUFFER POINTER 000046' 402000 000616' IFE PP,< SETZM ILD1 ;CLEAR INPUT DEVICE NAME> IFN PP,< MOVSI T,(SIXBIT /DSK/) ;ASSUME DSK MOVEM T,ILD1 SETZM OLDDEV# ;TO MAKE IT GO BACK AFTER /D FOR LIBSR> 000047' 402000 002054' SETZM DTIN ;CLEAR INPUT FILE NAME IFN PP,<SETZM PPN# ;CLEAR INPUT PROJ-PROG #> 000050' 071040 000000 LD2B: RELEAS 1, ;RELEASE BINARY INPUT DEVICE IFN RPGSW,< TLNE N,RPGF ;NOT IF DOING RPG JRST LD2BA> 000051' 201400 000052 MOVEI T,"*" 000052' 136400 002041' IDPB T,BUFO1 ;OUTPUT ASTERISK TO START INPUT 000053' 067140 000000 OUTPUT 3, 000054' 621000 022707 LD2BA: TLZ F,FULLSW+ASW+ISW+CSW+ESW+SKIPSW+SLIBSW+REWSW 000055' 603000 004000 TLNE F,LIBSW ;WAS LIBRARY MODE ON? 000056' 661000 000004 TLO F,SKIPSW ;YES, NORMAL MODE IS SKIPPING LD2D: IFN PP,<SETZM PPN ;DO NOT REMEMBER PPNS FOR NOW LD2DB: SKIPE W,OLDDEV ;RESET DEVICE IF NEEDED CAMN W,ILD1 ;IS IT SAME? JRST LD2DA ;YES, FORGET IT TLZ F,ISW+DSW+FSW+REWSW MOVEM W,ILD1> 000057' LD2DA: IFN RPGSW,< SETZM DTIN1 ;CLEAR EXTENSION> 000057' 201500 000000 MOVEI W,0 ;INITIALIZE IDENTIFIER SCAN 000060' 201600 000006 MOVEI E,6 ;INITIALIZE CHARACTER COUNTER 000061' 200440 001754' MOVE V,LSTPT ;INITIALIZE BYTE POINTER TO W 000062' 621000 500010 TLZ F,SSW+DSW+FSW ;LEAVE SWITCH MODE LD3: IFN RPGSW,<TLNE N,RPGF ;CHECK RPG FEATURE JRST RPGRD> 000063' 377000 002045' SOSG BUFI2 ;DECREMENT CHARACTER COUNT 000064' 066140 000000 INPUT 3, ;FILL TTY BUFFER 000065' 134400 002044' ILDB T,BUFI1 ;LOAD T WITH NEXT CHARACTER 000066' 200640 000010 LD3AA: MOVE Q,T 000067' 231640 000011 IDIVI Q,11 ;TRANSLATE TO 4 BIT CODE 000070' 135656 000561' LDB Q,LD8(A) ;LOAD CLASSIFICATION CODE 000071' 305640 000004 CAIGE Q,4 ;MODIFY CODE IF .GE. 4 000072' 607000 400000 TLNN F,SSW ;MODIFY CODE IF SWITCH MODE OFF 000073' 271640 000004 ADDI Q,4 ;MODIFY CLASS. CODE FOR DISPATCH 000074' 550715 000100' HRRZ A,LD3A(Q) ;LOAD RH DISPATCH ENTRY 000075' 301640 000010 CAIL Q,10 ;SKIP IF CORRECT DISPATCH ENTRY 000076' 554715 000070' HLRZ A,LD3A-10(Q) ;LOAD LH DISPATCH ENTRY LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 6-1 DICK GRUEN: V25 3 AUG 68 000077' 254020 000016 JRST @A ;JUMP TO INDICATED LOCATION ;COMMAND DISPATCH TABLE 000100' 000063' 000542' LD3A: XWD LD3,LD7B ;IGNORED CHAR, BAD CHAR (SWITCH) 000101' 000461' 000466' XWD LD6A,LD6 ;</> OR <(>, LETTER (SWITCH) 000102' 000115' 000524' XWD LD5,LD6C ;<:>, DIGIT (SWITCH ARG.) 000103' 000127' 000527' XWD LD5A,LD6D ;<.>, ESCAPE SWITCH MODE <)> 000104' 000145' 000533' XWD LD5C,LD7 ;<=> OR <L. ARROW>, BAD CHAR. 000105' 000134' 000110' XWD LD5B,LD4 ;<,>, ALPHABETIC CHAR. 000106' 000201' 000110' XWD LD5D,LD4 ;<CR.>, NUMERIC CHAR. 000107' 000205' 000533' XWD LD5E1,LD7 ;<ALT MODE>, BAD CHAR. <)> IFN RPGSW,<RPGRD: SOSG CTLIN+2 ;CHECK CHARACTER COUNT JRST [IN 17,0 JRST .+1 ;OK STATO 17,740000 JRST LD2 JSP A,ERRPT SIXBIT /ERROR WHILE READING COMMAND FILE%/ JRST LD2] IBP CTLIN+1 ;ADVANCE POINTER MOVE T,@CTLIN+1 ;AND CHECK FOR LINE # TRNE T,1 JRST [MOVNI T,5 ADDM T,CTLIN+2 AOS CTLIN+1 JRST RPGRD ];GO READ AGAIN LDB T,CTLIN+1 ;GET CHR JRST LD3AA ;PASS IT ON> LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 7 DICK GRUEN: V25 3 AUG 68 ;ALPHANUMERIC CHARACTER, NORMAL MODE 000110' 361600 000063' LD4: SOJL E,LD3 ;JUMP IF NO SPACE FOR CHAR IN W 000111' 275400 000040 SUBI T,40 ;CONVERT FROM ASCII TO SIXBIT 000112' 136400 000011 IDPB T,V ;DEPOSIT CHAR OF IDENTIFIER IN W 000113' 661000 100000 TLO F,DSW ;SET IDENTIFIER FLAG 000114' 254000 000063' JRST LD3 ;RETURN FOR NEXT CHARACTER ;DEVICE IDENTIFIER DELIMITER <:> 000115' 261740 000012 LD5: PUSH P,W ;SAVE W 000116' 663000 000001 TLOE F,CSW ;TEST AND SET COLON FLAG 000117' 260740 000752' PUSHJ P,LDF ;FORCE LOADING 000120' 262740 000012 POP P,W ;RESTORE W 000121' 603000 000002 TLNE F,ESW ;TEST SYNTAX 000122' 254000 000536' JRST LD7A ;ERROR, MISSING COMMA ASSUMED 000123' 322500 000057' JUMPE W,LD2D ;JUMP IF NULL DEVICE IDENTIFIER 000124' 202500 000616' MOVEM W,ILD1 ;STORE DEVICE IDENTIFIER IFN PP,<MOVEM W,OLDDEV ;WE HAVE A NEW ONE SO IGNORE OLD> 000125' 621000 122010 TLZ F,ISW+DSW+FSW+REWSW ;CLEAR OLD DEVICE FLAGS IFN PP,<SETZM PPN ;CLEAR OLD PP #> 000126' 254000 000057' JRST LD2D ;RETURN FOR NEXT IDENTIFIER ;FILE NAME EXTENSION IDENTIFIER DELIMITER <.> 000127' 663000 000002 LD5A: TLOE F,ESW ;TEST AND SET EXTENSION FLAG 000130' 254000 000536' JRST LD7A ;ERROR, TOO MANY PERIODS 000131' 623000 100001 TLZE F,CSW+DSW ;SKIP IF NULL IDENT AND NO COLON 000132' 202500 002054' MOVEM W,DTIN ;STORE FILE IDENTIFIER 000133' 254000 000057' JRST LD2D ;RETURN FOR NEXT IDENTIFIER ;INPUT SPECIFICATION DELIMITER <,> 000134' LD5B: IFN PP,<TLZE N,PPCSW ;READING PP #? JRST [ HRLM D,PPN ;STORE PROJ # JRST LD6A1] ;GET PROG # PUSHJ P,RBRA ;CHECK FOR MISSING RBRA> 000134' 627000 000010 TLZN F,FSW ;SKIP IF PREV. FORCED LOADING 000135' 260740 000751' PUSHJ P,FSCN2 ;LOAD (FSW NOT SET) 000136' 254000 000057' JRST LD2D ;RETURN FOR NEXT IDENTIFIER 000137' 603000 000002 LD5B1: TLNE F,ESW ;TEST EXTENSION FLAG 000140' 254000 000723' JRST LDDT3 ;EXPLICIT EXTENSION IDENTIFIER 000141' 627000 100001 TLZN F,CSW+DSW ;SKIP IF IDENT. OR COLON 000142' 263740 000000 POPJ P, 000143' 202500 002054' MOVEM W,DTIN ;STORE FILE IDENTIFIER 000144' 254000 000722' JRST LDDT2 ;ASSUME <.REL> IN DEFAULT CASE LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 8 DICK GRUEN: V25 3 AUG 68 ;OUTPUT SPECIFICATION DELIMITER <=> OR <LEFT ARROW> ;OR PROJ-PROG # BRACKETS <[> AND <]> 000145' LD5C: IFN RPGSW,<CAIN T,"@" ;CHECK FOR * COMMAND JRST RPGS1> IFN PP,<CAIN T,"[" ;PROJ-PROG #? JRST [TLO N,PPSW+PPCSW ;SET FLAGS MOVEM W,PPNW# ;SAVE W MOVEM E,PPNE# ;SAVE E MOVEM V,PPNV# ;SAVE V JRST LD6A1-1] ;READ NUMBERS AS SWITCHES CAIN T,"]" ;END OF PP #? JRST [PUSHJ P,RBRA ;PROCESS RIGHT BRACKET JRST LD3 ];READ NEXT IDENT> 000145' 663000 000100 TLOE F,ASW ;TEST AND SET LEFT ARROW FLAG 000146' 254000 000536' JRST LD7A ;ERROR, MISPLACED LEFT ARROW 000147' 260740 000137' PUSHJ P,LD5B1 ;STORE IDENTIFIER 000150' 627000 000002 TLZN F,ESW ;TEST EXTENSION FLAG 000151' 205500 554160 MOVSI W,554160 ;ASSUME <.MAP> IN DEFAULT CASE 000152' 202500 002061' MOVEM W,DTOUT1 ;STORE FILE EXTENSION IDENTIFIER 000153' 200500 002054' MOVE W,DTIN ;LOAD INPUT FILE IDENTIFIER 000154' 202500 002060' MOVEM W,DTOUT ;USE AS OUTPUT FILE IDENTIFIER IFN PP,<MOVE W,PPN ;PROJ-PROG # MOVEM W,DTOUT+3 ;...> 000155' 200500 000616' MOVE W,ILD1 ;LOAD INPUT DEVICE IDENTIFIER 000156' 202500 000165' MOVEM W,LD5C1 ;USE AS OUTPUT DEVICE IDENTIFIER IFN PP,< SKIPE W,OLDDEV ;RESTORE OLD MOVEM W,ILD1> ;INITIALIZE AUXILIARY OUTPUT DEVICE 000157' 623040 060000 TLZE N,AUXSWI+AUXSWE ;FLUSH CURRENT DEVICE 000160' 071100 000000 RELEASE 2, ;... 000161' 040500 004064' CALL W,[SIXBIT ?DEVCHR?] ;IS DEVICE A TTY? 000162' 603500 000010 TLNE W,10 ;... 000163' 254000 000057' JRST LD2D ;YES, SKIP INIT 000164' 041100 000001 INIT 2,1 ;INIT THE AUXILIARY DEVICE 000165' 000000 000000 LD5C1: 0 ;AUXILIARY OUTPUT DEVICE NAME 000166' 002046' 000000 XWD ABUF,0 ;BUFFER HEADER 000167' 265700 000643' JSP A,ILD5 ;ERROR RETURN 000170' 603000 002000 TLNE F,REWSW ;REWIND REQUESTED? 000171' 040100 004065' CALL 2,[SIXBIT /UTPCLR/] ;DECTAPE REWIND 000172' 623000 002000 TLZE F,REWSW ;SKIP IF NO REWIND REQUESTED 000173' 072100 000001 MTAPE 2,1 ;REWIND THE AUX DEV 000174' 201600 002544' MOVEI E,AUX ;SET BUFFER ORIGIN 000175' 202600 000011* MOVEM E,JOBFF 000176' 065100 000001 OUTBUF 2,1 ;INITIALIZE SINGLE BUFFER 000177' 661040 020000 TLO N,AUXSWI ;SET INITIALIZED FLAG 000200' 254000 000057' JRST LD2D ;RETURN TO CONTINUE SCAN LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 9 DICK GRUEN: V25 3 AUG 68 ;RIGHT SQUARE BRACKET (PROJ-PROG NUMBERS) IFN PP,< RBRA: TLZN N,PPSW ;READING PP #? POPJ P, ;NOPE, RETURN TLZE N,PPCSW ;COMMA SEEN? JRST LD7A ;NOPE, INDICATE ERROR HRRM D,PPN ;STASH PROG NUMBER MOVE W,PPNW# ;PICKUP OLD IDENT MOVE E,PPNE# ;RESTORE CHAR COUNT MOVE V,PPNV# ;RESTORE BYTE PNTR POPJ P, ;TRA 1,4 ;RIGHT JUSTIFY W RJUST: JUMPE W,LD7A ;NOTHING TO RIGHT JUSTIFY TRNE W,77 ;IS W RJUSTED YET? POPJ P, ;YES, TRA 1,4 LSH W,-6 ;NOPE, TRY AGAIN JRST .-3 ;...> LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 10 DICK GRUEN: V25 3 AUG 68 ;LINE TERMINATION <CARRIAGE RETURN> 000201' LD5D: IFN PP,<PUSHJ P,RBRA ;CHECK FOR UNTERMINATED PP #> 000201' 260740 000730' PUSHJ P,FSCN ;FORCE SCAN TO COMPLETION 000202' 254000 000050' JRST LD2B ;RETURN FOR NEXT LINE ;TERMINATE LOADING <ALT MODE> 000203' 332000 000007 LD5E: SKIPE D ;ENTER FROM G COMMAND 000204' 540000 000007 HRR F,D ;USE NUMERIC STARTING ADDRESS 000205' LD5E1: 000205' 260740 001730' PUSHJ P,CRLF ;START A NEW LINE 000206' 260740 000227' PUSHJ P,SASYM ;SETUP JOBSA,JOBFF,JOBSYM,JOBUSY IFN LDAC!BLTSYM,<HRRZ A,R ;SET UP BLT OF ACS ADDI A,(X) ;END ADD A,KORSP ;ADD IN SPACE RESERVED CAIL A,(S) IFN EXPAND,<JRST [PUSHJ P,XPAND> PUSHJ P,[ IFE EXPAND,< JSP A,ERRPT SIXBIT /MORE CORE NEEDED#/> CALLI CEXIT] IFN EXPAND,< JRST .-1]> HRRM R,BOTACS# ;SAVE FOR LATER HRRZ A,R ;SET BLT ADD A,X HRL A,X MOVE Q,A BLT A,17(Q)> IFN BLTSYM,<HRRZ A,R ;PLACE TO BLT TO ADD A,KORSP MOVE W,A ;SAVE DEST ADDI A,(X) ;AFTER ADJUSTMENT MOVE Q,S ;UDEF PNTR ADD Q,B ;TOTAL UNDEFS AND DEFS IN LEFT HLROS Q ;NOW NEG IN RIGHT MOVNS Q ;POSITIVE ADDI Q,-1(A) ;END OF BLT HRLI A,1(S) ;AND GET PLACE TO BLT FROM SUBI W,1(S) ;PREST LOC OF SYMBOL TABLE ADDM W,JOBSYM(X) ADDM W,JOBUSY(X) ;ADJUST POINTERS BLT A,(Q) ;MOVE IT SKIPN JOBDDT(X) ;IS DDT THERE? JRST NODDT SUBI Q,-1(X) HRRM Q,JOBFF(X) ;RESTET JOBFF IF DDT IS IN HRLM Q,JOBSA(X) NODDT:> 000207' 200500 004066' MOVE W,[SIXBIT ?LOADER?] ;FINAL MESSAGE 000210' 260740 000251' PUSHJ P,BLTSET ;SETUP FOR FINAL BLT LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 10-1 DICK GRUEN: V25 3 AUG 68 000211' 071100 000000 RELEASE 2, ;RELEASE AUX. DEV. IFN RPGSW,<RELEASE 17,0 ;RELEASE COMMAND DEVICE> 000212' 200500 004067' LD5E5: MOVE W,[BLT Q,(A)] ;BLT OF ALL CODE 000213' 202500 000134 MOVEM W,JOBBLT ;STASH IN JOB DATA AREA 000214' 202502 000134 MOVEM W,JOBBLT(X) ;STASH IN RELOCATED JOBDATA AREA 000215' 200500 000007' LD5E2: MOVE W,CALLEX ;EXIT AFTER BLT 000216' 627040 002000 TLZN N,EXEQSW ;IMMEDIATE EXECUTION REQUESTED? 000217' 254000 000225' JRST LD5E3 ;NOPE, LET USER TYPE START HIMSELF 000220' 550502 000000* HRRZ W,JOBSA(X) ;PICKUP USUAL STARTING ADDRESS 000221' 603040 004000 TLNE N,DDSW ;DDT EXECUTION? 000222' 550502 000016* HRRZ W,JOBDDT(X) ;USE DDT SA INSTEAD 000223' 322500 000215' JUMPE W,LD5E2 ;IF SA=0, DON'T EXECUTE 000224' 505500 254000 HRLI W,(JRST) ;INSTRUCTION TO EXECUTE 000225' LD5E3: 000225' 202502 000135 IFE LDAC,<MOVEM W,JOBBLT+1(X) ;STASH FOR EXECUTION> IFN LDAC,<MOVEM W,JOBBLT+2(X) ;STASH FOR EXECUTION HRLZ 17,JOBFF(X) ;BUT FIRST BLT ACS MOVE W,[BLT 17,17] ;... MOVEM W,JOBBLT+1(X) ;...> 000226' 254000 000134 JRST JOBBLT ;IF IT WERE DONE, 'TWERE BEST DONE QUICKLY LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 11 DICK GRUEN: V25 3 AUG 68 ;SEARCH LIBRARY, PRINT UNDEFS, SETUP JOBSA,JOBFF,JOBSYM,JOBUSY 000227' 607000 200000 SASYM: TLNN F,NSW ;SKIP IF NO SEARCH FLAG ON 000230' 260740 000653' PUSHJ P,LIBF ;SEARCH LIBRARY FILE 000231' 260740 000730' PUSHJ P,FSCN ;FORCE SCAN TO COMPLETION 000232' 260740 001460' PUSHJ P,PMS ;PRINT UNDEFINEDS 000233' 552002 000220* HRRZM F,JOBSA(X) ;RH OF JOBSA :=STARTING ADDRESS 000234' 550700 000003 SAS1: HRRZ A,H ;COMPUTE PROG BREAK 000235' 275702 000000 SUBI A,(X) ;... 000236' 305705 000000 CAIGE A,(R) ;BUT NO HIGHER THAN RELOC 000237' 550700 000005 HRRZ A,R ;... 000240' 506702 000233* HRLM A,JOBSA(X) ;LH OR JOBSA IS PROG BREAK 000241' 552702 000175* HRRZM A,JOBFF(X) ;RH OF JOBFF CONTAINS PROG BREAK 000242' 200700 000006 MOVE A,B ;SET JOBSYM W/ SYMBOL TABLE POINTER 000243' 350000 000016 AOS A ;... 000244' 202702 000017* MOVEM A,JOBSYM(X) ;... 000245' 200700 000004 MOVE A,S ;SET JOBUSY W/ UNDEFINED SYMBOL POINTER 000246' 350000 000016 AOS A ;... 000247' 202702 000000* MOVEM A,JOBUSY(X) ;... 000250' 263740 000000 POPJ P, ;RETURN ;PRINT FINAL MESSAGE, SET UP BLT AC'S, SETDDT, RELEAS 000251' 260740 001727' BLTSET: PUSHJ P,FCRLF ;START FINAL MESSAGE 000252' 260740 001602' PUSHJ P,PWORD ;PRINT W 000253' 260740 001557' PUSHJ P,SPACE 000254' 550640 000015* HRRZ Q,JOBREL ;PUBLISH HOW MUCH CORE USED 000255' 242640 777766 LSH Q,-12 ;... 000256' 271640 000001 ADDI Q,1 ;... 000257' 260740 001546' PUSHJ P,RCNUM ;PUBLISH THE NUMBER 000260' 200500 004070' MOVE W,[SIXBIT /K CORE/] ;PUBLISH THE UNITS 000261' 260740 001602' PUSHJ P,PWORD ;... 000262' 260740 001730' PUSHJ P,CRLF ;... 000263' 205642 000020 MOVSI Q,20(X) ;HOW MUCH CODE TO BLT 000264' 541640 000020 HRRI Q,20 ;... 000265' 550700 000042 HRRZ A,42 ;CHECK ON ERRORS 000266' 322700 000275' JUMPE A,NOEX ;NONE, GO AHEAD 000267' 627040 002000 TLZN N,EXEQSW ;DID HE WANT TO START EXECUTION? 000270' 254000 000275' JRST NOEX ;NO 000271' 265700 001610' JSP A ,ERRPT ;PRINT AN ERROR MESSAGE 000272' 457045 436564 SIXBIT /EXECUTION DELETED@/ 000273' 515756 004445 000274' 544564 454440 000275' 550700 000254* NOEX: HRRZ A,JOBREL ;WHEN TO STOP BLT 000276' 552702 000275* HRRZM A,JOBREL(X) ;SETUP FOR POSSIBLE IMMED. XEQ 000277' 275702 000000 SUBI A,(X) ;... 000300' 301704 000000 IFE BLTSYM,<CAIL A,(S) ;DON'T BLT OVER SYMBOL TABLE 000301' 201704 000000 MOVEI A,(S) ;OR UNDEFINED TABLE> 000302' 071040 000000 RELEAS 1, ;RELEASE DEVICES 000303' 071140 000000 RELEAS 3, ;... 000304' 200242 000222* MOVE R,JOBDDT(X) ;SET NEW DDT 000305' 047240 000002 CALLI R,CSETDDT ;... 000306' 263740 000000 POPJ P, ;RETURN LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 11-1 DICK GRUEN: V25 3 AUG 68 LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 12 DICK GRUEN: V25 3 AUG 68 ;WRITE CHAIN FILES 000307' 334702 000131 CHNC: SKIPA A,JOBCHN(X) ;CHAIN FROM BREAK OF FIRST BLOCK DATA 000310' 544702 000131 CHNR: HLR A,JOBCHN(X) ;CHAIN FROM BREAK OF FIRST F4 PROG 000311' 553000 000016 HRRZS A ;ONLY RIGHT HALF IS SIGNIFICANT 000312' 322700 000546' JUMPE A,LD7C ;DON'T CHAIN IF ZERO 000313' 607040 020000 TLNN N,AUXSWI ;IS THERE AN AUX DEV? 000314' 254000 000554' JRST LD7D ;NO, DON'T CHAIN 000315' 261740 000016 PUSH P,A ;SAVE WHEREFROM TO CHAIN 000316' 332000 000007 SKIPE D ;STARTING ADDR SPECIFIED? 000317' 540000 000007 HRR F,D ;USE IT 000320' 260740 000227' PUSHJ P,SASYM ;DO LIB SEARCH, SETUP JOBSA, ETC. 000321' 262740 000016 POP P,A ;GET WHEREFROM 000322' 210500 000276* MOVN W,JOBREL ;CALCULATE IOWD FOR DUMP 000323' 271516 777773 ADDI W,-1-3-CHN5(A) ;... 000324' 505516 777773 HRLI W,-4-CHN5(A) ;... 000325' 206500 000363' MOVSM W,IOWDPP ;... 000326' 271702 777773 ADDI A,-4-CHN5(X) ;ADD IN OFFSET 000327' 261702 000244* IFN CHN5,<PUSH A,JOBSYM(X) ;SETUP FOUR WORD TABLE 000330' 261702 000041* PUSH A,JOB41(X) ;...> 000331' 261702 000304* PUSH A,JOBDDT(X) ;JOBDDT IN ALL CASES IFE CHN5,<PUSH A,JOBSYM(X) ;JOBDDT, JOBSYM, JOBSA> 000332' 261702 000240* PUSH A,JOBSA(X) ;JOBRYM ALWAYS LAST 000333' 070100 000000 CLOSE 2, ;INSURE END OF MAP FILE 000334' 060100 000017 SETSTS 2,17 ;SET AUX DEV TO DUMP MODE 000335' 205500 435056 MOVSI W,435056 ;USE .CHN AS EXTENSION 000336' 202500 002061' MOVEM W,DTOUT1 ;... 000337' 260740 001523' PUSHJ P,IAD2 ;DO THE ENTER 000340' 621040 060000 TLZ N,AUXSWI+AUXSWE ;INSURE NO PRINTED OUTPUT 000341' 200500 004071' MOVE W,[SIXBIT ?CHAIN?] ;FINAL MESSAGE 000342' 260740 000251' PUSHJ P,BLTSET ;SETUP BLT PNTR, SETDDT, RELEAS 000343' 047000 000005 CALLI CDDTGT ;START DDT MODE OUTPUT 000344' 205600 000350' MOVSI CHNBLT,CHAIN3 ;BLT CHAIN3 INTO ACS 000345' 251600 000014 BLT CHNBLT,CHNBLT ;... 000346' 201740 000010 MOVEI P,CHNERR ;POINTER TO ERR MESS 000347' 254000 000000 JRST 0 ;GO DO CHAIN LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 13 DICK GRUEN: V25 3 AUG 68 ;THE AC SECTION OF CHAIN 000350' CHAIN3: 000000 PHASE 0 000350' 251656 000000 BLT Q,(A) ;USUAL LDRBLT 000351' 067100 000013 OUTPUT 2,IOWDP ;WRITE THE CHAIN FILE 000352' 063100 760000 STATZ 2,IOBAD!IODEND ;CHECK FOR ERROR OR EOF 000353' 254000 000006 JRST LOSEBIG ;FOUND SAME, GO GRIPE 000354' 070100 000000 CLOSE 2, ;FINISH OUTPUT 000355' 063100 760000 STATZ 2,IOBAD!IODEND ;CHECK FOR FINAL ERROR 000356' 047000 000003 LOSEBI: CALLI CDDTOUT ;GRIPE ABOUT ERROR 000357' 047000 000012 CALLI CEXIT ;EXIT 000360' 422132 644606 CHNERR: ASCIZ ?DEVICE ERROR? ;ERROR MESSAGE 000361' 425010 551244 000362' 476440 000000 000363' 000000 000000 IOWDP: Z ;STORE IOWD FOR DUMP HERE 000014 CHNBLT: ;LAST WORD OF AC CHAIN (ZERO OF I/O POINTER) 000364' DEPHASE 000363' IOWDPP=.-1 ;MEMORY LOC OF AC IOWDP 000364' 000000 000000 Z ;TERMINATOR OF DUMP MODE LIST LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 14 DICK GRUEN: V25 3 AUG 68 ;EXPAND CORE IFN EXPAND,< 000365' 261740 000003 XPAND: PUSH P,H ;GET SOME REGISTERS TO USE 000366' 261740 000002 PUSH P,X 000367' 261740 000001 PUSH P,N 000370' 550100 000322* HRRZ X,JOBREL ;WHAT WE WANT 000371' 271100 002000 ADDI X,2000 000372' 047100 000011 CALLI X,11 ;CORE ALLOCATOR CALLS THIS 000373' 254000 000432' JRST XPAND6 000374' 550140 003402' IFE K,< HRRZ H,MLTP ;GET LOWEST LOCATION 000375' 607040 000010 TLNN N,F4SW ;IS FORTRAN LOADING> 000376' 550140 000004 HRRZ H,S ;NO, USE S 000377' 550100 000370* HRRZ X,JOBREL ;NOW MOVE 000400' 275100 002000 SUBI X,2000 000401' 200042 000000 XPAND2: MOVE N,(X) 000402' 202042 002000 MOVEM N,2000(X) 000403' 313100 000003 CAMLE X,H ;TEST FOR END 000404' 364100 000401' SOJA X,XPAND2; HAND EYE SYSTEM MOVES TABLE 000405' 505140 776000 HRLI H,-2000 000406' 402003 000000 SETZM (H) ;ZERO NEW CORE 000407' 253140 000406' AOBJN H,.-1 000410' 201140 002000 MOVEI H,2000 000411' 272140 000004 ADDM H,S 000412' 272140 000006 ADDM H,B 000413' 272140 000327* ADDM H,JOBSYM 000414' 262740 000001 POP P,N 000415' 271040 002000 ADDI N,2000 000416' 607040 000010 IFE K,< TLNN N,F4SW ;F4? 000417' 254000 000426' JRST XPAND3 000420' 272140 003401' ADDM H,PLTP 000421' 272140 003377' ADDM H,BITP 000422' 272140 003404' ADDM H,SDSTP 000423' 272140 003402' ADDM H,MLTP 000424' 603040 000040 TLNE N,SYDAT 000425' 272140 000011 ADDM H,V> 000426' XPAND3: 000426' 262740 000002 POP P,X 000427' 262740 000003 POP P,H 000430' 350017 000000 AOS (P) 000431' 263740 000000 POPJ P, 000432' 322100 000442' XPAND6: JUMPE X,XPAND4 000433' 265700 001610' JSP A,ERRPT 000434' 435762 450041 SIXBIT /CORE AVAILABLE, BUT NOT TO YOU#/ 000435' 664151 544142 000436' 544514 004265 000437' 640056 576400 000440' 645700 715765 000441' 030000 000000 000442' 265700 001610' XPAND4: JSP A,ERRPT 000443' 555762 450043 SIXBIT /MORE CORE NEEDED#/ 000444' 576245 005645 000445' 454445 440300 LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 14-1 DICK GRUEN: V25 3 AUG 68 000446' 262740 000001 XPAND5: POP P,N 000447' 262740 000002 POP P,X 000450' 262740 000003 POP P,H 000451' 263740 000000 POPJ P, 000452' 260740 000365' XPAND7: PUSHJ P,XPAND 000453' 254000 001257' JRST SFULLC 000454' 254000 000456' JRST POPJM2 000455' 370017 000000 POPJM3: SOS (P) ;POPJ TO CALL-2 000456' 370017 000000 POPJM2: SOS (P) ;POPJ TO CALL-1 000457' 370017 000000 SOS (P) ;SAME AS POPJ TO 000460' 263740 000000 POPJ P, ;NORMAL POPJ MINUS TWO > LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 15 DICK GRUEN: V25 3 AUG 68 ;ENTER SWITCH MODE 000461' 306400 000057 LD6A: CAIN T,57 ;WAS CHAR A SLASH? 000462' 661040 000100 TLO N,SLASH ;REMEBER THAT 000463' 661000 400000 TLO F,SSW ;ENTER SWITCH MODE 000464' 201340 000000 LD6A1: MOVEI D,0 ;ZERO THE NUBER REGISTER 000465' 254000 000063' JRST LD3 ;EAT A SWITCH ;ALPHABETIC CHARACTER, SWITCH MODE 000466' 256010 000371' LD6: XCT LD6B-101(T) ;EXECUTE SWITCH FUNCTION 000467' 623040 000100 TLZE N,SLASH ;SWITCH MODE ENTERED W/ SLASH? 000470' 254000 000527' JRST LD6D ;LEAVE SWITCH MODE 000471' 254000 000464' JRST LD6A1 ;STAY IN SWITCH MODE ;DISPATCH TABLE FOR SWITCHES ; THE INSTRUCTION AT THE CHARACTER LOCATION IS EXECUTED 000472' 661040 000001 LD6B: TLO N,ALLFLG ;A - LIST ALL GLOBALS 000473' 254000 000542' JRST LD7B ;B - ERROR 000474' 260740 000307' PUSHJ P,CHNC ;C - CHAIN, START W/ COMMON 000475' 260740 000710' PUSHJ P,LDDT ;D - DEBUG OPTION, LOAD DDT 000476' 661040 002000 TLO N,EXEQSW ;E - LOAD AND GO 000477' 260740 000653' PUSHJ P,LIBF ;F - LIBRARY SEARCH 000500' 260740 000203' PUSHJ P,LD5E ;G - GO INTO EXECUTION 000501' 260740 000703' PUSHJ P,LRAIDX ;H - LOAD AN START RAID 000502' 661040 000002 TLO N,ISAFLG ;I - IGNORE STARTING ADDRESSES 000503' 621040 000002 TLZ N,ISAFLG ;J - USE STARTING ADDRESSES 000504' 254000 000542' IFE BLTSYM,<JRST LD7B ;K - ERROR> IFN BLTSYM,<PUSHJ P,KORADJ ;K - RESERVE SPACE FOR SYM DEFS> 000505' 661000 004004 TLO F,LIBSW+SKIPSW ;L - ENTER LIBRARY SEARCH 000506' 260740 001407' PUSHJ P,PRMAP ;M - PRINT STORAGE MAP 000507' 621000 004004 TLZ F,LIBSW+SKIPSW ;N - LEAVE LIBRARY SEARCH 000510' 540240 000007 HRR R,D ;O - NEW PROGRAM ORIGIN 000511' 661000 200000 TLO F,NSW ;P - PREVENT AUTO. LIB. SEARCH 000512' 621000 200000 TLZ F,NSW ;Q - ALLOW AUTO. LIB. SEARCH 000513' 260740 000310' PUSHJ P,CHNR ;R - CHAIN, START W/ RESIDENT 000514' 661000 040000 TLO F,SYMSW ;S - LOAD WITH SYMBOLS 000515' 260740 000707' PUSHJ P,LDDTX ;T - LOAD AND GO TO DDT 000516' 260740 001460' PUSHJ P,PMS ;U - PRINT UNDEFINED LIST 000517' 260740 000704' PUSHJ P,LRAID ;V - LOAD RAID 000520' 621000 041000 TLZ F,SYMSW+DSYMSW ;W - LOAD WITHOUT SYMBOLS 000521' 621040 000001 TLZ N,ALLFLG ;X - DO NOT LIST ALL GLOBALS 000522' 661000 002000 TLO F,REWSW ;Y - REWIND BEFORE USE 000523' 254000 000000' JRST LD ;Z - RESTART LOADER LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 16 DICK GRUEN: V25 3 AUG 68 ;SWITCH MODE NUMERIC ARGUMENT 000524' 242340 000003 LD6C: LSH D,3 ;BUILD OCTAL NUMERIC ARGUMENT 000525' 271350 777720 ADDI D,-60(T) 000526' 254000 000063' JRST LD3 ;EXIT FROM SWITCH MODE 000527' 621000 400000 LD6D: TLZ F,SSW ;CLEAR SWITCH MODE FLAG 000530' 603000 000010 TLNE F,FSW ;TEST FORCED SCAN FLAG 000531' 254000 000057' JRST LD2D ;SCAN FORCED, START NEW IDENT. 000532' 254000 000063' JRST LD3 ;SCAN NOT FORCED, USE PREV IDENT ;ILLEGAL CHARACTER, NORMAL MODE 000533' 265700 001654' LD7: JSP A,ERRPT8 000534' 435041 621605 SIXBIT /CHAR.%/ 000535' 254000 000042' JRST LD2 ;SYNTAX ERROR, NORMAL MODE 000536' 265700 001654' LD7A: JSP A,ERRPT8 000537' 637156 644170 SIXBIT /SYNTAX%/ 000540' 050000 000000 000541' 254000 000042' JRST LD2 ;ILLEGAL CHARACTER, SWITCH MODE 000542' 265700 001654' LD7B: JSP A,ERRPT8 000543' 636751 644350 SIXBIT /SWITCH%/ 000544' 050000 000000 000545' 254000 000042' JRST LD2 ;ATTEMPT TO CHAIN WITH SPECIFIED HALF OF JOBCHN = 0 000546' 265700 001610' LD7C: JSP A,ERRPT ;GRIPE 000547' 655643 504151 SIXBIT ?UNCHAINABLE AS LOADED@? 000550' 564142 544500 000551' 416300 545741 000552' 444544 400000 000553' 254000 000042' JRST LD2 ;ATTEMP TO CHAIN WITHOUT SPECIFYING DEVICE 000554' 265700 001610' LD7D: JSP A,ERRPT ;GRIPE 000555' 565700 435041 SIXBIT ?NO CHAIN DEVICE@? 000556' 515600 444566 000557' 514345 400000 000560' 254000 000042' JRST LD2 IFN BLTSYM,<KORADJ: CAMLE D,KORSP ;IF SMALLER IGNORE MOVEM D,KORSP POPJ P,> LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 17 DICK GRUEN: V25 3 AUG 68 ;CHARACTER CLASSIFICATION TABLE DESCRIPTION: ; EACH CHARACTER HAS ASSOCIATED WITH IT A FOUR BIT BYTE ; PACKED IN THE CHARACTER CLASSIFICATION TABLE. THE CHARACTER ; CLASSIFICATION CODES ARE ORDERED IN SUCH A WAY AS TO GIVE ; DELIMITERS OF HIGHER PRECEDENCE LOWER CLASSIFICATION NUMBERS. ; CERTAIN CHARACTERS HAVE NO EFFECT ON THE COMMAND STRING, AND ; THEREFORE DO NOT EFFECT ORDERING OF DELIMITERS. FOUR CODES ; ARE RESERVED FOR ALTERNATE DISPATCHES WHILE THE SWITCH MODE IS ; IN EFFECT. ;CLASSIFICATION BYTE CODES: ; BYTE DISP CLASSIFICATION ; 00 - 00 ILLEGAL CHARACTER, SWITCH MODE ; 01 - 01 ALPHABETIC CHARACTER, SWITCH MODE ; 02 - 02 NUMERIC CHARACTER, SWITCH MODE ; 03 - 03 SWITCH MODE ESCAPE, SWITCH MODE ; 00 - 04 ILLEGAL CHARACTER, NORMAL MODE ; 01 - 05 ALPHABETIC CHARACTER, NORMAL MODE ; 02 - 06 NUMERIC CHARACTER, NORMAL MODE ; 03 - 07 SWITCH MODE ESCAPE, NORMAL MODE ; 04 - 10 IGNORED CHARACTER ; 05 - 11 ENTER SWITCH MODE CHARACTER ; 06 - 12 DEVICE IDENTIFIER DELIMITER ; 07 - 13 FILE EXTENSION DELIMITER ; 10 - 14 OUTPUT SPECIFICATION DELIMITER ; 11 - 15 INPUT SPECIFICATION DELIMITER ; 12 - 16 LINE TERMINATION ; 13 - 17 JOB TERMINATION LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 18 DICK GRUEN: V25 3 AUG 68 ;BYTE POINTERS TO CHARACTER CLASSIFICATION TABLE 000561' 400415 000572' LD8: POINT 4,LD9(Q),3 000562' 340415 000572' POINT 4,LD9(Q),7 000563' 300415 000572' POINT 4,LD9(Q),11 000564' 240415 000572' POINT 4,LD9(Q),15 000565' 200415 000572' POINT 4,LD9(Q),19 000566' 140415 000572' POINT 4,LD9(Q),23 000567' 100415 000572' POINT 4,LD9(Q),27 000570' 040415 000572' POINT 4,LD9(Q),31 000571' 000415 000572' POINT 4,LD9(Q),35 ;CHARACTER CLASSIFIACTION TABLE 000572' 200000 000000 LD9: BYTE (4)4,0,0,0,0,0,0,0,0 000573' 210422 400000 BYTE (4)4,4,4,4,12,0,0,0,0 000574' 000000 000000 BYTE (4)0,0,0,0,0,0,0,0,0 000575' 540000 040100 BYTE (4)13,0,0,0,0,4,0,4,0 000576' 000001 230011 BYTE (4)0,0,0,0,5,3,0,0,11 000577' 016510 421042 BYTE (4)0,7,5,2,2,2,2,2,2 000600' 104211 400200 BYTE (4)2,2,2,2,6,0,0,10,0 000601' 000104 210421 IFE RPGSW,< BYTE (4)0,0,1,1,1,1,1,1,1> IFN RPGSW,< BYTE (4) 0,10,1,1,1,1,1,1,1> 000602' 042104 210421 BYTE (4)1,1,1,1,1,1,1,1,1 000603' 042104 210421 BYTE (4)1,1,1,1,1,1,1,1,1 000604' 040000 100000 IFE PP,<BYTE (4)1,0,0,0,0,10,0,0,0> IFN PP,<BYTE (4)1,10,0,10,0,10,0,0,0> 000605' 000000 000000 BYTE (4)0,0,0,0,0,0,0,0,0 000606' 000000 000000 BYTE (4)0,0,0,0,0,0,0,0,0 000607' 000000 000013 BYTE (4)0,0,0,0,0,0,0,0,13 000610' 550000 000000 BYTE (4)13,4 LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 19 DICK GRUEN: V25 3 AUG 68 ;INITIALIZE LOADING OF A FILE 000611' 201500 002136' ILD: MOVEI W,BUF1 ;LOAD BUFFER ORIGIN 000612' 202500 000241* MOVEM W,JOBFF 000613' 663000 020000 TLOE F,ISW ;SKIP IF INIT REQUIRED 000614' 254000 000621' JRST ILD6 ;DONT DO INIT 000615' 041040 000014 INIT 1,14 000616' 000000 000000 ILD1: 0 ;LOADER INPUT DEVICE 000617' 000000 002051' XWD 0,BUFR 000620' 265700 000643' JSP A,ILD5 ;ERROR RETURN 000621' 623000 002000 ILD6: TLZE F,REWSW ;SKIP IF NO REWIND 000622' 072040 000001 MTAPE 1,1 ;REWIND 000623' 076040 002054' ILD2: LOOKUP 1,DTIN ;LOOK UP FILE FROM DIRECTORY 000624' 254000 000631' JRST ILD3 ;FILE NOT IN DIRECTORY 000625' 064040 000002 IFE K,< INBUF 1,2 ;SET UP BUFFERS> IFN K,< INBUF 1,1 ;SET UP BUFFER> 000626' 661000 000100 TLO F,ASW ;SET LEFT ARROW ILLEGAL FLAG 000627' 621000 010002 TLZ F,ESW+F4LIB ;CLEAR EXTENSION FLAG 000630' 263740 000000 POPJ P, ; LOOKUP FAILURE 000631' 663000 000002 ILD3: TLOE F,ESW ;SKIP IF .REL WAS ASSUMED 000632' 254000 000635' JRST ILD4 ;FATAL LOOKUP FAILURE 000633' 402000 002055' SETZM DTIN1 ;ZERO FILE EXTENSION 000634' 254000 000623' JRST ILD2 ;TRY AGAIN WITH NULL EXTENSION 000635' 623000 010000 ILD4: TLZE F,F4LIB ;WAS THIS A TRY FOR F40 LIBRARY? JRST [MOVE W,[SIXBIT /LIB4/]; YES, TRY LIB4 MOVEM W,DTIN ;... PUSHJ P,LDDT2 ;USE .REL EXTENSION TLZ F,ESW ;... 000636' 254000 004073' JRST ILD2 ];GO TRY AGAIN 000637' 265700 001610' ILD9: JSP A,ERRPT 000640' 434156 565764 SIXBIT /CANNOT FIND#/ 000641' 004651 564403 000642' 254000 000042' JRST LD2 ; DEVICE SELECTION ERROR 000643' 200516 777775 ILD5: MOVE W,-3(A) ;LOAD DEVICE NAME FROM INIT 000644' 661000 000020 TLO F,FCONSW ;INSURE TTY OUTPUT 000645' 260740 001701' PUSHJ P,PRQ ;START W/ ? 000646' 260740 001602' PUSHJ P,PWORD ;PRINT DEVICE NAME 000647' 265700 001667' JSP A,ERRPT7 000650' 655641 664151 SIXBIT /UNAVAILABLE@/ 000651' 544142 544540 000652' 254000 000042' JRST LD2 LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 20 DICK GRUEN: V25 3 AUG 68 ;LIBRARY SEARCH CONTROL AND LOADER CONTROL ;LIBF ENABLES A LIBRARY SEARCH OF <SYS:LIB4.REL> 000653' 260740 000746' LIBF: PUSHJ P,FSCN1 ;FORCE SCAN TO COMPLETION 000654' 260740 000660' PUSHJ P,LIBF1 ;LOAD SYS:JOBDAT.REL 000655' 661000 010000 TLO F,F4LIB ;INDICATE FORTRAN LIBRARY SEARCH 000656' 200500 004100' MOVE W,[SIXBIT /LIB40/] ;FIRST TRY AT NAME 000657' 260740 000661' PUSHJ P,LIBF2 ;LOAD SYS:LIB40.REL 000660' 200500 004101' LIBF1: MOVE W,[SIXBIT /JOBDAT/] ;LOAD SYS:JOBDAT.REL 000661' 260740 000716' LIBF2: PUSHJ P,LDDT1 000662' 325200 000727' JUMPGE S,EOF2 ;JUMP IF NO UNDEFINED GLOBALS 000663' 661000 000404 TLO F,SLIBSW+SKIPSW ;ENABLE LIBRARY SEARCH 000664' 621000 041000 TLZ F,SYMSW+DSYMSW ;DISABLE LOADING WITH SYMBOLS 000665' 254000 000752' JRST LDF ;INITIALIZE LOADING LIB4 ; LIB CONTROLS THE LIBRARY SEARCH OF ONE FILE 000666' 325200 000726' LIB: JUMPGE S,EOF1 ;JUMP IF NO UNDEFINED GLOBALS 000667' 661000 000004 TLO F,SKIPSW ;SET SKIPSW TO IGNORE MODE 000670' 254000 000753' JRST LOAD ;CONTINUE LIB. SEARCH 000671' 302700 000004 LIB1: CAIE A,4 ;TEST FOR ENTRY BLOCK 000672' 254000 000701' JRST LIB3 ;NOT AN ENTRY BLOCK, IGNORE IT 000673' 260740 001371' LIB2: PUSHJ P,RWORD ;READ ONE DATA WORD 000674' 200540 000012 MOVE C,W 000675' 661540 040000 TLO C,040000 ;SET CODE BITS FOR SEARCH 000676' 260740 001353' PUSHJ P,SREQ 000677' 625000 000004 TLZA F,SKIPSW ;REQUEST MATCHES ENTRY, LOAD 000700' 254000 000673' JRST LIB2 ;NOT FOUND 000701' 260740 001371' LIB3: PUSHJ P,RWORD ;READ AND IGNORE ONE DATA WORD 000702' 254000 000701' JRST LIB3 ;LOOP TO IGNORE INPUT ;LDDT LOADS <SYS:DDT.REL> AND SETS DSYMSW 000703' 661040 006000 LRAIDX: TLO N,DDSW!EXEQSW ;H - LOAD AND START RAID 000704' 260740 000746' LRAID: PUSHJ P,FSCN1 ;FORCE END OF SCAN 000705' 200500 004102' MOVE W,[SIXBIT /RAID/] 000706' 254000 000712' JRST LDDT0 000707' 661040 006000 LDDTX: TLO N,DDSW+EXEQSW ;T - LOAD AND GO TO DDT 000710' 260740 000746' LDDT: PUSHJ P,FSCN1 ;FORCE SCAN TO COMPLETION 000711' 205500 444464 MOVSI W,444464 ;FILE IDENTIFIER <DDT> 000712' 260740 000716' LDDT0: PUSHJ P,LDDT1 000713' 260740 000752' PUSHJ P,LDF ;LOAD <SYS:DDT.REL> 000714' 661000 001000 TLO F,DSYMSW ;ENABLE LOADING WITH SYMBOLS 000715' 263740 000000 POPJ P, 000716' 202500 002054' LDDT1: MOVEM W,DTIN ;STORE FILE IDENTIFIER IFN PP,<MOVE W,ILD1 ;SAVE OLD DEV MOVEM W,OLDDEV> 000717' 205500 637163 MOVSI W,637163 ;DEVICE IDENTIFIER <SYS> 000720' 202500 000616' MOVEM W,ILD1 ;STORE DEVICE IDENTIFIER LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 20-1 DICK GRUEN: V25 3 AUG 68 000721' 621000 026004 TLZ F,ISW+LIBSW+SKIPSW+REWSW ;CLEAR OLD FLAGS 000722' 205500 624554 LDDT2: MOVSI W,624554 ;EXTENSION IDENTIFIER <.REL> 000723' 202500 002055' LDDT3: MOVEM W,DTIN1 ;STORE EXTENSION IDENTIFIER IFN PP,<MOVE W,PPN ;GET PROJ-PROG # MOVEM W,DTIN+3> 000724' 263740 000000 POPJ P, LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 21 DICK GRUEN: V25 3 AUG 68 ;EOF TERMINATES LOADING OF A FILE 000725' 200740 001757' EOF: MOVE P,PDSAV ;RESTORE PUSHDOWN POINTER 000726' 621000 000404 EOF1: TLZ F,SLIBSW+SKIPSW ;CLEAR ONE FILE LIB. SEARCH FLAG 000727' 263740 000000 EOF2: POPJ P, ; FORCE SCAN TO COMPLETION, LOAD IF NECESSARY 000730' 260740 000746' FSCN: PUSHJ P,FSCN1 ;FORCED LOAD BEFORE TEST 000731' 607000 000200 TLNN F,FULLSW ;TEST FOR OVERLAP 000732' 263740 000000 POPJ P, ;NO OVERLAP, RETURN 000733' 200500 000003 MOVE W,H ;FETCH CORE SIZE REQUIRED 000734' 275504 000001 SUBI W,1(S) ; COMPUT DEFICIENCY 000735' 321500 000727' JUMPL W,EOF2 ;JUMP IF NO OVERLAP 000736' 661000 000020 TLO F,FCONSW ;INSURE TTY OUTPUT 000737' 260740 001701' PUSHJ P,PRQ ;START WITH ? 000740' 260740 001536' PUSHJ P,PRNUM0 ;INFORM USER 000741' 265700 001667' JSP A,ERRPT7 000742' 675762 446300 SIXBIT /WORDS OF OVERLAP#/ 000743' 574600 576645 000744' 625441 600300 000745' 254000 000042' JRST LD2 ;ERROR RETURN 000746' 667000 000010 FSCN1: TLON F,FSW ;SKIP IF NOT FIRST CALL TO FSCN 000747' 607000 100003 TLNN F,CSW+DSW+ESW ;TEST SCAN FOR COMPLETION 000750' 263740 000000 POPJ P, 000751' 260740 000137' FSCN2: PUSHJ P,LD5B1 ;STORE FILE OR EXTENSION IDENT. ; LOADER CONTROL, NORMAL MODE 000752' 260740 000611' LDF: PUSHJ P,ILD ;INITIALIZE LOADING LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 22 DICK GRUEN: V25 3 AUG 68 ;LOAD SUBROUTINE 000753' 202740 001757' LOAD: MOVEM P,PDSAV ;SAVE PUSHDOWN POINTER 000754' 200740 001757' LOAD1: MOVE P,PDSAV ;RESTORE PUSHDOWN POINTER 000755' 260740 001710' LOAD1A: PUSHJ P,WORD ;INPUT BLOCK HEADER WORD 000756' 211612 400000 MOVNI E,400000(W) ;WORD COUNT - FROM RH OF HEADER 000757' 554700 000012 HLRZ A,W ;BLOCK TYPE - FROM LH OF HEADER 000760' 303700 000013 CAILE A,DISPL*2+1 ;TEST BLOCK TYPE NUMBER 000761' 254000 001000' JRST LOAD4 ;ERROR, ILLEGAL BLOCK TYPE 000762' 603000 000004 TLNE F,SKIPSW ;BLOCK OK - TEST LOAD STATUS 000763' 254000 000671' JRST LIB1 ;RETURN TO LIB. SEARCH CONTROL 000764' 550416 000772' HRRZ T,LOAD2(A) ;LOAD RH DISPATCH ENTRY 000765' 303700 000005 CAILE A,DISPL ;SKIP IF CORRECT 000766' 554416 000764' HLRZ T,LOAD2-DISPL-1(A) ;LOAD LH DISPATCH ENTRY 000767' 603000 000200 TLNE F,FULLSW ;TEST CORE OVERLAP INDICATOR 000770' 367700 001272' SOJG A,HIGH0 ;IGNORE BLOCK IF NOT TYPE 1 000771' 254020 000010 JRST @T ;DISPATCH TO BLOCK SUBROUTINE ;DISPATCH TABLE - BLOCK TYPES 000772' 001311' 000755' LOAD2: XWD NAME,LOAD1A 000773' 001306' 001006' XWD START,PROG 000774' 001340' 001023' XWD LOCD,SYM 000775' 001002' 001002' XWD LOAD4A,LOAD4A 000776' 001002' 000701' XWD LOAD4A,LIB3 000777' 001002' 001274' LOAD3: XWD LOAD4A,HIGH 000005 DISPL=LOAD3-LOAD2 ;ERROR EXIT FOR BAD HEADER WORDS 001000' LOAD4: IFE K,< 001000' 306700 000400 CAIN A,400 ;FORTRAN FOUR BLOCK 001001' 254000 002753' JRST F4LD> 001002' 265700 001610' LOAD4A: JSP A,ERRPT ;INCORRECT HEADER WORD 001003' 515454 160046 SIXBIT /ILL. FORMAT#/ 001004' 576255 416403 001005' 254000 000042' JRST LD2 LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 23 DICK GRUEN: V25 3 AUG 68 ;LOAD PROGRAMS AND DATA (BLOCK TYPE 1) 001006' 550440 000012 PROG: HRRZ V,W ;LOAD BLOCK LENGTH 001007' 260740 001371' PUSHJ P,RWORD ;READ BLOCK ORIGIN 001010' 270440 000012 ADD V,W ;COMPUTE NEW PROG. BREAK 001011' 307160 000002 CAIG H,@X ;COMPARE WITH PREV. PROG. BREAK 001012' 201160 000002 MOVEI H,@X ;UPDATE PROGRAM BREAK 001013' 603000 000200 TLNE F,FULLSW 001014' 254000 001266' JRST FULLC ;NO ERROR MESSAGE 001015' 303144 000001 CAILE H,1(S) ; SKIP IF SUFFICIENT CORE AVAILABLE IFN EXPAND,< JRST [PUSHJ P,XPAND> JRST FULLC 001016' 254000 004103' IFN EXPAND,< JRST .-1]> 001017' 200440 000012 MOVE V,W 001020' 260740 001371' PROG1: PUSHJ P,RWORD ;READ DATA WORD 001021' 202520 000002 MOVEM W,@X ;STORE DATA WORD IN PROG. AT LLC 001022' 344440 001020' AOJA V,PROG1 ;ADD ONE TO LOADER LOC. COUNTER ;LOAD SYMBOLS (BLOCK TYPE 2) 001023' 260740 001363' SYM: PUSHJ P,PRWORD ;READ TWO DATA WORDS 001024' 260740 001026' PUSHJ P,SYMPT; PUT INTO TABLE 001025' 254000 001023' JRST SYM ; WFW SYMPT: JUMPL C,SYM3; JUMP IF GLOBAL REQUEST 001026' 603540 200000 SYMPT: TLNE C,200000 ;GLOBAL REQUEST? WFW 001027' 321540 001106' JUMPL C,SYM3 ;CHECK FOR 60 NOT JUST HIGH BIT WFW 001030' 603540 100000 TLNE C,100000 001031' 254000 001053' JRST SYM1A ;LOCAL SYMBOL 001032' 260740 001353' PUSHJ P,SREQ ;GLOBAL DEF., SEARCH FOR REQUEST 001033' 254000 001070' JRST SYM2 ;REQUEST MATCHES 001034' 260740 001355' PUSHJ P,SDEF ;SEARCH FOR MULTIPLE DEFINITIONS 001035' 254000 001037' JRST SYM1 ;MULTIPLY DEFINED GLOBAL 001036' 254000 001055' JRST SYM1B ; PROCESS MULTIPLY DEFINED GLOBAL 001037' 316516 000002 SYM1: CAMN W,2(A) ;COMPARE NEW AND OLD VALUE 001040' 263740 000000 POPJ P,; 001041' 350000 001761' AOS MDG ;COUNT MULTIPLY DEFINED GLOBALS 001042' 260740 001701' PUSHJ P,PRQ ;START W/ ? 001043' 260740 001534' PUSHJ P,PRNAM ;PRINT SYMBOL AND VALUE 001044' 200516 000002 MOVE W,2(A) ;LOAD OLD VALUE 001045' 260740 001535' PUSHJ P,PRNUM ;PRINT OLD VALUE 001046' 265700 001667' JSP A,ERRPT7 ;PRINT MESSAGE 001047' 556554 160044 SIXBIT /MUL. DEF. GLOBAL#/ 001050' 454616 004754 001051' 574241 540300 001052' 263740 000000 POPJ P,; IGNORE MUL. DEF. GLOBAL SYM LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 24 DICK GRUEN: V25 3 AUG 68 ; LOCAL SYMBOL 001053' 607000 041000 SYM1A: TLNN F,SYMSW+DSYMSW ;SKIP IF LOAD LOCALS SWITCH ON 001054' 263740 000000 POPJ P,; IGNORE LOCAL SYMBOLS 001055' 301144 000000 SYM1B: CAIL H,(S) ;STORE DEFINED SYMBOL 001056' 260740 000452' IFN EXPAND,< PUSHJ P,XPAND7> IFE EXPAND,< JRST SFULLC> 001057' SYM1C: IFE K,< 001057' 603040 000010 TLNE N,F4SW; FORTRAN FOUR REQUIRES A BLT 001060' 260740 001234' PUSHJ P,MVDWN; OF THE TABLES> 001061' 201704 777776 MOVEI A,-2(S) ;LOAD A TO SAVE INST. AT SYM2 001062' 275200 000002 SYM1D: SUBI S,2; UPDATE UNDEFINED POINTER 001063' 262316 000002 POP B,2(A) ;MOVE UNDEFINED VALUE POINTER 001064' 262316 000001 POP B,1(A) ;MOVE UNDEFINED SYMBOL 001065' 202506 000002 MOVEM W,2(B) ;STORE VALUE 001066' 202546 000001 MOVEM C,1(B) ;STORE SYMBOL 001067' 263740 000000 POPJ P,; LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 25 DICK GRUEN: V25 3 AUG 68 ; GLOBAL DEFINITION MATCHES REQUEST 001070' 261740 001100' SYM2: PUSH P,SYM2C ;NEXT MUST BE A SUBROUTINE FOR LATER. SET RETURN 001071' 200456 000002 SYM2B: MOVE V,2(A) ;LOAD REQUEST POINTER 001072' 260740 001344' PUSHJ P,REMSYM 001073' 321440 001221' JUMPL V,SYM2W ;ADDITIVE REQUEST? WFW 001074' 260740 001232' PUSHJ P,SYM4A ;REPLACE CHAIN WITH DEFINITION ;WFW PATCH TO LOOK FOR MORE THAN ONE REQUEST 001075' 260740 001353' SYM2W1: PUSHJ P,SREQ ;LOOK FOR MORE REQUESTS FOR THIS SYMBOL 001076' 254000 001071' JRST SYM2B ;FOUND MORE 001077' 200700 001101' MOVE A,SVA ;RESTORE A ;END OF PATCH WFW 001100' 263740 001062' SYM2C: POPJ P,SYM1D ;RETURN, SEE SYM2 FOR USE OF ADDRESS 001101' 000000 000000 SVA: 0 ;A TEMP CELL WFW ; REQUEST MATCHES GLOBAL DEFINITION 001102' 200440 000012 SYM2A: MOVE V,W ;LOAD POINTER TO CHAIN 001103' 200516 000002 MOVE W,2(A) ;LOAD VALUE 001104' 321440 001152' JUMPL V,FIXWP ;HANDLE ATTITIVE REQUEST WFW 001105' 254000 001232' JRST SYM4A; REPLACE CHAIN WITH DEFINITION ; PROCESS GLOBAL REQUEST 001106' 603540 040000 SYM3: TLNE C,040000; COMMON NAME 001107' 254000 001055' JRST SYM1B 001110' 641540 640000 TLC C,640000; PERMUTE BITS FROM 60 TO 04 001111' 260740 001355' PUSHJ P,SDEF ;SEARCH FOR GLOBAL DEFINITION 001112' 254000 001102' JRST SYM2A ;MATCHING GLOBAL DEFINITION 001113' 321500 001116' JUMPL W,SYM3X1 ;ADDITIVE FIXUP WFW 001114' 260740 001353' PUSHJ P,SREQ ;SEARCH FOR EXISTING REQUEST WFW 001115' 254000 001137' JRST SYM3A ;EXISTING REQUEST FOUND WFW 001116' 607500 100000 SYM3X1: TLNN W,100000 ;CHECK SYMBOL TABLE FIXUP 001117' 254000 001127' JRST SYM3X2 ;NO 001120' 200446 000001 MOVE V,1(B) ;MUST BE LAST SYMBOL DEFINED. GET SYMBOL 001121' 430440 000012 XOR V,W ;CHECK FOR IDENTITY 001122' 612440 004106' TDNE V,[XWD 77777,-1] ;BUT IGNORE HIGH 3 BITS 001123' 263740 000000 POPJ P, ;NOT SAME, ASSUME NOT LOADED LOCAL 001124' 541506 000002 HRRI W,2(B) ;GET LOCATION IN RIGHT HALF 001125' 661500 000001 TLO W,1 001126' 274500 000377* SUB W,JOBREL ;AND MAKE RELATIVE 001127' 301144 000000 SYM3X2: CAIL H,(S) ;STORE REQUEST IN UNDEF. TABLE WFW 001130' 260740 000452' IFN EXPAND,< PUSHJ P,XPAND7> IFE EXPAND,< JRST SFULLC> 001131' SYM3X: IFE K,< 001131' 603040 000010 TLNE N,F4SW; FORTRAN FOUR 001132' 260740 001234' PUSHJ P,MVDWN; ADJUST TABLES IF F4> 001133' 274200 001753' SUB S,SE3 ;ADVANCE UNDEFINED POINTER 001134' 202504 000002 MOVEM W,2(S) ;STORE UNDEFINED VALUE POINTER 001135' 202544 000001 MOVEM C,1(S) ;STORE UNDEFINED SYMBOL 001136' 263740 000000 POPJ P,; LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 26 DICK GRUEN: V25 3 AUG 68 ; COMBINE TWO REQUEST CHAINS 001137' 331016 000002 SYM3A: SKIPL 2(A) ;IS IT ADDITIVE WFW 001140' 254000 001144' JRST SYM3A1 ;NO, PROCESS WFW 001141' 260740 001360' PUSHJ P,SDEF2 ;YES, CONTINUE WFW 001142' 254000 001137' JRST SYM3A ;FOUND ANOTHER WFW 001143' 254000 001127' JRST SYM3X2 ;REALLY NO CHAIN THERE WFW 001144' 275702 777776 SYM3A1: SUBI A,-2(X) ;A=A-(-2+X(18-35)); A RELATIVE TO X WFW 001145' 550440 000016 SYM3B: HRRZ V,A ; SAVE CHAIN ADDRESS FOR HRRM W,@X 001146' 550720 000002 HRRZ A,@X ; LOAD NEXT ADDRESS IN CHAIN 001147' 326700 001145' JUMPN A,SYM3B ; JUMP IF NOT THE LAST ADDR. IN CHAIN 001150' 542520 000002 HRRM W,@X ;COMBINE CHAINS 001151' 263740 000000 POPJ P,; ;WFW PATCH FOR ADDITIVE GLOBAL REQUESTS 001152' 607440 100000 FIXWP: TLNN V,100000 ;CHECK FOR SYMBOL TABLE FIXUP 001153' 254000 001162' JRST FIXW 001154' 200406 000001 MOVE T,1(B) ;SYMBOL FIXUP, MUST BE LAST SYMBOL DEFINED 001155' 430400 000011 XOR T,V ;CHECK FOR SAME 001156' 612400 004106' TDNE T,[XWD 77777,-1] ;EXCEPT FOR HEGH CODE BITS 001157' 263740 000000 POPJ P, ;ASSUME NON-LOADED LOCAL 001160' 541446 000002 HRRI V,2(B) ;GET LOCATION 001161' 275442 000000 SUBI V,(X) ;SO WE CAN USE @X 001162' 603440 200000 FIXW: TLNE V,200000 ;IS IT LEFT HALF 001163' 254000 001171' JRST FIXWL 001164' 200420 000002 MOVE T,@X ;GET WORD 001165' 270400 000012 ADD T,W ;VALUE OF GLOBAL 001166' 542420 000002 HRRM T,@X ;FIX WITHOUT CARRY 001167' 205340 200000 MOVSI D,200000 ;SET UP TO REMOVE DEFERED INTERNAL IF THERE 001170' 254000 001174' JRST SYMFIX 001171' 514400 000012 FIXWL: HRLZ T,W ;UPDATE VALUE OF LEFT HALF 001172' 272420 000002 ADDM T,@X ;BY VALUE OF GLOBAL 001173' 205340 400000 MOVSI D,400000 ;LEFT DEFERED INTERNAL 001174' 607440 100000 SYMFIX: TLNN V,100000 ;CHECK FOR SYMBOL TABLE FIXUP 001175' 263740 000000 POPJ P, ;NO, RETURN 001176' 271442 000000 ADDI V,(X) ;GET THE LOCATION 001177' 200411 777777 MOVE T,-1(V) ;GET THE SYMBOL NAME 001200' 607400 040000 TLNN T,40000 ;CHECK TO SEE IF INTERNAL 001201' 263740 000000 POPJ P, ;NO, LEAVE 001202' 413351 777777 ANDCAB D,-1(V) ;REMOVE PROPER BIT 001203' 603340 600000 TLNE D,600000 ;IS IT STILL DEFERED? 001204' 263740 000000 POPJ P, ;YES, ALL DONE 001205' 250540 000007 EXCH C,D ;NO, CHECK FOR A REQUEST FOR IT 001206' 260740 001353' PUSHJ P,SREQ 001207' 254000 001212' JRST CHNSYM ;YES, WILL HAVE TO CALL THE FIXUP ROUTINE 001210' 200540 000007 MOVE C,D ;GET C BACK 001211' 263740 000000 POPJ P, 001212' 261740 000007 CHNSYM: PUSH P,D ;HAS THE OLD C IN IT 001213' 261740 000012 PUSH P,W ;WE MAY NEED IT LATER 001214' 200511 000000 MOVE W,(V) ;GET VALUE 001215' 260740 001071' PUSHJ P,SYM2B ;CALL THE FOUND GLOBAL TO MATCH REQUEST ROUTINE LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 26-1 DICK GRUEN: V25 3 AUG 68 001216' 262740 000012 POP P,W 001217' 262740 000013 POP P,C ;RESTORE FOR CALLER 001220' 263740 000000 POPJ P, ;AND GO AWAY 001221' 607440 100000 SYM2W: TLNN V,100000 ;SYMBOL TABLE? 001222' 254000 001225' JRST SYM2WA 001223' 270440 001126* ADD V,JOBREL ;MAKE ABSOLUTE 001224' 275442 000000 SUBI V,(X) ;GET READY TO ADD X 001225' 260740 001162' SYM2WA: PUSHJ P,FIXW ;DO FIXUP 001226' 254000 001075' JRST SYM2W1 ;AND LOOK FOR MORE REQUESTS ;END WFW PATCH LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 27 DICK GRUEN: V25 3 AUG 68 ;PATCH VALUES INTO CHAINED REQUEST 001227' SYM4: 001227' 550420 000002 HRRZ T,@X ;LOAD NEXT ADDRESS IN CHAIN 001230' 542520 000002 HRRM W,@X ;INSERT VALUE INTO PROGRAM 001231' 200440 000010 MOVE V,T 001232' 326440 001227' SYM4A: JUMPN V,SYM4 ;JUMP IF NOT LAST ADDR. IN CHAIN 001233' 263740 000000 POPJ P, IFE K,< 001234' 550400 003402' MVDWN: HRRZ T,MLTP 001235' 275400 000002 IFN EXPAND,< SUBI T,2> 001236' 307420 000002 CAIG T,@X; ANY ROOM LEFT? IFN EXPAND,< JRST [PUSHJ P,XPAND> TLOA F,FULLSW IFN EXPAND,< JRST MVDWN 001237' 254000 004107' JRST .+2]> 001240' 603000 000204 TLNE F,SKIPSW+FULLSW 001241' 254000 001256' JRST MVABRT; ABORT BLT 001242' 571400 777776 HRREI T,-2 001243' 272400 003401' ADDM T,PLTP; ADJUST PROGRAMMER LABEL POINTER 001244' 272400 003377' ADDM T,BITP; AND BIT TABLE POINTER 001245' 272400 003404' ADDM T,SDSTP; FIRST DATA STATEMENT 001246' 272400 004174' ADDM T,LTC 001247' 272400 004175' ADDM T,ITC 001250' 603040 000040 TLNE N,SYDAT 001251' 272400 000011 ADDM T,V 001252' 273400 003402' ADDB T,MLTP; AND FINALLY TO MADE LABEL TABLE 001253' 507000 000010 HRLS T; SET UP BLT POINTER 001254' 270400 004113' ADD T,[XWD 2,0] 001255' 251404 000000 BLT T,(S) 001256' 263740 000000 MVABRT: POPJ P,; > ;HIGHEST RELOCATABLE POINT (BLOCK TYPE 4) 001257' 663000 000200 SFULLC: TLOE F,FULLSW ;PREVIOUS OVERFLOW? 001260' 254000 001266' JRST FULLC ;YES, DON'T PRINT MESSAGE 001261' 265700 001610' JSP A,ERRPT ;NO, COMPLAIN ABT OVERFLO 001262' 637155 425754 SIXBIT ?SYMBOL TABLE OVERLAP#? 001263' 006441 425445 001264' 005766 456254 001265' 416003 000000 001266' 661000 000200 FULLC: TLO F,FULLSW ;CORE OVERLAP ERROR RETURN 001267' 603040 000010 IFE K,< TLNE N,F4SW 001270' 263740 000000 POPJ P,> 001271' 254000 000701' JRST LIB3 ;LOOK FOR MORE 001272' 302700 000004 HIGH0: CAIE A,4 ; TEST FOR END BLOCK (OVERLAP) 001273' 254000 000701' JRST LIB3 001274' 260740 001363' HIGH: PUSHJ P,PRWORD ;READ TWO DATA WORDS 001275' 540240 000013 HRR R,C ;SET NEW PROGRAM BREAK 001276' 271540 000002 ADDI C,X; BE SURE TO RELOCATE 001277' 303544 000001 CAILE C,1(S) ;TEST PROGRAM BREAK IFN EXPAND,<PUSHJ P,[ PUSHJ P,XPAND TLOA F,FULLSW LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 27-1 DICK GRUEN: V25 3 AUG 68 JRST POPJM2 001300' 260740 004114' POPJ P,]> IFE EXPAND,<TLO F,FULLSW> 001301' 201700 002022' HIGH3: MOVEI A,F.C ;SAVE CURRENT STATE OF LOADER 001302' 251700 002030' BLT A,B.C 001303' 603000 004400 TLNE F,SLIBSW+LIBSW ;NORMAL MODE EXIT THROUGH LOAD1 001304' 254000 000666' JRST LIB ;LIBRARY SEARCH EXIT 001305' 254000 000754' JRST LOAD1 LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 28 DICK GRUEN: V25 3 AUG 68 ;STARTING ADDRESS (BLOCK TYPE 7) 001306' 260740 001363' START: PUSHJ P,PRWORD ;READ TWO DATA WORDS 001307' 607040 000002 TLNN N,ISAFLG ;SKIP IF IGNORE SA FLAG ON 001310' 540000 000013 HRR F,C ;SET STARTING ADDRESS ;PROGRAM NAME (BLOCK TYPE 6) 001311' 260740 001363' NAME: PUSHJ P,PRWORD ;READ TWO DATA WORDS 001312' 663040 000004 TLOE N,COMFLG ;SKIP IF COMMON NOT PREV. SET 001313' 254000 001317' JRST NAME1 ;SIZE OF COMMON PREV. SET 001314' 202500 001760' MOVEM W,COMSAV ;STORE LENGTH OF COMMON 001315' 322500 001330' JUMPE W,NAME2 ;JUMP IF NO COMMON IN THIS JOB 001316' 541260 000005 HRRI R,@R ;FIRST PROGRAM SET LOAD ORIGIN 001317' 303144 777777 NAME1: CAILE H,-1(S) ;TEST FOR AVAIL. SYMBOL SPACE 001320' 260740 000452' IFN EXPAND,< PUSHJ P,XPAND7> IFE EXPAND,< JRST SFULLC> 001321' 275200 000002 SUBI S,2 ;UPDATE UNDEF. TABLE POINTER 001322' 262304 000002 POP B,2(S) 001323' 262304 000001 POP B,1(S) 001324' 550440 000001 HRRZ V,N ;POINTER TO PREVIOUS NAME 001325' 276300 000011 SUBM B,V ;COMPUTE RELATIVE POSITIONS 001326' 506441 000002 HRLM V,2(N) ;STORE FORWARD POINTER 001327' 540040 000006 HRR N,B ;UPDATE NAME POINTER 001330' 202546 000001 NAME2: MOVEM C,1(B) ;STORE PROGRAM NAME 001331' 552246 000002 HRRZM R,2(B) ;STORE PROGRAM ORIGIN 001332' 317500 001760' CAMG W,COMSAV ;CHECK COMMON SIZE 001333' 254000 000701' JRST LIB3 ;COMMON OK 001334' 265700 001610' ILC: JSP A,ERRPT 001335' 515454 160043 SIXBIT /ILL. COMMON#/ 001336' 575555 575603 001337' 254000 000042' JRST LD2 LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 29 DICK GRUEN: V25 3 AUG 68 ;ONE PASS LOCAL DEFINITION (BLOCK TYPE 10) ;PMP PATCH FOR LEFT HALF FIXUPS ;END PMP PATCH 001340' 260740 001371' LOCD: PUSHJ P,RWORD ;READ ONE DATA WORD 001341' 554440 000012 HLRZ V,W ;STORAGE POINTER IN LEFT HALF 001342' 260740 001232' PUSHJ P,SYM4A ;LINK BACK REFERENCES 001343' 254000 001340' JRST LOCD LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 30 DICK GRUEN: V25 3 AUG 68 001344' 200404 000001 REMSYM: MOVE T,1(S) 001345' 202416 000001 MOVEM T,1(A) 001346' 200404 000002 MOVE T,2(S) 001347' 202416 000002 MOVEM T,2(A) 001350' 270200 001753' ADD S,SE3 001351' 202700 001101' MOVEM A,SVA 001352' 263740 000000 POPJ P, LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 31 DICK GRUEN: V25 3 AUG 68 ;SYMBOL TABLE SEARCH SUBROUTINES ; ENTERED WITH SYMBOL IN C ; RETURN IS WITH POINTER IN A IF MATCHING SYMBOL FOUND ; OTHERWISE, A SKIP ON RETURN OCCURS 001353' 325200 003423' SREQ: JUMPGE S,CPOPJ1 ;JUMP IF NO UNDEF. SYMBOLS 001354' 334700 000004 SKIPA A,S ;LOAD REQUEST SEARCH POINTER 001355' 200700 000006 SDEF: MOVE A,B ;LOAD DEF. SYMBOL SEARCH POINTER 001356' 316556 000001 SDEF1: CAMN C,1(A) 001357' 263740 000000 POPJ P, ;SYMBOLS MATCH, RETURN 001360' 270700 001753' SDEF2: ADD A,SE3 001361' 321700 001356' JUMPL A,SDEF1 001362' 254000 003423' IFE K,< JRST CPOPJ1 ;SYMBOL NOT FOUND SKIPS ON RETURN> IFN K,< CPOPJ1: AOS (P) ;TRA 2,4 POPJ P, ;...> ;RELOCATION AND BLOCK INPUT 001363' 260740 001371' PRWORD: PUSHJ P,RWORD ;READ A WORD PAIR 001364' 200540 000012 MOVE C,W ;LOAD C WITH FIRST DATA WORD 001365' 602600 377777 TRNE E,377777 ;TEST FOR END OF BLOCK 001366' 254000 001373' JRST RWORD1 ;INPUT SECOND WORD OF PAIR 001367' 201500 000000 MOVEI W,0 ;NO SECOND WORD, ASSUME ZERO 001370' 263740 000000 POPJ P, 001371' 606600 377777 RWORD: TRNN E,377777 ;TEST FOR END OF BLOCK 001372' 254000 000754' JRST LOAD1 ;RETURN TO LOAD THE NEXT BLOCK 001373' 253600 001377' RWORD1: AOBJN E,RWORD2 ;JUMP IF DATA WORD NEXT 001374' 260740 001710' PUSHJ P,WORD ;READ CONTROL WORD 001375' 200640 000012 MOVE Q,W ;DON'T COUNT RELOCATION WORDS 001376' 505600 777756 HRLI E,-22 ;SET RELOCATION WORD BYTE COUNT 001377' 260740 001710' RWORD2: PUSHJ P,WORD ;READ INPUT WORD 001400' 325640 001403' JUMPGE Q,RWORD3 ;TEST LH RELOCATION BIT 001401' 514400 000005 HRLZ T,R 001402' 270500 000010 ADD W,T ;LH RELOCATION 001403' 603640 200000 RWORD3: TLNE Q,200000 ;TEST RH RELOCATION BIT 001404' 541520 000005 HRRI W,@R ;RH RELOCATION 001405' 242640 000002 LSH Q,2 001406' 263740 000000 POPJ P, LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 32 DICK GRUEN: V25 3 AUG 68 ;PRINT STORAGE MAP SUBROUTINE 001407' 260740 000746' PRMAP: PUSHJ P,FSCN1 ;LOAD OTHER FILES FIRST 001410' 260740 001726' PUSHJ P,CRLFLF ;START NEW PAGE 001411' 550500 000005 HRRZ W,R 001412' 260740 001536' PUSHJ P,PRNUM0 001413' 265700 001667' JSP A,ERRPT7 001414' 516300 645045 SIXBIT ?IS THE PROGRAM BREAK@? 001415' 006062 574762 001416' 415500 426245 001417' 415340 000000 001420' 260740 001730' PUSHJ P,CRLF ;START STORAGE MAP 001421' 265700 001613' JSP A,ERRPT0 ;PRINT HEADER 001422' 636457 624147 SIXBIT ?STORAGE MAP@? 001423' 450055 416040 001424' 574700 000006 HLRE A,B 001425' 213000 000016 MOVNS A 001426' 271706 000000 ADDI A,(B) 001427' 275700 000002 PRMAP1: SUBI A,2 001430' 331556 000001 SKIPL C,1(A) ;LOAD SYMBOL, SKIP IF DELETED 001431' 603540 300000 TLNE C,300000 ;TEST FOR LOCAL SYMBOL 001432' 254000 001456' JRST PRMAP4 ;IGNORE LOCAL SYMBOLS 001433' 607540 040000 TLNN C,040000 001434' 260740 001730' PUSHJ P,CRLF ;PROGRAM NAME 001435' 260740 001533' PUSHJ P,PRNAM1 ;PRINT SYMBOL AND VALUE 001436' 603540 040000 TLNE C,040000 001437' 254000 001455' JRST PRMAP3 ;GLOBAL SYMBOL 001440' 574540 000012 HLRE C,W ;POINTER TO NEXT PROG. NAME 001441' 325540 001444' JUMPGE C,PRMAP2 ;JUMP IF LAST PROGRAM NAME 001442' 271556 000002 ADDI C,2(A) ;COMPUTE LOC. OF FOLLOWING NAME 001443' 334420 000013 SKIPA T,@C ;LOAD ORIGIN OF FOLLOWING PROG. 001444' 550400 000005 PRMAP2: HRRZ T,R ;LOAD PROGRAM BREAK 001445' 276400 000012 SUBM T,W ;SUBTRACT ORIGIN TO GET LENGTH 001446' 260740 001535' PUSHJ P,PRNUM ;PRINT PROGRAM LENGTH 001447' 260740 001730' PUSHJ P,CRLF 001450' 607040 000001 TLNN N,ALLFLG ;SKIP IF LIST ALL MODE IS ON 001451' 602500 777777 TRNE W,777777 ;SKIP IF ZERO LENGTH PROGRAM 001452' 254000 001455' JRST PRMAP3 001453' 322540 001460' JUMPE C,PRMAP5 ;JUMP IF LAST PROGRAM 001454' 334700 000013 SKIPA A,C ;SKIP GLOBALS, ZERO LENGTH PROG. 001455' 260740 001730' PRMAP3: PUSHJ P,CRLF 001456' 303706 000000 PRMAP4: CAILE A,(B) ;TEST FOR END OF SYMBOL TABLE 001457' 254000 001427' JRST PRMAP1 001460' PRMAP5: LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 33 DICK GRUEN: V25 3 AUG 68 ;LIST UNDEFINED GLOBALS 001460' 260740 000746' PMS: PUSHJ P,FSCN1 ;LOAD FILES FIRST 001461' 325200 001504' JUMPGE S,PMS3 ;JUMP IF NO UNDEFINED GLOBALS 001462' 523000 000042 HLLOS 42 ;SET SOME ERROR TO ABORT EXECUTION 001463' 260740 001727' PUSHJ P,FCRLF ;START THE MESSAGE 001464' 260740 001701' PUSHJ P,PRQ ;PRINT ? 001465' 574500 000004 HLRE W,S ;COMPUTE NO. OF UNDEF. GLOBALS 001466' 217000 000012 MOVMS W 001467' 242500 777777 LSH W,-1 ;<LENGTH OF LIST>/2 001470' 260740 001536' PUSHJ P,PRNUM0 001471' 265700 001667' JSP A,ERRPT7 001472' 655644 454651 SIXBIT /UNDEFINED GLOBALS@/ 001473' 564544 004754 001474' 574241 546340 001475' 200700 000004 MOVE A,S ;LOAD UNDEF. POINTER 001476' 260740 001730' PMS2: PUSHJ P,CRLF 001477' 260740 001701' PUSHJ P,PRQ ;PRINT ? 001500' 260740 001532' PUSHJ P,PRNAM0 ;PRINT SYMBOL AND POINTER 001501' 270700 001753' ADD A,SE3 001502' 321700 001476' JUMPL A,PMS2 001503' 260740 001730' PUSHJ P,CRLF ;SPACE AFTER LISTING ;LIST NUMBER OF MULTIPLY DEFINED GLOBALS 001504' 336500 001761' PMS3: SKIPN W,MDG ;ANY MULTIPLY DEFINED GLOBALS 001505' 254000 001520' JRST PMS4 ;NO, EXCELSIOR 001506' 523000 000042 HLLOS 42 ;ANOTHER WAY TO LOSE 001507' 260740 001727' PUSHJ P,FCRLF ;ROOM AT THE TOP 001510' 260740 001701' PUSHJ P,PRQ ;PRINT ? 001511' 260740 001536' PUSHJ P,PRNUM0 ;NUMBER OF MULTIPLES 001512' 265700 001667' JSP A,ERRPT7 ;REST OF MESSAGE 001513' 556554 645160 SIXBIT ?MULTIPLY DEFINED GLOBALS@? 001514' 547100 444546 001515' 515645 440047 001516' 545742 415463 001517' 400000 000000 001520' 603040 040000 PMS4: TLNE N,AUXSWE ;AUXILIARY OUTPUT DEVICE? 001521' 067100 000000 OUTPUT 2, ;INSURE A COMPLETE BUFFER 001522' 263740 000000 POPJ P, ;RETURN LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 34 DICK GRUEN: V25 3 AUG 68 ;ENTER FILE ON AUXILIARY OUTPUT DEVICE 001523' 077100 002060' IAD2: ENTER 2,DTOUT ;WRITE FILE NAME IN DIRECTORY 001524' 254000 001526' JRST IMD3 ;NO MORE DIRECTORY SPACE 001525' 263740 000000 POPJ P, 001526' 265700 001610' IMD3: JSP A,ERRPT ;DIRECTORY FULL ERROR 001527' 445162 160046 SIXBIT /DIR. FULL@/ 001530' 655454 400000 001531' 254000 000042' JRST LD2 ;PRINT THE 6 DIGIT OCTAL ADDRESS IN W ; ACCUMULATORS USED: D,T,V 001532' 200556 000001 PRNAM0: MOVE C,1(A) ;LOAD SYMBOL 001533' 200516 000002 PRNAM1: MOVE W,2(A) ;LOAD VALUE 001534' 260740 001561' PRNAM: PUSHJ P,PRNAME 001535' 260740 001555' PRNUM: PUSHJ P,SPACES 001536' 200440 001545' PRNUM0: MOVE V,PRNUM2 ;LOAD BYTE POINTER TO RH. OF W 001537' 211340 000006 MOVNI D,6 ;LOAD CHAR. COUNT 001540' 134400 000011 PRNUM1: ILDB T,V ;LOAD DIGIT TO BE OUTPUT 001541' 271400 000060 ADDI T,60 ;CONVERT FROM BINARY TO ASCII 001542' 260740 001734' PUSHJ P,TYPE2 001543' 341340 001540' AOJL D,PRNUM1 ;JUMP IF MORE DIGITS REMAIN 001544' 263740 000000 POPJ P, 001545' 220300 000012 PRNUM2: XWD 220300,W ;YE OLDE RECURSIVE NUMBER PRINTER ;PRINTS Q, WITH LEADING ZEROES SUPPRESSED; USES A AND T 001546' 231640 000012 RCNUM: IDIVI Q,12 ;RADIX DECIMAL 001547' 271700 000060 ADDI A,"0" 001550' 506717 000000 HRLM A,(P) 001551' 332000 000015 SKIPE Q 001552' 260740 001546' PUSHJ P,RCNUM 001553' 554417 000000 HLRZ T,(P) 001554' 254000 001734' JRST TYPE2 LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 35 DICK GRUEN: V25 3 AUG 68 ;PRINT FOUR SPACES 001555' 260740 001556' SPACES: PUSHJ P,SP1 001556' 260740 001557' SP1: PUSHJ P,SPACE 001557' 201400 000040 SPACE: MOVEI T,40 001560' 254000 001734' JRST TYPE2 ;SYMBOL PRINT - RADIX 50 ; ACCUMULATORS USED: D,T 001561' 200400 000013 PRNAME: MOVE T,C ;LOAD SYMBOL 001562' 621400 740000 TLZ T,740000 ;ZERO CODE BITS 001563' 211340 000006 MOVNI D,6 ;LOAD CHAR. COUNT 001564' 231400 000050 SPT: IDIVI T,50 ;THE REMAINDER IS THE NEXT CHAR. 001565' 506457 000000 HRLM V,(P) ;STORE IN LH. OF PUSHDOWN LIST 001566' 355000 000007 AOSGE D ;SKIP IF NO CHARS. REMAIN 001567' 260740 001564' PUSHJ P,SPT ;RECURSIVE CALL FOR NEXT CHAR. 001570' 554417 000000 HLRZ T,(P) ;LOAD FROM LH. OF PUSHDOWN LIST 001571' 322400 001733' JUMPE T,TYPE ;BLANK 001572' 271400 000057 ADDI T,60-1 001573' 303400 000071 CAILE T,71 001574' 271400 000007 ADDI T,101-72 001575' 303400 000132 CAILE T,132 001576' 275400 000070 SUBI T,134-44 001577' 306400 000043 CAIN T,43 001600' 201400 000056 MOVEI T,56 001601' 254000 001734' JRST TYPE2 ;PRINT A WORD OF SIXBIT CHARACTERS IN AC W ; ACCUMULATORS USED: Q,T,D 001602' 211640 000006 PWORD: MOVNI Q,6 ;SET CHARACTER COUNT TO SIX 001603' 200340 001754' PWORD1: MOVE D,LSTPT ;ENTER HERE WITH Q PRESET 001604' 134400 000007 PWORD2: ILDB T,D ;LOAD NEXT CHAR. TO BE OUTPUT 001605' 260740 001733' PUSHJ P,TYPE ;OUTPUT CHARACTER 001606' 341640 001604' AOJL Q,PWORD2 001607' 263740 000000 POPJ P, LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 36 DICK GRUEN: V25 3 AUG 68 ;ERROR MESSAGE PRINT SUBROUTINE ; FORM OF CALL: ; JSP A,ERRPT ; SIXBIT /<MESSAGE>/ ; ACCUMULATORS USED: T,V,C,W 001610' 661000 000020 ERRPT: TLO F,FCONSW ;INSURE TTY OUTPUT 001611' 260740 001730' PUSHJ P,CRLF ;ROOM AT THE TOP 001612' 260740 001701' PUSHJ P,PRQ ;START OFF WITH ? 001613' 261740 000015 ERRPT0: PUSH P,Q ;SAVE Q 001614' 334440 001652' SKIPA V,ERRPT5 001615' 260740 001733' ERRPT1: PUSHJ P,TYPE 001616' 134400 000011 ILDB T,V 001617' 306400 000040 CAIN T,40 001620' 254000 001645' JRST ERRPT4 001621' 306400 000005 CAIN T,5 001622' 254000 001671' JRST ERRPT9 001623' 302400 000003 CAIE T,3 001624' 254000 001615' JRST ERRPT1 001625' 336540 002054' SKIPN C,DTIN 001626' 254000 001645' JRST ERRPT4 001627' 211640 000014 MOVNI Q,14 001630' 201500 000077 MOVEI W,77 001631' 612540 000012 ERRPT2: TDNE C,W 001632' 254000 001635' JRST ERRPT3 001633' 242500 000006 LSH W,6 001634' 341640 001631' AOJL Q,ERRPT2 001635' 200500 001653' ERRPT3: MOVE W,ERRPT6 001636' 260740 001603' PUSHJ P,PWORD1 001637' 336500 002055' SKIPN W,DTIN1 001640' 254000 001645' JRST ERRPT4 001641' 242500 777772 LSH W,-6 001642' 661500 160000 TLO W,160000 001643' 211640 000004 MOVNI Q,4 001644' 260740 001603' PUSHJ P,PWORD1 001645' 260740 001730' ERRPT4: PUSHJ P,CRLF 001646' 262740 000015 ERRP41: POP P,Q 001647' 621000 000020 TLZ F,FCONSW ;ONE ERROR PER CONSOLE 001650' 350000 000011 AOS V ;PROGRAM BUMMERS BEWARE: 001651' 254020 000011 JRST @V ;V HAS AN INDEX OF A 001652' 440616 000000 ERRPT5: POINT 6,0(A) 001653' 004651 544500 ERRPT6: SIXBIT / FILE / LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 37 DICK GRUEN: V25 3 AUG 68 001654' 661000 000020 ERRPT8: TLO F,FCONSW ;INSURE TTY OUTPUT 001655' 260740 001701' PUSHJ P,PRQ ;START WITH ? 001656' 305400 000140 CAIGE T,140 ;IS IT A NON-PRINTING CHAR? 001657' 301400 000040 CAIL T,40 001660' 254000 001666' JRST ERRP8 001661' 261740 000010 PUSH P,T 001662' 201400 000136 MOVEI T,136 ;UP ARROW 001663' 260740 001734' PUSHJ P,TYPE2 001664' 262740 000010 POP P,T 001665' 271400 000100 ADDI T,100 ;CONVERT TO PRINTING CHAR. 001666' 260740 001734' ERRP8: PUSHJ P,TYPE2 001667' 260740 001557' ERRPT7: PUSHJ P,SPACE 001670' 254000 001613' JRST ERRPT0 001671' 201460 000011 ERRPT9: MOVEI V,@V 001672' 261740 000011 PUSH P,V 001673' 265700 001667' JSP A,ERRPT7 001674' 515454 454741 SIXBIT ?ILLEGAL -LOADER@? 001675' 540015 545741 001676' 444562 400000 001677' 262740 000011 POP P,V 001700' 254000 001646' JRST ERRP41 ;PRINT QUESTION MARK 001701' 261740 000010 PRQ: PUSH P,T ;SAVE 001702' 201400 000077 MOVEI T,"?" ;PRINT ? 001703' 260740 001734' PUSHJ P,TYPE2 ;... 001704' 262740 000010 POP P,T ;RESTORE 001705' 263740 000000 POPJ P, ;RETURN LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 38 DICK GRUEN: V25 3 AUG 68 ;INPUT - OUTPUT INTERFACE ;BINARY INPUT SUBROUTINE - RETURNS A WORD IN W IFE K,< 001706' 260740 001710' WORDPR: PUSHJ P,WORD ;GET FIRST WORD OF PAIR 001707' 200540 000012 MOVE C,W ;KEEP IT HANDY> 001710' 377000 002053' WORD: SOSG BUFR2 ;SKIP IF BUFFER NOT EMPTY 001711' 254000 001714' JRST WORD2 001712' 134500 002052' WORD1: ILDB W,BUFR1 ;PICK UP 36 BIT WORD 001713' 263740 000000 POPJ P, 001714' 066040 000000 WORD2: INPUT 1, ;GET NEXT BUFFER LOAD 001715' 062040 000012 STATUS 1,W ;GET DEVICE STATUS FROM MONITOR 001716' 602500 020000 TRNE W,IODEND ;TEST FOR EOF 001717' 254000 000725' JRST EOF ;END OF FILE EXIT 001720' 606500 740000 TRNN W,IOBAD ;TEST FOR DATA ERROR 001721' 254000 001712' JRST WORD1 ;DATA OK - CONTINUE LOADING 001722' 265700 001610' JSP A,ERRPT ;DATA ERROR - PRINT MESSAGE 001723' 515660 656400 SIXBIT /INPUT ERROR#/ 001724' 456262 576203 001725' 254000 000042' JRST LD2 ;GO TO ERROR RETURN ;TYPEOUT SUBROUTINE - THE CHARACTER SUPPLIED IN T IS CONVERTED TO ASCII ;AND IS OUTPUT ON THE CONSOLE AND/OR THE SPECIFIED LOADER MAP OUTPUT ;DEVICE 001726' 260740 001730' CRLFLF: PUSHJ P,CRLF 001727' 661000 000020 FCRLF: TLO F,FCONSW ;INSURE TTY OUTPUT 001730' 201400 000015 CRLF: MOVEI T,15 ;CARRIAGE RETURN LINE FEED 001731' 260740 001734' PUSHJ P,TYPE2 001732' 201400 777752 MOVEI T,12-40 ;LINE FEED IN PSEUDO SIXBIT 001733' 201410 000040 TYPE: MOVEI T,40(T) ;CONVERT SIXBIT TO ASCII 001734' 607040 020000 TYPE2: TLNN N,AUXSWI ;IS THER AN AUXILIARY DEVICE? 001735' 254000 001745' JRST TYPE3 ;NO, DONT OUTPUT TO IT 001736' 667040 040000 TLON N,AUXSWE ;IS AUX. DEV. ENTERED? 001737' 260740 001523' PUSHJ P,IAD2 ;NOPE, DO SO! 001740' 377000 002050' SOSG ABUF2 ;SPACE LEFT IN BUFFER? 001741' 067100 000000 OUTPUT 2, ;CREATE A NEW BUFFER 001742' 136400 002047' IDPB T,ABUF1 ;DEPOSIT CHARACTER 001743' 607000 000020 TLNN F,FCONSW ;FORCE OUTPUT TO CONSOLE TOO? 001744' 263740 000000 POPJ P, ;NOPE 001745' 336000 002042' TYPE3: SKIPN BUFO2 ;END OF BUFFER 001746' 067140 000000 OUTPUT 3, ;FORCE OUTPUT NOW 001747' 136400 002041' IDPB T,BUFO1 ;DEPOSIT CHARACTER 001750' 306400 000012 CAIN T,12 ;END OF LINE 001751' 067140 000000 OUTPUT 3, ;FORCE AN OUTPUT 001752' 263740 000000 POPJ P, LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 39 DICK GRUEN: V25 3 AUG 68 001753' 000002 000002 SE3: XWD 2,2 ;SYMBOL POINTER INCREMENT 001754' 440600 000012 LSTPT: POINT 6,W ;CHARACTER POINTER TO W 001755' 777737 001761' PDLPT: XWD -41,PDLST-1; INITIAL PUSHDOWN POINTER 001756' 034372 246575 COMM: SQUOZE 0,.COMM. 001757' 000000 000000 PDSAV: 0 ;SAVED PUSHDOWN POINTER 001760' 000000 000000 COMSAV: 0 ;LENGTH OF COMMON 001761' 000000 000000 MDG: 0 ;COUNTER FOR MUL DEF GLOBALS 001762' PDLST: BLOCK 40 002022' 000000 000000 F.C: 0 002023' 000000 000000 0 ;STORE N HERE 002024' 000000 000000 0 ;STORE X HERE 002025' 000000 000000 0 ;STORE H HERE 002026' 000000 000000 0 ;STORE S HERE 002027' 000000 000000 0 ;STORE R HERE 002030' 000000 000000 B.C: 0 002031' 000000 000000 F.I: 0 ;INITIAL F - FLAGS 002032' 000000 000000 0 ;INITIAL N 002033' 000011 004203' XWD V,LDEND ;INITIAL X - LOAD PROGRAM AFTER LOADER 002034' 000000 004343' EXP LDEND+JOBPRO ;INITIAL H - INITIAL PROG BREAK 002035' 000000 000000 0 ;INITIAL S 002036' 000012 000140 XWD W,JOBPRO ;INITIAL R - INITIAL RELOC 002037' 000000 000000 0 ;INITIAL B LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 40 DICK GRUEN: V25 3 AUG 68 ;BUFFER HEADERS AND HEADER HEADERS 002040' 000000 000000 BUFO: 0 ;CONSOLE INPUT HEADER HEADER 002041' 000000 000000 BUFO1: 0 002042' 000000 000000 BUFO2: 0 002043' 000000 000000 BUFI: 0 ;CONSOLE OUTPUT HEADER HEADER 002044' 000000 000000 BUFI1: 0 002045' 000000 000000 BUFI2: 0 002046' 000000 000000 ABUF: 0 ;AUXILIARY OUTPUT HEADER HEADER 002047' 000000 000000 ABUF1: 0 002050' 000000 000000 ABUF2: 0 002051' 000000 000000 BUFR: 0 ;BINARY INPUT HEADER HEADER 002052' 000000 000000 BUFR1: 0 002053' 000000 000000 BUFR2: 0 002054' 000000 000000 DTIN: 0 ;DECTAPE INPUT BLOCK 002055' 000000 000000 DTIN1: 0 002056' 000000 000000 0 002057' 000000 000000 DTIN2: 0 002060' 000000 000000 DTOUT: 0 ;DECTAPE OUTPUT BLOCK 002061' 000000 000000 DTOUT1: 0 002062' 000000 000000 0 002063' 000000 000000 0 000052 TTYL=52 ;TWO TTY BUFFERS 000406 IFE K,< BUFL=406 ;TWO DTA BUFFERS FOR LOAD> IFN K,< BUFL=203 ;ONE DTA BUFFER FOR LOAD> 000203 ABUFL=203 ;ONE DTA BUFFER FOR AUX DEV 002064' TTY1: BLOCK TTYL ;TTY BUFFER AREA 002136' BUF1: BLOCK BUFL ;LOAD BUFFER AREA 002544' AUX: BLOCK ABUFL ;AUX BUFFER AREA 002747' ZEROS: REPEAT 4,<0> 002747' 000000 000000 002750' 000000 000000 002751' 000000 000000 002752' 000000 000000 IFN RPGSW,<CTLIN: BLOCK 3 CTLNAM: BLOCK 3 CTLBUF: BLOCK 203+1 > LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 41 DICK GRUEN: V25 3 AUG 68 040000 IOBKTL=40000 400000 IOIMPM=400000 200000 IODERR=200000 100000 IODTER=100000 020000 IODEND=20000 740000 IOBAD=IODERR+IODTER+IOBKTL+IOIMPM INTERN PWORD,DTIN,DTOUT,LDEND INTERN WORD,LD,BEG,PDLST,LOAD INTERN CRLF,TYPE,PMS,PRMAP INTERN F,P,X,H,S,R,B,N,T,V,W,C,E,Q,A,D EXTERN JOBDDT,JOBFF,JOBSA,JOBREL,JOBSYM,JOBUSY,JOB41 ;END HERE IF 1K LOADER REQUESTED. IFN K, <LITS: LIT VAR LDEND: END LD > LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 42 DICK GRUEN: V25 3 AUG 68 ;HERE BEGINS FORTRAN FOUR LOADER 002753' F4LD: 002753' 550440 000005 HRRZ V,R; SET PROG BREAK INTO V 002754' 202440 003376' MOVEM V,LLC; SAVE FIRST WORD ADDRESS 002755' 201504 777776 MOVEI W,-2(S); GENERATE TABLES 002756' 661040 000010 TLO N,F4SW 002757' 552500 003402' HRRZM W,MLTP; MADE LABELS 002760' 552500 003401' HRRZM W,PLTP; PROGRAMMER LABELS 002761' 270500 004120' ADD W,[POINT 1,1]; GENERATE BIT-BYTE POINTER 002762' 202500 003377' MOVEM W,BITP 002763' 202500 003404' MOVEM W,SDSTP; FIRST DATA STATEMENT 002764' 350000 003404' AOS SDSTP; 002765' 200500 004121' MOVE W,[JRST ALLOVE] ;LAST DATA STATEMENT 002766' 202504 000000 MOVEM W,(S) 002767' 571500 777734 HRREI W,-^D36; BITS PER WORDUM 002770' 202500 003400' MOVEM W,BITC; BIT COUNT 002771' 260740 003062' PUSHJ P,BITWX+1 ;MAKE SURE OF ENOUGH SPACE 002772' 260740 001710' TEXTR: PUSHJ P,WORD; TEXT BY DEFAULT 002773' 554540 000012 HLRZ C,W 002774' 306540 777777 CAIN C,-1 002775' 254000 003345' JRST HEADER; HEADER 002776' 201540 000001 MOVEI C,1; RELOCATABLE 002777' 260740 003037' PUSHJ P,BITW; SHOVE AND STORE 003000' 254000 002772' JRST TEXTR; LOOP FOR NEXT WORD 003001' 377000 003405' ABS: SOSG BLKSIZ; MORE TO GET 003002' 254000 002772' JRST TEXTR; NOPE 003003' 260740 001710' ABSI: PUSHJ P,WORD; 003004' 201540 000000 MOVEI C,0; NON-RELOCATABLE 003005' 260740 003037' PUSHJ P,BITW; TYPE 0 003006' 254000 003001' JRST ABS LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 43 DICK GRUEN: V25 3 AUG 68 ;PROCESS TABLE ENTRIES 003007' 603000 000204 MDLB: TLNE F,FULLSW+SKIPSW; MADE LABEL PROC 003010' 254000 003020' JRST GLOBDF; NO ROOM AT THE IN 003011' 554540 003402' HLRZ C,MLTP; GET PRESENT SIZE 003012' 315540 003405' CAMGE C,BLKSIZ; IF NEW SIZE BIGGER, STR-R-RETCH 003013' 260740 003066' PUSHJ P,SMLT 003014' 550540 003402' HRRZ C,MLTP; GET BASE 003015' 270540 003405' MLPLC: ADD C,BLKSIZ; MAKE INDEX 003016' 607000 000204 TLNN F,FULLSW+SKIPSW; DONT LOAD 003017' 552453 000000 HRRZM V,(C); PUT AWAY DEFINITION 003020' 260740 001710' GLOBDF: PUSHJ P,WORD 003021' 603000 000204 TLNE F,FULLSW+SKIPSW ;SKIPPING THIS PROG? 003022' 254000 002772' JRST TEXTR ;YES, DON'T DEFINE 003023' 201551 000000 MOVEI C,(V); AND LOC 003024' 250500 000013 EXCH W,C 003025' 260740 003531' PUSHJ P,SYMXX; PUT IN DDT-SYMBOL TABLE 003026' 260740 003062' PUSHJ P,BITWX+1 003027' 254000 002772' JRST TEXTR 003030' 603000 000204 PLB: TLNE F,FULLSW+SKIPSW 003031' 254000 003020' JRST GLOBDF 003032' 554540 003401' HLRZ C,PLTP; PRESENT SIZE 003033' 315540 003405' CAMGE C,BLKSIZ 003034' 260740 003103' PUSHJ P,SPLT 003035' 550540 003401' HRRZ C,PLTP 003036' 254000 003015' JRST MLPLC LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 44 DICK GRUEN: V25 3 AUG 68 ;STORE WORD AND SET BIT TABLE 003037' 603000 000204 BITW: TLNE F,FULLSW+SKIPSW; WE DONT LOAD THIS 003040' 263740 000000 POPJ P,; 003041' 202520 000002 MOVEM W,@X; STORE AWAY OFFSET 003042' 136540 003377' IDPB C,BITP; STORE BIT 003043' 355000 003400' AOSGE BITC; STEP BIT COUNT 003044' 254000 003061' JRST BITWX; SOME MORE ROOM LEFT 003045' 571540 777734 HRREI C,-^D36; RESET COUNT 003046' 202540 003400' MOVEM C,BITC 003047' 370000 003401' SOS PLTP 003050' 370000 003377' SOS BITP; ALL UPDATED IFE EXPAND,<HRL C,MLTP SOS MLTP HRR C,MLTP> 003051' 550540 003402' IFN EXPAND,<HRRZ C,MLTP; TO ADDRESS 003052' 275540 000001 SUBI C,1 003053' 307560 000002 CAIG C,@X PUSHJ P,[PUSHJ P,XPAND POPJ P, ADDI C,2000 003054' 260740 004122' JRST POPJM2] 003055' 370000 003402' SOS MLTP 003056' 505553 000001 HRLI C,1(C)> 003057' 550400 003404' HRRZ T,SDSTP; GET DATA POINTER 003060' 251550 777777 BLT C,-1(T); MOVE DOWN LISTS 003061' 350000 000011 BITWX: AOS V; STEP LOADER LOCATION 003062' 550400 003402' HRRZ T,MLTP 003063' 307420 000002 CAIG T,@X; OVERFLOW CHECK IFE EXPAND,<TLO F,FULLSW> IFN EXPAND,<PUSHJ P, [PUSHJ P,XPAND TLOA F,FULLSW JRST POPJM3 003064' 260740 004126' POPJ P,]> 003065' 263740 000000 POPJ P,; 003066' 274540 003405' SMLT: SUB C,BLKSIZ; STRETCH 003067' 204500 003402' MOVS W,MLTP ;LEFT HALF HAS OLD BASE 003070' 270540 003402' ADD C,MLTP ;RIGHT HALF HAS NEW BASE 003071' 553000 000013 IFN EXPAND,< HRRZS C ;GET RID OF COUNT 003072' 307560 000002 CAIG C,@X PUSHJ P,[PUSHJ P,XPAND POPJ P, ADD W,[XWD 2000,0] ADDI C,2000 003073' 260740 004133' JRST POPJM2]> 003074' 542540 003402' HRRM C,MLTP ;PUT IN NEW MLTP 003075' 500540 000012 HLL C,W ;FORM BLT POINTER 003076' 271513 000000 ADDI W,(C) ;LAST ENTRY OF MLTP 003077' 504500 003405' HRL W,BLKSIZ ;NEW SIZE OF MLTP 003100' 502500 003402' HLLM W,MLTP ;... 003101' 251552 000000 SLTC: BLT C,0(W); MOVE DOWN (UP?) 003102' 263740 000000 POPJ P,; LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 44-1 DICK GRUEN: V25 3 AUG 68 003103' 274540 003405' SPLT: SUB C,BLKSIZ 003104' 204500 003402' MOVS W,MLTP; 003105' 272540 003401' ADDM C,PLTP 003106' 270540 003402' ADD C,MLTP 003107' 553000 000013 IFN EXPAND,< HRRZS C 003110' 307560 000002 CAIG C,@X PUSHJ P,[PUSHJ P,XPAND POPJ P, ADD W,[XWD 2000,0] ADDI C,2000 003111' 260740 004133' JRST POPJM2]> 003112' 542540 003402' HRRM C,MLTP ;PUT IN NEW MLTP 003113' 500540 000012 HLL C,W 003114' 554500 003401' HLRZ W,PLTP ;OLD SIZE OF PL TABLE 003115' 270500 003401' ADD W,PLTP ;NEW BASE OF PL TABLE 003116' 504500 003405' HRL W,BLKSIZ ;NEW SIZE OF PL TABLE 003117' 502500 003401' HLLM W,PLTP ;INTO POINTER 003120' 254000 003101' JRST SLTC 003121' 000000 000000 PT1: 0 LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 45 DICK GRUEN: V25 3 AUG 68 ;PROCESS END CODE WORD 003122' 260740 001710' ENDS: PUSHJ P,WORD; GET STARTING ADDRESS 003123' 603000 000004 TLNE F,SKIPSW 003124' 254000 003131' JRST ENDS1 ;FOOBAZ!!!!!!!! 003125' 322500 003131' JUMPE W,ENDS1; NOT MAIN 003126' 271505 000000 ADDI W,(R); RELOCATION OFFSET 003127' 607040 000002 TLNN N,ISAFLG; IGNORE STARTING ADDRESS 003130' 540000 000012 HRR F,W; SET SA 003131' 260740 001706' ENDS1: PUSHJ P,WORDPR ;DATA STORE SIZE 003132' 552540 003373' HRRZM C,PTEMP ;NUMBER OF PERMANENT TEMPS 003133' 202440 003372' MOVEM V,CCON; START OF CONSTANTS AREA 003134' 322500 003143' JUMPE W,E1; NULL 003135' 202500 003405' MOVEM W,BLKSIZ ;SAVE COUNT 003136' 201511 000000 MOVEI W,0(V) ;DEFINE CONST. 003137' 200540 003411' MOVE C,CNR50 ;... 003140' 607000 000204 TLNN F,SKIPSW!FULLSW 003141' 260740 001026' PUSHJ P,SYMPT ;... 003142' 260740 003254' PUSHJ P,GSWD ;STORE CONSTANT TABLE 003143' 201511 000000 E1: MOVEI W,0(V); GET LOADER LOC 003144' 250500 003373' EXCH W,PTEMP; STORE INTO PERM TEMP POINTER 003145' 270500 003373' ADD W,PTEMP; FORM TEMP TEMP ADDRESS 003146' 202500 003374' MOVEM W,TTEMP; POINTER 003147' 202440 003370' MOVEM V,GSTAB; STORE LOADER LOC IN GLOBSUB 003150' 200540 003407' MOVE C,TTR50 ;DEFINE %TEMP. 003151' 603000 000204 TLNE F,SKIPSW!FULLSW 003152' 254000 003160' JRST E1A 003153' 260740 001026' PUSHJ P,SYMPT ;... 003154' 200540 003410' MOVE C,PTR50 ;DEFINE (IF EXTANT) TEMP. 003155' 201511 000000 MOVEI W,0(V) ;... 003156' 312500 003374' CAME W,TTEMP ;ANY PERM TEMPS? 003157' 260740 001026' PUSHJ P,SYMPT ;YES, DEFINE 003160' 260740 001710' E1A: PUSHJ P,WORD; NUMBER OF GLOBSUBS 003161' 322500 003164' JUMPE W,E11 003162' 202500 003405' MOVEM W,BLKSIZ ;SIZE OF GLOBSUB 003163' 260740 003254' PUSHJ P,GSWD ;STORE GLOBSUB TABLE 003164' 202440 003367' E11: MOVEM V,STAB; SCALARS 003165' 260740 001710' PUSHJ P,WORD; HOW MANY? 003166' 322500 003170' JUMPE W,E21; NONE 003167' 260740 003261' PUSHJ P,GSWDPR ;STORE SCALAR TABLE 003170' 202440 003366' E21: MOVEM V,ATAB; ARRAY POINTER 003171' 260740 001710' PUSHJ P,WORD; COMMENTS FOR SCALARS APPLY 003172' 322500 003174' JUMPE W,E31 003173' 260740 003261' PUSHJ P,GSWDPR ;STORE ARRAY TABLE 003174' 202440 003371' E31: MOVEM V,AOTAB; ARRAYS OFFSET 003175' 260740 001710' PUSHJ P,WORD; SAME COMMENTS AS ABOVE 003176' 322500 003200' JUMPE W,E41 003177' 260740 003261' PUSHJ P,GSWDPR ;STORE ARRAY OFFSET TABLE 003200' 260740 001710' E41: PUSHJ P,WORD; TEMP, SCALAR, ARRAY SIZE 003201' 603000 000204 TLNE F,FULLSW!SKIPSW ;SKIPPING THIS PROG? 003202' 201500 000000 MOVEI W,0 ;DON'T ACCEPT GLOB SUBPROG REQUESTS 003203' 202440 003365' MOVEM V,CTAB; SETUP COMMON TABLE POINTER 003204' 270500 003370' ADD W,GSTAB; GLOBAL SUBPROG BASE LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 45-1 DICK GRUEN: V25 3 AUG 68 003205' 202500 003375' MOVEM W,COMBAS; START OF COMMON 003206' 260740 001710' PUSHJ P,WORD; COMMON BLOCK SIZE 003207' 552500 003405' HRRZM W,BLKSIZ 003210' 322500 003267' JUMPE W,PASS2; NO COMMON 003211' 260740 001706' COMTOP: PUSHJ P,WORDPR ;GET A COMMON PAIR 003212' 260740 001355' PUSHJ P,SDEF; SEARCH 003213' 254000 003234' JRST COMYES; ALREADY THERE 003214' 507000 000012 HRLS W 003215' 540500 003375' HRR W,COMBAS; PICK UP THIS COMMON LOC 003216' 607000 000204 TLNN F,SKIPSW!FULLSW 003217' 260740 003531' PUSHJ P,SYMXX; DEFINE IT 003220' 204500 000012 MOVS W,W; SWAP HALFS 003221' 270500 003375' ADD W,COMBAS; UPDATE COMMON LOC 003222' 542500 003375' HRRM W,COMBAS; OLD BASE PLUS NEW SIZE 003223' 557000 000012 HLRZS W; RETURN ADDRESS 003224' 621540 400000 TLZ C,400000 003225' 607000 000204 TLNN F,SKIPSW!FULLSW 003226' 260740 003531' PUSHJ P,SYMXX 003227' 260740 003245' COMCOM: PUSHJ P,CWSTWX ;STORE A WORD PAIR 003230' 370000 003405' SOS BLKSIZ 003231' 373000 003405' SOSLE BLKSIZ 003232' 254000 003211' JRST COMTOP 003233' 254000 003267' JRST PASS2 003234' 603000 000004 COMYES: TLNE F,SKIPSW 003235' 254000 003227' JRST COMCOM ;NO ERRORS IF SKIPPING 003236' 554556 000002 HLRZ C,2(A); PICK UP DEFINITION 003237' 313500 000013 CAMLE W,C; CHECK SIZE 003240' 254000 001334' JRST ILC; ILLEGAL COMMON 003241' 200556 000001 MOVE C,1(A); NAME 003242' 550516 000002 HRRZ W,2(A); BASE 003243' 254000 003227' JRST COMCOM LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 46 DICK GRUEN: V25 3 AUG 68 003244' 260740 001706' PRSTWX: PUSHJ P,WORDPR ;GET A WORD PAIR 003245' 250540 000012 CWSTWX: EXCH C,W ;SPACE TO STORE FIRST WORD OF PAIR? 003246' 260740 003250' PUSHJ P,WSTWX ;... 003247' 250540 000012 EXCH C,W ;THERE WAS; IT'S STORED 003250' 603000 000204 WSTWX: TLNE F,FULLSW!SKIPSW ;SPACE FOR ANOTHER WORD? 003251' 263740 000000 POPJ P, ;NOPE, RETURN 003252' 202520 000002 MOVEM W,@X ;YES, STORE IT. 003253' 254000 003061' JRST BITWX ;TELL THE TABLES ABOUT IT; THEN RETURN 003254' 260740 001710' GSWD: PUSHJ P,WORD ;GET WORD FROM TABLE 003255' 260740 003250' PUSHJ P,WSTWX ;STASH IT 003256' 372000 003405' SOSE BLKSIZ ;FINISHED? 003257' 254000 003254' JRST GSWD ;NOPE, LOOP 003260' 263740 000000 POPJ P, ;TRA 1,4 003261' 202500 003405' GSWDPR: MOVEM W,BLKSIZ ;KEEP COUNT 003262' 260740 003244' GSWDP1: PUSHJ P,PRSTWX ;GET AND STASH A PAIR 003263' 370000 003405' SOS BLKSIZ ;FINISHED? 003264' 373000 003405' SOSLE BLKSIZ ;... 003265' 254000 003262' JRST GSWDP1 ;NOPE, LOOP 003266' 263740 000000 POPJ P, ;TRA 1,4 LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 47 DICK GRUEN: V25 3 AUG 68 ;BEGIN HERE PASS2 TEXT PROCESSING 003267' 271442 000000 PASS2: ADDI V,(X) 003270' 202440 003364' MOVEM V,TOPTAB ;SAVE FOR OVERLAP CHECKING 003271' 603000 000204 TLNE F,FULLSW+SKIPSW; ABORT? 003272' 254000 003546' JRST ALLOVE; YES 003273' 200440 003376' MOVE V,LLC ;PICK UP PROGRAM ORIGIN 003274' 311440 003372' CAML V,CCON ;IS THIS A PROGRAM? 003275' 254000 003612' JRST FBLKD ;NO, GO LOOK FOR FIRST BLK DATA 003276' 663040 000400 TLOE N,PGM1 ;YES, IS THIS FIRST F4 PROG? 003277' 254000 003302' JRST NOPRG ;NO 003300' 540500 003375' HRR W,COMBAS ;YES, PLACE PROG BREAK IN LH 003301' 506502 000131 HRLM W,JOBCHN(X) ;FOR CHAIN 003302' 550500 003401' NOPRG: HRRZ W,PLTP; GET PROG TABLE BASE 003303' 554540 003401' HLRZ C,PLTP; AND SIZE 003304' 270500 000013 ADD W,C; COMPUTE END OF PROG TABLE 003305' 270500 004120' ADD W,[POINT 1,1]; AND BEGINNING OF BIT TABLE 003306' 250500 003377' EXCH W,BITP; SWAP POINTERS 003307' 134540 003377' PASS2B: ILDB C,BITP; GET A BIT 003310' 322540 003342' JUMPE C,PASS2C; NO PASS2 PROCESSING 003311' 260740 003314' PUSHJ P,PROC; PROCESS A TAG 003312' 254000 003307' JRST PASS2B; MORE TO COME 003313' 254000 003616' JRST ENDTP; 003314' 135540 004140' PROC: LDB C,[POINT 6,@X,23]; TAG 003315' 402000 003406' SETZM MODIF; ZERO TO ADDRESS MODIFIER 003316' 622540 000040 TRZE C,40; 003317' 350000 003406' AOS MODIF 003320' 506540 003341' HRLM C,ENDTAB; ERROR SETUP 003321' 201500 003330' MOVEI W,TABDIS; HEAD OF TABLE 003322' 554412 000000 HLRZ T,(W); GET ENTRY 003323' 312400 000013 CAME T,C; CHECK 003324' 344500 003322' AOJA W,.-2 003325' 550512 000000 HRRZ W,(W); GET DISPATCH 003326' 135540 004141' LDB C,[POINT 12,@X,35] 003327' 254012 000000 JRST (W); DISPATCH 003330' 000011 003412' TABDIS: XWD 11,PCONS; CONSTANTS 003331' 000006 003500' XWD 06,PGS; GLOBAL SUBPROGRAMS 003332' 000020 003426' XWD 20,PST; SCALARS 003333' 000022 003425' XWD 22,PAT; ARRAYS 003334' 000001 003444' XWD 01,PATO; ARRAYS OFFSET 003335' 000000 003526' XWD 00,PPLT; PROGRAMMER LABELS 003336' 000031 003524' XWD 31,PMLT; MADE LABESL 003337' 000026 003476' XWD 26,PPT; PERMANENT TEMPORARYS 003340' 000027 003474' XWD 27,PTT; TEMPORARY TEMPORARYS 003341' 000000 001002' ENDTAB: XWD 00,LOAD4A; ERRORS 003342' 260740 003421' PASS2C: PUSHJ P,PASS2A 003343' 254000 003307' JRST PASS2B 003344' 254000 003616' JRST ENDTP LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 48 DICK GRUEN: V25 3 AUG 68 ;DISPATCH ON A HEADER 003345' 316500 004142' HEADER: CAMN W,[EXP -2]; END OF PASS ONE 003346' 254000 003122' JRST ENDS 003347' 135540 004143' LDB C,[POINT 12,W,35]; GET SIZE 003350' 202540 003405' MOVEM C,BLKSIZ 003351' 405500 770000 ANDI W,770000 003352' 322500 003030' JUMPE W,PLB; PROGRAMMER LABEL 003353' 306500 500000 CAIN W,500000; ABSOLUTE BLOCK 003354' 254000 003003' JRST ABSI; 003355' 306500 310000 CAIN W,310000; MADE LABEL 003356' 254000 003007' JRST MDLB; MADE LABEL 003357' 306500 600000 CAIN W,600000 003360' 254000 003020' JRST GLOBDF 003361' 306500 700000 CAIN W,700000; DATA STATEMENT 003362' 254000 003563' JRST DATAS 003363' 254000 001002' JRST LOAD4A; DATA STATEMENTS WILL GO HERE 003364' 000000 000000 TOPTAB: 0 ;TOP OF TABLES 003365' 000000 000000 CTAB: 0; COMMON 003366' 000000 000000 ATAB: 0; ARRAYS 003367' 000000 000000 STAB: 0; SCALARS 003370' 000000 000000 GSTAB: 0; GLOBAL SUBPROGS 003371' 000000 000000 AOTAB: 0; OFFSET ARRAYS 003372' 000000 000000 CCON: 0; CONSTANTS 003373' 000000 000000 PTEMP: 0; PERMANENT TEMPS 003374' 000000 000000 TTEMP: 0; TEMPORARY TEMPS 003375' 000000 000000 COMBAS: 0; BASE OF COMMON 003376' 000000 000000 LLC: 0; PROGRAM ORIGIN 003377' 000000 000000 BITP: 0; BIT POINTER 003400' 000000 000000 BITC: 0; BIT COUNT 003401' 000000 000000 PLTP: 0; PROGRAMMER LABEL TABLE 003402' 000000 000000 MLTP: 0; MADE LABEL TABLE 003403' 000000 000000 SDS: 0 ;START OF DATA STATEMENTS 003404' 000000 000000 SDSTP: 0 ;START OF DATA STATEMENTS POINTER 003405' 000000 000000 BLKSIZ: 0; BLOCK SIZE 003406' 000000 000000 MODIF: 0; ADDRESS MODIFICATION +1 003407' 136253 114765 TTR50: XWD 136253,114765 ;RADIX 50 %TEMP. 003410' 100450 614765 PTR50: XWD 100450,614765 ;RADIX 50 TEMP. 003411' 112320 235025 CNR50: XWD 112320,235025 ;RADIX 50 CONST. LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 49 DICK GRUEN: V25 3 AUG 68 ;ROUTINES TO PROCESS POINTERS 003412' 270540 003372' PCONS: ADD C,CCON; GENERATE CONSTANT ADDRESS 003413' 364540 003417' SOJA C,PCOMX ;ADJUST FOR 1 AS FIRST ENTRY 003414' 260740 003535' PSTA: PUSHJ P,SWAPSY ;NON-COMMON SCALARS AND ARRAYS 003415' 271545 000000 ADDI C,(R); RELOCATE 003416' 260740 003511' PCOM1: PUSHJ P,SYDEF ;... 003417' 270540 003406' PCOMX: ADD C,MODIF ;ADDR RELOC FOR DP 003420' 542560 000002 HRRM C,@X; REPLACE ADDRESS 003421' 350000 000011 PASS2A: AOS V; STEP READOUT POINTER 003422' 311440 003372' CAML V,CCON ;END OF PROCESSABLES? 003423' 350017 000000 CPOPJ1: AOS (P); SKIP 003424' 263740 000000 POPJ P,; 003425' 334500 003366' PAT: SKIPA W,ATAB ;ARRAY TABLE BASE 003426' 200500 003367' PST: MOVE W,STAB ;SCALAR TABLE BASE 003427' 241540 000001 ROT C,1 ;SCALE BY 2 003430' 270540 000012 ADD C,W ;ADD IN TABLE BASE 003431' 271542 777776 ADDI C,-2(X); TABLE ENTRY 003432' 554513 000000 HLRZ W,(C); CHECK FOR COMMON 003433' 322500 003414' JUMPE W,PSTA; NO COMMON 003434' 260740 003436' PUSHJ P,COMDID ;PROCESS COMMON 003435' 254000 003416' JRST PCOM1 003436' 242500 000001 COMDID: LSH W,1 ;PROCESS COMMON TABLE ENTRIES 003437' 270500 003365' ADD W,CTAB; COMMON TAG 003440' 271502 777776 ADDI W,-2(X); OFFSET 003441' 260740 003535' PUSHJ P,SWAPSY; GET SYMBOL AND SET TO DEFINED 003442' 270552 000001 ADD C,1(W); BASE OF COMMON 003443' 263740 000000 POPJ P, ;RETURN 003444' 241540 000001 PATO: ROT C,1 003445' 270540 003371' ADD C,AOTAB; ARRAY OFFSET 003446' 271542 777776 ADDI C,-2(X); LOADER OFFSET 003447' 202540 004173' MOVEM C,CT1; SAVE CURRENT POINTER 003450' 550553 000001 HRRZ C,1(C); PICK UP REFERENCE POINTER 003451' 405540 007777 ANDI C,7777; MASK TO ADDRESS 003452' 241540 000001 ROT C,1; ALWAYS A ARRAY 003453' 271542 777776 ADDI C,-2(X) 003454' 270540 003366' ADD C,ATAB 003455' 554513 000000 HLRZ W,(C); COMMON CHECK 003456' 322500 003465' JUMPE W,NCO 003457' 260740 003436' PUSHJ P,COMDID ;PROCESS COMMON 003460' 260740 003511' PUSHJ P,SYDEF 003461' 200540 004173' MOVE C,CT1 003462' 570553 000000 HRRE C,(C) 003463' 270552 000001 ADD C,1(W) 003464' 254000 003417' JRST PCOMX LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 50 DICK GRUEN: V25 3 AUG 68 003465' 260740 003535' NCO: PUSHJ P,SWAPSY; 003466' 271545 000000 ADDI C,(R) ;DEFINE SYMBOL IN TRUE LOC 003467' 260740 003511' PUSHJ P,SYDEF ;... 003470' 200540 004173' MOVE C,CT1 003471' 550553 000000 HRRZ C,(C) ;OFFSET ADDRESS PICKUP 003472' 271545 000000 ADDI C,(R) ;WHERE IT WILL BE 003473' 254000 003417' JRST PCOMX ;STASH ADDR AWAY 003474' 270540 003374' PTT: ADD C,TTEMP; TEMPORARY TEMPS 003475' 364540 003417' SOJA C,PCOMX ;ADJUST FOR 1 AS FIRST ENTRY 003476' 270540 003373' PPT: ADD C,PTEMP; PERMANENT TEMPS 003477' 364540 003417' SOJA C,PCOMX ;ADJUST FOR 1 AS FIRST ENTRY 003500' 270540 003370' PGS: ADD C,GSTAB; GLOBSUBS 003501' 271542 777777 ADDI C,-1(X); OFFSET 003502' 200553 000000 MOVE C,(C) 003503' 641540 640000 TLC C,640000; MAKE A REQUEST 003504' 260740 003541' PUSHJ P,TBLCHK ;CHECK FOR OVERLAP 003505' 201511 000000 MOVEI W,(V); THIS LOC 003506' 546520 000002 HLRM W,@X; ZERO RIGHT HALF 003507' 260740 003531' PUSHJ P,SYMXX 003510' 254000 003421' JRST PASS2A 003511' 603040 000040 SYDEF: TLNE N,SYDAT ;SYMBOL WANTS DEFININITION? 003512' 263740 000000 POPJ P, ;NO, GO AWAY 003513' 261740 000013 PUSH P,C ;SAVE THE WORLD 003514' 261740 000012 PUSH P,W 003515' 260740 003541' PUSHJ P,TBLCHK ;CHECK FOR OVERLAP 003516' 200500 000013 MOVE W,C 003517' 332540 000010 SKIPE C,T ;PICKUP VALUE 003520' 260740 003531' PUSHJ P,SYMXX 003521' 262740 000012 POP P,W 003522' 262740 000013 POP P,C 003523' 263740 000000 POPJ P,; 003524' 270540 003402' PMLT: ADD C,MLTP 003525' 334000 000000 SKIPA 003526' 270540 003401' PPLT: ADD C,PLTP 003527' 550553 000000 HRRZ C,(C) 003530' 254000 003417' JRST PCOMX 003531' 261740 000011 SYMXX: PUSH P,V 003532' 260740 001026' PUSHJ P,SYMPT 003533' 262740 000011 POP P,V 003534' 263740 000000 POPJ P,; 003535' 201400 000000 SWAPSY: MOVEI T,0; SET TO EXCHANGE DEFS 003536' 250413 000001 EXCH T,1(C); GET NAME 003537' 550553 000000 HRRZ C,(C) ;GET VALUE 003540' 263740 000000 POPJ P, 003541' 550500 003402' TBLCHK: HRRZ W,MLTP ;GETT TOP OV TABLES 003542' 275500 000002 SUBI W,2 LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 50-1 DICK GRUEN: V25 3 AUG 68 003543' 317500 003364' CAMG W,TOPTAB ;WILL IT OVERLAP IFE EXPAND,<TLO F,FULLSW> IFN EXPAND,< JRST [PUSHJ P,XPAND TLOA F,FULLSW JRST TBLCHK 003544' 254000 004144' JRST .+1]> 003545' 263740 000000 POPJ P, LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 51 DICK GRUEN: V25 3 AUG 68 ;END OF PASS2 003546' 621040 000010 ALLOVE: TLZ N,F4SW ;END OF F4 PROG 003547' 603000 000204 TLNE F,FULLSW!SKIPSW 003550' 254000 001301' JRST HIGH3 003551' 540240 003375' HRR R,COMBAS ;TOP OF THE DATA 003552' 540440 000005 HRR V,R ;IS THIS THE HIGHEST LOC YET? 003553' 307160 000002 CAIG H,@X ;... 003554' 201160 000002 MOVEI H,@X ;YES, TELL THE WORLD 003555' 317140 003403' CAMG H,SDS ;HIGHEST LOC GREATER THAN DATA STATEMENTS? 003556' 254000 001301' JRST HIGH3 ;NO, RETURN 003557' 271144 000001 ADDI H,1(S) ;YES, SET UP MEANINGFUL ERROR COMMENT 003560' 274140 003403' SUB H,SDS ;... 003561' 661000 000200 TLO F,FULLSW ;INDICATE OVERFLO 003562' 254000 001301' JRST HIGH3 ;RETURN 003563' 603000 000204 DATAS: TLNE F,FULLSW+SKIPSW 003564' 254000 003604' JRST DAX 003565' 201544 000000 MOVEI C,(S) ;ADDR OF WORD UNDER SYMBOL TABLE 003566' 210500 003405' MOVN W,BLKSIZ ;HOW FAR DOWN TO BLT 003567' 272500 003401' ADDM W,PLTP ;UPDATE TABLE POINTERS 003570' 272500 003377' ADDM W,BITP ;... 003571' 272500 003404' ADDM W,SDSTP ;... 003572' 270540 000012 ADD C,W ;RH(C):= WHEN TO STOP BLT 003573' 504540 003402' HRL C,MLTP ;SOURCE OF BLTED DATA 003574' 270500 003402' ADD W,MLTP ;UPDATE, GET DESTINATION OF BLT DATA 003575' 553000 000012 IFN EXPAND,< HRRZS W ;GET RID OF LEFT HALF 003576' 307520 000002 CAIG W,@X PUSHJ P,[PUSHJ P,XPAND POPJ P, ADDI W,2000 ADD C,[XWD 2000,2000] 003577' 260740 004151' JRST POPJM2]> 003600' 542500 003402' HRRM W,MLTP ;NO SET THIS SO EXTRA CORE NOT ZEROED 003601' 500500 000013 HLL W,C ;FORM BLT POINTER 003602' 251513 777777 BLT W,-1(C) ;MOVE TABLES DOWN (BUT NOT JRST ALLOVE) 003603' 260740 003062' PUSHJ P,BITWX+1 003604' 260740 001710' DAX: PUSHJ P,WORD; READ ONE WORD 003605' 607000 000204 TLNN F,FULLSW+SKIPSW 003606' 202513 000000 MOVEM W,(C) 003607' 373000 003405' SOSLE BLKSIZ ;COUNT OF DATA SEQUENCE SIZE 003610' 344540 003604' AOJA C,DAX ;INCREMENT DATA SEQUENCE DEPOSIT LOC 003611' 254000 002772' JRST TEXTR; DONE LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 52 DICK GRUEN: V25 3 AUG 68 003612' 663040 000200 FBLKD: TLOE N,BLKD1 ;IS THIS FIRST BLOCK DATA? 003613' 254000 003616' JRST ENDTP ;NO 003614' 540440 003375' HRR V,COMBAS ;PLACE PROG BREAK IN RH FOR 003615' 542442 000131 HRRM V,JOBCHN(X) ;CHAIN 003616' 603000 000204 ENDTP: TLNE F,FULLSW+SKIPSW 003617' 254000 003546' JRST ALLOVE 003620' 540440 003370' HRR V,GSTAB 003621' 311440 003367' ENDTP0: CAML V,STAB; ANY MORE GLOBSUBS 003622' 254000 003636' JRST ENDTP2; NO 003623' 200560 000002 MOVE C,@X; GET SUBPROG NAME 003624' 260740 001353' PUSHJ P,SREQ; IS IT ALLREADY REQUESTED 003625' 344440 003621' AOJA V,ENDTP0; YES 003626' 260740 001355' PUSHJ P,SDEF; OR DEFINED 003627' 344440 003621' AOJA V,ENDTP0; YES 003630' 260740 003541' PUSHJ P,TBLCHK 003631' 201500 000000 MOVEI W,0 ;PREPARE DUMMY LINK 003632' 607000 000204 TLNN F,FULLSW+SKIPSW; ABORT 003633' 260740 001131' PUSHJ P,SYM3X; PUT IN DUMMY REQUEST 003634' 260740 003062' PUSHJ P,BITWX+1; OVERLAP CHECK 003635' 344440 003621' AOJA V,ENDTP0 003636' 402000 003121' ENDTP2: SETZM PT1 003637' 540440 003404' HRR V,SDSTP 003640' 275442 000000 IFN EXPAND,< SUBI V,(X) 003641' 317440 003375' CAMG V,COMBAS JRST [PUSHJ P,XPAND TLOA F,FULLSW JRST .-3 003642' 254000 004156' JRST .+1] 003643' 540440 003404' HRR V,SDSTP> 003644' 552440 003403' HRRZM V,SDS ;DATA STATEMENT LOC 003645' 275442 000000 ENDTP1: SUBI V,(X); COMPENSATE FOR OFFSET 003646' 200520 000002 MOVE W,@X; GET WORD 003647' 603500 777777 TLNE W,-1; NO LEFT HALF IMPLIES COUNT 003650' 254000 003774' JRST DODON; DATA DONE 003651' 270500 004162' ADD W,[MOVEI W,3] 003652' 271520 000002 ADDI W,@X 003653' 250520 000002 EXCH W,@X 003654' 350000 000011 AOS V 003655' 270520 000002 ADD W,@X; ITEMS COUNT 003656' 202500 004175' MOVEM W,ITC 003657' 200500 004163' MOVE W,[MOVEM W,LTC] 003660' 202520 000002 MOVEM W,@X; SETUP FOR DATA EXECUTION 003661' 350000 000011 AOS V 003662' 200500 004164' MOVE W,[MOVEI W,0] 003663' 250520 000002 EXCH W,@X 003664' 202500 004176' MOVEM W,ENC; END COUNT 003665' 350000 000011 AOS V 003666' 201520 000002 MOVEI W,@X 003667' 272500 004175' ADDM W,ITC 003670' 200520 000002 LOOP: MOVE W,@X 003671' 554400 000012 HLRZ T,W; LEFT HALF INST. 003672' 405400 777000 ANDI T,777000 003673' 306400 254000 CAIN T,254000 ;JRST? LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 52-1 DICK GRUEN: V25 3 AUG 68 003674' 254000 003766' JRST WRAP ;END OF DATA 003675' 306400 260000 CAIN T,260000 ;PUSHJ? 003676' 254012 003731' JRST PJTABL(W) ;DISPATCH VIA TABLE 003677' 306400 200000 CAIN T,200000; MOVE? 003700' 344440 003707' AOJA V,INNER 003701' 306400 270000 CAIN T,270000; ADD? 003702' 254000 003725' JRST ADDOP 003703' 306400 221000 CAIN T,221000; IMULI? 003704' 344440 003670' AOJA V,LOOP 003705' 302400 220000 CAIE T,220000; IMUL? 003706' 254000 001002' JRST LOAD4A; NOTA 003707' 550420 000002 INNER: HRRZ T,@X; GET ADDRESS 003710' 622400 770000 TRZE T,770000; ZERO TAG? 003711' 364400 003722' SOJA T,CONPOL; NO, CONSTANT POOL 003712' 274400 003121' SUB T,PT1; SUBTRACT INDUCTION NUMBER 003713' 240400 000001 ASH T,1 003714' 370000 000010 SOS T; FORM INDUCTION POINTER 003715' 542420 000002 HRRM T,@X 003716' 554420 000002 HLRZ T,@X 003717' 271400 000017 ADDI T,P 003720' 506420 000002 HRLM T,@X 003721' 344440 003670' AOJA V,LOOP LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 53 DICK GRUEN: V25 3 AUG 68 003722' 270400 004175' CONPOL: ADD T,ITC; CONSTANT BASE 003723' 542420 000002 HRRM T,@X 003724' 344440 003670' AOJA V,LOOP 003725' 550420 000002 ADDOP: HRRZ T,@X 003726' 622400 770000 TRZE T,770000 003727' 364400 003722' SOJA T,CONPOL 003730' 344440 003670' SKIPIN: AOJA V,LOOP 003731' 254000 003740' PJTABL: JRST DWFS ;PUSHJ 17,0 003732' 354000 003121' AOSA PT1 ;INCREMENT DO COUNT 003733' 374000 003121' SOSA PT1; DECREMENT DO COUNT 003734' 334500 004165' SKIPA W,[EXP DOINT.] 003735' 201500 003754' MOVEI W,DOEND. 003736' 542520 000002 HRRM W,@X 003737' 344440 003730' AOJA V,SKIPIN ;SKIP A WORD 003740' 201500 004044' DWFS: MOVEI W,DWFS. 003741' 542520 000002 HRRM W,@X 003742' 350000 000011 AOS V 003743' 661040 000040 TLO N,SYDAT 003744' 260740 003314' PUSHJ P,PROC; PROCESS THE TAG 003745' 254000 001002' JRST LOAD4A ;DATA STATEMENT BELOW CODE TOP 003746' 254000 003670' JRST LOOP ;PROPER RETURN 003747' 262740 000011 DOINT.: POP P,V; GET ADDRESS OF INITIAL VALUE 003750' 261751 000000 PUSH P,(V); STORE INDUCTION VARIABLE 003751' 350000 000011 AOS V 003752' 261740 000011 PUSH P,V; INITIAL ADDRESS 003753' 254011 000000 JRST (V) 003754' 554437 000000 DOEND.: HLRZ T,@(P) 003755' 272417 777776 ADDM T,-2(P); INCREMENT 003756' 550437 000000 HRRZ T,@(P); GET FINAL VALUE 003757' 315417 777776 CAMGE T,-2(P); END CHECK 003760' 254000 003763' JRST DODONE; WRAP IT UP 003761' 262757 000000 POP P,(P); BACK UP POINTER 003762' 254037 000000 JRST @(P) LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 54 DICK GRUEN: V25 3 AUG 68 003763' 262757 777777 DODONE: POP P,-1(P); BACK UP ADDRESS 003764' 262757 777777 POP P,-1(P) 003765' 254000 003423' JRST CPOPJ1 ;RETURN 003766' 200500 004176' WRAP: MOVE W,ENC; NUMBER OF CONSTANTS 003767' 270500 004175' ADD W,ITC; CONSTANT BASE 003770' 201552 000000 MOVEI C,(W); CHAIN 003771' 542560 000002 HRRM C,@X 003772' 201452 000000 MOVEI V,(W); READY TO GO 003773' 254000 003645' JRST ENDTP1 003774' 621040 001060 DODON: TLZ N,RCF!SYDAT!DZER ;DATA STATEMENT FLAGS 003775' 200500 003373' MOVE W,PTEMP ;TOP OF PROG 003776' 271502 000000 ADDI W,(X) ;+OFFSET 003777' 200540 003375' MOVE C,COMBAS ;TOP OF DATA 004000' 271542 000000 ADDI C,(X) ;+OFFSET 004001' 311500 000013 SECZER: CAML W,C ;ANY DATA TO ZERO? 004002' 254020 003403' JRST @SDS ;NO, DO DATA STATEMENTS 004003' 311500 003403' CAML W,SDS ;IS DATA BELOW DATA STATEMENTS? 004004' 661000 000200 TLO F,FULLSW ;NO, INDICATE OVERFLO 004005' 607000 000204 TLNN F,FULLSW+SKIPSW ;SHOULD WE ZERO? 004006' 402012 000000 SETZM (W) ;YES, DO SO 004007' 667040 001000 TLON N,DZER ;GO BACK FOR MORE? 004010' 344500 004001' AOJA W,SECZER ;YES, PLEASE 004011' 313540 003403' CAMLE C,SDS ;ALL DATA BELOW DATA STATEMENTS? 004012' 200540 003403' MOVE C,SDS ;ALL ZEROED DATA MUST BE 004013' 505512 777777 HRLI W,-1(W) ;SET UP BLT POINTER TO ZERO DATA 004014' 607000 000204 TLNN F,FULLSW+SKIPSW ;SHOULD WE ZERO? 004015' 251513 777777 BLT W,-1(C) ;YES, DO SO 004016' 254020 003403' JRST @SDS ;GO DO DATA STATEMENTS LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 55 DICK GRUEN: V25 3 AUG 68 004017' 603040 000020 DREAD: TLNE N,RCF; NEW REPEAT COUNT NEEDED 004020' 254000 004032' JRST FETCH; NO 004021' 200500 004174' MOVE W,LTC 004022' 202500 004201' MOVEM W,LTCTEM 004023' 200520 004174' MOVE W,@LTC; GET A WORD 004024' 556500 004200' HLRZM W,RCNT; SET REPEAT COUNT 004025' 552500 004177' HRRZM W,WCNT; SET WORD COUNT 004026' 262512 000000 POP W,(W); SUBTRACT ONE FROM BOTH HALFS 004027' 502520 004174' HLLM W,@LTC; DECREMENT REPEAT COUNT 004030' 350500 004174' AOS W,LTC; STEP READOUT 004031' 661040 000020 TLO N,RCF 004032' 200520 004174' FETCH: MOVE W,@LTC 004033' 350000 004174' AOS LTC 004034' 372000 004177' SOSE WCNT 004035' 263740 000000 POPJ P,; 004036' 376000 004200' SOSN RCNT 004037' 254000 004042' JRST DOFF. 004040' 200440 004201' MOVE V,LTCTEM; RESTORE READOUT 004041' 202440 004174' MOVEM V,LTC 004042' 621040 000020 DOFF.: TLZ N,RCF; RESET DATA REPEAT FLAG 004043' 263740 000000 POPJ P,; 004044' 200417 000000 DWFS.: MOVE T,(P) 004045' 350017 000000 AOS (P) 004046' 200410 000000 MOVE T,(T); GET ADDRESS 004047' 556400 004202' HLRZM T,DWCT; DATA WORD COUNT 004050' 573000 000010 HRRES T 004051' 270400 000012 ADD T,W; OFFSET 004052' 271402 000000 ADDI T,(X); LOADER OFFSET 004053' 260740 004017' DWFS.1: PUSHJ P,DREAD ;GET A DATA WORD 004054' 311400 003403' CAML T,SDS ;BELOW BEGINNING OF DATA STATEMENTS 004055' 661000 000200 TLO F,FULLSW ;YES, INDICATE OVERFLO 004056' 607000 000204 TLNN F,FULLSW+SKIPSW ;LOAD THE NEXT DATA ITEM? 004057' 202510 000000 MOVEM W,(T) ;YES, STORE IT 004060' 350000 000010 AOS T 004061' 372500 004202' SOSE W,DWCT; STEP DOWN AND TEST 004062' 254000 004053' JRST DWFS.1 ;ONE MORE TIME, MOZART BABY! 004063' 263740 000000 POPJ P,; LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 56 DICK GRUEN: V25 3 AUG 68 ;LITERAL TABLE 004064' LITS: LIT 004064' 444566 435062 004065' 656460 435462 004066' 545741 444562 004067' 251656 000000 004070' 530043 576245 004071' 435041 515600 004072' 545142 240000 004073' 200500 004072' 004074' 202500 002054' 004075' 260740 000722' 004076' 621000 000002 004077' 254000 000623' 004100' 545142 242000 004101' 525742 444164 004102' 624151 440000 004103' 260740 000365' 004104' 254000 001266' 004105' 254000 001015' 004106' 077777 777777 004107' 260740 000365' 004110' 665000 000200 004111' 254000 001234' 004112' 254000 001241' 004113' 000002 000000 004114' 260740 000365' 004115' 665000 000200 004116' 254000 000456' 004117' 263740 000000 004120' 440100 000001 004121' 254000 003546' 004122' 260740 000365' 004123' 263740 000000 004124' 271540 002000 004125' 254000 000456' 004126' 260740 000365' 004127' 665000 000200 004130' 254000 000455' 004131' 263740 000000 004132' 002000 000000 004133' 260740 000365' 004134' 263740 000000 004135' 270500 004132' 004136' 271540 002000 004137' 254000 000456' 004140' 140620 000002 004141' 001420 000002 004142' 777777 777776 004143' 001400 000012 004144' 260740 000365' 004145' 665000 000200 LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 56-1 DICK GRUEN: V25 3 AUG 68 004146' 254000 003541' 004147' 254000 003545' 004150' 002000 002000 004151' 260740 000365' 004152' 263740 000000 004153' 271500 002000 004154' 270540 004150' 004155' 254000 000456' 004156' 260740 000365' 004157' 665000 000200 004160' 254000 003637' 004161' 254000 003643' 004162' 201500 000003 004163' 202500 004174' 004164' 201500 000000 004165' 000000 003747' 004173' VAR 004173' 000000 000000 CT1: 0 ;TEMP FOR C 004174' 000000 000000 LTC: 0 004175' 000000 000000 ITC: 0 004176' 000000 000000 ENC: 0 004177' 000000 000000 WCNT: 0 ;DATA WORD COUNT 004200' 000000 000000 RCNT: 0 ;DATA REPEAT COUNT 004201' 000000 000000 LTCTEM: 0 ;TEMP FOR LTC 004202' 000000 000000 DWCT: 0 ;DATA WORD COUNT 000000' LDEND: END LD NO ERRORS DETECTED PROGRAM BREAK IS 004203 9K CORE USED LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 57 SYMBOL TABLE 000662 A 000016 INT ABS 003001' ABSI 003003' ABUF 002046' ABUF1 002047' ABUF2 002050' ABUFL 000203 ADDOP 003725' ALLFLG 000001 SPD ALLOVE 003546' AOTAB 003371' ASW 000100 SPD ATAB 003366' AUX 002544' AUXSWE 040000 SPD AUXSWI 020000 SPD B 000006 INT B.C 002030' BEG 000000' INT BITC 003400' BITP 003377' BITW 003037' BITWX 003061' BLKD1 000200 SPD BLKSIZ 003405' BLTSET 000251' BLTSYM 000000 BUF1 002136' BUFI 002043' BUFI1 002044' BUFI2 002045' BUFL 000406 BUFO 002040' BUFO1 002041' BUFO2 002042' BUFR 002051' BUFR1 002052' BUFR2 002053' C 000013 INT CALLEX 000007' CCON 003372' CDDTGT 000005 SPD CDDTOU 000003 SPD CEXIT 000012 SPD CHAIN3 000350' CHN5 000001 CHNBLT 000014 CHNC 000307' CHNERR 000010 CHNR 000310' CHNSYM 001212' CNR50 003411' LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 57-1 SYMBOL TABLE COMBAS 003375' COMCOM 003227' COMDID 003436' COMFLG 000004 SPD COMM 001756' COMSAV 001760' COMTOP 003211' COMYES 003234' CONPOL 003722' CPOPJ1 003423' CRLF 001730' INT CRLFLF 001726' CSETDD 000002 SPD CSW 000001 SPD CT1 004173' CTAB 003365' CTLSET 000004' CWSTWX 003245' D 000007 INT DATAS 003563' DAX 003604' DDSW 004000 SPD DISPL 000005 DODON 003774' DODONE 003763' DOEND. 003754' DOFF. 004042' DOINT. 003747' DREAD 004017' DSW 100000 SPD DSYMSW 001000 SPD DTIN 002054' INT DTIN1 002055' DTIN2 002057' DTOUT 002060' INT DTOUT1 002061' DWCT 004202' DWFS 003740' DWFS. 004044' DWFS.1 004053' DZER 001000 SPD E 000014 INT E1 003143' E11 003164' E1A 003160' E21 003170' E31 003174' E41 003200' ENC 004176' ENDS 003122' ENDS1 003131' ENDTAB 003341' ENDTP 003616' LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 57-2 SYMBOL TABLE ENDTP0 003621' ENDTP1 003645' ENDTP2 003636' EOF 000725' EOF1 000726' EOF2 000727' ERRP41 001646' ERRP8 001666' ERRPT 001610' ERRPT0 001613' ERRPT1 001615' ERRPT2 001631' ERRPT3 001635' ERRPT4 001645' ERRPT5 001652' ERRPT6 001653' ERRPT7 001667' ERRPT8 001654' ERRPT9 001671' ESW 000002 SPD EXEQSW 002000 SPD EXPAND 000001 F 000000 INT F.C 002022' F.I 002031' F4LD 002753' F4LIB 010000 SPD F4SW 000010 SPD FBLKD 003612' FCONSW 000020 SPD FCRLF 001727' FETCH 004032' FIXW 001162' FIXWL 001171' FIXWP 001152' FSCN 000730' FSCN1 000746' FSCN2 000751' FSW 000010 SPD FULLC 001266' FULLSW 000200 SPD GLOBDF 003020' GSTAB 003370' GSWD 003254' GSWDP1 003262' GSWDPR 003261' H 000003 INT HEADER 003345' HIGH 001274' HIGH0 001272' HIGH3 001301' IAD2 001523' ILC 001334' LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 57-3 SYMBOL TABLE ILD 000611' ILD1 000616' ILD2 000623' ILD3 000631' ILD4 000635' ILD5 000643' ILD6 000621' ILD9 000637' IMD3 001526' INNER 003707' IOBAD 740000 IOBKTL 040000 IODEND 020000 IODERR 200000 IODTER 100000 IOIMPM 400000 IOWDP 000013 IOWDPP 000363' ISAFLG 000002 SPD ISW 020000 SPD ITC 004175' JOB41 000330' EXT JOBBLT 000134 SPD JOBCHN 000131 SPD JOBDDT 000331' EXT JOBFF 000612' EXT JOBPRO 000140 SPD JOBREL 001223' EXT JOBSA 000332' EXT JOBSYM 000413' EXT JOBUSY 000247' EXT K 000000 LD 000000' INT LD2 000042' LD2B 000050' LD2BA 000054' LD2D 000057' LD2DA 000057' LD2Q 000042' LD3 000063' LD3A 000100' LD3AA 000066' LD4 000110' LD5 000115' LD5A 000127' LD5B 000134' LD5B1 000137' LD5C 000145' LD5C1 000165' LD5D 000201' LD5E 000203' LD5E1 000205' LD5E2 000215' LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 57-4 SYMBOL TABLE LD5E3 000225' LD5E5 000212' LD6 000466' LD6A 000461' LD6A1 000464' LD6B 000472' LD6C 000524' LD6D 000527' LD7 000533' LD7A 000536' LD7B 000542' LD7C 000546' LD7D 000554' LD8 000561' LD9 000572' LDAC 000000 LDDT 000710' LDDT0 000712' LDDT1 000716' LDDT2 000722' LDDT3 000723' LDDTX 000707' LDEND 004203' INT LDF 000752' LIB 000666' LIB1 000671' LIB2 000673' LIB3 000701' LIBF 000653' LIBF1 000660' LIBF2 000661' LIBSW 004000 SPD LITS 004064' LLC 003376' LOAD 000753' INT LOAD1 000754' LOAD1A 000755' LOAD2 000772' LOAD3 000777' LOAD4 001000' LOAD4A 001002' LOCD 001340' LOOP 003670' LOSEBI 000006 LRAID 000704' LRAIDX 000703' LSTPT 001754' LTC 004174' LTCTEM 004201' MDG 001761' MDLB 003007' MLPLC 003015' MLTP 003402' LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 57-5 SYMBOL TABLE MODIF 003406' MVABRT 001256' MVDWN 001234' N 000001 INT NAME 001311' NAME1 001317' NAME2 001330' NCO 003465' NOEX 000275' NOPRG 003302' NSW 200000 SPD NUTS 000002' P 000017 INT PASS2 003267' PASS2A 003421' PASS2B 003307' PASS2C 003342' PAT 003425' PATO 003444' PCOM1 003416' PCOMX 003417' PCONS 003412' PDLPT 001755' PDLST 001762' INT PDSAV 001757' PGM1 000400 SPD PGS 003500' PJTABL 003731' PLB 003030' PLTP 003401' PMLT 003524' PMS 001460' INT PMS2 001476' PMS3 001504' PMS4 001520' POPJM2 000456' POPJM3 000455' PP 000000 PPDL 000060 SPD PPLT 003526' PPT 003476' PRMAP 001407' INT PRMAP1 001427' PRMAP2 001444' PRMAP3 001455' PRMAP4 001456' PRMAP5 001460' PRNAM 001534' PRNAM0 001532' PRNAM1 001533' PRNAME 001561' PRNUM 001535' PRNUM0 001536' LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 57-6 SYMBOL TABLE PRNUM1 001540' PRNUM2 001545' PROC 003314' PROG 001006' PROG1 001020' PRQ 001701' PRSTWX 003244' PRWORD 001363' PST 003426' PSTA 003414' PT1 003121' PTEMP 003373' PTR50 003410' PTT 003474' PWORD 001602' INT PWORD1 001603' PWORD2 001604' Q 000015 INT R 000005 INT RCF 000020 SPD RCNT 004200' RCNUM 001546' REMSYM 001344' REWSW 002000 SPD RPGSW 000000 RWORD 001371' RWORD1 001373' RWORD2 001377' RWORD3 001403' S 000004 INT SAS1 000234' SASYM 000227' SDEF 001355' SDEF1 001356' SDEF2 001360' SDS 003403' SDSTP 003404' SE3 001753' SECZER 004001' SFULLC 001257' SKIPIN 003730' SKIPSW 000004 SPD SLASH 000100 SPD SLIBSW 000400 SPD SLTC 003101' SMLT 003066' SP1 001556' SPACE 001557' SPACES 001555' SPLT 003103' SPT 001564' SREQ 001353' SSW 400000 SPD LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 57-7 SYMBOL TABLE STAB 003367' START 001306' SVA 001101' SWAPSY 003535' SYDAT 000040 SPD SYDEF 003511' SYM 001023' SYM1 001037' SYM1A 001053' SYM1B 001055' SYM1C 001057' SYM1D 001062' SYM2 001070' SYM2A 001102' SYM2B 001071' SYM2C 001100' SYM2W 001221' SYM2W1 001075' SYM2WA 001225' SYM3 001106' SYM3A 001137' SYM3A1 001144' SYM3B 001145' SYM3X 001131' SYM3X1 001116' SYM3X2 001127' SYM4 001227' SYM4A 001232' SYMFIX 001174' SYMPT 001026' SYMSW 040000 SPD SYMXX 003531' T 000010 INT TABDIS 003330' TBLCHK 003541' TEXTR 002772' TOPTAB 003364' TTEMP 003374' TTR50 003407' TTY1 002064' TTYL 000052 TYPE 001733' INT TYPE2 001734' TYPE3 001745' V 000011 INT W 000012 INT WCNT 004177' WORD 001710' INT WORD1 001712' WORD2 001714' WORDPR 001706' WRAP 003766' WSTWX 003250' LOADER - LOADS MACROX AND SIXTRAN FOUR PAGE 57-8 SYMBOL TABLE X 000002 INT XPAND 000365' XPAND2 000401' XPAND3 000426' XPAND4 000442' XPAND5 000446' XPAND6 000432' XPAND7 000452' ZEROS 002747' LLL OOOOOOOOO AAAAAAAAA DDDDDDDDDDDD 111 KKK KKK LLL OOOOOOOOO AAAAAAAAA DDDDDDDDDDDD 111 KKK KKK LLL OOOOOOOOO AAAAAAAAA DDDDDDDDDDDD 111 KKK KKK LLL OOO OOO AAA AAA DDD DDD 111111 KKK KKK LLL OOO OOO AAA AAA DDD DDD 111111 KKK KKK LLL OOO OOO AAA AAA DDD DDD 111111 KKK KKK LLL OOO OOO AAA AAA DDD DDD 111 KKK KKK LLL OOO OOO AAA AAA DDD DDD 111 KKK KKK LLL OOO OOO AAA AAA DDD DDD 111 KKK KKK LLL OOO OOO AAA AAA DDD DDD 111 KKKKKKKKK LLL OOO OOO AAA AAA DDD DDD 111 KKKKKKKKK LLL OOO OOO AAA AAA DDD DDD 111 KKKKKKKKK LLL OOO OOO AAAAAAAAAAAAAAA DDD DDD 111 KKK KKK LLL OOO OOO AAAAAAAAAAAAAAA DDD DDD 111 KKK KKK LLL OOO OOO AAAAAAAAAAAAAAA DDD DDD 111 KKK KKK LLL OOO OOO AAA AAA DDD DDD 111 KKK KKK LLL OOO OOO AAA AAA DDD DDD 111 KKK KKK LLL OOO OOO AAA AAA DDD DDD 111 KKK KKK LLLLLLLLLLLLLLL OOOOOOOOO AAA AAA DDDDDDDDDDDD 111111111 KKK KKK LLLLLLLLLLLLLLL OOOOOOOOO AAA AAA DDDDDDDDDDDD 111111111 KKK KKK LLLLLLLLLLLLLLL OOOOOOOOO AAA AAA DDDDDDDDDDDD 111111111 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 11:23:08 File: DSKB1 :LOAD1K.LST [8,200] Created: 20-April-1967 11:19:00 Printed: 24-April-1978 11:22:30 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:1777 File will be deleted after printing 1KLOAD - LOADS MACROX PAGE 1 DICK GRUEN: V25 3 AUG 68 000001 K==1 SUBTTL DICK GRUEN: V25 3 AUG 68 ;K=1 ;K=1 MEANS 1KLOADER IFNDEF K,<K=0> ;K=0 MEANS F4 LOADER ;RPGSW=1 ;MEANS RPG FEATURE IFNDEF RPGSW,<RPGSW=0> ;LDAC=1 ;MEANS LOAD CODE INTO ACS IFNDEF LDAC,<LDAC=0> ;BLTSYM=1 ;MOVE SYMBOL TABLE DOWN TO END OF PROG IFNDEF BLTSYM,<BLTSYM=0> ;EXPAND=1 ;FOR AUTOMATIC CORE EXPANSION IFNDEF EXPAND,< IFN K,<EXPAND=0> IFE K,<EXPAND=1>> ;PP=1 ;ALLOW PROJ-PROG # IFNDEF PP,<PP=0> ;CHN5=0 ;IF CHAIN WHICH DOESN'T SAVES JOB41 IFNDEF CHN5,<CHN5=1> IFE K,< TITLE LOADER - LOADS MACROX AND SIXTRAN FOUR> IFN K,< TITLE 1KLOAD - LOADS MACROX> 1KLOAD - LOADS MACROX PAGE 2 DICK GRUEN: V25 3 AUG 68 ;ACCUMULATOR ASSIGNMENTS 000000 F=0 ;FLAGS IN LH, SA IN RH 000001 N=1 ;PROGRAM NAME POINTER 000002 X=2 ;LOADER OFFSET 000003 H=3 ;HIGHEST LOC LOADED 000004 S=4 ;UNDEFINED POINTER 000005 R=5 ;RELOCATION CONSTANT 000006 B=6 ;SYMBOL TABLE POINTER 000007 D=7 000010 T=10 000011 V=T+1 000012 W=12 ;VALUE 000013 C=W+1 ;SYMBOL 000014 E=C+1 ;DATA WORD COUNTER 000015 Q=15 ;RELOCATION BITS 000016 A=Q+1 ;SYMBOL SEARCH POINTER 000017 P=17 ;PUSHDOWN POINTER ;FLAGS F(0 - 17) 000001 CSW==1 ;ON - COLON SEEN 000002 ESW==2 ;ON - EXPLICIT EXTENSION IDENT. 000004 SKIPSW==4 ;ON - DO NOT LOAD THIS PROGRAM 000010 FSW==10 ;ON - SCAN FORCED TO COMPLETION 000020 FCONSW==20 ;ON - FORCE CONSOLE OUTPUT 000100 ASW==100 ;ON - LEFT ARROW ILLEGAL 000200 FULLSW==200 ;ON - STORAGE EXCEEDED 000400 SLIBSW==400 ;ON - LIB SEARCH IN THIS PROG 001000 DSYMSW==1000 ;ON - LOAD WITH SYMBOLS FOR DDT 002000 REWSW==2000 ;ON - REWIND AFTER INIT 004000 LIBSW==4000 ;ON - LIBRARY SEARCH MODE 010000 F4LIB==10000 ;ON - F4 LIBRARY SEARCH LOOKUP 020000 ISW==20000 ;ON - DO NOT PERFORM INIT 040000 SYMSW==40000 ;ON - LOAD LOCAL SYMBOLS 100000 DSW==100000 ;ON - CHAR IN IDENTIFIER 200000 NSW==200000 ;ON - SUPPRESS LIBRARY SEARCH 400000 SSW==400000 ;ON - SWITCH MODE ;FLAGS N(0 - 17) 000001 ALLFLG==1 ;ON - LIST ALL GLOBALS 000002 ISAFLG==2 ;ON - IGNORE STARTING ADDRESSES 000004 COMFLG==4 ;ON - SIZE OF COMMON SET IFE K,< F4SW==10 ;F4 IN PROGRESS RCF==20 ;READ DATA COUNT SYDAT==40 ;SYMBOL IN DATA> 000100 SLASH==100 ;SLASH SEEN IFE K,< BLKD1==200 ;ON- FIRST BLOCK DATA SEEN PGM1==400 ;ON FIRST F4 PROG SEEN DZER==1000 ;ON - ZERO SECOND DATA WORD> 002000 EXEQSW==2000 ;IMMEDIATE EXECUTION 004000 DDSW==4000 ;GO TO DDT IFN RPGSW,<RPGF==10000 ;IN RPG MODE> 020000 AUXSWI==20000 ;ON - AUX. DEVICE INITIALIZED 040000 AUXSWE==40000 ;ON - AUX. DEVICE ENTERED IFN PP,<PPSW==100000 ;ON - READING PROJ-PROG # PPCSW==200000 ;ON - READING PROJ #> 1KLOAD - LOADS MACROX PAGE 3 DICK GRUEN: V25 3 AUG 68 000137 LOC 137 000137 000000 000025 OCT 25 ;VERSION # 000000' RELOC MLON SALL ;MONITOR LOCATIONS IN THE USER AREA 000140 JOBPRO==140 ;PROGRAM ORIGIN 000134 JOBBLT==134 ;BLT ORIGIN 000131 JOBCHN==131 ;RH = PROG BREAK OF FIRST BLOCK DATA ;LH = PROG BREAK OF FIRST F4 PROG ;CALLI DEFINITIONS 000003 CDDTOUT==3 ;CALLI DDTOUT 000012 CEXIT==12 ;CALLI EXIT 000005 CDDTGT==5 ;CALLI DDTGT 000002 CSETDDT==2 ;CALLI SETDDT ;LENGTH OF PUSHDOWN LIST FOR POLISH FIXUPS 000060 PPDL==60 1KLOAD - LOADS MACROX PAGE 4 DICK GRUEN: V25 3 AUG 68 IFN RPGSW,< RPGSET: CALLI 0 INIT 17,1 ;SET UP DSK SIXBIT /DSK/ XWD 0,CTLIN JRST NUTS MOVE [SIXBIT /QQLOAD/] ;NAME OF COMMAND FILE MOVEM CTLNAM MOVSI (SIXBIT /RPG/) ;AND EXT MOVEM CTLNAM+1 SETZM CTLNAM+3 LOOKUP 17,CTLNAM ;THERE? JRST NUTS ;NO INIT 16,16 ;GET SET TO DELETE QQLOAD.RPG SIXBIT /DSK/ 0 JRST LD ;GIVE UP COMPLETELY SETZM CTLNAM+3 HLLZS CTLNAM+1 ;CLEAR OUT EXTRA JUNK LOOKUP 16,CTLNAM JRST LD RENAME 16,ZEROS ;DELETE IT JFCL ;IGNORE IF IT WILL NOT GO RELEASE 16,0 ;GET RID OF THIS DEVICE SETZM NONLOD ;THIS IS NOT A CONTINUATION RPGS3: MOVEI CTLBUF MOVEM JOBFF ;SET UP BUFFER INBUF 17,1 MOVEI [ASCIZ / LOADING /] ;PRINT MESSAGE THAT WE ARE STARTING CALLI CDDTOUT SKIPE NONLOD ;CONTINUATION? JRST RPGS2 ;YES, SPECIAL SETUP MOVSI R,F.I ;NOW SO WE CAN SET FLAG BLT R,R TLO N,RPGF JRST CTLSET ;SET UP TTY RPGS1: PUSHJ P,[TLNE F,ESW ;HERE FROM FOO* COMMAND, STORE NAME JRST LDDT3 ;SAVE EXTENSION TLZE F,CSW!DSW ;OR AS NAME MOVEM W,DTIN POPJ P,] MOVEM 0,SVRPG# ;SAVE 0 JUST IN CASE SETZM NONLOD# ;DETERMINE IF CONTINUATION MOVEI 0,2(B) ;BY SEEING IF ANY SYMBOLS LOADED CAME 0,JOBREL SETOM NONLOD ;SET TO -1 AND SKIP CALLI MOVE 0,ILD1 MOVEM 0,RPG1 INIT 17,1 RPG1: 0 XWD 0,CTLIN 1KLOAD - LOADS MACROX PAGE 4-1 DICK GRUEN: V25 3 AUG 68 JSP A,ILD5 LOOKUP 17,DTIN ;THE FILE NAME JRST ILD9 JRST RPGS3 RPGS2: MOVSI 0,RPGF ;SET FLAG IORM 0,F.C+N TLO N,RPGF MOVE 0,SVRPG JRST LD2Q ;BACK TO INPUT SCANNING > 1KLOAD - LOADS MACROX PAGE 5 DICK GRUEN: V25 3 AUG 68 ;MONITOR LOADER CONTROL 000000' BEG: LD: IFN RPGSW,<SKIPA ;NORMAL INITIALIZE JRST RPGSET ;SPECIAL INIT> 000000' 513000 000042 HLLZS 42 ;GET RID OF ERROR COUNT IF NOT IN RPG MODE 000001' 047000 000000 CALLI 0 ;INITIALIZE THIS JOB 000002' 205240 001701' NUTS: MOVSI R,F.I ;SET UP INITIAL ACCUMULATORS 000003' 251240 000005 BLT R,R 000004' 041140 000001 CTLSET: INIT 3,1 ;INITIALIZE CONSOLE 000005' 646471 000000 SIXBIT /TTY/ 000006' 001710' 001713' XWD BUFO,BUFI 000007' 047000 000012 CALLEX: CALLI CEXIT ;DEVICE ERROR, FATAL TO JOB 000010' 201600 001734' MOVEI E,TTY1 000011' 202600 000000* MOVEM E,JOBFF 000012' 064140 000001 INBUF 3,1 000013' 065140 000001 OUTBUF 3,1 ;INITIALIZE OUTPUT BUFFERS 000014' 067140 000000 OUTPUT 3, ;DO INITIAL REDUNDANT OUTPUT 000015' 550300 000000* HRRZ B,JOBREL ;PICK UP CORE BOUND 000016' 332000 000000* SKIPE JOBDDT ;DOES DDT EXIST? 000017' 550300 000000* HRRZ B,JOBSYM ;USED BOTTOM OF SYMBOL TABLE INSTEAD 000020' 274300 001623' SUB B,SE3 ;INITIALIZE SYMBOL TABLE POINTER 000021' 303146 000001 CAILE H,1(B) ;TEST CORE ALLOCATION 000022' 047000 000012 CALLI CEXIT ;INSUFFICIENT CORE, FATAL TO JOB 000023' 204600 000002 MOVS E,X ;SET UP BLT POINTER 000024' 541602 000001 HRRI E,1(X) 000025' 402014 777777 SETZM -1(E) ;ZERO FIRST WORD 000026' 251606 000000 BLT E,(B) ;ZERO CORE UP TO THE SYMBOL AREA 000027' 550200 000006 HRRZ S,B ;INITIALIZE UNDEF. POINTER 000030' 540040 000006 HRR N,B ;INITIALIZE PROGRAM NAME POINTER 000031' 541240 000140 HRRI R,JOBPRO ;INITIALIZE THE LOAD ORIGIN 000032' 200600 001626' MOVE E,COMM ;SET .COMM. AS THE FIRST PROGRAM 000033' 202606 000001 MOVEM E,1(B) ;STORE IN SYMBOL TABLE 000034' 552246 000002 HRRZM R,2(B) ;STORE COMMON ORIGIN 000035' 201600 001672' MOVEI E,F.C ;INITIALIZE STATE OF THE LOADER 000036' 251600 001700' BLT E,B.C 000037' 402000 001631' SETZM MDG ;MULTIPLY DEFINED GLOBAL COUNT 000040' 205500 254200 MOVSI W,254200 ;STORE HALT IN JOB41 000041' 202502 000000* MOVEM W,JOB41(X) ;... IFN LDAC!BLTSYM,<MOVEI W,20 ;SET UP SPACE TO SAVE FOR ACS AND MOVEM W,KORSP# ;USER DEFINITIONS WITH DDT> 1KLOAD - LOADS MACROX PAGE 6 DICK GRUEN: V25 3 AUG 68 IFN RPGSW,<JRST LD2Q> LD2: IFN RPGSW,<MOVSI B,RPGF ;HERE ON ERRORS, TURN OFF RPG ANDCAM B,F.C+N ;IN CORE> ;LOADER SCAN FOR FILE NAMES 000042' 205300 001672' LD2Q: MOVSI B,F.C ;RESTORE ACCUMULATORS 000043' 251300 000006 BLT B,B 000044' 200740 001625' MOVE P,PDLPT ;INITIALIZE PUSHDOWN LIST 000045' 402000 001715' SETZM BUFI2 ;CLEAR INPUT BUFFER POINTER 000046' 402000 000522' IFE PP,< SETZM ILD1 ;CLEAR INPUT DEVICE NAME> IFN PP,< MOVSI T,(SIXBIT /DSK/) ;ASSUME DSK MOVEM T,ILD1 SETZM OLDDEV# ;TO MAKE IT GO BACK AFTER /D FOR LIBSR> 000047' 402000 001724' SETZM DTIN ;CLEAR INPUT FILE NAME IFN PP,<SETZM PPN# ;CLEAR INPUT PROJ-PROG #> 000050' 071040 000000 LD2B: RELEAS 1, ;RELEASE BINARY INPUT DEVICE IFN RPGSW,< TLNE N,RPGF ;NOT IF DOING RPG JRST LD2BA> 000051' 201400 000052 MOVEI T,"*" 000052' 136400 001711' IDPB T,BUFO1 ;OUTPUT ASTERISK TO START INPUT 000053' 067140 000000 OUTPUT 3, 000054' 621000 022707 LD2BA: TLZ F,FULLSW+ASW+ISW+CSW+ESW+SKIPSW+SLIBSW+REWSW 000055' 603000 004000 TLNE F,LIBSW ;WAS LIBRARY MODE ON? 000056' 661000 000004 TLO F,SKIPSW ;YES, NORMAL MODE IS SKIPPING LD2D: IFN PP,<SETZM PPN ;DO NOT REMEMBER PPNS FOR NOW LD2DB: SKIPE W,OLDDEV ;RESET DEVICE IF NEEDED CAMN W,ILD1 ;IS IT SAME? JRST LD2DA ;YES, FORGET IT TLZ F,ISW+DSW+FSW+REWSW MOVEM W,ILD1> 000057' LD2DA: IFN RPGSW,< SETZM DTIN1 ;CLEAR EXTENSION> 000057' 201500 000000 MOVEI W,0 ;INITIALIZE IDENTIFIER SCAN 000060' 201600 000006 MOVEI E,6 ;INITIALIZE CHARACTER COUNTER 000061' 200440 001624' MOVE V,LSTPT ;INITIALIZE BYTE POINTER TO W 000062' 621000 500010 TLZ F,SSW+DSW+FSW ;LEAVE SWITCH MODE LD3: IFN RPGSW,<TLNE N,RPGF ;CHECK RPG FEATURE JRST RPGRD> 000063' 377000 001715' SOSG BUFI2 ;DECREMENT CHARACTER COUNT 000064' 066140 000000 INPUT 3, ;FILL TTY BUFFER 000065' 134400 001714' ILDB T,BUFI1 ;LOAD T WITH NEXT CHARACTER 000066' 200640 000010 LD3AA: MOVE Q,T 000067' 231640 000011 IDIVI Q,11 ;TRANSLATE TO 4 BIT CODE 000070' 135656 000465' LDB Q,LD8(A) ;LOAD CLASSIFICATION CODE 000071' 305640 000004 CAIGE Q,4 ;MODIFY CODE IF .GE. 4 000072' 607000 400000 TLNN F,SSW ;MODIFY CODE IF SWITCH MODE OFF 000073' 271640 000004 ADDI Q,4 ;MODIFY CLASS. CODE FOR DISPATCH 000074' 550715 000100' HRRZ A,LD3A(Q) ;LOAD RH DISPATCH ENTRY 000075' 301640 000010 CAIL Q,10 ;SKIP IF CORRECT DISPATCH ENTRY 000076' 554715 000070' HLRZ A,LD3A-10(Q) ;LOAD LH DISPATCH ENTRY 1KLOAD - LOADS MACROX PAGE 6-1 DICK GRUEN: V25 3 AUG 68 000077' 254020 000016 JRST @A ;JUMP TO INDICATED LOCATION ;COMMAND DISPATCH TABLE 000100' 000063' 000446' LD3A: XWD LD3,LD7B ;IGNORED CHAR, BAD CHAR (SWITCH) 000101' 000365' 000372' XWD LD6A,LD6 ;</> OR <(>, LETTER (SWITCH) 000102' 000115' 000430' XWD LD5,LD6C ;<:>, DIGIT (SWITCH ARG.) 000103' 000127' 000433' XWD LD5A,LD6D ;<.>, ESCAPE SWITCH MODE <)> 000104' 000145' 000437' XWD LD5C,LD7 ;<=> OR <L. ARROW>, BAD CHAR. 000105' 000134' 000110' XWD LD5B,LD4 ;<,>, ALPHABETIC CHAR. 000106' 000201' 000110' XWD LD5D,LD4 ;<CR.>, NUMERIC CHAR. 000107' 000205' 000437' XWD LD5E1,LD7 ;<ALT MODE>, BAD CHAR. <)> IFN RPGSW,<RPGRD: SOSG CTLIN+2 ;CHECK CHARACTER COUNT JRST [IN 17,0 JRST .+1 ;OK STATO 17,740000 JRST LD2 JSP A,ERRPT SIXBIT /ERROR WHILE READING COMMAND FILE%/ JRST LD2] IBP CTLIN+1 ;ADVANCE POINTER MOVE T,@CTLIN+1 ;AND CHECK FOR LINE # TRNE T,1 JRST [MOVNI T,5 ADDM T,CTLIN+2 AOS CTLIN+1 JRST RPGRD ];GO READ AGAIN LDB T,CTLIN+1 ;GET CHR JRST LD3AA ;PASS IT ON> 1KLOAD - LOADS MACROX PAGE 7 DICK GRUEN: V25 3 AUG 68 ;ALPHANUMERIC CHARACTER, NORMAL MODE 000110' 361600 000063' LD4: SOJL E,LD3 ;JUMP IF NO SPACE FOR CHAR IN W 000111' 275400 000040 SUBI T,40 ;CONVERT FROM ASCII TO SIXBIT 000112' 136400 000011 IDPB T,V ;DEPOSIT CHAR OF IDENTIFIER IN W 000113' 661000 100000 TLO F,DSW ;SET IDENTIFIER FLAG 000114' 254000 000063' JRST LD3 ;RETURN FOR NEXT CHARACTER ;DEVICE IDENTIFIER DELIMITER <:> 000115' 261740 000012 LD5: PUSH P,W ;SAVE W 000116' 663000 000001 TLOE F,CSW ;TEST AND SET COLON FLAG 000117' 260740 000656' PUSHJ P,LDF ;FORCE LOADING 000120' 262740 000012 POP P,W ;RESTORE W 000121' 603000 000002 TLNE F,ESW ;TEST SYNTAX 000122' 254000 000442' JRST LD7A ;ERROR, MISSING COMMA ASSUMED 000123' 322500 000057' JUMPE W,LD2D ;JUMP IF NULL DEVICE IDENTIFIER 000124' 202500 000522' MOVEM W,ILD1 ;STORE DEVICE IDENTIFIER IFN PP,<MOVEM W,OLDDEV ;WE HAVE A NEW ONE SO IGNORE OLD> 000125' 621000 122010 TLZ F,ISW+DSW+FSW+REWSW ;CLEAR OLD DEVICE FLAGS IFN PP,<SETZM PPN ;CLEAR OLD PP #> 000126' 254000 000057' JRST LD2D ;RETURN FOR NEXT IDENTIFIER ;FILE NAME EXTENSION IDENTIFIER DELIMITER <.> 000127' 663000 000002 LD5A: TLOE F,ESW ;TEST AND SET EXTENSION FLAG 000130' 254000 000442' JRST LD7A ;ERROR, TOO MANY PERIODS 000131' 623000 100001 TLZE F,CSW+DSW ;SKIP IF NULL IDENT AND NO COLON 000132' 202500 001724' MOVEM W,DTIN ;STORE FILE IDENTIFIER 000133' 254000 000057' JRST LD2D ;RETURN FOR NEXT IDENTIFIER ;INPUT SPECIFICATION DELIMITER <,> 000134' LD5B: IFN PP,<TLZE N,PPCSW ;READING PP #? JRST [ HRLM D,PPN ;STORE PROJ # JRST LD6A1] ;GET PROG # PUSHJ P,RBRA ;CHECK FOR MISSING RBRA> 000134' 627000 000010 TLZN F,FSW ;SKIP IF PREV. FORCED LOADING 000135' 260740 000655' PUSHJ P,FSCN2 ;LOAD (FSW NOT SET) 000136' 254000 000057' JRST LD2D ;RETURN FOR NEXT IDENTIFIER 000137' 603000 000002 LD5B1: TLNE F,ESW ;TEST EXTENSION FLAG 000140' 254000 000627' JRST LDDT3 ;EXPLICIT EXTENSION IDENTIFIER 000141' 627000 100001 TLZN F,CSW+DSW ;SKIP IF IDENT. OR COLON 000142' 263740 000000 POPJ P, 000143' 202500 001724' MOVEM W,DTIN ;STORE FILE IDENTIFIER 000144' 254000 000626' JRST LDDT2 ;ASSUME <.REL> IN DEFAULT CASE 1KLOAD - LOADS MACROX PAGE 8 DICK GRUEN: V25 3 AUG 68 ;OUTPUT SPECIFICATION DELIMITER <=> OR <LEFT ARROW> ;OR PROJ-PROG # BRACKETS <[> AND <]> 000145' LD5C: IFN RPGSW,<CAIN T,"@" ;CHECK FOR * COMMAND JRST RPGS1> IFN PP,<CAIN T,"[" ;PROJ-PROG #? JRST [TLO N,PPSW+PPCSW ;SET FLAGS MOVEM W,PPNW# ;SAVE W MOVEM E,PPNE# ;SAVE E MOVEM V,PPNV# ;SAVE V JRST LD6A1-1] ;READ NUMBERS AS SWITCHES CAIN T,"]" ;END OF PP #? JRST [PUSHJ P,RBRA ;PROCESS RIGHT BRACKET JRST LD3 ];READ NEXT IDENT> 000145' 663000 000100 TLOE F,ASW ;TEST AND SET LEFT ARROW FLAG 000146' 254000 000442' JRST LD7A ;ERROR, MISPLACED LEFT ARROW 000147' 260740 000137' PUSHJ P,LD5B1 ;STORE IDENTIFIER 000150' 627000 000002 TLZN F,ESW ;TEST EXTENSION FLAG 000151' 205500 554160 MOVSI W,554160 ;ASSUME <.MAP> IN DEFAULT CASE 000152' 202500 001731' MOVEM W,DTOUT1 ;STORE FILE EXTENSION IDENTIFIER 000153' 200500 001724' MOVE W,DTIN ;LOAD INPUT FILE IDENTIFIER 000154' 202500 001730' MOVEM W,DTOUT ;USE AS OUTPUT FILE IDENTIFIER IFN PP,<MOVE W,PPN ;PROJ-PROG # MOVEM W,DTOUT+3 ;...> 000155' 200500 000522' MOVE W,ILD1 ;LOAD INPUT DEVICE IDENTIFIER 000156' 202500 000165' MOVEM W,LD5C1 ;USE AS OUTPUT DEVICE IDENTIFIER IFN PP,< SKIPE W,OLDDEV ;RESTORE OLD MOVEM W,ILD1> ;INITIALIZE AUXILIARY OUTPUT DEVICE 000157' 623040 060000 TLZE N,AUXSWI+AUXSWE ;FLUSH CURRENT DEVICE 000160' 071100 000000 RELEASE 2, ;... 000161' 040500 002420' CALL W,[SIXBIT ?DEVCHR?] ;IS DEVICE A TTY? 000162' 603500 000010 TLNE W,10 ;... 000163' 254000 000057' JRST LD2D ;YES, SKIP INIT 000164' 041100 000001 INIT 2,1 ;INIT THE AUXILIARY DEVICE 000165' 000000 000000 LD5C1: 0 ;AUXILIARY OUTPUT DEVICE NAME 000166' 001716' 000000 XWD ABUF,0 ;BUFFER HEADER 000167' 265700 000547' JSP A,ILD5 ;ERROR RETURN 000170' 603000 002000 TLNE F,REWSW ;REWIND REQUESTED? 000171' 040100 002421' CALL 2,[SIXBIT /UTPCLR/] ;DECTAPE REWIND 000172' 623000 002000 TLZE F,REWSW ;SKIP IF NO REWIND REQUESTED 000173' 072100 000001 MTAPE 2,1 ;REWIND THE AUX DEV 000174' 201600 002211' MOVEI E,AUX ;SET BUFFER ORIGIN 000175' 202600 000011* MOVEM E,JOBFF 000176' 065100 000001 OUTBUF 2,1 ;INITIALIZE SINGLE BUFFER 000177' 661040 020000 TLO N,AUXSWI ;SET INITIALIZED FLAG 000200' 254000 000057' JRST LD2D ;RETURN TO CONTINUE SCAN 1KLOAD - LOADS MACROX PAGE 9 DICK GRUEN: V25 3 AUG 68 ;RIGHT SQUARE BRACKET (PROJ-PROG NUMBERS) IFN PP,< RBRA: TLZN N,PPSW ;READING PP #? POPJ P, ;NOPE, RETURN TLZE N,PPCSW ;COMMA SEEN? JRST LD7A ;NOPE, INDICATE ERROR HRRM D,PPN ;STASH PROG NUMBER MOVE W,PPNW# ;PICKUP OLD IDENT MOVE E,PPNE# ;RESTORE CHAR COUNT MOVE V,PPNV# ;RESTORE BYTE PNTR POPJ P, ;TRA 1,4 ;RIGHT JUSTIFY W RJUST: JUMPE W,LD7A ;NOTHING TO RIGHT JUSTIFY TRNE W,77 ;IS W RJUSTED YET? POPJ P, ;YES, TRA 1,4 LSH W,-6 ;NOPE, TRY AGAIN JRST .-3 ;...> 1KLOAD - LOADS MACROX PAGE 10 DICK GRUEN: V25 3 AUG 68 ;LINE TERMINATION <CARRIAGE RETURN> 000201' LD5D: IFN PP,<PUSHJ P,RBRA ;CHECK FOR UNTERMINATED PP #> 000201' 260740 000634' PUSHJ P,FSCN ;FORCE SCAN TO COMPLETION 000202' 254000 000050' JRST LD2B ;RETURN FOR NEXT LINE ;TERMINATE LOADING <ALT MODE> 000203' 332000 000007 LD5E: SKIPE D ;ENTER FROM G COMMAND 000204' 540000 000007 HRR F,D ;USE NUMERIC STARTING ADDRESS 000205' LD5E1: 000205' 260740 001600' PUSHJ P,CRLF ;START A NEW LINE 000206' 260740 000227' PUSHJ P,SASYM ;SETUP JOBSA,JOBFF,JOBSYM,JOBUSY IFN LDAC!BLTSYM,<HRRZ A,R ;SET UP BLT OF ACS ADDI A,(X) ;END ADD A,KORSP ;ADD IN SPACE RESERVED CAIL A,(S) IFN EXPAND,<JRST [PUSHJ P,XPAND> PUSHJ P,[ IFE EXPAND,< JSP A,ERRPT SIXBIT /MORE CORE NEEDED#/> CALLI CEXIT] IFN EXPAND,< JRST .-1]> HRRM R,BOTACS# ;SAVE FOR LATER HRRZ A,R ;SET BLT ADD A,X HRL A,X MOVE Q,A BLT A,17(Q)> IFN BLTSYM,<HRRZ A,R ;PLACE TO BLT TO ADD A,KORSP MOVE W,A ;SAVE DEST ADDI A,(X) ;AFTER ADJUSTMENT MOVE Q,S ;UDEF PNTR ADD Q,B ;TOTAL UNDEFS AND DEFS IN LEFT HLROS Q ;NOW NEG IN RIGHT MOVNS Q ;POSITIVE ADDI Q,-1(A) ;END OF BLT HRLI A,1(S) ;AND GET PLACE TO BLT FROM SUBI W,1(S) ;PREST LOC OF SYMBOL TABLE ADDM W,JOBSYM(X) ADDM W,JOBUSY(X) ;ADJUST POINTERS BLT A,(Q) ;MOVE IT SKIPN JOBDDT(X) ;IS DDT THERE? JRST NODDT SUBI Q,-1(X) HRRM Q,JOBFF(X) ;RESTET JOBFF IF DDT IS IN HRLM Q,JOBSA(X) NODDT:> 000207' 200500 002422' MOVE W,[SIXBIT ?LOADER?] ;FINAL MESSAGE 000210' 260740 000251' PUSHJ P,BLTSET ;SETUP FOR FINAL BLT 1KLOAD - LOADS MACROX PAGE 10-1 DICK GRUEN: V25 3 AUG 68 000211' 071100 000000 RELEASE 2, ;RELEASE AUX. DEV. IFN RPGSW,<RELEASE 17,0 ;RELEASE COMMAND DEVICE> 000212' 200500 002423' LD5E5: MOVE W,[BLT Q,(A)] ;BLT OF ALL CODE 000213' 202500 000134 MOVEM W,JOBBLT ;STASH IN JOB DATA AREA 000214' 202502 000134 MOVEM W,JOBBLT(X) ;STASH IN RELOCATED JOBDATA AREA 000215' 200500 000007' LD5E2: MOVE W,CALLEX ;EXIT AFTER BLT 000216' 627040 002000 TLZN N,EXEQSW ;IMMEDIATE EXECUTION REQUESTED? 000217' 254000 000225' JRST LD5E3 ;NOPE, LET USER TYPE START HIMSELF 000220' 550502 000000* HRRZ W,JOBSA(X) ;PICKUP USUAL STARTING ADDRESS 000221' 603040 004000 TLNE N,DDSW ;DDT EXECUTION? 000222' 550502 000016* HRRZ W,JOBDDT(X) ;USE DDT SA INSTEAD 000223' 322500 000215' JUMPE W,LD5E2 ;IF SA=0, DON'T EXECUTE 000224' 505500 254000 HRLI W,(JRST) ;INSTRUCTION TO EXECUTE 000225' LD5E3: 000225' 202502 000135 IFE LDAC,<MOVEM W,JOBBLT+1(X) ;STASH FOR EXECUTION> IFN LDAC,<MOVEM W,JOBBLT+2(X) ;STASH FOR EXECUTION HRLZ 17,JOBFF(X) ;BUT FIRST BLT ACS MOVE W,[BLT 17,17] ;... MOVEM W,JOBBLT+1(X) ;...> 000226' 254000 000134 JRST JOBBLT ;IF IT WERE DONE, 'TWERE BEST DONE QUICKLY 1KLOAD - LOADS MACROX PAGE 11 DICK GRUEN: V25 3 AUG 68 ;SEARCH LIBRARY, PRINT UNDEFS, SETUP JOBSA,JOBFF,JOBSYM,JOBUSY 000227' 607000 200000 SASYM: TLNN F,NSW ;SKIP IF NO SEARCH FLAG ON 000230' 260740 000557' PUSHJ P,LIBF ;SEARCH LIBRARY FILE 000231' 260740 000634' PUSHJ P,FSCN ;FORCE SCAN TO COMPLETION 000232' 260740 001332' PUSHJ P,PMS ;PRINT UNDEFINEDS 000233' 552002 000220* HRRZM F,JOBSA(X) ;RH OF JOBSA :=STARTING ADDRESS 000234' 550700 000003 SAS1: HRRZ A,H ;COMPUTE PROG BREAK 000235' 275702 000000 SUBI A,(X) ;... 000236' 305705 000000 CAIGE A,(R) ;BUT NO HIGHER THAN RELOC 000237' 550700 000005 HRRZ A,R ;... 000240' 506702 000233* HRLM A,JOBSA(X) ;LH OR JOBSA IS PROG BREAK 000241' 552702 000175* HRRZM A,JOBFF(X) ;RH OF JOBFF CONTAINS PROG BREAK 000242' 200700 000006 MOVE A,B ;SET JOBSYM W/ SYMBOL TABLE POINTER 000243' 350000 000016 AOS A ;... 000244' 202702 000017* MOVEM A,JOBSYM(X) ;... 000245' 200700 000004 MOVE A,S ;SET JOBUSY W/ UNDEFINED SYMBOL POINTER 000246' 350000 000016 AOS A ;... 000247' 202702 000000* MOVEM A,JOBUSY(X) ;... 000250' 263740 000000 POPJ P, ;RETURN ;PRINT FINAL MESSAGE, SET UP BLT AC'S, SETDDT, RELEAS 000251' 260740 001577' BLTSET: PUSHJ P,FCRLF ;START FINAL MESSAGE 000252' 260740 001454' PUSHJ P,PWORD ;PRINT W 000253' 260740 001431' PUSHJ P,SPACE 000254' 550640 000015* HRRZ Q,JOBREL ;PUBLISH HOW MUCH CORE USED 000255' 242640 777766 LSH Q,-12 ;... 000256' 271640 000001 ADDI Q,1 ;... 000257' 260740 001420' PUSHJ P,RCNUM ;PUBLISH THE NUMBER 000260' 200500 002424' MOVE W,[SIXBIT /K CORE/] ;PUBLISH THE UNITS 000261' 260740 001454' PUSHJ P,PWORD ;... 000262' 260740 001600' PUSHJ P,CRLF ;... 000263' 205642 000020 MOVSI Q,20(X) ;HOW MUCH CODE TO BLT 000264' 541640 000020 HRRI Q,20 ;... 000265' 550700 000042 HRRZ A,42 ;CHECK ON ERRORS 000266' 322700 000275' JUMPE A,NOEX ;NONE, GO AHEAD 000267' 627040 002000 TLZN N,EXEQSW ;DID HE WANT TO START EXECUTION? 000270' 254000 000275' JRST NOEX ;NO 000271' 265700 001462' JSP A ,ERRPT ;PRINT AN ERROR MESSAGE 000272' 457045 436564 SIXBIT /EXECUTION DELETED@/ 000273' 515756 004445 000274' 544564 454440 000275' 550700 000254* NOEX: HRRZ A,JOBREL ;WHEN TO STOP BLT 000276' 552702 000275* HRRZM A,JOBREL(X) ;SETUP FOR POSSIBLE IMMED. XEQ 000277' 275702 000000 SUBI A,(X) ;... 000300' 301704 000000 IFE BLTSYM,<CAIL A,(S) ;DON'T BLT OVER SYMBOL TABLE 000301' 201704 000000 MOVEI A,(S) ;OR UNDEFINED TABLE> 000302' 071040 000000 RELEAS 1, ;RELEASE DEVICES 000303' 071140 000000 RELEAS 3, ;... 000304' 200242 000222* MOVE R,JOBDDT(X) ;SET NEW DDT 000305' 047240 000002 CALLI R,CSETDDT ;... 000306' 263740 000000 POPJ P, ;RETURN 1KLOAD - LOADS MACROX PAGE 11-1 DICK GRUEN: V25 3 AUG 68 1KLOAD - LOADS MACROX PAGE 12 DICK GRUEN: V25 3 AUG 68 ;WRITE CHAIN FILES 000307' 334702 000131 CHNC: SKIPA A,JOBCHN(X) ;CHAIN FROM BREAK OF FIRST BLOCK DATA 000310' 544702 000131 CHNR: HLR A,JOBCHN(X) ;CHAIN FROM BREAK OF FIRST F4 PROG 000311' 553000 000016 HRRZS A ;ONLY RIGHT HALF IS SIGNIFICANT 000312' 322700 000452' JUMPE A,LD7C ;DON'T CHAIN IF ZERO 000313' 607040 020000 TLNN N,AUXSWI ;IS THERE AN AUX DEV? 000314' 254000 000460' JRST LD7D ;NO, DON'T CHAIN 000315' 261740 000016 PUSH P,A ;SAVE WHEREFROM TO CHAIN 000316' 332000 000007 SKIPE D ;STARTING ADDR SPECIFIED? 000317' 540000 000007 HRR F,D ;USE IT 000320' 260740 000227' PUSHJ P,SASYM ;DO LIB SEARCH, SETUP JOBSA, ETC. 000321' 262740 000016 POP P,A ;GET WHEREFROM 000322' 210500 000276* MOVN W,JOBREL ;CALCULATE IOWD FOR DUMP 000323' 271516 777773 ADDI W,-1-3-CHN5(A) ;... 000324' 505516 777773 HRLI W,-4-CHN5(A) ;... 000325' 206500 000363' MOVSM W,IOWDPP ;... 000326' 271702 777773 ADDI A,-4-CHN5(X) ;ADD IN OFFSET 000327' 261702 000244* IFN CHN5,<PUSH A,JOBSYM(X) ;SETUP FOUR WORD TABLE 000330' 261702 000041* PUSH A,JOB41(X) ;...> 000331' 261702 000304* PUSH A,JOBDDT(X) ;JOBDDT IN ALL CASES IFE CHN5,<PUSH A,JOBSYM(X) ;JOBDDT, JOBSYM, JOBSA> 000332' 261702 000240* PUSH A,JOBSA(X) ;JOBRYM ALWAYS LAST 000333' 070100 000000 CLOSE 2, ;INSURE END OF MAP FILE 000334' 060100 000017 SETSTS 2,17 ;SET AUX DEV TO DUMP MODE 000335' 205500 435056 MOVSI W,435056 ;USE .CHN AS EXTENSION 000336' 202500 001731' MOVEM W,DTOUT1 ;... 000337' 260740 001375' PUSHJ P,IAD2 ;DO THE ENTER 000340' 621040 060000 TLZ N,AUXSWI+AUXSWE ;INSURE NO PRINTED OUTPUT 000341' 200500 002425' MOVE W,[SIXBIT ?CHAIN?] ;FINAL MESSAGE 000342' 260740 000251' PUSHJ P,BLTSET ;SETUP BLT PNTR, SETDDT, RELEAS 000343' 047000 000005 CALLI CDDTGT ;START DDT MODE OUTPUT 000344' 205600 000350' MOVSI CHNBLT,CHAIN3 ;BLT CHAIN3 INTO ACS 000345' 251600 000014 BLT CHNBLT,CHNBLT ;... 000346' 201740 000010 MOVEI P,CHNERR ;POINTER TO ERR MESS 000347' 254000 000000 JRST 0 ;GO DO CHAIN 1KLOAD - LOADS MACROX PAGE 13 DICK GRUEN: V25 3 AUG 68 ;THE AC SECTION OF CHAIN 000350' CHAIN3: 000000 PHASE 0 000350' 251656 000000 BLT Q,(A) ;USUAL LDRBLT 000351' 067100 000013 OUTPUT 2,IOWDP ;WRITE THE CHAIN FILE 000352' 063100 760000 STATZ 2,IOBAD!IODEND ;CHECK FOR ERROR OR EOF 000353' 254000 000006 JRST LOSEBIG ;FOUND SAME, GO GRIPE 000354' 070100 000000 CLOSE 2, ;FINISH OUTPUT 000355' 063100 760000 STATZ 2,IOBAD!IODEND ;CHECK FOR FINAL ERROR 000356' 047000 000003 LOSEBI: CALLI CDDTOUT ;GRIPE ABOUT ERROR 000357' 047000 000012 CALLI CEXIT ;EXIT 000360' 422132 644606 CHNERR: ASCIZ ?DEVICE ERROR? ;ERROR MESSAGE 000361' 425010 551244 000362' 476440 000000 000363' 000000 000000 IOWDP: Z ;STORE IOWD FOR DUMP HERE 000014 CHNBLT: ;LAST WORD OF AC CHAIN (ZERO OF I/O POINTER) 000364' DEPHASE 000363' IOWDPP=.-1 ;MEMORY LOC OF AC IOWDP 000364' 000000 000000 Z ;TERMINATOR OF DUMP MODE LIST 1KLOAD - LOADS MACROX PAGE 14 DICK GRUEN: V25 3 AUG 68 ;EXPAND CORE IFN EXPAND,< XPAND: PUSH P,H ;GET SOME REGISTERS TO USE PUSH P,X PUSH P,N HRRZ X,JOBREL ;WHAT WE WANT ADDI X,2000 CALLI X,11 ;CORE ALLOCATOR CALLS THIS JRST XPAND6 IFE K,< HRRZ H,MLTP ;GET LOWEST LOCATION TLNN N,F4SW ;IS FORTRAN LOADING> HRRZ H,S ;NO, USE S HRRZ X,JOBREL ;NOW MOVE SUBI X,2000 XPAND2: MOVE N,(X) MOVEM N,2000(X) CAMLE X,H ;TEST FOR END SOJA X,XPAND2; HAND EYE SYSTEM MOVES TABLE HRLI H,-2000 SETZM (H) ;ZERO NEW CORE AOBJN H,.-1 MOVEI H,2000 ADDM H,S ADDM H,B ADDM H,JOBSYM POP P,N ADDI N,2000 IFE K,< TLNN N,F4SW ;F4? JRST XPAND3 ADDM H,PLTP ADDM H,BITP ADDM H,SDSTP ADDM H,MLTP TLNE N,SYDAT ADDM H,V> XPAND3: POP P,X POP P,H AOS (P) POPJ P, XPAND6: JUMPE X,XPAND4 JSP A,ERRPT SIXBIT /CORE AVAILABLE, BUT NOT TO YOU#/ XPAND4: JSP A,ERRPT SIXBIT /MORE CORE NEEDED#/ XPAND5: POP P,N POP P,X POP P,H POPJ P, XPAND7: PUSHJ P,XPAND JRST SFULLC 1KLOAD - LOADS MACROX PAGE 14-1 DICK GRUEN: V25 3 AUG 68 JRST POPJM2 POPJM3: SOS (P) ;POPJ TO CALL-2 POPJM2: SOS (P) ;POPJ TO CALL-1 SOS (P) ;SAME AS POPJ TO POPJ P, ;NORMAL POPJ MINUS TWO > 1KLOAD - LOADS MACROX PAGE 15 DICK GRUEN: V25 3 AUG 68 ;ENTER SWITCH MODE 000365' 306400 000057 LD6A: CAIN T,57 ;WAS CHAR A SLASH? 000366' 661040 000100 TLO N,SLASH ;REMEBER THAT 000367' 661000 400000 TLO F,SSW ;ENTER SWITCH MODE 000370' 201340 000000 LD6A1: MOVEI D,0 ;ZERO THE NUBER REGISTER 000371' 254000 000063' JRST LD3 ;EAT A SWITCH ;ALPHABETIC CHARACTER, SWITCH MODE 000372' 256010 000275' LD6: XCT LD6B-101(T) ;EXECUTE SWITCH FUNCTION 000373' 623040 000100 TLZE N,SLASH ;SWITCH MODE ENTERED W/ SLASH? 000374' 254000 000433' JRST LD6D ;LEAVE SWITCH MODE 000375' 254000 000370' JRST LD6A1 ;STAY IN SWITCH MODE ;DISPATCH TABLE FOR SWITCHES ; THE INSTRUCTION AT THE CHARACTER LOCATION IS EXECUTED 000376' 661040 000001 LD6B: TLO N,ALLFLG ;A - LIST ALL GLOBALS 000377' 254000 000446' JRST LD7B ;B - ERROR 000400' 260740 000307' PUSHJ P,CHNC ;C - CHAIN, START W/ COMMON 000401' 260740 000614' PUSHJ P,LDDT ;D - DEBUG OPTION, LOAD DDT 000402' 661040 002000 TLO N,EXEQSW ;E - LOAD AND GO 000403' 260740 000557' PUSHJ P,LIBF ;F - LIBRARY SEARCH 000404' 260740 000203' PUSHJ P,LD5E ;G - GO INTO EXECUTION 000405' 260740 000607' PUSHJ P,LRAIDX ;H - LOAD AN START RAID 000406' 661040 000002 TLO N,ISAFLG ;I - IGNORE STARTING ADDRESSES 000407' 621040 000002 TLZ N,ISAFLG ;J - USE STARTING ADDRESSES 000410' 254000 000446' IFE BLTSYM,<JRST LD7B ;K - ERROR> IFN BLTSYM,<PUSHJ P,KORADJ ;K - RESERVE SPACE FOR SYM DEFS> 000411' 661000 004004 TLO F,LIBSW+SKIPSW ;L - ENTER LIBRARY SEARCH 000412' 260740 001261' PUSHJ P,PRMAP ;M - PRINT STORAGE MAP 000413' 621000 004004 TLZ F,LIBSW+SKIPSW ;N - LEAVE LIBRARY SEARCH 000414' 540240 000007 HRR R,D ;O - NEW PROGRAM ORIGIN 000415' 661000 200000 TLO F,NSW ;P - PREVENT AUTO. LIB. SEARCH 000416' 621000 200000 TLZ F,NSW ;Q - ALLOW AUTO. LIB. SEARCH 000417' 260740 000310' PUSHJ P,CHNR ;R - CHAIN, START W/ RESIDENT 000420' 661000 040000 TLO F,SYMSW ;S - LOAD WITH SYMBOLS 000421' 260740 000613' PUSHJ P,LDDTX ;T - LOAD AND GO TO DDT 000422' 260740 001332' PUSHJ P,PMS ;U - PRINT UNDEFINED LIST 000423' 260740 000610' PUSHJ P,LRAID ;V - LOAD RAID 000424' 621000 041000 TLZ F,SYMSW+DSYMSW ;W - LOAD WITHOUT SYMBOLS 000425' 621040 000001 TLZ N,ALLFLG ;X - DO NOT LIST ALL GLOBALS 000426' 661000 002000 TLO F,REWSW ;Y - REWIND BEFORE USE 000427' 254000 000000' JRST LD ;Z - RESTART LOADER 1KLOAD - LOADS MACROX PAGE 16 DICK GRUEN: V25 3 AUG 68 ;SWITCH MODE NUMERIC ARGUMENT 000430' 242340 000003 LD6C: LSH D,3 ;BUILD OCTAL NUMERIC ARGUMENT 000431' 271350 777720 ADDI D,-60(T) 000432' 254000 000063' JRST LD3 ;EXIT FROM SWITCH MODE 000433' 621000 400000 LD6D: TLZ F,SSW ;CLEAR SWITCH MODE FLAG 000434' 603000 000010 TLNE F,FSW ;TEST FORCED SCAN FLAG 000435' 254000 000057' JRST LD2D ;SCAN FORCED, START NEW IDENT. 000436' 254000 000063' JRST LD3 ;SCAN NOT FORCED, USE PREV IDENT ;ILLEGAL CHARACTER, NORMAL MODE 000437' 265700 001526' LD7: JSP A,ERRPT8 000440' 435041 621605 SIXBIT /CHAR.%/ 000441' 254000 000042' JRST LD2 ;SYNTAX ERROR, NORMAL MODE 000442' 265700 001526' LD7A: JSP A,ERRPT8 000443' 637156 644170 SIXBIT /SYNTAX%/ 000444' 050000 000000 000445' 254000 000042' JRST LD2 ;ILLEGAL CHARACTER, SWITCH MODE 000446' 265700 001526' LD7B: JSP A,ERRPT8 000447' 636751 644350 SIXBIT /SWITCH%/ 000450' 050000 000000 000451' 254000 000042' JRST LD2 ;ATTEMPT TO CHAIN WITH SPECIFIED HALF OF JOBCHN = 0 000452' 265700 001462' LD7C: JSP A,ERRPT ;GRIPE 000453' 655643 504151 SIXBIT ?UNCHAINABLE AS LOADED@? 000454' 564142 544500 000455' 416300 545741 000456' 444544 400000 000457' 254000 000042' JRST LD2 ;ATTEMP TO CHAIN WITHOUT SPECIFYING DEVICE 000460' 265700 001462' LD7D: JSP A,ERRPT ;GRIPE 000461' 565700 435041 SIXBIT ?NO CHAIN DEVICE@? 000462' 515600 444566 000463' 514345 400000 000464' 254000 000042' JRST LD2 IFN BLTSYM,<KORADJ: CAMLE D,KORSP ;IF SMALLER IGNORE MOVEM D,KORSP POPJ P,> 1KLOAD - LOADS MACROX PAGE 17 DICK GRUEN: V25 3 AUG 68 ;CHARACTER CLASSIFICATION TABLE DESCRIPTION: ; EACH CHARACTER HAS ASSOCIATED WITH IT A FOUR BIT BYTE ; PACKED IN THE CHARACTER CLASSIFICATION TABLE. THE CHARACTER ; CLASSIFICATION CODES ARE ORDERED IN SUCH A WAY AS TO GIVE ; DELIMITERS OF HIGHER PRECEDENCE LOWER CLASSIFICATION NUMBERS. ; CERTAIN CHARACTERS HAVE NO EFFECT ON THE COMMAND STRING, AND ; THEREFORE DO NOT EFFECT ORDERING OF DELIMITERS. FOUR CODES ; ARE RESERVED FOR ALTERNATE DISPATCHES WHILE THE SWITCH MODE IS ; IN EFFECT. ;CLASSIFICATION BYTE CODES: ; BYTE DISP CLASSIFICATION ; 00 - 00 ILLEGAL CHARACTER, SWITCH MODE ; 01 - 01 ALPHABETIC CHARACTER, SWITCH MODE ; 02 - 02 NUMERIC CHARACTER, SWITCH MODE ; 03 - 03 SWITCH MODE ESCAPE, SWITCH MODE ; 00 - 04 ILLEGAL CHARACTER, NORMAL MODE ; 01 - 05 ALPHABETIC CHARACTER, NORMAL MODE ; 02 - 06 NUMERIC CHARACTER, NORMAL MODE ; 03 - 07 SWITCH MODE ESCAPE, NORMAL MODE ; 04 - 10 IGNORED CHARACTER ; 05 - 11 ENTER SWITCH MODE CHARACTER ; 06 - 12 DEVICE IDENTIFIER DELIMITER ; 07 - 13 FILE EXTENSION DELIMITER ; 10 - 14 OUTPUT SPECIFICATION DELIMITER ; 11 - 15 INPUT SPECIFICATION DELIMITER ; 12 - 16 LINE TERMINATION ; 13 - 17 JOB TERMINATION 1KLOAD - LOADS MACROX PAGE 18 DICK GRUEN: V25 3 AUG 68 ;BYTE POINTERS TO CHARACTER CLASSIFICATION TABLE 000465' 400415 000476' LD8: POINT 4,LD9(Q),3 000466' 340415 000476' POINT 4,LD9(Q),7 000467' 300415 000476' POINT 4,LD9(Q),11 000470' 240415 000476' POINT 4,LD9(Q),15 000471' 200415 000476' POINT 4,LD9(Q),19 000472' 140415 000476' POINT 4,LD9(Q),23 000473' 100415 000476' POINT 4,LD9(Q),27 000474' 040415 000476' POINT 4,LD9(Q),31 000475' 000415 000476' POINT 4,LD9(Q),35 ;CHARACTER CLASSIFIACTION TABLE 000476' 200000 000000 LD9: BYTE (4)4,0,0,0,0,0,0,0,0 000477' 210422 400000 BYTE (4)4,4,4,4,12,0,0,0,0 000500' 000000 000000 BYTE (4)0,0,0,0,0,0,0,0,0 000501' 540000 040100 BYTE (4)13,0,0,0,0,4,0,4,0 000502' 000001 230011 BYTE (4)0,0,0,0,5,3,0,0,11 000503' 016510 421042 BYTE (4)0,7,5,2,2,2,2,2,2 000504' 104211 400200 BYTE (4)2,2,2,2,6,0,0,10,0 000505' 000104 210421 IFE RPGSW,< BYTE (4)0,0,1,1,1,1,1,1,1> IFN RPGSW,< BYTE (4) 0,10,1,1,1,1,1,1,1> 000506' 042104 210421 BYTE (4)1,1,1,1,1,1,1,1,1 000507' 042104 210421 BYTE (4)1,1,1,1,1,1,1,1,1 000510' 040000 100000 IFE PP,<BYTE (4)1,0,0,0,0,10,0,0,0> IFN PP,<BYTE (4)1,10,0,10,0,10,0,0,0> 000511' 000000 000000 BYTE (4)0,0,0,0,0,0,0,0,0 000512' 000000 000000 BYTE (4)0,0,0,0,0,0,0,0,0 000513' 000000 000013 BYTE (4)0,0,0,0,0,0,0,0,13 000514' 550000 000000 BYTE (4)13,4 1KLOAD - LOADS MACROX PAGE 19 DICK GRUEN: V25 3 AUG 68 ;INITIALIZE LOADING OF A FILE 000515' 201500 002006' ILD: MOVEI W,BUF1 ;LOAD BUFFER ORIGIN 000516' 202500 000241* MOVEM W,JOBFF 000517' 663000 020000 TLOE F,ISW ;SKIP IF INIT REQUIRED 000520' 254000 000525' JRST ILD6 ;DONT DO INIT 000521' 041040 000014 INIT 1,14 000522' 000000 000000 ILD1: 0 ;LOADER INPUT DEVICE 000523' 000000 001721' XWD 0,BUFR 000524' 265700 000547' JSP A,ILD5 ;ERROR RETURN 000525' 623000 002000 ILD6: TLZE F,REWSW ;SKIP IF NO REWIND 000526' 072040 000001 MTAPE 1,1 ;REWIND 000527' 076040 001724' ILD2: LOOKUP 1,DTIN ;LOOK UP FILE FROM DIRECTORY 000530' 254000 000535' JRST ILD3 ;FILE NOT IN DIRECTORY IFE K,< INBUF 1,2 ;SET UP BUFFERS> 000531' 064040 000001 IFN K,< INBUF 1,1 ;SET UP BUFFER> 000532' 661000 000100 TLO F,ASW ;SET LEFT ARROW ILLEGAL FLAG 000533' 621000 010002 TLZ F,ESW+F4LIB ;CLEAR EXTENSION FLAG 000534' 263740 000000 POPJ P, ; LOOKUP FAILURE 000535' 663000 000002 ILD3: TLOE F,ESW ;SKIP IF .REL WAS ASSUMED 000536' 254000 000541' JRST ILD4 ;FATAL LOOKUP FAILURE 000537' 402000 001725' SETZM DTIN1 ;ZERO FILE EXTENSION 000540' 254000 000527' JRST ILD2 ;TRY AGAIN WITH NULL EXTENSION 000541' 623000 010000 ILD4: TLZE F,F4LIB ;WAS THIS A TRY FOR F40 LIBRARY? JRST [MOVE W,[SIXBIT /LIB4/]; YES, TRY LIB4 MOVEM W,DTIN ;... PUSHJ P,LDDT2 ;USE .REL EXTENSION TLZ F,ESW ;... 000542' 254000 002427' JRST ILD2 ];GO TRY AGAIN 000543' 265700 001462' ILD9: JSP A,ERRPT 000544' 434156 565764 SIXBIT /CANNOT FIND#/ 000545' 004651 564403 000546' 254000 000042' JRST LD2 ; DEVICE SELECTION ERROR 000547' 200516 777775 ILD5: MOVE W,-3(A) ;LOAD DEVICE NAME FROM INIT 000550' 661000 000020 TLO F,FCONSW ;INSURE TTY OUTPUT 000551' 260740 001553' PUSHJ P,PRQ ;START W/ ? 000552' 260740 001454' PUSHJ P,PWORD ;PRINT DEVICE NAME 000553' 265700 001541' JSP A,ERRPT7 000554' 655641 664151 SIXBIT /UNAVAILABLE@/ 000555' 544142 544540 000556' 254000 000042' JRST LD2 1KLOAD - LOADS MACROX PAGE 20 DICK GRUEN: V25 3 AUG 68 ;LIBRARY SEARCH CONTROL AND LOADER CONTROL ;LIBF ENABLES A LIBRARY SEARCH OF <SYS:LIB4.REL> 000557' 260740 000652' LIBF: PUSHJ P,FSCN1 ;FORCE SCAN TO COMPLETION 000560' 260740 000564' PUSHJ P,LIBF1 ;LOAD SYS:JOBDAT.REL 000561' 661000 010000 TLO F,F4LIB ;INDICATE FORTRAN LIBRARY SEARCH 000562' 200500 002434' MOVE W,[SIXBIT /LIB40/] ;FIRST TRY AT NAME 000563' 260740 000565' PUSHJ P,LIBF2 ;LOAD SYS:LIB40.REL 000564' 200500 002435' LIBF1: MOVE W,[SIXBIT /JOBDAT/] ;LOAD SYS:JOBDAT.REL 000565' 260740 000622' LIBF2: PUSHJ P,LDDT1 000566' 325200 000633' JUMPGE S,EOF2 ;JUMP IF NO UNDEFINED GLOBALS 000567' 661000 000404 TLO F,SLIBSW+SKIPSW ;ENABLE LIBRARY SEARCH 000570' 621000 041000 TLZ F,SYMSW+DSYMSW ;DISABLE LOADING WITH SYMBOLS 000571' 254000 000656' JRST LDF ;INITIALIZE LOADING LIB4 ; LIB CONTROLS THE LIBRARY SEARCH OF ONE FILE 000572' 325200 000632' LIB: JUMPGE S,EOF1 ;JUMP IF NO UNDEFINED GLOBALS 000573' 661000 000004 TLO F,SKIPSW ;SET SKIPSW TO IGNORE MODE 000574' 254000 000657' JRST LOAD ;CONTINUE LIB. SEARCH 000575' 302700 000004 LIB1: CAIE A,4 ;TEST FOR ENTRY BLOCK 000576' 254000 000605' JRST LIB3 ;NOT AN ENTRY BLOCK, IGNORE IT 000577' 260740 001243' LIB2: PUSHJ P,RWORD ;READ ONE DATA WORD 000600' 200540 000012 MOVE C,W 000601' 661540 040000 TLO C,040000 ;SET CODE BITS FOR SEARCH 000602' 260740 001224' PUSHJ P,SREQ 000603' 625000 000004 TLZA F,SKIPSW ;REQUEST MATCHES ENTRY, LOAD 000604' 254000 000577' JRST LIB2 ;NOT FOUND 000605' 260740 001243' LIB3: PUSHJ P,RWORD ;READ AND IGNORE ONE DATA WORD 000606' 254000 000605' JRST LIB3 ;LOOP TO IGNORE INPUT ;LDDT LOADS <SYS:DDT.REL> AND SETS DSYMSW 000607' 661040 006000 LRAIDX: TLO N,DDSW!EXEQSW ;H - LOAD AND START RAID 000610' 260740 000652' LRAID: PUSHJ P,FSCN1 ;FORCE END OF SCAN 000611' 200500 002436' MOVE W,[SIXBIT /RAID/] 000612' 254000 000616' JRST LDDT0 000613' 661040 006000 LDDTX: TLO N,DDSW+EXEQSW ;T - LOAD AND GO TO DDT 000614' 260740 000652' LDDT: PUSHJ P,FSCN1 ;FORCE SCAN TO COMPLETION 000615' 205500 444464 MOVSI W,444464 ;FILE IDENTIFIER <DDT> 000616' 260740 000622' LDDT0: PUSHJ P,LDDT1 000617' 260740 000656' PUSHJ P,LDF ;LOAD <SYS:DDT.REL> 000620' 661000 001000 TLO F,DSYMSW ;ENABLE LOADING WITH SYMBOLS 000621' 263740 000000 POPJ P, 000622' 202500 001724' LDDT1: MOVEM W,DTIN ;STORE FILE IDENTIFIER IFN PP,<MOVE W,ILD1 ;SAVE OLD DEV MOVEM W,OLDDEV> 000623' 205500 637163 MOVSI W,637163 ;DEVICE IDENTIFIER <SYS> 000624' 202500 000522' MOVEM W,ILD1 ;STORE DEVICE IDENTIFIER 1KLOAD - LOADS MACROX PAGE 20-1 DICK GRUEN: V25 3 AUG 68 000625' 621000 026004 TLZ F,ISW+LIBSW+SKIPSW+REWSW ;CLEAR OLD FLAGS 000626' 205500 624554 LDDT2: MOVSI W,624554 ;EXTENSION IDENTIFIER <.REL> 000627' 202500 001725' LDDT3: MOVEM W,DTIN1 ;STORE EXTENSION IDENTIFIER IFN PP,<MOVE W,PPN ;GET PROJ-PROG # MOVEM W,DTIN+3> 000630' 263740 000000 POPJ P, 1KLOAD - LOADS MACROX PAGE 21 DICK GRUEN: V25 3 AUG 68 ;EOF TERMINATES LOADING OF A FILE 000631' 200740 001627' EOF: MOVE P,PDSAV ;RESTORE PUSHDOWN POINTER 000632' 621000 000404 EOF1: TLZ F,SLIBSW+SKIPSW ;CLEAR ONE FILE LIB. SEARCH FLAG 000633' 263740 000000 EOF2: POPJ P, ; FORCE SCAN TO COMPLETION, LOAD IF NECESSARY 000634' 260740 000652' FSCN: PUSHJ P,FSCN1 ;FORCED LOAD BEFORE TEST 000635' 607000 000200 TLNN F,FULLSW ;TEST FOR OVERLAP 000636' 263740 000000 POPJ P, ;NO OVERLAP, RETURN 000637' 200500 000003 MOVE W,H ;FETCH CORE SIZE REQUIRED 000640' 275504 000001 SUBI W,1(S) ; COMPUT DEFICIENCY 000641' 321500 000633' JUMPL W,EOF2 ;JUMP IF NO OVERLAP 000642' 661000 000020 TLO F,FCONSW ;INSURE TTY OUTPUT 000643' 260740 001553' PUSHJ P,PRQ ;START WITH ? 000644' 260740 001410' PUSHJ P,PRNUM0 ;INFORM USER 000645' 265700 001541' JSP A,ERRPT7 000646' 675762 446300 SIXBIT /WORDS OF OVERLAP#/ 000647' 574600 576645 000650' 625441 600300 000651' 254000 000042' JRST LD2 ;ERROR RETURN 000652' 667000 000010 FSCN1: TLON F,FSW ;SKIP IF NOT FIRST CALL TO FSCN 000653' 607000 100003 TLNN F,CSW+DSW+ESW ;TEST SCAN FOR COMPLETION 000654' 263740 000000 POPJ P, 000655' 260740 000137' FSCN2: PUSHJ P,LD5B1 ;STORE FILE OR EXTENSION IDENT. ; LOADER CONTROL, NORMAL MODE 000656' 260740 000515' LDF: PUSHJ P,ILD ;INITIALIZE LOADING 1KLOAD - LOADS MACROX PAGE 22 DICK GRUEN: V25 3 AUG 68 ;LOAD SUBROUTINE 000657' 202740 001627' LOAD: MOVEM P,PDSAV ;SAVE PUSHDOWN POINTER 000660' 200740 001627' LOAD1: MOVE P,PDSAV ;RESTORE PUSHDOWN POINTER 000661' 260740 001560' LOAD1A: PUSHJ P,WORD ;INPUT BLOCK HEADER WORD 000662' 211612 400000 MOVNI E,400000(W) ;WORD COUNT - FROM RH OF HEADER 000663' 554700 000012 HLRZ A,W ;BLOCK TYPE - FROM LH OF HEADER 000664' 303700 000013 CAILE A,DISPL*2+1 ;TEST BLOCK TYPE NUMBER 000665' 254000 000704' JRST LOAD4 ;ERROR, ILLEGAL BLOCK TYPE 000666' 603000 000004 TLNE F,SKIPSW ;BLOCK OK - TEST LOAD STATUS 000667' 254000 000575' JRST LIB1 ;RETURN TO LIB. SEARCH CONTROL 000670' 550416 000676' HRRZ T,LOAD2(A) ;LOAD RH DISPATCH ENTRY 000671' 303700 000005 CAILE A,DISPL ;SKIP IF CORRECT 000672' 554416 000670' HLRZ T,LOAD2-DISPL-1(A) ;LOAD LH DISPATCH ENTRY 000673' 603000 000200 TLNE F,FULLSW ;TEST CORE OVERLAP INDICATOR 000674' 367700 001143' SOJG A,HIGH0 ;IGNORE BLOCK IF NOT TYPE 1 000675' 254020 000010 JRST @T ;DISPATCH TO BLOCK SUBROUTINE ;DISPATCH TABLE - BLOCK TYPES 000676' 001162' 000661' LOAD2: XWD NAME,LOAD1A 000677' 001157' 000710' XWD START,PROG 000700' 001211' 000725' XWD LOCD,SYM 000701' 000704' 000704' XWD LOAD4A,LOAD4A 000702' 000704' 000605' XWD LOAD4A,LIB3 000703' 000704' 001145' LOAD3: XWD LOAD4A,HIGH 000005 DISPL=LOAD3-LOAD2 ;ERROR EXIT FOR BAD HEADER WORDS LOAD4: IFE K,< CAIN A,400 ;FORTRAN FOUR BLOCK JRST F4LD> 000704' 265700 001462' LOAD4A: JSP A,ERRPT ;INCORRECT HEADER WORD 000705' 515454 160046 SIXBIT /ILL. FORMAT#/ 000706' 576255 416403 000707' 254000 000042' JRST LD2 1KLOAD - LOADS MACROX PAGE 23 DICK GRUEN: V25 3 AUG 68 ;LOAD PROGRAMS AND DATA (BLOCK TYPE 1) 000710' 550440 000012 PROG: HRRZ V,W ;LOAD BLOCK LENGTH 000711' 260740 001243' PUSHJ P,RWORD ;READ BLOCK ORIGIN 000712' 270440 000012 ADD V,W ;COMPUTE NEW PROG. BREAK 000713' 307160 000002 CAIG H,@X ;COMPARE WITH PREV. PROG. BREAK 000714' 201160 000002 MOVEI H,@X ;UPDATE PROGRAM BREAK 000715' 603000 000200 TLNE F,FULLSW 000716' 254000 001141' JRST FULLC ;NO ERROR MESSAGE 000717' 303144 000001 CAILE H,1(S) ; SKIP IF SUFFICIENT CORE AVAILABLE IFN EXPAND,< JRST [PUSHJ P,XPAND> 000720' 254000 001141' JRST FULLC IFN EXPAND,< JRST .-1]> 000721' 200440 000012 MOVE V,W 000722' 260740 001243' PROG1: PUSHJ P,RWORD ;READ DATA WORD 000723' 202520 000002 MOVEM W,@X ;STORE DATA WORD IN PROG. AT LLC 000724' 344440 000722' AOJA V,PROG1 ;ADD ONE TO LOADER LOC. COUNTER ;LOAD SYMBOLS (BLOCK TYPE 2) 000725' 260740 001235' SYM: PUSHJ P,PRWORD ;READ TWO DATA WORDS 000726' 260740 000730' PUSHJ P,SYMPT; PUT INTO TABLE 000727' 254000 000725' JRST SYM ; WFW SYMPT: JUMPL C,SYM3; JUMP IF GLOBAL REQUEST 000730' 603540 200000 SYMPT: TLNE C,200000 ;GLOBAL REQUEST? WFW 000731' 321540 001006' JUMPL C,SYM3 ;CHECK FOR 60 NOT JUST HIGH BIT WFW 000732' 603540 100000 TLNE C,100000 000733' 254000 000755' JRST SYM1A ;LOCAL SYMBOL 000734' 260740 001224' PUSHJ P,SREQ ;GLOBAL DEF., SEARCH FOR REQUEST 000735' 254000 000770' JRST SYM2 ;REQUEST MATCHES 000736' 260740 001226' PUSHJ P,SDEF ;SEARCH FOR MULTIPLE DEFINITIONS 000737' 254000 000741' JRST SYM1 ;MULTIPLY DEFINED GLOBAL 000740' 254000 000757' JRST SYM1B ; PROCESS MULTIPLY DEFINED GLOBAL 000741' 316516 000002 SYM1: CAMN W,2(A) ;COMPARE NEW AND OLD VALUE 000742' 263740 000000 POPJ P,; 000743' 350000 001631' AOS MDG ;COUNT MULTIPLY DEFINED GLOBALS 000744' 260740 001553' PUSHJ P,PRQ ;START W/ ? 000745' 260740 001406' PUSHJ P,PRNAM ;PRINT SYMBOL AND VALUE 000746' 200516 000002 MOVE W,2(A) ;LOAD OLD VALUE 000747' 260740 001407' PUSHJ P,PRNUM ;PRINT OLD VALUE 000750' 265700 001541' JSP A,ERRPT7 ;PRINT MESSAGE 000751' 556554 160044 SIXBIT /MUL. DEF. GLOBAL#/ 000752' 454616 004754 000753' 574241 540300 000754' 263740 000000 POPJ P,; IGNORE MUL. DEF. GLOBAL SYM 1KLOAD - LOADS MACROX PAGE 24 DICK GRUEN: V25 3 AUG 68 ; LOCAL SYMBOL 000755' 607000 041000 SYM1A: TLNN F,SYMSW+DSYMSW ;SKIP IF LOAD LOCALS SWITCH ON 000756' 263740 000000 POPJ P,; IGNORE LOCAL SYMBOLS 000757' 301144 000000 SYM1B: CAIL H,(S) ;STORE DEFINED SYMBOL IFN EXPAND,< PUSHJ P,XPAND7> 000760' 254000 001132' IFE EXPAND,< JRST SFULLC> SYM1C: IFE K,< TLNE N,F4SW; FORTRAN FOUR REQUIRES A BLT PUSHJ P,MVDWN; OF THE TABLES> 000761' 201704 777776 MOVEI A,-2(S) ;LOAD A TO SAVE INST. AT SYM2 000762' 275200 000002 SYM1D: SUBI S,2; UPDATE UNDEFINED POINTER 000763' 262316 000002 POP B,2(A) ;MOVE UNDEFINED VALUE POINTER 000764' 262316 000001 POP B,1(A) ;MOVE UNDEFINED SYMBOL 000765' 202506 000002 MOVEM W,2(B) ;STORE VALUE 000766' 202546 000001 MOVEM C,1(B) ;STORE SYMBOL 000767' 263740 000000 POPJ P,; 1KLOAD - LOADS MACROX PAGE 25 DICK GRUEN: V25 3 AUG 68 ; GLOBAL DEFINITION MATCHES REQUEST 000770' 261740 001000' SYM2: PUSH P,SYM2C ;NEXT MUST BE A SUBROUTINE FOR LATER. SET RETURN 000771' 200456 000002 SYM2B: MOVE V,2(A) ;LOAD REQUEST POINTER 000772' 260740 001215' PUSHJ P,REMSYM 000773' 321440 001117' JUMPL V,SYM2W ;ADDITIVE REQUEST? WFW 000774' 260740 001130' PUSHJ P,SYM4A ;REPLACE CHAIN WITH DEFINITION ;WFW PATCH TO LOOK FOR MORE THAN ONE REQUEST 000775' 260740 001224' SYM2W1: PUSHJ P,SREQ ;LOOK FOR MORE REQUESTS FOR THIS SYMBOL 000776' 254000 000771' JRST SYM2B ;FOUND MORE 000777' 200700 001001' MOVE A,SVA ;RESTORE A ;END OF PATCH WFW 001000' 263740 000762' SYM2C: POPJ P,SYM1D ;RETURN, SEE SYM2 FOR USE OF ADDRESS 001001' 000000 000000 SVA: 0 ;A TEMP CELL WFW ; REQUEST MATCHES GLOBAL DEFINITION 001002' 200440 000012 SYM2A: MOVE V,W ;LOAD POINTER TO CHAIN 001003' 200516 000002 MOVE W,2(A) ;LOAD VALUE 001004' 321440 001050' JUMPL V,FIXWP ;HANDLE ATTITIVE REQUEST WFW 001005' 254000 001130' JRST SYM4A; REPLACE CHAIN WITH DEFINITION ; PROCESS GLOBAL REQUEST 001006' 603540 040000 SYM3: TLNE C,040000; COMMON NAME 001007' 254000 000757' JRST SYM1B 001010' 641540 640000 TLC C,640000; PERMUTE BITS FROM 60 TO 04 001011' 260740 001226' PUSHJ P,SDEF ;SEARCH FOR GLOBAL DEFINITION 001012' 254000 001002' JRST SYM2A ;MATCHING GLOBAL DEFINITION 001013' 321500 001016' JUMPL W,SYM3X1 ;ADDITIVE FIXUP WFW 001014' 260740 001224' PUSHJ P,SREQ ;SEARCH FOR EXISTING REQUEST WFW 001015' 254000 001035' JRST SYM3A ;EXISTING REQUEST FOUND WFW 001016' 607500 100000 SYM3X1: TLNN W,100000 ;CHECK SYMBOL TABLE FIXUP 001017' 254000 001027' JRST SYM3X2 ;NO 001020' 200446 000001 MOVE V,1(B) ;MUST BE LAST SYMBOL DEFINED. GET SYMBOL 001021' 430440 000012 XOR V,W ;CHECK FOR IDENTITY 001022' 612440 002437' TDNE V,[XWD 77777,-1] ;BUT IGNORE HIGH 3 BITS 001023' 263740 000000 POPJ P, ;NOT SAME, ASSUME NOT LOADED LOCAL 001024' 541506 000002 HRRI W,2(B) ;GET LOCATION IN RIGHT HALF 001025' 661500 000001 TLO W,1 001026' 274500 000322* SUB W,JOBREL ;AND MAKE RELATIVE 001027' 301144 000000 SYM3X2: CAIL H,(S) ;STORE REQUEST IN UNDEF. TABLE WFW IFN EXPAND,< PUSHJ P,XPAND7> 001030' 254000 001132' IFE EXPAND,< JRST SFULLC> SYM3X: IFE K,< TLNE N,F4SW; FORTRAN FOUR PUSHJ P,MVDWN; ADJUST TABLES IF F4> 001031' 274200 001623' SUB S,SE3 ;ADVANCE UNDEFINED POINTER 001032' 202504 000002 MOVEM W,2(S) ;STORE UNDEFINED VALUE POINTER 001033' 202544 000001 MOVEM C,1(S) ;STORE UNDEFINED SYMBOL 001034' 263740 000000 POPJ P,; 1KLOAD - LOADS MACROX PAGE 26 DICK GRUEN: V25 3 AUG 68 ; COMBINE TWO REQUEST CHAINS 001035' 331016 000002 SYM3A: SKIPL 2(A) ;IS IT ADDITIVE WFW 001036' 254000 001042' JRST SYM3A1 ;NO, PROCESS WFW 001037' 260740 001231' PUSHJ P,SDEF2 ;YES, CONTINUE WFW 001040' 254000 001035' JRST SYM3A ;FOUND ANOTHER WFW 001041' 254000 001027' JRST SYM3X2 ;REALLY NO CHAIN THERE WFW 001042' 275702 777776 SYM3A1: SUBI A,-2(X) ;A=A-(-2+X(18-35)); A RELATIVE TO X WFW 001043' 550440 000016 SYM3B: HRRZ V,A ; SAVE CHAIN ADDRESS FOR HRRM W,@X 001044' 550720 000002 HRRZ A,@X ; LOAD NEXT ADDRESS IN CHAIN 001045' 326700 001043' JUMPN A,SYM3B ; JUMP IF NOT THE LAST ADDR. IN CHAIN 001046' 542520 000002 HRRM W,@X ;COMBINE CHAINS 001047' 263740 000000 POPJ P,; ;WFW PATCH FOR ADDITIVE GLOBAL REQUESTS 001050' 607440 100000 FIXWP: TLNN V,100000 ;CHECK FOR SYMBOL TABLE FIXUP 001051' 254000 001060' JRST FIXW 001052' 200406 000001 MOVE T,1(B) ;SYMBOL FIXUP, MUST BE LAST SYMBOL DEFINED 001053' 430400 000011 XOR T,V ;CHECK FOR SAME 001054' 612400 002437' TDNE T,[XWD 77777,-1] ;EXCEPT FOR HEGH CODE BITS 001055' 263740 000000 POPJ P, ;ASSUME NON-LOADED LOCAL 001056' 541446 000002 HRRI V,2(B) ;GET LOCATION 001057' 275442 000000 SUBI V,(X) ;SO WE CAN USE @X 001060' 603440 200000 FIXW: TLNE V,200000 ;IS IT LEFT HALF 001061' 254000 001067' JRST FIXWL 001062' 200420 000002 MOVE T,@X ;GET WORD 001063' 270400 000012 ADD T,W ;VALUE OF GLOBAL 001064' 542420 000002 HRRM T,@X ;FIX WITHOUT CARRY 001065' 205340 200000 MOVSI D,200000 ;SET UP TO REMOVE DEFERED INTERNAL IF THERE 001066' 254000 001072' JRST SYMFIX 001067' 514400 000012 FIXWL: HRLZ T,W ;UPDATE VALUE OF LEFT HALF 001070' 272420 000002 ADDM T,@X ;BY VALUE OF GLOBAL 001071' 205340 400000 MOVSI D,400000 ;LEFT DEFERED INTERNAL 001072' 607440 100000 SYMFIX: TLNN V,100000 ;CHECK FOR SYMBOL TABLE FIXUP 001073' 263740 000000 POPJ P, ;NO, RETURN 001074' 271442 000000 ADDI V,(X) ;GET THE LOCATION 001075' 200411 777777 MOVE T,-1(V) ;GET THE SYMBOL NAME 001076' 607400 040000 TLNN T,40000 ;CHECK TO SEE IF INTERNAL 001077' 263740 000000 POPJ P, ;NO, LEAVE 001100' 413351 777777 ANDCAB D,-1(V) ;REMOVE PROPER BIT 001101' 603340 600000 TLNE D,600000 ;IS IT STILL DEFERED? 001102' 263740 000000 POPJ P, ;YES, ALL DONE 001103' 250540 000007 EXCH C,D ;NO, CHECK FOR A REQUEST FOR IT 001104' 260740 001224' PUSHJ P,SREQ 001105' 254000 001110' JRST CHNSYM ;YES, WILL HAVE TO CALL THE FIXUP ROUTINE 001106' 200540 000007 MOVE C,D ;GET C BACK 001107' 263740 000000 POPJ P, 001110' 261740 000007 CHNSYM: PUSH P,D ;HAS THE OLD C IN IT 001111' 261740 000012 PUSH P,W ;WE MAY NEED IT LATER 001112' 200511 000000 MOVE W,(V) ;GET VALUE 001113' 260740 000771' PUSHJ P,SYM2B ;CALL THE FOUND GLOBAL TO MATCH REQUEST ROUTINE 1KLOAD - LOADS MACROX PAGE 26-1 DICK GRUEN: V25 3 AUG 68 001114' 262740 000012 POP P,W 001115' 262740 000013 POP P,C ;RESTORE FOR CALLER 001116' 263740 000000 POPJ P, ;AND GO AWAY 001117' 607440 100000 SYM2W: TLNN V,100000 ;SYMBOL TABLE? 001120' 254000 001123' JRST SYM2WA 001121' 270440 001026* ADD V,JOBREL ;MAKE ABSOLUTE 001122' 275442 000000 SUBI V,(X) ;GET READY TO ADD X 001123' 260740 001060' SYM2WA: PUSHJ P,FIXW ;DO FIXUP 001124' 254000 000775' JRST SYM2W1 ;AND LOOK FOR MORE REQUESTS ;END WFW PATCH 1KLOAD - LOADS MACROX PAGE 27 DICK GRUEN: V25 3 AUG 68 ;PATCH VALUES INTO CHAINED REQUEST 001125' SYM4: 001125' 550420 000002 HRRZ T,@X ;LOAD NEXT ADDRESS IN CHAIN 001126' 542520 000002 HRRM W,@X ;INSERT VALUE INTO PROGRAM 001127' 200440 000010 MOVE V,T 001130' 326440 001125' SYM4A: JUMPN V,SYM4 ;JUMP IF NOT LAST ADDR. IN CHAIN 001131' 263740 000000 POPJ P, IFE K,< MVDWN: HRRZ T,MLTP IFN EXPAND,< SUBI T,2> CAIG T,@X; ANY ROOM LEFT? IFN EXPAND,< JRST [PUSHJ P,XPAND> TLOA F,FULLSW IFN EXPAND,< JRST MVDWN JRST .+2]> TLNE F,SKIPSW+FULLSW JRST MVABRT; ABORT BLT HRREI T,-2 ADDM T,PLTP; ADJUST PROGRAMMER LABEL POINTER ADDM T,BITP; AND BIT TABLE POINTER ADDM T,SDSTP; FIRST DATA STATEMENT ADDM T,LTC ADDM T,ITC TLNE N,SYDAT ADDM T,V ADDB T,MLTP; AND FINALLY TO MADE LABEL TABLE HRLS T; SET UP BLT POINTER ADD T,[XWD 2,0] BLT T,(S) MVABRT: POPJ P,; > ;HIGHEST RELOCATABLE POINT (BLOCK TYPE 4) 001132' 663000 000200 SFULLC: TLOE F,FULLSW ;PREVIOUS OVERFLOW? 001133' 254000 001141' JRST FULLC ;YES, DON'T PRINT MESSAGE 001134' 265700 001462' JSP A,ERRPT ;NO, COMPLAIN ABT OVERFLO 001135' 637155 425754 SIXBIT ?SYMBOL TABLE OVERLAP#? 001136' 006441 425445 001137' 005766 456254 001140' 416003 000000 001141' 661000 000200 FULLC: TLO F,FULLSW ;CORE OVERLAP ERROR RETURN IFE K,< TLNE N,F4SW POPJ P,> 001142' 254000 000605' JRST LIB3 ;LOOK FOR MORE 001143' 302700 000004 HIGH0: CAIE A,4 ; TEST FOR END BLOCK (OVERLAP) 001144' 254000 000605' JRST LIB3 001145' 260740 001235' HIGH: PUSHJ P,PRWORD ;READ TWO DATA WORDS 001146' 540240 000013 HRR R,C ;SET NEW PROGRAM BREAK 001147' 271540 000002 ADDI C,X; BE SURE TO RELOCATE 001150' 303544 000001 CAILE C,1(S) ;TEST PROGRAM BREAK IFN EXPAND,<PUSHJ P,[ PUSHJ P,XPAND TLOA F,FULLSW 1KLOAD - LOADS MACROX PAGE 27-1 DICK GRUEN: V25 3 AUG 68 JRST POPJM2 POPJ P,]> 001151' 661000 000200 IFE EXPAND,<TLO F,FULLSW> 001152' 201700 001672' HIGH3: MOVEI A,F.C ;SAVE CURRENT STATE OF LOADER 001153' 251700 001700' BLT A,B.C 001154' 603000 004400 TLNE F,SLIBSW+LIBSW ;NORMAL MODE EXIT THROUGH LOAD1 001155' 254000 000572' JRST LIB ;LIBRARY SEARCH EXIT 001156' 254000 000660' JRST LOAD1 1KLOAD - LOADS MACROX PAGE 28 DICK GRUEN: V25 3 AUG 68 ;STARTING ADDRESS (BLOCK TYPE 7) 001157' 260740 001235' START: PUSHJ P,PRWORD ;READ TWO DATA WORDS 001160' 607040 000002 TLNN N,ISAFLG ;SKIP IF IGNORE SA FLAG ON 001161' 540000 000013 HRR F,C ;SET STARTING ADDRESS ;PROGRAM NAME (BLOCK TYPE 6) 001162' 260740 001235' NAME: PUSHJ P,PRWORD ;READ TWO DATA WORDS 001163' 663040 000004 TLOE N,COMFLG ;SKIP IF COMMON NOT PREV. SET 001164' 254000 001170' JRST NAME1 ;SIZE OF COMMON PREV. SET 001165' 202500 001630' MOVEM W,COMSAV ;STORE LENGTH OF COMMON 001166' 322500 001201' JUMPE W,NAME2 ;JUMP IF NO COMMON IN THIS JOB 001167' 541260 000005 HRRI R,@R ;FIRST PROGRAM SET LOAD ORIGIN 001170' 303144 777777 NAME1: CAILE H,-1(S) ;TEST FOR AVAIL. SYMBOL SPACE IFN EXPAND,< PUSHJ P,XPAND7> 001171' 254000 001132' IFE EXPAND,< JRST SFULLC> 001172' 275200 000002 SUBI S,2 ;UPDATE UNDEF. TABLE POINTER 001173' 262304 000002 POP B,2(S) 001174' 262304 000001 POP B,1(S) 001175' 550440 000001 HRRZ V,N ;POINTER TO PREVIOUS NAME 001176' 276300 000011 SUBM B,V ;COMPUTE RELATIVE POSITIONS 001177' 506441 000002 HRLM V,2(N) ;STORE FORWARD POINTER 001200' 540040 000006 HRR N,B ;UPDATE NAME POINTER 001201' 202546 000001 NAME2: MOVEM C,1(B) ;STORE PROGRAM NAME 001202' 552246 000002 HRRZM R,2(B) ;STORE PROGRAM ORIGIN 001203' 317500 001630' CAMG W,COMSAV ;CHECK COMMON SIZE 001204' 254000 000605' JRST LIB3 ;COMMON OK 001205' 265700 001462' ILC: JSP A,ERRPT 001206' 515454 160043 SIXBIT /ILL. COMMON#/ 001207' 575555 575603 001210' 254000 000042' JRST LD2 1KLOAD - LOADS MACROX PAGE 29 DICK GRUEN: V25 3 AUG 68 ;ONE PASS LOCAL DEFINITION (BLOCK TYPE 10) ;PMP PATCH FOR LEFT HALF FIXUPS ;END PMP PATCH 001211' 260740 001243' LOCD: PUSHJ P,RWORD ;READ ONE DATA WORD 001212' 554440 000012 HLRZ V,W ;STORAGE POINTER IN LEFT HALF 001213' 260740 001130' PUSHJ P,SYM4A ;LINK BACK REFERENCES 001214' 254000 001211' JRST LOCD 1KLOAD - LOADS MACROX PAGE 30 DICK GRUEN: V25 3 AUG 68 001215' 200404 000001 REMSYM: MOVE T,1(S) 001216' 202416 000001 MOVEM T,1(A) 001217' 200404 000002 MOVE T,2(S) 001220' 202416 000002 MOVEM T,2(A) 001221' 270200 001623' ADD S,SE3 001222' 202700 001001' MOVEM A,SVA 001223' 263740 000000 POPJ P, 1KLOAD - LOADS MACROX PAGE 31 DICK GRUEN: V25 3 AUG 68 ;SYMBOL TABLE SEARCH SUBROUTINES ; ENTERED WITH SYMBOL IN C ; RETURN IS WITH POINTER IN A IF MATCHING SYMBOL FOUND ; OTHERWISE, A SKIP ON RETURN OCCURS 001224' 325200 001233' SREQ: JUMPGE S,CPOPJ1 ;JUMP IF NO UNDEF. SYMBOLS 001225' 334700 000004 SKIPA A,S ;LOAD REQUEST SEARCH POINTER 001226' 200700 000006 SDEF: MOVE A,B ;LOAD DEF. SYMBOL SEARCH POINTER 001227' 316556 000001 SDEF1: CAMN C,1(A) 001230' 263740 000000 POPJ P, ;SYMBOLS MATCH, RETURN 001231' 270700 001623' SDEF2: ADD A,SE3 001232' 321700 001227' JUMPL A,SDEF1 IFE K,< JRST CPOPJ1 ;SYMBOL NOT FOUND SKIPS ON RETURN> IFN K,< 001233' 350017 000000 CPOPJ1: AOS (P) ;TRA 2,4 001234' 263740 000000 POPJ P, ;...> ;RELOCATION AND BLOCK INPUT 001235' 260740 001243' PRWORD: PUSHJ P,RWORD ;READ A WORD PAIR 001236' 200540 000012 MOVE C,W ;LOAD C WITH FIRST DATA WORD 001237' 602600 377777 TRNE E,377777 ;TEST FOR END OF BLOCK 001240' 254000 001245' JRST RWORD1 ;INPUT SECOND WORD OF PAIR 001241' 201500 000000 MOVEI W,0 ;NO SECOND WORD, ASSUME ZERO 001242' 263740 000000 POPJ P, 001243' 606600 377777 RWORD: TRNN E,377777 ;TEST FOR END OF BLOCK 001244' 254000 000660' JRST LOAD1 ;RETURN TO LOAD THE NEXT BLOCK 001245' 253600 001251' RWORD1: AOBJN E,RWORD2 ;JUMP IF DATA WORD NEXT 001246' 260740 001560' PUSHJ P,WORD ;READ CONTROL WORD 001247' 200640 000012 MOVE Q,W ;DON'T COUNT RELOCATION WORDS 001250' 505600 777756 HRLI E,-22 ;SET RELOCATION WORD BYTE COUNT 001251' 260740 001560' RWORD2: PUSHJ P,WORD ;READ INPUT WORD 001252' 325640 001255' JUMPGE Q,RWORD3 ;TEST LH RELOCATION BIT 001253' 514400 000005 HRLZ T,R 001254' 270500 000010 ADD W,T ;LH RELOCATION 001255' 603640 200000 RWORD3: TLNE Q,200000 ;TEST RH RELOCATION BIT 001256' 541520 000005 HRRI W,@R ;RH RELOCATION 001257' 242640 000002 LSH Q,2 001260' 263740 000000 POPJ P, 1KLOAD - LOADS MACROX PAGE 32 DICK GRUEN: V25 3 AUG 68 ;PRINT STORAGE MAP SUBROUTINE 001261' 260740 000652' PRMAP: PUSHJ P,FSCN1 ;LOAD OTHER FILES FIRST 001262' 260740 001576' PUSHJ P,CRLFLF ;START NEW PAGE 001263' 550500 000005 HRRZ W,R 001264' 260740 001410' PUSHJ P,PRNUM0 001265' 265700 001541' JSP A,ERRPT7 001266' 516300 645045 SIXBIT ?IS THE PROGRAM BREAK@? 001267' 006062 574762 001270' 415500 426245 001271' 415340 000000 001272' 260740 001600' PUSHJ P,CRLF ;START STORAGE MAP 001273' 265700 001465' JSP A,ERRPT0 ;PRINT HEADER 001274' 636457 624147 SIXBIT ?STORAGE MAP@? 001275' 450055 416040 001276' 574700 000006 HLRE A,B 001277' 213000 000016 MOVNS A 001300' 271706 000000 ADDI A,(B) 001301' 275700 000002 PRMAP1: SUBI A,2 001302' 331556 000001 SKIPL C,1(A) ;LOAD SYMBOL, SKIP IF DELETED 001303' 603540 300000 TLNE C,300000 ;TEST FOR LOCAL SYMBOL 001304' 254000 001330' JRST PRMAP4 ;IGNORE LOCAL SYMBOLS 001305' 607540 040000 TLNN C,040000 001306' 260740 001600' PUSHJ P,CRLF ;PROGRAM NAME 001307' 260740 001405' PUSHJ P,PRNAM1 ;PRINT SYMBOL AND VALUE 001310' 603540 040000 TLNE C,040000 001311' 254000 001327' JRST PRMAP3 ;GLOBAL SYMBOL 001312' 574540 000012 HLRE C,W ;POINTER TO NEXT PROG. NAME 001313' 325540 001316' JUMPGE C,PRMAP2 ;JUMP IF LAST PROGRAM NAME 001314' 271556 000002 ADDI C,2(A) ;COMPUTE LOC. OF FOLLOWING NAME 001315' 334420 000013 SKIPA T,@C ;LOAD ORIGIN OF FOLLOWING PROG. 001316' 550400 000005 PRMAP2: HRRZ T,R ;LOAD PROGRAM BREAK 001317' 276400 000012 SUBM T,W ;SUBTRACT ORIGIN TO GET LENGTH 001320' 260740 001407' PUSHJ P,PRNUM ;PRINT PROGRAM LENGTH 001321' 260740 001600' PUSHJ P,CRLF 001322' 607040 000001 TLNN N,ALLFLG ;SKIP IF LIST ALL MODE IS ON 001323' 602500 777777 TRNE W,777777 ;SKIP IF ZERO LENGTH PROGRAM 001324' 254000 001327' JRST PRMAP3 001325' 322540 001332' JUMPE C,PRMAP5 ;JUMP IF LAST PROGRAM 001326' 334700 000013 SKIPA A,C ;SKIP GLOBALS, ZERO LENGTH PROG. 001327' 260740 001600' PRMAP3: PUSHJ P,CRLF 001330' 303706 000000 PRMAP4: CAILE A,(B) ;TEST FOR END OF SYMBOL TABLE 001331' 254000 001301' JRST PRMAP1 001332' PRMAP5: 1KLOAD - LOADS MACROX PAGE 33 DICK GRUEN: V25 3 AUG 68 ;LIST UNDEFINED GLOBALS 001332' 260740 000652' PMS: PUSHJ P,FSCN1 ;LOAD FILES FIRST 001333' 325200 001356' JUMPGE S,PMS3 ;JUMP IF NO UNDEFINED GLOBALS 001334' 523000 000042 HLLOS 42 ;SET SOME ERROR TO ABORT EXECUTION 001335' 260740 001577' PUSHJ P,FCRLF ;START THE MESSAGE 001336' 260740 001553' PUSHJ P,PRQ ;PRINT ? 001337' 574500 000004 HLRE W,S ;COMPUTE NO. OF UNDEF. GLOBALS 001340' 217000 000012 MOVMS W 001341' 242500 777777 LSH W,-1 ;<LENGTH OF LIST>/2 001342' 260740 001410' PUSHJ P,PRNUM0 001343' 265700 001541' JSP A,ERRPT7 001344' 655644 454651 SIXBIT /UNDEFINED GLOBALS@/ 001345' 564544 004754 001346' 574241 546340 001347' 200700 000004 MOVE A,S ;LOAD UNDEF. POINTER 001350' 260740 001600' PMS2: PUSHJ P,CRLF 001351' 260740 001553' PUSHJ P,PRQ ;PRINT ? 001352' 260740 001404' PUSHJ P,PRNAM0 ;PRINT SYMBOL AND POINTER 001353' 270700 001623' ADD A,SE3 001354' 321700 001350' JUMPL A,PMS2 001355' 260740 001600' PUSHJ P,CRLF ;SPACE AFTER LISTING ;LIST NUMBER OF MULTIPLY DEFINED GLOBALS 001356' 336500 001631' PMS3: SKIPN W,MDG ;ANY MULTIPLY DEFINED GLOBALS 001357' 254000 001372' JRST PMS4 ;NO, EXCELSIOR 001360' 523000 000042 HLLOS 42 ;ANOTHER WAY TO LOSE 001361' 260740 001577' PUSHJ P,FCRLF ;ROOM AT THE TOP 001362' 260740 001553' PUSHJ P,PRQ ;PRINT ? 001363' 260740 001410' PUSHJ P,PRNUM0 ;NUMBER OF MULTIPLES 001364' 265700 001541' JSP A,ERRPT7 ;REST OF MESSAGE 001365' 556554 645160 SIXBIT ?MULTIPLY DEFINED GLOBALS@? 001366' 547100 444546 001367' 515645 440047 001370' 545742 415463 001371' 400000 000000 001372' 603040 040000 PMS4: TLNE N,AUXSWE ;AUXILIARY OUTPUT DEVICE? 001373' 067100 000000 OUTPUT 2, ;INSURE A COMPLETE BUFFER 001374' 263740 000000 POPJ P, ;RETURN 1KLOAD - LOADS MACROX PAGE 34 DICK GRUEN: V25 3 AUG 68 ;ENTER FILE ON AUXILIARY OUTPUT DEVICE 001375' 077100 001730' IAD2: ENTER 2,DTOUT ;WRITE FILE NAME IN DIRECTORY 001376' 254000 001400' JRST IMD3 ;NO MORE DIRECTORY SPACE 001377' 263740 000000 POPJ P, 001400' 265700 001462' IMD3: JSP A,ERRPT ;DIRECTORY FULL ERROR 001401' 445162 160046 SIXBIT /DIR. FULL@/ 001402' 655454 400000 001403' 254000 000042' JRST LD2 ;PRINT THE 6 DIGIT OCTAL ADDRESS IN W ; ACCUMULATORS USED: D,T,V 001404' 200556 000001 PRNAM0: MOVE C,1(A) ;LOAD SYMBOL 001405' 200516 000002 PRNAM1: MOVE W,2(A) ;LOAD VALUE 001406' 260740 001433' PRNAM: PUSHJ P,PRNAME 001407' 260740 001427' PRNUM: PUSHJ P,SPACES 001410' 200440 001417' PRNUM0: MOVE V,PRNUM2 ;LOAD BYTE POINTER TO RH. OF W 001411' 211340 000006 MOVNI D,6 ;LOAD CHAR. COUNT 001412' 134400 000011 PRNUM1: ILDB T,V ;LOAD DIGIT TO BE OUTPUT 001413' 271400 000060 ADDI T,60 ;CONVERT FROM BINARY TO ASCII 001414' 260740 001604' PUSHJ P,TYPE2 001415' 341340 001412' AOJL D,PRNUM1 ;JUMP IF MORE DIGITS REMAIN 001416' 263740 000000 POPJ P, 001417' 220300 000012 PRNUM2: XWD 220300,W ;YE OLDE RECURSIVE NUMBER PRINTER ;PRINTS Q, WITH LEADING ZEROES SUPPRESSED; USES A AND T 001420' 231640 000012 RCNUM: IDIVI Q,12 ;RADIX DECIMAL 001421' 271700 000060 ADDI A,"0" 001422' 506717 000000 HRLM A,(P) 001423' 332000 000015 SKIPE Q 001424' 260740 001420' PUSHJ P,RCNUM 001425' 554417 000000 HLRZ T,(P) 001426' 254000 001604' JRST TYPE2 1KLOAD - LOADS MACROX PAGE 35 DICK GRUEN: V25 3 AUG 68 ;PRINT FOUR SPACES 001427' 260740 001430' SPACES: PUSHJ P,SP1 001430' 260740 001431' SP1: PUSHJ P,SPACE 001431' 201400 000040 SPACE: MOVEI T,40 001432' 254000 001604' JRST TYPE2 ;SYMBOL PRINT - RADIX 50 ; ACCUMULATORS USED: D,T 001433' 200400 000013 PRNAME: MOVE T,C ;LOAD SYMBOL 001434' 621400 740000 TLZ T,740000 ;ZERO CODE BITS 001435' 211340 000006 MOVNI D,6 ;LOAD CHAR. COUNT 001436' 231400 000050 SPT: IDIVI T,50 ;THE REMAINDER IS THE NEXT CHAR. 001437' 506457 000000 HRLM V,(P) ;STORE IN LH. OF PUSHDOWN LIST 001440' 355000 000007 AOSGE D ;SKIP IF NO CHARS. REMAIN 001441' 260740 001436' PUSHJ P,SPT ;RECURSIVE CALL FOR NEXT CHAR. 001442' 554417 000000 HLRZ T,(P) ;LOAD FROM LH. OF PUSHDOWN LIST 001443' 322400 001603' JUMPE T,TYPE ;BLANK 001444' 271400 000057 ADDI T,60-1 001445' 303400 000071 CAILE T,71 001446' 271400 000007 ADDI T,101-72 001447' 303400 000132 CAILE T,132 001450' 275400 000070 SUBI T,134-44 001451' 306400 000043 CAIN T,43 001452' 201400 000056 MOVEI T,56 001453' 254000 001604' JRST TYPE2 ;PRINT A WORD OF SIXBIT CHARACTERS IN AC W ; ACCUMULATORS USED: Q,T,D 001454' 211640 000006 PWORD: MOVNI Q,6 ;SET CHARACTER COUNT TO SIX 001455' 200340 001624' PWORD1: MOVE D,LSTPT ;ENTER HERE WITH Q PRESET 001456' 134400 000007 PWORD2: ILDB T,D ;LOAD NEXT CHAR. TO BE OUTPUT 001457' 260740 001603' PUSHJ P,TYPE ;OUTPUT CHARACTER 001460' 341640 001456' AOJL Q,PWORD2 001461' 263740 000000 POPJ P, 1KLOAD - LOADS MACROX PAGE 36 DICK GRUEN: V25 3 AUG 68 ;ERROR MESSAGE PRINT SUBROUTINE ; FORM OF CALL: ; JSP A,ERRPT ; SIXBIT /<MESSAGE>/ ; ACCUMULATORS USED: T,V,C,W 001462' 661000 000020 ERRPT: TLO F,FCONSW ;INSURE TTY OUTPUT 001463' 260740 001600' PUSHJ P,CRLF ;ROOM AT THE TOP 001464' 260740 001553' PUSHJ P,PRQ ;START OFF WITH ? 001465' 261740 000015 ERRPT0: PUSH P,Q ;SAVE Q 001466' 334440 001524' SKIPA V,ERRPT5 001467' 260740 001603' ERRPT1: PUSHJ P,TYPE 001470' 134400 000011 ILDB T,V 001471' 306400 000040 CAIN T,40 001472' 254000 001517' JRST ERRPT4 001473' 306400 000005 CAIN T,5 001474' 254000 001543' JRST ERRPT9 001475' 302400 000003 CAIE T,3 001476' 254000 001467' JRST ERRPT1 001477' 336540 001724' SKIPN C,DTIN 001500' 254000 001517' JRST ERRPT4 001501' 211640 000014 MOVNI Q,14 001502' 201500 000077 MOVEI W,77 001503' 612540 000012 ERRPT2: TDNE C,W 001504' 254000 001507' JRST ERRPT3 001505' 242500 000006 LSH W,6 001506' 341640 001503' AOJL Q,ERRPT2 001507' 200500 001525' ERRPT3: MOVE W,ERRPT6 001510' 260740 001455' PUSHJ P,PWORD1 001511' 336500 001725' SKIPN W,DTIN1 001512' 254000 001517' JRST ERRPT4 001513' 242500 777772 LSH W,-6 001514' 661500 160000 TLO W,160000 001515' 211640 000004 MOVNI Q,4 001516' 260740 001455' PUSHJ P,PWORD1 001517' 260740 001600' ERRPT4: PUSHJ P,CRLF 001520' 262740 000015 ERRP41: POP P,Q 001521' 621000 000020 TLZ F,FCONSW ;ONE ERROR PER CONSOLE 001522' 350000 000011 AOS V ;PROGRAM BUMMERS BEWARE: 001523' 254020 000011 JRST @V ;V HAS AN INDEX OF A 001524' 440616 000000 ERRPT5: POINT 6,0(A) 001525' 004651 544500 ERRPT6: SIXBIT / FILE / 1KLOAD - LOADS MACROX PAGE 37 DICK GRUEN: V25 3 AUG 68 001526' 661000 000020 ERRPT8: TLO F,FCONSW ;INSURE TTY OUTPUT 001527' 260740 001553' PUSHJ P,PRQ ;START WITH ? 001530' 305400 000140 CAIGE T,140 ;IS IT A NON-PRINTING CHAR? 001531' 301400 000040 CAIL T,40 001532' 254000 001540' JRST ERRP8 001533' 261740 000010 PUSH P,T 001534' 201400 000136 MOVEI T,136 ;UP ARROW 001535' 260740 001604' PUSHJ P,TYPE2 001536' 262740 000010 POP P,T 001537' 271400 000100 ADDI T,100 ;CONVERT TO PRINTING CHAR. 001540' 260740 001604' ERRP8: PUSHJ P,TYPE2 001541' 260740 001431' ERRPT7: PUSHJ P,SPACE 001542' 254000 001465' JRST ERRPT0 001543' 201460 000011 ERRPT9: MOVEI V,@V 001544' 261740 000011 PUSH P,V 001545' 265700 001541' JSP A,ERRPT7 001546' 515454 454741 SIXBIT ?ILLEGAL -LOADER@? 001547' 540015 545741 001550' 444562 400000 001551' 262740 000011 POP P,V 001552' 254000 001520' JRST ERRP41 ;PRINT QUESTION MARK 001553' 261740 000010 PRQ: PUSH P,T ;SAVE 001554' 201400 000077 MOVEI T,"?" ;PRINT ? 001555' 260740 001604' PUSHJ P,TYPE2 ;... 001556' 262740 000010 POP P,T ;RESTORE 001557' 263740 000000 POPJ P, ;RETURN 1KLOAD - LOADS MACROX PAGE 38 DICK GRUEN: V25 3 AUG 68 ;INPUT - OUTPUT INTERFACE ;BINARY INPUT SUBROUTINE - RETURNS A WORD IN W IFE K,< WORDPR: PUSHJ P,WORD ;GET FIRST WORD OF PAIR MOVE C,W ;KEEP IT HANDY> 001560' 377000 001723' WORD: SOSG BUFR2 ;SKIP IF BUFFER NOT EMPTY 001561' 254000 001564' JRST WORD2 001562' 134500 001722' WORD1: ILDB W,BUFR1 ;PICK UP 36 BIT WORD 001563' 263740 000000 POPJ P, 001564' 066040 000000 WORD2: INPUT 1, ;GET NEXT BUFFER LOAD 001565' 062040 000012 STATUS 1,W ;GET DEVICE STATUS FROM MONITOR 001566' 602500 020000 TRNE W,IODEND ;TEST FOR EOF 001567' 254000 000631' JRST EOF ;END OF FILE EXIT 001570' 606500 740000 TRNN W,IOBAD ;TEST FOR DATA ERROR 001571' 254000 001562' JRST WORD1 ;DATA OK - CONTINUE LOADING 001572' 265700 001462' JSP A,ERRPT ;DATA ERROR - PRINT MESSAGE 001573' 515660 656400 SIXBIT /INPUT ERROR#/ 001574' 456262 576203 001575' 254000 000042' JRST LD2 ;GO TO ERROR RETURN ;TYPEOUT SUBROUTINE - THE CHARACTER SUPPLIED IN T IS CONVERTED TO ASCII ;AND IS OUTPUT ON THE CONSOLE AND/OR THE SPECIFIED LOADER MAP OUTPUT ;DEVICE 001576' 260740 001600' CRLFLF: PUSHJ P,CRLF 001577' 661000 000020 FCRLF: TLO F,FCONSW ;INSURE TTY OUTPUT 001600' 201400 000015 CRLF: MOVEI T,15 ;CARRIAGE RETURN LINE FEED 001601' 260740 001604' PUSHJ P,TYPE2 001602' 201400 777752 MOVEI T,12-40 ;LINE FEED IN PSEUDO SIXBIT 001603' 201410 000040 TYPE: MOVEI T,40(T) ;CONVERT SIXBIT TO ASCII 001604' 607040 020000 TYPE2: TLNN N,AUXSWI ;IS THER AN AUXILIARY DEVICE? 001605' 254000 001615' JRST TYPE3 ;NO, DONT OUTPUT TO IT 001606' 667040 040000 TLON N,AUXSWE ;IS AUX. DEV. ENTERED? 001607' 260740 001375' PUSHJ P,IAD2 ;NOPE, DO SO! 001610' 377000 001720' SOSG ABUF2 ;SPACE LEFT IN BUFFER? 001611' 067100 000000 OUTPUT 2, ;CREATE A NEW BUFFER 001612' 136400 001717' IDPB T,ABUF1 ;DEPOSIT CHARACTER 001613' 607000 000020 TLNN F,FCONSW ;FORCE OUTPUT TO CONSOLE TOO? 001614' 263740 000000 POPJ P, ;NOPE 001615' 336000 001712' TYPE3: SKIPN BUFO2 ;END OF BUFFER 001616' 067140 000000 OUTPUT 3, ;FORCE OUTPUT NOW 001617' 136400 001711' IDPB T,BUFO1 ;DEPOSIT CHARACTER 001620' 306400 000012 CAIN T,12 ;END OF LINE 001621' 067140 000000 OUTPUT 3, ;FORCE AN OUTPUT 001622' 263740 000000 POPJ P, 1KLOAD - LOADS MACROX PAGE 39 DICK GRUEN: V25 3 AUG 68 001623' 000002 000002 SE3: XWD 2,2 ;SYMBOL POINTER INCREMENT 001624' 440600 000012 LSTPT: POINT 6,W ;CHARACTER POINTER TO W 001625' 777737 001631' PDLPT: XWD -41,PDLST-1; INITIAL PUSHDOWN POINTER 001626' 034372 246575 COMM: SQUOZE 0,.COMM. 001627' 000000 000000 PDSAV: 0 ;SAVED PUSHDOWN POINTER 001630' 000000 000000 COMSAV: 0 ;LENGTH OF COMMON 001631' 000000 000000 MDG: 0 ;COUNTER FOR MUL DEF GLOBALS 001632' PDLST: BLOCK 40 001672' 000000 000000 F.C: 0 001673' 000000 000000 0 ;STORE N HERE 001674' 000000 000000 0 ;STORE X HERE 001675' 000000 000000 0 ;STORE H HERE 001676' 000000 000000 0 ;STORE S HERE 001677' 000000 000000 0 ;STORE R HERE 001700' 000000 000000 B.C: 0 001701' 000000 000000 F.I: 0 ;INITIAL F - FLAGS 001702' 000000 000000 0 ;INITIAL N 001703' 000011 002440' XWD V,LDEND ;INITIAL X - LOAD PROGRAM AFTER LOADER 001704' 000000 002600' EXP LDEND+JOBPRO ;INITIAL H - INITIAL PROG BREAK 001705' 000000 000000 0 ;INITIAL S 001706' 000012 000140 XWD W,JOBPRO ;INITIAL R - INITIAL RELOC 001707' 000000 000000 0 ;INITIAL B 1KLOAD - LOADS MACROX PAGE 40 DICK GRUEN: V25 3 AUG 68 ;BUFFER HEADERS AND HEADER HEADERS 001710' 000000 000000 BUFO: 0 ;CONSOLE INPUT HEADER HEADER 001711' 000000 000000 BUFO1: 0 001712' 000000 000000 BUFO2: 0 001713' 000000 000000 BUFI: 0 ;CONSOLE OUTPUT HEADER HEADER 001714' 000000 000000 BUFI1: 0 001715' 000000 000000 BUFI2: 0 001716' 000000 000000 ABUF: 0 ;AUXILIARY OUTPUT HEADER HEADER 001717' 000000 000000 ABUF1: 0 001720' 000000 000000 ABUF2: 0 001721' 000000 000000 BUFR: 0 ;BINARY INPUT HEADER HEADER 001722' 000000 000000 BUFR1: 0 001723' 000000 000000 BUFR2: 0 001724' 000000 000000 DTIN: 0 ;DECTAPE INPUT BLOCK 001725' 000000 000000 DTIN1: 0 001726' 000000 000000 0 001727' 000000 000000 DTIN2: 0 001730' 000000 000000 DTOUT: 0 ;DECTAPE OUTPUT BLOCK 001731' 000000 000000 DTOUT1: 0 001732' 000000 000000 0 001733' 000000 000000 0 000052 TTYL=52 ;TWO TTY BUFFERS IFE K,< BUFL=406 ;TWO DTA BUFFERS FOR LOAD> 000203 IFN K,< BUFL=203 ;ONE DTA BUFFER FOR LOAD> 000203 ABUFL=203 ;ONE DTA BUFFER FOR AUX DEV 001734' TTY1: BLOCK TTYL ;TTY BUFFER AREA 002006' BUF1: BLOCK BUFL ;LOAD BUFFER AREA 002211' AUX: BLOCK ABUFL ;AUX BUFFER AREA 002414' ZEROS: REPEAT 4,<0> 002414' 000000 000000 002415' 000000 000000 002416' 000000 000000 002417' 000000 000000 IFN RPGSW,<CTLIN: BLOCK 3 CTLNAM: BLOCK 3 CTLBUF: BLOCK 203+1 > 1KLOAD - LOADS MACROX PAGE 41 DICK GRUEN: V25 3 AUG 68 040000 IOBKTL=40000 400000 IOIMPM=400000 200000 IODERR=200000 100000 IODTER=100000 020000 IODEND=20000 740000 IOBAD=IODERR+IODTER+IOBKTL+IOIMPM INTERN PWORD,DTIN,DTOUT,LDEND INTERN WORD,LD,BEG,PDLST,LOAD INTERN CRLF,TYPE,PMS,PRMAP INTERN F,P,X,H,S,R,B,N,T,V,W,C,E,Q,A,D EXTERN JOBDDT,JOBFF,JOBSA,JOBREL,JOBSYM,JOBUSY,JOB41 ;END HERE IF 1K LOADER REQUESTED. 002420' IFN K, <LITS: LIT 002420' 444566 435062 002421' 656460 435462 002422' 545741 444562 002423' 251656 000000 002424' 530043 576245 002425' 435041 515600 002426' 545142 240000 002427' 200500 002426' 002430' 202500 001724' 002431' 260740 000626' 002432' 621000 000002 002433' 254000 000527' 002434' 545142 242000 002435' 525742 444164 002436' 624151 440000 002437' 077777 777777 002440' VAR 000000' LDEND: END LD NO ERRORS DETECTED PROGRAM BREAK IS 002440 8K CORE USED 1KLOAD - LOADS MACROX PAGE 42 SYMBOL TABLE 000456 A 000016 INT ABUF 001716' ABUF1 001717' ABUF2 001720' ABUFL 000203 ALLFLG 000001 SPD ASW 000100 SPD AUX 002211' AUXSWE 040000 SPD AUXSWI 020000 SPD B 000006 INT B.C 001700' BEG 000000' INT BLTSET 000251' BLTSYM 000000 BUF1 002006' BUFI 001713' BUFI1 001714' BUFI2 001715' BUFL 000203 BUFO 001710' BUFO1 001711' BUFO2 001712' BUFR 001721' BUFR1 001722' BUFR2 001723' C 000013 INT CALLEX 000007' CDDTGT 000005 SPD CDDTOU 000003 SPD CEXIT 000012 SPD CHAIN3 000350' CHN5 000001 CHNBLT 000014 CHNC 000307' CHNERR 000010 CHNR 000310' CHNSYM 001110' COMFLG 000004 SPD COMM 001626' COMSAV 001630' CPOPJ1 001233' CRLF 001600' INT CRLFLF 001576' CSETDD 000002 SPD CSW 000001 SPD CTLSET 000004' D 000007 INT DDSW 004000 SPD DISPL 000005 DSW 100000 SPD DSYMSW 001000 SPD 1KLOAD - LOADS MACROX PAGE 42-1 SYMBOL TABLE DTIN 001724' INT DTIN1 001725' DTIN2 001727' DTOUT 001730' INT DTOUT1 001731' E 000014 INT EOF 000631' EOF1 000632' EOF2 000633' ERRP41 001520' ERRP8 001540' ERRPT 001462' ERRPT0 001465' ERRPT1 001467' ERRPT2 001503' ERRPT3 001507' ERRPT4 001517' ERRPT5 001524' ERRPT6 001525' ERRPT7 001541' ERRPT8 001526' ERRPT9 001543' ESW 000002 SPD EXEQSW 002000 SPD EXPAND 000000 F 000000 INT F.C 001672' F.I 001701' F4LIB 010000 SPD FCONSW 000020 SPD FCRLF 001577' FIXW 001060' FIXWL 001067' FIXWP 001050' FSCN 000634' FSCN1 000652' FSCN2 000655' FSW 000010 SPD FULLC 001141' FULLSW 000200 SPD H 000003 INT HIGH 001145' HIGH0 001143' HIGH3 001152' IAD2 001375' ILC 001205' ILD 000515' ILD1 000522' ILD2 000527' ILD3 000535' ILD4 000541' ILD5 000547' ILD6 000525' 1KLOAD - LOADS MACROX PAGE 42-2 SYMBOL TABLE ILD9 000543' IMD3 001400' IOBAD 740000 IOBKTL 040000 IODEND 020000 IODERR 200000 IODTER 100000 IOIMPM 400000 IOWDP 000013 IOWDPP 000363' ISAFLG 000002 SPD ISW 020000 SPD JOB41 000330' EXT JOBBLT 000134 SPD JOBCHN 000131 SPD JOBDDT 000331' EXT JOBFF 000516' EXT JOBPRO 000140 SPD JOBREL 001121' EXT JOBSA 000332' EXT JOBSYM 000327' EXT JOBUSY 000247' EXT K 000001 SPD LD 000000' INT LD2 000042' LD2B 000050' LD2BA 000054' LD2D 000057' LD2DA 000057' LD2Q 000042' LD3 000063' LD3A 000100' LD3AA 000066' LD4 000110' LD5 000115' LD5A 000127' LD5B 000134' LD5B1 000137' LD5C 000145' LD5C1 000165' LD5D 000201' LD5E 000203' LD5E1 000205' LD5E2 000215' LD5E3 000225' LD5E5 000212' LD6 000372' LD6A 000365' LD6A1 000370' LD6B 000376' LD6C 000430' LD6D 000433' LD7 000437' 1KLOAD - LOADS MACROX PAGE 42-3 SYMBOL TABLE LD7A 000442' LD7B 000446' LD7C 000452' LD7D 000460' LD8 000465' LD9 000476' LDAC 000000 LDDT 000614' LDDT0 000616' LDDT1 000622' LDDT2 000626' LDDT3 000627' LDDTX 000613' LDEND 002440' INT LDF 000656' LIB 000572' LIB1 000575' LIB2 000577' LIB3 000605' LIBF 000557' LIBF1 000564' LIBF2 000565' LIBSW 004000 SPD LITS 002420' LOAD 000657' INT LOAD1 000660' LOAD1A 000661' LOAD2 000676' LOAD3 000703' LOAD4 000704' LOAD4A 000704' LOCD 001211' LOSEBI 000006 LRAID 000610' LRAIDX 000607' LSTPT 001624' MDG 001631' N 000001 INT NAME 001162' NAME1 001170' NAME2 001201' NOEX 000275' NSW 200000 SPD NUTS 000002' P 000017 INT PDLPT 001625' PDLST 001632' INT PDSAV 001627' PMS 001332' INT PMS2 001350' PMS3 001356' PMS4 001372' PP 000000 1KLOAD - LOADS MACROX PAGE 42-4 SYMBOL TABLE PPDL 000060 SPD PRMAP 001261' INT PRMAP1 001301' PRMAP2 001316' PRMAP3 001327' PRMAP4 001330' PRMAP5 001332' PRNAM 001406' PRNAM0 001404' PRNAM1 001405' PRNAME 001433' PRNUM 001407' PRNUM0 001410' PRNUM1 001412' PRNUM2 001417' PROG 000710' PROG1 000722' PRQ 001553' PRWORD 001235' PWORD 001454' INT PWORD1 001455' PWORD2 001456' Q 000015 INT R 000005 INT RCNUM 001420' REMSYM 001215' REWSW 002000 SPD RPGSW 000000 RWORD 001243' RWORD1 001245' RWORD2 001251' RWORD3 001255' S 000004 INT SAS1 000234' SASYM 000227' SDEF 001226' SDEF1 001227' SDEF2 001231' SE3 001623' SFULLC 001132' SKIPSW 000004 SPD SLASH 000100 SPD SLIBSW 000400 SPD SP1 001430' SPACE 001431' SPACES 001427' SPT 001436' SREQ 001224' SSW 400000 SPD START 001157' SVA 001001' SYM 000725' SYM1 000741' 1KLOAD - LOADS MACROX PAGE 42-5 SYMBOL TABLE SYM1A 000755' SYM1B 000757' SYM1C 000761' SYM1D 000762' SYM2 000770' SYM2A 001002' SYM2B 000771' SYM2C 001000' SYM2W 001117' SYM2W1 000775' SYM2WA 001123' SYM3 001006' SYM3A 001035' SYM3A1 001042' SYM3B 001043' SYM3X 001031' SYM3X1 001016' SYM3X2 001027' SYM4 001125' SYM4A 001130' SYMFIX 001072' SYMPT 000730' SYMSW 040000 SPD T 000010 INT TTY1 001734' TTYL 000052 TYPE 001603' INT TYPE2 001604' TYPE3 001615' V 000011 INT W 000012 INT WORD 001560' INT WORD1 001562' WORD2 001564' X 000002 INT ZEROS 002414' 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 11:23:08 File: DSKB1 :PIP .LST [8,200] Created: 20-April-1967 11:19:00 Printed: 24-April-1978 11:22:30 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:1722 File will be deleted after printing PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 1 VJC/PMH/AK-DAG/DMN 8-JUL-70 00010 TITLE PIP V.030 MOD SANDERS/DBP 19-AUG-71 00020 SUBTTL VJC/PMH/AK-DAG/DMN 8-JUL-70 00040 ;PERIPHERAL INTERCHANGE PROGRAM 00050 ;"COPYRIGHT 1968, 1969, DIGITAL EQUIPMENT CORP.,MAYNARD,MASS.,U.S.A. 000030 00070 VPIP==30 ;VERSION NUMBER 000005 00080 SVER==5 ; SANDERS VERSION 00110 ;WCH==0 PIP IS ASSEMBLED FOR PDP-10 AND ASSUMES NEW FORMAT DECTAPES. 00120 ;WCH==1 PIP IS ASSEMBLED FOR PDP-6 AND ASSUMES OLD FORMAT DECTAPES. 00140 ;DISK30==0 PIP IS ASSEMBLED TO RUN WITH 10/40, 10/50 MONITOR SYSTEMS. 00150 ;DISK30==1 PIP IS ASSEMBLED TO RUN WITH 10/30 DISK SYSTEM. 00170 ;BLOC0==0 PIP ALLOWS COPYING OF BLOCK0 (DECTAPE). 00180 ;BLOC0==1 PIP WILL NOT ALLOW BLOCK0 TO BE COPIED. 00200 ;RIMSW==0 /Y SWITCH OPTION UNAVAILABLE. (ALSO UNAVAILABLE FOR OLD FORMAT DECTAPES) 00210 ;RIMSW==1 /Y SWITCH OPTION AVAILABLE. 00230 ;FTDSK==0 NON DSK SYSTEM.NO CCL.SAVES CORE ON 10/40 00240 ;FTDSK==1 10/50 DSK SYSTEM,ALSO 10/30 DSK SYSTEM PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 2 VJC/PMH/AK-DAG/DMN 8-JUL-70 00280 ;CONDITIONAL ASSEMBLY SWITCH SETUP (NORMAL CONFIGURATION) 00290 ;--------------------------------- 00310 IFNDEF WCH, <WCH==0> 00320 IFNDEF DISK30, <DISK30==0> 00330 IFNDEF BLOC0, <BLOC0==0> 00340 IFNDEF FTDSK, <FTDSK==0> 00350 IFN WCH, <RIMSW==0> 00360 IFNDEF RIMSW, <RIMSW==0> 00370 IFNDEF K, <K==0> 000124 00420 LOC 124 000124 000000 000000 00430 PIP1 ;SET REENTER ADDRESS 000000' 00440 RELOC 000137 00450 LOC 137 000137 000005 000030 00460 XWD SVER,VPIP 000000' 00470 RELOC 00500 MLON 00510 IFDEF SALL, <SALL> PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 3 VJC/PMH/AK-DAG/DMN 8-JUL-70 00540 EXTERN JOBFF,JOBSA,JOBREL 00560 ;FLAG ASSIGNMENTS (RIGHT HALF) 000001 00580 LINE==1 ;ASCII LINE MODE PROCESSING 000002 00590 BMOD==2 ;BINARY PROCESSING 000004 00600 TBMOD==4 ;SUPPRESS TRAILING SP, CHANGE MULTIPLE SP TO TABS 000010 00610 DFLG==10 ;DELETE FILES MODE 000020 00620 LFLG==20 ;LIST DIRECTORY 000040 00630 NSMOD==40 ;IGNORE INPUT SEQUENCE NUMBERS 000100 00640 RFLG==100 ;RENAME FILE MODE 000200 00650 SQMOD==200 ;GENERATE SEQUENCE NUMBERS 000400 00660 STS==400 ;END OF LINE SEEN, OUTPUT SEQUENCE NUMBER NEXT 001000 00670 SPMOD==1000 ;SUPPRESS TRAILING SPACES 002000 00680 XFLG==2000 ;COPY DECTAPE MODE 004000 00690 ZFLG==4000 ;CLEAR DECTAPE DIRECTORY 010000 00700 SUS==10000 ;SEQUENCE NUMBER GENERATION IN PROGRESS 020000 00710 SPOK==20000 ;SPACE WAS LAST CHARACTER 040000 00720 ESQ==40000 ;STOP OUTPUTTING SEQ NUM, RESUME OUTPUTTING DATA 100000 00730 SNI==100000 ;DO NOT INCREMENT SEQUENCE NUMBER 200000 00740 MTFLG==200000 ;MTA REQUEST RECEIVED 400000 00750 OSFLG==400000 ;GENERATE SEQ. NOS. INCR. BY ONE 00770 ;FLAG ASSIGNMENTS (LEFT HALF) 000001 00790 OFLG==1 ;BLOCK 0 COPY 000002 00800 RIMFLG==2 ;RIM FORMAT INPUT /OUT TO DTA. ILLEG IF RIMSW==0,OR WCH==1 000004 00810 PFLG==4 ;FORTRAN PROGRAM OUTPUT FORMAT CONVERSION 000010 00820 PCONV==10 ;COLUMN 1 CONVERSION IN PROGRESS 000020 00830 NEWFIL==20 ;NEW FILE JUST INITIATED 000040 00840 CHKFLG==40 ;PARENTHESES CHECK MODE 000100 00850 IFLG==100 ;SELECT IMAGE MODE 000200 00860 GFLG==200 ;KEEP GOING IF THERE ARE I/O ERRORS 000400 00870 IBFLG==400 ;SELECT IMAGE BINARY MODE 001000 00880 JFLG==1000 ;NON-STANDARD MODE PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 4 VJC/PMH/AK-DAG/DMN 8-JUL-70 00900 ;AUXFLG ASSIGNMENTS (LEFT HALF) 000001 00920 QFLG==1 ;PLEASE PRINT SWITCH SET 000002 00930 NSPROT==2 ;NON-STANDARD DISK OUTPUT PROTECTION 000004 00940 SBIN==4 ;36-BIT PR. ON REL. ETC. FILES 000020 00950 NOMORE==20 ;IGNORE ANY SWITCHES BUT MTA FROM NOW ON 000040 00960 CDRFLG==40 ;CONVERT COLS 73-80 TO SPACES + /C 000100 00970 INFOFL==100 ;FLAG USED BY ERR3A: 000200 00980 RSDCFL==200 ;USED FOR MERGING FILES, ==1 IF FILE HAS EXTENSION 00990 ;REL,SAV,DMP,CHN OR OTHERWISE == 0 000400 01000 FRSTIN==400 ;THIS IS THE FIRST INPUT FILE (USED IN FILE 01010 ;MERGE COMMAND) == 0 FOR FIRST INPUT 01030 ;MTAREQ ASSIGNMENTS (RIGHT HALF) 000001 01050 MTAFLG==1 ;MTA ADVANCE ONE FILE 000002 01060 MTBFLG==2 ;MTA BACKSPACE ONE FILE 000004 01070 MTTFLG==4 ;MTA SKIP TP LOGICAL EOT 000010 01080 MTWFLG==10 ;MTA REWIND 000020 01090 MTFFLG==20 ;MTA MARK EOF 000040 01100 MTUFLG==40 ;MTA REWIND AND UNLOAD 000100 01110 MTDFLG==100 ;MTA ADVANCE ONE RECORD 000200 01120 MTPFLG==200 ;MTA BACKSPACE ONE RECORD 000400 01130 MT8FLG==400 ;MTA SET 800 B.P.I. 001000 01140 MT5FLG==1000 ;MTA SET 556 B.P.I. 002000 01150 MT2FLG==2000 ;MTA SET 200 B.P.I. 004000 01160 MTEFLG==4000 ;MTA SELECT EVEN PARITY 01180 ;AUXFLG ASSIGNMENTS (RIGHT HALF) 000001 01200 REDFLG==1 ;==1 IF ANY FILES ARE INPUT (OTHER THAN DIRECTORIES) 000002 01210 SYSFLG==2 ;DEVICE IS SYS 000004 01220 SYSLST==4 ;LAST DEVICE WAS SYS 000010 01230 LPTOUT==10 ;LPT OUTPUT 000020 01240 FFLG==20 ;LIST SHORT DISK DIRECTORY 000040 01250 ONEOUT==40 ;ONE OUTPUT FILE INITIALIZED 000100 01260 CDRIN==100 ;CARDS IN 000200 01270 MTAOUT==200 ;OUTPUT TO MTA 000400 01280 MTAIN==400 ;INPUT FROM MTA 001000 01290 TTYIN==1000 ;INPUT FROM TTY 002000 01300 READ1==2000 ;LOOK FOUND NEW INPUT FILE, NO READ YET. 004000 01310 DTAOUT==4000 ;OUTPUT TO DTA 010000 01320 DSKOUT==10000 ;OUTPUT TO DSK 020000 01330 DTAIN==20000 ;INPUT FROM DTA 040000 01340 DSKIN==40000 ;INPUT FROM DSK 100000 01350 TTYOUT==100000 ;OUTPUT TO TTY 200000 01360 PPTIN==200000 ;INPUT FROM PTR 400000 01370 PPTOUT==400000 ;OUTPUT TO PTP PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 5 VJC/PMH/AK-DAG/DMN 8-JUL-70 01390 ;CALFLG ASSIGNMENTS (RIGHT HALF) FOR DESCRIBING A BLOCK OF INFORMATION 01400 ;FOUND BY THE COMMAND SCANNER. 000001 01420 FNEX==1 ;==1 WHEN FN.EX==*.*, *.EXT, FN.* (WHEN MORE 01430 ;THAN ONE FN.EX IS IMPLIED). 000002 01440 MATEX==2 ;FILE EXTENSIONS MUST MATCH 000004 01450 MATFN==4 ;FILE NAMES MUST MATCH 000010 01460 NEWDEV==10 ;A NEW INPUT DEVICE WAS GIVEN 000020 01470 NEWPP==20 ;A NEW #P-P WAS GIVEN 000040 01480 ASTFLG==40 ;FLAG SET WHEN FILE NAMED IN CS FOUND 01490 ;BY LOOK ROUTINE EVEN IF FN OR EXT =* 000100 01500 DEV==100 ;DEVICE NAME INDICATOR 000200 01510 DVSWTH==200 ;OUTPUT DEVICE SEEN 000400 01520 NSWTCH==400 ;INDICATES NULL NAME 001000 01530 SSWTCH==1000 ;LEFT ARROW SEEN 002000 01540 LISTTY==2000 ;LIST TO TTY 004000 01550 TMPI==4000 ;INPUT DEVICE TMPCOR SEEN 010000 01560 TMPO==10000 ;OUTPUT DEVICE TMPCOR 020000 01570 RXFLG==20000 ;(RX) SEEN 000037 01590 ALLCLF==FNEX!MATEX!MATFN!NEWDEV!NEWPP 01610 ;DEVICE CHANNEL ASSIGNMENTS 000001 01630 CON==1 ;COMMAND INPUT CHANNEL 000002 01640 OUT==2 ;OUTPUT DEVICE 000003 01650 IN==3 ;INPUT DEVICE 000004 01660 TAPE==4 ;MTA POSITIONING 000005 01670 DIR==5 ;DISK DIR. READ 000006 01680 BLKIN==6 ;INPUT FOR 10/30 DISK FILES 000007 01690 DTDIR==7 ; DECTAPE DIR. READ(FOR PPN) 01710 ;ACCUMULATOR ASSIGNMENTS 000001 01730 T1=1 ;GENERAL PURPOSE 000002 01740 T2=2 ;G.P. 000003 01750 T3=3 ;G.P. 000004 01760 CHR=4 ;INPUT CHARACTER 000005 01770 P=5 ;PUSHDOWN POINTER 000006 01780 FLAG=6 ;FLAG REGISTER 000007 01790 T4=7 ;G.P. 000010 01800 IOS=10 ;IO STATUS BITS 000011 01810 T5=11 ;G.P. 000012 01820 T6=12 ; G.P. 000013 01830 AUXFLG=13 ;AUXILIARY FLAG REGISTER 000014 01840 T7=14 ;G.P. 000015 01850 DOUT=15 ;DIVIDED NO. FOR OUTPUT 000016 01860 DOUT1=16 ;REMAINDER, DOUT+1 000017 01870 CALFLG=17 ;MORE FLAGS PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 6 VJC/PMH/AK-DAG/DMN 8-JUL-70 01900 ;MISCELLANEOUS PARAMETERS 400000 01920 WRTLOK==400000 ;WRITE LOCK (DECTAPE) /IMPROPER I/O 040000 01930 BIGBLK==40000 ;BLOCK TOO LARGE 000002 01940 INBIT==2 ;DEVCHR BIT FOR DEV CAN DO INPUT 000001 01950 OUTBIT==1 ;DEVCHR BIT FOR DEV CAN DO OUTPUT 020000 01960 EOFBIT==20000 ;END OF FILE 002000 01970 EOTBIT==2000 ;END OF TAPE 000004 01980 DTABIT==4 ;DEVCHR BIT FOR DECTAPE IDENTIFICATION 000001 01990 INHIB==1 ;OUTPUT RELEASE INHIBIT BIT 000010 02000 TABSP==10 ;SPACES PER TAB 000200 02010 PTRBIT==200 ;DEVCHR BIT FOR PTR 000400 02020 PTPBIT==400 ;DEVCHR BIT FOR PTP 200000 02030 DSKBIT==200000 ;DEVCHR BIT FOR DSK 000020 02040 MTABIT==20 ;DEVCHR BIT FOR MTA 040000 02050 LPTBIT==40000 ;DEVCHR BIT FOR LPT 000010 02060 TTYBIT==10 ;DEVCHR BIT FOR TTY 100000 02070 CDRBIT==100000 ;DEVCHR FOR CDR 000200 02080 DENS2==200 ;MTA 200 BPI 000400 02090 DENS5==400 ;MTA 556 BPI 000600 02100 DENS8==600 ;MTA 800 BPI 001000 02110 PARE==1000 ;MTA EVEN PARITY 004000 02120 LDP==4000 ;MTA LOAD POINT STATUS 000020 02130 HPAGE==20 02150 ;MACRO DEFINITIONS 02170 DEFINE SKIP (J)<JRST .+1+'J> 02190 DEFINE LSTLIN (Z),< 02200 SKIPA T1,[POINT 7,Z] 02210 PUSHJ P,PUT 02220 ILDB CHR,T1 02230 IFN WCH,<PUSHJ P,CCASE> 02240 JUMPN CHR,.-2> 02260 DEFINE ERRPNT (X),< 02270 JSP T1,PTEXT 02280 ASCIZ X> 02300 DEFINE ERRPN2 (X),< 02310 JSP T1,PTEXT2 02320 ASCIZ X> 02340 DEFINE ERRPNX (X),< 02350 JSP T1,PRETXT 02360 ASCIZ X> 000000' 02390 LOW: PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 7 VJC/PMH/AK-DAG/DMN 8-JUL-70 02420 ;ASCII CHARACTERS 000015 02440 CR==15 ;CARRIAGE RETURN 000012 02450 LF==12 ;LINE FEED 000014 02460 FF==14 ;FORM-FEED 000033 02470 ALTMOD==33 ;NEWEST ALTMODE 000175 02480 ALT175==175 ;OLDEST ALTMODE 000176 02490 ALT176==176 ;OLDER ALTMODE 000137 02500 LA==137 ;LEFT ARROW 000032 02510 CZ==32 ;CONTROL Z 000021 02520 XON==21 ;^Q,START TTY PTR 000023 02530 XOFF==23 ;^S,STOP TTY PTR MODE 000054 02540 COMMA==54 000056 02550 PERIOD==56 ;PERIOD 000072 02560 COLON==72 000040 02570 SPACE==40 000177 02580 DEL==177 ;DELETE,RUBOUT,REPEAT MOD.35 000011 02590 TAB==11 ;TAB 02620 ;CALLI DEFINITIONS 02640 OPDEF RESET [CALLI 0] 02650 OPDEF DEVCHR [CALLI 4] 02660 OPDEF CORE [CALLI 11] 02670 OPDEF EXIT [CALLI 12] 02680 OPDEF UTPCLR [CALLI 13] 02690 OPDEF DATE [CALLI 14] 02700 OPDEF MSTIME [CALLI 23] 02710 OPDEF GETPPN [CALLI 24] 02720 OPDEF PJOB [CALLI 30] 02730 OPDEF RUN [CALLI 35] 02740 OPDEF GETTAB [CALLI 41] 02750 OPDEF TMPCOR [CALLI 44] 02760 OPDEF DSKCHR [CALLI 45] 02770 OPDEF JOBSTR [CALLI 47] 02780 OPDEF DEVPPN [CALLI 55] 02790 OPDEF WAIT [MTAPE 0] 02810 ;EXTENDED LOOKUP PARAMETERS 000005 02830 RBSIZ==5 ;WRITTEN FILE LENGTH 000017 02840 RIBSTS==17 ;STATUS BITS PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 8 VJC/PMH/AK-DAG/DMN 8-JUL-70 000000' 200000 004665' 02890 PIP1: MOVE 0,[LOW,,LOW+1] 000001' 402000 000000' 02900 SETZM LOW 000002' 251000 004665' 02910 BLT 0,LOWTOP 000003' 205000 637163 02920 MOVSI (SIXBIT /SYS/) 000004' 047000 000055 02930 DEVPPN ;FIND PP OF DEVICE SYS 000005' 200000 003733' 02940 MOVE PP13 ;ASSUME 1,,3 IF NOT LEVELD 000006' 202000 004037' 02950 MOVEM SYSPP ;SAVE AS SYS PP 02960 IFN FTDSK,< 02970 MOVE [XWD 17,11] ;STATES WORD 02980 GETTAB ;GET IT 02990 SETZ ;ERROR RETURN 03000 TLNN (7B9) ;TEST FOR LEVEL D 03010 TDZA ;NOT LEVEL D 03020 HRROI -2 ;THIS IS LEVEL D 03030 MOVEM LEVEL ;SAVE > 000007' 554040 000000* 03040 IFE FTDSK,<HLRZ T1,JOBSA ;NO DSK SO USE JOBFF> 03050 IFN FTDSK,<MOVEI T1,DSKDR ;ASSUME NO DISK FOR TEST, LOC OF DSK RTNS 03060 MOVSI 0,(SIXBIT /DSK/) 03070 DEVCHR ;DEVCHR REQUEST: IS THERE A DSK 03080 JUMPE 0,P1 ;0 IF NO DISK: USE DSKDR 03090 MOVE T1,JOBFF ;DISK: PREPARE TO SAVE C(JOBFF) 03100 HRRZ T2,JOBREL ;HIGHEST REL LOC AVAILABLE TO USER 03110 CAIL T2,6000 ;CURRENT SIZE 4K 03120 JRST P1 ;YES 03130 MOVEI T2,7777 ;NO. EXPAND TO 4K 03140 HRRZM T1,SVJBFF ;SAVE JOBFF SO BUFFERS CAN BE CREATED 03150 CORE T2, ;CORE UUO 03160 JRST DERR7 ;CORE UNAVAILABLE> 000010' 552040 004016' 03170 P1: HRRZM T1,SVJBFF ;SAVE JOBFF SO BUFFERS CAN BE CREATED 000011' 254000 000012' 03180 JRST PIP 03200 IFN FTDSK,< 03210 DERR7: ERRPNT </?4K needed/> 03220 EXIT ;EXIT TO MONITOR> PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 9 VJC/PMH/AK-DAG/DMN 8-JUL-70 000012' 047000 000000 03250 PIP: RESET ;REINITIALIZE WHEN RESTARTED MANUALLY 03260 ;NEW COMMAND STRING SCAN STARTS HERE 000013' 03270 PIP2: 000013' 265440 000541' 03280 PIP2A: JSP T5,INICN1 ;INITIALIZE THE TTY AND PDL 000014' 201000 000015 03290 MOVEI 0,CR ;TYPE CR 000015' 136000 003757' 03300 IDPB 0,TFO+1 000016' 201000 000012 03310 MOVEI 0,LF ;AND LF 000017' 136000 003757' 03320 IDPB 0,TFO+1 000020' 201000 000052 03330 MOVEI 0,"*" ;TYPE ASTERISK****** 000021' 136000 003757' 03340 IDPB 0,TFO+1 ;READY TO ACCEPT 000022' 067040 000000 03350 OUTPUT CON, ;COMMAND FROM TTY 000023' 402000 004026' 03360 PIP2B: SETZM TOTBRK ;CLEAR PAREN COUNTER 000024' 201000 000010 03370 MOVEI 0,TABSP ;SPACES PER TAB 000025' 202000 004027' 03380 MOVEM 0,TABCT ;INITIALIZE TAB COUNT 000026' 200000 003721' 03390 MOVE 0,ZRO ;ASCII /00000/ 000027' 202000 004014' 03400 MOVEM 0,SQNUM ;INITIALIZE SEQUENCE NUMBERS 000030' 071040 000000 03410 RELEAS CON, ;RELEASE TTY FOR USE AS IN-OUT DEVICE 000031' 403300 004040' 03430 MAINA1: SETZB FLAG,FILNAM ;INITIALIZE FOR FIRST/NEXT COMMAND STRING 000032' 403540 004637' 03440 SETZB AUXFLG,DEVICE 03450 IFN FTDSK,<HRRZI 0,(SIXBIT /SYS/) ;SYSTEM DIRECT DEV, DSK/DTA 03460 HRLZM 0,ADSK ;PUT IN SYSTEM DEVICE> 000033' 200000 004666' 03470 MOVE 0,[XWD FILNAM,FILNAM+1] ;SET PROJECT, PROG NO. 000034' 251000 004136' 03480 BLT 0,AB ;ZERO OUT FILNAM - AB 000035' 400740 000000 03490 SETZ CALFLG, ;CLEAR OTHER FLOGS 000036' 200140 000055' 03500 MOVE T3,COMPTR ;BYTE POINTER FOR STORING CS IN BUFFER 03520 ;ACCUMULATE CS CHARS IN COMBUF ALLOW LONG CS ONLY FOR TTY COMMAND 000037' 260240 001352' 03540 COMSTO: PUSHJ P,GETTA ;GET CS CHAR 000040' 350340 004131' 03550 AOS T4,COMCNT ;COUNT CHARS 000041' 303340 000310 03560 CAILE T4,^D200 ;ALLOW UP TO 200 CHARS 000042' 254000 002045' 03570 JRST ERR6B ;MORE THAN 200 CHARS 000043' 306000 000032 03580 CAIN 0,CZ ;CHECK FOR ^Z 000044' 260240 001415' 03590 COMASK: PUSHJ P,GETEN2 ;SET ^Z IN 0 000045' 136000 000003 03600 IDPB 0,T3 ;STORE IN COMBUF 000046' 332000 004057' 03610 SKIPE COMEOF ;END-OF-FILE SET? 000047' 254000 000056' 03620 JRST COMPRO ;YES, PROCESS CS IN COMBUF 000050' 307000 000015 03630 CAIG 0,CR ;NOT EOF 000051' 305000 000012 03640 CAIGE 0,LF ;LF,VT,FF,CR? 000052' 306000 000033 03650 CAIN 0,ALTMODE ;NO, $? 000053' 254000 000044' 03660 JRST COMASK ;YES 000054' 254000 000037' 03670 JRST COMSTO ;NO, KEEP STORING 000055' 440700 004060' 03690 COMPTR: POINT 7,COMBUF PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 10 VJC/PMH/AK-DAG/DMN 8-JUL-70 03720 ;******************************************************************** 03730 ;BEGIN SCAN OF DESTINATION PORTION OF COMMAND STRING 000056' 03740 COMPRO: 03750 IFN FTDSK,< 03760 MOVSI 0,(SIXBIT/DSK/) 03770 DEVCHR ;IS THERE A DSK? 03780 JUMPE 0,COMPRP 03790 MOVSI 0,(SIXBIT /DSK/) ;MAKE DEFAULT DEVICE 03800 MOVEM 0,DEVICE ;TENTATIVELY DSK> 000056' 071040 000000 03820 COMPRP: RELEASE CON, ;RELEASE TTY 000057' 200000 000055' 03830 MOVE 0,COMPTR ;INITIALIZE POINTER 000060' 202000 004132' 03840 MOVEM 0,COMPTS ;TO PICK UP CS FROM COMBUF 000061' 260240 000557' 03850 PUSHJ P,NAME ;GO SCAN DESTINATION PORTION OF COMMAND STRING 000062' 332000 004135' 03860 SKIPE XNAME ;NO SCAN OVERSHOOT ALLOWED 000063' 254000 002040' 03870 JRST ERR6A 000064' 331000 004134' 03880 SKIPL ESWTCH ;11/25/69 END OF CS ? 000065' 254000 000073' 03890 JRST MAINC ;NO 000066' 606740 000400 03900 TRNN CALFLG,NSWTCH ;NON-NULL DESTINATION 000067' 602740 001000 03910 TRNE CALFLG,SSWTCH ;_ NOT SEEN? 000070' 332000 004040' 03920 SKIPE FILNAM ;OR ANYTHING IN FILENAME 000071' 254000 002040' 03930 JRST ERR6A ;YES, ERROR 000072' 254000 000013' 03940 JRST PIP2 ;NO, ALL OK 000073' 200000 004637' 03960 MAINC: MOVE 0,DEVICE ;GET OUTPUT DEVICE NAME 000074' 202000 004634' 03970 MOVEM 0,ODEV ;SAVE DEVICE NAME FOR LATER USAGE 000075' 260240 000506' 03980 PUSHJ P,DEVTST ;SAVE DEVICE TYPE, SET XXXOUT.E.G. DTAOUT 000076' 260240 000466' 03990 PUSHJ P,ABCHK ;CHECK MTA BACKSPACE/ADV VALUES 000077' 260240 000476' 04000 PUSHJ P,PROTK ;CHECK PROTECTION 000100' 200000 004136' 04010 MOVE 0,AB ;MTA VALUE SWITCHES 000101' 202000 004031' 04020 MOVEM 0,ABOUT ;GET MTA CONTROL NUMBERS FO R OUT 000102' 200000 004133' 04030 MOVE 0,AUX 000103' 202000 004032' 04040 MOVEM 0,AUXOUT 000104' 200000 004667' 04050 MOVE 0,[XWD FILNAM,DTON] 000105' 251000 004047' 04060 BLT 0,DTON+3 ;SAVE DESTINATION FILE NAME 04070 IFN FTDSK,<TRNN AUXFLG,DSKOUT ;DISK OUTPUT?> 000106' 402000 004047' 04080 SETZM DTON+3 ;ZERO 4TH WD OF DIRECTORY ENTRY PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 11 VJC/PMH/AK-DAG/DMN 8-JUL-70 000107' 620740 001000 04100 M3: TRZ CALFLG,SSWTCH ;TERMINATE DESTINATION FILE SCAN 000110' 402000 004637' 04110 SETZM DEVICE ;DONT CARRY OVER INPUT DEVICE 04120 IFN FTDSK,<MOVSI 0,(SIXBIT/DSK/) 04130 DEVCHR ;IS THERE A DISK 04140 JUMPE 0,M3A 04150 MOVSI 0,(SIXBIT /DSK/) ;DEFAULT CASE DSK 04160 MOVEM 0,DEVICE ;MUST NOT LET O/DEV. CARRY OVER AS I/DEV.> 000111' 260240 000451' 04170 M3A: PUSHJ P,DESCRP ;GET A UNIT DESCRIPTOR (INPUT). 000112' 607540 000001 04180 TLNN AUXFLG,QFLG;Q? ;SCAN INPUT PORTION OF COMMAND STRING 000113' 254000 000132' 04190 JRST M2 ;NO 000114' 551000 637163 04200 HRRZI 0,(SIXBIT /SYS/) ;YES MAKE INPUT DEVICE SYS 000115' 516000 004637' 04210 HRLZM 0,DEVICE 000116' 516000 004050' 04220 HRLZM DEVA ;SAVE COPY OF INPUT DEVICE 000117' 200000 003727' 04230 MOVE 0,QPIP ;MAKE INPUT FILENAME QPIP 000120' 202000 004040' 04240 MOVEM 0,FILNAM 000121' 205000 120000 04250 MOVSI 0,(SIXBIT /*/) ;DONT RESTRICT QPIP 000122' 202000 004041' 04260 MOVEM 0,FILEX ;EXT TO BEING NULL 000123' 620740 000002 04270 TRZ CALFLG,MATEX ;DON'T MATCH EXTENSIONS 000124' 660540 000002 04280 TRO AUXFLG,SYSFLG ;DEVICE IS SYS 000125' 200000 004037' 04290 MOVE 0,SYSPP ;GET SYS PP 000126' 202000 004043' 04300 MOVEM 0,PP ;AND SET IT 000127' 370000 004134' 04310 SOS ESWTCH ;NO MORE COMMAND STRING 000130' 620540 261500 04320 TRZ AUXFLG,DTAIN+DSKIN+CDRIN+PPTIN+TTYIN+MTAIN 000131' 260240 002132' 04330 PUSHJ P,CHECK1 ;CHECK INPUT DEVICE 000132' 661540 000020 04350 M2: TLO AUXFLG,NOMORE ;NO MORE SWITCHES BUT MTA ALLOWED 000133' 603300 000001 04360 TLNE FLAG,OFLG ;BLOCK 0 COPY? 000134' 254000 003451' 04370 JRST BLOCK0 ;YES 000135' 640300 002100 04380 TRC FLAG,XFLG+RFLG;(RX) 000136' 646300 002100 04390 TRCN FLAG,XFLG+RFLG 000137' 260240 000173' 04400 PUSHJ P,M5 ;YES,(RX) 04410 IFN RIMSW,< 04420 TLNN FLAG,RIMFLG ;RIM OUTPUT? 04430 JRST M1 ;NO 04440 IFE WCH,< 04450 TRNE AUXFLG,PPTOUT ;RIM IS ONLY DTA TO PTP 04460 TRNN AUXFLG,DTAIN!DSKIN!MTAIN 04470 JRST ERR5B> 04480 IFN WCH,<JRST RIMTB >> 000140' 201340 000001 04500 M1: MOVEI T4,1 ;ASCII LINE MODE ASSUMED 000141' 260240 000200' 04510 PUSHJ P,OUTLOOK ;SEE IF OUTPUT DEV MTA 000142' 260240 000154' 04520 PUSHJ P,M4 ;NOT MTA 000143' 603300 001000 04530 TLNE FLAG,JFLG ;NON STARDARD MODE ? 000144' 660340 000100 04540 TRO T4,100 ;TO PUNCH 029 ON CDP 000145' 552340 004633' 04550 HRRZM T4,OMOD ;SET MODE OF OUTPUT DEV 000146' 201340 000001 04560 MOVEI T4,1 000147' 260240 000204' 04570 PUSHJ P,INLOOK ;SEE IF INPUT DEV MTA 000150' 260240 000154' 04580 PUSHJ P,M4 ;NOT MTA 000151' 552340 004636' 04590 HRRZM T4,ININI1 ;SET MODE OF INPUT DEV 000152' 260240 002746' 04600 PUSHJ P,FNSET ;NOW DEVICE, DEVA CORRECT FOR START 000153' 254000 000251' 04610 JRST OMOD1 ;INIT OUTPUT DEVICE PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 12 VJC/PMH/AK-DAG/DMN 8-JUL-70 04640 ;SET MODE IF /I,/B,/H, 000154' 607300 000100 04660 M4: TLNN FLAG,IFLG ;IMAGE BINARY MODE? 000155' 254000 000160' 04670 JRST .+3 ;NO 000156' 660340 000010 04680 TRO T4,10 ;IM. MODE 000157' 620340 000001 04690 TRZ T4,1 ;CLEAR ASCII LINE MODE 000160' 606300 000002 04710 TRNN FLAG,BMOD ;BINARY MODE? 000161' 254000 000164' 04720 JRST .+3 ;NO 000162' 660340 000014 04730 TRO T4,14 ;BIN. MODE 000163' 620340 000001 04740 TRZ T4,1 ;CLEAR ASCII LINE MODE 000164' 603300 000400 04760 TLNE FLAG,IBFLG ;ASCII TO START. IB MODE? 000165' 660340 000013 04770 TRO T4,13 ;YES 000166' 602300 002000 04780 TRNE FLAG,XFLG ;COPY MODE? 000167' 263240 000000 04790 POPJ P, ;YES, DON'T ALTER DATA MODE 000170' 602300 000110 04810 TRNE FLAG,DFLG+RFLG ;DELETE OR RENAME? 000171' 660340 000020 04820 TRO T4,20 ;DIRECTORY WILL BE WRITTEN, DON'T 000172' 263240 000000 04830 POPJ P, ;COMPUTE WORD COUNT MODE NEEDED. 04840 ;FORCE MONITOR TO USE WORD COUNT 04850 ;IN FIRST DATA WORD OF BUFFER 000173' 620300 000100 04870 M5: TRZ FLAG,RFLG ;CLEAR /R FLAG 000174' 660740 020000 04880 TRO CALFLG,RXFLG ;SET (RX) FLAG 000175' 200000 004670' 04890 MOVE 0,[XWD DTON,MATCH] 000176' 251000 004650' 04900 BLT 0,MATCH+1 ;SAVE NAME AND EXT 000177' 263240 000000 04910 POPJ P, ;RETURN PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 13 VJC/PMH/AK-DAG/DMN 8-JUL-70 04930 ;IF OUTPUT DEVICE IS MTA PERFORM ALL PRE-TRANSFER REQUESTS 04940 ;SUCH AS REWIND. IF OUTPUT DEVICE IS MTA, AND THERE IS NO 04950 ;INPUT DEVICE, EXIT. FOR OTHER MTA OUTPUT, PREPARE INIT 04960 ;DENSITY AND PARITY. 000200' 04980 OUTLOOK: 000200' 200140 004031' 04990 MOVE T3,ABOUT ;AB FOR OUTPUT DEV 000201' 200040 004032' 05000 MOVE T1,AUXOUT ;AUX FOR OUTPUT DEV 000202' 201500 003666' 05010 MOVEI T6,INOMTA ;SET TO INIT 000203' 254000 003531' 05020 JRST MT1 ;MTA FOR OUTPUT 05070 ;SAME FOR INPUT DEVICE. 000204' 332140 004040' 05090 INLOOK: SKIPE T3,FILNAM ;IF NO FILENAME 000205' 606300 002000 05100 TRNN FLAG,XFLG ;OR NOT /X 000206' 254000 000217' 05110 JRST INLUK1 ;CONTINUE 000207' 332000 004044' 05120 SKIPE DTON ;IF OUTPUT NAME SET UP 000210' 254000 000217' 05130 JRST INLUK1 ;CONTINUE 000211' 554040 004041' 05140 HLRZ T1,FILEX ;GET EXT 000212' 302040 120000 05150 CAIE T1,(SIXBIT /*/) ;IF EITHER IS * 000213' 316140 003730' 05160 CAMN T3,STAR ;DON'T SET OUTNAME 000214' 254000 000217' 05170 JRST INLUK1 ;BUT JUST CONTINUE 000215' 202140 004044' 05180 MOVEM T3,DTON ;SET OUT NAME 000216' 516040 004045' 05190 HRLZM T1,DTON+1 ;AND EXTENSION 000217' 200140 004136' 05200 INLUK1: MOVE T3,AB ;ADV OR BKSPACE 000220' 200040 004133' 05210 MOVE T1,AUX ;AUX FOR INPUT DEV 000221' 201500 003667' 05220 MOVEI T6,INIMTA ;SET TO INIT 000222' 254000 003531' 05230 JRST MT1 ;MTA FOR INPUT PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 14 VJC/PMH/AK-DAG/DMN 8-JUL-70 05250 ;ROUTINE TO INITIALIZE OUTPUT DEVICE 000223' 200040 004671' 05270 OMODE: MOVE T1,[XWD OBF,IBF] 000224' 202040 004635' 05280 MOVEM T1,ODEV+1 000225' 200040 004015' 05290 MOVE T1,DTJBFF ;JOBFF AFTER 2 TTY BUFS 000226' 202040 000000* 05300 MOVEM T1,JOBFF ;SET UP 000227' 050100 004633' 05320 OPEN OUT,OMOD ;INITIALIZE OUTPUT DEVICE 000230' 254000 001767' 05330 JRST ERR1 ;UNAVAILABLE ERROR 000231' 065100 000001 05340 OUTBUF OUT,1 ;TRY ONE OUTBUFFER FOR SIZE 000232' 250040 000226* 05350 EXCH T1,JOBFF ;JOBFF_DTJBFF+BUFSZ 05360 ;NOTE JOBFF RESET TO DTJBFF 000233' 274040 004015' 05370 SUB T1,DTJBFF ;T1=BUFSZ 000234' 550000 000000* 05380 HRRZ 0,JOBREL ;HIGHEST CORE AVAILABLE 000235' 274000 004015' 05390 SUB 0,DTJBFF ;0=TOTAL CORE AVAILABLE 000236' 240000 777777 05400 ASH 0,-1 ;COMPUTE HOW MANY OUTPUT BUFFERS 000237' 232000 000001 05410 IDIVM 0,T1 ;FIT IN HALF THE AVAILABLE SPACE 000240' 201340 000223' 05420 MOVEI T4,OMODE ;SET RETURN FROM MORCOR 000241' 305040 000001 05430 CAIGE T1,1 ;1 OR MORE THAN 1 FIT? 000242' 254000 000262' 05440 JRST MORCOR ;NO, NEED MORE CORE 000243' 065101 000000 05450 OUTBUF OUT,(T1) ;SET UP OUTPUT BUFFERS 000244' 200000 003746' 05460 MOVE 0,OBF+1 000245' 202000 003741' 05470 MOVEM 0,SVOBF ;SAVE ORIGINAL MODE SETTING 000246' 200000 000232* 05480 MOVE 0,JOBFF 000247' 552000 004017' 05490 HRRZM 0,SVJBF1 ;PREPARE TO RECLAIM INBUFFER SPACE 000250' 263240 000000 05500 POPJ P, 000251' 260240 000223' 05520 OMOD1: PUSHJ P,OMODE ;GO INITIALIZE OUTPUT DEVICE 000252' 626300 004000 05530 TRZN FLAG,ZFLG ;Z COMMAND TYPED? 000253' 254000 000275' 05540 JRST MAINA2 ;NO, 000254' 260240 002212' 05550 PUSHJ P,DTCLR ;YES, GO CLEAR DIRECTORY 000255' 071100 000000 05560 RELEASE OUT, 000256' 071240 000000 05570 RELEASE DIR, 000257' 606740 000400 05580 TRNN CALFLG,NSWTCH ;SEE IF DEVICE WAS TYPED 000260' 254000 000251' 05590 JRST OMOD1 ;YES 000261' 254000 000013' 05600 JRST PIP2 ;GET NEXT COMMAND 000262' 550000 000234* 05620 MORCOR: HRRZ 0,JOBREL ;TRY TO GET 000263' 271000 002000 05630 ADDI 0,2000 ;1K MORE OF CORE 000264' 047000 000011 05640 CORE ;ASK MONITOR FOR 1K CORE 000265' 254000 000267' 05650 JRST OMODER ;NOT AVAILABLE 000266' 254007 000000 05660 JRST (T4) ;GOT IT 000267' 265040 002155' 05680 OMODER: ERRPNT</?Not enough core/> 000270' 376355 772100 000271' 627355 772716 000272' 641014 367744 000273' 624000 000000 000274' 047000 000012 05690 EXIT PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 15 VJC/PMH/AK-DAG/DMN 8-JUL-70 05710 ;MAIN LOOP TO PROCESS INPUT SIDE OF CS 000275' 602300 000110 05740 MAINA2: TRNE FLAG,RFLG+DFLG ;RENAME OR DELETE FILE MODE? 000276' 254000 002432' 05750 JRST DTDELE ;YES./D,/X,OR(DX) 05760 IFN RIMSW,< 05770 TLNE FLAG,RIMFLG ;RIM? 05780 JRST RIMTB ;YES./Y 05790 > 000277' 602300 002000 05800 TRNE FLAG,XFLG ;TRANSFER EVERYTHING MODE? 000300' 254000 002220' 05810 JRST PRECOP ;YES./X 05820 ;LOOP TO COPY ALL FILES BEGINS HERE FROM MAIN2 000301' 606540 000020 05830 MAINA3: TRNN AUXFLG,FFLG ;LIST DSK DIR SHORT? 000302' 602300 000020 05840 TRNE FLAG,LFLG ;LIST DIRECTORY? 000303' 254000 003017' 05850 JRST DTPDIR ;YES./F OR /L 000304' 260240 000426' 05860 PUSHJ P,ININIT ;INITIALIZE INPUT FILE 000305' 602540 020000 05870 TRNE AUXFLG,DTAIN ;DEC TAPE INPUT? 000306' 260240 002701' 05880 PUSHJ P,DTADIR ;INIT DTA DIR 05900 IFN FTDSK,<TRNE AUXFLG,DSKIN ;NO, DISK INPUT? 05910 PUSHJ P,DSKDIR ;OR DSK> 000307' 260240 002566' 05920 MAINA4: PUSHJ P,LOOK ;GET A FILE TO COPY 000310' 254000 000323' 05930 JRST MAINA5 ;NO MORE 000311' 076140 004052' 05940 LOOKUP IN,ZRF 000312' 254000 002003' 05950 JRST ERR3 ;LOOKUP FAILURE 05960 IFN WCH,< 05970 MAINA6: TRNN AUXFLG,DTAIN+DTAOUT 05980 JRST .+5 05990 HLRZ 0,ZRF+1 06000 CAIE 0,(SIXBIT /DMP/) 06010 IFN DISK30,<CAIN 0,(SIXBIT/SVE/)> 06020 IFE DISK30,<CAIN 0,(SIXBIT/SAV/)> 06030 JRST MAINA4 ;DONT COPY DMP OR SAV FILES ON DTA> 000313' 661300 000020 06040 TLO FLAG,NEWFIL 000314' 260240 003353' 06050 PUSHJ P,FILTYP 000315' 602540 000040 06060 TRNE AUXFLG,ONEOUT 000316' 254000 000333' 06070 JRST PSCANA ;OUT HAS BEEN INITIALIZED 06080 IFE WCH,< 000317' 260240 002412' 06090 PUSHJ P,OKBLKS> 000320' 077100 004044' 06100 ENTER OUT,DTON ;CREATE OUTPUT FILE 000321' 254000 002024' 06110 JRST ERR4 ;DIR. FULL OR 0 FILE NAME 000322' 254000 000333' 06120 JRST PSCANA 000323' 626540 000001 06140 MAINA5: TRZN AUXFLG,REDFLG 000324' 254000 001107' 06150 JRST IOERRN ;NEVER READ A FILE 000325' 254000 000411' 06160 JRST MAIN1 PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 16 VJC/PMH/AK-DAG/DMN 8-JUL-70 000326' 602540 201500 06180 PSCANB: TRNE AUXFLG,MTAIN!CDRIN!TTYIN!PPTIN ;ON NON-DIR DEVICE? 000327' 620740 000037 06190 TRZ CALFLG,ALLCLF ;END OF THE ONE OR MANY FILES SPECIFIED 000330' 666540 000040 06200 TRON AUXFLG,ONEOUT ;HAS OUT JUST BEEN INIT? 000331' 067100 000000 06210 OUTPUT OUT, ;YES, AND FIRST FILE IS EOF ONLY, INIT OUT IN 06220 ;CASE NO MORE SOURCE FILES 000332' 254000 000407' 06230 JRST PSCAN5 ;EMPTY FILE, CLOSE INPUT, RETURN FOR MORE 000333' 660540 000001 06250 PSCANA: TRO AUXFLG,REDFLG ;SET FLAG FOR INPUT FILE READ 000334' 260240 001616' 06260 PUSHJ P,INP ;GO READ INPUT FILE 000335' 620540 002000 06270 TRZ AUXFLG,READ1 000336' 260240 002376' 06280 PUSHJ P,TTYZ ;CHECK IF INPUT IS TTY 000337' 602400 020000 06290 TRNE IOS,EOFBIT ;EOF FIRST DATA? 000340' 254000 000326' 06300 JRST PSCANB 000341' 336000 003744' 06310 SKIPN IBF+2 000342' 254000 000333' 06320 JRST PSCANA 000343' 660540 000040 06340 PSCAN: TRO AUXFLG,ONEOUT ;INDICATE ONE OUTPUT FILE INITED 000344' 200000 003723' 06350 MOVE 0,OPTRA ;PRESCAN A LINE, INITIALIZE LINE BUFFER PTR 000345' 202000 004020' 06360 MOVEM 0,OPTR 000346' 402000 004035' 06370 SETZM CDRCNT 000347' 260240 000553' 06380 PUSHJ P,CLRBUF ;CLEAR LINE BUFFER 000350' 664300 000400 06390 TROA FLAG,STS ;START A FRESH LINE 000351' 260240 000756' 06400 PSCAN3: PUSHJ P,PUT ;HERE FOR BINARY DATA 000352' 260240 001462' 06420 PSCAN2: PUSHJ P,GET ;GET CHARACTER 000353' 254000 000376' 06430 JRST PSCAN1 ;END OF FILE RETURN 000354' 616300 004672' 06440 TDNN FLAG,[XWD IFLG+IBFLG,BMOD] ;BIN. OR NO CHAR. PROCESSING 000355' 603540 000004 06450 TLNE AUXFLG,SBIN 000356' 254000 000351' 06460 JRST PSCAN3 ;YES 000357' 200040 004020' 06470 MOVE T1,OPTR 000360' 306200 000177 06480 CAIN CHR,DEL ;VJC 4/16/69 000361' 254000 000352' 06490 JRST PSCAN2 ; STR# 10-2615 000362' 316040 003722' 06500 CAMN T1,OPTMAX ;CHECK LENGTH OF LINE 000363' 254000 001751' 06510 JRST ERR10 ;LINE TOO LONG 000364' 136200 004020' 06520 IDPB CHR,OPTR ;DEPOSIT CHAR. IN LINE BUFFER 000365' 307200 000024 06530 CAIG CHR,24 000366' 305200 000020 06540 CAIGE CHR,20 ;LINE PRINTERR CONTROL CHAR 000367' 254000 000371' 06550 SKIP 1 ;NO 000370' 254000 000374' 06560 JRST PSCAN4 ;YES, TREAT AS END OF LINE 000371' 307200 000014 06570 CAIG CHR,14 000372' 305200 000012 06580 CAIGE CHR,12 ;END OF LINE CHARACTER? 000373' 254000 000352' 06590 JRST PSCAN2 ;NO, SO CONTINUE 000374' 260240 000707' 06600 PSCAN4: PUSHJ P,OUTLBF ;YES, SO DUMP THE LINE BUFFER 000375' 254000 000343' 06610 JRST PSCAN ;SCAN THE NEXT LINE 000376' 135200 004020' 06630 PSCAN1: LDB CHR,OPTR ;PICK UP LAST CHAR. 000377' 306200 000032 06640 CAIN CHR,CZ ;IS IT ^Z 000400' 606540 001000 06650 TRNN AUXFLG,TTYIN ;FROM TTY? 000401' 254000 000404' 06660 JRST PSCAN6 ;NO 000402' 400200 000000 06670 SETZ CHR, ;YES,CLEAR CHAR. 000403' 137200 004020' 06680 DPB CHR,OPTR ;AND REMOVE FROM BUFFER 000404' 260240 000707' 06690 PSCAN6: PUSHJ P,OUTLBF ;DUMP THE REMAINING BUFFER 000405' 602300 002000 06700 TRNE FLAG,XFLG ;COPY MODE? PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 16-1 VJC/PMH/AK-DAG/DMN 8-JUL-70 000406' 254000 002311' 06710 JRST COPY2A ;YES, GO COPY THE NEXT FILE 000407' 070140 000000 06720 PSCAN5: CLOSE IN, 000410' 254000 000307' 06730 JRST MAINA4 PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 17 VJC/PMH/AK-DAG/DMN 8-JUL-70 06750 ;COME HERE AFTER /L,/D,/R ON DISK OR THROUGH COPYING 000411' 071240 000000 06770 MAIN1: RELEAS DIR, ;RELEASE THE DIRECTORY DEVICE 000412' 071140 000001 06780 RELEAS IN,INHIB ;RELEASE THE INPUT DEVICE 000413' 331340 004134' 06790 SKIPL T4,ESWTCH ;MORE COMMAND STRING TO PROCESS? 000414' 254000 000421' 06800 JRST MAIN2 ;YES 06820 ;COME HERE AFTER /D,/R ON DTA. ALSO FROM ABOVE 000415' 070100 000000 06840 MAINB: CLOSE OUT, ;CLOSE THE OUTPUT FILE 000416' 260240 000764' 06850 PUSHJ P,OUTP1 ;CHECK THE FINAL ERROR BITS 06860 IFN FTDSK,<TLNE AUXFLG,NSPROT ;NON-ST. PROT? 06870 TRNN AUXFLG,DSKOUT+DTAOUT ;DISK OUT/ OR DTA 06880 JRST MAINB1 ;NO 06890 LDB 0,PRPTL 06900 DPB 0,PRPTD 06910 RENAME OUT,DTON ;SET UP RENAME REQUEST 06920 JRST DERR6 ;DISK ERROR 06930 MAINB1:> 000417' 071100 000000 06940 RELEAS OUT, ;RELEASE THE OUTPUT DEVICE 000420' 254000 000013' 06950 JRST PIP2 ;PROCESS THE NEXT COMMAND 000421' 260240 000451' 06970 MAIN2: PUSHJ P,DESCRP ;GET THE NEXT INPUT FILE TO PROCESS 000422' 260240 000204' 06980 PUSHJ P,INLOOK 000423' 260240 000154' 06990 PUSHJ P,M4 000424' 552340 004636' 07000 HRRZM T4,ININI1 000425' 254000 000301' 07010 JRST MAINA3 07020 ;END OF LOOP BEGINNING AT MAINA3 PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 18 VJC/PMH/AK-DAG/DMN 8-JUL-70 07040 ;SUBROUTINE TO INITIALIZE THE INPUT FILE 000426' 200040 004017' 07060 ININIT: MOVE T1,SVJBF1 ;SVJBF1=END OF OUTPUT BUFFERS 000427' 202040 000246* 07070 MOVEM T1,JOBFF ;COMPARE OMODE CODE 000430' 201000 003742' 07080 MOVEI 0,IBF 000431' 202000 004640' 07090 MOVEM 0,DEVICE+1 000432' 050140 004636' 07100 OPEN IN,ININI1 000433' 254000 001770' 07110 JRST ERR1A ;NOT AVAILABLE ERROR 000434' 064140 000001 07120 INBUF IN,1 ;TRY ONE INPUT BUFFER FOR SIZE 000435' 250040 000427* 07130 EXCH T1,JOBFF ;HOW MANY INBUFFERS WILL FIT? 000436' 274040 004017' 07140 SUB T1,SVJBF1 000437' 550000 000262* 07150 HRRZ 0,JOBREL 000440' 274000 000435* 07160 SUB 0,JOBFF ;JOBREL-SVJBF1=TOTAL SPACE LEFT 000441' 232000 000001 07170 IDIVM 0,T1 000442' 201340 000426' 07180 MOVEI T4,ININIT ;RETURN FROM MORCOR IS ININIT 000443' 305040 000001 07190 CAIGE T1,1 ;1 OR MORE THAN 1 FITS? 000444' 254000 000262' 07200 JRST MORCOR ;NO, GET MORE CORE 000445' 064141 000000 07210 INBUF IN,(T1) ;SET UP AS MANY BUFFS AS FIT 000446' 200000 003743' 07220 MOVE 0,IBF+1 ;SAVE ORIGINAL MODE 000447' 202000 003740' 07230 MOVEM 0,SVIBF 000450' 263240 000000 07240 POPJ P, PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 19 VJC/PMH/AK-DAG/DMN 8-JUL-70 07260 ;THIS ROUTINE GETS AN INPUT UNIT DESCRIPTOR AND, FOR 07270 ;ADVANCE FILE AND BSPF ON MTA, ENSURES THE VALUE 1 IF NO 07280 ;NUMBER WAS GIVEN. 000451' 402000 004133' 07300 DESCRP: SETZM AUX ;WILL GET ANY MTA REQ. GOING TO AUXFLG. 000452' 622540 000002 07310 TRZE AUXFLG,SYSFLG ;IS THIS DEVICE SYS.? 000453' 660540 000004 07320 TRO AUXFLG,SYSLST ;YES,SET SYS AS LAST DEVICE 000454' 402000 004136' 07330 SETZM AB ;MTA VALUE SWITCHES 000455' 402000 004042' 07340 SETZM PR ;PROTECTION 000456' 402000 004043' 07350 SETZM PP ;PROJ-PROG NUMBER 07360 ;******************************************************************** 000457' 260240 000557' 07370 PUSHJ P,NAME ;GO SCAN INPUT SIDE OF COMMAND STRING 000460' 200040 004042' 07380 MOVE T1,PR ;PROTECTION 000461' 512040 004042' 07390 HLLZM T1,PR ;IGNORE PR FLAG IN RHS FOR INPUT 000462' 620540 261500 07400 TRZ AUXFLG,DTAIN+DSKIN+PPTIN+MTAIN+CDRIN+TTYIN 000463' 260240 002132' 07410 PUSHJ P,CHECK1 ;CHECK UNIT, AND FOR _ 07430 IFN FTDSK,<TRNN AUXFLG,DSKIN ;DSK INPUT? 07440 JRST DESCR1 ;NO 07450 TRNE AUXFLG,SYSFLG ;IS THIS DEVICE SYS? 07460 JRST DESCR1 ;YES 07470 TRNN AUXFLG,SYSLST ;WAS LAST DEVICE? 07480 JRST DESCR1 ;NO 07490 MOVE T2,FNPPNS ;YES, SAVE LAST [P,P] 07500 SKIPE PP ;[P,P] ZERO? 07510 JRST DESCR1 07520 MOVEM T2,PP ;YES, MAKE OLD [P,P] CURRENT [P,P] 07530 MOVEM T2,FNPPN ;RESERVE [P,P]> 000464' 332000 004135' 07540 DESCR1: SKIPE XNAME ;NO OVERSHOOT ALLOWED 000465' 254000 002040' 07550 JRST ERR6A 000466' 554100 004136' 07570 ABCHK: HLRZ T2,AB ;NO RECS/FILES TO BACKSPACE 000467' 326100 000471' 07580 JUMPN T2,.+2 ;IF 0 000470' 201100 000001 07590 MOVEI T2,1 ;GUARANTEE ONE 000471' 506100 004136' 07600 HRLM T2,AB ;SET AB LH 000472' 550100 004136' 07620 HRRZ T2,AB ;NO RECS/FILES TO ADV 000473' 326100 002746' 07630 JUMPN T2,FNSET ;IF 0 000474' 350000 004136' 07640 AOS AB ;GUARANTEE 1 000475' 254000 002746' 07650 JRST FNSET ;FIND OUT DETAILS OF FILENAME PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 20 VJC/PMH/AK-DAG/DMN 8-JUL-70 07680 ;IF A NON-STANDARD OUTPUT PROTECTION IS REQUESTED, SAVE FOR RENAME. 000476' 200040 004042' 07700 PROTK: MOVE T1,PR 000477' 606040 000001 07710 TRNN T1,1 000500' 254000 000504' 07720 JRST PROTK1 000501' 512040 004033' 07730 HLLZM T1,PROTS 000502' 512040 004042' 07740 HLLZM T1,PR 000503' 665540 000002 07750 TLOA AUXFLG,NSPROT 000504' 403040 004042' 07760 PROTK1: SETZB T1,PR 000505' 263240 000000 07770 POPJ P, 07790 ;TEST "DEVICE" TO SEE IF DESTINATION DEVICE IS DTA, DSK, PTP, LPT, TTY, MTA 07800 ;IF ANY IS TRUE, SET RELEVANT BIT IN AUXFLG. "0" CONTAINS 07810 ;"DEVICE" ON ENTRY. 000506' 047000 000004 07830 DEVTST: DEVCHR ;GET DEVICE CHARACTERISTICS 07840 IFN FTDSK,<TLNN 0,DSKBIT ;IS OUTPUT DEV DSK? 07850 JRST DEVTSU ;NO 07860 TRO AUXFLG,DSKOUT ;YES, SET BIT 07870 PUSH P,DEVICE ;SAVE DEVICE NAME 07880 POP P,ADSK ;PUT NAME IN DSK INIT 07890 POPJ P, 07900 DEVTSU:> 000507' 322000 000525' 07910 JUMPE 0,DEVER2 ;NON-EXISTENT DEVICE 000510' 607000 000001 07920 TLNN 0,OUTBIT ;CAN DEV DO OUTPUT? 000511' 254000 002040' 07930 JRST ERR6A ;NO 000512' 603000 000004 07950 TLNE 0,DTABIT ;DECTAPE? 000513' 660540 004000 07960 TRO AUXFLG,DTAOUT ;YES 000514' 603000 000400 07980 TLNE 0,PTPBIT ;PAPER TAPE PUNCH? 000515' 660540 400000 07990 TRO AUXFLG,PPTOUT 000516' 603000 040000 08010 TLNE 0,LPTBIT ;LINE PRINTER? 000517' 660540 000010 08020 TRO AUXFLG,LPTOUT 000520' 603000 000010 08040 TLNE 0,TTYBIT ;TELETYPE? 000521' 660540 100000 08050 TRO AUXFLG,TTYOUT 000522' 603000 000020 08070 TLNE 0,MTABIT ;MAGTAPE? 000523' 660540 000200 08080 TRO AUXFLG,MTAOUT 000524' 263240 000000 08100 POPJ P, PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 21 VJC/PMH/AK-DAG/DMN 8-JUL-70 08130 ;ROUTINE TO CHECK IF DEVICE SYS AND SET [P,P], IF NONE GIVEN 08150 IFN FTDSK,< 08160 PSYSP: CAME 0,[SIXBIT /SYS/];IS DEVICE SYS? 08170 POPJ P, ;NO 08180 MOVE T1,SYSPP ;GET SYS PP 08190 MOVEM T1,PP ;AND SET IT 08200 TRO AUXFLG,SYSFLG ;SET FLAG TO INDICATE 08210 POPJ P, ;CURRENT INPUT DEVICE IS SYS> 000525' 08230 DEVER1: 000525' 200040 004637' 08240 DEVER2: MOVE T1,DEVICE 000526' 202040 004641' 08250 DEVER: MOVEM T1,DEVERR 000527' 265040 002155' 08260 ERRPNT </?Device /> 000530' 376114 573322 000531' 617124 000000 000532' 260240 002201' 08270 PUSHJ P,P6BIT 000533' 000000 004641' 08280 DEVERR 000534' 265040 002166' 08290 ERRPN2 </does not exist!/> 000535' 623374 571500 000536' 673376 420312 000537' 743236 372102 000540' 000000 000000 08300 ;ROUTINE TO INIT PDL POINTER AND TTY 000541' 201240 004153' 08320 INICN1: MOVEI P,PDL-1 ;INITIALIZE PUSHDOWN POINTER 000542' 200000 004016' 08330 INICN2: MOVE 0,SVJBFF ;IS INITIALIZED AT PIP1 000543' 202000 000440* 08340 MOVEM 0,JOBFF ;SET JOBFF TO BEGINNING OF BUFFER AREA 000544' 260240 001410' 08350 PUSHJ P,INICON ;INITIALIZE THE TTY 000545' 064040 000001 08360 INBUF CON,1 ;ONE INBUFFER 000546' 065040 000001 08370 OUTBUF CON,1 ;ONE OUTBUFFER 000547' 200000 000543* 08380 MOVE 0,JOBFF 000550' 552000 004015' 08390 HRRZM 0,DTJBFF ;JOBFF AFTER 2 TTY BUFFERS SET 000551' 067040 000000 08400 OUTPUT CON, ;INITIALIZE BUFFER POINTERS 000552' 254011 000000 08410 JRST (T5) 08430 ;ROUTINE TO CLEAR LINE BUFFER 000553' 402000 004174' 08450 CLRBUF: SETZM LBUF ;SUBR. TO CLEAR LINE BUFFER 000554' 200000 004673' 08460 MOVE 0,[XWD LBUF,LBUF+1] 000555' 251000 004377' 08470 BLT 0,LBUFE 000556' 263240 000000 08480 POPJ P, PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 22 VJC/PMH/AK-DAG/DMN 8-JUL-70 08510 ;COMMAND SCANNER ROUTINE 000557' 606740 001000 08530 NAME: TRNN CALFLG,SSWTCH ;RETURN NULL IF _ OR END-OF-LINE SEEN 000560' 335000 004134' 08540 SKIPGE ESWTCH 000561' 254000 000666' 08550 JRST NM13 ; 000562' 620740 000400 08560 TRZ CALFLG,NSWTCH 000563' 332040 004135' 08570 SKIPE T1,XNAME ;IF COMMAND SCAN OVERSHOOT PICKED UP 08580 ;DEVICE NAME, USE IT NOW 000564' 254000 000640' 08590 JRST NM7 000565' 620740 000100 08600 TRZ CALFLG,DEV 08610 ;LOOK FOR FILE NAME, EXT 000566' 402000 004041' 08620 NM1: SETZM FILEX 000567' 402000 004040' 08630 NM2: SETZM FILNAM 000570' 200040 000672' 08640 MOVE T1,NM15 08650 ;LOOP TO PICK OFF FILENAME, EXT 000571' 260240 001175' 08660 NM3: PUSHJ P,GETCOM ;GO GET 7 BIT ASCII CHAR. FROM COMMAND STRING 000572' 302000 000052 08670 CAIE 0,"*" ;TO ALLOW FN.EX = *.* 000573' 301000 000101 08680 CAIL 0,"A" ;ALPHABETIC CHARACTER? 000574' 303000 000132 08690 CAILE 0,"Z" 000575' 254000 000602' 08700 JRST NM4A ;NO 000576' 275000 000040 08710 NM4: SUBI 0,40 ;CONVERT TO SIXBIT 000577' 603040 770000 08720 TLNE T1,770000 ;6 CHARS. YET? 000600' 136000 000001 08730 IDPB 0,T1 ;NO 000601' 254000 000571' 08740 JRST NM3 ;GET NEXT CHAR. 000602' 301000 000060 08750 NM4A: CAIL 0,"0" ;NUMERIC? 000603' 303000 000071 08760 CAILE 0,"9" 000604' 254000 000606' 08770 JRST NM5 ;NO 000605' 254000 000576' 08780 JRST NM4 PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 23 VJC/PMH/AK-DAG/DMN 8-JUL-70 08800 ;CHARACTER NOT *,0-9,A-Z 000606' 307000 000015 08810 NM5: CAIG 0,CR ;CARRIAGE RETURN 000607' 305000 000012 08820 CAIGE 0,LF ;LINE FEED 000610' 306000 000033 08830 CAIN 0,ALTMOD ;ALTMODE 000611' 254000 000613' 08840 JRST NM5A ;YES 000612' 306000 000032 08850 CAIN 0,CZ ;END-OF-FILE(CCL)? 000613' 374000 004134' 08860 NM5A: SOSA ESWTCH ;YES, OR EOF 000614' 306000 000054 08870 CAIN 0,COMMA ;COMMA 000615' 254000 000633' 08880 JRST NM6 ;YES 000616' 306000 000056 08890 CAIN 0,PERIOD ;PERIOD 000617' 254000 000654' 08900 JRST NM10 ;YES 000620' 306000 000072 08910 CAIN 0,COLON ;COLON 000621' 254000 000646' 08920 JRST NM9 ;YES 000622' 306000 000073 08930 CAIN 0,";" ;IS THE REST A COMMENT? 000623' 254000 000700' 08940 JRST NM16 ;YES 000624' 306000 000003 08950 CAIN 0,"C"-100 ;^C 000625' 047000 000012 08960 EXIT ;IN CASE JACCT ON ??? 000626' 302000 000137 08970 CAIE 0,LA ;LEFT ARROW 000627' 254000 000673' 08980 JRST NM5B ;NO 000630' 660740 001000 08990 TRO CALFLG,SSWTCH ;SET LEFT ARROW SWITCH 000631' 602740 000100 09000 TRNE CALFLG,DEV ;HAS A DEVICE BEEN SEEN? 000632' 660740 000200 09010 TRO CALFLG,DVSWTH ;YES-NEEDED FOR /Z/,/D 000633' 336040 004041' 09030 NM6: SKIPN T1,FILEX ;COMMA ROUTINE - FIGURE OUT WHAT WE HAVE 000634' 254000 000661' 09040 JRST NM11 ;NO FILE NAME TEMPORARILY IN FILEX 000635' 250040 004040' 09050 EXCH T1,FILNAM ;PUT THE FILE NAME WHERE IT BELONGS 000636' 512040 004041' 09060 HLLZM T1,FILEX ;PUT THE EXTENSION WHERE IT BELONGS 000637' 263240 000000 09070 POPJ P, 000640' 402000 004135' 09090 NM7: SETZM XNAME ;USE XNAME ONLY ONCE 000641' 306040 000001 09100 CAIN T1,1 ;1 FLAGS A NULL OVERSHOOT 000642' 254000 000666' 09110 JRST NM13 ;RETURN NULL NAME 000643' 202040 004637' 09120 NM8: MOVEM T1,DEVICE ;NEW DEVICE 000644' 660740 000100 09130 TRO CALFLG,DEV 000645' 254000 000566' 09140 JRST NM1 ;LOOK FOR A FILE NAME AND EXTENSION 000646' 606740 000100 09160 NM9: TRNN CALFLG,DEV ;COLON ROUTINE - IS DEVICE NAME IN YET? 000647' 254000 000664' 09170 JRST NM12 ;NO 000650' 336040 004040' 09180 SKIPN T1,FILNAM ;SCAN OVERSHOOT - NULL OVERSHOOT? 000651' 201040 000001 09190 MOVEI T1,1 ;YES - FLAG NULL OVERSHOOT WITH A 1 000652' 202040 004135' 09200 MOVEM T1,XNAME ;XNAME = OVERSHOOT NAME 000653' 254000 000670' 09210 JRST NM14 000654' 332000 004041' 09220 NM10: SKIPE FILEX 000655' 254000 002040' 09230 JRST ERR6 000656' 200000 004040' 09240 MOVE 0,FILNAM ;PERIOD ROUTINE - SAVE FILE NAME 000657' 202000 004041' 09250 MOVEM 0,FILEX ;TEMPORARILY IN FILEX 000660' 254000 000567' 09260 JRST NM2 ;LOOK FOR EXTENSION 000661' 336000 004040' 09270 NM11: SKIPN FILNAM ;WAS A FILE NAME SPECIFIED? 000662' 602740 000100 09280 TRNE CALFLG,DEV ;WAS ANYTHING SPECIFIED? 000663' 263240 000000 09290 POPJ P, ;YES 000664' 332040 004040' 09300 NM12: SKIPE T1,FILNAM ;NULL NAME SPECIFIED? 000665' 254000 000643' 09310 JRST NM8 ;NO - SO REMEMBER AND LOOK FOR FILE NAME PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 23-1 VJC/PMH/AK-DAG/DMN 8-JUL-70 000666' 660740 000400 09330 NM13: TRO CALFLG,NSWTCH ;RETURN A NULL NAME 000667' 402000 004041' 09340 SETZM FILEX 000670' 402000 004040' 09350 NM14: SETZM FILNAM 000671' 263240 000000 09360 POPJ P, 000672' 440600 004040' 09380 NM15: POINT 6,FILNAM 000673' 307000 000137 09390 NM5B: CAIG 0,LA ;ALLOW ANY SIXBIT CHAR NOT CS DELIMITER 000674' 307000 000040 09400 CAIG 0,SPACE ;SPACES IGNORED 000675' 254000 000571' 09410 JRST NM3 ;IGNORE NOT LEGAL SIXBIT 000676' 254000 000576' 09420 JRST NM4 ;ACCEPT 000677' 260240 001404' 09440 PUSHJ P,GETBUF ;GET NEXT ASCII CHAR. 000700' 303000 000012 09450 NM16: CAILE 0,LF 000701' 307000 000015 09460 CAIG 0,CR ;IF LF,FF,VT,OR CR 000702' 254000 000613' 09470 JRST NM5A ;RETURN 000703' 302000 000033 09480 CAIE 0,ALTMOD ;SAME IF ALTMOD 000704' 306000 000032 09490 CAIN 0,CZ ;OR ^Z 000705' 254000 000613' 09500 JRST NM5A 000706' 254000 000677' 09510 JRST NM16-1 ;GET NEXT CHARACTER PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 24 VJC/PMH/AK-DAG/DMN 8-JUL-70 09540 ;ROUTINE TO OUTPUT ONE LINE FROM LBUF 000707' 602300 000001 09560 OUTLBF: TRNE FLAG,LINE 000710' 254000 000717' 09570 JRST OUTLBA ;OUTPUT LINE-BY-LINE 000711' 200100 003723' 09580 OUTCH1: MOVE T2,OPTRA ;OUTPUT CHARACTER-BY-CHARACTER 000712' 316100 004020' 09590 OUTLB1: CAMN T2,OPTR ;ARE ALL CHARACTERS OUT? 000713' 263240 000000 09600 POPJ P, ;YES 000714' 134200 000002 09610 ILDB CHR,T2 ;NO 000715' 260240 000756' 09620 PUSHJ P,PUT ;GO OUTPUT CHARACTER 000716' 254000 000712' 09630 JRST OUTLB1 000717' 603300 000040 09640 OUTLBA: TLNE FLAG,CHKFLG;PAREN COUNTING? 000720' 254000 003305' 09650 JRST OUTCHK ;YES, SO DO IT 000721' 602540 100010 09660 TRNE AUXFLG,TTYOUT+LPTOUT 000722' 254000 000711' 09670 JRST OUTCH1 ;IF OUTPUT TO TTY OR LPT DO CHR BY CHR 000723' 201040 000004 09680 MOVEI T1,4 ;CLEAR UNUSED PORTION OF LAST WORD USED IN LBUF 000724' 201100 000000 09690 MOVEI T2,0 000725' 200140 004020' 09700 MOVE T3,OPTR 000726' 136100 000003 09710 IDPB T2,T3 000727' 367040 000726' 09720 SOJG T1,.-1 000730' 201100 000005 09730 MOVEI T2,5 000731' 550040 004020' 09740 HRRZ T1,OPTR ;COMPUTE NUMBER OF WORDS FILLED 000732' 275040 004173' 09750 SUBI T1,LBUF-1 000733' 322040 000754' 09760 JUMPE T1,OUTLB3 ;DO NOTHING IF BUFFER EMPTY 000734' 222040 000002 09770 IMULM T1,T2 ;COMPUTE CHARACTER COUNT=5 TIMES WORD CT 09780 ;THIS IS WHERE OLD FORTRAN MODE WAS TESTED. 000735' 317100 003747' 09790 CAMG T2,OBF+2 ;WILL LINE FIT IN THE OUTBUFFER? 000736' 254000 000745' 09800 JRST OUTLB2 ;YES 000737' 260240 000762' 09810 PUSHJ P,OUTP ;NO, SO DUMP BUFFER AND CHECK ERROR BITS 000740' 201500 000001 09820 MOVEI T6 ,1 000741' 612500 004174' 09830 TDNE T6,LBUF ;SEQUENCED? 000742' 606540 004000 09840 TRNN AUXFLG,DTAOUT ;YES, ON DTA? 000743' 254000 000745' 09850 SKIP 1 ;NO 000744' 271100 000240 09860 ADDI T2,40*5 ;LEAVE EDITING ROOM 000745' 213000 000002 09870 OUTLB2: MOVNS T2 000746' 272100 003747' 09880 ADDM T2,OBF+2 ;UPDATE OUTBUFFER CHARACTER COUNT 000747' 505100 004174' 09890 HRLI T2,LBUF 000750' 540100 003746' 09900 HRR T2,OBF+1 000751' 340100 000000 09910 AOJ T2, 000752' 273040 003746' 09920 ADDB T1,OBF+1 ;UPDATE OUTBUFFER BYTE POINTER 000753' 251101 000000 09930 BLT T2,(T1) ;MOVE DATA TO OUTBUFFER 000754' 263240 000000 09940 OUTLB3: POPJ P, PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 25 VJC/PMH/AK-DAG/DMN 8-JUL-70 09960 ;ROUTINE TO PUT ONE CHAR INTO OUT BUFFER 000755' 201200 000011 09980 TABOUT: MOVEI CHR,TAB ;OUTPUT A TAB 000756' 377000 003747' 09990 PUT: SOSG OBF+2 ;SUBR. TO OUTPUT ONE CHARACTER IN AC CHR 000757' 260240 000762' 10000 PUSHJ P,OUTP ;IF BUFFER FULL, DUMP AND CHECK ERR BITS 000760' 136200 003746' 10010 IDPB CHR,OBF+1 ;PUT CHARACTER IN BUFFER 000761' 263240 000000 10020 POPJ P, 10040 ;ROUTINE TO DUMP OUT BUFFER WHEN FULL 000762' 057100 000000 10060 OUTP: OUT OUT, ;SUBR. TO DUMP OUTBUFFER AND CHECK ERR BITS 000763' 254000 001710' 10070 JRST CPOPJZ ;NO ERRERS,BUT CLEAR IOS JUST IN CASE 000764' 062100 000010 10080 OUTP1: GETSTS OUT,IOS ;HERE FOR BIT CHECKING ONLY 000765' 260240 000770' 10090 PUSHJ P,OUTP4 000766' 060110 000000 10100 SETSTS OUT,(IOS);ERRORS WERE DETECTED 000767' 263240 000000 10110 POPJ P, ;NO ERRORS 000770' 606540 000200 10130 OUTP4: TRNN AUXFLG,MTAOUT 000771' 254000 000774' 10140 JRST .+3 000772' 602400 002000 10150 OUTP3: TRNE IOS,EOTBIT ;EOT? 000773' 254000 000776' 10160 JRST .+3 ;YES 000774' 606400 740000 10170 TRNN IOS,740000 ;ANY ERROR BITS ON? 000775' 254000 001707' 10180 JRST CPOPJ1 ;NO 000776' 260240 001135' 10190 PUSHJ P,COMERR ;YES 000777' 265440 000542' 10210 JSP T5,INICN2 ;INIT TTY 001000' 260240 001652' 10220 PUSHJ P,QUEST 001001' 265040 002166' 10230 ERRPN2 </Output device /> 001002' 477536 470352 001003' 721014 462754 001004' 647074 520000 001005' 260240 002201' 10240 PUSHJ P,P6BIT 001006' 000000 004634' 10250 ODEV 001007' 336000 004044' 10260 SKIPN DTON ;ONLY IF THERE IS A FILE NAME 001010' 254000 001014' 10270 JRST .+4 ;DON'T PRINT IF NOT 001011' 265040 002166' 10280 ERRPN2 </: file /> 001012' 351014 664730 001013' 625000 000000 001014' 201140 004044' 10290 MOVEI T3,DTON ;OUTPUT FILE NAME LOC 001015' 260240 001146' 10300 PUSHJ P,FN.EX ;PRINT FILE NAME EXT 001016' 200100 000013 10310 MOVE T2,AUXFLG 001017' 405100 014200 10320 ANDI T2,MTAOUT+DSKOUT+DTAOUT PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 26 VJC/PMH/AK-DAG/DMN 8-JUL-70 001020' 201040 001074' 10350 IOERR: MOVEI T1,TXTC ;PHYSICAL END OF TAPE 001021' 602400 002000 10360 TRNE IOS,EOTBIT 001022' 254000 002166' 10370 JRST PTEXT2 ;YES 001023' 201040 001055' 10390 MOVEI T1,TXTD2 ;7-9 PUNCH MISSING 001024' 606100 000100 10400 TRNN T2,CDRIN 10420 IFN FTDSK,< 10430 MOVEI T1,TXTD3 10440 TRNN T2,DSKIN!DSKOUT> 001025' 201040 001042' 10460 MOVEI T1,TXTD ;WRITE LOCK ERROR 001026' 606100 074600 10470 TRNN T2,DSKIN+DSKOUT+DTAIN+DTAOUT+MTAIN+MTAOUT 001027' 201040 001047' 10490 MOVEI T1,TXTD1 001030' 602400 400000 10500 TRNE IOS,WRTLOK 001031' 254000 002166' 10510 JRST PTEXT2 001032' 201040 001062' 10530 MOVEI T1,TXTA ;DEVICE ERROR 001033' 602400 200000 10540 TRNE IOS,200000 001034' 254000 002166' 10550 JRST PTEXT2 001035' 201040 001066' 10570 MOVEI T1,TXTB ;CHECKSUM/PARITY ERROR 001036' 602400 100000 10580 TRNE IOS,100000 001037' 254000 002166' 10590 JRST PTEXT2 10610 IFN FTDSK,< 10620 HRRZ T1,TABLE+14 10630 TRNN T2,DSKOUT ;QUOTA EXCEDED> 001040' 201040 001100' 10650 MOVEI T1,TXTC1 ;BLOCK TOO LARGE 001041' 254000 002166' 10660 JRST PTEXT2 PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 27 VJC/PMH/AK-DAG/DMN 8-JUL-70 10680 ;DEVICE ERROR COMMENTS 001042' 737455 172312 10700 TXTD: ASCIZ /write (lock) error/ 001043' 201215 467706 001044' 655224 062744 001045' 713376 200000 001046' 254000 001107' 10710 JRST IOERRN ;NO RECOVERY 001047' 613235 660744 10730 TXTD1: ASCIZ /binary data incomplete/ 001050' 745014 460750 001051' 605015 167306 001052' 677336 066312 001053' 723120 000000 001054' 254000 001114' 10740 JRST IOERRG 001055' 335327 120340 10760 TXTD2: ASCIZ /7-9 punch missing/ 001056' 727354 364100 001057' 667236 371722 001060' 673160 000000 001061' 254000 001114' 10770 JRST IOERRG 001062' 623136 664706 10790 TXTA: ASCIZ /device error/ 001063' 625014 571344 001064' 677440 000000 001065' 254000 001114' 10800 JRST IOERRG 001066' 617214 561726 10820 TXTB: ASCIZ /checksum or parity error/ 001067' 717535 520336 001070' 711016 060744 001071' 647517 120312 001072' 713455 771000 001073' 254000 001114' 10830 JRST IOERRG 001074' 703217 171722 10850 TXTC: ASCIZ /physical eot/ 001075' 617035 420312 001076' 677500 000000 001077' 254000 001114' 10860 JRST IOERRG 001100' 613315 761726 10880 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 10890 ;FALLS THROUGH TO IOERRN PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 28 VJC/PMH/AK-DAG/DMN 8-JUL-70 001107' 071200 000000 10920 IOERRN: RELEAS TAPE, ;NO RECOVERY ERRORS EXIT HERE 001110' 071240 000000 10930 RELEAS DIR, 001111' 071100 000000 10940 RELEAS OUT, 001112' 071140 000000 10950 RELEAS IN, 10960 IFN DISK30,< 10970 RELEAS BLKIN,> 001113' 254000 000013' 10980 JRST PIP2 ;GET NEXT COMMAND 11000 IFN FTDSK,< 11010 TXTD3: ASCIZ /monitor detected software error/> 11030 ;TEST IF /G FLAG(IGNORE ERRORS) SET 001114' 607300 000200 11050 IOERRG: TLNN FLAG,GFLG ;PRINTED CURRENT MESSAGE 001115' 254000 001107' 11060 JRST IOERRN ;NO RECOVERY 11080 ERRPN2</ 001116' 265040 002166' 11090 /> ;PRINT CR, LF DON'T MOVE> 001117' 064240 000000 001120' 071040 000000 11110 RELEAS CON, 001121' 602540 100000 11120 TRNE AUXFLG,TTYOUT ;TTY OUTPUT DEVICE? 001122' 260240 000223' 11130 PUSHJ P,OMODE ;YES, INIT OUTPUT DEVICE 001123' 602540 001000 11140 TRNE AUXFLG,TTYIN ;REINIT TTYIN,TTYOUT 001124' 260240 000426' 11150 PUSHJ P,ININIT 001125' 620400 740000 11160 TRZ IOS,740000 ;CLEAR FILE STATUS, I/O ERRORS 001126' 602100 000600 11170 TRNE T2,MTAIN+MTAOUT 001127' 620400 002000 11180 TRZ IOS,EOTBIT ;CLEAR PHYSICAL EOT I/O ERROR 001130' 204000 004674' 11190 MOVS 0,[XWD 1,SAVAC] 001131' 251000 000003 11200 BLT 0,3 001132' 200440 003764' 11210 MOVE T5,SAVAC+3 001133' 200500 003765' 11220 MOVE T6,SAVAC+4 001134' 263240 000000 11230 POPJ P, PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 29 VJC/PMH/AK-DAG/DMN 8-JUL-70 001135' 200000 004674' 11260 COMERR: MOVE 0,[XWD 1,SAVAC] ;SAVE ACS T1,T2,T3,T5,T6 001136' 251000 003763' 11270 BLT 0,SAVAC+2 001137' 202440 003764' 11280 MOVEM T5,SAVAC+3 001140' 202500 003765' 11290 MOVEM T6,SAVAC+4 001141' 602540 100000 11300 TRNE AUXFLG,TTYOUT ;RELEASE ANY TTYIO 001142' 071100 000000 11310 RELEAS OUT, 001143' 602540 001000 11320 TRNE AUXFLG,TTYIN 001144' 071140 000000 11330 RELEAS IN, 001145' 263240 000000 11340 POPJ P, 11350 ;PRINT FILE NAME AND EXTENSION FROM (T3), 1(T3). 001146' 200043 000000 11370 FN.EX: MOVE T1,(T3) ;T1=FILENAME 001147' 554503 000001 11380 HLRZ T6,1(T3) ;T6=FILE EXT 001150' 306500 654644 11390 CAIN T6,(SIXBIT /UFD/) 001151' 400040 000000 11400 SETZ T1, ;UFD FILES ONLY ARE ASSUMED TO HAVE FILENAME 001152' 202040 004642' 11410 MOVEM T1,DERR2 ;OF NUMERIC FORM (#,# P-P NUMBER). 001153' 322500 001166' 11420 JUMPE T6,DERR2A ;FILE EXT=0? 001154' 302500 654644 11430 CAIE T6,(SIXBIT /UFD/) 001155' 254000 001165' 11440 JRST DERR2B ;NO 001156' 554643 000000 11460 HLRZ DOUT,(T3) ;YES, GET PROJ. NO. 001157' 201100 002175' 11470 MOVEI T2,PUTCON ;PRINT PROJ-PROG. NO. 001160' 260240 003235' 11480 PUSHJ P,OUTDC1 ;CONVERT TO ASCII 001161' 201200 000054 11500 MOVEI CHR,COMMA 001162' 260240 002175' 11510 PUSHJ P,PUTCON 001163' 550643 000000 11530 HRRZ DOUT,(T3) ;GET PROG. NO. 001164' 260240 003235' 11540 PUSHJ P,OUTDC1 ;CONVERT TO ASCII 001165' 661500 000016 11560 DERR2B: TLO T6,"."-40 ;PUT SIXBIT PERIOD 001166' 202500 004643' 11570 DERR2A: MOVEM T6,DERR2+1 ;INTO EXTENSION 001167' 260240 002201' 11580 PUSHJ P,P6BIT 001170' 000000 004642' 11590 DERR2 001171' 260240 002201' 11600 PUSHJ P,P6BIT 001172' 000000 004643' 11610 DERR2+1 001173' 201200 000040 11620 MOVEI CHR," " 001174' 254000 002175' 11630 JRST PUTCON PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 30 VJC/PMH/AK-DAG/DMN 8-JUL-70 11690 ;THIS ROUTINE GETS A 7 BIT ASCII CHARACTER FROM THE COMMAND STRING 11700 ;AND RETURNS IT TO THE COMMAND SCANNER ROUTINE (NAME) IN AC0 001175' 260240 001404' 11720 GETCOM: PUSHJ P,GETBUF 001176' 306000 000057 11730 CAIN 0,"/" ;SINGLE CHARACTER SWITCH 001177' 254000 001300' 11740 JRST GETT6 001200' 306000 000050 11750 CAIN 0,"(" ;LOOK FOR (MULTI-CHAR.) SWITCH 001201' 254000 001252' 11760 JRST GETT3 001202' 306000 000074 11770 CAIN 0,"<" ;GO LOOK FOR PROTECTION 001203' 254000 001223' 11780 JRST GETT9 001204' 302000 000133 11790 CAIE 0,"[" 001205' 263240 000000 11800 POPJ P, 001206' 260240 001236' 11820 GETT10: PUSHJ P,GETDEC ;LOOK FOR PROJECT-PROGRAMMER NUMBER 001207' 303600 777777 11830 CAILE T7,-1 ;GREATER THAN HALF WORD? 001210' 254000 002107' 11840 JRST ERR2A ;YES, ERROR 001211' 302000 000054 11850 CAIE 0,"," ;SEPARATOR? 001212' 254000 001232' 11860 JRST GETUPJ ;OR TERMINATOR (NON-NUMERIC) 001213' 516600 004043' 11870 HRLZM T7,PP 001214' 260240 001236' 11880 PUSHJ P,GETDEC 001215' 303600 777777 11890 CAILE T7,-1 001216' 254000 002107' 11900 JRST ERR2A 001217' 542600 004043' 11920 GETT11: HRRM T7,PP 001220' 306000 000135 11930 CAIN 0,"]" ;FORCE CORRECT TERMINATOR 001221' 254000 001175' 11940 JRST GETCOM 001222' 254000 002076' 11950 JRST ERR2 001223' 260240 001235' 11970 GETT9: PUSHJ P,GETOCT 001224' 306000 000076 11980 CAIN 0,">" ;TERMINATE ON RIGHT BRKT ONLY 001225' 303600 000777 11990 CAILE T7,777 ;PR. IN RANGE? 001226' 254000 002107' 12000 JRST ERR2A 001227' 241600 777767 12010 ROT T7,-11 001230' 522600 004042' 12020 HLLOM T7,PR ;RHS=1'S MEANS <> SEEN (PR MAY BE 0) 001231' 254000 001175' 12030 JRST GETCOM 001232' 200440 003734' 12050 GETUPJ: MOVE T5,UPROJ 001233' 516440 004043' 12060 HRLZM T5,PP 001234' 254000 001217' 12070 JRST GETT11 001235' 334440 004675' 12080 GETOCT: SKIPA T5,[EXP 10] 001236' 201440 000012 12090 GETDEC: MOVEI T5,12 001237' 201600 000000 12100 GETNUM: MOVEI T7,0 ;TO PICK UP P-P NUMBER 001240' 260240 001404' 12110 GETN1: PUSHJ P,GETBUF ;AND PROTECTION 001241' 306000 000040 12120 CAIN 0," " ;IGNORE SPACES 001242' 254000 001240' 12130 JRST GETN1 001243' 301000 000060 12140 CAIL 0,"0" 001244' 301011 000060 12150 CAIL 0,"0"(T5) 001245' 263240 000000 12160 POPJ P, ;GOT A NON-NUMERIC 001246' 220600 000011 12170 IMUL T7,T5 ; MULTIPLY BY RADIX 001247' 275000 000060 12180 SUBI 0,"0" 001250' 270600 000000 12190 ADD T7,0 ; ADD DIGIT 001251' 254000 001240' 12200 JRST GETN1 PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 31 VJC/PMH/AK-DAG/DMN 8-JUL-70 001252' 260240 001320' 12220 GETT3: PUSHJ P,GETT5 ;PROCESS SWITCH CHARACTER 001253' 306000 000051 12230 CAIN 0,")" ;CLOSING PAREN? 001254' 254000 001175' 12240 JRST GETCOM ;YES 001255' 306000 000115 12250 CAIN 0,"M" ;MTA FLAG? 001256' 660300 200000 12260 TRO FLAG, MTFLG ;SET MTA, LOOK FOR MULTI CHAR. SWITCH 001257' 302000 000043 12270 CAIE 0,"#" ;MTA# 001260' 254000 001252' 12280 JRST GETT3 ;NO 001261' 606300 200000 12290 TRNN FLAG,MTFLG ;ONLY LOOK AFTER # IF MTFLG IS ON. 001262' 254000 002040' 12300 JRST ERR6A ;I.E. IF MT SWITCH IS IN PROGRESS. 001263' 260240 001305' 12310 PUSHJ P,GETNUD ;GET A NUMBER 001264' 302000 000104 12320 CAIE 0,"D" ;TERMINATED BY D? 001265' 306000 000101 12330 CAIN 0,"A" ;TERMINATED BY A? 001266' 254000 001276' 12340 JRST GETT3A ;YES, MARK AB UPPER 001267' 302000 000120 12350 CAIE 0,"P" ;ONLY A,D,P AND B CAN BE 001270' 306000 000102 12360 CAIN 0,"B" ;PRECEDED BY #. 001271' 254000 001273' 12370 SKIP 1 001272' 254000 002040' 12380 JRST ERR6A 001273' 542600 004136' 12390 HRRM T7,AB ;NO. FILES/RECS TO ADVANCE 12400 ;GOES IN AB (RH) 001274' 260240 001321' 12410 GETT3B: PUSHJ P,GETT5A 001275' 254000 001252' 12420 JRST GETT3 001276' 506600 004136' 12440 GETT3A: HRLM T7,AB ;NO. FILES/RECS TO BACK SPACE 001277' 254000 001274' 12450 JRST GETT3B ;GOES IN AB (LH) 001300' 260240 001320' 12470 GETT6: PUSHJ P,GETT5 ;PROCESS ONE SWITCH CHAR 001301' 302000 000115 12480 CAIE 0,"M" 001302' 306000 000051 12490 CAIN 0,")" ;THESE ARE ILLEGAL 1-SWITCH CHARS. 001303' 254000 002040' 12500 JRST ERR6A 001304' 254000 001175' 12510 JRST GETCOM 001305' 201600 000000 12530 GETNUD: MOVEI T7,0 ;GET A DECIMAL NUMBER 001306' 260240 001404' 12540 GETN2: PUSHJ P,GETBUF ;GET CHAR FROM COMMAND STRING 001307' 306000 000040 12550 CAIN 0,SPACE ;SPACE? 001310' 254000 001306' 12560 JRST GETN2 ;YES, IGNORE 001311' 301000 000060 12570 CAIL 0,"0" ;NUMBER? 001312' 303000 000071 12580 CAILE 0,"9" 001313' 263240 000000 12590 POPJ P, ;NO 001314' 221600 000012 12600 IMULI T7,^D10 ;T7*10 001315' 405000 000017 12610 ANDI 0,17 ;ADD ON LAST DIGIT 001316' 270600 000000 12620 ADD T7,0 ;+ LOW 4 BITS 001317' 254000 001306' 12630 JRST GETN2 PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 32 VJC/PMH/AK-DAG/DMN 8-JUL-70 12660 ;GET NEXT COMMAND STRING CHAR(SWITCH),CHECK WITH TABLE,SET FLAGS 001320' 260240 001404' 12680 GETT5: PUSHJ P,GETBUF ;GET CHAR FROM COMMAND STRING 001321' 200100 004676' 12690 GETT5A: MOVE T2,[XWD 350700,DISPTB] ;SET DISPTB NEXT SEARCH 001322' 201500 004056' 12700 MOVEI T6,MTAREQ ;SET MTAREQ NEXT SEARCH 001323' 606300 200000 12720 TRNN FLAG,MTFLG ;SET UP TABLE TO SEARCH AND FLAG TO SET. 001324' 541100 001436' 12730 HRRI T2,DISPTA ;PUT IN BYTE POINTER, NOT MTA REQUEST 12750 ;SET TO LOOK AT NON-MTA LETTERS FIRST 001325' 606300 200000 12770 TRNN FLAG,MTFLG ;IF MTFLG SET, START AT DISPTB AND STORE RESULT IN 001326' 201500 000013 12780 MOVEI T6,AUXFLG ;MTAREQ, ELSE START AT DISPTA AND STORE RESULT IN 12790 ;AUXFLG OR FLAG 12800 ;GET FIRST CHAR DISPTA OR DISPTB, LOOK FOR MATCH, SET SWITCH FLAGS. 001327' 135140 000002 12820 GETT7: LDB T3,T2 ;COMPARE WITH LEFT 7 BITS OF 001330' 326140 001335' 12830 JUMPN T3,GETT8 ;TABLE ENTRIES 001331' 620300 200000 12840 TRZ FLAG, MTFLG ;SEARCHED TABLE 1 (DISPTB) DROP MTA FLAG 001332' 201500 000013 12850 MOVEI T6,AUXFLG ;SET AUXFLG NEXT TABLE SEARCH 001333' 603540 000020 12860 TLNE AUXFLG,NOMORE ;AFTER FIRST INPUT DEVICE ONLY ACCEPT MTA FLAGS 001334' 263240 000000 12870 POPJ P, 001335' 306140 000001 12890 GETT8: CAIN T3,1 ;END OF DISPTA 1ST HALF? 001336' 201500 000006 12900 MOVEI T6,FLAG ;YES, SEARCH DISPTA 2ND HALF FROM NOW ON 001337' 306140 000002 12910 CAIN T3,2 ;END OF DISPTA 2ND HALF? 001340' 254000 002040' 12920 JRST ERR6A ;SEARCHED TABLE 3, ERROR EXIT 001341' 312140 000000 12930 CAME T3,0 ;MATCHING CHARACTER? 001342' 344100 001327' 12940 AOJA T2,GETT7 ;NO, GET NEXT SWITCH IN TABLE. 001343' 200442 000000 12960 MOVE T5,(T2) ;YES, SET FLAG OR AUXFLG OR MTAREQ 001344' 436452 000000 12970 ORM T5,(T6) ;FLAG OR AUXFLG 001345' 602300 200000 12980 TRNE FLAG,MTFLG 001346' 436440 004133' 12990 ORM T5,AUX ;MTA REQUESTS SAVED IN AUX 13000 IFE RIMSW,< 001347' 603300 000002 13010 TLNE FLAG,RIMFLG 001350' 254000 004652' 13020 JRST RIMTB ;NO RIM IF RIMSW=0 13030 > ;PRINT ERROR MESSAGE 001351' 263240 000000 13040 POPJ P, ;EXIT ON MATCHING CHAR PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 33 VJC/PMH/AK-DAG/DMN 8-JUL-70 13070 ;ROUTINE TO GET ONE TTY OR CCL COMMAND STRING CHAR INTO AC 0 001352' 13090 GETTA: 001352' 373000 003755' 13110 SOSLE TFI+2 ;SUBR TO GET ONE TTY CHAR IN AC 0 001353' 254000 001371' 13120 JRST GETT2 ;BUFFER NOT EMPTY 001354' 200000 003753' 13130 MOVE 0,TFI ;BUFFER EMPTY, SAVE 001355' 200440 003756' 13140 MOVE T5,TFO ;CURRENT BUFFER LOCS 001356' 260240 001410' 13150 PUSHJ P,INICON ;BUFFER EMPTY SO RE-ATTACH TTY 001357' 562000 003753' 13160 HRROM 0,TFI ;RESTORE OLD BUFFER LOCS 001360' 562440 003756' 13170 HRROM T5,TFO ;USE PREVIOUSLY ASSIGNED I/O BUF. FOR TTY 001361' 200440 004131' 13180 MOVE T5,COMCNT ;DONT TYPE CR,LF 001362' 307440 000105 13190 CAIG T5,^D69 ;FOR SHORT LINE 001363' 254000 001365' 13200 JRST GETTIN 001364' 260240 002735' 13210 PUSHJ P,INFO2 ;TYPE CR,LF 001365' 066040 000000 13220 GETTIN: INPUT CON, ;GET THE NEXT LINE 001366' 200440 003755' 13230 MOVE T5,TFI+2 ;SAVE CHAR COUNT 001367' 071040 000000 13240 RELEAS CON, ;LET GO OF TTY FOR USE AS IN-OUT DEVICE 001370' 202440 003755' 13250 MOVEM T5,TFI+2 ;RESTORE CHAR COUNT LOST DURING RELEASE 001371' 134000 003754' 13260 GETT2: ILDB 0,TFI+1 ;FETCH CHAR 001372' 302000 000175 13270 GETT4: CAIE 0,ALT175 ;OLD ALTMODE? 001373' 306000 000176 13280 CAIN 0,ALT176 001374' 201000 000033 13290 MOVEI 0,ALTMOD ;YES,MAKE NEW ALTMOD 001375' 322000 001352' 13300 JUMPE 0,GETTA ;IGNORE NULL CHARS 001376' 301000 000140 13310 CAIL 0,140 ;LOWER CASE? 001377' 620000 000040 13320 TRZ 0,40 ;YES MAKE UPPER CASE? 001400' 302000 000021 13330 CAIE 0,XON ;IGNORE XON,XOFF ONLY FOR 001401' 306000 000023 13340 CAIN 0,XOFF ;TTY SERVICE TO SIGNAL TTY 001402' 254000 001352' 13350 JRST GETTA ;PTR READ IN MODE 001403' 263240 000000 13360 POPJ P, 13380 ;ROUTINE TO GET ONE TTY CHAR FROM COMBUF INTO AC0 001404' 375000 004131' 13400 GETBUF: SOSGE COMCNT ;ANY CHARS LEFT? 001405' 254000 002045' 13410 JRST ERR6B ;NO, COMMAND ERROR 001406' 134000 004132' 13420 ILDB 0,COMPTS ;PICK UP CHAR FROM COMBUF 001407' 263240 000000 13430 POPJ P, 13450 ;ROUTINE TO INITIALIZE THE TTY, ASCII LINE MODE 001410' 041040 000001 13470 INICON: INIT CON,1 ;SUBR TO INITIALIZE THE TTY 001411' 646471 000000 13480 SIXBIT /TTY/ 001412' 003756' 003753' 13490 XWD TFO,TFI ;TTY OUT/IN BUFFER HEADERS 001413' 047000 000012 13500 EXIT ;IF TTY NOT AVAILABLE,FATAL.JOB DET? 001414' 263240 000000 13510 POPJ P, PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 34 VJC/PMH/AK-DAG/DMN 8-JUL-70 13530 ;GET 7 BIT ASCII CHARACTER - INPUT FROM CCL COMMAND FILE 001415' 476000 004057' 13550 GETEN2: SETOM COMEOF ;INDICATE END OF FILE 001416' 201000 000032 13560 MOVEI 0,CZ ;NEEDED TO TERM CCL CS SCAN 001417' 263240 000000 13570 POPJ P, PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 35 VJC/PMH/AK-DAG/DMN 8-JUL-70 13590 ;TABLE OF RECOGNIZED COMMAND LETTERS AND CORRESPONDING FLAG BITS 13610 DEFINE DISP (A,B) 13620 < XWD <"A">*4000,B> 13630 ;MAGTAPE SWITCHES AND FLAG BITS. TABLE 1 (MTAREQ) 001420' 404000 000001 13640 DISPTB: DISP A,MTAFLG 001421' 410000 000002 13650 DISP B,MTBFLG 001422' 520000 000004 13660 DISP T,MTTFLG 001423' 534000 000010 13670 DISP W,MTWFLG 001424' 340000 000400 13680 DISP 8,MT8FLG 001425' 324000 001000 13690 DISP 5,MT5FLG 001426' 310000 002000 13700 DISP 2,MT2FLG 001427' 424000 004000 13710 DISP E,MTEFLG 001430' 524000 000040 13720 DISP U,MTUFLG 001431' 430000 000020 13730 DISP F,MTFFLG 001432' 420000 000100 13740 DISP D,MTDFLG 001433' 500000 000200 13750 DISP P,MTPFLG 001434' 214000 000000 13760 DISP #,0 001435' 000000 000000 13770 OCT 000000000000 13780 ;1ST BYTE 0=END OF DISPTB 13790 ;------------------------ 13800 ;COMMAND STRING LETTERS AND FLAG BITS. TABLE 2 (AUXFLG) 001436' 504001 000000 13810 DISPTA: XWD <"Q">*4000+QFLG,0 001437' 424040 000000 13820 XWD <"E">*4000+CDRFLG,0 001440' 430000 000020 13830 DISP F,FFLG 001441' 004000 000000 13840 OCT 004000000000 13850 ;1ST BYTE 1=END OF DISPTA 1ST HALF 13860 ;------------------------ 13870 ;COMMAND STRING LETTERS AND FLAG BITS. TABLE 3 (FLAG) 001442' 404000 000001 13880 DISP A,LINE 001443' 410000 000002 13890 DISP B,BMOD 13900 IFN,K,< DISP C,TBMOD 13910 DISP D,DFLG 13920 DISP L,LFLG> 001444' 464000 000000 13930 DISP M,0 001445' 244000 000000 13940 DISP ),0 001446' 470000 000040 13950 DISP N,NSMOD 001447' 474000 400640 13960 DISP O,SQMOD+NSMOD+STS+OSFLG 001450' 500014 000000 13970 XWD <"P">*4000+PFLG+PCONV,0 13980 IFN,K< DISP R,RFLG> 001451' 514000 000640 13990 DISP S,SQMOD+NSMOD+STS 14000 IFN,K< DISP T,SPMOD 14010 XWD <"V">*4000+CHKFLG,LINE 14020 DISP X,XFLG> 001452' 550000 004000 14030 DISP Z,ZFLG 001453' 524001 000000 14040 XWD <"U">*4000+OFLG,0 001454' 544402 000000 14050 XWD <"Y">*4000+IBFLG+RIMFLG,0 001455' 451000 000000 14060 XWD <"J">*4000+JFLG,0 001456' 444100 000000 14070 XWD <"I">*4000+IFLG,0 001457' 440400 000000 14080 XWD <"H">*4000+IBFLG,0 001460' 434200 000000 14090 XWD <"G">*4000+GFLG,0 001461' 010000 000000 14100 OCT 010000000000 14110 ;FIRST BYTE 2=END OF DISPTA 2ND HALF PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 36 VJC/PMH/AK-DAG/DMN 8-JUL-70 14130 ;SUBR TO GET NEXT CHAR INTO AC CHR 14140 ;NO SKIP RETURN IS END OF FILE, SINGLE SKIP IS NORMAL RETURN 001462' 607300 000020 14160 GET: TLNN FLAG,NEWFIL ;NEW FILE? 001463' 627300 000030 14170 TLZN FLAG,PCONV+NEWFIL ;NO,CONVERT THIS CHAR? 001464' 254000 001506' 14180 JRST GETPC1 ;YES 001465' 135200 003743' 14190 LDB CHR,IBF+1 ;GET CHAR 001466' 306200 000040 14200 CAIN CHR," " ;SPACE? 001467' 254000 001544' 14210 JRST GETPC2 ;YES, CONVERT TO LINE FEED 001470' 307200 000063 14220 CAIG CHR,"3" ;IS THE CHAR A PROPER FORMAT CONTROL CHAR? 001471' 305200 000052 14230 CAIGE CHR,"*" 001472' 254000 001542' 14240 JRST GETPC3 ;NO, SO OUTPUT LINE FEED FOLLOWED BY BAD CHAR 001473' 307200 000056 14250 CAIG CHR,"." ;USE LEFT HALF OF TABLE? 001474' 334204 001474' 14260 SKIPA CHR,PCHTAB-<"*">(CHR) 001475' 204204 001467' 14270 MOVS CHR,PCHTAB-<"/">(CHR) 001476' 137200 003743' 14280 GETPC4: DPB CHR,IBF+1 ;CLOBBER OLD CHAR, USUALLY BECOMES NULL 001477' 242200 777771 14290 LSH CHR,-7 ;BUT OTHERWISE BECOMES ANOTHER FORMAT CHAR 001500' 405200 000377 14300 ANDI CHR,377 ;EXTRACT THE CHAR TO BE OUTPUT 001501' 622200 000200 14310 TRZE CHR,200 ;=1 FOR GENERATING MULTIPLE LINE FEEDS 001502' 661300 000010 14320 TLO FLAG,PCONV ;CONTINUE TO CONVERT 001503' 326200 001707' 14330 JUMPN CHR,CPOPJ1;OUTPUT THE GENERATED CHAR UNLESS NULL 001504' 262245 000000 14340 POP P,(P) ;IGNORE NULL CHARS 001505' 254000 000374' 14350 JRST PSCAN4 ;DUMP THE LINE BUFFER 001506' 606300 010000 14360 GETPC1: TRNN FLAG,SUS ;SUPPLYING SEQ. NUM. NOW? 001507' 254000 001532' 14370 JRST GET2 ;NO 001510' 134200 004036' 14380 ILDB CHR,PTRPT ;YES, SO GET CHAR OF SEQ NUM 001511' 326200 001707' 14390 JUMPN CHR,CPOPJ1;0 MARKS LAST CHAR 001512' 135040 003743' 14400 LDB T1,IBF+1 ;GET FIRST CHAR OF THIS LINE 001513' 201200 000015 14410 MOVEI CHR,15 001514' 307040 000015 14420 CAIG T1,15 ;PREPARE TO OUTPUT A CR,LF 001515' 305040 000012 14430 CAIGE T1,12 ;IS FIRST CHAR OF LINE AN END OF LINE CHAR? 001516' 201200 000011 14440 MOVEI CHR,TAB ;NO, SO OUTPUT A TAB 001517' 620300 010000 14450 TRZ FLAG,SUS ;TURN OFF SUS SUPPLY 001520' 254000 001724' 14460 JRST GETA5 001521' 350000 003743' 14470 GET5: AOS IBF+1 ;HERE IF A SEQ NUM FOUND IN INBUFFER 001522' 275040 000005 14480 SUBI T1,5 ;IGNORE SEQ NUM, TAB AND DECREMENT CHAR COUNT 001523' 202040 003744' 14490 MOVEM T1,IBF+2 001524' 602300 000040 14500 TRNE FLAG,NSMOD ;REMOVE SEQ NUMS MODE? 001525' 254000 001532' 14510 JRST GET2 ;YES, SO GET NEXT CHAR 001526' 202100 004014' 14520 MOVEM T2,SQNUM ;SEQ NUM FROM BUFFER BECOMES NEW SEQ NUM 001527' 260240 000707' 14530 PUSHJ P,OUTLBF ;DUMP THE LINE BUFFER (IF REQUIRED) 001530' 666300 100400 14540 TRON FLAG,STS+SNI ;TURN ON START OF LINE 14550 ;AND NO-INCREMENT SEQ NUM FLAG 001531' 260240 000553' 14560 PUSHJ P,CLRBUF ;CLEAR LBUF IF IN THE MIDDLE OF A LINE 001532' 622300 040000 14580 GET2: TRZE FLAG,ESQ ;REPROCESS LAST CHAR? 001533' 254000 001557' 14590 JRST GET1 ;YES 001534' 371040 003744' 14600 SOSL T1,IBF+2 ;CHARS REMAINING IN INBUFFER? 001535' 254000 001553' 14610 JRST GET4 ;YES 001536' 260240 001616' 14620 PUSHJ P,INP ;NO, SO REFILL AND CHECK ERR BITS 001537' 602400 020000 14630 TRNE IOS,EOFBIT ;END OF FILE? IOS HAS STATUS BITS 001540' 263240 000000 14640 POPJ P, ;YES 001541' 254000 001532' 14650 JRST GET2 ;NO, SO PROCESS INBUFFER PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 36-1 VJC/PMH/AK-DAG/DMN 8-JUL-70 001542' 660300 040000 14670 GETPC3: TRO FLAG,ESQ ;REPROCESS BAD CHAR 001543' 664200 002400 14680 TROA CHR,12*200 ;PRECEED BAD CHAR WITH LINE FEED 001544' 201200 002400 14690 GETPC2: MOVEI CHR,12*200;CHANGE SPACE TO LINE FEED 001545' 254000 001476' 14700 JRST GETPC4 001546' 005000 004656 14720 PCHTAB: XWD 24*200,23*200+"." ;/ * 001547' 042440 037600 14730 XWD 212*200+" ",177*200 ;0 + VJC 4/16/49 001550' 003000 004200 14740 XWD 14*200,21*200 ;1 , 001551' 004000 042460 14750 XWD 20*200,212*200+"0" ;2 - 001552' 002600 004400 14760 XWD 13*200,22*200 ;3 . 001553' 134200 003743' 14780 GET4: ILDB CHR,IBF+1 ;FETCH CHAR FROM INBUFFER 001554' 616300 004672' 14790 TDNN FLAG,[XWD IFLG+IBFLG,BMOD] ;BIN, IB, I OR SBIN MODE? 001555' 603540 000004 14800 TLNE AUXFLG,SBIN 001556' 254000 001707' 14810 JRST CPOPJ1 ;YES, SO NO PROCESSING REQUIRED 001557' 135200 003743' 14820 GET1: LDB CHR,IBF+1 ;AFTER SEQ NUM, HERE FOR 1ST CHAR 001560' 322200 001532' 14830 JUMPE CHR,GET2 ;IGNORE NULL CHARS 001561' 306200 000012 14840 CAIN CHR,LF ;IGNORE LINE FEED IN FORTRAN OUTPUT 001562' 607300 000004 14850 TLNN FLAG,PFLG ;/P SWITCH IN EFFECT? 001563' 254000 001566' 14860 JRST GET1A ;NO 001564' 661300 000010 14870 TLO FLAG,PCONV ;CONVERT THE NEXT LIVE CHAR 001565' 254000 001532' 14880 JRST GET2 ;GET NEXT CHAR 001566' 200120 003743' 14890 GET1A: MOVE T2,@IBF+1 ;BIT 35 OF BUFFER SET? 001567' 622100 000001 14900 TRZE T2,1 001570' 254000 001521' 14910 JRST GET5 ;YES, THIS IS A SEQ NUM 001571' 622300 000400 14920 TRZE FLAG,STS ;START SEQ (NEW LINE) FLAG ON? 001572' 606300 100200 14930 TRNN FLAG,SQMOD+SNI ;YES, SEQ MODE OR SEQ COPY? 001573' 254000 001666' 14940 JRST GET7 ;NO, SO PROCESS CHAR 001574' 200100 004014' 14950 MOVE T2,SQNUM ;NO, SO ADD 10. TO SEQ NUM 001575' 200040 003724' 14960 MOVE T1,K1 001576' 602300 400000 14970 TRNE FLAG,OSFLG ;TEST FOR INCR. BY ONE 001577' 200040 003726' 14980 MOVE T1,K4 001600' 270100 000001 14990 ADD T2,T1 ;ASCII INCREMENT 001601' 404100 003725' 15000 AND T2,K3 ;MASK SIGNIFICANT DIGITS 001602' 200040 000002 15010 MOVE T1,T2 001603' 404040 003721' 15020 AND T1,ZRO ;MASK CARRY BITS 001604' 240040 777775 15030 ASH T1,-3 001605' 274100 000001 15040 SUB T2,T1 ;ADJUST CARRIES 001606' 434100 003721' 15050 IOR T2,ZRO 001607' 626300 100000 15060 TRZN FLAG,SNI ;NON-INCREMENT SEQ NUM FLAG ON? 001610' 202100 004014' 15070 MOVEM T2,SQNUM ;NO, SO SAVE THE RESULT 001611' 660300 050001 15080 TRO FLAG,LINE+SUS+ESQ ;TURN ON SUPPLY SEQ, REPROCESS 15090 ;LAST CHAR, AND LINE-BY-LINE FLAGS 001612' 350000 004174' 15100 AOS LBUF ;SET BIT 35 IN LBUF TO MARK SEQ NUM 001613' 200040 004677' 15110 MOVE T1,[POINT 7,SQNUM] 001614' 202040 004036' 15120 MOVEM T1,PTRPT ;INITIALIZE SEQ NUM PICK-UP POINTER 001615' 254000 001462' 15130 JRST GET ;GO OUTPUT FIRST CHAR OF SEQ NUM PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 37 VJC/PMH/AK-DAG/DMN 8-JUL-70 15150 ;ROUTINE TO INPUT INPUT FILE 001616' 056140 000000 15170 INP: IN IN, ;INPUT DATA 001617' 254000 001710' 15180 JRST CPOPJZ ;NO ERRORS ,BUT CLEAR IOS JUST IN CASE 001620' 062140 000010 15190 INERR: GETSTS IN,IOS ;SUBR TO CHECK INPUT ERR BITS 001621' 606540 000400 15200 TRNN AUXFLG,MTAIN ;MTA INPUT? 001622' 602400 740000 15210 TRNE IOS,740000 ;ANY ERROR BITS SET? 001623' 606400 742000 15220 TRNN IOS,740000+EOTBIT ;EOT FOR MTA? 001624' 263240 000000 15230 POPJ P, ;NO 001625' 260240 001135' 15250 PUSHJ P,COMERR ;SAVE AC'S RELEASE TTY 001626' 265440 000542' 15260 JSP T5,INICN2 ;YES SO PRINT OUT COMPLETE FILE DESCRIPTOR 001627' 260240 001652' 15270 PUSHJ P,QUEST 001630' 265040 002166' 15280 ERRPN2 </Input device /> 001631' 447356 072750 001632' 203114 573322 001633' 617124 000000 001634' 260240 002201' 15290 PUSHJ P,P6BIT 001635' 000000 004637' 15300 DEVICE 001636' 336000 004052' 15310 SKIPN ZRF ;IS THERE A FILE NAME 001637' 254000 001643' 15320 JRST .+4 ;NO,SO DON'T PRINT 001640' 265040 002166' 15330 ERRPN2 </: file /> 001641' 351014 664730 001642' 625000 000000 001643' 201140 004052' 15340 MOVEI T3,ZRF ;LOC OF INPUT FILE NAME TO T3 001644' 260240 001146' 15350 PUSHJ P,FN.EX ;DEPOSIT FILE NAME, EXT INTO TTY OUT BUFFER 001645' 200100 000013 15360 MOVE T2,AUXFLG 001646' 405100 060500 15370 ANDI T2,CDRIN+DTAIN+DSKIN+MTAIN 001647' 260240 001020' 15380 PUSHJ P,IOERR ;GO PRINT ERROR DESCRIPTOR 001650' 060150 000000 15390 SETSTS IN,(IOS) 001651' 263240 000000 15400 POPJ P, 15420 ;ROUTINE TO TEST IF BLOCK TOO LARGE, OR WRITE LOCKED 001652' 201200 000077 15440 QUEST: MOVEI CHR,"?" ;DEPOSIT "?" IN ERROR MSG 001653' 607300 000200 15450 TLNN FLAG,GFLG ;ONLY IF /G NOT ON 001654' 254000 002175' 15460 JRST PUTCON ;/G NOT ON, PRINT ?(FATAL) BEFORE ERR MSG 001655' 606400 040000 15480 TRNN IOS,BIGBLK ;BLOCK NO. TOO LARGE? 001656' 254000 001662' 15490 JRST QUEST2 ;NO 001657' 606540 024000 15500 TRNN AUXFLG,DTAIN+DTAOUT ;YES 001660' 263240 000000 15510 POPJ P, ;BLOCK TOO LARGE 001661' 254000 002175' 15530 JRST PUTCON ;DEPOSIT "?" FATAL EVEN IF /G ON 001662' 602400 400000 15550 QUEST2: TRNE IOS,WRTLOK ;WRITE LOCKED? 001663' 606540 034600 15560 TRNN AUXFLG,DTAIN+DTAOUT+MTAIN+MTAOUT+DSKOUT 001664' 263240 000000 15570 POPJ P, ;NO 001665' 254000 002175' 15580 JRST PUTCON ;DEPOSIT "?" FATAL EVEN IF /G ON PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 38 VJC/PMH/AK-DAG/DMN 8-JUL-70 001666' 603300 000010 15610 GET7: TLNE FLAG,PCONV ;CONVERTING FORTRAN CARRAIGE CONTROL CHAR? 001667' 254000 001463' 15620 JRST GET+1 ;YES, GO DO IT 001670' 350040 004035' 15630 AOS T1,CDRCNT 001671' 603540 000040 15640 TLNE AUXFLG,CDRFLG 001672' 254000 001712' 15650 JRST GET7B ;CARD READER INPUT 001673' 306200 000040 15670 GET7C: CAIN CHR,SPACE ;SPACE? 001674' 254000 001727' 15680 JRST GETA2 ;YES 001675' 306200 000015 15690 CAIN CHR,CR ;CAR. RET.? 001676' 254000 001717' 15700 JRST GETA3 ;YES 001677' 620300 020000 15710 TRZ FLAG,SPOK ;CHAR NOT A SPACE STOP COUNTING CONSEC. SPACES 001700' 306200 000011 15720 CAIN CHR,TAB ;TAB? 001701' 254000 001724' 15730 JRST GETA5 ;KEEP TRACK OF TAB STOPS 001702' 307200 000137 15740 CAIG CHR,137 001703' 305200 000040 15750 CAIGE CHR,SPACE ;NON-SPACING CHARACTER? 001704' 254000 001707' 15760 JRST CPOPJ1 ;YES, SO RETURN IMMEDIATELY 001705' 377000 004027' 15770 SOSG TABCT ;COUNT DOWN THE TAB STOP COUNTER 001706' 254000 001724' 15780 JRST GETA5 ;RESET THE COUNTER IF TAB STOP IS PASSED 001707' 354005 000000 15790 CPOPJ1: AOSA (P) ;SKIP RETURN 001710' 400400 000000 15800 CPOPJZ: SETZ IOS, ;CLEAR IOS JUST IN CASE 001711' 263240 000000 15810 CPOPJ: POPJ P, 001712' 301040 000111 15840 GET7B: CAIL T1,^D73 ;LT COL 73? 001713' 303040 000120 15850 CAILE T1,^D80 ;NO, LE COL 80? 001714' 254000 001673' 15860 JRST GET7C ;CANT BE A CARD SEQUENCE NUMBER 001715' 201200 000040 15870 MOVEI CHR,SPACE ;REPLACE CARD SEQUENCE NOS. BY SPACE 001716' 254000 001673' 15880 JRST GET7C 001717' 622300 020000 15900 GETA3: TRZE FLAG,SPOK ;CAR. RET. SEEN, ANY TRAILING SPACES? 001720' 606300 001004 15910 TRNN FLAG,SPMOD+TBMOD ;YES, ARE WE FLUSHING TRAILING SPACES 001721' 254000 001724' 15920 JRST GETA5 ;NO, RESET TAB COUNTER ONLY 001722' 200000 004023' 15930 MOVE 0,SVPTR1 001723' 202000 004020' 15940 MOVEM 0,OPTR ;CLOBBER THE OUTPUT POINTER TO LBUF 001724' 201000 000010 15950 GETA5: MOVEI 0,TABSP 001725' 202000 004027' 15960 MOVEM 0,TABCT ;RESET THE TAB COUNTER 001726' 254000 001707' 15970 JRST CPOPJ1 PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 39 VJC/PMH/AK-DAG/DMN 8-JUL-70 001727' 662300 020000 15990 GETA2: TROE FLAG,SPOK ;SPACE WAS SEEN, IS THIS ONE OF A SEQUENCE? 001730' 254000 001735' 16000 JRST GETA7 ;YES 001731' 200000 004020' 16010 MOVE 0,OPTR ;THIS IS THE FIRST SPACE SEEN, SAVE LBUF 16020 ;POINTER IN CASE THIS SPACE MUST BE FLUSHED 001732' 202000 004023' 16030 MOVEM 0,SVPTR1 ;THIS POINTER FOR FLUSHING FINAL SPACES 001733' 202000 004024' 16040 MOVEM 0,SVPTR2 ;THIS POINTER FOR CHANGING MULT. SPACES TO TABS 001734' 402000 004030' 16050 SETZM SPCT ;INITIALIZE THE SPACE COUNTER 001735' 350040 004030' 16060 GETA7: AOS T1,SPCT 001736' 373000 004027' 16070 SOSLE TABCT ;ARE WE AT THE NEXT TAB STOP? 001737' 254000 001707' 16080 JRST CPOPJ1 ;NO 001740' 301040 000002 16090 CAIL T1,2 ;DONT BOTHER CHANGING ONE SPACE TO A TAB 001741' 606300 000004 16100 TRNN FLAG,TBMOD ;TAB GENERATING MODE? 001742' 254000 001747' 16110 JRST GETA5A ;NO, GO RESET TAB COUNTER 001743' 200000 004024' 16120 MOVE 0,SVPTR2 001744' 202000 004020' 16130 MOVEM 0,OPTR ;BACK UP THE OUTPUT POINTER OVER THE LAST 16140 ;GROUP OF SPACES 001745' 201200 000011 16150 MOVEI CHR,TAB ;OUTPUT A TAB 001746' 402000 004030' 16160 SETZM SPCT ;RESET THE SPACE COUNTER 001747' 133000 004024' 16170 GETA5A: IBP SVPTR2 ;UPDATE THE CHANGE-SPACES-TO-TABS POINTER 001750' 254000 001724' 16180 JRST GETA5 ;RESET THE TAB COUNTER PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 40 VJC/PMH/AK-DAG/DMN 8-JUL-70 16200 ;ERROR ROUTINES 16220 IFE WCH,<IFN RIMSW,< 16230 ERR8A: MOVEI T4,ERR382 16240 JRST E10B 16250 ERR3B: MOVEI T4,ERR381 16260 JRST E10B>> 001751' 201340 002053' 16280 ERR10: MOVEI T4,E10A 001752' 336000 004052' 16290 E10B: SKIPN ZRF 001753' 254000 001757' 16300 SKIP 3 001754' 265040 002155' 16310 ERRPNT </?File /> 001755' 376155 166312 001756' 200000 000000 001757' 201140 004052' 16320 MOVEI T3,ZRF 001760' 260240 001146' 16330 PUSHJ P,FN.EX 001761' 254007 000000 16340 JRST (T4) 16360 IFE WCH,<IFN RIMSW,< 16370 ERR381: ERRPN2 </illegal extension!/> 16380 16390 ERR382: ERRPN2 </illegal format!/> 16400 16410 ERR5B: ERRPN2 </? DTA to PTP only!/>>> 001762' 265040 002155' 16430 ERR9: ERRPNT </?/> 001763' 374000 000000 001764' 201140 004044' 16440 MOVEI T3,DTON 001765' 260240 001146' 16450 PUSHJ P,FN.EX 001766' 254000 002033' 16460 JRST ERR4B PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 41 VJC/PMH/AK-DAG/DMN 8-JUL-70 001767' 334100 004634' 16480 ERR1: SKIPA T2,ODEV ;OUTPUT UNAVAILABLE 001770' 200100 004637' 16490 ERR1A: MOVE T2,DEVICE ;INPUT UNAVAILABLE 001771' 265040 002155' 16500 ERR1B: ERRPNT </?Device /> 001772' 376114 573322 001773' 617124 000000 001774' 260240 002201' 16510 PUSHJ P,P6BIT 001775' 000000 000002 16520 T2 001776' 265040 002166' 16530 ERRPN2 </ not available!/> 001777' 203355 772100 002000' 607554 164730 002001' 607055 462502 002002' 000000 000000 002003' 16540 ERR3: 16550 IFN FTDSK,<TRNE AUXFLG,DSKIN 16560 JRST DERR5 ;ERR ON DSK> 002003' 260240 002005' 16570 PUSHJ P,ERR3A 002004' 254000 001107' 16580 JRST IOERRN ;EXIT 002005' 661540 000100 16590 ERR3A: TLO AUXFLG,INFOFL ;SIGNAL RETURN TO ERR3AA 002006' 254000 002711' 16600 JRST INFO 002007' 265040 002166' 16610 ERR3AA: ERRPN2 </? No file named /> 002010' 375011 667500 002011' 633235 462500 002012' 673035 562710 002013' 200000 000000 002014' 201140 004040' 16620 MOVEI T3,FILNAM 002015' 260240 001146' 16630 PUSHJ P,FN.EX ;PRINT NAME OF FILE THAT CANNOT BE FOUND 002016' 260240 002735' 16640 PUSHJ P,INFO2 ;OUTPUT MESS. WITH CR-LF 002017' 606540 101000 16650 TRNN AUXFLG,TTYIN!TTYOUT ;WAS TTY IN USE? 002020' 263240 000000 16660 POPJ P, ;NO 002021' 602540 001000 16670 TRNE AUXFLG,TTYIN ;INPUT DEVICE? 002022' 254000 000426' 16680 JRST ININIT ;YES ,RE-INIT 002023' 254000 000223' 16690 JRST OMODE ;MUST BE OUTPUT 002024' 336000 004044' 16710 ERR4: SKIPN DTON 002025' 254000 002033' 16720 JRST ERR4A 16730 IFN FTDSK,<TRNE AUXFLG,DSKOUT ;ERR ON DSK 16740 JRST DERR6> 002026' 265040 002155' 16750 ERRPNT </? Directory full!/> 002027' 375010 464744 002030' 627076 467744 002031' 745014 672730 002032' 661020 000000 002033' 16760 ERR4A: 16770 IFN FTDSK,<TRNE AUXFLG,DSKOUT 16780 JRST ERR4C> 002033' 265040 002155' 16790 ERR4B: ERRPNT </?Illegal file name!/> 002034' 376235 466312 002035' 637035 420314 002036' 647314 520334 002037' 607334 520400 16800 IFN FTDSK,< 16810 ERR4C: ERRPNT </?(0) Illegal file name!/>> PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 41-1 VJC/PMH/AK-DAG/DMN 8-JUL-70 002040' 16830 ERR6: 002040' 265040 002155' 16840 ERR6A: ERRPNT </?PIP command error!/> 002041' 376411 150100 002042' 617375 566702 002043' 673104 062744 002044' 713376 220400 002045' 265040 002155' 16860 ERR6B: ERRPNT </?PIP command too long!/> 002046' 376411 150100 002047' 617375 566702 002050' 673104 072336 002051' 675015 467734 002052' 635020 000000 002053' 265040 002166' 16880 E10A: ERRPN2 </ line too long!/> 002054' 203315 167312 002055' 203515 767500 002056' 663375 663502 002057' 000000 000000 002060' 265040 002155' 16890 ERR5A: ERRPNT </?Too many input devices!/> 002061' 376515 767500 002062' 667035 674500 002063' 647356 072750 002064' 203114 573322 002065' 617136 320400 16900 ;FILE MANIPULATION COMMANDS TO NON-DIRECTORY DEVICES COME HERE 002066' 265040 002155' 16920 ERR5: ERRPNT </?Disk or DECtape input required!/> 002067' 376115 171726 002070' 203376 220210 002071' 426076 460740 002072' 625015 167340 002073' 727504 071312 002074' 707535 171312 002075' 621020 000000 002076' 265040 002155' 16930 ERR2: ERRPNT </?Incorrect Project-Programmer number!/> 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' 16940 ERR2A: ERRPNX </?Illegal protection!/> 002110' 376235 466312 002111' 637035 420340 002112' 713376 462706 002113' 723235 767102 002114' 000000 000000 16950 IFE BLOC0,< 002115' 265040 002155' 16960 ERR7A: ERRPNT <Z?DECtape I/O only!Z>> 002116' 376110 541750 PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 41-2 VJC/PMH/AK-DAG/DMN 8-JUL-70 002117' 607414 520222 002120' 276364 067734 002121' 663624 100000 002122' 265040 002155' 16980 ERR8: ERRPNT </?Explicit output device required!/> 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 PAGE 42 VJC/PMH/AK-DAG/DMN 8-JUL-70 17010 ;ROUTINE TO CHECK INPUT DEV, SET XXXIN.E.G.DTAIN 002132' 200000 004637' 17030 CHECK1: MOVE 0,DEVICE ;INPUT DEVICE NAME TO AC 0 002133' 322000 002152' 17040 JUMPE 0,CHECK ;IGNORE IF NO INPUT DEVICE 17050 IFN FTDSK,<PUSHJ P,PSYSP ; STR# 10-3178> 002134' 047000 000004 17060 DEVCHR ;GET INPUT DEVCHR 17070 IFN FTDSK,<TLNN 0,DSKBIT ;INPUT DEVICE DISK? 17080 JRST CHECK2 ;NO 17090 TRO AUXFLG,DSKIN;INPUT DEVICE IS DSK, SET BIT 17100 MOVE T1,DEVICE 17110 CAMN T1,[SIXBIT/SYS/] ; INIT SYS AS DSK 17120 MOVSI T1,(SIXBIT/DSK/) 17130 MOVEM T1,ADSK 17140 JRST CHECK> 002135' 322000 000525' 17160 CHECK2: JUMPE 0,DEVER1 ;NON-EX. DEVICE 002136' 607000 000002 17180 TLNN 0,INBIT ;CAN DEVICE DO INPUT? 002137' 254000 002040' 17190 JRST ERR6A ;NO, COMMD ERROR 002140' 603000 000200 17210 TLNE 0,PTRBIT ;PAPER TAPE READER? 002141' 660540 200000 17220 TRO AUXFLG,PPTIN;YES 002142' 603000 000004 17240 TLNE 0,DTABIT ;DECTAPE? 002143' 660540 020000 17250 TRO AUXFLG,DTAIN 002144' 603000 000020 17270 TLNE 0,MTABIT ;MAGTAPE? 002145' 660540 000400 17280 TRO AUXFLG, MTAIN 002146' 603000 100000 17300 TLNE CDRBIT ;CARD READER? 002147' 660540 000100 17310 TRO AUXFLG,CDRIN 002150' 603000 000010 17330 TLNE 0,TTYBIT ;TELETYPE? 002151' 660540 001000 17340 TRO AUXFLG,TTYIN 002152' 602740 001000 17360 CHECK: TRNE CALFLG,SSWTCH ;_FLAG STILL ON? 002153' 254000 002040' 17370 JRST ERR6A ; YES ,COMMAND ERROR 002154' 263240 000000 17380 POPJ P, ; NO, RETURN PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 43 VJC/PMH/AK-DAG/DMN 8-JUL-70 17400 ;SUBR TO PRINT ERROR MESSAGES 17410 ;! MARKS THE END OF MESSAGE & SIGNALS GO TO PIP2 17420 ;NULL IS A FLAG TO RETURN TO THE NEXT LOCATION 002155' 17440 PRETXT: 002155' 071240 000000 17450 PTEXT: RELEAS DIR, ;RELEASE DIRECTORY DEVICE 002156' 071200 000000 17460 RELEAS TAPE, ;RELEASE MAGTAPE 002157' 071100 000000 17470 RELEAS OUT, ;LET GO OF BOTH OUTPUT AND 002160' 071140 000000 17480 RELEAS IN, ;INPUT DEVICES 002161' 265440 000541' 17490 JSP T5,INICN1 ;INITIALIZE THE TTY 002162' 201000 000015 17500 MOVEI 0,CR 002163' 136000 003757' 17510 IDPB 0,TFO+1 ;OUTPUT A CR-LF 002164' 201000 000012 17520 MOVEI 0,LF 002165' 136000 003757' 17530 IDPB 0,TFO+1 ;FOR BATCH 002166' 505040 440700 17540 PTEXT2: HRLI T1,440700 ;GET SET TO SCAN 7-BIT DATA 002167' 134000 000001 17550 PTEXT1: ILDB 0,T1 ;GET CHAR OF ERR MESSAGE 002170' 322001 000001 17560 JUMPE 0,1(T1) ;RETURN ON ZERO 002171' 306000 000041 17570 CAIN 0,"!" ;!? 002172' 254000 000013' 17580 JRST PIP2 ;YES, END OF MESSAGE, APPEND CAR.RET., LF 002173' 136000 003757' 17590 IDPB 0,TFO+1 ;DEPOSIT CHAR IN OUTBUFFER 002174' 254000 002167' 17600 JRST PTEXT1 ;GET NEXT CHAR 17620 ;ROUTINE TO DEPOSIT CHARACTER IN TTY OUT BUFFER 002175' 377000 003760' 17640 PUTCON: SOSG TFO+2 ;STORED MORE THAN BUFFER HOLDS? 002176' 067040 000000 17650 OUTPUT CON, ;YES 002177' 136200 003757' 17660 IDPB CHR,TFO+1 002200' 263240 000000 17670 POPJ P, 17690 ;ROUTINE TO CONVERT ONE WORD OF SIXBIT 17700 ;FROM ADDRESS IN LOCATION AFTER CALL AND DEPOSIT INTO TTY OUT BUFFER 002201' 200065 000000 17720 P6BIT: MOVE T1,@(P) ;PICK UP WORD OF 6-BIT 002202' 505040 440600 17730 HRLI T1,440600 ;SET UP POINTER 002203' 134200 000001 17740 P6BIT1: ILDB CHR,T1 002204' 322200 002207' 17750 JUMPE CHR,P6BIT2 002205' 271200 000040 17760 ADDI CHR,40 002206' 260240 002175' 17770 PUSHJ P,PUTCON ;DEPOSIT IN TTY 002207' 603040 770000 17780 P6BIT2: TLNE T1,770000 ;DONE SIX? 002210' 254000 002203' 17790 JRST P6BIT1 ;NO 002211' 254000 001707' 17800 JRST CPOPJ1 ;SKIP RETURN PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 44 VJC/PMH/AK-DAG/DMN 8-JUL-70 17830 ;ROUTINE TO CLEAR DSK OR DTA DIRECTORY (/Z SWITCH) 002212' 606740 000200 17850 DTCLR: TRNN CALFLG,DVSWTH ;HAS A DEVICE BEEN SEEN? 002213' 254000 002122' 17860 JRST ERR8 ;NO,SO DON'T SCREW USER 17870 IFN FTDSK,<TRNE AUXFLG,DSKOUT ;CLEAR DSK OR DTA DIR. 17880 JRST DSKZRO> 002214' 606540 004000 17890 TRNN AUXFLG,DTAOUT ;MUST BE DTA 002215' 254000 002066' 17900 JRST ERR5 002216' 047100 000013 17910 UTPCLR OUT, ;CLEAR DIRECTORY 002217' 263240 000000 17920 POPJ P, PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 45 VJC/PMH/AK-DAG/DMN 8-JUL-70 17940 ;ROUTINE TO SET UP TO COPY EVERYTHING 002220' 260240 000426' 17960 PRECOP: PUSHJ P,ININIT ;INIT INPUT FILE 002221' 606540 020000 17970 TRNN AUXFLG,DTAIN ;DECTAPE INPUT 002222' 254000 002225' 17980 SKIP 2 ;NO 002223' 260240 003272' 17990 PUSHJ P,DTCH2 ;YES, GET DIRECT, SET POINTERS TO DIRECT 002224' 260240 002702' 18010 DTCOPY: PUSHJ P,DTADI1 ;START (T5) 18020 IFN FTDSK,<TRNE AUXFLG,DSKIN ;DSK INPUT. ENTER HERE FROM DTD2 18030 PUSHJ P,DSKDIR ;YES, PREPARE TO LOOKUP FILES> 002225' 402000 004034' 18040 COPY1A: SETZM ZCNT ;CLEAR COUNT FOR DSK ZERO REQUESTS 002226' 201100 000006 18050 MOVEI T2,6 ;FILL 0 CHARS. IN DEST-FILE 002227' 200040 004700' 18060 MOVE T1,[POINT 6,DTON] ;NAME WITH X'S. THIS IS 002230' 134000 000001 18070 XSS: ILDB 0,T1 ;THEN THE BASE FOR GENERATED 002231' 326000 002233' 18080 JUMPN 0,.+2 ;DESTINATION FILES FROM 002232' 201000 000070 18090 MOVEI 0,"X"-40 ;NON-DIR. DEVICES IN /X 002233' 137000 000001 18100 DPB 0,T1 002234' 367100 002230' 18110 SOJG T2,XSS ;DON'T YET KNOW IF ONE 18120 ;OF THE INPUT DEV. WILL 002235' 200000 004044' 18130 MOVE 0,DTON ;BE NON-DIR 002236' 202000 004021' 18140 MOVEM 0,DTONSV 002237' 200000 004045' 18150 MOVE 0,DTON+1 002240' 202000 004022' 18160 MOVEM 0,DTONSV+1 002241' 260240 002371' 18180 COPY1: PUSHJ P,SR2 ;SET INIT. COPYING MODE 002242' 260240 002566' 18190 PUSHJ P,LOOK ;GET A FILE TO COPY 002243' 254000 002317' 18200 JRST CAL6 ;NO MORE 18210 IFN FTDSK<PUSHJ P,XDDSK ;GOT ONE, CHECK (XD) FROM DSK, NAMTAB 18220 JRST COPY1 ;IN LIST, DON'T COPY> 002244' 606540 201500 18230 TRNN AUXFLG,MTAIN+PPTIN+CDRIN+TTYIN ;OK, COPY FILE 002245' 254000 002250' 18240 JRST COPY6A ;MUST BE DIRECTORY DEVICE 002246' 260240 002337' 18250 PUSHJ P,MTPTCR ;SET UP A DEST. FN. 002247' 254000 002252' 18260 JRST COPY6 PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 46 VJC/PMH/AK-DAG/DMN 8-JUL-70 002250' 076140 004052' 18280 COPY6A: LOOKUP IN,ZRF ;LOOKUP INPUT FILE NAME 002251' 254000 002315' 18290 JRST CAL5 ;INPUT FILE FILE PROTECTED 002252' 260240 003353' 18300 COPY6: PUSHJ P,FILTYP ;CHECK FOR DMP,SAV,REL,CHN 18310 IFN WCH,< 18320 TRNN AUXFLG,DTAIN+DTAOUT 18330 JRST .+5 18340 HLRZ 0,ZRF+1 18350 CAIE 0,(SIXBIT /DMP/) 18360 IFN DISK30,<CAIN 0,(SIXBIT/SVE/)> 18370 IFE DISK30,<CAIN 0,(SIXBIT/SAV/)> 18380 JRST COPY1> 002253' 260240 002323' 18390 PUSHJ P,COPY3 002254' 200000 004052' 18400 COPY6B: MOVE 0,ZRF ;INPUT FILE NAME 002255' 202000 004044' 18410 MOVEM 0,DTON ;IS OUTPUT FILE NAME 002256' 510000 004053' 18420 HLLZ 0,ZRF+1 ;LIKEWISE EXT 002257' 512000 004045' 18430 HLLZM 0,DTON+1 18450 ;THIS CODE OPERATES AS FOLLOWS - FOR E+2, SET = 0 18460 ;TO START (ASSUMING /X) 18470 ;DSK TO DSK IF EDIT SWITCHES PUT E+2 = 0 IF NO EDITS TRANSFER 18480 ; DATE, TIME, BITS 13-35 18490 ;DSK TO DTA FOR EDITS E+2 = 0, NO EDITS TRANSFER 24-35 FOR 18500 ;DATE, FOR"SAV" FILES TRANSLATE NO. 1K BLOCKS 18510 ;DTA TO DSK FOR NO EDITS XFER BITS 24-35, ELSE E+2 = 0 18520 ;DTA TO DTA ALWAYS XFER 18-23, (1K BLOCK) NO EDITS XFER 24-35(DATE) 002260' 402000 004046' 18540 SETZM DTON+2 ;CLEAR DATE. OUTPUT FILE, DSK/DTA 002261' 135000 003717' 18550 LDB 0,DATE ;GET DSK/DTA DATE CREATED 002262' 616300 004701' 18560 TDNN FLAG,[XWD PFLG,LINE+TBMOD+NSMOD+SQMOD+SPMOD] 002263' 603540 000040 18570 TLNE AUXFLG,CDRFLG 002264' 254000 002266' 18580 JRST COPY6C 002265' 137000 003720' 18590 DPB 0,DATED ;DEPOSIT IF NO EDITS 18600 IFN FTDSK,<LDB 0,TIME 18610 TRC AUXFLG,DSKIN+DSKOUT 18620 TRCN AUXFLG,DSKIN+DSKOUT 18630 DPB 0,TIMED ;DSK TO DSK TIME> 002266' 18640 COPY6C: IFE WCH,< 002266' 260240 002412' 18650 PUSHJ P,OKBLKS ;SETUP 1K BLOCKS> 002267' 077100 004044' 18660 ENTER OUT,DTON ;GOT DATA, CREATE NEW FILE 002270' 254000 002024' 18670 JRST ERR4 ;DIRECTORY FULL 002271' 200000 003721' 18680 MOVE 0,ZRO ;GET ASCII/00000/AND 002272' 202000 004014' 18690 MOVEM 0,SQNUM ;RESET SEQUENCE NO. 002273' 661300 000020 18700 TLO FLAG,NEWFIL ;SET NEW FILE FLAG 002274' 402000 004026' 18710 SETZM TOTBRK ;CLEAR PAREN COUNTER 002275' 607540 000044 18720 TLNN AUXFLG,CDRFLG+SBIN ;SPECIAL PROCESSING? 002276' 612300 004702' 18730 TDNE FLAG,[XWD PFLG+IFLG+IBFLG,LINE+BMOD+TBMOD+NSMOD+SQMOD+SPMOD] 002277' 254000 000343' 18740 JRST PSCAN ;YES, DO IT 002300' 375000 003744' 18750 COPY5: SOSGE IBF+2 ;INPUT BUFFER EMPTY? 002301' 254000 002305' 18760 JRST COPY4 ;YES 002302' 134200 003743' 18770 ILDB CHR,IBF+1 ;GET NEXT WORD AND 002303' 260240 000756' 18780 PUSHJ P,PUT ;OUTPUT IT 002304' 254000 002300' 18790 JRST COPY5 002305' 260240 002323' 18800 COPY4: PUSHJ P,COPY3 ;GET NEXT FULL SOURCE BLOCK PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 46-1 VJC/PMH/AK-DAG/DMN 8-JUL-70 002306' 260240 000762' 18810 PUSHJ P,OUTP ;OUTPUT PREV. BLOCK-DONT ALTER DATA 002307' 350000 003747' 18820 AOS OBF+2 ;MAKE PUT HAPPY BECAUSE OF 002310' 254000 002300' 18830 JRST COPY5 ;OUTPUT HERE. 002311' 070140 000000 18840 COPY2A: CLOSE IN, 002312' 070100 000000 18850 CLOSE OUT, 18860 IFN FTDSK,<TLNE AUXFLG,NSPROT ;NON-STANDARD PROTECTION? 18870 TRNN AUXFLG,DSKOUT ;RENAME ALL OUTPUT FILES IF 18880 JRST COPY2B ;NON-STANDARD PROTECTION 18890 MOVE 0,PROTS ;GET NEW PROTECTION 18900 MOVEM 0,DTON+2 18910 18920 RENAME OUT,DTON ;RENAME OUTPUT FILE 18930 JRST DERR6> 002313' 260240 000764' 18940 COPY2B: PUSHJ P,OUTP1 002314' 254000 002241' 18950 JRST COPY1 ;GO GET NEXT FILE 002315' 350000 004034' 18970 CAL5: AOS ZCNT ;INPUT FILE READ PROT. 002316' 254000 002241' 18980 JRST COPY1 ;COUNT READ FAILURES 19000 ;NO MORE FILES TO COPY 002317' 621540 000002 19020 CAL6: TLZ AUXFLG,NSPROT 19030 IFN FTDSK,< SKIPN ZCNT ;FILES READ PROTECTED ?> 002320' 254000 000411' 19040 JRST MAIN1 ;NO 19050 IFN FTDSK,<MOVSI T4,(SIXBIT /X/) ;YES,PRINT FAILURE DURING 19060 JRST DSKZ5 ;/X REQUEST> 002321' 332000 003744' 19080 COPY3B: SKIPE IBF+2 ;EMPTY BLOCK? 002322' 263240 000000 19090 POPJ P, ;NO, RETURN 002323' 260240 001616' 19110 COPY3: PUSHJ P,INP ;READ NEXT BLOCK 002324' 622540 002000 19120 TRZE AUXFLG,READ1 002325' 260240 002376' 19130 PUSHJ P,TTYZ ;END OF FILE FROM TTY? 002326' 606400 020000 19140 TRNN IOS,EOFBIT ;END OF FILE? IOS HAS STATUS BITS 002327' 254000 002321' 19150 JRST COPY3B ;NO. 002330' 262240 000000 19160 POP P,0 ;FIND WHERE CALLED FROM 002331' 553000 000000 19170 HRRZS 0 002332' 602540 201500 19180 TRNE AUXFLG,MTAIN+CDRIN+TTYIN+PPTIN 002333' 302000 002254' 19190 CAIE 0,COPY6B ;DID WE COME FROM COPY6B-1 002334' 254000 002311' 19200 JRST COPY2A ;NO, EOF NOT FIRST DATA IN FILE 002335' 620740 000037 19210 TRZ CALFLG,ALLCLF ;END OF INFO ON NON-DIR. DEVICE 002336' 254000 002241' 19220 JRST COPY1 PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 47 VJC/PMH/AK-DAG/DMN 8-JUL-70 19240 ;CREATE DESTINATION FILE NAME. RANGE IS ...001 TO ...999 002337' 350040 004051' 19260 MTPTCR: AOS T1,NO. 002340' 303040 001747 19270 CAILE T1,^D999 002341' 254000 002350' 19280 JRST MPC2 002342' 260240 002362' 19290 PUSHJ P,MTPTC1 002343' 200000 004021' 19300 MOVE 0,DTONSV ;FILNAM=DTON IS ONLY WAY TO IDENTIFY 002344' 202000 004052' 19310 MOVEM 0,ZRF ;INPUT FILE 002345' 200000 004022' 19320 MOVE 0,DTONSV+1 002346' 202000 004053' 19330 MOVEM 0,ZRF+1 002347' 263240 000000 19340 POPJ P, 002350' 265040 002155' 19350 MPC2: ERRPNT <Z?Terminate /X, max. of 999 files processed!Z> 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 19370 MTPTC1: MOVEI DOUT,^D1000(T1) 002363' 200040 004703' 19380 MOVE T1,[POINT 6,DTONSV,17] 002364' 265100 003235' 19390 JSP T2,OUTDC1 002365' 344100 001711' 19400 AOJA T2,CPOPJ 002366' 275200 000040 19410 SUBI CHR,40 002367' 136200 000001 19420 IDPB CHR,T1 002370' 263240 000000 19430 POPJ P, 19450 ;ROUTINE TO RESTORE BYTE POINTERS TO INITED MODE 19460 ;FOR INPUT AND OUTPUT DEVICES 002371' 200000 003740' 19480 SR2: MOVE 0,SVIBF 002372' 502000 003743' 19490 HLLM 0,IBF+1 002373' 200000 003741' 19500 MOVE 0,SVOBF 002374' 502000 003746' 19510 HLLM 0,OBF+1 002375' 263240 000000 19520 POPJ P, 19540 ;ROUTINE TO SEE IF ^Z FIRST CHAR ON TTY 002376' 606540 001000 19560 TTYZ: TRNN AUXFLG,TTYIN ;SEE IF FIRST CHAR. IS ^Z 002377' 263240 000000 19570 POPJ P, ;NOT TTY INPUT 002400' 550040 003743' 19580 HRRZ T1,IBF+1 ;ON TTY 002401' 554001 000001 19590 HLRZ 0,1(T1) ;GET FIRST CHARACTER 002402' 620000 003777 19600 TRZ 0,3777 ;CLEAR ANY OTHER CHAR. 002403' 306000 150000 19610 CAIN 0,(<CZ>B6) ;IS IT ^Z? 002404' 664400 020000 19620 TROA IOS,EOFBIT ;YES,SET END OF FILE 002405' 302000 104000 19630 CAIE 0,(<XON>B6) ;IS IT XON "^Q" 002406' 263240 000000 19640 POPJ P, ;NO 002407' 205000 774000 19650 MOVSI 0,(<DEL>B6) ;A RUBOUT 002410' 436001 000001 19660 IORM 1(T1) ;CLEAR "^Q" FROM BUFFER 002411' 263240 000000 19670 POPJ P, ;AND RETURN PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 48 VJC/PMH/AK-DAG/DMN 8-JUL-70 19690 IFE WCH,< 19700 ;DTA TO DTA MAINTAIN BITS 18-23 OF E+2 IF SET 19710 ;DSK TO DSK NO TRANSLATION (E+2) 19720 ;DSK TO DTA TRANSLATE E+3 (LHS) INTO E+2 (18-23) 19730 ;DTA TO DSK NO TRANSLATION (E+2) 19740 ;THIS ROUTINE ENSURES "SAVE" FILES MAINTAIN 19750 ;CORRECT DATA FOR LOADING. FOR DSK INPUT 19760 ;A "SAVE" FILE IS ONE WITH THE EXTENSION 19770 ;"SAV". E+3 = (-[(200XN)+NO. WDS IN LAST BLOCK] 19780 ;IN LHS TRANSLATE TO NO. 1K BLOCKS NEEDED 19790 ;TO LOAD FILE - BEFORE IT IS EXPANDED IN CORE. 002412' 606740 020000 19810 OKBLKS: TRNN CALFLG,RXFLG ;(RX)? 002413' 254000 002422' 19820 JRST OKBLK0 ;NO 002414' 200000 004647' 19830 MOVE 0,MATCH ;GET FILE NAME 002415' 554040 004650' 19840 HLRZ T1,MATCH+1 ;AND EXT. 002416' 312000 003730' 19850 CAME 0,STAR ;SKIP IF NAME IS "*" 002417' 202000 004044' 19860 MOVEM 0,DTON ;OTHERWISE REPLACE NAME 002420' 302040 120000 19870 CAIE T1,(SIXBIT /*/) ;SAME FOR EXT 002421' 506040 004045' 19880 HRLM T1,DTON+1 002422' 200000 004044' 19890 OKBLK0: MOVE 0,DTON ;GET OUTPUT FILE NAME 002423' 554040 004045' 19900 HLRZ T1,DTON+1 ;AND EXT 002424' 302040 120000 19910 CAIE T1,(SIXBIT /*/) ;IS IT "*" 002425' 316000 003730' 19920 CAMN 0,STAR ;IS IT "*" 002426' 254000 002033' 19930 JRST ERR4B ;YES, ERROR 19950 REPEAT 0,< ;NEEDS FIX TO TENDMP OR MONITOR 19960 TRNE AUXFLG,DTAOUT ;OUTPUT TO DTA? 19970 CAIE T1,(SIXBIT /SAV/) ;AND A SAV FILE? 19980 SKIP 1 ;NO 19990 UGETF OUT,0 ;SET TO FIRST FREE BLOCK 20000 > 20020 IFN FTDSK,<TRC AUXFLG,DSKIN+DSKOUT ;DSK I/O 20030 TRCN AUXFLG,DSKIN+DSKOUT 20040 POPJ P, ;YES, EXIT 20050 TRC AUXFLG,DTAIN+DTAOUT ;NO 20060 TRCE AUXFLG,DTAIN+DTAOUT ;DTA I/O 20070 JRST OKBLK1 ;NO> 002427' 135000 003716' 20080 LDB 0,OKB ;DTA I/O - 1K BLKS 002430' 137000 003715' 20090 DPB 0,OKBD ;DEPOSIT IN DTON 002431' 263240 000000 20100 POPJ P, 20120 IFN FTDSK,< 20130 OKBLK1: TRC AUXFLG,DTAIN+DSKOUT ;DTA-TO-DSK 20140 TRCN AUXFLG,DTAIN+DSKOUT 20150 POPJ P, ;YES 20160 TRC AUXFLG,DSKIN+DTAOUT ;NO,DSK-TO-DTA? 20170 TRCE AUXFLG,DSKIN+DTAOUT ;NO 20180 POPJ P, 20190 HLRZ 0,ZRF+1 ;YES DSK-TO-DTA 20200 IFE DISK30,< 20210 CAIE 0,(SIXBIT /SAV/) ;GET LOOKED UP EXT,(INPUT). PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 48-1 VJC/PMH/AK-DAG/DMN 8-JUL-70 20220 > 20230 IFN DISK30,<CAIE 0,SIXBIT /SVE/> 20240 POPJ P, 20250 HLRO T1,ZRF+3 ;EXTENSION=SAV 20260 MOVNS T1 ;WORD COUNT 20270 IDIVI T1,2000 ;DIVIDE BY 1K CORE(OCTAL LOCS.) 20280 JUMPN T2,.+2 20290 SOJ T1, ;N-1 20300 DPB T1,OKBD 20310 POPJ P,>> PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 49 VJC/PMH/AK-DAG/DMN 8-JUL-70 20340 IFN FTDSK,< 20350 ;ARE WE DOING (XD) FROM DSK? IF NOT, EXIT. 20360 ;SEE IF CURRENT FILE SELECTED IN ZRF IS IN THE 20370 ;LIST OF FILES NOT TO BE COPIED. (POPJ IF IT IS) 20380 20390 XDDSK: TRC FLAG,XFLG+DFLG ;COMPLEMENT 20400 TRCN FLAG,XFLG+DFLG ;RESET AND TEST 20410 TRNN AUXFLG,DSKIN ;/X AND /D WERE SET 20420 JRST CPOPJ1 ;NOT DSKIN SO COPY FILE 20430 HRROI T1,-12 ;SET TO LOOP NAMTAB 20440 XDDSK2: MOVE T2,ZRF ;GET FILE NAME 20450 SKIPN T3,NAMTAB+12(T1) ;END OF TABLE ENTRIES? 20460 JRST CPOPJ1 ;YES, EXIT 20470 CAME T2,T3 ;FN IS * OR MATCH? 20480 CAMN T3,STAR 20490 SKIP 1 ;YES, * OR MATCH? 20500 JRST XDDSK1 ;NO MATCH 20510 HLLZ T2,ZRF+1 ;GET EXT 20520 SKIPN T3,NAMTAB+24(T1) ;NO EXT MATCH WANTED 20530 POPJ P, ;EXIT THEN 20540 CAME T2,T3 ;EXT IS * OR MATCH? 20550 CAMN T3,STAR 20560 POPJ P, ;FN EX MATCH, NO COPY 20570 XDDSK1: AOJL T1,XDDSK2 ;TRY ANOTHER FOR MATCH 20580 JRST CPOPJ1 ;SEARCHED TABLE, NO MATCH> PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 50 VJC/PMH/AK-DAG/DMN 8-JUL-70 20600 ;ROUTINE TO DELETE OR RENAME FILES ON DTA OR DSK OR SET UP NAMTAB 20610 ;FOR (DX) (DISK ONLY) 002432' 602300 002000 20630 DTDELE: TRNE FLAG,XFLG ;/X 002433' 254000 002443' 20640 JRST DELE1 ;YES 002434' 606300 000010 20650 TRNN FLAG,DFLG ;/D NEED EXPLICIT DEVICE 002435' 254000 002440' 20660 SKIP 2 002436' 606740 000200 20670 TRNN CALFLG,DVSWTH ;-1 IF DEVICE SEEN 002437' 254000 002122' 20680 JRST ERR8 ;NO, ERROR 002440' 200000 004634' 20690 MOVE 0,ODEV ;OUTPUT DEVICE 002441' 202000 004637' 20700 MOVEM 0,DEVICE ;NO,SET DEVICE FOR INPUT 002442' 202000 004050' 20710 MOVEM 0,DEVA 002443' 620540 261500 20720 DELE1: TRZ AUXFLG,DTAIN+CDRIN+TTYIN+PPTIN+MTAIN+DSKIN 002444' 260240 002132' 20730 PUSHJ P,CHECK1 ;RESET INPUT DEVICE DESCRP 002445' 201000 003766' 20740 MOVEI 0,NAMTAB ;FOR /R GET NEW NAME 002446' 505000 004044' 20750 HRLI 0,DTON ;SET TO BLT OUTPUT DIRECT ENTRY 002447' 251000 003771' 20760 BLT 0,NAMTAB+3 ;TO NAMTAB 002450' 606540 060000 20780 TRNN AUXFLG,DTAIN+DSKIN 002451' 254000 002066' 20790 JRST ERR5 ;NOT DTA OR DSK 002452' 260240 002746' 20800 PUSHJ P,FNSET ;SET UP CALFLG CORRECTLY 002453' 602300 002000 20810 TRNE FLAG,XFLG ;/X? 002454' 254000 002456' 20820 JRST DTD1 ;YES, (DX). RX ILLEGAL 20830 IFN FTDSK,<TRNE AUXFLG,DSKOUT ;NO, HAS TO BE /D OR /R 20840 JRST DSKDR0 ;ON DSK> 002455' 254000 002460' 20850 JRST DTADR ;OR DTA 002456' 20870 DTD1: 20880 IFN FTDSK,<TRNE AUXFLG,DSKIN ;DSK INPUT? 20890 JRST DTD1A ;YES> 002456' 260240 003271' 20900 PUSHJ P,DTCHECK ;NO, HAS TO BE DTA, GET DIR 002457' 254000 002466' 20910 JRST DELE3 ;DELETE, FILES FROM DIR 20920 IFN FTDSK,< 20930 DTD1A: SETZM NAMTAB ;COLLECT NAMES FOR DX, DSK SOURCE 20940 MOVE T1,[XWD NAMTAB,NAMTAB+1] 20950 BLT T1,NAMTAB+23 ;FIRST CLEAR TABLE 20960 MOVEI T1,NAMTAB ;LOCATION OF NAMTAB 20970 MOVEM T1,LOCNAM 20980 DTD4: MOVE 0,FILNAM 20990 JUMPE 0,DTD4A ;FN=0 ILLEGAL 21000 MOVE T1,LOCNAM 21010 MOVEM 0,(T1) ;STORE FILENAME FROM CS 21020 MOVE 0,FILEX ;STORE FILE EXT 21030 MOVEM 0,12(T1) ;TABLE FULL? 21040 MOVEI T2,NAMTAB+11 21050 CAMN T2,T1 21060 SOS ESWTCH ;YES 21070 SKIPE ESWTCH ;NO, END OF CS SCAN? 21080 JRST DTD2 ;END OF NAME PROCESSING 21090 AOS T1,LOCNAM ;SET TO STORE IN NEXT SLOT NAMTAB 21100 DTD4B: PUSHJ P,DESCRP ;NO, GET NEXT FILENAME FROM CS 21110 TRNE CALFLG,NEWPP!NEWDEV 21120 JRST ERR5A ;ERROR, NEW DEV OR# PP PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 50-1 VJC/PMH/AK-DAG/DMN 8-JUL-70 21130 JRST DTD4 21140 DTD4A: PUSHJ P,ERR3A 21150 JRST DTD4B 21160 21170 ;END OF CS OR NAMTAB FULL 21180 DTD2: PUSHJ P,ININIT ;INIT INPUT FILE 21190 MOVEI T1,1 ;SET TO RETURN DTCOPY+1 21200 JRST DTD5> PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 51 VJC/PMH/AK-DAG/DMN 8-JUL-70 21220 ;ROUTINE TO DELETE OR RENAME FILES ON DTA 002460' 260240 003271' 21240 DTADR: PUSHJ P,DTCHECK ;GO GET DTA DIRECTORY 002461' 200040 003742' 21250 MOVE T1,IBF ;CURRENT INPUT BUFFER 21260 IFN WCH,< 21270 USETO OUT,1 ;TRY TO WRITE OUTPUT TAPE 21280 > ;DETERMINE IF WRITE LOCKED 21290 IFE WCH,< 002462' 075100 000144 21300 USETO OUT,144> ;THIS SHOULD GIVE ERROR MSG 002463' 067101 000000 21310 OUTPUT OUT,(T1) ;IF DTA WRITE LOCKED 002464' 260240 003271' 21320 PUSHJ P,DTCHECK ;GO GET DTA DIRECTORY 002465' 260240 002711' 21340 PUSHJ P,INFO ;WRITE "FILES DELETED/RENAME 21360 ;********************************************************************* 21390 ;LOOP TO DELETE/RENAME. FOR (DX) DELETE FILES FROM DTA DIR 21400 ;THEN USE REVISED DIRECTORY TO COPY ALL REMAINING FILES 002466' 260240 002566' 21430 DELE3: PUSHJ P,LOOK ;GET FILE TO DELETE OR RENAME FROM CS 002467' 254000 002513' 21440 JRST DELE5 ;NO MORE FILES 002470' 606300 002000 21450 TRNN FLAG,XFLG ;/X? 002471' 260240 002743' 21460 PUSHJ P,INFO3 ;PRINT FILENAME-EXT 002472' 200040 004012' 21470 MOVE T1,DIRST ;GOT A MATCH - PROCESS IT 002473' 602300 000100 21480 TRNE FLAG,RFLG ;AND IT IS AT (T5) IN (DTA) DIR 002474' 254000 002522' 21490 JRST DTRNAM ;RENAME 21500 IFN WCH,< 21510 SKIPA T2,T1 21520 ADDI T2,4 21530 SKIPE 4(T2) 21540 JRST .-2 21550 HRLS T1 21560 ADDI T1,4 ;GET TO END OF NAMES 21570 MOVSS T1 ;BLOCK UP DIR 21580 BLT T1,-1(T2) ;ZERO OUT LAST 4 WORDS 21590 SETZM (T2) 21600 SETZM 1(T2) 21610 SETZM 2(T2) 21620 SETZM 3(T2) 21630 MOVE T1,DIRST1 21640 MOVEM T1,DIRST 21650 JRST DELE3> 21660 IFE WCH,< 002475' 402001 000000 21670 SETZM (T1) ;DELETE FILENAME IN CORE DIRECT 002476' 402001 000026 21680 SETZM 26(T1) ;DELETE EXT 002477' 274040 004013' 21690 SUB T1,DIRST1 ;GET FILE "NUMBER" (POS IN DIRECT) 002500' 201140 001102 21700 MOVEI T3,1102 ;TO LOOK AT ALL BLOCKS 002501' 205100 440500 21710 MOVSI T2,(POINT 5,0) 002502' 540100 004013' 21720 HRR T2,DIRST1 ;TO CALCULATE ADDRESS OF FIRST WORD 002503' 275100 000122 21730 SUBI T2,122 ;OF BLOCK TABLE IN DIRECTORY 002504' 363140 002466' 21740 DELE2: SOJLE T3,DELE3 ;LOOK AT 1101 BLOCKS PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 51-1 VJC/PMH/AK-DAG/DMN 8-JUL-70 002505' 134000 000002 21750 ILDB 0,T2 ;GET BLOCK NUMBER 002506' 312000 000001 21760 CAME 0,T1 ;IS IT SAME AS FILE "NUMBER" 002507' 254000 002504' 21770 JRST DELE2 ;NO IGNORE 002510' 400000 000000 21780 SETZ 0, ;FREE THE BLOCKS OF THIS FILE 002511' 137000 000002 21790 DPB 0,T2 ;CLEAR OUT BLOCK NUMBER 002512' 254000 002504' 21800 JRST DELE2> ;LOOP ON 1102 BLOCKS 002513' 200040 003742' 21810 DELE5: MOVE T1,IBF ;LOC OF INPUT BUFFER 002514' 602300 002000 21820 TRNE FLAG,XFLG ;DX SWITCH? 002515' 254000 002543' 21830 JRST DTD6 ;YES, NOW MUST COPY REMAINING FILES 21840 IFN WCH,< 21850 USETO OUT,1> 21860 IFE WCH,< 002516' 075100 000144 21870 USETO OUT,144> 002517' 067101 000000 21880 OUTPUT OUT,(T1) ;OUTPUT DTA DIRECTORY 002520' 071040 000000 21890 RELEAS CON, ;OUTPUT DELETE OR RENAME INFO TO TTY 002521' 254000 000415' 21900 JRST MAINB PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 52 VJC/PMH/AK-DAG/DMN 8-JUL-70 21920 ;ROUTINE TO RENAME FILE ON DECTAPE 002522' 260240 002553' 21940 DTRNAM: PUSHJ P,RENAME 002523' 402000 004046' 21950 SETZM DTON+2 ;MAKE MONITOR SUPPLY 002524' 402000 004047' 21960 SETZM DTON+3 ;DATE TIME 002525' 076100 004044' 21970 LOOKUP OUT,DTON ;LOOK UP FILENAME-EXT ON OUTPUT DEV 002526' 254000 002530' 21980 SKIP 1 ;NO FILE ALREADY OF DESTINATION NAME 002527' 254000 002536' 21990 JRST DTRNM1 002530' 200000 004044' 22000 MOVE 0,DTON ;RENAME, FILENAME 002531' 322000 002466' 22010 JUMPE 0,DELE3 ;BUT NOT IF ZERO 002532' 202001 000000 22020 MOVEM 0,(T1) ;PUT IN DIRECTORY 002533' 200000 004045' 22030 MOVE 0,DTON+1 ;GET EXT 22040 IFE WCH,< 002534' 502001 000026 22050 HLLM 0,26(T1)> ;RENAME, EXT 22060 IFN WCH,< 22070 HLLM 0,1(T1)> 002535' 254000 002466' 22080 JRST DELE3 002536' 550100 003742' 22090 DTRNM1: HRRZ T2,IBF ; GET PROTECTION DIR SLOT 002537' 135000 004704' 22100 LDB 0,[POINT 5,17(T2),14] 002540' 302000 000036 22110 CAIE 0,36 ; FILE PROTECTION ? 002541' 254000 001762' 22120 JRST ERR9 ; NO,ILLEGAL FILE NAME 002542' 254000 002466' 22130 JRST DELE3 ; RENAME DONE AT MAINB 22150 ;END OF LOOP 22160 ;********************************************************************* 22170 ;DX SWITCH ON, COPY ALL BUT SPECIFIED FILES. I.E. THOSE NOT DELETED 002543' 201040 000000 22190 DTD6: MOVEI T1,0 ;SET TO RETURN TO DTCOPY 002544' 205000 120000 22200 DTD5: MOVSI 0,(SIXBIT /*/) 002545' 202000 004040' 22210 MOVEM 0,FILNAM ;FORCE COPY-ALL 002546' 202000 004041' 22220 MOVEM 0,FILEX ;BY MAKING FILE-EXT=*.* 002547' 260240 002746' 22230 PUSHJ P,FNSET ;FIND DETAILS OF FILE-EXT 002550' 602540 020000 22240 TRNE AUXFLG,DTAIN ;DTA INPUT 002551' 260240 003277' 22250 PUSHJ P,DTCH1 ;INIT DIRST,DIRST1 22260 IFN RIMSW, < 22270 TLNE FLAG,RIMFLG ;NO 22280 JRST RIMTB 22290 > 002552' 254001 002224' 22300 JRST DTCOPY(T1) 22330 ;SET UP OUTPUT DIRECTORY ENTRY FOR RENAME 22340 ;ONLY ONE FILE NAME ALLOWED, BUT MAY BE *.EXT OR FN.* 002553' 331000 004134' 22360 RENAME: SKIPL ESWTCH ;SKIP IF CR,LF SEEN IN C.S. 002554' 254000 002040' 22370 JRST ERR6A ;ONLY 1 SOURCE FILE DESCRIPTOR ALLOWED 002555' 554000 003767' 22380 HLRZ 0,NAMTAB+1 ;GET EXT 002556' 306000 120000 22390 CAIN 0,(SIXBIT /*/) ;USE SPEC. EXTENSION, BUT IF 002557' 554000 004053' 22400 HLRZ 0,ZRF+1 ;EXT.=*, USE SOURCE EXTENSION 002560' 506000 004045' 22410 HRLM 0,DTON+1 ;USE SPECIFIED EXT 002561' 200100 003766' 22420 MOVE T2,NAMTAB ;USE SPEC. FN, BUT IF 002562' 316100 003730' 22430 CAMN T2,STAR ;FN=* OR 0, USE SOURCE FILENAME 002563' 200100 004052' 22440 MOVE T2,ZRF ;SOURCE FILE NAME=DEST PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 52-1 VJC/PMH/AK-DAG/DMN 8-JUL-70 002564' 202100 004044' 22450 MOVEM T2,DTON ;USE SPECIFIED FILENAME 002565' 263240 000000 22460 POPJ P, PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 53 VJC/PMH/AK-DAG/DMN 8-JUL-70 22510 ;THIS ROUTINE GETS NEXT FILENAME.EXT FROM CS 22520 ;THEN SEES IF ONE IN DIRECTORY MATCHES 22530 ;IF IT DOES - EXIT IS CPOPJ1 22540 ;NO-MORE-FN.EX-TO-HANDLE-EXIT IS POPJ 22550 ;PREPARE ZRF FOR A "LOOKUP" ON THE NEXT REQUESTED FILE. 002566' 602740 000001 22570 LOOK: TRNE CALFLG,FNEX ;DOES FILNAM, FILEX CONTAIN 002567' 254000 002572' 22580 JRST LOOK6 ;A FILE TO THINK ABOUT? YES 002570' 260240 002767' 22590 LOOK01: PUSHJ P,LOOKA ;GET ONE (NOTE: DEVICE MAY ALTER) 002571' 263240 000000 22600 POPJ P, ;NONE, END OF CS 22610 ;RETURN SKIP FROM LOOKA 002572' 200100 004041' 22620 LOOK6: MOVE T2,FILEX ;GET FILE EXT INTO T2 002573' 336040 004040' 22630 SKIPN T1,FILNAM ;FILNAME AND EXT=0? 002574' 332100 004041' 22640 SKIPE T2,FILEX 002575' 254000 002577' 22650 SKIP 1 ;EITHER FN OR EX N.E.0 002576' 254000 002650' 22660 JRST LOOK7C ;FN.EX=0, ONE FILE COPY 002577' 312040 003730' 22670 CAME T1,STAR ;FILNAME OR EXT=*? 002600' 316100 003730' 22680 CAMN T2,STAR 002601' 254000 002640' 22690 JRST LOOK7A ;FN OR EX=*, MANY FILES 002602' 602540 060000 22710 TRNE AUXFLG,DTAIN+DSKIN ;DONT REQUIRE FILENAME 002603' 322040 002616' 22720 JUMPE T1,LOOK6C ;HERE FOR 0.EX,FN.EX OR FN.0,0.EX ILLEGAL 002604' 620740 000001 22730 LOOK7B: TRZ CALFLG,FNEX ;IF HERE, ONLY ONE FILE WAS ENTAILED IN REQUEST. 002605' 606540 060000 22740 TRNN AUXFLG,DTAIN+DSKIN 002606' 254000 002635' 22750 JRST LOOK4 ;GOT A FILE TO HANDLE 002607' 260240 002662' 22770 LOOK8: PUSHJ P,PICUP ;GET A FILE (ANY) FROM DIRECTORY 002610' 254000 002623' 22780 JRST LOOK2 ;WE GOT A FILE, DOES IT MATCH? 002611' 622740 000001 22790 TRZE CALFLG,FNEX ;SEE IF A PARTIC. FILE WAS REQUESTED? 002612' 254000 002620' 22800 JRST LOOK6D ;NO 002613' 254000 002616' 22810 JRST LOOK6C ;YES 002614' 260240 002005' 22830 LOOK6A: PUSHJ P,ERR3A 002615' 254000 001107' 22840 JRST IOERRN ;NO RECOVERY 002616' 260240 002005' 22850 LOOK6C: PUSHJ P,ERR3A 002617' 254000 002570' 22860 JRST LOOK01 ;GET NEXT FILE FROM CS 002620' 626740 000040 22880 LOOK6D: TRZN CALFLG,ASTFLG ;DID WE FIND AT LEAST ONE 002621' 260240 002005' 22890 PUSHJ P,ERR3A ;NO, PRINT MSG. 002622' 254000 002566' 22900 JRST LOOK ;GET NEXT FILE FROM CS 22910 ;CHECK IF FILE.EXT IN DIRECTORY MATCHES FILE TO /D,/R 22920 ;NOTE WE MAY HAVE *.EXT,FIL.*, OR *.* 002623' 606740 000004 22950 LOOK2: TRNN CALFLG,MATFN ;SHOULD FILENAMES MATCH 002624' 254000 002630' 22960 JRST LOOK3 ;NO 002625' 200040 004040' 22970 MOVE T1,FILNAM ;YES 002626' 312040 004052' 22980 CAME T1,ZRF 002627' 254000 002607' 22990 JRST LOOK8 ;NO MATCH 002630' 606740 000002 23010 LOOK3: TRNN CALFLG,MATEX ;SHOULD EXTENSIONS MATCH 002631' 254000 002635' 23020 JRST LOOK5 ;NO 002632' 200040 004041' 23030 MOVE T1,FILEX ;YES PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 53-1 VJC/PMH/AK-DAG/DMN 8-JUL-70 002633' 312040 004053' 23040 CAME T1,ZRF+1 002634' 254000 002607' 23050 JRST LOOK8 ;NO MATCH 23060 LOOK5: IFN DISK30,< 23070 TRNN AUXFLG,DSKIN ;DSK INPUT? 23080 JRST LOOK4 ;NO 23090 LDB T1,UFDIN+1 ;PICKUP P-P# IN DIRECTORY 23100 HRRZM T1,T2 23110 CAME T2,MASK ;COMPARE WITH OWN P-P# 23120 JRST LOOK8 ;NO MATCH> 002635' 660540 002000 23130 LOOK4: TRO AUXFLG,READ1 ;READY FOR FIRST READ 002636' 660740 000040 23140 TRO CALFLG,ASTFLG ;FOUND A FILE *.EXT, F.*,*.* 002637' 254000 001707' 23150 JRST CPOPJ1 ;MATCH OR NO CARES 23170 ;FILENAME OR EXT=* 002640' 322100 002642' 23180 LOOK7A: JUMPE T2,.+2 ;EXT=0? 002641' 316100 003730' 23190 CAMN T2,STAR ;NO, 002642' 312040 003730' 23200 CAME T1,STAR 002643' 254000 002645' 23210 SKIP 1 002644' 254000 002655' 23220 JRST LOOK1 ;*.* ALWAYS O.K. AND * 002645' 606540 060000 23230 TRNN AUXFLG,DSKIN+DTAIN 002646' 254000 002614' 23240 JRST LOOK6A ;*.A OR * ON NON-DIRECT DEV 002647' 254000 002607' 23250 JRST LOOK8 002650' 602540 060000 23270 LOOK7C: TRNE AUXFLG,DSKIN+DTAIN 002651' 254000 002616' 23280 JRST LOOK6C ;0.0 ON DIR DEVICE 002652' 402000 004052' 23290 SETZM ZRF 002653' 402000 004053' 23300 SETZM ZRF+1 002654' 254000 002604' 23310 JRST LOOK7B ;0.0 ON NON-DIR. DEV. 002655' 602540 060000 23330 LOOK1: TRNE AUXFLG,DTAIN+DSKIN 002656' 254000 002607' 23340 JRST LOOK8 002657' 402000 004052' 23350 SETZM ZRF 002660' 402000 004053' 23360 SETZM ZRF+1 002661' 254000 002635' 23370 JRST LOOK4 PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 54 VJC/PMH/AK-DAG/DMN 8-JUL-70 23390 ;ROUTINE TO GET NEXT FILE NAME FROM DIRECTORY 23400 ;FILNAM, FILEX CONTAIN THE FILE NAME. EXT TO BE 23410 ;MATCHED WITH DIR. NAMES. PUT SUGGESTED FILE 23420 ;NAME EXT IN ZRF, ZRF+1 AND #P-P IN ZRF+3 23430 ;NOTE THAT WE HAVE TO HANDLE *.EXT,FILE.* 002662' 23450 PICUP: 23460 IFN FTDSK,<TRNN AUXFLG,DSKIN ;DSK INPUT? 23470 JRST PICUP2 ;N0, DTA 23480 SOSLE UFDIN+2 ;YES 23490 JRST .+3 23500 PICUP1: PUSHJ P,UIN ;INPUT USER'S FILE DIRECTORY 23510 JRST CPOPJ1 ;EOF ON DSK 23520 ILDB 0,UFDIN+1 ;PICK UP FILENAME 23530 JUMPE 0,PICUP1 ;IGNORE NULL 23540 MOVEM 0,ZRF ;SET FILE NAME 23550 MOVE 0,FNPPN 23560 MOVEM 0,ZRF+3 ;SET DSK #P-P 23570 SOS UFDIN+2 ;COUNT DOWN FOR NEXT TIME 23580 ILDB 0,UFDIN+1 ;SET FILE EX 23590 HLLZM 0,ZRF+1 23600 IFN DISK30,< 23610 IBP UFDIN+1 ;INCREMENT POINTER TO GET PROJ,PROG # 23620 IBP UFDIN+1> 23630 POPJ P,> 002662' 23650 PICUP2: 23660 IFN WCH,< 23670 MOVE T5,DIRST ;DIRST=LOC 4 FIRST TIME THRU 23680 ADDI T5,4 ;CALCULATE FIRST/NEXT FILENAME 23690 MOVEM T5,DIRST 23700 MOVE 0,(T5) 23710 JUMPE 0,CPOPJ1 ;NO MORE FILENAMES IN DIRECTORY 23720 MOVEM 0,ZRF 23730 MOVE 0,1(T5)> 23740 IFE WCH,< 002662' 200140 004013' 23750 MOVE T3,DIRST1 ;SETUP TO CHECK ALL FILENAME SLOTS 002663' 271140 000026 23760 ADDI T3,26 ;IN DIRECTORY (22 FILE NAMES) 002664' 200440 004012' 23770 MOVE T5,DIRST ;LOC OF FIRST/NEXT FILE 002665' 271440 000001 23780 PICUP4: ADDI T5,1 ; 002666' 313440 000003 23790 CAMLE T5,T3 ;END OF FILE SLOTS? 002667' 254000 001707' 23800 JRST CPOPJ1 ;END OF FILE NAMES 002670' 202440 004012' 23810 MOVEM T5,DIRST ;NEXT SLOT TO LOOK AT 002671' 200011 000000 23820 MOVE 0,(T5) ;GOT FILE NAME FROM DIRECT 002672' 322000 002665' 23830 JUMPE 0,PICUP4 ;IGNORE IF 0 002673' 202000 004052' 23840 MOVEM 0,ZRF 002674' 200011 000026 23850 MOVE 0,26(T5)> ;GET EXT ETC 002675' 512000 004053' 23860 HLLZM 0,ZRF+1 002676' 200000 004043' 23870 MOVE 0,PP 002677' 202000 004055' 23880 MOVEM 0,ZRF+3 002700' 263240 000000 23890 POPJ P, PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 55 VJC/PMH/AK-DAG/DMN 8-JUL-70 23910 ;READ DTA DIR. AND PREPARE T5 TO PICK UP FIRST ENTRY. 002701' 260240 003272' 23930 DTADIR: PUSHJ P,DTCH2 ;READ DTA DIR INTO INPUT BUF 002702' 201140 004400' 23940 DTADI1: MOVEI T3,DBUF ;SET BLT FROM INBUF TO DBUF 002703' 504140 000011 23950 HRL T3,T5 ;FIRST DATA WORD OF DIRECTORY IN T5 23960 IFN WCH,< 23970 MOVNS T2 23980 BLT T3,DBUF+176(T2) 23990 SETZM DBUF+177(T2) 24000 MOVEI T5,DBUF-4> 24010 IFE WCH,< 002704' 251140 004576' 24020 BLT T3,DBUF+176 ;MOVE FROM INBUF TO DBUF 002705' 201440 004522' 24030 MOVEI T5,DBUF+123-1> ;LOC OF FIRST FILE NAME 002706' 202440 004012' 24040 MOVEM T5,DIRST ;T5 POINTS TO FILNAME JUST HANDLED 002707' 202440 004013' 24050 MOVEM T5,DIRST1 ;TO RESTORE DIRST 002710' 263240 000000 24060 POPJ P, ;(IE NONE BUT NEXT WILL BE FIRST) PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 56 VJC/PMH/AK-DAG/DMN 8-JUL-70 24100 ;ROUTINE TO OUTPUT FILENAMES THAT WERE DELETED OR RENAMED 24110 ;PRINT "FILES DELETED:" OR "FILES RENAMED:" 24120 ;ALSO USED TO PRINT "NO FILE NAMED XXX.XXX" 002711' 200040 003756' 24150 INFO: MOVE T1,TFO ;SETUP TTY FOR OUTPUT 002712' 200100 003753' 24160 MOVE T2,TFI ;SAVE BUFFER LOCS 002713' 260240 001410' 24170 PUSHJ P,INICON ;INIT TTY 002714' 562100 003753' 24180 HRROM T2,TFI ;SET BUFFER LOCS 002715' 562040 003756' 24190 HRROM T1,TFO 002716' 067040 000000 24200 OUTPUT CON, 002717' 623540 000100 24210 TLZE AUXFLG,INFOFL ;ERROR PRINT ONLY? 002720' 254000 002007' 24220 JRST ERR3AA ;YES 002721' 606300 000010 24230 TRNN FLAG,DFLG ;DELETE? 002722' 254000 002730' 24240 JRST INFO1 ;NO, MUST BE RENAME 002723' 265040 002166' 24250 ERRPN2 </Files deleted:/> 002724' 433235 462746 002725' 203114 566312 002726' 723134 435000 002727' 254000 002735' 24260 JRST INFO2 002730' 476000 004651' 24270 INFO1: SETOM RENSN ;DON'T PRINT IT TWICE 002731' 265040 002166' 24280 ERRPN2 </Files renamed:/> ;RENAME (/R) 002732' 433235 462746 002733' 203454 567302 002734' 667134 435000 002735' 201200 000015 24290 INFO2: MOVEI CHR,CR ;OUTPUT CR/LF 002736' 260240 002175' 24300 PUSHJ P,PUTCON ;ON TTY 002737' 201200 000012 24310 MOVEI CHR,LF 002740' 260240 002175' 24320 PUSHJ P,PUTCON 002741' 067040 000000 24330 OUTPUT CON, 002742' 263240 000000 24340 POPJ P, 24360 ;********************************************************************** 24370 ;PRINT FILENAME.EXT OR [P,P].UFD OF FILE DELETED 002743' 201140 004052' 24390 INFO3: MOVEI T3,ZRF ;LOCATION OF FILENAME 002744' 260240 001146' 24400 PUSHJ P,FN.EX 002745' 254000 002735' 24410 JRST INFO2 PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 57 VJC/PMH/AK-DAG/DMN 8-JUL-70 24430 ;/X OR /D. FIND OUT DETAILS OF FILE NAME AND 24440 ;EXTENSION (0 FN.EX=*.*) AND ANY CHANGE IN 24450 ;SOURCE DEV. SET BITS IN CALFLG. 002746' 620740 000037 24470 FNSET: TRZ CALFLG,ALLCLF ;CLEAR FLAGS ON ENTRY 002747' 660740 000001 24480 TRO CALFLG,FNEX 002750' 205000 120000 24490 MOVSI 0,(SIXBIT /*/) ;* TO AC0 002751' 312000 004040' 24500 CAME 0,FILNAM ;FILNAM=* OR 0? 002752' 336000 004040' 24510 SKIPN FILNAM 002753' 254000 002755' 24520 SKIP 1 ;FILENAME = * OR 0 002754' 660740 000004 24530 TRO CALFLG,MATFN ;FILENAME MUST BE MATCHED 002755' 336000 004041' 24540 SKIPN FILEX ;EXT=0? 002756' 606540 201500 24550 TRNN AUXFLG, MTAIN+CDRIN+PPTIN+TTYIN ;YES 002757' 316000 004041' 24560 CAMN 0,FILEX ;NO, EXT = *? 002760' 254000 002762' 24570 SKIP 1 ;YES 002761' 660740 000002 24580 TRO CALFLG,MATEX ;FILE EXTENSION MUST BE MATCHED 24590 IFN FTDSK,<TRNN AUXFLG,DSKIN 24600 JRST FNSET1 24610 SKIPN T2,PP 24620 JRST FNSET2 ;IF #P-P=0 IT IS COUNTED AS UNCHANGED 24630 CAME T2,FNPPN 24640 TRO CALFLG,NEWPP ;CHANGE IN # P-P 24650 JRST FNSET1 24660 FNSET2: MOVE T2,FNPPN ;IF P-P#=0, SET TO PREVIOUS VALUE 24670 MOVEM T2,PP> 002762' 200100 004637' 24680 FNSET1: MOVE T2,DEVICE 002763' 312100 004050' 24690 CAME T2,DEVA 002764' 660740 000010 24700 TRO CALFLG,NEWDEV ;CHANGE IN SOURCE DEV. 002765' 202100 004050' 24710 MOVEM T2,DEVA ;SET DEVA=DEVICE 002766' 263240 000000 24720 POPJ P, PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 58 VJC/PMH/AK-DAG/DMN 8-JUL-70 24740 ;POPJ EXIT IF END OF COMMAND STRING, OTHERWISE RESET 24750 ;POINTER TO START OF DIRECTORY, READING IN NEW DIR. 24760 ;IF DEV OR #P-P CHANGED (EXIT CPOPJ1) 24770 ;IF DIR. IS ON DSK RESET BY REINIT. 002767' 332340 004134' 24790 LOOKA: SKIPE T4,ESWTCH ;MORE C.S.? 002770' 263240 000000 24800 POPJ P, ;NO 002771' 260240 000451' 24810 PUSHJ P,DESCRP ;YES, GET NEXT FN.EX FROM CS 002772' 260240 000204' 24820 PUSHJ P,INLOOK ;CHECK FOR MTA REQUESTS, MODE 002773' 260240 000154' 24830 PUSHJ P,M4 ;CHECK FOR /I,/B,/H 002774' 552340 004636' 24840 HRRZM T4,ININI1 ;SET MODE 002775' 071240 000000 24850 RELEAS DIR, 002776' 606540 201500 24860 TRNN AUXFLG,MTAIN+CDRIN+PPTIN+TTYIN ;NON-DIR DEVICE? 002777' 254000 003002' 24870 JRST LOOKF 003000' 602740 000006 24890 TRNE CALFLG,MATEX!MATFN ;YES, NO FN EX BUT *.* OR * ALLOWED 003001' 254000 002040' 24900 JRST ERR6A 003002' 606300 000010 24920 LOOKF: TRNN FLAG,DFLG ;FOR DELETE, ONE SOURCE FILE 003003' 254000 003006' 24930 JRST LOOKB ;... 003004' 602740 000030 24950 TRNE CALFLG,NEWDEV!NEWPP ;ONLY IS PERMITTED 003005' 254000 002060' 24960 JRST ERR5A 003006' 606740 000030 24980 LOOKB: TRNN CALFLG,NEWDEV!NEWPP ;PREPARE TO LOOK FOR NEW FILE 003007' 254000 003014' 24990 JRST LOOKC ;NAME AT HEAD OF DIRECTORY 003010' 260240 000426' 25010 PUSHJ P,ININIT ;INIT INPUT FILE 003011' 606540 060000 25020 TRNN AUXFLG,DTAIN+DSKIN 003012' 254000 001707' 25030 JRST CPOPJ1 25040 IFN FTDSK,<TRNN AUXFLG,DTAIN ;DTA INPUT? 25050 JRST LOOKD ;NO, MUST BE DSK> 003013' 260240 002701' 25060 PUSHJ P,DTADIR ;YES, READ IN DTA DIRECT 003014' 25080 LOOKC: 25090 IFN FTDSK,<TRNE AUXFLG,DSKIN ;DSK INPUT? 25100 JRST LOOKD ;YES> 003014' 200440 004013' 25110 MOVE T5,DIRST1 ;NO, RESET DIRECTORY START 003015' 202440 004012' 25120 MOVEM T5,DIRST 003016' 254000 001707' 25130 JRST CPOPJ1 25150 IFN FTDSK,< 25160 LOOKD: PUSHJ P,DSKDIR ;GET USER'S FILE DIRECTORY 25170 SETZM UFDIN+2 ;DSK DIR BUF EMPTY 25180 JRST CPOPJ1> PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 59 VJC/PMH/AK-DAG/DMN 8-JUL-70 25200 ;ROUTINE TO LIST DTA OR DSK DIRECTORIES 003017' 077100 004044' 25230 DTPDIR: ENTER OUT,DTON ;OUTPUT DEV,NROCT ENTRY 003020' 254000 002024' 25240 JRST ERR4 ;DIRECTORY FULL 25250 IFN FTDSK,<TRNE AUXFLG,FFLG ;/F? SHORT FORM? 25260 SKIPE DEVICE ;INPUT DEVICE SPECIFIED? 25270 JRST PDIR1A ;YES 25280 MOVSI 0,(SIXBIT/DSK/) 25290 DEVCHR 25300 JUMPE 0,PDIR1A ;NO DISK 25310 HRRZI 0,(SIXBIT /DSK/);ASSUME DSK IF NO DEVICE GIVEN 25320 HRLZM 0,DEVICE 25330 TROA AUXFLG,DSKIN ;SET DSK INPUT 25340 PDIR1A: TRNE AUXFLG,DSKIN ;DSK INPUT? 25350 JRST DSKLST ;YES, GO AND TRY TO LIST DSK> 003021' 606540 020000 25360 TRNN AUXFLG,DTAIN ;DECTAPE INPUT? 003022' 254000 002066' 25370 JRST ERR5 ;NOT DSK OR DTA. ERROR 25390 ;ROUTINE TO LIST DTA DIRECTORY. /L OR /F SWITCH 003023' 260240 003271' 25410 DTALST: PUSHJ P,DTCHECK ;CHECK FOR DTA INPUT-MUST BE DECTAPE AND 25420 ;GET DIRECTORY 003024' 260240 003205' 25430 PUSHJ P,CRLF ;PRINT NO. OF FREE BLOCKS LEFT 003025' 135040 004705' 25440 LDB T1,[POINT 5,16(T5),14] 003026' 302040 000036 25450 CAIE T1,36 ; SKIP DIR HEADER IF 003027' 254000 003070' 25460 JRST PDIR1B ; DECTAPE HAS NO PROTECTION U 003030' 334040 004706' 25470 LSTLIN HEDL1 ; PRINT HEADER 003031' 260240 000756' 003032' 134200 000001 003033' 326200 003031' 003034' 200100 003736' 25480 MOVE T2,DTAID 003035' 322100 003055' 25490 JUMPE T2,DTALS4 003036' 201100 000005 25500 MOVEI T2,5 ; CHARACTER COUNT 003037' 200000 004707' 25510 MOVE 0,[POINT 6,DTAID] 003040' 134200 000000 25520 ILDB CHR,0 ; GET CLASSIFICATION 003041' 302200 000023 25530 CAIE CHR,23 ; STD (I.E.=3) ? 003042' 344100 003052' 25540 AOJA T2,DTALS3 003043' 134200 000000 25550 DTALS1: ILDB CHR,0 ; GET NEXT DIGIT 003044' 271200 000040 25560 ADDI CHR,40 ; CONVERT TO ASCII 003045' 306200 000060 25570 CAIN CHR,"0" ; SUPPRESS LEADING ZEROS 003046' 367100 003043' 25580 SOJG T2,DTALS1 003047' 260240 000756' 25590 PUSHJ P,PUT 003050' 363100 003055' 25600 DTALS2: SOJLE T2,DTALS4 003051' 134200 000000 25610 ILDB CHR,0 003052' 271200 000040 25620 DTALS3: ADDI CHR,40 003053' 260240 000756' 25630 PUSHJ P,PUT 003054' 254000 003050' 25640 JRST DTALS2 003055' 201200 000133 25650 DTALS4: MOVEI CHR,"[" 003056' 260240 000756' 25660 PUSHJ P,PUT 003057' 554640 003737' 25670 HLRZ DOUT,DIRPPN 003060' 260240 003260' 25680 PUSHJ P,OUTDEC PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 59-1 VJC/PMH/AK-DAG/DMN 8-JUL-70 003061' 201200 000054 25690 MOVEI CHR,"," 003062' 260240 000756' 25700 PUSHJ P,PUT 003063' 550640 003737' 25710 HRRZ DOUT,DIRPPN 003064' 260240 003260' 25720 PUSHJ P,OUTDEC 003065' 201200 000135 25730 MOVEI CHR,"]" 003066' 260240 000756' 25740 PUSHJ P,PUT 003067' 260240 003205' 25750 PUSHJ P,CRLF 003070' 25760 PDIR1B: 25780 IFN WCH,< 25790 MOVE T1,IBF 25800 HLRZ DOUT,1(T1) ;GET FREE BLOCK POINTER 25810 MOVNS DOUT 25820 ADDI DOUT,1101 ;GET NO. OF FREE BLOCKS LESS FREE BLOCK NO. 25830 PUSHJ P,OUTDEC ;PRINT RESULT> 25840 IFE WCH,< 003070' 400640 000000 25850 SETZ DOUT, ;CLEAR NO. FREE BLOCKS 003071' 201340 001102 25860 MOVEI T4,1102 ;OCTAL NO. OF BLOCKS ON DECTAPE 003072' 205040 440500 25870 MOVSI T1,(POINT 5,0) ;5 BIT BYTES 003073' 550440 003742' 25880 HRRZ T5,IBF ;CURRENT INPUT BUFFER 003074' 271051 000001 25890 ADDI T1,1(T5) ;POINTER TO 1ST DATA WORD IN DIRECT 003075' 363340 003101' 25910 PDIR8: SOJLE T4,PDIR1 ;ALL THROUGH? 003076' 134140 000001 25920 ILDB T3,T1 ;CALCULATE NO. OF FREE BLOCKS 003077' 326140 003075' 25930 JUMPN T3,PDIR8 25950 ;THIS BLOCK FULL 003100' 344640 003075' 25960 AOJA DOUT,PDIR8 ;COUNT NO. WITH ZERO IN 003101' 260240 003260' 25970 PDIR1: PUSHJ P,OUTDEC ;PRINT RESULT> 003102' 200000 004710' 25980 MOVE 0,[POINT 6,PDIR7] 003103' 201100 000022 25990 MOVEI T2,^D18 ;SET LOOP TO DEPOSIT 18 CHARS 003104' 260240 003211' 26000 PUSHJ P,PDIR2 ;PRINT "FREE BLOCKS LEFT" MESSAGE 003105' 260240 003205' 26010 PUSHJ P,CRLF ;CARRIAGE RET, LINEFEED 003106' 260240 003277' 26020 PUSHJ P,DTCH1 ;FIX T5, TO POINT AT BEGIN OF DIR PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 60 VJC/PMH/AK-DAG/DMN 8-JUL-70 26040 ;LOOP TO EXAMINE FILE NAMES DTA DIRECTORY 003107' 26050 PDIR4: 26060 IFE WCH,< 003107' 336011 000123 26070 SKIPN 123(T5) ;NULL (=0) FILE NAME? 003110' 254000 003200' 26080 JRST PDIR6 ;YES SO LOOK FOR ANOTHER> 26090 IFN WCH,< 26100 SKIPN (T5) ;NULL (=0) FILE NAME? 26110 JRST MAIN1 ;YES, SO END OF DIR.> 003111' 201100 000006 26120 MOVEI T2,6 ;TRANSMIT UP TO 6 CHARACTERS 003112' 205000 440611 26130 MOVSI 0,440600+T5 ;SET UP SOURCE BYTE POINTER 26140 IFE WCH,< 003113' 541000 000123 26150 HRRI 0,123> ;SET TO PICK UP FILE NAME 003114' 400340 000000 26160 SETZ T4, 26170 ;FOLLOWING CODE TO OUTPUT PROJ, PROG FILENAME 26180 ;***************************************************************** 26190 IFE WCH,< 003115' 554211 000151 26200 HLRZ CHR,151(T5) ;GET EXT 003116' 302200 654644 26210 CAIE CHR,(SIXBIT/UFD/) ;UFD? 003117' 254000 003130' 26220 JRST PDIR4A ;NO 003120' 554651 000123 26240 HLRZ DOUT,123(T5) ;PROJ NO. 003121' 201100 000756' 26250 MOVEI T2,PUT 003122' 260240 003235' 26260 PUSHJ P,OUTDC1 003123' 201200 000054 26280 MOVEI CHR,COMMA ;COMMA 003124' 260240 000756' 26290 PUSHJ P,PUT 003125' 550651 000123 26310 HRRZ DOUT,123(T5) ;PROG NO. 003126' 260240 003235' 26320 PUSHJ P,OUTDC1 003127' 254000 003131' 26330 JRST PDIR4B 26340 > 26350 ;********************************************************************* 003130' 260240 003211' 26360 PDIR4A: PUSHJ P,PDIR2 ;OUTPUT 6-BIT DATA AND INCR DIRECTORY PTR 26370 IFE WCH,< 003131' 510211 000151 26380 PDIR4B: HLLZ CHR,151(T5)> ;PICK UP EXTENSION 26390 IFN WCH,< 26400 HLLZ CHR,(T5)> 003132' 205000 440611 26410 MOVSI 0,440600+T5 ;SET BYTE POINTER 26420 IFE WCH,< 003133' 541000 000151 26430 HRRI 0,151> ;PICK UP EXTENSION 003134' 201100 000004 26440 MOVEI T2,4 ;PRINT UP TO 4 CHRS. (PERIOD+3*EXT) 003135' 326200 003140' 26450 JUMPN CHR,.+3 ;EXTENSION NULL? 003136' 260240 003214' 26460 PUSHJ P,PDIR2A+1 ;YES 003137' 254000 003142' 26470 SKIP 2 ;NO 003140' 201200 000016 26480 MOVEI CHR,PERIOD-40 ;NO, SO PRINT A PERIOD 003141' 260240 003213' 26490 PDIR3: PUSHJ P,PDIR2A ;OUTPT 6 BIT OR INCR T5 26500 IFE WCH,< 003142' 201200 000040 26510 MOVEI CHR,SPACE ;OUTPUT 2 SPACES 003143' 260240 000756' 26520 PUSHJ P,PUT 003144' 260240 000756' 26530 PUSHJ P,PUT 003145' 602540 000020 26540 TRNE AUXFLG,FFLG ;SHORT FORM DIRECT ? 003146' 254000 003177' 26550 JRST PDIR3A ;YES VJC 4/16/69 PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 60-1 VJC/PMH/AK-DAG/DMN 8-JUL-70 003147' 400640 000000 26570 SETZ DOUT, ;CALCULATE NBR OF BLOCKS PER FILE 003150' 201340 001101 26580 MOVEI T4,1101 003151' 205000 440500 26590 MOVSI 0,(POINT 5,0) 003152' 550100 003742' 26600 HRRZ T2,IBF 003153' 271002 000001 26610 ADDI 0,1(T2) 003154' 550600 000011 26620 HRRZ T7,T5 003155' 275602 000000 26630 SUBI T7,(T2) 003156' 134500 000000 26640 ILDB T6,0 ;LOAD CONTENTS OF S.A.T. BLOCK 003157' 316500 000014 26650 CAMN T6,T7 ;COMPARE WITH FILE SLOT NBR 003160' 271640 000001 26660 ADDI DOUT,1 ;ADD 1 TO COUNT IF EQUAL 003161' 367340 003156' 26670 SOJG T4,.-3 003162' 260240 003260' 26680 PUSHJ P,OUTDEC ;OUTPUT NBR OF BLOCKS PER FILE 003163' 201200 000011 26690 MOVEI CHR,TAB 26700 > 26710 IFN WCH,< 26720 AOJ T5, ;STEP DIR. POINTER 26730 MOVEI CHR,11 26740 PUSHJ P,PUT ;OUTPUT A TAB 26750 CAIG T4,7> 003164' 260240 000756' 26760 PUSHJ P,PUT 003165' 135040 004711' 26770 LDB T1,[POINT 5,DBUF+16,14] 003166' 302040 000036 26780 CAIE T1,36 003167' 254000 003174' 26790 JRST PDIR3B 003170' 550040 003742' 26800 HRRZ T1,IBF 003171' 276440 000001 26810 SUBM T5,T1 003172' 135000 004712' 26820 LDB 0,[POINT 9,DBUF+200(T1),8] U 003173' 260240 000000* 26830 PUSHJ P,PROTO ; OUTPUT PROTECTION 003174' 26840 PDIR3B: 26850 IFE WCH,< 003174' 200011 000151 26860 MOVE 0,151(T5) ;GET ENTRY DATE> 26870 IFN WCH,< 26880 MOVE 0,-1(T5) ;GET ENTRY DATE> 003175' 405000 007777 26890 ANDI 0,7777 ;LEFT BITS ARE IRRELEVENT 003176' 260240 003224' 26900 PUSHJ P,DATOUT ;OUTPUT THE DATE 003177' 260240 003205' 26910 PDIR3A: PUSHJ P,CRLF ;GIVE CR,LF 4/16/69 26920 IFN WCH,< 26930 AOJA T5,PDIR4 ;PROCESS NEXT ENTRY> 26940 IFE WCH,< 003200' 550040 003742' 26950 PDIR6: HRRZ T1,IBF ;PROCESS NEXT ENTRY 003201' 276440 000001 26960 SUBM T5,T1 003202' 301040 000026 26970 CAIL T1,26 ;FILE "NUMBER" OK? 003203' 254000 000411' 26980 JRST MAIN1 ;NO, END OF ENTRIES 003204' 344440 003107' 26990 AOJA T5,PDIR4 ;END OF LOOP, GET NEXT FILENAME> PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 61 VJC/PMH/AK-DAG/DMN 8-JUL-70 27020 IFN FTDSK,< 27030 CLRF: SOS LIN> 003205' 201200 000015 27040 CRLF: MOVEI CHR,CR ;OUTPUT CAR. RET. 003206' 260240 000756' 27050 PUSHJ P,PUT 003207' 201200 000012 27060 MOVEI CHR,LF ;LINE FEED 003210' 254000 000756' 27070 JRST PUT 003211' 134200 000000 27090 PDIR2: ILDB CHR,0 ;ROUTINE TO OUTPUT 6-BIT DATA 003212' 606000 777777 27100 TRNN 0,-1 ;PRINT SPACES WHEN PRINTING THE FREE BLOCKS 003213' 322200 003220' 27110 PDIR2A: JUMPE CHR,PDIR21 ;TERMINATE ON SPACE 003214' 271200 000040 27120 ADDI CHR,40 ;CONVERT TO 7 BIT 003215' 260240 000756' 27130 PUSHJ P,PUT ;OUTPUT CHARACTER 003216' 271340 000001 27140 ADDI T4,1 003217' 367100 003211' 27150 SOJG T2,PDIR2 ;COUNT DOWN MAX-CHARS COUNTER 27160 IFN WCH,< 27170 PDIR21: AOJA T5,CPOPJ ;STEP AND CONTINUE> 27180 IFE WCH,< 003220' 263240 000000 27190 PDIR21: POPJ P, ;CONTINUE> PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 62 VJC/PMH/AK-DAG/DMN 8-JUL-70 003221' 160046 624545 27210 PDIR7: SIXBIT /. FREE BLOCKS LEFT/ 003222' 004254 574353 003223' 630054 454664 27220 ;OUTPUT THE DATE FOUND IN AC 0. 003224' 201100 000756' 27240 DATOUT: MOVEI T2,PUT ;PUT CHAR IN OUT 003225' 231000 000037 27250 IDIVI 0,^D31 003226' 201141 000001 27260 MOVEI T3,1(1) 003227' 231000 000014 27270 IDIVI 0,^D12 003230' 200640 000003 27280 MOVE DOUT,T3 ;DOUT=DAY 003231' 260240 003235' 27290 PUSHJ P,OUTDC1 ;PRINT DAY 003232' 260240 003262' 27300 PUSHJ P,DATO2 ;PRINT -MONTH- 003233' 200640 000000 27310 MOVE DOUT,0 003234' 271640 000100 27320 ADDI DOUT,^D64 ;DOUT=YEAR 003235' 334700 003731' 27330 OUTDC1: SKIPA DOUT+1,TWL ;RADIX 10 27340 ;******************************************************************* 27350 ;ROUTINE TO CONVERT OCTAL TO ASCII 27360 ;DOUT CONTAINS OCTAL VALUE ON ENTRY 003236' 201700 000010 27380 OUTOCT: MOVEI DOUT+1,10 ;RADIX 8 003237' 552700 000007 27390 PRNUMA: HRRZM DOUT+1,T4 003240' 201200 000060 27400 MOVEI CHR,"0" 003241' 315640 000016 27410 CAMGE DOUT,DOUT+1 ;PRINT AT LEAST 2 DIGITS 003242' 260242 000000 27420 PUSHJ P,(T2) ;PUT OR PUTCON 003243' 231647 000000 27430 PRN: IDIVI DOUT,(T4) ;DIVIDE BY RADIX 003244' 506705 000000 27440 HRLM DOUT+1,(P) ;SAVE NO. FOR PRINT 003245' 322640 003247' 27450 JUMPE DOUT,.+2 ;ENUF DIGITS? 003246' 260240 003243' 27460 PUSHJ P,PRN ;NO, GET MORE 003247' 554205 000000 27470 HLRZ CHR,(P) ;YES, GET LEFTMOST 003250' 271200 000060 27480 ADDI CHR,60 ;CONVERT TO ASCII 003251' 254002 000000 27490 JRST (T2) ;PUT OR PUTCON 003252' 201200 000040 27510 OUTDE4: MOVEI CHR," " ;SET UP FOR SPACES 003253' 301640 001750 27520 CAIL DOUT,^D1000 ;PRINT 4 CHAR. 003254' 254000 003260' 27530 JRST OUTDEC ;AT LEAST 4 SEEN 003255' 260240 000756' 27540 PUSHJ P,PUT ;OUTPUT ONE SPACE 003256' 305640 000144 27550 CAIGE DOUT,^D100 ;3 CHAR.? 003257' 260240 000756' 27560 PUSHJ P,PUT ;NO,SO ANOTHER SPACE 003260' 201100 000756' 27570 OUTDEC: MOVEI T2,PUT ;PUT CHAR IN OUT BUF 003261' 254000 003235' 27580 JRST OUTDC1 003262' 201340 000005 27600 DATO2: MOVEI T4,5 003263' 200500 004153' 27610 MOVE T6,MNPT 003264' 272040 000012 27620 ADDM 1,T6 003265' 134200 000012 27630 ILDB CHR,T6 003266' 260242 000000 27640 PUSHJ P,(T2) ;PUT OR PUTCON 003267' 367340 003265' 27650 SOJG T4,.-2 003270' 263240 000000 27660 POPJ P, PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 63 VJC/PMH/AK-DAG/DMN 8-JUL-70 27680 ;READ DTA DIRECTORY AND INITIALIZE DIRST AND DIRST1 003271' 260240 000426' 27700 DTCHECK:PUSHJ P,ININIT ;INITIALIZE INPUT DEVICE 003272' 27710 DTCH2: 27720 IFN WCH,< 27730 USETI IN,1 ;GET DTA DIR> 27740 IFE WCH,< 003272' 074140 000144 27750 USETI IN,144 ;GET DTA DIR> 003273' 260240 001616' 27760 PUSHJ P,INP ;INPUT DIRECTORY 003274' 070140 000000 27770 CLOSE IN, 003275' 260240 003333' 27780 PUSHJ P,GETPPN ; GET PPN OF DECTAPE 003276' 260240 000426' 27790 PUSHJ P,ININIT ; REINITIALIZE INPUT DEVICE 27800 IFN WCH,< 27810 DTCH1: MOVE T5,IBF 27820 HRRZ T2,1(T5) 27830 ADDI T5,1(T2) ;GET ADD. OF FIRST ENTRY 27840 MOVE 0,T5 27850 SUBI 0,4> 27860 IFE WCH,< 003277' 550440 003742' 27870 DTCH1: HRRZ T5,IBF ;LOC. OF CURRENT BUF, 2ND WORD 003300' 201011 000123 27880 MOVEI 0,123(T5) ;83 WORDS,7, FIVE-BIT BYTES 003301' 271440 000001 27890 ADDI T5,1 ;COMPUTE ADD. OF DIR. START> 003302' 202000 004012' 27900 MOVEM 0,DIRST ;FIRST FILE NAME LOC 003303' 202000 004013' 27910 MOVEM 0,DIRST1 ;TO RESTORE DIRST 003304' 263240 000000 27920 POPJ P, 27940 ;ROUTINE TO CHECK BRACKET COUNT/MATCHING 003305' 403140 004025' 27960 OUTCHK: SETZB T3,TLBRKT ;COUNT <> ON THIS LINE, CLEAR THINGS 003306' 200040 003723' 27970 MOVE T1,OPTRA ;BYTE POINTER FOR READING OUT THE LINE 003307' 316040 004020' 27980 OUTCH2: CAMN T1,OPTR ;LINE DONE? 003310' 254000 003320' 27990 JRST OUTCH3 ;YES, SO DECIDE WHETHER TO PRINT 003311' 134100 000001 28000 ILDB T2,T1 ;GET CHAR 003312' 306100 000074 28010 CAIN T2,"<" ;LEFT BRACKET? 003313' 350000 004025' 28020 AOS TLBRKT ;YES, SO INCREMENT BRACKET COUNT 003314' 306100 000076 28030 CAIN T2,">" ;RIGHT BRACKET? 003315' 371000 004025' 28040 SOSL TLBRKT ;YES, SUBTRACT BRACKET COUNT, GONE NEG? 003316' 254000 003307' 28050 JRST OUTCH2 ;NO, SO DO NEXT CHAR 003317' 344140 003307' 28060 AOJA T3,OUTCH2 ;YES, SO FLAG COUNT GONE NEG. 003320' 336100 004025' 28080 OUTCH3: SKIPN T2,TLBRKT ;BRACKET COUNT OFF THIS LINE? 003321' 322140 001711' 28090 JUMPE T3,CPOPJ ;NO, WENT NEG.? 003322' 272100 004026' 28100 ADDM T2,TOTBRK ;YES, SO ADD INTO CUMULATIVE COUNT 003323' 201200 000055 28110 MOVEI CHR,"-" ;PRINT MINUS FOR NEG TOTAL 003324' 335000 004026' 28120 SKIPGE TOTBRK 003325' 260240 000756' 28130 PUSHJ P,PUT 003326' 214640 004026' 28140 MOVM DOUT,TOTBRK;PRINT MAGNITUDE OF TOTAL 003327' 260240 003260' 28150 PUSHJ P,OUTDEC 003330' 201200 000011 28160 MOVEI CHR,TAB ;FOLLOW WITH TAB 003331' 260240 000756' 28170 PUSHJ P,PUT 003332' 254000 000711' 28180 JRST OUTCH1 ;AND PRINT THE LINE 003333' 201440 000117 28200 GETPPN: MOVEI T5,117 ; NON STD DUMP MODE PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 63-1 VJC/PMH/AK-DAG/DMN 8-JUL-70 U 003334' 202440 000000* 28210 MOVEM T5,DTBLK 003335' 200440 004637' 28220 MOVE T5,DEVICE ; GET INPUT DEVICE U 003336' 202440 000000* 28230 MOVEM T5,DTDEV U 003337' 050340 003334* 28240 OPEN DTDIR,DTBLK 003340' 263240 000000 28250 POPJ P, 003341' 074340 000144 28260 USETI DTDIR,144 ; READ BLOCK 100 AND 003342' 200440 004713' 28270 MOVE T5,[IOWD 227,DBUF] 003343' 201500 000000 28280 MOVEI T6,0 003344' 066340 000011 28290 INPUT DTDIR,T5 ; WORD 1 OF BLOCK 101. 003345' 200440 004577' 28300 MOVE T5,177+DBUF 003346' 202440 003736' 28310 MOVEM T5,DTAID 003347' 200440 004600' 28320 MOVE T5,200+DBUF 003350' 202440 003737' 28330 MOVEM T5,DIRPPN ; SAVE PPN FOR LISTING 003351' 071340 000000 28340 RELEASE DTDIR, 003352' 263240 000000 28350 POPJ P, PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 64 VJC/PMH/AK-DAG/DMN 8-JUL-70 003353' 612300 004672' 28370 FILTYP: TDNE FLAG,[XWD IFLG+IBFLG,BMOD] 003354' 263240 000000 28380 POPJ P, ;BIN MODE DON'T CARE IF DMP, ETC 003355' 606540 060400 28390 TRNN AUXFLG,DSKIN!DTAIN!MTAIN ;BINARY INPUT POSSIBLE? 003356' 254000 003365' 28400 JRST FIL11 ;NO 003357' 606540 014200 28410 TRNN AUXFLG,DSKOUT!DTAOUT!MTAOUT ;BINARY OUTPUT? 003360' 254000 003365' 28420 JRST FIL11 ;NO 003361' 616300 004701' 28430 TDNN FLAG,[XWD PFLG,LINE!TBMOD!NSMOD!SQMOD!SPMOD] 003362' 603540 000040 28440 TLNE AUXFLG,CDRFLG ;/E FROM DSK IS NOT BINARY 003363' 254000 003365' 28450 JRST FIL11 ;SO TURN OFF SBIN 003364' 254000 003414' 28460 JRST FIL3 ;FORCE BINARY MODE 003365' 621540 000004 28470 FIL11: TLZ AUXFLG,SBIN ;IS 003366' 554000 004053' 28480 HLRZ 0,ZRF+1 ; INPUT EXTENSION 003367' 302000 445560 28490 CAIE 0,(SIXBIT /DMP/) ;DMP? 003370' 306000 634166 28500 IFE DISK30,<CAIN 0,(SIXBIT /SAV/) ;SAV?> 28510 IFN DISK30,<CAIN 0,(SIXBIT/SVE/)> 003371' 254000 003414' 28520 JRST FIL3 ;YES 003372' 302000 435056 28530 CAIE 0,(SIXBIT /CHN/) ;CHN? 003373' 306000 624554 28540 CAIN 0,(SIXBIT /REL/) ;REL? 003374' 254000 003414' 28550 JRST FIL3 ;YES 003375' 302000 635062 28560 CAIE 0,(SIXBIT /SHR/) 003376' 306000 504750 28570 CAIN 0,(SIXBIT /HGH/) 003377' 254000 003414' 28580 JRST FIL3 003400' 302000 425156 28590 CAIE 0,'BIN' ; GENERAL BINARY EXTENSION? 003401' 306000 545767 28600 CAIN 0,(SIXBIT /LOW/) 003402' 254000 003414' 28610 JRST FIL3 003403' 606300 002000 28620 TRNN FLAG,XFLG ;DO NORMAL PROCESSING ON ALL 003404' 254000 003430' 28630 JRST FIL2 ;BUT DMP ETC FILES IF NOT /X 003405' 607540 000040 28640 TLNN AUXFLG,CDRFLG 003406' 612300 004701' 28650 TDNE FLAG,[XWD PFLG,LINE+TBMOD+NSMOD+SQMOD+SPMOD] 003407' 263240 000000 28660 POPJ P, ;NO SIGNIFICANT SWITCHES 003410' 515000 004400 28670 FIL1: HRLZI 0,004400 ;FORCE 36-BIT. 003411' 502000 003743' 28680 HLLM 0,IBF+1 ;INPUT BYTE POINTER 003412' 502000 003746' 28690 HLLM 0,OBF+1 ;OUTPUT BYTE POINTER 003413' 263240 000000 28700 POPJ P, ;CHANGE TO FORCED BINARY 003414' 661540 000004 28710 FIL3: TLO AUXFLG,SBIN ;INPUT EXT = DMP,SAV,CHN,REL 003415' 602300 002000 28720 TRNE FLAG,XFLG 003416' 254000 003410' 28730 JRST FIL1 003417' 667540 000400 28740 TLON AUXFLG,FRSTIN ;NOT /X TEST FURTHER 003420' 254000 003443' 28750 JRST FIL4 ;IS THIS FIRST SOURCE, YES 003421' 663540 000200 28760 TLOE AUXFLG,RSDCFL ;NOT FIRST, WAS PREVIOS FILE RSCD? 003422' 254000 003445' 28770 JRST FIL5 ;YES, NO CHANGE UNLESS DEVICE HAS CHANGED 003423' 067100 000000 28780 OUTPUT OUT, ;NO CHANGE TO 36-BIT 003424' 200000 003747' 28790 MOVE 0,OBF+2 ;CURRENTLY 7-BIT I/O, MUST CHANGE TO 36-BIT 28800 ;OUTPUT CURRENT BUFFER 003425' 231000 000005 28810 IDIVI 0,5 ;DIVIDE OBF+2 BY 5 (CHAR. COUNT) 003426' 202000 003747' 28820 MOVEM 0,OBF+2 003427' 254000 003410' 28830 JRST FIL1 003430' 663540 000400 28840 FIL2: TLOE AUXFLG,FRSTIN ;NOT A RSCD FILE 003431' 627540 000200 28850 TLZN AUXFLG,RSDCFL ;NO, WAS PREV. FILE RSCD? 003432' 263240 000000 28860 POPJ P, ;NO, NO CHANGE 003433' 067100 000000 28870 OUTPUT OUT, ;YES, CHANGE 36-BIT TO 7-BIT 003434' 201000 000005 28880 MOVEI 0,5 003435' 222000 003747' 28890 IMULM 0,OBF+2 PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 64-1 VJC/PMH/AK-DAG/DMN 8-JUL-70 003436' 200000 003740' 28900 MOVE 0,SVIBF ;RESTORE 7-BIT 003437' 502000 003743' 28910 HLLM 0,IBF+1 003440' 200000 003741' 28920 MOVE 0,SVOBF 003441' 502000 003746' 28930 HLLM 0,OBF+1 003442' 263240 000000 28940 POPJ P, 003443' 661540 000200 28950 FIL4: TLO AUXFLG,RSDCFL ;SET REL,SAV,DMP,CHN FLAG 003444' 254000 003410' 28960 JRST FIL1 003445' 515000 004400 28970 FIL5: HRLZI 0,004400 ;NEW DEVICE, SET 36-BIT INPUT 003446' 602740 000010 28980 TRNE CALFLG,NEWDEV ;SOURCE DEVICE CHANGED 003447' 502000 003743' 28990 HLLM 0,IBF+1 003450' 263240 000000 29000 POPJ P, ;OUTPUT ALREADY SET PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 65 BLOCK 0 CODE 29040 SUBTTL BLOCK 0 CODE 29060 IFE BLOC0,< 29070 IFE WCH,<;THIS CODE COPIES BLOCK 0,1,2 ONLY. I/O MUST BE DECTAPE.> 29080 IFN WCH,<;THIS CODE COPIES BLOCK 0 ONLY. I/O MUST BE DECTAPE.> 29090 ;MODE SELECTED MUST BE BIT 100, 20 AND NOT DUMP MODE (134). 003451' 640540 024000 29110 BLOCK0: TRC AUXFLG,DTAIN+DTAOUT 003452' 642540 024000 29120 TRCE AUXFLG,DTAIN+DTAOUT;FORCE DTA I/O 003453' 254000 002115' 29130 JRST ERR7A 003454' 201000 000134 29140 MOVEI 0,134 003455' 202000 004633' 29150 MOVEM 0,OMOD 003456' 202000 004636' 29160 MOVEM 0,ININI1 003457' 205000 003745' 29170 MOVSI 0,OBF 003460' 202000 004635' 29180 MOVEM 0,ODEV+1 003461' 201000 003742' 29190 MOVEI 0,IBF 003462' 202000 004640' 29200 MOVEM 0,DEVICE+1 003463' 050100 004633' 29210 OPEN OUT,OMOD 003464' 254000 001767' 29220 JRST ERR1 ;UNAVAILABLE 003465' 065100 000001 29230 OUTBUF OUT,1 003466' 067100 000000 29240 OUTPUT OUT, 003467' 050140 004636' 29250 OPEN IN,ININI1 003470' 254000 001770' 29260 JRST ERR1A 003471' 064140 000001 29270 INBUF IN,1 003472' 403040 003735' 29280 SETZB T1,BL0CNT 003473' 074141 000000 29290 BL4: USETI IN,(T1) 003474' 066140 000000 29300 INPUT IN, ;READ 003475' 062140 000010 29310 GETSTS IN,IOS 003476' 606400 740000 29320 TRNN IOS,740000 ;ANY ERRORS 003477' 254000 003515' 29330 JRST BL1 ;NO 003500' 265440 000542' 29340 JSP T5,INICN2 003501' 260240 001652' 29350 PUSHJ P,QUEST 003502' 265040 002166' 29360 ERRPN2 </Input device /> 003503' 447356 072750 003504' 203114 573322 003505' 617124 000000 003506' 260240 002201' 29370 PUSHJ P,P6BIT 003507' 000000 004637' 29380 DEVICE 003510' 265040 002166' 29390 ERRPN2 </: /> 003511' 351000 000000 003512' 200100 000013 29400 MOVE T2,AUXFLG ;DECTAPE FOR ERROR MESSAGE 003513' 405100 020000 29410 ANDI T2,DTAIN 003514' 260240 001020' 29420 PUSHJ P,IOERR ;PRINT ERROR TYPE 003515' 514440 003743' 29430 BL1: HRLZ T5,IBF+1 003516' 540440 003746' 29440 HRR T5,OBF+1 003517' 201351 000177 29450 MOVEI T4,177(T5) 003520' 251447 000000 29460 BLT T5,(T4) ;SHIFT DATA TO OUTPUT BUFFER 003521' 075120 003735' 29470 USETO OUT,@BL0CNT 003522' 067100 000000 29480 OUTPUT OUT, ;WRITE BLOCK 003523' 260240 000764' 29490 PUSHJ P, OUTP1 ;CHECK ERRORS 29500 IFE WCH,< 003524' 350040 003735' 29510 AOS T1,BL0CNT 003525' 305040 000003 29520 CAIGE T1,3 PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 65-1 BLOCK 0 CODE 003526' 254000 003473' 29530 JRST BL4> 003527' 071100 000000 29540 BL3: RELEASE OUT, ;IF ANY, PDL IS RESET 003530' 254000 000013' 29550 JRST PIP2> 29570 IFN BLOC0,< 29580 BLOCK0: ERRPNT </?No block 0 copy!/> 29590 > PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 66 MAGTAPE ROUTINES 29610 SUBTTL MAGTAPE ROUTINES 29630 ;TEST TO SEE IF MORE THAN ONE OF THE LOWEST EIGHT MTA FLAGS 29640 ;HAVE BEEN SELECTED. IF SO ERROR. OTHERWISE, IMPLEMENT 29650 ;REQUEST. T1, T3, T6 SET AT ENTRY BY INLOOK OR OUTLOOK 29660 ;TO EQUAL AUX/AUXOUT, AB/ABOUT,INIMTA/INOMTA 003531' 550100 000001 29680 MT1: HRRZ T2,T1 ;T1 CONTAINS REQUEST 003532' 405102 777777 29690 ANDI T2,-1(T2) ;KNOCK OFF RIGHT MOST 1 003533' 602100 000377 29700 TRNE T2,377 003534' 254000 003701' 29710 JRST MTR1 ;PRINT ERROR MESSAGE 003535' 606040 000377 29730 TRNN T1,MTAFLG+MTBFLG+MTWFLG+MTTFLG+MTFFLG+MTUFLG+MTDFLG+MTPFLG 003536' 254000 003562' 29740 JRST MTC1 003537' 260252 000000 29750 PUSHJ P,(T6) ;THERE IS A REQUEST 29760 ;GO TO INIMTA/INOMTA 29780 ;PERFORM POSITIONING REQUESTS 003540' 602040 000040 29790 TRNE T1,MTUFLG 003541' 254000 003600' 29800 JRST UNLOAD 003542' 602040 000010 29820 TRNE T1,MTWFLG 003543' 254000 003602' 29830 JRST REWIND 003544' 602040 000020 29850 TRNE T1,MTFFLG 003545' 254000 003605' 29860 JRST MARKEF 003546' 602040 000004 29880 TRNE T1,MTTFLG 003547' 254000 003615' 29890 JRST SLEOT 003550' 602040 000202 29910 TRNE T1,MTBFLG+MTPFLG ;MULTIPLE REQUESTS ALLOWED 003551' 254000 003617' 29920 JRST BSPF 003552' 602040 000101 29940 TRNE T1,MTAFLG+MTDFLG ;MULTIPLE REQUESTS ALLOWED 003553' 254000 003653' 29950 JRST ADVF PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 67 MAGTAPE ROUTINES 29980 ;T1=AUX,AUXOUT. T3=AB,ABOUT. T6=INIMTA,INOMTA. 003554' 071200 000000 30000 MTCONT: RELEAS TAPE, 003555' 606040 000040 30010 TRNN T1,MTUFLG ;UNLOAD? 003556' 602740 000400 30020 TRNE CALFLG,NSWTCH ;IS THERE AN INPUT DEVICE? 003557' 302500 003666' 30030 CAIE T6,INOMTA ;OUTPUT TAPE? 003560' 263240 000000 30040 POPJ P, ;NO 003561' 254000 000013' 30050 JRST PIP2 ;YES, END OF COMMAND 30070 ;ROUTINE TO CHECK AND SET DENSITY FOR NEW DEVICE 003562' 200340 000001 30090 MTC1: MOVE T4,T1 ;GET AUX/AUXOUT 003563' 405340 003400 30100 ANDI T4,MT2FLG+MT5FLG+MT8FLG 003564' 405347 777777 30110 ANDI T4,-1(T4) ;REMOVE RIGHT MOST 1 003565' 326340 003701' 30120 JUMPN T4,MTR1 ;MORE THAN 1 REQ, ERROR 003566' 201340 000001 30140 MOVEI T4,1 ;ASCII LINE STANDARD MODE 003567' 602040 002000 30160 TRNE T1,MT2FLG 003570' 660340 000200 30170 TRO T4,DENS2 ;SET 200 BPI 003571' 602040 001000 30190 TRNE T1,MT5FLG 003572' 660340 000400 30200 TRO T4,DENS5 ;SET 556 BPI 003573' 602040 000400 30220 TRNE T1,MT8FLG 003574' 660340 000600 30230 TRO T4,DENS8 ;SET 800 BPI 003575' 602040 004000 30250 TRNE T1,MTEFLG 003576' 660340 001000 30260 TRO T4,PARE ;EVEN PARITY 003577' 263240 000000 30280 POPJ P, PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 68 MAGTAPE ROUTINES 30310 ;REWIND AND UNLOAD 003600' 072200 000011 30330 UNLOAD: MTAPE TAPE,11 003601' 254000 003554' 30340 JRST MTCONT 30360 ;REWIND ONLY 003602' 072200 000001 30380 REWIND: MTAPE TAPE,1 003603' 072200 000000 30390 MTWAIT: WAIT TAPE, 003604' 254000 003554' 30400 JRST MTCONT 30450 ;MARK END OF FILE 003605' 200440 004645' 30470 MARKEF: MOVE T5,MTANAM 003606' 250440 004634' 30480 EXCH T5,ODEV 003607' 072200 000003 30490 MTAPE TAPE,3 003610' 062200 000010 30500 GETSTS TAPE,IOS 003611' 260240 000772' 30510 PUSHJ P,OUTP3 003612' 060210 000000 30520 SETSTS TAPE,(IOS) 003613' 202440 004634' 30530 MOVEM T5,ODEV 003614' 254000 003554' 30540 JRST MTCONT 30590 ;SKIP TO LOGICAL END OF TAPE. 003615' 072200 000010 30610 SLEOT: MTAPE TAPE,10 003616' 254000 003603' 30620 JRST MTWAIT PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 69 MAGTAPE ROUTINES 30640 ;BACKSPACE MTA 1 FILE, T3=AB OR ABOUT 30650 ;AB/ABOUT = INPUT/OUTPUT DEVICE 003617' 550140 000003 30670 BSPF: HRRZ T3,T3 ;T3=NO. OF FILES/RECORDS TO BACK 003620' 072200 000000 30680 BSPF2: WAIT TAPE, ;WAIT 003621' 062200 000010 30690 GETSTS TAPE,IOS 003622' 606400 004000 30700 TRNN IOS,LDP ;AT LOAD POINT? 003623' 254000 003637' 30710 JRST BSPF3 ;NO LDP 003624' 265040 002155' 30720 ERRPNT </?Load point before end of (MB) or (MP) request!/> 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 30730 BSPF3: MOVEI T5,7 ;BSPR 003640' 606040 000200 30740 TRNN T1,MTPFLG ;BSPR? 003641' 201440 000017 30750 MOVEI T5,17 ;BSPF 003642' 072211 000000 30760 MTAPE TAPE,(T5) ;BACKSPACE FILE/RECORD 003643' 365140 003620' 30770 SOJGE T3,BSPF2 ;MORE FILES/RECORDS TO BSP? 30780 ;NO, END OF LOOP 003644' 072200 000000 30790 WAIT TAPE, 003645' 062200 000010 30800 GETSTS TAPE,IOS 003646' 606040 000002 30810 TRNN T1,MTBFLG ;BACKSPACE FILE? 003647' 254000 003554' 30820 JRST MTCONT ;NO 003650' 606400 004000 30830 TRNN IOS,LDP ;IF AT LOAD POINT 003651' 072200 000016 30840 MTAPE TAPE,16 ;(MOVE FWD. OVER EOF) 003652' 254000 003554' 30850 JRST MTCONT ;DON'T SKIP A RECORD 30890 ;ADVANCE MTA 1 FILE, T3=AB OR ABOUT 30900 ;AB/ABOUT = INPUT/OUTPUT DEVICE 003653' 554140 000003 30920 ADVF: HLRZ T3,T3 ;T3=NO. FILES (OR REC) TO ADVANCE 003654' 201440 000006 30930 ADVF2: MOVEI T5,6 ;ADVR 003655' 606040 000100 30940 TRNN T1,MTDFLG ;ADVR ? 003656' 201440 000016 30950 MOVEI T5,16 ;ADVF 003657' 072211 000000 30960 MTAPE TAPE,(T5) ;ADVANCE FILE/RECORD 003660' 367140 003654' 30970 SOJG T3,ADVF2 ;MORE FILES/RECORDS TO ADV? 30980 ;NO, END OF LOOP 003661' 072200 000000 30990 WAIT TAPE, ;WAIT... 003662' 062200 000010 31000 GETSTS TAPE,IOS 003663' 622400 020000 31010 TRZE IOS,EOFBIT 003664' 060210 000000 31020 SETSTS TAPE,(IOS) ;END OF FILE 003665' 254000 003554' 31030 JRST MTCONT PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 70 MAGTAPE ROUTINES 31050 ;ROUTINE TO INITIALIZE MAGTAPE FOR INPUT OR OUTPUT 003666' 334100 004634' 31070 INOMTA: SKIPA T2,ODEV ;INIT OUTPUT DEVICE 003667' 200100 004637' 31080 INIMTA: MOVE T2,DEVICE ;INIT INPUT DEVICE 003670' 402000 004646' 31090 SETZM MTANAM+1 003671' 202100 004645' 31100 MOVEM T2,MTANAM 003672' 606740 000010 31110 TRNN CALFLG,NEWDEV 003673' 254000 003676' 31120 JRST INMTA ;SAME DEVICE 003674' 260240 003562' 31130 PUSHJ P,MTC1 ;NEW DEVICE 003675' 552340 004644' 31140 HRRZM T4,INMTA1 ;SET MODE,DENSITY,PARITY 003676' 050200 004644' 31160 INMTA: OPEN TAPE,INMTA1 003677' 254000 001771' 31170 JRST ERR1B 003700' 263240 000000 31180 POPJ P, 31200 ;ROUTINE TO PRINT ERROR MSG IF MORE THAN 1/8 FLAGS SET 003701' 200340 004637' 31220 MTR1: MOVE T4,DEVICE ;TENTATIVELY SET I/DEV 003702' 302500 003667' 31230 CAIE T6,INIMTA ;INPUT DEVICE? 003703' 200340 004634' 31240 MOVE T4,ODEV ;NO, SET O/DEV 003704' 265040 002155' 31250 ERRPNT </?Too many requests for /> 003705' 376515 767500 003706' 667035 674500 003707' 713136 172712 003710' 717516 320314 003711' 677444 000000 003712' 260240 002201' 31260 PUSHJ P,P6BIT 003713' 000000 000007 31270 T4 003714' 254000 000013' 31280 JRST PIP2 PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 71 CONSTANTS/STORAGE/VARIABLES 31300 SUBTTL CONSTANTS/STORAGE/VARIABLES 31320 ;CONSTANTS 31340 IFE WCH,< 003715' 140600 004046' 31350 OKBD: POINT 6,DTON+2,23 ;FOR NO. 1K BLOCKS 003716' 140600 004054' 31360 OKB: POINT 6,ZRF+2,23> 003717' 001400 004054' 31370 DATE: POINT 12,ZRF+2,35 003720' 001400 004046' 31380 DATED: POINT 12,DTON+2,35 ;CREATION DATE /X 003721' 301406 030140 31390 ZRO: ASCII /00000/ 003722' 010700 004376' 31400 OPTMAX: POINT 7,LBUFE-1,34 003723' 000700 004173' 31410 OPTRA: XWD 700,LBUF-1 ;INITIAL POINTER TO LINE BUFFER 003724' 432150 643240 31420 K1: 432150643240 ;MAGIC ASCII INCREMENT BY 10 003725' 375767 737576 31430 K3: 375767737576 ;CHARACTER MASK 077 003726' 432150 643216 31440 K4: 432150643216 ;MAGIC ASCII INCREMENT BY 1 003727' 616051 600000 31450 QPIP: SIXBIT /QPIP/ ;DATA FOR Q SWITCH 003730' 120000 000000 31460 STAR: SIXBIT /*/ ;LOOK FOR *.* FILNAM.EXT 003731' 000000 000012 31470 TWL: OCT 12 003732' 000001 000001 31480 PP11: XWD 1,1 003733' 000001 000003 31490 PP13: XWD 1,3 ; SANDERS SYS 003734' 000000 000145 31500 UPROJ: EXP ^D101 ; SANDERS UNIVERSAL PROJECT 31510 IFN FTDSK,< 31520 PRPTL: POINT 9,PROTS,8 ;PROTECTION FOR RENAME 31530 PRPTD: POINT 9,DTON+2,8 31540 PRNM: POINT 9,ZRF+2,8 ;PROT FOR /R 31550 TIME: POINT 11,ZRF+2,23 ;CREATE TIME /X 31560 TIMED: POINT 11,DTON+2,23 ;DEPOSIT CREATE TIME> PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 72 CONSTANTS/STORAGE/VARIABLES 31610 ;PROGRAM STORAGE AREA 31630 IFE BLOC0,< 003735' 31640 BL0CNT: BLOCK 1 ;COUNT> 003736' 31650 DTAID: BLOCK 1 ; STORE DTA SERIAL NUMBER 003737' 31660 DIRPPN: BLOCK 1 ; STORE OWNERSHIP 003740' 31670 SVIBF: BLOCK 1 ;SAVE INIT MODE (INPUT) 003741' 31680 SVOBF: BLOCK 1 ;SAVE INIT MODE (OUTPUT) 003742' 31690 IBF: BLOCK 3 ;INPUT BUFFER HEADER 003745' 31700 OBF: BLOCK 3 ;OUTPUT BUFFER HEADER 003750' 31710 OBI: BLOCK 3 ;OUTPUT BUFFER INPUT HEADER FOR DSK /Z 003753' 31720 TFI: BLOCK 3 ;CONSOLE INPUT HEADER 003756' 31730 TFO: BLOCK 3 ;CONSOLE OUTPUT HEADER 003761' 31740 SAVAC: BLOCK 5 ;SAVE SOME ACS 003766' 31750 NAMTAB: BLOCK 24 ;FOR (XD) ON DSK OR RENAME 31760 IFN FTDSK,< 31770 LOCNAM: BLOCK 1 ;POINTER FOR NAMTAB> 004012' 31780 DIRST: BLOCK 1 ;LOC. OF LAST DIR. FILE NAME REFERENCED 004013' 31790 DIRST1: BLOCK 1 ;SAVE INITIAL DIRST 004014' 31800 SQNUM: BLOCK 1 ;CURRENT SEQUENCE NUMBER 004015' 31810 DTJBFF: BLOCK 1 ;VALUE OF JOBFF AFTER CONSOLE I/O BUFFERS 004016' 31820 SVJBFF: BLOCK 1 ;INITIAL VALUE OF JOBFF 004017' 31830 SVJBF1: BLOCK 1 ;VALUE OF JOBFF AFTER OUTBUF UUO 004020' 31840 OPTR: BLOCK 1 ;CURRENT POINTER FOR LINE PRESCAN 004021' 31850 DTONSV: BLOCK 2 ;OUTPUT DIRECTORY ENTRY COPY 004023' 31860 SVPTR1: BLOCK 1 ;POINTER TO LAST PRINTING CHARACTER 004024' 31870 SVPTR2: BLOCK 1 ;POINTER TO LAST GENERATED TAB 004025' 31880 TLBRKT: BLOCK 1 ;TOTAL PARENS ON THIS LINE 004026' 31890 TOTBRK: BLOCK 1 ;TOTAL CUMULATIVE PARENS 004027' 31900 TABCT: BLOCK 1 ;SPACES TO NEXT TAB STOP 004030' 31910 SPCT: BLOCK 1 ;CONSECUTIVE SPACES COUNTER 004031' 31920 ABOUT: BLOCK 1 ;AB FOR OUTPUT UNIT 004032' 31930 AUXOUT: BLOCK 1 ;AUX FOR OUTPUT UNIT 004033' 31940 PROTS: BLOCK 1 ;SAVE PROTECTION 004034' 31950 ZCNT: BLOCK 1 ;COUNT FOR DSK ZRO REQ. 004035' 31960 CDRCNT: BLOCK 1 ;COUNT CARD COLS. 004036' 31970 PTRPT: BLOCK 1 ;STORE SEQ. NO. POINTER 004037' 31980 SYSPP: BLOCK 1 ;PP OF DEVICE SYS PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 73 CONSTANTS/STORAGE/VARIABLES 32010 ;THIS IS A BLOCK OF VARIABLE LOCATIONS, ZEROED AT THE START OF EACH 32020 ;PIP RUN, I.E EACH TIME PIP TYPES *. 32040 ;***** DO NOT SPLIT THIS BLOCK ***** 32050 IFN FTDSK,< 32060 RIBFIR: BLOCK 1 ;NUMBER OF WORDS IN LOOKUP 32070 PPP: BLOCK 1 ;PROJ-PROG FOR EXTENDED LOOKUP> 004040' 32080 FILNAM: BLOCK 1 ;FILE NAME FROM COMMAND SCANNER 004041' 32090 FILEX: BLOCK 1 ;EXTENSION 004042' 32100 PR: BLOCK 1 ;PROTECTION 004043' 32110 PP: BLOCK 1 ;P-P NUMBER TYPED BY USER 32120 IFN FTDSK,<BLOCK 20+RIBFIR-.> ;TOTAL LENGTH OF LOOKUP BLOCK 32130 ;***** END OF BLOCK ***** 004044' 32140 DTON: BLOCK 4 ;OUTPUT DIR. ENTRY 004050' 32150 DEVA: BLOCK 1 ;SAVE INPUT DEV. NAME 004051' 32160 NO.: BLOCK 1 ;GENERATE FILE NAMES 004052' 32170 ZRF: BLOCK 4 ;LOOKUP FILE NAMES 004056' 32180 MTAREQ: BLOCK 1 ;STORE MTA REQUESTS 004057' 32200 COMEOF: BLOCK 1 ;EOF INDICATOR 004060' 32210 COMBUF: BLOCK ^D41 ;COMMAND BUFFER. ALLOWS 205 CHARS. 004131' 32220 COMCNT: BLOCK 1 ;COMBUF CHARS COUNT 004132' 32230 COMPTS: BLOCK 1 ;POINTER FOR STORING/EXTRACTING CS 004133' 32260 AUX: BLOCK 1 ;COPT AUXFLG (MTA) 32270 IFN FTDSK,< 32280 FNPPN: BLOCK 1 ;RESERVE #P-P 32290 FNPPNS: BLOCK 1 ;COPY FNPPN FOR LATEST NON-SYS #P-P> 004134' 32300 ESWTCH: BLOCK 1 ;-1 INDICATES END OF LINE 004135' 32310 XNAME: BLOCK 1 ;-1 INDICATES SCAN OVERSHOOT WITH A NULL NAME 32320 ;0 INDICATES NO SCAN OVERSHOOT 32330 ;CONTAINS OVERSHOOT NAME IF NOT NULL 004136' 32340 AB: BLOCK 1 ;MTA VALUE SWITCHES 32350 ;THIS IS THE END OF THE INIT. ZEROED BLOCK. PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 74 CONSTANTS/STORAGE/VARIABLES 004137' 266254 167132 32370 MONTH: ASCII /-Jan-/ 004140' 266154 561132 32380 ASCII /-Feb-/ 004141' 266334 171132 32390 ASCII /-Mar-/ 004142' 266036 071132 32400 ASCII /-Apr-/ 004143' 266334 174532 32410 ASCII /-May-/ 004144' 266256 567132 32420 ASCII /-Jun-/ 004145' 266256 566132 32430 ASCII /-Jul-/ 004146' 266036 563532 32440 ASCII /-Aug-/ 004147' 266474 570132 32450 ASCII /-Sep-/ 004150' 266374 372132 32460 ASCII /-Oct-/ 004151' 266355 773132 32470 ASCII /-Nov-/ 004152' 266114 561532 32480 ASCII /-Dec-/ 004153' 440700 004137' 32500 MNPT: POINT 7,MONTH 004154' 32520 PDL: BLOCK 20 ;PUSHDOWN LIST 004174' 32540 LBUF: BLOCK 204 ;LINE BUFFER. ALLOW FOR FORTRAN DATA 004377' 32550 LBUFE==.-1 004400' 32570 DBUF: BLOCK 204 ;DIRECTORY BUFFER 004604' 32580 BLOCK 27 ; ALLOW ENOUGH FOR DTA PROT. 004633' 32600 OMOD: BLOCK 1 ;OUTPUT DEVICE MODE, STATUS 004634' 32610 ODEV: BLOCK 2 ;OUTPUT DEVICE NAME 32620 ;BUFFER HEADER(S) LOC 004636' 32640 ININI1: BLOCK 1 ;INPUT DEVICE 004637' 32650 DEVICE: BLOCK 2 004641' 32680 DEVERR: BLOCK 1 004642' 32690 DERR2: BLOCK 2 004644' 32710 INMTA1: BLOCK 1 004645' 32720 MTANAM: BLOCK 2 004647' 32730 MATCH: BLOCK 2 ;NAME AND EXT FOR /L OR (RX) 004651' 32740 RENSN: BLOCK 1 ;-1 IF RENAME MESSAGE SEEN PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 75 RIM LOADER 32770 SUBTTL RIM LOADER 32780 IFE RIMSW,< 004652' 265040 002155' 32790 RIMTB: ERRPNT <Z? /Y switch option not available this assembly!Z> 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 32800 XLIST> 35140 LIST 35160 IFE FTDSK,< 004665' 35170 VAR 004665' 35180 LOWTOP: 000000' 35190 END PIP1> 004665' 000000' 000001' 004666' 004040' 004041' 004667' 004040' 004044' 004670' 004044' 004647' 004671' 003745' 003742' 004672' 000500 000002 004673' 004174' 004175' 004674' 000001 003761' 004675' 000000 000010 004676' 350700 001420' 004677' 440700 004014' 004700' 440600 004044' 004701' 000004 001245 004702' 000504 001247 004703' 220600 004021' 004704' 250502 000017 004705' 250511 000016 004706' 440700 000000* 004707' 440600 003736' 004710' 440600 003221' 004711' 250500 004416' 004712' 331101 004600' 004713' 777551 004377' 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 9K CORE USED PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 81 SYMBOL TABLE PSCAN1 001113 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' PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 81-1 SYMBOL TABLE COPY1A 002225' 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 PAGE 81-2 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 PAGE 81-3 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' GETN2 001306' GETNUD 001305' GETNUM 001237' PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 81-4 SYMBOL TABLE 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' INP 001616' IOERR 001020' IOERRG 001114' PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 81-5 SYMBOL TABLE 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' MAIN2 000421' MAINA1 000031' MAINA2 000275' MAINA3 000301' PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 81-6 SYMBOL TABLE 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' NM15 000672' NM16 000700' NM2 000567' NM3 000571' PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 81-7 SYMBOL TABLE 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' OUTP3 000772' OUTP4 000770' P 000005 P1 000010' PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 81-8 SYMBOL TABLE 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' 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' PSCAN3 000351' PSCAN4 000374' PSCAN5 000407' PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 81-9 SYMBOL TABLE 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' SVOBF 003741' SVPTR1 004023' SVPTR2 004024' SYSFLG 000002 SPD PIP V.030 MOD SANDERS/DBP 19-AUG-71 PAGE 81-10 SYMBOL TABLE 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 XNAME 004135' XOFF 000023 SPD XON 000021 SPD XSS 002230' ZCNT 004034' ZFLG 004000 SPD ZRF 004052' ZRO 003721' 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 11:23:08 File: DSKB0 :EDITOR.LST [8,200] Created: 20-April-1967 11:19:00 Printed: 24-April-1978 11:22:32 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:1620 File will be deleted after printing EDITOR V.003 1 APRIL 1968 PAGE 3 DECEDIT PARAMETERS 00030 TITLE EDITOR V.003 1 APRIL 1968 00040 SUBTTL DECEDIT PARAMETERS 00060 DEFINE ERR (A) < JSR A,ERRORX> 00070 DEFINE TSTRIN (A) < EXP "A"+"A"+1> 000001 00090 S0=1 000002 00100 S1=2 000004 00110 S2=4 000010 00120 S3=10 000040 00130 S4=40 000020 00140 S5=20 000100 00150 S6=100 000200 00160 S7=200 000400 00170 S8=400 000003 00180 PDP=3 000004 00190 FL=4 000011 00200 INDEX=11 000012 00210 WC=12 000013 00220 C=13 000014 00230 COTP=14 000005 00240 IPT=5 000006 00250 TPT=6 000010 00260 P=10 000015 00270 SINDEX=15 000016 00280 CINDEX=16 000017 00290 LAST=17 000002 00300 TYP=2 000003 00310 DT=3 00320 OPDEF EXIT [POPJ PDP,] 00330 OPDEF CAL [PUSHJ PDP,] 00340 OPDEF SAVE [PUSH PDP,] 00350 OPDEF UNSAVE [POP PDP,] 00360 EXTERNAL JOBFF EDITOR V.003 1 APRIL 1968 PAGE 4 DECTAPE IO - AUGUST 25, 1965 00380 SUBTTL DECTAPE IO - AUGUST 25, 1965 001000 00400 FOPEN=1000 000001 00410 AC1=1 000002 00420 AC2=2 000005 00430 AC3=5 000006 00440 AC4=6 000000' 607200 000001 00460 FILLB: TLNN FL,1; IS BUFFER LOADED 000001' 254000 000041' 00470 JRST FILLB1; NO, SO LOAD IT 000002' 200540 001060' 00480 MOVE C,WBC; GET BUFFER COUNT 000003' 307540 000177 00490 CAIG C,177; IS IT GETTIN FULL 000004' 263140 000000 00500 ATSALL: EXIT; NO 000005' 620200 000400 00510 TRZ FL,S8; SET FIRST BLOCK FLAG TO FALSE 000006' 660200 000010 00520 TRO FL,S3; AND MODIFIED FLAG TO TRUE 000007' 201100 001064' 00530 MOVEI AC2,WB; GET WORKING BUFFER ADDRESS 000010' 201240 000001 00540 MOVEI AC3,1; SEQUENCE NUMBER TEST 000011' 271100 000125 00550 ADDI AC2,125; DUMP ABOUT 2/3 OF BUFFER 000012' 616242 000000 00560 TDNN AC3,0(AC2); BUT NOT A FRACTIONAL LINE 000013' 364100 000012' 00570 SOJA AC2,.-1; HUNT FOR BEGIN OF LINE 000014' 550400 000135' 00580 HRRZ P,THSBLK; UPDATE PREVIOUS BLOCK NUMBER 000015' 073140 000136' 00590 UGETF DT,IAMTEM; NEXT FREE BLOCK 000016' 075150 000000 00600 USETO DT,0(P); PREPARE TO DUMP THIS BLOCK 000017' 200400 000136' 00610 MOVE P,IAMTEM; AND PREPARE NEXT BLOCK 000020' 200240 001050' 00620 MOVE AC3,DTOBUF; SET UP BLT 000021' 516405 000001 00630 HRLZM P,1(AC3); LINK TO NEXT DECTAPE BLOCK 000022' 505240 001064' 00640 HRLI AC3,WB; SOURCE 000023' 271240 000002 00650 ADDI AC3,2; +2 000024' 200040 000002 00660 MOVE AC1,AC2; LAST 000025' 275040 001064' 00670 SUBI AC1,WB; AND MAKE A COUNT OF IT 000026' 274540 000001 00680 SUB C,AC1; TOTAL REMAINING WORDS 000027' 202540 001060' 00690 MOVEM C,WBC; SET NEW COUNT 000030' 271045 777777 00700 ADDI AC1,-1(AC3); SETUP FOR BLT 000031' 260140 000122' 00710 CAL DUMX; TRANSFER AND DUMP BLOCK 000032' 201240 001064' 00720 MOVEI AC3,WB; GET DEST FOR MOVE UP 000033' 504240 000002 00730 HRL AC3,AC2; AND SOURCE 000034' 200040 000005 00740 MOVE AC1,AC3; GENERATE LAST ADDRESS 000035' 271053 000000 00750 ADDI AC1,(C); FROM COUNT 000036' 251241 000000 00760 BLT AC3,(AC1); ON TOAST 000037' 250400 000135' 00770 EXCH P,THSBLK; SET NEW BLOCK 000040' 254000 000000' 00780 JRST FILLB; GO AGAIN 000041' 607200 001000 00800 FILLB1: TLNN FL,FOPEN; IS A FILE OPEN 00810 ERR 7; NO, SO *NFO* 000042' 264340 000162' JSR 7,ERRORX 000043' 661200 000001 00820 TLO FL,1; SET TO FILLED BUFFER 000044' 254000 000075' 00830 JRST GETF; AND GET THE FIRST BLOCK EDITOR V.003 1 APRIL 1968 PAGE 5 DECTAPE IO - AUGUST 25, 1965 000045' 602200 000001 00850 GET: TRNE FL,S0; FORWARD OR REVERSE 000046' 254000 000073' 00860 JRST GETL; REVERSE 000047' 602200 000020 00880 GETN: TRNE FL,S5; IS THERE ANY MORE 000050' 263140 000000 00890 EXIT; NO 000051' 554000 001063' 00900 HLRZ WBF; GET LINK 000052' 260140 000106' 00910 CAL DUMPB; OUTPUT BLOCK 000053' 200400 000135' 00920 MOVE P,THSBLK; SAVE PREVIOUS FLOCK NUMBER 000054' 620200 000400 00930 TRZ FL,S8; SET FIRST BLOCK FLAG TO FALSE 000055' 552000 000135' 00940 GET0: HRRZM THSBLK; SAVE CURRENT BLOCK NUMBER 000056' 075160 000135' 00950 USETO DT,@THSBLK; SER OUTPUT FOR PRESENT BLOCK 000057' 066140 000000 00970 SLURP: INPUT DT,0; INPUT A NEW BLOCK 000060' 554000 001063' 00980 HLRZ WBF; GET LINK 000061' 336000 000000 00990 SKIPN; WE DONT LIKE ZERO LINKS 000062' 660200 000020 01000 TRO FL,S5; SO WE SET A FLAG TO REMIND US 000063' 550000 001063' 01010 HRRZ WBF; GET COUNT 000064' 202000 001060' 01020 MOVEM WBC; AND SAVE IT 000065' 606200 000020 01030 TRNN FL,S5; WAS IT END OF FILE 000066' 332000 000000 01040 SKIPE; EMPTY BLOCK 000067' 263140 000000 01050 EXIT; END OF FILE OR NON-EMPTY BLOCK 000070' 554000 001063' 01060 HLRZ WBF; EMPTY BLOCK - GET LINK 000071' 606200 000001 01070 TRNN FL,S0; DIRECTION CHECK 000072' 254000 000055' 01080 JRST GET0; FORWARD 000073' 260140 000106' 01100 GETL: CAL DUMPB; REVERSE - GET LAST BLOCK-SAVE THIS ONE 000074' 326400 000100' 01110 JUMPN P,GETL1; IS LAST BLOCK AVAILABLE 000075' 550400 001013' 01120 GETF: HRRZ P,FBNUM; NO, SO GET FIRST ONE 000076' 620200 000021 01130 TRZ FL,S0+S5; SET FORWARD AND END 000077' 664200 000400 01140 TROA FL,S8; SET FIRST BLOCK AND SKIP 000100' 620200 000420 01150 GETL1: TRZ FL,S5+S8; SET NON-END AND NON-FIRST 000101' 074150 000000 01160 USETI DT,(P); ESTABLISH INPUT BLOCK NUMBER 000102' 075150 000000 01170 USETO DT,(P); AND OUTPUT BLOCK NUMBER 000103' 202400 000135' 01180 MOVEM P,THSBLK; UPDATE CURRENT BLOCK NUMBER 000104' 402000 000010 01190 SETZM P; AND ZERO PREVIOUS BLOCK NUMBER 000105' 254000 000057' 01200 JRST SLURP; AND INPUT THE BLOCK EDITOR V.003 1 APRIL 1968 PAGE 6 DECTAPE IO - AUGUST 25, 1965 000106' 260140 000000' 01220 DUMPB: CAL FILLB; SPLIT BLOCKS IF THE OVER-RUN 000107' 626200 000010 01230 TRZN FL,S3; ANY MODS MADE 000110' 263140 000000 01240 EXIT; NO 000111' 200100 001050' 01250 MOVE AC2,DTOBUF; POINTER TO BUFFERS 000112' 201242 000002 01260 MOVEI AC3,2(AC2); FIRST WORD ADDRESS 000113' 505240 001064' 01270 HRLI AC3,WB; FIRST DATA WORD 000114' 554040 001063' 01280 HLRZ AC1,WBF; BLOCK NUMBER 000115' 336000 000001 01290 SKIPN AC1; LAST BLOCK 000116' 370000 000001 01300 SOS AC1; YES, SO EXTEND 000117' 506042 000001 01310 HRLM AC1,1(AC2); INTO LINK 000120' 201042 000001 01320 MOVEI AC1,1(AC2); PREPARE BLT 000121' 270040 001060' 01330 ADD AC1,WBC; SIZE OF BLT 000122' 251241 000000 01340 DUMX: BLT AC3,(AC1); BLOCK UP SUBROUTINE 000123' 542040 001051' 01350 HRRM AC1,DTOBF1; LAST ADDRESS 000124' 067140 000000 01360 OUTPUT DT,0; DUMP IT 000125' 061140 740000 01370 STATO DT,740000; CHECK FOR DEVICE ERROR 000126' 263140 000000 01380 EXIT; ALL IS GOOD 000127' 476000 000004 01390 SETOM FL ; DDE ERROR 01400 ERR 12; *DDE* 000130' 264500 000162' JSR 12,ERRORX 000131' 603200 001000 01420 FINISH: TLNE FL,FOPEN; IF A FILE IS OPEN 000132' 260140 000106' 01430 CAL DUMPB; DUMP IT 000133' 071140 000000 01440 FINIS2: RELEAS DT,0; RELEASE THE TAPE 000134' 254000 001030' 01450 JRST INITIX; AND GO BACK TO SETUP 000135' 000000 000000 01470 THSBLK: 0; PRESENT BLOCK NUMBER 000136' 000000 000000 01480 IAMTEM: 0; TEMPORARY EDITOR V.003 1 APRIL 1968 PAGE 9 CONTROL - AUGUST 25, 1965 01520 SUBTTL CONTROL - AUGUST 25, 1965 01530 ;MAIN LISTEN AND DISPATCH FOR EDITOR CONTROL MODE 000137' 260140 000612' 01540 OUTTER: CAL GETCHR; GET ONE CHARACTER 000140' 306540 000015 01550 CAIN C,15; INITIAL CARRIAGE RETURNS 000141' 254000 000137' 01560 JRST OUTTER; ARE IGNORED 000142' 306540 000111 01570 CAIN C,"I" 000143' 254000 000205' 01580 JRST INSE 000144' 306540 000104 01590 CAIN C,"D" 000145' 254000 000425' 01600 JRST DELETE 000146' 306540 000120 01610 CAIN C,"P" 000147' 254000 000471' 01620 JRST PRINT 000150' 306540 000105 01630 CAIN C,"E" 000151' 254000 000131' 01640 JRST FINISH 000152' 302540 000033 01650 CAIE C,33; ALTERNATE ALTMOD 000153' 306540 000175 01660 CAIN C,175; THE REGULAR ALTMOD 000154' 254000 000522' 01670 JRST PNEXT 000155' 306540 000123 01680 CAIN C,"S" 000156' 254000 000657' 01690 JRST DECINI 01700 ERR 1; ILLEGAL COMMAND 000157' 264040 000162' JSR 1,ERRORX 01710 ;OUTPUT A CARRIAGE RETURN 000160' 201440 000171' 01720 CRT: MOVEI INDEX,CRM; PICK UP THE POINTER 000161' 254000 000601' 01730 JRST OTLINE; OUTPUT CRT-LF-* 01750 ;ERROR PRINT 000162' 000000 000000 01760 ERRORX: 0; CALLED BY JSR X,ERRORX 000163' 550440 000162' 01770 HRRZ INDEX,ERRORX; WHERE X IS THE ERROR NUMBER 000164' 135440 000204' 01780 LDB INDEX,EPT; EXTRACT THE X 000165' 201451 000171' 01790 MOVEI INDEX,ERT-1(INDEX) 000166' 201140 001304' 01800 ERROX1: MOVEI PDP,PDSTAK; INITIALIZE PUSHDOWN 000167' 260140 000601' 01810 ERROX2: CAL OTLINE; OUTPUT ERROR MESSAGE EDITOR V.003 1 APRIL 1968 PAGE 10 CONTROL - AUGUST 25, 1965 000170' 254000 001035' 01830 JRST COMLEV; AND A CARRIAGE RETURN - EXIT 01840 ;ERROR MESSAGES ET.AL. THESE MUST NOT BE MOVED ABOUT 01850 ;SINCE THE PRINT ROUTINE DEPENDS ON THE BIT 35 OF THE 01860 ;NEXT MESSAGE TO TERMINATE THE PRESENT ONE 000171' 064245 200000 01880 CRM: OCT 64245200000; THE CARRIAGE RETURN-LINE FEED-* 000172' 01890 ERT: TSTRIN <*ILC*>; ILLEGAL COMMAND 000172' 252231 441525 EXP "*ILC*"+"*ILC*"+1 01900 TSTRIN <*NLN*>; NON-EXISTENT LINE 000173' 252351 447125 EXP "*NLN*"+"*NLN*"+1 01910 TSTRIN <*ILS*>; ILLEGAL SEQUENCE 000174' 252231 451525 EXP "*ILS*"+"*ILS*"+1 01920 TSTRIN <*ILR*>; ILLEGAL REFERENCE 000175' 252231 451125 EXP "*ILR*"+"*ILR*"+1 01930 TSTRIN <*UNA*>; UNIT NOT AVAILABLE 000176' 252531 640525 EXP "*UNA*"+"*UNA*"+1 01940 TSTRIN <*DCE*>; DIRECTORY CAPACITY EXCEEDED 000177' 252110 342525 EXP "*DCE*"+"*DCE*"+1 01950 TSTRIN <*NFO*>; NO FILE OPEN 000200' 252350 647525 EXP "*NFO*"+"*NFO*"+1 01960 TSTRIN <*FAU*>; FILE NAME ALREADY IN USE 000201' 252150 152525 EXP "*FAU*"+"*FAU*"+1 01970 TSTRIN <*NCF*>; NOT A CURRENT FILE 000202' 252350 343125 EXP "*NCF*"+"*NCF*"+1 01980 TSTRIN <*DDE*>; DEVICE DATA ERROR 000203' 252110 442525 EXP "*DDE*"+"*DDE*"+1 000204' 270411 777777 01990 EPT: POINT 4,-1(INDEX),12; THE ERROR PRINT DEPENDS 02000 ;ON THE 1 IN BIT 35 HERE 02010 ;COMMUNICATIONS EDITOR V.003 1 APRIL 1968 PAGE 12 EDITOR - AUGUST 25, 1965 02040 SUBTTL EDITOR - AUGUST 25, 1965 02060 ;INSERT LINE(S) 000205' 260140 000616' 02070 INSE: CAL GETSEQ; GET THE SEQUENCE NUMBER AND STEP 000206' 202000 000016 02080 MOVEM CINDEX; THIS INSTR SKIPED IF ONLY ONE ARG 000207' 254000 000216' 02090 JRST INSE3; PROCESS IT 000210' 260140 000333' 02100 INSE2: CAL FIND; TOP OF THE LOOP - SEARCH FOR THE LINE 000211' 316651 000000 02110 CAMN SINDEX,(INDEX); EXACT MATCH? 02120 ERR 4; YES, *ILR* 000212' 264200 000162' JSR 4,ERRORX 000213' 260140 000252' 02130 CAL BACK1; BACKUP TO LAST LINE 000214' 312000 000017 02140 CAME LAST; IS IT INDEED THE LAST ONE WE PUT IN 02150 ERR 3; NO, *ILS* 000215' 264140 000162' JSR 3,ERRORX 000216' 260140 000333' 02160 INSE3: CAL FIND; GET THE LINE 000217' 260140 000541' 02170 CAL OTSEQ; OUTPUT THE SEQUENCE NUMBER 000220' 260140 000547' 02180 CAL GETLIN; GET THE INPUT LINE 000221' 254000 000137' 02190 JRST OUTTER; ALT MODE 000222' 260140 000227' 02200 CAL INSED; INSERT AND DELETE 000223' 202640 000017 02210 MOVEM SINDEX,LAST; SAVE AWAY THIS LINE NUMBER 000224' 202640 001056' 02220 MOVEM SINDEX,FIRST 000225' 260140 000305' 02230 CAL ASCIA; STEP SEQUENCE 000226' 254000 000210' 02240 JRST INSE2; LOOP BACK FOR NEXT LINE 000227' 550000 000014 02260 INSED: HRRZ COTP; GET THE SIZE OF THE LINE 000230' 201040 000000 02270 MOVEI 1,0; SETUP DIRECTION FLAG 000231' 311000 000012 02280 CAML WC; IF LINE SIZE IS GREATER-EQUAL THAN NEW 000232' 201040 000001 02290 MOVEI 1,1; SET FLAG TO 1 000233' 312000 000012 02300 CAME WC; IF OLD LINE IS NON-NULL 000234' 254000 000264' 02310 JRST INSEG; DELETE IT 000235' 322500 000245' 02320 INSE1: JUMPE WC,INSE16; NULL SIZE TO INPUT 000236' 554440 000014 02330 HLRZ INDEX,COTP; GET LINE ADDRESS 000237' 270440 000012 02340 ADD INDEX,WC; AND SIZE 000240' 547000 000014 02350 HLRS COTP; AND COUNT 000241' 505600 001313' 02360 HRLI COTP,TTB; SET SOURCE 000242' 200040 000014 02370 MOVE 1,COTP; READY FOR BLT 000243' 251611 777777 02380 BLT COTP,-1(INDEX); MOVE IN THE NEW LINE 000244' 200600 000001 02390 MOVE COTP,1; RESTORE COTP 000245' 660200 000110 02400 INSE16: TRO FL,S3+S6; SET MOD FLAGS - GENERAL EXIT 000246' 201040 001064' 02410 CLEARE: MOVEI 1,WB; CLEAR LAST BUFFER WORD 000247' 270040 001060' 02420 ADD 1,WBC; END OF BUFFER 000250' 402001 000000 02430 SETZM (1); SET TO ZERO 000251' 263140 000000 02440 EXIT; GO AWAY 02460 ;BACK UP LINE POINTER 000252' 302440 001064' 02470 BACK1: CAIE INDEX,WB; IS THIS THE FIRST LINE IN THE BUFFER 000253' 254000 000262' 02480 JRST BACK; NO, SO NORMAL PROCESS 000254' 660200 000001 02490 TRO FL,S0; WE MUST GET THE PREVIOUS BLOCK 000255' 260140 000045' 02500 CAL GET; INPUT IT - THIS WILL ALWAYS WORK 000256' 270440 001060' 02510 ADD INDEX,WBC; LAST LINE 000257' 254000 000262' 02520 JRST BACK; NOW WE BACK IT UP 000260' 200011 000000 02530 MOVE (INDEX); TOP OF LOOP - PICK UP DATA WORD 000261' 606000 000001 02540 TRNN 1; BIT ONE MAKES IT A SEQUENCE N EDITOR V.003 1 APRIL 1968 PAGE 12-1 EDITOR - AUGUST 25, 1965 000262' 364440 000260' 02550 BACK: SOJA INDEX,.-2; COUNT IT BACK 000263' 263140 000000 02560 EXIT EDITOR V.003 1 APRIL 1968 PAGE 13 EDITOR - AUGUST 25, 1965 000264' 260140 000414' 02580 INSEG: CAL CSIZE; COMPUTE SIZE OF XFER 000265' 322000 000276' 02590 JUMPE INSEX; ZERO SIZE XFER 000266' 326040 000272' 02600 JUMPN 1,INSER; FORWARD BLT 000267' 507000 000000 02610 HRLS 0; REVERSE XFER 000270' 270440 000000 02620 ADD INDEX,0; SET UP POINTER WORD 000271' 553000 000000 02630 HRRZS 0; READY TO GO 000272' 202440 000013 02640 INSER: MOVEM INDEX,C; PROTECT XFER WORD 000273' 251551 000000 02650 BLT C,(INDEX); XFER ONE WORD 000274' 256001 000303' 02660 XCT ITAB(1); STEP UP OR DOWN 000275' 365000 000272' 02670 SOJGE INSER; IF NOT DONE, LOOP BACK 000276' 550000 000014 02680 INSEX: HRRZ COTP; SETUP SIZE 000277' 274000 000012 02690 SUB WC; OF NEW BLOCK 000300' 250000 001060' 02700 EXCH WBC; 000301' 276000 001060' 02710 SUBM WBC; NOW NEW BLOCK SIZE IS IN WBC 000302' 254000 000235' 02720 JRST INSE1; ALL DONE - GO BACK 000303' 274440 000332' 02740 ITAB: SUB INDEX,K5; SHRINK 000304' 270440 000332' 02750 ADD INDEX,K5; GROW 02770 ;THE ASCII ADDER 000305' 261140 000016 02790 ASCIA: SAVE CINDEX; PROTECT THE STEP 000306' 200340 000015 02800 MOVE 7,SINDEX 000307' 404700 000327' 02810 AND CINDEX,K2; MASK OUT 60S 000310' 242700 000001 02820 LSH CINDEX,1; 000311' 434640 000331' 02830 IOR SINDEX,K4; 000312' 270640 000326' 02840 ADD SINDEX,K1; 000313' 270700 000015 02850 ADD CINDEX,SINDEX; EXCESS 166 ADDITION 000314' 404700 000330' 02860 AND CINDEX,K3; MASK OUT CARRY BITS 000315' 200640 000331' 02870 MOVE SINDEX,K4; 000316' 404640 000016 02880 AND SINDEX,CINDEX; 000317' 240640 777775 02890 ASH SINDEX,-3; GIVES 000 WHERE CARRY HAPPENED, 006 000320' 276700 000015 02900 SUBM CINDEX,SINDEX; CONVERT TO EXCESS 0 OR 60 000321' 434640 000331' 02910 IOR SINDEX,K4; CONVERT TO EXCESS 60 000322' 262140 000016 02920 UNSAVE CINDEX; RESTORE THE STEP 000323' 311340 000015 02930 CAML 7,SINDEX; IF 99999, DON'T GO TO 00009 000324' 264140 000162' 02940 ERR 3^ JSR 3,ERRORX^ 000325' 263140 000000 02950 EXIT; LEAVE 000326' 432150 643214 02970 K1: OCT 432150643214; 106 000327' 036170 743617 02980 K2: OCT 036170743617; 017 000330' 375767 737576 02990 K3: OCT 375767737576; 077 000331' 301406 030141 03000 K4: TSTRIN <00000>^ EXP "00000"+"00000"+1^ 000332' 000001 000001 03010 K5: XWD 1,1; +,- ONE TO BOTH HALVES EDITOR V.003 1 APRIL 1968 PAGE 14 EDITOR - AUGUST 25, 1965 000333' 260140 000000' 03030 FIND: CAL FILLB; FILL THE BUFFER 000334' 620200 000041 03040 FIND1: TRZ FL,S0+S4; FORWARD SEARCH AND INITIAL SEARCH 000335' 550000 001060' 03050 FIND2: HRRZ WBC; GET THE BUFFER SIZE 000336' 322000 000360' 03060 JUMPE FINDA; EMPTY BLOCK 000337' 201440 001064' 03070 MOVEI INDEX,WB; GET THE DATA ADDRESS 000340' 200000 001064' 03080 MOVE WB; GET THE FIRST DATA WORD 000341' 313000 000015 03090 CAMLE SINDEX; ARE WE PAST THE LINE 000342' 254000 000360' 03100 JRST FINDA; YES, REVERSE 000343' 316000 000015 03110 CAMN SINDEX; EXACT MATCH 000344' 254000 000402' 03120 JRST FINDEQ; YES, BE HAPPY 000345' 270440 001060' 03130 ADD INDEX,WBC; FORM ADDRESS OF LAST DATA WORD 000346' 260140 000262' 03140 CAL BACK; FIND ITS SEQUENCE NUMBER 000347' 313000 000015 03150 CAMLE SINDEX; IT THE LINE IN THIS BLOCK 000350' 254000 000372' 03160 JRST FIND3A; YES, INVESTIGATE FURTHER 000351' 316000 000015 03170 CAMN SINDEX; EXACT MATCH 000352' 254000 000402' 03180 JRST FINDEQ; YES 000353' 602200 000020 03190 FINDX: TRNE FL,S5; IS THIS LAST BLOCK 000354' 254000 000367' 03200 JRST FINDC; YES, SO EXIT WITH THIS ADDRESS 000355' 660200 000040 03210 TRO FL,S4; SCANNING HAS STARTED 000356' 620200 000001 03220 TRZ FL,S0; AND GO FORWARD 000357' 254000 000365' 03230 JRST FIND4; AWAY WE GO 000360' 201440 000000 03250 FINDA: MOVEI INDEX,0; SETUP FOR REVERSE 000361' 606200 000040 03260 TRNN FL,S4; HAVE WE BEEN HERE BEFORE 000362' 602200 000400 03270 TRNE FL,S8; OR IS IT THE FIRST BLOCK 000363' 254000 000370' 03280 JRST FINDR; YES, SO USE THIS ADDRESS 000364' 660200 000001 03290 TRO FL,S0; OTHERWISE, GO BACK ONE BLOCK 000365' 260140 000045' 03300 FIND4: CAL GET; GET THE BLOCK 000366' 254000 000335' 03310 JRST FIND2; SEARCH FOR IT 000367' 550440 001060' 03330 FINDC: HRRZ INDEX,WBC; TAIL OF BLOCK IF ENTERED HERE 000370' 271440 001064' 03340 FINDR: ADDI INDEX,WB; HEAD OF BLOCK IF ENTERED HERE 000371' 254000 000400' 03350 JRST FIND3; AND RETURN 000372' 201440 001060' 03370 FIND3A: MOVEI INDEX,WBC; WE WISH TO SCAN THIS BLOCK FOR 000373' 260140 000406' 03380 CAL FINDES; THIS LINE - COMPUTE LINE SIZE 000374' 316000 000015 03390 CAMN SINDEX; EXACT MATCH 000375' 254000 000402' 03400 JRST FINDEQ; YES, WELL, GOOD 000376' 317000 000015 03410 CAMG SINDEX; HAVE WE PASSED IT 000377' 344440 000373' 03420 AOJA INDEX,FIND3A+1; NO, SO CONTINUE 000400' 514600 000011 03430 FIND3: HRLZ COTP,INDEX; RETURN THE ADDRESS OF THE LINE 000401' 254000 000246' 03440 JRST CLEARE; EXIT 000402' 514600 000011 03460 FINDEQ: HRLZ COTP,INDEX; FOUND THE DESIRED LINE 000403' 260140 000406' 03470 CAL FINDES; COMPUTE ITS SIZE 000404' 554440 000014 03480 HLRZ INDEX,COTP; SET UP INDEX 000405' 254000 000246' 03490 JRST CLEARE; AND EXIT EDITOR V.003 1 APRIL 1968 PAGE 15 EDITOR - AUGUST 25, 1965 000406' 350000 000014 03510 FINDES: AOS COTP; FIND SIZE OF LINE 000407' 200011 000001 03520 MOVE 1(INDEX); FIND NEXT SEQUENCE NUMBER 000410' 350000 000011 03530 AOS INDEX; 000411' 606000 000001 03540 TRNN 1; SEQUENCE NUMBER? 000412' 326000 000406' 03550 JUMPN FINDES; NO, BUT ZERO ALSO DENOTES END 000413' 263140 000000 03560 EXIT; DONE 000414' 550000 000014 03580 CSIZE: HRRZ COTP; COMPUTE SIZE OF TRANSFER 000415' 554440 000014 03590 HLRZ INDEX,COTP; SIZE OF THIS LINE 000416' 270000 000011 03600 ADD INDEX; AND THIS LOCATION 000417' 270440 000012 03610 ADD INDEX,WC; PLUS THE NEW LINE SIZE 000420' 504440 000000 03620 HRL INDEX,0; IN LEFT HALF IS OLD SIZE 000421' 275000 001064' 03630 SUBI WB; AND TURN IT INTO A COUNT 000422' 550540 001060' 03640 HRRZ C,WBC; FOR A SUBTRACT 000423' 276540 000000 03650 SUBM C,0; AND NOW ZERO HAS THE XFER SIZE 000424' 263140 000000 03660 EXIT; 000425' 260140 000502' 03690 DELETE: CAL GE2SEQ; GET THE RANGE TO BE EXCISED 000426' 550440 001060' 03700 DELOOP: HRRZ INDEX,WBC; GET THE WORD COUNT 000427' 271440 001064' 03710 ADDI INDEX,WB; FORM THE END ADDRESS 000430' 260140 000262' 03720 CAL BACK; GET THE LAST SEQUENCE IN THE BLOCK 000431' 316000 000017 03730 CAMN LAST; IS THE LAST LINE THE END OF THE RANGE 000432' 254000 000447' 03740 JRST DEQ; YES 000433' 311000 000017 03750 CAML LAST; DO WE WANT TO DELETE THIS ONE TOO 000434' 254000 000451' 03760 JRST DINB; NO,DELETE TERMINATES IN THE BUFFER 000435' 260140 000465' 03770 CAL DREST; ERASE THE REST OF THE BUFFER 000436' 602200 000020 03780 EMPT: TRNE FL,S5; LAST BLOCK 000437' 254000 001035' 03790 JRST COMLEV; YES, DONE 000440' 620200 000001 03800 TRZ FL,S0; FORWARD 000441' 260140 000045' 03810 CAL GET; INPUT NEXT BLOCK 000442' 200640 001064' 03820 MOVE SINDEX,WB; GET FIRST LINE 000443' 606640 000001 03830 TRNN SINDEX,1; IF NOT A ONE, BLOCK IS EMPTY 000444' 254000 000436' 03840 JRST EMPT; SO GET THE NEXT ONE 000445' 260140 000333' 03850 CAL FIND; NEW SINDEX IS THE FIRST LINE - THIS CAL 000446' 254000 000426' 03860 JRST DELOOP; SETS UP THE COUNTS, ETC. 000447' 260140 000465' 03880 DEQ: CAL DREST; DELETE THE REST OF THE BUFFER 000450' 254000 001035' 03890 DEX: JRST COMLEV; EXIT EDITOR V.003 1 APRIL 1968 PAGE 16 EDITOR - AUGUST 25, 1965 000451' 201440 001063' 03910 DINB: MOVEI INDEX,WBF; GET INITIAL ADDRESS 000452' 260140 000406' 03920 CAL FINDES; SCAN THE LINE 000453' 322000 000456' 03930 JUMPE .+3; END OF BUFFER 000454' 317000 000017 03940 CAMG LAST; LAST LINE DONE 000455' 344440 000452' 03950 AOJA INDEX,DINB+1; NO, GO AGAIN 000456' 557000 000014 03960 HLRZS COTP; COMPUTE TOTAL SIZE 000457' 274440 000014 03970 SUB INDEX,COTP; THIS MUCH SMALLER 000460' 517000 000014 03980 HRLZS COTP; RESET LEFT HALF 000461' 542440 000014 03990 HRRM INDEX,COTP; AND RIGHT HALF GET DELTA SIZE 000462' 402000 000012 04000 CLEARM WC; SET FOR ZERO LENGTH INSERT 000463' 260140 000227' 04010 CAL INSED; INSERT THE NULL LINE 000464' 254000 001035' 04020 JRST COMLEV; AND EXIT 000465' 554440 000014 04040 DREST: HLRZ INDEX,COTP; DELETE THE REMAINING BUFFER 000466' 275440 001064' 04050 SUBI INDEX,WB; JUST DECREMENT SIZE 000467' 542440 001060' 04060 HRRM INDEX,WBC; OF THE NEW BUFFER 000470' 254000 000245' 04070 JRST INSE16; DONE EDITOR V.003 1 APRIL 1968 PAGE 17 EDITOR - AUGUST 25, 1965 000471' 260140 000502' 04090 PRINT: CAL GE2SEQ; GET THE RANGE 000472' 200011 000000 04100 PRLOOP: MOVE (INDEX); GET A LINE 000473' 322000 000533' 04110 JUMPE GETNEX; ZERO IMPLIES END OF BUFFER - GET NEXT 000474' 313000 000017 04120 CAMLE LAST; ARE WE STILL IN THE BALLPARK 000475' 254000 001035' 04130 JRST COMLEV; NO, ALL DONE 000476' 260140 000516' 04140 CAL STEP; PREPARE FOR NEXT HUNT 000477' 260140 000601' 04150 CAL OTLINE; PRINT THIS LINE 000500' 260140 000333' 04160 CAL FIND; FIND THE NEXT LINE 000501' 254000 000472' 04170 JRST PRLOOP; LOOK AT IT 000502' 260140 000616' 04190 GE2SEQ: CAL GETSEQ; GET A 2 NUMBER RANGE 000503' 334000 000000 04200 SKIPA; THERE WERE TWO 000504' 254000 000507' 04210 JRST GEX; ONLY ONE 000505' 242000 000001 04220 LSH 1; JUSTIFY IT 000506' 664000 000001 04230 TROA 1; AND FLAG IT AS A SEQUENCE NUMBER 000507' 200000 000015 04240 GEX: MOVE SINDEX; DUPLICATE THE INPUT NUMBER IF JUST ONE 000510' 202000 000017 04250 MOVEM LAST; STORE THE END OF THE RANGE 000511' 260140 000333' 04260 CAL FIND; SEARCH FOR THE FIRST LINE 000512' 316740 001056' 04270 CAMN LAST,FIRST; BOTH THE SAME 000513' 316651 000000 04280 CAMN SINDEX,(INDEX); BUT NO MATCH FOUNT 000514' 263140 000000 04290 EXIT; WILL SKIP THIS ONE 04300 ERR 2; AND *NLN* 000515' 264100 000162' JSR 2,ERRORX 000516' 261140 000016 04320 STEP: SAVE CINDEX ;PROTECT THE STEP 000517' 201700 000001 04330 MOVEI CINDEX,1; PREPARE TO ADD ONE TO SINDEX 000520' 202000 000015 04340 MOVEM SINDEX; WHICH WE LOAD FROM ZERO EDITOR V.003 1 APRIL 1968 PAGE 24 EDITOR - AUGUST 25, 1965 000521' 254000 000306' 04420 JRST ASCIA+1; AWAY 000522' 200640 001056' 04440 PNEXT: MOVE SINDEX,FIRST; PRINT NEXT LINE 000523' 200000 000015 04450 MOVE SINDEX; UPDATE THE LINE POINTER 000524' 260140 000516' 04460 CAL STEP; NEXT LINE 000525' 260140 000333' 04470 CAL FIND; WHERE IS IT 000526' 336651 000000 04480 SKIPN SINDEX,(INDEX); ZERO IS END, ALSO LOAD SINDEX 04490 ERR 2; *NLN* 000527' 264100 000162' JSR 2,ERRORX 000530' 202640 001056' 04500 MOVEM SINDEX,FIRST; STEP FIRST POINTER 000531' 260140 000601' 04510 CAL OTLINE; PRINT THE LINE 000532' 254000 000137' 04520 JRST OUTTER; BACK TO CONTROL 000533' 602200 000020 04540 GETNEX: TRNE FL,S5; END OF FILE 000534' 254000 001035' 04550 JRST COMLEV; YES, EXIT 000535' 620200 000001 04560 TRZ FL,S0; FORWARD 000536' 260140 000045' 04570 CAL GET; INPUT IT 000537' 201440 001064' 04580 MOVEI INDEX,WB; FIRST ADDRESS 000540' 254000 000472' 04590 JRST PRLOOP; RETURN TO PRINT SCAN EDITOR V.003 1 APRIL 1968 PAGE 26 TELETYPE IO - AUGUST 25, 1965 04620 SUBTTL TELETYPE IO - AUGUST 25, 1965 04640 ;OUTPUT SEQUENCE NUMBER 000541' 350000 001043' 04650 OTSEQ: AOS TYOBF1; STEP THE WORD POINTER 000542' 202660 001043' 04660 MOVEM SINDEX,@TYOBF1; PUT THE SEQUENCE NO. 000543' 201040 000211 04670 MOVEI 1,211; AND A TAB 000544' 136040 001043' 04680 IDPB 1,TYOBF1; INTO THE OUTPUT BUFFER 000545' 067100 000000 04690 OTSEQ4: OUTPUT TYP,0; OUTPUT THE TELETYPE BUFFER 000546' 263140 000000 04700 EXIT 04720 ;INPUT ONE LINE FROM TELETYPE AND CONVERT TO SEQUENCED 000547' 066100 000000 04740 GETLIN: INPUT TYP,0; READ THE LINE 000550' 201040 001314' 04750 MOVEI 1,TTB1; PREEPARE TO BLOCK IT UP 000551' 505040 001313' 04760 HRLI 1,TTB; DESTINATION 000552' 402000 001313' 04770 CLEARM TTB 000553' 251040 001336' 04780 BLT 1,TTB16; BLOCK IT UP 000554' 200300 000600' 04790 MOVE TPT,KKK1; PREPARE THE CONVERSION POINTER 000555' 200240 001046' 04800 MOVE IPT,TYIBF1; AND READ POINTER 000556' 200100 001047' 04810 MOVE 2,TYIBF2; AND THE COUNT 000557' 202646 000000 04820 MOVEM SINDEX,(TPT); PUT IN THE SEQUENCE 000560' 201040 000211 04830 MOVEI 1,211; TAB 000561' 344300 000564' 04840 AOJA TPT,EOMLOP+2; START CONVERSION 000562' 361100 000571' 04860 EOMLOP: SOJL 2,EOMOUT; IF ALL OUT OF CHARACTERS 000563' 134040 000005 04870 ILDB 1,IPT; READ ONE 000564' 136040 000006 04880 IDPB 1,TPT; WRITE ONE 000565' 302040 000033 04890 CAIE 1,33; ALTERNATE ALTMOD 000566' 306040 000175 04900 CAIN 1,175; REGULAR ALTMOD 000567' 254000 000160' 04910 JRST CRT; MAKE EXIT 000570' 254000 000562' 04920 JRST EOMLOP; GET MORE 000571' 200500 000006 04940 EOMOUT: MOVE WC,TPT; FORM WORD COUNT 000572' 274500 000600' 04950 SUB WC,KKK1; INITIAL VALUE 000573' 553000 000012 04960 HRRZS WC; CLEAR LEFT 000574' 306040 000012 04970 CAIN 1,12; LINE FEED 000575' 271500 000001 04980 ADDI WC,1; MEANS STEP COUNT 000576' 350003 000000 04990 STEPEX: AOS (PDP); SKIP EXIT 000577' 263140 000000 05000 EXIT 000600' 440700 001313' 05010 KKK1: POINT 7,TTB; INITIAL POINTER 05030 ;OUTPUT ONE LINE OF TEXT 000601' 200011 000000 05050 OTLINE: MOVE (INDEX); FIRST WORD 000602' 254000 000607' 05060 JRST OTL1 000603' 200011 000000 05070 MOVE (INDEX); SUBSEQUENT WORDS 000604' 322000 000545' 05080 JUMPE OTSEQ4; ZERO IMPLIES THE END OF THE WORLD 000605' 602000 000001 05090 TRNE 1; ONE IMPLIES THE END OF THE LINE 000606' 254000 000545' 05100 JRST OTSEQ4 000607' 350000 001043' 05110 OTL1: AOS TYOBF1; PUT IT IN THE OUTPUT BUFFER 000610' 202020 001043' 05120 MOVEM @TYOBF1 EDITOR V.003 1 APRIL 1968 PAGE 26-1 TELETYPE IO - AUGUST 25, 1965 000611' 344440 000603' 05130 AOJA INDEX,OTLINE+2; GO FOR MORE EDITOR V.003 1 APRIL 1968 PAGE 27 TELETYPE IO - AUGUST 25, 1965 05150 ;GET ONE CHARACTER 000612' 066100 000000 05170 GETCHR: INPUT TYP,0; GET A LINE 000613' 200240 001046' 05180 MOVE IPT,TYIBF1; PREPARE INPUT POINTER 000614' 134540 000005 05190 ILDB C,IPT; LOAD THE FIRST CHARACTER 000615' 263140 000000 05200 EXIT 05220 ;GET A SEQUENCE PAIR 000616' 403000 000015 05240 GETSEQ: CLEARB 0,SINDEX; MAKE BOTH ZERO 000617' 134540 000005 05250 ILDB C,IPT; GET A CHARACTER 000620' 301540 000060 05260 CAIL C,60; IT MUST BE A NUMBER 000621' 303540 000071 05270 CAILE C,71 000622' 254000 000626' 05280 JRST ETEST; OR A DELIMITER 000623' 242640 000007 05290 LSH SINDEX,7; NUMBER 000624' 270640 000013 05300 ADD SINDEX,C; NEW ONE 000625' 254000 000617' 05310 JRST GETSEQ+1 000626' 306540 000056 05330 ETEST: CAIN C,56; POINT? 000627' 254000 000652' 05340 JRST PER 000630' 306540 000054 05350 CAIN C,54; COMMA? 000631' 254000 000645' 05360 JRST CMMA 000632' 332000 000015 05370 SKIPE SINDEX; IF NOTHING INPUT YET 000633' 302540 000015 05380 CAIE C,15; OR NOT A CARRET 000634' 05390 COMERR: ERR 1; ILLEGAL COMMAND 000634' 264040 000162' JSR 1,ERRORX 000635' 434640 000656' 05400 IOR SINDEX,KK4; MAKE IT AN ASCII THING 000636' 332000 000000 05410 SKIPE 0; IF TWO ARGS 000637' 250640 000000 05420 EXCH SINDEX,0; SWAP EM BACK 000640' 242640 000001 05430 LSH SINDEX,1; LEFT JUSTIFY 000641' 660640 000001 05440 TRO SINDEX,1; AND FLAG IT 000642' 202640 001056' 05450 MOVEM SINDEX,FIRST; SAVE IT FOR . 000643' 322000 000576' 05460 JUMPE STEPEX; ONLY ONE ARG 000644' 263140 000000 05470 EXIT; TWO ARGS 000645' 322640 000634' 05490 CMMA: JUMPE SINDEX,COMERR; THREE ARGS? 000646' 326000 000634' 05500 JUMPN COMERR; ONE ARG 000647' 434640 000656' 05510 IOR SINDEX,KK4; ASCII-IZE IT 000650' 250640 000000 05520 EXCH SINDEX,0; SWAP EM 000651' 254000 000617' 05530 JRST GETSEQ+1 000652' 326640 000634' 05550 PER: JUMPN SINDEX,COMERR; CANT BE THIRD ARG 000653' 200640 001056' 05560 MOVE SINDEX,FIRST; RETREIVE POINT 000654' 242640 777777 05570 LSH SINDEX,-1; RIGHT JUSTIFY 000655' 254000 000617' 05580 JRST GETSEQ+1 000656' 140603 014060 05600 KK4: OCT 140603014060; 00000 EDITOR V.003 1 APRIL 1968 PAGE 28 DECSET - AUGUST 25, 1965 05620 SUBTTL DECSET - AUGUST 25, 1965 001000 05640 FOPEN=1000 05660 ;SET FILE OPEN (*SN,NAME) 000657' 603200 001000 05680 DECINI: TLNE FL,FOPEN; IF A FILE IS NOT ALREADY OPEN 05690 ; THEN GOTO NORMAL PROCESS 05700 ERR 1 ; IF FILE OPEN ,MUST CLOSE W. E 000660' 264040 000162' JSR 1 ,ERRORX 000661' 403200 001060' 05710 DECIN1: SETZB FL,WBC; ZERO FLAGS AND WORD COUNT 000662' 402000 001012' 05720 CLEARM DTNAME; FILE NAME 000663' 402000 001013' 05730 CLEARM DTNAME+1; AND EXTENSION 000664' 402000 001014' 05740 CLEARM DTNAME+2; AND DATE 000665' 260140 000710' 05750 CAL GTCHAR; GET UNIT NUMBER 000666' 301000 000060 05760 CAIL 60; IT MUST BE A NUMBER 000667' 303000 000070 05770 CAILE 70; 000670' 254000 000665' 05780 JRST .-3; IGNORE ANYTHING ELSE 000671' 137000 001337' 05790 DPB [POINT 5,PLUNK,23]; DUMP INTO INIT COMMAND 000672' 260140 000710' 05800 CAL GTCHAR; NEXT CHARACTER 000673' 302000 000054 05810 CAIE 54; COMMA? 000674' 254000 000672' 05820 JRST .-2; IGNORE ALL ELSE 000675' 200040 001340' 05830 LOOP0: MOVE 1,[POINT 6,DTNAME]; INITIALIZE NAME POINTER 000676' 201540 000006 05840 MOVEI C,6; MAX NAME LENGTH 000677' 260140 000710' 05850 LOOP: CAL GTCHAR; GET A CHARACTER 000700' 301000 000060 05860 CAIL "0"; NUMBERS AND LETTERS ONLY COME HERE 000701' 303000 000071 05870 CAILE "9"; SO HERE FILTER NUMBERS 000702' 254000 001000' 05880 JRST LOOP1; IT IS A LETTER 000703' 640000 000040 05890 LOOP2: TRC 40; NUMBER - MAKE IT SIXBIT 000704' 136000 000001 05900 IDPB 1; STORE INTO NAME (OR EXTENSION) 000705' 367540 000677' 05910 SOJG C,LOOP; COUNT DOWN FOR SIZE 000706' 260140 000710' 05920 CAL GTCHAR; NEXT CHARACTER 000707' 254000 000706' 05930 JRST .-1; EDITOR V.003 1 APRIL 1968 PAGE 29 DECSET - AUGUST 25, 1965 000710' 134000 000005 05960 GTCHAR: ILDB IPT; LOAD ONE CHARACTER 000711' 306000 000015 05970 CAIN 15; CRT 000712' 254000 000727' 05980 JRST GET1; SNEAK EXIT 000713' 306000 000056 05990 CAIN "."; AN EXTENSION IS COMMING 000714' 254000 001004' 06000 JRST GET2; FIX IT UP 000715' 302000 000033 06010 CAIE 33; THE FUNNY ALTMODE 000716' 306000 000175 06020 CAIN 175; AND THE REAL ONE 000717' 254000 000726' 06030 JRST GET11 ;CAUSE EXIT TO OCCUR 000720' 306000 000012 06040 CAIN 0,12 ;LF CHAR? 000721' 254000 000727' 06050 JRST GET1 ; YES TREAT AS CR 000722' 302000 000001 06060 CAIE 1; CONTROL A 000723' 263140 000000 06070 EXIT; NOTA SO EXIT HAPPY 000724' 661200 000100 06080 TLO FL,100; SET CONTROL A FLAG 000725' 254000 000710' 06090 JRST GTCHAR; GET ANOTHER CHARACTER 000726' 661200 000002 06100 GET11: TLO FL,2 ;NEW FILE FLAG 000727' 262140 000000 06120 GET1: UNSAVE; POP OFF EXIT 000730' 201000 001050' 06130 GO: MOVEI DTOBUF; THESE TWO INSTRUCTIONS REQUIRED 000731' 506000 000736' 06140 HRLM PLUNK+1; REQUIRED TO LINK LEFT HALF 000732' 200000 001057' 06150 MOVE SJOBFF; RESET JOB AREA 000733' 202000 000000* 06160 MOVEM JOBFF; TO PREVENT STORAGE EAT-UP 000734' 041140 000000 06170 INIT DT,0; INITIALIZE DECTAPE 000735' 446441 000000 06180 PLUNK: SIXBIT /DTA/; RIGHT HALF SET ABOVE 000736' 000000 001053' 06190 XWD 0,DTIBUF; LEFT HALF SET ABOVE 06200 ERR 5; UNIT NOT AVAILABLE 000737' 264240 000162' JSR 5,ERRORX 000740' 205000 400000 06210 MOVSI 400000; USE BIT 000741' 412000 001062' 06220 ANDCAM DTB; CLEAR IT 000742' 541000 001062' 06230 HRRI DTB; HEAD OF BUFFER 000743' 202000 001053' 06240 MOVEM DTIBUF; SETUP IN HEADER 000744' 065140 000001 06250 OUTBUF DT,1; SET UP SINGLE BUFFER 000745' 623200 000100 06260 TLZE FL,100; NEW DIRECTORY? 000746' 047140 000013 06270 CALLI DT,13; YES, ZONK IT (UTPCLR) 000747' 336000 001012' 06280 SKIPN DTNAME; NO NAME MEANS JUST CLEAR, PROB 000750' 254000 000133' 06290 JRST FINIS2; SO EXIT AND CLOSE FILE 000751' 076140 001012' 06300 LOOKUP DT,DTNAME; IS THE NAME ALRRADY THERE 000752' 254000 000772' 06310 JRST NEWFIL; NO, SO WE ENTER IT 000753' 603200 000002 06320 TLNE FL,2; ARE WE ASKING FOR A NEW FILE 06330 ERR 10; YES, FAU 000754' 264400 000162' JSR 10,ERRORX 000755' 200100 001013' 06350 DOIT: MOVE 2,DTNAME+1; GET LINK 000756' 074142 000000 06360 USETI DT,(2); SET IT UP 000757' 067140 000000 06370 OUTPUT DT,; MAKE SYSTEM HAPPY 000760' 075142 000000 06380 USETO DT,(2); SET UP OUTPUT ALSO 000761' 627200 000010 06390 TLZN FL,10; NEW FILE? 000762' 254000 000767' 06400 JRST DOIT1; NO, ALMOST DONE 000763' 402000 001063' 06410 SETZM WBF; WE MUST FORCE AN EMPTY BLOCK 000764' 661200 000001 06420 TLO FL,1; SET BUFFER FULL FLAG 000765' 402000 001060' 06430 SETZM WBC; ZERO LENGTH 000766' 660200 000530 06440 TRO FL,S3+S5+S6+S8; INITIAL STATE, FIRST BLOCK MODIFIED 000767' 202100 000135' 06450 DOIT1: MOVEM 2,THSBLK; SETUP CURRENT BLOCK NUMBER 000770' 661200 001000 06460 TLO FL,FOPEN; SET FILE STATUS TO OPEN EDITOR V.003 1 APRIL 1968 PAGE 29-1 DECSET - AUGUST 25, 1965 000771' 254000 001035' 06470 JRST COMLEV; ALL DONE EDITOR V.003 1 APRIL 1968 PAGE 30 DECSET - AUGUST 25, 1965 000772' 607200 000002 06490 NEWFIL: TLNN FL,2; WAS ALTMOD STRUCK 06500 ERR 11; NO, NCF 000773' 264440 000162' JSR 11,ERRORX 000774' 077140 001012' 06510 ENTER DT,DTNAME; PUT IN DI 06520 ERR 6; DCE 000775' 264300 000162' JSR 6,ERRORX 000776' 661200 000010 06530 TLO FL,10; SET NEW FILE FLAG 000777' 254000 000755' 06540 JRST DOIT; 001000' 301000 000101 06560 LOOP1: CAIL "A"; LETTER CHECK 001001' 303000 000132 06570 CAILE "Z"; IT MUST VERILY BE A LETTER 001002' 254000 000677' 06580 JRST LOOP; WE IGNORE IT 001003' 254000 000703' 06590 JRST LOOP2; WE PROCESS IT 001004' 332000 001013' 06610 GET2: SKIPE DTEXTN; EXTENSION? 06620 ERR 1; ALREADY GOT ONE, CANT HAVE TWO 001005' 264040 000162' JSR 1,ERRORX 001006' 621040 770000 06630 TLZ 1,770000; MAGIC TO BYTE POINTER TO POINT TO NEXT 001007' 201540 000003 06640 MOVEI C,3; ONLY 3 LETTERS IN EXTENSION 001010' 262140 000000 06650 UNSAVE; POP OF SOME GARBAGE 001011' 254000 000677' 06660 JRST LOOP; RETURN TO LISTEN 001012' 000000 000000 06680 DTNAME: 0; FILE NAME 001013' 000000 000000 06690 DTEXTN: 0; FILE EXTENSION 001014' 000000 000000 06700 DTDATE: 0; DATE 001015' 000000 000000 06710 0; DUMMY 001013' 06730 FBNUM=DTEXTN EDITOR V.003 1 APRIL 1968 PAGE 31 INITIA - AUGUST 25, 1965 06760 SUBTTL INITIA - AUGUST 25, 1965 000001 06770 AL=1 001016' 047000 000000 06780 INITIA: CALLI 0,0; RESET SYSTEM 001017' 041100 000001 06790 INIT TYP,AL; RESET CONCOLE 001020' 646471 000000 06800 SIXBIT /TTY/ 001021' 001042' 001045' 06810 XWD TYOBUF,TYIBUF 001022' 254200 000000 06820 HALT 001023' 064100 000001 06830 INBUF TYP,1; SET UP ONE INPUT BUFFER 001024' 065100 000002 06840 OUTBUF TYP,2; AND TWO OUTPUT BUFFERS 001025' 200000 000733* 06850 MOVE JOBFF; SAVE FIRST FREE 001026' 202000 001057' 06860 MOVEM SJOBFF; FOR LATER RESTART 001027' 067100 000000 06870 OUTPUT TYP,0; MAKE SYSTEM HAPPY 001030' 200700 001041' 06880 INITIX: MOVE CINDEX,KK1; INITIALIZE STEP TO 10 001031' 201140 001303' 06890 MOVEI PDP,PDSTAK-1; INITIALIZE PUSHDOWN POINTER 001032' 403640 000004 06900 CLEARB SINDEX,FL; FLAGS AND SEQUENCE INDEX 001033' 211400 000001 06910 MOVNI P,1; AND FIRST BLOCK POINTER 001034' 402000 001060' 06920 CLEARM WBC; WORD COUNT 001035' 260140 000160' 06930 COMLEV: CAL CRT; A COMMON RETURN 001036' 301200 000000 06940 CAIL FL,0 ; DDE ERROR 001037' 254000 000137' 06950 JRST OUTTER ; NO, SO OFF TO LISTEN CONTROL 001040' 254000 001016' 06960 JRST INITIA ; YES GO RESET WORLD 06980 ;BUFFERS, ET. AL. 001041' 140603 014260 06990 KK1: OCT 140603014260; 00010 001042' 07000 TYOBUF: BLOCK 3 001045' 07010 TYIBUF: BLOCK 3 001050' 07030 DTOBUF: BLOCK 3 001053' 000000 000000 07040 DTIBUF: 0 001054' 000700 000000 07050 XWD 700,0; SELF ASSIGNED BUFFERS, ETC. 001055' 000000 000000 07060 0 001056' 000000 000000 07080 FIRST: 0 001057' 000000 000000 07090 SJOBFF: 0 001060' 000000 000000 07110 WBC: 0; WORKING BUFFER COUNT 001061' 000000 000000 07120 0 001062' 000200 001062' 07130 DTB: XWD 200,DTB; DECTAPE HEADER 001063' 000000 000000 07140 WBF: 0 001064' 07150 WB: BLOCK 217; THE WORKING BUFFER 001303' 624563 456400 07160 RESTT: SIXBIT .RESET. 001304' 07180 PDSTAK: BLOCK 7; PUSHDOWN STAK 001313' 07190 TTB: BLOCK 23; TELETYPE BUFFER-BUFFER 001336' 000000 000000 07200 TTB16: 0 001314' 07220 TTB1=TTB+1 001046' 07230 TYIBF1=TYIBUF+1 001047' 07240 TYIBF2=TYIBUF+2 001043' 07250 TYOBF1=TYOBUF+1 001051' 07260 DTOBF1=DTOBUF+1 07280 EXTERNAL JOBFF EDITOR V.003 1 APRIL 1968 PAGE 31-1 INITIA - AUGUST 25, 1965 001337' 07290 EDEND: 001016' 07310 END INITIA 001337' 140500 000735' 001340' 440600 001012' NO ERRORS DETECTED PROGRAM BREAK IS 001341 8K CORE USED EDITOR V.003 1 APRIL 1968 PAGE 32 SYMBOL TABLE 000247 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 PAGE 32-1 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 PAGE 32-2 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' TYP 000002 EDITOR V.003 1 APRIL 1968 PAGE 32-3 SYMBOL TABLE UNSAVE 262140 000000 WB 001064' WBC 001060' WBF 001063' WC 000012 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 11:23:08 File: DSKB0 :FUDGE2.LST [8,200] Created: 20-April-1967 11:20:00 Printed: 24-April-1978 11:22:32 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:1593 File will be deleted after printing FUDGE2 V.011 PAGE 1 2-OCT-70 ED YOURDON/VJC/DMN 00010 TITLE FUDGE2 V.011 00020 SUBTTL 2-OCT-70 ED YOURDON/VJC/DMN 00030 ;FILE UPDATE GENERATOR 00040 ;"COPYRIGHT 1968,1969,DIGITAL EQUIPMENT CORP. MAYNARD,MASS. U.S.A." 000011 00060 VFUDGE==11 ;VERSION NUMBER 000000 00070 VPATCH==0 ;DEC PATCH LEVEL 000000 00080 VCUSTOM==0 ;NON-DEC PATCH LEVEL 000137 00100 JOBVER==137 000137 00110 LOC JOBVER 000137 000000 000011 00120 XWD VCUSTOM,VFUDGE+VPATCH*1000 000000' 00130 RELOC 00140 MLON 00160 ;FUDGE ACCUMULATOR DEFINITIONS 000001 00180 A= 1 ;GENERAL COMMUNICATION AC 000002 00190 B= 2 ;SCRATCH ACCUMULATOR 000003 00200 T= 3 ;USED IN /C AND /X ONLY 000004 00210 C= 4 ;SCRATCH ACCUMULATOR 000005 00220 D= 5 ;IO DEVICE NUMBER ACCUMULATOR 000006 00230 E= 6 ;SCRATCH ACCUMULATOR 000007 00240 F= 7 ;FLAG ACCUMULATOR 000010 00250 G= 10 ;DEVICE CHARACTERISTICS AC 000011 00260 H= 11 ;USED IN GETCHR AND GETCMN 000012 00270 P= 12 ;PUSHDOWN POINTER AC 000013 00280 R= 13 ;PROGRAM NAME-USED IN READ,WRITE 000014 00290 S= 14 ;SIXBIT SYMBOL ACCUMULATOR 000015 00300 DIS= 15 ;DISPATCH ACCUMULATOR 000016 00310 EXT= 16 ;FILE NAME EXTENSION ACCUMULATOR 000017 00320 SW= 17 ;SWITCH UUO AC FUDGE2 V.011 PAGE 2 2-OCT-70 ED YOURDON/VJC/DMN 00350 ;FUDGE FLAG DEFINITIONS (RIGHT HALF OF ACCUMULATOR F) 000001 00370 DESTB== 1 ;1-DESTINATION DEVICE SEEN 000002 00380 SAVEB== 2 ;1-SWITCH SEEN,BUT NOT EXECUTED 000004 00390 SWTB== 4 ;1-SWITCH MODE ENTERED IN GETCHR 000010 00400 SLSHB== 10 ;1-SWITCH MODE ENTERED WITH </> 000020 00410 TTYOB== 20 ;1-NON-TTY OUTPUT;USED BY IO 000040 00420 TTYCB== 40 ;1-NON-TTY OUTPUT;USED BY COMMAND 000100 00430 PROGB== 100 ;1-PROGRAM NAME SEEN IN SPECIFICATION 000200 00440 NOLOCB==200 ;1-DELETE LOCAL SYMBOLS ***VJC 000400 00450 DEVB== 400 ;1-DEVICE NAME SEEN IN SPEC. 001000 00460 EXTB== 1000 ;1-EXPLICIT FILE NAME EXTENSION 002000 00470 ERRB== 2000 ;1-ERROR IN ENTRY BLOCK CHECK 004000 00480 INFOB== 4000 ;1-VALID INFORMATION IN COMMAND 010000 00490 CONB== 10000 ;1-CONTEXT OF <.> IS PROGRAM NAME 00500 ;0-CONTEXT OF <.> IS FILE NAME 020000 00510 F4IB== 20000 ;1-IGNORE F4 OUTPUT 040000 00520 CRLFTY==40000 ;1-CR,LF TYPED (FOR ERROR MSG) 100000 00530 POPBAK==100000 ;1-XCT POPJ P, ;TO RETURN TO CALLING SEQ. 200000 00540 XFLG== 200000 ;1-INDEX THIS FILE 400000 00550 DTAFLG==400000 ;1-OUTPUT DEVICE IS DTA (SPECIAL INDEX) FUDGE2 V.011 PAGE 3 2-OCT-70 ED YOURDON/VJC/DMN 00600 ;HANDY BITS FOR CALLS TO DEVCHR FOR DEVICE CHARACTERISTICS 000001 00610 OUTBIT==1 ;1-DEVICE CAN DO OUTPUT 000002 00620 INBIT== 2 ;1-DEVICE CAN DO INPUT 000004 00630 DRCTRB==4 ;1-DEVICE HAS A DIRECTORY 000010 00640 TTYBIT==10 ;1-DEVICE IS A TTY 000100 00650 DTABIT==100 ;1-DEVICE IS A DTA 040000 00660 LPTBIT==40000 ;1-DEVICE IS LPT 200000 00670 DSKBIT==200000 ;1-DEVICE IS DSK 00690 ;OTHER USEFUL PARAMETER ASSIGNMENTS 000200 00700 N== 200 ;SIZE OF MASTER AND TRAN BUFFERS 000020 00710 XP== 20 ;SIZE OF PUSHDOWN LIST 000500 00720 SIZE== 500 ;SIZE OF PURE ENTRY BLOCK 000505 00730 X== SIZE+5 ;SIZE OF ENTRY AND SAVE BLOCKS 020000 00740 IOEOF== 20000 ;1-END-OF-FILE HAS BEEN SEEN 040000 00750 IOBKTL==40000 ;1-BLOCK-TOO-LARGE ERROR 100000 00760 IODATA==100000 ;1-DATA ERROR 200000 00770 IODEV== 200000 ;1-DEVICE ERROR 004000 00780 IOBOT== 4000 ;1-MAG TAPE IS AT BEGINNING OF TAPE 000011 00800 RIBALC==11 ;NUMBER OF BLOCKS ALLOCATED 00820 ;EXTERNAL SYMBOLS 00830 EXTERN JOBFF, JOBREL, JOBSYM, JOBSA 00850 OPDEF JSR [PUSHJ P,] ;PURE FOR RE-ENTRANT FUDGE FUDGE2 V.011 PAGE 4 INITIALIZE AND SETUP OF FUDGE2 00880 SUBTTL INITIALIZE AND SETUP OF FUDGE2 00890 ;THIS SECTION OF CODING DOES THE FOLLOWING THINGS 00900 ; 1.RESETS ALL IO DEVICES BY CALLING [SIXBIT /RESET/] 00910 ; 2.INITIALIZES THE TELETYPE IN ASCII-LINE MODE 00920 ; 3.TYPES A * TO SIGNIFY READINESS FOR INPUT FROM USER 00930 ; 4.SETS UP A PUSHDOWN LIST 00940 ; 5.INITIALIZES VARIOUS ACCUMULATORS, CLEARS THE FLAGS, 00950 ; AND INITIALIZES THE MSTBUF AND TRNBUF COUNTERS 000000' 255000 000000 00970 FUDGE2: JFCL ;INCASE OF CCL ENTRY 000001' 000000 000000 00980 RESET ;RESET I/O DEVICES 000002' 200000 005126' 00990 MOVE [XWD LOW,LOW+1] 000003' 402000 002515' 01000 SETZM LOW ;CLEAR DATA AREA 000004' 251000 005116' 01010 BLT LOWTOP-1 000005' 200000 005127' 01020 MOVE [XWD 17,11] ;TEST FOR LEVEL D 000006' 400000 000000 01030 SETZ ;FAILED, NOT LEVEL D 000007' 607000 003400 01040 TLNN (7B9) ;IS IT LEVEL D OR LATER? 000010' 634000 000000 01050 TDZA ;NO 000011' 561000 777776 01060 HRROI -2 ;THIS IS LEVEL D 000012' 202000 005111' 01070 MOVEM LEVEL ;STORE STATE 000013' 400000 000000 01080 SETZ ;CLEAR ACC'S 000014' 201740 000001 01090 MOVEI 17,1 ;WITH A BLT OF ZERO 000015' 251740 000017 01100 BLT 17,17 ;FROM 0-17 000016' 041000 000001 01110 INIT 0,1 ;INITIALIZE TTY, CHANNEL 0 000017' 646471 000000 01120 SIXBIT /TTY/ ;TTY 000020' 004602' 004610' 01130 XWD OBUF, IBUF ;ADDRESSES FOR BUFFER HEADERS 000021' 254200 000021' 01140 HALT . ;ILLEGAL INSTRUCTION IF NO TTY 000022' 067000 000000 01150 OUTPUT 0, ;DUMMY OUTPUT ON TTY 000023' 201040 000052 01160 MOVEI A, "*" ;PICK UP A <*> 000024' 136040 004603' 01170 IDPB A, OBUF+1 ;TYPE IT OUT 000025' 067000 000000 01180 OUTPUT 0, ;EMPTY THE BUFFER 000026' 200500 005125' 01190 MOVE P, XPDLST ;SET UP A PUSHDOWN POINTER 000027' 561240 000001 01200 HRROI D,1 ;INITIALIZE DEVICE BUFFER 000030' 202240 003324' 01210 MOVEM D, DEVBUF ;... 000031' 205040 777600 01220 MOVSI A, -N ;GET COUNT OF MSTBUF AND TRNBUF 000032' 541040 002525' 01230 HRRI A, FILBUF+1 ;INITIALIZE POINTER IN FILBUF 000033' 202040 002524' 01240 MOVEM A, FILBUF ;SET UP COUNT IN FILE BUFFER 000034' 541040 002725' 01250 HRRI A, PRGBUF+1 ;INITIALIZE POINTER IN PRGBUF 000035' 202040 002724' 01260 MOVEM A, PRGBUF ;... 000036' 541040 003124' 01270 HRRI A,PPNBUF ;INITIAL POINTER IN PPNBUF 000037' 202040 003124' 01280 MOVEM A,PPNBUF FUDGE2 V.011 PAGE 5 FUDGE2 COMMAND STRING DISPATCHING 01300 SUBTTL FUDGE2 COMMAND STRING DISPATCHING 01310 ;THIS ROUTINE PICKS UP CHARACTERS FROM THE TELETYPE BUFFER AND 01320 ;DISPATCHES TO THE PROPER ROUTINE DEPENDING ON THE TYPE OF 01330 ;CHARACTER.A TABLE OF BYTES AND BYTE POINTERS ALLOWS EACH 01340 ;CHARACTER IN THE ASCII SET TO BE TREATED INDIVIDUALLY. THE 01350 ;ROUTINE MAY BE ENTERED AT GETCHR IF IT IS DESIRED TO ACCUMULATE 01360 ;A 6-LETTER SIXBIT SYMBOL IN AC S. SYMBOLS OF DIFFERENT LENGTHS 01370 ;MAY BE ACCUMULATED IN DIFFERENT REGISTERS BY SETTING THE CONTENTS 01380 ;OF AC B TO THE DESIRED LENGTH, AND PUTTING A BYTE POINTER IN E 01390 ;AND ENTERING THE ROUTINE AT GETCHR+4. 000040' 622340 100000 01410 GETCHR: TRZE F,POPBAK ;IMMEDIATE RETURN? 000041' 263500 000000 01420 POPJ P, ;YES 000042' 201100 000006 01430 MOVEI B, 6 ;SET COUNT OF SYMBOL TO 6 000043' 200300 005117' 01440 MOVE E, SYMPTR ;SET UP A BYTE POINTER FOR AC S 000044' 201600 000000 01450 MOVEI S, 0 ;INITIALIZE SYMBOL ACCUMULATOR 000045' 377000 004612' 01460 GETCMN: SOSG IBUF+2 ;IS TTY BUFFER EMPTY? 000046' 066000 000000 01470 INPUT 0, ;YES, FILL IT UP 000047' 134040 004611' 01480 ILDB A, IBUF+1 ;GET A CHARACTER 000050' 200400 000001 01490 MOVE G, A ;GET A COPY OF IT IN AC G 000051' 200000 005100' 01500 MOVE 0, CURCHR ;SAVE PREVIOUS CHAR 000052' 202000 005101' 01510 MOVEM 0, LSTCHR ;AS LAST CHAR 000053' 202040 005100' 01520 MOVEM A, CURCHR ;SAVE CURRENT CHAR 000054' 231400 000011 01530 IDIVI G, 11 ;TRANSLATE TO 4-BIT CODE 000055' 135411 000077' 01540 LDB G, TABLE(H) ;USE PROPER BYTE POINTER 000056' 305400 000004 01550 CAIGE G, 4 ;MODIFY CODE IF .GE. 4 000057' 606340 000004 01560 TRNN F, SWTB ;MODIFY CODE IF IN SWITCH MODE 000060' 271400 000004 01570 ADDI G, 4 ;CHANGE DISPATCH BY ADDING 4 000061' 550450 000065' 01580 HRRZ H, DSPTCH(G) ;GET PROPER DISPATCH ADDRESS 000062' 301400 000010 01590 CAIL G, 10 ;BUT CHANGE IF NOT CORRECT 000063' 554450 000055' 01600 HLRZ H, DSPTCH-10(G) ;TO A LEFT HALF DISPATCH 000064' 254011 000000 01610 JRST (H) ;EXIT TO APPROPRIATE ROUTINE FUDGE2 V.011 PAGE 6 COMMAND DISPATCH TABLE AND BYTE POINTERS 01640 SUBTTL COMMAND DISPATCH TABLE AND BYTE POINTERS 000065' 000045' 002136' 01650 DSPTCH: XWD GETCMN,ERR16 ;IGNORED CHAR, BAD CHAR(SWITCH) 000066' 000145' 000135' 01660 XWD SWTCH, SWTCHA ;<(>, LETTER(SWITCH MODE) 000067' 000317' 002136' 01670 XWD COLON, ERR16 ;<:>, NUMBER(SWITCH MODE) 000070' 000257' 000146' 01680 XWD PERIOD,SWTCHE ;<.>, <)>ESCAPE SWITCH MODE 000071' 000156' 002147' 01690 XWD LFTARW,ERR17 ;<?>OR<=>, BAD CHAR (NORMAL MODE) 000072' 000310' 000127' 01700 XWD COMMA, STORE ;<,>, ALPHABETIC CHARACTER(NORMAL) 000073' 000521' 000127' 01710 XWD ALTMOD,STORE ;<$>,NUMERIC CHARACTER(NORMAL) 000074' 000144' 002147' 01720 XWD SLASH, ERR17 ;</>, <)> ILLEGAL ESCAPE 000075' 000265' 000000 01730 XWD LBRACK, 0 ;LEFT ANGLE BRACKET, OR "[" 000076' 000303' 000000 01740 XWD RBRACK, 0 ;RIGHT ANGLE BRACKET 000077' 400410 000110' 01760 TABLE: POINT 4, BITE(G), 3 000100' 340410 000110' 01770 POINT 4, BITE(G), 7 000101' 300410 000110' 01780 POINT 4, BITE(G), 11 000102' 240410 000110' 01790 POINT 4, BITE(G), 15 000103' 200410 000110' 01800 POINT 4, BITE(G), 19 000104' 140410 000110' 01810 POINT 4, BITE(G), 23 000105' 100410 000110' 01820 POINT 4, BITE(G), 27 000106' 040410 000110' 01830 POINT 4, BITE(G), 31 000107' 000410 000110' 01840 POINT 4, BITE(G), 35 FUDGE2 V.011 PAGE 7 BYTE TABLE FOR DISPATCHING 01860 SUBTTL BYTE TABLE FOR DISPATCHING 01870 ;CLASSIFICATION BYTE CODES 01880 ; BYTE DISP CLASSIFICATION 01900 ; 00 00 ILLEGAL CHARACTER, SWITCH MODE 01910 ; 01 01 ALPHABETIC CHARACTER, SWITCH MODE 01920 ; 02 02 NUMERIC CHARACTER, SWITCH MODE 01930 ; 03 03 SWITCH MODE ESCAPE, SWITCH MODE 01950 ; 00 04 ILLEGAL CHARACTER, NORMAL MODE 01960 ; 01 05 ALPHABETIC CHARACTER, NORMAL MODE 01970 ; 02 06 NUMERIC CHARACTER, NORMAL MODE 01980 ; 03 07 SWITCH MODE ESCAPE, SWITCH MODE 02000 ; 04 10 IGNORED CHARACTER 02010 ; 05 11 ENTER SWITCH MODE WITH A <(> 02020 ; 06 12 DEVICE DELIMITER, <:> 02030 ; 07 13 FILE EXTENSION DELIMITER, <.> 02040 ; (CAN ALSO BE PART OF A PROGRAM NAME) 02050 ; 10 14 OUTPUT SPECIFICATION, <LFT ARW> OR <=> 02060 ; 11 15 FILE DELIMITER, <,> 02070 ; 12 16 COMMAND TERMINATOR, <ALT MODE>=33,175,176 02080 ; 13 17 ENTER SWITCH MODE WITH A </> 02090 ; 14 20 CHANGE CONTEXT OF PERIOD TO PROG NAME, <<> ,OR "[" 02100 ; 15 21 CHANGE CONTEXT OF PERIOD TO FILE NAME, <>> 02120 ;BYTE TABLE CORRESPONDING TO 128 ASCII CHARS 000110' 200000 000000 02140 BITE: BYTE (4) 4,0,0,0,0,0,0,0,0 ;NUL 000111' 210421 000000 02150 BYTE (4) 4,4,4,4,4,0,0,0,0 000112' 000000 000012 02160 BYTE (4) 0,0,0,0,0,0,0,0,12 ;?Z=$ 000113' 500000 110100 02170 BYTE (4) 12,0,0,0,0,11,0,4,0 ;$ 000114' 000001 230411 02180 BYTE (4) 0,0,0,0,5,3,1,0,11 ;***DMN 000115' 017310 421042 02190 BYTE (4) 0,7,13,2,2,2,2,2,2 ;-,.,/,0,1,2,3,4,5 000116' 104211 406215 02200 BYTE (4) 2,2,2,2,6,0,14,10,15 ;6,7,8,9,:,;,<,=,> 000117' 000104 210421 02210 BYTE (4) 0,0,1,1,1,1,1,1,1 ; , , ,B,C,D,E,F,G 000120' 042104 210421 02220 BYTE (4) 1,1,1,1,1,1,1,1,1 ;H,I,J,K,L,M,N,O,P 000121' 042104 210421 02230 BYTE (4) 1,1,1,1,1,1,1,1,1 ;Q,R,S,T,U,V,W,X,Y 000122' 070000 100021 02240 BYTE (4) 1,14,0,0,0,10,0,1,1 ;Z,[, ,], ,?, ,A,B 000123' 042104 210421 02250 BYTE (4) 1,1,1,1,1,1,1,1,1 ;C,D,E,F,G,H,I,J,K 000124' 042104 210421 02260 BYTE (4) 1,1,1,1,1,1,1,1,1 ;L,M,N,O,P,Q,R,S,T 000125' 042104 210012 02270 BYTE (4) 1,1,1,1,1,1,0,0,12 ;U,V,W,X,Y,Z, , ,$ 000126' 510000 000000 02280 BYTE (4) 12,4 ;$,DEL FUDGE2 V.011 PAGE 8 ROUTINES TO HANDLE 0-9,A-Z,. CHARACTERS 02310 SUBTTL ROUTINES TO HANDLE 0-9,A-Z,. CHARACTERS 02320 ;IN THE COMMAND STRING. IN NORMAL MODE, THE CHARACTER IS 02330 ;DEPOSITED TO FORM A SIXBIT SYMBOL. NOTE THAT "." IS LEGAL IN A PROGRAM NAME. 02340 ;E.G. <EXP.1,ALLIO.>, IF ENCLOSED IN< >. IN SWITCH MODE, THE PROPER 02350 ;INSTRUCTION IS EXECUTED WITH THE AID OF A DISPATCH TABLE. 02360 ;THEN, IF SWITCH MODE WAS ENTERED WITH A SLASH, FUDGE2 EXITS 02370 ;FROM SWITCH MODE. 000127' 660340 004000 02390 STORE: TRO F,INFOB ; INDICATE VALID INFO SEEN 000130' 361100 000045' 02400 SOJL B, GETCMN ; JUMP IF NO ROOM FOR CHARACTER 000131' 305040 000141 02410 CAIGE A,141 ;WORRY ABOUT LOWER CASE LETTERS 000132' 275040 000040 02420 SUBI A, 40 ;CONVERT FROM ASCII TO SIXBIT 000133' 136040 000006 02430 IDPB A, E ;STORE CHARACTER ACCORDING TO BYTE 000134' 254000 000045' 02440 JRST GETCMN ;RETURN FOR NEXT CHARACTER 000135' 205740 072000 02460 SWTCHA: MOVSI SW, 072000 ;GET AN MTAPE OPCODE 000136' 301040 000141 02470 CAIL A,141 ;ACCEPT LOWER CASE SWITCHES 000137' 275040 000040 02480 SUBI A,40 000140' 256001 000115' 02490 XCT SLIST-101(A) ;EXECUTE PROPER SWITCH INSTRUCTION 000141' 622340 000010 02500 TRZE F, SLSHB ;SWITCH MODE ENTERED WITH A </>? 000142' 620340 000004 02510 TRZ F, SWTB ;YES, EXIT FROM SWITCH MODE 000143' 254000 000045' 02520 JRST GETCMN ;RETURN FOR MORE CHARACTERS 02550 ;THE FOLLOWING THREE ROUTINES HANDLE THE CONTROL CHARACTERS IN 02560 ;THE COMMAND STRING WHICH CAUSE FUDGE2 TO ENTER INTO AND EXIT 02570 ;FROM SWITCH MODE. THERE ARE TWO TYPES OF SWITCH MODE, DEPENDING 02580 ;ON WHETHER THE IT IS ENTERED WITH A </> OR A <(>. 000144' 660340 000010 02600 SLASH: TRO F, SLSHB ;ENTER SWITCH MODE WITH A </> 000145' 664340 000004 02610 SWTCH: TROA F, SWTB ;ENTER SWITCH MODE WITH A <(> 000146' 620340 000004 02620 SWTCHE: TRZ F, SWTB ;EXIT FROM SWITCH MODE WITH A <)> 000147' 254000 000045' 02630 JRST GETCMN ;RETURN FOR MORE CHARACTERS FUDGE2 V.011 PAGE 9 LEFT ARROW PROCESSOR 02660 SUBTTL LEFT ARROW PROCESSOR 02670 ;THE LEFT ARROW PROCESSOR IS ENTERED BY A DISPATCH FROM THE 02680 ;COMMAND STRING. IT SIGNALS THE END OF THE DESTINGATION DEVICE 02690 ;SPECIFICATION. IF THE SIXBIT SYMBOL ACCUMULATOR S IS NON- 02700 ;ZERO, IT ASSUMES THAT THE USER HAS OMITTED THE FILE NAME DE- 02710 ;LIMITER, AND CALLS THE FILE NAME ROUTINE. A PROGRAM NAME 02720 ;SPECIFICATION IN THE OUTPUT DEVICE IS ILLEGAL. 02730 ;FLAG SETTINGS: THE DESTINATION FLAG (DESTB) IS SET TO ONE, 02740 ;THE DEVICE FLAG IS SET TO ZERO, AND THE PROGR?M NAME FLAG (PROGB) 02750 ;IS SET TO ONE SO THAT THE FIRST DEVICE AFTER THE LEFT ARROW 02760 ;WILL NOT RESULT IN A CALL TO PUTDEV. 02770 ;IF NO OUTPUT DEVICE IS SEEN DSK IS ASSUMED. 02780 ;POPBAK IS SET SO CONTROL RETURNS FRON COLON VIA GETCHR 000150' 261500 000014 02800 NODEV: PUSH P,S ;SAVE FILE NAME 000151' 205600 446353 02810 MOVSI S,(SIXBIT /DSK/);DSK IS DEFAULT DEVICE 000152' 660340 100000 02820 TRO F,POPBAK ;RETURN FROM GETCHR 000153' 260500 000317' 02830 PUSHJ P,COLON ;FAKE A DEVICE SEEN 000154' 262500 000014 02840 POP P,S ;RESTORE FILE NAME 000155' 263500 000000 02850 POPJ P, ;RETURN 000156' 260500 000407' 02880 LFTARW: PUSHJ P, SEMICP ;DO A LOOKUP IF NECESSARY 000157' 620340 000400 02890 TRZ F, DEVB ;SET THE DEVICE FLAG TO ZERO 000160' 660340 000101 02900 TRO F, PROGB+DESTB ;SET PROGRAM AND DESTINATION FLAGS 000161' 254000 000040' 02910 JRST GETCHR ;RETURN FOR NEXT SYMBOL FUDGE2 V.011 PAGE 10 THIS CODE PROCESSES PROJECT-PROGRAMMER NUMBERS 02950 SUBTTL THIS CODE PROCESSES PROJECT-PROGRAMMER NUMBERS 000162' 400140 000000 02970 LSQB: SETZ T, ;START WITH ZERO 000163' 261500 000003 02980 PUSH P,T ;AND STORE IT 000164' 260500 000210' 02990 LSQB1: PUSHJ P,TTYIN ;GET NEXT CHAR. 000165' 306040 000135 03000 CAIN A,"]" ;MATCHING SQB.? 000166' 254000 000202' 03010 JRST RSQB ;YES 000167' 306040 000054 03020 CAIN A,"," ;COMMA? 000170' 254000 000177' 03030 JRST SQBCMA ;YES,SORT OUT XWD 000171' 301040 000060 03040 CAIL A,"0" ;IS IT AN OCTAL NUMBER? 000172' 303040 000071 03050 CAILE A,"9" ;... 000173' 254000 000214' 03060 JRST ERRISQ ;NO,ERROR 000174' 242140 000003 03070 LSH T,3 ;MAKE SPACE FOR NEXT CHAR. 000175' 271141 777720 03080 ADDI T,-60(A) ;ADDI IN NEW DIGIT 000176' 254000 000164' 03110 JRST LSQB1 ;BACK FOR MORE 000177' 516152 000000 03130 SQBCMA: HRLZM T,(P) ;STORE LEFT HALF ON STACK 000200' 400140 000000 03140 SETZ T, ;START AFRESH 000201' 254000 000164' 03150 JRST LSQB1 ;AND GET RIGHT HALF 000202' 542152 000000 03170 RSQB: HRRM T,(P) ;PUT RIGHT HALF ON STACK 000203' 262500 000003 03180 POP P,T ;AND POP XWD OFF 000204' 202140 005113' 03190 MOVEM T,PRJPRG ;SAVE DEFAULT PROJ-PROG 000205' 326600 000045' 03200 JUMPN S,GETCMN ;AFTER A FILE NAME IS ONLY TEMP. 000206' 202140 005112' 03210 MOVEM T,DEFPPN ;PERMANENT DEFAULT PPN 000207' 254000 000045' 03220 JRST GETCMN ;GET NEXT CHAR. 000210' 377000 004612' 03240 TTYIN: SOSG IBUF+2 ;BUFFER EMPTY 000211' 066000 000000 03250 INPUT 0, ;YES, FILL IT UP 000212' 134040 004611' 03260 ILDB A,IBUF+1 ;GET A CHARACTER 000213' 263500 000000 03270 POPJ P, ;AND RETURN 000214' 201100 005130' 03290 ERRISQ: MOVEI B,[ASCIZ /?Illegal project-programmer number/] 000215' 254000 002247' 03300 JRST ERROR FUDGE2 V.011 PAGE 11 DISPATCH TABLE FOR SWITCHES 03320 SUBTTL DISPATCH TABLE FOR SWITCHES 000216' 201640 000711' 03340 SLIST: MOVEI DIS, APPEND ;A - APPEND INSTRUCTION 000217' 260500 000250' 03350 PUSHJ P, BSWTCH ;B - BACKSPACE ONE FILE 000220' 201640 000730' 03360 MOVEI DIS, DELCPY ;C - COPY AND DELETE LOCAL SYMBOLS ***VJC 000221' 201640 000701' 03370 MOVEI DIS, DELETE ;D - DELETE INSTRUCTION 000222' 201640 000660' 03380 MOVEI DIS, EXTRCT ;E - EXTRACT INSTRUCTION 000223' 254000 002136' 03390 JRST ERR16 ;F - ERROR 000224' 254000 002136' 03400 JRST ERR16 ;G - ERROR 000225' 254000 002136' 03410 JRST ERR16 ;H - ERROR 000226' 201640 000632' 03420 MOVEI DIS, INSERT ;I - INSERT INSTRUCTION 000227' 254000 002136' 03430 JRST ERR16 ;J - ERROR 000230' 260500 000251' 03440 PUSHJ P, KSWTCH ;K - SKIPFILE 000231' 201640 000600' 03450 MOVEI DIS, LIST ;L - LIST COMMAND 000232' 254000 002136' 03460 JRST ERR16 ;M - ERROR 000233' 254000 002136' 03470 JRST ERR16 ;N - ERROR 000234' 254000 002136' 03480 JRST ERR16 ;O - ERROR 000235' 254000 002136' 03490 JRST ERR16 ;P - ERROR 000236' 254000 002136' 03500 JRST ERR16 ;Q - ERROR 000237' 201640 000621' 03510 MOVEI DIS, REPLCE ;R - REPLACE INSTRUCTION 000240' 254000 002136' 03520 JRST ERR16 ;S - ERROR 000241' 260500 000252' 03530 PUSHJ P, TSWTCH ;T - SKIP TO LOGICAL END OF TAPE 000242' 254000 002136' 03540 JRST ERR16 ;U - ERROR 000243' 254000 002136' 03550 JRST ERR16 ;V - ERROR 000244' 260500 000253' 03560 PUSHJ P, WSWTCH ;W - REWIND MAG TAPE 000245' 201640 000722' 03570 MOVEI DIS,INDEX ;X - INDEX THIS LIBRARY 000246' 254000 002136' 03580 JRST ERR16 ;Y - ERROR 000247' 260500 000254' 03590 PUSHJ P, ZSWTCH ;Z - CLEAR DIRECTORY ON DECTAPE 03620 ;MAGTAPE AND DECTAPE DEVICE SWITCH HANDLERS 03630 ;THE FOLLOWING ROUTINES HANDLE THE B,K,T,W, AND Z SWITCHES 03640 ;BY ASSEMBLING THE PROPER CALL OR UUO INSTRUCTION. IF A 03650 ;DEVICE HAS ALREADY BEEN SEEN, THE CHANNEL NUMBER IS LOADED 03660 ;INTO THE COMMAND, AND THE INSTRUCTION IS EXECUTED. OTHER- 03670 ;WISE, EXECUTION IS DEFERRED BY SETTING A FLAG AND STORING 03680 ;THE PARTIALLY ASSEMBLED INSTRUCTION. THE INSTRUCTION IS 03690 ;EXECUTED LATER, AFTER THE DEVICE HAS BEEN SEEN. 000250' 271740 000001 03710 BSWTCH: ADDI SW, 1 ;CODE FOR BACKSPACE IS 17 000251' 271740 000006 03720 KSWTCH: ADDI SW, 6 ;CODE FOR SKIPFILE IS 16 000252' 271740 000007 03730 TSWTCH: ADDI SW, 7 ;CODE FOR SKIP TO L.E.O.T. IS 10 000253' 344740 000255' 03740 WSWTCH: AOJA SW,.+2 ;CODE FOR REWIND IS 1 000254' 200740 005123' 03750 ZSWTCH: MOVE SW, DTCLR ;DIFFERENT UUO FOR /Z 000255' 660340 000002 03760 TRO F, SAVEB ;TURN ON THE SWITCH BIT 000256' 263500 000000 03770 POPJ P, ;EXIT FUDGE2 V.011 PAGE 12 PERIOD PROCESSOR 03790 SUBTTL PERIOD PROCESSOR 03800 ;THE PERIOD PROCESSOR IS CALLED BY A DISPATCH FROM GETCHR. IT 03810 ;PRECEDES A FILE NAME EXTENSION, UNLESS THE CONTEXT BIT CONB IS 03820 ;A ONE (CONB=1), IN WHICH CASE, THE PERIOD WAS FOUND INSIDE AN 03830 ;ANGLE BRACKET, INDICATING THAT IT IS PART OF A PROGRAM NAME. 03840 ;THE EXTENSION NAME IS GOTTEN BY ENTERING THE GETCHR ROUTINE 03850 ;WITH THE LENGTH SET TO THREE CHARACTERS, AND A BYTE POINTER 03860 ;SET TO STORE THE SYMOL IN ACCUMULATOR EXT. THE EXTENSION 03870 ;FLAG IS SET BY THIS ROUTINE. 000257' 602340 010000 03890 PERIOD: TRNE F, CONB ;IS PERIOD PART OF A PROGRAM NAME? 000260' 254000 000127' 03900 JRST STORE ;YES, STORE IT IN SYMBOL 000261' 660340 001000 03910 TRO F, EXTB ;NO, SET EXTENSION FLAG 000262' 200300 005120' 03920 MOVE E, EXTPTR ;GET ANOTHER BYTE POINTER 000263' 201100 000003 03930 MOVEI B, 3 ;ASSEMBLE A 3-CHARACTER WORD 000264' 254000 000045' 03940 JRST GETCMN ;BUT DONT DESTROY S FUDGE2 V.011 PAGE 13 ROUTINES TO PROCESS ANGLE BRACKETS 03970 SUBTTL ROUTINES TO PROCESS ANGLE BRACKETS 03980 ;THE FOLLOWING ROUTINES PROCESS THE LEFT ANGLE BRACKET "<" 03990 ;AND RIGHT ANGLE BRACKET ">" CHARACTERS. THEY ARE ENTERED BY 04000 ;A DISPATCH FROM THE GETCHR ROUTINE. THE ANGLE BRACKETS 04010 ;CAN ACT AS FILE NAME OR PROGRAM NAME DELIMITERS, SO A CHECK 04020 ;IS MADE TO SEE IF THE SYMBOL ACCUMULATOR IS NON-ZERO. THE 04030 ;MAIN FUNCTION OF THE ROUTINES IS TO SET OR CLEAR THE CONTEXT 04040 ;BIT CONB, WHOSE INTERPRETATION IS AS FOLLOWS: 04050 ;SETTING OF BIT MEANING 04060 ; 0 COMMAS DELIMIT FILE NAMES, AND PERIODS 04070 ; DELIMIT FILE NAME EXTENSIONS 04080 ; 1 COMMAS DELIMIT PROGRAM NAMES, AND PERIODS 04090 ; ARE PART OF A PROGRAM NAME 000265' 606340 000001 04110 LBRACK: TRNN F, DESTB ;IS THIS THE OUTPUT DEVICE? 000266' 254000 002007' 04120 JRST ERROR1 ;YES, SYNTAX ERROR 000267' 306040 000133 04130 CAIN A,"[" ;PROJECT-PROGRAMMER PAIR? 000270' 254000 000162' 04140 JRST LSQB ;YES, HANDLE IT 000271' 200000 005102' 04150 MOVE 0,SDEVCHR ;GET SAVED DEV CHRSTCS 000272' 607000 200100 04160 TLNN 0,DTABIT+DSKBIT ;LAST DEVICE DSK OR DTA? 000273' 254000 000277' 04170 JRST LBRACA ;NO 000274' 200000 005101' 04180 MOVE 0,LSTCHR ;GET LAST CHAR 000275' 306000 000072 04190 CAIN 0,72 ;WAS IT COLON? 000276' 254000 002007' 04200 JRST ERROR1 ;YES,:< ILLEGAL 000277' 04210 LBRACA: ;NO CONTINUE 000277' 260500 000407' 04220 PUSHJ P, SEMICP ;PROCESS THE FILE NAME 000300' 660340 010000 04230 TRO F, CONB ;SET CONTEXT TO PROGRAM NAMES 000301' 350000 005077' 04240 AOS MATCH ;ADD ONE FOR EACH LEFT < ***VJC 000302' 254000 000040' 04250 JRST GETCHR ;RETURN FOR MORE CHARACTERS 000303' 322600 000305' 04270 RBRACK: JUMPE S,.+2 ;IS THERE A SYMBOL TO HANDLE? 000304' 260500 000470' 04280 PUSHJ P,COMMAP ;YES,PROCESS THE FILE NAME 000305' 620340 010000 04290 TRZ F,CONB ;SET CONTEXT TO FILE NAMES 000306' 370000 005077' 04300 SOS MATCH ;SUBTRACT ONE FOR EACH RIGHT > ***VJC 000307' 254000 000040' 04310 JRST GETCHR ;RETURN FOR MORE CHARACTERS FUDGE2 V.011 PAGE 14 COMMA PROCESSOR 04340 SUBTTL COMMA PROCESSOR 04350 ;THE COMMA ROUTINE IS ENTERED BY A DISPATCH FROM GETCHR. 04360 ;IT DETERMINES WHETHER THE COMMA DELIMITS A FILE NAME OR A 04370 ;PROGRAM NAME, AND TRANSFERS CONTROL EITHER TO SEMICP OR TO 04380 ;COMMAP. 000310' 606340 010000 04400 COMMA: TRNN F, CONB ;FILE NAME OR PRGRAM NAME? 000311' 254000 000314' 04410 JRST COMMAX ;FILE NAME 000312' 260500 000470' 04420 PUSHJ P, COMMAP ;PROGRAM NAME 000313' 254000 000040' 04430 JRST GETCHR ;RETURN FOR MORE CHARACTERS 000314' 260500 000407' 04450 COMMAX: PUSHJ P, SEMICP ;FILE NAME, DO A LOOKUP 000315' 402000 005113' 04460 SETZM PRJPRG ;CLEAR TEMP. PPN 000316' 254000 000040' 04470 JRST GETCHR ;RETURN FOR MORE CHARACTERS FUDGE2 V.011 PAGE 15 COLON PROCESSOR 04500 SUBTTL COLON PROCESSOR 04510 ;THIS ROUTINE IS ENTERED BY A DISPATCH FROM THE GETCHR 04520 ;ITS PURPOSE IS TO INITIALIZE DEVICES USED BY FUDGE2 AND 04530 ;ASSIGN THEM A CHANNEL NUMBER. IF THE DEVICE IS THE TTY, THE 04540 ;ROUTINE EXITS IMMEDIATELY, SINCE THE TTY HAS ALREADY BEEN 04550 ;INITIALIZED. IF A PROGRAM WAS NOT SEEN IN THE PREVIOUS DEVICE 04560 ;SPECIFICATION, THEN THE PRECEDING FILE HAD NO PROGRAMS 04570 ;FOLLOWING IT, AND A ZERO IS PLACED IN THE LIST STRUCTURE IN 04580 ;THE 3-WORD FILE BLOCK, SO THAT THE GETDEV ROUTINE WILL 04590 ;KNOW THAT THE ENTIRE FILE IS DESIRED. IF THE COLON ROUTINE 04600 ;IS CALLED WITH 0 IN ACCUMULATOR S, THE ROUTINE ASSUMES 04610 ;THAT SOMETHING LIKE "DTA3:FOO?DTA4:BAR<X,Y,Z>,MTA0:::/R" 04620 ;WAS TYPED, AND IT PUTS A PHONY FILE NAME IN FILBUF TO KEEP 04630 ;THE BOOK-KEEPING STRAIGHT. 000317' 660340 000400 04650 COLON: TRO F, DEVB ;DEVICE WAS SEEN IN THIS SPEC. 000320' 602340 100000 04660 TRNE F,POPBAK ;DEFAULT "DSK" BEING SET 000321' 254000 000324' 04670 JRST .+3 ;SO DON'T CLEAR PROJ-PROG 000322' 402000 005112' 04680 SETZM DEFPPN ;CLEAR PERMANENT PPN 000323' 402000 005113' 04690 SETZM PRJPRG ;AND TEMP. ALSO 000324' 322600 000373' 04700 JUMPE S, COLONC ;NULL S IMPLIES FILES ON MTA,PTR 000325' 202600 002522' 04710 MOVEM S, COLON2 ;SAVE DEVICE FOR INIT 000326' 200400 000014 04720 MOVE G, S ;GET A COPY OF THE DEVICE NAME 000327' 000400 000000 04730 DEVCHR G, ;GET ITS CHARACTERISTICS 000330' 202400 005102' 04740 MOVEM G,SDEVCHR ;SAVE DEV CHRSTCS ***VJC 000331' 603400 040010 04750 TLNE G,TTYBIT!LPTBIT ;IF EITHER TTY OR LPT 000332' 402000 005111' 04760 SETZM LEVEL ;DON'T DO EXTENDED LOOKUPS EVER 000333' 603400 000010 04770 TLNE G, TTYBIT ;IS THE DEVICE A TTY? 000334' 254000 000040' 04780 JRST GETCHR ;YES, RETURN IMMEDIATELY 000335' 606340 000001 04790 TRNN F, DESTB ;IS THIS THE OUTPUT DEVICE? 000336' 254000 000375' 04800 JRST COLON4 ;YES, GO CHECK SEPARATE THINGS 000337' 200240 003324' 04810 MOVE D, DEVBUF ;GET POINTER TO DEVICE NAME TABLE 000340' 252240 000344' 04820 COLON6: AOBJP D, COLON7 ;MORE DEVICES TO CHECK? 000341' 316605 003324' 04830 CAMN S, DEVBUF(D) ;HAS DEVICE ALREADY BEEN INITTED? 000342' 254000 000040' 04840 JRST GETCHR ;YES, DON'T RE-INIT IT 000343' 254000 000340' 04850 JRST COLON6 ;CHECK SOME MORE FUDGE2 V.011 PAGE 16 COLON PROCESSOR 000344' 202605 003324' 04880 COLON7: MOVEM S, DEVBUF(D) ;STORE THE NEW DEVICE NAME 000345' 205040 777777 04890 MOVSI A, -1 ;FIX UP THE COUNT IN THE BUFFER 000346' 272040 003324' 04900 ADDM A, DEVBUF ;... 000347' 607400 000002 04910 TLNN G, INBIT ;CAN DEVICE DO INPUT? 000350' 254000 002015' 04920 JRST ERROR4 ;NO, ERROR 000351' 201600 000000 04930 MOVEI S, 0 ;CLEAR OUT THE SYMBOL WORD 000352' 666340 000100 04940 TRON F, PROGB ;WAS A PROGRAM NAME SEEN? 000353' 260500 000444' 04950 PUSHJ P, STNULL ;NO, STORE A NULL IN FILE BLOCK 000354' 200040 000005 04960 MOVE A, D ;CALCULATE BUFFER HEADER POSITION 000355' 221040 000003 04970 IMULI A, 3 ;3 WORDS PER BUFFER HEADER 000356' 271040 004610' 04980 ADDI A, IBUF ;ALL BUFFER HEADERS IN IBUF BLOCK 000357' 350000 005103' 04990 COLON8: AOS NUMDEV ;ONE MORE DEVICE SEEN 000360' 202040 002523' 05000 MOVEM A, COLON3 ;SAVE WORD FOR INIT 000361' 201040 000014 05010 MOVEI A, 14 ;SET MODE TO BINARY 000362' 603400 040000 05020 TLNE G,LPTBIT ;IS DEVICE THE LPT? 000363' 201040 000000 05030 MOVEI A, 0 ;YES, RESTORE MODE TO ASCII 000364' 542040 002521' 05040 HRRM A, COLON0 ;SAVE MODE FOR INIT 000365' 137240 005137' 05050 DPB D, [POINT 4,COLON1,12] 000366' 256000 002462' 05060 XCT COLON1 ;DO OPEN ON DEVICE 000367' 254000 002061' 05070 JRST ERROR9 ;DEVICE NOT AVAILABLE 000370' 606340 000001 05080 TRNN F, DESTB ;IS THIS THE OUTPUT DEVICE? 000371' 254000 000040' 05090 JRST GETCHR ;YES, NO MORE CHECKING - EXIT 000372' 607400 000004 05100 TLNN G, DRCTRB ;DOES DEVICE HAVE A DIRECTORY? 000373' 260500 000406' 05110 COLONC: PUSHJ P, COLONB ;NO, GIVE IT A PHONY FILE NAME 000374' 254000 000040' 05120 JRST GETCHR ;RETURN FOR MORE CHARACTERS 05140 ;OUTPUT DEVICE ONLY 000375' 202600 003325' 05160 COLON4: MOVEM S, DEVBUF+1 ;SAVE THE DEVICE NAME 000376' 201240 000001 05170 MOVEI D, 1 ;SET DEVICE NUMBER TO 1 000377' 607400 000001 05180 TLNN G, OUTBIT ;CAN DEVICE DO OUTPUT? 000400' 254000 002015' 05190 JRST ERROR4 ;NO, ERROR 000401' 603400 000100 05200 TLNE G,DTABIT ;IS DEVICE DTA? 000402' 660340 400000 05210 TRO F,DTAFLG ;YES, SET IN CASE INDEXING 000403' 205040 004605' 05220 MOVSI A, OBUF+3 ;CALCULATE BUFFER HEADER ADDRESS 000404' 660340 000040 05230 TRO F, TTYCB ;INDICATE NON-TTY IO 000405' 254000 000357' 05240 JRST COLON8 ;ENTER MAIN PROCESSING LOOP 000406' 201600 465757 05260 COLONB: MOVEI S, 465757 ;FILE NAME OF "FOO" 05270 ;FALLS THROUGH TO SEMICP ROUTINE FUDGE2 V.011 PAGE 17 FILE NAME PROCESSOR 05290 SUBTTL FILE NAME PROCESSOR 05300 ;THIS ROUTINE IS CALLED BY THE COMMA ROUTINE WHEN IT HAS 05310 ;BEEN DETERMINED THAT THE CONTEXT OF THE COMMA IS THAT OF A 05320 ;FILE NAME. NULL FILES ARE IGNORED BY THE ROUTINE, AND CAUSE 05330 ;AN IMMEDIATE RETURN TO GETCHR. FOR OUTPUT DEVICES, AN ENTER 05340 ;IS PERFORMED, WHILE FOR INPUT DEVICES, THE FLOW OF CONTROL IS 05350 ;AS FOLLOWS: 05360 ; 1. IF THE PREVIOUS FILE HAD NO PROGRAMS, A ZERO IS 05370 ; STORED IN THE 3RD WORD OF THE FILE BLOCK OF THAT 05380 ; FILE - THE WORD THAT ORDINARILY POINTS TO THE 05390 ; PROGRAM SUBLIST. 05400 ; 2. THE PROGRAM LIST FOR THE PREVIOUS FILE IS TERMINATED 05410 ; BY PUTTING A ZERO IN THE PROGRAM BUFFER, AND PUTTING 05420 ; A POINTER TO THE ZERO IN THE 3RD WORD OF THIS FILE 05430 ; BLOCK (NOT THE PREVIOUS BLOCK) 05440 ; 3. THE FILE NAME AND FILE NAME EXTENSION AND THE DEVICE 05450 ; CHANNEL NUMBER OF THE CURRENT FILE ARE STORED. 000407' 606340 000400 05470 SEMICP: TRNN F,DEVB ;HAS A DEVICE BEEN SEEN? 000410' 260500 000150' 05480 PUSHJ P,NODEV ;NO, SO ASSUME "DSK" 000411' 312740 005123' 05490 CAME SW,DTCLR ;Z SWITCH? YES, OPERATE ON OUTPUT ONLY 000412' 137240 005140' 05500 DPB D, [POINT 4,SW,12] 000413' 622340 000002 05510 TRZE F, SAVEB ;IS THERE A SWITCH TO PROCESS? 000414' 256000 000017 05520 XCT SW ;YES, EXECUTE IT 000415' 322600 000462' 05530 JUMPE S, SEMIC3 ;IGNORE NULL FILES 000416' 626340 001000 05550 SEMICA: TRZN F, EXTB ;EXPLICIT EXTENSION SEEN? 000417' 505700 624554 05560 HRLI EXT, 624554 ;NO, REPLACE WITH REL" 000420' 606340 000001 05570 TRNN F, DESTB ;OUTPUT DEVICE? 000421' 254000 000447' 05580 JRST SEMIC2 ;YES, PROCESS SEPARATELY 000422' 261500 000014 05590 PUSH P, S ;SAVE FILE NAME 000423' 201600 000000 05600 MOVEI S, 0 ;PUT IN A ZERO 000424' 626340 000100 05610 TRZN F, PROGB ;WAS A PROGRAM SEEN IN PREVIOUS? 000425' 260500 000444' 05620 PUSHJ P, STNULL ;NO, CLOSE OUT PREVIOUS FILE 000426' 260500 001144' 05630 PUSHJ P, PUTPRG ;YES, CLOSE OUT PREVIOUS PRGLST 000427' 262500 000014 05640 SEMIC4: POP P, S ;RESTORE FILE NAME 000430' 316600 005141' 05650 CAMN S,[12B5] ;IS IT * ?***DMN 000431' 254000 001675' 05660 JRST ASTRSK ;YES ***DMN 000432' 260500 001137' 05670 PUSHJ P, PUTFIL ;NO, STORE FILENAME 000433' 200600 005112' 05680 MOVE S,DEFPPN ;GET GLOBAL PPN 000434' 260500 001151' 05690 PUSHJ P,PUTPPN ;SAVE IT 000435' 200600 000016 05700 MOVE S, EXT ;GET FILE NAME EXTENSION 000436' 260500 001137' 05710 PUSHJ P, PUTFIL ;STORE IT 000437' 542241 000000 05720 HRRM D, (A) ;STORE CHANNEL NUMBER, ALSO 000440' 200600 005113' 05730 MOVE S,PRJPRG ;GET TEMP. PPN 000441' 260500 001151' 05740 PUSHJ P,PUTPPN ;SAVE IT ALSO 000442' 550600 002724' 05750 HRRZ S, PRGBUF ;GET A POINTER TO PROGRAM LIST 000443' 254000 001137' 05760 JRST PUTFIL ;STORE IT AND EXIT 000444' 550040 002524' 05780 STNULL: HRRZ A, FILBUF ;GET ADDRESS OF CURRENT BLOCK 000445' 402001 000000 05790 SETZM (A) ;CLOSE OUT THE FILE 000446' 263500 000000 05800 POPJ P, ;EXIT FUDGE2 V.011 PAGE 18 ENTER ON OUTPUT DEVICE DIRECTORY 05830 SUBTTL ENTER ON OUTPUT DEVICE DIRECTORY 000447' 202600 004572' 05850 SEMIC2: MOVEM S, EBLOCK ;SAVE FILE NAME FOR ENTER 000450' 202700 004573' 05860 MOVEM EXT, EBLOCK+1 ;SAVE FILE NAME EXTENSION 000451' 137240 005142' 05870 DPB D, [POINT 4,SEMIC1,12] 000452' 402000 004574' 05880 SETZM EBLOCK+2 ;CLEAR DATA AND PROTECTION 000453' 200140 005102' 05890 MOVE T,SDEVCHR ;GET CHARACTERISTICS 000454' 607140 200000 05900 TLNN T,DSKBIT ;IF NOT A DSK 000455' 402000 005111' 05910 SETZM LEVEL ;CLEAR LEVEL D FLAG 000456' 332140 005111' 05920 SKIPE T,LEVEL ;EITHER -2 OR 0 000457' 254000 000463' 05930 JRST DEFENT ;SAVE ENTRY BLOCK 000460' 256000 002463' 05940 XCT SEMIC1 ;DO AN ENTER ON THE OUTPUT DEVICE 000461' 254000 002076' 05950 JRST ERR14 ;DIRECTORY FULL 000462' 263500 000000 05960 SEMIC3: POPJ P, ;EXIT 000463' 200140 005143' 05980 DEFENT: MOVE T,[XWD EBLOCK,SVENTR] 000464' 251140 005115' 05990 BLT T,SVENTR+1 ;SAVE EBLOCK 000465' 201140 000011 06000 MOVEI T,RIBALC ;SET FOR 11 WORD LOOKUP 000466' 202140 004570' 06010 MOVEM T,EBLOCK-2 ;IN EXTENDED LOOKUP 000467' 254000 000462' 06020 JRST SEMIC3 ;DEFER ENTRY TIL AFTER LOOKUP FUDGE2 V.011 PAGE 19 THE PROGRAM NAME PROCESSOR 06040 SUBTTL THE PROGRAM NAME PROCESSOR 06050 ;THE COMMAP ROUTINE IS ENTERED BY A CALL FROM THE COMMA 06060 ;ROUTINE WHEN THE CONTEXT OF A COMMA IS THAT OF A PROGRAM NAME 06070 ;DELIMITER. ITS PURPOSE IS TO SAVE UP THE PROGRAM NAMES IT SEES 06080 ;IN THE PROGRAM BUFFER PRGBUF. THE PROGRAM NAMES ARE CONVERTED 06090 ;TO RADIX 50 REPRESENTATION, AND A CALL TO PUTPRG STORES THE 06100 ;PROGRAM NAME FOR LATER REFERENCE BY THE VARIOUS FUDGE SUBROUTINES 06110 ;------------------------------------------------------------------ 06120 ;RADIX50 - SIXBIT CODE CONVERSION TABLE 06140 ;CHARACTER SIXBIT RADIX50 06160 ;0-9 20-31 01-12 06170 ;A-Z 41-72 13-44 06180 ;BLANK 00 00 06190 ;PERIOD 16 45 06200 ;$ 04 46 06210 ;------------------------------------------------------------------- 06220 ;THE SYMBOL IS ASSUMED TO LEFT-JUSTIFIED UPON ENTERING, AND 06230 ;IS RIGHT-JUSTIFIED BEFORE CONVERSION TO RADIX 50. 06250 ;FLAG SETTINGS: THE PROGRAM BIT PROGB IS SET TO 1, AND THE FILE 06260 ;BIT FILEB IS SET TO 0. 000470' 660340 000100 06270 COMMAP: TRO F, PROGB ;SET PROGRAM BIT 000471' 606340 000001 06280 TRNN F, DESTB ;IS THIS THE OUTPUT DEVICE? 000472' 254000 002007' 06290 JRST ERROR1 ;YES, SYNTAX ERROR 000473' 200300 005117' 06300 MOVE E, SYMPTR ;SET UP A BYTE POINTER TO S 000474' 201100 000006 06310 MOVEI B, 6 ;SET COUNTER TO SIX 000475' 201200 000000 06320 MOVEI C, 0 000476' 322600 000503' 06330 JUMPE S, COMMA1 ;NULL SYMBOL? 000477' 602600 000077 06340 COMMA3: TRNE S, 77 ;IS SYMBOL RIGHT-JUSTIFIED YET? 000500' 254000 000503' 06350 JRST COMMA1 ;YES, GO CONVERT TO RADIX 50 000501' 241600 777772 06360 ROT S, -6 ;NO, SHIFT IT ONE PLACE RIGHT 000502' 254000 000477' 06370 JRST COMMA3 ;CHECK AGAIN 000503' 221200 000050 06380 COMMA1: IMULI C, 50 ;CONVERT TO RADIX50 000504' 134040 000006 06390 ILDB A, E ;PICK UP NEXT CHARACTER IN S 000505' 322040 000516' 06400 JUMPE A, COMMA4 ;A BLANK IS A BLANK IS A BLANK! 000506' 306040 000004 06410 CAIN A, 4 ;IS IT A <$>? 000507' 271040 000070 06420 ADDI A, 70 ;YES, COMPENSATE FOR SUBTRACTION 000510' 306040 000016 06430 CAIN A, 16 ;IS IT A <.>? 000511' 271040 000055 06440 ADDI A, 55 ;YES, COMPENSATE FOR SUBTRACTION 000512' 303040 000031 06450 CAILE A, 31 ;TRANSLATE TO RADIX 50 CODE 000513' 275040 000007 06460 SUBI A, 7 ;LETTER - SUBTRACT 26 000514' 275040 000017 06470 SUBI A, 17 ;NUMBER - SUBTRACT 17 000515' 270200 000001 06480 ADD C, A ;COMBINE WITH PARTIAL WORD 000516' 367100 000503' 06490 COMMA4: SOJG B, COMMA1 ;LOOP FOR SIX CHARACTERS 000517' 200600 000004 06500 MOVE S, C ;PUT SYMBOL BACK IN S 000520' 254000 001144' 06510 JRST PUTPRG ;STORE IT AND EXIT FUDGE2 V.011 PAGE 20 THE ALTMODE PROCESSOR 06540 SUBTTL THE ALTMODE PROCESSOR 06550 ;THE ALTMODE SUBROUTINE IS CALLED BY A DISPATCH FROM THE 06560 ;GETCHR ROUTINE WHEN A $ IS SEEN IN THE COMMAND STRING. IT SIGNALS 06570 ;THE END OF THE COMMAND STRING. A CHECK IS MADE ON THE SYNTAX 06580 ;OF THE COMMAND STRING, TO SEE IF AN OUTPUT DEVICE WAS SPEC- 06590 ;IFIED, AND TO SEE IF A COMMAND WAS GIVEN. THE LIST 06600 ;STRUCTURE FOR THE FILE NAMES AND PROGRAM NAMES IS TERMINATED 06610 ;BY TWO CALLS TO SEMICP, THE LAST OF WHICH HAS A FILE NAME OF 0. 06620 ;THE POINTERS AT THE TOP OF THE FILBUF,PRGBUF AND DEVBUF BUFFERS 06630 ;ARE RESET FOR LATER USER BY THE VARIOUS SUBROUTINES. 000521' 606340 004000 06650 ALTMOD: TRNN F,INFOB ; IS THERE A COMMAND? 000522' 254000 000000' 06660 JRST FUDGE2 ; NO, RESTART 000523' 260500 002243' 06670 PUSHJ P,CRLF ; ACKNOWLEDGE WITH A CR LF 000524' 660340 040000 06680 TRO F,CRLFTY ;INDICATE CR,LF TYPED 000525' 260500 000407' 06690 PUSHJ P, SEMICP ;STORE THIS FILE NAME 000526' 201600 000000 06700 MOVEI S, 0 ;MAKE A NULL FILE NAME 000527' 260500 000416' 06710 PUSHJ P, SEMICA ;TERMINATE THE LIST STRUCTURE 000530' 200040 005124' 06720 MOVE A, FILXWD ;SET UP A BLT POINTER TO FIX 000531' 251040 002527' 06730 BLT A, FILBUF+3 ;THE MASTER FILE PART,1ST WORD OF 000532' 402000 002530' 06740 SETZM FILBUF+4 ;FILBUF WAS JUNK,NOW 4TH WORD=0 000533' 201040 002531' 06750 MOVEI A, FILBUF+5 ;RESET POINTER TO TRANS. FILES 000534' 202040 002524' 06760 MOVEM A, FILBUF ;... 000535' 201040 003125' 06770 MOVEI A,PPNBUF+1 ;RESET PPNBUF 000536' 202040 003124' 06780 MOVEM A,PPNBUF ;AS IT WAS AT START 000537' 322640 002007' 06790 JUMPE DIS, ERROR1 ;NO COMMAND SEEN? 000540' 606340 000001 06800 TRNN F, DESTB ;NO OUTPUT FILE MENTIONED? 000541' 254000 002007' 06810 JRST ERROR1 ;SYNTAX ERROR 000542' 332000 005077' 06820 SKIPE MATCH ;LEFT < EQU RIGHT > ?***VJC 000543' 254000 002007' 06830 JRST ERROR1 ;SYNTAX ERROR ***VJC 000544' 602340 000040 06840 TRNE F, TTYCB ;CHANGE OUTPUT IF ON TTY 000545' 660340 000020 06850 TRO F, TTYOB ;... 06860 ;AND FALL INTO INBUF0 FUDGE2 V.011 PAGE 21 THE ALTMODE PROCESSOR 06900 ;SEE HOW MANY 204(8) WORD BLOCKS FIT IN JOBREL-JOBFF. 06910 ;DIVIDE THIS NUMBER BY THE NUMBER OF DEVICES 06920 ;IN DEVBUF TABLE. THIS GIVES THE NO. OF BLOCKS 06930 ;THAT CAN BE ASSIGNED TO EACH DEVICE, IF ZERO, 06940 ;NEED MORE CORE. THE REMAINDER OF THE DIVISION 06950 ;INDICATES EXTRA BLOCKS THAT MAY BE 06960 ;ALLOCATED TO OUTPUT OR INPUT DEVICES 000546' 550040 000000* 06980 INBUF0: HRRZ A, JOBREL ;GET TOP OF JOB AREA 000547' 274040 000000* 06990 SUB A,JOBFF ;BUFFER AREA AVAILABLE 000550' 231040 000204 07000 IDIVI A, 204 ;NUMBER OF DECTAPE BLOCKS 000551' 230040 005103' 07010 IDIV A,NUMDEV ;DIVIDED BY NUMBER OF DEVICES 000552' 322040 000573' 07020 JUMPE A,INBUFG ;NOT ENOUGH CORE 000553' 201300 000002 07030 MOVEI E,2 ;START INBUFS ON DEVICE #2 000554' 602340 000040 07040 TRNE F, TTYCB ;IS OUTPUT ON TTY? 000555' 254000 000566' 07050 JRST INBUF1 ;NO, DO AN OUTBUF 000556' 200200 000001 07060 INBUF2: MOVE C, A ;PICK UP NUMBER OF BLOCKS 000557' 361100 000561' 07070 SOJL A+1,.+2 ;ANY EXTRA BLOCKS? (REMAINDER) 000560' 340200 000000 07080 AOJ C, ;YES, USE THEM 000561' 137300 005144' 07090 DPB E, [POINT 4, INBUF3,12] 000562' 256000 002464' 07100 XCT INBUF3 ;PERFORM THE INBUF 000563' 315300 000005 07110 CAMGE E, D ;MORE DEVICES TO TAKE CARE OF? 000564' 344300 000556' 07120 AOJA E, INBUF2 ;YES, PROCESS THEM 000565' 254015 000000 07130 JRST (DIS) ;NO, GO TO APPROPRIATE SUBROUTINE 000566' 200200 000001 07160 INBUF1: MOVE C, A ;PICK UP NUMBER OF BLOCKS 000567' 361100 000571' 07170 SOJL A+1,.+2 ;ANY EXTRA BLOCKS? 000570' 340200 000000 07180 AOJ C, ;YES, GIVE ONE TO OUTPUT 000571' 065044 000000 07190 INBUF4: OUTBUF 1,(C) ;OUTBUF ON DEVICE #1 000572' 254000 000556' 07200 JRST INBUF2 ;GO DO SOME INBUFS 07210 ;ASK FOR MORE CORE 000573' 550040 000546* 07230 INBUFG: HRRZ A,JOBREL ;GET ANOTHER K OF CORE 000574' 271040 002000 07240 ADDI A,2000 000575' 000040 000000 07250 CORE A, 000576' 254000 002170' 07260 JRST ERR22 ;NOT AVAILABLE 000577' 254000 000546' 07270 JRST INBUF0 ;TRY TO SET UP BUFFERS FUDGE2 V.011 PAGE 22 FUDGE2 COMMAND PROCESSORS 07290 SUBTTL FUDGE2 COMMAND PROCESSORS 07310 ;LIST PROCESSOR 07320 ;THIS ROUTINE PROCESSES THE L COMMAND IN FUDGE2. BINARY 07330 ;PROGRAMS ARE READ, AND THEIR NAMES OUTPUT, UNTIL AN END 07340 ;OF FILE IS REACHED. 000600' 606340 000020 07360 LIST: TRNN F,TTYOB ;OUTPUT TO TTY? 000601' 254000 000610' 07370 JRST LIST1 ;MODE MUST BE ASCII 000602' 062040 000003 07380 GETSTS 1,T ;GET STATUS 000603' 626140 000014 07390 TRZN T,14 ;BINARY MODE SET? 000604' 254000 000610' 07400 JRST LIST1 ;NO, MUST BE ASCII 000605' 060043 000000 07410 SETSTS 1,(T) ;CHANGE MODE TO ASCII 000606' 205140 000700 07420 MOVSI T,700 ;SET UP NEW BYTE POINTER 000607' 202140 004606' 07430 MOVEM T,OBUF+4 ;SO WORD COUNT WILL BE CORRECT 000610' 260500 000772' 07440 LIST1: PUSHJ P, MSTGET ;GET THE MASTER DEVICE 000611' 254000 002024' 07450 JRST ERROR6 ;NOT ENOUGH ARGUMENTS 000612' 476000 005116' 07460 SETOM NOWARN ;DON'T GIVE WARNING MESSAGE IF INDEX SEEN 000613' 260500 001156' 07470 LIST2: PUSHJ P, READ ;READ A PROGRAM NAME 000614' 254000 002257' 07480 JRST EXIT ;ALL DONE 000615' 200100 000001 07490 MOVE B, A ;GET THE PROGRAM NAME IN B 000616' 260500 002220' 07500 PUSHJ P, PTYPO ;TYPE IT OUT 000617' 260500 002243' 07510 PUSHJ P, CRLF ;TYPE A CRLF 000620' 254000 000613' 07520 JRST LIST2 ;RETURN FOR MORE PROGRAM NAMES 07550 ;REPLACE PROCESSOR 07560 ;THIS ROUTINE PROCESSES THE R COMMAND IN FUDGE2. THE TOTAL 07570 ;COMMAND STRING IS BROKEN INTO A LIST OF PROGRAMS FOR THE MASTER 07580 ;DEVICE, AND A LIST OF PROGRAMS FOR THE TRANSACTION DEVICES. 07590 ;THE ROUTINE READS THE MASTER FILE UNTIL ONE OF THE DESIRED 07600 ;REPLACEMENT PROGRAMS IS REACHED, THEN SWITCHES TO THE 07610 ;TRANSACTION DEVICE TO FIND THE PROGRAM WHICH IS TO REPLACE THE 07620 ;PROGRAM IN THE MASTER FILE. AFTER THE REPLACEMENT HAS BEEN 07630 ;EFFECTED, RESET IS CALLED TO RESTORE THE MASTER DEVICE TO ITS 07640 ;OLD POSITION. 000621' 260500 000772' 07660 REPLCE: PUSHJ P, MSTGET ;GET A PROGRAM FROM MASTER DEVICE 000622' 254000 000656' 07670 JRST IPROC7 ;NO MORE, COPY REST OF MASTER 000623' 260500 000743' 07680 PUSHJ P, COPYTO ;COPY UP TO THE PROGRAM NAME 000624' 260500 000777' 07690 PUSHJ P, TRNGET ;GET A PROGRAM FROM TRANSACTION 000625' 254000 002022' 07700 JRST ERROR5 ;USER DID NOT SUPPLY ENOUGH 000626' 260500 000751' 07710 PUSHJ P, FINDCP ;FIND THE PROGRAM AND COPY IT 000627' 306240 000002 07720 CAIN D, 2 ;HAS THE MASTER DEVICE BEEN MOVED? 000630' 260500 001002' 07730 PUSHJ P, RESET ;YES, RESET IT 000631' 254000 000621' 07740 JRST REPLCE ;LOOK FOR MORE REPLACEMENTS FUDGE2 V.011 PAGE 23 INSERT PROCESSOR 07760 SUBTTL INSERT PROCESSOR 07770 ;THIS SUBROUTINE PROCESSES THE I COMMAND IN FUDGE. IT READS AND 07780 ;WRITES PROGRAMS FROM THE MASTER FILE UNTIL IT FINDS THE 07790 ;PROGRAM NAME CURRENTLY POINTED TO, AT WHICH TIME IT STARTS READING 07800 ;FROM THE TRANSACTION DEVICE, MAKING AN INSERTION AT THE 07810 ;PROPER PLACE. 000632' 260500 000772' 07830 INSERT: PUSHJ P, MSTGET ;GET A PROGRAM FROM MASTER FILE 000633' 254000 000656' 07840 JRST IPROC7 ;NO MORE, COPY REST OF MASTER 000634' 260500 000743' 07850 PUSHJ P, COPYTO ;COPY UP TO A PROGRAM NAME 000635' 202200 002517' 07860 MOVEM C, SAVEAC ;SAVE SPECIAL ACCUMULATOR 000636' 200240 005145' 07870 MOVE D, [XWD ENTBLK,SVEBLK] 000637' 251244 000506 07880 BLT D, X+1(C) ;MOVE ENTRY BLOCK INTO SAFE PLACE 000640' 260500 000777' 07890 PUSHJ P, TRNGET ;GET NEXT TRANSACTION FILE 000641' 254000 002022' 07900 JRST ERROR5 ;NOT ENOUGH TRANSACTION FILES 000642' 260500 000751' 07910 PUSHJ P, FINDCP ;FIND TRANSACTION FILE AND COPY 000643' 302240 000002 07920 CAIE D, 2 ;HAS MASTER FILE BEEN JIGGLED? 000644' 254000 000647' 07930 JRST FIXUP ;NO, RESTORE THE ENTRY BLOCK 000645' 260500 001002' 07940 PUSHJ P, RESET ;YES, RESET IT 000646' 254000 000654' 07950 JRST INSER1 ;WRITE OUTGO BACK FOR MORE INSERTIONS 000647' 200200 002517' 07970 FIXUP: MOVE C, SAVEAC ;RESTORE SPECIAL AC 000650' 204240 005145' 07980 MOVS D, [XWD ENTBLK,SVEBLK] 000651' 251244 000000 07990 BLT D, (C) ;RESTORE ENTRY BLOCK 000652' 201240 000002 08000 MOVEI D, 2 ;SET UP CHANNEL AC 000653' 201640 000006 08010 MOVEI DIS, 6 ;SET UP BUFFER HEADER INDEX 000654' 260500 001305' 08020 INSER1: PUSHJ P, WRITE ;WRITE OUT THE CURRENT FILE 000655' 254000 000632' 08030 JRST INSERT ;GO BACK FOR MORE INSERTIONS 000656' 260500 000737' 08050 IPROC7: PUSHJ P, COPY ;COPY REST OF MASTER FILE 000657' 254000 002257' 08060 JRST EXIT ;EXIT FUDGE2 V.011 PAGE 24 EXTRACT PROCESSOR 08080 SUBTTL EXTRACT PROCESSOR 08090 ;THIS ROUTINE PROCESSES THE E COMMAND IN FUDGE. RATHER THAN 08100 ;ONE MASTER AND SEVERAL TRANSACTION FILES, ALL FILES ARE 08110 ;TREATED THE SAME. AFTER A CALL TO EITHER MSTGET OR TRNGET 08120 ;PROGRAMS ARE SEARCHED FOR AND WRITTEN ON THE OUTPUT DEVICE. 000660' 476000 005116' 08140 EXTRCT: SETOM NOWARN ;NO WARNING MESSAGE 000661' 260500 000772' 08150 PUSHJ P, MSTGET ;GET A PROGRAM FROM MASTER DEVICE 000662' 254000 000670' 08160 JRST EPROC1 ;ALL DONE WITH MASTER DEVICE 000663' 326540 000666' 08170 JUMPN R,.+3 ;ANY PROGRAMS THIS FILE? **VJC 000664' 260500 000737' 08180 PUSHJ P,COPY ;NO, COPY ENTIRE FILE ***VJC 000665' 254000 000670' 08190 JRST EPROC1 ; ***VJC 000666' 260500 000751' 08200 PUSHJ P, FINDCP ;FIND THE PROGRAM AND COPY IT 000667' 254000 000660' 08210 JRST EXTRCT ;RETURN FOR MORE MASTER PROGRAMS 000670' 201040 002531' 08220 EPROC1: MOVEI A, FILBUF+5 ;GET PROGRAM FROM TRANS BUFFER 000671' 202040 002524' 08230 MOVEM A, FILBUF ;INITIALIZE POINTER FIRST 000672' 260500 001031' 08240 EPROC2: PUSHJ P, GETDEV ;... 000673' 254000 002257' 08250 JRST EXIT ;ALL DONE 000674' 326540 000677' 08260 JUMPN R,.+3 ;ANY PROGRAMS THIS FILE? ***VJC 000675' 260500 000737' 08270 PUSHJ P,COPY ;NO, COPY ENTIRE FILE ***VJC 000676' 254000 000672' 08280 JRST EPROC2 ; ***VJC 000677' 260500 000751' 08290 PUSHJ P, FINDCP ;FIND THE PROGRAM AND COPY IT 000700' 254000 000672' 08300 JRST EPROC2 ;RETURN FOR MORE TRANS FILES FUDGE2 V.011 PAGE 25 DELETE PROCESSOR 08320 SUBTTL DELETE PROCESSOR 08330 ;THIS ROUTINE PROCESSES THE D COMMAND IN FUDGE2. ONLY ONE 08340 ;INPUT FILE WILL BE READ, AND THE PROGRAM NAMES ASSOCIATED 08350 ;WITH ITS LIST WILL BE DELETED. 000701' 260500 000772' 08370 DELETE: PUSHJ P, MSTGET ;GET A PROGRAM TO BE DELETED 000702' 254000 000656' 08380 JRST IPROC7 ;FINISH OFF THE MASTER FILE 000703' 260500 001156' 08390 DPROC1: PUSHJ P, READ ;READ A PROGRAM 000704' 254000 002026' 08400 JRST ERROR7 ;EOF - CANT FIND IT 000705' 316540 000001 08410 CAMN R, A ;CORRECT PROGRAM? 000706' 254000 000701' 08420 JRST DELETE ;YES, GET THE NEXT ONE 000707' 260500 001305' 08430 PUSHJ P, WRITE ;NO, WRITE THIS ONE OUT 000710' 254000 000703' 08440 JRST DPROC1 ;TRY AGAIN 08460 ;APPEND PROCESSOR 08470 ;THIS ROUTINE HANDLES THE A COMMAND IN FUDGE2. IT WILL COPY 08480 ;THE ENTIRE MASTER FILE, THEN START OBTAINING TRANSACTION 08490 ;DEVICES WITH CALLS TO TRNGET, APPENDING ONE OR MORE 08500 ;PROGRAMS FROM EACH FILE. 000711' 260500 000772' 08520 APPEND: PUSHJ P, MSTGET ;GET A PROGRAM FROM MASTER FILE 000712' 254000 002024' 08530 JRST ERROR6 ;NOT ENOUGH ARGUMENTS 000713' 260500 000737' 08540 PUSHJ P, COPY ;COPY ENTIRE FILE 000714' 201040 002531' 08550 MOVEI A, FILBUF+5 ;INITIALIZE POINTER FOR TRANS 000715' 202040 002524' 08560 MOVEM A, FILBUF ;... 000716' 260500 001031' 08570 APROC3: PUSHJ P, GETDEV ;GET A PROGRAM NAME 000717' 254000 002257' 08580 JRST EXIT ;ALL DONE 000720' 260500 000751' 08590 PUSHJ P, FINDCP ;FIND THE PROGRAM AND COPY IT 000721' 254000 000716' 08600 JRST APROC3 ;GET NEXT APPENDATION FUDGE2 V.011 PAGE 26 DELETE PROCESSOR 08630 ;THIS ROUTINE PROCESSES THE X COMMAND (INDEX LIBRARY) 08640 ;AND FALLS INTO DELETE LOCAL SYMBOLS CODE. 08650 ;IF NOT DESIRED SKIP TO DELCPY+1 000722' 200040 003325' 08670 INDEX: MOVE A,DEVBUF+1 ;GET OUTPUT DEVICE 000723' 000040 000000 08680 DEVCHR A, ;GET ITS CHARACTERISTICS 000724' 607040 200100 08690 TLNN A,DSKBIT!DTABIT ;ONLY ALLOW DSK AND DTA AS LIBRARY DEVICES 000725' 254000 002172' 08700 JRST ERR23 ;GIVE ERROR MESSAGE 000726' 476000 005116' 08710 SETOM NOWARN ;NO WARNING MESSAGE IF /X 000727' 660340 200000 08720 TRO F,XFLG ;SET INDEX FLAG 08730 ; TROA F,XFLG ;SET /X BUT NOT /C 08750 ;DELETE LOCAL SYMBOLS AND COPY PROCESSOR 08760 ;THIS ROUTINE PROCESSES THE C COMMAND 08770 ;ONLY THE MASTER FILE IS HANDLED 000730' 660340 000200 08790 DELCPY: TRO F, NOLOCB ;SET FLAG TO DELETE LOCAL SYMBOLS 000731' 260500 000772' 08800 PUSHJ P, MSTGET ;GET A PROGRAM FROM MASTER FILE 000732' 254000 002024' 08810 JRST ERROR6 ;NOT ENOUGH ARGUMENTS 000733' 260500 000737' 08820 PUSHJ P, COPY ;COPY ENTIRE FILE 000734' 606340 200000 08830 TRNN F,XFLG ;INDEX FLAG ON? 000735' 254000 002257' 08840 JRST EXIT ;ALL DONE 000736' 254000 001571' 08850 JRST INDEX3 ;YES DO PASS 2 FUDGE2 V.011 PAGE 27 FUDGE2 IO SUBROUTINES 08870 SUBTTL FUDGE2 IO SUBROUTINES 08890 ;ROUTINES TO COPY FILES, COPY UP TO A GIVEN PROGRAM IN A FILE 08900 ;AND TO FIND A GIVEN PROGRAM IN A FILE AND COPY IT. 08920 ;THE COPY ROUTINE WILL COPY BINARY PROGRAMS FROM WHEREVER THE 08930 ;INPUT DEVICE HAPPENS TO BE WHEN IT IS CALLED, UP TO THE 08940 ;END OF FILE. SINCE COPY IS CALLED WITH A PUSHJ, THE END-OF- 08950 ;FILE EXIT IN INGET WILL EXIT TO THE PLACE THAT CALLED COPY. 000737' 260500 001156' 08970 COPY: PUSHJ P, READ ;READ A PROGRAM 000740' 263500 000000 08980 POPJ P, ;EXIT WHEN ALL THROUGH FILE 000741' 260500 001305' 08990 PUSHJ P, WRITE ;WRITE OUT THE PROGRAM 000742' 254000 000737' 09000 JRST COPY ;RETURN FOR MORE PROGRAMS 09020 ;THE COPYTO ROUTINE WILL READ AND WRITE PROGRAMS FROM THE 09030 ;INPUT DEVICE UNTIL THE PROGRAM WHOSE NAME IS IN ACCUMULATOR 09040 ;R IS FOUND, AT WHICH TIME IT EXITS 000743' 260500 001156' 09060 COPYTO: PUSHJ P, READ ;READ A PROGRAM 000744' 254000 002026' 09070 JRST ERROR7 ;EOF - CANT FIND IT 000745' 316540 000001 09080 CAMN R, A ;IS IT THE CORRECT PROGRAM? 000746' 263500 000000 09090 POPJ P, ;YES, EXIT 000747' 260500 001305' 09100 PUSHJ P, WRITE ;NO, WRITE IT OUT 000750' 254000 000743' 09110 JRST COPYTO ;READ SOME MORE PROGRAMS FUDGE2 V.011 PAGE 28 FUDGE2 IO SUBROUTINES 09140 ;THE FINDCP ROUTINE WILL SEARCH THE INPUT FILE FOR A PROGRAM 09150 ;WHOSE NAME IS IN ACCUMULATOR R, AND HAVING FOUND IT, WILL 09160 ;WRITE IT OUT. IF THE CONTENTS OF AC R ARE ZERO, THE ENTIRE 09170 ;FILE IS COPIED. 000751' 322540 000737' 09190 FINDCP: JUMPE R, COPY ;COPY ENTIRE FILE? 000752' 260500 001156' 09200 FIND1: PUSHJ P, READ ;READ A PROGRAM FROM INPUT FILE 000753' 254000 000757' 09210 JRST FIND2 ;EOF, TRY REWINDING AND TRYING AGAIN 000754' 312540 000001 09220 CAME R, A ;IS THIS THE RIGHT ONE? 000755' 254000 000752' 09230 JRST FIND1 ;NO, TRY AGAIN 000756' 254000 001305' 09240 JRST WRITE ;YES, WRITE IT OUT AND EXIT 000757' 322040 002026' 09260 FIND2: JUMPE A,ERROR7 ;V3 IF EOF OUTPUT ERROR MESSAGE 000760' 260500 001024' 09270 PUSHJ P, BACKSP ;BACKSPACE THE MAG TAPE 000761' 550040 002524' 09280 HRRZ A, FILBUF ;PICK UP THE FILE POINTER 000762' 502041 000003 09290 HLLM A, 3(A) ;CLEAR THE LOOKUP FLAG FOR DECTAPE 000763' 260500 001031' 09300 PUSHJ P, GETDEV ;SET UP THE PROGRAM AGAIN 000764' 254000 002013' 09310 JRST ERROR3 ;IMPOSSIBLE ERROR RETURN 000765' 260500 001156' 09320 FIND3: PUSHJ P, READ ;READ A PROGRAM FROM INPUT FILE 000766' 254000 002026' 09330 JRST ERROR7 ;EOF - REALLY CANT FIND IT 000767' 312540 000001 09340 CAME R, A ;IS THIS THE RIGHT ONE? 000770' 254000 000765' 09350 JRST FIND3 ;NO, TRY AGAIN 000771' 254000 001305' 09360 JRST WRITE ;YES, WRITE IT OUT AND EXIT FUDGE2 V.011 PAGE 29 FUDGE2 IO SUBROUTINES 09380 ;ROUTINE MSTGET RETRIEVES A PROGRAM NAME FROM THE MASTER 09390 ;DEVICE SPECIFICATIONS. IT SAVES THE POINTER IN FILBUF, 09400 ;CHANGES IT TO POINT TO ITS OWN BLOCK, THEN CALLS GETDEV 000772' 200040 002524' 09420 MSTGET: MOVE A, FILBUF ;GET THE POINTER TO CURRENT FILE 000773' 202040 002515' 09430 MOVEM A, FILSAV ;SAVE THE CURRENT POINTER 000774' 201040 002525' 09440 MOVEI A, FILBUF+1 ;CHANGE IT TO POINT TO MASTER 000775' 202040 002524' 09450 MOVEM A, FILBUF ;... 000776' 254000 001031' 09460 JRST GETDEV ;CALL COMMON ROUTINE 09490 ;ROUTINE TRNGET RETRIEVES A PROGRAM NAME FROM THE TRANSACTION 09500 ;FILES. IT RESETS THE POINTER THAT MSTGET WIPED OUT, AND CALLS 09510 ;THE COMMON PROGRAM RETRIEVAL PROGRAM GETDEV. 000777' 200040 002515' 09530 TRNGET: MOVE A, FILSAV ;GET SAVED POINTER 001000' 202040 002524' 09540 MOVEM A, FILBUF ;RESTORE IT TO ITS PLACE 001001' 254000 001031' 09550 JRST GETDEV ;CALL COMMON ROUTINE 09570 ;ROUTINE RESET RESTORES THE STATE OF THE MASTER DEVICE TO 09580 ;WHAT IT WAS JUST AFTER THE LAST TIME MSTGET WAS CALLED. IT 09590 ;SETS THE POINTER OF THE MASTER FILE BACK TO THE PREVIOUS 09600 ;PROGRAM, CALLS MSTGET, AND FINDS THE PROGRAM AGAIN 001002' 201040 002531' 09620 RESET: MOVEI A,FILBUF+5 ;START OF TRANSACTION LIST ***DMN 001003' 502040 002527' 09630 HLLM A, FILBUF+3 ;NOW CLEAR LOOKUP FLAG ON MASTER 001004' 370000 002527' 09640 SOS FILBUF+3 ;MOVE POINTER BACK ONE PROGRAM 001005' 336001 000000 09650 RESET2: SKIPN (A) ;ANY TRANSACTION FILES ? ***DMN 001006' 254000 001012' 09660 JRST RESET3 ;NO-ALL DONE ***DMN 001007' 502041 000002 09670 HLLM A,2(A) ;CLEAR LOOKUP FLAG ON IT ***DMN 001010' 271040 000003 09680 ADDI A,3 ;NEXT FILE ***DMN 001011' 254000 001005' 09690 JRST RESET2 ;GO BACK FOR MORE ***DMN 001012' 260500 000772' 09700 RESET3: PUSHJ P, MSTGET ;SET UP THE MASTER DEVICE 001013' 254000 002013' 09710 JRST ERROR3 ;FUDGE ERROR-NO MASTER! 001014' 260500 001024' 09720 PUSHJ P, BACKSP ;BACKSPACE IN CASE ITS A MAG TAPE 001015' 200040 002515' 09730 MOVE A, FILSAV ;DIDDLE THE POINTERS, BECAUSE MSTGET 001016' 202040 002524' 09740 MOVEM A, FILBUF ;WILL BE CALLED AGAIN IMMEDIATELY 001017' 260500 001156' 09750 RESET1: PUSHJ P, READ ;READ A PROGRAM FROM MASTER FILE 001020' 254000 002013' 09760 JRST ERROR3 ;FUDGE ERROR-CANT FIND PROGRAM 001021' 312540 000001 09770 CAME R, A ;IS IT THE RIGHT PROGRAM NAME? 001022' 254000 001017' 09780 JRST RESET1 ;NO, LOOK AGAIN 001023' 263500 000000 09790 POPJ P, ;YES, EXIT 001024' 137240 005146' 09800 BACKSP: DPB D, [POINT 4, BACK0,12] 001025' 137240 005147' 09810 DPB D, [POINT 4, BACK1, 12] 001026' 137240 005150' 09820 DPB D, [POINT 4, BACK2,12] 001027' 137240 005151' 09830 DPB D, [POINT 4,BACK3,12] 001030' 254000 002465' 09840 JRST BACK0 ;GO TO POSITION MAGTAPE FUDGE2 V.011 PAGE 30 COMMON PROGRAM RETRIEVAL PROGRAM GETDEV. 09860 SUBTTL COMMON PROGRAM RETRIEVAL PROGRAM GETDEV. 09870 ;THIS PROGRAM USES VARIOUS POINTERS AND BITS OF INFORMATION 09880 ;IN FILBUF AND PRG BUF TO RETURN TO THE USER A RADIX 50 09890 ;PROGRAM NAME AS SEEN IN THE COMMAND STRING. THE STRUCTURE 09900 ;OF INFORMATION IN THESE TWO BUFFERS IS AS FOLLOWS: 09920 ;FILBUF IS A LIST OF 3-WORD BLOCKS OF DATA ABOUT EACH FILE. 09930 ;THE FIRST WORD IN FILBUF IS A POINTER WHICH POINTS TO THE 09940 ;FIRST WORD OF THE BLOCK CURRENTLY BEING WORKED ON BY 09950 ;THE VARIOUS SUBROUTINES OF FUDGE. WHEN THE COMMAND STRING 09960 ;IS BEING PROCESSED AND INFORMATION IS BEING STORED IN FILBUF, 09970 ;THIS POINTER IS IN THE FORM OF AN AOBJN WORD SO THAT A CHECK 09980 ;CAN BE MADE FOR BUFFER OVERFLOW. THE CONTENTS OF THE 3-WORD 09990 ;FILE BLOCK IS AS FOLLOWS: 10000 ; 1ST WORD - SIXBIT FILE NAME, OR ZERO IF THIS IS THE 10010 ; END OF THE LIST . 10020 ; 2ND WORD - LEFT HALF CONTAINS A SIXBIT FILE NAME EXTENSION 10030 ; RIGHT HALF CONTAINS THE CHANNEL NUMBER FOR 10040 ; THIS FILE. 10050 ; 3RD WORD - LEFT HALF IS ZERO IS A LOOKUP HAS NOT BEEN 10060 ; DONE ON THIS FILE NAME, AND -1 IF IT HAS. A 10070 ; LOOKUP CAN THUS BE FORECED BY ZEROING OUT THE 10080 ; LEFT HALF OF THE WORD. 10090 ; RIGHT HALF CONTAINS A POINTER TO THE LAST 10100 ; PROGRAM NAME IN PRGBUF THAT WAS REFERENCED. THE 10110 ; RIGHT HALF IS ZERO IF THERE ARE NO PROGRAM 10120 ; NAMES ASSOCIATED WITH THE FILE. 10140 ;PRGBUF IS A LIST OF PROGRAM NAMES USED BY THE FILES IN FILBUF. 10150 ;THE FIRST WORD OF PRGBUF IS A POINTER WORD WHOSE USE IS THE 10160 ;SAME AS THE FIRST WORD OF FILBUF.THE ENTRIES IN PRGBUF CONSIST 10170 ;OF A LIST OF RADIX50 SYMBOLS, ONE TO A WORD, TERMINATED BY 10180 ;A ZERO WORD. 10200 ;FUDGE2 WORKS WITH FILBUF AND PRGBUF IN TWO DISTINCTLY 10210 ;DIFFERENT WAYS: ONCE WHEN IT IS PROCESSING THE COMMAND STRING 10220 ;AND STORING THE VARIOUS FILE NAMES AND PROGRAM NAMES, AND 10230 ;ONCE WHEN IT IS USING THE INFORMATION IN THE FILES TO PROCESS 10240 ;A FUDGE COMMAND. WHEN A FILE NAME IS SEEN IN THE COMMAND STRING, 10250 ;THE STATUS OF THE PREVIOUS FILE IS CHECKED. IF THE PREVIOUS 10260 ;FILE HAD NO PROGRAM NAMES, THEN ITS POINTER WORD (3RD WORD) IS 10270 ;ZEROED OUT TO INDICATE THE ABSCENCE OF ANY PROGRAMS IN PRGBUF. 10280 ;OTHERWISE, PROCESSING BEGINS ON THE CURRENT FILE: THE FILE 10290 ;NAME, FILE NAME EXTENSION, AND CHANNEL NUMBER ARE STORED. THE 10300 ;CONTENTS OF THE POINTER WORD IN PRGBUF ARE STORED IN THE 10310 ;POINTER WORD OF THE FILE BLOCK 10320 ;ROOM IS LEFT IN FILBUF SO THAT WHEN THE CARRIAGE RETURN IS 10330 ;SEEN, FUDGE2 CAN SHUFFLE THE FIRST FILE BLOCK UP ONE WORD AND 10340 ;INSERT ANOTHER NULL. THE EFFECT OF THIS KLUDGE IS THAT WE NOW 10350 ;HAVE TWO SEPARATE LISTS IN FILBUF, A MASTER LIST, AND A 10360 ;TRANSACTION LIST. FUDGE2 V.011 PAGE 31 COMMON PROGRAM RETRIEVAL PROGRAM GETDEV. 001031' 200100 002524' 10380 GETDEV: MOVE B, FILBUF ;GET POINTER TO FILE BLOCK 001032' 336002 000000 10390 SKIPN (B) ;END OF LIST? (ZERO TERMINATES) 001033' 263500 000000 10400 POPJ P, ;YES, EXIT 001034' 200040 003124' 10410 MOVE A,PPNBUF ;GET POINTER TO PPN'S 001035' 200241 000000 10420 MOVE D,(A) ;GET GLOBAL PPN 001036' 202240 005112' 10430 MOVEM D,DEFPPN ;SAVE AS DEFAULT PPN 001037' 200241 000001 10440 MOVE D,1(A) ;GET TEMP. PPN 001040' 202240 005113' 10450 MOVEM D,PRJPRG ;SAVE AS TEMP. PPN 001041' 271040 000002 10460 ADDI A,2 ;INCREMENT POINTER 001042' 202040 003124' 10470 MOVEM A,PPNBUF ;SAVE NEW POINTER 001043' 550242 000001 10480 HRRZ D, 1(B) ;GET DEVICE NUMBER FOR THIS DEVICE 001044' 331002 000002 10490 SKIPL 2(B) ;HAS A LOOKUUP BEEN DONE? 001045' 254000 001066' 10500 JRST GET3 ;NO, GO DO LOOKUP 001046' 201640 000003 10510 GET0: MOVEI DIS, 3 ;SET UP AC DIS 001047' 220640 000005 10520 IMUL DIS, D ;C(DIS) = 3*C(D) 001050' 550042 000002 10530 HRRZ A, 2(B) ;GET POINTER TO PROGRAM NAMES 001051' 322040 001060' 10540 JUMPE A, GET1 ;NULL PROGRAM LIST (NO POINTER)? 001052' 350042 000002 10550 AOS A, 2(B) ;NO, INCREMENT POINTER BY ONE 001053' 200541 000000 10560 MOVE R, (A) ;GET A PROGRAM NAME 001054' 326540 001063' 10570 JUMPN R, CPOPJ1 ;END OF PROGRAM LIST? 001055' 271100 000003 10580 ADDI B, 3 ;YES, INCREMENT FILBUF POINTER 001056' 202100 002524' 10590 MOVEM B, FILBUF ;SAVE NEW POINTER 001057' 254000 001031' 10600 JRST GETDEV ;TRY NEXT FILE BLOCK 001060' 201540 000000 10620 GET1: MOVEI R, 0 ;NO PROGRAMS, RETURN ZERO 001061' 271100 000003 10630 ADDI B, 3 ;MOVE FILBUF POINTER TO NEXT BLOCK 001062' 202100 002524' 10640 MOVEM B, FILBUF ;SAVE THE POINTER 001063' 354012 000000 10650 CPOPJ1: AOSA (P) ;GOOD RETURN 001064' 262512 000000 10660 POPOUT: POP P,(P) ;POP UP ONE LEVEL 001065' 263500 000000 10670 CPOPJ: POPJ P, ;EXIT FUDGE2 V.011 PAGE 32 COMMON PROGRAM RETRIEVAL PROGRAM GETDEV. 001066' 137240 005152' 10700 GET3: DPB D, [POINT 4,GET3A,12] 001067' 256000 002472' 10710 XCT GET3A ;CLOSE CURRENT FILE BEFORE DOING... 001070' 200042 000000 10720 MOVE A, (B) ;GET FILE NAME OF NEXT FILE 001071' 202040 004572' 10730 MOVEM A, EBLOCK ;SET UP FOR LOOKUP 001072' 510042 000001 10740 HLLZ A, 1(B) ;GET FILE NAME EXTENSION 001073' 202040 004573' 10750 MOVEM A, EBLOCK+1 ;SAVE IT FOR LOOKUP 001074' 563042 000002 10760 HRROS A, 2(B) ;SET FLAG IN LEFT HALF OF 3RD WORD 001075' 137240 005153' 10770 DPB D, [POINT 4,GET4A,12] 001076' 336040 005113' 10780 SKIPN A,PRJPRG ;GET TEMP. PPN 001077' 200040 005112' 10790 MOVE A,DEFPPN ;USE PERMANENT IF NO TEMP. 001100' 202040 004575' 10800 MOVEM A,EBLOCK+3 ;SAVE IT 001101' 202040 004571' 10810 MOVEM A,EBLOCK-1 ;FOR LEVEL D ALSO 001102' 200045 003324' 10820 MOVE A,DEVBUF(D) ;GET DEVICE 001103' 000040 000000 10830 DEVCHR A, ;GET ITS CHARACTERISTICS 001104' 607040 200000 10840 TLNN A,DSKBIT ;IF NOT A DSK 001105' 634140 000003 10850 TDZA T,T ;NO EXTENDED LOOKUP 001106' 200140 005111' 10860 MOVE T,LEVEL ;GET LEVEL 001107' 256000 002473' 10870 GET4: XCT GET4A ;DO A LOOKUP ON NEW FILE 001110' 254000 001113' 10880 JRST .+3 ;NOT FOUND, TRY WITH BLANKS EXT. 001111' 402000 004575' 10890 SETZM EBLOCK+3 ;CLEAR PROJ-PROG 001112' 254000 001121' 10900 JRST DOENTR ;SUCCESSFUL RETURN FROM LOOKUP 001113' 554042 000001 10910 HLRZ A, 1(B) ;GET THE FILE NAME EXTENSION 001114' 302040 624554 10920 CAIE A, 624554 ;IS IT "REL" ? 001115' 254000 002043' 10930 JRST ERROR8 ;NO, DON'T GIVE HIM ANOTHER CHANCE 001116' 502042 000001 10940 HLLM A, 1(B) ;YES, TRY LOOKUP WITH 0 EXTENSION 001117' 402000 004573' 10950 SETZM EBLOCK+1 ;CLEAR EXTENSION IN LOOKUP BLOCK 001120' 254000 001107' 10960 JRST GET4 ;TRY AGAIN 001121' 336000 005111' 10980 DOENTR: SKIPN LEVEL ;IF NOT LEVEL D 001122' 254000 001134' 10990 JRST DOXSWT ;ENTER DONE ALREADY 001123' 204140 005143' 11000 MOVS T,[XWD EBLOCK,SVENTR] 001124' 251140 004573' 11010 BLT T,EBLOCK+1 ;RESTORE EBLOCK 001125' 205140 777000 11020 MOVSI T,777000 ;MASK FOR PROTECTION 001126' 406140 004574' 11030 ANDM T,EBLOCK+2 ;CLEAR DATE AND TIME 001127' 402000 004571' 11040 SETZM EBLOCK-1 ;CLEAR PPN 001130' 200140 005111' 11050 MOVE T,LEVEL 001131' 256000 002463' 11060 XCT SEMIC1 ;DO ENTER 11070 JRST [HRRZ T,EBLOCK+1 ;GET ERROR CODE 11080 CAIN T,17 ;PARTIAL ALLOCATION ONLY? 11090 JRST .+1 ;YES, JUST CONTINUE 001132' 254000 005154' 11100 JRST ERR14] ;ERROR 001133' 402000 005111' 11110 SETZM LEVEL ;NEVER AGAIN 001134' 602340 200000 11120 DOXSWT: TRNE F,XFLG ;INDEX FLAG ON? 001135' 260500 001467' 11130 PUSHJ P,INDEX0 ;YES, SET UP POINTERS AND CORE 001136' 254000 001046' 11140 JRST GET0 ;AND CONTINUE FUDGE2 V.011 PAGE 33 COMMON PROGRAM RETRIEVAL PROGRAM GETDEV. 11170 ;SHORT ROUTINES TO STORE WORDS IN THE FILE BUFFER AND PROGRAM 11180 ;BUFFER 11190 ;ROUTINE PUTFIL STORES THE CONTENTS OF ACCUMULATOR S IN THE 11200 ;NEXT FREE LOCATION IN FILBUF. IT CHECKS FOR OVERFLOW. 001137' 200040 002524' 11220 PUTFIL: MOVE A, FILBUF ;GET POINTER WORD FOR FILBUF 001140' 252040 002011' 11230 AOBJP A, ERROR2 ;INCREMENT, CHECK FOR OVERFLOW 001141' 202040 002524' 11240 MOVEM A, FILBUF ;SAVE NEW POINTER 001142' 202601 000000 11250 MOVEM S, (A) ;SAVE FILE NAME ENTRY 001143' 263500 000000 11260 POPJ P, ;EXIT 11290 ;ROUTINE PUTPRG STORES THE CONENTS OF ACCUMULATOR S IN THE 11300 ;NEXT FREE LOCATION IN PRGBUF. IT CHECKS FOR OVERFLOW. 001144' 200040 002724' 11320 PUTPRG: MOVE A, PRGBUF ;GET POINTER WORD FOR BUFFER 001145' 252040 002011' 11330 AOBJP A, ERROR2 ;INCREMENT, CHECK FOR OVERFLOW 001146' 202040 002724' 11340 MOVEM A, PRGBUF ;SAVE NEW POINTER WORD 001147' 202601 000000 11350 MOVEM S, (A) ;SAVE PROGRAM NAME 001150' 263500 000000 11360 POPJ P, ;EXIT 11380 ;ROUTINE PUTPPN STORE THE TWO PPPN NUMBER IN PPNBUF 001151' 200040 003124' 11400 PUTPPN: MOVE A,PPNBUF ;GET POINTER WORD FOR BUFFER 001152' 252040 002011' 11410 AOBJP A,ERROR2 001153' 202040 003124' 11420 MOVEM A,PPNBUF ;SAVE NEW POINTER WORD 001154' 202601 000000 11430 MOVEM S,(A) ;SAVE PPN 001155' 263500 000000 11440 POPJ P, ;EXIT FUDGE2 V.011 PAGE 34 ROUTINE TO INPUT ONE PROGRAM AT A TIME 11460 SUBTTL ROUTINE TO INPUT ONE PROGRAM AT A TIME 11470 ;THE FIRST WORD THAT THE PROGRAM READS WILL BE A BLOCK HEADER. 11480 ;BLOCKS ARE READ UNTIL AN ENTRY BLOCK IS FOUND, AND THE ENTIRE 11490 ;ENTRY BLOCK IS STORED IN AN INTERNAL BUFFER,SIZE PERMITTING. 11500 ;FOLLOWING THAT, THE NAME BLOCK IS READ, AND THE NAME OF THE 11510 ;PROGRAM IS RETURNED IN ACCUMULATOR A. PROVISION IS MADE FOR 11520 ;BLOCKS OF WORD COUNT ZERO. THE SECTION OF CODING AROUND READ2 11530 ;DELIBERATELY OMITS THIS CHECK IN ORDER TO READ IN THE NEXT 11540 ;BLOCK HEADER WITH A MINIMUM OF INSTRUCTIONS. ORDINARILY, EACH 11550 ;PROGRAM WILL BEGIN WITH AN ENTRY BLOCK, BUT THE ROUTINE WILL 11560 ;ALSO ALLOW THE PROGRAM TO BEGIN WITH A NAME BLOCK IF NO 11570 ;ENTRY BLOCK IS SEEN. 001156' 201200 003334' 11590 READ: MOVEI C, ENTBLK ;SET UP POINTER TO BUFFER 001157' 260500 001647' 11600 READ6: JSR GETIN ;GET A BLOCK HEADER 001160' 554100 000001 11610 HLRZ B, A ;GET THE BLOCK CODE 001161' 306100 000014 11620 CAIN B,14 ;IS IT AN INDEX BLOCK? 001162' 254000 001276' 11630 JRST READX ;YES, GET RID OF IT 001163' 306100 000004 11640 CAIN B, 4 ;IS IT AN ENTRY BLOCK? 001164' 254000 001206' 11650 JRST READ1 ;YES, PROCESS IT 001165' 306100 000006 11660 CAIN B, 6 ;IS IT A NAME BLOCK? 001166' 254000 001266' 11670 JRST READ7 ;YES, PROCESS IT 001167' 306100 000400 11680 CAIN B,400 ;F4 SIGNAL WORD? 001170' 254000 001270' 11690 JRST F4I ;YES, PROCESS F4 BLOCKS 001171' 260500 001337' 11700 PUSHJ P, COUNT ;CALCULATE SIZE OF BLOCK 001172' 322100 001157' 11710 JUMPE B, READ6 ;WORD COUNT OF ZERO? 001173' 311115 004612' 11720 READ6A: CAML B, IBUF+2(DIS) ;DOES BLOCK OVERLAP IO BUFFERS? 001174' 254000 001202' 11730 JRST READ6B ;ADJUST B AND GET ANOTHER BUFFER 001175' 200055 004612' 11740 MOVE A, IBUF+2(DIS) ;NO, DIDDLE BUFFER HEADER COUNT 001176' 274040 000002 11750 SUB A, B ;ELIMINATE BLOCK OF LENGTH C(B) 001177' 202055 004612' 11760 MOVEM A, IBUF+2(DIS) ;PUT NEW WORD COUNT BACK 001200' 272115 004611' 11770 ADDM B, IBUF+1(DIS) ;MOVE BYTE POINTER PAST BLOCK 001201' 254000 001157' 11780 JRST READ6 ;GET NEXT BLOCK 001202' 274115 004612' 11790 READ6B: SUB B, IBUF+2(DIS) ;ACCOUNT FOR REST OF THIS BUFFER 001203' 402015 004612' 11800 SETZM IBUF+2(DIS) ;FORCE ANOTHER INBUF 001204' 260500 001647' 11810 JSR GETIN ;GET ANOTHER BUFFER OF INPUT 001205' 254000 001173' 11820 JRST READ6A ;CHECK AGAIN 11850 ; THIS CODE MODIFIED 3-21-71 BY DCS (STANFORD) TO HANDLE 11860 ; MORE THAN ONE ENTRY BLOCK (FAIL AND SAIL BOTH ISSUE 11870 ; MULTIPLE ENTRY BLOCKS). 000452 11890 SIZZ==SIZE-<<SIZE+21>/22>-4 ;ACCOUNT FOR HDR BLKS, RELOC WRDS, PROGNAME 001206' 402000 003334' 11900 READ1: SETZM ENTBLK ;SAME AS (C) AT PRESENT 001207' 505200 777777 11910 HRLI C,-1 ;AOBJN WILL OVERFLOW FIRST TIME 11930 ; BACK HERE FOR EACH NEW ENTRY BLOCK 001210' 211101 400000 11950 READ2: MOVNI B,400000(A) ;-1 IN LH, 377777-CT IN RH 001211' 553000 000001 11960 HRRZS A 001212' 270040 003334' 11970 ADD A,ENTBLK ;NEW COUNT IF IT FITS 001213' 303040 000452 11980 CAILE A,SIZZ ;TOO MUCH NOW? FUDGE2 V.011 PAGE 34-1 ROUTINE TO INPUT ONE PROGRAM AT A TIME 001214' 664340 002000 11990 TROA F,ERRB ; YES, MARK ENTRY BLOCK TOO BIG 001215' 202040 003334' 12000 MOVEM A,ENTBLK ;NO, UPDATE USED COUNT 12010 ; HERE FOR EACH NEW WORD 001216' 606100 377777 12020 READ23: TRNN B,377777 ;END THIS LOADER BLOCK? 001217' 254000 001233' 12030 JRST READ55 ; YES, CHECK NEXT 001220' 253100 001223' 12040 AOBJN B,NXTWRD ;TIME FOR SOME RELOC BITS? 001221' 260500 001647' 12050 JSR GETIN ;YES, GET THEM AND TOSS THEM 001222' 505100 777756 12060 HRLI B,-22 ;AND RESET COUNT 001223' 260500 001647' 12070 NXTWRD: JSR GETIN ;GET A DATA WORD 12080 ; (ROUTINE COURTESY OF DEC LOADER) 001224' 253200 001230' 12100 AOBJN C,READ22 ;NEED TO INSERT RELOC WORD? 001225' 606340 002000 12110 TRNN F,ERRB ;YES, UNLESS NOT INSERTING 001226' 402004 000000 12120 SETZM (C) ; ALL ENTRY RELOCS ARE 0 001227' 270200 005160' 12130 ADD C,[XWD -22,1] ;LH 0 BEFORE ADD, SET UP NEXT 001230' 606340 002000 12140 READ22: TRNN F,ERRB ;ARE WE INSERTING? 001231' 202044 000000 12150 MOVEM A,(C) ; YES, PUT IT AWAY 001232' 254000 001216' 12160 JRST READ23 ;LOOP 001233' 260500 001647' 12190 READ55: JSR GETIN ;GET NEXT HEADER WORD 001234' 554100 000001 12200 HLRZ B,A ;TYPE 001235' 306100 000004 12210 CAIN B,4 ;ANOTHER ENTRY? 001236' 254000 001210' 12220 JRST READ2 ; YES, STORE IT 12240 ; PROGRAM NAME -- FINISH ENTRY BLOCK OUT 001237' 201100 000004 12250 MOVEI B,4 ;ENTRY BLOCK TYPE 001240' 506100 003334' 12260 HRLM B,ENTBLK ;NOW CORRECT TYPE,,COUNT 001241' 505200 000000 12270 HRLI C,0 ;CLEAR LH COUNT 001242' 344200 001266' 12280 AOJA C,READ7 ;STORE NAME BLOCK HEADER AND CONTINUE 12290 ; END OF DCS PATCH 3-21-71 FUDGE2 V.011 PAGE 35 ROUTINE TO INPUT ONE PROGRAM AT A TIME 001243' 260500 001337' 12310 READ5: PUSHJ P, COUNT ;CALCULATE SIZE OF BLOCK 001244' 322100 001261' 12320 JUMPE B, READ9 ;WORD COUNT OF ZERO? 001245' 260500 001647' 12330 READ3: JSR GETIN ;GET A WORD 001246' 202044 000000 12340 MOVEM A, (C) ;STORE IT 001247' 340200 000000 12350 AOJ C, ;INCREMENT BUFFER POINTER 001250' 367100 001245' 12360 SOJG B, READ3 ;DONE READING YET? 001251' 306440 000002 12370 CAIN G+1, 2 ;IS THERE A COMMON WORD? 001252' 200044 777776 12380 MOVE A, -2(C) ;GET PROGRAM NAME IN A 001253' 322040 001261' 12390 JUMPE A, READ9 ;IGNORE WORD OF ZERO 001254' 200100 000001 12400 MOVE B, A ;GET RID OF EXTRA BLANKS 001255' 231100 000050 12410 READ8: IDIVI B, 50 ;TRY DIVIDING IT BY 50 001256' 326140 001261' 12420 JUMPN B+1, READ9 ;FILTERED OUT ALL THE BLANKS? 001257' 200040 000002 12430 MOVE A, B ;NO, STORE SYMBOL AGAIN 001260' 254000 001255' 12440 JRST READ8 ;TRY ANOTHER DIVISION 001261' 602340 002000 12460 READ9: TRNE F, ERRB ;ERROR CONDITION? 001262' 254000 002064' 12470 JRST ERR10 ;YES 001263' 606340 200000 12480 TRNN F,XFLG ;INDEX FLAG ON? 001264' 254000 001063' 12490 JRST CPOPJ1 ;NO, SKIP EXIT 001265' 254000 001514' 12500 JRST INDEX1 ;YES SAVE ENTRIES 001266' 202044 000000 12520 READ7: MOVEM A, (C) ;STORE NAME BLOCK HEADER 001267' 344200 001243' 12530 AOJA C, READ5 ;GO READ NAME BLOCK 001270' 660340 020000 12550 F4I: TRO F,F4IB ;DONT OUTPUT DURING F4 SEARCH 001271' 261500 000004 12560 PUSH P,C ;SAVE ENTRY BLOCK 001272' 260500 001346' 12570 PUSHJ P,F4 ;PASS F4 BLOCKS 001273' 262500 000004 12580 POP P,C ;RESTORE ENTRY BLOCK 001274' 620340 020000 12590 TRZ F,F4IB ;TURN OFF IGNORE BIT 001275' 254000 001157' 12600 JRST READ6 ;GO PROCESS NEXT PROGRAM 001276' 336000 005116' 12620 READX: SKIPN NOWARN ;DO WE WANT A MESSAGE? 12630 TTCALL 3,[ASCIZ /WARNING NO INDEX ON OUTPUT FILE - CONTINUING 001277' 051140 005161' 12640 /] 001300' 476000 005116' 12650 SETOM NOWARN ;ONCE IS ENOUGH 001301' 402015 004612' 12660 SETZM IBUF+2(DIS) ;FORCE ANOTHER INBUF 001302' 260500 001647' 12670 JSR GETIN ;INPUT THE NEXT BLOCK 001303' 370015 004612' 12680 SOS IBUF+2(DIS) ;WORD COUNT OUT BY ONE 001304' 254000 001160' 12690 JRST READ6+1 ;AND RETURN TO CODE FUDGE2 V.011 PAGE 36 ROUTINE TO OUTPUT ONE PROGRAM AT A TIME 12710 SUBTTL ROUTINE TO OUTPUT ONE PROGRAM AT A TIME 12720 ;THE WRITE SUBROUTINE WILL OUTPUT AN ENTIRE BINARY RE- 12730 ;LOCATABLE PROGRAM AS WRITTEN BY MACRO6. IT ASSUMES THAT THE 12740 ;ENTRY BLOCK AND NAME BLOCK FOR THE PROGRAM ARE IN THE 12750 ;INTERNAL BUFFER ENTBLK, AND OUTPUTS THESE BEFORE PICKING UP 12760 ;MORE BLOCKS FROM THE CURRENT INPUT DEVICE. BLOCKS ARE READ 12770 ;AND WRITTEN UNTIL THE END BLOCK HAS BEEN PROCESSED. PROVISION I 12780 ;IS MADE FOR BLOCKS WITH A WORD COUNT OF ZERO. 001305' 275200 003334' 12800 WRITE: SUBI C, ENTBLK ;GET COUNT OF ENTRY BLOCK 001306' 322200 001314' 12810 JUMPE C, WRITE3 ;NOTHING TO OUTPUT? 001307' 201100 003334' 12820 MOVEI B, ENTBLK ;GET A POINTER IN B 001310' 200042 000000 12830 WRITE2: MOVE A, (B) ;GET A BINARY WORD 001311' 260500 001656' 12840 PUSHJ P, OUT ;OUTPUT IT 001312' 340100 000000 12850 AOJ B, ;INCREMENT POINTER 001313' 367200 001310' 12860 SOJG C, WRITE2 ;KEEP GOING UNTIL BUFFER EMPTY 001314' 260500 001647' 12870 WRITE3: JSR GETIN ;GET A BLOCK HEADER 001315' 554100 000001 12880 HLRZ B,A ;GET THE BLOCK TYPE CODE ***VJC 001316' 606340 000200 12890 TRNN F,NOLOCB ;DELETE LOCAL SYMBOLS? ***VJC 001317' 254000 001322' 12900 JRST .+3 ;NO 001320' 306100 000002 12910 CAIN B,2 ;IS IT A SYMBOL BLOCK? ***VJC 001321' 254000 001410' 12920 JRST DELLOC ;GO DELETE LOCAL SYMBOL ***VJC 12930 ;COME BACK TO WRITE3 ***VJC 12940 ;UNLESS EXIT ON END-OF-FILE ***VJC 001322' 260500 001656' 12960 PUSHJ P, OUT ;OUTPUT IT 001323' 306100 000400 12970 CAIN B, 400 ;IS THIS A FORTRAN IV SIGNAL WORD? 001324' 254000 001346' 12980 JRST F4 ;YES, PROCESS F4 OUTPUT 001325' 202100 002520' 12990 MOVEM B, SAVEBT ;SAVE THE BLOCK TYPE 001326' 260500 001337' 13000 PUSHJ P, COUNT ;NO, GET SIZE OF BLOCK 001327' 322100 001314' 13010 JUMPE B, WRITE3 ;WORD COUNT OF ZERO? 001330' 260500 001647' 13020 WRITE4: JSR GETIN ;OUTPUT THE BLOCK 001331' 260500 001656' 13030 PUSHJ P, OUT ;... 001332' 367100 001330' 13040 SOJG B, WRITE4 ;LOOP BACK UNTIL DONE 001333' 200040 002520' 13050 MOVE A, SAVEBT ;RETRIEVE THE BLOCK TYPE 001334' 302040 000005 13060 CAIE A, 5 ;WAS IT AN END BLOCK? 001335' 254000 001314' 13070 JRST WRITE3 ;NO, RETURN FOR MORE BLOCKS 001336' 263500 000000 13080 POPJ P, ;YES, EXIT FUDGE2 V.011 PAGE 37 ROUTINE TO OUTPUT ONE PROGRAM AT A TIME 13110 ;THE COUNT SUBROUTINE CALCULATES THE LENGTH OF THE VARIOUS 13120 ;BLOCKS READ BY THE WRITE AND READ SUBROUTINES. THE POSITIVE 13130 ;WORD COUNT IS FOUND IN THE RIGHT HALF OF THE ENTRY BLOCK 13140 ;HEADER, WHICH IS ASSUMED TO BE IN AC A UPON ENTERING. THE 13150 ;LENGTH WILL BE RETURNED IN AC B, AND INCLUDES THE DATA WORDS 13160 ;(SYMBOLS, ENTRY WORDS, ETC.) AND THE SUBHEADERS, OF WHICH 13170 ;THERE IS ONE FOR EVERY 18 (DECIMIAL) DATA WORDS. THE BLOCK 13180 ;HEADER IS DESTROYED, AND IS NOT INCLUDED IN THE LENGTH. 001337' 550400 000001 13200 COUNT: HRRZ G, A ;GET NUMBER OF WORDS 001340' 231400 000022 13210 IDIVI G, 22 ;1SUBHEADER/18 DATA WORDS 001341' 271401 000000 13220 ADDI G,(A) ;ADD INTO WORD COUNT 001342' 322440 001344' 13230 JUMPE G+1,.+2 ;1 EXTRA SUBHEADER FOR 001343' 340400 000000 13240 AOJ G, ;STRAY ONES 001344' 200100 000010 13250 MOVE B, G ;RESULTS IN AC B 001345' 263500 000000 13260 POPJ P, ;EXIT FUDGE2 V.011 PAGE 38 ROUTINE TO HANDLE FORTRAN OUTPUT 13280 SUBTTL ROUTINE TO HANDLE FORTRAN OUTPUT 13300 ;SUBSECTION OF THE WRITE ROUTINE TO HANDLE OUTPUT FROM THE 13310 ;FORTRAN IV COMPILER. THE MAIN OBJECT OF THE ROUTINE IS TO 13320 ;LOOK FOR THE END BLOCK. OTHER BLOCKS ARE MERELY COPIED OUT. 13330 ;THE BLOCK TYPES ARE GIVEN BY THE FOLLOWING TABLE 13340 ;---------------------------------------------------------------- 13350 ;BITS 0-17 BITS18-23 BITS 24-35 TYPE 13370 ;777777 70 N DATA STATEMENT 13380 ;777777 50 N ABSOLUTE MACHINE CODE 13390 ;777777 0 - PROGRAMMER LABELS 13400 ;777777 31 - MADE LABELS 13410 ;777777 60 - ENTRY LABELS 13420 ;777777 777776 END BLOCK 13430 ;----------------------------------------------------------------- 001346' 260500 001647' 13440 F4: JSR GETIN ;GET A FORTRAN IV BLOCK HEADER 001347' 260500 001405' 13450 PUSHJ P, OUT4 ;OUTPUT IT 001350' 641040 777777 13460 TLC A, -1 ;TURN ONES TO ZEROES IN LEFT HALF 001351' 603040 777777 13470 TLNE A, -1 ;NO, WAS LEFT HALF ALL ONES? 001352' 254000 001346' 13480 JRST F4 ;NO, IT WAS CALCULATED MACHINE CODE 001353' 306040 777776 13490 CAIN A, -2 ;YES, IS RIGHT HALF = 777776? 001354' 254000 001372' 13500 JRST ENDST ;YES, PROCESS F4 END BLOCK 001355' 135100 005173' 13510 LDB B, [POINT 6,A,23];GET CODE BITS FROM BITS 18-23 001356' 620040 770000 13520 TRZ A, 770000 ;THEN WIPE THEM OUT 001357' 302100 000070 13530 CAIE B, 70 ;IS IT A DATA STATEMENT? 001360' 306100 000050 13540 CAIN B, 50 ;IS IT ABSOLUTE MACHINE CODE? 001361' 254000 001365' 13550 JRST MACHCD ;YES, TREAT IT LIKE DATA STATEMENTS 001362' 260500 001647' 13560 JSR GETIN ;NO, ITS A LABEL OF SOME SORT 001363' 260500 001405' 13570 PUSHJ P, OUT4 ;WHICH CONSISTS OF ONE WORD 001364' 254000 001346' 13580 JRST F4 ;LOOK FOR NEXT BLOCK HEADER 001365' 550100 000001 13600 MACHCD: HRRZ B, A ;GET THE WORD COUNT IN AC B 001366' 260500 001647' 13610 JSR GETIN ;INPUT A WORD 001367' 260500 001405' 13620 PUSHJ P, OUT4 ;OUTPUT IT 001370' 367100 001365' 13630 SOJG B, MACHCD ;LOOP BACK FOR REST OF THE BLOCK 001371' 254000 001346' 13640 JRST F4 ;GO LOOK FOR NEXT BLOCK 001372' 201100 000001 13660 ENDST: MOVEI B,1 ;TWO WORDS, FIVE TABLES, ONE WORD, ONE TABLE 001373' 201200 000006 13670 MOVEI C,6 ;TO GO 001374' 260500 001647' 13680 F4LUP1: JSR GETIN ;GET TABLE MEMBER 001375' 260500 001405' 13690 F4LUP3: PUSHJ P,OUT4 ;OUTPUT WORD 001376' 365100 001374' 13700 SOJGE B,F4LUP1 ;LOOP WITHIN A TABLE 001377' 321200 001065' 13710 JUMPL C,CPOPJ ;LAST TABLE - RETURN 001400' 367200 001402' 13720 SOJG C,F4LUP2 ;FIRST TWO WORDS AND FIVE TABLES 001401' 322200 001374' 13730 JUMPE C,F4LUP1 ;COMMON LENGTH WORD 001402' 260500 001647' 13740 F4LUP2: JSR GETIN ;READ HEADER WORD 001403' 200100 000001 13750 MOVE B,A ;COUNT TO COUNTER 001404' 254000 001375' 13760 JRST F4LUP3 ;STASH 001405' 606340 020000 13780 OUT4: TRNN F,F4IB ;DONT DO OUTPUT? 001406' 260500 001656' 13790 PUSHJ P,OUT ;YES, DO OUTPUT 001407' 263500 000000 13800 POPJ P, ;RETURN FUDGE2 V.011 PAGE 39 ROUTINE TO DELETE LOCAL SYMBOLS FROM SYMBOL BLOCK 13820 SUBTTL ROUTINE TO DELETE LOCAL SYMBOLS FROM SYMBOL BLOCK 13840 ;ALL LOCAL AND SUPPRESSED LOCAL SYMBOLS ARE DELETED 13850 ;EXTERNALS,INTERNAL AND SUPPRESSED INTERNALS ARE NOT DELETED. 001410' 552040 005047' 13870 DELLOC: HRRZM A,BSZ ;SIZE OF SYMBOL BBLE 001411' 260500 001461' 13880 PUSHJ P,DELINI ;CLEAR NEW HEADER & RELOC WORDS 13890 ;SET PB = SYMBLK+2 001412' 260500 001647' 13900 DELGTR: JSR GETIN ;GET RELOCATION WORD 001413' 202040 005052' 13910 MOVEM A,RELOCS ;SAVE IT 001414' 200040 005122' 13920 MOVE A,PTGR ;INIT POINTER TO GET 001415' 202040 005050' 13930 MOVEM A,PTGRS ;RELOCATION WORD 001416' 260500 001647' 13950 DELGT1: JSR GETIN ;GET FIRST WORD OF PAIR 001417' 134000 005050' 13960 ILDB 0,PTGRS ;GET RELOCATION BITS & HOLD 001420' 603040 100000 13970 TLNE A,(1B2) ;IS SYMBOL LOCAL? 001421' 254000 001435' 13980 JRST DELDEC ;YES, DON'T COPY 001422' 202043 000000 13990 MOVEM A,0(T) ;STORE FIRST WORD 001423' 260500 001647' 14000 JSR GETIN ;GET SECOND WORD INTO A 001424' 202043 000001 14010 MOVEM A,1(T) ;STORE SECOND WORD 001425' 136000 005051' 14020 IDPB 0,PTSRS ;STORE RELOCATION BITS 001426' 201040 000002 14030 MOVEI A,2 ;COUNT WORDS STORED 001427' 272040 005053' 14040 ADDM A,SYMBLK ;I.E. UPDATE WORD COUNT 001430' 271140 000002 14050 ADDI T,2 ;UPDATE NEXT LOCATION TO STORE 001431' 200040 005051' 14060 MOVE A,PTSRS ;HAVE WE STORED 9 001432' 607040 770000 14070 TLNN A,770000 ;SYMBOL PAIRS? 001433' 260500 001447' 14080 PUSHJ P,DELWRT ;YES, WRITE IT OUT 001434' 254000 001436' 14090 JRST DELDEC+1 ;ALREADY HAVE 2ND WORD 001435' 260500 001647' 14110 DELDEC: JSR GETIN ;GET SECOND WORD INTO A 001436' 370000 005047' 14120 SOS BSZ ;HAVE WE EXHAUSTED 001437' 377000 005047' 14130 SOSG BSZ ;ALL WORDS IN BLOCK? 001440' 254000 001445' 14140 JRST DELFIN ;YES, NONE LEFT 001441' 200040 005050' 14150 MOVE A,PTGRS ;HAVE WE GOT 9 001442' 603040 770000 14160 TLNE A,770000 ;SYMBOL PAIRS YET? 001443' 254000 001416' 14170 JRST DELGT1 ;NO, GET NEXT PAIR 001444' 254000 001412' 14180 JRST DELGTR ;YES, GET RELOCATION 001445' 260500 001447' 14200 DELFIN: PUSHJ P,DELWRT ;ORIGINAL BLOCK EMPTY NOW 001446' 254000 001314' 14210 JRST WRITE3 ;GET NEXT BLOCK FUDGE2 V.011 PAGE 40 ROUTINE TO WRITE OUT NEW SYMBOL BBLE 14250 SUBTTL ROUTINE TO WRITE OUT NEW SYMBOL BBLE 001447' 336040 005053' 14270 DELWRT: SKIPN A,SYMBLK ;ANYTHING TO WRITE 001450' 254000 001461' 14280 JRST DELINI ;NO, CAN LEAVE 001451' 550000 000001 14290 HRRZ 0,A ;GET WORD COUNT 001452' 505040 000002 14300 HRLI A,2 ;PUT IN BLOCK TYPE 001453' 260500 001656' 14310 PUSHJ P,OUT ;WRITE BLOCK HEADER 001454' 201100 005053' 14320 MOVEI B,SYMBLK ;LOC OF FIRST WORD 001455' 271100 000001 14330 DELWRU: ADDI B,1 ;LOC OF RELOC WORD 001456' 200042 000000 14340 MOVE A,0(B) ;GET WORD 001457' 260500 001656' 14350 PUSHJ P,OUT ;OUTPUT 001460' 365000 001455' 14360 SOJGE 0,DELWRU ;ALL THROUGH? 14380 ;ROUTINE TO INITIALIZE NEW SYMBOL BBLE 001461' 402000 005053' 14390 DELINI: SETZM SYMBLK ;YES, CLEAR COUNT 001462' 402000 005054' 14400 SETZM SYMBLK+1 ;CLEAR RELOCATION 001463' 200040 005121' 14410 MOVE A,PTSR ;INIT POINTER 001464' 202040 005051' 14420 MOVEM A,PTSRS ;FOR STORING NEW RELOC 001465' 201140 005055' 14430 MOVEI T,SYMBLK+2 ;SET TO STORE FIRST GLOBAL 001466' 263500 000000 14440 POPJ P, FUDGE2 V.011 PAGE 41 ROUTINES TO INDEX THE LIBRARY 14460 SUBTTL ROUTINES TO INDEX THE LIBRARY 14480 COMMENT * THE INDEXING OF LIBRARY FILES IS DONE IN TWO PASSES. 14490 ON PASS 1 THE LIBRARY FILE IS COPIED AND ALL ENTRIES STORED 14500 IN CORE ALLONG WITH A POINTER TO THE BEGINING OF THE BLOCK. 14510 A DUMMY INDEX BLOCK (TYPE 14) IS OUTPUT AT THE BEGINING OF THE 14520 NEW LIBRARY AND ONE IS OUTPUT WHENEVER THE CURRENT INDEX BLOCK 14530 FILLS A BUFFER. 14540 ON PASS 2 THE DUMMY INDEX BLOCKS ARE REPLACED BY REAL ONES. 14550 FUDGE2 USED USETO'S AND DUMP MODE. 14560 IF THE OUTPUT DEVICE IS DTA FUDGE2 USES UGETF UUO'S TO FIND 14570 THE NEXT BLOCK AND NON-STANDARD DUMP MODE TO WRITE THE INDICES. 14580 DESIGN AND CODING BY D.M.NIXON JULY 1970 14590 * 001467' 200040 001646' 14610 INDEX0: MOVE A,INDEXH ;BLOCK HEADER 001470' 350000 002516' 14620 AOS BLKCNT ;START ON BLOCK #1 001471' 260500 001660' 14630 PUSHJ P,OUT1 ;OUTPUT IT 001472' 067040 000000 14640 OUTPUT 1, ;FORCE OUTPUT 001473' 200140 004607' 14650 MOVE T,OBUF+5 ;BUFFER SIZE 001474' 202140 005104' 14660 MOVEM T,XCOUNT 001475' 202140 005106' 14670 MOVEM T,BUFSIZ ;SAVE IT AWAY 001476' 350140 000573* 14680 AOS T,JOBREL ;TO GET 1K MORE 001477' 202140 005105' 14690 MOVEM T,XPNTR 001500' 202140 005107' 14700 MOVEM T,XBEG ;START OF INDEX BUFFERS 001501' 000140 000000 14710 CORE T, 001502' 254000 002170' 14720 JRST ERR22 ;NOT ENUF CORE 001503' 201040 000001 14730 MOVEI A,1 ;START ON BLOCK #1 (IF DSK) 001504' 202060 005105' 14740 MOVEM A,@XPNTR ;STORE FIRST BLOCK # 001505' 350000 005105' 14750 AOS XPNTR 001506' 200040 001646' 14760 MOVE A,INDEXH 001507' 202060 005105' 14770 MOVEM A,@XPNTR 001510' 350000 005105' 14780 AOS XPNTR 001511' 370000 005104' 14790 SOS XCOUNT 001512' 370000 005104' 14800 SOS XCOUNT ;RESERVE SPACE FOR NEXT LINK WORD 001513' 263500 000000 14810 POPJ P, ;RETURN FUDGE2 V.011 PAGE 42 ROUTINES TO INDEX THE LIBRARY 14830 ;HERE ON PASS 1 TO STORE ENTRIES AND POINTERS. 001514' 350012 000000 14850 INDEX1: AOS (P) ;SET SKIP RETURN 001515' 550140 003334' 14860 HRRZ T,ENTBLK ;GET SIZE OF BLOCK 001516' 210040 000003 14870 MOVN A,T 001517' 271140 000001 14880 ADDI T,1 ;WORD OF INFO 001520' 311140 005104' 14890 CAML T,XCOUNT ;ENUF ROOM IN BLOCK? 001521' 254000 001546' 14900 JRST NOROOM ;NO 001522' 200140 003334' 14910 MOVE T,ENTBLK ;GET HEADER WORD 001523' 202160 005105' 14920 MOVEM T,@XPNTR 001524' 350000 005105' 14930 AOS XPNTR 001525' 370000 005104' 14940 SOS XCOUNT 001526' 507000 000001 14950 HRLS A 001527' 541040 003335' 14960 HRRI A,ENTBLK+1 001530' 336141 000000 14970 INDEXA: SKIPN T,(A) 001531' 344040 001530' 14980 AOJA A,.-1 001532' 202160 005105' 14990 MOVEM T,@XPNTR 001533' 370000 005104' 15000 SOS XCOUNT 001534' 350000 005105' 15010 AOS XPNTR 001535' 253040 001530' 15020 AOBJN A,INDEXA 001536' 200140 005106' 15030 INDEX2: MOVE T,BUFSIZ 001537' 274140 004607' 15040 SUB T,OBUF+5 001540' 207000 000003 15050 MOVSS T 001541' 540140 002516' 15060 HRR T,BLKCNT 001542' 202160 005105' 15070 MOVEM T,@XPNTR 001543' 370000 005104' 15080 SOS XCOUNT 001544' 350000 005105' 15090 AOS XPNTR 001545' 263500 000000 15100 POPJ P, 15120 ;HERE WHEN CURRENT INDEX BLOCK IS FULL. 001546' 200040 001646' 15140 NOROOM: MOVE A,INDEXH ;HEADER BLOCK OF INDEX FOR LOADER 001547' 260500 001664' 15150 PUSHJ P,OUTGO 001550' 067040 000000 15160 OUTPUT 1, 001551' 200140 002516' 15170 MOVE T,BLKCNT ;GET INDEX BLOCK # 001552' 562160 005105' 15180 HRROM T,@XPNTR ;STORE IT WITH -1 IN LEFT HALF 001553' 200040 005104' 15190 MOVE A,XCOUNT 001554' 272040 005105' 15200 ADDM A,XPNTR 001555' 200040 005106' 15210 MOVE A,BUFSIZ 001556' 202040 005104' 15220 MOVEM A,XCOUNT 15230 ;MARK IT AS AN INDEX INCASE BLOCK FULL 001557' 562160 005105' 15240 HRROM T,@XPNTR ;SAVE BLOCK # FOR PASS 2 001560' 350000 005105' 15250 AOS XPNTR 001561' 606340 400000 15260 TRNN F,DTAFLG ;NOT IF DTA 001562' 350000 002516' 15270 AOS BLKCNT ;ONE FOR OUTPUT 001563' 200040 001646' 15280 MOVE A,INDEXH 001564' 202060 005105' 15290 MOVEM A,@XPNTR 001565' 350000 005105' 15300 AOS XPNTR 001566' 370000 005104' 15310 SOS XCOUNT 001567' 370000 005104' 15320 SOS XCOUNT ;SPACE FOR LINK WORD TO NEXT INDEX 001570' 254000 001515' 15330 JRST INDEX1+1 FUDGE2 V.011 PAGE 43 ROUTINES TO INDEX THE LIBRARY 15360 ;HERE FOR PASS 2. WRITE OUT THE INDEX BLOCKS 001571' 476020 005105' 15380 INDEX3: SETOM @XPNTR ;TERMINATE WITH END OF INDEX MARKER 001572' 067040 000000 15390 OUTPUT 1, ;SO LAST BLOCK IS WRITTEN 001573' 602340 400000 15400 TRNE F,DTAFLG ;IS IT DTA? 001574' 254000 001614' 15410 JRST INDEX5 ;YES, TREAT DIFFERENTLY 001575' 060040 000016 15420 SETSTS 1,16 001576' 211040 000200 15430 MOVNI A,200 001577' 506040 005107' 15440 HRLM A,XBEG 001600' 402000 005110' 15450 INDEX4: SETZM XBEG+1 001601' 200060 005107' 15460 MOVE A,@XBEG 001602' 075041 000000 15470 USETO 1,(A) 001603' 067040 005107' 15480 OUTPUT 1,XBEG 001604' 063040 760000 15490 STATZ 1,760000 001605' 254000 002132' 15500 JRST ERR15 001606' 201040 000200 15510 MOVEI A,200 001607' 273040 005107' 15520 ADDB A,XBEG 001610' 553000 000001 15530 HRRZS A 001611' 317040 005105' 15540 CAMG A,XPNTR 001612' 254000 001600' 15550 JRST INDEX4 001613' 254000 002257' 15560 JRST EXIT 001614' 070040 000000 15580 INDEX5: CLOSE 1, ;AND A SEPARATE EOF BLOCK 001615' 060040 000116 15590 SETSTS 1,116 ;NONE STANDARD MODE 001616' 211040 000200 15600 MOVNI A,200 ;IOWD COUNT 001617' 506040 005107' 15610 HRLM A,XBEG ;SET IT UP FOR OUTPUT 001620' 074060 002516' 15620 USETI 1,@BLKCNT ;SET ON LAST BLOCK 001621' 066040 002513' 15630 INPUT 1,DIRIOW ;READ IT IN 001622' 135040 005174' 15640 LDB A,[POINT 10,DIRBLK,27] ;GET FIRST BLOCK # 001623' 542060 005107' 15650 HRRM A,@XBEG ;STORE IT FOR COMMON LOOP 001624' 402000 005110' 15660 SETZM XBEG+1 ;MAKE SURE IT'S ZERO 001625' 200060 005107' 15670 INDEX6: MOVE A,@XBEG ;GET BLOCK NUMBER 001626' 074041 000000 15680 USETI 1,(A) ;SET FOR INPUT 001627' 066040 002513' 15690 INPUT 1,DIRIOW ;INPUT BLOCK 001630' 200140 004647' 15700 MOVE T,DIRBLK ;TO FIND LINK WORD 001631' 250160 005107' 15710 EXCH T,@XBEG ;PUT IT IN OUTPUT BLOCK 001632' 370000 005107' 15720 SOS XBEG ;BACK UP POINTER 001633' 075041 000000 15730 USETO 1,(A) ;NOW FOR OUTPUT 001634' 067040 005107' 15740 OUTPUT 1,XBEG ;OUT IT GOES 001635' 063040 760000 15750 STATZ 1,760000 ;UNLESS IN ERROR 001636' 254000 002132' 15760 JRST ERR15 ;DEVICE ERROR 001637' 201040 000200 15770 MOVEI A,200 ;GET TO NEXT DUMP BLOCK 001640' 273040 005107' 15780 ADDB A,XBEG ;ADVANCE POINTER 001641' 553000 000001 15790 HRRZS A ;JUST WORD LOCATION 001642' 317040 005105' 15800 CAMG A,XPNTR ;ALL DONE? 001643' 254000 001625' 15810 JRST INDEX6 ;NO, LOOP 001644' 060040 000016 15820 SETSTS 1,16 ;BACK TO STANDARD MODE TO UPDATE DIR. 001645' 254000 002257' 15830 JRST EXIT ;YES, FINISH UP 001646' 000014 000177 15850 INDEXH: XWD 14,177 ;USED TO SIGNAL INDEX BLOCK TO LOADER FUDGE2 V.011 PAGE 44 INPUT SERVICE ROUTINE 15880 SUBTTL INPUT SERVICE ROUTINE 15890 ;THE INPUT ROUTINE GETS CHARACTERS FROM THE DEVICE WHOSE 15900 ;CHANNEL NUMBER IS IN ACCUMULATOR D. IT CALCULATES THE POSITION 15910 ;OF THE BUFFER HEADER OF THE DEVICE, THEN EITHER LOADS AC A 15920 ;FROM THE BYTE POINTER, OR DOES AN INPUT. IF AN END OF FILE 15930 ;IS FOUND, THE ROUTINE EXITS WITH A POPJ, SINCE THE READ ROUTINE 15940 ;IS CALLED WITH A PUSHJ, FOLLOWED BY AN EOF RETURN. THE NORMAL 15950 ;EXIT FROM GETIN IS BY A JRST @GETIN. 001647' 377015 004612' 15970 GETIN: SOSG IBUF+2(DIS) ;IS APPROPRIATE BUFFER EMPTY? 001650' 254000 001653' 15980 JRST INGET ;YES, GET ANOTHER BUFFER 001651' 134055 004611' 15990 GETIN1: ILDB A, IBUF+1(DIS) ;LOAD AC A WITH A CHARACTER 001652' 263500 000000 16000 POPJ P, 001653' 137240 005175' 16020 INGET: DPB D,[POINT 4,INGET2,12] 001654' 137240 005176' 16030 DPB D,[POINT 4,INGET3,12] 001655' 254000 002474' 16040 JRST INGET2 ;INPUT A BUFFER OF DATA 16070 ;OUTPUT SERVICE ROUTINE 16080 ;THE OUT ROUTINE CHECKS THE TTYOB FLAG TO SEE IF THE OUTPUT 16090 ;SHOULD BE ON THE TTY. IF SO, IT TRANSFERS CONTROL IMMEDIATELY. 16100 ;OTHERWISE, IT ASSUMES OUTPUT IS ON DEVICE #1. 001656' 606340 000020 16120 OUT: TRNN F, TTYOB ;SHOULD OUTPUT BE ON TTY? 001657' 254000 002237' 16130 JRST TYPO ;YES 001660' 377000 004607' 16140 OUT1: SOSG OBUF+5 ;IS OUTPUT BUFFER EMPTY? 001661' 254000 001664' 16150 JRST OUTGO ;YES, OUTPUT A BUFFER 001662' 136040 004606' 16160 OUT2: IDPB A, OBUF+4 ;DEPOSIT CHARACTER 001663' 263500 000000 16170 POPJ P, ;EXIT 001664' 606340 200000 16190 OUTGO: TRNN F,XFLG ;IF NOT INDEXING 001665' 254000 001671' 16200 JRST OUTG ;DON'T WASTE TIME 001666' 606340 400000 16210 TRNN F,DTAFLG ;IF DTA SKIP 001667' 354000 002516' 16220 AOSA BLKCNT ;INCR. COUNT IF DSK 001670' 073040 002516' 16230 UGETF 1,BLKCNT ;GET NEXT BLOCK IF DTA 001671' 057040 000000 16240 OUTG: OUT 1, ;OUTPUT A BUFFER 001672' 254000 001662' 16250 JRST OUT2 ;NO ERRORS 001673' 201240 000001 16260 MOVEI D, 1 ;YES, SET CHANNEL TO OUTPUT 001674' 254000 002132' 16270 JRST ERR15 ;GO TO ERROR ROUTINE FUDGE2 V.011 PAGE 45 ROUTINE TO HANDLE ASTERISK FILE NAME *.EXT 16300 SUBTTL ROUTINE TO HANDLE ASTERISK FILE NAME *.EXT 16310 ;THE DIRECTORY IS SEARCHED FOR FILE NAMES WITH GIVEN EXTENSION OR 16320 ;EXTENSION REL IF NONE SPECIFIED. THESE ARE STORED IN FILBUF 16330 ;ENTERED BY JRST FROM SEMICP 16340 ;EXIT BY POPJ 16350 ;DMN 23 MAY 1969 001675' 200100 002522' 16380 ASTRSK: MOVE B,COLON2 ;GET DEVICE LAST SEEN 001676' 202100 002511' 16390 MOVEM B,DSKINI+1 ;SAVE IT IN CASE DSK 001677' 000100 000000 16400 DEVCHR B, ;GET ITS CHARACTERISTICS 001700' 603100 000100 16410 TLNE B,DTABIT ;IS IT A DTA 001701' 254000 001760' 16420 JRST DTAAST ;YES 001702' 607100 200000 16430 TLNN B,DSKBIT ;IS IT THE DSK? 001703' 254000 002160' 16440 JRST ERR18 ;MUST BE ONE OR THE OTHER 16450 ;FALL INTO DSKAST IF OK 001704' 261500 000547* 16470 DSKAST: PUSH P,JOBFF ;SAVE OLD JOBFF 001705' 201100 004645' 16480 MOVEI B,DSKHDR ;WHERE BUFFER WILL GO 001706' 202100 001704* 16490 MOVEM B,JOBFF ;SET IT UP 001707' 050440 002510' 16510 OPEN 11,DSKINI ;11 IS SAFE CH.NO. 001710' 254000 002162' 16520 JRST ERR19 ;CONNOT INIT DSK 001711' 064440 000001 16530 INBUF 11,1 ;FORCE SINGLE BUFFERING 001712' 200100 002522' 16540 MOVE B,COLON2 ;GET DEVICE 001713' 000100 000000 16550 DEVPPN B, ;GET PROJ-PROG INCASE SYS: ETC. 001714' 000100 000000 16560 GETPPN B, ;FAILED, GET USER PROJ,PROG PAIR 001715' 202100 004572' 16570 MOVEM B,EBLOCK ;SAVE IT FOR LOOKUP OF UFD 001716' 205100 654644 16580 MOVSI B,(SIXBIT/UFD/) ;EXTENSION 001717' 202100 004573' 16590 MOVEM B,EBLOCK+1 001720' 200100 005177' 16600 MOVE B,[XWD 1,1] ;TO GET UFD ***VJC 001721' 202100 004575' 16610 MOVEM B,EBLOCK+3 ;ENTRY BLOCK SET UP 001722' 076440 004572' 16620 LOOKUP 11,EBLOCK ;DO LOOKUP 001723' 254000 002164' 16630 JRST ERR20 ;CANNOT DO IT 001724' 260500 001745' 16650 DSKLUP: PUSHJ P,DSKINP ;INPUT A WORD 001725' 202600 004640' 16660 MOVEM S,SAVNAM ;SAVE NAME FOR LATER 001726' 260500 001745' 16670 PUSHJ P,DSKINP ;GET EXT AS WELL 001727' 512600 004641' 16680 HLLZM S,SAVEXT ;SAVE EXT, CLEAR RH ***VJC 001730' 336000 004640' 16690 SKIPN SAVNAM ;IS THERE A NAME 001731' 254000 001724' 16700 JRST DSKLUP ;NO GET NEXT PAIR 001732' 312700 004641' 16710 CAME EXT,SAVEXT ;EXTENSIONS MATCH 001733' 254000 001724' 16720 JRST DSKLUP ;NO GET NEXT PAIR 001734' 260500 000444' 16730 PUSHJ P,STNULL ;CLOSE OUT OLD FILE 001735' 200600 004640' 16740 MOVE S,SAVNAM ;RECALL NAME 001736' 260500 001137' 16750 PUSHJ P,PUTFIL ;STORE IT IN FILBUF 001737' 200600 004641' 16760 MOVE S,SAVEXT ;RECALL EXTENSION 001740' 260500 001137' 16770 PUSHJ P,PUTFIL 001741' 542241 000000 16780 HRRM D,(A) ;GET CHANNEL 001742' 550600 002724' 16790 HRRZ S,PRGBUF ;POINTER TO PRGBUF 001743' 260500 001137' 16800 PUSHJ P,PUTFIL ;SAVE IT AS 3RD WORD 001744' 254000 001724' 16810 JRST DSKLUP ;GO LOOP ROUND ALL FUDGE2 V.011 PAGE 46 ROUTINE TO HANDLE ASTERISK FILE NAME *.EXT 16840 ;ROUTINE TO GET NEXT WORD FROM UFD 001745' 375000 004644' 16860 DSKINP: SOSGE DIRBUF+2 ;USUAL INPUT ROUTINE 001746' 254000 001751' 16870 JRST DSKIN1 ;GET ANOTHER BUFFER 001747' 134600 004643' 16880 ILDB S,DIRBUF+1 ;GET A WORD 001750' 263500 000000 16890 POPJ P, ;RETURN 001751' 056440 000000 16910 DSKIN1: IN 11,0 ;DO INPUT 001752' 254000 001745' 16920 JRST DSKINP ;NO ERRORS 001753' 061440 020000 16930 STATO 11,20000 ;END OF FILE? 001754' 254000 002166' 16940 JRST ERR21 ;NO, READ ERROR 001755' 262500 001706* 16960 FIN: POP P,JOBFF ;POP UP ONE LEVEL 001756' 262500 001755* 16970 POP P,JOBFF ;RESTORE JOBFF 001757' 263500 000000 16980 POPJ P, ;RETURN TO COMMAND SCAN 001760' 135100 005137' 17010 DTAAST: LDB B,[POINT 4,COLON1,12] ;GET CHANNEL 001761' 137100 005200' 17020 DPB B,[POINT 4,DP+0,12] ;DEPOSIT IT 001762' 137100 005201' 17030 DPB B,[POINT 4,DP+1,12] 001763' 137100 005202' 17040 DPB B,[POINT 4,DP+2,12] 001764' 137100 005203' 17050 DPB B,[POINT 4,DP+3,12] 001765' 137100 005204' 17060 DPB B,[POINT 4,DP+5,12] 001766' 400100 000000 17070 SETZ B, ;INITIAL CONDITION 001767' 254000 002501' 17080 JRST DP ;INPUT DIRECTORY 001770' 301100 000026 17100 DTALUP: CAIL B,26 ;END OF DIRECTORY 001771' 263500 000000 17110 POPJ P, ;YES- FINISHED 001772' 510602 005020' 17120 HLLZ S,DIREXT(B) ;GET EXTENSION 001773' 332002 004772' 17130 SKIPE DIRNAM(B) ;IF NAME ZERO DON'T BOTHER 001774' 312600 000016 17140 CAME S,EXT ;IS EXTENSION SAME 001775' 344100 001770' 17150 AOJA B,DTALUP ;NO GET NEXT ENTRY 001776' 260500 000444' 17160 PUSHJ P,STNULL ;TERMINATE LAST ENTRY 001777' 200602 004772' 17170 MOVE S,DIRNAM(B) ;GET NAME 002000' 260500 001137' 17180 PUSHJ P,PUTFIL ;STORE IT IN FILBUF 002001' 510602 005020' 17190 HLLZ S,DIREXT(B) ;AND EXTENSION 002002' 260500 001137' 17200 PUSHJ P,PUTFIL ;STORE IT 002003' 542241 000000 17210 HRRM D,(A) ;SAVECH. 002004' 550600 002724' 17220 HRRZ S,PRGBUF ;SAVE PRGBUF POINTER 002005' 260500 001137' 17230 PUSHJ P,PUTFIL ;STORE IT 002006' 344100 001770' 17240 AOJA B,DTALUP ;GET NEXT ENTRY FUDGE2 V.011 PAGE 47 ERROR ROUTINES 17270 SUBTTL ERROR ROUTINES 002007' 201100 002261' 17290 ERROR1: MOVEI B, EMES1 ;FUDGE COMMAND ERROR 002010' 254000 002247' 17300 JRST ERROR ;TYPE IT AND EXIT 002011' 201100 002266' 17320 ERROR2: MOVEI B, EMES2 ;TOO MANY PROGRAM NAMES 002012' 254000 002247' 17330 JRST ERROR ;TYPE IT AND EXIT 002013' 201100 002276' 17350 ERROR3: MOVEI B, EMES3 ;FUDGE SYSTEM ERROR 002014' 254000 002247' 17360 JRST ERROR ;TYPE A MESSAGE AND EXIT 002015' 260500 002201' 17380 ERROR4: PUSHJ P, DTYPOQ ;TYPE DEVICE NAME 002016' 201100 002307' 17390 MOVEI B, EMES4 ;"CANNOT DO IO AS REQUESTED" 002017' 326400 002247' 17400 JUMPN G,ERROR ;TYPE IT 002020' 201100 002456' 17410 MOVEI B,EMES24 ;NO SUCH DEVICE IF G=0 002021' 254000 002247' 17420 JRST ERROR ;TYPE IT AND EXIT 002022' 201100 002315' 17440 ERROR5: MOVEI B, EMES5 ;UNEQUAL NUMBER OF MASTER AND TR. 002023' 254000 002247' 17450 JRST ERROR ;TYPE IT AND EXIT 002024' 201100 002330' 17470 ERROR6: MOVEI B, EMES6 ;NOT ENOUGH ARGUMENTS 002025' 254000 002247' 17480 JRST ERROR ;TYPE IT AND EXIT 002026' 260500 002201' 17500 ERROR7: PUSHJ P, DTYPOQ ;TYPE OUT THE DEVICE NAME 002027' 201040 000072 17510 MOVEI A, 72 ;ASCII COLON 002030' 260500 002237' 17520 PUSHJ P, TYPO ;TYPE IT OUT 002031' 260500 002216' 17530 PUSHJ P, FTYPO ;TYPE OUT THE FILE NAME 002032' 201040 000074 17540 MOVEI A, 74 ;ASCII LEFT ANGLE BRACKET 002033' 260500 002237' 17550 PUSHJ P, TYPO ;TYPE IT OUT 002034' 200100 000013 17560 MOVE B, R ;GET PROGRAM NAME 002035' 620340 000020 17570 TRZ F, TTYOB ;SET IO BACK TO TTY 002036' 260500 002220' 17580 PUSHJ P, PTYPO ;TYPE OUT THE PROGRAM NAME 002037' 201040 000076 17590 MOVEI A, 76 ;ASCII RIGHT ANGLE BRACKET 002040' 260500 002237' 17600 PUSHJ P, TYPO ;TYPE IT OUT 002041' 201100 002335' 17610 MOVEI B, EMES7 ;GET AN ERROR MESSAGE 002042' 254000 002247' 17620 JRST ERROR ;TYPE IT OUT AND EXIT 002043' 260500 002201' 17640 ERROR8: PUSHJ P, DTYPOQ ;TYPE OUT THE DEVICE NAME 002044' 201040 000072 17650 MOVEI A, 72 ;ASCII COLON 002045' 260500 002237' 17660 PUSHJ P, TYPO ;TYPE IT OUT 002046' 260500 002216' 17670 PUSHJ P, FTYPO ;TYPE OUT FILE NAME 002047' 201040 000056 17680 MOVEI A, 56 ;ASCII PERIOD 002050' 260500 002237' 17690 PUSHJ P, TYPO ;TYPE IT OUT 002051' 550040 002524' 17700 HRRZ A, FILBUF ;GET THE POINTER TO CURRENT FILE 002052' 554601 000001 17710 HLRZ S, 1(A) ;GET FILE NAME EXTENSION 002053' 260500 002206' 17720 PUSHJ P, DTYPO1 ;TYPE IT OUT 002054' 200140 005102' 17730 MOVE T,SDEVCHR ;GET CHARACTERISTICS 002055' 603140 200000 17740 TLNE T,DSKBIT ;IS IT A DSK? 002056' 254000 002103' 17750 JRST ERR8A ;YES 002057' 201100 002335' 17760 MOVEI B, EMES7 ;GET ERROR MESSAGE "NOT FOUND" 002060' 254000 002247' 17770 JRST ERROR ;TYPE IT OUT AND EXIT FUDGE2 V.011 PAGE 48 ERROR ROUTINES 002061' 260500 002201' 17790 ERROR9: PUSHJ P, DTYPOQ ;TYPE DEVICE NAME 002062' 201100 002340' 17800 MOVEI B, EMES9B ;GET REMAINDER OF MESSAGE 002063' 254000 002247' 17810 JRST ERROR ;TYPE IT AND EXIT 002064' 200200 000001 17830 ERR10: MOVE C, A ;SAVE PROGRAM NAME IN C 002065' 201100 002343' 17840 MOVEI B, EMES10 ;"ENTRY BLOCK TOO LARGE, PROGRAM" 002066' 260500 002174' 17850 PUSHJ P, ETYPO ;TYPE BEGINNING OF MESSAGE 002067' 200100 000004 17860 MOVE B, C ;GET PROGRAM NAME IN B 002070' 260500 002220' 17870 PUSHJ P, PTYPO ;TYPE IT OUT 002071' 254000 002253' 17880 JRST EXIT1 ;EXIT 002072' 201100 002352' 17900 ERR11: MOVEI B, EMES11 ;TRANSMISSION ERROR ON INPUT 002073' 260500 002174' 17910 PUSHJ P, ETYPO ;TYPE THE MESSAGE 002074' 260500 002205' 17920 PUSHJ P, DTYPO ;TYPE NAME OF OFFENDIN DEVICE 002075' 254000 002253' 17930 JRST EXIT1 ;EXIT 002076' 200140 005102' 17950 ERR14: MOVE T,SDEVCHR ;GET DEVICE CHARACTERISTICS 002077' 603140 200000 17960 TLNE T,DSKBIT ;IS IT A DSK 002100' 254000 002043' 17970 JRST ERROR8 ;YES 002101' 201100 002362' 17980 MOVEI B, EMES14 ;DIRECTORY FULL ON OUTPUT 002102' 254000 002247' 17990 JRST ERROR ;TYPE IT AND EXIT 002103' 550140 004573' 18010 ERR8A: HRRZ T,EBLOCK+1 ;GET ERROR CODE 002104' 301140 000021 18020 CAIL T,TABLND-ETABLE ;LEGAL ERROR? 002105' 334100 002131' 18030 SKIPA B,TABLND ;NO, USE CATCH ALL MESSAGE 002106' 200103 002110' 18040 MOVE B,ETABLE(T) ;PICK UP MESSAGE 002107' 254000 002247' 18050 JRST ERROR FUDGE2 V.011 PAGE 49 ERROR ROUTINES 002110' 000000 005205' 18080 ETABLE: [ASCIZ /(0) file was not found/] 002111' 000000 005212' 18090 [ASCIZ /(1) no such project-programmer number/] 002112' 000000 005222' 18100 [ASCIZ /(2) protection failure/] 002113' 000000 005227' 18110 [ASCIZ /(3) file was being modified/] 002114' 000000 005235' 18120 [ASCIZ /(4) rename file name already exists/] 002115' 000000 005245' 18130 [ASCIZ /(5) illegal sequence of UUOs/] 002116' 000000 005253' 18140 [ASCIZ /(6) bad UFD or bad RIB/] 002117' 000000 005260' 18150 [ASCIZ /(7) not a SAV file/] 002120' 000000 005264' 18160 [ASCIZ /(10) not enough core/] 002121' 000000 005271' 18170 [ASCIZ /(11) device not available/] 002122' 000000 005277' 18180 [ASCIZ /(12) no such device/] 002123' 000000 005303' 18190 [ASCIZ /(13) not two reloc reg. capability/] 002124' 000000 005312' 18200 [ASCIZ /(14) no room or quota exceeded/] 002125' 000000 005321' 18210 [ASCIZ /(15) write lock error/] 002126' 000000 005326' 18220 [ASCIZ /(16) not enough monitor table space/] 002127' 000000 005336' 18230 [ASCIZ /(17) partial allocation only/] 002130' 000000 005344' 18240 [ASCIZ /(20) block not free on allocation/] 002131' 000000 005353' 18260 TABLND: [ASCIZ /(?) lookup,enter,or rename error/] FUDGE2 V.011 PAGE 50 ERROR ROUTINES 002132' 201100 002371' 18280 ERR15: MOVEI B, EMES15 ;DEVICE ERROR ON OUTPUT 002133' 260500 002174' 18290 PUSHJ P, ETYPO ;TYPE THE MESSAGE 002134' 260500 002205' 18300 PUSHJ P, DTYPO ;TYPE NAME OF OFFENDING DEVICE 002135' 254000 002253' 18310 JRST EXIT1 ;GO AWAY 002136' 200100 000001 18330 ERR16: MOVE B,A ;SAVE OFFENDING LETTER 002137' 260500 002243' 18340 PUSHJ P,CRLF 002140' 201040 000077 18350 MOVEI A,77 ;TYPE OUT "?" 002141' 260500 001656' 18360 PUSHJ P, OUT 002142' 200040 000002 18370 MOVE A, B ;GET BACK OFFENDING LETTER 002143' 260500 001656' 18380 PUSHJ P, OUT ;TYPE OFFENDING LETTER 002144' 201100 002400' 18390 MOVEI B, EMES16 ;"X" IS AN ILLEGAL SWITCH 002145' 660340 040000 18400 TRO F,CRLFTY 002146' 254000 002247' 18410 JRST ERROR ;TYPE IT AND EXIT 002147' 200100 000001 18430 ERR17: MOVE B, A 002150' 260500 002243' 18440 PUSHJ P,CRLF 002151' 201040 000077 18450 MOVEI A, 77 002152' 260500 001656' 18460 PUSHJ P, OUT 002153' 200040 000002 18470 MOVE A, B 002154' 260500 001656' 18480 PUSHJ P, OUT ;TYPE OFFENDING LETTER 002155' 201100 002405' 18490 MOVEI B, EMES17 ;"X" IS AN ILLEGAL CHARACTER 002156' 660340 040000 18500 TRO F,CRLFTY 002157' 254000 002247' 18510 JRST ERROR ;TYPE IT AND EXIT 002160' 201100 002412' 18530 ERR18: MOVEI B,EMES18 002161' 254000 002247' 18540 JRST ERROR 002162' 201100 002423' 18560 ERR19: MOVEI B,EMES19 002163' 254000 002247' 18570 JRST ERROR 002164' 201100 002427' 18590 ERR20: MOVEI B,EMES20 002165' 254000 002247' 18600 JRST ERROR 002166' 201100 002434' 18620 ERR21: MOVEI B,EMES21 002167' 254000 002247' 18630 JRST ERROR 002170' 201100 002441' 18650 ERR22: MOVEI B,EMES22 002171' 254000 002247' 18660 JRST ERROR 002172' 201100 002447' 18680 ERR23: MOVEI B,EMES23 002173' 254000 002247' 18690 JRST ERROR FUDGE2 V.011 PAGE 51 VARIOUS ERROR ROUTINES AND SMALL TYPE-OUT ROUTINES 18710 SUBTTL VARIOUS ERROR ROUTINES AND SMALL TYPE-OUT ROUTINES 002174' 505100 440700 18730 ETYPO: HRLI B, 440700 ;MAKE A BYTE POINTER 002175' 134040 000002 18740 ETYPO2: ILDB A, B ;GET A CHARACTER 002176' 322040 001065' 18750 JUMPE A,CPOPJ ;EXIT IF NULL 002177' 260500 002237' 18760 PUSHJ P, TYPO ;NO, TYPE IT 002200' 254000 002175' 18770 JRST ETYPO2 ;RETURN FOR MORE CHARACTERS 002201' 666340 040000 18790 DTYPOQ: TRON F,CRLFTY ;IS CR,LF TYPED OUT? 002202' 260500 002243' 18800 PUSHJ P,CRLF ;YES 002203' 201040 000077 18810 MOVEI A,77 ;TYPE OUT ? FOR BATCH 002204' 260500 002237' 18820 PUSHJ P,TYPO 002205' 200605 003324' 18850 DTYPO: MOVE S, DEVBUF(D) ;GET DEVICE NAME FROM BUFFER 002206' 200200 005117' 18860 DTYPO1: MOVE C, SYMPTR ;BYTE POINTER TO SYMBOL NAME 002207' 201100 000006 18870 MOVEI B, 6 ;LOOP COUNTER FOR 6 CHARACTERS 002210' 134040 000004 18880 DTYPO2: ILDB A, C ;GET A CHARACTER 002211' 322040 002214' 18890 JUMPE A, DTYPO3 ;IGNORE BLANKS 002212' 271040 000040 18900 ADDI A, 40 ;CONVERT TO 7-BIT ASCII 002213' 260500 002237' 18910 PUSHJ P, TYPO ;TYPE IT 002214' 367100 002210' 18920 DTYPO3: SOJG B, DTYPO2 ;ALL DONE? 002215' 263500 000000 18930 POPJ P, ;EXIT 002216' 200620 002524' 18950 FTYPO: MOVE S, @FILBUF ;PICK UP THE FILE NAME 002217' 254000 002206' 18960 JRST DTYPO1 ;JUMP INTO DTYPO ROUTINE 002220' 201040 000006 18980 PTYPO: MOVEI A, 6 ;SIX CHARACTERS TO GET 002221' 231100 000050 18990 PTYPO2: IDIVI B, 50 ;CONVERT TO SIXBIT CODE 002222' 506152 000000 19000 HRLM B+1, (P) ;STORE CHARACTER ON PD LIST 002223' 363040 002225' 19010 SOJLE A,.+2 ;ALL DONE? 002224' 260500 002221' 19020 PUSHJ P, PTYPO2 ;NO, DIVIDE SOME MORE 002225' 554052 000000 19030 HLRZ A, (P) ;POP CHARACTERS OFF STACK 002226' 322040 001065' 19040 JUMPE A, CPOPJ ;IGNORE BLANKS 002227' 303040 000012 19050 CAILE A, 12 ;LETTER OR NUMBER? 002230' 271040 000007 19060 ADDI A, 7 ;LETTER - ADD 66 002231' 271040 000057 19070 ADDI A, 57 ;NUMBER - ADD 57 002232' 306040 000134 19080 CAIN A, 134 ;DOLLAR SIGN? 002233' 275040 000070 19090 SUBI A, 70 ;YES, SPECIAL CASE 002234' 306040 000133 19100 CAIN A, 133 ;PERIOD? 002235' 275040 000055 19110 SUBI A, 55 ;YES, SPECIAL CASE 002236' 254000 001656' 19120 JRST OUT ;RECURSIVE EXIT FOR MORE CHARS 002237' 136040 004603' 19140 TYPO: IDPB A, OBUF+1 ;STORE CHARACTER IN BUFFER 002240' 306040 000012 19150 CAIN A, 12 ;LINE FEED? 002241' 067000 000000 19160 OUTPUT 0, ;YES, EMPTY BUFFER 002242' 263500 000000 19170 POPJ P, ;EXIT FUDGE2 V.011 PAGE 52 VARIOUS ERROR ROUTINES AND SMALL TYPE-OUT ROUTINES 002243' 201040 000015 19190 CRLF: MOVEI A, 15 ;CARRIAGE RETURN 002244' 260500 001656' 19200 PUSHJ P, OUT ;OUTPUT IT 002245' 201040 000012 19210 MOVEI A, 12 ;LINE FEED 002246' 254000 001656' 19220 JRST OUT ;OUTPUT IT AND EXIT 002247' 620340 000020 19240 ERROR: TRZ F,TTYOB ;JUST IN CASE , SET OUTPUT TO TTY 002250' 666340 040000 19250 TRON F,CRLFTY 002251' 260500 002243' 19260 PUSHJ P,CRLF 002252' 260500 002174' 19270 PUSHJ P, ETYPO ;TYPE LAST MESSAGE OF ERROR 002253' 620340 000020 19280 EXIT1: TRZ F,TTYOB ;ENSURE TTY OUTPUT OF CR-LF 002254' 260500 002243' 19290 PUSHJ P,CRLF ;FINISH WITH CR-LF 002255' 070000 000000 19300 CLOSE 0, ;FORCE OUTPUT OF LAST LINE 002256' 254000 000000' 19310 JRST FUDGE2 ;START AGAIN 002257' 070040 000000 19330 EXIT: CLOSE 1, ;CLOSE OUT THE OUTPUT CHANNEL 002260' 254000 000000' 19340 JRST FUDGE2 ;RESTART FUDGE2 V.011 PAGE 53 ERROR MESSAGES 19370 SUBTTL ERROR MESSAGES 002261' 376152 542216 19380 EMES1: ASCIZ "?FUDGE2 SYNTAX ERROR" 002262' 425444 051662 002263' 472510 154100 002264' 426452 247644 002265' 000000 000000 002266' 376511 747500 19390 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 19400 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 19410 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 19420 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 19430 EMES6: ASCIZ "?NOT ENOUGH ARGUMENTS" 002331' 426351 752616 002332' 441010 151216 002333' 526330 547250 002334' 514000 000000 002335' 202351 752100 19440 EMES7: ASCIZ " NOT FOUND" 002336' 432372 547210 002337' 000000 000000 002340' 202351 752100 19450 EMES9B: ASCIZ " NOT AVAILABLE" 002341' 406550 144630 002342' 406051 442400 002343' 376131 652244 19460 EMES10: ASCIZ "?ENTRY BLOCK TOO LARGE, PROGRAM " 002344' 545010 246236 FUDGE2 V.011 PAGE 53-1 ERROR MESSAGES 002345' 416264 052236 002346' 475011 440644 002347' 436125 420240 002350' 512370 751202 002351' 465000 000000 002352' 376512 240634 19470 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 19480 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 19490 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 19500 EMES16: ASCIZ " IS AN ILLEGAL SWITCH" 002401' 471011 146230 002402' 426170 146100 002403' 516571 152206 002404' 440000 000000 002405' 202232 320202 19510 EMES17: ASCIZ " IS AN ILLEGAL CHARACTER" 002406' 471011 146230 002407' 426170 146100 002410' 416210 151202 002411' 416510 551000 002412' 376110 553222 19520 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 19530 EMES19: ASCIZ "?CANNOT INIT DSK" 002424' 476504 044634 002425' 446504 042246 002426' 454000 000000 002427' 376311 747626 19540 EMES20: ASCIZ "?LOOKUP FAILURE ON DSK" 002430' 526404 043202 002431' 446312 551212 FUDGE2 V.011 PAGE 53-2 ERROR MESSAGES 002432' 202371 620210 002433' 516260 000000 002434' 376132 251236 19550 EMES21: ASCIZ "?ERROR WHILE READING UFD" 002435' 511012 744222 002436' 462124 051212 002437' 406111 147216 002440' 202530 642000 002441' 376351 752100 19560 EMES22: ASCIZ "?NOT ENOUGH CORE AVAILABLE " 002442' 426351 752616 002443' 441010 347644 002444' 425010 153202 002445' 446310 141230 002446' 425000 000000 002447' 376372 552240 19570 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 19580 EMES24: ASCIZ " DOES NOT EXIST" 002457' 202351 752100 002460' 426611 151650 002461' 000000 000000 FUDGE2 V.011 PAGE 54 IMPURE CODE 19600 SUBTTL IMPURE CODE 002462' 050000 002521' 19630 COLON1: OPEN ,COLON0 ;INITIALIZATION SEQUENCE 002463' 077003 004572' 19640 SEMIC1: ENTER , EBLOCK(T) 002464' 064004 000000 19650 INBUF3: INBUF ,(C) 002465' 072000 000017 19670 BACK0: MTAPE , 17 ;BACKSPACE MAG TAPE ONE FILE 002466' 072000 000000 19680 BACK3: MTAPE ,0 ;WAIT FOR BACKSPACE TO FIN. 002467' 061000 004000 19690 BACK1: STATO , IOBOT ;ARE WE AT BEGINNING OF TAPE 002470' 072000 000016 19700 BACK2: MTAPE , 16 ;NO, SKIP FILE 002471' 263500 000000 19710 POPJ P, ;EXIT 002472' 070000 000000 19730 GET3A: CLOSE , 002473' 076003 004572' 19740 GET4A: LOOKUP , EBLOCK(T) 002474' 056000 000000 19760 INGET2: IN 0, ;INPUT A BUFFER OF DATA 002475' 254000 001651' 19770 JRST GETIN1 ;NO ERRORS 002476' 063000 020000 19780 INGET3: STATZ , IOEOF ;END OF FILE? 002477' 254000 001064' 19790 JRST POPOUT ;YES, HIGH LEVEL EXIT 002500' 254000 002072' 19800 JRST ERR11 ;ERROR 002501' 060000 000117 19820 DP: SETSTS ,117 ;DUMP MODE NON-STANDARD 002502' 074000 000144 19830 USETI ,144 ;DIRECTORY BLOCK 002503' 066000 002513' 19840 INPUT ,DIRIOW ;ONE BLOCK ONLY 002504' 063000 760000 19850 STATZ ,760000 ;CHECK ERRORS 002505' 254000 002501' 19860 JRST DP ;TRY AGAIN 002506' 060000 000014 19870 SETSTS ,14 ;BACK TO BINARY 002507' 254000 001770' 19880 JRST DTALUP 002510' 000000 000014 19900 DSKINI: EXP 14 002511' 446353 000000 19910 SIXBIT /DSK/ ;MAY GET MODIFIED 002512' 000000 004642' 19920 EXP DIRBUF 002513' 777600 004646' 19940 DIRIOW: IOWD 200,DIRBLK ;IOWD FOR DIRECTORY INPUT 002514' 000000 000000 19950 0 ;MUST BE IN LOW SEGMENT FUDGE2 V.011 PAGE 55 STORAGE AND BUFFERS 19980 SUBTTL STORAGE AND BUFFERS 002515' 20000 LOW: 002515' 20020 FILSAV: BLOCK 1 002516' 20030 BLKCNT: BLOCK 1 ;NUMBER OF BUFFERS OUTPUT 002517' 20040 SAVEAC: BLOCK 1 002520' 20050 SAVEBT: BLOCK 1 002521' 20060 COLON0: BLOCK 1 ;MODE 002522' 20070 COLON2: BLOCK 1 ;DEVICE NAME 002523' 20080 COLON3: BLOCK 1 ;BUFFER HEADER 002524' 20090 FILBUF: BLOCK N 002724' 20100 PRGBUF: BLOCK N 003124' 20110 PPNBUF: BLOCK N 003324' 20120 DEVBUF: BLOCK 10 003334' 20130 ENTBLK: BLOCK X+1 004042' 20140 SVEBLK: BLOCK X+1 004550' 20150 PDLIST: BLOCK XP 004570' 20160 BLOCK 2 ;FOR EXTENDED LOOKUP AND ENTERS 004572' 20170 EBLOCK: BLOCK 4 004576' 20180 BLOCK <RIBALC-6+1> ;MORE EXTENDED STUFF 004602' 20190 OBUF: BLOCK 6 ;TTY:, OUTPUT DEV: 004610' 20200 IBUF: BLOCK 30 ;INPUT DEVICES (10) 004640' 20220 SAVNAM: BLOCK 1 ;SAVED FILE NAME FROM UFD 004641' 20230 SAVEXT: BLOCK 1 ;SAVED EXT NAME FROM UFD 004642' 20240 DIRBUF: BLOCK 3 ;DIRECTORY BUFFER HEADER 004645' 20250 DSKHDR: BLOCK N+2 ;TWO WORDS OF OVERHEAD [P,P]+EXT 004647' 20260 DIRBLK=DSKHDR+2 004772' 20270 DIRNAM=DIRBLK+123 ;FILENAMES IN DTA DIRECTORY START HERE 005020' 20280 DIREXT=DIRNAM+26 ;EXTENSIONS IN DTA DIRECTORY START HERE 005047' 20300 BSZ: BLOCK 1 ;SIZE OF OLD SYMBOL BLOCK 005050' 20310 PTGRS: BLOCK 1 ;PTGR SAVED 005051' 20320 PTSRS: BLOCK 1 ;PTSR SAVED 005052' 20330 RELOCS: BLOCK 1 ;ORIGINAL RELOC 005053' 20340 SYMBLK: BLOCK ^D20 ;NEW SYMBOL BLOCK 005077' 20360 MATCH: BLOCK 1 ;COUNT OF <'S - >'S ***VJC 005100' 20380 CURCHR: BLOCK 1 ;SAVED CURRENT CHAR OF CS 005101' 20390 LSTCHR: BLOCK 1 ;SAVED LAST CHAR OF CS 005102' 20400 SDEVCH: BLOCK 1 ;SAVED DEVICE CHARACTERS 005103' 20410 NUMDEV: BLOCK 1 ;NUMBER OF DEVICES 005104' 20420 XCOUNT: BLOCK 1 005105' 20430 XPNTR: BLOCK 1 005106' 20440 BUFSIZ: BLOCK 1 005107' 20450 XBEG: BLOCK 2 005111' 20460 LEVEL: BLOCK 1 ;-2 IF LEVEL D 005112' 20470 DEFPPN: BLOCK 1 ;DEFAULT PROJ-PROG 005113' 20480 PRJPRG: BLOCK 1 ;TEMP. PROJ-PROG 005114' 20490 SVENTR: BLOCK 2 ;PLACE TO SAVE EBLOCK,+1 005116' 20500 NOWARN: BLOCK 1 ;SIGNAL TO PRINT MESSAGE ABOUT INDEX FUDGE2 V.011 PAGE 55-1 STORAGE AND BUFFERS 005117' 20510 VAR ;JUST IN CASE 005117' 20530 LOWTOP: FUDGE2 V.011 PAGE 56 CONSTANTS,POINTERS AND LITERALS 20550 SUBTTL CONSTANTS,POINTERS AND LITERALS 005117' 440600 000014 20570 SYMPTR: POINT 6, S 005120' 440600 000016 20580 EXTPTR: POINT 6, EXT 005121' 440400 005054' 20590 PTSR: POINT 4,SYMBLK+1 ;TO STORE RELOCATION 005122' 440400 005052' 20600 PTGR: POINT 4,RELOCS ;TO GET RELOCATION 005123' 000040 000000 20610 DTCLR: UTPCLR 1, 005124' 002526' 002525' 20620 FILXWD: XWD FILBUF+2, FILBUF+1 005125' 777760 004547' 20630 XPDLST: XWD -XP,PDLIST-1 000000' 20650 END FUDGE2 005126' 002515' 002516' 005127' 000017 000011 005130' 376235 466312 005131' 637035 420340 005132' 713375 262706 005133' 721336 071336 005134' 637454 166732 005135' 627444 067352 005136' 667054 571000 005137' 270400 002462' 005140' 270400 000017 005141' 120000 000000 005142' 270400 002463' 005143' 004572' 005114' 005144' 270400 002464' 005145' 003334' 004042' 005146' 270400 002465' 005147' 270400 002467' 005150' 270400 002470' 005151' 270400 002466' 005152' 270400 002472' 005153' 270400 002473' 005154' 550140 004573' 005155' 306140 000017 005156' 254000 001133' 005157' 254000 002076' 005160' 777756 000001 005161' 536032 247222 005162' 472164 047236 005163' 202231 642212 005164' 541011 747100 005165' 476532 450252 005166' 521010 644630 005167' 425005 520206 005170' 476352 444634 005171' 526231 643432 005172' 050000 000000 005173' 140600 000001 005174' 101200 004647' 005175' 270400 002474' 005176' 270400 002476' 005177' 000001 000001 FUDGE2 V.011 PAGE 56-1 CONSTANTS,POINTERS AND LITERALS 005200' 270400 002501' 005201' 270400 002502' 005202' 270400 002503' 005203' 270400 002504' 005204' 270400 002506' 005205' 241405 120314 005206' 647314 520356 005207' 607464 067336 005210' 721014 667752 005211' 673100 000000 005212' 241425 120334 005213' 675016 372706 005214' 641016 071336 005215' 653134 372132 005216' 703455 763744 005217' 607335 562744 005220' 203356 566704 005221' 627440 000000 005222' 241445 120340 005223' 713376 462706 005224' 723235 767100 005225' 633035 166352 005226' 713120 000000 005227' 241465 120314 005230' 647314 520356 005231' 607464 061312 005232' 647354 720332 005233' 677115 163322 005234' 627100 000000 005235' 241505 120344 005236' 627354 166712 005237' 203155 166312 005240' 203354 166712 005241' 203035 471312 005242' 607117 120312 005243' 743236 372346 005244' 000000 000000 005245' 241525 120322 005246' 663314 563702 005247' 661016 362742 005250' 727135 661712 005251' 203374 620252 005252' 526376 300000 005253' 241545 120304 005254' 607104 052614 005255' 421015 771100 005256' 613034 420244 005257' 446040 000000 005260' 241565 120334 005261' 677504 060500 005262' 516032 620314 005263' 647314 500000 005264' 241426 024500 FUDGE2 V.011 PAGE 56-2 CONSTANTS,POINTERS AND LITERALS 005265' 673376 420312 005266' 673376 563720 005267' 203075 771312 005270' 000000 000000 005271' 241426 124500 005272' 623136 664706 005273' 625015 667750 005274' 203036 660722 005275' 663034 266312 005276' 000000 000000 005277' 241426 224500 005300' 673364 071752 005301' 617204 062312 005302' 733234 362400 005303' 241426 324500 005304' 673376 420350 005305' 737364 071312 005306' 663374 320344 005307' 627165 620306 005310' 607414 161322 005311' 663236 474400 005312' 241426 424500 005313' 673364 071336 005314' 677324 067744 005315' 203436 567750 005316' 605014 574306 005317' 627134 462710 005320' 000000 000000 005321' 241426 524500 005322' 737455 172312 005323' 203315 761726 005324' 203136 271336 005325' 710000 000000 005326' 241426 624500 005327' 673376 420312 005330' 673376 563720 005331' 203335 767322 005332' 723376 220350 005333' 607055 462500 005334' 717414 161712 005335' 000000 000000 005336' 241426 724500 005337' 703036 272322 005340' 607304 060730 005341' 663374 360750 005342' 647375 620336 005343' 673317 100000 005344' 241446 024500 005345' 613315 761726 005346' 203355 772100 005347' 633454 562500 005350' 677344 060730 005351' 663374 360750 FUDGE2 V.011 PAGE 56-3 CONSTANTS,POINTERS AND LITERALS 005352' 647375 600000 005353' 241765 120330 005354' 677375 372740 005355' 263135 672312 005356' 711315 771100 005357' 713135 660732 005360' 625014 571344 005361' 677440 000000 NO ERRORS DETECTED PROGRAM BREAK IS 005362 9K CORE USED FUDGE2 V.011 PAGE 57 SYMBOL TABLE 000543 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 000000 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' FUDGE2 V.011 PAGE 57-1 SYMBOL TABLE DELGTR 001412' DELINI 001461' DELLOC 001410' DELWRT 001447' DELWRU 001455' DESTB 000001 SPD DEVB 000400 SPD DEVBUF 003324' DEVCHR 000000 DEVPPN 000000 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' FUDGE2 V.011 PAGE 57-2 SYMBOL TABLE EMES22 002441' 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' FUDGE2 V.011 PAGE 57-3 SYMBOL TABLE F4LUP3 001375' 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 000000 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 FUDGE2 V.011 PAGE 57-4 SYMBOL TABLE IODEV 200000 SPD 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' FUDGE2 V.011 PAGE 57-5 SYMBOL TABLE PTSRS 005051' 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 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' FUDGE2 V.011 PAGE 57-6 SYMBOL TABLE SVEBLK 004042' 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 000000 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 XP 000020 SPD XPDLST 005125' XPNTR 005105' ZSWTCH 000254' 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 11:23:08 File: DSKB0 :TENDMP.LST [8,200] Created: 20-April-1967 11:20:00 Printed: 24-April-1978 11:22:33 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:1523 File will be deleted after printing TENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032 PAGE 1 TD10 VERSION 00010 TITLE TENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032 00020 IFNDEF REL,<REL=0> ;0 PAPER TAPE, 1 RELOCATABLE BINARY 00030 IFNDEF MAGT,<MAGT=0> ;0 DTAPE, 1 MTAPE 00040 IFN MAGT,< 00050 ; MAGTAPE UTILITY ROUTINE - COURTSEY DATALINE SYSTEMS J HANCOCK 00060 > 00070 IFNDEF MODE,<MODE=0> ;0 IS TD10, 1 IS 551/136 00080 IFNDEF CORE,<CORE=4> ;NUMBER OF 8K MEMORY BLOCKS 00100 IFE MODE,<SUBTTL TD10 VERSION> 00110 IFN MODE,<SUBTTL 551/136 VERSION> 00130 IFE REL,< 00140 IFE MAGT,<RIM10B> 00150 IFN MAGT,<RIM10>> 000210 00160 UTC=210 000214 00170 UTS=214 000200 00180 DC=200 000320 00190 DTC=320 000324 00200 DTS=324 000000 00220 F=0 ;MUST BE 0. USED BY JRA'S 000002 00230 A=2 ;MISC TEMP. HOLDS 136 CONO INDEX IN UWAIT 000001 00240 B=1 ;TEMP. HOLDS BLOCK # COMPUTATION IN SEARCH 000003 00250 C=3 ;HOLDS BITS FOR DECTAPE CONO DURING I/O 000004 00260 D=4 ;HOLDS POINTERS FOR AOBJN'S THROUGH CORE 000005 00270 E=5 ;HOLDS COUNT OF WORDS IN CURRENT DT BLOCK 000006 00280 P=6 ;PC FOR JSP'S 000007 00290 CKS=7 ;HAD BEEN CHECKSUM IN MACDMP 000010 00300 FILN=10 ;NUMBER OF FILE IN DIRECTORY, 1 TO 26 OCTAL 000011 00310 BLKNO=11 ;BLOCK NUMBER SEARCHED FOR ON TAPE 000012 00320 WRITE=12 ;MULTI-STATE FLAG FOR DEFINING I/O OPERATION 00330 ;1=D 0=K -1=ELSE 000013 00340 PNTR=13 ;POINTER TO BYTE TABLE IN DIRECTORY 000014 00350 CH=14 ;HOLDS 6BIT CHARACTER OF COMMAND, OR -1 000015 00360 Q=15 ;ANOTHER JSP AC 000016 00370 G=16 ;RARELY USED VERY TEMP 000017 00380 CT=17 ;COUNT OF WORDS TO DUMP 077777 00400 COMPTR=BEGR+377 ;COMMAND POINTER, IF SUPPLIED 077175 00410 LOZAD=BEGR-203 ;WHEN CORE IS CLEARED, IT 00420 ;IS FROM 40 THRU LOZAD 000020 00430 LOW=20 ;FIRST LOCATION CONSIDERED FOR DUMPING 077175 00440 HIGH=BEGR-203 ;LAST LOCATION CONSIDERED FOR DUMPING 00450 ;ZEROED AT BEG THESE DAYS 077176 00460 FOOF=BEGR-202 ;NEEDED FOR ZERO CORE SEARCH, ZEROED AT BEG1 077177 00470 TAB=BEGR-201 ;FILE DIRECTORY 077377 00480 LINK=BEGR-1 ;0-17=LINK, 18-27=FBN, 29-35=WC 077400 00490 IFE REL,<IFE MAGT,<LOC 17400+<<CORE-1>*20000>> 00500 IFN MAGT,<LOC 17377+<<CORE-1>*20000> 00510 IOWD LAST-BEGR+1,BEGR>> TENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032 PAGE 2 TD10 VERSION 00530 ;INITIAL ENTRY IS AT BEGR, UNLESS A COMMAND POINTER IS 00540 ;SUPPLIED IN COMPTR. IN THAT CASE, ENTRY IS AT BEGR+1 077400 402000 077777 00560 BEGR: SETZM COMPTR ;CLEAR ANY JUNK IN COMMAND POINTER 077401 700200 635550 00570 CONO 635550 ;I/O RESET, ETC. 077402 265300 077467 00580 BEG: JSP P,CRR ;TYPE A CR-LF 077403 201200 077750 00590 MOVEI D,SPNT-2 ;PREPARE TO REMOVE AOBJN POINTERS 077404 403100 077176 00600 BEG1: SETZB A,FOOF ;CLEAR A TO PUT IN CORE, CLEAR 00610 ;FOOF FOR THE NEXT ZERO CORE SEARCH 077405 250104 000002 00620 EXCH A,2(D) ;REMOVE HEADER LIST 077406 253100 077406 00630 AOBJN A,. ;COUNT THROUGH TO NEXT HEADER 077407 201202 777777 00640 MOVEI D,-1(A) ;ACCOUNT FOR OVERSHOOT IN AOBJN 077410 326200 077404 00650 JUMPN D,BEG1 ;IF WE DIDNT AOBJN A 0, GO FOR NEXT HDR 077411 200540 077753 00660 MOVE PNTR,[XWD 500,TAB-1] ;5 BIT BYTES IN DIRECTORY 077412 403600 000000 00670 SETZB CH,F 077413 475500 000215 00680 CRCH: SETOI WRITE,215 ;USED FOR CARRET TYPEOUT 077414 403140 077175 00690 TYI: SETZB C,HIGH ;HOPEFULLY HIGH IS TEMPORARY 077415 403040 000005 00700 SETZB B,E ;NAME INITIALIZING 077416 665040 400000 00710 TLOA B,400000 ;NULL NAME IS "@. " 077417 201240 000002 00720 SPACE: MOVEI E,C-1 ;EXTENSION INTO C 077420 505240 020600 00730 HRLI E,20600 ;FAKE OUT END TEST OF BYTE PTR 00740 ;STOP TAPE DRIVE 00750 IFN MODE,<CONO UTC,0> 077421 732200 400000 00760 IFE MODE,<CONO DTC,400000> 077422 134120 077400 00770 NEXT: ILDB A,@BEGR ;GIVES A 0 UNLESS COMMAND POINTER SUPPLIED 00780 ;RH OF NEXT IS USED AS A CONSTANT 077423 475400 000207 00790 BELL: SETOI FILN,207 ;INITIALIZATION FOR SEARCH 077424 403440 000017 00800 SETZB BLKNO,CT ; " 077425 402000 077377 00810 SETZM LINK 077426 326100 077433 00820 JUMPN A,RCH ;JUMP IF COMMAND READ FROM CORE 077427 712340 000040 00830 CONSO TTY,40 ;TYPEIN FLAG? 077430 254000 077427 00840 JRST .-1 ;NO,WAIT 077431 712040 000002 00850 DATAI TTY,A ;GET TYPED IN CHARACTER 077432 265300 077471 00860 JSP P,TYO ;ECHO IT (WITH PARITY) 077433 405100 000177 00870 RCH: ANDI A,177 ;STRIP OFF PARITY 077434 306100 000177 00880 CAIN A,177 ;RUBOUT? 077435 254000 077400 00890 JRST BEGR ;YES. RESTART TENDMP 077436 302100 000033 00900 CAIE A,33 ;NEW ALTMODE? 077437 301100 000175 00910 CAIL A,175 ;OR 175 OR 176 ALTMODES? 077440 254000 077501 00920 JRST ALTTST ;YES, SOME ALTMODE. 077441 301100 000140 00930 CAIL A,140 ;LOWER CASE CHARACTER? 077442 620100 000040 00940 TRZ A,40 ;YES. CHANGE TO UPPER CASE 077443 275100 000040 00950 SUBI A,40 ;CONVERT TO SIXBIT 077444 321100 077504 00960 JUMPL A,CARRET ;ANY CONTROL CHARACTER 077445 322100 077417 00970 JUMPE A,SPACE ;CHAR WAS 40 077446 603240 770000 00980 NEXT1: TLNE E,770000 ;NO MORE THAN SIX CHARS 077447 136100 000005 00990 IDPB A,E ;GOES INTO AC1 = B 077450 254000 077422 01000 JRST NEXT ;GET ANOTHER CHARACTER TENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032 PAGE 3 TD10 VERSION 01040 ;HERE ON JUMP BLOCK DURING LOADS, OR NUMBER>7 ALT 077451 01050 JBLK: 01060 ;STOP TAPE DRIVE 01070 IFN MODE,<CONO UTC,0> 077451 732200 400000 01080 IFE MODE,<CONO DTC,400000> 077452 542200 077454 01090 HRRM D,SADR ;SAVE STARTING ADDRESS 077453 326600 077402 01100 JUMPN CH,BEG ;IF NOT LOADGO COMMAND 077454 254000 077402 01110 SADR: JRST BEG ;CURRENT S.A. 077455 01120 LOADS: ;HERE TO LOAD TAPE TO CORE 077455 201200 077176 01130 MOVEI D,LOZAD+1 ;FIRST LOC NOT TO ZERO 077456 402000 000040 01140 SETZM 40 ;A "FEATURE" 077457 200140 077754 01150 MOVE C,[XWD 40,41] ;PREPARE TO CLEAR CORE. 077460 606600 000003 01160 TRNN CH,3 ;SKIP ON M,N NOT ON L,T,@ 077461 251144 777777 01170 BLT C,-1(D) ;ZERO CORE 077462 265640 077557 01180 LOAD: JSP Q,LODUMP ;START READING FILE. LODUMP PROCESSES 01190 ;ONE HEADER AND ITS DATA 077463 254000 077462 01200 JRST LOAD ;IF OK, GET NEXT BLOCK.(IF NONE, 01210 ;LODUMP RETURNS TO JBLK.) 077464 336240 000012 01220 DELE: SKIPN E,WRITE ;SKIP IF NOT IN THE K PHASE OF A D COMMAND. 01230 ;OR A K COMMAND 01240 ;ALSO, SET E =0, SO SEARCH HAPPENS IN RBLK 077465 344500 077713 01250 CLS1: AOJA WRITE,CLSTP ; 0 TO 1. GO DUMP OUT DIRECTORY. 077466 334300 077422 01260 ERR: SKIPA P,NEXT ;SET TO RETURN TO BEGR 077467 334100 077413 01270 CRR: SKIPA A,CRCH ;LIKE HRROI A,215 AND SKIPA 077470 334100 077423 01280 SKIPA A,BELL ;GET A BELL CHARACTER 077471 336000 077777 01290 TYO: SKIPN COMPTR ;DONT TYO IF NO TYI, UNLESS ERR 077472 712140 000002 01300 DATAO TTY,A ;TYPE OUT 077473 712300 000020 01310 CONSZ TTY,20 ;WAIT FOR TTY TO FINISH 077474 254000 077473 01320 JRST .-1 ;NOT YET 077475 302100 000215 01330 CAIE A,215 ;IF CR TYPED IN, 077476 325106 000000 01340 JUMPGE A,(P) ;OR SIGN BIT OF CHAR ON,(SEE CRR) 077477 201100 000012 01350 MOVEI A,12 ;APPEND A LINEFEED 077500 254000 077471 01360 JRST TYO ;GO TYPE LF TENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032 PAGE 4 TD10 VERSION 077501 607040 004040 01390 ALTTST: TLNN B,4040 ;IF ALPHA CHARACTERS, DONT GET CH 077502 135600 000005 01400 LDB CH,E ;LAST CH BEFORE ALT, -40 077503 326600 077667 01410 JUMPN CH,ALTMD ;IF CH NOT NULL, GOT PROCESS ALTMODE 077504 205400 777752 01420 CARRET: MOVSI FILN,-26 ;FILE NAME SPECIFIED. FIRST THING TO 01430 ;DO IS LOOK IT UP IN DIRECTORY 077505 336010 077322 01440 LUP: SKIPN TAB+123(FILN) ;SEARCH FOR FREE FILE 077506 332450 077350 01450 SKIPE BLKNO,TAB+151(FILN) ;CHECK BOTH WORDS 077507 634440 000011 01460 TDZA BLKNO,BLKNO ;ENSURE CLEAR BLOCK NUMBER 077510 542400 077517 01470 HRRM FILN,FREE ;SAVE NUMBER OF A FREE FILE 077511 510710 077350 01480 HLLZ G,TAB+151(FILN) ;ONLY CHECK LEFT OF 2ND WD 077512 316050 077322 01490 CAMN B,TAB+123(FILN) ;SEARCH FOR TYPED-IN FILE 077513 312140 000016 01500 CAME C,G ;BOTH WORDS 077514 253400 077505 01510 AOBJN FILN,LUP ;NOT THIS ONE. KEEP LOOKING 077515 321400 077522 01520 JUMPL FILN,BEG69 ;IF FILE FOUND, JUMP 077516 323500 077466 01530 JUMPLE WRITE,ERR ;IF NOT FOUND, BETTER BE DUMP 077517 201400 077517 01540 FREE: MOVEI FILN,. ;DUMP & NOT FOUND, MAKE ENTRY WHERE FREE 01550 ;(ADDRESS MODIFIED ABOVE) 077520 332010 077322 01560 SKIPE TAB+123(FILN) ;MAKE SURE HOLE AVAILABLE 077521 254000 077466 01570 JRST ERR ;NO FREE SLOTS 077522 201410 000001 01590 BEG69: MOVEI FILN,1(FILN) ;FILN IS FILE #+1; CLR LH 077523 321500 077455 01600 JUMPL WRITE,LOADS ;ALL LOAD INSTRUCTIONS 01610 IFE MAGT,< 077524 336000 000012 01620 SKIPN WRITE ;DELETE? (K COMMAND) 077525 403040 000003 01630 SETZB B,C ;YES, KILL FILE 077526 202050 077321 01640 MOVEM B,TAB+122(FILN) ;CLEAR IF DELE, ENTER IF NEW DUMP 077527 512150 077347 01650 HLLZM C,TAB+150(FILN) ;BOTH WORDS 01660 ;FALL INTO DUMP ROUTINE 01670 ;WHICH IS A NO-OP FOR K TENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032 PAGE 5 TD10 VERSION 01710 ;DUMP WRITES OUT CORE ONTO TAPE 01730 ;DUMP THRU DUMP2-1 SETS UP POINTERS TO NON-ZERO CORE AREAS. THESE 01740 ;AOBJN POINTERS ARE CALLED "HEADERS", AND PRECEDE THE DATA WHEN 01750 ;THE TAPE IS WRITTEN. 01760 ;THE FIRST HEADER IS KEPT IN SPNT. SUCCESIVE HEADERS GO INTO THE FIRST 01770 ;ZERO WORD FOLLOWING THE BLOCK CORRESPONDING TO THE PREVIOUS HEADER. 01780 ;AFTER THE LAST NON-ZERO BLOCK IS (BY DEFINITION) A ZERO, WHICH 01790 ;TERMINATES THE HEADER LIST. THIS WORD MAY BE LOCATION FOOF (37176) IF 01800 ;CORE WAS FILLED UP TO THE BASE OF TENDMP. 077530 01820 DUMP: ;HERE ON D,K. (BLKN)=0, FILN SET UP 077530 210100 077755 01830 MOVN A,[XWD HIGH-LOW-1,-LOW+1] ;COUNTER TO EXAMINE 01840 ;CORE FOR BLOCKS OF 0 077531 201340 077751 01850 MOVEI CKS,SPNT-1 ;FIRST HEADER GOES INTO SPNT 077532 336002 000001 01860 DMP1: SKIPN 1(A) ;FIND SOME NON-ZERO CORE 077533 253100 077532 01870 AOBJN A,.-1 ;ZERO. KEEP LOOKING. 077534 202100 000004 01880 MOVEM A,D ;SAVE ADR 077535 336002 000001 01890 SKIPN 1(A) ;FIND SOME ZERO CORE 077536 332002 000002 01900 SKIPE 2(A) ;DON'T MAKE NEW BLOCK FOR 1 ZERO 077537 253100 077535 01910 AOBJN A,.-2 ;NON-ZERO. KEEP LOOKING 077540 274200 000002 01920 SUB D,A ;GET -COUNT IN BOTH HALVES OF D 077541 275744 777777 01930 SUBI CT,-1(D) ;COUNT N WORDS DATA, 1 HDR 077542 271202 000000 01940 ADDI D,(A) ;GET F.A.-1 IN RH OF D 077543 202207 000001 01950 MOVEM D,1(CKS) ;SAVE HEADER 077544 325200 077546 01960 JUMPGE D,.+2 ;ON DATA GROUPS, 077545 200340 000002 01970 MOVE CKS,A ;GET THE HEADER 01980 ;F.A.+W.C. IS ADR OF NEXT HEADER 01990 ;I.E., FIRST 0 AFTER NON-ZERO BLOCK 077546 321100 077532 02000 JUMPL A,DMP1 ;LOOP IF MORE CORE 077547 242340 000002 02010 LSH CKS,2 ;SHIFT CORE SIZ FOR DIR 077550 333000 000012 02020 SKIPLE WRITE ;IF DUMPING, SET JOBREL 077551 542350 077347 02030 HRRM CKS,TAB+150(FILN) ;PUT IN DIR 077552 201200 077751 02040 DMP2: MOVEI D,SPNT-1 ;SET UP TO FOLLOW THE HEADERS. 077553 201757 000001 02050 MOVEI CT,1(CT) ;CLR LH, COUNT JBLK 077554 200204 000001 02060 DMP3: MOVE D,1(D) ;GET HEADER 077555 325200 077566 02070 JUMPGE D,THRU ;IF NULL HEADER FOUND 077556 201640 077554 02080 MOVEI Q,DMP3 ;Q:= DMP3 AS A RETURN AFTER AOBJN 02090 > 02110 IFN MAGT,< 02120 JRST ERR ;HOW DID WE GET HERE? DLS*** 02130 ;DUMP WRITES OUT CORE ONTO MAGNETIC TAPE 02140 ;DUMP WRITES OUT A CORE IMAGE ON MAGNETIC TAPE WITHOUT 02150 ;ZERO COMPRESSION. THE RECORDS ARE 200(OCTAL) WORDS IN LENGTH 02160 ;AND BEGIN WITH WORD ZERO. BEFORE STARTING THE TAPE IS REWOUND. 02170 ;IT ASSUMES MTA0, AT LEAST FOR NOW. 02180 02190 MTC= 340 02200 MTS= 344 02210 DUMP: CONO MTC,1000 ;REWIND 02220 CONSO MTS,300000 ;WAIT FOR BOT OR REWINDING TENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032 PAGE 5-1 TD10 VERSION 02230 JRST .-1 02240 CONSO MTS,40 ;TRANSPORT READY? 02250 JRST .-1 02260 SETZ A, 02270 DUMP1: HRLI A,-200 ;WORDS PER BLOCK 02280 CONO MTC,64100 ;START WRITE OPERATION 02290 DUMP2: CONSO MTS,1 ;TD10 READY FOR DATA? 02300 JRST .-1 02310 DATAO MTC,(A) ;SEND OUT DATA 02320 AOBJN A,DUMP2 ;POINT TO NEXT WORD AND LOOP 02330 CONO MTS,1 ;STOP THE DRIVE 02340 CONSO MTS,100 ;WAIT TILL STOPPED 02350 JRST .-1 02360 CONSZ MTS,464610 ;ANY ERRORS? 02370 JRST ERR ;YES, GO RING BELL 02380 AOSE [-CORE*20000/200+2] ;ALL CORE DUMPED? 02390 JRST DUMP1 ;NO 02400 CONO MTC,65100 ;WRITE END OF FILE 02410 CONSO MTS,100 ;DONE? 02420 JRST .-1 02430 CONO MTC,65100 02440 CONSO MTS,100 02450 JRST .-1 02460 JRST BEGR ;ALL DONE 02470 > 077557 265300 077572 02500 LODUMP: JSP P,UWAIT 077560 255000 000004 02510 JFCL D ;IN/OUTPUT HEADER 077561 325200 077451 02520 JUMPGE D,JBLK ;IF JRST BLOCK READ. CANT HAPPEN ON WRITE 077562 265300 077572 02530 DMP5: JSP P,UWAIT 077563 255004 000001 02540 JFCL 1(D) ;IN/OUTPUT DATA WORD 077564 253200 077562 02550 AOBJN D,DMP5 ;COUNT DOWN THE HEADER 077565 254015 000000 02560 JRST (Q) ;END OF HEADER. TO DMP3 OR LOAD+1 02570 ;WRITE: 1=D 0=K -1=ELSE 077566 265300 077572 02590 THRU: JSP P,UWAIT ;WRITE OUT JRST BLOCK 077567 255000 077454 02600 JFCL SADR ;FROM LOC SADR 077570 341240 077627 02610 IFE MODE,< AOJL E,UWAIT1 ;FILL OUT BLOCK, TO GET CKSM OUT> 077571 624500 777777 02620 TRZA WRITE,-1 ;THEN SET WRITE TO 0, AND GO CLOBBER 02630 ;ANY FURTHER BLOCKS WITH THIS FILN 077572 341240 077627 02640 UWAIT: AOJL E,UWAIT1 ;RETURN ADDR = (P) DATA ADDR = @(P) 02650 ;E IS -WD COUNT IN BLOCK OR POSITIVE 02660 ;BYTE POINTER FIRST TIME THRU 077573 554440 077377 02670 HLRZ BLKNO,LINK ;SET TO FOLLOW LINK 077574 325500 077576 02680 MNLUP0: JUMPGE WRITE,MNLUP ;WRITING OR DELETING 077575 326440 077620 02690 JUMPN BLKNO,RBLK 077576 354000 000011 02700 MNLUP: AOSA BLKNO ;NEXT BLOCK IN THE DIRECTORY 077577 137040 000013 02710 MNLUP1: DPB B,PNTR ;FOR DELETE, 0 FILE NAME AND NUMBER 077600 134100 000013 02720 ILDB A,PNTR ;SEARCH FILE DIR 077601 306100 000037 02730 CAIN A,37 077602 254000 077464 02740 JRST DELE ;END OF TAB MARKER, DELE GOES TO 02750 ;CLSTP ON A "D" TO DUMP DIRECTORY TENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032 PAGE 5-2 TD10 VERSION 077603 661112 777777 02760 TLO A,-1(WRITE) ;0 ON D, -1 ON K OR K PHASE OF D 077604 302402 000000 02770 CAIE FILN,(A) ;IS THIS BLOCK ASSIGNED TO CURRENT FILE? 077605 326100 077576 02780 JUMPN A,MNLUP ;OR MAYBE FREE? JUMP IF IN USE BY 02790 ;ANOTHER FILE. 077606 137400 000013 02800 DPB FILN,PNTR ;SMASH AWAY WRITE BLOCK ON D OR K. BUT 02810 ;SEE MNLUP1 ON K. 077607 322500 077577 02820 JUMPE WRITE,MNLUP1 ;K COMMAND 077610 336140 077377 02830 SKIPN C,LINK ;HAS LINK BEEN SET UP? 077611 137440 077756 02840 DPB BLKNO,[XWD 101200,LINK] ;NO. PUT BLOCK IN AS FIRST BLK NO 077612 506440 077377 02850 HRLM BLKNO,LINK ;PUT BLOCK IN AS LINK 077613 322140 077574 02860 JUMPE C,MNLUP0 ;JUMP IF THIS IS THE FIRST PASS THRU DIRECTORY 077614 554440 000003 02870 HLRZ BLKNO,C ;GET LINKED BLOCK CHOSEN BEFORE 077615 201140 000177 02880 MOVEI C,177 ;PUT IN A WORD COUNT FOR PIP 077616 436140 077377 02890 IORM C,LINK ;AND PUT ALL THAT INTO LINK WORD 077617 275740 000177 02900 SUBI CT,177 ;DECREMENT WORDS LEFT TO GO TENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032 PAGE 6 TD10 VERSION 02940 ;RBLK SEARCHES FOR THE BLOCK IN BLKNO, ENTERS IT GOING FORWARD, 02950 ;AND THEN READS INTO CORE, DUMPS CORE, OR COMPARES CORE AS 02960 ;DETERMINED BY CONTENTS OF WRITE. 077620 560140 077744 02980 RBLK: HRRO C,TAPENO ;CURRENT TAPE NO. 02990 ;SET LH TO PREPARE FOR JUMPN IN DELE 03000 IFE MODE,< 077621 660040 777777 03010 TRO B,-1 ;ENSURE GOING FORWARD WHEN FIRST SEARCH 077622 732340 300000 03020 CONSO DTC,300000 ;IS A DIRECTION ASSERTED? 077623 660140 210000 03030 TRO C,210000 ;NO. GO FORWARD 077624 606040 400001 03040 RB1: TRNN B,400001 ;DECIDE WHETHER TO TURN AROUND 077625 660140 300000 03050 TRO C,300000 ;TURN AROUND 077626 732203 020200 03060 RBG: CONO DTC,20200(C) ;ISSUE THE COMMAND TO TD10. 03070 ;200=SEARCH, 300=READ, 700=WRITE. 077627 732700 672700 03080 UWAIT1: CONSZ DTS,672700 ;ANY ERRORS? 077630 254000 077466 03090 JRST ERR ;YES. GO DING AND THEN TYI 077631 732740 000001 03100 CONSO DTS,1 ;DATA READY? 077632 254000 077627 03110 JRST .-3 ;NO. GO WAIT SOME MORE 077633 321252 077660 03120 JUMPL E,INOUT(WRITE) ;IF IN MIDST OF A DT BLOCK, DISPATCH 077634 732040 000001 03130 DATAI DTC,B ;NO. SEARCHING. GET BLOCK NO. 077635 620140 310000 03140 TRZ C,310000 ;CLOBBER DIRECTION BITS IN CONO 077636 275051 000000 03150 SUBI B,(BLKNO) ;COMPARE WITH DESIRED BLOCK 077637 732300 100000 03160 CONSZ DTC,100000 ;COMPLEMENT DECISION IF GOING REVERSE 077640 640040 777776 03170 TRC B,-2 ;BIT 35 IS FOR TURNAROUND SPACE. 03180 > TENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032 PAGE 7 TD10 VERSION 03210 IFN MODE,< 03220 SETOB A,B ;GO FORWARD, SET DC FOR SEARCH 03230 CONSZ UTS,40 ;IS CHECKSUM BEING WRITTEN? 03240 JRST .-1 ;WAIT 03250 RB1: TRNN B,400001 ;DECIDE WHETHER TO TURN AROUND 03260 TRCA C,10000 ;CHANGE DIRECTION AND DELAY 03270 CONSO UTC,200000 ;UNIT SELECTED? 03280 TRO C,2000 ;INVOKE STARTUP DELAY 03290 RBG: CONO UTC,220200(C) ;COMMAND TO THE 551. 03300 ;200=SEARCH, 300=READ, 700=WRITE. 03310 CONO DC,4011(A) ;COMMAND TO THE 136. 03320 UWAIT1: CONSZ UTS,6 ;ANY ERRORS? 03330 JRST ERR ;YES. GO DING AND THEN TYI 03340 CONSO DC,1000 ;DATA READY? 03350 JRST .-3 ;NO. WAIT SOME MORE 03360 JUMPL E,INOUT(WRITE) ;IF IN MIDST OF A DT BLOCK, DISPATCH 03370 DATAI DC,B ;NO. SEARCHING. GET BLOCK NUMBER 03380 TRZ C,2000 ;DONT DELAY ANY MORE 03390 SUBI B,(BLKNO) ;COMPARE WITH DESIRED BLOCK 03400 TRNE C,10000 ;COMPLEMENT IF GOING REVERSE 03410 TRC B,-2 ;BIT 35 IS FOR TURNAROUND SPACE. 03420 > 077641 326040 077624 03430 JUMPN B,RB1 ;JUMP IF NOT GOING FORWARD INTO (BLKNO) 077642 211240 000200 03440 MOVNI E,200 ;WORDS PER BLOCK 077643 202300 000000 03450 MOVEM P,F ;SAVE RETURN IN AC0 077644 660140 000100 03460 TRO C,100 ;READ COMMAND, MAYBE 077645 323500 077652 03470 JUMPLE WRITE,RB2 ;JUMP IF READ 077646 660140 000400 03480 TRO C,400 ;CHANGE TO WRITE COMMAND 03490 IFN MODE,<MOVNI A,401 ;SET 136 TO OUTPUT> 077647 327740 077652 03500 JUMPG CT,.+3 077650 553000 077377 03510 HRRZS LINK ;IF LAST BLK, KILL LINK 077651 137240 000013 03520 DPB E,PNTR ;AND THE DIR BYTE ? 0 077652 302440 000144 03530 RB2: CAIE BLKNO,^D100 ;IF NOT DIRECTORY BLOCK 077653 201300 077655 03540 MOVEI P,.+2 ;SETUP NEW RETURN 077654 254000 077626 03550 JRST RBG 077655 340240 077377 03560 AOJ E,LINK ;IN/OUTPUT LINK 077656 267300 077627 03570 JRA P,UWAIT1 ;RESTORE CALLER ADR 03580 ;AND PROCESS DATA WORDS TENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032 PAGE 8 TD10 VERSION 03610 IFE MODE,< 077657 732066 000000 03620 DATAI DTC,@(P) ;READ COMMANDS. GET WORD TO CORE 077660 254000 077662 03630 INOUT: JRST UWAIT2 ;INOUT-1 TO INOUT +1 ARE DISPATCHED TO. 077661 732166 000000 03640 DATAO DTC,@(P) ;OUTPUT TO TAPE 077662 346240 077666 03650 UWAIT2: AOJN E,UWAIT3 ;WAS THAT THE LAST WORD IN THE DT BLOCK? 077663 732600 000001 03660 CONO DTS,1 ;YES. GIVE FUNCTION STOP TO TD10 077664 732740 100000 03670 CONSO DTS,100000 ;AND WAIT FOR CHECKSUM TO BE DONE 077665 254000 077664 03680 JRST .-1 ;NOT YET. WAIT 077666 364246 000000 03690 UWAIT3: SOJA E,0(P) ;DONE. COMPENSATE FOR THE AOJN ABOVE, AND 03700 ;RETURN TO CALLER OF UWAIT OR RBLK 03710 > 03730 IFN MODE,< 03740 DATAI DC,@(P) ;READ COMMANDS. GET WORD TO CORE 03750 INOUT: JRST UWAIT2 ;INOUT-1 THRU INOUT+1 ARE DISPATCHED TO. 03760 DATAO DC,@(P) ;OUTPUT TO TAPE 03770 UWAIT2: JRST 0(P) ;RETURN TO CALLER OF UWAIT OR RBLK. 03780 > TENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032 PAGE 9 TD10 VERSION 077667 201100 000044 03810 ALTMD: MOVEI A,"$" 077670 265300 077471 03820 JSP P,TYO ;ALTMODE IS PRINTED AS "$" 03840 IFE MAGT,< 077671 302600 000053 03850 CAIE CH,"K"-40 ;FOR K, WRITE := 0 077672 306600 000044 03860 CAIN CH,"D"-40 ;FOR D, WRITE :=1 077673 343500 077672 03870 AOJLE WRITE,.-1 ;COUNT (WRITE) 03880 > 03900 IFN MAGT,< 03910 CAIN CH,"D"-40 ;FOR D, WRITE :=1 03920 AOJLE WRITE,.-1 ;COUNT (WRITE) 03930 JUMPG WRITE,DUMP ;D MEANS GO DUMP ON MAG TAPE 03940 > 077674 306600 000047 03960 CAIN CH,"G"-40 ;GO TO PROGRAM? 077675 254020 077454 03970 JRST @SADR ;YES. JUMP OUT 077676 306600 000046 03980 CAIN CH,"F"-40 ;FILE DIR PRINT? 077677 254000 077732 03990 JRST FDIR ;YES. PRINT FILE DIR OF THIS TAPE 077700 306600 000072 04000 CAIN CH,"Z"-40 ;ZERO DIRECTORY? 077701 254000 077721 04010 JRST ZDIR ;DISPATCH 077702 303600 000027 04020 CAILE CH,27 ;SKIP IF OCTAL NUMBER 077703 254000 077414 04030 JRST TYI ;NO. GO PROCESS FILE NAME 077704 242040 000003 04040 LSH B,3 ;CONVERT SIXBIT TO OCTAL 077705 246000 000003 04050 LSHC F,3 ;F+1=B 077706 326040 077704 04060 JUMPN B,.-2 ;MAY BE MORE THAN 1 DIGIT (START ADR) 077707 303000 000007 04070 CAILE F,7 ;SKIP IF ONE DIGIT 077710 267200 077451 04080 JRA D,JBLK ;D:=SADR. DISPATCH TO JBLK WHICH SAVES SADR. 077711 04090 OPNTP: ;SHIFT UNIT NUMBER LEFT FOR CONO 077711 242000 000011 04100 IFE MODE,<LSH F,11> 04110 IFN MODE,<LSH F,3> 077712 542000 077744 04120 HRRM F,TAPENO ;SAVE IN CORE 077713 201440 000144 04130 CLSTP: MOVEI BLKNO,^D100 ;BLK NO OF FILE DIR 077714 401540 000000 04140 SETZI PNTR,0 ;DONT CLOBBER DIRECTORY BYTE 077715 265300 077620 04150 JSP P,RBLK ;MOVE TO BLOCK 100 077716 255005 077377 04160 JFCL TAB+200(E) ;READ OR WRITE DIR TAB AS DETERMINED BY WRITE 077717 341240 077627 04170 AOJL E,UWAIT1 ;COUNT THE 200 WORDS 077720 254000 077402 04180 JRST BEG ;GO ASK FOR NEXT COMMAND 077721 200100 077757 04200 ZDIR: MOVE A,[XWD FOOF,TAB] ;FOOF IS CLEAR 077722 251100 077375 04210 BLT A,TAB+176 ;CLEAR DIRECTORY, EXCEPT LAST WORD FOR ID 077723 205100 757000 04220 MOVSI A,(36B4+36B9) ;RESERVE BLOCKS 1 & 2 077724 202100 077177 04230 MOVEM A,TAB ;IN DIRECTORY 077725 205100 017000 04240 MOVSI A,(36B9) 077726 202100 077215 04250 MOVEM A,TAB+16 ;BLK 100 (DIR) IS RESERVED TOO 077727 525100 000007 04260 HRLOI A,7 ;AND BLOCKS >1100 ARE EOT 077730 202100 077321 04270 MOVEM A,TAB+122 ;END OF BYTE TAB 077731 344500 077465 04280 AOJA WRITE,CLS1 ;SET WRITE TO OUTPUT 04290 ;AND DUMP BLK 100. TENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032 PAGE 10 TD10 VERSION 077732 211400 000026 04310 FDIR: MOVNI FILN,26 ;26 FILES (OCTAL) 077733 265300 077467 04320 FD2: JSP P,CRR ;CR-LF 077734 336150 077350 04330 FD3: SKIPN C,TAB+123+26(FILN) ;FIRST WORD OF NAME. IS IT BLANK? 077735 344140 077741 04340 AOJA C,FD1 ;YES. SET C=1 AND LOOP 077736 265700 077743 04350 JSP G,SIXBP ;PRINT FIRST WORD AND A SPACE 077737 510150 077376 04360 HLLZ C,TAB+151+26(FILN) ;SECOND WORD OF FILE NAME 077740 265700 077743 04370 JSP G,SIXBP ;PRINT AND CLEAR C 077741 341403 077733 04380 FD1: AOJL FILN,FD2(C) ;CAN JUMP TO FD2 OR FD3. COUNT FILES. 077742 254000 077402 04390 JRST BEG ;ALL FILES PRINTED OR BLANK. RETURN. 077743 201040 000007 04410 SIXBP: MOVEI B,7 ;SIXBP PRINTS C(C) IN 6BIT 04420 ;AND ADDS A TRAILING SPACE 04430 ;AND LEAVES (C)=0 077744 04450 TAPENO: ;USE ADR AS TEMP FOR CURRENT UNIT 077744 401100 000000 04460 SIXBP1: SETZI A,.-. ;CLEAR A 077745 246100 000006 04470 LSHC A,6 077746 271100 000040 04480 ADDI A,40 ;SIXBIT TO ASCII 077747 265300 077471 04490 JSP P,TYO ;TYPE OUT CHARACTER 077750 367040 077744 04500 SOJG B,SIXBP1 ;LOOP IF MORE CHARACTERS 077751 254016 000000 04510 JRST 0(G) ;RETURN 077752 000000 000000 04530 SPNT: 0 ;POINTER TO HEADERS IN CORE. 077753 04550 LIT 077753 000500 077176 077754 000040 000041 077755 077154 777761 077756 101200 077377 077757 077176 077177 04580 IFN MAGT,< 04590 SLOP: MOVE .+3 04600 MOVEM COMPTR 04610 JRST BEGR+1 04620 XWD 440700,.+1 04630 BYTE (7) "0",33,177 04640 LAST: JRST SLOP 04650 > 04660 IFE MAGT,< 000000 04670 SLOP=COMPTR-17-. ;THIS MANY WORDS BEFORE RESERVED AREA 04680 ;FOR COMMAND STRINGS. 04690 ;!!!!! NOTE: ABOVE PARAMETER MUST COME OUT POSITIVE IN 04700 ; ORDER TO MEET THE DOCUMENTATION OF RESERVED COMMAND STRING AREA. 04710 ; 04720 ; THIS MEANS ANY CODE ADDED MUST BE COMPENSATED FOR BY 04730 ; A CORRESPONDING TIGHTENING SOMEWHERE. GOOD LUCK. 04740 ; TENDMP IS VERY TIGHT ALREADY. 04750 > 077400 04770 END BEGR TENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032 PAGE 10-1 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 PAGE 11 SYMBOL TABLE 000133 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 TENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032 PAGE 11-1 SYMBOL TABLE MAGT 000000 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 RRRRRRRRRRRR IIIIIIIII MMM MMM 111 000000000 BBBBBBBBBBBB RRRRRRRRRRRR IIIIIIIII MMM MMM 111 000000000 BBBBBBBBBBBB RRRRRRRRRRRR IIIIIIIII MMM MMM 111 000000000 BBBBBBBBBBBB RRR RRR III MMMMMM MMMMMM 111111 000 000 BBB BBB RRR RRR III MMMMMM MMMMMM 111111 000 000 BBB BBB RRR RRR III MMMMMM MMMMMM 111111 000 000 BBB BBB RRR RRR III MMM MMM MMM 111 000 000000 BBB BBB RRR RRR III MMM MMM MMM 111 000 000000 BBB BBB RRR RRR III MMM MMM MMM 111 000 000000 BBB BBB RRRRRRRRRRRR III MMM MMM 111 000 000 000 BBBBBBBBBBBB RRRRRRRRRRRR III MMM MMM 111 000 000 000 BBBBBBBBBBBB RRRRRRRRRRRR III MMM MMM 111 000 000 000 BBBBBBBBBBBB RRR RRR III MMM MMM 111 000000 000 BBB BBB RRR RRR III MMM MMM 111 000000 000 BBB BBB RRR RRR III MMM MMM 111 000000 000 BBB BBB RRR RRR III MMM MMM 111 000 000 BBB BBB RRR RRR III MMM MMM 111 000 000 BBB BBB RRR RRR III MMM MMM 111 000 000 BBB BBB RRR RRR IIIIIIIII MMM MMM 111111111 000000000 BBBBBBBBBBBB RRR RRR IIIIIIIII MMM MMM 111111111 000000000 BBBBBBBBBBBB RRR RRR IIIIIIIII MMM MMM 111111111 000000000 BBBBBBBBBBBB 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 11:23:08 File: DSKB0 :RIM10B.LST [8,200] Created: 20-April-1967 11:21:00 Printed: 24-April-1978 11:22:33 QUEUE Switches: /PRINT:ARROW /FILE:ASCII /COPIES:1 /SPACING:1 /LIMIT:1508 File will be deleted after printing RIMIO PAGE 2 00020 TITLE RIMIO 00040 ;CONVERTS RIM10B PAPER TAPES TO DMP FILES AND VICE-VERSA 00060 EXTERN JOBSA,JOBREL,JOBSYM,JOBS41 000001 00080 A=1 000002 00090 B=2 000003 00100 C=3 000004 00110 D=4 000013 00120 CHK=13 000014 00130 BLK=14 000015 00140 LNG=15 000016 00150 R=16 000017 00160 P=17 000040 00180 PDLEN==40 000000' 00200 PDLIST: BLOCK PDLEN 000040' 00220 OFILE: BLOCK 5 ;OFILE+4 IS THE DEVICE. 000045' 00230 IFILE: BLOCK 5 ;IFILE+4 IS THE DEVICE 000052' 00240 OBUF: BLOCK 3 000055' 00250 IBUF: BLOCK 3 000060' 00270 DMPBUF: BLOCK 200 ;RANDOM ACCESS DUMP IO BUFFER. 000260' 000000 000000 00280 HILOC: 0 RIMIO PAGE 3 00300 ;ERRORS: 00320 NOENT: OUTSTR [ASCIZ/Enter to create output file failed. 000261' 000000 000551' 00330 /] 000262' 254000 000273' 00340 JRST BEGIN 00360 NOLALT: OUTSTR [ASCIZ/Lookup to read-alter the output file failed. 000263' 000000 000561' 00370 /] 000264' 254000 000273' 00380 JRST BEGIN 00400 NOALT: OUTSTR [ASCIZ/Enter to read-alter the output file failed. 000265' 000000 000573' 00410 /] 000266' 254000 000273' 00420 JRST BEGIN 00440 NOPTR: OUTSTR [ASCIZ/OPEN of device PTR: failed. 000267' 000000 000605' 00450 /] 000270' 254000 000273' 00460 JRST BEGIN 00480 NOOPEN: OUTSTR [ASCIZ/OPEN failed 000271' 000000 000613' 00490 /] 000272' 254000 000273' 00500 JRST BEGIN RIMIO PAGE 4 00530 ;INITIALIZATION, DISPATCH 000273' 000000 000000 00550 BEGIN: RESET 000274' 200740 000616' 00560 MOVE P,[IOWD PDLEN,PDLIST] 000275' 000000 000617' 00570 RORP: OUTSTR [ASCIZ/Read tape or Punch tape? (Type R or P) /] 000276' 000000 000001 00580 INCHWL A 000277' 260740 000307' 00590 PUSHJ P,CLRIN 000300' 620040 000040 00600 TRZ A,40 ;MAKE SURE IT'S UPPERCASE 000301' 306040 000122 00610 CAIN A,"R" 000302' 254000 000334' 00620 JRST RTAPE 000303' 306040 000120 00630 CAIN A,"P" 000304' 254000 000547' 00640 JRST PTAPE 00650 OUTSTR [ASCIZ/? 000305' 000000 000630' 00660 /] 000306' 254000 000275' 00670 JRST RORP 000307' 261740 000001 00690 CLRIN: PUSH P,A 000310' 302040 000175 00700 CLRIN1: CAIE A,175 000311' 306040 000012 00710 CAIN A,12 000312' 254000 000533' 00720 JRST APOPJ 000313' 000000 000001 00730 INCHWL A 000314' 254000 000310' 00740 JRST CLRIN1 00760 ;HERE'S HOW THE RIM10B LOADER LOOKS ON THE TAPE: 000104 00770 PTR==104 00780 ;AC 10 CONTAINS (WHEN 5 IS EXECUTED): 00790 ; SOJA 10,4 - INITIAL POINTER OR JRST WORD 00800 ; SOJA 10,3 - MIDDLE OF DATA BLOCK 00810 ; SOJA 10,2 - WHEN READING THE CHECKSUM WORD 00820 ; 000315' 777762 000000 00830 RIM10B: -16,,0 ; 0 INITIAL BLKI WORD 000316' 710600 000060 00840 CONO PTR,60 ; 1 START PTR IN BINARY MODE 000317' 541400 000004 00850 HRRI 10,4 ; 2 INITIALIZE 10 (FOR INDEX AND JUMP ADDR) 000320' 710740 000010 00860 CONSO PTR,10 ; 3 SKIP IF DONE 000321' 254000 000003 00870 JRST 3 ; 4 WAIT FOR DONE 000322' 710470 000007 00880 DATAI PTR,@7(10) ; 5 STORE DATA INDIRECT (13 OR 12 OR 11) 000323' 256010 000007 00890 XCT 7(10) ; 6 EXECUTES 13 OR 12 OR 11 000324' 256010 000012 00900 XCT 12(10) ; 7 EXECUTES 16 OR 15 OR 14 000325' 364400 000000 00910 SOJA 10,0 ;10 RH IS CLOBBERED TO 4 OR 3 OR 1 000326' 312740 000016 00920 CAME 17,16 ;11 XCTED TO CHECK CHECKSUM 000327' 270756 000001 00930 ADD 17,1(16) ;12 XCTED TO COMPUTE CHECKSUM 000330' 331740 000016 00940 SKIPL 17,16 ;13 XCT TO INITIALIZE CHECKSUM AND 00950 ; SKIP IF THIS IS AN AOBJN WORD 000331' 254200 000001 00960 JRST 4,1 ;14 XCT TO HALT IF CHECKSUM FAILS 000332' 253700 000003 00970 AOBJN 16,3 ;15 XCT WHILE READING MIDDLE OF DATA BLOCK 000333' 254000 000002 00980 JRST 2 ;16 XCTED BY READIN MODE. XCT TO START PRGM 00990 ;17 CHECKSUM IS STORED HERE. Q 000334' 01010 RIMPTR: RIM10B-.,,RIM10B-1 ;IOWD POINTER TO THE RIM10B LOADER RIMIO PAGE 5 01030 ;RTAPE 000334' 000000 000631' 01050 RTAPE: OUTSTR [ASCIZ/Output file name: /] 000335' 201700 000040' 01060 MOVEI R,OFILE 000336' 200040 000635' 01070 MOVE A,[OFILE,,OFILE+1] 000337' 402000 000040' 01080 SETZM OFILE 000340' 251040 000044' 01090 BLT A,OFILE+4 000341' 205040 445560 01100 MOVSI A,'DMP' 000342' 202040 000041' 01110 MOVEM A,OFILE+1 000343' 260740 000543' 01120 PUSHJ P,GETFIL ;READ FILE NAME FROM USER. 000344' 201040 000017 01140 MOVEI A,17 ;OPEN CHANNEL 000345' 336100 000044' 01150 SKIPN B,OFILE+4 000346' 205100 446353 01160 MOVSI B,'DSK' 000347' 201140 000000 01170 MOVEI C,0 000350' 050040 000001 01180 OPEN 1,A 000351' 254000 000271' 01190 JRST NOOPEN 000352' 200200 000636' 01200 MOVE D,[OFILE,,A] 000353' 251200 000004 01210 BLT D,D 000354' 077040 000001 01220 ENTER 1,A ;SELECT OUTPUT FILE. 000355' 254000 000261' 01230 JRST NOENT 000356' 070040 000000 01240 CLOSE 1, ;WRITE 0 LENGTH FILE. 000357' 071040 000000 01250 RELEAS 1, 000360' 201040 000017 01260 MOVEI A,17 ;RE-OPEN CHANNEL 000361' 336100 000044' 01270 SKIPN B,OFILE+4 000362' 205100 446353 01280 MOVSI B,'DSK' 000363' 201140 000000 01290 MOVEI C,0 000364' 050040 000001 01300 OPEN 1,A 000365' 254000 000271' 01310 JRST NOOPEN 000366' 200200 000636' 01320 MOVE D,[OFILE,,A] 000367' 251200 000004 01330 BLT D,D 000370' 076040 000001 01340 LOOKUP 1,A ;SEEK FILE WE JUST WROTE 000371' 254000 000263' 01350 JRST NOLALT ;I JUST WROTE ONE. WHERE IS IT? 000372' 200200 000636' 01360 MOVE D,[OFILE,,A] 000373' 251200 000004 01370 BLT D,D 000374' 077040 000001 01380 ENTER 1,A ;ENTER READ-ALTER MODE 000375' 254000 000265' 01390 JRST NOALT 000376' 041000 000013 01410 INIT 0,13 ;PTR IN BINARY MODE. 000377' 606462 000000 01420 'PTR ' 000400' 000000 000055' 01430 IBUF 000401' 254000 000267' 01440 JRST NOPTR 01460 OUTSTR [ASCIZ/Mount paper tape and type return when ready: 000402' 000000 000637' 01470 /] 000403' 201040 000000 01480 MOVEI A,0 000404' 260740 000307' 01490 PUSHJ P,CLRIN 000405' 200100 000334' 01510 MOVE B,RIMPTR 000406' 260740 000462' 01520 PUSHJ P,TREAD ;READ IOWD FOR TAPE'S LOADER 000407' 313042 000001 01530 CAMLE A,1(B) ;OK IF TAPE'S LOADER IS LONGER 000410' 254000 000454' 01540 JRST BADRIM ;BUT NOT IF SHORTER. 000411' 200140 000001 01550 MOVE C,A ;IOWD FOR TAPE'S LOADER RIMIO PAGE 5-1 000412' 270100 000651' 01560 ADD B,[1,,1] 000413' 260740 000462' 01570 RIMCHK: PUSHJ P,TREAD ; 000414' 312042 000001 01580 CAME A,1(B) 000415' 254000 000454' 01590 JRST BADRIM ;TAPE ISN'T IN RIM FORMAT. 000416' 270140 000651' 01600 ADD C,[1,,1] 000417' 253100 000413' 01610 AOBJN B,RIMCHK ;LOOP, GOBBLING THE RIM10B LOADER. 000420' 327140 000423' 01620 JUMPG C,RIMOK ;JUMP IF TAPE'S IOWD IS COUNTED OUT 000421' 260740 000462' 01630 PUSHJ P,TREAD ;READ AND THROW OUT EXTRA WORDS 000422' 253140 000421' 01640 AOBJN C,.-1 ;FROM THE TAPE'S LOADER. 000423' 260740 000524' 01650 RIMOK: PUSHJ P,FILINI 000424' 260740 000462' 01660 GETBLK: PUSHJ P,TREAD 000425' 331100 000001 01670 SKIPL B,A ;SKIP IF THIS IS A POINTER WORD 000426' 254000 000443' 01680 JRST SSTART ;SET STARTING ADDRESS 000427' 200540 000002 01690 MOVE CHK,B ;INITIALIZE CHECKSUM 000430' 260740 000462' 01700 RIMLP: PUSHJ P,TREAD 000431' 270540 000001 01710 ADD CHK,A 000432' 260740 000473' 01720 PUSHJ P,FILSTR ;STORE IN FILE. DATA A IN LOC 1(B) 000433' 253100 000430' 01730 AOBJN B,RIMLP ;LOOP 000434' 260740 000462' 01740 PUSHJ P,TREAD ;READ CHECKSUM WORD 000435' 316040 000013 01750 CAMN A,CHK 000436' 254000 000424' 01760 JRST GETBLK ;GET ANOTHER IOWD. 01770 OUTSTR [ASCIZ/Checksum failure. 000437' 000000 000652' 01780 /] 000440' 254200 000424' 01790 HALT GETBLK 01810 UNEOF: OUTSTR [ASCIZ/Unexpected End of File from PTR: 000441' 000000 000656' 01820 /] 000442' 201040 000000 01830 MOVEI A,0 ;STORE ZERO FOR THE STARTING ADDRE. 000443' 200100 000260' 01840 SSTART: MOVE B,HILOC ;GET HIGHEST LOC LOADED. 000444' 505042 000001 01850 HRLI A,1(B) ;ONE BEYOND IS INITIAL JOBFF 000445' 201100 777777* 01860 MOVEI B,JOBSA-1 000446' 260740 000473' 01870 PUSHJ P,FILSTR 000447' 260740 000535' 01880 PUSHJ P,FILFRC 000450' 070040 000000 01890 CLOSE 1, 000451' 071040 000000 01900 RELEAS 1, 000452' 071000 000000 01910 RELEAS 0, 000453' 254000 000273' 01920 JRST BEGIN 01940 BADRIM: OUTSTR [ASCIZ/Bad format RIM10B loader at the front of the tape? 000454' 000000 000665' 01950 /] 000455' 254000 000273' 01960 JRST BEGIN 01980 PTRERR: OUTSTR [ASCIZ/PTR input error 000456' 000000 000700' 01990 /] 000457' 062000 000001 02000 GETSTS 0,A 000460' 254200 000461' 02010 HALT .+1 000461' 060000 000010 02020 SETSTS 0,10 000462' 373000 000057' 02030 TREAD: SOSLE IBUF+2 000463' 254000 000471' 02040 JRST TRED1 000464' 066000 000000 02050 INPUT 0, 000465' 063000 020000 02060 STATZ 0,20000 02070 JRST [POP P,(P) 000466' 254000 000704' 02080 JRST UNEOF] RIMIO PAGE 5-2 000467' 063000 740000 02090 STATZ 0,740000 000470' 254000 000456' 02100 JRST PTRERR 000471' 134040 000056' 02110 TRED1: ILDB A,IBUF+1 000472' 263740 000000 02120 POPJ P, 000473' 201142 000001 02140 FILSTR: MOVEI C,1(B) ;C?ABSOLUTE ADDRESS. 000474' 306140 000036 02150 CAIN C,36 ;EXEC MODE JOBSYM? 000475' 201140 000000* 02160 MOVEI C,JOBSYM 000476' 306140 000041 02170 CAIN C,41 ;UUO TRAP? 000477' 201140 000000* 02180 MOVEI C,JOBS41 ;YES. HERE'S WHERE IT BELONGS IN DMP FORMAT 000500' 313140 000260' 02190 CAMLE C,HILOC ;IS THIS HIGHEST LOC LOADED THUS FAR? 000501' 202140 000260' 02200 MOVEM C,HILOC ;YES. SAVE HIGHEST LOC LOADED. 000502' 275140 000074 02210 SUBI C,74 ;OFFSET TO DMP FILE ORIGIN=WORD # IN FILE. 000503' 321140 000534' 02220 JUMPL C,CPOPJ ;RETURN IF OFF THE FRONT. 000504' 231140 000200 02230 IDIVI C,200 ;BLOCK NUMBER-1 IN C, WORD NUMBER IN D. 000505' 271140 000001 02240 ADDI C,1 ;THIS IS THE USET POINTER 000506' 306154 000000 02250 CAIN C,(BLK) ;SAME AS WHAT'S IN CORE? 000507' 254000 000522' 02260 JRST FILST2 ;YES. - THIS IS THE EASY CASE. 000510' 260740 000535' 02270 FILST0: PUSHJ P,FILFRC ;FORCE CURRENT RECORD OUT. ADVANCE TO NEXT 000511' 307155 000000 02280 CAIG C,(LNG) ;IS DESIRED RECORD WITHIN EXISTING FILE? 000512' 254000 000515' 02290 JRST FILST1 ;YES. READ IT (UNLESS THE LAST RECORD) 000513' 201615 000000 02300 MOVEI BLK,(LNG) ;SET TO APPEND A ZERO RECORD TO THE FILE. 000514' 254000 000510' 02310 JRST FILST0 000515' 201603 000000 02330 FILST1: MOVEI BLK,(C) ;MAKE DESIRED RECORD THE CURRENT RECORD 000516' 301615 000000 02340 CAIL BLK,(LNG) ;IS THIS THE NON-EX RECORD AT END OF FILE? 000517' 254000 000522' 02350 JRST FILST2 ;YES. WE CAN'T (AND DON'T NEED TO) READ IT. 000520' 074054 000000 02360 USETI 1,(BLK) 02370 INPUT 1,[-200,,DMPBUF-1 000521' 066040 000706' 02380 0] 000522' 202044 000060' 02390 FILST2: MOVEM A,DMPBUF(D) ;STORE DATA 000523' 263740 000000 02400 POPJ P, 000524' 201600 000001 02420 FILINI: MOVEI BLK,1 ;REC # THAT IS "IN CORE". 000525' 201640 000001 02430 MOVEI LNG,1 ;RECORD NUMBER OF EOF 000526' 402000 000260' 02440 SETZM HILOC ;HIGHEST LOCATION LOADED 000527' 402000 000060' 02450 FILCLR: SETZM DMPBUF 000530' 261740 000001 02460 PUSH P,A 000531' 200040 000710' 02470 MOVE A,[DMPBUF,,DMPBUF+1] 000532' 251040 000257' 02480 BLT A,DMPBUF+177 000533' 262740 000001 02490 APOPJ: POP P,A 000534' 263740 000000 02500 CPOPJ: POPJ P, 000535' 075054 000000 02520 FILFRC: USETO 1,(BLK) ;SELECT OUTPUT RECORD ALWAYS 02530 OUTPUT 1,[-200,,DMPBUF-1 ;WRITE CURRENT RECORD. 000536' 067040 000706' 02540 0] 000537' 271600 000001 02550 ADDI BLK,1 000540' 315640 000014 02560 CAMGE LNG,BLK 000541' 200640 000014 02570 MOVE LNG,BLK ;INCREASE LNG IF INCREASING FILE. 000542' 254000 000527' 02580 JRST FILCLR ;NEXT RECORD NUMBER RIMIO PAGE 6 02600 ;THINGS TO WRITE LATER: 000543' 200040 000711' 02620 GETFIL: MOVE A,['RIMOUT'] 000544' 202056 000000 02630 MOVEM A,(R) 02640 OUTSTR [ASCIZ/RIMOUT.DMP 000545' 000000 000712' 02650 /] 000546' 263740 000000 02660 POPJ P, 02680 PTAPE: OUTSTR [ASCIZ/Not ready. 000547' 000000 000715' 02690 /] 000550' 254000 000273' 02700 jrst begin 000273' 02720 END BEGIN 000551' 427356 462744 000552' 203515 720306 000553' 713134 172312 000554' 203376 572340 000555' 727504 063322 000556' 663124 063302 000557' 647314 562134 000560' 064240 000000 000561' 463375 765752 000562' 701016 467500 000563' 713134 162132 000564' 607316 462744 000565' 203515 062500 000566' 677536 470352 000567' 721014 664730 000570' 625014 660722 000571' 663134 427032 000572' 050000 000000 000573' 427356 462744 000574' 203515 720344 000575' 627034 426702 000576' 663514 571100 000577' 723214 520336 000600' 727516 072750 000601' 203155 166312 000602' 203154 164730 000603' 627105 606424 000604' 000000 000000 000605' 476410 547100 000606' 677144 062312 000607' 733234 362500 000610' 502512 235100 000611' 633035 166312 000612' 621341 505000 000613' 476410 547100 000614' 633035 166312 000615' 620321 200000 000616' 777740 777777' 000617' 513134 162100 000620' 723036 062500 RIMIO PAGE 6-1 000621' 677444 050352 000622' 673075 020350 000623' 607414 537500 000624' 201212 474740 000625' 625012 220336 000626' 711012 024500 000627' 200000 000000 000630' 374321 200000 000631' 477536 470352 000632' 721014 664730 000633' 625015 660732 000634' 625644 000000 000635' 000040' 000041' 000636' 000040' 000001 000637' 467376 567350 000640' 203414 170312 000641' 711016 460740 000642' 625014 167310 000643' 203517 170312 000644' 203454 572352 000645' 713344 073720 000646' 627344 071312 000647' 607117 135032 000650' 050000 000000 000651' 000001 000001 000652' 417214 561726 000653' 717535 520314 000654' 607235 472744 000655' 625341 505000 000656' 527354 574340 000657' 627076 462710 000660' 202135 662100 000661' 677144 043322 000662' 663124 063344 000663' 677324 050250 000664' 511641 505000 000665' 413034 420314 Spooler runtime 0 Seconds, 0 KCS, 2734 disk reads, 85 disk writes, 1132 pages ***END*** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****     ***END*** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****     ***END*** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****     ***END*** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****     ***END*** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****     ***END*** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****     ***END*** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****     ***END*** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****     ***END*** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****     ***END*** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****     ***END*** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****     ***END*** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****     ***END*** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****     ***END*** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****     ***END*** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****     ***END*** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****     ***END*** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****     ***END*** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****     ***END*** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****     ***END*** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****     ***END*** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****     ***END*** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****     ***END*** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****     ***END*** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****     ***END*** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****     ***END*** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****     ***END*** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****     ***END*** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****     ***END*** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****     ***END*** Name: M310 Address: **** UNKNOWN **** CDRSER-157 24-April-1978 11:22:34 Address: **** UNKNOWN ****