8 22FL #OPT K0EDOBJ=K0OLP 8 22_= #OPT K6EDOBJ=K6OLP 7 23DW #LIS K0EDOBJ 14 23YG #SEG EDOBJ72 [7OPAE 9 24D6 8HEDOBJ7 11 24XQ SEGENTRY K1EDOBJ,Z1EDOBJ 11 25CB ... SEGENTRY K2EDOBJ,NINCRCUBS 12 25X2 ... SEGENTRY K21EDOBJ,Z1CONFURWB 12 26BL ... SEGENTRY K22EDOBJ,Z2CONFURWB 4 26W= ...[ 21 29S2 # THIS SEGMENT IMPLEMENTS TRANSFER MODE PERIS TO AN OFF-LINE DA FILE. 19 2=?L # ILLEGAL PERIS OR NON-TRANSFER MODES CAUSE ENTRY TO EDSTART. 4 2=R= # 2 2?=W 2 2#PQ 7 2*P2 FILETRAN 4 2*P_ ...[ 21 2*QY ...XCHECK [CHECKA SUBROUTINE: LINK X7; EXIT+2 IF OK ELSE EXIT+0 19 2*RX ...[ X6=PROG START ADDRESS; X5=LENGTH TO CHECK; X2=FX2 15 2*SW ...[ (G4:- X3=PERMISSIONS REQUIRED) 17 2*TT ...[ LEAVES X1=FX1 & X2=FX2; X3-X6 UNCHANGED 5 2*WS ...#SKI G4 17 2*XR ... SBX 7 FX1 [CAN COORDINATE IN G4 19 2*YQ ... CHECKA 6,5,XCHECKERR,APETADDR(2),3,XCHECKCOOR,,,K1EDOBJ 6 2*_P ...XCHECKCOOR 7 2B2N ... ADN 7 2 6 2B3M ...XCHECKERR 5 2B4L ...#SKI G4 8 2B5K ... ADX 7 FX1 7 2B6J ... EXIT 7 0 4 2B7H ...[ 2 2B8L 12 2B=J ...#SKI G4 [TO SAVE SPACE IN G4 4 2B#G ...( 5 2BBD ...OUTMOVE 11 2BDB ... OUTMOVE APETADDR(2),6,7,5 7 2BG# ... EXIT 3 0 4 2BJ= ...) 4 2BL8 ...[ 21 2BN= Z1EDOBJ [NORMAL RE-ENTRY AFTER PREVIOUS PERI 2 2C7W 16 2CMG ... LDX 3 EVENT4(2) [TYPE-MODE WORD 16 2F6B LDCH 4 3 [B18-23 OF MODE 7 2FL2 SRL 3 6 7 2G5L LDX 6 3 16 2GK= ANDN 3 #17 [B14-17 OF MODE 18 2H4W BNZ 3 NOTRAN [JIF NOT A TRANSFER MODE 9 2HJG ... LDN 3 FYMODE 8 2K3B ANDN 4 #37 7 2KH2 SBN 4 4 15 2L2L BNG 4 TRAM [JIF MODE 0-3 7 2LG= SBN 4 3 16 2L_W ... BNZ 4 XILL [JIF NOT MODE 7 7 2MFG NGN 4 1 8 2M_6 BRN MADD 4 2NDQ TRAM 7 2NYB LDN 4 1 19 2PD2 ... ANDX 4 EVENT4(2) [X4=0 FOR READ, 1 FOR WRITE 19 2PXL BNZ 4 NADD40 [JIF WRITE, ADDITIVE #40 OK 4 2QC= MADD 8 2QWW LDN 0 #40 9 2RBG ... ANDX 0 EVENT4(2) 18 2RW6 ... BNZ 0 XILL [ADDITIVE #40 NOT ALLOWED 5 2S*Q NADD40 18 2STB ANDN 6 #760 [ISOLATE ADDITIVE MODES 14 2T*2 BZE 6 MADDOK [JIF NONE 8 2TSL SBN 6 #200 15 2W#= BZE 6 MADDOK [JIF #20000 8 2WRW SBN 6 #100 16 2X?G ... BNZ 6 XILL [JIF NOT #30000 5 2XR6 MADDOK 20 2Y=Q BZE 4 NCHWR [JIF NOT TO CHECK WRITE ACCESS 14 2YQB BNG 4 NCHWR [ DITTO 9 2_=2 ... LDN 3 FYNOWRITE 13 2_PL ... JBC XILL,FILERING(2),BAMWRITE 5 338G NCHWR 7 33N6 LDN 5 5 9 3572 LDX 6 ACAP(2) 5 359K ...#SKI G4 21 35#8 ... LDN 3 CHREAD+CHWRITE [NEED READ & WRITE ACCESS TO CONTROL 18 35BR ... CALL 7 XCHECK [CHECK RESERVATIONS ETC. 9 35FB ... LDN 3 FYNOCA 21 35H_ ... BRN XILL [J IF RESERVATION OR PERMISSION VIOLA 9 35LL LDN 7 ACA1(2) 5 35SW ...#SKI G3 16 3636 ... FOUTMOVE APETADDR(2),6,7,5 [MOVE CA TO AOLPT 5 369B ...#SKI G4 16 36CL ... CALL 3 OUTMOVE [MOVE CA TO AOLPT 20 36KW BNG 4 OKB [IGNORE COUNT & ADDRESS IF MODE 7 9 375G NGX 0 ACA3(2) 9 37CX ... LDN 3 FYCOUNT 18 37Q# ... BPZ 0 XILL [JIF COUNT -VE OR ZERO 7 384Q LDN 0 2 9 38JB ANDX 0 ACA1(2) 16 3942 BNZ 0 TCYL [JIF MODE 2 OR 3 9 39HL LDX 0 AEORG(2) 8 3=3= ANDN 0 #77 7 3=GW SLL 0 7 10 3?2G BXGE 0 ACA3(2),OKCT 19 3?G6 STO 0 ACA3(2) [RESET COUNT IF > BKT SIZE 4 3?_Q TCYL 4 3#FB OKCT 10 3#_2 PMODES 3,APETADDR(2) 8 3*DL LDX 0 BSP16 8 3*Y= ANDN 3 #10 8 3BCW BZE 3 RADD 9 3BXG LDX 0 BITS22LS 4 3CC6 RADD 20 3CWQ ANDS 0 ACA4(2) [MASK OUT UNWANTED BITS IN ADDR 5 3DBB #SKI G4 4 3DW2 ( 21 3F*L ... LDN 3 CHWRITE [CHECK WRITE ACCESS TO BUFFER IF READ 8 3FT= BZE 4 WCH 21 3G#W ... LDN 3 CHREAD [CHECK READ ACCESS TO BUFFER IF WRITE 4 3GSG WCH 4 3H#6 ) 14 3HRQ ... LDX 5 ACA3(2) [COUNT 16 3J?B ... LDX 6 ACA4(2) [BUFFER ADDRESS 18 3JR2 ... CALL 7 XCHECK [CHECK RESERVATIONS ETC. 9 3K=L ... LDN 3 FYNOBUF 21 3KQ= ... BRN XILL [J IF RESERVATION OR PERMISSION VIOLA 4 3L9W ...OKB 9 3LPG ... LDX 6 ACA5(2) 7 3M96 ... SBN 6 1 18 3MNQ ... BNG 6 OUTRANGE [JIF BKT NO. -VE OR ZERO 7 3N8B ... TOPFCA2 1 17 3NN2 ... ADX 6 FREADWORD(1) [E.O.F. BKT IF OFFSET 9 3P7L ... SMO ALOG(2) 19 3PM= ... SLL 6 0 [CONVERT TO START WD IN FILE 10 3Q6W ... ADX 1 FBACKPOINT(1) 14 3QLG ... LDX 1 BPTR(1) [-> FCB 9 3R66 ... LDX 5 FSIZE(1) 9 3RKQ ... SLL 5 GSBSLOG 17 3S5B ... BXGE 6 5,OUTRANGE [JIF BKT NOT IN FILE 7 3SK2 ... LDN 7 0 18 3T4L ... BNG 4 REPLY [JUST SET REPLY IF MODE 7 19 3TJ= ... STO 6 ACA5(2) [START WORD ADDRESS IN FILE 9 3W3W ... ADX 6 ACA3(2) 18 3WHG ... BXGE 5 6,OKBUCK [JIF TRANSFER WITHIN FILE 19 3X36 ... LDN 7 #20 [B1=OVER SEEK AREA BOUNDARY 9 3XGQ ... SBX 5 ACA5(2) 15 3Y2B ... STO 5 ACA3(2) [REDUCE COUNT 5 3YG2 ...OKBUCK 9 3Y_L ... LDX 6 ACA4(2) 9 3_F= ... ADX 6 ACA3(2) 9 3_YW ... STO 6 ACA2(2) 9 42DG ... DCH 7 ACA2(2) 9 42Y6 ... LDX 3 ACA5(2) 9 43CQ ... ADX 3 ACA3(2) 7 43XB ... SBN 3 1 20 44C2 ... SRL 3 GSBSLOG [GIVING LAST BLK NO. OF TRANSFER 9 44WL ... STO 3 ACA9(2) 14 45B= ... BZE 4 NINCRCUBS [JIF READ 9 45TW ... ADN 3 FBLKS-A1 19 46*G ... BXL 3 FBLMOD(1),NINCRCUBS [JIF BLK ALREADY WRITTEN TO 8 46T6 ... LDN 6 1(3) 9 47#Q ... SBX 6 FBLMOD(1) 16 47SB ... ACROSS EDSTART,2 [TO INCREASE CUBS 6 48#2 ...NINCRCUBS 8 48RL ... LDX 0 GSIGN 17 49?= ... ORS 0 ALTMARK(2) [SET ^OPEN^ MARKER 16 49QW ... AUTSTART [RESTART OBJ PROG 14 4==G ... BZE 4 NOALTBLOX [JIF READ 7 4=Q6 ... TOPFCB2 1 16 4?9Q ... BS 1,BFALTR [FILE ALTERED BIT 19 4?PB ... BXL 3 FBLMOD(1),NOALTBLOX [JIF BLK ALREADY WRITTEN TO 21 4#92 ... BXL 3 FUSEBL(1),NOMOREBLOX [JIF FILE HAS THE BLOX FOR TRANSFER 16 4#NL ... DOWN EDSTART,3 [GET MORE BLOCKS 7 4*8= ... TOPFCB2 1 6 4*MW ...NOMOREBLOX 15 4B7G ... ADS 6 FBLMOD(1) [INCR FBLMOD 17 4BM6 ... BS 1,BFALTB [BLOCKS ALTERED BIT 6 4C6Q ...NOALTBLOX 9 4CLB ... LDX 6 ACA5(2) 7 4D62 ... LDN 7 0 20 4DKL ... SRL 67 GSBSLOG [X6=START BLK, X7(B0-1)=START BLT 17 4F5= ... STO 6 ACA8(2) [REMEMBER START BLK 17 4FJW ... STO 7 ACA6(2) [REMEMBER START BLT 9 4G4G ... SLC 7 GSBSLOG 8 4GJ6 ... SBN 7 GSBS 20 4H3Q ... NGX 7 7 [GIVING REMAINING WDS IN 1ST BLK 11 4HHB ... BXL 7 ACA3(2),USEREM 19 4J32 ... LDX 7 ACA3(2) [ BUT USE [ACA3] IF LESS 5 4JGL ...USEREM 9 4K2= ... NGN 0 WAIT+1 21 4KFW ... ANDS 0 EDBUFR(2) [CLEAR AUTONOMOUS TRANSFER INDICATOR 5 4K_G ...NEXTBLK 15 4LF6 ... BNZ 4 NCHBLK [JIF WRITE 7 4LYQ ... TOPFCB2 1 7 4MDB ... LDX 0 6 9 4MY2 ... ADN 0 FBLKS-A1 20 4NCL ... BXGE 0 FBLMOD(1),TRANEND [JIF READ ON BLK NOT YET WRITTEN 5 4NX= ...NCHBLK 17 4PBW ... STO 6 ACA5(2) [REMEMBER CURRENT BLK 16 4PWG ... STO 7 ACA7(2) [ & WD COUNT 4 4QB6 ...# 16 4QTQ ...# AND HERE IS YER ACTUAL ^BUFFERED *DA^ CODE. 4 4R*B ...# 7 4RT2 ...# NOTATION 21 4S#L ...# X = POSITION IN FILE OF ^CURRENT CONCEPTUAL BUFFER BLOCK^ 18 4SS= ...# Y = POSITION IN FILE OF BLOCK FOR THIS TRANSFER 21 4T?W ...# S = A SCORE OF 0 TO 'MEMORY'-1 INDICATING (WE HOPE) WHETHER 12 4TRG ...# BUFFERING WILL WORK 21 4W?6 ...# W = A SWITCH SET WHEN BLOCK X HAS NOT HAD A READ SINCE X WAS 8 4WQQ ...# SET 21 4X=B ...# R = A SWITCH SET WHEN BLOCK X HAS NOT HAD A WRITE SINCE X 9 4XQ2 ...# WAS SET 4 4Y9L ...# 7 4YP= ...#DEF MEMORY=8 6 4_8W ...#DEF W=#4 6 4_NG ...#DEF R=#2 21 5286 ...#DEF WAIT=#1000 [SET IN EDBUFR WHEN A DIRECT TRANSFER 21 52MQ ...# IS TO BE BACKWAITED FOR 4 537B ...# 20 53M2 ...# FIRST OF ALL WE SEE IF THE TRANSFER SCORES A HIT, A NEAR MISS 20 546L ...# (ADJACENT BLOCK) OR A COMPLETE MISS ON THE BUFFER AND ADJUST S 8 54L= ...# ACCORDINGLY. 4 555W ...# 21 55KG ... JBS OBJDIR,FILERING(2),BACLEAN [DIRECT TRANSFER IF USERCLEAN 20 5656 ... BXU 6 ACA8(2),RIDBUFF [DON'T ADJUST S IF NOT 1ST BLK OF 21 56JQ ... LDCH 5 EDBUFR(2) [GET S TRANSFER 14 574B ... LDEX 0 EDBUFR(2) [GET X 13 57J2 ... SBX 0 ACA5(2) [X-Y 17 583L ... BNZ 0 NOTHIT [JIF NOT A DIRECT HIT 7 58H= ... LDCT 0 W 8 592W ... BZE 4 R1 7 59GG ... LDCT 0 R 9 5=26 ...R1 ANDX 0 EDBUFR(2) 8 5=FQ ... BZE 0 UPS 21 5=_B ... [THIS TRANSFER IS A READ ON THE BUFFER AFTER ONLY A WRITE 20 5?F2 ... [OR VICE VERSA, SO BUFFERING WOULDN'T SAVE A TRANSFER 15 5?YL ... ERS 0 EDBUFR(2) [UNSET R/W 9 5#D= ... BRN TESTBUFF 4 5#XW ...UPS 14 5*CG ... ADN 5 5 [S = S+5 9 5*X6 ... CALL 0 RESETS 9 5BBQ ... BRN TESTBUFF 5 5BWB ...NOTHIT 8 5CB2 ... BPZ 0 SQ 7 5CTL ... NGX 0 0 7 5D*= ...SQ SBN 0 1 17 5DSW ... BNZ 0 NOTNEAR [JIF NOT A NEAR MISS 14 5F#G ... SBN 5 1 [S = S-1 9 5FS6 ... CALL 0 RESETS 20 5G?Q ... BRN RIDBUFF [J TO HEAVE OLD BUFFER (IF ANY) 5 5GRB ...NOTNEAR 14 5H?2 ... SBN 5 2 [S = S-2 9 5HQL ... CALL 0 RESETS 9 5J== ... SBN 5 MEMORY/4 20 5JPW ... BPZ 5 TESTBUFF [JIF THIS IS A SUDDEN ABERATION 21 5K9G ... [ (DON'T HEAVE OLD BUFFER) 5 5KP6 ...RIDBUFF 9 5L8Q ... LDEX 6 EDBUFR(2) 8 5LNB ... CALL 0 SBUFF 18 5M82 ... BNG 3 NORID [JIF NO BUFFER TO HEAVE 9 5MML ... LDX 0 ATYPE(3) 8 5N7= ... SRL 0 12 10 5NLW ... ERN 0 FILE+FURRB 20 5P6G ... BNZ 0 NFURRB [JIF NOT A READ BUFFER (MUST BE A 21 5PL6 ... FREECORE 3 [FREE FURRB WRITE) 8 5Q5Q ... BRN NORID 5 5QKB ...NFURRB 19 5R52 ... CHAIN 3,2 [GET FURWB OUT OF FILE CHAIN 16 5RJL ... STOZ AWORK4(2) [FILE DEPTH = 0 8 5S4= ... ADN 6 FBLKS 9 5SHW ... BRN WRFURWB 4 5T3G ...# 18 5TH6 ...# THE FOLLOWING ENTRY POINTS (K21 & K22) ARE FROM THE 20 5W2Q ...# CONFURWB MACRO TO WRITE AWAY A FURWB LEFT LYING AROUND. IN ALL 18 5WGB ...# CASES THE FURWB IS CHAINED IN THE ACT CHAIN ON ENTRY. 4 5X22 ...# 6 5XFL ...Z1CONFURWB 15 5X_= ... LDX 0 ACOMMUNE4(2) [FILE DEPTH 8 5YDW ... BRN SPARS 4 5YYG ...[ 6 5_D6 ...Z2CONFURWB 16 5_XQ ... LDN 0 0 [ZERO FILE DEPTH 5 62CB ...SPARS 16 62X2 ... STO 0 AWORK4(2) [PRES. FILE DEPTH 18 63BL ... LDX 4 GSIGN [INDICATE CONFURWB MACRO 10 63W= ... MHUNT 3,FILE,FURWB 19 64*W ... CHAIN 3,2 [CHAIN FURWB IMED. AFTER ACT 21 64TG ... BLAM AWORK4(2) [GET FREADBLOCK TYPE POINTER TO BLK 15 65*6 ... LDX 6 1 [ INTO X6 16 65SQ ... JBC NOCHECK,2,BFMT [J UNLESS MT FILE 20 66#B ... DOWN MTCHECK,4 [ENSURE DATA VALID (ELSE BREAK) 10 66J8 ... MHUNTW 3,FILE,FURWB 5 66S2 ...NOCHECK 8 67?L ... LDX 2 FX2 5 67R= ...WRFURWB 9 68=W ... STO 4 AWORK3(2) 4 68QG ...# 19 69=6 ...# IT IS POSSIBLE TO HAVE SUCH AN ARRANGEMENT OF RUBBISH AND 20 69PQ ...# NON-RUBBISH BLOCKLETS THAT WE HAVE TO WRITE THE BLOCK IN MORE 20 6=9B ...# THAN ONE TRANSFER. HERE WE SEE WHICH BITS ARE SET IN ATYPE AND 12 6=P2 ...# DECIDE IF THIS IS NECESSARY. 4 6?8L ...# 10 6?N= ... LDX 4 ALOGLEN(3) 16 6#7W ... SRL 4 GSBSLOG-BLS [GIVING NO. BLTS 5 6#MG ...WHATLEFT 21 6*76 ... LDN 7 0 [THIS WILL BE THE WD COUNT OF BLT(S) 21 6*LQ ...WHATBITS [ TO BE WRITTEN 8 6B6B ... LDCT 0 #400 7 6BL2 ... SMO 4 21 6C5L ... SLC 0 0 [1BIT MASK (STARTING WITH HIGHEST BLT 21 6CK= ... ANDX 0 ATYPE(3) [ NO.) 18 6D4W ... BZE 0 NRUBB [JIF NOT A RUBBISH BLT 21 6DJG ... BNZ 7 SOME [BUT J IF PREV. NON-RUBBISH BLT(S) 9 6F46 ... BCT 4 WHATBITS 21 6FHQ ... BRN (GEOERR) [WHOLE BLK IS RUBBISH (SHOULD NEVER 21 6G3B ...NRUBB ADN 7 GSBS/BLN [INCR. WD COUNT HAPPEN) 9 6GH2 ... BCT 4 WHATBITS 20 6H2L ... BRN NOMOVE [JIF NO NEED TO SPLIT TRANSFER 7 6HG= ...SOME SRL 0 1 21 6H_W ... BZE 0 MOVEDOWN [AS ABOVE BUT MOVE BLT(S) TO START OF 21 6JFG ... ANDX 0 ATYPE(3) [ BLK 21 6J_6 ... BNZ 0 SOME [SEE IF ANY MORE NON-RUBBISH BLT(S) 4 6KDQ ...# 21 6KYB ...# HAVING FOUND THAT WE NEED TO SPLIT THE TRANSFER, WE GET A BLOCK 18 6LD2 ...# OF CORE, MOVE THE BLT(S) INTO IT TO WRITE THEM AWAY. 4 6LXL ...# 20 6MC= ... STO 4 AWORK2(2) [REMEMBER WHERE WE ARE IN THE BLK 8 6MWW ... SRC 4 BLS 15 6NBG ... ORX 6 4 [SET BLT MOD 8 6NW6 ... GETCORE 7,1 10 6P*Q ... MHUNT 3,FILE,FURWB 9 6PTB ... SLC 4 GSBSLOG 8 6Q*2 ... ADN 4 A1(3) 7 6QSL ... FINDCORE 5 8 6R#= ... ADN 5 A1 7 6RRW ... SMO 7 19 6S?G ... MOVE 4 0 [MOVE BLT(S) INTO NEW BLOCK 9 6SR6 ... BRN WRITEAWAY 4 6T=Q ...# 21 6TQB ...# HERE WE CAN DO THE TRANSFER FROM THE ORIGINAL BLOCK BUT WE MUST 17 6W=2 ...# MOVE THE BLT(S) DOWN TO THE START OF THE BLOCK. 4 6WPL ...# 5 6X9= ...MOVEDOWN 8 6XNW ... SRC 4 BLS 15 6Y8G ... ORX 6 4 [SET BLT MOD 9 6YN6 ... SLC 4 GSBSLOG 8 6_7Q ... ADN 4 A1(3) 8 6_MB ... LDN 5 A1(3) 7 7272 ... SMO 7 7 72LL ... MOVE 4 0 5 736= ...NOMOVE 19 73KW ... STOZ AWORK2(2) [INDICATE LAST/ONLY TRANSFER 12 745G ... BXE 7 ALOGLEN(3),WRITEAWAY 8 74K6 ... ALTLEN 3,7 6 754Q ...WRITEAWAY 9 75JB ... LDX 4 AWORK4(2) 14 7642 ... FILEAUTW 4,FAIL+FREE,EX7,6,,,NOCHECK 9 76HL ... LDX 4 AWORK2(2) 21 773= ... BZE 4 WRITBUFF [JIF ALL (NON-RUBBISH) BLTS WRITTEN 16 77GW ... MHUNT 3,FILE,FURWB [RE-LOCATE FURWB 20 782G ... CHAIN 3,2 [ & CHAIN IT FOR NEXT TRANSFER 16 78G6 ... ANDN 6 #1777 [MASK OUT BLT MOD 17 78_Q ... BRN WHATLEFT [J TO SEE WHAT'S LEFT 5 79FB ...WRITBUFF 9 79_2 ... LDXC 4 AWORK3(2) 16 7=DL ... BCC NORID [JIF NOT CONFURWB 5 7=Y= ... UP 4 7?CW ...# 21 7?XG ...# AFTER DISPOSING OF THE OLD BUFFER (IF ANY) WE SET UP POINTERS, ETC 20 7#C6 ...# FOR THE NEW BUFFER (WHICH WE MAY OR MAY NOT ACTUALLY SET UP). 4 7#WQ ...# 5 7*BB ...NORID 9 7*W2 ... LDX 6 ACA5(2) 14 7B*L ... DEX 6 EDBUFR(2) [X' = Y 8 7BT= ... LDCT 0 R+W 9 7C#W ... ORS 0 EDBUFR(2) 7 7CSG ... LDCT 0 W 8 7D#6 ... BZE 4 R2 7 7DRQ ... LDCT 0 R 19 7F?B ...R2 ERS 0 EDBUFR(2) [SET R IF READ, W IF WRITE 4 7FR2 ...# 20 7G=L ...# BEFORE WE START MUCKIN' ABOUT ACCESSING OR SETTING UP BUFFERS, 20 7GQ= ...# WE'LL FIND OUT WHICH ATYPE TYPE BITS WILL BE AFFECTED BY THIS 7 7H9W ...# TRANSFER. 4 7HPG ...# 5 7J96 ...TESTBUFF 9 7JNQ ... STOZ AWORK4(2) 9 7K8B ... LDX 3 ACA6(2) 8 7KN2 ... SLC 3 BLS 7 7L7L ... LDN 0 1 20 7LM= ... SLL 0 0(3) [SET BIT IN START BLT POSITION 9 7M6W ... LDX 5 ACA7(2) 10 7MLG ... ADN 5 GSBS/BLN-1 19 7N66 ... SRL 5 GSBSLOG-BLS [GIVING NO. BLTS IN TRANSFER 18 7NKQ ...TBITS ORS 0 AWORK4(2) [SET 1 BIT FOR EACH BLT 7 7P5B ... SLL 0 1 8 7PK2 ... BCT 5 TBITS 4 7Q4L ...# 21 7QJ= ...# NOW WE SEE IF THERE'S A BUFFER FOR THIS TRANSFER (WE ALWAYS USE 21 7R3W ...# IT IF THERE IS, EVEN IF IT'S NOT OURS). IF THERE ISN'T A BUFFER 13 7RHG ...# WE CHECK IF IT'S OK TO SET ONE UP. 4 7S36 ...# 8 7SGQ ... CALL 0 SBUFF 18 7T2B ... BNG 3 NOBUFF [JIF BUFFER DOESN'T EXIST 21 7TG2 ... BNZ 4 WRITEVB [JIF WRITE TO WRITE VIA THE BUFFER 9 7T_L ... LDX 0 ATYPE(3) 9 7WF= ... ANDX 0 AWORK4(2) 21 7WYW ... BZE 0 MOVEIN [JIF NONE OF REQD BLTS ARE RUBBISH 18 7XDG ... CALL 5 READFILE [READ WHOLE BLK FROM BS 8 7XY6 ... CALL 0 SBUFF 18 7YCQ ... BPZ 3 RIDRUBBISH [JIF BUFFER STILL THERE 21 7YXB ... CALL 0 SETUPQUERY [BUFFER DISAPPEARED. CAN WE SET ONE 21 7_C2 ... BRN NOSETUP [NO. UP? 21 7_WL ... BRN SETUPFURRB [YES! J TO SET UP BREAD AS A FURRB 5 82B= ...NOSETUP 10 82TW ... MHUNTW 3,BSTB,BREAD 21 83*G ... CALL 7 MOVEINR [MOVE INTO PROG FROM BREAD (AS IT'S 21 83T6 ... FREECORE 3 [FREE BREAD THERE) 9 84#Q ... BRN TESTEND 4 84SB ...# 20 85#2 ...# THINGS TEND TO GET A BIT FIDDLY HERE WITH THE POSSIBILITY OF 21 85RL ...# BUFFERS APPEARING & DISAPPEARING OVER CO-ORDINATIONS, BUT THIS IS 9 86?= ...# THE GENERAL IDEA:- 21 86QW ...# NO BUFFER HAS BEEN FOUND FOR THIS BLOCK SO WE DECIDE IF IT IS 21 87=G ...# WORTH SETTING ONE UP ('S' HIGH ENOUGH, NOT A TRANSFER OUT OF STEP, 21 87Q6 ...# NO COREJAM SINCE LAST PERI AND NOT WHOLE BLOCK TRANSFER). IF WE 21 889Q ...# CAN SET UP A BUFFER, READ BUFFERS ARE SET UP BY READING THE B.S. 18 88PB ...# BLOCK, WRITE BUFFERS BY GETTING CORE & RENAMING IT. 4 8992 ...# 5 89NL ...NOBUFF 18 8=8= ... CALL 0 SETUPQUERY [CAN WE SET UP A BUFFER? 18 8=MW ... BRN OBJDIR [NO. DO TRANSFER DIRECT 20 8?7G ... GETCOREN GSBS,0 [YES. GET THE CORE FOR A BUFFER 18 8?M6 ... BRN OBTAINED [JIF WE'VE GOT THE CORE 9 8#6Q ... LDX 0 CLEANCT 21 8#LB ... STO 0 CJTIME [KID OTHER *DA OLPAS THERE'S BEEN A 21 8*62 ... BRN OBJDIR [ COREJAM 5 8*KL ...OBTAINED 7 8B5= ... FINDCORE 1 19 8BJW ... BZE 4 RDCOROK [JIF TO SET UP A READ BUFFER 8 8C4G ... CALL 0 SBUFF 19 8CJ6 ... BPZ 3 POPPEDUP [JIF A BUFFER HAS APPEARED 7 8D3Q ... TOPFCB2 3 9 8DHB ... LDX 0 BSPRE(3) 19 8F32 ... STO 0 BACK1(1) [NEW BUFFER SO SET UP BACK1, 9 8FGL ... SMO ACA5(2) 9 8G2= ... LDX 0 FBLKS(3) 14 8GFW ... STO 0 BACK2(1) [ BACK2 21 8G_G ... STOZ A1(1) [ ZEROISE THE BUFFER. THIS IS FOR 21 8HF6 ... LDN 4 A1(1) [ THE BENEFIT OF PROGRAMS THAT 21 8HYQ ... LDN 5 A1+1(1) [ ASSUME UNWRITTEN WORDS IN A 21 8JDB ... MOVE 4 GSBS-1 [ H/W BLOCK ARE ZERO (E.G. XEKB) 9 8JY2 ... LDX 2 FPTR(3) 7 8KCL ... LDX 3 1 18 8KX= ... CHAIN 1,2 [ & CHAIN AFTER FSTACK 9 8LBW ... LDX 5 AWORK4(2) 8 8LWG ... ERN 5 #17 18 8MB6 ... BRN MOVEOUT [J TO BUNG DATA INTO IT 5 8MTQ ...POPPEDUP 18 8N*B ... FREECORE 1 [FREE ^GETCORED^ BLOCK 5 8NT2 ...WRITEVB 9 8P#L ... LDX 5 ATYPE(3) 9 8PS= ... ORX 5 AWORK4(2) 19 8Q?W ... ERX 5 AWORK4(2) [UNSET RELEVENT ATYPE BITS 5 8QRG ...MOVEOUT 10 8R?6 ... NAME 3,FILE,FURWB 9 8RQQ ... DSA 5 ATYPE(3) 16 8S=B ... LDX 6 ACA4(2) [PROGRAM ADDRESS 9 8SQ2 ... LDX 7 ACA6(2) 9 8T9L ... SLC 7 GSBSLOG 19 8TP= ... ADN 7 A1(3) [GIVING ADDR WITHIN BUFFER 5 8W8W ...#SKI G3 18 8WNG ... FOUTMOVE APETADDR(2),6,7,ACA7(2) [MOVE DATA TO BUFFER 5 8X86 ...#SKI G4 4 8XMQ ...( 9 8Y7B ... LDX 5 ACA7(2) 9 8YM2 ... CALL 3 OUTMOVE 4 8_6L ...) 16 8_L= ... LDN 4 1 [INDICATE WRITE 9 925W ... BRN TESTEND 5 92KG ...RDCOROK 8 9356 ... CALL 0 SBUFF 20 93JQ ... BNG 3 READABUFF [JIF BUFFER NOT APPEARED DURING 21 944B ... LDX 0 ATYPE(3) [ GETCORE 9 94J2 ... ANDX 0 AWORK4(2) 20 953L ... BNZ 0 READABUFF [JIF BUFFER APPEARED BUT ISN'T 21 95H= ... FREECORE 1 [FREE ^GETCORED^ BLOCK SUITABLE 21 962W ... BRN MOVEIN [ & J TO USE BUFFER THAT APPEARED 6 96GG ...READABUFF 10 9726 ... NAME 1,BSTB,BFREEW 18 97FQ ... CALL 5 READFILE [READ BS BLK INTO BFREEW 8 97_B ... CALL 0 SBUFF 18 98F2 ... BNG 3 SETUPFURRB [JIF BUFFER NOT APPEARED 6 98YL ...RIDRUBBISH 10 99D= ... MHUNTW 1,BSTB,BREAD 9 99XW ... LDX 7 ATYPE(3) 8 9=CG ... LDN 0 BLN 8 9=X6 ... LDN 4 A1(1) 8 9?BQ ... LDN 5 A1(3) 7 9?WB ...MORE SRC 7 1 8 9#B2 ... BPZ 7 NCBLT 20 9#TL ... MOVE 4 GSBS/BLN [COPY NON-RUBBISH BLT FROM BREAD 9 9**= ...NCBLT ADN 4 GSBS/BLN 9 9*SW ... ADN 5 GSBS/BLN 8 9B#G ... BCT 0 MORE 18 9BS6 ... DSA 0 ATYPE(3) [CLEAR ALL RUBBISH BITS 15 9C?Q ... FREECORE 1 [FREE BREAD 9 9CRB ... BRN MOVEIN 6 9D?2 ...SETUPFURRB 10 9DQL ... MHUNTW 3,BSTB,BREAD 10 9F== ... LDX 2 FILERING(2) 10 9FPW ... ADX 2 FBACKPOINT(2) 18 9G9G ... CHAIN 3,2 [CHAIN BREAD AFTER FSTACK 17 9GP6 ... NAME 3,FILE,FURRB [ & CALL IT A FURRB 5 9H8Q ...MOVEIN 9 9HNB ... CALL 7 MOVEINR 9 9J82 ... BRN TESTEND 4 9JML ...# 13 9K7= ...# A FEW S/RS USED BY BUFFERING CODE 4 9KLW ...# 16 9L6G ...MOVEINR [MOVE BLOCKLET(S) FROM BUFFER TO PROGRAM 9 9LL6 ... LDX 4 ACA6(2) 9 9M5Q ... SLC 4 GSBSLOG 19 9MKB ... ADN 4 A1(3) [GIVING ADDR WITHIN BUFFER 16 9N52 ... LDX 5 ACA4(2) [OBJ PROG ADDR 5 9NJL ...#SKI G3 13 9P4= ... FINMOVE APETADDR(2),5,4,ACA7(2) 5 9PHW ...#SKI G4 13 9Q3G ... INMOVE APETADDR(2),5,4,ACA7(2) 16 9QH6 ... LDN 4 0 [INDICATE READ 7 9R2Q ... EXIT 7 0 4 9RGB ...# 21 9S22 ...RESETS [STORE VALUE OF 'S' AFTER CHECKING THAT IT'S WITHIN BOUNDS 9 9SFL ... LDN 3 MEMORY 9 9S_= ... BXL 5 3,RSTS1 8 9TDW ... BNG 5 RSTS2 9 9TYG ... LDN 5 MEMORY-1 8 9WD6 ... BRN RSTS1 7 9WXQ ...RSTS2 LDN 5 0 9 9XCB ...RSTS1 DCH 5 EDBUFR(2) 7 9XX2 ... EXIT 0 0 4 9YBL ...# 21 9YW= ...SBUFF [SEARCH FILE CHAIN FOR BUFFER FOR BLOCK WHOSE POSITION IN 21 9_*W ... [THE FILE IS IN X6. GIVES POINTER IN X3 (-VE IF BUFFER NOT 21 9_TG ... [ FOUND) 8 =2*6 ... STO 0 GEN0 8 =2SQ ... STO 6 GEN1 7 =3#B ... TOPFCB2 3 7 =3S2 ... SMO 6 16 =4?L ... LDX 6 FBLKS(3) [BACK2 BLK NO. 15 =4R= ... LDX 3 FPTR(3) [SKIP FSTACK 9 =5=W ...SBUF2 LDX 3 FPTR(3) 7 =5QG ...#SKI IFS<1$1 20 =6=6 ... BXE 3 CXFI,SBUF1 [NOT FOUND - END OF FILE CHAIN 9 =6PQ ... LDX 0 ATYPE(3) 8 =79B ... SRL 0 12 9 =7P2 ... ERN 0 FILE+FCB 19 =88L ... BZE 0 SBUF1 [NOT FOUND - NEXT FILE'S FCB 10 =8N= ... ERN 0 FEXTRA$FCB 21 =97W ... BZE 0 SBUF1 [NOT FOUND - FEXTRA FOR THIS WORKFILE 18 =9MG ... BXU 6 BACK2(3),SBUF2 [JIF NOT REQD USAGE BLK 8 ==76 ... LDX 6 GEN1 10 ==LQ ... ERN 0 FURRB$FEXTRA 16 =?6B ... BZE 0 (GEN0) [JIF IT'S A FURRB 10 =?L2 ... ERN 0 FURWB$FURRB 17 =#5L ... BNZ 0 (GEOERR) [JIF IT'S NOT A FURWB 9 =#K= ... BRN (GEN0) 7 =*4W ...SBUF1 NGN 3 1 8 =*JG ... LDX 6 GEN1 9 =B46 ... BRN (GEN0) 4 =BHQ ...# 13 =C3B ...READFILE [NON-AUTONOMOUS READ ROUTINE 8 =CH2 ... SBX 5 FX1 8 =D2L ... ADN 6 FBLKS 13 =DG= ... FILEREAD ,FAIL+BUSE,,6,,,NOCHECK 8 =D_W ... SBN 6 FBLKS 7 =FFG ... ADX 5 1 7 =F_6 ... EXIT 5 0 4 =GDQ ...# 15 =GYB ...SETUPQUERY [SEE IF IT'S OK TO SET UP A BUFFER. 15 =HD2 ... [EXIT TO CALL +1 - NO, CALL +2 - YES 9 =HXL ... LDCH 5 EDBUFR(2) 9 =JC= ... SBN 5 MEMORY/2 16 =JWW ... BNG 5 (0) [NO - S TOO LOW 9 =KBG ... LDEX 5 EDBUFR(2) 9 =KW6 ... TXU 5 ACA5(2) 18 =L*Q ... BCS (0) [NO - SUDDEN ABERATION 10 =LTB ... LDX 5 EDPTIME(2) 9 =M*2 ... TXL 5 CJTIME 20 =MSL ... BCS (0) [NO - CORE JAM SINCE LAST PERI 21 =N#= ... BNZ 4 SUPQ1 [JIF WRITE (ALWAYS FASTER VIA BUFFER 21 =NRW ... [ - GETCORE & MOVE) 9 =P?G ... TXU 6 ACA9(2) 21 =PR6 ... BCS (0) [NO - NOT LAST/ONLY BLK OF TRANSFER 9 =Q=Q ... LDX 5 ACA7(2) 8 =QQB ... TXU 5 BSBS 17 =R=2 ... BCC (0) [NO - WHOLE BLK READ 14 =RPL ...SUPQ1 EXIT 0 1 [YES!!! 4 =S9= ...# 20 =SNW ...# HERE WE DO A DIRECT PROGRAM/B.S. TRANSFER WHEN BUFFERING ISN'T 7 =T8G ...# ADVISABLE. 4 =TN6 ...# 5 =W7Q ...OBJDIR 8 =WMB ... LDN 0 WAIT 20 =X72 ... ORS 0 EDBUFR(2) [INDICATE AN AUTONOMOUS TRANSFER 8 =XLL ... ADN 6 FBLKS 15 =Y6= ... ORX 6 ACA6(2) [SET BLT MOD 16 =YKW ... LDX 5 ACA4(2) [OBJ PROG ADDR 14 =_5G ... LDX 7 ACA7(2) [LENGTH 8 =_K6 ... BZE 4 READ 18 ?24Q ... LDX 4 APETADDR(2) [NB- X4 STILL NON-ZERO 14 ?2JB ... FILEAUTW ,BSET+BOBJ+FAIL,EX7,6,EX5,EX4 9 ?342 ... BRN TESTEND 4 ?3HL ...READ 10 ?43= ... LDX 4 APETADDR(2) 14 ?4GW ... FILEAUTR ,FAIL+BSET+BOBJ,EX7,6,EX5,EX4 16 ?52G ... LDN 4 0 [INDICATE READ 5 ?5G6 ...TESTEND 9 ?5_Q ... LDX 0 ACA7(2) 16 ?6FB ... ADS 0 ACA4(2) [INCR. PROG ADDR 15 ?6_2 ... SBS 0 ACA3(2) [DECR. COUNT 9 ?7DL ... LDX 7 ACA3(2) 17 ?7Y= ... BZE 7 TRANEND [JIF END OF TRANSFER 9 ?8CW ... LDX 6 ACA5(2) 16 ?8XG ... ADN 6 1 [INCR. BLK MOD 20 ?9C6 ... STOZ ACA6(2) [FURTHER TRANSFERS START AT BLT 0 21 ?9WQ ... BXL 7 BSBS1,NEXTBLK [TRANS LENGTH = REM. COUNT IF < 1BLK 17 ?=BB ... LDN 7 GSBS [ OR GSBS IF >1BLK 9 ?=W2 ... BRN NEXTBLK 5 ??*L ...TRANEND 8 ??T= ... LDN 0 WAIT 9 ?##W ... ANDX 0 EDBUFR(2) 19 ?#SG ... BZE 0 NOWAIT [JIF NO AUTONOMOUS TRANSFERS 20 ?*#6 ... BACKWAIT [WAIT FOR END OF BS TRANSFER(S) 5 ?*RQ ...NOWAIT 9 ?B?B ... LDX 0 CLEANCT 18 ?BR2 ... STO 0 EDPTIME(2) [REMEMBER TIME OF PERI 9 ?C=L ... LDX 7 ACA2(2) 5 ?CQ= ...REPLY 20 ?D9W ... AUTFIN 7 [SET OBJ PROG REPLY & CHECK SPOUT 9 ?DPG ... BRN K1EDOBJ 3 ?F96 ... 5 ?FNQ ...OUTRANGE 20 ?G8B ... LDCT 7 #10 [B5 IN REPLY = BKT OUT OF RANGE 8 ?GN2 ... BRN REPLY 3 ?H7L ... 5 ?HM= ...NOTRAN 9 ?J6W ... ACROSS EDSTART,1 3 ?JLG ... 4 ?K66 ...XILL 9 ?KKQ ... ACROSS OLPODD,5 11 ?L5B ... MENDAREA AOLPGAP,K99EDOBJ 4 ?LK2 ...#END 6 ____ ...154342500001