13 22FL SEG LOADFIN,70,RUTH PORTER 4 22_= # 4 23DW # 11 23YG SEGENTRY K1LOADFIN,XENT1 5 24D6 #SKI G4 4 24XQ ( 11 25CB SEGENTRY K41LOADFIN,XENT41 11 25X2 SEGENTRY K42LOADFIN,XENT42 4 26BL ) 4 26W= # 21 27*W # THE SEGMENT DEALS WITH THE ENTRY BLOCK OF THE PROGRAM BEING LOADED AND 11 27TG # FINISHES THE LOADING PROCESS. 15 28*6 # IT INSERTS THE PROGRAMS ENTRY POINT,DEALS WITH 21 28SQ # THE LOAD PERIPHERAL BIT IN WORD 2 OF THE R/S AND FINALLY CLOSES ANY 17 29#B # FILES OPENED FOR LOADING AND EXITS TO COMMAND LEVEL. 4 29S2 # 4 2=?L # 8 2=R= #DEF XLDEX=EXTPS+3 8 2?=W #DEF XLDEXA=EXTPS+4 8 2?QG #DEF YCOUNT=EXTPS 4 2#=6 # 18 2#PQ RESMASK #77000077 [R/S MASK FOR TYPE WORD 16 2*9B REQUEST #73000001 [R/S TYPE WORD 19 2*P2 SUPRES #73000006 [SUPPLEMENTARY R/S TYPE WORD 8 2B8L N14 14 19 2BN= TWFOUR +24 [LENGTH OF R/S PLUS SUPP. R/S 4 2C7W # 18 2CMG # LINK PAIRS FOR OLPA AFTER CONT - PROBABLY UNSATISFACTORY 9 2D76 PTR PAIR TROBJ,1 9 2DLQ PCR PAIR CROBJ,1 9 2F6B PMT PAIR MTOBJ,1 16 2FL2 PHALT 4HLD [HALTED MESSAGE 4 2G5L # 10 2GK= # LABELS OF ERROR MESSAGES 9 2H4W WERRES +GWERRES 9 2HJG XMBLCNT +JBLCNT 4 2J46 # 4 2JHQ # 4 2K3B # 13 2KH2 [ CLEARS THE EXTPS WDS FOR GETWORD ETC 5 2L2L ZCLEAR 8 2LG= SMO FX2 8 2L_W LDN 1 EXTPS 8 2MFG LDN 2 1(1) 8 2M_6 STOZ 0(1) 7 2NDQ MOVE 1 4 7 2NYB EXIT 4 0 4 2PD2 # 4 2PXL # 4 2QC= # 4 2QWW SUSP 4 2RBG # 21 2RW6 # ROUTINE TO SIMULATE HALTED LD IF WE HAVE A SUSPEND TYPE ENTRY BLOCK 4 2S*Q # 8 2STB SBX 5 FX1 17 2T*2 LDN 4 6 [PREPARE A SIX WORD 15 2TSL OUTBLOCK 4 [MONOUT BLOCK 19 2W#= OUTPARC JOBMILL [PREPARE MILL TIME FOR OUTPUT 20 2WRW OUTNULL [NO MEMBER NUMBER SO OUTPUT SPACE 14 2X?G SETNCORE 4+APEDSP1-A1,3,APED,ANEVENT 19 2XR6 [SET UP CORE FOR EVENT BLOCK 19 2Y=Q STOZ APEDSP1(3) [ZEROISE MEMBER NUMBER WORD 14 2YQB LDN 0 APEDHALT [INSERT 16 2_=2 STO 0 APEDSP1+1(3) [CATEGORY WORD 18 2_PL LDN 0 2 [PUT IN CHARACTER COUNT 16 329= STO 0 APEDEVEM(3) [INTO APEDEVEM 18 32NW LDX 0 PHALT(1) [NOW INSERT THE MESSAGE 10 338G STO 0 APEDSP1+3(3) 16 33N6 OUTPARAM APEDEVEM(3),APEDSP1+3,APED,ANEVENT 18 347Q MONOUT HUSH2 [OUTPUT HALTED MESSAGE 8 34MB ADX 5 FX1 7 3572 EXIT 5 0 4 35LL # 4 366= # 4 36KW # 4 375G # 5 37K6 XENT1 5 384Q #SKIP G4 4 38JB ( 21 3942 FPCACA 2 [CLEAR ANY LOCKDOWN COUNTS LEFT SET 9 39HL CLEAR 2,0,,2,2 4 3=3= ) 15 3=GW MHUNTW 1,FILE,FRB [ENTRY BLOCK 15 3?2G LDX 7 A1(1) [SPECIFIER WD 18 3?G6 LDX 6 A1+1(1) [ENTRY PT FOR TYPES 2,3 19 3?_Q LDX 5 A1+2(1) [BLOCK COUNT IF 4 WDS LONG 7 3#FB FREECORE 1 17 3#_2 # FOR ALL EXCEPT EDS WE HAVE COUNTED THE NO OF BLOCKS 7 3*DL LDCT 0 2 9 3*Y= ANDX 0 XLDEXA(2) 13 3BCW BNZ 0 NEL [EDS 9 3BXG LDX 4 YCOUNT(2) 17 3CC6 ANDX 4 BSP16 [NO OF RECORDS READ 18 3CWQ # IF THE ENTRY BLOCK IS 4 WDS LONG WE CHECK THE BLOCK COUNT 7 3DBB LDX 0 7 8 3DW2 SRL 0 12 19 3F*L ANDN 0 #77 [LENGTH OF ENTRY BLOCK IN X0 7 3FT= SBN 0 4 15 3G#W BNG 0 RBOK [NOT 4.WDS 18 3GSG # IF CONT WE MUST ADJUST THE BLOCK COUNT TO ALLOW FOR R/S 9 3H#6 # AND PERHAPS SUPP R/S 8 3HRQ LDCT 0 #200 9 3J?B ANDX 0 XLDEXA(2) 14 3JR2 BZE 0 RELOC [NOT CONT 21 3K=L # THIS IS THE BEST WE CAN DO TO GUESS IF THERE IS A SUPP R/S IN B/D - 7 3KQ= # NET FOOLPROOF 8 3L9W FPCACA 1,2 9 3LPG LDX 0 ARM1(1) 8 3M96 ANDN 0 #77 19 3MNQ BZE 0 RELOP1 [JUMP IF IN ORDINARY MODES 21 3N8B SBN 5 1 [TO ALLOW FOR NO SUPPLEMENTARY REQUES 5 3NN2 RELOP1 19 3P7L SBN 5 1 [TO ALLOW FOR NO REQUEST SLIP 7 3P8D ... SBX 5 4 16 3P9= ... BZE 5 RBOK [J IF COUNT OK. 4 3P=4 ...[ 20 3P=W ...[ ALTHOUGH WE SUBTRACTED 1 FOR ORDINARY MODES & 2 FOR EXTENDED 20 3P?N ...[ MODES TO CATER FOR R/S & SUPPLEMENTARY R/S,THE CURRENT MODE OF 21 3P#G ...[ THE PROGRAM MAY BE DIFFERENT TO THE ORIGINAL MODE : IN WHICH CASE 21 3P*# ...[ WE MIGHT ONLY REQUIRE TO SUBTRACT 1 RATHER THAN 2(OR VICEVERSA) 21 3PB6 ...[ FOR R/S REASONS.SO WE ALLOW A 1 DEVIATION ON CORRECT BLOCKCOUNT 15 3PBY ...[ IN THE RIGHT DIRECTION TO ALLOW FOR THIS. 4 3PCQ ...[ 17 3PDJ ... BZE 0 XORD [J IF ORDINARY MODES 20 3PFB ... ADN 5 1 [AS ORIG.MODE MAY HAVE BEEN ORD. 20 3PG8 ... BZE 5 RBOK [WE MAY HAVE SUBTRACTED 1 TO MANY 17 3PH2 ... BRN XBLCNT [J AS DEFINATE ERROR 4 3PHS ...XORD 20 3PJL ... SBN 5 1 [AS ORIG.MODE MAY HAVE BEENEXTND. 20 3PKD ... BZE 5 RBOK [WE MAY HAVE SUBTRACTED 1 TO LESS 17 3PL= ... BRN XBLCNT [J AS DEFINATE ERROR 5 3PM= RELOC 20 3Q6W SBX 5 4 [TEST TO SEE IF BLOCK COUNT IS OK 17 3QLG BNZ 5 XBLCNT [ERROR IN BLOCK COUNT 4 3R66 RBOK 14 3RKQ # UPDATE CP'S RECORD COUNT FOR EMBEDDED LOAD 8 3S5B LDCT 0 #40 9 3SK2 ANDX 0 XLDEXA(2) 8 3T4L BZE 0 NEL 8 3TJ= ADDRECS 3,4 4 3W3W NEL 18 3WHG ANDN 7 #77 [ENTRY BLOCK TYPE IN X7 7 3X36 SBN 7 4 8 3XGQ FPCACA 1,2 18 3Y2B MACCS ,1,3 [ADDRESS OF ACC 0 IN X3 19 3YG2 # IF NOT A TYPE 4 BLOCK THE ENTRY POINT MUST BE STORED IN WORD 8 16 3Y_L BZE 7 RENTB [NOT TYPE 4 18 3_F= STO 6 8(3) [ENTRY POINT STILL IN X6 5 3_YW RENTB 5 42DG #SKIP G4 4 42Y6 ( 19 43CQ LDN 0 #4000 [JUMP IF INITIAL LOAD OF PP 9 43XB ANDX 0 XLDEXA(2) 9 44C2 BNZ 0 PPLOAD 4 44WL ) 5 45B= RENTC 19 45TW ADN 7 1 [X7 =0 IF SUSPEND ENTRY BLOCK 8 46*G FJOCA 3,FX2 8 46T6 LDN 0 #11 21 47#Q ERS 0 JMISC(3) [CHANGE STATE FR STOPPED TO DORMANT 6 47C* ...#UNS ISTDP 4 47FY ...( 9 47JH ... LDX 0 APROCTIME 19 47M6 ... STO 0 JCTLR(3) [TO WARD OFF TRUE DORMANCY 4 47PP ...) 8 47SB LDCT 0 #200 9 48#2 ANDX 0 XLDEXA(2) 14 48RL BZE 0 REND [NOT CONT 17 49?= # FOR CONT WE MUST SET THE ACTIVITIES BACK FOR NEXT PERI 17 49QW LDX 4 XLDEXA(2) [IS ONLINE MARK SET 16 4==G BNG 4 RENDC [JUMP IF ONLINE 15 4=Q6 FINDACTNO 3,XLDEX(2) [FIND OLPA 7 4?9Q LOCK 3 8 4?PB CHANGEFILE 3 7 4#92 UNLOCK 3 12 4#NL # PICK UP PERIPHERAL TYPE FROM OLPA 9 4*8= LDX 4 FTYPNO(3) 8 4*MW SRL 4 15 14 4B7G BNZ 4 NTR [NOT TR 8 4BM6 ADN 1 PTR 8 4C6Q BRN ZINS 4 4CLB NTR 7 4D62 SBN 4 3 14 4DKL BNZ 4 NCR [NOT CR 8 4F5= ADN 1 PCR 8 4FJW BRN ZINS 4 4G4G NCR 15 4GJ6 ADN 1 PMT [MUST BE MT 4 4H3Q ZINS 9 4HHB LINKSET 3,0(1) 5 4J32 RENDC 13 4JGL # BREAKIN HAS BEEN INHIBITED FOR CONT 7 4K2= PERMITBRK 9 4KFW CALL 4 ZCLEAR 17 4K_G BZE 7 SUS [SUSPEND ENTRY BLK 16 4LF6 RUNPROG [RESTART PROGRAM 4 4LYQ SUS 8 4MDB CALL 5 SUSP 7 4MY2 PROGEND 4 4NCL REND 4 4NX= # 10 4PBW # CORE MESSAGE OUTPUT HERE 4 4PWG # 7 4QB6 FPCACA 2 10 4QTQ HUNT2 3,AOBRES,0,2 10 4R*B LDX 0 ALOGLEN(3) 8 4RT2 SBN 0 24 17 4S#L BNZ 0 PLJ [JUMP IF NO SUPP RQS 9 4SS= LDX 4 A1+17(3) 7 4T?W SLL 4 3 7 4TRG LDN 0 4 16 4W?6 LDX 3 2 [PRESERVN PCA PTR 8 4WQQ LDCT 1 #600 7 4X=B ADX 3 1 9 4XQ2 DCH 4 ALMT(3) 7 4Y9L LDN 6 3 4 4YP= PUT 18 4_8W DCH 4 ARM4(3) [SET UP MODES IN CHAR 3 8 4_NG SBN 3 K61 7 5286 BCT 6 / 8 52MQ BCT 0 PUT 4 537B PLJ 5 53M2 #SKIP G4 4 546L ( 21 54L= HUNT2 2,BSTB,BSCB [IN GEORGE 4 THE SIZE OF THE PROGRAM 20 555W LDX 6 AMAXSIZE(2) [SIZE OF PROG PICKED UP FROM SCB 10 55KG DOWN STARTSCI,1 4 5656 ) 17 56JQ LDN 4 12 [PREPARE A 12 WORD 16 574B OUTBLOCK 4 [MONOUT BLOCK. 5 57J2 #SKIP G4 4 583L ( 18 58H= LDX 4 6 [SAVE DENSE/SPARSE BIT 18 592W SLL 6 10 [CONVERT SIZE TO PAGES 4 59GG ) 12 5=26 # OUTPUT MILL TIMES AND REAL TIME 5 5=FQ #SKIP G3 16 5=_B OUTPARC PROGCORE [OUTPUT CORESIZE 5 5?F2 #SKIP G4 10 5?YL OUTPACK 6,1,PROGCORE 11 5#D= OUTPARC JOBMILL,TIMENOW 5 5#XW #SKIP G4 4 5*CG ( 20 5*X6 BPZ 4 NSPARSE [IF PROG IS SPARSE INDICATE THIS 20 5BBQ OUTMESS CORESP [IN THE CORE/SIZE GIVEN MESSAGE 5 5BWB NSPARSE 4 5CB2 ) 7 5CTL OUTPMILL 17 5D*= MONOUT CORE [MESSAGE MONITORED 7 5DSW PERCOUNT 8 5F#G LDCT 7 #40 9 5FS6 ANDX 7 XLDEXA(2) 17 5G?Q BZE 7 YLP [NOT SAVED FILE LOAD 18 5GRB # AN OLD TYPE OF SAVED FILE MAY EXIST WITH A REDUNDANT R/S 6 5H?2 STEP 20 5HQL BZE 3 PSAVE [BACKSPACE IF END OF FILE MARKER 8 5J== LDCH 0 2(3) 17 5JPW SBN 0 #73 [1ST CHAR OF B/D REC 15 5K9G BNZ 0 PSAVE [REPOS FILE 7 5KP6 LDN 4 1 8 5L8Q ADDRECS 3,4 4 5LNB YLP 8 5M82 FPCACA 3,2 10 5MML HUNT2 3,AOBRES,0 15 5N7= LDCT 5 #600 [TO EXTRACT 18 5NLW ANDX 5 A1+2(3) [LOAD PERIPHERAL BITS 20 5P6G LDX 4 5 [NOTE THE LOAD-PERIPHERAL MARKERS 21 5PL6 ANDX 5 GSIGN [SINGLE OUT GPL LOAD PERIPHEPAL BIT 16 5Q5Q ERS 5 A1+2(3) [REMOVE IT IF SET 20 5QKB ERS 5 A1+13(3) [AND ALTER CHECKSUN ACCORDINGLY 9 5R52 LDX 0 A1+5(3) 21 5RJL STOZ A1+5(3) [CLEAR OVERLAY WORD AS CAN UPSET SAVE 16 5S4= ADS 0 A1+13(3) [ADJUST CHECKSUM 18 5SHW BNZ 7 ZSEND [JUMP IF SAVED FILE LOAD 18 5T3G BZE 4 ZCLUP [IF NO LP BITS - BRANCH 14 5TH6 BNG 4 XASS [J IF GPL 9 5W2Q MHUNT 1,FILE,ENT 9 5WGB LDX 5 ETM(1) 16 5X22 LDCT 6 #377 [GET FILE TYPE 7 5XFL ANDX 5 6 11 5X_= HUNT2 3,APERI,APERIRES 16 5YDW FPERENTA 3,5,XASS [J IF UNASSIGNED 8 5YYG BRN ZCLUP 4 5_D6 XASS 21 5_XQ ASSILO ZCLUP [ASSIGN THE LOAD PERIPHERAL TO THE PR 8 62CB BRN ZSEND 21 62X2 # FROM ZUPS TO ZSEND SHOULD BE OMITTED IF NO ERROR ON RESTORING OLD SA 10 63BL # FILE IS REPORTED IN MK6 17 63W= ZUPS READ [GET THE NEXT RECORD 17 64*W MHUNTW 3,FILE,FRB [FIND THE READ BLOCK 17 64TG LDX 4 A1(3) [IS THERE A RECORD? 19 65*6 BZE 4 PSAVE [POINT TO THE END OF THE FILE 21 65SQ SBN 4 2 [(A NULL RECORD HAS JUST A REC. HEAD) 20 66#B BZE 4 ZSEND [IF NOT - LEAVE THE R1S AS IT IS 9 66S2 TXL 4 N14(1) 20 67?L BCS PSAVE [LONG? - IF NOT BACKSPACE & GO UP 19 67R= LDX 0 A1+2(3) [IS THE RECORD READ A R/S? 21 68=W ANDX 0 RESMASK(1) [ISOLATE THE FIRST AND FOURTH CHARS. 16 68QG TXU 0 REQUEST(1) [IS IT #73----01? 17 69=6 BCS PSAVE [IF NOT - WE FINISH 17 69PQ TXU 4 TWFOUR(1) [RECORD LENGTH =24? 19 6=9B BCS ZLENK [IF NOT - WE HAVE ONLY A R/S 21 6=P2 LDX 0 A1+18(3) [IF SO - GET THE WORD ON END OF R/S 20 6?8L ANDX 0 RESMASK(1) [ISOLATE FIRST AND LAST CHARACTER 21 6?N= TXU 0 SUPRES(1) [TEST AGAINST THE STANDARD SUPP. R/S 18 6#7W BCC ZLINK [BRANCH IF NO SUPP- R/S 20 6#MG ZLENK LDN 4 16 [TO GET AN ORDINARY RECORD LENGTH 16 6*76 ZLINK LDN 6 A1+2(3) [MOVE THE RECORD 17 6*LQ LDN 7 A1(3) [UP TO THE HEAD OF 16 6B6B SMO 4 [THE FILE APPEND 14 6BL2 MOVE 6 0 [BLOCK 20 6C5L ALTLEN 3,4 [SHORTEN THE BLOCK ACCORDINGLY 8 6CK= FPCACA 1,FX2 10 6D4W HUNT2 3,AOBRES,0,1 18 6DJG MHUNTW 2,FILE,FRB [FIND THE FILE READ BLOCK 20 6F46 LDX 4 2 [REMEMBER FILE READ BLK ADDRESS 19 6FHQ CHAIN 2,3 [CHAIN IT AFTER THE AOBRES 16 6G3B NAME 4,AOBRES [RENAME IT AOBRES 21 6GH2 FREECORE 3 [AND FREE THE ORIGINAL AOBRES BLOCK 5 6H2L ZSEND 17 6HG= GSCAN JOBNO(2),CLOAD,,J [SCAN THE JOB NUMBER 8 6H_W LDX 0 BIT9 8 6JFG SMO FX2 9 6J_6 ANDX 0 XLDEXA 20 6KDQ BZE 0 XNOCPB [IF LOAD WAS DELAYED,WE MUST FREE 20 6KYB MFREE CPB,CUNI [CPB/CUNI CONTAINING FILE NAME 5 6LD2 XNOCPB 9 6LXL VFREEW FILE,ENT 9 6MC= CALL 4 ZCLEAR 7 6MWW UPPLUS 2 19 6NBG PSAVE BACKSPACE [BACK OVER THE LAST RECORD 8 6NW6 BRN YLP 4 6P*Q # 4 6PTB # 5 6Q*2 ZCLUP 5 6QSL #SKIP G4 4 6R#= ( 20 6RRW LDN 0 #2000 [IF IT IS THE SUBSEQ LOAD OF A 20 6S?G ANDX 0 XLDEXA(2) [PURE PROCEDURE THERE IS NO FILE 14 6SR6 BNZ 0 ZSEND [TO CLOSE 4 6T=Q ) 15 6TQB CLOSE [LOAD FILE 8 6W=2 BRN ZSEND 5 6WPL XBLCNT 9 6X9= LDN 1 XMBLCNT 9 6XNW BRN RERROR 5 6Y8G RERROR 8 6YN6 SMO FX1 18 6_7Q LDX 5 0(1) [ADDR OF ERROR MESSAGE 9 6_MB ACROSS LOADERR,2 4 7272 # 18 72LL # THIS SECTION DEAL WITH THE LOADING OF PURE PROCEDURES 4 736= # 5 73KW #SKIP G4 4 745G ( 5 74K6 PPLOAD 19 754Q ACROSS LOADPP,1 [ENTER LOADPP TO SET UP SUD 20 75JB XENT41 [RETURN FROM LOADPP WITH PROG STOPPED-NOT USED CURRENTLY 8 7642 FPCACA 1,2 8 76HL MACCS ,1,3 18 773= BRN RENTC [REJOIN NORMAL LOAD PATH 20 77GW XENT42 [RETURN FROM LOADPP WITH PROG DORMANT-THIS ENTRY IS USED 19 782G [IN BOTH INITIAL & SUBSEQ LOADS OF A PURE PROCEDURE 9 78G6 LDX 0 XLDEXA(2) 7 78_Q ANDN 0 8 20 79FB BNZ 0 REND [JUMP IF PP SETS UP ITS OWN ACCS. 11 79_2 HUNTW 1,APED,ADELETE 21 7=DL BNG 1 REND [IF NO ADELETE BLOCK JOIN NORMAL PATH 15 7=Y= LDN 0 0 [OBJ PROG ADDRESS 14 7?CW LDN 6 8 [NO OF WORDS 19 7?XG LDX 5 EXTPS+1(2) [SAVE EXTPS+1 & ZEROISE IT 17 7#C6 STOZ EXTPS+1(2) [READY FOR GETWORD 19 7#WQ GETWORD 0,7,WRITE,6,6 [OBTAIN FIRST 8 WORDS OF OBJ.PROG 7 7*BB SBN 6 8 9 7*W2 BNG 6 (GEOERR) 11 7B*L MHUNTW 1,APED,ADELETE 17 7BT= LDN 6 APEDACC(1) [MOVE IN ACCUMULATORS 7 7C#W MOVE 6 8 7 7CSG WORDFIN 10 7D#6 STO 5 EXTPS+1(2) 18 7DRQ BRN REND [REJOIN NORMAL LOAD PATH 4 7F?B ) 10 7FR2 MENDAREA 40,K99LOADFIN 4 7G=L #END 8 ____ ...51017767000100000000