{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: LOADERDR867)}}
====== LOADERDR867 ======
(George Source)
**Macros used:** [[george:macro:DCA|DCA]], [[george:macro:FINDPEREC|FINDPEREC]], [[george:macro:GPERI|GPERI]], [[george:macro:JBUSY|JBUSY]], [[george:macro:JDISENG|JDISENG]], [[george:macro:LINT|LINT]], [[george:macro:LPROP|LPROP]], [[george:macro:ON|ON]]
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