22FL ...#SEG LOADERDR86 [M. DRUKKER 22J9 ...# ######################################################## 22LS ...# 22PC ...# (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1982 22S2 ...# 22WK ...# ######################################################### 22^= #LIS K0LOADERMT>K0LOADER>K0ALLGEO 23DW # 23YG # 24D6 # THIS SEGMENT HANDLES DRUMS 24XQ # IT IS ENTERED WHEN MT LOADER RECEIVES ONE OF THE COMMANDS 25CB # FI, CL, DE, DR, HD. 25X2 # 26BL # 26W= SWFIX -1 [-VE -> FIX/FAIL ACTION REQUIRED 27*W [ZERO -> NO ACTION 27TG NONENG +0 [-VE IF NO ONLINE DRUM 28*6 QDIR +0,+0,+8,+0,+0,+0,+0,+0 [CLEAN HSD DIR 28SQ SDIR +1033,#10000,12HDRUMFREEAREA,#2001 29#B [CLEAN SLOW DRUM DIR 29S2 SDIRWD #10000 [WD1 OF SDIR 2=?L SIZEDRUM +32,+128,+512 [DRUM SIZES IN K 2=R= SDRUMCL +6,+SDIR,+1024 2?=W QDRUMCL +8,+QDIR,+0 2?QG SIZE +0 [BLK SIZE OF REQUESTED FILE 2#=6 QFIMAX +4096-8+1 [MAX NO.OF DATA BLKS ON HSD +1 2#PQ SFIMAX +1024 [MAX SD FILE K-SIZE + 1 2*5F ...# TEMPORARY CONTROL AREAS 2*F8 ...QDRUMCA +128,+AENDCHAPS-K18-K19-1024,+0 [COUNT/CTSA/DTSA FOR... 2*SX ...SDRUMCA +2048,+AENDCHAPS-K18-K19-1024,+1024 [ACCESSING DIRECTORIES 2B8L QFINO +31 [MAX NO. OF HSD DIR ENTRIES 2BDD ...JLGHSD 4HGHSD [HIGH SPEED DRUM DIRECTORY IDENTIFIER 2BN= MASKA #7776000 [TO EXTRACT DATUM OF SD FILE 2C7W MASKD #17774000 2CHK ...# TEMPORARY 2CX# ...QDECA +0,+AENDCHAPS-K18-K19-1024,+0 [COUNT/CTSA/DTSA FOR... 2D?3 ...SDECA +0,+AENDCHAPS-K18-K19-1024,+1024 [FILE RELOCATION 2DLQ THREEK +3072 [3K 2F6B OCT24 +24 2FL2 OCT9 +9 2G5L START +0 [TO HOLD DATUM OF FIRST SD FILE 2GK= [TO BE RELOCATED 2H4W SPACES 4H 2HJG QLEN +0 [LENGTH OF FILE TO BE DELETED 2J46 QDCNT +0 [COUNT OF BLKS TO BE MOVED OR K 2JHQ QDEX4 +0 [DATUM OF DELETED FILE 2K3B QDEX3 +0 [DATUM OF NEXT FILE TO BE MOVED 2KH2 PDLINK +0 [LINK TO PERIDRUM 2L2L SEARCHLK +0 [LINK TO SEARCHDRUM 2LG= # 2L^W SNRMESS +28,28H NO ROOM ON 1964 DRUM^*^* 2MFG QNRMESS +22,22H NO ROOM ON HSD^*^* 2M^6 USEDMESS +31,31H FILENAME ALREADY EXISTS^*^* 2NDQ TBMESS +30,30H FILE REQUESTED TOO BIG^*^* 2NYB NODRMESS +27,27H NO ONLINE 1964 DRUM^*^* 2PD2 NOHSDMESS +21,21H NO ONLINE HSD^*^* 2PXL REWRIDR +34,34H WHILST REWRITING DIRECTORY^*^* 2QC= RELOCFAIL +34,34H DURING RELOCATION OF FILES^*^* 2QWW # 2RBG SNORM LDN 1 SNRMESS(2) 2RW6 BRN JLER 2S*Q QNORM LDN 1 QNRMESS(2) 2STB BRN JLER 2T*2 JLUSED 2TSL USEDNAME 2W#= LDN 1 USEDMESS(2) 2WRW BRN JLER 2X?G TOOBIG 2XR6 LDN 1 TBMESS(2) 2Y=Q BRN JLER 2YQB NOOLDR 2^=2 LDN 1 NODRMESS(2) 2^PL BRN JLER 329= NOOLHSD 32NW LDN 1 NOHSDMESS(2) 338G BRN JLER 33N6 # 347Q # 34MB # S/R TO PERFORM DRUM PERIS. 3572 # CALLED VIA X6. 35LL # EXPECTS JLPSDR(2) TO CONTAIN DL PTR. 366= # X1 -> AREA FOR CA (OVERWRITTEN) 36KW # X4 TO CONTAIN MODE (OVERWRITTEN) 375G # EXPECTS X0 TO CONTAIN SWFIX(2) 37K6 # USES X0. EXITS 1 IF TRANSFER OK, LEAVING X3->DL 384Q # OTHERWISE FIX/FAIL ACTION IS : 38JB # SWFIX=0 & FIX -> EXIT 0 3942 # & FAIL -> OUTPUT FAIL MESS & EXIT 0 39HL # SWFIX<0 & FIX -> OUTPUT FIX MESSAGE & WAIT FOR RE-ENGAGE 3=3= # & FAIL -> OUTPUT FAIL MESSAGE & ANY AUX. MESSAGE 3=GW # & RETURN TO COMMAND LEVEL. THE (UNDATUMISED) ADDRESS OF 3?2G # ANY AUXILIARY MESSAGE REQUIRED IN THE EVENT OF FAILS 3?G6 # IS IN THE WD AFTER THE RELEVANT CALL. 3?^Q # BIT 0 OF THE WD IS SET 3#FB # 3#^2 PERIDRUM 3*DL JLPDRUM 3*Y= STO 6 PDLINK(2) [STORE YOUR LINK 3BCW STO 0 SWFIX(2) 3BXG LDX 3 JLPSDR(2) 3CC6 DCA 3,STO,4,MODE 3CWQ LDX 4 0(1) 3DBB DCA 3,STO,4,COUNT 3DW2 LDX 4 1(1) 3F*L DCA 3,STO,4,CTSA 3FT= DCA 3,ADS,2,CTSA [DATUMISE CTSA 3G#W LDX 4 2(1) 3GSG DCA 3,STO,4,DTSA 3H#6 JDISENG 3,PD1 3HRQ PD10 3J?B LDN 1 JLPSDR-CPPTR(2) [POINT TO PAB FOR DRUM 3JR2 GPERI 3,1,NC [INITIATE TRANSFER 3K=L PD2 JBUSY 3,PD2 [WAIT TIL TERMINATED 3KGD ... LDX 0 CPRW1(1) 3KQ= ... SRL 0 18 3L24 ... BNZ 0 PD3 [SOME FAILURE 3L9W LDCT 6 #400 3LPG STO 6 SWFIX(2) [RESET SWFIX 3M96 LDX 6 PDLINK(2) 3MNQ EXIT 6 1 [OK 3N8B PD3 LDX 4 JLPSDR+1(2) 3NN2 ... SLL 4 3 [LOOK AT REPLY 3P7L ... BNG 4 PD4 [REAL FAIL 3PM= PD1 LDX 0 SWFIX(2) [A FIX 3Q6W BPZ 0 PD7 [NO ACTION ON FIX 3QLG PD5 LDN 1 JLFIXM(2) 3R66 PD6 CALL 0 JLGEOG 3RKQ CALL 6 JLOUT [PUTOUT FIX MESS 3S5B LDX 3 JLPSDR(2) 3SK2 PD9 JDISENG 3,PD9 [WAIT FOR RE-ENGAGE 3T4L BRN PD10 [TRY AGAIN 3TJ= PD4 LDN 1 JLFAILM(2) [A FAIL 3W3W CALL 0 JLGEOG 3WHG LDX 0 SWFIX(2) 3X36 BNG 0 PD8 [ACTION REQUIRED 3XGQ CALL 6 JLOUT [NONE REQ 3Y2B PD7 LDX 3 JLPSDR(2) [RESTORE DL PTR. 3YG2 LDCT 6 #400 3Y^L STO 6 SWFIX(2) [RESET SWFIX 3^F= LDX 6 PDLINK(2) 3^YW EXIT 6 0 42DG # 42Y6 PD8 LDCT 7 #400 43CQ STO 7 SWFIX(2) [RESET SWFIX 43XB SMO PDLINK(2) 44C2 LDX 7 0 [ANY AUXILIARY MESSAGE? 44WL BZE 7 JLER [NO, JUST OUPUT FAIL MESSAGE 45B= CALL 6 JLOUT [YES, OUTPUT FAIL MESSAGE &... 45TW LDX 1 7 [... THEN 46*G ... SLL 1 1 46T6 ... SRL 1 1 [REMOVE BIT 0 & 47#Q ADX 1 2 [OUTPUT AUX MESSAGE 47SB BRN JLER 48#2 # 48RL # 49?= # S/R TO SEARCH ALL DRUM SYSTEMS WHOSE TYPE IS IN 49QW # X7 FOR FILE WHOSE NAME IS IN FINAME; IF FILE FOUND, 4==G # RETURNS POINTER TO DIRECTORY ENTRY IN X1 & POINTER 4=Q6 # TO RELEVANT DL IN X3. ELSE RETURNS WITH X3 NEGATIVE 4?9Q # CALLED VIA X0 4?PB # RETURNS A VALUE IN NONENG, -VE IF NO ON-LINE DRUMS FOUND. 4#92 # 4#NL SEARCHDRUM 4*8= STO 0 SEARCHLK(2) [STORE LINK 4*MW SE1 FINDPEREC 3,APFOTY,7,SE1A 4B7G BNG 3 SE2 [ALL DRUMS SEARCHED 4BM6 STO 3 JLPSDR(2) [FOR PAB 4C6Q LDN 4 0 [READ MODE 4CLB TXU 7 OCT9(2) 4D62 BCC SE3 [SLOW DRUM 4DKL LDN 1 QDRUMCA(2) [HSD 4F5= BRN SE4 4FJW SE3 LDN 1 SDRUMCA(2) 4G4G SE4 LDN 0 0 4GJ6 CALL 6 PERIDRUM [READ DIRECTORY 4H3Q BRN SE1A 4HHB STOZ NONENG(2) 4J32 TXU 7 OCT9(2) 4JC6 ... BCC SE5 [J IF SLOW DRUMSLOW DRUM 4JR= ... LDX 0 JLGHSD(2) [COMPARE "GHSD" WITH 4K3# ... LDX 1 AJLBUFF(2) 4K?B ... TXU 0 0(1) [WORD 0 OF THE HSD DIRECTORY 4KHG ... BCC SE4A [J IF INITIALISATION CHECK IS OK 4KXL ... LINT 3,0 [PICK UP THE HSD'S INTERNAL NUMBER 4L?Q ... TXU 0 0(1) [AND COMPARE WITH WORD ZERO 4LMW ... BCS SE1A [J IF DRUM NOT INITIALISED 4M46 ...SE4A LDX 1 AJLBUFF(2) [START OF DIR -4 FOR HSD 4MDB LDX 0 1(1) [NO.OF DIR ENTRIES 4MY2 SLL 0 2 [*4 4NCL ADN 0 4(1) [START OF VACANT DIR 4NX= BRN SE6 4P?Q ...SE5 LDX 1 AJLBUFF(2) 4PN= ... LDX 0 0(1) 4Q4Q ... ADX 0 AJLBUFFX1K(2) [START OF VACANT DIR 4Q*4 ... LDX 1 AJLBUFF(2) [START OF DIR -4 4QKB ... ADN 1 5 4QTQ SE6 LDX 4 FINAME(2) 4R*B LDX 5 FINAME+1(2) 4RT2 LDX 6 FINAME+2(2) 4S#L SE7 ADN 1 4 4SS= TXU 0 1 [END OF DIR? 4T?W BCC SE1A [YES, TRY NEXT UNIT 4TRG TXU 4 1(1) 4W?6 TXU 5 2(1) 4WQQ TXU 6 3(1) 4X=B BCS SE7 [NOT THIS ENTRY 4XQ2 SE2 LDX 0 SEARCHLK(2) 4Y9L EXIT 0 0 4YP= # 4^8W # 4^NG # MT LOADER COMES HERE IF A CL COMMAND IS ENTERED. 5286 # ALL OPERABLE DRUM SYSTEMS OF THE SPECIFIED 52MQ # TYPE ARE CLEARED BY WRITING AN EMPTY DIRECTORY 537B # TO EACH. 53M2 # 546L JLCL LDCT 0 #400 54L= STO 0 NONENG(2) 555W CALL 0 JLPOINT 55KG LDN 0 #14 5656 SBS 0 JLOCT(2) 56JQ CALL 0 JLHDDR 574B BRN QCL2 [SLOW DRUM 57J2 LDN 7 #31 [HSD TYPE 583L BRN QCL1 58H= QCL2 LDN 7 #11 [SLOW DRUM TYPE 592W QCL1 FINDPEREC 3,APFOTY,7,QCL1A [GET DL POINTER 59GG BNG 3 QCL5 [FINISHED...(STARTED?) 5=26 STO 3 JLPSDR(2) [STORE PSEUDO AB 5=FQ JDISENG 3,QCL1A [IGNORE DISENGAGED DRUMS 5=^B LDX 6 7 5?F2 SBN 6 #31 5?YL BZE 6 QCL3 [HSD 5#D= LPROP 3,4 [GET SLOW DRUM PROPS 5#XW SRL 45 3 5*CG SRL 5 21 [DRUM TYPE IN X5 5*X6 ANDN 4 #17 [NO. OF DRUMS IN X4 5BBQ SMO 5 5BWB MPY 4 SIZEDRUM(2) [X5=TOTAL DRUM SIZE IN K 5CB2 SBN 5 2 [DRUMFREEAREA IN X5 5CTL LDX 4 SDIRWD(2) 5D*= STO 4 SDIR+1(2) 5DSW ORS 5 SDIR+1(2) [COMPLETE WD 1 OF DIRECTORY 5F#G LDN 1 SDRUMCL(2) 5FS6 BRN QCL4 5G?Q ...QCL3 LDX 4 JLGHSD(2) [MARK THE DRUM AS INITIALISED 5GRB ... STO 4 QDIR(2) [BY "GHSD" IN DIRECTORY WORD ZERO 5H?2 LDN 1 QDRUMCL(2) 5HQL QCL4 LDN 4 1 [WRITING MODE 5J== LDN 0 0 5JPW CALL 6 PERIDRUM [WRITE AWAY DIRECTORY 5K9G BRN QCL1A [IGNORE DISENGAGED DRUMS 5KP6 STOZ NONENG(2) 5L8Q BRN QCL1A [TRANSFER OK 5LNB QCL5 LDX 0 NONENG(2) 5M82 BZE 0 JLXOK [DRUMS WERE FOUND 5MML LDX 0 7 5N7= SBN 0 #31 5NLW BZE 0 NOOLHSD [ NO ONLINE 5P6G BRN NOOLDR [ DRUMS WERE FOUND 5PL6 # 5Q5Q # 5QKB # MT LOADER COMES HERE IF AN FI COMMAND COMES IN. 5R52 # AFTER VALIDITY CHECKS ON THE COMMAND THE DRUMS 5RJL # ARE SEARCHED TO SEE IF THE FILE ALREADY EXISTS. 5S4= # THEY ARE THEN SEARCHED TO FIND ROOM FOR THE 5SHW # REQUESTED FILE 5T3G # 5TH6 JLFI LDCT 0 #400 5W2Q STO 0 NONENG(2) 5WGB CALL 0 JLPOINT 5X22 CALL 0 JLHDDR 5XFL BRN SFI1 [SLOW DRUM 5X^= LDN 7 #31 [HSD 5YDW CALL 0 JLFNAMEC [EXTRACT FILENAME 5YYG LDN 4 0 5^D6 LDN 5 0 5^XQ QFI7 BCHX 1 £ 62CB CDB 4 0(1) [EXTRACT K-SIZE OF FILE 62X2 BCC QFI7 63BL SLL 5 3 [K -> BLKS 63W= QFI6 LDCH 6 0(1) 64*W SBN 6 #20 [NOT TERMINATED BY SPACE 64TG BNZ 6 JLWRC 65*6 BNZ 4 TOOBIG [HUGE VALUE 65SQ TXL 5 QFIMAX(2) 66#B BCC TOOBIG [BIGGER THAN AVAILABLE 66S2 BZE 5 JLWRC [NULL PARAMETER 67?L STO 5 SIZE(2) [FILE SIZE REQUIRED 67R= CALL 0 SEARCHDRUM [SEARCH FOR FILE 68=W BPZ 3 USEDNAME [FILENAME ALREADY EXISTS 68QG LDX 3 NONENG(2) 69=6 BNG 3 NOOLHSD [NO ONLINE HSD. 69PQ QFI9 FINDPEREC 3,APFOTY,7,QFI9A 6=9B BNG 3 QNORM [NO ROOM ON HD 6=P2 STO 3 JLPSDR(2) [FOR PERIDRUM 6?8L LDN 1 QDRUMCA(2) 6?N= LDN 4 0 [READ MODE 6#7W LDN 0 0 6#MG CALL 6 PERIDRUM [READ DIR 6*76 BRN QFI9A [DISENGAGED DRUMS IGNORED 6*DW ... LDX 0 JLGHSD(2) [COMPARE "GHSD" WITH 6*MB ... LDX 1 AJLBUFF(2) 6*TW ... TXU 0 0(1) [WORD 0 OF THE HSD DIRECTORY 6B4B ... BCC QFI9B [J IF INITIALISATION CHECK IS OK 6BB6 ... LINT 3,0 [PICK UP THE HSD'S INTERNAL NUMBER 6BMW ... TXU 0 0(1) [AND COMPARE WITH DIR WORD ZERO 6B^L ... BCS QFI9A [J IF DRUM NOT INITIALISED 6C5^ ...QFI9B LDX 1 AJLBUFF(2) 6C=# ... ADN 1 1 6CBN ... LDX 4 0(1) [GET EXISTING NUMBER OF FILES 6CK= TXL 4 QFINO(2) [MAX IS 31 6D4W BCC QFI9A [NOT ENOUGH ROOM HERE IN DIR 6DJG LDX 5 QFIMAX(2) 6F46 ... SBX 5 1(1) [SPARE ROOM ON DRUM 6FHQ ADN 5 7 [INTO X5 6G3B TXL 5 SIZE(2) 6GH2 BCS QFI9A [NO ROOM ON THIS DRUM 6H2L SLL 4 2 [THERE'S ROOM SO DEFINE FILE 6H*3 ... ADX 4 AJLBUFF(2) [FIRST EMPTY DIR ENTRY 6HMD ... ADN 4 4 6H^W LDX 1 4 6J#? ... SMO AJLBUFF(2) 6JLN ... LDX 4 2 [START BLKNO 6J^6 SLL 4 12 6KDQ ADX 4 SIZE(2) [DATUM/SIZE IN 12-12 6KYB LDX 5 SIZE(2) 6L=R ... SMO AJLBUFF(2) 6LK8 ... ADS 5 2 [UPDATE UNUSED BLKNO 6LXL LDN 5 1 6M=3 ... SMO AJLBUFF(2) 6MJD ... ADS 5 1 [INCREMENT NO. OF DIR ENTRIES 6MWW STO 4 0(1) [WD0 OF DIR ENTRY 6NBG ADN 1 1 6NW6 LDN 0 FINAME(2) 6P*Q MOVE 0 3 [MOVE IN FILENAME 6PTB QFI12 LDN 4 1 [WRITE MODE 6Q*2 LDN 1 QDRUMCA(2) 6QSL LDN 0 0 6R#= CALL 6 PERIDRUM [WRITE DIRECTORY BACK 6RRW BRN QFI13 6S?G BRN JLXOK [OK 6SR6 # 6T=Q QFI13 LDX 0 JLPSDR+1(2) [GET REPLY WD. 6TQB SRL 0 18 6W=2 BZE 0 QFI9A [NOT FAILED 6WPL LDN 1 REWRIDR(2) 6X9= CALL 6 JLOUT [OUTPUT MESSAGE 6XNW BRN QFI9A 6Y8G # 6YN6 SFI1 LDN 7 #11 [SLOW DRUM TYPE 6^7Q CALL 0 JLFNAMEC [EXTRACT FILENAME 6^MB LDN 4 0 7272 LDN 5 0 72LL SFI2 BCHX 1 £ 736= CDB 4 0(1) [EXTRACT FILESIZE IN K 73KW BCC SFI2 745G LDCH 6 0(1) 74K6 SBN 6 #20 754Q BNZ 6 JLWRC [NOT TERMINATED BY SPACE 75JB BNZ 4 TOOBIG [HUGE SIZE 7642 BZE 5 JLWRC [NULL PARAMETER 76HL TXL 5 SFIMAX(2) 773= BCC TOOBIG [SIZE > 2047K 77GW STO 5 SIZE(2) [STORE REQUESTED K 782G CALL 0 SEARCHDRUM [CHECK FILE ALREADY EXISTS 78G6 BPZ 3 USEDNAME [IT DOES 78^Q LDX 3 NONENG(2) 79FB BNG 3 NOOLDR [NO ONLINE SLOW DRUN 79^2 SFI3 FINDPEREC 3,APFOTY,7,SFI3A 7=DL BNG 3 SNORM [NO ROOM ANYWHERE 7=Y= STO 3 JLPSDR(2) [FOR PERIDRUM 7?CW LDN 1 SDRUMCA(2) 7?XG LDN 4 0 [READ MODE 7#C6 LDN 0 0 7#WQ CALL 6 PERIDRUM [READ DIRECTORY 7*BB BRN SFI3A [UNIT DISENGAGED 7*NR ... SMO AJLBUFF(2) 7B38 ... LDX 0 5 7B*L ANDN 0 3 [GET DIR SIZE 7BT= ADN 0 1 7C#W SLL 0 12 [ADDRESS OF 1ST WD AFTER DIR 7CM? ... SMO AJLBUFF(2) 7C^N ... LDX 6 0 7D#6 BZE 6 SFI3A [DIR FULL 7DRQ TXL 6 0 7F?B BCC SFI3A [DIR FULL 7FR2 ... ADX 6 AJLBUFFX1K(2) 7G=L LDX 1 6 [VACANT DIR ENTRY 7GK3 ... SMO AJLBUFF(2) 7GXD ... LDX 0 1 7H9W ANDN 0 #3777 [B13-23 =DRUMFREEAREA SIZE 7HPG LDX 5 SIZE(2) 7J96 SBX 0 5 [- REQUIRED FILESIZE 7JNQ BNG 0 SFI3A [NOT ENOUGH ROOM 7K8B LDCT 0 #200 7KN2 STO 0 0(1) [SET B1 OF D/L WD 7L2C ... SMO AJLBUFF(2) 7L#S ... LDX 6 1 7LM= ANDX 6 MASKD(2) [ISOLATE DATUM TO BE 7M6W SRL 6 1 7MLG ORS 6 0(1) [INSERT DATUM 7N66 ORS 5 0(1) [INSERT SIZE 7NKQ ADN 1 1 7P5B LDN 0 FINAME(2) 7PK2 MOVE 0 3 [INSERT FILENAME 7PXC ... LDX 1 AJLBUFF(2) 7Q9S ... SBS 5 1(1) [UPDATE DFA SIZE 7QJ= SLL 5 11 7R3W ... ADS 5 1(1) [UPDATE DFA DATUM 7RHG LDN 5 4 7S36 ... ADS 5 0(1) [UPDATE DIR POINTER 7SGQ SFI4 LDN 4 1 [WRITE MODE 7T2B LDN 0 0 [WITHOUT FIX/FAIL ACTION 7TG2 LDN 1 SDRUMCA(2) 7T^L CALL 6 PERIDRUM [REWRITE DIR 7WF= BRN SFI5 [NOT SUCCESSFUL 7WYW BRN JLXOK [ALL OK 7XDG # 7XY6 SFI5 LDX 0 JLPSDR+1(2) [GET REPLY WORD 7YCQ SRL 0 18 7YXB BZE 0 SFI3A [DISENGAGED - IGNORE IT 7^C2 LDN 1 REWRIDR(2) [FAILED - NOTE IT 7^WL CALL 6 JLOUT 82B= BRN SFI3A [TRY NEXT DRUM 82TW # 83*G # 83T6 # LOADER COMES HERE ON RECEIPT OF A DE COMMAND 84#Q # 84SB JLDE LDCT 0 #400 85#2 STO 0 NONENG(2) 85RL CALL 0 JLPOINT 86?= CALL 0 JLHDDR 86QW BRN SDE1 [SLOW DRUM DELETION 87=G LDN 7 #31 [HSD 87Q6 CALL 0 JLFNAME [EXTRACT FILENAME 889Q CALL 0 SEARCHDRUM [SEARCH FOR FILE 88PB BNG 3 QDE16 [FILE NOT AROUND 8992 STO 3 JLPSDR(2) [FOR PERIDRUM 89NL LDX 4 0(1) [SAVE D/L WD 8=8= SRL 4 12 8=MW STO 4 QDEX4(2) [DATUM OF DELETED FILE 8?7G LDN 0 1 8?FX ... SMO AJLBUFF(2) 8?S# ... SBS 0 1 [UPDATE ENTRY COUNT 8#6Q LDX 0 0(1) 8#LB ANDN 0 #7777 8#YR ... SMO AJLBUFF+2(2) 8*?8 ... SBS 0 0 [UPDATE 1ST FREE BLKNO 8*KL STO 0 QLEN(2) [SAVE LENGTH OF FILE 8B5= STOZ QDCNT(2) [CLEAR BLKS-TO-BE-MOVED COUNTER 8BCM ... SMO AJLBUFF(2) 8BQ4 ... LDX 5 1 8C4G BZE 5 QDE9 [NO RELOCATION TO BE DONE 8CJ6 LDN 0 4(1) 8D3Q LDX 3 5 8DHB SLL 3 2 [NO.WDS TO BE MOVED TO CLOSEPACK 8F32 MOVE 0 0(3) [DIRECTORY 8FGL LDX 3 0(1) [D/L WD OF ENTRY AFTER DELETED 8G2= SRL 3 12 8GFW STO 3 QDEX3(2) [STO DATUM OF 1ST FILE TO BE MOVED 8G^G QDE10 LDX 0 0(1) 8HF6 ANDN 0 #7777 [GET LENGTH OF NEXT FILE 8HYQ ADS 0 QDCNT(2) [ADD TO TOTAL 8JDB LDX 7 0(1) 8JY2 SRL 7 12 8KCL SBX 7 QLEN(2) [SUBTRACT LENGTH OF DELETED FILE 8KX= SLL 7 12 [FROM DATUM OF THIS FILE 8LBW DSA 0 7 [INSERT FILE LENGTH 8LWG STO 7 0(1) [REPLACE D/L WD 8MB6 ADN 1 4 [POINT TO NEXT ENTRY 8MTQ BCT 5 QDE10 [MORE TO SHIFT 8N*B QDE9 LDN 4 1 [WRITE MODE 8NT2 LDCT 0 #400 [FIXES & FAILS IMPORTANT 8P#L LDN 1 QDRUMCA(2) [POINTER TO DRUM CONTROL AREA 8PS= CALL 6 PERIDRUM [WRITE BACK DIRECTORY 8Q?W +REWRIDR [AUXILIARY MESSAGE IF FAILED TRANSFER 8QRG #FID 0 0 1 8R?6 QDE13 LDX 4 QDCNT(2) [TRANSFER OK 8RQQ # 8S=B # 8SQ2 # THE FILES ARE RELOCATED IN 3K CHUNKS 8T9L BZE 4 JLXOK [NO RELOCATION TO DO 8TP= STO 4 QDCNT(2) 8W8W LDX 5 QDEX4(2) [DESTINATION OF NEXT 3K 8WNG LDX 7 QDEX3(2) [SOURCE OF NEXT 3K 8X86 TXL 4 OCT24(2) [LESS THAN 3K TO MOVE? 8XMQ BCC QDE14 [NO 8Y7B STOZ QDCNT(2) [YES, SO CLEAR COUNT 8YM2 BRN QDE15 8^6L QDE14 LDN 4 24 [TO MOVE 3K 8^L= SBS 4 QDCNT(2) [UPDATE STORED BLK COUNT 925W QDE15 LDN 1 QDECA(2) 92KG STO 4 0(1) [INSERT BLK COUNT THIS TRANSFER 9356 LDN 4 0 [READ MODE 93JQ STO 7 2(1) [DTSA THIS TRANSFER 944B LDCT 0 #400 [FIXES & FAILS ARE IMPORTANT 94J2 CALL 6 PERIDRUM [READ A CHUNK 953L +RELOCFAIL [AUX. MESSAGE IF TRANSFER FAILS 95H= #FID 0 0 1 962W LDN 1 QDECA(2) [ 96GG STO 5 2(1) [DTSA FOR REWRITING 9726 LDN 4 1 [WRITE MODE 97FQ LDCT 0 #400 [FIXES & FAILS IMPORTANT 97^B CALL 6 PERIDRUM [REWRITE CHUNK 98F2 +RELOCFAIL [AUX. MESSAGE IF TRANSFER FAILS 98YL #FID 0 0 1 99D= ADN 5 24 [UPDATE BS ADDRESSES... 99XW ADN 7 24 [... 9=CG BRN QDE13 [AND AGAIN ... 9=X6 QDE16 LDX 3 NONENG(2) 9?BQ BNG 3 NOOLHSD 9?WB BRN JLNOFILE 9#B2 # 9#TL SDE1 LDN 7 #11 [SLOW DRUM 9**= CALL 0 JLFNAME [EXTRACT NAME OF FILE TO BE DELETED 9*SW CALL 0 SEARCHDRUM [SEARCH FOR FILE 9B#G BNG 3 SDE8 [NOT 9BS6 LDX 7 0(1) 9C?Q ANDN 7 #1777 [EXTRACT K-SIZE OF FILE & 9CL7 ... SMO AJLBUFF(2) 9CYJ ... ADS 7 1 [UPDATE DRUMFREEAREA SIZE & 9D?2 SLL 7 11 9DKC ... SMO AJLBUFF(2) 9DXS ... SBS 7 1 [DATUM THEREOF 9F== SRL 7 1 9FPW # 9G9G # X7 NOW IN POSN TO UPDATE DATA OF ALL SUCCEEDING FILES. 9GP6 # CALCULATE CORE ADDRESS OF END OF DIR ENTRIES. 9H8Q # 9HJF ... SMO AJLBUFF(2) 9HY8 ... LDX 4 0 [DRUM POINTER 9J?X ... ADX 4 AJLBUFFX1K(2) 9JML LDX 0 4(1) 9K7= ANDX 0 MASKA(2) [EXTRACT DATUM OF SUCCEEDING FILE 9KLW STO 0 START(2) [& KEEP SAFE. 9L6G # 9LL6 # UPDATE ALL SUCCEEDING DIR ENTRIES 9M5Q # 9MKB STOZ QDCNT(2) [RUNNING TOTAL OF K TO BE MOVED 9N52 SDE6 LDN 0 4(1) [NEXT ENTRY 9NJL # ACCS NOW STAND THUS : 9P4= # X0 = POINTER TO NEXT ENTRY. 9PHW # X1 = POINTER TO THIS ENTRY (HOLE). 9Q3G # X2 = DATUM OF LOADER. 9QH6 # X4 = CORE ADDR OF FIRST UNUSED WD IN DIR. 9R2Q # X7 = K-LENGTH OF DELETED FILE IN B3-B13. 9RGB # 9S22 # 9SFL TXL 0 4 9S^= BCC SDE5 [FINISHED UPDATING DIR 9TDW MOVE 0 4 [MOVE ENTRY DOWN 9TYG SBS 7 0(1) [DECREMENT DATUM 9WD6 LDX 0 0(1) [WANT LENGTH OF THIS FILE 9WXQ ANDN 0 #1777 9XCB SLL 0 10 [WDS TO K 9XX2 ADS 0 QDCNT(2) [ADD TO RUNNING TOTAL 9YBL ADN 1 4 [UPDATE POINTER 9YW= BRN SDE6 [AND AGAIN... 9^*W # 9^TG SDE5 LDN 0 4 =27X ... SMO AJLBUFF(2) =2G# ... SBS 0 0 [UPDATE ADDR OF 1ST UNUSED WD IN DIR =2SQ LDN 4 1 [WRITING MODE =3#B LDN 1 SDRUMCA(2) =3S2 LDCT 0 #400 [FIXES & FAILS IMPORTANT =4?L CALL 6 PERIDRUM [REWRITE DIRECTORY =4R= +REWRIDR [AUXILIARY MESSAGE IF FAILED TRANSFER =5=W #FID 0 0 1 =5QG LDX 5 START(2) [WD.DATUM OF 1ST FILE TO BE MOVED =6=6 SDE7 LDX 0 QDCNT(2) =6PQ BZE 0 JLXOK [NO MORE RELOCATION TO DO =79B STO 0 QDCNT(2) [NEW NO.OF WDS LEFT =7P2 TXL 0 THREEK(2) =88L BCS SDE3 [<3K LEFT TO MOVE =8N= LDN 6 #6000 [3K =97W BRN SDE4 =9MG SDE3 LDX 6 0 ==76 SDE4 LDN 1 SDECA(2) ==LQ STO 6 0(1) [PLACE IN COUNT =?6B STO 5 2(1) [DTSA ENTERED =?L2 LDN 4 0 [READ MODE =#5L ADX 5 6 [UPDATE D-ADDR OF NEXT WD TO BE MOVED =#K= STO 6 START(2) [KEEP NO.WORDS BEING MOVED =*4W LDCT 0 #400 [FIXES & FAILS IMPORTANT =*JG CALL 6 PERIDRUM [READ A CHUNK =B46 +RELOCFAIL [AUX. MESSAGE IF TRANSFER FAILS =BHQ #FID 0 0 1 =C3B LDN 1 SDECA(2) =CH2 SBS 7 2(1) [UPDATE DTSA =D2L LDN 4 1 [WRITE MODE =DG= LDCT 0 #400 [FIXES & FAILS IMPORTANT =D^W CALL 6 PERIDRUM [WRITE CHUNK AWAY =FFG +RELOCFAIL [AUX. MESSAGE IF TRANSFER FAILS =F^6 #FID 0 0 1 =GDQ LDX 0 START(2) =GYB SBS 0 QDCNT(2) [SUBTRACT NO.WDS MOVED FROM TOTAL =HD2 BRN SDE7 [AND AGAIN =HXL SDE8 LDX 3 NONENG(2) =JC= BNG 3 NOOLDR =JWW BRN JLNOFILE =KBG # =KW6 # MT LOADER COMES HERE ON RECEIPT OF AN HD/DR COMMAND; =L*Q # IF THE FILE SPECIFIED IS NOT FOUND BY THE SEARCH =LTB # ROUTINE THEN 'FILE NOT FOUND' IS OUTPUT. =M*2 # OTHERWISE -> K2LOADERMT TAKING X3->DL FOR DRUM =MSL # ON WHICH FILE HAS BEEN FOUND & X1->DIRECTORY ENTRY =N#= # FOR FILE. =NRW # =P?G JLHD =PR6 JLDR =Q=Q CALL 0 JLSWAPCH [CHECK SWAP RESIDENCE DECLARED =QQB SMO 1 =R=2 LDX 7 JLTTAB-1(2) [GET DEVICE TYPE =RPL STO 7 JLBS(2) =S9= LDCT 0 #400 =SNW STO 0 NONENG(2) =T8G CALL 0 JLPOINT =TN6 CALL 0 JLFNAME =W7Q CALL 0 SEARCHDRUM =WMB # =X72 BPZ 3 K2LOADERMT [FILE FOUND =XLL LDX 3 NONENG(2) =Y6= BPZ 3 JLNOFILE [FILE NOT FOUND =YKW LDX 3 JLBS(2) =^5G SBN 3 9 =^K6 BZE 3 NOOLDR [ NO DRUM ... ?24Q BRN NOOLHSD [ ONLINE. ?2JB # ?342 # ?3HL # ?43= ...#GAP 767-0? ?4GW # ?52G #END ^^^^ ...546317250001