LOADERDR867

(George Source)

Macros used: DCA, FINDPEREC, GPERI, JBUSY, JDISENG, LINT, LPROP, ON

LOADERDR867.txt
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