7 22_= #BAS LOADPOST,0 15 23DW ...#SEG LOADERPM86 [M.C.D. MANN 18 23HF ...# ######################################################## 4 23L4 ...# 16 23NM ...# (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1982 4 23R= ...# 18 23TT ...# ######################################################### 14 23YG #OPT K0LOADERPM=K0LOADER>K0KERNEL>K0ALLGEO 7 24D6 #LIS K0LOADERPM 4 24XQ # 4 25CB # 4 25X2 # 16 26BL # THIS SEGMENT IS ENTERED BY EXECUTIVE (VIA K0) 17 26W= # AT K1LOADERPM WHENEVER A SYSTEM ERROR IS DETECTED 11 27*W # DURING EXECUTION OF LOADER 4 27TG # 4 28*6 # 4 28SQ # 4 29#B # 16 29S2 # DATA WORDS FOR USE BY THE POST-MORTEM ROUTINES 4 2=?L # 19 2=R= JLXX 0 [TO CONTAIN ACCUMULATORS ... 19 2?=W #REP 7 [ ... AFTER A SYSTEM ERROR 7 2?QG 0 20 2#=6 JLINSTR 0 [TO CONTAIN ILLEGAL INSTR ADDRESS 20 2#PQ 0 [TO CONTAIN ILLEGAL INSTRUCTION 16 2*9B OPMSTOP BRN OPMSTOP [FOR PLUGGING K0 5 2*P2 OPMTYPES 9 2B8L 4H00NO 8 2BN= 4H00N 9 2C7W 4H00YE 8 2CMG 4H00Y 9 2D76 4H00LI 8 2DLQ 4H00L 9 2F6B 4H00MI 8 2FL2 4H00M 9 2G5L 4H00LS 9 2GK= 4H00LL 9 2H4W 4H00MS 9 2HJG 4H00ML 9 2J46 4H00DU 8 2JHQ 4H00D 9 2K3B 4H00LD 9 2KH2 4H00MD 9 2L2L 4H00RI 9 2LG= 4H00XL 6 2L_W OPMTYPEND 21 2MFG #GAP 4 [FOR FURTHER TYPES TO BE MENDED IN 6 2M_6 OPMBRNTAB 10 2NDQ BRN PMNO 10 2NYB BRN PMNO 10 2PD2 BRN PMYES 10 2PXL BRN PMYES 10 2QC= BRN PMLS 10 2QWW BRN PMLS 10 2RBG BRN PMLS 10 2RW6 BRN PMLS 10 2S*Q BRN PMLS 10 2STB BRN PMLS 10 2T*2 BRN PMLS 10 2TSL BRN PMLS 10 2W#= BRN PMD 10 2WRW BRN PMD 10 2X?G BRN PMD 10 2XR6 BRN PMD 10 2Y=Q BRN PMRI 10 2YQB BRN PMXL 21 2_=2 #GAP 4 [TO CORRESPOND WITH THE PM TYPE TABLE 17 2_PL OPMLPTYPE 2 [INTERNAL TYPE OF LP 20 329= ...OPMENDGEO +K19 [LAST WORD OF GEORGE TO BE PRINTED 21 32NW OPMCONTYPE #77 [INTERNAL TYPE OF OPERATOR'S CONSOLE 8 338G OPMCOMMA #34 8 33N6 OPMTEN 10 8 347Q OPMSP #20 17 34MB OPMLPNO -1 [UNIT NUMBER OF LP 8 3572 OPMSPACES 4H 17 35LL OPMINBUFF 8H [CONSOLE INPUT BUFFER 19 366= OPMBUFF 52H000A * * * 21 36KW 52H * * * * * 8 375G 17H 19 37K6 OPMCNTRL1 +OPMBUFF.3 [POINTER TO PRINTER BUFFER 10 384Q OPMHEAD 8H000AGEOR 5 38JB #SKI G4 9 3942 4HGE 4 5 39HL #SKI G3 9 3=3= 4HGE 3 15 3=GW 28H LOADER POST-MORTEM MARK 0 I 9 3?2G #OPT JLMARK=0?+37?-1 8 3?G6 #FID 6,11,+G4MARK 9 3?_Q 8HSSUE 00 9 3#FB #OPT JLISSUE=0?+37?-1 9 3#_2 #FID 6,11,+G3ISSUE/10 12 3*DL #FID 12,17,+G3ISSUE-(G3ISSUE/10*10) 9 3*Y= 8H DATE: 12 3BCW OPMDATE 16H TIME: 8 3BXG OPMTIME 8H 10 3CC6 OPMCNTRL2 +OPMHEAD.3 8 3CWQ OPMLPCNT 77 10 3DBB OPMCNTRL3 +OPMBROKE.3 4 3DW2 # 20 3F*L # PSEUDO-ACTIVITY BLOCK FOR OPERATOR'S CONSOLE AND LINE PRINTER 4 3FT= # 11 3G#W #REP CPPTR-CHAINADD+1 7 3GSG 0 19 3H#6 [DEVICE LIST POINTERS FOR: 16 3HRQ OPMCON 0 [CENTRAL CONSOLE 15 3J?B 0 [ REPLY WORD 17 3JR2 OPMLP 0 [CENTRAL LINE PRINTER 15 3K=L 0 [ REPLY WORD 18 3KQ= OPMX1 0 [FOR USE BY OCTAL ROUTINE 7 3L9W OPMX3 0 19 3LPG OPMPRLINK 0 [LINK FOR OPMPRINT ROUTINE 18 3M96 OPMINLINK 0 [LINK FOR OINCON ROUTINE 18 3MNQ OPMOUTLINK 0 [LINK FOR OUTCON ROUTINE 18 3N8B OPMLPLINK 0 [LINK FOR OUTLP ROUTINE 20 3NN2 OPMFIN 0 [LAST CORE ADDRESS TO BE PRINTED 16 3P7L ...OPMLAST 18*1024 [LENGTH OF LOADER 16 3PM= ...OPMK18 -K42 [LOADER'S CORE DATUM 9 3Q6W XK9PERSEC 1000/K9 19 3QLG XECTIME +K30+K72 [TIME IN K9'S SINCE MIDNIGHT 20 3R66 XECDATE +K30+K70 [DATE IN DAYS SINCE 31.12.1899 19 3RKQ YEARS 73050 [DATES < 2100 ONLY ALLOWED 19 3S5B TSFTF 365*4+1 [DIVISION CONSTANT FOR YEARS 8 3S*8 ...XK18 +K18 4 3SK2 # 15 3T4L # LIST OF THE NUMBER OF DAYS IN EACH MONTH 4 3TJ= # 7 3W3W 0 14 3WHG NDAYS 31 [JANUARY 19 3X36 -1 [FEBRUARY-SPECIAL (28 OR 29) 14 3XGQ 31 [MARCH 14 3Y2B 30 [APRIL 13 3YG2 31 [MAY 13 3Y_L 30 [JUNE 13 3_F= 31 [JULY 14 3_YW 31 [AUGUST 15 42DG 30 [SEPTEMBER 14 42Y6 31 [OCTOBER 14 43CQ 30 [NOVEMBER 14 43XB 31 [DECEMBER 4 44C2 # 16 44WL # LIST OF THREE CHARACTER NAMES FOR EACH MONTH 4 45B= # 9 45TW NAME 4HN JA 9 46*G 4HB FE 9 46T6 4HR MA 9 47#Q 4HR AP 9 47SB 4HY MA 9 48#2 4HN JU 9 48RL 4HL JU 9 49?= 4HG AU 9 49QW 4HP SE 9 4==G 4HT OC 9 4=Q6 4HV NO 9 4?9Q 4HC DE 4 4?PB # 11 4#92 # VARIOUS CONSOLE MESSAGES 4 4#NL # 15 4*8= OPMINTRO 26,26H_*_*LOADER POST-MORTEM_*_* 11 4*MW OPMBROKE 82,12H BROKE IN 5 4B7G #SKI G4 9 4BM6 4HGEO4 5 4C6Q #SKI G3 9 4CLB 4HGEO3 18 4D62 OPMBR1 40H LOADER AT ADDRESS * _* OBEYING 14 4DKL OPMBR2 26H GEOERR _* 10 4F5= OPMFC 12HFIXED CORE 9 4FJW OPMINSTR 8H INSTR 15 4G4G OPMQUESTN 25,25H_* POST-MORTEM REQUIRED? 15 4GJ6 OPMTYPEQ 26,26H_*_* TYPE OF POST-MORTEM? 19 4H3Q OPMNODUMP 75,43H_*_* PM DUMP NOT AVAILABLE DURING LOADER_* 16 4HHB 32H PM TO PRINTER TAKES 40 SECONDS 10 4J32 OPMOK 8,8H OK_*_* 11 4JGL OPMCANCEL 10,10H CANCEL_* 13 4K2= OPMXX 18,18H X0= * _* 16 4KFW OPMFIX 28,28H_* PLEASE ENGAGE LP _*_* 16 4K_G OPMNOTLP 29,29H UNIT IS NOT A PRINTER_* 14 4LF6 OPMWRONG 23,23H UNIT IS WRONGED_* 17 4LYQ OPMFINISH 32,32H_*_*POST-MORTEM FINISHED_*_*_*_* 14 4MDB OPMNOLP 21,21H NO LP AVAILABLE_*_* 11 4MY2 OPMFAIL 11,11H LP FAIL_* 4 4NCL # 19 4NX= # SUBROUTINE TO INPUT A MESSAGE FROM THE CONSOLE TO OINBUFF 12 4PBW # EXIT 1 - OK ; EXIT 0 - FAILED 4 4PWG # 5 4QB6 OINCON 15 4QTQ STO 0 OPMINLINK(2) [SAVE LINK 16 4R*B LDX 4 OPMSPACES(2) [SPACEFILL ... 18 4RT2 STO 4 OPMINBUFF(2) [ ... INPUT BUFFER 11 4S#L STO 4 OPMINBUFF+1(2) 20 4SS= LDX 3 OPMCON(2) [OPERATOR'S CONSOLE DL POINTER 14 4T?W LDN 4 8 [COUNT 10 4TRG DCA 3,STO,4,COUNT 15 4W?6 LDN 4 0 [READ MODE 10 4WQQ DCA 3,STO,4,MODE 18 4X=B LDN 4 OPMINBUFF(2) [ADDRESS OF INPUT BUFFER 10 4XQ2 DCA 3,STO,4,CTSA 19 4Y9L LDN 1 OPMCON-CPPTR(2) [ -> PSEUDO ACTIVITY BLOCK 17 4YP= GPERI 3,1,NC [INITIATE TRANSFER 17 4_8W OIN1 JBUSY 3,OIN1 [WAIT FOR TERMINATION 9 4_DN ... LDX 0 CPRW1(1) 7 4_NG ... SLL 0 3 15 4_Y# ... BNG 0 OIN2 [J IF FAILED 16 5286 LDX 0 OPMCON+1(2) [GET REPLY WORD 7 52MQ SLC 0 4 18 537B BPZ 0 OIN3 [J IF INPUT SUCCESSFUL 19 53M2 LDN 1 OPMCANCEL(2) [REPLY CANCELLED OR TOO LONG 19 546L CALL 0 OUTCON [CANCEL MESSAGE TO CONSOLE 15 54L= OIN2 LDX 0 OPMINLINK(2) [RESTORE LINK 16 555W EXIT 0 0 [EXIT: FAILED 15 55KG OIN3 LDX 0 OPMINLINK(2) [RESTORE LINK 15 5656 EXIT 0 1 [EXIT: OK 4 56JQ # 19 574B # SUBROUTINE TO OUTPUT A MESSAGE TO THE OPERATOR'S CONSOLE 18 57J2 # MESSAGE POINTED TO BY X1 ON ENTRY - CALLED VIA X0 9 583L # USES X1, X3 AND X4 4 58H= # 5 592W OUTCON 15 59GG STO 0 OPMOUTLINK(2) [SAVE LINK 20 5=26 LDX 3 OPMCON(2) [OPERATOR'S CONSOLE DL POINTER 14 5=FQ LDX 4 0(1) [COUNT 10 5=_B DCA 3,STO,4,COUNT 18 5?F2 LDN 4 1(1) [CORE ADDRESS OF MESSAGE 10 5?YL DCA 3,STO,4,CTSA 15 5#D= LDN 4 1 [WRITE MODE 10 5#XW DCA 3,STO,4,MODE 19 5*CG LDN 1 OPMCON-CPPTR(2) [ -> PSEUDO ACTIVITY BLOCK 17 5*X6 TC1 GPERI 3,1,NC [INITIATE TRANSFER 17 5BBQ TC2 JBUSY 3,TC2 [WAIT FOR TERMINATION 16 5BWB LDX 4 OPMCON+1(2) [GET REPLY WORD 8 5CB2 SRL 4 18 17 5CTL BNZ 4 TC1 [FAILURE...TRY AGAIN 15 5D*= LDX 0 OPMOUTLINK(2) [RESTORE LINK 15 5DSW EXIT 0 0 [TRANSFER OK 4 5F#G # 16 5FS6 # SUBROUTINE TO PRINT A LINE ON THE LINE PRINTER 14 5G?Q # USES X1, X3 AND X4 - CALLED VIA X0 15 5GRB # EXIT 0 - TRANSFER FAILURE ; EXIT 1 - OK 4 5H?2 # 5 5HQL OUTLP 15 5J== STO 0 OPMLPLINK(2) [SAVE LINK 18 5JPW LDX 3 OPMLP(2) [LP DEVICE LIST POINTER 10 5K9G TL1 LDX 4 OPMLPCNT(2) 16 5KP6 DCA 3,STO,4,COUNT [CHARACTER COUNT 10 5L8Q LDX 4 OPMCNTRL2(2) 15 5LNB DCA 3,STO,4,CTSA [PRINT BUFFER 17 5M82 JDISENG 3,TL4 [J IF LP NOT ENGAGED 19 5MML LDN 1 OPMLP-CPPTR(2) [ -> PSEUDO ACTIVITY BLOCK 17 5N7= GPERI 3,1,NC [INITIATE TRANSFER 17 5NLW TL2 JBUSY 3,TL2 [WAIT FOR TERMINATION 9 5NWN ... LDX 0 CPRW1(1) 7 5P6G ... SLL 0 3 17 5PB# ... BNG 0 TL3 [J IF TRANSFER FAILED 15 5PL6 LDX 0 OPMLPLINK(2) [RESTORE LINK 15 5Q5Q EXIT 0 1 [TRANSFER OK 15 5QKB TL3 LDX 0 OPMLPLINK(2) [RESTORE LINK 16 5R52 EXIT 0 0 [TRANSFER FAILURE 16 5RJL TL4 LDN 1 OPMFIX(2) [FIX MESSAGE ... 18 5S4= CALL 0 OUTCON [ ... TO THE CONSOLE 19 5SHW LDX 3 OPMLP(2) [RELOAD DEVICE LIST POINTER 18 5T3G TL5 JDISENG 3,TL5 [WAIT FOR PRINTER ENGAGE 16 5TH6 BRN TL1 [AND TRY AGAIN 4 5W2Q # 21 5WGB # SUBROUTINE TO STORE THE OCTAL EQUIVALENT OF X5 IN THE TWO WORDS 19 5X22 # POINTED TO BY X1 - USES X4 AND X5 - CALLED VIA X0 4 5XFL # 5 5X_= OCTAL 14 5YDW STO 1 OPMX1(2) [SAVE X1 14 5YYG STO 3 OPMX3(2) [SAVE X3 17 5_D6 LDN 3 8 [8 OCTAL CHARACTERS 7 5_XQ TOC1 LDN 4 0 16 62CB SLL 45 3 [GET A CHARACTER 18 62X2 DCH 4 0(1) [AND PUT IT IN THE BUFFER 18 63BL BCHX 1 / [INCREMENT BUFFER POINTER 19 63W= BCT 3 TOC1 [AND REPEAT FOR 8 CHARACTERS 15 64*W LDX 3 OPMX3(2) [RESTORE X3 15 64TG LDX 1 OPMX1(2) [RESTORE X1 7 65*6 EXIT 0 0 4 65SQ # 16 66#B # SUBROUTINE TO DUMP CORE TO THE LINE PRINTER 19 66S2 # ON ENTRY, X6 : START ADDRESS AND OPMFIN(2) : END ADDRESS 8 67?L # CALLED VIA X0 4 67R= # 5 68=W OPMPRINT 15 68QG STO 0 OPMPRLINK(2) [SAVE LINK 20 69=6 PMPR1 LDX 5 6 [START ADDRESS OF THIS PRINT LINE 18 69PQ LDN 1 OPMBUFF+1(2) [ ... TO PRINT BUFFER 16 6=9B CALL 0 OCTAL [ ... IN OCTAL 19 6=P2 LDN 7 8 [8 CORE WORDS PER PRINT LINE 20 6?8L LDN 1 OPMBUFF+5(2) [PRINT BUFFER POINTER TO 1ST WORD 20 6?N= LDX 3 6 [FIRST WORD TO BE PRINTED ON LINE 19 6#7W LDN 0 7 [CHECK FOR ALL 8 WORDS ZERO 7 6#MG PMPR2 SMO 0 8 6*76 LDX 5 0(3) 19 6*LQ BNZ 5 PMPR3 [J IF THIS ONE IS NON-ZERO 16 6B6B BCT 0 PMPR2 [CHECK NEXT WORD 8 6BDR ... LDX 5 0(3) 20 6BR8 ... BZE 5 PMPR5 [ALL 8 ARE ZERO - DON'T PRINT 18 6C5L PMPR3 LDX 5 0(3) [PICK UP THE CORE WORD 20 6CK= CALL 0 OCTAL [CONVERT TO OCTAL IN PRINT BUFFER 20 6D4W ADN 1 3 [INCREMENT PRINT BUFFER POINTER 18 6DJG ADN 3 1 [ ... AND CORE POINTER 18 6F46 BCT 7 PMPR3 [REPEAT FOR 8 CORE WORDS 17 6FHQ PMPR4 CALL 0 OUTLP [AND PRINT THE LINE 19 6G3B BRN PMPR6 [FAILURE DURING THE TRANSFER 18 6GH2 PMPR5 ADN 6 8 [INCREMENT CORE POINTER 18 6H2L TXL 6 OPMFIN(2) [ANY MORE TO BE PRINTED? 20 6HG= BCS PMPR1 [YES - CONTINUE WITH NEXT LINE 17 6H_W LDX 0 OPMPRLINK(2) [NO - RELOAD LINK 7 6JFG EXIT 0 0 16 6J_6 PMPR6 LDX 4 OPMLP+1(2) [GET REPLY WORD 8 6KDQ SRL 4 18 17 6KYB BNZ 4 PMPR9 [J IF REAL FAILURE 19 6LD2 PMPR7 LDN 1 OPMFIX(2) [OTHERWISE, FIX MESSAGE ... 18 6LXL CALL 0 OUTCON [ ... TO CONSOLE 18 6MC= LDX 1 OPMLP(2) [LP DEVICE LIST POINTER 15 6MWW PMPR8 JDISENG 1,PMPR8 [WAIT FOR FIX 16 6NBG BRN PMPR4 [AND TRY AGAIN 17 6NW6 PMPR9 LDN 1 OPMFAIL(2) [FAIL MESSAGE ... 18 6P*Q CALL 0 OUTCON [ ... TO CONSOLE 16 6PTB BRN PMPR7 [AND TRY AGAIN 4 6Q*2 # 20 6QSL # SUBROUTINE USED BY ROUTINE WHICH CONVERTS EXECUTIVE'S TIME IN 18 6R#= # K9 CLOCK INTERRUPTS SINCE MIDNIGHT INTO CHARACTER FORM 4 6RRW # 5 6S?G RAGEN 7 6SR6 STO 5 6 8 6T=Q DVS 5 0(3) 7 6TQB STO 6 7 9 6W=2 SEND DVS 6 OPMTEN(2) 8 6WPL DCH 7 0(1) 7 6X9= BCHX 1 / 8 6XNW DCH 6 0(1) 7 6Y8G BCHX 1 / 7 6YN6 EXIT 3 1 4 6_7Q # 4 6_MB # 12 7272 # LOADER POST-MORTEM ENTRY POINT 4 72LL # 4 736= # 6 73KW K1LOADERPM 4 745G # 16 74K6 STO 2 K0 [TEMPORARILY ONLY 17 754Q CALL 2 / [DATUMISE LOADER ... 18 75JB SBN 2 K1LOADERPM+2 [ ... POST-MORTEM 13 7642 STO 0 JLXX(2) [SAVE 14 76HL STO 1 JLXX+1(2) [ ALL 20 773= LDX 0 K0 [ ACCUMULATORS IN JLXX 9 77GW STO 0 JLXX+2(2) 7 782G LDN 0 3 9 78G6 LDN 1 JLXX+3(2) 7 78_Q MOVE 0 5 9 793_ ... LDX 1 BK18X 8 7968 ... BNZ 1 XOK 8 798C ... LDX 1 XK18 9 79=L ... STO 1 BK18X 10 79#T ...XOK ADS 1 OPMENDGEO(2) 10 79C4 ... ADS 1 OPMK18(2) 20 79FB LDX 1 GONRDUMP [GET ILLEGAL INSTRUCTION ADDRESS 15 79_2 SBN 1 1 [CORRECT IT 15 7=DL STO 1 JLINSTR(2) [AND SAVE IT 18 7=Y= LDX 1 0(1) [GET ILLEGAL INSTRUCTION 16 7?CW STO 1 JLINSTR+1(2) [AND SAVE IT TOO 17 7?XG LDX 0 OPMSTOP(2) [PLUG K0 IN CASE OF 18 7#C6 STO 0 K0 [SYSTEM ERRORS DURING PM 21 7#WQ FINDPEREC 1,APFOTY,OPMCONTYPE(2),PM1 [SEARCH FOR CENTRAL CONSOLE 18 7*BB BPZ 1 PM3 [J IF CONSOLE AVAILABLE 17 7*W2 PM2 BRN PM2 [OTHERWISE LOOP STOP 20 7B*L PM3 JWRONG 1,PM1 [IF CONSOLE WRONGED, TRY NEXT ONE 21 7BT= STO 1 OPMCON(2) [SAVE CONSOLE'S DEVICE LIST POINTER 19 7C#W LDN 1 OPMINTRO(2) [PM INTRODUCTORY MESSAGE ... 18 7CSG CALL 0 OUTCON [ ... TO CONSOLE 19 7D#6 LDX 5 JLINSTR+1(2) [IS ILLEGAL INSTRUCTION ... 7 7DRQ SLL 5 3 16 7F?B SRL 5 17 [ ... A GEOERR? 8 7FR2 SBN 5 #170 13 7G=L BNZ 5 PM3A [NO 13 7GQ= LDX 4 JLINSTR(2) [YES 17 7H9W ADN 4 1 [INSERT GEOERR ... 18 7HPG LDN 5 OPMBR2+2(2) [ ... INFORMATION CODE 18 7J96 MOVE 4 2 [ ... IN BROKE MESSAGE 8 7JNQ BRN PM3B 16 7K8B PM3A LDN 4 OPMINSTR(2) [MOVE ^INSTR^ ... 18 7KN2 LDN 5 OPMBR2(2) [ ... TO BROKE MESSAGE 7 7L7L MOVE 4 2 20 7LM= LDN 1 OPMBR2+2(2) [CONVERT ILLEGAL INSTRUCTION ... 10 7M6W LDX 4 JLINSTR+1(2) 7 7MLG LDN 3 0 7 7N66 LDN 5 0 7 7NKQ SLC 34 3 8 7P5B SRC 45 23 7 7PK2 LDN 6 3 21 7Q4L P1 STO 4 7 [ ... INTO A READABLE FORMAT ... 7 7QJ= ANDN 7 7 8 7R3W DCH 7 0(1) 7 7RHG BCHX 1 / 7 7S36 SLC 45 3 8 7SGQ BCT 6 P1 7 7T2B BCHX 1 / 8 7TG2 DCH 3 0(1) 7 7T_L BCHX 1 / 7 7WF= BCHX 1 / 7 7WYW SRC 45 1 7 7XDG LDN 6 4 20 7XY6 P2 SLC 45 3 [ ... IN THE ^BROKE^ MESSAGE 7 7YCQ STO 4 7 7 7YXB ANDN 7 7 8 7_C2 DCH 7 0(1) 7 7_WL BCHX 1 / 8 82B= BCT 6 P2 8 82TW SRC 45 12 7 83*G ANDN 4 3 14 83T6 LDN 6 #30 [ ^(^ 8 84#Q DCH 6 0(1) 7 84SB BCHX 1 / 8 85#2 DCH 4 0(1) 7 85RL BCHX 1 / 14 86?= LDN 6 #31 [ ^)^ 8 86QW DCH 6 0(1) 19 87=G PM3B LDX 5 JLINSTR(2) [ILLEGAL INSTRUCTION ADDRESS 18 87Q6 TXL 5 G3DOL [BELOW LOADER'S DATUM? 13 889Q BCS PM3C [YES 17 88PB SBX 5 G3DOL [NO - DATUMISE IT 8 8992 BRN PM3D 16 89NL PM3C LDN 3 OPMFC(2) [SAY IT BROKE ... 18 8=8= LDN 4 OPMBROKE+4(2) [ ... IN FIXED CORE 7 8=MW MOVE 3 3 19 8?7G PM3D LDN 1 OPMBR1+5(2) [PUT ILLEGAL INSTRUCTION ... 19 8?M6 CALL 0 OCTAL [ ... ADDRESS IN MESSAGE 10 8#6Q LDX 1 XECTIME(2) 21 8#LB LDX 5 0(1) [PICK UP TIME IN K9'S FROM EXECUTIVE 10 8*62 DVS 4 XK9PERSEC(2) 21 8*KL LDN 1 OPMTIME(2) [WHERE TO PUT CHARACTER TIME IN BUFFE 20 8B5= CALL 3 RAGEN [CONVERT HOURS TO CHARACTER FORM 8 8BJW 3600 17 8C4G LDN 4 #36 [SET STOP CHARACTER 16 8CJ6 DCH 4 0(1) [STORE FULL STOP 7 8D3Q BCHX 1 / 21 8DHB CALL 3 RAGEN [CONVERT MINUTES TO CHARACTER FORM 8 8F32 60 16 8FGL DCH 4 0(1) [STORE FULL STOP 7 8G2= BCHX 1 / 15 8GFW LDX 7 5 [COPY SECONDS 16 8G_G CALL 3 SEND [AND STORE THEM 7 8HF6 0 19 8HYQ LDX 1 XECDATE(2) [PICK UP DATE FROM EXECUTIVE 19 8JDB LDX 7 0(1) [ (IN DAYS SINCE 31.12.1899) 19 8JY2 BZE 7 ZEROD [J IF ZERO SPECIFIED AS DATE 19 8KCL BXGE 7 YEARS(2),ZEROD [ERROR IF 0 OR > YEAR 2100 21 8KX= SLA 7 2 [DIVIDE BY 365*4+1 TO GET NUMBER OF 21 8LBW DVS 6 TSFTF(2) [ ... YEARS ALLOWING FOR LEAP YEARS 7 8LWG SRL 6 2 19 8MB6 LDX 4 7 [TEST AND J IF THIS YEAR ... 19 8MTQ ANDN 4 3 [ ... IS NOT A LEAP YEAR 21 8N*B LDN 5 28 [SET APPROPRIATE NO OF DAYS FOR FEB 7 8NT2 LDX 3 2 8 8P#L BNZ 4 NLEAP 8 8PS= LDN 5 29 7 8Q?W NLEAP SMO 3 19 8QRG LDX 0 NDAYS [NUMBER OF DAYS THIS MONTH 19 8R?6 BPZ 0 NFEB [IF FEBRUARY, TAKE 28 OR 29 7 8RQQ LDX 0 5 7 8S=B NFEB SBX 6 0 7 8SQ2 ADN 3 1 18 8T9L BPZ 6 NLEAP [J BACK IF NOT THIS MONTH 7 8TP= ADX 6 0 9 8W8W LDX 4 NAME-1(3) 7 8WNG ADN 6 1 9 8X86 DVS 5 OPMTEN(2) 16 8XMQ BNZ 6 STORE [J IF MORE THAN 9 17 8Y7B LDN 6 #20 [SET SPACE CHARACTER 19 8YM2 STORE LDN 3 OPMDATE(2) [WHERE TO PUT CHARACTER DATE 18 8_6L DCH 6 0(3) [STORE FIRST CHARACTER 7 8_L= BCHX 3 / 18 925W DCH 5 0(3) [STORE SECOND CHARACTER 20 92KG DSA 4 0(3) [STORE 1ST 2 CHARACTERS OF MONTH 20 9356 STO 4 1(3) [STORE LAST CHARACTER OF MONTH 9 93JQ DVS 6 OPMTEN(2) 9 944B TXL 7 OPMTEN(2) 18 94J2 BCS X10 [J IF LESS THAN YEAR 2000 16 953L SBN 7 10 [MINUS 100 YEARS 20 95H= X10 DCH 7 1(3) [STORE FIRST CHARACTER OF YEAR 7 962W BCHX 3 / 20 96GG DCH 6 1(3) [STORE SECOND CHARACTER OF YEAR 7 9726 BCHX 3 / 19 97FQ LDN 6 #20 [SPACE FILL LAST CHARACTER 8 97_B DCH 6 1(3) 8 98F2 BRN X11 19 98YL ZEROD LDX 0 OPMSPACES(2) [DATE ERROR : SPACE FILL DATE 10 99D= STO 0 OPMDATE(2) 10 99XW STO 0 OPMDATE+1(2) 19 9=CG X11 LDN 1 OPMBROKE(2) [PRINT BROKE MESSAGE ... 18 9=X6 CALL 0 OUTCON [ ... ON CONSOLE 16 9?BQ PM4 LDN 1 OPMQUESTN(2) [ASK WHETHER PM 15 9?WB PM5 CALL 0 OUTCON [IS REQUIRED 15 9#B2 PM6 CALL 0 OINCON [GET REPLY 17 9#TL BRN PM4 [FAILED - TRY AGAIN 14 9**= LDX 4 OPMINBUFF(2) [REPLY 7 9*SW LDN 5 0 20 9B#G SRC 45 12 [GET FIRST 2 CHARACTERS OF REPLY 16 9BS6 LDN 1 OPMTYPES(2) [COMMAND TABLE 18 9C?Q LDN 6 OPMTYPEND-OPMTYPES [LENGTH OF COMMAND TABLE 20 9CRB PM7 TXU 4 0(1) [COMPARE REPLY WITH COMMAND TABLE 14 9D?2 BCC PM8 [FOUND IT 7 9DQL ADN 1 1 8 9F== BCT 6 PM7 21 9FPW BRN PM4 [INVALID REPLY - REPEAT QUESTION 17 9G9G PM8 EXIT 1 OPMBRNTAB-OPMTYPES [EXECUTE BRANCH TABLE 16 9GP6 PMXL LDN 1 OPMOK(2) [OK MESSAGE ... 18 9H8Q CALL 0 OUTCON [ ... TO CONSOLE 20 9HNB LDN 7 8 [TO COUNT ACCUMULATORS PRINTED 14 9J82 LDN 6 0 [X0 FIRST 18 9JML PM9 SMO 6 [PICK UP EACH ACCUMULATOR 9 9K7= LDX 5 JLXX(2) 18 9KLW LDN 1 OPMXX+3(2) [CONVERT IT TO OCTAL ... 21 9L6G CALL 0 OCTAL [ ... AND PLACE IT IN THE MESSAGE 21 9LL6 LDN 1 OPMXX(2) [OUTPUT ACCUMULATOR VALUE TO CONSOLE 9 9M5Q CALL 0 OUTCON 16 9MKB ADN 6 1 [INCREMENT COUNT 19 9N52 DCH 6 OPMXX+2(2) [AND ^X^ NUMBER IN MESSAGE 20 9NJL BCT 7 PM9 [REPEAT FOR ALL 8 ACCUMULATORS 8 9P4= BRN PM94 7 9PHW PMLS LDN 6 4 10 9Q3G LDN 1 OPMINBUFF(2) 16 9QH6 PM90 LDCH 4 0(1) [IS ^D^ IN REPLY? 8 9R2Q SBN 4 #44 19 9RGB BZE 4 PMD [YES - SAY NO DUMP POSSIBLE 7 9S22 BCHX 1 / 8 9SFL BCT 6 PM90 19 9S_= LDN 1 OPMINBUFF(2) [NO - SEARCH FOR UNIT NUMBER 7 9TDW LDN 6 6 21 9TYG LDN 3 OPMNOTLP+3(2) [IN CASE UNIT IS NOT A LINE PRINTER 18 9WD6 PM91 LDCH 4 0(1) [GET CHARACTER FROM REPLY 7 9WXQ BCHX 1 / 16 9XCB TXU 4 OPMCOMMA(2) [IS IT COMMA? 13 9XX2 BCC PM92 [YES 19 9YBL BCT 6 PM91 [NO - CHECK NEXT CHARACTER 17 9YW= NGS 4 OPMLPNO(2) [NO UNIT SPECIFIED 8 9_*W BRN PM94 21 9_TG PM92 LDCH 4 0(1) [GET FIRST CHARACTER OF UNIT NUMBER 16 =2*6 TXL 4 OPMTEN(2) [IS IT NUMERIC? 19 =2SQ BCC PMYES [NO - REPEAT PM? QUESTION 18 =3#B DCH 4 0(3) [YES - PUT IT IN MESSAGE 7 =3S2 BCHX 1 / 7 =4?L BCHX 3 / 21 =4R= LDCH 5 0(1) [GET SECOND CHARACTER OF UNIT NUMBER 19 =5=W DCH 5 0(3) [AND PUT IT IN THE MESSAGE 16 =5QG TXU 5 OPMSP(2) [IS IT A SPACE? 18 =6=6 BCC PM92A [YES - END OF UNIT NUMBER 17 =6PQ TXL 5 OPMTEN(2) [NO - IS IT NUMERIC? 19 =79B BCC PMYES [NO - REPEAT PM? QUESTION 18 =7P2 PM92A LDN 3 OPMNOTLP+3(2) [YES - VALID UNIT NUMBER 7 =88L LDN 5 0 17 =8N= PM92B CDB 4 0(3) [CONVERT IT TO BINARY 8 =97W BCS PM93 8 =9MG BCHX 3 PM92B 18 ==76 PM93 STO 5 OPMLPNO(2) [SAVE UNIT NUMBER OF LP 19 ==LQ PM94 FINDPEREC 1,APFOTY,OPMLPTYPE(2),PM11 [SEARCH FOR PRINTER 17 =?6B BNG 1 NOLP [J IF NO LP AVAILABLE 19 =?L2 LDX 4 OPMLPNO(2) [PARTICULAR PRINTER WANTED? 16 =#5L BPZ 4 PM95 [YES - CHECK IT 19 =#K= JWRONG 1,PM11 [NO - BUT TRY NEXT IF WRONGED 8 =*4W BRN PM96 17 =*JG PM95 LGEOG 1,5 [GET ITS GEOG NUMBER 16 =B46 TXU 5 4 [HAVE WE FOUND IT? 17 =BHQ BCS PM11 [NO - TRY NEXT ONE 19 =C3B JRIGHT 1,PM96 [YES - BUT IF WRONGED, SAY SO 19 =CH2 LDN 1 OPMWRONG(2) [SPECIFIED PRINTER IS WRONGED 17 =D2L LDX 6 OPMNOTLP+3(2) [PUT UNIT NUMBER... 19 =DG= STO 6 OPMWRONG+3(2) [ ... IN ^WRONGED^ MESSAGE 17 =D_W CALL 0 OUTCON [AND SAY IT'S WRONGED 17 =FFG BRN PM4 [REPEAT PM? QUESTION 19 =F_6 PM96 STO 1 OPMLP(2) [SAVE ITS DEVICE LIST POINTER 17 =GDQ LGEOG 1,5 [GET GEOG NUMBER OF LP 8 =GYB LDN 4 10 7 =HD2 DVS 4 4 7 =HXL LDX 3 4 8 =JC= LDN 4 10 7 =JWW DVS 4 4 8 =KBG BNZ 5 PM97 8 =KW6 LDN 5 #20 20 =L*Q BNZ 4 PM97 [CONVERT IT TO CHARACTER FORM... 8 =LTB LDN 4 #20 8 =M*2 PM97 SLL 5 12 7 =MSL SLL 4 6 7 =N#= ORX 5 3 8 =NRW LDCT 3 #200 7 =P?G ORX 3 5 7 =PR6 ORX 3 4 20 =Q=Q STO 3 OPMFIX+6(2) [AND SAVE IT IN THE FIX MESSAGE 14 =QQB LDN 1 OPMOK(2) [SAY ^OK^ 9 =R=2 CALL 0 OUTCON 20 =RPL ADS 2 OPMCNTRL2(2) [DATUMISE PRINT BUFFER POINTER 18 =S9= CALL 0 OUTLP [PRINT HEADER LINE ... 6 =SNW NULL 7 =T8G LDN 0 1 10 =TN6 STO 0 OPMHEAD(2) 18 =W7Q CALL 0 OUTLP [ ... AND A BLANK LINE 6 =WMB NULL 10 =X72 LDX 7 OPMSPACES(2) 10 =XLL STO 7 OPMBR1+7(2) 8 =Y6= LDN 7 #41 10 =YKW STO 7 OPMBROKE(2) 10 =_5G LDX 7 OPMCNTRL3(2) 7 =_K6 ADX 7 2 10 ?24Q STO 7 OPMCNTRL2(2) 8 ?2JB LDN 7 81 10 ?342 STO 7 OPMLPCNT(2) 18 ?3HL CALL 0 OUTLP [PRINT ^BROKE^ MESSAGE 6 ?43= NULL 7 ?4GW LDN 0 1 10 ?52G STO 0 OPMBROKE(2) 16 ?5G6 CALL 0 OUTLP [AND A BLANK LINE 6 ?5_Q NULL 8 ?6FB LDN 7 121 10 ?6_2 STO 7 OPMLPCNT(2) 10 ?7DL LDX 7 OPMCNTRL1(2) 7 ?7Y= ADX 7 2 10 ?8CW STO 7 OPMCNTRL2(2) 20 ?8XG LDN 6 JLXX(2) [ADDRESS OF ACCUMULATOR SAVE AREA 9 ?9C6 LDN 7 JLXX+5(2) 19 ?9WQ STO 7 OPMFIN(2) [ONLY 1 LINE TO BE PRINTED 18 ?=BB CALL 0 OPMPRINT [PRINT ACCUMULATORS ON LP 18 ?=W2 LDN 6 0 [PRINT FIRST #30000 WORDS 18 ??*L LDX 7 OPMENDGEO(2) [ OF GEORGE ON THE LP 9 ??T= STO 7 OPMFIN(2) 9 ?##W CALL 0 OPMPRINT 7 ?#SG LDN 0 1 10 ?*#6 STO 0 OPMBUFF(2) 18 ?*RQ CALL 0 OUTLP [ ... AND A BLANK LINE 6 ?B?B NULL 8 ?BR2 LDN 0 #41 10 ?C=L STO 0 OPMBUFF(2) 16 ?CQ= LDX 6 G3DOL [LOADER'S DATUM? 9 ?D9W TXU 6 OPMK18(2) 19 ?DPG BCC PM98 [YES - START DUMP AT LOADER 21 ?F96 SBN 6 1024 [NO - L/A : START DUMP AT LOADER PM 10 ?FNQ PM98 LDX 7 OPMLAST(2) 7 ?G8B ADX 7 6 9 ?GN2 STO 7 OPMFIN(2) 9 ?H7L CALL 0 OPMPRINT 18 ?HM= LDN 1 OPMFINISH(2) [FINISHED MESSAGE ... 18 ?J6W CALL 0 OUTCON [ ... TO THE CONSOLE 16 ?JLG GELL [RE-ENTER GELL 10 ?K66 NOLP LDX 6 OPMLPNO(2) 8 ?KKQ BPZ 6 NOLP1 10 ?L5B LDN 1 OPMNOLP(2) 9 ?LK2 CALL 0 OUTCON 8 ?M4L BRN PM4 10 ?MJ= NOLP1 LDN 1 OPMNOTLP(2) 9 ?N3W CALL 0 OUTCON 8 ?NHG BRN PM4 16 ?P36 PMNO LDN 1 OPMOK(2) [NO PM REQUIRED 15 ?PGQ CALL 0 OUTCON [SO SAY ^OK^ 17 ?Q2B GELL [AND RE-ENTER GELL 18 ?QG2 PMYES LDN 1 OPMTYPEQ(2) [ASK TYPE OF PM REQUIRED 8 ?Q_L BRN PM5 18 ?RF= PMD LDN 1 OPMNODUMP(2) [PM DUMP NOT AVAILABLE.. 17 ?RYW CALL 0 OUTCON [ .. DURING LOADER 18 ?SDG BRN PMYES [ASK TYPE OF PM REQUIRED 8 ?SY6 PMRI BRN PM4 4 ?TCQ # 4 ?TXB # 18 ?WC2 K7LOADERPM [MEND AREA FOR LOADER PM 6 ?WWL #GAP 100 4 ?XB= # 4 ?XTW #END 4 ?Y*G #OVE 6 ____ ...471676610001