MATALO860

(George Source)

Macros used: ALTLEN, BITDEFS, BS, BXE, BXL, BXU, DOWN, FINMOVE, FPCACA, INMOVE, JBC, JBS, MENDAREA, MFREEW, MHUNTW, SEG, SEGENTRY, TESTRPN2, TOPFCA2, TOPFCAB2, TOPFCB2, TRACEIF, UP, UPPLUS

MATALO860.txt
22FL ...      SEG   MATALO,8,FILE,OLP   
22^= ...      SEGENTRY K1MATALO,ZMAGSTEP   [MAGSTEP MACRO ENTRY 
23DW ...      SEGENTRY K2MATALO,ZMAGREAD   [MAGREAD MACRO ENTRY 
23YG ...      SEGENTRY K3MATALO,ZFTM       [FTM MACRO ENTRY 
24D6    [   
24RN ...[  THIS SEGMENT IMPLEMENTS THE FILESTORE MAGNETIC TAPE FILE ACCESS  
257= ...[ MACROS USED BY LOAD & CONT EXTRACODE (& BY RV TESTING SYSTEM).
25GS ...[ IT DOES NOT PERFORM ANY TRANSFERS ON THE FILE, THESE BEING DONE   
25WB ...[ VIA BUFFERS ORGANIZED BY ENTRY TO K7MTOBJ FOR INDEX BUFFERS & K7MTCODE
269Y ...[ FOR BULK BUFFERS. 
26KG ...[ THE FILE MUST BE OPEN IN READR OR WRITE MODE @ DEPTH ZERO.
26^4 ...[   
27#L ...[ FOR FORMAT OF MT FILESTORE FILES SEE PRM 5.5.3.2  
27N8 ...[ FREADWORD : B0-11 :INDEX BLOCKLET POINTER RELATIVE TO FBLKS*BLN   
283Q ...[             B12-23:WORD POINTER WITHIN INDEX BLOCKLET 
28C# ...[   
28QW ...[    USE OF WORKING SPACE   
296D ...[              AWORK1 -B0-5  =LENGTH OF B TYPE TRANSFER (IN BS BLOCKS)  
29G2 ...[                      B6-14 =LENGTH OF A TYPE TRANSFER 
29TJ ...[                      B15-23=LENGTH OF C OR D TYPE TRANSFER
2=96 ...      BITDEFS  AWORK2,0,STEP,SKIP,READ,MAGLONG  
2=JN ...[              AWORK3  WORD POINTER IN BULK FILE
2=Y= ...[              AWORK4  MAGSTEP = DENOTES PROGRAM ADDRESS
2??S ...[                      MAGREAD = AMOUNT OF DATA ALREADY MOVED TO FRRB   
2?MB ...[   
2#2Y ...SFINDEX 
2#BG ...#HAL  FILE+FINDEX,0                [INDEX READ BLOCK
2#Q4 ...SFINDEXW
2*5L ...#HAL  FILE+FINDEXW,0               [INDEX WRITE BLOCK   
2*F8 ...SFEXTRA 
2*SQ ...#HAL  FILE+FEXTRA,0 
2B8L    TMARK          4HMARK   
2BN=    TEND           4HEND
2C7W    #   
2CKY ...SBUFF          [SEARCH FOR BULK OR INDEX BUFFER BLOCK   
2D42 ...[    REQUIRES X4=BLOCK PTR OF REQUIRED BLOCK
2DG4 ...[             X2->FCB   
2DY6 ...[              LINK X5; X0,X6 DESTROYED 
2FB8 ...[    GIVES    X1->REQUIRED BLOCK IF AVAILABLE, X2=FX2   
2FS= ...[ IF THE BLOCK IS LOCATED THE EXIT IS ON X7, IT BEING ASSUMED   
2G=# ...[ THAT THE SUBROUTINE IS CALLED FROM SFINDBUFF OR SFINDINDX WHICH ARE   
2GNB ...[ THEMSELVES CALLED ON X7.  
2H6D ...[ IF THE BLOCK IS NOT FOUND EXIT IS ON X5 TO ENABLE THE CALLING SUB-
2HJG ...[ ROUTINE TO ENTER K7MTOBJ OR K7MTCODE AS APPROPRIATE BEFORE
2J2J ...[ REPEATING THE SEARCH. 
2JDL ...[   
2JWN ...      LDX   1  FPTR(2)             [MISS OUT THE FSTACK 
2K#Q ...      LDX   6  4                   [BLOCK POINTER   
2KQS ...      SLC   6  2                   [BLOCKLET BITS   
2L8W ...      ANDN  6  3                   [MASK OUT OTHERS 
2LLY ...      SMO      4
2M52 ...      ORX   6  0(2)                [BLOCK(LET) NUMBER   
2MH4 ...      LDX   2  FX2  
2M^6    SLOOP   
2NDQ          LDX   1  FPTR(1)  
2NYB ...      BXE   1  CXFI,(5)            [EXIT IF END OF FILE CHAIN   
2PD2 ...      LDX   0  ATYPE(1) 
2PXL ...      BXE   0  FFSFCB,(5)          [EXIT IF NEXT FCB
2QC= ...      SMO      FX1  
2QWW ...      BXE   0  SFEXTRA,(5)         [ EXIT IF END OF ! RING  
2RBG ...      BXE   0  FFSFURB,SFURB       [J IF FURB FOUND 
2RW6 ...      BXE   0  FFSFUWB,SFURB       [J IF FUWB FOUND 
2S*Q ...      SMO      FX1  
2STB ...      BXE   0  SFINDEXW,SFURB      [J IF FINDEXW
2T*2 ...      SMO      FX1  
2TSL ...      BXU   0  SFINDEX,SLOOP       [TRY NEXT BLOCK IF NOT FINDEX
2W#= ...SFURB   
2WRW ...      BXE   6  BACK2(1),(7)        [EXIT IF RIGHT BLOCK 
2X?G ...      BRN      SLOOP               [ELSE TRY NEXT   
2XR6 ...[   
2Y=Q ...SFINDINDX      [FIND THE CURRENT INDEX BLOCKLET 
2YQB ...[              EXPECTS X2=FX2; LINK X7; X0,X4,X5,X6 DESTROYED   
2^=2 ...[              ON EXIT X1->FINDEX, X2=FX2, X3->FCA  
2^PL ...[   
329= ...      TOPFCAB2 3,2                 [X3->FCA : X2->FCB   
32NW ...      LDX   4  FREADWORD(3)        [PICK UP BLOCK MOD   
338G ...      BPZ   4  SNOINIT             [J.UNLESS INITIALISATION REQUIRED
33N6 ...      LDX   4  FBLMOD(2)           [FILE HAS NOT BEEN ACCESSED YET  
347Q ...      SBN   4  FBLKS-A1 
34MB ...      BZE   4  SEOF                [J. IF FILE IS EMPTY 
3572 ...[THE BLOCK PTR IS THE USUAL DISTANCE THROUGH FCB BUT IN BITS 0-9
35LL ...[B10,11 GIVE THE BLOCKLET WITHIN THE BLOCK  
366= ...      LDN   4  FBLKS*4  
36KW ...      SLL   4  12   
375G ...      STO   4  FREADWORD(3)        [SET BLOCKLET POINTER TO B.O.F.  
37K6    SNOINIT 
384Q ...      SRL   4  12   
38JB ...      SRC   4  2                   [CONVERT TO PTR IN FCB   
3942 ...      CALL  5  SBUFF               [LOCATE BUFFER : EXIT ON X7 IF FOUND 
39HL ...      SBX   7  FX1                 [BUFFER NOT FOUND
3=3= ...      DOWN     MTOBJ,7             [GET BLOCK INTO FILE CHAIN   
3=GW ...      TESTRPN2 OK,SEOF             [TREAT AS EOF IF FAILED OR CORRUPT   
3?2G ...      ADX   7  FX1  
3?G6 ...      BRN      SFINDINDX           [START AGAIN 
3?^Q ...[   
3#FB ...[   
3#^2 ...SFINDBUFF      [FIND THE CURRENT BULK BUFFER BLOCK  
3*DL ...[              EXPECTS X2=FX2; LINK X7:  ON EXIT X1->FURB, X2->FCB  
3*Y= ...[              X0,X4,X5,X6 DESTROYED: X3 UNCHANGED  
3BCW ...[   
3BXG ...      LDX   4  AWORK3(2)           [BULK FILE ADDRESS   
3CC6 ...      TOPFCB2  2
3CWQ ...      SRL   4  9                   [CONVERT TO BLOCKS   
3DBB ...      ADX   4  BULKMOD(2)          [PLUS NUMBER OF INDEX BLOCKS 
3DW2 ...      ADN   4  FBLKS               [GET BLOCK NO. IN X4 
3F*L ...      CALL  5  SBUFF               [LOCATE BUFFER : EXIT ON X7 IF FOUND 
3FT= ...      SBX   7  FX1                 [NOT FOUND   
3G#W ...      DOWN     MTCODE,7            [GET INDEX BLOCK INTO FILE CHAIN 
3GSG ...      ADX   7  FX1  
3H#6 ...      BRN      SFINDBUFF           [START AGAIN 
3HRQ ...[   
3J?B ...[   
3JR2 ...SFREEFRRB      [GET RID OF FRRB IF MAGREAD MACRO
3K=L ...      JBC      (7),FX2,READ        [J IF MAGREAD
4WJG ...      MFREEW   FILE,FRRB
4WL4 ...      EXIT  7  0
4WML ...[   
4WP8 ...[   
4WQQ    #   
4X=B ...[ FTM MACRO ENTRY   
4XQ2    ZFTM
4Y9L    [   
4YJ3 ...      STOZ     AWORK2(2)           [CLEAR SWITCH WORD   
4YWD ...      BS       2,SKIP              [SET FTM MACRO ENTRY MARKER  
4^8W          BRN      READASWELL   
4^NG    [   
5286    ZMAGSTEP       [ENTRY FROM MAGSTEP MACRO
52MQ    [   
52^6 ...      STOZ     AWORK2(2)           [CLEAR SWITCH WORD   
53=G ...      BS       2,STEP              [SET MAGSTEP MACRO ENTRY MARKER  
53HW ...      LDX   0  ACOMMUNE8(2)        [OBJECT PROGRAM ADDRESS  
53T= ...      STO   0  AWORK4(2)
546L          BRN      READASWELL   
54L=    [   
555W    ZMAGREAD       [ENTRY FROM MAGREAD MACRO
55KG    [   
562G ...      STOZ     AWORK2(2)           [CLEAR SWITCH WORD   
56CG ...      BS       2,READ              [SET MAGREAD MACRO ENTRY MARKER  
56SG ...      STOZ     AWORK4(2)           [AMOUNT OF DATA ALREADY MOVED TO FRRB
579G ...      SETUPCOR ACOMMUNE9(2),3,FILE,FRRB [BUFFER FOR MAGREAD 
57LG ...[   
583L    READASWELL  
58H= ...[   
592W ...      LDX   0  ACOMMUNE9(2) 
59GG          STO   0  AWORK1(2)
5=26 ...      TRACEIF  K6MATALO,99,299,AWORK2(2),MTMACRO [B0=STEP;B1=FTM;B2=READ
5=FQ ...[   
5?YL    RESTMERJ
5#D= ...[   
5#XW ...      CALL  7  SFINDINDX           [X1->FINDEX  
5*CG ...      TRACEIF  K6MATALO,99,299,FREADWORD(3),MTPOSN  
5*X6 ...      LDEX  0  FREADWORD(3)        [WORD POINTER IN FINDEX  
5BWB          ADX   1  0
5CB2 ...      LDN   7  0                   [ZERO POINTER INCREMENT 1ST TIME 
5CTL ...[   
5J==    SFTMERGE
5JPW ...[   
5K9G ...      ADX   1  7                   [INCREMENT POINTER TO INDEX BLOCK
5QKB          LDX   4  A1+1(1)             [PICK UP NEXT WORD IN INDEX  
5R52          BZE   4  XLASTREC            [J.IF AT THE END OF A BLOCKLET   
5RG2 ...      BNG   4  NOBULK              [J UNLESS BULK RECORD
5RX2 ...      LDN   7  AMTDATA  
5S#2 ...      ADS   7  FREADWORD(3)        [INCREMENT WORD POINTER  
5SP2 ...      JBS      SFTMERGE,2,SKIP     [J TO TRY NEXT RECORD IF FTM 
5T62 ...[ MAGREAD & MAGSTEP ONLY FROM HERE: TRANSFER FROM BULK FILE 
5TH6          SBX   4  AWORK1(2)
5W2Q          BZE   4  RIGHTLEN            [COUNT=RECORD LENGTH 
5WGB ...      BNG   4  SHORTBLOCK          [J IF COUNT>RECORD LENGTH
5X22 ...      BS       2,MAGLONG           [SET LONG BLOCK MARKER   
5XFL ...      BRN      RIGHTLEN 
5X^= ...[   
5YDW    SHORTBLOCK  
5YYG          ADS   4  AWORK1(2)           [USE RECORD LENGTH AS COUNT  
5^D6 ...      JBS      RIGHTLEN,2,STEP     [J IF MAGSTEP
62CB          MHUNTW   3,FILE,FRRB  
62X2          ALTLEN   3,AWORK1(2)         [SHORTEN BLOCK   
63BL ...      CALL  7  SFINDINDX           [RECOVER POINTER TO INDEX RECORD 
63W= ...      LDEX  0  FREADWORD(3) 
64*W ...      SBN   0  AMTDATA  
65SQ          ADX   1  0
66#B ...[   
66S2    RIGHTLEN
678G ...[   
67K2 ...[ REGION             A    B   C              D X
67^G ...[ TRANSFER          *** **** ***        OR   *  
68B2 ...[ BLOCK BOUNDARY  ^    ^    ^    ^         ^    ^   
68QG ...[   
6972 ...      LDX   0  AMTDATA+A1(1)       [BULK FILE ADDRESS OF NEXT RECORD
69HG ...      SBX   0  A1+1(1)             [ -LENGTH OF THIS RECORD=
69Y2 ...      STO   0  AWORK3(2)           [ CURRENT BULK FILE ADDRESS (S)  
6=#G ...      ADX   0  AWORK1(2)           [ + TRANSFER LENGTH=S+A+B+C OR S+D   
6=P2 ...      ANDN  0  #777                [GIVES C OR D+X  
6?5G ...      LDX   3  AWORK1(2)           [TRANSFER LENGTH (A+B+C) OR D
6?G2 ...      STO   0  AWORK1(2)           [B15-23=C OR D+X (B0-14=0)   
6?WG ...      SBX   0  3                   [C-(A+B+C)=-A-B OR D+X-D=-X  
6#?2 ...      NGX   0  0                   [GIVES   B+A    OR  -X   
6#MG          BNG   0  TYPED               [  THE PRESENCE OF X DENOTES TYPE D  
6*76 ...      SLL   0  9                   [MOVE  B+A TO B0-14  
6*LQ    TYPED   
6B6B ...      ADS   0  AWORK1(2)           [HENCE B+A+C    OR   D   IN AWORK1   
6BL2 ...      TRACEIF  K6MATALO,199,299,AWORK1(2),TYPE BAC  
6C5L ...      LDX   3  AWORK1(2)
6CK= ...      SRL   3  9
6D4W ...      ANDN  3  #777                [PICK UP A   
6DJG ...      BZE   3  QNOTA               [J IF NO TYPE A TRANSFER 
6F46 ...      CALL  7  SFINDBUFF           [GET X1->FURB
6FHQ ...[   
6G3B ...MOREBL  
6GH2 ...[   
6H2L ...      LDEX  4   AWORK3(2)          [B15-23 OF S GIVE START ADDRESS  
6HG= ...      ADN   4  A1(1)               [GET X4->(NEXT) CHUNK OF DATA
6H^W ...[   
6JFG ...QUALMOVE       [TRANSFER FROM INDEX FILE MERGES HERE
6J^6 ...[   
6KDQ ...      JBS      MAGSTEPA,2,STEP     [J IF MAGSTEP
6LXL          MHUNTW   1,FILE,FRRB  
6M=3 ...      LDN   5  A1(1)               [GET ADDRESS OF A1 OF FRRB   
6MJD ...      ADX   5  AWORK4(2)           [JUMP OVER DATA ALREADY INSERTED 
6MWT ...      MOVE  4  0(3)                [MOVE IN THIS CHUNK  
6N9= ...      BRN      QNOTAX              [MERGE WITH MAGSTEP  
6NHM ...[   
6NW6    MAGSTEPA
6P*Q ...      LDX   5  AWORK4(2)           [OBJECT PROGRAM ADDRESS  
6PTB ...      FPCACA   1,2                 [GET X1->APET
6Q*2 ...#SKI  G4                           [USE INMOVE IN G4 BECAUSE START  
6QSL ...      INMOVE  1,5,4,3              [ADDRESS NOT IN 1ST K OF CHECKED AREA
6R#= ...#SKI  G3
6RRW ...      FINMOVE  1,5,4,3             [MOVE DATA INTO PROGRAM AREA 
6S?G ...[   
6SR6 ...QNOTAX         [UPDATE POINTERS WITH LENGTH OF DATA MOVED   
6T=Q ...[   
6TQB ...      ADS   3  AWORK3(2)           [UPDATE S
6W=2 ...      ADS   3  AWORK4(2)           [UPDATE PROGRAM OR FRRB ADDRESS  
6WPL ...[   
6X9= ...QNOTA          [CHECK FOR MORE DATA 
6XNW ...[   
6Y8G ...      LDCH  7  AWORK1(2)           [PICK UP B (B0-5)
745G          BZE   7  QNOTB               [J.IF NO TYPE B TRANSFER 
74K6 ...      SBN   7  1                   [DECREMENT B 
754Q ...      DCH   7  AWORK1(2)           [   & RESTORE
75JB ...      CALL  7  SFINDBUFF           [GET X1->FURB
7642 ...      LDN   3  GSBS                [SET TRANSFER LENGTH=WHOLE BLOCK 
76HL ...      BRN      MOREBL              [MOVE DATA   
773= ...[   
7LM=    QNOTB   
7M6W ...      LDEX  3  AWORK1(2)           [PICK UP C OR D (B15-23) 
7MLG ...      BZE   3  QNOTC               [J IF NO TYPE C OR D TRANSFER
7N66 ...      ERS   3  AWORK1(2)           [CLEAR C OR D
7NKQ ...      CALL  7  SFINDBUFF           [GET X1->FURB
7P5B ...      BRN      MOREBL   
7PK2 ...[   
7Q4L ...XLASTREC       [END OF INDEX BLOCKLET   
7QJ= ...      TOPFCA2  3
8992          LDX   0  FREADWORD(3) 
89NL ...      ADX   0  BIT11               [INCREMENT BLOCKLET POINTER  
8=8= ...      ANDX  0  HALFTOP             [ & ZEROIZE WORD POINTER 
8=MW ...      STO   0  FREADWORD(3)        [RESET   
8#6Q          BRN      RESTMERJ 
8#F7 ...[   
8#RJ ...NOBULK         [ALL MACROS FROM HERE
8*62          LDX   3  FX1  
8*KL          BXE   4  TEND(3),SEOF        [J IF EOF REACHED
8G2=          BXE   4  TMARK(3),SMARK      [J IF TAPEMARK   
8GFW ...[              MUST BE QUAL OR HDDR 
8G^G ...      LDN   7  AMTQUAL  
8HF6 ...      TOPFCA2  3
8HYQ ...      ADS   7  FREADWORD(3)        [INCREMENT WORD POINTER  
8JDB ...      JBS      SFTMERGE,2,SKIP     [J IF FTM
8JY2 ...      LDN   4  A1+2(1)             [ADDRESS OF QUALIFIER DATA   
8KCL ...      LDN   3  AMTSENT             [LENGTH OF DATA  
8KX= ...      BXL   3  AWORK1(2),NOTLONG
8LBW ...      BXE   3  AWORK1(2),NOTLONG   [J IF BUFFER>=DATA LENGTH
8LWG ...      BS       2,MAGLONG           [SET LONG BLOCK MARKER   
8MB6 ...      LDX   3  AWORK1(2)           [CUT TRANSFER LENGTH TO BUFFER SIZE  
8MTQ ...NOTLONG 
8N*B ...      STOZ     AWORK1(2)           [SET A,B & C ZERO
8NT2 ...      BRN      QUALMOVE            [MOVE DATA TO PROGRAM OR FRRB
8P#L ...[   
8PS= ...QNOTC          [TRANSFER COMPLETE   
8Q?W ...[   
8QRG ...      JBC      NORMALEXIT,2,MAGLONG[J UNLESS LONG BLOCK 
95H=          UPPLUS   2                   [LONG BLOCK  
95R4 ...[   
962W    NORMALEXIT  
96GG          UPPLUS   3
96Q# ...[   
9726    SEOF
98NS ...      CALL  7  SFREEFRRB
98YL          UP                           [END OF FILE 
99=2 ...[   
99HB ...SMARK          [TAPEMARK FOUND  
99SQ ...[   
9=66 ...      TOPFCA2  3
9=CG          LDN   0  AMTMARK  
9=X6          ADS   0  FREADWORD(3)        [UPDATE THE POINTERS 
9?6Y ...      CALL  7  SFREEFRRB
9?BQ          UPPLUS   1                   [TAPE MARK   
9?LJ ...[   
9?WB    [   
9#B2          MENDAREA AOLPGAP,K99MATALO
9#TL    #END
^^^^ ...74137221000300000000