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